diff --git a/food-ordering-app/server/index.js b/food-ordering-app/server/index.js index 6730f9c9c..71a0ac295 100644 --- a/food-ordering-app/server/index.js +++ b/food-ordering-app/server/index.js @@ -6,7 +6,7 @@ const db = require('./db'); const app = express(); const productRouter = require('./routes/productRouter'); -const userRouter = require('./routes/productRouter'); +const userRouter = require('./routes/userRouter'); const Order = require('./models/orderModel'); diff --git a/food-ordering-app/server/models/userModel.js b/food-ordering-app/server/models/userModel.js index 7ab756489..cd4daba0e 100644 --- a/food-ordering-app/server/models/userModel.js +++ b/food-ordering-app/server/models/userModel.js @@ -2,6 +2,10 @@ const mongoose = require('mongoose') const userSchema = mongoose.Schema( { + _id: { + type: String, + required: true, + }, name: { type: String, required: true, diff --git a/food-ordering-app/server/node_modules/.bin/fxparser b/food-ordering-app/server/node_modules/.bin/fxparser new file mode 100644 index 000000000..c722e412f --- /dev/null +++ b/food-ordering-app/server/node_modules/.bin/fxparser @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../fast-xml-parser/src/cli/cli.js" "$@" +else + exec node "$basedir/../fast-xml-parser/src/cli/cli.js" "$@" +fi diff --git a/food-ordering-app/server/node_modules/.bin/fxparser.cmd b/food-ordering-app/server/node_modules/.bin/fxparser.cmd new file mode 100644 index 000000000..043b76318 --- /dev/null +++ b/food-ordering-app/server/node_modules/.bin/fxparser.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\fast-xml-parser\src\cli\cli.js" %* diff --git a/food-ordering-app/server/node_modules/.bin/fxparser.ps1 b/food-ordering-app/server/node_modules/.bin/fxparser.ps1 new file mode 100644 index 000000000..3e7252a13 --- /dev/null +++ b/food-ordering-app/server/node_modules/.bin/fxparser.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../fast-xml-parser/src/cli/cli.js" $args + } else { + & "$basedir/node$exe" "$basedir/../fast-xml-parser/src/cli/cli.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../fast-xml-parser/src/cli/cli.js" $args + } else { + & "node$exe" "$basedir/../fast-xml-parser/src/cli/cli.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/food-ordering-app/server/node_modules/.bin/mime b/food-ordering-app/server/node_modules/.bin/mime index fbb7ee0ee..7751de3cb 120000 --- a/food-ordering-app/server/node_modules/.bin/mime +++ b/food-ordering-app/server/node_modules/.bin/mime @@ -1 +1,16 @@ -../mime/cli.js \ No newline at end of file +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../mime/cli.js" "$@" +else + exec node "$basedir/../mime/cli.js" "$@" +fi diff --git a/food-ordering-app/server/node_modules/.bin/mime.cmd b/food-ordering-app/server/node_modules/.bin/mime.cmd new file mode 100644 index 000000000..54491f12e --- /dev/null +++ b/food-ordering-app/server/node_modules/.bin/mime.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\mime\cli.js" %* diff --git a/food-ordering-app/server/node_modules/.bin/mime.ps1 b/food-ordering-app/server/node_modules/.bin/mime.ps1 new file mode 100644 index 000000000..2222f40bc --- /dev/null +++ b/food-ordering-app/server/node_modules/.bin/mime.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../mime/cli.js" $args + } else { + & "$basedir/node$exe" "$basedir/../mime/cli.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../mime/cli.js" $args + } else { + & "node$exe" "$basedir/../mime/cli.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/food-ordering-app/server/node_modules/.bin/nodemon b/food-ordering-app/server/node_modules/.bin/nodemon index 1056ddc18..c477a1898 120000 --- a/food-ordering-app/server/node_modules/.bin/nodemon +++ b/food-ordering-app/server/node_modules/.bin/nodemon @@ -1 +1,16 @@ -../nodemon/bin/nodemon.js \ No newline at end of file +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../nodemon/bin/nodemon.js" "$@" +else + exec node "$basedir/../nodemon/bin/nodemon.js" "$@" +fi diff --git a/food-ordering-app/server/node_modules/.bin/nodemon.cmd b/food-ordering-app/server/node_modules/.bin/nodemon.cmd new file mode 100644 index 000000000..55acf8a4e --- /dev/null +++ b/food-ordering-app/server/node_modules/.bin/nodemon.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\nodemon\bin\nodemon.js" %* diff --git a/food-ordering-app/server/node_modules/.bin/nodemon.ps1 b/food-ordering-app/server/node_modules/.bin/nodemon.ps1 new file mode 100644 index 000000000..d4e3f5d40 --- /dev/null +++ b/food-ordering-app/server/node_modules/.bin/nodemon.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../nodemon/bin/nodemon.js" $args + } else { + & "$basedir/node$exe" "$basedir/../nodemon/bin/nodemon.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../nodemon/bin/nodemon.js" $args + } else { + & "node$exe" "$basedir/../nodemon/bin/nodemon.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/food-ordering-app/server/node_modules/.bin/nodetouch b/food-ordering-app/server/node_modules/.bin/nodetouch index 3409fdb78..3e146b413 120000 --- a/food-ordering-app/server/node_modules/.bin/nodetouch +++ b/food-ordering-app/server/node_modules/.bin/nodetouch @@ -1 +1,16 @@ -../touch/bin/nodetouch.js \ No newline at end of file +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../touch/bin/nodetouch.js" "$@" +else + exec node "$basedir/../touch/bin/nodetouch.js" "$@" +fi diff --git a/food-ordering-app/server/node_modules/.bin/nodetouch.cmd b/food-ordering-app/server/node_modules/.bin/nodetouch.cmd new file mode 100644 index 000000000..8298b9183 --- /dev/null +++ b/food-ordering-app/server/node_modules/.bin/nodetouch.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\touch\bin\nodetouch.js" %* diff --git a/food-ordering-app/server/node_modules/.bin/nodetouch.ps1 b/food-ordering-app/server/node_modules/.bin/nodetouch.ps1 new file mode 100644 index 000000000..5f68b4cb3 --- /dev/null +++ b/food-ordering-app/server/node_modules/.bin/nodetouch.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../touch/bin/nodetouch.js" $args + } else { + & "$basedir/node$exe" "$basedir/../touch/bin/nodetouch.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../touch/bin/nodetouch.js" $args + } else { + & "node$exe" "$basedir/../touch/bin/nodetouch.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/food-ordering-app/server/node_modules/.bin/nopt b/food-ordering-app/server/node_modules/.bin/nopt index 6b6566ea7..0808130fb 120000 --- a/food-ordering-app/server/node_modules/.bin/nopt +++ b/food-ordering-app/server/node_modules/.bin/nopt @@ -1 +1,16 @@ -../nopt/bin/nopt.js \ No newline at end of file +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../nopt/bin/nopt.js" "$@" +else + exec node "$basedir/../nopt/bin/nopt.js" "$@" +fi diff --git a/food-ordering-app/server/node_modules/.bin/nopt.cmd b/food-ordering-app/server/node_modules/.bin/nopt.cmd new file mode 100644 index 000000000..a7f38b3da --- /dev/null +++ b/food-ordering-app/server/node_modules/.bin/nopt.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\nopt\bin\nopt.js" %* diff --git a/food-ordering-app/server/node_modules/.bin/nopt.ps1 b/food-ordering-app/server/node_modules/.bin/nopt.ps1 new file mode 100644 index 000000000..9d6ba56f6 --- /dev/null +++ b/food-ordering-app/server/node_modules/.bin/nopt.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../nopt/bin/nopt.js" $args + } else { + & "$basedir/node$exe" "$basedir/../nopt/bin/nopt.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../nopt/bin/nopt.js" $args + } else { + & "node$exe" "$basedir/../nopt/bin/nopt.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/food-ordering-app/server/node_modules/.bin/semver b/food-ordering-app/server/node_modules/.bin/semver index 317eb293d..384db49d8 120000 --- a/food-ordering-app/server/node_modules/.bin/semver +++ b/food-ordering-app/server/node_modules/.bin/semver @@ -1 +1,16 @@ -../semver/bin/semver \ No newline at end of file +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../semver/bin/semver" "$@" +else + exec node "$basedir/../semver/bin/semver" "$@" +fi diff --git a/food-ordering-app/server/node_modules/.bin/semver.cmd b/food-ordering-app/server/node_modules/.bin/semver.cmd new file mode 100644 index 000000000..22d9286cd --- /dev/null +++ b/food-ordering-app/server/node_modules/.bin/semver.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\semver\bin\semver" %* diff --git a/food-ordering-app/server/node_modules/.bin/semver.ps1 b/food-ordering-app/server/node_modules/.bin/semver.ps1 new file mode 100644 index 000000000..98c1b093f --- /dev/null +++ b/food-ordering-app/server/node_modules/.bin/semver.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../semver/bin/semver" $args + } else { + & "$basedir/node$exe" "$basedir/../semver/bin/semver" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../semver/bin/semver" $args + } else { + & "node$exe" "$basedir/../semver/bin/semver" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/food-ordering-app/server/node_modules/.package-lock.json b/food-ordering-app/server/node_modules/.package-lock.json index d60547cf6..f0c4761df 100644 --- a/food-ordering-app/server/node_modules/.package-lock.json +++ b/food-ordering-app/server/node_modules/.package-lock.json @@ -1,17 +1,1336 @@ { "name": "server", "version": "1.0.0", - "lockfileVersion": 2, + "lockfileVersion": 3, "requires": true, "packages": { + "node_modules/@aws-crypto/sha256-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", + "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-crypto/sha256-js": "^5.2.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", + "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-crypto/supports-web-crypto": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", + "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", + "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity": { + "version": "3.1009.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.1009.0.tgz", + "integrity": "sha512-4+lBLB2sIdrnGruxqsfPM2AOSME3DVDRX7R5OXcgd2jfrUSyYdHJN1kT9hO/vwK4uajRZsQNP5hLJMttkjkoAQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/credential-provider-node": "^3.972.21", + "@aws-sdk/middleware-host-header": "^3.972.8", + "@aws-sdk/middleware-logger": "^3.972.8", + "@aws-sdk/middleware-recursion-detection": "^3.972.8", + "@aws-sdk/middleware-user-agent": "^3.972.21", + "@aws-sdk/region-config-resolver": "^3.972.8", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-endpoints": "^3.996.5", + "@aws-sdk/util-user-agent-browser": "^3.972.8", + "@aws-sdk/util-user-agent-node": "^3.973.7", + "@smithy/config-resolver": "^4.4.11", + "@smithy/core": "^3.23.11", + "@smithy/fetch-http-handler": "^5.3.15", + "@smithy/hash-node": "^4.2.12", + "@smithy/invalid-dependency": "^4.2.12", + "@smithy/middleware-content-length": "^4.2.12", + "@smithy/middleware-endpoint": "^4.4.25", + "@smithy/middleware-retry": "^4.4.42", + "@smithy/middleware-serde": "^4.2.14", + "@smithy/middleware-stack": "^4.2.12", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/node-http-handler": "^4.4.16", + "@smithy/protocol-http": "^5.3.12", + "@smithy/smithy-client": "^4.12.5", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.41", + "@smithy/util-defaults-mode-node": "^4.2.44", + "@smithy/util-endpoints": "^3.3.3", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-retry": "^4.2.12", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/core": { + "version": "3.973.20", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.973.20.tgz", + "integrity": "sha512-i3GuX+lowD892F3IuJf8o6AbyDupMTdyTxQrCJGcn71ni5hTZ82L4nQhcdumxZ7XPJRJJVHS/CR3uYOIIs0PVA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/xml-builder": "^3.972.11", + "@smithy/core": "^3.23.11", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/signature-v4": "^5.3.12", + "@smithy/smithy-client": "^4.12.5", + "@smithy/types": "^4.13.1", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-cognito-identity": { + "version": "3.972.13", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.972.13.tgz", + "integrity": "sha512-WZnIK8NPX+4OXkpVoNmUS+Ya1osqjszUsDqFEz97+a/LD5K012np9iR/eWEC43btx8zQjyRIK8kyiwbh8SiHzg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/nested-clients": "^3.996.10", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.972.18", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.18.tgz", + "integrity": "sha512-X0B8AlQY507i5DwjLByeU2Af4ARsl9Vr84koDcXCbAkplmU+1xBFWxEPrWRAoh56waBne/yJqEloSwvRf4x6XA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-http": { + "version": "3.972.20", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.20.tgz", + "integrity": "sha512-ey9Lelj001+oOfrbKmS6R2CJAiXX7QKY4Vj9VJv6L2eE6/VjD8DocHIoYqztTm70xDLR4E1jYPTKfIui+eRNDA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/types": "^3.973.6", + "@smithy/fetch-http-handler": "^5.3.15", + "@smithy/node-http-handler": "^4.4.16", + "@smithy/property-provider": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/smithy-client": "^4.12.5", + "@smithy/types": "^4.13.1", + "@smithy/util-stream": "^4.5.19", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.972.20", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.20.tgz", + "integrity": "sha512-5flXSnKHMloObNF+9N0cupKegnH1Z37cdVlpETVgx8/rAhCe+VNlkcZH3HDg2SDn9bI765S+rhNPXGDJJPfbtA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/credential-provider-env": "^3.972.18", + "@aws-sdk/credential-provider-http": "^3.972.20", + "@aws-sdk/credential-provider-login": "^3.972.20", + "@aws-sdk/credential-provider-process": "^3.972.18", + "@aws-sdk/credential-provider-sso": "^3.972.20", + "@aws-sdk/credential-provider-web-identity": "^3.972.20", + "@aws-sdk/nested-clients": "^3.996.10", + "@aws-sdk/types": "^3.973.6", + "@smithy/credential-provider-imds": "^4.2.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login": { + "version": "3.972.20", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.20.tgz", + "integrity": "sha512-gEWo54nfqp2jABMu6HNsjVC4hDLpg9HC8IKSJnp0kqWtxIJYHTmiLSsIfI4ScQjxEwpB+jOOH8dOLax1+hy/Hw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/nested-clients": "^3.996.10", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.972.21", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.21.tgz", + "integrity": "sha512-hah8if3/B/Q+LBYN5FukyQ1Mym6PLPDsBOBsIgNEYD6wLyZg0UmUF/OKIVC3nX9XH8TfTPuITK+7N/jenVACWA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/credential-provider-env": "^3.972.18", + "@aws-sdk/credential-provider-http": "^3.972.20", + "@aws-sdk/credential-provider-ini": "^3.972.20", + "@aws-sdk/credential-provider-process": "^3.972.18", + "@aws-sdk/credential-provider-sso": "^3.972.20", + "@aws-sdk/credential-provider-web-identity": "^3.972.20", + "@aws-sdk/types": "^3.973.6", + "@smithy/credential-provider-imds": "^4.2.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.972.18", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.18.tgz", + "integrity": "sha512-Tpl7SRaPoOLT32jbTWchPsn52hYYgJ0kpiFgnwk8pxTANQdUymVSZkzFvv1+oOgZm1CrbQUP9MBeoMZ9IzLZjA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.972.20", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.20.tgz", + "integrity": "sha512-p+R+PYR5Z7Gjqf/6pvbCnzEHcqPCpLzR7Yf127HjJ6EAb4hUcD+qsNRnuww1sB/RmSeCLxyay8FMyqREw4p1RA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/nested-clients": "^3.996.10", + "@aws-sdk/token-providers": "3.1009.0", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.972.20", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.20.tgz", + "integrity": "sha512-rWCmh8o7QY4CsUj63qopzMzkDq/yPpkrpb+CnjBEFSOg/02T/we7sSTVg4QsDiVS9uwZ8VyONhq98qt+pIh3KA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/nested-clients": "^3.996.10", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers": { + "version": "3.1009.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.1009.0.tgz", + "integrity": "sha512-URs590x3cCOHvjgDz8J0iqxDQ87NjF550pnWmd1jQm+w5ZHTxuUEYjivBQQkAB603IlEdeadqO1+LSjtMznhwA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/client-cognito-identity": "3.1009.0", + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/credential-provider-cognito-identity": "^3.972.13", + "@aws-sdk/credential-provider-env": "^3.972.18", + "@aws-sdk/credential-provider-http": "^3.972.20", + "@aws-sdk/credential-provider-ini": "^3.972.20", + "@aws-sdk/credential-provider-login": "^3.972.20", + "@aws-sdk/credential-provider-node": "^3.972.21", + "@aws-sdk/credential-provider-process": "^3.972.18", + "@aws-sdk/credential-provider-sso": "^3.972.20", + "@aws-sdk/credential-provider-web-identity": "^3.972.20", + "@aws-sdk/nested-clients": "^3.996.10", + "@aws-sdk/types": "^3.973.6", + "@smithy/config-resolver": "^4.4.11", + "@smithy/core": "^3.23.11", + "@smithy/credential-provider-imds": "^4.2.12", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.8.tgz", + "integrity": "sha512-wAr2REfKsqoKQ+OkNqvOShnBoh+nkPurDKW7uAeVSu6kUECnWlSJiPvnoqxGlfousEY/v9LfS9sNc46hjSYDIQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.8.tgz", + "integrity": "sha512-CWl5UCM57WUFaFi5kB7IBY1UmOeLvNZAZ2/OZ5l20ldiJ3TiIz1pC65gYj8X0BCPWkeR1E32mpsCk1L1I4n+lA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.8.tgz", + "integrity": "sha512-BnnvYs2ZEpdlmZ2PNlV2ZyQ8j8AEkMTjN79y/YA475ER1ByFYrkVR85qmhni8oeTaJcDqbx364wDpitDAA/wCA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@aws/lambda-invoke-store": "^0.2.2", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.972.21", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.21.tgz", + "integrity": "sha512-62XRl1GDYPpkt7cx1AX1SPy9wgNE9Iw/NPuurJu4lmhCWS7sGKO+kS53TQ8eRmIxy3skmvNInnk0ZbWrU5Dpyg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-endpoints": "^3.996.5", + "@smithy/core": "^3.23.11", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-retry": "^4.2.12", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients": { + "version": "3.996.10", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.996.10.tgz", + "integrity": "sha512-SlDol5Z+C7Ivnc2rKGqiqfSUmUZzY1qHfVs9myt/nxVwswgfpjdKahyTzLTx802Zfq0NFRs7AejwKzzzl5Co2w==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/middleware-host-header": "^3.972.8", + "@aws-sdk/middleware-logger": "^3.972.8", + "@aws-sdk/middleware-recursion-detection": "^3.972.8", + "@aws-sdk/middleware-user-agent": "^3.972.21", + "@aws-sdk/region-config-resolver": "^3.972.8", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-endpoints": "^3.996.5", + "@aws-sdk/util-user-agent-browser": "^3.972.8", + "@aws-sdk/util-user-agent-node": "^3.973.7", + "@smithy/config-resolver": "^4.4.11", + "@smithy/core": "^3.23.11", + "@smithy/fetch-http-handler": "^5.3.15", + "@smithy/hash-node": "^4.2.12", + "@smithy/invalid-dependency": "^4.2.12", + "@smithy/middleware-content-length": "^4.2.12", + "@smithy/middleware-endpoint": "^4.4.25", + "@smithy/middleware-retry": "^4.4.42", + "@smithy/middleware-serde": "^4.2.14", + "@smithy/middleware-stack": "^4.2.12", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/node-http-handler": "^4.4.16", + "@smithy/protocol-http": "^5.3.12", + "@smithy/smithy-client": "^4.12.5", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.41", + "@smithy/util-defaults-mode-node": "^4.2.44", + "@smithy/util-endpoints": "^3.3.3", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-retry": "^4.2.12", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/region-config-resolver": { + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.8.tgz", + "integrity": "sha512-1eD4uhTDeambO/PNIDVG19A6+v4NdD7xzwLHDutHsUqz0B+i661MwQB2eYO4/crcCvCiQG4SRm1k81k54FEIvw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/config-resolver": "^4.4.11", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/token-providers": { + "version": "3.1009.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1009.0.tgz", + "integrity": "sha512-KCPLuTqN9u0Rr38Arln78fRG9KXpzsPWmof+PZzfAHMMQq2QED6YjQrkrfiH7PDefLWEposY1o4/eGwrmKA4JA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/nested-clients": "^3.996.10", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/types": { + "version": "3.973.6", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.6.tgz", + "integrity": "sha512-Atfcy4E++beKtwJHiDln2Nby8W/mam64opFPTiHEqgsthqeydFS1pY+OUlN1ouNOmf8ArPU/6cDS65anOP3KQw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.996.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.5.tgz", + "integrity": "sha512-Uh93L5sXFNbyR5sEPMzUU8tJ++Ku97EY4udmC01nB8Zu+xfBPwpIwJ6F7snqQeq8h2pf+8SGN5/NoytfKgYPIw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-endpoints": "^3.3.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.965.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.965.5.tgz", + "integrity": "sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.8.tgz", + "integrity": "sha512-B3KGXJviV2u6Cdw2SDY2aDhoJkVfY/Q/Trwk2CMSkikE1Oi6gRzxhvhIfiRpHfmIsAhV4EA54TVEX8K6CbHbkA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/types": "^4.13.1", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.973.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.7.tgz", + "integrity": "sha512-Hz6EZMUAEzqUd7e+vZ9LE7mn+5gMbxltXy18v+YSFY+9LBJz15wkNZvw5JqfX3z0FS9n3bgUtz3L5rAsfh4YlA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/middleware-user-agent": "^3.972.21", + "@aws-sdk/types": "^3.973.6", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-config-provider": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@aws-sdk/xml-builder": { + "version": "3.972.11", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.11.tgz", + "integrity": "sha512-iitV/gZKQMvY9d7ovmyFnFuTHbBAtrmLnvaSb/3X8vOKyevwtpmEtyc8AdhVWZe0pI/1GsHxlEvQeOePFzy7KQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/types": "^4.13.1", + "fast-xml-parser": "5.4.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws/lambda-invoke-store": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.4.tgz", + "integrity": "sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==", + "license": "Apache-2.0", + "optional": true, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@faker-js/faker": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-7.3.0.tgz", "integrity": "sha512-1W0PZezq2rxlAssoWemi9gFRD8IQxvf0FPL5Km3TOmGHFG7ib0TbFBJ0yC7D/1NsxunjNTK6WjUXV8ao/mKZ5w==", "dev": true, "engines": { - "node": ">=14.0.0", - "npm": ">=6.0.0" + "node": ">=14.0.0", + "npm": ">=6.0.0" + } + }, + "node_modules/@mongodb-js/saslprep": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.4.6.tgz", + "integrity": "sha512-y+x3H1xBZd38n10NZF/rEBlvDOOMQ6LKUTHqr8R9VkJ+mmQOYtJFxIlkkK8fZrtOiL6VixbOBWMbZGBdal3Z1g==", + "license": "MIT", + "optional": true, + "dependencies": { + "sparse-bitfield": "^3.0.3" + } + }, + "node_modules/@smithy/abort-controller": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.12.tgz", + "integrity": "sha512-xolrFw6b+2iYGl6EcOL7IJY71vvyZ0DJ3mcKtpykqPe2uscwtzDZJa1uVQXyP7w9Dd+kGwYnPbMsJrGISKiY/Q==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/config-resolver": { + "version": "4.4.11", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.11.tgz", + "integrity": "sha512-YxFiiG4YDAtX7WMN7RuhHZLeTmRRAOyCbr+zB8e3AQzHPnUhS8zXjB1+cniPVQI3xbWsQPM0X2aaIkO/ME0ymw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/node-config-provider": "^4.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-config-provider": "^4.2.2", + "@smithy/util-endpoints": "^3.3.3", + "@smithy/util-middleware": "^4.2.12", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/core": { + "version": "3.23.11", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.23.11.tgz", + "integrity": "sha512-952rGf7hBRnhUIaeLp6q4MptKW8sPFe5VvkoZ5qIzFAtx6c/QZ/54FS3yootsyUSf9gJX/NBqEBNdNR7jMIlpQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-stream": "^4.5.19", + "@smithy/util-utf8": "^4.2.2", + "@smithy/uuid": "^1.1.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/credential-provider-imds": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.12.tgz", + "integrity": "sha512-cr2lR792vNZcYMriSIj+Um3x9KWrjcu98kn234xA6reOAFMmbRpQMOv8KPgEmLLtx3eldU6c5wALKFqNOhugmg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/node-config-provider": "^4.3.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/fetch-http-handler": { + "version": "5.3.15", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.15.tgz", + "integrity": "sha512-T4jFU5N/yiIfrtrsb9uOQn7RdELdM/7HbyLNr6uO/mpkj1ctiVs7CihVr51w4LyQlXWDpXFn4BElf1WmQvZu/A==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/protocol-http": "^5.3.12", + "@smithy/querystring-builder": "^4.2.12", + "@smithy/types": "^4.13.1", + "@smithy/util-base64": "^4.3.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-node": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.12.tgz", + "integrity": "sha512-QhBYbGrbxTkZ43QoTPrK72DoYviDeg6YKDrHTMJbbC+A0sml3kSjzFtXP7BtbyJnXojLfTQldGdUR0RGD8dA3w==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/types": "^4.13.1", + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/invalid-dependency": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.12.tgz", + "integrity": "sha512-/4F1zb7Z8LOu1PalTdESFHR0RbPwHd3FcaG1sI3UEIriQTWakysgJr65lc1jj6QY5ye7aFsisajotH6UhWfm/g==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/is-array-buffer": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz", + "integrity": "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-content-length": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.12.tgz", + "integrity": "sha512-YE58Yz+cvFInWI/wOTrB+DbvUVz/pLn5mC5MvOV4fdRUc6qGwygyngcucRQjAhiCEbmfLOXX0gntSIcgMvAjmA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-endpoint": { + "version": "4.4.25", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.25.tgz", + "integrity": "sha512-dqjLwZs2eBxIUG6Qtw8/YZ4DvzHGIf0DA18wrgtfP6a50UIO7e2nY0FPdcbv5tVJKqWCCU5BmGMOUwT7Puan+A==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/core": "^3.23.11", + "@smithy/middleware-serde": "^4.2.14", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-middleware": "^4.2.12", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-retry": { + "version": "4.4.42", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.42.tgz", + "integrity": "sha512-vbwyqHRIpIZutNXZpLAozakzamcINaRCpEy1MYmK6xBeW3xN+TyPRA123GjXnuxZIjc9848MRRCugVMTXxC4Eg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/node-config-provider": "^4.3.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/service-error-classification": "^4.2.12", + "@smithy/smithy-client": "^4.12.5", + "@smithy/types": "^4.13.1", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-retry": "^4.2.12", + "@smithy/uuid": "^1.1.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-serde": { + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.14.tgz", + "integrity": "sha512-+CcaLoLa5apzSRtloOyG7lQvkUw2ZDml3hRh4QiG9WyEPfW5Ke/3tPOPiPjUneuT59Tpn8+c3RVaUvvkkwqZwg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/core": "^3.23.11", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-stack": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.12.tgz", + "integrity": "sha512-kruC5gRHwsCOuyCd4ouQxYjgRAym2uDlCvQ5acuMtRrcdfg7mFBg6blaxcJ09STpt3ziEkis6bhg1uwrWU7txw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-config-provider": { + "version": "4.3.12", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.12.tgz", + "integrity": "sha512-tr2oKX2xMcO+rBOjobSwVAkV05SIfUKz8iI53rzxEmgW3GOOPOv0UioSDk+J8OpRQnpnhsO3Af6IEBabQBVmiw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-http-handler": { + "version": "4.4.16", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.16.tgz", + "integrity": "sha512-ULC8UCS/HivdCB3jhi+kLFYe4B5gxH2gi9vHBfEIiRrT2jfKiZNiETJSlzRtE6B26XbBHjPtc8iZKSNqMol9bw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/abort-controller": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/querystring-builder": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/property-provider": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.12.tgz", + "integrity": "sha512-jqve46eYU1v7pZ5BM+fmkbq3DerkSluPr5EhvOcHxygxzD05ByDRppRwRPPpFrsFo5yDtCYLKu+kreHKVrvc7A==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/protocol-http": { + "version": "5.3.12", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", + "integrity": "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/querystring-builder": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.12.tgz", + "integrity": "sha512-6wTZjGABQufekycfDGMEB84BgtdOE/rCVTov+EDXQ8NHKTUNIp/j27IliwP7tjIU9LR+sSzyGBOXjeEtVgzCHg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/types": "^4.13.1", + "@smithy/util-uri-escape": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/querystring-parser": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.12.tgz", + "integrity": "sha512-P2OdvrgiAKpkPNKlKUtWbNZKB1XjPxM086NeVhK+W+wI46pIKdWBe5QyXvhUm3MEcyS/rkLvY8rZzyUdmyDZBw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/service-error-classification": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.12.tgz", + "integrity": "sha512-LlP29oSQN0Tw0b6D0Xo6BIikBswuIiGYbRACy5ujw/JgWSzTdYj46U83ssf6Ux0GyNJVivs2uReU8pt7Eu9okQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/types": "^4.13.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/shared-ini-file-loader": { + "version": "4.4.7", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.7.tgz", + "integrity": "sha512-HrOKWsUb+otTeo1HxVWeEb99t5ER1XrBi/xka2Wv6NVmTbuCUC1dvlrksdvxFtODLBjsC+PHK+fuy2x/7Ynyiw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/signature-v4": { + "version": "5.3.12", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.12.tgz", + "integrity": "sha512-B/FBwO3MVOL00DaRSXfXfa/TRXRheagt/q5A2NM13u7q+sHS59EOVGQNfG7DkmVtdQm5m3vOosoKAXSqn/OEgw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/is-array-buffer": "^4.2.2", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-hex-encoding": "^4.2.2", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-uri-escape": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/smithy-client": { + "version": "4.12.5", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.12.5.tgz", + "integrity": "sha512-UqwYawyqSr/aog8mnLnfbPurS0gi4G7IYDcD28cUIBhsvWs1+rQcL2IwkUQ+QZ7dibaoRzhNF99fAQ9AUcO00w==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/core": "^3.23.11", + "@smithy/middleware-endpoint": "^4.4.25", + "@smithy/middleware-stack": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-stream": "^4.5.19", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/types": { + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.13.1.tgz", + "integrity": "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/url-parser": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.12.tgz", + "integrity": "sha512-wOPKPEpso+doCZGIlr+e1lVI6+9VAKfL4kZWFgzVgGWY2hZxshNKod4l2LXS3PRC9otH/JRSjtEHqQ/7eLciRA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/querystring-parser": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-base64": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.2.tgz", + "integrity": "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-body-length-browser": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.2.tgz", + "integrity": "sha512-JKCrLNOup3OOgmzeaKQwi4ZCTWlYR5H4Gm1r2uTMVBXoemo1UEghk5vtMi1xSu2ymgKVGW631e2fp9/R610ZjQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-body-length-node": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.3.tgz", + "integrity": "sha512-ZkJGvqBzMHVHE7r/hcuCxlTY8pQr1kMtdsVPs7ex4mMU+EAbcXppfo5NmyxMYi2XU49eqaz56j2gsk4dHHPG/g==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-buffer-from": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz", + "integrity": "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/is-array-buffer": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-config-provider": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.2.tgz", + "integrity": "sha512-dWU03V3XUprJwaUIFVv4iOnS1FC9HnMHDfUrlNDSh4315v0cWyaIErP8KiqGVbf5z+JupoVpNM7ZB3jFiTejvQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-browser": { + "version": "4.3.41", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.41.tgz", + "integrity": "sha512-M1w1Ux0rSVvBOxIIiqbxvZvhnjQ+VUjJrugtORE90BbadSTH+jsQL279KRL3Hv0w69rE7EuYkV/4Lepz/NBW9g==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/property-provider": "^4.2.12", + "@smithy/smithy-client": "^4.12.5", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-node": { + "version": "4.2.44", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.44.tgz", + "integrity": "sha512-YPze3/lD1KmWuZsl9JlfhcgGLX7AXhSoaCDtiPntUjNW5/YY0lOHjkcgxyE9x/h5vvS1fzDifMGjzqnNlNiqOQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/config-resolver": "^4.4.11", + "@smithy/credential-provider-imds": "^4.2.12", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/smithy-client": "^4.12.5", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-endpoints": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.3.3.tgz", + "integrity": "sha512-VACQVe50j0HZPjpwWcjyT51KUQ4AnsvEaQ2lKHOSL4mNLD0G9BjEniQ+yCt1qqfKfiAHRAts26ud7hBjamrwig==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/node-config-provider": "^4.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-hex-encoding": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.2.tgz", + "integrity": "sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-middleware": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.12.tgz", + "integrity": "sha512-Er805uFUOvgc0l8nv0e0su0VFISoxhJ/AwOn3gL2NWNY2LUEldP5WtVcRYSQBcjg0y9NfG8JYrCJaYDpupBHJQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-retry": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.12.tgz", + "integrity": "sha512-1zopLDUEOwumjcHdJ1mwBHddubYF8GMQvstVCLC54Y46rqoHwlIU+8ZzUeaBcD+WCJHyDGSeZ2ml9YSe9aqcoQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/service-error-classification": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-stream": { + "version": "4.5.19", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.19.tgz", + "integrity": "sha512-v4sa+3xTweL1CLO2UP0p7tvIMH/Rq1X4KKOxd568mpe6LSLMQCnDHs4uv7m3ukpl3HvcN2JH6jiCS0SNRXKP/w==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/fetch-http-handler": "^5.3.15", + "@smithy/node-http-handler": "^4.4.16", + "@smithy/types": "^4.13.1", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-hex-encoding": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-uri-escape": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.2.tgz", + "integrity": "sha512-2kAStBlvq+lTXHyAZYfJRb/DfS3rsinLiwb+69SstC9Vb0s9vNWkRwpnj918Pfi85mzi42sOqdV72OLxWAISnw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-utf8": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.2.tgz", + "integrity": "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/util-buffer-from": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/uuid": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.2.tgz", + "integrity": "sha512-O/IEdcCUKkubz60tFbGA7ceITTAJsty+lBjNoorP4Z6XRqaFb/OjQjZODophEcuq68nKm6/0r+6/lLQ+XVpk8g==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@types/node": { @@ -20,14 +1339,16 @@ "integrity": "sha512-HzNRZtp4eepNitP+BD6k2L6DROIDG4Q0fm4x+dwfsr6LGmROENnok75VGw40628xf+iR24WeMFcHuuBDUAzzsQ==" }, "node_modules/@types/webidl-conversions": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-6.1.1.tgz", - "integrity": "sha512-XAahCdThVuCFDQLT7R7Pk/vqeObFNL3YqRyFZg+AqAP/W1/w3xHaIxuW7WszQqTbIBOPRcItYJIou3i/mppu3Q==" + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", + "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==", + "license": "MIT" }, "node_modules/@types/whatwg-url": { "version": "8.2.2", "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", + "license": "MIT", "dependencies": { "@types/node": "*", "@types/webidl-conversions": "*" @@ -89,7 +1410,8 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/binary-extensions": { "version": "2.2.0", @@ -100,28 +1422,36 @@ } }, "node_modules/body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", + "bytes": "~3.1.2", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.10.3", - "raw-body": "2.5.1", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", "type-is": "~1.6.18", - "unpipe": "1.0.0" + "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/bowser": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.14.1.tgz", + "integrity": "sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==", + "license": "MIT", + "optional": true + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -143,9 +1473,10 @@ } }, "node_modules/bson": { - "version": "4.6.5", - "resolved": "https://registry.npmjs.org/bson/-/bson-4.6.5.tgz", - "integrity": "sha512-uqrgcjyOaZsHfz7ea8zLRCLe1u+QGUSzMZmvXqO24CDW7DWoW1qiN9folSwa7hSneTSgM2ykDIzF5kcQQ8cwNw==", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", + "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==", + "license": "Apache-2.0", "dependencies": { "buffer": "^5.6.0" }, @@ -171,6 +1502,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -180,17 +1512,35 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", "engines": { "node": ">= 0.8" } }, - "node_modules/call-bind": { + "node_modules/call-bind-apply-helpers": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -239,17 +1589,19 @@ } }, "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -260,15 +1612,20 @@ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "license": "MIT", "dependencies": { "object-assign": "^4", "vary": "^1" }, "engines": { "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/debug": { @@ -279,14 +1636,6 @@ "ms": "2.0.0" } }, - "node_modules/denque": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz", - "integrity": "sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ==", - "engines": { - "node": ">=0.10" - } - }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -304,71 +1653,171 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/dotenv": { + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz", + "integrity": "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", "engines": { "node": ">= 0.8" } }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" }, "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", + "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.0", - "content-disposition": "0.5.4", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "~0.1.12", "proxy-addr": "~2.0.7", - "qs": "6.10.3", + "qs": "~6.14.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "~0.19.0", + "serve-static": "~1.16.2", "setprototypeof": "1.2.0", - "statuses": "2.0.1", + "statuses": "~2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" }, "engines": { "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/fast-xml-builder": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.1.3.tgz", + "integrity": "sha512-1o60KoFw2+LWKQu3IdcfcFlGTW4dpqEWmjhYec6H82AYZU2TVBXep6tMl8Z1Y+wM+ZrzCwe3BZ9Vyd9N2rIvmg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "optional": true, + "dependencies": { + "path-expression-matcher": "^1.1.3" + } + }, + "node_modules/fast-xml-parser": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.4.1.tgz", + "integrity": "sha512-BQ30U1mKkvXQXXkAGcuyUA/GA26oEB7NzOtsxCDtyu62sjGw5QraKFhx2Em3WQNjPw9PG6MQ9yuIIgkSDfGu5A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "optional": true, + "dependencies": { + "fast-xml-builder": "^1.0.0", + "strnum": "^2.1.2" + }, + "bin": { + "fxparser": "src/cli/cli.js" } }, "node_modules/fill-range": { @@ -383,16 +1832,17 @@ } }, "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "license": "MIT", "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "parseurl": "~1.3.3", - "statuses": "2.0.1", + "statuses": "~2.0.2", "unpipe": "~1.0.0" }, "engines": { @@ -411,41 +1861,57 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -457,15 +1923,16 @@ "node": ">= 6" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", "engines": { - "node": ">= 0.4.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-flag": { @@ -477,9 +1944,10 @@ } }, "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -487,25 +1955,43 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" }, "engines": { "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -530,7 +2016,8 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "BSD-3-Clause" }, "node_modules/ignore-by-default": { "version": "1.0.1", @@ -540,12 +2027,17 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" }, - "node_modules/ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" + "node_modules/ip-address": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", + "license": "MIT", + "engines": { + "node": ">= 12" + } }, "node_modules/ipaddr.js": { "version": "1.9.1", @@ -594,15 +2086,28 @@ } }, "node_modules/kareem": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.4.1.tgz", - "integrity": "sha512-aJ9opVoXroQUPfovYP5kaj2lM7Jn02Gw13bL0lg9v0V7SaUc0qavPs0Eue7d2DcC3NjqI6QAUElXNsuZSeM+EA==" + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", + "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==", + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -615,12 +2120,17 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "license": "MIT", "optional": true }, "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/methods": { "version": "1.1.2", @@ -634,6 +2144,7 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", "bin": { "mime": "cli.js" }, @@ -672,43 +2183,46 @@ } }, "node_modules/mongodb": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.7.0.tgz", - "integrity": "sha512-HhVar6hsUeMAVlIbwQwWtV36iyjKd9qdhY+s4wcU8K6TOj4Q331iiMy+FoPuxEntDIijTYWivwFJkLv8q/ZgvA==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.17.2.tgz", + "integrity": "sha512-mLV7SEiov2LHleRJPMPrK2PMyhXFZt2UQLC4VD4pnth3jMjYKHhtqfwwkkvS/NXuo/Fp3vbhaNcXrIDaLRb9Tg==", + "license": "Apache-2.0", "dependencies": { - "bson": "^4.6.3", - "denque": "^2.0.1", - "mongodb-connection-string-url": "^2.5.2", - "socks": "^2.6.2" + "bson": "^4.7.2", + "mongodb-connection-string-url": "^2.6.0", + "socks": "^2.7.1" }, "engines": { "node": ">=12.9.0" }, "optionalDependencies": { - "saslprep": "^1.0.3" + "@aws-sdk/credential-providers": "^3.186.0", + "@mongodb-js/saslprep": "^1.1.0" } }, "node_modules/mongodb-connection-string-url": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.2.tgz", - "integrity": "sha512-tWDyIG8cQlI5k3skB6ywaEA5F9f5OntrKKsT/Lteub2zgwSUlhqEN2inGgBTm8bpYJf8QYBdA/5naz65XDpczA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", + "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", + "license": "Apache-2.0", "dependencies": { "@types/whatwg-url": "^8.2.1", "whatwg-url": "^11.0.0" } }, "node_modules/mongoose": { - "version": "6.4.4", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.4.4.tgz", - "integrity": "sha512-r6sp96veRNhNIWFtHHe4Lqak+ilgiExYnnMLhYTGdzjIMR90G1ayx0JKFVdHuC6dKNHGFX0ETJGbf36N8Romjg==", + "version": "6.13.9", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.13.9.tgz", + "integrity": "sha512-x8XpK0SEDJtAtMoOF2U9aGrGXN6kbu01TqhznGLnA4B1oPXNb4Lye0MgmfxF9J2Dva7wf49VOgClk2fuKQYGHw==", + "license": "MIT", "dependencies": { - "bson": "^4.6.2", - "kareem": "2.4.1", - "mongodb": "4.7.0", + "bson": "^4.7.2", + "kareem": "2.5.1", + "mongodb": "4.17.2", "mpath": "0.9.0", "mquery": "4.0.3", "ms": "2.1.3", - "sift": "16.0.0" + "sift": "16.0.1" }, "engines": { "node": ">=12.0.0" @@ -848,9 +2362,13 @@ } }, "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -870,14 +2388,32 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", "engines": { "node": ">= 0.8" } }, + "node_modules/path-expression-matcher": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.1.3.tgz", + "integrity": "sha512-qdVgY8KXmVdJZRSS1JdEPOKPdTiEK/pi0RkcT2sw1RhXxohdujUlJFPuS1TSkevZ9vzd3ZlL7ULl1MHGTApKzQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "license": "MIT" }, "node_modules/picomatch": { "version": "2.3.1", @@ -908,19 +2444,21 @@ "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" }, "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", + "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" @@ -933,19 +2471,21 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8" @@ -984,19 +2524,8 @@ "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/saslprep": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", - "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "optional": true, - "dependencies": { - "sparse-bitfield": "^3.0.3" - }, - "engines": { - "node": ">=6" - } + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" }, "node_modules/semver": { "version": "5.7.1", @@ -1007,23 +2536,24 @@ } }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", "mime": "1.6.0", "ms": "2.1.3", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "range-parser": "~1.2.1", - "statuses": "2.0.1" + "statuses": "~2.0.2" }, "engines": { "node": ">= 0.8.0" @@ -1032,17 +2562,19 @@ "node_modules/send/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "license": "MIT", "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "~0.19.1" }, "engines": { "node": ">= 0.8.0" @@ -1051,25 +2583,86 @@ "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/sift": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.0.tgz", - "integrity": "sha512-ILTjdP2Mv9V1kIxWMXeMTIRbOBrqKc4JAXmFMnFq3fKeyQ2Qwa3Dw1ubcye3vR+Y6ofA0b9gNDr/y2t6eUeIzQ==" + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", + "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==", + "license": "MIT" }, "node_modules/simple-update-notifier": { "version": "1.0.7", @@ -1094,21 +2687,23 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "license": "MIT", "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" } }, "node_modules/socks": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", - "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", + "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", + "license": "MIT", "dependencies": { - "ip": "^1.1.5", + "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" }, "engines": { - "node": ">= 10.13.0", + "node": ">= 10.0.0", "npm": ">= 3.0.0" } }, @@ -1116,23 +2711,26 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "license": "MIT", "optional": true, "dependencies": { "memory-pager": "^1.0.2" } }, "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/stripe": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/stripe/-/stripe-9.13.0.tgz", - "integrity": "sha512-PSxYaoaIoFwziNR4dmR6uw20UUmOM9ixtd8fML/gRWlPHsqi3FSGEszR//AttRjihRj+1SfjI5V/x6hhQZBTUA==", + "version": "9.16.0", + "resolved": "https://registry.npmjs.org/stripe/-/stripe-9.16.0.tgz", + "integrity": "sha512-Dn8K+jSoQcXjxCobRI4HXUdHjOXsiF/KszK49fJnkbeCFjZ3EZxLG2JiM/CX+Hcq27NBDtv/Sxhvy+HhTmvyaQ==", + "license": "MIT", "dependencies": { "@types/node": ">=8.1.0", "qs": "^6.10.3" @@ -1141,6 +2739,19 @@ "node": "^8.1 || >=10.*" } }, + "node_modules/strnum": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.0.tgz", + "integrity": "sha512-Y7Bj8XyJxnPAORMZj/xltsfo55uOiyHcU2tnAVzHUnSJR/KsEX+9RoDeXEnsXtl/CX4fAcrt64gZ13aGaWPeBg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "optional": true + }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -1167,6 +2778,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", "engines": { "node": ">=0.6" } @@ -1186,6 +2798,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "license": "MIT", "dependencies": { "punycode": "^2.1.1" }, @@ -1193,6 +2806,13 @@ "node": ">=12" } }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD", + "optional": true + }, "node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -1238,6 +2858,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "license": "BSD-2-Clause", "engines": { "node": ">=12" } @@ -1246,6 +2867,7 @@ "version": "11.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "license": "MIT", "dependencies": { "tr46": "^3.0.0", "webidl-conversions": "^7.0.0" diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/CHANGELOG.md b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/CHANGELOG.md new file mode 100644 index 000000000..e6036f8a7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/CHANGELOG.md @@ -0,0 +1,118 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [5.2.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v5.1.0...v5.2.0) (2023-10-16) + +### Features + +- support ESM artifacts in all packages ([#752](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/752)) ([e930ffb](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/e930ffba5cfef66dd242049e7d514ced232c1e3b)) + +# [5.1.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v5.0.0...v5.1.0) (2023-09-22) + +### Bug Fixes + +- Update tsc to 2.x ([#735](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/735)) ([782e0de](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/782e0de9f5fef41f694130580a69d940894b6b8c)) + +### Features + +- Use @smithy/util-utf8 ([#730](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/730)) ([00fb851](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/00fb851ca3559d5a1f370f9256814de1210826b8)), closes [#699](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/699) + +# [5.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v4.0.1...v5.0.0) (2023-07-13) + +- feat!: drop support for IE 11 (#629) ([6c49fb6](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/6c49fb6c1b1f18bbff02dbd77a37a21bdb40c959)), closes [#629](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/629) + +### BREAKING CHANGES + +- Remove support for IE11 + +Co-authored-by: texastony <5892063+texastony@users.noreply.github.com> + +# [4.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v3.0.0...v4.0.0) (2023-02-20) + +**Note:** Version bump only for package @aws-crypto/sha256-browser + +# [3.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v2.0.2...v3.0.0) (2023-01-12) + +### Bug Fixes + +- **docs:** sha256 packages, clarify hmac support ([#455](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/455)) ([1be5043](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/1be5043325991f3f5ccb52a8dd928f004b4d442e)) + +- feat!: replace Hash implementations with Checksum interface (#492) ([da43dc0](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/da43dc0fdf669d9ebb5bfb1b1f7c79e46c4aaae1)), closes [#492](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/492) + +### BREAKING CHANGES + +- All classes that implemented `Hash` now implement `Checksum`. + +## [2.0.2](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v2.0.1...v2.0.2) (2022-09-07) + +### Bug Fixes + +- **#337:** update @aws-sdk/types ([#373](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/373)) ([b26a811](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/b26a811a392f5209c7ec7e57251500d4d78f97ff)), closes [#337](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/337) + +## [2.0.1](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v2.0.0...v2.0.1) (2021-12-09) + +**Note:** Version bump only for package @aws-crypto/sha256-browser + +# [2.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.2.2...v2.0.0) (2021-10-25) + +**Note:** Version bump only for package @aws-crypto/sha256-browser + +## [1.2.2](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.2.1...v1.2.2) (2021-10-12) + +**Note:** Version bump only for package @aws-crypto/sha256-browser + +## [1.2.1](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.2.0...v1.2.1) (2021-09-17) + +**Note:** Version bump only for package @aws-crypto/sha256-browser + +# [1.2.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.1.1...v1.2.0) (2021-09-17) + +### Features + +- add @aws-crypto/util ([8f489cb](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/8f489cbe4c0e134f826bac66f1bf5172597048b9)) + +## [1.1.1](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/sha256-browser@1.1.0...@aws-crypto/sha256-browser@1.1.1) (2021-07-13) + +### Bug Fixes + +- **sha256-browser:** throw errors not string ([#194](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/194)) ([7fa7ac4](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/7fa7ac445ef7a04dfb1ff479e7114aba045b2b2c)) + +# [1.1.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/sha256-browser@1.0.0...@aws-crypto/sha256-browser@1.1.0) (2021-01-13) + +### Bug Fixes + +- remove package lock ([6002a5a](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/6002a5ab9218dc8798c19dc205d3eebd3bec5b43)) +- **aws-crypto:** export explicit dependencies on [@aws-types](https://github.com/aws-types) ([6a1873a](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/6a1873a4dcc2aaa4a1338595703cfa7099f17b8c)) +- **deps-dev:** move @aws-sdk/types to devDependencies ([#188](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/188)) ([08efdf4](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/08efdf46dcc612d88c441e29945d787f253ee77d)) + +# [1.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/sha256-browser@1.0.0-alpha.0...@aws-crypto/sha256-browser@1.0.0) (2020-10-22) + +**Note:** Version bump only for package @aws-crypto/sha256-browser + +# [1.0.0-alpha.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/sha256-browser@0.1.0-preview.4...@aws-crypto/sha256-browser@1.0.0-alpha.0) (2020-02-07) + +**Note:** Version bump only for package @aws-crypto/sha256-browser + +# [0.1.0-preview.4](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/sha256-browser@0.1.0-preview.2...@aws-crypto/sha256-browser@0.1.0-preview.4) (2020-01-16) + +### Bug Fixes + +- Changed package.json files to point to the right Git repo ([#9](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/9)) ([028245d](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/028245d72e642ca98d82226afb300eb154503c4a)), closes [#8](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/8) +- es2015.iterable required ([#10](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/10)) ([6e08d83](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/6e08d83c33667ad8cbeeaaa7cedf1bbe05f79ed8)) +- lerna version maintains package-lock ([#14](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/14)) ([2ef29e1](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/2ef29e13779703a5c9b32e93d18918fcb33b7272)), closes [#13](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/13) + +# [0.1.0-preview.3](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/sha256-browser@0.1.0-preview.2...@aws-crypto/sha256-browser@0.1.0-preview.3) (2019-11-15) + +### Bug Fixes + +- Changed package.json files to point to the right Git repo ([#9](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/9)) ([028245d](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/028245d72e642ca98d82226afb300eb154503c4a)), closes [#8](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/8) +- es2015.iterable required ([#10](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/10)) ([6e08d83](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/6e08d83c33667ad8cbeeaaa7cedf1bbe05f79ed8)) +- lerna version maintains package-lock ([#14](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/14)) ([2ef29e1](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/2ef29e13779703a5c9b32e93d18918fcb33b7272)), closes [#13](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/13) + +# [0.1.0-preview.2](https://github.com/aws/aws-javascript-crypto-helpers/compare/@aws-crypto/sha256-browser@0.1.0-preview.1...@aws-crypto/sha256-browser@0.1.0-preview.2) (2019-10-30) + +### Bug Fixes + +- remove /src/ from .npmignore (for sourcemaps) ([#5](https://github.com/aws/aws-javascript-crypto-helpers/issues/5)) ([ec52056](https://github.com/aws/aws-javascript-crypto-helpers/commit/ec52056)) diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/LICENSE b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/README.md b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/README.md new file mode 100644 index 000000000..75bf105aa --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/README.md @@ -0,0 +1,31 @@ +# @aws-crypto/sha256-browser + +SHA256 wrapper for browsers that prefers `window.crypto.subtle` but will +fall back to a pure JS implementation in @aws-crypto/sha256-js +to provide a consistent interface for SHA256. + +## Usage + +- To hash "some data" +``` +import {Sha256} from '@aws-crypto/sha256-browser' + +const hash = new Sha256(); +hash.update('some data'); +const result = await hash.digest(); + +``` + +- To hmac "some data" with "a key" +``` +import {Sha256} from '@aws-crypto/sha256-browser' + +const hash = new Sha256('a key'); +hash.update('some data'); +const result = await hash.digest(); + +``` + +## Test + +`npm test` diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/constants.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/constants.d.ts new file mode 100644 index 000000000..fe8def75f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/constants.d.ts @@ -0,0 +1,10 @@ +export declare const SHA_256_HASH: { + name: "SHA-256"; +}; +export declare const SHA_256_HMAC_ALGO: { + name: "HMAC"; + hash: { + name: "SHA-256"; + }; +}; +export declare const EMPTY_DATA_SHA_256: Uint8Array; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/constants.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/constants.js new file mode 100644 index 000000000..acb5c5532 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/constants.js @@ -0,0 +1,43 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.EMPTY_DATA_SHA_256 = exports.SHA_256_HMAC_ALGO = exports.SHA_256_HASH = void 0; +exports.SHA_256_HASH = { name: "SHA-256" }; +exports.SHA_256_HMAC_ALGO = { + name: "HMAC", + hash: exports.SHA_256_HASH +}; +exports.EMPTY_DATA_SHA_256 = new Uint8Array([ + 227, + 176, + 196, + 66, + 152, + 252, + 28, + 20, + 154, + 251, + 244, + 200, + 153, + 111, + 185, + 36, + 39, + 174, + 65, + 228, + 100, + 155, + 147, + 76, + 164, + 149, + 153, + 27, + 120, + 82, + 184, + 85 +]); +//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/constants.js.map b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/constants.js.map new file mode 100644 index 000000000..217561a5b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAwB,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAExD,QAAA,iBAAiB,GAAgD;IAC5E,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,oBAAY;CACnB,CAAC;AAEW,QAAA,kBAAkB,GAAG,IAAI,UAAU,CAAC;IAC/C,GAAG;IACH,GAAG;IACH,GAAG;IACH,EAAE;IACF,GAAG;IACH,GAAG;IACH,EAAE;IACF,EAAE;IACF,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,EAAE;IACF,EAAE;IACF,GAAG;IACH,EAAE;IACF,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,EAAE;IACF,GAAG;IACH,GAAG;IACH,GAAG;IACH,EAAE;IACF,GAAG;IACH,EAAE;IACF,GAAG;IACH,EAAE;CACH,CAAC,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/crossPlatformSha256.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/crossPlatformSha256.d.ts new file mode 100644 index 000000000..055d3ef7c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/crossPlatformSha256.d.ts @@ -0,0 +1,8 @@ +import { Checksum, SourceData } from "@aws-sdk/types"; +export declare class Sha256 implements Checksum { + private hash; + constructor(secret?: SourceData); + update(data: SourceData, encoding?: "utf8" | "ascii" | "latin1"): void; + digest(): Promise; + reset(): void; +} diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/crossPlatformSha256.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/crossPlatformSha256.js new file mode 100644 index 000000000..cde2a4278 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/crossPlatformSha256.js @@ -0,0 +1,30 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Sha256 = void 0; +var webCryptoSha256_1 = require("./webCryptoSha256"); +var sha256_js_1 = require("@aws-crypto/sha256-js"); +var supports_web_crypto_1 = require("@aws-crypto/supports-web-crypto"); +var util_locate_window_1 = require("@aws-sdk/util-locate-window"); +var util_1 = require("@aws-crypto/util"); +var Sha256 = /** @class */ (function () { + function Sha256(secret) { + if ((0, supports_web_crypto_1.supportsWebCrypto)((0, util_locate_window_1.locateWindow)())) { + this.hash = new webCryptoSha256_1.Sha256(secret); + } + else { + this.hash = new sha256_js_1.Sha256(secret); + } + } + Sha256.prototype.update = function (data, encoding) { + this.hash.update((0, util_1.convertToBuffer)(data)); + }; + Sha256.prototype.digest = function () { + return this.hash.digest(); + }; + Sha256.prototype.reset = function () { + this.hash.reset(); + }; + return Sha256; +}()); +exports.Sha256 = Sha256; +//# sourceMappingURL=crossPlatformSha256.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/crossPlatformSha256.js.map b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/crossPlatformSha256.js.map new file mode 100644 index 000000000..9a177dc55 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/crossPlatformSha256.js.map @@ -0,0 +1 @@ +{"version":3,"file":"crossPlatformSha256.js","sourceRoot":"","sources":["../../src/crossPlatformSha256.ts"],"names":[],"mappings":";;;AAAA,qDAA8D;AAC9D,mDAA2D;AAE3D,uEAAoE;AACpE,kEAA2D;AAC3D,yCAAmD;AAEnD;IAGE,gBAAY,MAAmB;QAC7B,IAAI,IAAA,uCAAiB,EAAC,IAAA,iCAAY,GAAE,CAAC,EAAE;YACrC,IAAI,CAAC,IAAI,GAAG,IAAI,wBAAe,CAAC,MAAM,CAAC,CAAC;SACzC;aAAM;YACL,IAAI,CAAC,IAAI,GAAG,IAAI,kBAAQ,CAAC,MAAM,CAAC,CAAC;SAClC;IACH,CAAC;IAED,uBAAM,GAAN,UAAO,IAAgB,EAAE,QAAsC;QAC7D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAA,sBAAe,EAAC,IAAI,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,uBAAM,GAAN;QACE,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,sBAAK,GAAL;QACE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IACH,aAAC;AAAD,CAAC,AAtBD,IAsBC;AAtBY,wBAAM"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/index.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/index.d.ts new file mode 100644 index 000000000..60ab39735 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/index.d.ts @@ -0,0 +1,2 @@ +export * from "./crossPlatformSha256"; +export { Sha256 as WebCryptoSha256 } from "./webCryptoSha256"; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/index.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/index.js new file mode 100644 index 000000000..a27034930 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/index.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WebCryptoSha256 = void 0; +var tslib_1 = require("tslib"); +tslib_1.__exportStar(require("./crossPlatformSha256"), exports); +var webCryptoSha256_1 = require("./webCryptoSha256"); +Object.defineProperty(exports, "WebCryptoSha256", { enumerable: true, get: function () { return webCryptoSha256_1.Sha256; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/index.js.map b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/index.js.map new file mode 100644 index 000000000..64b19ebae --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;AAAA,gEAAsC;AACtC,qDAA8D;AAArD,kHAAA,MAAM,OAAmB"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/isEmptyData.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/isEmptyData.d.ts new file mode 100644 index 000000000..43ae4a7c4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/isEmptyData.d.ts @@ -0,0 +1,2 @@ +import { SourceData } from "@aws-sdk/types"; +export declare function isEmptyData(data: SourceData): boolean; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/isEmptyData.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/isEmptyData.js new file mode 100644 index 000000000..fe91548ae --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/isEmptyData.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isEmptyData = void 0; +function isEmptyData(data) { + if (typeof data === "string") { + return data.length === 0; + } + return data.byteLength === 0; +} +exports.isEmptyData = isEmptyData; +//# sourceMappingURL=isEmptyData.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/isEmptyData.js.map b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/isEmptyData.js.map new file mode 100644 index 000000000..20ccfd6ab --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/isEmptyData.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isEmptyData.js","sourceRoot":"","sources":["../../src/isEmptyData.ts"],"names":[],"mappings":";;;AAEA,SAAgB,WAAW,CAAC,IAAgB;IAC1C,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC5B,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;KAC1B;IAED,OAAO,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC;AAC/B,CAAC;AAND,kCAMC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/webCryptoSha256.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/webCryptoSha256.d.ts new file mode 100644 index 000000000..ec0e214d2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/webCryptoSha256.d.ts @@ -0,0 +1,10 @@ +import { Checksum, SourceData } from "@aws-sdk/types"; +export declare class Sha256 implements Checksum { + private readonly secret?; + private key; + private toHash; + constructor(secret?: SourceData); + update(data: SourceData): void; + digest(): Promise; + reset(): void; +} diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/webCryptoSha256.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/webCryptoSha256.js new file mode 100644 index 000000000..778fdd904 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/webCryptoSha256.js @@ -0,0 +1,56 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Sha256 = void 0; +var util_1 = require("@aws-crypto/util"); +var constants_1 = require("./constants"); +var util_locate_window_1 = require("@aws-sdk/util-locate-window"); +var Sha256 = /** @class */ (function () { + function Sha256(secret) { + this.toHash = new Uint8Array(0); + this.secret = secret; + this.reset(); + } + Sha256.prototype.update = function (data) { + if ((0, util_1.isEmptyData)(data)) { + return; + } + var update = (0, util_1.convertToBuffer)(data); + var typedArray = new Uint8Array(this.toHash.byteLength + update.byteLength); + typedArray.set(this.toHash, 0); + typedArray.set(update, this.toHash.byteLength); + this.toHash = typedArray; + }; + Sha256.prototype.digest = function () { + var _this = this; + if (this.key) { + return this.key.then(function (key) { + return (0, util_locate_window_1.locateWindow)() + .crypto.subtle.sign(constants_1.SHA_256_HMAC_ALGO, key, _this.toHash) + .then(function (data) { return new Uint8Array(data); }); + }); + } + if ((0, util_1.isEmptyData)(this.toHash)) { + return Promise.resolve(constants_1.EMPTY_DATA_SHA_256); + } + return Promise.resolve() + .then(function () { + return (0, util_locate_window_1.locateWindow)().crypto.subtle.digest(constants_1.SHA_256_HASH, _this.toHash); + }) + .then(function (data) { return Promise.resolve(new Uint8Array(data)); }); + }; + Sha256.prototype.reset = function () { + var _this = this; + this.toHash = new Uint8Array(0); + if (this.secret && this.secret !== void 0) { + this.key = new Promise(function (resolve, reject) { + (0, util_locate_window_1.locateWindow)() + .crypto.subtle.importKey("raw", (0, util_1.convertToBuffer)(_this.secret), constants_1.SHA_256_HMAC_ALGO, false, ["sign"]) + .then(resolve, reject); + }); + this.key.catch(function () { }); + } + }; + return Sha256; +}()); +exports.Sha256 = Sha256; +//# sourceMappingURL=webCryptoSha256.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/webCryptoSha256.js.map b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/webCryptoSha256.js.map new file mode 100644 index 000000000..7b55a0732 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/main/webCryptoSha256.js.map @@ -0,0 +1 @@ +{"version":3,"file":"webCryptoSha256.js","sourceRoot":"","sources":["../../src/webCryptoSha256.ts"],"names":[],"mappings":";;;AACA,yCAAgE;AAChE,yCAIqB;AACrB,kEAA2D;AAE3D;IAKE,gBAAY,MAAmB;QAFvB,WAAM,GAAe,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QAG7C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,uBAAM,GAAN,UAAO,IAAgB;QACrB,IAAI,IAAA,kBAAW,EAAC,IAAI,CAAC,EAAE;YACrB,OAAO;SACR;QAED,IAAM,MAAM,GAAG,IAAA,sBAAe,EAAC,IAAI,CAAC,CAAC;QACrC,IAAM,UAAU,GAAG,IAAI,UAAU,CAC/B,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAC3C,CAAC;QACF,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/B,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;IAC3B,CAAC;IAED,uBAAM,GAAN;QAAA,iBAkBC;QAjBC,IAAI,IAAI,CAAC,GAAG,EAAE;YACZ,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAC,GAAG;gBACvB,OAAA,IAAA,iCAAY,GAAE;qBACX,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,6BAAiB,EAAE,GAAG,EAAE,KAAI,CAAC,MAAM,CAAC;qBACvD,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,UAAU,CAAC,IAAI,CAAC,EAApB,CAAoB,CAAC;YAFvC,CAEuC,CACxC,CAAC;SACH;QAED,IAAI,IAAA,kBAAW,EAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC5B,OAAO,OAAO,CAAC,OAAO,CAAC,8BAAkB,CAAC,CAAC;SAC5C;QAED,OAAO,OAAO,CAAC,OAAO,EAAE;aACrB,IAAI,CAAC;YACJ,OAAA,IAAA,iCAAY,GAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,wBAAY,EAAE,KAAI,CAAC,MAAM,CAAC;QAA9D,CAA8D,CAC/D;aACA,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,OAAO,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,EAArC,CAAqC,CAAC,CAAC;IAC3D,CAAC;IAED,sBAAK,GAAL;QAAA,iBAgBC;QAfC,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,EAAE;YACzC,IAAI,CAAC,GAAG,GAAG,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;gBACrC,IAAA,iCAAY,GAAE;qBACT,MAAM,CAAC,MAAM,CAAC,SAAS,CACxB,KAAK,EACL,IAAA,sBAAe,EAAC,KAAI,CAAC,MAAoB,CAAC,EAC1C,6BAAiB,EACjB,KAAK,EACL,CAAC,MAAM,CAAC,CACX;qBACI,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,cAAO,CAAC,CAAC,CAAC;SAC1B;IACH,CAAC;IACH,aAAC;AAAD,CAAC,AA7DD,IA6DC;AA7DY,wBAAM"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/constants.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/constants.d.ts new file mode 100644 index 000000000..fe8def75f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/constants.d.ts @@ -0,0 +1,10 @@ +export declare const SHA_256_HASH: { + name: "SHA-256"; +}; +export declare const SHA_256_HMAC_ALGO: { + name: "HMAC"; + hash: { + name: "SHA-256"; + }; +}; +export declare const EMPTY_DATA_SHA_256: Uint8Array; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/constants.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/constants.js new file mode 100644 index 000000000..7fb1613a3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/constants.js @@ -0,0 +1,40 @@ +export var SHA_256_HASH = { name: "SHA-256" }; +export var SHA_256_HMAC_ALGO = { + name: "HMAC", + hash: SHA_256_HASH +}; +export var EMPTY_DATA_SHA_256 = new Uint8Array([ + 227, + 176, + 196, + 66, + 152, + 252, + 28, + 20, + 154, + 251, + 244, + 200, + 153, + 111, + 185, + 36, + 39, + 174, + 65, + 228, + 100, + 155, + 147, + 76, + 164, + 149, + 153, + 27, + 120, + 82, + 184, + 85 +]); +//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/constants.js.map b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/constants.js.map new file mode 100644 index 000000000..09ed9a31c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,YAAY,GAAwB,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAErE,MAAM,CAAC,IAAM,iBAAiB,GAAgD;IAC5E,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,YAAY;CACnB,CAAC;AAEF,MAAM,CAAC,IAAM,kBAAkB,GAAG,IAAI,UAAU,CAAC;IAC/C,GAAG;IACH,GAAG;IACH,GAAG;IACH,EAAE;IACF,GAAG;IACH,GAAG;IACH,EAAE;IACF,EAAE;IACF,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,EAAE;IACF,EAAE;IACF,GAAG;IACH,EAAE;IACF,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,EAAE;IACF,GAAG;IACH,GAAG;IACH,GAAG;IACH,EAAE;IACF,GAAG;IACH,EAAE;IACF,GAAG;IACH,EAAE;CACH,CAAC,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/crossPlatformSha256.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/crossPlatformSha256.d.ts new file mode 100644 index 000000000..055d3ef7c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/crossPlatformSha256.d.ts @@ -0,0 +1,8 @@ +import { Checksum, SourceData } from "@aws-sdk/types"; +export declare class Sha256 implements Checksum { + private hash; + constructor(secret?: SourceData); + update(data: SourceData, encoding?: "utf8" | "ascii" | "latin1"): void; + digest(): Promise; + reset(): void; +} diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/crossPlatformSha256.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/crossPlatformSha256.js new file mode 100644 index 000000000..5ae82ea7e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/crossPlatformSha256.js @@ -0,0 +1,27 @@ +import { Sha256 as WebCryptoSha256 } from "./webCryptoSha256"; +import { Sha256 as JsSha256 } from "@aws-crypto/sha256-js"; +import { supportsWebCrypto } from "@aws-crypto/supports-web-crypto"; +import { locateWindow } from "@aws-sdk/util-locate-window"; +import { convertToBuffer } from "@aws-crypto/util"; +var Sha256 = /** @class */ (function () { + function Sha256(secret) { + if (supportsWebCrypto(locateWindow())) { + this.hash = new WebCryptoSha256(secret); + } + else { + this.hash = new JsSha256(secret); + } + } + Sha256.prototype.update = function (data, encoding) { + this.hash.update(convertToBuffer(data)); + }; + Sha256.prototype.digest = function () { + return this.hash.digest(); + }; + Sha256.prototype.reset = function () { + this.hash.reset(); + }; + return Sha256; +}()); +export { Sha256 }; +//# sourceMappingURL=crossPlatformSha256.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/crossPlatformSha256.js.map b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/crossPlatformSha256.js.map new file mode 100644 index 000000000..4a83c570b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/crossPlatformSha256.js.map @@ -0,0 +1 @@ +{"version":3,"file":"crossPlatformSha256.js","sourceRoot":"","sources":["../../src/crossPlatformSha256.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,MAAM,IAAI,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD;IAGE,gBAAY,MAAmB;QAC7B,IAAI,iBAAiB,CAAC,YAAY,EAAE,CAAC,EAAE;YACrC,IAAI,CAAC,IAAI,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;SACzC;aAAM;YACL,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;SAClC;IACH,CAAC;IAED,uBAAM,GAAN,UAAO,IAAgB,EAAE,QAAsC;QAC7D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,uBAAM,GAAN;QACE,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,sBAAK,GAAL;QACE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IACH,aAAC;AAAD,CAAC,AAtBD,IAsBC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/index.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/index.d.ts new file mode 100644 index 000000000..60ab39735 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/index.d.ts @@ -0,0 +1,2 @@ +export * from "./crossPlatformSha256"; +export { Sha256 as WebCryptoSha256 } from "./webCryptoSha256"; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/index.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/index.js new file mode 100644 index 000000000..94ffb6350 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/index.js @@ -0,0 +1,3 @@ +export * from "./crossPlatformSha256"; +export { Sha256 as WebCryptoSha256 } from "./webCryptoSha256"; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/index.js.map b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/index.js.map new file mode 100644 index 000000000..01d20bc58 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/isEmptyData.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/isEmptyData.d.ts new file mode 100644 index 000000000..43ae4a7c4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/isEmptyData.d.ts @@ -0,0 +1,2 @@ +import { SourceData } from "@aws-sdk/types"; +export declare function isEmptyData(data: SourceData): boolean; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/isEmptyData.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/isEmptyData.js new file mode 100644 index 000000000..4f31a618a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/isEmptyData.js @@ -0,0 +1,7 @@ +export function isEmptyData(data) { + if (typeof data === "string") { + return data.length === 0; + } + return data.byteLength === 0; +} +//# sourceMappingURL=isEmptyData.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/isEmptyData.js.map b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/isEmptyData.js.map new file mode 100644 index 000000000..776ce2b98 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/isEmptyData.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isEmptyData.js","sourceRoot":"","sources":["../../src/isEmptyData.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,WAAW,CAAC,IAAgB;IAC1C,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC5B,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;KAC1B;IAED,OAAO,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC;AAC/B,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/webCryptoSha256.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/webCryptoSha256.d.ts new file mode 100644 index 000000000..ec0e214d2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/webCryptoSha256.d.ts @@ -0,0 +1,10 @@ +import { Checksum, SourceData } from "@aws-sdk/types"; +export declare class Sha256 implements Checksum { + private readonly secret?; + private key; + private toHash; + constructor(secret?: SourceData); + update(data: SourceData): void; + digest(): Promise; + reset(): void; +} diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/webCryptoSha256.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/webCryptoSha256.js new file mode 100644 index 000000000..d12acd01a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/webCryptoSha256.js @@ -0,0 +1,53 @@ +import { isEmptyData, convertToBuffer } from "@aws-crypto/util"; +import { EMPTY_DATA_SHA_256, SHA_256_HASH, SHA_256_HMAC_ALGO, } from "./constants"; +import { locateWindow } from "@aws-sdk/util-locate-window"; +var Sha256 = /** @class */ (function () { + function Sha256(secret) { + this.toHash = new Uint8Array(0); + this.secret = secret; + this.reset(); + } + Sha256.prototype.update = function (data) { + if (isEmptyData(data)) { + return; + } + var update = convertToBuffer(data); + var typedArray = new Uint8Array(this.toHash.byteLength + update.byteLength); + typedArray.set(this.toHash, 0); + typedArray.set(update, this.toHash.byteLength); + this.toHash = typedArray; + }; + Sha256.prototype.digest = function () { + var _this = this; + if (this.key) { + return this.key.then(function (key) { + return locateWindow() + .crypto.subtle.sign(SHA_256_HMAC_ALGO, key, _this.toHash) + .then(function (data) { return new Uint8Array(data); }); + }); + } + if (isEmptyData(this.toHash)) { + return Promise.resolve(EMPTY_DATA_SHA_256); + } + return Promise.resolve() + .then(function () { + return locateWindow().crypto.subtle.digest(SHA_256_HASH, _this.toHash); + }) + .then(function (data) { return Promise.resolve(new Uint8Array(data)); }); + }; + Sha256.prototype.reset = function () { + var _this = this; + this.toHash = new Uint8Array(0); + if (this.secret && this.secret !== void 0) { + this.key = new Promise(function (resolve, reject) { + locateWindow() + .crypto.subtle.importKey("raw", convertToBuffer(_this.secret), SHA_256_HMAC_ALGO, false, ["sign"]) + .then(resolve, reject); + }); + this.key.catch(function () { }); + } + }; + return Sha256; +}()); +export { Sha256 }; +//# sourceMappingURL=webCryptoSha256.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/webCryptoSha256.js.map b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/webCryptoSha256.js.map new file mode 100644 index 000000000..c7b31c0eb --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/build/module/webCryptoSha256.js.map @@ -0,0 +1 @@ +{"version":3,"file":"webCryptoSha256.js","sourceRoot":"","sources":["../../src/webCryptoSha256.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D;IAKE,gBAAY,MAAmB;QAFvB,WAAM,GAAe,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QAG7C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,uBAAM,GAAN,UAAO,IAAgB;QACrB,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE;YACrB,OAAO;SACR;QAED,IAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACrC,IAAM,UAAU,GAAG,IAAI,UAAU,CAC/B,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAC3C,CAAC;QACF,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/B,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;IAC3B,CAAC;IAED,uBAAM,GAAN;QAAA,iBAkBC;QAjBC,IAAI,IAAI,CAAC,GAAG,EAAE;YACZ,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAC,GAAG;gBACvB,OAAA,YAAY,EAAE;qBACX,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE,KAAI,CAAC,MAAM,CAAC;qBACvD,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,UAAU,CAAC,IAAI,CAAC,EAApB,CAAoB,CAAC;YAFvC,CAEuC,CACxC,CAAC;SACH;QAED,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC5B,OAAO,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;SAC5C;QAED,OAAO,OAAO,CAAC,OAAO,EAAE;aACrB,IAAI,CAAC;YACJ,OAAA,YAAY,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,KAAI,CAAC,MAAM,CAAC;QAA9D,CAA8D,CAC/D;aACA,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,OAAO,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,EAArC,CAAqC,CAAC,CAAC;IAC3D,CAAC;IAED,sBAAK,GAAL;QAAA,iBAgBC;QAfC,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,EAAE;YACzC,IAAI,CAAC,GAAG,GAAG,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;gBACrC,YAAY,EAAE;qBACT,MAAM,CAAC,MAAM,CAAC,SAAS,CACxB,KAAK,EACL,eAAe,CAAC,KAAI,CAAC,MAAoB,CAAC,EAC1C,iBAAiB,EACjB,KAAK,EACL,CAAC,MAAM,CAAC,CACX;qBACI,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,cAAO,CAAC,CAAC,CAAC;SAC1B;IACH,CAAC;IACH,aAAC;AAAD,CAAC,AA7DD,IA6DC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/LICENSE b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/README.md b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/README.md new file mode 100644 index 000000000..31853f24b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/README.md @@ -0,0 +1,10 @@ +# @smithy/is-array-buffer + +[![NPM version](https://img.shields.io/npm/v/@smithy/is-array-buffer/latest.svg)](https://www.npmjs.com/package/@smithy/is-array-buffer) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/is-array-buffer.svg)](https://www.npmjs.com/package/@smithy/is-array-buffer) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/dist-cjs/index.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/dist-cjs/index.js new file mode 100644 index 000000000..5d792e71b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/dist-cjs/index.js @@ -0,0 +1,32 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/index.ts +var src_exports = {}; +__export(src_exports, { + isArrayBuffer: () => isArrayBuffer +}); +module.exports = __toCommonJS(src_exports); +var isArrayBuffer = /* @__PURE__ */ __name((arg) => typeof ArrayBuffer === "function" && arg instanceof ArrayBuffer || Object.prototype.toString.call(arg) === "[object ArrayBuffer]", "isArrayBuffer"); +// Annotate the CommonJS export names for ESM import in node: + +0 && (module.exports = { + isArrayBuffer +}); + diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/dist-es/index.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/dist-es/index.js new file mode 100644 index 000000000..8096cca36 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/dist-es/index.js @@ -0,0 +1,2 @@ +export const isArrayBuffer = (arg) => (typeof ArrayBuffer === "function" && arg instanceof ArrayBuffer) || + Object.prototype.toString.call(arg) === "[object ArrayBuffer]"; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/dist-types/index.d.ts new file mode 100644 index 000000000..64f452e71 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/dist-types/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const isArrayBuffer: (arg: any) => arg is ArrayBuffer; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..64f452e71 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/dist-types/ts3.4/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const isArrayBuffer: (arg: any) => arg is ArrayBuffer; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/package.json b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/package.json new file mode 100644 index 000000000..ed8affc7a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/package.json @@ -0,0 +1,60 @@ +{ + "name": "@smithy/is-array-buffer", + "version": "2.2.0", + "description": "Provides a function for detecting if an argument is an ArrayBuffer", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline is-array-buffer", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "rimraf ./.release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "rimraf ./dist-* && rimraf *.tsbuildinfo || exit 0", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:jest" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "typesVersions": { + "<4.0": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/awslabs/smithy-typescript/tree/main/packages/is-array-buffer", + "repository": { + "type": "git", + "url": "https://github.com/awslabs/smithy-typescript.git", + "directory": "packages/is-array-buffer" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "rimraf": "3.0.2", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/LICENSE b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/README.md b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/README.md new file mode 100644 index 000000000..c896b04ae --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/README.md @@ -0,0 +1,10 @@ +# @smithy/util-buffer-from + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-buffer-from/latest.svg)](https://www.npmjs.com/package/@smithy/util-buffer-from) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-buffer-from.svg)](https://www.npmjs.com/package/@smithy/util-buffer-from) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/dist-cjs/index.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/dist-cjs/index.js new file mode 100644 index 000000000..c6738d94a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/dist-cjs/index.js @@ -0,0 +1,47 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/index.ts +var src_exports = {}; +__export(src_exports, { + fromArrayBuffer: () => fromArrayBuffer, + fromString: () => fromString +}); +module.exports = __toCommonJS(src_exports); +var import_is_array_buffer = require("@smithy/is-array-buffer"); +var import_buffer = require("buffer"); +var fromArrayBuffer = /* @__PURE__ */ __name((input, offset = 0, length = input.byteLength - offset) => { + if (!(0, import_is_array_buffer.isArrayBuffer)(input)) { + throw new TypeError(`The "input" argument must be ArrayBuffer. Received type ${typeof input} (${input})`); + } + return import_buffer.Buffer.from(input, offset, length); +}, "fromArrayBuffer"); +var fromString = /* @__PURE__ */ __name((input, encoding) => { + if (typeof input !== "string") { + throw new TypeError(`The "input" argument must be of type string. Received type ${typeof input} (${input})`); + } + return encoding ? import_buffer.Buffer.from(input, encoding) : import_buffer.Buffer.from(input); +}, "fromString"); +// Annotate the CommonJS export names for ESM import in node: + +0 && (module.exports = { + fromArrayBuffer, + fromString +}); + diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/dist-es/index.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/dist-es/index.js new file mode 100644 index 000000000..718f83158 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/dist-es/index.js @@ -0,0 +1,14 @@ +import { isArrayBuffer } from "@smithy/is-array-buffer"; +import { Buffer } from "buffer"; +export const fromArrayBuffer = (input, offset = 0, length = input.byteLength - offset) => { + if (!isArrayBuffer(input)) { + throw new TypeError(`The "input" argument must be ArrayBuffer. Received type ${typeof input} (${input})`); + } + return Buffer.from(input, offset, length); +}; +export const fromString = (input, encoding) => { + if (typeof input !== "string") { + throw new TypeError(`The "input" argument must be of type string. Received type ${typeof input} (${input})`); + } + return encoding ? Buffer.from(input, encoding) : Buffer.from(input); +}; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/dist-types/index.d.ts new file mode 100644 index 000000000..a523134a5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/dist-types/index.d.ts @@ -0,0 +1,13 @@ +import { Buffer } from "buffer"; +/** + * @internal + */ +export declare const fromArrayBuffer: (input: ArrayBuffer, offset?: number, length?: number) => Buffer; +/** + * @internal + */ +export type StringEncoding = "ascii" | "utf8" | "utf16le" | "ucs2" | "base64" | "latin1" | "binary" | "hex"; +/** + * @internal + */ +export declare const fromString: (input: string, encoding?: StringEncoding) => Buffer; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..a523134a5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/dist-types/ts3.4/index.d.ts @@ -0,0 +1,13 @@ +import { Buffer } from "buffer"; +/** + * @internal + */ +export declare const fromArrayBuffer: (input: ArrayBuffer, offset?: number, length?: number) => Buffer; +/** + * @internal + */ +export type StringEncoding = "ascii" | "utf8" | "utf16le" | "ucs2" | "base64" | "latin1" | "binary" | "hex"; +/** + * @internal + */ +export declare const fromString: (input: string, encoding?: StringEncoding) => Buffer; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/package.json b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/package.json new file mode 100644 index 000000000..a12e51cc3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/package.json @@ -0,0 +1,61 @@ +{ + "name": "@smithy/util-buffer-from", + "version": "2.2.0", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-buffer-from", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "rimraf ./.release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "rimraf ./dist-* && rimraf *.tsbuildinfo || exit 0", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:jest" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "@types/node": "^14.14.31", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "rimraf": "3.0.2", + "typedoc": "0.23.23" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=14.0.0" + }, + "typesVersions": { + "<4.0": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/awslabs/smithy-typescript/tree/main/packages/util-buffer-from", + "repository": { + "type": "git", + "url": "https://github.com/awslabs/smithy-typescript.git", + "directory": "packages/util-buffer-from" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/LICENSE b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/README.md b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/README.md new file mode 100644 index 000000000..fc5db6d8e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/README.md @@ -0,0 +1,4 @@ +# @smithy/util-utf8 + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-utf8/latest.svg)](https://www.npmjs.com/package/@smithy/util-utf8) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-utf8.svg)](https://www.npmjs.com/package/@smithy/util-utf8) diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/fromUtf8.browser.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/fromUtf8.browser.js new file mode 100644 index 000000000..532e610f3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/fromUtf8.browser.js @@ -0,0 +1 @@ +module.exports = require("./index.js"); \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/fromUtf8.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/fromUtf8.js new file mode 100644 index 000000000..532e610f3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/fromUtf8.js @@ -0,0 +1 @@ +module.exports = require("./index.js"); \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/index.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/index.js new file mode 100644 index 000000000..0b22680ad --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/index.js @@ -0,0 +1,65 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/index.ts +var src_exports = {}; +__export(src_exports, { + fromUtf8: () => fromUtf8, + toUint8Array: () => toUint8Array, + toUtf8: () => toUtf8 +}); +module.exports = __toCommonJS(src_exports); + +// src/fromUtf8.ts +var import_util_buffer_from = require("@smithy/util-buffer-from"); +var fromUtf8 = /* @__PURE__ */ __name((input) => { + const buf = (0, import_util_buffer_from.fromString)(input, "utf8"); + return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength / Uint8Array.BYTES_PER_ELEMENT); +}, "fromUtf8"); + +// src/toUint8Array.ts +var toUint8Array = /* @__PURE__ */ __name((data) => { + if (typeof data === "string") { + return fromUtf8(data); + } + if (ArrayBuffer.isView(data)) { + return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT); + } + return new Uint8Array(data); +}, "toUint8Array"); + +// src/toUtf8.ts + +var toUtf8 = /* @__PURE__ */ __name((input) => { + if (typeof input === "string") { + return input; + } + if (typeof input !== "object" || typeof input.byteOffset !== "number" || typeof input.byteLength !== "number") { + throw new Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array."); + } + return (0, import_util_buffer_from.fromArrayBuffer)(input.buffer, input.byteOffset, input.byteLength).toString("utf8"); +}, "toUtf8"); +// Annotate the CommonJS export names for ESM import in node: + +0 && (module.exports = { + fromUtf8, + toUint8Array, + toUtf8 +}); + diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/toUint8Array.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/toUint8Array.js new file mode 100644 index 000000000..532e610f3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/toUint8Array.js @@ -0,0 +1 @@ +module.exports = require("./index.js"); \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/toUtf8.browser.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/toUtf8.browser.js new file mode 100644 index 000000000..532e610f3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/toUtf8.browser.js @@ -0,0 +1 @@ +module.exports = require("./index.js"); \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/toUtf8.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/toUtf8.js new file mode 100644 index 000000000..532e610f3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/toUtf8.js @@ -0,0 +1 @@ +module.exports = require("./index.js"); \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/fromUtf8.browser.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/fromUtf8.browser.js new file mode 100644 index 000000000..73441900f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/fromUtf8.browser.js @@ -0,0 +1 @@ +export const fromUtf8 = (input) => new TextEncoder().encode(input); diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/fromUtf8.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/fromUtf8.js new file mode 100644 index 000000000..6dc438b3e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/fromUtf8.js @@ -0,0 +1,5 @@ +import { fromString } from "@smithy/util-buffer-from"; +export const fromUtf8 = (input) => { + const buf = fromString(input, "utf8"); + return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength / Uint8Array.BYTES_PER_ELEMENT); +}; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/index.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/index.js new file mode 100644 index 000000000..00ba46574 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/index.js @@ -0,0 +1,3 @@ +export * from "./fromUtf8"; +export * from "./toUint8Array"; +export * from "./toUtf8"; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/toUint8Array.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/toUint8Array.js new file mode 100644 index 000000000..2cd36f755 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/toUint8Array.js @@ -0,0 +1,10 @@ +import { fromUtf8 } from "./fromUtf8"; +export const toUint8Array = (data) => { + if (typeof data === "string") { + return fromUtf8(data); + } + if (ArrayBuffer.isView(data)) { + return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT); + } + return new Uint8Array(data); +}; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/toUtf8.browser.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/toUtf8.browser.js new file mode 100644 index 000000000..c29212787 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/toUtf8.browser.js @@ -0,0 +1,9 @@ +export const toUtf8 = (input) => { + if (typeof input === "string") { + return input; + } + if (typeof input !== "object" || typeof input.byteOffset !== "number" || typeof input.byteLength !== "number") { + throw new Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array."); + } + return new TextDecoder("utf-8").decode(input); +}; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/toUtf8.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/toUtf8.js new file mode 100644 index 000000000..7be8745a8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/toUtf8.js @@ -0,0 +1,10 @@ +import { fromArrayBuffer } from "@smithy/util-buffer-from"; +export const toUtf8 = (input) => { + if (typeof input === "string") { + return input; + } + if (typeof input !== "object" || typeof input.byteOffset !== "number" || typeof input.byteLength !== "number") { + throw new Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array."); + } + return fromArrayBuffer(input.buffer, input.byteOffset, input.byteLength).toString("utf8"); +}; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/fromUtf8.browser.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/fromUtf8.browser.d.ts new file mode 100644 index 000000000..dd9198177 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/fromUtf8.browser.d.ts @@ -0,0 +1 @@ +export declare const fromUtf8: (input: string) => Uint8Array; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/fromUtf8.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/fromUtf8.d.ts new file mode 100644 index 000000000..dd9198177 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/fromUtf8.d.ts @@ -0,0 +1 @@ +export declare const fromUtf8: (input: string) => Uint8Array; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/index.d.ts new file mode 100644 index 000000000..00ba46574 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/index.d.ts @@ -0,0 +1,3 @@ +export * from "./fromUtf8"; +export * from "./toUint8Array"; +export * from "./toUtf8"; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/toUint8Array.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/toUint8Array.d.ts new file mode 100644 index 000000000..11b6342e8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/toUint8Array.d.ts @@ -0,0 +1 @@ +export declare const toUint8Array: (data: string | ArrayBuffer | ArrayBufferView) => Uint8Array; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/toUtf8.browser.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/toUtf8.browser.d.ts new file mode 100644 index 000000000..8494acd85 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/toUtf8.browser.d.ts @@ -0,0 +1,7 @@ +/** + * + * This does not convert non-utf8 strings to utf8, it only passes through strings if + * a string is received instead of a Uint8Array. + * + */ +export declare const toUtf8: (input: Uint8Array | string) => string; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/toUtf8.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/toUtf8.d.ts new file mode 100644 index 000000000..8494acd85 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/toUtf8.d.ts @@ -0,0 +1,7 @@ +/** + * + * This does not convert non-utf8 strings to utf8, it only passes through strings if + * a string is received instead of a Uint8Array. + * + */ +export declare const toUtf8: (input: Uint8Array | string) => string; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.browser.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.browser.d.ts new file mode 100644 index 000000000..dd9198177 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.browser.d.ts @@ -0,0 +1 @@ +export declare const fromUtf8: (input: string) => Uint8Array; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.d.ts new file mode 100644 index 000000000..dd9198177 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.d.ts @@ -0,0 +1 @@ +export declare const fromUtf8: (input: string) => Uint8Array; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..00ba46574 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/index.d.ts @@ -0,0 +1,3 @@ +export * from "./fromUtf8"; +export * from "./toUint8Array"; +export * from "./toUtf8"; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUint8Array.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUint8Array.d.ts new file mode 100644 index 000000000..11b6342e8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUint8Array.d.ts @@ -0,0 +1 @@ +export declare const toUint8Array: (data: string | ArrayBuffer | ArrayBufferView) => Uint8Array; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.browser.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.browser.d.ts new file mode 100644 index 000000000..8494acd85 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.browser.d.ts @@ -0,0 +1,7 @@ +/** + * + * This does not convert non-utf8 strings to utf8, it only passes through strings if + * a string is received instead of a Uint8Array. + * + */ +export declare const toUtf8: (input: Uint8Array | string) => string; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.d.ts new file mode 100644 index 000000000..8494acd85 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.d.ts @@ -0,0 +1,7 @@ +/** + * + * This does not convert non-utf8 strings to utf8, it only passes through strings if + * a string is received instead of a Uint8Array. + * + */ +export declare const toUtf8: (input: Uint8Array | string) => string; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/package.json b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/package.json new file mode 100644 index 000000000..78bfb4df4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/package.json @@ -0,0 +1,66 @@ +{ + "name": "@smithy/util-utf8", + "version": "2.3.0", + "description": "A UTF-8 string <-> UInt8Array converter", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-utf8", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "rimraf ./.release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "rimraf ./dist-* && rimraf *.tsbuildinfo || exit 0", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:jest" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "rimraf": "3.0.2", + "typedoc": "0.23.23" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=14.0.0" + }, + "typesVersions": { + "<4.0": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "browser": { + "./dist-es/fromUtf8": "./dist-es/fromUtf8.browser", + "./dist-es/toUtf8": "./dist-es/toUtf8.browser" + }, + "react-native": {}, + "homepage": "https://github.com/awslabs/smithy-typescript/tree/main/packages/util-utf8", + "repository": { + "type": "git", + "url": "https://github.com/awslabs/smithy-typescript.git", + "directory": "packages/util-utf8" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/package.json b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/package.json new file mode 100644 index 000000000..2688ecf96 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/package.json @@ -0,0 +1,33 @@ +{ + "name": "@aws-crypto/sha256-browser", + "version": "5.2.0", + "scripts": { + "prepublishOnly": "tsc -p tsconfig.json && tsc -p tsconfig.module.json", + "pretest": "tsc -p tsconfig.test.json", + "test": "mocha --require ts-node/register test/**/*test.ts" + }, + "repository": { + "type": "git", + "url": "git@github.com:aws/aws-sdk-js-crypto-helpers.git" + }, + "author": { + "name": "AWS Crypto Tools Team", + "email": "aws-cryptools@amazon.com", + "url": "https://docs.aws.amazon.com/aws-crypto-tools/index.html?id=docs_gateway#lang/en_us" + }, + "homepage": "https://github.com/aws/aws-sdk-js-crypto-helpers/tree/master/packages/sha256-browser", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-js": "^5.2.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + }, + "main": "./build/main/index.js", + "module": "./build/module/index.js", + "types": "./build/main/index.d.ts", + "gitHead": "c11b171b35ec5c093364f0e0d8dc4ab1af68e748" +} diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/src/constants.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/src/constants.ts new file mode 100644 index 000000000..7f68e2acd --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/src/constants.ts @@ -0,0 +1,41 @@ +export const SHA_256_HASH: { name: "SHA-256" } = { name: "SHA-256" }; + +export const SHA_256_HMAC_ALGO: { name: "HMAC"; hash: { name: "SHA-256" } } = { + name: "HMAC", + hash: SHA_256_HASH +}; + +export const EMPTY_DATA_SHA_256 = new Uint8Array([ + 227, + 176, + 196, + 66, + 152, + 252, + 28, + 20, + 154, + 251, + 244, + 200, + 153, + 111, + 185, + 36, + 39, + 174, + 65, + 228, + 100, + 155, + 147, + 76, + 164, + 149, + 153, + 27, + 120, + 82, + 184, + 85 +]); diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/src/crossPlatformSha256.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/src/crossPlatformSha256.ts new file mode 100644 index 000000000..8cb9ff06a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/src/crossPlatformSha256.ts @@ -0,0 +1,30 @@ +import { Sha256 as WebCryptoSha256 } from "./webCryptoSha256"; +import { Sha256 as JsSha256 } from "@aws-crypto/sha256-js"; +import { Checksum, SourceData } from "@aws-sdk/types"; +import { supportsWebCrypto } from "@aws-crypto/supports-web-crypto"; +import { locateWindow } from "@aws-sdk/util-locate-window"; +import { convertToBuffer } from "@aws-crypto/util"; + +export class Sha256 implements Checksum { + private hash: Checksum; + + constructor(secret?: SourceData) { + if (supportsWebCrypto(locateWindow())) { + this.hash = new WebCryptoSha256(secret); + } else { + this.hash = new JsSha256(secret); + } + } + + update(data: SourceData, encoding?: "utf8" | "ascii" | "latin1"): void { + this.hash.update(convertToBuffer(data)); + } + + digest(): Promise { + return this.hash.digest(); + } + + reset(): void { + this.hash.reset(); + } +} diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/src/index.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/src/index.ts new file mode 100644 index 000000000..60ab39735 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/src/index.ts @@ -0,0 +1,2 @@ +export * from "./crossPlatformSha256"; +export { Sha256 as WebCryptoSha256 } from "./webCryptoSha256"; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/src/isEmptyData.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/src/isEmptyData.ts new file mode 100644 index 000000000..538971f45 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/src/isEmptyData.ts @@ -0,0 +1,9 @@ +import { SourceData } from "@aws-sdk/types"; + +export function isEmptyData(data: SourceData): boolean { + if (typeof data === "string") { + return data.length === 0; + } + + return data.byteLength === 0; +} diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/src/webCryptoSha256.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/src/webCryptoSha256.ts new file mode 100644 index 000000000..fe4db5717 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/src/webCryptoSha256.ts @@ -0,0 +1,71 @@ +import { Checksum, SourceData } from "@aws-sdk/types"; +import { isEmptyData, convertToBuffer } from "@aws-crypto/util"; +import { + EMPTY_DATA_SHA_256, + SHA_256_HASH, + SHA_256_HMAC_ALGO, +} from "./constants"; +import { locateWindow } from "@aws-sdk/util-locate-window"; + +export class Sha256 implements Checksum { + private readonly secret?: SourceData; + private key: Promise | undefined; + private toHash: Uint8Array = new Uint8Array(0); + + constructor(secret?: SourceData) { + this.secret = secret; + this.reset(); + } + + update(data: SourceData): void { + if (isEmptyData(data)) { + return; + } + + const update = convertToBuffer(data); + const typedArray = new Uint8Array( + this.toHash.byteLength + update.byteLength + ); + typedArray.set(this.toHash, 0); + typedArray.set(update, this.toHash.byteLength); + this.toHash = typedArray; + } + + digest(): Promise { + if (this.key) { + return this.key.then((key) => + locateWindow() + .crypto.subtle.sign(SHA_256_HMAC_ALGO, key, this.toHash) + .then((data) => new Uint8Array(data)) + ); + } + + if (isEmptyData(this.toHash)) { + return Promise.resolve(EMPTY_DATA_SHA_256); + } + + return Promise.resolve() + .then(() => + locateWindow().crypto.subtle.digest(SHA_256_HASH, this.toHash) + ) + .then((data) => Promise.resolve(new Uint8Array(data))); + } + + reset(): void { + this.toHash = new Uint8Array(0); + if (this.secret && this.secret !== void 0) { + this.key = new Promise((resolve, reject) => { + locateWindow() + .crypto.subtle.importKey( + "raw", + convertToBuffer(this.secret as SourceData), + SHA_256_HMAC_ALGO, + false, + ["sign"] + ) + .then(resolve, reject); + }); + this.key.catch(() => {}); + } + } +} diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/tsconfig.json b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/tsconfig.json new file mode 100644 index 000000000..fb9aa95fc --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./build/main", + "lib": ["dom"], + }, + "include": ["src/**/*.ts"], + "exclude": ["node_modules/**"] +} diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/tsconfig.module.json b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/tsconfig.module.json new file mode 100644 index 000000000..7d0cfddc0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-browser/tsconfig.module.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig", + "compilerOptions": { + "outDir": "build/module", + "module": "esnext", + } +} diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/CHANGELOG.md b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/CHANGELOG.md new file mode 100644 index 000000000..97c1f60a4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/CHANGELOG.md @@ -0,0 +1,106 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [5.2.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v5.1.0...v5.2.0) (2023-10-16) + +### Features + +- support ESM artifacts in all packages ([#752](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/752)) ([e930ffb](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/e930ffba5cfef66dd242049e7d514ced232c1e3b)) + +# [5.1.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v5.0.0...v5.1.0) (2023-09-22) + +### Bug Fixes + +- Update tsc to 2.x ([#735](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/735)) ([782e0de](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/782e0de9f5fef41f694130580a69d940894b6b8c)) + +# [5.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v4.0.1...v5.0.0) (2023-07-13) + +**Note:** Version bump only for package @aws-crypto/sha256-js + +# [4.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v3.0.0...v4.0.0) (2023-02-20) + +**Note:** Version bump only for package @aws-crypto/sha256-js + +# [3.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v2.0.2...v3.0.0) (2023-01-12) + +### Bug Fixes + +- **docs:** sha256 packages, clarify hmac support ([#455](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/455)) ([1be5043](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/1be5043325991f3f5ccb52a8dd928f004b4d442e)) + +- feat!: replace Hash implementations with Checksum interface (#492) ([da43dc0](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/da43dc0fdf669d9ebb5bfb1b1f7c79e46c4aaae1)), closes [#492](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/492) + +### BREAKING CHANGES + +- All classes that implemented `Hash` now implement `Checksum`. + +## [2.0.2](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v2.0.1...v2.0.2) (2022-09-07) + +### Bug Fixes + +- **#337:** update @aws-sdk/types ([#373](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/373)) ([b26a811](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/b26a811a392f5209c7ec7e57251500d4d78f97ff)), closes [#337](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/337) + +## [2.0.1](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v2.0.0...v2.0.1) (2021-12-09) + +**Note:** Version bump only for package @aws-crypto/sha256-js + +# [2.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.2.2...v2.0.0) (2021-10-25) + +**Note:** Version bump only for package @aws-crypto/sha256-js + +## [1.2.2](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.2.1...v1.2.2) (2021-10-12) + +**Note:** Version bump only for package @aws-crypto/sha256-js + +## [1.2.1](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.2.0...v1.2.1) (2021-09-17) + +**Note:** Version bump only for package @aws-crypto/sha256-js + +# [1.2.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.1.1...v1.2.0) (2021-09-17) + +### Features + +- add @aws-crypto/util ([8f489cb](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/8f489cbe4c0e134f826bac66f1bf5172597048b9)) + +# [1.1.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/sha256-js@1.0.0...@aws-crypto/sha256-js@1.1.0) (2021-01-13) + +### Bug Fixes + +- remove package lock ([6002a5a](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/6002a5ab9218dc8798c19dc205d3eebd3bec5b43)) +- **aws-crypto:** export explicit dependencies on [@aws-types](https://github.com/aws-types) ([6a1873a](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/6a1873a4dcc2aaa4a1338595703cfa7099f17b8c)) +- **deps-dev:** move @aws-sdk/types to devDependencies ([#188](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/188)) ([08efdf4](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/08efdf46dcc612d88c441e29945d787f253ee77d)) + +# [1.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/sha256-js@1.0.0-alpha.0...@aws-crypto/sha256-js@1.0.0) (2020-10-22) + +**Note:** Version bump only for package @aws-crypto/sha256-js + +# [1.0.0-alpha.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/sha256-js@0.1.0-preview.4...@aws-crypto/sha256-js@1.0.0-alpha.0) (2020-02-07) + +**Note:** Version bump only for package @aws-crypto/sha256-js + +# [0.1.0-preview.4](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/sha256-js@0.1.0-preview.2...@aws-crypto/sha256-js@0.1.0-preview.4) (2020-01-16) + +### Bug Fixes + +- Changed package.json files to point to the right Git repo ([#9](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/9)) ([028245d](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/028245d72e642ca98d82226afb300eb154503c4a)), closes [#8](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/8) +- es2015.iterable required ([#10](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/10)) ([6e08d83](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/6e08d83c33667ad8cbeeaaa7cedf1bbe05f79ed8)) +- lerna version maintains package-lock ([#14](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/14)) ([2ef29e1](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/2ef29e13779703a5c9b32e93d18918fcb33b7272)), closes [#13](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/13) + +# [0.1.0-preview.3](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/sha256-js@0.1.0-preview.2...@aws-crypto/sha256-js@0.1.0-preview.3) (2019-11-15) + +### Bug Fixes + +- Changed package.json files to point to the right Git repo ([#9](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/9)) ([028245d](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/028245d72e642ca98d82226afb300eb154503c4a)), closes [#8](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/8) +- es2015.iterable required ([#10](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/10)) ([6e08d83](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/6e08d83c33667ad8cbeeaaa7cedf1bbe05f79ed8)) +- lerna version maintains package-lock ([#14](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/14)) ([2ef29e1](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/2ef29e13779703a5c9b32e93d18918fcb33b7272)), closes [#13](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/13) + +# [0.1.0-preview.2](https://github.com/aws/aws-javascript-crypto-helpers/compare/@aws-crypto/sha256-js@0.1.0-preview.1...@aws-crypto/sha256-js@0.1.0-preview.2) (2019-10-30) + +### Bug Fixes + +- remove /src/ from .npmignore (for sourcemaps) ([#5](https://github.com/aws/aws-javascript-crypto-helpers/issues/5)) ([ec52056](https://github.com/aws/aws-javascript-crypto-helpers/commit/ec52056)) + +### Features + +- **sha256-js:** expose synchronous digest ([#7](https://github.com/aws/aws-javascript-crypto-helpers/issues/7)) ([9edaef7](https://github.com/aws/aws-javascript-crypto-helpers/commit/9edaef7)), closes [#6](https://github.com/aws/aws-javascript-crypto-helpers/issues/6) diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/LICENSE b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/LICENSE new file mode 100644 index 000000000..ad410e113 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/README.md b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/README.md new file mode 100644 index 000000000..f769f5b0f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/README.md @@ -0,0 +1,29 @@ +# crypto-sha256-js + +A pure JS implementation SHA256. + +## Usage + +- To hash "some data" +``` +import {Sha256} from '@aws-crypto/sha256-js'; + +const hash = new Sha256(); +hash.update('some data'); +const result = await hash.digest(); + +``` + +- To hmac "some data" with "a key" +``` +import {Sha256} from '@aws-crypto/sha256-js'; + +const hash = new Sha256('a key'); +hash.update('some data'); +const result = await hash.digest(); + +``` + +## Test + +`npm test` diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/RawSha256.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/RawSha256.d.ts new file mode 100644 index 000000000..1f580b25a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/RawSha256.d.ts @@ -0,0 +1,17 @@ +/** + * @internal + */ +export declare class RawSha256 { + private state; + private temp; + private buffer; + private bufferLength; + private bytesHashed; + /** + * @internal + */ + finished: boolean; + update(data: Uint8Array): void; + digest(): Uint8Array; + private hashBuffer; +} diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/RawSha256.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/RawSha256.js new file mode 100644 index 000000000..68ceaccde --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/RawSha256.js @@ -0,0 +1,124 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.RawSha256 = void 0; +var constants_1 = require("./constants"); +/** + * @internal + */ +var RawSha256 = /** @class */ (function () { + function RawSha256() { + this.state = Int32Array.from(constants_1.INIT); + this.temp = new Int32Array(64); + this.buffer = new Uint8Array(64); + this.bufferLength = 0; + this.bytesHashed = 0; + /** + * @internal + */ + this.finished = false; + } + RawSha256.prototype.update = function (data) { + if (this.finished) { + throw new Error("Attempted to update an already finished hash."); + } + var position = 0; + var byteLength = data.byteLength; + this.bytesHashed += byteLength; + if (this.bytesHashed * 8 > constants_1.MAX_HASHABLE_LENGTH) { + throw new Error("Cannot hash more than 2^53 - 1 bits"); + } + while (byteLength > 0) { + this.buffer[this.bufferLength++] = data[position++]; + byteLength--; + if (this.bufferLength === constants_1.BLOCK_SIZE) { + this.hashBuffer(); + this.bufferLength = 0; + } + } + }; + RawSha256.prototype.digest = function () { + if (!this.finished) { + var bitsHashed = this.bytesHashed * 8; + var bufferView = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength); + var undecoratedLength = this.bufferLength; + bufferView.setUint8(this.bufferLength++, 0x80); + // Ensure the final block has enough room for the hashed length + if (undecoratedLength % constants_1.BLOCK_SIZE >= constants_1.BLOCK_SIZE - 8) { + for (var i = this.bufferLength; i < constants_1.BLOCK_SIZE; i++) { + bufferView.setUint8(i, 0); + } + this.hashBuffer(); + this.bufferLength = 0; + } + for (var i = this.bufferLength; i < constants_1.BLOCK_SIZE - 8; i++) { + bufferView.setUint8(i, 0); + } + bufferView.setUint32(constants_1.BLOCK_SIZE - 8, Math.floor(bitsHashed / 0x100000000), true); + bufferView.setUint32(constants_1.BLOCK_SIZE - 4, bitsHashed); + this.hashBuffer(); + this.finished = true; + } + // The value in state is little-endian rather than big-endian, so flip + // each word into a new Uint8Array + var out = new Uint8Array(constants_1.DIGEST_LENGTH); + for (var i = 0; i < 8; i++) { + out[i * 4] = (this.state[i] >>> 24) & 0xff; + out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff; + out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff; + out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff; + } + return out; + }; + RawSha256.prototype.hashBuffer = function () { + var _a = this, buffer = _a.buffer, state = _a.state; + var state0 = state[0], state1 = state[1], state2 = state[2], state3 = state[3], state4 = state[4], state5 = state[5], state6 = state[6], state7 = state[7]; + for (var i = 0; i < constants_1.BLOCK_SIZE; i++) { + if (i < 16) { + this.temp[i] = + ((buffer[i * 4] & 0xff) << 24) | + ((buffer[i * 4 + 1] & 0xff) << 16) | + ((buffer[i * 4 + 2] & 0xff) << 8) | + (buffer[i * 4 + 3] & 0xff); + } + else { + var u = this.temp[i - 2]; + var t1_1 = ((u >>> 17) | (u << 15)) ^ ((u >>> 19) | (u << 13)) ^ (u >>> 10); + u = this.temp[i - 15]; + var t2_1 = ((u >>> 7) | (u << 25)) ^ ((u >>> 18) | (u << 14)) ^ (u >>> 3); + this.temp[i] = + ((t1_1 + this.temp[i - 7]) | 0) + ((t2_1 + this.temp[i - 16]) | 0); + } + var t1 = ((((((state4 >>> 6) | (state4 << 26)) ^ + ((state4 >>> 11) | (state4 << 21)) ^ + ((state4 >>> 25) | (state4 << 7))) + + ((state4 & state5) ^ (~state4 & state6))) | + 0) + + ((state7 + ((constants_1.KEY[i] + this.temp[i]) | 0)) | 0)) | + 0; + var t2 = ((((state0 >>> 2) | (state0 << 30)) ^ + ((state0 >>> 13) | (state0 << 19)) ^ + ((state0 >>> 22) | (state0 << 10))) + + ((state0 & state1) ^ (state0 & state2) ^ (state1 & state2))) | + 0; + state7 = state6; + state6 = state5; + state5 = state4; + state4 = (state3 + t1) | 0; + state3 = state2; + state2 = state1; + state1 = state0; + state0 = (t1 + t2) | 0; + } + state[0] += state0; + state[1] += state1; + state[2] += state2; + state[3] += state3; + state[4] += state4; + state[5] += state5; + state[6] += state6; + state[7] += state7; + }; + return RawSha256; +}()); +exports.RawSha256 = RawSha256; +//# sourceMappingURL=RawSha256.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/RawSha256.js.map b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/RawSha256.js.map new file mode 100644 index 000000000..81659f51d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/RawSha256.js.map @@ -0,0 +1 @@ +{"version":3,"file":"RawSha256.js","sourceRoot":"","sources":["../../src/RawSha256.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/constants.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/constants.d.ts new file mode 100644 index 000000000..63bd764ee --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/constants.d.ts @@ -0,0 +1,20 @@ +/** + * @internal + */ +export declare const BLOCK_SIZE: number; +/** + * @internal + */ +export declare const DIGEST_LENGTH: number; +/** + * @internal + */ +export declare const KEY: Uint32Array; +/** + * @internal + */ +export declare const INIT: number[]; +/** + * @internal + */ +export declare const MAX_HASHABLE_LENGTH: number; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/constants.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/constants.js new file mode 100644 index 000000000..c83aa0991 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/constants.js @@ -0,0 +1,98 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.MAX_HASHABLE_LENGTH = exports.INIT = exports.KEY = exports.DIGEST_LENGTH = exports.BLOCK_SIZE = void 0; +/** + * @internal + */ +exports.BLOCK_SIZE = 64; +/** + * @internal + */ +exports.DIGEST_LENGTH = 32; +/** + * @internal + */ +exports.KEY = new Uint32Array([ + 0x428a2f98, + 0x71374491, + 0xb5c0fbcf, + 0xe9b5dba5, + 0x3956c25b, + 0x59f111f1, + 0x923f82a4, + 0xab1c5ed5, + 0xd807aa98, + 0x12835b01, + 0x243185be, + 0x550c7dc3, + 0x72be5d74, + 0x80deb1fe, + 0x9bdc06a7, + 0xc19bf174, + 0xe49b69c1, + 0xefbe4786, + 0x0fc19dc6, + 0x240ca1cc, + 0x2de92c6f, + 0x4a7484aa, + 0x5cb0a9dc, + 0x76f988da, + 0x983e5152, + 0xa831c66d, + 0xb00327c8, + 0xbf597fc7, + 0xc6e00bf3, + 0xd5a79147, + 0x06ca6351, + 0x14292967, + 0x27b70a85, + 0x2e1b2138, + 0x4d2c6dfc, + 0x53380d13, + 0x650a7354, + 0x766a0abb, + 0x81c2c92e, + 0x92722c85, + 0xa2bfe8a1, + 0xa81a664b, + 0xc24b8b70, + 0xc76c51a3, + 0xd192e819, + 0xd6990624, + 0xf40e3585, + 0x106aa070, + 0x19a4c116, + 0x1e376c08, + 0x2748774c, + 0x34b0bcb5, + 0x391c0cb3, + 0x4ed8aa4a, + 0x5b9cca4f, + 0x682e6ff3, + 0x748f82ee, + 0x78a5636f, + 0x84c87814, + 0x8cc70208, + 0x90befffa, + 0xa4506ceb, + 0xbef9a3f7, + 0xc67178f2 +]); +/** + * @internal + */ +exports.INIT = [ + 0x6a09e667, + 0xbb67ae85, + 0x3c6ef372, + 0xa54ff53a, + 0x510e527f, + 0x9b05688c, + 0x1f83d9ab, + 0x5be0cd19 +]; +/** + * @internal + */ +exports.MAX_HASHABLE_LENGTH = Math.pow(2, 53) - 1; +//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/constants.js.map b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/constants.js.map new file mode 100644 index 000000000..1132c126e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,UAAU,GAAW,EAAE,CAAC;AAErC;;GAEG;AACU,QAAA,aAAa,GAAW,EAAE,CAAC;AAExC;;GAEG;AACU,QAAA,GAAG,GAAG,IAAI,WAAW,CAAC;IACjC,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;CACX,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,IAAI,GAAG;IAClB,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;CACX,CAAC;AAEF;;GAEG;AACU,QAAA,mBAAmB,GAAG,SAAA,CAAC,EAAI,EAAE,CAAA,GAAG,CAAC,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/index.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/index.d.ts new file mode 100644 index 000000000..4554d8a3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/index.d.ts @@ -0,0 +1 @@ +export * from "./jsSha256"; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/index.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/index.js new file mode 100644 index 000000000..4329f1094 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/index.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var tslib_1 = require("tslib"); +tslib_1.__exportStar(require("./jsSha256"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/index.js.map b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/index.js.map new file mode 100644 index 000000000..9f97d5490 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,qDAA2B"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/jsSha256.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/jsSha256.d.ts new file mode 100644 index 000000000..d813b2565 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/jsSha256.d.ts @@ -0,0 +1,12 @@ +import { Checksum, SourceData } from "@aws-sdk/types"; +export declare class Sha256 implements Checksum { + private readonly secret?; + private hash; + private outer?; + private error; + constructor(secret?: SourceData); + update(toHash: SourceData): void; + digestSync(): Uint8Array; + digest(): Promise; + reset(): void; +} diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/jsSha256.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/jsSha256.js new file mode 100644 index 000000000..2a4f2f19b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/jsSha256.js @@ -0,0 +1,85 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Sha256 = void 0; +var tslib_1 = require("tslib"); +var constants_1 = require("./constants"); +var RawSha256_1 = require("./RawSha256"); +var util_1 = require("@aws-crypto/util"); +var Sha256 = /** @class */ (function () { + function Sha256(secret) { + this.secret = secret; + this.hash = new RawSha256_1.RawSha256(); + this.reset(); + } + Sha256.prototype.update = function (toHash) { + if ((0, util_1.isEmptyData)(toHash) || this.error) { + return; + } + try { + this.hash.update((0, util_1.convertToBuffer)(toHash)); + } + catch (e) { + this.error = e; + } + }; + /* This synchronous method keeps compatibility + * with the v2 aws-sdk. + */ + Sha256.prototype.digestSync = function () { + if (this.error) { + throw this.error; + } + if (this.outer) { + if (!this.outer.finished) { + this.outer.update(this.hash.digest()); + } + return this.outer.digest(); + } + return this.hash.digest(); + }; + /* The underlying digest method here is synchronous. + * To keep the same interface with the other hash functions + * the default is to expose this as an async method. + * However, it can sometimes be useful to have a sync method. + */ + Sha256.prototype.digest = function () { + return tslib_1.__awaiter(this, void 0, void 0, function () { + return tslib_1.__generator(this, function (_a) { + return [2 /*return*/, this.digestSync()]; + }); + }); + }; + Sha256.prototype.reset = function () { + this.hash = new RawSha256_1.RawSha256(); + if (this.secret) { + this.outer = new RawSha256_1.RawSha256(); + var inner = bufferFromSecret(this.secret); + var outer = new Uint8Array(constants_1.BLOCK_SIZE); + outer.set(inner); + for (var i = 0; i < constants_1.BLOCK_SIZE; i++) { + inner[i] ^= 0x36; + outer[i] ^= 0x5c; + } + this.hash.update(inner); + this.outer.update(outer); + // overwrite the copied key in memory + for (var i = 0; i < inner.byteLength; i++) { + inner[i] = 0; + } + } + }; + return Sha256; +}()); +exports.Sha256 = Sha256; +function bufferFromSecret(secret) { + var input = (0, util_1.convertToBuffer)(secret); + if (input.byteLength > constants_1.BLOCK_SIZE) { + var bufferHash = new RawSha256_1.RawSha256(); + bufferHash.update(input); + input = bufferHash.digest(); + } + var buffer = new Uint8Array(constants_1.BLOCK_SIZE); + buffer.set(input); + return buffer; +} +//# sourceMappingURL=jsSha256.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/jsSha256.js.map b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/jsSha256.js.map new file mode 100644 index 000000000..c34eb3603 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/jsSha256.js.map @@ -0,0 +1 @@ +{"version":3,"file":"jsSha256.js","sourceRoot":"","sources":["../../src/jsSha256.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/knownHashes.fixture.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/knownHashes.fixture.d.ts new file mode 100644 index 000000000..d88034325 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/knownHashes.fixture.d.ts @@ -0,0 +1,5 @@ +export declare const hashTestVectors: Array<[Uint8Array, Uint8Array]>; +/** + * @see https://tools.ietf.org/html/rfc4231 + */ +export declare const hmacTestVectors: Array<[Uint8Array, Uint8Array, Uint8Array]>; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/knownHashes.fixture.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/knownHashes.fixture.js new file mode 100644 index 000000000..3f0dd2f7e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/knownHashes.fixture.js @@ -0,0 +1,322 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.hmacTestVectors = exports.hashTestVectors = void 0; +var util_hex_encoding_1 = require("@aws-sdk/util-hex-encoding"); +var millionChars = new Uint8Array(1000000); +for (var i = 0; i < 1000000; i++) { + millionChars[i] = 97; +} +exports.hashTestVectors = [ + [ + Uint8Array.from([97, 98, 99]), + (0, util_hex_encoding_1.fromHex)("ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") + ], + [ + new Uint8Array(0), + (0, util_hex_encoding_1.fromHex)("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") + ], + [ + (0, util_hex_encoding_1.fromHex)("61"), + (0, util_hex_encoding_1.fromHex)("ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb") + ], + [ + (0, util_hex_encoding_1.fromHex)("6161"), + (0, util_hex_encoding_1.fromHex)("961b6dd3ede3cb8ecbaacbd68de040cd78eb2ed5889130cceb4c49268ea4d506") + ], + [ + (0, util_hex_encoding_1.fromHex)("616161"), + (0, util_hex_encoding_1.fromHex)("9834876dcfb05cb167a5c24953eba58c4ac89b1adf57f28f2f9d09af107ee8f0") + ], + [ + (0, util_hex_encoding_1.fromHex)("61616161"), + (0, util_hex_encoding_1.fromHex)("61be55a8e2f6b4e172338bddf184d6dbee29c98853e0a0485ecee7f27b9af0b4") + ], + [ + (0, util_hex_encoding_1.fromHex)("6161616161"), + (0, util_hex_encoding_1.fromHex)("ed968e840d10d2d313a870bc131a4e2c311d7ad09bdf32b3418147221f51a6e2") + ], + [ + (0, util_hex_encoding_1.fromHex)("616161616161"), + (0, util_hex_encoding_1.fromHex)("ed02457b5c41d964dbd2f2a609d63fe1bb7528dbe55e1abf5b52c249cd735797") + ], + [ + (0, util_hex_encoding_1.fromHex)("61616161616161"), + (0, util_hex_encoding_1.fromHex)("e46240714b5db3a23eee60479a623efba4d633d27fe4f03c904b9e219a7fbe60") + ], + [ + (0, util_hex_encoding_1.fromHex)("6161616161616161"), + (0, util_hex_encoding_1.fromHex)("1f3ce40415a2081fa3eee75fc39fff8e56c22270d1a978a7249b592dcebd20b4") + ], + [ + (0, util_hex_encoding_1.fromHex)("616161616161616161"), + (0, util_hex_encoding_1.fromHex)("f2aca93b80cae681221f0445fa4e2cae8a1f9f8fa1e1741d9639caad222f537d") + ], + [ + (0, util_hex_encoding_1.fromHex)("61616161616161616161"), + (0, util_hex_encoding_1.fromHex)("bf2cb58a68f684d95a3b78ef8f661c9a4e5b09e82cc8f9cc88cce90528caeb27") + ], + [ + (0, util_hex_encoding_1.fromHex)("6161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("28cb017dfc99073aa1b47c1b30f413e3ce774c4991eb4158de50f9dbb36d8043") + ], + [ + (0, util_hex_encoding_1.fromHex)("616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("f24abc34b13fade76e805799f71187da6cd90b9cac373ae65ed57f143bd664e5") + ], + [ + (0, util_hex_encoding_1.fromHex)("61616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("a689d786e81340e45511dec6c7ab2d978434e5db123362450fe10cfac70d19d0") + ], + [ + (0, util_hex_encoding_1.fromHex)("6161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("82cab7df0abfb9d95dca4e5937ce2968c798c726fea48c016bf9763221efda13") + ], + [ + (0, util_hex_encoding_1.fromHex)("616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("ef2df0b539c6c23de0f4cbe42648c301ae0e22e887340a4599fb4ef4e2678e48") + ], + [ + (0, util_hex_encoding_1.fromHex)("61616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("0c0beacef8877bbf2416eb00f2b5dc96354e26dd1df5517320459b1236860f8c") + ], + [ + (0, util_hex_encoding_1.fromHex)("6161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("b860666ee2966dd8f903be44ee605c6e1366f926d9f17a8f49937d11624eb99d") + ], + [ + (0, util_hex_encoding_1.fromHex)("616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("c926defaaa3d13eda2fc63a553bb7fb7326bece6e7cb67ca5296e4727d89bab4") + ], + [ + (0, util_hex_encoding_1.fromHex)("61616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("a0b4aaab8a966e2193ba172d68162c4656860197f256b5f45f0203397ff3f99c") + ], + [ + (0, util_hex_encoding_1.fromHex)("6161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("42492da06234ad0ac76f5d5debdb6d1ae027cffbe746a1c13b89bb8bc0139137") + ], + [ + (0, util_hex_encoding_1.fromHex)("616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("7df8e299c834de198e264c3e374bc58ecd9382252a705c183beb02f275571e3b") + ], + [ + (0, util_hex_encoding_1.fromHex)("61616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("ec7c494df6d2a7ea36668d656e6b8979e33641bfea378c15038af3964db057a3") + ], + [ + (0, util_hex_encoding_1.fromHex)("6161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("897d3e95b65f26676081f8b9f3a98b6ee4424566303e8d4e7c7522ebae219eab") + ], + [ + (0, util_hex_encoding_1.fromHex)("616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("09f61f8d9cd65e6a0c258087c485b6293541364e42bd97b2d7936580c8aa3c54") + ], + [ + (0, util_hex_encoding_1.fromHex)("61616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("2f521e2a7d0bd812cbc035f4ed6806eb8d851793b04ba147e8f66b72f5d1f20f") + ], + [ + (0, util_hex_encoding_1.fromHex)("6161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("9976d549a25115dab4e36d0c1fb8f31cb07da87dd83275977360eb7dc09e88de") + ], + [ + (0, util_hex_encoding_1.fromHex)("616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("cc0616e61cbd6e8e5e34e9fb2d320f37de915820206f5696c31f1fbd24aa16de") + ], + [ + (0, util_hex_encoding_1.fromHex)("61616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("9c547cb8115a44883b9f70ba68f75117cd55359c92611875e386f8af98c172ab") + ], + [ + (0, util_hex_encoding_1.fromHex)("6161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("6913c9c7fd42fe23df8b6bcd4dbaf1c17748948d97f2980b432319c39eddcf6c") + ], + [ + (0, util_hex_encoding_1.fromHex)("616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("3a54fc0cbc0b0ef48b6507b7788096235d10292dd3ae24e22f5aa062d4f9864a") + ], + [ + (0, util_hex_encoding_1.fromHex)("61616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("61c60b487d1a921e0bcc9bf853dda0fb159b30bf57b2e2d2c753b00be15b5a09") + ], + [ + (0, util_hex_encoding_1.fromHex)("6161616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("3ba3f5f43b92602683c19aee62a20342b084dd5971ddd33808d81a328879a547") + ], + [ + (0, util_hex_encoding_1.fromHex)("616161616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("852785c805c77e71a22340a54e9d95933ed49121e7d2bf3c2d358854bc1359ea") + ], + [ + (0, util_hex_encoding_1.fromHex)("61616161616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("a27c896c4859204843166af66f0e902b9c3b3ed6d2fd13d435abc020065c526f") + ], + [ + (0, util_hex_encoding_1.fromHex)("6161616161616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("629362afc62c74497caed2272e30f8125ecd0965f8d8d7cfc4e260f7f8dd319d") + ], + [ + (0, util_hex_encoding_1.fromHex)("616161616161616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("22c1d24bcd03e9aee9832efccd6da613fc702793178e5f12c945c7b67ddda933") + ], + [ + (0, util_hex_encoding_1.fromHex)("61616161616161616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("21ec055b38ce759cd4d0f477e9bdec2c5b8199945db4439bae334a964df6246c") + ], + [ + (0, util_hex_encoding_1.fromHex)("6161616161616161616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("365a9c3e2c2af0a56e47a9dac51c2c5381bf8f41273bad3175e0e619126ad087") + ], + [ + (0, util_hex_encoding_1.fromHex)("616161616161616161616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("b4d5e56e929ba4cda349e9274e3603d0be246b82016bca20f363963c5f2d6845") + ], + [ + (0, util_hex_encoding_1.fromHex)("61616161616161616161616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("e33cdf9c7f7120b98e8c78408953e07f2ecd183006b5606df349b4c212acf43e") + ], + [ + (0, util_hex_encoding_1.fromHex)("6161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("c0f8bd4dbc2b0c03107c1c37913f2a7501f521467f45dd0fef6958e9a4692719") + ], + [ + (0, util_hex_encoding_1.fromHex)("616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("7a538607fdaab9296995929f451565bbb8142e1844117322aafd2b3d76b01aff") + ], + [ + (0, util_hex_encoding_1.fromHex)("61616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("66d34fba71f8f450f7e45598853e53bfc23bbd129027cbb131a2f4ffd7878cd0") + ], + [ + (0, util_hex_encoding_1.fromHex)("6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("16849877c6c21ef0bfa68e4f6747300ddb171b170b9f00e189edc4c2fc4db93e") + ], + [ + (0, util_hex_encoding_1.fromHex)("616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("52789e3423b72beeb898456a4f49662e46b0cbb960784c5ef4b1399d327e7c27") + ], + [ + (0, util_hex_encoding_1.fromHex)("61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("6643110c5628fff59edf76d82d5bf573bf800f16a4d65dfb1e5d6f1a46296d0b") + ], + [ + (0, util_hex_encoding_1.fromHex)("6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("11eaed932c6c6fddfc2efc394e609facf4abe814fc6180d03b14fce13a07d0e5") + ], + [ + (0, util_hex_encoding_1.fromHex)("616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("97daac0ee9998dfcad6c9c0970da5ca411c86233a944c25b47566f6a7bc1ddd5") + ], + [ + (0, util_hex_encoding_1.fromHex)("61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("8f9bec6a62dd28ebd36d1227745592de6658b36974a3bb98a4c582f683ea6c42") + ], + [ + (0, util_hex_encoding_1.fromHex)("6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("160b4e433e384e05e537dc59b467f7cb2403f0214db15c5db58862a3f1156d2e") + ], + [ + (0, util_hex_encoding_1.fromHex)("616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("bfc5fe0e360152ca98c50fab4ed7e3078c17debc2917740d5000913b686ca129") + ], + [ + (0, util_hex_encoding_1.fromHex)("61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("6c1b3dc7a706b9dc81352a6716b9c666c608d8626272c64b914ab05572fc6e84") + ], + [ + (0, util_hex_encoding_1.fromHex)("6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("abe346a7259fc90b4c27185419628e5e6af6466b1ae9b5446cac4bfc26cf05c4") + ], + [ + (0, util_hex_encoding_1.fromHex)("616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("a3f01b6939256127582ac8ae9fb47a382a244680806a3f613a118851c1ca1d47") + ], + [ + (0, util_hex_encoding_1.fromHex)("61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("9f4390f8d30c2dd92ec9f095b65e2b9ae9b0a925a5258e241c9f1e910f734318") + ], + [ + (0, util_hex_encoding_1.fromHex)("6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("b35439a4ac6f0948b6d6f9e3c6af0f5f590ce20f1bde7090ef7970686ec6738a") + ], + [ + (0, util_hex_encoding_1.fromHex)("616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("f13b2d724659eb3bf47f2dd6af1accc87b81f09f59f2b75e5c0bed6589dfe8c6") + ], + [ + (0, util_hex_encoding_1.fromHex)("61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("d5c039b748aa64665782974ec3dc3025c042edf54dcdc2b5de31385b094cb678") + ], + [ + (0, util_hex_encoding_1.fromHex)("6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("111bb261277afd65f0744b247cd3e47d386d71563d0ed995517807d5ebd4fba3") + ], + [ + (0, util_hex_encoding_1.fromHex)("616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("11ee391211c6256460b6ed375957fadd8061cafbb31daf967db875aebd5aaad4") + ], + [ + (0, util_hex_encoding_1.fromHex)("61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("35d5fc17cfbbadd00f5e710ada39f194c5ad7c766ad67072245f1fad45f0f530") + ], + [ + (0, util_hex_encoding_1.fromHex)("6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("f506898cc7c2e092f9eb9fadae7ba50383f5b46a2a4fe5597dbb553a78981268") + ], + [ + (0, util_hex_encoding_1.fromHex)("616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("7d3e74a05d7db15bce4ad9ec0658ea98e3f06eeecf16b4c6fff2da457ddc2f34") + ], + [ + (0, util_hex_encoding_1.fromHex)("61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + (0, util_hex_encoding_1.fromHex)("ffe054fe7ae0cb6dc65c3af9b61d5209f439851db43d0ba5997337df154668eb") + ], + [ + (0, util_hex_encoding_1.fromHex)("de188941a3375d3a8a061e67576e926dc71a7fa3f0cceb97452b4d3227965f9ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629e"), + (0, util_hex_encoding_1.fromHex)("038051e9c324393bd1ca1978dd0952c2aa3742ca4f1bd5cd4611cea83892d382") + ], + [ + millionChars, + (0, util_hex_encoding_1.fromHex)("cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") + ], + [ + (0, util_hex_encoding_1.fromHex)("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), + (0, util_hex_encoding_1.fromHex)("45ad4b37c6e2fc0a2cfcc1b5da524132ec707615c2cae1dbbc43c97aa521db81") + ] +]; +/** + * @see https://tools.ietf.org/html/rfc4231 + */ +exports.hmacTestVectors = [ + [ + (0, util_hex_encoding_1.fromHex)("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"), + (0, util_hex_encoding_1.fromHex)("4869205468657265"), + (0, util_hex_encoding_1.fromHex)("b0344c61d8db38535ca8afceaf0bf12b881dc200c9833da726e9376c2e32cff7") + ], + [ + (0, util_hex_encoding_1.fromHex)("4a656665"), + (0, util_hex_encoding_1.fromHex)("7768617420646f2079612077616e7420666f72206e6f7468696e673f"), + (0, util_hex_encoding_1.fromHex)("5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843") + ], + [ + (0, util_hex_encoding_1.fromHex)("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), + (0, util_hex_encoding_1.fromHex)("dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"), + (0, util_hex_encoding_1.fromHex)("773ea91e36800e46854db8ebd09181a72959098b3ef8c122d9635514ced565fe") + ], + [ + (0, util_hex_encoding_1.fromHex)("0102030405060708090a0b0c0d0e0f10111213141516171819"), + (0, util_hex_encoding_1.fromHex)("cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"), + (0, util_hex_encoding_1.fromHex)("82558a389a443c0ea4cc819899f2083a85f0faa3e578f8077a2e3ff46729665b") + ], + [ + (0, util_hex_encoding_1.fromHex)("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), + (0, util_hex_encoding_1.fromHex)("54657374205573696e67204c6172676572205468616e20426c6f636b2d53697a65204b6579202d2048617368204b6579204669727374"), + (0, util_hex_encoding_1.fromHex)("60e431591ee0b67f0d8a26aacbf5b77f8e0bc6213728c5140546040f0ee37f54") + ], + [ + (0, util_hex_encoding_1.fromHex)("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), + (0, util_hex_encoding_1.fromHex)("5468697320697320612074657374207573696e672061206c6172676572207468616e20626c6f636b2d73697a65206b657920616e642061206c6172676572207468616e20626c6f636b2d73697a6520646174612e20546865206b6579206e6565647320746f20626520686173686564206265666f7265206265696e6720757365642062792074686520484d414320616c676f726974686d2e"), + (0, util_hex_encoding_1.fromHex)("9b09ffa71b942fcb27635fbcd5b0e944bfdc63644f0713938a7f51535c3a35e2") + ] +]; +//# sourceMappingURL=knownHashes.fixture.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/knownHashes.fixture.js.map b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/knownHashes.fixture.js.map new file mode 100644 index 000000000..8ffc02e06 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/main/knownHashes.fixture.js.map @@ -0,0 +1 @@ +{"version":3,"file":"knownHashes.fixture.js","sourceRoot":"","sources":["../../src/knownHashes.fixture.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/RawSha256.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/RawSha256.d.ts new file mode 100644 index 000000000..1f580b25a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/RawSha256.d.ts @@ -0,0 +1,17 @@ +/** + * @internal + */ +export declare class RawSha256 { + private state; + private temp; + private buffer; + private bufferLength; + private bytesHashed; + /** + * @internal + */ + finished: boolean; + update(data: Uint8Array): void; + digest(): Uint8Array; + private hashBuffer; +} diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/RawSha256.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/RawSha256.js new file mode 100644 index 000000000..f799acd2e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/RawSha256.js @@ -0,0 +1,121 @@ +import { BLOCK_SIZE, DIGEST_LENGTH, INIT, KEY, MAX_HASHABLE_LENGTH } from "./constants"; +/** + * @internal + */ +var RawSha256 = /** @class */ (function () { + function RawSha256() { + this.state = Int32Array.from(INIT); + this.temp = new Int32Array(64); + this.buffer = new Uint8Array(64); + this.bufferLength = 0; + this.bytesHashed = 0; + /** + * @internal + */ + this.finished = false; + } + RawSha256.prototype.update = function (data) { + if (this.finished) { + throw new Error("Attempted to update an already finished hash."); + } + var position = 0; + var byteLength = data.byteLength; + this.bytesHashed += byteLength; + if (this.bytesHashed * 8 > MAX_HASHABLE_LENGTH) { + throw new Error("Cannot hash more than 2^53 - 1 bits"); + } + while (byteLength > 0) { + this.buffer[this.bufferLength++] = data[position++]; + byteLength--; + if (this.bufferLength === BLOCK_SIZE) { + this.hashBuffer(); + this.bufferLength = 0; + } + } + }; + RawSha256.prototype.digest = function () { + if (!this.finished) { + var bitsHashed = this.bytesHashed * 8; + var bufferView = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength); + var undecoratedLength = this.bufferLength; + bufferView.setUint8(this.bufferLength++, 0x80); + // Ensure the final block has enough room for the hashed length + if (undecoratedLength % BLOCK_SIZE >= BLOCK_SIZE - 8) { + for (var i = this.bufferLength; i < BLOCK_SIZE; i++) { + bufferView.setUint8(i, 0); + } + this.hashBuffer(); + this.bufferLength = 0; + } + for (var i = this.bufferLength; i < BLOCK_SIZE - 8; i++) { + bufferView.setUint8(i, 0); + } + bufferView.setUint32(BLOCK_SIZE - 8, Math.floor(bitsHashed / 0x100000000), true); + bufferView.setUint32(BLOCK_SIZE - 4, bitsHashed); + this.hashBuffer(); + this.finished = true; + } + // The value in state is little-endian rather than big-endian, so flip + // each word into a new Uint8Array + var out = new Uint8Array(DIGEST_LENGTH); + for (var i = 0; i < 8; i++) { + out[i * 4] = (this.state[i] >>> 24) & 0xff; + out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff; + out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff; + out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff; + } + return out; + }; + RawSha256.prototype.hashBuffer = function () { + var _a = this, buffer = _a.buffer, state = _a.state; + var state0 = state[0], state1 = state[1], state2 = state[2], state3 = state[3], state4 = state[4], state5 = state[5], state6 = state[6], state7 = state[7]; + for (var i = 0; i < BLOCK_SIZE; i++) { + if (i < 16) { + this.temp[i] = + ((buffer[i * 4] & 0xff) << 24) | + ((buffer[i * 4 + 1] & 0xff) << 16) | + ((buffer[i * 4 + 2] & 0xff) << 8) | + (buffer[i * 4 + 3] & 0xff); + } + else { + var u = this.temp[i - 2]; + var t1_1 = ((u >>> 17) | (u << 15)) ^ ((u >>> 19) | (u << 13)) ^ (u >>> 10); + u = this.temp[i - 15]; + var t2_1 = ((u >>> 7) | (u << 25)) ^ ((u >>> 18) | (u << 14)) ^ (u >>> 3); + this.temp[i] = + ((t1_1 + this.temp[i - 7]) | 0) + ((t2_1 + this.temp[i - 16]) | 0); + } + var t1 = ((((((state4 >>> 6) | (state4 << 26)) ^ + ((state4 >>> 11) | (state4 << 21)) ^ + ((state4 >>> 25) | (state4 << 7))) + + ((state4 & state5) ^ (~state4 & state6))) | + 0) + + ((state7 + ((KEY[i] + this.temp[i]) | 0)) | 0)) | + 0; + var t2 = ((((state0 >>> 2) | (state0 << 30)) ^ + ((state0 >>> 13) | (state0 << 19)) ^ + ((state0 >>> 22) | (state0 << 10))) + + ((state0 & state1) ^ (state0 & state2) ^ (state1 & state2))) | + 0; + state7 = state6; + state6 = state5; + state5 = state4; + state4 = (state3 + t1) | 0; + state3 = state2; + state2 = state1; + state1 = state0; + state0 = (t1 + t2) | 0; + } + state[0] += state0; + state[1] += state1; + state[2] += state2; + state[3] += state3; + state[4] += state4; + state[5] += state5; + state[6] += state6; + state[7] += state7; + }; + return RawSha256; +}()); +export { RawSha256 }; +//# sourceMappingURL=RawSha256.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/RawSha256.js.map b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/RawSha256.js.map new file mode 100644 index 000000000..c4d50a9cc --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/RawSha256.js.map @@ -0,0 +1 @@ +{"version":3,"file":"RawSha256.js","sourceRoot":"","sources":["../../src/RawSha256.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/constants.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/constants.d.ts new file mode 100644 index 000000000..63bd764ee --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/constants.d.ts @@ -0,0 +1,20 @@ +/** + * @internal + */ +export declare const BLOCK_SIZE: number; +/** + * @internal + */ +export declare const DIGEST_LENGTH: number; +/** + * @internal + */ +export declare const KEY: Uint32Array; +/** + * @internal + */ +export declare const INIT: number[]; +/** + * @internal + */ +export declare const MAX_HASHABLE_LENGTH: number; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/constants.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/constants.js new file mode 100644 index 000000000..68037b384 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/constants.js @@ -0,0 +1,95 @@ +/** + * @internal + */ +export var BLOCK_SIZE = 64; +/** + * @internal + */ +export var DIGEST_LENGTH = 32; +/** + * @internal + */ +export var KEY = new Uint32Array([ + 0x428a2f98, + 0x71374491, + 0xb5c0fbcf, + 0xe9b5dba5, + 0x3956c25b, + 0x59f111f1, + 0x923f82a4, + 0xab1c5ed5, + 0xd807aa98, + 0x12835b01, + 0x243185be, + 0x550c7dc3, + 0x72be5d74, + 0x80deb1fe, + 0x9bdc06a7, + 0xc19bf174, + 0xe49b69c1, + 0xefbe4786, + 0x0fc19dc6, + 0x240ca1cc, + 0x2de92c6f, + 0x4a7484aa, + 0x5cb0a9dc, + 0x76f988da, + 0x983e5152, + 0xa831c66d, + 0xb00327c8, + 0xbf597fc7, + 0xc6e00bf3, + 0xd5a79147, + 0x06ca6351, + 0x14292967, + 0x27b70a85, + 0x2e1b2138, + 0x4d2c6dfc, + 0x53380d13, + 0x650a7354, + 0x766a0abb, + 0x81c2c92e, + 0x92722c85, + 0xa2bfe8a1, + 0xa81a664b, + 0xc24b8b70, + 0xc76c51a3, + 0xd192e819, + 0xd6990624, + 0xf40e3585, + 0x106aa070, + 0x19a4c116, + 0x1e376c08, + 0x2748774c, + 0x34b0bcb5, + 0x391c0cb3, + 0x4ed8aa4a, + 0x5b9cca4f, + 0x682e6ff3, + 0x748f82ee, + 0x78a5636f, + 0x84c87814, + 0x8cc70208, + 0x90befffa, + 0xa4506ceb, + 0xbef9a3f7, + 0xc67178f2 +]); +/** + * @internal + */ +export var INIT = [ + 0x6a09e667, + 0xbb67ae85, + 0x3c6ef372, + 0xa54ff53a, + 0x510e527f, + 0x9b05688c, + 0x1f83d9ab, + 0x5be0cd19 +]; +/** + * @internal + */ +export var MAX_HASHABLE_LENGTH = Math.pow(2, 53) - 1; +//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/constants.js.map b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/constants.js.map new file mode 100644 index 000000000..6c9308989 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,IAAM,UAAU,GAAW,EAAE,CAAC;AAErC;;GAEG;AACH,MAAM,CAAC,IAAM,aAAa,GAAW,EAAE,CAAC;AAExC;;GAEG;AACH,MAAM,CAAC,IAAM,GAAG,GAAG,IAAI,WAAW,CAAC;IACjC,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;CACX,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,IAAM,IAAI,GAAG;IAClB,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;CACX,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,IAAM,mBAAmB,GAAG,SAAA,CAAC,EAAI,EAAE,CAAA,GAAG,CAAC,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/index.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/index.d.ts new file mode 100644 index 000000000..4554d8a3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/index.d.ts @@ -0,0 +1 @@ +export * from "./jsSha256"; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/index.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/index.js new file mode 100644 index 000000000..a8f73a09f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/index.js @@ -0,0 +1,2 @@ +export * from "./jsSha256"; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/index.js.map b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/index.js.map new file mode 100644 index 000000000..030d79500 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/jsSha256.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/jsSha256.d.ts new file mode 100644 index 000000000..d813b2565 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/jsSha256.d.ts @@ -0,0 +1,12 @@ +import { Checksum, SourceData } from "@aws-sdk/types"; +export declare class Sha256 implements Checksum { + private readonly secret?; + private hash; + private outer?; + private error; + constructor(secret?: SourceData); + update(toHash: SourceData): void; + digestSync(): Uint8Array; + digest(): Promise; + reset(): void; +} diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/jsSha256.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/jsSha256.js new file mode 100644 index 000000000..fa40899f2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/jsSha256.js @@ -0,0 +1,82 @@ +import { __awaiter, __generator } from "tslib"; +import { BLOCK_SIZE } from "./constants"; +import { RawSha256 } from "./RawSha256"; +import { isEmptyData, convertToBuffer } from "@aws-crypto/util"; +var Sha256 = /** @class */ (function () { + function Sha256(secret) { + this.secret = secret; + this.hash = new RawSha256(); + this.reset(); + } + Sha256.prototype.update = function (toHash) { + if (isEmptyData(toHash) || this.error) { + return; + } + try { + this.hash.update(convertToBuffer(toHash)); + } + catch (e) { + this.error = e; + } + }; + /* This synchronous method keeps compatibility + * with the v2 aws-sdk. + */ + Sha256.prototype.digestSync = function () { + if (this.error) { + throw this.error; + } + if (this.outer) { + if (!this.outer.finished) { + this.outer.update(this.hash.digest()); + } + return this.outer.digest(); + } + return this.hash.digest(); + }; + /* The underlying digest method here is synchronous. + * To keep the same interface with the other hash functions + * the default is to expose this as an async method. + * However, it can sometimes be useful to have a sync method. + */ + Sha256.prototype.digest = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + return [2 /*return*/, this.digestSync()]; + }); + }); + }; + Sha256.prototype.reset = function () { + this.hash = new RawSha256(); + if (this.secret) { + this.outer = new RawSha256(); + var inner = bufferFromSecret(this.secret); + var outer = new Uint8Array(BLOCK_SIZE); + outer.set(inner); + for (var i = 0; i < BLOCK_SIZE; i++) { + inner[i] ^= 0x36; + outer[i] ^= 0x5c; + } + this.hash.update(inner); + this.outer.update(outer); + // overwrite the copied key in memory + for (var i = 0; i < inner.byteLength; i++) { + inner[i] = 0; + } + } + }; + return Sha256; +}()); +export { Sha256 }; +function bufferFromSecret(secret) { + var input = convertToBuffer(secret); + if (input.byteLength > BLOCK_SIZE) { + var bufferHash = new RawSha256(); + bufferHash.update(input); + input = bufferHash.digest(); + } + var buffer = new Uint8Array(BLOCK_SIZE); + buffer.set(input); + return buffer; +} +//# sourceMappingURL=jsSha256.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/jsSha256.js.map b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/jsSha256.js.map new file mode 100644 index 000000000..94fa4019f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/jsSha256.js.map @@ -0,0 +1 @@ +{"version":3,"file":"jsSha256.js","sourceRoot":"","sources":["../../src/jsSha256.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/knownHashes.fixture.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/knownHashes.fixture.d.ts new file mode 100644 index 000000000..d88034325 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/knownHashes.fixture.d.ts @@ -0,0 +1,5 @@ +export declare const hashTestVectors: Array<[Uint8Array, Uint8Array]>; +/** + * @see https://tools.ietf.org/html/rfc4231 + */ +export declare const hmacTestVectors: Array<[Uint8Array, Uint8Array, Uint8Array]>; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/knownHashes.fixture.js b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/knownHashes.fixture.js new file mode 100644 index 000000000..c2d266377 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/knownHashes.fixture.js @@ -0,0 +1,319 @@ +import { fromHex } from "@aws-sdk/util-hex-encoding"; +var millionChars = new Uint8Array(1000000); +for (var i = 0; i < 1000000; i++) { + millionChars[i] = 97; +} +export var hashTestVectors = [ + [ + Uint8Array.from([97, 98, 99]), + fromHex("ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") + ], + [ + new Uint8Array(0), + fromHex("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") + ], + [ + fromHex("61"), + fromHex("ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb") + ], + [ + fromHex("6161"), + fromHex("961b6dd3ede3cb8ecbaacbd68de040cd78eb2ed5889130cceb4c49268ea4d506") + ], + [ + fromHex("616161"), + fromHex("9834876dcfb05cb167a5c24953eba58c4ac89b1adf57f28f2f9d09af107ee8f0") + ], + [ + fromHex("61616161"), + fromHex("61be55a8e2f6b4e172338bddf184d6dbee29c98853e0a0485ecee7f27b9af0b4") + ], + [ + fromHex("6161616161"), + fromHex("ed968e840d10d2d313a870bc131a4e2c311d7ad09bdf32b3418147221f51a6e2") + ], + [ + fromHex("616161616161"), + fromHex("ed02457b5c41d964dbd2f2a609d63fe1bb7528dbe55e1abf5b52c249cd735797") + ], + [ + fromHex("61616161616161"), + fromHex("e46240714b5db3a23eee60479a623efba4d633d27fe4f03c904b9e219a7fbe60") + ], + [ + fromHex("6161616161616161"), + fromHex("1f3ce40415a2081fa3eee75fc39fff8e56c22270d1a978a7249b592dcebd20b4") + ], + [ + fromHex("616161616161616161"), + fromHex("f2aca93b80cae681221f0445fa4e2cae8a1f9f8fa1e1741d9639caad222f537d") + ], + [ + fromHex("61616161616161616161"), + fromHex("bf2cb58a68f684d95a3b78ef8f661c9a4e5b09e82cc8f9cc88cce90528caeb27") + ], + [ + fromHex("6161616161616161616161"), + fromHex("28cb017dfc99073aa1b47c1b30f413e3ce774c4991eb4158de50f9dbb36d8043") + ], + [ + fromHex("616161616161616161616161"), + fromHex("f24abc34b13fade76e805799f71187da6cd90b9cac373ae65ed57f143bd664e5") + ], + [ + fromHex("61616161616161616161616161"), + fromHex("a689d786e81340e45511dec6c7ab2d978434e5db123362450fe10cfac70d19d0") + ], + [ + fromHex("6161616161616161616161616161"), + fromHex("82cab7df0abfb9d95dca4e5937ce2968c798c726fea48c016bf9763221efda13") + ], + [ + fromHex("616161616161616161616161616161"), + fromHex("ef2df0b539c6c23de0f4cbe42648c301ae0e22e887340a4599fb4ef4e2678e48") + ], + [ + fromHex("61616161616161616161616161616161"), + fromHex("0c0beacef8877bbf2416eb00f2b5dc96354e26dd1df5517320459b1236860f8c") + ], + [ + fromHex("6161616161616161616161616161616161"), + fromHex("b860666ee2966dd8f903be44ee605c6e1366f926d9f17a8f49937d11624eb99d") + ], + [ + fromHex("616161616161616161616161616161616161"), + fromHex("c926defaaa3d13eda2fc63a553bb7fb7326bece6e7cb67ca5296e4727d89bab4") + ], + [ + fromHex("61616161616161616161616161616161616161"), + fromHex("a0b4aaab8a966e2193ba172d68162c4656860197f256b5f45f0203397ff3f99c") + ], + [ + fromHex("6161616161616161616161616161616161616161"), + fromHex("42492da06234ad0ac76f5d5debdb6d1ae027cffbe746a1c13b89bb8bc0139137") + ], + [ + fromHex("616161616161616161616161616161616161616161"), + fromHex("7df8e299c834de198e264c3e374bc58ecd9382252a705c183beb02f275571e3b") + ], + [ + fromHex("61616161616161616161616161616161616161616161"), + fromHex("ec7c494df6d2a7ea36668d656e6b8979e33641bfea378c15038af3964db057a3") + ], + [ + fromHex("6161616161616161616161616161616161616161616161"), + fromHex("897d3e95b65f26676081f8b9f3a98b6ee4424566303e8d4e7c7522ebae219eab") + ], + [ + fromHex("616161616161616161616161616161616161616161616161"), + fromHex("09f61f8d9cd65e6a0c258087c485b6293541364e42bd97b2d7936580c8aa3c54") + ], + [ + fromHex("61616161616161616161616161616161616161616161616161"), + fromHex("2f521e2a7d0bd812cbc035f4ed6806eb8d851793b04ba147e8f66b72f5d1f20f") + ], + [ + fromHex("6161616161616161616161616161616161616161616161616161"), + fromHex("9976d549a25115dab4e36d0c1fb8f31cb07da87dd83275977360eb7dc09e88de") + ], + [ + fromHex("616161616161616161616161616161616161616161616161616161"), + fromHex("cc0616e61cbd6e8e5e34e9fb2d320f37de915820206f5696c31f1fbd24aa16de") + ], + [ + fromHex("61616161616161616161616161616161616161616161616161616161"), + fromHex("9c547cb8115a44883b9f70ba68f75117cd55359c92611875e386f8af98c172ab") + ], + [ + fromHex("6161616161616161616161616161616161616161616161616161616161"), + fromHex("6913c9c7fd42fe23df8b6bcd4dbaf1c17748948d97f2980b432319c39eddcf6c") + ], + [ + fromHex("616161616161616161616161616161616161616161616161616161616161"), + fromHex("3a54fc0cbc0b0ef48b6507b7788096235d10292dd3ae24e22f5aa062d4f9864a") + ], + [ + fromHex("61616161616161616161616161616161616161616161616161616161616161"), + fromHex("61c60b487d1a921e0bcc9bf853dda0fb159b30bf57b2e2d2c753b00be15b5a09") + ], + [ + fromHex("6161616161616161616161616161616161616161616161616161616161616161"), + fromHex("3ba3f5f43b92602683c19aee62a20342b084dd5971ddd33808d81a328879a547") + ], + [ + fromHex("616161616161616161616161616161616161616161616161616161616161616161"), + fromHex("852785c805c77e71a22340a54e9d95933ed49121e7d2bf3c2d358854bc1359ea") + ], + [ + fromHex("61616161616161616161616161616161616161616161616161616161616161616161"), + fromHex("a27c896c4859204843166af66f0e902b9c3b3ed6d2fd13d435abc020065c526f") + ], + [ + fromHex("6161616161616161616161616161616161616161616161616161616161616161616161"), + fromHex("629362afc62c74497caed2272e30f8125ecd0965f8d8d7cfc4e260f7f8dd319d") + ], + [ + fromHex("616161616161616161616161616161616161616161616161616161616161616161616161"), + fromHex("22c1d24bcd03e9aee9832efccd6da613fc702793178e5f12c945c7b67ddda933") + ], + [ + fromHex("61616161616161616161616161616161616161616161616161616161616161616161616161"), + fromHex("21ec055b38ce759cd4d0f477e9bdec2c5b8199945db4439bae334a964df6246c") + ], + [ + fromHex("6161616161616161616161616161616161616161616161616161616161616161616161616161"), + fromHex("365a9c3e2c2af0a56e47a9dac51c2c5381bf8f41273bad3175e0e619126ad087") + ], + [ + fromHex("616161616161616161616161616161616161616161616161616161616161616161616161616161"), + fromHex("b4d5e56e929ba4cda349e9274e3603d0be246b82016bca20f363963c5f2d6845") + ], + [ + fromHex("61616161616161616161616161616161616161616161616161616161616161616161616161616161"), + fromHex("e33cdf9c7f7120b98e8c78408953e07f2ecd183006b5606df349b4c212acf43e") + ], + [ + fromHex("6161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + fromHex("c0f8bd4dbc2b0c03107c1c37913f2a7501f521467f45dd0fef6958e9a4692719") + ], + [ + fromHex("616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + fromHex("7a538607fdaab9296995929f451565bbb8142e1844117322aafd2b3d76b01aff") + ], + [ + fromHex("61616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + fromHex("66d34fba71f8f450f7e45598853e53bfc23bbd129027cbb131a2f4ffd7878cd0") + ], + [ + fromHex("6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + fromHex("16849877c6c21ef0bfa68e4f6747300ddb171b170b9f00e189edc4c2fc4db93e") + ], + [ + fromHex("616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + fromHex("52789e3423b72beeb898456a4f49662e46b0cbb960784c5ef4b1399d327e7c27") + ], + [ + fromHex("61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + fromHex("6643110c5628fff59edf76d82d5bf573bf800f16a4d65dfb1e5d6f1a46296d0b") + ], + [ + fromHex("6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + fromHex("11eaed932c6c6fddfc2efc394e609facf4abe814fc6180d03b14fce13a07d0e5") + ], + [ + fromHex("616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + fromHex("97daac0ee9998dfcad6c9c0970da5ca411c86233a944c25b47566f6a7bc1ddd5") + ], + [ + fromHex("61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + fromHex("8f9bec6a62dd28ebd36d1227745592de6658b36974a3bb98a4c582f683ea6c42") + ], + [ + fromHex("6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + fromHex("160b4e433e384e05e537dc59b467f7cb2403f0214db15c5db58862a3f1156d2e") + ], + [ + fromHex("616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + fromHex("bfc5fe0e360152ca98c50fab4ed7e3078c17debc2917740d5000913b686ca129") + ], + [ + fromHex("61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + fromHex("6c1b3dc7a706b9dc81352a6716b9c666c608d8626272c64b914ab05572fc6e84") + ], + [ + fromHex("6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + fromHex("abe346a7259fc90b4c27185419628e5e6af6466b1ae9b5446cac4bfc26cf05c4") + ], + [ + fromHex("616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + fromHex("a3f01b6939256127582ac8ae9fb47a382a244680806a3f613a118851c1ca1d47") + ], + [ + fromHex("61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + fromHex("9f4390f8d30c2dd92ec9f095b65e2b9ae9b0a925a5258e241c9f1e910f734318") + ], + [ + fromHex("6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + fromHex("b35439a4ac6f0948b6d6f9e3c6af0f5f590ce20f1bde7090ef7970686ec6738a") + ], + [ + fromHex("616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + fromHex("f13b2d724659eb3bf47f2dd6af1accc87b81f09f59f2b75e5c0bed6589dfe8c6") + ], + [ + fromHex("61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + fromHex("d5c039b748aa64665782974ec3dc3025c042edf54dcdc2b5de31385b094cb678") + ], + [ + fromHex("6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + fromHex("111bb261277afd65f0744b247cd3e47d386d71563d0ed995517807d5ebd4fba3") + ], + [ + fromHex("616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + fromHex("11ee391211c6256460b6ed375957fadd8061cafbb31daf967db875aebd5aaad4") + ], + [ + fromHex("61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + fromHex("35d5fc17cfbbadd00f5e710ada39f194c5ad7c766ad67072245f1fad45f0f530") + ], + [ + fromHex("6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + fromHex("f506898cc7c2e092f9eb9fadae7ba50383f5b46a2a4fe5597dbb553a78981268") + ], + [ + fromHex("616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + fromHex("7d3e74a05d7db15bce4ad9ec0658ea98e3f06eeecf16b4c6fff2da457ddc2f34") + ], + [ + fromHex("61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"), + fromHex("ffe054fe7ae0cb6dc65c3af9b61d5209f439851db43d0ba5997337df154668eb") + ], + [ + fromHex("de188941a3375d3a8a061e67576e926dc71a7fa3f0cceb97452b4d3227965f9ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629e"), + fromHex("038051e9c324393bd1ca1978dd0952c2aa3742ca4f1bd5cd4611cea83892d382") + ], + [ + millionChars, + fromHex("cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") + ], + [ + fromHex("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), + fromHex("45ad4b37c6e2fc0a2cfcc1b5da524132ec707615c2cae1dbbc43c97aa521db81") + ] +]; +/** + * @see https://tools.ietf.org/html/rfc4231 + */ +export var hmacTestVectors = [ + [ + fromHex("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"), + fromHex("4869205468657265"), + fromHex("b0344c61d8db38535ca8afceaf0bf12b881dc200c9833da726e9376c2e32cff7") + ], + [ + fromHex("4a656665"), + fromHex("7768617420646f2079612077616e7420666f72206e6f7468696e673f"), + fromHex("5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843") + ], + [ + fromHex("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), + fromHex("dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"), + fromHex("773ea91e36800e46854db8ebd09181a72959098b3ef8c122d9635514ced565fe") + ], + [ + fromHex("0102030405060708090a0b0c0d0e0f10111213141516171819"), + fromHex("cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"), + fromHex("82558a389a443c0ea4cc819899f2083a85f0faa3e578f8077a2e3ff46729665b") + ], + [ + fromHex("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), + fromHex("54657374205573696e67204c6172676572205468616e20426c6f636b2d53697a65204b6579202d2048617368204b6579204669727374"), + fromHex("60e431591ee0b67f0d8a26aacbf5b77f8e0bc6213728c5140546040f0ee37f54") + ], + [ + fromHex("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), + fromHex("5468697320697320612074657374207573696e672061206c6172676572207468616e20626c6f636b2d73697a65206b657920616e642061206c6172676572207468616e20626c6f636b2d73697a6520646174612e20546865206b6579206e6565647320746f20626520686173686564206265666f7265206265696e6720757365642062792074686520484d414320616c676f726974686d2e"), + fromHex("9b09ffa71b942fcb27635fbcd5b0e944bfdc63644f0713938a7f51535c3a35e2") + ] +]; +//# sourceMappingURL=knownHashes.fixture.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/knownHashes.fixture.js.map b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/knownHashes.fixture.js.map new file mode 100644 index 000000000..1232159d3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/build/module/knownHashes.fixture.js.map @@ -0,0 +1 @@ +{"version":3,"file":"knownHashes.fixture.js","sourceRoot":"","sources":["../../src/knownHashes.fixture.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/package.json b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/package.json new file mode 100644 index 000000000..e8ef52d70 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/package.json @@ -0,0 +1,32 @@ +{ + "name": "@aws-crypto/sha256-js", + "version": "5.2.0", + "scripts": { + "prepublishOnly": "tsc -p tsconfig.json && tsc -p tsconfig.module.json", + "pretest": "tsc -p tsconfig.test.json", + "test": "mocha --require ts-node/register test/**/*test.ts" + }, + "main": "./build/main/index.js", + "module": "./build/module/index.js", + "types": "./build/main/index.d.ts", + "repository": { + "type": "git", + "url": "git@github.com:aws/aws-sdk-js-crypto-helpers.git" + }, + "author": { + "name": "AWS Crypto Tools Team", + "email": "aws-cryptools@amazon.com", + "url": "https://docs.aws.amazon.com/aws-crypto-tools/index.html?id=docs_gateway#lang/en_us" + }, + "homepage": "https://github.com/aws/aws-sdk-js-crypto-helpers/tree/master/packages/sha256-js", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "gitHead": "c11b171b35ec5c093364f0e0d8dc4ab1af68e748" +} diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/src/RawSha256.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/src/RawSha256.ts new file mode 100644 index 000000000..f4a385c09 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/src/RawSha256.ts @@ -0,0 +1,164 @@ +import { + BLOCK_SIZE, + DIGEST_LENGTH, + INIT, + KEY, + MAX_HASHABLE_LENGTH +} from "./constants"; + +/** + * @internal + */ +export class RawSha256 { + private state: Int32Array = Int32Array.from(INIT); + private temp: Int32Array = new Int32Array(64); + private buffer: Uint8Array = new Uint8Array(64); + private bufferLength: number = 0; + private bytesHashed: number = 0; + + /** + * @internal + */ + finished: boolean = false; + + update(data: Uint8Array): void { + if (this.finished) { + throw new Error("Attempted to update an already finished hash."); + } + + let position = 0; + let { byteLength } = data; + this.bytesHashed += byteLength; + + if (this.bytesHashed * 8 > MAX_HASHABLE_LENGTH) { + throw new Error("Cannot hash more than 2^53 - 1 bits"); + } + + while (byteLength > 0) { + this.buffer[this.bufferLength++] = data[position++]; + byteLength--; + + if (this.bufferLength === BLOCK_SIZE) { + this.hashBuffer(); + this.bufferLength = 0; + } + } + } + + digest(): Uint8Array { + if (!this.finished) { + const bitsHashed = this.bytesHashed * 8; + const bufferView = new DataView( + this.buffer.buffer, + this.buffer.byteOffset, + this.buffer.byteLength + ); + + const undecoratedLength = this.bufferLength; + bufferView.setUint8(this.bufferLength++, 0x80); + + // Ensure the final block has enough room for the hashed length + if (undecoratedLength % BLOCK_SIZE >= BLOCK_SIZE - 8) { + for (let i = this.bufferLength; i < BLOCK_SIZE; i++) { + bufferView.setUint8(i, 0); + } + this.hashBuffer(); + this.bufferLength = 0; + } + + for (let i = this.bufferLength; i < BLOCK_SIZE - 8; i++) { + bufferView.setUint8(i, 0); + } + bufferView.setUint32( + BLOCK_SIZE - 8, + Math.floor(bitsHashed / 0x100000000), + true + ); + bufferView.setUint32(BLOCK_SIZE - 4, bitsHashed); + + this.hashBuffer(); + + this.finished = true; + } + + // The value in state is little-endian rather than big-endian, so flip + // each word into a new Uint8Array + const out = new Uint8Array(DIGEST_LENGTH); + for (let i = 0; i < 8; i++) { + out[i * 4] = (this.state[i] >>> 24) & 0xff; + out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff; + out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff; + out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff; + } + + return out; + } + + private hashBuffer(): void { + const { buffer, state } = this; + + let state0 = state[0], + state1 = state[1], + state2 = state[2], + state3 = state[3], + state4 = state[4], + state5 = state[5], + state6 = state[6], + state7 = state[7]; + + for (let i = 0; i < BLOCK_SIZE; i++) { + if (i < 16) { + this.temp[i] = + ((buffer[i * 4] & 0xff) << 24) | + ((buffer[i * 4 + 1] & 0xff) << 16) | + ((buffer[i * 4 + 2] & 0xff) << 8) | + (buffer[i * 4 + 3] & 0xff); + } else { + let u = this.temp[i - 2]; + const t1 = + ((u >>> 17) | (u << 15)) ^ ((u >>> 19) | (u << 13)) ^ (u >>> 10); + + u = this.temp[i - 15]; + const t2 = + ((u >>> 7) | (u << 25)) ^ ((u >>> 18) | (u << 14)) ^ (u >>> 3); + + this.temp[i] = + ((t1 + this.temp[i - 7]) | 0) + ((t2 + this.temp[i - 16]) | 0); + } + + const t1 = + ((((((state4 >>> 6) | (state4 << 26)) ^ + ((state4 >>> 11) | (state4 << 21)) ^ + ((state4 >>> 25) | (state4 << 7))) + + ((state4 & state5) ^ (~state4 & state6))) | + 0) + + ((state7 + ((KEY[i] + this.temp[i]) | 0)) | 0)) | + 0; + + const t2 = + ((((state0 >>> 2) | (state0 << 30)) ^ + ((state0 >>> 13) | (state0 << 19)) ^ + ((state0 >>> 22) | (state0 << 10))) + + ((state0 & state1) ^ (state0 & state2) ^ (state1 & state2))) | + 0; + + state7 = state6; + state6 = state5; + state5 = state4; + state4 = (state3 + t1) | 0; + state3 = state2; + state2 = state1; + state1 = state0; + state0 = (t1 + t2) | 0; + } + + state[0] += state0; + state[1] += state1; + state[2] += state2; + state[3] += state3; + state[4] += state4; + state[5] += state5; + state[6] += state6; + state[7] += state7; + } +} diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/src/constants.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/src/constants.ts new file mode 100644 index 000000000..8cede572f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/src/constants.ts @@ -0,0 +1,98 @@ +/** + * @internal + */ +export const BLOCK_SIZE: number = 64; + +/** + * @internal + */ +export const DIGEST_LENGTH: number = 32; + +/** + * @internal + */ +export const KEY = new Uint32Array([ + 0x428a2f98, + 0x71374491, + 0xb5c0fbcf, + 0xe9b5dba5, + 0x3956c25b, + 0x59f111f1, + 0x923f82a4, + 0xab1c5ed5, + 0xd807aa98, + 0x12835b01, + 0x243185be, + 0x550c7dc3, + 0x72be5d74, + 0x80deb1fe, + 0x9bdc06a7, + 0xc19bf174, + 0xe49b69c1, + 0xefbe4786, + 0x0fc19dc6, + 0x240ca1cc, + 0x2de92c6f, + 0x4a7484aa, + 0x5cb0a9dc, + 0x76f988da, + 0x983e5152, + 0xa831c66d, + 0xb00327c8, + 0xbf597fc7, + 0xc6e00bf3, + 0xd5a79147, + 0x06ca6351, + 0x14292967, + 0x27b70a85, + 0x2e1b2138, + 0x4d2c6dfc, + 0x53380d13, + 0x650a7354, + 0x766a0abb, + 0x81c2c92e, + 0x92722c85, + 0xa2bfe8a1, + 0xa81a664b, + 0xc24b8b70, + 0xc76c51a3, + 0xd192e819, + 0xd6990624, + 0xf40e3585, + 0x106aa070, + 0x19a4c116, + 0x1e376c08, + 0x2748774c, + 0x34b0bcb5, + 0x391c0cb3, + 0x4ed8aa4a, + 0x5b9cca4f, + 0x682e6ff3, + 0x748f82ee, + 0x78a5636f, + 0x84c87814, + 0x8cc70208, + 0x90befffa, + 0xa4506ceb, + 0xbef9a3f7, + 0xc67178f2 +]); + +/** + * @internal + */ +export const INIT = [ + 0x6a09e667, + 0xbb67ae85, + 0x3c6ef372, + 0xa54ff53a, + 0x510e527f, + 0x9b05688c, + 0x1f83d9ab, + 0x5be0cd19 +]; + +/** + * @internal + */ +export const MAX_HASHABLE_LENGTH = 2 ** 53 - 1; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/src/index.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/src/index.ts new file mode 100644 index 000000000..4554d8a3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/src/index.ts @@ -0,0 +1 @@ +export * from "./jsSha256"; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/src/jsSha256.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/src/jsSha256.ts new file mode 100644 index 000000000..f7bd9934f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/src/jsSha256.ts @@ -0,0 +1,94 @@ +import { BLOCK_SIZE } from "./constants"; +import { RawSha256 } from "./RawSha256"; +import { Checksum, SourceData } from "@aws-sdk/types"; +import { isEmptyData, convertToBuffer } from "@aws-crypto/util"; + +export class Sha256 implements Checksum { + private readonly secret?: SourceData; + private hash: RawSha256; + private outer?: RawSha256; + private error: any; + + constructor(secret?: SourceData) { + this.secret = secret; + this.hash = new RawSha256(); + this.reset(); + } + + update(toHash: SourceData): void { + if (isEmptyData(toHash) || this.error) { + return; + } + + try { + this.hash.update(convertToBuffer(toHash)); + } catch (e) { + this.error = e; + } + } + + /* This synchronous method keeps compatibility + * with the v2 aws-sdk. + */ + digestSync(): Uint8Array { + if (this.error) { + throw this.error; + } + + if (this.outer) { + if (!this.outer.finished) { + this.outer.update(this.hash.digest()); + } + + return this.outer.digest(); + } + + return this.hash.digest(); + } + + /* The underlying digest method here is synchronous. + * To keep the same interface with the other hash functions + * the default is to expose this as an async method. + * However, it can sometimes be useful to have a sync method. + */ + async digest(): Promise { + return this.digestSync(); + } + + reset(): void { + this.hash = new RawSha256(); + if (this.secret) { + this.outer = new RawSha256(); + const inner = bufferFromSecret(this.secret); + const outer = new Uint8Array(BLOCK_SIZE); + outer.set(inner); + + for (let i = 0; i < BLOCK_SIZE; i++) { + inner[i] ^= 0x36; + outer[i] ^= 0x5c; + } + + this.hash.update(inner); + this.outer.update(outer); + + // overwrite the copied key in memory + for (let i = 0; i < inner.byteLength; i++) { + inner[i] = 0; + } + } + } +} + +function bufferFromSecret(secret: SourceData): Uint8Array { + let input = convertToBuffer(secret); + + if (input.byteLength > BLOCK_SIZE) { + const bufferHash = new RawSha256(); + bufferHash.update(input); + input = bufferHash.digest(); + } + + const buffer = new Uint8Array(BLOCK_SIZE); + buffer.set(input); + return buffer; +} diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/src/knownHashes.fixture.ts b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/src/knownHashes.fixture.ts new file mode 100644 index 000000000..c83dae288 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/src/knownHashes.fixture.ts @@ -0,0 +1,401 @@ +import { fromHex } from "@aws-sdk/util-hex-encoding"; + +const millionChars = new Uint8Array(1000000); +for (let i = 0; i < 1000000; i++) { + millionChars[i] = 97; +} + +export const hashTestVectors: Array<[Uint8Array, Uint8Array]> = [ + [ + Uint8Array.from([97, 98, 99]), + fromHex("ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") + ], + [ + new Uint8Array(0), + fromHex("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") + ], + [ + fromHex("61"), + fromHex("ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb") + ], + [ + fromHex("6161"), + fromHex("961b6dd3ede3cb8ecbaacbd68de040cd78eb2ed5889130cceb4c49268ea4d506") + ], + [ + fromHex("616161"), + fromHex("9834876dcfb05cb167a5c24953eba58c4ac89b1adf57f28f2f9d09af107ee8f0") + ], + [ + fromHex("61616161"), + fromHex("61be55a8e2f6b4e172338bddf184d6dbee29c98853e0a0485ecee7f27b9af0b4") + ], + [ + fromHex("6161616161"), + fromHex("ed968e840d10d2d313a870bc131a4e2c311d7ad09bdf32b3418147221f51a6e2") + ], + [ + fromHex("616161616161"), + fromHex("ed02457b5c41d964dbd2f2a609d63fe1bb7528dbe55e1abf5b52c249cd735797") + ], + [ + fromHex("61616161616161"), + fromHex("e46240714b5db3a23eee60479a623efba4d633d27fe4f03c904b9e219a7fbe60") + ], + [ + fromHex("6161616161616161"), + fromHex("1f3ce40415a2081fa3eee75fc39fff8e56c22270d1a978a7249b592dcebd20b4") + ], + [ + fromHex("616161616161616161"), + fromHex("f2aca93b80cae681221f0445fa4e2cae8a1f9f8fa1e1741d9639caad222f537d") + ], + [ + fromHex("61616161616161616161"), + fromHex("bf2cb58a68f684d95a3b78ef8f661c9a4e5b09e82cc8f9cc88cce90528caeb27") + ], + [ + fromHex("6161616161616161616161"), + fromHex("28cb017dfc99073aa1b47c1b30f413e3ce774c4991eb4158de50f9dbb36d8043") + ], + [ + fromHex("616161616161616161616161"), + fromHex("f24abc34b13fade76e805799f71187da6cd90b9cac373ae65ed57f143bd664e5") + ], + [ + fromHex("61616161616161616161616161"), + fromHex("a689d786e81340e45511dec6c7ab2d978434e5db123362450fe10cfac70d19d0") + ], + [ + fromHex("6161616161616161616161616161"), + fromHex("82cab7df0abfb9d95dca4e5937ce2968c798c726fea48c016bf9763221efda13") + ], + [ + fromHex("616161616161616161616161616161"), + fromHex("ef2df0b539c6c23de0f4cbe42648c301ae0e22e887340a4599fb4ef4e2678e48") + ], + [ + fromHex("61616161616161616161616161616161"), + fromHex("0c0beacef8877bbf2416eb00f2b5dc96354e26dd1df5517320459b1236860f8c") + ], + [ + fromHex("6161616161616161616161616161616161"), + fromHex("b860666ee2966dd8f903be44ee605c6e1366f926d9f17a8f49937d11624eb99d") + ], + [ + fromHex("616161616161616161616161616161616161"), + fromHex("c926defaaa3d13eda2fc63a553bb7fb7326bece6e7cb67ca5296e4727d89bab4") + ], + [ + fromHex("61616161616161616161616161616161616161"), + fromHex("a0b4aaab8a966e2193ba172d68162c4656860197f256b5f45f0203397ff3f99c") + ], + [ + fromHex("6161616161616161616161616161616161616161"), + fromHex("42492da06234ad0ac76f5d5debdb6d1ae027cffbe746a1c13b89bb8bc0139137") + ], + [ + fromHex("616161616161616161616161616161616161616161"), + fromHex("7df8e299c834de198e264c3e374bc58ecd9382252a705c183beb02f275571e3b") + ], + [ + fromHex("61616161616161616161616161616161616161616161"), + fromHex("ec7c494df6d2a7ea36668d656e6b8979e33641bfea378c15038af3964db057a3") + ], + [ + fromHex("6161616161616161616161616161616161616161616161"), + fromHex("897d3e95b65f26676081f8b9f3a98b6ee4424566303e8d4e7c7522ebae219eab") + ], + [ + fromHex("616161616161616161616161616161616161616161616161"), + fromHex("09f61f8d9cd65e6a0c258087c485b6293541364e42bd97b2d7936580c8aa3c54") + ], + [ + fromHex("61616161616161616161616161616161616161616161616161"), + fromHex("2f521e2a7d0bd812cbc035f4ed6806eb8d851793b04ba147e8f66b72f5d1f20f") + ], + [ + fromHex("6161616161616161616161616161616161616161616161616161"), + fromHex("9976d549a25115dab4e36d0c1fb8f31cb07da87dd83275977360eb7dc09e88de") + ], + [ + fromHex("616161616161616161616161616161616161616161616161616161"), + fromHex("cc0616e61cbd6e8e5e34e9fb2d320f37de915820206f5696c31f1fbd24aa16de") + ], + [ + fromHex("61616161616161616161616161616161616161616161616161616161"), + fromHex("9c547cb8115a44883b9f70ba68f75117cd55359c92611875e386f8af98c172ab") + ], + [ + fromHex("6161616161616161616161616161616161616161616161616161616161"), + fromHex("6913c9c7fd42fe23df8b6bcd4dbaf1c17748948d97f2980b432319c39eddcf6c") + ], + [ + fromHex("616161616161616161616161616161616161616161616161616161616161"), + fromHex("3a54fc0cbc0b0ef48b6507b7788096235d10292dd3ae24e22f5aa062d4f9864a") + ], + [ + fromHex("61616161616161616161616161616161616161616161616161616161616161"), + fromHex("61c60b487d1a921e0bcc9bf853dda0fb159b30bf57b2e2d2c753b00be15b5a09") + ], + [ + fromHex("6161616161616161616161616161616161616161616161616161616161616161"), + fromHex("3ba3f5f43b92602683c19aee62a20342b084dd5971ddd33808d81a328879a547") + ], + [ + fromHex( + "616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("852785c805c77e71a22340a54e9d95933ed49121e7d2bf3c2d358854bc1359ea") + ], + [ + fromHex( + "61616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("a27c896c4859204843166af66f0e902b9c3b3ed6d2fd13d435abc020065c526f") + ], + [ + fromHex( + "6161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("629362afc62c74497caed2272e30f8125ecd0965f8d8d7cfc4e260f7f8dd319d") + ], + [ + fromHex( + "616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("22c1d24bcd03e9aee9832efccd6da613fc702793178e5f12c945c7b67ddda933") + ], + [ + fromHex( + "61616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("21ec055b38ce759cd4d0f477e9bdec2c5b8199945db4439bae334a964df6246c") + ], + [ + fromHex( + "6161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("365a9c3e2c2af0a56e47a9dac51c2c5381bf8f41273bad3175e0e619126ad087") + ], + [ + fromHex( + "616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("b4d5e56e929ba4cda349e9274e3603d0be246b82016bca20f363963c5f2d6845") + ], + [ + fromHex( + "61616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("e33cdf9c7f7120b98e8c78408953e07f2ecd183006b5606df349b4c212acf43e") + ], + [ + fromHex( + "6161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("c0f8bd4dbc2b0c03107c1c37913f2a7501f521467f45dd0fef6958e9a4692719") + ], + [ + fromHex( + "616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("7a538607fdaab9296995929f451565bbb8142e1844117322aafd2b3d76b01aff") + ], + [ + fromHex( + "61616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("66d34fba71f8f450f7e45598853e53bfc23bbd129027cbb131a2f4ffd7878cd0") + ], + [ + fromHex( + "6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("16849877c6c21ef0bfa68e4f6747300ddb171b170b9f00e189edc4c2fc4db93e") + ], + [ + fromHex( + "616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("52789e3423b72beeb898456a4f49662e46b0cbb960784c5ef4b1399d327e7c27") + ], + [ + fromHex( + "61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("6643110c5628fff59edf76d82d5bf573bf800f16a4d65dfb1e5d6f1a46296d0b") + ], + [ + fromHex( + "6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("11eaed932c6c6fddfc2efc394e609facf4abe814fc6180d03b14fce13a07d0e5") + ], + [ + fromHex( + "616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("97daac0ee9998dfcad6c9c0970da5ca411c86233a944c25b47566f6a7bc1ddd5") + ], + [ + fromHex( + "61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("8f9bec6a62dd28ebd36d1227745592de6658b36974a3bb98a4c582f683ea6c42") + ], + [ + fromHex( + "6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("160b4e433e384e05e537dc59b467f7cb2403f0214db15c5db58862a3f1156d2e") + ], + [ + fromHex( + "616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("bfc5fe0e360152ca98c50fab4ed7e3078c17debc2917740d5000913b686ca129") + ], + [ + fromHex( + "61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("6c1b3dc7a706b9dc81352a6716b9c666c608d8626272c64b914ab05572fc6e84") + ], + [ + fromHex( + "6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("abe346a7259fc90b4c27185419628e5e6af6466b1ae9b5446cac4bfc26cf05c4") + ], + [ + fromHex( + "616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("a3f01b6939256127582ac8ae9fb47a382a244680806a3f613a118851c1ca1d47") + ], + [ + fromHex( + "61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("9f4390f8d30c2dd92ec9f095b65e2b9ae9b0a925a5258e241c9f1e910f734318") + ], + [ + fromHex( + "6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("b35439a4ac6f0948b6d6f9e3c6af0f5f590ce20f1bde7090ef7970686ec6738a") + ], + [ + fromHex( + "616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("f13b2d724659eb3bf47f2dd6af1accc87b81f09f59f2b75e5c0bed6589dfe8c6") + ], + [ + fromHex( + "61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("d5c039b748aa64665782974ec3dc3025c042edf54dcdc2b5de31385b094cb678") + ], + [ + fromHex( + "6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("111bb261277afd65f0744b247cd3e47d386d71563d0ed995517807d5ebd4fba3") + ], + [ + fromHex( + "616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("11ee391211c6256460b6ed375957fadd8061cafbb31daf967db875aebd5aaad4") + ], + [ + fromHex( + "61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("35d5fc17cfbbadd00f5e710ada39f194c5ad7c766ad67072245f1fad45f0f530") + ], + [ + fromHex( + "6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("f506898cc7c2e092f9eb9fadae7ba50383f5b46a2a4fe5597dbb553a78981268") + ], + [ + fromHex( + "616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("7d3e74a05d7db15bce4ad9ec0658ea98e3f06eeecf16b4c6fff2da457ddc2f34") + ], + [ + fromHex( + "61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("ffe054fe7ae0cb6dc65c3af9b61d5209f439851db43d0ba5997337df154668eb") + ], + [ + fromHex( + "de188941a3375d3a8a061e67576e926dc71a7fa3f0cceb97452b4d3227965f9ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629e" + ), + fromHex("038051e9c324393bd1ca1978dd0952c2aa3742ca4f1bd5cd4611cea83892d382") + ], + [ + millionChars, + fromHex("cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") + ], + [ + fromHex( + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + ), + fromHex("45ad4b37c6e2fc0a2cfcc1b5da524132ec707615c2cae1dbbc43c97aa521db81") + ] +]; + +/** + * @see https://tools.ietf.org/html/rfc4231 + */ +export const hmacTestVectors: Array<[Uint8Array, Uint8Array, Uint8Array]> = [ + [ + fromHex("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"), + fromHex("4869205468657265"), + fromHex("b0344c61d8db38535ca8afceaf0bf12b881dc200c9833da726e9376c2e32cff7") + ], + [ + fromHex("4a656665"), + fromHex("7768617420646f2079612077616e7420666f72206e6f7468696e673f"), + fromHex("5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843") + ], + [ + fromHex("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), + fromHex( + "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd" + ), + fromHex("773ea91e36800e46854db8ebd09181a72959098b3ef8c122d9635514ced565fe") + ], + [ + fromHex("0102030405060708090a0b0c0d0e0f10111213141516171819"), + fromHex( + "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd" + ), + fromHex("82558a389a443c0ea4cc819899f2083a85f0faa3e578f8077a2e3ff46729665b") + ], + [ + fromHex( + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + ), + fromHex( + "54657374205573696e67204c6172676572205468616e20426c6f636b2d53697a65204b6579202d2048617368204b6579204669727374" + ), + fromHex("60e431591ee0b67f0d8a26aacbf5b77f8e0bc6213728c5140546040f0ee37f54") + ], + [ + fromHex( + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + ), + fromHex( + "5468697320697320612074657374207573696e672061206c6172676572207468616e20626c6f636b2d73697a65206b657920616e642061206c6172676572207468616e20626c6f636b2d73697a6520646174612e20546865206b6579206e6565647320746f20626520686173686564206265666f7265206265696e6720757365642062792074686520484d414320616c676f726974686d2e" + ), + fromHex("9b09ffa71b942fcb27635fbcd5b0e944bfdc63644f0713938a7f51535c3a35e2") + ] +]; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/tsconfig.json b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/tsconfig.json new file mode 100644 index 000000000..fb9aa95fc --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./build/main", + "lib": ["dom"], + }, + "include": ["src/**/*.ts"], + "exclude": ["node_modules/**"] +} diff --git a/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/tsconfig.module.json b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/tsconfig.module.json new file mode 100644 index 000000000..7d0cfddc0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/sha256-js/tsconfig.module.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig", + "compilerOptions": { + "outDir": "build/module", + "module": "esnext", + } +} diff --git a/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/CHANGELOG.md b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/CHANGELOG.md new file mode 100644 index 000000000..13023adf5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/CHANGELOG.md @@ -0,0 +1,66 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [5.2.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v5.1.0...v5.2.0) (2023-10-16) + +### Features + +- support ESM artifacts in all packages ([#752](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/752)) ([e930ffb](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/e930ffba5cfef66dd242049e7d514ced232c1e3b)) + +# [5.1.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v5.0.0...v5.1.0) (2023-09-22) + +### Bug Fixes + +- Update tsc to 2.x ([#735](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/735)) ([782e0de](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/782e0de9f5fef41f694130580a69d940894b6b8c)) + +# [5.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v4.0.1...v5.0.0) (2023-07-13) + +**Note:** Version bump only for package @aws-crypto/supports-web-crypto + +# [4.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v3.0.0...v4.0.0) (2023-02-20) + +**Note:** Version bump only for package @aws-crypto/supports-web-crypto + +# [3.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v2.0.2...v3.0.0) (2023-01-12) + +**Note:** Version bump only for package @aws-crypto/supports-web-crypto + +## [2.0.2](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v2.0.1...v2.0.2) (2022-09-07) + +**Note:** Version bump only for package @aws-crypto/supports-web-crypto + +# [2.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.2.2...v2.0.0) (2021-10-25) + +**Note:** Version bump only for package @aws-crypto/supports-web-crypto + +# [1.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/supports-web-crypto@1.0.0-alpha.0...@aws-crypto/supports-web-crypto@1.0.0) (2020-10-22) + +### Bug Fixes + +- replace `sourceRoot` -> `rootDir` in tsconfig ([#169](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/169)) ([d437167](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/d437167b51d1c56a4fcc2bb8a446b74a7e3b7e06)) + +# [1.0.0-alpha.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/supports-web-crypto@0.1.0-preview.4...@aws-crypto/supports-web-crypto@1.0.0-alpha.0) (2020-02-07) + +**Note:** Version bump only for package @aws-crypto/supports-web-crypto + +# [0.1.0-preview.4](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/supports-web-crypto@0.1.0-preview.2...@aws-crypto/supports-web-crypto@0.1.0-preview.4) (2020-01-16) + +### Bug Fixes + +- Changed package.json files to point to the right Git repo ([#9](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/9)) ([028245d](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/028245d72e642ca98d82226afb300eb154503c4a)), closes [#8](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/8) +- lerna version maintains package-lock ([#14](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/14)) ([2ef29e1](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/2ef29e13779703a5c9b32e93d18918fcb33b7272)), closes [#13](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/13) + +# [0.1.0-preview.3](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/supports-web-crypto@0.1.0-preview.2...@aws-crypto/supports-web-crypto@0.1.0-preview.3) (2019-11-15) + +### Bug Fixes + +- Changed package.json files to point to the right Git repo ([#9](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/9)) ([028245d](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/028245d72e642ca98d82226afb300eb154503c4a)), closes [#8](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/8) +- lerna version maintains package-lock ([#14](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/14)) ([2ef29e1](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/2ef29e13779703a5c9b32e93d18918fcb33b7272)), closes [#13](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/13) + +# [0.1.0-preview.2](https://github.com/aws/aws-javascript-crypto-helpers/compare/@aws-crypto/supports-web-crypto@0.1.0-preview.1...@aws-crypto/supports-web-crypto@0.1.0-preview.2) (2019-10-30) + +### Bug Fixes + +- remove /src/ from .npmignore (for sourcemaps) ([#5](https://github.com/aws/aws-javascript-crypto-helpers/issues/5)) ([ec52056](https://github.com/aws/aws-javascript-crypto-helpers/commit/ec52056)) diff --git a/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/LICENSE b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/README.md b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/README.md new file mode 100644 index 000000000..78913571a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/README.md @@ -0,0 +1,32 @@ +# @aws-crypto/supports-web-crypto + +Functions to check web crypto support for browsers. + +## Usage + +``` +import {supportsWebCrypto} from '@aws-crypto/supports-web-crypto'; + +if (supportsWebCrypto(window)) { + // window.crypto.subtle.encrypt will exist +} + +``` + +## supportsWebCrypto + +Used to make sure `window.crypto.subtle` exists and implements crypto functions +as well as a cryptographic secure random source exists. + +## supportsSecureRandom + +Used to make sure that a cryptographic secure random source exists. +Does not check for `window.crypto.subtle`. + +## supportsSubtleCrypto + +## supportsZeroByteGCM + +## Test + +`npm test` diff --git a/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/main/index.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/main/index.d.ts new file mode 100644 index 000000000..9725c9c29 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/main/index.d.ts @@ -0,0 +1 @@ +export * from "./supportsWebCrypto"; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/main/index.js b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/main/index.js new file mode 100644 index 000000000..cc4c93f7b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/main/index.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var tslib_1 = require("tslib"); +tslib_1.__exportStar(require("./supportsWebCrypto"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/main/index.js.map b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/main/index.js.map new file mode 100644 index 000000000..df0dd2c9f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/main/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,8DAAoC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/main/supportsWebCrypto.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/main/supportsWebCrypto.d.ts new file mode 100644 index 000000000..f2723dc61 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/main/supportsWebCrypto.d.ts @@ -0,0 +1,4 @@ +export declare function supportsWebCrypto(window: Window): boolean; +export declare function supportsSecureRandom(window: Window): boolean; +export declare function supportsSubtleCrypto(subtle: SubtleCrypto): boolean; +export declare function supportsZeroByteGCM(subtle: SubtleCrypto): Promise; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/main/supportsWebCrypto.js b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/main/supportsWebCrypto.js new file mode 100644 index 000000000..378f31e23 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/main/supportsWebCrypto.js @@ -0,0 +1,69 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.supportsZeroByteGCM = exports.supportsSubtleCrypto = exports.supportsSecureRandom = exports.supportsWebCrypto = void 0; +var tslib_1 = require("tslib"); +var subtleCryptoMethods = [ + "decrypt", + "digest", + "encrypt", + "exportKey", + "generateKey", + "importKey", + "sign", + "verify" +]; +function supportsWebCrypto(window) { + if (supportsSecureRandom(window) && + typeof window.crypto.subtle === "object") { + var subtle = window.crypto.subtle; + return supportsSubtleCrypto(subtle); + } + return false; +} +exports.supportsWebCrypto = supportsWebCrypto; +function supportsSecureRandom(window) { + if (typeof window === "object" && typeof window.crypto === "object") { + var getRandomValues = window.crypto.getRandomValues; + return typeof getRandomValues === "function"; + } + return false; +} +exports.supportsSecureRandom = supportsSecureRandom; +function supportsSubtleCrypto(subtle) { + return (subtle && + subtleCryptoMethods.every(function (methodName) { return typeof subtle[methodName] === "function"; })); +} +exports.supportsSubtleCrypto = supportsSubtleCrypto; +function supportsZeroByteGCM(subtle) { + return tslib_1.__awaiter(this, void 0, void 0, function () { + var key, zeroByteAuthTag, _a; + return tslib_1.__generator(this, function (_b) { + switch (_b.label) { + case 0: + if (!supportsSubtleCrypto(subtle)) + return [2 /*return*/, false]; + _b.label = 1; + case 1: + _b.trys.push([1, 4, , 5]); + return [4 /*yield*/, subtle.generateKey({ name: "AES-GCM", length: 128 }, false, ["encrypt"])]; + case 2: + key = _b.sent(); + return [4 /*yield*/, subtle.encrypt({ + name: "AES-GCM", + iv: new Uint8Array(Array(12)), + additionalData: new Uint8Array(Array(16)), + tagLength: 128 + }, key, new Uint8Array(0))]; + case 3: + zeroByteAuthTag = _b.sent(); + return [2 /*return*/, zeroByteAuthTag.byteLength === 16]; + case 4: + _a = _b.sent(); + return [2 /*return*/, false]; + case 5: return [2 /*return*/]; + } + }); + }); +} +exports.supportsZeroByteGCM = supportsZeroByteGCM; +//# sourceMappingURL=supportsWebCrypto.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/main/supportsWebCrypto.js.map b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/main/supportsWebCrypto.js.map new file mode 100644 index 000000000..1cc0ea36f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/main/supportsWebCrypto.js.map @@ -0,0 +1 @@ +{"version":3,"file":"supportsWebCrypto.js","sourceRoot":"","sources":["../../src/supportsWebCrypto.ts"],"names":[],"mappings":";;;;AAUA,IAAM,mBAAmB,GAA8B;IACrD,SAAS;IACT,QAAQ;IACR,SAAS;IACT,WAAW;IACX,aAAa;IACb,WAAW;IACX,MAAM;IACN,QAAQ;CACT,CAAC;AAEF,SAAgB,iBAAiB,CAAC,MAAc;IAC9C,IACE,oBAAoB,CAAC,MAAM,CAAC;QAC5B,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,EACxC;QACQ,IAAA,MAAM,GAAK,MAAM,CAAC,MAAM,OAAlB,CAAmB;QAEjC,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;KACrC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAXD,8CAWC;AAED,SAAgB,oBAAoB,CAAC,MAAc;IACjD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE;QAC3D,IAAA,eAAe,GAAK,MAAM,CAAC,MAAM,gBAAlB,CAAmB;QAE1C,OAAO,OAAO,eAAe,KAAK,UAAU,CAAC;KAC9C;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AARD,oDAQC;AAED,SAAgB,oBAAoB,CAAC,MAAoB;IACvD,OAAO,CACL,MAAM;QACN,mBAAmB,CAAC,KAAK,CACvB,UAAA,UAAU,IAAI,OAAA,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,UAAU,EAAxC,CAAwC,CACvD,CACF,CAAC;AACJ,CAAC;AAPD,oDAOC;AAED,SAAsB,mBAAmB,CAAC,MAAoB;;;;;;oBAC5D,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;wBAAE,sBAAO,KAAK,EAAC;;;;oBAElC,qBAAM,MAAM,CAAC,WAAW,CAClC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,EAChC,KAAK,EACL,CAAC,SAAS,CAAC,CACZ,EAAA;;oBAJK,GAAG,GAAG,SAIX;oBACuB,qBAAM,MAAM,CAAC,OAAO,CAC1C;4BACE,IAAI,EAAE,SAAS;4BACf,EAAE,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;4BAC7B,cAAc,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;4BACzC,SAAS,EAAE,GAAG;yBACf,EACD,GAAG,EACH,IAAI,UAAU,CAAC,CAAC,CAAC,CAClB,EAAA;;oBATK,eAAe,GAAG,SASvB;oBACD,sBAAO,eAAe,CAAC,UAAU,KAAK,EAAE,EAAC;;;oBAEzC,sBAAO,KAAK,EAAC;;;;;CAEhB;AAtBD,kDAsBC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/module/index.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/module/index.d.ts new file mode 100644 index 000000000..9725c9c29 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/module/index.d.ts @@ -0,0 +1 @@ +export * from "./supportsWebCrypto"; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/module/index.js b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/module/index.js new file mode 100644 index 000000000..f5527ea55 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/module/index.js @@ -0,0 +1,2 @@ +export * from "./supportsWebCrypto"; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/module/index.js.map b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/module/index.js.map new file mode 100644 index 000000000..b2df4309b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/module/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/module/supportsWebCrypto.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/module/supportsWebCrypto.d.ts new file mode 100644 index 000000000..f2723dc61 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/module/supportsWebCrypto.d.ts @@ -0,0 +1,4 @@ +export declare function supportsWebCrypto(window: Window): boolean; +export declare function supportsSecureRandom(window: Window): boolean; +export declare function supportsSubtleCrypto(subtle: SubtleCrypto): boolean; +export declare function supportsZeroByteGCM(subtle: SubtleCrypto): Promise; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/module/supportsWebCrypto.js b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/module/supportsWebCrypto.js new file mode 100644 index 000000000..70b46e6d8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/module/supportsWebCrypto.js @@ -0,0 +1,62 @@ +import { __awaiter, __generator } from "tslib"; +var subtleCryptoMethods = [ + "decrypt", + "digest", + "encrypt", + "exportKey", + "generateKey", + "importKey", + "sign", + "verify" +]; +export function supportsWebCrypto(window) { + if (supportsSecureRandom(window) && + typeof window.crypto.subtle === "object") { + var subtle = window.crypto.subtle; + return supportsSubtleCrypto(subtle); + } + return false; +} +export function supportsSecureRandom(window) { + if (typeof window === "object" && typeof window.crypto === "object") { + var getRandomValues = window.crypto.getRandomValues; + return typeof getRandomValues === "function"; + } + return false; +} +export function supportsSubtleCrypto(subtle) { + return (subtle && + subtleCryptoMethods.every(function (methodName) { return typeof subtle[methodName] === "function"; })); +} +export function supportsZeroByteGCM(subtle) { + return __awaiter(this, void 0, void 0, function () { + var key, zeroByteAuthTag, _a; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + if (!supportsSubtleCrypto(subtle)) + return [2 /*return*/, false]; + _b.label = 1; + case 1: + _b.trys.push([1, 4, , 5]); + return [4 /*yield*/, subtle.generateKey({ name: "AES-GCM", length: 128 }, false, ["encrypt"])]; + case 2: + key = _b.sent(); + return [4 /*yield*/, subtle.encrypt({ + name: "AES-GCM", + iv: new Uint8Array(Array(12)), + additionalData: new Uint8Array(Array(16)), + tagLength: 128 + }, key, new Uint8Array(0))]; + case 3: + zeroByteAuthTag = _b.sent(); + return [2 /*return*/, zeroByteAuthTag.byteLength === 16]; + case 4: + _a = _b.sent(); + return [2 /*return*/, false]; + case 5: return [2 /*return*/]; + } + }); + }); +} +//# sourceMappingURL=supportsWebCrypto.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/module/supportsWebCrypto.js.map b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/module/supportsWebCrypto.js.map new file mode 100644 index 000000000..967fc1936 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/build/module/supportsWebCrypto.js.map @@ -0,0 +1 @@ +{"version":3,"file":"supportsWebCrypto.js","sourceRoot":"","sources":["../../src/supportsWebCrypto.ts"],"names":[],"mappings":";AAUA,IAAM,mBAAmB,GAA8B;IACrD,SAAS;IACT,QAAQ;IACR,SAAS;IACT,WAAW;IACX,aAAa;IACb,WAAW;IACX,MAAM;IACN,QAAQ;CACT,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,IACE,oBAAoB,CAAC,MAAM,CAAC;QAC5B,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,EACxC;QACQ,IAAA,MAAM,GAAK,MAAM,CAAC,MAAM,OAAlB,CAAmB;QAEjC,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;KACrC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE;QAC3D,IAAA,eAAe,GAAK,MAAM,CAAC,MAAM,gBAAlB,CAAmB;QAE1C,OAAO,OAAO,eAAe,KAAK,UAAU,CAAC;KAC9C;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAoB;IACvD,OAAO,CACL,MAAM;QACN,mBAAmB,CAAC,KAAK,CACvB,UAAA,UAAU,IAAI,OAAA,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,UAAU,EAAxC,CAAwC,CACvD,CACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAgB,mBAAmB,CAAC,MAAoB;;;;;;oBAC5D,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;wBAAE,sBAAO,KAAK,EAAC;;;;oBAElC,qBAAM,MAAM,CAAC,WAAW,CAClC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,EAChC,KAAK,EACL,CAAC,SAAS,CAAC,CACZ,EAAA;;oBAJK,GAAG,GAAG,SAIX;oBACuB,qBAAM,MAAM,CAAC,OAAO,CAC1C;4BACE,IAAI,EAAE,SAAS;4BACf,EAAE,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;4BAC7B,cAAc,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;4BACzC,SAAS,EAAE,GAAG;yBACf,EACD,GAAG,EACH,IAAI,UAAU,CAAC,CAAC,CAAC,CAClB,EAAA;;oBATK,eAAe,GAAG,SASvB;oBACD,sBAAO,eAAe,CAAC,UAAU,KAAK,EAAE,EAAC;;;oBAEzC,sBAAO,KAAK,EAAC;;;;;CAEhB"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/package.json b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/package.json new file mode 100644 index 000000000..a97bf0138 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/package.json @@ -0,0 +1,28 @@ +{ + "name": "@aws-crypto/supports-web-crypto", + "version": "5.2.0", + "description": "Provides functions for detecting if the host environment supports the WebCrypto API", + "scripts": { + "prepublishOnly": "tsc -p tsconfig.json && tsc -p tsconfig.module.json", + "pretest": "tsc -p tsconfig.test.json", + "test": "mocha --require ts-node/register test/**/*test.ts" + }, + "repository": { + "type": "git", + "url": "git@github.com:aws/aws-sdk-js-crypto-helpers.git" + }, + "author": { + "name": "AWS Crypto Tools Team", + "email": "aws-cryptools@amazon.com", + "url": "https://docs.aws.amazon.com/aws-crypto-tools/index.html?id=docs_gateway#lang/en_us" + }, + "homepage": "https://github.com/aws/aws-sdk-js-crypto-helpers/tree/master/packages/supports-web-crypto", + "license": "Apache-2.0", + "main": "./build/main/index.js", + "module": "./build/module/index.js", + "types": "./build/main/index.d.ts", + "dependencies": { + "tslib": "^2.6.2" + }, + "gitHead": "c11b171b35ec5c093364f0e0d8dc4ab1af68e748" +} diff --git a/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/src/index.ts b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/src/index.ts new file mode 100644 index 000000000..9725c9c29 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/src/index.ts @@ -0,0 +1 @@ +export * from "./supportsWebCrypto"; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/src/supportsWebCrypto.ts b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/src/supportsWebCrypto.ts new file mode 100644 index 000000000..7eef62913 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/src/supportsWebCrypto.ts @@ -0,0 +1,76 @@ +type SubtleCryptoMethod = + | "decrypt" + | "digest" + | "encrypt" + | "exportKey" + | "generateKey" + | "importKey" + | "sign" + | "verify"; + +const subtleCryptoMethods: Array = [ + "decrypt", + "digest", + "encrypt", + "exportKey", + "generateKey", + "importKey", + "sign", + "verify" +]; + +export function supportsWebCrypto(window: Window): boolean { + if ( + supportsSecureRandom(window) && + typeof window.crypto.subtle === "object" + ) { + const { subtle } = window.crypto; + + return supportsSubtleCrypto(subtle); + } + + return false; +} + +export function supportsSecureRandom(window: Window): boolean { + if (typeof window === "object" && typeof window.crypto === "object") { + const { getRandomValues } = window.crypto; + + return typeof getRandomValues === "function"; + } + + return false; +} + +export function supportsSubtleCrypto(subtle: SubtleCrypto) { + return ( + subtle && + subtleCryptoMethods.every( + methodName => typeof subtle[methodName] === "function" + ) + ); +} + +export async function supportsZeroByteGCM(subtle: SubtleCrypto) { + if (!supportsSubtleCrypto(subtle)) return false; + try { + const key = await subtle.generateKey( + { name: "AES-GCM", length: 128 }, + false, + ["encrypt"] + ); + const zeroByteAuthTag = await subtle.encrypt( + { + name: "AES-GCM", + iv: new Uint8Array(Array(12)), + additionalData: new Uint8Array(Array(16)), + tagLength: 128 + }, + key, + new Uint8Array(0) + ); + return zeroByteAuthTag.byteLength === 16; + } catch { + return false; + } +} diff --git a/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/tsconfig.json b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/tsconfig.json new file mode 100644 index 000000000..efca6de83 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "lib": ["dom"], + "rootDir": "./src", + "outDir": "./build/main", + }, + "include": ["src/**/*.ts"], + "exclude": ["node_modules/**"] +} diff --git a/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/tsconfig.module.json b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/tsconfig.module.json new file mode 100644 index 000000000..7d0cfddc0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/supports-web-crypto/tsconfig.module.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig", + "compilerOptions": { + "outDir": "build/module", + "module": "esnext", + } +} diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/CHANGELOG.md b/food-ordering-app/server/node_modules/@aws-crypto/util/CHANGELOG.md new file mode 100644 index 000000000..df2cecbb9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/CHANGELOG.md @@ -0,0 +1,71 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [5.2.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v5.1.0...v5.2.0) (2023-10-16) + +### Features + +- support ESM artifacts in all packages ([#752](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/752)) ([e930ffb](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/e930ffba5cfef66dd242049e7d514ced232c1e3b)) + +# [5.1.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v5.0.0...v5.1.0) (2023-09-22) + +### Bug Fixes + +- Update tsc to 2.x ([#735](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/735)) ([782e0de](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/782e0de9f5fef41f694130580a69d940894b6b8c)) + +### Features + +- Use @smithy/util-utf8 ([#730](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/730)) ([00fb851](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/00fb851ca3559d5a1f370f9256814de1210826b8)), closes [#699](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/699) + +# [5.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v4.0.1...v5.0.0) (2023-07-13) + +**Note:** Version bump only for package @aws-crypto/util + +# [4.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v3.0.0...v4.0.0) (2023-02-20) + +**Note:** Version bump only for package @aws-crypto/util + +# [3.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v2.0.2...v3.0.0) (2023-01-12) + +- feat!: replace Hash implementations with Checksum interface (#492) ([da43dc0](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/da43dc0fdf669d9ebb5bfb1b1f7c79e46c4aaae1)), closes [#492](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/492) + +### BREAKING CHANGES + +- All classes that implemented `Hash` now implement `Checksum`. + +## [2.0.2](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v2.0.1...v2.0.2) (2022-09-07) + +### Bug Fixes + +- **#337:** update @aws-sdk/types ([#373](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/373)) ([b26a811](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/b26a811a392f5209c7ec7e57251500d4d78f97ff)), closes [#337](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/337) +- **docs:** update README for packages/util ([#382](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/382)) ([f3e650e](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/f3e650e1b4792ffbea2e8a1a015fd55fb951a3a4)) + +## [2.0.1](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v2.0.0...v2.0.1) (2021-12-09) + +### Bug Fixes + +- **uint32ArrayFrom:** increment index & polyfill for Uint32Array ([#270](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/270)) ([a70d603](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/a70d603f3ba7600d3c1213f297d4160a4b3793bd)) + +# [2.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.2.2...v2.0.0) (2021-10-25) + +**Note:** Version bump only for package @aws-crypto/util + +## [1.2.2](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.2.1...v1.2.2) (2021-10-12) + +### Bug Fixes + +- **crc32c:** ie11 does not support Array.from ([#221](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/221)) ([5f49547](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/5f495472ab8988cf203e0f2a70a51f7e1fcd7e60)) + +## [1.2.1](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.2.0...v1.2.1) (2021-09-17) + +### Bug Fixes + +- better pollyfill check for Buffer ([#217](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/217)) ([bc97da2](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/bc97da29aaf473943e4407c9a29cc30f74f15723)) + +# [1.2.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.1.1...v1.2.0) (2021-09-17) + +### Features + +- add @aws-crypto/util ([8f489cb](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/8f489cbe4c0e134f826bac66f1bf5172597048b9)) diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/LICENSE b/food-ordering-app/server/node_modules/@aws-crypto/util/LICENSE new file mode 100644 index 000000000..980a15ac2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/README.md b/food-ordering-app/server/node_modules/@aws-crypto/util/README.md new file mode 100644 index 000000000..4c1c8aab6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/README.md @@ -0,0 +1,16 @@ +# @aws-crypto/util + +Helper functions + +## Usage + +``` +import { convertToBuffer } from '@aws-crypto/util'; + +const data = "asdf"; +const utf8EncodedUint8Array = convertToBuffer(data); +``` + +## Test + +`npm test` diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/convertToBuffer.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/convertToBuffer.d.ts new file mode 100644 index 000000000..697a5cde8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/convertToBuffer.d.ts @@ -0,0 +1,2 @@ +import { SourceData } from "@aws-sdk/types"; +export declare function convertToBuffer(data: SourceData): Uint8Array; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/convertToBuffer.js b/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/convertToBuffer.js new file mode 100644 index 000000000..85bc8af42 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/convertToBuffer.js @@ -0,0 +1,24 @@ +"use strict"; +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +Object.defineProperty(exports, "__esModule", { value: true }); +exports.convertToBuffer = void 0; +var util_utf8_1 = require("@smithy/util-utf8"); +// Quick polyfill +var fromUtf8 = typeof Buffer !== "undefined" && Buffer.from + ? function (input) { return Buffer.from(input, "utf8"); } + : util_utf8_1.fromUtf8; +function convertToBuffer(data) { + // Already a Uint8, do nothing + if (data instanceof Uint8Array) + return data; + if (typeof data === "string") { + return fromUtf8(data); + } + if (ArrayBuffer.isView(data)) { + return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT); + } + return new Uint8Array(data); +} +exports.convertToBuffer = convertToBuffer; +//# sourceMappingURL=convertToBuffer.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/convertToBuffer.js.map b/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/convertToBuffer.js.map new file mode 100644 index 000000000..916d78717 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/convertToBuffer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"convertToBuffer.js","sourceRoot":"","sources":["../../src/convertToBuffer.ts"],"names":[],"mappings":";AAAA,oEAAoE;AACpE,sCAAsC;;;AAGtC,+CAAgE;AAEhE,iBAAiB;AACjB,IAAM,QAAQ,GACZ,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,IAAI;IAC1C,CAAC,CAAC,UAAC,KAAa,IAAK,OAAA,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,EAA1B,CAA0B;IAC/C,CAAC,CAAC,oBAAe,CAAC;AAEtB,SAAgB,eAAe,CAAC,IAAgB;IAC9C,8BAA8B;IAC9B,IAAI,IAAI,YAAY,UAAU;QAAE,OAAO,IAAI,CAAC;IAE5C,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC5B,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;KACvB;IAED,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QAC5B,OAAO,IAAI,UAAU,CACnB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,iBAAiB,CAC/C,CAAC;KACH;IAED,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAjBD,0CAiBC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/index.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/index.d.ts new file mode 100644 index 000000000..783c73c4b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/index.d.ts @@ -0,0 +1,4 @@ +export { convertToBuffer } from "./convertToBuffer"; +export { isEmptyData } from "./isEmptyData"; +export { numToUint8 } from "./numToUint8"; +export { uint32ArrayFrom } from './uint32ArrayFrom'; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/index.js b/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/index.js new file mode 100644 index 000000000..94e1ca907 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/index.js @@ -0,0 +1,14 @@ +"use strict"; +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +Object.defineProperty(exports, "__esModule", { value: true }); +exports.uint32ArrayFrom = exports.numToUint8 = exports.isEmptyData = exports.convertToBuffer = void 0; +var convertToBuffer_1 = require("./convertToBuffer"); +Object.defineProperty(exports, "convertToBuffer", { enumerable: true, get: function () { return convertToBuffer_1.convertToBuffer; } }); +var isEmptyData_1 = require("./isEmptyData"); +Object.defineProperty(exports, "isEmptyData", { enumerable: true, get: function () { return isEmptyData_1.isEmptyData; } }); +var numToUint8_1 = require("./numToUint8"); +Object.defineProperty(exports, "numToUint8", { enumerable: true, get: function () { return numToUint8_1.numToUint8; } }); +var uint32ArrayFrom_1 = require("./uint32ArrayFrom"); +Object.defineProperty(exports, "uint32ArrayFrom", { enumerable: true, get: function () { return uint32ArrayFrom_1.uint32ArrayFrom; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/index.js.map b/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/index.js.map new file mode 100644 index 000000000..a17017243 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,oEAAoE;AACpE,sCAAsC;;;AAEtC,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,6CAA4C;AAAnC,0GAAA,WAAW,OAAA;AACpB,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/isEmptyData.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/isEmptyData.d.ts new file mode 100644 index 000000000..43ae4a7c4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/isEmptyData.d.ts @@ -0,0 +1,2 @@ +import { SourceData } from "@aws-sdk/types"; +export declare function isEmptyData(data: SourceData): boolean; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/isEmptyData.js b/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/isEmptyData.js new file mode 100644 index 000000000..6af1e89e0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/isEmptyData.js @@ -0,0 +1,13 @@ +"use strict"; +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isEmptyData = void 0; +function isEmptyData(data) { + if (typeof data === "string") { + return data.length === 0; + } + return data.byteLength === 0; +} +exports.isEmptyData = isEmptyData; +//# sourceMappingURL=isEmptyData.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/isEmptyData.js.map b/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/isEmptyData.js.map new file mode 100644 index 000000000..e1eaa02b3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/isEmptyData.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isEmptyData.js","sourceRoot":"","sources":["../../src/isEmptyData.ts"],"names":[],"mappings":";AAAA,oEAAoE;AACpE,sCAAsC;;;AAItC,SAAgB,WAAW,CAAC,IAAgB;IAC1C,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC5B,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;KAC1B;IAED,OAAO,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC;AAC/B,CAAC;AAND,kCAMC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/numToUint8.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/numToUint8.d.ts new file mode 100644 index 000000000..5b702e8ef --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/numToUint8.d.ts @@ -0,0 +1 @@ +export declare function numToUint8(num: number): Uint8Array; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/numToUint8.js b/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/numToUint8.js new file mode 100644 index 000000000..2f070e107 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/numToUint8.js @@ -0,0 +1,15 @@ +"use strict"; +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +Object.defineProperty(exports, "__esModule", { value: true }); +exports.numToUint8 = void 0; +function numToUint8(num) { + return new Uint8Array([ + (num & 0xff000000) >> 24, + (num & 0x00ff0000) >> 16, + (num & 0x0000ff00) >> 8, + num & 0x000000ff, + ]); +} +exports.numToUint8 = numToUint8; +//# sourceMappingURL=numToUint8.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/numToUint8.js.map b/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/numToUint8.js.map new file mode 100644 index 000000000..fea3aca77 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/numToUint8.js.map @@ -0,0 +1 @@ +{"version":3,"file":"numToUint8.js","sourceRoot":"","sources":["../../src/numToUint8.ts"],"names":[],"mappings":";AAAA,oEAAoE;AACpE,sCAAsC;;;AAEtC,SAAgB,UAAU,CAAC,GAAW;IACpC,OAAO,IAAI,UAAU,CAAC;QACpB,CAAC,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE;QACxB,CAAC,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE;QACxB,CAAC,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC;QACvB,GAAG,GAAG,UAAU;KACjB,CAAC,CAAC;AACL,CAAC;AAPD,gCAOC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/uint32ArrayFrom.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/uint32ArrayFrom.d.ts new file mode 100644 index 000000000..fea660753 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/uint32ArrayFrom.d.ts @@ -0,0 +1 @@ +export declare function uint32ArrayFrom(a_lookUpTable: Array): Uint32Array; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/uint32ArrayFrom.js b/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/uint32ArrayFrom.js new file mode 100644 index 000000000..226cdc3d8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/uint32ArrayFrom.js @@ -0,0 +1,20 @@ +"use strict"; +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +Object.defineProperty(exports, "__esModule", { value: true }); +exports.uint32ArrayFrom = void 0; +// IE 11 does not support Array.from, so we do it manually +function uint32ArrayFrom(a_lookUpTable) { + if (!Uint32Array.from) { + var return_array = new Uint32Array(a_lookUpTable.length); + var a_index = 0; + while (a_index < a_lookUpTable.length) { + return_array[a_index] = a_lookUpTable[a_index]; + a_index += 1; + } + return return_array; + } + return Uint32Array.from(a_lookUpTable); +} +exports.uint32ArrayFrom = uint32ArrayFrom; +//# sourceMappingURL=uint32ArrayFrom.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/uint32ArrayFrom.js.map b/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/uint32ArrayFrom.js.map new file mode 100644 index 000000000..fe016e144 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/build/main/uint32ArrayFrom.js.map @@ -0,0 +1 @@ +{"version":3,"file":"uint32ArrayFrom.js","sourceRoot":"","sources":["../../src/uint32ArrayFrom.ts"],"names":[],"mappings":";AAAA,oEAAoE;AACpE,sCAAsC;;;AAEtC,0DAA0D;AAC1D,SAAgB,eAAe,CAAC,aAA4B;IAC1D,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;QACrB,IAAM,YAAY,GAAG,IAAI,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QAC1D,IAAI,OAAO,GAAG,CAAC,CAAA;QACf,OAAO,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE;YACrC,YAAY,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;YAC9C,OAAO,IAAI,CAAC,CAAA;SACb;QACD,OAAO,YAAY,CAAA;KACpB;IACD,OAAO,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;AACxC,CAAC;AAXD,0CAWC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/convertToBuffer.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/convertToBuffer.d.ts new file mode 100644 index 000000000..697a5cde8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/convertToBuffer.d.ts @@ -0,0 +1,2 @@ +import { SourceData } from "@aws-sdk/types"; +export declare function convertToBuffer(data: SourceData): Uint8Array; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/convertToBuffer.js b/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/convertToBuffer.js new file mode 100644 index 000000000..c700d1e2f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/convertToBuffer.js @@ -0,0 +1,20 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +import { fromUtf8 as fromUtf8Browser } from "@smithy/util-utf8"; +// Quick polyfill +var fromUtf8 = typeof Buffer !== "undefined" && Buffer.from + ? function (input) { return Buffer.from(input, "utf8"); } + : fromUtf8Browser; +export function convertToBuffer(data) { + // Already a Uint8, do nothing + if (data instanceof Uint8Array) + return data; + if (typeof data === "string") { + return fromUtf8(data); + } + if (ArrayBuffer.isView(data)) { + return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT); + } + return new Uint8Array(data); +} +//# sourceMappingURL=convertToBuffer.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/convertToBuffer.js.map b/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/convertToBuffer.js.map new file mode 100644 index 000000000..92694a4ef --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/convertToBuffer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"convertToBuffer.js","sourceRoot":"","sources":["../../src/convertToBuffer.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,sCAAsC;AAGtC,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEhE,iBAAiB;AACjB,IAAM,QAAQ,GACZ,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,IAAI;IAC1C,CAAC,CAAC,UAAC,KAAa,IAAK,OAAA,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,EAA1B,CAA0B;IAC/C,CAAC,CAAC,eAAe,CAAC;AAEtB,MAAM,UAAU,eAAe,CAAC,IAAgB;IAC9C,8BAA8B;IAC9B,IAAI,IAAI,YAAY,UAAU;QAAE,OAAO,IAAI,CAAC;IAE5C,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC5B,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;KACvB;IAED,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QAC5B,OAAO,IAAI,UAAU,CACnB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,iBAAiB,CAC/C,CAAC;KACH;IAED,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/index.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/index.d.ts new file mode 100644 index 000000000..783c73c4b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/index.d.ts @@ -0,0 +1,4 @@ +export { convertToBuffer } from "./convertToBuffer"; +export { isEmptyData } from "./isEmptyData"; +export { numToUint8 } from "./numToUint8"; +export { uint32ArrayFrom } from './uint32ArrayFrom'; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/index.js b/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/index.js new file mode 100644 index 000000000..077e8b67d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/index.js @@ -0,0 +1,7 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +export { convertToBuffer } from "./convertToBuffer"; +export { isEmptyData } from "./isEmptyData"; +export { numToUint8 } from "./numToUint8"; +export { uint32ArrayFrom } from './uint32ArrayFrom'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/index.js.map b/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/index.js.map new file mode 100644 index 000000000..4ddb12d29 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,sCAAsC;AAEtC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/isEmptyData.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/isEmptyData.d.ts new file mode 100644 index 000000000..43ae4a7c4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/isEmptyData.d.ts @@ -0,0 +1,2 @@ +import { SourceData } from "@aws-sdk/types"; +export declare function isEmptyData(data: SourceData): boolean; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/isEmptyData.js b/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/isEmptyData.js new file mode 100644 index 000000000..13841c75f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/isEmptyData.js @@ -0,0 +1,9 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +export function isEmptyData(data) { + if (typeof data === "string") { + return data.length === 0; + } + return data.byteLength === 0; +} +//# sourceMappingURL=isEmptyData.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/isEmptyData.js.map b/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/isEmptyData.js.map new file mode 100644 index 000000000..fe0fa025b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/isEmptyData.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isEmptyData.js","sourceRoot":"","sources":["../../src/isEmptyData.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,sCAAsC;AAItC,MAAM,UAAU,WAAW,CAAC,IAAgB;IAC1C,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC5B,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;KAC1B;IAED,OAAO,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC;AAC/B,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/numToUint8.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/numToUint8.d.ts new file mode 100644 index 000000000..5b702e8ef --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/numToUint8.d.ts @@ -0,0 +1 @@ +export declare function numToUint8(num: number): Uint8Array; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/numToUint8.js b/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/numToUint8.js new file mode 100644 index 000000000..0ca6e47da --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/numToUint8.js @@ -0,0 +1,11 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +export function numToUint8(num) { + return new Uint8Array([ + (num & 0xff000000) >> 24, + (num & 0x00ff0000) >> 16, + (num & 0x0000ff00) >> 8, + num & 0x000000ff, + ]); +} +//# sourceMappingURL=numToUint8.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/numToUint8.js.map b/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/numToUint8.js.map new file mode 100644 index 000000000..ac53e3347 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/numToUint8.js.map @@ -0,0 +1 @@ +{"version":3,"file":"numToUint8.js","sourceRoot":"","sources":["../../src/numToUint8.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,sCAAsC;AAEtC,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,OAAO,IAAI,UAAU,CAAC;QACpB,CAAC,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE;QACxB,CAAC,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE;QACxB,CAAC,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC;QACvB,GAAG,GAAG,UAAU;KACjB,CAAC,CAAC;AACL,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/uint32ArrayFrom.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/uint32ArrayFrom.d.ts new file mode 100644 index 000000000..fea660753 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/uint32ArrayFrom.d.ts @@ -0,0 +1 @@ +export declare function uint32ArrayFrom(a_lookUpTable: Array): Uint32Array; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/uint32ArrayFrom.js b/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/uint32ArrayFrom.js new file mode 100644 index 000000000..c69435e92 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/uint32ArrayFrom.js @@ -0,0 +1,16 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +// IE 11 does not support Array.from, so we do it manually +export function uint32ArrayFrom(a_lookUpTable) { + if (!Uint32Array.from) { + var return_array = new Uint32Array(a_lookUpTable.length); + var a_index = 0; + while (a_index < a_lookUpTable.length) { + return_array[a_index] = a_lookUpTable[a_index]; + a_index += 1; + } + return return_array; + } + return Uint32Array.from(a_lookUpTable); +} +//# sourceMappingURL=uint32ArrayFrom.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/uint32ArrayFrom.js.map b/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/uint32ArrayFrom.js.map new file mode 100644 index 000000000..7384b0a41 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/build/module/uint32ArrayFrom.js.map @@ -0,0 +1 @@ +{"version":3,"file":"uint32ArrayFrom.js","sourceRoot":"","sources":["../../src/uint32ArrayFrom.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,sCAAsC;AAEtC,0DAA0D;AAC1D,MAAM,UAAU,eAAe,CAAC,aAA4B;IAC1D,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;QACrB,IAAM,YAAY,GAAG,IAAI,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QAC1D,IAAI,OAAO,GAAG,CAAC,CAAA;QACf,OAAO,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE;YACrC,YAAY,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;YAC9C,OAAO,IAAI,CAAC,CAAA;SACb;QACD,OAAO,YAAY,CAAA;KACpB;IACD,OAAO,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;AACxC,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/LICENSE b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/README.md b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/README.md new file mode 100644 index 000000000..31853f24b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/README.md @@ -0,0 +1,10 @@ +# @smithy/is-array-buffer + +[![NPM version](https://img.shields.io/npm/v/@smithy/is-array-buffer/latest.svg)](https://www.npmjs.com/package/@smithy/is-array-buffer) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/is-array-buffer.svg)](https://www.npmjs.com/package/@smithy/is-array-buffer) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/dist-cjs/index.js b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/dist-cjs/index.js new file mode 100644 index 000000000..5d792e71b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/dist-cjs/index.js @@ -0,0 +1,32 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/index.ts +var src_exports = {}; +__export(src_exports, { + isArrayBuffer: () => isArrayBuffer +}); +module.exports = __toCommonJS(src_exports); +var isArrayBuffer = /* @__PURE__ */ __name((arg) => typeof ArrayBuffer === "function" && arg instanceof ArrayBuffer || Object.prototype.toString.call(arg) === "[object ArrayBuffer]", "isArrayBuffer"); +// Annotate the CommonJS export names for ESM import in node: + +0 && (module.exports = { + isArrayBuffer +}); + diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/dist-es/index.js b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/dist-es/index.js new file mode 100644 index 000000000..8096cca36 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/dist-es/index.js @@ -0,0 +1,2 @@ +export const isArrayBuffer = (arg) => (typeof ArrayBuffer === "function" && arg instanceof ArrayBuffer) || + Object.prototype.toString.call(arg) === "[object ArrayBuffer]"; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/dist-types/index.d.ts new file mode 100644 index 000000000..64f452e71 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/dist-types/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const isArrayBuffer: (arg: any) => arg is ArrayBuffer; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..64f452e71 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/dist-types/ts3.4/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const isArrayBuffer: (arg: any) => arg is ArrayBuffer; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/package.json b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/package.json new file mode 100644 index 000000000..ed8affc7a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/package.json @@ -0,0 +1,60 @@ +{ + "name": "@smithy/is-array-buffer", + "version": "2.2.0", + "description": "Provides a function for detecting if an argument is an ArrayBuffer", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline is-array-buffer", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "rimraf ./.release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "rimraf ./dist-* && rimraf *.tsbuildinfo || exit 0", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:jest" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "typesVersions": { + "<4.0": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/awslabs/smithy-typescript/tree/main/packages/is-array-buffer", + "repository": { + "type": "git", + "url": "https://github.com/awslabs/smithy-typescript.git", + "directory": "packages/is-array-buffer" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "rimraf": "3.0.2", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/LICENSE b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/README.md b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/README.md new file mode 100644 index 000000000..c896b04ae --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/README.md @@ -0,0 +1,10 @@ +# @smithy/util-buffer-from + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-buffer-from/latest.svg)](https://www.npmjs.com/package/@smithy/util-buffer-from) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-buffer-from.svg)](https://www.npmjs.com/package/@smithy/util-buffer-from) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/dist-cjs/index.js b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/dist-cjs/index.js new file mode 100644 index 000000000..c6738d94a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/dist-cjs/index.js @@ -0,0 +1,47 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/index.ts +var src_exports = {}; +__export(src_exports, { + fromArrayBuffer: () => fromArrayBuffer, + fromString: () => fromString +}); +module.exports = __toCommonJS(src_exports); +var import_is_array_buffer = require("@smithy/is-array-buffer"); +var import_buffer = require("buffer"); +var fromArrayBuffer = /* @__PURE__ */ __name((input, offset = 0, length = input.byteLength - offset) => { + if (!(0, import_is_array_buffer.isArrayBuffer)(input)) { + throw new TypeError(`The "input" argument must be ArrayBuffer. Received type ${typeof input} (${input})`); + } + return import_buffer.Buffer.from(input, offset, length); +}, "fromArrayBuffer"); +var fromString = /* @__PURE__ */ __name((input, encoding) => { + if (typeof input !== "string") { + throw new TypeError(`The "input" argument must be of type string. Received type ${typeof input} (${input})`); + } + return encoding ? import_buffer.Buffer.from(input, encoding) : import_buffer.Buffer.from(input); +}, "fromString"); +// Annotate the CommonJS export names for ESM import in node: + +0 && (module.exports = { + fromArrayBuffer, + fromString +}); + diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/dist-es/index.js b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/dist-es/index.js new file mode 100644 index 000000000..718f83158 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/dist-es/index.js @@ -0,0 +1,14 @@ +import { isArrayBuffer } from "@smithy/is-array-buffer"; +import { Buffer } from "buffer"; +export const fromArrayBuffer = (input, offset = 0, length = input.byteLength - offset) => { + if (!isArrayBuffer(input)) { + throw new TypeError(`The "input" argument must be ArrayBuffer. Received type ${typeof input} (${input})`); + } + return Buffer.from(input, offset, length); +}; +export const fromString = (input, encoding) => { + if (typeof input !== "string") { + throw new TypeError(`The "input" argument must be of type string. Received type ${typeof input} (${input})`); + } + return encoding ? Buffer.from(input, encoding) : Buffer.from(input); +}; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/dist-types/index.d.ts new file mode 100644 index 000000000..a523134a5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/dist-types/index.d.ts @@ -0,0 +1,13 @@ +import { Buffer } from "buffer"; +/** + * @internal + */ +export declare const fromArrayBuffer: (input: ArrayBuffer, offset?: number, length?: number) => Buffer; +/** + * @internal + */ +export type StringEncoding = "ascii" | "utf8" | "utf16le" | "ucs2" | "base64" | "latin1" | "binary" | "hex"; +/** + * @internal + */ +export declare const fromString: (input: string, encoding?: StringEncoding) => Buffer; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..a523134a5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/dist-types/ts3.4/index.d.ts @@ -0,0 +1,13 @@ +import { Buffer } from "buffer"; +/** + * @internal + */ +export declare const fromArrayBuffer: (input: ArrayBuffer, offset?: number, length?: number) => Buffer; +/** + * @internal + */ +export type StringEncoding = "ascii" | "utf8" | "utf16le" | "ucs2" | "base64" | "latin1" | "binary" | "hex"; +/** + * @internal + */ +export declare const fromString: (input: string, encoding?: StringEncoding) => Buffer; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/package.json b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/package.json new file mode 100644 index 000000000..a12e51cc3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/package.json @@ -0,0 +1,61 @@ +{ + "name": "@smithy/util-buffer-from", + "version": "2.2.0", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-buffer-from", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "rimraf ./.release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "rimraf ./dist-* && rimraf *.tsbuildinfo || exit 0", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:jest" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "@types/node": "^14.14.31", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "rimraf": "3.0.2", + "typedoc": "0.23.23" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=14.0.0" + }, + "typesVersions": { + "<4.0": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/awslabs/smithy-typescript/tree/main/packages/util-buffer-from", + "repository": { + "type": "git", + "url": "https://github.com/awslabs/smithy-typescript.git", + "directory": "packages/util-buffer-from" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/LICENSE b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/README.md b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/README.md new file mode 100644 index 000000000..fc5db6d8e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/README.md @@ -0,0 +1,4 @@ +# @smithy/util-utf8 + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-utf8/latest.svg)](https://www.npmjs.com/package/@smithy/util-utf8) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-utf8.svg)](https://www.npmjs.com/package/@smithy/util-utf8) diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/fromUtf8.browser.js b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/fromUtf8.browser.js new file mode 100644 index 000000000..532e610f3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/fromUtf8.browser.js @@ -0,0 +1 @@ +module.exports = require("./index.js"); \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/fromUtf8.js b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/fromUtf8.js new file mode 100644 index 000000000..532e610f3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/fromUtf8.js @@ -0,0 +1 @@ +module.exports = require("./index.js"); \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/index.js b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/index.js new file mode 100644 index 000000000..0b22680ad --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/index.js @@ -0,0 +1,65 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/index.ts +var src_exports = {}; +__export(src_exports, { + fromUtf8: () => fromUtf8, + toUint8Array: () => toUint8Array, + toUtf8: () => toUtf8 +}); +module.exports = __toCommonJS(src_exports); + +// src/fromUtf8.ts +var import_util_buffer_from = require("@smithy/util-buffer-from"); +var fromUtf8 = /* @__PURE__ */ __name((input) => { + const buf = (0, import_util_buffer_from.fromString)(input, "utf8"); + return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength / Uint8Array.BYTES_PER_ELEMENT); +}, "fromUtf8"); + +// src/toUint8Array.ts +var toUint8Array = /* @__PURE__ */ __name((data) => { + if (typeof data === "string") { + return fromUtf8(data); + } + if (ArrayBuffer.isView(data)) { + return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT); + } + return new Uint8Array(data); +}, "toUint8Array"); + +// src/toUtf8.ts + +var toUtf8 = /* @__PURE__ */ __name((input) => { + if (typeof input === "string") { + return input; + } + if (typeof input !== "object" || typeof input.byteOffset !== "number" || typeof input.byteLength !== "number") { + throw new Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array."); + } + return (0, import_util_buffer_from.fromArrayBuffer)(input.buffer, input.byteOffset, input.byteLength).toString("utf8"); +}, "toUtf8"); +// Annotate the CommonJS export names for ESM import in node: + +0 && (module.exports = { + fromUtf8, + toUint8Array, + toUtf8 +}); + diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/toUint8Array.js b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/toUint8Array.js new file mode 100644 index 000000000..532e610f3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/toUint8Array.js @@ -0,0 +1 @@ +module.exports = require("./index.js"); \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/toUtf8.browser.js b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/toUtf8.browser.js new file mode 100644 index 000000000..532e610f3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/toUtf8.browser.js @@ -0,0 +1 @@ +module.exports = require("./index.js"); \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/toUtf8.js b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/toUtf8.js new file mode 100644 index 000000000..532e610f3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/toUtf8.js @@ -0,0 +1 @@ +module.exports = require("./index.js"); \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/fromUtf8.browser.js b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/fromUtf8.browser.js new file mode 100644 index 000000000..73441900f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/fromUtf8.browser.js @@ -0,0 +1 @@ +export const fromUtf8 = (input) => new TextEncoder().encode(input); diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/fromUtf8.js b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/fromUtf8.js new file mode 100644 index 000000000..6dc438b3e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/fromUtf8.js @@ -0,0 +1,5 @@ +import { fromString } from "@smithy/util-buffer-from"; +export const fromUtf8 = (input) => { + const buf = fromString(input, "utf8"); + return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength / Uint8Array.BYTES_PER_ELEMENT); +}; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/index.js b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/index.js new file mode 100644 index 000000000..00ba46574 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/index.js @@ -0,0 +1,3 @@ +export * from "./fromUtf8"; +export * from "./toUint8Array"; +export * from "./toUtf8"; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/toUint8Array.js b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/toUint8Array.js new file mode 100644 index 000000000..2cd36f755 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/toUint8Array.js @@ -0,0 +1,10 @@ +import { fromUtf8 } from "./fromUtf8"; +export const toUint8Array = (data) => { + if (typeof data === "string") { + return fromUtf8(data); + } + if (ArrayBuffer.isView(data)) { + return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT); + } + return new Uint8Array(data); +}; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/toUtf8.browser.js b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/toUtf8.browser.js new file mode 100644 index 000000000..c29212787 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/toUtf8.browser.js @@ -0,0 +1,9 @@ +export const toUtf8 = (input) => { + if (typeof input === "string") { + return input; + } + if (typeof input !== "object" || typeof input.byteOffset !== "number" || typeof input.byteLength !== "number") { + throw new Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array."); + } + return new TextDecoder("utf-8").decode(input); +}; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/toUtf8.js b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/toUtf8.js new file mode 100644 index 000000000..7be8745a8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/toUtf8.js @@ -0,0 +1,10 @@ +import { fromArrayBuffer } from "@smithy/util-buffer-from"; +export const toUtf8 = (input) => { + if (typeof input === "string") { + return input; + } + if (typeof input !== "object" || typeof input.byteOffset !== "number" || typeof input.byteLength !== "number") { + throw new Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array."); + } + return fromArrayBuffer(input.buffer, input.byteOffset, input.byteLength).toString("utf8"); +}; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/fromUtf8.browser.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/fromUtf8.browser.d.ts new file mode 100644 index 000000000..dd9198177 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/fromUtf8.browser.d.ts @@ -0,0 +1 @@ +export declare const fromUtf8: (input: string) => Uint8Array; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/fromUtf8.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/fromUtf8.d.ts new file mode 100644 index 000000000..dd9198177 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/fromUtf8.d.ts @@ -0,0 +1 @@ +export declare const fromUtf8: (input: string) => Uint8Array; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/index.d.ts new file mode 100644 index 000000000..00ba46574 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/index.d.ts @@ -0,0 +1,3 @@ +export * from "./fromUtf8"; +export * from "./toUint8Array"; +export * from "./toUtf8"; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/toUint8Array.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/toUint8Array.d.ts new file mode 100644 index 000000000..11b6342e8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/toUint8Array.d.ts @@ -0,0 +1 @@ +export declare const toUint8Array: (data: string | ArrayBuffer | ArrayBufferView) => Uint8Array; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/toUtf8.browser.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/toUtf8.browser.d.ts new file mode 100644 index 000000000..8494acd85 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/toUtf8.browser.d.ts @@ -0,0 +1,7 @@ +/** + * + * This does not convert non-utf8 strings to utf8, it only passes through strings if + * a string is received instead of a Uint8Array. + * + */ +export declare const toUtf8: (input: Uint8Array | string) => string; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/toUtf8.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/toUtf8.d.ts new file mode 100644 index 000000000..8494acd85 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/toUtf8.d.ts @@ -0,0 +1,7 @@ +/** + * + * This does not convert non-utf8 strings to utf8, it only passes through strings if + * a string is received instead of a Uint8Array. + * + */ +export declare const toUtf8: (input: Uint8Array | string) => string; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.browser.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.browser.d.ts new file mode 100644 index 000000000..dd9198177 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.browser.d.ts @@ -0,0 +1 @@ +export declare const fromUtf8: (input: string) => Uint8Array; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.d.ts new file mode 100644 index 000000000..dd9198177 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.d.ts @@ -0,0 +1 @@ +export declare const fromUtf8: (input: string) => Uint8Array; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..00ba46574 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/index.d.ts @@ -0,0 +1,3 @@ +export * from "./fromUtf8"; +export * from "./toUint8Array"; +export * from "./toUtf8"; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUint8Array.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUint8Array.d.ts new file mode 100644 index 000000000..11b6342e8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUint8Array.d.ts @@ -0,0 +1 @@ +export declare const toUint8Array: (data: string | ArrayBuffer | ArrayBufferView) => Uint8Array; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.browser.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.browser.d.ts new file mode 100644 index 000000000..8494acd85 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.browser.d.ts @@ -0,0 +1,7 @@ +/** + * + * This does not convert non-utf8 strings to utf8, it only passes through strings if + * a string is received instead of a Uint8Array. + * + */ +export declare const toUtf8: (input: Uint8Array | string) => string; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.d.ts b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.d.ts new file mode 100644 index 000000000..8494acd85 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.d.ts @@ -0,0 +1,7 @@ +/** + * + * This does not convert non-utf8 strings to utf8, it only passes through strings if + * a string is received instead of a Uint8Array. + * + */ +export declare const toUtf8: (input: Uint8Array | string) => string; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/package.json b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/package.json new file mode 100644 index 000000000..78bfb4df4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/package.json @@ -0,0 +1,66 @@ +{ + "name": "@smithy/util-utf8", + "version": "2.3.0", + "description": "A UTF-8 string <-> UInt8Array converter", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-utf8", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "rimraf ./.release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "rimraf ./dist-* && rimraf *.tsbuildinfo || exit 0", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:jest" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "rimraf": "3.0.2", + "typedoc": "0.23.23" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=14.0.0" + }, + "typesVersions": { + "<4.0": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "browser": { + "./dist-es/fromUtf8": "./dist-es/fromUtf8.browser", + "./dist-es/toUtf8": "./dist-es/toUtf8.browser" + }, + "react-native": {}, + "homepage": "https://github.com/awslabs/smithy-typescript/tree/main/packages/util-utf8", + "repository": { + "type": "git", + "url": "https://github.com/awslabs/smithy-typescript.git", + "directory": "packages/util-utf8" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/package.json b/food-ordering-app/server/node_modules/@aws-crypto/util/package.json new file mode 100644 index 000000000..431107a18 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/package.json @@ -0,0 +1,32 @@ +{ + "name": "@aws-crypto/util", + "version": "5.2.0", + "scripts": { + "prepublishOnly": "tsc -p tsconfig.json && tsc -p tsconfig.module.json", + "pretest": "tsc -p tsconfig.test.json", + "test": "mocha --require ts-node/register test/**/*test.ts" + }, + "main": "./build/main/index.js", + "module": "./build/module/index.js", + "types": "./build/main/index.d.ts", + "repository": { + "type": "git", + "url": "git@github.com:aws/aws-sdk-js-crypto-helpers.git" + }, + "author": { + "name": "AWS Crypto Tools Team", + "email": "aws-cryptools@amazon.com", + "url": "https://docs.aws.amazon.com/aws-crypto-tools/index.html?id=docs_gateway#lang/en_us" + }, + "homepage": "https://github.com/aws/aws-sdk-js-crypto-helpers/tree/master/packages/util", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + }, + "publishConfig": { + "access": "public" + }, + "gitHead": "c11b171b35ec5c093364f0e0d8dc4ab1af68e748" +} diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/src/convertToBuffer.ts b/food-ordering-app/server/node_modules/@aws-crypto/util/src/convertToBuffer.ts new file mode 100644 index 000000000..f9f163e70 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/src/convertToBuffer.ts @@ -0,0 +1,30 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { SourceData } from "@aws-sdk/types"; +import { fromUtf8 as fromUtf8Browser } from "@smithy/util-utf8"; + +// Quick polyfill +const fromUtf8 = + typeof Buffer !== "undefined" && Buffer.from + ? (input: string) => Buffer.from(input, "utf8") + : fromUtf8Browser; + +export function convertToBuffer(data: SourceData): Uint8Array { + // Already a Uint8, do nothing + if (data instanceof Uint8Array) return data; + + if (typeof data === "string") { + return fromUtf8(data); + } + + if (ArrayBuffer.isView(data)) { + return new Uint8Array( + data.buffer, + data.byteOffset, + data.byteLength / Uint8Array.BYTES_PER_ELEMENT + ); + } + + return new Uint8Array(data); +} diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/src/index.ts b/food-ordering-app/server/node_modules/@aws-crypto/util/src/index.ts new file mode 100644 index 000000000..2f6c62a75 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/src/index.ts @@ -0,0 +1,7 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +export { convertToBuffer } from "./convertToBuffer"; +export { isEmptyData } from "./isEmptyData"; +export { numToUint8 } from "./numToUint8"; +export {uint32ArrayFrom} from './uint32ArrayFrom'; diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/src/isEmptyData.ts b/food-ordering-app/server/node_modules/@aws-crypto/util/src/isEmptyData.ts new file mode 100644 index 000000000..089764de9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/src/isEmptyData.ts @@ -0,0 +1,12 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { SourceData } from "@aws-sdk/types"; + +export function isEmptyData(data: SourceData): boolean { + if (typeof data === "string") { + return data.length === 0; + } + + return data.byteLength === 0; +} diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/src/numToUint8.ts b/food-ordering-app/server/node_modules/@aws-crypto/util/src/numToUint8.ts new file mode 100644 index 000000000..2f40aceb1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/src/numToUint8.ts @@ -0,0 +1,11 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +export function numToUint8(num: number) { + return new Uint8Array([ + (num & 0xff000000) >> 24, + (num & 0x00ff0000) >> 16, + (num & 0x0000ff00) >> 8, + num & 0x000000ff, + ]); +} diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/src/uint32ArrayFrom.ts b/food-ordering-app/server/node_modules/@aws-crypto/util/src/uint32ArrayFrom.ts new file mode 100644 index 000000000..b9b6d8879 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/src/uint32ArrayFrom.ts @@ -0,0 +1,16 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +// IE 11 does not support Array.from, so we do it manually +export function uint32ArrayFrom(a_lookUpTable: Array): Uint32Array { + if (!Uint32Array.from) { + const return_array = new Uint32Array(a_lookUpTable.length) + let a_index = 0 + while (a_index < a_lookUpTable.length) { + return_array[a_index] = a_lookUpTable[a_index] + a_index += 1 + } + return return_array + } + return Uint32Array.from(a_lookUpTable) +} diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/tsconfig.json b/food-ordering-app/server/node_modules/@aws-crypto/util/tsconfig.json new file mode 100644 index 000000000..2b996d082 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./build/main", + }, + "include": ["src/**/*.ts"], + "exclude": ["node_modules/**"] +} diff --git a/food-ordering-app/server/node_modules/@aws-crypto/util/tsconfig.module.json b/food-ordering-app/server/node_modules/@aws-crypto/util/tsconfig.module.json new file mode 100644 index 000000000..7d0cfddc0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-crypto/util/tsconfig.module.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig", + "compilerOptions": { + "outDir": "build/module", + "module": "esnext", + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/LICENSE b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/LICENSE new file mode 100644 index 000000000..dd65ae06b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/README.md b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/README.md new file mode 100644 index 000000000..d6685d117 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/README.md @@ -0,0 +1,356 @@ + + +# @aws-sdk/client-cognito-identity + +## Description + +AWS SDK for JavaScript CognitoIdentity Client for Node.js, Browser and React Native. + +Amazon Cognito Federated Identities +

Amazon Cognito Federated Identities is a web service that delivers scoped temporary +credentials to mobile devices and other untrusted environments. It uniquely identifies a +device and supplies the user with a consistent identity over the lifetime of an +application.

+

Using Amazon Cognito Federated Identities, you can enable authentication with one or +more third-party identity providers (Facebook, Google, or Login with Amazon) or an Amazon +Cognito user pool, and you can also choose to support unauthenticated access from your app. +Cognito delivers a unique identifier for each user and acts as an OpenID token provider +trusted by Security Token Service (STS) to access temporary, limited-privilege Amazon Web Services credentials.

+

For a description of the authentication flow from the Amazon Cognito Developer Guide +see Authentication +Flow.

+

For more information see Amazon Cognito Federated +Identities.

+ +## Installing + +To install this package, use the CLI of your favorite package manager: + +- `npm install @aws-sdk/client-cognito-identity` +- `yarn add @aws-sdk/client-cognito-identity` +- `pnpm add @aws-sdk/client-cognito-identity` + +## Getting Started + +### Import + +The AWS SDK is modulized by clients and commands. +To send a request, you only need to import the `CognitoIdentityClient` and +the commands you need, for example `ListIdentityPoolsCommand`: + +```js +// ES5 example +const { CognitoIdentityClient, ListIdentityPoolsCommand } = require("@aws-sdk/client-cognito-identity"); +``` + +```ts +// ES6+ example +import { CognitoIdentityClient, ListIdentityPoolsCommand } from "@aws-sdk/client-cognito-identity"; +``` + +### Usage + +To send a request: + +- Instantiate a client with configuration (e.g. credentials, region). + - See [docs/CLIENTS](https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/CLIENTS.md) for configuration details. + - See [@aws-sdk/config](https://github.com/aws/aws-sdk-js-v3/blob/main/packages/config/README.md) for additional options. +- Instantiate a command with input parameters. +- Call the `send` operation on the client, providing the command object as input. + +```js +const client = new CognitoIdentityClient({ region: "REGION" }); + +const params = { /** input parameters */ }; +const command = new ListIdentityPoolsCommand(params); +``` + +#### Async/await + +We recommend using the [await](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await) +operator to wait for the promise returned by send operation as follows: + +```js +// async/await. +try { + const data = await client.send(command); + // process data. +} catch (error) { + // error handling. +} finally { + // finally. +} +``` + +#### Promises + +You can also use [Promise chaining](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises#chaining). + +```js +client + .send(command) + .then((data) => { + // process data. + }) + .catch((error) => { + // error handling. + }) + .finally(() => { + // finally. + }); +``` + +#### Aggregated client + +The aggregated client class is exported from the same package, but without the "Client" suffix. + +`CognitoIdentity` extends `CognitoIdentityClient` and additionally supports all operations, waiters, and paginators as methods. +This style may be familiar to you from the AWS SDK for JavaScript v2. + +If you are bundling the AWS SDK, we recommend using only the bare-bones client (`CognitoIdentityClient`). +More details are in the blog post on +[modular packages in AWS SDK for JavaScript](https://aws.amazon.com/blogs/developer/modular-packages-in-aws-sdk-for-javascript/). + +```ts +import { CognitoIdentity } from "@aws-sdk/client-cognito-identity"; + +const client = new CognitoIdentity({ region: "REGION" }); + +// async/await. +try { + const data = await client.listIdentityPools(params); + // process data. +} catch (error) { + // error handling. +} + +// Promises. +client + .listIdentityPools(params) + .then((data) => { + // process data. + }) + .catch((error) => { + // error handling. + }); + +// callbacks (not recommended). +client.listIdentityPools(params, (err, data) => { + // process err and data. +}); +``` + +### Troubleshooting + +When the service returns an exception, the error will include the exception information, +as well as response metadata (e.g. request id). + +```js +try { + const data = await client.send(command); + // process data. +} catch (error) { + const { requestId, cfId, extendedRequestId } = error.$metadata; + console.log({ requestId, cfId, extendedRequestId }); + /** + * The keys within exceptions are also parsed. + * You can access them by specifying exception names: + * if (error.name === 'SomeServiceException') { + * const value = error.specialKeyInException; + * } + */ +} +``` + +See also [docs/ERROR_HANDLING](https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/ERROR_HANDLING.md). + +## Getting Help + +Please use these community resources for getting help. +We use GitHub issues for tracking bugs and feature requests, but have limited bandwidth to address them. + +- Visit the [Developer Guide](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/welcome.html) + or [API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/index.html). +- Check out the blog posts tagged with [`aws-sdk-js`](https://aws.amazon.com/blogs/developer/tag/aws-sdk-js/) + on AWS Developer Blog. +- Ask a question on [StackOverflow](https://stackoverflow.com/questions/tagged/aws-sdk-js) and tag it with `aws-sdk-js`. +- Join the AWS JavaScript community on [gitter](https://gitter.im/aws/aws-sdk-js-v3). +- If it turns out that you may have found a bug, please [open an issue](https://github.com/aws/aws-sdk-js-v3/issues/new/choose). + +To test your universal JavaScript code in Node.js, browser and react-native environments, +visit our [code samples repo](https://github.com/aws-samples/aws-sdk-js-tests). + +## Contributing + +This client code is generated automatically. Any modifications will be overwritten the next time the `@aws-sdk/client-cognito-identity` package is updated. +To contribute to client you can check our [generate clients scripts](https://github.com/aws/aws-sdk-js-v3/tree/main/scripts/generate-clients). + +## License + +This SDK is distributed under the +[Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0), +see LICENSE for more information. + +## Client Commands (Operations List) + +
+ +CreateIdentityPool + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cognito-identity/command/CreateIdentityPoolCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/CreateIdentityPoolCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/CreateIdentityPoolCommandOutput/) +
+
+ +DeleteIdentities + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cognito-identity/command/DeleteIdentitiesCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/DeleteIdentitiesCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/DeleteIdentitiesCommandOutput/) +
+
+ +DeleteIdentityPool + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cognito-identity/command/DeleteIdentityPoolCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/DeleteIdentityPoolCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/DeleteIdentityPoolCommandOutput/) +
+
+ +DescribeIdentity + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cognito-identity/command/DescribeIdentityCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/DescribeIdentityCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/DescribeIdentityCommandOutput/) +
+
+ +DescribeIdentityPool + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cognito-identity/command/DescribeIdentityPoolCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/DescribeIdentityPoolCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/DescribeIdentityPoolCommandOutput/) +
+
+ +GetCredentialsForIdentity + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cognito-identity/command/GetCredentialsForIdentityCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/GetCredentialsForIdentityCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/GetCredentialsForIdentityCommandOutput/) +
+
+ +GetId + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cognito-identity/command/GetIdCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/GetIdCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/GetIdCommandOutput/) +
+
+ +GetIdentityPoolRoles + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cognito-identity/command/GetIdentityPoolRolesCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/GetIdentityPoolRolesCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/GetIdentityPoolRolesCommandOutput/) +
+
+ +GetOpenIdToken + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cognito-identity/command/GetOpenIdTokenCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/GetOpenIdTokenCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/GetOpenIdTokenCommandOutput/) +
+
+ +GetOpenIdTokenForDeveloperIdentity + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cognito-identity/command/GetOpenIdTokenForDeveloperIdentityCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/GetOpenIdTokenForDeveloperIdentityCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/GetOpenIdTokenForDeveloperIdentityCommandOutput/) +
+
+ +GetPrincipalTagAttributeMap + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cognito-identity/command/GetPrincipalTagAttributeMapCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/GetPrincipalTagAttributeMapCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/GetPrincipalTagAttributeMapCommandOutput/) +
+
+ +ListIdentities + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cognito-identity/command/ListIdentitiesCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/ListIdentitiesCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/ListIdentitiesCommandOutput/) +
+
+ +ListIdentityPools + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cognito-identity/command/ListIdentityPoolsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/ListIdentityPoolsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/ListIdentityPoolsCommandOutput/) +
+
+ +ListTagsForResource + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cognito-identity/command/ListTagsForResourceCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/ListTagsForResourceCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/ListTagsForResourceCommandOutput/) +
+
+ +LookupDeveloperIdentity + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cognito-identity/command/LookupDeveloperIdentityCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/LookupDeveloperIdentityCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/LookupDeveloperIdentityCommandOutput/) +
+
+ +MergeDeveloperIdentities + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cognito-identity/command/MergeDeveloperIdentitiesCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/MergeDeveloperIdentitiesCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/MergeDeveloperIdentitiesCommandOutput/) +
+
+ +SetIdentityPoolRoles + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cognito-identity/command/SetIdentityPoolRolesCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/SetIdentityPoolRolesCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/SetIdentityPoolRolesCommandOutput/) +
+
+ +SetPrincipalTagAttributeMap + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cognito-identity/command/SetPrincipalTagAttributeMapCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/SetPrincipalTagAttributeMapCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/SetPrincipalTagAttributeMapCommandOutput/) +
+
+ +TagResource + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cognito-identity/command/TagResourceCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/TagResourceCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/TagResourceCommandOutput/) +
+
+ +UnlinkDeveloperIdentity + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cognito-identity/command/UnlinkDeveloperIdentityCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/UnlinkDeveloperIdentityCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/UnlinkDeveloperIdentityCommandOutput/) +
+
+ +UnlinkIdentity + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cognito-identity/command/UnlinkIdentityCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/UnlinkIdentityCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/UnlinkIdentityCommandOutput/) +
+
+ +UntagResource + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cognito-identity/command/UntagResourceCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/UntagResourceCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/UntagResourceCommandOutput/) +
+
+ +UpdateIdentityPool + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cognito-identity/command/UpdateIdentityPoolCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/UpdateIdentityPoolCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cognito-identity/Interface/UpdateIdentityPoolCommandOutput/) +
diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-cjs/auth/httpAuthSchemeProvider.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-cjs/auth/httpAuthSchemeProvider.js new file mode 100644 index 000000000..5aac6b8fe --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-cjs/auth/httpAuthSchemeProvider.js @@ -0,0 +1,75 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveHttpAuthSchemeConfig = exports.defaultCognitoIdentityHttpAuthSchemeProvider = exports.defaultCognitoIdentityHttpAuthSchemeParametersProvider = void 0; +const core_1 = require("@aws-sdk/core"); +const util_middleware_1 = require("@smithy/util-middleware"); +const defaultCognitoIdentityHttpAuthSchemeParametersProvider = async (config, context, input) => { + return { + operation: (0, util_middleware_1.getSmithyContext)(context).operation, + region: await (0, util_middleware_1.normalizeProvider)(config.region)() || (() => { + throw new Error("expected `region` to be configured for `aws.auth#sigv4`"); + })(), + }; +}; +exports.defaultCognitoIdentityHttpAuthSchemeParametersProvider = defaultCognitoIdentityHttpAuthSchemeParametersProvider; +function createAwsAuthSigv4HttpAuthOption(authParameters) { + return { + schemeId: "aws.auth#sigv4", + signingProperties: { + name: "cognito-identity", + region: authParameters.region, + }, + propertiesExtractor: (config, context) => ({ + signingProperties: { + config, + context, + }, + }), + }; +} +function createSmithyApiNoAuthHttpAuthOption(authParameters) { + return { + schemeId: "smithy.api#noAuth", + }; +} +const defaultCognitoIdentityHttpAuthSchemeProvider = (authParameters) => { + const options = []; + switch (authParameters.operation) { + case "GetCredentialsForIdentity": + { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + ; + case "GetId": + { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + ; + case "GetOpenIdToken": + { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + ; + case "UnlinkIdentity": + { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + ; + default: { + options.push(createAwsAuthSigv4HttpAuthOption(authParameters)); + } + } + return options; +}; +exports.defaultCognitoIdentityHttpAuthSchemeProvider = defaultCognitoIdentityHttpAuthSchemeProvider; +const resolveHttpAuthSchemeConfig = (config) => { + const config_0 = (0, core_1.resolveAwsSdkSigV4Config)(config); + return Object.assign(config_0, { + authSchemePreference: (0, util_middleware_1.normalizeProvider)(config.authSchemePreference ?? []), + }); +}; +exports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-cjs/endpoint/endpointResolver.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-cjs/endpoint/endpointResolver.js new file mode 100644 index 000000000..7258a356f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-cjs/endpoint/endpointResolver.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.defaultEndpointResolver = void 0; +const util_endpoints_1 = require("@aws-sdk/util-endpoints"); +const util_endpoints_2 = require("@smithy/util-endpoints"); +const ruleset_1 = require("./ruleset"); +const cache = new util_endpoints_2.EndpointCache({ + size: 50, + params: ["Endpoint", "Region", "UseDualStack", "UseFIPS"], +}); +const defaultEndpointResolver = (endpointParams, context = {}) => { + return cache.get(endpointParams, () => (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, { + endpointParams: endpointParams, + logger: context.logger, + })); +}; +exports.defaultEndpointResolver = defaultEndpointResolver; +util_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-cjs/endpoint/ruleset.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-cjs/endpoint/ruleset.js new file mode 100644 index 000000000..e1510fa27 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-cjs/endpoint/ruleset.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ruleSet = void 0; +const w = "required", x = "fn", y = "argv", z = "ref"; +const a = true, b = "isSet", c = "booleanEquals", d = "error", e = "endpoint", f = "tree", g = "PartitionResult", h = "getAttr", i = "stringEquals", j = { [w]: false, "type": "string" }, k = { [w]: true, "default": false, "type": "boolean" }, l = { [z]: "Endpoint" }, m = { [x]: c, [y]: [{ [z]: "UseFIPS" }, true] }, n = { [x]: c, [y]: [{ [z]: "UseDualStack" }, true] }, o = {}, p = { [z]: "Region" }, q = { [x]: h, [y]: [{ [z]: g }, "supportsFIPS"] }, r = { [z]: g }, s = { [x]: c, [y]: [true, { [x]: h, [y]: [r, "supportsDualStack"] }] }, t = [m], u = [n], v = [p]; +const _data = { version: "1.0", parameters: { Region: j, UseDualStack: k, UseFIPS: k, Endpoint: j }, rules: [{ conditions: [{ [x]: b, [y]: [l] }], rules: [{ conditions: t, error: "Invalid Configuration: FIPS and custom endpoint are not supported", type: d }, { conditions: u, error: "Invalid Configuration: Dualstack and custom endpoint are not supported", type: d }, { endpoint: { url: l, properties: o, headers: o }, type: e }], type: f }, { conditions: [{ [x]: b, [y]: v }], rules: [{ conditions: [{ [x]: "aws.partition", [y]: v, assign: g }], rules: [{ conditions: [m, n], rules: [{ conditions: [{ [x]: c, [y]: [a, q] }, s], rules: [{ conditions: [{ [x]: i, [y]: [p, "us-east-1"] }], endpoint: { url: "https://cognito-identity-fips.us-east-1.amazonaws.com", properties: o, headers: o }, type: e }, { conditions: [{ [x]: i, [y]: [p, "us-east-2"] }], endpoint: { url: "https://cognito-identity-fips.us-east-2.amazonaws.com", properties: o, headers: o }, type: e }, { conditions: [{ [x]: i, [y]: [p, "us-west-1"] }], endpoint: { url: "https://cognito-identity-fips.us-west-1.amazonaws.com", properties: o, headers: o }, type: e }, { conditions: [{ [x]: i, [y]: [p, "us-west-2"] }], endpoint: { url: "https://cognito-identity-fips.us-west-2.amazonaws.com", properties: o, headers: o }, type: e }, { endpoint: { url: "https://cognito-identity-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", properties: o, headers: o }, type: e }], type: f }, { error: "FIPS and DualStack are enabled, but this partition does not support one or both", type: d }], type: f }, { conditions: t, rules: [{ conditions: [{ [x]: c, [y]: [q, a] }], rules: [{ endpoint: { url: "https://cognito-identity-fips.{Region}.{PartitionResult#dnsSuffix}", properties: o, headers: o }, type: e }], type: f }, { error: "FIPS is enabled but this partition does not support FIPS", type: d }], type: f }, { conditions: u, rules: [{ conditions: [s], rules: [{ conditions: [{ [x]: i, [y]: ["aws", { [x]: h, [y]: [r, "name"] }] }], endpoint: { url: "https://cognito-identity.{Region}.amazonaws.com", properties: o, headers: o }, type: e }, { endpoint: { url: "https://cognito-identity.{Region}.{PartitionResult#dualStackDnsSuffix}", properties: o, headers: o }, type: e }], type: f }, { error: "DualStack is enabled but this partition does not support DualStack", type: d }], type: f }, { endpoint: { url: "https://cognito-identity.{Region}.{PartitionResult#dnsSuffix}", properties: o, headers: o }, type: e }], type: f }], type: f }, { error: "Invalid Configuration: Missing Region", type: d }] }; +exports.ruleSet = _data; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-cjs/index.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-cjs/index.js new file mode 100644 index 000000000..00eaf12b5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-cjs/index.js @@ -0,0 +1,497 @@ +'use strict'; + +var middlewareHostHeader = require('@aws-sdk/middleware-host-header'); +var middlewareLogger = require('@aws-sdk/middleware-logger'); +var middlewareRecursionDetection = require('@aws-sdk/middleware-recursion-detection'); +var middlewareUserAgent = require('@aws-sdk/middleware-user-agent'); +var configResolver = require('@smithy/config-resolver'); +var core = require('@smithy/core'); +var schema = require('@smithy/core/schema'); +var middlewareContentLength = require('@smithy/middleware-content-length'); +var middlewareEndpoint = require('@smithy/middleware-endpoint'); +var middlewareRetry = require('@smithy/middleware-retry'); +var smithyClient = require('@smithy/smithy-client'); +var httpAuthSchemeProvider = require('./auth/httpAuthSchemeProvider'); +var runtimeConfig = require('./runtimeConfig'); +var regionConfigResolver = require('@aws-sdk/region-config-resolver'); +var protocolHttp = require('@smithy/protocol-http'); +var schemas_0 = require('./schemas/schemas_0'); +var errors = require('./models/errors'); +var CognitoIdentityServiceException = require('./models/CognitoIdentityServiceException'); + +const resolveClientEndpointParameters = (options) => { + return Object.assign(options, { + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + useFipsEndpoint: options.useFipsEndpoint ?? false, + defaultSigningName: "cognito-identity", + }); +}; +const commonParams = { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }, +}; + +const getHttpAuthExtensionConfiguration = (runtimeConfig) => { + const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; + let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; + let _credentials = runtimeConfig.credentials; + return { + setHttpAuthScheme(httpAuthScheme) { + const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId); + if (index === -1) { + _httpAuthSchemes.push(httpAuthScheme); + } + else { + _httpAuthSchemes.splice(index, 1, httpAuthScheme); + } + }, + httpAuthSchemes() { + return _httpAuthSchemes; + }, + setHttpAuthSchemeProvider(httpAuthSchemeProvider) { + _httpAuthSchemeProvider = httpAuthSchemeProvider; + }, + httpAuthSchemeProvider() { + return _httpAuthSchemeProvider; + }, + setCredentials(credentials) { + _credentials = credentials; + }, + credentials() { + return _credentials; + }, + }; +}; +const resolveHttpAuthRuntimeConfig = (config) => { + return { + httpAuthSchemes: config.httpAuthSchemes(), + httpAuthSchemeProvider: config.httpAuthSchemeProvider(), + credentials: config.credentials(), + }; +}; + +const resolveRuntimeExtensions = (runtimeConfig, extensions) => { + const extensionConfiguration = Object.assign(regionConfigResolver.getAwsRegionExtensionConfiguration(runtimeConfig), smithyClient.getDefaultExtensionConfiguration(runtimeConfig), protocolHttp.getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig)); + extensions.forEach((extension) => extension.configure(extensionConfiguration)); + return Object.assign(runtimeConfig, regionConfigResolver.resolveAwsRegionExtensionConfiguration(extensionConfiguration), smithyClient.resolveDefaultRuntimeConfig(extensionConfiguration), protocolHttp.resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration)); +}; + +class CognitoIdentityClient extends smithyClient.Client { + config; + constructor(...[configuration]) { + const _config_0 = runtimeConfig.getRuntimeConfig(configuration || {}); + super(_config_0); + this.initConfig = _config_0; + const _config_1 = resolveClientEndpointParameters(_config_0); + const _config_2 = middlewareUserAgent.resolveUserAgentConfig(_config_1); + const _config_3 = middlewareRetry.resolveRetryConfig(_config_2); + const _config_4 = configResolver.resolveRegionConfig(_config_3); + const _config_5 = middlewareHostHeader.resolveHostHeaderConfig(_config_4); + const _config_6 = middlewareEndpoint.resolveEndpointConfig(_config_5); + const _config_7 = httpAuthSchemeProvider.resolveHttpAuthSchemeConfig(_config_6); + const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []); + this.config = _config_8; + this.middlewareStack.use(schema.getSchemaSerdePlugin(this.config)); + this.middlewareStack.use(middlewareUserAgent.getUserAgentPlugin(this.config)); + this.middlewareStack.use(middlewareRetry.getRetryPlugin(this.config)); + this.middlewareStack.use(middlewareContentLength.getContentLengthPlugin(this.config)); + this.middlewareStack.use(middlewareHostHeader.getHostHeaderPlugin(this.config)); + this.middlewareStack.use(middlewareLogger.getLoggerPlugin(this.config)); + this.middlewareStack.use(middlewareRecursionDetection.getRecursionDetectionPlugin(this.config)); + this.middlewareStack.use(core.getHttpAuthSchemeEndpointRuleSetPlugin(this.config, { + httpAuthSchemeParametersProvider: httpAuthSchemeProvider.defaultCognitoIdentityHttpAuthSchemeParametersProvider, + identityProviderConfigProvider: async (config) => new core.DefaultIdentityProviderConfig({ + "aws.auth#sigv4": config.credentials, + }), + })); + this.middlewareStack.use(core.getHttpSigningPlugin(this.config)); + } + destroy() { + super.destroy(); + } +} + +class CreateIdentityPoolCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "CreateIdentityPool", {}) + .n("CognitoIdentityClient", "CreateIdentityPoolCommand") + .sc(schemas_0.CreateIdentityPool$) + .build() { +} + +class DeleteIdentitiesCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "DeleteIdentities", {}) + .n("CognitoIdentityClient", "DeleteIdentitiesCommand") + .sc(schemas_0.DeleteIdentities$) + .build() { +} + +class DeleteIdentityPoolCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "DeleteIdentityPool", {}) + .n("CognitoIdentityClient", "DeleteIdentityPoolCommand") + .sc(schemas_0.DeleteIdentityPool$) + .build() { +} + +class DescribeIdentityCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "DescribeIdentity", {}) + .n("CognitoIdentityClient", "DescribeIdentityCommand") + .sc(schemas_0.DescribeIdentity$) + .build() { +} + +class DescribeIdentityPoolCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "DescribeIdentityPool", {}) + .n("CognitoIdentityClient", "DescribeIdentityPoolCommand") + .sc(schemas_0.DescribeIdentityPool$) + .build() { +} + +class GetCredentialsForIdentityCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "GetCredentialsForIdentity", {}) + .n("CognitoIdentityClient", "GetCredentialsForIdentityCommand") + .sc(schemas_0.GetCredentialsForIdentity$) + .build() { +} + +class GetIdCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "GetId", {}) + .n("CognitoIdentityClient", "GetIdCommand") + .sc(schemas_0.GetId$) + .build() { +} + +class GetIdentityPoolRolesCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "GetIdentityPoolRoles", {}) + .n("CognitoIdentityClient", "GetIdentityPoolRolesCommand") + .sc(schemas_0.GetIdentityPoolRoles$) + .build() { +} + +class GetOpenIdTokenCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "GetOpenIdToken", {}) + .n("CognitoIdentityClient", "GetOpenIdTokenCommand") + .sc(schemas_0.GetOpenIdToken$) + .build() { +} + +class GetOpenIdTokenForDeveloperIdentityCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "GetOpenIdTokenForDeveloperIdentity", {}) + .n("CognitoIdentityClient", "GetOpenIdTokenForDeveloperIdentityCommand") + .sc(schemas_0.GetOpenIdTokenForDeveloperIdentity$) + .build() { +} + +class GetPrincipalTagAttributeMapCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "GetPrincipalTagAttributeMap", {}) + .n("CognitoIdentityClient", "GetPrincipalTagAttributeMapCommand") + .sc(schemas_0.GetPrincipalTagAttributeMap$) + .build() { +} + +class ListIdentitiesCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "ListIdentities", {}) + .n("CognitoIdentityClient", "ListIdentitiesCommand") + .sc(schemas_0.ListIdentities$) + .build() { +} + +class ListIdentityPoolsCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "ListIdentityPools", {}) + .n("CognitoIdentityClient", "ListIdentityPoolsCommand") + .sc(schemas_0.ListIdentityPools$) + .build() { +} + +class ListTagsForResourceCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "ListTagsForResource", {}) + .n("CognitoIdentityClient", "ListTagsForResourceCommand") + .sc(schemas_0.ListTagsForResource$) + .build() { +} + +class LookupDeveloperIdentityCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "LookupDeveloperIdentity", {}) + .n("CognitoIdentityClient", "LookupDeveloperIdentityCommand") + .sc(schemas_0.LookupDeveloperIdentity$) + .build() { +} + +class MergeDeveloperIdentitiesCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "MergeDeveloperIdentities", {}) + .n("CognitoIdentityClient", "MergeDeveloperIdentitiesCommand") + .sc(schemas_0.MergeDeveloperIdentities$) + .build() { +} + +class SetIdentityPoolRolesCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "SetIdentityPoolRoles", {}) + .n("CognitoIdentityClient", "SetIdentityPoolRolesCommand") + .sc(schemas_0.SetIdentityPoolRoles$) + .build() { +} + +class SetPrincipalTagAttributeMapCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "SetPrincipalTagAttributeMap", {}) + .n("CognitoIdentityClient", "SetPrincipalTagAttributeMapCommand") + .sc(schemas_0.SetPrincipalTagAttributeMap$) + .build() { +} + +class TagResourceCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "TagResource", {}) + .n("CognitoIdentityClient", "TagResourceCommand") + .sc(schemas_0.TagResource$) + .build() { +} + +class UnlinkDeveloperIdentityCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "UnlinkDeveloperIdentity", {}) + .n("CognitoIdentityClient", "UnlinkDeveloperIdentityCommand") + .sc(schemas_0.UnlinkDeveloperIdentity$) + .build() { +} + +class UnlinkIdentityCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "UnlinkIdentity", {}) + .n("CognitoIdentityClient", "UnlinkIdentityCommand") + .sc(schemas_0.UnlinkIdentity$) + .build() { +} + +class UntagResourceCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "UntagResource", {}) + .n("CognitoIdentityClient", "UntagResourceCommand") + .sc(schemas_0.UntagResource$) + .build() { +} + +class UpdateIdentityPoolCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "UpdateIdentityPool", {}) + .n("CognitoIdentityClient", "UpdateIdentityPoolCommand") + .sc(schemas_0.UpdateIdentityPool$) + .build() { +} + +const paginateListIdentityPools = core.createPaginator(CognitoIdentityClient, ListIdentityPoolsCommand, "NextToken", "NextToken", "MaxResults"); + +const commands = { + CreateIdentityPoolCommand, + DeleteIdentitiesCommand, + DeleteIdentityPoolCommand, + DescribeIdentityCommand, + DescribeIdentityPoolCommand, + GetCredentialsForIdentityCommand, + GetIdCommand, + GetIdentityPoolRolesCommand, + GetOpenIdTokenCommand, + GetOpenIdTokenForDeveloperIdentityCommand, + GetPrincipalTagAttributeMapCommand, + ListIdentitiesCommand, + ListIdentityPoolsCommand, + ListTagsForResourceCommand, + LookupDeveloperIdentityCommand, + MergeDeveloperIdentitiesCommand, + SetIdentityPoolRolesCommand, + SetPrincipalTagAttributeMapCommand, + TagResourceCommand, + UnlinkDeveloperIdentityCommand, + UnlinkIdentityCommand, + UntagResourceCommand, + UpdateIdentityPoolCommand, +}; +const paginators = { + paginateListIdentityPools, +}; +class CognitoIdentity extends CognitoIdentityClient { +} +smithyClient.createAggregatedClient(commands, CognitoIdentity, { paginators }); + +const AmbiguousRoleResolutionType = { + AUTHENTICATED_ROLE: "AuthenticatedRole", + DENY: "Deny", +}; +const ErrorCode = { + ACCESS_DENIED: "AccessDenied", + INTERNAL_SERVER_ERROR: "InternalServerError", +}; +const MappingRuleMatchType = { + CONTAINS: "Contains", + EQUALS: "Equals", + NOT_EQUAL: "NotEqual", + STARTS_WITH: "StartsWith", +}; +const RoleMappingType = { + RULES: "Rules", + TOKEN: "Token", +}; + +exports.$Command = smithyClient.Command; +exports.__Client = smithyClient.Client; +exports.CognitoIdentityServiceException = CognitoIdentityServiceException.CognitoIdentityServiceException; +exports.AmbiguousRoleResolutionType = AmbiguousRoleResolutionType; +exports.CognitoIdentity = CognitoIdentity; +exports.CognitoIdentityClient = CognitoIdentityClient; +exports.CreateIdentityPoolCommand = CreateIdentityPoolCommand; +exports.DeleteIdentitiesCommand = DeleteIdentitiesCommand; +exports.DeleteIdentityPoolCommand = DeleteIdentityPoolCommand; +exports.DescribeIdentityCommand = DescribeIdentityCommand; +exports.DescribeIdentityPoolCommand = DescribeIdentityPoolCommand; +exports.ErrorCode = ErrorCode; +exports.GetCredentialsForIdentityCommand = GetCredentialsForIdentityCommand; +exports.GetIdCommand = GetIdCommand; +exports.GetIdentityPoolRolesCommand = GetIdentityPoolRolesCommand; +exports.GetOpenIdTokenCommand = GetOpenIdTokenCommand; +exports.GetOpenIdTokenForDeveloperIdentityCommand = GetOpenIdTokenForDeveloperIdentityCommand; +exports.GetPrincipalTagAttributeMapCommand = GetPrincipalTagAttributeMapCommand; +exports.ListIdentitiesCommand = ListIdentitiesCommand; +exports.ListIdentityPoolsCommand = ListIdentityPoolsCommand; +exports.ListTagsForResourceCommand = ListTagsForResourceCommand; +exports.LookupDeveloperIdentityCommand = LookupDeveloperIdentityCommand; +exports.MappingRuleMatchType = MappingRuleMatchType; +exports.MergeDeveloperIdentitiesCommand = MergeDeveloperIdentitiesCommand; +exports.RoleMappingType = RoleMappingType; +exports.SetIdentityPoolRolesCommand = SetIdentityPoolRolesCommand; +exports.SetPrincipalTagAttributeMapCommand = SetPrincipalTagAttributeMapCommand; +exports.TagResourceCommand = TagResourceCommand; +exports.UnlinkDeveloperIdentityCommand = UnlinkDeveloperIdentityCommand; +exports.UnlinkIdentityCommand = UnlinkIdentityCommand; +exports.UntagResourceCommand = UntagResourceCommand; +exports.UpdateIdentityPoolCommand = UpdateIdentityPoolCommand; +exports.paginateListIdentityPools = paginateListIdentityPools; +Object.prototype.hasOwnProperty.call(schemas_0, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: schemas_0['__proto__'] + }); + +Object.keys(schemas_0).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = schemas_0[k]; +}); +Object.prototype.hasOwnProperty.call(errors, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: errors['__proto__'] + }); + +Object.keys(errors).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = errors[k]; +}); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-cjs/models/CognitoIdentityServiceException.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-cjs/models/CognitoIdentityServiceException.js new file mode 100644 index 000000000..8d4847ac3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-cjs/models/CognitoIdentityServiceException.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CognitoIdentityServiceException = exports.__ServiceException = void 0; +const smithy_client_1 = require("@smithy/smithy-client"); +Object.defineProperty(exports, "__ServiceException", { enumerable: true, get: function () { return smithy_client_1.ServiceException; } }); +class CognitoIdentityServiceException extends smithy_client_1.ServiceException { + constructor(options) { + super(options); + Object.setPrototypeOf(this, CognitoIdentityServiceException.prototype); + } +} +exports.CognitoIdentityServiceException = CognitoIdentityServiceException; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-cjs/models/errors.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-cjs/models/errors.js new file mode 100644 index 000000000..c9378ef6f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-cjs/models/errors.js @@ -0,0 +1,147 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ConcurrentModificationException = exports.DeveloperUserAlreadyRegisteredException = exports.InvalidIdentityPoolConfigurationException = exports.ExternalServiceException = exports.ResourceNotFoundException = exports.TooManyRequestsException = exports.ResourceConflictException = exports.NotAuthorizedException = exports.LimitExceededException = exports.InvalidParameterException = exports.InternalErrorException = void 0; +const CognitoIdentityServiceException_1 = require("./CognitoIdentityServiceException"); +class InternalErrorException extends CognitoIdentityServiceException_1.CognitoIdentityServiceException { + name = "InternalErrorException"; + $fault = "server"; + constructor(opts) { + super({ + name: "InternalErrorException", + $fault: "server", + ...opts, + }); + Object.setPrototypeOf(this, InternalErrorException.prototype); + } +} +exports.InternalErrorException = InternalErrorException; +class InvalidParameterException extends CognitoIdentityServiceException_1.CognitoIdentityServiceException { + name = "InvalidParameterException"; + $fault = "client"; + constructor(opts) { + super({ + name: "InvalidParameterException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidParameterException.prototype); + } +} +exports.InvalidParameterException = InvalidParameterException; +class LimitExceededException extends CognitoIdentityServiceException_1.CognitoIdentityServiceException { + name = "LimitExceededException"; + $fault = "client"; + constructor(opts) { + super({ + name: "LimitExceededException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, LimitExceededException.prototype); + } +} +exports.LimitExceededException = LimitExceededException; +class NotAuthorizedException extends CognitoIdentityServiceException_1.CognitoIdentityServiceException { + name = "NotAuthorizedException"; + $fault = "client"; + constructor(opts) { + super({ + name: "NotAuthorizedException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, NotAuthorizedException.prototype); + } +} +exports.NotAuthorizedException = NotAuthorizedException; +class ResourceConflictException extends CognitoIdentityServiceException_1.CognitoIdentityServiceException { + name = "ResourceConflictException"; + $fault = "client"; + constructor(opts) { + super({ + name: "ResourceConflictException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ResourceConflictException.prototype); + } +} +exports.ResourceConflictException = ResourceConflictException; +class TooManyRequestsException extends CognitoIdentityServiceException_1.CognitoIdentityServiceException { + name = "TooManyRequestsException"; + $fault = "client"; + constructor(opts) { + super({ + name: "TooManyRequestsException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, TooManyRequestsException.prototype); + } +} +exports.TooManyRequestsException = TooManyRequestsException; +class ResourceNotFoundException extends CognitoIdentityServiceException_1.CognitoIdentityServiceException { + name = "ResourceNotFoundException"; + $fault = "client"; + constructor(opts) { + super({ + name: "ResourceNotFoundException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ResourceNotFoundException.prototype); + } +} +exports.ResourceNotFoundException = ResourceNotFoundException; +class ExternalServiceException extends CognitoIdentityServiceException_1.CognitoIdentityServiceException { + name = "ExternalServiceException"; + $fault = "client"; + constructor(opts) { + super({ + name: "ExternalServiceException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ExternalServiceException.prototype); + } +} +exports.ExternalServiceException = ExternalServiceException; +class InvalidIdentityPoolConfigurationException extends CognitoIdentityServiceException_1.CognitoIdentityServiceException { + name = "InvalidIdentityPoolConfigurationException"; + $fault = "client"; + constructor(opts) { + super({ + name: "InvalidIdentityPoolConfigurationException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidIdentityPoolConfigurationException.prototype); + } +} +exports.InvalidIdentityPoolConfigurationException = InvalidIdentityPoolConfigurationException; +class DeveloperUserAlreadyRegisteredException extends CognitoIdentityServiceException_1.CognitoIdentityServiceException { + name = "DeveloperUserAlreadyRegisteredException"; + $fault = "client"; + constructor(opts) { + super({ + name: "DeveloperUserAlreadyRegisteredException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, DeveloperUserAlreadyRegisteredException.prototype); + } +} +exports.DeveloperUserAlreadyRegisteredException = DeveloperUserAlreadyRegisteredException; +class ConcurrentModificationException extends CognitoIdentityServiceException_1.CognitoIdentityServiceException { + name = "ConcurrentModificationException"; + $fault = "client"; + constructor(opts) { + super({ + name: "ConcurrentModificationException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ConcurrentModificationException.prototype); + } +} +exports.ConcurrentModificationException = ConcurrentModificationException; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-cjs/runtimeConfig.browser.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-cjs/runtimeConfig.browser.js new file mode 100644 index 000000000..98171cc2b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-cjs/runtimeConfig.browser.js @@ -0,0 +1,38 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const tslib_1 = require("tslib"); +const package_json_1 = tslib_1.__importDefault(require("../package.json")); +const sha256_browser_1 = require("@aws-crypto/sha256-browser"); +const util_user_agent_browser_1 = require("@aws-sdk/util-user-agent-browser"); +const config_resolver_1 = require("@smithy/config-resolver"); +const fetch_http_handler_1 = require("@smithy/fetch-http-handler"); +const invalid_dependency_1 = require("@smithy/invalid-dependency"); +const smithy_client_1 = require("@smithy/smithy-client"); +const util_body_length_browser_1 = require("@smithy/util-body-length-browser"); +const util_defaults_mode_browser_1 = require("@smithy/util-defaults-mode-browser"); +const util_retry_1 = require("@smithy/util-retry"); +const runtimeConfig_shared_1 = require("./runtimeConfig.shared"); +const getRuntimeConfig = (config) => { + const defaultsMode = (0, util_defaults_mode_browser_1.resolveDefaultsModeConfig)(config); + const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode); + const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config); + return { + ...clientSharedValues, + ...config, + runtime: "browser", + defaultsMode, + bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_browser_1.calculateBodyLength, + credentialDefaultProvider: config?.credentialDefaultProvider ?? ((_) => () => Promise.reject(new Error("Credential is missing"))), + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? (0, util_user_agent_browser_1.createDefaultUserAgentProvider)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }), + maxAttempts: config?.maxAttempts ?? util_retry_1.DEFAULT_MAX_ATTEMPTS, + region: config?.region ?? (0, invalid_dependency_1.invalidProvider)("Region is missing"), + requestHandler: fetch_http_handler_1.FetchHttpHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? (async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE), + sha256: config?.sha256 ?? sha256_browser_1.Sha256, + streamCollector: config?.streamCollector ?? fetch_http_handler_1.streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (() => Promise.resolve(config_resolver_1.DEFAULT_USE_DUALSTACK_ENDPOINT)), + useFipsEndpoint: config?.useFipsEndpoint ?? (() => Promise.resolve(config_resolver_1.DEFAULT_USE_FIPS_ENDPOINT)), + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-cjs/runtimeConfig.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-cjs/runtimeConfig.js new file mode 100644 index 000000000..0c55a48f1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-cjs/runtimeConfig.js @@ -0,0 +1,53 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const tslib_1 = require("tslib"); +const package_json_1 = tslib_1.__importDefault(require("../package.json")); +const core_1 = require("@aws-sdk/core"); +const credential_provider_node_1 = require("@aws-sdk/credential-provider-node"); +const util_user_agent_node_1 = require("@aws-sdk/util-user-agent-node"); +const config_resolver_1 = require("@smithy/config-resolver"); +const hash_node_1 = require("@smithy/hash-node"); +const middleware_retry_1 = require("@smithy/middleware-retry"); +const node_config_provider_1 = require("@smithy/node-config-provider"); +const node_http_handler_1 = require("@smithy/node-http-handler"); +const smithy_client_1 = require("@smithy/smithy-client"); +const util_body_length_node_1 = require("@smithy/util-body-length-node"); +const util_defaults_mode_node_1 = require("@smithy/util-defaults-mode-node"); +const util_retry_1 = require("@smithy/util-retry"); +const runtimeConfig_shared_1 = require("./runtimeConfig.shared"); +const getRuntimeConfig = (config) => { + (0, smithy_client_1.emitWarningIfUnsupportedVersion)(process.version); + const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config); + const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode); + const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config); + (0, core_1.emitWarningIfUnsupportedVersion)(process.version); + const loaderConfig = { + profile: config?.profile, + logger: clientSharedValues.logger, + }; + return { + ...clientSharedValues, + ...config, + runtime: "node", + defaultsMode, + authSchemePreference: config?.authSchemePreference ?? (0, node_config_provider_1.loadConfig)(core_1.NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig), + bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength, + credentialDefaultProvider: config?.credentialDefaultProvider ?? credential_provider_node_1.defaultProvider, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? (0, util_user_agent_node_1.createDefaultUserAgentProvider)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }), + maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config), + region: config?.region ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, { ...config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }), + requestHandler: node_http_handler_1.NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? + (0, node_config_provider_1.loadConfig)({ + ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS, + default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE, + }, config), + sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, "sha256"), + streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + userAgentAppId: config?.userAgentAppId ?? (0, node_config_provider_1.loadConfig)(util_user_agent_node_1.NODE_APP_ID_CONFIG_OPTIONS, loaderConfig), + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-cjs/runtimeConfig.native.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-cjs/runtimeConfig.native.js new file mode 100644 index 000000000..34c5f8ece --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-cjs/runtimeConfig.native.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const sha256_js_1 = require("@aws-crypto/sha256-js"); +const runtimeConfig_browser_1 = require("./runtimeConfig.browser"); +const getRuntimeConfig = (config) => { + const browserDefaults = (0, runtimeConfig_browser_1.getRuntimeConfig)(config); + return { + ...browserDefaults, + ...config, + runtime: "react-native", + sha256: config?.sha256 ?? sha256_js_1.Sha256, + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-cjs/runtimeConfig.shared.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-cjs/runtimeConfig.shared.js new file mode 100644 index 000000000..c3ee7d40c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-cjs/runtimeConfig.shared.js @@ -0,0 +1,50 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const core_1 = require("@aws-sdk/core"); +const protocols_1 = require("@aws-sdk/core/protocols"); +const core_2 = require("@smithy/core"); +const smithy_client_1 = require("@smithy/smithy-client"); +const url_parser_1 = require("@smithy/url-parser"); +const util_base64_1 = require("@smithy/util-base64"); +const util_utf8_1 = require("@smithy/util-utf8"); +const httpAuthSchemeProvider_1 = require("./auth/httpAuthSchemeProvider"); +const endpointResolver_1 = require("./endpoint/endpointResolver"); +const schemas_0_1 = require("./schemas/schemas_0"); +const getRuntimeConfig = (config) => { + return { + apiVersion: "2014-06-30", + base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64, + base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64, + disableHostPrefix: config?.disableHostPrefix ?? false, + endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver, + extensions: config?.extensions ?? [], + httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? httpAuthSchemeProvider_1.defaultCognitoIdentityHttpAuthSchemeProvider, + httpAuthSchemes: config?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: (ipc) => ipc.getIdentityProvider("aws.auth#sigv4"), + signer: new core_1.AwsSdkSigV4Signer(), + }, + { + schemeId: "smithy.api#noAuth", + identityProvider: (ipc) => ipc.getIdentityProvider("smithy.api#noAuth") || (async () => ({})), + signer: new core_2.NoAuthSigner(), + }, + ], + logger: config?.logger ?? new smithy_client_1.NoOpLogger(), + protocol: config?.protocol ?? protocols_1.AwsJson1_1Protocol, + protocolSettings: config?.protocolSettings ?? { + defaultNamespace: "com.amazonaws.cognitoidentity", + errorTypeRegistries: schemas_0_1.errorTypeRegistries, + xmlNamespace: "http://cognito-identity.amazonaws.com/doc/2014-06-30/", + version: "2014-06-30", + serviceTarget: "AWSCognitoIdentityService", + }, + serviceId: config?.serviceId ?? "Cognito Identity", + urlParser: config?.urlParser ?? url_parser_1.parseUrl, + utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8, + utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8, + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-cjs/schemas/schemas_0.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-cjs/schemas/schemas_0.js new file mode 100644 index 000000000..23c6dea01 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-cjs/schemas/schemas_0.js @@ -0,0 +1,569 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SetIdentityPoolRolesInput$ = exports.RulesConfigurationType$ = exports.RoleMapping$ = exports.MergeDeveloperIdentitiesResponse$ = exports.MergeDeveloperIdentitiesInput$ = exports.MappingRule$ = exports.LookupDeveloperIdentityResponse$ = exports.LookupDeveloperIdentityInput$ = exports.ListTagsForResourceResponse$ = exports.ListTagsForResourceInput$ = exports.ListIdentityPoolsResponse$ = exports.ListIdentityPoolsInput$ = exports.ListIdentitiesResponse$ = exports.ListIdentitiesInput$ = exports.IdentityPoolShortDescription$ = exports.IdentityPool$ = exports.IdentityDescription$ = exports.GetPrincipalTagAttributeMapResponse$ = exports.GetPrincipalTagAttributeMapInput$ = exports.GetOpenIdTokenResponse$ = exports.GetOpenIdTokenInput$ = exports.GetOpenIdTokenForDeveloperIdentityResponse$ = exports.GetOpenIdTokenForDeveloperIdentityInput$ = exports.GetIdResponse$ = exports.GetIdInput$ = exports.GetIdentityPoolRolesResponse$ = exports.GetIdentityPoolRolesInput$ = exports.GetCredentialsForIdentityResponse$ = exports.GetCredentialsForIdentityInput$ = exports.DescribeIdentityPoolInput$ = exports.DescribeIdentityInput$ = exports.DeleteIdentityPoolInput$ = exports.DeleteIdentitiesResponse$ = exports.DeleteIdentitiesInput$ = exports.Credentials$ = exports.CreateIdentityPoolInput$ = exports.CognitoIdentityProvider$ = exports.errorTypeRegistries = exports.TooManyRequestsException$ = exports.ResourceNotFoundException$ = exports.ResourceConflictException$ = exports.NotAuthorizedException$ = exports.LimitExceededException$ = exports.InvalidParameterException$ = exports.InvalidIdentityPoolConfigurationException$ = exports.InternalErrorException$ = exports.ExternalServiceException$ = exports.DeveloperUserAlreadyRegisteredException$ = exports.ConcurrentModificationException$ = exports.CognitoIdentityServiceException$ = void 0; +exports.UpdateIdentityPool$ = exports.UntagResource$ = exports.UnlinkIdentity$ = exports.UnlinkDeveloperIdentity$ = exports.TagResource$ = exports.SetPrincipalTagAttributeMap$ = exports.SetIdentityPoolRoles$ = exports.MergeDeveloperIdentities$ = exports.LookupDeveloperIdentity$ = exports.ListTagsForResource$ = exports.ListIdentityPools$ = exports.ListIdentities$ = exports.GetPrincipalTagAttributeMap$ = exports.GetOpenIdTokenForDeveloperIdentity$ = exports.GetOpenIdToken$ = exports.GetIdentityPoolRoles$ = exports.GetId$ = exports.GetCredentialsForIdentity$ = exports.DescribeIdentityPool$ = exports.DescribeIdentity$ = exports.DeleteIdentityPool$ = exports.DeleteIdentities$ = exports.CreateIdentityPool$ = exports.UntagResourceResponse$ = exports.UntagResourceInput$ = exports.UnprocessedIdentityId$ = exports.UnlinkIdentityInput$ = exports.UnlinkDeveloperIdentityInput$ = exports.TagResourceResponse$ = exports.TagResourceInput$ = exports.SetPrincipalTagAttributeMapResponse$ = exports.SetPrincipalTagAttributeMapInput$ = void 0; +const _ACF = "AllowClassicFlow"; +const _AI = "AccountId"; +const _AKI = "AccessKeyId"; +const _ARR = "AmbiguousRoleResolution"; +const _AUI = "AllowUnauthenticatedIdentities"; +const _C = "Credentials"; +const _CD = "CreationDate"; +const _CI = "ClientId"; +const _CIP = "CognitoIdentityProvider"; +const _CIPI = "CreateIdentityPoolInput"; +const _CIPL = "CognitoIdentityProviderList"; +const _CIPo = "CognitoIdentityProviders"; +const _CIPr = "CreateIdentityPool"; +const _CME = "ConcurrentModificationException"; +const _CRA = "CustomRoleArn"; +const _Cl = "Claim"; +const _DI = "DeleteIdentities"; +const _DII = "DeleteIdentitiesInput"; +const _DIIe = "DescribeIdentityInput"; +const _DIP = "DeleteIdentityPool"; +const _DIPI = "DeleteIdentityPoolInput"; +const _DIPIe = "DescribeIdentityPoolInput"; +const _DIPe = "DescribeIdentityPool"; +const _DIR = "DeleteIdentitiesResponse"; +const _DIe = "DescribeIdentity"; +const _DPN = "DeveloperProviderName"; +const _DUARE = "DeveloperUserAlreadyRegisteredException"; +const _DUI = "DeveloperUserIdentifier"; +const _DUIL = "DeveloperUserIdentifierList"; +const _DUIe = "DestinationUserIdentifier"; +const _E = "Expiration"; +const _EC = "ErrorCode"; +const _ESE = "ExternalServiceException"; +const _GCFI = "GetCredentialsForIdentity"; +const _GCFII = "GetCredentialsForIdentityInput"; +const _GCFIR = "GetCredentialsForIdentityResponse"; +const _GI = "GetId"; +const _GII = "GetIdInput"; +const _GIPR = "GetIdentityPoolRoles"; +const _GIPRI = "GetIdentityPoolRolesInput"; +const _GIPRR = "GetIdentityPoolRolesResponse"; +const _GIR = "GetIdResponse"; +const _GOIT = "GetOpenIdToken"; +const _GOITFDI = "GetOpenIdTokenForDeveloperIdentity"; +const _GOITFDII = "GetOpenIdTokenForDeveloperIdentityInput"; +const _GOITFDIR = "GetOpenIdTokenForDeveloperIdentityResponse"; +const _GOITI = "GetOpenIdTokenInput"; +const _GOITR = "GetOpenIdTokenResponse"; +const _GPTAM = "GetPrincipalTagAttributeMap"; +const _GPTAMI = "GetPrincipalTagAttributeMapInput"; +const _GPTAMR = "GetPrincipalTagAttributeMapResponse"; +const _HD = "HideDisabled"; +const _I = "Identities"; +const _ID = "IdentityDescription"; +const _IEE = "InternalErrorException"; +const _II = "IdentityId"; +const _IIPCE = "InvalidIdentityPoolConfigurationException"; +const _IITD = "IdentityIdsToDelete"; +const _IL = "IdentitiesList"; +const _IP = "IdentityPool"; +const _IPE = "InvalidParameterException"; +const _IPI = "IdentityPoolId"; +const _IPL = "IdentityPoolsList"; +const _IPN = "IdentityPoolName"; +const _IPNd = "IdentityProviderName"; +const _IPSD = "IdentityPoolShortDescription"; +const _IPT = "IdentityProviderToken"; +const _IPTd = "IdentityPoolTags"; +const _IPd = "IdentityPools"; +const _L = "Logins"; +const _LDI = "LookupDeveloperIdentity"; +const _LDII = "LookupDeveloperIdentityInput"; +const _LDIR = "LookupDeveloperIdentityResponse"; +const _LEE = "LimitExceededException"; +const _LI = "ListIdentities"; +const _LII = "ListIdentitiesInput"; +const _LIP = "ListIdentityPools"; +const _LIPI = "ListIdentityPoolsInput"; +const _LIPR = "ListIdentityPoolsResponse"; +const _LIR = "ListIdentitiesResponse"; +const _LM = "LoginsMap"; +const _LMD = "LastModifiedDate"; +const _LTFR = "ListTagsForResource"; +const _LTFRI = "ListTagsForResourceInput"; +const _LTFRR = "ListTagsForResourceResponse"; +const _LTR = "LoginsToRemove"; +const _MDI = "MergeDeveloperIdentities"; +const _MDII = "MergeDeveloperIdentitiesInput"; +const _MDIR = "MergeDeveloperIdentitiesResponse"; +const _MR = "MaxResults"; +const _MRL = "MappingRulesList"; +const _MRa = "MappingRule"; +const _MT = "MatchType"; +const _NAE = "NotAuthorizedException"; +const _NT = "NextToken"; +const _OICPARN = "OpenIdConnectProviderARNs"; +const _OIDCT = "OIDCToken"; +const _PN = "ProviderName"; +const _PT = "PrincipalTags"; +const _R = "Roles"; +const _RA = "ResourceArn"; +const _RARN = "RoleARN"; +const _RC = "RulesConfiguration"; +const _RCE = "ResourceConflictException"; +const _RCT = "RulesConfigurationType"; +const _RM = "RoleMappings"; +const _RMM = "RoleMappingMap"; +const _RMo = "RoleMapping"; +const _RNFE = "ResourceNotFoundException"; +const _Ru = "Rules"; +const _SIPR = "SetIdentityPoolRoles"; +const _SIPRI = "SetIdentityPoolRolesInput"; +const _SK = "SecretKey"; +const _SKS = "SecretKeyString"; +const _SLP = "SupportedLoginProviders"; +const _SPARN = "SamlProviderARNs"; +const _SPTAM = "SetPrincipalTagAttributeMap"; +const _SPTAMI = "SetPrincipalTagAttributeMapInput"; +const _SPTAMR = "SetPrincipalTagAttributeMapResponse"; +const _SSTC = "ServerSideTokenCheck"; +const _ST = "SessionToken"; +const _SUI = "SourceUserIdentifier"; +const _T = "Token"; +const _TD = "TokenDuration"; +const _TK = "TagKeys"; +const _TMRE = "TooManyRequestsException"; +const _TR = "TagResource"; +const _TRI = "TagResourceInput"; +const _TRR = "TagResourceResponse"; +const _Ta = "Tags"; +const _Ty = "Type"; +const _UD = "UseDefaults"; +const _UDI = "UnlinkDeveloperIdentity"; +const _UDII = "UnlinkDeveloperIdentityInput"; +const _UI = "UnlinkIdentity"; +const _UII = "UnprocessedIdentityIds"; +const _UIIL = "UnprocessedIdentityIdList"; +const _UIIn = "UnlinkIdentityInput"; +const _UIInp = "UnprocessedIdentityId"; +const _UIP = "UpdateIdentityPool"; +const _UR = "UntagResource"; +const _URI = "UntagResourceInput"; +const _URR = "UntagResourceResponse"; +const _V = "Value"; +const _c = "client"; +const _e = "error"; +const _hE = "httpError"; +const _m = "message"; +const _s = "smithy.ts.sdk.synthetic.com.amazonaws.cognitoidentity"; +const _se = "server"; +const n0 = "com.amazonaws.cognitoidentity"; +const schema_1 = require("@smithy/core/schema"); +const CognitoIdentityServiceException_1 = require("../models/CognitoIdentityServiceException"); +const errors_1 = require("../models/errors"); +const _s_registry = schema_1.TypeRegistry.for(_s); +exports.CognitoIdentityServiceException$ = [-3, _s, "CognitoIdentityServiceException", 0, [], []]; +_s_registry.registerError(exports.CognitoIdentityServiceException$, CognitoIdentityServiceException_1.CognitoIdentityServiceException); +const n0_registry = schema_1.TypeRegistry.for(n0); +exports.ConcurrentModificationException$ = [-3, n0, _CME, + { [_e]: _c, [_hE]: 400 }, + [_m], + [0] +]; +n0_registry.registerError(exports.ConcurrentModificationException$, errors_1.ConcurrentModificationException); +exports.DeveloperUserAlreadyRegisteredException$ = [-3, n0, _DUARE, + { [_e]: _c, [_hE]: 400 }, + [_m], + [0] +]; +n0_registry.registerError(exports.DeveloperUserAlreadyRegisteredException$, errors_1.DeveloperUserAlreadyRegisteredException); +exports.ExternalServiceException$ = [-3, n0, _ESE, + { [_e]: _c, [_hE]: 400 }, + [_m], + [0] +]; +n0_registry.registerError(exports.ExternalServiceException$, errors_1.ExternalServiceException); +exports.InternalErrorException$ = [-3, n0, _IEE, + { [_e]: _se }, + [_m], + [0] +]; +n0_registry.registerError(exports.InternalErrorException$, errors_1.InternalErrorException); +exports.InvalidIdentityPoolConfigurationException$ = [-3, n0, _IIPCE, + { [_e]: _c, [_hE]: 400 }, + [_m], + [0] +]; +n0_registry.registerError(exports.InvalidIdentityPoolConfigurationException$, errors_1.InvalidIdentityPoolConfigurationException); +exports.InvalidParameterException$ = [-3, n0, _IPE, + { [_e]: _c, [_hE]: 400 }, + [_m], + [0] +]; +n0_registry.registerError(exports.InvalidParameterException$, errors_1.InvalidParameterException); +exports.LimitExceededException$ = [-3, n0, _LEE, + { [_e]: _c, [_hE]: 400 }, + [_m], + [0] +]; +n0_registry.registerError(exports.LimitExceededException$, errors_1.LimitExceededException); +exports.NotAuthorizedException$ = [-3, n0, _NAE, + { [_e]: _c, [_hE]: 403 }, + [_m], + [0] +]; +n0_registry.registerError(exports.NotAuthorizedException$, errors_1.NotAuthorizedException); +exports.ResourceConflictException$ = [-3, n0, _RCE, + { [_e]: _c, [_hE]: 409 }, + [_m], + [0] +]; +n0_registry.registerError(exports.ResourceConflictException$, errors_1.ResourceConflictException); +exports.ResourceNotFoundException$ = [-3, n0, _RNFE, + { [_e]: _c, [_hE]: 404 }, + [_m], + [0] +]; +n0_registry.registerError(exports.ResourceNotFoundException$, errors_1.ResourceNotFoundException); +exports.TooManyRequestsException$ = [-3, n0, _TMRE, + { [_e]: _c, [_hE]: 429 }, + [_m], + [0] +]; +n0_registry.registerError(exports.TooManyRequestsException$, errors_1.TooManyRequestsException); +exports.errorTypeRegistries = [ + _s_registry, + n0_registry, +]; +var IdentityProviderToken = [0, n0, _IPT, 8, 0]; +var OIDCToken = [0, n0, _OIDCT, 8, 0]; +var SecretKeyString = [0, n0, _SKS, 8, 0]; +exports.CognitoIdentityProvider$ = [3, n0, _CIP, + 0, + [_PN, _CI, _SSTC], + [0, 0, 2] +]; +exports.CreateIdentityPoolInput$ = [3, n0, _CIPI, + 0, + [_IPN, _AUI, _ACF, _SLP, _DPN, _OICPARN, _CIPo, _SPARN, _IPTd], + [0, 2, 2, 128 | 0, 0, 64 | 0, () => CognitoIdentityProviderList, 64 | 0, 128 | 0], 2 +]; +exports.Credentials$ = [3, n0, _C, + 0, + [_AKI, _SK, _ST, _E], + [0, [() => SecretKeyString, 0], 0, 4] +]; +exports.DeleteIdentitiesInput$ = [3, n0, _DII, + 0, + [_IITD], + [64 | 0], 1 +]; +exports.DeleteIdentitiesResponse$ = [3, n0, _DIR, + 0, + [_UII], + [() => UnprocessedIdentityIdList] +]; +exports.DeleteIdentityPoolInput$ = [3, n0, _DIPI, + 0, + [_IPI], + [0], 1 +]; +exports.DescribeIdentityInput$ = [3, n0, _DIIe, + 0, + [_II], + [0], 1 +]; +exports.DescribeIdentityPoolInput$ = [3, n0, _DIPIe, + 0, + [_IPI], + [0], 1 +]; +exports.GetCredentialsForIdentityInput$ = [3, n0, _GCFII, + 0, + [_II, _L, _CRA], + [0, [() => LoginsMap, 0], 0], 1 +]; +exports.GetCredentialsForIdentityResponse$ = [3, n0, _GCFIR, + 0, + [_II, _C], + [0, [() => exports.Credentials$, 0]] +]; +exports.GetIdentityPoolRolesInput$ = [3, n0, _GIPRI, + 0, + [_IPI], + [0], 1 +]; +exports.GetIdentityPoolRolesResponse$ = [3, n0, _GIPRR, + 0, + [_IPI, _R, _RM], + [0, 128 | 0, () => RoleMappingMap] +]; +exports.GetIdInput$ = [3, n0, _GII, + 0, + [_IPI, _AI, _L], + [0, 0, [() => LoginsMap, 0]], 1 +]; +exports.GetIdResponse$ = [3, n0, _GIR, + 0, + [_II], + [0] +]; +exports.GetOpenIdTokenForDeveloperIdentityInput$ = [3, n0, _GOITFDII, + 0, + [_IPI, _L, _II, _PT, _TD], + [0, [() => LoginsMap, 0], 0, 128 | 0, 1], 2 +]; +exports.GetOpenIdTokenForDeveloperIdentityResponse$ = [3, n0, _GOITFDIR, + 0, + [_II, _T], + [0, [() => OIDCToken, 0]] +]; +exports.GetOpenIdTokenInput$ = [3, n0, _GOITI, + 0, + [_II, _L], + [0, [() => LoginsMap, 0]], 1 +]; +exports.GetOpenIdTokenResponse$ = [3, n0, _GOITR, + 0, + [_II, _T], + [0, [() => OIDCToken, 0]] +]; +exports.GetPrincipalTagAttributeMapInput$ = [3, n0, _GPTAMI, + 0, + [_IPI, _IPNd], + [0, 0], 2 +]; +exports.GetPrincipalTagAttributeMapResponse$ = [3, n0, _GPTAMR, + 0, + [_IPI, _IPNd, _UD, _PT], + [0, 0, 2, 128 | 0] +]; +exports.IdentityDescription$ = [3, n0, _ID, + 0, + [_II, _L, _CD, _LMD], + [0, 64 | 0, 4, 4] +]; +exports.IdentityPool$ = [3, n0, _IP, + 0, + [_IPI, _IPN, _AUI, _ACF, _SLP, _DPN, _OICPARN, _CIPo, _SPARN, _IPTd], + [0, 0, 2, 2, 128 | 0, 0, 64 | 0, () => CognitoIdentityProviderList, 64 | 0, 128 | 0], 3 +]; +exports.IdentityPoolShortDescription$ = [3, n0, _IPSD, + 0, + [_IPI, _IPN], + [0, 0] +]; +exports.ListIdentitiesInput$ = [3, n0, _LII, + 0, + [_IPI, _MR, _NT, _HD], + [0, 1, 0, 2], 2 +]; +exports.ListIdentitiesResponse$ = [3, n0, _LIR, + 0, + [_IPI, _I, _NT], + [0, () => IdentitiesList, 0] +]; +exports.ListIdentityPoolsInput$ = [3, n0, _LIPI, + 0, + [_MR, _NT], + [1, 0], 1 +]; +exports.ListIdentityPoolsResponse$ = [3, n0, _LIPR, + 0, + [_IPd, _NT], + [() => IdentityPoolsList, 0] +]; +exports.ListTagsForResourceInput$ = [3, n0, _LTFRI, + 0, + [_RA], + [0], 1 +]; +exports.ListTagsForResourceResponse$ = [3, n0, _LTFRR, + 0, + [_Ta], + [128 | 0] +]; +exports.LookupDeveloperIdentityInput$ = [3, n0, _LDII, + 0, + [_IPI, _II, _DUI, _MR, _NT], + [0, 0, 0, 1, 0], 1 +]; +exports.LookupDeveloperIdentityResponse$ = [3, n0, _LDIR, + 0, + [_II, _DUIL, _NT], + [0, 64 | 0, 0] +]; +exports.MappingRule$ = [3, n0, _MRa, + 0, + [_Cl, _MT, _V, _RARN], + [0, 0, 0, 0], 4 +]; +exports.MergeDeveloperIdentitiesInput$ = [3, n0, _MDII, + 0, + [_SUI, _DUIe, _DPN, _IPI], + [0, 0, 0, 0], 4 +]; +exports.MergeDeveloperIdentitiesResponse$ = [3, n0, _MDIR, + 0, + [_II], + [0] +]; +exports.RoleMapping$ = [3, n0, _RMo, + 0, + [_Ty, _ARR, _RC], + [0, 0, () => exports.RulesConfigurationType$], 1 +]; +exports.RulesConfigurationType$ = [3, n0, _RCT, + 0, + [_Ru], + [() => MappingRulesList], 1 +]; +exports.SetIdentityPoolRolesInput$ = [3, n0, _SIPRI, + 0, + [_IPI, _R, _RM], + [0, 128 | 0, () => RoleMappingMap], 2 +]; +exports.SetPrincipalTagAttributeMapInput$ = [3, n0, _SPTAMI, + 0, + [_IPI, _IPNd, _UD, _PT], + [0, 0, 2, 128 | 0], 2 +]; +exports.SetPrincipalTagAttributeMapResponse$ = [3, n0, _SPTAMR, + 0, + [_IPI, _IPNd, _UD, _PT], + [0, 0, 2, 128 | 0] +]; +exports.TagResourceInput$ = [3, n0, _TRI, + 0, + [_RA, _Ta], + [0, 128 | 0], 2 +]; +exports.TagResourceResponse$ = [3, n0, _TRR, + 0, + [], + [] +]; +exports.UnlinkDeveloperIdentityInput$ = [3, n0, _UDII, + 0, + [_II, _IPI, _DPN, _DUI], + [0, 0, 0, 0], 4 +]; +exports.UnlinkIdentityInput$ = [3, n0, _UIIn, + 0, + [_II, _L, _LTR], + [0, [() => LoginsMap, 0], 64 | 0], 3 +]; +exports.UnprocessedIdentityId$ = [3, n0, _UIInp, + 0, + [_II, _EC], + [0, 0] +]; +exports.UntagResourceInput$ = [3, n0, _URI, + 0, + [_RA, _TK], + [0, 64 | 0], 2 +]; +exports.UntagResourceResponse$ = [3, n0, _URR, + 0, + [], + [] +]; +var __Unit = "unit"; +var CognitoIdentityProviderList = [1, n0, _CIPL, + 0, () => exports.CognitoIdentityProvider$ +]; +var DeveloperUserIdentifierList = 64 | 0; +var IdentitiesList = [1, n0, _IL, + 0, () => exports.IdentityDescription$ +]; +var IdentityIdList = 64 | 0; +var IdentityPoolsList = [1, n0, _IPL, + 0, () => exports.IdentityPoolShortDescription$ +]; +var IdentityPoolTagsListType = 64 | 0; +var LoginsList = 64 | 0; +var MappingRulesList = [1, n0, _MRL, + 0, () => exports.MappingRule$ +]; +var OIDCProviderList = 64 | 0; +var SAMLProviderList = 64 | 0; +var UnprocessedIdentityIdList = [1, n0, _UIIL, + 0, () => exports.UnprocessedIdentityId$ +]; +var IdentityPoolTagsType = 128 | 0; +var IdentityProviders = 128 | 0; +var LoginsMap = [2, n0, _LM, + 0, [0, + 0], + [() => IdentityProviderToken, + 0] +]; +var PrincipalTags = 128 | 0; +var RoleMappingMap = [2, n0, _RMM, + 0, 0, () => exports.RoleMapping$ +]; +var RolesMap = 128 | 0; +exports.CreateIdentityPool$ = [9, n0, _CIPr, + 0, () => exports.CreateIdentityPoolInput$, () => exports.IdentityPool$ +]; +exports.DeleteIdentities$ = [9, n0, _DI, + 0, () => exports.DeleteIdentitiesInput$, () => exports.DeleteIdentitiesResponse$ +]; +exports.DeleteIdentityPool$ = [9, n0, _DIP, + 0, () => exports.DeleteIdentityPoolInput$, () => __Unit +]; +exports.DescribeIdentity$ = [9, n0, _DIe, + 0, () => exports.DescribeIdentityInput$, () => exports.IdentityDescription$ +]; +exports.DescribeIdentityPool$ = [9, n0, _DIPe, + 0, () => exports.DescribeIdentityPoolInput$, () => exports.IdentityPool$ +]; +exports.GetCredentialsForIdentity$ = [9, n0, _GCFI, + 0, () => exports.GetCredentialsForIdentityInput$, () => exports.GetCredentialsForIdentityResponse$ +]; +exports.GetId$ = [9, n0, _GI, + 0, () => exports.GetIdInput$, () => exports.GetIdResponse$ +]; +exports.GetIdentityPoolRoles$ = [9, n0, _GIPR, + 0, () => exports.GetIdentityPoolRolesInput$, () => exports.GetIdentityPoolRolesResponse$ +]; +exports.GetOpenIdToken$ = [9, n0, _GOIT, + 0, () => exports.GetOpenIdTokenInput$, () => exports.GetOpenIdTokenResponse$ +]; +exports.GetOpenIdTokenForDeveloperIdentity$ = [9, n0, _GOITFDI, + 0, () => exports.GetOpenIdTokenForDeveloperIdentityInput$, () => exports.GetOpenIdTokenForDeveloperIdentityResponse$ +]; +exports.GetPrincipalTagAttributeMap$ = [9, n0, _GPTAM, + 0, () => exports.GetPrincipalTagAttributeMapInput$, () => exports.GetPrincipalTagAttributeMapResponse$ +]; +exports.ListIdentities$ = [9, n0, _LI, + 0, () => exports.ListIdentitiesInput$, () => exports.ListIdentitiesResponse$ +]; +exports.ListIdentityPools$ = [9, n0, _LIP, + 0, () => exports.ListIdentityPoolsInput$, () => exports.ListIdentityPoolsResponse$ +]; +exports.ListTagsForResource$ = [9, n0, _LTFR, + 0, () => exports.ListTagsForResourceInput$, () => exports.ListTagsForResourceResponse$ +]; +exports.LookupDeveloperIdentity$ = [9, n0, _LDI, + 0, () => exports.LookupDeveloperIdentityInput$, () => exports.LookupDeveloperIdentityResponse$ +]; +exports.MergeDeveloperIdentities$ = [9, n0, _MDI, + 0, () => exports.MergeDeveloperIdentitiesInput$, () => exports.MergeDeveloperIdentitiesResponse$ +]; +exports.SetIdentityPoolRoles$ = [9, n0, _SIPR, + 0, () => exports.SetIdentityPoolRolesInput$, () => __Unit +]; +exports.SetPrincipalTagAttributeMap$ = [9, n0, _SPTAM, + 0, () => exports.SetPrincipalTagAttributeMapInput$, () => exports.SetPrincipalTagAttributeMapResponse$ +]; +exports.TagResource$ = [9, n0, _TR, + 0, () => exports.TagResourceInput$, () => exports.TagResourceResponse$ +]; +exports.UnlinkDeveloperIdentity$ = [9, n0, _UDI, + 0, () => exports.UnlinkDeveloperIdentityInput$, () => __Unit +]; +exports.UnlinkIdentity$ = [9, n0, _UI, + 0, () => exports.UnlinkIdentityInput$, () => __Unit +]; +exports.UntagResource$ = [9, n0, _UR, + 0, () => exports.UntagResourceInput$, () => exports.UntagResourceResponse$ +]; +exports.UpdateIdentityPool$ = [9, n0, _UIP, + 0, () => exports.IdentityPool$, () => exports.IdentityPool$ +]; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/CognitoIdentity.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/CognitoIdentity.js new file mode 100644 index 000000000..9d9be471c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/CognitoIdentity.js @@ -0,0 +1,57 @@ +import { createAggregatedClient } from "@smithy/smithy-client"; +import { CognitoIdentityClient } from "./CognitoIdentityClient"; +import { CreateIdentityPoolCommand, } from "./commands/CreateIdentityPoolCommand"; +import { DeleteIdentitiesCommand, } from "./commands/DeleteIdentitiesCommand"; +import { DeleteIdentityPoolCommand, } from "./commands/DeleteIdentityPoolCommand"; +import { DescribeIdentityCommand, } from "./commands/DescribeIdentityCommand"; +import { DescribeIdentityPoolCommand, } from "./commands/DescribeIdentityPoolCommand"; +import { GetCredentialsForIdentityCommand, } from "./commands/GetCredentialsForIdentityCommand"; +import { GetIdCommand } from "./commands/GetIdCommand"; +import { GetIdentityPoolRolesCommand, } from "./commands/GetIdentityPoolRolesCommand"; +import { GetOpenIdTokenCommand, } from "./commands/GetOpenIdTokenCommand"; +import { GetOpenIdTokenForDeveloperIdentityCommand, } from "./commands/GetOpenIdTokenForDeveloperIdentityCommand"; +import { GetPrincipalTagAttributeMapCommand, } from "./commands/GetPrincipalTagAttributeMapCommand"; +import { ListIdentitiesCommand, } from "./commands/ListIdentitiesCommand"; +import { ListIdentityPoolsCommand, } from "./commands/ListIdentityPoolsCommand"; +import { ListTagsForResourceCommand, } from "./commands/ListTagsForResourceCommand"; +import { LookupDeveloperIdentityCommand, } from "./commands/LookupDeveloperIdentityCommand"; +import { MergeDeveloperIdentitiesCommand, } from "./commands/MergeDeveloperIdentitiesCommand"; +import { SetIdentityPoolRolesCommand, } from "./commands/SetIdentityPoolRolesCommand"; +import { SetPrincipalTagAttributeMapCommand, } from "./commands/SetPrincipalTagAttributeMapCommand"; +import { TagResourceCommand } from "./commands/TagResourceCommand"; +import { UnlinkDeveloperIdentityCommand, } from "./commands/UnlinkDeveloperIdentityCommand"; +import { UnlinkIdentityCommand, } from "./commands/UnlinkIdentityCommand"; +import { UntagResourceCommand, } from "./commands/UntagResourceCommand"; +import { UpdateIdentityPoolCommand, } from "./commands/UpdateIdentityPoolCommand"; +import { paginateListIdentityPools } from "./pagination/ListIdentityPoolsPaginator"; +const commands = { + CreateIdentityPoolCommand, + DeleteIdentitiesCommand, + DeleteIdentityPoolCommand, + DescribeIdentityCommand, + DescribeIdentityPoolCommand, + GetCredentialsForIdentityCommand, + GetIdCommand, + GetIdentityPoolRolesCommand, + GetOpenIdTokenCommand, + GetOpenIdTokenForDeveloperIdentityCommand, + GetPrincipalTagAttributeMapCommand, + ListIdentitiesCommand, + ListIdentityPoolsCommand, + ListTagsForResourceCommand, + LookupDeveloperIdentityCommand, + MergeDeveloperIdentitiesCommand, + SetIdentityPoolRolesCommand, + SetPrincipalTagAttributeMapCommand, + TagResourceCommand, + UnlinkDeveloperIdentityCommand, + UnlinkIdentityCommand, + UntagResourceCommand, + UpdateIdentityPoolCommand, +}; +const paginators = { + paginateListIdentityPools, +}; +export class CognitoIdentity extends CognitoIdentityClient { +} +createAggregatedClient(commands, CognitoIdentity, { paginators }); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/CognitoIdentityClient.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/CognitoIdentityClient.js new file mode 100644 index 000000000..cfe0de050 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/CognitoIdentityClient.js @@ -0,0 +1,50 @@ +import { getHostHeaderPlugin, resolveHostHeaderConfig, } from "@aws-sdk/middleware-host-header"; +import { getLoggerPlugin } from "@aws-sdk/middleware-logger"; +import { getRecursionDetectionPlugin } from "@aws-sdk/middleware-recursion-detection"; +import { getUserAgentPlugin, resolveUserAgentConfig, } from "@aws-sdk/middleware-user-agent"; +import { resolveRegionConfig } from "@smithy/config-resolver"; +import { DefaultIdentityProviderConfig, getHttpAuthSchemeEndpointRuleSetPlugin, getHttpSigningPlugin, } from "@smithy/core"; +import { getSchemaSerdePlugin } from "@smithy/core/schema"; +import { getContentLengthPlugin } from "@smithy/middleware-content-length"; +import { resolveEndpointConfig, } from "@smithy/middleware-endpoint"; +import { getRetryPlugin, resolveRetryConfig, } from "@smithy/middleware-retry"; +import { Client as __Client, } from "@smithy/smithy-client"; +import { defaultCognitoIdentityHttpAuthSchemeParametersProvider, resolveHttpAuthSchemeConfig, } from "./auth/httpAuthSchemeProvider"; +import { resolveClientEndpointParameters, } from "./endpoint/EndpointParameters"; +import { getRuntimeConfig as __getRuntimeConfig } from "./runtimeConfig"; +import { resolveRuntimeExtensions } from "./runtimeExtensions"; +export { __Client }; +export class CognitoIdentityClient extends __Client { + config; + constructor(...[configuration]) { + const _config_0 = __getRuntimeConfig(configuration || {}); + super(_config_0); + this.initConfig = _config_0; + const _config_1 = resolveClientEndpointParameters(_config_0); + const _config_2 = resolveUserAgentConfig(_config_1); + const _config_3 = resolveRetryConfig(_config_2); + const _config_4 = resolveRegionConfig(_config_3); + const _config_5 = resolveHostHeaderConfig(_config_4); + const _config_6 = resolveEndpointConfig(_config_5); + const _config_7 = resolveHttpAuthSchemeConfig(_config_6); + const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []); + this.config = _config_8; + this.middlewareStack.use(getSchemaSerdePlugin(this.config)); + this.middlewareStack.use(getUserAgentPlugin(this.config)); + this.middlewareStack.use(getRetryPlugin(this.config)); + this.middlewareStack.use(getContentLengthPlugin(this.config)); + this.middlewareStack.use(getHostHeaderPlugin(this.config)); + this.middlewareStack.use(getLoggerPlugin(this.config)); + this.middlewareStack.use(getRecursionDetectionPlugin(this.config)); + this.middlewareStack.use(getHttpAuthSchemeEndpointRuleSetPlugin(this.config, { + httpAuthSchemeParametersProvider: defaultCognitoIdentityHttpAuthSchemeParametersProvider, + identityProviderConfigProvider: async (config) => new DefaultIdentityProviderConfig({ + "aws.auth#sigv4": config.credentials, + }), + })); + this.middlewareStack.use(getHttpSigningPlugin(this.config)); + } + destroy() { + super.destroy(); + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/auth/httpAuthExtensionConfiguration.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/auth/httpAuthExtensionConfiguration.js new file mode 100644 index 000000000..2ba1d48c1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/auth/httpAuthExtensionConfiguration.js @@ -0,0 +1,38 @@ +export const getHttpAuthExtensionConfiguration = (runtimeConfig) => { + const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; + let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; + let _credentials = runtimeConfig.credentials; + return { + setHttpAuthScheme(httpAuthScheme) { + const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId); + if (index === -1) { + _httpAuthSchemes.push(httpAuthScheme); + } + else { + _httpAuthSchemes.splice(index, 1, httpAuthScheme); + } + }, + httpAuthSchemes() { + return _httpAuthSchemes; + }, + setHttpAuthSchemeProvider(httpAuthSchemeProvider) { + _httpAuthSchemeProvider = httpAuthSchemeProvider; + }, + httpAuthSchemeProvider() { + return _httpAuthSchemeProvider; + }, + setCredentials(credentials) { + _credentials = credentials; + }, + credentials() { + return _credentials; + }, + }; +}; +export const resolveHttpAuthRuntimeConfig = (config) => { + return { + httpAuthSchemes: config.httpAuthSchemes(), + httpAuthSchemeProvider: config.httpAuthSchemeProvider(), + credentials: config.credentials(), + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/auth/httpAuthSchemeProvider.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/auth/httpAuthSchemeProvider.js new file mode 100644 index 000000000..ccc207937 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/auth/httpAuthSchemeProvider.js @@ -0,0 +1,69 @@ +import { resolveAwsSdkSigV4Config, } from "@aws-sdk/core"; +import { getSmithyContext, normalizeProvider } from "@smithy/util-middleware"; +export const defaultCognitoIdentityHttpAuthSchemeParametersProvider = async (config, context, input) => { + return { + operation: getSmithyContext(context).operation, + region: await normalizeProvider(config.region)() || (() => { + throw new Error("expected `region` to be configured for `aws.auth#sigv4`"); + })(), + }; +}; +function createAwsAuthSigv4HttpAuthOption(authParameters) { + return { + schemeId: "aws.auth#sigv4", + signingProperties: { + name: "cognito-identity", + region: authParameters.region, + }, + propertiesExtractor: (config, context) => ({ + signingProperties: { + config, + context, + }, + }), + }; +} +function createSmithyApiNoAuthHttpAuthOption(authParameters) { + return { + schemeId: "smithy.api#noAuth", + }; +} +export const defaultCognitoIdentityHttpAuthSchemeProvider = (authParameters) => { + const options = []; + switch (authParameters.operation) { + case "GetCredentialsForIdentity": + { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + ; + case "GetId": + { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + ; + case "GetOpenIdToken": + { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + ; + case "UnlinkIdentity": + { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + ; + default: { + options.push(createAwsAuthSigv4HttpAuthOption(authParameters)); + } + } + return options; +}; +export const resolveHttpAuthSchemeConfig = (config) => { + const config_0 = resolveAwsSdkSigV4Config(config); + return Object.assign(config_0, { + authSchemePreference: normalizeProvider(config.authSchemePreference ?? []), + }); +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/CreateIdentityPoolCommand.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/CreateIdentityPoolCommand.js new file mode 100644 index 000000000..e3f9b6777 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/CreateIdentityPoolCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { CreateIdentityPool$ } from "../schemas/schemas_0"; +export { $Command }; +export class CreateIdentityPoolCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "CreateIdentityPool", {}) + .n("CognitoIdentityClient", "CreateIdentityPoolCommand") + .sc(CreateIdentityPool$) + .build() { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/DeleteIdentitiesCommand.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/DeleteIdentitiesCommand.js new file mode 100644 index 000000000..ece97f8e6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/DeleteIdentitiesCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { DeleteIdentities$ } from "../schemas/schemas_0"; +export { $Command }; +export class DeleteIdentitiesCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "DeleteIdentities", {}) + .n("CognitoIdentityClient", "DeleteIdentitiesCommand") + .sc(DeleteIdentities$) + .build() { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/DeleteIdentityPoolCommand.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/DeleteIdentityPoolCommand.js new file mode 100644 index 000000000..107de910f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/DeleteIdentityPoolCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { DeleteIdentityPool$ } from "../schemas/schemas_0"; +export { $Command }; +export class DeleteIdentityPoolCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "DeleteIdentityPool", {}) + .n("CognitoIdentityClient", "DeleteIdentityPoolCommand") + .sc(DeleteIdentityPool$) + .build() { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/DescribeIdentityCommand.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/DescribeIdentityCommand.js new file mode 100644 index 000000000..0018be422 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/DescribeIdentityCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { DescribeIdentity$ } from "../schemas/schemas_0"; +export { $Command }; +export class DescribeIdentityCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "DescribeIdentity", {}) + .n("CognitoIdentityClient", "DescribeIdentityCommand") + .sc(DescribeIdentity$) + .build() { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/DescribeIdentityPoolCommand.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/DescribeIdentityPoolCommand.js new file mode 100644 index 000000000..6dff47a11 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/DescribeIdentityPoolCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { DescribeIdentityPool$ } from "../schemas/schemas_0"; +export { $Command }; +export class DescribeIdentityPoolCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "DescribeIdentityPool", {}) + .n("CognitoIdentityClient", "DescribeIdentityPoolCommand") + .sc(DescribeIdentityPool$) + .build() { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/GetCredentialsForIdentityCommand.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/GetCredentialsForIdentityCommand.js new file mode 100644 index 000000000..4c9e29fb2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/GetCredentialsForIdentityCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetCredentialsForIdentity$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetCredentialsForIdentityCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "GetCredentialsForIdentity", {}) + .n("CognitoIdentityClient", "GetCredentialsForIdentityCommand") + .sc(GetCredentialsForIdentity$) + .build() { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/GetIdCommand.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/GetIdCommand.js new file mode 100644 index 000000000..312540552 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/GetIdCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetId$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetIdCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "GetId", {}) + .n("CognitoIdentityClient", "GetIdCommand") + .sc(GetId$) + .build() { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/GetIdentityPoolRolesCommand.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/GetIdentityPoolRolesCommand.js new file mode 100644 index 000000000..691712750 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/GetIdentityPoolRolesCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetIdentityPoolRoles$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetIdentityPoolRolesCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "GetIdentityPoolRoles", {}) + .n("CognitoIdentityClient", "GetIdentityPoolRolesCommand") + .sc(GetIdentityPoolRoles$) + .build() { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/GetOpenIdTokenCommand.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/GetOpenIdTokenCommand.js new file mode 100644 index 000000000..e0661f011 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/GetOpenIdTokenCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetOpenIdToken$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetOpenIdTokenCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "GetOpenIdToken", {}) + .n("CognitoIdentityClient", "GetOpenIdTokenCommand") + .sc(GetOpenIdToken$) + .build() { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/GetOpenIdTokenForDeveloperIdentityCommand.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/GetOpenIdTokenForDeveloperIdentityCommand.js new file mode 100644 index 000000000..4bda9ba7b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/GetOpenIdTokenForDeveloperIdentityCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetOpenIdTokenForDeveloperIdentity$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetOpenIdTokenForDeveloperIdentityCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "GetOpenIdTokenForDeveloperIdentity", {}) + .n("CognitoIdentityClient", "GetOpenIdTokenForDeveloperIdentityCommand") + .sc(GetOpenIdTokenForDeveloperIdentity$) + .build() { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/GetPrincipalTagAttributeMapCommand.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/GetPrincipalTagAttributeMapCommand.js new file mode 100644 index 000000000..c7d121f3c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/GetPrincipalTagAttributeMapCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetPrincipalTagAttributeMap$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetPrincipalTagAttributeMapCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "GetPrincipalTagAttributeMap", {}) + .n("CognitoIdentityClient", "GetPrincipalTagAttributeMapCommand") + .sc(GetPrincipalTagAttributeMap$) + .build() { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/ListIdentitiesCommand.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/ListIdentitiesCommand.js new file mode 100644 index 000000000..452d9dc69 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/ListIdentitiesCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { ListIdentities$ } from "../schemas/schemas_0"; +export { $Command }; +export class ListIdentitiesCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "ListIdentities", {}) + .n("CognitoIdentityClient", "ListIdentitiesCommand") + .sc(ListIdentities$) + .build() { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/ListIdentityPoolsCommand.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/ListIdentityPoolsCommand.js new file mode 100644 index 000000000..5c9226764 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/ListIdentityPoolsCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { ListIdentityPools$ } from "../schemas/schemas_0"; +export { $Command }; +export class ListIdentityPoolsCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "ListIdentityPools", {}) + .n("CognitoIdentityClient", "ListIdentityPoolsCommand") + .sc(ListIdentityPools$) + .build() { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/ListTagsForResourceCommand.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/ListTagsForResourceCommand.js new file mode 100644 index 000000000..7a602d3ad --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/ListTagsForResourceCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { ListTagsForResource$ } from "../schemas/schemas_0"; +export { $Command }; +export class ListTagsForResourceCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "ListTagsForResource", {}) + .n("CognitoIdentityClient", "ListTagsForResourceCommand") + .sc(ListTagsForResource$) + .build() { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/LookupDeveloperIdentityCommand.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/LookupDeveloperIdentityCommand.js new file mode 100644 index 000000000..6882cecee --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/LookupDeveloperIdentityCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { LookupDeveloperIdentity$ } from "../schemas/schemas_0"; +export { $Command }; +export class LookupDeveloperIdentityCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "LookupDeveloperIdentity", {}) + .n("CognitoIdentityClient", "LookupDeveloperIdentityCommand") + .sc(LookupDeveloperIdentity$) + .build() { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/MergeDeveloperIdentitiesCommand.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/MergeDeveloperIdentitiesCommand.js new file mode 100644 index 000000000..6e539293f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/MergeDeveloperIdentitiesCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { MergeDeveloperIdentities$ } from "../schemas/schemas_0"; +export { $Command }; +export class MergeDeveloperIdentitiesCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "MergeDeveloperIdentities", {}) + .n("CognitoIdentityClient", "MergeDeveloperIdentitiesCommand") + .sc(MergeDeveloperIdentities$) + .build() { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/SetIdentityPoolRolesCommand.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/SetIdentityPoolRolesCommand.js new file mode 100644 index 000000000..61154e088 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/SetIdentityPoolRolesCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { SetIdentityPoolRoles$ } from "../schemas/schemas_0"; +export { $Command }; +export class SetIdentityPoolRolesCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "SetIdentityPoolRoles", {}) + .n("CognitoIdentityClient", "SetIdentityPoolRolesCommand") + .sc(SetIdentityPoolRoles$) + .build() { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/SetPrincipalTagAttributeMapCommand.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/SetPrincipalTagAttributeMapCommand.js new file mode 100644 index 000000000..3ca2bb4fa --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/SetPrincipalTagAttributeMapCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { SetPrincipalTagAttributeMap$ } from "../schemas/schemas_0"; +export { $Command }; +export class SetPrincipalTagAttributeMapCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "SetPrincipalTagAttributeMap", {}) + .n("CognitoIdentityClient", "SetPrincipalTagAttributeMapCommand") + .sc(SetPrincipalTagAttributeMap$) + .build() { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/TagResourceCommand.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/TagResourceCommand.js new file mode 100644 index 000000000..325531e77 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/TagResourceCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { TagResource$ } from "../schemas/schemas_0"; +export { $Command }; +export class TagResourceCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "TagResource", {}) + .n("CognitoIdentityClient", "TagResourceCommand") + .sc(TagResource$) + .build() { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/UnlinkDeveloperIdentityCommand.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/UnlinkDeveloperIdentityCommand.js new file mode 100644 index 000000000..083d1ecbb --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/UnlinkDeveloperIdentityCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { UnlinkDeveloperIdentity$ } from "../schemas/schemas_0"; +export { $Command }; +export class UnlinkDeveloperIdentityCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "UnlinkDeveloperIdentity", {}) + .n("CognitoIdentityClient", "UnlinkDeveloperIdentityCommand") + .sc(UnlinkDeveloperIdentity$) + .build() { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/UnlinkIdentityCommand.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/UnlinkIdentityCommand.js new file mode 100644 index 000000000..d899e7043 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/UnlinkIdentityCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { UnlinkIdentity$ } from "../schemas/schemas_0"; +export { $Command }; +export class UnlinkIdentityCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "UnlinkIdentity", {}) + .n("CognitoIdentityClient", "UnlinkIdentityCommand") + .sc(UnlinkIdentity$) + .build() { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/UntagResourceCommand.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/UntagResourceCommand.js new file mode 100644 index 000000000..461244fcc --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/UntagResourceCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { UntagResource$ } from "../schemas/schemas_0"; +export { $Command }; +export class UntagResourceCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "UntagResource", {}) + .n("CognitoIdentityClient", "UntagResourceCommand") + .sc(UntagResource$) + .build() { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/UpdateIdentityPoolCommand.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/UpdateIdentityPoolCommand.js new file mode 100644 index 000000000..e7da52862 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/UpdateIdentityPoolCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { UpdateIdentityPool$ } from "../schemas/schemas_0"; +export { $Command }; +export class UpdateIdentityPoolCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "UpdateIdentityPool", {}) + .n("CognitoIdentityClient", "UpdateIdentityPoolCommand") + .sc(UpdateIdentityPool$) + .build() { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/index.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/index.js new file mode 100644 index 000000000..8df424ba4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/commands/index.js @@ -0,0 +1,23 @@ +export * from "./CreateIdentityPoolCommand"; +export * from "./DeleteIdentitiesCommand"; +export * from "./DeleteIdentityPoolCommand"; +export * from "./DescribeIdentityCommand"; +export * from "./DescribeIdentityPoolCommand"; +export * from "./GetCredentialsForIdentityCommand"; +export * from "./GetIdCommand"; +export * from "./GetIdentityPoolRolesCommand"; +export * from "./GetOpenIdTokenCommand"; +export * from "./GetOpenIdTokenForDeveloperIdentityCommand"; +export * from "./GetPrincipalTagAttributeMapCommand"; +export * from "./ListIdentitiesCommand"; +export * from "./ListIdentityPoolsCommand"; +export * from "./ListTagsForResourceCommand"; +export * from "./LookupDeveloperIdentityCommand"; +export * from "./MergeDeveloperIdentitiesCommand"; +export * from "./SetIdentityPoolRolesCommand"; +export * from "./SetPrincipalTagAttributeMapCommand"; +export * from "./TagResourceCommand"; +export * from "./UnlinkDeveloperIdentityCommand"; +export * from "./UnlinkIdentityCommand"; +export * from "./UntagResourceCommand"; +export * from "./UpdateIdentityPoolCommand"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/endpoint/EndpointParameters.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/endpoint/EndpointParameters.js new file mode 100644 index 000000000..9cc09f055 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/endpoint/EndpointParameters.js @@ -0,0 +1,13 @@ +export const resolveClientEndpointParameters = (options) => { + return Object.assign(options, { + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + useFipsEndpoint: options.useFipsEndpoint ?? false, + defaultSigningName: "cognito-identity", + }); +}; +export const commonParams = { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }, +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/endpoint/endpointResolver.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/endpoint/endpointResolver.js new file mode 100644 index 000000000..0ac15bcde --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/endpoint/endpointResolver.js @@ -0,0 +1,14 @@ +import { awsEndpointFunctions } from "@aws-sdk/util-endpoints"; +import { customEndpointFunctions, EndpointCache, resolveEndpoint } from "@smithy/util-endpoints"; +import { ruleSet } from "./ruleset"; +const cache = new EndpointCache({ + size: 50, + params: ["Endpoint", "Region", "UseDualStack", "UseFIPS"], +}); +export const defaultEndpointResolver = (endpointParams, context = {}) => { + return cache.get(endpointParams, () => resolveEndpoint(ruleSet, { + endpointParams: endpointParams, + logger: context.logger, + })); +}; +customEndpointFunctions.aws = awsEndpointFunctions; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/endpoint/ruleset.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/endpoint/ruleset.js new file mode 100644 index 000000000..f6b9f3c55 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/endpoint/ruleset.js @@ -0,0 +1,4 @@ +const w = "required", x = "fn", y = "argv", z = "ref"; +const a = true, b = "isSet", c = "booleanEquals", d = "error", e = "endpoint", f = "tree", g = "PartitionResult", h = "getAttr", i = "stringEquals", j = { [w]: false, "type": "string" }, k = { [w]: true, "default": false, "type": "boolean" }, l = { [z]: "Endpoint" }, m = { [x]: c, [y]: [{ [z]: "UseFIPS" }, true] }, n = { [x]: c, [y]: [{ [z]: "UseDualStack" }, true] }, o = {}, p = { [z]: "Region" }, q = { [x]: h, [y]: [{ [z]: g }, "supportsFIPS"] }, r = { [z]: g }, s = { [x]: c, [y]: [true, { [x]: h, [y]: [r, "supportsDualStack"] }] }, t = [m], u = [n], v = [p]; +const _data = { version: "1.0", parameters: { Region: j, UseDualStack: k, UseFIPS: k, Endpoint: j }, rules: [{ conditions: [{ [x]: b, [y]: [l] }], rules: [{ conditions: t, error: "Invalid Configuration: FIPS and custom endpoint are not supported", type: d }, { conditions: u, error: "Invalid Configuration: Dualstack and custom endpoint are not supported", type: d }, { endpoint: { url: l, properties: o, headers: o }, type: e }], type: f }, { conditions: [{ [x]: b, [y]: v }], rules: [{ conditions: [{ [x]: "aws.partition", [y]: v, assign: g }], rules: [{ conditions: [m, n], rules: [{ conditions: [{ [x]: c, [y]: [a, q] }, s], rules: [{ conditions: [{ [x]: i, [y]: [p, "us-east-1"] }], endpoint: { url: "https://cognito-identity-fips.us-east-1.amazonaws.com", properties: o, headers: o }, type: e }, { conditions: [{ [x]: i, [y]: [p, "us-east-2"] }], endpoint: { url: "https://cognito-identity-fips.us-east-2.amazonaws.com", properties: o, headers: o }, type: e }, { conditions: [{ [x]: i, [y]: [p, "us-west-1"] }], endpoint: { url: "https://cognito-identity-fips.us-west-1.amazonaws.com", properties: o, headers: o }, type: e }, { conditions: [{ [x]: i, [y]: [p, "us-west-2"] }], endpoint: { url: "https://cognito-identity-fips.us-west-2.amazonaws.com", properties: o, headers: o }, type: e }, { endpoint: { url: "https://cognito-identity-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", properties: o, headers: o }, type: e }], type: f }, { error: "FIPS and DualStack are enabled, but this partition does not support one or both", type: d }], type: f }, { conditions: t, rules: [{ conditions: [{ [x]: c, [y]: [q, a] }], rules: [{ endpoint: { url: "https://cognito-identity-fips.{Region}.{PartitionResult#dnsSuffix}", properties: o, headers: o }, type: e }], type: f }, { error: "FIPS is enabled but this partition does not support FIPS", type: d }], type: f }, { conditions: u, rules: [{ conditions: [s], rules: [{ conditions: [{ [x]: i, [y]: ["aws", { [x]: h, [y]: [r, "name"] }] }], endpoint: { url: "https://cognito-identity.{Region}.amazonaws.com", properties: o, headers: o }, type: e }, { endpoint: { url: "https://cognito-identity.{Region}.{PartitionResult#dualStackDnsSuffix}", properties: o, headers: o }, type: e }], type: f }, { error: "DualStack is enabled but this partition does not support DualStack", type: d }], type: f }, { endpoint: { url: "https://cognito-identity.{Region}.{PartitionResult#dnsSuffix}", properties: o, headers: o }, type: e }], type: f }], type: f }, { error: "Invalid Configuration: Missing Region", type: d }] }; +export const ruleSet = _data; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/extensionConfiguration.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/extensionConfiguration.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/extensionConfiguration.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/index.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/index.js new file mode 100644 index 000000000..d4dd1212c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/index.js @@ -0,0 +1,9 @@ +export * from "./CognitoIdentityClient"; +export * from "./CognitoIdentity"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./pagination"; +export * from "./models/enums"; +export * from "./models/errors"; +export * from "./models/models_0"; +export { CognitoIdentityServiceException } from "./models/CognitoIdentityServiceException"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/models/CognitoIdentityServiceException.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/models/CognitoIdentityServiceException.js new file mode 100644 index 000000000..09c7613d5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/models/CognitoIdentityServiceException.js @@ -0,0 +1,8 @@ +import { ServiceException as __ServiceException, } from "@smithy/smithy-client"; +export { __ServiceException }; +export class CognitoIdentityServiceException extends __ServiceException { + constructor(options) { + super(options); + Object.setPrototypeOf(this, CognitoIdentityServiceException.prototype); + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/models/enums.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/models/enums.js new file mode 100644 index 000000000..1be3b4ede --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/models/enums.js @@ -0,0 +1,18 @@ +export const AmbiguousRoleResolutionType = { + AUTHENTICATED_ROLE: "AuthenticatedRole", + DENY: "Deny", +}; +export const ErrorCode = { + ACCESS_DENIED: "AccessDenied", + INTERNAL_SERVER_ERROR: "InternalServerError", +}; +export const MappingRuleMatchType = { + CONTAINS: "Contains", + EQUALS: "Equals", + NOT_EQUAL: "NotEqual", + STARTS_WITH: "StartsWith", +}; +export const RoleMappingType = { + RULES: "Rules", + TOKEN: "Token", +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/models/errors.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/models/errors.js new file mode 100644 index 000000000..2d2fc7f6b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/models/errors.js @@ -0,0 +1,133 @@ +import { CognitoIdentityServiceException as __BaseException } from "./CognitoIdentityServiceException"; +export class InternalErrorException extends __BaseException { + name = "InternalErrorException"; + $fault = "server"; + constructor(opts) { + super({ + name: "InternalErrorException", + $fault: "server", + ...opts, + }); + Object.setPrototypeOf(this, InternalErrorException.prototype); + } +} +export class InvalidParameterException extends __BaseException { + name = "InvalidParameterException"; + $fault = "client"; + constructor(opts) { + super({ + name: "InvalidParameterException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidParameterException.prototype); + } +} +export class LimitExceededException extends __BaseException { + name = "LimitExceededException"; + $fault = "client"; + constructor(opts) { + super({ + name: "LimitExceededException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, LimitExceededException.prototype); + } +} +export class NotAuthorizedException extends __BaseException { + name = "NotAuthorizedException"; + $fault = "client"; + constructor(opts) { + super({ + name: "NotAuthorizedException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, NotAuthorizedException.prototype); + } +} +export class ResourceConflictException extends __BaseException { + name = "ResourceConflictException"; + $fault = "client"; + constructor(opts) { + super({ + name: "ResourceConflictException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ResourceConflictException.prototype); + } +} +export class TooManyRequestsException extends __BaseException { + name = "TooManyRequestsException"; + $fault = "client"; + constructor(opts) { + super({ + name: "TooManyRequestsException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, TooManyRequestsException.prototype); + } +} +export class ResourceNotFoundException extends __BaseException { + name = "ResourceNotFoundException"; + $fault = "client"; + constructor(opts) { + super({ + name: "ResourceNotFoundException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ResourceNotFoundException.prototype); + } +} +export class ExternalServiceException extends __BaseException { + name = "ExternalServiceException"; + $fault = "client"; + constructor(opts) { + super({ + name: "ExternalServiceException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ExternalServiceException.prototype); + } +} +export class InvalidIdentityPoolConfigurationException extends __BaseException { + name = "InvalidIdentityPoolConfigurationException"; + $fault = "client"; + constructor(opts) { + super({ + name: "InvalidIdentityPoolConfigurationException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidIdentityPoolConfigurationException.prototype); + } +} +export class DeveloperUserAlreadyRegisteredException extends __BaseException { + name = "DeveloperUserAlreadyRegisteredException"; + $fault = "client"; + constructor(opts) { + super({ + name: "DeveloperUserAlreadyRegisteredException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, DeveloperUserAlreadyRegisteredException.prototype); + } +} +export class ConcurrentModificationException extends __BaseException { + name = "ConcurrentModificationException"; + $fault = "client"; + constructor(opts) { + super({ + name: "ConcurrentModificationException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ConcurrentModificationException.prototype); + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/models/models_0.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/models/models_0.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/models/models_0.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/pagination/Interfaces.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/pagination/Interfaces.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/pagination/Interfaces.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/pagination/ListIdentityPoolsPaginator.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/pagination/ListIdentityPoolsPaginator.js new file mode 100644 index 000000000..d64f5e767 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/pagination/ListIdentityPoolsPaginator.js @@ -0,0 +1,4 @@ +import { createPaginator } from "@smithy/core"; +import { CognitoIdentityClient } from "../CognitoIdentityClient"; +import { ListIdentityPoolsCommand, } from "../commands/ListIdentityPoolsCommand"; +export const paginateListIdentityPools = createPaginator(CognitoIdentityClient, ListIdentityPoolsCommand, "NextToken", "NextToken", "MaxResults"); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/pagination/index.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/pagination/index.js new file mode 100644 index 000000000..c77b96c1d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/pagination/index.js @@ -0,0 +1,2 @@ +export * from "./Interfaces"; +export * from "./ListIdentityPoolsPaginator"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/runtimeConfig.browser.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/runtimeConfig.browser.js new file mode 100644 index 000000000..cbf6fcdeb --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/runtimeConfig.browser.js @@ -0,0 +1,33 @@ +import packageInfo from "../package.json"; +import { Sha256 } from "@aws-crypto/sha256-browser"; +import { createDefaultUserAgentProvider } from "@aws-sdk/util-user-agent-browser"; +import { DEFAULT_USE_DUALSTACK_ENDPOINT, DEFAULT_USE_FIPS_ENDPOINT } from "@smithy/config-resolver"; +import { FetchHttpHandler as RequestHandler, streamCollector } from "@smithy/fetch-http-handler"; +import { invalidProvider } from "@smithy/invalid-dependency"; +import { loadConfigsForDefaultMode } from "@smithy/smithy-client"; +import { calculateBodyLength } from "@smithy/util-body-length-browser"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-browser"; +import { DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_MODE } from "@smithy/util-retry"; +import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; +export const getRuntimeConfig = (config) => { + const defaultsMode = resolveDefaultsModeConfig(config); + const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode); + const clientSharedValues = getSharedRuntimeConfig(config); + return { + ...clientSharedValues, + ...config, + runtime: "browser", + defaultsMode, + bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength, + credentialDefaultProvider: config?.credentialDefaultProvider ?? ((_) => () => Promise.reject(new Error("Credential is missing"))), + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }), + maxAttempts: config?.maxAttempts ?? DEFAULT_MAX_ATTEMPTS, + region: config?.region ?? invalidProvider("Region is missing"), + requestHandler: RequestHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? (async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE), + sha256: config?.sha256 ?? Sha256, + streamCollector: config?.streamCollector ?? streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (() => Promise.resolve(DEFAULT_USE_DUALSTACK_ENDPOINT)), + useFipsEndpoint: config?.useFipsEndpoint ?? (() => Promise.resolve(DEFAULT_USE_FIPS_ENDPOINT)), + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/runtimeConfig.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/runtimeConfig.js new file mode 100644 index 000000000..f7cebe361 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/runtimeConfig.js @@ -0,0 +1,48 @@ +import packageInfo from "../package.json"; +import { emitWarningIfUnsupportedVersion as awsCheckVersion, NODE_AUTH_SCHEME_PREFERENCE_OPTIONS } from "@aws-sdk/core"; +import { defaultProvider as credentialDefaultProvider } from "@aws-sdk/credential-provider-node"; +import { createDefaultUserAgentProvider, NODE_APP_ID_CONFIG_OPTIONS } from "@aws-sdk/util-user-agent-node"; +import { NODE_REGION_CONFIG_FILE_OPTIONS, NODE_REGION_CONFIG_OPTIONS, NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, } from "@smithy/config-resolver"; +import { Hash } from "@smithy/hash-node"; +import { NODE_MAX_ATTEMPT_CONFIG_OPTIONS, NODE_RETRY_MODE_CONFIG_OPTIONS } from "@smithy/middleware-retry"; +import { loadConfig as loadNodeConfig } from "@smithy/node-config-provider"; +import { NodeHttpHandler as RequestHandler, streamCollector } from "@smithy/node-http-handler"; +import { emitWarningIfUnsupportedVersion, loadConfigsForDefaultMode } from "@smithy/smithy-client"; +import { calculateBodyLength } from "@smithy/util-body-length-node"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-node"; +import { DEFAULT_RETRY_MODE } from "@smithy/util-retry"; +import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; +export const getRuntimeConfig = (config) => { + emitWarningIfUnsupportedVersion(process.version); + const defaultsMode = resolveDefaultsModeConfig(config); + const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode); + const clientSharedValues = getSharedRuntimeConfig(config); + awsCheckVersion(process.version); + const loaderConfig = { + profile: config?.profile, + logger: clientSharedValues.logger, + }; + return { + ...clientSharedValues, + ...config, + runtime: "node", + defaultsMode, + authSchemePreference: config?.authSchemePreference ?? loadNodeConfig(NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig), + bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength, + credentialDefaultProvider: config?.credentialDefaultProvider ?? credentialDefaultProvider, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }), + maxAttempts: config?.maxAttempts ?? loadNodeConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config), + region: config?.region ?? loadNodeConfig(NODE_REGION_CONFIG_OPTIONS, { ...NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }), + requestHandler: RequestHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? + loadNodeConfig({ + ...NODE_RETRY_MODE_CONFIG_OPTIONS, + default: async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE, + }, config), + sha256: config?.sha256 ?? Hash.bind(null, "sha256"), + streamCollector: config?.streamCollector ?? streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? loadNodeConfig(NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + useFipsEndpoint: config?.useFipsEndpoint ?? loadNodeConfig(NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + userAgentAppId: config?.userAgentAppId ?? loadNodeConfig(NODE_APP_ID_CONFIG_OPTIONS, loaderConfig), + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/runtimeConfig.native.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/runtimeConfig.native.js new file mode 100644 index 000000000..0b5469528 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/runtimeConfig.native.js @@ -0,0 +1,11 @@ +import { Sha256 } from "@aws-crypto/sha256-js"; +import { getRuntimeConfig as getBrowserRuntimeConfig } from "./runtimeConfig.browser"; +export const getRuntimeConfig = (config) => { + const browserDefaults = getBrowserRuntimeConfig(config); + return { + ...browserDefaults, + ...config, + runtime: "react-native", + sha256: config?.sha256 ?? Sha256, + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/runtimeConfig.shared.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/runtimeConfig.shared.js new file mode 100644 index 000000000..81fd07a45 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/runtimeConfig.shared.js @@ -0,0 +1,46 @@ +import { AwsSdkSigV4Signer } from "@aws-sdk/core"; +import { AwsJson1_1Protocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; +import { NoOpLogger } from "@smithy/smithy-client"; +import { parseUrl } from "@smithy/url-parser"; +import { fromBase64, toBase64 } from "@smithy/util-base64"; +import { fromUtf8, toUtf8 } from "@smithy/util-utf8"; +import { defaultCognitoIdentityHttpAuthSchemeProvider } from "./auth/httpAuthSchemeProvider"; +import { defaultEndpointResolver } from "./endpoint/endpointResolver"; +import { errorTypeRegistries } from "./schemas/schemas_0"; +export const getRuntimeConfig = (config) => { + return { + apiVersion: "2014-06-30", + base64Decoder: config?.base64Decoder ?? fromBase64, + base64Encoder: config?.base64Encoder ?? toBase64, + disableHostPrefix: config?.disableHostPrefix ?? false, + endpointProvider: config?.endpointProvider ?? defaultEndpointResolver, + extensions: config?.extensions ?? [], + httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? defaultCognitoIdentityHttpAuthSchemeProvider, + httpAuthSchemes: config?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: (ipc) => ipc.getIdentityProvider("aws.auth#sigv4"), + signer: new AwsSdkSigV4Signer(), + }, + { + schemeId: "smithy.api#noAuth", + identityProvider: (ipc) => ipc.getIdentityProvider("smithy.api#noAuth") || (async () => ({})), + signer: new NoAuthSigner(), + }, + ], + logger: config?.logger ?? new NoOpLogger(), + protocol: config?.protocol ?? AwsJson1_1Protocol, + protocolSettings: config?.protocolSettings ?? { + defaultNamespace: "com.amazonaws.cognitoidentity", + errorTypeRegistries, + xmlNamespace: "http://cognito-identity.amazonaws.com/doc/2014-06-30/", + version: "2014-06-30", + serviceTarget: "AWSCognitoIdentityService", + }, + serviceId: config?.serviceId ?? "Cognito Identity", + urlParser: config?.urlParser ?? parseUrl, + utf8Decoder: config?.utf8Decoder ?? fromUtf8, + utf8Encoder: config?.utf8Encoder ?? toUtf8, + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/runtimeExtensions.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/runtimeExtensions.js new file mode 100644 index 000000000..5b296950d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/runtimeExtensions.js @@ -0,0 +1,9 @@ +import { getAwsRegionExtensionConfiguration, resolveAwsRegionExtensionConfiguration, } from "@aws-sdk/region-config-resolver"; +import { getHttpHandlerExtensionConfiguration, resolveHttpHandlerRuntimeConfig } from "@smithy/protocol-http"; +import { getDefaultExtensionConfiguration, resolveDefaultRuntimeConfig } from "@smithy/smithy-client"; +import { getHttpAuthExtensionConfiguration, resolveHttpAuthRuntimeConfig } from "./auth/httpAuthExtensionConfiguration"; +export const resolveRuntimeExtensions = (runtimeConfig, extensions) => { + const extensionConfiguration = Object.assign(getAwsRegionExtensionConfiguration(runtimeConfig), getDefaultExtensionConfiguration(runtimeConfig), getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig)); + extensions.forEach((extension) => extension.configure(extensionConfiguration)); + return Object.assign(runtimeConfig, resolveAwsRegionExtensionConfiguration(extensionConfiguration), resolveDefaultRuntimeConfig(extensionConfiguration), resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration)); +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/schemas/schemas_0.js b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/schemas/schemas_0.js new file mode 100644 index 000000000..8e96756a5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-es/schemas/schemas_0.js @@ -0,0 +1,565 @@ +const _ACF = "AllowClassicFlow"; +const _AI = "AccountId"; +const _AKI = "AccessKeyId"; +const _ARR = "AmbiguousRoleResolution"; +const _AUI = "AllowUnauthenticatedIdentities"; +const _C = "Credentials"; +const _CD = "CreationDate"; +const _CI = "ClientId"; +const _CIP = "CognitoIdentityProvider"; +const _CIPI = "CreateIdentityPoolInput"; +const _CIPL = "CognitoIdentityProviderList"; +const _CIPo = "CognitoIdentityProviders"; +const _CIPr = "CreateIdentityPool"; +const _CME = "ConcurrentModificationException"; +const _CRA = "CustomRoleArn"; +const _Cl = "Claim"; +const _DI = "DeleteIdentities"; +const _DII = "DeleteIdentitiesInput"; +const _DIIe = "DescribeIdentityInput"; +const _DIP = "DeleteIdentityPool"; +const _DIPI = "DeleteIdentityPoolInput"; +const _DIPIe = "DescribeIdentityPoolInput"; +const _DIPe = "DescribeIdentityPool"; +const _DIR = "DeleteIdentitiesResponse"; +const _DIe = "DescribeIdentity"; +const _DPN = "DeveloperProviderName"; +const _DUARE = "DeveloperUserAlreadyRegisteredException"; +const _DUI = "DeveloperUserIdentifier"; +const _DUIL = "DeveloperUserIdentifierList"; +const _DUIe = "DestinationUserIdentifier"; +const _E = "Expiration"; +const _EC = "ErrorCode"; +const _ESE = "ExternalServiceException"; +const _GCFI = "GetCredentialsForIdentity"; +const _GCFII = "GetCredentialsForIdentityInput"; +const _GCFIR = "GetCredentialsForIdentityResponse"; +const _GI = "GetId"; +const _GII = "GetIdInput"; +const _GIPR = "GetIdentityPoolRoles"; +const _GIPRI = "GetIdentityPoolRolesInput"; +const _GIPRR = "GetIdentityPoolRolesResponse"; +const _GIR = "GetIdResponse"; +const _GOIT = "GetOpenIdToken"; +const _GOITFDI = "GetOpenIdTokenForDeveloperIdentity"; +const _GOITFDII = "GetOpenIdTokenForDeveloperIdentityInput"; +const _GOITFDIR = "GetOpenIdTokenForDeveloperIdentityResponse"; +const _GOITI = "GetOpenIdTokenInput"; +const _GOITR = "GetOpenIdTokenResponse"; +const _GPTAM = "GetPrincipalTagAttributeMap"; +const _GPTAMI = "GetPrincipalTagAttributeMapInput"; +const _GPTAMR = "GetPrincipalTagAttributeMapResponse"; +const _HD = "HideDisabled"; +const _I = "Identities"; +const _ID = "IdentityDescription"; +const _IEE = "InternalErrorException"; +const _II = "IdentityId"; +const _IIPCE = "InvalidIdentityPoolConfigurationException"; +const _IITD = "IdentityIdsToDelete"; +const _IL = "IdentitiesList"; +const _IP = "IdentityPool"; +const _IPE = "InvalidParameterException"; +const _IPI = "IdentityPoolId"; +const _IPL = "IdentityPoolsList"; +const _IPN = "IdentityPoolName"; +const _IPNd = "IdentityProviderName"; +const _IPSD = "IdentityPoolShortDescription"; +const _IPT = "IdentityProviderToken"; +const _IPTd = "IdentityPoolTags"; +const _IPd = "IdentityPools"; +const _L = "Logins"; +const _LDI = "LookupDeveloperIdentity"; +const _LDII = "LookupDeveloperIdentityInput"; +const _LDIR = "LookupDeveloperIdentityResponse"; +const _LEE = "LimitExceededException"; +const _LI = "ListIdentities"; +const _LII = "ListIdentitiesInput"; +const _LIP = "ListIdentityPools"; +const _LIPI = "ListIdentityPoolsInput"; +const _LIPR = "ListIdentityPoolsResponse"; +const _LIR = "ListIdentitiesResponse"; +const _LM = "LoginsMap"; +const _LMD = "LastModifiedDate"; +const _LTFR = "ListTagsForResource"; +const _LTFRI = "ListTagsForResourceInput"; +const _LTFRR = "ListTagsForResourceResponse"; +const _LTR = "LoginsToRemove"; +const _MDI = "MergeDeveloperIdentities"; +const _MDII = "MergeDeveloperIdentitiesInput"; +const _MDIR = "MergeDeveloperIdentitiesResponse"; +const _MR = "MaxResults"; +const _MRL = "MappingRulesList"; +const _MRa = "MappingRule"; +const _MT = "MatchType"; +const _NAE = "NotAuthorizedException"; +const _NT = "NextToken"; +const _OICPARN = "OpenIdConnectProviderARNs"; +const _OIDCT = "OIDCToken"; +const _PN = "ProviderName"; +const _PT = "PrincipalTags"; +const _R = "Roles"; +const _RA = "ResourceArn"; +const _RARN = "RoleARN"; +const _RC = "RulesConfiguration"; +const _RCE = "ResourceConflictException"; +const _RCT = "RulesConfigurationType"; +const _RM = "RoleMappings"; +const _RMM = "RoleMappingMap"; +const _RMo = "RoleMapping"; +const _RNFE = "ResourceNotFoundException"; +const _Ru = "Rules"; +const _SIPR = "SetIdentityPoolRoles"; +const _SIPRI = "SetIdentityPoolRolesInput"; +const _SK = "SecretKey"; +const _SKS = "SecretKeyString"; +const _SLP = "SupportedLoginProviders"; +const _SPARN = "SamlProviderARNs"; +const _SPTAM = "SetPrincipalTagAttributeMap"; +const _SPTAMI = "SetPrincipalTagAttributeMapInput"; +const _SPTAMR = "SetPrincipalTagAttributeMapResponse"; +const _SSTC = "ServerSideTokenCheck"; +const _ST = "SessionToken"; +const _SUI = "SourceUserIdentifier"; +const _T = "Token"; +const _TD = "TokenDuration"; +const _TK = "TagKeys"; +const _TMRE = "TooManyRequestsException"; +const _TR = "TagResource"; +const _TRI = "TagResourceInput"; +const _TRR = "TagResourceResponse"; +const _Ta = "Tags"; +const _Ty = "Type"; +const _UD = "UseDefaults"; +const _UDI = "UnlinkDeveloperIdentity"; +const _UDII = "UnlinkDeveloperIdentityInput"; +const _UI = "UnlinkIdentity"; +const _UII = "UnprocessedIdentityIds"; +const _UIIL = "UnprocessedIdentityIdList"; +const _UIIn = "UnlinkIdentityInput"; +const _UIInp = "UnprocessedIdentityId"; +const _UIP = "UpdateIdentityPool"; +const _UR = "UntagResource"; +const _URI = "UntagResourceInput"; +const _URR = "UntagResourceResponse"; +const _V = "Value"; +const _c = "client"; +const _e = "error"; +const _hE = "httpError"; +const _m = "message"; +const _s = "smithy.ts.sdk.synthetic.com.amazonaws.cognitoidentity"; +const _se = "server"; +const n0 = "com.amazonaws.cognitoidentity"; +import { TypeRegistry } from "@smithy/core/schema"; +import { CognitoIdentityServiceException } from "../models/CognitoIdentityServiceException"; +import { ConcurrentModificationException, DeveloperUserAlreadyRegisteredException, ExternalServiceException, InternalErrorException, InvalidIdentityPoolConfigurationException, InvalidParameterException, LimitExceededException, NotAuthorizedException, ResourceConflictException, ResourceNotFoundException, TooManyRequestsException, } from "../models/errors"; +const _s_registry = TypeRegistry.for(_s); +export var CognitoIdentityServiceException$ = [-3, _s, "CognitoIdentityServiceException", 0, [], []]; +_s_registry.registerError(CognitoIdentityServiceException$, CognitoIdentityServiceException); +const n0_registry = TypeRegistry.for(n0); +export var ConcurrentModificationException$ = [-3, n0, _CME, + { [_e]: _c, [_hE]: 400 }, + [_m], + [0] +]; +n0_registry.registerError(ConcurrentModificationException$, ConcurrentModificationException); +export var DeveloperUserAlreadyRegisteredException$ = [-3, n0, _DUARE, + { [_e]: _c, [_hE]: 400 }, + [_m], + [0] +]; +n0_registry.registerError(DeveloperUserAlreadyRegisteredException$, DeveloperUserAlreadyRegisteredException); +export var ExternalServiceException$ = [-3, n0, _ESE, + { [_e]: _c, [_hE]: 400 }, + [_m], + [0] +]; +n0_registry.registerError(ExternalServiceException$, ExternalServiceException); +export var InternalErrorException$ = [-3, n0, _IEE, + { [_e]: _se }, + [_m], + [0] +]; +n0_registry.registerError(InternalErrorException$, InternalErrorException); +export var InvalidIdentityPoolConfigurationException$ = [-3, n0, _IIPCE, + { [_e]: _c, [_hE]: 400 }, + [_m], + [0] +]; +n0_registry.registerError(InvalidIdentityPoolConfigurationException$, InvalidIdentityPoolConfigurationException); +export var InvalidParameterException$ = [-3, n0, _IPE, + { [_e]: _c, [_hE]: 400 }, + [_m], + [0] +]; +n0_registry.registerError(InvalidParameterException$, InvalidParameterException); +export var LimitExceededException$ = [-3, n0, _LEE, + { [_e]: _c, [_hE]: 400 }, + [_m], + [0] +]; +n0_registry.registerError(LimitExceededException$, LimitExceededException); +export var NotAuthorizedException$ = [-3, n0, _NAE, + { [_e]: _c, [_hE]: 403 }, + [_m], + [0] +]; +n0_registry.registerError(NotAuthorizedException$, NotAuthorizedException); +export var ResourceConflictException$ = [-3, n0, _RCE, + { [_e]: _c, [_hE]: 409 }, + [_m], + [0] +]; +n0_registry.registerError(ResourceConflictException$, ResourceConflictException); +export var ResourceNotFoundException$ = [-3, n0, _RNFE, + { [_e]: _c, [_hE]: 404 }, + [_m], + [0] +]; +n0_registry.registerError(ResourceNotFoundException$, ResourceNotFoundException); +export var TooManyRequestsException$ = [-3, n0, _TMRE, + { [_e]: _c, [_hE]: 429 }, + [_m], + [0] +]; +n0_registry.registerError(TooManyRequestsException$, TooManyRequestsException); +export const errorTypeRegistries = [ + _s_registry, + n0_registry, +]; +var IdentityProviderToken = [0, n0, _IPT, 8, 0]; +var OIDCToken = [0, n0, _OIDCT, 8, 0]; +var SecretKeyString = [0, n0, _SKS, 8, 0]; +export var CognitoIdentityProvider$ = [3, n0, _CIP, + 0, + [_PN, _CI, _SSTC], + [0, 0, 2] +]; +export var CreateIdentityPoolInput$ = [3, n0, _CIPI, + 0, + [_IPN, _AUI, _ACF, _SLP, _DPN, _OICPARN, _CIPo, _SPARN, _IPTd], + [0, 2, 2, 128 | 0, 0, 64 | 0, () => CognitoIdentityProviderList, 64 | 0, 128 | 0], 2 +]; +export var Credentials$ = [3, n0, _C, + 0, + [_AKI, _SK, _ST, _E], + [0, [() => SecretKeyString, 0], 0, 4] +]; +export var DeleteIdentitiesInput$ = [3, n0, _DII, + 0, + [_IITD], + [64 | 0], 1 +]; +export var DeleteIdentitiesResponse$ = [3, n0, _DIR, + 0, + [_UII], + [() => UnprocessedIdentityIdList] +]; +export var DeleteIdentityPoolInput$ = [3, n0, _DIPI, + 0, + [_IPI], + [0], 1 +]; +export var DescribeIdentityInput$ = [3, n0, _DIIe, + 0, + [_II], + [0], 1 +]; +export var DescribeIdentityPoolInput$ = [3, n0, _DIPIe, + 0, + [_IPI], + [0], 1 +]; +export var GetCredentialsForIdentityInput$ = [3, n0, _GCFII, + 0, + [_II, _L, _CRA], + [0, [() => LoginsMap, 0], 0], 1 +]; +export var GetCredentialsForIdentityResponse$ = [3, n0, _GCFIR, + 0, + [_II, _C], + [0, [() => Credentials$, 0]] +]; +export var GetIdentityPoolRolesInput$ = [3, n0, _GIPRI, + 0, + [_IPI], + [0], 1 +]; +export var GetIdentityPoolRolesResponse$ = [3, n0, _GIPRR, + 0, + [_IPI, _R, _RM], + [0, 128 | 0, () => RoleMappingMap] +]; +export var GetIdInput$ = [3, n0, _GII, + 0, + [_IPI, _AI, _L], + [0, 0, [() => LoginsMap, 0]], 1 +]; +export var GetIdResponse$ = [3, n0, _GIR, + 0, + [_II], + [0] +]; +export var GetOpenIdTokenForDeveloperIdentityInput$ = [3, n0, _GOITFDII, + 0, + [_IPI, _L, _II, _PT, _TD], + [0, [() => LoginsMap, 0], 0, 128 | 0, 1], 2 +]; +export var GetOpenIdTokenForDeveloperIdentityResponse$ = [3, n0, _GOITFDIR, + 0, + [_II, _T], + [0, [() => OIDCToken, 0]] +]; +export var GetOpenIdTokenInput$ = [3, n0, _GOITI, + 0, + [_II, _L], + [0, [() => LoginsMap, 0]], 1 +]; +export var GetOpenIdTokenResponse$ = [3, n0, _GOITR, + 0, + [_II, _T], + [0, [() => OIDCToken, 0]] +]; +export var GetPrincipalTagAttributeMapInput$ = [3, n0, _GPTAMI, + 0, + [_IPI, _IPNd], + [0, 0], 2 +]; +export var GetPrincipalTagAttributeMapResponse$ = [3, n0, _GPTAMR, + 0, + [_IPI, _IPNd, _UD, _PT], + [0, 0, 2, 128 | 0] +]; +export var IdentityDescription$ = [3, n0, _ID, + 0, + [_II, _L, _CD, _LMD], + [0, 64 | 0, 4, 4] +]; +export var IdentityPool$ = [3, n0, _IP, + 0, + [_IPI, _IPN, _AUI, _ACF, _SLP, _DPN, _OICPARN, _CIPo, _SPARN, _IPTd], + [0, 0, 2, 2, 128 | 0, 0, 64 | 0, () => CognitoIdentityProviderList, 64 | 0, 128 | 0], 3 +]; +export var IdentityPoolShortDescription$ = [3, n0, _IPSD, + 0, + [_IPI, _IPN], + [0, 0] +]; +export var ListIdentitiesInput$ = [3, n0, _LII, + 0, + [_IPI, _MR, _NT, _HD], + [0, 1, 0, 2], 2 +]; +export var ListIdentitiesResponse$ = [3, n0, _LIR, + 0, + [_IPI, _I, _NT], + [0, () => IdentitiesList, 0] +]; +export var ListIdentityPoolsInput$ = [3, n0, _LIPI, + 0, + [_MR, _NT], + [1, 0], 1 +]; +export var ListIdentityPoolsResponse$ = [3, n0, _LIPR, + 0, + [_IPd, _NT], + [() => IdentityPoolsList, 0] +]; +export var ListTagsForResourceInput$ = [3, n0, _LTFRI, + 0, + [_RA], + [0], 1 +]; +export var ListTagsForResourceResponse$ = [3, n0, _LTFRR, + 0, + [_Ta], + [128 | 0] +]; +export var LookupDeveloperIdentityInput$ = [3, n0, _LDII, + 0, + [_IPI, _II, _DUI, _MR, _NT], + [0, 0, 0, 1, 0], 1 +]; +export var LookupDeveloperIdentityResponse$ = [3, n0, _LDIR, + 0, + [_II, _DUIL, _NT], + [0, 64 | 0, 0] +]; +export var MappingRule$ = [3, n0, _MRa, + 0, + [_Cl, _MT, _V, _RARN], + [0, 0, 0, 0], 4 +]; +export var MergeDeveloperIdentitiesInput$ = [3, n0, _MDII, + 0, + [_SUI, _DUIe, _DPN, _IPI], + [0, 0, 0, 0], 4 +]; +export var MergeDeveloperIdentitiesResponse$ = [3, n0, _MDIR, + 0, + [_II], + [0] +]; +export var RoleMapping$ = [3, n0, _RMo, + 0, + [_Ty, _ARR, _RC], + [0, 0, () => RulesConfigurationType$], 1 +]; +export var RulesConfigurationType$ = [3, n0, _RCT, + 0, + [_Ru], + [() => MappingRulesList], 1 +]; +export var SetIdentityPoolRolesInput$ = [3, n0, _SIPRI, + 0, + [_IPI, _R, _RM], + [0, 128 | 0, () => RoleMappingMap], 2 +]; +export var SetPrincipalTagAttributeMapInput$ = [3, n0, _SPTAMI, + 0, + [_IPI, _IPNd, _UD, _PT], + [0, 0, 2, 128 | 0], 2 +]; +export var SetPrincipalTagAttributeMapResponse$ = [3, n0, _SPTAMR, + 0, + [_IPI, _IPNd, _UD, _PT], + [0, 0, 2, 128 | 0] +]; +export var TagResourceInput$ = [3, n0, _TRI, + 0, + [_RA, _Ta], + [0, 128 | 0], 2 +]; +export var TagResourceResponse$ = [3, n0, _TRR, + 0, + [], + [] +]; +export var UnlinkDeveloperIdentityInput$ = [3, n0, _UDII, + 0, + [_II, _IPI, _DPN, _DUI], + [0, 0, 0, 0], 4 +]; +export var UnlinkIdentityInput$ = [3, n0, _UIIn, + 0, + [_II, _L, _LTR], + [0, [() => LoginsMap, 0], 64 | 0], 3 +]; +export var UnprocessedIdentityId$ = [3, n0, _UIInp, + 0, + [_II, _EC], + [0, 0] +]; +export var UntagResourceInput$ = [3, n0, _URI, + 0, + [_RA, _TK], + [0, 64 | 0], 2 +]; +export var UntagResourceResponse$ = [3, n0, _URR, + 0, + [], + [] +]; +var __Unit = "unit"; +var CognitoIdentityProviderList = [1, n0, _CIPL, + 0, () => CognitoIdentityProvider$ +]; +var DeveloperUserIdentifierList = 64 | 0; +var IdentitiesList = [1, n0, _IL, + 0, () => IdentityDescription$ +]; +var IdentityIdList = 64 | 0; +var IdentityPoolsList = [1, n0, _IPL, + 0, () => IdentityPoolShortDescription$ +]; +var IdentityPoolTagsListType = 64 | 0; +var LoginsList = 64 | 0; +var MappingRulesList = [1, n0, _MRL, + 0, () => MappingRule$ +]; +var OIDCProviderList = 64 | 0; +var SAMLProviderList = 64 | 0; +var UnprocessedIdentityIdList = [1, n0, _UIIL, + 0, () => UnprocessedIdentityId$ +]; +var IdentityPoolTagsType = 128 | 0; +var IdentityProviders = 128 | 0; +var LoginsMap = [2, n0, _LM, + 0, [0, + 0], + [() => IdentityProviderToken, + 0] +]; +var PrincipalTags = 128 | 0; +var RoleMappingMap = [2, n0, _RMM, + 0, 0, () => RoleMapping$ +]; +var RolesMap = 128 | 0; +export var CreateIdentityPool$ = [9, n0, _CIPr, + 0, () => CreateIdentityPoolInput$, () => IdentityPool$ +]; +export var DeleteIdentities$ = [9, n0, _DI, + 0, () => DeleteIdentitiesInput$, () => DeleteIdentitiesResponse$ +]; +export var DeleteIdentityPool$ = [9, n0, _DIP, + 0, () => DeleteIdentityPoolInput$, () => __Unit +]; +export var DescribeIdentity$ = [9, n0, _DIe, + 0, () => DescribeIdentityInput$, () => IdentityDescription$ +]; +export var DescribeIdentityPool$ = [9, n0, _DIPe, + 0, () => DescribeIdentityPoolInput$, () => IdentityPool$ +]; +export var GetCredentialsForIdentity$ = [9, n0, _GCFI, + 0, () => GetCredentialsForIdentityInput$, () => GetCredentialsForIdentityResponse$ +]; +export var GetId$ = [9, n0, _GI, + 0, () => GetIdInput$, () => GetIdResponse$ +]; +export var GetIdentityPoolRoles$ = [9, n0, _GIPR, + 0, () => GetIdentityPoolRolesInput$, () => GetIdentityPoolRolesResponse$ +]; +export var GetOpenIdToken$ = [9, n0, _GOIT, + 0, () => GetOpenIdTokenInput$, () => GetOpenIdTokenResponse$ +]; +export var GetOpenIdTokenForDeveloperIdentity$ = [9, n0, _GOITFDI, + 0, () => GetOpenIdTokenForDeveloperIdentityInput$, () => GetOpenIdTokenForDeveloperIdentityResponse$ +]; +export var GetPrincipalTagAttributeMap$ = [9, n0, _GPTAM, + 0, () => GetPrincipalTagAttributeMapInput$, () => GetPrincipalTagAttributeMapResponse$ +]; +export var ListIdentities$ = [9, n0, _LI, + 0, () => ListIdentitiesInput$, () => ListIdentitiesResponse$ +]; +export var ListIdentityPools$ = [9, n0, _LIP, + 0, () => ListIdentityPoolsInput$, () => ListIdentityPoolsResponse$ +]; +export var ListTagsForResource$ = [9, n0, _LTFR, + 0, () => ListTagsForResourceInput$, () => ListTagsForResourceResponse$ +]; +export var LookupDeveloperIdentity$ = [9, n0, _LDI, + 0, () => LookupDeveloperIdentityInput$, () => LookupDeveloperIdentityResponse$ +]; +export var MergeDeveloperIdentities$ = [9, n0, _MDI, + 0, () => MergeDeveloperIdentitiesInput$, () => MergeDeveloperIdentitiesResponse$ +]; +export var SetIdentityPoolRoles$ = [9, n0, _SIPR, + 0, () => SetIdentityPoolRolesInput$, () => __Unit +]; +export var SetPrincipalTagAttributeMap$ = [9, n0, _SPTAM, + 0, () => SetPrincipalTagAttributeMapInput$, () => SetPrincipalTagAttributeMapResponse$ +]; +export var TagResource$ = [9, n0, _TR, + 0, () => TagResourceInput$, () => TagResourceResponse$ +]; +export var UnlinkDeveloperIdentity$ = [9, n0, _UDI, + 0, () => UnlinkDeveloperIdentityInput$, () => __Unit +]; +export var UnlinkIdentity$ = [9, n0, _UI, + 0, () => UnlinkIdentityInput$, () => __Unit +]; +export var UntagResource$ = [9, n0, _UR, + 0, () => UntagResourceInput$, () => UntagResourceResponse$ +]; +export var UpdateIdentityPool$ = [9, n0, _UIP, + 0, () => IdentityPool$, () => IdentityPool$ +]; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/CognitoIdentity.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/CognitoIdentity.d.ts new file mode 100644 index 000000000..cd557df77 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/CognitoIdentity.d.ts @@ -0,0 +1,192 @@ +import type { HttpHandlerOptions as __HttpHandlerOptions, PaginationConfiguration, Paginator } from "@smithy/types"; +import { CognitoIdentityClient } from "./CognitoIdentityClient"; +import { CreateIdentityPoolCommandInput, CreateIdentityPoolCommandOutput } from "./commands/CreateIdentityPoolCommand"; +import { DeleteIdentitiesCommandInput, DeleteIdentitiesCommandOutput } from "./commands/DeleteIdentitiesCommand"; +import { DeleteIdentityPoolCommandInput, DeleteIdentityPoolCommandOutput } from "./commands/DeleteIdentityPoolCommand"; +import { DescribeIdentityCommandInput, DescribeIdentityCommandOutput } from "./commands/DescribeIdentityCommand"; +import { DescribeIdentityPoolCommandInput, DescribeIdentityPoolCommandOutput } from "./commands/DescribeIdentityPoolCommand"; +import { GetCredentialsForIdentityCommandInput, GetCredentialsForIdentityCommandOutput } from "./commands/GetCredentialsForIdentityCommand"; +import { GetIdCommandInput, GetIdCommandOutput } from "./commands/GetIdCommand"; +import { GetIdentityPoolRolesCommandInput, GetIdentityPoolRolesCommandOutput } from "./commands/GetIdentityPoolRolesCommand"; +import { GetOpenIdTokenCommandInput, GetOpenIdTokenCommandOutput } from "./commands/GetOpenIdTokenCommand"; +import { GetOpenIdTokenForDeveloperIdentityCommandInput, GetOpenIdTokenForDeveloperIdentityCommandOutput } from "./commands/GetOpenIdTokenForDeveloperIdentityCommand"; +import { GetPrincipalTagAttributeMapCommandInput, GetPrincipalTagAttributeMapCommandOutput } from "./commands/GetPrincipalTagAttributeMapCommand"; +import { ListIdentitiesCommandInput, ListIdentitiesCommandOutput } from "./commands/ListIdentitiesCommand"; +import { ListIdentityPoolsCommandInput, ListIdentityPoolsCommandOutput } from "./commands/ListIdentityPoolsCommand"; +import { ListTagsForResourceCommandInput, ListTagsForResourceCommandOutput } from "./commands/ListTagsForResourceCommand"; +import { LookupDeveloperIdentityCommandInput, LookupDeveloperIdentityCommandOutput } from "./commands/LookupDeveloperIdentityCommand"; +import { MergeDeveloperIdentitiesCommandInput, MergeDeveloperIdentitiesCommandOutput } from "./commands/MergeDeveloperIdentitiesCommand"; +import { SetIdentityPoolRolesCommandInput, SetIdentityPoolRolesCommandOutput } from "./commands/SetIdentityPoolRolesCommand"; +import { SetPrincipalTagAttributeMapCommandInput, SetPrincipalTagAttributeMapCommandOutput } from "./commands/SetPrincipalTagAttributeMapCommand"; +import { TagResourceCommandInput, TagResourceCommandOutput } from "./commands/TagResourceCommand"; +import { UnlinkDeveloperIdentityCommandInput, UnlinkDeveloperIdentityCommandOutput } from "./commands/UnlinkDeveloperIdentityCommand"; +import { UnlinkIdentityCommandInput, UnlinkIdentityCommandOutput } from "./commands/UnlinkIdentityCommand"; +import { UntagResourceCommandInput, UntagResourceCommandOutput } from "./commands/UntagResourceCommand"; +import { UpdateIdentityPoolCommandInput, UpdateIdentityPoolCommandOutput } from "./commands/UpdateIdentityPoolCommand"; +export interface CognitoIdentity { + /** + * @see {@link CreateIdentityPoolCommand} + */ + createIdentityPool(args: CreateIdentityPoolCommandInput, options?: __HttpHandlerOptions): Promise; + createIdentityPool(args: CreateIdentityPoolCommandInput, cb: (err: any, data?: CreateIdentityPoolCommandOutput) => void): void; + createIdentityPool(args: CreateIdentityPoolCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: CreateIdentityPoolCommandOutput) => void): void; + /** + * @see {@link DeleteIdentitiesCommand} + */ + deleteIdentities(args: DeleteIdentitiesCommandInput, options?: __HttpHandlerOptions): Promise; + deleteIdentities(args: DeleteIdentitiesCommandInput, cb: (err: any, data?: DeleteIdentitiesCommandOutput) => void): void; + deleteIdentities(args: DeleteIdentitiesCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: DeleteIdentitiesCommandOutput) => void): void; + /** + * @see {@link DeleteIdentityPoolCommand} + */ + deleteIdentityPool(args: DeleteIdentityPoolCommandInput, options?: __HttpHandlerOptions): Promise; + deleteIdentityPool(args: DeleteIdentityPoolCommandInput, cb: (err: any, data?: DeleteIdentityPoolCommandOutput) => void): void; + deleteIdentityPool(args: DeleteIdentityPoolCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: DeleteIdentityPoolCommandOutput) => void): void; + /** + * @see {@link DescribeIdentityCommand} + */ + describeIdentity(args: DescribeIdentityCommandInput, options?: __HttpHandlerOptions): Promise; + describeIdentity(args: DescribeIdentityCommandInput, cb: (err: any, data?: DescribeIdentityCommandOutput) => void): void; + describeIdentity(args: DescribeIdentityCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: DescribeIdentityCommandOutput) => void): void; + /** + * @see {@link DescribeIdentityPoolCommand} + */ + describeIdentityPool(args: DescribeIdentityPoolCommandInput, options?: __HttpHandlerOptions): Promise; + describeIdentityPool(args: DescribeIdentityPoolCommandInput, cb: (err: any, data?: DescribeIdentityPoolCommandOutput) => void): void; + describeIdentityPool(args: DescribeIdentityPoolCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: DescribeIdentityPoolCommandOutput) => void): void; + /** + * @see {@link GetCredentialsForIdentityCommand} + */ + getCredentialsForIdentity(args: GetCredentialsForIdentityCommandInput, options?: __HttpHandlerOptions): Promise; + getCredentialsForIdentity(args: GetCredentialsForIdentityCommandInput, cb: (err: any, data?: GetCredentialsForIdentityCommandOutput) => void): void; + getCredentialsForIdentity(args: GetCredentialsForIdentityCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetCredentialsForIdentityCommandOutput) => void): void; + /** + * @see {@link GetIdCommand} + */ + getId(args: GetIdCommandInput, options?: __HttpHandlerOptions): Promise; + getId(args: GetIdCommandInput, cb: (err: any, data?: GetIdCommandOutput) => void): void; + getId(args: GetIdCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetIdCommandOutput) => void): void; + /** + * @see {@link GetIdentityPoolRolesCommand} + */ + getIdentityPoolRoles(args: GetIdentityPoolRolesCommandInput, options?: __HttpHandlerOptions): Promise; + getIdentityPoolRoles(args: GetIdentityPoolRolesCommandInput, cb: (err: any, data?: GetIdentityPoolRolesCommandOutput) => void): void; + getIdentityPoolRoles(args: GetIdentityPoolRolesCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetIdentityPoolRolesCommandOutput) => void): void; + /** + * @see {@link GetOpenIdTokenCommand} + */ + getOpenIdToken(args: GetOpenIdTokenCommandInput, options?: __HttpHandlerOptions): Promise; + getOpenIdToken(args: GetOpenIdTokenCommandInput, cb: (err: any, data?: GetOpenIdTokenCommandOutput) => void): void; + getOpenIdToken(args: GetOpenIdTokenCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetOpenIdTokenCommandOutput) => void): void; + /** + * @see {@link GetOpenIdTokenForDeveloperIdentityCommand} + */ + getOpenIdTokenForDeveloperIdentity(args: GetOpenIdTokenForDeveloperIdentityCommandInput, options?: __HttpHandlerOptions): Promise; + getOpenIdTokenForDeveloperIdentity(args: GetOpenIdTokenForDeveloperIdentityCommandInput, cb: (err: any, data?: GetOpenIdTokenForDeveloperIdentityCommandOutput) => void): void; + getOpenIdTokenForDeveloperIdentity(args: GetOpenIdTokenForDeveloperIdentityCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetOpenIdTokenForDeveloperIdentityCommandOutput) => void): void; + /** + * @see {@link GetPrincipalTagAttributeMapCommand} + */ + getPrincipalTagAttributeMap(args: GetPrincipalTagAttributeMapCommandInput, options?: __HttpHandlerOptions): Promise; + getPrincipalTagAttributeMap(args: GetPrincipalTagAttributeMapCommandInput, cb: (err: any, data?: GetPrincipalTagAttributeMapCommandOutput) => void): void; + getPrincipalTagAttributeMap(args: GetPrincipalTagAttributeMapCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetPrincipalTagAttributeMapCommandOutput) => void): void; + /** + * @see {@link ListIdentitiesCommand} + */ + listIdentities(args: ListIdentitiesCommandInput, options?: __HttpHandlerOptions): Promise; + listIdentities(args: ListIdentitiesCommandInput, cb: (err: any, data?: ListIdentitiesCommandOutput) => void): void; + listIdentities(args: ListIdentitiesCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: ListIdentitiesCommandOutput) => void): void; + /** + * @see {@link ListIdentityPoolsCommand} + */ + listIdentityPools(args: ListIdentityPoolsCommandInput, options?: __HttpHandlerOptions): Promise; + listIdentityPools(args: ListIdentityPoolsCommandInput, cb: (err: any, data?: ListIdentityPoolsCommandOutput) => void): void; + listIdentityPools(args: ListIdentityPoolsCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: ListIdentityPoolsCommandOutput) => void): void; + /** + * @see {@link ListTagsForResourceCommand} + */ + listTagsForResource(args: ListTagsForResourceCommandInput, options?: __HttpHandlerOptions): Promise; + listTagsForResource(args: ListTagsForResourceCommandInput, cb: (err: any, data?: ListTagsForResourceCommandOutput) => void): void; + listTagsForResource(args: ListTagsForResourceCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: ListTagsForResourceCommandOutput) => void): void; + /** + * @see {@link LookupDeveloperIdentityCommand} + */ + lookupDeveloperIdentity(args: LookupDeveloperIdentityCommandInput, options?: __HttpHandlerOptions): Promise; + lookupDeveloperIdentity(args: LookupDeveloperIdentityCommandInput, cb: (err: any, data?: LookupDeveloperIdentityCommandOutput) => void): void; + lookupDeveloperIdentity(args: LookupDeveloperIdentityCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: LookupDeveloperIdentityCommandOutput) => void): void; + /** + * @see {@link MergeDeveloperIdentitiesCommand} + */ + mergeDeveloperIdentities(args: MergeDeveloperIdentitiesCommandInput, options?: __HttpHandlerOptions): Promise; + mergeDeveloperIdentities(args: MergeDeveloperIdentitiesCommandInput, cb: (err: any, data?: MergeDeveloperIdentitiesCommandOutput) => void): void; + mergeDeveloperIdentities(args: MergeDeveloperIdentitiesCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: MergeDeveloperIdentitiesCommandOutput) => void): void; + /** + * @see {@link SetIdentityPoolRolesCommand} + */ + setIdentityPoolRoles(args: SetIdentityPoolRolesCommandInput, options?: __HttpHandlerOptions): Promise; + setIdentityPoolRoles(args: SetIdentityPoolRolesCommandInput, cb: (err: any, data?: SetIdentityPoolRolesCommandOutput) => void): void; + setIdentityPoolRoles(args: SetIdentityPoolRolesCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: SetIdentityPoolRolesCommandOutput) => void): void; + /** + * @see {@link SetPrincipalTagAttributeMapCommand} + */ + setPrincipalTagAttributeMap(args: SetPrincipalTagAttributeMapCommandInput, options?: __HttpHandlerOptions): Promise; + setPrincipalTagAttributeMap(args: SetPrincipalTagAttributeMapCommandInput, cb: (err: any, data?: SetPrincipalTagAttributeMapCommandOutput) => void): void; + setPrincipalTagAttributeMap(args: SetPrincipalTagAttributeMapCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: SetPrincipalTagAttributeMapCommandOutput) => void): void; + /** + * @see {@link TagResourceCommand} + */ + tagResource(args: TagResourceCommandInput, options?: __HttpHandlerOptions): Promise; + tagResource(args: TagResourceCommandInput, cb: (err: any, data?: TagResourceCommandOutput) => void): void; + tagResource(args: TagResourceCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: TagResourceCommandOutput) => void): void; + /** + * @see {@link UnlinkDeveloperIdentityCommand} + */ + unlinkDeveloperIdentity(args: UnlinkDeveloperIdentityCommandInput, options?: __HttpHandlerOptions): Promise; + unlinkDeveloperIdentity(args: UnlinkDeveloperIdentityCommandInput, cb: (err: any, data?: UnlinkDeveloperIdentityCommandOutput) => void): void; + unlinkDeveloperIdentity(args: UnlinkDeveloperIdentityCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: UnlinkDeveloperIdentityCommandOutput) => void): void; + /** + * @see {@link UnlinkIdentityCommand} + */ + unlinkIdentity(args: UnlinkIdentityCommandInput, options?: __HttpHandlerOptions): Promise; + unlinkIdentity(args: UnlinkIdentityCommandInput, cb: (err: any, data?: UnlinkIdentityCommandOutput) => void): void; + unlinkIdentity(args: UnlinkIdentityCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: UnlinkIdentityCommandOutput) => void): void; + /** + * @see {@link UntagResourceCommand} + */ + untagResource(args: UntagResourceCommandInput, options?: __HttpHandlerOptions): Promise; + untagResource(args: UntagResourceCommandInput, cb: (err: any, data?: UntagResourceCommandOutput) => void): void; + untagResource(args: UntagResourceCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: UntagResourceCommandOutput) => void): void; + /** + * @see {@link UpdateIdentityPoolCommand} + */ + updateIdentityPool(args: UpdateIdentityPoolCommandInput, options?: __HttpHandlerOptions): Promise; + updateIdentityPool(args: UpdateIdentityPoolCommandInput, cb: (err: any, data?: UpdateIdentityPoolCommandOutput) => void): void; + updateIdentityPool(args: UpdateIdentityPoolCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: UpdateIdentityPoolCommandOutput) => void): void; + /** + * @see {@link ListIdentityPoolsCommand} + * @param args - command input. + * @param paginationConfig - optional pagination config. + * @returns AsyncIterable of {@link ListIdentityPoolsCommandOutput}. + */ + paginateListIdentityPools(args: ListIdentityPoolsCommandInput, paginationConfig?: Omit): Paginator; +} +/** + * Amazon Cognito Federated Identities + *

Amazon Cognito Federated Identities is a web service that delivers scoped temporary + * credentials to mobile devices and other untrusted environments. It uniquely identifies a + * device and supplies the user with a consistent identity over the lifetime of an + * application.

+ *

Using Amazon Cognito Federated Identities, you can enable authentication with one or + * more third-party identity providers (Facebook, Google, or Login with Amazon) or an Amazon + * Cognito user pool, and you can also choose to support unauthenticated access from your app. + * Cognito delivers a unique identifier for each user and acts as an OpenID token provider + * trusted by Security Token Service (STS) to access temporary, limited-privilege Amazon Web Services credentials.

+ *

For a description of the authentication flow from the Amazon Cognito Developer Guide + * see Authentication + * Flow.

+ *

For more information see Amazon Cognito Federated + * Identities.

+ * @public + */ +export declare class CognitoIdentity extends CognitoIdentityClient implements CognitoIdentity { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/CognitoIdentityClient.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/CognitoIdentityClient.d.ts new file mode 100644 index 000000000..a078403e3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/CognitoIdentityClient.d.ts @@ -0,0 +1,224 @@ +import { type HostHeaderInputConfig, type HostHeaderResolvedConfig } from "@aws-sdk/middleware-host-header"; +import { type UserAgentInputConfig, type UserAgentResolvedConfig } from "@aws-sdk/middleware-user-agent"; +import { type RegionInputConfig, type RegionResolvedConfig } from "@smithy/config-resolver"; +import { type EndpointInputConfig, type EndpointResolvedConfig } from "@smithy/middleware-endpoint"; +import { type RetryInputConfig, type RetryResolvedConfig } from "@smithy/middleware-retry"; +import type { HttpHandlerUserInput as __HttpHandlerUserInput } from "@smithy/protocol-http"; +import { type DefaultsMode as __DefaultsMode, type SmithyConfiguration as __SmithyConfiguration, type SmithyResolvedConfiguration as __SmithyResolvedConfiguration, Client as __Client } from "@smithy/smithy-client"; +import { type BodyLengthCalculator as __BodyLengthCalculator, type CheckOptionalClientConfig as __CheckOptionalClientConfig, type ChecksumConstructor as __ChecksumConstructor, type Decoder as __Decoder, type Encoder as __Encoder, type HashConstructor as __HashConstructor, type HttpHandlerOptions as __HttpHandlerOptions, type Logger as __Logger, type Provider as __Provider, type StreamCollector as __StreamCollector, type UrlParser as __UrlParser, AwsCredentialIdentityProvider, Provider, UserAgent as __UserAgent } from "@smithy/types"; +import { type HttpAuthSchemeInputConfig, type HttpAuthSchemeResolvedConfig } from "./auth/httpAuthSchemeProvider"; +import { CreateIdentityPoolCommandInput, CreateIdentityPoolCommandOutput } from "./commands/CreateIdentityPoolCommand"; +import { DeleteIdentitiesCommandInput, DeleteIdentitiesCommandOutput } from "./commands/DeleteIdentitiesCommand"; +import { DeleteIdentityPoolCommandInput, DeleteIdentityPoolCommandOutput } from "./commands/DeleteIdentityPoolCommand"; +import { DescribeIdentityCommandInput, DescribeIdentityCommandOutput } from "./commands/DescribeIdentityCommand"; +import { DescribeIdentityPoolCommandInput, DescribeIdentityPoolCommandOutput } from "./commands/DescribeIdentityPoolCommand"; +import { GetCredentialsForIdentityCommandInput, GetCredentialsForIdentityCommandOutput } from "./commands/GetCredentialsForIdentityCommand"; +import { GetIdCommandInput, GetIdCommandOutput } from "./commands/GetIdCommand"; +import { GetIdentityPoolRolesCommandInput, GetIdentityPoolRolesCommandOutput } from "./commands/GetIdentityPoolRolesCommand"; +import { GetOpenIdTokenCommandInput, GetOpenIdTokenCommandOutput } from "./commands/GetOpenIdTokenCommand"; +import { GetOpenIdTokenForDeveloperIdentityCommandInput, GetOpenIdTokenForDeveloperIdentityCommandOutput } from "./commands/GetOpenIdTokenForDeveloperIdentityCommand"; +import { GetPrincipalTagAttributeMapCommandInput, GetPrincipalTagAttributeMapCommandOutput } from "./commands/GetPrincipalTagAttributeMapCommand"; +import { ListIdentitiesCommandInput, ListIdentitiesCommandOutput } from "./commands/ListIdentitiesCommand"; +import { ListIdentityPoolsCommandInput, ListIdentityPoolsCommandOutput } from "./commands/ListIdentityPoolsCommand"; +import { ListTagsForResourceCommandInput, ListTagsForResourceCommandOutput } from "./commands/ListTagsForResourceCommand"; +import { LookupDeveloperIdentityCommandInput, LookupDeveloperIdentityCommandOutput } from "./commands/LookupDeveloperIdentityCommand"; +import { MergeDeveloperIdentitiesCommandInput, MergeDeveloperIdentitiesCommandOutput } from "./commands/MergeDeveloperIdentitiesCommand"; +import { SetIdentityPoolRolesCommandInput, SetIdentityPoolRolesCommandOutput } from "./commands/SetIdentityPoolRolesCommand"; +import { SetPrincipalTagAttributeMapCommandInput, SetPrincipalTagAttributeMapCommandOutput } from "./commands/SetPrincipalTagAttributeMapCommand"; +import { TagResourceCommandInput, TagResourceCommandOutput } from "./commands/TagResourceCommand"; +import { UnlinkDeveloperIdentityCommandInput, UnlinkDeveloperIdentityCommandOutput } from "./commands/UnlinkDeveloperIdentityCommand"; +import { UnlinkIdentityCommandInput, UnlinkIdentityCommandOutput } from "./commands/UnlinkIdentityCommand"; +import { UntagResourceCommandInput, UntagResourceCommandOutput } from "./commands/UntagResourceCommand"; +import { UpdateIdentityPoolCommandInput, UpdateIdentityPoolCommandOutput } from "./commands/UpdateIdentityPoolCommand"; +import { ClientInputEndpointParameters, ClientResolvedEndpointParameters, EndpointParameters } from "./endpoint/EndpointParameters"; +import { type RuntimeExtension, type RuntimeExtensionsConfig } from "./runtimeExtensions"; +export { __Client }; +/** + * @public + */ +export type ServiceInputTypes = CreateIdentityPoolCommandInput | DeleteIdentitiesCommandInput | DeleteIdentityPoolCommandInput | DescribeIdentityCommandInput | DescribeIdentityPoolCommandInput | GetCredentialsForIdentityCommandInput | GetIdCommandInput | GetIdentityPoolRolesCommandInput | GetOpenIdTokenCommandInput | GetOpenIdTokenForDeveloperIdentityCommandInput | GetPrincipalTagAttributeMapCommandInput | ListIdentitiesCommandInput | ListIdentityPoolsCommandInput | ListTagsForResourceCommandInput | LookupDeveloperIdentityCommandInput | MergeDeveloperIdentitiesCommandInput | SetIdentityPoolRolesCommandInput | SetPrincipalTagAttributeMapCommandInput | TagResourceCommandInput | UnlinkDeveloperIdentityCommandInput | UnlinkIdentityCommandInput | UntagResourceCommandInput | UpdateIdentityPoolCommandInput; +/** + * @public + */ +export type ServiceOutputTypes = CreateIdentityPoolCommandOutput | DeleteIdentitiesCommandOutput | DeleteIdentityPoolCommandOutput | DescribeIdentityCommandOutput | DescribeIdentityPoolCommandOutput | GetCredentialsForIdentityCommandOutput | GetIdCommandOutput | GetIdentityPoolRolesCommandOutput | GetOpenIdTokenCommandOutput | GetOpenIdTokenForDeveloperIdentityCommandOutput | GetPrincipalTagAttributeMapCommandOutput | ListIdentitiesCommandOutput | ListIdentityPoolsCommandOutput | ListTagsForResourceCommandOutput | LookupDeveloperIdentityCommandOutput | MergeDeveloperIdentitiesCommandOutput | SetIdentityPoolRolesCommandOutput | SetPrincipalTagAttributeMapCommandOutput | TagResourceCommandOutput | UnlinkDeveloperIdentityCommandOutput | UnlinkIdentityCommandOutput | UntagResourceCommandOutput | UpdateIdentityPoolCommandOutput; +/** + * @public + */ +export interface ClientDefaults extends Partial<__SmithyConfiguration<__HttpHandlerOptions>> { + /** + * The HTTP handler to use or its constructor options. Fetch in browser and Https in Nodejs. + */ + requestHandler?: __HttpHandlerUserInput; + /** + * A constructor for a class implementing the {@link @smithy/types#ChecksumConstructor} interface + * that computes the SHA-256 HMAC or checksum of a string or binary buffer. + * @internal + */ + sha256?: __ChecksumConstructor | __HashConstructor; + /** + * The function that will be used to convert strings into HTTP endpoints. + * @internal + */ + urlParser?: __UrlParser; + /** + * A function that can calculate the length of a request body. + * @internal + */ + bodyLengthChecker?: __BodyLengthCalculator; + /** + * A function that converts a stream into an array of bytes. + * @internal + */ + streamCollector?: __StreamCollector; + /** + * The function that will be used to convert a base64-encoded string to a byte array. + * @internal + */ + base64Decoder?: __Decoder; + /** + * The function that will be used to convert binary data to a base64-encoded string. + * @internal + */ + base64Encoder?: __Encoder; + /** + * The function that will be used to convert a UTF8-encoded string to a byte array. + * @internal + */ + utf8Decoder?: __Decoder; + /** + * The function that will be used to convert binary data to a UTF-8 encoded string. + * @internal + */ + utf8Encoder?: __Encoder; + /** + * The runtime environment. + * @internal + */ + runtime?: string; + /** + * Disable dynamically changing the endpoint of the client based on the hostPrefix + * trait of an operation. + */ + disableHostPrefix?: boolean; + /** + * Unique service identifier. + * @internal + */ + serviceId?: string; + /** + * Enables IPv6/IPv4 dualstack endpoint. + */ + useDualstackEndpoint?: boolean | __Provider; + /** + * Enables FIPS compatible endpoints. + */ + useFipsEndpoint?: boolean | __Provider; + /** + * The AWS region to which this client will send requests + */ + region?: string | __Provider; + /** + * Setting a client profile is similar to setting a value for the + * AWS_PROFILE environment variable. Setting a profile on a client + * in code only affects the single client instance, unlike AWS_PROFILE. + * + * When set, and only for environments where an AWS configuration + * file exists, fields configurable by this file will be retrieved + * from the specified profile within that file. + * Conflicting code configuration and environment variables will + * still have higher priority. + * + * For client credential resolution that involves checking the AWS + * configuration file, the client's profile (this value) will be + * used unless a different profile is set in the credential + * provider options. + * + */ + profile?: string; + /** + * The provider populating default tracking information to be sent with `user-agent`, `x-amz-user-agent` header + * @internal + */ + defaultUserAgentProvider?: Provider<__UserAgent>; + /** + * Default credentials provider; Not available in browser runtime. + * @deprecated + * @internal + */ + credentialDefaultProvider?: (input: any) => AwsCredentialIdentityProvider; + /** + * Value for how many times a request will be made at most in case of retry. + */ + maxAttempts?: number | __Provider; + /** + * Specifies which retry algorithm to use. + * @see https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-util-retry/Enum/RETRY_MODES/ + * + */ + retryMode?: string | __Provider; + /** + * Optional logger for logging debug/info/warn/error. + */ + logger?: __Logger; + /** + * Optional extensions + */ + extensions?: RuntimeExtension[]; + /** + * The {@link @smithy/smithy-client#DefaultsMode} that will be used to determine how certain default configuration options are resolved in the SDK. + */ + defaultsMode?: __DefaultsMode | __Provider<__DefaultsMode>; +} +/** + * @public + */ +export type CognitoIdentityClientConfigType = Partial<__SmithyConfiguration<__HttpHandlerOptions>> & ClientDefaults & UserAgentInputConfig & RetryInputConfig & RegionInputConfig & HostHeaderInputConfig & EndpointInputConfig & HttpAuthSchemeInputConfig & ClientInputEndpointParameters; +/** + * @public + * + * The configuration interface of CognitoIdentityClient class constructor that set the region, credentials and other options. + */ +export interface CognitoIdentityClientConfig extends CognitoIdentityClientConfigType { +} +/** + * @public + */ +export type CognitoIdentityClientResolvedConfigType = __SmithyResolvedConfiguration<__HttpHandlerOptions> & Required & RuntimeExtensionsConfig & UserAgentResolvedConfig & RetryResolvedConfig & RegionResolvedConfig & HostHeaderResolvedConfig & EndpointResolvedConfig & HttpAuthSchemeResolvedConfig & ClientResolvedEndpointParameters; +/** + * @public + * + * The resolved configuration interface of CognitoIdentityClient class. This is resolved and normalized from the {@link CognitoIdentityClientConfig | constructor configuration interface}. + */ +export interface CognitoIdentityClientResolvedConfig extends CognitoIdentityClientResolvedConfigType { +} +/** + * Amazon Cognito Federated Identities + *

Amazon Cognito Federated Identities is a web service that delivers scoped temporary + * credentials to mobile devices and other untrusted environments. It uniquely identifies a + * device and supplies the user with a consistent identity over the lifetime of an + * application.

+ *

Using Amazon Cognito Federated Identities, you can enable authentication with one or + * more third-party identity providers (Facebook, Google, or Login with Amazon) or an Amazon + * Cognito user pool, and you can also choose to support unauthenticated access from your app. + * Cognito delivers a unique identifier for each user and acts as an OpenID token provider + * trusted by Security Token Service (STS) to access temporary, limited-privilege Amazon Web Services credentials.

+ *

For a description of the authentication flow from the Amazon Cognito Developer Guide + * see Authentication + * Flow.

+ *

For more information see Amazon Cognito Federated + * Identities.

+ * @public + */ +export declare class CognitoIdentityClient extends __Client<__HttpHandlerOptions, ServiceInputTypes, ServiceOutputTypes, CognitoIdentityClientResolvedConfig> { + /** + * The resolved configuration of CognitoIdentityClient class. This is resolved and normalized from the {@link CognitoIdentityClientConfig | constructor configuration interface}. + */ + readonly config: CognitoIdentityClientResolvedConfig; + constructor(...[configuration]: __CheckOptionalClientConfig); + /** + * Destroy underlying resources, like sockets. It's usually not necessary to do this. + * However in Node.js, it's best to explicitly shut down the client's agent when it is no longer needed. + * Otherwise, sockets might stay open for quite a long time before the server terminates them. + */ + destroy(): void; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/auth/httpAuthExtensionConfiguration.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/auth/httpAuthExtensionConfiguration.d.ts new file mode 100644 index 000000000..e420d2994 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/auth/httpAuthExtensionConfiguration.d.ts @@ -0,0 +1,29 @@ +import { type HttpAuthScheme, AwsCredentialIdentity, AwsCredentialIdentityProvider } from "@smithy/types"; +import type { CognitoIdentityHttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; +/** + * @internal + */ +export interface HttpAuthExtensionConfiguration { + setHttpAuthScheme(httpAuthScheme: HttpAuthScheme): void; + httpAuthSchemes(): HttpAuthScheme[]; + setHttpAuthSchemeProvider(httpAuthSchemeProvider: CognitoIdentityHttpAuthSchemeProvider): void; + httpAuthSchemeProvider(): CognitoIdentityHttpAuthSchemeProvider; + setCredentials(credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider): void; + credentials(): AwsCredentialIdentity | AwsCredentialIdentityProvider | undefined; +} +/** + * @internal + */ +export type HttpAuthRuntimeConfig = Partial<{ + httpAuthSchemes: HttpAuthScheme[]; + httpAuthSchemeProvider: CognitoIdentityHttpAuthSchemeProvider; + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider; +}>; +/** + * @internal + */ +export declare const getHttpAuthExtensionConfiguration: (runtimeConfig: HttpAuthRuntimeConfig) => HttpAuthExtensionConfiguration; +/** + * @internal + */ +export declare const resolveHttpAuthRuntimeConfig: (config: HttpAuthExtensionConfiguration) => HttpAuthRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/auth/httpAuthSchemeProvider.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/auth/httpAuthSchemeProvider.d.ts new file mode 100644 index 000000000..2cf81b4a7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/auth/httpAuthSchemeProvider.d.ts @@ -0,0 +1,75 @@ +import { AwsSdkSigV4AuthInputConfig, AwsSdkSigV4AuthResolvedConfig, AwsSdkSigV4PreviouslyResolved } from "@aws-sdk/core"; +import type { HandlerExecutionContext, HttpAuthScheme, HttpAuthSchemeParameters, HttpAuthSchemeParametersProvider, HttpAuthSchemeProvider, Provider } from "@smithy/types"; +import { type CognitoIdentityClientResolvedConfig } from "../CognitoIdentityClient"; +/** + * @internal + */ +export interface CognitoIdentityHttpAuthSchemeParameters extends HttpAuthSchemeParameters { + region?: string; +} +/** + * @internal + */ +export interface CognitoIdentityHttpAuthSchemeParametersProvider extends HttpAuthSchemeParametersProvider { +} +/** + * @internal + */ +export declare const defaultCognitoIdentityHttpAuthSchemeParametersProvider: (config: CognitoIdentityClientResolvedConfig, context: HandlerExecutionContext, input: object) => Promise; +/** + * @internal + */ +export interface CognitoIdentityHttpAuthSchemeProvider extends HttpAuthSchemeProvider { +} +/** + * @internal + */ +export declare const defaultCognitoIdentityHttpAuthSchemeProvider: CognitoIdentityHttpAuthSchemeProvider; +/** + * @public + */ +export interface HttpAuthSchemeInputConfig extends AwsSdkSigV4AuthInputConfig { + /** + * A comma-separated list of case-sensitive auth scheme names. + * An auth scheme name is a fully qualified auth scheme ID with the namespace prefix trimmed. + * For example, the auth scheme with ID aws.auth#sigv4 is named sigv4. + * @public + */ + authSchemePreference?: string[] | Provider; + /** + * Configuration of HttpAuthSchemes for a client which provides default identity providers and signers per auth scheme. + * @internal + */ + httpAuthSchemes?: HttpAuthScheme[]; + /** + * Configuration of an HttpAuthSchemeProvider for a client which resolves which HttpAuthScheme to use. + * @internal + */ + httpAuthSchemeProvider?: CognitoIdentityHttpAuthSchemeProvider; +} +/** + * @internal + */ +export interface HttpAuthSchemeResolvedConfig extends AwsSdkSigV4AuthResolvedConfig { + /** + * A comma-separated list of case-sensitive auth scheme names. + * An auth scheme name is a fully qualified auth scheme ID with the namespace prefix trimmed. + * For example, the auth scheme with ID aws.auth#sigv4 is named sigv4. + * @public + */ + readonly authSchemePreference: Provider; + /** + * Configuration of HttpAuthSchemes for a client which provides default identity providers and signers per auth scheme. + * @internal + */ + readonly httpAuthSchemes: HttpAuthScheme[]; + /** + * Configuration of an HttpAuthSchemeProvider for a client which resolves which HttpAuthScheme to use. + * @internal + */ + readonly httpAuthSchemeProvider: CognitoIdentityHttpAuthSchemeProvider; +} +/** + * @internal + */ +export declare const resolveHttpAuthSchemeConfig: (config: T & HttpAuthSchemeInputConfig & AwsSdkSigV4PreviouslyResolved) => T & HttpAuthSchemeResolvedConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/CreateIdentityPoolCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/CreateIdentityPoolCommand.d.ts new file mode 100644 index 000000000..3df3e22d5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/CreateIdentityPoolCommand.d.ts @@ -0,0 +1,172 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CognitoIdentityClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../CognitoIdentityClient"; +import type { CreateIdentityPoolInput, IdentityPool } from "../models/models_0"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link CreateIdentityPoolCommand}. + */ +export interface CreateIdentityPoolCommandInput extends CreateIdentityPoolInput { +} +/** + * @public + * + * The output of {@link CreateIdentityPoolCommand}. + */ +export interface CreateIdentityPoolCommandOutput extends IdentityPool, __MetadataBearer { +} +declare const CreateIdentityPoolCommand_base: { + new (input: CreateIdentityPoolCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: CreateIdentityPoolCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Creates a new identity pool. The identity pool is a store of user identity + * information that is specific to your Amazon Web Services account. The keys for + * SupportedLoginProviders are as follows:

+ *
    + *
  • + *

    Facebook: graph.facebook.com + *

    + *
  • + *
  • + *

    Google: accounts.google.com + *

    + *
  • + *
  • + *

    Sign in With Apple: appleid.apple.com + *

    + *
  • + *
  • + *

    Amazon: www.amazon.com + *

    + *
  • + *
  • + *

    Twitter: api.twitter.com + *

    + *
  • + *
  • + *

    Digits: www.digits.com + *

    + *
  • + *
+ * + *

If you don't provide a value for a parameter, Amazon Cognito sets it to its default value. + *

+ *
+ *

You must use Amazon Web Services developer credentials to call this + * operation.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { CognitoIdentityClient, CreateIdentityPoolCommand } from "@aws-sdk/client-cognito-identity"; // ES Modules import + * // const { CognitoIdentityClient, CreateIdentityPoolCommand } = require("@aws-sdk/client-cognito-identity"); // CommonJS import + * // import type { CognitoIdentityClientConfig } from "@aws-sdk/client-cognito-identity"; + * const config = {}; // type is CognitoIdentityClientConfig + * const client = new CognitoIdentityClient(config); + * const input = { // CreateIdentityPoolInput + * IdentityPoolName: "STRING_VALUE", // required + * AllowUnauthenticatedIdentities: true || false, // required + * AllowClassicFlow: true || false, + * SupportedLoginProviders: { // IdentityProviders + * "": "STRING_VALUE", + * }, + * DeveloperProviderName: "STRING_VALUE", + * OpenIdConnectProviderARNs: [ // OIDCProviderList + * "STRING_VALUE", + * ], + * CognitoIdentityProviders: [ // CognitoIdentityProviderList + * { // CognitoIdentityProvider + * ProviderName: "STRING_VALUE", + * ClientId: "STRING_VALUE", + * ServerSideTokenCheck: true || false, + * }, + * ], + * SamlProviderARNs: [ // SAMLProviderList + * "STRING_VALUE", + * ], + * IdentityPoolTags: { // IdentityPoolTagsType + * "": "STRING_VALUE", + * }, + * }; + * const command = new CreateIdentityPoolCommand(input); + * const response = await client.send(command); + * // { // IdentityPool + * // IdentityPoolId: "STRING_VALUE", // required + * // IdentityPoolName: "STRING_VALUE", // required + * // AllowUnauthenticatedIdentities: true || false, // required + * // AllowClassicFlow: true || false, + * // SupportedLoginProviders: { // IdentityProviders + * // "": "STRING_VALUE", + * // }, + * // DeveloperProviderName: "STRING_VALUE", + * // OpenIdConnectProviderARNs: [ // OIDCProviderList + * // "STRING_VALUE", + * // ], + * // CognitoIdentityProviders: [ // CognitoIdentityProviderList + * // { // CognitoIdentityProvider + * // ProviderName: "STRING_VALUE", + * // ClientId: "STRING_VALUE", + * // ServerSideTokenCheck: true || false, + * // }, + * // ], + * // SamlProviderARNs: [ // SAMLProviderList + * // "STRING_VALUE", + * // ], + * // IdentityPoolTags: { // IdentityPoolTagsType + * // "": "STRING_VALUE", + * // }, + * // }; + * + * ``` + * + * @param CreateIdentityPoolCommandInput - {@link CreateIdentityPoolCommandInput} + * @returns {@link CreateIdentityPoolCommandOutput} + * @see {@link CreateIdentityPoolCommandInput} for command's `input` shape. + * @see {@link CreateIdentityPoolCommandOutput} for command's `response` shape. + * @see {@link CognitoIdentityClientResolvedConfig | config} for CognitoIdentityClient's `config` shape. + * + * @throws {@link InternalErrorException} (server fault) + *

Thrown when the service encounters an error during processing the request.

+ * + * @throws {@link InvalidParameterException} (client fault) + *

Thrown for missing or bad input parameter(s).

+ * + * @throws {@link LimitExceededException} (client fault) + *

Thrown when the total number of user pools has exceeded a preset limit.

+ * + * @throws {@link NotAuthorizedException} (client fault) + *

Thrown when a user is not authorized to access the requested resource.

+ * + * @throws {@link ResourceConflictException} (client fault) + *

Thrown when a user tries to use a login which is already linked to another + * account.

+ * + * @throws {@link TooManyRequestsException} (client fault) + *

Thrown when a request is throttled.

+ * + * @throws {@link CognitoIdentityServiceException} + *

Base exception class for all service exceptions from CognitoIdentity service.

+ * + * + * @public + */ +export declare class CreateIdentityPoolCommand extends CreateIdentityPoolCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: CreateIdentityPoolInput; + output: IdentityPool; + }; + sdk: { + input: CreateIdentityPoolCommandInput; + output: CreateIdentityPoolCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/DeleteIdentitiesCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/DeleteIdentitiesCommand.d.ts new file mode 100644 index 000000000..777fad56f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/DeleteIdentitiesCommand.d.ts @@ -0,0 +1,93 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CognitoIdentityClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../CognitoIdentityClient"; +import type { DeleteIdentitiesInput, DeleteIdentitiesResponse } from "../models/models_0"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link DeleteIdentitiesCommand}. + */ +export interface DeleteIdentitiesCommandInput extends DeleteIdentitiesInput { +} +/** + * @public + * + * The output of {@link DeleteIdentitiesCommand}. + */ +export interface DeleteIdentitiesCommandOutput extends DeleteIdentitiesResponse, __MetadataBearer { +} +declare const DeleteIdentitiesCommand_base: { + new (input: DeleteIdentitiesCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: DeleteIdentitiesCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Deletes identities from an identity pool. You can specify a list of 1-60 identities + * that you want to delete.

+ *

You must use Amazon Web Services developer credentials to call this + * operation.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { CognitoIdentityClient, DeleteIdentitiesCommand } from "@aws-sdk/client-cognito-identity"; // ES Modules import + * // const { CognitoIdentityClient, DeleteIdentitiesCommand } = require("@aws-sdk/client-cognito-identity"); // CommonJS import + * // import type { CognitoIdentityClientConfig } from "@aws-sdk/client-cognito-identity"; + * const config = {}; // type is CognitoIdentityClientConfig + * const client = new CognitoIdentityClient(config); + * const input = { // DeleteIdentitiesInput + * IdentityIdsToDelete: [ // IdentityIdList // required + * "STRING_VALUE", + * ], + * }; + * const command = new DeleteIdentitiesCommand(input); + * const response = await client.send(command); + * // { // DeleteIdentitiesResponse + * // UnprocessedIdentityIds: [ // UnprocessedIdentityIdList + * // { // UnprocessedIdentityId + * // IdentityId: "STRING_VALUE", + * // ErrorCode: "AccessDenied" || "InternalServerError", + * // }, + * // ], + * // }; + * + * ``` + * + * @param DeleteIdentitiesCommandInput - {@link DeleteIdentitiesCommandInput} + * @returns {@link DeleteIdentitiesCommandOutput} + * @see {@link DeleteIdentitiesCommandInput} for command's `input` shape. + * @see {@link DeleteIdentitiesCommandOutput} for command's `response` shape. + * @see {@link CognitoIdentityClientResolvedConfig | config} for CognitoIdentityClient's `config` shape. + * + * @throws {@link InternalErrorException} (server fault) + *

Thrown when the service encounters an error during processing the request.

+ * + * @throws {@link InvalidParameterException} (client fault) + *

Thrown for missing or bad input parameter(s).

+ * + * @throws {@link TooManyRequestsException} (client fault) + *

Thrown when a request is throttled.

+ * + * @throws {@link CognitoIdentityServiceException} + *

Base exception class for all service exceptions from CognitoIdentity service.

+ * + * + * @public + */ +export declare class DeleteIdentitiesCommand extends DeleteIdentitiesCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: DeleteIdentitiesInput; + output: DeleteIdentitiesResponse; + }; + sdk: { + input: DeleteIdentitiesCommandInput; + output: DeleteIdentitiesCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/DeleteIdentityPoolCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/DeleteIdentityPoolCommand.d.ts new file mode 100644 index 000000000..a3f049a9c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/DeleteIdentityPoolCommand.d.ts @@ -0,0 +1,91 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CognitoIdentityClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../CognitoIdentityClient"; +import type { DeleteIdentityPoolInput } from "../models/models_0"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link DeleteIdentityPoolCommand}. + */ +export interface DeleteIdentityPoolCommandInput extends DeleteIdentityPoolInput { +} +/** + * @public + * + * The output of {@link DeleteIdentityPoolCommand}. + */ +export interface DeleteIdentityPoolCommandOutput extends __MetadataBearer { +} +declare const DeleteIdentityPoolCommand_base: { + new (input: DeleteIdentityPoolCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: DeleteIdentityPoolCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Deletes an identity pool. Once a pool is deleted, users will not be able to + * authenticate with the pool.

+ *

You must use Amazon Web Services developer credentials to call this + * operation.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { CognitoIdentityClient, DeleteIdentityPoolCommand } from "@aws-sdk/client-cognito-identity"; // ES Modules import + * // const { CognitoIdentityClient, DeleteIdentityPoolCommand } = require("@aws-sdk/client-cognito-identity"); // CommonJS import + * // import type { CognitoIdentityClientConfig } from "@aws-sdk/client-cognito-identity"; + * const config = {}; // type is CognitoIdentityClientConfig + * const client = new CognitoIdentityClient(config); + * const input = { // DeleteIdentityPoolInput + * IdentityPoolId: "STRING_VALUE", // required + * }; + * const command = new DeleteIdentityPoolCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param DeleteIdentityPoolCommandInput - {@link DeleteIdentityPoolCommandInput} + * @returns {@link DeleteIdentityPoolCommandOutput} + * @see {@link DeleteIdentityPoolCommandInput} for command's `input` shape. + * @see {@link DeleteIdentityPoolCommandOutput} for command's `response` shape. + * @see {@link CognitoIdentityClientResolvedConfig | config} for CognitoIdentityClient's `config` shape. + * + * @throws {@link InternalErrorException} (server fault) + *

Thrown when the service encounters an error during processing the request.

+ * + * @throws {@link InvalidParameterException} (client fault) + *

Thrown for missing or bad input parameter(s).

+ * + * @throws {@link NotAuthorizedException} (client fault) + *

Thrown when a user is not authorized to access the requested resource.

+ * + * @throws {@link ResourceNotFoundException} (client fault) + *

Thrown when the requested resource (for example, a dataset or record) does not + * exist.

+ * + * @throws {@link TooManyRequestsException} (client fault) + *

Thrown when a request is throttled.

+ * + * @throws {@link CognitoIdentityServiceException} + *

Base exception class for all service exceptions from CognitoIdentity service.

+ * + * + * @public + */ +export declare class DeleteIdentityPoolCommand extends DeleteIdentityPoolCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: DeleteIdentityPoolInput; + output: {}; + }; + sdk: { + input: DeleteIdentityPoolCommandInput; + output: DeleteIdentityPoolCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/DescribeIdentityCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/DescribeIdentityCommand.d.ts new file mode 100644 index 000000000..075155ebb --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/DescribeIdentityCommand.d.ts @@ -0,0 +1,98 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CognitoIdentityClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../CognitoIdentityClient"; +import type { DescribeIdentityInput, IdentityDescription } from "../models/models_0"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link DescribeIdentityCommand}. + */ +export interface DescribeIdentityCommandInput extends DescribeIdentityInput { +} +/** + * @public + * + * The output of {@link DescribeIdentityCommand}. + */ +export interface DescribeIdentityCommandOutput extends IdentityDescription, __MetadataBearer { +} +declare const DescribeIdentityCommand_base: { + new (input: DescribeIdentityCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: DescribeIdentityCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Returns metadata related to the given identity, including when the identity was + * created and any associated linked logins.

+ *

You must use Amazon Web Services developer credentials to call this + * operation.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { CognitoIdentityClient, DescribeIdentityCommand } from "@aws-sdk/client-cognito-identity"; // ES Modules import + * // const { CognitoIdentityClient, DescribeIdentityCommand } = require("@aws-sdk/client-cognito-identity"); // CommonJS import + * // import type { CognitoIdentityClientConfig } from "@aws-sdk/client-cognito-identity"; + * const config = {}; // type is CognitoIdentityClientConfig + * const client = new CognitoIdentityClient(config); + * const input = { // DescribeIdentityInput + * IdentityId: "STRING_VALUE", // required + * }; + * const command = new DescribeIdentityCommand(input); + * const response = await client.send(command); + * // { // IdentityDescription + * // IdentityId: "STRING_VALUE", + * // Logins: [ // LoginsList + * // "STRING_VALUE", + * // ], + * // CreationDate: new Date("TIMESTAMP"), + * // LastModifiedDate: new Date("TIMESTAMP"), + * // }; + * + * ``` + * + * @param DescribeIdentityCommandInput - {@link DescribeIdentityCommandInput} + * @returns {@link DescribeIdentityCommandOutput} + * @see {@link DescribeIdentityCommandInput} for command's `input` shape. + * @see {@link DescribeIdentityCommandOutput} for command's `response` shape. + * @see {@link CognitoIdentityClientResolvedConfig | config} for CognitoIdentityClient's `config` shape. + * + * @throws {@link InternalErrorException} (server fault) + *

Thrown when the service encounters an error during processing the request.

+ * + * @throws {@link InvalidParameterException} (client fault) + *

Thrown for missing or bad input parameter(s).

+ * + * @throws {@link NotAuthorizedException} (client fault) + *

Thrown when a user is not authorized to access the requested resource.

+ * + * @throws {@link ResourceNotFoundException} (client fault) + *

Thrown when the requested resource (for example, a dataset or record) does not + * exist.

+ * + * @throws {@link TooManyRequestsException} (client fault) + *

Thrown when a request is throttled.

+ * + * @throws {@link CognitoIdentityServiceException} + *

Base exception class for all service exceptions from CognitoIdentity service.

+ * + * + * @public + */ +export declare class DescribeIdentityCommand extends DescribeIdentityCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: DescribeIdentityInput; + output: IdentityDescription; + }; + sdk: { + input: DescribeIdentityCommandInput; + output: DescribeIdentityCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/DescribeIdentityPoolCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/DescribeIdentityPoolCommand.d.ts new file mode 100644 index 000000000..49e9c7df0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/DescribeIdentityPoolCommand.d.ts @@ -0,0 +1,116 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CognitoIdentityClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../CognitoIdentityClient"; +import type { DescribeIdentityPoolInput, IdentityPool } from "../models/models_0"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link DescribeIdentityPoolCommand}. + */ +export interface DescribeIdentityPoolCommandInput extends DescribeIdentityPoolInput { +} +/** + * @public + * + * The output of {@link DescribeIdentityPoolCommand}. + */ +export interface DescribeIdentityPoolCommandOutput extends IdentityPool, __MetadataBearer { +} +declare const DescribeIdentityPoolCommand_base: { + new (input: DescribeIdentityPoolCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: DescribeIdentityPoolCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Gets details about a particular identity pool, including the pool name, ID + * description, creation date, and current number of users.

+ *

You must use Amazon Web Services developer credentials to call this + * operation.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { CognitoIdentityClient, DescribeIdentityPoolCommand } from "@aws-sdk/client-cognito-identity"; // ES Modules import + * // const { CognitoIdentityClient, DescribeIdentityPoolCommand } = require("@aws-sdk/client-cognito-identity"); // CommonJS import + * // import type { CognitoIdentityClientConfig } from "@aws-sdk/client-cognito-identity"; + * const config = {}; // type is CognitoIdentityClientConfig + * const client = new CognitoIdentityClient(config); + * const input = { // DescribeIdentityPoolInput + * IdentityPoolId: "STRING_VALUE", // required + * }; + * const command = new DescribeIdentityPoolCommand(input); + * const response = await client.send(command); + * // { // IdentityPool + * // IdentityPoolId: "STRING_VALUE", // required + * // IdentityPoolName: "STRING_VALUE", // required + * // AllowUnauthenticatedIdentities: true || false, // required + * // AllowClassicFlow: true || false, + * // SupportedLoginProviders: { // IdentityProviders + * // "": "STRING_VALUE", + * // }, + * // DeveloperProviderName: "STRING_VALUE", + * // OpenIdConnectProviderARNs: [ // OIDCProviderList + * // "STRING_VALUE", + * // ], + * // CognitoIdentityProviders: [ // CognitoIdentityProviderList + * // { // CognitoIdentityProvider + * // ProviderName: "STRING_VALUE", + * // ClientId: "STRING_VALUE", + * // ServerSideTokenCheck: true || false, + * // }, + * // ], + * // SamlProviderARNs: [ // SAMLProviderList + * // "STRING_VALUE", + * // ], + * // IdentityPoolTags: { // IdentityPoolTagsType + * // "": "STRING_VALUE", + * // }, + * // }; + * + * ``` + * + * @param DescribeIdentityPoolCommandInput - {@link DescribeIdentityPoolCommandInput} + * @returns {@link DescribeIdentityPoolCommandOutput} + * @see {@link DescribeIdentityPoolCommandInput} for command's `input` shape. + * @see {@link DescribeIdentityPoolCommandOutput} for command's `response` shape. + * @see {@link CognitoIdentityClientResolvedConfig | config} for CognitoIdentityClient's `config` shape. + * + * @throws {@link InternalErrorException} (server fault) + *

Thrown when the service encounters an error during processing the request.

+ * + * @throws {@link InvalidParameterException} (client fault) + *

Thrown for missing or bad input parameter(s).

+ * + * @throws {@link NotAuthorizedException} (client fault) + *

Thrown when a user is not authorized to access the requested resource.

+ * + * @throws {@link ResourceNotFoundException} (client fault) + *

Thrown when the requested resource (for example, a dataset or record) does not + * exist.

+ * + * @throws {@link TooManyRequestsException} (client fault) + *

Thrown when a request is throttled.

+ * + * @throws {@link CognitoIdentityServiceException} + *

Base exception class for all service exceptions from CognitoIdentity service.

+ * + * + * @public + */ +export declare class DescribeIdentityPoolCommand extends DescribeIdentityPoolCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: DescribeIdentityPoolInput; + output: IdentityPool; + }; + sdk: { + input: DescribeIdentityPoolCommandInput; + output: DescribeIdentityPoolCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/GetCredentialsForIdentityCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/GetCredentialsForIdentityCommand.d.ts new file mode 100644 index 000000000..0eecefac5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/GetCredentialsForIdentityCommand.d.ts @@ -0,0 +1,120 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CognitoIdentityClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../CognitoIdentityClient"; +import type { GetCredentialsForIdentityInput, GetCredentialsForIdentityResponse } from "../models/models_0"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetCredentialsForIdentityCommand}. + */ +export interface GetCredentialsForIdentityCommandInput extends GetCredentialsForIdentityInput { +} +/** + * @public + * + * The output of {@link GetCredentialsForIdentityCommand}. + */ +export interface GetCredentialsForIdentityCommandOutput extends GetCredentialsForIdentityResponse, __MetadataBearer { +} +declare const GetCredentialsForIdentityCommand_base: { + new (input: GetCredentialsForIdentityCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetCredentialsForIdentityCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Returns credentials for the provided identity ID. Any provided logins will be + * validated against supported login providers. If the token is for + * cognito-identity.amazonaws.com, it will be passed through to Security Token Service with the appropriate role for the token.

+ *

This is a public API. You do not need any credentials to call this API.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { CognitoIdentityClient, GetCredentialsForIdentityCommand } from "@aws-sdk/client-cognito-identity"; // ES Modules import + * // const { CognitoIdentityClient, GetCredentialsForIdentityCommand } = require("@aws-sdk/client-cognito-identity"); // CommonJS import + * // import type { CognitoIdentityClientConfig } from "@aws-sdk/client-cognito-identity"; + * const config = {}; // type is CognitoIdentityClientConfig + * const client = new CognitoIdentityClient(config); + * const input = { // GetCredentialsForIdentityInput + * IdentityId: "STRING_VALUE", // required + * Logins: { // LoginsMap + * "": "STRING_VALUE", + * }, + * CustomRoleArn: "STRING_VALUE", + * }; + * const command = new GetCredentialsForIdentityCommand(input); + * const response = await client.send(command); + * // { // GetCredentialsForIdentityResponse + * // IdentityId: "STRING_VALUE", + * // Credentials: { // Credentials + * // AccessKeyId: "STRING_VALUE", + * // SecretKey: "STRING_VALUE", + * // SessionToken: "STRING_VALUE", + * // Expiration: new Date("TIMESTAMP"), + * // }, + * // }; + * + * ``` + * + * @param GetCredentialsForIdentityCommandInput - {@link GetCredentialsForIdentityCommandInput} + * @returns {@link GetCredentialsForIdentityCommandOutput} + * @see {@link GetCredentialsForIdentityCommandInput} for command's `input` shape. + * @see {@link GetCredentialsForIdentityCommandOutput} for command's `response` shape. + * @see {@link CognitoIdentityClientResolvedConfig | config} for CognitoIdentityClient's `config` shape. + * + * @throws {@link ExternalServiceException} (client fault) + *

An exception thrown when a dependent service such as Facebook or Twitter is not + * responding

+ * + * @throws {@link InternalErrorException} (server fault) + *

Thrown when the service encounters an error during processing the request.

+ * + * @throws {@link InvalidIdentityPoolConfigurationException} (client fault) + *

If you provided authentication information in the request, the identity pool has no + * authenticated role configured, or STS returned an error response to the + * request to assume the authenticated role from the identity pool. If you provided no + * authentication information in the request, the identity pool has no unauthenticated role + * configured, or STS returned an error response to the request to assume the + * unauthenticated role from the identity pool.

+ *

Your role trust policy must grant AssumeRoleWithWebIdentity permissions to cognito-identity.amazonaws.com.

+ * + * @throws {@link InvalidParameterException} (client fault) + *

Thrown for missing or bad input parameter(s).

+ * + * @throws {@link NotAuthorizedException} (client fault) + *

Thrown when a user is not authorized to access the requested resource.

+ * + * @throws {@link ResourceConflictException} (client fault) + *

Thrown when a user tries to use a login which is already linked to another + * account.

+ * + * @throws {@link ResourceNotFoundException} (client fault) + *

Thrown when the requested resource (for example, a dataset or record) does not + * exist.

+ * + * @throws {@link TooManyRequestsException} (client fault) + *

Thrown when a request is throttled.

+ * + * @throws {@link CognitoIdentityServiceException} + *

Base exception class for all service exceptions from CognitoIdentity service.

+ * + * + * @public + */ +export declare class GetCredentialsForIdentityCommand extends GetCredentialsForIdentityCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetCredentialsForIdentityInput; + output: GetCredentialsForIdentityResponse; + }; + sdk: { + input: GetCredentialsForIdentityCommandInput; + output: GetCredentialsForIdentityCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/GetIdCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/GetIdCommand.d.ts new file mode 100644 index 000000000..df1f81cb4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/GetIdCommand.d.ts @@ -0,0 +1,107 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CognitoIdentityClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../CognitoIdentityClient"; +import type { GetIdInput, GetIdResponse } from "../models/models_0"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetIdCommand}. + */ +export interface GetIdCommandInput extends GetIdInput { +} +/** + * @public + * + * The output of {@link GetIdCommand}. + */ +export interface GetIdCommandOutput extends GetIdResponse, __MetadataBearer { +} +declare const GetIdCommand_base: { + new (input: GetIdCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetIdCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Generates (or retrieves) IdentityID. Supplying multiple logins will create an + * implicit linked account.

+ *

This is a public API. You do not need any credentials to call this API.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { CognitoIdentityClient, GetIdCommand } from "@aws-sdk/client-cognito-identity"; // ES Modules import + * // const { CognitoIdentityClient, GetIdCommand } = require("@aws-sdk/client-cognito-identity"); // CommonJS import + * // import type { CognitoIdentityClientConfig } from "@aws-sdk/client-cognito-identity"; + * const config = {}; // type is CognitoIdentityClientConfig + * const client = new CognitoIdentityClient(config); + * const input = { // GetIdInput + * AccountId: "STRING_VALUE", + * IdentityPoolId: "STRING_VALUE", // required + * Logins: { // LoginsMap + * "": "STRING_VALUE", + * }, + * }; + * const command = new GetIdCommand(input); + * const response = await client.send(command); + * // { // GetIdResponse + * // IdentityId: "STRING_VALUE", + * // }; + * + * ``` + * + * @param GetIdCommandInput - {@link GetIdCommandInput} + * @returns {@link GetIdCommandOutput} + * @see {@link GetIdCommandInput} for command's `input` shape. + * @see {@link GetIdCommandOutput} for command's `response` shape. + * @see {@link CognitoIdentityClientResolvedConfig | config} for CognitoIdentityClient's `config` shape. + * + * @throws {@link ExternalServiceException} (client fault) + *

An exception thrown when a dependent service such as Facebook or Twitter is not + * responding

+ * + * @throws {@link InternalErrorException} (server fault) + *

Thrown when the service encounters an error during processing the request.

+ * + * @throws {@link InvalidParameterException} (client fault) + *

Thrown for missing or bad input parameter(s).

+ * + * @throws {@link LimitExceededException} (client fault) + *

Thrown when the total number of user pools has exceeded a preset limit.

+ * + * @throws {@link NotAuthorizedException} (client fault) + *

Thrown when a user is not authorized to access the requested resource.

+ * + * @throws {@link ResourceConflictException} (client fault) + *

Thrown when a user tries to use a login which is already linked to another + * account.

+ * + * @throws {@link ResourceNotFoundException} (client fault) + *

Thrown when the requested resource (for example, a dataset or record) does not + * exist.

+ * + * @throws {@link TooManyRequestsException} (client fault) + *

Thrown when a request is throttled.

+ * + * @throws {@link CognitoIdentityServiceException} + *

Base exception class for all service exceptions from CognitoIdentity service.

+ * + * + * @public + */ +export declare class GetIdCommand extends GetIdCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetIdInput; + output: GetIdResponse; + }; + sdk: { + input: GetIdCommandInput; + output: GetIdCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/GetIdentityPoolRolesCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/GetIdentityPoolRolesCommand.d.ts new file mode 100644 index 000000000..1eb0456d2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/GetIdentityPoolRolesCommand.d.ts @@ -0,0 +1,115 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CognitoIdentityClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../CognitoIdentityClient"; +import type { GetIdentityPoolRolesInput, GetIdentityPoolRolesResponse } from "../models/models_0"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetIdentityPoolRolesCommand}. + */ +export interface GetIdentityPoolRolesCommandInput extends GetIdentityPoolRolesInput { +} +/** + * @public + * + * The output of {@link GetIdentityPoolRolesCommand}. + */ +export interface GetIdentityPoolRolesCommandOutput extends GetIdentityPoolRolesResponse, __MetadataBearer { +} +declare const GetIdentityPoolRolesCommand_base: { + new (input: GetIdentityPoolRolesCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetIdentityPoolRolesCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Gets the roles for an identity pool.

+ *

You must use Amazon Web Services developer credentials to call this + * operation.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { CognitoIdentityClient, GetIdentityPoolRolesCommand } from "@aws-sdk/client-cognito-identity"; // ES Modules import + * // const { CognitoIdentityClient, GetIdentityPoolRolesCommand } = require("@aws-sdk/client-cognito-identity"); // CommonJS import + * // import type { CognitoIdentityClientConfig } from "@aws-sdk/client-cognito-identity"; + * const config = {}; // type is CognitoIdentityClientConfig + * const client = new CognitoIdentityClient(config); + * const input = { // GetIdentityPoolRolesInput + * IdentityPoolId: "STRING_VALUE", // required + * }; + * const command = new GetIdentityPoolRolesCommand(input); + * const response = await client.send(command); + * // { // GetIdentityPoolRolesResponse + * // IdentityPoolId: "STRING_VALUE", + * // Roles: { // RolesMap + * // "": "STRING_VALUE", + * // }, + * // RoleMappings: { // RoleMappingMap + * // "": { // RoleMapping + * // Type: "Token" || "Rules", // required + * // AmbiguousRoleResolution: "AuthenticatedRole" || "Deny", + * // RulesConfiguration: { // RulesConfigurationType + * // Rules: [ // MappingRulesList // required + * // { // MappingRule + * // Claim: "STRING_VALUE", // required + * // MatchType: "Equals" || "Contains" || "StartsWith" || "NotEqual", // required + * // Value: "STRING_VALUE", // required + * // RoleARN: "STRING_VALUE", // required + * // }, + * // ], + * // }, + * // }, + * // }, + * // }; + * + * ``` + * + * @param GetIdentityPoolRolesCommandInput - {@link GetIdentityPoolRolesCommandInput} + * @returns {@link GetIdentityPoolRolesCommandOutput} + * @see {@link GetIdentityPoolRolesCommandInput} for command's `input` shape. + * @see {@link GetIdentityPoolRolesCommandOutput} for command's `response` shape. + * @see {@link CognitoIdentityClientResolvedConfig | config} for CognitoIdentityClient's `config` shape. + * + * @throws {@link InternalErrorException} (server fault) + *

Thrown when the service encounters an error during processing the request.

+ * + * @throws {@link InvalidParameterException} (client fault) + *

Thrown for missing or bad input parameter(s).

+ * + * @throws {@link NotAuthorizedException} (client fault) + *

Thrown when a user is not authorized to access the requested resource.

+ * + * @throws {@link ResourceConflictException} (client fault) + *

Thrown when a user tries to use a login which is already linked to another + * account.

+ * + * @throws {@link ResourceNotFoundException} (client fault) + *

Thrown when the requested resource (for example, a dataset or record) does not + * exist.

+ * + * @throws {@link TooManyRequestsException} (client fault) + *

Thrown when a request is throttled.

+ * + * @throws {@link CognitoIdentityServiceException} + *

Base exception class for all service exceptions from CognitoIdentity service.

+ * + * + * @public + */ +export declare class GetIdentityPoolRolesCommand extends GetIdentityPoolRolesCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetIdentityPoolRolesInput; + output: GetIdentityPoolRolesResponse; + }; + sdk: { + input: GetIdentityPoolRolesCommandInput; + output: GetIdentityPoolRolesCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/GetOpenIdTokenCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/GetOpenIdTokenCommand.d.ts new file mode 100644 index 000000000..c6bf66f40 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/GetOpenIdTokenCommand.d.ts @@ -0,0 +1,106 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CognitoIdentityClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../CognitoIdentityClient"; +import type { GetOpenIdTokenInput, GetOpenIdTokenResponse } from "../models/models_0"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetOpenIdTokenCommand}. + */ +export interface GetOpenIdTokenCommandInput extends GetOpenIdTokenInput { +} +/** + * @public + * + * The output of {@link GetOpenIdTokenCommand}. + */ +export interface GetOpenIdTokenCommandOutput extends GetOpenIdTokenResponse, __MetadataBearer { +} +declare const GetOpenIdTokenCommand_base: { + new (input: GetOpenIdTokenCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetOpenIdTokenCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Gets an OpenID token, using a known Cognito ID. This known Cognito ID is returned by + * GetId. You can optionally add additional logins for the identity. + * Supplying multiple logins creates an implicit link.

+ *

The OpenID token is valid for 10 minutes.

+ *

This is a public API. You do not need any credentials to call this API.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { CognitoIdentityClient, GetOpenIdTokenCommand } from "@aws-sdk/client-cognito-identity"; // ES Modules import + * // const { CognitoIdentityClient, GetOpenIdTokenCommand } = require("@aws-sdk/client-cognito-identity"); // CommonJS import + * // import type { CognitoIdentityClientConfig } from "@aws-sdk/client-cognito-identity"; + * const config = {}; // type is CognitoIdentityClientConfig + * const client = new CognitoIdentityClient(config); + * const input = { // GetOpenIdTokenInput + * IdentityId: "STRING_VALUE", // required + * Logins: { // LoginsMap + * "": "STRING_VALUE", + * }, + * }; + * const command = new GetOpenIdTokenCommand(input); + * const response = await client.send(command); + * // { // GetOpenIdTokenResponse + * // IdentityId: "STRING_VALUE", + * // Token: "STRING_VALUE", + * // }; + * + * ``` + * + * @param GetOpenIdTokenCommandInput - {@link GetOpenIdTokenCommandInput} + * @returns {@link GetOpenIdTokenCommandOutput} + * @see {@link GetOpenIdTokenCommandInput} for command's `input` shape. + * @see {@link GetOpenIdTokenCommandOutput} for command's `response` shape. + * @see {@link CognitoIdentityClientResolvedConfig | config} for CognitoIdentityClient's `config` shape. + * + * @throws {@link ExternalServiceException} (client fault) + *

An exception thrown when a dependent service such as Facebook or Twitter is not + * responding

+ * + * @throws {@link InternalErrorException} (server fault) + *

Thrown when the service encounters an error during processing the request.

+ * + * @throws {@link InvalidParameterException} (client fault) + *

Thrown for missing or bad input parameter(s).

+ * + * @throws {@link NotAuthorizedException} (client fault) + *

Thrown when a user is not authorized to access the requested resource.

+ * + * @throws {@link ResourceConflictException} (client fault) + *

Thrown when a user tries to use a login which is already linked to another + * account.

+ * + * @throws {@link ResourceNotFoundException} (client fault) + *

Thrown when the requested resource (for example, a dataset or record) does not + * exist.

+ * + * @throws {@link TooManyRequestsException} (client fault) + *

Thrown when a request is throttled.

+ * + * @throws {@link CognitoIdentityServiceException} + *

Base exception class for all service exceptions from CognitoIdentity service.

+ * + * + * @public + */ +export declare class GetOpenIdTokenCommand extends GetOpenIdTokenCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetOpenIdTokenInput; + output: GetOpenIdTokenResponse; + }; + sdk: { + input: GetOpenIdTokenCommandInput; + output: GetOpenIdTokenCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/GetOpenIdTokenForDeveloperIdentityCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/GetOpenIdTokenForDeveloperIdentityCommand.d.ts new file mode 100644 index 000000000..5c7dee66b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/GetOpenIdTokenForDeveloperIdentityCommand.d.ts @@ -0,0 +1,120 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CognitoIdentityClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../CognitoIdentityClient"; +import type { GetOpenIdTokenForDeveloperIdentityInput, GetOpenIdTokenForDeveloperIdentityResponse } from "../models/models_0"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetOpenIdTokenForDeveloperIdentityCommand}. + */ +export interface GetOpenIdTokenForDeveloperIdentityCommandInput extends GetOpenIdTokenForDeveloperIdentityInput { +} +/** + * @public + * + * The output of {@link GetOpenIdTokenForDeveloperIdentityCommand}. + */ +export interface GetOpenIdTokenForDeveloperIdentityCommandOutput extends GetOpenIdTokenForDeveloperIdentityResponse, __MetadataBearer { +} +declare const GetOpenIdTokenForDeveloperIdentityCommand_base: { + new (input: GetOpenIdTokenForDeveloperIdentityCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetOpenIdTokenForDeveloperIdentityCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Registers (or retrieves) a Cognito IdentityId and an OpenID Connect + * token for a user authenticated by your backend authentication process. Supplying multiple + * logins will create an implicit linked account. You can only specify one developer provider + * as part of the Logins map, which is linked to the identity pool. The developer + * provider is the "domain" by which Cognito will refer to your users.

+ *

You can use GetOpenIdTokenForDeveloperIdentity to create a new identity + * and to link new logins (that is, user credentials issued by a public provider or developer + * provider) to an existing identity. When you want to create a new identity, the + * IdentityId should be null. When you want to associate a new login with an + * existing authenticated/unauthenticated identity, you can do so by providing the existing + * IdentityId. This API will create the identity in the specified + * IdentityPoolId.

+ *

You must use Amazon Web Services developer credentials to call this + * operation.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { CognitoIdentityClient, GetOpenIdTokenForDeveloperIdentityCommand } from "@aws-sdk/client-cognito-identity"; // ES Modules import + * // const { CognitoIdentityClient, GetOpenIdTokenForDeveloperIdentityCommand } = require("@aws-sdk/client-cognito-identity"); // CommonJS import + * // import type { CognitoIdentityClientConfig } from "@aws-sdk/client-cognito-identity"; + * const config = {}; // type is CognitoIdentityClientConfig + * const client = new CognitoIdentityClient(config); + * const input = { // GetOpenIdTokenForDeveloperIdentityInput + * IdentityPoolId: "STRING_VALUE", // required + * IdentityId: "STRING_VALUE", + * Logins: { // LoginsMap // required + * "": "STRING_VALUE", + * }, + * PrincipalTags: { // PrincipalTags + * "": "STRING_VALUE", + * }, + * TokenDuration: Number("long"), + * }; + * const command = new GetOpenIdTokenForDeveloperIdentityCommand(input); + * const response = await client.send(command); + * // { // GetOpenIdTokenForDeveloperIdentityResponse + * // IdentityId: "STRING_VALUE", + * // Token: "STRING_VALUE", + * // }; + * + * ``` + * + * @param GetOpenIdTokenForDeveloperIdentityCommandInput - {@link GetOpenIdTokenForDeveloperIdentityCommandInput} + * @returns {@link GetOpenIdTokenForDeveloperIdentityCommandOutput} + * @see {@link GetOpenIdTokenForDeveloperIdentityCommandInput} for command's `input` shape. + * @see {@link GetOpenIdTokenForDeveloperIdentityCommandOutput} for command's `response` shape. + * @see {@link CognitoIdentityClientResolvedConfig | config} for CognitoIdentityClient's `config` shape. + * + * @throws {@link DeveloperUserAlreadyRegisteredException} (client fault) + *

The provided developer user identifier is already registered with Cognito under a + * different identity ID.

+ * + * @throws {@link InternalErrorException} (server fault) + *

Thrown when the service encounters an error during processing the request.

+ * + * @throws {@link InvalidParameterException} (client fault) + *

Thrown for missing or bad input parameter(s).

+ * + * @throws {@link NotAuthorizedException} (client fault) + *

Thrown when a user is not authorized to access the requested resource.

+ * + * @throws {@link ResourceConflictException} (client fault) + *

Thrown when a user tries to use a login which is already linked to another + * account.

+ * + * @throws {@link ResourceNotFoundException} (client fault) + *

Thrown when the requested resource (for example, a dataset or record) does not + * exist.

+ * + * @throws {@link TooManyRequestsException} (client fault) + *

Thrown when a request is throttled.

+ * + * @throws {@link CognitoIdentityServiceException} + *

Base exception class for all service exceptions from CognitoIdentity service.

+ * + * + * @public + */ +export declare class GetOpenIdTokenForDeveloperIdentityCommand extends GetOpenIdTokenForDeveloperIdentityCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetOpenIdTokenForDeveloperIdentityInput; + output: GetOpenIdTokenForDeveloperIdentityResponse; + }; + sdk: { + input: GetOpenIdTokenForDeveloperIdentityCommandInput; + output: GetOpenIdTokenForDeveloperIdentityCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/GetPrincipalTagAttributeMapCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/GetPrincipalTagAttributeMapCommand.d.ts new file mode 100644 index 000000000..e5e44e2ea --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/GetPrincipalTagAttributeMapCommand.d.ts @@ -0,0 +1,97 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CognitoIdentityClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../CognitoIdentityClient"; +import type { GetPrincipalTagAttributeMapInput, GetPrincipalTagAttributeMapResponse } from "../models/models_0"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetPrincipalTagAttributeMapCommand}. + */ +export interface GetPrincipalTagAttributeMapCommandInput extends GetPrincipalTagAttributeMapInput { +} +/** + * @public + * + * The output of {@link GetPrincipalTagAttributeMapCommand}. + */ +export interface GetPrincipalTagAttributeMapCommandOutput extends GetPrincipalTagAttributeMapResponse, __MetadataBearer { +} +declare const GetPrincipalTagAttributeMapCommand_base: { + new (input: GetPrincipalTagAttributeMapCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetPrincipalTagAttributeMapCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Use GetPrincipalTagAttributeMap to list all mappings between + * PrincipalTags and user attributes.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { CognitoIdentityClient, GetPrincipalTagAttributeMapCommand } from "@aws-sdk/client-cognito-identity"; // ES Modules import + * // const { CognitoIdentityClient, GetPrincipalTagAttributeMapCommand } = require("@aws-sdk/client-cognito-identity"); // CommonJS import + * // import type { CognitoIdentityClientConfig } from "@aws-sdk/client-cognito-identity"; + * const config = {}; // type is CognitoIdentityClientConfig + * const client = new CognitoIdentityClient(config); + * const input = { // GetPrincipalTagAttributeMapInput + * IdentityPoolId: "STRING_VALUE", // required + * IdentityProviderName: "STRING_VALUE", // required + * }; + * const command = new GetPrincipalTagAttributeMapCommand(input); + * const response = await client.send(command); + * // { // GetPrincipalTagAttributeMapResponse + * // IdentityPoolId: "STRING_VALUE", + * // IdentityProviderName: "STRING_VALUE", + * // UseDefaults: true || false, + * // PrincipalTags: { // PrincipalTags + * // "": "STRING_VALUE", + * // }, + * // }; + * + * ``` + * + * @param GetPrincipalTagAttributeMapCommandInput - {@link GetPrincipalTagAttributeMapCommandInput} + * @returns {@link GetPrincipalTagAttributeMapCommandOutput} + * @see {@link GetPrincipalTagAttributeMapCommandInput} for command's `input` shape. + * @see {@link GetPrincipalTagAttributeMapCommandOutput} for command's `response` shape. + * @see {@link CognitoIdentityClientResolvedConfig | config} for CognitoIdentityClient's `config` shape. + * + * @throws {@link InternalErrorException} (server fault) + *

Thrown when the service encounters an error during processing the request.

+ * + * @throws {@link InvalidParameterException} (client fault) + *

Thrown for missing or bad input parameter(s).

+ * + * @throws {@link NotAuthorizedException} (client fault) + *

Thrown when a user is not authorized to access the requested resource.

+ * + * @throws {@link ResourceNotFoundException} (client fault) + *

Thrown when the requested resource (for example, a dataset or record) does not + * exist.

+ * + * @throws {@link TooManyRequestsException} (client fault) + *

Thrown when a request is throttled.

+ * + * @throws {@link CognitoIdentityServiceException} + *

Base exception class for all service exceptions from CognitoIdentity service.

+ * + * + * @public + */ +export declare class GetPrincipalTagAttributeMapCommand extends GetPrincipalTagAttributeMapCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetPrincipalTagAttributeMapInput; + output: GetPrincipalTagAttributeMapResponse; + }; + sdk: { + input: GetPrincipalTagAttributeMapCommandInput; + output: GetPrincipalTagAttributeMapCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/ListIdentitiesCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/ListIdentitiesCommand.d.ts new file mode 100644 index 000000000..aa0cee4f7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/ListIdentitiesCommand.d.ts @@ -0,0 +1,106 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CognitoIdentityClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../CognitoIdentityClient"; +import type { ListIdentitiesInput, ListIdentitiesResponse } from "../models/models_0"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link ListIdentitiesCommand}. + */ +export interface ListIdentitiesCommandInput extends ListIdentitiesInput { +} +/** + * @public + * + * The output of {@link ListIdentitiesCommand}. + */ +export interface ListIdentitiesCommandOutput extends ListIdentitiesResponse, __MetadataBearer { +} +declare const ListIdentitiesCommand_base: { + new (input: ListIdentitiesCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: ListIdentitiesCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Lists the identities in an identity pool.

+ *

You must use Amazon Web Services developer credentials to call this + * operation.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { CognitoIdentityClient, ListIdentitiesCommand } from "@aws-sdk/client-cognito-identity"; // ES Modules import + * // const { CognitoIdentityClient, ListIdentitiesCommand } = require("@aws-sdk/client-cognito-identity"); // CommonJS import + * // import type { CognitoIdentityClientConfig } from "@aws-sdk/client-cognito-identity"; + * const config = {}; // type is CognitoIdentityClientConfig + * const client = new CognitoIdentityClient(config); + * const input = { // ListIdentitiesInput + * IdentityPoolId: "STRING_VALUE", // required + * MaxResults: Number("int"), // required + * NextToken: "STRING_VALUE", + * HideDisabled: true || false, + * }; + * const command = new ListIdentitiesCommand(input); + * const response = await client.send(command); + * // { // ListIdentitiesResponse + * // IdentityPoolId: "STRING_VALUE", + * // Identities: [ // IdentitiesList + * // { // IdentityDescription + * // IdentityId: "STRING_VALUE", + * // Logins: [ // LoginsList + * // "STRING_VALUE", + * // ], + * // CreationDate: new Date("TIMESTAMP"), + * // LastModifiedDate: new Date("TIMESTAMP"), + * // }, + * // ], + * // NextToken: "STRING_VALUE", + * // }; + * + * ``` + * + * @param ListIdentitiesCommandInput - {@link ListIdentitiesCommandInput} + * @returns {@link ListIdentitiesCommandOutput} + * @see {@link ListIdentitiesCommandInput} for command's `input` shape. + * @see {@link ListIdentitiesCommandOutput} for command's `response` shape. + * @see {@link CognitoIdentityClientResolvedConfig | config} for CognitoIdentityClient's `config` shape. + * + * @throws {@link InternalErrorException} (server fault) + *

Thrown when the service encounters an error during processing the request.

+ * + * @throws {@link InvalidParameterException} (client fault) + *

Thrown for missing or bad input parameter(s).

+ * + * @throws {@link NotAuthorizedException} (client fault) + *

Thrown when a user is not authorized to access the requested resource.

+ * + * @throws {@link ResourceNotFoundException} (client fault) + *

Thrown when the requested resource (for example, a dataset or record) does not + * exist.

+ * + * @throws {@link TooManyRequestsException} (client fault) + *

Thrown when a request is throttled.

+ * + * @throws {@link CognitoIdentityServiceException} + *

Base exception class for all service exceptions from CognitoIdentity service.

+ * + * + * @public + */ +export declare class ListIdentitiesCommand extends ListIdentitiesCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: ListIdentitiesInput; + output: ListIdentitiesResponse; + }; + sdk: { + input: ListIdentitiesCommandInput; + output: ListIdentitiesCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/ListIdentityPoolsCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/ListIdentityPoolsCommand.d.ts new file mode 100644 index 000000000..774f8adde --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/ListIdentityPoolsCommand.d.ts @@ -0,0 +1,99 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CognitoIdentityClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../CognitoIdentityClient"; +import type { ListIdentityPoolsInput, ListIdentityPoolsResponse } from "../models/models_0"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link ListIdentityPoolsCommand}. + */ +export interface ListIdentityPoolsCommandInput extends ListIdentityPoolsInput { +} +/** + * @public + * + * The output of {@link ListIdentityPoolsCommand}. + */ +export interface ListIdentityPoolsCommandOutput extends ListIdentityPoolsResponse, __MetadataBearer { +} +declare const ListIdentityPoolsCommand_base: { + new (input: ListIdentityPoolsCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: ListIdentityPoolsCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Lists all of the Cognito identity pools registered for your account.

+ *

You must use Amazon Web Services developer credentials to call this + * operation.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { CognitoIdentityClient, ListIdentityPoolsCommand } from "@aws-sdk/client-cognito-identity"; // ES Modules import + * // const { CognitoIdentityClient, ListIdentityPoolsCommand } = require("@aws-sdk/client-cognito-identity"); // CommonJS import + * // import type { CognitoIdentityClientConfig } from "@aws-sdk/client-cognito-identity"; + * const config = {}; // type is CognitoIdentityClientConfig + * const client = new CognitoIdentityClient(config); + * const input = { // ListIdentityPoolsInput + * MaxResults: Number("int"), // required + * NextToken: "STRING_VALUE", + * }; + * const command = new ListIdentityPoolsCommand(input); + * const response = await client.send(command); + * // { // ListIdentityPoolsResponse + * // IdentityPools: [ // IdentityPoolsList + * // { // IdentityPoolShortDescription + * // IdentityPoolId: "STRING_VALUE", + * // IdentityPoolName: "STRING_VALUE", + * // }, + * // ], + * // NextToken: "STRING_VALUE", + * // }; + * + * ``` + * + * @param ListIdentityPoolsCommandInput - {@link ListIdentityPoolsCommandInput} + * @returns {@link ListIdentityPoolsCommandOutput} + * @see {@link ListIdentityPoolsCommandInput} for command's `input` shape. + * @see {@link ListIdentityPoolsCommandOutput} for command's `response` shape. + * @see {@link CognitoIdentityClientResolvedConfig | config} for CognitoIdentityClient's `config` shape. + * + * @throws {@link InternalErrorException} (server fault) + *

Thrown when the service encounters an error during processing the request.

+ * + * @throws {@link InvalidParameterException} (client fault) + *

Thrown for missing or bad input parameter(s).

+ * + * @throws {@link NotAuthorizedException} (client fault) + *

Thrown when a user is not authorized to access the requested resource.

+ * + * @throws {@link ResourceNotFoundException} (client fault) + *

Thrown when the requested resource (for example, a dataset or record) does not + * exist.

+ * + * @throws {@link TooManyRequestsException} (client fault) + *

Thrown when a request is throttled.

+ * + * @throws {@link CognitoIdentityServiceException} + *

Base exception class for all service exceptions from CognitoIdentity service.

+ * + * + * @public + */ +export declare class ListIdentityPoolsCommand extends ListIdentityPoolsCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: ListIdentityPoolsInput; + output: ListIdentityPoolsResponse; + }; + sdk: { + input: ListIdentityPoolsCommandInput; + output: ListIdentityPoolsCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/ListTagsForResourceCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/ListTagsForResourceCommand.d.ts new file mode 100644 index 000000000..41bfe704c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/ListTagsForResourceCommand.d.ts @@ -0,0 +1,95 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CognitoIdentityClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../CognitoIdentityClient"; +import type { ListTagsForResourceInput, ListTagsForResourceResponse } from "../models/models_0"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link ListTagsForResourceCommand}. + */ +export interface ListTagsForResourceCommandInput extends ListTagsForResourceInput { +} +/** + * @public + * + * The output of {@link ListTagsForResourceCommand}. + */ +export interface ListTagsForResourceCommandOutput extends ListTagsForResourceResponse, __MetadataBearer { +} +declare const ListTagsForResourceCommand_base: { + new (input: ListTagsForResourceCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: ListTagsForResourceCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Lists the tags that are assigned to an Amazon Cognito identity pool.

+ *

A tag is a label that you can apply to identity pools to categorize and manage them in + * different ways, such as by purpose, owner, environment, or other criteria.

+ *

You can use this action up to 10 times per second, per account.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { CognitoIdentityClient, ListTagsForResourceCommand } from "@aws-sdk/client-cognito-identity"; // ES Modules import + * // const { CognitoIdentityClient, ListTagsForResourceCommand } = require("@aws-sdk/client-cognito-identity"); // CommonJS import + * // import type { CognitoIdentityClientConfig } from "@aws-sdk/client-cognito-identity"; + * const config = {}; // type is CognitoIdentityClientConfig + * const client = new CognitoIdentityClient(config); + * const input = { // ListTagsForResourceInput + * ResourceArn: "STRING_VALUE", // required + * }; + * const command = new ListTagsForResourceCommand(input); + * const response = await client.send(command); + * // { // ListTagsForResourceResponse + * // Tags: { // IdentityPoolTagsType + * // "": "STRING_VALUE", + * // }, + * // }; + * + * ``` + * + * @param ListTagsForResourceCommandInput - {@link ListTagsForResourceCommandInput} + * @returns {@link ListTagsForResourceCommandOutput} + * @see {@link ListTagsForResourceCommandInput} for command's `input` shape. + * @see {@link ListTagsForResourceCommandOutput} for command's `response` shape. + * @see {@link CognitoIdentityClientResolvedConfig | config} for CognitoIdentityClient's `config` shape. + * + * @throws {@link InternalErrorException} (server fault) + *

Thrown when the service encounters an error during processing the request.

+ * + * @throws {@link InvalidParameterException} (client fault) + *

Thrown for missing or bad input parameter(s).

+ * + * @throws {@link NotAuthorizedException} (client fault) + *

Thrown when a user is not authorized to access the requested resource.

+ * + * @throws {@link ResourceNotFoundException} (client fault) + *

Thrown when the requested resource (for example, a dataset or record) does not + * exist.

+ * + * @throws {@link TooManyRequestsException} (client fault) + *

Thrown when a request is throttled.

+ * + * @throws {@link CognitoIdentityServiceException} + *

Base exception class for all service exceptions from CognitoIdentity service.

+ * + * + * @public + */ +export declare class ListTagsForResourceCommand extends ListTagsForResourceCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: ListTagsForResourceInput; + output: ListTagsForResourceResponse; + }; + sdk: { + input: ListTagsForResourceCommandInput; + output: ListTagsForResourceCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/LookupDeveloperIdentityCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/LookupDeveloperIdentityCommand.d.ts new file mode 100644 index 000000000..1ae125911 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/LookupDeveloperIdentityCommand.d.ts @@ -0,0 +1,119 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CognitoIdentityClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../CognitoIdentityClient"; +import type { LookupDeveloperIdentityInput, LookupDeveloperIdentityResponse } from "../models/models_0"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link LookupDeveloperIdentityCommand}. + */ +export interface LookupDeveloperIdentityCommandInput extends LookupDeveloperIdentityInput { +} +/** + * @public + * + * The output of {@link LookupDeveloperIdentityCommand}. + */ +export interface LookupDeveloperIdentityCommandOutput extends LookupDeveloperIdentityResponse, __MetadataBearer { +} +declare const LookupDeveloperIdentityCommand_base: { + new (input: LookupDeveloperIdentityCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: LookupDeveloperIdentityCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Retrieves the IdentityID associated with a + * DeveloperUserIdentifier or the list of DeveloperUserIdentifier + * values associated with an IdentityId for an existing identity. Either + * IdentityID or DeveloperUserIdentifier must not be null. If you + * supply only one of these values, the other value will be searched in the database and + * returned as a part of the response. If you supply both, + * DeveloperUserIdentifier will be matched against IdentityID. If + * the values are verified against the database, the response returns both values and is the + * same as the request. Otherwise, a ResourceConflictException is + * thrown.

+ *

+ * LookupDeveloperIdentity is intended for low-throughput control plane + * operations: for example, to enable customer service to locate an identity ID by username. + * If you are using it for higher-volume operations such as user authentication, your requests + * are likely to be throttled. GetOpenIdTokenForDeveloperIdentity is a + * better option for higher-volume operations for user authentication.

+ *

You must use Amazon Web Services developer credentials to call this + * operation.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { CognitoIdentityClient, LookupDeveloperIdentityCommand } from "@aws-sdk/client-cognito-identity"; // ES Modules import + * // const { CognitoIdentityClient, LookupDeveloperIdentityCommand } = require("@aws-sdk/client-cognito-identity"); // CommonJS import + * // import type { CognitoIdentityClientConfig } from "@aws-sdk/client-cognito-identity"; + * const config = {}; // type is CognitoIdentityClientConfig + * const client = new CognitoIdentityClient(config); + * const input = { // LookupDeveloperIdentityInput + * IdentityPoolId: "STRING_VALUE", // required + * IdentityId: "STRING_VALUE", + * DeveloperUserIdentifier: "STRING_VALUE", + * MaxResults: Number("int"), + * NextToken: "STRING_VALUE", + * }; + * const command = new LookupDeveloperIdentityCommand(input); + * const response = await client.send(command); + * // { // LookupDeveloperIdentityResponse + * // IdentityId: "STRING_VALUE", + * // DeveloperUserIdentifierList: [ // DeveloperUserIdentifierList + * // "STRING_VALUE", + * // ], + * // NextToken: "STRING_VALUE", + * // }; + * + * ``` + * + * @param LookupDeveloperIdentityCommandInput - {@link LookupDeveloperIdentityCommandInput} + * @returns {@link LookupDeveloperIdentityCommandOutput} + * @see {@link LookupDeveloperIdentityCommandInput} for command's `input` shape. + * @see {@link LookupDeveloperIdentityCommandOutput} for command's `response` shape. + * @see {@link CognitoIdentityClientResolvedConfig | config} for CognitoIdentityClient's `config` shape. + * + * @throws {@link InternalErrorException} (server fault) + *

Thrown when the service encounters an error during processing the request.

+ * + * @throws {@link InvalidParameterException} (client fault) + *

Thrown for missing or bad input parameter(s).

+ * + * @throws {@link NotAuthorizedException} (client fault) + *

Thrown when a user is not authorized to access the requested resource.

+ * + * @throws {@link ResourceConflictException} (client fault) + *

Thrown when a user tries to use a login which is already linked to another + * account.

+ * + * @throws {@link ResourceNotFoundException} (client fault) + *

Thrown when the requested resource (for example, a dataset or record) does not + * exist.

+ * + * @throws {@link TooManyRequestsException} (client fault) + *

Thrown when a request is throttled.

+ * + * @throws {@link CognitoIdentityServiceException} + *

Base exception class for all service exceptions from CognitoIdentity service.

+ * + * + * @public + */ +export declare class LookupDeveloperIdentityCommand extends LookupDeveloperIdentityCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: LookupDeveloperIdentityInput; + output: LookupDeveloperIdentityResponse; + }; + sdk: { + input: LookupDeveloperIdentityCommandInput; + output: LookupDeveloperIdentityCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/MergeDeveloperIdentitiesCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/MergeDeveloperIdentitiesCommand.d.ts new file mode 100644 index 000000000..a91b93bd1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/MergeDeveloperIdentitiesCommand.d.ts @@ -0,0 +1,110 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CognitoIdentityClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../CognitoIdentityClient"; +import type { MergeDeveloperIdentitiesInput, MergeDeveloperIdentitiesResponse } from "../models/models_0"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link MergeDeveloperIdentitiesCommand}. + */ +export interface MergeDeveloperIdentitiesCommandInput extends MergeDeveloperIdentitiesInput { +} +/** + * @public + * + * The output of {@link MergeDeveloperIdentitiesCommand}. + */ +export interface MergeDeveloperIdentitiesCommandOutput extends MergeDeveloperIdentitiesResponse, __MetadataBearer { +} +declare const MergeDeveloperIdentitiesCommand_base: { + new (input: MergeDeveloperIdentitiesCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: MergeDeveloperIdentitiesCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Merges two users having different IdentityIds, existing in the same + * identity pool, and identified by the same developer provider. You can use this action to + * request that discrete users be merged and identified as a single user in the Cognito + * environment. Cognito associates the given source user (SourceUserIdentifier) + * with the IdentityId of the DestinationUserIdentifier. Only + * developer-authenticated users can be merged. If the users to be merged are associated with + * the same public provider, but as two different users, an exception will be + * thrown.

+ *

The number of linked logins is limited to 20. So, the number of linked logins for the + * source user, SourceUserIdentifier, and the destination user, + * DestinationUserIdentifier, together should not be larger than 20. + * Otherwise, an exception will be thrown.

+ *

You must use Amazon Web Services developer credentials to call this + * operation.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { CognitoIdentityClient, MergeDeveloperIdentitiesCommand } from "@aws-sdk/client-cognito-identity"; // ES Modules import + * // const { CognitoIdentityClient, MergeDeveloperIdentitiesCommand } = require("@aws-sdk/client-cognito-identity"); // CommonJS import + * // import type { CognitoIdentityClientConfig } from "@aws-sdk/client-cognito-identity"; + * const config = {}; // type is CognitoIdentityClientConfig + * const client = new CognitoIdentityClient(config); + * const input = { // MergeDeveloperIdentitiesInput + * SourceUserIdentifier: "STRING_VALUE", // required + * DestinationUserIdentifier: "STRING_VALUE", // required + * DeveloperProviderName: "STRING_VALUE", // required + * IdentityPoolId: "STRING_VALUE", // required + * }; + * const command = new MergeDeveloperIdentitiesCommand(input); + * const response = await client.send(command); + * // { // MergeDeveloperIdentitiesResponse + * // IdentityId: "STRING_VALUE", + * // }; + * + * ``` + * + * @param MergeDeveloperIdentitiesCommandInput - {@link MergeDeveloperIdentitiesCommandInput} + * @returns {@link MergeDeveloperIdentitiesCommandOutput} + * @see {@link MergeDeveloperIdentitiesCommandInput} for command's `input` shape. + * @see {@link MergeDeveloperIdentitiesCommandOutput} for command's `response` shape. + * @see {@link CognitoIdentityClientResolvedConfig | config} for CognitoIdentityClient's `config` shape. + * + * @throws {@link InternalErrorException} (server fault) + *

Thrown when the service encounters an error during processing the request.

+ * + * @throws {@link InvalidParameterException} (client fault) + *

Thrown for missing or bad input parameter(s).

+ * + * @throws {@link NotAuthorizedException} (client fault) + *

Thrown when a user is not authorized to access the requested resource.

+ * + * @throws {@link ResourceConflictException} (client fault) + *

Thrown when a user tries to use a login which is already linked to another + * account.

+ * + * @throws {@link ResourceNotFoundException} (client fault) + *

Thrown when the requested resource (for example, a dataset or record) does not + * exist.

+ * + * @throws {@link TooManyRequestsException} (client fault) + *

Thrown when a request is throttled.

+ * + * @throws {@link CognitoIdentityServiceException} + *

Base exception class for all service exceptions from CognitoIdentity service.

+ * + * + * @public + */ +export declare class MergeDeveloperIdentitiesCommand extends MergeDeveloperIdentitiesCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: MergeDeveloperIdentitiesInput; + output: MergeDeveloperIdentitiesResponse; + }; + sdk: { + input: MergeDeveloperIdentitiesCommandInput; + output: MergeDeveloperIdentitiesCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/SetIdentityPoolRolesCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/SetIdentityPoolRolesCommand.d.ts new file mode 100644 index 000000000..61bf18c02 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/SetIdentityPoolRolesCommand.d.ts @@ -0,0 +1,116 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CognitoIdentityClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../CognitoIdentityClient"; +import type { SetIdentityPoolRolesInput } from "../models/models_0"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link SetIdentityPoolRolesCommand}. + */ +export interface SetIdentityPoolRolesCommandInput extends SetIdentityPoolRolesInput { +} +/** + * @public + * + * The output of {@link SetIdentityPoolRolesCommand}. + */ +export interface SetIdentityPoolRolesCommandOutput extends __MetadataBearer { +} +declare const SetIdentityPoolRolesCommand_base: { + new (input: SetIdentityPoolRolesCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: SetIdentityPoolRolesCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Sets the roles for an identity pool. These roles are used when making calls to GetCredentialsForIdentity action.

+ *

You must use Amazon Web Services developer credentials to call this + * operation.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { CognitoIdentityClient, SetIdentityPoolRolesCommand } from "@aws-sdk/client-cognito-identity"; // ES Modules import + * // const { CognitoIdentityClient, SetIdentityPoolRolesCommand } = require("@aws-sdk/client-cognito-identity"); // CommonJS import + * // import type { CognitoIdentityClientConfig } from "@aws-sdk/client-cognito-identity"; + * const config = {}; // type is CognitoIdentityClientConfig + * const client = new CognitoIdentityClient(config); + * const input = { // SetIdentityPoolRolesInput + * IdentityPoolId: "STRING_VALUE", // required + * Roles: { // RolesMap // required + * "": "STRING_VALUE", + * }, + * RoleMappings: { // RoleMappingMap + * "": { // RoleMapping + * Type: "Token" || "Rules", // required + * AmbiguousRoleResolution: "AuthenticatedRole" || "Deny", + * RulesConfiguration: { // RulesConfigurationType + * Rules: [ // MappingRulesList // required + * { // MappingRule + * Claim: "STRING_VALUE", // required + * MatchType: "Equals" || "Contains" || "StartsWith" || "NotEqual", // required + * Value: "STRING_VALUE", // required + * RoleARN: "STRING_VALUE", // required + * }, + * ], + * }, + * }, + * }, + * }; + * const command = new SetIdentityPoolRolesCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param SetIdentityPoolRolesCommandInput - {@link SetIdentityPoolRolesCommandInput} + * @returns {@link SetIdentityPoolRolesCommandOutput} + * @see {@link SetIdentityPoolRolesCommandInput} for command's `input` shape. + * @see {@link SetIdentityPoolRolesCommandOutput} for command's `response` shape. + * @see {@link CognitoIdentityClientResolvedConfig | config} for CognitoIdentityClient's `config` shape. + * + * @throws {@link ConcurrentModificationException} (client fault) + *

Thrown if there are parallel requests to modify a resource.

+ * + * @throws {@link InternalErrorException} (server fault) + *

Thrown when the service encounters an error during processing the request.

+ * + * @throws {@link InvalidParameterException} (client fault) + *

Thrown for missing or bad input parameter(s).

+ * + * @throws {@link NotAuthorizedException} (client fault) + *

Thrown when a user is not authorized to access the requested resource.

+ * + * @throws {@link ResourceConflictException} (client fault) + *

Thrown when a user tries to use a login which is already linked to another + * account.

+ * + * @throws {@link ResourceNotFoundException} (client fault) + *

Thrown when the requested resource (for example, a dataset or record) does not + * exist.

+ * + * @throws {@link TooManyRequestsException} (client fault) + *

Thrown when a request is throttled.

+ * + * @throws {@link CognitoIdentityServiceException} + *

Base exception class for all service exceptions from CognitoIdentity service.

+ * + * + * @public + */ +export declare class SetIdentityPoolRolesCommand extends SetIdentityPoolRolesCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: SetIdentityPoolRolesInput; + output: {}; + }; + sdk: { + input: SetIdentityPoolRolesCommandInput; + output: SetIdentityPoolRolesCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/SetPrincipalTagAttributeMapCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/SetPrincipalTagAttributeMapCommand.d.ts new file mode 100644 index 000000000..06579ae7f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/SetPrincipalTagAttributeMapCommand.d.ts @@ -0,0 +1,101 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CognitoIdentityClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../CognitoIdentityClient"; +import type { SetPrincipalTagAttributeMapInput, SetPrincipalTagAttributeMapResponse } from "../models/models_0"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link SetPrincipalTagAttributeMapCommand}. + */ +export interface SetPrincipalTagAttributeMapCommandInput extends SetPrincipalTagAttributeMapInput { +} +/** + * @public + * + * The output of {@link SetPrincipalTagAttributeMapCommand}. + */ +export interface SetPrincipalTagAttributeMapCommandOutput extends SetPrincipalTagAttributeMapResponse, __MetadataBearer { +} +declare const SetPrincipalTagAttributeMapCommand_base: { + new (input: SetPrincipalTagAttributeMapCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: SetPrincipalTagAttributeMapCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

You can use this operation to use default (username and clientID) attribute or custom + * attribute mappings.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { CognitoIdentityClient, SetPrincipalTagAttributeMapCommand } from "@aws-sdk/client-cognito-identity"; // ES Modules import + * // const { CognitoIdentityClient, SetPrincipalTagAttributeMapCommand } = require("@aws-sdk/client-cognito-identity"); // CommonJS import + * // import type { CognitoIdentityClientConfig } from "@aws-sdk/client-cognito-identity"; + * const config = {}; // type is CognitoIdentityClientConfig + * const client = new CognitoIdentityClient(config); + * const input = { // SetPrincipalTagAttributeMapInput + * IdentityPoolId: "STRING_VALUE", // required + * IdentityProviderName: "STRING_VALUE", // required + * UseDefaults: true || false, + * PrincipalTags: { // PrincipalTags + * "": "STRING_VALUE", + * }, + * }; + * const command = new SetPrincipalTagAttributeMapCommand(input); + * const response = await client.send(command); + * // { // SetPrincipalTagAttributeMapResponse + * // IdentityPoolId: "STRING_VALUE", + * // IdentityProviderName: "STRING_VALUE", + * // UseDefaults: true || false, + * // PrincipalTags: { // PrincipalTags + * // "": "STRING_VALUE", + * // }, + * // }; + * + * ``` + * + * @param SetPrincipalTagAttributeMapCommandInput - {@link SetPrincipalTagAttributeMapCommandInput} + * @returns {@link SetPrincipalTagAttributeMapCommandOutput} + * @see {@link SetPrincipalTagAttributeMapCommandInput} for command's `input` shape. + * @see {@link SetPrincipalTagAttributeMapCommandOutput} for command's `response` shape. + * @see {@link CognitoIdentityClientResolvedConfig | config} for CognitoIdentityClient's `config` shape. + * + * @throws {@link InternalErrorException} (server fault) + *

Thrown when the service encounters an error during processing the request.

+ * + * @throws {@link InvalidParameterException} (client fault) + *

Thrown for missing or bad input parameter(s).

+ * + * @throws {@link NotAuthorizedException} (client fault) + *

Thrown when a user is not authorized to access the requested resource.

+ * + * @throws {@link ResourceNotFoundException} (client fault) + *

Thrown when the requested resource (for example, a dataset or record) does not + * exist.

+ * + * @throws {@link TooManyRequestsException} (client fault) + *

Thrown when a request is throttled.

+ * + * @throws {@link CognitoIdentityServiceException} + *

Base exception class for all service exceptions from CognitoIdentity service.

+ * + * + * @public + */ +export declare class SetPrincipalTagAttributeMapCommand extends SetPrincipalTagAttributeMapCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: SetPrincipalTagAttributeMapInput; + output: SetPrincipalTagAttributeMapResponse; + }; + sdk: { + input: SetPrincipalTagAttributeMapCommandInput; + output: SetPrincipalTagAttributeMapCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/TagResourceCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/TagResourceCommand.d.ts new file mode 100644 index 000000000..b589fa14d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/TagResourceCommand.d.ts @@ -0,0 +1,105 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CognitoIdentityClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../CognitoIdentityClient"; +import type { TagResourceInput, TagResourceResponse } from "../models/models_0"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link TagResourceCommand}. + */ +export interface TagResourceCommandInput extends TagResourceInput { +} +/** + * @public + * + * The output of {@link TagResourceCommand}. + */ +export interface TagResourceCommandOutput extends TagResourceResponse, __MetadataBearer { +} +declare const TagResourceCommand_base: { + new (input: TagResourceCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: TagResourceCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Assigns a set of tags to the specified Amazon Cognito identity pool. A tag is a label + * that you can use to categorize and manage identity pools in different ways, such as by + * purpose, owner, environment, or other criteria.

+ *

Each tag consists of a key and value, both of which you define. A key is a general + * category for more specific values. For example, if you have two versions of an identity + * pool, one for testing and another for production, you might assign an + * Environment tag key to both identity pools. The value of this key might be + * Test for one identity pool and Production for the + * other.

+ *

Tags are useful for cost tracking and access control. You can activate your tags so that + * they appear on the Billing and Cost Management console, where you can track the costs + * associated with your identity pools. In an IAM policy, you can constrain + * permissions for identity pools based on specific tags or tag values.

+ *

You can use this action up to 5 times per second, per account. An identity pool can have + * as many as 50 tags.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { CognitoIdentityClient, TagResourceCommand } from "@aws-sdk/client-cognito-identity"; // ES Modules import + * // const { CognitoIdentityClient, TagResourceCommand } = require("@aws-sdk/client-cognito-identity"); // CommonJS import + * // import type { CognitoIdentityClientConfig } from "@aws-sdk/client-cognito-identity"; + * const config = {}; // type is CognitoIdentityClientConfig + * const client = new CognitoIdentityClient(config); + * const input = { // TagResourceInput + * ResourceArn: "STRING_VALUE", // required + * Tags: { // IdentityPoolTagsType // required + * "": "STRING_VALUE", + * }, + * }; + * const command = new TagResourceCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param TagResourceCommandInput - {@link TagResourceCommandInput} + * @returns {@link TagResourceCommandOutput} + * @see {@link TagResourceCommandInput} for command's `input` shape. + * @see {@link TagResourceCommandOutput} for command's `response` shape. + * @see {@link CognitoIdentityClientResolvedConfig | config} for CognitoIdentityClient's `config` shape. + * + * @throws {@link InternalErrorException} (server fault) + *

Thrown when the service encounters an error during processing the request.

+ * + * @throws {@link InvalidParameterException} (client fault) + *

Thrown for missing or bad input parameter(s).

+ * + * @throws {@link NotAuthorizedException} (client fault) + *

Thrown when a user is not authorized to access the requested resource.

+ * + * @throws {@link ResourceNotFoundException} (client fault) + *

Thrown when the requested resource (for example, a dataset or record) does not + * exist.

+ * + * @throws {@link TooManyRequestsException} (client fault) + *

Thrown when a request is throttled.

+ * + * @throws {@link CognitoIdentityServiceException} + *

Base exception class for all service exceptions from CognitoIdentity service.

+ * + * + * @public + */ +export declare class TagResourceCommand extends TagResourceCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: TagResourceInput; + output: {}; + }; + sdk: { + input: TagResourceCommandInput; + output: TagResourceCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/UnlinkDeveloperIdentityCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/UnlinkDeveloperIdentityCommand.d.ts new file mode 100644 index 000000000..2e9e288ca --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/UnlinkDeveloperIdentityCommand.d.ts @@ -0,0 +1,100 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CognitoIdentityClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../CognitoIdentityClient"; +import type { UnlinkDeveloperIdentityInput } from "../models/models_0"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link UnlinkDeveloperIdentityCommand}. + */ +export interface UnlinkDeveloperIdentityCommandInput extends UnlinkDeveloperIdentityInput { +} +/** + * @public + * + * The output of {@link UnlinkDeveloperIdentityCommand}. + */ +export interface UnlinkDeveloperIdentityCommandOutput extends __MetadataBearer { +} +declare const UnlinkDeveloperIdentityCommand_base: { + new (input: UnlinkDeveloperIdentityCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: UnlinkDeveloperIdentityCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Unlinks a DeveloperUserIdentifier from an existing identity. Unlinked + * developer users will be considered new identities next time they are seen. If, for a given + * Cognito identity, you remove all federated identities as well as the developer user + * identifier, the Cognito identity becomes inaccessible.

+ *

You must use Amazon Web Services developer credentials to call this + * operation.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { CognitoIdentityClient, UnlinkDeveloperIdentityCommand } from "@aws-sdk/client-cognito-identity"; // ES Modules import + * // const { CognitoIdentityClient, UnlinkDeveloperIdentityCommand } = require("@aws-sdk/client-cognito-identity"); // CommonJS import + * // import type { CognitoIdentityClientConfig } from "@aws-sdk/client-cognito-identity"; + * const config = {}; // type is CognitoIdentityClientConfig + * const client = new CognitoIdentityClient(config); + * const input = { // UnlinkDeveloperIdentityInput + * IdentityId: "STRING_VALUE", // required + * IdentityPoolId: "STRING_VALUE", // required + * DeveloperProviderName: "STRING_VALUE", // required + * DeveloperUserIdentifier: "STRING_VALUE", // required + * }; + * const command = new UnlinkDeveloperIdentityCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param UnlinkDeveloperIdentityCommandInput - {@link UnlinkDeveloperIdentityCommandInput} + * @returns {@link UnlinkDeveloperIdentityCommandOutput} + * @see {@link UnlinkDeveloperIdentityCommandInput} for command's `input` shape. + * @see {@link UnlinkDeveloperIdentityCommandOutput} for command's `response` shape. + * @see {@link CognitoIdentityClientResolvedConfig | config} for CognitoIdentityClient's `config` shape. + * + * @throws {@link InternalErrorException} (server fault) + *

Thrown when the service encounters an error during processing the request.

+ * + * @throws {@link InvalidParameterException} (client fault) + *

Thrown for missing or bad input parameter(s).

+ * + * @throws {@link NotAuthorizedException} (client fault) + *

Thrown when a user is not authorized to access the requested resource.

+ * + * @throws {@link ResourceConflictException} (client fault) + *

Thrown when a user tries to use a login which is already linked to another + * account.

+ * + * @throws {@link ResourceNotFoundException} (client fault) + *

Thrown when the requested resource (for example, a dataset or record) does not + * exist.

+ * + * @throws {@link TooManyRequestsException} (client fault) + *

Thrown when a request is throttled.

+ * + * @throws {@link CognitoIdentityServiceException} + *

Base exception class for all service exceptions from CognitoIdentity service.

+ * + * + * @public + */ +export declare class UnlinkDeveloperIdentityCommand extends UnlinkDeveloperIdentityCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: UnlinkDeveloperIdentityInput; + output: {}; + }; + sdk: { + input: UnlinkDeveloperIdentityCommandInput; + output: UnlinkDeveloperIdentityCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/UnlinkIdentityCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/UnlinkIdentityCommand.d.ts new file mode 100644 index 000000000..8873f686a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/UnlinkIdentityCommand.d.ts @@ -0,0 +1,105 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CognitoIdentityClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../CognitoIdentityClient"; +import type { UnlinkIdentityInput } from "../models/models_0"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link UnlinkIdentityCommand}. + */ +export interface UnlinkIdentityCommandInput extends UnlinkIdentityInput { +} +/** + * @public + * + * The output of {@link UnlinkIdentityCommand}. + */ +export interface UnlinkIdentityCommandOutput extends __MetadataBearer { +} +declare const UnlinkIdentityCommand_base: { + new (input: UnlinkIdentityCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: UnlinkIdentityCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Unlinks a federated identity from an existing account. Unlinked logins will be + * considered new identities next time they are seen. Removing the last linked login will make + * this identity inaccessible.

+ *

This is a public API. You do not need any credentials to call this API.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { CognitoIdentityClient, UnlinkIdentityCommand } from "@aws-sdk/client-cognito-identity"; // ES Modules import + * // const { CognitoIdentityClient, UnlinkIdentityCommand } = require("@aws-sdk/client-cognito-identity"); // CommonJS import + * // import type { CognitoIdentityClientConfig } from "@aws-sdk/client-cognito-identity"; + * const config = {}; // type is CognitoIdentityClientConfig + * const client = new CognitoIdentityClient(config); + * const input = { // UnlinkIdentityInput + * IdentityId: "STRING_VALUE", // required + * Logins: { // LoginsMap // required + * "": "STRING_VALUE", + * }, + * LoginsToRemove: [ // LoginsList // required + * "STRING_VALUE", + * ], + * }; + * const command = new UnlinkIdentityCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param UnlinkIdentityCommandInput - {@link UnlinkIdentityCommandInput} + * @returns {@link UnlinkIdentityCommandOutput} + * @see {@link UnlinkIdentityCommandInput} for command's `input` shape. + * @see {@link UnlinkIdentityCommandOutput} for command's `response` shape. + * @see {@link CognitoIdentityClientResolvedConfig | config} for CognitoIdentityClient's `config` shape. + * + * @throws {@link ExternalServiceException} (client fault) + *

An exception thrown when a dependent service such as Facebook or Twitter is not + * responding

+ * + * @throws {@link InternalErrorException} (server fault) + *

Thrown when the service encounters an error during processing the request.

+ * + * @throws {@link InvalidParameterException} (client fault) + *

Thrown for missing or bad input parameter(s).

+ * + * @throws {@link NotAuthorizedException} (client fault) + *

Thrown when a user is not authorized to access the requested resource.

+ * + * @throws {@link ResourceConflictException} (client fault) + *

Thrown when a user tries to use a login which is already linked to another + * account.

+ * + * @throws {@link ResourceNotFoundException} (client fault) + *

Thrown when the requested resource (for example, a dataset or record) does not + * exist.

+ * + * @throws {@link TooManyRequestsException} (client fault) + *

Thrown when a request is throttled.

+ * + * @throws {@link CognitoIdentityServiceException} + *

Base exception class for all service exceptions from CognitoIdentity service.

+ * + * + * @public + */ +export declare class UnlinkIdentityCommand extends UnlinkIdentityCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: UnlinkIdentityInput; + output: {}; + }; + sdk: { + input: UnlinkIdentityCommandInput; + output: UnlinkIdentityCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/UntagResourceCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/UntagResourceCommand.d.ts new file mode 100644 index 000000000..0a12d8aea --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/UntagResourceCommand.d.ts @@ -0,0 +1,92 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CognitoIdentityClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../CognitoIdentityClient"; +import type { UntagResourceInput, UntagResourceResponse } from "../models/models_0"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link UntagResourceCommand}. + */ +export interface UntagResourceCommandInput extends UntagResourceInput { +} +/** + * @public + * + * The output of {@link UntagResourceCommand}. + */ +export interface UntagResourceCommandOutput extends UntagResourceResponse, __MetadataBearer { +} +declare const UntagResourceCommand_base: { + new (input: UntagResourceCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: UntagResourceCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Removes the specified tags from the specified Amazon Cognito identity pool. You can use + * this action up to 5 times per second, per account

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { CognitoIdentityClient, UntagResourceCommand } from "@aws-sdk/client-cognito-identity"; // ES Modules import + * // const { CognitoIdentityClient, UntagResourceCommand } = require("@aws-sdk/client-cognito-identity"); // CommonJS import + * // import type { CognitoIdentityClientConfig } from "@aws-sdk/client-cognito-identity"; + * const config = {}; // type is CognitoIdentityClientConfig + * const client = new CognitoIdentityClient(config); + * const input = { // UntagResourceInput + * ResourceArn: "STRING_VALUE", // required + * TagKeys: [ // IdentityPoolTagsListType // required + * "STRING_VALUE", + * ], + * }; + * const command = new UntagResourceCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param UntagResourceCommandInput - {@link UntagResourceCommandInput} + * @returns {@link UntagResourceCommandOutput} + * @see {@link UntagResourceCommandInput} for command's `input` shape. + * @see {@link UntagResourceCommandOutput} for command's `response` shape. + * @see {@link CognitoIdentityClientResolvedConfig | config} for CognitoIdentityClient's `config` shape. + * + * @throws {@link InternalErrorException} (server fault) + *

Thrown when the service encounters an error during processing the request.

+ * + * @throws {@link InvalidParameterException} (client fault) + *

Thrown for missing or bad input parameter(s).

+ * + * @throws {@link NotAuthorizedException} (client fault) + *

Thrown when a user is not authorized to access the requested resource.

+ * + * @throws {@link ResourceNotFoundException} (client fault) + *

Thrown when the requested resource (for example, a dataset or record) does not + * exist.

+ * + * @throws {@link TooManyRequestsException} (client fault) + *

Thrown when a request is throttled.

+ * + * @throws {@link CognitoIdentityServiceException} + *

Base exception class for all service exceptions from CognitoIdentity service.

+ * + * + * @public + */ +export declare class UntagResourceCommand extends UntagResourceCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: UntagResourceInput; + output: {}; + }; + sdk: { + input: UntagResourceCommandInput; + output: UntagResourceCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/UpdateIdentityPoolCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/UpdateIdentityPoolCommand.d.ts new file mode 100644 index 000000000..c78a9e816 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/UpdateIdentityPoolCommand.d.ts @@ -0,0 +1,152 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CognitoIdentityClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../CognitoIdentityClient"; +import type { IdentityPool } from "../models/models_0"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link UpdateIdentityPoolCommand}. + */ +export interface UpdateIdentityPoolCommandInput extends IdentityPool { +} +/** + * @public + * + * The output of {@link UpdateIdentityPoolCommand}. + */ +export interface UpdateIdentityPoolCommandOutput extends IdentityPool, __MetadataBearer { +} +declare const UpdateIdentityPoolCommand_base: { + new (input: UpdateIdentityPoolCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: UpdateIdentityPoolCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Updates the configuration of an identity pool.

+ * + *

If you don't provide a value for a parameter, Amazon Cognito sets it to its default value. + *

+ *
+ *

You must use Amazon Web Services developer credentials to call this + * operation.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { CognitoIdentityClient, UpdateIdentityPoolCommand } from "@aws-sdk/client-cognito-identity"; // ES Modules import + * // const { CognitoIdentityClient, UpdateIdentityPoolCommand } = require("@aws-sdk/client-cognito-identity"); // CommonJS import + * // import type { CognitoIdentityClientConfig } from "@aws-sdk/client-cognito-identity"; + * const config = {}; // type is CognitoIdentityClientConfig + * const client = new CognitoIdentityClient(config); + * const input = { // IdentityPool + * IdentityPoolId: "STRING_VALUE", // required + * IdentityPoolName: "STRING_VALUE", // required + * AllowUnauthenticatedIdentities: true || false, // required + * AllowClassicFlow: true || false, + * SupportedLoginProviders: { // IdentityProviders + * "": "STRING_VALUE", + * }, + * DeveloperProviderName: "STRING_VALUE", + * OpenIdConnectProviderARNs: [ // OIDCProviderList + * "STRING_VALUE", + * ], + * CognitoIdentityProviders: [ // CognitoIdentityProviderList + * { // CognitoIdentityProvider + * ProviderName: "STRING_VALUE", + * ClientId: "STRING_VALUE", + * ServerSideTokenCheck: true || false, + * }, + * ], + * SamlProviderARNs: [ // SAMLProviderList + * "STRING_VALUE", + * ], + * IdentityPoolTags: { // IdentityPoolTagsType + * "": "STRING_VALUE", + * }, + * }; + * const command = new UpdateIdentityPoolCommand(input); + * const response = await client.send(command); + * // { // IdentityPool + * // IdentityPoolId: "STRING_VALUE", // required + * // IdentityPoolName: "STRING_VALUE", // required + * // AllowUnauthenticatedIdentities: true || false, // required + * // AllowClassicFlow: true || false, + * // SupportedLoginProviders: { // IdentityProviders + * // "": "STRING_VALUE", + * // }, + * // DeveloperProviderName: "STRING_VALUE", + * // OpenIdConnectProviderARNs: [ // OIDCProviderList + * // "STRING_VALUE", + * // ], + * // CognitoIdentityProviders: [ // CognitoIdentityProviderList + * // { // CognitoIdentityProvider + * // ProviderName: "STRING_VALUE", + * // ClientId: "STRING_VALUE", + * // ServerSideTokenCheck: true || false, + * // }, + * // ], + * // SamlProviderARNs: [ // SAMLProviderList + * // "STRING_VALUE", + * // ], + * // IdentityPoolTags: { // IdentityPoolTagsType + * // "": "STRING_VALUE", + * // }, + * // }; + * + * ``` + * + * @param UpdateIdentityPoolCommandInput - {@link UpdateIdentityPoolCommandInput} + * @returns {@link UpdateIdentityPoolCommandOutput} + * @see {@link UpdateIdentityPoolCommandInput} for command's `input` shape. + * @see {@link UpdateIdentityPoolCommandOutput} for command's `response` shape. + * @see {@link CognitoIdentityClientResolvedConfig | config} for CognitoIdentityClient's `config` shape. + * + * @throws {@link ConcurrentModificationException} (client fault) + *

Thrown if there are parallel requests to modify a resource.

+ * + * @throws {@link InternalErrorException} (server fault) + *

Thrown when the service encounters an error during processing the request.

+ * + * @throws {@link InvalidParameterException} (client fault) + *

Thrown for missing or bad input parameter(s).

+ * + * @throws {@link LimitExceededException} (client fault) + *

Thrown when the total number of user pools has exceeded a preset limit.

+ * + * @throws {@link NotAuthorizedException} (client fault) + *

Thrown when a user is not authorized to access the requested resource.

+ * + * @throws {@link ResourceConflictException} (client fault) + *

Thrown when a user tries to use a login which is already linked to another + * account.

+ * + * @throws {@link ResourceNotFoundException} (client fault) + *

Thrown when the requested resource (for example, a dataset or record) does not + * exist.

+ * + * @throws {@link TooManyRequestsException} (client fault) + *

Thrown when a request is throttled.

+ * + * @throws {@link CognitoIdentityServiceException} + *

Base exception class for all service exceptions from CognitoIdentity service.

+ * + * + * @public + */ +export declare class UpdateIdentityPoolCommand extends UpdateIdentityPoolCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: IdentityPool; + output: IdentityPool; + }; + sdk: { + input: UpdateIdentityPoolCommandInput; + output: UpdateIdentityPoolCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/index.d.ts new file mode 100644 index 000000000..8df424ba4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/commands/index.d.ts @@ -0,0 +1,23 @@ +export * from "./CreateIdentityPoolCommand"; +export * from "./DeleteIdentitiesCommand"; +export * from "./DeleteIdentityPoolCommand"; +export * from "./DescribeIdentityCommand"; +export * from "./DescribeIdentityPoolCommand"; +export * from "./GetCredentialsForIdentityCommand"; +export * from "./GetIdCommand"; +export * from "./GetIdentityPoolRolesCommand"; +export * from "./GetOpenIdTokenCommand"; +export * from "./GetOpenIdTokenForDeveloperIdentityCommand"; +export * from "./GetPrincipalTagAttributeMapCommand"; +export * from "./ListIdentitiesCommand"; +export * from "./ListIdentityPoolsCommand"; +export * from "./ListTagsForResourceCommand"; +export * from "./LookupDeveloperIdentityCommand"; +export * from "./MergeDeveloperIdentitiesCommand"; +export * from "./SetIdentityPoolRolesCommand"; +export * from "./SetPrincipalTagAttributeMapCommand"; +export * from "./TagResourceCommand"; +export * from "./UnlinkDeveloperIdentityCommand"; +export * from "./UnlinkIdentityCommand"; +export * from "./UntagResourceCommand"; +export * from "./UpdateIdentityPoolCommand"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/endpoint/EndpointParameters.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/endpoint/EndpointParameters.d.ts new file mode 100644 index 000000000..240d5235a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/endpoint/EndpointParameters.d.ts @@ -0,0 +1,50 @@ +import type { Endpoint, EndpointParameters as __EndpointParameters, EndpointV2, Provider } from "@smithy/types"; +/** + * @public + */ +export interface ClientInputEndpointParameters { + region?: string | undefined | Provider; + useDualstackEndpoint?: boolean | undefined | Provider; + useFipsEndpoint?: boolean | undefined | Provider; + endpoint?: string | Provider | Endpoint | Provider | EndpointV2 | Provider; +} +/** + * @public + */ +export type ClientResolvedEndpointParameters = Omit & { + defaultSigningName: string; +}; +/** + * @internal + */ +export declare const resolveClientEndpointParameters: (options: T & ClientInputEndpointParameters) => T & ClientResolvedEndpointParameters; +/** + * @internal + */ +export declare const commonParams: { + readonly UseFIPS: { + readonly type: "builtInParams"; + readonly name: "useFipsEndpoint"; + }; + readonly Endpoint: { + readonly type: "builtInParams"; + readonly name: "endpoint"; + }; + readonly Region: { + readonly type: "builtInParams"; + readonly name: "region"; + }; + readonly UseDualStack: { + readonly type: "builtInParams"; + readonly name: "useDualstackEndpoint"; + }; +}; +/** + * @internal + */ +export interface EndpointParameters extends __EndpointParameters { + Region?: string | undefined; + UseDualStack?: boolean | undefined; + UseFIPS?: boolean | undefined; + Endpoint?: string | undefined; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/endpoint/endpointResolver.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/endpoint/endpointResolver.d.ts new file mode 100644 index 000000000..c1de67d3e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/endpoint/endpointResolver.d.ts @@ -0,0 +1,8 @@ +import type { EndpointV2, Logger } from "@smithy/types"; +import type { EndpointParameters } from "./EndpointParameters"; +/** + * @internal + */ +export declare const defaultEndpointResolver: (endpointParams: EndpointParameters, context?: { + logger?: Logger; +}) => EndpointV2; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/endpoint/ruleset.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/endpoint/ruleset.d.ts new file mode 100644 index 000000000..4b238994b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/endpoint/ruleset.d.ts @@ -0,0 +1,2 @@ +import { RuleSetObject } from "@smithy/types"; +export declare const ruleSet: RuleSetObject; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/extensionConfiguration.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/extensionConfiguration.d.ts new file mode 100644 index 000000000..bfdae8835 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/extensionConfiguration.d.ts @@ -0,0 +1,9 @@ +import type { AwsRegionExtensionConfiguration } from "@aws-sdk/types"; +import type { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; +import type { DefaultExtensionConfiguration } from "@smithy/types"; +import type { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; +/** + * @internal + */ +export interface CognitoIdentityExtensionConfiguration extends HttpHandlerExtensionConfiguration, DefaultExtensionConfiguration, AwsRegionExtensionConfiguration, HttpAuthExtensionConfiguration { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/index.d.ts new file mode 100644 index 000000000..195ba45fa --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/index.d.ts @@ -0,0 +1,31 @@ +/** + * Amazon Cognito Federated Identities + *

Amazon Cognito Federated Identities is a web service that delivers scoped temporary + * credentials to mobile devices and other untrusted environments. It uniquely identifies a + * device and supplies the user with a consistent identity over the lifetime of an + * application.

+ *

Using Amazon Cognito Federated Identities, you can enable authentication with one or + * more third-party identity providers (Facebook, Google, or Login with Amazon) or an Amazon + * Cognito user pool, and you can also choose to support unauthenticated access from your app. + * Cognito delivers a unique identifier for each user and acts as an OpenID token provider + * trusted by Security Token Service (STS) to access temporary, limited-privilege Amazon Web Services credentials.

+ *

For a description of the authentication flow from the Amazon Cognito Developer Guide + * see Authentication + * Flow.

+ *

For more information see Amazon Cognito Federated + * Identities.

+ * + * @packageDocumentation + */ +export * from "./CognitoIdentityClient"; +export * from "./CognitoIdentity"; +export { ClientInputEndpointParameters } from "./endpoint/EndpointParameters"; +export type { RuntimeExtension } from "./runtimeExtensions"; +export type { CognitoIdentityExtensionConfiguration } from "./extensionConfiguration"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./pagination"; +export * from "./models/enums"; +export * from "./models/errors"; +export * from "./models/models_0"; +export { CognitoIdentityServiceException } from "./models/CognitoIdentityServiceException"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/models/CognitoIdentityServiceException.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/models/CognitoIdentityServiceException.d.ts new file mode 100644 index 000000000..20b34ebda --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/models/CognitoIdentityServiceException.d.ts @@ -0,0 +1,14 @@ +import { type ServiceExceptionOptions as __ServiceExceptionOptions, ServiceException as __ServiceException } from "@smithy/smithy-client"; +export type { __ServiceExceptionOptions }; +export { __ServiceException }; +/** + * @public + * + * Base exception class for all service exceptions from CognitoIdentity service. + */ +export declare class CognitoIdentityServiceException extends __ServiceException { + /** + * @internal + */ + constructor(options: __ServiceExceptionOptions); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/models/enums.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/models/enums.d.ts new file mode 100644 index 000000000..0f94ff73b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/models/enums.d.ts @@ -0,0 +1,50 @@ +/** + * @public + * @enum + */ +export declare const AmbiguousRoleResolutionType: { + readonly AUTHENTICATED_ROLE: "AuthenticatedRole"; + readonly DENY: "Deny"; +}; +/** + * @public + */ +export type AmbiguousRoleResolutionType = (typeof AmbiguousRoleResolutionType)[keyof typeof AmbiguousRoleResolutionType]; +/** + * @public + * @enum + */ +export declare const ErrorCode: { + readonly ACCESS_DENIED: "AccessDenied"; + readonly INTERNAL_SERVER_ERROR: "InternalServerError"; +}; +/** + * @public + */ +export type ErrorCode = (typeof ErrorCode)[keyof typeof ErrorCode]; +/** + * @public + * @enum + */ +export declare const MappingRuleMatchType: { + readonly CONTAINS: "Contains"; + readonly EQUALS: "Equals"; + readonly NOT_EQUAL: "NotEqual"; + readonly STARTS_WITH: "StartsWith"; +}; +/** + * @public + */ +export type MappingRuleMatchType = (typeof MappingRuleMatchType)[keyof typeof MappingRuleMatchType]; +/** + * @public + * @enum + */ +export declare const RoleMappingType: { + readonly RULES: "Rules"; + readonly TOKEN: "Token"; +}; +/** + * @public + */ +export type RoleMappingType = (typeof RoleMappingType)[keyof typeof RoleMappingType]; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/models/errors.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/models/errors.d.ts new file mode 100644 index 000000000..d87bace76 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/models/errors.d.ts @@ -0,0 +1,144 @@ +import type { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; +import { CognitoIdentityServiceException as __BaseException } from "./CognitoIdentityServiceException"; +/** + *

Thrown when the service encounters an error during processing the request.

+ * @public + */ +export declare class InternalErrorException extends __BaseException { + readonly name: "InternalErrorException"; + readonly $fault: "server"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Thrown for missing or bad input parameter(s).

+ * @public + */ +export declare class InvalidParameterException extends __BaseException { + readonly name: "InvalidParameterException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Thrown when the total number of user pools has exceeded a preset limit.

+ * @public + */ +export declare class LimitExceededException extends __BaseException { + readonly name: "LimitExceededException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Thrown when a user is not authorized to access the requested resource.

+ * @public + */ +export declare class NotAuthorizedException extends __BaseException { + readonly name: "NotAuthorizedException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Thrown when a user tries to use a login which is already linked to another + * account.

+ * @public + */ +export declare class ResourceConflictException extends __BaseException { + readonly name: "ResourceConflictException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Thrown when a request is throttled.

+ * @public + */ +export declare class TooManyRequestsException extends __BaseException { + readonly name: "TooManyRequestsException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Thrown when the requested resource (for example, a dataset or record) does not + * exist.

+ * @public + */ +export declare class ResourceNotFoundException extends __BaseException { + readonly name: "ResourceNotFoundException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

An exception thrown when a dependent service such as Facebook or Twitter is not + * responding

+ * @public + */ +export declare class ExternalServiceException extends __BaseException { + readonly name: "ExternalServiceException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

If you provided authentication information in the request, the identity pool has no + * authenticated role configured, or STS returned an error response to the + * request to assume the authenticated role from the identity pool. If you provided no + * authentication information in the request, the identity pool has no unauthenticated role + * configured, or STS returned an error response to the request to assume the + * unauthenticated role from the identity pool.

+ *

Your role trust policy must grant AssumeRoleWithWebIdentity permissions to cognito-identity.amazonaws.com.

+ * @public + */ +export declare class InvalidIdentityPoolConfigurationException extends __BaseException { + readonly name: "InvalidIdentityPoolConfigurationException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

The provided developer user identifier is already registered with Cognito under a + * different identity ID.

+ * @public + */ +export declare class DeveloperUserAlreadyRegisteredException extends __BaseException { + readonly name: "DeveloperUserAlreadyRegisteredException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Thrown if there are parallel requests to modify a resource.

+ * @public + */ +export declare class ConcurrentModificationException extends __BaseException { + readonly name: "ConcurrentModificationException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/models/models_0.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/models/models_0.d.ts new file mode 100644 index 000000000..a2e29cd4e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/models/models_0.d.ts @@ -0,0 +1,1039 @@ +import { AmbiguousRoleResolutionType, ErrorCode, MappingRuleMatchType, RoleMappingType } from "./enums"; +/** + *

A provider representing an Amazon Cognito user pool and its client ID.

+ * @public + */ +export interface CognitoIdentityProvider { + /** + *

The provider name for an Amazon Cognito user pool. For example, + * cognito-idp.us-east-1.amazonaws.com/us-east-1_123456789.

+ * @public + */ + ProviderName?: string | undefined; + /** + *

The client ID for the Amazon Cognito user pool.

+ * @public + */ + ClientId?: string | undefined; + /** + *

TRUE if server-side token validation is enabled for the identity provider’s + * token.

+ *

Once you set ServerSideTokenCheck to TRUE for an identity pool, that + * identity pool will check with the integrated user pools to make sure that the user has not + * been globally signed out or deleted before the identity pool provides an OIDC token or + * Amazon Web Services credentials for the user.

+ *

If the user is signed out or deleted, the identity pool will return a 400 Not + * Authorized error.

+ * @public + */ + ServerSideTokenCheck?: boolean | undefined; +} +/** + *

Input to the CreateIdentityPool action.

+ * @public + */ +export interface CreateIdentityPoolInput { + /** + *

A string that you provide.

+ * @public + */ + IdentityPoolName: string | undefined; + /** + *

TRUE if the identity pool supports unauthenticated logins.

+ * @public + */ + AllowUnauthenticatedIdentities: boolean | undefined; + /** + *

Enables or disables the Basic (Classic) authentication flow. For more information, see + * Identity Pools (Federated Identities) Authentication Flow in the + * Amazon Cognito Developer Guide.

+ * @public + */ + AllowClassicFlow?: boolean | undefined; + /** + *

Optional key:value pairs mapping provider names to provider app IDs.

+ * @public + */ + SupportedLoginProviders?: Record | undefined; + /** + *

The "domain" by which Cognito will refer to your users. This name acts as a + * placeholder that allows your backend and the Cognito service to communicate about the + * developer provider. For the DeveloperProviderName, you can use letters as well + * as period (.), underscore (_), and dash + * (-).

+ *

Once you have set a developer provider name, you cannot change it. Please take care + * in setting this parameter.

+ * @public + */ + DeveloperProviderName?: string | undefined; + /** + *

The Amazon Resource Names (ARN) of the OpenID Connect providers.

+ * @public + */ + OpenIdConnectProviderARNs?: string[] | undefined; + /** + *

An array of Amazon Cognito user pools and their client IDs.

+ * @public + */ + CognitoIdentityProviders?: CognitoIdentityProvider[] | undefined; + /** + *

An array of Amazon Resource Names (ARNs) of the SAML provider for your identity + * pool.

+ * @public + */ + SamlProviderARNs?: string[] | undefined; + /** + *

Tags to assign to the identity pool. A tag is a label that you can apply to identity + * pools to categorize and manage them in different ways, such as by purpose, owner, + * environment, or other criteria.

+ * @public + */ + IdentityPoolTags?: Record | undefined; +} +/** + *

An object representing an Amazon Cognito identity pool.

+ * @public + */ +export interface IdentityPool { + /** + *

An identity pool ID in the format REGION:GUID.

+ * @public + */ + IdentityPoolId: string | undefined; + /** + *

A string that you provide.

+ * @public + */ + IdentityPoolName: string | undefined; + /** + *

TRUE if the identity pool supports unauthenticated logins.

+ * @public + */ + AllowUnauthenticatedIdentities: boolean | undefined; + /** + *

Enables or disables the Basic (Classic) authentication flow. For more information, see + * Identity Pools (Federated Identities) Authentication Flow in the + * Amazon Cognito Developer Guide.

+ * @public + */ + AllowClassicFlow?: boolean | undefined; + /** + *

Optional key:value pairs mapping provider names to provider app IDs.

+ * @public + */ + SupportedLoginProviders?: Record | undefined; + /** + *

The "domain" by which Cognito will refer to your users.

+ * @public + */ + DeveloperProviderName?: string | undefined; + /** + *

The ARNs of the OpenID Connect providers.

+ * @public + */ + OpenIdConnectProviderARNs?: string[] | undefined; + /** + *

A list representing an Amazon Cognito user pool and its client ID.

+ * @public + */ + CognitoIdentityProviders?: CognitoIdentityProvider[] | undefined; + /** + *

An array of Amazon Resource Names (ARNs) of the SAML provider for your identity + * pool.

+ * @public + */ + SamlProviderARNs?: string[] | undefined; + /** + *

The tags that are assigned to the identity pool. A tag is a label that you can apply to + * identity pools to categorize and manage them in different ways, such as by purpose, owner, + * environment, or other criteria.

+ * @public + */ + IdentityPoolTags?: Record | undefined; +} +/** + *

Input to the DeleteIdentities action.

+ * @public + */ +export interface DeleteIdentitiesInput { + /** + *

A list of 1-60 identities that you want to delete.

+ * @public + */ + IdentityIdsToDelete: string[] | undefined; +} +/** + *

An array of UnprocessedIdentityId objects, each of which contains an ErrorCode and + * IdentityId.

+ * @public + */ +export interface UnprocessedIdentityId { + /** + *

A unique identifier in the format REGION:GUID.

+ * @public + */ + IdentityId?: string | undefined; + /** + *

The error code indicating the type of error that occurred.

+ * @public + */ + ErrorCode?: ErrorCode | undefined; +} +/** + *

Returned in response to a successful DeleteIdentities + * operation.

+ * @public + */ +export interface DeleteIdentitiesResponse { + /** + *

An array of UnprocessedIdentityId objects, each of which contains an ErrorCode and + * IdentityId.

+ * @public + */ + UnprocessedIdentityIds?: UnprocessedIdentityId[] | undefined; +} +/** + *

Input to the DeleteIdentityPool action.

+ * @public + */ +export interface DeleteIdentityPoolInput { + /** + *

An identity pool ID in the format REGION:GUID.

+ * @public + */ + IdentityPoolId: string | undefined; +} +/** + *

Input to the DescribeIdentity action.

+ * @public + */ +export interface DescribeIdentityInput { + /** + *

A unique identifier in the format REGION:GUID.

+ * @public + */ + IdentityId: string | undefined; +} +/** + *

A description of the identity.

+ * @public + */ +export interface IdentityDescription { + /** + *

A unique identifier in the format REGION:GUID.

+ * @public + */ + IdentityId?: string | undefined; + /** + *

The provider names.

+ * @public + */ + Logins?: string[] | undefined; + /** + *

Date on which the identity was created.

+ * @public + */ + CreationDate?: Date | undefined; + /** + *

Date on which the identity was last modified.

+ * @public + */ + LastModifiedDate?: Date | undefined; +} +/** + *

Input to the DescribeIdentityPool action.

+ * @public + */ +export interface DescribeIdentityPoolInput { + /** + *

An identity pool ID in the format REGION:GUID.

+ * @public + */ + IdentityPoolId: string | undefined; +} +/** + *

Input to the GetCredentialsForIdentity action.

+ * @public + */ +export interface GetCredentialsForIdentityInput { + /** + *

A unique identifier in the format REGION:GUID.

+ * @public + */ + IdentityId: string | undefined; + /** + *

A set of optional name-value pairs that map provider names to provider tokens. The + * name-value pair will follow the syntax "provider_name": + * "provider_user_identifier".

+ *

Logins should not be specified when trying to get credentials for an unauthenticated + * identity.

+ *

The Logins parameter is required when using identities associated with external + * identity providers such as Facebook. For examples of Logins maps, see the code + * examples in the External Identity + * Providers section of the Amazon Cognito Developer Guide.

+ * @public + */ + Logins?: Record | undefined; + /** + *

The Amazon Resource Name (ARN) of the role to be assumed when multiple roles were + * received in the token from the identity provider. For example, a SAML-based identity + * provider. This parameter is optional for identity providers that do not support role + * customization.

+ * @public + */ + CustomRoleArn?: string | undefined; +} +/** + *

Credentials for the provided identity ID.

+ * @public + */ +export interface Credentials { + /** + *

The Access Key portion of the credentials.

+ * @public + */ + AccessKeyId?: string | undefined; + /** + *

The Secret Access Key portion of the credentials

+ * @public + */ + SecretKey?: string | undefined; + /** + *

The Session Token portion of the credentials

+ * @public + */ + SessionToken?: string | undefined; + /** + *

The date at which these credentials will expire.

+ * @public + */ + Expiration?: Date | undefined; +} +/** + *

Returned in response to a successful GetCredentialsForIdentity + * operation.

+ * @public + */ +export interface GetCredentialsForIdentityResponse { + /** + *

A unique identifier in the format REGION:GUID.

+ * @public + */ + IdentityId?: string | undefined; + /** + *

Credentials for the provided identity ID.

+ * @public + */ + Credentials?: Credentials | undefined; +} +/** + *

Input to the GetId action.

+ * @public + */ +export interface GetIdInput { + /** + *

A standard Amazon Web Services account ID (9+ digits).

+ * @public + */ + AccountId?: string | undefined; + /** + *

An identity pool ID in the format REGION:GUID.

+ * @public + */ + IdentityPoolId: string | undefined; + /** + *

A set of optional name-value pairs that map provider names to provider tokens. The + * available provider names for Logins are as follows:

+ *
    + *
  • + *

    Facebook: graph.facebook.com + *

    + *
  • + *
  • + *

    Amazon Cognito user pool: + * cognito-idp..amazonaws.com/, + * for example, cognito-idp.us-east-1.amazonaws.com/us-east-1_123456789. + *

    + *
  • + *
  • + *

    Google: accounts.google.com + *

    + *
  • + *
  • + *

    Amazon: www.amazon.com + *

    + *
  • + *
  • + *

    Twitter: api.twitter.com + *

    + *
  • + *
  • + *

    Digits: www.digits.com + *

    + *
  • + *
+ * @public + */ + Logins?: Record | undefined; +} +/** + *

Returned in response to a GetId request.

+ * @public + */ +export interface GetIdResponse { + /** + *

A unique identifier in the format REGION:GUID.

+ * @public + */ + IdentityId?: string | undefined; +} +/** + *

Input to the GetIdentityPoolRoles action.

+ * @public + */ +export interface GetIdentityPoolRolesInput { + /** + *

An identity pool ID in the format REGION:GUID.

+ * @public + */ + IdentityPoolId: string | undefined; +} +/** + *

A rule that maps a claim name, a claim value, and a match type to a role + * ARN.

+ * @public + */ +export interface MappingRule { + /** + *

The claim name that must be present in the token, for example, "isAdmin" or + * "paid".

+ * @public + */ + Claim: string | undefined; + /** + *

The match condition that specifies how closely the claim value in the IdP token must + * match Value.

+ * @public + */ + MatchType: MappingRuleMatchType | undefined; + /** + *

A brief string that the claim must match, for example, "paid" or "yes".

+ * @public + */ + Value: string | undefined; + /** + *

The role ARN.

+ * @public + */ + RoleARN: string | undefined; +} +/** + *

A container for rules.

+ * @public + */ +export interface RulesConfigurationType { + /** + *

An array of rules. You can specify up to 25 rules per identity provider.

+ *

Rules are evaluated in order. The first one to match specifies the role.

+ * @public + */ + Rules: MappingRule[] | undefined; +} +/** + *

A role mapping.

+ * @public + */ +export interface RoleMapping { + /** + *

The role mapping type. Token will use cognito:roles and + * cognito:preferred_role claims from the Cognito identity provider token to + * map groups to roles. Rules will attempt to match claims from the token to map to a + * role.

+ * @public + */ + Type: RoleMappingType | undefined; + /** + *

If you specify Token or Rules as the Type, + * AmbiguousRoleResolution is required.

+ *

Specifies the action to be taken if either no rules match the claim value for the + * Rules type, or there is no cognito:preferred_role claim and + * there are multiple cognito:roles matches for the Token + * type.

+ * @public + */ + AmbiguousRoleResolution?: AmbiguousRoleResolutionType | undefined; + /** + *

The rules to be used for mapping users to roles.

+ *

If you specify Rules as the role mapping type, RulesConfiguration is + * required.

+ * @public + */ + RulesConfiguration?: RulesConfigurationType | undefined; +} +/** + *

Returned in response to a successful GetIdentityPoolRoles + * operation.

+ * @public + */ +export interface GetIdentityPoolRolesResponse { + /** + *

An identity pool ID in the format REGION:GUID.

+ * @public + */ + IdentityPoolId?: string | undefined; + /** + *

The map of roles associated with this pool. Currently only authenticated and + * unauthenticated roles are supported.

+ * @public + */ + Roles?: Record | undefined; + /** + *

How users for a specific identity provider are to mapped to roles. This is a + * String-to-RoleMapping object map. The string identifies the identity + * provider, for example, graph.facebook.com or + * cognito-idp.us-east-1.amazonaws.com/us-east-1_abcdefghi:app_client_id.

+ * @public + */ + RoleMappings?: Record | undefined; +} +/** + *

Input to the GetOpenIdToken action.

+ * @public + */ +export interface GetOpenIdTokenInput { + /** + *

A unique identifier in the format REGION:GUID.

+ * @public + */ + IdentityId: string | undefined; + /** + *

A set of optional name-value pairs that map provider names to provider tokens. When + * using graph.facebook.com and www.amazon.com, supply the access_token returned from the + * provider's authflow. For accounts.google.com, an Amazon Cognito user pool provider, or any + * other OpenID Connect provider, always include the id_token.

+ * @public + */ + Logins?: Record | undefined; +} +/** + *

Returned in response to a successful GetOpenIdToken request.

+ * @public + */ +export interface GetOpenIdTokenResponse { + /** + *

A unique identifier in the format REGION:GUID. Note that the IdentityId returned may + * not match the one passed on input.

+ * @public + */ + IdentityId?: string | undefined; + /** + *

An OpenID token, valid for 10 minutes.

+ * @public + */ + Token?: string | undefined; +} +/** + *

Input to the GetOpenIdTokenForDeveloperIdentity action.

+ * @public + */ +export interface GetOpenIdTokenForDeveloperIdentityInput { + /** + *

An identity pool ID in the format REGION:GUID.

+ * @public + */ + IdentityPoolId: string | undefined; + /** + *

A unique identifier in the format REGION:GUID.

+ * @public + */ + IdentityId?: string | undefined; + /** + *

A set of optional name-value pairs that map provider names to provider tokens. Each + * name-value pair represents a user from a public provider or developer provider. If the user + * is from a developer provider, the name-value pair will follow the syntax + * "developer_provider_name": "developer_user_identifier". The developer + * provider is the "domain" by which Cognito will refer to your users; you provided this + * domain while creating/updating the identity pool. The developer user identifier is an + * identifier from your backend that uniquely identifies a user. When you create an identity + * pool, you can specify the supported logins.

+ * @public + */ + Logins: Record | undefined; + /** + *

Use this operation to configure attribute mappings for custom providers.

+ * @public + */ + PrincipalTags?: Record | undefined; + /** + *

The expiration time of the token, in seconds. You can specify a custom expiration + * time for the token so that you can cache it. If you don't provide an expiration time, the + * token is valid for 15 minutes. You can exchange the token with Amazon STS for temporary + * Amazon Web Services credentials, which are valid for a maximum of one hour. The maximum + * token duration you can set is 24 hours. You should take care in setting the expiration time + * for a token, as there are significant security implications: an attacker could use a leaked + * token to access your Amazon Web Services resources for the token's duration.

+ * + *

Please provide for a small grace period, usually no more than 5 minutes, to + * account for clock skew.

+ *
+ * @public + */ + TokenDuration?: number | undefined; +} +/** + *

Returned in response to a successful GetOpenIdTokenForDeveloperIdentity + * request.

+ * @public + */ +export interface GetOpenIdTokenForDeveloperIdentityResponse { + /** + *

A unique identifier in the format REGION:GUID.

+ * @public + */ + IdentityId?: string | undefined; + /** + *

An OpenID token.

+ * @public + */ + Token?: string | undefined; +} +/** + * @public + */ +export interface GetPrincipalTagAttributeMapInput { + /** + *

You can use this operation to get the ID of the Identity Pool you setup attribute + * mappings for.

+ * @public + */ + IdentityPoolId: string | undefined; + /** + *

You can use this operation to get the provider name.

+ * @public + */ + IdentityProviderName: string | undefined; +} +/** + * @public + */ +export interface GetPrincipalTagAttributeMapResponse { + /** + *

You can use this operation to get the ID of the Identity Pool you setup attribute + * mappings for.

+ * @public + */ + IdentityPoolId?: string | undefined; + /** + *

You can use this operation to get the provider name.

+ * @public + */ + IdentityProviderName?: string | undefined; + /** + *

You can use this operation to list

+ * @public + */ + UseDefaults?: boolean | undefined; + /** + *

You can use this operation to add principal tags. The + * PrincipalTagsoperation enables you to reference user attributes in your + * IAM permissions policy.

+ * @public + */ + PrincipalTags?: Record | undefined; +} +/** + *

Input to the ListIdentities action.

+ * @public + */ +export interface ListIdentitiesInput { + /** + *

An identity pool ID in the format REGION:GUID.

+ * @public + */ + IdentityPoolId: string | undefined; + /** + *

The maximum number of identities to return.

+ * @public + */ + MaxResults: number | undefined; + /** + *

A pagination token.

+ * @public + */ + NextToken?: string | undefined; + /** + *

An optional boolean parameter that allows you to hide disabled identities. If + * omitted, the ListIdentities API will include disabled identities in the response.

+ * @public + */ + HideDisabled?: boolean | undefined; +} +/** + *

The response to a ListIdentities request.

+ * @public + */ +export interface ListIdentitiesResponse { + /** + *

An identity pool ID in the format REGION:GUID.

+ * @public + */ + IdentityPoolId?: string | undefined; + /** + *

An object containing a set of identities and associated mappings.

+ * @public + */ + Identities?: IdentityDescription[] | undefined; + /** + *

A pagination token.

+ * @public + */ + NextToken?: string | undefined; +} +/** + *

Input to the ListIdentityPools action.

+ * @public + */ +export interface ListIdentityPoolsInput { + /** + *

The maximum number of identities to return.

+ * @public + */ + MaxResults: number | undefined; + /** + *

A pagination token.

+ * @public + */ + NextToken?: string | undefined; +} +/** + *

A description of the identity pool.

+ * @public + */ +export interface IdentityPoolShortDescription { + /** + *

An identity pool ID in the format REGION:GUID.

+ * @public + */ + IdentityPoolId?: string | undefined; + /** + *

A string that you provide.

+ * @public + */ + IdentityPoolName?: string | undefined; +} +/** + *

The result of a successful ListIdentityPools action.

+ * @public + */ +export interface ListIdentityPoolsResponse { + /** + *

The identity pools returned by the ListIdentityPools action.

+ * @public + */ + IdentityPools?: IdentityPoolShortDescription[] | undefined; + /** + *

A pagination token.

+ * @public + */ + NextToken?: string | undefined; +} +/** + * @public + */ +export interface ListTagsForResourceInput { + /** + *

The Amazon Resource Name (ARN) of the identity pool that the tags are assigned + * to.

+ * @public + */ + ResourceArn: string | undefined; +} +/** + * @public + */ +export interface ListTagsForResourceResponse { + /** + *

The tags that are assigned to the identity pool.

+ * @public + */ + Tags?: Record | undefined; +} +/** + *

Input to the LookupDeveloperIdentityInput action.

+ * @public + */ +export interface LookupDeveloperIdentityInput { + /** + *

An identity pool ID in the format REGION:GUID.

+ * @public + */ + IdentityPoolId: string | undefined; + /** + *

A unique identifier in the format REGION:GUID.

+ * @public + */ + IdentityId?: string | undefined; + /** + *

A unique ID used by your backend authentication process to identify a user. + * Typically, a developer identity provider would issue many developer user identifiers, in + * keeping with the number of users.

+ * @public + */ + DeveloperUserIdentifier?: string | undefined; + /** + *

The maximum number of identities to return.

+ * @public + */ + MaxResults?: number | undefined; + /** + *

A pagination token. The first call you make will have NextToken set to + * null. After that the service will return NextToken values as needed. For + * example, let's say you make a request with MaxResults set to 10, and there are + * 20 matches in the database. The service will return a pagination token as a part of the + * response. This token can be used to call the API again and get results starting from the + * 11th match.

+ * @public + */ + NextToken?: string | undefined; +} +/** + *

Returned in response to a successful LookupDeveloperIdentity + * action.

+ * @public + */ +export interface LookupDeveloperIdentityResponse { + /** + *

A unique identifier in the format REGION:GUID.

+ * @public + */ + IdentityId?: string | undefined; + /** + *

This is the list of developer user identifiers associated with an identity ID. + * Cognito supports the association of multiple developer user identifiers with an identity + * ID.

+ * @public + */ + DeveloperUserIdentifierList?: string[] | undefined; + /** + *

A pagination token. The first call you make will have NextToken set to + * null. After that the service will return NextToken values as needed. For + * example, let's say you make a request with MaxResults set to 10, and there are + * 20 matches in the database. The service will return a pagination token as a part of the + * response. This token can be used to call the API again and get results starting from the + * 11th match.

+ * @public + */ + NextToken?: string | undefined; +} +/** + *

Input to the MergeDeveloperIdentities action.

+ * @public + */ +export interface MergeDeveloperIdentitiesInput { + /** + *

User identifier for the source user. The value should be a + * DeveloperUserIdentifier.

+ * @public + */ + SourceUserIdentifier: string | undefined; + /** + *

User identifier for the destination user. The value should be a + * DeveloperUserIdentifier.

+ * @public + */ + DestinationUserIdentifier: string | undefined; + /** + *

The "domain" by which Cognito will refer to your users. This is a (pseudo) domain + * name that you provide while creating an identity pool. This name acts as a placeholder that + * allows your backend and the Cognito service to communicate about the developer provider. + * For the DeveloperProviderName, you can use letters as well as period (.), + * underscore (_), and dash (-).

+ * @public + */ + DeveloperProviderName: string | undefined; + /** + *

An identity pool ID in the format REGION:GUID.

+ * @public + */ + IdentityPoolId: string | undefined; +} +/** + *

Returned in response to a successful MergeDeveloperIdentities + * action.

+ * @public + */ +export interface MergeDeveloperIdentitiesResponse { + /** + *

A unique identifier in the format REGION:GUID.

+ * @public + */ + IdentityId?: string | undefined; +} +/** + *

Input to the SetIdentityPoolRoles action.

+ * @public + */ +export interface SetIdentityPoolRolesInput { + /** + *

An identity pool ID in the format REGION:GUID.

+ * @public + */ + IdentityPoolId: string | undefined; + /** + *

The map of roles associated with this pool. For a given role, the key will be either + * "authenticated" or "unauthenticated" and the value will be the Role ARN.

+ * @public + */ + Roles: Record | undefined; + /** + *

How users for a specific identity provider are to mapped to roles. This is a string + * to RoleMapping object map. The string identifies the identity provider, + * for example, graph.facebook.com or + * cognito-idp.us-east-1.amazonaws.com/us-east-1_abcdefghi:app_client_id.

+ *

Up to 25 rules can be specified per identity provider.

+ * @public + */ + RoleMappings?: Record | undefined; +} +/** + * @public + */ +export interface SetPrincipalTagAttributeMapInput { + /** + *

The ID of the Identity Pool you want to set attribute mappings for.

+ * @public + */ + IdentityPoolId: string | undefined; + /** + *

The provider name you want to use for attribute mappings.

+ * @public + */ + IdentityProviderName: string | undefined; + /** + *

You can use this operation to use default (username and clientID) attribute + * mappings.

+ * @public + */ + UseDefaults?: boolean | undefined; + /** + *

You can use this operation to add principal tags.

+ * @public + */ + PrincipalTags?: Record | undefined; +} +/** + * @public + */ +export interface SetPrincipalTagAttributeMapResponse { + /** + *

The ID of the Identity Pool you want to set attribute mappings for.

+ * @public + */ + IdentityPoolId?: string | undefined; + /** + *

The provider name you want to use for attribute mappings.

+ * @public + */ + IdentityProviderName?: string | undefined; + /** + *

You can use this operation to select default (username and clientID) attribute + * mappings.

+ * @public + */ + UseDefaults?: boolean | undefined; + /** + *

You can use this operation to add principal tags. The + * PrincipalTagsoperation enables you to reference user attributes in your + * IAM permissions policy.

+ * @public + */ + PrincipalTags?: Record | undefined; +} +/** + * @public + */ +export interface TagResourceInput { + /** + *

The Amazon Resource Name (ARN) of the identity pool.

+ * @public + */ + ResourceArn: string | undefined; + /** + *

The tags to assign to the identity pool.

+ * @public + */ + Tags: Record | undefined; +} +/** + * @public + */ +export interface TagResourceResponse { +} +/** + *

Input to the UnlinkDeveloperIdentity action.

+ * @public + */ +export interface UnlinkDeveloperIdentityInput { + /** + *

A unique identifier in the format REGION:GUID.

+ * @public + */ + IdentityId: string | undefined; + /** + *

An identity pool ID in the format REGION:GUID.

+ * @public + */ + IdentityPoolId: string | undefined; + /** + *

The "domain" by which Cognito will refer to your users.

+ * @public + */ + DeveloperProviderName: string | undefined; + /** + *

A unique ID used by your backend authentication process to identify a user.

+ * @public + */ + DeveloperUserIdentifier: string | undefined; +} +/** + *

Input to the UnlinkIdentity action.

+ * @public + */ +export interface UnlinkIdentityInput { + /** + *

A unique identifier in the format REGION:GUID.

+ * @public + */ + IdentityId: string | undefined; + /** + *

A set of optional name-value pairs that map provider names to provider + * tokens.

+ * @public + */ + Logins: Record | undefined; + /** + *

Provider names to unlink from this identity.

+ * @public + */ + LoginsToRemove: string[] | undefined; +} +/** + * @public + */ +export interface UntagResourceInput { + /** + *

The Amazon Resource Name (ARN) of the identity pool.

+ * @public + */ + ResourceArn: string | undefined; + /** + *

The keys of the tags to remove from the user pool.

+ * @public + */ + TagKeys: string[] | undefined; +} +/** + * @public + */ +export interface UntagResourceResponse { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/pagination/Interfaces.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/pagination/Interfaces.d.ts new file mode 100644 index 000000000..861258ae1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/pagination/Interfaces.d.ts @@ -0,0 +1,8 @@ +import type { PaginationConfiguration } from "@smithy/types"; +import { CognitoIdentityClient } from "../CognitoIdentityClient"; +/** + * @public + */ +export interface CognitoIdentityPaginationConfiguration extends PaginationConfiguration { + client: CognitoIdentityClient; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/pagination/ListIdentityPoolsPaginator.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/pagination/ListIdentityPoolsPaginator.d.ts new file mode 100644 index 000000000..02e52bade --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/pagination/ListIdentityPoolsPaginator.d.ts @@ -0,0 +1,7 @@ +import type { Paginator } from "@smithy/types"; +import { ListIdentityPoolsCommandInput, ListIdentityPoolsCommandOutput } from "../commands/ListIdentityPoolsCommand"; +import { CognitoIdentityPaginationConfiguration } from "./Interfaces"; +/** + * @public + */ +export declare const paginateListIdentityPools: (config: CognitoIdentityPaginationConfiguration, input: ListIdentityPoolsCommandInput, ...rest: any[]) => Paginator; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/pagination/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/pagination/index.d.ts new file mode 100644 index 000000000..c77b96c1d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/pagination/index.d.ts @@ -0,0 +1,2 @@ +export * from "./Interfaces"; +export * from "./ListIdentityPoolsPaginator"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/runtimeConfig.browser.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/runtimeConfig.browser.d.ts new file mode 100644 index 000000000..e11ceec52 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/runtimeConfig.browser.d.ts @@ -0,0 +1,63 @@ +import { FetchHttpHandler as RequestHandler } from "@smithy/fetch-http-handler"; +import type { CognitoIdentityClientConfig } from "./CognitoIdentityClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: CognitoIdentityClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + credentialDefaultProvider: ((input: any) => import("@smithy/types").AwsCredentialIdentityProvider) | ((_: unknown) => () => Promise); + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: import("@smithy/protocol-http").HttpHandler | RequestHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + cacheMiddleware?: boolean | undefined; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/core").AwsJson1_1Protocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: string | undefined | import("@smithy/types").Provider; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + })[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").CognitoIdentityHttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/runtimeConfig.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/runtimeConfig.d.ts new file mode 100644 index 000000000..f6abc180c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/runtimeConfig.d.ts @@ -0,0 +1,63 @@ +import { NodeHttpHandler as RequestHandler } from "@smithy/node-http-handler"; +import type { CognitoIdentityClientConfig } from "./CognitoIdentityClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: CognitoIdentityClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider; + authSchemePreference: string[] | import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + credentialDefaultProvider: ((input: any) => import("@smithy/types").AwsCredentialIdentityProvider) | ((init?: import("@aws-sdk/credential-provider-node").DefaultProviderInit) => import("@aws-sdk/credential-provider-node/dist-types/runtime/memoize-chain").MemoizedRuntimeConfigAwsCredentialIdentityProvider); + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-node").PreviouslyResolved) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: RequestHandler | import("@smithy/protocol-http").HttpHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: boolean | import("@smithy/types").Provider; + useFipsEndpoint: boolean | import("@smithy/types").Provider; + userAgentAppId: string | import("@smithy/types").Provider; + cacheMiddleware?: boolean | undefined; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/core").AwsJson1_1Protocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + })[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").CognitoIdentityHttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/runtimeConfig.native.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/runtimeConfig.native.d.ts new file mode 100644 index 000000000..6c4e2d064 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/runtimeConfig.native.d.ts @@ -0,0 +1,62 @@ +import type { CognitoIdentityClientConfig } from "./CognitoIdentityClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: CognitoIdentityClientConfig) => { + runtime: string; + sha256: import("@smithy/types").HashConstructor; + requestHandler: import("@smithy/types").NodeHttpHandlerOptions | import("@smithy/types").FetchHttpHandlerOptions | Record | import("@smithy/protocol-http").HttpHandler | import("@smithy/fetch-http-handler").FetchHttpHandler; + cacheMiddleware?: boolean; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/core").AwsJson1_1Protocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + streamCollector: import("@smithy/types").StreamCollector; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + region: string | import("@smithy/types").Provider; + profile?: string; + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved) => Promise; + credentialDefaultProvider: ((input: any) => import("@smithy/types").AwsCredentialIdentityProvider) | ((_: unknown) => () => Promise); + maxAttempts: number | import("@smithy/types").Provider; + retryMode: string | import("@smithy/types").Provider; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + defaultsMode: import("@smithy/smithy-client").DefaultsMode | import("@smithy/types").Provider; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: string | undefined | import("@smithy/types").Provider; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + })[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").CognitoIdentityHttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/runtimeConfig.shared.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/runtimeConfig.shared.d.ts new file mode 100644 index 000000000..4207a2b14 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/runtimeConfig.shared.d.ts @@ -0,0 +1,38 @@ +import { AwsSdkSigV4Signer } from "@aws-sdk/core"; +import { AwsJson1_1Protocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; +import type { IdentityProviderConfig } from "@smithy/types"; +import type { CognitoIdentityClientConfig } from "./CognitoIdentityClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: CognitoIdentityClientConfig) => { + apiVersion: string; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + disableHostPrefix: boolean; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").CognitoIdentityHttpAuthSchemeProvider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: NoAuthSigner; + })[]; + logger: import("@smithy/types").Logger; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof AwsJson1_1Protocol; + protocolSettings: { + [setting: string]: unknown; + defaultNamespace?: string; + }; + serviceId: string; + urlParser: import("@smithy/types").UrlParser; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/runtimeExtensions.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/runtimeExtensions.d.ts new file mode 100644 index 000000000..2a4d33efa --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/runtimeExtensions.d.ts @@ -0,0 +1,17 @@ +import type { CognitoIdentityExtensionConfiguration } from "./extensionConfiguration"; +/** + * @public + */ +export interface RuntimeExtension { + configure(extensionConfiguration: CognitoIdentityExtensionConfiguration): void; +} +/** + * @public + */ +export interface RuntimeExtensionsConfig { + extensions: RuntimeExtension[]; +} +/** + * @internal + */ +export declare const resolveRuntimeExtensions: (runtimeConfig: any, extensions: RuntimeExtension[]) => any; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/schemas/schemas_0.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/schemas/schemas_0.d.ts new file mode 100644 index 000000000..f43152438 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/schemas/schemas_0.d.ts @@ -0,0 +1,89 @@ +import { TypeRegistry } from "@smithy/core/schema"; +import type { StaticErrorSchema, StaticOperationSchema, StaticStructureSchema } from "@smithy/types"; +export declare var CognitoIdentityServiceException$: StaticErrorSchema; +export declare var ConcurrentModificationException$: StaticErrorSchema; +export declare var DeveloperUserAlreadyRegisteredException$: StaticErrorSchema; +export declare var ExternalServiceException$: StaticErrorSchema; +export declare var InternalErrorException$: StaticErrorSchema; +export declare var InvalidIdentityPoolConfigurationException$: StaticErrorSchema; +export declare var InvalidParameterException$: StaticErrorSchema; +export declare var LimitExceededException$: StaticErrorSchema; +export declare var NotAuthorizedException$: StaticErrorSchema; +export declare var ResourceConflictException$: StaticErrorSchema; +export declare var ResourceNotFoundException$: StaticErrorSchema; +export declare var TooManyRequestsException$: StaticErrorSchema; +/** + * TypeRegistry instances containing modeled errors. + * @internal + * + */ +export declare const errorTypeRegistries: TypeRegistry[]; +export declare var CognitoIdentityProvider$: StaticStructureSchema; +export declare var CreateIdentityPoolInput$: StaticStructureSchema; +export declare var Credentials$: StaticStructureSchema; +export declare var DeleteIdentitiesInput$: StaticStructureSchema; +export declare var DeleteIdentitiesResponse$: StaticStructureSchema; +export declare var DeleteIdentityPoolInput$: StaticStructureSchema; +export declare var DescribeIdentityInput$: StaticStructureSchema; +export declare var DescribeIdentityPoolInput$: StaticStructureSchema; +export declare var GetCredentialsForIdentityInput$: StaticStructureSchema; +export declare var GetCredentialsForIdentityResponse$: StaticStructureSchema; +export declare var GetIdentityPoolRolesInput$: StaticStructureSchema; +export declare var GetIdentityPoolRolesResponse$: StaticStructureSchema; +export declare var GetIdInput$: StaticStructureSchema; +export declare var GetIdResponse$: StaticStructureSchema; +export declare var GetOpenIdTokenForDeveloperIdentityInput$: StaticStructureSchema; +export declare var GetOpenIdTokenForDeveloperIdentityResponse$: StaticStructureSchema; +export declare var GetOpenIdTokenInput$: StaticStructureSchema; +export declare var GetOpenIdTokenResponse$: StaticStructureSchema; +export declare var GetPrincipalTagAttributeMapInput$: StaticStructureSchema; +export declare var GetPrincipalTagAttributeMapResponse$: StaticStructureSchema; +export declare var IdentityDescription$: StaticStructureSchema; +export declare var IdentityPool$: StaticStructureSchema; +export declare var IdentityPoolShortDescription$: StaticStructureSchema; +export declare var ListIdentitiesInput$: StaticStructureSchema; +export declare var ListIdentitiesResponse$: StaticStructureSchema; +export declare var ListIdentityPoolsInput$: StaticStructureSchema; +export declare var ListIdentityPoolsResponse$: StaticStructureSchema; +export declare var ListTagsForResourceInput$: StaticStructureSchema; +export declare var ListTagsForResourceResponse$: StaticStructureSchema; +export declare var LookupDeveloperIdentityInput$: StaticStructureSchema; +export declare var LookupDeveloperIdentityResponse$: StaticStructureSchema; +export declare var MappingRule$: StaticStructureSchema; +export declare var MergeDeveloperIdentitiesInput$: StaticStructureSchema; +export declare var MergeDeveloperIdentitiesResponse$: StaticStructureSchema; +export declare var RoleMapping$: StaticStructureSchema; +export declare var RulesConfigurationType$: StaticStructureSchema; +export declare var SetIdentityPoolRolesInput$: StaticStructureSchema; +export declare var SetPrincipalTagAttributeMapInput$: StaticStructureSchema; +export declare var SetPrincipalTagAttributeMapResponse$: StaticStructureSchema; +export declare var TagResourceInput$: StaticStructureSchema; +export declare var TagResourceResponse$: StaticStructureSchema; +export declare var UnlinkDeveloperIdentityInput$: StaticStructureSchema; +export declare var UnlinkIdentityInput$: StaticStructureSchema; +export declare var UnprocessedIdentityId$: StaticStructureSchema; +export declare var UntagResourceInput$: StaticStructureSchema; +export declare var UntagResourceResponse$: StaticStructureSchema; +export declare var CreateIdentityPool$: StaticOperationSchema; +export declare var DeleteIdentities$: StaticOperationSchema; +export declare var DeleteIdentityPool$: StaticOperationSchema; +export declare var DescribeIdentity$: StaticOperationSchema; +export declare var DescribeIdentityPool$: StaticOperationSchema; +export declare var GetCredentialsForIdentity$: StaticOperationSchema; +export declare var GetId$: StaticOperationSchema; +export declare var GetIdentityPoolRoles$: StaticOperationSchema; +export declare var GetOpenIdToken$: StaticOperationSchema; +export declare var GetOpenIdTokenForDeveloperIdentity$: StaticOperationSchema; +export declare var GetPrincipalTagAttributeMap$: StaticOperationSchema; +export declare var ListIdentities$: StaticOperationSchema; +export declare var ListIdentityPools$: StaticOperationSchema; +export declare var ListTagsForResource$: StaticOperationSchema; +export declare var LookupDeveloperIdentity$: StaticOperationSchema; +export declare var MergeDeveloperIdentities$: StaticOperationSchema; +export declare var SetIdentityPoolRoles$: StaticOperationSchema; +export declare var SetPrincipalTagAttributeMap$: StaticOperationSchema; +export declare var TagResource$: StaticOperationSchema; +export declare var UnlinkDeveloperIdentity$: StaticOperationSchema; +export declare var UnlinkIdentity$: StaticOperationSchema; +export declare var UntagResource$: StaticOperationSchema; +export declare var UpdateIdentityPool$: StaticOperationSchema; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/CognitoIdentity.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/CognitoIdentity.d.ts new file mode 100644 index 000000000..dc9129b85 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/CognitoIdentity.d.ts @@ -0,0 +1,412 @@ +import { + HttpHandlerOptions as __HttpHandlerOptions, + PaginationConfiguration, + Paginator, +} from "@smithy/types"; +import { CognitoIdentityClient } from "./CognitoIdentityClient"; +import { + CreateIdentityPoolCommandInput, + CreateIdentityPoolCommandOutput, +} from "./commands/CreateIdentityPoolCommand"; +import { + DeleteIdentitiesCommandInput, + DeleteIdentitiesCommandOutput, +} from "./commands/DeleteIdentitiesCommand"; +import { + DeleteIdentityPoolCommandInput, + DeleteIdentityPoolCommandOutput, +} from "./commands/DeleteIdentityPoolCommand"; +import { + DescribeIdentityCommandInput, + DescribeIdentityCommandOutput, +} from "./commands/DescribeIdentityCommand"; +import { + DescribeIdentityPoolCommandInput, + DescribeIdentityPoolCommandOutput, +} from "./commands/DescribeIdentityPoolCommand"; +import { + GetCredentialsForIdentityCommandInput, + GetCredentialsForIdentityCommandOutput, +} from "./commands/GetCredentialsForIdentityCommand"; +import { GetIdCommandInput, GetIdCommandOutput } from "./commands/GetIdCommand"; +import { + GetIdentityPoolRolesCommandInput, + GetIdentityPoolRolesCommandOutput, +} from "./commands/GetIdentityPoolRolesCommand"; +import { + GetOpenIdTokenCommandInput, + GetOpenIdTokenCommandOutput, +} from "./commands/GetOpenIdTokenCommand"; +import { + GetOpenIdTokenForDeveloperIdentityCommandInput, + GetOpenIdTokenForDeveloperIdentityCommandOutput, +} from "./commands/GetOpenIdTokenForDeveloperIdentityCommand"; +import { + GetPrincipalTagAttributeMapCommandInput, + GetPrincipalTagAttributeMapCommandOutput, +} from "./commands/GetPrincipalTagAttributeMapCommand"; +import { + ListIdentitiesCommandInput, + ListIdentitiesCommandOutput, +} from "./commands/ListIdentitiesCommand"; +import { + ListIdentityPoolsCommandInput, + ListIdentityPoolsCommandOutput, +} from "./commands/ListIdentityPoolsCommand"; +import { + ListTagsForResourceCommandInput, + ListTagsForResourceCommandOutput, +} from "./commands/ListTagsForResourceCommand"; +import { + LookupDeveloperIdentityCommandInput, + LookupDeveloperIdentityCommandOutput, +} from "./commands/LookupDeveloperIdentityCommand"; +import { + MergeDeveloperIdentitiesCommandInput, + MergeDeveloperIdentitiesCommandOutput, +} from "./commands/MergeDeveloperIdentitiesCommand"; +import { + SetIdentityPoolRolesCommandInput, + SetIdentityPoolRolesCommandOutput, +} from "./commands/SetIdentityPoolRolesCommand"; +import { + SetPrincipalTagAttributeMapCommandInput, + SetPrincipalTagAttributeMapCommandOutput, +} from "./commands/SetPrincipalTagAttributeMapCommand"; +import { + TagResourceCommandInput, + TagResourceCommandOutput, +} from "./commands/TagResourceCommand"; +import { + UnlinkDeveloperIdentityCommandInput, + UnlinkDeveloperIdentityCommandOutput, +} from "./commands/UnlinkDeveloperIdentityCommand"; +import { + UnlinkIdentityCommandInput, + UnlinkIdentityCommandOutput, +} from "./commands/UnlinkIdentityCommand"; +import { + UntagResourceCommandInput, + UntagResourceCommandOutput, +} from "./commands/UntagResourceCommand"; +import { + UpdateIdentityPoolCommandInput, + UpdateIdentityPoolCommandOutput, +} from "./commands/UpdateIdentityPoolCommand"; +export interface CognitoIdentity { + createIdentityPool( + args: CreateIdentityPoolCommandInput, + options?: __HttpHandlerOptions + ): Promise; + createIdentityPool( + args: CreateIdentityPoolCommandInput, + cb: (err: any, data?: CreateIdentityPoolCommandOutput) => void + ): void; + createIdentityPool( + args: CreateIdentityPoolCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: CreateIdentityPoolCommandOutput) => void + ): void; + deleteIdentities( + args: DeleteIdentitiesCommandInput, + options?: __HttpHandlerOptions + ): Promise; + deleteIdentities( + args: DeleteIdentitiesCommandInput, + cb: (err: any, data?: DeleteIdentitiesCommandOutput) => void + ): void; + deleteIdentities( + args: DeleteIdentitiesCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: DeleteIdentitiesCommandOutput) => void + ): void; + deleteIdentityPool( + args: DeleteIdentityPoolCommandInput, + options?: __HttpHandlerOptions + ): Promise; + deleteIdentityPool( + args: DeleteIdentityPoolCommandInput, + cb: (err: any, data?: DeleteIdentityPoolCommandOutput) => void + ): void; + deleteIdentityPool( + args: DeleteIdentityPoolCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: DeleteIdentityPoolCommandOutput) => void + ): void; + describeIdentity( + args: DescribeIdentityCommandInput, + options?: __HttpHandlerOptions + ): Promise; + describeIdentity( + args: DescribeIdentityCommandInput, + cb: (err: any, data?: DescribeIdentityCommandOutput) => void + ): void; + describeIdentity( + args: DescribeIdentityCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: DescribeIdentityCommandOutput) => void + ): void; + describeIdentityPool( + args: DescribeIdentityPoolCommandInput, + options?: __HttpHandlerOptions + ): Promise; + describeIdentityPool( + args: DescribeIdentityPoolCommandInput, + cb: (err: any, data?: DescribeIdentityPoolCommandOutput) => void + ): void; + describeIdentityPool( + args: DescribeIdentityPoolCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: DescribeIdentityPoolCommandOutput) => void + ): void; + getCredentialsForIdentity( + args: GetCredentialsForIdentityCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getCredentialsForIdentity( + args: GetCredentialsForIdentityCommandInput, + cb: (err: any, data?: GetCredentialsForIdentityCommandOutput) => void + ): void; + getCredentialsForIdentity( + args: GetCredentialsForIdentityCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetCredentialsForIdentityCommandOutput) => void + ): void; + getId( + args: GetIdCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getId( + args: GetIdCommandInput, + cb: (err: any, data?: GetIdCommandOutput) => void + ): void; + getId( + args: GetIdCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetIdCommandOutput) => void + ): void; + getIdentityPoolRoles( + args: GetIdentityPoolRolesCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getIdentityPoolRoles( + args: GetIdentityPoolRolesCommandInput, + cb: (err: any, data?: GetIdentityPoolRolesCommandOutput) => void + ): void; + getIdentityPoolRoles( + args: GetIdentityPoolRolesCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetIdentityPoolRolesCommandOutput) => void + ): void; + getOpenIdToken( + args: GetOpenIdTokenCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getOpenIdToken( + args: GetOpenIdTokenCommandInput, + cb: (err: any, data?: GetOpenIdTokenCommandOutput) => void + ): void; + getOpenIdToken( + args: GetOpenIdTokenCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetOpenIdTokenCommandOutput) => void + ): void; + getOpenIdTokenForDeveloperIdentity( + args: GetOpenIdTokenForDeveloperIdentityCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getOpenIdTokenForDeveloperIdentity( + args: GetOpenIdTokenForDeveloperIdentityCommandInput, + cb: ( + err: any, + data?: GetOpenIdTokenForDeveloperIdentityCommandOutput + ) => void + ): void; + getOpenIdTokenForDeveloperIdentity( + args: GetOpenIdTokenForDeveloperIdentityCommandInput, + options: __HttpHandlerOptions, + cb: ( + err: any, + data?: GetOpenIdTokenForDeveloperIdentityCommandOutput + ) => void + ): void; + getPrincipalTagAttributeMap( + args: GetPrincipalTagAttributeMapCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getPrincipalTagAttributeMap( + args: GetPrincipalTagAttributeMapCommandInput, + cb: (err: any, data?: GetPrincipalTagAttributeMapCommandOutput) => void + ): void; + getPrincipalTagAttributeMap( + args: GetPrincipalTagAttributeMapCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetPrincipalTagAttributeMapCommandOutput) => void + ): void; + listIdentities( + args: ListIdentitiesCommandInput, + options?: __HttpHandlerOptions + ): Promise; + listIdentities( + args: ListIdentitiesCommandInput, + cb: (err: any, data?: ListIdentitiesCommandOutput) => void + ): void; + listIdentities( + args: ListIdentitiesCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: ListIdentitiesCommandOutput) => void + ): void; + listIdentityPools( + args: ListIdentityPoolsCommandInput, + options?: __HttpHandlerOptions + ): Promise; + listIdentityPools( + args: ListIdentityPoolsCommandInput, + cb: (err: any, data?: ListIdentityPoolsCommandOutput) => void + ): void; + listIdentityPools( + args: ListIdentityPoolsCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: ListIdentityPoolsCommandOutput) => void + ): void; + listTagsForResource( + args: ListTagsForResourceCommandInput, + options?: __HttpHandlerOptions + ): Promise; + listTagsForResource( + args: ListTagsForResourceCommandInput, + cb: (err: any, data?: ListTagsForResourceCommandOutput) => void + ): void; + listTagsForResource( + args: ListTagsForResourceCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: ListTagsForResourceCommandOutput) => void + ): void; + lookupDeveloperIdentity( + args: LookupDeveloperIdentityCommandInput, + options?: __HttpHandlerOptions + ): Promise; + lookupDeveloperIdentity( + args: LookupDeveloperIdentityCommandInput, + cb: (err: any, data?: LookupDeveloperIdentityCommandOutput) => void + ): void; + lookupDeveloperIdentity( + args: LookupDeveloperIdentityCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: LookupDeveloperIdentityCommandOutput) => void + ): void; + mergeDeveloperIdentities( + args: MergeDeveloperIdentitiesCommandInput, + options?: __HttpHandlerOptions + ): Promise; + mergeDeveloperIdentities( + args: MergeDeveloperIdentitiesCommandInput, + cb: (err: any, data?: MergeDeveloperIdentitiesCommandOutput) => void + ): void; + mergeDeveloperIdentities( + args: MergeDeveloperIdentitiesCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: MergeDeveloperIdentitiesCommandOutput) => void + ): void; + setIdentityPoolRoles( + args: SetIdentityPoolRolesCommandInput, + options?: __HttpHandlerOptions + ): Promise; + setIdentityPoolRoles( + args: SetIdentityPoolRolesCommandInput, + cb: (err: any, data?: SetIdentityPoolRolesCommandOutput) => void + ): void; + setIdentityPoolRoles( + args: SetIdentityPoolRolesCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: SetIdentityPoolRolesCommandOutput) => void + ): void; + setPrincipalTagAttributeMap( + args: SetPrincipalTagAttributeMapCommandInput, + options?: __HttpHandlerOptions + ): Promise; + setPrincipalTagAttributeMap( + args: SetPrincipalTagAttributeMapCommandInput, + cb: (err: any, data?: SetPrincipalTagAttributeMapCommandOutput) => void + ): void; + setPrincipalTagAttributeMap( + args: SetPrincipalTagAttributeMapCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: SetPrincipalTagAttributeMapCommandOutput) => void + ): void; + tagResource( + args: TagResourceCommandInput, + options?: __HttpHandlerOptions + ): Promise; + tagResource( + args: TagResourceCommandInput, + cb: (err: any, data?: TagResourceCommandOutput) => void + ): void; + tagResource( + args: TagResourceCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: TagResourceCommandOutput) => void + ): void; + unlinkDeveloperIdentity( + args: UnlinkDeveloperIdentityCommandInput, + options?: __HttpHandlerOptions + ): Promise; + unlinkDeveloperIdentity( + args: UnlinkDeveloperIdentityCommandInput, + cb: (err: any, data?: UnlinkDeveloperIdentityCommandOutput) => void + ): void; + unlinkDeveloperIdentity( + args: UnlinkDeveloperIdentityCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: UnlinkDeveloperIdentityCommandOutput) => void + ): void; + unlinkIdentity( + args: UnlinkIdentityCommandInput, + options?: __HttpHandlerOptions + ): Promise; + unlinkIdentity( + args: UnlinkIdentityCommandInput, + cb: (err: any, data?: UnlinkIdentityCommandOutput) => void + ): void; + unlinkIdentity( + args: UnlinkIdentityCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: UnlinkIdentityCommandOutput) => void + ): void; + untagResource( + args: UntagResourceCommandInput, + options?: __HttpHandlerOptions + ): Promise; + untagResource( + args: UntagResourceCommandInput, + cb: (err: any, data?: UntagResourceCommandOutput) => void + ): void; + untagResource( + args: UntagResourceCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: UntagResourceCommandOutput) => void + ): void; + updateIdentityPool( + args: UpdateIdentityPoolCommandInput, + options?: __HttpHandlerOptions + ): Promise; + updateIdentityPool( + args: UpdateIdentityPoolCommandInput, + cb: (err: any, data?: UpdateIdentityPoolCommandOutput) => void + ): void; + updateIdentityPool( + args: UpdateIdentityPoolCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: UpdateIdentityPoolCommandOutput) => void + ): void; + paginateListIdentityPools( + args: ListIdentityPoolsCommandInput, + paginationConfig?: Pick< + PaginationConfiguration, + Exclude + > + ): Paginator; +} +export declare class CognitoIdentity + extends CognitoIdentityClient + implements CognitoIdentity {} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/CognitoIdentityClient.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/CognitoIdentityClient.d.ts new file mode 100644 index 000000000..e35c6b762 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/CognitoIdentityClient.d.ts @@ -0,0 +1,255 @@ +import { + HostHeaderInputConfig, + HostHeaderResolvedConfig, +} from "@aws-sdk/middleware-host-header"; +import { + UserAgentInputConfig, + UserAgentResolvedConfig, +} from "@aws-sdk/middleware-user-agent"; +import { + RegionInputConfig, + RegionResolvedConfig, +} from "@smithy/config-resolver"; +import { + EndpointInputConfig, + EndpointResolvedConfig, +} from "@smithy/middleware-endpoint"; +import { + RetryInputConfig, + RetryResolvedConfig, +} from "@smithy/middleware-retry"; +import { HttpHandlerUserInput as __HttpHandlerUserInput } from "@smithy/protocol-http"; +import { + DefaultsMode as __DefaultsMode, + SmithyConfiguration as __SmithyConfiguration, + SmithyResolvedConfiguration as __SmithyResolvedConfiguration, + Client as __Client, +} from "@smithy/smithy-client"; +import { + BodyLengthCalculator as __BodyLengthCalculator, + CheckOptionalClientConfig as __CheckOptionalClientConfig, + ChecksumConstructor as __ChecksumConstructor, + Decoder as __Decoder, + Encoder as __Encoder, + HashConstructor as __HashConstructor, + HttpHandlerOptions as __HttpHandlerOptions, + Logger as __Logger, + Provider as __Provider, + StreamCollector as __StreamCollector, + UrlParser as __UrlParser, + AwsCredentialIdentityProvider, + Provider, + UserAgent as __UserAgent, +} from "@smithy/types"; +import { + HttpAuthSchemeInputConfig, + HttpAuthSchemeResolvedConfig, +} from "./auth/httpAuthSchemeProvider"; +import { + CreateIdentityPoolCommandInput, + CreateIdentityPoolCommandOutput, +} from "./commands/CreateIdentityPoolCommand"; +import { + DeleteIdentitiesCommandInput, + DeleteIdentitiesCommandOutput, +} from "./commands/DeleteIdentitiesCommand"; +import { + DeleteIdentityPoolCommandInput, + DeleteIdentityPoolCommandOutput, +} from "./commands/DeleteIdentityPoolCommand"; +import { + DescribeIdentityCommandInput, + DescribeIdentityCommandOutput, +} from "./commands/DescribeIdentityCommand"; +import { + DescribeIdentityPoolCommandInput, + DescribeIdentityPoolCommandOutput, +} from "./commands/DescribeIdentityPoolCommand"; +import { + GetCredentialsForIdentityCommandInput, + GetCredentialsForIdentityCommandOutput, +} from "./commands/GetCredentialsForIdentityCommand"; +import { GetIdCommandInput, GetIdCommandOutput } from "./commands/GetIdCommand"; +import { + GetIdentityPoolRolesCommandInput, + GetIdentityPoolRolesCommandOutput, +} from "./commands/GetIdentityPoolRolesCommand"; +import { + GetOpenIdTokenCommandInput, + GetOpenIdTokenCommandOutput, +} from "./commands/GetOpenIdTokenCommand"; +import { + GetOpenIdTokenForDeveloperIdentityCommandInput, + GetOpenIdTokenForDeveloperIdentityCommandOutput, +} from "./commands/GetOpenIdTokenForDeveloperIdentityCommand"; +import { + GetPrincipalTagAttributeMapCommandInput, + GetPrincipalTagAttributeMapCommandOutput, +} from "./commands/GetPrincipalTagAttributeMapCommand"; +import { + ListIdentitiesCommandInput, + ListIdentitiesCommandOutput, +} from "./commands/ListIdentitiesCommand"; +import { + ListIdentityPoolsCommandInput, + ListIdentityPoolsCommandOutput, +} from "./commands/ListIdentityPoolsCommand"; +import { + ListTagsForResourceCommandInput, + ListTagsForResourceCommandOutput, +} from "./commands/ListTagsForResourceCommand"; +import { + LookupDeveloperIdentityCommandInput, + LookupDeveloperIdentityCommandOutput, +} from "./commands/LookupDeveloperIdentityCommand"; +import { + MergeDeveloperIdentitiesCommandInput, + MergeDeveloperIdentitiesCommandOutput, +} from "./commands/MergeDeveloperIdentitiesCommand"; +import { + SetIdentityPoolRolesCommandInput, + SetIdentityPoolRolesCommandOutput, +} from "./commands/SetIdentityPoolRolesCommand"; +import { + SetPrincipalTagAttributeMapCommandInput, + SetPrincipalTagAttributeMapCommandOutput, +} from "./commands/SetPrincipalTagAttributeMapCommand"; +import { + TagResourceCommandInput, + TagResourceCommandOutput, +} from "./commands/TagResourceCommand"; +import { + UnlinkDeveloperIdentityCommandInput, + UnlinkDeveloperIdentityCommandOutput, +} from "./commands/UnlinkDeveloperIdentityCommand"; +import { + UnlinkIdentityCommandInput, + UnlinkIdentityCommandOutput, +} from "./commands/UnlinkIdentityCommand"; +import { + UntagResourceCommandInput, + UntagResourceCommandOutput, +} from "./commands/UntagResourceCommand"; +import { + UpdateIdentityPoolCommandInput, + UpdateIdentityPoolCommandOutput, +} from "./commands/UpdateIdentityPoolCommand"; +import { + ClientInputEndpointParameters, + ClientResolvedEndpointParameters, + EndpointParameters, +} from "./endpoint/EndpointParameters"; +import { RuntimeExtension, RuntimeExtensionsConfig } from "./runtimeExtensions"; +export { __Client }; +export type ServiceInputTypes = + | CreateIdentityPoolCommandInput + | DeleteIdentitiesCommandInput + | DeleteIdentityPoolCommandInput + | DescribeIdentityCommandInput + | DescribeIdentityPoolCommandInput + | GetCredentialsForIdentityCommandInput + | GetIdCommandInput + | GetIdentityPoolRolesCommandInput + | GetOpenIdTokenCommandInput + | GetOpenIdTokenForDeveloperIdentityCommandInput + | GetPrincipalTagAttributeMapCommandInput + | ListIdentitiesCommandInput + | ListIdentityPoolsCommandInput + | ListTagsForResourceCommandInput + | LookupDeveloperIdentityCommandInput + | MergeDeveloperIdentitiesCommandInput + | SetIdentityPoolRolesCommandInput + | SetPrincipalTagAttributeMapCommandInput + | TagResourceCommandInput + | UnlinkDeveloperIdentityCommandInput + | UnlinkIdentityCommandInput + | UntagResourceCommandInput + | UpdateIdentityPoolCommandInput; +export type ServiceOutputTypes = + | CreateIdentityPoolCommandOutput + | DeleteIdentitiesCommandOutput + | DeleteIdentityPoolCommandOutput + | DescribeIdentityCommandOutput + | DescribeIdentityPoolCommandOutput + | GetCredentialsForIdentityCommandOutput + | GetIdCommandOutput + | GetIdentityPoolRolesCommandOutput + | GetOpenIdTokenCommandOutput + | GetOpenIdTokenForDeveloperIdentityCommandOutput + | GetPrincipalTagAttributeMapCommandOutput + | ListIdentitiesCommandOutput + | ListIdentityPoolsCommandOutput + | ListTagsForResourceCommandOutput + | LookupDeveloperIdentityCommandOutput + | MergeDeveloperIdentitiesCommandOutput + | SetIdentityPoolRolesCommandOutput + | SetPrincipalTagAttributeMapCommandOutput + | TagResourceCommandOutput + | UnlinkDeveloperIdentityCommandOutput + | UnlinkIdentityCommandOutput + | UntagResourceCommandOutput + | UpdateIdentityPoolCommandOutput; +export interface ClientDefaults + extends Partial<__SmithyConfiguration<__HttpHandlerOptions>> { + requestHandler?: __HttpHandlerUserInput; + sha256?: __ChecksumConstructor | __HashConstructor; + urlParser?: __UrlParser; + bodyLengthChecker?: __BodyLengthCalculator; + streamCollector?: __StreamCollector; + base64Decoder?: __Decoder; + base64Encoder?: __Encoder; + utf8Decoder?: __Decoder; + utf8Encoder?: __Encoder; + runtime?: string; + disableHostPrefix?: boolean; + serviceId?: string; + useDualstackEndpoint?: boolean | __Provider; + useFipsEndpoint?: boolean | __Provider; + region?: string | __Provider; + profile?: string; + defaultUserAgentProvider?: Provider<__UserAgent>; + credentialDefaultProvider?: (input: any) => AwsCredentialIdentityProvider; + maxAttempts?: number | __Provider; + retryMode?: string | __Provider; + logger?: __Logger; + extensions?: RuntimeExtension[]; + defaultsMode?: __DefaultsMode | __Provider<__DefaultsMode>; +} +export type CognitoIdentityClientConfigType = Partial< + __SmithyConfiguration<__HttpHandlerOptions> +> & + ClientDefaults & + UserAgentInputConfig & + RetryInputConfig & + RegionInputConfig & + HostHeaderInputConfig & + EndpointInputConfig & + HttpAuthSchemeInputConfig & + ClientInputEndpointParameters; +export interface CognitoIdentityClientConfig + extends CognitoIdentityClientConfigType {} +export type CognitoIdentityClientResolvedConfigType = + __SmithyResolvedConfiguration<__HttpHandlerOptions> & + Required & + RuntimeExtensionsConfig & + UserAgentResolvedConfig & + RetryResolvedConfig & + RegionResolvedConfig & + HostHeaderResolvedConfig & + EndpointResolvedConfig & + HttpAuthSchemeResolvedConfig & + ClientResolvedEndpointParameters; +export interface CognitoIdentityClientResolvedConfig + extends CognitoIdentityClientResolvedConfigType {} +export declare class CognitoIdentityClient extends __Client< + __HttpHandlerOptions, + ServiceInputTypes, + ServiceOutputTypes, + CognitoIdentityClientResolvedConfig +> { + readonly config: CognitoIdentityClientResolvedConfig; + constructor( + ...[configuration]: __CheckOptionalClientConfig + ); + destroy(): void; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/auth/httpAuthExtensionConfiguration.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/auth/httpAuthExtensionConfiguration.d.ts new file mode 100644 index 000000000..9d2386395 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/auth/httpAuthExtensionConfiguration.d.ts @@ -0,0 +1,32 @@ +import { + HttpAuthScheme, + AwsCredentialIdentity, + AwsCredentialIdentityProvider, +} from "@smithy/types"; +import { CognitoIdentityHttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; +export interface HttpAuthExtensionConfiguration { + setHttpAuthScheme(httpAuthScheme: HttpAuthScheme): void; + httpAuthSchemes(): HttpAuthScheme[]; + setHttpAuthSchemeProvider( + httpAuthSchemeProvider: CognitoIdentityHttpAuthSchemeProvider + ): void; + httpAuthSchemeProvider(): CognitoIdentityHttpAuthSchemeProvider; + setCredentials( + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider + ): void; + credentials(): + | AwsCredentialIdentity + | AwsCredentialIdentityProvider + | undefined; +} +export type HttpAuthRuntimeConfig = Partial<{ + httpAuthSchemes: HttpAuthScheme[]; + httpAuthSchemeProvider: CognitoIdentityHttpAuthSchemeProvider; + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider; +}>; +export declare const getHttpAuthExtensionConfiguration: ( + runtimeConfig: HttpAuthRuntimeConfig +) => HttpAuthExtensionConfiguration; +export declare const resolveHttpAuthRuntimeConfig: ( + config: HttpAuthExtensionConfiguration +) => HttpAuthRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/auth/httpAuthSchemeProvider.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/auth/httpAuthSchemeProvider.d.ts new file mode 100644 index 000000000..8b4bb087d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/auth/httpAuthSchemeProvider.d.ts @@ -0,0 +1,47 @@ +import { + AwsSdkSigV4AuthInputConfig, + AwsSdkSigV4AuthResolvedConfig, + AwsSdkSigV4PreviouslyResolved, +} from "@aws-sdk/core"; +import { + HandlerExecutionContext, + HttpAuthScheme, + HttpAuthSchemeParameters, + HttpAuthSchemeParametersProvider, + HttpAuthSchemeProvider, + Provider, +} from "@smithy/types"; +import { CognitoIdentityClientResolvedConfig } from "../CognitoIdentityClient"; +export interface CognitoIdentityHttpAuthSchemeParameters + extends HttpAuthSchemeParameters { + region?: string; +} +export interface CognitoIdentityHttpAuthSchemeParametersProvider + extends HttpAuthSchemeParametersProvider< + CognitoIdentityClientResolvedConfig, + HandlerExecutionContext, + CognitoIdentityHttpAuthSchemeParameters, + object + > {} +export declare const defaultCognitoIdentityHttpAuthSchemeParametersProvider: ( + config: CognitoIdentityClientResolvedConfig, + context: HandlerExecutionContext, + input: object +) => Promise; +export interface CognitoIdentityHttpAuthSchemeProvider + extends HttpAuthSchemeProvider {} +export declare const defaultCognitoIdentityHttpAuthSchemeProvider: CognitoIdentityHttpAuthSchemeProvider; +export interface HttpAuthSchemeInputConfig extends AwsSdkSigV4AuthInputConfig { + authSchemePreference?: string[] | Provider; + httpAuthSchemes?: HttpAuthScheme[]; + httpAuthSchemeProvider?: CognitoIdentityHttpAuthSchemeProvider; +} +export interface HttpAuthSchemeResolvedConfig + extends AwsSdkSigV4AuthResolvedConfig { + readonly authSchemePreference: Provider; + readonly httpAuthSchemes: HttpAuthScheme[]; + readonly httpAuthSchemeProvider: CognitoIdentityHttpAuthSchemeProvider; +} +export declare const resolveHttpAuthSchemeConfig: ( + config: T & HttpAuthSchemeInputConfig & AwsSdkSigV4PreviouslyResolved +) => T & HttpAuthSchemeResolvedConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/CreateIdentityPoolCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/CreateIdentityPoolCommand.d.ts new file mode 100644 index 000000000..89f715875 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/CreateIdentityPoolCommand.d.ts @@ -0,0 +1,48 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../CognitoIdentityClient"; +import { CreateIdentityPoolInput, IdentityPool } from "../models/models_0"; +export { __MetadataBearer }; +export { $Command }; +export interface CreateIdentityPoolCommandInput + extends CreateIdentityPoolInput {} +export interface CreateIdentityPoolCommandOutput + extends IdentityPool, + __MetadataBearer {} +declare const CreateIdentityPoolCommand_base: { + new ( + input: CreateIdentityPoolCommandInput + ): import("@smithy/smithy-client").CommandImpl< + CreateIdentityPoolCommandInput, + CreateIdentityPoolCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: CreateIdentityPoolCommandInput + ): import("@smithy/smithy-client").CommandImpl< + CreateIdentityPoolCommandInput, + CreateIdentityPoolCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class CreateIdentityPoolCommand extends CreateIdentityPoolCommand_base { + protected static __types: { + api: { + input: CreateIdentityPoolInput; + output: IdentityPool; + }; + sdk: { + input: CreateIdentityPoolCommandInput; + output: CreateIdentityPoolCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/DeleteIdentitiesCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/DeleteIdentitiesCommand.d.ts new file mode 100644 index 000000000..672bfeca8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/DeleteIdentitiesCommand.d.ts @@ -0,0 +1,50 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../CognitoIdentityClient"; +import { + DeleteIdentitiesInput, + DeleteIdentitiesResponse, +} from "../models/models_0"; +export { __MetadataBearer }; +export { $Command }; +export interface DeleteIdentitiesCommandInput extends DeleteIdentitiesInput {} +export interface DeleteIdentitiesCommandOutput + extends DeleteIdentitiesResponse, + __MetadataBearer {} +declare const DeleteIdentitiesCommand_base: { + new ( + input: DeleteIdentitiesCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteIdentitiesCommandInput, + DeleteIdentitiesCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: DeleteIdentitiesCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteIdentitiesCommandInput, + DeleteIdentitiesCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class DeleteIdentitiesCommand extends DeleteIdentitiesCommand_base { + protected static __types: { + api: { + input: DeleteIdentitiesInput; + output: DeleteIdentitiesResponse; + }; + sdk: { + input: DeleteIdentitiesCommandInput; + output: DeleteIdentitiesCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/DeleteIdentityPoolCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/DeleteIdentityPoolCommand.d.ts new file mode 100644 index 000000000..5f46d6caa --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/DeleteIdentityPoolCommand.d.ts @@ -0,0 +1,46 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../CognitoIdentityClient"; +import { DeleteIdentityPoolInput } from "../models/models_0"; +export { __MetadataBearer }; +export { $Command }; +export interface DeleteIdentityPoolCommandInput + extends DeleteIdentityPoolInput {} +export interface DeleteIdentityPoolCommandOutput extends __MetadataBearer {} +declare const DeleteIdentityPoolCommand_base: { + new ( + input: DeleteIdentityPoolCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteIdentityPoolCommandInput, + DeleteIdentityPoolCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: DeleteIdentityPoolCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteIdentityPoolCommandInput, + DeleteIdentityPoolCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class DeleteIdentityPoolCommand extends DeleteIdentityPoolCommand_base { + protected static __types: { + api: { + input: DeleteIdentityPoolInput; + output: {}; + }; + sdk: { + input: DeleteIdentityPoolCommandInput; + output: DeleteIdentityPoolCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/DescribeIdentityCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/DescribeIdentityCommand.d.ts new file mode 100644 index 000000000..f8f118da0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/DescribeIdentityCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../CognitoIdentityClient"; +import { DescribeIdentityInput, IdentityDescription } from "../models/models_0"; +export { __MetadataBearer }; +export { $Command }; +export interface DescribeIdentityCommandInput extends DescribeIdentityInput {} +export interface DescribeIdentityCommandOutput + extends IdentityDescription, + __MetadataBearer {} +declare const DescribeIdentityCommand_base: { + new ( + input: DescribeIdentityCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DescribeIdentityCommandInput, + DescribeIdentityCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: DescribeIdentityCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DescribeIdentityCommandInput, + DescribeIdentityCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class DescribeIdentityCommand extends DescribeIdentityCommand_base { + protected static __types: { + api: { + input: DescribeIdentityInput; + output: IdentityDescription; + }; + sdk: { + input: DescribeIdentityCommandInput; + output: DescribeIdentityCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/DescribeIdentityPoolCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/DescribeIdentityPoolCommand.d.ts new file mode 100644 index 000000000..8cdc128a8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/DescribeIdentityPoolCommand.d.ts @@ -0,0 +1,48 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../CognitoIdentityClient"; +import { DescribeIdentityPoolInput, IdentityPool } from "../models/models_0"; +export { __MetadataBearer }; +export { $Command }; +export interface DescribeIdentityPoolCommandInput + extends DescribeIdentityPoolInput {} +export interface DescribeIdentityPoolCommandOutput + extends IdentityPool, + __MetadataBearer {} +declare const DescribeIdentityPoolCommand_base: { + new ( + input: DescribeIdentityPoolCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DescribeIdentityPoolCommandInput, + DescribeIdentityPoolCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: DescribeIdentityPoolCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DescribeIdentityPoolCommandInput, + DescribeIdentityPoolCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class DescribeIdentityPoolCommand extends DescribeIdentityPoolCommand_base { + protected static __types: { + api: { + input: DescribeIdentityPoolInput; + output: IdentityPool; + }; + sdk: { + input: DescribeIdentityPoolCommandInput; + output: DescribeIdentityPoolCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/GetCredentialsForIdentityCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/GetCredentialsForIdentityCommand.d.ts new file mode 100644 index 000000000..9270d7e2e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/GetCredentialsForIdentityCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../CognitoIdentityClient"; +import { + GetCredentialsForIdentityInput, + GetCredentialsForIdentityResponse, +} from "../models/models_0"; +export { __MetadataBearer }; +export { $Command }; +export interface GetCredentialsForIdentityCommandInput + extends GetCredentialsForIdentityInput {} +export interface GetCredentialsForIdentityCommandOutput + extends GetCredentialsForIdentityResponse, + __MetadataBearer {} +declare const GetCredentialsForIdentityCommand_base: { + new ( + input: GetCredentialsForIdentityCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetCredentialsForIdentityCommandInput, + GetCredentialsForIdentityCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetCredentialsForIdentityCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetCredentialsForIdentityCommandInput, + GetCredentialsForIdentityCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetCredentialsForIdentityCommand extends GetCredentialsForIdentityCommand_base { + protected static __types: { + api: { + input: GetCredentialsForIdentityInput; + output: GetCredentialsForIdentityResponse; + }; + sdk: { + input: GetCredentialsForIdentityCommandInput; + output: GetCredentialsForIdentityCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/GetIdCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/GetIdCommand.d.ts new file mode 100644 index 000000000..f57d0c7c8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/GetIdCommand.d.ts @@ -0,0 +1,41 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../CognitoIdentityClient"; +import { GetIdInput, GetIdResponse } from "../models/models_0"; +export { __MetadataBearer }; +export { $Command }; +export interface GetIdCommandInput extends GetIdInput {} +export interface GetIdCommandOutput extends GetIdResponse, __MetadataBearer {} +declare const GetIdCommand_base: { + new (input: GetIdCommandInput): import("@smithy/smithy-client").CommandImpl< + GetIdCommandInput, + GetIdCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new (input: GetIdCommandInput): import("@smithy/smithy-client").CommandImpl< + GetIdCommandInput, + GetIdCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetIdCommand extends GetIdCommand_base { + protected static __types: { + api: { + input: GetIdInput; + output: GetIdResponse; + }; + sdk: { + input: GetIdCommandInput; + output: GetIdCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/GetIdentityPoolRolesCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/GetIdentityPoolRolesCommand.d.ts new file mode 100644 index 000000000..a0cf3abcd --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/GetIdentityPoolRolesCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../CognitoIdentityClient"; +import { + GetIdentityPoolRolesInput, + GetIdentityPoolRolesResponse, +} from "../models/models_0"; +export { __MetadataBearer }; +export { $Command }; +export interface GetIdentityPoolRolesCommandInput + extends GetIdentityPoolRolesInput {} +export interface GetIdentityPoolRolesCommandOutput + extends GetIdentityPoolRolesResponse, + __MetadataBearer {} +declare const GetIdentityPoolRolesCommand_base: { + new ( + input: GetIdentityPoolRolesCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetIdentityPoolRolesCommandInput, + GetIdentityPoolRolesCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetIdentityPoolRolesCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetIdentityPoolRolesCommandInput, + GetIdentityPoolRolesCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetIdentityPoolRolesCommand extends GetIdentityPoolRolesCommand_base { + protected static __types: { + api: { + input: GetIdentityPoolRolesInput; + output: GetIdentityPoolRolesResponse; + }; + sdk: { + input: GetIdentityPoolRolesCommandInput; + output: GetIdentityPoolRolesCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/GetOpenIdTokenCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/GetOpenIdTokenCommand.d.ts new file mode 100644 index 000000000..4a552cb80 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/GetOpenIdTokenCommand.d.ts @@ -0,0 +1,50 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../CognitoIdentityClient"; +import { + GetOpenIdTokenInput, + GetOpenIdTokenResponse, +} from "../models/models_0"; +export { __MetadataBearer }; +export { $Command }; +export interface GetOpenIdTokenCommandInput extends GetOpenIdTokenInput {} +export interface GetOpenIdTokenCommandOutput + extends GetOpenIdTokenResponse, + __MetadataBearer {} +declare const GetOpenIdTokenCommand_base: { + new ( + input: GetOpenIdTokenCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetOpenIdTokenCommandInput, + GetOpenIdTokenCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetOpenIdTokenCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetOpenIdTokenCommandInput, + GetOpenIdTokenCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetOpenIdTokenCommand extends GetOpenIdTokenCommand_base { + protected static __types: { + api: { + input: GetOpenIdTokenInput; + output: GetOpenIdTokenResponse; + }; + sdk: { + input: GetOpenIdTokenCommandInput; + output: GetOpenIdTokenCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/GetOpenIdTokenForDeveloperIdentityCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/GetOpenIdTokenForDeveloperIdentityCommand.d.ts new file mode 100644 index 000000000..f581aa523 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/GetOpenIdTokenForDeveloperIdentityCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../CognitoIdentityClient"; +import { + GetOpenIdTokenForDeveloperIdentityInput, + GetOpenIdTokenForDeveloperIdentityResponse, +} from "../models/models_0"; +export { __MetadataBearer }; +export { $Command }; +export interface GetOpenIdTokenForDeveloperIdentityCommandInput + extends GetOpenIdTokenForDeveloperIdentityInput {} +export interface GetOpenIdTokenForDeveloperIdentityCommandOutput + extends GetOpenIdTokenForDeveloperIdentityResponse, + __MetadataBearer {} +declare const GetOpenIdTokenForDeveloperIdentityCommand_base: { + new ( + input: GetOpenIdTokenForDeveloperIdentityCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetOpenIdTokenForDeveloperIdentityCommandInput, + GetOpenIdTokenForDeveloperIdentityCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetOpenIdTokenForDeveloperIdentityCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetOpenIdTokenForDeveloperIdentityCommandInput, + GetOpenIdTokenForDeveloperIdentityCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetOpenIdTokenForDeveloperIdentityCommand extends GetOpenIdTokenForDeveloperIdentityCommand_base { + protected static __types: { + api: { + input: GetOpenIdTokenForDeveloperIdentityInput; + output: GetOpenIdTokenForDeveloperIdentityResponse; + }; + sdk: { + input: GetOpenIdTokenForDeveloperIdentityCommandInput; + output: GetOpenIdTokenForDeveloperIdentityCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/GetPrincipalTagAttributeMapCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/GetPrincipalTagAttributeMapCommand.d.ts new file mode 100644 index 000000000..3aeef5b9d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/GetPrincipalTagAttributeMapCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../CognitoIdentityClient"; +import { + GetPrincipalTagAttributeMapInput, + GetPrincipalTagAttributeMapResponse, +} from "../models/models_0"; +export { __MetadataBearer }; +export { $Command }; +export interface GetPrincipalTagAttributeMapCommandInput + extends GetPrincipalTagAttributeMapInput {} +export interface GetPrincipalTagAttributeMapCommandOutput + extends GetPrincipalTagAttributeMapResponse, + __MetadataBearer {} +declare const GetPrincipalTagAttributeMapCommand_base: { + new ( + input: GetPrincipalTagAttributeMapCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetPrincipalTagAttributeMapCommandInput, + GetPrincipalTagAttributeMapCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetPrincipalTagAttributeMapCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetPrincipalTagAttributeMapCommandInput, + GetPrincipalTagAttributeMapCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetPrincipalTagAttributeMapCommand extends GetPrincipalTagAttributeMapCommand_base { + protected static __types: { + api: { + input: GetPrincipalTagAttributeMapInput; + output: GetPrincipalTagAttributeMapResponse; + }; + sdk: { + input: GetPrincipalTagAttributeMapCommandInput; + output: GetPrincipalTagAttributeMapCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/ListIdentitiesCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/ListIdentitiesCommand.d.ts new file mode 100644 index 000000000..46d1d7647 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/ListIdentitiesCommand.d.ts @@ -0,0 +1,50 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../CognitoIdentityClient"; +import { + ListIdentitiesInput, + ListIdentitiesResponse, +} from "../models/models_0"; +export { __MetadataBearer }; +export { $Command }; +export interface ListIdentitiesCommandInput extends ListIdentitiesInput {} +export interface ListIdentitiesCommandOutput + extends ListIdentitiesResponse, + __MetadataBearer {} +declare const ListIdentitiesCommand_base: { + new ( + input: ListIdentitiesCommandInput + ): import("@smithy/smithy-client").CommandImpl< + ListIdentitiesCommandInput, + ListIdentitiesCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: ListIdentitiesCommandInput + ): import("@smithy/smithy-client").CommandImpl< + ListIdentitiesCommandInput, + ListIdentitiesCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class ListIdentitiesCommand extends ListIdentitiesCommand_base { + protected static __types: { + api: { + input: ListIdentitiesInput; + output: ListIdentitiesResponse; + }; + sdk: { + input: ListIdentitiesCommandInput; + output: ListIdentitiesCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/ListIdentityPoolsCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/ListIdentityPoolsCommand.d.ts new file mode 100644 index 000000000..111f5846a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/ListIdentityPoolsCommand.d.ts @@ -0,0 +1,50 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../CognitoIdentityClient"; +import { + ListIdentityPoolsInput, + ListIdentityPoolsResponse, +} from "../models/models_0"; +export { __MetadataBearer }; +export { $Command }; +export interface ListIdentityPoolsCommandInput extends ListIdentityPoolsInput {} +export interface ListIdentityPoolsCommandOutput + extends ListIdentityPoolsResponse, + __MetadataBearer {} +declare const ListIdentityPoolsCommand_base: { + new ( + input: ListIdentityPoolsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + ListIdentityPoolsCommandInput, + ListIdentityPoolsCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: ListIdentityPoolsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + ListIdentityPoolsCommandInput, + ListIdentityPoolsCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class ListIdentityPoolsCommand extends ListIdentityPoolsCommand_base { + protected static __types: { + api: { + input: ListIdentityPoolsInput; + output: ListIdentityPoolsResponse; + }; + sdk: { + input: ListIdentityPoolsCommandInput; + output: ListIdentityPoolsCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/ListTagsForResourceCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/ListTagsForResourceCommand.d.ts new file mode 100644 index 000000000..af0780032 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/ListTagsForResourceCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../CognitoIdentityClient"; +import { + ListTagsForResourceInput, + ListTagsForResourceResponse, +} from "../models/models_0"; +export { __MetadataBearer }; +export { $Command }; +export interface ListTagsForResourceCommandInput + extends ListTagsForResourceInput {} +export interface ListTagsForResourceCommandOutput + extends ListTagsForResourceResponse, + __MetadataBearer {} +declare const ListTagsForResourceCommand_base: { + new ( + input: ListTagsForResourceCommandInput + ): import("@smithy/smithy-client").CommandImpl< + ListTagsForResourceCommandInput, + ListTagsForResourceCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: ListTagsForResourceCommandInput + ): import("@smithy/smithy-client").CommandImpl< + ListTagsForResourceCommandInput, + ListTagsForResourceCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class ListTagsForResourceCommand extends ListTagsForResourceCommand_base { + protected static __types: { + api: { + input: ListTagsForResourceInput; + output: ListTagsForResourceResponse; + }; + sdk: { + input: ListTagsForResourceCommandInput; + output: ListTagsForResourceCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/LookupDeveloperIdentityCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/LookupDeveloperIdentityCommand.d.ts new file mode 100644 index 000000000..e11ce9654 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/LookupDeveloperIdentityCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../CognitoIdentityClient"; +import { + LookupDeveloperIdentityInput, + LookupDeveloperIdentityResponse, +} from "../models/models_0"; +export { __MetadataBearer }; +export { $Command }; +export interface LookupDeveloperIdentityCommandInput + extends LookupDeveloperIdentityInput {} +export interface LookupDeveloperIdentityCommandOutput + extends LookupDeveloperIdentityResponse, + __MetadataBearer {} +declare const LookupDeveloperIdentityCommand_base: { + new ( + input: LookupDeveloperIdentityCommandInput + ): import("@smithy/smithy-client").CommandImpl< + LookupDeveloperIdentityCommandInput, + LookupDeveloperIdentityCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: LookupDeveloperIdentityCommandInput + ): import("@smithy/smithy-client").CommandImpl< + LookupDeveloperIdentityCommandInput, + LookupDeveloperIdentityCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class LookupDeveloperIdentityCommand extends LookupDeveloperIdentityCommand_base { + protected static __types: { + api: { + input: LookupDeveloperIdentityInput; + output: LookupDeveloperIdentityResponse; + }; + sdk: { + input: LookupDeveloperIdentityCommandInput; + output: LookupDeveloperIdentityCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/MergeDeveloperIdentitiesCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/MergeDeveloperIdentitiesCommand.d.ts new file mode 100644 index 000000000..1228782b2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/MergeDeveloperIdentitiesCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../CognitoIdentityClient"; +import { + MergeDeveloperIdentitiesInput, + MergeDeveloperIdentitiesResponse, +} from "../models/models_0"; +export { __MetadataBearer }; +export { $Command }; +export interface MergeDeveloperIdentitiesCommandInput + extends MergeDeveloperIdentitiesInput {} +export interface MergeDeveloperIdentitiesCommandOutput + extends MergeDeveloperIdentitiesResponse, + __MetadataBearer {} +declare const MergeDeveloperIdentitiesCommand_base: { + new ( + input: MergeDeveloperIdentitiesCommandInput + ): import("@smithy/smithy-client").CommandImpl< + MergeDeveloperIdentitiesCommandInput, + MergeDeveloperIdentitiesCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: MergeDeveloperIdentitiesCommandInput + ): import("@smithy/smithy-client").CommandImpl< + MergeDeveloperIdentitiesCommandInput, + MergeDeveloperIdentitiesCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class MergeDeveloperIdentitiesCommand extends MergeDeveloperIdentitiesCommand_base { + protected static __types: { + api: { + input: MergeDeveloperIdentitiesInput; + output: MergeDeveloperIdentitiesResponse; + }; + sdk: { + input: MergeDeveloperIdentitiesCommandInput; + output: MergeDeveloperIdentitiesCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/SetIdentityPoolRolesCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/SetIdentityPoolRolesCommand.d.ts new file mode 100644 index 000000000..04e799e3a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/SetIdentityPoolRolesCommand.d.ts @@ -0,0 +1,46 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../CognitoIdentityClient"; +import { SetIdentityPoolRolesInput } from "../models/models_0"; +export { __MetadataBearer }; +export { $Command }; +export interface SetIdentityPoolRolesCommandInput + extends SetIdentityPoolRolesInput {} +export interface SetIdentityPoolRolesCommandOutput extends __MetadataBearer {} +declare const SetIdentityPoolRolesCommand_base: { + new ( + input: SetIdentityPoolRolesCommandInput + ): import("@smithy/smithy-client").CommandImpl< + SetIdentityPoolRolesCommandInput, + SetIdentityPoolRolesCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: SetIdentityPoolRolesCommandInput + ): import("@smithy/smithy-client").CommandImpl< + SetIdentityPoolRolesCommandInput, + SetIdentityPoolRolesCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class SetIdentityPoolRolesCommand extends SetIdentityPoolRolesCommand_base { + protected static __types: { + api: { + input: SetIdentityPoolRolesInput; + output: {}; + }; + sdk: { + input: SetIdentityPoolRolesCommandInput; + output: SetIdentityPoolRolesCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/SetPrincipalTagAttributeMapCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/SetPrincipalTagAttributeMapCommand.d.ts new file mode 100644 index 000000000..6cc129ee8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/SetPrincipalTagAttributeMapCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../CognitoIdentityClient"; +import { + SetPrincipalTagAttributeMapInput, + SetPrincipalTagAttributeMapResponse, +} from "../models/models_0"; +export { __MetadataBearer }; +export { $Command }; +export interface SetPrincipalTagAttributeMapCommandInput + extends SetPrincipalTagAttributeMapInput {} +export interface SetPrincipalTagAttributeMapCommandOutput + extends SetPrincipalTagAttributeMapResponse, + __MetadataBearer {} +declare const SetPrincipalTagAttributeMapCommand_base: { + new ( + input: SetPrincipalTagAttributeMapCommandInput + ): import("@smithy/smithy-client").CommandImpl< + SetPrincipalTagAttributeMapCommandInput, + SetPrincipalTagAttributeMapCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: SetPrincipalTagAttributeMapCommandInput + ): import("@smithy/smithy-client").CommandImpl< + SetPrincipalTagAttributeMapCommandInput, + SetPrincipalTagAttributeMapCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class SetPrincipalTagAttributeMapCommand extends SetPrincipalTagAttributeMapCommand_base { + protected static __types: { + api: { + input: SetPrincipalTagAttributeMapInput; + output: SetPrincipalTagAttributeMapResponse; + }; + sdk: { + input: SetPrincipalTagAttributeMapCommandInput; + output: SetPrincipalTagAttributeMapCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/TagResourceCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/TagResourceCommand.d.ts new file mode 100644 index 000000000..5807edc94 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/TagResourceCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../CognitoIdentityClient"; +import { TagResourceInput, TagResourceResponse } from "../models/models_0"; +export { __MetadataBearer }; +export { $Command }; +export interface TagResourceCommandInput extends TagResourceInput {} +export interface TagResourceCommandOutput + extends TagResourceResponse, + __MetadataBearer {} +declare const TagResourceCommand_base: { + new ( + input: TagResourceCommandInput + ): import("@smithy/smithy-client").CommandImpl< + TagResourceCommandInput, + TagResourceCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: TagResourceCommandInput + ): import("@smithy/smithy-client").CommandImpl< + TagResourceCommandInput, + TagResourceCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class TagResourceCommand extends TagResourceCommand_base { + protected static __types: { + api: { + input: TagResourceInput; + output: {}; + }; + sdk: { + input: TagResourceCommandInput; + output: TagResourceCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/UnlinkDeveloperIdentityCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/UnlinkDeveloperIdentityCommand.d.ts new file mode 100644 index 000000000..5c6447503 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/UnlinkDeveloperIdentityCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../CognitoIdentityClient"; +import { UnlinkDeveloperIdentityInput } from "../models/models_0"; +export { __MetadataBearer }; +export { $Command }; +export interface UnlinkDeveloperIdentityCommandInput + extends UnlinkDeveloperIdentityInput {} +export interface UnlinkDeveloperIdentityCommandOutput + extends __MetadataBearer {} +declare const UnlinkDeveloperIdentityCommand_base: { + new ( + input: UnlinkDeveloperIdentityCommandInput + ): import("@smithy/smithy-client").CommandImpl< + UnlinkDeveloperIdentityCommandInput, + UnlinkDeveloperIdentityCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: UnlinkDeveloperIdentityCommandInput + ): import("@smithy/smithy-client").CommandImpl< + UnlinkDeveloperIdentityCommandInput, + UnlinkDeveloperIdentityCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class UnlinkDeveloperIdentityCommand extends UnlinkDeveloperIdentityCommand_base { + protected static __types: { + api: { + input: UnlinkDeveloperIdentityInput; + output: {}; + }; + sdk: { + input: UnlinkDeveloperIdentityCommandInput; + output: UnlinkDeveloperIdentityCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/UnlinkIdentityCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/UnlinkIdentityCommand.d.ts new file mode 100644 index 000000000..227d8bdaf --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/UnlinkIdentityCommand.d.ts @@ -0,0 +1,45 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../CognitoIdentityClient"; +import { UnlinkIdentityInput } from "../models/models_0"; +export { __MetadataBearer }; +export { $Command }; +export interface UnlinkIdentityCommandInput extends UnlinkIdentityInput {} +export interface UnlinkIdentityCommandOutput extends __MetadataBearer {} +declare const UnlinkIdentityCommand_base: { + new ( + input: UnlinkIdentityCommandInput + ): import("@smithy/smithy-client").CommandImpl< + UnlinkIdentityCommandInput, + UnlinkIdentityCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: UnlinkIdentityCommandInput + ): import("@smithy/smithy-client").CommandImpl< + UnlinkIdentityCommandInput, + UnlinkIdentityCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class UnlinkIdentityCommand extends UnlinkIdentityCommand_base { + protected static __types: { + api: { + input: UnlinkIdentityInput; + output: {}; + }; + sdk: { + input: UnlinkIdentityCommandInput; + output: UnlinkIdentityCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/UntagResourceCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/UntagResourceCommand.d.ts new file mode 100644 index 000000000..83c806684 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/UntagResourceCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../CognitoIdentityClient"; +import { UntagResourceInput, UntagResourceResponse } from "../models/models_0"; +export { __MetadataBearer }; +export { $Command }; +export interface UntagResourceCommandInput extends UntagResourceInput {} +export interface UntagResourceCommandOutput + extends UntagResourceResponse, + __MetadataBearer {} +declare const UntagResourceCommand_base: { + new ( + input: UntagResourceCommandInput + ): import("@smithy/smithy-client").CommandImpl< + UntagResourceCommandInput, + UntagResourceCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: UntagResourceCommandInput + ): import("@smithy/smithy-client").CommandImpl< + UntagResourceCommandInput, + UntagResourceCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class UntagResourceCommand extends UntagResourceCommand_base { + protected static __types: { + api: { + input: UntagResourceInput; + output: {}; + }; + sdk: { + input: UntagResourceCommandInput; + output: UntagResourceCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/UpdateIdentityPoolCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/UpdateIdentityPoolCommand.d.ts new file mode 100644 index 000000000..832125a73 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/UpdateIdentityPoolCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../CognitoIdentityClient"; +import { IdentityPool } from "../models/models_0"; +export { __MetadataBearer }; +export { $Command }; +export interface UpdateIdentityPoolCommandInput extends IdentityPool {} +export interface UpdateIdentityPoolCommandOutput + extends IdentityPool, + __MetadataBearer {} +declare const UpdateIdentityPoolCommand_base: { + new ( + input: UpdateIdentityPoolCommandInput + ): import("@smithy/smithy-client").CommandImpl< + UpdateIdentityPoolCommandInput, + UpdateIdentityPoolCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: UpdateIdentityPoolCommandInput + ): import("@smithy/smithy-client").CommandImpl< + UpdateIdentityPoolCommandInput, + UpdateIdentityPoolCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class UpdateIdentityPoolCommand extends UpdateIdentityPoolCommand_base { + protected static __types: { + api: { + input: IdentityPool; + output: IdentityPool; + }; + sdk: { + input: UpdateIdentityPoolCommandInput; + output: UpdateIdentityPoolCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/index.d.ts new file mode 100644 index 000000000..8df424ba4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/commands/index.d.ts @@ -0,0 +1,23 @@ +export * from "./CreateIdentityPoolCommand"; +export * from "./DeleteIdentitiesCommand"; +export * from "./DeleteIdentityPoolCommand"; +export * from "./DescribeIdentityCommand"; +export * from "./DescribeIdentityPoolCommand"; +export * from "./GetCredentialsForIdentityCommand"; +export * from "./GetIdCommand"; +export * from "./GetIdentityPoolRolesCommand"; +export * from "./GetOpenIdTokenCommand"; +export * from "./GetOpenIdTokenForDeveloperIdentityCommand"; +export * from "./GetPrincipalTagAttributeMapCommand"; +export * from "./ListIdentitiesCommand"; +export * from "./ListIdentityPoolsCommand"; +export * from "./ListTagsForResourceCommand"; +export * from "./LookupDeveloperIdentityCommand"; +export * from "./MergeDeveloperIdentitiesCommand"; +export * from "./SetIdentityPoolRolesCommand"; +export * from "./SetPrincipalTagAttributeMapCommand"; +export * from "./TagResourceCommand"; +export * from "./UnlinkDeveloperIdentityCommand"; +export * from "./UnlinkIdentityCommand"; +export * from "./UntagResourceCommand"; +export * from "./UpdateIdentityPoolCommand"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/endpoint/EndpointParameters.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/endpoint/EndpointParameters.d.ts new file mode 100644 index 000000000..c4baac5c4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/endpoint/EndpointParameters.d.ts @@ -0,0 +1,51 @@ +import { + Endpoint, + EndpointParameters as __EndpointParameters, + EndpointV2, + Provider, +} from "@smithy/types"; +export interface ClientInputEndpointParameters { + region?: string | undefined | Provider; + useDualstackEndpoint?: boolean | undefined | Provider; + useFipsEndpoint?: boolean | undefined | Provider; + endpoint?: + | string + | Provider + | Endpoint + | Provider + | EndpointV2 + | Provider; +} +export type ClientResolvedEndpointParameters = Pick< + ClientInputEndpointParameters, + Exclude +> & { + defaultSigningName: string; +}; +export declare const resolveClientEndpointParameters: ( + options: T & ClientInputEndpointParameters +) => T & ClientResolvedEndpointParameters; +export declare const commonParams: { + readonly UseFIPS: { + readonly type: "builtInParams"; + readonly name: "useFipsEndpoint"; + }; + readonly Endpoint: { + readonly type: "builtInParams"; + readonly name: "endpoint"; + }; + readonly Region: { + readonly type: "builtInParams"; + readonly name: "region"; + }; + readonly UseDualStack: { + readonly type: "builtInParams"; + readonly name: "useDualstackEndpoint"; + }; +}; +export interface EndpointParameters extends __EndpointParameters { + Region?: string | undefined; + UseDualStack?: boolean | undefined; + UseFIPS?: boolean | undefined; + Endpoint?: string | undefined; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/endpoint/endpointResolver.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/endpoint/endpointResolver.d.ts new file mode 100644 index 000000000..590992544 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/endpoint/endpointResolver.d.ts @@ -0,0 +1,8 @@ +import { EndpointV2, Logger } from "@smithy/types"; +import { EndpointParameters } from "./EndpointParameters"; +export declare const defaultEndpointResolver: ( + endpointParams: EndpointParameters, + context?: { + logger?: Logger; + } +) => EndpointV2; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/endpoint/ruleset.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/endpoint/ruleset.d.ts new file mode 100644 index 000000000..4b238994b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/endpoint/ruleset.d.ts @@ -0,0 +1,2 @@ +import { RuleSetObject } from "@smithy/types"; +export declare const ruleSet: RuleSetObject; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/extensionConfiguration.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/extensionConfiguration.d.ts new file mode 100644 index 000000000..956fdc271 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/extensionConfiguration.d.ts @@ -0,0 +1,9 @@ +import { AwsRegionExtensionConfiguration } from "@aws-sdk/types"; +import { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; +import { DefaultExtensionConfiguration } from "@smithy/types"; +import { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; +export interface CognitoIdentityExtensionConfiguration + extends HttpHandlerExtensionConfiguration, + DefaultExtensionConfiguration, + AwsRegionExtensionConfiguration, + HttpAuthExtensionConfiguration {} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..ff36670da --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/index.d.ts @@ -0,0 +1,12 @@ +export * from "./CognitoIdentityClient"; +export * from "./CognitoIdentity"; +export { ClientInputEndpointParameters } from "./endpoint/EndpointParameters"; +export { RuntimeExtension } from "./runtimeExtensions"; +export { CognitoIdentityExtensionConfiguration } from "./extensionConfiguration"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./pagination"; +export * from "./models/enums"; +export * from "./models/errors"; +export * from "./models/models_0"; +export { CognitoIdentityServiceException } from "./models/CognitoIdentityServiceException"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/models/CognitoIdentityServiceException.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/models/CognitoIdentityServiceException.d.ts new file mode 100644 index 000000000..ba28be39c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/models/CognitoIdentityServiceException.d.ts @@ -0,0 +1,9 @@ +import { + ServiceExceptionOptions as __ServiceExceptionOptions, + ServiceException as __ServiceException, +} from "@smithy/smithy-client"; +export { __ServiceExceptionOptions }; +export { __ServiceException }; +export declare class CognitoIdentityServiceException extends __ServiceException { + constructor(options: __ServiceExceptionOptions); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/models/enums.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/models/enums.d.ts new file mode 100644 index 000000000..7ab830cd5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/models/enums.d.ts @@ -0,0 +1,25 @@ +export declare const AmbiguousRoleResolutionType: { + readonly AUTHENTICATED_ROLE: "AuthenticatedRole"; + readonly DENY: "Deny"; +}; +export type AmbiguousRoleResolutionType = + (typeof AmbiguousRoleResolutionType)[keyof typeof AmbiguousRoleResolutionType]; +export declare const ErrorCode: { + readonly ACCESS_DENIED: "AccessDenied"; + readonly INTERNAL_SERVER_ERROR: "InternalServerError"; +}; +export type ErrorCode = (typeof ErrorCode)[keyof typeof ErrorCode]; +export declare const MappingRuleMatchType: { + readonly CONTAINS: "Contains"; + readonly EQUALS: "Equals"; + readonly NOT_EQUAL: "NotEqual"; + readonly STARTS_WITH: "StartsWith"; +}; +export type MappingRuleMatchType = + (typeof MappingRuleMatchType)[keyof typeof MappingRuleMatchType]; +export declare const RoleMappingType: { + readonly RULES: "Rules"; + readonly TOKEN: "Token"; +}; +export type RoleMappingType = + (typeof RoleMappingType)[keyof typeof RoleMappingType]; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/models/errors.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/models/errors.d.ts new file mode 100644 index 000000000..7fd49062a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/models/errors.d.ts @@ -0,0 +1,88 @@ +import { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; +import { CognitoIdentityServiceException as __BaseException } from "./CognitoIdentityServiceException"; +export declare class InternalErrorException extends __BaseException { + readonly name: "InternalErrorException"; + readonly $fault: "server"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class InvalidParameterException extends __BaseException { + readonly name: "InvalidParameterException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class LimitExceededException extends __BaseException { + readonly name: "LimitExceededException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class NotAuthorizedException extends __BaseException { + readonly name: "NotAuthorizedException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class ResourceConflictException extends __BaseException { + readonly name: "ResourceConflictException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class TooManyRequestsException extends __BaseException { + readonly name: "TooManyRequestsException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class ResourceNotFoundException extends __BaseException { + readonly name: "ResourceNotFoundException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class ExternalServiceException extends __BaseException { + readonly name: "ExternalServiceException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class InvalidIdentityPoolConfigurationException extends __BaseException { + readonly name: "InvalidIdentityPoolConfigurationException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType< + InvalidIdentityPoolConfigurationException, + __BaseException + > + ); +} +export declare class DeveloperUserAlreadyRegisteredException extends __BaseException { + readonly name: "DeveloperUserAlreadyRegisteredException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType< + DeveloperUserAlreadyRegisteredException, + __BaseException + > + ); +} +export declare class ConcurrentModificationException extends __BaseException { + readonly name: "ConcurrentModificationException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType< + ConcurrentModificationException, + __BaseException + > + ); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/models/models_0.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/models/models_0.d.ts new file mode 100644 index 000000000..c993f73c0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/models/models_0.d.ts @@ -0,0 +1,221 @@ +import { + AmbiguousRoleResolutionType, + ErrorCode, + MappingRuleMatchType, + RoleMappingType, +} from "./enums"; +export interface CognitoIdentityProvider { + ProviderName?: string | undefined; + ClientId?: string | undefined; + ServerSideTokenCheck?: boolean | undefined; +} +export interface CreateIdentityPoolInput { + IdentityPoolName: string | undefined; + AllowUnauthenticatedIdentities: boolean | undefined; + AllowClassicFlow?: boolean | undefined; + SupportedLoginProviders?: Record | undefined; + DeveloperProviderName?: string | undefined; + OpenIdConnectProviderARNs?: string[] | undefined; + CognitoIdentityProviders?: CognitoIdentityProvider[] | undefined; + SamlProviderARNs?: string[] | undefined; + IdentityPoolTags?: Record | undefined; +} +export interface IdentityPool { + IdentityPoolId: string | undefined; + IdentityPoolName: string | undefined; + AllowUnauthenticatedIdentities: boolean | undefined; + AllowClassicFlow?: boolean | undefined; + SupportedLoginProviders?: Record | undefined; + DeveloperProviderName?: string | undefined; + OpenIdConnectProviderARNs?: string[] | undefined; + CognitoIdentityProviders?: CognitoIdentityProvider[] | undefined; + SamlProviderARNs?: string[] | undefined; + IdentityPoolTags?: Record | undefined; +} +export interface DeleteIdentitiesInput { + IdentityIdsToDelete: string[] | undefined; +} +export interface UnprocessedIdentityId { + IdentityId?: string | undefined; + ErrorCode?: ErrorCode | undefined; +} +export interface DeleteIdentitiesResponse { + UnprocessedIdentityIds?: UnprocessedIdentityId[] | undefined; +} +export interface DeleteIdentityPoolInput { + IdentityPoolId: string | undefined; +} +export interface DescribeIdentityInput { + IdentityId: string | undefined; +} +export interface IdentityDescription { + IdentityId?: string | undefined; + Logins?: string[] | undefined; + CreationDate?: Date | undefined; + LastModifiedDate?: Date | undefined; +} +export interface DescribeIdentityPoolInput { + IdentityPoolId: string | undefined; +} +export interface GetCredentialsForIdentityInput { + IdentityId: string | undefined; + Logins?: Record | undefined; + CustomRoleArn?: string | undefined; +} +export interface Credentials { + AccessKeyId?: string | undefined; + SecretKey?: string | undefined; + SessionToken?: string | undefined; + Expiration?: Date | undefined; +} +export interface GetCredentialsForIdentityResponse { + IdentityId?: string | undefined; + Credentials?: Credentials | undefined; +} +export interface GetIdInput { + AccountId?: string | undefined; + IdentityPoolId: string | undefined; + Logins?: Record | undefined; +} +export interface GetIdResponse { + IdentityId?: string | undefined; +} +export interface GetIdentityPoolRolesInput { + IdentityPoolId: string | undefined; +} +export interface MappingRule { + Claim: string | undefined; + MatchType: MappingRuleMatchType | undefined; + Value: string | undefined; + RoleARN: string | undefined; +} +export interface RulesConfigurationType { + Rules: MappingRule[] | undefined; +} +export interface RoleMapping { + Type: RoleMappingType | undefined; + AmbiguousRoleResolution?: AmbiguousRoleResolutionType | undefined; + RulesConfiguration?: RulesConfigurationType | undefined; +} +export interface GetIdentityPoolRolesResponse { + IdentityPoolId?: string | undefined; + Roles?: Record | undefined; + RoleMappings?: Record | undefined; +} +export interface GetOpenIdTokenInput { + IdentityId: string | undefined; + Logins?: Record | undefined; +} +export interface GetOpenIdTokenResponse { + IdentityId?: string | undefined; + Token?: string | undefined; +} +export interface GetOpenIdTokenForDeveloperIdentityInput { + IdentityPoolId: string | undefined; + IdentityId?: string | undefined; + Logins: Record | undefined; + PrincipalTags?: Record | undefined; + TokenDuration?: number | undefined; +} +export interface GetOpenIdTokenForDeveloperIdentityResponse { + IdentityId?: string | undefined; + Token?: string | undefined; +} +export interface GetPrincipalTagAttributeMapInput { + IdentityPoolId: string | undefined; + IdentityProviderName: string | undefined; +} +export interface GetPrincipalTagAttributeMapResponse { + IdentityPoolId?: string | undefined; + IdentityProviderName?: string | undefined; + UseDefaults?: boolean | undefined; + PrincipalTags?: Record | undefined; +} +export interface ListIdentitiesInput { + IdentityPoolId: string | undefined; + MaxResults: number | undefined; + NextToken?: string | undefined; + HideDisabled?: boolean | undefined; +} +export interface ListIdentitiesResponse { + IdentityPoolId?: string | undefined; + Identities?: IdentityDescription[] | undefined; + NextToken?: string | undefined; +} +export interface ListIdentityPoolsInput { + MaxResults: number | undefined; + NextToken?: string | undefined; +} +export interface IdentityPoolShortDescription { + IdentityPoolId?: string | undefined; + IdentityPoolName?: string | undefined; +} +export interface ListIdentityPoolsResponse { + IdentityPools?: IdentityPoolShortDescription[] | undefined; + NextToken?: string | undefined; +} +export interface ListTagsForResourceInput { + ResourceArn: string | undefined; +} +export interface ListTagsForResourceResponse { + Tags?: Record | undefined; +} +export interface LookupDeveloperIdentityInput { + IdentityPoolId: string | undefined; + IdentityId?: string | undefined; + DeveloperUserIdentifier?: string | undefined; + MaxResults?: number | undefined; + NextToken?: string | undefined; +} +export interface LookupDeveloperIdentityResponse { + IdentityId?: string | undefined; + DeveloperUserIdentifierList?: string[] | undefined; + NextToken?: string | undefined; +} +export interface MergeDeveloperIdentitiesInput { + SourceUserIdentifier: string | undefined; + DestinationUserIdentifier: string | undefined; + DeveloperProviderName: string | undefined; + IdentityPoolId: string | undefined; +} +export interface MergeDeveloperIdentitiesResponse { + IdentityId?: string | undefined; +} +export interface SetIdentityPoolRolesInput { + IdentityPoolId: string | undefined; + Roles: Record | undefined; + RoleMappings?: Record | undefined; +} +export interface SetPrincipalTagAttributeMapInput { + IdentityPoolId: string | undefined; + IdentityProviderName: string | undefined; + UseDefaults?: boolean | undefined; + PrincipalTags?: Record | undefined; +} +export interface SetPrincipalTagAttributeMapResponse { + IdentityPoolId?: string | undefined; + IdentityProviderName?: string | undefined; + UseDefaults?: boolean | undefined; + PrincipalTags?: Record | undefined; +} +export interface TagResourceInput { + ResourceArn: string | undefined; + Tags: Record | undefined; +} +export interface TagResourceResponse {} +export interface UnlinkDeveloperIdentityInput { + IdentityId: string | undefined; + IdentityPoolId: string | undefined; + DeveloperProviderName: string | undefined; + DeveloperUserIdentifier: string | undefined; +} +export interface UnlinkIdentityInput { + IdentityId: string | undefined; + Logins: Record | undefined; + LoginsToRemove: string[] | undefined; +} +export interface UntagResourceInput { + ResourceArn: string | undefined; + TagKeys: string[] | undefined; +} +export interface UntagResourceResponse {} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/pagination/Interfaces.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/pagination/Interfaces.d.ts new file mode 100644 index 000000000..462302e69 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/pagination/Interfaces.d.ts @@ -0,0 +1,6 @@ +import { PaginationConfiguration } from "@smithy/types"; +import { CognitoIdentityClient } from "../CognitoIdentityClient"; +export interface CognitoIdentityPaginationConfiguration + extends PaginationConfiguration { + client: CognitoIdentityClient; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/pagination/ListIdentityPoolsPaginator.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/pagination/ListIdentityPoolsPaginator.d.ts new file mode 100644 index 000000000..777cc9e32 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/pagination/ListIdentityPoolsPaginator.d.ts @@ -0,0 +1,11 @@ +import { Paginator } from "@smithy/types"; +import { + ListIdentityPoolsCommandInput, + ListIdentityPoolsCommandOutput, +} from "../commands/ListIdentityPoolsCommand"; +import { CognitoIdentityPaginationConfiguration } from "./Interfaces"; +export declare const paginateListIdentityPools: ( + config: CognitoIdentityPaginationConfiguration, + input: ListIdentityPoolsCommandInput, + ...rest: any[] +) => Paginator; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/pagination/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/pagination/index.d.ts new file mode 100644 index 000000000..c77b96c1d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/pagination/index.d.ts @@ -0,0 +1,2 @@ +export * from "./Interfaces"; +export * from "./ListIdentityPoolsPaginator"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/runtimeConfig.browser.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/runtimeConfig.browser.d.ts new file mode 100644 index 000000000..fd1de0b23 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/runtimeConfig.browser.d.ts @@ -0,0 +1,127 @@ +import { FetchHttpHandler as RequestHandler } from "@smithy/fetch-http-handler"; +import { CognitoIdentityClientConfig } from "./CognitoIdentityClient"; +export declare const getRuntimeConfig: ( + config: CognitoIdentityClientConfig +) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider< + import("@smithy/smithy-client").ResolvedDefaultsMode + >; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + credentialDefaultProvider: + | ((input: any) => import("@smithy/types").AwsCredentialIdentityProvider) + | (( + _: unknown + ) => () => Promise); + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved + ) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: + | import("@smithy/protocol-http").HttpHandler + | RequestHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + cacheMiddleware?: boolean | undefined; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/core").AwsJson1_1Protocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: + | string + | undefined + | import("@smithy/types").Provider; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + } + )[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").CognitoIdentityHttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/runtimeConfig.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/runtimeConfig.d.ts new file mode 100644 index 000000000..174c148dc --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/runtimeConfig.d.ts @@ -0,0 +1,122 @@ +import { NodeHttpHandler as RequestHandler } from "@smithy/node-http-handler"; +import { CognitoIdentityClientConfig } from "./CognitoIdentityClient"; +export declare const getRuntimeConfig: ( + config: CognitoIdentityClientConfig +) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider< + import("@smithy/smithy-client").ResolvedDefaultsMode + >; + authSchemePreference: string[] | import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + credentialDefaultProvider: + | ((input: any) => import("@smithy/types").AwsCredentialIdentityProvider) + | (( + init?: import("@aws-sdk/credential-provider-node").DefaultProviderInit + ) => import("@aws-sdk/credential-provider-node/dist-types/runtime/memoize-chain").MemoizedRuntimeConfigAwsCredentialIdentityProvider); + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-node").PreviouslyResolved + ) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: + | RequestHandler + | import("@smithy/protocol-http").HttpHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: boolean | import("@smithy/types").Provider; + useFipsEndpoint: boolean | import("@smithy/types").Provider; + userAgentAppId: string | import("@smithy/types").Provider; + cacheMiddleware?: boolean | undefined; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/core").AwsJson1_1Protocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + } + )[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").CognitoIdentityHttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/runtimeConfig.native.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/runtimeConfig.native.d.ts new file mode 100644 index 000000000..f83ac19f5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/runtimeConfig.native.d.ts @@ -0,0 +1,131 @@ +import { CognitoIdentityClientConfig } from "./CognitoIdentityClient"; +export declare const getRuntimeConfig: ( + config: CognitoIdentityClientConfig +) => { + runtime: string; + sha256: import("@smithy/types").HashConstructor; + requestHandler: + | import("@smithy/types").NodeHttpHandlerOptions + | import("@smithy/types").FetchHttpHandlerOptions + | Record + | import("@smithy/protocol-http").HttpHandler + | import("@smithy/fetch-http-handler").FetchHttpHandler; + cacheMiddleware?: boolean; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/core").AwsJson1_1Protocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + streamCollector: import("@smithy/types").StreamCollector; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + region: string | import("@smithy/types").Provider; + profile?: string; + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved + ) => Promise; + credentialDefaultProvider: + | ((input: any) => import("@smithy/types").AwsCredentialIdentityProvider) + | (( + _: unknown + ) => () => Promise); + maxAttempts: number | import("@smithy/types").Provider; + retryMode: string | import("@smithy/types").Provider; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + defaultsMode: + | import("@smithy/smithy-client").DefaultsMode + | import("@smithy/types").Provider< + import("@smithy/smithy-client").DefaultsMode + >; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: + | string + | undefined + | import("@smithy/types").Provider; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + } + )[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").CognitoIdentityHttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/runtimeConfig.shared.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/runtimeConfig.shared.d.ts new file mode 100644 index 000000000..e7355cf9d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/runtimeConfig.shared.d.ts @@ -0,0 +1,60 @@ +import { AwsSdkSigV4Signer } from "@aws-sdk/core"; +import { AwsJson1_1Protocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; +import { IdentityProviderConfig } from "@smithy/types"; +import { CognitoIdentityClientConfig } from "./CognitoIdentityClient"; +export declare const getRuntimeConfig: ( + config: CognitoIdentityClientConfig +) => { + apiVersion: string; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + disableHostPrefix: boolean; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").CognitoIdentityHttpAuthSchemeProvider; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: NoAuthSigner; + } + )[]; + logger: import("@smithy/types").Logger; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof AwsJson1_1Protocol; + protocolSettings: { + [setting: string]: unknown; + defaultNamespace?: string; + }; + serviceId: string; + urlParser: import("@smithy/types").UrlParser; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/runtimeExtensions.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/runtimeExtensions.d.ts new file mode 100644 index 000000000..3ce83666e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/runtimeExtensions.d.ts @@ -0,0 +1,13 @@ +import { CognitoIdentityExtensionConfiguration } from "./extensionConfiguration"; +export interface RuntimeExtension { + configure( + extensionConfiguration: CognitoIdentityExtensionConfiguration + ): void; +} +export interface RuntimeExtensionsConfig { + extensions: RuntimeExtension[]; +} +export declare const resolveRuntimeExtensions: ( + runtimeConfig: any, + extensions: RuntimeExtension[] +) => any; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/schemas/schemas_0.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/schemas/schemas_0.d.ts new file mode 100644 index 000000000..057bc42a4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/dist-types/ts3.4/schemas/schemas_0.d.ts @@ -0,0 +1,88 @@ +import { TypeRegistry } from "@smithy/core/schema"; +import { + StaticErrorSchema, + StaticOperationSchema, + StaticStructureSchema, +} from "@smithy/types"; +export declare var CognitoIdentityServiceException$: StaticErrorSchema; +export declare var ConcurrentModificationException$: StaticErrorSchema; +export declare var DeveloperUserAlreadyRegisteredException$: StaticErrorSchema; +export declare var ExternalServiceException$: StaticErrorSchema; +export declare var InternalErrorException$: StaticErrorSchema; +export declare var InvalidIdentityPoolConfigurationException$: StaticErrorSchema; +export declare var InvalidParameterException$: StaticErrorSchema; +export declare var LimitExceededException$: StaticErrorSchema; +export declare var NotAuthorizedException$: StaticErrorSchema; +export declare var ResourceConflictException$: StaticErrorSchema; +export declare var ResourceNotFoundException$: StaticErrorSchema; +export declare var TooManyRequestsException$: StaticErrorSchema; +export declare const errorTypeRegistries: TypeRegistry[]; +export declare var CognitoIdentityProvider$: StaticStructureSchema; +export declare var CreateIdentityPoolInput$: StaticStructureSchema; +export declare var Credentials$: StaticStructureSchema; +export declare var DeleteIdentitiesInput$: StaticStructureSchema; +export declare var DeleteIdentitiesResponse$: StaticStructureSchema; +export declare var DeleteIdentityPoolInput$: StaticStructureSchema; +export declare var DescribeIdentityInput$: StaticStructureSchema; +export declare var DescribeIdentityPoolInput$: StaticStructureSchema; +export declare var GetCredentialsForIdentityInput$: StaticStructureSchema; +export declare var GetCredentialsForIdentityResponse$: StaticStructureSchema; +export declare var GetIdentityPoolRolesInput$: StaticStructureSchema; +export declare var GetIdentityPoolRolesResponse$: StaticStructureSchema; +export declare var GetIdInput$: StaticStructureSchema; +export declare var GetIdResponse$: StaticStructureSchema; +export declare var GetOpenIdTokenForDeveloperIdentityInput$: StaticStructureSchema; +export declare var GetOpenIdTokenForDeveloperIdentityResponse$: StaticStructureSchema; +export declare var GetOpenIdTokenInput$: StaticStructureSchema; +export declare var GetOpenIdTokenResponse$: StaticStructureSchema; +export declare var GetPrincipalTagAttributeMapInput$: StaticStructureSchema; +export declare var GetPrincipalTagAttributeMapResponse$: StaticStructureSchema; +export declare var IdentityDescription$: StaticStructureSchema; +export declare var IdentityPool$: StaticStructureSchema; +export declare var IdentityPoolShortDescription$: StaticStructureSchema; +export declare var ListIdentitiesInput$: StaticStructureSchema; +export declare var ListIdentitiesResponse$: StaticStructureSchema; +export declare var ListIdentityPoolsInput$: StaticStructureSchema; +export declare var ListIdentityPoolsResponse$: StaticStructureSchema; +export declare var ListTagsForResourceInput$: StaticStructureSchema; +export declare var ListTagsForResourceResponse$: StaticStructureSchema; +export declare var LookupDeveloperIdentityInput$: StaticStructureSchema; +export declare var LookupDeveloperIdentityResponse$: StaticStructureSchema; +export declare var MappingRule$: StaticStructureSchema; +export declare var MergeDeveloperIdentitiesInput$: StaticStructureSchema; +export declare var MergeDeveloperIdentitiesResponse$: StaticStructureSchema; +export declare var RoleMapping$: StaticStructureSchema; +export declare var RulesConfigurationType$: StaticStructureSchema; +export declare var SetIdentityPoolRolesInput$: StaticStructureSchema; +export declare var SetPrincipalTagAttributeMapInput$: StaticStructureSchema; +export declare var SetPrincipalTagAttributeMapResponse$: StaticStructureSchema; +export declare var TagResourceInput$: StaticStructureSchema; +export declare var TagResourceResponse$: StaticStructureSchema; +export declare var UnlinkDeveloperIdentityInput$: StaticStructureSchema; +export declare var UnlinkIdentityInput$: StaticStructureSchema; +export declare var UnprocessedIdentityId$: StaticStructureSchema; +export declare var UntagResourceInput$: StaticStructureSchema; +export declare var UntagResourceResponse$: StaticStructureSchema; +export declare var CreateIdentityPool$: StaticOperationSchema; +export declare var DeleteIdentities$: StaticOperationSchema; +export declare var DeleteIdentityPool$: StaticOperationSchema; +export declare var DescribeIdentity$: StaticOperationSchema; +export declare var DescribeIdentityPool$: StaticOperationSchema; +export declare var GetCredentialsForIdentity$: StaticOperationSchema; +export declare var GetId$: StaticOperationSchema; +export declare var GetIdentityPoolRoles$: StaticOperationSchema; +export declare var GetOpenIdToken$: StaticOperationSchema; +export declare var GetOpenIdTokenForDeveloperIdentity$: StaticOperationSchema; +export declare var GetPrincipalTagAttributeMap$: StaticOperationSchema; +export declare var ListIdentities$: StaticOperationSchema; +export declare var ListIdentityPools$: StaticOperationSchema; +export declare var ListTagsForResource$: StaticOperationSchema; +export declare var LookupDeveloperIdentity$: StaticOperationSchema; +export declare var MergeDeveloperIdentities$: StaticOperationSchema; +export declare var SetIdentityPoolRoles$: StaticOperationSchema; +export declare var SetPrincipalTagAttributeMap$: StaticOperationSchema; +export declare var TagResource$: StaticOperationSchema; +export declare var UnlinkDeveloperIdentity$: StaticOperationSchema; +export declare var UnlinkIdentity$: StaticOperationSchema; +export declare var UntagResource$: StaticOperationSchema; +export declare var UpdateIdentityPool$: StaticOperationSchema; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/package.json b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/package.json new file mode 100644 index 000000000..43b05c2b6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/client-cognito-identity/package.json @@ -0,0 +1,110 @@ +{ + "name": "@aws-sdk/client-cognito-identity", + "description": "AWS SDK for JavaScript Cognito Identity Client for Node.js, Browser and React Native", + "version": "3.1009.0", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline client-cognito-identity", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "extract:docs": "api-extractor run --local", + "generate:client": "node ../../scripts/generate-clients/single-service --solo cognito-identity", + "test": "yarn g:vitest run --passWithNoTests", + "test:e2e": "yarn g:vitest run -c vitest.config.e2e.mts --mode development", + "test:e2e:watch": "yarn g:vitest watch -c vitest.config.e2e.mts", + "test:index": "tsc --noEmit ./test/index-types.ts && node ./test/index-objects.spec.mjs", + "test:integration": "yarn g:vitest run --passWithNoTests -c vitest.config.integ.mts", + "test:integration:watch": "yarn g:vitest run --passWithNoTests -c vitest.config.integ.mts", + "test:watch": "yarn g:vitest watch --passWithNoTests" + }, + "main": "./dist-cjs/index.js", + "types": "./dist-types/index.d.ts", + "module": "./dist-es/index.js", + "sideEffects": false, + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/credential-provider-node": "^3.972.21", + "@aws-sdk/middleware-host-header": "^3.972.8", + "@aws-sdk/middleware-logger": "^3.972.8", + "@aws-sdk/middleware-recursion-detection": "^3.972.8", + "@aws-sdk/middleware-user-agent": "^3.972.21", + "@aws-sdk/region-config-resolver": "^3.972.8", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-endpoints": "^3.996.5", + "@aws-sdk/util-user-agent-browser": "^3.972.8", + "@aws-sdk/util-user-agent-node": "^3.973.7", + "@smithy/config-resolver": "^4.4.11", + "@smithy/core": "^3.23.11", + "@smithy/fetch-http-handler": "^5.3.15", + "@smithy/hash-node": "^4.2.12", + "@smithy/invalid-dependency": "^4.2.12", + "@smithy/middleware-content-length": "^4.2.12", + "@smithy/middleware-endpoint": "^4.4.25", + "@smithy/middleware-retry": "^4.4.42", + "@smithy/middleware-serde": "^4.2.14", + "@smithy/middleware-stack": "^4.2.12", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/node-http-handler": "^4.4.16", + "@smithy/protocol-http": "^5.3.12", + "@smithy/smithy-client": "^4.12.5", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.41", + "@smithy/util-defaults-mode-node": "^4.2.44", + "@smithy/util-endpoints": "^3.3.3", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-retry": "^4.2.12", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@aws-sdk/client-iam": "3.1009.0", + "@smithy/snapshot-testing": "^2.0.2", + "@tsconfig/node20": "20.1.8", + "@types/chai": "^4.2.11", + "@types/node": "^20.14.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3", + "vitest": "^4.0.17" + }, + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "browser": { + "./dist-es/runtimeConfig": "./dist-es/runtimeConfig.browser" + }, + "react-native": { + "./dist-es/runtimeConfig": "./dist-es/runtimeConfig.native" + }, + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/clients/client-cognito-identity", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "clients/client-cognito-identity" + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/LICENSE b/food-ordering-app/server/node_modules/@aws-sdk/core/LICENSE new file mode 100644 index 000000000..0322cba2e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/README.md b/food-ordering-app/server/node_modules/@aws-sdk/core/README.md new file mode 100644 index 000000000..6056468b6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/README.md @@ -0,0 +1,39 @@ +# `@aws-sdk/core` + +This package provides common or core functionality to the AWS SDK for JavaScript (v3). + +You do not need to explicitly install this package, since it will be transitively installed by AWS SDK clients. + +## `@aws-sdk/core` submodules + +Core submodules are organized for distribution via the `package.json` `exports` field. + +`exports` is supported by default by the latest Node.js, webpack, and esbuild. For react-native, it can be +enabled via instructions found at [reactnative.dev/blog](https://reactnative.dev/blog/2023/06/21/package-exports-support). + +Think of `@aws-sdk/core` as a mono-package within the monorepo. +It preserves the benefits of modularization, for example to optimize Node.js initialization speed, +while making it easier to have a consistent version of core dependencies, reducing package sprawl when +installing an SDK client. + +### Guide for submodules + +- Each `index.ts` file corresponding to the pattern `./src/submodules//index.ts` will be + published as a separate `dist-cjs` bundled submodule index using the `Inliner.js` build script. +- create a folder as `./src/submodules/` including an `index.ts` file and a `README.md` file. + - The linter will throw an error on missing submodule metadata in `package.json` and the various `tsconfig.json` files, but it will automatically fix them if possible. +- a submodule is equivalent to a standalone `@aws-sdk/` package in that importing it in Node.js will resolve a separate bundle. +- submodules may not relatively import files from other submodules. Instead, directly use the `@scope/pkg/submodule` name as the import. + - The linter will check for this and throw an error. +- To the extent possible, correctly declaring submodule metadata is validated by the linter in `@aws-sdk/core`. + The linter runs during `yarn build` and also as `yarn lint`. + +### When should I create an `@aws-sdk/core/submodule` vs. `@aws-sdk/new-package`? + +Keep in mind that the core package is installed by all AWS SDK clients. + +If the component functionality is upstream of multiple clients, it is +a good candidate for a core submodule. For example, XML serialization. + +If the component's functionality is downstream of a client, for example S3 pre-signing, +it should be a standalone package with potentially a peer or runtime dependency on an AWS SDK client. diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/account-id-endpoint.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/account-id-endpoint.d.ts new file mode 100644 index 000000000..60f14d192 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/account-id-endpoint.d.ts @@ -0,0 +1,7 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +declare module "@aws-sdk/core/account-id-endpoint" { + export * from "@aws-sdk/core/dist-types/submodules/account-id-endpoint/index.d"; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/account-id-endpoint.js b/food-ordering-app/server/node_modules/@aws-sdk/core/account-id-endpoint.js new file mode 100644 index 000000000..d86e100e8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/account-id-endpoint.js @@ -0,0 +1,5 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +module.exports = require("./dist-cjs/submodules/account-id-endpoint/index.js"); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/client.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/client.d.ts new file mode 100644 index 000000000..ce995aea2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/client.d.ts @@ -0,0 +1,7 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +declare module "@aws-sdk/core/client" { + export * from "@aws-sdk/core/dist-types/submodules/client/index.d"; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/client.js b/food-ordering-app/server/node_modules/@aws-sdk/core/client.js new file mode 100644 index 000000000..e3a644bd8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/client.js @@ -0,0 +1,5 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +module.exports = require("./dist-cjs/submodules/client/index.js"); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-cjs/index.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-cjs/index.js new file mode 100644 index 000000000..63fc6ade8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-cjs/index.js @@ -0,0 +1,2212 @@ +'use strict'; + +var protocolHttp = require('@smithy/protocol-http'); +var core = require('@smithy/core'); +var propertyProvider = require('@smithy/property-provider'); +var client = require('@aws-sdk/core/client'); +var signatureV4 = require('@smithy/signature-v4'); +var cbor = require('@smithy/core/cbor'); +var schema = require('@smithy/core/schema'); +var smithyClient = require('@smithy/smithy-client'); +var protocols = require('@smithy/core/protocols'); +var serde = require('@smithy/core/serde'); +var utilBase64 = require('@smithy/util-base64'); +var utilUtf8 = require('@smithy/util-utf8'); +var xmlBuilder = require('@aws-sdk/xml-builder'); + +const state = { + warningEmitted: false, +}; +const emitWarningIfUnsupportedVersion = (version) => { + if (version && !state.warningEmitted && parseInt(version.substring(1, version.indexOf("."))) < 20) { + state.warningEmitted = true; + process.emitWarning(`NodeDeprecationWarning: The AWS SDK for JavaScript (v3) will +no longer support Node.js ${version} in January 2026. + +To continue receiving updates to AWS services, bug fixes, and security +updates please upgrade to a supported Node.js LTS version. + +More information can be found at: https://a.co/c895JFp`); + } +}; + +function setCredentialFeature(credentials, feature, value) { + if (!credentials.$source) { + credentials.$source = {}; + } + credentials.$source[feature] = value; + return credentials; +} + +function setFeature(context, feature, value) { + if (!context.__aws_sdk_context) { + context.__aws_sdk_context = { + features: {}, + }; + } + else if (!context.__aws_sdk_context.features) { + context.__aws_sdk_context.features = {}; + } + context.__aws_sdk_context.features[feature] = value; +} + +function setTokenFeature(token, feature, value) { + if (!token.$source) { + token.$source = {}; + } + token.$source[feature] = value; + return token; +} + +const getDateHeader = (response) => protocolHttp.HttpResponse.isInstance(response) ? response.headers?.date ?? response.headers?.Date : undefined; + +const getSkewCorrectedDate = (systemClockOffset) => new Date(Date.now() + systemClockOffset); + +const isClockSkewed = (clockTime, systemClockOffset) => Math.abs(getSkewCorrectedDate(systemClockOffset).getTime() - clockTime) >= 300000; + +const getUpdatedSystemClockOffset = (clockTime, currentSystemClockOffset) => { + const clockTimeInMs = Date.parse(clockTime); + if (isClockSkewed(clockTimeInMs, currentSystemClockOffset)) { + return clockTimeInMs - Date.now(); + } + return currentSystemClockOffset; +}; + +const throwSigningPropertyError = (name, property) => { + if (!property) { + throw new Error(`Property \`${name}\` is not resolved for AWS SDK SigV4Auth`); + } + return property; +}; +const validateSigningProperties = async (signingProperties) => { + const context = throwSigningPropertyError("context", signingProperties.context); + const config = throwSigningPropertyError("config", signingProperties.config); + const authScheme = context.endpointV2?.properties?.authSchemes?.[0]; + const signerFunction = throwSigningPropertyError("signer", config.signer); + const signer = await signerFunction(authScheme); + const signingRegion = signingProperties?.signingRegion; + const signingRegionSet = signingProperties?.signingRegionSet; + const signingName = signingProperties?.signingName; + return { + config, + signer, + signingRegion, + signingRegionSet, + signingName, + }; +}; +class AwsSdkSigV4Signer { + async sign(httpRequest, identity, signingProperties) { + if (!protocolHttp.HttpRequest.isInstance(httpRequest)) { + throw new Error("The request is not an instance of `HttpRequest` and cannot be signed"); + } + const validatedProps = await validateSigningProperties(signingProperties); + const { config, signer } = validatedProps; + let { signingRegion, signingName } = validatedProps; + const handlerExecutionContext = signingProperties.context; + if (handlerExecutionContext?.authSchemes?.length ?? 0 > 1) { + const [first, second] = handlerExecutionContext.authSchemes; + if (first?.name === "sigv4a" && second?.name === "sigv4") { + signingRegion = second?.signingRegion ?? signingRegion; + signingName = second?.signingName ?? signingName; + } + } + const signedRequest = await signer.sign(httpRequest, { + signingDate: getSkewCorrectedDate(config.systemClockOffset), + signingRegion: signingRegion, + signingService: signingName, + }); + return signedRequest; + } + errorHandler(signingProperties) { + return (error) => { + const serverTime = error.ServerTime ?? getDateHeader(error.$response); + if (serverTime) { + const config = throwSigningPropertyError("config", signingProperties.config); + const initialSystemClockOffset = config.systemClockOffset; + config.systemClockOffset = getUpdatedSystemClockOffset(serverTime, config.systemClockOffset); + const clockSkewCorrected = config.systemClockOffset !== initialSystemClockOffset; + if (clockSkewCorrected && error.$metadata) { + error.$metadata.clockSkewCorrected = true; + } + } + throw error; + }; + } + successHandler(httpResponse, signingProperties) { + const dateHeader = getDateHeader(httpResponse); + if (dateHeader) { + const config = throwSigningPropertyError("config", signingProperties.config); + config.systemClockOffset = getUpdatedSystemClockOffset(dateHeader, config.systemClockOffset); + } + } +} +const AWSSDKSigV4Signer = AwsSdkSigV4Signer; + +class AwsSdkSigV4ASigner extends AwsSdkSigV4Signer { + async sign(httpRequest, identity, signingProperties) { + if (!protocolHttp.HttpRequest.isInstance(httpRequest)) { + throw new Error("The request is not an instance of `HttpRequest` and cannot be signed"); + } + const { config, signer, signingRegion, signingRegionSet, signingName } = await validateSigningProperties(signingProperties); + const configResolvedSigningRegionSet = await config.sigv4aSigningRegionSet?.(); + const multiRegionOverride = (configResolvedSigningRegionSet ?? + signingRegionSet ?? [signingRegion]).join(","); + const signedRequest = await signer.sign(httpRequest, { + signingDate: getSkewCorrectedDate(config.systemClockOffset), + signingRegion: multiRegionOverride, + signingService: signingName, + }); + return signedRequest; + } +} + +const getArrayForCommaSeparatedString = (str) => typeof str === "string" && str.length > 0 ? str.split(",").map((item) => item.trim()) : []; + +const getBearerTokenEnvKey = (signingName) => `AWS_BEARER_TOKEN_${signingName.replace(/[\s-]/g, "_").toUpperCase()}`; + +const NODE_AUTH_SCHEME_PREFERENCE_ENV_KEY = "AWS_AUTH_SCHEME_PREFERENCE"; +const NODE_AUTH_SCHEME_PREFERENCE_CONFIG_KEY = "auth_scheme_preference"; +const NODE_AUTH_SCHEME_PREFERENCE_OPTIONS = { + environmentVariableSelector: (env, options) => { + if (options?.signingName) { + const bearerTokenKey = getBearerTokenEnvKey(options.signingName); + if (bearerTokenKey in env) + return ["httpBearerAuth"]; + } + if (!(NODE_AUTH_SCHEME_PREFERENCE_ENV_KEY in env)) + return undefined; + return getArrayForCommaSeparatedString(env[NODE_AUTH_SCHEME_PREFERENCE_ENV_KEY]); + }, + configFileSelector: (profile) => { + if (!(NODE_AUTH_SCHEME_PREFERENCE_CONFIG_KEY in profile)) + return undefined; + return getArrayForCommaSeparatedString(profile[NODE_AUTH_SCHEME_PREFERENCE_CONFIG_KEY]); + }, + default: [], +}; + +const resolveAwsSdkSigV4AConfig = (config) => { + config.sigv4aSigningRegionSet = core.normalizeProvider(config.sigv4aSigningRegionSet); + return config; +}; +const NODE_SIGV4A_CONFIG_OPTIONS = { + environmentVariableSelector(env) { + if (env.AWS_SIGV4A_SIGNING_REGION_SET) { + return env.AWS_SIGV4A_SIGNING_REGION_SET.split(",").map((_) => _.trim()); + } + throw new propertyProvider.ProviderError("AWS_SIGV4A_SIGNING_REGION_SET not set in env.", { + tryNextLink: true, + }); + }, + configFileSelector(profile) { + if (profile.sigv4a_signing_region_set) { + return (profile.sigv4a_signing_region_set ?? "").split(",").map((_) => _.trim()); + } + throw new propertyProvider.ProviderError("sigv4a_signing_region_set not set in profile.", { + tryNextLink: true, + }); + }, + default: undefined, +}; + +const resolveAwsSdkSigV4Config = (config) => { + let inputCredentials = config.credentials; + let isUserSupplied = !!config.credentials; + let resolvedCredentials = undefined; + Object.defineProperty(config, "credentials", { + set(credentials) { + if (credentials && credentials !== inputCredentials && credentials !== resolvedCredentials) { + isUserSupplied = true; + } + inputCredentials = credentials; + const memoizedProvider = normalizeCredentialProvider(config, { + credentials: inputCredentials, + credentialDefaultProvider: config.credentialDefaultProvider, + }); + const boundProvider = bindCallerConfig(config, memoizedProvider); + if (isUserSupplied && !boundProvider.attributed) { + const isCredentialObject = typeof inputCredentials === "object" && inputCredentials !== null; + resolvedCredentials = async (options) => { + const creds = await boundProvider(options); + const attributedCreds = creds; + if (isCredentialObject && (!attributedCreds.$source || Object.keys(attributedCreds.$source).length === 0)) { + return client.setCredentialFeature(attributedCreds, "CREDENTIALS_CODE", "e"); + } + return attributedCreds; + }; + resolvedCredentials.memoized = boundProvider.memoized; + resolvedCredentials.configBound = boundProvider.configBound; + resolvedCredentials.attributed = true; + } + else { + resolvedCredentials = boundProvider; + } + }, + get() { + return resolvedCredentials; + }, + enumerable: true, + configurable: true, + }); + config.credentials = inputCredentials; + const { signingEscapePath = true, systemClockOffset = config.systemClockOffset || 0, sha256, } = config; + let signer; + if (config.signer) { + signer = core.normalizeProvider(config.signer); + } + else if (config.regionInfoProvider) { + signer = () => core.normalizeProvider(config.region)() + .then(async (region) => [ + (await config.regionInfoProvider(region, { + useFipsEndpoint: await config.useFipsEndpoint(), + useDualstackEndpoint: await config.useDualstackEndpoint(), + })) || {}, + region, + ]) + .then(([regionInfo, region]) => { + const { signingRegion, signingService } = regionInfo; + config.signingRegion = config.signingRegion || signingRegion || region; + config.signingName = config.signingName || signingService || config.serviceId; + const params = { + ...config, + credentials: config.credentials, + region: config.signingRegion, + service: config.signingName, + sha256, + uriEscapePath: signingEscapePath, + }; + const SignerCtor = config.signerConstructor || signatureV4.SignatureV4; + return new SignerCtor(params); + }); + } + else { + signer = async (authScheme) => { + authScheme = Object.assign({}, { + name: "sigv4", + signingName: config.signingName || config.defaultSigningName, + signingRegion: await core.normalizeProvider(config.region)(), + properties: {}, + }, authScheme); + const signingRegion = authScheme.signingRegion; + const signingService = authScheme.signingName; + config.signingRegion = config.signingRegion || signingRegion; + config.signingName = config.signingName || signingService || config.serviceId; + const params = { + ...config, + credentials: config.credentials, + region: config.signingRegion, + service: config.signingName, + sha256, + uriEscapePath: signingEscapePath, + }; + const SignerCtor = config.signerConstructor || signatureV4.SignatureV4; + return new SignerCtor(params); + }; + } + const resolvedConfig = Object.assign(config, { + systemClockOffset, + signingEscapePath, + signer, + }); + return resolvedConfig; +}; +const resolveAWSSDKSigV4Config = resolveAwsSdkSigV4Config; +function normalizeCredentialProvider(config, { credentials, credentialDefaultProvider, }) { + let credentialsProvider; + if (credentials) { + if (!credentials?.memoized) { + credentialsProvider = core.memoizeIdentityProvider(credentials, core.isIdentityExpired, core.doesIdentityRequireRefresh); + } + else { + credentialsProvider = credentials; + } + } + else { + if (credentialDefaultProvider) { + credentialsProvider = core.normalizeProvider(credentialDefaultProvider(Object.assign({}, config, { + parentClientConfig: config, + }))); + } + else { + credentialsProvider = async () => { + throw new Error("@aws-sdk/core::resolveAwsSdkSigV4Config - `credentials` not provided and no credentialDefaultProvider was configured."); + }; + } + } + credentialsProvider.memoized = true; + return credentialsProvider; +} +function bindCallerConfig(config, credentialsProvider) { + if (credentialsProvider.configBound) { + return credentialsProvider; + } + const fn = async (options) => credentialsProvider({ ...options, callerClientConfig: config }); + fn.memoized = credentialsProvider.memoized; + fn.configBound = true; + return fn; +} + +class ProtocolLib { + queryCompat; + constructor(queryCompat = false) { + this.queryCompat = queryCompat; + } + resolveRestContentType(defaultContentType, inputSchema) { + const members = inputSchema.getMemberSchemas(); + const httpPayloadMember = Object.values(members).find((m) => { + return !!m.getMergedTraits().httpPayload; + }); + if (httpPayloadMember) { + const mediaType = httpPayloadMember.getMergedTraits().mediaType; + if (mediaType) { + return mediaType; + } + else if (httpPayloadMember.isStringSchema()) { + return "text/plain"; + } + else if (httpPayloadMember.isBlobSchema()) { + return "application/octet-stream"; + } + else { + return defaultContentType; + } + } + else if (!inputSchema.isUnitSchema()) { + const hasBody = Object.values(members).find((m) => { + const { httpQuery, httpQueryParams, httpHeader, httpLabel, httpPrefixHeaders } = m.getMergedTraits(); + const noPrefixHeaders = httpPrefixHeaders === void 0; + return !httpQuery && !httpQueryParams && !httpHeader && !httpLabel && noPrefixHeaders; + }); + if (hasBody) { + return defaultContentType; + } + } + } + async getErrorSchemaOrThrowBaseException(errorIdentifier, defaultNamespace, response, dataObject, metadata, getErrorSchema) { + let namespace = defaultNamespace; + let errorName = errorIdentifier; + if (errorIdentifier.includes("#")) { + [namespace, errorName] = errorIdentifier.split("#"); + } + const errorMetadata = { + $metadata: metadata, + $fault: response.statusCode < 500 ? "client" : "server", + }; + const registry = schema.TypeRegistry.for(namespace); + try { + const errorSchema = getErrorSchema?.(registry, errorName) ?? registry.getSchema(errorIdentifier); + return { errorSchema, errorMetadata }; + } + catch (e) { + dataObject.message = dataObject.message ?? dataObject.Message ?? "UnknownError"; + const synthetic = schema.TypeRegistry.for("smithy.ts.sdk.synthetic." + namespace); + const baseExceptionSchema = synthetic.getBaseException(); + if (baseExceptionSchema) { + const ErrorCtor = synthetic.getErrorCtor(baseExceptionSchema) ?? Error; + throw this.decorateServiceException(Object.assign(new ErrorCtor({ name: errorName }), errorMetadata), dataObject); + } + throw this.decorateServiceException(Object.assign(new Error(errorName), errorMetadata), dataObject); + } + } + decorateServiceException(exception, additions = {}) { + if (this.queryCompat) { + const msg = exception.Message ?? additions.Message; + const error = smithyClient.decorateServiceException(exception, additions); + if (msg) { + error.message = msg; + } + error.Error = { + ...error.Error, + Type: error.Error?.Type, + Code: error.Error?.Code, + Message: error.Error?.message ?? error.Error?.Message ?? msg, + }; + const reqId = error.$metadata.requestId; + if (reqId) { + error.RequestId = reqId; + } + return error; + } + return smithyClient.decorateServiceException(exception, additions); + } + setQueryCompatError(output, response) { + const queryErrorHeader = response.headers?.["x-amzn-query-error"]; + if (output !== undefined && queryErrorHeader != null) { + const [Code, Type] = queryErrorHeader.split(";"); + const entries = Object.entries(output); + const Error = { + Code, + Type, + }; + Object.assign(output, Error); + for (const [k, v] of entries) { + Error[k === "message" ? "Message" : k] = v; + } + delete Error.__type; + output.Error = Error; + } + } + queryCompatOutput(queryCompatErrorData, errorData) { + if (queryCompatErrorData.Error) { + errorData.Error = queryCompatErrorData.Error; + } + if (queryCompatErrorData.Type) { + errorData.Type = queryCompatErrorData.Type; + } + if (queryCompatErrorData.Code) { + errorData.Code = queryCompatErrorData.Code; + } + } + findQueryCompatibleError(registry, errorName) { + try { + return registry.getSchema(errorName); + } + catch (e) { + return registry.find((schema$1) => schema.NormalizedSchema.of(schema$1).getMergedTraits().awsQueryError?.[0] === errorName); + } + } +} + +class AwsSmithyRpcV2CborProtocol extends cbor.SmithyRpcV2CborProtocol { + awsQueryCompatible; + mixin; + constructor({ defaultNamespace, awsQueryCompatible, }) { + super({ defaultNamespace }); + this.awsQueryCompatible = !!awsQueryCompatible; + this.mixin = new ProtocolLib(this.awsQueryCompatible); + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + if (this.awsQueryCompatible) { + request.headers["x-amzn-query-mode"] = "true"; + } + return request; + } + async handleError(operationSchema, context, response, dataObject, metadata) { + if (this.awsQueryCompatible) { + this.mixin.setQueryCompatError(dataObject, response); + } + const errorName = (() => { + const compatHeader = response.headers["x-amzn-query-error"]; + if (compatHeader && this.awsQueryCompatible) { + return compatHeader.split(";")[0]; + } + return cbor.loadSmithyRpcV2CborErrorCode(response, dataObject) ?? "Unknown"; + })(); + const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorName, this.options.defaultNamespace, response, dataObject, metadata, this.awsQueryCompatible ? this.mixin.findQueryCompatibleError : undefined); + const ns = schema.NormalizedSchema.of(errorSchema); + const message = dataObject.message ?? dataObject.Message ?? "Unknown"; + const ErrorCtor = schema.TypeRegistry.for(errorSchema[1]).getErrorCtor(errorSchema) ?? Error; + const exception = new ErrorCtor(message); + const output = {}; + for (const [name, member] of ns.structIterator()) { + if (dataObject[name] != null) { + output[name] = this.deserializer.readValue(member, dataObject[name]); + } + } + if (this.awsQueryCompatible) { + this.mixin.queryCompatOutput(dataObject, output); + } + throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output), dataObject); + } +} + +const _toStr = (val) => { + if (val == null) { + return val; + } + if (typeof val === "number" || typeof val === "bigint") { + const warning = new Error(`Received number ${val} where a string was expected.`); + warning.name = "Warning"; + console.warn(warning); + return String(val); + } + if (typeof val === "boolean") { + const warning = new Error(`Received boolean ${val} where a string was expected.`); + warning.name = "Warning"; + console.warn(warning); + return String(val); + } + return val; +}; +const _toBool = (val) => { + if (val == null) { + return val; + } + if (typeof val === "string") { + const lowercase = val.toLowerCase(); + if (val !== "" && lowercase !== "false" && lowercase !== "true") { + const warning = new Error(`Received string "${val}" where a boolean was expected.`); + warning.name = "Warning"; + console.warn(warning); + } + return val !== "" && lowercase !== "false"; + } + return val; +}; +const _toNum = (val) => { + if (val == null) { + return val; + } + if (typeof val === "string") { + const num = Number(val); + if (num.toString() !== val) { + const warning = new Error(`Received string "${val}" where a number was expected.`); + warning.name = "Warning"; + console.warn(warning); + return val; + } + return num; + } + return val; +}; + +class SerdeContextConfig { + serdeContext; + setSerdeContext(serdeContext) { + this.serdeContext = serdeContext; + } +} + +class UnionSerde { + from; + to; + keys; + constructor(from, to) { + this.from = from; + this.to = to; + this.keys = new Set(Object.keys(this.from).filter((k) => k !== "__type")); + } + mark(key) { + this.keys.delete(key); + } + hasUnknown() { + return this.keys.size === 1 && Object.keys(this.to).length === 0; + } + writeUnknown() { + if (this.hasUnknown()) { + const k = this.keys.values().next().value; + const v = this.from[k]; + this.to.$unknown = [k, v]; + } + } +} + +function jsonReviver(key, value, context) { + if (context?.source) { + const numericString = context.source; + if (typeof value === "number") { + if (value > Number.MAX_SAFE_INTEGER || value < Number.MIN_SAFE_INTEGER || numericString !== String(value)) { + const isFractional = numericString.includes("."); + if (isFractional) { + return new serde.NumericValue(numericString, "bigDecimal"); + } + else { + return BigInt(numericString); + } + } + } + } + return value; +} + +const collectBodyString = (streamBody, context) => smithyClient.collectBody(streamBody, context).then((body) => (context?.utf8Encoder ?? utilUtf8.toUtf8)(body)); + +const parseJsonBody = (streamBody, context) => collectBodyString(streamBody, context).then((encoded) => { + if (encoded.length) { + try { + return JSON.parse(encoded); + } + catch (e) { + if (e?.name === "SyntaxError") { + Object.defineProperty(e, "$responseBodyText", { + value: encoded, + }); + } + throw e; + } + } + return {}; +}); +const parseJsonErrorBody = async (errorBody, context) => { + const value = await parseJsonBody(errorBody, context); + value.message = value.message ?? value.Message; + return value; +}; +const loadRestJsonErrorCode = (output, data) => { + const findKey = (object, key) => Object.keys(object).find((k) => k.toLowerCase() === key.toLowerCase()); + const sanitizeErrorCode = (rawValue) => { + let cleanValue = rawValue; + if (typeof cleanValue === "number") { + cleanValue = cleanValue.toString(); + } + if (cleanValue.indexOf(",") >= 0) { + cleanValue = cleanValue.split(",")[0]; + } + if (cleanValue.indexOf(":") >= 0) { + cleanValue = cleanValue.split(":")[0]; + } + if (cleanValue.indexOf("#") >= 0) { + cleanValue = cleanValue.split("#")[1]; + } + return cleanValue; + }; + const headerKey = findKey(output.headers, "x-amzn-errortype"); + if (headerKey !== undefined) { + return sanitizeErrorCode(output.headers[headerKey]); + } + if (data && typeof data === "object") { + const codeKey = findKey(data, "code"); + if (codeKey && data[codeKey] !== undefined) { + return sanitizeErrorCode(data[codeKey]); + } + if (data["__type"] !== undefined) { + return sanitizeErrorCode(data["__type"]); + } + } +}; + +class JsonShapeDeserializer extends SerdeContextConfig { + settings; + constructor(settings) { + super(); + this.settings = settings; + } + async read(schema, data) { + return this._read(schema, typeof data === "string" ? JSON.parse(data, jsonReviver) : await parseJsonBody(data, this.serdeContext)); + } + readObject(schema, data) { + return this._read(schema, data); + } + _read(schema$1, value) { + const isObject = value !== null && typeof value === "object"; + const ns = schema.NormalizedSchema.of(schema$1); + if (isObject) { + if (ns.isStructSchema()) { + const record = value; + const union = ns.isUnionSchema(); + const out = {}; + let nameMap = void 0; + const { jsonName } = this.settings; + if (jsonName) { + nameMap = {}; + } + let unionSerde; + if (union) { + unionSerde = new UnionSerde(record, out); + } + for (const [memberName, memberSchema] of ns.structIterator()) { + let fromKey = memberName; + if (jsonName) { + fromKey = memberSchema.getMergedTraits().jsonName ?? fromKey; + nameMap[fromKey] = memberName; + } + if (union) { + unionSerde.mark(fromKey); + } + if (record[fromKey] != null) { + out[memberName] = this._read(memberSchema, record[fromKey]); + } + } + if (union) { + unionSerde.writeUnknown(); + } + else if (typeof record.__type === "string") { + for (const [k, v] of Object.entries(record)) { + const t = jsonName ? nameMap[k] ?? k : k; + if (!(t in out)) { + out[t] = v; + } + } + } + return out; + } + if (Array.isArray(value) && ns.isListSchema()) { + const listMember = ns.getValueSchema(); + const out = []; + for (const item of value) { + out.push(this._read(listMember, item)); + } + return out; + } + if (ns.isMapSchema()) { + const mapMember = ns.getValueSchema(); + const out = {}; + for (const [_k, _v] of Object.entries(value)) { + out[_k] = this._read(mapMember, _v); + } + return out; + } + } + if (ns.isBlobSchema() && typeof value === "string") { + return utilBase64.fromBase64(value); + } + const mediaType = ns.getMergedTraits().mediaType; + if (ns.isStringSchema() && typeof value === "string" && mediaType) { + const isJson = mediaType === "application/json" || mediaType.endsWith("+json"); + if (isJson) { + return serde.LazyJsonString.from(value); + } + return value; + } + if (ns.isTimestampSchema() && value != null) { + const format = protocols.determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + return serde.parseRfc3339DateTimeWithOffset(value); + case 6: + return serde.parseRfc7231DateTime(value); + case 7: + return serde.parseEpochTimestamp(value); + default: + console.warn("Missing timestamp format, parsing value with Date constructor:", value); + return new Date(value); + } + } + if (ns.isBigIntegerSchema() && (typeof value === "number" || typeof value === "string")) { + return BigInt(value); + } + if (ns.isBigDecimalSchema() && value != undefined) { + if (value instanceof serde.NumericValue) { + return value; + } + const untyped = value; + if (untyped.type === "bigDecimal" && "string" in untyped) { + return new serde.NumericValue(untyped.string, untyped.type); + } + return new serde.NumericValue(String(value), "bigDecimal"); + } + if (ns.isNumericSchema() && typeof value === "string") { + switch (value) { + case "Infinity": + return Infinity; + case "-Infinity": + return -Infinity; + case "NaN": + return NaN; + } + return value; + } + if (ns.isDocumentSchema()) { + if (isObject) { + const out = Array.isArray(value) ? [] : {}; + for (const [k, v] of Object.entries(value)) { + if (v instanceof serde.NumericValue) { + out[k] = v; + } + else { + out[k] = this._read(ns, v); + } + } + return out; + } + else { + return structuredClone(value); + } + } + return value; + } +} + +const NUMERIC_CONTROL_CHAR = String.fromCharCode(925); +class JsonReplacer { + values = new Map(); + counter = 0; + stage = 0; + createReplacer() { + if (this.stage === 1) { + throw new Error("@aws-sdk/core/protocols - JsonReplacer already created."); + } + if (this.stage === 2) { + throw new Error("@aws-sdk/core/protocols - JsonReplacer exhausted."); + } + this.stage = 1; + return (key, value) => { + if (value instanceof serde.NumericValue) { + const v = `${NUMERIC_CONTROL_CHAR + "nv" + this.counter++}_` + value.string; + this.values.set(`"${v}"`, value.string); + return v; + } + if (typeof value === "bigint") { + const s = value.toString(); + const v = `${NUMERIC_CONTROL_CHAR + "b" + this.counter++}_` + s; + this.values.set(`"${v}"`, s); + return v; + } + return value; + }; + } + replaceInJson(json) { + if (this.stage === 0) { + throw new Error("@aws-sdk/core/protocols - JsonReplacer not created yet."); + } + if (this.stage === 2) { + throw new Error("@aws-sdk/core/protocols - JsonReplacer exhausted."); + } + this.stage = 2; + if (this.counter === 0) { + return json; + } + for (const [key, value] of this.values) { + json = json.replace(key, value); + } + return json; + } +} + +class JsonShapeSerializer extends SerdeContextConfig { + settings; + buffer; + useReplacer = false; + rootSchema; + constructor(settings) { + super(); + this.settings = settings; + } + write(schema$1, value) { + this.rootSchema = schema.NormalizedSchema.of(schema$1); + this.buffer = this._write(this.rootSchema, value); + } + writeDiscriminatedDocument(schema$1, value) { + this.write(schema$1, value); + if (typeof this.buffer === "object") { + this.buffer.__type = schema.NormalizedSchema.of(schema$1).getName(true); + } + } + flush() { + const { rootSchema, useReplacer } = this; + this.rootSchema = undefined; + this.useReplacer = false; + if (rootSchema?.isStructSchema() || rootSchema?.isDocumentSchema()) { + if (!useReplacer) { + return JSON.stringify(this.buffer); + } + const replacer = new JsonReplacer(); + return replacer.replaceInJson(JSON.stringify(this.buffer, replacer.createReplacer(), 0)); + } + return this.buffer; + } + _write(schema$1, value, container) { + const isObject = value !== null && typeof value === "object"; + const ns = schema.NormalizedSchema.of(schema$1); + if (isObject) { + if (ns.isStructSchema()) { + const record = value; + const out = {}; + const { jsonName } = this.settings; + let nameMap = void 0; + if (jsonName) { + nameMap = {}; + } + for (const [memberName, memberSchema] of ns.structIterator()) { + const serializableValue = this._write(memberSchema, record[memberName], ns); + if (serializableValue !== undefined) { + let targetKey = memberName; + if (jsonName) { + targetKey = memberSchema.getMergedTraits().jsonName ?? memberName; + nameMap[memberName] = targetKey; + } + out[targetKey] = serializableValue; + } + } + if (ns.isUnionSchema() && Object.keys(out).length === 0) { + const { $unknown } = record; + if (Array.isArray($unknown)) { + const [k, v] = $unknown; + out[k] = this._write(15, v); + } + } + else if (typeof record.__type === "string") { + for (const [k, v] of Object.entries(record)) { + const targetKey = jsonName ? nameMap[k] ?? k : k; + if (!(targetKey in out)) { + out[targetKey] = this._write(15, v); + } + } + } + return out; + } + if (Array.isArray(value) && ns.isListSchema()) { + const listMember = ns.getValueSchema(); + const out = []; + const sparse = !!ns.getMergedTraits().sparse; + for (const item of value) { + if (sparse || item != null) { + out.push(this._write(listMember, item)); + } + } + return out; + } + if (ns.isMapSchema()) { + const mapMember = ns.getValueSchema(); + const out = {}; + const sparse = !!ns.getMergedTraits().sparse; + for (const [_k, _v] of Object.entries(value)) { + if (sparse || _v != null) { + out[_k] = this._write(mapMember, _v); + } + } + return out; + } + if (value instanceof Uint8Array && (ns.isBlobSchema() || ns.isDocumentSchema())) { + if (ns === this.rootSchema) { + return value; + } + return (this.serdeContext?.base64Encoder ?? utilBase64.toBase64)(value); + } + if (value instanceof Date && (ns.isTimestampSchema() || ns.isDocumentSchema())) { + const format = protocols.determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + return value.toISOString().replace(".000Z", "Z"); + case 6: + return serde.dateToUtcString(value); + case 7: + return value.getTime() / 1000; + default: + console.warn("Missing timestamp format, using epoch seconds", value); + return value.getTime() / 1000; + } + } + if (value instanceof serde.NumericValue) { + this.useReplacer = true; + } + } + if (value === null && container?.isStructSchema()) { + return void 0; + } + if (ns.isStringSchema()) { + if (typeof value === "undefined" && ns.isIdempotencyToken()) { + return serde.generateIdempotencyToken(); + } + const mediaType = ns.getMergedTraits().mediaType; + if (value != null && mediaType) { + const isJson = mediaType === "application/json" || mediaType.endsWith("+json"); + if (isJson) { + return serde.LazyJsonString.from(value); + } + } + return value; + } + if (typeof value === "number" && ns.isNumericSchema()) { + if (Math.abs(value) === Infinity || isNaN(value)) { + return String(value); + } + return value; + } + if (typeof value === "string" && ns.isBlobSchema()) { + if (ns === this.rootSchema) { + return value; + } + return (this.serdeContext?.base64Encoder ?? utilBase64.toBase64)(value); + } + if (typeof value === "bigint") { + this.useReplacer = true; + } + if (ns.isDocumentSchema()) { + if (isObject) { + const out = Array.isArray(value) ? [] : {}; + for (const [k, v] of Object.entries(value)) { + if (v instanceof serde.NumericValue) { + this.useReplacer = true; + out[k] = v; + } + else { + out[k] = this._write(ns, v); + } + } + return out; + } + else { + return structuredClone(value); + } + } + return value; + } +} + +class JsonCodec extends SerdeContextConfig { + settings; + constructor(settings) { + super(); + this.settings = settings; + } + createSerializer() { + const serializer = new JsonShapeSerializer(this.settings); + serializer.setSerdeContext(this.serdeContext); + return serializer; + } + createDeserializer() { + const deserializer = new JsonShapeDeserializer(this.settings); + deserializer.setSerdeContext(this.serdeContext); + return deserializer; + } +} + +class AwsJsonRpcProtocol extends protocols.RpcProtocol { + serializer; + deserializer; + serviceTarget; + codec; + mixin; + awsQueryCompatible; + constructor({ defaultNamespace, serviceTarget, awsQueryCompatible, jsonCodec, }) { + super({ + defaultNamespace, + }); + this.serviceTarget = serviceTarget; + this.codec = + jsonCodec ?? + new JsonCodec({ + timestampFormat: { + useTrait: true, + default: 7, + }, + jsonName: false, + }); + this.serializer = this.codec.createSerializer(); + this.deserializer = this.codec.createDeserializer(); + this.awsQueryCompatible = !!awsQueryCompatible; + this.mixin = new ProtocolLib(this.awsQueryCompatible); + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + if (!request.path.endsWith("/")) { + request.path += "/"; + } + Object.assign(request.headers, { + "content-type": `application/x-amz-json-${this.getJsonRpcVersion()}`, + "x-amz-target": `${this.serviceTarget}.${operationSchema.name}`, + }); + if (this.awsQueryCompatible) { + request.headers["x-amzn-query-mode"] = "true"; + } + if (schema.deref(operationSchema.input) === "unit" || !request.body) { + request.body = "{}"; + } + return request; + } + getPayloadCodec() { + return this.codec; + } + async handleError(operationSchema, context, response, dataObject, metadata) { + if (this.awsQueryCompatible) { + this.mixin.setQueryCompatError(dataObject, response); + } + const errorIdentifier = loadRestJsonErrorCode(response, dataObject) ?? "Unknown"; + const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorIdentifier, this.options.defaultNamespace, response, dataObject, metadata, this.awsQueryCompatible ? this.mixin.findQueryCompatibleError : undefined); + const ns = schema.NormalizedSchema.of(errorSchema); + const message = dataObject.message ?? dataObject.Message ?? "Unknown"; + const ErrorCtor = schema.TypeRegistry.for(errorSchema[1]).getErrorCtor(errorSchema) ?? Error; + const exception = new ErrorCtor(message); + const output = {}; + for (const [name, member] of ns.structIterator()) { + if (dataObject[name] != null) { + output[name] = this.codec.createDeserializer().readObject(member, dataObject[name]); + } + } + if (this.awsQueryCompatible) { + this.mixin.queryCompatOutput(dataObject, output); + } + throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output), dataObject); + } +} + +class AwsJson1_0Protocol extends AwsJsonRpcProtocol { + constructor({ defaultNamespace, serviceTarget, awsQueryCompatible, jsonCodec, }) { + super({ + defaultNamespace, + serviceTarget, + awsQueryCompatible, + jsonCodec, + }); + } + getShapeId() { + return "aws.protocols#awsJson1_0"; + } + getJsonRpcVersion() { + return "1.0"; + } + getDefaultContentType() { + return "application/x-amz-json-1.0"; + } +} + +class AwsJson1_1Protocol extends AwsJsonRpcProtocol { + constructor({ defaultNamespace, serviceTarget, awsQueryCompatible, jsonCodec, }) { + super({ + defaultNamespace, + serviceTarget, + awsQueryCompatible, + jsonCodec, + }); + } + getShapeId() { + return "aws.protocols#awsJson1_1"; + } + getJsonRpcVersion() { + return "1.1"; + } + getDefaultContentType() { + return "application/x-amz-json-1.1"; + } +} + +class AwsRestJsonProtocol extends protocols.HttpBindingProtocol { + serializer; + deserializer; + codec; + mixin = new ProtocolLib(); + constructor({ defaultNamespace }) { + super({ + defaultNamespace, + }); + const settings = { + timestampFormat: { + useTrait: true, + default: 7, + }, + httpBindings: true, + jsonName: true, + }; + this.codec = new JsonCodec(settings); + this.serializer = new protocols.HttpInterceptingShapeSerializer(this.codec.createSerializer(), settings); + this.deserializer = new protocols.HttpInterceptingShapeDeserializer(this.codec.createDeserializer(), settings); + } + getShapeId() { + return "aws.protocols#restJson1"; + } + getPayloadCodec() { + return this.codec; + } + setSerdeContext(serdeContext) { + this.codec.setSerdeContext(serdeContext); + super.setSerdeContext(serdeContext); + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + const inputSchema = schema.NormalizedSchema.of(operationSchema.input); + if (!request.headers["content-type"]) { + const contentType = this.mixin.resolveRestContentType(this.getDefaultContentType(), inputSchema); + if (contentType) { + request.headers["content-type"] = contentType; + } + } + if (request.body == null && request.headers["content-type"] === this.getDefaultContentType()) { + request.body = "{}"; + } + return request; + } + async deserializeResponse(operationSchema, context, response) { + const output = await super.deserializeResponse(operationSchema, context, response); + const outputSchema = schema.NormalizedSchema.of(operationSchema.output); + for (const [name, member] of outputSchema.structIterator()) { + if (member.getMemberTraits().httpPayload && !(name in output)) { + output[name] = null; + } + } + return output; + } + async handleError(operationSchema, context, response, dataObject, metadata) { + const errorIdentifier = loadRestJsonErrorCode(response, dataObject) ?? "Unknown"; + const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorIdentifier, this.options.defaultNamespace, response, dataObject, metadata); + const ns = schema.NormalizedSchema.of(errorSchema); + const message = dataObject.message ?? dataObject.Message ?? "Unknown"; + const ErrorCtor = schema.TypeRegistry.for(errorSchema[1]).getErrorCtor(errorSchema) ?? Error; + const exception = new ErrorCtor(message); + await this.deserializeHttpMessage(errorSchema, context, response, dataObject); + const output = {}; + for (const [name, member] of ns.structIterator()) { + const target = member.getMergedTraits().jsonName ?? name; + output[name] = this.codec.createDeserializer().readObject(member, dataObject[target]); + } + throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output), dataObject); + } + getDefaultContentType() { + return "application/json"; + } +} + +const awsExpectUnion = (value) => { + if (value == null) { + return undefined; + } + if (typeof value === "object" && "__type" in value) { + delete value.__type; + } + return smithyClient.expectUnion(value); +}; + +class XmlShapeDeserializer extends SerdeContextConfig { + settings; + stringDeserializer; + constructor(settings) { + super(); + this.settings = settings; + this.stringDeserializer = new protocols.FromStringShapeDeserializer(settings); + } + setSerdeContext(serdeContext) { + this.serdeContext = serdeContext; + this.stringDeserializer.setSerdeContext(serdeContext); + } + read(schema$1, bytes, key) { + const ns = schema.NormalizedSchema.of(schema$1); + const memberSchemas = ns.getMemberSchemas(); + const isEventPayload = ns.isStructSchema() && + ns.isMemberSchema() && + !!Object.values(memberSchemas).find((memberNs) => { + return !!memberNs.getMemberTraits().eventPayload; + }); + if (isEventPayload) { + const output = {}; + const memberName = Object.keys(memberSchemas)[0]; + const eventMemberSchema = memberSchemas[memberName]; + if (eventMemberSchema.isBlobSchema()) { + output[memberName] = bytes; + } + else { + output[memberName] = this.read(memberSchemas[memberName], bytes); + } + return output; + } + const xmlString = (this.serdeContext?.utf8Encoder ?? utilUtf8.toUtf8)(bytes); + const parsedObject = this.parseXml(xmlString); + return this.readSchema(schema$1, key ? parsedObject[key] : parsedObject); + } + readSchema(_schema, value) { + const ns = schema.NormalizedSchema.of(_schema); + if (ns.isUnitSchema()) { + return; + } + const traits = ns.getMergedTraits(); + if (ns.isListSchema() && !Array.isArray(value)) { + return this.readSchema(ns, [value]); + } + if (value == null) { + return value; + } + if (typeof value === "object") { + const flat = !!traits.xmlFlattened; + if (ns.isListSchema()) { + const listValue = ns.getValueSchema(); + const buffer = []; + const sourceKey = listValue.getMergedTraits().xmlName ?? "member"; + const source = flat ? value : (value[0] ?? value)[sourceKey]; + if (source == null) { + return buffer; + } + const sourceArray = Array.isArray(source) ? source : [source]; + for (const v of sourceArray) { + buffer.push(this.readSchema(listValue, v)); + } + return buffer; + } + const buffer = {}; + if (ns.isMapSchema()) { + const keyNs = ns.getKeySchema(); + const memberNs = ns.getValueSchema(); + let entries; + if (flat) { + entries = Array.isArray(value) ? value : [value]; + } + else { + entries = Array.isArray(value.entry) ? value.entry : [value.entry]; + } + const keyProperty = keyNs.getMergedTraits().xmlName ?? "key"; + const valueProperty = memberNs.getMergedTraits().xmlName ?? "value"; + for (const entry of entries) { + const key = entry[keyProperty]; + const value = entry[valueProperty]; + buffer[key] = this.readSchema(memberNs, value); + } + return buffer; + } + if (ns.isStructSchema()) { + const union = ns.isUnionSchema(); + let unionSerde; + if (union) { + unionSerde = new UnionSerde(value, buffer); + } + for (const [memberName, memberSchema] of ns.structIterator()) { + const memberTraits = memberSchema.getMergedTraits(); + const xmlObjectKey = !memberTraits.httpPayload + ? memberSchema.getMemberTraits().xmlName ?? memberName + : memberTraits.xmlName ?? memberSchema.getName(); + if (union) { + unionSerde.mark(xmlObjectKey); + } + if (value[xmlObjectKey] != null) { + buffer[memberName] = this.readSchema(memberSchema, value[xmlObjectKey]); + } + } + if (union) { + unionSerde.writeUnknown(); + } + return buffer; + } + if (ns.isDocumentSchema()) { + return value; + } + throw new Error(`@aws-sdk/core/protocols - xml deserializer unhandled schema type for ${ns.getName(true)}`); + } + if (ns.isListSchema()) { + return []; + } + if (ns.isMapSchema() || ns.isStructSchema()) { + return {}; + } + return this.stringDeserializer.read(ns, value); + } + parseXml(xml) { + if (xml.length) { + let parsedObj; + try { + parsedObj = xmlBuilder.parseXML(xml); + } + catch (e) { + if (e && typeof e === "object") { + Object.defineProperty(e, "$responseBodyText", { + value: xml, + }); + } + throw e; + } + const textNodeName = "#text"; + const key = Object.keys(parsedObj)[0]; + const parsedObjToReturn = parsedObj[key]; + if (parsedObjToReturn[textNodeName]) { + parsedObjToReturn[key] = parsedObjToReturn[textNodeName]; + delete parsedObjToReturn[textNodeName]; + } + return smithyClient.getValueFromTextNode(parsedObjToReturn); + } + return {}; + } +} + +class QueryShapeSerializer extends SerdeContextConfig { + settings; + buffer; + constructor(settings) { + super(); + this.settings = settings; + } + write(schema$1, value, prefix = "") { + if (this.buffer === undefined) { + this.buffer = ""; + } + const ns = schema.NormalizedSchema.of(schema$1); + if (prefix && !prefix.endsWith(".")) { + prefix += "."; + } + if (ns.isBlobSchema()) { + if (typeof value === "string" || value instanceof Uint8Array) { + this.writeKey(prefix); + this.writeValue((this.serdeContext?.base64Encoder ?? utilBase64.toBase64)(value)); + } + } + else if (ns.isBooleanSchema() || ns.isNumericSchema() || ns.isStringSchema()) { + if (value != null) { + this.writeKey(prefix); + this.writeValue(String(value)); + } + else if (ns.isIdempotencyToken()) { + this.writeKey(prefix); + this.writeValue(serde.generateIdempotencyToken()); + } + } + else if (ns.isBigIntegerSchema()) { + if (value != null) { + this.writeKey(prefix); + this.writeValue(String(value)); + } + } + else if (ns.isBigDecimalSchema()) { + if (value != null) { + this.writeKey(prefix); + this.writeValue(value instanceof serde.NumericValue ? value.string : String(value)); + } + } + else if (ns.isTimestampSchema()) { + if (value instanceof Date) { + this.writeKey(prefix); + const format = protocols.determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + this.writeValue(value.toISOString().replace(".000Z", "Z")); + break; + case 6: + this.writeValue(smithyClient.dateToUtcString(value)); + break; + case 7: + this.writeValue(String(value.getTime() / 1000)); + break; + } + } + } + else if (ns.isDocumentSchema()) { + if (Array.isArray(value)) { + this.write(64 | 15, value, prefix); + } + else if (value instanceof Date) { + this.write(4, value, prefix); + } + else if (value instanceof Uint8Array) { + this.write(21, value, prefix); + } + else if (value && typeof value === "object") { + this.write(128 | 15, value, prefix); + } + else { + this.writeKey(prefix); + this.writeValue(String(value)); + } + } + else if (ns.isListSchema()) { + if (Array.isArray(value)) { + if (value.length === 0) { + if (this.settings.serializeEmptyLists) { + this.writeKey(prefix); + this.writeValue(""); + } + } + else { + const member = ns.getValueSchema(); + const flat = this.settings.flattenLists || ns.getMergedTraits().xmlFlattened; + let i = 1; + for (const item of value) { + if (item == null) { + continue; + } + const traits = member.getMergedTraits(); + const suffix = this.getKey("member", traits.xmlName, traits.ec2QueryName); + const key = flat ? `${prefix}${i}` : `${prefix}${suffix}.${i}`; + this.write(member, item, key); + ++i; + } + } + } + } + else if (ns.isMapSchema()) { + if (value && typeof value === "object") { + const keySchema = ns.getKeySchema(); + const memberSchema = ns.getValueSchema(); + const flat = ns.getMergedTraits().xmlFlattened; + let i = 1; + for (const [k, v] of Object.entries(value)) { + if (v == null) { + continue; + } + const keyTraits = keySchema.getMergedTraits(); + const keySuffix = this.getKey("key", keyTraits.xmlName, keyTraits.ec2QueryName); + const key = flat ? `${prefix}${i}.${keySuffix}` : `${prefix}entry.${i}.${keySuffix}`; + const valTraits = memberSchema.getMergedTraits(); + const valueSuffix = this.getKey("value", valTraits.xmlName, valTraits.ec2QueryName); + const valueKey = flat ? `${prefix}${i}.${valueSuffix}` : `${prefix}entry.${i}.${valueSuffix}`; + this.write(keySchema, k, key); + this.write(memberSchema, v, valueKey); + ++i; + } + } + } + else if (ns.isStructSchema()) { + if (value && typeof value === "object") { + let didWriteMember = false; + for (const [memberName, member] of ns.structIterator()) { + if (value[memberName] == null && !member.isIdempotencyToken()) { + continue; + } + const traits = member.getMergedTraits(); + const suffix = this.getKey(memberName, traits.xmlName, traits.ec2QueryName, "struct"); + const key = `${prefix}${suffix}`; + this.write(member, value[memberName], key); + didWriteMember = true; + } + if (!didWriteMember && ns.isUnionSchema()) { + const { $unknown } = value; + if (Array.isArray($unknown)) { + const [k, v] = $unknown; + const key = `${prefix}${k}`; + this.write(15, v, key); + } + } + } + } + else if (ns.isUnitSchema()) ; + else { + throw new Error(`@aws-sdk/core/protocols - QuerySerializer unrecognized schema type ${ns.getName(true)}`); + } + } + flush() { + if (this.buffer === undefined) { + throw new Error("@aws-sdk/core/protocols - QuerySerializer cannot flush with nothing written to buffer."); + } + const str = this.buffer; + delete this.buffer; + return str; + } + getKey(memberName, xmlName, ec2QueryName, keySource) { + const { ec2, capitalizeKeys } = this.settings; + if (ec2 && ec2QueryName) { + return ec2QueryName; + } + const key = xmlName ?? memberName; + if (capitalizeKeys && keySource === "struct") { + return key[0].toUpperCase() + key.slice(1); + } + return key; + } + writeKey(key) { + if (key.endsWith(".")) { + key = key.slice(0, key.length - 1); + } + this.buffer += `&${protocols.extendedEncodeURIComponent(key)}=`; + } + writeValue(value) { + this.buffer += protocols.extendedEncodeURIComponent(value); + } +} + +class AwsQueryProtocol extends protocols.RpcProtocol { + options; + serializer; + deserializer; + mixin = new ProtocolLib(); + constructor(options) { + super({ + defaultNamespace: options.defaultNamespace, + }); + this.options = options; + const settings = { + timestampFormat: { + useTrait: true, + default: 5, + }, + httpBindings: false, + xmlNamespace: options.xmlNamespace, + serviceNamespace: options.defaultNamespace, + serializeEmptyLists: true, + }; + this.serializer = new QueryShapeSerializer(settings); + this.deserializer = new XmlShapeDeserializer(settings); + } + getShapeId() { + return "aws.protocols#awsQuery"; + } + setSerdeContext(serdeContext) { + this.serializer.setSerdeContext(serdeContext); + this.deserializer.setSerdeContext(serdeContext); + } + getPayloadCodec() { + throw new Error("AWSQuery protocol has no payload codec."); + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + if (!request.path.endsWith("/")) { + request.path += "/"; + } + Object.assign(request.headers, { + "content-type": `application/x-www-form-urlencoded`, + }); + if (schema.deref(operationSchema.input) === "unit" || !request.body) { + request.body = ""; + } + const action = operationSchema.name.split("#")[1] ?? operationSchema.name; + request.body = `Action=${action}&Version=${this.options.version}` + request.body; + if (request.body.endsWith("&")) { + request.body = request.body.slice(-1); + } + return request; + } + async deserializeResponse(operationSchema, context, response) { + const deserializer = this.deserializer; + const ns = schema.NormalizedSchema.of(operationSchema.output); + const dataObject = {}; + if (response.statusCode >= 300) { + const bytes = await protocols.collectBody(response.body, context); + if (bytes.byteLength > 0) { + Object.assign(dataObject, await deserializer.read(15, bytes)); + } + await this.handleError(operationSchema, context, response, dataObject, this.deserializeMetadata(response)); + } + for (const header in response.headers) { + const value = response.headers[header]; + delete response.headers[header]; + response.headers[header.toLowerCase()] = value; + } + const shortName = operationSchema.name.split("#")[1] ?? operationSchema.name; + const awsQueryResultKey = ns.isStructSchema() && this.useNestedResult() ? shortName + "Result" : undefined; + const bytes = await protocols.collectBody(response.body, context); + if (bytes.byteLength > 0) { + Object.assign(dataObject, await deserializer.read(ns, bytes, awsQueryResultKey)); + } + const output = { + $metadata: this.deserializeMetadata(response), + ...dataObject, + }; + return output; + } + useNestedResult() { + return true; + } + async handleError(operationSchema, context, response, dataObject, metadata) { + const errorIdentifier = this.loadQueryErrorCode(response, dataObject) ?? "Unknown"; + const errorData = this.loadQueryError(dataObject) ?? {}; + const message = this.loadQueryErrorMessage(dataObject); + errorData.message = message; + errorData.Error = { + Type: errorData.Type, + Code: errorData.Code, + Message: message, + }; + const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorIdentifier, this.options.defaultNamespace, response, errorData, metadata, this.mixin.findQueryCompatibleError); + const ns = schema.NormalizedSchema.of(errorSchema); + const ErrorCtor = schema.TypeRegistry.for(errorSchema[1]).getErrorCtor(errorSchema) ?? Error; + const exception = new ErrorCtor(message); + const output = { + Type: errorData.Error.Type, + Code: errorData.Error.Code, + Error: errorData.Error, + }; + for (const [name, member] of ns.structIterator()) { + const target = member.getMergedTraits().xmlName ?? name; + const value = errorData[target] ?? dataObject[target]; + output[name] = this.deserializer.readSchema(member, value); + } + throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output), dataObject); + } + loadQueryErrorCode(output, data) { + const code = (data.Errors?.[0]?.Error ?? data.Errors?.Error ?? data.Error)?.Code; + if (code !== undefined) { + return code; + } + if (output.statusCode == 404) { + return "NotFound"; + } + } + loadQueryError(data) { + return data.Errors?.[0]?.Error ?? data.Errors?.Error ?? data.Error; + } + loadQueryErrorMessage(data) { + const errorData = this.loadQueryError(data); + return errorData?.message ?? errorData?.Message ?? data.message ?? data.Message ?? "Unknown"; + } + getDefaultContentType() { + return "application/x-www-form-urlencoded"; + } +} + +class AwsEc2QueryProtocol extends AwsQueryProtocol { + options; + constructor(options) { + super(options); + this.options = options; + const ec2Settings = { + capitalizeKeys: true, + flattenLists: true, + serializeEmptyLists: false, + ec2: true, + }; + Object.assign(this.serializer.settings, ec2Settings); + } + getShapeId() { + return "aws.protocols#ec2Query"; + } + useNestedResult() { + return false; + } +} + +const parseXmlBody = (streamBody, context) => collectBodyString(streamBody, context).then((encoded) => { + if (encoded.length) { + let parsedObj; + try { + parsedObj = xmlBuilder.parseXML(encoded); + } + catch (e) { + if (e && typeof e === "object") { + Object.defineProperty(e, "$responseBodyText", { + value: encoded, + }); + } + throw e; + } + const textNodeName = "#text"; + const key = Object.keys(parsedObj)[0]; + const parsedObjToReturn = parsedObj[key]; + if (parsedObjToReturn[textNodeName]) { + parsedObjToReturn[key] = parsedObjToReturn[textNodeName]; + delete parsedObjToReturn[textNodeName]; + } + return smithyClient.getValueFromTextNode(parsedObjToReturn); + } + return {}; +}); +const parseXmlErrorBody = async (errorBody, context) => { + const value = await parseXmlBody(errorBody, context); + if (value.Error) { + value.Error.message = value.Error.message ?? value.Error.Message; + } + return value; +}; +const loadRestXmlErrorCode = (output, data) => { + if (data?.Error?.Code !== undefined) { + return data.Error.Code; + } + if (data?.Code !== undefined) { + return data.Code; + } + if (output.statusCode == 404) { + return "NotFound"; + } +}; + +class XmlShapeSerializer extends SerdeContextConfig { + settings; + stringBuffer; + byteBuffer; + buffer; + constructor(settings) { + super(); + this.settings = settings; + } + write(schema$1, value) { + const ns = schema.NormalizedSchema.of(schema$1); + if (ns.isStringSchema() && typeof value === "string") { + this.stringBuffer = value; + } + else if (ns.isBlobSchema()) { + this.byteBuffer = + "byteLength" in value + ? value + : (this.serdeContext?.base64Decoder ?? utilBase64.fromBase64)(value); + } + else { + this.buffer = this.writeStruct(ns, value, undefined); + const traits = ns.getMergedTraits(); + if (traits.httpPayload && !traits.xmlName) { + this.buffer.withName(ns.getName()); + } + } + } + flush() { + if (this.byteBuffer !== undefined) { + const bytes = this.byteBuffer; + delete this.byteBuffer; + return bytes; + } + if (this.stringBuffer !== undefined) { + const str = this.stringBuffer; + delete this.stringBuffer; + return str; + } + const buffer = this.buffer; + if (this.settings.xmlNamespace) { + if (!buffer?.attributes?.["xmlns"]) { + buffer.addAttribute("xmlns", this.settings.xmlNamespace); + } + } + delete this.buffer; + return buffer.toString(); + } + writeStruct(ns, value, parentXmlns) { + const traits = ns.getMergedTraits(); + const name = ns.isMemberSchema() && !traits.httpPayload + ? ns.getMemberTraits().xmlName ?? ns.getMemberName() + : traits.xmlName ?? ns.getName(); + if (!name || !ns.isStructSchema()) { + throw new Error(`@aws-sdk/core/protocols - xml serializer, cannot write struct with empty name or non-struct, schema=${ns.getName(true)}.`); + } + const structXmlNode = xmlBuilder.XmlNode.of(name); + const [xmlnsAttr, xmlns] = this.getXmlnsAttribute(ns, parentXmlns); + for (const [memberName, memberSchema] of ns.structIterator()) { + const val = value[memberName]; + if (val != null || memberSchema.isIdempotencyToken()) { + if (memberSchema.getMergedTraits().xmlAttribute) { + structXmlNode.addAttribute(memberSchema.getMergedTraits().xmlName ?? memberName, this.writeSimple(memberSchema, val)); + continue; + } + if (memberSchema.isListSchema()) { + this.writeList(memberSchema, val, structXmlNode, xmlns); + } + else if (memberSchema.isMapSchema()) { + this.writeMap(memberSchema, val, structXmlNode, xmlns); + } + else if (memberSchema.isStructSchema()) { + structXmlNode.addChildNode(this.writeStruct(memberSchema, val, xmlns)); + } + else { + const memberNode = xmlBuilder.XmlNode.of(memberSchema.getMergedTraits().xmlName ?? memberSchema.getMemberName()); + this.writeSimpleInto(memberSchema, val, memberNode, xmlns); + structXmlNode.addChildNode(memberNode); + } + } + } + const { $unknown } = value; + if ($unknown && ns.isUnionSchema() && Array.isArray($unknown) && Object.keys(value).length === 1) { + const [k, v] = $unknown; + const node = xmlBuilder.XmlNode.of(k); + if (typeof v !== "string") { + if (value instanceof xmlBuilder.XmlNode || value instanceof xmlBuilder.XmlText) { + structXmlNode.addChildNode(value); + } + else { + throw new Error(`@aws-sdk - $unknown union member in XML requires ` + + `value of type string, @aws-sdk/xml-builder::XmlNode or XmlText.`); + } + } + this.writeSimpleInto(0, v, node, xmlns); + structXmlNode.addChildNode(node); + } + if (xmlns) { + structXmlNode.addAttribute(xmlnsAttr, xmlns); + } + return structXmlNode; + } + writeList(listMember, array, container, parentXmlns) { + if (!listMember.isMemberSchema()) { + throw new Error(`@aws-sdk/core/protocols - xml serializer, cannot write non-member list: ${listMember.getName(true)}`); + } + const listTraits = listMember.getMergedTraits(); + const listValueSchema = listMember.getValueSchema(); + const listValueTraits = listValueSchema.getMergedTraits(); + const sparse = !!listValueTraits.sparse; + const flat = !!listTraits.xmlFlattened; + const [xmlnsAttr, xmlns] = this.getXmlnsAttribute(listMember, parentXmlns); + const writeItem = (container, value) => { + if (listValueSchema.isListSchema()) { + this.writeList(listValueSchema, Array.isArray(value) ? value : [value], container, xmlns); + } + else if (listValueSchema.isMapSchema()) { + this.writeMap(listValueSchema, value, container, xmlns); + } + else if (listValueSchema.isStructSchema()) { + const struct = this.writeStruct(listValueSchema, value, xmlns); + container.addChildNode(struct.withName(flat ? listTraits.xmlName ?? listMember.getMemberName() : listValueTraits.xmlName ?? "member")); + } + else { + const listItemNode = xmlBuilder.XmlNode.of(flat ? listTraits.xmlName ?? listMember.getMemberName() : listValueTraits.xmlName ?? "member"); + this.writeSimpleInto(listValueSchema, value, listItemNode, xmlns); + container.addChildNode(listItemNode); + } + }; + if (flat) { + for (const value of array) { + if (sparse || value != null) { + writeItem(container, value); + } + } + } + else { + const listNode = xmlBuilder.XmlNode.of(listTraits.xmlName ?? listMember.getMemberName()); + if (xmlns) { + listNode.addAttribute(xmlnsAttr, xmlns); + } + for (const value of array) { + if (sparse || value != null) { + writeItem(listNode, value); + } + } + container.addChildNode(listNode); + } + } + writeMap(mapMember, map, container, parentXmlns, containerIsMap = false) { + if (!mapMember.isMemberSchema()) { + throw new Error(`@aws-sdk/core/protocols - xml serializer, cannot write non-member map: ${mapMember.getName(true)}`); + } + const mapTraits = mapMember.getMergedTraits(); + const mapKeySchema = mapMember.getKeySchema(); + const mapKeyTraits = mapKeySchema.getMergedTraits(); + const keyTag = mapKeyTraits.xmlName ?? "key"; + const mapValueSchema = mapMember.getValueSchema(); + const mapValueTraits = mapValueSchema.getMergedTraits(); + const valueTag = mapValueTraits.xmlName ?? "value"; + const sparse = !!mapValueTraits.sparse; + const flat = !!mapTraits.xmlFlattened; + const [xmlnsAttr, xmlns] = this.getXmlnsAttribute(mapMember, parentXmlns); + const addKeyValue = (entry, key, val) => { + const keyNode = xmlBuilder.XmlNode.of(keyTag, key); + const [keyXmlnsAttr, keyXmlns] = this.getXmlnsAttribute(mapKeySchema, xmlns); + if (keyXmlns) { + keyNode.addAttribute(keyXmlnsAttr, keyXmlns); + } + entry.addChildNode(keyNode); + let valueNode = xmlBuilder.XmlNode.of(valueTag); + if (mapValueSchema.isListSchema()) { + this.writeList(mapValueSchema, val, valueNode, xmlns); + } + else if (mapValueSchema.isMapSchema()) { + this.writeMap(mapValueSchema, val, valueNode, xmlns, true); + } + else if (mapValueSchema.isStructSchema()) { + valueNode = this.writeStruct(mapValueSchema, val, xmlns); + } + else { + this.writeSimpleInto(mapValueSchema, val, valueNode, xmlns); + } + entry.addChildNode(valueNode); + }; + if (flat) { + for (const [key, val] of Object.entries(map)) { + if (sparse || val != null) { + const entry = xmlBuilder.XmlNode.of(mapTraits.xmlName ?? mapMember.getMemberName()); + addKeyValue(entry, key, val); + container.addChildNode(entry); + } + } + } + else { + let mapNode; + if (!containerIsMap) { + mapNode = xmlBuilder.XmlNode.of(mapTraits.xmlName ?? mapMember.getMemberName()); + if (xmlns) { + mapNode.addAttribute(xmlnsAttr, xmlns); + } + container.addChildNode(mapNode); + } + for (const [key, val] of Object.entries(map)) { + if (sparse || val != null) { + const entry = xmlBuilder.XmlNode.of("entry"); + addKeyValue(entry, key, val); + (containerIsMap ? container : mapNode).addChildNode(entry); + } + } + } + } + writeSimple(_schema, value) { + if (null === value) { + throw new Error("@aws-sdk/core/protocols - (XML serializer) cannot write null value."); + } + const ns = schema.NormalizedSchema.of(_schema); + let nodeContents = null; + if (value && typeof value === "object") { + if (ns.isBlobSchema()) { + nodeContents = (this.serdeContext?.base64Encoder ?? utilBase64.toBase64)(value); + } + else if (ns.isTimestampSchema() && value instanceof Date) { + const format = protocols.determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + nodeContents = value.toISOString().replace(".000Z", "Z"); + break; + case 6: + nodeContents = smithyClient.dateToUtcString(value); + break; + case 7: + nodeContents = String(value.getTime() / 1000); + break; + default: + console.warn("Missing timestamp format, using http date", value); + nodeContents = smithyClient.dateToUtcString(value); + break; + } + } + else if (ns.isBigDecimalSchema() && value) { + if (value instanceof serde.NumericValue) { + return value.string; + } + return String(value); + } + else if (ns.isMapSchema() || ns.isListSchema()) { + throw new Error("@aws-sdk/core/protocols - xml serializer, cannot call _write() on List/Map schema, call writeList or writeMap() instead."); + } + else { + throw new Error(`@aws-sdk/core/protocols - xml serializer, unhandled schema type for object value and schema: ${ns.getName(true)}`); + } + } + if (ns.isBooleanSchema() || ns.isNumericSchema() || ns.isBigIntegerSchema() || ns.isBigDecimalSchema()) { + nodeContents = String(value); + } + if (ns.isStringSchema()) { + if (value === undefined && ns.isIdempotencyToken()) { + nodeContents = serde.generateIdempotencyToken(); + } + else { + nodeContents = String(value); + } + } + if (nodeContents === null) { + throw new Error(`Unhandled schema-value pair ${ns.getName(true)}=${value}`); + } + return nodeContents; + } + writeSimpleInto(_schema, value, into, parentXmlns) { + const nodeContents = this.writeSimple(_schema, value); + const ns = schema.NormalizedSchema.of(_schema); + const content = new xmlBuilder.XmlText(nodeContents); + const [xmlnsAttr, xmlns] = this.getXmlnsAttribute(ns, parentXmlns); + if (xmlns) { + into.addAttribute(xmlnsAttr, xmlns); + } + into.addChildNode(content); + } + getXmlnsAttribute(ns, parentXmlns) { + const traits = ns.getMergedTraits(); + const [prefix, xmlns] = traits.xmlNamespace ?? []; + if (xmlns && xmlns !== parentXmlns) { + return [prefix ? `xmlns:${prefix}` : "xmlns", xmlns]; + } + return [void 0, void 0]; + } +} + +class XmlCodec extends SerdeContextConfig { + settings; + constructor(settings) { + super(); + this.settings = settings; + } + createSerializer() { + const serializer = new XmlShapeSerializer(this.settings); + serializer.setSerdeContext(this.serdeContext); + return serializer; + } + createDeserializer() { + const deserializer = new XmlShapeDeserializer(this.settings); + deserializer.setSerdeContext(this.serdeContext); + return deserializer; + } +} + +class AwsRestXmlProtocol extends protocols.HttpBindingProtocol { + codec; + serializer; + deserializer; + mixin = new ProtocolLib(); + constructor(options) { + super(options); + const settings = { + timestampFormat: { + useTrait: true, + default: 5, + }, + httpBindings: true, + xmlNamespace: options.xmlNamespace, + serviceNamespace: options.defaultNamespace, + }; + this.codec = new XmlCodec(settings); + this.serializer = new protocols.HttpInterceptingShapeSerializer(this.codec.createSerializer(), settings); + this.deserializer = new protocols.HttpInterceptingShapeDeserializer(this.codec.createDeserializer(), settings); + } + getPayloadCodec() { + return this.codec; + } + getShapeId() { + return "aws.protocols#restXml"; + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + const inputSchema = schema.NormalizedSchema.of(operationSchema.input); + if (!request.headers["content-type"]) { + const contentType = this.mixin.resolveRestContentType(this.getDefaultContentType(), inputSchema); + if (contentType) { + request.headers["content-type"] = contentType; + } + } + if (typeof request.body === "string" && + request.headers["content-type"] === this.getDefaultContentType() && + !request.body.startsWith("' + request.body; + } + return request; + } + async deserializeResponse(operationSchema, context, response) { + return super.deserializeResponse(operationSchema, context, response); + } + async handleError(operationSchema, context, response, dataObject, metadata) { + const errorIdentifier = loadRestXmlErrorCode(response, dataObject) ?? "Unknown"; + if (dataObject.Error && typeof dataObject.Error === "object") { + for (const key of Object.keys(dataObject.Error)) { + dataObject[key] = dataObject.Error[key]; + if (key.toLowerCase() === "message") { + dataObject.message = dataObject.Error[key]; + } + } + } + if (dataObject.RequestId && !metadata.requestId) { + metadata.requestId = dataObject.RequestId; + } + const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorIdentifier, this.options.defaultNamespace, response, dataObject, metadata); + const ns = schema.NormalizedSchema.of(errorSchema); + const message = dataObject.Error?.message ?? dataObject.Error?.Message ?? dataObject.message ?? dataObject.Message ?? "Unknown"; + const ErrorCtor = schema.TypeRegistry.for(errorSchema[1]).getErrorCtor(errorSchema) ?? Error; + const exception = new ErrorCtor(message); + await this.deserializeHttpMessage(errorSchema, context, response, dataObject); + const output = {}; + for (const [name, member] of ns.structIterator()) { + const target = member.getMergedTraits().xmlName ?? name; + const value = dataObject.Error?.[target] ?? dataObject[target]; + output[name] = this.codec.createDeserializer().readSchema(member, value); + } + throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output), dataObject); + } + getDefaultContentType() { + return "application/xml"; + } + hasUnstructuredPayloadBinding(ns) { + for (const [, member] of ns.structIterator()) { + if (member.getMergedTraits().httpPayload) { + return !(member.isStructSchema() || member.isMapSchema() || member.isListSchema()); + } + } + return false; + } +} + +exports.AWSSDKSigV4Signer = AWSSDKSigV4Signer; +exports.AwsEc2QueryProtocol = AwsEc2QueryProtocol; +exports.AwsJson1_0Protocol = AwsJson1_0Protocol; +exports.AwsJson1_1Protocol = AwsJson1_1Protocol; +exports.AwsJsonRpcProtocol = AwsJsonRpcProtocol; +exports.AwsQueryProtocol = AwsQueryProtocol; +exports.AwsRestJsonProtocol = AwsRestJsonProtocol; +exports.AwsRestXmlProtocol = AwsRestXmlProtocol; +exports.AwsSdkSigV4ASigner = AwsSdkSigV4ASigner; +exports.AwsSdkSigV4Signer = AwsSdkSigV4Signer; +exports.AwsSmithyRpcV2CborProtocol = AwsSmithyRpcV2CborProtocol; +exports.JsonCodec = JsonCodec; +exports.JsonShapeDeserializer = JsonShapeDeserializer; +exports.JsonShapeSerializer = JsonShapeSerializer; +exports.NODE_AUTH_SCHEME_PREFERENCE_OPTIONS = NODE_AUTH_SCHEME_PREFERENCE_OPTIONS; +exports.NODE_SIGV4A_CONFIG_OPTIONS = NODE_SIGV4A_CONFIG_OPTIONS; +exports.QueryShapeSerializer = QueryShapeSerializer; +exports.XmlCodec = XmlCodec; +exports.XmlShapeDeserializer = XmlShapeDeserializer; +exports.XmlShapeSerializer = XmlShapeSerializer; +exports._toBool = _toBool; +exports._toNum = _toNum; +exports._toStr = _toStr; +exports.awsExpectUnion = awsExpectUnion; +exports.emitWarningIfUnsupportedVersion = emitWarningIfUnsupportedVersion; +exports.getBearerTokenEnvKey = getBearerTokenEnvKey; +exports.loadRestJsonErrorCode = loadRestJsonErrorCode; +exports.loadRestXmlErrorCode = loadRestXmlErrorCode; +exports.parseJsonBody = parseJsonBody; +exports.parseJsonErrorBody = parseJsonErrorBody; +exports.parseXmlBody = parseXmlBody; +exports.parseXmlErrorBody = parseXmlErrorBody; +exports.resolveAWSSDKSigV4Config = resolveAWSSDKSigV4Config; +exports.resolveAwsSdkSigV4AConfig = resolveAwsSdkSigV4AConfig; +exports.resolveAwsSdkSigV4Config = resolveAwsSdkSigV4Config; +exports.setCredentialFeature = setCredentialFeature; +exports.setFeature = setFeature; +exports.setTokenFeature = setTokenFeature; +exports.state = state; +exports.validateSigningProperties = validateSigningProperties; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-cjs/submodules/account-id-endpoint/index.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-cjs/submodules/account-id-endpoint/index.js new file mode 100644 index 000000000..5016c37de --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-cjs/submodules/account-id-endpoint/index.js @@ -0,0 +1,55 @@ +'use strict'; + +var utilMiddleware = require('@smithy/util-middleware'); + +const DEFAULT_ACCOUNT_ID_ENDPOINT_MODE = "preferred"; +const ACCOUNT_ID_ENDPOINT_MODE_VALUES = ["disabled", "preferred", "required"]; +function validateAccountIdEndpointMode(value) { + return ACCOUNT_ID_ENDPOINT_MODE_VALUES.includes(value); +} + +const resolveAccountIdEndpointModeConfig = (input) => { + const { accountIdEndpointMode } = input; + const accountIdEndpointModeProvider = utilMiddleware.normalizeProvider(accountIdEndpointMode ?? DEFAULT_ACCOUNT_ID_ENDPOINT_MODE); + return Object.assign(input, { + accountIdEndpointMode: async () => { + const accIdMode = await accountIdEndpointModeProvider(); + if (!validateAccountIdEndpointMode(accIdMode)) { + throw new Error(`Invalid value for accountIdEndpointMode: ${accIdMode}. Valid values are: "required", "preferred", "disabled".`); + } + return accIdMode; + }, + }); +}; + +const err = "Invalid AccountIdEndpointMode value"; +const _throw = (message) => { + throw new Error(message); +}; +const ENV_ACCOUNT_ID_ENDPOINT_MODE = "AWS_ACCOUNT_ID_ENDPOINT_MODE"; +const CONFIG_ACCOUNT_ID_ENDPOINT_MODE = "account_id_endpoint_mode"; +const NODE_ACCOUNT_ID_ENDPOINT_MODE_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => { + const value = env[ENV_ACCOUNT_ID_ENDPOINT_MODE]; + if (value && !validateAccountIdEndpointMode(value)) { + _throw(err); + } + return value; + }, + configFileSelector: (profile) => { + const value = profile[CONFIG_ACCOUNT_ID_ENDPOINT_MODE]; + if (value && !validateAccountIdEndpointMode(value)) { + _throw(err); + } + return value; + }, + default: DEFAULT_ACCOUNT_ID_ENDPOINT_MODE, +}; + +exports.ACCOUNT_ID_ENDPOINT_MODE_VALUES = ACCOUNT_ID_ENDPOINT_MODE_VALUES; +exports.CONFIG_ACCOUNT_ID_ENDPOINT_MODE = CONFIG_ACCOUNT_ID_ENDPOINT_MODE; +exports.DEFAULT_ACCOUNT_ID_ENDPOINT_MODE = DEFAULT_ACCOUNT_ID_ENDPOINT_MODE; +exports.ENV_ACCOUNT_ID_ENDPOINT_MODE = ENV_ACCOUNT_ID_ENDPOINT_MODE; +exports.NODE_ACCOUNT_ID_ENDPOINT_MODE_CONFIG_OPTIONS = NODE_ACCOUNT_ID_ENDPOINT_MODE_CONFIG_OPTIONS; +exports.resolveAccountIdEndpointModeConfig = resolveAccountIdEndpointModeConfig; +exports.validateAccountIdEndpointMode = validateAccountIdEndpointMode; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.js new file mode 100644 index 000000000..ac64112a3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.js @@ -0,0 +1,51 @@ +'use strict'; + +const state = { + warningEmitted: false, +}; +const emitWarningIfUnsupportedVersion = (version) => { + if (version && !state.warningEmitted && parseInt(version.substring(1, version.indexOf("."))) < 20) { + state.warningEmitted = true; + process.emitWarning(`NodeDeprecationWarning: The AWS SDK for JavaScript (v3) will +no longer support Node.js ${version} in January 2026. + +To continue receiving updates to AWS services, bug fixes, and security +updates please upgrade to a supported Node.js LTS version. + +More information can be found at: https://a.co/c895JFp`); + } +}; + +function setCredentialFeature(credentials, feature, value) { + if (!credentials.$source) { + credentials.$source = {}; + } + credentials.$source[feature] = value; + return credentials; +} + +function setFeature(context, feature, value) { + if (!context.__aws_sdk_context) { + context.__aws_sdk_context = { + features: {}, + }; + } + else if (!context.__aws_sdk_context.features) { + context.__aws_sdk_context.features = {}; + } + context.__aws_sdk_context.features[feature] = value; +} + +function setTokenFeature(token, feature, value) { + if (!token.$source) { + token.$source = {}; + } + token.$source[feature] = value; + return token; +} + +exports.emitWarningIfUnsupportedVersion = emitWarningIfUnsupportedVersion; +exports.setCredentialFeature = setCredentialFeature; +exports.setFeature = setFeature; +exports.setTokenFeature = setTokenFeature; +exports.state = state; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-cjs/submodules/httpAuthSchemes/index.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-cjs/submodules/httpAuthSchemes/index.js new file mode 100644 index 000000000..26b6301e4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-cjs/submodules/httpAuthSchemes/index.js @@ -0,0 +1,307 @@ +'use strict'; + +var protocolHttp = require('@smithy/protocol-http'); +var core = require('@smithy/core'); +var propertyProvider = require('@smithy/property-provider'); +var client = require('@aws-sdk/core/client'); +var signatureV4 = require('@smithy/signature-v4'); + +const getDateHeader = (response) => protocolHttp.HttpResponse.isInstance(response) ? response.headers?.date ?? response.headers?.Date : undefined; + +const getSkewCorrectedDate = (systemClockOffset) => new Date(Date.now() + systemClockOffset); + +const isClockSkewed = (clockTime, systemClockOffset) => Math.abs(getSkewCorrectedDate(systemClockOffset).getTime() - clockTime) >= 300000; + +const getUpdatedSystemClockOffset = (clockTime, currentSystemClockOffset) => { + const clockTimeInMs = Date.parse(clockTime); + if (isClockSkewed(clockTimeInMs, currentSystemClockOffset)) { + return clockTimeInMs - Date.now(); + } + return currentSystemClockOffset; +}; + +const throwSigningPropertyError = (name, property) => { + if (!property) { + throw new Error(`Property \`${name}\` is not resolved for AWS SDK SigV4Auth`); + } + return property; +}; +const validateSigningProperties = async (signingProperties) => { + const context = throwSigningPropertyError("context", signingProperties.context); + const config = throwSigningPropertyError("config", signingProperties.config); + const authScheme = context.endpointV2?.properties?.authSchemes?.[0]; + const signerFunction = throwSigningPropertyError("signer", config.signer); + const signer = await signerFunction(authScheme); + const signingRegion = signingProperties?.signingRegion; + const signingRegionSet = signingProperties?.signingRegionSet; + const signingName = signingProperties?.signingName; + return { + config, + signer, + signingRegion, + signingRegionSet, + signingName, + }; +}; +class AwsSdkSigV4Signer { + async sign(httpRequest, identity, signingProperties) { + if (!protocolHttp.HttpRequest.isInstance(httpRequest)) { + throw new Error("The request is not an instance of `HttpRequest` and cannot be signed"); + } + const validatedProps = await validateSigningProperties(signingProperties); + const { config, signer } = validatedProps; + let { signingRegion, signingName } = validatedProps; + const handlerExecutionContext = signingProperties.context; + if (handlerExecutionContext?.authSchemes?.length ?? 0 > 1) { + const [first, second] = handlerExecutionContext.authSchemes; + if (first?.name === "sigv4a" && second?.name === "sigv4") { + signingRegion = second?.signingRegion ?? signingRegion; + signingName = second?.signingName ?? signingName; + } + } + const signedRequest = await signer.sign(httpRequest, { + signingDate: getSkewCorrectedDate(config.systemClockOffset), + signingRegion: signingRegion, + signingService: signingName, + }); + return signedRequest; + } + errorHandler(signingProperties) { + return (error) => { + const serverTime = error.ServerTime ?? getDateHeader(error.$response); + if (serverTime) { + const config = throwSigningPropertyError("config", signingProperties.config); + const initialSystemClockOffset = config.systemClockOffset; + config.systemClockOffset = getUpdatedSystemClockOffset(serverTime, config.systemClockOffset); + const clockSkewCorrected = config.systemClockOffset !== initialSystemClockOffset; + if (clockSkewCorrected && error.$metadata) { + error.$metadata.clockSkewCorrected = true; + } + } + throw error; + }; + } + successHandler(httpResponse, signingProperties) { + const dateHeader = getDateHeader(httpResponse); + if (dateHeader) { + const config = throwSigningPropertyError("config", signingProperties.config); + config.systemClockOffset = getUpdatedSystemClockOffset(dateHeader, config.systemClockOffset); + } + } +} +const AWSSDKSigV4Signer = AwsSdkSigV4Signer; + +class AwsSdkSigV4ASigner extends AwsSdkSigV4Signer { + async sign(httpRequest, identity, signingProperties) { + if (!protocolHttp.HttpRequest.isInstance(httpRequest)) { + throw new Error("The request is not an instance of `HttpRequest` and cannot be signed"); + } + const { config, signer, signingRegion, signingRegionSet, signingName } = await validateSigningProperties(signingProperties); + const configResolvedSigningRegionSet = await config.sigv4aSigningRegionSet?.(); + const multiRegionOverride = (configResolvedSigningRegionSet ?? + signingRegionSet ?? [signingRegion]).join(","); + const signedRequest = await signer.sign(httpRequest, { + signingDate: getSkewCorrectedDate(config.systemClockOffset), + signingRegion: multiRegionOverride, + signingService: signingName, + }); + return signedRequest; + } +} + +const getArrayForCommaSeparatedString = (str) => typeof str === "string" && str.length > 0 ? str.split(",").map((item) => item.trim()) : []; + +const getBearerTokenEnvKey = (signingName) => `AWS_BEARER_TOKEN_${signingName.replace(/[\s-]/g, "_").toUpperCase()}`; + +const NODE_AUTH_SCHEME_PREFERENCE_ENV_KEY = "AWS_AUTH_SCHEME_PREFERENCE"; +const NODE_AUTH_SCHEME_PREFERENCE_CONFIG_KEY = "auth_scheme_preference"; +const NODE_AUTH_SCHEME_PREFERENCE_OPTIONS = { + environmentVariableSelector: (env, options) => { + if (options?.signingName) { + const bearerTokenKey = getBearerTokenEnvKey(options.signingName); + if (bearerTokenKey in env) + return ["httpBearerAuth"]; + } + if (!(NODE_AUTH_SCHEME_PREFERENCE_ENV_KEY in env)) + return undefined; + return getArrayForCommaSeparatedString(env[NODE_AUTH_SCHEME_PREFERENCE_ENV_KEY]); + }, + configFileSelector: (profile) => { + if (!(NODE_AUTH_SCHEME_PREFERENCE_CONFIG_KEY in profile)) + return undefined; + return getArrayForCommaSeparatedString(profile[NODE_AUTH_SCHEME_PREFERENCE_CONFIG_KEY]); + }, + default: [], +}; + +const resolveAwsSdkSigV4AConfig = (config) => { + config.sigv4aSigningRegionSet = core.normalizeProvider(config.sigv4aSigningRegionSet); + return config; +}; +const NODE_SIGV4A_CONFIG_OPTIONS = { + environmentVariableSelector(env) { + if (env.AWS_SIGV4A_SIGNING_REGION_SET) { + return env.AWS_SIGV4A_SIGNING_REGION_SET.split(",").map((_) => _.trim()); + } + throw new propertyProvider.ProviderError("AWS_SIGV4A_SIGNING_REGION_SET not set in env.", { + tryNextLink: true, + }); + }, + configFileSelector(profile) { + if (profile.sigv4a_signing_region_set) { + return (profile.sigv4a_signing_region_set ?? "").split(",").map((_) => _.trim()); + } + throw new propertyProvider.ProviderError("sigv4a_signing_region_set not set in profile.", { + tryNextLink: true, + }); + }, + default: undefined, +}; + +const resolveAwsSdkSigV4Config = (config) => { + let inputCredentials = config.credentials; + let isUserSupplied = !!config.credentials; + let resolvedCredentials = undefined; + Object.defineProperty(config, "credentials", { + set(credentials) { + if (credentials && credentials !== inputCredentials && credentials !== resolvedCredentials) { + isUserSupplied = true; + } + inputCredentials = credentials; + const memoizedProvider = normalizeCredentialProvider(config, { + credentials: inputCredentials, + credentialDefaultProvider: config.credentialDefaultProvider, + }); + const boundProvider = bindCallerConfig(config, memoizedProvider); + if (isUserSupplied && !boundProvider.attributed) { + const isCredentialObject = typeof inputCredentials === "object" && inputCredentials !== null; + resolvedCredentials = async (options) => { + const creds = await boundProvider(options); + const attributedCreds = creds; + if (isCredentialObject && (!attributedCreds.$source || Object.keys(attributedCreds.$source).length === 0)) { + return client.setCredentialFeature(attributedCreds, "CREDENTIALS_CODE", "e"); + } + return attributedCreds; + }; + resolvedCredentials.memoized = boundProvider.memoized; + resolvedCredentials.configBound = boundProvider.configBound; + resolvedCredentials.attributed = true; + } + else { + resolvedCredentials = boundProvider; + } + }, + get() { + return resolvedCredentials; + }, + enumerable: true, + configurable: true, + }); + config.credentials = inputCredentials; + const { signingEscapePath = true, systemClockOffset = config.systemClockOffset || 0, sha256, } = config; + let signer; + if (config.signer) { + signer = core.normalizeProvider(config.signer); + } + else if (config.regionInfoProvider) { + signer = () => core.normalizeProvider(config.region)() + .then(async (region) => [ + (await config.regionInfoProvider(region, { + useFipsEndpoint: await config.useFipsEndpoint(), + useDualstackEndpoint: await config.useDualstackEndpoint(), + })) || {}, + region, + ]) + .then(([regionInfo, region]) => { + const { signingRegion, signingService } = regionInfo; + config.signingRegion = config.signingRegion || signingRegion || region; + config.signingName = config.signingName || signingService || config.serviceId; + const params = { + ...config, + credentials: config.credentials, + region: config.signingRegion, + service: config.signingName, + sha256, + uriEscapePath: signingEscapePath, + }; + const SignerCtor = config.signerConstructor || signatureV4.SignatureV4; + return new SignerCtor(params); + }); + } + else { + signer = async (authScheme) => { + authScheme = Object.assign({}, { + name: "sigv4", + signingName: config.signingName || config.defaultSigningName, + signingRegion: await core.normalizeProvider(config.region)(), + properties: {}, + }, authScheme); + const signingRegion = authScheme.signingRegion; + const signingService = authScheme.signingName; + config.signingRegion = config.signingRegion || signingRegion; + config.signingName = config.signingName || signingService || config.serviceId; + const params = { + ...config, + credentials: config.credentials, + region: config.signingRegion, + service: config.signingName, + sha256, + uriEscapePath: signingEscapePath, + }; + const SignerCtor = config.signerConstructor || signatureV4.SignatureV4; + return new SignerCtor(params); + }; + } + const resolvedConfig = Object.assign(config, { + systemClockOffset, + signingEscapePath, + signer, + }); + return resolvedConfig; +}; +const resolveAWSSDKSigV4Config = resolveAwsSdkSigV4Config; +function normalizeCredentialProvider(config, { credentials, credentialDefaultProvider, }) { + let credentialsProvider; + if (credentials) { + if (!credentials?.memoized) { + credentialsProvider = core.memoizeIdentityProvider(credentials, core.isIdentityExpired, core.doesIdentityRequireRefresh); + } + else { + credentialsProvider = credentials; + } + } + else { + if (credentialDefaultProvider) { + credentialsProvider = core.normalizeProvider(credentialDefaultProvider(Object.assign({}, config, { + parentClientConfig: config, + }))); + } + else { + credentialsProvider = async () => { + throw new Error("@aws-sdk/core::resolveAwsSdkSigV4Config - `credentials` not provided and no credentialDefaultProvider was configured."); + }; + } + } + credentialsProvider.memoized = true; + return credentialsProvider; +} +function bindCallerConfig(config, credentialsProvider) { + if (credentialsProvider.configBound) { + return credentialsProvider; + } + const fn = async (options) => credentialsProvider({ ...options, callerClientConfig: config }); + fn.memoized = credentialsProvider.memoized; + fn.configBound = true; + return fn; +} + +exports.AWSSDKSigV4Signer = AWSSDKSigV4Signer; +exports.AwsSdkSigV4ASigner = AwsSdkSigV4ASigner; +exports.AwsSdkSigV4Signer = AwsSdkSigV4Signer; +exports.NODE_AUTH_SCHEME_PREFERENCE_OPTIONS = NODE_AUTH_SCHEME_PREFERENCE_OPTIONS; +exports.NODE_SIGV4A_CONFIG_OPTIONS = NODE_SIGV4A_CONFIG_OPTIONS; +exports.getBearerTokenEnvKey = getBearerTokenEnvKey; +exports.resolveAWSSDKSigV4Config = resolveAWSSDKSigV4Config; +exports.resolveAwsSdkSigV4AConfig = resolveAwsSdkSigV4AConfig; +exports.resolveAwsSdkSigV4Config = resolveAwsSdkSigV4Config; +exports.validateSigningProperties = validateSigningProperties; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js new file mode 100644 index 000000000..1a8453ab5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js @@ -0,0 +1,1859 @@ +'use strict'; + +var cbor = require('@smithy/core/cbor'); +var schema = require('@smithy/core/schema'); +var smithyClient = require('@smithy/smithy-client'); +var protocols = require('@smithy/core/protocols'); +var serde = require('@smithy/core/serde'); +var utilBase64 = require('@smithy/util-base64'); +var utilUtf8 = require('@smithy/util-utf8'); +var xmlBuilder = require('@aws-sdk/xml-builder'); + +class ProtocolLib { + queryCompat; + constructor(queryCompat = false) { + this.queryCompat = queryCompat; + } + resolveRestContentType(defaultContentType, inputSchema) { + const members = inputSchema.getMemberSchemas(); + const httpPayloadMember = Object.values(members).find((m) => { + return !!m.getMergedTraits().httpPayload; + }); + if (httpPayloadMember) { + const mediaType = httpPayloadMember.getMergedTraits().mediaType; + if (mediaType) { + return mediaType; + } + else if (httpPayloadMember.isStringSchema()) { + return "text/plain"; + } + else if (httpPayloadMember.isBlobSchema()) { + return "application/octet-stream"; + } + else { + return defaultContentType; + } + } + else if (!inputSchema.isUnitSchema()) { + const hasBody = Object.values(members).find((m) => { + const { httpQuery, httpQueryParams, httpHeader, httpLabel, httpPrefixHeaders } = m.getMergedTraits(); + const noPrefixHeaders = httpPrefixHeaders === void 0; + return !httpQuery && !httpQueryParams && !httpHeader && !httpLabel && noPrefixHeaders; + }); + if (hasBody) { + return defaultContentType; + } + } + } + async getErrorSchemaOrThrowBaseException(errorIdentifier, defaultNamespace, response, dataObject, metadata, getErrorSchema) { + let namespace = defaultNamespace; + let errorName = errorIdentifier; + if (errorIdentifier.includes("#")) { + [namespace, errorName] = errorIdentifier.split("#"); + } + const errorMetadata = { + $metadata: metadata, + $fault: response.statusCode < 500 ? "client" : "server", + }; + const registry = schema.TypeRegistry.for(namespace); + try { + const errorSchema = getErrorSchema?.(registry, errorName) ?? registry.getSchema(errorIdentifier); + return { errorSchema, errorMetadata }; + } + catch (e) { + dataObject.message = dataObject.message ?? dataObject.Message ?? "UnknownError"; + const synthetic = schema.TypeRegistry.for("smithy.ts.sdk.synthetic." + namespace); + const baseExceptionSchema = synthetic.getBaseException(); + if (baseExceptionSchema) { + const ErrorCtor = synthetic.getErrorCtor(baseExceptionSchema) ?? Error; + throw this.decorateServiceException(Object.assign(new ErrorCtor({ name: errorName }), errorMetadata), dataObject); + } + throw this.decorateServiceException(Object.assign(new Error(errorName), errorMetadata), dataObject); + } + } + decorateServiceException(exception, additions = {}) { + if (this.queryCompat) { + const msg = exception.Message ?? additions.Message; + const error = smithyClient.decorateServiceException(exception, additions); + if (msg) { + error.message = msg; + } + error.Error = { + ...error.Error, + Type: error.Error?.Type, + Code: error.Error?.Code, + Message: error.Error?.message ?? error.Error?.Message ?? msg, + }; + const reqId = error.$metadata.requestId; + if (reqId) { + error.RequestId = reqId; + } + return error; + } + return smithyClient.decorateServiceException(exception, additions); + } + setQueryCompatError(output, response) { + const queryErrorHeader = response.headers?.["x-amzn-query-error"]; + if (output !== undefined && queryErrorHeader != null) { + const [Code, Type] = queryErrorHeader.split(";"); + const entries = Object.entries(output); + const Error = { + Code, + Type, + }; + Object.assign(output, Error); + for (const [k, v] of entries) { + Error[k === "message" ? "Message" : k] = v; + } + delete Error.__type; + output.Error = Error; + } + } + queryCompatOutput(queryCompatErrorData, errorData) { + if (queryCompatErrorData.Error) { + errorData.Error = queryCompatErrorData.Error; + } + if (queryCompatErrorData.Type) { + errorData.Type = queryCompatErrorData.Type; + } + if (queryCompatErrorData.Code) { + errorData.Code = queryCompatErrorData.Code; + } + } + findQueryCompatibleError(registry, errorName) { + try { + return registry.getSchema(errorName); + } + catch (e) { + return registry.find((schema$1) => schema.NormalizedSchema.of(schema$1).getMergedTraits().awsQueryError?.[0] === errorName); + } + } +} + +class AwsSmithyRpcV2CborProtocol extends cbor.SmithyRpcV2CborProtocol { + awsQueryCompatible; + mixin; + constructor({ defaultNamespace, awsQueryCompatible, }) { + super({ defaultNamespace }); + this.awsQueryCompatible = !!awsQueryCompatible; + this.mixin = new ProtocolLib(this.awsQueryCompatible); + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + if (this.awsQueryCompatible) { + request.headers["x-amzn-query-mode"] = "true"; + } + return request; + } + async handleError(operationSchema, context, response, dataObject, metadata) { + if (this.awsQueryCompatible) { + this.mixin.setQueryCompatError(dataObject, response); + } + const errorName = (() => { + const compatHeader = response.headers["x-amzn-query-error"]; + if (compatHeader && this.awsQueryCompatible) { + return compatHeader.split(";")[0]; + } + return cbor.loadSmithyRpcV2CborErrorCode(response, dataObject) ?? "Unknown"; + })(); + const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorName, this.options.defaultNamespace, response, dataObject, metadata, this.awsQueryCompatible ? this.mixin.findQueryCompatibleError : undefined); + const ns = schema.NormalizedSchema.of(errorSchema); + const message = dataObject.message ?? dataObject.Message ?? "Unknown"; + const ErrorCtor = schema.TypeRegistry.for(errorSchema[1]).getErrorCtor(errorSchema) ?? Error; + const exception = new ErrorCtor(message); + const output = {}; + for (const [name, member] of ns.structIterator()) { + if (dataObject[name] != null) { + output[name] = this.deserializer.readValue(member, dataObject[name]); + } + } + if (this.awsQueryCompatible) { + this.mixin.queryCompatOutput(dataObject, output); + } + throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output), dataObject); + } +} + +const _toStr = (val) => { + if (val == null) { + return val; + } + if (typeof val === "number" || typeof val === "bigint") { + const warning = new Error(`Received number ${val} where a string was expected.`); + warning.name = "Warning"; + console.warn(warning); + return String(val); + } + if (typeof val === "boolean") { + const warning = new Error(`Received boolean ${val} where a string was expected.`); + warning.name = "Warning"; + console.warn(warning); + return String(val); + } + return val; +}; +const _toBool = (val) => { + if (val == null) { + return val; + } + if (typeof val === "string") { + const lowercase = val.toLowerCase(); + if (val !== "" && lowercase !== "false" && lowercase !== "true") { + const warning = new Error(`Received string "${val}" where a boolean was expected.`); + warning.name = "Warning"; + console.warn(warning); + } + return val !== "" && lowercase !== "false"; + } + return val; +}; +const _toNum = (val) => { + if (val == null) { + return val; + } + if (typeof val === "string") { + const num = Number(val); + if (num.toString() !== val) { + const warning = new Error(`Received string "${val}" where a number was expected.`); + warning.name = "Warning"; + console.warn(warning); + return val; + } + return num; + } + return val; +}; + +class SerdeContextConfig { + serdeContext; + setSerdeContext(serdeContext) { + this.serdeContext = serdeContext; + } +} + +class UnionSerde { + from; + to; + keys; + constructor(from, to) { + this.from = from; + this.to = to; + this.keys = new Set(Object.keys(this.from).filter((k) => k !== "__type")); + } + mark(key) { + this.keys.delete(key); + } + hasUnknown() { + return this.keys.size === 1 && Object.keys(this.to).length === 0; + } + writeUnknown() { + if (this.hasUnknown()) { + const k = this.keys.values().next().value; + const v = this.from[k]; + this.to.$unknown = [k, v]; + } + } +} + +function jsonReviver(key, value, context) { + if (context?.source) { + const numericString = context.source; + if (typeof value === "number") { + if (value > Number.MAX_SAFE_INTEGER || value < Number.MIN_SAFE_INTEGER || numericString !== String(value)) { + const isFractional = numericString.includes("."); + if (isFractional) { + return new serde.NumericValue(numericString, "bigDecimal"); + } + else { + return BigInt(numericString); + } + } + } + } + return value; +} + +const collectBodyString = (streamBody, context) => smithyClient.collectBody(streamBody, context).then((body) => (context?.utf8Encoder ?? utilUtf8.toUtf8)(body)); + +const parseJsonBody = (streamBody, context) => collectBodyString(streamBody, context).then((encoded) => { + if (encoded.length) { + try { + return JSON.parse(encoded); + } + catch (e) { + if (e?.name === "SyntaxError") { + Object.defineProperty(e, "$responseBodyText", { + value: encoded, + }); + } + throw e; + } + } + return {}; +}); +const parseJsonErrorBody = async (errorBody, context) => { + const value = await parseJsonBody(errorBody, context); + value.message = value.message ?? value.Message; + return value; +}; +const loadRestJsonErrorCode = (output, data) => { + const findKey = (object, key) => Object.keys(object).find((k) => k.toLowerCase() === key.toLowerCase()); + const sanitizeErrorCode = (rawValue) => { + let cleanValue = rawValue; + if (typeof cleanValue === "number") { + cleanValue = cleanValue.toString(); + } + if (cleanValue.indexOf(",") >= 0) { + cleanValue = cleanValue.split(",")[0]; + } + if (cleanValue.indexOf(":") >= 0) { + cleanValue = cleanValue.split(":")[0]; + } + if (cleanValue.indexOf("#") >= 0) { + cleanValue = cleanValue.split("#")[1]; + } + return cleanValue; + }; + const headerKey = findKey(output.headers, "x-amzn-errortype"); + if (headerKey !== undefined) { + return sanitizeErrorCode(output.headers[headerKey]); + } + if (data && typeof data === "object") { + const codeKey = findKey(data, "code"); + if (codeKey && data[codeKey] !== undefined) { + return sanitizeErrorCode(data[codeKey]); + } + if (data["__type"] !== undefined) { + return sanitizeErrorCode(data["__type"]); + } + } +}; + +class JsonShapeDeserializer extends SerdeContextConfig { + settings; + constructor(settings) { + super(); + this.settings = settings; + } + async read(schema, data) { + return this._read(schema, typeof data === "string" ? JSON.parse(data, jsonReviver) : await parseJsonBody(data, this.serdeContext)); + } + readObject(schema, data) { + return this._read(schema, data); + } + _read(schema$1, value) { + const isObject = value !== null && typeof value === "object"; + const ns = schema.NormalizedSchema.of(schema$1); + if (isObject) { + if (ns.isStructSchema()) { + const record = value; + const union = ns.isUnionSchema(); + const out = {}; + let nameMap = void 0; + const { jsonName } = this.settings; + if (jsonName) { + nameMap = {}; + } + let unionSerde; + if (union) { + unionSerde = new UnionSerde(record, out); + } + for (const [memberName, memberSchema] of ns.structIterator()) { + let fromKey = memberName; + if (jsonName) { + fromKey = memberSchema.getMergedTraits().jsonName ?? fromKey; + nameMap[fromKey] = memberName; + } + if (union) { + unionSerde.mark(fromKey); + } + if (record[fromKey] != null) { + out[memberName] = this._read(memberSchema, record[fromKey]); + } + } + if (union) { + unionSerde.writeUnknown(); + } + else if (typeof record.__type === "string") { + for (const [k, v] of Object.entries(record)) { + const t = jsonName ? nameMap[k] ?? k : k; + if (!(t in out)) { + out[t] = v; + } + } + } + return out; + } + if (Array.isArray(value) && ns.isListSchema()) { + const listMember = ns.getValueSchema(); + const out = []; + for (const item of value) { + out.push(this._read(listMember, item)); + } + return out; + } + if (ns.isMapSchema()) { + const mapMember = ns.getValueSchema(); + const out = {}; + for (const [_k, _v] of Object.entries(value)) { + out[_k] = this._read(mapMember, _v); + } + return out; + } + } + if (ns.isBlobSchema() && typeof value === "string") { + return utilBase64.fromBase64(value); + } + const mediaType = ns.getMergedTraits().mediaType; + if (ns.isStringSchema() && typeof value === "string" && mediaType) { + const isJson = mediaType === "application/json" || mediaType.endsWith("+json"); + if (isJson) { + return serde.LazyJsonString.from(value); + } + return value; + } + if (ns.isTimestampSchema() && value != null) { + const format = protocols.determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + return serde.parseRfc3339DateTimeWithOffset(value); + case 6: + return serde.parseRfc7231DateTime(value); + case 7: + return serde.parseEpochTimestamp(value); + default: + console.warn("Missing timestamp format, parsing value with Date constructor:", value); + return new Date(value); + } + } + if (ns.isBigIntegerSchema() && (typeof value === "number" || typeof value === "string")) { + return BigInt(value); + } + if (ns.isBigDecimalSchema() && value != undefined) { + if (value instanceof serde.NumericValue) { + return value; + } + const untyped = value; + if (untyped.type === "bigDecimal" && "string" in untyped) { + return new serde.NumericValue(untyped.string, untyped.type); + } + return new serde.NumericValue(String(value), "bigDecimal"); + } + if (ns.isNumericSchema() && typeof value === "string") { + switch (value) { + case "Infinity": + return Infinity; + case "-Infinity": + return -Infinity; + case "NaN": + return NaN; + } + return value; + } + if (ns.isDocumentSchema()) { + if (isObject) { + const out = Array.isArray(value) ? [] : {}; + for (const [k, v] of Object.entries(value)) { + if (v instanceof serde.NumericValue) { + out[k] = v; + } + else { + out[k] = this._read(ns, v); + } + } + return out; + } + else { + return structuredClone(value); + } + } + return value; + } +} + +const NUMERIC_CONTROL_CHAR = String.fromCharCode(925); +class JsonReplacer { + values = new Map(); + counter = 0; + stage = 0; + createReplacer() { + if (this.stage === 1) { + throw new Error("@aws-sdk/core/protocols - JsonReplacer already created."); + } + if (this.stage === 2) { + throw new Error("@aws-sdk/core/protocols - JsonReplacer exhausted."); + } + this.stage = 1; + return (key, value) => { + if (value instanceof serde.NumericValue) { + const v = `${NUMERIC_CONTROL_CHAR + "nv" + this.counter++}_` + value.string; + this.values.set(`"${v}"`, value.string); + return v; + } + if (typeof value === "bigint") { + const s = value.toString(); + const v = `${NUMERIC_CONTROL_CHAR + "b" + this.counter++}_` + s; + this.values.set(`"${v}"`, s); + return v; + } + return value; + }; + } + replaceInJson(json) { + if (this.stage === 0) { + throw new Error("@aws-sdk/core/protocols - JsonReplacer not created yet."); + } + if (this.stage === 2) { + throw new Error("@aws-sdk/core/protocols - JsonReplacer exhausted."); + } + this.stage = 2; + if (this.counter === 0) { + return json; + } + for (const [key, value] of this.values) { + json = json.replace(key, value); + } + return json; + } +} + +class JsonShapeSerializer extends SerdeContextConfig { + settings; + buffer; + useReplacer = false; + rootSchema; + constructor(settings) { + super(); + this.settings = settings; + } + write(schema$1, value) { + this.rootSchema = schema.NormalizedSchema.of(schema$1); + this.buffer = this._write(this.rootSchema, value); + } + writeDiscriminatedDocument(schema$1, value) { + this.write(schema$1, value); + if (typeof this.buffer === "object") { + this.buffer.__type = schema.NormalizedSchema.of(schema$1).getName(true); + } + } + flush() { + const { rootSchema, useReplacer } = this; + this.rootSchema = undefined; + this.useReplacer = false; + if (rootSchema?.isStructSchema() || rootSchema?.isDocumentSchema()) { + if (!useReplacer) { + return JSON.stringify(this.buffer); + } + const replacer = new JsonReplacer(); + return replacer.replaceInJson(JSON.stringify(this.buffer, replacer.createReplacer(), 0)); + } + return this.buffer; + } + _write(schema$1, value, container) { + const isObject = value !== null && typeof value === "object"; + const ns = schema.NormalizedSchema.of(schema$1); + if (isObject) { + if (ns.isStructSchema()) { + const record = value; + const out = {}; + const { jsonName } = this.settings; + let nameMap = void 0; + if (jsonName) { + nameMap = {}; + } + for (const [memberName, memberSchema] of ns.structIterator()) { + const serializableValue = this._write(memberSchema, record[memberName], ns); + if (serializableValue !== undefined) { + let targetKey = memberName; + if (jsonName) { + targetKey = memberSchema.getMergedTraits().jsonName ?? memberName; + nameMap[memberName] = targetKey; + } + out[targetKey] = serializableValue; + } + } + if (ns.isUnionSchema() && Object.keys(out).length === 0) { + const { $unknown } = record; + if (Array.isArray($unknown)) { + const [k, v] = $unknown; + out[k] = this._write(15, v); + } + } + else if (typeof record.__type === "string") { + for (const [k, v] of Object.entries(record)) { + const targetKey = jsonName ? nameMap[k] ?? k : k; + if (!(targetKey in out)) { + out[targetKey] = this._write(15, v); + } + } + } + return out; + } + if (Array.isArray(value) && ns.isListSchema()) { + const listMember = ns.getValueSchema(); + const out = []; + const sparse = !!ns.getMergedTraits().sparse; + for (const item of value) { + if (sparse || item != null) { + out.push(this._write(listMember, item)); + } + } + return out; + } + if (ns.isMapSchema()) { + const mapMember = ns.getValueSchema(); + const out = {}; + const sparse = !!ns.getMergedTraits().sparse; + for (const [_k, _v] of Object.entries(value)) { + if (sparse || _v != null) { + out[_k] = this._write(mapMember, _v); + } + } + return out; + } + if (value instanceof Uint8Array && (ns.isBlobSchema() || ns.isDocumentSchema())) { + if (ns === this.rootSchema) { + return value; + } + return (this.serdeContext?.base64Encoder ?? utilBase64.toBase64)(value); + } + if (value instanceof Date && (ns.isTimestampSchema() || ns.isDocumentSchema())) { + const format = protocols.determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + return value.toISOString().replace(".000Z", "Z"); + case 6: + return serde.dateToUtcString(value); + case 7: + return value.getTime() / 1000; + default: + console.warn("Missing timestamp format, using epoch seconds", value); + return value.getTime() / 1000; + } + } + if (value instanceof serde.NumericValue) { + this.useReplacer = true; + } + } + if (value === null && container?.isStructSchema()) { + return void 0; + } + if (ns.isStringSchema()) { + if (typeof value === "undefined" && ns.isIdempotencyToken()) { + return serde.generateIdempotencyToken(); + } + const mediaType = ns.getMergedTraits().mediaType; + if (value != null && mediaType) { + const isJson = mediaType === "application/json" || mediaType.endsWith("+json"); + if (isJson) { + return serde.LazyJsonString.from(value); + } + } + return value; + } + if (typeof value === "number" && ns.isNumericSchema()) { + if (Math.abs(value) === Infinity || isNaN(value)) { + return String(value); + } + return value; + } + if (typeof value === "string" && ns.isBlobSchema()) { + if (ns === this.rootSchema) { + return value; + } + return (this.serdeContext?.base64Encoder ?? utilBase64.toBase64)(value); + } + if (typeof value === "bigint") { + this.useReplacer = true; + } + if (ns.isDocumentSchema()) { + if (isObject) { + const out = Array.isArray(value) ? [] : {}; + for (const [k, v] of Object.entries(value)) { + if (v instanceof serde.NumericValue) { + this.useReplacer = true; + out[k] = v; + } + else { + out[k] = this._write(ns, v); + } + } + return out; + } + else { + return structuredClone(value); + } + } + return value; + } +} + +class JsonCodec extends SerdeContextConfig { + settings; + constructor(settings) { + super(); + this.settings = settings; + } + createSerializer() { + const serializer = new JsonShapeSerializer(this.settings); + serializer.setSerdeContext(this.serdeContext); + return serializer; + } + createDeserializer() { + const deserializer = new JsonShapeDeserializer(this.settings); + deserializer.setSerdeContext(this.serdeContext); + return deserializer; + } +} + +class AwsJsonRpcProtocol extends protocols.RpcProtocol { + serializer; + deserializer; + serviceTarget; + codec; + mixin; + awsQueryCompatible; + constructor({ defaultNamespace, serviceTarget, awsQueryCompatible, jsonCodec, }) { + super({ + defaultNamespace, + }); + this.serviceTarget = serviceTarget; + this.codec = + jsonCodec ?? + new JsonCodec({ + timestampFormat: { + useTrait: true, + default: 7, + }, + jsonName: false, + }); + this.serializer = this.codec.createSerializer(); + this.deserializer = this.codec.createDeserializer(); + this.awsQueryCompatible = !!awsQueryCompatible; + this.mixin = new ProtocolLib(this.awsQueryCompatible); + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + if (!request.path.endsWith("/")) { + request.path += "/"; + } + Object.assign(request.headers, { + "content-type": `application/x-amz-json-${this.getJsonRpcVersion()}`, + "x-amz-target": `${this.serviceTarget}.${operationSchema.name}`, + }); + if (this.awsQueryCompatible) { + request.headers["x-amzn-query-mode"] = "true"; + } + if (schema.deref(operationSchema.input) === "unit" || !request.body) { + request.body = "{}"; + } + return request; + } + getPayloadCodec() { + return this.codec; + } + async handleError(operationSchema, context, response, dataObject, metadata) { + if (this.awsQueryCompatible) { + this.mixin.setQueryCompatError(dataObject, response); + } + const errorIdentifier = loadRestJsonErrorCode(response, dataObject) ?? "Unknown"; + const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorIdentifier, this.options.defaultNamespace, response, dataObject, metadata, this.awsQueryCompatible ? this.mixin.findQueryCompatibleError : undefined); + const ns = schema.NormalizedSchema.of(errorSchema); + const message = dataObject.message ?? dataObject.Message ?? "Unknown"; + const ErrorCtor = schema.TypeRegistry.for(errorSchema[1]).getErrorCtor(errorSchema) ?? Error; + const exception = new ErrorCtor(message); + const output = {}; + for (const [name, member] of ns.structIterator()) { + if (dataObject[name] != null) { + output[name] = this.codec.createDeserializer().readObject(member, dataObject[name]); + } + } + if (this.awsQueryCompatible) { + this.mixin.queryCompatOutput(dataObject, output); + } + throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output), dataObject); + } +} + +class AwsJson1_0Protocol extends AwsJsonRpcProtocol { + constructor({ defaultNamespace, serviceTarget, awsQueryCompatible, jsonCodec, }) { + super({ + defaultNamespace, + serviceTarget, + awsQueryCompatible, + jsonCodec, + }); + } + getShapeId() { + return "aws.protocols#awsJson1_0"; + } + getJsonRpcVersion() { + return "1.0"; + } + getDefaultContentType() { + return "application/x-amz-json-1.0"; + } +} + +class AwsJson1_1Protocol extends AwsJsonRpcProtocol { + constructor({ defaultNamespace, serviceTarget, awsQueryCompatible, jsonCodec, }) { + super({ + defaultNamespace, + serviceTarget, + awsQueryCompatible, + jsonCodec, + }); + } + getShapeId() { + return "aws.protocols#awsJson1_1"; + } + getJsonRpcVersion() { + return "1.1"; + } + getDefaultContentType() { + return "application/x-amz-json-1.1"; + } +} + +class AwsRestJsonProtocol extends protocols.HttpBindingProtocol { + serializer; + deserializer; + codec; + mixin = new ProtocolLib(); + constructor({ defaultNamespace }) { + super({ + defaultNamespace, + }); + const settings = { + timestampFormat: { + useTrait: true, + default: 7, + }, + httpBindings: true, + jsonName: true, + }; + this.codec = new JsonCodec(settings); + this.serializer = new protocols.HttpInterceptingShapeSerializer(this.codec.createSerializer(), settings); + this.deserializer = new protocols.HttpInterceptingShapeDeserializer(this.codec.createDeserializer(), settings); + } + getShapeId() { + return "aws.protocols#restJson1"; + } + getPayloadCodec() { + return this.codec; + } + setSerdeContext(serdeContext) { + this.codec.setSerdeContext(serdeContext); + super.setSerdeContext(serdeContext); + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + const inputSchema = schema.NormalizedSchema.of(operationSchema.input); + if (!request.headers["content-type"]) { + const contentType = this.mixin.resolveRestContentType(this.getDefaultContentType(), inputSchema); + if (contentType) { + request.headers["content-type"] = contentType; + } + } + if (request.body == null && request.headers["content-type"] === this.getDefaultContentType()) { + request.body = "{}"; + } + return request; + } + async deserializeResponse(operationSchema, context, response) { + const output = await super.deserializeResponse(operationSchema, context, response); + const outputSchema = schema.NormalizedSchema.of(operationSchema.output); + for (const [name, member] of outputSchema.structIterator()) { + if (member.getMemberTraits().httpPayload && !(name in output)) { + output[name] = null; + } + } + return output; + } + async handleError(operationSchema, context, response, dataObject, metadata) { + const errorIdentifier = loadRestJsonErrorCode(response, dataObject) ?? "Unknown"; + const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorIdentifier, this.options.defaultNamespace, response, dataObject, metadata); + const ns = schema.NormalizedSchema.of(errorSchema); + const message = dataObject.message ?? dataObject.Message ?? "Unknown"; + const ErrorCtor = schema.TypeRegistry.for(errorSchema[1]).getErrorCtor(errorSchema) ?? Error; + const exception = new ErrorCtor(message); + await this.deserializeHttpMessage(errorSchema, context, response, dataObject); + const output = {}; + for (const [name, member] of ns.structIterator()) { + const target = member.getMergedTraits().jsonName ?? name; + output[name] = this.codec.createDeserializer().readObject(member, dataObject[target]); + } + throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output), dataObject); + } + getDefaultContentType() { + return "application/json"; + } +} + +const awsExpectUnion = (value) => { + if (value == null) { + return undefined; + } + if (typeof value === "object" && "__type" in value) { + delete value.__type; + } + return smithyClient.expectUnion(value); +}; + +class XmlShapeDeserializer extends SerdeContextConfig { + settings; + stringDeserializer; + constructor(settings) { + super(); + this.settings = settings; + this.stringDeserializer = new protocols.FromStringShapeDeserializer(settings); + } + setSerdeContext(serdeContext) { + this.serdeContext = serdeContext; + this.stringDeserializer.setSerdeContext(serdeContext); + } + read(schema$1, bytes, key) { + const ns = schema.NormalizedSchema.of(schema$1); + const memberSchemas = ns.getMemberSchemas(); + const isEventPayload = ns.isStructSchema() && + ns.isMemberSchema() && + !!Object.values(memberSchemas).find((memberNs) => { + return !!memberNs.getMemberTraits().eventPayload; + }); + if (isEventPayload) { + const output = {}; + const memberName = Object.keys(memberSchemas)[0]; + const eventMemberSchema = memberSchemas[memberName]; + if (eventMemberSchema.isBlobSchema()) { + output[memberName] = bytes; + } + else { + output[memberName] = this.read(memberSchemas[memberName], bytes); + } + return output; + } + const xmlString = (this.serdeContext?.utf8Encoder ?? utilUtf8.toUtf8)(bytes); + const parsedObject = this.parseXml(xmlString); + return this.readSchema(schema$1, key ? parsedObject[key] : parsedObject); + } + readSchema(_schema, value) { + const ns = schema.NormalizedSchema.of(_schema); + if (ns.isUnitSchema()) { + return; + } + const traits = ns.getMergedTraits(); + if (ns.isListSchema() && !Array.isArray(value)) { + return this.readSchema(ns, [value]); + } + if (value == null) { + return value; + } + if (typeof value === "object") { + const flat = !!traits.xmlFlattened; + if (ns.isListSchema()) { + const listValue = ns.getValueSchema(); + const buffer = []; + const sourceKey = listValue.getMergedTraits().xmlName ?? "member"; + const source = flat ? value : (value[0] ?? value)[sourceKey]; + if (source == null) { + return buffer; + } + const sourceArray = Array.isArray(source) ? source : [source]; + for (const v of sourceArray) { + buffer.push(this.readSchema(listValue, v)); + } + return buffer; + } + const buffer = {}; + if (ns.isMapSchema()) { + const keyNs = ns.getKeySchema(); + const memberNs = ns.getValueSchema(); + let entries; + if (flat) { + entries = Array.isArray(value) ? value : [value]; + } + else { + entries = Array.isArray(value.entry) ? value.entry : [value.entry]; + } + const keyProperty = keyNs.getMergedTraits().xmlName ?? "key"; + const valueProperty = memberNs.getMergedTraits().xmlName ?? "value"; + for (const entry of entries) { + const key = entry[keyProperty]; + const value = entry[valueProperty]; + buffer[key] = this.readSchema(memberNs, value); + } + return buffer; + } + if (ns.isStructSchema()) { + const union = ns.isUnionSchema(); + let unionSerde; + if (union) { + unionSerde = new UnionSerde(value, buffer); + } + for (const [memberName, memberSchema] of ns.structIterator()) { + const memberTraits = memberSchema.getMergedTraits(); + const xmlObjectKey = !memberTraits.httpPayload + ? memberSchema.getMemberTraits().xmlName ?? memberName + : memberTraits.xmlName ?? memberSchema.getName(); + if (union) { + unionSerde.mark(xmlObjectKey); + } + if (value[xmlObjectKey] != null) { + buffer[memberName] = this.readSchema(memberSchema, value[xmlObjectKey]); + } + } + if (union) { + unionSerde.writeUnknown(); + } + return buffer; + } + if (ns.isDocumentSchema()) { + return value; + } + throw new Error(`@aws-sdk/core/protocols - xml deserializer unhandled schema type for ${ns.getName(true)}`); + } + if (ns.isListSchema()) { + return []; + } + if (ns.isMapSchema() || ns.isStructSchema()) { + return {}; + } + return this.stringDeserializer.read(ns, value); + } + parseXml(xml) { + if (xml.length) { + let parsedObj; + try { + parsedObj = xmlBuilder.parseXML(xml); + } + catch (e) { + if (e && typeof e === "object") { + Object.defineProperty(e, "$responseBodyText", { + value: xml, + }); + } + throw e; + } + const textNodeName = "#text"; + const key = Object.keys(parsedObj)[0]; + const parsedObjToReturn = parsedObj[key]; + if (parsedObjToReturn[textNodeName]) { + parsedObjToReturn[key] = parsedObjToReturn[textNodeName]; + delete parsedObjToReturn[textNodeName]; + } + return smithyClient.getValueFromTextNode(parsedObjToReturn); + } + return {}; + } +} + +class QueryShapeSerializer extends SerdeContextConfig { + settings; + buffer; + constructor(settings) { + super(); + this.settings = settings; + } + write(schema$1, value, prefix = "") { + if (this.buffer === undefined) { + this.buffer = ""; + } + const ns = schema.NormalizedSchema.of(schema$1); + if (prefix && !prefix.endsWith(".")) { + prefix += "."; + } + if (ns.isBlobSchema()) { + if (typeof value === "string" || value instanceof Uint8Array) { + this.writeKey(prefix); + this.writeValue((this.serdeContext?.base64Encoder ?? utilBase64.toBase64)(value)); + } + } + else if (ns.isBooleanSchema() || ns.isNumericSchema() || ns.isStringSchema()) { + if (value != null) { + this.writeKey(prefix); + this.writeValue(String(value)); + } + else if (ns.isIdempotencyToken()) { + this.writeKey(prefix); + this.writeValue(serde.generateIdempotencyToken()); + } + } + else if (ns.isBigIntegerSchema()) { + if (value != null) { + this.writeKey(prefix); + this.writeValue(String(value)); + } + } + else if (ns.isBigDecimalSchema()) { + if (value != null) { + this.writeKey(prefix); + this.writeValue(value instanceof serde.NumericValue ? value.string : String(value)); + } + } + else if (ns.isTimestampSchema()) { + if (value instanceof Date) { + this.writeKey(prefix); + const format = protocols.determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + this.writeValue(value.toISOString().replace(".000Z", "Z")); + break; + case 6: + this.writeValue(smithyClient.dateToUtcString(value)); + break; + case 7: + this.writeValue(String(value.getTime() / 1000)); + break; + } + } + } + else if (ns.isDocumentSchema()) { + if (Array.isArray(value)) { + this.write(64 | 15, value, prefix); + } + else if (value instanceof Date) { + this.write(4, value, prefix); + } + else if (value instanceof Uint8Array) { + this.write(21, value, prefix); + } + else if (value && typeof value === "object") { + this.write(128 | 15, value, prefix); + } + else { + this.writeKey(prefix); + this.writeValue(String(value)); + } + } + else if (ns.isListSchema()) { + if (Array.isArray(value)) { + if (value.length === 0) { + if (this.settings.serializeEmptyLists) { + this.writeKey(prefix); + this.writeValue(""); + } + } + else { + const member = ns.getValueSchema(); + const flat = this.settings.flattenLists || ns.getMergedTraits().xmlFlattened; + let i = 1; + for (const item of value) { + if (item == null) { + continue; + } + const traits = member.getMergedTraits(); + const suffix = this.getKey("member", traits.xmlName, traits.ec2QueryName); + const key = flat ? `${prefix}${i}` : `${prefix}${suffix}.${i}`; + this.write(member, item, key); + ++i; + } + } + } + } + else if (ns.isMapSchema()) { + if (value && typeof value === "object") { + const keySchema = ns.getKeySchema(); + const memberSchema = ns.getValueSchema(); + const flat = ns.getMergedTraits().xmlFlattened; + let i = 1; + for (const [k, v] of Object.entries(value)) { + if (v == null) { + continue; + } + const keyTraits = keySchema.getMergedTraits(); + const keySuffix = this.getKey("key", keyTraits.xmlName, keyTraits.ec2QueryName); + const key = flat ? `${prefix}${i}.${keySuffix}` : `${prefix}entry.${i}.${keySuffix}`; + const valTraits = memberSchema.getMergedTraits(); + const valueSuffix = this.getKey("value", valTraits.xmlName, valTraits.ec2QueryName); + const valueKey = flat ? `${prefix}${i}.${valueSuffix}` : `${prefix}entry.${i}.${valueSuffix}`; + this.write(keySchema, k, key); + this.write(memberSchema, v, valueKey); + ++i; + } + } + } + else if (ns.isStructSchema()) { + if (value && typeof value === "object") { + let didWriteMember = false; + for (const [memberName, member] of ns.structIterator()) { + if (value[memberName] == null && !member.isIdempotencyToken()) { + continue; + } + const traits = member.getMergedTraits(); + const suffix = this.getKey(memberName, traits.xmlName, traits.ec2QueryName, "struct"); + const key = `${prefix}${suffix}`; + this.write(member, value[memberName], key); + didWriteMember = true; + } + if (!didWriteMember && ns.isUnionSchema()) { + const { $unknown } = value; + if (Array.isArray($unknown)) { + const [k, v] = $unknown; + const key = `${prefix}${k}`; + this.write(15, v, key); + } + } + } + } + else if (ns.isUnitSchema()) ; + else { + throw new Error(`@aws-sdk/core/protocols - QuerySerializer unrecognized schema type ${ns.getName(true)}`); + } + } + flush() { + if (this.buffer === undefined) { + throw new Error("@aws-sdk/core/protocols - QuerySerializer cannot flush with nothing written to buffer."); + } + const str = this.buffer; + delete this.buffer; + return str; + } + getKey(memberName, xmlName, ec2QueryName, keySource) { + const { ec2, capitalizeKeys } = this.settings; + if (ec2 && ec2QueryName) { + return ec2QueryName; + } + const key = xmlName ?? memberName; + if (capitalizeKeys && keySource === "struct") { + return key[0].toUpperCase() + key.slice(1); + } + return key; + } + writeKey(key) { + if (key.endsWith(".")) { + key = key.slice(0, key.length - 1); + } + this.buffer += `&${protocols.extendedEncodeURIComponent(key)}=`; + } + writeValue(value) { + this.buffer += protocols.extendedEncodeURIComponent(value); + } +} + +class AwsQueryProtocol extends protocols.RpcProtocol { + options; + serializer; + deserializer; + mixin = new ProtocolLib(); + constructor(options) { + super({ + defaultNamespace: options.defaultNamespace, + }); + this.options = options; + const settings = { + timestampFormat: { + useTrait: true, + default: 5, + }, + httpBindings: false, + xmlNamespace: options.xmlNamespace, + serviceNamespace: options.defaultNamespace, + serializeEmptyLists: true, + }; + this.serializer = new QueryShapeSerializer(settings); + this.deserializer = new XmlShapeDeserializer(settings); + } + getShapeId() { + return "aws.protocols#awsQuery"; + } + setSerdeContext(serdeContext) { + this.serializer.setSerdeContext(serdeContext); + this.deserializer.setSerdeContext(serdeContext); + } + getPayloadCodec() { + throw new Error("AWSQuery protocol has no payload codec."); + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + if (!request.path.endsWith("/")) { + request.path += "/"; + } + Object.assign(request.headers, { + "content-type": `application/x-www-form-urlencoded`, + }); + if (schema.deref(operationSchema.input) === "unit" || !request.body) { + request.body = ""; + } + const action = operationSchema.name.split("#")[1] ?? operationSchema.name; + request.body = `Action=${action}&Version=${this.options.version}` + request.body; + if (request.body.endsWith("&")) { + request.body = request.body.slice(-1); + } + return request; + } + async deserializeResponse(operationSchema, context, response) { + const deserializer = this.deserializer; + const ns = schema.NormalizedSchema.of(operationSchema.output); + const dataObject = {}; + if (response.statusCode >= 300) { + const bytes = await protocols.collectBody(response.body, context); + if (bytes.byteLength > 0) { + Object.assign(dataObject, await deserializer.read(15, bytes)); + } + await this.handleError(operationSchema, context, response, dataObject, this.deserializeMetadata(response)); + } + for (const header in response.headers) { + const value = response.headers[header]; + delete response.headers[header]; + response.headers[header.toLowerCase()] = value; + } + const shortName = operationSchema.name.split("#")[1] ?? operationSchema.name; + const awsQueryResultKey = ns.isStructSchema() && this.useNestedResult() ? shortName + "Result" : undefined; + const bytes = await protocols.collectBody(response.body, context); + if (bytes.byteLength > 0) { + Object.assign(dataObject, await deserializer.read(ns, bytes, awsQueryResultKey)); + } + const output = { + $metadata: this.deserializeMetadata(response), + ...dataObject, + }; + return output; + } + useNestedResult() { + return true; + } + async handleError(operationSchema, context, response, dataObject, metadata) { + const errorIdentifier = this.loadQueryErrorCode(response, dataObject) ?? "Unknown"; + const errorData = this.loadQueryError(dataObject) ?? {}; + const message = this.loadQueryErrorMessage(dataObject); + errorData.message = message; + errorData.Error = { + Type: errorData.Type, + Code: errorData.Code, + Message: message, + }; + const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorIdentifier, this.options.defaultNamespace, response, errorData, metadata, this.mixin.findQueryCompatibleError); + const ns = schema.NormalizedSchema.of(errorSchema); + const ErrorCtor = schema.TypeRegistry.for(errorSchema[1]).getErrorCtor(errorSchema) ?? Error; + const exception = new ErrorCtor(message); + const output = { + Type: errorData.Error.Type, + Code: errorData.Error.Code, + Error: errorData.Error, + }; + for (const [name, member] of ns.structIterator()) { + const target = member.getMergedTraits().xmlName ?? name; + const value = errorData[target] ?? dataObject[target]; + output[name] = this.deserializer.readSchema(member, value); + } + throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output), dataObject); + } + loadQueryErrorCode(output, data) { + const code = (data.Errors?.[0]?.Error ?? data.Errors?.Error ?? data.Error)?.Code; + if (code !== undefined) { + return code; + } + if (output.statusCode == 404) { + return "NotFound"; + } + } + loadQueryError(data) { + return data.Errors?.[0]?.Error ?? data.Errors?.Error ?? data.Error; + } + loadQueryErrorMessage(data) { + const errorData = this.loadQueryError(data); + return errorData?.message ?? errorData?.Message ?? data.message ?? data.Message ?? "Unknown"; + } + getDefaultContentType() { + return "application/x-www-form-urlencoded"; + } +} + +class AwsEc2QueryProtocol extends AwsQueryProtocol { + options; + constructor(options) { + super(options); + this.options = options; + const ec2Settings = { + capitalizeKeys: true, + flattenLists: true, + serializeEmptyLists: false, + ec2: true, + }; + Object.assign(this.serializer.settings, ec2Settings); + } + getShapeId() { + return "aws.protocols#ec2Query"; + } + useNestedResult() { + return false; + } +} + +const parseXmlBody = (streamBody, context) => collectBodyString(streamBody, context).then((encoded) => { + if (encoded.length) { + let parsedObj; + try { + parsedObj = xmlBuilder.parseXML(encoded); + } + catch (e) { + if (e && typeof e === "object") { + Object.defineProperty(e, "$responseBodyText", { + value: encoded, + }); + } + throw e; + } + const textNodeName = "#text"; + const key = Object.keys(parsedObj)[0]; + const parsedObjToReturn = parsedObj[key]; + if (parsedObjToReturn[textNodeName]) { + parsedObjToReturn[key] = parsedObjToReturn[textNodeName]; + delete parsedObjToReturn[textNodeName]; + } + return smithyClient.getValueFromTextNode(parsedObjToReturn); + } + return {}; +}); +const parseXmlErrorBody = async (errorBody, context) => { + const value = await parseXmlBody(errorBody, context); + if (value.Error) { + value.Error.message = value.Error.message ?? value.Error.Message; + } + return value; +}; +const loadRestXmlErrorCode = (output, data) => { + if (data?.Error?.Code !== undefined) { + return data.Error.Code; + } + if (data?.Code !== undefined) { + return data.Code; + } + if (output.statusCode == 404) { + return "NotFound"; + } +}; + +class XmlShapeSerializer extends SerdeContextConfig { + settings; + stringBuffer; + byteBuffer; + buffer; + constructor(settings) { + super(); + this.settings = settings; + } + write(schema$1, value) { + const ns = schema.NormalizedSchema.of(schema$1); + if (ns.isStringSchema() && typeof value === "string") { + this.stringBuffer = value; + } + else if (ns.isBlobSchema()) { + this.byteBuffer = + "byteLength" in value + ? value + : (this.serdeContext?.base64Decoder ?? utilBase64.fromBase64)(value); + } + else { + this.buffer = this.writeStruct(ns, value, undefined); + const traits = ns.getMergedTraits(); + if (traits.httpPayload && !traits.xmlName) { + this.buffer.withName(ns.getName()); + } + } + } + flush() { + if (this.byteBuffer !== undefined) { + const bytes = this.byteBuffer; + delete this.byteBuffer; + return bytes; + } + if (this.stringBuffer !== undefined) { + const str = this.stringBuffer; + delete this.stringBuffer; + return str; + } + const buffer = this.buffer; + if (this.settings.xmlNamespace) { + if (!buffer?.attributes?.["xmlns"]) { + buffer.addAttribute("xmlns", this.settings.xmlNamespace); + } + } + delete this.buffer; + return buffer.toString(); + } + writeStruct(ns, value, parentXmlns) { + const traits = ns.getMergedTraits(); + const name = ns.isMemberSchema() && !traits.httpPayload + ? ns.getMemberTraits().xmlName ?? ns.getMemberName() + : traits.xmlName ?? ns.getName(); + if (!name || !ns.isStructSchema()) { + throw new Error(`@aws-sdk/core/protocols - xml serializer, cannot write struct with empty name or non-struct, schema=${ns.getName(true)}.`); + } + const structXmlNode = xmlBuilder.XmlNode.of(name); + const [xmlnsAttr, xmlns] = this.getXmlnsAttribute(ns, parentXmlns); + for (const [memberName, memberSchema] of ns.structIterator()) { + const val = value[memberName]; + if (val != null || memberSchema.isIdempotencyToken()) { + if (memberSchema.getMergedTraits().xmlAttribute) { + structXmlNode.addAttribute(memberSchema.getMergedTraits().xmlName ?? memberName, this.writeSimple(memberSchema, val)); + continue; + } + if (memberSchema.isListSchema()) { + this.writeList(memberSchema, val, structXmlNode, xmlns); + } + else if (memberSchema.isMapSchema()) { + this.writeMap(memberSchema, val, structXmlNode, xmlns); + } + else if (memberSchema.isStructSchema()) { + structXmlNode.addChildNode(this.writeStruct(memberSchema, val, xmlns)); + } + else { + const memberNode = xmlBuilder.XmlNode.of(memberSchema.getMergedTraits().xmlName ?? memberSchema.getMemberName()); + this.writeSimpleInto(memberSchema, val, memberNode, xmlns); + structXmlNode.addChildNode(memberNode); + } + } + } + const { $unknown } = value; + if ($unknown && ns.isUnionSchema() && Array.isArray($unknown) && Object.keys(value).length === 1) { + const [k, v] = $unknown; + const node = xmlBuilder.XmlNode.of(k); + if (typeof v !== "string") { + if (value instanceof xmlBuilder.XmlNode || value instanceof xmlBuilder.XmlText) { + structXmlNode.addChildNode(value); + } + else { + throw new Error(`@aws-sdk - $unknown union member in XML requires ` + + `value of type string, @aws-sdk/xml-builder::XmlNode or XmlText.`); + } + } + this.writeSimpleInto(0, v, node, xmlns); + structXmlNode.addChildNode(node); + } + if (xmlns) { + structXmlNode.addAttribute(xmlnsAttr, xmlns); + } + return structXmlNode; + } + writeList(listMember, array, container, parentXmlns) { + if (!listMember.isMemberSchema()) { + throw new Error(`@aws-sdk/core/protocols - xml serializer, cannot write non-member list: ${listMember.getName(true)}`); + } + const listTraits = listMember.getMergedTraits(); + const listValueSchema = listMember.getValueSchema(); + const listValueTraits = listValueSchema.getMergedTraits(); + const sparse = !!listValueTraits.sparse; + const flat = !!listTraits.xmlFlattened; + const [xmlnsAttr, xmlns] = this.getXmlnsAttribute(listMember, parentXmlns); + const writeItem = (container, value) => { + if (listValueSchema.isListSchema()) { + this.writeList(listValueSchema, Array.isArray(value) ? value : [value], container, xmlns); + } + else if (listValueSchema.isMapSchema()) { + this.writeMap(listValueSchema, value, container, xmlns); + } + else if (listValueSchema.isStructSchema()) { + const struct = this.writeStruct(listValueSchema, value, xmlns); + container.addChildNode(struct.withName(flat ? listTraits.xmlName ?? listMember.getMemberName() : listValueTraits.xmlName ?? "member")); + } + else { + const listItemNode = xmlBuilder.XmlNode.of(flat ? listTraits.xmlName ?? listMember.getMemberName() : listValueTraits.xmlName ?? "member"); + this.writeSimpleInto(listValueSchema, value, listItemNode, xmlns); + container.addChildNode(listItemNode); + } + }; + if (flat) { + for (const value of array) { + if (sparse || value != null) { + writeItem(container, value); + } + } + } + else { + const listNode = xmlBuilder.XmlNode.of(listTraits.xmlName ?? listMember.getMemberName()); + if (xmlns) { + listNode.addAttribute(xmlnsAttr, xmlns); + } + for (const value of array) { + if (sparse || value != null) { + writeItem(listNode, value); + } + } + container.addChildNode(listNode); + } + } + writeMap(mapMember, map, container, parentXmlns, containerIsMap = false) { + if (!mapMember.isMemberSchema()) { + throw new Error(`@aws-sdk/core/protocols - xml serializer, cannot write non-member map: ${mapMember.getName(true)}`); + } + const mapTraits = mapMember.getMergedTraits(); + const mapKeySchema = mapMember.getKeySchema(); + const mapKeyTraits = mapKeySchema.getMergedTraits(); + const keyTag = mapKeyTraits.xmlName ?? "key"; + const mapValueSchema = mapMember.getValueSchema(); + const mapValueTraits = mapValueSchema.getMergedTraits(); + const valueTag = mapValueTraits.xmlName ?? "value"; + const sparse = !!mapValueTraits.sparse; + const flat = !!mapTraits.xmlFlattened; + const [xmlnsAttr, xmlns] = this.getXmlnsAttribute(mapMember, parentXmlns); + const addKeyValue = (entry, key, val) => { + const keyNode = xmlBuilder.XmlNode.of(keyTag, key); + const [keyXmlnsAttr, keyXmlns] = this.getXmlnsAttribute(mapKeySchema, xmlns); + if (keyXmlns) { + keyNode.addAttribute(keyXmlnsAttr, keyXmlns); + } + entry.addChildNode(keyNode); + let valueNode = xmlBuilder.XmlNode.of(valueTag); + if (mapValueSchema.isListSchema()) { + this.writeList(mapValueSchema, val, valueNode, xmlns); + } + else if (mapValueSchema.isMapSchema()) { + this.writeMap(mapValueSchema, val, valueNode, xmlns, true); + } + else if (mapValueSchema.isStructSchema()) { + valueNode = this.writeStruct(mapValueSchema, val, xmlns); + } + else { + this.writeSimpleInto(mapValueSchema, val, valueNode, xmlns); + } + entry.addChildNode(valueNode); + }; + if (flat) { + for (const [key, val] of Object.entries(map)) { + if (sparse || val != null) { + const entry = xmlBuilder.XmlNode.of(mapTraits.xmlName ?? mapMember.getMemberName()); + addKeyValue(entry, key, val); + container.addChildNode(entry); + } + } + } + else { + let mapNode; + if (!containerIsMap) { + mapNode = xmlBuilder.XmlNode.of(mapTraits.xmlName ?? mapMember.getMemberName()); + if (xmlns) { + mapNode.addAttribute(xmlnsAttr, xmlns); + } + container.addChildNode(mapNode); + } + for (const [key, val] of Object.entries(map)) { + if (sparse || val != null) { + const entry = xmlBuilder.XmlNode.of("entry"); + addKeyValue(entry, key, val); + (containerIsMap ? container : mapNode).addChildNode(entry); + } + } + } + } + writeSimple(_schema, value) { + if (null === value) { + throw new Error("@aws-sdk/core/protocols - (XML serializer) cannot write null value."); + } + const ns = schema.NormalizedSchema.of(_schema); + let nodeContents = null; + if (value && typeof value === "object") { + if (ns.isBlobSchema()) { + nodeContents = (this.serdeContext?.base64Encoder ?? utilBase64.toBase64)(value); + } + else if (ns.isTimestampSchema() && value instanceof Date) { + const format = protocols.determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + nodeContents = value.toISOString().replace(".000Z", "Z"); + break; + case 6: + nodeContents = smithyClient.dateToUtcString(value); + break; + case 7: + nodeContents = String(value.getTime() / 1000); + break; + default: + console.warn("Missing timestamp format, using http date", value); + nodeContents = smithyClient.dateToUtcString(value); + break; + } + } + else if (ns.isBigDecimalSchema() && value) { + if (value instanceof serde.NumericValue) { + return value.string; + } + return String(value); + } + else if (ns.isMapSchema() || ns.isListSchema()) { + throw new Error("@aws-sdk/core/protocols - xml serializer, cannot call _write() on List/Map schema, call writeList or writeMap() instead."); + } + else { + throw new Error(`@aws-sdk/core/protocols - xml serializer, unhandled schema type for object value and schema: ${ns.getName(true)}`); + } + } + if (ns.isBooleanSchema() || ns.isNumericSchema() || ns.isBigIntegerSchema() || ns.isBigDecimalSchema()) { + nodeContents = String(value); + } + if (ns.isStringSchema()) { + if (value === undefined && ns.isIdempotencyToken()) { + nodeContents = serde.generateIdempotencyToken(); + } + else { + nodeContents = String(value); + } + } + if (nodeContents === null) { + throw new Error(`Unhandled schema-value pair ${ns.getName(true)}=${value}`); + } + return nodeContents; + } + writeSimpleInto(_schema, value, into, parentXmlns) { + const nodeContents = this.writeSimple(_schema, value); + const ns = schema.NormalizedSchema.of(_schema); + const content = new xmlBuilder.XmlText(nodeContents); + const [xmlnsAttr, xmlns] = this.getXmlnsAttribute(ns, parentXmlns); + if (xmlns) { + into.addAttribute(xmlnsAttr, xmlns); + } + into.addChildNode(content); + } + getXmlnsAttribute(ns, parentXmlns) { + const traits = ns.getMergedTraits(); + const [prefix, xmlns] = traits.xmlNamespace ?? []; + if (xmlns && xmlns !== parentXmlns) { + return [prefix ? `xmlns:${prefix}` : "xmlns", xmlns]; + } + return [void 0, void 0]; + } +} + +class XmlCodec extends SerdeContextConfig { + settings; + constructor(settings) { + super(); + this.settings = settings; + } + createSerializer() { + const serializer = new XmlShapeSerializer(this.settings); + serializer.setSerdeContext(this.serdeContext); + return serializer; + } + createDeserializer() { + const deserializer = new XmlShapeDeserializer(this.settings); + deserializer.setSerdeContext(this.serdeContext); + return deserializer; + } +} + +class AwsRestXmlProtocol extends protocols.HttpBindingProtocol { + codec; + serializer; + deserializer; + mixin = new ProtocolLib(); + constructor(options) { + super(options); + const settings = { + timestampFormat: { + useTrait: true, + default: 5, + }, + httpBindings: true, + xmlNamespace: options.xmlNamespace, + serviceNamespace: options.defaultNamespace, + }; + this.codec = new XmlCodec(settings); + this.serializer = new protocols.HttpInterceptingShapeSerializer(this.codec.createSerializer(), settings); + this.deserializer = new protocols.HttpInterceptingShapeDeserializer(this.codec.createDeserializer(), settings); + } + getPayloadCodec() { + return this.codec; + } + getShapeId() { + return "aws.protocols#restXml"; + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + const inputSchema = schema.NormalizedSchema.of(operationSchema.input); + if (!request.headers["content-type"]) { + const contentType = this.mixin.resolveRestContentType(this.getDefaultContentType(), inputSchema); + if (contentType) { + request.headers["content-type"] = contentType; + } + } + if (typeof request.body === "string" && + request.headers["content-type"] === this.getDefaultContentType() && + !request.body.startsWith("' + request.body; + } + return request; + } + async deserializeResponse(operationSchema, context, response) { + return super.deserializeResponse(operationSchema, context, response); + } + async handleError(operationSchema, context, response, dataObject, metadata) { + const errorIdentifier = loadRestXmlErrorCode(response, dataObject) ?? "Unknown"; + if (dataObject.Error && typeof dataObject.Error === "object") { + for (const key of Object.keys(dataObject.Error)) { + dataObject[key] = dataObject.Error[key]; + if (key.toLowerCase() === "message") { + dataObject.message = dataObject.Error[key]; + } + } + } + if (dataObject.RequestId && !metadata.requestId) { + metadata.requestId = dataObject.RequestId; + } + const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorIdentifier, this.options.defaultNamespace, response, dataObject, metadata); + const ns = schema.NormalizedSchema.of(errorSchema); + const message = dataObject.Error?.message ?? dataObject.Error?.Message ?? dataObject.message ?? dataObject.Message ?? "Unknown"; + const ErrorCtor = schema.TypeRegistry.for(errorSchema[1]).getErrorCtor(errorSchema) ?? Error; + const exception = new ErrorCtor(message); + await this.deserializeHttpMessage(errorSchema, context, response, dataObject); + const output = {}; + for (const [name, member] of ns.structIterator()) { + const target = member.getMergedTraits().xmlName ?? name; + const value = dataObject.Error?.[target] ?? dataObject[target]; + output[name] = this.codec.createDeserializer().readSchema(member, value); + } + throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output), dataObject); + } + getDefaultContentType() { + return "application/xml"; + } + hasUnstructuredPayloadBinding(ns) { + for (const [, member] of ns.structIterator()) { + if (member.getMergedTraits().httpPayload) { + return !(member.isStructSchema() || member.isMapSchema() || member.isListSchema()); + } + } + return false; + } +} + +exports.AwsEc2QueryProtocol = AwsEc2QueryProtocol; +exports.AwsJson1_0Protocol = AwsJson1_0Protocol; +exports.AwsJson1_1Protocol = AwsJson1_1Protocol; +exports.AwsJsonRpcProtocol = AwsJsonRpcProtocol; +exports.AwsQueryProtocol = AwsQueryProtocol; +exports.AwsRestJsonProtocol = AwsRestJsonProtocol; +exports.AwsRestXmlProtocol = AwsRestXmlProtocol; +exports.AwsSmithyRpcV2CborProtocol = AwsSmithyRpcV2CborProtocol; +exports.JsonCodec = JsonCodec; +exports.JsonShapeDeserializer = JsonShapeDeserializer; +exports.JsonShapeSerializer = JsonShapeSerializer; +exports.QueryShapeSerializer = QueryShapeSerializer; +exports.XmlCodec = XmlCodec; +exports.XmlShapeDeserializer = XmlShapeDeserializer; +exports.XmlShapeSerializer = XmlShapeSerializer; +exports._toBool = _toBool; +exports._toNum = _toNum; +exports._toStr = _toStr; +exports.awsExpectUnion = awsExpectUnion; +exports.loadRestJsonErrorCode = loadRestJsonErrorCode; +exports.loadRestXmlErrorCode = loadRestXmlErrorCode; +exports.parseJsonBody = parseJsonBody; +exports.parseJsonErrorBody = parseJsonErrorBody; +exports.parseXmlBody = parseXmlBody; +exports.parseXmlErrorBody = parseXmlErrorBody; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/index.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/index.js new file mode 100644 index 000000000..239de7a67 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/index.js @@ -0,0 +1,3 @@ +export * from "./submodules/client/index"; +export * from "./submodules/httpAuthSchemes/index"; +export * from "./submodules/protocols/index"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/AccountIdEndpointModeConfigResolver.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/AccountIdEndpointModeConfigResolver.js new file mode 100644 index 000000000..9f56dafd8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/AccountIdEndpointModeConfigResolver.js @@ -0,0 +1,15 @@ +import { normalizeProvider } from "@smithy/util-middleware"; +import { DEFAULT_ACCOUNT_ID_ENDPOINT_MODE, validateAccountIdEndpointMode } from "./AccountIdEndpointModeConstants"; +export const resolveAccountIdEndpointModeConfig = (input) => { + const { accountIdEndpointMode } = input; + const accountIdEndpointModeProvider = normalizeProvider(accountIdEndpointMode ?? DEFAULT_ACCOUNT_ID_ENDPOINT_MODE); + return Object.assign(input, { + accountIdEndpointMode: async () => { + const accIdMode = await accountIdEndpointModeProvider(); + if (!validateAccountIdEndpointMode(accIdMode)) { + throw new Error(`Invalid value for accountIdEndpointMode: ${accIdMode}. Valid values are: "required", "preferred", "disabled".`); + } + return accIdMode; + }, + }); +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/AccountIdEndpointModeConstants.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/AccountIdEndpointModeConstants.js new file mode 100644 index 000000000..e7a2ca002 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/AccountIdEndpointModeConstants.js @@ -0,0 +1,5 @@ +export const DEFAULT_ACCOUNT_ID_ENDPOINT_MODE = "preferred"; +export const ACCOUNT_ID_ENDPOINT_MODE_VALUES = ["disabled", "preferred", "required"]; +export function validateAccountIdEndpointMode(value) { + return ACCOUNT_ID_ENDPOINT_MODE_VALUES.includes(value); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/NodeAccountIdEndpointModeConfigOptions.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/NodeAccountIdEndpointModeConfigOptions.js new file mode 100644 index 000000000..adc14964d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/NodeAccountIdEndpointModeConfigOptions.js @@ -0,0 +1,24 @@ +import { DEFAULT_ACCOUNT_ID_ENDPOINT_MODE, validateAccountIdEndpointMode } from "./AccountIdEndpointModeConstants"; +const err = "Invalid AccountIdEndpointMode value"; +const _throw = (message) => { + throw new Error(message); +}; +export const ENV_ACCOUNT_ID_ENDPOINT_MODE = "AWS_ACCOUNT_ID_ENDPOINT_MODE"; +export const CONFIG_ACCOUNT_ID_ENDPOINT_MODE = "account_id_endpoint_mode"; +export const NODE_ACCOUNT_ID_ENDPOINT_MODE_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => { + const value = env[ENV_ACCOUNT_ID_ENDPOINT_MODE]; + if (value && !validateAccountIdEndpointMode(value)) { + _throw(err); + } + return value; + }, + configFileSelector: (profile) => { + const value = profile[CONFIG_ACCOUNT_ID_ENDPOINT_MODE]; + if (value && !validateAccountIdEndpointMode(value)) { + _throw(err); + } + return value; + }, + default: DEFAULT_ACCOUNT_ID_ENDPOINT_MODE, +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/index.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/index.js new file mode 100644 index 000000000..52af11df3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/index.js @@ -0,0 +1,3 @@ +export * from "./AccountIdEndpointModeConfigResolver"; +export * from "./AccountIdEndpointModeConstants"; +export * from "./NodeAccountIdEndpointModeConfigOptions"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/client/emitWarningIfUnsupportedVersion.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/client/emitWarningIfUnsupportedVersion.js new file mode 100644 index 000000000..b2544253c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/client/emitWarningIfUnsupportedVersion.js @@ -0,0 +1,15 @@ +export const state = { + warningEmitted: false, +}; +export const emitWarningIfUnsupportedVersion = (version) => { + if (version && !state.warningEmitted && parseInt(version.substring(1, version.indexOf("."))) < 20) { + state.warningEmitted = true; + process.emitWarning(`NodeDeprecationWarning: The AWS SDK for JavaScript (v3) will +no longer support Node.js ${version} in January 2026. + +To continue receiving updates to AWS services, bug fixes, and security +updates please upgrade to a supported Node.js LTS version. + +More information can be found at: https://a.co/c895JFp`); + } +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/client/index.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/client/index.js new file mode 100644 index 000000000..492c6cdda --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/client/index.js @@ -0,0 +1,4 @@ +export * from "./emitWarningIfUnsupportedVersion"; +export * from "./setCredentialFeature"; +export * from "./setFeature"; +export * from "./setTokenFeature"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/client/setCredentialFeature.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/client/setCredentialFeature.js new file mode 100644 index 000000000..a489c4071 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/client/setCredentialFeature.js @@ -0,0 +1,7 @@ +export function setCredentialFeature(credentials, feature, value) { + if (!credentials.$source) { + credentials.$source = {}; + } + credentials.$source[feature] = value; + return credentials; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/client/setFeature.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/client/setFeature.js new file mode 100644 index 000000000..2d8804bb9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/client/setFeature.js @@ -0,0 +1,11 @@ +export function setFeature(context, feature, value) { + if (!context.__aws_sdk_context) { + context.__aws_sdk_context = { + features: {}, + }; + } + else if (!context.__aws_sdk_context.features) { + context.__aws_sdk_context.features = {}; + } + context.__aws_sdk_context.features[feature] = value; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/client/setTokenFeature.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/client/setTokenFeature.js new file mode 100644 index 000000000..3f2bc6031 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/client/setTokenFeature.js @@ -0,0 +1,7 @@ +export function setTokenFeature(token, feature, value) { + if (!token.$source) { + token.$source = {}; + } + token.$source[feature] = value; + return token; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.js new file mode 100644 index 000000000..548fefb33 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.js @@ -0,0 +1,20 @@ +import { HttpRequest } from "@smithy/protocol-http"; +import { getSkewCorrectedDate } from "../utils"; +import { AwsSdkSigV4Signer, validateSigningProperties } from "./AwsSdkSigV4Signer"; +export class AwsSdkSigV4ASigner extends AwsSdkSigV4Signer { + async sign(httpRequest, identity, signingProperties) { + if (!HttpRequest.isInstance(httpRequest)) { + throw new Error("The request is not an instance of `HttpRequest` and cannot be signed"); + } + const { config, signer, signingRegion, signingRegionSet, signingName } = await validateSigningProperties(signingProperties); + const configResolvedSigningRegionSet = await config.sigv4aSigningRegionSet?.(); + const multiRegionOverride = (configResolvedSigningRegionSet ?? + signingRegionSet ?? [signingRegion]).join(","); + const signedRequest = await signer.sign(httpRequest, { + signingDate: getSkewCorrectedDate(config.systemClockOffset), + signingRegion: multiRegionOverride, + signingService: signingName, + }); + return signedRequest; + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.js new file mode 100644 index 000000000..ee236cd76 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.js @@ -0,0 +1,72 @@ +import { HttpRequest } from "@smithy/protocol-http"; +import { getDateHeader, getSkewCorrectedDate, getUpdatedSystemClockOffset } from "../utils"; +const throwSigningPropertyError = (name, property) => { + if (!property) { + throw new Error(`Property \`${name}\` is not resolved for AWS SDK SigV4Auth`); + } + return property; +}; +export const validateSigningProperties = async (signingProperties) => { + const context = throwSigningPropertyError("context", signingProperties.context); + const config = throwSigningPropertyError("config", signingProperties.config); + const authScheme = context.endpointV2?.properties?.authSchemes?.[0]; + const signerFunction = throwSigningPropertyError("signer", config.signer); + const signer = await signerFunction(authScheme); + const signingRegion = signingProperties?.signingRegion; + const signingRegionSet = signingProperties?.signingRegionSet; + const signingName = signingProperties?.signingName; + return { + config, + signer, + signingRegion, + signingRegionSet, + signingName, + }; +}; +export class AwsSdkSigV4Signer { + async sign(httpRequest, identity, signingProperties) { + if (!HttpRequest.isInstance(httpRequest)) { + throw new Error("The request is not an instance of `HttpRequest` and cannot be signed"); + } + const validatedProps = await validateSigningProperties(signingProperties); + const { config, signer } = validatedProps; + let { signingRegion, signingName } = validatedProps; + const handlerExecutionContext = signingProperties.context; + if (handlerExecutionContext?.authSchemes?.length ?? 0 > 1) { + const [first, second] = handlerExecutionContext.authSchemes; + if (first?.name === "sigv4a" && second?.name === "sigv4") { + signingRegion = second?.signingRegion ?? signingRegion; + signingName = second?.signingName ?? signingName; + } + } + const signedRequest = await signer.sign(httpRequest, { + signingDate: getSkewCorrectedDate(config.systemClockOffset), + signingRegion: signingRegion, + signingService: signingName, + }); + return signedRequest; + } + errorHandler(signingProperties) { + return (error) => { + const serverTime = error.ServerTime ?? getDateHeader(error.$response); + if (serverTime) { + const config = throwSigningPropertyError("config", signingProperties.config); + const initialSystemClockOffset = config.systemClockOffset; + config.systemClockOffset = getUpdatedSystemClockOffset(serverTime, config.systemClockOffset); + const clockSkewCorrected = config.systemClockOffset !== initialSystemClockOffset; + if (clockSkewCorrected && error.$metadata) { + error.$metadata.clockSkewCorrected = true; + } + } + throw error; + }; + } + successHandler(httpResponse, signingProperties) { + const dateHeader = getDateHeader(httpResponse); + if (dateHeader) { + const config = throwSigningPropertyError("config", signingProperties.config); + config.systemClockOffset = getUpdatedSystemClockOffset(dateHeader, config.systemClockOffset); + } + } +} +export const AWSSDKSigV4Signer = AwsSdkSigV4Signer; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/NODE_AUTH_SCHEME_PREFERENCE_OPTIONS.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/NODE_AUTH_SCHEME_PREFERENCE_OPTIONS.js new file mode 100644 index 000000000..5d7cf82d9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/NODE_AUTH_SCHEME_PREFERENCE_OPTIONS.js @@ -0,0 +1,22 @@ +import { getArrayForCommaSeparatedString } from "../utils/getArrayForCommaSeparatedString"; +import { getBearerTokenEnvKey } from "../utils/getBearerTokenEnvKey"; +const NODE_AUTH_SCHEME_PREFERENCE_ENV_KEY = "AWS_AUTH_SCHEME_PREFERENCE"; +const NODE_AUTH_SCHEME_PREFERENCE_CONFIG_KEY = "auth_scheme_preference"; +export const NODE_AUTH_SCHEME_PREFERENCE_OPTIONS = { + environmentVariableSelector: (env, options) => { + if (options?.signingName) { + const bearerTokenKey = getBearerTokenEnvKey(options.signingName); + if (bearerTokenKey in env) + return ["httpBearerAuth"]; + } + if (!(NODE_AUTH_SCHEME_PREFERENCE_ENV_KEY in env)) + return undefined; + return getArrayForCommaSeparatedString(env[NODE_AUTH_SCHEME_PREFERENCE_ENV_KEY]); + }, + configFileSelector: (profile) => { + if (!(NODE_AUTH_SCHEME_PREFERENCE_CONFIG_KEY in profile)) + return undefined; + return getArrayForCommaSeparatedString(profile[NODE_AUTH_SCHEME_PREFERENCE_CONFIG_KEY]); + }, + default: [], +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/index.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/index.js new file mode 100644 index 000000000..40712255d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/index.js @@ -0,0 +1,5 @@ +export { AwsSdkSigV4Signer, AWSSDKSigV4Signer, validateSigningProperties } from "./AwsSdkSigV4Signer"; +export { AwsSdkSigV4ASigner } from "./AwsSdkSigV4ASigner"; +export * from "./NODE_AUTH_SCHEME_PREFERENCE_OPTIONS"; +export * from "./resolveAwsSdkSigV4AConfig"; +export * from "./resolveAwsSdkSigV4Config"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4AConfig.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4AConfig.js new file mode 100644 index 000000000..0e62ef05d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4AConfig.js @@ -0,0 +1,25 @@ +import { normalizeProvider } from "@smithy/core"; +import { ProviderError } from "@smithy/property-provider"; +export const resolveAwsSdkSigV4AConfig = (config) => { + config.sigv4aSigningRegionSet = normalizeProvider(config.sigv4aSigningRegionSet); + return config; +}; +export const NODE_SIGV4A_CONFIG_OPTIONS = { + environmentVariableSelector(env) { + if (env.AWS_SIGV4A_SIGNING_REGION_SET) { + return env.AWS_SIGV4A_SIGNING_REGION_SET.split(",").map((_) => _.trim()); + } + throw new ProviderError("AWS_SIGV4A_SIGNING_REGION_SET not set in env.", { + tryNextLink: true, + }); + }, + configFileSelector(profile) { + if (profile.sigv4a_signing_region_set) { + return (profile.sigv4a_signing_region_set ?? "").split(",").map((_) => _.trim()); + } + throw new ProviderError("sigv4a_signing_region_set not set in profile.", { + tryNextLink: true, + }); + }, + default: undefined, +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.js new file mode 100644 index 000000000..8c8db4f21 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.js @@ -0,0 +1,139 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +import { doesIdentityRequireRefresh, isIdentityExpired, memoizeIdentityProvider, normalizeProvider, } from "@smithy/core"; +import { SignatureV4 } from "@smithy/signature-v4"; +export const resolveAwsSdkSigV4Config = (config) => { + let inputCredentials = config.credentials; + let isUserSupplied = !!config.credentials; + let resolvedCredentials = undefined; + Object.defineProperty(config, "credentials", { + set(credentials) { + if (credentials && credentials !== inputCredentials && credentials !== resolvedCredentials) { + isUserSupplied = true; + } + inputCredentials = credentials; + const memoizedProvider = normalizeCredentialProvider(config, { + credentials: inputCredentials, + credentialDefaultProvider: config.credentialDefaultProvider, + }); + const boundProvider = bindCallerConfig(config, memoizedProvider); + if (isUserSupplied && !boundProvider.attributed) { + const isCredentialObject = typeof inputCredentials === "object" && inputCredentials !== null; + resolvedCredentials = async (options) => { + const creds = await boundProvider(options); + const attributedCreds = creds; + if (isCredentialObject && (!attributedCreds.$source || Object.keys(attributedCreds.$source).length === 0)) { + return setCredentialFeature(attributedCreds, "CREDENTIALS_CODE", "e"); + } + return attributedCreds; + }; + resolvedCredentials.memoized = boundProvider.memoized; + resolvedCredentials.configBound = boundProvider.configBound; + resolvedCredentials.attributed = true; + } + else { + resolvedCredentials = boundProvider; + } + }, + get() { + return resolvedCredentials; + }, + enumerable: true, + configurable: true, + }); + config.credentials = inputCredentials; + const { signingEscapePath = true, systemClockOffset = config.systemClockOffset || 0, sha256, } = config; + let signer; + if (config.signer) { + signer = normalizeProvider(config.signer); + } + else if (config.regionInfoProvider) { + signer = () => normalizeProvider(config.region)() + .then(async (region) => [ + (await config.regionInfoProvider(region, { + useFipsEndpoint: await config.useFipsEndpoint(), + useDualstackEndpoint: await config.useDualstackEndpoint(), + })) || {}, + region, + ]) + .then(([regionInfo, region]) => { + const { signingRegion, signingService } = regionInfo; + config.signingRegion = config.signingRegion || signingRegion || region; + config.signingName = config.signingName || signingService || config.serviceId; + const params = { + ...config, + credentials: config.credentials, + region: config.signingRegion, + service: config.signingName, + sha256, + uriEscapePath: signingEscapePath, + }; + const SignerCtor = config.signerConstructor || SignatureV4; + return new SignerCtor(params); + }); + } + else { + signer = async (authScheme) => { + authScheme = Object.assign({}, { + name: "sigv4", + signingName: config.signingName || config.defaultSigningName, + signingRegion: await normalizeProvider(config.region)(), + properties: {}, + }, authScheme); + const signingRegion = authScheme.signingRegion; + const signingService = authScheme.signingName; + config.signingRegion = config.signingRegion || signingRegion; + config.signingName = config.signingName || signingService || config.serviceId; + const params = { + ...config, + credentials: config.credentials, + region: config.signingRegion, + service: config.signingName, + sha256, + uriEscapePath: signingEscapePath, + }; + const SignerCtor = config.signerConstructor || SignatureV4; + return new SignerCtor(params); + }; + } + const resolvedConfig = Object.assign(config, { + systemClockOffset, + signingEscapePath, + signer, + }); + return resolvedConfig; +}; +export const resolveAWSSDKSigV4Config = resolveAwsSdkSigV4Config; +function normalizeCredentialProvider(config, { credentials, credentialDefaultProvider, }) { + let credentialsProvider; + if (credentials) { + if (!credentials?.memoized) { + credentialsProvider = memoizeIdentityProvider(credentials, isIdentityExpired, doesIdentityRequireRefresh); + } + else { + credentialsProvider = credentials; + } + } + else { + if (credentialDefaultProvider) { + credentialsProvider = normalizeProvider(credentialDefaultProvider(Object.assign({}, config, { + parentClientConfig: config, + }))); + } + else { + credentialsProvider = async () => { + throw new Error("@aws-sdk/core::resolveAwsSdkSigV4Config - `credentials` not provided and no credentialDefaultProvider was configured."); + }; + } + } + credentialsProvider.memoized = true; + return credentialsProvider; +} +function bindCallerConfig(config, credentialsProvider) { + if (credentialsProvider.configBound) { + return credentialsProvider; + } + const fn = async (options) => credentialsProvider({ ...options, callerClientConfig: config }); + fn.memoized = credentialsProvider.memoized; + fn.configBound = true; + return fn; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/index.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/index.js new file mode 100644 index 000000000..3927741ab --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/index.js @@ -0,0 +1,2 @@ +export * from "./aws_sdk"; +export * from "./utils/getBearerTokenEnvKey"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getArrayForCommaSeparatedString.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getArrayForCommaSeparatedString.js new file mode 100644 index 000000000..aa60799c4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getArrayForCommaSeparatedString.js @@ -0,0 +1 @@ +export const getArrayForCommaSeparatedString = (str) => typeof str === "string" && str.length > 0 ? str.split(",").map((item) => item.trim()) : []; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getBearerTokenEnvKey.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getBearerTokenEnvKey.js new file mode 100644 index 000000000..27eff7f65 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getBearerTokenEnvKey.js @@ -0,0 +1 @@ +export const getBearerTokenEnvKey = (signingName) => `AWS_BEARER_TOKEN_${signingName.replace(/[\s-]/g, "_").toUpperCase()}`; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getDateHeader.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getDateHeader.js new file mode 100644 index 000000000..449c182be --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getDateHeader.js @@ -0,0 +1,2 @@ +import { HttpResponse } from "@smithy/protocol-http"; +export const getDateHeader = (response) => HttpResponse.isInstance(response) ? response.headers?.date ?? response.headers?.Date : undefined; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.js new file mode 100644 index 000000000..6ee803634 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.js @@ -0,0 +1 @@ +export const getSkewCorrectedDate = (systemClockOffset) => new Date(Date.now() + systemClockOffset); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.js new file mode 100644 index 000000000..859c41a28 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.js @@ -0,0 +1,8 @@ +import { isClockSkewed } from "./isClockSkewed"; +export const getUpdatedSystemClockOffset = (clockTime, currentSystemClockOffset) => { + const clockTimeInMs = Date.parse(clockTime); + if (isClockSkewed(clockTimeInMs, currentSystemClockOffset)) { + return clockTimeInMs - Date.now(); + } + return currentSystemClockOffset; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/index.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/index.js new file mode 100644 index 000000000..07c21953a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/index.js @@ -0,0 +1,3 @@ +export * from "./getDateHeader"; +export * from "./getSkewCorrectedDate"; +export * from "./getUpdatedSystemClockOffset"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/isClockSkewed.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/isClockSkewed.js new file mode 100644 index 000000000..086d7a871 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/isClockSkewed.js @@ -0,0 +1,2 @@ +import { getSkewCorrectedDate } from "./getSkewCorrectedDate"; +export const isClockSkewed = (clockTime, systemClockOffset) => Math.abs(getSkewCorrectedDate(systemClockOffset).getTime() - clockTime) >= 300000; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/ConfigurableSerdeContext.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/ConfigurableSerdeContext.js new file mode 100644 index 000000000..0684ab651 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/ConfigurableSerdeContext.js @@ -0,0 +1,6 @@ +export class SerdeContextConfig { + serdeContext; + setSerdeContext(serdeContext) { + this.serdeContext = serdeContext; + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/ProtocolLib.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/ProtocolLib.js new file mode 100644 index 000000000..bd91d1e10 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/ProtocolLib.js @@ -0,0 +1,122 @@ +import { NormalizedSchema, TypeRegistry } from "@smithy/core/schema"; +import { decorateServiceException } from "@smithy/smithy-client"; +export class ProtocolLib { + queryCompat; + constructor(queryCompat = false) { + this.queryCompat = queryCompat; + } + resolveRestContentType(defaultContentType, inputSchema) { + const members = inputSchema.getMemberSchemas(); + const httpPayloadMember = Object.values(members).find((m) => { + return !!m.getMergedTraits().httpPayload; + }); + if (httpPayloadMember) { + const mediaType = httpPayloadMember.getMergedTraits().mediaType; + if (mediaType) { + return mediaType; + } + else if (httpPayloadMember.isStringSchema()) { + return "text/plain"; + } + else if (httpPayloadMember.isBlobSchema()) { + return "application/octet-stream"; + } + else { + return defaultContentType; + } + } + else if (!inputSchema.isUnitSchema()) { + const hasBody = Object.values(members).find((m) => { + const { httpQuery, httpQueryParams, httpHeader, httpLabel, httpPrefixHeaders } = m.getMergedTraits(); + const noPrefixHeaders = httpPrefixHeaders === void 0; + return !httpQuery && !httpQueryParams && !httpHeader && !httpLabel && noPrefixHeaders; + }); + if (hasBody) { + return defaultContentType; + } + } + } + async getErrorSchemaOrThrowBaseException(errorIdentifier, defaultNamespace, response, dataObject, metadata, getErrorSchema) { + let namespace = defaultNamespace; + let errorName = errorIdentifier; + if (errorIdentifier.includes("#")) { + [namespace, errorName] = errorIdentifier.split("#"); + } + const errorMetadata = { + $metadata: metadata, + $fault: response.statusCode < 500 ? "client" : "server", + }; + const registry = TypeRegistry.for(namespace); + try { + const errorSchema = getErrorSchema?.(registry, errorName) ?? registry.getSchema(errorIdentifier); + return { errorSchema, errorMetadata }; + } + catch (e) { + dataObject.message = dataObject.message ?? dataObject.Message ?? "UnknownError"; + const synthetic = TypeRegistry.for("smithy.ts.sdk.synthetic." + namespace); + const baseExceptionSchema = synthetic.getBaseException(); + if (baseExceptionSchema) { + const ErrorCtor = synthetic.getErrorCtor(baseExceptionSchema) ?? Error; + throw this.decorateServiceException(Object.assign(new ErrorCtor({ name: errorName }), errorMetadata), dataObject); + } + throw this.decorateServiceException(Object.assign(new Error(errorName), errorMetadata), dataObject); + } + } + decorateServiceException(exception, additions = {}) { + if (this.queryCompat) { + const msg = exception.Message ?? additions.Message; + const error = decorateServiceException(exception, additions); + if (msg) { + error.message = msg; + } + error.Error = { + ...error.Error, + Type: error.Error?.Type, + Code: error.Error?.Code, + Message: error.Error?.message ?? error.Error?.Message ?? msg, + }; + const reqId = error.$metadata.requestId; + if (reqId) { + error.RequestId = reqId; + } + return error; + } + return decorateServiceException(exception, additions); + } + setQueryCompatError(output, response) { + const queryErrorHeader = response.headers?.["x-amzn-query-error"]; + if (output !== undefined && queryErrorHeader != null) { + const [Code, Type] = queryErrorHeader.split(";"); + const entries = Object.entries(output); + const Error = { + Code, + Type, + }; + Object.assign(output, Error); + for (const [k, v] of entries) { + Error[k === "message" ? "Message" : k] = v; + } + delete Error.__type; + output.Error = Error; + } + } + queryCompatOutput(queryCompatErrorData, errorData) { + if (queryCompatErrorData.Error) { + errorData.Error = queryCompatErrorData.Error; + } + if (queryCompatErrorData.Type) { + errorData.Type = queryCompatErrorData.Type; + } + if (queryCompatErrorData.Code) { + errorData.Code = queryCompatErrorData.Code; + } + } + findQueryCompatibleError(registry, errorName) { + try { + return registry.getSchema(errorName); + } + catch (e) { + return registry.find((schema) => NormalizedSchema.of(schema).getMergedTraits().awsQueryError?.[0] === errorName); + } + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/UnionSerde.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/UnionSerde.js new file mode 100644 index 000000000..ed75be654 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/UnionSerde.js @@ -0,0 +1,23 @@ +export class UnionSerde { + from; + to; + keys; + constructor(from, to) { + this.from = from; + this.to = to; + this.keys = new Set(Object.keys(this.from).filter((k) => k !== "__type")); + } + mark(key) { + this.keys.delete(key); + } + hasUnknown() { + return this.keys.size === 1 && Object.keys(this.to).length === 0; + } + writeUnknown() { + if (this.hasUnknown()) { + const k = this.keys.values().next().value; + const v = this.from[k]; + this.to.$unknown = [k, v]; + } + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/cbor/AwsSmithyRpcV2CborProtocol.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/cbor/AwsSmithyRpcV2CborProtocol.js new file mode 100644 index 000000000..70dd2aa12 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/cbor/AwsSmithyRpcV2CborProtocol.js @@ -0,0 +1,49 @@ +import { loadSmithyRpcV2CborErrorCode, SmithyRpcV2CborProtocol } from "@smithy/core/cbor"; +import { NormalizedSchema, TypeRegistry } from "@smithy/core/schema"; +import { ProtocolLib } from "../ProtocolLib"; +export class AwsSmithyRpcV2CborProtocol extends SmithyRpcV2CborProtocol { + awsQueryCompatible; + mixin; + constructor({ defaultNamespace, awsQueryCompatible, }) { + super({ defaultNamespace }); + this.awsQueryCompatible = !!awsQueryCompatible; + this.mixin = new ProtocolLib(this.awsQueryCompatible); + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + if (this.awsQueryCompatible) { + request.headers["x-amzn-query-mode"] = "true"; + } + return request; + } + async handleError(operationSchema, context, response, dataObject, metadata) { + if (this.awsQueryCompatible) { + this.mixin.setQueryCompatError(dataObject, response); + } + const errorName = (() => { + const compatHeader = response.headers["x-amzn-query-error"]; + if (compatHeader && this.awsQueryCompatible) { + return compatHeader.split(";")[0]; + } + return loadSmithyRpcV2CborErrorCode(response, dataObject) ?? "Unknown"; + })(); + const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorName, this.options.defaultNamespace, response, dataObject, metadata, this.awsQueryCompatible ? this.mixin.findQueryCompatibleError : undefined); + const ns = NormalizedSchema.of(errorSchema); + const message = dataObject.message ?? dataObject.Message ?? "Unknown"; + const ErrorCtor = TypeRegistry.for(errorSchema[1]).getErrorCtor(errorSchema) ?? Error; + const exception = new ErrorCtor(message); + const output = {}; + for (const [name, member] of ns.structIterator()) { + if (dataObject[name] != null) { + output[name] = this.deserializer.readValue(member, dataObject[name]); + } + } + if (this.awsQueryCompatible) { + this.mixin.queryCompatOutput(dataObject, output); + } + throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output), dataObject); + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/coercing-serializers.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/coercing-serializers.js new file mode 100644 index 000000000..fce893b41 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/coercing-serializers.js @@ -0,0 +1,53 @@ +export const _toStr = (val) => { + if (val == null) { + return val; + } + if (typeof val === "number" || typeof val === "bigint") { + const warning = new Error(`Received number ${val} where a string was expected.`); + warning.name = "Warning"; + console.warn(warning); + return String(val); + } + if (typeof val === "boolean") { + const warning = new Error(`Received boolean ${val} where a string was expected.`); + warning.name = "Warning"; + console.warn(warning); + return String(val); + } + return val; +}; +export const _toBool = (val) => { + if (val == null) { + return val; + } + if (typeof val === "number") { + } + if (typeof val === "string") { + const lowercase = val.toLowerCase(); + if (val !== "" && lowercase !== "false" && lowercase !== "true") { + const warning = new Error(`Received string "${val}" where a boolean was expected.`); + warning.name = "Warning"; + console.warn(warning); + } + return val !== "" && lowercase !== "false"; + } + return val; +}; +export const _toNum = (val) => { + if (val == null) { + return val; + } + if (typeof val === "boolean") { + } + if (typeof val === "string") { + const num = Number(val); + if (num.toString() !== val) { + const warning = new Error(`Received string "${val}" where a number was expected.`); + warning.name = "Warning"; + console.warn(warning); + return val; + } + return num; + } + return val; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/common.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/common.js new file mode 100644 index 000000000..1b1675025 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/common.js @@ -0,0 +1,3 @@ +import { collectBody } from "@smithy/smithy-client"; +import { toUtf8 } from "@smithy/util-utf8"; +export const collectBodyString = (streamBody, context) => collectBody(streamBody, context).then((body) => (context?.utf8Encoder ?? toUtf8)(body)); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/index.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/index.js new file mode 100644 index 000000000..0a230f917 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/index.js @@ -0,0 +1,20 @@ +export * from "./cbor/AwsSmithyRpcV2CborProtocol"; +export * from "./coercing-serializers"; +export * from "./json/AwsJson1_0Protocol"; +export * from "./json/AwsJson1_1Protocol"; +export * from "./json/AwsJsonRpcProtocol"; +export * from "./json/AwsRestJsonProtocol"; +export * from "./json/JsonCodec"; +export * from "./json/JsonShapeDeserializer"; +export * from "./json/JsonShapeSerializer"; +export * from "./json/awsExpectUnion"; +export * from "./json/parseJsonBody"; +export * from "./query/AwsEc2QueryProtocol"; +export * from "./query/AwsQueryProtocol"; +export * from "./query/QuerySerializerSettings"; +export * from "./query/QueryShapeSerializer"; +export * from "./xml/AwsRestXmlProtocol"; +export * from "./xml/XmlCodec"; +export * from "./xml/XmlShapeDeserializer"; +export * from "./xml/XmlShapeSerializer"; +export * from "./xml/parseXmlBody"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJson1_0Protocol.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJson1_0Protocol.js new file mode 100644 index 000000000..49b657ad8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJson1_0Protocol.js @@ -0,0 +1,20 @@ +import { AwsJsonRpcProtocol } from "./AwsJsonRpcProtocol"; +export class AwsJson1_0Protocol extends AwsJsonRpcProtocol { + constructor({ defaultNamespace, serviceTarget, awsQueryCompatible, jsonCodec, }) { + super({ + defaultNamespace, + serviceTarget, + awsQueryCompatible, + jsonCodec, + }); + } + getShapeId() { + return "aws.protocols#awsJson1_0"; + } + getJsonRpcVersion() { + return "1.0"; + } + getDefaultContentType() { + return "application/x-amz-json-1.0"; + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJson1_1Protocol.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJson1_1Protocol.js new file mode 100644 index 000000000..2094b0397 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJson1_1Protocol.js @@ -0,0 +1,20 @@ +import { AwsJsonRpcProtocol } from "./AwsJsonRpcProtocol"; +export class AwsJson1_1Protocol extends AwsJsonRpcProtocol { + constructor({ defaultNamespace, serviceTarget, awsQueryCompatible, jsonCodec, }) { + super({ + defaultNamespace, + serviceTarget, + awsQueryCompatible, + jsonCodec, + }); + } + getShapeId() { + return "aws.protocols#awsJson1_1"; + } + getJsonRpcVersion() { + return "1.1"; + } + getDefaultContentType() { + return "application/x-amz-json-1.1"; + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJsonRpcProtocol.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJsonRpcProtocol.js new file mode 100644 index 000000000..e64a35ca4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJsonRpcProtocol.js @@ -0,0 +1,76 @@ +import { RpcProtocol } from "@smithy/core/protocols"; +import { deref, NormalizedSchema, TypeRegistry } from "@smithy/core/schema"; +import { ProtocolLib } from "../ProtocolLib"; +import { JsonCodec } from "./JsonCodec"; +import { loadRestJsonErrorCode } from "./parseJsonBody"; +export class AwsJsonRpcProtocol extends RpcProtocol { + serializer; + deserializer; + serviceTarget; + codec; + mixin; + awsQueryCompatible; + constructor({ defaultNamespace, serviceTarget, awsQueryCompatible, jsonCodec, }) { + super({ + defaultNamespace, + }); + this.serviceTarget = serviceTarget; + this.codec = + jsonCodec ?? + new JsonCodec({ + timestampFormat: { + useTrait: true, + default: 7, + }, + jsonName: false, + }); + this.serializer = this.codec.createSerializer(); + this.deserializer = this.codec.createDeserializer(); + this.awsQueryCompatible = !!awsQueryCompatible; + this.mixin = new ProtocolLib(this.awsQueryCompatible); + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + if (!request.path.endsWith("/")) { + request.path += "/"; + } + Object.assign(request.headers, { + "content-type": `application/x-amz-json-${this.getJsonRpcVersion()}`, + "x-amz-target": `${this.serviceTarget}.${operationSchema.name}`, + }); + if (this.awsQueryCompatible) { + request.headers["x-amzn-query-mode"] = "true"; + } + if (deref(operationSchema.input) === "unit" || !request.body) { + request.body = "{}"; + } + return request; + } + getPayloadCodec() { + return this.codec; + } + async handleError(operationSchema, context, response, dataObject, metadata) { + if (this.awsQueryCompatible) { + this.mixin.setQueryCompatError(dataObject, response); + } + const errorIdentifier = loadRestJsonErrorCode(response, dataObject) ?? "Unknown"; + const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorIdentifier, this.options.defaultNamespace, response, dataObject, metadata, this.awsQueryCompatible ? this.mixin.findQueryCompatibleError : undefined); + const ns = NormalizedSchema.of(errorSchema); + const message = dataObject.message ?? dataObject.Message ?? "Unknown"; + const ErrorCtor = TypeRegistry.for(errorSchema[1]).getErrorCtor(errorSchema) ?? Error; + const exception = new ErrorCtor(message); + const output = {}; + for (const [name, member] of ns.structIterator()) { + if (dataObject[name] != null) { + output[name] = this.codec.createDeserializer().readObject(member, dataObject[name]); + } + } + if (this.awsQueryCompatible) { + this.mixin.queryCompatOutput(dataObject, output); + } + throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output), dataObject); + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsRestJsonProtocol.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsRestJsonProtocol.js new file mode 100644 index 000000000..659ce677d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsRestJsonProtocol.js @@ -0,0 +1,82 @@ +import { HttpBindingProtocol, HttpInterceptingShapeDeserializer, HttpInterceptingShapeSerializer, } from "@smithy/core/protocols"; +import { NormalizedSchema, TypeRegistry } from "@smithy/core/schema"; +import { ProtocolLib } from "../ProtocolLib"; +import { JsonCodec } from "./JsonCodec"; +import { loadRestJsonErrorCode } from "./parseJsonBody"; +export class AwsRestJsonProtocol extends HttpBindingProtocol { + serializer; + deserializer; + codec; + mixin = new ProtocolLib(); + constructor({ defaultNamespace }) { + super({ + defaultNamespace, + }); + const settings = { + timestampFormat: { + useTrait: true, + default: 7, + }, + httpBindings: true, + jsonName: true, + }; + this.codec = new JsonCodec(settings); + this.serializer = new HttpInterceptingShapeSerializer(this.codec.createSerializer(), settings); + this.deserializer = new HttpInterceptingShapeDeserializer(this.codec.createDeserializer(), settings); + } + getShapeId() { + return "aws.protocols#restJson1"; + } + getPayloadCodec() { + return this.codec; + } + setSerdeContext(serdeContext) { + this.codec.setSerdeContext(serdeContext); + super.setSerdeContext(serdeContext); + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + const inputSchema = NormalizedSchema.of(operationSchema.input); + if (!request.headers["content-type"]) { + const contentType = this.mixin.resolveRestContentType(this.getDefaultContentType(), inputSchema); + if (contentType) { + request.headers["content-type"] = contentType; + } + } + if (request.body == null && request.headers["content-type"] === this.getDefaultContentType()) { + request.body = "{}"; + } + return request; + } + async deserializeResponse(operationSchema, context, response) { + const output = await super.deserializeResponse(operationSchema, context, response); + const outputSchema = NormalizedSchema.of(operationSchema.output); + for (const [name, member] of outputSchema.structIterator()) { + if (member.getMemberTraits().httpPayload && !(name in output)) { + output[name] = null; + } + } + return output; + } + async handleError(operationSchema, context, response, dataObject, metadata) { + const errorIdentifier = loadRestJsonErrorCode(response, dataObject) ?? "Unknown"; + const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorIdentifier, this.options.defaultNamespace, response, dataObject, metadata); + const ns = NormalizedSchema.of(errorSchema); + const message = dataObject.message ?? dataObject.Message ?? "Unknown"; + const ErrorCtor = TypeRegistry.for(errorSchema[1]).getErrorCtor(errorSchema) ?? Error; + const exception = new ErrorCtor(message); + await this.deserializeHttpMessage(errorSchema, context, response, dataObject); + const output = {}; + for (const [name, member] of ns.structIterator()) { + const target = member.getMergedTraits().jsonName ?? name; + output[name] = this.codec.createDeserializer().readObject(member, dataObject[target]); + } + throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output), dataObject); + } + getDefaultContentType() { + return "application/json"; + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonCodec.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonCodec.js new file mode 100644 index 000000000..9a0b23426 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonCodec.js @@ -0,0 +1,20 @@ +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import { JsonShapeDeserializer } from "./JsonShapeDeserializer"; +import { JsonShapeSerializer } from "./JsonShapeSerializer"; +export class JsonCodec extends SerdeContextConfig { + settings; + constructor(settings) { + super(); + this.settings = settings; + } + createSerializer() { + const serializer = new JsonShapeSerializer(this.settings); + serializer.setSerdeContext(this.serdeContext); + return serializer; + } + createDeserializer() { + const deserializer = new JsonShapeDeserializer(this.settings); + deserializer.setSerdeContext(this.serdeContext); + return deserializer; + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonShapeDeserializer.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonShapeDeserializer.js new file mode 100644 index 000000000..5e29279ad --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonShapeDeserializer.js @@ -0,0 +1,149 @@ +import { determineTimestampFormat } from "@smithy/core/protocols"; +import { NormalizedSchema } from "@smithy/core/schema"; +import { LazyJsonString, NumericValue, parseEpochTimestamp, parseRfc3339DateTimeWithOffset, parseRfc7231DateTime, } from "@smithy/core/serde"; +import { fromBase64 } from "@smithy/util-base64"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import { UnionSerde } from "../UnionSerde"; +import { jsonReviver } from "./jsonReviver"; +import { parseJsonBody } from "./parseJsonBody"; +export class JsonShapeDeserializer extends SerdeContextConfig { + settings; + constructor(settings) { + super(); + this.settings = settings; + } + async read(schema, data) { + return this._read(schema, typeof data === "string" ? JSON.parse(data, jsonReviver) : await parseJsonBody(data, this.serdeContext)); + } + readObject(schema, data) { + return this._read(schema, data); + } + _read(schema, value) { + const isObject = value !== null && typeof value === "object"; + const ns = NormalizedSchema.of(schema); + if (isObject) { + if (ns.isStructSchema()) { + const record = value; + const union = ns.isUnionSchema(); + const out = {}; + let nameMap = void 0; + const { jsonName } = this.settings; + if (jsonName) { + nameMap = {}; + } + let unionSerde; + if (union) { + unionSerde = new UnionSerde(record, out); + } + for (const [memberName, memberSchema] of ns.structIterator()) { + let fromKey = memberName; + if (jsonName) { + fromKey = memberSchema.getMergedTraits().jsonName ?? fromKey; + nameMap[fromKey] = memberName; + } + if (union) { + unionSerde.mark(fromKey); + } + if (record[fromKey] != null) { + out[memberName] = this._read(memberSchema, record[fromKey]); + } + } + if (union) { + unionSerde.writeUnknown(); + } + else if (typeof record.__type === "string") { + for (const [k, v] of Object.entries(record)) { + const t = jsonName ? nameMap[k] ?? k : k; + if (!(t in out)) { + out[t] = v; + } + } + } + return out; + } + if (Array.isArray(value) && ns.isListSchema()) { + const listMember = ns.getValueSchema(); + const out = []; + for (const item of value) { + out.push(this._read(listMember, item)); + } + return out; + } + if (ns.isMapSchema()) { + const mapMember = ns.getValueSchema(); + const out = {}; + for (const [_k, _v] of Object.entries(value)) { + out[_k] = this._read(mapMember, _v); + } + return out; + } + } + if (ns.isBlobSchema() && typeof value === "string") { + return fromBase64(value); + } + const mediaType = ns.getMergedTraits().mediaType; + if (ns.isStringSchema() && typeof value === "string" && mediaType) { + const isJson = mediaType === "application/json" || mediaType.endsWith("+json"); + if (isJson) { + return LazyJsonString.from(value); + } + return value; + } + if (ns.isTimestampSchema() && value != null) { + const format = determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + return parseRfc3339DateTimeWithOffset(value); + case 6: + return parseRfc7231DateTime(value); + case 7: + return parseEpochTimestamp(value); + default: + console.warn("Missing timestamp format, parsing value with Date constructor:", value); + return new Date(value); + } + } + if (ns.isBigIntegerSchema() && (typeof value === "number" || typeof value === "string")) { + return BigInt(value); + } + if (ns.isBigDecimalSchema() && value != undefined) { + if (value instanceof NumericValue) { + return value; + } + const untyped = value; + if (untyped.type === "bigDecimal" && "string" in untyped) { + return new NumericValue(untyped.string, untyped.type); + } + return new NumericValue(String(value), "bigDecimal"); + } + if (ns.isNumericSchema() && typeof value === "string") { + switch (value) { + case "Infinity": + return Infinity; + case "-Infinity": + return -Infinity; + case "NaN": + return NaN; + } + return value; + } + if (ns.isDocumentSchema()) { + if (isObject) { + const out = Array.isArray(value) ? [] : {}; + for (const [k, v] of Object.entries(value)) { + if (v instanceof NumericValue) { + out[k] = v; + } + else { + out[k] = this._read(ns, v); + } + } + return out; + } + else { + return structuredClone(value); + } + } + return value; + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonShapeSerializer.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonShapeSerializer.js new file mode 100644 index 000000000..8f5e20286 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonShapeSerializer.js @@ -0,0 +1,176 @@ +import { determineTimestampFormat } from "@smithy/core/protocols"; +import { NormalizedSchema } from "@smithy/core/schema"; +import { dateToUtcString, generateIdempotencyToken, LazyJsonString, NumericValue } from "@smithy/core/serde"; +import { toBase64 } from "@smithy/util-base64"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import { JsonReplacer } from "./jsonReplacer"; +export class JsonShapeSerializer extends SerdeContextConfig { + settings; + buffer; + useReplacer = false; + rootSchema; + constructor(settings) { + super(); + this.settings = settings; + } + write(schema, value) { + this.rootSchema = NormalizedSchema.of(schema); + this.buffer = this._write(this.rootSchema, value); + } + writeDiscriminatedDocument(schema, value) { + this.write(schema, value); + if (typeof this.buffer === "object") { + this.buffer.__type = NormalizedSchema.of(schema).getName(true); + } + } + flush() { + const { rootSchema, useReplacer } = this; + this.rootSchema = undefined; + this.useReplacer = false; + if (rootSchema?.isStructSchema() || rootSchema?.isDocumentSchema()) { + if (!useReplacer) { + return JSON.stringify(this.buffer); + } + const replacer = new JsonReplacer(); + return replacer.replaceInJson(JSON.stringify(this.buffer, replacer.createReplacer(), 0)); + } + return this.buffer; + } + _write(schema, value, container) { + const isObject = value !== null && typeof value === "object"; + const ns = NormalizedSchema.of(schema); + if (isObject) { + if (ns.isStructSchema()) { + const record = value; + const out = {}; + const { jsonName } = this.settings; + let nameMap = void 0; + if (jsonName) { + nameMap = {}; + } + for (const [memberName, memberSchema] of ns.structIterator()) { + const serializableValue = this._write(memberSchema, record[memberName], ns); + if (serializableValue !== undefined) { + let targetKey = memberName; + if (jsonName) { + targetKey = memberSchema.getMergedTraits().jsonName ?? memberName; + nameMap[memberName] = targetKey; + } + out[targetKey] = serializableValue; + } + } + if (ns.isUnionSchema() && Object.keys(out).length === 0) { + const { $unknown } = record; + if (Array.isArray($unknown)) { + const [k, v] = $unknown; + out[k] = this._write(15, v); + } + } + else if (typeof record.__type === "string") { + for (const [k, v] of Object.entries(record)) { + const targetKey = jsonName ? nameMap[k] ?? k : k; + if (!(targetKey in out)) { + out[targetKey] = this._write(15, v); + } + } + } + return out; + } + if (Array.isArray(value) && ns.isListSchema()) { + const listMember = ns.getValueSchema(); + const out = []; + const sparse = !!ns.getMergedTraits().sparse; + for (const item of value) { + if (sparse || item != null) { + out.push(this._write(listMember, item)); + } + } + return out; + } + if (ns.isMapSchema()) { + const mapMember = ns.getValueSchema(); + const out = {}; + const sparse = !!ns.getMergedTraits().sparse; + for (const [_k, _v] of Object.entries(value)) { + if (sparse || _v != null) { + out[_k] = this._write(mapMember, _v); + } + } + return out; + } + if (value instanceof Uint8Array && (ns.isBlobSchema() || ns.isDocumentSchema())) { + if (ns === this.rootSchema) { + return value; + } + return (this.serdeContext?.base64Encoder ?? toBase64)(value); + } + if (value instanceof Date && (ns.isTimestampSchema() || ns.isDocumentSchema())) { + const format = determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + return value.toISOString().replace(".000Z", "Z"); + case 6: + return dateToUtcString(value); + case 7: + return value.getTime() / 1000; + default: + console.warn("Missing timestamp format, using epoch seconds", value); + return value.getTime() / 1000; + } + } + if (value instanceof NumericValue) { + this.useReplacer = true; + } + } + if (value === null && container?.isStructSchema()) { + return void 0; + } + if (ns.isStringSchema()) { + if (typeof value === "undefined" && ns.isIdempotencyToken()) { + return generateIdempotencyToken(); + } + const mediaType = ns.getMergedTraits().mediaType; + if (value != null && mediaType) { + const isJson = mediaType === "application/json" || mediaType.endsWith("+json"); + if (isJson) { + return LazyJsonString.from(value); + } + } + return value; + } + if (typeof value === "number" && ns.isNumericSchema()) { + if (Math.abs(value) === Infinity || isNaN(value)) { + return String(value); + } + return value; + } + if (typeof value === "string" && ns.isBlobSchema()) { + if (ns === this.rootSchema) { + return value; + } + return (this.serdeContext?.base64Encoder ?? toBase64)(value); + } + if (typeof value === "bigint") { + this.useReplacer = true; + } + if (ns.isDocumentSchema()) { + if (isObject) { + const out = Array.isArray(value) ? [] : {}; + for (const [k, v] of Object.entries(value)) { + if (v instanceof NumericValue) { + this.useReplacer = true; + out[k] = v; + } + else { + out[k] = this._write(ns, v); + } + } + return out; + } + else { + return structuredClone(value); + } + } + return value; + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/awsExpectUnion.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/awsExpectUnion.js new file mode 100644 index 000000000..1c6cc3223 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/awsExpectUnion.js @@ -0,0 +1,10 @@ +import { expectUnion } from "@smithy/smithy-client"; +export const awsExpectUnion = (value) => { + if (value == null) { + return undefined; + } + if (typeof value === "object" && "__type" in value) { + delete value.__type; + } + return expectUnion(value); +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/experimental/SinglePassJsonShapeSerializer.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/experimental/SinglePassJsonShapeSerializer.js new file mode 100644 index 000000000..31d0439f4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/experimental/SinglePassJsonShapeSerializer.js @@ -0,0 +1,135 @@ +import { determineTimestampFormat } from "@smithy/core/protocols"; +import { NormalizedSchema } from "@smithy/core/schema"; +import { dateToUtcString, generateIdempotencyToken, LazyJsonString, NumericValue } from "@smithy/core/serde"; +import { toBase64 } from "@smithy/util-base64"; +import { SerdeContextConfig } from "../../ConfigurableSerdeContext"; +export class SinglePassJsonShapeSerializer extends SerdeContextConfig { + settings; + buffer; + rootSchema; + constructor(settings) { + super(); + this.settings = settings; + } + write(schema, value) { + this.rootSchema = NormalizedSchema.of(schema); + this.buffer = this.writeObject(this.rootSchema, value); + } + writeDiscriminatedDocument(schema, value) { + this.write(schema, value); + if (typeof this.buffer === "object") { + this.buffer.__type = NormalizedSchema.of(schema).getName(true); + } + } + flush() { + this.rootSchema = undefined; + return this.buffer; + } + writeObject(schema, value) { + if (value == undefined) { + return ""; + } + let b = ""; + const ns = NormalizedSchema.of(schema); + const sparse = !!ns.getMergedTraits().sparse; + if (Array.isArray(value) && (ns.isDocumentSchema() || ns.isListSchema())) { + b += "["; + for (let i = 0; i < value.length; ++i) { + const item = value[i]; + if (item != null || sparse) { + b += this.writeValue(ns.getValueSchema(), item); + b += ","; + } + } + } + else if (ns.isStructSchema()) { + b += "{"; + let didWriteMember = false; + for (const [name, member] of ns.structIterator()) { + const item = value[name]; + const targetKey = this.settings.jsonName ? member.getMergedTraits().jsonName ?? name : name; + const serializableValue = this.writeValue(member, item); + if (item != null || member.isIdempotencyToken()) { + didWriteMember = true; + b += `"${targetKey}":${serializableValue}`; + b += ","; + } + } + if (!didWriteMember && ns.isUnionSchema()) { + const { $unknown } = value; + if (Array.isArray($unknown)) { + const [k, v] = $unknown; + b += `"${k}":${this.writeValue(15, v)}`; + } + } + } + else if (ns.isMapSchema() || ns.isDocumentSchema()) { + b += "{"; + for (const [k, v] of Object.entries(value)) { + if (v != null || sparse) { + b += `"${k}":${this.writeValue(ns, v)}`; + b += ","; + } + } + } + if (b[b.length - 1] === ",") { + b = b.slice(0, -1); + } + if (b[0] === "[") { + b += "]"; + } + if (b[0] === "{") { + b += "}"; + } + return b; + } + writeValue(schema, value) { + const isObject = value !== null && typeof value === "object"; + const ns = NormalizedSchema.of(schema); + const quote = (_) => `"${_}"`; + if ((ns.isBlobSchema() && (value instanceof Uint8Array || typeof value === "string")) || + (ns.isDocumentSchema() && value instanceof Uint8Array)) { + return quote((this.serdeContext?.base64Encoder ?? toBase64)(value)); + } + if ((ns.isTimestampSchema() || ns.isDocumentSchema()) && value instanceof Date) { + const format = determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + return quote(value.toISOString().replace(".000Z", "Z")); + case 6: + return quote(dateToUtcString(value)); + case 7: + return String(value.getTime() / 1000); + default: + console.warn("Missing timestamp format, using epoch seconds", value); + return String(value.getTime() / 1000); + } + } + if (ns.isNumericSchema() && typeof value === "number") { + if (Math.abs(value) === Infinity || isNaN(value)) { + return quote(String(value)); + } + } + if (ns.isStringSchema()) { + if (typeof value === "undefined" && ns.isIdempotencyToken()) { + return quote(generateIdempotencyToken()); + } + if (typeof value === "string") { + const mediaType = ns.getMergedTraits().mediaType; + if (mediaType) { + const isJson = mediaType === "application/json" || mediaType.endsWith("+json"); + if (isJson) { + return quote(LazyJsonString.from(value).toString()); + } + } + } + } + if (value instanceof NumericValue) { + return value.string; + } + if (isObject) { + return this.writeObject(ns, value); + } + return typeof value === "string" ? quote(value) : String(value); + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/jsonReplacer.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/jsonReplacer.js new file mode 100644 index 000000000..7dbb98c9b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/jsonReplacer.js @@ -0,0 +1,46 @@ +import { NumericValue } from "@smithy/core/serde"; +const NUMERIC_CONTROL_CHAR = String.fromCharCode(925); +export class JsonReplacer { + values = new Map(); + counter = 0; + stage = 0; + createReplacer() { + if (this.stage === 1) { + throw new Error("@aws-sdk/core/protocols - JsonReplacer already created."); + } + if (this.stage === 2) { + throw new Error("@aws-sdk/core/protocols - JsonReplacer exhausted."); + } + this.stage = 1; + return (key, value) => { + if (value instanceof NumericValue) { + const v = `${NUMERIC_CONTROL_CHAR + "nv" + this.counter++}_` + value.string; + this.values.set(`"${v}"`, value.string); + return v; + } + if (typeof value === "bigint") { + const s = value.toString(); + const v = `${NUMERIC_CONTROL_CHAR + "b" + this.counter++}_` + s; + this.values.set(`"${v}"`, s); + return v; + } + return value; + }; + } + replaceInJson(json) { + if (this.stage === 0) { + throw new Error("@aws-sdk/core/protocols - JsonReplacer not created yet."); + } + if (this.stage === 2) { + throw new Error("@aws-sdk/core/protocols - JsonReplacer exhausted."); + } + this.stage = 2; + if (this.counter === 0) { + return json; + } + for (const [key, value] of this.values) { + json = json.replace(key, value); + } + return json; + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/jsonReviver.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/jsonReviver.js new file mode 100644 index 000000000..ab01eef9d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/jsonReviver.js @@ -0,0 +1,18 @@ +import { NumericValue } from "@smithy/core/serde"; +export function jsonReviver(key, value, context) { + if (context?.source) { + const numericString = context.source; + if (typeof value === "number") { + if (value > Number.MAX_SAFE_INTEGER || value < Number.MIN_SAFE_INTEGER || numericString !== String(value)) { + const isFractional = numericString.includes("."); + if (isFractional) { + return new NumericValue(numericString, "bigDecimal"); + } + else { + return BigInt(numericString); + } + } + } + } + return value; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/parseJsonBody.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/parseJsonBody.js new file mode 100644 index 000000000..39f491030 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/parseJsonBody.js @@ -0,0 +1,54 @@ +import { collectBodyString } from "../common"; +export const parseJsonBody = (streamBody, context) => collectBodyString(streamBody, context).then((encoded) => { + if (encoded.length) { + try { + return JSON.parse(encoded); + } + catch (e) { + if (e?.name === "SyntaxError") { + Object.defineProperty(e, "$responseBodyText", { + value: encoded, + }); + } + throw e; + } + } + return {}; +}); +export const parseJsonErrorBody = async (errorBody, context) => { + const value = await parseJsonBody(errorBody, context); + value.message = value.message ?? value.Message; + return value; +}; +export const loadRestJsonErrorCode = (output, data) => { + const findKey = (object, key) => Object.keys(object).find((k) => k.toLowerCase() === key.toLowerCase()); + const sanitizeErrorCode = (rawValue) => { + let cleanValue = rawValue; + if (typeof cleanValue === "number") { + cleanValue = cleanValue.toString(); + } + if (cleanValue.indexOf(",") >= 0) { + cleanValue = cleanValue.split(",")[0]; + } + if (cleanValue.indexOf(":") >= 0) { + cleanValue = cleanValue.split(":")[0]; + } + if (cleanValue.indexOf("#") >= 0) { + cleanValue = cleanValue.split("#")[1]; + } + return cleanValue; + }; + const headerKey = findKey(output.headers, "x-amzn-errortype"); + if (headerKey !== undefined) { + return sanitizeErrorCode(output.headers[headerKey]); + } + if (data && typeof data === "object") { + const codeKey = findKey(data, "code"); + if (codeKey && data[codeKey] !== undefined) { + return sanitizeErrorCode(data[codeKey]); + } + if (data["__type"] !== undefined) { + return sanitizeErrorCode(data["__type"]); + } + } +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/AwsEc2QueryProtocol.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/AwsEc2QueryProtocol.js new file mode 100644 index 000000000..349fd9a6a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/AwsEc2QueryProtocol.js @@ -0,0 +1,21 @@ +import { AwsQueryProtocol } from "./AwsQueryProtocol"; +export class AwsEc2QueryProtocol extends AwsQueryProtocol { + options; + constructor(options) { + super(options); + this.options = options; + const ec2Settings = { + capitalizeKeys: true, + flattenLists: true, + serializeEmptyLists: false, + ec2: true, + }; + Object.assign(this.serializer.settings, ec2Settings); + } + getShapeId() { + return "aws.protocols#ec2Query"; + } + useNestedResult() { + return false; + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/AwsQueryProtocol.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/AwsQueryProtocol.js new file mode 100644 index 000000000..dbe9fa53c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/AwsQueryProtocol.js @@ -0,0 +1,136 @@ +import { collectBody, RpcProtocol } from "@smithy/core/protocols"; +import { deref, NormalizedSchema, TypeRegistry } from "@smithy/core/schema"; +import { ProtocolLib } from "../ProtocolLib"; +import { XmlShapeDeserializer } from "../xml/XmlShapeDeserializer"; +import { QueryShapeSerializer } from "./QueryShapeSerializer"; +export class AwsQueryProtocol extends RpcProtocol { + options; + serializer; + deserializer; + mixin = new ProtocolLib(); + constructor(options) { + super({ + defaultNamespace: options.defaultNamespace, + }); + this.options = options; + const settings = { + timestampFormat: { + useTrait: true, + default: 5, + }, + httpBindings: false, + xmlNamespace: options.xmlNamespace, + serviceNamespace: options.defaultNamespace, + serializeEmptyLists: true, + }; + this.serializer = new QueryShapeSerializer(settings); + this.deserializer = new XmlShapeDeserializer(settings); + } + getShapeId() { + return "aws.protocols#awsQuery"; + } + setSerdeContext(serdeContext) { + this.serializer.setSerdeContext(serdeContext); + this.deserializer.setSerdeContext(serdeContext); + } + getPayloadCodec() { + throw new Error("AWSQuery protocol has no payload codec."); + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + if (!request.path.endsWith("/")) { + request.path += "/"; + } + Object.assign(request.headers, { + "content-type": `application/x-www-form-urlencoded`, + }); + if (deref(operationSchema.input) === "unit" || !request.body) { + request.body = ""; + } + const action = operationSchema.name.split("#")[1] ?? operationSchema.name; + request.body = `Action=${action}&Version=${this.options.version}` + request.body; + if (request.body.endsWith("&")) { + request.body = request.body.slice(-1); + } + return request; + } + async deserializeResponse(operationSchema, context, response) { + const deserializer = this.deserializer; + const ns = NormalizedSchema.of(operationSchema.output); + const dataObject = {}; + if (response.statusCode >= 300) { + const bytes = await collectBody(response.body, context); + if (bytes.byteLength > 0) { + Object.assign(dataObject, await deserializer.read(15, bytes)); + } + await this.handleError(operationSchema, context, response, dataObject, this.deserializeMetadata(response)); + } + for (const header in response.headers) { + const value = response.headers[header]; + delete response.headers[header]; + response.headers[header.toLowerCase()] = value; + } + const shortName = operationSchema.name.split("#")[1] ?? operationSchema.name; + const awsQueryResultKey = ns.isStructSchema() && this.useNestedResult() ? shortName + "Result" : undefined; + const bytes = await collectBody(response.body, context); + if (bytes.byteLength > 0) { + Object.assign(dataObject, await deserializer.read(ns, bytes, awsQueryResultKey)); + } + const output = { + $metadata: this.deserializeMetadata(response), + ...dataObject, + }; + return output; + } + useNestedResult() { + return true; + } + async handleError(operationSchema, context, response, dataObject, metadata) { + const errorIdentifier = this.loadQueryErrorCode(response, dataObject) ?? "Unknown"; + const errorData = this.loadQueryError(dataObject) ?? {}; + const message = this.loadQueryErrorMessage(dataObject); + errorData.message = message; + errorData.Error = { + Type: errorData.Type, + Code: errorData.Code, + Message: message, + }; + const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorIdentifier, this.options.defaultNamespace, response, errorData, metadata, this.mixin.findQueryCompatibleError); + const ns = NormalizedSchema.of(errorSchema); + const ErrorCtor = TypeRegistry.for(errorSchema[1]).getErrorCtor(errorSchema) ?? Error; + const exception = new ErrorCtor(message); + const output = { + Type: errorData.Error.Type, + Code: errorData.Error.Code, + Error: errorData.Error, + }; + for (const [name, member] of ns.structIterator()) { + const target = member.getMergedTraits().xmlName ?? name; + const value = errorData[target] ?? dataObject[target]; + output[name] = this.deserializer.readSchema(member, value); + } + throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output), dataObject); + } + loadQueryErrorCode(output, data) { + const code = (data.Errors?.[0]?.Error ?? data.Errors?.Error ?? data.Error)?.Code; + if (code !== undefined) { + return code; + } + if (output.statusCode == 404) { + return "NotFound"; + } + } + loadQueryError(data) { + return data.Errors?.[0]?.Error ?? data.Errors?.Error ?? data.Error; + } + loadQueryErrorMessage(data) { + const errorData = this.loadQueryError(data); + return errorData?.message ?? errorData?.Message ?? data.message ?? data.Message ?? "Unknown"; + } + getDefaultContentType() { + return "application/x-www-form-urlencoded"; + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/QuerySerializerSettings.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/QuerySerializerSettings.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/QuerySerializerSettings.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/QueryShapeSerializer.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/QueryShapeSerializer.js new file mode 100644 index 000000000..d584c51c0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/QueryShapeSerializer.js @@ -0,0 +1,189 @@ +import { determineTimestampFormat, extendedEncodeURIComponent } from "@smithy/core/protocols"; +import { NormalizedSchema } from "@smithy/core/schema"; +import { generateIdempotencyToken, NumericValue } from "@smithy/core/serde"; +import { dateToUtcString } from "@smithy/smithy-client"; +import { toBase64 } from "@smithy/util-base64"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +export class QueryShapeSerializer extends SerdeContextConfig { + settings; + buffer; + constructor(settings) { + super(); + this.settings = settings; + } + write(schema, value, prefix = "") { + if (this.buffer === undefined) { + this.buffer = ""; + } + const ns = NormalizedSchema.of(schema); + if (prefix && !prefix.endsWith(".")) { + prefix += "."; + } + if (ns.isBlobSchema()) { + if (typeof value === "string" || value instanceof Uint8Array) { + this.writeKey(prefix); + this.writeValue((this.serdeContext?.base64Encoder ?? toBase64)(value)); + } + } + else if (ns.isBooleanSchema() || ns.isNumericSchema() || ns.isStringSchema()) { + if (value != null) { + this.writeKey(prefix); + this.writeValue(String(value)); + } + else if (ns.isIdempotencyToken()) { + this.writeKey(prefix); + this.writeValue(generateIdempotencyToken()); + } + } + else if (ns.isBigIntegerSchema()) { + if (value != null) { + this.writeKey(prefix); + this.writeValue(String(value)); + } + } + else if (ns.isBigDecimalSchema()) { + if (value != null) { + this.writeKey(prefix); + this.writeValue(value instanceof NumericValue ? value.string : String(value)); + } + } + else if (ns.isTimestampSchema()) { + if (value instanceof Date) { + this.writeKey(prefix); + const format = determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + this.writeValue(value.toISOString().replace(".000Z", "Z")); + break; + case 6: + this.writeValue(dateToUtcString(value)); + break; + case 7: + this.writeValue(String(value.getTime() / 1000)); + break; + } + } + } + else if (ns.isDocumentSchema()) { + if (Array.isArray(value)) { + this.write(64 | 15, value, prefix); + } + else if (value instanceof Date) { + this.write(4, value, prefix); + } + else if (value instanceof Uint8Array) { + this.write(21, value, prefix); + } + else if (value && typeof value === "object") { + this.write(128 | 15, value, prefix); + } + else { + this.writeKey(prefix); + this.writeValue(String(value)); + } + } + else if (ns.isListSchema()) { + if (Array.isArray(value)) { + if (value.length === 0) { + if (this.settings.serializeEmptyLists) { + this.writeKey(prefix); + this.writeValue(""); + } + } + else { + const member = ns.getValueSchema(); + const flat = this.settings.flattenLists || ns.getMergedTraits().xmlFlattened; + let i = 1; + for (const item of value) { + if (item == null) { + continue; + } + const traits = member.getMergedTraits(); + const suffix = this.getKey("member", traits.xmlName, traits.ec2QueryName); + const key = flat ? `${prefix}${i}` : `${prefix}${suffix}.${i}`; + this.write(member, item, key); + ++i; + } + } + } + } + else if (ns.isMapSchema()) { + if (value && typeof value === "object") { + const keySchema = ns.getKeySchema(); + const memberSchema = ns.getValueSchema(); + const flat = ns.getMergedTraits().xmlFlattened; + let i = 1; + for (const [k, v] of Object.entries(value)) { + if (v == null) { + continue; + } + const keyTraits = keySchema.getMergedTraits(); + const keySuffix = this.getKey("key", keyTraits.xmlName, keyTraits.ec2QueryName); + const key = flat ? `${prefix}${i}.${keySuffix}` : `${prefix}entry.${i}.${keySuffix}`; + const valTraits = memberSchema.getMergedTraits(); + const valueSuffix = this.getKey("value", valTraits.xmlName, valTraits.ec2QueryName); + const valueKey = flat ? `${prefix}${i}.${valueSuffix}` : `${prefix}entry.${i}.${valueSuffix}`; + this.write(keySchema, k, key); + this.write(memberSchema, v, valueKey); + ++i; + } + } + } + else if (ns.isStructSchema()) { + if (value && typeof value === "object") { + let didWriteMember = false; + for (const [memberName, member] of ns.structIterator()) { + if (value[memberName] == null && !member.isIdempotencyToken()) { + continue; + } + const traits = member.getMergedTraits(); + const suffix = this.getKey(memberName, traits.xmlName, traits.ec2QueryName, "struct"); + const key = `${prefix}${suffix}`; + this.write(member, value[memberName], key); + didWriteMember = true; + } + if (!didWriteMember && ns.isUnionSchema()) { + const { $unknown } = value; + if (Array.isArray($unknown)) { + const [k, v] = $unknown; + const key = `${prefix}${k}`; + this.write(15, v, key); + } + } + } + } + else if (ns.isUnitSchema()) { + } + else { + throw new Error(`@aws-sdk/core/protocols - QuerySerializer unrecognized schema type ${ns.getName(true)}`); + } + } + flush() { + if (this.buffer === undefined) { + throw new Error("@aws-sdk/core/protocols - QuerySerializer cannot flush with nothing written to buffer."); + } + const str = this.buffer; + delete this.buffer; + return str; + } + getKey(memberName, xmlName, ec2QueryName, keySource) { + const { ec2, capitalizeKeys } = this.settings; + if (ec2 && ec2QueryName) { + return ec2QueryName; + } + const key = xmlName ?? memberName; + if (capitalizeKeys && keySource === "struct") { + return key[0].toUpperCase() + key.slice(1); + } + return key; + } + writeKey(key) { + if (key.endsWith(".")) { + key = key.slice(0, key.length - 1); + } + this.buffer += `&${extendedEncodeURIComponent(key)}=`; + } + writeValue(value) { + this.buffer += extendedEncodeURIComponent(value); + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/AwsRestXmlProtocol.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/AwsRestXmlProtocol.js new file mode 100644 index 000000000..d75cab0b4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/AwsRestXmlProtocol.js @@ -0,0 +1,93 @@ +import { HttpBindingProtocol, HttpInterceptingShapeDeserializer, HttpInterceptingShapeSerializer, } from "@smithy/core/protocols"; +import { NormalizedSchema, TypeRegistry } from "@smithy/core/schema"; +import { ProtocolLib } from "../ProtocolLib"; +import { loadRestXmlErrorCode } from "./parseXmlBody"; +import { XmlCodec } from "./XmlCodec"; +export class AwsRestXmlProtocol extends HttpBindingProtocol { + codec; + serializer; + deserializer; + mixin = new ProtocolLib(); + constructor(options) { + super(options); + const settings = { + timestampFormat: { + useTrait: true, + default: 5, + }, + httpBindings: true, + xmlNamespace: options.xmlNamespace, + serviceNamespace: options.defaultNamespace, + }; + this.codec = new XmlCodec(settings); + this.serializer = new HttpInterceptingShapeSerializer(this.codec.createSerializer(), settings); + this.deserializer = new HttpInterceptingShapeDeserializer(this.codec.createDeserializer(), settings); + } + getPayloadCodec() { + return this.codec; + } + getShapeId() { + return "aws.protocols#restXml"; + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + const inputSchema = NormalizedSchema.of(operationSchema.input); + if (!request.headers["content-type"]) { + const contentType = this.mixin.resolveRestContentType(this.getDefaultContentType(), inputSchema); + if (contentType) { + request.headers["content-type"] = contentType; + } + } + if (typeof request.body === "string" && + request.headers["content-type"] === this.getDefaultContentType() && + !request.body.startsWith("' + request.body; + } + return request; + } + async deserializeResponse(operationSchema, context, response) { + return super.deserializeResponse(operationSchema, context, response); + } + async handleError(operationSchema, context, response, dataObject, metadata) { + const errorIdentifier = loadRestXmlErrorCode(response, dataObject) ?? "Unknown"; + if (dataObject.Error && typeof dataObject.Error === "object") { + for (const key of Object.keys(dataObject.Error)) { + dataObject[key] = dataObject.Error[key]; + if (key.toLowerCase() === "message") { + dataObject.message = dataObject.Error[key]; + } + } + } + if (dataObject.RequestId && !metadata.requestId) { + metadata.requestId = dataObject.RequestId; + } + const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorIdentifier, this.options.defaultNamespace, response, dataObject, metadata); + const ns = NormalizedSchema.of(errorSchema); + const message = dataObject.Error?.message ?? dataObject.Error?.Message ?? dataObject.message ?? dataObject.Message ?? "Unknown"; + const ErrorCtor = TypeRegistry.for(errorSchema[1]).getErrorCtor(errorSchema) ?? Error; + const exception = new ErrorCtor(message); + await this.deserializeHttpMessage(errorSchema, context, response, dataObject); + const output = {}; + for (const [name, member] of ns.structIterator()) { + const target = member.getMergedTraits().xmlName ?? name; + const value = dataObject.Error?.[target] ?? dataObject[target]; + output[name] = this.codec.createDeserializer().readSchema(member, value); + } + throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output), dataObject); + } + getDefaultContentType() { + return "application/xml"; + } + hasUnstructuredPayloadBinding(ns) { + for (const [, member] of ns.structIterator()) { + if (member.getMergedTraits().httpPayload) { + return !(member.isStructSchema() || member.isMapSchema() || member.isListSchema()); + } + } + return false; + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlCodec.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlCodec.js new file mode 100644 index 000000000..0a148dc5d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlCodec.js @@ -0,0 +1,20 @@ +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import { XmlShapeDeserializer } from "./XmlShapeDeserializer"; +import { XmlShapeSerializer } from "./XmlShapeSerializer"; +export class XmlCodec extends SerdeContextConfig { + settings; + constructor(settings) { + super(); + this.settings = settings; + } + createSerializer() { + const serializer = new XmlShapeSerializer(this.settings); + serializer.setSerdeContext(this.serdeContext); + return serializer; + } + createDeserializer() { + const deserializer = new XmlShapeDeserializer(this.settings); + deserializer.setSerdeContext(this.serdeContext); + return deserializer; + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlShapeDeserializer.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlShapeDeserializer.js new file mode 100644 index 000000000..847a514f0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlShapeDeserializer.js @@ -0,0 +1,153 @@ +import { parseXML } from "@aws-sdk/xml-builder"; +import { FromStringShapeDeserializer } from "@smithy/core/protocols"; +import { NormalizedSchema } from "@smithy/core/schema"; +import { getValueFromTextNode } from "@smithy/smithy-client"; +import { toUtf8 } from "@smithy/util-utf8"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import { UnionSerde } from "../UnionSerde"; +export class XmlShapeDeserializer extends SerdeContextConfig { + settings; + stringDeserializer; + constructor(settings) { + super(); + this.settings = settings; + this.stringDeserializer = new FromStringShapeDeserializer(settings); + } + setSerdeContext(serdeContext) { + this.serdeContext = serdeContext; + this.stringDeserializer.setSerdeContext(serdeContext); + } + read(schema, bytes, key) { + const ns = NormalizedSchema.of(schema); + const memberSchemas = ns.getMemberSchemas(); + const isEventPayload = ns.isStructSchema() && + ns.isMemberSchema() && + !!Object.values(memberSchemas).find((memberNs) => { + return !!memberNs.getMemberTraits().eventPayload; + }); + if (isEventPayload) { + const output = {}; + const memberName = Object.keys(memberSchemas)[0]; + const eventMemberSchema = memberSchemas[memberName]; + if (eventMemberSchema.isBlobSchema()) { + output[memberName] = bytes; + } + else { + output[memberName] = this.read(memberSchemas[memberName], bytes); + } + return output; + } + const xmlString = (this.serdeContext?.utf8Encoder ?? toUtf8)(bytes); + const parsedObject = this.parseXml(xmlString); + return this.readSchema(schema, key ? parsedObject[key] : parsedObject); + } + readSchema(_schema, value) { + const ns = NormalizedSchema.of(_schema); + if (ns.isUnitSchema()) { + return; + } + const traits = ns.getMergedTraits(); + if (ns.isListSchema() && !Array.isArray(value)) { + return this.readSchema(ns, [value]); + } + if (value == null) { + return value; + } + if (typeof value === "object") { + const flat = !!traits.xmlFlattened; + if (ns.isListSchema()) { + const listValue = ns.getValueSchema(); + const buffer = []; + const sourceKey = listValue.getMergedTraits().xmlName ?? "member"; + const source = flat ? value : (value[0] ?? value)[sourceKey]; + if (source == null) { + return buffer; + } + const sourceArray = Array.isArray(source) ? source : [source]; + for (const v of sourceArray) { + buffer.push(this.readSchema(listValue, v)); + } + return buffer; + } + const buffer = {}; + if (ns.isMapSchema()) { + const keyNs = ns.getKeySchema(); + const memberNs = ns.getValueSchema(); + let entries; + if (flat) { + entries = Array.isArray(value) ? value : [value]; + } + else { + entries = Array.isArray(value.entry) ? value.entry : [value.entry]; + } + const keyProperty = keyNs.getMergedTraits().xmlName ?? "key"; + const valueProperty = memberNs.getMergedTraits().xmlName ?? "value"; + for (const entry of entries) { + const key = entry[keyProperty]; + const value = entry[valueProperty]; + buffer[key] = this.readSchema(memberNs, value); + } + return buffer; + } + if (ns.isStructSchema()) { + const union = ns.isUnionSchema(); + let unionSerde; + if (union) { + unionSerde = new UnionSerde(value, buffer); + } + for (const [memberName, memberSchema] of ns.structIterator()) { + const memberTraits = memberSchema.getMergedTraits(); + const xmlObjectKey = !memberTraits.httpPayload + ? memberSchema.getMemberTraits().xmlName ?? memberName + : memberTraits.xmlName ?? memberSchema.getName(); + if (union) { + unionSerde.mark(xmlObjectKey); + } + if (value[xmlObjectKey] != null) { + buffer[memberName] = this.readSchema(memberSchema, value[xmlObjectKey]); + } + } + if (union) { + unionSerde.writeUnknown(); + } + return buffer; + } + if (ns.isDocumentSchema()) { + return value; + } + throw new Error(`@aws-sdk/core/protocols - xml deserializer unhandled schema type for ${ns.getName(true)}`); + } + if (ns.isListSchema()) { + return []; + } + if (ns.isMapSchema() || ns.isStructSchema()) { + return {}; + } + return this.stringDeserializer.read(ns, value); + } + parseXml(xml) { + if (xml.length) { + let parsedObj; + try { + parsedObj = parseXML(xml); + } + catch (e) { + if (e && typeof e === "object") { + Object.defineProperty(e, "$responseBodyText", { + value: xml, + }); + } + throw e; + } + const textNodeName = "#text"; + const key = Object.keys(parsedObj)[0]; + const parsedObjToReturn = parsedObj[key]; + if (parsedObjToReturn[textNodeName]) { + parsedObjToReturn[key] = parsedObjToReturn[textNodeName]; + delete parsedObjToReturn[textNodeName]; + } + return getValueFromTextNode(parsedObjToReturn); + } + return {}; + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlShapeSerializer.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlShapeSerializer.js new file mode 100644 index 000000000..701ed93b7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlShapeSerializer.js @@ -0,0 +1,295 @@ +import { XmlNode, XmlText } from "@aws-sdk/xml-builder"; +import { determineTimestampFormat } from "@smithy/core/protocols"; +import { NormalizedSchema } from "@smithy/core/schema"; +import { generateIdempotencyToken, NumericValue } from "@smithy/core/serde"; +import { dateToUtcString } from "@smithy/smithy-client"; +import { fromBase64, toBase64 } from "@smithy/util-base64"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +export class XmlShapeSerializer extends SerdeContextConfig { + settings; + stringBuffer; + byteBuffer; + buffer; + constructor(settings) { + super(); + this.settings = settings; + } + write(schema, value) { + const ns = NormalizedSchema.of(schema); + if (ns.isStringSchema() && typeof value === "string") { + this.stringBuffer = value; + } + else if (ns.isBlobSchema()) { + this.byteBuffer = + "byteLength" in value + ? value + : (this.serdeContext?.base64Decoder ?? fromBase64)(value); + } + else { + this.buffer = this.writeStruct(ns, value, undefined); + const traits = ns.getMergedTraits(); + if (traits.httpPayload && !traits.xmlName) { + this.buffer.withName(ns.getName()); + } + } + } + flush() { + if (this.byteBuffer !== undefined) { + const bytes = this.byteBuffer; + delete this.byteBuffer; + return bytes; + } + if (this.stringBuffer !== undefined) { + const str = this.stringBuffer; + delete this.stringBuffer; + return str; + } + const buffer = this.buffer; + if (this.settings.xmlNamespace) { + if (!buffer?.attributes?.["xmlns"]) { + buffer.addAttribute("xmlns", this.settings.xmlNamespace); + } + } + delete this.buffer; + return buffer.toString(); + } + writeStruct(ns, value, parentXmlns) { + const traits = ns.getMergedTraits(); + const name = ns.isMemberSchema() && !traits.httpPayload + ? ns.getMemberTraits().xmlName ?? ns.getMemberName() + : traits.xmlName ?? ns.getName(); + if (!name || !ns.isStructSchema()) { + throw new Error(`@aws-sdk/core/protocols - xml serializer, cannot write struct with empty name or non-struct, schema=${ns.getName(true)}.`); + } + const structXmlNode = XmlNode.of(name); + const [xmlnsAttr, xmlns] = this.getXmlnsAttribute(ns, parentXmlns); + for (const [memberName, memberSchema] of ns.structIterator()) { + const val = value[memberName]; + if (val != null || memberSchema.isIdempotencyToken()) { + if (memberSchema.getMergedTraits().xmlAttribute) { + structXmlNode.addAttribute(memberSchema.getMergedTraits().xmlName ?? memberName, this.writeSimple(memberSchema, val)); + continue; + } + if (memberSchema.isListSchema()) { + this.writeList(memberSchema, val, structXmlNode, xmlns); + } + else if (memberSchema.isMapSchema()) { + this.writeMap(memberSchema, val, structXmlNode, xmlns); + } + else if (memberSchema.isStructSchema()) { + structXmlNode.addChildNode(this.writeStruct(memberSchema, val, xmlns)); + } + else { + const memberNode = XmlNode.of(memberSchema.getMergedTraits().xmlName ?? memberSchema.getMemberName()); + this.writeSimpleInto(memberSchema, val, memberNode, xmlns); + structXmlNode.addChildNode(memberNode); + } + } + } + const { $unknown } = value; + if ($unknown && ns.isUnionSchema() && Array.isArray($unknown) && Object.keys(value).length === 1) { + const [k, v] = $unknown; + const node = XmlNode.of(k); + if (typeof v !== "string") { + if (value instanceof XmlNode || value instanceof XmlText) { + structXmlNode.addChildNode(value); + } + else { + throw new Error(`@aws-sdk - $unknown union member in XML requires ` + + `value of type string, @aws-sdk/xml-builder::XmlNode or XmlText.`); + } + } + this.writeSimpleInto(0, v, node, xmlns); + structXmlNode.addChildNode(node); + } + if (xmlns) { + structXmlNode.addAttribute(xmlnsAttr, xmlns); + } + return structXmlNode; + } + writeList(listMember, array, container, parentXmlns) { + if (!listMember.isMemberSchema()) { + throw new Error(`@aws-sdk/core/protocols - xml serializer, cannot write non-member list: ${listMember.getName(true)}`); + } + const listTraits = listMember.getMergedTraits(); + const listValueSchema = listMember.getValueSchema(); + const listValueTraits = listValueSchema.getMergedTraits(); + const sparse = !!listValueTraits.sparse; + const flat = !!listTraits.xmlFlattened; + const [xmlnsAttr, xmlns] = this.getXmlnsAttribute(listMember, parentXmlns); + const writeItem = (container, value) => { + if (listValueSchema.isListSchema()) { + this.writeList(listValueSchema, Array.isArray(value) ? value : [value], container, xmlns); + } + else if (listValueSchema.isMapSchema()) { + this.writeMap(listValueSchema, value, container, xmlns); + } + else if (listValueSchema.isStructSchema()) { + const struct = this.writeStruct(listValueSchema, value, xmlns); + container.addChildNode(struct.withName(flat ? listTraits.xmlName ?? listMember.getMemberName() : listValueTraits.xmlName ?? "member")); + } + else { + const listItemNode = XmlNode.of(flat ? listTraits.xmlName ?? listMember.getMemberName() : listValueTraits.xmlName ?? "member"); + this.writeSimpleInto(listValueSchema, value, listItemNode, xmlns); + container.addChildNode(listItemNode); + } + }; + if (flat) { + for (const value of array) { + if (sparse || value != null) { + writeItem(container, value); + } + } + } + else { + const listNode = XmlNode.of(listTraits.xmlName ?? listMember.getMemberName()); + if (xmlns) { + listNode.addAttribute(xmlnsAttr, xmlns); + } + for (const value of array) { + if (sparse || value != null) { + writeItem(listNode, value); + } + } + container.addChildNode(listNode); + } + } + writeMap(mapMember, map, container, parentXmlns, containerIsMap = false) { + if (!mapMember.isMemberSchema()) { + throw new Error(`@aws-sdk/core/protocols - xml serializer, cannot write non-member map: ${mapMember.getName(true)}`); + } + const mapTraits = mapMember.getMergedTraits(); + const mapKeySchema = mapMember.getKeySchema(); + const mapKeyTraits = mapKeySchema.getMergedTraits(); + const keyTag = mapKeyTraits.xmlName ?? "key"; + const mapValueSchema = mapMember.getValueSchema(); + const mapValueTraits = mapValueSchema.getMergedTraits(); + const valueTag = mapValueTraits.xmlName ?? "value"; + const sparse = !!mapValueTraits.sparse; + const flat = !!mapTraits.xmlFlattened; + const [xmlnsAttr, xmlns] = this.getXmlnsAttribute(mapMember, parentXmlns); + const addKeyValue = (entry, key, val) => { + const keyNode = XmlNode.of(keyTag, key); + const [keyXmlnsAttr, keyXmlns] = this.getXmlnsAttribute(mapKeySchema, xmlns); + if (keyXmlns) { + keyNode.addAttribute(keyXmlnsAttr, keyXmlns); + } + entry.addChildNode(keyNode); + let valueNode = XmlNode.of(valueTag); + if (mapValueSchema.isListSchema()) { + this.writeList(mapValueSchema, val, valueNode, xmlns); + } + else if (mapValueSchema.isMapSchema()) { + this.writeMap(mapValueSchema, val, valueNode, xmlns, true); + } + else if (mapValueSchema.isStructSchema()) { + valueNode = this.writeStruct(mapValueSchema, val, xmlns); + } + else { + this.writeSimpleInto(mapValueSchema, val, valueNode, xmlns); + } + entry.addChildNode(valueNode); + }; + if (flat) { + for (const [key, val] of Object.entries(map)) { + if (sparse || val != null) { + const entry = XmlNode.of(mapTraits.xmlName ?? mapMember.getMemberName()); + addKeyValue(entry, key, val); + container.addChildNode(entry); + } + } + } + else { + let mapNode; + if (!containerIsMap) { + mapNode = XmlNode.of(mapTraits.xmlName ?? mapMember.getMemberName()); + if (xmlns) { + mapNode.addAttribute(xmlnsAttr, xmlns); + } + container.addChildNode(mapNode); + } + for (const [key, val] of Object.entries(map)) { + if (sparse || val != null) { + const entry = XmlNode.of("entry"); + addKeyValue(entry, key, val); + (containerIsMap ? container : mapNode).addChildNode(entry); + } + } + } + } + writeSimple(_schema, value) { + if (null === value) { + throw new Error("@aws-sdk/core/protocols - (XML serializer) cannot write null value."); + } + const ns = NormalizedSchema.of(_schema); + let nodeContents = null; + if (value && typeof value === "object") { + if (ns.isBlobSchema()) { + nodeContents = (this.serdeContext?.base64Encoder ?? toBase64)(value); + } + else if (ns.isTimestampSchema() && value instanceof Date) { + const format = determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + nodeContents = value.toISOString().replace(".000Z", "Z"); + break; + case 6: + nodeContents = dateToUtcString(value); + break; + case 7: + nodeContents = String(value.getTime() / 1000); + break; + default: + console.warn("Missing timestamp format, using http date", value); + nodeContents = dateToUtcString(value); + break; + } + } + else if (ns.isBigDecimalSchema() && value) { + if (value instanceof NumericValue) { + return value.string; + } + return String(value); + } + else if (ns.isMapSchema() || ns.isListSchema()) { + throw new Error("@aws-sdk/core/protocols - xml serializer, cannot call _write() on List/Map schema, call writeList or writeMap() instead."); + } + else { + throw new Error(`@aws-sdk/core/protocols - xml serializer, unhandled schema type for object value and schema: ${ns.getName(true)}`); + } + } + if (ns.isBooleanSchema() || ns.isNumericSchema() || ns.isBigIntegerSchema() || ns.isBigDecimalSchema()) { + nodeContents = String(value); + } + if (ns.isStringSchema()) { + if (value === undefined && ns.isIdempotencyToken()) { + nodeContents = generateIdempotencyToken(); + } + else { + nodeContents = String(value); + } + } + if (nodeContents === null) { + throw new Error(`Unhandled schema-value pair ${ns.getName(true)}=${value}`); + } + return nodeContents; + } + writeSimpleInto(_schema, value, into, parentXmlns) { + const nodeContents = this.writeSimple(_schema, value); + const ns = NormalizedSchema.of(_schema); + const content = new XmlText(nodeContents); + const [xmlnsAttr, xmlns] = this.getXmlnsAttribute(ns, parentXmlns); + if (xmlns) { + into.addAttribute(xmlnsAttr, xmlns); + } + into.addChildNode(content); + } + getXmlnsAttribute(ns, parentXmlns) { + const traits = ns.getMergedTraits(); + const [prefix, xmlns] = traits.xmlNamespace ?? []; + if (xmlns && xmlns !== parentXmlns) { + return [prefix ? `xmlns:${prefix}` : "xmlns", xmlns]; + } + return [void 0, void 0]; + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/parseXmlBody.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/parseXmlBody.js new file mode 100644 index 000000000..9ff7cada3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/parseXmlBody.js @@ -0,0 +1,46 @@ +import { parseXML } from "@aws-sdk/xml-builder"; +import { getValueFromTextNode } from "@smithy/smithy-client"; +import { collectBodyString } from "../common"; +export const parseXmlBody = (streamBody, context) => collectBodyString(streamBody, context).then((encoded) => { + if (encoded.length) { + let parsedObj; + try { + parsedObj = parseXML(encoded); + } + catch (e) { + if (e && typeof e === "object") { + Object.defineProperty(e, "$responseBodyText", { + value: encoded, + }); + } + throw e; + } + const textNodeName = "#text"; + const key = Object.keys(parsedObj)[0]; + const parsedObjToReturn = parsedObj[key]; + if (parsedObjToReturn[textNodeName]) { + parsedObjToReturn[key] = parsedObjToReturn[textNodeName]; + delete parsedObjToReturn[textNodeName]; + } + return getValueFromTextNode(parsedObjToReturn); + } + return {}; +}); +export const parseXmlErrorBody = async (errorBody, context) => { + const value = await parseXmlBody(errorBody, context); + if (value.Error) { + value.Error.message = value.Error.message ?? value.Error.Message; + } + return value; +}; +export const loadRestXmlErrorCode = (output, data) => { + if (data?.Error?.Code !== undefined) { + return data.Error.Code; + } + if (data?.Code !== undefined) { + return data.Code; + } + if (output.statusCode == 404) { + return "NotFound"; + } +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/simpleFormatXml.js b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/simpleFormatXml.js new file mode 100644 index 000000000..e61303b45 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/simpleFormatXml.js @@ -0,0 +1,27 @@ +export function simpleFormatXml(xml) { + let b = ""; + let indentation = 0; + for (let i = 0; i < xml.length; ++i) { + const c = xml[i]; + if (c === "<") { + if (xml[i + 1] === "/") { + b += "\n" + " ".repeat(indentation - 2) + c; + indentation -= 4; + } + else { + b += c; + } + } + else if (c === ">") { + indentation += 2; + b += c + "\n" + " ".repeat(indentation); + } + else { + b += c; + } + } + return b + .split("\n") + .filter((s) => !!s.trim()) + .join("\n"); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/api-extractor-type-index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/api-extractor-type-index.d.ts new file mode 100644 index 000000000..e83f927be --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/api-extractor-type-index.d.ts @@ -0,0 +1,5 @@ +export * from "./index"; +export * from "./submodules/account-id-endpoint/index"; +export * from "./submodules/client/index"; +export * from "./submodules/httpAuthSchemes/index"; +export * from "./submodules/protocols/index"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/index.d.ts new file mode 100644 index 000000000..5d51cdbb0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/index.d.ts @@ -0,0 +1,22 @@ +/** + * Submodules annotated with "Legacy" are from prior to the submodule system. + * They are exported from the package's root index to preserve backwards compatibility. + * + * New development should go in a proper submodule and not be exported from the root index. + */ +/** + * Legacy submodule. + */ +export * from "./submodules/client/index"; +/** + * Legacy submodule. + */ +export * from "./submodules/httpAuthSchemes/index"; +/** + * Legacy submodule. + */ +export * from "./submodules/protocols/index"; +/** + * Warning: do not export any additional submodules from the root of this package. See readme.md for + * guide on developing submodules. + */ diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/AccountIdEndpointModeConfigResolver.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/AccountIdEndpointModeConfigResolver.d.ts new file mode 100644 index 000000000..56edb3885 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/AccountIdEndpointModeConfigResolver.d.ts @@ -0,0 +1,27 @@ +import type { Provider } from "@smithy/types"; +import type { AccountIdEndpointMode } from "./AccountIdEndpointModeConstants"; +/** + * @public + */ +export interface AccountIdEndpointModeInputConfig { + /** + * The account ID endpoint mode to use. + */ + accountIdEndpointMode?: AccountIdEndpointMode | Provider; +} +/** + * @internal + */ +interface PreviouslyResolved { +} +/** + * @internal + */ +export interface AccountIdEndpointModeResolvedConfig { + accountIdEndpointMode: Provider; +} +/** + * @internal + */ +export declare const resolveAccountIdEndpointModeConfig: (input: T & AccountIdEndpointModeInputConfig & PreviouslyResolved) => T & AccountIdEndpointModeResolvedConfig; +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/AccountIdEndpointModeConstants.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/AccountIdEndpointModeConstants.d.ts new file mode 100644 index 000000000..640a74726 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/AccountIdEndpointModeConstants.d.ts @@ -0,0 +1,16 @@ +/** + * @public + */ +export type AccountIdEndpointMode = "disabled" | "preferred" | "required"; +/** + * @internal + */ +export declare const DEFAULT_ACCOUNT_ID_ENDPOINT_MODE = "preferred"; +/** + * @internal + */ +export declare const ACCOUNT_ID_ENDPOINT_MODE_VALUES: AccountIdEndpointMode[]; +/** + * @internal + */ +export declare function validateAccountIdEndpointMode(value: any): value is AccountIdEndpointMode; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/NodeAccountIdEndpointModeConfigOptions.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/NodeAccountIdEndpointModeConfigOptions.d.ts new file mode 100644 index 000000000..ed26c327a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/NodeAccountIdEndpointModeConfigOptions.d.ts @@ -0,0 +1,14 @@ +import type { LoadedConfigSelectors } from "@smithy/node-config-provider"; +import type { AccountIdEndpointMode } from "./AccountIdEndpointModeConstants"; +/** + * @internal + */ +export declare const ENV_ACCOUNT_ID_ENDPOINT_MODE = "AWS_ACCOUNT_ID_ENDPOINT_MODE"; +/** + * @internal + */ +export declare const CONFIG_ACCOUNT_ID_ENDPOINT_MODE = "account_id_endpoint_mode"; +/** + * @internal + */ +export declare const NODE_ACCOUNT_ID_ENDPOINT_MODE_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/index.d.ts new file mode 100644 index 000000000..52af11df3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/index.d.ts @@ -0,0 +1,3 @@ +export * from "./AccountIdEndpointModeConfigResolver"; +export * from "./AccountIdEndpointModeConstants"; +export * from "./NodeAccountIdEndpointModeConfigOptions"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/client/emitWarningIfUnsupportedVersion.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/client/emitWarningIfUnsupportedVersion.d.ts new file mode 100644 index 000000000..d97bc8c82 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/client/emitWarningIfUnsupportedVersion.d.ts @@ -0,0 +1,12 @@ +export declare const state: { + warningEmitted: boolean; +}; +/** + * @internal + * + * Emits warning if the provided Node.js version string is + * pending deprecation by AWS SDK JSv3. + * + * @param version - The Node.js version string. + */ +export declare const emitWarningIfUnsupportedVersion: (version: string) => void; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/client/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/client/index.d.ts new file mode 100644 index 000000000..492c6cdda --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/client/index.d.ts @@ -0,0 +1,4 @@ +export * from "./emitWarningIfUnsupportedVersion"; +export * from "./setCredentialFeature"; +export * from "./setFeature"; +export * from "./setTokenFeature"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/client/setCredentialFeature.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/client/setCredentialFeature.d.ts new file mode 100644 index 000000000..b3b4a6884 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/client/setCredentialFeature.d.ts @@ -0,0 +1,7 @@ +import type { AttributedAwsCredentialIdentity, AwsSdkCredentialsFeatures } from "@aws-sdk/types"; +/** + * @internal + * + * @returns the credentials with source feature attribution. + */ +export declare function setCredentialFeature(credentials: AttributedAwsCredentialIdentity, feature: F, value: AwsSdkCredentialsFeatures[F]): AttributedAwsCredentialIdentity; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/client/setFeature.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/client/setFeature.d.ts new file mode 100644 index 000000000..93458bf36 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/client/setFeature.d.ts @@ -0,0 +1,12 @@ +import type { AwsHandlerExecutionContext, AwsSdkFeatures } from "@aws-sdk/types"; +/** + * @internal + * Indicates to the request context that a given feature is active. + * + * @param context - handler execution context. + * @param feature - readable name of feature. + * @param value - encoding value of feature. This is required because the + * specification asks the SDK not to include a runtime lookup of all + * the feature identifiers. + */ +export declare function setFeature(context: AwsHandlerExecutionContext, feature: F, value: AwsSdkFeatures[F]): void; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/client/setTokenFeature.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/client/setTokenFeature.d.ts new file mode 100644 index 000000000..affb0492d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/client/setTokenFeature.d.ts @@ -0,0 +1,7 @@ +import type { AttributedTokenIdentity, AwsSdkTokenFeatures } from "@aws-sdk/types"; +/** + * @internal + * + * @returns the token with source feature attribution. + */ +export declare function setTokenFeature(token: AttributedTokenIdentity, feature: F, value: AwsSdkTokenFeatures[F]): AttributedTokenIdentity; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.d.ts new file mode 100644 index 000000000..38e2fe951 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.d.ts @@ -0,0 +1,10 @@ +import type { AwsCredentialIdentity, HttpRequest as IHttpRequest } from "@smithy/types"; +import { AwsSdkSigV4Signer } from "./AwsSdkSigV4Signer"; +/** + * @internal + * Note: this is not a signing algorithm implementation. The sign method + * accepts the real signer as an input parameter. + */ +export declare class AwsSdkSigV4ASigner extends AwsSdkSigV4Signer { + sign(httpRequest: IHttpRequest, identity: AwsCredentialIdentity, signingProperties: Record): Promise; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.d.ts new file mode 100644 index 000000000..6795d9b5c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.d.ts @@ -0,0 +1,43 @@ +import type { AuthScheme, AwsCredentialIdentity, HttpRequest as IHttpRequest, HttpResponse, HttpSigner, RequestSigner } from "@smithy/types"; +import type { AwsSdkSigV4AAuthResolvedConfig } from "./resolveAwsSdkSigV4AConfig"; +/** + * @internal + */ +interface AwsSdkSigV4Config extends AwsSdkSigV4AAuthResolvedConfig { + systemClockOffset: number; + signer: (authScheme?: AuthScheme) => Promise; +} +/** + * @internal + */ +interface AwsSdkSigV4AuthSigningProperties { + config: AwsSdkSigV4Config; + signer: RequestSigner; + signingRegion?: string; + signingRegionSet?: string[]; + signingName?: string; +} +/** + * @internal + */ +export declare const validateSigningProperties: (signingProperties: Record) => Promise; +/** + * Note: this is not a signing algorithm implementation. The sign method + * accepts the real signer as an input parameter. + * @internal + */ +export declare class AwsSdkSigV4Signer implements HttpSigner { + sign(httpRequest: IHttpRequest, + /** + * `identity` is bound in {@link resolveAWSSDKSigV4Config} + */ + identity: AwsCredentialIdentity, signingProperties: Record): Promise; + errorHandler(signingProperties: Record): (error: Error) => never; + successHandler(httpResponse: HttpResponse | unknown, signingProperties: Record): void; +} +/** + * @internal + * @deprecated renamed to {@link AwsSdkSigV4Signer} + */ +export declare const AWSSDKSigV4Signer: typeof AwsSdkSigV4Signer; +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/NODE_AUTH_SCHEME_PREFERENCE_OPTIONS.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/NODE_AUTH_SCHEME_PREFERENCE_OPTIONS.d.ts new file mode 100644 index 000000000..2d5bfc185 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/NODE_AUTH_SCHEME_PREFERENCE_OPTIONS.d.ts @@ -0,0 +1,5 @@ +import type { LoadedConfigSelectors } from "@smithy/node-config-provider"; +/** + * @public + */ +export declare const NODE_AUTH_SCHEME_PREFERENCE_OPTIONS: LoadedConfigSelectors; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/index.d.ts new file mode 100644 index 000000000..40712255d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/index.d.ts @@ -0,0 +1,5 @@ +export { AwsSdkSigV4Signer, AWSSDKSigV4Signer, validateSigningProperties } from "./AwsSdkSigV4Signer"; +export { AwsSdkSigV4ASigner } from "./AwsSdkSigV4ASigner"; +export * from "./NODE_AUTH_SCHEME_PREFERENCE_OPTIONS"; +export * from "./resolveAwsSdkSigV4AConfig"; +export * from "./resolveAwsSdkSigV4Config"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4AConfig.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4AConfig.d.ts new file mode 100644 index 000000000..37d3902ba --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4AConfig.d.ts @@ -0,0 +1,38 @@ +import type { LoadedConfigSelectors } from "@smithy/node-config-provider"; +import type { Provider } from "@smithy/types"; +/** + * @public + */ +export interface AwsSdkSigV4AAuthInputConfig { + /** + * This option will override the AWS sigv4a + * signing regionSet from any other source. + * + * The lookup order is: + * 1. this value + * 2. configuration file value of sigv4a_signing_region_set. + * 3. environment value of AWS_SIGV4A_SIGNING_REGION_SET. + * 4. signingRegionSet given by endpoint resolution. + * 5. the singular region of the SDK client. + */ + sigv4aSigningRegionSet?: string[] | undefined | Provider; +} +/** + * @internal + */ +export interface AwsSdkSigV4APreviouslyResolved { +} +/** + * @internal + */ +export interface AwsSdkSigV4AAuthResolvedConfig { + sigv4aSigningRegionSet: Provider; +} +/** + * @internal + */ +export declare const resolveAwsSdkSigV4AConfig: (config: T & AwsSdkSigV4AAuthInputConfig & AwsSdkSigV4APreviouslyResolved) => T & AwsSdkSigV4AAuthResolvedConfig; +/** + * @internal + */ +export declare const NODE_SIGV4A_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.d.ts new file mode 100644 index 000000000..a9e739553 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.d.ts @@ -0,0 +1,117 @@ +import type { MergeFunctions } from "@aws-sdk/types"; +import type { SignatureV4CryptoInit, SignatureV4Init } from "@smithy/signature-v4"; +import type { AuthScheme, AwsCredentialIdentity, AwsCredentialIdentityProvider, ChecksumConstructor, HashConstructor, MemoizedProvider, Provider, RegionInfoProvider, RequestSigner } from "@smithy/types"; +/** + * @public + */ +export interface AwsSdkSigV4AuthInputConfig { + /** + * The credentials used to sign requests. + */ + credentials?: AwsCredentialIdentity | AwsCredentialIdentityProvider; + /** + * The signer to use when signing requests. + */ + signer?: RequestSigner | ((authScheme?: AuthScheme) => Promise); + /** + * Whether to escape request path when signing the request. + */ + signingEscapePath?: boolean; + /** + * An offset value in milliseconds to apply to all signing times. + */ + systemClockOffset?: number; + /** + * The region where you want to sign your request against. This + * can be different to the region in the endpoint. + */ + signingRegion?: string; + /** + * The injectable SigV4-compatible signer class constructor. If not supplied, + * regular SignatureV4 constructor will be used. + * + * @internal + */ + signerConstructor?: new (options: SignatureV4Init & SignatureV4CryptoInit) => RequestSigner; +} +/** + * Used to indicate whether a credential provider function was memoized by this resolver. + * @public + */ +export type AwsSdkSigV4Memoized = { + /** + * The credential provider has been memoized by the AWS SDK SigV4 config resolver. + */ + memoized?: boolean; + /** + * The credential provider has the caller client config object bound to its arguments. + */ + configBound?: boolean; + /** + * Function is wrapped with attribution transform. + */ + attributed?: boolean; +}; +/** + * @internal + */ +export interface AwsSdkSigV4PreviouslyResolved { + credentialDefaultProvider?: (input: any) => MemoizedProvider; + region: string | Provider; + sha256: ChecksumConstructor | HashConstructor; + signingName?: string; + regionInfoProvider?: RegionInfoProvider; + defaultSigningName?: string; + serviceId: string; + useFipsEndpoint: Provider; + useDualstackEndpoint: Provider; +} +/** + * @internal + */ +export interface AwsSdkSigV4AuthResolvedConfig { + /** + * Resolved value for input config {@link AwsSdkSigV4AuthInputConfig.credentials} + * This provider MAY memoize the loaded credentials for certain period. + */ + credentials: MergeFunctions> & AwsSdkSigV4Memoized; + /** + * Resolved value for input config {@link AwsSdkSigV4AuthInputConfig.signer} + */ + signer: (authScheme?: AuthScheme) => Promise; + /** + * Resolved value for input config {@link AwsSdkSigV4AuthInputConfig.signingEscapePath} + */ + signingEscapePath: boolean; + /** + * Resolved value for input config {@link AwsSdkSigV4AuthInputConfig.systemClockOffset} + */ + systemClockOffset: number; +} +/** + * @internal + */ +export declare const resolveAwsSdkSigV4Config: (config: T & AwsSdkSigV4AuthInputConfig & AwsSdkSigV4PreviouslyResolved) => T & AwsSdkSigV4AuthResolvedConfig; +/** + * @internal + * @deprecated renamed to {@link AwsSdkSigV4AuthInputConfig} + */ +export interface AWSSDKSigV4AuthInputConfig extends AwsSdkSigV4AuthInputConfig { +} +/** + * @internal + * @deprecated renamed to {@link AwsSdkSigV4PreviouslyResolved} + */ +export interface AWSSDKSigV4PreviouslyResolved extends AwsSdkSigV4PreviouslyResolved { +} +/** + * @internal + * @deprecated renamed to {@link AwsSdkSigV4AuthResolvedConfig} + */ +export interface AWSSDKSigV4AuthResolvedConfig extends AwsSdkSigV4AuthResolvedConfig { +} +/** + * @internal + * @deprecated renamed to {@link resolveAwsSdkSigV4Config} + */ +export declare const resolveAWSSDKSigV4Config: (config: T & AwsSdkSigV4AuthInputConfig & AwsSdkSigV4PreviouslyResolved) => T & AwsSdkSigV4AuthResolvedConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/index.d.ts new file mode 100644 index 000000000..3927741ab --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/index.d.ts @@ -0,0 +1,2 @@ +export * from "./aws_sdk"; +export * from "./utils/getBearerTokenEnvKey"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getArrayForCommaSeparatedString.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getArrayForCommaSeparatedString.d.ts new file mode 100644 index 000000000..823921b1e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getArrayForCommaSeparatedString.d.ts @@ -0,0 +1,8 @@ +/** + * Converts a comma-separated string into an array of trimmed strings + * @param str The comma-separated input string to split + * @returns Array of trimmed strings split from the input + * + * @internal + */ +export declare const getArrayForCommaSeparatedString: (str: string) => string[]; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getBearerTokenEnvKey.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getBearerTokenEnvKey.d.ts new file mode 100644 index 000000000..b3df9cb63 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getBearerTokenEnvKey.d.ts @@ -0,0 +1,6 @@ +/** + * Returns an environment variable key base on signing name. + * @param signingName - The signing name to use in the key + * @returns The environment variable key in format AWS_BEARER_TOKEN_ + */ +export declare const getBearerTokenEnvKey: (signingName: string) => string; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getDateHeader.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getDateHeader.d.ts new file mode 100644 index 000000000..2c9157bba --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getDateHeader.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const getDateHeader: (response: unknown) => string | undefined; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.d.ts new file mode 100644 index 000000000..4b726900b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + * + * Returns a date that is corrected for clock skew. + * + * @param systemClockOffset The offset of the system clock in milliseconds. + */ +export declare const getSkewCorrectedDate: (systemClockOffset: number) => Date; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.d.ts new file mode 100644 index 000000000..2d554b8e6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.d.ts @@ -0,0 +1,10 @@ +/** + * @internal + * + * If clock is skewed, it returns the difference between serverTime and current time. + * If clock is not skewed, it returns currentSystemClockOffset. + * + * @param clockTime The string value of the server time. + * @param currentSystemClockOffset The current system clock offset. + */ +export declare const getUpdatedSystemClockOffset: (clockTime: string, currentSystemClockOffset: number) => number; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/index.d.ts new file mode 100644 index 000000000..07c21953a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/index.d.ts @@ -0,0 +1,3 @@ +export * from "./getDateHeader"; +export * from "./getSkewCorrectedDate"; +export * from "./getUpdatedSystemClockOffset"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/isClockSkewed.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/isClockSkewed.d.ts new file mode 100644 index 000000000..970fa15b4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/isClockSkewed.d.ts @@ -0,0 +1,9 @@ +/** + * @internal + * + * Checks if the provided date is within the skew window of 300000ms. + * + * @param clockTime - The time to check for skew in milliseconds. + * @param systemClockOffset - The offset of the system clock in milliseconds. + */ +export declare const isClockSkewed: (clockTime: number, systemClockOffset: number) => boolean; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/ConfigurableSerdeContext.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/ConfigurableSerdeContext.d.ts new file mode 100644 index 000000000..29b2e616b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/ConfigurableSerdeContext.d.ts @@ -0,0 +1,8 @@ +import type { ConfigurableSerdeContext, SerdeFunctions } from "@smithy/types"; +/** + * @internal + */ +export declare class SerdeContextConfig implements ConfigurableSerdeContext { + protected serdeContext?: SerdeFunctions; + setSerdeContext(serdeContext: SerdeFunctions): void; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/ProtocolLib.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/ProtocolLib.d.ts new file mode 100644 index 000000000..92b975146 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/ProtocolLib.d.ts @@ -0,0 +1,61 @@ +import { NormalizedSchema, TypeRegistry } from "@smithy/core/schema"; +import type { ServiceException as SDKBaseServiceException } from "@smithy/smithy-client"; +import type { HttpResponse as IHttpResponse, MetadataBearer, ResponseMetadata, StaticErrorSchema } from "@smithy/types"; +/** + * @internal + */ +type ErrorMetadataBearer = MetadataBearer & { + $fault: "client" | "server"; +}; +/** + * Shared code for Protocols. + * + * @internal + */ +export declare class ProtocolLib { + private queryCompat; + constructor(queryCompat?: boolean); + /** + * This is only for REST protocols. + * + * @param defaultContentType - of the protocol. + * @param inputSchema - schema for which to determine content type. + * + * @returns content-type header value or undefined when not applicable. + */ + resolveRestContentType(defaultContentType: string, inputSchema: NormalizedSchema): string | undefined; + /** + * Shared code for finding error schema or throwing an unmodeled base error. + * @returns error schema and error metadata. + * + * @throws ServiceBaseException or generic Error if no error schema could be found. + */ + getErrorSchemaOrThrowBaseException(errorIdentifier: string, defaultNamespace: string, response: IHttpResponse, dataObject: any, metadata: ResponseMetadata, getErrorSchema?: (registry: TypeRegistry, errorName: string) => StaticErrorSchema): Promise<{ + errorSchema: StaticErrorSchema; + errorMetadata: ErrorMetadataBearer; + }>; + /** + * Assigns additions onto exception if not already present. + */ + decorateServiceException(exception: E, additions?: Record): E; + /** + * Reads the x-amzn-query-error header for awsQuery compatibility. + * + * @param output - values that will be assigned to an error object. + * @param response - from which to read awsQueryError headers. + */ + setQueryCompatError(output: Record, response: IHttpResponse): void; + /** + * Assigns Error, Type, Code from the awsQuery error object to the output error object. + * @param queryCompatErrorData - query compat error object. + * @param errorData - canonical error object returned to the caller. + */ + queryCompatOutput(queryCompatErrorData: any, errorData: any): void; + /** + * Finds the canonical modeled error using the awsQueryError alias. + * @param registry - service error registry. + * @param errorName - awsQueryError name or regular qualified shapeId. + */ + findQueryCompatibleError(registry: TypeRegistry, errorName: string): StaticErrorSchema; +} +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/UnionSerde.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/UnionSerde.d.ts new file mode 100644 index 000000000..51b5940ef --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/UnionSerde.d.ts @@ -0,0 +1,24 @@ +/** + * Helper for identifying unknown union members during deserialization. + */ +export declare class UnionSerde { + private from; + private to; + private keys; + constructor(from: any, to: any); + /** + * Marks the key as being a known member. + * @param key - to mark. + */ + mark(key: string): void; + /** + * @returns whether only one key remains unmarked and nothing has been written, + * implying the object is a union. + */ + hasUnknown(): boolean; + /** + * Writes the unknown key-value pair, if present, into the $unknown property + * of the union object. + */ + writeUnknown(): void; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/cbor/AwsSmithyRpcV2CborProtocol.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/cbor/AwsSmithyRpcV2CborProtocol.d.ts new file mode 100644 index 000000000..3898ef063 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/cbor/AwsSmithyRpcV2CborProtocol.d.ts @@ -0,0 +1,23 @@ +import { SmithyRpcV2CborProtocol } from "@smithy/core/cbor"; +import type { EndpointBearer, HandlerExecutionContext, HttpRequest, HttpResponse, OperationSchema, ResponseMetadata, SerdeFunctions } from "@smithy/types"; +/** + * Extends the Smithy implementation to add AwsQueryCompatibility support. + * + * @public + */ +export declare class AwsSmithyRpcV2CborProtocol extends SmithyRpcV2CborProtocol { + private readonly awsQueryCompatible; + private readonly mixin; + constructor({ defaultNamespace, awsQueryCompatible, }: { + defaultNamespace: string; + awsQueryCompatible?: boolean; + }); + /** + * @override + */ + serializeRequest(operationSchema: OperationSchema, input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + /** + * @override + */ + protected handleError(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: HttpResponse, dataObject: any, metadata: ResponseMetadata): Promise; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/coercing-serializers.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/coercing-serializers.d.ts new file mode 100644 index 000000000..10d9d3966 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/coercing-serializers.d.ts @@ -0,0 +1,18 @@ +/** + * @internal + * + * Used for awsQueryCompatibility trait. + */ +export declare const _toStr: (val: unknown) => string | undefined; +/** + * @internal + * + * Used for awsQueryCompatibility trait. + */ +export declare const _toBool: (val: unknown) => boolean | undefined; +/** + * @internal + * + * Used for awsQueryCompatibility trait. + */ +export declare const _toNum: (val: unknown) => number | undefined; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/common.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/common.d.ts new file mode 100644 index 000000000..2b9b1711a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/common.d.ts @@ -0,0 +1,2 @@ +import type { SerdeFunctions } from "@smithy/types"; +export declare const collectBodyString: (streamBody: any, context: SerdeFunctions) => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/index.d.ts new file mode 100644 index 000000000..0a230f917 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/index.d.ts @@ -0,0 +1,20 @@ +export * from "./cbor/AwsSmithyRpcV2CborProtocol"; +export * from "./coercing-serializers"; +export * from "./json/AwsJson1_0Protocol"; +export * from "./json/AwsJson1_1Protocol"; +export * from "./json/AwsJsonRpcProtocol"; +export * from "./json/AwsRestJsonProtocol"; +export * from "./json/JsonCodec"; +export * from "./json/JsonShapeDeserializer"; +export * from "./json/JsonShapeSerializer"; +export * from "./json/awsExpectUnion"; +export * from "./json/parseJsonBody"; +export * from "./query/AwsEc2QueryProtocol"; +export * from "./query/AwsQueryProtocol"; +export * from "./query/QuerySerializerSettings"; +export * from "./query/QueryShapeSerializer"; +export * from "./xml/AwsRestXmlProtocol"; +export * from "./xml/XmlCodec"; +export * from "./xml/XmlShapeDeserializer"; +export * from "./xml/XmlShapeSerializer"; +export * from "./xml/parseXmlBody"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsJson1_0Protocol.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsJson1_0Protocol.d.ts new file mode 100644 index 000000000..6800fa690 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsJson1_0Protocol.d.ts @@ -0,0 +1,20 @@ +import { AwsJsonRpcProtocol } from "./AwsJsonRpcProtocol"; +import type { JsonCodec } from "./JsonCodec"; +/** + * @public + * @see https://smithy.io/2.0/aws/protocols/aws-json-1_1-protocol.html#differences-between-awsjson1-0-and-awsjson1-1 + */ +export declare class AwsJson1_0Protocol extends AwsJsonRpcProtocol { + constructor({ defaultNamespace, serviceTarget, awsQueryCompatible, jsonCodec, }: { + defaultNamespace: string; + serviceTarget: string; + awsQueryCompatible?: boolean; + jsonCodec?: JsonCodec; + }); + getShapeId(): string; + protected getJsonRpcVersion(): "1.0"; + /** + * @override + */ + protected getDefaultContentType(): string; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsJson1_1Protocol.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsJson1_1Protocol.d.ts new file mode 100644 index 000000000..4b4bcfa85 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsJson1_1Protocol.d.ts @@ -0,0 +1,20 @@ +import { AwsJsonRpcProtocol } from "./AwsJsonRpcProtocol"; +import type { JsonCodec } from "./JsonCodec"; +/** + * @public + * @see https://smithy.io/2.0/aws/protocols/aws-json-1_1-protocol.html#differences-between-awsjson1-0-and-awsjson1-1 + */ +export declare class AwsJson1_1Protocol extends AwsJsonRpcProtocol { + constructor({ defaultNamespace, serviceTarget, awsQueryCompatible, jsonCodec, }: { + defaultNamespace: string; + serviceTarget: string; + awsQueryCompatible?: boolean; + jsonCodec?: JsonCodec; + }); + getShapeId(): string; + protected getJsonRpcVersion(): "1.1"; + /** + * @override + */ + protected getDefaultContentType(): string; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsJsonRpcProtocol.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsJsonRpcProtocol.d.ts new file mode 100644 index 000000000..0085d29a9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsJsonRpcProtocol.d.ts @@ -0,0 +1,27 @@ +import { RpcProtocol } from "@smithy/core/protocols"; +import type { EndpointBearer, HandlerExecutionContext, HttpRequest, HttpResponse, OperationSchema, ResponseMetadata, SerdeFunctions, ShapeDeserializer, ShapeSerializer } from "@smithy/types"; +import { JsonCodec } from "./JsonCodec"; +/** + * @public + */ +export declare abstract class AwsJsonRpcProtocol extends RpcProtocol { + protected serializer: ShapeSerializer; + protected deserializer: ShapeDeserializer; + protected serviceTarget: string; + private readonly codec; + private readonly mixin; + private readonly awsQueryCompatible; + protected constructor({ defaultNamespace, serviceTarget, awsQueryCompatible, jsonCodec, }: { + defaultNamespace: string; + serviceTarget: string; + awsQueryCompatible?: boolean; + jsonCodec?: JsonCodec; + }); + serializeRequest(operationSchema: OperationSchema, input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + getPayloadCodec(): JsonCodec; + protected abstract getJsonRpcVersion(): "1.1" | "1.0"; + /** + * @override + */ + protected handleError(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: HttpResponse, dataObject: any, metadata: ResponseMetadata): Promise; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsRestJsonProtocol.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsRestJsonProtocol.d.ts new file mode 100644 index 000000000..962fe1e68 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsRestJsonProtocol.d.ts @@ -0,0 +1,34 @@ +import { HttpBindingProtocol } from "@smithy/core/protocols"; +import type { EndpointBearer, HandlerExecutionContext, HttpRequest, HttpResponse, MetadataBearer, OperationSchema, ResponseMetadata, SerdeFunctions, ShapeDeserializer, ShapeSerializer } from "@smithy/types"; +import { JsonCodec } from "./JsonCodec"; +/** + * @public + */ +export declare class AwsRestJsonProtocol extends HttpBindingProtocol { + protected serializer: ShapeSerializer; + protected deserializer: ShapeDeserializer; + private readonly codec; + private readonly mixin; + constructor({ defaultNamespace }: { + defaultNamespace: string; + }); + getShapeId(): string; + getPayloadCodec(): JsonCodec; + setSerdeContext(serdeContext: SerdeFunctions): void; + /** + * @override + */ + serializeRequest(operationSchema: OperationSchema, input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + /** + * @override + */ + deserializeResponse(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: HttpResponse): Promise; + /** + * @override + */ + protected handleError(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: HttpResponse, dataObject: any, metadata: ResponseMetadata): Promise; + /** + * @override + */ + protected getDefaultContentType(): string; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/JsonCodec.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/JsonCodec.d.ts new file mode 100644 index 000000000..35537581c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/JsonCodec.d.ts @@ -0,0 +1,19 @@ +import type { Codec, CodecSettings } from "@smithy/types"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import { JsonShapeDeserializer } from "./JsonShapeDeserializer"; +import { JsonShapeSerializer } from "./JsonShapeSerializer"; +/** + * @public + */ +export type JsonSettings = CodecSettings & { + jsonName: boolean; +}; +/** + * @public + */ +export declare class JsonCodec extends SerdeContextConfig implements Codec { + readonly settings: JsonSettings; + constructor(settings: JsonSettings); + createSerializer(): JsonShapeSerializer; + createDeserializer(): JsonShapeDeserializer; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/JsonShapeDeserializer.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/JsonShapeDeserializer.d.ts new file mode 100644 index 000000000..19fddf85d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/JsonShapeDeserializer.d.ts @@ -0,0 +1,13 @@ +import type { DocumentType, Schema, ShapeDeserializer } from "@smithy/types"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import type { JsonSettings } from "./JsonCodec"; +/** + * @public + */ +export declare class JsonShapeDeserializer extends SerdeContextConfig implements ShapeDeserializer { + readonly settings: JsonSettings; + constructor(settings: JsonSettings); + read(schema: Schema, data: string | Uint8Array | unknown): Promise; + readObject(schema: Schema, data: DocumentType): any; + protected _read(schema: Schema, value: unknown): any; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/JsonShapeSerializer.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/JsonShapeSerializer.d.ts new file mode 100644 index 000000000..0b0d8ab0a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/JsonShapeSerializer.d.ts @@ -0,0 +1,28 @@ +import { NormalizedSchema } from "@smithy/core/schema"; +import type { Schema, ShapeSerializer } from "@smithy/types"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import type { JsonSettings } from "./JsonCodec"; +/** + * @public + */ +export declare class JsonShapeSerializer extends SerdeContextConfig implements ShapeSerializer { + readonly settings: JsonSettings; + /** + * Write buffer. Reused per value serialization pass. + * In the initial implementation, this is not an incremental buffer. + */ + protected buffer: any; + protected useReplacer: boolean; + protected rootSchema: NormalizedSchema | undefined; + constructor(settings: JsonSettings); + write(schema: Schema, value: unknown): void; + /** + * @internal + */ + writeDiscriminatedDocument(schema: Schema, value: unknown): void; + flush(): string; + /** + * Order if-statements by order of likelihood. + */ + protected _write(schema: Schema, value: unknown, container?: NormalizedSchema): any; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/awsExpectUnion.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/awsExpectUnion.d.ts new file mode 100644 index 000000000..98607ea43 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/awsExpectUnion.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + * + * Forwards to Smithy's expectUnion function, but also ignores + * the `__type` field if it is present. + */ +export declare const awsExpectUnion: (value: unknown) => Record | undefined; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/experimental/SinglePassJsonShapeSerializer.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/experimental/SinglePassJsonShapeSerializer.d.ts new file mode 100644 index 000000000..54724c549 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/experimental/SinglePassJsonShapeSerializer.d.ts @@ -0,0 +1,27 @@ +import type { Schema, ShapeSerializer } from "@smithy/types"; +import { SerdeContextConfig } from "../../ConfigurableSerdeContext"; +import type { JsonSettings } from "../JsonCodec"; +/** + * This implementation uses single-pass JSON serialization with JS code instead of + * JSON.stringify. + * + * It isn't significantly faster than dual-pass ending with native JSON.stringify + * that I would want to use it. It seems to be barely faster in some mid-range object + * sizes but slower on the high end. + * + * @internal + */ +export declare class SinglePassJsonShapeSerializer extends SerdeContextConfig implements ShapeSerializer { + readonly settings: JsonSettings; + private buffer; + private rootSchema; + constructor(settings: JsonSettings); + write(schema: Schema, value: unknown): void; + /** + * @internal + */ + writeDiscriminatedDocument(schema: Schema, value: unknown): void; + flush(): string; + private writeObject; + private writeValue; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/jsonReplacer.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/jsonReplacer.d.ts new file mode 100644 index 000000000..ae1c9b55c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/jsonReplacer.d.ts @@ -0,0 +1,21 @@ +/** + * Serializes BigInt and NumericValue to JSON-number. + * @internal + */ +export declare class JsonReplacer { + /** + * Stores placeholder key to true serialized value lookup. + */ + private readonly values; + private counter; + private stage; + /** + * Creates a jsonReplacer function that reserves big integer and big decimal values + * for later replacement. + */ + createReplacer(): (key: string, value: unknown) => unknown; + /** + * Replaces placeholder keys with their true values. + */ + replaceInJson(json: string): string; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/jsonReviver.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/jsonReviver.d.ts new file mode 100644 index 000000000..aedfd875d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/jsonReviver.d.ts @@ -0,0 +1,15 @@ +/** + * @param key - JSON object key. + * @param value - parsed value. + * @param context - original JSON string for reference. Not available until Node.js 21 and unavailable in Safari as + * of April 2025. + * + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#browser_compatibility + * + * @internal + * + * @returns transformed value. + */ +export declare function jsonReviver(key: string, value: any, context?: { + source?: string; +}): any; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/parseJsonBody.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/parseJsonBody.d.ts new file mode 100644 index 000000000..947a0eb6f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/parseJsonBody.d.ts @@ -0,0 +1,13 @@ +import type { HttpResponse, SerdeFunctions } from "@smithy/types"; +/** + * @internal + */ +export declare const parseJsonBody: (streamBody: any, context: SerdeFunctions) => any; +/** + * @internal + */ +export declare const parseJsonErrorBody: (errorBody: any, context: SerdeFunctions) => Promise; +/** + * @internal + */ +export declare const loadRestJsonErrorCode: (output: HttpResponse, data: any) => string | undefined; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/AwsEc2QueryProtocol.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/AwsEc2QueryProtocol.d.ts new file mode 100644 index 000000000..609bef508 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/AwsEc2QueryProtocol.d.ts @@ -0,0 +1,24 @@ +import { AwsQueryProtocol } from "./AwsQueryProtocol"; +/** + * @public + */ +export declare class AwsEc2QueryProtocol extends AwsQueryProtocol { + options: { + defaultNamespace: string; + xmlNamespace: string; + version: string; + }; + constructor(options: { + defaultNamespace: string; + xmlNamespace: string; + version: string; + }); + /** + * @override + */ + getShapeId(): string; + /** + * EC2 Query reads XResponse.XResult instead of XResponse directly. + */ + protected useNestedResult(): boolean; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/AwsQueryProtocol.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/AwsQueryProtocol.d.ts new file mode 100644 index 000000000..7d8aef7f1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/AwsQueryProtocol.d.ts @@ -0,0 +1,46 @@ +import { RpcProtocol } from "@smithy/core/protocols"; +import type { Codec, EndpointBearer, HandlerExecutionContext, HttpRequest, HttpResponse as IHttpResponse, MetadataBearer, OperationSchema, ResponseMetadata, SerdeFunctions } from "@smithy/types"; +import { XmlShapeDeserializer } from "../xml/XmlShapeDeserializer"; +import { QueryShapeSerializer } from "./QueryShapeSerializer"; +/** + * @public + */ +export declare class AwsQueryProtocol extends RpcProtocol { + options: { + defaultNamespace: string; + xmlNamespace: string; + version: string; + }; + protected serializer: QueryShapeSerializer; + protected deserializer: XmlShapeDeserializer; + private readonly mixin; + constructor(options: { + defaultNamespace: string; + xmlNamespace: string; + version: string; + }); + getShapeId(): string; + setSerdeContext(serdeContext: SerdeFunctions): void; + getPayloadCodec(): Codec; + serializeRequest(operationSchema: OperationSchema, input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + deserializeResponse(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse): Promise; + /** + * EC2 Query overrides this. + */ + protected useNestedResult(): boolean; + /** + * override + */ + protected handleError(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse, dataObject: any, metadata: ResponseMetadata): Promise; + /** + * The variations in the error and error message locations are attributed to + * divergence between AWS Query and EC2 Query behavior. + */ + protected loadQueryErrorCode(output: IHttpResponse, data: any): string | undefined; + protected loadQueryError(data: any): any | undefined; + protected loadQueryErrorMessage(data: any): string; + /** + * @override + */ + protected getDefaultContentType(): string; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/QuerySerializerSettings.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/QuerySerializerSettings.d.ts new file mode 100644 index 000000000..cab2d47b1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/QuerySerializerSettings.d.ts @@ -0,0 +1,13 @@ +import type { CodecSettings } from "@smithy/types"; +/** + * @internal + */ +export type QuerySerializerSettings = CodecSettings & { + capitalizeKeys?: boolean; + flattenLists?: boolean; + serializeEmptyLists?: boolean; + /** + * Whether to read from ec2QueryName before xmlName. + */ + ec2?: boolean; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/QueryShapeSerializer.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/QueryShapeSerializer.d.ts new file mode 100644 index 000000000..1c30e48ab --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/QueryShapeSerializer.d.ts @@ -0,0 +1,16 @@ +import type { Schema, ShapeSerializer } from "@smithy/types"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import type { QuerySerializerSettings } from "./QuerySerializerSettings"; +/** + * @public + */ +export declare class QueryShapeSerializer extends SerdeContextConfig implements ShapeSerializer { + readonly settings: QuerySerializerSettings; + private buffer; + constructor(settings: QuerySerializerSettings); + write(schema: Schema, value: unknown, prefix?: string): void; + flush(): string | Uint8Array; + protected getKey(memberName: string, xmlName?: string, ec2QueryName?: unknown, keySource?: string): string; + protected writeKey(key: string): void; + protected writeValue(value: string): void; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/AwsRestXmlProtocol.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/AwsRestXmlProtocol.d.ts new file mode 100644 index 000000000..53c1d96b0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/AwsRestXmlProtocol.d.ts @@ -0,0 +1,29 @@ +import { HttpBindingProtocol } from "@smithy/core/protocols"; +import type { EndpointBearer, HandlerExecutionContext, HttpRequest as IHttpRequest, HttpResponse as IHttpResponse, MetadataBearer, OperationSchema, ResponseMetadata, SerdeFunctions, ShapeDeserializer, ShapeSerializer } from "@smithy/types"; +import { XmlCodec } from "./XmlCodec"; +/** + * @public + */ +export declare class AwsRestXmlProtocol extends HttpBindingProtocol { + private readonly codec; + protected serializer: ShapeSerializer; + protected deserializer: ShapeDeserializer; + private readonly mixin; + constructor(options: { + defaultNamespace: string; + xmlNamespace: string; + }); + getPayloadCodec(): XmlCodec; + getShapeId(): string; + serializeRequest(operationSchema: OperationSchema, input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + deserializeResponse(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse): Promise; + /** + * @override + */ + protected handleError(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse, dataObject: any, metadata: ResponseMetadata): Promise; + /** + * @override + */ + protected getDefaultContentType(): string; + private hasUnstructuredPayloadBinding; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/XmlCodec.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/XmlCodec.d.ts new file mode 100644 index 000000000..4d69b40d0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/XmlCodec.d.ts @@ -0,0 +1,14 @@ +import type { Codec, CodecSettings } from "@smithy/types"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import { XmlShapeDeserializer } from "./XmlShapeDeserializer"; +import { XmlShapeSerializer } from "./XmlShapeSerializer"; +export type XmlSettings = CodecSettings & { + xmlNamespace: string; + serviceNamespace: string; +}; +export declare class XmlCodec extends SerdeContextConfig implements Codec { + readonly settings: XmlSettings; + constructor(settings: XmlSettings); + createSerializer(): XmlShapeSerializer; + createDeserializer(): XmlShapeDeserializer; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/XmlShapeDeserializer.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/XmlShapeDeserializer.d.ts new file mode 100644 index 000000000..ee2e0344e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/XmlShapeDeserializer.d.ts @@ -0,0 +1,20 @@ +import type { Schema, SerdeFunctions, ShapeDeserializer } from "@smithy/types"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import type { XmlSettings } from "./XmlCodec"; +/** + * @public + */ +export declare class XmlShapeDeserializer extends SerdeContextConfig implements ShapeDeserializer { + readonly settings: XmlSettings; + private stringDeserializer; + constructor(settings: XmlSettings); + setSerdeContext(serdeContext: SerdeFunctions): void; + /** + * @param schema - describing the data. + * @param bytes - serialized data. + * @param key - used by AwsQuery to step one additional depth into the object before reading it. + */ + read(schema: Schema, bytes: Uint8Array | string, key?: string): any; + readSchema(_schema: Schema, value: any): any; + protected parseXml(xml: string): any; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/XmlShapeSerializer.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/XmlShapeSerializer.d.ts new file mode 100644 index 000000000..5289f5ce9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/XmlShapeSerializer.d.ts @@ -0,0 +1,21 @@ +import type { Schema as ISchema, ShapeSerializer } from "@smithy/types"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import type { XmlSettings } from "./XmlCodec"; +/** + * @public + */ +export declare class XmlShapeSerializer extends SerdeContextConfig implements ShapeSerializer { + readonly settings: XmlSettings; + private stringBuffer?; + private byteBuffer?; + private buffer?; + constructor(settings: XmlSettings); + write(schema: ISchema, value: unknown): void; + flush(): string | Uint8Array; + private writeStruct; + private writeList; + private writeMap; + private writeSimple; + private writeSimpleInto; + private getXmlnsAttribute; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/parseXmlBody.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/parseXmlBody.d.ts new file mode 100644 index 000000000..30cfc30d1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/parseXmlBody.d.ts @@ -0,0 +1,13 @@ +import type { HttpResponse, SerdeContext } from "@smithy/types"; +/** + * @internal + */ +export declare const parseXmlBody: (streamBody: any, context: SerdeContext) => any; +/** + * @internal + */ +export declare const parseXmlErrorBody: (errorBody: any, context: SerdeContext) => Promise; +/** + * @internal + */ +export declare const loadRestXmlErrorCode: (output: HttpResponse, data: any) => string | undefined; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/simpleFormatXml.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/simpleFormatXml.d.ts new file mode 100644 index 000000000..43da7fc20 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/simpleFormatXml.d.ts @@ -0,0 +1,6 @@ +/** + * Formats XML, for testing only. + * @internal + * @deprecated don't use in runtime code. + */ +export declare function simpleFormatXml(xml: string): string; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/api-extractor-type-index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/api-extractor-type-index.d.ts new file mode 100644 index 000000000..e83f927be --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/api-extractor-type-index.d.ts @@ -0,0 +1,5 @@ +export * from "./index"; +export * from "./submodules/account-id-endpoint/index"; +export * from "./submodules/client/index"; +export * from "./submodules/httpAuthSchemes/index"; +export * from "./submodules/protocols/index"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..239de7a67 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/index.d.ts @@ -0,0 +1,3 @@ +export * from "./submodules/client/index"; +export * from "./submodules/httpAuthSchemes/index"; +export * from "./submodules/protocols/index"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/AccountIdEndpointModeConfigResolver.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/AccountIdEndpointModeConfigResolver.d.ts new file mode 100644 index 000000000..10d5c219b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/AccountIdEndpointModeConfigResolver.d.ts @@ -0,0 +1,15 @@ +import { Provider } from "@smithy/types"; +import { AccountIdEndpointMode } from "./AccountIdEndpointModeConstants"; +export interface AccountIdEndpointModeInputConfig { + accountIdEndpointMode?: + | AccountIdEndpointMode + | Provider; +} +interface PreviouslyResolved {} +export interface AccountIdEndpointModeResolvedConfig { + accountIdEndpointMode: Provider; +} +export declare const resolveAccountIdEndpointModeConfig: ( + input: T & AccountIdEndpointModeInputConfig & PreviouslyResolved +) => T & AccountIdEndpointModeResolvedConfig; +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/AccountIdEndpointModeConstants.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/AccountIdEndpointModeConstants.d.ts new file mode 100644 index 000000000..27bdce90a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/AccountIdEndpointModeConstants.d.ts @@ -0,0 +1,6 @@ +export type AccountIdEndpointMode = "disabled" | "preferred" | "required"; +export declare const DEFAULT_ACCOUNT_ID_ENDPOINT_MODE = "preferred"; +export declare const ACCOUNT_ID_ENDPOINT_MODE_VALUES: AccountIdEndpointMode[]; +export declare function validateAccountIdEndpointMode( + value: any +): value is AccountIdEndpointMode; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/NodeAccountIdEndpointModeConfigOptions.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/NodeAccountIdEndpointModeConfigOptions.d.ts new file mode 100644 index 000000000..9b0456681 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/NodeAccountIdEndpointModeConfigOptions.d.ts @@ -0,0 +1,7 @@ +import { LoadedConfigSelectors } from "@smithy/node-config-provider"; +import { AccountIdEndpointMode } from "./AccountIdEndpointModeConstants"; +export declare const ENV_ACCOUNT_ID_ENDPOINT_MODE = + "AWS_ACCOUNT_ID_ENDPOINT_MODE"; +export declare const CONFIG_ACCOUNT_ID_ENDPOINT_MODE = + "account_id_endpoint_mode"; +export declare const NODE_ACCOUNT_ID_ENDPOINT_MODE_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/index.d.ts new file mode 100644 index 000000000..52af11df3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/index.d.ts @@ -0,0 +1,3 @@ +export * from "./AccountIdEndpointModeConfigResolver"; +export * from "./AccountIdEndpointModeConstants"; +export * from "./NodeAccountIdEndpointModeConfigOptions"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/emitWarningIfUnsupportedVersion.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/emitWarningIfUnsupportedVersion.d.ts new file mode 100644 index 000000000..84af5674c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/emitWarningIfUnsupportedVersion.d.ts @@ -0,0 +1,4 @@ +export declare const state: { + warningEmitted: boolean; +}; +export declare const emitWarningIfUnsupportedVersion: (version: string) => void; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/index.d.ts new file mode 100644 index 000000000..492c6cdda --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/index.d.ts @@ -0,0 +1,4 @@ +export * from "./emitWarningIfUnsupportedVersion"; +export * from "./setCredentialFeature"; +export * from "./setFeature"; +export * from "./setTokenFeature"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/setCredentialFeature.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/setCredentialFeature.d.ts new file mode 100644 index 000000000..133661944 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/setCredentialFeature.d.ts @@ -0,0 +1,11 @@ +import { + AttributedAwsCredentialIdentity, + AwsSdkCredentialsFeatures, +} from "@aws-sdk/types"; +export declare function setCredentialFeature< + F extends keyof AwsSdkCredentialsFeatures +>( + credentials: AttributedAwsCredentialIdentity, + feature: F, + value: AwsSdkCredentialsFeatures[F] +): AttributedAwsCredentialIdentity; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/setFeature.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/setFeature.d.ts new file mode 100644 index 000000000..84482ee6b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/setFeature.d.ts @@ -0,0 +1,6 @@ +import { AwsHandlerExecutionContext, AwsSdkFeatures } from "@aws-sdk/types"; +export declare function setFeature( + context: AwsHandlerExecutionContext, + feature: F, + value: AwsSdkFeatures[F] +): void; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/setTokenFeature.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/setTokenFeature.d.ts new file mode 100644 index 000000000..469548cbb --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/setTokenFeature.d.ts @@ -0,0 +1,6 @@ +import { AttributedTokenIdentity, AwsSdkTokenFeatures } from "@aws-sdk/types"; +export declare function setTokenFeature( + token: AttributedTokenIdentity, + feature: F, + value: AwsSdkTokenFeatures[F] +): AttributedTokenIdentity; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.d.ts new file mode 100644 index 000000000..b8c2b7422 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.d.ts @@ -0,0 +1,12 @@ +import { + AwsCredentialIdentity, + HttpRequest as IHttpRequest, +} from "@smithy/types"; +import { AwsSdkSigV4Signer } from "./AwsSdkSigV4Signer"; +export declare class AwsSdkSigV4ASigner extends AwsSdkSigV4Signer { + sign( + httpRequest: IHttpRequest, + identity: AwsCredentialIdentity, + signingProperties: Record + ): Promise; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.d.ts new file mode 100644 index 000000000..0be6b41e2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.d.ts @@ -0,0 +1,39 @@ +import { + AuthScheme, + AwsCredentialIdentity, + HttpRequest as IHttpRequest, + HttpResponse, + HttpSigner, + RequestSigner, +} from "@smithy/types"; +import { AwsSdkSigV4AAuthResolvedConfig } from "./resolveAwsSdkSigV4AConfig"; +interface AwsSdkSigV4Config extends AwsSdkSigV4AAuthResolvedConfig { + systemClockOffset: number; + signer: (authScheme?: AuthScheme) => Promise; +} +interface AwsSdkSigV4AuthSigningProperties { + config: AwsSdkSigV4Config; + signer: RequestSigner; + signingRegion?: string; + signingRegionSet?: string[]; + signingName?: string; +} +export declare const validateSigningProperties: ( + signingProperties: Record +) => Promise; +export declare class AwsSdkSigV4Signer implements HttpSigner { + sign( + httpRequest: IHttpRequest, + identity: AwsCredentialIdentity, + signingProperties: Record + ): Promise; + errorHandler( + signingProperties: Record + ): (error: Error) => never; + successHandler( + httpResponse: HttpResponse | unknown, + signingProperties: Record + ): void; +} +export declare const AWSSDKSigV4Signer: typeof AwsSdkSigV4Signer; +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/NODE_AUTH_SCHEME_PREFERENCE_OPTIONS.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/NODE_AUTH_SCHEME_PREFERENCE_OPTIONS.d.ts new file mode 100644 index 000000000..effc1e066 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/NODE_AUTH_SCHEME_PREFERENCE_OPTIONS.d.ts @@ -0,0 +1,4 @@ +import { LoadedConfigSelectors } from "@smithy/node-config-provider"; +export declare const NODE_AUTH_SCHEME_PREFERENCE_OPTIONS: LoadedConfigSelectors< + string[] +>; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/index.d.ts new file mode 100644 index 000000000..6047921ce --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/index.d.ts @@ -0,0 +1,9 @@ +export { + AwsSdkSigV4Signer, + AWSSDKSigV4Signer, + validateSigningProperties, +} from "./AwsSdkSigV4Signer"; +export { AwsSdkSigV4ASigner } from "./AwsSdkSigV4ASigner"; +export * from "./NODE_AUTH_SCHEME_PREFERENCE_OPTIONS"; +export * from "./resolveAwsSdkSigV4AConfig"; +export * from "./resolveAwsSdkSigV4Config"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4AConfig.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4AConfig.d.ts new file mode 100644 index 000000000..9f949b081 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4AConfig.d.ts @@ -0,0 +1,18 @@ +import { LoadedConfigSelectors } from "@smithy/node-config-provider"; +import { Provider } from "@smithy/types"; +export interface AwsSdkSigV4AAuthInputConfig { + sigv4aSigningRegionSet?: + | string[] + | undefined + | Provider; +} +export interface AwsSdkSigV4APreviouslyResolved {} +export interface AwsSdkSigV4AAuthResolvedConfig { + sigv4aSigningRegionSet: Provider; +} +export declare const resolveAwsSdkSigV4AConfig: ( + config: T & AwsSdkSigV4AAuthInputConfig & AwsSdkSigV4APreviouslyResolved +) => T & AwsSdkSigV4AAuthResolvedConfig; +export declare const NODE_SIGV4A_CONFIG_OPTIONS: LoadedConfigSelectors< + string[] | undefined +>; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.d.ts new file mode 100644 index 000000000..fc562d995 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.d.ts @@ -0,0 +1,65 @@ +import { MergeFunctions } from "@aws-sdk/types"; +import { SignatureV4CryptoInit, SignatureV4Init } from "@smithy/signature-v4"; +import { + AuthScheme, + AwsCredentialIdentity, + AwsCredentialIdentityProvider, + ChecksumConstructor, + HashConstructor, + MemoizedProvider, + Provider, + RegionInfoProvider, + RequestSigner, +} from "@smithy/types"; +export interface AwsSdkSigV4AuthInputConfig { + credentials?: AwsCredentialIdentity | AwsCredentialIdentityProvider; + signer?: + | RequestSigner + | ((authScheme?: AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: SignatureV4Init & SignatureV4CryptoInit + ) => RequestSigner; +} +export type AwsSdkSigV4Memoized = { + memoized?: boolean; + configBound?: boolean; + attributed?: boolean; +}; +export interface AwsSdkSigV4PreviouslyResolved { + credentialDefaultProvider?: ( + input: any + ) => MemoizedProvider; + region: string | Provider; + sha256: ChecksumConstructor | HashConstructor; + signingName?: string; + regionInfoProvider?: RegionInfoProvider; + defaultSigningName?: string; + serviceId: string; + useFipsEndpoint: Provider; + useDualstackEndpoint: Provider; +} +export interface AwsSdkSigV4AuthResolvedConfig { + credentials: MergeFunctions< + AwsCredentialIdentityProvider, + MemoizedProvider + > & + AwsSdkSigV4Memoized; + signer: (authScheme?: AuthScheme) => Promise; + signingEscapePath: boolean; + systemClockOffset: number; +} +export declare const resolveAwsSdkSigV4Config: ( + config: T & AwsSdkSigV4AuthInputConfig & AwsSdkSigV4PreviouslyResolved +) => T & AwsSdkSigV4AuthResolvedConfig; +export interface AWSSDKSigV4AuthInputConfig + extends AwsSdkSigV4AuthInputConfig {} +export interface AWSSDKSigV4PreviouslyResolved + extends AwsSdkSigV4PreviouslyResolved {} +export interface AWSSDKSigV4AuthResolvedConfig + extends AwsSdkSigV4AuthResolvedConfig {} +export declare const resolveAWSSDKSigV4Config: ( + config: T & AwsSdkSigV4AuthInputConfig & AwsSdkSigV4PreviouslyResolved +) => T & AwsSdkSigV4AuthResolvedConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/index.d.ts new file mode 100644 index 000000000..3927741ab --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/index.d.ts @@ -0,0 +1,2 @@ +export * from "./aws_sdk"; +export * from "./utils/getBearerTokenEnvKey"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getArrayForCommaSeparatedString.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getArrayForCommaSeparatedString.d.ts new file mode 100644 index 000000000..aee232806 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getArrayForCommaSeparatedString.d.ts @@ -0,0 +1 @@ +export declare const getArrayForCommaSeparatedString: (str: string) => string[]; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getBearerTokenEnvKey.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getBearerTokenEnvKey.d.ts new file mode 100644 index 000000000..2904f0bb3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getBearerTokenEnvKey.d.ts @@ -0,0 +1 @@ +export declare const getBearerTokenEnvKey: (signingName: string) => string; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getDateHeader.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getDateHeader.d.ts new file mode 100644 index 000000000..73fc5295a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getDateHeader.d.ts @@ -0,0 +1 @@ +export declare const getDateHeader: (response: unknown) => string | undefined; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.d.ts new file mode 100644 index 000000000..741c5ea3a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.d.ts @@ -0,0 +1 @@ +export declare const getSkewCorrectedDate: (systemClockOffset: number) => Date; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.d.ts new file mode 100644 index 000000000..eae331176 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.d.ts @@ -0,0 +1,4 @@ +export declare const getUpdatedSystemClockOffset: ( + clockTime: string, + currentSystemClockOffset: number +) => number; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/index.d.ts new file mode 100644 index 000000000..07c21953a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/index.d.ts @@ -0,0 +1,3 @@ +export * from "./getDateHeader"; +export * from "./getSkewCorrectedDate"; +export * from "./getUpdatedSystemClockOffset"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/isClockSkewed.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/isClockSkewed.d.ts new file mode 100644 index 000000000..9f994f879 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/isClockSkewed.d.ts @@ -0,0 +1,4 @@ +export declare const isClockSkewed: ( + clockTime: number, + systemClockOffset: number +) => boolean; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/ConfigurableSerdeContext.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/ConfigurableSerdeContext.d.ts new file mode 100644 index 000000000..a225d08e2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/ConfigurableSerdeContext.d.ts @@ -0,0 +1,5 @@ +import { ConfigurableSerdeContext, SerdeFunctions } from "@smithy/types"; +export declare class SerdeContextConfig implements ConfigurableSerdeContext { + protected serdeContext?: SerdeFunctions; + setSerdeContext(serdeContext: SerdeFunctions): void; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/ProtocolLib.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/ProtocolLib.d.ts new file mode 100644 index 000000000..ae9201434 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/ProtocolLib.d.ts @@ -0,0 +1,47 @@ +import { NormalizedSchema, TypeRegistry } from "@smithy/core/schema"; +import { ServiceException as SDKBaseServiceException } from "@smithy/smithy-client"; +import { + HttpResponse as IHttpResponse, + MetadataBearer, + ResponseMetadata, + StaticErrorSchema, +} from "@smithy/types"; +type ErrorMetadataBearer = MetadataBearer & { + $fault: "client" | "server"; +}; +export declare class ProtocolLib { + private queryCompat; + constructor(queryCompat?: boolean); + resolveRestContentType( + defaultContentType: string, + inputSchema: NormalizedSchema + ): string | undefined; + getErrorSchemaOrThrowBaseException( + errorIdentifier: string, + defaultNamespace: string, + response: IHttpResponse, + dataObject: any, + metadata: ResponseMetadata, + getErrorSchema?: ( + registry: TypeRegistry, + errorName: string + ) => StaticErrorSchema + ): Promise<{ + errorSchema: StaticErrorSchema; + errorMetadata: ErrorMetadataBearer; + }>; + decorateServiceException( + exception: E, + additions?: Record + ): E; + setQueryCompatError( + output: Record, + response: IHttpResponse + ): void; + queryCompatOutput(queryCompatErrorData: any, errorData: any): void; + findQueryCompatibleError( + registry: TypeRegistry, + errorName: string + ): StaticErrorSchema; +} +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/UnionSerde.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/UnionSerde.d.ts new file mode 100644 index 000000000..0daa33515 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/UnionSerde.d.ts @@ -0,0 +1,9 @@ +export declare class UnionSerde { + private from; + private to; + private keys; + constructor(from: any, to: any); + mark(key: string): void; + hasUnknown(): boolean; + writeUnknown(): void; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/cbor/AwsSmithyRpcV2CborProtocol.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/cbor/AwsSmithyRpcV2CborProtocol.d.ts new file mode 100644 index 000000000..6f8fb2ee4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/cbor/AwsSmithyRpcV2CborProtocol.d.ts @@ -0,0 +1,33 @@ +import { SmithyRpcV2CborProtocol } from "@smithy/core/cbor"; +import { + EndpointBearer, + HandlerExecutionContext, + HttpRequest, + HttpResponse, + OperationSchema, + ResponseMetadata, + SerdeFunctions, +} from "@smithy/types"; +export declare class AwsSmithyRpcV2CborProtocol extends SmithyRpcV2CborProtocol { + private readonly awsQueryCompatible; + private readonly mixin; + constructor({ + defaultNamespace, + awsQueryCompatible, + }: { + defaultNamespace: string; + awsQueryCompatible?: boolean; + }); + serializeRequest( + operationSchema: OperationSchema, + input: Input, + context: HandlerExecutionContext & SerdeFunctions & EndpointBearer + ): Promise; + protected handleError( + operationSchema: OperationSchema, + context: HandlerExecutionContext & SerdeFunctions, + response: HttpResponse, + dataObject: any, + metadata: ResponseMetadata + ): Promise; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/coercing-serializers.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/coercing-serializers.d.ts new file mode 100644 index 000000000..7657ceb94 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/coercing-serializers.d.ts @@ -0,0 +1,3 @@ +export declare const _toStr: (val: unknown) => string | undefined; +export declare const _toBool: (val: unknown) => boolean | undefined; +export declare const _toNum: (val: unknown) => number | undefined; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/common.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/common.d.ts new file mode 100644 index 000000000..105253ee1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/common.d.ts @@ -0,0 +1,5 @@ +import { SerdeFunctions } from "@smithy/types"; +export declare const collectBodyString: ( + streamBody: any, + context: SerdeFunctions +) => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/index.d.ts new file mode 100644 index 000000000..0a230f917 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/index.d.ts @@ -0,0 +1,20 @@ +export * from "./cbor/AwsSmithyRpcV2CborProtocol"; +export * from "./coercing-serializers"; +export * from "./json/AwsJson1_0Protocol"; +export * from "./json/AwsJson1_1Protocol"; +export * from "./json/AwsJsonRpcProtocol"; +export * from "./json/AwsRestJsonProtocol"; +export * from "./json/JsonCodec"; +export * from "./json/JsonShapeDeserializer"; +export * from "./json/JsonShapeSerializer"; +export * from "./json/awsExpectUnion"; +export * from "./json/parseJsonBody"; +export * from "./query/AwsEc2QueryProtocol"; +export * from "./query/AwsQueryProtocol"; +export * from "./query/QuerySerializerSettings"; +export * from "./query/QueryShapeSerializer"; +export * from "./xml/AwsRestXmlProtocol"; +export * from "./xml/XmlCodec"; +export * from "./xml/XmlShapeDeserializer"; +export * from "./xml/XmlShapeSerializer"; +export * from "./xml/parseXmlBody"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsJson1_0Protocol.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsJson1_0Protocol.d.ts new file mode 100644 index 000000000..eabad2736 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsJson1_0Protocol.d.ts @@ -0,0 +1,18 @@ +import { AwsJsonRpcProtocol } from "./AwsJsonRpcProtocol"; +import { JsonCodec } from "./JsonCodec"; +export declare class AwsJson1_0Protocol extends AwsJsonRpcProtocol { + constructor({ + defaultNamespace, + serviceTarget, + awsQueryCompatible, + jsonCodec, + }: { + defaultNamespace: string; + serviceTarget: string; + awsQueryCompatible?: boolean; + jsonCodec?: JsonCodec; + }); + getShapeId(): string; + protected getJsonRpcVersion(): "1.0"; + protected getDefaultContentType(): string; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsJson1_1Protocol.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsJson1_1Protocol.d.ts new file mode 100644 index 000000000..f0be55b73 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsJson1_1Protocol.d.ts @@ -0,0 +1,18 @@ +import { AwsJsonRpcProtocol } from "./AwsJsonRpcProtocol"; +import { JsonCodec } from "./JsonCodec"; +export declare class AwsJson1_1Protocol extends AwsJsonRpcProtocol { + constructor({ + defaultNamespace, + serviceTarget, + awsQueryCompatible, + jsonCodec, + }: { + defaultNamespace: string; + serviceTarget: string; + awsQueryCompatible?: boolean; + jsonCodec?: JsonCodec; + }); + getShapeId(): string; + protected getJsonRpcVersion(): "1.1"; + protected getDefaultContentType(): string; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsJsonRpcProtocol.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsJsonRpcProtocol.d.ts new file mode 100644 index 000000000..fbe1310fc --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsJsonRpcProtocol.d.ts @@ -0,0 +1,46 @@ +import { RpcProtocol } from "@smithy/core/protocols"; +import { + EndpointBearer, + HandlerExecutionContext, + HttpRequest, + HttpResponse, + OperationSchema, + ResponseMetadata, + SerdeFunctions, + ShapeDeserializer, + ShapeSerializer, +} from "@smithy/types"; +import { JsonCodec } from "./JsonCodec"; +export declare abstract class AwsJsonRpcProtocol extends RpcProtocol { + protected serializer: ShapeSerializer; + protected deserializer: ShapeDeserializer; + protected serviceTarget: string; + private readonly codec; + private readonly mixin; + private readonly awsQueryCompatible; + protected constructor({ + defaultNamespace, + serviceTarget, + awsQueryCompatible, + jsonCodec, + }: { + defaultNamespace: string; + serviceTarget: string; + awsQueryCompatible?: boolean; + jsonCodec?: JsonCodec; + }); + serializeRequest( + operationSchema: OperationSchema, + input: Input, + context: HandlerExecutionContext & SerdeFunctions & EndpointBearer + ): Promise; + getPayloadCodec(): JsonCodec; + protected abstract getJsonRpcVersion(): "1.1" | "1.0"; + protected handleError( + operationSchema: OperationSchema, + context: HandlerExecutionContext & SerdeFunctions, + response: HttpResponse, + dataObject: any, + metadata: ResponseMetadata + ): Promise; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsRestJsonProtocol.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsRestJsonProtocol.d.ts new file mode 100644 index 000000000..13916db17 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsRestJsonProtocol.d.ts @@ -0,0 +1,42 @@ +import { HttpBindingProtocol } from "@smithy/core/protocols"; +import { + EndpointBearer, + HandlerExecutionContext, + HttpRequest, + HttpResponse, + MetadataBearer, + OperationSchema, + ResponseMetadata, + SerdeFunctions, + ShapeDeserializer, + ShapeSerializer, +} from "@smithy/types"; +import { JsonCodec } from "./JsonCodec"; +export declare class AwsRestJsonProtocol extends HttpBindingProtocol { + protected serializer: ShapeSerializer; + protected deserializer: ShapeDeserializer; + private readonly codec; + private readonly mixin; + constructor({ defaultNamespace }: { defaultNamespace: string }); + getShapeId(): string; + getPayloadCodec(): JsonCodec; + setSerdeContext(serdeContext: SerdeFunctions): void; + serializeRequest( + operationSchema: OperationSchema, + input: Input, + context: HandlerExecutionContext & SerdeFunctions & EndpointBearer + ): Promise; + deserializeResponse( + operationSchema: OperationSchema, + context: HandlerExecutionContext & SerdeFunctions, + response: HttpResponse + ): Promise; + protected handleError( + operationSchema: OperationSchema, + context: HandlerExecutionContext & SerdeFunctions, + response: HttpResponse, + dataObject: any, + metadata: ResponseMetadata + ): Promise; + protected getDefaultContentType(): string; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/JsonCodec.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/JsonCodec.d.ts new file mode 100644 index 000000000..225608a78 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/JsonCodec.d.ts @@ -0,0 +1,16 @@ +import { Codec, CodecSettings } from "@smithy/types"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import { JsonShapeDeserializer } from "./JsonShapeDeserializer"; +import { JsonShapeSerializer } from "./JsonShapeSerializer"; +export type JsonSettings = CodecSettings & { + jsonName: boolean; +}; +export declare class JsonCodec + extends SerdeContextConfig + implements Codec +{ + readonly settings: JsonSettings; + constructor(settings: JsonSettings); + createSerializer(): JsonShapeSerializer; + createDeserializer(): JsonShapeDeserializer; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/JsonShapeDeserializer.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/JsonShapeDeserializer.d.ts new file mode 100644 index 000000000..ae1579fdb --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/JsonShapeDeserializer.d.ts @@ -0,0 +1,13 @@ +import { DocumentType, Schema, ShapeDeserializer } from "@smithy/types"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import { JsonSettings } from "./JsonCodec"; +export declare class JsonShapeDeserializer + extends SerdeContextConfig + implements ShapeDeserializer +{ + readonly settings: JsonSettings; + constructor(settings: JsonSettings); + read(schema: Schema, data: string | Uint8Array | unknown): Promise; + readObject(schema: Schema, data: DocumentType): any; + protected _read(schema: Schema, value: unknown): any; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/JsonShapeSerializer.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/JsonShapeSerializer.d.ts new file mode 100644 index 000000000..41d82e65f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/JsonShapeSerializer.d.ts @@ -0,0 +1,22 @@ +import { NormalizedSchema } from "@smithy/core/schema"; +import { Schema, ShapeSerializer } from "@smithy/types"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import { JsonSettings } from "./JsonCodec"; +export declare class JsonShapeSerializer + extends SerdeContextConfig + implements ShapeSerializer +{ + readonly settings: JsonSettings; + protected buffer: any; + protected useReplacer: boolean; + protected rootSchema: NormalizedSchema | undefined; + constructor(settings: JsonSettings); + write(schema: Schema, value: unknown): void; + writeDiscriminatedDocument(schema: Schema, value: unknown): void; + flush(): string; + protected _write( + schema: Schema, + value: unknown, + container?: NormalizedSchema + ): any; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/awsExpectUnion.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/awsExpectUnion.d.ts new file mode 100644 index 000000000..fdc331e01 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/awsExpectUnion.d.ts @@ -0,0 +1,3 @@ +export declare const awsExpectUnion: ( + value: unknown +) => Record | undefined; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/experimental/SinglePassJsonShapeSerializer.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/experimental/SinglePassJsonShapeSerializer.d.ts new file mode 100644 index 000000000..d6b97bf1e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/experimental/SinglePassJsonShapeSerializer.d.ts @@ -0,0 +1,17 @@ +import { Schema, ShapeSerializer } from "@smithy/types"; +import { SerdeContextConfig } from "../../ConfigurableSerdeContext"; +import { JsonSettings } from "../JsonCodec"; +export declare class SinglePassJsonShapeSerializer + extends SerdeContextConfig + implements ShapeSerializer +{ + readonly settings: JsonSettings; + private buffer; + private rootSchema; + constructor(settings: JsonSettings); + write(schema: Schema, value: unknown): void; + writeDiscriminatedDocument(schema: Schema, value: unknown): void; + flush(): string; + private writeObject; + private writeValue; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/jsonReplacer.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/jsonReplacer.d.ts new file mode 100644 index 000000000..c781ab932 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/jsonReplacer.d.ts @@ -0,0 +1,7 @@ +export declare class JsonReplacer { + private readonly values; + private counter; + private stage; + createReplacer(): (key: string, value: unknown) => unknown; + replaceInJson(json: string): string; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/jsonReviver.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/jsonReviver.d.ts new file mode 100644 index 000000000..6411604eb --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/jsonReviver.d.ts @@ -0,0 +1,7 @@ +export declare function jsonReviver( + key: string, + value: any, + context?: { + source?: string; + } +): any; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/parseJsonBody.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/parseJsonBody.d.ts new file mode 100644 index 000000000..f13884a53 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/parseJsonBody.d.ts @@ -0,0 +1,13 @@ +import { HttpResponse, SerdeFunctions } from "@smithy/types"; +export declare const parseJsonBody: ( + streamBody: any, + context: SerdeFunctions +) => any; +export declare const parseJsonErrorBody: ( + errorBody: any, + context: SerdeFunctions +) => Promise; +export declare const loadRestJsonErrorCode: ( + output: HttpResponse, + data: any +) => string | undefined; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/AwsEc2QueryProtocol.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/AwsEc2QueryProtocol.d.ts new file mode 100644 index 000000000..aa0b98b50 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/AwsEc2QueryProtocol.d.ts @@ -0,0 +1,15 @@ +import { AwsQueryProtocol } from "./AwsQueryProtocol"; +export declare class AwsEc2QueryProtocol extends AwsQueryProtocol { + options: { + defaultNamespace: string; + xmlNamespace: string; + version: string; + }; + constructor(options: { + defaultNamespace: string; + xmlNamespace: string; + version: string; + }); + getShapeId(): string; + protected useNestedResult(): boolean; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/AwsQueryProtocol.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/AwsQueryProtocol.d.ts new file mode 100644 index 000000000..8b7c154c4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/AwsQueryProtocol.d.ts @@ -0,0 +1,57 @@ +import { RpcProtocol } from "@smithy/core/protocols"; +import { + Codec, + EndpointBearer, + HandlerExecutionContext, + HttpRequest, + HttpResponse as IHttpResponse, + MetadataBearer, + OperationSchema, + ResponseMetadata, + SerdeFunctions, +} from "@smithy/types"; +import { XmlShapeDeserializer } from "../xml/XmlShapeDeserializer"; +import { QueryShapeSerializer } from "./QueryShapeSerializer"; +export declare class AwsQueryProtocol extends RpcProtocol { + options: { + defaultNamespace: string; + xmlNamespace: string; + version: string; + }; + protected serializer: QueryShapeSerializer; + protected deserializer: XmlShapeDeserializer; + private readonly mixin; + constructor(options: { + defaultNamespace: string; + xmlNamespace: string; + version: string; + }); + getShapeId(): string; + setSerdeContext(serdeContext: SerdeFunctions): void; + getPayloadCodec(): Codec; + serializeRequest( + operationSchema: OperationSchema, + input: Input, + context: HandlerExecutionContext & SerdeFunctions & EndpointBearer + ): Promise; + deserializeResponse( + operationSchema: OperationSchema, + context: HandlerExecutionContext & SerdeFunctions, + response: IHttpResponse + ): Promise; + protected useNestedResult(): boolean; + protected handleError( + operationSchema: OperationSchema, + context: HandlerExecutionContext & SerdeFunctions, + response: IHttpResponse, + dataObject: any, + metadata: ResponseMetadata + ): Promise; + protected loadQueryErrorCode( + output: IHttpResponse, + data: any + ): string | undefined; + protected loadQueryError(data: any): any | undefined; + protected loadQueryErrorMessage(data: any): string; + protected getDefaultContentType(): string; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/QuerySerializerSettings.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/QuerySerializerSettings.d.ts new file mode 100644 index 000000000..315d4aab1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/QuerySerializerSettings.d.ts @@ -0,0 +1,7 @@ +import { CodecSettings } from "@smithy/types"; +export type QuerySerializerSettings = CodecSettings & { + capitalizeKeys?: boolean; + flattenLists?: boolean; + serializeEmptyLists?: boolean; + ec2?: boolean; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/QueryShapeSerializer.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/QueryShapeSerializer.d.ts new file mode 100644 index 000000000..f373507f2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/QueryShapeSerializer.d.ts @@ -0,0 +1,21 @@ +import { Schema, ShapeSerializer } from "@smithy/types"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import { QuerySerializerSettings } from "./QuerySerializerSettings"; +export declare class QueryShapeSerializer + extends SerdeContextConfig + implements ShapeSerializer +{ + readonly settings: QuerySerializerSettings; + private buffer; + constructor(settings: QuerySerializerSettings); + write(schema: Schema, value: unknown, prefix?: string): void; + flush(): string | Uint8Array; + protected getKey( + memberName: string, + xmlName?: string, + ec2QueryName?: unknown, + keySource?: string + ): string; + protected writeKey(key: string): void; + protected writeValue(value: string): void; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/AwsRestXmlProtocol.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/AwsRestXmlProtocol.d.ts new file mode 100644 index 000000000..c0be0b3a2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/AwsRestXmlProtocol.d.ts @@ -0,0 +1,42 @@ +import { HttpBindingProtocol } from "@smithy/core/protocols"; +import { + EndpointBearer, + HandlerExecutionContext, + HttpRequest as IHttpRequest, + HttpResponse as IHttpResponse, + MetadataBearer, + OperationSchema, + ResponseMetadata, + SerdeFunctions, + ShapeDeserializer, + ShapeSerializer, +} from "@smithy/types"; +import { XmlCodec } from "./XmlCodec"; +export declare class AwsRestXmlProtocol extends HttpBindingProtocol { + private readonly codec; + protected serializer: ShapeSerializer; + protected deserializer: ShapeDeserializer; + private readonly mixin; + constructor(options: { defaultNamespace: string; xmlNamespace: string }); + getPayloadCodec(): XmlCodec; + getShapeId(): string; + serializeRequest( + operationSchema: OperationSchema, + input: Input, + context: HandlerExecutionContext & SerdeFunctions & EndpointBearer + ): Promise; + deserializeResponse( + operationSchema: OperationSchema, + context: HandlerExecutionContext & SerdeFunctions, + response: IHttpResponse + ): Promise; + protected handleError( + operationSchema: OperationSchema, + context: HandlerExecutionContext & SerdeFunctions, + response: IHttpResponse, + dataObject: any, + metadata: ResponseMetadata + ): Promise; + protected getDefaultContentType(): string; + private hasUnstructuredPayloadBinding; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/XmlCodec.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/XmlCodec.d.ts new file mode 100644 index 000000000..14f46e0a4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/XmlCodec.d.ts @@ -0,0 +1,17 @@ +import { Codec, CodecSettings } from "@smithy/types"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import { XmlShapeDeserializer } from "./XmlShapeDeserializer"; +import { XmlShapeSerializer } from "./XmlShapeSerializer"; +export type XmlSettings = CodecSettings & { + xmlNamespace: string; + serviceNamespace: string; +}; +export declare class XmlCodec + extends SerdeContextConfig + implements Codec +{ + readonly settings: XmlSettings; + constructor(settings: XmlSettings); + createSerializer(): XmlShapeSerializer; + createDeserializer(): XmlShapeDeserializer; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/XmlShapeDeserializer.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/XmlShapeDeserializer.d.ts new file mode 100644 index 000000000..0c5b7cd16 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/XmlShapeDeserializer.d.ts @@ -0,0 +1,15 @@ +import { Schema, SerdeFunctions, ShapeDeserializer } from "@smithy/types"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import { XmlSettings } from "./XmlCodec"; +export declare class XmlShapeDeserializer + extends SerdeContextConfig + implements ShapeDeserializer +{ + readonly settings: XmlSettings; + private stringDeserializer; + constructor(settings: XmlSettings); + setSerdeContext(serdeContext: SerdeFunctions): void; + read(schema: Schema, bytes: Uint8Array | string, key?: string): any; + readSchema(_schema: Schema, value: any): any; + protected parseXml(xml: string): any; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/XmlShapeSerializer.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/XmlShapeSerializer.d.ts new file mode 100644 index 000000000..9ad37368e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/XmlShapeSerializer.d.ts @@ -0,0 +1,21 @@ +import { Schema as ISchema, ShapeSerializer } from "@smithy/types"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import { XmlSettings } from "./XmlCodec"; +export declare class XmlShapeSerializer + extends SerdeContextConfig + implements ShapeSerializer +{ + readonly settings: XmlSettings; + private stringBuffer?; + private byteBuffer?; + private buffer?; + constructor(settings: XmlSettings); + write(schema: ISchema, value: unknown): void; + flush(): string | Uint8Array; + private writeStruct; + private writeList; + private writeMap; + private writeSimple; + private writeSimpleInto; + private getXmlnsAttribute; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/parseXmlBody.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/parseXmlBody.d.ts new file mode 100644 index 000000000..f15183417 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/parseXmlBody.d.ts @@ -0,0 +1,13 @@ +import { HttpResponse, SerdeContext } from "@smithy/types"; +export declare const parseXmlBody: ( + streamBody: any, + context: SerdeContext +) => any; +export declare const parseXmlErrorBody: ( + errorBody: any, + context: SerdeContext +) => Promise; +export declare const loadRestXmlErrorCode: ( + output: HttpResponse, + data: any +) => string | undefined; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/simpleFormatXml.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/simpleFormatXml.d.ts new file mode 100644 index 000000000..b70cfc46b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/simpleFormatXml.d.ts @@ -0,0 +1 @@ +export declare function simpleFormatXml(xml: string): string; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/httpAuthSchemes.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/httpAuthSchemes.d.ts new file mode 100644 index 000000000..3783b5e79 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/httpAuthSchemes.d.ts @@ -0,0 +1,7 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +declare module "@aws-sdk/core/httpAuthSchemes" { + export * from "@aws-sdk/core/dist-types/submodules/httpAuthSchemes/index.d"; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/httpAuthSchemes.js b/food-ordering-app/server/node_modules/@aws-sdk/core/httpAuthSchemes.js new file mode 100644 index 000000000..17685b072 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/httpAuthSchemes.js @@ -0,0 +1,5 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +module.exports = require("./dist-cjs/submodules/httpAuthSchemes/index.js"); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/package.json b/food-ordering-app/server/node_modules/@aws-sdk/core/package.json new file mode 100644 index 000000000..be56da98e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/package.json @@ -0,0 +1,121 @@ +{ + "name": "@aws-sdk/core", + "version": "3.973.20", + "description": "Core functions & classes shared by multiple AWS SDK clients.", + "scripts": { + "build": "yarn lint && concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline core && premove ./dist-cjs/api-extractor-type-index.js", + "build:es": "tsc -p tsconfig.es.json && premove ./dist-es/api-extractor-type-index.js", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "lint": "node ../../scripts/validation/submodules-linter.js --pkg core", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "extract:docs": "api-extractor run --local", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "exports": { + ".": { + "types": "./dist-types/index.d.ts", + "module": "./dist-es/index.js", + "node": "./dist-cjs/index.js", + "import": "./dist-es/index.js", + "require": "./dist-cjs/index.js" + }, + "./package.json": { + "module": "./package.json", + "node": "./package.json", + "import": "./package.json", + "require": "./package.json" + }, + "./client": { + "types": "./dist-types/submodules/client/index.d.ts", + "module": "./dist-es/submodules/client/index.js", + "node": "./dist-cjs/submodules/client/index.js", + "import": "./dist-es/submodules/client/index.js", + "require": "./dist-cjs/submodules/client/index.js" + }, + "./httpAuthSchemes": { + "types": "./dist-types/submodules/httpAuthSchemes/index.d.ts", + "module": "./dist-es/submodules/httpAuthSchemes/index.js", + "node": "./dist-cjs/submodules/httpAuthSchemes/index.js", + "import": "./dist-es/submodules/httpAuthSchemes/index.js", + "require": "./dist-cjs/submodules/httpAuthSchemes/index.js" + }, + "./account-id-endpoint": { + "types": "./dist-types/submodules/account-id-endpoint/index.d.ts", + "module": "./dist-es/submodules/account-id-endpoint/index.js", + "node": "./dist-cjs/submodules/account-id-endpoint/index.js", + "import": "./dist-es/submodules/account-id-endpoint/index.js", + "require": "./dist-cjs/submodules/account-id-endpoint/index.js" + }, + "./protocols": { + "types": "./dist-types/submodules/protocols/index.d.ts", + "module": "./dist-es/submodules/protocols/index.js", + "node": "./dist-cjs/submodules/protocols/index.js", + "import": "./dist-es/submodules/protocols/index.js", + "require": "./dist-cjs/submodules/protocols/index.js" + } + }, + "files": [ + "./account-id-endpoint.d.ts", + "./account-id-endpoint.js", + "./client.d.ts", + "./client.js", + "./httpAuthSchemes.d.ts", + "./httpAuthSchemes.js", + "./protocols.d.ts", + "./protocols.js", + "dist-*/**" + ], + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/xml-builder": "^3.972.11", + "@smithy/core": "^3.23.11", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/signature-v4": "^5.3.12", + "@smithy/smithy-client": "^4.12.5", + "@smithy/types": "^4.13.1", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/core", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/core" + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/protocols.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/core/protocols.d.ts new file mode 100644 index 000000000..7a363347c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/protocols.d.ts @@ -0,0 +1,7 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +declare module "@aws-sdk/core/protocols" { + export * from "@aws-sdk/core/dist-types/submodules/protocols/index.d"; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/core/protocols.js b/food-ordering-app/server/node_modules/@aws-sdk/core/protocols.js new file mode 100644 index 000000000..e2916e8fb --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/core/protocols.js @@ -0,0 +1,5 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +module.exports = require("./dist-cjs/submodules/protocols/index.js"); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/LICENSE b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/LICENSE new file mode 100644 index 000000000..dd65ae06b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/README.md b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/README.md new file mode 100644 index 000000000..7ea2c4070 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/README.md @@ -0,0 +1,11 @@ +# @aws-sdk/credential-provider-cognito-identity + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/credential-provider-cognito-identity/latest.svg)](https://www.npmjs.com/package/@aws-sdk/credential-provider-cognito-identity) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/credential-provider-cognito-identity.svg)](https://www.npmjs.com/package/@aws-sdk/credential-provider-cognito-identity) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. Please use [@aws-sdk/credential-providers](https://www.npmjs.com/package/@aws-sdk/credential-providers) +instead. diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-cjs/index.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-cjs/index.js new file mode 100644 index 000000000..28e78ec57 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-cjs/index.js @@ -0,0 +1,204 @@ +'use strict'; + +var propertyProvider = require('@smithy/property-provider'); + +function resolveLogins(logins) { + return Promise.all(Object.keys(logins).reduce((arr, name) => { + const tokenOrProvider = logins[name]; + if (typeof tokenOrProvider === "string") { + arr.push([name, tokenOrProvider]); + } + else { + arr.push(tokenOrProvider().then((token) => [name, token])); + } + return arr; + }, [])).then((resolvedPairs) => resolvedPairs.reduce((logins, [key, value]) => { + logins[key] = value; + return logins; + }, {})); +} + +function fromCognitoIdentity(parameters) { + return async (awsIdentityProperties) => { + parameters.logger?.debug("@aws-sdk/credential-provider-cognito-identity - fromCognitoIdentity"); + const { GetCredentialsForIdentityCommand, CognitoIdentityClient } = await Promise.resolve().then(function () { return require('./loadCognitoIdentity-C-kPrLZ4.js'); }); + const fromConfigs = (property) => parameters.clientConfig?.[property] ?? + parameters.parentClientConfig?.[property] ?? + awsIdentityProperties?.callerClientConfig?.[property]; + const { Credentials: { AccessKeyId = throwOnMissingAccessKeyId(parameters.logger), Expiration, SecretKey = throwOnMissingSecretKey(parameters.logger), SessionToken, } = throwOnMissingCredentials(parameters.logger), } = await (parameters.client ?? + new CognitoIdentityClient(Object.assign({}, parameters.clientConfig ?? {}, { + region: fromConfigs("region"), + profile: fromConfigs("profile"), + userAgentAppId: fromConfigs("userAgentAppId"), + }))).send(new GetCredentialsForIdentityCommand({ + CustomRoleArn: parameters.customRoleArn, + IdentityId: parameters.identityId, + Logins: parameters.logins ? await resolveLogins(parameters.logins) : undefined, + })); + return { + identityId: parameters.identityId, + accessKeyId: AccessKeyId, + secretAccessKey: SecretKey, + sessionToken: SessionToken, + expiration: Expiration, + }; + }; +} +function throwOnMissingAccessKeyId(logger) { + throw new propertyProvider.CredentialsProviderError("Response from Amazon Cognito contained no access key ID", { logger }); +} +function throwOnMissingCredentials(logger) { + throw new propertyProvider.CredentialsProviderError("Response from Amazon Cognito contained no credentials", { logger }); +} +function throwOnMissingSecretKey(logger) { + throw new propertyProvider.CredentialsProviderError("Response from Amazon Cognito contained no secret key", { logger }); +} + +const STORE_NAME = "IdentityIds"; +class IndexedDbStorage { + dbName; + constructor(dbName = "aws:cognito-identity-ids") { + this.dbName = dbName; + } + getItem(key) { + return this.withObjectStore("readonly", (store) => { + const req = store.get(key); + return new Promise((resolve) => { + req.onerror = () => resolve(null); + req.onsuccess = () => resolve(req.result ? req.result.value : null); + }); + }).catch(() => null); + } + removeItem(key) { + return this.withObjectStore("readwrite", (store) => { + const req = store.delete(key); + return new Promise((resolve, reject) => { + req.onerror = () => reject(req.error); + req.onsuccess = () => resolve(); + }); + }); + } + setItem(id, value) { + return this.withObjectStore("readwrite", (store) => { + const req = store.put({ id, value }); + return new Promise((resolve, reject) => { + req.onerror = () => reject(req.error); + req.onsuccess = () => resolve(); + }); + }); + } + getDb() { + const openDbRequest = self.indexedDB.open(this.dbName, 1); + return new Promise((resolve, reject) => { + openDbRequest.onsuccess = () => { + resolve(openDbRequest.result); + }; + openDbRequest.onerror = () => { + reject(openDbRequest.error); + }; + openDbRequest.onblocked = () => { + reject(new Error("Unable to access DB")); + }; + openDbRequest.onupgradeneeded = () => { + const db = openDbRequest.result; + db.onerror = () => { + reject(new Error("Failed to create object store")); + }; + db.createObjectStore(STORE_NAME, { keyPath: "id" }); + }; + }); + } + withObjectStore(mode, action) { + return this.getDb().then((db) => { + const tx = db.transaction(STORE_NAME, mode); + tx.oncomplete = () => db.close(); + return new Promise((resolve, reject) => { + tx.onerror = () => reject(tx.error); + resolve(action(tx.objectStore(STORE_NAME))); + }).catch((err) => { + db.close(); + throw err; + }); + }); + } +} + +class InMemoryStorage { + store; + constructor(store = {}) { + this.store = store; + } + getItem(key) { + if (key in this.store) { + return this.store[key]; + } + return null; + } + removeItem(key) { + delete this.store[key]; + } + setItem(key, value) { + this.store[key] = value; + } +} + +const inMemoryStorage = new InMemoryStorage(); +function localStorage() { + if (typeof self === "object" && self.indexedDB) { + return new IndexedDbStorage(); + } + if (typeof window === "object" && window.localStorage) { + return window.localStorage; + } + return inMemoryStorage; +} + +function fromCognitoIdentityPool({ accountId, cache = localStorage(), client, clientConfig, customRoleArn, identityPoolId, logins, userIdentifier = !logins || Object.keys(logins).length === 0 ? "ANONYMOUS" : undefined, logger, parentClientConfig, }) { + logger?.debug("@aws-sdk/credential-provider-cognito-identity - fromCognitoIdentity"); + const cacheKey = userIdentifier + ? `aws:cognito-identity-credentials:${identityPoolId}:${userIdentifier}` + : undefined; + let provider = async (awsIdentityProperties) => { + const { GetIdCommand, CognitoIdentityClient } = await Promise.resolve().then(function () { return require('./loadCognitoIdentity-C-kPrLZ4.js'); }); + const fromConfigs = (property) => clientConfig?.[property] ?? + parentClientConfig?.[property] ?? + awsIdentityProperties?.callerClientConfig?.[property]; + const _client = client ?? + new CognitoIdentityClient(Object.assign({}, clientConfig ?? {}, { + region: fromConfigs("region"), + profile: fromConfigs("profile"), + userAgentAppId: fromConfigs("userAgentAppId"), + })); + let identityId = (cacheKey && (await cache.getItem(cacheKey))); + if (!identityId) { + const { IdentityId = throwOnMissingId(logger) } = await _client.send(new GetIdCommand({ + AccountId: accountId, + IdentityPoolId: identityPoolId, + Logins: logins ? await resolveLogins(logins) : undefined, + })); + identityId = IdentityId; + if (cacheKey) { + Promise.resolve(cache.setItem(cacheKey, identityId)).catch(() => { }); + } + } + provider = fromCognitoIdentity({ + client: _client, + customRoleArn, + logins, + identityId, + }); + return provider(awsIdentityProperties); + }; + return (awsIdentityProperties) => provider(awsIdentityProperties).catch(async (err) => { + if (cacheKey) { + Promise.resolve(cache.removeItem(cacheKey)).catch(() => { }); + } + throw err; + }); +} +function throwOnMissingId(logger) { + throw new propertyProvider.CredentialsProviderError("Response from Amazon Cognito contained no identity ID", { logger }); +} + +exports.fromCognitoIdentity = fromCognitoIdentity; +exports.fromCognitoIdentityPool = fromCognitoIdentityPool; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-cjs/loadCognitoIdentity-C-kPrLZ4.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-cjs/loadCognitoIdentity-C-kPrLZ4.js new file mode 100644 index 000000000..4cc8c6c73 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-cjs/loadCognitoIdentity-C-kPrLZ4.js @@ -0,0 +1,9 @@ +'use strict'; + +var cognitoIdentity = require('@aws-sdk/nested-clients/cognito-identity'); + + + +exports.CognitoIdentityClient = cognitoIdentity.CognitoIdentityClient; +exports.GetCredentialsForIdentityCommand = cognitoIdentity.GetCredentialsForIdentityCommand; +exports.GetIdCommand = cognitoIdentity.GetIdCommand; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/CognitoProviderParameters.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/CognitoProviderParameters.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/CognitoProviderParameters.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/InMemoryStorage.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/InMemoryStorage.js new file mode 100644 index 000000000..52f2ec64c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/InMemoryStorage.js @@ -0,0 +1,18 @@ +export class InMemoryStorage { + store; + constructor(store = {}) { + this.store = store; + } + getItem(key) { + if (key in this.store) { + return this.store[key]; + } + return null; + } + removeItem(key) { + delete this.store[key]; + } + setItem(key, value) { + this.store[key] = value; + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/IndexedDbStorage.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/IndexedDbStorage.js new file mode 100644 index 000000000..06a8cf8c7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/IndexedDbStorage.js @@ -0,0 +1,68 @@ +const STORE_NAME = "IdentityIds"; +export class IndexedDbStorage { + dbName; + constructor(dbName = "aws:cognito-identity-ids") { + this.dbName = dbName; + } + getItem(key) { + return this.withObjectStore("readonly", (store) => { + const req = store.get(key); + return new Promise((resolve) => { + req.onerror = () => resolve(null); + req.onsuccess = () => resolve(req.result ? req.result.value : null); + }); + }).catch(() => null); + } + removeItem(key) { + return this.withObjectStore("readwrite", (store) => { + const req = store.delete(key); + return new Promise((resolve, reject) => { + req.onerror = () => reject(req.error); + req.onsuccess = () => resolve(); + }); + }); + } + setItem(id, value) { + return this.withObjectStore("readwrite", (store) => { + const req = store.put({ id, value }); + return new Promise((resolve, reject) => { + req.onerror = () => reject(req.error); + req.onsuccess = () => resolve(); + }); + }); + } + getDb() { + const openDbRequest = self.indexedDB.open(this.dbName, 1); + return new Promise((resolve, reject) => { + openDbRequest.onsuccess = () => { + resolve(openDbRequest.result); + }; + openDbRequest.onerror = () => { + reject(openDbRequest.error); + }; + openDbRequest.onblocked = () => { + reject(new Error("Unable to access DB")); + }; + openDbRequest.onupgradeneeded = () => { + const db = openDbRequest.result; + db.onerror = () => { + reject(new Error("Failed to create object store")); + }; + db.createObjectStore(STORE_NAME, { keyPath: "id" }); + }; + }); + } + withObjectStore(mode, action) { + return this.getDb().then((db) => { + const tx = db.transaction(STORE_NAME, mode); + tx.oncomplete = () => db.close(); + return new Promise((resolve, reject) => { + tx.onerror = () => reject(tx.error); + resolve(action(tx.objectStore(STORE_NAME))); + }).catch((err) => { + db.close(); + throw err; + }); + }); + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/Logins.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/Logins.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/Logins.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/Storage.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/Storage.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/Storage.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/fromCognitoIdentity.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/fromCognitoIdentity.js new file mode 100644 index 000000000..d2fe20dcf --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/fromCognitoIdentity.js @@ -0,0 +1,37 @@ +import { CredentialsProviderError } from "@smithy/property-provider"; +import { resolveLogins } from "./resolveLogins"; +export function fromCognitoIdentity(parameters) { + return async (awsIdentityProperties) => { + parameters.logger?.debug("@aws-sdk/credential-provider-cognito-identity - fromCognitoIdentity"); + const { GetCredentialsForIdentityCommand, CognitoIdentityClient } = await import("./loadCognitoIdentity"); + const fromConfigs = (property) => parameters.clientConfig?.[property] ?? + parameters.parentClientConfig?.[property] ?? + awsIdentityProperties?.callerClientConfig?.[property]; + const { Credentials: { AccessKeyId = throwOnMissingAccessKeyId(parameters.logger), Expiration, SecretKey = throwOnMissingSecretKey(parameters.logger), SessionToken, } = throwOnMissingCredentials(parameters.logger), } = await (parameters.client ?? + new CognitoIdentityClient(Object.assign({}, parameters.clientConfig ?? {}, { + region: fromConfigs("region"), + profile: fromConfigs("profile"), + userAgentAppId: fromConfigs("userAgentAppId"), + }))).send(new GetCredentialsForIdentityCommand({ + CustomRoleArn: parameters.customRoleArn, + IdentityId: parameters.identityId, + Logins: parameters.logins ? await resolveLogins(parameters.logins) : undefined, + })); + return { + identityId: parameters.identityId, + accessKeyId: AccessKeyId, + secretAccessKey: SecretKey, + sessionToken: SessionToken, + expiration: Expiration, + }; + }; +} +function throwOnMissingAccessKeyId(logger) { + throw new CredentialsProviderError("Response from Amazon Cognito contained no access key ID", { logger }); +} +function throwOnMissingCredentials(logger) { + throw new CredentialsProviderError("Response from Amazon Cognito contained no credentials", { logger }); +} +function throwOnMissingSecretKey(logger) { + throw new CredentialsProviderError("Response from Amazon Cognito contained no secret key", { logger }); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/fromCognitoIdentityPool.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/fromCognitoIdentityPool.js new file mode 100644 index 000000000..27b49f2c5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/fromCognitoIdentityPool.js @@ -0,0 +1,50 @@ +import { CredentialsProviderError } from "@smithy/property-provider"; +import { fromCognitoIdentity } from "./fromCognitoIdentity"; +import { localStorage } from "./localStorage"; +import { resolveLogins } from "./resolveLogins"; +export function fromCognitoIdentityPool({ accountId, cache = localStorage(), client, clientConfig, customRoleArn, identityPoolId, logins, userIdentifier = !logins || Object.keys(logins).length === 0 ? "ANONYMOUS" : undefined, logger, parentClientConfig, }) { + logger?.debug("@aws-sdk/credential-provider-cognito-identity - fromCognitoIdentity"); + const cacheKey = userIdentifier + ? `aws:cognito-identity-credentials:${identityPoolId}:${userIdentifier}` + : undefined; + let provider = async (awsIdentityProperties) => { + const { GetIdCommand, CognitoIdentityClient } = await import("./loadCognitoIdentity"); + const fromConfigs = (property) => clientConfig?.[property] ?? + parentClientConfig?.[property] ?? + awsIdentityProperties?.callerClientConfig?.[property]; + const _client = client ?? + new CognitoIdentityClient(Object.assign({}, clientConfig ?? {}, { + region: fromConfigs("region"), + profile: fromConfigs("profile"), + userAgentAppId: fromConfigs("userAgentAppId"), + })); + let identityId = (cacheKey && (await cache.getItem(cacheKey))); + if (!identityId) { + const { IdentityId = throwOnMissingId(logger) } = await _client.send(new GetIdCommand({ + AccountId: accountId, + IdentityPoolId: identityPoolId, + Logins: logins ? await resolveLogins(logins) : undefined, + })); + identityId = IdentityId; + if (cacheKey) { + Promise.resolve(cache.setItem(cacheKey, identityId)).catch(() => { }); + } + } + provider = fromCognitoIdentity({ + client: _client, + customRoleArn, + logins, + identityId, + }); + return provider(awsIdentityProperties); + }; + return (awsIdentityProperties) => provider(awsIdentityProperties).catch(async (err) => { + if (cacheKey) { + Promise.resolve(cache.removeItem(cacheKey)).catch(() => { }); + } + throw err; + }); +} +function throwOnMissingId(logger) { + throw new CredentialsProviderError("Response from Amazon Cognito contained no identity ID", { logger }); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/index.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/index.js new file mode 100644 index 000000000..3e03825e1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/index.js @@ -0,0 +1,5 @@ +export * from "./CognitoProviderParameters"; +export * from "./Logins"; +export * from "./Storage"; +export * from "./fromCognitoIdentity"; +export * from "./fromCognitoIdentityPool"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/loadCognitoIdentity.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/loadCognitoIdentity.js new file mode 100644 index 000000000..44007d023 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/loadCognitoIdentity.js @@ -0,0 +1,2 @@ +import { CognitoIdentityClient, GetCredentialsForIdentityCommand, GetIdCommand, } from "@aws-sdk/nested-clients/cognito-identity"; +export { CognitoIdentityClient, GetCredentialsForIdentityCommand, GetIdCommand }; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/localStorage.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/localStorage.js new file mode 100644 index 000000000..fc7972f46 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/localStorage.js @@ -0,0 +1,12 @@ +import { IndexedDbStorage } from "./IndexedDbStorage"; +import { InMemoryStorage } from "./InMemoryStorage"; +const inMemoryStorage = new InMemoryStorage(); +export function localStorage() { + if (typeof self === "object" && self.indexedDB) { + return new IndexedDbStorage(); + } + if (typeof window === "object" && window.localStorage) { + return window.localStorage; + } + return inMemoryStorage; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/resolveLogins.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/resolveLogins.js new file mode 100644 index 000000000..aa56280ee --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/resolveLogins.js @@ -0,0 +1,15 @@ +export function resolveLogins(logins) { + return Promise.all(Object.keys(logins).reduce((arr, name) => { + const tokenOrProvider = logins[name]; + if (typeof tokenOrProvider === "string") { + arr.push([name, tokenOrProvider]); + } + else { + arr.push(tokenOrProvider().then((token) => [name, token])); + } + return arr; + }, [])).then((resolvedPairs) => resolvedPairs.reduce((logins, [key, value]) => { + logins[key] = value; + return logins; + }, {})); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/CognitoProviderParameters.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/CognitoProviderParameters.d.ts new file mode 100644 index 000000000..0fcdca5ce --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/CognitoProviderParameters.d.ts @@ -0,0 +1,32 @@ +import type { CognitoIdentityClient, CognitoIdentityClientConfig } from "./loadCognitoIdentity"; +import type { Logins } from "./Logins"; +/** + * @internal + */ +export interface CognitoProviderParameters { + /** + * The SDK client with which the credential provider will contact the Amazon + * Cognito service. + */ + client?: CognitoIdentityClient; + /** + * Client config, only used when not supplying a client. + */ + clientConfig?: CognitoIdentityClientConfig; + /** + * The Amazon Resource Name (ARN) of the role to be assumed when multiple + * roles were received in the token from the identity provider. For example, + * a SAML-based identity provider. This parameter is optional for identity + * providers that do not support role customization. + */ + customRoleArn?: string; + /** + * A set of key-value pairs that map external identity provider names to + * login tokens or functions that return promises for login tokens. The + * latter should be used when login tokens must be periodically refreshed. + * + * Logins should not be specified when trying to get credentials for an + * unauthenticated identity. + */ + logins?: Logins; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/InMemoryStorage.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/InMemoryStorage.d.ts new file mode 100644 index 000000000..c7f21390b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/InMemoryStorage.d.ts @@ -0,0 +1,11 @@ +import type { Storage } from "./Storage"; +/** + * @internal + */ +export declare class InMemoryStorage implements Storage { + private store; + constructor(store?: Record); + getItem(key: string): string | null; + removeItem(key: string): void; + setItem(key: string, value: string): void; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/IndexedDbStorage.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/IndexedDbStorage.d.ts new file mode 100644 index 000000000..7009258c5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/IndexedDbStorage.d.ts @@ -0,0 +1,13 @@ +import type { Storage } from "./Storage"; +/** + * @internal + */ +export declare class IndexedDbStorage implements Storage { + private readonly dbName; + constructor(dbName?: string); + getItem(key: string): Promise; + removeItem(key: string): Promise; + setItem(id: string, value: string): Promise; + private getDb; + private withObjectStore; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/Logins.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/Logins.d.ts new file mode 100644 index 000000000..381dc6bcc --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/Logins.d.ts @@ -0,0 +1,9 @@ +import type { Provider } from "@smithy/types"; +/** + * @internal + */ +export type Logins = Record>; +/** + * @internal + */ +export type ResolvedLogins = Record; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/Storage.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/Storage.d.ts new file mode 100644 index 000000000..c20d63ce7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/Storage.d.ts @@ -0,0 +1,16 @@ +/** + * @internal + * + * A subset of the Storage interface defined in the WHATWG HTML specification. + * Access by index is not supported, as it cannot be replicated without Proxy + * objects. + * + * The interface has been augmented to support asynchronous storage + * + * @see https://html.spec.whatwg.org/multipage/webstorage.html#the-storage-interface + */ +export interface Storage { + getItem(key: string): string | null | Promise; + removeItem(key: string): void | Promise; + setItem(key: string, data: string): void | Promise; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/fromCognitoIdentity.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/fromCognitoIdentity.d.ts new file mode 100644 index 000000000..99b5a090f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/fromCognitoIdentity.d.ts @@ -0,0 +1,35 @@ +import type { CredentialProviderOptions, RuntimeConfigIdentityProvider } from "@aws-sdk/types"; +import type { AwsCredentialIdentity } from "@smithy/types"; +import type { CognitoProviderParameters } from "./CognitoProviderParameters"; +/** + * @internal + */ +export interface CognitoIdentityCredentials extends AwsCredentialIdentity { + /** + * The Cognito ID returned by the last call to AWS.CognitoIdentity.getOpenIdToken(). + */ + identityId: string; +} +/** + * @internal + */ +export type CognitoIdentityCredentialProvider = RuntimeConfigIdentityProvider; +/** + * @internal + * + * Retrieves temporary AWS credentials using Amazon Cognito's + * `GetCredentialsForIdentity` operation. + * + * Results from this function call are not cached internally. + */ +export declare function fromCognitoIdentity(parameters: FromCognitoIdentityParameters): CognitoIdentityCredentialProvider; +/** + * @internal + */ +export interface FromCognitoIdentityParameters extends CognitoProviderParameters, CredentialProviderOptions { + /** + * The unique identifier for the identity against which credentials will be + * issued. + */ + identityId: string; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/fromCognitoIdentityPool.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/fromCognitoIdentityPool.d.ts new file mode 100644 index 000000000..4071c68a0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/fromCognitoIdentityPool.d.ts @@ -0,0 +1,50 @@ +import type { CredentialProviderOptions } from "@aws-sdk/types"; +import type { CognitoProviderParameters } from "./CognitoProviderParameters"; +import type { CognitoIdentityCredentialProvider } from "./fromCognitoIdentity"; +import type { Storage } from "./Storage"; +/** + * @internal + * + * Retrieves or generates a unique identifier using Amazon Cognito's `GetId` + * operation, then generates temporary AWS credentials using Amazon Cognito's + * `GetCredentialsForIdentity` operation. + * + * Results from `GetId` are cached internally, but results from + * `GetCredentialsForIdentity` are not. + */ +export declare function fromCognitoIdentityPool({ accountId, cache, client, clientConfig, customRoleArn, identityPoolId, logins, userIdentifier, logger, parentClientConfig, }: FromCognitoIdentityPoolParameters): CognitoIdentityCredentialProvider; +/** + * @internal + */ +export interface FromCognitoIdentityPoolParameters extends CognitoProviderParameters, CredentialProviderOptions { + /** + * A standard AWS account ID (9+ digits). + */ + accountId?: string; + /** + * A cache in which to store resolved Cognito IdentityIds. If not supplied, + * the credential provider will attempt to store IdentityIds in one of the + * following (in order of preference): + * 1. IndexedDB + * 2. LocalStorage + * 3. An in-memory cache object that will not persist between pages. + * + * IndexedDB is preferred to maximize data sharing between top-level + * browsing contexts and web workers. + * + * The provider will not cache IdentityIds of authenticated users unless a + * separate `userIdentitifer` parameter is supplied. + */ + cache?: Storage; + /** + * The unique identifier for the identity pool from which an identity should + * be retrieved or generated. + */ + identityPoolId: string; + /** + * A unique identifier for the user. This is distinct from a Cognito + * IdentityId and should instead be an identifier meaningful to your + * application. Used to cache Cognito IdentityIds on a per-user basis. + */ + userIdentifier?: string; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/index.d.ts new file mode 100644 index 000000000..3d9c72991 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/index.d.ts @@ -0,0 +1,20 @@ +/** + * @internal + */ +export * from "./CognitoProviderParameters"; +/** + * @internal + */ +export * from "./Logins"; +/** + * @internal + */ +export * from "./Storage"; +/** + * @internal + */ +export * from "./fromCognitoIdentity"; +/** + * @internal + */ +export * from "./fromCognitoIdentityPool"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/loadCognitoIdentity.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/loadCognitoIdentity.d.ts new file mode 100644 index 000000000..d1574fc7c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/loadCognitoIdentity.d.ts @@ -0,0 +1,3 @@ +import { CognitoIdentityClient, GetCredentialsForIdentityCommand, GetIdCommand } from "@aws-sdk/nested-clients/cognito-identity"; +export { CognitoIdentityClient, GetCredentialsForIdentityCommand, GetIdCommand }; +export type { CognitoIdentityClientConfig } from "@aws-sdk/nested-clients/cognito-identity"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/localStorage.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/localStorage.d.ts new file mode 100644 index 000000000..a0bc6f582 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/localStorage.d.ts @@ -0,0 +1,5 @@ +import type { Storage } from "./Storage"; +/** + * @internal + */ +export declare function localStorage(): Storage; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/resolveLogins.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/resolveLogins.d.ts new file mode 100644 index 000000000..a7a5f2e26 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/resolveLogins.d.ts @@ -0,0 +1,5 @@ +import type { Logins, ResolvedLogins } from "./Logins"; +/** + * @internal + */ +export declare function resolveLogins(logins: Logins): Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/ts3.4/CognitoProviderParameters.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/ts3.4/CognitoProviderParameters.d.ts new file mode 100644 index 000000000..1dad52cc4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/ts3.4/CognitoProviderParameters.d.ts @@ -0,0 +1,11 @@ +import { + CognitoIdentityClient, + CognitoIdentityClientConfig, +} from "./loadCognitoIdentity"; +import { Logins } from "./Logins"; +export interface CognitoProviderParameters { + client?: CognitoIdentityClient; + clientConfig?: CognitoIdentityClientConfig; + customRoleArn?: string; + logins?: Logins; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/ts3.4/InMemoryStorage.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/ts3.4/InMemoryStorage.d.ts new file mode 100644 index 000000000..c58e59c29 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/ts3.4/InMemoryStorage.d.ts @@ -0,0 +1,8 @@ +import { Storage } from "./Storage"; +export declare class InMemoryStorage implements Storage { + private store; + constructor(store?: Record); + getItem(key: string): string | null; + removeItem(key: string): void; + setItem(key: string, value: string): void; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/ts3.4/IndexedDbStorage.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/ts3.4/IndexedDbStorage.d.ts new file mode 100644 index 000000000..0bf554ad4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/ts3.4/IndexedDbStorage.d.ts @@ -0,0 +1,10 @@ +import { Storage } from "./Storage"; +export declare class IndexedDbStorage implements Storage { + private readonly dbName; + constructor(dbName?: string); + getItem(key: string): Promise; + removeItem(key: string): Promise; + setItem(id: string, value: string): Promise; + private getDb; + private withObjectStore; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/ts3.4/Logins.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/ts3.4/Logins.d.ts new file mode 100644 index 000000000..71c04577c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/ts3.4/Logins.d.ts @@ -0,0 +1,3 @@ +import { Provider } from "@smithy/types"; +export type Logins = Record>; +export type ResolvedLogins = Record; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/ts3.4/Storage.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/ts3.4/Storage.d.ts new file mode 100644 index 000000000..ac912ad72 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/ts3.4/Storage.d.ts @@ -0,0 +1,5 @@ +export interface Storage { + getItem(key: string): string | null | Promise; + removeItem(key: string): void | Promise; + setItem(key: string, data: string): void | Promise; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/ts3.4/fromCognitoIdentity.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/ts3.4/fromCognitoIdentity.d.ts new file mode 100644 index 000000000..0bc770878 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/ts3.4/fromCognitoIdentity.d.ts @@ -0,0 +1,19 @@ +import { + CredentialProviderOptions, + RuntimeConfigIdentityProvider, +} from "@aws-sdk/types"; +import { AwsCredentialIdentity } from "@smithy/types"; +import { CognitoProviderParameters } from "./CognitoProviderParameters"; +export interface CognitoIdentityCredentials extends AwsCredentialIdentity { + identityId: string; +} +export type CognitoIdentityCredentialProvider = + RuntimeConfigIdentityProvider; +export declare function fromCognitoIdentity( + parameters: FromCognitoIdentityParameters +): CognitoIdentityCredentialProvider; +export interface FromCognitoIdentityParameters + extends CognitoProviderParameters, + CredentialProviderOptions { + identityId: string; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/ts3.4/fromCognitoIdentityPool.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/ts3.4/fromCognitoIdentityPool.d.ts new file mode 100644 index 000000000..58e5c0944 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/ts3.4/fromCognitoIdentityPool.d.ts @@ -0,0 +1,24 @@ +import { CredentialProviderOptions } from "@aws-sdk/types"; +import { CognitoProviderParameters } from "./CognitoProviderParameters"; +import { CognitoIdentityCredentialProvider } from "./fromCognitoIdentity"; +import { Storage } from "./Storage"; +export declare function fromCognitoIdentityPool({ + accountId, + cache, + client, + clientConfig, + customRoleArn, + identityPoolId, + logins, + userIdentifier, + logger, + parentClientConfig, +}: FromCognitoIdentityPoolParameters): CognitoIdentityCredentialProvider; +export interface FromCognitoIdentityPoolParameters + extends CognitoProviderParameters, + CredentialProviderOptions { + accountId?: string; + cache?: Storage; + identityPoolId: string; + userIdentifier?: string; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..3e03825e1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/ts3.4/index.d.ts @@ -0,0 +1,5 @@ +export * from "./CognitoProviderParameters"; +export * from "./Logins"; +export * from "./Storage"; +export * from "./fromCognitoIdentity"; +export * from "./fromCognitoIdentityPool"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/ts3.4/loadCognitoIdentity.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/ts3.4/loadCognitoIdentity.d.ts new file mode 100644 index 000000000..48deb970b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/ts3.4/loadCognitoIdentity.d.ts @@ -0,0 +1,11 @@ +import { + CognitoIdentityClient, + GetCredentialsForIdentityCommand, + GetIdCommand, +} from "@aws-sdk/nested-clients/cognito-identity"; +export { + CognitoIdentityClient, + GetCredentialsForIdentityCommand, + GetIdCommand, +}; +export { CognitoIdentityClientConfig } from "@aws-sdk/nested-clients/cognito-identity"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/ts3.4/localStorage.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/ts3.4/localStorage.d.ts new file mode 100644 index 000000000..c3c3a326f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/ts3.4/localStorage.d.ts @@ -0,0 +1,2 @@ +import { Storage } from "./Storage"; +export declare function localStorage(): Storage; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/ts3.4/resolveLogins.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/ts3.4/resolveLogins.d.ts new file mode 100644 index 000000000..4698d3d43 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-types/ts3.4/resolveLogins.d.ts @@ -0,0 +1,2 @@ +import { Logins, ResolvedLogins } from "./Logins"; +export declare function resolveLogins(logins: Logins): Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/package.json b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/package.json new file mode 100644 index 000000000..ec52d3417 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-cognito-identity/package.json @@ -0,0 +1,59 @@ +{ + "name": "@aws-sdk/credential-provider-cognito-identity", + "version": "3.972.13", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline credential-provider-cognito-identity", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run && yarn test:browser", + "test:watch": "yarn g:vitest watch", + "test:browser": "yarn g:vitest run -c vitest.config.browser.mts", + "test:browser:watch": "yarn g:vitest watch -c vitest.config.browser.mts" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/nested-clients": "^3.996.10", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/credential-provider-cognito-identity", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/credential-provider-cognito-identity" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-env/LICENSE b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-env/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-env/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-env/README.md b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-env/README.md new file mode 100644 index 000000000..61a643614 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-env/README.md @@ -0,0 +1,11 @@ +# @aws-sdk/credential-provider-env + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/credential-provider-env/latest.svg)](https://www.npmjs.com/package/@aws-sdk/credential-provider-env) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/credential-provider-env.svg)](https://www.npmjs.com/package/@aws-sdk/credential-provider-env) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. Please use [@aws-sdk/credential-providers](https://www.npmjs.com/package/@aws-sdk/credential-providers) +instead. diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-env/dist-cjs/index.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-env/dist-cjs/index.js new file mode 100644 index 000000000..74d76aac6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-env/dist-cjs/index.js @@ -0,0 +1,41 @@ +'use strict'; + +var client = require('@aws-sdk/core/client'); +var propertyProvider = require('@smithy/property-provider'); + +const ENV_KEY = "AWS_ACCESS_KEY_ID"; +const ENV_SECRET = "AWS_SECRET_ACCESS_KEY"; +const ENV_SESSION = "AWS_SESSION_TOKEN"; +const ENV_EXPIRATION = "AWS_CREDENTIAL_EXPIRATION"; +const ENV_CREDENTIAL_SCOPE = "AWS_CREDENTIAL_SCOPE"; +const ENV_ACCOUNT_ID = "AWS_ACCOUNT_ID"; +const fromEnv = (init) => async () => { + init?.logger?.debug("@aws-sdk/credential-provider-env - fromEnv"); + const accessKeyId = process.env[ENV_KEY]; + const secretAccessKey = process.env[ENV_SECRET]; + const sessionToken = process.env[ENV_SESSION]; + const expiry = process.env[ENV_EXPIRATION]; + const credentialScope = process.env[ENV_CREDENTIAL_SCOPE]; + const accountId = process.env[ENV_ACCOUNT_ID]; + if (accessKeyId && secretAccessKey) { + const credentials = { + accessKeyId, + secretAccessKey, + ...(sessionToken && { sessionToken }), + ...(expiry && { expiration: new Date(expiry) }), + ...(credentialScope && { credentialScope }), + ...(accountId && { accountId }), + }; + client.setCredentialFeature(credentials, "CREDENTIALS_ENV_VARS", "g"); + return credentials; + } + throw new propertyProvider.CredentialsProviderError("Unable to find environment variable credentials.", { logger: init?.logger }); +}; + +exports.ENV_ACCOUNT_ID = ENV_ACCOUNT_ID; +exports.ENV_CREDENTIAL_SCOPE = ENV_CREDENTIAL_SCOPE; +exports.ENV_EXPIRATION = ENV_EXPIRATION; +exports.ENV_KEY = ENV_KEY; +exports.ENV_SECRET = ENV_SECRET; +exports.ENV_SESSION = ENV_SESSION; +exports.fromEnv = fromEnv; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-env/dist-es/fromEnv.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-env/dist-es/fromEnv.js new file mode 100644 index 000000000..a6a292830 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-env/dist-es/fromEnv.js @@ -0,0 +1,30 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +import { CredentialsProviderError } from "@smithy/property-provider"; +export const ENV_KEY = "AWS_ACCESS_KEY_ID"; +export const ENV_SECRET = "AWS_SECRET_ACCESS_KEY"; +export const ENV_SESSION = "AWS_SESSION_TOKEN"; +export const ENV_EXPIRATION = "AWS_CREDENTIAL_EXPIRATION"; +export const ENV_CREDENTIAL_SCOPE = "AWS_CREDENTIAL_SCOPE"; +export const ENV_ACCOUNT_ID = "AWS_ACCOUNT_ID"; +export const fromEnv = (init) => async () => { + init?.logger?.debug("@aws-sdk/credential-provider-env - fromEnv"); + const accessKeyId = process.env[ENV_KEY]; + const secretAccessKey = process.env[ENV_SECRET]; + const sessionToken = process.env[ENV_SESSION]; + const expiry = process.env[ENV_EXPIRATION]; + const credentialScope = process.env[ENV_CREDENTIAL_SCOPE]; + const accountId = process.env[ENV_ACCOUNT_ID]; + if (accessKeyId && secretAccessKey) { + const credentials = { + accessKeyId, + secretAccessKey, + ...(sessionToken && { sessionToken }), + ...(expiry && { expiration: new Date(expiry) }), + ...(credentialScope && { credentialScope }), + ...(accountId && { accountId }), + }; + setCredentialFeature(credentials, "CREDENTIALS_ENV_VARS", "g"); + return credentials; + } + throw new CredentialsProviderError("Unable to find environment variable credentials.", { logger: init?.logger }); +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-env/dist-es/index.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-env/dist-es/index.js new file mode 100644 index 000000000..17bf6daa6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-env/dist-es/index.js @@ -0,0 +1 @@ +export * from "./fromEnv"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-env/dist-types/fromEnv.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-env/dist-types/fromEnv.d.ts new file mode 100644 index 000000000..dbf5ba691 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-env/dist-types/fromEnv.d.ts @@ -0,0 +1,36 @@ +import type { CredentialProviderOptions } from "@aws-sdk/types"; +import type { AwsCredentialIdentityProvider } from "@smithy/types"; +export interface FromEnvInit extends CredentialProviderOptions { +} +/** + * @internal + */ +export declare const ENV_KEY = "AWS_ACCESS_KEY_ID"; +/** + * @internal + */ +export declare const ENV_SECRET = "AWS_SECRET_ACCESS_KEY"; +/** + * @internal + */ +export declare const ENV_SESSION = "AWS_SESSION_TOKEN"; +/** + * @internal + */ +export declare const ENV_EXPIRATION = "AWS_CREDENTIAL_EXPIRATION"; +/** + * @internal + */ +export declare const ENV_CREDENTIAL_SCOPE = "AWS_CREDENTIAL_SCOPE"; +/** + * @internal + */ +export declare const ENV_ACCOUNT_ID = "AWS_ACCOUNT_ID"; +/** + * @internal + * + * Source AWS credentials from known environment variables. If either the + * `AWS_ACCESS_KEY_ID` or `AWS_SECRET_ACCESS_KEY` environment variable is not + * set in this process, the provider will return a rejected promise. + */ +export declare const fromEnv: (init?: FromEnvInit) => AwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-env/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-env/dist-types/index.d.ts new file mode 100644 index 000000000..fe76e31b5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-env/dist-types/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export * from "./fromEnv"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-env/dist-types/ts3.4/fromEnv.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-env/dist-types/ts3.4/fromEnv.d.ts new file mode 100644 index 000000000..55c454e6c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-env/dist-types/ts3.4/fromEnv.d.ts @@ -0,0 +1,12 @@ +import { CredentialProviderOptions } from "@aws-sdk/types"; +import { AwsCredentialIdentityProvider } from "@smithy/types"; +export interface FromEnvInit extends CredentialProviderOptions {} +export declare const ENV_KEY = "AWS_ACCESS_KEY_ID"; +export declare const ENV_SECRET = "AWS_SECRET_ACCESS_KEY"; +export declare const ENV_SESSION = "AWS_SESSION_TOKEN"; +export declare const ENV_EXPIRATION = "AWS_CREDENTIAL_EXPIRATION"; +export declare const ENV_CREDENTIAL_SCOPE = "AWS_CREDENTIAL_SCOPE"; +export declare const ENV_ACCOUNT_ID = "AWS_ACCOUNT_ID"; +export declare const fromEnv: ( + init?: FromEnvInit +) => AwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-env/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-env/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..17bf6daa6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-env/dist-types/ts3.4/index.d.ts @@ -0,0 +1 @@ +export * from "./fromEnv"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-env/package.json b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-env/package.json new file mode 100644 index 000000000..efce228cb --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-env/package.json @@ -0,0 +1,63 @@ +{ + "name": "@aws-sdk/credential-provider-env", + "version": "3.972.18", + "description": "AWS credential provider that sources credentials from known environment variables", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline credential-provider-env", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "keywords": [ + "aws", + "credentials" + ], + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "@types/node": "^20.14.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/credential-provider-env", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/credential-provider-env" + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/README.md b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/README.md new file mode 100644 index 000000000..e8f19f8d9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/README.md @@ -0,0 +1,10 @@ +# @aws-sdk/credential-provider-http + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/credential-provider-http/latest.svg)](https://www.npmjs.com/package/@aws-sdk/credential-provider-http) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/credential-provider-http.svg)](https://www.npmjs.com/package/@aws-sdk/credential-provider-http) + +> An internal transitively required package. + +## Usage + +See https://www.npmjs.com/package/@aws-sdk/credential-providers diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/checkUrl.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/checkUrl.js new file mode 100644 index 000000000..c4adb5f93 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/checkUrl.js @@ -0,0 +1,46 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.checkUrl = void 0; +const property_provider_1 = require("@smithy/property-provider"); +const LOOPBACK_CIDR_IPv4 = "127.0.0.0/8"; +const LOOPBACK_CIDR_IPv6 = "::1/128"; +const ECS_CONTAINER_HOST = "169.254.170.2"; +const EKS_CONTAINER_HOST_IPv4 = "169.254.170.23"; +const EKS_CONTAINER_HOST_IPv6 = "[fd00:ec2::23]"; +const checkUrl = (url, logger) => { + if (url.protocol === "https:") { + return; + } + if (url.hostname === ECS_CONTAINER_HOST || + url.hostname === EKS_CONTAINER_HOST_IPv4 || + url.hostname === EKS_CONTAINER_HOST_IPv6) { + return; + } + if (url.hostname.includes("[")) { + if (url.hostname === "[::1]" || url.hostname === "[0000:0000:0000:0000:0000:0000:0000:0001]") { + return; + } + } + else { + if (url.hostname === "localhost") { + return; + } + const ipComponents = url.hostname.split("."); + const inRange = (component) => { + const num = parseInt(component, 10); + return 0 <= num && num <= 255; + }; + if (ipComponents[0] === "127" && + inRange(ipComponents[1]) && + inRange(ipComponents[2]) && + inRange(ipComponents[3]) && + ipComponents.length === 4) { + return; + } + } + throw new property_provider_1.CredentialsProviderError(`URL not accepted. It must either be HTTPS or match one of the following: + - loopback CIDR 127.0.0.0/8 or [::1/128] + - ECS container host 169.254.170.2 + - EKS container host 169.254.170.23 or [fd00:ec2::23]`, { logger }); +}; +exports.checkUrl = checkUrl; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttp.browser.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttp.browser.js new file mode 100644 index 000000000..d7c0efa11 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttp.browser.js @@ -0,0 +1,31 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromHttp = void 0; +const fetch_http_handler_1 = require("@smithy/fetch-http-handler"); +const property_provider_1 = require("@smithy/property-provider"); +const checkUrl_1 = require("./checkUrl"); +const requestHelpers_1 = require("./requestHelpers"); +const retry_wrapper_1 = require("./retry-wrapper"); +const fromHttp = (options = {}) => { + options.logger?.debug("@aws-sdk/credential-provider-http - fromHttp"); + let host; + const full = options.credentialsFullUri; + if (full) { + host = full; + } + else { + throw new property_provider_1.CredentialsProviderError("No HTTP credential provider host provided.", { logger: options.logger }); + } + const url = new URL(host); + (0, checkUrl_1.checkUrl)(url, options.logger); + const requestHandler = new fetch_http_handler_1.FetchHttpHandler(); + return (0, retry_wrapper_1.retryWrapper)(async () => { + const request = (0, requestHelpers_1.createGetRequest)(url); + if (options.authorizationToken) { + request.headers.Authorization = options.authorizationToken; + } + const result = await requestHandler.handle(request); + return (0, requestHelpers_1.getCredentials)(result.response); + }, options.maxRetries ?? 3, options.timeout ?? 1000); +}; +exports.fromHttp = fromHttp; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttp.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttp.js new file mode 100644 index 000000000..295019358 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttp.js @@ -0,0 +1,70 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromHttp = void 0; +const tslib_1 = require("tslib"); +const client_1 = require("@aws-sdk/core/client"); +const node_http_handler_1 = require("@smithy/node-http-handler"); +const property_provider_1 = require("@smithy/property-provider"); +const promises_1 = tslib_1.__importDefault(require("node:fs/promises")); +const checkUrl_1 = require("./checkUrl"); +const requestHelpers_1 = require("./requestHelpers"); +const retry_wrapper_1 = require("./retry-wrapper"); +const AWS_CONTAINER_CREDENTIALS_RELATIVE_URI = "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"; +const DEFAULT_LINK_LOCAL_HOST = "http://169.254.170.2"; +const AWS_CONTAINER_CREDENTIALS_FULL_URI = "AWS_CONTAINER_CREDENTIALS_FULL_URI"; +const AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE = "AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE"; +const AWS_CONTAINER_AUTHORIZATION_TOKEN = "AWS_CONTAINER_AUTHORIZATION_TOKEN"; +const fromHttp = (options = {}) => { + options.logger?.debug("@aws-sdk/credential-provider-http - fromHttp"); + let host; + const relative = options.awsContainerCredentialsRelativeUri ?? process.env[AWS_CONTAINER_CREDENTIALS_RELATIVE_URI]; + const full = options.awsContainerCredentialsFullUri ?? process.env[AWS_CONTAINER_CREDENTIALS_FULL_URI]; + const token = options.awsContainerAuthorizationToken ?? process.env[AWS_CONTAINER_AUTHORIZATION_TOKEN]; + const tokenFile = options.awsContainerAuthorizationTokenFile ?? process.env[AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE]; + const warn = options.logger?.constructor?.name === "NoOpLogger" || !options.logger?.warn + ? console.warn + : options.logger.warn.bind(options.logger); + if (relative && full) { + warn("@aws-sdk/credential-provider-http: " + + "you have set both awsContainerCredentialsRelativeUri and awsContainerCredentialsFullUri."); + warn("awsContainerCredentialsFullUri will take precedence."); + } + if (token && tokenFile) { + warn("@aws-sdk/credential-provider-http: " + + "you have set both awsContainerAuthorizationToken and awsContainerAuthorizationTokenFile."); + warn("awsContainerAuthorizationToken will take precedence."); + } + if (full) { + host = full; + } + else if (relative) { + host = `${DEFAULT_LINK_LOCAL_HOST}${relative}`; + } + else { + throw new property_provider_1.CredentialsProviderError(`No HTTP credential provider host provided. +Set AWS_CONTAINER_CREDENTIALS_FULL_URI or AWS_CONTAINER_CREDENTIALS_RELATIVE_URI.`, { logger: options.logger }); + } + const url = new URL(host); + (0, checkUrl_1.checkUrl)(url, options.logger); + const requestHandler = node_http_handler_1.NodeHttpHandler.create({ + requestTimeout: options.timeout ?? 1000, + connectionTimeout: options.timeout ?? 1000, + }); + return (0, retry_wrapper_1.retryWrapper)(async () => { + const request = (0, requestHelpers_1.createGetRequest)(url); + if (token) { + request.headers.Authorization = token; + } + else if (tokenFile) { + request.headers.Authorization = (await promises_1.default.readFile(tokenFile)).toString(); + } + try { + const result = await requestHandler.handle(request); + return (0, requestHelpers_1.getCredentials)(result.response).then((creds) => (0, client_1.setCredentialFeature)(creds, "CREDENTIALS_HTTP", "z")); + } + catch (e) { + throw new property_provider_1.CredentialsProviderError(String(e), { logger: options.logger }); + } + }, options.maxRetries ?? 3, options.timeout ?? 1000); +}; +exports.fromHttp = fromHttp; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttpTypes.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttpTypes.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttpTypes.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/requestHelpers.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/requestHelpers.js new file mode 100644 index 000000000..48159a320 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/requestHelpers.js @@ -0,0 +1,53 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createGetRequest = createGetRequest; +exports.getCredentials = getCredentials; +const property_provider_1 = require("@smithy/property-provider"); +const protocol_http_1 = require("@smithy/protocol-http"); +const smithy_client_1 = require("@smithy/smithy-client"); +const util_stream_1 = require("@smithy/util-stream"); +function createGetRequest(url) { + return new protocol_http_1.HttpRequest({ + protocol: url.protocol, + hostname: url.hostname, + port: Number(url.port), + path: url.pathname, + query: Array.from(url.searchParams.entries()).reduce((acc, [k, v]) => { + acc[k] = v; + return acc; + }, {}), + fragment: url.hash, + }); +} +async function getCredentials(response, logger) { + const stream = (0, util_stream_1.sdkStreamMixin)(response.body); + const str = await stream.transformToString(); + if (response.statusCode === 200) { + const parsed = JSON.parse(str); + if (typeof parsed.AccessKeyId !== "string" || + typeof parsed.SecretAccessKey !== "string" || + typeof parsed.Token !== "string" || + typeof parsed.Expiration !== "string") { + throw new property_provider_1.CredentialsProviderError("HTTP credential provider response not of the required format, an object matching: " + + "{ AccessKeyId: string, SecretAccessKey: string, Token: string, Expiration: string(rfc3339) }", { logger }); + } + return { + accessKeyId: parsed.AccessKeyId, + secretAccessKey: parsed.SecretAccessKey, + sessionToken: parsed.Token, + expiration: (0, smithy_client_1.parseRfc3339DateTime)(parsed.Expiration), + }; + } + if (response.statusCode >= 400 && response.statusCode < 500) { + let parsedBody = {}; + try { + parsedBody = JSON.parse(str); + } + catch (e) { } + throw Object.assign(new property_provider_1.CredentialsProviderError(`Server responded with status: ${response.statusCode}`, { logger }), { + Code: parsedBody.Code, + Message: parsedBody.Message, + }); + } + throw new property_provider_1.CredentialsProviderError(`Server responded with status: ${response.statusCode}`, { logger }); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/retry-wrapper.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/retry-wrapper.js new file mode 100644 index 000000000..b99b2efab --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/retry-wrapper.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.retryWrapper = void 0; +const retryWrapper = (toRetry, maxRetries, delayMs) => { + return async () => { + for (let i = 0; i < maxRetries; ++i) { + try { + return await toRetry(); + } + catch (e) { + await new Promise((resolve) => setTimeout(resolve, delayMs)); + } + } + return await toRetry(); + }; +}; +exports.retryWrapper = retryWrapper; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-cjs/index.browser.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-cjs/index.browser.js new file mode 100644 index 000000000..9300747a9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-cjs/index.browser.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromHttp = void 0; +var fromHttp_browser_1 = require("./fromHttp/fromHttp.browser"); +Object.defineProperty(exports, "fromHttp", { enumerable: true, get: function () { return fromHttp_browser_1.fromHttp; } }); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-cjs/index.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-cjs/index.js new file mode 100644 index 000000000..0286ea032 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-cjs/index.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromHttp = void 0; +var fromHttp_1 = require("./fromHttp/fromHttp"); +Object.defineProperty(exports, "fromHttp", { enumerable: true, get: function () { return fromHttp_1.fromHttp; } }); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/checkUrl.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/checkUrl.js new file mode 100644 index 000000000..2a42ed78b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/checkUrl.js @@ -0,0 +1,42 @@ +import { CredentialsProviderError } from "@smithy/property-provider"; +const LOOPBACK_CIDR_IPv4 = "127.0.0.0/8"; +const LOOPBACK_CIDR_IPv6 = "::1/128"; +const ECS_CONTAINER_HOST = "169.254.170.2"; +const EKS_CONTAINER_HOST_IPv4 = "169.254.170.23"; +const EKS_CONTAINER_HOST_IPv6 = "[fd00:ec2::23]"; +export const checkUrl = (url, logger) => { + if (url.protocol === "https:") { + return; + } + if (url.hostname === ECS_CONTAINER_HOST || + url.hostname === EKS_CONTAINER_HOST_IPv4 || + url.hostname === EKS_CONTAINER_HOST_IPv6) { + return; + } + if (url.hostname.includes("[")) { + if (url.hostname === "[::1]" || url.hostname === "[0000:0000:0000:0000:0000:0000:0000:0001]") { + return; + } + } + else { + if (url.hostname === "localhost") { + return; + } + const ipComponents = url.hostname.split("."); + const inRange = (component) => { + const num = parseInt(component, 10); + return 0 <= num && num <= 255; + }; + if (ipComponents[0] === "127" && + inRange(ipComponents[1]) && + inRange(ipComponents[2]) && + inRange(ipComponents[3]) && + ipComponents.length === 4) { + return; + } + } + throw new CredentialsProviderError(`URL not accepted. It must either be HTTPS or match one of the following: + - loopback CIDR 127.0.0.0/8 or [::1/128] + - ECS container host 169.254.170.2 + - EKS container host 169.254.170.23 or [fd00:ec2::23]`, { logger }); +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/fromHttp.browser.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/fromHttp.browser.js new file mode 100644 index 000000000..7189b9223 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/fromHttp.browser.js @@ -0,0 +1,27 @@ +import { FetchHttpHandler } from "@smithy/fetch-http-handler"; +import { CredentialsProviderError } from "@smithy/property-provider"; +import { checkUrl } from "./checkUrl"; +import { createGetRequest, getCredentials } from "./requestHelpers"; +import { retryWrapper } from "./retry-wrapper"; +export const fromHttp = (options = {}) => { + options.logger?.debug("@aws-sdk/credential-provider-http - fromHttp"); + let host; + const full = options.credentialsFullUri; + if (full) { + host = full; + } + else { + throw new CredentialsProviderError("No HTTP credential provider host provided.", { logger: options.logger }); + } + const url = new URL(host); + checkUrl(url, options.logger); + const requestHandler = new FetchHttpHandler(); + return retryWrapper(async () => { + const request = createGetRequest(url); + if (options.authorizationToken) { + request.headers.Authorization = options.authorizationToken; + } + const result = await requestHandler.handle(request); + return getCredentials(result.response); + }, options.maxRetries ?? 3, options.timeout ?? 1000); +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/fromHttp.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/fromHttp.js new file mode 100644 index 000000000..40b6a76a8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/fromHttp.js @@ -0,0 +1,65 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +import { NodeHttpHandler } from "@smithy/node-http-handler"; +import { CredentialsProviderError } from "@smithy/property-provider"; +import fs from "node:fs/promises"; +import { checkUrl } from "./checkUrl"; +import { createGetRequest, getCredentials } from "./requestHelpers"; +import { retryWrapper } from "./retry-wrapper"; +const AWS_CONTAINER_CREDENTIALS_RELATIVE_URI = "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"; +const DEFAULT_LINK_LOCAL_HOST = "http://169.254.170.2"; +const AWS_CONTAINER_CREDENTIALS_FULL_URI = "AWS_CONTAINER_CREDENTIALS_FULL_URI"; +const AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE = "AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE"; +const AWS_CONTAINER_AUTHORIZATION_TOKEN = "AWS_CONTAINER_AUTHORIZATION_TOKEN"; +export const fromHttp = (options = {}) => { + options.logger?.debug("@aws-sdk/credential-provider-http - fromHttp"); + let host; + const relative = options.awsContainerCredentialsRelativeUri ?? process.env[AWS_CONTAINER_CREDENTIALS_RELATIVE_URI]; + const full = options.awsContainerCredentialsFullUri ?? process.env[AWS_CONTAINER_CREDENTIALS_FULL_URI]; + const token = options.awsContainerAuthorizationToken ?? process.env[AWS_CONTAINER_AUTHORIZATION_TOKEN]; + const tokenFile = options.awsContainerAuthorizationTokenFile ?? process.env[AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE]; + const warn = options.logger?.constructor?.name === "NoOpLogger" || !options.logger?.warn + ? console.warn + : options.logger.warn.bind(options.logger); + if (relative && full) { + warn("@aws-sdk/credential-provider-http: " + + "you have set both awsContainerCredentialsRelativeUri and awsContainerCredentialsFullUri."); + warn("awsContainerCredentialsFullUri will take precedence."); + } + if (token && tokenFile) { + warn("@aws-sdk/credential-provider-http: " + + "you have set both awsContainerAuthorizationToken and awsContainerAuthorizationTokenFile."); + warn("awsContainerAuthorizationToken will take precedence."); + } + if (full) { + host = full; + } + else if (relative) { + host = `${DEFAULT_LINK_LOCAL_HOST}${relative}`; + } + else { + throw new CredentialsProviderError(`No HTTP credential provider host provided. +Set AWS_CONTAINER_CREDENTIALS_FULL_URI or AWS_CONTAINER_CREDENTIALS_RELATIVE_URI.`, { logger: options.logger }); + } + const url = new URL(host); + checkUrl(url, options.logger); + const requestHandler = NodeHttpHandler.create({ + requestTimeout: options.timeout ?? 1000, + connectionTimeout: options.timeout ?? 1000, + }); + return retryWrapper(async () => { + const request = createGetRequest(url); + if (token) { + request.headers.Authorization = token; + } + else if (tokenFile) { + request.headers.Authorization = (await fs.readFile(tokenFile)).toString(); + } + try { + const result = await requestHandler.handle(request); + return getCredentials(result.response).then((creds) => setCredentialFeature(creds, "CREDENTIALS_HTTP", "z")); + } + catch (e) { + throw new CredentialsProviderError(String(e), { logger: options.logger }); + } + }, options.maxRetries ?? 3, options.timeout ?? 1000); +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/fromHttpTypes.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/fromHttpTypes.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/fromHttpTypes.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/requestHelpers.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/requestHelpers.js new file mode 100644 index 000000000..9e271cea2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/requestHelpers.js @@ -0,0 +1,49 @@ +import { CredentialsProviderError } from "@smithy/property-provider"; +import { HttpRequest } from "@smithy/protocol-http"; +import { parseRfc3339DateTime } from "@smithy/smithy-client"; +import { sdkStreamMixin } from "@smithy/util-stream"; +export function createGetRequest(url) { + return new HttpRequest({ + protocol: url.protocol, + hostname: url.hostname, + port: Number(url.port), + path: url.pathname, + query: Array.from(url.searchParams.entries()).reduce((acc, [k, v]) => { + acc[k] = v; + return acc; + }, {}), + fragment: url.hash, + }); +} +export async function getCredentials(response, logger) { + const stream = sdkStreamMixin(response.body); + const str = await stream.transformToString(); + if (response.statusCode === 200) { + const parsed = JSON.parse(str); + if (typeof parsed.AccessKeyId !== "string" || + typeof parsed.SecretAccessKey !== "string" || + typeof parsed.Token !== "string" || + typeof parsed.Expiration !== "string") { + throw new CredentialsProviderError("HTTP credential provider response not of the required format, an object matching: " + + "{ AccessKeyId: string, SecretAccessKey: string, Token: string, Expiration: string(rfc3339) }", { logger }); + } + return { + accessKeyId: parsed.AccessKeyId, + secretAccessKey: parsed.SecretAccessKey, + sessionToken: parsed.Token, + expiration: parseRfc3339DateTime(parsed.Expiration), + }; + } + if (response.statusCode >= 400 && response.statusCode < 500) { + let parsedBody = {}; + try { + parsedBody = JSON.parse(str); + } + catch (e) { } + throw Object.assign(new CredentialsProviderError(`Server responded with status: ${response.statusCode}`, { logger }), { + Code: parsedBody.Code, + Message: parsedBody.Message, + }); + } + throw new CredentialsProviderError(`Server responded with status: ${response.statusCode}`, { logger }); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/retry-wrapper.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/retry-wrapper.js new file mode 100644 index 000000000..7006f3c0b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/retry-wrapper.js @@ -0,0 +1,13 @@ +export const retryWrapper = (toRetry, maxRetries, delayMs) => { + return async () => { + for (let i = 0; i < maxRetries; ++i) { + try { + return await toRetry(); + } + catch (e) { + await new Promise((resolve) => setTimeout(resolve, delayMs)); + } + } + return await toRetry(); + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-es/index.browser.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-es/index.browser.js new file mode 100644 index 000000000..98204c574 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-es/index.browser.js @@ -0,0 +1 @@ +export { fromHttp } from "./fromHttp/fromHttp.browser"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-es/index.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-es/index.js new file mode 100644 index 000000000..29113862d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-es/index.js @@ -0,0 +1 @@ +export { fromHttp } from "./fromHttp/fromHttp"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/checkUrl.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/checkUrl.d.ts new file mode 100644 index 000000000..8451855b1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/checkUrl.d.ts @@ -0,0 +1,9 @@ +import type { Logger } from "@smithy/types"; +/** + * @internal + * + * @param url - to be validated. + * @param logger - passed to CredentialsProviderError. + * @throws if not acceptable to this provider. + */ +export declare const checkUrl: (url: URL, logger?: Logger) => void; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/fromHttp.browser.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/fromHttp.browser.d.ts new file mode 100644 index 000000000..a4a94273b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/fromHttp.browser.d.ts @@ -0,0 +1,6 @@ +import type { AwsCredentialIdentityProvider } from "@smithy/types"; +import type { FromHttpOptions } from "./fromHttpTypes"; +/** + * Creates a provider that gets credentials via HTTP request. + */ +export declare const fromHttp: (options?: FromHttpOptions) => AwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/fromHttp.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/fromHttp.d.ts new file mode 100644 index 000000000..a4a94273b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/fromHttp.d.ts @@ -0,0 +1,6 @@ +import type { AwsCredentialIdentityProvider } from "@smithy/types"; +import type { FromHttpOptions } from "./fromHttpTypes"; +/** + * Creates a provider that gets credentials via HTTP request. + */ +export declare const fromHttp: (options?: FromHttpOptions) => AwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/fromHttpTypes.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/fromHttpTypes.d.ts new file mode 100644 index 000000000..b751dedfd --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/fromHttpTypes.d.ts @@ -0,0 +1,69 @@ +import type { CredentialProviderOptions } from "@aws-sdk/types"; +/** + * @public + * + * Input for the fromHttp function in the HTTP Credentials Provider for Node.js. + */ +export interface FromHttpOptions extends CredentialProviderOptions { + /** + * If this value is provided, it will be used as-is. + * + * For browser environments, use instead {@link credentialsFullUri}. + */ + awsContainerCredentialsFullUri?: string; + /** + * If this value is provided instead of the full URI, it + * will be appended to the default link local host of 169.254.170.2. + * + * Not supported in browsers. + */ + awsContainerCredentialsRelativeUri?: string; + /** + * Will be read on each credentials request to + * add an Authorization request header value. + * + * Not supported in browsers. + */ + awsContainerAuthorizationTokenFile?: string; + /** + * An alternative to awsContainerAuthorizationTokenFile, + * this is the token value itself. + * + * For browser environments, use instead {@link authorizationToken}. + */ + awsContainerAuthorizationToken?: string; + /** + * BROWSER ONLY. + * + * In browsers, a relative URI is not allowed, and a full URI must be provided. + * HTTPS is required. + * + * This value is required for the browser environment. + */ + credentialsFullUri?: string; + /** + * BROWSER ONLY. + * + * Providing this value will set an "Authorization" request + * header value on the GET request. + */ + authorizationToken?: string; + /** + * Default is 3 retry attempts or 4 total attempts. + */ + maxRetries?: number; + /** + * Default is 1000ms. Time in milliseconds to spend waiting between retry attempts. + */ + timeout?: number; +} +/** + * @public + */ +export type HttpProviderCredentials = { + AccessKeyId: string; + SecretAccessKey: string; + Token: string; + AccountId?: string; + Expiration: string; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/requestHelpers.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/requestHelpers.d.ts new file mode 100644 index 000000000..0ebd8d9d4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/requestHelpers.d.ts @@ -0,0 +1,11 @@ +import type { AwsCredentialIdentity } from "@aws-sdk/types"; +import { HttpRequest } from "@smithy/protocol-http"; +import type { HttpResponse, Logger } from "@smithy/types"; +/** + * @internal + */ +export declare function createGetRequest(url: URL): HttpRequest; +/** + * @internal + */ +export declare function getCredentials(response: HttpResponse, logger?: Logger): Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/retry-wrapper.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/retry-wrapper.d.ts new file mode 100644 index 000000000..bf63addd1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/retry-wrapper.d.ts @@ -0,0 +1,10 @@ +/** + * @internal + */ +export interface RetryableProvider { + (): Promise; +} +/** + * @internal + */ +export declare const retryWrapper: (toRetry: RetryableProvider, maxRetries: number, delayMs: number) => RetryableProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/index.browser.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/index.browser.d.ts new file mode 100644 index 000000000..2a9e4eca2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/index.browser.d.ts @@ -0,0 +1,2 @@ +export { fromHttp } from "./fromHttp/fromHttp.browser"; +export type { FromHttpOptions, HttpProviderCredentials } from "./fromHttp/fromHttpTypes"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/index.d.ts new file mode 100644 index 000000000..b1e99857d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/index.d.ts @@ -0,0 +1,2 @@ +export { fromHttp } from "./fromHttp/fromHttp"; +export type { FromHttpOptions, HttpProviderCredentials } from "./fromHttp/fromHttpTypes"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/checkUrl.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/checkUrl.d.ts new file mode 100644 index 000000000..9f518b0d2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/checkUrl.d.ts @@ -0,0 +1,2 @@ +import { Logger } from "@smithy/types"; +export declare const checkUrl: (url: URL, logger?: Logger) => void; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/fromHttp.browser.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/fromHttp.browser.d.ts new file mode 100644 index 000000000..00f1506ff --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/fromHttp.browser.d.ts @@ -0,0 +1,5 @@ +import { AwsCredentialIdentityProvider } from "@smithy/types"; +import { FromHttpOptions } from "./fromHttpTypes"; +export declare const fromHttp: ( + options?: FromHttpOptions +) => AwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/fromHttp.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/fromHttp.d.ts new file mode 100644 index 000000000..00f1506ff --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/fromHttp.d.ts @@ -0,0 +1,5 @@ +import { AwsCredentialIdentityProvider } from "@smithy/types"; +import { FromHttpOptions } from "./fromHttpTypes"; +export declare const fromHttp: ( + options?: FromHttpOptions +) => AwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/fromHttpTypes.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/fromHttpTypes.d.ts new file mode 100644 index 000000000..767b6b0b6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/fromHttpTypes.d.ts @@ -0,0 +1,18 @@ +import { CredentialProviderOptions } from "@aws-sdk/types"; +export interface FromHttpOptions extends CredentialProviderOptions { + awsContainerCredentialsFullUri?: string; + awsContainerCredentialsRelativeUri?: string; + awsContainerAuthorizationTokenFile?: string; + awsContainerAuthorizationToken?: string; + credentialsFullUri?: string; + authorizationToken?: string; + maxRetries?: number; + timeout?: number; +} +export type HttpProviderCredentials = { + AccessKeyId: string; + SecretAccessKey: string; + Token: string; + AccountId?: string; + Expiration: string; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/requestHelpers.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/requestHelpers.d.ts new file mode 100644 index 000000000..68a3285f9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/requestHelpers.d.ts @@ -0,0 +1,8 @@ +import { AwsCredentialIdentity } from "@aws-sdk/types"; +import { HttpRequest } from "@smithy/protocol-http"; +import { HttpResponse, Logger } from "@smithy/types"; +export declare function createGetRequest(url: URL): HttpRequest; +export declare function getCredentials( + response: HttpResponse, + logger?: Logger +): Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/retry-wrapper.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/retry-wrapper.d.ts new file mode 100644 index 000000000..f992038af --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/retry-wrapper.d.ts @@ -0,0 +1,8 @@ +export interface RetryableProvider { + (): Promise; +} +export declare const retryWrapper: ( + toRetry: RetryableProvider, + maxRetries: number, + delayMs: number +) => RetryableProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/index.browser.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/index.browser.d.ts new file mode 100644 index 000000000..40696b909 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/index.browser.d.ts @@ -0,0 +1,5 @@ +export { fromHttp } from "./fromHttp/fromHttp.browser"; +export { + FromHttpOptions, + HttpProviderCredentials, +} from "./fromHttp/fromHttpTypes"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..560256f7c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/index.d.ts @@ -0,0 +1,5 @@ +export { fromHttp } from "./fromHttp/fromHttp"; +export { + FromHttpOptions, + HttpProviderCredentials, +} from "./fromHttp/fromHttpTypes"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/package.json b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/package.json new file mode 100644 index 000000000..0b68b3dd2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-http/package.json @@ -0,0 +1,70 @@ +{ + "name": "@aws-sdk/credential-provider-http", + "version": "3.972.20", + "description": "AWS credential provider for containers and HTTP sources", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "browser": "./dist-es/index.browser.js", + "react-native": "./dist-es/index.browser.js", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline credential-provider-http", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "keywords": [ + "aws", + "credentials" + ], + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/types": "^3.973.6", + "@smithy/fetch-http-handler": "^5.3.15", + "@smithy/node-http-handler": "^4.4.16", + "@smithy/property-provider": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/smithy-client": "^4.12.5", + "@smithy/types": "^4.13.1", + "@smithy/util-stream": "^4.5.19", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "@types/node": "^20.14.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/credential-provider-http", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/credential-provider-http" + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/LICENSE b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/README.md b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/README.md new file mode 100644 index 000000000..b4f3af1b9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/README.md @@ -0,0 +1,11 @@ +# @aws-sdk/credential-provider-ini + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/credential-provider-ini/latest.svg)](https://www.npmjs.com/package/@aws-sdk/credential-provider-ini) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/credential-provider-ini.svg)](https://www.npmjs.com/package/@aws-sdk/credential-provider-ini) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. Please use [@aws-sdk/credential-providers](https://www.npmjs.com/package/@aws-sdk/credential-providers) +instead. diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-cjs/index.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-cjs/index.js new file mode 100644 index 000000000..6fe2f31d2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-cjs/index.js @@ -0,0 +1,224 @@ +'use strict'; + +var sharedIniFileLoader = require('@smithy/shared-ini-file-loader'); +var propertyProvider = require('@smithy/property-provider'); +var client = require('@aws-sdk/core/client'); +var credentialProviderLogin = require('@aws-sdk/credential-provider-login'); + +const resolveCredentialSource = (credentialSource, profileName, logger) => { + const sourceProvidersMap = { + EcsContainer: async (options) => { + const { fromHttp } = await import('@aws-sdk/credential-provider-http'); + const { fromContainerMetadata } = await import('@smithy/credential-provider-imds'); + logger?.debug("@aws-sdk/credential-provider-ini - credential_source is EcsContainer"); + return async () => propertyProvider.chain(fromHttp(options ?? {}), fromContainerMetadata(options))().then(setNamedProvider); + }, + Ec2InstanceMetadata: async (options) => { + logger?.debug("@aws-sdk/credential-provider-ini - credential_source is Ec2InstanceMetadata"); + const { fromInstanceMetadata } = await import('@smithy/credential-provider-imds'); + return async () => fromInstanceMetadata(options)().then(setNamedProvider); + }, + Environment: async (options) => { + logger?.debug("@aws-sdk/credential-provider-ini - credential_source is Environment"); + const { fromEnv } = await import('@aws-sdk/credential-provider-env'); + return async () => fromEnv(options)().then(setNamedProvider); + }, + }; + if (credentialSource in sourceProvidersMap) { + return sourceProvidersMap[credentialSource]; + } + else { + throw new propertyProvider.CredentialsProviderError(`Unsupported credential source in profile ${profileName}. Got ${credentialSource}, ` + + `expected EcsContainer or Ec2InstanceMetadata or Environment.`, { logger }); + } +}; +const setNamedProvider = (creds) => client.setCredentialFeature(creds, "CREDENTIALS_PROFILE_NAMED_PROVIDER", "p"); + +const isAssumeRoleProfile = (arg, { profile = "default", logger } = {}) => { + return (Boolean(arg) && + typeof arg === "object" && + typeof arg.role_arn === "string" && + ["undefined", "string"].indexOf(typeof arg.role_session_name) > -1 && + ["undefined", "string"].indexOf(typeof arg.external_id) > -1 && + ["undefined", "string"].indexOf(typeof arg.mfa_serial) > -1 && + (isAssumeRoleWithSourceProfile(arg, { profile, logger }) || isCredentialSourceProfile(arg, { profile, logger }))); +}; +const isAssumeRoleWithSourceProfile = (arg, { profile, logger }) => { + const withSourceProfile = typeof arg.source_profile === "string" && typeof arg.credential_source === "undefined"; + if (withSourceProfile) { + logger?.debug?.(` ${profile} isAssumeRoleWithSourceProfile source_profile=${arg.source_profile}`); + } + return withSourceProfile; +}; +const isCredentialSourceProfile = (arg, { profile, logger }) => { + const withProviderProfile = typeof arg.credential_source === "string" && typeof arg.source_profile === "undefined"; + if (withProviderProfile) { + logger?.debug?.(` ${profile} isCredentialSourceProfile credential_source=${arg.credential_source}`); + } + return withProviderProfile; +}; +const resolveAssumeRoleCredentials = async (profileName, profiles, options, callerClientConfig, visitedProfiles = {}, resolveProfileData) => { + options.logger?.debug("@aws-sdk/credential-provider-ini - resolveAssumeRoleCredentials (STS)"); + const profileData = profiles[profileName]; + const { source_profile, region } = profileData; + if (!options.roleAssumer) { + const { getDefaultRoleAssumer } = await import('@aws-sdk/nested-clients/sts'); + options.roleAssumer = getDefaultRoleAssumer({ + ...options.clientConfig, + credentialProviderLogger: options.logger, + parentClientConfig: { + ...callerClientConfig, + ...options?.parentClientConfig, + region: region ?? options?.parentClientConfig?.region ?? callerClientConfig?.region, + }, + }, options.clientPlugins); + } + if (source_profile && source_profile in visitedProfiles) { + throw new propertyProvider.CredentialsProviderError(`Detected a cycle attempting to resolve credentials for profile` + + ` ${sharedIniFileLoader.getProfileName(options)}. Profiles visited: ` + + Object.keys(visitedProfiles).join(", "), { logger: options.logger }); + } + options.logger?.debug(`@aws-sdk/credential-provider-ini - finding credential resolver using ${source_profile ? `source_profile=[${source_profile}]` : `profile=[${profileName}]`}`); + const sourceCredsProvider = source_profile + ? resolveProfileData(source_profile, profiles, options, callerClientConfig, { + ...visitedProfiles, + [source_profile]: true, + }, isCredentialSourceWithoutRoleArn(profiles[source_profile] ?? {})) + : (await resolveCredentialSource(profileData.credential_source, profileName, options.logger)(options))(); + if (isCredentialSourceWithoutRoleArn(profileData)) { + return sourceCredsProvider.then((creds) => client.setCredentialFeature(creds, "CREDENTIALS_PROFILE_SOURCE_PROFILE", "o")); + } + else { + const params = { + RoleArn: profileData.role_arn, + RoleSessionName: profileData.role_session_name || `aws-sdk-js-${Date.now()}`, + ExternalId: profileData.external_id, + DurationSeconds: parseInt(profileData.duration_seconds || "3600", 10), + }; + const { mfa_serial } = profileData; + if (mfa_serial) { + if (!options.mfaCodeProvider) { + throw new propertyProvider.CredentialsProviderError(`Profile ${profileName} requires multi-factor authentication, but no MFA code callback was provided.`, { logger: options.logger, tryNextLink: false }); + } + params.SerialNumber = mfa_serial; + params.TokenCode = await options.mfaCodeProvider(mfa_serial); + } + const sourceCreds = await sourceCredsProvider; + return options.roleAssumer(sourceCreds, params).then((creds) => client.setCredentialFeature(creds, "CREDENTIALS_PROFILE_SOURCE_PROFILE", "o")); + } +}; +const isCredentialSourceWithoutRoleArn = (section) => { + return !section.role_arn && !!section.credential_source; +}; + +const isLoginProfile = (data) => { + return Boolean(data && data.login_session); +}; +const resolveLoginCredentials = async (profileName, options, callerClientConfig) => { + const credentials = await credentialProviderLogin.fromLoginCredentials({ + ...options, + profile: profileName, + })({ callerClientConfig }); + return client.setCredentialFeature(credentials, "CREDENTIALS_PROFILE_LOGIN", "AC"); +}; + +const isProcessProfile = (arg) => Boolean(arg) && typeof arg === "object" && typeof arg.credential_process === "string"; +const resolveProcessCredentials = async (options, profile) => import('@aws-sdk/credential-provider-process').then(({ fromProcess }) => fromProcess({ + ...options, + profile, +})().then((creds) => client.setCredentialFeature(creds, "CREDENTIALS_PROFILE_PROCESS", "v"))); + +const resolveSsoCredentials = async (profile, profileData, options = {}, callerClientConfig) => { + const { fromSSO } = await import('@aws-sdk/credential-provider-sso'); + return fromSSO({ + profile, + logger: options.logger, + parentClientConfig: options.parentClientConfig, + clientConfig: options.clientConfig, + })({ + callerClientConfig, + }).then((creds) => { + if (profileData.sso_session) { + return client.setCredentialFeature(creds, "CREDENTIALS_PROFILE_SSO", "r"); + } + else { + return client.setCredentialFeature(creds, "CREDENTIALS_PROFILE_SSO_LEGACY", "t"); + } + }); +}; +const isSsoProfile = (arg) => arg && + (typeof arg.sso_start_url === "string" || + typeof arg.sso_account_id === "string" || + typeof arg.sso_session === "string" || + typeof arg.sso_region === "string" || + typeof arg.sso_role_name === "string"); + +const isStaticCredsProfile = (arg) => Boolean(arg) && + typeof arg === "object" && + typeof arg.aws_access_key_id === "string" && + typeof arg.aws_secret_access_key === "string" && + ["undefined", "string"].indexOf(typeof arg.aws_session_token) > -1 && + ["undefined", "string"].indexOf(typeof arg.aws_account_id) > -1; +const resolveStaticCredentials = async (profile, options) => { + options?.logger?.debug("@aws-sdk/credential-provider-ini - resolveStaticCredentials"); + const credentials = { + accessKeyId: profile.aws_access_key_id, + secretAccessKey: profile.aws_secret_access_key, + sessionToken: profile.aws_session_token, + ...(profile.aws_credential_scope && { credentialScope: profile.aws_credential_scope }), + ...(profile.aws_account_id && { accountId: profile.aws_account_id }), + }; + return client.setCredentialFeature(credentials, "CREDENTIALS_PROFILE", "n"); +}; + +const isWebIdentityProfile = (arg) => Boolean(arg) && + typeof arg === "object" && + typeof arg.web_identity_token_file === "string" && + typeof arg.role_arn === "string" && + ["undefined", "string"].indexOf(typeof arg.role_session_name) > -1; +const resolveWebIdentityCredentials = async (profile, options, callerClientConfig) => import('@aws-sdk/credential-provider-web-identity').then(({ fromTokenFile }) => fromTokenFile({ + webIdentityTokenFile: profile.web_identity_token_file, + roleArn: profile.role_arn, + roleSessionName: profile.role_session_name, + roleAssumerWithWebIdentity: options.roleAssumerWithWebIdentity, + logger: options.logger, + parentClientConfig: options.parentClientConfig, +})({ + callerClientConfig, +}).then((creds) => client.setCredentialFeature(creds, "CREDENTIALS_PROFILE_STS_WEB_ID_TOKEN", "q"))); + +const resolveProfileData = async (profileName, profiles, options, callerClientConfig, visitedProfiles = {}, isAssumeRoleRecursiveCall = false) => { + const data = profiles[profileName]; + if (Object.keys(visitedProfiles).length > 0 && isStaticCredsProfile(data)) { + return resolveStaticCredentials(data, options); + } + if (isAssumeRoleRecursiveCall || isAssumeRoleProfile(data, { profile: profileName, logger: options.logger })) { + return resolveAssumeRoleCredentials(profileName, profiles, options, callerClientConfig, visitedProfiles, resolveProfileData); + } + if (isStaticCredsProfile(data)) { + return resolveStaticCredentials(data, options); + } + if (isWebIdentityProfile(data)) { + return resolveWebIdentityCredentials(data, options, callerClientConfig); + } + if (isProcessProfile(data)) { + return resolveProcessCredentials(options, profileName); + } + if (isSsoProfile(data)) { + return await resolveSsoCredentials(profileName, data, options, callerClientConfig); + } + if (isLoginProfile(data)) { + return resolveLoginCredentials(profileName, options, callerClientConfig); + } + throw new propertyProvider.CredentialsProviderError(`Could not resolve credentials using profile: [${profileName}] in configuration/credentials file(s).`, { logger: options.logger }); +}; + +const fromIni = (init = {}) => async ({ callerClientConfig } = {}) => { + init.logger?.debug("@aws-sdk/credential-provider-ini - fromIni"); + const profiles = await sharedIniFileLoader.parseKnownFiles(init); + return resolveProfileData(sharedIniFileLoader.getProfileName({ + profile: init.profile ?? callerClientConfig?.profile, + }), profiles, init, callerClientConfig); +}; + +exports.fromIni = fromIni; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-es/fromIni.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-es/fromIni.js new file mode 100644 index 000000000..b79b4fb3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-es/fromIni.js @@ -0,0 +1,9 @@ +import { getProfileName, parseKnownFiles } from "@smithy/shared-ini-file-loader"; +import { resolveProfileData } from "./resolveProfileData"; +export const fromIni = (init = {}) => async ({ callerClientConfig } = {}) => { + init.logger?.debug("@aws-sdk/credential-provider-ini - fromIni"); + const profiles = await parseKnownFiles(init); + return resolveProfileData(getProfileName({ + profile: init.profile ?? callerClientConfig?.profile, + }), profiles, init, callerClientConfig); +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-es/index.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-es/index.js new file mode 100644 index 000000000..b01913159 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-es/index.js @@ -0,0 +1 @@ +export * from "./fromIni"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveAssumeRoleCredentials.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveAssumeRoleCredentials.js new file mode 100644 index 000000000..6258240ea --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveAssumeRoleCredentials.js @@ -0,0 +1,80 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +import { CredentialsProviderError } from "@smithy/property-provider"; +import { getProfileName } from "@smithy/shared-ini-file-loader"; +import { resolveCredentialSource } from "./resolveCredentialSource"; +export const isAssumeRoleProfile = (arg, { profile = "default", logger } = {}) => { + return (Boolean(arg) && + typeof arg === "object" && + typeof arg.role_arn === "string" && + ["undefined", "string"].indexOf(typeof arg.role_session_name) > -1 && + ["undefined", "string"].indexOf(typeof arg.external_id) > -1 && + ["undefined", "string"].indexOf(typeof arg.mfa_serial) > -1 && + (isAssumeRoleWithSourceProfile(arg, { profile, logger }) || isCredentialSourceProfile(arg, { profile, logger }))); +}; +const isAssumeRoleWithSourceProfile = (arg, { profile, logger }) => { + const withSourceProfile = typeof arg.source_profile === "string" && typeof arg.credential_source === "undefined"; + if (withSourceProfile) { + logger?.debug?.(` ${profile} isAssumeRoleWithSourceProfile source_profile=${arg.source_profile}`); + } + return withSourceProfile; +}; +const isCredentialSourceProfile = (arg, { profile, logger }) => { + const withProviderProfile = typeof arg.credential_source === "string" && typeof arg.source_profile === "undefined"; + if (withProviderProfile) { + logger?.debug?.(` ${profile} isCredentialSourceProfile credential_source=${arg.credential_source}`); + } + return withProviderProfile; +}; +export const resolveAssumeRoleCredentials = async (profileName, profiles, options, callerClientConfig, visitedProfiles = {}, resolveProfileData) => { + options.logger?.debug("@aws-sdk/credential-provider-ini - resolveAssumeRoleCredentials (STS)"); + const profileData = profiles[profileName]; + const { source_profile, region } = profileData; + if (!options.roleAssumer) { + const { getDefaultRoleAssumer } = await import("@aws-sdk/nested-clients/sts"); + options.roleAssumer = getDefaultRoleAssumer({ + ...options.clientConfig, + credentialProviderLogger: options.logger, + parentClientConfig: { + ...callerClientConfig, + ...options?.parentClientConfig, + region: region ?? options?.parentClientConfig?.region ?? callerClientConfig?.region, + }, + }, options.clientPlugins); + } + if (source_profile && source_profile in visitedProfiles) { + throw new CredentialsProviderError(`Detected a cycle attempting to resolve credentials for profile` + + ` ${getProfileName(options)}. Profiles visited: ` + + Object.keys(visitedProfiles).join(", "), { logger: options.logger }); + } + options.logger?.debug(`@aws-sdk/credential-provider-ini - finding credential resolver using ${source_profile ? `source_profile=[${source_profile}]` : `profile=[${profileName}]`}`); + const sourceCredsProvider = source_profile + ? resolveProfileData(source_profile, profiles, options, callerClientConfig, { + ...visitedProfiles, + [source_profile]: true, + }, isCredentialSourceWithoutRoleArn(profiles[source_profile] ?? {})) + : (await resolveCredentialSource(profileData.credential_source, profileName, options.logger)(options))(); + if (isCredentialSourceWithoutRoleArn(profileData)) { + return sourceCredsProvider.then((creds) => setCredentialFeature(creds, "CREDENTIALS_PROFILE_SOURCE_PROFILE", "o")); + } + else { + const params = { + RoleArn: profileData.role_arn, + RoleSessionName: profileData.role_session_name || `aws-sdk-js-${Date.now()}`, + ExternalId: profileData.external_id, + DurationSeconds: parseInt(profileData.duration_seconds || "3600", 10), + }; + const { mfa_serial } = profileData; + if (mfa_serial) { + if (!options.mfaCodeProvider) { + throw new CredentialsProviderError(`Profile ${profileName} requires multi-factor authentication, but no MFA code callback was provided.`, { logger: options.logger, tryNextLink: false }); + } + params.SerialNumber = mfa_serial; + params.TokenCode = await options.mfaCodeProvider(mfa_serial); + } + const sourceCreds = await sourceCredsProvider; + return options.roleAssumer(sourceCreds, params).then((creds) => setCredentialFeature(creds, "CREDENTIALS_PROFILE_SOURCE_PROFILE", "o")); + } +}; +const isCredentialSourceWithoutRoleArn = (section) => { + return !section.role_arn && !!section.credential_source; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveCredentialSource.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveCredentialSource.js new file mode 100644 index 000000000..b004933ee --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveCredentialSource.js @@ -0,0 +1,30 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +import { chain, CredentialsProviderError } from "@smithy/property-provider"; +export const resolveCredentialSource = (credentialSource, profileName, logger) => { + const sourceProvidersMap = { + EcsContainer: async (options) => { + const { fromHttp } = await import("@aws-sdk/credential-provider-http"); + const { fromContainerMetadata } = await import("@smithy/credential-provider-imds"); + logger?.debug("@aws-sdk/credential-provider-ini - credential_source is EcsContainer"); + return async () => chain(fromHttp(options ?? {}), fromContainerMetadata(options))().then(setNamedProvider); + }, + Ec2InstanceMetadata: async (options) => { + logger?.debug("@aws-sdk/credential-provider-ini - credential_source is Ec2InstanceMetadata"); + const { fromInstanceMetadata } = await import("@smithy/credential-provider-imds"); + return async () => fromInstanceMetadata(options)().then(setNamedProvider); + }, + Environment: async (options) => { + logger?.debug("@aws-sdk/credential-provider-ini - credential_source is Environment"); + const { fromEnv } = await import("@aws-sdk/credential-provider-env"); + return async () => fromEnv(options)().then(setNamedProvider); + }, + }; + if (credentialSource in sourceProvidersMap) { + return sourceProvidersMap[credentialSource]; + } + else { + throw new CredentialsProviderError(`Unsupported credential source in profile ${profileName}. Got ${credentialSource}, ` + + `expected EcsContainer or Ec2InstanceMetadata or Environment.`, { logger }); + } +}; +const setNamedProvider = (creds) => setCredentialFeature(creds, "CREDENTIALS_PROFILE_NAMED_PROVIDER", "p"); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveLoginCredentials.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveLoginCredentials.js new file mode 100644 index 000000000..845b6a12b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveLoginCredentials.js @@ -0,0 +1,12 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +import { fromLoginCredentials } from "@aws-sdk/credential-provider-login"; +export const isLoginProfile = (data) => { + return Boolean(data && data.login_session); +}; +export const resolveLoginCredentials = async (profileName, options, callerClientConfig) => { + const credentials = await fromLoginCredentials({ + ...options, + profile: profileName, + })({ callerClientConfig }); + return setCredentialFeature(credentials, "CREDENTIALS_PROFILE_LOGIN", "AC"); +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveProcessCredentials.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveProcessCredentials.js new file mode 100644 index 000000000..5a9f9753c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveProcessCredentials.js @@ -0,0 +1,6 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +export const isProcessProfile = (arg) => Boolean(arg) && typeof arg === "object" && typeof arg.credential_process === "string"; +export const resolveProcessCredentials = async (options, profile) => import("@aws-sdk/credential-provider-process").then(({ fromProcess }) => fromProcess({ + ...options, + profile, +})().then((creds) => setCredentialFeature(creds, "CREDENTIALS_PROFILE_PROCESS", "v"))); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveProfileData.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveProfileData.js new file mode 100644 index 000000000..c0d15473e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveProfileData.js @@ -0,0 +1,32 @@ +import { CredentialsProviderError } from "@smithy/property-provider"; +import { isAssumeRoleProfile, resolveAssumeRoleCredentials } from "./resolveAssumeRoleCredentials"; +import { isLoginProfile, resolveLoginCredentials } from "./resolveLoginCredentials"; +import { isProcessProfile, resolveProcessCredentials } from "./resolveProcessCredentials"; +import { isSsoProfile, resolveSsoCredentials } from "./resolveSsoCredentials"; +import { isStaticCredsProfile, resolveStaticCredentials } from "./resolveStaticCredentials"; +import { isWebIdentityProfile, resolveWebIdentityCredentials } from "./resolveWebIdentityCredentials"; +export const resolveProfileData = async (profileName, profiles, options, callerClientConfig, visitedProfiles = {}, isAssumeRoleRecursiveCall = false) => { + const data = profiles[profileName]; + if (Object.keys(visitedProfiles).length > 0 && isStaticCredsProfile(data)) { + return resolveStaticCredentials(data, options); + } + if (isAssumeRoleRecursiveCall || isAssumeRoleProfile(data, { profile: profileName, logger: options.logger })) { + return resolveAssumeRoleCredentials(profileName, profiles, options, callerClientConfig, visitedProfiles, resolveProfileData); + } + if (isStaticCredsProfile(data)) { + return resolveStaticCredentials(data, options); + } + if (isWebIdentityProfile(data)) { + return resolveWebIdentityCredentials(data, options, callerClientConfig); + } + if (isProcessProfile(data)) { + return resolveProcessCredentials(options, profileName); + } + if (isSsoProfile(data)) { + return await resolveSsoCredentials(profileName, data, options, callerClientConfig); + } + if (isLoginProfile(data)) { + return resolveLoginCredentials(profileName, options, callerClientConfig); + } + throw new CredentialsProviderError(`Could not resolve credentials using profile: [${profileName}] in configuration/credentials file(s).`, { logger: options.logger }); +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveSsoCredentials.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveSsoCredentials.js new file mode 100644 index 000000000..3e81627aa --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveSsoCredentials.js @@ -0,0 +1,25 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +export const resolveSsoCredentials = async (profile, profileData, options = {}, callerClientConfig) => { + const { fromSSO } = await import("@aws-sdk/credential-provider-sso"); + return fromSSO({ + profile, + logger: options.logger, + parentClientConfig: options.parentClientConfig, + clientConfig: options.clientConfig, + })({ + callerClientConfig, + }).then((creds) => { + if (profileData.sso_session) { + return setCredentialFeature(creds, "CREDENTIALS_PROFILE_SSO", "r"); + } + else { + return setCredentialFeature(creds, "CREDENTIALS_PROFILE_SSO_LEGACY", "t"); + } + }); +}; +export const isSsoProfile = (arg) => arg && + (typeof arg.sso_start_url === "string" || + typeof arg.sso_account_id === "string" || + typeof arg.sso_session === "string" || + typeof arg.sso_region === "string" || + typeof arg.sso_role_name === "string"); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveStaticCredentials.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveStaticCredentials.js new file mode 100644 index 000000000..c04435fa6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveStaticCredentials.js @@ -0,0 +1,18 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +export const isStaticCredsProfile = (arg) => Boolean(arg) && + typeof arg === "object" && + typeof arg.aws_access_key_id === "string" && + typeof arg.aws_secret_access_key === "string" && + ["undefined", "string"].indexOf(typeof arg.aws_session_token) > -1 && + ["undefined", "string"].indexOf(typeof arg.aws_account_id) > -1; +export const resolveStaticCredentials = async (profile, options) => { + options?.logger?.debug("@aws-sdk/credential-provider-ini - resolveStaticCredentials"); + const credentials = { + accessKeyId: profile.aws_access_key_id, + secretAccessKey: profile.aws_secret_access_key, + sessionToken: profile.aws_session_token, + ...(profile.aws_credential_scope && { credentialScope: profile.aws_credential_scope }), + ...(profile.aws_account_id && { accountId: profile.aws_account_id }), + }; + return setCredentialFeature(credentials, "CREDENTIALS_PROFILE", "n"); +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveWebIdentityCredentials.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveWebIdentityCredentials.js new file mode 100644 index 000000000..102e2fce4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveWebIdentityCredentials.js @@ -0,0 +1,16 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +export const isWebIdentityProfile = (arg) => Boolean(arg) && + typeof arg === "object" && + typeof arg.web_identity_token_file === "string" && + typeof arg.role_arn === "string" && + ["undefined", "string"].indexOf(typeof arg.role_session_name) > -1; +export const resolveWebIdentityCredentials = async (profile, options, callerClientConfig) => import("@aws-sdk/credential-provider-web-identity").then(({ fromTokenFile }) => fromTokenFile({ + webIdentityTokenFile: profile.web_identity_token_file, + roleArn: profile.role_arn, + roleSessionName: profile.role_session_name, + roleAssumerWithWebIdentity: options.roleAssumerWithWebIdentity, + logger: options.logger, + parentClientConfig: options.parentClientConfig, +})({ + callerClientConfig, +}).then((creds) => setCredentialFeature(creds, "CREDENTIALS_PROFILE_STS_WEB_ID_TOKEN", "q"))); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/fromIni.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/fromIni.d.ts new file mode 100644 index 000000000..90e795f3d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/fromIni.d.ts @@ -0,0 +1,55 @@ +import type { FromLoginCredentialsInit } from "@aws-sdk/credential-provider-login"; +import type { AssumeRoleWithWebIdentityParams } from "@aws-sdk/credential-provider-web-identity"; +import type { CredentialProviderOptions, RuntimeConfigAwsCredentialIdentityProvider } from "@aws-sdk/types"; +import type { SourceProfileInit } from "@smithy/shared-ini-file-loader"; +import type { AwsCredentialIdentity, Pluggable } from "@smithy/types"; +import type { AssumeRoleParams } from "./resolveAssumeRoleCredentials"; +/** + * @public + */ +export interface FromIniInit extends SourceProfileInit, CredentialProviderOptions, FromLoginCredentialsInit { + /** + * A function that returns a promise fulfilled with an MFA token code for + * the provided MFA Serial code. If a profile requires an MFA code and + * `mfaCodeProvider` is not a valid function, the credential provider + * promise will be rejected. + * + * @param mfaSerial The serial code of the MFA device specified. + */ + mfaCodeProvider?: (mfaSerial: string) => Promise; + /** + * A function that assumes a role and returns a promise fulfilled with + * credentials for the assumed role. + * + * @param sourceCreds The credentials with which to assume a role. + * @param params + */ + roleAssumer?: (sourceCreds: AwsCredentialIdentity, params: AssumeRoleParams) => Promise; + /** + * A function that assumes a role with web identity and returns a promise fulfilled with + * credentials for the assumed role. + * + * @param sourceCreds The credentials with which to assume a role. + * @param params + */ + roleAssumerWithWebIdentity?: (params: AssumeRoleWithWebIdentityParams) => Promise; + /** + * AWS SDK Client configuration to be used for creating inner client + * for auth operations. Inner clients include STS, SSO, and Signin clients. + * @internal + */ + clientConfig?: any; + clientPlugins?: Pluggable[]; + /** + * When true, always reload credentials from the file system instead of using cached values. + * This is useful when you need to detect changes to the credentials file. + */ + ignoreCache?: boolean; +} +/** + * @internal + * + * Creates a credential provider that will read from ini files and supports + * role assumption and multi-factor authentication. + */ +export declare const fromIni: (init?: FromIniInit) => RuntimeConfigAwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/index.d.ts new file mode 100644 index 000000000..75680c07e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export * from "./fromIni"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveAssumeRoleCredentials.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveAssumeRoleCredentials.d.ts new file mode 100644 index 000000000..1b73de6d8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveAssumeRoleCredentials.d.ts @@ -0,0 +1,48 @@ +import type { AwsIdentityProperties } from "@aws-sdk/types"; +import type { Logger, ParsedIniData } from "@smithy/types"; +import type { FromIniInit } from "./fromIni"; +import type { ResolveProfileData } from "./resolveProfileData"; +/** + * @internal + * + * @see https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/sts/command/AssumeRoleCommand/ + */ +export interface AssumeRoleParams { + /** + * The identifier of the role to be assumed. + */ + RoleArn: string; + /** + * A name for the assumed role session. + */ + RoleSessionName: string; + /** + * A unique identifier that is used by third parties when assuming roles in + * their customers' accounts. + */ + ExternalId?: string; + /** + * The identification number of the MFA device that is associated with the + * user who is making the `AssumeRole` call. + */ + SerialNumber?: string; + /** + * The value provided by the MFA device. + */ + TokenCode?: string; + /** + * The duration, in seconds, of the role session. + */ + DurationSeconds?: number; +} +/** + * @internal + */ +export declare const isAssumeRoleProfile: (arg: any, { profile, logger }?: { + profile?: string; + logger?: Logger; +}) => boolean; +/** + * @internal + */ +export declare const resolveAssumeRoleCredentials: (profileName: string, profiles: ParsedIniData, options: FromIniInit, callerClientConfig: AwsIdentityProperties["callerClientConfig"] | undefined, visitedProfiles: Record | undefined, resolveProfileData: ResolveProfileData) => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveCredentialSource.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveCredentialSource.d.ts new file mode 100644 index 000000000..0746bd222 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveCredentialSource.d.ts @@ -0,0 +1,12 @@ +import type { CredentialProviderOptions } from "@aws-sdk/types"; +import type { AwsCredentialIdentityProvider, Logger } from "@smithy/types"; +/** + * @internal + * + * Resolve the `credential_source` entry from the profile, and return the + * credential providers respectively. No memoization is needed for the + * credential source providers because memoization should be added outside the + * fromIni() provider. The source credential needs to be refreshed every time + * fromIni() is called. + */ +export declare const resolveCredentialSource: (credentialSource: string, profileName: string, logger?: Logger) => ((options?: CredentialProviderOptions) => Promise); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveLoginCredentials.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveLoginCredentials.d.ts new file mode 100644 index 000000000..ab4d27605 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveLoginCredentials.d.ts @@ -0,0 +1,11 @@ +import type { AwsIdentityProperties } from "@aws-sdk/types"; +import type { AwsCredentialIdentity, ParsedIniData } from "@smithy/types"; +import type { FromIniInit } from "./fromIni"; +/** + * @internal + */ +export declare const isLoginProfile: (data: ParsedIniData[string]) => boolean; +/** + * @internal + */ +export declare const resolveLoginCredentials: (profileName: string, options: FromIniInit, callerClientConfig?: AwsIdentityProperties["callerClientConfig"]) => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveProcessCredentials.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveProcessCredentials.d.ts new file mode 100644 index 000000000..1aa4c1cee --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveProcessCredentials.d.ts @@ -0,0 +1,16 @@ +import type { Credentials, Profile } from "@aws-sdk/types"; +import type { FromIniInit } from "./fromIni"; +/** + * @internal + */ +export interface ProcessProfile extends Profile { + credential_process: string; +} +/** + * @internal + */ +export declare const isProcessProfile: (arg: any) => arg is ProcessProfile; +/** + * @internal + */ +export declare const resolveProcessCredentials: (options: FromIniInit, profile: string) => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveProfileData.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveProfileData.d.ts new file mode 100644 index 000000000..4b0c730b4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveProfileData.d.ts @@ -0,0 +1,19 @@ +import type { AwsIdentityProperties } from "@aws-sdk/types"; +import type { AwsCredentialIdentity, ParsedIniData } from "@smithy/types"; +import type { FromIniInit } from "./fromIni"; +/** + * @internal + */ +export type ResolveProfileData = typeof resolveProfileData; +/** + * @internal + */ +export declare const resolveProfileData: (profileName: string, profiles: ParsedIniData, options: FromIniInit, callerClientConfig?: AwsIdentityProperties["callerClientConfig"], visitedProfiles?: Record, +/** + * This override comes from recursive calls only. + * It is used to flag a recursive profile section + * that does not have a role_arn, e.g. a credential_source + * with no role_arn, as part of a larger recursive assume-role + * call stack, and to re-enter the assume-role resolver function. + */ +isAssumeRoleRecursiveCall?: boolean) => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveSsoCredentials.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveSsoCredentials.d.ts new file mode 100644 index 000000000..51c9148a3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveSsoCredentials.d.ts @@ -0,0 +1,13 @@ +import type { SsoProfile } from "@aws-sdk/credential-provider-sso"; +import type { AwsIdentityProperties } from "@aws-sdk/types"; +import type { IniSection, Profile } from "@smithy/types"; +import type { FromIniInit } from "./fromIni"; +/** + * @internal + */ +export declare const resolveSsoCredentials: (profile: string, profileData: IniSection, options?: FromIniInit, callerClientConfig?: AwsIdentityProperties["callerClientConfig"]) => Promise; +/** + * @internal + * duplicated from \@aws-sdk/credential-provider-sso to defer import. + */ +export declare const isSsoProfile: (arg: Profile) => arg is Partial; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveStaticCredentials.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveStaticCredentials.d.ts new file mode 100644 index 000000000..d1464b9ca --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveStaticCredentials.d.ts @@ -0,0 +1,20 @@ +import type { AwsCredentialIdentity, Profile } from "@smithy/types"; +import type { FromIniInit } from "./fromIni"; +/** + * @internal + */ +export interface StaticCredsProfile extends Profile { + aws_access_key_id: string; + aws_secret_access_key: string; + aws_session_token?: string; + aws_credential_scope?: string; + aws_account_id?: string; +} +/** + * @internal + */ +export declare const isStaticCredsProfile: (arg: any) => arg is StaticCredsProfile; +/** + * @internal + */ +export declare const resolveStaticCredentials: (profile: StaticCredsProfile, options?: FromIniInit) => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveWebIdentityCredentials.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveWebIdentityCredentials.d.ts new file mode 100644 index 000000000..c8c1a3575 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveWebIdentityCredentials.d.ts @@ -0,0 +1,19 @@ +import type { AwsIdentityProperties } from "@aws-sdk/types"; +import type { AwsCredentialIdentity, Profile } from "@smithy/types"; +import type { FromIniInit } from "./fromIni"; +/** + * @internal + */ +export interface WebIdentityProfile extends Profile { + web_identity_token_file: string; + role_arn: string; + role_session_name?: string; +} +/** + * @internal + */ +export declare const isWebIdentityProfile: (arg: any) => arg is WebIdentityProfile; +/** + * @internal + */ +export declare const resolveWebIdentityCredentials: (profile: WebIdentityProfile, options: FromIniInit, callerClientConfig?: AwsIdentityProperties["callerClientConfig"]) => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/fromIni.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/fromIni.d.ts new file mode 100644 index 000000000..a9703a1eb --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/fromIni.d.ts @@ -0,0 +1,28 @@ +import { FromLoginCredentialsInit } from "@aws-sdk/credential-provider-login"; +import { AssumeRoleWithWebIdentityParams } from "@aws-sdk/credential-provider-web-identity"; +import { + CredentialProviderOptions, + RuntimeConfigAwsCredentialIdentityProvider, +} from "@aws-sdk/types"; +import { SourceProfileInit } from "@smithy/shared-ini-file-loader"; +import { AwsCredentialIdentity, Pluggable } from "@smithy/types"; +import { AssumeRoleParams } from "./resolveAssumeRoleCredentials"; +export interface FromIniInit + extends SourceProfileInit, + CredentialProviderOptions, + FromLoginCredentialsInit { + mfaCodeProvider?: (mfaSerial: string) => Promise; + roleAssumer?: ( + sourceCreds: AwsCredentialIdentity, + params: AssumeRoleParams + ) => Promise; + roleAssumerWithWebIdentity?: ( + params: AssumeRoleWithWebIdentityParams + ) => Promise; + clientConfig?: any; + clientPlugins?: Pluggable[]; + ignoreCache?: boolean; +} +export declare const fromIni: ( + init?: FromIniInit +) => RuntimeConfigAwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..b01913159 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/index.d.ts @@ -0,0 +1 @@ +export * from "./fromIni"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveAssumeRoleCredentials.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveAssumeRoleCredentials.d.ts new file mode 100644 index 000000000..6e79cdde6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveAssumeRoleCredentials.d.ts @@ -0,0 +1,30 @@ +import { AwsIdentityProperties } from "@aws-sdk/types"; +import { Logger, ParsedIniData } from "@smithy/types"; +import { FromIniInit } from "./fromIni"; +import { ResolveProfileData } from "./resolveProfileData"; +export interface AssumeRoleParams { + RoleArn: string; + RoleSessionName: string; + ExternalId?: string; + SerialNumber?: string; + TokenCode?: string; + DurationSeconds?: number; +} +export declare const isAssumeRoleProfile: ( + arg: any, + { + profile, + logger, + }?: { + profile?: string; + logger?: Logger; + } +) => boolean; +export declare const resolveAssumeRoleCredentials: ( + profileName: string, + profiles: ParsedIniData, + options: FromIniInit, + callerClientConfig: AwsIdentityProperties["callerClientConfig"] | undefined, + visitedProfiles: Record | undefined, + resolveProfileData: ResolveProfileData +) => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveCredentialSource.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveCredentialSource.d.ts new file mode 100644 index 000000000..21a7f9fed --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveCredentialSource.d.ts @@ -0,0 +1,9 @@ +import { CredentialProviderOptions } from "@aws-sdk/types"; +import { AwsCredentialIdentityProvider, Logger } from "@smithy/types"; +export declare const resolveCredentialSource: ( + credentialSource: string, + profileName: string, + logger?: Logger +) => ( + options?: CredentialProviderOptions +) => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveLoginCredentials.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveLoginCredentials.d.ts new file mode 100644 index 000000000..9f67a6c6e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveLoginCredentials.d.ts @@ -0,0 +1,9 @@ +import { AwsIdentityProperties } from "@aws-sdk/types"; +import { AwsCredentialIdentity, ParsedIniData } from "@smithy/types"; +import { FromIniInit } from "./fromIni"; +export declare const isLoginProfile: (data: ParsedIniData[string]) => boolean; +export declare const resolveLoginCredentials: ( + profileName: string, + options: FromIniInit, + callerClientConfig?: AwsIdentityProperties["callerClientConfig"] +) => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveProcessCredentials.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveProcessCredentials.d.ts new file mode 100644 index 000000000..dbd558359 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveProcessCredentials.d.ts @@ -0,0 +1,10 @@ +import { Credentials, Profile } from "@aws-sdk/types"; +import { FromIniInit } from "./fromIni"; +export interface ProcessProfile extends Profile { + credential_process: string; +} +export declare const isProcessProfile: (arg: any) => arg is ProcessProfile; +export declare const resolveProcessCredentials: ( + options: FromIniInit, + profile: string +) => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveProfileData.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveProfileData.d.ts new file mode 100644 index 000000000..b439b9ffc --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveProfileData.d.ts @@ -0,0 +1,12 @@ +import { AwsIdentityProperties } from "@aws-sdk/types"; +import { AwsCredentialIdentity, ParsedIniData } from "@smithy/types"; +import { FromIniInit } from "./fromIni"; +export type ResolveProfileData = typeof resolveProfileData; +export declare const resolveProfileData: ( + profileName: string, + profiles: ParsedIniData, + options: FromIniInit, + callerClientConfig?: AwsIdentityProperties["callerClientConfig"], + visitedProfiles?: Record, + isAssumeRoleRecursiveCall?: boolean +) => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveSsoCredentials.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveSsoCredentials.d.ts new file mode 100644 index 000000000..749c5fc8e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveSsoCredentials.d.ts @@ -0,0 +1,11 @@ +import { SsoProfile } from "@aws-sdk/credential-provider-sso"; +import { AwsIdentityProperties } from "@aws-sdk/types"; +import { IniSection, Profile } from "@smithy/types"; +import { FromIniInit } from "./fromIni"; +export declare const resolveSsoCredentials: ( + profile: string, + profileData: IniSection, + options?: FromIniInit, + callerClientConfig?: AwsIdentityProperties["callerClientConfig"] +) => Promise; +export declare const isSsoProfile: (arg: Profile) => arg is Partial; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveStaticCredentials.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveStaticCredentials.d.ts new file mode 100644 index 000000000..5f5daa926 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveStaticCredentials.d.ts @@ -0,0 +1,16 @@ +import { AwsCredentialIdentity, Profile } from "@smithy/types"; +import { FromIniInit } from "./fromIni"; +export interface StaticCredsProfile extends Profile { + aws_access_key_id: string; + aws_secret_access_key: string; + aws_session_token?: string; + aws_credential_scope?: string; + aws_account_id?: string; +} +export declare const isStaticCredsProfile: ( + arg: any +) => arg is StaticCredsProfile; +export declare const resolveStaticCredentials: ( + profile: StaticCredsProfile, + options?: FromIniInit +) => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveWebIdentityCredentials.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveWebIdentityCredentials.d.ts new file mode 100644 index 000000000..02d11b093 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveWebIdentityCredentials.d.ts @@ -0,0 +1,16 @@ +import { AwsIdentityProperties } from "@aws-sdk/types"; +import { AwsCredentialIdentity, Profile } from "@smithy/types"; +import { FromIniInit } from "./fromIni"; +export interface WebIdentityProfile extends Profile { + web_identity_token_file: string; + role_arn: string; + role_session_name?: string; +} +export declare const isWebIdentityProfile: ( + arg: any +) => arg is WebIdentityProfile; +export declare const resolveWebIdentityCredentials: ( + profile: WebIdentityProfile, + options: FromIniInit, + callerClientConfig?: AwsIdentityProperties["callerClientConfig"] +) => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/package.json b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/package.json new file mode 100644 index 000000000..3ce2cbc2d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-ini/package.json @@ -0,0 +1,74 @@ +{ + "name": "@aws-sdk/credential-provider-ini", + "version": "3.972.20", + "description": "AWS credential provider that sources credentials from ~/.aws/credentials and ~/.aws/config", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline credential-provider-ini", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "keywords": [ + "aws", + "credentials" + ], + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/credential-provider-env": "^3.972.18", + "@aws-sdk/credential-provider-http": "^3.972.20", + "@aws-sdk/credential-provider-login": "^3.972.20", + "@aws-sdk/credential-provider-process": "^3.972.18", + "@aws-sdk/credential-provider-sso": "^3.972.20", + "@aws-sdk/credential-provider-web-identity": "^3.972.20", + "@aws-sdk/nested-clients": "^3.996.10", + "@aws-sdk/types": "^3.973.6", + "@smithy/credential-provider-imds": "^4.2.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "@types/node": "^20.14.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/credential-provider-ini", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/credential-provider-ini" + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/README.md b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/README.md new file mode 100644 index 000000000..81b84ffb2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/README.md @@ -0,0 +1,7 @@ +# @aws-sdk/credential-provider-login + +> An internal package + +## Usage + +You probably shouldn't, at least directly. Please use [@aws-sdk/credential-providers](https://www.npmjs.com/package/@aws-sdk/credential-providers) instead. diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-cjs/index.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-cjs/index.js new file mode 100644 index 000000000..487bc23a4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-cjs/index.js @@ -0,0 +1,286 @@ +'use strict'; + +var client = require('@aws-sdk/core/client'); +var propertyProvider = require('@smithy/property-provider'); +var sharedIniFileLoader = require('@smithy/shared-ini-file-loader'); +var protocolHttp = require('@smithy/protocol-http'); +var node_crypto = require('node:crypto'); +var node_fs = require('node:fs'); +var node_os = require('node:os'); +var node_path = require('node:path'); + +class LoginCredentialsFetcher { + profileData; + init; + callerClientConfig; + static REFRESH_THRESHOLD = 5 * 60 * 1000; + constructor(profileData, init, callerClientConfig) { + this.profileData = profileData; + this.init = init; + this.callerClientConfig = callerClientConfig; + } + async loadCredentials() { + const token = await this.loadToken(); + if (!token) { + throw new propertyProvider.CredentialsProviderError(`Failed to load a token for session ${this.loginSession}, please re-authenticate using aws login`, { tryNextLink: false, logger: this.logger }); + } + const accessToken = token.accessToken; + const now = Date.now(); + const expiryTime = new Date(accessToken.expiresAt).getTime(); + const timeUntilExpiry = expiryTime - now; + if (timeUntilExpiry <= LoginCredentialsFetcher.REFRESH_THRESHOLD) { + return this.refresh(token); + } + return { + accessKeyId: accessToken.accessKeyId, + secretAccessKey: accessToken.secretAccessKey, + sessionToken: accessToken.sessionToken, + accountId: accessToken.accountId, + expiration: new Date(accessToken.expiresAt), + }; + } + get logger() { + return this.init?.logger; + } + get loginSession() { + return this.profileData.login_session; + } + async refresh(token) { + const { SigninClient, CreateOAuth2TokenCommand } = await import('@aws-sdk/nested-clients/signin'); + const { logger, userAgentAppId } = this.callerClientConfig ?? {}; + const isH2 = (requestHandler) => { + return requestHandler?.metadata?.handlerProtocol === "h2"; + }; + const requestHandler = isH2(this.callerClientConfig?.requestHandler) + ? undefined + : this.callerClientConfig?.requestHandler; + const region = this.profileData.region ?? (await this.callerClientConfig?.region?.()) ?? process.env.AWS_REGION; + const client = new SigninClient({ + credentials: { + accessKeyId: "", + secretAccessKey: "", + }, + region, + requestHandler, + logger, + userAgentAppId, + ...this.init?.clientConfig, + }); + this.createDPoPInterceptor(client.middlewareStack); + const commandInput = { + tokenInput: { + clientId: token.clientId, + refreshToken: token.refreshToken, + grantType: "refresh_token", + }, + }; + try { + const response = await client.send(new CreateOAuth2TokenCommand(commandInput)); + const { accessKeyId, secretAccessKey, sessionToken } = response.tokenOutput?.accessToken ?? {}; + const { refreshToken, expiresIn } = response.tokenOutput ?? {}; + if (!accessKeyId || !secretAccessKey || !sessionToken || !refreshToken) { + throw new propertyProvider.CredentialsProviderError("Token refresh response missing required fields", { + logger: this.logger, + tryNextLink: false, + }); + } + const expiresInMs = (expiresIn ?? 900) * 1000; + const expiration = new Date(Date.now() + expiresInMs); + const updatedToken = { + ...token, + accessToken: { + ...token.accessToken, + accessKeyId: accessKeyId, + secretAccessKey: secretAccessKey, + sessionToken: sessionToken, + expiresAt: expiration.toISOString(), + }, + refreshToken: refreshToken, + }; + await this.saveToken(updatedToken); + const newAccessToken = updatedToken.accessToken; + return { + accessKeyId: newAccessToken.accessKeyId, + secretAccessKey: newAccessToken.secretAccessKey, + sessionToken: newAccessToken.sessionToken, + accountId: newAccessToken.accountId, + expiration, + }; + } + catch (error) { + if (error.name === "AccessDeniedException") { + const errorType = error.error; + let message; + switch (errorType) { + case "TOKEN_EXPIRED": + message = "Your session has expired. Please reauthenticate."; + break; + case "USER_CREDENTIALS_CHANGED": + message = + "Unable to refresh credentials because of a change in your password. Please reauthenticate with your new password."; + break; + case "INSUFFICIENT_PERMISSIONS": + message = + "Unable to refresh credentials due to insufficient permissions. You may be missing permission for the 'CreateOAuth2Token' action."; + break; + default: + message = `Failed to refresh token: ${String(error)}. Please re-authenticate using \`aws login\``; + } + throw new propertyProvider.CredentialsProviderError(message, { logger: this.logger, tryNextLink: false }); + } + throw new propertyProvider.CredentialsProviderError(`Failed to refresh token: ${String(error)}. Please re-authenticate using aws login`, { logger: this.logger }); + } + } + async loadToken() { + const tokenFilePath = this.getTokenFilePath(); + try { + let tokenData; + try { + tokenData = await sharedIniFileLoader.readFile(tokenFilePath, { ignoreCache: this.init?.ignoreCache }); + } + catch { + tokenData = await node_fs.promises.readFile(tokenFilePath, "utf8"); + } + const token = JSON.parse(tokenData); + const missingFields = ["accessToken", "clientId", "refreshToken", "dpopKey"].filter((k) => !token[k]); + if (!token.accessToken?.accountId) { + missingFields.push("accountId"); + } + if (missingFields.length > 0) { + throw new propertyProvider.CredentialsProviderError(`Token validation failed, missing fields: ${missingFields.join(", ")}`, { + logger: this.logger, + tryNextLink: false, + }); + } + return token; + } + catch (error) { + throw new propertyProvider.CredentialsProviderError(`Failed to load token from ${tokenFilePath}: ${String(error)}`, { + logger: this.logger, + tryNextLink: false, + }); + } + } + async saveToken(token) { + const tokenFilePath = this.getTokenFilePath(); + const directory = node_path.dirname(tokenFilePath); + try { + await node_fs.promises.mkdir(directory, { recursive: true }); + } + catch (error) { + } + await node_fs.promises.writeFile(tokenFilePath, JSON.stringify(token, null, 2), "utf8"); + } + getTokenFilePath() { + const directory = process.env.AWS_LOGIN_CACHE_DIRECTORY ?? node_path.join(node_os.homedir(), ".aws", "login", "cache"); + const loginSessionBytes = Buffer.from(this.loginSession, "utf8"); + const loginSessionSha256 = node_crypto.createHash("sha256").update(loginSessionBytes).digest("hex"); + return node_path.join(directory, `${loginSessionSha256}.json`); + } + derToRawSignature(derSignature) { + let offset = 2; + if (derSignature[offset] !== 0x02) { + throw new Error("Invalid DER signature"); + } + offset++; + const rLength = derSignature[offset++]; + let r = derSignature.subarray(offset, offset + rLength); + offset += rLength; + if (derSignature[offset] !== 0x02) { + throw new Error("Invalid DER signature"); + } + offset++; + const sLength = derSignature[offset++]; + let s = derSignature.subarray(offset, offset + sLength); + r = r[0] === 0x00 ? r.subarray(1) : r; + s = s[0] === 0x00 ? s.subarray(1) : s; + const rPadded = Buffer.concat([Buffer.alloc(32 - r.length), r]); + const sPadded = Buffer.concat([Buffer.alloc(32 - s.length), s]); + return Buffer.concat([rPadded, sPadded]); + } + createDPoPInterceptor(middlewareStack) { + middlewareStack.add((next) => async (args) => { + if (protocolHttp.HttpRequest.isInstance(args.request)) { + const request = args.request; + const actualEndpoint = `${request.protocol}//${request.hostname}${request.port ? `:${request.port}` : ""}${request.path}`; + const dpop = await this.generateDpop(request.method, actualEndpoint); + request.headers = { + ...request.headers, + DPoP: dpop, + }; + } + return next(args); + }, { + step: "finalizeRequest", + name: "dpopInterceptor", + override: true, + }); + } + async generateDpop(method = "POST", endpoint) { + const token = await this.loadToken(); + try { + const privateKey = node_crypto.createPrivateKey({ + key: token.dpopKey, + format: "pem", + type: "sec1", + }); + const publicKey = node_crypto.createPublicKey(privateKey); + const publicDer = publicKey.export({ format: "der", type: "spki" }); + let pointStart = -1; + for (let i = 0; i < publicDer.length; i++) { + if (publicDer[i] === 0x04) { + pointStart = i; + break; + } + } + const x = publicDer.slice(pointStart + 1, pointStart + 33); + const y = publicDer.slice(pointStart + 33, pointStart + 65); + const header = { + alg: "ES256", + typ: "dpop+jwt", + jwk: { + kty: "EC", + crv: "P-256", + x: x.toString("base64url"), + y: y.toString("base64url"), + }, + }; + const payload = { + jti: crypto.randomUUID(), + htm: method, + htu: endpoint, + iat: Math.floor(Date.now() / 1000), + }; + const headerB64 = Buffer.from(JSON.stringify(header)).toString("base64url"); + const payloadB64 = Buffer.from(JSON.stringify(payload)).toString("base64url"); + const message = `${headerB64}.${payloadB64}`; + const asn1Signature = node_crypto.sign("sha256", Buffer.from(message), privateKey); + const rawSignature = this.derToRawSignature(asn1Signature); + const signatureB64 = rawSignature.toString("base64url"); + return `${message}.${signatureB64}`; + } + catch (error) { + throw new propertyProvider.CredentialsProviderError(`Failed to generate Dpop proof: ${error instanceof Error ? error.message : String(error)}`, { logger: this.logger, tryNextLink: false }); + } + } +} + +const fromLoginCredentials = (init) => async ({ callerClientConfig } = {}) => { + init?.logger?.debug?.("@aws-sdk/credential-providers - fromLoginCredentials"); + const profiles = await sharedIniFileLoader.parseKnownFiles(init || {}); + const profileName = sharedIniFileLoader.getProfileName({ + profile: init?.profile ?? callerClientConfig?.profile, + }); + const profile = profiles[profileName]; + if (!profile?.login_session) { + throw new propertyProvider.CredentialsProviderError(`Profile ${profileName} does not contain login_session.`, { + tryNextLink: true, + logger: init?.logger, + }); + } + const fetcher = new LoginCredentialsFetcher(profile, init, callerClientConfig); + const credentials = await fetcher.loadCredentials(); + return client.setCredentialFeature(credentials, "CREDENTIALS_LOGIN", "AD"); +}; + +exports.fromLoginCredentials = fromLoginCredentials; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-es/LoginCredentialsFetcher.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-es/LoginCredentialsFetcher.js new file mode 100644 index 000000000..875b9ee97 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-es/LoginCredentialsFetcher.js @@ -0,0 +1,262 @@ +import { CredentialsProviderError } from "@smithy/property-provider"; +import { HttpRequest } from "@smithy/protocol-http"; +import { readFile } from "@smithy/shared-ini-file-loader"; +import { createHash, createPrivateKey, createPublicKey, sign } from "node:crypto"; +import { promises as fs } from "node:fs"; +import { homedir } from "node:os"; +import { dirname, join } from "node:path"; +export class LoginCredentialsFetcher { + profileData; + init; + callerClientConfig; + static REFRESH_THRESHOLD = 5 * 60 * 1000; + constructor(profileData, init, callerClientConfig) { + this.profileData = profileData; + this.init = init; + this.callerClientConfig = callerClientConfig; + } + async loadCredentials() { + const token = await this.loadToken(); + if (!token) { + throw new CredentialsProviderError(`Failed to load a token for session ${this.loginSession}, please re-authenticate using aws login`, { tryNextLink: false, logger: this.logger }); + } + const accessToken = token.accessToken; + const now = Date.now(); + const expiryTime = new Date(accessToken.expiresAt).getTime(); + const timeUntilExpiry = expiryTime - now; + if (timeUntilExpiry <= LoginCredentialsFetcher.REFRESH_THRESHOLD) { + return this.refresh(token); + } + return { + accessKeyId: accessToken.accessKeyId, + secretAccessKey: accessToken.secretAccessKey, + sessionToken: accessToken.sessionToken, + accountId: accessToken.accountId, + expiration: new Date(accessToken.expiresAt), + }; + } + get logger() { + return this.init?.logger; + } + get loginSession() { + return this.profileData.login_session; + } + async refresh(token) { + const { SigninClient, CreateOAuth2TokenCommand } = await import("@aws-sdk/nested-clients/signin"); + const { logger, userAgentAppId } = this.callerClientConfig ?? {}; + const isH2 = (requestHandler) => { + return requestHandler?.metadata?.handlerProtocol === "h2"; + }; + const requestHandler = isH2(this.callerClientConfig?.requestHandler) + ? undefined + : this.callerClientConfig?.requestHandler; + const region = this.profileData.region ?? (await this.callerClientConfig?.region?.()) ?? process.env.AWS_REGION; + const client = new SigninClient({ + credentials: { + accessKeyId: "", + secretAccessKey: "", + }, + region, + requestHandler, + logger, + userAgentAppId, + ...this.init?.clientConfig, + }); + this.createDPoPInterceptor(client.middlewareStack); + const commandInput = { + tokenInput: { + clientId: token.clientId, + refreshToken: token.refreshToken, + grantType: "refresh_token", + }, + }; + try { + const response = await client.send(new CreateOAuth2TokenCommand(commandInput)); + const { accessKeyId, secretAccessKey, sessionToken } = response.tokenOutput?.accessToken ?? {}; + const { refreshToken, expiresIn } = response.tokenOutput ?? {}; + if (!accessKeyId || !secretAccessKey || !sessionToken || !refreshToken) { + throw new CredentialsProviderError("Token refresh response missing required fields", { + logger: this.logger, + tryNextLink: false, + }); + } + const expiresInMs = (expiresIn ?? 900) * 1000; + const expiration = new Date(Date.now() + expiresInMs); + const updatedToken = { + ...token, + accessToken: { + ...token.accessToken, + accessKeyId: accessKeyId, + secretAccessKey: secretAccessKey, + sessionToken: sessionToken, + expiresAt: expiration.toISOString(), + }, + refreshToken: refreshToken, + }; + await this.saveToken(updatedToken); + const newAccessToken = updatedToken.accessToken; + return { + accessKeyId: newAccessToken.accessKeyId, + secretAccessKey: newAccessToken.secretAccessKey, + sessionToken: newAccessToken.sessionToken, + accountId: newAccessToken.accountId, + expiration, + }; + } + catch (error) { + if (error.name === "AccessDeniedException") { + const errorType = error.error; + let message; + switch (errorType) { + case "TOKEN_EXPIRED": + message = "Your session has expired. Please reauthenticate."; + break; + case "USER_CREDENTIALS_CHANGED": + message = + "Unable to refresh credentials because of a change in your password. Please reauthenticate with your new password."; + break; + case "INSUFFICIENT_PERMISSIONS": + message = + "Unable to refresh credentials due to insufficient permissions. You may be missing permission for the 'CreateOAuth2Token' action."; + break; + default: + message = `Failed to refresh token: ${String(error)}. Please re-authenticate using \`aws login\``; + } + throw new CredentialsProviderError(message, { logger: this.logger, tryNextLink: false }); + } + throw new CredentialsProviderError(`Failed to refresh token: ${String(error)}. Please re-authenticate using aws login`, { logger: this.logger }); + } + } + async loadToken() { + const tokenFilePath = this.getTokenFilePath(); + try { + let tokenData; + try { + tokenData = await readFile(tokenFilePath, { ignoreCache: this.init?.ignoreCache }); + } + catch { + tokenData = await fs.readFile(tokenFilePath, "utf8"); + } + const token = JSON.parse(tokenData); + const missingFields = ["accessToken", "clientId", "refreshToken", "dpopKey"].filter((k) => !token[k]); + if (!token.accessToken?.accountId) { + missingFields.push("accountId"); + } + if (missingFields.length > 0) { + throw new CredentialsProviderError(`Token validation failed, missing fields: ${missingFields.join(", ")}`, { + logger: this.logger, + tryNextLink: false, + }); + } + return token; + } + catch (error) { + throw new CredentialsProviderError(`Failed to load token from ${tokenFilePath}: ${String(error)}`, { + logger: this.logger, + tryNextLink: false, + }); + } + } + async saveToken(token) { + const tokenFilePath = this.getTokenFilePath(); + const directory = dirname(tokenFilePath); + try { + await fs.mkdir(directory, { recursive: true }); + } + catch (error) { + } + await fs.writeFile(tokenFilePath, JSON.stringify(token, null, 2), "utf8"); + } + getTokenFilePath() { + const directory = process.env.AWS_LOGIN_CACHE_DIRECTORY ?? join(homedir(), ".aws", "login", "cache"); + const loginSessionBytes = Buffer.from(this.loginSession, "utf8"); + const loginSessionSha256 = createHash("sha256").update(loginSessionBytes).digest("hex"); + return join(directory, `${loginSessionSha256}.json`); + } + derToRawSignature(derSignature) { + let offset = 2; + if (derSignature[offset] !== 0x02) { + throw new Error("Invalid DER signature"); + } + offset++; + const rLength = derSignature[offset++]; + let r = derSignature.subarray(offset, offset + rLength); + offset += rLength; + if (derSignature[offset] !== 0x02) { + throw new Error("Invalid DER signature"); + } + offset++; + const sLength = derSignature[offset++]; + let s = derSignature.subarray(offset, offset + sLength); + r = r[0] === 0x00 ? r.subarray(1) : r; + s = s[0] === 0x00 ? s.subarray(1) : s; + const rPadded = Buffer.concat([Buffer.alloc(32 - r.length), r]); + const sPadded = Buffer.concat([Buffer.alloc(32 - s.length), s]); + return Buffer.concat([rPadded, sPadded]); + } + createDPoPInterceptor(middlewareStack) { + middlewareStack.add((next) => async (args) => { + if (HttpRequest.isInstance(args.request)) { + const request = args.request; + const actualEndpoint = `${request.protocol}//${request.hostname}${request.port ? `:${request.port}` : ""}${request.path}`; + const dpop = await this.generateDpop(request.method, actualEndpoint); + request.headers = { + ...request.headers, + DPoP: dpop, + }; + } + return next(args); + }, { + step: "finalizeRequest", + name: "dpopInterceptor", + override: true, + }); + } + async generateDpop(method = "POST", endpoint) { + const token = await this.loadToken(); + try { + const privateKey = createPrivateKey({ + key: token.dpopKey, + format: "pem", + type: "sec1", + }); + const publicKey = createPublicKey(privateKey); + const publicDer = publicKey.export({ format: "der", type: "spki" }); + let pointStart = -1; + for (let i = 0; i < publicDer.length; i++) { + if (publicDer[i] === 0x04) { + pointStart = i; + break; + } + } + const x = publicDer.slice(pointStart + 1, pointStart + 33); + const y = publicDer.slice(pointStart + 33, pointStart + 65); + const header = { + alg: "ES256", + typ: "dpop+jwt", + jwk: { + kty: "EC", + crv: "P-256", + x: x.toString("base64url"), + y: y.toString("base64url"), + }, + }; + const payload = { + jti: crypto.randomUUID(), + htm: method, + htu: endpoint, + iat: Math.floor(Date.now() / 1000), + }; + const headerB64 = Buffer.from(JSON.stringify(header)).toString("base64url"); + const payloadB64 = Buffer.from(JSON.stringify(payload)).toString("base64url"); + const message = `${headerB64}.${payloadB64}`; + const asn1Signature = sign("sha256", Buffer.from(message), privateKey); + const rawSignature = this.derToRawSignature(asn1Signature); + const signatureB64 = rawSignature.toString("base64url"); + return `${message}.${signatureB64}`; + } + catch (error) { + throw new CredentialsProviderError(`Failed to generate Dpop proof: ${error instanceof Error ? error.message : String(error)}`, { logger: this.logger, tryNextLink: false }); + } + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-es/fromLoginCredentials.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-es/fromLoginCredentials.js new file mode 100644 index 000000000..602284182 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-es/fromLoginCredentials.js @@ -0,0 +1,21 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +import { CredentialsProviderError } from "@smithy/property-provider"; +import { getProfileName, parseKnownFiles } from "@smithy/shared-ini-file-loader"; +import { LoginCredentialsFetcher } from "./LoginCredentialsFetcher"; +export const fromLoginCredentials = (init) => async ({ callerClientConfig } = {}) => { + init?.logger?.debug?.("@aws-sdk/credential-providers - fromLoginCredentials"); + const profiles = await parseKnownFiles(init || {}); + const profileName = getProfileName({ + profile: init?.profile ?? callerClientConfig?.profile, + }); + const profile = profiles[profileName]; + if (!profile?.login_session) { + throw new CredentialsProviderError(`Profile ${profileName} does not contain login_session.`, { + tryNextLink: true, + logger: init?.logger, + }); + } + const fetcher = new LoginCredentialsFetcher(profile, init, callerClientConfig); + const credentials = await fetcher.loadCredentials(); + return setCredentialFeature(credentials, "CREDENTIALS_LOGIN", "AD"); +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-es/index.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-es/index.js new file mode 100644 index 000000000..d55901779 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-es/index.js @@ -0,0 +1,2 @@ +export * from "./fromLoginCredentials"; +export * from "./types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-es/types.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-es/types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-es/types.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-types/LoginCredentialsFetcher.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-types/LoginCredentialsFetcher.d.ts new file mode 100644 index 000000000..e9b1b9c5c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-types/LoginCredentialsFetcher.d.ts @@ -0,0 +1,42 @@ +import type { AwsCredentialIdentity, AwsIdentityProperties } from "@aws-sdk/types"; +import type { IniSection } from "@smithy/types"; +import type { FromLoginCredentialsInit } from "./types"; +/** + * Handles loading and refreshing Sign-In credentials from cached tokens. + * @internal + */ +export declare class LoginCredentialsFetcher { + private readonly profileData; + private readonly init?; + private readonly callerClientConfig?; + private static readonly REFRESH_THRESHOLD; + constructor(profileData: IniSection, init?: FromLoginCredentialsInit | undefined, callerClientConfig?: AwsIdentityProperties["callerClientConfig"]); + /** + * Loads credentials and refreshes if necessary + */ + loadCredentials(): Promise; + private get logger(); + private get loginSession(); + private refresh; + private loadToken; + private saveToken; + private getTokenFilePath; + /** + * Converts ASN.1 DER encoded ECDSA signature to raw r||s format. + * raw format is a fixed 64-byte concatenation of r and s values (32 bytes each). + * + * References: + * - ECDSA algorithm: https://thecopenhagenbook.com/cryptography/ecdsa + * - ASN.1 DER encoding: https://www.rfc-editor.org/rfc/rfc5480#section-2.2 + * + * @param derSignature - ASN.1 DER encoded signature from crypto.sign() + * @returns Raw signature as 64-byte buffer (32-byte r + 32-byte s) + */ + private derToRawSignature; + /** + * Creates a DPoP interceptor that updates the DPoP header with the actual resolved endpoint + * @internal + */ + private createDPoPInterceptor; + private generateDpop; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-types/fromLoginCredentials.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-types/fromLoginCredentials.d.ts new file mode 100644 index 000000000..bcca25c6c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-types/fromLoginCredentials.d.ts @@ -0,0 +1,7 @@ +import type { RuntimeConfigAwsCredentialIdentityProvider } from "@aws-sdk/types"; +import type { FromLoginCredentialsInit } from "./types"; +/** + * Creates a credential provider that sources credentials from aws login cached tokens + * @internal + */ +export declare const fromLoginCredentials: (init?: FromLoginCredentialsInit) => RuntimeConfigAwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-types/index.d.ts new file mode 100644 index 000000000..2986833c1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-types/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./fromLoginCredentials"; +/** + * @internal + */ +export * from "./types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-types/ts3.4/LoginCredentialsFetcher.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-types/ts3.4/LoginCredentialsFetcher.d.ts new file mode 100644 index 000000000..2d714b7da --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-types/ts3.4/LoginCredentialsFetcher.d.ts @@ -0,0 +1,24 @@ +import { AwsCredentialIdentity, AwsIdentityProperties } from "@aws-sdk/types"; +import { IniSection } from "@smithy/types"; +import { FromLoginCredentialsInit } from "./types"; +export declare class LoginCredentialsFetcher { + private readonly profileData; + private readonly init?; + private readonly callerClientConfig?; + private static readonly REFRESH_THRESHOLD; + constructor( + profileData: IniSection, + init?: FromLoginCredentialsInit | undefined, + callerClientConfig?: AwsIdentityProperties["callerClientConfig"] + ); + loadCredentials(): Promise; + private readonly logger: any; + private readonly loginSession: any; + private refresh; + private loadToken; + private saveToken; + private getTokenFilePath; + private derToRawSignature; + private createDPoPInterceptor; + private generateDpop; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-types/ts3.4/fromLoginCredentials.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-types/ts3.4/fromLoginCredentials.d.ts new file mode 100644 index 000000000..6435c823d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-types/ts3.4/fromLoginCredentials.d.ts @@ -0,0 +1,5 @@ +import { RuntimeConfigAwsCredentialIdentityProvider } from "@aws-sdk/types"; +import { FromLoginCredentialsInit } from "./types"; +export declare const fromLoginCredentials: ( + init?: FromLoginCredentialsInit +) => RuntimeConfigAwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..d55901779 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-types/ts3.4/index.d.ts @@ -0,0 +1,2 @@ +export * from "./fromLoginCredentials"; +export * from "./types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-types/ts3.4/types.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-types/ts3.4/types.d.ts new file mode 100644 index 000000000..e0f84c9f8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-types/ts3.4/types.d.ts @@ -0,0 +1,39 @@ +import { SigninClientConfig } from "@aws-sdk/nested-clients/signin"; +import { CredentialProviderOptions } from "@aws-sdk/types"; +import { SharedConfigInit } from "@smithy/shared-ini-file-loader"; +export interface FromLoginCredentialsInit + extends CredentialProviderOptions, + SharedConfigInit { + profile?: string; + clientConfig?: SigninClientConfig; +} +export interface LoginToken { + accessToken: { + accessKeyId: string; + secretAccessKey: string; + sessionToken: string; + accountId?: string; + expiresAt: string; + }; + tokenType: string; + clientId: string; + refreshToken: string; + idToken: string; + dpopKey: string; +} +export interface DpopHeader { + typ: "dpop+jwt"; + alg: "ES256"; + jwk: { + kty: "EC"; + crv: "P-256"; + x: string; + y: string; + }; +} +export interface DpopPayload { + jti: string; + htm: string; + htu: string; + iat: number; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-types/types.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-types/types.d.ts new file mode 100644 index 000000000..d19f4f485 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/dist-types/types.d.ts @@ -0,0 +1,59 @@ +import type { SigninClientConfig } from "@aws-sdk/nested-clients/signin"; +import type { CredentialProviderOptions } from "@aws-sdk/types"; +import type { SharedConfigInit } from "@smithy/shared-ini-file-loader"; +/** + * Configuration options for the Login credential provider + * @public + */ +export interface FromLoginCredentialsInit extends CredentialProviderOptions, SharedConfigInit { + /** + * Profile name to use for Login credentials + */ + profile?: string; + /** + * Login client configuration for token refresh operations + */ + clientConfig?: SigninClientConfig; +} +/** + * Login token structure stored on disk + * @internal + */ +export interface LoginToken { + accessToken: { + accessKeyId: string; + secretAccessKey: string; + sessionToken: string; + accountId?: string; + expiresAt: string; + }; + tokenType: string; + clientId: string; + refreshToken: string; + idToken: string; + dpopKey: string; +} +/** + * DPoP header structure for OAuth 2.0 Demonstrating Proof of Possession + * @internal + */ +export interface DpopHeader { + typ: "dpop+jwt"; + alg: "ES256"; + jwk: { + kty: "EC"; + crv: "P-256"; + x: string; + y: string; + }; +} +/** + * DPoP payload structure + * @internal + */ +export interface DpopPayload { + jti: string; + htm: string; + htu: string; + iat: number; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/package.json b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/package.json new file mode 100644 index 000000000..0289ab062 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-login/package.json @@ -0,0 +1,68 @@ +{ + "name": "@aws-sdk/credential-provider-login", + "version": "3.972.20", + "description": "AWS credential provider that sources credentials from aws login cached tokens", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline credential-provider-login", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "keywords": [ + "aws", + "credentials", + "signin", + "login" + ], + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/nested-clients": "^3.996.10", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "@types/node": "^20.14.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/credential-provider-login", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/credential-provider-login" + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/LICENSE b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/README.md b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/README.md new file mode 100644 index 000000000..74e99025a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/README.md @@ -0,0 +1,104 @@ +# @aws-sdk/credential-provider-node + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/credential-provider-node/latest.svg)](https://www.npmjs.com/package/@aws-sdk/credential-provider-node) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/credential-provider-node.svg)](https://www.npmjs.com/package/@aws-sdk/credential-provider-node) + +## AWS Credential Provider for Node.JS + +This module provides a factory function, `defaultProvider`, that will attempt to +source AWS credentials from a Node.JS environment. It will attempt to find +credentials from the following sources (listed in order of precedence): + +- Environment variables exposed via `process.env` +- SSO credentials from token cache +- Web identity token credentials +- Shared credentials and config ini files +- The EC2/ECS Instance Metadata Service + +The default credential provider will invoke one provider at a time and only +continue to the next if no credentials have been located. For example, if the +process finds values defined via the `AWS_ACCESS_KEY_ID` and +`AWS_SECRET_ACCESS_KEY` environment variables, the files at `~/.aws/credentials` +and `~/.aws/config` will not be read, nor will any messages be sent to the +Instance Metadata Service. + +If invalid configuration is encountered (such as a profile in +`~/.aws/credentials` specifying as its `source_profile` the name of a profile +that does not exist), then the chained provider will be rejected with an error +and will not invoke the next provider in the list. + +_IMPORTANT_: if you intend to acquire credentials using EKS +[IAM Roles for Service Accounts](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html), +then you must explicitly specify a value for `roleAssumerWithWebIdentity`. There is a +default function available in `@aws-sdk/client-sts` package. An example of using +this: + +```js +const { getDefaultRoleAssumerWithWebIdentity } = require("@aws-sdk/client-sts"); +const { defaultProvider } = require("@aws-sdk/credential-provider-node"); +const { S3Client, GetObjectCommand } = require("@aws-sdk/client-s3"); + +const provider = defaultProvider({ + roleAssumerWithWebIdentity: getDefaultRoleAssumerWithWebIdentity({ + // You must explicitly pass a region if you are not using us-east-1 + region: "eu-west-1", + }), +}); + +const client = new S3Client({ credentialDefaultProvider: provider }); +``` + +_IMPORTANT_: We provide a wrapper of this provider in `@aws-sdk/credential-providers` +package to save you from importing `getDefaultRoleAssumerWithWebIdentity()` or +`getDefaultRoleAssume()` from STS package. Similarly, you can do: + +```js +const { fromNodeProviderChain } = require("@aws-sdk/credential-providers"); + +const credentials = fromNodeProviderChain(); + +const client = new S3Client({ credentials }); +``` + +## Supported configuration + +You may customize how credentials are resolved by providing an options hash to +the `defaultProvider` factory function. The following options are +supported: + +- `profile` - The configuration profile to use. If not specified, the provider + will use the value in the `AWS_PROFILE` environment variable or a default of + `default`. +- `filepath` - The path to the shared credentials file. If not specified, the + provider will use the value in the `AWS_SHARED_CREDENTIALS_FILE` environment + variable or a default of `~/.aws/credentials`. +- `configFilepath` - The path to the shared config file. If not specified, the + provider will use the value in the `AWS_CONFIG_FILE` environment variable or a + default of `~/.aws/config`. +- `mfaCodeProvider` - A function that returns a a promise fulfilled with an + MFA token code for the provided MFA Serial code. If a profile requires an MFA + code and `mfaCodeProvider` is not a valid function, the credential provider + promise will be rejected. +- `roleAssumer` - A function that assumes a role and returns a promise + fulfilled with credentials for the assumed role. If not specified, no role + will be assumed, and an error will be thrown. +- `roleArn` - ARN to assume. If not specified, the provider will use the value + in the `AWS_ROLE_ARN` environment variable. +- `webIdentityTokenFile` - File location of where the `OIDC` token is stored. + If not specified, the provider will use the value in the `AWS_WEB_IDENTITY_TOKEN_FILE` + environment variable. +- `roleAssumerWithWebIdentity` - A function that assumes a role with web identity and + returns a promise fulfilled with credentials for the assumed role. +- `timeout` - The connection timeout (in milliseconds) to apply to any remote + requests. If not specified, a default value of `1000` (one second) is used. +- `maxRetries` - The maximum number of times any HTTP connections should be + retried. If not specified, a default value of `0` will be used. + +## Related packages: + +- [AWS Credential Provider for Node.JS - Environment Variables](../credential-provider-env) +- [AWS Credential Provider for Node.JS - SSO](../credential-provider-sso) +- [AWS Credential Provider for Node.JS - Web Identity](../credential-provider-web-identity) +- [AWS Credential Provider for Node.JS - Shared Configuration Files](../credential-provider-ini) +- [AWS Credential Provider for Node.JS - Instance and Container Metadata](../credential-provider-imds) +- [AWS Shared Configuration File Loader](../shared-ini-file-loader) diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-cjs/index.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-cjs/index.js new file mode 100644 index 000000000..171b35ad9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-cjs/index.js @@ -0,0 +1,156 @@ +'use strict'; + +var credentialProviderEnv = require('@aws-sdk/credential-provider-env'); +var propertyProvider = require('@smithy/property-provider'); +var sharedIniFileLoader = require('@smithy/shared-ini-file-loader'); + +const ENV_IMDS_DISABLED = "AWS_EC2_METADATA_DISABLED"; +const remoteProvider = async (init) => { + const { ENV_CMDS_FULL_URI, ENV_CMDS_RELATIVE_URI, fromContainerMetadata, fromInstanceMetadata } = await import('@smithy/credential-provider-imds'); + if (process.env[ENV_CMDS_RELATIVE_URI] || process.env[ENV_CMDS_FULL_URI]) { + init.logger?.debug("@aws-sdk/credential-provider-node - remoteProvider::fromHttp/fromContainerMetadata"); + const { fromHttp } = await import('@aws-sdk/credential-provider-http'); + return propertyProvider.chain(fromHttp(init), fromContainerMetadata(init)); + } + if (process.env[ENV_IMDS_DISABLED] && process.env[ENV_IMDS_DISABLED] !== "false") { + return async () => { + throw new propertyProvider.CredentialsProviderError("EC2 Instance Metadata Service access disabled", { logger: init.logger }); + }; + } + init.logger?.debug("@aws-sdk/credential-provider-node - remoteProvider::fromInstanceMetadata"); + return fromInstanceMetadata(init); +}; + +function memoizeChain(providers, treatAsExpired) { + const chain = internalCreateChain(providers); + let activeLock; + let passiveLock; + let credentials; + const provider = async (options) => { + if (options?.forceRefresh) { + return await chain(options); + } + if (credentials?.expiration) { + if (credentials?.expiration?.getTime() < Date.now()) { + credentials = undefined; + } + } + if (activeLock) { + await activeLock; + } + else if (!credentials || treatAsExpired?.(credentials)) { + if (credentials) { + if (!passiveLock) { + passiveLock = chain(options) + .then((c) => { + credentials = c; + }) + .finally(() => { + passiveLock = undefined; + }); + } + } + else { + activeLock = chain(options) + .then((c) => { + credentials = c; + }) + .finally(() => { + activeLock = undefined; + }); + return provider(options); + } + } + return credentials; + }; + return provider; +} +const internalCreateChain = (providers) => async (awsIdentityProperties) => { + let lastProviderError; + for (const provider of providers) { + try { + return await provider(awsIdentityProperties); + } + catch (err) { + lastProviderError = err; + if (err?.tryNextLink) { + continue; + } + throw err; + } + } + throw lastProviderError; +}; + +let multipleCredentialSourceWarningEmitted = false; +const defaultProvider = (init = {}) => memoizeChain([ + async () => { + const profile = init.profile ?? process.env[sharedIniFileLoader.ENV_PROFILE]; + if (profile) { + const envStaticCredentialsAreSet = process.env[credentialProviderEnv.ENV_KEY] && process.env[credentialProviderEnv.ENV_SECRET]; + if (envStaticCredentialsAreSet) { + if (!multipleCredentialSourceWarningEmitted) { + const warnFn = init.logger?.warn && init.logger?.constructor?.name !== "NoOpLogger" + ? init.logger.warn.bind(init.logger) + : console.warn; + warnFn(`@aws-sdk/credential-provider-node - defaultProvider::fromEnv WARNING: + Multiple credential sources detected: + Both AWS_PROFILE and the pair AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY static credentials are set. + This SDK will proceed with the AWS_PROFILE value. + + However, a future version may change this behavior to prefer the ENV static credentials. + Please ensure that your environment only sets either the AWS_PROFILE or the + AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY pair. +`); + multipleCredentialSourceWarningEmitted = true; + } + } + throw new propertyProvider.CredentialsProviderError("AWS_PROFILE is set, skipping fromEnv provider.", { + logger: init.logger, + tryNextLink: true, + }); + } + init.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromEnv"); + return credentialProviderEnv.fromEnv(init)(); + }, + async (awsIdentityProperties) => { + init.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromSSO"); + const { ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoSession } = init; + if (!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName && !ssoSession) { + throw new propertyProvider.CredentialsProviderError("Skipping SSO provider in default chain (inputs do not include SSO fields).", { logger: init.logger }); + } + const { fromSSO } = await import('@aws-sdk/credential-provider-sso'); + return fromSSO(init)(awsIdentityProperties); + }, + async (awsIdentityProperties) => { + init.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromIni"); + const { fromIni } = await import('@aws-sdk/credential-provider-ini'); + return fromIni(init)(awsIdentityProperties); + }, + async (awsIdentityProperties) => { + init.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromProcess"); + const { fromProcess } = await import('@aws-sdk/credential-provider-process'); + return fromProcess(init)(awsIdentityProperties); + }, + async (awsIdentityProperties) => { + init.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromTokenFile"); + const { fromTokenFile } = await import('@aws-sdk/credential-provider-web-identity'); + return fromTokenFile(init)(awsIdentityProperties); + }, + async () => { + init.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::remoteProvider"); + return (await remoteProvider(init))(); + }, + async () => { + throw new propertyProvider.CredentialsProviderError("Could not load credentials from any providers", { + tryNextLink: false, + logger: init.logger, + }); + }, +], credentialsTreatedAsExpired); +const credentialsWillNeedRefresh = (credentials) => credentials?.expiration !== undefined; +const credentialsTreatedAsExpired = (credentials) => credentials?.expiration !== undefined && credentials.expiration.getTime() - Date.now() < 300000; + +exports.credentialsTreatedAsExpired = credentialsTreatedAsExpired; +exports.credentialsWillNeedRefresh = credentialsWillNeedRefresh; +exports.defaultProvider = defaultProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-es/defaultProvider.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-es/defaultProvider.js new file mode 100644 index 000000000..092ff562e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-es/defaultProvider.js @@ -0,0 +1,73 @@ +import { ENV_KEY, ENV_SECRET, fromEnv } from "@aws-sdk/credential-provider-env"; +import { CredentialsProviderError } from "@smithy/property-provider"; +import { ENV_PROFILE } from "@smithy/shared-ini-file-loader"; +import { remoteProvider } from "./remoteProvider"; +import { memoizeChain } from "./runtime/memoize-chain"; +let multipleCredentialSourceWarningEmitted = false; +export const defaultProvider = (init = {}) => memoizeChain([ + async () => { + const profile = init.profile ?? process.env[ENV_PROFILE]; + if (profile) { + const envStaticCredentialsAreSet = process.env[ENV_KEY] && process.env[ENV_SECRET]; + if (envStaticCredentialsAreSet) { + if (!multipleCredentialSourceWarningEmitted) { + const warnFn = init.logger?.warn && init.logger?.constructor?.name !== "NoOpLogger" + ? init.logger.warn.bind(init.logger) + : console.warn; + warnFn(`@aws-sdk/credential-provider-node - defaultProvider::fromEnv WARNING: + Multiple credential sources detected: + Both AWS_PROFILE and the pair AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY static credentials are set. + This SDK will proceed with the AWS_PROFILE value. + + However, a future version may change this behavior to prefer the ENV static credentials. + Please ensure that your environment only sets either the AWS_PROFILE or the + AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY pair. +`); + multipleCredentialSourceWarningEmitted = true; + } + } + throw new CredentialsProviderError("AWS_PROFILE is set, skipping fromEnv provider.", { + logger: init.logger, + tryNextLink: true, + }); + } + init.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromEnv"); + return fromEnv(init)(); + }, + async (awsIdentityProperties) => { + init.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromSSO"); + const { ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoSession } = init; + if (!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName && !ssoSession) { + throw new CredentialsProviderError("Skipping SSO provider in default chain (inputs do not include SSO fields).", { logger: init.logger }); + } + const { fromSSO } = await import("@aws-sdk/credential-provider-sso"); + return fromSSO(init)(awsIdentityProperties); + }, + async (awsIdentityProperties) => { + init.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromIni"); + const { fromIni } = await import("@aws-sdk/credential-provider-ini"); + return fromIni(init)(awsIdentityProperties); + }, + async (awsIdentityProperties) => { + init.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromProcess"); + const { fromProcess } = await import("@aws-sdk/credential-provider-process"); + return fromProcess(init)(awsIdentityProperties); + }, + async (awsIdentityProperties) => { + init.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromTokenFile"); + const { fromTokenFile } = await import("@aws-sdk/credential-provider-web-identity"); + return fromTokenFile(init)(awsIdentityProperties); + }, + async () => { + init.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::remoteProvider"); + return (await remoteProvider(init))(); + }, + async () => { + throw new CredentialsProviderError("Could not load credentials from any providers", { + tryNextLink: false, + logger: init.logger, + }); + }, +], credentialsTreatedAsExpired); +export const credentialsWillNeedRefresh = (credentials) => credentials?.expiration !== undefined; +export const credentialsTreatedAsExpired = (credentials) => credentials?.expiration !== undefined && credentials.expiration.getTime() - Date.now() < 300000; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-es/index.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-es/index.js new file mode 100644 index 000000000..c82818e53 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-es/index.js @@ -0,0 +1 @@ +export * from "./defaultProvider"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-es/remoteProvider.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-es/remoteProvider.js new file mode 100644 index 000000000..c455bc148 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-es/remoteProvider.js @@ -0,0 +1,17 @@ +import { chain, CredentialsProviderError } from "@smithy/property-provider"; +export const ENV_IMDS_DISABLED = "AWS_EC2_METADATA_DISABLED"; +export const remoteProvider = async (init) => { + const { ENV_CMDS_FULL_URI, ENV_CMDS_RELATIVE_URI, fromContainerMetadata, fromInstanceMetadata } = await import("@smithy/credential-provider-imds"); + if (process.env[ENV_CMDS_RELATIVE_URI] || process.env[ENV_CMDS_FULL_URI]) { + init.logger?.debug("@aws-sdk/credential-provider-node - remoteProvider::fromHttp/fromContainerMetadata"); + const { fromHttp } = await import("@aws-sdk/credential-provider-http"); + return chain(fromHttp(init), fromContainerMetadata(init)); + } + if (process.env[ENV_IMDS_DISABLED] && process.env[ENV_IMDS_DISABLED] !== "false") { + return async () => { + throw new CredentialsProviderError("EC2 Instance Metadata Service access disabled", { logger: init.logger }); + }; + } + init.logger?.debug("@aws-sdk/credential-provider-node - remoteProvider::fromInstanceMetadata"); + return fromInstanceMetadata(init); +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-es/runtime/memoize-chain.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-es/runtime/memoize-chain.js new file mode 100644 index 000000000..741ddf04d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-es/runtime/memoize-chain.js @@ -0,0 +1,60 @@ +export function memoizeChain(providers, treatAsExpired) { + const chain = internalCreateChain(providers); + let activeLock; + let passiveLock; + let credentials; + const provider = async (options) => { + if (options?.forceRefresh) { + return await chain(options); + } + if (credentials?.expiration) { + if (credentials?.expiration?.getTime() < Date.now()) { + credentials = undefined; + } + } + if (activeLock) { + await activeLock; + } + else if (!credentials || treatAsExpired?.(credentials)) { + if (credentials) { + if (!passiveLock) { + passiveLock = chain(options) + .then((c) => { + credentials = c; + }) + .finally(() => { + passiveLock = undefined; + }); + } + } + else { + activeLock = chain(options) + .then((c) => { + credentials = c; + }) + .finally(() => { + activeLock = undefined; + }); + return provider(options); + } + } + return credentials; + }; + return provider; +} +export const internalCreateChain = (providers) => async (awsIdentityProperties) => { + let lastProviderError; + for (const provider of providers) { + try { + return await provider(awsIdentityProperties); + } + catch (err) { + lastProviderError = err; + if (err?.tryNextLink) { + continue; + } + throw err; + } + } + throw lastProviderError; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-types/defaultProvider.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-types/defaultProvider.d.ts new file mode 100644 index 000000000..ed50dde80 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-types/defaultProvider.d.ts @@ -0,0 +1,59 @@ +import type { FromHttpOptions } from "@aws-sdk/credential-provider-http"; +import type { FromIniInit } from "@aws-sdk/credential-provider-ini"; +import type { FromProcessInit } from "@aws-sdk/credential-provider-process"; +import type { FromSSOInit, SsoCredentialsParameters } from "@aws-sdk/credential-provider-sso"; +import type { FromTokenFileInit } from "@aws-sdk/credential-provider-web-identity"; +import type { RemoteProviderInit } from "@smithy/credential-provider-imds"; +import type { AwsCredentialIdentity } from "@smithy/types"; +import { type MemoizedRuntimeConfigAwsCredentialIdentityProvider } from "./runtime/memoize-chain"; +/** + * @public + */ +export type DefaultProviderInit = FromIniInit & FromHttpOptions & RemoteProviderInit & FromProcessInit & (FromSSOInit & Partial) & FromTokenFileInit; +/** + * Creates a credential provider that will attempt to find credentials from the + * following sources (listed in order of precedence): + * * Environment variables exposed via `process.env` + * * SSO credentials from token cache + * * Web identity token credentials + * * Shared credentials and config ini files + * * The EC2/ECS Instance Metadata Service + * + * The default credential provider will invoke one provider at a time and only + * continue to the next if no credentials have been located. For example, if + * the process finds values defined via the `AWS_ACCESS_KEY_ID` and + * `AWS_SECRET_ACCESS_KEY` environment variables, the files at + * `~/.aws/credentials` and `~/.aws/config` will not be read, nor will any + * messages be sent to the Instance Metadata Service. + * + * @param init Configuration that is passed to each individual + * provider + * + * @see {@link fromEnv} The function used to source credentials from + * environment variables. + * @see {@link fromSSO} The function used to source credentials from + * resolved SSO token cache. + * @see {@link fromTokenFile} The function used to source credentials from + * token file. + * @see {@link fromIni} The function used to source credentials from INI + * files. + * @see {@link fromProcess} The function used to sources credentials from + * credential_process in INI files. + * @see {@link fromInstanceMetadata} The function used to source credentials from the + * EC2 Instance Metadata Service. + * @see {@link fromContainerMetadata} The function used to source credentials from the + * ECS Container Metadata Service. + */ +export declare const defaultProvider: (init?: DefaultProviderInit) => MemoizedRuntimeConfigAwsCredentialIdentityProvider; +/** + * @internal + * + * @returns credentials have expiration. + */ +export declare const credentialsWillNeedRefresh: (credentials: AwsCredentialIdentity) => boolean; +/** + * @internal + * + * @returns credentials with less than 5 minutes left. + */ +export declare const credentialsTreatedAsExpired: (credentials: AwsCredentialIdentity) => boolean; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-types/index.d.ts new file mode 100644 index 000000000..c82818e53 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-types/index.d.ts @@ -0,0 +1 @@ +export * from "./defaultProvider"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-types/remoteProvider.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-types/remoteProvider.d.ts new file mode 100644 index 000000000..4022a4e7b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-types/remoteProvider.d.ts @@ -0,0 +1,11 @@ +import type { FromHttpOptions } from "@aws-sdk/credential-provider-http"; +import type { RemoteProviderInit } from "@smithy/credential-provider-imds"; +import type { AwsCredentialIdentityProvider } from "@smithy/types"; +/** + * @internal + */ +export declare const ENV_IMDS_DISABLED = "AWS_EC2_METADATA_DISABLED"; +/** + * @internal + */ +export declare const remoteProvider: (init: RemoteProviderInit | FromHttpOptions) => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-types/runtime/memoize-chain.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-types/runtime/memoize-chain.d.ts new file mode 100644 index 000000000..63fa7b75b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-types/runtime/memoize-chain.d.ts @@ -0,0 +1,18 @@ +import type { AwsCredentialIdentity, AwsIdentityProperties, RuntimeConfigAwsCredentialIdentityProvider } from "@aws-sdk/types"; +/** + * Memoized provider chain for AWS credentials. + * The options are only reevaluated if forceRefresh=true is passed or a natural + * refresh occurs. + * + * @public + */ +export interface MemoizedRuntimeConfigAwsCredentialIdentityProvider { + (options?: AwsIdentityProperties & { + forceRefresh?: boolean; + }): Promise; +} +/** + * @internal + */ +export declare function memoizeChain(providers: RuntimeConfigAwsCredentialIdentityProvider[], treatAsExpired: (resolved: AwsCredentialIdentity) => boolean): MemoizedRuntimeConfigAwsCredentialIdentityProvider; +export declare const internalCreateChain: (providers: RuntimeConfigAwsCredentialIdentityProvider[]) => RuntimeConfigAwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-types/ts3.4/defaultProvider.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-types/ts3.4/defaultProvider.d.ts new file mode 100644 index 000000000..a8711c079 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-types/ts3.4/defaultProvider.d.ts @@ -0,0 +1,26 @@ +import { FromHttpOptions } from "@aws-sdk/credential-provider-http"; +import { FromIniInit } from "@aws-sdk/credential-provider-ini"; +import { FromProcessInit } from "@aws-sdk/credential-provider-process"; +import { + FromSSOInit, + SsoCredentialsParameters, +} from "@aws-sdk/credential-provider-sso"; +import { FromTokenFileInit } from "@aws-sdk/credential-provider-web-identity"; +import { RemoteProviderInit } from "@smithy/credential-provider-imds"; +import { AwsCredentialIdentity } from "@smithy/types"; +import { MemoizedRuntimeConfigAwsCredentialIdentityProvider } from "./runtime/memoize-chain"; +export type DefaultProviderInit = FromIniInit & + FromHttpOptions & + RemoteProviderInit & + FromProcessInit & + (FromSSOInit & Partial) & + FromTokenFileInit; +export declare const defaultProvider: ( + init?: DefaultProviderInit +) => MemoizedRuntimeConfigAwsCredentialIdentityProvider; +export declare const credentialsWillNeedRefresh: ( + credentials: AwsCredentialIdentity +) => boolean; +export declare const credentialsTreatedAsExpired: ( + credentials: AwsCredentialIdentity +) => boolean; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..c82818e53 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-types/ts3.4/index.d.ts @@ -0,0 +1 @@ +export * from "./defaultProvider"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-types/ts3.4/remoteProvider.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-types/ts3.4/remoteProvider.d.ts new file mode 100644 index 000000000..90948cc8f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-types/ts3.4/remoteProvider.d.ts @@ -0,0 +1,7 @@ +import { FromHttpOptions } from "@aws-sdk/credential-provider-http"; +import { RemoteProviderInit } from "@smithy/credential-provider-imds"; +import { AwsCredentialIdentityProvider } from "@smithy/types"; +export declare const ENV_IMDS_DISABLED = "AWS_EC2_METADATA_DISABLED"; +export declare const remoteProvider: ( + init: RemoteProviderInit | FromHttpOptions +) => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-types/ts3.4/runtime/memoize-chain.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-types/ts3.4/runtime/memoize-chain.d.ts new file mode 100644 index 000000000..dc7215713 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/dist-types/ts3.4/runtime/memoize-chain.d.ts @@ -0,0 +1,19 @@ +import { + AwsCredentialIdentity, + AwsIdentityProperties, + RuntimeConfigAwsCredentialIdentityProvider, +} from "@aws-sdk/types"; +export interface MemoizedRuntimeConfigAwsCredentialIdentityProvider { + ( + options?: AwsIdentityProperties & { + forceRefresh?: boolean; + } + ): Promise; +} +export declare function memoizeChain( + providers: RuntimeConfigAwsCredentialIdentityProvider[], + treatAsExpired: (resolved: AwsCredentialIdentity) => boolean +): MemoizedRuntimeConfigAwsCredentialIdentityProvider; +export declare const internalCreateChain: ( + providers: RuntimeConfigAwsCredentialIdentityProvider[] +) => RuntimeConfigAwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/package.json b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/package.json new file mode 100644 index 000000000..9ffc1665e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-node/package.json @@ -0,0 +1,72 @@ +{ + "name": "@aws-sdk/credential-provider-node", + "version": "3.972.21", + "description": "AWS credential provider that sources credentials from a Node.JS environment. ", + "engines": { + "node": ">=20.0.0" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline credential-provider-node", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run --reporter verbose", + "test:watch": "yarn g:vitest watch", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "keywords": [ + "aws", + "credentials" + ], + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/credential-provider-env": "^3.972.18", + "@aws-sdk/credential-provider-http": "^3.972.20", + "@aws-sdk/credential-provider-ini": "^3.972.20", + "@aws-sdk/credential-provider-process": "^3.972.18", + "@aws-sdk/credential-provider-sso": "^3.972.20", + "@aws-sdk/credential-provider-web-identity": "^3.972.20", + "@aws-sdk/types": "^3.973.6", + "@smithy/credential-provider-imds": "^4.2.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "@types/node": "^20.14.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "types": "./dist-types/index.d.ts", + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/credential-provider-node", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/credential-provider-node" + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/LICENSE b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/LICENSE new file mode 100644 index 000000000..f9a667398 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/README.md b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/README.md new file mode 100644 index 000000000..4e9d9bd48 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/README.md @@ -0,0 +1,11 @@ +# @aws-sdk/credential-provider-process + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/credential-provider-process/latest.svg)](https://www.npmjs.com/package/@aws-sdk/credential-provider-process) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/credential-provider-process.svg)](https://www.npmjs.com/package/@aws-sdk/credential-provider-process) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. Please use [@aws-sdk/credential-providers](https://www.npmjs.com/package/@aws-sdk/credential-providers) +instead. diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-cjs/index.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-cjs/index.js new file mode 100644 index 000000000..899fefb51 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-cjs/index.js @@ -0,0 +1,79 @@ +'use strict'; + +var sharedIniFileLoader = require('@smithy/shared-ini-file-loader'); +var propertyProvider = require('@smithy/property-provider'); +var node_child_process = require('node:child_process'); +var node_util = require('node:util'); +var client = require('@aws-sdk/core/client'); + +const getValidatedProcessCredentials = (profileName, data, profiles) => { + if (data.Version !== 1) { + throw Error(`Profile ${profileName} credential_process did not return Version 1.`); + } + if (data.AccessKeyId === undefined || data.SecretAccessKey === undefined) { + throw Error(`Profile ${profileName} credential_process returned invalid credentials.`); + } + if (data.Expiration) { + const currentTime = new Date(); + const expireTime = new Date(data.Expiration); + if (expireTime < currentTime) { + throw Error(`Profile ${profileName} credential_process returned expired credentials.`); + } + } + let accountId = data.AccountId; + if (!accountId && profiles?.[profileName]?.aws_account_id) { + accountId = profiles[profileName].aws_account_id; + } + const credentials = { + accessKeyId: data.AccessKeyId, + secretAccessKey: data.SecretAccessKey, + ...(data.SessionToken && { sessionToken: data.SessionToken }), + ...(data.Expiration && { expiration: new Date(data.Expiration) }), + ...(data.CredentialScope && { credentialScope: data.CredentialScope }), + ...(accountId && { accountId }), + }; + client.setCredentialFeature(credentials, "CREDENTIALS_PROCESS", "w"); + return credentials; +}; + +const resolveProcessCredentials = async (profileName, profiles, logger) => { + const profile = profiles[profileName]; + if (profiles[profileName]) { + const credentialProcess = profile["credential_process"]; + if (credentialProcess !== undefined) { + const execPromise = node_util.promisify(sharedIniFileLoader.externalDataInterceptor?.getTokenRecord?.().exec ?? node_child_process.exec); + try { + const { stdout } = await execPromise(credentialProcess); + let data; + try { + data = JSON.parse(stdout.trim()); + } + catch { + throw Error(`Profile ${profileName} credential_process returned invalid JSON.`); + } + return getValidatedProcessCredentials(profileName, data, profiles); + } + catch (error) { + throw new propertyProvider.CredentialsProviderError(error.message, { logger }); + } + } + else { + throw new propertyProvider.CredentialsProviderError(`Profile ${profileName} did not contain credential_process.`, { logger }); + } + } + else { + throw new propertyProvider.CredentialsProviderError(`Profile ${profileName} could not be found in shared credentials file.`, { + logger, + }); + } +}; + +const fromProcess = (init = {}) => async ({ callerClientConfig } = {}) => { + init.logger?.debug("@aws-sdk/credential-provider-process - fromProcess"); + const profiles = await sharedIniFileLoader.parseKnownFiles(init); + return resolveProcessCredentials(sharedIniFileLoader.getProfileName({ + profile: init.profile ?? callerClientConfig?.profile, + }), profiles, init.logger); +}; + +exports.fromProcess = fromProcess; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-es/ProcessCredentials.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-es/ProcessCredentials.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-es/ProcessCredentials.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-es/fromProcess.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-es/fromProcess.js new file mode 100644 index 000000000..9e1e8009b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-es/fromProcess.js @@ -0,0 +1,9 @@ +import { getProfileName, parseKnownFiles } from "@smithy/shared-ini-file-loader"; +import { resolveProcessCredentials } from "./resolveProcessCredentials"; +export const fromProcess = (init = {}) => async ({ callerClientConfig } = {}) => { + init.logger?.debug("@aws-sdk/credential-provider-process - fromProcess"); + const profiles = await parseKnownFiles(init); + return resolveProcessCredentials(getProfileName({ + profile: init.profile ?? callerClientConfig?.profile, + }), profiles, init.logger); +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-es/getValidatedProcessCredentials.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-es/getValidatedProcessCredentials.js new file mode 100644 index 000000000..caa0dd1b0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-es/getValidatedProcessCredentials.js @@ -0,0 +1,30 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +export const getValidatedProcessCredentials = (profileName, data, profiles) => { + if (data.Version !== 1) { + throw Error(`Profile ${profileName} credential_process did not return Version 1.`); + } + if (data.AccessKeyId === undefined || data.SecretAccessKey === undefined) { + throw Error(`Profile ${profileName} credential_process returned invalid credentials.`); + } + if (data.Expiration) { + const currentTime = new Date(); + const expireTime = new Date(data.Expiration); + if (expireTime < currentTime) { + throw Error(`Profile ${profileName} credential_process returned expired credentials.`); + } + } + let accountId = data.AccountId; + if (!accountId && profiles?.[profileName]?.aws_account_id) { + accountId = profiles[profileName].aws_account_id; + } + const credentials = { + accessKeyId: data.AccessKeyId, + secretAccessKey: data.SecretAccessKey, + ...(data.SessionToken && { sessionToken: data.SessionToken }), + ...(data.Expiration && { expiration: new Date(data.Expiration) }), + ...(data.CredentialScope && { credentialScope: data.CredentialScope }), + ...(accountId && { accountId }), + }; + setCredentialFeature(credentials, "CREDENTIALS_PROCESS", "w"); + return credentials; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-es/index.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-es/index.js new file mode 100644 index 000000000..b921d3536 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-es/index.js @@ -0,0 +1 @@ +export * from "./fromProcess"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-es/resolveProcessCredentials.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-es/resolveProcessCredentials.js new file mode 100644 index 000000000..d3bc161eb --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-es/resolveProcessCredentials.js @@ -0,0 +1,36 @@ +import { CredentialsProviderError } from "@smithy/property-provider"; +import { externalDataInterceptor } from "@smithy/shared-ini-file-loader"; +import { exec } from "node:child_process"; +import { promisify } from "node:util"; +import { getValidatedProcessCredentials } from "./getValidatedProcessCredentials"; +export const resolveProcessCredentials = async (profileName, profiles, logger) => { + const profile = profiles[profileName]; + if (profiles[profileName]) { + const credentialProcess = profile["credential_process"]; + if (credentialProcess !== undefined) { + const execPromise = promisify(externalDataInterceptor?.getTokenRecord?.().exec ?? exec); + try { + const { stdout } = await execPromise(credentialProcess); + let data; + try { + data = JSON.parse(stdout.trim()); + } + catch { + throw Error(`Profile ${profileName} credential_process returned invalid JSON.`); + } + return getValidatedProcessCredentials(profileName, data, profiles); + } + catch (error) { + throw new CredentialsProviderError(error.message, { logger }); + } + } + else { + throw new CredentialsProviderError(`Profile ${profileName} did not contain credential_process.`, { logger }); + } + } + else { + throw new CredentialsProviderError(`Profile ${profileName} could not be found in shared credentials file.`, { + logger, + }); + } +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-types/ProcessCredentials.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-types/ProcessCredentials.d.ts new file mode 100644 index 000000000..a4e6b46b9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-types/ProcessCredentials.d.ts @@ -0,0 +1,12 @@ +/** + * @internal + */ +export type ProcessCredentials = { + Version: number; + AccessKeyId: string; + SecretAccessKey: string; + SessionToken?: string; + Expiration?: number; + CredentialScope?: string; + AccountId?: string; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-types/fromProcess.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-types/fromProcess.d.ts new file mode 100644 index 000000000..ec73f39c7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-types/fromProcess.d.ts @@ -0,0 +1,14 @@ +import type { CredentialProviderOptions, RuntimeConfigAwsCredentialIdentityProvider } from "@aws-sdk/types"; +import type { SourceProfileInit } from "@smithy/shared-ini-file-loader"; +/** + * @internal + */ +export interface FromProcessInit extends SourceProfileInit, CredentialProviderOptions { +} +/** + * @internal + * + * Creates a credential provider that will read from a credential_process specified + * in ini files. + */ +export declare const fromProcess: (init?: FromProcessInit) => RuntimeConfigAwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-types/getValidatedProcessCredentials.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-types/getValidatedProcessCredentials.d.ts new file mode 100644 index 000000000..d3faa05a2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-types/getValidatedProcessCredentials.d.ts @@ -0,0 +1,6 @@ +import type { AwsCredentialIdentity, ParsedIniData } from "@smithy/types"; +import type { ProcessCredentials } from "./ProcessCredentials"; +/** + * @internal + */ +export declare const getValidatedProcessCredentials: (profileName: string, data: ProcessCredentials, profiles: ParsedIniData) => AwsCredentialIdentity; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-types/index.d.ts new file mode 100644 index 000000000..adad93945 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-types/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export * from "./fromProcess"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-types/resolveProcessCredentials.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-types/resolveProcessCredentials.d.ts new file mode 100644 index 000000000..cd4b76f5f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-types/resolveProcessCredentials.d.ts @@ -0,0 +1,5 @@ +import type { AwsCredentialIdentity, Logger, ParsedIniData } from "@smithy/types"; +/** + * @internal + */ +export declare const resolveProcessCredentials: (profileName: string, profiles: ParsedIniData, logger?: Logger) => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-types/ts3.4/ProcessCredentials.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-types/ts3.4/ProcessCredentials.d.ts new file mode 100644 index 000000000..45acf5e87 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-types/ts3.4/ProcessCredentials.d.ts @@ -0,0 +1,9 @@ +export type ProcessCredentials = { + Version: number; + AccessKeyId: string; + SecretAccessKey: string; + SessionToken?: string; + Expiration?: number; + CredentialScope?: string; + AccountId?: string; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-types/ts3.4/fromProcess.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-types/ts3.4/fromProcess.d.ts new file mode 100644 index 000000000..8e3965643 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-types/ts3.4/fromProcess.d.ts @@ -0,0 +1,11 @@ +import { + CredentialProviderOptions, + RuntimeConfigAwsCredentialIdentityProvider, +} from "@aws-sdk/types"; +import { SourceProfileInit } from "@smithy/shared-ini-file-loader"; +export interface FromProcessInit + extends SourceProfileInit, + CredentialProviderOptions {} +export declare const fromProcess: ( + init?: FromProcessInit +) => RuntimeConfigAwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-types/ts3.4/getValidatedProcessCredentials.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-types/ts3.4/getValidatedProcessCredentials.d.ts new file mode 100644 index 000000000..f44c81c20 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-types/ts3.4/getValidatedProcessCredentials.d.ts @@ -0,0 +1,7 @@ +import { AwsCredentialIdentity, ParsedIniData } from "@smithy/types"; +import { ProcessCredentials } from "./ProcessCredentials"; +export declare const getValidatedProcessCredentials: ( + profileName: string, + data: ProcessCredentials, + profiles: ParsedIniData +) => AwsCredentialIdentity; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..b921d3536 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-types/ts3.4/index.d.ts @@ -0,0 +1 @@ +export * from "./fromProcess"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-types/ts3.4/resolveProcessCredentials.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-types/ts3.4/resolveProcessCredentials.d.ts new file mode 100644 index 000000000..a204db4fd --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/dist-types/ts3.4/resolveProcessCredentials.d.ts @@ -0,0 +1,6 @@ +import { AwsCredentialIdentity, Logger, ParsedIniData } from "@smithy/types"; +export declare const resolveProcessCredentials: ( + profileName: string, + profiles: ParsedIniData, + logger?: Logger +) => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/package.json b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/package.json new file mode 100644 index 000000000..a7341c445 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-process/package.json @@ -0,0 +1,64 @@ +{ + "name": "@aws-sdk/credential-provider-process", + "version": "3.972.18", + "description": "AWS credential provider that sources credential_process from ~/.aws/credentials and ~/.aws/config", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline credential-provider-process", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "keywords": [ + "aws", + "credentials" + ], + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "@types/node": "^20.14.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/credential-provider-process", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/credential-provider-process" + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/LICENSE b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/LICENSE new file mode 100644 index 000000000..f9a667398 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/README.md b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/README.md new file mode 100644 index 000000000..aba3fa806 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/README.md @@ -0,0 +1,11 @@ +# @aws-sdk/credential-provider-sso + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/credential-provider-sso/latest.svg)](https://www.npmjs.com/package/@aws-sdk/credential-provider-sso) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/credential-provider-sso.svg)](https://www.npmjs.com/package/@aws-sdk/credential-provider-sso) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. Please use [@aws-sdk/credential-providers](https://www.npmjs.com/package/@aws-sdk/credential-providers) +instead. diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-cjs/index.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-cjs/index.js new file mode 100644 index 000000000..85d3612dd --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-cjs/index.js @@ -0,0 +1,192 @@ +'use strict'; + +var propertyProvider = require('@smithy/property-provider'); +var sharedIniFileLoader = require('@smithy/shared-ini-file-loader'); +var client = require('@aws-sdk/core/client'); +var tokenProviders = require('@aws-sdk/token-providers'); + +const isSsoProfile = (arg) => arg && + (typeof arg.sso_start_url === "string" || + typeof arg.sso_account_id === "string" || + typeof arg.sso_session === "string" || + typeof arg.sso_region === "string" || + typeof arg.sso_role_name === "string"); + +const SHOULD_FAIL_CREDENTIAL_CHAIN = false; +const resolveSSOCredentials = async ({ ssoStartUrl, ssoSession, ssoAccountId, ssoRegion, ssoRoleName, ssoClient, clientConfig, parentClientConfig, callerClientConfig, profile, filepath, configFilepath, ignoreCache, logger, }) => { + let token; + const refreshMessage = `To refresh this SSO session run aws sso login with the corresponding profile.`; + if (ssoSession) { + try { + const _token = await tokenProviders.fromSso({ + profile, + filepath, + configFilepath, + ignoreCache, + })(); + token = { + accessToken: _token.token, + expiresAt: new Date(_token.expiration).toISOString(), + }; + } + catch (e) { + throw new propertyProvider.CredentialsProviderError(e.message, { + tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN, + logger, + }); + } + } + else { + try { + token = await sharedIniFileLoader.getSSOTokenFromFile(ssoStartUrl); + } + catch (e) { + throw new propertyProvider.CredentialsProviderError(`The SSO session associated with this profile is invalid. ${refreshMessage}`, { + tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN, + logger, + }); + } + } + if (new Date(token.expiresAt).getTime() - Date.now() <= 0) { + throw new propertyProvider.CredentialsProviderError(`The SSO session associated with this profile has expired. ${refreshMessage}`, { + tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN, + logger, + }); + } + const { accessToken } = token; + const { SSOClient, GetRoleCredentialsCommand } = await Promise.resolve().then(function () { return require('./loadSso-BKDNrsal.js'); }); + const sso = ssoClient || + new SSOClient(Object.assign({}, clientConfig ?? {}, { + logger: clientConfig?.logger ?? callerClientConfig?.logger ?? parentClientConfig?.logger, + region: clientConfig?.region ?? ssoRegion, + userAgentAppId: clientConfig?.userAgentAppId ?? callerClientConfig?.userAgentAppId ?? parentClientConfig?.userAgentAppId, + })); + let ssoResp; + try { + ssoResp = await sso.send(new GetRoleCredentialsCommand({ + accountId: ssoAccountId, + roleName: ssoRoleName, + accessToken, + })); + } + catch (e) { + throw new propertyProvider.CredentialsProviderError(e, { + tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN, + logger, + }); + } + const { roleCredentials: { accessKeyId, secretAccessKey, sessionToken, expiration, credentialScope, accountId } = {}, } = ssoResp; + if (!accessKeyId || !secretAccessKey || !sessionToken || !expiration) { + throw new propertyProvider.CredentialsProviderError("SSO returns an invalid temporary credential.", { + tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN, + logger, + }); + } + const credentials = { + accessKeyId, + secretAccessKey, + sessionToken, + expiration: new Date(expiration), + ...(credentialScope && { credentialScope }), + ...(accountId && { accountId }), + }; + if (ssoSession) { + client.setCredentialFeature(credentials, "CREDENTIALS_SSO", "s"); + } + else { + client.setCredentialFeature(credentials, "CREDENTIALS_SSO_LEGACY", "u"); + } + return credentials; +}; + +const validateSsoProfile = (profile, logger) => { + const { sso_start_url, sso_account_id, sso_region, sso_role_name } = profile; + if (!sso_start_url || !sso_account_id || !sso_region || !sso_role_name) { + throw new propertyProvider.CredentialsProviderError(`Profile is configured with invalid SSO credentials. Required parameters "sso_account_id", ` + + `"sso_region", "sso_role_name", "sso_start_url". Got ${Object.keys(profile).join(", ")}\nReference: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html`, { tryNextLink: false, logger }); + } + return profile; +}; + +const fromSSO = (init = {}) => async ({ callerClientConfig } = {}) => { + init.logger?.debug("@aws-sdk/credential-provider-sso - fromSSO"); + const { ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoSession } = init; + const { ssoClient } = init; + const profileName = sharedIniFileLoader.getProfileName({ + profile: init.profile ?? callerClientConfig?.profile, + }); + if (!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName && !ssoSession) { + const profiles = await sharedIniFileLoader.parseKnownFiles(init); + const profile = profiles[profileName]; + if (!profile) { + throw new propertyProvider.CredentialsProviderError(`Profile ${profileName} was not found.`, { logger: init.logger }); + } + if (!isSsoProfile(profile)) { + throw new propertyProvider.CredentialsProviderError(`Profile ${profileName} is not configured with SSO credentials.`, { + logger: init.logger, + }); + } + if (profile?.sso_session) { + const ssoSessions = await sharedIniFileLoader.loadSsoSessionData(init); + const session = ssoSessions[profile.sso_session]; + const conflictMsg = ` configurations in profile ${profileName} and sso-session ${profile.sso_session}`; + if (ssoRegion && ssoRegion !== session.sso_region) { + throw new propertyProvider.CredentialsProviderError(`Conflicting SSO region` + conflictMsg, { + tryNextLink: false, + logger: init.logger, + }); + } + if (ssoStartUrl && ssoStartUrl !== session.sso_start_url) { + throw new propertyProvider.CredentialsProviderError(`Conflicting SSO start_url` + conflictMsg, { + tryNextLink: false, + logger: init.logger, + }); + } + profile.sso_region = session.sso_region; + profile.sso_start_url = session.sso_start_url; + } + const { sso_start_url, sso_account_id, sso_region, sso_role_name, sso_session } = validateSsoProfile(profile, init.logger); + return resolveSSOCredentials({ + ssoStartUrl: sso_start_url, + ssoSession: sso_session, + ssoAccountId: sso_account_id, + ssoRegion: sso_region, + ssoRoleName: sso_role_name, + ssoClient: ssoClient, + clientConfig: init.clientConfig, + parentClientConfig: init.parentClientConfig, + callerClientConfig: init.callerClientConfig, + profile: profileName, + filepath: init.filepath, + configFilepath: init.configFilepath, + ignoreCache: init.ignoreCache, + logger: init.logger, + }); + } + else if (!ssoStartUrl || !ssoAccountId || !ssoRegion || !ssoRoleName) { + throw new propertyProvider.CredentialsProviderError("Incomplete configuration. The fromSSO() argument hash must include " + + '"ssoStartUrl", "ssoAccountId", "ssoRegion", "ssoRoleName"', { tryNextLink: false, logger: init.logger }); + } + else { + return resolveSSOCredentials({ + ssoStartUrl, + ssoSession, + ssoAccountId, + ssoRegion, + ssoRoleName, + ssoClient, + clientConfig: init.clientConfig, + parentClientConfig: init.parentClientConfig, + callerClientConfig: init.callerClientConfig, + profile: profileName, + filepath: init.filepath, + configFilepath: init.configFilepath, + ignoreCache: init.ignoreCache, + logger: init.logger, + }); + } +}; + +exports.fromSSO = fromSSO; +exports.isSsoProfile = isSsoProfile; +exports.validateSsoProfile = validateSsoProfile; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-cjs/loadSso-BKDNrsal.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-cjs/loadSso-BKDNrsal.js new file mode 100644 index 000000000..f2e8e97fe --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-cjs/loadSso-BKDNrsal.js @@ -0,0 +1,8 @@ +'use strict'; + +var sso = require('@aws-sdk/nested-clients/sso'); + + + +exports.GetRoleCredentialsCommand = sso.GetRoleCredentialsCommand; +exports.SSOClient = sso.SSOClient; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-es/fromSSO.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-es/fromSSO.js new file mode 100644 index 000000000..60daab106 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-es/fromSSO.js @@ -0,0 +1,83 @@ +import { CredentialsProviderError } from "@smithy/property-provider"; +import { getProfileName, loadSsoSessionData, parseKnownFiles } from "@smithy/shared-ini-file-loader"; +import { isSsoProfile } from "./isSsoProfile"; +import { resolveSSOCredentials } from "./resolveSSOCredentials"; +import { validateSsoProfile } from "./validateSsoProfile"; +export const fromSSO = (init = {}) => async ({ callerClientConfig } = {}) => { + init.logger?.debug("@aws-sdk/credential-provider-sso - fromSSO"); + const { ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoSession } = init; + const { ssoClient } = init; + const profileName = getProfileName({ + profile: init.profile ?? callerClientConfig?.profile, + }); + if (!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName && !ssoSession) { + const profiles = await parseKnownFiles(init); + const profile = profiles[profileName]; + if (!profile) { + throw new CredentialsProviderError(`Profile ${profileName} was not found.`, { logger: init.logger }); + } + if (!isSsoProfile(profile)) { + throw new CredentialsProviderError(`Profile ${profileName} is not configured with SSO credentials.`, { + logger: init.logger, + }); + } + if (profile?.sso_session) { + const ssoSessions = await loadSsoSessionData(init); + const session = ssoSessions[profile.sso_session]; + const conflictMsg = ` configurations in profile ${profileName} and sso-session ${profile.sso_session}`; + if (ssoRegion && ssoRegion !== session.sso_region) { + throw new CredentialsProviderError(`Conflicting SSO region` + conflictMsg, { + tryNextLink: false, + logger: init.logger, + }); + } + if (ssoStartUrl && ssoStartUrl !== session.sso_start_url) { + throw new CredentialsProviderError(`Conflicting SSO start_url` + conflictMsg, { + tryNextLink: false, + logger: init.logger, + }); + } + profile.sso_region = session.sso_region; + profile.sso_start_url = session.sso_start_url; + } + const { sso_start_url, sso_account_id, sso_region, sso_role_name, sso_session } = validateSsoProfile(profile, init.logger); + return resolveSSOCredentials({ + ssoStartUrl: sso_start_url, + ssoSession: sso_session, + ssoAccountId: sso_account_id, + ssoRegion: sso_region, + ssoRoleName: sso_role_name, + ssoClient: ssoClient, + clientConfig: init.clientConfig, + parentClientConfig: init.parentClientConfig, + callerClientConfig: init.callerClientConfig, + profile: profileName, + filepath: init.filepath, + configFilepath: init.configFilepath, + ignoreCache: init.ignoreCache, + logger: init.logger, + }); + } + else if (!ssoStartUrl || !ssoAccountId || !ssoRegion || !ssoRoleName) { + throw new CredentialsProviderError("Incomplete configuration. The fromSSO() argument hash must include " + + '"ssoStartUrl", "ssoAccountId", "ssoRegion", "ssoRoleName"', { tryNextLink: false, logger: init.logger }); + } + else { + return resolveSSOCredentials({ + ssoStartUrl, + ssoSession, + ssoAccountId, + ssoRegion, + ssoRoleName, + ssoClient, + clientConfig: init.clientConfig, + parentClientConfig: init.parentClientConfig, + callerClientConfig: init.callerClientConfig, + profile: profileName, + filepath: init.filepath, + configFilepath: init.configFilepath, + ignoreCache: init.ignoreCache, + logger: init.logger, + }); + } +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-es/index.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-es/index.js new file mode 100644 index 000000000..7215fb687 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-es/index.js @@ -0,0 +1,4 @@ +export * from "./fromSSO"; +export * from "./isSsoProfile"; +export * from "./types"; +export * from "./validateSsoProfile"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-es/isSsoProfile.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-es/isSsoProfile.js new file mode 100644 index 000000000..e6554380e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-es/isSsoProfile.js @@ -0,0 +1,6 @@ +export const isSsoProfile = (arg) => arg && + (typeof arg.sso_start_url === "string" || + typeof arg.sso_account_id === "string" || + typeof arg.sso_session === "string" || + typeof arg.sso_region === "string" || + typeof arg.sso_role_name === "string"); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-es/loadSso.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-es/loadSso.js new file mode 100644 index 000000000..67d9d9cec --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-es/loadSso.js @@ -0,0 +1,2 @@ +import { GetRoleCredentialsCommand, SSOClient } from "@aws-sdk/nested-clients/sso"; +export { GetRoleCredentialsCommand, SSOClient }; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-es/resolveSSOCredentials.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-es/resolveSSOCredentials.js new file mode 100644 index 000000000..71b54b8cf --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-es/resolveSSOCredentials.js @@ -0,0 +1,90 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +import { fromSso as getSsoTokenProvider } from "@aws-sdk/token-providers"; +import { CredentialsProviderError } from "@smithy/property-provider"; +import { getSSOTokenFromFile } from "@smithy/shared-ini-file-loader"; +const SHOULD_FAIL_CREDENTIAL_CHAIN = false; +export const resolveSSOCredentials = async ({ ssoStartUrl, ssoSession, ssoAccountId, ssoRegion, ssoRoleName, ssoClient, clientConfig, parentClientConfig, callerClientConfig, profile, filepath, configFilepath, ignoreCache, logger, }) => { + let token; + const refreshMessage = `To refresh this SSO session run aws sso login with the corresponding profile.`; + if (ssoSession) { + try { + const _token = await getSsoTokenProvider({ + profile, + filepath, + configFilepath, + ignoreCache, + })(); + token = { + accessToken: _token.token, + expiresAt: new Date(_token.expiration).toISOString(), + }; + } + catch (e) { + throw new CredentialsProviderError(e.message, { + tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN, + logger, + }); + } + } + else { + try { + token = await getSSOTokenFromFile(ssoStartUrl); + } + catch (e) { + throw new CredentialsProviderError(`The SSO session associated with this profile is invalid. ${refreshMessage}`, { + tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN, + logger, + }); + } + } + if (new Date(token.expiresAt).getTime() - Date.now() <= 0) { + throw new CredentialsProviderError(`The SSO session associated with this profile has expired. ${refreshMessage}`, { + tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN, + logger, + }); + } + const { accessToken } = token; + const { SSOClient, GetRoleCredentialsCommand } = await import("./loadSso"); + const sso = ssoClient || + new SSOClient(Object.assign({}, clientConfig ?? {}, { + logger: clientConfig?.logger ?? callerClientConfig?.logger ?? parentClientConfig?.logger, + region: clientConfig?.region ?? ssoRegion, + userAgentAppId: clientConfig?.userAgentAppId ?? callerClientConfig?.userAgentAppId ?? parentClientConfig?.userAgentAppId, + })); + let ssoResp; + try { + ssoResp = await sso.send(new GetRoleCredentialsCommand({ + accountId: ssoAccountId, + roleName: ssoRoleName, + accessToken, + })); + } + catch (e) { + throw new CredentialsProviderError(e, { + tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN, + logger, + }); + } + const { roleCredentials: { accessKeyId, secretAccessKey, sessionToken, expiration, credentialScope, accountId } = {}, } = ssoResp; + if (!accessKeyId || !secretAccessKey || !sessionToken || !expiration) { + throw new CredentialsProviderError("SSO returns an invalid temporary credential.", { + tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN, + logger, + }); + } + const credentials = { + accessKeyId, + secretAccessKey, + sessionToken, + expiration: new Date(expiration), + ...(credentialScope && { credentialScope }), + ...(accountId && { accountId }), + }; + if (ssoSession) { + setCredentialFeature(credentials, "CREDENTIALS_SSO", "s"); + } + else { + setCredentialFeature(credentials, "CREDENTIALS_SSO_LEGACY", "u"); + } + return credentials; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-es/types.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-es/types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-es/types.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-es/validateSsoProfile.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-es/validateSsoProfile.js new file mode 100644 index 000000000..94174b68b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-es/validateSsoProfile.js @@ -0,0 +1,9 @@ +import { CredentialsProviderError } from "@smithy/property-provider"; +export const validateSsoProfile = (profile, logger) => { + const { sso_start_url, sso_account_id, sso_region, sso_role_name } = profile; + if (!sso_start_url || !sso_account_id || !sso_region || !sso_role_name) { + throw new CredentialsProviderError(`Profile is configured with invalid SSO credentials. Required parameters "sso_account_id", ` + + `"sso_region", "sso_role_name", "sso_start_url". Got ${Object.keys(profile).join(", ")}\nReference: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html`, { tryNextLink: false, logger }); + } + return profile; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/fromSSO.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/fromSSO.d.ts new file mode 100644 index 000000000..76747b69d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/fromSSO.d.ts @@ -0,0 +1,69 @@ +import type { AwsIdentityProperties, CredentialProviderOptions, RuntimeConfigAwsCredentialIdentityProvider } from "@aws-sdk/types"; +import type { SourceProfileInit } from "@smithy/shared-ini-file-loader"; +import type { SSOClient, SSOClientConfig } from "./loadSso"; +/** + * @internal + */ +export interface SsoCredentialsParameters { + /** + * The URL to the AWS SSO service. + */ + ssoStartUrl: string; + /** + * SSO session identifier. + * Presence implies usage of the SSOTokenProvider. + */ + ssoSession?: string; + /** + * The ID of the AWS account to use for temporary credentials. + */ + ssoAccountId: string; + /** + * The AWS region to use for temporary credentials. + */ + ssoRegion: string; + /** + * The name of the AWS role to assume. + */ + ssoRoleName: string; +} +/** + * @internal + */ +export interface FromSSOInit extends SourceProfileInit, CredentialProviderOptions { + ssoClient?: SSOClient; + clientConfig?: SSOClientConfig; + callerClientConfig?: AwsIdentityProperties["callerClientConfig"]; +} +/** + * @internal + * + * Creates a credential provider that will read from a credential_process specified + * in ini files. + * + * The SSO credential provider must support both + * + * 1. the legacy profile format, + * @example + * ``` + * [profile sample-profile] + * sso_account_id = 012345678901 + * sso_region = us-east-1 + * sso_role_name = SampleRole + * sso_start_url = https://www.....com/start + * ``` + * + * 2. and the profile format for SSO Token Providers. + * @example + * ``` + * [profile sso-profile] + * sso_session = dev + * sso_account_id = 012345678901 + * sso_role_name = SampleRole + * + * [sso-session dev] + * sso_region = us-east-1 + * sso_start_url = https://www.....com/start + * ``` + */ +export declare const fromSSO: (init?: FromSSOInit & Partial) => RuntimeConfigAwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/index.d.ts new file mode 100644 index 000000000..d851c1523 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/index.d.ts @@ -0,0 +1,16 @@ +/** + * @internal + */ +export * from "./fromSSO"; +/** + * @internal + */ +export * from "./isSsoProfile"; +/** + * @internal + */ +export * from "./types"; +/** + * @internal + */ +export * from "./validateSsoProfile"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/isSsoProfile.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/isSsoProfile.d.ts new file mode 100644 index 000000000..f627420ac --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/isSsoProfile.d.ts @@ -0,0 +1,6 @@ +import type { Profile } from "@smithy/types"; +import type { SsoProfile } from "./types"; +/** + * @internal + */ +export declare const isSsoProfile: (arg: Profile) => arg is Partial; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/loadSso.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/loadSso.d.ts new file mode 100644 index 000000000..182bec1da --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/loadSso.d.ts @@ -0,0 +1,3 @@ +import { GetRoleCredentialsCommand, SSOClient } from "@aws-sdk/nested-clients/sso"; +export { GetRoleCredentialsCommand, SSOClient }; +export type { SSOClientConfig, GetRoleCredentialsCommandOutput } from "@aws-sdk/nested-clients/sso"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/resolveSSOCredentials.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/resolveSSOCredentials.d.ts new file mode 100644 index 000000000..f395debfc --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/resolveSSOCredentials.d.ts @@ -0,0 +1,6 @@ +import type { AwsCredentialIdentity } from "@smithy/types"; +import type { FromSSOInit, SsoCredentialsParameters } from "./fromSSO"; +/** + * @internal + */ +export declare const resolveSSOCredentials: ({ ssoStartUrl, ssoSession, ssoAccountId, ssoRegion, ssoRoleName, ssoClient, clientConfig, parentClientConfig, callerClientConfig, profile, filepath, configFilepath, ignoreCache, logger, }: FromSSOInit & SsoCredentialsParameters) => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/fromSSO.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/fromSSO.d.ts new file mode 100644 index 000000000..39b0d5acf --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/fromSSO.d.ts @@ -0,0 +1,24 @@ +import { + AwsIdentityProperties, + CredentialProviderOptions, + RuntimeConfigAwsCredentialIdentityProvider, +} from "@aws-sdk/types"; +import { SourceProfileInit } from "@smithy/shared-ini-file-loader"; +import { SSOClient, SSOClientConfig } from "./loadSso"; +export interface SsoCredentialsParameters { + ssoStartUrl: string; + ssoSession?: string; + ssoAccountId: string; + ssoRegion: string; + ssoRoleName: string; +} +export interface FromSSOInit + extends SourceProfileInit, + CredentialProviderOptions { + ssoClient?: SSOClient; + clientConfig?: SSOClientConfig; + callerClientConfig?: AwsIdentityProperties["callerClientConfig"]; +} +export declare const fromSSO: ( + init?: FromSSOInit & Partial +) => RuntimeConfigAwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..7215fb687 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/index.d.ts @@ -0,0 +1,4 @@ +export * from "./fromSSO"; +export * from "./isSsoProfile"; +export * from "./types"; +export * from "./validateSsoProfile"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/isSsoProfile.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/isSsoProfile.d.ts new file mode 100644 index 000000000..b4e8bdddd --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/isSsoProfile.d.ts @@ -0,0 +1,3 @@ +import { Profile } from "@smithy/types"; +import { SsoProfile } from "./types"; +export declare const isSsoProfile: (arg: Profile) => arg is Partial; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/loadSso.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/loadSso.d.ts new file mode 100644 index 000000000..749ebc18d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/loadSso.d.ts @@ -0,0 +1,9 @@ +import { + GetRoleCredentialsCommand, + SSOClient, +} from "@aws-sdk/nested-clients/sso"; +export { GetRoleCredentialsCommand, SSOClient }; +export { + SSOClientConfig, + GetRoleCredentialsCommandOutput, +} from "@aws-sdk/nested-clients/sso"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/resolveSSOCredentials.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/resolveSSOCredentials.d.ts new file mode 100644 index 000000000..044a7594f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/resolveSSOCredentials.d.ts @@ -0,0 +1,18 @@ +import { AwsCredentialIdentity } from "@smithy/types"; +import { FromSSOInit, SsoCredentialsParameters } from "./fromSSO"; +export declare const resolveSSOCredentials: ({ + ssoStartUrl, + ssoSession, + ssoAccountId, + ssoRegion, + ssoRoleName, + ssoClient, + clientConfig, + parentClientConfig, + callerClientConfig, + profile, + filepath, + configFilepath, + ignoreCache, + logger, +}: FromSSOInit & SsoCredentialsParameters) => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/types.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/types.d.ts new file mode 100644 index 000000000..4a3986b32 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/types.d.ts @@ -0,0 +1,14 @@ +import { Profile } from "@smithy/types"; +export interface SSOToken { + accessToken: string; + expiresAt: string; + region?: string; + startUrl?: string; +} +export interface SsoProfile extends Profile { + sso_start_url: string; + sso_session?: string; + sso_account_id: string; + sso_region: string; + sso_role_name: string; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/validateSsoProfile.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/validateSsoProfile.d.ts new file mode 100644 index 000000000..6572fc43a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/validateSsoProfile.d.ts @@ -0,0 +1,6 @@ +import { Logger } from "@smithy/types"; +import { SsoProfile } from "./types"; +export declare const validateSsoProfile: ( + profile: Partial, + logger?: Logger +) => SsoProfile; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/types.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/types.d.ts new file mode 100644 index 000000000..632bb168d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/types.d.ts @@ -0,0 +1,22 @@ +import type { Profile } from "@smithy/types"; +/** + * @internal + * + * Cached SSO token retrieved from SSO login flow. + */ +export interface SSOToken { + accessToken: string; + expiresAt: string; + region?: string; + startUrl?: string; +} +/** + * @internal + */ +export interface SsoProfile extends Profile { + sso_start_url: string; + sso_session?: string; + sso_account_id: string; + sso_region: string; + sso_role_name: string; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/validateSsoProfile.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/validateSsoProfile.d.ts new file mode 100644 index 000000000..9df0144ca --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/dist-types/validateSsoProfile.d.ts @@ -0,0 +1,6 @@ +import type { Logger } from "@smithy/types"; +import type { SsoProfile } from "./types"; +/** + * @internal + */ +export declare const validateSsoProfile: (profile: Partial, logger?: Logger) => SsoProfile; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/package.json b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/package.json new file mode 100644 index 000000000..57d99b23e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-sso/package.json @@ -0,0 +1,66 @@ +{ + "name": "@aws-sdk/credential-provider-sso", + "version": "3.972.20", + "description": "AWS credential provider that exchanges a resolved SSO login token file for temporary AWS credentials", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline credential-provider-sso", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "keywords": [ + "aws", + "credentials" + ], + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/nested-clients": "^3.996.10", + "@aws-sdk/token-providers": "3.1009.0", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "@types/node": "^20.14.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/credential-provider-sso", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/credential-provider-sso" + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/LICENSE b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/LICENSE new file mode 100644 index 000000000..f9a667398 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/README.md b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/README.md new file mode 100644 index 000000000..e4858a41b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/README.md @@ -0,0 +1,11 @@ +# @aws-sdk/credential-provider-web-identity + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/credential-provider-web-identity/latest.svg)](https://www.npmjs.com/package/@aws-sdk/credential-provider-web-identity) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/credential-provider-web-identity.svg)](https://www.npmjs.com/package/@aws-sdk/credential-provider-web-identity) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. Please use [@aws-sdk/credential-providers](https://www.npmjs.com/package/@aws-sdk/credential-providers) +instead. diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromTokenFile.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromTokenFile.js new file mode 100644 index 000000000..fe46312e9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromTokenFile.js @@ -0,0 +1,34 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromTokenFile = void 0; +const client_1 = require("@aws-sdk/core/client"); +const property_provider_1 = require("@smithy/property-provider"); +const shared_ini_file_loader_1 = require("@smithy/shared-ini-file-loader"); +const node_fs_1 = require("node:fs"); +const fromWebToken_1 = require("./fromWebToken"); +const ENV_TOKEN_FILE = "AWS_WEB_IDENTITY_TOKEN_FILE"; +const ENV_ROLE_ARN = "AWS_ROLE_ARN"; +const ENV_ROLE_SESSION_NAME = "AWS_ROLE_SESSION_NAME"; +const fromTokenFile = (init = {}) => async (awsIdentityProperties) => { + init.logger?.debug("@aws-sdk/credential-provider-web-identity - fromTokenFile"); + const webIdentityTokenFile = init?.webIdentityTokenFile ?? process.env[ENV_TOKEN_FILE]; + const roleArn = init?.roleArn ?? process.env[ENV_ROLE_ARN]; + const roleSessionName = init?.roleSessionName ?? process.env[ENV_ROLE_SESSION_NAME]; + if (!webIdentityTokenFile || !roleArn) { + throw new property_provider_1.CredentialsProviderError("Web identity configuration not specified", { + logger: init.logger, + }); + } + const credentials = await (0, fromWebToken_1.fromWebToken)({ + ...init, + webIdentityToken: shared_ini_file_loader_1.externalDataInterceptor?.getTokenRecord?.()[webIdentityTokenFile] ?? + (0, node_fs_1.readFileSync)(webIdentityTokenFile, { encoding: "ascii" }), + roleArn, + roleSessionName, + })(awsIdentityProperties); + if (webIdentityTokenFile === process.env[ENV_TOKEN_FILE]) { + (0, client_1.setCredentialFeature)(credentials, "CREDENTIALS_ENV_VARS_STS_WEB_ID_TOKEN", "h"); + } + return credentials; +}; +exports.fromTokenFile = fromTokenFile; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromWebToken.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromWebToken.js new file mode 100644 index 000000000..b92af292e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromWebToken.js @@ -0,0 +1,62 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || (function () { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromWebToken = void 0; +const fromWebToken = (init) => async (awsIdentityProperties) => { + init.logger?.debug("@aws-sdk/credential-provider-web-identity - fromWebToken"); + const { roleArn, roleSessionName, webIdentityToken, providerId, policyArns, policy, durationSeconds } = init; + let { roleAssumerWithWebIdentity } = init; + if (!roleAssumerWithWebIdentity) { + const { getDefaultRoleAssumerWithWebIdentity } = await Promise.resolve().then(() => __importStar(require("@aws-sdk/nested-clients/sts"))); + roleAssumerWithWebIdentity = getDefaultRoleAssumerWithWebIdentity({ + ...init.clientConfig, + credentialProviderLogger: init.logger, + parentClientConfig: { + ...awsIdentityProperties?.callerClientConfig, + ...init.parentClientConfig, + }, + }, init.clientPlugins); + } + return roleAssumerWithWebIdentity({ + RoleArn: roleArn, + RoleSessionName: roleSessionName ?? `aws-sdk-js-session-${Date.now()}`, + WebIdentityToken: webIdentityToken, + ProviderId: providerId, + PolicyArns: policyArns, + Policy: policy, + DurationSeconds: durationSeconds, + }); +}; +exports.fromWebToken = fromWebToken; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/index.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/index.js new file mode 100644 index 000000000..d4674e769 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/index.js @@ -0,0 +1,27 @@ +'use strict'; + +var fromTokenFile = require('./fromTokenFile'); +var fromWebToken = require('./fromWebToken'); + + + +Object.prototype.hasOwnProperty.call(fromTokenFile, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: fromTokenFile['__proto__'] + }); + +Object.keys(fromTokenFile).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = fromTokenFile[k]; +}); +Object.prototype.hasOwnProperty.call(fromWebToken, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: fromWebToken['__proto__'] + }); + +Object.keys(fromWebToken).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = fromWebToken[k]; +}); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-es/fromTokenFile.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-es/fromTokenFile.js new file mode 100644 index 000000000..a62440729 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-es/fromTokenFile.js @@ -0,0 +1,30 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +import { CredentialsProviderError } from "@smithy/property-provider"; +import { externalDataInterceptor } from "@smithy/shared-ini-file-loader"; +import { readFileSync } from "node:fs"; +import { fromWebToken } from "./fromWebToken"; +const ENV_TOKEN_FILE = "AWS_WEB_IDENTITY_TOKEN_FILE"; +const ENV_ROLE_ARN = "AWS_ROLE_ARN"; +const ENV_ROLE_SESSION_NAME = "AWS_ROLE_SESSION_NAME"; +export const fromTokenFile = (init = {}) => async (awsIdentityProperties) => { + init.logger?.debug("@aws-sdk/credential-provider-web-identity - fromTokenFile"); + const webIdentityTokenFile = init?.webIdentityTokenFile ?? process.env[ENV_TOKEN_FILE]; + const roleArn = init?.roleArn ?? process.env[ENV_ROLE_ARN]; + const roleSessionName = init?.roleSessionName ?? process.env[ENV_ROLE_SESSION_NAME]; + if (!webIdentityTokenFile || !roleArn) { + throw new CredentialsProviderError("Web identity configuration not specified", { + logger: init.logger, + }); + } + const credentials = await fromWebToken({ + ...init, + webIdentityToken: externalDataInterceptor?.getTokenRecord?.()[webIdentityTokenFile] ?? + readFileSync(webIdentityTokenFile, { encoding: "ascii" }), + roleArn, + roleSessionName, + })(awsIdentityProperties); + if (webIdentityTokenFile === process.env[ENV_TOKEN_FILE]) { + setCredentialFeature(credentials, "CREDENTIALS_ENV_VARS_STS_WEB_ID_TOKEN", "h"); + } + return credentials; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-es/fromWebToken.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-es/fromWebToken.js new file mode 100644 index 000000000..268e0aaba --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-es/fromWebToken.js @@ -0,0 +1,25 @@ +export const fromWebToken = (init) => async (awsIdentityProperties) => { + init.logger?.debug("@aws-sdk/credential-provider-web-identity - fromWebToken"); + const { roleArn, roleSessionName, webIdentityToken, providerId, policyArns, policy, durationSeconds } = init; + let { roleAssumerWithWebIdentity } = init; + if (!roleAssumerWithWebIdentity) { + const { getDefaultRoleAssumerWithWebIdentity } = await import("@aws-sdk/nested-clients/sts"); + roleAssumerWithWebIdentity = getDefaultRoleAssumerWithWebIdentity({ + ...init.clientConfig, + credentialProviderLogger: init.logger, + parentClientConfig: { + ...awsIdentityProperties?.callerClientConfig, + ...init.parentClientConfig, + }, + }, init.clientPlugins); + } + return roleAssumerWithWebIdentity({ + RoleArn: roleArn, + RoleSessionName: roleSessionName ?? `aws-sdk-js-session-${Date.now()}`, + WebIdentityToken: webIdentityToken, + ProviderId: providerId, + PolicyArns: policyArns, + Policy: policy, + DurationSeconds: durationSeconds, + }); +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-es/index.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-es/index.js new file mode 100644 index 000000000..0e900c0a1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-es/index.js @@ -0,0 +1,2 @@ +export * from "./fromTokenFile"; +export * from "./fromWebToken"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/fromTokenFile.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/fromTokenFile.d.ts new file mode 100644 index 000000000..6aa9a1491 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/fromTokenFile.d.ts @@ -0,0 +1,17 @@ +import type { CredentialProviderOptions, RuntimeConfigAwsCredentialIdentityProvider } from "@aws-sdk/types"; +import type { FromWebTokenInit } from "./fromWebToken"; +/** + * @public + */ +export interface FromTokenFileInit extends Partial>, CredentialProviderOptions { + /** + * File location of where the `OIDC` token is stored. + */ + webIdentityTokenFile?: string; +} +/** + * @internal + * + * Represents OIDC credentials from a file on disk. + */ +export declare const fromTokenFile: (init?: FromTokenFileInit) => RuntimeConfigAwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/fromWebToken.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/fromWebToken.d.ts new file mode 100644 index 000000000..6b5e066c1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/fromWebToken.d.ts @@ -0,0 +1,145 @@ +import type { CredentialProviderOptions, RuntimeConfigAwsCredentialIdentityProvider } from "@aws-sdk/types"; +import type { AwsCredentialIdentity, Pluggable } from "@smithy/types"; +/** + * @public + */ +export interface AssumeRoleWithWebIdentityParams { + /** + *

The Amazon Resource Name (ARN) of the role that the caller is assuming.

+ */ + RoleArn: string; + /** + *

An identifier for the assumed role session. Typically, you pass the name or identifier + * that is associated with the user who is using your application. That way, the temporary + * security credentials that your application will use are associated with that user. This + * session name is included as part of the ARN and assumed role ID in the + * AssumedRoleUser response element.

+ *

The regex used to validate this parameter is a string of characters + * consisting of upper- and lower-case alphanumeric characters with no spaces. You can + * also include underscores or any of the following characters: =,.@-

+ */ + RoleSessionName: string; + /** + *

The OAuth 2.0 access token or OpenID Connect ID token that is provided by the identity + * provider. Your application must get this token by authenticating the user who is using your + * application with a web identity provider before the application makes an + * AssumeRoleWithWebIdentity call.

+ */ + WebIdentityToken: string; + /** + *

The fully qualified host component of the domain name of the identity provider.

+ *

Specify this value only for OAuth 2.0 access tokens. Currently + * www.amazon.com and graph.facebook.com are the only supported + * identity providers for OAuth 2.0 access tokens. Do not include URL schemes and port + * numbers.

+ *

Do not specify this value for OpenID Connect ID tokens.

+ */ + ProviderId?: string; + /** + *

The Amazon Resource Names (ARNs) of the IAM managed policies that you want to use as + * managed session policies. The policies must exist in the same account as the role.

+ *

This parameter is optional. You can provide up to 10 managed policy ARNs. However, the + * plain text that you use for both inline and managed session policies can't exceed 2,048 + * characters. For more information about ARNs, see Amazon Resource Names (ARNs) and AWS + * Service Namespaces in the AWS General Reference.

+ * + *

An AWS conversion compresses the passed session policies and session tags into a + * packed binary format that has a separate limit. Your request can fail for this limit + * even if your plain text meets the other requirements. The PackedPolicySize + * response element indicates by percentage how close the policies and tags for your + * request are to the upper size limit. + *

+ *
+ * + *

Passing policies to this operation returns new + * temporary credentials. The resulting session's permissions are the intersection of the + * role's identity-based policy and the session policies. You can use the role's temporary + * credentials in subsequent AWS API calls to access resources in the account that owns + * the role. You cannot use session policies to grant more permissions than those allowed + * by the identity-based policy of the role that is being assumed. For more information, see + * Session + * Policies in the IAM User Guide.

+ */ + PolicyArns?: { + arn?: string; + }[]; + /** + *

An IAM policy in JSON format that you want to use as an inline session policy.

+ *

This parameter is optional. Passing policies to this operation returns new + * temporary credentials. The resulting session's permissions are the intersection of the + * role's identity-based policy and the session policies. You can use the role's temporary + * credentials in subsequent AWS API calls to access resources in the account that owns + * the role. You cannot use session policies to grant more permissions than those allowed + * by the identity-based policy of the role that is being assumed. For more information, see + * Session + * Policies in the IAM User Guide.

+ *

The plain text that you use for both inline and managed session policies can't exceed + * 2,048 characters. The JSON policy characters can be any ASCII character from the space + * character to the end of the valid character list (\u0020 through \u00FF). It can also + * include the tab (\u0009), linefeed (\u000A), and carriage return (\u000D) + * characters.

+ * + *

An AWS conversion compresses the passed session policies and session tags into a + * packed binary format that has a separate limit. Your request can fail for this limit + * even if your plain text meets the other requirements. The PackedPolicySize + * response element indicates by percentage how close the policies and tags for your + * request are to the upper size limit. + *

+ *
+ */ + Policy?: string; + /** + *

The duration, in seconds, of the role session. The value can range from 900 seconds (15 + * minutes) up to the maximum session duration setting for the role. This setting can have a + * value from 1 hour to 12 hours. If you specify a value higher than this setting, the + * operation fails. For example, if you specify a session duration of 12 hours, but your + * administrator set the maximum session duration to 6 hours, your operation fails. To learn + * how to view the maximum value for your role, see View the + * Maximum Session Duration Setting for a Role in the + * IAM User Guide.

+ *

By default, the value is set to 3600 seconds.

+ * + *

The DurationSeconds parameter is separate from the duration of a console + * session that you might request using the returned credentials. The request to the + * federation endpoint for a console sign-in token takes a SessionDuration + * parameter that specifies the maximum length of the console session. For more + * information, see Creating a URL + * that Enables Federated Users to Access the AWS Management Console in the + * IAM User Guide.

+ *
+ */ + DurationSeconds?: number; +} +type LowerCaseKey = { + [K in keyof T as `${Uncapitalize}`]: T[K]; +}; +/** + * @public + */ +export interface FromWebTokenInit extends Omit, "roleSessionName">, CredentialProviderOptions { + /** + * The IAM session name used to distinguish sessions. + */ + roleSessionName?: string; + /** + * A function that assumes a role with web identity and returns a promise fulfilled with + * credentials for the assumed role. + * + * @param params input parameter of sts:AssumeRoleWithWebIdentity API. + */ + roleAssumerWithWebIdentity?: (params: AssumeRoleWithWebIdentityParams) => Promise; + /** + * STSClientConfig to be used for creating STS Client for assuming role. + * @internal + */ + clientConfig?: any; + /** + * @internal + */ + clientPlugins?: Pluggable[]; +} +/** + * @internal + */ +export declare const fromWebToken: (init: FromWebTokenInit) => RuntimeConfigAwsCredentialIdentityProvider; +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/index.d.ts new file mode 100644 index 000000000..36c15dcdc --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./fromTokenFile"; +/** + * @internal + */ +export * from "./fromWebToken"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/ts3.4/fromTokenFile.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/ts3.4/fromTokenFile.d.ts new file mode 100644 index 000000000..2db33940f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/ts3.4/fromTokenFile.d.ts @@ -0,0 +1,18 @@ +import { + CredentialProviderOptions, + RuntimeConfigAwsCredentialIdentityProvider, +} from "@aws-sdk/types"; +import { FromWebTokenInit } from "./fromWebToken"; +export interface FromTokenFileInit + extends Partial< + Pick< + FromWebTokenInit, + Exclude + > + >, + CredentialProviderOptions { + webIdentityTokenFile?: string; +} +export declare const fromTokenFile: ( + init?: FromTokenFileInit +) => RuntimeConfigAwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/ts3.4/fromWebToken.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/ts3.4/fromWebToken.d.ts new file mode 100644 index 000000000..73529a143 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/ts3.4/fromWebToken.d.ts @@ -0,0 +1,39 @@ +import { + CredentialProviderOptions, + RuntimeConfigAwsCredentialIdentityProvider, +} from "@aws-sdk/types"; +import { AwsCredentialIdentity, Pluggable } from "@smithy/types"; +export interface AssumeRoleWithWebIdentityParams { + RoleArn: string; + RoleSessionName: string; + WebIdentityToken: string; + ProviderId?: string; + PolicyArns?: { + arn?: string; + }[]; + Policy?: string; + DurationSeconds?: number; +} +type LowerCaseKey = { + [K in keyof T as `${Uncapitalize}`]: T[K]; +}; +export interface FromWebTokenInit + extends Pick< + LowerCaseKey, + Exclude< + keyof LowerCaseKey, + "roleSessionName" + > + >, + CredentialProviderOptions { + roleSessionName?: string; + roleAssumerWithWebIdentity?: ( + params: AssumeRoleWithWebIdentityParams + ) => Promise; + clientConfig?: any; + clientPlugins?: Pluggable[]; +} +export declare const fromWebToken: ( + init: FromWebTokenInit +) => RuntimeConfigAwsCredentialIdentityProvider; +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..0e900c0a1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/ts3.4/index.d.ts @@ -0,0 +1,2 @@ +export * from "./fromTokenFile"; +export * from "./fromWebToken"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/package.json b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/package.json new file mode 100644 index 000000000..1611369c6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-provider-web-identity/package.json @@ -0,0 +1,73 @@ +{ + "name": "@aws-sdk/credential-provider-web-identity", + "version": "3.972.20", + "description": "AWS credential provider that calls STS assumeRole for temporary AWS credentials", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline credential-provider-web-identity", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "browser": { + "./dist-cjs/fromTokenFile": false, + "./dist-es/fromTokenFile": false + }, + "react-native": { + "./dist-es/fromTokenFile": false, + "./dist-cjs/fromTokenFile": false + }, + "keywords": [ + "aws", + "credentials" + ], + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/nested-clients": "^3.996.10", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "@types/node": "^20.14.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/credential-provider-web-identity", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/credential-provider-web-identity" + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/LICENSE b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/README.md b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/README.md new file mode 100644 index 000000000..b642b1d37 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/README.md @@ -0,0 +1,1146 @@ +# @aws-sdk/credential-providers + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/credential-providers/latest.svg)](https://www.npmjs.com/package/@aws-sdk/credential-providers) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/credential-providers.svg)](https://www.npmjs.com/package/@aws-sdk/credential-providers) + +A collection of all credential providers. + +# Table of Contents + +- [Terminology](#terminology) + - [Credentials Provider](#credentials-provider) + - [Outer and inner clients](#outer-and-inner-clients) +- [Resolving AWS Region in credential providers (e.g. STS region)](#resolving-aws-region-in-credential-providers-eg-sts-region) +- [From Cognito Identity](#fromcognitoidentity) +- [From Cognito Identity Pool](#fromcognitoidentitypool) +- [From Temporary Credentials](#fromtemporarycredentials) +- [From Web Token](#fromwebtoken) + - [Examples](#examples) +- [From Token File](#fromtokenfile) +- [From Instance and Container Metadata Service](#fromcontainermetadata-and-frominstancemetadata) +- [From HTTP(S)](#fromhttp) +- [From Shared INI files](#fromini) + - [Sample Files](#sample-files) +- [From Environmental Variables](#fromenv) +- [From Credential Process](#fromprocess) + - [Sample files](#sample-files-1) +- [From Single Sign-On Service](#fromsso) + - [Supported Configuration](#supported-configuration) + - [SSO login with AWS CLI](#sso-login-with-the-aws-cli) + - [Sample Files](#sample-files-2) +- [From Login Credentials](#fromLoginCredentials) + - [Login with AWS CLI](#login-with-aws-cli) + - [Sample Files](#sample-files-3) +- [From Node.js default credentials provider chain](#fromnodeproviderchain) +- [Creating a custom credentials chain](#createcredentialchain) + +## Terminology + +#### Credentials Provider + +An `AwsCredentialIdentityProvider` is any function that matches the signature: + +```ts +() => + Promise<{ + /** + * AWS access key ID + */ + readonly accessKeyId: string; + /** + * AWS secret access key + */ + readonly secretAccessKey: string; + /** + * A security or session token to use with these credentials. Usually + * present for temporary credentials. + */ + readonly sessionToken?: string; + /** + * A `Date` when the identity or credential will no longer be accepted. + * You can set or override this on the client side to force a refresh + * call of the function supplying the credentials when 5 minutes remain. + */ + readonly expiration?: Date; + }>; +``` + +That is, an async function which returns an object containing AWS credentials. + +Whether you write your own such function or use one of the providers from this package, when used in +conjunction with an AWS SDK Client, the client will cache the resulting credentials +until there is less than 5 minutes remaining to their expiration, at which point the +function will be called again, and the new credentials cached. + +This is designed to minimize the number of credential requests. Each client +instance has a separate cache of credentials, so if you want to share credential caching +between clients, you'll need to implement your own cache outside the SDK. + +#### Outer and inner clients + +A "parent/outer/upper/caller" (position), or "data" (purpose) client refers +to a client being initialized explicitly by the SDK user. + +An "inner" (position), or "credentials" (purpose) client +refers to a client being initialized by the SDK in the course +of retrieving credentials. Several AWS SDK credentials providers +make use of inner clients such as Cognito, SSO, STS, and SSO-OIDC. + +```ts +// Example: outer client and inner client +const s3 = new S3Client({ + credentials: fromIni(), +}); +``` + +In the above example, `S3Client` is the outer client, and +if the `fromIni` credentials provider uses STS::AssumeRole, the +`STSClient` initialized by the SDK is the inner client. + +## Resolving AWS Region in credential providers (e.g. STS region) + +When a credential provider uses an SDK client to retrieve credentials, commonly STS, the +control of the STS region follows this logic: + +```js +import { fromIni } from "@aws-sdk/credential-providers"; + +/* +# AWS config file contents +[profile default] +region = profile-region +role_arn = ROLE_ARN +source_profile = assume + +[profile assume] +... + */ + +process.env.AWS_REGION = "env-region"; + +const provider = fromIni({ + clientConfig: { + region: "credential-provider-config-region", + }, +}); + +const client = new SDKClient({ + region: "context-client-region", + credentials: provider, +}); + +const fallbackRegion = "us-east-1"; +``` + +As shown above, there are many sources of region information. The priority order is: + +1. `credential-provider-config-region` - given in code to the credential provider itself. +2. `profile-region` **\*** - if credential provider is resolving credentials from the config file, the config file's + region takes precedence in this case over AWS_REGION env. +3. `context-client-region` - the region resolved by an SDK client using the credential provider. +4. `env-region` - AWS_REGION environment variable. +5. `profile-region` **\*** - if credential provider is not resolving credentials from the config file, the config file's + region is lower priority than AWS_REGION env. +6. `us-east-1` (fallback) - this is a legacy fallback value. It's more likely that the client will fail to execute any + operation if none of the other region sources were set. + +This differs from _direct_ instantiation of the STSClient, which follows this order, which is the same for all clients: + +```js +import { STSClient } from "@aws-sdk/client-sts"; +/* +# AWS config file contents +[profile default] +region = profile-region + */ + +process.env.AWS_REGION = "env-region"; + +const client = new STSClient({ + region: "client-region", +}); +``` + +1. `client-region` +2. `env-region` +3. `profile-region` (config file) +4. thrown error (no us-east-1 fallback) + +# Credential providers + +## `fromCognitoIdentity()` + +- Uses `@aws-sdk/client-cognito-identity` +- Available in browsers & native apps + +The function `fromCognitoIdentity()` returns a credentials provider that retrieves credentials for +the provided identity ID. See [GetCredentialsForIdentity API][getcredentialsforidentity_api] +for more information. + +```javascript +import { fromCognitoIdentity } from "@aws-sdk/credential-providers"; // ES6 import + +const client = new FooClient({ + region, + credentials: fromCognitoIdentity({ + // Required. The unique identifier for the identity against which credentials + // will be issued. + identityId: "us-east-1:128d0a74-c82f-4553-916d-90053example", + // Optional. The ARN of the role to be assumed when multiple roles were received in the token + // from the identity provider. + customRoleArn: "arn:aws:iam::1234567890:role/MYAPP-CognitoIdentity", + // Optional. A set of name-value pairs that map provider names to provider tokens. + // Required when using identities associated with external identity providers such as Facebook. + logins: { + "graph.facebook.com": "FBTOKEN", + "www.amazon.com": "AMAZONTOKEN", + "accounts.google.com": "GOOGLETOKEN", + "api.twitter.com": "TWITTERTOKEN'", + "www.digits.com": "DIGITSTOKEN", + }, + // Optional overrides. This is passed to an inner Cognito client + // instantiated to resolve the credentials. Region and profile + // are inherited from the upper client if present unless overridden. + clientConfig: {}, + }), +}); +``` + +## `fromCognitoIdentityPool()` + +- Uses `@aws-sdk/client-cognito-identity` +- Available in browsers & native apps + +The function `fromCognitoIdentityPool()` returns `AwsCredentialIdentityProvider` that calls [GetId API][getid_api] +to obtain an `identityId`, then generates temporary AWS credentials with +[GetCredentialsForIdentity API][getcredentialsforidentity_api], see +[`fromCognitoIdentity()`](#fromcognitoidentity). + +Results from `GetId` are cached internally, but results from `GetCredentialsForIdentity` are not. + +```javascript +import { fromCognitoIdentityPool } from "@aws-sdk/credential-providers"; // ES6 import + +const client = new FooClient({ + region, + credentials: fromCognitoIdentityPool({ + // Required. The unique identifier for the identity pool from which an identity should be + // retrieved or generated. + identityPoolId: "us-east-1:1699ebc0-7900-4099-b910-2df94f52a030", + // Optional. A standard AWS account ID (9+ digits) + accountId: "123456789", + // Optional. A cache in which to store resolved Cognito IdentityIds. + cache: custom_storage, + // Optional. A unique identifier for the user used to cache Cognito IdentityIds on a per-user + // basis. + userIdentifier: "user_0", + // Optional. The ARN of the role to be assumed when multiple roles were received in the token + // from the identity provider. + customRoleArn: "arn:aws:iam::1234567890:role/MYAPP-CognitoIdentity", + // Optional. A set of name-value pairs that map provider names to provider tokens. + // Required when using identities associated with external identity providers such as Facebook. + logins: { + "graph.facebook.com": "FBTOKEN", + "www.amazon.com": "AMAZONTOKEN", + "accounts.google.com": "GOOGLETOKEN", + "api.twitter.com": "TWITTERTOKEN", + "www.digits.com": "DIGITSTOKEN", + }, + // Optional overrides. This is passed to an inner Cognito client + // instantiated to resolve the credentials. Region and profile + // are inherited from the upper client if present unless overridden. + clientConfig: {}, + }), +}); +``` + +## `fromTemporaryCredentials()` + +- Uses `@aws-sdk/client-sts` +- Available in browsers & native apps + +The function `fromTemporaryCredentials` returns `AwsCredentialIdentityProvider` that retrieves temporary +credentials from [STS AssumeRole API][assumerole_api]. + +```javascript +import { fromTemporaryCredentials } from "@aws-sdk/credential-providers"; // ES6 import + +const client = new FooClient({ + region, + credentials: fromTemporaryCredentials({ + // Optional. The master credentials used to get and refresh temporary credentials from AWS STS. + // If skipped, it uses the default credential resolved by internal STS client. + masterCredentials: fromTemporaryCredentials({ + params: { RoleArn: "arn:aws:iam::1234567890:role/RoleA" }, + }), + // Required. Options passed to STS AssumeRole operation. + params: { + // Required. ARN of role to assume. + RoleArn: "arn:aws:iam::1234567890:role/RoleB", + // Optional. An identifier for the assumed role session. If skipped, it generates a random + // session name with prefix of 'aws-sdk-js-'. + RoleSessionName: "aws-sdk-js-123", + // Optional. The duration, in seconds, of the role session. + DurationSeconds: 3600, + // ... For more options see https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html + }, + // Optional. A function that returns a promise fulfilled with an MFA token code for the provided + // MFA Serial code. Required if `params` has `SerialNumber` config. + mfaCodeProvider: async (mfaSerial) => { + return "token"; + }, + // Optional overrides. This is passed to an inner STS client instantiated to + // resolve the credentials. Region and profile + // are inherited from the upper client if present unless overridden. + clientConfig: {}, + }), +}); +``` + +## `fromWebToken()` + +- Uses `@aws-sdk/client-sts` +- Available in browsers & native apps + +The function `fromWebToken` returns an `AwsCredentialIdentityProvider` that gets credentials calling +[STS AssumeRoleWithWebIdentity API][assumerolewithwebidentity_api] + +```javascript +import { fromWebToken } from "@aws-sdk/credential-providers"; // ES6 import + +const client = new FooClient({ + region, + credentials: fromWebToken({ + // Required. ARN of the role that the caller is assuming. + roleArn: "arn:aws:iam::1234567890:role/RoleA", + // Required. The OAuth 2.0 access token or OpenID Connect ID token that is + // provided by the identity provider. + webIdentityToken: await openIdProvider(), + // Optional. A function that assumes a role with web identity and returns + // a promise fulfilled with credentials for the assumed role. + roleAssumerWithWebIdentity, + // Optional. An identifier for the assumed role session. + roleSessionName: "session_123", + // Optional. The fully qualified host component of the domain name of the + // identity provider. + providerId: "graph.facebook.com", + // Optional. ARNs of the IAM managed policies that you want to use as + // managed session. + policyArns: [{ arn: "arn:aws:iam::1234567890:policy/SomePolicy" }], + // Optional. An IAM policy in JSON format that you want to use as an + // inline session policy. + policy: "JSON_STRING", + // Optional. The duration, in seconds, of the role session. Default 3600. + durationSeconds: 7200, + // Optional overrides. This is passed to an inner STS client + // instantiated to resolve the credentials. Region and profile + // are inherited from the upper client if present unless overridden. + clientConfig: {}, + }), +}); +``` + +### Examples + +You can directly configure individual identity providers to access AWS resources using web identity +federation. AWS currently supports authenticating users using web identity federation through +several identity providers: + +- [Login with Amazon](https://login.amazon.com/) + +- [Facebook Login](https://developers.facebook.com/docs/facebook-login/web/) + +- [Google Sign-in](https://developers.google.com/identity/) + +You must first register your application with the providers that your application supports. Next, +create an IAM role and set up permissions for it. The IAM role you create is then used to grant the +permissions you configured for it through the respective identity provider. For example, you can set +up a role that allows users who logged in through Facebook to have read access to a specific Amazon +S3 bucket you control. + +After you have both an IAM role with configured privileges and an application registered with your +chosen identity providers, you can set up the SDK to get credentials for the IAM role using helper +code, as follows: + +The value in the ProviderId parameter depends on the specified identity provider. The value in the +WebIdentityToken parameter is the access token retrieved from a successful login with the identity +provider. For more information on how to configure and retrieve access tokens for each identity +provider, see the documentation for the identity provider. + +## `fromContainerMetadata()` and `fromInstanceMetadata()` + +- Not available in browsers & native apps + +`fromContainerMetadata` and `fromInstanceMetadata` will create `AwsCredentialIdentityProvider` functions that +read from the ECS container metadata service and the EC2 instance metadata service, respectively. + +```javascript +import { fromInstanceMetadata } from "@aws-sdk/credential-providers"; // ES6 import + +const client = new FooClient({ + credentials: fromInstanceMetadata({ + // Optional. The connection timeout (in milliseconds) to apply to any remote requests. + // If not specified, a default value of `1000` (one second) is used. + timeout: 1000, + // Optional. The maximum number of times any HTTP connections should be retried. If not + // specified, a default value of `0` will be used. + maxRetries: 0, + }), +}); +``` + +```javascript +import { fromContainerMetadata } from "@aws-sdk/credential-providers"; // ES6 import + +const client = new FooClient({ + credentials: fromContainerMetadata({ + // Optional. The connection timeout (in milliseconds) to apply to any remote requests. + // If not specified, a default value of `1000` (one second) is used. + timeout: 1000, + // Optional. The maximum number of times any HTTP connections should be retried. If not + // specified, a default value of `0` will be used. + maxRetries: 0, + }), +}); +``` + +An `AwsCredentialIdentityProvider` function created with `fromContainerMetadata` will return a promise that will +resolve with credentials for the IAM role associated with containers in an Amazon ECS task. Please +see [IAM Roles for Tasks][iam_roles_for_tasks] for more information on using IAM roles with Amazon +ECS. + +An `AwsCredentialIdentityProvider` function created with `fromInstanceMetadata` will return a promise that will +resolve with credentials for the IAM role associated with an EC2 instance. +Please see [IAM Roles for Amazon EC2][iam_roles_for_ec2] for more information on using IAM roles +with Amazon EC2. Both IMDSv1 (a request/response method) and IMDSv2 (a session-oriented method) are +supported. + +Please see [Configure the instance metadata service][config_instance_metadata] for more information. + +## `fromHttp()` + +- Available in browsers & native apps, without the EC2 and Container metadata components. + +This creates a provider function that makes a `GET` request to +any provided HTTPS URL. A limited set of HTTP destinations are also accepted. + +This is a general form of the `fromContainerMetadata` function. + +The server is expected to respond with the following format in JSON: + +```ts +type HttpProviderResponse = { + AccessKeyId: string; + SecretAccessKey: string; + Token: string; + AccountId?: string; + Expiration: string; // rfc3339 +}; +``` + +The acceptable non-HTTPS destinations are described in the validation error if encountered: + +``` +URL not accepted. It must either be HTTPS or match one of the following: + - loopback CIDR 127.0.0.0/8 or [::1/128] + - ECS container host 169.254.170.2 + - EKS container host 169.254.170.23 or [fd00:ec2::23] +``` + +Node.js: + +```js +import { fromHttp } from "@aws-sdk/credential-providers"; + +const client = new FooClient({ + credentials: fromHttp({ + /** + * If this value is provided, it will be used as-is. + */ + awsContainerCredentialsFullUri: "...", + /** + * If this value is provided instead of the full URI, it + * will be appended to the default link local host of 169.254.170.2. + */ + awsContainerCredentialsRelativeUri: "...", + + /** + * Will be read on each credentials request to + * add an Authorization request header value. + */ + awsContainerAuthorizationTokenFile: "...", + + /** + * An alternative to awsContainerAuthorizationTokenFile, + * this is the token value itself. + */ + awsContainerAuthorizationToken: "...", + }), +}); +``` + +If not provided in the JavaScript code, the following process envrionment variables will +be read: + +``` +AWS_CONTAINER_CREDENTIALS_RELATIVE_URI +AWS_CONTAINER_CREDENTIALS_FULL_URI +AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE +AWS_CONTAINER_AUTHORIZATION_TOKEN +``` + +Browsers: + +```js +import { fromHttp } from "@aws-sdk/credential-providers"; + +const client = new FooClient({ + credentials: fromHttp({ + /** + * BROWSER ONLY. + * + * In browsers, a relative URI is not allowed, and a full URI must be provided. + * HTTPS is required. + * + * This value is required for the browser environment. + */ + credentialsFullUri: "...", + + /** + * BROWSER ONLY. + * + * Providing this value will set an "Authorization" request + * header value on the GET request. + */ + authorizationToken: "...", + }), +}); +``` + +## `fromIni()` + +- May use `@aws-sdk/client-sso` or `@aws-sdk/client-sts` depending + on how the file is configured. +- Not available in browsers & native apps. + +`fromIni` creates an `AwsCredentialIdentityProvider` function that reads from a shared credentials file at +`~/.aws/credentials` and a shared configuration file at `~/.aws/config`. Both files are expected to +be INI formatted with section names corresponding to profiles. Sections in the credentials file are +treated as profile names, whereas profile sections in the config file must have the format of +`[profile profile-name]`, except for the default profile. Please see the +[sample files](#sample-files) below for examples of well-formed configuration and credentials files. + +Profiles that appear in both files will not be merged, and the version that appears in the +credentials file will be given precedence over the profile found in the config file. + +```javascript +import { fromIni } from "@aws-sdk/credential-providers"; // ES6 import + +const client = new FooClient({ + // As of v3.714.0, an easy way to select a profile is to set it on the client. + // This will read both client configuration and credentials instructions + // from that profile. The order of priority is: + // 1. this field (only applies to this client). + // 2. AWS_PROFILE environment variable (affects all clients). + // 3. the default profile. + profile: "my-profile", + + // Please note that the data client's region + // will not be used by STS requests originating from the `fromIni` + // provider if the profile(s) used have their own configured regions. + // If the profile(s) have no regions set, then the data client's + // region will be the fallback for the inner STS client. + // For SSO via `fromIni`, the `sso_region` value will be used, since it is required. + region: "us-west-2", + + credentials: fromIni({ + // Optional. Defaults to the client's profile if that is set. + // You can specify a profile here as well, but this applies + // only to the credential resolution and not to the upper client. + // Use this instead of the client profile if you need a separate profile + // for credentials. + profile: "my-profile", + // Optional. The path to the shared credentials file. If not specified, the provider will use + // the value in the `AWS_SHARED_CREDENTIALS_FILE` environment variable or a default of + // `~/.aws/credentials`. + filepath: "~/.aws/credentials", + // Optional. The path to the shared config file. If not specified, the provider will use the + // value in the `AWS_CONFIG_FILE` environment variable or a default of `~/.aws/config`. + configFilepath: "~/.aws/config", + // Optional. A function that returns a a promise fulfilled with an MFA token code for the + // provided MFA Serial code. If a profile requires an MFA code and `mfaCodeProvider` is not a + // valid function, the credential provider promise will be rejected. + mfaCodeProvider: async (mfaSerial) => { + return "token"; + }, + // Optional overrides. This is passed to an inner STS or SSO client + // instantiated to resolve the credentials. Region and profile + // are inherited from the upper client if present unless overridden, so + // it should not be necessary to set those. + // + // Warning: setting a region here overrides the region set in the config file + // for the selected profile. + clientConfig: {}, + }), +}); +``` + +### Sample files + +#### `~/.aws/credentials` + +```ini +[default] +aws_access_key_id=foo +aws_secret_access_key=bar + +[dev] +aws_access_key_id=foo2 +aws_secret_access_key=bar2 +``` + +#### `~/.aws/config` + +```ini +[default] +aws_access_key_id=foo +aws_secret_access_key=bar + +[profile dev] +aws_access_key_id=foo2 +aws_secret_access_key=bar2 +``` + +#### profile with source profile + +```ini +[second] +aws_access_key_id=foo +aws_secret_access_key=bar + +[first] +source_profile=second +role_arn=arn:aws:iam::123456789012:role/example-role-arn +``` + +#### profile with source provider + +You can supply `credential_source` options to tell the SDK where to source credentials for the call +to `AssumeRole`. The supported credential providers are listed below: + +```ini +[default] +role_arn=arn:aws:iam::123456789012:role/example-role-arn +credential_source = Ec2InstanceMetadata +``` + +```ini +[default] +role_arn=arn:aws:iam::123456789012:role/example-role-arn +credential_source = Environment +``` + +```ini +[default] +role_arn=arn:aws:iam::123456789012:role/example-role-arn +credential_source = EcsContainer +``` + +#### profile with web_identity_token_file + +```ini +[default] +web_identity_token_file=/temp/token +role_arn=arn:aws:iam::123456789012:role/example-role-arn +``` + +You can specify another profile(`second`) whose credentials are used to assume the role by the +`role_arn` setting in this profile(`first`). + +```ini +[second] +web_identity_token_file=/temp/token +role_arn=arn:aws:iam::123456789012:role/example-role-2 + +[first] +source_profile=second +role_arn=arn:aws:iam::123456789012:role/example-role +``` + +#### profile with sso credentials + +See [`fromSSO()`](#fromsso) for more information + +## `fromEnv()` + +- Not available in browser & native apps + +```javascript +import { fromEnv } from "@aws-sdk/credential-providers"; // ES6 import + +const client = new FooClient({ + credentials: fromEnv(), +}); +``` + +`fromEnv` returns an `AwsCredentialIdentityProvider` function, that reads credentials from the following +environment variables: + +- `AWS_ACCESS_KEY_ID` - The access key for your AWS account. +- `AWS_SECRET_ACCESS_KEY` - The secret key for your AWS account. +- `AWS_SESSION_TOKEN` - The session key for your AWS account. This is only needed when you are using + temporary credentials. +- `AWS_CREDENTIAL_EXPIRATION` - The expiration time of the credentials contained in the environment + variables described above. This value must be in a format compatible with the + [ISO-8601 standard][iso8601_standard] and is only needed when you are using temporary credentials. + +If either the `AWS_ACCESS_KEY_ID` or `AWS_SECRET_ACCESS_KEY` environment variable is not set or +contains a falsy value, the promise returned by the `fromEnv` function will be rejected. + +## `fromProcess()` + +- Not available in browsers & native apps + +```javascript +import { fromProcess } from "@aws-sdk/credential-providers"; // ES6 import + +const client = new FooClient({ + // Optional, available on clients as of v3.714.0. + profile: "my-profile", + credentials: fromProcess({ + // Optional. Defaults to the client's profile if that is set. + // You can specify a profile here as well, but this applies + // only to the credential resolution and not to the upper client. + // Use this instead of the client profile if you need a separate profile + // for credentials. + profile: "my-profile", + // Optional. The path to the shared credentials file. If not specified, the provider will use + // the value in the `AWS_SHARED_CREDENTIALS_FILE` environment variable or a default of + // `~/.aws/credentials`. + filepath: "~/.aws/credentials", + // Optional. The path to the shared config file. If not specified, the provider will use the + // value in the `AWS_CONFIG_FILE` environment variable or a default of `~/.aws/config`. + configFilepath: "~/.aws/config", + }), +}); +``` + +`fromProcess` creates an `AwsCredentialIdentityProvider` functions that executes a given process and +attempt to read its standard output to receive a JSON payload containing the credentials. The +process command is read from a shared credentials file at `~/.aws/credentials` and a shared +configuration file at `~/.aws/config`. Both files are expected to be INI formatted with section +names corresponding to profiles. Sections in the credentials file are treated as profile names, +whereas profile sections in the config file must have the format of`[profile profile-name]`, except +for the default profile. Please see the [sample files](#sample-files-1) below for examples of +well-formed configuration and credentials files. + +Profiles that appear in both files will not be merged, and the version that appears in the +credentials file will be given precedence over the profile found in the config file. + +### Sample files + +#### `~/.aws/credentials` + +```ini +[default] +credential_process = /usr/local/bin/awscreds + +[dev] +credential_process = /usr/local/bin/awscreds dev +``` + +#### `~/.aws/config` + +```ini +[default] +credential_process = /usr/local/bin/awscreds + +[profile dev] +credential_process = /usr/local/bin/awscreds dev +``` + +## `fromTokenFile()` + +- Uses `@aws-sdk/client-sts` +- Not available in browsers & native apps + +The function `fromTokenFile` returns `AwsCredentialIdentityProvider` that reads credentials as follows: + +- Reads file location of where the OIDC token is stored from either provided option + `webIdentityTokenFile` or environment variable `AWS_WEB_IDENTITY_TOKEN_FILE`. +- Reads IAM role wanting to be assumed from either provided option `roleArn` or environment + variable `AWS_ROLE_ARN`. +- Reads optional role session name to be used to distinguish sessions from provided option + `roleSessionName` or environment variable `AWS_ROLE_SESSION_NAME`. If session name is not defined, + it comes up with a role session name. +- Reads OIDC token from file on disk. +- Calls sts:AssumeRoleWithWebIdentity via `roleAssumerWithWebIdentity` option to get credentials. + +| **Configuration Key** | **Environment Variable** | **Required** | **Description** | +| --------------------- | --------------------------- | ------------ | ------------------------------------------------- | +| webIdentityTokenFile | AWS_WEB_IDENTITY_TOKEN_FILE | true | File location of where the `OIDC` token is stored | +| roleArn | AWS_ROLE_ARN | true | The IAM role wanting to be assumed | +| roleSessionName | AWS_ROLE_SESSION_NAME | false | The IAM session name used to distinguish sessions | + +```javascript +import { fromTokenFile } from "@aws-sdk/credential-providers"; // ES6 import + +const client = new FooClient({ + region: "us-west-2", + credentials: fromTokenFile({ + // Optional overrides. This is passed to an inner STS client + // instantiated to resolve the credentials. Region is inherited + // from the upper client if present unless overridden. + clientConfig: {}, + }), +}); +``` + +## `fromSSO()` + +- Uses `@aws-sdk/client-sso` & `@aws-sdk/client-sso-oidc` +- Not available in browsers & native apps + +> This credential provider **ONLY** supports profiles using the SSO credential. If you have a +> profile that assumes a role which derived from the SSO credential, you should use the +> [`fromIni()`](#fromini), or `@aws-sdk/credential-provider-node` package. + +`fromSSO`, that creates `AwsCredentialIdentityProvider` functions that read from the _resolved_ access token +from local disk then requests temporary AWS credentials. For guidance on the AWS Single Sign-On +service, please refer to [AWS's Single Sign-On documentation][sso_api]. + +You can create the `AwsCredentialIdentityProvider` functions using the inline SSO parameters(`ssoStartUrl`, +`ssoAccountId`, `ssoRegion`, `ssoRoleName`) or load them from +[AWS SDKs and Tools shared configuration and credentials files][shared_config_files]. +Profiles in the `credentials` file are given precedence over profiles in the `config` file. + +This credential provider is intended for use with the AWS SDK for Node.js. + +### Supported configuration + +You may customize how credentials are resolved by providing an options hash to the `fromSSO` factory +function. You can either load the SSO config from shared INI credential files, or specify the +`ssoStartUrl`, `ssoAccountId`, `ssoRegion`, and `ssoRoleName` directly from the code. + +```javascript +import { fromSSO } from "@aws-sdk/credential-providers"; // ES6 import + +const client = new FooClient({ + // Optional, available on clients as of v3.714.0. + profile: "my-sso-profile", + credentials: fromSSO({ + // Optional. Defaults to the client's profile if that is set. + // You can specify a profile here as well, but this applies + // only to the credential resolution and not to the upper client. + // Use this instead of the client profile if you need a separate profile + // for credentials. + profile: "my-sso-profile", + // Optional. The path to the shared credentials file. If not specified, the provider will use + // the value in the `AWS_SHARED_CREDENTIALS_FILE` environment variable or a default of + // `~/.aws/credentials`. + filepath: "~/.aws/credentials", + // Optional. The path to the shared config file. If not specified, the provider will use the + // value in the `AWS_CONFIG_FILE` environment variable or a default of `~/.aws/config`. + configFilepath: "~/.aws/config", + // Optional. The URL to the AWS SSO service. Required if any of the `sso*` options(except for + // `ssoClient`) is provided. + ssoStartUrl: "https://d-abc123.awsapps.com/start", + // Optional. The ID of the AWS account to use for temporary credentials. Required if any of the + // `sso*` options(except for `ssoClient`) is provided. + ssoAccountId: "1234567890", + // Optional. The AWS region to use for temporary credentials. Required if any of the `sso*` + // options(except for `ssoClient`) is provided. + ssoRegion: "us-east-1", + // Optional. The name of the AWS role to assume. Required if any of the `sso*` options(except + // for `ssoClient`) is provided. + ssoRoleName: "SampleRole", + // Optional. Overwrite the configuration used construct the SSO service client. If not + // specified, a default SSO client will be created with the region specified in the profile + // `sso_region` entry. + clientConfig: { region }, + }), +}); +``` + +### SSO Login with the AWS CLI + +This credential provider relies on the [AWS CLI][cli_sso] to log into an AWS SSO session. Here's a +brief walk-through: + +1. Create a new AWS SSO enabled profile using the AWS CLI. It will ask you to login to your AWS SSO + account and prompt for the name of the profile: + +```console +$ aws configure sso +... +... +CLI profile name [123456789011_ReadOnly]: my-sso-profile +``` + +2. Configure your SDK client with the SSO credential provider: + +```javascript +//... +const client = new FooClient({ credentials: fromSSO({ profile: "my-sso-profile" }) }); +``` + +Alternatively, the SSO credential provider is supported in shared INI credentials provider + +```javascript +//... +const client = new FooClient({ credentials: fromIni({ profile: "my-sso-profile" }) }); +``` + +3. To log out from the current SSO session, use the AWS CLI: + +```console +$ aws sso logout +Successfully signed out of all SSO profiles. +``` + +### Sample files + +This credential provider is only applicable if the profile specified in shared configuration and +credentials files contain ALL of the following entries. + +#### `~/.aws/credentials` + +```ini +[sample-profile] +sso_account_id = 012345678901 +sso_region = us-east-1 +sso_role_name = SampleRole +sso_start_url = https://d-abc123.awsapps.com/start +``` + +#### `~/.aws/config` + +```ini +[profile sample-profile] +sso_account_id = 012345678901 +sso_region = us-east-1 +sso_role_name = SampleRole +sso_start_url = https://d-abc123.awsapps.com/start +``` + +## `fromLoginCredentials()` + +- Uses `@aws-sdk/client-signin` +- Not available in browsers & native apps + +`fromLoginCredentials` creates an `AwsCredentialIdentityProvider` function that reads from cached login credentials stored on disk after authenticating with the AWS CLI using the `aws login` command. The provider automatically refreshes when the credentials are about to expire. + +This provider is not typically used in an explicit fashion and is designed to simplify credential usage by allowing SDK clients to work seamlessly after running `aws login` with AWS CLI, without requiring any additional configuration. + +```javascript +import { fromLoginCredentials } from "@aws-sdk/credential-providers"; // ES6 import + +const client = new FooClient({ + // Optional, available on clients as of v3.714.0. + profile: "my-profile", + credentials: fromLoginCredentials({ + // Optional. Defaults to the client's profile if that is set. + // Should match the profile name used with 'aws login --profile ' + // to ensure credentials are found in the cache. Uses 'default' if no + // --profile was specified during aws login or if this option is omitted. + profile: "my-profile", + // Optional. Overwrite the configuration used to construct the signin service client. + // If not specified, a default signin client will be created with the region specified in the profile. + // Warning: setting a region here overrides the region set in the config file + // for the selected profile. + clientConfig: { region }, + }), +}); +``` + +### Login with AWS CLI + +This credential provider relies on the AWS CLI to authenticate and cache login credentials. Here's how to set it up: + +1. **Initial Login**: Run the `aws login` command to authenticate using your existing AWS Management Console credentials: + +```console +$ aws login +``` + +2. **Named Profile**: To sign in to a named profile or create a new one, use the `--profile` option: + +```console +$ aws login --profile my-dev-profile +``` + +3. **Region Configuration**: If this is a new profile or no AWS Region has been specified, the AWS CLI prompts you to provide a region: + +```console +No AWS region has been configured. The AWS region is the geographic location of +your AWS resources. + +If you've used AWS before and already have resources in your account, tell us +which region they were created in. If you haven't created resources in your account +before, you can pick the region closest to you: +https://docs.aws.amazon.com/global-infrastructure/latest/regions/aws-regions.html. +You are able to change the region in the CLI at any time with the command +`aws configure set region NEW_REGION`. + +AWS Region [us-east-1]: +``` + +4. **Browser Authentication**: The AWS CLI attempts to open your default browser for the sign in process: + +```console +Attempting to open the login page for `us-east-1` in your default browser. +If the browser does not open, use the following URL to complete your login: +https://signin.us-east-1.amazonaws.com/authorize? +``` + +5. **No Browser Option**: If the device using the AWS CLI does not have a browser, you can use the `--no-browser` option: + +```console +$ aws login --no-browser +``` + +This will provide a URL for you to open on a browser-enabled device and prompt for an authorization code. + +6. **Logout**: When you are done using your session, you can let your credentials expire, or run the `aws logout` command: + +```console +$ aws logout +$ aws logout --profile my-dev-profile +``` + +### Cached Credentials + +The temporary cached credentials, as well as the metadata required to refresh them are stored by default in `~/.aws/login/cache` on Linux and macOS, or `%USERPROFILE%\.aws\login\cache` on Windows. + +You can override this location by setting the `AWS_LOGIN_CACHE_DIRECTORY` environment variable. + +### Sample Files + +After running `aws login`, the configuration file will contain a `login_session` entry: + +#### `~/.aws/config` + +```ini +[default] +login_session = arn:aws:iam::0123456789012:user/username +region = us-east-1 +``` + +## `fromNodeProviderChain()` + +- May use `@aws-sdk/client-sts`, `@aws-sdk/client-sso`, etc. depending on + which link in the chain finally resolves credentials. +- Not available in browsers & native apps + +The credential provider used as default in the Node.js clients, but with default role assumers so +you don't need to import them from STS client and supply them manually. You normally don't need +to use this explicitly in the client constructor. It is useful for utility functions requiring +credentials like S3 presigner, or RDS signer. + +This credential provider will attempt to find credentials from the following sources (listed in +order of precedence): + +- [Environment variables exposed via `process.env`](#fromenv) +- [SSO credentials from token cache](#fromsso) +- [Web identity token credentials](#fromtokenfile) +- [Shared credentials and config ini files](#fromini) +- [The EC2/ECS Instance Metadata Service](#fromcontainermetadata-and-frominstancemetadata) + +This credential provider will invoke one provider at a time and only +continue to the next if no credentials have been located. For example, if +the process finds values defined via the `AWS_ACCESS_KEY_ID` and +`AWS_SECRET_ACCESS_KEY` environment variables, the files at +`~/.aws/credentials` and `~/.aws/config` will not be read, nor will any +messages be sent to the Instance Metadata Service + +```js +import { fromNodeProviderChain } from "@aws-sdk/credential-providers"; // ES6 import + +const credentialProvider = fromNodeProviderChain({ + // This provider accepts any input of fromEnv(), fromSSO(), fromTokenFile(), + // fromIni(), fromProcess(), fromInstanceMetadata(), fromContainerMetadata() + // that exist in the default credential chain. + + // Optional client overrides. This is passed to an inner credentials client + // that may be STS, SSO, or other instantiated to resolve the credentials. + // Region and profile are inherited from the upper client if present + // unless overridden, so it should not be necessary to set those. + // + // Warning: setting a region here may override the region set in + // the config file for the selected profile if profile-based + // credentials are used. + clientConfig: {}, +}); +``` + +## `createCredentialChain()` + +You can use this helper to create a credential chain of your own. + +A credential chain is created from a list of functions of the signature () => +Promise<[AwsCredentialIdentity](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-types/Interface/AwsCredentialIdentity/)>, +composed together such that the overall chain has the **same** signature. + +That is why you can provide the chained credential provider to the same field (`credentials`) as any single provider +function. + +All the providers from this package are compatible, and can be used to create such a chain. + +As with _any_ function provided to the `credentials` SDK client constructor configuration field, if the credential +object returned does not contain +an `expiration` (type `Date`), the client will only ever call the provider function once. You do not need to memoize +this function. + +To enable automatic refresh, the credential provider function should set an `expiration` (`Date`) field. When this +expiration approaches within 5 minutes, the +provider function will be called again by the client in the course of making SDK requests. + +To assist with this, the `createCredentialChain` has a chainable helper `.expireAfter(milliseconds: number)`. An example +is included below. + +```ts +import { fromEnv, fromIni, createCredentialChain } from "@aws-sdk/credential-providers"; +import { S3 } from "@aws-sdk/client-s3"; + +// You can mix existing AWS SDK credential providers +// and custom async functions returning credential objects. +new S3({ + credentials: createCredentialChain( + fromEnv(), + async () => { + // credentials customized by your code... + return credentials; + }, + fromIni() + ), +}); + +// Set a max duration on the credentials (client side only). +// A set expiration will cause the credentials function to be called again +// when the time left is less than 5 minutes. +new S3({ + // This setting indicates expiry after 15 minutes (in milliseconds) with `15 * 60_000`. + // Due to the 5 minute expiry window, the function will be called approximately every + // 10 minutes under continuous usage of this client. + credentials: createCredentialChain(fromEnv(), fromIni()).expireAfter(15 * 60_000), +}); + +// Apply shared init properties. +const init = { logger: console }; + +new S3({ + credentials: createCredentialChain(fromEnv(init), fromIni(init)), +}); +``` + +[getcredentialsforidentity_api]: https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetCredentialsForIdentity.html +[getid_api]: https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetId.html +[assumerole_api]: https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html +[assumerolewithwebidentity_api]: https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html +[iam_roles_for_tasks]: http://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html +[iam_roles_for_ec2]: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html +[config_instance_metadata]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html +[iso8601_standard]: https://en.wikipedia.org/wiki/ISO_8601 +[sso_api]: https://aws.amazon.com/single-sign-on/ +[shared_config_files]: https://docs.aws.amazon.com/credref/latest/refdocs/creds-config-files.html +[cli_sso]: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html#sso-configure-profile diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/createCredentialChain.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/createCredentialChain.js new file mode 100644 index 000000000..3488e1beb --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/createCredentialChain.js @@ -0,0 +1,45 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.propertyProviderChain = exports.createCredentialChain = void 0; +const property_provider_1 = require("@smithy/property-provider"); +const createCredentialChain = (...credentialProviders) => { + let expireAfter = -1; + const baseFunction = async (awsIdentityProperties) => { + const credentials = await (0, exports.propertyProviderChain)(...credentialProviders)(awsIdentityProperties); + if (!credentials.expiration && expireAfter !== -1) { + credentials.expiration = new Date(Date.now() + expireAfter); + } + return credentials; + }; + const withOptions = Object.assign(baseFunction, { + expireAfter(milliseconds) { + if (milliseconds < 5 * 60_000) { + throw new Error("@aws-sdk/credential-providers - createCredentialChain(...).expireAfter(ms) may not be called with a duration lower than five minutes."); + } + expireAfter = milliseconds; + return withOptions; + }, + }); + return withOptions; +}; +exports.createCredentialChain = createCredentialChain; +const propertyProviderChain = (...providers) => async (awsIdentityProperties) => { + if (providers.length === 0) { + throw new property_provider_1.ProviderError("No providers in chain", { tryNextLink: false }); + } + let lastProviderError; + for (const provider of providers) { + try { + return await provider(awsIdentityProperties); + } + catch (err) { + lastProviderError = err; + if (err?.tryNextLink) { + continue; + } + throw err; + } + } + throw lastProviderError; +}; +exports.propertyProviderChain = propertyProviderChain; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromCognitoIdentity.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromCognitoIdentity.js new file mode 100644 index 000000000..9e56e01d8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromCognitoIdentity.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromCognitoIdentity = void 0; +const credential_provider_cognito_identity_1 = require("@aws-sdk/credential-provider-cognito-identity"); +const fromCognitoIdentity = (options) => (0, credential_provider_cognito_identity_1.fromCognitoIdentity)({ + ...options, +}); +exports.fromCognitoIdentity = fromCognitoIdentity; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromCognitoIdentityPool.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromCognitoIdentityPool.js new file mode 100644 index 000000000..ed20c1d83 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromCognitoIdentityPool.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromCognitoIdentityPool = void 0; +const credential_provider_cognito_identity_1 = require("@aws-sdk/credential-provider-cognito-identity"); +const fromCognitoIdentityPool = (options) => (0, credential_provider_cognito_identity_1.fromCognitoIdentityPool)({ + ...options, +}); +exports.fromCognitoIdentityPool = fromCognitoIdentityPool; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromContainerMetadata.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromContainerMetadata.js new file mode 100644 index 000000000..343bf80c8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromContainerMetadata.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromContainerMetadata = void 0; +const credential_provider_imds_1 = require("@smithy/credential-provider-imds"); +const fromContainerMetadata = (init) => { + init?.logger?.debug("@smithy/credential-provider-imds", "fromContainerMetadata"); + return (0, credential_provider_imds_1.fromContainerMetadata)(init); +}; +exports.fromContainerMetadata = fromContainerMetadata; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromEnv.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromEnv.js new file mode 100644 index 000000000..b3e82a6fc --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromEnv.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromEnv = void 0; +const credential_provider_env_1 = require("@aws-sdk/credential-provider-env"); +const fromEnv = (init) => (0, credential_provider_env_1.fromEnv)(init); +exports.fromEnv = fromEnv; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromIni.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromIni.js new file mode 100644 index 000000000..139107ac3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromIni.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromIni = void 0; +const credential_provider_ini_1 = require("@aws-sdk/credential-provider-ini"); +const fromIni = (init = {}) => (0, credential_provider_ini_1.fromIni)({ + ...init, +}); +exports.fromIni = fromIni; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromInstanceMetadata.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromInstanceMetadata.js new file mode 100644 index 000000000..57f70d04f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromInstanceMetadata.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromInstanceMetadata = void 0; +const client_1 = require("@aws-sdk/core/client"); +const credential_provider_imds_1 = require("@smithy/credential-provider-imds"); +const fromInstanceMetadata = (init) => { + init?.logger?.debug("@smithy/credential-provider-imds", "fromInstanceMetadata"); + return async () => (0, credential_provider_imds_1.fromInstanceMetadata)(init)().then((creds) => (0, client_1.setCredentialFeature)(creds, "CREDENTIALS_IMDS", "0")); +}; +exports.fromInstanceMetadata = fromInstanceMetadata; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromLoginCredentials.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromLoginCredentials.js new file mode 100644 index 000000000..c0d1ad61e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromLoginCredentials.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromLoginCredentials = void 0; +const credential_provider_login_1 = require("@aws-sdk/credential-provider-login"); +const fromLoginCredentials = (init) => (0, credential_provider_login_1.fromLoginCredentials)({ + ...init, +}); +exports.fromLoginCredentials = fromLoginCredentials; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromNodeProviderChain.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromNodeProviderChain.js new file mode 100644 index 000000000..4082387ac --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromNodeProviderChain.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromNodeProviderChain = void 0; +const credential_provider_node_1 = require("@aws-sdk/credential-provider-node"); +const fromNodeProviderChain = (init = {}) => (0, credential_provider_node_1.defaultProvider)({ + ...init, +}); +exports.fromNodeProviderChain = fromNodeProviderChain; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromProcess.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromProcess.js new file mode 100644 index 000000000..58a65abda --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromProcess.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromProcess = void 0; +const credential_provider_process_1 = require("@aws-sdk/credential-provider-process"); +const fromProcess = (init) => (0, credential_provider_process_1.fromProcess)(init); +exports.fromProcess = fromProcess; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromSSO.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromSSO.js new file mode 100644 index 000000000..7cf0fb4ab --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromSSO.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromSSO = void 0; +const credential_provider_sso_1 = require("@aws-sdk/credential-provider-sso"); +const fromSSO = (init = {}) => { + return (0, credential_provider_sso_1.fromSSO)({ ...init }); +}; +exports.fromSSO = fromSSO; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromTemporaryCredentials.base.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromTemporaryCredentials.base.js new file mode 100644 index 000000000..0648aed3a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromTemporaryCredentials.base.js @@ -0,0 +1,155 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || (function () { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromTemporaryCredentials = void 0; +const core_1 = require("@smithy/core"); +const property_provider_1 = require("@smithy/property-provider"); +const ASSUME_ROLE_DEFAULT_REGION = "us-east-1"; +const fromTemporaryCredentials = (options, credentialDefaultProvider, regionProvider) => { + let stsClient; + return async (awsIdentityProperties = {}) => { + const { callerClientConfig } = awsIdentityProperties; + const profile = options.clientConfig?.profile ?? callerClientConfig?.profile; + const logger = options.logger ?? callerClientConfig?.logger; + logger?.debug("@aws-sdk/credential-providers - fromTemporaryCredentials (STS)"); + const params = { ...options.params, RoleSessionName: options.params.RoleSessionName ?? "aws-sdk-js-" + Date.now() }; + if (params?.SerialNumber) { + if (!options.mfaCodeProvider) { + throw new property_provider_1.CredentialsProviderError(`Temporary credential requires multi-factor authentication, but no MFA code callback was provided.`, { + tryNextLink: false, + logger, + }); + } + params.TokenCode = await options.mfaCodeProvider(params?.SerialNumber); + } + const { AssumeRoleCommand, STSClient } = await Promise.resolve().then(() => __importStar(require("./loadSts"))); + if (!stsClient) { + const defaultCredentialsOrError = typeof credentialDefaultProvider === "function" ? credentialDefaultProvider() : undefined; + const credentialSources = [ + options.masterCredentials, + options.clientConfig?.credentials, + void callerClientConfig?.credentials, + callerClientConfig?.credentialDefaultProvider?.(), + defaultCredentialsOrError, + ]; + let credentialSource = "STS client default credentials"; + if (credentialSources[0]) { + credentialSource = "options.masterCredentials"; + } + else if (credentialSources[1]) { + credentialSource = "options.clientConfig.credentials"; + } + else if (credentialSources[2]) { + credentialSource = "caller client's credentials"; + throw new Error("fromTemporaryCredentials recursion in callerClientConfig.credentials"); + } + else if (credentialSources[3]) { + credentialSource = "caller client's credentialDefaultProvider"; + } + else if (credentialSources[4]) { + credentialSource = "AWS SDK default credentials"; + } + const regionSources = [ + options.clientConfig?.region, + callerClientConfig?.region, + await regionProvider?.({ + profile, + }), + ASSUME_ROLE_DEFAULT_REGION, + ]; + let regionSource = "default partition's default region"; + if (regionSources[0]) { + regionSource = "options.clientConfig.region"; + } + else if (regionSources[1]) { + regionSource = "caller client's region"; + } + else if (regionSources[2]) { + regionSource = "file or env region"; + } + const requestHandlerSources = [ + filterRequestHandler(options.clientConfig?.requestHandler), + filterRequestHandler(callerClientConfig?.requestHandler), + ]; + let requestHandlerSource = "STS default requestHandler"; + if (requestHandlerSources[0]) { + requestHandlerSource = "options.clientConfig.requestHandler"; + } + else if (requestHandlerSources[1]) { + requestHandlerSource = "caller client's requestHandler"; + } + logger?.debug?.(`@aws-sdk/credential-providers - fromTemporaryCredentials STS client init with ` + + `${regionSource}=${await (0, core_1.normalizeProvider)(coalesce(regionSources))()}, ${credentialSource}, ${requestHandlerSource}.`); + stsClient = new STSClient({ + userAgentAppId: callerClientConfig?.userAgentAppId, + ...options.clientConfig, + credentials: coalesce(credentialSources), + logger, + profile, + region: coalesce(regionSources), + requestHandler: coalesce(requestHandlerSources), + }); + } + if (options.clientPlugins) { + for (const plugin of options.clientPlugins) { + stsClient.middlewareStack.use(plugin); + } + } + const { Credentials } = await stsClient.send(new AssumeRoleCommand(params)); + if (!Credentials || !Credentials.AccessKeyId || !Credentials.SecretAccessKey) { + throw new property_provider_1.CredentialsProviderError(`Invalid response from STS.assumeRole call with role ${params.RoleArn}`, { + logger, + }); + } + return { + accessKeyId: Credentials.AccessKeyId, + secretAccessKey: Credentials.SecretAccessKey, + sessionToken: Credentials.SessionToken, + expiration: Credentials.Expiration, + credentialScope: Credentials.CredentialScope, + }; + }; +}; +exports.fromTemporaryCredentials = fromTemporaryCredentials; +const filterRequestHandler = (requestHandler) => { + return requestHandler?.metadata?.handlerProtocol === "h2" ? undefined : requestHandler; +}; +const coalesce = (args) => { + for (const item of args) { + if (item !== undefined) { + return item; + } + } +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromTemporaryCredentials.browser.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromTemporaryCredentials.browser.js new file mode 100644 index 000000000..6b144e633 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromTemporaryCredentials.browser.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromTemporaryCredentials = void 0; +var fromTemporaryCredentials_base_1 = require("./fromTemporaryCredentials.base"); +Object.defineProperty(exports, "fromTemporaryCredentials", { enumerable: true, get: function () { return fromTemporaryCredentials_base_1.fromTemporaryCredentials; } }); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromTemporaryCredentials.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromTemporaryCredentials.js new file mode 100644 index 000000000..5cc665e68 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromTemporaryCredentials.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromTemporaryCredentials = void 0; +const config_resolver_1 = require("@smithy/config-resolver"); +const node_config_provider_1 = require("@smithy/node-config-provider"); +const fromNodeProviderChain_1 = require("./fromNodeProviderChain"); +const fromTemporaryCredentials_base_1 = require("./fromTemporaryCredentials.base"); +const fromTemporaryCredentials = (options) => { + return (0, fromTemporaryCredentials_base_1.fromTemporaryCredentials)(options, fromNodeProviderChain_1.fromNodeProviderChain, async ({ profile = process.env.AWS_PROFILE }) => (0, node_config_provider_1.loadConfig)({ + environmentVariableSelector: (env) => env.AWS_REGION, + configFileSelector: (profileData) => { + return profileData.region; + }, + default: () => undefined, + }, { ...config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS, profile })()); +}; +exports.fromTemporaryCredentials = fromTemporaryCredentials; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromTokenFile.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromTokenFile.js new file mode 100644 index 000000000..66164b319 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromTokenFile.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromTokenFile = void 0; +const credential_provider_web_identity_1 = require("@aws-sdk/credential-provider-web-identity"); +const fromTokenFile = (init = {}) => (0, credential_provider_web_identity_1.fromTokenFile)({ + ...init, +}); +exports.fromTokenFile = fromTokenFile; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromWebToken.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromWebToken.js new file mode 100644 index 000000000..729cc1119 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/fromWebToken.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromWebToken = void 0; +const credential_provider_web_identity_1 = require("@aws-sdk/credential-provider-web-identity"); +const fromWebToken = (init) => (0, credential_provider_web_identity_1.fromWebToken)({ + ...init, +}); +exports.fromWebToken = fromWebToken; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/index.browser.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/index.browser.js new file mode 100644 index 000000000..45774bc68 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/index.browser.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromHttp = void 0; +const tslib_1 = require("tslib"); +tslib_1.__exportStar(require("./fromCognitoIdentity"), exports); +tslib_1.__exportStar(require("./fromCognitoIdentityPool"), exports); +var credential_provider_http_1 = require("@aws-sdk/credential-provider-http"); +Object.defineProperty(exports, "fromHttp", { enumerable: true, get: function () { return credential_provider_http_1.fromHttp; } }); +tslib_1.__exportStar(require("./fromTemporaryCredentials.browser"), exports); +tslib_1.__exportStar(require("./fromWebToken"), exports); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/index.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/index.js new file mode 100644 index 000000000..a5a5f6110 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/index.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromHttp = void 0; +const tslib_1 = require("tslib"); +tslib_1.__exportStar(require("./createCredentialChain"), exports); +tslib_1.__exportStar(require("./fromCognitoIdentity"), exports); +tslib_1.__exportStar(require("./fromCognitoIdentityPool"), exports); +tslib_1.__exportStar(require("./fromContainerMetadata"), exports); +tslib_1.__exportStar(require("./fromEnv"), exports); +var credential_provider_http_1 = require("@aws-sdk/credential-provider-http"); +Object.defineProperty(exports, "fromHttp", { enumerable: true, get: function () { return credential_provider_http_1.fromHttp; } }); +tslib_1.__exportStar(require("./fromIni"), exports); +tslib_1.__exportStar(require("./fromInstanceMetadata"), exports); +tslib_1.__exportStar(require("./fromLoginCredentials"), exports); +tslib_1.__exportStar(require("./fromNodeProviderChain"), exports); +tslib_1.__exportStar(require("./fromProcess"), exports); +tslib_1.__exportStar(require("./fromSSO"), exports); +tslib_1.__exportStar(require("./fromTemporaryCredentials"), exports); +tslib_1.__exportStar(require("./fromTokenFile"), exports); +tslib_1.__exportStar(require("./fromWebToken"), exports); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/loadSts.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/loadSts.js new file mode 100644 index 000000000..67e912ca4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-cjs/loadSts.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.STSClient = exports.AssumeRoleCommand = void 0; +const sts_1 = require("@aws-sdk/nested-clients/sts"); +Object.defineProperty(exports, "AssumeRoleCommand", { enumerable: true, get: function () { return sts_1.AssumeRoleCommand; } }); +Object.defineProperty(exports, "STSClient", { enumerable: true, get: function () { return sts_1.STSClient; } }); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/createCredentialChain.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/createCredentialChain.js new file mode 100644 index 000000000..9ac1852c0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/createCredentialChain.js @@ -0,0 +1,40 @@ +import { ProviderError } from "@smithy/property-provider"; +export const createCredentialChain = (...credentialProviders) => { + let expireAfter = -1; + const baseFunction = async (awsIdentityProperties) => { + const credentials = await propertyProviderChain(...credentialProviders)(awsIdentityProperties); + if (!credentials.expiration && expireAfter !== -1) { + credentials.expiration = new Date(Date.now() + expireAfter); + } + return credentials; + }; + const withOptions = Object.assign(baseFunction, { + expireAfter(milliseconds) { + if (milliseconds < 5 * 60_000) { + throw new Error("@aws-sdk/credential-providers - createCredentialChain(...).expireAfter(ms) may not be called with a duration lower than five minutes."); + } + expireAfter = milliseconds; + return withOptions; + }, + }); + return withOptions; +}; +export const propertyProviderChain = (...providers) => async (awsIdentityProperties) => { + if (providers.length === 0) { + throw new ProviderError("No providers in chain", { tryNextLink: false }); + } + let lastProviderError; + for (const provider of providers) { + try { + return await provider(awsIdentityProperties); + } + catch (err) { + lastProviderError = err; + if (err?.tryNextLink) { + continue; + } + throw err; + } + } + throw lastProviderError; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromCognitoIdentity.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromCognitoIdentity.js new file mode 100644 index 000000000..79bbe238a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromCognitoIdentity.js @@ -0,0 +1,4 @@ +import { fromCognitoIdentity as _fromCognitoIdentity } from "@aws-sdk/credential-provider-cognito-identity"; +export const fromCognitoIdentity = (options) => _fromCognitoIdentity({ + ...options, +}); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromCognitoIdentityPool.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromCognitoIdentityPool.js new file mode 100644 index 000000000..a86ef33a8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromCognitoIdentityPool.js @@ -0,0 +1,4 @@ +import { fromCognitoIdentityPool as _fromCognitoIdentityPool } from "@aws-sdk/credential-provider-cognito-identity"; +export const fromCognitoIdentityPool = (options) => _fromCognitoIdentityPool({ + ...options, +}); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromContainerMetadata.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromContainerMetadata.js new file mode 100644 index 000000000..e2023da4b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromContainerMetadata.js @@ -0,0 +1,5 @@ +import { fromContainerMetadata as _fromContainerMetadata } from "@smithy/credential-provider-imds"; +export const fromContainerMetadata = (init) => { + init?.logger?.debug("@smithy/credential-provider-imds", "fromContainerMetadata"); + return _fromContainerMetadata(init); +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromEnv.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromEnv.js new file mode 100644 index 000000000..58ea3ff01 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromEnv.js @@ -0,0 +1,2 @@ +import { fromEnv as _fromEnv } from "@aws-sdk/credential-provider-env"; +export const fromEnv = (init) => _fromEnv(init); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromIni.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromIni.js new file mode 100644 index 000000000..3235043f0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromIni.js @@ -0,0 +1,4 @@ +import { fromIni as _fromIni } from "@aws-sdk/credential-provider-ini"; +export const fromIni = (init = {}) => _fromIni({ + ...init, +}); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromInstanceMetadata.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromInstanceMetadata.js new file mode 100644 index 000000000..b95ea19ec --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromInstanceMetadata.js @@ -0,0 +1,6 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +import { fromInstanceMetadata as _fromInstanceMetadata } from "@smithy/credential-provider-imds"; +export const fromInstanceMetadata = (init) => { + init?.logger?.debug("@smithy/credential-provider-imds", "fromInstanceMetadata"); + return async () => _fromInstanceMetadata(init)().then((creds) => setCredentialFeature(creds, "CREDENTIALS_IMDS", "0")); +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromLoginCredentials.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromLoginCredentials.js new file mode 100644 index 000000000..127aa52af --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromLoginCredentials.js @@ -0,0 +1,4 @@ +import { fromLoginCredentials as _fromLoginCredentials, } from "@aws-sdk/credential-provider-login"; +export const fromLoginCredentials = (init) => _fromLoginCredentials({ + ...init, +}); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromNodeProviderChain.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromNodeProviderChain.js new file mode 100644 index 000000000..dbcd16f38 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromNodeProviderChain.js @@ -0,0 +1,4 @@ +import { defaultProvider } from "@aws-sdk/credential-provider-node"; +export const fromNodeProviderChain = (init = {}) => defaultProvider({ + ...init, +}); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromProcess.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromProcess.js new file mode 100644 index 000000000..d3611a5f0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromProcess.js @@ -0,0 +1,2 @@ +import { fromProcess as _fromProcess } from "@aws-sdk/credential-provider-process"; +export const fromProcess = (init) => _fromProcess(init); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromSSO.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromSSO.js new file mode 100644 index 000000000..6446cfedf --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromSSO.js @@ -0,0 +1,4 @@ +import { fromSSO as _fromSSO } from "@aws-sdk/credential-provider-sso"; +export const fromSSO = (init = {}) => { + return _fromSSO({ ...init }); +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromTemporaryCredentials.base.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromTemporaryCredentials.base.js new file mode 100644 index 000000000..e5c705672 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromTemporaryCredentials.base.js @@ -0,0 +1,118 @@ +import { normalizeProvider } from "@smithy/core"; +import { CredentialsProviderError } from "@smithy/property-provider"; +const ASSUME_ROLE_DEFAULT_REGION = "us-east-1"; +export const fromTemporaryCredentials = (options, credentialDefaultProvider, regionProvider) => { + let stsClient; + return async (awsIdentityProperties = {}) => { + const { callerClientConfig } = awsIdentityProperties; + const profile = options.clientConfig?.profile ?? callerClientConfig?.profile; + const logger = options.logger ?? callerClientConfig?.logger; + logger?.debug("@aws-sdk/credential-providers - fromTemporaryCredentials (STS)"); + const params = { ...options.params, RoleSessionName: options.params.RoleSessionName ?? "aws-sdk-js-" + Date.now() }; + if (params?.SerialNumber) { + if (!options.mfaCodeProvider) { + throw new CredentialsProviderError(`Temporary credential requires multi-factor authentication, but no MFA code callback was provided.`, { + tryNextLink: false, + logger, + }); + } + params.TokenCode = await options.mfaCodeProvider(params?.SerialNumber); + } + const { AssumeRoleCommand, STSClient } = await import("./loadSts"); + if (!stsClient) { + const defaultCredentialsOrError = typeof credentialDefaultProvider === "function" ? credentialDefaultProvider() : undefined; + const credentialSources = [ + options.masterCredentials, + options.clientConfig?.credentials, + void callerClientConfig?.credentials, + callerClientConfig?.credentialDefaultProvider?.(), + defaultCredentialsOrError, + ]; + let credentialSource = "STS client default credentials"; + if (credentialSources[0]) { + credentialSource = "options.masterCredentials"; + } + else if (credentialSources[1]) { + credentialSource = "options.clientConfig.credentials"; + } + else if (credentialSources[2]) { + credentialSource = "caller client's credentials"; + throw new Error("fromTemporaryCredentials recursion in callerClientConfig.credentials"); + } + else if (credentialSources[3]) { + credentialSource = "caller client's credentialDefaultProvider"; + } + else if (credentialSources[4]) { + credentialSource = "AWS SDK default credentials"; + } + const regionSources = [ + options.clientConfig?.region, + callerClientConfig?.region, + await regionProvider?.({ + profile, + }), + ASSUME_ROLE_DEFAULT_REGION, + ]; + let regionSource = "default partition's default region"; + if (regionSources[0]) { + regionSource = "options.clientConfig.region"; + } + else if (regionSources[1]) { + regionSource = "caller client's region"; + } + else if (regionSources[2]) { + regionSource = "file or env region"; + } + const requestHandlerSources = [ + filterRequestHandler(options.clientConfig?.requestHandler), + filterRequestHandler(callerClientConfig?.requestHandler), + ]; + let requestHandlerSource = "STS default requestHandler"; + if (requestHandlerSources[0]) { + requestHandlerSource = "options.clientConfig.requestHandler"; + } + else if (requestHandlerSources[1]) { + requestHandlerSource = "caller client's requestHandler"; + } + logger?.debug?.(`@aws-sdk/credential-providers - fromTemporaryCredentials STS client init with ` + + `${regionSource}=${await normalizeProvider(coalesce(regionSources))()}, ${credentialSource}, ${requestHandlerSource}.`); + stsClient = new STSClient({ + userAgentAppId: callerClientConfig?.userAgentAppId, + ...options.clientConfig, + credentials: coalesce(credentialSources), + logger, + profile, + region: coalesce(regionSources), + requestHandler: coalesce(requestHandlerSources), + }); + } + if (options.clientPlugins) { + for (const plugin of options.clientPlugins) { + stsClient.middlewareStack.use(plugin); + } + } + const { Credentials } = await stsClient.send(new AssumeRoleCommand(params)); + if (!Credentials || !Credentials.AccessKeyId || !Credentials.SecretAccessKey) { + throw new CredentialsProviderError(`Invalid response from STS.assumeRole call with role ${params.RoleArn}`, { + logger, + }); + } + return { + accessKeyId: Credentials.AccessKeyId, + secretAccessKey: Credentials.SecretAccessKey, + sessionToken: Credentials.SessionToken, + expiration: Credentials.Expiration, + credentialScope: Credentials.CredentialScope, + }; + }; +}; +const filterRequestHandler = (requestHandler) => { + return requestHandler?.metadata?.handlerProtocol === "h2" ? undefined : requestHandler; +}; +const coalesce = (args) => { + for (const item of args) { + if (item !== undefined) { + return item; + } + } +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromTemporaryCredentials.browser.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromTemporaryCredentials.browser.js new file mode 100644 index 000000000..e98b1f4f0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromTemporaryCredentials.browser.js @@ -0,0 +1 @@ +export { fromTemporaryCredentials } from "./fromTemporaryCredentials.base"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromTemporaryCredentials.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromTemporaryCredentials.js new file mode 100644 index 000000000..f5c2d0705 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromTemporaryCredentials.js @@ -0,0 +1,13 @@ +import { NODE_REGION_CONFIG_FILE_OPTIONS } from "@smithy/config-resolver"; +import { loadConfig } from "@smithy/node-config-provider"; +import { fromNodeProviderChain } from "./fromNodeProviderChain"; +import { fromTemporaryCredentials as fromTemporaryCredentialsBase } from "./fromTemporaryCredentials.base"; +export const fromTemporaryCredentials = (options) => { + return fromTemporaryCredentialsBase(options, fromNodeProviderChain, async ({ profile = process.env.AWS_PROFILE }) => loadConfig({ + environmentVariableSelector: (env) => env.AWS_REGION, + configFileSelector: (profileData) => { + return profileData.region; + }, + default: () => undefined, + }, { ...NODE_REGION_CONFIG_FILE_OPTIONS, profile })()); +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromTokenFile.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromTokenFile.js new file mode 100644 index 000000000..ec122c407 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromTokenFile.js @@ -0,0 +1,4 @@ +import { fromTokenFile as _fromTokenFile } from "@aws-sdk/credential-provider-web-identity"; +export const fromTokenFile = (init = {}) => _fromTokenFile({ + ...init, +}); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromWebToken.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromWebToken.js new file mode 100644 index 000000000..b523bbafb --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/fromWebToken.js @@ -0,0 +1,4 @@ +import { fromWebToken as _fromWebToken } from "@aws-sdk/credential-provider-web-identity"; +export const fromWebToken = (init) => _fromWebToken({ + ...init, +}); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/index.browser.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/index.browser.js new file mode 100644 index 000000000..aec6477c9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/index.browser.js @@ -0,0 +1,5 @@ +export * from "./fromCognitoIdentity"; +export * from "./fromCognitoIdentityPool"; +export { fromHttp } from "@aws-sdk/credential-provider-http"; +export * from "./fromTemporaryCredentials.browser"; +export * from "./fromWebToken"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/index.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/index.js new file mode 100644 index 000000000..5475d60f8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/index.js @@ -0,0 +1,15 @@ +export * from "./createCredentialChain"; +export * from "./fromCognitoIdentity"; +export * from "./fromCognitoIdentityPool"; +export * from "./fromContainerMetadata"; +export * from "./fromEnv"; +export { fromHttp } from "@aws-sdk/credential-provider-http"; +export * from "./fromIni"; +export * from "./fromInstanceMetadata"; +export * from "./fromLoginCredentials"; +export * from "./fromNodeProviderChain"; +export * from "./fromProcess"; +export * from "./fromSSO"; +export * from "./fromTemporaryCredentials"; +export * from "./fromTokenFile"; +export * from "./fromWebToken"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/loadSts.js b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/loadSts.js new file mode 100644 index 000000000..71bfc5d46 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-es/loadSts.js @@ -0,0 +1,2 @@ +import { AssumeRoleCommand, STSClient } from "@aws-sdk/nested-clients/sts"; +export { AssumeRoleCommand, STSClient }; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/createCredentialChain.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/createCredentialChain.d.ts new file mode 100644 index 000000000..85f9adb78 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/createCredentialChain.d.ts @@ -0,0 +1,51 @@ +import type { RuntimeConfigAwsCredentialIdentityProvider, RuntimeConfigIdentityProvider } from "@aws-sdk/types"; +import type { AwsCredentialIdentityProvider } from "@smithy/types"; +export interface CustomCredentialChainOptions { + expireAfter(milliseconds: number): AwsCredentialIdentityProvider & CustomCredentialChainOptions; +} +/** + * @example + * ```js + * import { fromEnv, fromIni, createCredentialChain } from '@aws-sdk/credential-providers'; + * import { S3 } from '@aws-sdk/client-s3'; + * + * // You can mix existing AWS SDK credential providers + * // and custom async functions returning credential objects. + * new S3({ + * credentials: createCredentialChain( + * fromEnv(), + * async () => { + * // credentials customized by your code... + * return credentials; + * }, + * fromIni() + * ), + * }); + * + * // Set a max duration on the credentials (client side only). + * // A set expiration will cause the credentials function to be called again + * // when the time left is less than 5 minutes. + * new S3({ + * // expire after 15 minutes (in milliseconds). + * credentials: createCredentialChain(fromEnv(), fromIni()).expireAfter(15 * 60_000), + * }); + * + * // Apply shared init properties. + * const init = { logger: console }; + * + * new S3({ + * credentials: createCredentialChain(fromEnv(init), fromIni(init)), + * }); + * ``` + * + * @param credentialProviders - one or more credential providers. + * @returns a single AwsCredentialIdentityProvider that calls the given + * providers in sequence until one succeeds or all fail. + * + * @public + */ +export declare const createCredentialChain: (...credentialProviders: RuntimeConfigAwsCredentialIdentityProvider[]) => RuntimeConfigAwsCredentialIdentityProvider & CustomCredentialChainOptions; +/** + * @internal + */ +export declare const propertyProviderChain: (...providers: Array>) => RuntimeConfigIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromCognitoIdentity.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromCognitoIdentity.d.ts new file mode 100644 index 000000000..e324d0b88 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromCognitoIdentity.d.ts @@ -0,0 +1,50 @@ +import type { CognitoIdentityClientConfig } from "@aws-sdk/client-cognito-identity"; +import type { CognitoIdentityCredentialProvider as _CognitoIdentityCredentialProvider, FromCognitoIdentityParameters as _FromCognitoIdentityParameters } from "@aws-sdk/credential-provider-cognito-identity"; +/** + * @public + */ +export interface FromCognitoIdentityParameters extends Omit<_FromCognitoIdentityParameters, "client"> { + /** + * Custom client configuration if you need overwrite default Cognito Identity client configuration. + */ + clientConfig?: CognitoIdentityClientConfig; +} +export type CognitoIdentityCredentialProvider = _CognitoIdentityCredentialProvider; +/** + * Creates a credential provider function that reetrieves temporary AWS credentials using Amazon Cognito's + * `GetCredentialsForIdentity` operation. + * + * Results from this function call are not cached internally. + * + * ```javascript + * import { fromCognitoIdentity } from "@aws-sdk/credential-providers"; // ES6 import + * // const { fromCognitoIdentity } = require("@aws-sdk/credential-providers"); // CommonJS import + * + * const client = new FooClient({ + * region, + * credentials: fromCognitoIdentity({ + * // Required. The unique identifier for the identity against which credentials + * // will be issued. + * identityId: "us-east-1:128d0a74-c82f-4553-916d-90053e4a8b0f" + * // optional. The ARN of the role to be assumed when multiple roles were + * // received in the token from the identity provider. + * customRoleArn: "arn:aws:iam::1234567890:role/MYAPP-CognitoIdentity" + * // Optional. A set of name-value pairs that map provider names to provider + * // tokens. Required when using identities associated with external identity + * // providers such as Facebook. + * logins: { + * "graph.facebook.com": "FBTOKEN", + * "www.amazon.com": "AMAZONTOKEN", + * "accounts.google.com": "GOOGLETOKEN", + * "api.twitter.com": "TWITTERTOKEN'", + * "www.digits.com": "DIGITSTOKEN" + * }, + * // Optional. Custom client configuration if you need overwrite default Cognito Identity client configuration. + * clientConfig: { region } + * }), + * }); + * ``` + * + * @public + */ +export declare const fromCognitoIdentity: (options: FromCognitoIdentityParameters) => CognitoIdentityCredentialProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromCognitoIdentityPool.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromCognitoIdentityPool.d.ts new file mode 100644 index 000000000..d248667d5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromCognitoIdentityPool.d.ts @@ -0,0 +1,48 @@ +import type { CognitoIdentityClientConfig } from "@aws-sdk/client-cognito-identity"; +import type { CognitoIdentityCredentialProvider, FromCognitoIdentityPoolParameters as _FromCognitoIdentityPoolParameters } from "@aws-sdk/credential-provider-cognito-identity"; +export interface FromCognitoIdentityPoolParameters extends Omit<_FromCognitoIdentityPoolParameters, "client"> { + clientConfig?: CognitoIdentityClientConfig; +} +/** + * Creates a credential provider function that retrieves or generates a unique identifier using Amazon Cognito's `GetId` + * operation, then generates temporary AWS credentials using Amazon Cognito's `GetCredentialsForIdentity` operation. + * + * Results from `GetId` are cached internally, but results from `GetCredentialsForIdentity` are not. + * + * ```javascript + * import { fromCognitoIdentityPool } from "@aws-sdk/credential-providers"; // ES6 import + * // const { fromCognitoIdentityPool } = require("@aws-sdk/credential-providers"); // CommonJS import + * + * const client = new FooClient({ + * region, + * credentials: fromCognitoIdentityPool({ + * // Required. The unique identifier for the identity pool from which an identity should be retrieved or generated. + * identityPoolId: "us-east-1:1699ebc0-7900-4099-b910-2df94f52a030"; + * // Optional. A standard AWS account ID (9+ digits) + * accountId: "123456789", + * // Optional. A cache in which to store resolved Cognito IdentityIds. + * cache: custom_storage, + * // Optional. A unique identifier for the user used to cache Cognito IdentityIds on a per-user basis. + * userIdentifier: "user_0", + * // optional. The ARN of the role to be assumed when multiple roles were + * // received in the token from the identity provider. + * customRoleArn: "arn:aws:iam::1234567890:role/MYAPP-CognitoIdentity" + * // Optional. A set of name-value pairs that map provider names to provider + * // tokens. Required when using identities associated with external identity + * // providers such as Facebook. + * logins: { + * 'graph.facebook.com': 'FBTOKEN', + * 'www.amazon.com': 'AMAZONTOKEN', + * 'accounts.google.com': 'GOOGLETOKEN', + * 'api.twitter.com': 'TWITTERTOKEN', + * 'www.digits.com': 'DIGITSTOKEN' + * }, + * // Optional. Custom client configuration if you need overwrite default Cognito Identity client configuration. + * client: new CognitoIdentityClient({ region }) + * }), + * }); + * ``` + * + * @public + */ +export declare const fromCognitoIdentityPool: (options: FromCognitoIdentityPoolParameters) => CognitoIdentityCredentialProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromContainerMetadata.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromContainerMetadata.d.ts new file mode 100644 index 000000000..bf22b8290 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromContainerMetadata.d.ts @@ -0,0 +1,27 @@ +import type { CredentialProviderOptions } from "@aws-sdk/types"; +import type { RemoteProviderInit as _RemoteProviderInit } from "@smithy/credential-provider-imds"; +import type { AwsCredentialIdentityProvider } from "@smithy/types"; +export interface RemoteProviderInit extends _RemoteProviderInit, CredentialProviderOptions { +} +/** + * Create a credential provider function that reads from ECS container metadata service. + * + * ```javascript + * import { fromContainerMetadata } from "@aws-sdk/credential-providers"; // ES6 import + * // const { fromContainerMetadata } = require("@aws-sdk/credential-providers"); // CommonJS import + * + * const foo = new FooClient({ + * credentials: fromContainerMetadata({ + * // Optional. The connection timeout (in milliseconds) to apply to any remote requests. If not specified, a default value + * // of`1000` (one second) is used. + * timeout: 1000, + * // Optional. The maximum number of times any HTTP connections should be retried. If not specified, a default value of `0` + * // will be used. + * maxRetries: 0, + * }), + * }); + * ``` + * + * @public + */ +export declare const fromContainerMetadata: (init?: RemoteProviderInit) => AwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromEnv.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromEnv.d.ts new file mode 100644 index 000000000..1e5259c58 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromEnv.d.ts @@ -0,0 +1,29 @@ +import type { FromEnvInit } from "@aws-sdk/credential-provider-env"; +import type { AwsCredentialIdentityProvider } from "@smithy/types"; +/** + * Create a credential provider that reads credentials from the following environment variables: + * + * - `AWS_ACCESS_KEY_ID` - The access key for your AWS account. + * - `AWS_SECRET_ACCESS_KEY` - The secret key for your AWS account. + * - `AWS_SESSION_TOKEN` - The session key for your AWS account. This is only + * needed when you are using temporary credentials. + * - `AWS_CREDENTIAL_EXPIRATION` - The expiration time of the credentials contained + * in the environment variables described above. This value must be in a format + * compatible with the [ISO-8601 standard](https://en.wikipedia.org/wiki/ISO_8601) + * and is only needed when you are using temporary credentials. + * + * If either the `AWS_ACCESS_KEY_ID` or `AWS_SECRET_ACCESS_KEY` environment variable is not set or contains a falsy + * value, the promise returned by the `fromEnv` function will be rejected. + * + * ```javascript + * import { fromEnv } from "@aws-sdk/credential-providers"; // ES6 import + * // const { fromEnv } = require("@aws-sdk/credential-providers"); // CommonJS import + * + * const client = new DynamoDBClient({ + * credentials: fromEnv(), + * }); + * ``` + * + * @public + */ +export declare const fromEnv: (init?: FromEnvInit) => AwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromIni.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromIni.d.ts new file mode 100644 index 000000000..59567d926 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromIni.d.ts @@ -0,0 +1,44 @@ +import type { FromIniInit } from "@aws-sdk/credential-provider-ini"; +import type { RuntimeConfigAwsCredentialIdentityProvider } from "@aws-sdk/types"; +/** + * Creates a credential provider function that reads from a shared credentials file at `~/.aws/credentials` and a + * shared configuration file at `~/.aws/config`. Both files are expected to be INI formatted with section names + * corresponding to profiles. Sections in the credentials file are treated as profile names, whereas profile sections in + * the config file must have the format of`[profile profile-name]`, except for the default profile. + * + * Profiles that appear in both files will not be merged, and the version that appears in the credentials file will be + * given precedence over the profile found in the config file. + * + * ```javascript + * import { fromIni } from "@aws-sdk/credential-providers"; // ES6 import + * // const { fromIni } = require("@aws-sdk/credential-providers"); // CommonJS import + * + * const client = new FooClient({ + * credentials: fromIni({ + * // Optional. The configuration profile to use. If not specified, the provider will use the value in the + * // `AWS_PROFILE` environment variable or a default of `default`. + * profile: "profile", + * // Optional. The path to the shared credentials file. If not specified, the provider will use the value in the + * // `AWS_SHARED_CREDENTIALS_FILE` environment variable or a default of `~/.aws/credentials`. + * filepath: "~/.aws/credentials", + * // Optional. The path to the shared config file. If not specified, the provider will use the value in the + * // `AWS_CONFIG_FILE` environment variable or a default of `~/.aws/config`. + * configFilepath: "~/.aws/config", + * // Optional. A function that returns a a promise fulfilled with an MFA token code for the provided MFA Serial + * // code. If a profile requires an MFA code and `mfaCodeProvider` is not a valid function, the credential provider + * // promise will be rejected. + * mfaCodeProvider: async (mfaSerial) => { + * return "token"; + * }, + * // Optional. Custom STS client configurations overriding the default ones. + * clientConfig: { region }, + * // Optional. Custom STS client middleware plugin to modify the client default behavior. + * // e.g. adding custom headers. + * clientPlugins: [addFooHeadersPlugin], + * }), + * }); + * ``` + * + * @public + */ +export declare const fromIni: (init?: FromIniInit) => RuntimeConfigAwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromInstanceMetadata.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromInstanceMetadata.d.ts new file mode 100644 index 000000000..20ac173d0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromInstanceMetadata.d.ts @@ -0,0 +1,25 @@ +import type { CredentialProviderOptions } from "@aws-sdk/types"; +import type { RemoteProviderConfig as _RemoteProviderInit } from "@smithy/credential-provider-imds"; +import type { AwsCredentialIdentityProvider } from "@smithy/types"; +/** + * Creates a credential provider function that reads from the EC2 instance metadata service. + * + * ```javascript + * import { fromInstanceMetadata } from "@aws-sdk/credential-providers"; // ES6 import + * // const { fromInstanceMetadata } = require("@aws-sdk/credential-providers"); // CommonJS import + * + * const client = new DynamoDBClient({ + * credentials: fromInstanceMetadata({ + * // Optional. The connection timeout (in milliseconds) to apply to any remote requests. If not specified, a + * // default value of`1000` (one second) is used. + * timeout: 1000, + * // Optional. The maximum number of times any HTTP connections should be retried. If not specified, a default + * // value of `0` will be used. + * maxRetries: 0, + * }), + * }); + * ``` + * + * @public + */ +export declare const fromInstanceMetadata: (init?: _RemoteProviderInit & CredentialProviderOptions) => AwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromLoginCredentials.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromLoginCredentials.d.ts new file mode 100644 index 000000000..d0919e34a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromLoginCredentials.d.ts @@ -0,0 +1,7 @@ +import { type FromLoginCredentialsInit } from "@aws-sdk/credential-provider-login"; +import type { RuntimeConfigAwsCredentialIdentityProvider } from "@aws-sdk/types"; +/** + * Creates a credential provider that sources credentials from `aws login` cached tokens + * @public + */ +export declare const fromLoginCredentials: (init?: FromLoginCredentialsInit) => RuntimeConfigAwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromNodeProviderChain.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromNodeProviderChain.d.ts new file mode 100644 index 000000000..49148769e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromNodeProviderChain.d.ts @@ -0,0 +1,34 @@ +import type { DefaultProviderInit } from "@aws-sdk/credential-provider-node"; +import type { AwsCredentialIdentityProvider } from "@smithy/types"; +/** + * This is the same credential provider as {@link https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromnodeproviderchain|the default provider for Node.js SDK}, + * but with default role assumers so you don't need to import them from + * STS client and supply them manually. You normally don't need to use this explicitly in the client constructor. + * It is useful for utility functions requiring credentials like S3 presigner, + * or RDS signer. + * + * ```js + * import { fromNodeProviderChain } from "@aws-sdk/credential-providers"; // ES6 import + * // const { fromNodeProviderChain } = require("@aws-sdk/credential-providers") // CommonJS import + * + * const credentialProvider = fromNodeProviderChain({ + * // init properties for fromEnv(), fromSSO(), fromTokenFile(), fromIni(), + * // fromProcess(), fromInstanceMetadata(), fromContainerMetadata() + * + * // For instance, to ignore the ini shared cache, change the credentials filepath for all + * // providers, and set the sso start id: + * ignoreCache: true, + * filepath: "~/.config/aws/credentials", + * ssoStartUrl: "https://d-abc123.awsapps.com/start" + * + * // Optional. Custom STS client configurations overriding the default ones. + * clientConfig: { region }, + * // Optional. Custom STS client middleware plugin to modify the client default behavior. + * // e.g. adding custom headers. + * clientPlugins: [addFooHeadersPlugin], + * }) + * ``` + * + * @public + */ +export declare const fromNodeProviderChain: (init?: DefaultProviderInit) => AwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromProcess.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromProcess.d.ts new file mode 100644 index 000000000..258462e76 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromProcess.d.ts @@ -0,0 +1,28 @@ +import type { FromProcessInit } from "@aws-sdk/credential-provider-process"; +import type { AwsCredentialIdentityProvider } from "@smithy/types"; +/** + * Creates a credential provider function that executes a given process and attempt to read its standard output to + * receive a JSON payload containing the credentials. + * + * ```javascript + * import { fromProcess } from "@aws-sdk/credential-providers"; // ES6 import + * // const { fromProcess } = require("@aws-sdk/credential-providers"); // CommonJS import + * + * const client = new FooClient({ + * credentials: fromProcess({ + * // Optional. The configuration profile to use. If not specified, the provider will use the value in the + * // `AWS_PROFILE` environment variable or a default of `default`. + * profile: "profile", + * // Optional. The path to the shared credentials file. If not specified, the provider will use the value in the + * // `AWS_SHARED_CREDENTIALS_FILE` environment variable or a default of `~/.aws/credentials`. + * filepath: "~/.aws/credentials", + * // Optional. The path to the shared config file. If not specified, the provider will use the value in the + * // `AWS_CONFIG_FILE` environment variable or a default of `~/.aws/config`. + * configFilepath: "~/.aws/config", + * }), + * }); + * ``` + * + * @public + */ +export declare const fromProcess: (init?: FromProcessInit) => AwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromSSO.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromSSO.d.ts new file mode 100644 index 000000000..927cf80a3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromSSO.d.ts @@ -0,0 +1,46 @@ +import { fromSSO as _fromSSO } from "@aws-sdk/credential-provider-sso"; +import type { AwsCredentialIdentityProvider } from "@smithy/types"; +/** + * Creates a credential provider function that reads from the _resolved_ access token from local disk then requests + * temporary AWS credentials. + * + * You can create the `AwsCredentialIdentityProvider` functions using the inline SSO parameters(`ssoStartUrl`, `ssoAccountId`, + * `ssoRegion`, `ssoRoleName`) or load them from [AWS SDKs and Tools shared configuration and credentials files](https://docs.aws.amazon.com/credref/latest/refdocs/creds-config-files.html). + * Profiles in the `credentials` file are given precedence over profiles in the `config` file. + * + * ```javascript + * import { fromSSO } from "@aws-sdk/credential-providers"; // ES6 import + * // const { fromSSO } = require(@aws-sdk/credential-providers") // CommonJS import + * + * const client = new FooClient({ + * credentials: fromSSO({ + * // Optional. The configuration profile to use. If not specified, the provider will use the value in the + * // `AWS_PROFILE` environment variable or `default` by default. + * profile: "my-sso-profile", + * // Optional. The path to the shared credentials file. If not specified, the provider will use the value in the + * // `AWS_SHARED_CREDENTIALS_FILE` environment variable or a default of `~/.aws/credentials`. + * filepath: "~/.aws/credentials", + * // Optional. The path to the shared config file. If not specified, the provider will use the value in the + * // `AWS_CONFIG_FILE` environment variable or a default of `~/.aws/config`. + * configFilepath: "~/.aws/config", + * // Optional. The URL to the AWS SSO service. Required if any of the `sso*` options(except for `ssoClient`) is + * // provided. + * ssoStartUrl: "https://d-abc123.awsapps.com/start", + * // Optional. The ID of the AWS account to use for temporary credentials. Required if any of the `sso*` + * // options(except for `ssoClient`) is provided. + * ssoAccountId: "1234567890", + * // Optional. The AWS region to use for temporary credentials. Required if any of the `sso*` options(except for + * // `ssoClient`) is provided. + * ssoRegion: "us-east-1", + * // Optional. The name of the AWS role to assume. Required if any of the `sso*` options(except for `ssoClient`) is + * // provided. + * ssoRoleName: "SampleRole", + * // Optional. Overwrite the configuration used construct the SSO service client. + * clientConfig: { region }, + * }), + * }); + * ``` + * + * @public + */ +export declare const fromSSO: (init?: Parameters[0]) => AwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromTemporaryCredentials.base.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromTemporaryCredentials.base.d.ts new file mode 100644 index 000000000..3a300f359 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromTemporaryCredentials.base.d.ts @@ -0,0 +1,16 @@ +import type { AssumeRoleCommandInput, STSClientConfig } from "@aws-sdk/nested-clients/sts"; +import type { CredentialProviderOptions, RuntimeConfigAwsCredentialIdentityProvider } from "@aws-sdk/types"; +import type { AwsCredentialIdentity, AwsCredentialIdentityProvider, Logger, Pluggable } from "@smithy/types"; +export interface FromTemporaryCredentialsOptions extends CredentialProviderOptions { + params: Omit & { + RoleSessionName?: string; + }; + masterCredentials?: AwsCredentialIdentity | AwsCredentialIdentityProvider; + clientConfig?: STSClientConfig; + logger?: Logger; + clientPlugins?: Pluggable[]; + mfaCodeProvider?: (mfaSerial: string) => Promise; +} +export declare const fromTemporaryCredentials: (options: FromTemporaryCredentialsOptions, credentialDefaultProvider?: () => AwsCredentialIdentityProvider, regionProvider?: ({ profile }: { + profile?: string; +}) => Promise) => RuntimeConfigAwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromTemporaryCredentials.browser.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromTemporaryCredentials.browser.d.ts new file mode 100644 index 000000000..9bcd22de9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromTemporaryCredentials.browser.d.ts @@ -0,0 +1 @@ +export { FromTemporaryCredentialsOptions, fromTemporaryCredentials } from "./fromTemporaryCredentials.base"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromTemporaryCredentials.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromTemporaryCredentials.d.ts new file mode 100644 index 000000000..034bc09db --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromTemporaryCredentials.d.ts @@ -0,0 +1,49 @@ +import type { RuntimeConfigAwsCredentialIdentityProvider } from "@aws-sdk/types"; +import type { FromTemporaryCredentialsOptions } from "./fromTemporaryCredentials.base"; +/** + * @public + */ +export { FromTemporaryCredentialsOptions }; +/** + * Creates a credential provider function that retrieves temporary credentials from STS AssumeRole API. + * + * ```javascript + * import { fromTemporaryCredentials } from "@aws-sdk/credential-providers"; // ES6 import + * // const { fromTemporaryCredentials } = require("@aws-sdk/credential-providers"); // CommonJS import + * + * const client = new FooClient({ + * region, + * credentials: fromTemporaryCredentials( + * // Optional. The master credentials used to get and refresh temporary credentials from AWS STS. If skipped, it uses + * // the default credential resolved by internal STS client. + * masterCredentials: fromTemporaryCredentials({ + * params: { RoleArn: "arn:aws:iam::1234567890:role/RoleA" } + * }), + * // Required. Options passed to STS AssumeRole operation. + * params: { + * // Required. ARN of role to assume. + * RoleArn: "arn:aws:iam::1234567890:role/RoleB", + * // Optional. An identifier for the assumed role session. If skipped, it generates a random session name with + * // prefix of 'aws-sdk-js-'. + * RoleSessionName: "aws-sdk-js-123", + * // Optional. The duration, in seconds, of the role session. + * DurationSeconds: 3600 + * //... For more options see https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html + * }, + * // Optional. Custom STS client configurations overriding the default ones. + * clientConfig: { region }, + * // Optional. Custom STS client middleware plugin to modify the client default behavior. + * // e.g. adding custom headers. + * clientPlugins: [addFooHeadersPlugin], + * // Optional. A function that returns a promise fulfilled with an MFA token code for the provided MFA Serial code. + * // Required if `params` has `SerialNumber` config. + * mfaCodeProvider: async mfaSerial => { + * return "token" + * } + * ), + * }); + * ``` + * + * @public + */ +export declare const fromTemporaryCredentials: (options: FromTemporaryCredentialsOptions) => RuntimeConfigAwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromTokenFile.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromTokenFile.d.ts new file mode 100644 index 000000000..d944993b6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromTokenFile.d.ts @@ -0,0 +1,33 @@ +import type { FromTokenFileInit } from "@aws-sdk/credential-provider-web-identity"; +import type { AwsCredentialIdentityProvider } from "@smithy/types"; +/** + * Creates a credential provider function that reads OIDC token from given file, then call STS.AssumeRoleWithWebIdentity + * API. The configurations must be specified in environmental variables: + * + * - Reads file location of where the OIDC token is stored from either provided option `webIdentityTokenFile` or + * environment variable `AWS_WEB_IDENTITY_TOKEN_FILE`. + * - Reads IAM role wanting to be assumed from either provided option `roleArn` or environment variable `AWS_ROLE_ARN`. + * - Reads optional role session name to be used to distinguish sessions from provided option `roleSessionName` or + * environment variable `AWS_ROLE_SESSION_NAME`. + * If session name is not defined, it comes up with a role session name. + * - Reads OIDC token from file on disk. + * - Calls sts:AssumeRoleWithWebIdentity via `roleAssumerWithWebIdentity` option to get credentials. + * + * ```javascript + * import { fromTokenFile } from "@aws-sdk/credential-providers"; // ES6 import + * // const { fromTokenFile } = require("@aws-sdk/credential-providers"); // CommonJS import + * + * const client = new FooClient({ + * credentials: fromTokenFile({ + * // Optional. STS client config to make the assume role request. + * clientConfig: { region } + * // Optional. Custom STS client middleware plugin to modify the client default behavior. + * // e.g. adding custom headers. + * clientPlugins: [addFooHeadersPlugin], + * }); + * }); + * ``` + * + * @public + */ +export declare const fromTokenFile: (init?: FromTokenFileInit) => AwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromWebToken.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromWebToken.d.ts new file mode 100644 index 000000000..11237fd4c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/fromWebToken.d.ts @@ -0,0 +1,42 @@ +import type { FromWebTokenInit } from "@aws-sdk/credential-provider-web-identity"; +import type { AwsCredentialIdentityProvider } from "@smithy/types"; +/** + * Creates a credential provider function that gets credentials calling STS + * AssumeRoleWithWebIdentity API. + * + * ```javascript + * import { fromWebToken } from "@aws-sdk/credential-providers"; // ES6 import + * // const { fromWebToken } = require("@aws-sdk/credential-providers"); // CommonJS import + * + * const dynamodb = new DynamoDBClient({ + * region, + * credentials: fromWebToken({ + * // Required. ARN of the role that the caller is assuming. + * roleArn: "arn:aws:iam::1234567890:role/RoleA", + * // Required. The OAuth 2.0 access token or OpenID Connect ID token that is provided by the identity provider. + * webIdentityToken: await openIdProvider() + * // Optional. Custom STS client configurations overriding the default ones. + * clientConfig: { region } + * // Optional. Custom STS client middleware plugin to modify the client default behavior. + * // e.g. adding custom headers. + * clientPlugins: [addFooHeadersPlugin], + * // Optional. A function that assumes a role with web identity and returns a promise fulfilled with credentials for + * // the assumed role. + * roleAssumerWithWebIdentity, + * // Optional. An identifier for the assumed role session. + * roleSessionName: "session_123", + * // Optional. The fully qualified host component of the domain name of the identity provider. + * providerId: "graph.facebook.com", + * // Optional. ARNs of the IAM managed policies that you want to use as managed session. + * policyArns: [{arn: "arn:aws:iam::1234567890:policy/SomePolicy"}], + * // Optional. An IAM policy in JSON format that you want to use as an inline session policy. + * policy: "JSON_STRING", + * // Optional. The duration, in seconds, of the role session. Default to 3600. + * durationSeconds: 7200 + * }), + * }); + * ``` + * + * @public + */ +export declare const fromWebToken: (init: FromWebTokenInit) => AwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/index.browser.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/index.browser.d.ts new file mode 100644 index 000000000..bbde84908 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/index.browser.d.ts @@ -0,0 +1,6 @@ +export * from "./fromCognitoIdentity"; +export * from "./fromCognitoIdentityPool"; +export { fromHttp } from "@aws-sdk/credential-provider-http"; +export type { FromHttpOptions, HttpProviderCredentials } from "@aws-sdk/credential-provider-http"; +export * from "./fromTemporaryCredentials.browser"; +export * from "./fromWebToken"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/index.d.ts new file mode 100644 index 000000000..88e352863 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/index.d.ts @@ -0,0 +1,15 @@ +export * from "./createCredentialChain"; +export * from "./fromCognitoIdentity"; +export * from "./fromCognitoIdentityPool"; +export * from "./fromContainerMetadata"; +export * from "./fromEnv"; +export { fromHttp, FromHttpOptions, HttpProviderCredentials } from "@aws-sdk/credential-provider-http"; +export * from "./fromIni"; +export * from "./fromInstanceMetadata"; +export * from "./fromLoginCredentials"; +export * from "./fromNodeProviderChain"; +export * from "./fromProcess"; +export * from "./fromSSO"; +export * from "./fromTemporaryCredentials"; +export * from "./fromTokenFile"; +export * from "./fromWebToken"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/loadSts.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/loadSts.d.ts new file mode 100644 index 000000000..f2695d4ba --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/loadSts.d.ts @@ -0,0 +1,5 @@ +import { AssumeRoleCommand, STSClient } from "@aws-sdk/nested-clients/sts"; +/** + * @internal + */ +export { AssumeRoleCommand, STSClient }; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/createCredentialChain.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/createCredentialChain.d.ts new file mode 100644 index 000000000..281f7a017 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/createCredentialChain.d.ts @@ -0,0 +1,16 @@ +import { + RuntimeConfigAwsCredentialIdentityProvider, + RuntimeConfigIdentityProvider, +} from "@aws-sdk/types"; +import { AwsCredentialIdentityProvider } from "@smithy/types"; +export interface CustomCredentialChainOptions { + expireAfter( + milliseconds: number + ): AwsCredentialIdentityProvider & CustomCredentialChainOptions; +} +export declare const createCredentialChain: ( + ...credentialProviders: RuntimeConfigAwsCredentialIdentityProvider[] +) => RuntimeConfigAwsCredentialIdentityProvider & CustomCredentialChainOptions; +export declare const propertyProviderChain: ( + ...providers: Array> +) => RuntimeConfigIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromCognitoIdentity.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromCognitoIdentity.d.ts new file mode 100644 index 000000000..e6e1cf467 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromCognitoIdentity.d.ts @@ -0,0 +1,17 @@ +import { CognitoIdentityClientConfig } from "@aws-sdk/client-cognito-identity"; +import { + CognitoIdentityCredentialProvider as _CognitoIdentityCredentialProvider, + FromCognitoIdentityParameters as _FromCognitoIdentityParameters, +} from "@aws-sdk/credential-provider-cognito-identity"; +export interface FromCognitoIdentityParameters + extends Pick< + _FromCognitoIdentityParameters, + Exclude + > { + clientConfig?: CognitoIdentityClientConfig; +} +export type CognitoIdentityCredentialProvider = + _CognitoIdentityCredentialProvider; +export declare const fromCognitoIdentity: ( + options: FromCognitoIdentityParameters +) => CognitoIdentityCredentialProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromCognitoIdentityPool.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromCognitoIdentityPool.d.ts new file mode 100644 index 000000000..dcead797f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromCognitoIdentityPool.d.ts @@ -0,0 +1,15 @@ +import { CognitoIdentityClientConfig } from "@aws-sdk/client-cognito-identity"; +import { + CognitoIdentityCredentialProvider, + FromCognitoIdentityPoolParameters as _FromCognitoIdentityPoolParameters, +} from "@aws-sdk/credential-provider-cognito-identity"; +export interface FromCognitoIdentityPoolParameters + extends Pick< + _FromCognitoIdentityPoolParameters, + Exclude + > { + clientConfig?: CognitoIdentityClientConfig; +} +export declare const fromCognitoIdentityPool: ( + options: FromCognitoIdentityPoolParameters +) => CognitoIdentityCredentialProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromContainerMetadata.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromContainerMetadata.d.ts new file mode 100644 index 000000000..d8c4c4cda --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromContainerMetadata.d.ts @@ -0,0 +1,9 @@ +import { CredentialProviderOptions } from "@aws-sdk/types"; +import { RemoteProviderInit as _RemoteProviderInit } from "@smithy/credential-provider-imds"; +import { AwsCredentialIdentityProvider } from "@smithy/types"; +export interface RemoteProviderInit + extends _RemoteProviderInit, + CredentialProviderOptions {} +export declare const fromContainerMetadata: ( + init?: RemoteProviderInit +) => AwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromEnv.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromEnv.d.ts new file mode 100644 index 000000000..9a994913d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromEnv.d.ts @@ -0,0 +1,5 @@ +import { FromEnvInit } from "@aws-sdk/credential-provider-env"; +import { AwsCredentialIdentityProvider } from "@smithy/types"; +export declare const fromEnv: ( + init?: FromEnvInit +) => AwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromIni.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromIni.d.ts new file mode 100644 index 000000000..ba9eeef13 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromIni.d.ts @@ -0,0 +1,5 @@ +import { FromIniInit } from "@aws-sdk/credential-provider-ini"; +import { RuntimeConfigAwsCredentialIdentityProvider } from "@aws-sdk/types"; +export declare const fromIni: ( + init?: FromIniInit +) => RuntimeConfigAwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromInstanceMetadata.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromInstanceMetadata.d.ts new file mode 100644 index 000000000..b92582d76 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromInstanceMetadata.d.ts @@ -0,0 +1,6 @@ +import { CredentialProviderOptions } from "@aws-sdk/types"; +import { RemoteProviderConfig as _RemoteProviderInit } from "@smithy/credential-provider-imds"; +import { AwsCredentialIdentityProvider } from "@smithy/types"; +export declare const fromInstanceMetadata: ( + init?: _RemoteProviderInit & CredentialProviderOptions +) => AwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromLoginCredentials.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromLoginCredentials.d.ts new file mode 100644 index 000000000..5a4252f6f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromLoginCredentials.d.ts @@ -0,0 +1,5 @@ +import { FromLoginCredentialsInit } from "@aws-sdk/credential-provider-login"; +import { RuntimeConfigAwsCredentialIdentityProvider } from "@aws-sdk/types"; +export declare const fromLoginCredentials: ( + init?: FromLoginCredentialsInit +) => RuntimeConfigAwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromNodeProviderChain.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromNodeProviderChain.d.ts new file mode 100644 index 000000000..dc5c5e31c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromNodeProviderChain.d.ts @@ -0,0 +1,5 @@ +import { DefaultProviderInit } from "@aws-sdk/credential-provider-node"; +import { AwsCredentialIdentityProvider } from "@smithy/types"; +export declare const fromNodeProviderChain: ( + init?: DefaultProviderInit +) => AwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromProcess.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromProcess.d.ts new file mode 100644 index 000000000..f6caa98d8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromProcess.d.ts @@ -0,0 +1,5 @@ +import { FromProcessInit } from "@aws-sdk/credential-provider-process"; +import { AwsCredentialIdentityProvider } from "@smithy/types"; +export declare const fromProcess: ( + init?: FromProcessInit +) => AwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromSSO.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromSSO.d.ts new file mode 100644 index 000000000..5379e5b3c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromSSO.d.ts @@ -0,0 +1,5 @@ +import { fromSSO as _fromSSO } from "@aws-sdk/credential-provider-sso"; +import { AwsCredentialIdentityProvider } from "@smithy/types"; +export declare const fromSSO: ( + init?: Parameters[0] +) => AwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromTemporaryCredentials.base.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromTemporaryCredentials.base.d.ts new file mode 100644 index 000000000..6f056b1ce --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromTemporaryCredentials.base.d.ts @@ -0,0 +1,37 @@ +import { + AssumeRoleCommandInput, + STSClientConfig, +} from "@aws-sdk/nested-clients/sts"; +import { + CredentialProviderOptions, + RuntimeConfigAwsCredentialIdentityProvider, +} from "@aws-sdk/types"; +import { + AwsCredentialIdentity, + AwsCredentialIdentityProvider, + Logger, + Pluggable, +} from "@smithy/types"; +export interface FromTemporaryCredentialsOptions + extends CredentialProviderOptions { + params: Pick< + AssumeRoleCommandInput, + Exclude + > & { + RoleSessionName?: string; + }; + masterCredentials?: AwsCredentialIdentity | AwsCredentialIdentityProvider; + clientConfig?: STSClientConfig; + logger?: Logger; + clientPlugins?: Pluggable[]; + mfaCodeProvider?: (mfaSerial: string) => Promise; +} +export declare const fromTemporaryCredentials: ( + options: FromTemporaryCredentialsOptions, + credentialDefaultProvider?: () => AwsCredentialIdentityProvider, + regionProvider?: ({ + profile, + }: { + profile?: string; + }) => Promise +) => RuntimeConfigAwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromTemporaryCredentials.browser.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromTemporaryCredentials.browser.d.ts new file mode 100644 index 000000000..f63c20b67 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromTemporaryCredentials.browser.d.ts @@ -0,0 +1,4 @@ +export { + FromTemporaryCredentialsOptions, + fromTemporaryCredentials, +} from "./fromTemporaryCredentials.base"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromTemporaryCredentials.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromTemporaryCredentials.d.ts new file mode 100644 index 000000000..c11255690 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromTemporaryCredentials.d.ts @@ -0,0 +1,6 @@ +import { RuntimeConfigAwsCredentialIdentityProvider } from "@aws-sdk/types"; +import { FromTemporaryCredentialsOptions } from "./fromTemporaryCredentials.base"; +export { FromTemporaryCredentialsOptions }; +export declare const fromTemporaryCredentials: ( + options: FromTemporaryCredentialsOptions +) => RuntimeConfigAwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromTokenFile.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromTokenFile.d.ts new file mode 100644 index 000000000..29ff2c089 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromTokenFile.d.ts @@ -0,0 +1,5 @@ +import { FromTokenFileInit } from "@aws-sdk/credential-provider-web-identity"; +import { AwsCredentialIdentityProvider } from "@smithy/types"; +export declare const fromTokenFile: ( + init?: FromTokenFileInit +) => AwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromWebToken.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromWebToken.d.ts new file mode 100644 index 000000000..e9eaf85bd --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/fromWebToken.d.ts @@ -0,0 +1,5 @@ +import { FromWebTokenInit } from "@aws-sdk/credential-provider-web-identity"; +import { AwsCredentialIdentityProvider } from "@smithy/types"; +export declare const fromWebToken: ( + init: FromWebTokenInit +) => AwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/index.browser.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/index.browser.d.ts new file mode 100644 index 000000000..1c1c3f905 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/index.browser.d.ts @@ -0,0 +1,9 @@ +export * from "./fromCognitoIdentity"; +export * from "./fromCognitoIdentityPool"; +export { fromHttp } from "@aws-sdk/credential-provider-http"; +export { + FromHttpOptions, + HttpProviderCredentials, +} from "@aws-sdk/credential-provider-http"; +export * from "./fromTemporaryCredentials.browser"; +export * from "./fromWebToken"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..fdca128c3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/index.d.ts @@ -0,0 +1,19 @@ +export * from "./createCredentialChain"; +export * from "./fromCognitoIdentity"; +export * from "./fromCognitoIdentityPool"; +export * from "./fromContainerMetadata"; +export * from "./fromEnv"; +export { + fromHttp, + FromHttpOptions, + HttpProviderCredentials, +} from "@aws-sdk/credential-provider-http"; +export * from "./fromIni"; +export * from "./fromInstanceMetadata"; +export * from "./fromLoginCredentials"; +export * from "./fromNodeProviderChain"; +export * from "./fromProcess"; +export * from "./fromSSO"; +export * from "./fromTemporaryCredentials"; +export * from "./fromTokenFile"; +export * from "./fromWebToken"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/loadSts.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/loadSts.d.ts new file mode 100644 index 000000000..71bfc5d46 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/dist-types/ts3.4/loadSts.d.ts @@ -0,0 +1,2 @@ +import { AssumeRoleCommand, STSClient } from "@aws-sdk/nested-clients/sts"; +export { AssumeRoleCommand, STSClient }; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/package.json b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/package.json new file mode 100644 index 000000000..a6cd4e93a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/credential-providers/package.json @@ -0,0 +1,83 @@ +{ + "name": "@aws-sdk/credential-providers", + "version": "3.1009.0", + "description": "A collection of credential providers, without requiring service clients like STS, Cognito", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "browser": "./dist-es/index.browser.js", + "react-native": "./dist-es/index.browser.js", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline credential-providers", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "extract:docs": "api-extractor run --local", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "keywords": [ + "aws", + "credentials" + ], + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/client-cognito-identity": "3.1009.0", + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/credential-provider-cognito-identity": "^3.972.13", + "@aws-sdk/credential-provider-env": "^3.972.18", + "@aws-sdk/credential-provider-http": "^3.972.20", + "@aws-sdk/credential-provider-ini": "^3.972.20", + "@aws-sdk/credential-provider-login": "^3.972.20", + "@aws-sdk/credential-provider-node": "^3.972.21", + "@aws-sdk/credential-provider-process": "^3.972.18", + "@aws-sdk/credential-provider-sso": "^3.972.20", + "@aws-sdk/credential-provider-web-identity": "^3.972.20", + "@aws-sdk/nested-clients": "^3.996.10", + "@aws-sdk/types": "^3.973.6", + "@smithy/config-resolver": "^4.4.11", + "@smithy/core": "^3.23.11", + "@smithy/credential-provider-imds": "^4.2.12", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "@types/node": "^20.14.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages/credential-providers", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages/credential-providers" + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-host-header/LICENSE b/food-ordering-app/server/node_modules/@aws-sdk/middleware-host-header/LICENSE new file mode 100644 index 000000000..e907b5866 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-host-header/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-host-header/README.md b/food-ordering-app/server/node_modules/@aws-sdk/middleware-host-header/README.md new file mode 100644 index 000000000..123940e6d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-host-header/README.md @@ -0,0 +1,4 @@ +# @aws-sdk/middleware-host-header + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/middleware-host-header/latest.svg)](https://www.npmjs.com/package/@aws-sdk/middleware-host-header) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/middleware-host-header.svg)](https://www.npmjs.com/package/@aws-sdk/middleware-host-header) diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-host-header/dist-cjs/index.js b/food-ordering-app/server/node_modules/@aws-sdk/middleware-host-header/dist-cjs/index.js new file mode 100644 index 000000000..2dc022c34 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-host-header/dist-cjs/index.js @@ -0,0 +1,41 @@ +'use strict'; + +var protocolHttp = require('@smithy/protocol-http'); + +function resolveHostHeaderConfig(input) { + return input; +} +const hostHeaderMiddleware = (options) => (next) => async (args) => { + if (!protocolHttp.HttpRequest.isInstance(args.request)) + return next(args); + const { request } = args; + const { handlerProtocol = "" } = options.requestHandler.metadata || {}; + if (handlerProtocol.indexOf("h2") >= 0 && !request.headers[":authority"]) { + delete request.headers["host"]; + request.headers[":authority"] = request.hostname + (request.port ? ":" + request.port : ""); + } + else if (!request.headers["host"]) { + let host = request.hostname; + if (request.port != null) + host += `:${request.port}`; + request.headers["host"] = host; + } + return next(args); +}; +const hostHeaderMiddlewareOptions = { + name: "hostHeaderMiddleware", + step: "build", + priority: "low", + tags: ["HOST"], + override: true, +}; +const getHostHeaderPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.add(hostHeaderMiddleware(options), hostHeaderMiddlewareOptions); + }, +}); + +exports.getHostHeaderPlugin = getHostHeaderPlugin; +exports.hostHeaderMiddleware = hostHeaderMiddleware; +exports.hostHeaderMiddlewareOptions = hostHeaderMiddlewareOptions; +exports.resolveHostHeaderConfig = resolveHostHeaderConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-host-header/dist-es/index.js b/food-ordering-app/server/node_modules/@aws-sdk/middleware-host-header/dist-es/index.js new file mode 100644 index 000000000..2e2fb62e8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-host-header/dist-es/index.js @@ -0,0 +1,33 @@ +import { HttpRequest } from "@smithy/protocol-http"; +export function resolveHostHeaderConfig(input) { + return input; +} +export const hostHeaderMiddleware = (options) => (next) => async (args) => { + if (!HttpRequest.isInstance(args.request)) + return next(args); + const { request } = args; + const { handlerProtocol = "" } = options.requestHandler.metadata || {}; + if (handlerProtocol.indexOf("h2") >= 0 && !request.headers[":authority"]) { + delete request.headers["host"]; + request.headers[":authority"] = request.hostname + (request.port ? ":" + request.port : ""); + } + else if (!request.headers["host"]) { + let host = request.hostname; + if (request.port != null) + host += `:${request.port}`; + request.headers["host"] = host; + } + return next(args); +}; +export const hostHeaderMiddlewareOptions = { + name: "hostHeaderMiddleware", + step: "build", + priority: "low", + tags: ["HOST"], + override: true, +}; +export const getHostHeaderPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.add(hostHeaderMiddleware(options), hostHeaderMiddlewareOptions); + }, +}); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-host-header/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/middleware-host-header/dist-types/index.d.ts new file mode 100644 index 000000000..d6b348c12 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-host-header/dist-types/index.d.ts @@ -0,0 +1,35 @@ +import type { AbsoluteLocation, BuildHandlerOptions, BuildMiddleware, Pluggable, RequestHandler } from "@smithy/types"; +/** + * @public + */ +export interface HostHeaderInputConfig { +} +interface PreviouslyResolved { + requestHandler: RequestHandler; +} +/** + * @internal + */ +export interface HostHeaderResolvedConfig { + /** + * The HTTP handler to use. Fetch in browser and Https in Nodejs. + */ + requestHandler: RequestHandler; +} +/** + * @internal + */ +export declare function resolveHostHeaderConfig(input: T & PreviouslyResolved & HostHeaderInputConfig): T & HostHeaderResolvedConfig; +/** + * @internal + */ +export declare const hostHeaderMiddleware: (options: HostHeaderResolvedConfig) => BuildMiddleware; +/** + * @internal + */ +export declare const hostHeaderMiddlewareOptions: BuildHandlerOptions & AbsoluteLocation; +/** + * @internal + */ +export declare const getHostHeaderPlugin: (options: HostHeaderResolvedConfig) => Pluggable; +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-host-header/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/middleware-host-header/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..3ca5561e3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-host-header/dist-types/ts3.4/index.d.ts @@ -0,0 +1,29 @@ +import { + AbsoluteLocation, + BuildHandlerOptions, + BuildMiddleware, + Pluggable, + RequestHandler, +} from "@smithy/types"; +export interface HostHeaderInputConfig {} +interface PreviouslyResolved { + requestHandler: RequestHandler; +} +export interface HostHeaderResolvedConfig { + requestHandler: RequestHandler; +} +export declare function resolveHostHeaderConfig( + input: T & PreviouslyResolved & HostHeaderInputConfig +): T & HostHeaderResolvedConfig; +export declare const hostHeaderMiddleware: < + Input extends object, + Output extends object +>( + options: HostHeaderResolvedConfig +) => BuildMiddleware; +export declare const hostHeaderMiddlewareOptions: BuildHandlerOptions & + AbsoluteLocation; +export declare const getHostHeaderPlugin: ( + options: HostHeaderResolvedConfig +) => Pluggable; +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-host-header/package.json b/food-ordering-app/server/node_modules/@aws-sdk/middleware-host-header/package.json new file mode 100644 index 000000000..b93996265 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-host-header/package.json @@ -0,0 +1,59 @@ +{ + "name": "@aws-sdk/middleware-host-header", + "version": "3.972.8", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline middleware-host-header", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "extract:docs": "api-extractor run --local", + "test": "yarn g:vitest run", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:watch": "yarn g:vitest watch", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/middleware-host-header", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/middleware-host-header" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-logger/LICENSE b/food-ordering-app/server/node_modules/@aws-sdk/middleware-logger/LICENSE new file mode 100644 index 000000000..74d4e5c31 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-logger/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-logger/README.md b/food-ordering-app/server/node_modules/@aws-sdk/middleware-logger/README.md new file mode 100644 index 000000000..861fa43fe --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-logger/README.md @@ -0,0 +1,4 @@ +# @aws-sdk/middleware-logger + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/middleware-logger/latest.svg)](https://www.npmjs.com/package/@aws-sdk/middleware-logger) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/middleware-logger.svg)](https://www.npmjs.com/package/@aws-sdk/middleware-logger) diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-logger/dist-cjs/index.js b/food-ordering-app/server/node_modules/@aws-sdk/middleware-logger/dist-cjs/index.js new file mode 100644 index 000000000..584a4faa2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-logger/dist-cjs/index.js @@ -0,0 +1,48 @@ +'use strict'; + +const loggerMiddleware = () => (next, context) => async (args) => { + try { + const response = await next(args); + const { clientName, commandName, logger, dynamoDbDocumentClientOptions = {} } = context; + const { overrideInputFilterSensitiveLog, overrideOutputFilterSensitiveLog } = dynamoDbDocumentClientOptions; + const inputFilterSensitiveLog = overrideInputFilterSensitiveLog ?? context.inputFilterSensitiveLog; + const outputFilterSensitiveLog = overrideOutputFilterSensitiveLog ?? context.outputFilterSensitiveLog; + const { $metadata, ...outputWithoutMetadata } = response.output; + logger?.info?.({ + clientName, + commandName, + input: inputFilterSensitiveLog(args.input), + output: outputFilterSensitiveLog(outputWithoutMetadata), + metadata: $metadata, + }); + return response; + } + catch (error) { + const { clientName, commandName, logger, dynamoDbDocumentClientOptions = {} } = context; + const { overrideInputFilterSensitiveLog } = dynamoDbDocumentClientOptions; + const inputFilterSensitiveLog = overrideInputFilterSensitiveLog ?? context.inputFilterSensitiveLog; + logger?.error?.({ + clientName, + commandName, + input: inputFilterSensitiveLog(args.input), + error, + metadata: error.$metadata, + }); + throw error; + } +}; +const loggerMiddlewareOptions = { + name: "loggerMiddleware", + tags: ["LOGGER"], + step: "initialize", + override: true, +}; +const getLoggerPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.add(loggerMiddleware(), loggerMiddlewareOptions); + }, +}); + +exports.getLoggerPlugin = getLoggerPlugin; +exports.loggerMiddleware = loggerMiddleware; +exports.loggerMiddlewareOptions = loggerMiddlewareOptions; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-logger/dist-es/index.js b/food-ordering-app/server/node_modules/@aws-sdk/middleware-logger/dist-es/index.js new file mode 100644 index 000000000..171e3bc54 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-logger/dist-es/index.js @@ -0,0 +1 @@ +export * from "./loggerMiddleware"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-logger/dist-es/loggerMiddleware.js b/food-ordering-app/server/node_modules/@aws-sdk/middleware-logger/dist-es/loggerMiddleware.js new file mode 100644 index 000000000..50da4ccad --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-logger/dist-es/loggerMiddleware.js @@ -0,0 +1,42 @@ +export const loggerMiddleware = () => (next, context) => async (args) => { + try { + const response = await next(args); + const { clientName, commandName, logger, dynamoDbDocumentClientOptions = {} } = context; + const { overrideInputFilterSensitiveLog, overrideOutputFilterSensitiveLog } = dynamoDbDocumentClientOptions; + const inputFilterSensitiveLog = overrideInputFilterSensitiveLog ?? context.inputFilterSensitiveLog; + const outputFilterSensitiveLog = overrideOutputFilterSensitiveLog ?? context.outputFilterSensitiveLog; + const { $metadata, ...outputWithoutMetadata } = response.output; + logger?.info?.({ + clientName, + commandName, + input: inputFilterSensitiveLog(args.input), + output: outputFilterSensitiveLog(outputWithoutMetadata), + metadata: $metadata, + }); + return response; + } + catch (error) { + const { clientName, commandName, logger, dynamoDbDocumentClientOptions = {} } = context; + const { overrideInputFilterSensitiveLog } = dynamoDbDocumentClientOptions; + const inputFilterSensitiveLog = overrideInputFilterSensitiveLog ?? context.inputFilterSensitiveLog; + logger?.error?.({ + clientName, + commandName, + input: inputFilterSensitiveLog(args.input), + error, + metadata: error.$metadata, + }); + throw error; + } +}; +export const loggerMiddlewareOptions = { + name: "loggerMiddleware", + tags: ["LOGGER"], + step: "initialize", + override: true, +}; +export const getLoggerPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.add(loggerMiddleware(), loggerMiddlewareOptions); + }, +}); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-logger/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/middleware-logger/dist-types/index.d.ts new file mode 100644 index 000000000..171e3bc54 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-logger/dist-types/index.d.ts @@ -0,0 +1 @@ +export * from "./loggerMiddleware"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-logger/dist-types/loggerMiddleware.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/middleware-logger/dist-types/loggerMiddleware.d.ts new file mode 100644 index 000000000..3aaa0dd44 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-logger/dist-types/loggerMiddleware.d.ts @@ -0,0 +1,4 @@ +import type { AbsoluteLocation, HandlerExecutionContext, InitializeHandler, InitializeHandlerOptions, MetadataBearer, Pluggable } from "@smithy/types"; +export declare const loggerMiddleware: () => (next: InitializeHandler, context: HandlerExecutionContext) => InitializeHandler; +export declare const loggerMiddlewareOptions: InitializeHandlerOptions & AbsoluteLocation; +export declare const getLoggerPlugin: (options: any) => Pluggable; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-logger/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/middleware-logger/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..171e3bc54 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-logger/dist-types/ts3.4/index.d.ts @@ -0,0 +1 @@ +export * from "./loggerMiddleware"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-logger/dist-types/ts3.4/loggerMiddleware.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/middleware-logger/dist-types/ts3.4/loggerMiddleware.d.ts new file mode 100644 index 000000000..10ded9e21 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-logger/dist-types/ts3.4/loggerMiddleware.d.ts @@ -0,0 +1,17 @@ +import { + AbsoluteLocation, + HandlerExecutionContext, + InitializeHandler, + InitializeHandlerOptions, + MetadataBearer, + Pluggable, +} from "@smithy/types"; +export declare const loggerMiddleware: () => < + Output extends MetadataBearer = MetadataBearer +>( + next: InitializeHandler, + context: HandlerExecutionContext +) => InitializeHandler; +export declare const loggerMiddlewareOptions: InitializeHandlerOptions & + AbsoluteLocation; +export declare const getLoggerPlugin: (options: any) => Pluggable; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-logger/package.json b/food-ordering-app/server/node_modules/@aws-sdk/middleware-logger/package.json new file mode 100644 index 000000000..d49920cc2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-logger/package.json @@ -0,0 +1,59 @@ +{ + "name": "@aws-sdk/middleware-logger", + "version": "3.972.8", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline middleware-logger", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:watch": "yarn g:vitest watch", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "email": "", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "@types/node": "^20.14.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/middleware-logger", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/middleware-logger" + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/LICENSE b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/LICENSE new file mode 100644 index 000000000..e907b5866 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/README.md b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/README.md new file mode 100644 index 000000000..2d5437e0a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/README.md @@ -0,0 +1,10 @@ +# @aws-sdk/middleware-recursion-detection + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/middleware-recursion-detection/latest.svg)](https://www.npmjs.com/package/@aws-sdk/middleware-recursion-detection) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/middleware-recursion-detection.svg)](https://www.npmjs.com/package/@aws-sdk/middleware-recursion-detection) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/index.js b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/index.js new file mode 100644 index 000000000..0b0121263 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/index.js @@ -0,0 +1,29 @@ +'use strict'; + +var recursionDetectionMiddleware = require('./recursionDetectionMiddleware'); + +const recursionDetectionMiddlewareOptions = { + step: "build", + tags: ["RECURSION_DETECTION"], + name: "recursionDetectionMiddleware", + override: true, + priority: "low", +}; + +const getRecursionDetectionPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.add(recursionDetectionMiddleware.recursionDetectionMiddleware(), recursionDetectionMiddlewareOptions); + }, +}); + +exports.getRecursionDetectionPlugin = getRecursionDetectionPlugin; +Object.prototype.hasOwnProperty.call(recursionDetectionMiddleware, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: recursionDetectionMiddleware['__proto__'] + }); + +Object.keys(recursionDetectionMiddleware).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = recursionDetectionMiddleware[k]; +}); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/recursionDetectionMiddleware.js b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/recursionDetectionMiddleware.js new file mode 100644 index 000000000..1300be082 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/recursionDetectionMiddleware.js @@ -0,0 +1,33 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.recursionDetectionMiddleware = void 0; +const lambda_invoke_store_1 = require("@aws/lambda-invoke-store"); +const protocol_http_1 = require("@smithy/protocol-http"); +const TRACE_ID_HEADER_NAME = "X-Amzn-Trace-Id"; +const ENV_LAMBDA_FUNCTION_NAME = "AWS_LAMBDA_FUNCTION_NAME"; +const ENV_TRACE_ID = "_X_AMZN_TRACE_ID"; +const recursionDetectionMiddleware = () => (next) => async (args) => { + const { request } = args; + if (!protocol_http_1.HttpRequest.isInstance(request)) { + return next(args); + } + const traceIdHeader = Object.keys(request.headers ?? {}).find((h) => h.toLowerCase() === TRACE_ID_HEADER_NAME.toLowerCase()) ?? + TRACE_ID_HEADER_NAME; + if (request.headers.hasOwnProperty(traceIdHeader)) { + return next(args); + } + const functionName = process.env[ENV_LAMBDA_FUNCTION_NAME]; + const traceIdFromEnv = process.env[ENV_TRACE_ID]; + const invokeStore = await lambda_invoke_store_1.InvokeStore.getInstanceAsync(); + const traceIdFromInvokeStore = invokeStore?.getXRayTraceId(); + const traceId = traceIdFromInvokeStore ?? traceIdFromEnv; + const nonEmptyString = (str) => typeof str === "string" && str.length > 0; + if (nonEmptyString(functionName) && nonEmptyString(traceId)) { + request.headers[TRACE_ID_HEADER_NAME] = traceId; + } + return next({ + ...args, + request, + }); +}; +exports.recursionDetectionMiddleware = recursionDetectionMiddleware; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/recursionDetectionMiddleware.native.js b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/recursionDetectionMiddleware.native.js new file mode 100644 index 000000000..fb265104a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/recursionDetectionMiddleware.native.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.recursionDetectionMiddleware = void 0; +const recursionDetectionMiddleware = () => (next) => async (args) => next(args); +exports.recursionDetectionMiddleware = recursionDetectionMiddleware; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/configuration.js b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/configuration.js new file mode 100644 index 000000000..059715f6c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/configuration.js @@ -0,0 +1,7 @@ +export const recursionDetectionMiddlewareOptions = { + step: "build", + tags: ["RECURSION_DETECTION"], + name: "recursionDetectionMiddleware", + override: true, + priority: "low", +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/getRecursionDetectionPlugin.js b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/getRecursionDetectionPlugin.js new file mode 100644 index 000000000..3a35e020b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/getRecursionDetectionPlugin.js @@ -0,0 +1,7 @@ +import { recursionDetectionMiddlewareOptions } from "./configuration"; +import { recursionDetectionMiddleware } from "./recursionDetectionMiddleware"; +export const getRecursionDetectionPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.add(recursionDetectionMiddleware(), recursionDetectionMiddlewareOptions); + }, +}); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/index.js b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/index.js new file mode 100644 index 000000000..88e92b67b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/index.js @@ -0,0 +1,2 @@ +export * from "./getRecursionDetectionPlugin"; +export * from "./recursionDetectionMiddleware"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/recursionDetectionMiddleware.browser.js b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/recursionDetectionMiddleware.browser.js new file mode 100644 index 000000000..74f4d0ff0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/recursionDetectionMiddleware.browser.js @@ -0,0 +1 @@ +export const recursionDetectionMiddleware = () => (next) => async (args) => next(args); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/recursionDetectionMiddleware.js b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/recursionDetectionMiddleware.js new file mode 100644 index 000000000..5deb6b4cf --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/recursionDetectionMiddleware.js @@ -0,0 +1,29 @@ +import { InvokeStore } from "@aws/lambda-invoke-store"; +import { HttpRequest } from "@smithy/protocol-http"; +const TRACE_ID_HEADER_NAME = "X-Amzn-Trace-Id"; +const ENV_LAMBDA_FUNCTION_NAME = "AWS_LAMBDA_FUNCTION_NAME"; +const ENV_TRACE_ID = "_X_AMZN_TRACE_ID"; +export const recursionDetectionMiddleware = () => (next) => async (args) => { + const { request } = args; + if (!HttpRequest.isInstance(request)) { + return next(args); + } + const traceIdHeader = Object.keys(request.headers ?? {}).find((h) => h.toLowerCase() === TRACE_ID_HEADER_NAME.toLowerCase()) ?? + TRACE_ID_HEADER_NAME; + if (request.headers.hasOwnProperty(traceIdHeader)) { + return next(args); + } + const functionName = process.env[ENV_LAMBDA_FUNCTION_NAME]; + const traceIdFromEnv = process.env[ENV_TRACE_ID]; + const invokeStore = await InvokeStore.getInstanceAsync(); + const traceIdFromInvokeStore = invokeStore?.getXRayTraceId(); + const traceId = traceIdFromInvokeStore ?? traceIdFromEnv; + const nonEmptyString = (str) => typeof str === "string" && str.length > 0; + if (nonEmptyString(functionName) && nonEmptyString(traceId)) { + request.headers[TRACE_ID_HEADER_NAME] = traceId; + } + return next({ + ...args, + request, + }); +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/recursionDetectionMiddleware.native.js b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/recursionDetectionMiddleware.native.js new file mode 100644 index 000000000..74f4d0ff0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/recursionDetectionMiddleware.native.js @@ -0,0 +1 @@ +export const recursionDetectionMiddleware = () => (next) => async (args) => next(args); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/configuration.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/configuration.d.ts new file mode 100644 index 000000000..83243af0b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/configuration.d.ts @@ -0,0 +1,5 @@ +import type { AbsoluteLocation, BuildHandlerOptions } from "@smithy/types"; +/** + * @internal + */ +export declare const recursionDetectionMiddlewareOptions: BuildHandlerOptions & AbsoluteLocation; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/getRecursionDetectionPlugin.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/getRecursionDetectionPlugin.d.ts new file mode 100644 index 000000000..27a7c120c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/getRecursionDetectionPlugin.d.ts @@ -0,0 +1,5 @@ +import type { Pluggable } from "@smithy/types"; +/** + * @internal + */ +export declare const getRecursionDetectionPlugin: (options: any) => Pluggable; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/index.d.ts new file mode 100644 index 000000000..88e92b67b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/index.d.ts @@ -0,0 +1,2 @@ +export * from "./getRecursionDetectionPlugin"; +export * from "./recursionDetectionMiddleware"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/recursionDetectionMiddleware.browser.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/recursionDetectionMiddleware.browser.d.ts new file mode 100644 index 000000000..c1998259a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/recursionDetectionMiddleware.browser.d.ts @@ -0,0 +1,6 @@ +import type { BuildMiddleware } from "@smithy/types"; +/** + * No-op middleware for runtimes outside of Node.js + * @internal + */ +export declare const recursionDetectionMiddleware: () => BuildMiddleware; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/recursionDetectionMiddleware.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/recursionDetectionMiddleware.d.ts new file mode 100644 index 000000000..b8a39d534 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/recursionDetectionMiddleware.d.ts @@ -0,0 +1,6 @@ +import type { BuildMiddleware } from "@smithy/types"; +/** + * Inject to trace ID to request header to detect recursion invocation in Lambda. + * @internal + */ +export declare const recursionDetectionMiddleware: () => BuildMiddleware; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/recursionDetectionMiddleware.native.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/recursionDetectionMiddleware.native.d.ts new file mode 100644 index 000000000..c1998259a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/recursionDetectionMiddleware.native.d.ts @@ -0,0 +1,6 @@ +import type { BuildMiddleware } from "@smithy/types"; +/** + * No-op middleware for runtimes outside of Node.js + * @internal + */ +export declare const recursionDetectionMiddleware: () => BuildMiddleware; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/configuration.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/configuration.d.ts new file mode 100644 index 000000000..2ff254486 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/configuration.d.ts @@ -0,0 +1,3 @@ +import { AbsoluteLocation, BuildHandlerOptions } from "@smithy/types"; +export declare const recursionDetectionMiddlewareOptions: BuildHandlerOptions & + AbsoluteLocation; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/getRecursionDetectionPlugin.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/getRecursionDetectionPlugin.d.ts new file mode 100644 index 000000000..cf326ddf7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/getRecursionDetectionPlugin.d.ts @@ -0,0 +1,4 @@ +import { Pluggable } from "@smithy/types"; +export declare const getRecursionDetectionPlugin: ( + options: any +) => Pluggable; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..88e92b67b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/index.d.ts @@ -0,0 +1,2 @@ +export * from "./getRecursionDetectionPlugin"; +export * from "./recursionDetectionMiddleware"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/recursionDetectionMiddleware.browser.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/recursionDetectionMiddleware.browser.d.ts new file mode 100644 index 000000000..3981c3166 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/recursionDetectionMiddleware.browser.d.ts @@ -0,0 +1,5 @@ +import { BuildMiddleware } from "@smithy/types"; +export declare const recursionDetectionMiddleware: () => BuildMiddleware< + any, + any +>; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/recursionDetectionMiddleware.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/recursionDetectionMiddleware.d.ts new file mode 100644 index 000000000..3981c3166 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/recursionDetectionMiddleware.d.ts @@ -0,0 +1,5 @@ +import { BuildMiddleware } from "@smithy/types"; +export declare const recursionDetectionMiddleware: () => BuildMiddleware< + any, + any +>; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/recursionDetectionMiddleware.native.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/recursionDetectionMiddleware.native.d.ts new file mode 100644 index 000000000..3981c3166 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/recursionDetectionMiddleware.native.d.ts @@ -0,0 +1,5 @@ +import { BuildMiddleware } from "@smithy/types"; +export declare const recursionDetectionMiddleware: () => BuildMiddleware< + any, + any +>; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/package.json b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/package.json new file mode 100644 index 000000000..72011f94b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-recursion-detection/package.json @@ -0,0 +1,63 @@ +{ + "name": "@aws-sdk/middleware-recursion-detection", + "version": "3.972.8", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline middleware-recursion-detection", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:watch": "yarn g:vitest watch", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@aws/lambda-invoke-store": "^0.2.2", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/middleware-recursion-detection", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/middleware-recursion-detection" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "browser": { + "./dist-es/recursionDetectionMiddleware": "./dist-es/recursionDetectionMiddleware.browser" + }, + "react-native": {} +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/LICENSE b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/LICENSE new file mode 100644 index 000000000..e907b5866 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/README.md b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/README.md new file mode 100644 index 000000000..a0bf1a925 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/README.md @@ -0,0 +1,4 @@ +# @aws-sdk/middleware-user-agent + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/middleware-user-agent/latest.svg)](https://www.npmjs.com/package/@aws-sdk/middleware-user-agent) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/middleware-user-agent.svg)](https://www.npmjs.com/package/@aws-sdk/middleware-user-agent) diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-cjs/index.js b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-cjs/index.js new file mode 100644 index 000000000..20ebb9004 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-cjs/index.js @@ -0,0 +1,194 @@ +'use strict'; + +var core = require('@smithy/core'); +var utilEndpoints = require('@aws-sdk/util-endpoints'); +var protocolHttp = require('@smithy/protocol-http'); +var core$1 = require('@aws-sdk/core'); +var utilRetry = require('@smithy/util-retry'); + +const DEFAULT_UA_APP_ID = undefined; +function isValidUserAgentAppId(appId) { + if (appId === undefined) { + return true; + } + return typeof appId === "string" && appId.length <= 50; +} +function resolveUserAgentConfig(input) { + const normalizedAppIdProvider = core.normalizeProvider(input.userAgentAppId ?? DEFAULT_UA_APP_ID); + const { customUserAgent } = input; + return Object.assign(input, { + customUserAgent: typeof customUserAgent === "string" ? [[customUserAgent]] : customUserAgent, + userAgentAppId: async () => { + const appId = await normalizedAppIdProvider(); + if (!isValidUserAgentAppId(appId)) { + const logger = input.logger?.constructor?.name === "NoOpLogger" || !input.logger ? console : input.logger; + if (typeof appId !== "string") { + logger?.warn("userAgentAppId must be a string or undefined."); + } + else if (appId.length > 50) { + logger?.warn("The provided userAgentAppId exceeds the maximum length of 50 characters."); + } + } + return appId; + }, + }); +} + +const ACCOUNT_ID_ENDPOINT_REGEX = /\d{12}\.ddb/; +async function checkFeatures(context, config, args) { + const request = args.request; + if (request?.headers?.["smithy-protocol"] === "rpc-v2-cbor") { + core$1.setFeature(context, "PROTOCOL_RPC_V2_CBOR", "M"); + } + if (typeof config.retryStrategy === "function") { + const retryStrategy = await config.retryStrategy(); + if (typeof retryStrategy.mode === "string") { + switch (retryStrategy.mode) { + case utilRetry.RETRY_MODES.ADAPTIVE: + core$1.setFeature(context, "RETRY_MODE_ADAPTIVE", "F"); + break; + case utilRetry.RETRY_MODES.STANDARD: + core$1.setFeature(context, "RETRY_MODE_STANDARD", "E"); + break; + } + } + } + if (typeof config.accountIdEndpointMode === "function") { + const endpointV2 = context.endpointV2; + if (String(endpointV2?.url?.hostname).match(ACCOUNT_ID_ENDPOINT_REGEX)) { + core$1.setFeature(context, "ACCOUNT_ID_ENDPOINT", "O"); + } + switch (await config.accountIdEndpointMode?.()) { + case "disabled": + core$1.setFeature(context, "ACCOUNT_ID_MODE_DISABLED", "Q"); + break; + case "preferred": + core$1.setFeature(context, "ACCOUNT_ID_MODE_PREFERRED", "P"); + break; + case "required": + core$1.setFeature(context, "ACCOUNT_ID_MODE_REQUIRED", "R"); + break; + } + } + const identity = context.__smithy_context?.selectedHttpAuthScheme?.identity; + if (identity?.$source) { + const credentials = identity; + if (credentials.accountId) { + core$1.setFeature(context, "RESOLVED_ACCOUNT_ID", "T"); + } + for (const [key, value] of Object.entries(credentials.$source ?? {})) { + core$1.setFeature(context, key, value); + } + } +} + +const USER_AGENT = "user-agent"; +const X_AMZ_USER_AGENT = "x-amz-user-agent"; +const SPACE = " "; +const UA_NAME_SEPARATOR = "/"; +const UA_NAME_ESCAPE_REGEX = /[^!$%&'*+\-.^_`|~\w]/g; +const UA_VALUE_ESCAPE_REGEX = /[^!$%&'*+\-.^_`|~\w#]/g; +const UA_ESCAPE_CHAR = "-"; + +const BYTE_LIMIT = 1024; +function encodeFeatures(features) { + let buffer = ""; + for (const key in features) { + const val = features[key]; + if (buffer.length + val.length + 1 <= BYTE_LIMIT) { + if (buffer.length) { + buffer += "," + val; + } + else { + buffer += val; + } + continue; + } + break; + } + return buffer; +} + +const userAgentMiddleware = (options) => (next, context) => async (args) => { + const { request } = args; + if (!protocolHttp.HttpRequest.isInstance(request)) { + return next(args); + } + const { headers } = request; + const userAgent = context?.userAgent?.map(escapeUserAgent) || []; + const defaultUserAgent = (await options.defaultUserAgentProvider()).map(escapeUserAgent); + await checkFeatures(context, options, args); + const awsContext = context; + defaultUserAgent.push(`m/${encodeFeatures(Object.assign({}, context.__smithy_context?.features, awsContext.__aws_sdk_context?.features))}`); + const customUserAgent = options?.customUserAgent?.map(escapeUserAgent) || []; + const appId = await options.userAgentAppId(); + if (appId) { + defaultUserAgent.push(escapeUserAgent([`app`, `${appId}`])); + } + const prefix = utilEndpoints.getUserAgentPrefix(); + const sdkUserAgentValue = (prefix ? [prefix] : []) + .concat([...defaultUserAgent, ...userAgent, ...customUserAgent]) + .join(SPACE); + const normalUAValue = [ + ...defaultUserAgent.filter((section) => section.startsWith("aws-sdk-")), + ...customUserAgent, + ].join(SPACE); + if (options.runtime !== "browser") { + if (normalUAValue) { + headers[X_AMZ_USER_AGENT] = headers[X_AMZ_USER_AGENT] + ? `${headers[USER_AGENT]} ${normalUAValue}` + : normalUAValue; + } + headers[USER_AGENT] = sdkUserAgentValue; + } + else { + headers[X_AMZ_USER_AGENT] = sdkUserAgentValue; + } + return next({ + ...args, + request, + }); +}; +const escapeUserAgent = (userAgentPair) => { + const name = userAgentPair[0] + .split(UA_NAME_SEPARATOR) + .map((part) => part.replace(UA_NAME_ESCAPE_REGEX, UA_ESCAPE_CHAR)) + .join(UA_NAME_SEPARATOR); + const version = userAgentPair[1]?.replace(UA_VALUE_ESCAPE_REGEX, UA_ESCAPE_CHAR); + const prefixSeparatorIndex = name.indexOf(UA_NAME_SEPARATOR); + const prefix = name.substring(0, prefixSeparatorIndex); + let uaName = name.substring(prefixSeparatorIndex + 1); + if (prefix === "api") { + uaName = uaName.toLowerCase(); + } + return [prefix, uaName, version] + .filter((item) => item && item.length > 0) + .reduce((acc, item, index) => { + switch (index) { + case 0: + return item; + case 1: + return `${acc}/${item}`; + default: + return `${acc}#${item}`; + } + }, ""); +}; +const getUserAgentMiddlewareOptions = { + name: "getUserAgentMiddleware", + step: "build", + priority: "low", + tags: ["SET_USER_AGENT", "USER_AGENT"], + override: true, +}; +const getUserAgentPlugin = (config) => ({ + applyToStack: (clientStack) => { + clientStack.add(userAgentMiddleware(config), getUserAgentMiddlewareOptions); + }, +}); + +exports.DEFAULT_UA_APP_ID = DEFAULT_UA_APP_ID; +exports.getUserAgentMiddlewareOptions = getUserAgentMiddlewareOptions; +exports.getUserAgentPlugin = getUserAgentPlugin; +exports.resolveUserAgentConfig = resolveUserAgentConfig; +exports.userAgentMiddleware = userAgentMiddleware; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-es/check-features.js b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-es/check-features.js new file mode 100644 index 000000000..af384b1cd --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-es/check-features.js @@ -0,0 +1,49 @@ +import { setFeature } from "@aws-sdk/core"; +import { RETRY_MODES } from "@smithy/util-retry"; +const ACCOUNT_ID_ENDPOINT_REGEX = /\d{12}\.ddb/; +export async function checkFeatures(context, config, args) { + const request = args.request; + if (request?.headers?.["smithy-protocol"] === "rpc-v2-cbor") { + setFeature(context, "PROTOCOL_RPC_V2_CBOR", "M"); + } + if (typeof config.retryStrategy === "function") { + const retryStrategy = await config.retryStrategy(); + if (typeof retryStrategy.mode === "string") { + switch (retryStrategy.mode) { + case RETRY_MODES.ADAPTIVE: + setFeature(context, "RETRY_MODE_ADAPTIVE", "F"); + break; + case RETRY_MODES.STANDARD: + setFeature(context, "RETRY_MODE_STANDARD", "E"); + break; + } + } + } + if (typeof config.accountIdEndpointMode === "function") { + const endpointV2 = context.endpointV2; + if (String(endpointV2?.url?.hostname).match(ACCOUNT_ID_ENDPOINT_REGEX)) { + setFeature(context, "ACCOUNT_ID_ENDPOINT", "O"); + } + switch (await config.accountIdEndpointMode?.()) { + case "disabled": + setFeature(context, "ACCOUNT_ID_MODE_DISABLED", "Q"); + break; + case "preferred": + setFeature(context, "ACCOUNT_ID_MODE_PREFERRED", "P"); + break; + case "required": + setFeature(context, "ACCOUNT_ID_MODE_REQUIRED", "R"); + break; + } + } + const identity = context.__smithy_context?.selectedHttpAuthScheme?.identity; + if (identity?.$source) { + const credentials = identity; + if (credentials.accountId) { + setFeature(context, "RESOLVED_ACCOUNT_ID", "T"); + } + for (const [key, value] of Object.entries(credentials.$source ?? {})) { + setFeature(context, key, value); + } + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-es/configurations.js b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-es/configurations.js new file mode 100644 index 000000000..7fff0875c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-es/configurations.js @@ -0,0 +1,28 @@ +import { normalizeProvider } from "@smithy/core"; +export const DEFAULT_UA_APP_ID = undefined; +function isValidUserAgentAppId(appId) { + if (appId === undefined) { + return true; + } + return typeof appId === "string" && appId.length <= 50; +} +export function resolveUserAgentConfig(input) { + const normalizedAppIdProvider = normalizeProvider(input.userAgentAppId ?? DEFAULT_UA_APP_ID); + const { customUserAgent } = input; + return Object.assign(input, { + customUserAgent: typeof customUserAgent === "string" ? [[customUserAgent]] : customUserAgent, + userAgentAppId: async () => { + const appId = await normalizedAppIdProvider(); + if (!isValidUserAgentAppId(appId)) { + const logger = input.logger?.constructor?.name === "NoOpLogger" || !input.logger ? console : input.logger; + if (typeof appId !== "string") { + logger?.warn("userAgentAppId must be a string or undefined."); + } + else if (appId.length > 50) { + logger?.warn("The provided userAgentAppId exceeds the maximum length of 50 characters."); + } + } + return appId; + }, + }); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-es/constants.js b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-es/constants.js new file mode 100644 index 000000000..3d238932d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-es/constants.js @@ -0,0 +1,7 @@ +export const USER_AGENT = "user-agent"; +export const X_AMZ_USER_AGENT = "x-amz-user-agent"; +export const SPACE = " "; +export const UA_NAME_SEPARATOR = "/"; +export const UA_NAME_ESCAPE_REGEX = /[^!$%&'*+\-.^_`|~\w]/g; +export const UA_VALUE_ESCAPE_REGEX = /[^!$%&'*+\-.^_`|~\w#]/g; +export const UA_ESCAPE_CHAR = "-"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-es/encode-features.js b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-es/encode-features.js new file mode 100644 index 000000000..23002b6a5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-es/encode-features.js @@ -0,0 +1,18 @@ +const BYTE_LIMIT = 1024; +export function encodeFeatures(features) { + let buffer = ""; + for (const key in features) { + const val = features[key]; + if (buffer.length + val.length + 1 <= BYTE_LIMIT) { + if (buffer.length) { + buffer += "," + val; + } + else { + buffer += val; + } + continue; + } + break; + } + return buffer; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-es/index.js b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-es/index.js new file mode 100644 index 000000000..0456ec7b3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-es/index.js @@ -0,0 +1,2 @@ +export * from "./configurations"; +export * from "./user-agent-middleware"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-es/user-agent-middleware.js b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-es/user-agent-middleware.js new file mode 100644 index 000000000..7085ec6de --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-es/user-agent-middleware.js @@ -0,0 +1,82 @@ +import { getUserAgentPrefix } from "@aws-sdk/util-endpoints"; +import { HttpRequest } from "@smithy/protocol-http"; +import { checkFeatures } from "./check-features"; +import { SPACE, UA_ESCAPE_CHAR, UA_NAME_ESCAPE_REGEX, UA_NAME_SEPARATOR, UA_VALUE_ESCAPE_REGEX, USER_AGENT, X_AMZ_USER_AGENT, } from "./constants"; +import { encodeFeatures } from "./encode-features"; +export const userAgentMiddleware = (options) => (next, context) => async (args) => { + const { request } = args; + if (!HttpRequest.isInstance(request)) { + return next(args); + } + const { headers } = request; + const userAgent = context?.userAgent?.map(escapeUserAgent) || []; + const defaultUserAgent = (await options.defaultUserAgentProvider()).map(escapeUserAgent); + await checkFeatures(context, options, args); + const awsContext = context; + defaultUserAgent.push(`m/${encodeFeatures(Object.assign({}, context.__smithy_context?.features, awsContext.__aws_sdk_context?.features))}`); + const customUserAgent = options?.customUserAgent?.map(escapeUserAgent) || []; + const appId = await options.userAgentAppId(); + if (appId) { + defaultUserAgent.push(escapeUserAgent([`app`, `${appId}`])); + } + const prefix = getUserAgentPrefix(); + const sdkUserAgentValue = (prefix ? [prefix] : []) + .concat([...defaultUserAgent, ...userAgent, ...customUserAgent]) + .join(SPACE); + const normalUAValue = [ + ...defaultUserAgent.filter((section) => section.startsWith("aws-sdk-")), + ...customUserAgent, + ].join(SPACE); + if (options.runtime !== "browser") { + if (normalUAValue) { + headers[X_AMZ_USER_AGENT] = headers[X_AMZ_USER_AGENT] + ? `${headers[USER_AGENT]} ${normalUAValue}` + : normalUAValue; + } + headers[USER_AGENT] = sdkUserAgentValue; + } + else { + headers[X_AMZ_USER_AGENT] = sdkUserAgentValue; + } + return next({ + ...args, + request, + }); +}; +const escapeUserAgent = (userAgentPair) => { + const name = userAgentPair[0] + .split(UA_NAME_SEPARATOR) + .map((part) => part.replace(UA_NAME_ESCAPE_REGEX, UA_ESCAPE_CHAR)) + .join(UA_NAME_SEPARATOR); + const version = userAgentPair[1]?.replace(UA_VALUE_ESCAPE_REGEX, UA_ESCAPE_CHAR); + const prefixSeparatorIndex = name.indexOf(UA_NAME_SEPARATOR); + const prefix = name.substring(0, prefixSeparatorIndex); + let uaName = name.substring(prefixSeparatorIndex + 1); + if (prefix === "api") { + uaName = uaName.toLowerCase(); + } + return [prefix, uaName, version] + .filter((item) => item && item.length > 0) + .reduce((acc, item, index) => { + switch (index) { + case 0: + return item; + case 1: + return `${acc}/${item}`; + default: + return `${acc}#${item}`; + } + }, ""); +}; +export const getUserAgentMiddlewareOptions = { + name: "getUserAgentMiddleware", + step: "build", + priority: "low", + tags: ["SET_USER_AGENT", "USER_AGENT"], + override: true, +}; +export const getUserAgentPlugin = (config) => ({ + applyToStack: (clientStack) => { + clientStack.add(userAgentMiddleware(config), getUserAgentMiddlewareOptions); + }, +}); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/check-features.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/check-features.d.ts new file mode 100644 index 000000000..fc8c17c25 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/check-features.d.ts @@ -0,0 +1,20 @@ +import type { AccountIdEndpointMode } from "@aws-sdk/core/account-id-endpoint"; +import type { AwsHandlerExecutionContext } from "@aws-sdk/types"; +import type { AwsCredentialIdentityProvider, BuildHandlerArguments, Provider } from "@smithy/types"; +/** + * @internal + */ +type PreviouslyResolved = Partial<{ + credentials?: AwsCredentialIdentityProvider; + accountIdEndpointMode?: Provider; + retryStrategy?: Provider<{ + mode?: string; + }>; +}>; +/** + * @internal + * Check for features that don't have a middleware activation site but + * may be detected on the context, client config, or request. + */ +export declare function checkFeatures(context: AwsHandlerExecutionContext, config: PreviouslyResolved, args: BuildHandlerArguments): Promise; +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/configurations.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/configurations.d.ts new file mode 100644 index 000000000..cfed6704f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/configurations.d.ts @@ -0,0 +1,44 @@ +import type { Logger, Provider, UserAgent } from "@smithy/types"; +/** + * @internal + */ +export declare const DEFAULT_UA_APP_ID: undefined; +/** + * @public + */ +export interface UserAgentInputConfig { + /** + * The custom user agent header that would be appended to default one + */ + customUserAgent?: string | UserAgent; + /** + * The application ID used to identify the application. + */ + userAgentAppId?: string | undefined | Provider; +} +interface PreviouslyResolved { + defaultUserAgentProvider: Provider; + runtime: string; + logger?: Logger; +} +export interface UserAgentResolvedConfig { + /** + * The provider populating default tracking information to be sent with `user-agent`, `x-amz-user-agent` header. + * @internal + */ + defaultUserAgentProvider: Provider; + /** + * The custom user agent header that would be appended to default one + */ + customUserAgent?: UserAgent; + /** + * The runtime environment + */ + runtime: string; + /** + * Resolved value for input config {config.userAgentAppId} + */ + userAgentAppId: Provider; +} +export declare function resolveUserAgentConfig(input: T & PreviouslyResolved & UserAgentInputConfig): T & UserAgentResolvedConfig; +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/constants.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/constants.d.ts new file mode 100644 index 000000000..8c0dfc93b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/constants.d.ts @@ -0,0 +1,7 @@ +export declare const USER_AGENT = "user-agent"; +export declare const X_AMZ_USER_AGENT = "x-amz-user-agent"; +export declare const SPACE = " "; +export declare const UA_NAME_SEPARATOR = "/"; +export declare const UA_NAME_ESCAPE_REGEX: RegExp; +export declare const UA_VALUE_ESCAPE_REGEX: RegExp; +export declare const UA_ESCAPE_CHAR = "-"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/encode-features.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/encode-features.d.ts new file mode 100644 index 000000000..d6079ae2b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/encode-features.d.ts @@ -0,0 +1,5 @@ +import type { AwsSdkFeatures } from "@aws-sdk/types"; +/** + * @internal + */ +export declare function encodeFeatures(features: AwsSdkFeatures): string; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/index.d.ts new file mode 100644 index 000000000..0456ec7b3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/index.d.ts @@ -0,0 +1,2 @@ +export * from "./configurations"; +export * from "./user-agent-middleware"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/check-features.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/check-features.d.ts new file mode 100644 index 000000000..d1aa10206 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/check-features.d.ts @@ -0,0 +1,20 @@ +import { AccountIdEndpointMode } from "@aws-sdk/core/account-id-endpoint"; +import { AwsHandlerExecutionContext } from "@aws-sdk/types"; +import { + AwsCredentialIdentityProvider, + BuildHandlerArguments, + Provider, +} from "@smithy/types"; +type PreviouslyResolved = Partial<{ + credentials?: AwsCredentialIdentityProvider; + accountIdEndpointMode?: Provider; + retryStrategy?: Provider<{ + mode?: string; + }>; +}>; +export declare function checkFeatures( + context: AwsHandlerExecutionContext, + config: PreviouslyResolved, + args: BuildHandlerArguments +): Promise; +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/configurations.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/configurations.d.ts new file mode 100644 index 000000000..a4a1b1084 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/configurations.d.ts @@ -0,0 +1,21 @@ +import { Logger, Provider, UserAgent } from "@smithy/types"; +export declare const DEFAULT_UA_APP_ID: undefined; +export interface UserAgentInputConfig { + customUserAgent?: string | UserAgent; + userAgentAppId?: string | undefined | Provider; +} +interface PreviouslyResolved { + defaultUserAgentProvider: Provider; + runtime: string; + logger?: Logger; +} +export interface UserAgentResolvedConfig { + defaultUserAgentProvider: Provider; + customUserAgent?: UserAgent; + runtime: string; + userAgentAppId: Provider; +} +export declare function resolveUserAgentConfig( + input: T & PreviouslyResolved & UserAgentInputConfig +): T & UserAgentResolvedConfig; +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/constants.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/constants.d.ts new file mode 100644 index 000000000..8c0dfc93b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/constants.d.ts @@ -0,0 +1,7 @@ +export declare const USER_AGENT = "user-agent"; +export declare const X_AMZ_USER_AGENT = "x-amz-user-agent"; +export declare const SPACE = " "; +export declare const UA_NAME_SEPARATOR = "/"; +export declare const UA_NAME_ESCAPE_REGEX: RegExp; +export declare const UA_VALUE_ESCAPE_REGEX: RegExp; +export declare const UA_ESCAPE_CHAR = "-"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/encode-features.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/encode-features.d.ts new file mode 100644 index 000000000..a7be5b71f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/encode-features.d.ts @@ -0,0 +1,2 @@ +import { AwsSdkFeatures } from "@aws-sdk/types"; +export declare function encodeFeatures(features: AwsSdkFeatures): string; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..0456ec7b3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/index.d.ts @@ -0,0 +1,2 @@ +export * from "./configurations"; +export * from "./user-agent-middleware"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/user-agent-middleware.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/user-agent-middleware.d.ts new file mode 100644 index 000000000..a4da01e8c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/user-agent-middleware.d.ts @@ -0,0 +1,21 @@ +import { AwsHandlerExecutionContext } from "@aws-sdk/types"; +import { + AbsoluteLocation, + BuildHandler, + BuildHandlerOptions, + HandlerExecutionContext, + MetadataBearer, + Pluggable, +} from "@smithy/types"; +import { UserAgentResolvedConfig } from "./configurations"; +export declare const userAgentMiddleware: ( + options: UserAgentResolvedConfig +) => ( + next: BuildHandler, + context: HandlerExecutionContext | AwsHandlerExecutionContext +) => BuildHandler; +export declare const getUserAgentMiddlewareOptions: BuildHandlerOptions & + AbsoluteLocation; +export declare const getUserAgentPlugin: ( + config: UserAgentResolvedConfig +) => Pluggable; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/user-agent-middleware.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/user-agent-middleware.d.ts new file mode 100644 index 000000000..d2096c92c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/dist-types/user-agent-middleware.d.ts @@ -0,0 +1,18 @@ +import type { AwsHandlerExecutionContext } from "@aws-sdk/types"; +import type { AbsoluteLocation, BuildHandler, BuildHandlerOptions, HandlerExecutionContext, MetadataBearer, Pluggable } from "@smithy/types"; +import type { UserAgentResolvedConfig } from "./configurations"; +/** + * Build user agent header sections from: + * 1. runtime-specific default user agent provider; + * 2. custom user agent from `customUserAgent` client config; + * 3. handler execution context set by internal SDK components; + * The built user agent will be set to `x-amz-user-agent` header for ALL the + * runtimes. + * Please note that any override to the `user-agent` or `x-amz-user-agent` header + * in the HTTP request is discouraged. Please use `customUserAgent` client + * config or middleware setting the `userAgent` context to generate desired user + * agent. + */ +export declare const userAgentMiddleware: (options: UserAgentResolvedConfig) => (next: BuildHandler, context: HandlerExecutionContext | AwsHandlerExecutionContext) => BuildHandler; +export declare const getUserAgentMiddlewareOptions: BuildHandlerOptions & AbsoluteLocation; +export declare const getUserAgentPlugin: (config: UserAgentResolvedConfig) => Pluggable; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/package.json b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/package.json new file mode 100644 index 000000000..176d0fc44 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/middleware-user-agent/package.json @@ -0,0 +1,63 @@ +{ + "name": "@aws-sdk/middleware-user-agent", + "version": "3.972.21", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline middleware-user-agent", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "extract:docs": "api-extractor run --local", + "test:watch": "yarn g:vitest watch", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-endpoints": "^3.996.5", + "@smithy/core": "^3.23.11", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-retry": "^4.2.12", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/middleware-user-agent", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/middleware-user-agent" + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/README.md b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/README.md new file mode 100644 index 000000000..1182bbdc2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/README.md @@ -0,0 +1,13 @@ +# @aws-sdk/nested-clients + +## Description + +This is an internal package. Do not install this as a direct dependency. + +This package contains separate internal implementations of the STS and SSO-OIDC AWS SDK clients +to be used by the AWS SDK credential providers to break a cyclic dependency. + +### Bundlers + +This package may be marked as external if you do not use STS nor SSO-OIDC +in your credential resolution process. diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/cognito-identity.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/cognito-identity.d.ts new file mode 100644 index 000000000..a16db4e3d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/cognito-identity.d.ts @@ -0,0 +1,7 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +declare module "@aws-sdk/nested-clients/cognito-identity" { + export * from "@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/index.d"; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/cognito-identity.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/cognito-identity.js new file mode 100644 index 000000000..cdfed358e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/cognito-identity.js @@ -0,0 +1,5 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +module.exports = require("./dist-cjs/submodules/cognito-identity/index.js"); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/index.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/index.js new file mode 100644 index 000000000..eb109abbe --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/index.js @@ -0,0 +1,2 @@ +'use strict'; + diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/auth/httpAuthSchemeProvider.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/auth/httpAuthSchemeProvider.js new file mode 100644 index 000000000..5d12f1a46 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/auth/httpAuthSchemeProvider.js @@ -0,0 +1,60 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveHttpAuthSchemeConfig = exports.defaultCognitoIdentityHttpAuthSchemeProvider = exports.defaultCognitoIdentityHttpAuthSchemeParametersProvider = void 0; +const core_1 = require("@aws-sdk/core"); +const util_middleware_1 = require("@smithy/util-middleware"); +const defaultCognitoIdentityHttpAuthSchemeParametersProvider = async (config, context, input) => { + return { + operation: (0, util_middleware_1.getSmithyContext)(context).operation, + region: (await (0, util_middleware_1.normalizeProvider)(config.region)()) || + (() => { + throw new Error("expected `region` to be configured for `aws.auth#sigv4`"); + })(), + }; +}; +exports.defaultCognitoIdentityHttpAuthSchemeParametersProvider = defaultCognitoIdentityHttpAuthSchemeParametersProvider; +function createAwsAuthSigv4HttpAuthOption(authParameters) { + return { + schemeId: "aws.auth#sigv4", + signingProperties: { + name: "cognito-identity", + region: authParameters.region, + }, + propertiesExtractor: (config, context) => ({ + signingProperties: { + config, + context, + }, + }), + }; +} +function createSmithyApiNoAuthHttpAuthOption(authParameters) { + return { + schemeId: "smithy.api#noAuth", + }; +} +const defaultCognitoIdentityHttpAuthSchemeProvider = (authParameters) => { + const options = []; + switch (authParameters.operation) { + case "GetCredentialsForIdentity": { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + case "GetId": { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + default: { + options.push(createAwsAuthSigv4HttpAuthOption(authParameters)); + } + } + return options; +}; +exports.defaultCognitoIdentityHttpAuthSchemeProvider = defaultCognitoIdentityHttpAuthSchemeProvider; +const resolveHttpAuthSchemeConfig = (config) => { + const config_0 = (0, core_1.resolveAwsSdkSigV4Config)(config); + return Object.assign(config_0, { + authSchemePreference: (0, util_middleware_1.normalizeProvider)(config.authSchemePreference ?? []), + }); +}; +exports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/endpoint/endpointResolver.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/endpoint/endpointResolver.js new file mode 100644 index 000000000..7258a356f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/endpoint/endpointResolver.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.defaultEndpointResolver = void 0; +const util_endpoints_1 = require("@aws-sdk/util-endpoints"); +const util_endpoints_2 = require("@smithy/util-endpoints"); +const ruleset_1 = require("./ruleset"); +const cache = new util_endpoints_2.EndpointCache({ + size: 50, + params: ["Endpoint", "Region", "UseDualStack", "UseFIPS"], +}); +const defaultEndpointResolver = (endpointParams, context = {}) => { + return cache.get(endpointParams, () => (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, { + endpointParams: endpointParams, + logger: context.logger, + })); +}; +exports.defaultEndpointResolver = defaultEndpointResolver; +util_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/endpoint/ruleset.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/endpoint/ruleset.js new file mode 100644 index 000000000..77610c0d0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/endpoint/ruleset.js @@ -0,0 +1,146 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ruleSet = void 0; +const w = "required", x = "fn", y = "argv", z = "ref"; +const a = true, b = "isSet", c = "booleanEquals", d = "error", e = "endpoint", f = "tree", g = "PartitionResult", h = "getAttr", i = "stringEquals", j = { [w]: false, type: "string" }, k = { [w]: true, default: false, type: "boolean" }, l = { [z]: "Endpoint" }, m = { [x]: c, [y]: [{ [z]: "UseFIPS" }, true] }, n = { [x]: c, [y]: [{ [z]: "UseDualStack" }, true] }, o = {}, p = { [z]: "Region" }, q = { [x]: h, [y]: [{ [z]: g }, "supportsFIPS"] }, r = { [z]: g }, s = { [x]: c, [y]: [true, { [x]: h, [y]: [r, "supportsDualStack"] }] }, t = [m], u = [n], v = [p]; +const _data = { + version: "1.0", + parameters: { Region: j, UseDualStack: k, UseFIPS: k, Endpoint: j }, + rules: [ + { + conditions: [{ [x]: b, [y]: [l] }], + rules: [ + { conditions: t, error: "Invalid Configuration: FIPS and custom endpoint are not supported", type: d }, + { conditions: u, error: "Invalid Configuration: Dualstack and custom endpoint are not supported", type: d }, + { endpoint: { url: l, properties: o, headers: o }, type: e }, + ], + type: f, + }, + { + conditions: [{ [x]: b, [y]: v }], + rules: [ + { + conditions: [{ [x]: "aws.partition", [y]: v, assign: g }], + rules: [ + { + conditions: [m, n], + rules: [ + { + conditions: [{ [x]: c, [y]: [a, q] }, s], + rules: [ + { + conditions: [{ [x]: i, [y]: [p, "us-east-1"] }], + endpoint: { + url: "https://cognito-identity-fips.us-east-1.amazonaws.com", + properties: o, + headers: o, + }, + type: e, + }, + { + conditions: [{ [x]: i, [y]: [p, "us-east-2"] }], + endpoint: { + url: "https://cognito-identity-fips.us-east-2.amazonaws.com", + properties: o, + headers: o, + }, + type: e, + }, + { + conditions: [{ [x]: i, [y]: [p, "us-west-1"] }], + endpoint: { + url: "https://cognito-identity-fips.us-west-1.amazonaws.com", + properties: o, + headers: o, + }, + type: e, + }, + { + conditions: [{ [x]: i, [y]: [p, "us-west-2"] }], + endpoint: { + url: "https://cognito-identity-fips.us-west-2.amazonaws.com", + properties: o, + headers: o, + }, + type: e, + }, + { + endpoint: { + url: "https://cognito-identity-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: o, + headers: o, + }, + type: e, + }, + ], + type: f, + }, + { error: "FIPS and DualStack are enabled, but this partition does not support one or both", type: d }, + ], + type: f, + }, + { + conditions: t, + rules: [ + { + conditions: [{ [x]: c, [y]: [q, a] }], + rules: [ + { + endpoint: { + url: "https://cognito-identity-fips.{Region}.{PartitionResult#dnsSuffix}", + properties: o, + headers: o, + }, + type: e, + }, + ], + type: f, + }, + { error: "FIPS is enabled but this partition does not support FIPS", type: d }, + ], + type: f, + }, + { + conditions: u, + rules: [ + { + conditions: [s], + rules: [ + { + conditions: [{ [x]: i, [y]: ["aws", { [x]: h, [y]: [r, "name"] }] }], + endpoint: { url: "https://cognito-identity.{Region}.amazonaws.com", properties: o, headers: o }, + type: e, + }, + { + endpoint: { + url: "https://cognito-identity.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: o, + headers: o, + }, + type: e, + }, + ], + type: f, + }, + { error: "DualStack is enabled but this partition does not support DualStack", type: d }, + ], + type: f, + }, + { + endpoint: { + url: "https://cognito-identity.{Region}.{PartitionResult#dnsSuffix}", + properties: o, + headers: o, + }, + type: e, + }, + ], + type: f, + }, + ], + type: f, + }, + { error: "Invalid Configuration: Missing Region", type: d }, + ], +}; +exports.ruleSet = _data; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/index.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/index.js new file mode 100644 index 000000000..cda8758f8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/index.js @@ -0,0 +1,174 @@ +'use strict'; + +var middlewareHostHeader = require('@aws-sdk/middleware-host-header'); +var middlewareLogger = require('@aws-sdk/middleware-logger'); +var middlewareRecursionDetection = require('@aws-sdk/middleware-recursion-detection'); +var middlewareUserAgent = require('@aws-sdk/middleware-user-agent'); +var configResolver = require('@smithy/config-resolver'); +var core = require('@smithy/core'); +var schema = require('@smithy/core/schema'); +var middlewareContentLength = require('@smithy/middleware-content-length'); +var middlewareEndpoint = require('@smithy/middleware-endpoint'); +var middlewareRetry = require('@smithy/middleware-retry'); +var smithyClient = require('@smithy/smithy-client'); +var httpAuthSchemeProvider = require('./auth/httpAuthSchemeProvider'); +var runtimeConfig = require('./runtimeConfig'); +var regionConfigResolver = require('@aws-sdk/region-config-resolver'); +var protocolHttp = require('@smithy/protocol-http'); +var schemas_0 = require('./schemas/schemas_0'); +var errors = require('./models/errors'); +var CognitoIdentityServiceException = require('./models/CognitoIdentityServiceException'); + +const resolveClientEndpointParameters = (options) => { + return Object.assign(options, { + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + useFipsEndpoint: options.useFipsEndpoint ?? false, + defaultSigningName: "cognito-identity", + }); +}; +const commonParams = { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }, +}; + +const getHttpAuthExtensionConfiguration = (runtimeConfig) => { + const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; + let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; + let _credentials = runtimeConfig.credentials; + return { + setHttpAuthScheme(httpAuthScheme) { + const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId); + if (index === -1) { + _httpAuthSchemes.push(httpAuthScheme); + } + else { + _httpAuthSchemes.splice(index, 1, httpAuthScheme); + } + }, + httpAuthSchemes() { + return _httpAuthSchemes; + }, + setHttpAuthSchemeProvider(httpAuthSchemeProvider) { + _httpAuthSchemeProvider = httpAuthSchemeProvider; + }, + httpAuthSchemeProvider() { + return _httpAuthSchemeProvider; + }, + setCredentials(credentials) { + _credentials = credentials; + }, + credentials() { + return _credentials; + }, + }; +}; +const resolveHttpAuthRuntimeConfig = (config) => { + return { + httpAuthSchemes: config.httpAuthSchemes(), + httpAuthSchemeProvider: config.httpAuthSchemeProvider(), + credentials: config.credentials(), + }; +}; + +const resolveRuntimeExtensions = (runtimeConfig, extensions) => { + const extensionConfiguration = Object.assign(regionConfigResolver.getAwsRegionExtensionConfiguration(runtimeConfig), smithyClient.getDefaultExtensionConfiguration(runtimeConfig), protocolHttp.getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig)); + extensions.forEach((extension) => extension.configure(extensionConfiguration)); + return Object.assign(runtimeConfig, regionConfigResolver.resolveAwsRegionExtensionConfiguration(extensionConfiguration), smithyClient.resolveDefaultRuntimeConfig(extensionConfiguration), protocolHttp.resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration)); +}; + +class CognitoIdentityClient extends smithyClient.Client { + config; + constructor(...[configuration]) { + const _config_0 = runtimeConfig.getRuntimeConfig(configuration || {}); + super(_config_0); + this.initConfig = _config_0; + const _config_1 = resolveClientEndpointParameters(_config_0); + const _config_2 = middlewareUserAgent.resolveUserAgentConfig(_config_1); + const _config_3 = middlewareRetry.resolveRetryConfig(_config_2); + const _config_4 = configResolver.resolveRegionConfig(_config_3); + const _config_5 = middlewareHostHeader.resolveHostHeaderConfig(_config_4); + const _config_6 = middlewareEndpoint.resolveEndpointConfig(_config_5); + const _config_7 = httpAuthSchemeProvider.resolveHttpAuthSchemeConfig(_config_6); + const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []); + this.config = _config_8; + this.middlewareStack.use(schema.getSchemaSerdePlugin(this.config)); + this.middlewareStack.use(middlewareUserAgent.getUserAgentPlugin(this.config)); + this.middlewareStack.use(middlewareRetry.getRetryPlugin(this.config)); + this.middlewareStack.use(middlewareContentLength.getContentLengthPlugin(this.config)); + this.middlewareStack.use(middlewareHostHeader.getHostHeaderPlugin(this.config)); + this.middlewareStack.use(middlewareLogger.getLoggerPlugin(this.config)); + this.middlewareStack.use(middlewareRecursionDetection.getRecursionDetectionPlugin(this.config)); + this.middlewareStack.use(core.getHttpAuthSchemeEndpointRuleSetPlugin(this.config, { + httpAuthSchemeParametersProvider: httpAuthSchemeProvider.defaultCognitoIdentityHttpAuthSchemeParametersProvider, + identityProviderConfigProvider: async (config) => new core.DefaultIdentityProviderConfig({ + "aws.auth#sigv4": config.credentials, + }), + })); + this.middlewareStack.use(core.getHttpSigningPlugin(this.config)); + } + destroy() { + super.destroy(); + } +} + +class GetCredentialsForIdentityCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "GetCredentialsForIdentity", {}) + .n("CognitoIdentityClient", "GetCredentialsForIdentityCommand") + .sc(schemas_0.GetCredentialsForIdentity$) + .build() { +} + +class GetIdCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "GetId", {}) + .n("CognitoIdentityClient", "GetIdCommand") + .sc(schemas_0.GetId$) + .build() { +} + +const commands = { + GetCredentialsForIdentityCommand, + GetIdCommand, +}; +class CognitoIdentity extends CognitoIdentityClient { +} +smithyClient.createAggregatedClient(commands, CognitoIdentity); + +exports.$Command = smithyClient.Command; +exports.__Client = smithyClient.Client; +exports.CognitoIdentityServiceException = CognitoIdentityServiceException.CognitoIdentityServiceException; +exports.CognitoIdentity = CognitoIdentity; +exports.CognitoIdentityClient = CognitoIdentityClient; +exports.GetCredentialsForIdentityCommand = GetCredentialsForIdentityCommand; +exports.GetIdCommand = GetIdCommand; +Object.prototype.hasOwnProperty.call(schemas_0, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: schemas_0['__proto__'] + }); + +Object.keys(schemas_0).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = schemas_0[k]; +}); +Object.prototype.hasOwnProperty.call(errors, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: errors['__proto__'] + }); + +Object.keys(errors).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = errors[k]; +}); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/models/CognitoIdentityServiceException.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/models/CognitoIdentityServiceException.js new file mode 100644 index 000000000..8d4847ac3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/models/CognitoIdentityServiceException.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CognitoIdentityServiceException = exports.__ServiceException = void 0; +const smithy_client_1 = require("@smithy/smithy-client"); +Object.defineProperty(exports, "__ServiceException", { enumerable: true, get: function () { return smithy_client_1.ServiceException; } }); +class CognitoIdentityServiceException extends smithy_client_1.ServiceException { + constructor(options) { + super(options); + Object.setPrototypeOf(this, CognitoIdentityServiceException.prototype); + } +} +exports.CognitoIdentityServiceException = CognitoIdentityServiceException; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/models/errors.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/models/errors.js new file mode 100644 index 000000000..72ce0c686 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/models/errors.js @@ -0,0 +1,121 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LimitExceededException = exports.TooManyRequestsException = exports.ResourceNotFoundException = exports.ResourceConflictException = exports.NotAuthorizedException = exports.InvalidParameterException = exports.InvalidIdentityPoolConfigurationException = exports.InternalErrorException = exports.ExternalServiceException = void 0; +const CognitoIdentityServiceException_1 = require("./CognitoIdentityServiceException"); +class ExternalServiceException extends CognitoIdentityServiceException_1.CognitoIdentityServiceException { + name = "ExternalServiceException"; + $fault = "client"; + constructor(opts) { + super({ + name: "ExternalServiceException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ExternalServiceException.prototype); + } +} +exports.ExternalServiceException = ExternalServiceException; +class InternalErrorException extends CognitoIdentityServiceException_1.CognitoIdentityServiceException { + name = "InternalErrorException"; + $fault = "server"; + constructor(opts) { + super({ + name: "InternalErrorException", + $fault: "server", + ...opts, + }); + Object.setPrototypeOf(this, InternalErrorException.prototype); + } +} +exports.InternalErrorException = InternalErrorException; +class InvalidIdentityPoolConfigurationException extends CognitoIdentityServiceException_1.CognitoIdentityServiceException { + name = "InvalidIdentityPoolConfigurationException"; + $fault = "client"; + constructor(opts) { + super({ + name: "InvalidIdentityPoolConfigurationException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidIdentityPoolConfigurationException.prototype); + } +} +exports.InvalidIdentityPoolConfigurationException = InvalidIdentityPoolConfigurationException; +class InvalidParameterException extends CognitoIdentityServiceException_1.CognitoIdentityServiceException { + name = "InvalidParameterException"; + $fault = "client"; + constructor(opts) { + super({ + name: "InvalidParameterException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidParameterException.prototype); + } +} +exports.InvalidParameterException = InvalidParameterException; +class NotAuthorizedException extends CognitoIdentityServiceException_1.CognitoIdentityServiceException { + name = "NotAuthorizedException"; + $fault = "client"; + constructor(opts) { + super({ + name: "NotAuthorizedException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, NotAuthorizedException.prototype); + } +} +exports.NotAuthorizedException = NotAuthorizedException; +class ResourceConflictException extends CognitoIdentityServiceException_1.CognitoIdentityServiceException { + name = "ResourceConflictException"; + $fault = "client"; + constructor(opts) { + super({ + name: "ResourceConflictException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ResourceConflictException.prototype); + } +} +exports.ResourceConflictException = ResourceConflictException; +class ResourceNotFoundException extends CognitoIdentityServiceException_1.CognitoIdentityServiceException { + name = "ResourceNotFoundException"; + $fault = "client"; + constructor(opts) { + super({ + name: "ResourceNotFoundException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ResourceNotFoundException.prototype); + } +} +exports.ResourceNotFoundException = ResourceNotFoundException; +class TooManyRequestsException extends CognitoIdentityServiceException_1.CognitoIdentityServiceException { + name = "TooManyRequestsException"; + $fault = "client"; + constructor(opts) { + super({ + name: "TooManyRequestsException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, TooManyRequestsException.prototype); + } +} +exports.TooManyRequestsException = TooManyRequestsException; +class LimitExceededException extends CognitoIdentityServiceException_1.CognitoIdentityServiceException { + name = "LimitExceededException"; + $fault = "client"; + constructor(opts) { + super({ + name: "LimitExceededException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, LimitExceededException.prototype); + } +} +exports.LimitExceededException = LimitExceededException; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/runtimeConfig.browser.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/runtimeConfig.browser.js new file mode 100644 index 000000000..9f7380e3d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/runtimeConfig.browser.js @@ -0,0 +1,38 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const tslib_1 = require("tslib"); +const package_json_1 = tslib_1.__importDefault(require("../../../package.json")); +const sha256_browser_1 = require("@aws-crypto/sha256-browser"); +const util_user_agent_browser_1 = require("@aws-sdk/util-user-agent-browser"); +const config_resolver_1 = require("@smithy/config-resolver"); +const fetch_http_handler_1 = require("@smithy/fetch-http-handler"); +const invalid_dependency_1 = require("@smithy/invalid-dependency"); +const smithy_client_1 = require("@smithy/smithy-client"); +const util_body_length_browser_1 = require("@smithy/util-body-length-browser"); +const util_defaults_mode_browser_1 = require("@smithy/util-defaults-mode-browser"); +const util_retry_1 = require("@smithy/util-retry"); +const runtimeConfig_shared_1 = require("./runtimeConfig.shared"); +const getRuntimeConfig = (config) => { + const defaultsMode = (0, util_defaults_mode_browser_1.resolveDefaultsModeConfig)(config); + const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode); + const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config); + return { + ...clientSharedValues, + ...config, + runtime: "browser", + defaultsMode, + bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_browser_1.calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + (0, util_user_agent_browser_1.createDefaultUserAgentProvider)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }), + maxAttempts: config?.maxAttempts ?? util_retry_1.DEFAULT_MAX_ATTEMPTS, + region: config?.region ?? (0, invalid_dependency_1.invalidProvider)("Region is missing"), + requestHandler: fetch_http_handler_1.FetchHttpHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? (async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE), + sha256: config?.sha256 ?? sha256_browser_1.Sha256, + streamCollector: config?.streamCollector ?? fetch_http_handler_1.streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (() => Promise.resolve(config_resolver_1.DEFAULT_USE_DUALSTACK_ENDPOINT)), + useFipsEndpoint: config?.useFipsEndpoint ?? (() => Promise.resolve(config_resolver_1.DEFAULT_USE_FIPS_ENDPOINT)), + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/runtimeConfig.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/runtimeConfig.js new file mode 100644 index 000000000..137f25459 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/runtimeConfig.js @@ -0,0 +1,53 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const tslib_1 = require("tslib"); +const package_json_1 = tslib_1.__importDefault(require("../../../package.json")); +const core_1 = require("@aws-sdk/core"); +const util_user_agent_node_1 = require("@aws-sdk/util-user-agent-node"); +const config_resolver_1 = require("@smithy/config-resolver"); +const hash_node_1 = require("@smithy/hash-node"); +const middleware_retry_1 = require("@smithy/middleware-retry"); +const node_config_provider_1 = require("@smithy/node-config-provider"); +const node_http_handler_1 = require("@smithy/node-http-handler"); +const smithy_client_1 = require("@smithy/smithy-client"); +const util_body_length_node_1 = require("@smithy/util-body-length-node"); +const util_defaults_mode_node_1 = require("@smithy/util-defaults-mode-node"); +const util_retry_1 = require("@smithy/util-retry"); +const runtimeConfig_shared_1 = require("./runtimeConfig.shared"); +const getRuntimeConfig = (config) => { + (0, smithy_client_1.emitWarningIfUnsupportedVersion)(process.version); + const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config); + const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode); + const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config); + (0, core_1.emitWarningIfUnsupportedVersion)(process.version); + const loaderConfig = { + profile: config?.profile, + logger: clientSharedValues.logger, + }; + return { + ...clientSharedValues, + ...config, + runtime: "node", + defaultsMode, + authSchemePreference: config?.authSchemePreference ?? (0, node_config_provider_1.loadConfig)(core_1.NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig), + bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + (0, util_user_agent_node_1.createDefaultUserAgentProvider)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }), + maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config), + region: config?.region ?? + (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, { ...config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }), + requestHandler: node_http_handler_1.NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? + (0, node_config_provider_1.loadConfig)({ + ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS, + default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE, + }, config), + sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, "sha256"), + streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + userAgentAppId: config?.userAgentAppId ?? (0, node_config_provider_1.loadConfig)(util_user_agent_node_1.NODE_APP_ID_CONFIG_OPTIONS, loaderConfig), + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/runtimeConfig.native.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/runtimeConfig.native.js new file mode 100644 index 000000000..34c5f8ece --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/runtimeConfig.native.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const sha256_js_1 = require("@aws-crypto/sha256-js"); +const runtimeConfig_browser_1 = require("./runtimeConfig.browser"); +const getRuntimeConfig = (config) => { + const browserDefaults = (0, runtimeConfig_browser_1.getRuntimeConfig)(config); + return { + ...browserDefaults, + ...config, + runtime: "react-native", + sha256: config?.sha256 ?? sha256_js_1.Sha256, + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/runtimeConfig.shared.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/runtimeConfig.shared.js new file mode 100644 index 000000000..c3ee7d40c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/runtimeConfig.shared.js @@ -0,0 +1,50 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const core_1 = require("@aws-sdk/core"); +const protocols_1 = require("@aws-sdk/core/protocols"); +const core_2 = require("@smithy/core"); +const smithy_client_1 = require("@smithy/smithy-client"); +const url_parser_1 = require("@smithy/url-parser"); +const util_base64_1 = require("@smithy/util-base64"); +const util_utf8_1 = require("@smithy/util-utf8"); +const httpAuthSchemeProvider_1 = require("./auth/httpAuthSchemeProvider"); +const endpointResolver_1 = require("./endpoint/endpointResolver"); +const schemas_0_1 = require("./schemas/schemas_0"); +const getRuntimeConfig = (config) => { + return { + apiVersion: "2014-06-30", + base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64, + base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64, + disableHostPrefix: config?.disableHostPrefix ?? false, + endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver, + extensions: config?.extensions ?? [], + httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? httpAuthSchemeProvider_1.defaultCognitoIdentityHttpAuthSchemeProvider, + httpAuthSchemes: config?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: (ipc) => ipc.getIdentityProvider("aws.auth#sigv4"), + signer: new core_1.AwsSdkSigV4Signer(), + }, + { + schemeId: "smithy.api#noAuth", + identityProvider: (ipc) => ipc.getIdentityProvider("smithy.api#noAuth") || (async () => ({})), + signer: new core_2.NoAuthSigner(), + }, + ], + logger: config?.logger ?? new smithy_client_1.NoOpLogger(), + protocol: config?.protocol ?? protocols_1.AwsJson1_1Protocol, + protocolSettings: config?.protocolSettings ?? { + defaultNamespace: "com.amazonaws.cognitoidentity", + errorTypeRegistries: schemas_0_1.errorTypeRegistries, + xmlNamespace: "http://cognito-identity.amazonaws.com/doc/2014-06-30/", + version: "2014-06-30", + serviceTarget: "AWSCognitoIdentityService", + }, + serviceId: config?.serviceId ?? "Cognito Identity", + urlParser: config?.urlParser ?? url_parser_1.parseUrl, + utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8, + utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8, + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/schemas/schemas_0.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/schemas/schemas_0.js new file mode 100644 index 000000000..027f61044 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/schemas/schemas_0.js @@ -0,0 +1,110 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GetId$ = exports.GetCredentialsForIdentity$ = exports.GetIdResponse$ = exports.GetIdInput$ = exports.GetCredentialsForIdentityResponse$ = exports.GetCredentialsForIdentityInput$ = exports.Credentials$ = exports.errorTypeRegistries = exports.TooManyRequestsException$ = exports.ResourceNotFoundException$ = exports.ResourceConflictException$ = exports.NotAuthorizedException$ = exports.LimitExceededException$ = exports.InvalidParameterException$ = exports.InvalidIdentityPoolConfigurationException$ = exports.InternalErrorException$ = exports.ExternalServiceException$ = exports.CognitoIdentityServiceException$ = void 0; +const _AI = "AccountId"; +const _AKI = "AccessKeyId"; +const _C = "Credentials"; +const _CRA = "CustomRoleArn"; +const _E = "Expiration"; +const _ESE = "ExternalServiceException"; +const _GCFI = "GetCredentialsForIdentity"; +const _GCFII = "GetCredentialsForIdentityInput"; +const _GCFIR = "GetCredentialsForIdentityResponse"; +const _GI = "GetId"; +const _GII = "GetIdInput"; +const _GIR = "GetIdResponse"; +const _IEE = "InternalErrorException"; +const _II = "IdentityId"; +const _IIPCE = "InvalidIdentityPoolConfigurationException"; +const _IPE = "InvalidParameterException"; +const _IPI = "IdentityPoolId"; +const _IPT = "IdentityProviderToken"; +const _L = "Logins"; +const _LEE = "LimitExceededException"; +const _LM = "LoginsMap"; +const _NAE = "NotAuthorizedException"; +const _RCE = "ResourceConflictException"; +const _RNFE = "ResourceNotFoundException"; +const _SK = "SecretKey"; +const _SKS = "SecretKeyString"; +const _ST = "SessionToken"; +const _TMRE = "TooManyRequestsException"; +const _c = "client"; +const _e = "error"; +const _hE = "httpError"; +const _m = "message"; +const _s = "smithy.ts.sdk.synthetic.com.amazonaws.cognitoidentity"; +const _se = "server"; +const n0 = "com.amazonaws.cognitoidentity"; +const schema_1 = require("@smithy/core/schema"); +const CognitoIdentityServiceException_1 = require("../models/CognitoIdentityServiceException"); +const errors_1 = require("../models/errors"); +const _s_registry = schema_1.TypeRegistry.for(_s); +exports.CognitoIdentityServiceException$ = [-3, _s, "CognitoIdentityServiceException", 0, [], []]; +_s_registry.registerError(exports.CognitoIdentityServiceException$, CognitoIdentityServiceException_1.CognitoIdentityServiceException); +const n0_registry = schema_1.TypeRegistry.for(n0); +exports.ExternalServiceException$ = [-3, n0, _ESE, { [_e]: _c, [_hE]: 400 }, [_m], [0]]; +n0_registry.registerError(exports.ExternalServiceException$, errors_1.ExternalServiceException); +exports.InternalErrorException$ = [-3, n0, _IEE, { [_e]: _se }, [_m], [0]]; +n0_registry.registerError(exports.InternalErrorException$, errors_1.InternalErrorException); +exports.InvalidIdentityPoolConfigurationException$ = [ + -3, + n0, + _IIPCE, + { [_e]: _c, [_hE]: 400 }, + [_m], + [0], +]; +n0_registry.registerError(exports.InvalidIdentityPoolConfigurationException$, errors_1.InvalidIdentityPoolConfigurationException); +exports.InvalidParameterException$ = [-3, n0, _IPE, { [_e]: _c, [_hE]: 400 }, [_m], [0]]; +n0_registry.registerError(exports.InvalidParameterException$, errors_1.InvalidParameterException); +exports.LimitExceededException$ = [-3, n0, _LEE, { [_e]: _c, [_hE]: 400 }, [_m], [0]]; +n0_registry.registerError(exports.LimitExceededException$, errors_1.LimitExceededException); +exports.NotAuthorizedException$ = [-3, n0, _NAE, { [_e]: _c, [_hE]: 403 }, [_m], [0]]; +n0_registry.registerError(exports.NotAuthorizedException$, errors_1.NotAuthorizedException); +exports.ResourceConflictException$ = [-3, n0, _RCE, { [_e]: _c, [_hE]: 409 }, [_m], [0]]; +n0_registry.registerError(exports.ResourceConflictException$, errors_1.ResourceConflictException); +exports.ResourceNotFoundException$ = [-3, n0, _RNFE, { [_e]: _c, [_hE]: 404 }, [_m], [0]]; +n0_registry.registerError(exports.ResourceNotFoundException$, errors_1.ResourceNotFoundException); +exports.TooManyRequestsException$ = [-3, n0, _TMRE, { [_e]: _c, [_hE]: 429 }, [_m], [0]]; +n0_registry.registerError(exports.TooManyRequestsException$, errors_1.TooManyRequestsException); +exports.errorTypeRegistries = [_s_registry, n0_registry]; +var IdentityProviderToken = [0, n0, _IPT, 8, 0]; +var SecretKeyString = [0, n0, _SKS, 8, 0]; +exports.Credentials$ = [ + 3, + n0, + _C, + 0, + [_AKI, _SK, _ST, _E], + [0, [() => SecretKeyString, 0], 0, 4], +]; +exports.GetCredentialsForIdentityInput$ = [ + 3, + n0, + _GCFII, + 0, + [_II, _L, _CRA], + [0, [() => LoginsMap, 0], 0], + 1, +]; +exports.GetCredentialsForIdentityResponse$ = [ + 3, + n0, + _GCFIR, + 0, + [_II, _C], + [0, [() => exports.Credentials$, 0]], +]; +exports.GetIdInput$ = [3, n0, _GII, 0, [_IPI, _AI, _L], [0, 0, [() => LoginsMap, 0]], 1]; +exports.GetIdResponse$ = [3, n0, _GIR, 0, [_II], [0]]; +var LoginsMap = [2, n0, _LM, 0, [0, 0], [() => IdentityProviderToken, 0]]; +exports.GetCredentialsForIdentity$ = [ + 9, + n0, + _GCFI, + 0, + () => exports.GetCredentialsForIdentityInput$, + () => exports.GetCredentialsForIdentityResponse$, +]; +exports.GetId$ = [9, n0, _GI, 0, () => exports.GetIdInput$, () => exports.GetIdResponse$]; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/auth/httpAuthSchemeProvider.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/auth/httpAuthSchemeProvider.js new file mode 100644 index 000000000..024a9fd25 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/auth/httpAuthSchemeProvider.js @@ -0,0 +1,56 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveHttpAuthSchemeConfig = exports.defaultSigninHttpAuthSchemeProvider = exports.defaultSigninHttpAuthSchemeParametersProvider = void 0; +const core_1 = require("@aws-sdk/core"); +const util_middleware_1 = require("@smithy/util-middleware"); +const defaultSigninHttpAuthSchemeParametersProvider = async (config, context, input) => { + return { + operation: (0, util_middleware_1.getSmithyContext)(context).operation, + region: (await (0, util_middleware_1.normalizeProvider)(config.region)()) || + (() => { + throw new Error("expected `region` to be configured for `aws.auth#sigv4`"); + })(), + }; +}; +exports.defaultSigninHttpAuthSchemeParametersProvider = defaultSigninHttpAuthSchemeParametersProvider; +function createAwsAuthSigv4HttpAuthOption(authParameters) { + return { + schemeId: "aws.auth#sigv4", + signingProperties: { + name: "signin", + region: authParameters.region, + }, + propertiesExtractor: (config, context) => ({ + signingProperties: { + config, + context, + }, + }), + }; +} +function createSmithyApiNoAuthHttpAuthOption(authParameters) { + return { + schemeId: "smithy.api#noAuth", + }; +} +const defaultSigninHttpAuthSchemeProvider = (authParameters) => { + const options = []; + switch (authParameters.operation) { + case "CreateOAuth2Token": { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + default: { + options.push(createAwsAuthSigv4HttpAuthOption(authParameters)); + } + } + return options; +}; +exports.defaultSigninHttpAuthSchemeProvider = defaultSigninHttpAuthSchemeProvider; +const resolveHttpAuthSchemeConfig = (config) => { + const config_0 = (0, core_1.resolveAwsSdkSigV4Config)(config); + return Object.assign(config_0, { + authSchemePreference: (0, util_middleware_1.normalizeProvider)(config.authSchemePreference ?? []), + }); +}; +exports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/endpoint/endpointResolver.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/endpoint/endpointResolver.js new file mode 100644 index 000000000..7258a356f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/endpoint/endpointResolver.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.defaultEndpointResolver = void 0; +const util_endpoints_1 = require("@aws-sdk/util-endpoints"); +const util_endpoints_2 = require("@smithy/util-endpoints"); +const ruleset_1 = require("./ruleset"); +const cache = new util_endpoints_2.EndpointCache({ + size: 50, + params: ["Endpoint", "Region", "UseDualStack", "UseFIPS"], +}); +const defaultEndpointResolver = (endpointParams, context = {}) => { + return cache.get(endpointParams, () => (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, { + endpointParams: endpointParams, + logger: context.logger, + })); +}; +exports.defaultEndpointResolver = defaultEndpointResolver; +util_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/endpoint/ruleset.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/endpoint/ruleset.js new file mode 100644 index 000000000..0a888e845 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/endpoint/ruleset.js @@ -0,0 +1,133 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ruleSet = void 0; +const u = "required", v = "fn", w = "argv", x = "ref"; +const a = true, b = "isSet", c = "booleanEquals", d = "error", e = "endpoint", f = "tree", g = "PartitionResult", h = "stringEquals", i = { [u]: true, default: false, type: "boolean" }, j = { [u]: false, type: "string" }, k = { [x]: "Endpoint" }, l = { [v]: c, [w]: [{ [x]: "UseFIPS" }, true] }, m = { [v]: c, [w]: [{ [x]: "UseDualStack" }, true] }, n = {}, o = { [v]: "getAttr", [w]: [{ [x]: g }, "name"] }, p = { [v]: c, [w]: [{ [x]: "UseFIPS" }, false] }, q = { [v]: c, [w]: [{ [x]: "UseDualStack" }, false] }, r = { [v]: "getAttr", [w]: [{ [x]: g }, "supportsFIPS"] }, s = { [v]: c, [w]: [true, { [v]: "getAttr", [w]: [{ [x]: g }, "supportsDualStack"] }] }, t = [{ [x]: "Region" }]; +const _data = { + version: "1.0", + parameters: { UseDualStack: i, UseFIPS: i, Endpoint: j, Region: j }, + rules: [ + { + conditions: [{ [v]: b, [w]: [k] }], + rules: [ + { conditions: [l], error: "Invalid Configuration: FIPS and custom endpoint are not supported", type: d }, + { + rules: [ + { + conditions: [m], + error: "Invalid Configuration: Dualstack and custom endpoint are not supported", + type: d, + }, + { endpoint: { url: k, properties: n, headers: n }, type: e }, + ], + type: f, + }, + ], + type: f, + }, + { + rules: [ + { + conditions: [{ [v]: b, [w]: t }], + rules: [ + { + conditions: [{ [v]: "aws.partition", [w]: t, assign: g }], + rules: [ + { + conditions: [{ [v]: h, [w]: [o, "aws"] }, p, q], + endpoint: { url: "https://{Region}.signin.aws.amazon.com", properties: n, headers: n }, + type: e, + }, + { + conditions: [{ [v]: h, [w]: [o, "aws-cn"] }, p, q], + endpoint: { url: "https://{Region}.signin.amazonaws.cn", properties: n, headers: n }, + type: e, + }, + { + conditions: [{ [v]: h, [w]: [o, "aws-us-gov"] }, p, q], + endpoint: { url: "https://{Region}.signin.amazonaws-us-gov.com", properties: n, headers: n }, + type: e, + }, + { + conditions: [l, m], + rules: [ + { + conditions: [{ [v]: c, [w]: [a, r] }, s], + rules: [ + { + endpoint: { + url: "https://signin-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { + error: "FIPS and DualStack are enabled, but this partition does not support one or both", + type: d, + }, + ], + type: f, + }, + { + conditions: [l, q], + rules: [ + { + conditions: [{ [v]: c, [w]: [r, a] }], + rules: [ + { + endpoint: { + url: "https://signin-fips.{Region}.{PartitionResult#dnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { error: "FIPS is enabled but this partition does not support FIPS", type: d }, + ], + type: f, + }, + { + conditions: [p, m], + rules: [ + { + conditions: [s], + rules: [ + { + endpoint: { + url: "https://signin.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { error: "DualStack is enabled but this partition does not support DualStack", type: d }, + ], + type: f, + }, + { + endpoint: { url: "https://signin.{Region}.{PartitionResult#dnsSuffix}", properties: n, headers: n }, + type: e, + }, + ], + type: f, + }, + ], + type: f, + }, + { error: "Invalid Configuration: Missing Region", type: d }, + ], + type: f, + }, + ], +}; +exports.ruleSet = _data; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/index.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/index.js new file mode 100644 index 000000000..cea679417 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/index.js @@ -0,0 +1,170 @@ +'use strict'; + +var middlewareHostHeader = require('@aws-sdk/middleware-host-header'); +var middlewareLogger = require('@aws-sdk/middleware-logger'); +var middlewareRecursionDetection = require('@aws-sdk/middleware-recursion-detection'); +var middlewareUserAgent = require('@aws-sdk/middleware-user-agent'); +var configResolver = require('@smithy/config-resolver'); +var core = require('@smithy/core'); +var schema = require('@smithy/core/schema'); +var middlewareContentLength = require('@smithy/middleware-content-length'); +var middlewareEndpoint = require('@smithy/middleware-endpoint'); +var middlewareRetry = require('@smithy/middleware-retry'); +var smithyClient = require('@smithy/smithy-client'); +var httpAuthSchemeProvider = require('./auth/httpAuthSchemeProvider'); +var runtimeConfig = require('./runtimeConfig'); +var regionConfigResolver = require('@aws-sdk/region-config-resolver'); +var protocolHttp = require('@smithy/protocol-http'); +var schemas_0 = require('./schemas/schemas_0'); +var errors = require('./models/errors'); +var SigninServiceException = require('./models/SigninServiceException'); + +const resolveClientEndpointParameters = (options) => { + return Object.assign(options, { + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + useFipsEndpoint: options.useFipsEndpoint ?? false, + defaultSigningName: "signin", + }); +}; +const commonParams = { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }, +}; + +const getHttpAuthExtensionConfiguration = (runtimeConfig) => { + const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; + let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; + let _credentials = runtimeConfig.credentials; + return { + setHttpAuthScheme(httpAuthScheme) { + const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId); + if (index === -1) { + _httpAuthSchemes.push(httpAuthScheme); + } + else { + _httpAuthSchemes.splice(index, 1, httpAuthScheme); + } + }, + httpAuthSchemes() { + return _httpAuthSchemes; + }, + setHttpAuthSchemeProvider(httpAuthSchemeProvider) { + _httpAuthSchemeProvider = httpAuthSchemeProvider; + }, + httpAuthSchemeProvider() { + return _httpAuthSchemeProvider; + }, + setCredentials(credentials) { + _credentials = credentials; + }, + credentials() { + return _credentials; + }, + }; +}; +const resolveHttpAuthRuntimeConfig = (config) => { + return { + httpAuthSchemes: config.httpAuthSchemes(), + httpAuthSchemeProvider: config.httpAuthSchemeProvider(), + credentials: config.credentials(), + }; +}; + +const resolveRuntimeExtensions = (runtimeConfig, extensions) => { + const extensionConfiguration = Object.assign(regionConfigResolver.getAwsRegionExtensionConfiguration(runtimeConfig), smithyClient.getDefaultExtensionConfiguration(runtimeConfig), protocolHttp.getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig)); + extensions.forEach((extension) => extension.configure(extensionConfiguration)); + return Object.assign(runtimeConfig, regionConfigResolver.resolveAwsRegionExtensionConfiguration(extensionConfiguration), smithyClient.resolveDefaultRuntimeConfig(extensionConfiguration), protocolHttp.resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration)); +}; + +class SigninClient extends smithyClient.Client { + config; + constructor(...[configuration]) { + const _config_0 = runtimeConfig.getRuntimeConfig(configuration || {}); + super(_config_0); + this.initConfig = _config_0; + const _config_1 = resolveClientEndpointParameters(_config_0); + const _config_2 = middlewareUserAgent.resolveUserAgentConfig(_config_1); + const _config_3 = middlewareRetry.resolveRetryConfig(_config_2); + const _config_4 = configResolver.resolveRegionConfig(_config_3); + const _config_5 = middlewareHostHeader.resolveHostHeaderConfig(_config_4); + const _config_6 = middlewareEndpoint.resolveEndpointConfig(_config_5); + const _config_7 = httpAuthSchemeProvider.resolveHttpAuthSchemeConfig(_config_6); + const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []); + this.config = _config_8; + this.middlewareStack.use(schema.getSchemaSerdePlugin(this.config)); + this.middlewareStack.use(middlewareUserAgent.getUserAgentPlugin(this.config)); + this.middlewareStack.use(middlewareRetry.getRetryPlugin(this.config)); + this.middlewareStack.use(middlewareContentLength.getContentLengthPlugin(this.config)); + this.middlewareStack.use(middlewareHostHeader.getHostHeaderPlugin(this.config)); + this.middlewareStack.use(middlewareLogger.getLoggerPlugin(this.config)); + this.middlewareStack.use(middlewareRecursionDetection.getRecursionDetectionPlugin(this.config)); + this.middlewareStack.use(core.getHttpAuthSchemeEndpointRuleSetPlugin(this.config, { + httpAuthSchemeParametersProvider: httpAuthSchemeProvider.defaultSigninHttpAuthSchemeParametersProvider, + identityProviderConfigProvider: async (config) => new core.DefaultIdentityProviderConfig({ + "aws.auth#sigv4": config.credentials, + }), + })); + this.middlewareStack.use(core.getHttpSigningPlugin(this.config)); + } + destroy() { + super.destroy(); + } +} + +class CreateOAuth2TokenCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("Signin", "CreateOAuth2Token", {}) + .n("SigninClient", "CreateOAuth2TokenCommand") + .sc(schemas_0.CreateOAuth2Token$) + .build() { +} + +const commands = { + CreateOAuth2TokenCommand, +}; +class Signin extends SigninClient { +} +smithyClient.createAggregatedClient(commands, Signin); + +const OAuth2ErrorCode = { + AUTHCODE_EXPIRED: "AUTHCODE_EXPIRED", + INSUFFICIENT_PERMISSIONS: "INSUFFICIENT_PERMISSIONS", + INVALID_REQUEST: "INVALID_REQUEST", + SERVER_ERROR: "server_error", + TOKEN_EXPIRED: "TOKEN_EXPIRED", + USER_CREDENTIALS_CHANGED: "USER_CREDENTIALS_CHANGED", +}; + +exports.$Command = smithyClient.Command; +exports.__Client = smithyClient.Client; +exports.SigninServiceException = SigninServiceException.SigninServiceException; +exports.CreateOAuth2TokenCommand = CreateOAuth2TokenCommand; +exports.OAuth2ErrorCode = OAuth2ErrorCode; +exports.Signin = Signin; +exports.SigninClient = SigninClient; +Object.prototype.hasOwnProperty.call(schemas_0, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: schemas_0['__proto__'] + }); + +Object.keys(schemas_0).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = schemas_0[k]; +}); +Object.prototype.hasOwnProperty.call(errors, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: errors['__proto__'] + }); + +Object.keys(errors).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = errors[k]; +}); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/models/SigninServiceException.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/models/SigninServiceException.js new file mode 100644 index 000000000..954bc681e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/models/SigninServiceException.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SigninServiceException = exports.__ServiceException = void 0; +const smithy_client_1 = require("@smithy/smithy-client"); +Object.defineProperty(exports, "__ServiceException", { enumerable: true, get: function () { return smithy_client_1.ServiceException; } }); +class SigninServiceException extends smithy_client_1.ServiceException { + constructor(options) { + super(options); + Object.setPrototypeOf(this, SigninServiceException.prototype); + } +} +exports.SigninServiceException = SigninServiceException; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/models/errors.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/models/errors.js new file mode 100644 index 000000000..cdebf8997 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/models/errors.js @@ -0,0 +1,64 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ValidationException = exports.TooManyRequestsError = exports.InternalServerException = exports.AccessDeniedException = void 0; +const SigninServiceException_1 = require("./SigninServiceException"); +class AccessDeniedException extends SigninServiceException_1.SigninServiceException { + name = "AccessDeniedException"; + $fault = "client"; + error; + constructor(opts) { + super({ + name: "AccessDeniedException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, AccessDeniedException.prototype); + this.error = opts.error; + } +} +exports.AccessDeniedException = AccessDeniedException; +class InternalServerException extends SigninServiceException_1.SigninServiceException { + name = "InternalServerException"; + $fault = "server"; + error; + constructor(opts) { + super({ + name: "InternalServerException", + $fault: "server", + ...opts, + }); + Object.setPrototypeOf(this, InternalServerException.prototype); + this.error = opts.error; + } +} +exports.InternalServerException = InternalServerException; +class TooManyRequestsError extends SigninServiceException_1.SigninServiceException { + name = "TooManyRequestsError"; + $fault = "client"; + error; + constructor(opts) { + super({ + name: "TooManyRequestsError", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, TooManyRequestsError.prototype); + this.error = opts.error; + } +} +exports.TooManyRequestsError = TooManyRequestsError; +class ValidationException extends SigninServiceException_1.SigninServiceException { + name = "ValidationException"; + $fault = "client"; + error; + constructor(opts) { + super({ + name: "ValidationException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ValidationException.prototype); + this.error = opts.error; + } +} +exports.ValidationException = ValidationException; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/runtimeConfig.browser.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/runtimeConfig.browser.js new file mode 100644 index 000000000..10986e2e6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/runtimeConfig.browser.js @@ -0,0 +1,39 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const tslib_1 = require("tslib"); +const package_json_1 = tslib_1.__importDefault(require("../../../package.json")); +const sha256_browser_1 = require("@aws-crypto/sha256-browser"); +const util_user_agent_browser_1 = require("@aws-sdk/util-user-agent-browser"); +const config_resolver_1 = require("@smithy/config-resolver"); +const fetch_http_handler_1 = require("@smithy/fetch-http-handler"); +const invalid_dependency_1 = require("@smithy/invalid-dependency"); +const smithy_client_1 = require("@smithy/smithy-client"); +const util_body_length_browser_1 = require("@smithy/util-body-length-browser"); +const util_defaults_mode_browser_1 = require("@smithy/util-defaults-mode-browser"); +const util_retry_1 = require("@smithy/util-retry"); +const runtimeConfig_shared_1 = require("./runtimeConfig.shared"); +const getRuntimeConfig = (config) => { + const defaultsMode = (0, util_defaults_mode_browser_1.resolveDefaultsModeConfig)(config); + const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode); + const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config); + return { + ...clientSharedValues, + ...config, + runtime: "browser", + defaultsMode, + bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_browser_1.calculateBodyLength, + credentialDefaultProvider: config?.credentialDefaultProvider ?? ((_) => () => Promise.reject(new Error("Credential is missing"))), + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + (0, util_user_agent_browser_1.createDefaultUserAgentProvider)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }), + maxAttempts: config?.maxAttempts ?? util_retry_1.DEFAULT_MAX_ATTEMPTS, + region: config?.region ?? (0, invalid_dependency_1.invalidProvider)("Region is missing"), + requestHandler: fetch_http_handler_1.FetchHttpHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? (async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE), + sha256: config?.sha256 ?? sha256_browser_1.Sha256, + streamCollector: config?.streamCollector ?? fetch_http_handler_1.streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (() => Promise.resolve(config_resolver_1.DEFAULT_USE_DUALSTACK_ENDPOINT)), + useFipsEndpoint: config?.useFipsEndpoint ?? (() => Promise.resolve(config_resolver_1.DEFAULT_USE_FIPS_ENDPOINT)), + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/runtimeConfig.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/runtimeConfig.js new file mode 100644 index 000000000..137f25459 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/runtimeConfig.js @@ -0,0 +1,53 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const tslib_1 = require("tslib"); +const package_json_1 = tslib_1.__importDefault(require("../../../package.json")); +const core_1 = require("@aws-sdk/core"); +const util_user_agent_node_1 = require("@aws-sdk/util-user-agent-node"); +const config_resolver_1 = require("@smithy/config-resolver"); +const hash_node_1 = require("@smithy/hash-node"); +const middleware_retry_1 = require("@smithy/middleware-retry"); +const node_config_provider_1 = require("@smithy/node-config-provider"); +const node_http_handler_1 = require("@smithy/node-http-handler"); +const smithy_client_1 = require("@smithy/smithy-client"); +const util_body_length_node_1 = require("@smithy/util-body-length-node"); +const util_defaults_mode_node_1 = require("@smithy/util-defaults-mode-node"); +const util_retry_1 = require("@smithy/util-retry"); +const runtimeConfig_shared_1 = require("./runtimeConfig.shared"); +const getRuntimeConfig = (config) => { + (0, smithy_client_1.emitWarningIfUnsupportedVersion)(process.version); + const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config); + const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode); + const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config); + (0, core_1.emitWarningIfUnsupportedVersion)(process.version); + const loaderConfig = { + profile: config?.profile, + logger: clientSharedValues.logger, + }; + return { + ...clientSharedValues, + ...config, + runtime: "node", + defaultsMode, + authSchemePreference: config?.authSchemePreference ?? (0, node_config_provider_1.loadConfig)(core_1.NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig), + bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + (0, util_user_agent_node_1.createDefaultUserAgentProvider)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }), + maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config), + region: config?.region ?? + (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, { ...config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }), + requestHandler: node_http_handler_1.NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? + (0, node_config_provider_1.loadConfig)({ + ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS, + default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE, + }, config), + sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, "sha256"), + streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + userAgentAppId: config?.userAgentAppId ?? (0, node_config_provider_1.loadConfig)(util_user_agent_node_1.NODE_APP_ID_CONFIG_OPTIONS, loaderConfig), + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/runtimeConfig.native.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/runtimeConfig.native.js new file mode 100644 index 000000000..34c5f8ece --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/runtimeConfig.native.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const sha256_js_1 = require("@aws-crypto/sha256-js"); +const runtimeConfig_browser_1 = require("./runtimeConfig.browser"); +const getRuntimeConfig = (config) => { + const browserDefaults = (0, runtimeConfig_browser_1.getRuntimeConfig)(config); + return { + ...browserDefaults, + ...config, + runtime: "react-native", + sha256: config?.sha256 ?? sha256_js_1.Sha256, + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/runtimeConfig.shared.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/runtimeConfig.shared.js new file mode 100644 index 000000000..18a368da2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/runtimeConfig.shared.js @@ -0,0 +1,49 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const core_1 = require("@aws-sdk/core"); +const protocols_1 = require("@aws-sdk/core/protocols"); +const core_2 = require("@smithy/core"); +const smithy_client_1 = require("@smithy/smithy-client"); +const url_parser_1 = require("@smithy/url-parser"); +const util_base64_1 = require("@smithy/util-base64"); +const util_utf8_1 = require("@smithy/util-utf8"); +const httpAuthSchemeProvider_1 = require("./auth/httpAuthSchemeProvider"); +const endpointResolver_1 = require("./endpoint/endpointResolver"); +const schemas_0_1 = require("./schemas/schemas_0"); +const getRuntimeConfig = (config) => { + return { + apiVersion: "2023-01-01", + base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64, + base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64, + disableHostPrefix: config?.disableHostPrefix ?? false, + endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver, + extensions: config?.extensions ?? [], + httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? httpAuthSchemeProvider_1.defaultSigninHttpAuthSchemeProvider, + httpAuthSchemes: config?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: (ipc) => ipc.getIdentityProvider("aws.auth#sigv4"), + signer: new core_1.AwsSdkSigV4Signer(), + }, + { + schemeId: "smithy.api#noAuth", + identityProvider: (ipc) => ipc.getIdentityProvider("smithy.api#noAuth") || (async () => ({})), + signer: new core_2.NoAuthSigner(), + }, + ], + logger: config?.logger ?? new smithy_client_1.NoOpLogger(), + protocol: config?.protocol ?? protocols_1.AwsRestJsonProtocol, + protocolSettings: config?.protocolSettings ?? { + defaultNamespace: "com.amazonaws.signin", + errorTypeRegistries: schemas_0_1.errorTypeRegistries, + version: "2023-01-01", + serviceTarget: "Signin", + }, + serviceId: config?.serviceId ?? "Signin", + urlParser: config?.urlParser ?? url_parser_1.parseUrl, + utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8, + utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8, + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/schemas/schemas_0.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/schemas/schemas_0.js new file mode 100644 index 000000000..c9340b2db --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/schemas/schemas_0.js @@ -0,0 +1,125 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CreateOAuth2Token$ = exports.CreateOAuth2TokenResponseBody$ = exports.CreateOAuth2TokenResponse$ = exports.CreateOAuth2TokenRequestBody$ = exports.CreateOAuth2TokenRequest$ = exports.AccessToken$ = exports.errorTypeRegistries = exports.ValidationException$ = exports.TooManyRequestsError$ = exports.InternalServerException$ = exports.AccessDeniedException$ = exports.SigninServiceException$ = void 0; +const _ADE = "AccessDeniedException"; +const _AT = "AccessToken"; +const _COAT = "CreateOAuth2Token"; +const _COATR = "CreateOAuth2TokenRequest"; +const _COATRB = "CreateOAuth2TokenRequestBody"; +const _COATRBr = "CreateOAuth2TokenResponseBody"; +const _COATRr = "CreateOAuth2TokenResponse"; +const _ISE = "InternalServerException"; +const _RT = "RefreshToken"; +const _TMRE = "TooManyRequestsError"; +const _VE = "ValidationException"; +const _aKI = "accessKeyId"; +const _aT = "accessToken"; +const _c = "client"; +const _cI = "clientId"; +const _cV = "codeVerifier"; +const _co = "code"; +const _e = "error"; +const _eI = "expiresIn"; +const _gT = "grantType"; +const _h = "http"; +const _hE = "httpError"; +const _iT = "idToken"; +const _jN = "jsonName"; +const _m = "message"; +const _rT = "refreshToken"; +const _rU = "redirectUri"; +const _s = "smithy.ts.sdk.synthetic.com.amazonaws.signin"; +const _sAK = "secretAccessKey"; +const _sT = "sessionToken"; +const _se = "server"; +const _tI = "tokenInput"; +const _tO = "tokenOutput"; +const _tT = "tokenType"; +const n0 = "com.amazonaws.signin"; +const schema_1 = require("@smithy/core/schema"); +const errors_1 = require("../models/errors"); +const SigninServiceException_1 = require("../models/SigninServiceException"); +const _s_registry = schema_1.TypeRegistry.for(_s); +exports.SigninServiceException$ = [-3, _s, "SigninServiceException", 0, [], []]; +_s_registry.registerError(exports.SigninServiceException$, SigninServiceException_1.SigninServiceException); +const n0_registry = schema_1.TypeRegistry.for(n0); +exports.AccessDeniedException$ = [-3, n0, _ADE, { [_e]: _c }, [_e, _m], [0, 0], 2]; +n0_registry.registerError(exports.AccessDeniedException$, errors_1.AccessDeniedException); +exports.InternalServerException$ = [-3, n0, _ISE, { [_e]: _se, [_hE]: 500 }, [_e, _m], [0, 0], 2]; +n0_registry.registerError(exports.InternalServerException$, errors_1.InternalServerException); +exports.TooManyRequestsError$ = [-3, n0, _TMRE, { [_e]: _c, [_hE]: 429 }, [_e, _m], [0, 0], 2]; +n0_registry.registerError(exports.TooManyRequestsError$, errors_1.TooManyRequestsError); +exports.ValidationException$ = [-3, n0, _VE, { [_e]: _c, [_hE]: 400 }, [_e, _m], [0, 0], 2]; +n0_registry.registerError(exports.ValidationException$, errors_1.ValidationException); +exports.errorTypeRegistries = [_s_registry, n0_registry]; +var RefreshToken = [0, n0, _RT, 8, 0]; +exports.AccessToken$ = [ + 3, + n0, + _AT, + 8, + [_aKI, _sAK, _sT], + [ + [0, { [_jN]: _aKI }], + [0, { [_jN]: _sAK }], + [0, { [_jN]: _sT }], + ], + 3, +]; +exports.CreateOAuth2TokenRequest$ = [ + 3, + n0, + _COATR, + 0, + [_tI], + [[() => exports.CreateOAuth2TokenRequestBody$, 16]], + 1, +]; +exports.CreateOAuth2TokenRequestBody$ = [ + 3, + n0, + _COATRB, + 0, + [_cI, _gT, _co, _rU, _cV, _rT], + [ + [0, { [_jN]: _cI }], + [0, { [_jN]: _gT }], + 0, + [0, { [_jN]: _rU }], + [0, { [_jN]: _cV }], + [() => RefreshToken, { [_jN]: _rT }], + ], + 2, +]; +exports.CreateOAuth2TokenResponse$ = [ + 3, + n0, + _COATRr, + 0, + [_tO], + [[() => exports.CreateOAuth2TokenResponseBody$, 16]], + 1, +]; +exports.CreateOAuth2TokenResponseBody$ = [ + 3, + n0, + _COATRBr, + 0, + [_aT, _tT, _eI, _rT, _iT], + [ + [() => exports.AccessToken$, { [_jN]: _aT }], + [0, { [_jN]: _tT }], + [1, { [_jN]: _eI }], + [() => RefreshToken, { [_jN]: _rT }], + [0, { [_jN]: _iT }], + ], + 4, +]; +exports.CreateOAuth2Token$ = [ + 9, + n0, + _COAT, + { [_h]: ["POST", "/v1/token", 200] }, + () => exports.CreateOAuth2TokenRequest$, + () => exports.CreateOAuth2TokenResponse$, +]; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/auth/httpAuthSchemeProvider.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/auth/httpAuthSchemeProvider.js new file mode 100644 index 000000000..7a9f28a47 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/auth/httpAuthSchemeProvider.js @@ -0,0 +1,56 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveHttpAuthSchemeConfig = exports.defaultSSOOIDCHttpAuthSchemeProvider = exports.defaultSSOOIDCHttpAuthSchemeParametersProvider = void 0; +const core_1 = require("@aws-sdk/core"); +const util_middleware_1 = require("@smithy/util-middleware"); +const defaultSSOOIDCHttpAuthSchemeParametersProvider = async (config, context, input) => { + return { + operation: (0, util_middleware_1.getSmithyContext)(context).operation, + region: (await (0, util_middleware_1.normalizeProvider)(config.region)()) || + (() => { + throw new Error("expected `region` to be configured for `aws.auth#sigv4`"); + })(), + }; +}; +exports.defaultSSOOIDCHttpAuthSchemeParametersProvider = defaultSSOOIDCHttpAuthSchemeParametersProvider; +function createAwsAuthSigv4HttpAuthOption(authParameters) { + return { + schemeId: "aws.auth#sigv4", + signingProperties: { + name: "sso-oauth", + region: authParameters.region, + }, + propertiesExtractor: (config, context) => ({ + signingProperties: { + config, + context, + }, + }), + }; +} +function createSmithyApiNoAuthHttpAuthOption(authParameters) { + return { + schemeId: "smithy.api#noAuth", + }; +} +const defaultSSOOIDCHttpAuthSchemeProvider = (authParameters) => { + const options = []; + switch (authParameters.operation) { + case "CreateToken": { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + default: { + options.push(createAwsAuthSigv4HttpAuthOption(authParameters)); + } + } + return options; +}; +exports.defaultSSOOIDCHttpAuthSchemeProvider = defaultSSOOIDCHttpAuthSchemeProvider; +const resolveHttpAuthSchemeConfig = (config) => { + const config_0 = (0, core_1.resolveAwsSdkSigV4Config)(config); + return Object.assign(config_0, { + authSchemePreference: (0, util_middleware_1.normalizeProvider)(config.authSchemePreference ?? []), + }); +}; +exports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/endpoint/endpointResolver.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/endpoint/endpointResolver.js new file mode 100644 index 000000000..7258a356f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/endpoint/endpointResolver.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.defaultEndpointResolver = void 0; +const util_endpoints_1 = require("@aws-sdk/util-endpoints"); +const util_endpoints_2 = require("@smithy/util-endpoints"); +const ruleset_1 = require("./ruleset"); +const cache = new util_endpoints_2.EndpointCache({ + size: 50, + params: ["Endpoint", "Region", "UseDualStack", "UseFIPS"], +}); +const defaultEndpointResolver = (endpointParams, context = {}) => { + return cache.get(endpointParams, () => (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, { + endpointParams: endpointParams, + logger: context.logger, + })); +}; +exports.defaultEndpointResolver = defaultEndpointResolver; +util_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/endpoint/ruleset.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/endpoint/ruleset.js new file mode 100644 index 000000000..bf97a89ce --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/endpoint/ruleset.js @@ -0,0 +1,106 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ruleSet = void 0; +const u = "required", v = "fn", w = "argv", x = "ref"; +const a = true, b = "isSet", c = "booleanEquals", d = "error", e = "endpoint", f = "tree", g = "PartitionResult", h = "getAttr", i = { [u]: false, type: "string" }, j = { [u]: true, default: false, type: "boolean" }, k = { [x]: "Endpoint" }, l = { [v]: c, [w]: [{ [x]: "UseFIPS" }, true] }, m = { [v]: c, [w]: [{ [x]: "UseDualStack" }, true] }, n = {}, o = { [v]: h, [w]: [{ [x]: g }, "supportsFIPS"] }, p = { [x]: g }, q = { [v]: c, [w]: [true, { [v]: h, [w]: [p, "supportsDualStack"] }] }, r = [l], s = [m], t = [{ [x]: "Region" }]; +const _data = { + version: "1.0", + parameters: { Region: i, UseDualStack: j, UseFIPS: j, Endpoint: i }, + rules: [ + { + conditions: [{ [v]: b, [w]: [k] }], + rules: [ + { conditions: r, error: "Invalid Configuration: FIPS and custom endpoint are not supported", type: d }, + { conditions: s, error: "Invalid Configuration: Dualstack and custom endpoint are not supported", type: d }, + { endpoint: { url: k, properties: n, headers: n }, type: e }, + ], + type: f, + }, + { + conditions: [{ [v]: b, [w]: t }], + rules: [ + { + conditions: [{ [v]: "aws.partition", [w]: t, assign: g }], + rules: [ + { + conditions: [l, m], + rules: [ + { + conditions: [{ [v]: c, [w]: [a, o] }, q], + rules: [ + { + endpoint: { + url: "https://oidc-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { error: "FIPS and DualStack are enabled, but this partition does not support one or both", type: d }, + ], + type: f, + }, + { + conditions: r, + rules: [ + { + conditions: [{ [v]: c, [w]: [o, a] }], + rules: [ + { + conditions: [{ [v]: "stringEquals", [w]: [{ [v]: h, [w]: [p, "name"] }, "aws-us-gov"] }], + endpoint: { url: "https://oidc.{Region}.amazonaws.com", properties: n, headers: n }, + type: e, + }, + { + endpoint: { + url: "https://oidc-fips.{Region}.{PartitionResult#dnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { error: "FIPS is enabled but this partition does not support FIPS", type: d }, + ], + type: f, + }, + { + conditions: s, + rules: [ + { + conditions: [q], + rules: [ + { + endpoint: { + url: "https://oidc.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { error: "DualStack is enabled but this partition does not support DualStack", type: d }, + ], + type: f, + }, + { + endpoint: { url: "https://oidc.{Region}.{PartitionResult#dnsSuffix}", properties: n, headers: n }, + type: e, + }, + ], + type: f, + }, + ], + type: f, + }, + { error: "Invalid Configuration: Missing Region", type: d }, + ], +}; +exports.ruleSet = _data; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/index.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/index.js new file mode 100644 index 000000000..3f841d9b8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/index.js @@ -0,0 +1,172 @@ +'use strict'; + +var middlewareHostHeader = require('@aws-sdk/middleware-host-header'); +var middlewareLogger = require('@aws-sdk/middleware-logger'); +var middlewareRecursionDetection = require('@aws-sdk/middleware-recursion-detection'); +var middlewareUserAgent = require('@aws-sdk/middleware-user-agent'); +var configResolver = require('@smithy/config-resolver'); +var core = require('@smithy/core'); +var schema = require('@smithy/core/schema'); +var middlewareContentLength = require('@smithy/middleware-content-length'); +var middlewareEndpoint = require('@smithy/middleware-endpoint'); +var middlewareRetry = require('@smithy/middleware-retry'); +var smithyClient = require('@smithy/smithy-client'); +var httpAuthSchemeProvider = require('./auth/httpAuthSchemeProvider'); +var runtimeConfig = require('./runtimeConfig'); +var regionConfigResolver = require('@aws-sdk/region-config-resolver'); +var protocolHttp = require('@smithy/protocol-http'); +var schemas_0 = require('./schemas/schemas_0'); +var errors = require('./models/errors'); +var SSOOIDCServiceException = require('./models/SSOOIDCServiceException'); + +const resolveClientEndpointParameters = (options) => { + return Object.assign(options, { + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + useFipsEndpoint: options.useFipsEndpoint ?? false, + defaultSigningName: "sso-oauth", + }); +}; +const commonParams = { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }, +}; + +const getHttpAuthExtensionConfiguration = (runtimeConfig) => { + const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; + let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; + let _credentials = runtimeConfig.credentials; + return { + setHttpAuthScheme(httpAuthScheme) { + const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId); + if (index === -1) { + _httpAuthSchemes.push(httpAuthScheme); + } + else { + _httpAuthSchemes.splice(index, 1, httpAuthScheme); + } + }, + httpAuthSchemes() { + return _httpAuthSchemes; + }, + setHttpAuthSchemeProvider(httpAuthSchemeProvider) { + _httpAuthSchemeProvider = httpAuthSchemeProvider; + }, + httpAuthSchemeProvider() { + return _httpAuthSchemeProvider; + }, + setCredentials(credentials) { + _credentials = credentials; + }, + credentials() { + return _credentials; + }, + }; +}; +const resolveHttpAuthRuntimeConfig = (config) => { + return { + httpAuthSchemes: config.httpAuthSchemes(), + httpAuthSchemeProvider: config.httpAuthSchemeProvider(), + credentials: config.credentials(), + }; +}; + +const resolveRuntimeExtensions = (runtimeConfig, extensions) => { + const extensionConfiguration = Object.assign(regionConfigResolver.getAwsRegionExtensionConfiguration(runtimeConfig), smithyClient.getDefaultExtensionConfiguration(runtimeConfig), protocolHttp.getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig)); + extensions.forEach((extension) => extension.configure(extensionConfiguration)); + return Object.assign(runtimeConfig, regionConfigResolver.resolveAwsRegionExtensionConfiguration(extensionConfiguration), smithyClient.resolveDefaultRuntimeConfig(extensionConfiguration), protocolHttp.resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration)); +}; + +class SSOOIDCClient extends smithyClient.Client { + config; + constructor(...[configuration]) { + const _config_0 = runtimeConfig.getRuntimeConfig(configuration || {}); + super(_config_0); + this.initConfig = _config_0; + const _config_1 = resolveClientEndpointParameters(_config_0); + const _config_2 = middlewareUserAgent.resolveUserAgentConfig(_config_1); + const _config_3 = middlewareRetry.resolveRetryConfig(_config_2); + const _config_4 = configResolver.resolveRegionConfig(_config_3); + const _config_5 = middlewareHostHeader.resolveHostHeaderConfig(_config_4); + const _config_6 = middlewareEndpoint.resolveEndpointConfig(_config_5); + const _config_7 = httpAuthSchemeProvider.resolveHttpAuthSchemeConfig(_config_6); + const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []); + this.config = _config_8; + this.middlewareStack.use(schema.getSchemaSerdePlugin(this.config)); + this.middlewareStack.use(middlewareUserAgent.getUserAgentPlugin(this.config)); + this.middlewareStack.use(middlewareRetry.getRetryPlugin(this.config)); + this.middlewareStack.use(middlewareContentLength.getContentLengthPlugin(this.config)); + this.middlewareStack.use(middlewareHostHeader.getHostHeaderPlugin(this.config)); + this.middlewareStack.use(middlewareLogger.getLoggerPlugin(this.config)); + this.middlewareStack.use(middlewareRecursionDetection.getRecursionDetectionPlugin(this.config)); + this.middlewareStack.use(core.getHttpAuthSchemeEndpointRuleSetPlugin(this.config, { + httpAuthSchemeParametersProvider: httpAuthSchemeProvider.defaultSSOOIDCHttpAuthSchemeParametersProvider, + identityProviderConfigProvider: async (config) => new core.DefaultIdentityProviderConfig({ + "aws.auth#sigv4": config.credentials, + }), + })); + this.middlewareStack.use(core.getHttpSigningPlugin(this.config)); + } + destroy() { + super.destroy(); + } +} + +class CreateTokenCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSSSOOIDCService", "CreateToken", {}) + .n("SSOOIDCClient", "CreateTokenCommand") + .sc(schemas_0.CreateToken$) + .build() { +} + +const commands = { + CreateTokenCommand, +}; +class SSOOIDC extends SSOOIDCClient { +} +smithyClient.createAggregatedClient(commands, SSOOIDC); + +const AccessDeniedExceptionReason = { + KMS_ACCESS_DENIED: "KMS_AccessDeniedException", +}; +const InvalidRequestExceptionReason = { + KMS_DISABLED_KEY: "KMS_DisabledException", + KMS_INVALID_KEY_USAGE: "KMS_InvalidKeyUsageException", + KMS_INVALID_STATE: "KMS_InvalidStateException", + KMS_KEY_NOT_FOUND: "KMS_NotFoundException", +}; + +exports.$Command = smithyClient.Command; +exports.__Client = smithyClient.Client; +exports.SSOOIDCServiceException = SSOOIDCServiceException.SSOOIDCServiceException; +exports.AccessDeniedExceptionReason = AccessDeniedExceptionReason; +exports.CreateTokenCommand = CreateTokenCommand; +exports.InvalidRequestExceptionReason = InvalidRequestExceptionReason; +exports.SSOOIDC = SSOOIDC; +exports.SSOOIDCClient = SSOOIDCClient; +Object.prototype.hasOwnProperty.call(schemas_0, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: schemas_0['__proto__'] + }); + +Object.keys(schemas_0).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = schemas_0[k]; +}); +Object.prototype.hasOwnProperty.call(errors, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: errors['__proto__'] + }); + +Object.keys(errors).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = errors[k]; +}); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/models/SSOOIDCServiceException.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/models/SSOOIDCServiceException.js new file mode 100644 index 000000000..878e0986b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/models/SSOOIDCServiceException.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SSOOIDCServiceException = exports.__ServiceException = void 0; +const smithy_client_1 = require("@smithy/smithy-client"); +Object.defineProperty(exports, "__ServiceException", { enumerable: true, get: function () { return smithy_client_1.ServiceException; } }); +class SSOOIDCServiceException extends smithy_client_1.ServiceException { + constructor(options) { + super(options); + Object.setPrototypeOf(this, SSOOIDCServiceException.prototype); + } +} +exports.SSOOIDCServiceException = SSOOIDCServiceException; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/models/errors.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/models/errors.js new file mode 100644 index 000000000..c937588c5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/models/errors.js @@ -0,0 +1,195 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.UnsupportedGrantTypeException = exports.UnauthorizedClientException = exports.SlowDownException = exports.InvalidScopeException = exports.InvalidRequestException = exports.InvalidGrantException = exports.InvalidClientException = exports.InternalServerException = exports.ExpiredTokenException = exports.AuthorizationPendingException = exports.AccessDeniedException = void 0; +const SSOOIDCServiceException_1 = require("./SSOOIDCServiceException"); +class AccessDeniedException extends SSOOIDCServiceException_1.SSOOIDCServiceException { + name = "AccessDeniedException"; + $fault = "client"; + error; + reason; + error_description; + constructor(opts) { + super({ + name: "AccessDeniedException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, AccessDeniedException.prototype); + this.error = opts.error; + this.reason = opts.reason; + this.error_description = opts.error_description; + } +} +exports.AccessDeniedException = AccessDeniedException; +class AuthorizationPendingException extends SSOOIDCServiceException_1.SSOOIDCServiceException { + name = "AuthorizationPendingException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "AuthorizationPendingException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, AuthorizationPendingException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +exports.AuthorizationPendingException = AuthorizationPendingException; +class ExpiredTokenException extends SSOOIDCServiceException_1.SSOOIDCServiceException { + name = "ExpiredTokenException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "ExpiredTokenException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ExpiredTokenException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +exports.ExpiredTokenException = ExpiredTokenException; +class InternalServerException extends SSOOIDCServiceException_1.SSOOIDCServiceException { + name = "InternalServerException"; + $fault = "server"; + error; + error_description; + constructor(opts) { + super({ + name: "InternalServerException", + $fault: "server", + ...opts, + }); + Object.setPrototypeOf(this, InternalServerException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +exports.InternalServerException = InternalServerException; +class InvalidClientException extends SSOOIDCServiceException_1.SSOOIDCServiceException { + name = "InvalidClientException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "InvalidClientException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidClientException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +exports.InvalidClientException = InvalidClientException; +class InvalidGrantException extends SSOOIDCServiceException_1.SSOOIDCServiceException { + name = "InvalidGrantException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "InvalidGrantException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidGrantException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +exports.InvalidGrantException = InvalidGrantException; +class InvalidRequestException extends SSOOIDCServiceException_1.SSOOIDCServiceException { + name = "InvalidRequestException"; + $fault = "client"; + error; + reason; + error_description; + constructor(opts) { + super({ + name: "InvalidRequestException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidRequestException.prototype); + this.error = opts.error; + this.reason = opts.reason; + this.error_description = opts.error_description; + } +} +exports.InvalidRequestException = InvalidRequestException; +class InvalidScopeException extends SSOOIDCServiceException_1.SSOOIDCServiceException { + name = "InvalidScopeException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "InvalidScopeException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidScopeException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +exports.InvalidScopeException = InvalidScopeException; +class SlowDownException extends SSOOIDCServiceException_1.SSOOIDCServiceException { + name = "SlowDownException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "SlowDownException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, SlowDownException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +exports.SlowDownException = SlowDownException; +class UnauthorizedClientException extends SSOOIDCServiceException_1.SSOOIDCServiceException { + name = "UnauthorizedClientException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "UnauthorizedClientException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, UnauthorizedClientException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +exports.UnauthorizedClientException = UnauthorizedClientException; +class UnsupportedGrantTypeException extends SSOOIDCServiceException_1.SSOOIDCServiceException { + name = "UnsupportedGrantTypeException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "UnsupportedGrantTypeException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, UnsupportedGrantTypeException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +exports.UnsupportedGrantTypeException = UnsupportedGrantTypeException; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/runtimeConfig.browser.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/runtimeConfig.browser.js new file mode 100644 index 000000000..9f7380e3d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/runtimeConfig.browser.js @@ -0,0 +1,38 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const tslib_1 = require("tslib"); +const package_json_1 = tslib_1.__importDefault(require("../../../package.json")); +const sha256_browser_1 = require("@aws-crypto/sha256-browser"); +const util_user_agent_browser_1 = require("@aws-sdk/util-user-agent-browser"); +const config_resolver_1 = require("@smithy/config-resolver"); +const fetch_http_handler_1 = require("@smithy/fetch-http-handler"); +const invalid_dependency_1 = require("@smithy/invalid-dependency"); +const smithy_client_1 = require("@smithy/smithy-client"); +const util_body_length_browser_1 = require("@smithy/util-body-length-browser"); +const util_defaults_mode_browser_1 = require("@smithy/util-defaults-mode-browser"); +const util_retry_1 = require("@smithy/util-retry"); +const runtimeConfig_shared_1 = require("./runtimeConfig.shared"); +const getRuntimeConfig = (config) => { + const defaultsMode = (0, util_defaults_mode_browser_1.resolveDefaultsModeConfig)(config); + const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode); + const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config); + return { + ...clientSharedValues, + ...config, + runtime: "browser", + defaultsMode, + bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_browser_1.calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + (0, util_user_agent_browser_1.createDefaultUserAgentProvider)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }), + maxAttempts: config?.maxAttempts ?? util_retry_1.DEFAULT_MAX_ATTEMPTS, + region: config?.region ?? (0, invalid_dependency_1.invalidProvider)("Region is missing"), + requestHandler: fetch_http_handler_1.FetchHttpHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? (async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE), + sha256: config?.sha256 ?? sha256_browser_1.Sha256, + streamCollector: config?.streamCollector ?? fetch_http_handler_1.streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (() => Promise.resolve(config_resolver_1.DEFAULT_USE_DUALSTACK_ENDPOINT)), + useFipsEndpoint: config?.useFipsEndpoint ?? (() => Promise.resolve(config_resolver_1.DEFAULT_USE_FIPS_ENDPOINT)), + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/runtimeConfig.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/runtimeConfig.js new file mode 100644 index 000000000..137f25459 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/runtimeConfig.js @@ -0,0 +1,53 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const tslib_1 = require("tslib"); +const package_json_1 = tslib_1.__importDefault(require("../../../package.json")); +const core_1 = require("@aws-sdk/core"); +const util_user_agent_node_1 = require("@aws-sdk/util-user-agent-node"); +const config_resolver_1 = require("@smithy/config-resolver"); +const hash_node_1 = require("@smithy/hash-node"); +const middleware_retry_1 = require("@smithy/middleware-retry"); +const node_config_provider_1 = require("@smithy/node-config-provider"); +const node_http_handler_1 = require("@smithy/node-http-handler"); +const smithy_client_1 = require("@smithy/smithy-client"); +const util_body_length_node_1 = require("@smithy/util-body-length-node"); +const util_defaults_mode_node_1 = require("@smithy/util-defaults-mode-node"); +const util_retry_1 = require("@smithy/util-retry"); +const runtimeConfig_shared_1 = require("./runtimeConfig.shared"); +const getRuntimeConfig = (config) => { + (0, smithy_client_1.emitWarningIfUnsupportedVersion)(process.version); + const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config); + const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode); + const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config); + (0, core_1.emitWarningIfUnsupportedVersion)(process.version); + const loaderConfig = { + profile: config?.profile, + logger: clientSharedValues.logger, + }; + return { + ...clientSharedValues, + ...config, + runtime: "node", + defaultsMode, + authSchemePreference: config?.authSchemePreference ?? (0, node_config_provider_1.loadConfig)(core_1.NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig), + bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + (0, util_user_agent_node_1.createDefaultUserAgentProvider)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }), + maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config), + region: config?.region ?? + (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, { ...config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }), + requestHandler: node_http_handler_1.NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? + (0, node_config_provider_1.loadConfig)({ + ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS, + default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE, + }, config), + sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, "sha256"), + streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + userAgentAppId: config?.userAgentAppId ?? (0, node_config_provider_1.loadConfig)(util_user_agent_node_1.NODE_APP_ID_CONFIG_OPTIONS, loaderConfig), + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/runtimeConfig.native.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/runtimeConfig.native.js new file mode 100644 index 000000000..34c5f8ece --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/runtimeConfig.native.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const sha256_js_1 = require("@aws-crypto/sha256-js"); +const runtimeConfig_browser_1 = require("./runtimeConfig.browser"); +const getRuntimeConfig = (config) => { + const browserDefaults = (0, runtimeConfig_browser_1.getRuntimeConfig)(config); + return { + ...browserDefaults, + ...config, + runtime: "react-native", + sha256: config?.sha256 ?? sha256_js_1.Sha256, + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/runtimeConfig.shared.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/runtimeConfig.shared.js new file mode 100644 index 000000000..ac6fc9c0f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/runtimeConfig.shared.js @@ -0,0 +1,49 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const core_1 = require("@aws-sdk/core"); +const protocols_1 = require("@aws-sdk/core/protocols"); +const core_2 = require("@smithy/core"); +const smithy_client_1 = require("@smithy/smithy-client"); +const url_parser_1 = require("@smithy/url-parser"); +const util_base64_1 = require("@smithy/util-base64"); +const util_utf8_1 = require("@smithy/util-utf8"); +const httpAuthSchemeProvider_1 = require("./auth/httpAuthSchemeProvider"); +const endpointResolver_1 = require("./endpoint/endpointResolver"); +const schemas_0_1 = require("./schemas/schemas_0"); +const getRuntimeConfig = (config) => { + return { + apiVersion: "2019-06-10", + base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64, + base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64, + disableHostPrefix: config?.disableHostPrefix ?? false, + endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver, + extensions: config?.extensions ?? [], + httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? httpAuthSchemeProvider_1.defaultSSOOIDCHttpAuthSchemeProvider, + httpAuthSchemes: config?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: (ipc) => ipc.getIdentityProvider("aws.auth#sigv4"), + signer: new core_1.AwsSdkSigV4Signer(), + }, + { + schemeId: "smithy.api#noAuth", + identityProvider: (ipc) => ipc.getIdentityProvider("smithy.api#noAuth") || (async () => ({})), + signer: new core_2.NoAuthSigner(), + }, + ], + logger: config?.logger ?? new smithy_client_1.NoOpLogger(), + protocol: config?.protocol ?? protocols_1.AwsRestJsonProtocol, + protocolSettings: config?.protocolSettings ?? { + defaultNamespace: "com.amazonaws.ssooidc", + errorTypeRegistries: schemas_0_1.errorTypeRegistries, + version: "2019-06-10", + serviceTarget: "AWSSSOOIDCService", + }, + serviceId: config?.serviceId ?? "SSO OIDC", + urlParser: config?.urlParser ?? url_parser_1.parseUrl, + utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8, + utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8, + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/schemas/schemas_0.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/schemas/schemas_0.js new file mode 100644 index 000000000..685cafb58 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/schemas/schemas_0.js @@ -0,0 +1,140 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CreateToken$ = exports.CreateTokenResponse$ = exports.CreateTokenRequest$ = exports.errorTypeRegistries = exports.UnsupportedGrantTypeException$ = exports.UnauthorizedClientException$ = exports.SlowDownException$ = exports.InvalidScopeException$ = exports.InvalidRequestException$ = exports.InvalidGrantException$ = exports.InvalidClientException$ = exports.InternalServerException$ = exports.ExpiredTokenException$ = exports.AuthorizationPendingException$ = exports.AccessDeniedException$ = exports.SSOOIDCServiceException$ = void 0; +const _ADE = "AccessDeniedException"; +const _APE = "AuthorizationPendingException"; +const _AT = "AccessToken"; +const _CS = "ClientSecret"; +const _CT = "CreateToken"; +const _CTR = "CreateTokenRequest"; +const _CTRr = "CreateTokenResponse"; +const _CV = "CodeVerifier"; +const _ETE = "ExpiredTokenException"; +const _ICE = "InvalidClientException"; +const _IGE = "InvalidGrantException"; +const _IRE = "InvalidRequestException"; +const _ISE = "InternalServerException"; +const _ISEn = "InvalidScopeException"; +const _IT = "IdToken"; +const _RT = "RefreshToken"; +const _SDE = "SlowDownException"; +const _UCE = "UnauthorizedClientException"; +const _UGTE = "UnsupportedGrantTypeException"; +const _aT = "accessToken"; +const _c = "client"; +const _cI = "clientId"; +const _cS = "clientSecret"; +const _cV = "codeVerifier"; +const _co = "code"; +const _dC = "deviceCode"; +const _e = "error"; +const _eI = "expiresIn"; +const _ed = "error_description"; +const _gT = "grantType"; +const _h = "http"; +const _hE = "httpError"; +const _iT = "idToken"; +const _r = "reason"; +const _rT = "refreshToken"; +const _rU = "redirectUri"; +const _s = "smithy.ts.sdk.synthetic.com.amazonaws.ssooidc"; +const _sc = "scope"; +const _se = "server"; +const _tT = "tokenType"; +const n0 = "com.amazonaws.ssooidc"; +const schema_1 = require("@smithy/core/schema"); +const errors_1 = require("../models/errors"); +const SSOOIDCServiceException_1 = require("../models/SSOOIDCServiceException"); +const _s_registry = schema_1.TypeRegistry.for(_s); +exports.SSOOIDCServiceException$ = [-3, _s, "SSOOIDCServiceException", 0, [], []]; +_s_registry.registerError(exports.SSOOIDCServiceException$, SSOOIDCServiceException_1.SSOOIDCServiceException); +const n0_registry = schema_1.TypeRegistry.for(n0); +exports.AccessDeniedException$ = [ + -3, + n0, + _ADE, + { [_e]: _c, [_hE]: 400 }, + [_e, _r, _ed], + [0, 0, 0], +]; +n0_registry.registerError(exports.AccessDeniedException$, errors_1.AccessDeniedException); +exports.AuthorizationPendingException$ = [ + -3, + n0, + _APE, + { [_e]: _c, [_hE]: 400 }, + [_e, _ed], + [0, 0], +]; +n0_registry.registerError(exports.AuthorizationPendingException$, errors_1.AuthorizationPendingException); +exports.ExpiredTokenException$ = [-3, n0, _ETE, { [_e]: _c, [_hE]: 400 }, [_e, _ed], [0, 0]]; +n0_registry.registerError(exports.ExpiredTokenException$, errors_1.ExpiredTokenException); +exports.InternalServerException$ = [-3, n0, _ISE, { [_e]: _se, [_hE]: 500 }, [_e, _ed], [0, 0]]; +n0_registry.registerError(exports.InternalServerException$, errors_1.InternalServerException); +exports.InvalidClientException$ = [-3, n0, _ICE, { [_e]: _c, [_hE]: 401 }, [_e, _ed], [0, 0]]; +n0_registry.registerError(exports.InvalidClientException$, errors_1.InvalidClientException); +exports.InvalidGrantException$ = [-3, n0, _IGE, { [_e]: _c, [_hE]: 400 }, [_e, _ed], [0, 0]]; +n0_registry.registerError(exports.InvalidGrantException$, errors_1.InvalidGrantException); +exports.InvalidRequestException$ = [ + -3, + n0, + _IRE, + { [_e]: _c, [_hE]: 400 }, + [_e, _r, _ed], + [0, 0, 0], +]; +n0_registry.registerError(exports.InvalidRequestException$, errors_1.InvalidRequestException); +exports.InvalidScopeException$ = [-3, n0, _ISEn, { [_e]: _c, [_hE]: 400 }, [_e, _ed], [0, 0]]; +n0_registry.registerError(exports.InvalidScopeException$, errors_1.InvalidScopeException); +exports.SlowDownException$ = [-3, n0, _SDE, { [_e]: _c, [_hE]: 400 }, [_e, _ed], [0, 0]]; +n0_registry.registerError(exports.SlowDownException$, errors_1.SlowDownException); +exports.UnauthorizedClientException$ = [ + -3, + n0, + _UCE, + { [_e]: _c, [_hE]: 400 }, + [_e, _ed], + [0, 0], +]; +n0_registry.registerError(exports.UnauthorizedClientException$, errors_1.UnauthorizedClientException); +exports.UnsupportedGrantTypeException$ = [ + -3, + n0, + _UGTE, + { [_e]: _c, [_hE]: 400 }, + [_e, _ed], + [0, 0], +]; +n0_registry.registerError(exports.UnsupportedGrantTypeException$, errors_1.UnsupportedGrantTypeException); +exports.errorTypeRegistries = [_s_registry, n0_registry]; +var AccessToken = [0, n0, _AT, 8, 0]; +var ClientSecret = [0, n0, _CS, 8, 0]; +var CodeVerifier = [0, n0, _CV, 8, 0]; +var IdToken = [0, n0, _IT, 8, 0]; +var RefreshToken = [0, n0, _RT, 8, 0]; +exports.CreateTokenRequest$ = [ + 3, + n0, + _CTR, + 0, + [_cI, _cS, _gT, _dC, _co, _rT, _sc, _rU, _cV], + [0, [() => ClientSecret, 0], 0, 0, 0, [() => RefreshToken, 0], 64 | 0, 0, [() => CodeVerifier, 0]], + 3, +]; +exports.CreateTokenResponse$ = [ + 3, + n0, + _CTRr, + 0, + [_aT, _tT, _eI, _rT, _iT], + [[() => AccessToken, 0], 0, 1, [() => RefreshToken, 0], [() => IdToken, 0]], +]; +var Scopes = 64 | 0; +exports.CreateToken$ = [ + 9, + n0, + _CT, + { [_h]: ["POST", "/token", 200] }, + () => exports.CreateTokenRequest$, + () => exports.CreateTokenResponse$, +]; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/auth/httpAuthSchemeProvider.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/auth/httpAuthSchemeProvider.js new file mode 100644 index 000000000..69fbd8742 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/auth/httpAuthSchemeProvider.js @@ -0,0 +1,56 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveHttpAuthSchemeConfig = exports.defaultSSOHttpAuthSchemeProvider = exports.defaultSSOHttpAuthSchemeParametersProvider = void 0; +const core_1 = require("@aws-sdk/core"); +const util_middleware_1 = require("@smithy/util-middleware"); +const defaultSSOHttpAuthSchemeParametersProvider = async (config, context, input) => { + return { + operation: (0, util_middleware_1.getSmithyContext)(context).operation, + region: (await (0, util_middleware_1.normalizeProvider)(config.region)()) || + (() => { + throw new Error("expected `region` to be configured for `aws.auth#sigv4`"); + })(), + }; +}; +exports.defaultSSOHttpAuthSchemeParametersProvider = defaultSSOHttpAuthSchemeParametersProvider; +function createAwsAuthSigv4HttpAuthOption(authParameters) { + return { + schemeId: "aws.auth#sigv4", + signingProperties: { + name: "awsssoportal", + region: authParameters.region, + }, + propertiesExtractor: (config, context) => ({ + signingProperties: { + config, + context, + }, + }), + }; +} +function createSmithyApiNoAuthHttpAuthOption(authParameters) { + return { + schemeId: "smithy.api#noAuth", + }; +} +const defaultSSOHttpAuthSchemeProvider = (authParameters) => { + const options = []; + switch (authParameters.operation) { + case "GetRoleCredentials": { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + default: { + options.push(createAwsAuthSigv4HttpAuthOption(authParameters)); + } + } + return options; +}; +exports.defaultSSOHttpAuthSchemeProvider = defaultSSOHttpAuthSchemeProvider; +const resolveHttpAuthSchemeConfig = (config) => { + const config_0 = (0, core_1.resolveAwsSdkSigV4Config)(config); + return Object.assign(config_0, { + authSchemePreference: (0, util_middleware_1.normalizeProvider)(config.authSchemePreference ?? []), + }); +}; +exports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/endpoint/endpointResolver.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/endpoint/endpointResolver.js new file mode 100644 index 000000000..7258a356f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/endpoint/endpointResolver.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.defaultEndpointResolver = void 0; +const util_endpoints_1 = require("@aws-sdk/util-endpoints"); +const util_endpoints_2 = require("@smithy/util-endpoints"); +const ruleset_1 = require("./ruleset"); +const cache = new util_endpoints_2.EndpointCache({ + size: 50, + params: ["Endpoint", "Region", "UseDualStack", "UseFIPS"], +}); +const defaultEndpointResolver = (endpointParams, context = {}) => { + return cache.get(endpointParams, () => (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, { + endpointParams: endpointParams, + logger: context.logger, + })); +}; +exports.defaultEndpointResolver = defaultEndpointResolver; +util_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/endpoint/ruleset.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/endpoint/ruleset.js new file mode 100644 index 000000000..b46fe783e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/endpoint/ruleset.js @@ -0,0 +1,106 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ruleSet = void 0; +const u = "required", v = "fn", w = "argv", x = "ref"; +const a = true, b = "isSet", c = "booleanEquals", d = "error", e = "endpoint", f = "tree", g = "PartitionResult", h = "getAttr", i = { [u]: false, type: "string" }, j = { [u]: true, default: false, type: "boolean" }, k = { [x]: "Endpoint" }, l = { [v]: c, [w]: [{ [x]: "UseFIPS" }, true] }, m = { [v]: c, [w]: [{ [x]: "UseDualStack" }, true] }, n = {}, o = { [v]: h, [w]: [{ [x]: g }, "supportsFIPS"] }, p = { [x]: g }, q = { [v]: c, [w]: [true, { [v]: h, [w]: [p, "supportsDualStack"] }] }, r = [l], s = [m], t = [{ [x]: "Region" }]; +const _data = { + version: "1.0", + parameters: { Region: i, UseDualStack: j, UseFIPS: j, Endpoint: i }, + rules: [ + { + conditions: [{ [v]: b, [w]: [k] }], + rules: [ + { conditions: r, error: "Invalid Configuration: FIPS and custom endpoint are not supported", type: d }, + { conditions: s, error: "Invalid Configuration: Dualstack and custom endpoint are not supported", type: d }, + { endpoint: { url: k, properties: n, headers: n }, type: e }, + ], + type: f, + }, + { + conditions: [{ [v]: b, [w]: t }], + rules: [ + { + conditions: [{ [v]: "aws.partition", [w]: t, assign: g }], + rules: [ + { + conditions: [l, m], + rules: [ + { + conditions: [{ [v]: c, [w]: [a, o] }, q], + rules: [ + { + endpoint: { + url: "https://portal.sso-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { error: "FIPS and DualStack are enabled, but this partition does not support one or both", type: d }, + ], + type: f, + }, + { + conditions: r, + rules: [ + { + conditions: [{ [v]: c, [w]: [o, a] }], + rules: [ + { + conditions: [{ [v]: "stringEquals", [w]: [{ [v]: h, [w]: [p, "name"] }, "aws-us-gov"] }], + endpoint: { url: "https://portal.sso.{Region}.amazonaws.com", properties: n, headers: n }, + type: e, + }, + { + endpoint: { + url: "https://portal.sso-fips.{Region}.{PartitionResult#dnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { error: "FIPS is enabled but this partition does not support FIPS", type: d }, + ], + type: f, + }, + { + conditions: s, + rules: [ + { + conditions: [q], + rules: [ + { + endpoint: { + url: "https://portal.sso.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { error: "DualStack is enabled but this partition does not support DualStack", type: d }, + ], + type: f, + }, + { + endpoint: { url: "https://portal.sso.{Region}.{PartitionResult#dnsSuffix}", properties: n, headers: n }, + type: e, + }, + ], + type: f, + }, + ], + type: f, + }, + { error: "Invalid Configuration: Missing Region", type: d }, + ], +}; +exports.ruleSet = _data; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/index.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/index.js new file mode 100644 index 000000000..29c9e0b42 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/index.js @@ -0,0 +1,160 @@ +'use strict'; + +var middlewareHostHeader = require('@aws-sdk/middleware-host-header'); +var middlewareLogger = require('@aws-sdk/middleware-logger'); +var middlewareRecursionDetection = require('@aws-sdk/middleware-recursion-detection'); +var middlewareUserAgent = require('@aws-sdk/middleware-user-agent'); +var configResolver = require('@smithy/config-resolver'); +var core = require('@smithy/core'); +var schema = require('@smithy/core/schema'); +var middlewareContentLength = require('@smithy/middleware-content-length'); +var middlewareEndpoint = require('@smithy/middleware-endpoint'); +var middlewareRetry = require('@smithy/middleware-retry'); +var smithyClient = require('@smithy/smithy-client'); +var httpAuthSchemeProvider = require('./auth/httpAuthSchemeProvider'); +var runtimeConfig = require('./runtimeConfig'); +var regionConfigResolver = require('@aws-sdk/region-config-resolver'); +var protocolHttp = require('@smithy/protocol-http'); +var schemas_0 = require('./schemas/schemas_0'); +var errors = require('./models/errors'); +var SSOServiceException = require('./models/SSOServiceException'); + +const resolveClientEndpointParameters = (options) => { + return Object.assign(options, { + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + useFipsEndpoint: options.useFipsEndpoint ?? false, + defaultSigningName: "awsssoportal", + }); +}; +const commonParams = { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }, +}; + +const getHttpAuthExtensionConfiguration = (runtimeConfig) => { + const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; + let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; + let _credentials = runtimeConfig.credentials; + return { + setHttpAuthScheme(httpAuthScheme) { + const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId); + if (index === -1) { + _httpAuthSchemes.push(httpAuthScheme); + } + else { + _httpAuthSchemes.splice(index, 1, httpAuthScheme); + } + }, + httpAuthSchemes() { + return _httpAuthSchemes; + }, + setHttpAuthSchemeProvider(httpAuthSchemeProvider) { + _httpAuthSchemeProvider = httpAuthSchemeProvider; + }, + httpAuthSchemeProvider() { + return _httpAuthSchemeProvider; + }, + setCredentials(credentials) { + _credentials = credentials; + }, + credentials() { + return _credentials; + }, + }; +}; +const resolveHttpAuthRuntimeConfig = (config) => { + return { + httpAuthSchemes: config.httpAuthSchemes(), + httpAuthSchemeProvider: config.httpAuthSchemeProvider(), + credentials: config.credentials(), + }; +}; + +const resolveRuntimeExtensions = (runtimeConfig, extensions) => { + const extensionConfiguration = Object.assign(regionConfigResolver.getAwsRegionExtensionConfiguration(runtimeConfig), smithyClient.getDefaultExtensionConfiguration(runtimeConfig), protocolHttp.getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig)); + extensions.forEach((extension) => extension.configure(extensionConfiguration)); + return Object.assign(runtimeConfig, regionConfigResolver.resolveAwsRegionExtensionConfiguration(extensionConfiguration), smithyClient.resolveDefaultRuntimeConfig(extensionConfiguration), protocolHttp.resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration)); +}; + +class SSOClient extends smithyClient.Client { + config; + constructor(...[configuration]) { + const _config_0 = runtimeConfig.getRuntimeConfig(configuration || {}); + super(_config_0); + this.initConfig = _config_0; + const _config_1 = resolveClientEndpointParameters(_config_0); + const _config_2 = middlewareUserAgent.resolveUserAgentConfig(_config_1); + const _config_3 = middlewareRetry.resolveRetryConfig(_config_2); + const _config_4 = configResolver.resolveRegionConfig(_config_3); + const _config_5 = middlewareHostHeader.resolveHostHeaderConfig(_config_4); + const _config_6 = middlewareEndpoint.resolveEndpointConfig(_config_5); + const _config_7 = httpAuthSchemeProvider.resolveHttpAuthSchemeConfig(_config_6); + const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []); + this.config = _config_8; + this.middlewareStack.use(schema.getSchemaSerdePlugin(this.config)); + this.middlewareStack.use(middlewareUserAgent.getUserAgentPlugin(this.config)); + this.middlewareStack.use(middlewareRetry.getRetryPlugin(this.config)); + this.middlewareStack.use(middlewareContentLength.getContentLengthPlugin(this.config)); + this.middlewareStack.use(middlewareHostHeader.getHostHeaderPlugin(this.config)); + this.middlewareStack.use(middlewareLogger.getLoggerPlugin(this.config)); + this.middlewareStack.use(middlewareRecursionDetection.getRecursionDetectionPlugin(this.config)); + this.middlewareStack.use(core.getHttpAuthSchemeEndpointRuleSetPlugin(this.config, { + httpAuthSchemeParametersProvider: httpAuthSchemeProvider.defaultSSOHttpAuthSchemeParametersProvider, + identityProviderConfigProvider: async (config) => new core.DefaultIdentityProviderConfig({ + "aws.auth#sigv4": config.credentials, + }), + })); + this.middlewareStack.use(core.getHttpSigningPlugin(this.config)); + } + destroy() { + super.destroy(); + } +} + +class GetRoleCredentialsCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("SWBPortalService", "GetRoleCredentials", {}) + .n("SSOClient", "GetRoleCredentialsCommand") + .sc(schemas_0.GetRoleCredentials$) + .build() { +} + +const commands = { + GetRoleCredentialsCommand, +}; +class SSO extends SSOClient { +} +smithyClient.createAggregatedClient(commands, SSO); + +exports.$Command = smithyClient.Command; +exports.__Client = smithyClient.Client; +exports.SSOServiceException = SSOServiceException.SSOServiceException; +exports.GetRoleCredentialsCommand = GetRoleCredentialsCommand; +exports.SSO = SSO; +exports.SSOClient = SSOClient; +Object.prototype.hasOwnProperty.call(schemas_0, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: schemas_0['__proto__'] + }); + +Object.keys(schemas_0).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = schemas_0[k]; +}); +Object.prototype.hasOwnProperty.call(errors, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: errors['__proto__'] + }); + +Object.keys(errors).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = errors[k]; +}); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/models/SSOServiceException.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/models/SSOServiceException.js new file mode 100644 index 000000000..97ba0d898 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/models/SSOServiceException.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SSOServiceException = exports.__ServiceException = void 0; +const smithy_client_1 = require("@smithy/smithy-client"); +Object.defineProperty(exports, "__ServiceException", { enumerable: true, get: function () { return smithy_client_1.ServiceException; } }); +class SSOServiceException extends smithy_client_1.ServiceException { + constructor(options) { + super(options); + Object.setPrototypeOf(this, SSOServiceException.prototype); + } +} +exports.SSOServiceException = SSOServiceException; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/models/errors.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/models/errors.js new file mode 100644 index 000000000..a27b96c43 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/models/errors.js @@ -0,0 +1,56 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.UnauthorizedException = exports.TooManyRequestsException = exports.ResourceNotFoundException = exports.InvalidRequestException = void 0; +const SSOServiceException_1 = require("./SSOServiceException"); +class InvalidRequestException extends SSOServiceException_1.SSOServiceException { + name = "InvalidRequestException"; + $fault = "client"; + constructor(opts) { + super({ + name: "InvalidRequestException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidRequestException.prototype); + } +} +exports.InvalidRequestException = InvalidRequestException; +class ResourceNotFoundException extends SSOServiceException_1.SSOServiceException { + name = "ResourceNotFoundException"; + $fault = "client"; + constructor(opts) { + super({ + name: "ResourceNotFoundException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ResourceNotFoundException.prototype); + } +} +exports.ResourceNotFoundException = ResourceNotFoundException; +class TooManyRequestsException extends SSOServiceException_1.SSOServiceException { + name = "TooManyRequestsException"; + $fault = "client"; + constructor(opts) { + super({ + name: "TooManyRequestsException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, TooManyRequestsException.prototype); + } +} +exports.TooManyRequestsException = TooManyRequestsException; +class UnauthorizedException extends SSOServiceException_1.SSOServiceException { + name = "UnauthorizedException"; + $fault = "client"; + constructor(opts) { + super({ + name: "UnauthorizedException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, UnauthorizedException.prototype); + } +} +exports.UnauthorizedException = UnauthorizedException; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/runtimeConfig.browser.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/runtimeConfig.browser.js new file mode 100644 index 000000000..9f7380e3d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/runtimeConfig.browser.js @@ -0,0 +1,38 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const tslib_1 = require("tslib"); +const package_json_1 = tslib_1.__importDefault(require("../../../package.json")); +const sha256_browser_1 = require("@aws-crypto/sha256-browser"); +const util_user_agent_browser_1 = require("@aws-sdk/util-user-agent-browser"); +const config_resolver_1 = require("@smithy/config-resolver"); +const fetch_http_handler_1 = require("@smithy/fetch-http-handler"); +const invalid_dependency_1 = require("@smithy/invalid-dependency"); +const smithy_client_1 = require("@smithy/smithy-client"); +const util_body_length_browser_1 = require("@smithy/util-body-length-browser"); +const util_defaults_mode_browser_1 = require("@smithy/util-defaults-mode-browser"); +const util_retry_1 = require("@smithy/util-retry"); +const runtimeConfig_shared_1 = require("./runtimeConfig.shared"); +const getRuntimeConfig = (config) => { + const defaultsMode = (0, util_defaults_mode_browser_1.resolveDefaultsModeConfig)(config); + const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode); + const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config); + return { + ...clientSharedValues, + ...config, + runtime: "browser", + defaultsMode, + bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_browser_1.calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + (0, util_user_agent_browser_1.createDefaultUserAgentProvider)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }), + maxAttempts: config?.maxAttempts ?? util_retry_1.DEFAULT_MAX_ATTEMPTS, + region: config?.region ?? (0, invalid_dependency_1.invalidProvider)("Region is missing"), + requestHandler: fetch_http_handler_1.FetchHttpHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? (async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE), + sha256: config?.sha256 ?? sha256_browser_1.Sha256, + streamCollector: config?.streamCollector ?? fetch_http_handler_1.streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (() => Promise.resolve(config_resolver_1.DEFAULT_USE_DUALSTACK_ENDPOINT)), + useFipsEndpoint: config?.useFipsEndpoint ?? (() => Promise.resolve(config_resolver_1.DEFAULT_USE_FIPS_ENDPOINT)), + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/runtimeConfig.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/runtimeConfig.js new file mode 100644 index 000000000..137f25459 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/runtimeConfig.js @@ -0,0 +1,53 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const tslib_1 = require("tslib"); +const package_json_1 = tslib_1.__importDefault(require("../../../package.json")); +const core_1 = require("@aws-sdk/core"); +const util_user_agent_node_1 = require("@aws-sdk/util-user-agent-node"); +const config_resolver_1 = require("@smithy/config-resolver"); +const hash_node_1 = require("@smithy/hash-node"); +const middleware_retry_1 = require("@smithy/middleware-retry"); +const node_config_provider_1 = require("@smithy/node-config-provider"); +const node_http_handler_1 = require("@smithy/node-http-handler"); +const smithy_client_1 = require("@smithy/smithy-client"); +const util_body_length_node_1 = require("@smithy/util-body-length-node"); +const util_defaults_mode_node_1 = require("@smithy/util-defaults-mode-node"); +const util_retry_1 = require("@smithy/util-retry"); +const runtimeConfig_shared_1 = require("./runtimeConfig.shared"); +const getRuntimeConfig = (config) => { + (0, smithy_client_1.emitWarningIfUnsupportedVersion)(process.version); + const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config); + const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode); + const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config); + (0, core_1.emitWarningIfUnsupportedVersion)(process.version); + const loaderConfig = { + profile: config?.profile, + logger: clientSharedValues.logger, + }; + return { + ...clientSharedValues, + ...config, + runtime: "node", + defaultsMode, + authSchemePreference: config?.authSchemePreference ?? (0, node_config_provider_1.loadConfig)(core_1.NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig), + bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + (0, util_user_agent_node_1.createDefaultUserAgentProvider)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }), + maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config), + region: config?.region ?? + (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, { ...config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }), + requestHandler: node_http_handler_1.NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? + (0, node_config_provider_1.loadConfig)({ + ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS, + default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE, + }, config), + sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, "sha256"), + streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + userAgentAppId: config?.userAgentAppId ?? (0, node_config_provider_1.loadConfig)(util_user_agent_node_1.NODE_APP_ID_CONFIG_OPTIONS, loaderConfig), + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/runtimeConfig.native.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/runtimeConfig.native.js new file mode 100644 index 000000000..34c5f8ece --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/runtimeConfig.native.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const sha256_js_1 = require("@aws-crypto/sha256-js"); +const runtimeConfig_browser_1 = require("./runtimeConfig.browser"); +const getRuntimeConfig = (config) => { + const browserDefaults = (0, runtimeConfig_browser_1.getRuntimeConfig)(config); + return { + ...browserDefaults, + ...config, + runtime: "react-native", + sha256: config?.sha256 ?? sha256_js_1.Sha256, + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/runtimeConfig.shared.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/runtimeConfig.shared.js new file mode 100644 index 000000000..ed2e19211 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/runtimeConfig.shared.js @@ -0,0 +1,49 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const core_1 = require("@aws-sdk/core"); +const protocols_1 = require("@aws-sdk/core/protocols"); +const core_2 = require("@smithy/core"); +const smithy_client_1 = require("@smithy/smithy-client"); +const url_parser_1 = require("@smithy/url-parser"); +const util_base64_1 = require("@smithy/util-base64"); +const util_utf8_1 = require("@smithy/util-utf8"); +const httpAuthSchemeProvider_1 = require("./auth/httpAuthSchemeProvider"); +const endpointResolver_1 = require("./endpoint/endpointResolver"); +const schemas_0_1 = require("./schemas/schemas_0"); +const getRuntimeConfig = (config) => { + return { + apiVersion: "2019-06-10", + base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64, + base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64, + disableHostPrefix: config?.disableHostPrefix ?? false, + endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver, + extensions: config?.extensions ?? [], + httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? httpAuthSchemeProvider_1.defaultSSOHttpAuthSchemeProvider, + httpAuthSchemes: config?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: (ipc) => ipc.getIdentityProvider("aws.auth#sigv4"), + signer: new core_1.AwsSdkSigV4Signer(), + }, + { + schemeId: "smithy.api#noAuth", + identityProvider: (ipc) => ipc.getIdentityProvider("smithy.api#noAuth") || (async () => ({})), + signer: new core_2.NoAuthSigner(), + }, + ], + logger: config?.logger ?? new smithy_client_1.NoOpLogger(), + protocol: config?.protocol ?? protocols_1.AwsRestJsonProtocol, + protocolSettings: config?.protocolSettings ?? { + defaultNamespace: "com.amazonaws.sso", + errorTypeRegistries: schemas_0_1.errorTypeRegistries, + version: "2019-06-10", + serviceTarget: "SWBPortalService", + }, + serviceId: config?.serviceId ?? "SSO", + urlParser: config?.urlParser ?? url_parser_1.parseUrl, + utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8, + utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8, + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/schemas/schemas_0.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/schemas/schemas_0.js new file mode 100644 index 000000000..bec44e695 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/schemas/schemas_0.js @@ -0,0 +1,90 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GetRoleCredentials$ = exports.RoleCredentials$ = exports.GetRoleCredentialsResponse$ = exports.GetRoleCredentialsRequest$ = exports.errorTypeRegistries = exports.UnauthorizedException$ = exports.TooManyRequestsException$ = exports.ResourceNotFoundException$ = exports.InvalidRequestException$ = exports.SSOServiceException$ = void 0; +const _ATT = "AccessTokenType"; +const _GRC = "GetRoleCredentials"; +const _GRCR = "GetRoleCredentialsRequest"; +const _GRCRe = "GetRoleCredentialsResponse"; +const _IRE = "InvalidRequestException"; +const _RC = "RoleCredentials"; +const _RNFE = "ResourceNotFoundException"; +const _SAKT = "SecretAccessKeyType"; +const _STT = "SessionTokenType"; +const _TMRE = "TooManyRequestsException"; +const _UE = "UnauthorizedException"; +const _aI = "accountId"; +const _aKI = "accessKeyId"; +const _aT = "accessToken"; +const _ai = "account_id"; +const _c = "client"; +const _e = "error"; +const _ex = "expiration"; +const _h = "http"; +const _hE = "httpError"; +const _hH = "httpHeader"; +const _hQ = "httpQuery"; +const _m = "message"; +const _rC = "roleCredentials"; +const _rN = "roleName"; +const _rn = "role_name"; +const _s = "smithy.ts.sdk.synthetic.com.amazonaws.sso"; +const _sAK = "secretAccessKey"; +const _sT = "sessionToken"; +const _xasbt = "x-amz-sso_bearer_token"; +const n0 = "com.amazonaws.sso"; +const schema_1 = require("@smithy/core/schema"); +const errors_1 = require("../models/errors"); +const SSOServiceException_1 = require("../models/SSOServiceException"); +const _s_registry = schema_1.TypeRegistry.for(_s); +exports.SSOServiceException$ = [-3, _s, "SSOServiceException", 0, [], []]; +_s_registry.registerError(exports.SSOServiceException$, SSOServiceException_1.SSOServiceException); +const n0_registry = schema_1.TypeRegistry.for(n0); +exports.InvalidRequestException$ = [-3, n0, _IRE, { [_e]: _c, [_hE]: 400 }, [_m], [0]]; +n0_registry.registerError(exports.InvalidRequestException$, errors_1.InvalidRequestException); +exports.ResourceNotFoundException$ = [-3, n0, _RNFE, { [_e]: _c, [_hE]: 404 }, [_m], [0]]; +n0_registry.registerError(exports.ResourceNotFoundException$, errors_1.ResourceNotFoundException); +exports.TooManyRequestsException$ = [-3, n0, _TMRE, { [_e]: _c, [_hE]: 429 }, [_m], [0]]; +n0_registry.registerError(exports.TooManyRequestsException$, errors_1.TooManyRequestsException); +exports.UnauthorizedException$ = [-3, n0, _UE, { [_e]: _c, [_hE]: 401 }, [_m], [0]]; +n0_registry.registerError(exports.UnauthorizedException$, errors_1.UnauthorizedException); +exports.errorTypeRegistries = [_s_registry, n0_registry]; +var AccessTokenType = [0, n0, _ATT, 8, 0]; +var SecretAccessKeyType = [0, n0, _SAKT, 8, 0]; +var SessionTokenType = [0, n0, _STT, 8, 0]; +exports.GetRoleCredentialsRequest$ = [ + 3, + n0, + _GRCR, + 0, + [_rN, _aI, _aT], + [ + [0, { [_hQ]: _rn }], + [0, { [_hQ]: _ai }], + [() => AccessTokenType, { [_hH]: _xasbt }], + ], + 3, +]; +exports.GetRoleCredentialsResponse$ = [ + 3, + n0, + _GRCRe, + 0, + [_rC], + [[() => exports.RoleCredentials$, 0]], +]; +exports.RoleCredentials$ = [ + 3, + n0, + _RC, + 0, + [_aKI, _sAK, _sT, _ex], + [0, [() => SecretAccessKeyType, 0], [() => SessionTokenType, 0], 1], +]; +exports.GetRoleCredentials$ = [ + 9, + n0, + _GRC, + { [_h]: ["GET", "/federation/credentials", 200] }, + () => exports.GetRoleCredentialsRequest$, + () => exports.GetRoleCredentialsResponse$, +]; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/STSClient.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/STSClient.js new file mode 100644 index 000000000..879af8b9c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/STSClient.js @@ -0,0 +1,54 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.STSClient = exports.__Client = void 0; +const middleware_host_header_1 = require("@aws-sdk/middleware-host-header"); +const middleware_logger_1 = require("@aws-sdk/middleware-logger"); +const middleware_recursion_detection_1 = require("@aws-sdk/middleware-recursion-detection"); +const middleware_user_agent_1 = require("@aws-sdk/middleware-user-agent"); +const config_resolver_1 = require("@smithy/config-resolver"); +const core_1 = require("@smithy/core"); +const schema_1 = require("@smithy/core/schema"); +const middleware_content_length_1 = require("@smithy/middleware-content-length"); +const middleware_endpoint_1 = require("@smithy/middleware-endpoint"); +const middleware_retry_1 = require("@smithy/middleware-retry"); +const smithy_client_1 = require("@smithy/smithy-client"); +Object.defineProperty(exports, "__Client", { enumerable: true, get: function () { return smithy_client_1.Client; } }); +const httpAuthSchemeProvider_1 = require("./auth/httpAuthSchemeProvider"); +const EndpointParameters_1 = require("./endpoint/EndpointParameters"); +const runtimeConfig_1 = require("./runtimeConfig"); +const runtimeExtensions_1 = require("./runtimeExtensions"); +class STSClient extends smithy_client_1.Client { + config; + constructor(...[configuration]) { + const _config_0 = (0, runtimeConfig_1.getRuntimeConfig)(configuration || {}); + super(_config_0); + this.initConfig = _config_0; + const _config_1 = (0, EndpointParameters_1.resolveClientEndpointParameters)(_config_0); + const _config_2 = (0, middleware_user_agent_1.resolveUserAgentConfig)(_config_1); + const _config_3 = (0, middleware_retry_1.resolveRetryConfig)(_config_2); + const _config_4 = (0, config_resolver_1.resolveRegionConfig)(_config_3); + const _config_5 = (0, middleware_host_header_1.resolveHostHeaderConfig)(_config_4); + const _config_6 = (0, middleware_endpoint_1.resolveEndpointConfig)(_config_5); + const _config_7 = (0, httpAuthSchemeProvider_1.resolveHttpAuthSchemeConfig)(_config_6); + const _config_8 = (0, runtimeExtensions_1.resolveRuntimeExtensions)(_config_7, configuration?.extensions || []); + this.config = _config_8; + this.middlewareStack.use((0, schema_1.getSchemaSerdePlugin)(this.config)); + this.middlewareStack.use((0, middleware_user_agent_1.getUserAgentPlugin)(this.config)); + this.middlewareStack.use((0, middleware_retry_1.getRetryPlugin)(this.config)); + this.middlewareStack.use((0, middleware_content_length_1.getContentLengthPlugin)(this.config)); + this.middlewareStack.use((0, middleware_host_header_1.getHostHeaderPlugin)(this.config)); + this.middlewareStack.use((0, middleware_logger_1.getLoggerPlugin)(this.config)); + this.middlewareStack.use((0, middleware_recursion_detection_1.getRecursionDetectionPlugin)(this.config)); + this.middlewareStack.use((0, core_1.getHttpAuthSchemeEndpointRuleSetPlugin)(this.config, { + httpAuthSchemeParametersProvider: httpAuthSchemeProvider_1.defaultSTSHttpAuthSchemeParametersProvider, + identityProviderConfigProvider: async (config) => new core_1.DefaultIdentityProviderConfig({ + "aws.auth#sigv4": config.credentials, + }), + })); + this.middlewareStack.use((0, core_1.getHttpSigningPlugin)(this.config)); + } + destroy() { + super.destroy(); + } +} +exports.STSClient = STSClient; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/auth/httpAuthExtensionConfiguration.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/auth/httpAuthExtensionConfiguration.js new file mode 100644 index 000000000..239095e09 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/auth/httpAuthExtensionConfiguration.js @@ -0,0 +1,43 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveHttpAuthRuntimeConfig = exports.getHttpAuthExtensionConfiguration = void 0; +const getHttpAuthExtensionConfiguration = (runtimeConfig) => { + const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; + let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; + let _credentials = runtimeConfig.credentials; + return { + setHttpAuthScheme(httpAuthScheme) { + const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId); + if (index === -1) { + _httpAuthSchemes.push(httpAuthScheme); + } + else { + _httpAuthSchemes.splice(index, 1, httpAuthScheme); + } + }, + httpAuthSchemes() { + return _httpAuthSchemes; + }, + setHttpAuthSchemeProvider(httpAuthSchemeProvider) { + _httpAuthSchemeProvider = httpAuthSchemeProvider; + }, + httpAuthSchemeProvider() { + return _httpAuthSchemeProvider; + }, + setCredentials(credentials) { + _credentials = credentials; + }, + credentials() { + return _credentials; + }, + }; +}; +exports.getHttpAuthExtensionConfiguration = getHttpAuthExtensionConfiguration; +const resolveHttpAuthRuntimeConfig = (config) => { + return { + httpAuthSchemes: config.httpAuthSchemes(), + httpAuthSchemeProvider: config.httpAuthSchemeProvider(), + credentials: config.credentials(), + }; +}; +exports.resolveHttpAuthRuntimeConfig = resolveHttpAuthRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/auth/httpAuthSchemeProvider.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/auth/httpAuthSchemeProvider.js new file mode 100644 index 000000000..842241a73 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/auth/httpAuthSchemeProvider.js @@ -0,0 +1,62 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveHttpAuthSchemeConfig = exports.resolveStsAuthConfig = exports.defaultSTSHttpAuthSchemeProvider = exports.defaultSTSHttpAuthSchemeParametersProvider = void 0; +const core_1 = require("@aws-sdk/core"); +const util_middleware_1 = require("@smithy/util-middleware"); +const STSClient_1 = require("../STSClient"); +const defaultSTSHttpAuthSchemeParametersProvider = async (config, context, input) => { + return { + operation: (0, util_middleware_1.getSmithyContext)(context).operation, + region: (await (0, util_middleware_1.normalizeProvider)(config.region)()) || + (() => { + throw new Error("expected `region` to be configured for `aws.auth#sigv4`"); + })(), + }; +}; +exports.defaultSTSHttpAuthSchemeParametersProvider = defaultSTSHttpAuthSchemeParametersProvider; +function createAwsAuthSigv4HttpAuthOption(authParameters) { + return { + schemeId: "aws.auth#sigv4", + signingProperties: { + name: "sts", + region: authParameters.region, + }, + propertiesExtractor: (config, context) => ({ + signingProperties: { + config, + context, + }, + }), + }; +} +function createSmithyApiNoAuthHttpAuthOption(authParameters) { + return { + schemeId: "smithy.api#noAuth", + }; +} +const defaultSTSHttpAuthSchemeProvider = (authParameters) => { + const options = []; + switch (authParameters.operation) { + case "AssumeRoleWithWebIdentity": { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + default: { + options.push(createAwsAuthSigv4HttpAuthOption(authParameters)); + } + } + return options; +}; +exports.defaultSTSHttpAuthSchemeProvider = defaultSTSHttpAuthSchemeProvider; +const resolveStsAuthConfig = (input) => Object.assign(input, { + stsClientCtor: STSClient_1.STSClient, +}); +exports.resolveStsAuthConfig = resolveStsAuthConfig; +const resolveHttpAuthSchemeConfig = (config) => { + const config_0 = (0, exports.resolveStsAuthConfig)(config); + const config_1 = (0, core_1.resolveAwsSdkSigV4Config)(config_0); + return Object.assign(config_1, { + authSchemePreference: (0, util_middleware_1.normalizeProvider)(config.authSchemePreference ?? []), + }); +}; +exports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/endpoint/EndpointParameters.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/endpoint/EndpointParameters.js new file mode 100644 index 000000000..3aec6a5e7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/endpoint/EndpointParameters.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.commonParams = exports.resolveClientEndpointParameters = void 0; +const resolveClientEndpointParameters = (options) => { + return Object.assign(options, { + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + useFipsEndpoint: options.useFipsEndpoint ?? false, + useGlobalEndpoint: options.useGlobalEndpoint ?? false, + defaultSigningName: "sts", + }); +}; +exports.resolveClientEndpointParameters = resolveClientEndpointParameters; +exports.commonParams = { + UseGlobalEndpoint: { type: "builtInParams", name: "useGlobalEndpoint" }, + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }, +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/endpoint/endpointResolver.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/endpoint/endpointResolver.js new file mode 100644 index 000000000..6bfb6e901 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/endpoint/endpointResolver.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.defaultEndpointResolver = void 0; +const util_endpoints_1 = require("@aws-sdk/util-endpoints"); +const util_endpoints_2 = require("@smithy/util-endpoints"); +const ruleset_1 = require("./ruleset"); +const cache = new util_endpoints_2.EndpointCache({ + size: 50, + params: ["Endpoint", "Region", "UseDualStack", "UseFIPS", "UseGlobalEndpoint"], +}); +const defaultEndpointResolver = (endpointParams, context = {}) => { + return cache.get(endpointParams, () => (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, { + endpointParams: endpointParams, + logger: context.logger, + })); +}; +exports.defaultEndpointResolver = defaultEndpointResolver; +util_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/endpoint/ruleset.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/endpoint/ruleset.js new file mode 100644 index 000000000..66cb8678e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/endpoint/ruleset.js @@ -0,0 +1,145 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ruleSet = void 0; +const F = "required", G = "type", H = "fn", I = "argv", J = "ref"; +const a = false, b = true, c = "booleanEquals", d = "stringEquals", e = "sigv4", f = "sts", g = "us-east-1", h = "endpoint", i = "https://sts.{Region}.{PartitionResult#dnsSuffix}", j = "tree", k = "error", l = "getAttr", m = { [F]: false, [G]: "string" }, n = { [F]: true, default: false, [G]: "boolean" }, o = { [J]: "Endpoint" }, p = { [H]: "isSet", [I]: [{ [J]: "Region" }] }, q = { [J]: "Region" }, r = { [H]: "aws.partition", [I]: [q], assign: "PartitionResult" }, s = { [J]: "UseFIPS" }, t = { [J]: "UseDualStack" }, u = { + url: "https://sts.amazonaws.com", + properties: { authSchemes: [{ name: e, signingName: f, signingRegion: g }] }, + headers: {}, +}, v = {}, w = { conditions: [{ [H]: d, [I]: [q, "aws-global"] }], [h]: u, [G]: h }, x = { [H]: c, [I]: [s, true] }, y = { [H]: c, [I]: [t, true] }, z = { [H]: l, [I]: [{ [J]: "PartitionResult" }, "supportsFIPS"] }, A = { [J]: "PartitionResult" }, B = { [H]: c, [I]: [true, { [H]: l, [I]: [A, "supportsDualStack"] }] }, C = [{ [H]: "isSet", [I]: [o] }], D = [x], E = [y]; +const _data = { + version: "1.0", + parameters: { Region: m, UseDualStack: n, UseFIPS: n, Endpoint: m, UseGlobalEndpoint: n }, + rules: [ + { + conditions: [ + { [H]: c, [I]: [{ [J]: "UseGlobalEndpoint" }, b] }, + { [H]: "not", [I]: C }, + p, + r, + { [H]: c, [I]: [s, a] }, + { [H]: c, [I]: [t, a] }, + ], + rules: [ + { conditions: [{ [H]: d, [I]: [q, "ap-northeast-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "ap-south-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "ap-southeast-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "ap-southeast-2"] }], endpoint: u, [G]: h }, + w, + { conditions: [{ [H]: d, [I]: [q, "ca-central-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "eu-central-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "eu-north-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "eu-west-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "eu-west-2"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "eu-west-3"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "sa-east-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, g] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "us-east-2"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "us-west-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "us-west-2"] }], endpoint: u, [G]: h }, + { + endpoint: { + url: i, + properties: { authSchemes: [{ name: e, signingName: f, signingRegion: "{Region}" }] }, + headers: v, + }, + [G]: h, + }, + ], + [G]: j, + }, + { + conditions: C, + rules: [ + { conditions: D, error: "Invalid Configuration: FIPS and custom endpoint are not supported", [G]: k }, + { conditions: E, error: "Invalid Configuration: Dualstack and custom endpoint are not supported", [G]: k }, + { endpoint: { url: o, properties: v, headers: v }, [G]: h }, + ], + [G]: j, + }, + { + conditions: [p], + rules: [ + { + conditions: [r], + rules: [ + { + conditions: [x, y], + rules: [ + { + conditions: [{ [H]: c, [I]: [b, z] }, B], + rules: [ + { + endpoint: { + url: "https://sts-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: v, + headers: v, + }, + [G]: h, + }, + ], + [G]: j, + }, + { error: "FIPS and DualStack are enabled, but this partition does not support one or both", [G]: k }, + ], + [G]: j, + }, + { + conditions: D, + rules: [ + { + conditions: [{ [H]: c, [I]: [z, b] }], + rules: [ + { + conditions: [{ [H]: d, [I]: [{ [H]: l, [I]: [A, "name"] }, "aws-us-gov"] }], + endpoint: { url: "https://sts.{Region}.amazonaws.com", properties: v, headers: v }, + [G]: h, + }, + { + endpoint: { + url: "https://sts-fips.{Region}.{PartitionResult#dnsSuffix}", + properties: v, + headers: v, + }, + [G]: h, + }, + ], + [G]: j, + }, + { error: "FIPS is enabled but this partition does not support FIPS", [G]: k }, + ], + [G]: j, + }, + { + conditions: E, + rules: [ + { + conditions: [B], + rules: [ + { + endpoint: { + url: "https://sts.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: v, + headers: v, + }, + [G]: h, + }, + ], + [G]: j, + }, + { error: "DualStack is enabled but this partition does not support DualStack", [G]: k }, + ], + [G]: j, + }, + w, + { endpoint: { url: i, properties: v, headers: v }, [G]: h }, + ], + [G]: j, + }, + ], + [G]: j, + }, + { error: "Invalid Configuration: Missing Region", [G]: k }, + ], +}; +exports.ruleSet = _data; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/index.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/index.js new file mode 100644 index 000000000..2d1b3f5e1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/index.js @@ -0,0 +1,202 @@ +'use strict'; + +var STSClient = require('./STSClient'); +var smithyClient = require('@smithy/smithy-client'); +var middlewareEndpoint = require('@smithy/middleware-endpoint'); +var EndpointParameters = require('./endpoint/EndpointParameters'); +var schemas_0 = require('./schemas/schemas_0'); +var errors = require('./models/errors'); +var client = require('@aws-sdk/core/client'); +var regionConfigResolver = require('@aws-sdk/region-config-resolver'); +var STSServiceException = require('./models/STSServiceException'); + +class AssumeRoleCommand extends smithyClient.Command + .classBuilder() + .ep(EndpointParameters.commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSSecurityTokenServiceV20110615", "AssumeRole", {}) + .n("STSClient", "AssumeRoleCommand") + .sc(schemas_0.AssumeRole$) + .build() { +} + +class AssumeRoleWithWebIdentityCommand extends smithyClient.Command + .classBuilder() + .ep(EndpointParameters.commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSSecurityTokenServiceV20110615", "AssumeRoleWithWebIdentity", {}) + .n("STSClient", "AssumeRoleWithWebIdentityCommand") + .sc(schemas_0.AssumeRoleWithWebIdentity$) + .build() { +} + +const commands = { + AssumeRoleCommand, + AssumeRoleWithWebIdentityCommand, +}; +class STS extends STSClient.STSClient { +} +smithyClient.createAggregatedClient(commands, STS); + +const getAccountIdFromAssumedRoleUser = (assumedRoleUser) => { + if (typeof assumedRoleUser?.Arn === "string") { + const arnComponents = assumedRoleUser.Arn.split(":"); + if (arnComponents.length > 4 && arnComponents[4] !== "") { + return arnComponents[4]; + } + } + return undefined; +}; +const resolveRegion = async (_region, _parentRegion, credentialProviderLogger, loaderConfig = {}) => { + const region = typeof _region === "function" ? await _region() : _region; + const parentRegion = typeof _parentRegion === "function" ? await _parentRegion() : _parentRegion; + let stsDefaultRegion = ""; + const resolvedRegion = region ?? parentRegion ?? (stsDefaultRegion = await regionConfigResolver.stsRegionDefaultResolver(loaderConfig)()); + credentialProviderLogger?.debug?.("@aws-sdk/client-sts::resolveRegion", "accepting first of:", `${region} (credential provider clientConfig)`, `${parentRegion} (contextual client)`, `${stsDefaultRegion} (STS default: AWS_REGION, profile region, or us-east-1)`); + return resolvedRegion; +}; +const getDefaultRoleAssumer$1 = (stsOptions, STSClient) => { + let stsClient; + let closureSourceCreds; + return async (sourceCreds, params) => { + closureSourceCreds = sourceCreds; + if (!stsClient) { + const { logger = stsOptions?.parentClientConfig?.logger, profile = stsOptions?.parentClientConfig?.profile, region, requestHandler = stsOptions?.parentClientConfig?.requestHandler, credentialProviderLogger, userAgentAppId = stsOptions?.parentClientConfig?.userAgentAppId, } = stsOptions; + const resolvedRegion = await resolveRegion(region, stsOptions?.parentClientConfig?.region, credentialProviderLogger, { + logger, + profile, + }); + const isCompatibleRequestHandler = !isH2(requestHandler); + stsClient = new STSClient({ + ...stsOptions, + userAgentAppId, + profile, + credentialDefaultProvider: () => async () => closureSourceCreds, + region: resolvedRegion, + requestHandler: isCompatibleRequestHandler ? requestHandler : undefined, + logger: logger, + }); + } + const { Credentials, AssumedRoleUser } = await stsClient.send(new AssumeRoleCommand(params)); + if (!Credentials || !Credentials.AccessKeyId || !Credentials.SecretAccessKey) { + throw new Error(`Invalid response from STS.assumeRole call with role ${params.RoleArn}`); + } + const accountId = getAccountIdFromAssumedRoleUser(AssumedRoleUser); + const credentials = { + accessKeyId: Credentials.AccessKeyId, + secretAccessKey: Credentials.SecretAccessKey, + sessionToken: Credentials.SessionToken, + expiration: Credentials.Expiration, + ...(Credentials.CredentialScope && { credentialScope: Credentials.CredentialScope }), + ...(accountId && { accountId }), + }; + client.setCredentialFeature(credentials, "CREDENTIALS_STS_ASSUME_ROLE", "i"); + return credentials; + }; +}; +const getDefaultRoleAssumerWithWebIdentity$1 = (stsOptions, STSClient) => { + let stsClient; + return async (params) => { + if (!stsClient) { + const { logger = stsOptions?.parentClientConfig?.logger, profile = stsOptions?.parentClientConfig?.profile, region, requestHandler = stsOptions?.parentClientConfig?.requestHandler, credentialProviderLogger, userAgentAppId = stsOptions?.parentClientConfig?.userAgentAppId, } = stsOptions; + const resolvedRegion = await resolveRegion(region, stsOptions?.parentClientConfig?.region, credentialProviderLogger, { + logger, + profile, + }); + const isCompatibleRequestHandler = !isH2(requestHandler); + stsClient = new STSClient({ + ...stsOptions, + userAgentAppId, + profile, + region: resolvedRegion, + requestHandler: isCompatibleRequestHandler ? requestHandler : undefined, + logger: logger, + }); + } + const { Credentials, AssumedRoleUser } = await stsClient.send(new AssumeRoleWithWebIdentityCommand(params)); + if (!Credentials || !Credentials.AccessKeyId || !Credentials.SecretAccessKey) { + throw new Error(`Invalid response from STS.assumeRoleWithWebIdentity call with role ${params.RoleArn}`); + } + const accountId = getAccountIdFromAssumedRoleUser(AssumedRoleUser); + const credentials = { + accessKeyId: Credentials.AccessKeyId, + secretAccessKey: Credentials.SecretAccessKey, + sessionToken: Credentials.SessionToken, + expiration: Credentials.Expiration, + ...(Credentials.CredentialScope && { credentialScope: Credentials.CredentialScope }), + ...(accountId && { accountId }), + }; + if (accountId) { + client.setCredentialFeature(credentials, "RESOLVED_ACCOUNT_ID", "T"); + } + client.setCredentialFeature(credentials, "CREDENTIALS_STS_ASSUME_ROLE_WEB_ID", "k"); + return credentials; + }; +}; +const isH2 = (requestHandler) => { + return requestHandler?.metadata?.handlerProtocol === "h2"; +}; + +const getCustomizableStsClientCtor = (baseCtor, customizations) => { + if (!customizations) + return baseCtor; + else + return class CustomizableSTSClient extends baseCtor { + constructor(config) { + super(config); + for (const customization of customizations) { + this.middlewareStack.use(customization); + } + } + }; +}; +const getDefaultRoleAssumer = (stsOptions = {}, stsPlugins) => getDefaultRoleAssumer$1(stsOptions, getCustomizableStsClientCtor(STSClient.STSClient, stsPlugins)); +const getDefaultRoleAssumerWithWebIdentity = (stsOptions = {}, stsPlugins) => getDefaultRoleAssumerWithWebIdentity$1(stsOptions, getCustomizableStsClientCtor(STSClient.STSClient, stsPlugins)); +const decorateDefaultCredentialProvider = (provider) => (input) => provider({ + roleAssumer: getDefaultRoleAssumer(input), + roleAssumerWithWebIdentity: getDefaultRoleAssumerWithWebIdentity(input), + ...input, +}); + +exports.$Command = smithyClient.Command; +exports.STSServiceException = STSServiceException.STSServiceException; +exports.AssumeRoleCommand = AssumeRoleCommand; +exports.AssumeRoleWithWebIdentityCommand = AssumeRoleWithWebIdentityCommand; +exports.STS = STS; +exports.decorateDefaultCredentialProvider = decorateDefaultCredentialProvider; +exports.getDefaultRoleAssumer = getDefaultRoleAssumer; +exports.getDefaultRoleAssumerWithWebIdentity = getDefaultRoleAssumerWithWebIdentity; +Object.prototype.hasOwnProperty.call(STSClient, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: STSClient['__proto__'] + }); + +Object.keys(STSClient).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = STSClient[k]; +}); +Object.prototype.hasOwnProperty.call(schemas_0, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: schemas_0['__proto__'] + }); + +Object.keys(schemas_0).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = schemas_0[k]; +}); +Object.prototype.hasOwnProperty.call(errors, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: errors['__proto__'] + }); + +Object.keys(errors).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = errors[k]; +}); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/models/STSServiceException.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/models/STSServiceException.js new file mode 100644 index 000000000..0e7b68a5a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/models/STSServiceException.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.STSServiceException = exports.__ServiceException = void 0; +const smithy_client_1 = require("@smithy/smithy-client"); +Object.defineProperty(exports, "__ServiceException", { enumerable: true, get: function () { return smithy_client_1.ServiceException; } }); +class STSServiceException extends smithy_client_1.ServiceException { + constructor(options) { + super(options); + Object.setPrototypeOf(this, STSServiceException.prototype); + } +} +exports.STSServiceException = STSServiceException; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/models/errors.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/models/errors.js new file mode 100644 index 000000000..72f2ac8ea --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/models/errors.js @@ -0,0 +1,95 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IDPCommunicationErrorException = exports.InvalidIdentityTokenException = exports.IDPRejectedClaimException = exports.RegionDisabledException = exports.PackedPolicyTooLargeException = exports.MalformedPolicyDocumentException = exports.ExpiredTokenException = void 0; +const STSServiceException_1 = require("./STSServiceException"); +class ExpiredTokenException extends STSServiceException_1.STSServiceException { + name = "ExpiredTokenException"; + $fault = "client"; + constructor(opts) { + super({ + name: "ExpiredTokenException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ExpiredTokenException.prototype); + } +} +exports.ExpiredTokenException = ExpiredTokenException; +class MalformedPolicyDocumentException extends STSServiceException_1.STSServiceException { + name = "MalformedPolicyDocumentException"; + $fault = "client"; + constructor(opts) { + super({ + name: "MalformedPolicyDocumentException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, MalformedPolicyDocumentException.prototype); + } +} +exports.MalformedPolicyDocumentException = MalformedPolicyDocumentException; +class PackedPolicyTooLargeException extends STSServiceException_1.STSServiceException { + name = "PackedPolicyTooLargeException"; + $fault = "client"; + constructor(opts) { + super({ + name: "PackedPolicyTooLargeException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, PackedPolicyTooLargeException.prototype); + } +} +exports.PackedPolicyTooLargeException = PackedPolicyTooLargeException; +class RegionDisabledException extends STSServiceException_1.STSServiceException { + name = "RegionDisabledException"; + $fault = "client"; + constructor(opts) { + super({ + name: "RegionDisabledException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, RegionDisabledException.prototype); + } +} +exports.RegionDisabledException = RegionDisabledException; +class IDPRejectedClaimException extends STSServiceException_1.STSServiceException { + name = "IDPRejectedClaimException"; + $fault = "client"; + constructor(opts) { + super({ + name: "IDPRejectedClaimException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, IDPRejectedClaimException.prototype); + } +} +exports.IDPRejectedClaimException = IDPRejectedClaimException; +class InvalidIdentityTokenException extends STSServiceException_1.STSServiceException { + name = "InvalidIdentityTokenException"; + $fault = "client"; + constructor(opts) { + super({ + name: "InvalidIdentityTokenException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidIdentityTokenException.prototype); + } +} +exports.InvalidIdentityTokenException = InvalidIdentityTokenException; +class IDPCommunicationErrorException extends STSServiceException_1.STSServiceException { + name = "IDPCommunicationErrorException"; + $fault = "client"; + constructor(opts) { + super({ + name: "IDPCommunicationErrorException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, IDPCommunicationErrorException.prototype); + } +} +exports.IDPCommunicationErrorException = IDPCommunicationErrorException; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeConfig.browser.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeConfig.browser.js new file mode 100644 index 000000000..10986e2e6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeConfig.browser.js @@ -0,0 +1,39 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const tslib_1 = require("tslib"); +const package_json_1 = tslib_1.__importDefault(require("../../../package.json")); +const sha256_browser_1 = require("@aws-crypto/sha256-browser"); +const util_user_agent_browser_1 = require("@aws-sdk/util-user-agent-browser"); +const config_resolver_1 = require("@smithy/config-resolver"); +const fetch_http_handler_1 = require("@smithy/fetch-http-handler"); +const invalid_dependency_1 = require("@smithy/invalid-dependency"); +const smithy_client_1 = require("@smithy/smithy-client"); +const util_body_length_browser_1 = require("@smithy/util-body-length-browser"); +const util_defaults_mode_browser_1 = require("@smithy/util-defaults-mode-browser"); +const util_retry_1 = require("@smithy/util-retry"); +const runtimeConfig_shared_1 = require("./runtimeConfig.shared"); +const getRuntimeConfig = (config) => { + const defaultsMode = (0, util_defaults_mode_browser_1.resolveDefaultsModeConfig)(config); + const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode); + const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config); + return { + ...clientSharedValues, + ...config, + runtime: "browser", + defaultsMode, + bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_browser_1.calculateBodyLength, + credentialDefaultProvider: config?.credentialDefaultProvider ?? ((_) => () => Promise.reject(new Error("Credential is missing"))), + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + (0, util_user_agent_browser_1.createDefaultUserAgentProvider)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }), + maxAttempts: config?.maxAttempts ?? util_retry_1.DEFAULT_MAX_ATTEMPTS, + region: config?.region ?? (0, invalid_dependency_1.invalidProvider)("Region is missing"), + requestHandler: fetch_http_handler_1.FetchHttpHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? (async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE), + sha256: config?.sha256 ?? sha256_browser_1.Sha256, + streamCollector: config?.streamCollector ?? fetch_http_handler_1.streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (() => Promise.resolve(config_resolver_1.DEFAULT_USE_DUALSTACK_ENDPOINT)), + useFipsEndpoint: config?.useFipsEndpoint ?? (() => Promise.resolve(config_resolver_1.DEFAULT_USE_FIPS_ENDPOINT)), + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeConfig.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeConfig.js new file mode 100644 index 000000000..731e6cd75 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeConfig.js @@ -0,0 +1,67 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const tslib_1 = require("tslib"); +const package_json_1 = tslib_1.__importDefault(require("../../../package.json")); +const core_1 = require("@aws-sdk/core"); +const util_user_agent_node_1 = require("@aws-sdk/util-user-agent-node"); +const config_resolver_1 = require("@smithy/config-resolver"); +const core_2 = require("@smithy/core"); +const hash_node_1 = require("@smithy/hash-node"); +const middleware_retry_1 = require("@smithy/middleware-retry"); +const node_config_provider_1 = require("@smithy/node-config-provider"); +const node_http_handler_1 = require("@smithy/node-http-handler"); +const smithy_client_1 = require("@smithy/smithy-client"); +const util_body_length_node_1 = require("@smithy/util-body-length-node"); +const util_defaults_mode_node_1 = require("@smithy/util-defaults-mode-node"); +const util_retry_1 = require("@smithy/util-retry"); +const runtimeConfig_shared_1 = require("./runtimeConfig.shared"); +const getRuntimeConfig = (config) => { + (0, smithy_client_1.emitWarningIfUnsupportedVersion)(process.version); + const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config); + const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode); + const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config); + (0, core_1.emitWarningIfUnsupportedVersion)(process.version); + const loaderConfig = { + profile: config?.profile, + logger: clientSharedValues.logger, + }; + return { + ...clientSharedValues, + ...config, + runtime: "node", + defaultsMode, + authSchemePreference: config?.authSchemePreference ?? (0, node_config_provider_1.loadConfig)(core_1.NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig), + bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + (0, util_user_agent_node_1.createDefaultUserAgentProvider)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }), + httpAuthSchemes: config?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: (ipc) => ipc.getIdentityProvider("aws.auth#sigv4") || + (async (idProps) => await config.credentialDefaultProvider(idProps?.__config || {})()), + signer: new core_1.AwsSdkSigV4Signer(), + }, + { + schemeId: "smithy.api#noAuth", + identityProvider: (ipc) => ipc.getIdentityProvider("smithy.api#noAuth") || (async () => ({})), + signer: new core_2.NoAuthSigner(), + }, + ], + maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config), + region: config?.region ?? + (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, { ...config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }), + requestHandler: node_http_handler_1.NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? + (0, node_config_provider_1.loadConfig)({ + ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS, + default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE, + }, config), + sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, "sha256"), + streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + userAgentAppId: config?.userAgentAppId ?? (0, node_config_provider_1.loadConfig)(util_user_agent_node_1.NODE_APP_ID_CONFIG_OPTIONS, loaderConfig), + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeConfig.native.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeConfig.native.js new file mode 100644 index 000000000..34c5f8ece --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeConfig.native.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const sha256_js_1 = require("@aws-crypto/sha256-js"); +const runtimeConfig_browser_1 = require("./runtimeConfig.browser"); +const getRuntimeConfig = (config) => { + const browserDefaults = (0, runtimeConfig_browser_1.getRuntimeConfig)(config); + return { + ...browserDefaults, + ...config, + runtime: "react-native", + sha256: config?.sha256 ?? sha256_js_1.Sha256, + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeConfig.shared.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeConfig.shared.js new file mode 100644 index 000000000..d570ac43e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeConfig.shared.js @@ -0,0 +1,50 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const core_1 = require("@aws-sdk/core"); +const protocols_1 = require("@aws-sdk/core/protocols"); +const core_2 = require("@smithy/core"); +const smithy_client_1 = require("@smithy/smithy-client"); +const url_parser_1 = require("@smithy/url-parser"); +const util_base64_1 = require("@smithy/util-base64"); +const util_utf8_1 = require("@smithy/util-utf8"); +const httpAuthSchemeProvider_1 = require("./auth/httpAuthSchemeProvider"); +const endpointResolver_1 = require("./endpoint/endpointResolver"); +const schemas_0_1 = require("./schemas/schemas_0"); +const getRuntimeConfig = (config) => { + return { + apiVersion: "2011-06-15", + base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64, + base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64, + disableHostPrefix: config?.disableHostPrefix ?? false, + endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver, + extensions: config?.extensions ?? [], + httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? httpAuthSchemeProvider_1.defaultSTSHttpAuthSchemeProvider, + httpAuthSchemes: config?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: (ipc) => ipc.getIdentityProvider("aws.auth#sigv4"), + signer: new core_1.AwsSdkSigV4Signer(), + }, + { + schemeId: "smithy.api#noAuth", + identityProvider: (ipc) => ipc.getIdentityProvider("smithy.api#noAuth") || (async () => ({})), + signer: new core_2.NoAuthSigner(), + }, + ], + logger: config?.logger ?? new smithy_client_1.NoOpLogger(), + protocol: config?.protocol ?? protocols_1.AwsQueryProtocol, + protocolSettings: config?.protocolSettings ?? { + defaultNamespace: "com.amazonaws.sts", + errorTypeRegistries: schemas_0_1.errorTypeRegistries, + xmlNamespace: "https://sts.amazonaws.com/doc/2011-06-15/", + version: "2011-06-15", + serviceTarget: "AWSSecurityTokenServiceV20110615", + }, + serviceId: config?.serviceId ?? "STS", + urlParser: config?.urlParser ?? url_parser_1.parseUrl, + utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8, + utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8, + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeExtensions.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeExtensions.js new file mode 100644 index 000000000..a50ebec3f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeExtensions.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveRuntimeExtensions = void 0; +const region_config_resolver_1 = require("@aws-sdk/region-config-resolver"); +const protocol_http_1 = require("@smithy/protocol-http"); +const smithy_client_1 = require("@smithy/smithy-client"); +const httpAuthExtensionConfiguration_1 = require("./auth/httpAuthExtensionConfiguration"); +const resolveRuntimeExtensions = (runtimeConfig, extensions) => { + const extensionConfiguration = Object.assign((0, region_config_resolver_1.getAwsRegionExtensionConfiguration)(runtimeConfig), (0, smithy_client_1.getDefaultExtensionConfiguration)(runtimeConfig), (0, protocol_http_1.getHttpHandlerExtensionConfiguration)(runtimeConfig), (0, httpAuthExtensionConfiguration_1.getHttpAuthExtensionConfiguration)(runtimeConfig)); + extensions.forEach((extension) => extension.configure(extensionConfiguration)); + return Object.assign(runtimeConfig, (0, region_config_resolver_1.resolveAwsRegionExtensionConfiguration)(extensionConfiguration), (0, smithy_client_1.resolveDefaultRuntimeConfig)(extensionConfiguration), (0, protocol_http_1.resolveHttpHandlerRuntimeConfig)(extensionConfiguration), (0, httpAuthExtensionConfiguration_1.resolveHttpAuthRuntimeConfig)(extensionConfiguration)); +}; +exports.resolveRuntimeExtensions = resolveRuntimeExtensions; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/schemas/schemas_0.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/schemas/schemas_0.js new file mode 100644 index 000000000..2030a470f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/schemas/schemas_0.js @@ -0,0 +1,195 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AssumeRoleWithWebIdentity$ = exports.AssumeRole$ = exports.Tag$ = exports.ProvidedContext$ = exports.PolicyDescriptorType$ = exports.Credentials$ = exports.AssumeRoleWithWebIdentityResponse$ = exports.AssumeRoleWithWebIdentityRequest$ = exports.AssumeRoleResponse$ = exports.AssumeRoleRequest$ = exports.AssumedRoleUser$ = exports.errorTypeRegistries = exports.RegionDisabledException$ = exports.PackedPolicyTooLargeException$ = exports.MalformedPolicyDocumentException$ = exports.InvalidIdentityTokenException$ = exports.IDPRejectedClaimException$ = exports.IDPCommunicationErrorException$ = exports.ExpiredTokenException$ = exports.STSServiceException$ = void 0; +const _A = "Arn"; +const _AKI = "AccessKeyId"; +const _AR = "AssumeRole"; +const _ARI = "AssumedRoleId"; +const _ARR = "AssumeRoleRequest"; +const _ARRs = "AssumeRoleResponse"; +const _ARU = "AssumedRoleUser"; +const _ARWWI = "AssumeRoleWithWebIdentity"; +const _ARWWIR = "AssumeRoleWithWebIdentityRequest"; +const _ARWWIRs = "AssumeRoleWithWebIdentityResponse"; +const _Au = "Audience"; +const _C = "Credentials"; +const _CA = "ContextAssertion"; +const _DS = "DurationSeconds"; +const _E = "Expiration"; +const _EI = "ExternalId"; +const _ETE = "ExpiredTokenException"; +const _IDPCEE = "IDPCommunicationErrorException"; +const _IDPRCE = "IDPRejectedClaimException"; +const _IITE = "InvalidIdentityTokenException"; +const _K = "Key"; +const _MPDE = "MalformedPolicyDocumentException"; +const _P = "Policy"; +const _PA = "PolicyArns"; +const _PAr = "ProviderArn"; +const _PC = "ProvidedContexts"; +const _PCLT = "ProvidedContextsListType"; +const _PCr = "ProvidedContext"; +const _PDT = "PolicyDescriptorType"; +const _PI = "ProviderId"; +const _PPS = "PackedPolicySize"; +const _PPTLE = "PackedPolicyTooLargeException"; +const _Pr = "Provider"; +const _RA = "RoleArn"; +const _RDE = "RegionDisabledException"; +const _RSN = "RoleSessionName"; +const _SAK = "SecretAccessKey"; +const _SFWIT = "SubjectFromWebIdentityToken"; +const _SI = "SourceIdentity"; +const _SN = "SerialNumber"; +const _ST = "SessionToken"; +const _T = "Tags"; +const _TC = "TokenCode"; +const _TTK = "TransitiveTagKeys"; +const _Ta = "Tag"; +const _V = "Value"; +const _WIT = "WebIdentityToken"; +const _a = "arn"; +const _aKST = "accessKeySecretType"; +const _aQE = "awsQueryError"; +const _c = "client"; +const _cTT = "clientTokenType"; +const _e = "error"; +const _hE = "httpError"; +const _m = "message"; +const _pDLT = "policyDescriptorListType"; +const _s = "smithy.ts.sdk.synthetic.com.amazonaws.sts"; +const _tLT = "tagListType"; +const n0 = "com.amazonaws.sts"; +const schema_1 = require("@smithy/core/schema"); +const errors_1 = require("../models/errors"); +const STSServiceException_1 = require("../models/STSServiceException"); +const _s_registry = schema_1.TypeRegistry.for(_s); +exports.STSServiceException$ = [-3, _s, "STSServiceException", 0, [], []]; +_s_registry.registerError(exports.STSServiceException$, STSServiceException_1.STSServiceException); +const n0_registry = schema_1.TypeRegistry.for(n0); +exports.ExpiredTokenException$ = [ + -3, + n0, + _ETE, + { [_aQE]: [`ExpiredTokenException`, 400], [_e]: _c, [_hE]: 400 }, + [_m], + [0], +]; +n0_registry.registerError(exports.ExpiredTokenException$, errors_1.ExpiredTokenException); +exports.IDPCommunicationErrorException$ = [ + -3, + n0, + _IDPCEE, + { [_aQE]: [`IDPCommunicationError`, 400], [_e]: _c, [_hE]: 400 }, + [_m], + [0], +]; +n0_registry.registerError(exports.IDPCommunicationErrorException$, errors_1.IDPCommunicationErrorException); +exports.IDPRejectedClaimException$ = [ + -3, + n0, + _IDPRCE, + { [_aQE]: [`IDPRejectedClaim`, 403], [_e]: _c, [_hE]: 403 }, + [_m], + [0], +]; +n0_registry.registerError(exports.IDPRejectedClaimException$, errors_1.IDPRejectedClaimException); +exports.InvalidIdentityTokenException$ = [ + -3, + n0, + _IITE, + { [_aQE]: [`InvalidIdentityToken`, 400], [_e]: _c, [_hE]: 400 }, + [_m], + [0], +]; +n0_registry.registerError(exports.InvalidIdentityTokenException$, errors_1.InvalidIdentityTokenException); +exports.MalformedPolicyDocumentException$ = [ + -3, + n0, + _MPDE, + { [_aQE]: [`MalformedPolicyDocument`, 400], [_e]: _c, [_hE]: 400 }, + [_m], + [0], +]; +n0_registry.registerError(exports.MalformedPolicyDocumentException$, errors_1.MalformedPolicyDocumentException); +exports.PackedPolicyTooLargeException$ = [ + -3, + n0, + _PPTLE, + { [_aQE]: [`PackedPolicyTooLarge`, 400], [_e]: _c, [_hE]: 400 }, + [_m], + [0], +]; +n0_registry.registerError(exports.PackedPolicyTooLargeException$, errors_1.PackedPolicyTooLargeException); +exports.RegionDisabledException$ = [ + -3, + n0, + _RDE, + { [_aQE]: [`RegionDisabledException`, 403], [_e]: _c, [_hE]: 403 }, + [_m], + [0], +]; +n0_registry.registerError(exports.RegionDisabledException$, errors_1.RegionDisabledException); +exports.errorTypeRegistries = [_s_registry, n0_registry]; +var accessKeySecretType = [0, n0, _aKST, 8, 0]; +var clientTokenType = [0, n0, _cTT, 8, 0]; +exports.AssumedRoleUser$ = [3, n0, _ARU, 0, [_ARI, _A], [0, 0], 2]; +exports.AssumeRoleRequest$ = [ + 3, + n0, + _ARR, + 0, + [_RA, _RSN, _PA, _P, _DS, _T, _TTK, _EI, _SN, _TC, _SI, _PC], + [0, 0, () => policyDescriptorListType, 0, 1, () => tagListType, 64 | 0, 0, 0, 0, 0, () => ProvidedContextsListType], + 2, +]; +exports.AssumeRoleResponse$ = [ + 3, + n0, + _ARRs, + 0, + [_C, _ARU, _PPS, _SI], + [[() => exports.Credentials$, 0], () => exports.AssumedRoleUser$, 1, 0], +]; +exports.AssumeRoleWithWebIdentityRequest$ = [ + 3, + n0, + _ARWWIR, + 0, + [_RA, _RSN, _WIT, _PI, _PA, _P, _DS], + [0, 0, [() => clientTokenType, 0], 0, () => policyDescriptorListType, 0, 1], + 3, +]; +exports.AssumeRoleWithWebIdentityResponse$ = [ + 3, + n0, + _ARWWIRs, + 0, + [_C, _SFWIT, _ARU, _PPS, _Pr, _Au, _SI], + [[() => exports.Credentials$, 0], 0, () => exports.AssumedRoleUser$, 1, 0, 0, 0], +]; +exports.Credentials$ = [ + 3, + n0, + _C, + 0, + [_AKI, _SAK, _ST, _E], + [0, [() => accessKeySecretType, 0], 0, 4], + 4, +]; +exports.PolicyDescriptorType$ = [3, n0, _PDT, 0, [_a], [0]]; +exports.ProvidedContext$ = [3, n0, _PCr, 0, [_PAr, _CA], [0, 0]]; +exports.Tag$ = [3, n0, _Ta, 0, [_K, _V], [0, 0], 2]; +var policyDescriptorListType = [1, n0, _pDLT, 0, () => exports.PolicyDescriptorType$]; +var ProvidedContextsListType = [1, n0, _PCLT, 0, () => exports.ProvidedContext$]; +var tagKeyListType = 64 | 0; +var tagListType = [1, n0, _tLT, 0, () => exports.Tag$]; +exports.AssumeRole$ = [9, n0, _AR, 0, () => exports.AssumeRoleRequest$, () => exports.AssumeRoleResponse$]; +exports.AssumeRoleWithWebIdentity$ = [ + 9, + n0, + _ARWWI, + 0, + () => exports.AssumeRoleWithWebIdentityRequest$, + () => exports.AssumeRoleWithWebIdentityResponse$, +]; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/index.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/index.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/index.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/CognitoIdentity.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/CognitoIdentity.js new file mode 100644 index 000000000..bdc4724fb --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/CognitoIdentity.js @@ -0,0 +1,11 @@ +import { createAggregatedClient } from "@smithy/smithy-client"; +import { CognitoIdentityClient } from "./CognitoIdentityClient"; +import { GetCredentialsForIdentityCommand } from "./commands/GetCredentialsForIdentityCommand"; +import { GetIdCommand } from "./commands/GetIdCommand"; +const commands = { + GetCredentialsForIdentityCommand, + GetIdCommand, +}; +export class CognitoIdentity extends CognitoIdentityClient { +} +createAggregatedClient(commands, CognitoIdentity); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/CognitoIdentityClient.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/CognitoIdentityClient.js new file mode 100644 index 000000000..541375a08 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/CognitoIdentityClient.js @@ -0,0 +1,50 @@ +import { getHostHeaderPlugin, resolveHostHeaderConfig, } from "@aws-sdk/middleware-host-header"; +import { getLoggerPlugin } from "@aws-sdk/middleware-logger"; +import { getRecursionDetectionPlugin } from "@aws-sdk/middleware-recursion-detection"; +import { getUserAgentPlugin, resolveUserAgentConfig, } from "@aws-sdk/middleware-user-agent"; +import { resolveRegionConfig } from "@smithy/config-resolver"; +import { DefaultIdentityProviderConfig, getHttpAuthSchemeEndpointRuleSetPlugin, getHttpSigningPlugin, } from "@smithy/core"; +import { getSchemaSerdePlugin } from "@smithy/core/schema"; +import { getContentLengthPlugin } from "@smithy/middleware-content-length"; +import { resolveEndpointConfig, } from "@smithy/middleware-endpoint"; +import { getRetryPlugin, resolveRetryConfig, } from "@smithy/middleware-retry"; +import { Client as __Client, } from "@smithy/smithy-client"; +import { defaultCognitoIdentityHttpAuthSchemeParametersProvider, resolveHttpAuthSchemeConfig, } from "./auth/httpAuthSchemeProvider"; +import { resolveClientEndpointParameters } from "./endpoint/EndpointParameters"; +import { getRuntimeConfig as __getRuntimeConfig } from "./runtimeConfig"; +import { resolveRuntimeExtensions } from "./runtimeExtensions"; +export { __Client }; +export class CognitoIdentityClient extends __Client { + config; + constructor(...[configuration]) { + const _config_0 = __getRuntimeConfig(configuration || {}); + super(_config_0); + this.initConfig = _config_0; + const _config_1 = resolveClientEndpointParameters(_config_0); + const _config_2 = resolveUserAgentConfig(_config_1); + const _config_3 = resolveRetryConfig(_config_2); + const _config_4 = resolveRegionConfig(_config_3); + const _config_5 = resolveHostHeaderConfig(_config_4); + const _config_6 = resolveEndpointConfig(_config_5); + const _config_7 = resolveHttpAuthSchemeConfig(_config_6); + const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []); + this.config = _config_8; + this.middlewareStack.use(getSchemaSerdePlugin(this.config)); + this.middlewareStack.use(getUserAgentPlugin(this.config)); + this.middlewareStack.use(getRetryPlugin(this.config)); + this.middlewareStack.use(getContentLengthPlugin(this.config)); + this.middlewareStack.use(getHostHeaderPlugin(this.config)); + this.middlewareStack.use(getLoggerPlugin(this.config)); + this.middlewareStack.use(getRecursionDetectionPlugin(this.config)); + this.middlewareStack.use(getHttpAuthSchemeEndpointRuleSetPlugin(this.config, { + httpAuthSchemeParametersProvider: defaultCognitoIdentityHttpAuthSchemeParametersProvider, + identityProviderConfigProvider: async (config) => new DefaultIdentityProviderConfig({ + "aws.auth#sigv4": config.credentials, + }), + })); + this.middlewareStack.use(getHttpSigningPlugin(this.config)); + } + destroy() { + super.destroy(); + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/auth/httpAuthExtensionConfiguration.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/auth/httpAuthExtensionConfiguration.js new file mode 100644 index 000000000..2ba1d48c1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/auth/httpAuthExtensionConfiguration.js @@ -0,0 +1,38 @@ +export const getHttpAuthExtensionConfiguration = (runtimeConfig) => { + const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; + let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; + let _credentials = runtimeConfig.credentials; + return { + setHttpAuthScheme(httpAuthScheme) { + const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId); + if (index === -1) { + _httpAuthSchemes.push(httpAuthScheme); + } + else { + _httpAuthSchemes.splice(index, 1, httpAuthScheme); + } + }, + httpAuthSchemes() { + return _httpAuthSchemes; + }, + setHttpAuthSchemeProvider(httpAuthSchemeProvider) { + _httpAuthSchemeProvider = httpAuthSchemeProvider; + }, + httpAuthSchemeProvider() { + return _httpAuthSchemeProvider; + }, + setCredentials(credentials) { + _credentials = credentials; + }, + credentials() { + return _credentials; + }, + }; +}; +export const resolveHttpAuthRuntimeConfig = (config) => { + return { + httpAuthSchemes: config.httpAuthSchemes(), + httpAuthSchemeProvider: config.httpAuthSchemeProvider(), + credentials: config.credentials(), + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/auth/httpAuthSchemeProvider.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/auth/httpAuthSchemeProvider.js new file mode 100644 index 000000000..cd38c1f56 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/auth/httpAuthSchemeProvider.js @@ -0,0 +1,54 @@ +import { resolveAwsSdkSigV4Config } from "@aws-sdk/core"; +import { getSmithyContext, normalizeProvider } from "@smithy/util-middleware"; +export const defaultCognitoIdentityHttpAuthSchemeParametersProvider = async (config, context, input) => { + return { + operation: getSmithyContext(context).operation, + region: (await normalizeProvider(config.region)()) || + (() => { + throw new Error("expected `region` to be configured for `aws.auth#sigv4`"); + })(), + }; +}; +function createAwsAuthSigv4HttpAuthOption(authParameters) { + return { + schemeId: "aws.auth#sigv4", + signingProperties: { + name: "cognito-identity", + region: authParameters.region, + }, + propertiesExtractor: (config, context) => ({ + signingProperties: { + config, + context, + }, + }), + }; +} +function createSmithyApiNoAuthHttpAuthOption(authParameters) { + return { + schemeId: "smithy.api#noAuth", + }; +} +export const defaultCognitoIdentityHttpAuthSchemeProvider = (authParameters) => { + const options = []; + switch (authParameters.operation) { + case "GetCredentialsForIdentity": { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + case "GetId": { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + default: { + options.push(createAwsAuthSigv4HttpAuthOption(authParameters)); + } + } + return options; +}; +export const resolveHttpAuthSchemeConfig = (config) => { + const config_0 = resolveAwsSdkSigV4Config(config); + return Object.assign(config_0, { + authSchemePreference: normalizeProvider(config.authSchemePreference ?? []), + }); +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/commands/GetCredentialsForIdentityCommand.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/commands/GetCredentialsForIdentityCommand.js new file mode 100644 index 000000000..4c9e29fb2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/commands/GetCredentialsForIdentityCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetCredentialsForIdentity$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetCredentialsForIdentityCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "GetCredentialsForIdentity", {}) + .n("CognitoIdentityClient", "GetCredentialsForIdentityCommand") + .sc(GetCredentialsForIdentity$) + .build() { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/commands/GetIdCommand.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/commands/GetIdCommand.js new file mode 100644 index 000000000..312540552 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/commands/GetIdCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetId$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetIdCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "GetId", {}) + .n("CognitoIdentityClient", "GetIdCommand") + .sc(GetId$) + .build() { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/commands/index.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/commands/index.js new file mode 100644 index 000000000..dc560a4f9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/commands/index.js @@ -0,0 +1,2 @@ +export * from "./GetCredentialsForIdentityCommand"; +export * from "./GetIdCommand"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/endpoint/EndpointParameters.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/endpoint/EndpointParameters.js new file mode 100644 index 000000000..9cc09f055 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/endpoint/EndpointParameters.js @@ -0,0 +1,13 @@ +export const resolveClientEndpointParameters = (options) => { + return Object.assign(options, { + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + useFipsEndpoint: options.useFipsEndpoint ?? false, + defaultSigningName: "cognito-identity", + }); +}; +export const commonParams = { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }, +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/endpoint/endpointResolver.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/endpoint/endpointResolver.js new file mode 100644 index 000000000..0ac15bcde --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/endpoint/endpointResolver.js @@ -0,0 +1,14 @@ +import { awsEndpointFunctions } from "@aws-sdk/util-endpoints"; +import { customEndpointFunctions, EndpointCache, resolveEndpoint } from "@smithy/util-endpoints"; +import { ruleSet } from "./ruleset"; +const cache = new EndpointCache({ + size: 50, + params: ["Endpoint", "Region", "UseDualStack", "UseFIPS"], +}); +export const defaultEndpointResolver = (endpointParams, context = {}) => { + return cache.get(endpointParams, () => resolveEndpoint(ruleSet, { + endpointParams: endpointParams, + logger: context.logger, + })); +}; +customEndpointFunctions.aws = awsEndpointFunctions; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/endpoint/ruleset.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/endpoint/ruleset.js new file mode 100644 index 000000000..ad1ec5a9f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/endpoint/ruleset.js @@ -0,0 +1,143 @@ +const w = "required", x = "fn", y = "argv", z = "ref"; +const a = true, b = "isSet", c = "booleanEquals", d = "error", e = "endpoint", f = "tree", g = "PartitionResult", h = "getAttr", i = "stringEquals", j = { [w]: false, type: "string" }, k = { [w]: true, default: false, type: "boolean" }, l = { [z]: "Endpoint" }, m = { [x]: c, [y]: [{ [z]: "UseFIPS" }, true] }, n = { [x]: c, [y]: [{ [z]: "UseDualStack" }, true] }, o = {}, p = { [z]: "Region" }, q = { [x]: h, [y]: [{ [z]: g }, "supportsFIPS"] }, r = { [z]: g }, s = { [x]: c, [y]: [true, { [x]: h, [y]: [r, "supportsDualStack"] }] }, t = [m], u = [n], v = [p]; +const _data = { + version: "1.0", + parameters: { Region: j, UseDualStack: k, UseFIPS: k, Endpoint: j }, + rules: [ + { + conditions: [{ [x]: b, [y]: [l] }], + rules: [ + { conditions: t, error: "Invalid Configuration: FIPS and custom endpoint are not supported", type: d }, + { conditions: u, error: "Invalid Configuration: Dualstack and custom endpoint are not supported", type: d }, + { endpoint: { url: l, properties: o, headers: o }, type: e }, + ], + type: f, + }, + { + conditions: [{ [x]: b, [y]: v }], + rules: [ + { + conditions: [{ [x]: "aws.partition", [y]: v, assign: g }], + rules: [ + { + conditions: [m, n], + rules: [ + { + conditions: [{ [x]: c, [y]: [a, q] }, s], + rules: [ + { + conditions: [{ [x]: i, [y]: [p, "us-east-1"] }], + endpoint: { + url: "https://cognito-identity-fips.us-east-1.amazonaws.com", + properties: o, + headers: o, + }, + type: e, + }, + { + conditions: [{ [x]: i, [y]: [p, "us-east-2"] }], + endpoint: { + url: "https://cognito-identity-fips.us-east-2.amazonaws.com", + properties: o, + headers: o, + }, + type: e, + }, + { + conditions: [{ [x]: i, [y]: [p, "us-west-1"] }], + endpoint: { + url: "https://cognito-identity-fips.us-west-1.amazonaws.com", + properties: o, + headers: o, + }, + type: e, + }, + { + conditions: [{ [x]: i, [y]: [p, "us-west-2"] }], + endpoint: { + url: "https://cognito-identity-fips.us-west-2.amazonaws.com", + properties: o, + headers: o, + }, + type: e, + }, + { + endpoint: { + url: "https://cognito-identity-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: o, + headers: o, + }, + type: e, + }, + ], + type: f, + }, + { error: "FIPS and DualStack are enabled, but this partition does not support one or both", type: d }, + ], + type: f, + }, + { + conditions: t, + rules: [ + { + conditions: [{ [x]: c, [y]: [q, a] }], + rules: [ + { + endpoint: { + url: "https://cognito-identity-fips.{Region}.{PartitionResult#dnsSuffix}", + properties: o, + headers: o, + }, + type: e, + }, + ], + type: f, + }, + { error: "FIPS is enabled but this partition does not support FIPS", type: d }, + ], + type: f, + }, + { + conditions: u, + rules: [ + { + conditions: [s], + rules: [ + { + conditions: [{ [x]: i, [y]: ["aws", { [x]: h, [y]: [r, "name"] }] }], + endpoint: { url: "https://cognito-identity.{Region}.amazonaws.com", properties: o, headers: o }, + type: e, + }, + { + endpoint: { + url: "https://cognito-identity.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: o, + headers: o, + }, + type: e, + }, + ], + type: f, + }, + { error: "DualStack is enabled but this partition does not support DualStack", type: d }, + ], + type: f, + }, + { + endpoint: { + url: "https://cognito-identity.{Region}.{PartitionResult#dnsSuffix}", + properties: o, + headers: o, + }, + type: e, + }, + ], + type: f, + }, + ], + type: f, + }, + { error: "Invalid Configuration: Missing Region", type: d }, + ], +}; +export const ruleSet = _data; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/extensionConfiguration.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/extensionConfiguration.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/extensionConfiguration.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/index.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/index.js new file mode 100644 index 000000000..0fa61578c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/index.js @@ -0,0 +1,7 @@ +export * from "./CognitoIdentityClient"; +export * from "./CognitoIdentity"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./models/errors"; +export * from "./models/models_0"; +export { CognitoIdentityServiceException } from "./models/CognitoIdentityServiceException"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/models/CognitoIdentityServiceException.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/models/CognitoIdentityServiceException.js new file mode 100644 index 000000000..09c7613d5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/models/CognitoIdentityServiceException.js @@ -0,0 +1,8 @@ +import { ServiceException as __ServiceException, } from "@smithy/smithy-client"; +export { __ServiceException }; +export class CognitoIdentityServiceException extends __ServiceException { + constructor(options) { + super(options); + Object.setPrototypeOf(this, CognitoIdentityServiceException.prototype); + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/models/errors.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/models/errors.js new file mode 100644 index 000000000..2f386d9c5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/models/errors.js @@ -0,0 +1,109 @@ +import { CognitoIdentityServiceException as __BaseException } from "./CognitoIdentityServiceException"; +export class ExternalServiceException extends __BaseException { + name = "ExternalServiceException"; + $fault = "client"; + constructor(opts) { + super({ + name: "ExternalServiceException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ExternalServiceException.prototype); + } +} +export class InternalErrorException extends __BaseException { + name = "InternalErrorException"; + $fault = "server"; + constructor(opts) { + super({ + name: "InternalErrorException", + $fault: "server", + ...opts, + }); + Object.setPrototypeOf(this, InternalErrorException.prototype); + } +} +export class InvalidIdentityPoolConfigurationException extends __BaseException { + name = "InvalidIdentityPoolConfigurationException"; + $fault = "client"; + constructor(opts) { + super({ + name: "InvalidIdentityPoolConfigurationException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidIdentityPoolConfigurationException.prototype); + } +} +export class InvalidParameterException extends __BaseException { + name = "InvalidParameterException"; + $fault = "client"; + constructor(opts) { + super({ + name: "InvalidParameterException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidParameterException.prototype); + } +} +export class NotAuthorizedException extends __BaseException { + name = "NotAuthorizedException"; + $fault = "client"; + constructor(opts) { + super({ + name: "NotAuthorizedException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, NotAuthorizedException.prototype); + } +} +export class ResourceConflictException extends __BaseException { + name = "ResourceConflictException"; + $fault = "client"; + constructor(opts) { + super({ + name: "ResourceConflictException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ResourceConflictException.prototype); + } +} +export class ResourceNotFoundException extends __BaseException { + name = "ResourceNotFoundException"; + $fault = "client"; + constructor(opts) { + super({ + name: "ResourceNotFoundException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ResourceNotFoundException.prototype); + } +} +export class TooManyRequestsException extends __BaseException { + name = "TooManyRequestsException"; + $fault = "client"; + constructor(opts) { + super({ + name: "TooManyRequestsException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, TooManyRequestsException.prototype); + } +} +export class LimitExceededException extends __BaseException { + name = "LimitExceededException"; + $fault = "client"; + constructor(opts) { + super({ + name: "LimitExceededException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, LimitExceededException.prototype); + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/models/models_0.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/models/models_0.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/models/models_0.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.browser.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.browser.js new file mode 100644 index 000000000..d14723592 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.browser.js @@ -0,0 +1,33 @@ +import packageInfo from "../../../package.json"; +import { Sha256 } from "@aws-crypto/sha256-browser"; +import { createDefaultUserAgentProvider } from "@aws-sdk/util-user-agent-browser"; +import { DEFAULT_USE_DUALSTACK_ENDPOINT, DEFAULT_USE_FIPS_ENDPOINT } from "@smithy/config-resolver"; +import { FetchHttpHandler as RequestHandler, streamCollector } from "@smithy/fetch-http-handler"; +import { invalidProvider } from "@smithy/invalid-dependency"; +import { loadConfigsForDefaultMode } from "@smithy/smithy-client"; +import { calculateBodyLength } from "@smithy/util-body-length-browser"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-browser"; +import { DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_MODE } from "@smithy/util-retry"; +import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; +export const getRuntimeConfig = (config) => { + const defaultsMode = resolveDefaultsModeConfig(config); + const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode); + const clientSharedValues = getSharedRuntimeConfig(config); + return { + ...clientSharedValues, + ...config, + runtime: "browser", + defaultsMode, + bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }), + maxAttempts: config?.maxAttempts ?? DEFAULT_MAX_ATTEMPTS, + region: config?.region ?? invalidProvider("Region is missing"), + requestHandler: RequestHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? (async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE), + sha256: config?.sha256 ?? Sha256, + streamCollector: config?.streamCollector ?? streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (() => Promise.resolve(DEFAULT_USE_DUALSTACK_ENDPOINT)), + useFipsEndpoint: config?.useFipsEndpoint ?? (() => Promise.resolve(DEFAULT_USE_FIPS_ENDPOINT)), + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.js new file mode 100644 index 000000000..5f33517b1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.js @@ -0,0 +1,48 @@ +import packageInfo from "../../../package.json"; +import { emitWarningIfUnsupportedVersion as awsCheckVersion, NODE_AUTH_SCHEME_PREFERENCE_OPTIONS } from "@aws-sdk/core"; +import { createDefaultUserAgentProvider, NODE_APP_ID_CONFIG_OPTIONS } from "@aws-sdk/util-user-agent-node"; +import { NODE_REGION_CONFIG_FILE_OPTIONS, NODE_REGION_CONFIG_OPTIONS, NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, } from "@smithy/config-resolver"; +import { Hash } from "@smithy/hash-node"; +import { NODE_MAX_ATTEMPT_CONFIG_OPTIONS, NODE_RETRY_MODE_CONFIG_OPTIONS } from "@smithy/middleware-retry"; +import { loadConfig as loadNodeConfig } from "@smithy/node-config-provider"; +import { NodeHttpHandler as RequestHandler, streamCollector } from "@smithy/node-http-handler"; +import { emitWarningIfUnsupportedVersion, loadConfigsForDefaultMode } from "@smithy/smithy-client"; +import { calculateBodyLength } from "@smithy/util-body-length-node"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-node"; +import { DEFAULT_RETRY_MODE } from "@smithy/util-retry"; +import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; +export const getRuntimeConfig = (config) => { + emitWarningIfUnsupportedVersion(process.version); + const defaultsMode = resolveDefaultsModeConfig(config); + const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode); + const clientSharedValues = getSharedRuntimeConfig(config); + awsCheckVersion(process.version); + const loaderConfig = { + profile: config?.profile, + logger: clientSharedValues.logger, + }; + return { + ...clientSharedValues, + ...config, + runtime: "node", + defaultsMode, + authSchemePreference: config?.authSchemePreference ?? loadNodeConfig(NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig), + bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }), + maxAttempts: config?.maxAttempts ?? loadNodeConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config), + region: config?.region ?? + loadNodeConfig(NODE_REGION_CONFIG_OPTIONS, { ...NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }), + requestHandler: RequestHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? + loadNodeConfig({ + ...NODE_RETRY_MODE_CONFIG_OPTIONS, + default: async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE, + }, config), + sha256: config?.sha256 ?? Hash.bind(null, "sha256"), + streamCollector: config?.streamCollector ?? streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? loadNodeConfig(NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + useFipsEndpoint: config?.useFipsEndpoint ?? loadNodeConfig(NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + userAgentAppId: config?.userAgentAppId ?? loadNodeConfig(NODE_APP_ID_CONFIG_OPTIONS, loaderConfig), + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.native.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.native.js new file mode 100644 index 000000000..0b5469528 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.native.js @@ -0,0 +1,11 @@ +import { Sha256 } from "@aws-crypto/sha256-js"; +import { getRuntimeConfig as getBrowserRuntimeConfig } from "./runtimeConfig.browser"; +export const getRuntimeConfig = (config) => { + const browserDefaults = getBrowserRuntimeConfig(config); + return { + ...browserDefaults, + ...config, + runtime: "react-native", + sha256: config?.sha256 ?? Sha256, + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.shared.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.shared.js new file mode 100644 index 000000000..81fd07a45 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.shared.js @@ -0,0 +1,46 @@ +import { AwsSdkSigV4Signer } from "@aws-sdk/core"; +import { AwsJson1_1Protocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; +import { NoOpLogger } from "@smithy/smithy-client"; +import { parseUrl } from "@smithy/url-parser"; +import { fromBase64, toBase64 } from "@smithy/util-base64"; +import { fromUtf8, toUtf8 } from "@smithy/util-utf8"; +import { defaultCognitoIdentityHttpAuthSchemeProvider } from "./auth/httpAuthSchemeProvider"; +import { defaultEndpointResolver } from "./endpoint/endpointResolver"; +import { errorTypeRegistries } from "./schemas/schemas_0"; +export const getRuntimeConfig = (config) => { + return { + apiVersion: "2014-06-30", + base64Decoder: config?.base64Decoder ?? fromBase64, + base64Encoder: config?.base64Encoder ?? toBase64, + disableHostPrefix: config?.disableHostPrefix ?? false, + endpointProvider: config?.endpointProvider ?? defaultEndpointResolver, + extensions: config?.extensions ?? [], + httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? defaultCognitoIdentityHttpAuthSchemeProvider, + httpAuthSchemes: config?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: (ipc) => ipc.getIdentityProvider("aws.auth#sigv4"), + signer: new AwsSdkSigV4Signer(), + }, + { + schemeId: "smithy.api#noAuth", + identityProvider: (ipc) => ipc.getIdentityProvider("smithy.api#noAuth") || (async () => ({})), + signer: new NoAuthSigner(), + }, + ], + logger: config?.logger ?? new NoOpLogger(), + protocol: config?.protocol ?? AwsJson1_1Protocol, + protocolSettings: config?.protocolSettings ?? { + defaultNamespace: "com.amazonaws.cognitoidentity", + errorTypeRegistries, + xmlNamespace: "http://cognito-identity.amazonaws.com/doc/2014-06-30/", + version: "2014-06-30", + serviceTarget: "AWSCognitoIdentityService", + }, + serviceId: config?.serviceId ?? "Cognito Identity", + urlParser: config?.urlParser ?? parseUrl, + utf8Decoder: config?.utf8Decoder ?? fromUtf8, + utf8Encoder: config?.utf8Encoder ?? toUtf8, + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeExtensions.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeExtensions.js new file mode 100644 index 000000000..5b296950d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeExtensions.js @@ -0,0 +1,9 @@ +import { getAwsRegionExtensionConfiguration, resolveAwsRegionExtensionConfiguration, } from "@aws-sdk/region-config-resolver"; +import { getHttpHandlerExtensionConfiguration, resolveHttpHandlerRuntimeConfig } from "@smithy/protocol-http"; +import { getDefaultExtensionConfiguration, resolveDefaultRuntimeConfig } from "@smithy/smithy-client"; +import { getHttpAuthExtensionConfiguration, resolveHttpAuthRuntimeConfig } from "./auth/httpAuthExtensionConfiguration"; +export const resolveRuntimeExtensions = (runtimeConfig, extensions) => { + const extensionConfiguration = Object.assign(getAwsRegionExtensionConfiguration(runtimeConfig), getDefaultExtensionConfiguration(runtimeConfig), getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig)); + extensions.forEach((extension) => extension.configure(extensionConfiguration)); + return Object.assign(runtimeConfig, resolveAwsRegionExtensionConfiguration(extensionConfiguration), resolveDefaultRuntimeConfig(extensionConfiguration), resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration)); +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/schemas/schemas_0.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/schemas/schemas_0.js new file mode 100644 index 000000000..d69ca8798 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/schemas/schemas_0.js @@ -0,0 +1,107 @@ +const _AI = "AccountId"; +const _AKI = "AccessKeyId"; +const _C = "Credentials"; +const _CRA = "CustomRoleArn"; +const _E = "Expiration"; +const _ESE = "ExternalServiceException"; +const _GCFI = "GetCredentialsForIdentity"; +const _GCFII = "GetCredentialsForIdentityInput"; +const _GCFIR = "GetCredentialsForIdentityResponse"; +const _GI = "GetId"; +const _GII = "GetIdInput"; +const _GIR = "GetIdResponse"; +const _IEE = "InternalErrorException"; +const _II = "IdentityId"; +const _IIPCE = "InvalidIdentityPoolConfigurationException"; +const _IPE = "InvalidParameterException"; +const _IPI = "IdentityPoolId"; +const _IPT = "IdentityProviderToken"; +const _L = "Logins"; +const _LEE = "LimitExceededException"; +const _LM = "LoginsMap"; +const _NAE = "NotAuthorizedException"; +const _RCE = "ResourceConflictException"; +const _RNFE = "ResourceNotFoundException"; +const _SK = "SecretKey"; +const _SKS = "SecretKeyString"; +const _ST = "SessionToken"; +const _TMRE = "TooManyRequestsException"; +const _c = "client"; +const _e = "error"; +const _hE = "httpError"; +const _m = "message"; +const _s = "smithy.ts.sdk.synthetic.com.amazonaws.cognitoidentity"; +const _se = "server"; +const n0 = "com.amazonaws.cognitoidentity"; +import { TypeRegistry } from "@smithy/core/schema"; +import { CognitoIdentityServiceException } from "../models/CognitoIdentityServiceException"; +import { ExternalServiceException, InternalErrorException, InvalidIdentityPoolConfigurationException, InvalidParameterException, LimitExceededException, NotAuthorizedException, ResourceConflictException, ResourceNotFoundException, TooManyRequestsException, } from "../models/errors"; +const _s_registry = TypeRegistry.for(_s); +export var CognitoIdentityServiceException$ = [-3, _s, "CognitoIdentityServiceException", 0, [], []]; +_s_registry.registerError(CognitoIdentityServiceException$, CognitoIdentityServiceException); +const n0_registry = TypeRegistry.for(n0); +export var ExternalServiceException$ = [-3, n0, _ESE, { [_e]: _c, [_hE]: 400 }, [_m], [0]]; +n0_registry.registerError(ExternalServiceException$, ExternalServiceException); +export var InternalErrorException$ = [-3, n0, _IEE, { [_e]: _se }, [_m], [0]]; +n0_registry.registerError(InternalErrorException$, InternalErrorException); +export var InvalidIdentityPoolConfigurationException$ = [ + -3, + n0, + _IIPCE, + { [_e]: _c, [_hE]: 400 }, + [_m], + [0], +]; +n0_registry.registerError(InvalidIdentityPoolConfigurationException$, InvalidIdentityPoolConfigurationException); +export var InvalidParameterException$ = [-3, n0, _IPE, { [_e]: _c, [_hE]: 400 }, [_m], [0]]; +n0_registry.registerError(InvalidParameterException$, InvalidParameterException); +export var LimitExceededException$ = [-3, n0, _LEE, { [_e]: _c, [_hE]: 400 }, [_m], [0]]; +n0_registry.registerError(LimitExceededException$, LimitExceededException); +export var NotAuthorizedException$ = [-3, n0, _NAE, { [_e]: _c, [_hE]: 403 }, [_m], [0]]; +n0_registry.registerError(NotAuthorizedException$, NotAuthorizedException); +export var ResourceConflictException$ = [-3, n0, _RCE, { [_e]: _c, [_hE]: 409 }, [_m], [0]]; +n0_registry.registerError(ResourceConflictException$, ResourceConflictException); +export var ResourceNotFoundException$ = [-3, n0, _RNFE, { [_e]: _c, [_hE]: 404 }, [_m], [0]]; +n0_registry.registerError(ResourceNotFoundException$, ResourceNotFoundException); +export var TooManyRequestsException$ = [-3, n0, _TMRE, { [_e]: _c, [_hE]: 429 }, [_m], [0]]; +n0_registry.registerError(TooManyRequestsException$, TooManyRequestsException); +export const errorTypeRegistries = [_s_registry, n0_registry]; +var IdentityProviderToken = [0, n0, _IPT, 8, 0]; +var SecretKeyString = [0, n0, _SKS, 8, 0]; +export var Credentials$ = [ + 3, + n0, + _C, + 0, + [_AKI, _SK, _ST, _E], + [0, [() => SecretKeyString, 0], 0, 4], +]; +export var GetCredentialsForIdentityInput$ = [ + 3, + n0, + _GCFII, + 0, + [_II, _L, _CRA], + [0, [() => LoginsMap, 0], 0], + 1, +]; +export var GetCredentialsForIdentityResponse$ = [ + 3, + n0, + _GCFIR, + 0, + [_II, _C], + [0, [() => Credentials$, 0]], +]; +export var GetIdInput$ = [3, n0, _GII, 0, [_IPI, _AI, _L], [0, 0, [() => LoginsMap, 0]], 1]; +export var GetIdResponse$ = [3, n0, _GIR, 0, [_II], [0]]; +var LoginsMap = [2, n0, _LM, 0, [0, 0], [() => IdentityProviderToken, 0]]; +export var GetCredentialsForIdentity$ = [ + 9, + n0, + _GCFI, + 0, + () => GetCredentialsForIdentityInput$, + () => GetCredentialsForIdentityResponse$, +]; +export var GetId$ = [9, n0, _GI, 0, () => GetIdInput$, () => GetIdResponse$]; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/Signin.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/Signin.js new file mode 100644 index 000000000..70ddb11b6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/Signin.js @@ -0,0 +1,9 @@ +import { createAggregatedClient } from "@smithy/smithy-client"; +import { CreateOAuth2TokenCommand } from "./commands/CreateOAuth2TokenCommand"; +import { SigninClient } from "./SigninClient"; +const commands = { + CreateOAuth2TokenCommand, +}; +export class Signin extends SigninClient { +} +createAggregatedClient(commands, Signin); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/SigninClient.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/SigninClient.js new file mode 100644 index 000000000..1f27b752b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/SigninClient.js @@ -0,0 +1,50 @@ +import { getHostHeaderPlugin, resolveHostHeaderConfig, } from "@aws-sdk/middleware-host-header"; +import { getLoggerPlugin } from "@aws-sdk/middleware-logger"; +import { getRecursionDetectionPlugin } from "@aws-sdk/middleware-recursion-detection"; +import { getUserAgentPlugin, resolveUserAgentConfig, } from "@aws-sdk/middleware-user-agent"; +import { resolveRegionConfig } from "@smithy/config-resolver"; +import { DefaultIdentityProviderConfig, getHttpAuthSchemeEndpointRuleSetPlugin, getHttpSigningPlugin, } from "@smithy/core"; +import { getSchemaSerdePlugin } from "@smithy/core/schema"; +import { getContentLengthPlugin } from "@smithy/middleware-content-length"; +import { resolveEndpointConfig, } from "@smithy/middleware-endpoint"; +import { getRetryPlugin, resolveRetryConfig, } from "@smithy/middleware-retry"; +import { Client as __Client, } from "@smithy/smithy-client"; +import { defaultSigninHttpAuthSchemeParametersProvider, resolveHttpAuthSchemeConfig, } from "./auth/httpAuthSchemeProvider"; +import { resolveClientEndpointParameters } from "./endpoint/EndpointParameters"; +import { getRuntimeConfig as __getRuntimeConfig } from "./runtimeConfig"; +import { resolveRuntimeExtensions } from "./runtimeExtensions"; +export { __Client }; +export class SigninClient extends __Client { + config; + constructor(...[configuration]) { + const _config_0 = __getRuntimeConfig(configuration || {}); + super(_config_0); + this.initConfig = _config_0; + const _config_1 = resolveClientEndpointParameters(_config_0); + const _config_2 = resolveUserAgentConfig(_config_1); + const _config_3 = resolveRetryConfig(_config_2); + const _config_4 = resolveRegionConfig(_config_3); + const _config_5 = resolveHostHeaderConfig(_config_4); + const _config_6 = resolveEndpointConfig(_config_5); + const _config_7 = resolveHttpAuthSchemeConfig(_config_6); + const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []); + this.config = _config_8; + this.middlewareStack.use(getSchemaSerdePlugin(this.config)); + this.middlewareStack.use(getUserAgentPlugin(this.config)); + this.middlewareStack.use(getRetryPlugin(this.config)); + this.middlewareStack.use(getContentLengthPlugin(this.config)); + this.middlewareStack.use(getHostHeaderPlugin(this.config)); + this.middlewareStack.use(getLoggerPlugin(this.config)); + this.middlewareStack.use(getRecursionDetectionPlugin(this.config)); + this.middlewareStack.use(getHttpAuthSchemeEndpointRuleSetPlugin(this.config, { + httpAuthSchemeParametersProvider: defaultSigninHttpAuthSchemeParametersProvider, + identityProviderConfigProvider: async (config) => new DefaultIdentityProviderConfig({ + "aws.auth#sigv4": config.credentials, + }), + })); + this.middlewareStack.use(getHttpSigningPlugin(this.config)); + } + destroy() { + super.destroy(); + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/auth/httpAuthExtensionConfiguration.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/auth/httpAuthExtensionConfiguration.js new file mode 100644 index 000000000..2ba1d48c1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/auth/httpAuthExtensionConfiguration.js @@ -0,0 +1,38 @@ +export const getHttpAuthExtensionConfiguration = (runtimeConfig) => { + const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; + let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; + let _credentials = runtimeConfig.credentials; + return { + setHttpAuthScheme(httpAuthScheme) { + const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId); + if (index === -1) { + _httpAuthSchemes.push(httpAuthScheme); + } + else { + _httpAuthSchemes.splice(index, 1, httpAuthScheme); + } + }, + httpAuthSchemes() { + return _httpAuthSchemes; + }, + setHttpAuthSchemeProvider(httpAuthSchemeProvider) { + _httpAuthSchemeProvider = httpAuthSchemeProvider; + }, + httpAuthSchemeProvider() { + return _httpAuthSchemeProvider; + }, + setCredentials(credentials) { + _credentials = credentials; + }, + credentials() { + return _credentials; + }, + }; +}; +export const resolveHttpAuthRuntimeConfig = (config) => { + return { + httpAuthSchemes: config.httpAuthSchemes(), + httpAuthSchemeProvider: config.httpAuthSchemeProvider(), + credentials: config.credentials(), + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/auth/httpAuthSchemeProvider.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/auth/httpAuthSchemeProvider.js new file mode 100644 index 000000000..915bb492c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/auth/httpAuthSchemeProvider.js @@ -0,0 +1,50 @@ +import { resolveAwsSdkSigV4Config } from "@aws-sdk/core"; +import { getSmithyContext, normalizeProvider } from "@smithy/util-middleware"; +export const defaultSigninHttpAuthSchemeParametersProvider = async (config, context, input) => { + return { + operation: getSmithyContext(context).operation, + region: (await normalizeProvider(config.region)()) || + (() => { + throw new Error("expected `region` to be configured for `aws.auth#sigv4`"); + })(), + }; +}; +function createAwsAuthSigv4HttpAuthOption(authParameters) { + return { + schemeId: "aws.auth#sigv4", + signingProperties: { + name: "signin", + region: authParameters.region, + }, + propertiesExtractor: (config, context) => ({ + signingProperties: { + config, + context, + }, + }), + }; +} +function createSmithyApiNoAuthHttpAuthOption(authParameters) { + return { + schemeId: "smithy.api#noAuth", + }; +} +export const defaultSigninHttpAuthSchemeProvider = (authParameters) => { + const options = []; + switch (authParameters.operation) { + case "CreateOAuth2Token": { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + default: { + options.push(createAwsAuthSigv4HttpAuthOption(authParameters)); + } + } + return options; +}; +export const resolveHttpAuthSchemeConfig = (config) => { + const config_0 = resolveAwsSdkSigV4Config(config); + return Object.assign(config_0, { + authSchemePreference: normalizeProvider(config.authSchemePreference ?? []), + }); +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/commands/CreateOAuth2TokenCommand.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/commands/CreateOAuth2TokenCommand.js new file mode 100644 index 000000000..155b4c43b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/commands/CreateOAuth2TokenCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { CreateOAuth2Token$ } from "../schemas/schemas_0"; +export { $Command }; +export class CreateOAuth2TokenCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("Signin", "CreateOAuth2Token", {}) + .n("SigninClient", "CreateOAuth2TokenCommand") + .sc(CreateOAuth2Token$) + .build() { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/commands/index.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/commands/index.js new file mode 100644 index 000000000..d32e4a315 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/commands/index.js @@ -0,0 +1 @@ +export * from "./CreateOAuth2TokenCommand"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/EndpointParameters.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/EndpointParameters.js new file mode 100644 index 000000000..c6b9ec74d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/EndpointParameters.js @@ -0,0 +1,13 @@ +export const resolveClientEndpointParameters = (options) => { + return Object.assign(options, { + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + useFipsEndpoint: options.useFipsEndpoint ?? false, + defaultSigningName: "signin", + }); +}; +export const commonParams = { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }, +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/endpointResolver.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/endpointResolver.js new file mode 100644 index 000000000..0ac15bcde --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/endpointResolver.js @@ -0,0 +1,14 @@ +import { awsEndpointFunctions } from "@aws-sdk/util-endpoints"; +import { customEndpointFunctions, EndpointCache, resolveEndpoint } from "@smithy/util-endpoints"; +import { ruleSet } from "./ruleset"; +const cache = new EndpointCache({ + size: 50, + params: ["Endpoint", "Region", "UseDualStack", "UseFIPS"], +}); +export const defaultEndpointResolver = (endpointParams, context = {}) => { + return cache.get(endpointParams, () => resolveEndpoint(ruleSet, { + endpointParams: endpointParams, + logger: context.logger, + })); +}; +customEndpointFunctions.aws = awsEndpointFunctions; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/ruleset.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/ruleset.js new file mode 100644 index 000000000..ff1161402 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/ruleset.js @@ -0,0 +1,130 @@ +const u = "required", v = "fn", w = "argv", x = "ref"; +const a = true, b = "isSet", c = "booleanEquals", d = "error", e = "endpoint", f = "tree", g = "PartitionResult", h = "stringEquals", i = { [u]: true, default: false, type: "boolean" }, j = { [u]: false, type: "string" }, k = { [x]: "Endpoint" }, l = { [v]: c, [w]: [{ [x]: "UseFIPS" }, true] }, m = { [v]: c, [w]: [{ [x]: "UseDualStack" }, true] }, n = {}, o = { [v]: "getAttr", [w]: [{ [x]: g }, "name"] }, p = { [v]: c, [w]: [{ [x]: "UseFIPS" }, false] }, q = { [v]: c, [w]: [{ [x]: "UseDualStack" }, false] }, r = { [v]: "getAttr", [w]: [{ [x]: g }, "supportsFIPS"] }, s = { [v]: c, [w]: [true, { [v]: "getAttr", [w]: [{ [x]: g }, "supportsDualStack"] }] }, t = [{ [x]: "Region" }]; +const _data = { + version: "1.0", + parameters: { UseDualStack: i, UseFIPS: i, Endpoint: j, Region: j }, + rules: [ + { + conditions: [{ [v]: b, [w]: [k] }], + rules: [ + { conditions: [l], error: "Invalid Configuration: FIPS and custom endpoint are not supported", type: d }, + { + rules: [ + { + conditions: [m], + error: "Invalid Configuration: Dualstack and custom endpoint are not supported", + type: d, + }, + { endpoint: { url: k, properties: n, headers: n }, type: e }, + ], + type: f, + }, + ], + type: f, + }, + { + rules: [ + { + conditions: [{ [v]: b, [w]: t }], + rules: [ + { + conditions: [{ [v]: "aws.partition", [w]: t, assign: g }], + rules: [ + { + conditions: [{ [v]: h, [w]: [o, "aws"] }, p, q], + endpoint: { url: "https://{Region}.signin.aws.amazon.com", properties: n, headers: n }, + type: e, + }, + { + conditions: [{ [v]: h, [w]: [o, "aws-cn"] }, p, q], + endpoint: { url: "https://{Region}.signin.amazonaws.cn", properties: n, headers: n }, + type: e, + }, + { + conditions: [{ [v]: h, [w]: [o, "aws-us-gov"] }, p, q], + endpoint: { url: "https://{Region}.signin.amazonaws-us-gov.com", properties: n, headers: n }, + type: e, + }, + { + conditions: [l, m], + rules: [ + { + conditions: [{ [v]: c, [w]: [a, r] }, s], + rules: [ + { + endpoint: { + url: "https://signin-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { + error: "FIPS and DualStack are enabled, but this partition does not support one or both", + type: d, + }, + ], + type: f, + }, + { + conditions: [l, q], + rules: [ + { + conditions: [{ [v]: c, [w]: [r, a] }], + rules: [ + { + endpoint: { + url: "https://signin-fips.{Region}.{PartitionResult#dnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { error: "FIPS is enabled but this partition does not support FIPS", type: d }, + ], + type: f, + }, + { + conditions: [p, m], + rules: [ + { + conditions: [s], + rules: [ + { + endpoint: { + url: "https://signin.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { error: "DualStack is enabled but this partition does not support DualStack", type: d }, + ], + type: f, + }, + { + endpoint: { url: "https://signin.{Region}.{PartitionResult#dnsSuffix}", properties: n, headers: n }, + type: e, + }, + ], + type: f, + }, + ], + type: f, + }, + { error: "Invalid Configuration: Missing Region", type: d }, + ], + type: f, + }, + ], +}; +export const ruleSet = _data; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/extensionConfiguration.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/extensionConfiguration.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/extensionConfiguration.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/index.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/index.js new file mode 100644 index 000000000..9051da478 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/index.js @@ -0,0 +1,8 @@ +export * from "./SigninClient"; +export * from "./Signin"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./models/enums"; +export * from "./models/errors"; +export * from "./models/models_0"; +export { SigninServiceException } from "./models/SigninServiceException"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/SigninServiceException.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/SigninServiceException.js new file mode 100644 index 000000000..b931766f2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/SigninServiceException.js @@ -0,0 +1,8 @@ +import { ServiceException as __ServiceException, } from "@smithy/smithy-client"; +export { __ServiceException }; +export class SigninServiceException extends __ServiceException { + constructor(options) { + super(options); + Object.setPrototypeOf(this, SigninServiceException.prototype); + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/enums.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/enums.js new file mode 100644 index 000000000..8e379e32b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/enums.js @@ -0,0 +1,8 @@ +export const OAuth2ErrorCode = { + AUTHCODE_EXPIRED: "AUTHCODE_EXPIRED", + INSUFFICIENT_PERMISSIONS: "INSUFFICIENT_PERMISSIONS", + INVALID_REQUEST: "INVALID_REQUEST", + SERVER_ERROR: "server_error", + TOKEN_EXPIRED: "TOKEN_EXPIRED", + USER_CREDENTIALS_CHANGED: "USER_CREDENTIALS_CHANGED", +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/errors.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/errors.js new file mode 100644 index 000000000..97974bbfc --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/errors.js @@ -0,0 +1,57 @@ +import { SigninServiceException as __BaseException } from "./SigninServiceException"; +export class AccessDeniedException extends __BaseException { + name = "AccessDeniedException"; + $fault = "client"; + error; + constructor(opts) { + super({ + name: "AccessDeniedException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, AccessDeniedException.prototype); + this.error = opts.error; + } +} +export class InternalServerException extends __BaseException { + name = "InternalServerException"; + $fault = "server"; + error; + constructor(opts) { + super({ + name: "InternalServerException", + $fault: "server", + ...opts, + }); + Object.setPrototypeOf(this, InternalServerException.prototype); + this.error = opts.error; + } +} +export class TooManyRequestsError extends __BaseException { + name = "TooManyRequestsError"; + $fault = "client"; + error; + constructor(opts) { + super({ + name: "TooManyRequestsError", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, TooManyRequestsError.prototype); + this.error = opts.error; + } +} +export class ValidationException extends __BaseException { + name = "ValidationException"; + $fault = "client"; + error; + constructor(opts) { + super({ + name: "ValidationException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ValidationException.prototype); + this.error = opts.error; + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/models_0.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/models_0.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/models_0.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.browser.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.browser.js new file mode 100644 index 000000000..2102cbdaa --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.browser.js @@ -0,0 +1,34 @@ +import packageInfo from "../../../package.json"; +import { Sha256 } from "@aws-crypto/sha256-browser"; +import { createDefaultUserAgentProvider } from "@aws-sdk/util-user-agent-browser"; +import { DEFAULT_USE_DUALSTACK_ENDPOINT, DEFAULT_USE_FIPS_ENDPOINT } from "@smithy/config-resolver"; +import { FetchHttpHandler as RequestHandler, streamCollector } from "@smithy/fetch-http-handler"; +import { invalidProvider } from "@smithy/invalid-dependency"; +import { loadConfigsForDefaultMode } from "@smithy/smithy-client"; +import { calculateBodyLength } from "@smithy/util-body-length-browser"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-browser"; +import { DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_MODE } from "@smithy/util-retry"; +import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; +export const getRuntimeConfig = (config) => { + const defaultsMode = resolveDefaultsModeConfig(config); + const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode); + const clientSharedValues = getSharedRuntimeConfig(config); + return { + ...clientSharedValues, + ...config, + runtime: "browser", + defaultsMode, + bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength, + credentialDefaultProvider: config?.credentialDefaultProvider ?? ((_) => () => Promise.reject(new Error("Credential is missing"))), + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }), + maxAttempts: config?.maxAttempts ?? DEFAULT_MAX_ATTEMPTS, + region: config?.region ?? invalidProvider("Region is missing"), + requestHandler: RequestHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? (async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE), + sha256: config?.sha256 ?? Sha256, + streamCollector: config?.streamCollector ?? streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (() => Promise.resolve(DEFAULT_USE_DUALSTACK_ENDPOINT)), + useFipsEndpoint: config?.useFipsEndpoint ?? (() => Promise.resolve(DEFAULT_USE_FIPS_ENDPOINT)), + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.js new file mode 100644 index 000000000..5f33517b1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.js @@ -0,0 +1,48 @@ +import packageInfo from "../../../package.json"; +import { emitWarningIfUnsupportedVersion as awsCheckVersion, NODE_AUTH_SCHEME_PREFERENCE_OPTIONS } from "@aws-sdk/core"; +import { createDefaultUserAgentProvider, NODE_APP_ID_CONFIG_OPTIONS } from "@aws-sdk/util-user-agent-node"; +import { NODE_REGION_CONFIG_FILE_OPTIONS, NODE_REGION_CONFIG_OPTIONS, NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, } from "@smithy/config-resolver"; +import { Hash } from "@smithy/hash-node"; +import { NODE_MAX_ATTEMPT_CONFIG_OPTIONS, NODE_RETRY_MODE_CONFIG_OPTIONS } from "@smithy/middleware-retry"; +import { loadConfig as loadNodeConfig } from "@smithy/node-config-provider"; +import { NodeHttpHandler as RequestHandler, streamCollector } from "@smithy/node-http-handler"; +import { emitWarningIfUnsupportedVersion, loadConfigsForDefaultMode } from "@smithy/smithy-client"; +import { calculateBodyLength } from "@smithy/util-body-length-node"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-node"; +import { DEFAULT_RETRY_MODE } from "@smithy/util-retry"; +import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; +export const getRuntimeConfig = (config) => { + emitWarningIfUnsupportedVersion(process.version); + const defaultsMode = resolveDefaultsModeConfig(config); + const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode); + const clientSharedValues = getSharedRuntimeConfig(config); + awsCheckVersion(process.version); + const loaderConfig = { + profile: config?.profile, + logger: clientSharedValues.logger, + }; + return { + ...clientSharedValues, + ...config, + runtime: "node", + defaultsMode, + authSchemePreference: config?.authSchemePreference ?? loadNodeConfig(NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig), + bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }), + maxAttempts: config?.maxAttempts ?? loadNodeConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config), + region: config?.region ?? + loadNodeConfig(NODE_REGION_CONFIG_OPTIONS, { ...NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }), + requestHandler: RequestHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? + loadNodeConfig({ + ...NODE_RETRY_MODE_CONFIG_OPTIONS, + default: async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE, + }, config), + sha256: config?.sha256 ?? Hash.bind(null, "sha256"), + streamCollector: config?.streamCollector ?? streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? loadNodeConfig(NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + useFipsEndpoint: config?.useFipsEndpoint ?? loadNodeConfig(NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + userAgentAppId: config?.userAgentAppId ?? loadNodeConfig(NODE_APP_ID_CONFIG_OPTIONS, loaderConfig), + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.native.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.native.js new file mode 100644 index 000000000..0b5469528 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.native.js @@ -0,0 +1,11 @@ +import { Sha256 } from "@aws-crypto/sha256-js"; +import { getRuntimeConfig as getBrowserRuntimeConfig } from "./runtimeConfig.browser"; +export const getRuntimeConfig = (config) => { + const browserDefaults = getBrowserRuntimeConfig(config); + return { + ...browserDefaults, + ...config, + runtime: "react-native", + sha256: config?.sha256 ?? Sha256, + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.shared.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.shared.js new file mode 100644 index 000000000..ed7fed200 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.shared.js @@ -0,0 +1,45 @@ +import { AwsSdkSigV4Signer } from "@aws-sdk/core"; +import { AwsRestJsonProtocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; +import { NoOpLogger } from "@smithy/smithy-client"; +import { parseUrl } from "@smithy/url-parser"; +import { fromBase64, toBase64 } from "@smithy/util-base64"; +import { fromUtf8, toUtf8 } from "@smithy/util-utf8"; +import { defaultSigninHttpAuthSchemeProvider } from "./auth/httpAuthSchemeProvider"; +import { defaultEndpointResolver } from "./endpoint/endpointResolver"; +import { errorTypeRegistries } from "./schemas/schemas_0"; +export const getRuntimeConfig = (config) => { + return { + apiVersion: "2023-01-01", + base64Decoder: config?.base64Decoder ?? fromBase64, + base64Encoder: config?.base64Encoder ?? toBase64, + disableHostPrefix: config?.disableHostPrefix ?? false, + endpointProvider: config?.endpointProvider ?? defaultEndpointResolver, + extensions: config?.extensions ?? [], + httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? defaultSigninHttpAuthSchemeProvider, + httpAuthSchemes: config?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: (ipc) => ipc.getIdentityProvider("aws.auth#sigv4"), + signer: new AwsSdkSigV4Signer(), + }, + { + schemeId: "smithy.api#noAuth", + identityProvider: (ipc) => ipc.getIdentityProvider("smithy.api#noAuth") || (async () => ({})), + signer: new NoAuthSigner(), + }, + ], + logger: config?.logger ?? new NoOpLogger(), + protocol: config?.protocol ?? AwsRestJsonProtocol, + protocolSettings: config?.protocolSettings ?? { + defaultNamespace: "com.amazonaws.signin", + errorTypeRegistries, + version: "2023-01-01", + serviceTarget: "Signin", + }, + serviceId: config?.serviceId ?? "Signin", + urlParser: config?.urlParser ?? parseUrl, + utf8Decoder: config?.utf8Decoder ?? fromUtf8, + utf8Encoder: config?.utf8Encoder ?? toUtf8, + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeExtensions.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeExtensions.js new file mode 100644 index 000000000..5b296950d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeExtensions.js @@ -0,0 +1,9 @@ +import { getAwsRegionExtensionConfiguration, resolveAwsRegionExtensionConfiguration, } from "@aws-sdk/region-config-resolver"; +import { getHttpHandlerExtensionConfiguration, resolveHttpHandlerRuntimeConfig } from "@smithy/protocol-http"; +import { getDefaultExtensionConfiguration, resolveDefaultRuntimeConfig } from "@smithy/smithy-client"; +import { getHttpAuthExtensionConfiguration, resolveHttpAuthRuntimeConfig } from "./auth/httpAuthExtensionConfiguration"; +export const resolveRuntimeExtensions = (runtimeConfig, extensions) => { + const extensionConfiguration = Object.assign(getAwsRegionExtensionConfiguration(runtimeConfig), getDefaultExtensionConfiguration(runtimeConfig), getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig)); + extensions.forEach((extension) => extension.configure(extensionConfiguration)); + return Object.assign(runtimeConfig, resolveAwsRegionExtensionConfiguration(extensionConfiguration), resolveDefaultRuntimeConfig(extensionConfiguration), resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration)); +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/schemas/schemas_0.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/schemas/schemas_0.js new file mode 100644 index 000000000..b2920942a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/schemas/schemas_0.js @@ -0,0 +1,122 @@ +const _ADE = "AccessDeniedException"; +const _AT = "AccessToken"; +const _COAT = "CreateOAuth2Token"; +const _COATR = "CreateOAuth2TokenRequest"; +const _COATRB = "CreateOAuth2TokenRequestBody"; +const _COATRBr = "CreateOAuth2TokenResponseBody"; +const _COATRr = "CreateOAuth2TokenResponse"; +const _ISE = "InternalServerException"; +const _RT = "RefreshToken"; +const _TMRE = "TooManyRequestsError"; +const _VE = "ValidationException"; +const _aKI = "accessKeyId"; +const _aT = "accessToken"; +const _c = "client"; +const _cI = "clientId"; +const _cV = "codeVerifier"; +const _co = "code"; +const _e = "error"; +const _eI = "expiresIn"; +const _gT = "grantType"; +const _h = "http"; +const _hE = "httpError"; +const _iT = "idToken"; +const _jN = "jsonName"; +const _m = "message"; +const _rT = "refreshToken"; +const _rU = "redirectUri"; +const _s = "smithy.ts.sdk.synthetic.com.amazonaws.signin"; +const _sAK = "secretAccessKey"; +const _sT = "sessionToken"; +const _se = "server"; +const _tI = "tokenInput"; +const _tO = "tokenOutput"; +const _tT = "tokenType"; +const n0 = "com.amazonaws.signin"; +import { TypeRegistry } from "@smithy/core/schema"; +import { AccessDeniedException, InternalServerException, TooManyRequestsError, ValidationException, } from "../models/errors"; +import { SigninServiceException } from "../models/SigninServiceException"; +const _s_registry = TypeRegistry.for(_s); +export var SigninServiceException$ = [-3, _s, "SigninServiceException", 0, [], []]; +_s_registry.registerError(SigninServiceException$, SigninServiceException); +const n0_registry = TypeRegistry.for(n0); +export var AccessDeniedException$ = [-3, n0, _ADE, { [_e]: _c }, [_e, _m], [0, 0], 2]; +n0_registry.registerError(AccessDeniedException$, AccessDeniedException); +export var InternalServerException$ = [-3, n0, _ISE, { [_e]: _se, [_hE]: 500 }, [_e, _m], [0, 0], 2]; +n0_registry.registerError(InternalServerException$, InternalServerException); +export var TooManyRequestsError$ = [-3, n0, _TMRE, { [_e]: _c, [_hE]: 429 }, [_e, _m], [0, 0], 2]; +n0_registry.registerError(TooManyRequestsError$, TooManyRequestsError); +export var ValidationException$ = [-3, n0, _VE, { [_e]: _c, [_hE]: 400 }, [_e, _m], [0, 0], 2]; +n0_registry.registerError(ValidationException$, ValidationException); +export const errorTypeRegistries = [_s_registry, n0_registry]; +var RefreshToken = [0, n0, _RT, 8, 0]; +export var AccessToken$ = [ + 3, + n0, + _AT, + 8, + [_aKI, _sAK, _sT], + [ + [0, { [_jN]: _aKI }], + [0, { [_jN]: _sAK }], + [0, { [_jN]: _sT }], + ], + 3, +]; +export var CreateOAuth2TokenRequest$ = [ + 3, + n0, + _COATR, + 0, + [_tI], + [[() => CreateOAuth2TokenRequestBody$, 16]], + 1, +]; +export var CreateOAuth2TokenRequestBody$ = [ + 3, + n0, + _COATRB, + 0, + [_cI, _gT, _co, _rU, _cV, _rT], + [ + [0, { [_jN]: _cI }], + [0, { [_jN]: _gT }], + 0, + [0, { [_jN]: _rU }], + [0, { [_jN]: _cV }], + [() => RefreshToken, { [_jN]: _rT }], + ], + 2, +]; +export var CreateOAuth2TokenResponse$ = [ + 3, + n0, + _COATRr, + 0, + [_tO], + [[() => CreateOAuth2TokenResponseBody$, 16]], + 1, +]; +export var CreateOAuth2TokenResponseBody$ = [ + 3, + n0, + _COATRBr, + 0, + [_aT, _tT, _eI, _rT, _iT], + [ + [() => AccessToken$, { [_jN]: _aT }], + [0, { [_jN]: _tT }], + [1, { [_jN]: _eI }], + [() => RefreshToken, { [_jN]: _rT }], + [0, { [_jN]: _iT }], + ], + 4, +]; +export var CreateOAuth2Token$ = [ + 9, + n0, + _COAT, + { [_h]: ["POST", "/v1/token", 200] }, + () => CreateOAuth2TokenRequest$, + () => CreateOAuth2TokenResponse$, +]; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/SSOOIDC.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/SSOOIDC.js new file mode 100644 index 000000000..bcb161f2a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/SSOOIDC.js @@ -0,0 +1,9 @@ +import { createAggregatedClient } from "@smithy/smithy-client"; +import { CreateTokenCommand } from "./commands/CreateTokenCommand"; +import { SSOOIDCClient } from "./SSOOIDCClient"; +const commands = { + CreateTokenCommand, +}; +export class SSOOIDC extends SSOOIDCClient { +} +createAggregatedClient(commands, SSOOIDC); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/SSOOIDCClient.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/SSOOIDCClient.js new file mode 100644 index 000000000..8d7e0edf4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/SSOOIDCClient.js @@ -0,0 +1,50 @@ +import { getHostHeaderPlugin, resolveHostHeaderConfig, } from "@aws-sdk/middleware-host-header"; +import { getLoggerPlugin } from "@aws-sdk/middleware-logger"; +import { getRecursionDetectionPlugin } from "@aws-sdk/middleware-recursion-detection"; +import { getUserAgentPlugin, resolveUserAgentConfig, } from "@aws-sdk/middleware-user-agent"; +import { resolveRegionConfig } from "@smithy/config-resolver"; +import { DefaultIdentityProviderConfig, getHttpAuthSchemeEndpointRuleSetPlugin, getHttpSigningPlugin, } from "@smithy/core"; +import { getSchemaSerdePlugin } from "@smithy/core/schema"; +import { getContentLengthPlugin } from "@smithy/middleware-content-length"; +import { resolveEndpointConfig, } from "@smithy/middleware-endpoint"; +import { getRetryPlugin, resolveRetryConfig, } from "@smithy/middleware-retry"; +import { Client as __Client, } from "@smithy/smithy-client"; +import { defaultSSOOIDCHttpAuthSchemeParametersProvider, resolveHttpAuthSchemeConfig, } from "./auth/httpAuthSchemeProvider"; +import { resolveClientEndpointParameters } from "./endpoint/EndpointParameters"; +import { getRuntimeConfig as __getRuntimeConfig } from "./runtimeConfig"; +import { resolveRuntimeExtensions } from "./runtimeExtensions"; +export { __Client }; +export class SSOOIDCClient extends __Client { + config; + constructor(...[configuration]) { + const _config_0 = __getRuntimeConfig(configuration || {}); + super(_config_0); + this.initConfig = _config_0; + const _config_1 = resolveClientEndpointParameters(_config_0); + const _config_2 = resolveUserAgentConfig(_config_1); + const _config_3 = resolveRetryConfig(_config_2); + const _config_4 = resolveRegionConfig(_config_3); + const _config_5 = resolveHostHeaderConfig(_config_4); + const _config_6 = resolveEndpointConfig(_config_5); + const _config_7 = resolveHttpAuthSchemeConfig(_config_6); + const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []); + this.config = _config_8; + this.middlewareStack.use(getSchemaSerdePlugin(this.config)); + this.middlewareStack.use(getUserAgentPlugin(this.config)); + this.middlewareStack.use(getRetryPlugin(this.config)); + this.middlewareStack.use(getContentLengthPlugin(this.config)); + this.middlewareStack.use(getHostHeaderPlugin(this.config)); + this.middlewareStack.use(getLoggerPlugin(this.config)); + this.middlewareStack.use(getRecursionDetectionPlugin(this.config)); + this.middlewareStack.use(getHttpAuthSchemeEndpointRuleSetPlugin(this.config, { + httpAuthSchemeParametersProvider: defaultSSOOIDCHttpAuthSchemeParametersProvider, + identityProviderConfigProvider: async (config) => new DefaultIdentityProviderConfig({ + "aws.auth#sigv4": config.credentials, + }), + })); + this.middlewareStack.use(getHttpSigningPlugin(this.config)); + } + destroy() { + super.destroy(); + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/auth/httpAuthExtensionConfiguration.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/auth/httpAuthExtensionConfiguration.js new file mode 100644 index 000000000..2ba1d48c1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/auth/httpAuthExtensionConfiguration.js @@ -0,0 +1,38 @@ +export const getHttpAuthExtensionConfiguration = (runtimeConfig) => { + const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; + let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; + let _credentials = runtimeConfig.credentials; + return { + setHttpAuthScheme(httpAuthScheme) { + const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId); + if (index === -1) { + _httpAuthSchemes.push(httpAuthScheme); + } + else { + _httpAuthSchemes.splice(index, 1, httpAuthScheme); + } + }, + httpAuthSchemes() { + return _httpAuthSchemes; + }, + setHttpAuthSchemeProvider(httpAuthSchemeProvider) { + _httpAuthSchemeProvider = httpAuthSchemeProvider; + }, + httpAuthSchemeProvider() { + return _httpAuthSchemeProvider; + }, + setCredentials(credentials) { + _credentials = credentials; + }, + credentials() { + return _credentials; + }, + }; +}; +export const resolveHttpAuthRuntimeConfig = (config) => { + return { + httpAuthSchemes: config.httpAuthSchemes(), + httpAuthSchemeProvider: config.httpAuthSchemeProvider(), + credentials: config.credentials(), + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/auth/httpAuthSchemeProvider.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/auth/httpAuthSchemeProvider.js new file mode 100644 index 000000000..6f7213f9a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/auth/httpAuthSchemeProvider.js @@ -0,0 +1,50 @@ +import { resolveAwsSdkSigV4Config } from "@aws-sdk/core"; +import { getSmithyContext, normalizeProvider } from "@smithy/util-middleware"; +export const defaultSSOOIDCHttpAuthSchemeParametersProvider = async (config, context, input) => { + return { + operation: getSmithyContext(context).operation, + region: (await normalizeProvider(config.region)()) || + (() => { + throw new Error("expected `region` to be configured for `aws.auth#sigv4`"); + })(), + }; +}; +function createAwsAuthSigv4HttpAuthOption(authParameters) { + return { + schemeId: "aws.auth#sigv4", + signingProperties: { + name: "sso-oauth", + region: authParameters.region, + }, + propertiesExtractor: (config, context) => ({ + signingProperties: { + config, + context, + }, + }), + }; +} +function createSmithyApiNoAuthHttpAuthOption(authParameters) { + return { + schemeId: "smithy.api#noAuth", + }; +} +export const defaultSSOOIDCHttpAuthSchemeProvider = (authParameters) => { + const options = []; + switch (authParameters.operation) { + case "CreateToken": { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + default: { + options.push(createAwsAuthSigv4HttpAuthOption(authParameters)); + } + } + return options; +}; +export const resolveHttpAuthSchemeConfig = (config) => { + const config_0 = resolveAwsSdkSigV4Config(config); + return Object.assign(config_0, { + authSchemePreference: normalizeProvider(config.authSchemePreference ?? []), + }); +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/commands/CreateTokenCommand.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/commands/CreateTokenCommand.js new file mode 100644 index 000000000..b8e1755bb --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/commands/CreateTokenCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { CreateToken$ } from "../schemas/schemas_0"; +export { $Command }; +export class CreateTokenCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSSSOOIDCService", "CreateToken", {}) + .n("SSOOIDCClient", "CreateTokenCommand") + .sc(CreateToken$) + .build() { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/commands/index.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/commands/index.js new file mode 100644 index 000000000..09214caef --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/commands/index.js @@ -0,0 +1 @@ +export * from "./CreateTokenCommand"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/EndpointParameters.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/EndpointParameters.js new file mode 100644 index 000000000..2b26c4433 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/EndpointParameters.js @@ -0,0 +1,13 @@ +export const resolveClientEndpointParameters = (options) => { + return Object.assign(options, { + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + useFipsEndpoint: options.useFipsEndpoint ?? false, + defaultSigningName: "sso-oauth", + }); +}; +export const commonParams = { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }, +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/endpointResolver.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/endpointResolver.js new file mode 100644 index 000000000..0ac15bcde --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/endpointResolver.js @@ -0,0 +1,14 @@ +import { awsEndpointFunctions } from "@aws-sdk/util-endpoints"; +import { customEndpointFunctions, EndpointCache, resolveEndpoint } from "@smithy/util-endpoints"; +import { ruleSet } from "./ruleset"; +const cache = new EndpointCache({ + size: 50, + params: ["Endpoint", "Region", "UseDualStack", "UseFIPS"], +}); +export const defaultEndpointResolver = (endpointParams, context = {}) => { + return cache.get(endpointParams, () => resolveEndpoint(ruleSet, { + endpointParams: endpointParams, + logger: context.logger, + })); +}; +customEndpointFunctions.aws = awsEndpointFunctions; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/ruleset.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/ruleset.js new file mode 100644 index 000000000..f1bec7b21 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/ruleset.js @@ -0,0 +1,103 @@ +const u = "required", v = "fn", w = "argv", x = "ref"; +const a = true, b = "isSet", c = "booleanEquals", d = "error", e = "endpoint", f = "tree", g = "PartitionResult", h = "getAttr", i = { [u]: false, type: "string" }, j = { [u]: true, default: false, type: "boolean" }, k = { [x]: "Endpoint" }, l = { [v]: c, [w]: [{ [x]: "UseFIPS" }, true] }, m = { [v]: c, [w]: [{ [x]: "UseDualStack" }, true] }, n = {}, o = { [v]: h, [w]: [{ [x]: g }, "supportsFIPS"] }, p = { [x]: g }, q = { [v]: c, [w]: [true, { [v]: h, [w]: [p, "supportsDualStack"] }] }, r = [l], s = [m], t = [{ [x]: "Region" }]; +const _data = { + version: "1.0", + parameters: { Region: i, UseDualStack: j, UseFIPS: j, Endpoint: i }, + rules: [ + { + conditions: [{ [v]: b, [w]: [k] }], + rules: [ + { conditions: r, error: "Invalid Configuration: FIPS and custom endpoint are not supported", type: d }, + { conditions: s, error: "Invalid Configuration: Dualstack and custom endpoint are not supported", type: d }, + { endpoint: { url: k, properties: n, headers: n }, type: e }, + ], + type: f, + }, + { + conditions: [{ [v]: b, [w]: t }], + rules: [ + { + conditions: [{ [v]: "aws.partition", [w]: t, assign: g }], + rules: [ + { + conditions: [l, m], + rules: [ + { + conditions: [{ [v]: c, [w]: [a, o] }, q], + rules: [ + { + endpoint: { + url: "https://oidc-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { error: "FIPS and DualStack are enabled, but this partition does not support one or both", type: d }, + ], + type: f, + }, + { + conditions: r, + rules: [ + { + conditions: [{ [v]: c, [w]: [o, a] }], + rules: [ + { + conditions: [{ [v]: "stringEquals", [w]: [{ [v]: h, [w]: [p, "name"] }, "aws-us-gov"] }], + endpoint: { url: "https://oidc.{Region}.amazonaws.com", properties: n, headers: n }, + type: e, + }, + { + endpoint: { + url: "https://oidc-fips.{Region}.{PartitionResult#dnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { error: "FIPS is enabled but this partition does not support FIPS", type: d }, + ], + type: f, + }, + { + conditions: s, + rules: [ + { + conditions: [q], + rules: [ + { + endpoint: { + url: "https://oidc.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { error: "DualStack is enabled but this partition does not support DualStack", type: d }, + ], + type: f, + }, + { + endpoint: { url: "https://oidc.{Region}.{PartitionResult#dnsSuffix}", properties: n, headers: n }, + type: e, + }, + ], + type: f, + }, + ], + type: f, + }, + { error: "Invalid Configuration: Missing Region", type: d }, + ], +}; +export const ruleSet = _data; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/extensionConfiguration.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/extensionConfiguration.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/extensionConfiguration.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/index.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/index.js new file mode 100644 index 000000000..1da522c05 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/index.js @@ -0,0 +1,8 @@ +export * from "./SSOOIDCClient"; +export * from "./SSOOIDC"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./models/enums"; +export * from "./models/errors"; +export * from "./models/models_0"; +export { SSOOIDCServiceException } from "./models/SSOOIDCServiceException"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/SSOOIDCServiceException.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/SSOOIDCServiceException.js new file mode 100644 index 000000000..176cec3f5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/SSOOIDCServiceException.js @@ -0,0 +1,8 @@ +import { ServiceException as __ServiceException, } from "@smithy/smithy-client"; +export { __ServiceException }; +export class SSOOIDCServiceException extends __ServiceException { + constructor(options) { + super(options); + Object.setPrototypeOf(this, SSOOIDCServiceException.prototype); + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/enums.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/enums.js new file mode 100644 index 000000000..aab18c94f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/enums.js @@ -0,0 +1,9 @@ +export const AccessDeniedExceptionReason = { + KMS_ACCESS_DENIED: "KMS_AccessDeniedException", +}; +export const InvalidRequestExceptionReason = { + KMS_DISABLED_KEY: "KMS_DisabledException", + KMS_INVALID_KEY_USAGE: "KMS_InvalidKeyUsageException", + KMS_INVALID_STATE: "KMS_InvalidStateException", + KMS_KEY_NOT_FOUND: "KMS_NotFoundException", +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/errors.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/errors.js new file mode 100644 index 000000000..be72c7f91 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/errors.js @@ -0,0 +1,181 @@ +import { SSOOIDCServiceException as __BaseException } from "./SSOOIDCServiceException"; +export class AccessDeniedException extends __BaseException { + name = "AccessDeniedException"; + $fault = "client"; + error; + reason; + error_description; + constructor(opts) { + super({ + name: "AccessDeniedException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, AccessDeniedException.prototype); + this.error = opts.error; + this.reason = opts.reason; + this.error_description = opts.error_description; + } +} +export class AuthorizationPendingException extends __BaseException { + name = "AuthorizationPendingException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "AuthorizationPendingException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, AuthorizationPendingException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +export class ExpiredTokenException extends __BaseException { + name = "ExpiredTokenException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "ExpiredTokenException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ExpiredTokenException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +export class InternalServerException extends __BaseException { + name = "InternalServerException"; + $fault = "server"; + error; + error_description; + constructor(opts) { + super({ + name: "InternalServerException", + $fault: "server", + ...opts, + }); + Object.setPrototypeOf(this, InternalServerException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +export class InvalidClientException extends __BaseException { + name = "InvalidClientException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "InvalidClientException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidClientException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +export class InvalidGrantException extends __BaseException { + name = "InvalidGrantException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "InvalidGrantException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidGrantException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +export class InvalidRequestException extends __BaseException { + name = "InvalidRequestException"; + $fault = "client"; + error; + reason; + error_description; + constructor(opts) { + super({ + name: "InvalidRequestException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidRequestException.prototype); + this.error = opts.error; + this.reason = opts.reason; + this.error_description = opts.error_description; + } +} +export class InvalidScopeException extends __BaseException { + name = "InvalidScopeException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "InvalidScopeException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidScopeException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +export class SlowDownException extends __BaseException { + name = "SlowDownException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "SlowDownException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, SlowDownException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +export class UnauthorizedClientException extends __BaseException { + name = "UnauthorizedClientException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "UnauthorizedClientException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, UnauthorizedClientException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +export class UnsupportedGrantTypeException extends __BaseException { + name = "UnsupportedGrantTypeException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "UnsupportedGrantTypeException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, UnsupportedGrantTypeException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/models_0.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/models_0.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/models_0.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.browser.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.browser.js new file mode 100644 index 000000000..d14723592 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.browser.js @@ -0,0 +1,33 @@ +import packageInfo from "../../../package.json"; +import { Sha256 } from "@aws-crypto/sha256-browser"; +import { createDefaultUserAgentProvider } from "@aws-sdk/util-user-agent-browser"; +import { DEFAULT_USE_DUALSTACK_ENDPOINT, DEFAULT_USE_FIPS_ENDPOINT } from "@smithy/config-resolver"; +import { FetchHttpHandler as RequestHandler, streamCollector } from "@smithy/fetch-http-handler"; +import { invalidProvider } from "@smithy/invalid-dependency"; +import { loadConfigsForDefaultMode } from "@smithy/smithy-client"; +import { calculateBodyLength } from "@smithy/util-body-length-browser"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-browser"; +import { DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_MODE } from "@smithy/util-retry"; +import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; +export const getRuntimeConfig = (config) => { + const defaultsMode = resolveDefaultsModeConfig(config); + const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode); + const clientSharedValues = getSharedRuntimeConfig(config); + return { + ...clientSharedValues, + ...config, + runtime: "browser", + defaultsMode, + bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }), + maxAttempts: config?.maxAttempts ?? DEFAULT_MAX_ATTEMPTS, + region: config?.region ?? invalidProvider("Region is missing"), + requestHandler: RequestHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? (async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE), + sha256: config?.sha256 ?? Sha256, + streamCollector: config?.streamCollector ?? streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (() => Promise.resolve(DEFAULT_USE_DUALSTACK_ENDPOINT)), + useFipsEndpoint: config?.useFipsEndpoint ?? (() => Promise.resolve(DEFAULT_USE_FIPS_ENDPOINT)), + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.js new file mode 100644 index 000000000..5f33517b1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.js @@ -0,0 +1,48 @@ +import packageInfo from "../../../package.json"; +import { emitWarningIfUnsupportedVersion as awsCheckVersion, NODE_AUTH_SCHEME_PREFERENCE_OPTIONS } from "@aws-sdk/core"; +import { createDefaultUserAgentProvider, NODE_APP_ID_CONFIG_OPTIONS } from "@aws-sdk/util-user-agent-node"; +import { NODE_REGION_CONFIG_FILE_OPTIONS, NODE_REGION_CONFIG_OPTIONS, NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, } from "@smithy/config-resolver"; +import { Hash } from "@smithy/hash-node"; +import { NODE_MAX_ATTEMPT_CONFIG_OPTIONS, NODE_RETRY_MODE_CONFIG_OPTIONS } from "@smithy/middleware-retry"; +import { loadConfig as loadNodeConfig } from "@smithy/node-config-provider"; +import { NodeHttpHandler as RequestHandler, streamCollector } from "@smithy/node-http-handler"; +import { emitWarningIfUnsupportedVersion, loadConfigsForDefaultMode } from "@smithy/smithy-client"; +import { calculateBodyLength } from "@smithy/util-body-length-node"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-node"; +import { DEFAULT_RETRY_MODE } from "@smithy/util-retry"; +import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; +export const getRuntimeConfig = (config) => { + emitWarningIfUnsupportedVersion(process.version); + const defaultsMode = resolveDefaultsModeConfig(config); + const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode); + const clientSharedValues = getSharedRuntimeConfig(config); + awsCheckVersion(process.version); + const loaderConfig = { + profile: config?.profile, + logger: clientSharedValues.logger, + }; + return { + ...clientSharedValues, + ...config, + runtime: "node", + defaultsMode, + authSchemePreference: config?.authSchemePreference ?? loadNodeConfig(NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig), + bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }), + maxAttempts: config?.maxAttempts ?? loadNodeConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config), + region: config?.region ?? + loadNodeConfig(NODE_REGION_CONFIG_OPTIONS, { ...NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }), + requestHandler: RequestHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? + loadNodeConfig({ + ...NODE_RETRY_MODE_CONFIG_OPTIONS, + default: async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE, + }, config), + sha256: config?.sha256 ?? Hash.bind(null, "sha256"), + streamCollector: config?.streamCollector ?? streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? loadNodeConfig(NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + useFipsEndpoint: config?.useFipsEndpoint ?? loadNodeConfig(NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + userAgentAppId: config?.userAgentAppId ?? loadNodeConfig(NODE_APP_ID_CONFIG_OPTIONS, loaderConfig), + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.native.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.native.js new file mode 100644 index 000000000..0b5469528 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.native.js @@ -0,0 +1,11 @@ +import { Sha256 } from "@aws-crypto/sha256-js"; +import { getRuntimeConfig as getBrowserRuntimeConfig } from "./runtimeConfig.browser"; +export const getRuntimeConfig = (config) => { + const browserDefaults = getBrowserRuntimeConfig(config); + return { + ...browserDefaults, + ...config, + runtime: "react-native", + sha256: config?.sha256 ?? Sha256, + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.shared.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.shared.js new file mode 100644 index 000000000..edca23463 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.shared.js @@ -0,0 +1,45 @@ +import { AwsSdkSigV4Signer } from "@aws-sdk/core"; +import { AwsRestJsonProtocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; +import { NoOpLogger } from "@smithy/smithy-client"; +import { parseUrl } from "@smithy/url-parser"; +import { fromBase64, toBase64 } from "@smithy/util-base64"; +import { fromUtf8, toUtf8 } from "@smithy/util-utf8"; +import { defaultSSOOIDCHttpAuthSchemeProvider } from "./auth/httpAuthSchemeProvider"; +import { defaultEndpointResolver } from "./endpoint/endpointResolver"; +import { errorTypeRegistries } from "./schemas/schemas_0"; +export const getRuntimeConfig = (config) => { + return { + apiVersion: "2019-06-10", + base64Decoder: config?.base64Decoder ?? fromBase64, + base64Encoder: config?.base64Encoder ?? toBase64, + disableHostPrefix: config?.disableHostPrefix ?? false, + endpointProvider: config?.endpointProvider ?? defaultEndpointResolver, + extensions: config?.extensions ?? [], + httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? defaultSSOOIDCHttpAuthSchemeProvider, + httpAuthSchemes: config?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: (ipc) => ipc.getIdentityProvider("aws.auth#sigv4"), + signer: new AwsSdkSigV4Signer(), + }, + { + schemeId: "smithy.api#noAuth", + identityProvider: (ipc) => ipc.getIdentityProvider("smithy.api#noAuth") || (async () => ({})), + signer: new NoAuthSigner(), + }, + ], + logger: config?.logger ?? new NoOpLogger(), + protocol: config?.protocol ?? AwsRestJsonProtocol, + protocolSettings: config?.protocolSettings ?? { + defaultNamespace: "com.amazonaws.ssooidc", + errorTypeRegistries, + version: "2019-06-10", + serviceTarget: "AWSSSOOIDCService", + }, + serviceId: config?.serviceId ?? "SSO OIDC", + urlParser: config?.urlParser ?? parseUrl, + utf8Decoder: config?.utf8Decoder ?? fromUtf8, + utf8Encoder: config?.utf8Encoder ?? toUtf8, + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeExtensions.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeExtensions.js new file mode 100644 index 000000000..5b296950d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeExtensions.js @@ -0,0 +1,9 @@ +import { getAwsRegionExtensionConfiguration, resolveAwsRegionExtensionConfiguration, } from "@aws-sdk/region-config-resolver"; +import { getHttpHandlerExtensionConfiguration, resolveHttpHandlerRuntimeConfig } from "@smithy/protocol-http"; +import { getDefaultExtensionConfiguration, resolveDefaultRuntimeConfig } from "@smithy/smithy-client"; +import { getHttpAuthExtensionConfiguration, resolveHttpAuthRuntimeConfig } from "./auth/httpAuthExtensionConfiguration"; +export const resolveRuntimeExtensions = (runtimeConfig, extensions) => { + const extensionConfiguration = Object.assign(getAwsRegionExtensionConfiguration(runtimeConfig), getDefaultExtensionConfiguration(runtimeConfig), getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig)); + extensions.forEach((extension) => extension.configure(extensionConfiguration)); + return Object.assign(runtimeConfig, resolveAwsRegionExtensionConfiguration(extensionConfiguration), resolveDefaultRuntimeConfig(extensionConfiguration), resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration)); +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/schemas/schemas_0.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/schemas/schemas_0.js new file mode 100644 index 000000000..a059db592 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/schemas/schemas_0.js @@ -0,0 +1,137 @@ +const _ADE = "AccessDeniedException"; +const _APE = "AuthorizationPendingException"; +const _AT = "AccessToken"; +const _CS = "ClientSecret"; +const _CT = "CreateToken"; +const _CTR = "CreateTokenRequest"; +const _CTRr = "CreateTokenResponse"; +const _CV = "CodeVerifier"; +const _ETE = "ExpiredTokenException"; +const _ICE = "InvalidClientException"; +const _IGE = "InvalidGrantException"; +const _IRE = "InvalidRequestException"; +const _ISE = "InternalServerException"; +const _ISEn = "InvalidScopeException"; +const _IT = "IdToken"; +const _RT = "RefreshToken"; +const _SDE = "SlowDownException"; +const _UCE = "UnauthorizedClientException"; +const _UGTE = "UnsupportedGrantTypeException"; +const _aT = "accessToken"; +const _c = "client"; +const _cI = "clientId"; +const _cS = "clientSecret"; +const _cV = "codeVerifier"; +const _co = "code"; +const _dC = "deviceCode"; +const _e = "error"; +const _eI = "expiresIn"; +const _ed = "error_description"; +const _gT = "grantType"; +const _h = "http"; +const _hE = "httpError"; +const _iT = "idToken"; +const _r = "reason"; +const _rT = "refreshToken"; +const _rU = "redirectUri"; +const _s = "smithy.ts.sdk.synthetic.com.amazonaws.ssooidc"; +const _sc = "scope"; +const _se = "server"; +const _tT = "tokenType"; +const n0 = "com.amazonaws.ssooidc"; +import { TypeRegistry } from "@smithy/core/schema"; +import { AccessDeniedException, AuthorizationPendingException, ExpiredTokenException, InternalServerException, InvalidClientException, InvalidGrantException, InvalidRequestException, InvalidScopeException, SlowDownException, UnauthorizedClientException, UnsupportedGrantTypeException, } from "../models/errors"; +import { SSOOIDCServiceException } from "../models/SSOOIDCServiceException"; +const _s_registry = TypeRegistry.for(_s); +export var SSOOIDCServiceException$ = [-3, _s, "SSOOIDCServiceException", 0, [], []]; +_s_registry.registerError(SSOOIDCServiceException$, SSOOIDCServiceException); +const n0_registry = TypeRegistry.for(n0); +export var AccessDeniedException$ = [ + -3, + n0, + _ADE, + { [_e]: _c, [_hE]: 400 }, + [_e, _r, _ed], + [0, 0, 0], +]; +n0_registry.registerError(AccessDeniedException$, AccessDeniedException); +export var AuthorizationPendingException$ = [ + -3, + n0, + _APE, + { [_e]: _c, [_hE]: 400 }, + [_e, _ed], + [0, 0], +]; +n0_registry.registerError(AuthorizationPendingException$, AuthorizationPendingException); +export var ExpiredTokenException$ = [-3, n0, _ETE, { [_e]: _c, [_hE]: 400 }, [_e, _ed], [0, 0]]; +n0_registry.registerError(ExpiredTokenException$, ExpiredTokenException); +export var InternalServerException$ = [-3, n0, _ISE, { [_e]: _se, [_hE]: 500 }, [_e, _ed], [0, 0]]; +n0_registry.registerError(InternalServerException$, InternalServerException); +export var InvalidClientException$ = [-3, n0, _ICE, { [_e]: _c, [_hE]: 401 }, [_e, _ed], [0, 0]]; +n0_registry.registerError(InvalidClientException$, InvalidClientException); +export var InvalidGrantException$ = [-3, n0, _IGE, { [_e]: _c, [_hE]: 400 }, [_e, _ed], [0, 0]]; +n0_registry.registerError(InvalidGrantException$, InvalidGrantException); +export var InvalidRequestException$ = [ + -3, + n0, + _IRE, + { [_e]: _c, [_hE]: 400 }, + [_e, _r, _ed], + [0, 0, 0], +]; +n0_registry.registerError(InvalidRequestException$, InvalidRequestException); +export var InvalidScopeException$ = [-3, n0, _ISEn, { [_e]: _c, [_hE]: 400 }, [_e, _ed], [0, 0]]; +n0_registry.registerError(InvalidScopeException$, InvalidScopeException); +export var SlowDownException$ = [-3, n0, _SDE, { [_e]: _c, [_hE]: 400 }, [_e, _ed], [0, 0]]; +n0_registry.registerError(SlowDownException$, SlowDownException); +export var UnauthorizedClientException$ = [ + -3, + n0, + _UCE, + { [_e]: _c, [_hE]: 400 }, + [_e, _ed], + [0, 0], +]; +n0_registry.registerError(UnauthorizedClientException$, UnauthorizedClientException); +export var UnsupportedGrantTypeException$ = [ + -3, + n0, + _UGTE, + { [_e]: _c, [_hE]: 400 }, + [_e, _ed], + [0, 0], +]; +n0_registry.registerError(UnsupportedGrantTypeException$, UnsupportedGrantTypeException); +export const errorTypeRegistries = [_s_registry, n0_registry]; +var AccessToken = [0, n0, _AT, 8, 0]; +var ClientSecret = [0, n0, _CS, 8, 0]; +var CodeVerifier = [0, n0, _CV, 8, 0]; +var IdToken = [0, n0, _IT, 8, 0]; +var RefreshToken = [0, n0, _RT, 8, 0]; +export var CreateTokenRequest$ = [ + 3, + n0, + _CTR, + 0, + [_cI, _cS, _gT, _dC, _co, _rT, _sc, _rU, _cV], + [0, [() => ClientSecret, 0], 0, 0, 0, [() => RefreshToken, 0], 64 | 0, 0, [() => CodeVerifier, 0]], + 3, +]; +export var CreateTokenResponse$ = [ + 3, + n0, + _CTRr, + 0, + [_aT, _tT, _eI, _rT, _iT], + [[() => AccessToken, 0], 0, 1, [() => RefreshToken, 0], [() => IdToken, 0]], +]; +var Scopes = 64 | 0; +export var CreateToken$ = [ + 9, + n0, + _CT, + { [_h]: ["POST", "/token", 200] }, + () => CreateTokenRequest$, + () => CreateTokenResponse$, +]; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/SSO.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/SSO.js new file mode 100644 index 000000000..6c5dedec2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/SSO.js @@ -0,0 +1,9 @@ +import { createAggregatedClient } from "@smithy/smithy-client"; +import { GetRoleCredentialsCommand } from "./commands/GetRoleCredentialsCommand"; +import { SSOClient } from "./SSOClient"; +const commands = { + GetRoleCredentialsCommand, +}; +export class SSO extends SSOClient { +} +createAggregatedClient(commands, SSO); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/SSOClient.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/SSOClient.js new file mode 100644 index 000000000..bfca80136 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/SSOClient.js @@ -0,0 +1,50 @@ +import { getHostHeaderPlugin, resolveHostHeaderConfig, } from "@aws-sdk/middleware-host-header"; +import { getLoggerPlugin } from "@aws-sdk/middleware-logger"; +import { getRecursionDetectionPlugin } from "@aws-sdk/middleware-recursion-detection"; +import { getUserAgentPlugin, resolveUserAgentConfig, } from "@aws-sdk/middleware-user-agent"; +import { resolveRegionConfig } from "@smithy/config-resolver"; +import { DefaultIdentityProviderConfig, getHttpAuthSchemeEndpointRuleSetPlugin, getHttpSigningPlugin, } from "@smithy/core"; +import { getSchemaSerdePlugin } from "@smithy/core/schema"; +import { getContentLengthPlugin } from "@smithy/middleware-content-length"; +import { resolveEndpointConfig, } from "@smithy/middleware-endpoint"; +import { getRetryPlugin, resolveRetryConfig, } from "@smithy/middleware-retry"; +import { Client as __Client, } from "@smithy/smithy-client"; +import { defaultSSOHttpAuthSchemeParametersProvider, resolveHttpAuthSchemeConfig, } from "./auth/httpAuthSchemeProvider"; +import { resolveClientEndpointParameters } from "./endpoint/EndpointParameters"; +import { getRuntimeConfig as __getRuntimeConfig } from "./runtimeConfig"; +import { resolveRuntimeExtensions } from "./runtimeExtensions"; +export { __Client }; +export class SSOClient extends __Client { + config; + constructor(...[configuration]) { + const _config_0 = __getRuntimeConfig(configuration || {}); + super(_config_0); + this.initConfig = _config_0; + const _config_1 = resolveClientEndpointParameters(_config_0); + const _config_2 = resolveUserAgentConfig(_config_1); + const _config_3 = resolveRetryConfig(_config_2); + const _config_4 = resolveRegionConfig(_config_3); + const _config_5 = resolveHostHeaderConfig(_config_4); + const _config_6 = resolveEndpointConfig(_config_5); + const _config_7 = resolveHttpAuthSchemeConfig(_config_6); + const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []); + this.config = _config_8; + this.middlewareStack.use(getSchemaSerdePlugin(this.config)); + this.middlewareStack.use(getUserAgentPlugin(this.config)); + this.middlewareStack.use(getRetryPlugin(this.config)); + this.middlewareStack.use(getContentLengthPlugin(this.config)); + this.middlewareStack.use(getHostHeaderPlugin(this.config)); + this.middlewareStack.use(getLoggerPlugin(this.config)); + this.middlewareStack.use(getRecursionDetectionPlugin(this.config)); + this.middlewareStack.use(getHttpAuthSchemeEndpointRuleSetPlugin(this.config, { + httpAuthSchemeParametersProvider: defaultSSOHttpAuthSchemeParametersProvider, + identityProviderConfigProvider: async (config) => new DefaultIdentityProviderConfig({ + "aws.auth#sigv4": config.credentials, + }), + })); + this.middlewareStack.use(getHttpSigningPlugin(this.config)); + } + destroy() { + super.destroy(); + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/auth/httpAuthExtensionConfiguration.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/auth/httpAuthExtensionConfiguration.js new file mode 100644 index 000000000..2ba1d48c1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/auth/httpAuthExtensionConfiguration.js @@ -0,0 +1,38 @@ +export const getHttpAuthExtensionConfiguration = (runtimeConfig) => { + const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; + let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; + let _credentials = runtimeConfig.credentials; + return { + setHttpAuthScheme(httpAuthScheme) { + const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId); + if (index === -1) { + _httpAuthSchemes.push(httpAuthScheme); + } + else { + _httpAuthSchemes.splice(index, 1, httpAuthScheme); + } + }, + httpAuthSchemes() { + return _httpAuthSchemes; + }, + setHttpAuthSchemeProvider(httpAuthSchemeProvider) { + _httpAuthSchemeProvider = httpAuthSchemeProvider; + }, + httpAuthSchemeProvider() { + return _httpAuthSchemeProvider; + }, + setCredentials(credentials) { + _credentials = credentials; + }, + credentials() { + return _credentials; + }, + }; +}; +export const resolveHttpAuthRuntimeConfig = (config) => { + return { + httpAuthSchemes: config.httpAuthSchemes(), + httpAuthSchemeProvider: config.httpAuthSchemeProvider(), + credentials: config.credentials(), + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/auth/httpAuthSchemeProvider.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/auth/httpAuthSchemeProvider.js new file mode 100644 index 000000000..2866adc69 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/auth/httpAuthSchemeProvider.js @@ -0,0 +1,50 @@ +import { resolveAwsSdkSigV4Config } from "@aws-sdk/core"; +import { getSmithyContext, normalizeProvider } from "@smithy/util-middleware"; +export const defaultSSOHttpAuthSchemeParametersProvider = async (config, context, input) => { + return { + operation: getSmithyContext(context).operation, + region: (await normalizeProvider(config.region)()) || + (() => { + throw new Error("expected `region` to be configured for `aws.auth#sigv4`"); + })(), + }; +}; +function createAwsAuthSigv4HttpAuthOption(authParameters) { + return { + schemeId: "aws.auth#sigv4", + signingProperties: { + name: "awsssoportal", + region: authParameters.region, + }, + propertiesExtractor: (config, context) => ({ + signingProperties: { + config, + context, + }, + }), + }; +} +function createSmithyApiNoAuthHttpAuthOption(authParameters) { + return { + schemeId: "smithy.api#noAuth", + }; +} +export const defaultSSOHttpAuthSchemeProvider = (authParameters) => { + const options = []; + switch (authParameters.operation) { + case "GetRoleCredentials": { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + default: { + options.push(createAwsAuthSigv4HttpAuthOption(authParameters)); + } + } + return options; +}; +export const resolveHttpAuthSchemeConfig = (config) => { + const config_0 = resolveAwsSdkSigV4Config(config); + return Object.assign(config_0, { + authSchemePreference: normalizeProvider(config.authSchemePreference ?? []), + }); +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/commands/GetRoleCredentialsCommand.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/commands/GetRoleCredentialsCommand.js new file mode 100644 index 000000000..9554e71f4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/commands/GetRoleCredentialsCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetRoleCredentials$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetRoleCredentialsCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("SWBPortalService", "GetRoleCredentials", {}) + .n("SSOClient", "GetRoleCredentialsCommand") + .sc(GetRoleCredentials$) + .build() { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/commands/index.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/commands/index.js new file mode 100644 index 000000000..69ba055c7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/commands/index.js @@ -0,0 +1 @@ +export * from "./GetRoleCredentialsCommand"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/endpoint/EndpointParameters.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/endpoint/EndpointParameters.js new file mode 100644 index 000000000..77e34f850 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/endpoint/EndpointParameters.js @@ -0,0 +1,13 @@ +export const resolveClientEndpointParameters = (options) => { + return Object.assign(options, { + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + useFipsEndpoint: options.useFipsEndpoint ?? false, + defaultSigningName: "awsssoportal", + }); +}; +export const commonParams = { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }, +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/endpoint/endpointResolver.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/endpoint/endpointResolver.js new file mode 100644 index 000000000..0ac15bcde --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/endpoint/endpointResolver.js @@ -0,0 +1,14 @@ +import { awsEndpointFunctions } from "@aws-sdk/util-endpoints"; +import { customEndpointFunctions, EndpointCache, resolveEndpoint } from "@smithy/util-endpoints"; +import { ruleSet } from "./ruleset"; +const cache = new EndpointCache({ + size: 50, + params: ["Endpoint", "Region", "UseDualStack", "UseFIPS"], +}); +export const defaultEndpointResolver = (endpointParams, context = {}) => { + return cache.get(endpointParams, () => resolveEndpoint(ruleSet, { + endpointParams: endpointParams, + logger: context.logger, + })); +}; +customEndpointFunctions.aws = awsEndpointFunctions; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/endpoint/ruleset.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/endpoint/ruleset.js new file mode 100644 index 000000000..ed1004423 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/endpoint/ruleset.js @@ -0,0 +1,103 @@ +const u = "required", v = "fn", w = "argv", x = "ref"; +const a = true, b = "isSet", c = "booleanEquals", d = "error", e = "endpoint", f = "tree", g = "PartitionResult", h = "getAttr", i = { [u]: false, type: "string" }, j = { [u]: true, default: false, type: "boolean" }, k = { [x]: "Endpoint" }, l = { [v]: c, [w]: [{ [x]: "UseFIPS" }, true] }, m = { [v]: c, [w]: [{ [x]: "UseDualStack" }, true] }, n = {}, o = { [v]: h, [w]: [{ [x]: g }, "supportsFIPS"] }, p = { [x]: g }, q = { [v]: c, [w]: [true, { [v]: h, [w]: [p, "supportsDualStack"] }] }, r = [l], s = [m], t = [{ [x]: "Region" }]; +const _data = { + version: "1.0", + parameters: { Region: i, UseDualStack: j, UseFIPS: j, Endpoint: i }, + rules: [ + { + conditions: [{ [v]: b, [w]: [k] }], + rules: [ + { conditions: r, error: "Invalid Configuration: FIPS and custom endpoint are not supported", type: d }, + { conditions: s, error: "Invalid Configuration: Dualstack and custom endpoint are not supported", type: d }, + { endpoint: { url: k, properties: n, headers: n }, type: e }, + ], + type: f, + }, + { + conditions: [{ [v]: b, [w]: t }], + rules: [ + { + conditions: [{ [v]: "aws.partition", [w]: t, assign: g }], + rules: [ + { + conditions: [l, m], + rules: [ + { + conditions: [{ [v]: c, [w]: [a, o] }, q], + rules: [ + { + endpoint: { + url: "https://portal.sso-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { error: "FIPS and DualStack are enabled, but this partition does not support one or both", type: d }, + ], + type: f, + }, + { + conditions: r, + rules: [ + { + conditions: [{ [v]: c, [w]: [o, a] }], + rules: [ + { + conditions: [{ [v]: "stringEquals", [w]: [{ [v]: h, [w]: [p, "name"] }, "aws-us-gov"] }], + endpoint: { url: "https://portal.sso.{Region}.amazonaws.com", properties: n, headers: n }, + type: e, + }, + { + endpoint: { + url: "https://portal.sso-fips.{Region}.{PartitionResult#dnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { error: "FIPS is enabled but this partition does not support FIPS", type: d }, + ], + type: f, + }, + { + conditions: s, + rules: [ + { + conditions: [q], + rules: [ + { + endpoint: { + url: "https://portal.sso.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { error: "DualStack is enabled but this partition does not support DualStack", type: d }, + ], + type: f, + }, + { + endpoint: { url: "https://portal.sso.{Region}.{PartitionResult#dnsSuffix}", properties: n, headers: n }, + type: e, + }, + ], + type: f, + }, + ], + type: f, + }, + { error: "Invalid Configuration: Missing Region", type: d }, + ], +}; +export const ruleSet = _data; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/extensionConfiguration.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/extensionConfiguration.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/extensionConfiguration.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/index.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/index.js new file mode 100644 index 000000000..3838fb8ec --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/index.js @@ -0,0 +1,7 @@ +export * from "./SSOClient"; +export * from "./SSO"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./models/errors"; +export * from "./models/models_0"; +export { SSOServiceException } from "./models/SSOServiceException"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/models/SSOServiceException.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/models/SSOServiceException.js new file mode 100644 index 000000000..fa5d8fb9f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/models/SSOServiceException.js @@ -0,0 +1,8 @@ +import { ServiceException as __ServiceException, } from "@smithy/smithy-client"; +export { __ServiceException }; +export class SSOServiceException extends __ServiceException { + constructor(options) { + super(options); + Object.setPrototypeOf(this, SSOServiceException.prototype); + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/models/errors.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/models/errors.js new file mode 100644 index 000000000..81e418a57 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/models/errors.js @@ -0,0 +1,49 @@ +import { SSOServiceException as __BaseException } from "./SSOServiceException"; +export class InvalidRequestException extends __BaseException { + name = "InvalidRequestException"; + $fault = "client"; + constructor(opts) { + super({ + name: "InvalidRequestException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidRequestException.prototype); + } +} +export class ResourceNotFoundException extends __BaseException { + name = "ResourceNotFoundException"; + $fault = "client"; + constructor(opts) { + super({ + name: "ResourceNotFoundException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ResourceNotFoundException.prototype); + } +} +export class TooManyRequestsException extends __BaseException { + name = "TooManyRequestsException"; + $fault = "client"; + constructor(opts) { + super({ + name: "TooManyRequestsException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, TooManyRequestsException.prototype); + } +} +export class UnauthorizedException extends __BaseException { + name = "UnauthorizedException"; + $fault = "client"; + constructor(opts) { + super({ + name: "UnauthorizedException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, UnauthorizedException.prototype); + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/models/models_0.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/models/models_0.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/models/models_0.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.browser.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.browser.js new file mode 100644 index 000000000..d14723592 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.browser.js @@ -0,0 +1,33 @@ +import packageInfo from "../../../package.json"; +import { Sha256 } from "@aws-crypto/sha256-browser"; +import { createDefaultUserAgentProvider } from "@aws-sdk/util-user-agent-browser"; +import { DEFAULT_USE_DUALSTACK_ENDPOINT, DEFAULT_USE_FIPS_ENDPOINT } from "@smithy/config-resolver"; +import { FetchHttpHandler as RequestHandler, streamCollector } from "@smithy/fetch-http-handler"; +import { invalidProvider } from "@smithy/invalid-dependency"; +import { loadConfigsForDefaultMode } from "@smithy/smithy-client"; +import { calculateBodyLength } from "@smithy/util-body-length-browser"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-browser"; +import { DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_MODE } from "@smithy/util-retry"; +import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; +export const getRuntimeConfig = (config) => { + const defaultsMode = resolveDefaultsModeConfig(config); + const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode); + const clientSharedValues = getSharedRuntimeConfig(config); + return { + ...clientSharedValues, + ...config, + runtime: "browser", + defaultsMode, + bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }), + maxAttempts: config?.maxAttempts ?? DEFAULT_MAX_ATTEMPTS, + region: config?.region ?? invalidProvider("Region is missing"), + requestHandler: RequestHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? (async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE), + sha256: config?.sha256 ?? Sha256, + streamCollector: config?.streamCollector ?? streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (() => Promise.resolve(DEFAULT_USE_DUALSTACK_ENDPOINT)), + useFipsEndpoint: config?.useFipsEndpoint ?? (() => Promise.resolve(DEFAULT_USE_FIPS_ENDPOINT)), + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.js new file mode 100644 index 000000000..5f33517b1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.js @@ -0,0 +1,48 @@ +import packageInfo from "../../../package.json"; +import { emitWarningIfUnsupportedVersion as awsCheckVersion, NODE_AUTH_SCHEME_PREFERENCE_OPTIONS } from "@aws-sdk/core"; +import { createDefaultUserAgentProvider, NODE_APP_ID_CONFIG_OPTIONS } from "@aws-sdk/util-user-agent-node"; +import { NODE_REGION_CONFIG_FILE_OPTIONS, NODE_REGION_CONFIG_OPTIONS, NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, } from "@smithy/config-resolver"; +import { Hash } from "@smithy/hash-node"; +import { NODE_MAX_ATTEMPT_CONFIG_OPTIONS, NODE_RETRY_MODE_CONFIG_OPTIONS } from "@smithy/middleware-retry"; +import { loadConfig as loadNodeConfig } from "@smithy/node-config-provider"; +import { NodeHttpHandler as RequestHandler, streamCollector } from "@smithy/node-http-handler"; +import { emitWarningIfUnsupportedVersion, loadConfigsForDefaultMode } from "@smithy/smithy-client"; +import { calculateBodyLength } from "@smithy/util-body-length-node"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-node"; +import { DEFAULT_RETRY_MODE } from "@smithy/util-retry"; +import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; +export const getRuntimeConfig = (config) => { + emitWarningIfUnsupportedVersion(process.version); + const defaultsMode = resolveDefaultsModeConfig(config); + const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode); + const clientSharedValues = getSharedRuntimeConfig(config); + awsCheckVersion(process.version); + const loaderConfig = { + profile: config?.profile, + logger: clientSharedValues.logger, + }; + return { + ...clientSharedValues, + ...config, + runtime: "node", + defaultsMode, + authSchemePreference: config?.authSchemePreference ?? loadNodeConfig(NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig), + bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }), + maxAttempts: config?.maxAttempts ?? loadNodeConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config), + region: config?.region ?? + loadNodeConfig(NODE_REGION_CONFIG_OPTIONS, { ...NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }), + requestHandler: RequestHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? + loadNodeConfig({ + ...NODE_RETRY_MODE_CONFIG_OPTIONS, + default: async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE, + }, config), + sha256: config?.sha256 ?? Hash.bind(null, "sha256"), + streamCollector: config?.streamCollector ?? streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? loadNodeConfig(NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + useFipsEndpoint: config?.useFipsEndpoint ?? loadNodeConfig(NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + userAgentAppId: config?.userAgentAppId ?? loadNodeConfig(NODE_APP_ID_CONFIG_OPTIONS, loaderConfig), + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.native.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.native.js new file mode 100644 index 000000000..0b5469528 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.native.js @@ -0,0 +1,11 @@ +import { Sha256 } from "@aws-crypto/sha256-js"; +import { getRuntimeConfig as getBrowserRuntimeConfig } from "./runtimeConfig.browser"; +export const getRuntimeConfig = (config) => { + const browserDefaults = getBrowserRuntimeConfig(config); + return { + ...browserDefaults, + ...config, + runtime: "react-native", + sha256: config?.sha256 ?? Sha256, + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.shared.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.shared.js new file mode 100644 index 000000000..61aa61ca2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.shared.js @@ -0,0 +1,45 @@ +import { AwsSdkSigV4Signer } from "@aws-sdk/core"; +import { AwsRestJsonProtocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; +import { NoOpLogger } from "@smithy/smithy-client"; +import { parseUrl } from "@smithy/url-parser"; +import { fromBase64, toBase64 } from "@smithy/util-base64"; +import { fromUtf8, toUtf8 } from "@smithy/util-utf8"; +import { defaultSSOHttpAuthSchemeProvider } from "./auth/httpAuthSchemeProvider"; +import { defaultEndpointResolver } from "./endpoint/endpointResolver"; +import { errorTypeRegistries } from "./schemas/schemas_0"; +export const getRuntimeConfig = (config) => { + return { + apiVersion: "2019-06-10", + base64Decoder: config?.base64Decoder ?? fromBase64, + base64Encoder: config?.base64Encoder ?? toBase64, + disableHostPrefix: config?.disableHostPrefix ?? false, + endpointProvider: config?.endpointProvider ?? defaultEndpointResolver, + extensions: config?.extensions ?? [], + httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? defaultSSOHttpAuthSchemeProvider, + httpAuthSchemes: config?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: (ipc) => ipc.getIdentityProvider("aws.auth#sigv4"), + signer: new AwsSdkSigV4Signer(), + }, + { + schemeId: "smithy.api#noAuth", + identityProvider: (ipc) => ipc.getIdentityProvider("smithy.api#noAuth") || (async () => ({})), + signer: new NoAuthSigner(), + }, + ], + logger: config?.logger ?? new NoOpLogger(), + protocol: config?.protocol ?? AwsRestJsonProtocol, + protocolSettings: config?.protocolSettings ?? { + defaultNamespace: "com.amazonaws.sso", + errorTypeRegistries, + version: "2019-06-10", + serviceTarget: "SWBPortalService", + }, + serviceId: config?.serviceId ?? "SSO", + urlParser: config?.urlParser ?? parseUrl, + utf8Decoder: config?.utf8Decoder ?? fromUtf8, + utf8Encoder: config?.utf8Encoder ?? toUtf8, + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeExtensions.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeExtensions.js new file mode 100644 index 000000000..5b296950d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeExtensions.js @@ -0,0 +1,9 @@ +import { getAwsRegionExtensionConfiguration, resolveAwsRegionExtensionConfiguration, } from "@aws-sdk/region-config-resolver"; +import { getHttpHandlerExtensionConfiguration, resolveHttpHandlerRuntimeConfig } from "@smithy/protocol-http"; +import { getDefaultExtensionConfiguration, resolveDefaultRuntimeConfig } from "@smithy/smithy-client"; +import { getHttpAuthExtensionConfiguration, resolveHttpAuthRuntimeConfig } from "./auth/httpAuthExtensionConfiguration"; +export const resolveRuntimeExtensions = (runtimeConfig, extensions) => { + const extensionConfiguration = Object.assign(getAwsRegionExtensionConfiguration(runtimeConfig), getDefaultExtensionConfiguration(runtimeConfig), getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig)); + extensions.forEach((extension) => extension.configure(extensionConfiguration)); + return Object.assign(runtimeConfig, resolveAwsRegionExtensionConfiguration(extensionConfiguration), resolveDefaultRuntimeConfig(extensionConfiguration), resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration)); +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/schemas/schemas_0.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/schemas/schemas_0.js new file mode 100644 index 000000000..f0be39c03 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/schemas/schemas_0.js @@ -0,0 +1,87 @@ +const _ATT = "AccessTokenType"; +const _GRC = "GetRoleCredentials"; +const _GRCR = "GetRoleCredentialsRequest"; +const _GRCRe = "GetRoleCredentialsResponse"; +const _IRE = "InvalidRequestException"; +const _RC = "RoleCredentials"; +const _RNFE = "ResourceNotFoundException"; +const _SAKT = "SecretAccessKeyType"; +const _STT = "SessionTokenType"; +const _TMRE = "TooManyRequestsException"; +const _UE = "UnauthorizedException"; +const _aI = "accountId"; +const _aKI = "accessKeyId"; +const _aT = "accessToken"; +const _ai = "account_id"; +const _c = "client"; +const _e = "error"; +const _ex = "expiration"; +const _h = "http"; +const _hE = "httpError"; +const _hH = "httpHeader"; +const _hQ = "httpQuery"; +const _m = "message"; +const _rC = "roleCredentials"; +const _rN = "roleName"; +const _rn = "role_name"; +const _s = "smithy.ts.sdk.synthetic.com.amazonaws.sso"; +const _sAK = "secretAccessKey"; +const _sT = "sessionToken"; +const _xasbt = "x-amz-sso_bearer_token"; +const n0 = "com.amazonaws.sso"; +import { TypeRegistry } from "@smithy/core/schema"; +import { InvalidRequestException, ResourceNotFoundException, TooManyRequestsException, UnauthorizedException, } from "../models/errors"; +import { SSOServiceException } from "../models/SSOServiceException"; +const _s_registry = TypeRegistry.for(_s); +export var SSOServiceException$ = [-3, _s, "SSOServiceException", 0, [], []]; +_s_registry.registerError(SSOServiceException$, SSOServiceException); +const n0_registry = TypeRegistry.for(n0); +export var InvalidRequestException$ = [-3, n0, _IRE, { [_e]: _c, [_hE]: 400 }, [_m], [0]]; +n0_registry.registerError(InvalidRequestException$, InvalidRequestException); +export var ResourceNotFoundException$ = [-3, n0, _RNFE, { [_e]: _c, [_hE]: 404 }, [_m], [0]]; +n0_registry.registerError(ResourceNotFoundException$, ResourceNotFoundException); +export var TooManyRequestsException$ = [-3, n0, _TMRE, { [_e]: _c, [_hE]: 429 }, [_m], [0]]; +n0_registry.registerError(TooManyRequestsException$, TooManyRequestsException); +export var UnauthorizedException$ = [-3, n0, _UE, { [_e]: _c, [_hE]: 401 }, [_m], [0]]; +n0_registry.registerError(UnauthorizedException$, UnauthorizedException); +export const errorTypeRegistries = [_s_registry, n0_registry]; +var AccessTokenType = [0, n0, _ATT, 8, 0]; +var SecretAccessKeyType = [0, n0, _SAKT, 8, 0]; +var SessionTokenType = [0, n0, _STT, 8, 0]; +export var GetRoleCredentialsRequest$ = [ + 3, + n0, + _GRCR, + 0, + [_rN, _aI, _aT], + [ + [0, { [_hQ]: _rn }], + [0, { [_hQ]: _ai }], + [() => AccessTokenType, { [_hH]: _xasbt }], + ], + 3, +]; +export var GetRoleCredentialsResponse$ = [ + 3, + n0, + _GRCRe, + 0, + [_rC], + [[() => RoleCredentials$, 0]], +]; +export var RoleCredentials$ = [ + 3, + n0, + _RC, + 0, + [_aKI, _sAK, _sT, _ex], + [0, [() => SecretAccessKeyType, 0], [() => SessionTokenType, 0], 1], +]; +export var GetRoleCredentials$ = [ + 9, + n0, + _GRC, + { [_h]: ["GET", "/federation/credentials", 200] }, + () => GetRoleCredentialsRequest$, + () => GetRoleCredentialsResponse$, +]; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/STS.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/STS.js new file mode 100644 index 000000000..1bf6304ed --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/STS.js @@ -0,0 +1,11 @@ +import { createAggregatedClient } from "@smithy/smithy-client"; +import { AssumeRoleCommand } from "./commands/AssumeRoleCommand"; +import { AssumeRoleWithWebIdentityCommand } from "./commands/AssumeRoleWithWebIdentityCommand"; +import { STSClient } from "./STSClient"; +const commands = { + AssumeRoleCommand, + AssumeRoleWithWebIdentityCommand, +}; +export class STS extends STSClient { +} +createAggregatedClient(commands, STS); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/STSClient.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/STSClient.js new file mode 100644 index 000000000..696b005f7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/STSClient.js @@ -0,0 +1,50 @@ +import { getHostHeaderPlugin, resolveHostHeaderConfig, } from "@aws-sdk/middleware-host-header"; +import { getLoggerPlugin } from "@aws-sdk/middleware-logger"; +import { getRecursionDetectionPlugin } from "@aws-sdk/middleware-recursion-detection"; +import { getUserAgentPlugin, resolveUserAgentConfig, } from "@aws-sdk/middleware-user-agent"; +import { resolveRegionConfig } from "@smithy/config-resolver"; +import { DefaultIdentityProviderConfig, getHttpAuthSchemeEndpointRuleSetPlugin, getHttpSigningPlugin, } from "@smithy/core"; +import { getSchemaSerdePlugin } from "@smithy/core/schema"; +import { getContentLengthPlugin } from "@smithy/middleware-content-length"; +import { resolveEndpointConfig, } from "@smithy/middleware-endpoint"; +import { getRetryPlugin, resolveRetryConfig, } from "@smithy/middleware-retry"; +import { Client as __Client, } from "@smithy/smithy-client"; +import { defaultSTSHttpAuthSchemeParametersProvider, resolveHttpAuthSchemeConfig, } from "./auth/httpAuthSchemeProvider"; +import { resolveClientEndpointParameters } from "./endpoint/EndpointParameters"; +import { getRuntimeConfig as __getRuntimeConfig } from "./runtimeConfig"; +import { resolveRuntimeExtensions } from "./runtimeExtensions"; +export { __Client }; +export class STSClient extends __Client { + config; + constructor(...[configuration]) { + const _config_0 = __getRuntimeConfig(configuration || {}); + super(_config_0); + this.initConfig = _config_0; + const _config_1 = resolveClientEndpointParameters(_config_0); + const _config_2 = resolveUserAgentConfig(_config_1); + const _config_3 = resolveRetryConfig(_config_2); + const _config_4 = resolveRegionConfig(_config_3); + const _config_5 = resolveHostHeaderConfig(_config_4); + const _config_6 = resolveEndpointConfig(_config_5); + const _config_7 = resolveHttpAuthSchemeConfig(_config_6); + const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []); + this.config = _config_8; + this.middlewareStack.use(getSchemaSerdePlugin(this.config)); + this.middlewareStack.use(getUserAgentPlugin(this.config)); + this.middlewareStack.use(getRetryPlugin(this.config)); + this.middlewareStack.use(getContentLengthPlugin(this.config)); + this.middlewareStack.use(getHostHeaderPlugin(this.config)); + this.middlewareStack.use(getLoggerPlugin(this.config)); + this.middlewareStack.use(getRecursionDetectionPlugin(this.config)); + this.middlewareStack.use(getHttpAuthSchemeEndpointRuleSetPlugin(this.config, { + httpAuthSchemeParametersProvider: defaultSTSHttpAuthSchemeParametersProvider, + identityProviderConfigProvider: async (config) => new DefaultIdentityProviderConfig({ + "aws.auth#sigv4": config.credentials, + }), + })); + this.middlewareStack.use(getHttpSigningPlugin(this.config)); + } + destroy() { + super.destroy(); + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/auth/httpAuthExtensionConfiguration.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/auth/httpAuthExtensionConfiguration.js new file mode 100644 index 000000000..2ba1d48c1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/auth/httpAuthExtensionConfiguration.js @@ -0,0 +1,38 @@ +export const getHttpAuthExtensionConfiguration = (runtimeConfig) => { + const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; + let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; + let _credentials = runtimeConfig.credentials; + return { + setHttpAuthScheme(httpAuthScheme) { + const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId); + if (index === -1) { + _httpAuthSchemes.push(httpAuthScheme); + } + else { + _httpAuthSchemes.splice(index, 1, httpAuthScheme); + } + }, + httpAuthSchemes() { + return _httpAuthSchemes; + }, + setHttpAuthSchemeProvider(httpAuthSchemeProvider) { + _httpAuthSchemeProvider = httpAuthSchemeProvider; + }, + httpAuthSchemeProvider() { + return _httpAuthSchemeProvider; + }, + setCredentials(credentials) { + _credentials = credentials; + }, + credentials() { + return _credentials; + }, + }; +}; +export const resolveHttpAuthRuntimeConfig = (config) => { + return { + httpAuthSchemes: config.httpAuthSchemes(), + httpAuthSchemeProvider: config.httpAuthSchemeProvider(), + credentials: config.credentials(), + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/auth/httpAuthSchemeProvider.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/auth/httpAuthSchemeProvider.js new file mode 100644 index 000000000..a3bb54683 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/auth/httpAuthSchemeProvider.js @@ -0,0 +1,55 @@ +import { resolveAwsSdkSigV4Config } from "@aws-sdk/core"; +import { getSmithyContext, normalizeProvider } from "@smithy/util-middleware"; +import { STSClient } from "../STSClient"; +export const defaultSTSHttpAuthSchemeParametersProvider = async (config, context, input) => { + return { + operation: getSmithyContext(context).operation, + region: (await normalizeProvider(config.region)()) || + (() => { + throw new Error("expected `region` to be configured for `aws.auth#sigv4`"); + })(), + }; +}; +function createAwsAuthSigv4HttpAuthOption(authParameters) { + return { + schemeId: "aws.auth#sigv4", + signingProperties: { + name: "sts", + region: authParameters.region, + }, + propertiesExtractor: (config, context) => ({ + signingProperties: { + config, + context, + }, + }), + }; +} +function createSmithyApiNoAuthHttpAuthOption(authParameters) { + return { + schemeId: "smithy.api#noAuth", + }; +} +export const defaultSTSHttpAuthSchemeProvider = (authParameters) => { + const options = []; + switch (authParameters.operation) { + case "AssumeRoleWithWebIdentity": { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + default: { + options.push(createAwsAuthSigv4HttpAuthOption(authParameters)); + } + } + return options; +}; +export const resolveStsAuthConfig = (input) => Object.assign(input, { + stsClientCtor: STSClient, +}); +export const resolveHttpAuthSchemeConfig = (config) => { + const config_0 = resolveStsAuthConfig(config); + const config_1 = resolveAwsSdkSigV4Config(config_0); + return Object.assign(config_1, { + authSchemePreference: normalizeProvider(config.authSchemePreference ?? []), + }); +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/AssumeRoleCommand.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/AssumeRoleCommand.js new file mode 100644 index 000000000..c8d64b627 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/AssumeRoleCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { AssumeRole$ } from "../schemas/schemas_0"; +export { $Command }; +export class AssumeRoleCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSSecurityTokenServiceV20110615", "AssumeRole", {}) + .n("STSClient", "AssumeRoleCommand") + .sc(AssumeRole$) + .build() { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.js new file mode 100644 index 000000000..d8c551ed9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { AssumeRoleWithWebIdentity$ } from "../schemas/schemas_0"; +export { $Command }; +export class AssumeRoleWithWebIdentityCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSSecurityTokenServiceV20110615", "AssumeRoleWithWebIdentity", {}) + .n("STSClient", "AssumeRoleWithWebIdentityCommand") + .sc(AssumeRoleWithWebIdentity$) + .build() { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/index.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/index.js new file mode 100644 index 000000000..0f200f52c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/index.js @@ -0,0 +1,2 @@ +export * from "./AssumeRoleCommand"; +export * from "./AssumeRoleWithWebIdentityCommand"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/defaultRoleAssumers.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/defaultRoleAssumers.js new file mode 100644 index 000000000..aafb8c4eb --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/defaultRoleAssumers.js @@ -0,0 +1,22 @@ +import { getDefaultRoleAssumer as StsGetDefaultRoleAssumer, getDefaultRoleAssumerWithWebIdentity as StsGetDefaultRoleAssumerWithWebIdentity, } from "./defaultStsRoleAssumers"; +import { STSClient } from "./STSClient"; +const getCustomizableStsClientCtor = (baseCtor, customizations) => { + if (!customizations) + return baseCtor; + else + return class CustomizableSTSClient extends baseCtor { + constructor(config) { + super(config); + for (const customization of customizations) { + this.middlewareStack.use(customization); + } + } + }; +}; +export const getDefaultRoleAssumer = (stsOptions = {}, stsPlugins) => StsGetDefaultRoleAssumer(stsOptions, getCustomizableStsClientCtor(STSClient, stsPlugins)); +export const getDefaultRoleAssumerWithWebIdentity = (stsOptions = {}, stsPlugins) => StsGetDefaultRoleAssumerWithWebIdentity(stsOptions, getCustomizableStsClientCtor(STSClient, stsPlugins)); +export const decorateDefaultCredentialProvider = (provider) => (input) => provider({ + roleAssumer: getDefaultRoleAssumer(input), + roleAssumerWithWebIdentity: getDefaultRoleAssumerWithWebIdentity(input), + ...input, +}); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/defaultStsRoleAssumers.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/defaultStsRoleAssumers.js new file mode 100644 index 000000000..befc3b606 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/defaultStsRoleAssumers.js @@ -0,0 +1,107 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +import { stsRegionDefaultResolver } from "@aws-sdk/region-config-resolver"; +import { AssumeRoleCommand } from "./commands/AssumeRoleCommand"; +import { AssumeRoleWithWebIdentityCommand } from "./commands/AssumeRoleWithWebIdentityCommand"; +const getAccountIdFromAssumedRoleUser = (assumedRoleUser) => { + if (typeof assumedRoleUser?.Arn === "string") { + const arnComponents = assumedRoleUser.Arn.split(":"); + if (arnComponents.length > 4 && arnComponents[4] !== "") { + return arnComponents[4]; + } + } + return undefined; +}; +const resolveRegion = async (_region, _parentRegion, credentialProviderLogger, loaderConfig = {}) => { + const region = typeof _region === "function" ? await _region() : _region; + const parentRegion = typeof _parentRegion === "function" ? await _parentRegion() : _parentRegion; + let stsDefaultRegion = ""; + const resolvedRegion = region ?? parentRegion ?? (stsDefaultRegion = await stsRegionDefaultResolver(loaderConfig)()); + credentialProviderLogger?.debug?.("@aws-sdk/client-sts::resolveRegion", "accepting first of:", `${region} (credential provider clientConfig)`, `${parentRegion} (contextual client)`, `${stsDefaultRegion} (STS default: AWS_REGION, profile region, or us-east-1)`); + return resolvedRegion; +}; +export const getDefaultRoleAssumer = (stsOptions, STSClient) => { + let stsClient; + let closureSourceCreds; + return async (sourceCreds, params) => { + closureSourceCreds = sourceCreds; + if (!stsClient) { + const { logger = stsOptions?.parentClientConfig?.logger, profile = stsOptions?.parentClientConfig?.profile, region, requestHandler = stsOptions?.parentClientConfig?.requestHandler, credentialProviderLogger, userAgentAppId = stsOptions?.parentClientConfig?.userAgentAppId, } = stsOptions; + const resolvedRegion = await resolveRegion(region, stsOptions?.parentClientConfig?.region, credentialProviderLogger, { + logger, + profile, + }); + const isCompatibleRequestHandler = !isH2(requestHandler); + stsClient = new STSClient({ + ...stsOptions, + userAgentAppId, + profile, + credentialDefaultProvider: () => async () => closureSourceCreds, + region: resolvedRegion, + requestHandler: isCompatibleRequestHandler ? requestHandler : undefined, + logger: logger, + }); + } + const { Credentials, AssumedRoleUser } = await stsClient.send(new AssumeRoleCommand(params)); + if (!Credentials || !Credentials.AccessKeyId || !Credentials.SecretAccessKey) { + throw new Error(`Invalid response from STS.assumeRole call with role ${params.RoleArn}`); + } + const accountId = getAccountIdFromAssumedRoleUser(AssumedRoleUser); + const credentials = { + accessKeyId: Credentials.AccessKeyId, + secretAccessKey: Credentials.SecretAccessKey, + sessionToken: Credentials.SessionToken, + expiration: Credentials.Expiration, + ...(Credentials.CredentialScope && { credentialScope: Credentials.CredentialScope }), + ...(accountId && { accountId }), + }; + setCredentialFeature(credentials, "CREDENTIALS_STS_ASSUME_ROLE", "i"); + return credentials; + }; +}; +export const getDefaultRoleAssumerWithWebIdentity = (stsOptions, STSClient) => { + let stsClient; + return async (params) => { + if (!stsClient) { + const { logger = stsOptions?.parentClientConfig?.logger, profile = stsOptions?.parentClientConfig?.profile, region, requestHandler = stsOptions?.parentClientConfig?.requestHandler, credentialProviderLogger, userAgentAppId = stsOptions?.parentClientConfig?.userAgentAppId, } = stsOptions; + const resolvedRegion = await resolveRegion(region, stsOptions?.parentClientConfig?.region, credentialProviderLogger, { + logger, + profile, + }); + const isCompatibleRequestHandler = !isH2(requestHandler); + stsClient = new STSClient({ + ...stsOptions, + userAgentAppId, + profile, + region: resolvedRegion, + requestHandler: isCompatibleRequestHandler ? requestHandler : undefined, + logger: logger, + }); + } + const { Credentials, AssumedRoleUser } = await stsClient.send(new AssumeRoleWithWebIdentityCommand(params)); + if (!Credentials || !Credentials.AccessKeyId || !Credentials.SecretAccessKey) { + throw new Error(`Invalid response from STS.assumeRoleWithWebIdentity call with role ${params.RoleArn}`); + } + const accountId = getAccountIdFromAssumedRoleUser(AssumedRoleUser); + const credentials = { + accessKeyId: Credentials.AccessKeyId, + secretAccessKey: Credentials.SecretAccessKey, + sessionToken: Credentials.SessionToken, + expiration: Credentials.Expiration, + ...(Credentials.CredentialScope && { credentialScope: Credentials.CredentialScope }), + ...(accountId && { accountId }), + }; + if (accountId) { + setCredentialFeature(credentials, "RESOLVED_ACCOUNT_ID", "T"); + } + setCredentialFeature(credentials, "CREDENTIALS_STS_ASSUME_ROLE_WEB_ID", "k"); + return credentials; + }; +}; +export const decorateDefaultCredentialProvider = (provider) => (input) => provider({ + roleAssumer: getDefaultRoleAssumer(input, input.stsClientCtor), + roleAssumerWithWebIdentity: getDefaultRoleAssumerWithWebIdentity(input, input.stsClientCtor), + ...input, +}); +const isH2 = (requestHandler) => { + return requestHandler?.metadata?.handlerProtocol === "h2"; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/EndpointParameters.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/EndpointParameters.js new file mode 100644 index 000000000..1c74b0130 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/EndpointParameters.js @@ -0,0 +1,15 @@ +export const resolveClientEndpointParameters = (options) => { + return Object.assign(options, { + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + useFipsEndpoint: options.useFipsEndpoint ?? false, + useGlobalEndpoint: options.useGlobalEndpoint ?? false, + defaultSigningName: "sts", + }); +}; +export const commonParams = { + UseGlobalEndpoint: { type: "builtInParams", name: "useGlobalEndpoint" }, + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }, +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/endpointResolver.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/endpointResolver.js new file mode 100644 index 000000000..f54d27901 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/endpointResolver.js @@ -0,0 +1,14 @@ +import { awsEndpointFunctions } from "@aws-sdk/util-endpoints"; +import { customEndpointFunctions, EndpointCache, resolveEndpoint } from "@smithy/util-endpoints"; +import { ruleSet } from "./ruleset"; +const cache = new EndpointCache({ + size: 50, + params: ["Endpoint", "Region", "UseDualStack", "UseFIPS", "UseGlobalEndpoint"], +}); +export const defaultEndpointResolver = (endpointParams, context = {}) => { + return cache.get(endpointParams, () => resolveEndpoint(ruleSet, { + endpointParams: endpointParams, + logger: context.logger, + })); +}; +customEndpointFunctions.aws = awsEndpointFunctions; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/ruleset.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/ruleset.js new file mode 100644 index 000000000..1eedbbdf1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/ruleset.js @@ -0,0 +1,142 @@ +const F = "required", G = "type", H = "fn", I = "argv", J = "ref"; +const a = false, b = true, c = "booleanEquals", d = "stringEquals", e = "sigv4", f = "sts", g = "us-east-1", h = "endpoint", i = "https://sts.{Region}.{PartitionResult#dnsSuffix}", j = "tree", k = "error", l = "getAttr", m = { [F]: false, [G]: "string" }, n = { [F]: true, default: false, [G]: "boolean" }, o = { [J]: "Endpoint" }, p = { [H]: "isSet", [I]: [{ [J]: "Region" }] }, q = { [J]: "Region" }, r = { [H]: "aws.partition", [I]: [q], assign: "PartitionResult" }, s = { [J]: "UseFIPS" }, t = { [J]: "UseDualStack" }, u = { + url: "https://sts.amazonaws.com", + properties: { authSchemes: [{ name: e, signingName: f, signingRegion: g }] }, + headers: {}, +}, v = {}, w = { conditions: [{ [H]: d, [I]: [q, "aws-global"] }], [h]: u, [G]: h }, x = { [H]: c, [I]: [s, true] }, y = { [H]: c, [I]: [t, true] }, z = { [H]: l, [I]: [{ [J]: "PartitionResult" }, "supportsFIPS"] }, A = { [J]: "PartitionResult" }, B = { [H]: c, [I]: [true, { [H]: l, [I]: [A, "supportsDualStack"] }] }, C = [{ [H]: "isSet", [I]: [o] }], D = [x], E = [y]; +const _data = { + version: "1.0", + parameters: { Region: m, UseDualStack: n, UseFIPS: n, Endpoint: m, UseGlobalEndpoint: n }, + rules: [ + { + conditions: [ + { [H]: c, [I]: [{ [J]: "UseGlobalEndpoint" }, b] }, + { [H]: "not", [I]: C }, + p, + r, + { [H]: c, [I]: [s, a] }, + { [H]: c, [I]: [t, a] }, + ], + rules: [ + { conditions: [{ [H]: d, [I]: [q, "ap-northeast-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "ap-south-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "ap-southeast-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "ap-southeast-2"] }], endpoint: u, [G]: h }, + w, + { conditions: [{ [H]: d, [I]: [q, "ca-central-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "eu-central-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "eu-north-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "eu-west-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "eu-west-2"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "eu-west-3"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "sa-east-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, g] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "us-east-2"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "us-west-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "us-west-2"] }], endpoint: u, [G]: h }, + { + endpoint: { + url: i, + properties: { authSchemes: [{ name: e, signingName: f, signingRegion: "{Region}" }] }, + headers: v, + }, + [G]: h, + }, + ], + [G]: j, + }, + { + conditions: C, + rules: [ + { conditions: D, error: "Invalid Configuration: FIPS and custom endpoint are not supported", [G]: k }, + { conditions: E, error: "Invalid Configuration: Dualstack and custom endpoint are not supported", [G]: k }, + { endpoint: { url: o, properties: v, headers: v }, [G]: h }, + ], + [G]: j, + }, + { + conditions: [p], + rules: [ + { + conditions: [r], + rules: [ + { + conditions: [x, y], + rules: [ + { + conditions: [{ [H]: c, [I]: [b, z] }, B], + rules: [ + { + endpoint: { + url: "https://sts-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: v, + headers: v, + }, + [G]: h, + }, + ], + [G]: j, + }, + { error: "FIPS and DualStack are enabled, but this partition does not support one or both", [G]: k }, + ], + [G]: j, + }, + { + conditions: D, + rules: [ + { + conditions: [{ [H]: c, [I]: [z, b] }], + rules: [ + { + conditions: [{ [H]: d, [I]: [{ [H]: l, [I]: [A, "name"] }, "aws-us-gov"] }], + endpoint: { url: "https://sts.{Region}.amazonaws.com", properties: v, headers: v }, + [G]: h, + }, + { + endpoint: { + url: "https://sts-fips.{Region}.{PartitionResult#dnsSuffix}", + properties: v, + headers: v, + }, + [G]: h, + }, + ], + [G]: j, + }, + { error: "FIPS is enabled but this partition does not support FIPS", [G]: k }, + ], + [G]: j, + }, + { + conditions: E, + rules: [ + { + conditions: [B], + rules: [ + { + endpoint: { + url: "https://sts.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: v, + headers: v, + }, + [G]: h, + }, + ], + [G]: j, + }, + { error: "DualStack is enabled but this partition does not support DualStack", [G]: k }, + ], + [G]: j, + }, + w, + { endpoint: { url: i, properties: v, headers: v }, [G]: h }, + ], + [G]: j, + }, + ], + [G]: j, + }, + { error: "Invalid Configuration: Missing Region", [G]: k }, + ], +}; +export const ruleSet = _data; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/extensionConfiguration.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/extensionConfiguration.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/extensionConfiguration.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/index.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/index.js new file mode 100644 index 000000000..b77613ad7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/index.js @@ -0,0 +1,8 @@ +export * from "./STSClient"; +export * from "./STS"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./models/errors"; +export * from "./models/models_0"; +export * from "./defaultRoleAssumers"; +export { STSServiceException } from "./models/STSServiceException"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/models/STSServiceException.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/models/STSServiceException.js new file mode 100644 index 000000000..6d2963c78 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/models/STSServiceException.js @@ -0,0 +1,8 @@ +import { ServiceException as __ServiceException, } from "@smithy/smithy-client"; +export { __ServiceException }; +export class STSServiceException extends __ServiceException { + constructor(options) { + super(options); + Object.setPrototypeOf(this, STSServiceException.prototype); + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/models/errors.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/models/errors.js new file mode 100644 index 000000000..d3447c2d0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/models/errors.js @@ -0,0 +1,85 @@ +import { STSServiceException as __BaseException } from "./STSServiceException"; +export class ExpiredTokenException extends __BaseException { + name = "ExpiredTokenException"; + $fault = "client"; + constructor(opts) { + super({ + name: "ExpiredTokenException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ExpiredTokenException.prototype); + } +} +export class MalformedPolicyDocumentException extends __BaseException { + name = "MalformedPolicyDocumentException"; + $fault = "client"; + constructor(opts) { + super({ + name: "MalformedPolicyDocumentException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, MalformedPolicyDocumentException.prototype); + } +} +export class PackedPolicyTooLargeException extends __BaseException { + name = "PackedPolicyTooLargeException"; + $fault = "client"; + constructor(opts) { + super({ + name: "PackedPolicyTooLargeException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, PackedPolicyTooLargeException.prototype); + } +} +export class RegionDisabledException extends __BaseException { + name = "RegionDisabledException"; + $fault = "client"; + constructor(opts) { + super({ + name: "RegionDisabledException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, RegionDisabledException.prototype); + } +} +export class IDPRejectedClaimException extends __BaseException { + name = "IDPRejectedClaimException"; + $fault = "client"; + constructor(opts) { + super({ + name: "IDPRejectedClaimException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, IDPRejectedClaimException.prototype); + } +} +export class InvalidIdentityTokenException extends __BaseException { + name = "InvalidIdentityTokenException"; + $fault = "client"; + constructor(opts) { + super({ + name: "InvalidIdentityTokenException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidIdentityTokenException.prototype); + } +} +export class IDPCommunicationErrorException extends __BaseException { + name = "IDPCommunicationErrorException"; + $fault = "client"; + constructor(opts) { + super({ + name: "IDPCommunicationErrorException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, IDPCommunicationErrorException.prototype); + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/models/models_0.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/models/models_0.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/models/models_0.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.browser.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.browser.js new file mode 100644 index 000000000..2102cbdaa --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.browser.js @@ -0,0 +1,34 @@ +import packageInfo from "../../../package.json"; +import { Sha256 } from "@aws-crypto/sha256-browser"; +import { createDefaultUserAgentProvider } from "@aws-sdk/util-user-agent-browser"; +import { DEFAULT_USE_DUALSTACK_ENDPOINT, DEFAULT_USE_FIPS_ENDPOINT } from "@smithy/config-resolver"; +import { FetchHttpHandler as RequestHandler, streamCollector } from "@smithy/fetch-http-handler"; +import { invalidProvider } from "@smithy/invalid-dependency"; +import { loadConfigsForDefaultMode } from "@smithy/smithy-client"; +import { calculateBodyLength } from "@smithy/util-body-length-browser"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-browser"; +import { DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_MODE } from "@smithy/util-retry"; +import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; +export const getRuntimeConfig = (config) => { + const defaultsMode = resolveDefaultsModeConfig(config); + const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode); + const clientSharedValues = getSharedRuntimeConfig(config); + return { + ...clientSharedValues, + ...config, + runtime: "browser", + defaultsMode, + bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength, + credentialDefaultProvider: config?.credentialDefaultProvider ?? ((_) => () => Promise.reject(new Error("Credential is missing"))), + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }), + maxAttempts: config?.maxAttempts ?? DEFAULT_MAX_ATTEMPTS, + region: config?.region ?? invalidProvider("Region is missing"), + requestHandler: RequestHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? (async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE), + sha256: config?.sha256 ?? Sha256, + streamCollector: config?.streamCollector ?? streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (() => Promise.resolve(DEFAULT_USE_DUALSTACK_ENDPOINT)), + useFipsEndpoint: config?.useFipsEndpoint ?? (() => Promise.resolve(DEFAULT_USE_FIPS_ENDPOINT)), + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.js new file mode 100644 index 000000000..e30db8e14 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.js @@ -0,0 +1,62 @@ +import packageInfo from "../../../package.json"; +import { AwsSdkSigV4Signer, emitWarningIfUnsupportedVersion as awsCheckVersion, NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, } from "@aws-sdk/core"; +import { createDefaultUserAgentProvider, NODE_APP_ID_CONFIG_OPTIONS } from "@aws-sdk/util-user-agent-node"; +import { NODE_REGION_CONFIG_FILE_OPTIONS, NODE_REGION_CONFIG_OPTIONS, NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, } from "@smithy/config-resolver"; +import { NoAuthSigner } from "@smithy/core"; +import { Hash } from "@smithy/hash-node"; +import { NODE_MAX_ATTEMPT_CONFIG_OPTIONS, NODE_RETRY_MODE_CONFIG_OPTIONS } from "@smithy/middleware-retry"; +import { loadConfig as loadNodeConfig } from "@smithy/node-config-provider"; +import { NodeHttpHandler as RequestHandler, streamCollector } from "@smithy/node-http-handler"; +import { emitWarningIfUnsupportedVersion, loadConfigsForDefaultMode } from "@smithy/smithy-client"; +import { calculateBodyLength } from "@smithy/util-body-length-node"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-node"; +import { DEFAULT_RETRY_MODE } from "@smithy/util-retry"; +import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; +export const getRuntimeConfig = (config) => { + emitWarningIfUnsupportedVersion(process.version); + const defaultsMode = resolveDefaultsModeConfig(config); + const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode); + const clientSharedValues = getSharedRuntimeConfig(config); + awsCheckVersion(process.version); + const loaderConfig = { + profile: config?.profile, + logger: clientSharedValues.logger, + }; + return { + ...clientSharedValues, + ...config, + runtime: "node", + defaultsMode, + authSchemePreference: config?.authSchemePreference ?? loadNodeConfig(NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig), + bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }), + httpAuthSchemes: config?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: (ipc) => ipc.getIdentityProvider("aws.auth#sigv4") || + (async (idProps) => await config.credentialDefaultProvider(idProps?.__config || {})()), + signer: new AwsSdkSigV4Signer(), + }, + { + schemeId: "smithy.api#noAuth", + identityProvider: (ipc) => ipc.getIdentityProvider("smithy.api#noAuth") || (async () => ({})), + signer: new NoAuthSigner(), + }, + ], + maxAttempts: config?.maxAttempts ?? loadNodeConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config), + region: config?.region ?? + loadNodeConfig(NODE_REGION_CONFIG_OPTIONS, { ...NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }), + requestHandler: RequestHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? + loadNodeConfig({ + ...NODE_RETRY_MODE_CONFIG_OPTIONS, + default: async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE, + }, config), + sha256: config?.sha256 ?? Hash.bind(null, "sha256"), + streamCollector: config?.streamCollector ?? streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? loadNodeConfig(NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + useFipsEndpoint: config?.useFipsEndpoint ?? loadNodeConfig(NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + userAgentAppId: config?.userAgentAppId ?? loadNodeConfig(NODE_APP_ID_CONFIG_OPTIONS, loaderConfig), + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.native.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.native.js new file mode 100644 index 000000000..0b5469528 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.native.js @@ -0,0 +1,11 @@ +import { Sha256 } from "@aws-crypto/sha256-js"; +import { getRuntimeConfig as getBrowserRuntimeConfig } from "./runtimeConfig.browser"; +export const getRuntimeConfig = (config) => { + const browserDefaults = getBrowserRuntimeConfig(config); + return { + ...browserDefaults, + ...config, + runtime: "react-native", + sha256: config?.sha256 ?? Sha256, + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.shared.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.shared.js new file mode 100644 index 000000000..ad8a08a43 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.shared.js @@ -0,0 +1,46 @@ +import { AwsSdkSigV4Signer } from "@aws-sdk/core"; +import { AwsQueryProtocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; +import { NoOpLogger } from "@smithy/smithy-client"; +import { parseUrl } from "@smithy/url-parser"; +import { fromBase64, toBase64 } from "@smithy/util-base64"; +import { fromUtf8, toUtf8 } from "@smithy/util-utf8"; +import { defaultSTSHttpAuthSchemeProvider } from "./auth/httpAuthSchemeProvider"; +import { defaultEndpointResolver } from "./endpoint/endpointResolver"; +import { errorTypeRegistries } from "./schemas/schemas_0"; +export const getRuntimeConfig = (config) => { + return { + apiVersion: "2011-06-15", + base64Decoder: config?.base64Decoder ?? fromBase64, + base64Encoder: config?.base64Encoder ?? toBase64, + disableHostPrefix: config?.disableHostPrefix ?? false, + endpointProvider: config?.endpointProvider ?? defaultEndpointResolver, + extensions: config?.extensions ?? [], + httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? defaultSTSHttpAuthSchemeProvider, + httpAuthSchemes: config?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: (ipc) => ipc.getIdentityProvider("aws.auth#sigv4"), + signer: new AwsSdkSigV4Signer(), + }, + { + schemeId: "smithy.api#noAuth", + identityProvider: (ipc) => ipc.getIdentityProvider("smithy.api#noAuth") || (async () => ({})), + signer: new NoAuthSigner(), + }, + ], + logger: config?.logger ?? new NoOpLogger(), + protocol: config?.protocol ?? AwsQueryProtocol, + protocolSettings: config?.protocolSettings ?? { + defaultNamespace: "com.amazonaws.sts", + errorTypeRegistries, + xmlNamespace: "https://sts.amazonaws.com/doc/2011-06-15/", + version: "2011-06-15", + serviceTarget: "AWSSecurityTokenServiceV20110615", + }, + serviceId: config?.serviceId ?? "STS", + urlParser: config?.urlParser ?? parseUrl, + utf8Decoder: config?.utf8Decoder ?? fromUtf8, + utf8Encoder: config?.utf8Encoder ?? toUtf8, + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeExtensions.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeExtensions.js new file mode 100644 index 000000000..5b296950d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeExtensions.js @@ -0,0 +1,9 @@ +import { getAwsRegionExtensionConfiguration, resolveAwsRegionExtensionConfiguration, } from "@aws-sdk/region-config-resolver"; +import { getHttpHandlerExtensionConfiguration, resolveHttpHandlerRuntimeConfig } from "@smithy/protocol-http"; +import { getDefaultExtensionConfiguration, resolveDefaultRuntimeConfig } from "@smithy/smithy-client"; +import { getHttpAuthExtensionConfiguration, resolveHttpAuthRuntimeConfig } from "./auth/httpAuthExtensionConfiguration"; +export const resolveRuntimeExtensions = (runtimeConfig, extensions) => { + const extensionConfiguration = Object.assign(getAwsRegionExtensionConfiguration(runtimeConfig), getDefaultExtensionConfiguration(runtimeConfig), getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig)); + extensions.forEach((extension) => extension.configure(extensionConfiguration)); + return Object.assign(runtimeConfig, resolveAwsRegionExtensionConfiguration(extensionConfiguration), resolveDefaultRuntimeConfig(extensionConfiguration), resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration)); +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/schemas/schemas_0.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/schemas/schemas_0.js new file mode 100644 index 000000000..144d0a3cc --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/schemas/schemas_0.js @@ -0,0 +1,192 @@ +const _A = "Arn"; +const _AKI = "AccessKeyId"; +const _AR = "AssumeRole"; +const _ARI = "AssumedRoleId"; +const _ARR = "AssumeRoleRequest"; +const _ARRs = "AssumeRoleResponse"; +const _ARU = "AssumedRoleUser"; +const _ARWWI = "AssumeRoleWithWebIdentity"; +const _ARWWIR = "AssumeRoleWithWebIdentityRequest"; +const _ARWWIRs = "AssumeRoleWithWebIdentityResponse"; +const _Au = "Audience"; +const _C = "Credentials"; +const _CA = "ContextAssertion"; +const _DS = "DurationSeconds"; +const _E = "Expiration"; +const _EI = "ExternalId"; +const _ETE = "ExpiredTokenException"; +const _IDPCEE = "IDPCommunicationErrorException"; +const _IDPRCE = "IDPRejectedClaimException"; +const _IITE = "InvalidIdentityTokenException"; +const _K = "Key"; +const _MPDE = "MalformedPolicyDocumentException"; +const _P = "Policy"; +const _PA = "PolicyArns"; +const _PAr = "ProviderArn"; +const _PC = "ProvidedContexts"; +const _PCLT = "ProvidedContextsListType"; +const _PCr = "ProvidedContext"; +const _PDT = "PolicyDescriptorType"; +const _PI = "ProviderId"; +const _PPS = "PackedPolicySize"; +const _PPTLE = "PackedPolicyTooLargeException"; +const _Pr = "Provider"; +const _RA = "RoleArn"; +const _RDE = "RegionDisabledException"; +const _RSN = "RoleSessionName"; +const _SAK = "SecretAccessKey"; +const _SFWIT = "SubjectFromWebIdentityToken"; +const _SI = "SourceIdentity"; +const _SN = "SerialNumber"; +const _ST = "SessionToken"; +const _T = "Tags"; +const _TC = "TokenCode"; +const _TTK = "TransitiveTagKeys"; +const _Ta = "Tag"; +const _V = "Value"; +const _WIT = "WebIdentityToken"; +const _a = "arn"; +const _aKST = "accessKeySecretType"; +const _aQE = "awsQueryError"; +const _c = "client"; +const _cTT = "clientTokenType"; +const _e = "error"; +const _hE = "httpError"; +const _m = "message"; +const _pDLT = "policyDescriptorListType"; +const _s = "smithy.ts.sdk.synthetic.com.amazonaws.sts"; +const _tLT = "tagListType"; +const n0 = "com.amazonaws.sts"; +import { TypeRegistry } from "@smithy/core/schema"; +import { ExpiredTokenException, IDPCommunicationErrorException, IDPRejectedClaimException, InvalidIdentityTokenException, MalformedPolicyDocumentException, PackedPolicyTooLargeException, RegionDisabledException, } from "../models/errors"; +import { STSServiceException } from "../models/STSServiceException"; +const _s_registry = TypeRegistry.for(_s); +export var STSServiceException$ = [-3, _s, "STSServiceException", 0, [], []]; +_s_registry.registerError(STSServiceException$, STSServiceException); +const n0_registry = TypeRegistry.for(n0); +export var ExpiredTokenException$ = [ + -3, + n0, + _ETE, + { [_aQE]: [`ExpiredTokenException`, 400], [_e]: _c, [_hE]: 400 }, + [_m], + [0], +]; +n0_registry.registerError(ExpiredTokenException$, ExpiredTokenException); +export var IDPCommunicationErrorException$ = [ + -3, + n0, + _IDPCEE, + { [_aQE]: [`IDPCommunicationError`, 400], [_e]: _c, [_hE]: 400 }, + [_m], + [0], +]; +n0_registry.registerError(IDPCommunicationErrorException$, IDPCommunicationErrorException); +export var IDPRejectedClaimException$ = [ + -3, + n0, + _IDPRCE, + { [_aQE]: [`IDPRejectedClaim`, 403], [_e]: _c, [_hE]: 403 }, + [_m], + [0], +]; +n0_registry.registerError(IDPRejectedClaimException$, IDPRejectedClaimException); +export var InvalidIdentityTokenException$ = [ + -3, + n0, + _IITE, + { [_aQE]: [`InvalidIdentityToken`, 400], [_e]: _c, [_hE]: 400 }, + [_m], + [0], +]; +n0_registry.registerError(InvalidIdentityTokenException$, InvalidIdentityTokenException); +export var MalformedPolicyDocumentException$ = [ + -3, + n0, + _MPDE, + { [_aQE]: [`MalformedPolicyDocument`, 400], [_e]: _c, [_hE]: 400 }, + [_m], + [0], +]; +n0_registry.registerError(MalformedPolicyDocumentException$, MalformedPolicyDocumentException); +export var PackedPolicyTooLargeException$ = [ + -3, + n0, + _PPTLE, + { [_aQE]: [`PackedPolicyTooLarge`, 400], [_e]: _c, [_hE]: 400 }, + [_m], + [0], +]; +n0_registry.registerError(PackedPolicyTooLargeException$, PackedPolicyTooLargeException); +export var RegionDisabledException$ = [ + -3, + n0, + _RDE, + { [_aQE]: [`RegionDisabledException`, 403], [_e]: _c, [_hE]: 403 }, + [_m], + [0], +]; +n0_registry.registerError(RegionDisabledException$, RegionDisabledException); +export const errorTypeRegistries = [_s_registry, n0_registry]; +var accessKeySecretType = [0, n0, _aKST, 8, 0]; +var clientTokenType = [0, n0, _cTT, 8, 0]; +export var AssumedRoleUser$ = [3, n0, _ARU, 0, [_ARI, _A], [0, 0], 2]; +export var AssumeRoleRequest$ = [ + 3, + n0, + _ARR, + 0, + [_RA, _RSN, _PA, _P, _DS, _T, _TTK, _EI, _SN, _TC, _SI, _PC], + [0, 0, () => policyDescriptorListType, 0, 1, () => tagListType, 64 | 0, 0, 0, 0, 0, () => ProvidedContextsListType], + 2, +]; +export var AssumeRoleResponse$ = [ + 3, + n0, + _ARRs, + 0, + [_C, _ARU, _PPS, _SI], + [[() => Credentials$, 0], () => AssumedRoleUser$, 1, 0], +]; +export var AssumeRoleWithWebIdentityRequest$ = [ + 3, + n0, + _ARWWIR, + 0, + [_RA, _RSN, _WIT, _PI, _PA, _P, _DS], + [0, 0, [() => clientTokenType, 0], 0, () => policyDescriptorListType, 0, 1], + 3, +]; +export var AssumeRoleWithWebIdentityResponse$ = [ + 3, + n0, + _ARWWIRs, + 0, + [_C, _SFWIT, _ARU, _PPS, _Pr, _Au, _SI], + [[() => Credentials$, 0], 0, () => AssumedRoleUser$, 1, 0, 0, 0], +]; +export var Credentials$ = [ + 3, + n0, + _C, + 0, + [_AKI, _SAK, _ST, _E], + [0, [() => accessKeySecretType, 0], 0, 4], + 4, +]; +export var PolicyDescriptorType$ = [3, n0, _PDT, 0, [_a], [0]]; +export var ProvidedContext$ = [3, n0, _PCr, 0, [_PAr, _CA], [0, 0]]; +export var Tag$ = [3, n0, _Ta, 0, [_K, _V], [0, 0], 2]; +var policyDescriptorListType = [1, n0, _pDLT, 0, () => PolicyDescriptorType$]; +var ProvidedContextsListType = [1, n0, _PCLT, 0, () => ProvidedContext$]; +var tagKeyListType = 64 | 0; +var tagListType = [1, n0, _tLT, 0, () => Tag$]; +export var AssumeRole$ = [9, n0, _AR, 0, () => AssumeRoleRequest$, () => AssumeRoleResponse$]; +export var AssumeRoleWithWebIdentity$ = [ + 9, + n0, + _ARWWI, + 0, + () => AssumeRoleWithWebIdentityRequest$, + () => AssumeRoleWithWebIdentityResponse$, +]; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/index.d.ts new file mode 100644 index 000000000..9d99a73c2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/index.d.ts @@ -0,0 +1,7 @@ +/** + * This package exports nothing at the root. + * Use submodules e.g. \@aws-sdk/nested-clients/client-sts. + * + * @internal + */ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/CognitoIdentity.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/CognitoIdentity.d.ts new file mode 100644 index 000000000..b9a944c6d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/CognitoIdentity.d.ts @@ -0,0 +1,38 @@ +import type { HttpHandlerOptions as __HttpHandlerOptions } from "@smithy/types"; +import { CognitoIdentityClient } from "./CognitoIdentityClient"; +import type { GetCredentialsForIdentityCommandInput, GetCredentialsForIdentityCommandOutput } from "./commands/GetCredentialsForIdentityCommand"; +import type { GetIdCommandInput, GetIdCommandOutput } from "./commands/GetIdCommand"; +export interface CognitoIdentity { + /** + * @see {@link GetCredentialsForIdentityCommand} + */ + getCredentialsForIdentity(args: GetCredentialsForIdentityCommandInput, options?: __HttpHandlerOptions): Promise; + getCredentialsForIdentity(args: GetCredentialsForIdentityCommandInput, cb: (err: any, data?: GetCredentialsForIdentityCommandOutput) => void): void; + getCredentialsForIdentity(args: GetCredentialsForIdentityCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetCredentialsForIdentityCommandOutput) => void): void; + /** + * @see {@link GetIdCommand} + */ + getId(args: GetIdCommandInput, options?: __HttpHandlerOptions): Promise; + getId(args: GetIdCommandInput, cb: (err: any, data?: GetIdCommandOutput) => void): void; + getId(args: GetIdCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetIdCommandOutput) => void): void; +} +/** + * Amazon Cognito Federated Identities + *

Amazon Cognito Federated Identities is a web service that delivers scoped temporary + * credentials to mobile devices and other untrusted environments. It uniquely identifies a + * device and supplies the user with a consistent identity over the lifetime of an + * application.

+ *

Using Amazon Cognito Federated Identities, you can enable authentication with one or + * more third-party identity providers (Facebook, Google, or Login with Amazon) or an Amazon + * Cognito user pool, and you can also choose to support unauthenticated access from your app. + * Cognito delivers a unique identifier for each user and acts as an OpenID token provider + * trusted by Security Token Service (STS) to access temporary, limited-privilege Amazon Web Services credentials.

+ *

For a description of the authentication flow from the Amazon Cognito Developer Guide + * see Authentication + * Flow.

+ *

For more information see Amazon Cognito Federated + * Identities.

+ * @public + */ +export declare class CognitoIdentity extends CognitoIdentityClient implements CognitoIdentity { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/CognitoIdentityClient.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/CognitoIdentityClient.d.ts new file mode 100644 index 000000000..d41fbe3a9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/CognitoIdentityClient.d.ts @@ -0,0 +1,198 @@ +import { type HostHeaderInputConfig, type HostHeaderResolvedConfig } from "@aws-sdk/middleware-host-header"; +import { type UserAgentInputConfig, type UserAgentResolvedConfig } from "@aws-sdk/middleware-user-agent"; +import { type RegionInputConfig, type RegionResolvedConfig } from "@smithy/config-resolver"; +import { type EndpointInputConfig, type EndpointResolvedConfig } from "@smithy/middleware-endpoint"; +import { type RetryInputConfig, type RetryResolvedConfig } from "@smithy/middleware-retry"; +import type { HttpHandlerUserInput as __HttpHandlerUserInput } from "@smithy/protocol-http"; +import { type DefaultsMode as __DefaultsMode, type SmithyConfiguration as __SmithyConfiguration, type SmithyResolvedConfiguration as __SmithyResolvedConfiguration, Client as __Client } from "@smithy/smithy-client"; +import type { Provider, UserAgent as __UserAgent } from "@smithy/types"; +import { type BodyLengthCalculator as __BodyLengthCalculator, type CheckOptionalClientConfig as __CheckOptionalClientConfig, type ChecksumConstructor as __ChecksumConstructor, type Decoder as __Decoder, type Encoder as __Encoder, type HashConstructor as __HashConstructor, type HttpHandlerOptions as __HttpHandlerOptions, type Logger as __Logger, type Provider as __Provider, type StreamCollector as __StreamCollector, type UrlParser as __UrlParser } from "@smithy/types"; +import { type HttpAuthSchemeInputConfig, type HttpAuthSchemeResolvedConfig } from "./auth/httpAuthSchemeProvider"; +import type { GetCredentialsForIdentityCommandInput, GetCredentialsForIdentityCommandOutput } from "./commands/GetCredentialsForIdentityCommand"; +import type { GetIdCommandInput, GetIdCommandOutput } from "./commands/GetIdCommand"; +import type { ClientInputEndpointParameters, ClientResolvedEndpointParameters, EndpointParameters } from "./endpoint/EndpointParameters"; +import { type RuntimeExtension, type RuntimeExtensionsConfig } from "./runtimeExtensions"; +export { __Client }; +/** + * @public + */ +export type ServiceInputTypes = GetCredentialsForIdentityCommandInput | GetIdCommandInput; +/** + * @public + */ +export type ServiceOutputTypes = GetCredentialsForIdentityCommandOutput | GetIdCommandOutput; +/** + * @public + */ +export interface ClientDefaults extends Partial<__SmithyConfiguration<__HttpHandlerOptions>> { + /** + * The HTTP handler to use or its constructor options. Fetch in browser and Https in Nodejs. + */ + requestHandler?: __HttpHandlerUserInput; + /** + * A constructor for a class implementing the {@link @smithy/types#ChecksumConstructor} interface + * that computes the SHA-256 HMAC or checksum of a string or binary buffer. + * @internal + */ + sha256?: __ChecksumConstructor | __HashConstructor; + /** + * The function that will be used to convert strings into HTTP endpoints. + * @internal + */ + urlParser?: __UrlParser; + /** + * A function that can calculate the length of a request body. + * @internal + */ + bodyLengthChecker?: __BodyLengthCalculator; + /** + * A function that converts a stream into an array of bytes. + * @internal + */ + streamCollector?: __StreamCollector; + /** + * The function that will be used to convert a base64-encoded string to a byte array. + * @internal + */ + base64Decoder?: __Decoder; + /** + * The function that will be used to convert binary data to a base64-encoded string. + * @internal + */ + base64Encoder?: __Encoder; + /** + * The function that will be used to convert a UTF8-encoded string to a byte array. + * @internal + */ + utf8Decoder?: __Decoder; + /** + * The function that will be used to convert binary data to a UTF-8 encoded string. + * @internal + */ + utf8Encoder?: __Encoder; + /** + * The runtime environment. + * @internal + */ + runtime?: string; + /** + * Disable dynamically changing the endpoint of the client based on the hostPrefix + * trait of an operation. + */ + disableHostPrefix?: boolean; + /** + * Unique service identifier. + * @internal + */ + serviceId?: string; + /** + * Enables IPv6/IPv4 dualstack endpoint. + */ + useDualstackEndpoint?: boolean | __Provider; + /** + * Enables FIPS compatible endpoints. + */ + useFipsEndpoint?: boolean | __Provider; + /** + * The AWS region to which this client will send requests + */ + region?: string | __Provider; + /** + * Setting a client profile is similar to setting a value for the + * AWS_PROFILE environment variable. Setting a profile on a client + * in code only affects the single client instance, unlike AWS_PROFILE. + * + * When set, and only for environments where an AWS configuration + * file exists, fields configurable by this file will be retrieved + * from the specified profile within that file. + * Conflicting code configuration and environment variables will + * still have higher priority. + * + * For client credential resolution that involves checking the AWS + * configuration file, the client's profile (this value) will be + * used unless a different profile is set in the credential + * provider options. + * + */ + profile?: string; + /** + * The provider populating default tracking information to be sent with `user-agent`, `x-amz-user-agent` header + * @internal + */ + defaultUserAgentProvider?: Provider<__UserAgent>; + /** + * Value for how many times a request will be made at most in case of retry. + */ + maxAttempts?: number | __Provider; + /** + * Specifies which retry algorithm to use. + * @see https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-util-retry/Enum/RETRY_MODES/ + * + */ + retryMode?: string | __Provider; + /** + * Optional logger for logging debug/info/warn/error. + */ + logger?: __Logger; + /** + * Optional extensions + */ + extensions?: RuntimeExtension[]; + /** + * The {@link @smithy/smithy-client#DefaultsMode} that will be used to determine how certain default configuration options are resolved in the SDK. + */ + defaultsMode?: __DefaultsMode | __Provider<__DefaultsMode>; +} +/** + * @public + */ +export type CognitoIdentityClientConfigType = Partial<__SmithyConfiguration<__HttpHandlerOptions>> & ClientDefaults & UserAgentInputConfig & RetryInputConfig & RegionInputConfig & HostHeaderInputConfig & EndpointInputConfig & HttpAuthSchemeInputConfig & ClientInputEndpointParameters; +/** + * @public + * + * The configuration interface of CognitoIdentityClient class constructor that set the region, credentials and other options. + */ +export interface CognitoIdentityClientConfig extends CognitoIdentityClientConfigType { +} +/** + * @public + */ +export type CognitoIdentityClientResolvedConfigType = __SmithyResolvedConfiguration<__HttpHandlerOptions> & Required & RuntimeExtensionsConfig & UserAgentResolvedConfig & RetryResolvedConfig & RegionResolvedConfig & HostHeaderResolvedConfig & EndpointResolvedConfig & HttpAuthSchemeResolvedConfig & ClientResolvedEndpointParameters; +/** + * @public + * + * The resolved configuration interface of CognitoIdentityClient class. This is resolved and normalized from the {@link CognitoIdentityClientConfig | constructor configuration interface}. + */ +export interface CognitoIdentityClientResolvedConfig extends CognitoIdentityClientResolvedConfigType { +} +/** + * Amazon Cognito Federated Identities + *

Amazon Cognito Federated Identities is a web service that delivers scoped temporary + * credentials to mobile devices and other untrusted environments. It uniquely identifies a + * device and supplies the user with a consistent identity over the lifetime of an + * application.

+ *

Using Amazon Cognito Federated Identities, you can enable authentication with one or + * more third-party identity providers (Facebook, Google, or Login with Amazon) or an Amazon + * Cognito user pool, and you can also choose to support unauthenticated access from your app. + * Cognito delivers a unique identifier for each user and acts as an OpenID token provider + * trusted by Security Token Service (STS) to access temporary, limited-privilege Amazon Web Services credentials.

+ *

For a description of the authentication flow from the Amazon Cognito Developer Guide + * see Authentication + * Flow.

+ *

For more information see Amazon Cognito Federated + * Identities.

+ * @public + */ +export declare class CognitoIdentityClient extends __Client<__HttpHandlerOptions, ServiceInputTypes, ServiceOutputTypes, CognitoIdentityClientResolvedConfig> { + /** + * The resolved configuration of CognitoIdentityClient class. This is resolved and normalized from the {@link CognitoIdentityClientConfig | constructor configuration interface}. + */ + readonly config: CognitoIdentityClientResolvedConfig; + constructor(...[configuration]: __CheckOptionalClientConfig); + /** + * Destroy underlying resources, like sockets. It's usually not necessary to do this. + * However in Node.js, it's best to explicitly shut down the client's agent when it is no longer needed. + * Otherwise, sockets might stay open for quite a long time before the server terminates them. + */ + destroy(): void; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/auth/httpAuthExtensionConfiguration.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/auth/httpAuthExtensionConfiguration.d.ts new file mode 100644 index 000000000..b1534cd62 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/auth/httpAuthExtensionConfiguration.d.ts @@ -0,0 +1,30 @@ +import type { AwsCredentialIdentity, AwsCredentialIdentityProvider } from "@smithy/types"; +import { type HttpAuthScheme } from "@smithy/types"; +import type { CognitoIdentityHttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; +/** + * @internal + */ +export interface HttpAuthExtensionConfiguration { + setHttpAuthScheme(httpAuthScheme: HttpAuthScheme): void; + httpAuthSchemes(): HttpAuthScheme[]; + setHttpAuthSchemeProvider(httpAuthSchemeProvider: CognitoIdentityHttpAuthSchemeProvider): void; + httpAuthSchemeProvider(): CognitoIdentityHttpAuthSchemeProvider; + setCredentials(credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider): void; + credentials(): AwsCredentialIdentity | AwsCredentialIdentityProvider | undefined; +} +/** + * @internal + */ +export type HttpAuthRuntimeConfig = Partial<{ + httpAuthSchemes: HttpAuthScheme[]; + httpAuthSchemeProvider: CognitoIdentityHttpAuthSchemeProvider; + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider; +}>; +/** + * @internal + */ +export declare const getHttpAuthExtensionConfiguration: (runtimeConfig: HttpAuthRuntimeConfig) => HttpAuthExtensionConfiguration; +/** + * @internal + */ +export declare const resolveHttpAuthRuntimeConfig: (config: HttpAuthExtensionConfiguration) => HttpAuthRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/auth/httpAuthSchemeProvider.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/auth/httpAuthSchemeProvider.d.ts new file mode 100644 index 000000000..e36e0ff00 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/auth/httpAuthSchemeProvider.d.ts @@ -0,0 +1,75 @@ +import type { AwsSdkSigV4AuthInputConfig, AwsSdkSigV4AuthResolvedConfig, AwsSdkSigV4PreviouslyResolved } from "@aws-sdk/core"; +import type { HandlerExecutionContext, HttpAuthScheme, HttpAuthSchemeParameters, HttpAuthSchemeParametersProvider, HttpAuthSchemeProvider, Provider } from "@smithy/types"; +import { type CognitoIdentityClientResolvedConfig } from "../CognitoIdentityClient"; +/** + * @internal + */ +export interface CognitoIdentityHttpAuthSchemeParameters extends HttpAuthSchemeParameters { + region?: string; +} +/** + * @internal + */ +export interface CognitoIdentityHttpAuthSchemeParametersProvider extends HttpAuthSchemeParametersProvider { +} +/** + * @internal + */ +export declare const defaultCognitoIdentityHttpAuthSchemeParametersProvider: (config: CognitoIdentityClientResolvedConfig, context: HandlerExecutionContext, input: object) => Promise; +/** + * @internal + */ +export interface CognitoIdentityHttpAuthSchemeProvider extends HttpAuthSchemeProvider { +} +/** + * @internal + */ +export declare const defaultCognitoIdentityHttpAuthSchemeProvider: CognitoIdentityHttpAuthSchemeProvider; +/** + * @public + */ +export interface HttpAuthSchemeInputConfig extends AwsSdkSigV4AuthInputConfig { + /** + * A comma-separated list of case-sensitive auth scheme names. + * An auth scheme name is a fully qualified auth scheme ID with the namespace prefix trimmed. + * For example, the auth scheme with ID aws.auth#sigv4 is named sigv4. + * @public + */ + authSchemePreference?: string[] | Provider; + /** + * Configuration of HttpAuthSchemes for a client which provides default identity providers and signers per auth scheme. + * @internal + */ + httpAuthSchemes?: HttpAuthScheme[]; + /** + * Configuration of an HttpAuthSchemeProvider for a client which resolves which HttpAuthScheme to use. + * @internal + */ + httpAuthSchemeProvider?: CognitoIdentityHttpAuthSchemeProvider; +} +/** + * @internal + */ +export interface HttpAuthSchemeResolvedConfig extends AwsSdkSigV4AuthResolvedConfig { + /** + * A comma-separated list of case-sensitive auth scheme names. + * An auth scheme name is a fully qualified auth scheme ID with the namespace prefix trimmed. + * For example, the auth scheme with ID aws.auth#sigv4 is named sigv4. + * @public + */ + readonly authSchemePreference: Provider; + /** + * Configuration of HttpAuthSchemes for a client which provides default identity providers and signers per auth scheme. + * @internal + */ + readonly httpAuthSchemes: HttpAuthScheme[]; + /** + * Configuration of an HttpAuthSchemeProvider for a client which resolves which HttpAuthScheme to use. + * @internal + */ + readonly httpAuthSchemeProvider: CognitoIdentityHttpAuthSchemeProvider; +} +/** + * @internal + */ +export declare const resolveHttpAuthSchemeConfig: (config: T & HttpAuthSchemeInputConfig & AwsSdkSigV4PreviouslyResolved) => T & HttpAuthSchemeResolvedConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/commands/GetCredentialsForIdentityCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/commands/GetCredentialsForIdentityCommand.d.ts new file mode 100644 index 000000000..0eecefac5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/commands/GetCredentialsForIdentityCommand.d.ts @@ -0,0 +1,120 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CognitoIdentityClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../CognitoIdentityClient"; +import type { GetCredentialsForIdentityInput, GetCredentialsForIdentityResponse } from "../models/models_0"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetCredentialsForIdentityCommand}. + */ +export interface GetCredentialsForIdentityCommandInput extends GetCredentialsForIdentityInput { +} +/** + * @public + * + * The output of {@link GetCredentialsForIdentityCommand}. + */ +export interface GetCredentialsForIdentityCommandOutput extends GetCredentialsForIdentityResponse, __MetadataBearer { +} +declare const GetCredentialsForIdentityCommand_base: { + new (input: GetCredentialsForIdentityCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetCredentialsForIdentityCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Returns credentials for the provided identity ID. Any provided logins will be + * validated against supported login providers. If the token is for + * cognito-identity.amazonaws.com, it will be passed through to Security Token Service with the appropriate role for the token.

+ *

This is a public API. You do not need any credentials to call this API.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { CognitoIdentityClient, GetCredentialsForIdentityCommand } from "@aws-sdk/client-cognito-identity"; // ES Modules import + * // const { CognitoIdentityClient, GetCredentialsForIdentityCommand } = require("@aws-sdk/client-cognito-identity"); // CommonJS import + * // import type { CognitoIdentityClientConfig } from "@aws-sdk/client-cognito-identity"; + * const config = {}; // type is CognitoIdentityClientConfig + * const client = new CognitoIdentityClient(config); + * const input = { // GetCredentialsForIdentityInput + * IdentityId: "STRING_VALUE", // required + * Logins: { // LoginsMap + * "": "STRING_VALUE", + * }, + * CustomRoleArn: "STRING_VALUE", + * }; + * const command = new GetCredentialsForIdentityCommand(input); + * const response = await client.send(command); + * // { // GetCredentialsForIdentityResponse + * // IdentityId: "STRING_VALUE", + * // Credentials: { // Credentials + * // AccessKeyId: "STRING_VALUE", + * // SecretKey: "STRING_VALUE", + * // SessionToken: "STRING_VALUE", + * // Expiration: new Date("TIMESTAMP"), + * // }, + * // }; + * + * ``` + * + * @param GetCredentialsForIdentityCommandInput - {@link GetCredentialsForIdentityCommandInput} + * @returns {@link GetCredentialsForIdentityCommandOutput} + * @see {@link GetCredentialsForIdentityCommandInput} for command's `input` shape. + * @see {@link GetCredentialsForIdentityCommandOutput} for command's `response` shape. + * @see {@link CognitoIdentityClientResolvedConfig | config} for CognitoIdentityClient's `config` shape. + * + * @throws {@link ExternalServiceException} (client fault) + *

An exception thrown when a dependent service such as Facebook or Twitter is not + * responding

+ * + * @throws {@link InternalErrorException} (server fault) + *

Thrown when the service encounters an error during processing the request.

+ * + * @throws {@link InvalidIdentityPoolConfigurationException} (client fault) + *

If you provided authentication information in the request, the identity pool has no + * authenticated role configured, or STS returned an error response to the + * request to assume the authenticated role from the identity pool. If you provided no + * authentication information in the request, the identity pool has no unauthenticated role + * configured, or STS returned an error response to the request to assume the + * unauthenticated role from the identity pool.

+ *

Your role trust policy must grant AssumeRoleWithWebIdentity permissions to cognito-identity.amazonaws.com.

+ * + * @throws {@link InvalidParameterException} (client fault) + *

Thrown for missing or bad input parameter(s).

+ * + * @throws {@link NotAuthorizedException} (client fault) + *

Thrown when a user is not authorized to access the requested resource.

+ * + * @throws {@link ResourceConflictException} (client fault) + *

Thrown when a user tries to use a login which is already linked to another + * account.

+ * + * @throws {@link ResourceNotFoundException} (client fault) + *

Thrown when the requested resource (for example, a dataset or record) does not + * exist.

+ * + * @throws {@link TooManyRequestsException} (client fault) + *

Thrown when a request is throttled.

+ * + * @throws {@link CognitoIdentityServiceException} + *

Base exception class for all service exceptions from CognitoIdentity service.

+ * + * + * @public + */ +export declare class GetCredentialsForIdentityCommand extends GetCredentialsForIdentityCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetCredentialsForIdentityInput; + output: GetCredentialsForIdentityResponse; + }; + sdk: { + input: GetCredentialsForIdentityCommandInput; + output: GetCredentialsForIdentityCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/commands/GetIdCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/commands/GetIdCommand.d.ts new file mode 100644 index 000000000..df1f81cb4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/commands/GetIdCommand.d.ts @@ -0,0 +1,107 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CognitoIdentityClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../CognitoIdentityClient"; +import type { GetIdInput, GetIdResponse } from "../models/models_0"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetIdCommand}. + */ +export interface GetIdCommandInput extends GetIdInput { +} +/** + * @public + * + * The output of {@link GetIdCommand}. + */ +export interface GetIdCommandOutput extends GetIdResponse, __MetadataBearer { +} +declare const GetIdCommand_base: { + new (input: GetIdCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetIdCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Generates (or retrieves) IdentityID. Supplying multiple logins will create an + * implicit linked account.

+ *

This is a public API. You do not need any credentials to call this API.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { CognitoIdentityClient, GetIdCommand } from "@aws-sdk/client-cognito-identity"; // ES Modules import + * // const { CognitoIdentityClient, GetIdCommand } = require("@aws-sdk/client-cognito-identity"); // CommonJS import + * // import type { CognitoIdentityClientConfig } from "@aws-sdk/client-cognito-identity"; + * const config = {}; // type is CognitoIdentityClientConfig + * const client = new CognitoIdentityClient(config); + * const input = { // GetIdInput + * AccountId: "STRING_VALUE", + * IdentityPoolId: "STRING_VALUE", // required + * Logins: { // LoginsMap + * "": "STRING_VALUE", + * }, + * }; + * const command = new GetIdCommand(input); + * const response = await client.send(command); + * // { // GetIdResponse + * // IdentityId: "STRING_VALUE", + * // }; + * + * ``` + * + * @param GetIdCommandInput - {@link GetIdCommandInput} + * @returns {@link GetIdCommandOutput} + * @see {@link GetIdCommandInput} for command's `input` shape. + * @see {@link GetIdCommandOutput} for command's `response` shape. + * @see {@link CognitoIdentityClientResolvedConfig | config} for CognitoIdentityClient's `config` shape. + * + * @throws {@link ExternalServiceException} (client fault) + *

An exception thrown when a dependent service such as Facebook or Twitter is not + * responding

+ * + * @throws {@link InternalErrorException} (server fault) + *

Thrown when the service encounters an error during processing the request.

+ * + * @throws {@link InvalidParameterException} (client fault) + *

Thrown for missing or bad input parameter(s).

+ * + * @throws {@link LimitExceededException} (client fault) + *

Thrown when the total number of user pools has exceeded a preset limit.

+ * + * @throws {@link NotAuthorizedException} (client fault) + *

Thrown when a user is not authorized to access the requested resource.

+ * + * @throws {@link ResourceConflictException} (client fault) + *

Thrown when a user tries to use a login which is already linked to another + * account.

+ * + * @throws {@link ResourceNotFoundException} (client fault) + *

Thrown when the requested resource (for example, a dataset or record) does not + * exist.

+ * + * @throws {@link TooManyRequestsException} (client fault) + *

Thrown when a request is throttled.

+ * + * @throws {@link CognitoIdentityServiceException} + *

Base exception class for all service exceptions from CognitoIdentity service.

+ * + * + * @public + */ +export declare class GetIdCommand extends GetIdCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetIdInput; + output: GetIdResponse; + }; + sdk: { + input: GetIdCommandInput; + output: GetIdCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/commands/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/commands/index.d.ts new file mode 100644 index 000000000..dc560a4f9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/commands/index.d.ts @@ -0,0 +1,2 @@ +export * from "./GetCredentialsForIdentityCommand"; +export * from "./GetIdCommand"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/endpoint/EndpointParameters.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/endpoint/EndpointParameters.d.ts new file mode 100644 index 000000000..240d5235a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/endpoint/EndpointParameters.d.ts @@ -0,0 +1,50 @@ +import type { Endpoint, EndpointParameters as __EndpointParameters, EndpointV2, Provider } from "@smithy/types"; +/** + * @public + */ +export interface ClientInputEndpointParameters { + region?: string | undefined | Provider; + useDualstackEndpoint?: boolean | undefined | Provider; + useFipsEndpoint?: boolean | undefined | Provider; + endpoint?: string | Provider | Endpoint | Provider | EndpointV2 | Provider; +} +/** + * @public + */ +export type ClientResolvedEndpointParameters = Omit & { + defaultSigningName: string; +}; +/** + * @internal + */ +export declare const resolveClientEndpointParameters: (options: T & ClientInputEndpointParameters) => T & ClientResolvedEndpointParameters; +/** + * @internal + */ +export declare const commonParams: { + readonly UseFIPS: { + readonly type: "builtInParams"; + readonly name: "useFipsEndpoint"; + }; + readonly Endpoint: { + readonly type: "builtInParams"; + readonly name: "endpoint"; + }; + readonly Region: { + readonly type: "builtInParams"; + readonly name: "region"; + }; + readonly UseDualStack: { + readonly type: "builtInParams"; + readonly name: "useDualstackEndpoint"; + }; +}; +/** + * @internal + */ +export interface EndpointParameters extends __EndpointParameters { + Region?: string | undefined; + UseDualStack?: boolean | undefined; + UseFIPS?: boolean | undefined; + Endpoint?: string | undefined; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/endpoint/endpointResolver.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/endpoint/endpointResolver.d.ts new file mode 100644 index 000000000..c1de67d3e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/endpoint/endpointResolver.d.ts @@ -0,0 +1,8 @@ +import type { EndpointV2, Logger } from "@smithy/types"; +import type { EndpointParameters } from "./EndpointParameters"; +/** + * @internal + */ +export declare const defaultEndpointResolver: (endpointParams: EndpointParameters, context?: { + logger?: Logger; +}) => EndpointV2; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/endpoint/ruleset.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/endpoint/ruleset.d.ts new file mode 100644 index 000000000..4dda20a8e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/endpoint/ruleset.d.ts @@ -0,0 +1,2 @@ +import type { RuleSetObject } from "@smithy/types"; +export declare const ruleSet: RuleSetObject; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/extensionConfiguration.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/extensionConfiguration.d.ts new file mode 100644 index 000000000..bfdae8835 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/extensionConfiguration.d.ts @@ -0,0 +1,9 @@ +import type { AwsRegionExtensionConfiguration } from "@aws-sdk/types"; +import type { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; +import type { DefaultExtensionConfiguration } from "@smithy/types"; +import type { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; +/** + * @internal + */ +export interface CognitoIdentityExtensionConfiguration extends HttpHandlerExtensionConfiguration, DefaultExtensionConfiguration, AwsRegionExtensionConfiguration, HttpAuthExtensionConfiguration { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/index.d.ts new file mode 100644 index 000000000..25d6ade74 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/index.d.ts @@ -0,0 +1,29 @@ +/** + * Amazon Cognito Federated Identities + *

Amazon Cognito Federated Identities is a web service that delivers scoped temporary + * credentials to mobile devices and other untrusted environments. It uniquely identifies a + * device and supplies the user with a consistent identity over the lifetime of an + * application.

+ *

Using Amazon Cognito Federated Identities, you can enable authentication with one or + * more third-party identity providers (Facebook, Google, or Login with Amazon) or an Amazon + * Cognito user pool, and you can also choose to support unauthenticated access from your app. + * Cognito delivers a unique identifier for each user and acts as an OpenID token provider + * trusted by Security Token Service (STS) to access temporary, limited-privilege Amazon Web Services credentials.

+ *

For a description of the authentication flow from the Amazon Cognito Developer Guide + * see Authentication + * Flow.

+ *

For more information see Amazon Cognito Federated + * Identities.

+ * + * @packageDocumentation + */ +export * from "./CognitoIdentityClient"; +export * from "./CognitoIdentity"; +export { ClientInputEndpointParameters } from "./endpoint/EndpointParameters"; +export type { RuntimeExtension } from "./runtimeExtensions"; +export type { CognitoIdentityExtensionConfiguration } from "./extensionConfiguration"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./models/errors"; +export * from "./models/models_0"; +export { CognitoIdentityServiceException } from "./models/CognitoIdentityServiceException"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/models/CognitoIdentityServiceException.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/models/CognitoIdentityServiceException.d.ts new file mode 100644 index 000000000..20b34ebda --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/models/CognitoIdentityServiceException.d.ts @@ -0,0 +1,14 @@ +import { type ServiceExceptionOptions as __ServiceExceptionOptions, ServiceException as __ServiceException } from "@smithy/smithy-client"; +export type { __ServiceExceptionOptions }; +export { __ServiceException }; +/** + * @public + * + * Base exception class for all service exceptions from CognitoIdentity service. + */ +export declare class CognitoIdentityServiceException extends __ServiceException { + /** + * @internal + */ + constructor(options: __ServiceExceptionOptions); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/models/errors.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/models/errors.d.ts new file mode 100644 index 000000000..f049b0873 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/models/errors.d.ts @@ -0,0 +1,119 @@ +import type { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; +import { CognitoIdentityServiceException as __BaseException } from "./CognitoIdentityServiceException"; +/** + *

An exception thrown when a dependent service such as Facebook or Twitter is not + * responding

+ * @public + */ +export declare class ExternalServiceException extends __BaseException { + readonly name: "ExternalServiceException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Thrown when the service encounters an error during processing the request.

+ * @public + */ +export declare class InternalErrorException extends __BaseException { + readonly name: "InternalErrorException"; + readonly $fault: "server"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

If you provided authentication information in the request, the identity pool has no + * authenticated role configured, or STS returned an error response to the + * request to assume the authenticated role from the identity pool. If you provided no + * authentication information in the request, the identity pool has no unauthenticated role + * configured, or STS returned an error response to the request to assume the + * unauthenticated role from the identity pool.

+ *

Your role trust policy must grant AssumeRoleWithWebIdentity permissions to cognito-identity.amazonaws.com.

+ * @public + */ +export declare class InvalidIdentityPoolConfigurationException extends __BaseException { + readonly name: "InvalidIdentityPoolConfigurationException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Thrown for missing or bad input parameter(s).

+ * @public + */ +export declare class InvalidParameterException extends __BaseException { + readonly name: "InvalidParameterException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Thrown when a user is not authorized to access the requested resource.

+ * @public + */ +export declare class NotAuthorizedException extends __BaseException { + readonly name: "NotAuthorizedException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Thrown when a user tries to use a login which is already linked to another + * account.

+ * @public + */ +export declare class ResourceConflictException extends __BaseException { + readonly name: "ResourceConflictException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Thrown when the requested resource (for example, a dataset or record) does not + * exist.

+ * @public + */ +export declare class ResourceNotFoundException extends __BaseException { + readonly name: "ResourceNotFoundException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Thrown when a request is throttled.

+ * @public + */ +export declare class TooManyRequestsException extends __BaseException { + readonly name: "TooManyRequestsException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Thrown when the total number of user pools has exceeded a preset limit.

+ * @public + */ +export declare class LimitExceededException extends __BaseException { + readonly name: "LimitExceededException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/models/models_0.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/models/models_0.d.ts new file mode 100644 index 000000000..3bf7c028c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/models/models_0.d.ts @@ -0,0 +1,136 @@ +/** + *

Input to the GetCredentialsForIdentity action.

+ * @public + */ +export interface GetCredentialsForIdentityInput { + /** + *

A unique identifier in the format REGION:GUID.

+ * @public + */ + IdentityId: string | undefined; + /** + *

A set of optional name-value pairs that map provider names to provider tokens. The + * name-value pair will follow the syntax "provider_name": + * "provider_user_identifier".

+ *

Logins should not be specified when trying to get credentials for an unauthenticated + * identity.

+ *

The Logins parameter is required when using identities associated with external + * identity providers such as Facebook. For examples of Logins maps, see the code + * examples in the External Identity + * Providers section of the Amazon Cognito Developer Guide.

+ * @public + */ + Logins?: Record | undefined; + /** + *

The Amazon Resource Name (ARN) of the role to be assumed when multiple roles were + * received in the token from the identity provider. For example, a SAML-based identity + * provider. This parameter is optional for identity providers that do not support role + * customization.

+ * @public + */ + CustomRoleArn?: string | undefined; +} +/** + *

Credentials for the provided identity ID.

+ * @public + */ +export interface Credentials { + /** + *

The Access Key portion of the credentials.

+ * @public + */ + AccessKeyId?: string | undefined; + /** + *

The Secret Access Key portion of the credentials

+ * @public + */ + SecretKey?: string | undefined; + /** + *

The Session Token portion of the credentials

+ * @public + */ + SessionToken?: string | undefined; + /** + *

The date at which these credentials will expire.

+ * @public + */ + Expiration?: Date | undefined; +} +/** + *

Returned in response to a successful GetCredentialsForIdentity + * operation.

+ * @public + */ +export interface GetCredentialsForIdentityResponse { + /** + *

A unique identifier in the format REGION:GUID.

+ * @public + */ + IdentityId?: string | undefined; + /** + *

Credentials for the provided identity ID.

+ * @public + */ + Credentials?: Credentials | undefined; +} +/** + *

Input to the GetId action.

+ * @public + */ +export interface GetIdInput { + /** + *

A standard Amazon Web Services account ID (9+ digits).

+ * @public + */ + AccountId?: string | undefined; + /** + *

An identity pool ID in the format REGION:GUID.

+ * @public + */ + IdentityPoolId: string | undefined; + /** + *

A set of optional name-value pairs that map provider names to provider tokens. The + * available provider names for Logins are as follows:

+ *
    + *
  • + *

    Facebook: graph.facebook.com + *

    + *
  • + *
  • + *

    Amazon Cognito user pool: + * cognito-idp..amazonaws.com/, + * for example, cognito-idp.us-east-1.amazonaws.com/us-east-1_123456789. + *

    + *
  • + *
  • + *

    Google: accounts.google.com + *

    + *
  • + *
  • + *

    Amazon: www.amazon.com + *

    + *
  • + *
  • + *

    Twitter: api.twitter.com + *

    + *
  • + *
  • + *

    Digits: www.digits.com + *

    + *
  • + *
+ * @public + */ + Logins?: Record | undefined; +} +/** + *

Returned in response to a GetId request.

+ * @public + */ +export interface GetIdResponse { + /** + *

A unique identifier in the format REGION:GUID.

+ * @public + */ + IdentityId?: string | undefined; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.browser.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.browser.d.ts new file mode 100644 index 000000000..808ac352c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.browser.d.ts @@ -0,0 +1,62 @@ +import { FetchHttpHandler as RequestHandler } from "@smithy/fetch-http-handler"; +import type { CognitoIdentityClientConfig } from "./CognitoIdentityClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: CognitoIdentityClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: import("@smithy/protocol-http").HttpHandler | RequestHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + cacheMiddleware?: boolean | undefined; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/core").AwsJson1_1Protocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: string | undefined | import("@smithy/types").Provider; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + })[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").CognitoIdentityHttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.d.ts new file mode 100644 index 000000000..49c6a7e85 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.d.ts @@ -0,0 +1,62 @@ +import { NodeHttpHandler as RequestHandler } from "@smithy/node-http-handler"; +import type { CognitoIdentityClientConfig } from "./CognitoIdentityClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: CognitoIdentityClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider; + authSchemePreference: string[] | import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-node").PreviouslyResolved) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: RequestHandler | import("@smithy/protocol-http").HttpHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: boolean | import("@smithy/types").Provider; + useFipsEndpoint: boolean | import("@smithy/types").Provider; + userAgentAppId: string | import("@smithy/types").Provider; + cacheMiddleware?: boolean | undefined; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/core").AwsJson1_1Protocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + })[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").CognitoIdentityHttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.native.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.native.d.ts new file mode 100644 index 000000000..59905ede1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.native.d.ts @@ -0,0 +1,61 @@ +import type { CognitoIdentityClientConfig } from "./CognitoIdentityClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: CognitoIdentityClientConfig) => { + runtime: string; + sha256: import("@smithy/types").HashConstructor; + requestHandler: import("@smithy/types").NodeHttpHandlerOptions | import("@smithy/types").FetchHttpHandlerOptions | Record | import("@smithy/protocol-http").HttpHandler | import("@smithy/fetch-http-handler").FetchHttpHandler; + cacheMiddleware?: boolean; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/core").AwsJson1_1Protocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + streamCollector: import("@smithy/types").StreamCollector; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + region: string | import("@smithy/types").Provider; + profile?: string; + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + retryMode: string | import("@smithy/types").Provider; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + defaultsMode: import("@smithy/smithy-client").DefaultsMode | import("@smithy/types").Provider; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: string | undefined | import("@smithy/types").Provider; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + })[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").CognitoIdentityHttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.shared.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.shared.d.ts new file mode 100644 index 000000000..4207a2b14 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.shared.d.ts @@ -0,0 +1,38 @@ +import { AwsSdkSigV4Signer } from "@aws-sdk/core"; +import { AwsJson1_1Protocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; +import type { IdentityProviderConfig } from "@smithy/types"; +import type { CognitoIdentityClientConfig } from "./CognitoIdentityClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: CognitoIdentityClientConfig) => { + apiVersion: string; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + disableHostPrefix: boolean; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").CognitoIdentityHttpAuthSchemeProvider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: NoAuthSigner; + })[]; + logger: import("@smithy/types").Logger; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof AwsJson1_1Protocol; + protocolSettings: { + [setting: string]: unknown; + defaultNamespace?: string; + }; + serviceId: string; + urlParser: import("@smithy/types").UrlParser; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeExtensions.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeExtensions.d.ts new file mode 100644 index 000000000..2a4d33efa --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeExtensions.d.ts @@ -0,0 +1,17 @@ +import type { CognitoIdentityExtensionConfiguration } from "./extensionConfiguration"; +/** + * @public + */ +export interface RuntimeExtension { + configure(extensionConfiguration: CognitoIdentityExtensionConfiguration): void; +} +/** + * @public + */ +export interface RuntimeExtensionsConfig { + extensions: RuntimeExtension[]; +} +/** + * @internal + */ +export declare const resolveRuntimeExtensions: (runtimeConfig: any, extensions: RuntimeExtension[]) => any; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/schemas/schemas_0.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/schemas/schemas_0.d.ts new file mode 100644 index 000000000..fd3092b05 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/schemas/schemas_0.d.ts @@ -0,0 +1,25 @@ +import { TypeRegistry } from "@smithy/core/schema"; +import type { StaticErrorSchema, StaticOperationSchema, StaticStructureSchema } from "@smithy/types"; +export declare var CognitoIdentityServiceException$: StaticErrorSchema; +export declare var ExternalServiceException$: StaticErrorSchema; +export declare var InternalErrorException$: StaticErrorSchema; +export declare var InvalidIdentityPoolConfigurationException$: StaticErrorSchema; +export declare var InvalidParameterException$: StaticErrorSchema; +export declare var LimitExceededException$: StaticErrorSchema; +export declare var NotAuthorizedException$: StaticErrorSchema; +export declare var ResourceConflictException$: StaticErrorSchema; +export declare var ResourceNotFoundException$: StaticErrorSchema; +export declare var TooManyRequestsException$: StaticErrorSchema; +/** + * TypeRegistry instances containing modeled errors. + * @internal + * + */ +export declare const errorTypeRegistries: TypeRegistry[]; +export declare var Credentials$: StaticStructureSchema; +export declare var GetCredentialsForIdentityInput$: StaticStructureSchema; +export declare var GetCredentialsForIdentityResponse$: StaticStructureSchema; +export declare var GetIdInput$: StaticStructureSchema; +export declare var GetIdResponse$: StaticStructureSchema; +export declare var GetCredentialsForIdentity$: StaticOperationSchema; +export declare var GetId$: StaticOperationSchema; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/Signin.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/Signin.d.ts new file mode 100644 index 000000000..3a7874ab7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/Signin.d.ts @@ -0,0 +1,18 @@ +import type { HttpHandlerOptions as __HttpHandlerOptions } from "@smithy/types"; +import type { CreateOAuth2TokenCommandInput, CreateOAuth2TokenCommandOutput } from "./commands/CreateOAuth2TokenCommand"; +import { SigninClient } from "./SigninClient"; +export interface Signin { + /** + * @see {@link CreateOAuth2TokenCommand} + */ + createOAuth2Token(args: CreateOAuth2TokenCommandInput, options?: __HttpHandlerOptions): Promise; + createOAuth2Token(args: CreateOAuth2TokenCommandInput, cb: (err: any, data?: CreateOAuth2TokenCommandOutput) => void): void; + createOAuth2Token(args: CreateOAuth2TokenCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: CreateOAuth2TokenCommandOutput) => void): void; +} +/** + * AWS Sign-In manages authentication for AWS services. This service provides + * secure authentication flows for accessing AWS resources from the console and developer tools. + * @public + */ +export declare class Signin extends SigninClient implements Signin { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/SigninClient.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/SigninClient.d.ts new file mode 100644 index 000000000..c8e7bbc2a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/SigninClient.d.ts @@ -0,0 +1,190 @@ +import { type HostHeaderInputConfig, type HostHeaderResolvedConfig } from "@aws-sdk/middleware-host-header"; +import { type UserAgentInputConfig, type UserAgentResolvedConfig } from "@aws-sdk/middleware-user-agent"; +import { type RegionInputConfig, type RegionResolvedConfig } from "@smithy/config-resolver"; +import { type EndpointInputConfig, type EndpointResolvedConfig } from "@smithy/middleware-endpoint"; +import { type RetryInputConfig, type RetryResolvedConfig } from "@smithy/middleware-retry"; +import type { HttpHandlerUserInput as __HttpHandlerUserInput } from "@smithy/protocol-http"; +import { type DefaultsMode as __DefaultsMode, type SmithyConfiguration as __SmithyConfiguration, type SmithyResolvedConfiguration as __SmithyResolvedConfiguration, Client as __Client } from "@smithy/smithy-client"; +import type { AwsCredentialIdentityProvider, Provider, UserAgent as __UserAgent } from "@smithy/types"; +import { type BodyLengthCalculator as __BodyLengthCalculator, type CheckOptionalClientConfig as __CheckOptionalClientConfig, type ChecksumConstructor as __ChecksumConstructor, type Decoder as __Decoder, type Encoder as __Encoder, type HashConstructor as __HashConstructor, type HttpHandlerOptions as __HttpHandlerOptions, type Logger as __Logger, type Provider as __Provider, type StreamCollector as __StreamCollector, type UrlParser as __UrlParser } from "@smithy/types"; +import { type HttpAuthSchemeInputConfig, type HttpAuthSchemeResolvedConfig } from "./auth/httpAuthSchemeProvider"; +import type { CreateOAuth2TokenCommandInput, CreateOAuth2TokenCommandOutput } from "./commands/CreateOAuth2TokenCommand"; +import type { ClientInputEndpointParameters, ClientResolvedEndpointParameters, EndpointParameters } from "./endpoint/EndpointParameters"; +import { type RuntimeExtension, type RuntimeExtensionsConfig } from "./runtimeExtensions"; +export { __Client }; +/** + * @public + */ +export type ServiceInputTypes = CreateOAuth2TokenCommandInput; +/** + * @public + */ +export type ServiceOutputTypes = CreateOAuth2TokenCommandOutput; +/** + * @public + */ +export interface ClientDefaults extends Partial<__SmithyConfiguration<__HttpHandlerOptions>> { + /** + * The HTTP handler to use or its constructor options. Fetch in browser and Https in Nodejs. + */ + requestHandler?: __HttpHandlerUserInput; + /** + * A constructor for a class implementing the {@link @smithy/types#ChecksumConstructor} interface + * that computes the SHA-256 HMAC or checksum of a string or binary buffer. + * @internal + */ + sha256?: __ChecksumConstructor | __HashConstructor; + /** + * The function that will be used to convert strings into HTTP endpoints. + * @internal + */ + urlParser?: __UrlParser; + /** + * A function that can calculate the length of a request body. + * @internal + */ + bodyLengthChecker?: __BodyLengthCalculator; + /** + * A function that converts a stream into an array of bytes. + * @internal + */ + streamCollector?: __StreamCollector; + /** + * The function that will be used to convert a base64-encoded string to a byte array. + * @internal + */ + base64Decoder?: __Decoder; + /** + * The function that will be used to convert binary data to a base64-encoded string. + * @internal + */ + base64Encoder?: __Encoder; + /** + * The function that will be used to convert a UTF8-encoded string to a byte array. + * @internal + */ + utf8Decoder?: __Decoder; + /** + * The function that will be used to convert binary data to a UTF-8 encoded string. + * @internal + */ + utf8Encoder?: __Encoder; + /** + * The runtime environment. + * @internal + */ + runtime?: string; + /** + * Disable dynamically changing the endpoint of the client based on the hostPrefix + * trait of an operation. + */ + disableHostPrefix?: boolean; + /** + * Unique service identifier. + * @internal + */ + serviceId?: string; + /** + * Enables IPv6/IPv4 dualstack endpoint. + */ + useDualstackEndpoint?: boolean | __Provider; + /** + * Enables FIPS compatible endpoints. + */ + useFipsEndpoint?: boolean | __Provider; + /** + * The AWS region to which this client will send requests + */ + region?: string | __Provider; + /** + * Setting a client profile is similar to setting a value for the + * AWS_PROFILE environment variable. Setting a profile on a client + * in code only affects the single client instance, unlike AWS_PROFILE. + * + * When set, and only for environments where an AWS configuration + * file exists, fields configurable by this file will be retrieved + * from the specified profile within that file. + * Conflicting code configuration and environment variables will + * still have higher priority. + * + * For client credential resolution that involves checking the AWS + * configuration file, the client's profile (this value) will be + * used unless a different profile is set in the credential + * provider options. + * + */ + profile?: string; + /** + * The provider populating default tracking information to be sent with `user-agent`, `x-amz-user-agent` header + * @internal + */ + defaultUserAgentProvider?: Provider<__UserAgent>; + /** + * Default credentials provider; Not available in browser runtime. + * @deprecated + * @internal + */ + credentialDefaultProvider?: (input: any) => AwsCredentialIdentityProvider; + /** + * Value for how many times a request will be made at most in case of retry. + */ + maxAttempts?: number | __Provider; + /** + * Specifies which retry algorithm to use. + * @see https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-util-retry/Enum/RETRY_MODES/ + * + */ + retryMode?: string | __Provider; + /** + * Optional logger for logging debug/info/warn/error. + */ + logger?: __Logger; + /** + * Optional extensions + */ + extensions?: RuntimeExtension[]; + /** + * The {@link @smithy/smithy-client#DefaultsMode} that will be used to determine how certain default configuration options are resolved in the SDK. + */ + defaultsMode?: __DefaultsMode | __Provider<__DefaultsMode>; +} +/** + * @public + */ +export type SigninClientConfigType = Partial<__SmithyConfiguration<__HttpHandlerOptions>> & ClientDefaults & UserAgentInputConfig & RetryInputConfig & RegionInputConfig & HostHeaderInputConfig & EndpointInputConfig & HttpAuthSchemeInputConfig & ClientInputEndpointParameters; +/** + * @public + * + * The configuration interface of SigninClient class constructor that set the region, credentials and other options. + */ +export interface SigninClientConfig extends SigninClientConfigType { +} +/** + * @public + */ +export type SigninClientResolvedConfigType = __SmithyResolvedConfiguration<__HttpHandlerOptions> & Required & RuntimeExtensionsConfig & UserAgentResolvedConfig & RetryResolvedConfig & RegionResolvedConfig & HostHeaderResolvedConfig & EndpointResolvedConfig & HttpAuthSchemeResolvedConfig & ClientResolvedEndpointParameters; +/** + * @public + * + * The resolved configuration interface of SigninClient class. This is resolved and normalized from the {@link SigninClientConfig | constructor configuration interface}. + */ +export interface SigninClientResolvedConfig extends SigninClientResolvedConfigType { +} +/** + * AWS Sign-In manages authentication for AWS services. This service provides + * secure authentication flows for accessing AWS resources from the console and developer tools. + * @public + */ +export declare class SigninClient extends __Client<__HttpHandlerOptions, ServiceInputTypes, ServiceOutputTypes, SigninClientResolvedConfig> { + /** + * The resolved configuration of SigninClient class. This is resolved and normalized from the {@link SigninClientConfig | constructor configuration interface}. + */ + readonly config: SigninClientResolvedConfig; + constructor(...[configuration]: __CheckOptionalClientConfig); + /** + * Destroy underlying resources, like sockets. It's usually not necessary to do this. + * However in Node.js, it's best to explicitly shut down the client's agent when it is no longer needed. + * Otherwise, sockets might stay open for quite a long time before the server terminates them. + */ + destroy(): void; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/auth/httpAuthExtensionConfiguration.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/auth/httpAuthExtensionConfiguration.d.ts new file mode 100644 index 000000000..ad184fcc4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/auth/httpAuthExtensionConfiguration.d.ts @@ -0,0 +1,30 @@ +import type { AwsCredentialIdentity, AwsCredentialIdentityProvider } from "@smithy/types"; +import { type HttpAuthScheme } from "@smithy/types"; +import type { SigninHttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; +/** + * @internal + */ +export interface HttpAuthExtensionConfiguration { + setHttpAuthScheme(httpAuthScheme: HttpAuthScheme): void; + httpAuthSchemes(): HttpAuthScheme[]; + setHttpAuthSchemeProvider(httpAuthSchemeProvider: SigninHttpAuthSchemeProvider): void; + httpAuthSchemeProvider(): SigninHttpAuthSchemeProvider; + setCredentials(credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider): void; + credentials(): AwsCredentialIdentity | AwsCredentialIdentityProvider | undefined; +} +/** + * @internal + */ +export type HttpAuthRuntimeConfig = Partial<{ + httpAuthSchemes: HttpAuthScheme[]; + httpAuthSchemeProvider: SigninHttpAuthSchemeProvider; + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider; +}>; +/** + * @internal + */ +export declare const getHttpAuthExtensionConfiguration: (runtimeConfig: HttpAuthRuntimeConfig) => HttpAuthExtensionConfiguration; +/** + * @internal + */ +export declare const resolveHttpAuthRuntimeConfig: (config: HttpAuthExtensionConfiguration) => HttpAuthRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/auth/httpAuthSchemeProvider.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/auth/httpAuthSchemeProvider.d.ts new file mode 100644 index 000000000..513bc6c66 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/auth/httpAuthSchemeProvider.d.ts @@ -0,0 +1,75 @@ +import type { AwsSdkSigV4AuthInputConfig, AwsSdkSigV4AuthResolvedConfig, AwsSdkSigV4PreviouslyResolved } from "@aws-sdk/core"; +import type { HandlerExecutionContext, HttpAuthScheme, HttpAuthSchemeParameters, HttpAuthSchemeParametersProvider, HttpAuthSchemeProvider, Provider } from "@smithy/types"; +import { type SigninClientResolvedConfig } from "../SigninClient"; +/** + * @internal + */ +export interface SigninHttpAuthSchemeParameters extends HttpAuthSchemeParameters { + region?: string; +} +/** + * @internal + */ +export interface SigninHttpAuthSchemeParametersProvider extends HttpAuthSchemeParametersProvider { +} +/** + * @internal + */ +export declare const defaultSigninHttpAuthSchemeParametersProvider: (config: SigninClientResolvedConfig, context: HandlerExecutionContext, input: object) => Promise; +/** + * @internal + */ +export interface SigninHttpAuthSchemeProvider extends HttpAuthSchemeProvider { +} +/** + * @internal + */ +export declare const defaultSigninHttpAuthSchemeProvider: SigninHttpAuthSchemeProvider; +/** + * @public + */ +export interface HttpAuthSchemeInputConfig extends AwsSdkSigV4AuthInputConfig { + /** + * A comma-separated list of case-sensitive auth scheme names. + * An auth scheme name is a fully qualified auth scheme ID with the namespace prefix trimmed. + * For example, the auth scheme with ID aws.auth#sigv4 is named sigv4. + * @public + */ + authSchemePreference?: string[] | Provider; + /** + * Configuration of HttpAuthSchemes for a client which provides default identity providers and signers per auth scheme. + * @internal + */ + httpAuthSchemes?: HttpAuthScheme[]; + /** + * Configuration of an HttpAuthSchemeProvider for a client which resolves which HttpAuthScheme to use. + * @internal + */ + httpAuthSchemeProvider?: SigninHttpAuthSchemeProvider; +} +/** + * @internal + */ +export interface HttpAuthSchemeResolvedConfig extends AwsSdkSigV4AuthResolvedConfig { + /** + * A comma-separated list of case-sensitive auth scheme names. + * An auth scheme name is a fully qualified auth scheme ID with the namespace prefix trimmed. + * For example, the auth scheme with ID aws.auth#sigv4 is named sigv4. + * @public + */ + readonly authSchemePreference: Provider; + /** + * Configuration of HttpAuthSchemes for a client which provides default identity providers and signers per auth scheme. + * @internal + */ + readonly httpAuthSchemes: HttpAuthScheme[]; + /** + * Configuration of an HttpAuthSchemeProvider for a client which resolves which HttpAuthScheme to use. + * @internal + */ + readonly httpAuthSchemeProvider: SigninHttpAuthSchemeProvider; +} +/** + * @internal + */ +export declare const resolveHttpAuthSchemeConfig: (config: T & HttpAuthSchemeInputConfig & AwsSdkSigV4PreviouslyResolved) => T & HttpAuthSchemeResolvedConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/commands/CreateOAuth2TokenCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/commands/CreateOAuth2TokenCommand.d.ts new file mode 100644 index 000000000..d6950ed6c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/commands/CreateOAuth2TokenCommand.d.ts @@ -0,0 +1,157 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CreateOAuth2TokenRequest, CreateOAuth2TokenResponse } from "../models/models_0"; +import type { SigninClientResolvedConfig } from "../SigninClient"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link CreateOAuth2TokenCommand}. + */ +export interface CreateOAuth2TokenCommandInput extends CreateOAuth2TokenRequest { +} +/** + * @public + * + * The output of {@link CreateOAuth2TokenCommand}. + */ +export interface CreateOAuth2TokenCommandOutput extends CreateOAuth2TokenResponse, __MetadataBearer { +} +declare const CreateOAuth2TokenCommand_base: { + new (input: CreateOAuth2TokenCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: CreateOAuth2TokenCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * CreateOAuth2Token API + * + * Path: /v1/token + * Request Method: POST + * Content-Type: application/json or application/x-www-form-urlencoded + * + * This API implements OAuth 2.0 flows for AWS Sign-In CLI clients, supporting both: + * 1. Authorization code redemption (grant_type=authorization_code) - NOT idempotent + * 2. Token refresh (grant_type=refresh_token) - Idempotent within token validity window + * + * The operation behavior is determined by the grant_type parameter in the request body: + * + * **Authorization Code Flow (NOT Idempotent):** + * - JSON or form-encoded body with client_id, grant_type=authorization_code, code, redirect_uri, code_verifier + * - Returns access_token, token_type, expires_in, refresh_token, and id_token + * - Each authorization code can only be used ONCE for security (prevents replay attacks) + * + * **Token Refresh Flow (Idempotent):** + * - JSON or form-encoded body with client_id, grant_type=refresh_token, refresh_token + * - Returns access_token, token_type, expires_in, and refresh_token (no id_token) + * - Multiple calls with same refresh_token return consistent results within validity window + * + * Authentication and authorization: + * - Confidential clients: sigv4 signing required with signin:ExchangeToken permissions + * - CLI clients (public): authn/authz skipped based on client_id & grant_type + * + * Note: This operation cannot be marked as @idempotent because it handles both idempotent + * (token refresh) and non-idempotent (auth code redemption) flows in a single endpoint. + * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { SigninClient, CreateOAuth2TokenCommand } from "@aws-sdk/client-signin"; // ES Modules import + * // const { SigninClient, CreateOAuth2TokenCommand } = require("@aws-sdk/client-signin"); // CommonJS import + * // import type { SigninClientConfig } from "@aws-sdk/client-signin"; + * const config = {}; // type is SigninClientConfig + * const client = new SigninClient(config); + * const input = { // CreateOAuth2TokenRequest + * tokenInput: { // CreateOAuth2TokenRequestBody + * clientId: "STRING_VALUE", // required + * grantType: "STRING_VALUE", // required + * code: "STRING_VALUE", + * redirectUri: "STRING_VALUE", + * codeVerifier: "STRING_VALUE", + * refreshToken: "STRING_VALUE", + * }, + * }; + * const command = new CreateOAuth2TokenCommand(input); + * const response = await client.send(command); + * // { // CreateOAuth2TokenResponse + * // tokenOutput: { // CreateOAuth2TokenResponseBody + * // accessToken: { // AccessToken + * // accessKeyId: "STRING_VALUE", // required + * // secretAccessKey: "STRING_VALUE", // required + * // sessionToken: "STRING_VALUE", // required + * // }, + * // tokenType: "STRING_VALUE", // required + * // expiresIn: Number("int"), // required + * // refreshToken: "STRING_VALUE", // required + * // idToken: "STRING_VALUE", + * // }, + * // }; + * + * ``` + * + * @param CreateOAuth2TokenCommandInput - {@link CreateOAuth2TokenCommandInput} + * @returns {@link CreateOAuth2TokenCommandOutput} + * @see {@link CreateOAuth2TokenCommandInput} for command's `input` shape. + * @see {@link CreateOAuth2TokenCommandOutput} for command's `response` shape. + * @see {@link SigninClientResolvedConfig | config} for SigninClient's `config` shape. + * + * @throws {@link AccessDeniedException} (client fault) + * Error thrown for access denied scenarios with flexible HTTP status mapping + * + * Runtime HTTP Status Code Mapping: + * - HTTP 401 (Unauthorized): TOKEN_EXPIRED, AUTHCODE_EXPIRED + * - HTTP 403 (Forbidden): USER_CREDENTIALS_CHANGED, INSUFFICIENT_PERMISSIONS + * + * The specific HTTP status code is determined at runtime based on the error enum value. + * Consumers should use the error field to determine the specific access denial reason. + * + * @throws {@link InternalServerException} (server fault) + * Error thrown when an internal server error occurs + * + * HTTP Status Code: 500 Internal Server Error + * + * Used for unexpected server-side errors that prevent request processing. + * + * @throws {@link TooManyRequestsError} (client fault) + * Error thrown when rate limit is exceeded + * + * HTTP Status Code: 429 Too Many Requests + * + * Possible OAuth2ErrorCode values: + * - INVALID_REQUEST: Rate limiting, too many requests, abuse prevention + * + * Possible causes: + * - Too many token requests from the same client + * - Rate limiting based on client_id or IP address + * - Abuse prevention mechanisms triggered + * - Service protection against excessive token generation + * + * @throws {@link ValidationException} (client fault) + * Error thrown when request validation fails + * + * HTTP Status Code: 400 Bad Request + * + * Used for request validation errors such as malformed parameters, + * missing required fields, or invalid parameter values. + * + * @throws {@link SigninServiceException} + *

Base exception class for all service exceptions from Signin service.

+ * + * + * @public + */ +export declare class CreateOAuth2TokenCommand extends CreateOAuth2TokenCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: CreateOAuth2TokenRequest; + output: CreateOAuth2TokenResponse; + }; + sdk: { + input: CreateOAuth2TokenCommandInput; + output: CreateOAuth2TokenCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/commands/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/commands/index.d.ts new file mode 100644 index 000000000..d32e4a315 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/commands/index.d.ts @@ -0,0 +1 @@ +export * from "./CreateOAuth2TokenCommand"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/endpoint/EndpointParameters.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/endpoint/EndpointParameters.d.ts new file mode 100644 index 000000000..8c8611b3e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/endpoint/EndpointParameters.d.ts @@ -0,0 +1,50 @@ +import type { Endpoint, EndpointParameters as __EndpointParameters, EndpointV2, Provider } from "@smithy/types"; +/** + * @public + */ +export interface ClientInputEndpointParameters { + useDualstackEndpoint?: boolean | undefined | Provider; + useFipsEndpoint?: boolean | undefined | Provider; + endpoint?: string | Provider | Endpoint | Provider | EndpointV2 | Provider; + region?: string | undefined | Provider; +} +/** + * @public + */ +export type ClientResolvedEndpointParameters = Omit & { + defaultSigningName: string; +}; +/** + * @internal + */ +export declare const resolveClientEndpointParameters: (options: T & ClientInputEndpointParameters) => T & ClientResolvedEndpointParameters; +/** + * @internal + */ +export declare const commonParams: { + readonly UseFIPS: { + readonly type: "builtInParams"; + readonly name: "useFipsEndpoint"; + }; + readonly Endpoint: { + readonly type: "builtInParams"; + readonly name: "endpoint"; + }; + readonly Region: { + readonly type: "builtInParams"; + readonly name: "region"; + }; + readonly UseDualStack: { + readonly type: "builtInParams"; + readonly name: "useDualstackEndpoint"; + }; +}; +/** + * @internal + */ +export interface EndpointParameters extends __EndpointParameters { + UseDualStack?: boolean | undefined; + UseFIPS?: boolean | undefined; + Endpoint?: string | undefined; + Region?: string | undefined; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/endpoint/endpointResolver.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/endpoint/endpointResolver.d.ts new file mode 100644 index 000000000..c1de67d3e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/endpoint/endpointResolver.d.ts @@ -0,0 +1,8 @@ +import type { EndpointV2, Logger } from "@smithy/types"; +import type { EndpointParameters } from "./EndpointParameters"; +/** + * @internal + */ +export declare const defaultEndpointResolver: (endpointParams: EndpointParameters, context?: { + logger?: Logger; +}) => EndpointV2; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/endpoint/ruleset.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/endpoint/ruleset.d.ts new file mode 100644 index 000000000..4dda20a8e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/endpoint/ruleset.d.ts @@ -0,0 +1,2 @@ +import type { RuleSetObject } from "@smithy/types"; +export declare const ruleSet: RuleSetObject; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/extensionConfiguration.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/extensionConfiguration.d.ts new file mode 100644 index 000000000..33234b0d4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/extensionConfiguration.d.ts @@ -0,0 +1,9 @@ +import type { AwsRegionExtensionConfiguration } from "@aws-sdk/types"; +import type { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; +import type { DefaultExtensionConfiguration } from "@smithy/types"; +import type { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; +/** + * @internal + */ +export interface SigninExtensionConfiguration extends HttpHandlerExtensionConfiguration, DefaultExtensionConfiguration, AwsRegionExtensionConfiguration, HttpAuthExtensionConfiguration { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/index.d.ts new file mode 100644 index 000000000..29229f16a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/index.d.ts @@ -0,0 +1,17 @@ +/** + * AWS Sign-In manages authentication for AWS services. This service provides + * secure authentication flows for accessing AWS resources from the console and developer tools. + * + * @packageDocumentation + */ +export * from "./SigninClient"; +export * from "./Signin"; +export { ClientInputEndpointParameters } from "./endpoint/EndpointParameters"; +export type { RuntimeExtension } from "./runtimeExtensions"; +export type { SigninExtensionConfiguration } from "./extensionConfiguration"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./models/enums"; +export * from "./models/errors"; +export * from "./models/models_0"; +export { SigninServiceException } from "./models/SigninServiceException"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/models/SigninServiceException.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/models/SigninServiceException.d.ts new file mode 100644 index 000000000..4303adf3d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/models/SigninServiceException.d.ts @@ -0,0 +1,14 @@ +import { type ServiceExceptionOptions as __ServiceExceptionOptions, ServiceException as __ServiceException } from "@smithy/smithy-client"; +export type { __ServiceExceptionOptions }; +export { __ServiceException }; +/** + * @public + * + * Base exception class for all service exceptions from Signin service. + */ +export declare class SigninServiceException extends __ServiceException { + /** + * @internal + */ + constructor(options: __ServiceExceptionOptions); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/models/enums.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/models/enums.d.ts new file mode 100644 index 000000000..8d46b8dc2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/models/enums.d.ts @@ -0,0 +1,34 @@ +/** + * @public + * @enum + */ +export declare const OAuth2ErrorCode: { + /** + * Authorization code has expired + */ + readonly AUTHCODE_EXPIRED: "AUTHCODE_EXPIRED"; + /** + * Insufficient permissions to perform this operation + */ + readonly INSUFFICIENT_PERMISSIONS: "INSUFFICIENT_PERMISSIONS"; + /** + * The request is missing a required parameter, includes an invalid parameter value, or is otherwise malformed + */ + readonly INVALID_REQUEST: "INVALID_REQUEST"; + /** + * Internal server error occurred + */ + readonly SERVER_ERROR: "server_error"; + /** + * Token has expired and needs to be refreshed + */ + readonly TOKEN_EXPIRED: "TOKEN_EXPIRED"; + /** + * User credentials have been changed + */ + readonly USER_CREDENTIALS_CHANGED: "USER_CREDENTIALS_CHANGED"; +}; +/** + * @public + */ +export type OAuth2ErrorCode = (typeof OAuth2ErrorCode)[keyof typeof OAuth2ErrorCode]; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/models/errors.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/models/errors.d.ts new file mode 100644 index 000000000..e5f8b6fb5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/models/errors.d.ts @@ -0,0 +1,102 @@ +import type { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; +import type { OAuth2ErrorCode } from "./enums"; +import { SigninServiceException as __BaseException } from "./SigninServiceException"; +/** + * Error thrown for access denied scenarios with flexible HTTP status mapping + * + * Runtime HTTP Status Code Mapping: + * - HTTP 401 (Unauthorized): TOKEN_EXPIRED, AUTHCODE_EXPIRED + * - HTTP 403 (Forbidden): USER_CREDENTIALS_CHANGED, INSUFFICIENT_PERMISSIONS + * + * The specific HTTP status code is determined at runtime based on the error enum value. + * Consumers should use the error field to determine the specific access denial reason. + * @public + */ +export declare class AccessDeniedException extends __BaseException { + readonly name: "AccessDeniedException"; + readonly $fault: "client"; + /** + * OAuth 2.0 error code indicating the specific type of access denial + * Can be TOKEN_EXPIRED, AUTHCODE_EXPIRED, USER_CREDENTIALS_CHANGED, or INSUFFICIENT_PERMISSIONS + * @public + */ + error: OAuth2ErrorCode | undefined; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + * Error thrown when an internal server error occurs + * + * HTTP Status Code: 500 Internal Server Error + * + * Used for unexpected server-side errors that prevent request processing. + * @public + */ +export declare class InternalServerException extends __BaseException { + readonly name: "InternalServerException"; + readonly $fault: "server"; + /** + * OAuth 2.0 error code indicating server error + * Will be SERVER_ERROR for internal server errors + * @public + */ + error: OAuth2ErrorCode | undefined; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + * Error thrown when rate limit is exceeded + * + * HTTP Status Code: 429 Too Many Requests + * + * Possible OAuth2ErrorCode values: + * - INVALID_REQUEST: Rate limiting, too many requests, abuse prevention + * + * Possible causes: + * - Too many token requests from the same client + * - Rate limiting based on client_id or IP address + * - Abuse prevention mechanisms triggered + * - Service protection against excessive token generation + * @public + */ +export declare class TooManyRequestsError extends __BaseException { + readonly name: "TooManyRequestsError"; + readonly $fault: "client"; + /** + * OAuth 2.0 error code indicating the specific type of error + * Will be INVALID_REQUEST for rate limiting scenarios + * @public + */ + error: OAuth2ErrorCode | undefined; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + * Error thrown when request validation fails + * + * HTTP Status Code: 400 Bad Request + * + * Used for request validation errors such as malformed parameters, + * missing required fields, or invalid parameter values. + * @public + */ +export declare class ValidationException extends __BaseException { + readonly name: "ValidationException"; + readonly $fault: "client"; + /** + * OAuth 2.0 error code indicating validation failure + * Will be INVALID_REQUEST for validation errors + * @public + */ + error: OAuth2ErrorCode | undefined; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/models/models_0.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/models/models_0.d.ts new file mode 100644 index 000000000..3f59b64ab --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/models/models_0.d.ts @@ -0,0 +1,142 @@ +/** + * AWS credentials structure containing temporary access credentials + * + * The scoped-down, 15 minute duration AWS credentials. + * Scoping down will be based on CLI policy (CLI team needs to create it). + * Similar to cloud shell implementation. + * @public + */ +export interface AccessToken { + /** + * AWS access key ID for temporary credentials + * @public + */ + accessKeyId: string | undefined; + /** + * AWS secret access key for temporary credentials + * @public + */ + secretAccessKey: string | undefined; + /** + * AWS session token for temporary credentials + * @public + */ + sessionToken: string | undefined; +} +/** + * Request body payload for CreateOAuth2Token operation + * + * The operation type is determined by the grant_type parameter: + * - grant_type=authorization_code: Requires code, redirect_uri, code_verifier + * - grant_type=refresh_token: Requires refresh_token + * @public + */ +export interface CreateOAuth2TokenRequestBody { + /** + * The client identifier (ARN) used during Sign-In onboarding + * Required for both authorization code and refresh token flows + * @public + */ + clientId: string | undefined; + /** + * OAuth 2.0 grant type - determines which flow is used + * Must be "authorization_code" or "refresh_token" + * @public + */ + grantType: string | undefined; + /** + * The authorization code received from /v1/authorize + * Required only when grant_type=authorization_code + * @public + */ + code?: string | undefined; + /** + * The redirect URI that must match the original authorization request + * Required only when grant_type=authorization_code + * @public + */ + redirectUri?: string | undefined; + /** + * PKCE code verifier to prove possession of the original code challenge + * Required only when grant_type=authorization_code + * @public + */ + codeVerifier?: string | undefined; + /** + * The refresh token returned from auth_code redemption + * Required only when grant_type=refresh_token + * @public + */ + refreshToken?: string | undefined; +} +/** + * Input structure for CreateOAuth2Token operation + * + * Contains flattened token operation inputs for both authorization code and refresh token flows. + * The operation type is determined by the grant_type parameter in the request body. + * @public + */ +export interface CreateOAuth2TokenRequest { + /** + * Flattened token operation inputs + * The specific operation is determined by grant_type in the request body + * @public + */ + tokenInput: CreateOAuth2TokenRequestBody | undefined; +} +/** + * Response body payload for CreateOAuth2Token operation + * + * The response content depends on the grant_type from the request: + * - grant_type=authorization_code: Returns all fields including refresh_token and id_token + * - grant_type=refresh_token: Returns access_token, token_type, expires_in, refresh_token (no id_token) + * @public + */ +export interface CreateOAuth2TokenResponseBody { + /** + * Scoped-down AWS credentials (15 minute duration) + * Present for both authorization code redemption and token refresh + * @public + */ + accessToken: AccessToken | undefined; + /** + * Token type indicating this is AWS SigV4 credentials + * Value is "aws_sigv4" for both flows + * @public + */ + tokenType: string | undefined; + /** + * Time to expiry in seconds (maximum 900) + * Present for both authorization code redemption and token refresh + * @public + */ + expiresIn: number | undefined; + /** + * Encrypted refresh token with cnf.jkt (SHA-256 thumbprint of presented jwk) + * Always present in responses (required for both flows) + * @public + */ + refreshToken: string | undefined; + /** + * ID token containing user identity information + * Present only in authorization code redemption response (grant_type=authorization_code) + * Not included in token refresh responses + * @public + */ + idToken?: string | undefined; +} +/** + * Output structure for CreateOAuth2Token operation + * + * Contains flattened token operation outputs for both authorization code and refresh token flows. + * The response content depends on the grant_type from the original request. + * @public + */ +export interface CreateOAuth2TokenResponse { + /** + * Flattened token operation outputs + * The specific response fields depend on the grant_type used in the request + * @public + */ + tokenOutput: CreateOAuth2TokenResponseBody | undefined; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.browser.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.browser.d.ts new file mode 100644 index 000000000..a6eaded2d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.browser.d.ts @@ -0,0 +1,63 @@ +import { FetchHttpHandler as RequestHandler } from "@smithy/fetch-http-handler"; +import type { SigninClientConfig } from "./SigninClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: SigninClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + credentialDefaultProvider: ((input: any) => import("@smithy/types").AwsCredentialIdentityProvider) | ((_: unknown) => () => Promise); + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: import("@smithy/protocol-http").HttpHandler | RequestHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + cacheMiddleware?: boolean | undefined; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/core").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: string | undefined | import("@smithy/types").Provider; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + })[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SigninHttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.d.ts new file mode 100644 index 000000000..2987dd3e5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.d.ts @@ -0,0 +1,63 @@ +import { NodeHttpHandler as RequestHandler } from "@smithy/node-http-handler"; +import type { SigninClientConfig } from "./SigninClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: SigninClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider; + authSchemePreference: string[] | import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-node").PreviouslyResolved) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: RequestHandler | import("@smithy/protocol-http").HttpHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: boolean | import("@smithy/types").Provider; + useFipsEndpoint: boolean | import("@smithy/types").Provider; + userAgentAppId: string | import("@smithy/types").Provider; + cacheMiddleware?: boolean | undefined; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/core").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + credentialDefaultProvider?: (input: any) => import("@smithy/types").AwsCredentialIdentityProvider; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + })[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SigninHttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.native.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.native.d.ts new file mode 100644 index 000000000..9be57a067 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.native.d.ts @@ -0,0 +1,62 @@ +import type { SigninClientConfig } from "./SigninClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: SigninClientConfig) => { + runtime: string; + sha256: import("@smithy/types").HashConstructor; + requestHandler: import("@smithy/types").NodeHttpHandlerOptions | import("@smithy/types").FetchHttpHandlerOptions | Record | import("@smithy/protocol-http").HttpHandler | import("@smithy/fetch-http-handler").FetchHttpHandler; + cacheMiddleware?: boolean; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/core").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + streamCollector: import("@smithy/types").StreamCollector; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + region: string | import("@smithy/types").Provider; + profile?: string; + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved) => Promise; + credentialDefaultProvider: ((input: any) => import("@smithy/types").AwsCredentialIdentityProvider) | ((_: unknown) => () => Promise); + maxAttempts: number | import("@smithy/types").Provider; + retryMode: string | import("@smithy/types").Provider; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + defaultsMode: import("@smithy/smithy-client").DefaultsMode | import("@smithy/types").Provider; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: string | undefined | import("@smithy/types").Provider; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + })[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SigninHttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.shared.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.shared.d.ts new file mode 100644 index 000000000..9c552072d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.shared.d.ts @@ -0,0 +1,38 @@ +import { AwsSdkSigV4Signer } from "@aws-sdk/core"; +import { AwsRestJsonProtocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; +import type { IdentityProviderConfig } from "@smithy/types"; +import type { SigninClientConfig } from "./SigninClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: SigninClientConfig) => { + apiVersion: string; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + disableHostPrefix: boolean; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SigninHttpAuthSchemeProvider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: NoAuthSigner; + })[]; + logger: import("@smithy/types").Logger; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof AwsRestJsonProtocol; + protocolSettings: { + [setting: string]: unknown; + defaultNamespace?: string; + }; + serviceId: string; + urlParser: import("@smithy/types").UrlParser; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeExtensions.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeExtensions.d.ts new file mode 100644 index 000000000..cc51453ae --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeExtensions.d.ts @@ -0,0 +1,17 @@ +import type { SigninExtensionConfiguration } from "./extensionConfiguration"; +/** + * @public + */ +export interface RuntimeExtension { + configure(extensionConfiguration: SigninExtensionConfiguration): void; +} +/** + * @public + */ +export interface RuntimeExtensionsConfig { + extensions: RuntimeExtension[]; +} +/** + * @internal + */ +export declare const resolveRuntimeExtensions: (runtimeConfig: any, extensions: RuntimeExtension[]) => any; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/schemas/schemas_0.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/schemas/schemas_0.d.ts new file mode 100644 index 000000000..8a1f9e4cc --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/schemas/schemas_0.d.ts @@ -0,0 +1,19 @@ +import { TypeRegistry } from "@smithy/core/schema"; +import type { StaticErrorSchema, StaticOperationSchema, StaticStructureSchema } from "@smithy/types"; +export declare var SigninServiceException$: StaticErrorSchema; +export declare var AccessDeniedException$: StaticErrorSchema; +export declare var InternalServerException$: StaticErrorSchema; +export declare var TooManyRequestsError$: StaticErrorSchema; +export declare var ValidationException$: StaticErrorSchema; +/** + * TypeRegistry instances containing modeled errors. + * @internal + * + */ +export declare const errorTypeRegistries: TypeRegistry[]; +export declare var AccessToken$: StaticStructureSchema; +export declare var CreateOAuth2TokenRequest$: StaticStructureSchema; +export declare var CreateOAuth2TokenRequestBody$: StaticStructureSchema; +export declare var CreateOAuth2TokenResponse$: StaticStructureSchema; +export declare var CreateOAuth2TokenResponseBody$: StaticStructureSchema; +export declare var CreateOAuth2Token$: StaticOperationSchema; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/SSOOIDC.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/SSOOIDC.d.ts new file mode 100644 index 000000000..3f0d06607 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/SSOOIDC.d.ts @@ -0,0 +1,55 @@ +import type { HttpHandlerOptions as __HttpHandlerOptions } from "@smithy/types"; +import type { CreateTokenCommandInput, CreateTokenCommandOutput } from "./commands/CreateTokenCommand"; +import { SSOOIDCClient } from "./SSOOIDCClient"; +export interface SSOOIDC { + /** + * @see {@link CreateTokenCommand} + */ + createToken(args: CreateTokenCommandInput, options?: __HttpHandlerOptions): Promise; + createToken(args: CreateTokenCommandInput, cb: (err: any, data?: CreateTokenCommandOutput) => void): void; + createToken(args: CreateTokenCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: CreateTokenCommandOutput) => void): void; +} +/** + *

IAM Identity Center OpenID Connect (OIDC) is a web service that enables a client (such as CLI or a + * native application) to register with IAM Identity Center. The service also enables the client to fetch the + * user’s access token upon successful authentication and authorization with IAM Identity Center.

+ *

+ * API namespaces + *

+ *

IAM Identity Center uses the sso and identitystore API namespaces. IAM Identity Center + * OpenID Connect uses the sso-oauth namespace.

+ *

+ * Considerations for using this guide + *

+ *

Before you begin using this guide, we recommend that you first review the following + * important information about how the IAM Identity Center OIDC service works.

+ *
    + *
  • + *

    The IAM Identity Center OIDC service currently implements only the portions of the OAuth 2.0 Device + * Authorization Grant standard (https://tools.ietf.org/html/rfc8628) that are necessary to enable single + * sign-on authentication with the CLI.

    + *
  • + *
  • + *

    With older versions of the CLI, the service only emits OIDC access tokens, so to + * obtain a new token, users must explicitly re-authenticate. To access the OIDC flow that + * supports token refresh and doesn’t require re-authentication, update to the latest CLI + * version (1.27.10 for CLI V1 and 2.9.0 for CLI V2) with support for OIDC token refresh + * and configurable IAM Identity Center session durations. For more information, see Configure Amazon Web Services access portal session duration .

    + *
  • + *
  • + *

    The access tokens provided by this service grant access to all Amazon Web Services account + * entitlements assigned to an IAM Identity Center user, not just a particular application.

    + *
  • + *
  • + *

    The documentation in this guide does not describe the mechanism to convert the access + * token into Amazon Web Services Auth (“sigv4”) credentials for use with IAM-protected Amazon Web Services service + * endpoints. For more information, see GetRoleCredentials in the IAM Identity Center Portal API Reference + * Guide.

    + *
  • + *
+ *

For general information about IAM Identity Center, see What is + * IAM Identity Center? in the IAM Identity Center User Guide.

+ * @public + */ +export declare class SSOOIDC extends SSOOIDCClient implements SSOOIDC { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/SSOOIDCClient.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/SSOOIDCClient.d.ts new file mode 100644 index 000000000..d00e1c79f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/SSOOIDCClient.d.ts @@ -0,0 +1,221 @@ +import { type HostHeaderInputConfig, type HostHeaderResolvedConfig } from "@aws-sdk/middleware-host-header"; +import { type UserAgentInputConfig, type UserAgentResolvedConfig } from "@aws-sdk/middleware-user-agent"; +import { type RegionInputConfig, type RegionResolvedConfig } from "@smithy/config-resolver"; +import { type EndpointInputConfig, type EndpointResolvedConfig } from "@smithy/middleware-endpoint"; +import { type RetryInputConfig, type RetryResolvedConfig } from "@smithy/middleware-retry"; +import type { HttpHandlerUserInput as __HttpHandlerUserInput } from "@smithy/protocol-http"; +import { type DefaultsMode as __DefaultsMode, type SmithyConfiguration as __SmithyConfiguration, type SmithyResolvedConfiguration as __SmithyResolvedConfiguration, Client as __Client } from "@smithy/smithy-client"; +import type { Provider, UserAgent as __UserAgent } from "@smithy/types"; +import { type BodyLengthCalculator as __BodyLengthCalculator, type CheckOptionalClientConfig as __CheckOptionalClientConfig, type ChecksumConstructor as __ChecksumConstructor, type Decoder as __Decoder, type Encoder as __Encoder, type HashConstructor as __HashConstructor, type HttpHandlerOptions as __HttpHandlerOptions, type Logger as __Logger, type Provider as __Provider, type StreamCollector as __StreamCollector, type UrlParser as __UrlParser } from "@smithy/types"; +import { type HttpAuthSchemeInputConfig, type HttpAuthSchemeResolvedConfig } from "./auth/httpAuthSchemeProvider"; +import type { CreateTokenCommandInput, CreateTokenCommandOutput } from "./commands/CreateTokenCommand"; +import type { ClientInputEndpointParameters, ClientResolvedEndpointParameters, EndpointParameters } from "./endpoint/EndpointParameters"; +import { type RuntimeExtension, type RuntimeExtensionsConfig } from "./runtimeExtensions"; +export { __Client }; +/** + * @public + */ +export type ServiceInputTypes = CreateTokenCommandInput; +/** + * @public + */ +export type ServiceOutputTypes = CreateTokenCommandOutput; +/** + * @public + */ +export interface ClientDefaults extends Partial<__SmithyConfiguration<__HttpHandlerOptions>> { + /** + * The HTTP handler to use or its constructor options. Fetch in browser and Https in Nodejs. + */ + requestHandler?: __HttpHandlerUserInput; + /** + * A constructor for a class implementing the {@link @smithy/types#ChecksumConstructor} interface + * that computes the SHA-256 HMAC or checksum of a string or binary buffer. + * @internal + */ + sha256?: __ChecksumConstructor | __HashConstructor; + /** + * The function that will be used to convert strings into HTTP endpoints. + * @internal + */ + urlParser?: __UrlParser; + /** + * A function that can calculate the length of a request body. + * @internal + */ + bodyLengthChecker?: __BodyLengthCalculator; + /** + * A function that converts a stream into an array of bytes. + * @internal + */ + streamCollector?: __StreamCollector; + /** + * The function that will be used to convert a base64-encoded string to a byte array. + * @internal + */ + base64Decoder?: __Decoder; + /** + * The function that will be used to convert binary data to a base64-encoded string. + * @internal + */ + base64Encoder?: __Encoder; + /** + * The function that will be used to convert a UTF8-encoded string to a byte array. + * @internal + */ + utf8Decoder?: __Decoder; + /** + * The function that will be used to convert binary data to a UTF-8 encoded string. + * @internal + */ + utf8Encoder?: __Encoder; + /** + * The runtime environment. + * @internal + */ + runtime?: string; + /** + * Disable dynamically changing the endpoint of the client based on the hostPrefix + * trait of an operation. + */ + disableHostPrefix?: boolean; + /** + * Unique service identifier. + * @internal + */ + serviceId?: string; + /** + * Enables IPv6/IPv4 dualstack endpoint. + */ + useDualstackEndpoint?: boolean | __Provider; + /** + * Enables FIPS compatible endpoints. + */ + useFipsEndpoint?: boolean | __Provider; + /** + * The AWS region to which this client will send requests + */ + region?: string | __Provider; + /** + * Setting a client profile is similar to setting a value for the + * AWS_PROFILE environment variable. Setting a profile on a client + * in code only affects the single client instance, unlike AWS_PROFILE. + * + * When set, and only for environments where an AWS configuration + * file exists, fields configurable by this file will be retrieved + * from the specified profile within that file. + * Conflicting code configuration and environment variables will + * still have higher priority. + * + * For client credential resolution that involves checking the AWS + * configuration file, the client's profile (this value) will be + * used unless a different profile is set in the credential + * provider options. + * + */ + profile?: string; + /** + * The provider populating default tracking information to be sent with `user-agent`, `x-amz-user-agent` header + * @internal + */ + defaultUserAgentProvider?: Provider<__UserAgent>; + /** + * Value for how many times a request will be made at most in case of retry. + */ + maxAttempts?: number | __Provider; + /** + * Specifies which retry algorithm to use. + * @see https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-util-retry/Enum/RETRY_MODES/ + * + */ + retryMode?: string | __Provider; + /** + * Optional logger for logging debug/info/warn/error. + */ + logger?: __Logger; + /** + * Optional extensions + */ + extensions?: RuntimeExtension[]; + /** + * The {@link @smithy/smithy-client#DefaultsMode} that will be used to determine how certain default configuration options are resolved in the SDK. + */ + defaultsMode?: __DefaultsMode | __Provider<__DefaultsMode>; +} +/** + * @public + */ +export type SSOOIDCClientConfigType = Partial<__SmithyConfiguration<__HttpHandlerOptions>> & ClientDefaults & UserAgentInputConfig & RetryInputConfig & RegionInputConfig & HostHeaderInputConfig & EndpointInputConfig & HttpAuthSchemeInputConfig & ClientInputEndpointParameters; +/** + * @public + * + * The configuration interface of SSOOIDCClient class constructor that set the region, credentials and other options. + */ +export interface SSOOIDCClientConfig extends SSOOIDCClientConfigType { +} +/** + * @public + */ +export type SSOOIDCClientResolvedConfigType = __SmithyResolvedConfiguration<__HttpHandlerOptions> & Required & RuntimeExtensionsConfig & UserAgentResolvedConfig & RetryResolvedConfig & RegionResolvedConfig & HostHeaderResolvedConfig & EndpointResolvedConfig & HttpAuthSchemeResolvedConfig & ClientResolvedEndpointParameters; +/** + * @public + * + * The resolved configuration interface of SSOOIDCClient class. This is resolved and normalized from the {@link SSOOIDCClientConfig | constructor configuration interface}. + */ +export interface SSOOIDCClientResolvedConfig extends SSOOIDCClientResolvedConfigType { +} +/** + *

IAM Identity Center OpenID Connect (OIDC) is a web service that enables a client (such as CLI or a + * native application) to register with IAM Identity Center. The service also enables the client to fetch the + * user’s access token upon successful authentication and authorization with IAM Identity Center.

+ *

+ * API namespaces + *

+ *

IAM Identity Center uses the sso and identitystore API namespaces. IAM Identity Center + * OpenID Connect uses the sso-oauth namespace.

+ *

+ * Considerations for using this guide + *

+ *

Before you begin using this guide, we recommend that you first review the following + * important information about how the IAM Identity Center OIDC service works.

+ *
    + *
  • + *

    The IAM Identity Center OIDC service currently implements only the portions of the OAuth 2.0 Device + * Authorization Grant standard (https://tools.ietf.org/html/rfc8628) that are necessary to enable single + * sign-on authentication with the CLI.

    + *
  • + *
  • + *

    With older versions of the CLI, the service only emits OIDC access tokens, so to + * obtain a new token, users must explicitly re-authenticate. To access the OIDC flow that + * supports token refresh and doesn’t require re-authentication, update to the latest CLI + * version (1.27.10 for CLI V1 and 2.9.0 for CLI V2) with support for OIDC token refresh + * and configurable IAM Identity Center session durations. For more information, see Configure Amazon Web Services access portal session duration .

    + *
  • + *
  • + *

    The access tokens provided by this service grant access to all Amazon Web Services account + * entitlements assigned to an IAM Identity Center user, not just a particular application.

    + *
  • + *
  • + *

    The documentation in this guide does not describe the mechanism to convert the access + * token into Amazon Web Services Auth (“sigv4”) credentials for use with IAM-protected Amazon Web Services service + * endpoints. For more information, see GetRoleCredentials in the IAM Identity Center Portal API Reference + * Guide.

    + *
  • + *
+ *

For general information about IAM Identity Center, see What is + * IAM Identity Center? in the IAM Identity Center User Guide.

+ * @public + */ +export declare class SSOOIDCClient extends __Client<__HttpHandlerOptions, ServiceInputTypes, ServiceOutputTypes, SSOOIDCClientResolvedConfig> { + /** + * The resolved configuration of SSOOIDCClient class. This is resolved and normalized from the {@link SSOOIDCClientConfig | constructor configuration interface}. + */ + readonly config: SSOOIDCClientResolvedConfig; + constructor(...[configuration]: __CheckOptionalClientConfig); + /** + * Destroy underlying resources, like sockets. It's usually not necessary to do this. + * However in Node.js, it's best to explicitly shut down the client's agent when it is no longer needed. + * Otherwise, sockets might stay open for quite a long time before the server terminates them. + */ + destroy(): void; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/auth/httpAuthExtensionConfiguration.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/auth/httpAuthExtensionConfiguration.d.ts new file mode 100644 index 000000000..91072a241 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/auth/httpAuthExtensionConfiguration.d.ts @@ -0,0 +1,30 @@ +import type { AwsCredentialIdentity, AwsCredentialIdentityProvider } from "@smithy/types"; +import { type HttpAuthScheme } from "@smithy/types"; +import type { SSOOIDCHttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; +/** + * @internal + */ +export interface HttpAuthExtensionConfiguration { + setHttpAuthScheme(httpAuthScheme: HttpAuthScheme): void; + httpAuthSchemes(): HttpAuthScheme[]; + setHttpAuthSchemeProvider(httpAuthSchemeProvider: SSOOIDCHttpAuthSchemeProvider): void; + httpAuthSchemeProvider(): SSOOIDCHttpAuthSchemeProvider; + setCredentials(credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider): void; + credentials(): AwsCredentialIdentity | AwsCredentialIdentityProvider | undefined; +} +/** + * @internal + */ +export type HttpAuthRuntimeConfig = Partial<{ + httpAuthSchemes: HttpAuthScheme[]; + httpAuthSchemeProvider: SSOOIDCHttpAuthSchemeProvider; + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider; +}>; +/** + * @internal + */ +export declare const getHttpAuthExtensionConfiguration: (runtimeConfig: HttpAuthRuntimeConfig) => HttpAuthExtensionConfiguration; +/** + * @internal + */ +export declare const resolveHttpAuthRuntimeConfig: (config: HttpAuthExtensionConfiguration) => HttpAuthRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/auth/httpAuthSchemeProvider.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/auth/httpAuthSchemeProvider.d.ts new file mode 100644 index 000000000..66a5a130b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/auth/httpAuthSchemeProvider.d.ts @@ -0,0 +1,75 @@ +import type { AwsSdkSigV4AuthInputConfig, AwsSdkSigV4AuthResolvedConfig, AwsSdkSigV4PreviouslyResolved } from "@aws-sdk/core"; +import type { HandlerExecutionContext, HttpAuthScheme, HttpAuthSchemeParameters, HttpAuthSchemeParametersProvider, HttpAuthSchemeProvider, Provider } from "@smithy/types"; +import { type SSOOIDCClientResolvedConfig } from "../SSOOIDCClient"; +/** + * @internal + */ +export interface SSOOIDCHttpAuthSchemeParameters extends HttpAuthSchemeParameters { + region?: string; +} +/** + * @internal + */ +export interface SSOOIDCHttpAuthSchemeParametersProvider extends HttpAuthSchemeParametersProvider { +} +/** + * @internal + */ +export declare const defaultSSOOIDCHttpAuthSchemeParametersProvider: (config: SSOOIDCClientResolvedConfig, context: HandlerExecutionContext, input: object) => Promise; +/** + * @internal + */ +export interface SSOOIDCHttpAuthSchemeProvider extends HttpAuthSchemeProvider { +} +/** + * @internal + */ +export declare const defaultSSOOIDCHttpAuthSchemeProvider: SSOOIDCHttpAuthSchemeProvider; +/** + * @public + */ +export interface HttpAuthSchemeInputConfig extends AwsSdkSigV4AuthInputConfig { + /** + * A comma-separated list of case-sensitive auth scheme names. + * An auth scheme name is a fully qualified auth scheme ID with the namespace prefix trimmed. + * For example, the auth scheme with ID aws.auth#sigv4 is named sigv4. + * @public + */ + authSchemePreference?: string[] | Provider; + /** + * Configuration of HttpAuthSchemes for a client which provides default identity providers and signers per auth scheme. + * @internal + */ + httpAuthSchemes?: HttpAuthScheme[]; + /** + * Configuration of an HttpAuthSchemeProvider for a client which resolves which HttpAuthScheme to use. + * @internal + */ + httpAuthSchemeProvider?: SSOOIDCHttpAuthSchemeProvider; +} +/** + * @internal + */ +export interface HttpAuthSchemeResolvedConfig extends AwsSdkSigV4AuthResolvedConfig { + /** + * A comma-separated list of case-sensitive auth scheme names. + * An auth scheme name is a fully qualified auth scheme ID with the namespace prefix trimmed. + * For example, the auth scheme with ID aws.auth#sigv4 is named sigv4. + * @public + */ + readonly authSchemePreference: Provider; + /** + * Configuration of HttpAuthSchemes for a client which provides default identity providers and signers per auth scheme. + * @internal + */ + readonly httpAuthSchemes: HttpAuthScheme[]; + /** + * Configuration of an HttpAuthSchemeProvider for a client which resolves which HttpAuthScheme to use. + * @internal + */ + readonly httpAuthSchemeProvider: SSOOIDCHttpAuthSchemeProvider; +} +/** + * @internal + */ +export declare const resolveHttpAuthSchemeConfig: (config: T & HttpAuthSchemeInputConfig & AwsSdkSigV4PreviouslyResolved) => T & HttpAuthSchemeResolvedConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/commands/CreateTokenCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/commands/CreateTokenCommand.d.ts new file mode 100644 index 000000000..a4c900ba8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/commands/CreateTokenCommand.d.ts @@ -0,0 +1,176 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CreateTokenRequest, CreateTokenResponse } from "../models/models_0"; +import type { SSOOIDCClientResolvedConfig } from "../SSOOIDCClient"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link CreateTokenCommand}. + */ +export interface CreateTokenCommandInput extends CreateTokenRequest { +} +/** + * @public + * + * The output of {@link CreateTokenCommand}. + */ +export interface CreateTokenCommandOutput extends CreateTokenResponse, __MetadataBearer { +} +declare const CreateTokenCommand_base: { + new (input: CreateTokenCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: CreateTokenCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Creates and returns access and refresh tokens for clients that are authenticated using + * client secrets. The access token can be used to fetch short-lived credentials for the assigned + * AWS accounts or to access application APIs using bearer authentication.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { SSOOIDCClient, CreateTokenCommand } from "@aws-sdk/client-sso-oidc"; // ES Modules import + * // const { SSOOIDCClient, CreateTokenCommand } = require("@aws-sdk/client-sso-oidc"); // CommonJS import + * // import type { SSOOIDCClientConfig } from "@aws-sdk/client-sso-oidc"; + * const config = {}; // type is SSOOIDCClientConfig + * const client = new SSOOIDCClient(config); + * const input = { // CreateTokenRequest + * clientId: "STRING_VALUE", // required + * clientSecret: "STRING_VALUE", // required + * grantType: "STRING_VALUE", // required + * deviceCode: "STRING_VALUE", + * code: "STRING_VALUE", + * refreshToken: "STRING_VALUE", + * scope: [ // Scopes + * "STRING_VALUE", + * ], + * redirectUri: "STRING_VALUE", + * codeVerifier: "STRING_VALUE", + * }; + * const command = new CreateTokenCommand(input); + * const response = await client.send(command); + * // { // CreateTokenResponse + * // accessToken: "STRING_VALUE", + * // tokenType: "STRING_VALUE", + * // expiresIn: Number("int"), + * // refreshToken: "STRING_VALUE", + * // idToken: "STRING_VALUE", + * // }; + * + * ``` + * + * @param CreateTokenCommandInput - {@link CreateTokenCommandInput} + * @returns {@link CreateTokenCommandOutput} + * @see {@link CreateTokenCommandInput} for command's `input` shape. + * @see {@link CreateTokenCommandOutput} for command's `response` shape. + * @see {@link SSOOIDCClientResolvedConfig | config} for SSOOIDCClient's `config` shape. + * + * @throws {@link AccessDeniedException} (client fault) + *

You do not have sufficient access to perform this action.

+ * + * @throws {@link AuthorizationPendingException} (client fault) + *

Indicates that a request to authorize a client with an access user session token is + * pending.

+ * + * @throws {@link ExpiredTokenException} (client fault) + *

Indicates that the token issued by the service is expired and is no longer valid.

+ * + * @throws {@link InternalServerException} (server fault) + *

Indicates that an error from the service occurred while trying to process a + * request.

+ * + * @throws {@link InvalidClientException} (client fault) + *

Indicates that the clientId or clientSecret in the request is + * invalid. For example, this can occur when a client sends an incorrect clientId or + * an expired clientSecret.

+ * + * @throws {@link InvalidGrantException} (client fault) + *

Indicates that a request contains an invalid grant. This can occur if a client makes a + * CreateToken request with an invalid grant type.

+ * + * @throws {@link InvalidRequestException} (client fault) + *

Indicates that something is wrong with the input to the request. For example, a required + * parameter might be missing or out of range.

+ * + * @throws {@link InvalidScopeException} (client fault) + *

Indicates that the scope provided in the request is invalid.

+ * + * @throws {@link SlowDownException} (client fault) + *

Indicates that the client is making the request too frequently and is more than the + * service can handle.

+ * + * @throws {@link UnauthorizedClientException} (client fault) + *

Indicates that the client is not currently authorized to make the request. This can happen + * when a clientId is not issued for a public client.

+ * + * @throws {@link UnsupportedGrantTypeException} (client fault) + *

Indicates that the grant type in the request is not supported by the service.

+ * + * @throws {@link SSOOIDCServiceException} + *

Base exception class for all service exceptions from SSOOIDC service.

+ * + * + * @example Call OAuth/OIDC /token endpoint for Device Code grant with Secret authentication + * ```javascript + * // + * const input = { + * clientId: "_yzkThXVzLWVhc3QtMQEXAMPLECLIENTID", + * clientSecret: "VERYLONGSECRETeyJraWQiOiJrZXktMTU2NDAyODA5OSIsImFsZyI6IkhTMzg0In0", + * deviceCode: "yJraWQiOiJrZXktMTU2Njk2ODA4OCIsImFsZyI6IkhTMzIn0EXAMPLEDEVICECODE", + * grantType: "urn:ietf:params:oauth:grant-type:device-code" + * }; + * const command = new CreateTokenCommand(input); + * const response = await client.send(command); + * /* response is + * { + * accessToken: "aoal-YigITUDiNX1xZwOMXM5MxOWDL0E0jg9P6_C_jKQPxS_SKCP6f0kh1Up4g7TtvQqkMnD-GJiU_S1gvug6SrggAkc0:MGYCMQD3IatVjV7jAJU91kK3PkS/SfA2wtgWzOgZWDOR7sDGN9t0phCZz5It/aes/3C1Zj0CMQCKWOgRaiz6AIhza3DSXQNMLjRKXC8F8ceCsHlgYLMZ7hZidEXAMPLEACCESSTOKEN", + * expiresIn: 1579729529, + * refreshToken: "aorvJYubGpU6i91YnH7Mfo-AT2fIVa1zCfA_Rvq9yjVKIP3onFmmykuQ7E93y2I-9Nyj-A_sVvMufaLNL0bqnDRtgAkc0:MGUCMFrRsktMRVlWaOR70XGMFGLL0SlcCw4DiYveIiOVx1uK9BbD0gvAddsW3UTLozXKMgIxAJ3qxUvjpnlLIOaaKOoa/FuNgqJVvr9GMwDtnAtlh9iZzAkEXAMPLEREFRESHTOKEN", + * tokenType: "Bearer" + * } + * *\/ + * ``` + * + * @example Call OAuth/OIDC /token endpoint for Refresh Token grant with Secret authentication + * ```javascript + * // + * const input = { + * clientId: "_yzkThXVzLWVhc3QtMQEXAMPLECLIENTID", + * clientSecret: "VERYLONGSECRETeyJraWQiOiJrZXktMTU2NDAyODA5OSIsImFsZyI6IkhTMzg0In0", + * grantType: "refresh_token", + * refreshToken: "aorvJYubGpU6i91YnH7Mfo-AT2fIVa1zCfA_Rvq9yjVKIP3onFmmykuQ7E93y2I-9Nyj-A_sVvMufaLNL0bqnDRtgAkc0:MGUCMFrRsktMRVlWaOR70XGMFGLL0SlcCw4DiYveIiOVx1uK9BbD0gvAddsW3UTLozXKMgIxAJ3qxUvjpnlLIOaaKOoa/FuNgqJVvr9GMwDtnAtlh9iZzAkEXAMPLEREFRESHTOKEN", + * scope: [ + * "codewhisperer:completions" + * ] + * }; + * const command = new CreateTokenCommand(input); + * const response = await client.send(command); + * /* response is + * { + * accessToken: "aoal-YigITUDiNX1xZwOMXM5MxOWDL0E0jg9P6_C_jKQPxS_SKCP6f0kh1Up4g7TtvQqkMnD-GJiU_S1gvug6SrggAkc0:MGYCMQD3IatVjV7jAJU91kK3PkS/SfA2wtgWzOgZWDOR7sDGN9t0phCZz5It/aes/3C1Zj0CMQCKWOgRaiz6AIhza3DSXQNMLjRKXC8F8ceCsHlgYLMZ7hZidEXAMPLEACCESSTOKEN", + * expiresIn: 1579729529, + * refreshToken: "aorvJYubGpU6i91YnH7Mfo-AT2fIVa1zCfA_Rvq9yjVKIP3onFmmykuQ7E93y2I-9Nyj-A_sVvMufaLNL0bqnDRtgAkc0:MGUCMFrRsktMRVlWaOR70XGMFGLL0SlcCw4DiYveIiOVx1uK9BbD0gvAddsW3UTLozXKMgIxAJ3qxUvjpnlLIOaaKOoa/FuNgqJVvr9GMwDtnAtlh9iZzAkEXAMPLEREFRESHTOKEN", + * tokenType: "Bearer" + * } + * *\/ + * ``` + * + * @public + */ +export declare class CreateTokenCommand extends CreateTokenCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: CreateTokenRequest; + output: CreateTokenResponse; + }; + sdk: { + input: CreateTokenCommandInput; + output: CreateTokenCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/commands/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/commands/index.d.ts new file mode 100644 index 000000000..09214caef --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/commands/index.d.ts @@ -0,0 +1 @@ +export * from "./CreateTokenCommand"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/endpoint/EndpointParameters.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/endpoint/EndpointParameters.d.ts new file mode 100644 index 000000000..240d5235a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/endpoint/EndpointParameters.d.ts @@ -0,0 +1,50 @@ +import type { Endpoint, EndpointParameters as __EndpointParameters, EndpointV2, Provider } from "@smithy/types"; +/** + * @public + */ +export interface ClientInputEndpointParameters { + region?: string | undefined | Provider; + useDualstackEndpoint?: boolean | undefined | Provider; + useFipsEndpoint?: boolean | undefined | Provider; + endpoint?: string | Provider | Endpoint | Provider | EndpointV2 | Provider; +} +/** + * @public + */ +export type ClientResolvedEndpointParameters = Omit & { + defaultSigningName: string; +}; +/** + * @internal + */ +export declare const resolveClientEndpointParameters: (options: T & ClientInputEndpointParameters) => T & ClientResolvedEndpointParameters; +/** + * @internal + */ +export declare const commonParams: { + readonly UseFIPS: { + readonly type: "builtInParams"; + readonly name: "useFipsEndpoint"; + }; + readonly Endpoint: { + readonly type: "builtInParams"; + readonly name: "endpoint"; + }; + readonly Region: { + readonly type: "builtInParams"; + readonly name: "region"; + }; + readonly UseDualStack: { + readonly type: "builtInParams"; + readonly name: "useDualstackEndpoint"; + }; +}; +/** + * @internal + */ +export interface EndpointParameters extends __EndpointParameters { + Region?: string | undefined; + UseDualStack?: boolean | undefined; + UseFIPS?: boolean | undefined; + Endpoint?: string | undefined; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/endpoint/endpointResolver.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/endpoint/endpointResolver.d.ts new file mode 100644 index 000000000..c1de67d3e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/endpoint/endpointResolver.d.ts @@ -0,0 +1,8 @@ +import type { EndpointV2, Logger } from "@smithy/types"; +import type { EndpointParameters } from "./EndpointParameters"; +/** + * @internal + */ +export declare const defaultEndpointResolver: (endpointParams: EndpointParameters, context?: { + logger?: Logger; +}) => EndpointV2; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/endpoint/ruleset.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/endpoint/ruleset.d.ts new file mode 100644 index 000000000..4dda20a8e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/endpoint/ruleset.d.ts @@ -0,0 +1,2 @@ +import type { RuleSetObject } from "@smithy/types"; +export declare const ruleSet: RuleSetObject; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/extensionConfiguration.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/extensionConfiguration.d.ts new file mode 100644 index 000000000..4f50ca0f1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/extensionConfiguration.d.ts @@ -0,0 +1,9 @@ +import type { AwsRegionExtensionConfiguration } from "@aws-sdk/types"; +import type { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; +import type { DefaultExtensionConfiguration } from "@smithy/types"; +import type { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; +/** + * @internal + */ +export interface SSOOIDCExtensionConfiguration extends HttpHandlerExtensionConfiguration, DefaultExtensionConfiguration, AwsRegionExtensionConfiguration, HttpAuthExtensionConfiguration { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/index.d.ts new file mode 100644 index 000000000..c58539066 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/index.d.ts @@ -0,0 +1,54 @@ +/** + *

IAM Identity Center OpenID Connect (OIDC) is a web service that enables a client (such as CLI or a + * native application) to register with IAM Identity Center. The service also enables the client to fetch the + * user’s access token upon successful authentication and authorization with IAM Identity Center.

+ *

+ * API namespaces + *

+ *

IAM Identity Center uses the sso and identitystore API namespaces. IAM Identity Center + * OpenID Connect uses the sso-oauth namespace.

+ *

+ * Considerations for using this guide + *

+ *

Before you begin using this guide, we recommend that you first review the following + * important information about how the IAM Identity Center OIDC service works.

+ *
    + *
  • + *

    The IAM Identity Center OIDC service currently implements only the portions of the OAuth 2.0 Device + * Authorization Grant standard (https://tools.ietf.org/html/rfc8628) that are necessary to enable single + * sign-on authentication with the CLI.

    + *
  • + *
  • + *

    With older versions of the CLI, the service only emits OIDC access tokens, so to + * obtain a new token, users must explicitly re-authenticate. To access the OIDC flow that + * supports token refresh and doesn’t require re-authentication, update to the latest CLI + * version (1.27.10 for CLI V1 and 2.9.0 for CLI V2) with support for OIDC token refresh + * and configurable IAM Identity Center session durations. For more information, see Configure Amazon Web Services access portal session duration .

    + *
  • + *
  • + *

    The access tokens provided by this service grant access to all Amazon Web Services account + * entitlements assigned to an IAM Identity Center user, not just a particular application.

    + *
  • + *
  • + *

    The documentation in this guide does not describe the mechanism to convert the access + * token into Amazon Web Services Auth (“sigv4”) credentials for use with IAM-protected Amazon Web Services service + * endpoints. For more information, see GetRoleCredentials in the IAM Identity Center Portal API Reference + * Guide.

    + *
  • + *
+ *

For general information about IAM Identity Center, see What is + * IAM Identity Center? in the IAM Identity Center User Guide.

+ * + * @packageDocumentation + */ +export * from "./SSOOIDCClient"; +export * from "./SSOOIDC"; +export { ClientInputEndpointParameters } from "./endpoint/EndpointParameters"; +export type { RuntimeExtension } from "./runtimeExtensions"; +export type { SSOOIDCExtensionConfiguration } from "./extensionConfiguration"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./models/enums"; +export * from "./models/errors"; +export * from "./models/models_0"; +export { SSOOIDCServiceException } from "./models/SSOOIDCServiceException"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/SSOOIDCServiceException.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/SSOOIDCServiceException.d.ts new file mode 100644 index 000000000..e9499ca8c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/SSOOIDCServiceException.d.ts @@ -0,0 +1,14 @@ +import { type ServiceExceptionOptions as __ServiceExceptionOptions, ServiceException as __ServiceException } from "@smithy/smithy-client"; +export type { __ServiceExceptionOptions }; +export { __ServiceException }; +/** + * @public + * + * Base exception class for all service exceptions from SSOOIDC service. + */ +export declare class SSOOIDCServiceException extends __ServiceException { + /** + * @internal + */ + constructor(options: __ServiceExceptionOptions); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/enums.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/enums.d.ts new file mode 100644 index 000000000..176a46395 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/enums.d.ts @@ -0,0 +1,25 @@ +/** + * @public + * @enum + */ +export declare const AccessDeniedExceptionReason: { + readonly KMS_ACCESS_DENIED: "KMS_AccessDeniedException"; +}; +/** + * @public + */ +export type AccessDeniedExceptionReason = (typeof AccessDeniedExceptionReason)[keyof typeof AccessDeniedExceptionReason]; +/** + * @public + * @enum + */ +export declare const InvalidRequestExceptionReason: { + readonly KMS_DISABLED_KEY: "KMS_DisabledException"; + readonly KMS_INVALID_KEY_USAGE: "KMS_InvalidKeyUsageException"; + readonly KMS_INVALID_STATE: "KMS_InvalidStateException"; + readonly KMS_KEY_NOT_FOUND: "KMS_NotFoundException"; +}; +/** + * @public + */ +export type InvalidRequestExceptionReason = (typeof InvalidRequestExceptionReason)[keyof typeof InvalidRequestExceptionReason]; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/errors.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/errors.d.ts new file mode 100644 index 000000000..48af95190 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/errors.d.ts @@ -0,0 +1,279 @@ +import type { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; +import type { AccessDeniedExceptionReason, InvalidRequestExceptionReason } from "./enums"; +import { SSOOIDCServiceException as __BaseException } from "./SSOOIDCServiceException"; +/** + *

You do not have sufficient access to perform this action.

+ * @public + */ +export declare class AccessDeniedException extends __BaseException { + readonly name: "AccessDeniedException"; + readonly $fault: "client"; + /** + *

Single error code. For this exception the value will be access_denied.

+ * @public + */ + error?: string | undefined; + /** + *

A string that uniquely identifies a reason for the error.

+ * @public + */ + reason?: AccessDeniedExceptionReason | undefined; + /** + *

Human-readable text providing additional information, used to assist the client developer + * in understanding the error that occurred.

+ * @public + */ + error_description?: string | undefined; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Indicates that a request to authorize a client with an access user session token is + * pending.

+ * @public + */ +export declare class AuthorizationPendingException extends __BaseException { + readonly name: "AuthorizationPendingException"; + readonly $fault: "client"; + /** + *

Single error code. For this exception the value will be + * authorization_pending.

+ * @public + */ + error?: string | undefined; + /** + *

Human-readable text providing additional information, used to assist the client developer + * in understanding the error that occurred.

+ * @public + */ + error_description?: string | undefined; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Indicates that the token issued by the service is expired and is no longer valid.

+ * @public + */ +export declare class ExpiredTokenException extends __BaseException { + readonly name: "ExpiredTokenException"; + readonly $fault: "client"; + /** + *

Single error code. For this exception the value will be expired_token.

+ * @public + */ + error?: string | undefined; + /** + *

Human-readable text providing additional information, used to assist the client developer + * in understanding the error that occurred.

+ * @public + */ + error_description?: string | undefined; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Indicates that an error from the service occurred while trying to process a + * request.

+ * @public + */ +export declare class InternalServerException extends __BaseException { + readonly name: "InternalServerException"; + readonly $fault: "server"; + /** + *

Single error code. For this exception the value will be server_error.

+ * @public + */ + error?: string | undefined; + /** + *

Human-readable text providing additional information, used to assist the client developer + * in understanding the error that occurred.

+ * @public + */ + error_description?: string | undefined; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Indicates that the clientId or clientSecret in the request is + * invalid. For example, this can occur when a client sends an incorrect clientId or + * an expired clientSecret.

+ * @public + */ +export declare class InvalidClientException extends __BaseException { + readonly name: "InvalidClientException"; + readonly $fault: "client"; + /** + *

Single error code. For this exception the value will be + * invalid_client.

+ * @public + */ + error?: string | undefined; + /** + *

Human-readable text providing additional information, used to assist the client developer + * in understanding the error that occurred.

+ * @public + */ + error_description?: string | undefined; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Indicates that a request contains an invalid grant. This can occur if a client makes a + * CreateToken request with an invalid grant type.

+ * @public + */ +export declare class InvalidGrantException extends __BaseException { + readonly name: "InvalidGrantException"; + readonly $fault: "client"; + /** + *

Single error code. For this exception the value will be invalid_grant.

+ * @public + */ + error?: string | undefined; + /** + *

Human-readable text providing additional information, used to assist the client developer + * in understanding the error that occurred.

+ * @public + */ + error_description?: string | undefined; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Indicates that something is wrong with the input to the request. For example, a required + * parameter might be missing or out of range.

+ * @public + */ +export declare class InvalidRequestException extends __BaseException { + readonly name: "InvalidRequestException"; + readonly $fault: "client"; + /** + *

Single error code. For this exception the value will be + * invalid_request.

+ * @public + */ + error?: string | undefined; + /** + *

A string that uniquely identifies a reason for the error.

+ * @public + */ + reason?: InvalidRequestExceptionReason | undefined; + /** + *

Human-readable text providing additional information, used to assist the client developer + * in understanding the error that occurred.

+ * @public + */ + error_description?: string | undefined; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Indicates that the scope provided in the request is invalid.

+ * @public + */ +export declare class InvalidScopeException extends __BaseException { + readonly name: "InvalidScopeException"; + readonly $fault: "client"; + /** + *

Single error code. For this exception the value will be invalid_scope.

+ * @public + */ + error?: string | undefined; + /** + *

Human-readable text providing additional information, used to assist the client developer + * in understanding the error that occurred.

+ * @public + */ + error_description?: string | undefined; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Indicates that the client is making the request too frequently and is more than the + * service can handle.

+ * @public + */ +export declare class SlowDownException extends __BaseException { + readonly name: "SlowDownException"; + readonly $fault: "client"; + /** + *

Single error code. For this exception the value will be slow_down.

+ * @public + */ + error?: string | undefined; + /** + *

Human-readable text providing additional information, used to assist the client developer + * in understanding the error that occurred.

+ * @public + */ + error_description?: string | undefined; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Indicates that the client is not currently authorized to make the request. This can happen + * when a clientId is not issued for a public client.

+ * @public + */ +export declare class UnauthorizedClientException extends __BaseException { + readonly name: "UnauthorizedClientException"; + readonly $fault: "client"; + /** + *

Single error code. For this exception the value will be + * unauthorized_client.

+ * @public + */ + error?: string | undefined; + /** + *

Human-readable text providing additional information, used to assist the client developer + * in understanding the error that occurred.

+ * @public + */ + error_description?: string | undefined; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Indicates that the grant type in the request is not supported by the service.

+ * @public + */ +export declare class UnsupportedGrantTypeException extends __BaseException { + readonly name: "UnsupportedGrantTypeException"; + readonly $fault: "client"; + /** + *

Single error code. For this exception the value will be + * unsupported_grant_type.

+ * @public + */ + error?: string | undefined; + /** + *

Human-readable text providing additional information, used to assist the client developer + * in understanding the error that occurred.

+ * @public + */ + error_description?: string | undefined; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/models_0.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/models_0.d.ts new file mode 100644 index 000000000..24eec1b54 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/models_0.d.ts @@ -0,0 +1,109 @@ +/** + * @public + */ +export interface CreateTokenRequest { + /** + *

The unique identifier string for the client or application. This value comes from the + * result of the RegisterClient API.

+ * @public + */ + clientId: string | undefined; + /** + *

A secret string generated for the client. This value should come from the persisted result + * of the RegisterClient API.

+ * @public + */ + clientSecret: string | undefined; + /** + *

Supports the following OAuth grant types: Authorization Code, Device Code, and Refresh + * Token. Specify one of the following values, depending on the grant type that you want:

+ *

* Authorization Code - authorization_code + *

+ *

* Device Code - urn:ietf:params:oauth:grant-type:device_code + *

+ *

* Refresh Token - refresh_token + *

+ * @public + */ + grantType: string | undefined; + /** + *

Used only when calling this API for the Device Code grant type. This short-lived code is + * used to identify this authorization request. This comes from the result of the StartDeviceAuthorization API.

+ * @public + */ + deviceCode?: string | undefined; + /** + *

Used only when calling this API for the Authorization Code grant type. The short-lived + * code is used to identify this authorization request.

+ * @public + */ + code?: string | undefined; + /** + *

Used only when calling this API for the Refresh Token grant type. This token is used to + * refresh short-lived tokens, such as the access token, that might expire.

+ *

For more information about the features and limitations of the current IAM Identity Center OIDC + * implementation, see Considerations for Using this Guide in the IAM Identity Center + * OIDC API Reference.

+ * @public + */ + refreshToken?: string | undefined; + /** + *

The list of scopes for which authorization is requested. This parameter has no effect; the access token will always include all scopes configured during client registration.

+ * @public + */ + scope?: string[] | undefined; + /** + *

Used only when calling this API for the Authorization Code grant type. This value + * specifies the location of the client or application that has registered to receive the + * authorization code.

+ * @public + */ + redirectUri?: string | undefined; + /** + *

Used only when calling this API for the Authorization Code grant type. This value is + * generated by the client and presented to validate the original code challenge value the client + * passed at authorization time.

+ * @public + */ + codeVerifier?: string | undefined; +} +/** + * @public + */ +export interface CreateTokenResponse { + /** + *

A bearer token to access Amazon Web Services accounts and applications assigned to a user.

+ * @public + */ + accessToken?: string | undefined; + /** + *

Used to notify the client that the returned token is an access token. The supported token + * type is Bearer.

+ * @public + */ + tokenType?: string | undefined; + /** + *

Indicates the time in seconds when an access token will expire.

+ * @public + */ + expiresIn?: number | undefined; + /** + *

A token that, if present, can be used to refresh a previously issued access token that + * might have expired.

+ *

For more information about the features and limitations of the current IAM Identity Center OIDC + * implementation, see Considerations for Using this Guide in the IAM Identity Center + * OIDC API Reference.

+ * @public + */ + refreshToken?: string | undefined; + /** + *

The idToken is not implemented or supported. For more information about the + * features and limitations of the current IAM Identity Center OIDC implementation, see + * Considerations for Using this Guide in the IAM Identity Center + * OIDC API Reference.

+ *

A JSON Web Token (JWT) that identifies who is associated with the issued access token. + *

+ * @public + */ + idToken?: string | undefined; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.browser.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.browser.d.ts new file mode 100644 index 000000000..1b48267dd --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.browser.d.ts @@ -0,0 +1,62 @@ +import { FetchHttpHandler as RequestHandler } from "@smithy/fetch-http-handler"; +import type { SSOOIDCClientConfig } from "./SSOOIDCClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: SSOOIDCClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: import("@smithy/protocol-http").HttpHandler | RequestHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + cacheMiddleware?: boolean | undefined; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/core").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: string | undefined | import("@smithy/types").Provider; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + })[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SSOOIDCHttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.d.ts new file mode 100644 index 000000000..4077389d8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.d.ts @@ -0,0 +1,62 @@ +import { NodeHttpHandler as RequestHandler } from "@smithy/node-http-handler"; +import type { SSOOIDCClientConfig } from "./SSOOIDCClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: SSOOIDCClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider; + authSchemePreference: string[] | import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-node").PreviouslyResolved) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: RequestHandler | import("@smithy/protocol-http").HttpHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: boolean | import("@smithy/types").Provider; + useFipsEndpoint: boolean | import("@smithy/types").Provider; + userAgentAppId: string | import("@smithy/types").Provider; + cacheMiddleware?: boolean | undefined; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/core").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + })[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SSOOIDCHttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.native.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.native.d.ts new file mode 100644 index 000000000..3b7055195 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.native.d.ts @@ -0,0 +1,61 @@ +import type { SSOOIDCClientConfig } from "./SSOOIDCClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: SSOOIDCClientConfig) => { + runtime: string; + sha256: import("@smithy/types").HashConstructor; + requestHandler: import("@smithy/types").NodeHttpHandlerOptions | import("@smithy/types").FetchHttpHandlerOptions | Record | import("@smithy/protocol-http").HttpHandler | import("@smithy/fetch-http-handler").FetchHttpHandler; + cacheMiddleware?: boolean; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/core").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + streamCollector: import("@smithy/types").StreamCollector; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + region: string | import("@smithy/types").Provider; + profile?: string; + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + retryMode: string | import("@smithy/types").Provider; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + defaultsMode: import("@smithy/smithy-client").DefaultsMode | import("@smithy/types").Provider; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: string | undefined | import("@smithy/types").Provider; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + })[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SSOOIDCHttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.shared.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.shared.d.ts new file mode 100644 index 000000000..ba9658023 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.shared.d.ts @@ -0,0 +1,38 @@ +import { AwsSdkSigV4Signer } from "@aws-sdk/core"; +import { AwsRestJsonProtocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; +import type { IdentityProviderConfig } from "@smithy/types"; +import type { SSOOIDCClientConfig } from "./SSOOIDCClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: SSOOIDCClientConfig) => { + apiVersion: string; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + disableHostPrefix: boolean; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SSOOIDCHttpAuthSchemeProvider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: NoAuthSigner; + })[]; + logger: import("@smithy/types").Logger; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof AwsRestJsonProtocol; + protocolSettings: { + [setting: string]: unknown; + defaultNamespace?: string; + }; + serviceId: string; + urlParser: import("@smithy/types").UrlParser; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeExtensions.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeExtensions.d.ts new file mode 100644 index 000000000..442eab19e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeExtensions.d.ts @@ -0,0 +1,17 @@ +import type { SSOOIDCExtensionConfiguration } from "./extensionConfiguration"; +/** + * @public + */ +export interface RuntimeExtension { + configure(extensionConfiguration: SSOOIDCExtensionConfiguration): void; +} +/** + * @public + */ +export interface RuntimeExtensionsConfig { + extensions: RuntimeExtension[]; +} +/** + * @internal + */ +export declare const resolveRuntimeExtensions: (runtimeConfig: any, extensions: RuntimeExtension[]) => any; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/schemas/schemas_0.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/schemas/schemas_0.d.ts new file mode 100644 index 000000000..472e68775 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/schemas/schemas_0.d.ts @@ -0,0 +1,23 @@ +import { TypeRegistry } from "@smithy/core/schema"; +import type { StaticErrorSchema, StaticOperationSchema, StaticStructureSchema } from "@smithy/types"; +export declare var SSOOIDCServiceException$: StaticErrorSchema; +export declare var AccessDeniedException$: StaticErrorSchema; +export declare var AuthorizationPendingException$: StaticErrorSchema; +export declare var ExpiredTokenException$: StaticErrorSchema; +export declare var InternalServerException$: StaticErrorSchema; +export declare var InvalidClientException$: StaticErrorSchema; +export declare var InvalidGrantException$: StaticErrorSchema; +export declare var InvalidRequestException$: StaticErrorSchema; +export declare var InvalidScopeException$: StaticErrorSchema; +export declare var SlowDownException$: StaticErrorSchema; +export declare var UnauthorizedClientException$: StaticErrorSchema; +export declare var UnsupportedGrantTypeException$: StaticErrorSchema; +/** + * TypeRegistry instances containing modeled errors. + * @internal + * + */ +export declare const errorTypeRegistries: TypeRegistry[]; +export declare var CreateTokenRequest$: StaticStructureSchema; +export declare var CreateTokenResponse$: StaticStructureSchema; +export declare var CreateToken$: StaticOperationSchema; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/SSO.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/SSO.d.ts new file mode 100644 index 000000000..f1d3c40e9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/SSO.d.ts @@ -0,0 +1,32 @@ +import type { HttpHandlerOptions as __HttpHandlerOptions } from "@smithy/types"; +import type { GetRoleCredentialsCommandInput, GetRoleCredentialsCommandOutput } from "./commands/GetRoleCredentialsCommand"; +import { SSOClient } from "./SSOClient"; +export interface SSO { + /** + * @see {@link GetRoleCredentialsCommand} + */ + getRoleCredentials(args: GetRoleCredentialsCommandInput, options?: __HttpHandlerOptions): Promise; + getRoleCredentials(args: GetRoleCredentialsCommandInput, cb: (err: any, data?: GetRoleCredentialsCommandOutput) => void): void; + getRoleCredentials(args: GetRoleCredentialsCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetRoleCredentialsCommandOutput) => void): void; +} +/** + *

AWS IAM Identity Center (successor to AWS Single Sign-On) Portal is a web service that makes it easy for you to assign user access to + * IAM Identity Center resources such as the AWS access portal. Users can get AWS account applications and roles + * assigned to them and get federated into the application.

+ * + *

Although AWS Single Sign-On was renamed, the sso and + * identitystore API namespaces will continue to retain their original name for + * backward compatibility purposes. For more information, see IAM Identity Center rename.

+ *
+ *

This reference guide describes the IAM Identity Center Portal operations that you can call + * programatically and includes detailed information on data types and errors.

+ * + *

AWS provides SDKs that consist of libraries and sample code for various programming + * languages and platforms, such as Java, Ruby, .Net, iOS, or Android. The SDKs provide a + * convenient way to create programmatic access to IAM Identity Center and other AWS services. For more + * information about the AWS SDKs, including how to download and install them, see Tools for Amazon Web Services.

+ *
+ * @public + */ +export declare class SSO extends SSOClient implements SSO { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/SSOClient.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/SSOClient.d.ts new file mode 100644 index 000000000..cb7b77936 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/SSOClient.d.ts @@ -0,0 +1,198 @@ +import { type HostHeaderInputConfig, type HostHeaderResolvedConfig } from "@aws-sdk/middleware-host-header"; +import { type UserAgentInputConfig, type UserAgentResolvedConfig } from "@aws-sdk/middleware-user-agent"; +import { type RegionInputConfig, type RegionResolvedConfig } from "@smithy/config-resolver"; +import { type EndpointInputConfig, type EndpointResolvedConfig } from "@smithy/middleware-endpoint"; +import { type RetryInputConfig, type RetryResolvedConfig } from "@smithy/middleware-retry"; +import type { HttpHandlerUserInput as __HttpHandlerUserInput } from "@smithy/protocol-http"; +import { type DefaultsMode as __DefaultsMode, type SmithyConfiguration as __SmithyConfiguration, type SmithyResolvedConfiguration as __SmithyResolvedConfiguration, Client as __Client } from "@smithy/smithy-client"; +import type { Provider, UserAgent as __UserAgent } from "@smithy/types"; +import { type BodyLengthCalculator as __BodyLengthCalculator, type CheckOptionalClientConfig as __CheckOptionalClientConfig, type ChecksumConstructor as __ChecksumConstructor, type Decoder as __Decoder, type Encoder as __Encoder, type HashConstructor as __HashConstructor, type HttpHandlerOptions as __HttpHandlerOptions, type Logger as __Logger, type Provider as __Provider, type StreamCollector as __StreamCollector, type UrlParser as __UrlParser } from "@smithy/types"; +import { type HttpAuthSchemeInputConfig, type HttpAuthSchemeResolvedConfig } from "./auth/httpAuthSchemeProvider"; +import type { GetRoleCredentialsCommandInput, GetRoleCredentialsCommandOutput } from "./commands/GetRoleCredentialsCommand"; +import type { ClientInputEndpointParameters, ClientResolvedEndpointParameters, EndpointParameters } from "./endpoint/EndpointParameters"; +import { type RuntimeExtension, type RuntimeExtensionsConfig } from "./runtimeExtensions"; +export { __Client }; +/** + * @public + */ +export type ServiceInputTypes = GetRoleCredentialsCommandInput; +/** + * @public + */ +export type ServiceOutputTypes = GetRoleCredentialsCommandOutput; +/** + * @public + */ +export interface ClientDefaults extends Partial<__SmithyConfiguration<__HttpHandlerOptions>> { + /** + * The HTTP handler to use or its constructor options. Fetch in browser and Https in Nodejs. + */ + requestHandler?: __HttpHandlerUserInput; + /** + * A constructor for a class implementing the {@link @smithy/types#ChecksumConstructor} interface + * that computes the SHA-256 HMAC or checksum of a string or binary buffer. + * @internal + */ + sha256?: __ChecksumConstructor | __HashConstructor; + /** + * The function that will be used to convert strings into HTTP endpoints. + * @internal + */ + urlParser?: __UrlParser; + /** + * A function that can calculate the length of a request body. + * @internal + */ + bodyLengthChecker?: __BodyLengthCalculator; + /** + * A function that converts a stream into an array of bytes. + * @internal + */ + streamCollector?: __StreamCollector; + /** + * The function that will be used to convert a base64-encoded string to a byte array. + * @internal + */ + base64Decoder?: __Decoder; + /** + * The function that will be used to convert binary data to a base64-encoded string. + * @internal + */ + base64Encoder?: __Encoder; + /** + * The function that will be used to convert a UTF8-encoded string to a byte array. + * @internal + */ + utf8Decoder?: __Decoder; + /** + * The function that will be used to convert binary data to a UTF-8 encoded string. + * @internal + */ + utf8Encoder?: __Encoder; + /** + * The runtime environment. + * @internal + */ + runtime?: string; + /** + * Disable dynamically changing the endpoint of the client based on the hostPrefix + * trait of an operation. + */ + disableHostPrefix?: boolean; + /** + * Unique service identifier. + * @internal + */ + serviceId?: string; + /** + * Enables IPv6/IPv4 dualstack endpoint. + */ + useDualstackEndpoint?: boolean | __Provider; + /** + * Enables FIPS compatible endpoints. + */ + useFipsEndpoint?: boolean | __Provider; + /** + * The AWS region to which this client will send requests + */ + region?: string | __Provider; + /** + * Setting a client profile is similar to setting a value for the + * AWS_PROFILE environment variable. Setting a profile on a client + * in code only affects the single client instance, unlike AWS_PROFILE. + * + * When set, and only for environments where an AWS configuration + * file exists, fields configurable by this file will be retrieved + * from the specified profile within that file. + * Conflicting code configuration and environment variables will + * still have higher priority. + * + * For client credential resolution that involves checking the AWS + * configuration file, the client's profile (this value) will be + * used unless a different profile is set in the credential + * provider options. + * + */ + profile?: string; + /** + * The provider populating default tracking information to be sent with `user-agent`, `x-amz-user-agent` header + * @internal + */ + defaultUserAgentProvider?: Provider<__UserAgent>; + /** + * Value for how many times a request will be made at most in case of retry. + */ + maxAttempts?: number | __Provider; + /** + * Specifies which retry algorithm to use. + * @see https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-util-retry/Enum/RETRY_MODES/ + * + */ + retryMode?: string | __Provider; + /** + * Optional logger for logging debug/info/warn/error. + */ + logger?: __Logger; + /** + * Optional extensions + */ + extensions?: RuntimeExtension[]; + /** + * The {@link @smithy/smithy-client#DefaultsMode} that will be used to determine how certain default configuration options are resolved in the SDK. + */ + defaultsMode?: __DefaultsMode | __Provider<__DefaultsMode>; +} +/** + * @public + */ +export type SSOClientConfigType = Partial<__SmithyConfiguration<__HttpHandlerOptions>> & ClientDefaults & UserAgentInputConfig & RetryInputConfig & RegionInputConfig & HostHeaderInputConfig & EndpointInputConfig & HttpAuthSchemeInputConfig & ClientInputEndpointParameters; +/** + * @public + * + * The configuration interface of SSOClient class constructor that set the region, credentials and other options. + */ +export interface SSOClientConfig extends SSOClientConfigType { +} +/** + * @public + */ +export type SSOClientResolvedConfigType = __SmithyResolvedConfiguration<__HttpHandlerOptions> & Required & RuntimeExtensionsConfig & UserAgentResolvedConfig & RetryResolvedConfig & RegionResolvedConfig & HostHeaderResolvedConfig & EndpointResolvedConfig & HttpAuthSchemeResolvedConfig & ClientResolvedEndpointParameters; +/** + * @public + * + * The resolved configuration interface of SSOClient class. This is resolved and normalized from the {@link SSOClientConfig | constructor configuration interface}. + */ +export interface SSOClientResolvedConfig extends SSOClientResolvedConfigType { +} +/** + *

AWS IAM Identity Center (successor to AWS Single Sign-On) Portal is a web service that makes it easy for you to assign user access to + * IAM Identity Center resources such as the AWS access portal. Users can get AWS account applications and roles + * assigned to them and get federated into the application.

+ * + *

Although AWS Single Sign-On was renamed, the sso and + * identitystore API namespaces will continue to retain their original name for + * backward compatibility purposes. For more information, see IAM Identity Center rename.

+ *
+ *

This reference guide describes the IAM Identity Center Portal operations that you can call + * programatically and includes detailed information on data types and errors.

+ * + *

AWS provides SDKs that consist of libraries and sample code for various programming + * languages and platforms, such as Java, Ruby, .Net, iOS, or Android. The SDKs provide a + * convenient way to create programmatic access to IAM Identity Center and other AWS services. For more + * information about the AWS SDKs, including how to download and install them, see Tools for Amazon Web Services.

+ *
+ * @public + */ +export declare class SSOClient extends __Client<__HttpHandlerOptions, ServiceInputTypes, ServiceOutputTypes, SSOClientResolvedConfig> { + /** + * The resolved configuration of SSOClient class. This is resolved and normalized from the {@link SSOClientConfig | constructor configuration interface}. + */ + readonly config: SSOClientResolvedConfig; + constructor(...[configuration]: __CheckOptionalClientConfig); + /** + * Destroy underlying resources, like sockets. It's usually not necessary to do this. + * However in Node.js, it's best to explicitly shut down the client's agent when it is no longer needed. + * Otherwise, sockets might stay open for quite a long time before the server terminates them. + */ + destroy(): void; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/auth/httpAuthExtensionConfiguration.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/auth/httpAuthExtensionConfiguration.d.ts new file mode 100644 index 000000000..43370d4a1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/auth/httpAuthExtensionConfiguration.d.ts @@ -0,0 +1,30 @@ +import type { AwsCredentialIdentity, AwsCredentialIdentityProvider } from "@smithy/types"; +import { type HttpAuthScheme } from "@smithy/types"; +import type { SSOHttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; +/** + * @internal + */ +export interface HttpAuthExtensionConfiguration { + setHttpAuthScheme(httpAuthScheme: HttpAuthScheme): void; + httpAuthSchemes(): HttpAuthScheme[]; + setHttpAuthSchemeProvider(httpAuthSchemeProvider: SSOHttpAuthSchemeProvider): void; + httpAuthSchemeProvider(): SSOHttpAuthSchemeProvider; + setCredentials(credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider): void; + credentials(): AwsCredentialIdentity | AwsCredentialIdentityProvider | undefined; +} +/** + * @internal + */ +export type HttpAuthRuntimeConfig = Partial<{ + httpAuthSchemes: HttpAuthScheme[]; + httpAuthSchemeProvider: SSOHttpAuthSchemeProvider; + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider; +}>; +/** + * @internal + */ +export declare const getHttpAuthExtensionConfiguration: (runtimeConfig: HttpAuthRuntimeConfig) => HttpAuthExtensionConfiguration; +/** + * @internal + */ +export declare const resolveHttpAuthRuntimeConfig: (config: HttpAuthExtensionConfiguration) => HttpAuthRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/auth/httpAuthSchemeProvider.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/auth/httpAuthSchemeProvider.d.ts new file mode 100644 index 000000000..af89d1053 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/auth/httpAuthSchemeProvider.d.ts @@ -0,0 +1,75 @@ +import type { AwsSdkSigV4AuthInputConfig, AwsSdkSigV4AuthResolvedConfig, AwsSdkSigV4PreviouslyResolved } from "@aws-sdk/core"; +import type { HandlerExecutionContext, HttpAuthScheme, HttpAuthSchemeParameters, HttpAuthSchemeParametersProvider, HttpAuthSchemeProvider, Provider } from "@smithy/types"; +import { type SSOClientResolvedConfig } from "../SSOClient"; +/** + * @internal + */ +export interface SSOHttpAuthSchemeParameters extends HttpAuthSchemeParameters { + region?: string; +} +/** + * @internal + */ +export interface SSOHttpAuthSchemeParametersProvider extends HttpAuthSchemeParametersProvider { +} +/** + * @internal + */ +export declare const defaultSSOHttpAuthSchemeParametersProvider: (config: SSOClientResolvedConfig, context: HandlerExecutionContext, input: object) => Promise; +/** + * @internal + */ +export interface SSOHttpAuthSchemeProvider extends HttpAuthSchemeProvider { +} +/** + * @internal + */ +export declare const defaultSSOHttpAuthSchemeProvider: SSOHttpAuthSchemeProvider; +/** + * @public + */ +export interface HttpAuthSchemeInputConfig extends AwsSdkSigV4AuthInputConfig { + /** + * A comma-separated list of case-sensitive auth scheme names. + * An auth scheme name is a fully qualified auth scheme ID with the namespace prefix trimmed. + * For example, the auth scheme with ID aws.auth#sigv4 is named sigv4. + * @public + */ + authSchemePreference?: string[] | Provider; + /** + * Configuration of HttpAuthSchemes for a client which provides default identity providers and signers per auth scheme. + * @internal + */ + httpAuthSchemes?: HttpAuthScheme[]; + /** + * Configuration of an HttpAuthSchemeProvider for a client which resolves which HttpAuthScheme to use. + * @internal + */ + httpAuthSchemeProvider?: SSOHttpAuthSchemeProvider; +} +/** + * @internal + */ +export interface HttpAuthSchemeResolvedConfig extends AwsSdkSigV4AuthResolvedConfig { + /** + * A comma-separated list of case-sensitive auth scheme names. + * An auth scheme name is a fully qualified auth scheme ID with the namespace prefix trimmed. + * For example, the auth scheme with ID aws.auth#sigv4 is named sigv4. + * @public + */ + readonly authSchemePreference: Provider; + /** + * Configuration of HttpAuthSchemes for a client which provides default identity providers and signers per auth scheme. + * @internal + */ + readonly httpAuthSchemes: HttpAuthScheme[]; + /** + * Configuration of an HttpAuthSchemeProvider for a client which resolves which HttpAuthScheme to use. + * @internal + */ + readonly httpAuthSchemeProvider: SSOHttpAuthSchemeProvider; +} +/** + * @internal + */ +export declare const resolveHttpAuthSchemeConfig: (config: T & HttpAuthSchemeInputConfig & AwsSdkSigV4PreviouslyResolved) => T & HttpAuthSchemeResolvedConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/commands/GetRoleCredentialsCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/commands/GetRoleCredentialsCommand.d.ts new file mode 100644 index 000000000..27cf2e1b3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/commands/GetRoleCredentialsCommand.d.ts @@ -0,0 +1,97 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { GetRoleCredentialsRequest, GetRoleCredentialsResponse } from "../models/models_0"; +import type { SSOClientResolvedConfig } from "../SSOClient"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetRoleCredentialsCommand}. + */ +export interface GetRoleCredentialsCommandInput extends GetRoleCredentialsRequest { +} +/** + * @public + * + * The output of {@link GetRoleCredentialsCommand}. + */ +export interface GetRoleCredentialsCommandOutput extends GetRoleCredentialsResponse, __MetadataBearer { +} +declare const GetRoleCredentialsCommand_base: { + new (input: GetRoleCredentialsCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetRoleCredentialsCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Returns the STS short-term credentials for a given role name that is assigned to the + * user.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { SSOClient, GetRoleCredentialsCommand } from "@aws-sdk/client-sso"; // ES Modules import + * // const { SSOClient, GetRoleCredentialsCommand } = require("@aws-sdk/client-sso"); // CommonJS import + * // import type { SSOClientConfig } from "@aws-sdk/client-sso"; + * const config = {}; // type is SSOClientConfig + * const client = new SSOClient(config); + * const input = { // GetRoleCredentialsRequest + * roleName: "STRING_VALUE", // required + * accountId: "STRING_VALUE", // required + * accessToken: "STRING_VALUE", // required + * }; + * const command = new GetRoleCredentialsCommand(input); + * const response = await client.send(command); + * // { // GetRoleCredentialsResponse + * // roleCredentials: { // RoleCredentials + * // accessKeyId: "STRING_VALUE", + * // secretAccessKey: "STRING_VALUE", + * // sessionToken: "STRING_VALUE", + * // expiration: Number("long"), + * // }, + * // }; + * + * ``` + * + * @param GetRoleCredentialsCommandInput - {@link GetRoleCredentialsCommandInput} + * @returns {@link GetRoleCredentialsCommandOutput} + * @see {@link GetRoleCredentialsCommandInput} for command's `input` shape. + * @see {@link GetRoleCredentialsCommandOutput} for command's `response` shape. + * @see {@link SSOClientResolvedConfig | config} for SSOClient's `config` shape. + * + * @throws {@link InvalidRequestException} (client fault) + *

Indicates that a problem occurred with the input to the request. For example, a required + * parameter might be missing or out of range.

+ * + * @throws {@link ResourceNotFoundException} (client fault) + *

The specified resource doesn't exist.

+ * + * @throws {@link TooManyRequestsException} (client fault) + *

Indicates that the request is being made too frequently and is more than what the server + * can handle.

+ * + * @throws {@link UnauthorizedException} (client fault) + *

Indicates that the request is not authorized. This can happen due to an invalid access + * token in the request.

+ * + * @throws {@link SSOServiceException} + *

Base exception class for all service exceptions from SSO service.

+ * + * + * @public + */ +export declare class GetRoleCredentialsCommand extends GetRoleCredentialsCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetRoleCredentialsRequest; + output: GetRoleCredentialsResponse; + }; + sdk: { + input: GetRoleCredentialsCommandInput; + output: GetRoleCredentialsCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/commands/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/commands/index.d.ts new file mode 100644 index 000000000..69ba055c7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/commands/index.d.ts @@ -0,0 +1 @@ +export * from "./GetRoleCredentialsCommand"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/endpoint/EndpointParameters.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/endpoint/EndpointParameters.d.ts new file mode 100644 index 000000000..240d5235a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/endpoint/EndpointParameters.d.ts @@ -0,0 +1,50 @@ +import type { Endpoint, EndpointParameters as __EndpointParameters, EndpointV2, Provider } from "@smithy/types"; +/** + * @public + */ +export interface ClientInputEndpointParameters { + region?: string | undefined | Provider; + useDualstackEndpoint?: boolean | undefined | Provider; + useFipsEndpoint?: boolean | undefined | Provider; + endpoint?: string | Provider | Endpoint | Provider | EndpointV2 | Provider; +} +/** + * @public + */ +export type ClientResolvedEndpointParameters = Omit & { + defaultSigningName: string; +}; +/** + * @internal + */ +export declare const resolveClientEndpointParameters: (options: T & ClientInputEndpointParameters) => T & ClientResolvedEndpointParameters; +/** + * @internal + */ +export declare const commonParams: { + readonly UseFIPS: { + readonly type: "builtInParams"; + readonly name: "useFipsEndpoint"; + }; + readonly Endpoint: { + readonly type: "builtInParams"; + readonly name: "endpoint"; + }; + readonly Region: { + readonly type: "builtInParams"; + readonly name: "region"; + }; + readonly UseDualStack: { + readonly type: "builtInParams"; + readonly name: "useDualstackEndpoint"; + }; +}; +/** + * @internal + */ +export interface EndpointParameters extends __EndpointParameters { + Region?: string | undefined; + UseDualStack?: boolean | undefined; + UseFIPS?: boolean | undefined; + Endpoint?: string | undefined; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/endpoint/endpointResolver.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/endpoint/endpointResolver.d.ts new file mode 100644 index 000000000..c1de67d3e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/endpoint/endpointResolver.d.ts @@ -0,0 +1,8 @@ +import type { EndpointV2, Logger } from "@smithy/types"; +import type { EndpointParameters } from "./EndpointParameters"; +/** + * @internal + */ +export declare const defaultEndpointResolver: (endpointParams: EndpointParameters, context?: { + logger?: Logger; +}) => EndpointV2; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/endpoint/ruleset.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/endpoint/ruleset.d.ts new file mode 100644 index 000000000..4dda20a8e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/endpoint/ruleset.d.ts @@ -0,0 +1,2 @@ +import type { RuleSetObject } from "@smithy/types"; +export declare const ruleSet: RuleSetObject; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/extensionConfiguration.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/extensionConfiguration.d.ts new file mode 100644 index 000000000..1d3c084c9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/extensionConfiguration.d.ts @@ -0,0 +1,9 @@ +import type { AwsRegionExtensionConfiguration } from "@aws-sdk/types"; +import type { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; +import type { DefaultExtensionConfiguration } from "@smithy/types"; +import type { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; +/** + * @internal + */ +export interface SSOExtensionConfiguration extends HttpHandlerExtensionConfiguration, DefaultExtensionConfiguration, AwsRegionExtensionConfiguration, HttpAuthExtensionConfiguration { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/index.d.ts new file mode 100644 index 000000000..583d35953 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/index.d.ts @@ -0,0 +1,30 @@ +/** + *

AWS IAM Identity Center (successor to AWS Single Sign-On) Portal is a web service that makes it easy for you to assign user access to + * IAM Identity Center resources such as the AWS access portal. Users can get AWS account applications and roles + * assigned to them and get federated into the application.

+ * + *

Although AWS Single Sign-On was renamed, the sso and + * identitystore API namespaces will continue to retain their original name for + * backward compatibility purposes. For more information, see IAM Identity Center rename.

+ *
+ *

This reference guide describes the IAM Identity Center Portal operations that you can call + * programatically and includes detailed information on data types and errors.

+ * + *

AWS provides SDKs that consist of libraries and sample code for various programming + * languages and platforms, such as Java, Ruby, .Net, iOS, or Android. The SDKs provide a + * convenient way to create programmatic access to IAM Identity Center and other AWS services. For more + * information about the AWS SDKs, including how to download and install them, see Tools for Amazon Web Services.

+ *
+ * + * @packageDocumentation + */ +export * from "./SSOClient"; +export * from "./SSO"; +export { ClientInputEndpointParameters } from "./endpoint/EndpointParameters"; +export type { RuntimeExtension } from "./runtimeExtensions"; +export type { SSOExtensionConfiguration } from "./extensionConfiguration"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./models/errors"; +export * from "./models/models_0"; +export { SSOServiceException } from "./models/SSOServiceException"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/models/SSOServiceException.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/models/SSOServiceException.d.ts new file mode 100644 index 000000000..6cd088670 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/models/SSOServiceException.d.ts @@ -0,0 +1,14 @@ +import { type ServiceExceptionOptions as __ServiceExceptionOptions, ServiceException as __ServiceException } from "@smithy/smithy-client"; +export type { __ServiceExceptionOptions }; +export { __ServiceException }; +/** + * @public + * + * Base exception class for all service exceptions from SSO service. + */ +export declare class SSOServiceException extends __ServiceException { + /** + * @internal + */ + constructor(options: __ServiceExceptionOptions); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/models/errors.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/models/errors.d.ts new file mode 100644 index 000000000..488bea409 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/models/errors.d.ts @@ -0,0 +1,53 @@ +import type { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; +import { SSOServiceException as __BaseException } from "./SSOServiceException"; +/** + *

Indicates that a problem occurred with the input to the request. For example, a required + * parameter might be missing or out of range.

+ * @public + */ +export declare class InvalidRequestException extends __BaseException { + readonly name: "InvalidRequestException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

The specified resource doesn't exist.

+ * @public + */ +export declare class ResourceNotFoundException extends __BaseException { + readonly name: "ResourceNotFoundException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Indicates that the request is being made too frequently and is more than what the server + * can handle.

+ * @public + */ +export declare class TooManyRequestsException extends __BaseException { + readonly name: "TooManyRequestsException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Indicates that the request is not authorized. This can happen due to an invalid access + * token in the request.

+ * @public + */ +export declare class UnauthorizedException extends __BaseException { + readonly name: "UnauthorizedException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/models/models_0.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/models/models_0.d.ts new file mode 100644 index 000000000..0eb108e84 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/models/models_0.d.ts @@ -0,0 +1,61 @@ +/** + * @public + */ +export interface GetRoleCredentialsRequest { + /** + *

The friendly name of the role that is assigned to the user.

+ * @public + */ + roleName: string | undefined; + /** + *

The identifier for the AWS account that is assigned to the user.

+ * @public + */ + accountId: string | undefined; + /** + *

The token issued by the CreateToken API call. For more information, see + * CreateToken in the IAM Identity Center OIDC API Reference Guide.

+ * @public + */ + accessToken: string | undefined; +} +/** + *

Provides information about the role credentials that are assigned to the user.

+ * @public + */ +export interface RoleCredentials { + /** + *

The identifier used for the temporary security credentials. For more information, see + * Using Temporary Security Credentials to Request Access to AWS Resources in the + * AWS IAM User Guide.

+ * @public + */ + accessKeyId?: string | undefined; + /** + *

The key that is used to sign the request. For more information, see Using Temporary Security Credentials to Request Access to AWS Resources in the + * AWS IAM User Guide.

+ * @public + */ + secretAccessKey?: string | undefined; + /** + *

The token used for temporary credentials. For more information, see Using Temporary Security Credentials to Request Access to AWS Resources in the + * AWS IAM User Guide.

+ * @public + */ + sessionToken?: string | undefined; + /** + *

The date on which temporary security credentials expire.

+ * @public + */ + expiration?: number | undefined; +} +/** + * @public + */ +export interface GetRoleCredentialsResponse { + /** + *

The credentials for the role that is assigned to the user.

+ * @public + */ + roleCredentials?: RoleCredentials | undefined; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.browser.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.browser.d.ts new file mode 100644 index 000000000..eb73682f5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.browser.d.ts @@ -0,0 +1,62 @@ +import { FetchHttpHandler as RequestHandler } from "@smithy/fetch-http-handler"; +import type { SSOClientConfig } from "./SSOClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: SSOClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: import("@smithy/protocol-http").HttpHandler | RequestHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + cacheMiddleware?: boolean | undefined; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/core").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: string | undefined | import("@smithy/types").Provider; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + })[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SSOHttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.d.ts new file mode 100644 index 000000000..f48e0858c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.d.ts @@ -0,0 +1,62 @@ +import { NodeHttpHandler as RequestHandler } from "@smithy/node-http-handler"; +import type { SSOClientConfig } from "./SSOClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: SSOClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider; + authSchemePreference: string[] | import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-node").PreviouslyResolved) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: RequestHandler | import("@smithy/protocol-http").HttpHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: boolean | import("@smithy/types").Provider; + useFipsEndpoint: boolean | import("@smithy/types").Provider; + userAgentAppId: string | import("@smithy/types").Provider; + cacheMiddleware?: boolean | undefined; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/core").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + })[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SSOHttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.native.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.native.d.ts new file mode 100644 index 000000000..9b6e21d6c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.native.d.ts @@ -0,0 +1,61 @@ +import type { SSOClientConfig } from "./SSOClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: SSOClientConfig) => { + runtime: string; + sha256: import("@smithy/types").HashConstructor; + requestHandler: import("@smithy/types").NodeHttpHandlerOptions | import("@smithy/types").FetchHttpHandlerOptions | Record | import("@smithy/protocol-http").HttpHandler | import("@smithy/fetch-http-handler").FetchHttpHandler; + cacheMiddleware?: boolean; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/core").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + streamCollector: import("@smithy/types").StreamCollector; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + region: string | import("@smithy/types").Provider; + profile?: string; + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + retryMode: string | import("@smithy/types").Provider; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + defaultsMode: import("@smithy/smithy-client").DefaultsMode | import("@smithy/types").Provider; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: string | undefined | import("@smithy/types").Provider; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + })[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SSOHttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.shared.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.shared.d.ts new file mode 100644 index 000000000..90ee0889e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.shared.d.ts @@ -0,0 +1,38 @@ +import { AwsSdkSigV4Signer } from "@aws-sdk/core"; +import { AwsRestJsonProtocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; +import type { IdentityProviderConfig } from "@smithy/types"; +import type { SSOClientConfig } from "./SSOClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: SSOClientConfig) => { + apiVersion: string; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + disableHostPrefix: boolean; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SSOHttpAuthSchemeProvider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: NoAuthSigner; + })[]; + logger: import("@smithy/types").Logger; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof AwsRestJsonProtocol; + protocolSettings: { + [setting: string]: unknown; + defaultNamespace?: string; + }; + serviceId: string; + urlParser: import("@smithy/types").UrlParser; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeExtensions.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeExtensions.d.ts new file mode 100644 index 000000000..61b5376f3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeExtensions.d.ts @@ -0,0 +1,17 @@ +import type { SSOExtensionConfiguration } from "./extensionConfiguration"; +/** + * @public + */ +export interface RuntimeExtension { + configure(extensionConfiguration: SSOExtensionConfiguration): void; +} +/** + * @public + */ +export interface RuntimeExtensionsConfig { + extensions: RuntimeExtension[]; +} +/** + * @internal + */ +export declare const resolveRuntimeExtensions: (runtimeConfig: any, extensions: RuntimeExtension[]) => any; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/schemas/schemas_0.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/schemas/schemas_0.d.ts new file mode 100644 index 000000000..bd50d994b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/schemas/schemas_0.d.ts @@ -0,0 +1,17 @@ +import { TypeRegistry } from "@smithy/core/schema"; +import type { StaticErrorSchema, StaticOperationSchema, StaticStructureSchema } from "@smithy/types"; +export declare var SSOServiceException$: StaticErrorSchema; +export declare var InvalidRequestException$: StaticErrorSchema; +export declare var ResourceNotFoundException$: StaticErrorSchema; +export declare var TooManyRequestsException$: StaticErrorSchema; +export declare var UnauthorizedException$: StaticErrorSchema; +/** + * TypeRegistry instances containing modeled errors. + * @internal + * + */ +export declare const errorTypeRegistries: TypeRegistry[]; +export declare var GetRoleCredentialsRequest$: StaticStructureSchema; +export declare var GetRoleCredentialsResponse$: StaticStructureSchema; +export declare var RoleCredentials$: StaticStructureSchema; +export declare var GetRoleCredentials$: StaticOperationSchema; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/STS.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/STS.d.ts new file mode 100644 index 000000000..b63f38ace --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/STS.d.ts @@ -0,0 +1,27 @@ +import type { HttpHandlerOptions as __HttpHandlerOptions } from "@smithy/types"; +import type { AssumeRoleCommandInput, AssumeRoleCommandOutput } from "./commands/AssumeRoleCommand"; +import type { AssumeRoleWithWebIdentityCommandInput, AssumeRoleWithWebIdentityCommandOutput } from "./commands/AssumeRoleWithWebIdentityCommand"; +import { STSClient } from "./STSClient"; +export interface STS { + /** + * @see {@link AssumeRoleCommand} + */ + assumeRole(args: AssumeRoleCommandInput, options?: __HttpHandlerOptions): Promise; + assumeRole(args: AssumeRoleCommandInput, cb: (err: any, data?: AssumeRoleCommandOutput) => void): void; + assumeRole(args: AssumeRoleCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: AssumeRoleCommandOutput) => void): void; + /** + * @see {@link AssumeRoleWithWebIdentityCommand} + */ + assumeRoleWithWebIdentity(args: AssumeRoleWithWebIdentityCommandInput, options?: __HttpHandlerOptions): Promise; + assumeRoleWithWebIdentity(args: AssumeRoleWithWebIdentityCommandInput, cb: (err: any, data?: AssumeRoleWithWebIdentityCommandOutput) => void): void; + assumeRoleWithWebIdentity(args: AssumeRoleWithWebIdentityCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: AssumeRoleWithWebIdentityCommandOutput) => void): void; +} +/** + * Security Token Service + *

Security Token Service (STS) enables you to request temporary, limited-privilege + * credentials for users. This guide provides descriptions of the STS API. For + * more information about using this service, see Temporary Security Credentials.

+ * @public + */ +export declare class STS extends STSClient implements STS { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/STSClient.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/STSClient.d.ts new file mode 100644 index 000000000..362ff2b46 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/STSClient.d.ts @@ -0,0 +1,193 @@ +import { type HostHeaderInputConfig, type HostHeaderResolvedConfig } from "@aws-sdk/middleware-host-header"; +import { type UserAgentInputConfig, type UserAgentResolvedConfig } from "@aws-sdk/middleware-user-agent"; +import { type RegionInputConfig, type RegionResolvedConfig } from "@smithy/config-resolver"; +import { type EndpointInputConfig, type EndpointResolvedConfig } from "@smithy/middleware-endpoint"; +import { type RetryInputConfig, type RetryResolvedConfig } from "@smithy/middleware-retry"; +import type { HttpHandlerUserInput as __HttpHandlerUserInput } from "@smithy/protocol-http"; +import { type DefaultsMode as __DefaultsMode, type SmithyConfiguration as __SmithyConfiguration, type SmithyResolvedConfiguration as __SmithyResolvedConfiguration, Client as __Client } from "@smithy/smithy-client"; +import type { AwsCredentialIdentityProvider, Provider, UserAgent as __UserAgent } from "@smithy/types"; +import { type BodyLengthCalculator as __BodyLengthCalculator, type CheckOptionalClientConfig as __CheckOptionalClientConfig, type ChecksumConstructor as __ChecksumConstructor, type Decoder as __Decoder, type Encoder as __Encoder, type HashConstructor as __HashConstructor, type HttpHandlerOptions as __HttpHandlerOptions, type Logger as __Logger, type Provider as __Provider, type StreamCollector as __StreamCollector, type UrlParser as __UrlParser } from "@smithy/types"; +import { type HttpAuthSchemeInputConfig, type HttpAuthSchemeResolvedConfig } from "./auth/httpAuthSchemeProvider"; +import type { AssumeRoleCommandInput, AssumeRoleCommandOutput } from "./commands/AssumeRoleCommand"; +import type { AssumeRoleWithWebIdentityCommandInput, AssumeRoleWithWebIdentityCommandOutput } from "./commands/AssumeRoleWithWebIdentityCommand"; +import type { ClientInputEndpointParameters, ClientResolvedEndpointParameters, EndpointParameters } from "./endpoint/EndpointParameters"; +import { type RuntimeExtension, type RuntimeExtensionsConfig } from "./runtimeExtensions"; +export { __Client }; +/** + * @public + */ +export type ServiceInputTypes = AssumeRoleCommandInput | AssumeRoleWithWebIdentityCommandInput; +/** + * @public + */ +export type ServiceOutputTypes = AssumeRoleCommandOutput | AssumeRoleWithWebIdentityCommandOutput; +/** + * @public + */ +export interface ClientDefaults extends Partial<__SmithyConfiguration<__HttpHandlerOptions>> { + /** + * The HTTP handler to use or its constructor options. Fetch in browser and Https in Nodejs. + */ + requestHandler?: __HttpHandlerUserInput; + /** + * A constructor for a class implementing the {@link @smithy/types#ChecksumConstructor} interface + * that computes the SHA-256 HMAC or checksum of a string or binary buffer. + * @internal + */ + sha256?: __ChecksumConstructor | __HashConstructor; + /** + * The function that will be used to convert strings into HTTP endpoints. + * @internal + */ + urlParser?: __UrlParser; + /** + * A function that can calculate the length of a request body. + * @internal + */ + bodyLengthChecker?: __BodyLengthCalculator; + /** + * A function that converts a stream into an array of bytes. + * @internal + */ + streamCollector?: __StreamCollector; + /** + * The function that will be used to convert a base64-encoded string to a byte array. + * @internal + */ + base64Decoder?: __Decoder; + /** + * The function that will be used to convert binary data to a base64-encoded string. + * @internal + */ + base64Encoder?: __Encoder; + /** + * The function that will be used to convert a UTF8-encoded string to a byte array. + * @internal + */ + utf8Decoder?: __Decoder; + /** + * The function that will be used to convert binary data to a UTF-8 encoded string. + * @internal + */ + utf8Encoder?: __Encoder; + /** + * The runtime environment. + * @internal + */ + runtime?: string; + /** + * Disable dynamically changing the endpoint of the client based on the hostPrefix + * trait of an operation. + */ + disableHostPrefix?: boolean; + /** + * Unique service identifier. + * @internal + */ + serviceId?: string; + /** + * Enables IPv6/IPv4 dualstack endpoint. + */ + useDualstackEndpoint?: boolean | __Provider; + /** + * Enables FIPS compatible endpoints. + */ + useFipsEndpoint?: boolean | __Provider; + /** + * The AWS region to which this client will send requests + */ + region?: string | __Provider; + /** + * Setting a client profile is similar to setting a value for the + * AWS_PROFILE environment variable. Setting a profile on a client + * in code only affects the single client instance, unlike AWS_PROFILE. + * + * When set, and only for environments where an AWS configuration + * file exists, fields configurable by this file will be retrieved + * from the specified profile within that file. + * Conflicting code configuration and environment variables will + * still have higher priority. + * + * For client credential resolution that involves checking the AWS + * configuration file, the client's profile (this value) will be + * used unless a different profile is set in the credential + * provider options. + * + */ + profile?: string; + /** + * The provider populating default tracking information to be sent with `user-agent`, `x-amz-user-agent` header + * @internal + */ + defaultUserAgentProvider?: Provider<__UserAgent>; + /** + * Default credentials provider; Not available in browser runtime. + * @deprecated + * @internal + */ + credentialDefaultProvider?: (input: any) => AwsCredentialIdentityProvider; + /** + * Value for how many times a request will be made at most in case of retry. + */ + maxAttempts?: number | __Provider; + /** + * Specifies which retry algorithm to use. + * @see https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-util-retry/Enum/RETRY_MODES/ + * + */ + retryMode?: string | __Provider; + /** + * Optional logger for logging debug/info/warn/error. + */ + logger?: __Logger; + /** + * Optional extensions + */ + extensions?: RuntimeExtension[]; + /** + * The {@link @smithy/smithy-client#DefaultsMode} that will be used to determine how certain default configuration options are resolved in the SDK. + */ + defaultsMode?: __DefaultsMode | __Provider<__DefaultsMode>; +} +/** + * @public + */ +export type STSClientConfigType = Partial<__SmithyConfiguration<__HttpHandlerOptions>> & ClientDefaults & UserAgentInputConfig & RetryInputConfig & RegionInputConfig & HostHeaderInputConfig & EndpointInputConfig & HttpAuthSchemeInputConfig & ClientInputEndpointParameters; +/** + * @public + * + * The configuration interface of STSClient class constructor that set the region, credentials and other options. + */ +export interface STSClientConfig extends STSClientConfigType { +} +/** + * @public + */ +export type STSClientResolvedConfigType = __SmithyResolvedConfiguration<__HttpHandlerOptions> & Required & RuntimeExtensionsConfig & UserAgentResolvedConfig & RetryResolvedConfig & RegionResolvedConfig & HostHeaderResolvedConfig & EndpointResolvedConfig & HttpAuthSchemeResolvedConfig & ClientResolvedEndpointParameters; +/** + * @public + * + * The resolved configuration interface of STSClient class. This is resolved and normalized from the {@link STSClientConfig | constructor configuration interface}. + */ +export interface STSClientResolvedConfig extends STSClientResolvedConfigType { +} +/** + * Security Token Service + *

Security Token Service (STS) enables you to request temporary, limited-privilege + * credentials for users. This guide provides descriptions of the STS API. For + * more information about using this service, see Temporary Security Credentials.

+ * @public + */ +export declare class STSClient extends __Client<__HttpHandlerOptions, ServiceInputTypes, ServiceOutputTypes, STSClientResolvedConfig> { + /** + * The resolved configuration of STSClient class. This is resolved and normalized from the {@link STSClientConfig | constructor configuration interface}. + */ + readonly config: STSClientResolvedConfig; + constructor(...[configuration]: __CheckOptionalClientConfig); + /** + * Destroy underlying resources, like sockets. It's usually not necessary to do this. + * However in Node.js, it's best to explicitly shut down the client's agent when it is no longer needed. + * Otherwise, sockets might stay open for quite a long time before the server terminates them. + */ + destroy(): void; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/auth/httpAuthExtensionConfiguration.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/auth/httpAuthExtensionConfiguration.d.ts new file mode 100644 index 000000000..86976f6c1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/auth/httpAuthExtensionConfiguration.d.ts @@ -0,0 +1,30 @@ +import type { AwsCredentialIdentity, AwsCredentialIdentityProvider } from "@smithy/types"; +import { type HttpAuthScheme } from "@smithy/types"; +import type { STSHttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; +/** + * @internal + */ +export interface HttpAuthExtensionConfiguration { + setHttpAuthScheme(httpAuthScheme: HttpAuthScheme): void; + httpAuthSchemes(): HttpAuthScheme[]; + setHttpAuthSchemeProvider(httpAuthSchemeProvider: STSHttpAuthSchemeProvider): void; + httpAuthSchemeProvider(): STSHttpAuthSchemeProvider; + setCredentials(credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider): void; + credentials(): AwsCredentialIdentity | AwsCredentialIdentityProvider | undefined; +} +/** + * @internal + */ +export type HttpAuthRuntimeConfig = Partial<{ + httpAuthSchemes: HttpAuthScheme[]; + httpAuthSchemeProvider: STSHttpAuthSchemeProvider; + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider; +}>; +/** + * @internal + */ +export declare const getHttpAuthExtensionConfiguration: (runtimeConfig: HttpAuthRuntimeConfig) => HttpAuthExtensionConfiguration; +/** + * @internal + */ +export declare const resolveHttpAuthRuntimeConfig: (config: HttpAuthExtensionConfiguration) => HttpAuthRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/auth/httpAuthSchemeProvider.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/auth/httpAuthSchemeProvider.d.ts new file mode 100644 index 000000000..63a3a2253 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/auth/httpAuthSchemeProvider.d.ts @@ -0,0 +1,86 @@ +import type { AwsSdkSigV4AuthInputConfig, AwsSdkSigV4AuthResolvedConfig, AwsSdkSigV4PreviouslyResolved } from "@aws-sdk/core"; +import type { Client } from "@smithy/types"; +import { type HandlerExecutionContext, type HttpAuthScheme, type HttpAuthSchemeParameters, type HttpAuthSchemeParametersProvider, type HttpAuthSchemeProvider, type Provider } from "@smithy/types"; +import { type STSClientResolvedConfig } from "../STSClient"; +/** + * @internal + */ +export interface STSHttpAuthSchemeParameters extends HttpAuthSchemeParameters { + region?: string; +} +/** + * @internal + */ +export interface STSHttpAuthSchemeParametersProvider extends HttpAuthSchemeParametersProvider { +} +/** + * @internal + */ +export declare const defaultSTSHttpAuthSchemeParametersProvider: (config: STSClientResolvedConfig, context: HandlerExecutionContext, input: object) => Promise; +/** + * @internal + */ +export interface STSHttpAuthSchemeProvider extends HttpAuthSchemeProvider { +} +/** + * @internal + */ +export declare const defaultSTSHttpAuthSchemeProvider: STSHttpAuthSchemeProvider; +export interface StsAuthInputConfig { +} +export interface StsAuthResolvedConfig { + /** + * Reference to STSClient class constructor. + * @internal + */ + stsClientCtor: new (clientConfig: any) => Client; +} +export declare const resolveStsAuthConfig: (input: T & StsAuthInputConfig) => T & StsAuthResolvedConfig; +/** + * @public + */ +export interface HttpAuthSchemeInputConfig extends StsAuthInputConfig, AwsSdkSigV4AuthInputConfig { + /** + * A comma-separated list of case-sensitive auth scheme names. + * An auth scheme name is a fully qualified auth scheme ID with the namespace prefix trimmed. + * For example, the auth scheme with ID aws.auth#sigv4 is named sigv4. + * @public + */ + authSchemePreference?: string[] | Provider; + /** + * Configuration of HttpAuthSchemes for a client which provides default identity providers and signers per auth scheme. + * @internal + */ + httpAuthSchemes?: HttpAuthScheme[]; + /** + * Configuration of an HttpAuthSchemeProvider for a client which resolves which HttpAuthScheme to use. + * @internal + */ + httpAuthSchemeProvider?: STSHttpAuthSchemeProvider; +} +/** + * @internal + */ +export interface HttpAuthSchemeResolvedConfig extends StsAuthResolvedConfig, AwsSdkSigV4AuthResolvedConfig { + /** + * A comma-separated list of case-sensitive auth scheme names. + * An auth scheme name is a fully qualified auth scheme ID with the namespace prefix trimmed. + * For example, the auth scheme with ID aws.auth#sigv4 is named sigv4. + * @public + */ + readonly authSchemePreference: Provider; + /** + * Configuration of HttpAuthSchemes for a client which provides default identity providers and signers per auth scheme. + * @internal + */ + readonly httpAuthSchemes: HttpAuthScheme[]; + /** + * Configuration of an HttpAuthSchemeProvider for a client which resolves which HttpAuthScheme to use. + * @internal + */ + readonly httpAuthSchemeProvider: STSHttpAuthSchemeProvider; +} +/** + * @internal + */ +export declare const resolveHttpAuthSchemeConfig: (config: T & HttpAuthSchemeInputConfig & AwsSdkSigV4PreviouslyResolved) => T & HttpAuthSchemeResolvedConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/commands/AssumeRoleCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/commands/AssumeRoleCommand.d.ts new file mode 100644 index 000000000..04ea0b261 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/commands/AssumeRoleCommand.d.ts @@ -0,0 +1,270 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { AssumeRoleRequest, AssumeRoleResponse } from "../models/models_0"; +import type { ServiceInputTypes, ServiceOutputTypes, STSClientResolvedConfig } from "../STSClient"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link AssumeRoleCommand}. + */ +export interface AssumeRoleCommandInput extends AssumeRoleRequest { +} +/** + * @public + * + * The output of {@link AssumeRoleCommand}. + */ +export interface AssumeRoleCommandOutput extends AssumeRoleResponse, __MetadataBearer { +} +declare const AssumeRoleCommand_base: { + new (input: AssumeRoleCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: AssumeRoleCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Returns a set of temporary security credentials that you can use to access Amazon Web Services + * resources. These temporary credentials consist of an access key ID, a secret access key, + * and a security token. Typically, you use AssumeRole within your account or for + * cross-account access. For a comparison of AssumeRole with other API operations + * that produce temporary credentials, see Requesting Temporary Security + * Credentials and Compare STS + * credentials in the IAM User Guide.

+ *

+ * Permissions + *

+ *

The temporary security credentials created by AssumeRole can be used to + * make API calls to any Amazon Web Services service with the following exception: You cannot call the + * Amazon Web Services STS GetFederationToken or GetSessionToken API + * operations.

+ *

(Optional) You can pass inline or managed session policies to this operation. You can + * pass a single JSON policy document to use as an inline session policy. You can also specify + * up to 10 managed policy Amazon Resource Names (ARNs) to use as managed session policies. + * The plaintext that you use for both inline and managed session policies can't exceed 2,048 + * characters. Passing policies to this operation returns new + * temporary credentials. The resulting session's permissions are the intersection of the + * role's identity-based policy and the session policies. You can use the role's temporary + * credentials in subsequent Amazon Web Services API calls to access resources in the account that owns + * the role. You cannot use session policies to grant more permissions than those allowed + * by the identity-based policy of the role that is being assumed. For more information, see + * Session + * Policies in the IAM User Guide.

+ *

When you create a role, you create two policies: a role trust policy that specifies + * who can assume the role, and a permissions policy that specifies + * what can be done with the role. You specify the trusted principal + * that is allowed to assume the role in the role trust policy.

+ *

To assume a role from a different account, your Amazon Web Services account must be trusted by the + * role. The trust relationship is defined in the role's trust policy when the role is + * created. That trust policy states which accounts are allowed to delegate that access to + * users in the account.

+ *

A user who wants to access a role in a different account must also have permissions that + * are delegated from the account administrator. The administrator must attach a policy that + * allows the user to call AssumeRole for the ARN of the role in the other + * account.

+ *

To allow a user to assume a role in the same account, you can do either of the + * following:

+ *
    + *
  • + *

    Attach a policy to the user that allows the user to call AssumeRole + * (as long as the role's trust policy trusts the account).

    + *
  • + *
  • + *

    Add the user as a principal directly in the role's trust policy.

    + *
  • + *
+ *

You can do either because the role’s trust policy acts as an IAM resource-based + * policy. When a resource-based policy grants access to a principal in the same account, no + * additional identity-based policy is required. For more information about trust policies and + * resource-based policies, see IAM Policies in the + * IAM User Guide.

+ *

+ * Tags + *

+ *

(Optional) You can pass tag key-value pairs to your session. These tags are called + * session tags. For more information about session tags, see Passing Session Tags in STS in the + * IAM User Guide.

+ *

An administrator must grant you the permissions necessary to pass session tags. The + * administrator can also create granular permissions to allow you to pass only specific + * session tags. For more information, see Tutorial: Using Tags + * for Attribute-Based Access Control in the + * IAM User Guide.

+ *

You can set the session tags as transitive. Transitive tags persist during role + * chaining. For more information, see Chaining Roles + * with Session Tags in the IAM User Guide.

+ *

+ * Using MFA with AssumeRole + *

+ *

(Optional) You can include multi-factor authentication (MFA) information when you call + * AssumeRole. This is useful for cross-account scenarios to ensure that the + * user that assumes the role has been authenticated with an Amazon Web Services MFA device. In that + * scenario, the trust policy of the role being assumed includes a condition that tests for + * MFA authentication. If the caller does not include valid MFA information, the request to + * assume the role is denied. The condition in a trust policy that tests for MFA + * authentication might look like the following example.

+ *

+ * "Condition": \{"Bool": \{"aws:MultiFactorAuthPresent": true\}\} + *

+ *

For more information, see Configuring MFA-Protected API Access + * in the IAM User Guide guide.

+ *

To use MFA with AssumeRole, you pass values for the + * SerialNumber and TokenCode parameters. The + * SerialNumber value identifies the user's hardware or virtual MFA device. + * The TokenCode is the time-based one-time password (TOTP) that the MFA device + * produces.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { STSClient, AssumeRoleCommand } from "@aws-sdk/client-sts"; // ES Modules import + * // const { STSClient, AssumeRoleCommand } = require("@aws-sdk/client-sts"); // CommonJS import + * // import type { STSClientConfig } from "@aws-sdk/client-sts"; + * const config = {}; // type is STSClientConfig + * const client = new STSClient(config); + * const input = { // AssumeRoleRequest + * RoleArn: "STRING_VALUE", // required + * RoleSessionName: "STRING_VALUE", // required + * PolicyArns: [ // policyDescriptorListType + * { // PolicyDescriptorType + * arn: "STRING_VALUE", + * }, + * ], + * Policy: "STRING_VALUE", + * DurationSeconds: Number("int"), + * Tags: [ // tagListType + * { // Tag + * Key: "STRING_VALUE", // required + * Value: "STRING_VALUE", // required + * }, + * ], + * TransitiveTagKeys: [ // tagKeyListType + * "STRING_VALUE", + * ], + * ExternalId: "STRING_VALUE", + * SerialNumber: "STRING_VALUE", + * TokenCode: "STRING_VALUE", + * SourceIdentity: "STRING_VALUE", + * ProvidedContexts: [ // ProvidedContextsListType + * { // ProvidedContext + * ProviderArn: "STRING_VALUE", + * ContextAssertion: "STRING_VALUE", + * }, + * ], + * }; + * const command = new AssumeRoleCommand(input); + * const response = await client.send(command); + * // { // AssumeRoleResponse + * // Credentials: { // Credentials + * // AccessKeyId: "STRING_VALUE", // required + * // SecretAccessKey: "STRING_VALUE", // required + * // SessionToken: "STRING_VALUE", // required + * // Expiration: new Date("TIMESTAMP"), // required + * // }, + * // AssumedRoleUser: { // AssumedRoleUser + * // AssumedRoleId: "STRING_VALUE", // required + * // Arn: "STRING_VALUE", // required + * // }, + * // PackedPolicySize: Number("int"), + * // SourceIdentity: "STRING_VALUE", + * // }; + * + * ``` + * + * @param AssumeRoleCommandInput - {@link AssumeRoleCommandInput} + * @returns {@link AssumeRoleCommandOutput} + * @see {@link AssumeRoleCommandInput} for command's `input` shape. + * @see {@link AssumeRoleCommandOutput} for command's `response` shape. + * @see {@link STSClientResolvedConfig | config} for STSClient's `config` shape. + * + * @throws {@link ExpiredTokenException} (client fault) + *

The web identity token that was passed is expired or is not valid. Get a new identity + * token from the identity provider and then retry the request.

+ * + * @throws {@link MalformedPolicyDocumentException} (client fault) + *

The request was rejected because the policy document was malformed. The error message + * describes the specific error.

+ * + * @throws {@link PackedPolicyTooLargeException} (client fault) + *

The request was rejected because the total packed size of the session policies and + * session tags combined was too large. An Amazon Web Services conversion compresses the session policy + * document, session policy ARNs, and session tags into a packed binary format that has a + * separate limit. The error message indicates by percentage how close the policies and + * tags are to the upper size limit. For more information, see Passing Session Tags in STS in + * the IAM User Guide.

+ *

You could receive this error even though you meet other defined session policy and + * session tag limits. For more information, see IAM and STS Entity Character Limits in the IAM User + * Guide.

+ * + * @throws {@link RegionDisabledException} (client fault) + *

STS is not activated in the requested region for the account that is being asked to + * generate credentials. The account administrator must use the IAM console to activate + * STS in that region. For more information, see Activating and Deactivating STS in an Amazon Web Services Region in the IAM + * User Guide.

+ * + * @throws {@link STSServiceException} + *

Base exception class for all service exceptions from STS service.

+ * + * + * @example To assume a role + * ```javascript + * // + * const input = { + * ExternalId: "123ABC", + * Policy: "escaped-JSON-IAM-POLICY", + * RoleArn: "arn:aws:iam::123456789012:role/demo", + * RoleSessionName: "testAssumeRoleSession", + * Tags: [ + * { + * Key: "Project", + * Value: "Unicorn" + * }, + * { + * Key: "Team", + * Value: "Automation" + * }, + * { + * Key: "Cost-Center", + * Value: "12345" + * } + * ], + * TransitiveTagKeys: [ + * "Project", + * "Cost-Center" + * ] + * }; + * const command = new AssumeRoleCommand(input); + * const response = await client.send(command); + * /* response is + * { + * AssumedRoleUser: { + * Arn: "arn:aws:sts::123456789012:assumed-role/demo/Bob", + * AssumedRoleId: "ARO123EXAMPLE123:Bob" + * }, + * Credentials: { + * AccessKeyId: "AKIAIOSFODNN7EXAMPLE", + * Expiration: "2011-07-15T23:28:33.359Z", + * SecretAccessKey: "wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY", + * SessionToken: "AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQWLWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGdQrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz+scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCR/oLxBA==" + * }, + * PackedPolicySize: 8 + * } + * *\/ + * ``` + * + * @public + */ +export declare class AssumeRoleCommand extends AssumeRoleCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: AssumeRoleRequest; + output: AssumeRoleResponse; + }; + sdk: { + input: AssumeRoleCommandInput; + output: AssumeRoleCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.d.ts new file mode 100644 index 000000000..d590715f3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.d.ts @@ -0,0 +1,290 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { AssumeRoleWithWebIdentityRequest, AssumeRoleWithWebIdentityResponse } from "../models/models_0"; +import type { ServiceInputTypes, ServiceOutputTypes, STSClientResolvedConfig } from "../STSClient"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link AssumeRoleWithWebIdentityCommand}. + */ +export interface AssumeRoleWithWebIdentityCommandInput extends AssumeRoleWithWebIdentityRequest { +} +/** + * @public + * + * The output of {@link AssumeRoleWithWebIdentityCommand}. + */ +export interface AssumeRoleWithWebIdentityCommandOutput extends AssumeRoleWithWebIdentityResponse, __MetadataBearer { +} +declare const AssumeRoleWithWebIdentityCommand_base: { + new (input: AssumeRoleWithWebIdentityCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: AssumeRoleWithWebIdentityCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Returns a set of temporary security credentials for users who have been authenticated in + * a mobile or web application with a web identity provider. Example providers include the + * OAuth 2.0 providers Login with Amazon and Facebook, or any OpenID Connect-compatible + * identity provider such as Google or Amazon Cognito federated identities.

+ * + *

For mobile applications, we recommend that you use Amazon Cognito. You can use Amazon Cognito with the + * Amazon Web Services SDK for iOS Developer Guide and the Amazon Web Services SDK for Android Developer Guide to uniquely + * identify a user. You can also supply the user with a consistent identity throughout the + * lifetime of an application.

+ *

To learn more about Amazon Cognito, see Amazon Cognito identity + * pools in Amazon Cognito Developer Guide.

+ *
+ *

Calling AssumeRoleWithWebIdentity does not require the use of Amazon Web Services + * security credentials. Therefore, you can distribute an application (for example, on mobile + * devices) that requests temporary security credentials without including long-term Amazon Web Services + * credentials in the application. You also don't need to deploy server-based proxy services + * that use long-term Amazon Web Services credentials. Instead, the identity of the caller is validated by + * using a token from the web identity provider. For a comparison of + * AssumeRoleWithWebIdentity with the other API operations that produce + * temporary credentials, see Requesting Temporary Security + * Credentials and Compare STS + * credentials in the IAM User Guide.

+ *

The temporary security credentials returned by this API consist of an access key ID, a + * secret access key, and a security token. Applications can use these temporary security + * credentials to sign calls to Amazon Web Services service API operations.

+ *

+ * Session Duration + *

+ *

By default, the temporary security credentials created by + * AssumeRoleWithWebIdentity last for one hour. However, you can use the + * optional DurationSeconds parameter to specify the duration of your session. + * You can provide a value from 900 seconds (15 minutes) up to the maximum session duration + * setting for the role. This setting can have a value from 1 hour to 12 hours. To learn how + * to view the maximum value for your role, see Update the maximum session duration for a role in the + * IAM User Guide. The maximum session duration limit applies when + * you use the AssumeRole* API operations or the assume-role* CLI + * commands. However the limit does not apply when you use those operations to create a + * console URL. For more information, see Using IAM Roles in the + * IAM User Guide.

+ *

+ * Permissions + *

+ *

The temporary security credentials created by AssumeRoleWithWebIdentity can + * be used to make API calls to any Amazon Web Services service with the following exception: you cannot + * call the STS GetFederationToken or GetSessionToken API + * operations.

+ *

(Optional) You can pass inline or managed session policies to + * this operation. You can pass a single JSON policy document to use as an inline session + * policy. You can also specify up to 10 managed policy Amazon Resource Names (ARNs) to use as + * managed session policies. The plaintext that you use for both inline and managed session + * policies can't exceed 2,048 characters. Passing policies to this operation returns new + * temporary credentials. The resulting session's permissions are the intersection of the + * role's identity-based policy and the session policies. You can use the role's temporary + * credentials in subsequent Amazon Web Services API calls to access resources in the account that owns + * the role. You cannot use session policies to grant more permissions than those allowed + * by the identity-based policy of the role that is being assumed. For more information, see + * Session + * Policies in the IAM User Guide.

+ *

+ * Tags + *

+ *

(Optional) You can configure your IdP to pass attributes into your web identity token as + * session tags. Each session tag consists of a key name and an associated value. For more + * information about session tags, see Passing + * session tags using AssumeRoleWithWebIdentity in the + * IAM User Guide.

+ *

You can pass up to 50 session tags. The plaintext session tag keys can’t exceed 128 + * characters and the values can’t exceed 256 characters. For these and additional limits, see + * IAM + * and STS Character Limits in the IAM User Guide.

+ * + *

An Amazon Web Services conversion compresses the passed inline session policy, managed policy ARNs, + * and session tags into a packed binary format that has a separate limit. Your request can + * fail for this limit even if your plaintext meets the other requirements. The + * PackedPolicySize response element indicates by percentage how close the + * policies and tags for your request are to the upper size limit.

+ *
+ *

You can pass a session tag with the same key as a tag that is attached to the role. When + * you do, the session tag overrides the role tag with the same key.

+ *

An administrator must grant you the permissions necessary to pass session tags. The + * administrator can also create granular permissions to allow you to pass only specific + * session tags. For more information, see Tutorial: Using Tags + * for Attribute-Based Access Control in the + * IAM User Guide.

+ *

You can set the session tags as transitive. Transitive tags persist during role + * chaining. For more information, see Chaining Roles + * with Session Tags in the IAM User Guide.

+ *

+ * Identities + *

+ *

Before your application can call AssumeRoleWithWebIdentity, you must have + * an identity token from a supported identity provider and create a role that the application + * can assume. The role that your application assumes must trust the identity provider that is + * associated with the identity token. In other words, the identity provider must be specified + * in the role's trust policy.

+ * + *

Calling AssumeRoleWithWebIdentity can result in an entry in your + * CloudTrail logs. The entry includes the Subject of + * the provided web identity token. We recommend that you avoid using any personally + * identifiable information (PII) in this field. For example, you could instead use a GUID + * or a pairwise identifier, as suggested + * in the OIDC specification.

+ *
+ *

For more information about how to use OIDC federation and the + * AssumeRoleWithWebIdentity API, see the following resources:

+ * + * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { STSClient, AssumeRoleWithWebIdentityCommand } from "@aws-sdk/client-sts"; // ES Modules import + * // const { STSClient, AssumeRoleWithWebIdentityCommand } = require("@aws-sdk/client-sts"); // CommonJS import + * // import type { STSClientConfig } from "@aws-sdk/client-sts"; + * const config = {}; // type is STSClientConfig + * const client = new STSClient(config); + * const input = { // AssumeRoleWithWebIdentityRequest + * RoleArn: "STRING_VALUE", // required + * RoleSessionName: "STRING_VALUE", // required + * WebIdentityToken: "STRING_VALUE", // required + * ProviderId: "STRING_VALUE", + * PolicyArns: [ // policyDescriptorListType + * { // PolicyDescriptorType + * arn: "STRING_VALUE", + * }, + * ], + * Policy: "STRING_VALUE", + * DurationSeconds: Number("int"), + * }; + * const command = new AssumeRoleWithWebIdentityCommand(input); + * const response = await client.send(command); + * // { // AssumeRoleWithWebIdentityResponse + * // Credentials: { // Credentials + * // AccessKeyId: "STRING_VALUE", // required + * // SecretAccessKey: "STRING_VALUE", // required + * // SessionToken: "STRING_VALUE", // required + * // Expiration: new Date("TIMESTAMP"), // required + * // }, + * // SubjectFromWebIdentityToken: "STRING_VALUE", + * // AssumedRoleUser: { // AssumedRoleUser + * // AssumedRoleId: "STRING_VALUE", // required + * // Arn: "STRING_VALUE", // required + * // }, + * // PackedPolicySize: Number("int"), + * // Provider: "STRING_VALUE", + * // Audience: "STRING_VALUE", + * // SourceIdentity: "STRING_VALUE", + * // }; + * + * ``` + * + * @param AssumeRoleWithWebIdentityCommandInput - {@link AssumeRoleWithWebIdentityCommandInput} + * @returns {@link AssumeRoleWithWebIdentityCommandOutput} + * @see {@link AssumeRoleWithWebIdentityCommandInput} for command's `input` shape. + * @see {@link AssumeRoleWithWebIdentityCommandOutput} for command's `response` shape. + * @see {@link STSClientResolvedConfig | config} for STSClient's `config` shape. + * + * @throws {@link ExpiredTokenException} (client fault) + *

The web identity token that was passed is expired or is not valid. Get a new identity + * token from the identity provider and then retry the request.

+ * + * @throws {@link IDPCommunicationErrorException} (client fault) + *

The request could not be fulfilled because the identity provider (IDP) that was asked + * to verify the incoming identity token could not be reached. This is often a transient + * error caused by network conditions. Retry the request a limited number of times so that + * you don't exceed the request rate. If the error persists, the identity provider might be + * down or not responding.

+ * + * @throws {@link IDPRejectedClaimException} (client fault) + *

The identity provider (IdP) reported that authentication failed. This might be because + * the claim is invalid.

+ *

If this error is returned for the AssumeRoleWithWebIdentity operation, it + * can also mean that the claim has expired or has been explicitly revoked.

+ * + * @throws {@link InvalidIdentityTokenException} (client fault) + *

The web identity token that was passed could not be validated by Amazon Web Services. Get a new + * identity token from the identity provider and then retry the request.

+ * + * @throws {@link MalformedPolicyDocumentException} (client fault) + *

The request was rejected because the policy document was malformed. The error message + * describes the specific error.

+ * + * @throws {@link PackedPolicyTooLargeException} (client fault) + *

The request was rejected because the total packed size of the session policies and + * session tags combined was too large. An Amazon Web Services conversion compresses the session policy + * document, session policy ARNs, and session tags into a packed binary format that has a + * separate limit. The error message indicates by percentage how close the policies and + * tags are to the upper size limit. For more information, see Passing Session Tags in STS in + * the IAM User Guide.

+ *

You could receive this error even though you meet other defined session policy and + * session tag limits. For more information, see IAM and STS Entity Character Limits in the IAM User + * Guide.

+ * + * @throws {@link RegionDisabledException} (client fault) + *

STS is not activated in the requested region for the account that is being asked to + * generate credentials. The account administrator must use the IAM console to activate + * STS in that region. For more information, see Activating and Deactivating STS in an Amazon Web Services Region in the IAM + * User Guide.

+ * + * @throws {@link STSServiceException} + *

Base exception class for all service exceptions from STS service.

+ * + * + * @example To assume a role as an OpenID Connect-federated user + * ```javascript + * // + * const input = { + * DurationSeconds: 3600, + * Policy: "escaped-JSON-IAM-POLICY", + * ProviderId: "www.amazon.com", + * RoleArn: "arn:aws:iam::123456789012:role/FederatedWebIdentityRole", + * RoleSessionName: "app1", + * WebIdentityToken: "Atza%7CIQEBLjAsAhRFiXuWpUXuRvQ9PZL3GMFcYevydwIUFAHZwXZXXXXXXXXJnrulxKDHwy87oGKPznh0D6bEQZTSCzyoCtL_8S07pLpr0zMbn6w1lfVZKNTBdDansFBmtGnIsIapjI6xKR02Yc_2bQ8LZbUXSGm6Ry6_BG7PrtLZtj_dfCTj92xNGed-CrKqjG7nPBjNIL016GGvuS5gSvPRUxWES3VYfm1wl7WTI7jn-Pcb6M-buCgHhFOzTQxod27L9CqnOLio7N3gZAGpsp6n1-AJBOCJckcyXe2c6uD0srOJeZlKUm2eTDVMf8IehDVI0r1QOnTV6KzzAI3OY87Vd_cVMQ" + * }; + * const command = new AssumeRoleWithWebIdentityCommand(input); + * const response = await client.send(command); + * /* response is + * { + * AssumedRoleUser: { + * Arn: "arn:aws:sts::123456789012:assumed-role/FederatedWebIdentityRole/app1", + * AssumedRoleId: "AROACLKWSDQRAOEXAMPLE:app1" + * }, + * Audience: "client.5498841531868486423.1548@apps.example.com", + * Credentials: { + * AccessKeyId: "AKIAIOSFODNN7EXAMPLE", + * Expiration: "2014-10-24T23:00:23Z", + * SecretAccessKey: "wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY", + * SessionToken: "AQoDYXdzEE0a8ANXXXXXXXXNO1ewxE5TijQyp+IEXAMPLE" + * }, + * PackedPolicySize: 123, + * Provider: "www.amazon.com", + * SubjectFromWebIdentityToken: "amzn1.account.AF6RHO7KZU5XRVQJGXK6HEXAMPLE" + * } + * *\/ + * ``` + * + * @public + */ +export declare class AssumeRoleWithWebIdentityCommand extends AssumeRoleWithWebIdentityCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: AssumeRoleWithWebIdentityRequest; + output: AssumeRoleWithWebIdentityResponse; + }; + sdk: { + input: AssumeRoleWithWebIdentityCommandInput; + output: AssumeRoleWithWebIdentityCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/commands/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/commands/index.d.ts new file mode 100644 index 000000000..0f200f52c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/commands/index.d.ts @@ -0,0 +1,2 @@ +export * from "./AssumeRoleCommand"; +export * from "./AssumeRoleWithWebIdentityCommand"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/defaultRoleAssumers.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/defaultRoleAssumers.d.ts new file mode 100644 index 000000000..ba9e5426f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/defaultRoleAssumers.d.ts @@ -0,0 +1,23 @@ +import type { Pluggable } from "@smithy/types"; +import type { DefaultCredentialProvider, RoleAssumer, RoleAssumerWithWebIdentity, STSRoleAssumerOptions } from "./defaultStsRoleAssumers"; +import type { ServiceInputTypes, ServiceOutputTypes } from "./STSClient"; +/** + * The default role assumer that used by credential providers when sts:AssumeRole API is needed. + */ +export declare const getDefaultRoleAssumer: (stsOptions?: STSRoleAssumerOptions, stsPlugins?: Pluggable[]) => RoleAssumer; +/** + * The default role assumer that used by credential providers when sts:AssumeRoleWithWebIdentity API is needed. + */ +export declare const getDefaultRoleAssumerWithWebIdentity: (stsOptions?: STSRoleAssumerOptions, stsPlugins?: Pluggable[]) => RoleAssumerWithWebIdentity; +/** + * The default credential providers depend STS client to assume role with desired API: sts:assumeRole, + * sts:assumeRoleWithWebIdentity, etc. This function decorates the default credential provider with role assumers which + * encapsulates the process of calling STS commands. This can only be imported by AWS client packages to avoid circular + * dependencies. + * + * @internal + * + * @deprecated this is no longer needed. Use the defaultProvider directly, + * which will load STS if needed. + */ +export declare const decorateDefaultCredentialProvider: (provider: DefaultCredentialProvider) => DefaultCredentialProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/defaultStsRoleAssumers.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/defaultStsRoleAssumers.d.ts new file mode 100644 index 000000000..7833b216c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/defaultStsRoleAssumers.d.ts @@ -0,0 +1,43 @@ +import type { CredentialProviderOptions } from "@aws-sdk/types"; +import type { AwsCredentialIdentity, Logger, Provider } from "@smithy/types"; +import type { AssumeRoleCommandInput } from "./commands/AssumeRoleCommand"; +import type { AssumeRoleWithWebIdentityCommandInput } from "./commands/AssumeRoleWithWebIdentityCommand"; +import type { STSClient, STSClientConfig } from "./STSClient"; +/** + * @public + */ +export type STSRoleAssumerOptions = Pick & { + credentialProviderLogger?: Logger; + parentClientConfig?: CredentialProviderOptions["parentClientConfig"]; +}; +/** + * @internal + */ +export type RoleAssumer = (sourceCreds: AwsCredentialIdentity, params: AssumeRoleCommandInput) => Promise; +/** + * The default role assumer that used by credential providers when sts:AssumeRole API is needed. + * @internal + */ +export declare const getDefaultRoleAssumer: (stsOptions: STSRoleAssumerOptions, STSClient: new (options: STSClientConfig) => STSClient) => RoleAssumer; +/** + * @internal + */ +export type RoleAssumerWithWebIdentity = (params: AssumeRoleWithWebIdentityCommandInput) => Promise; +/** + * The default role assumer that used by credential providers when sts:AssumeRoleWithWebIdentity API is needed. + * @internal + */ +export declare const getDefaultRoleAssumerWithWebIdentity: (stsOptions: STSRoleAssumerOptions, STSClient: new (options: STSClientConfig) => STSClient) => RoleAssumerWithWebIdentity; +/** + * @internal + */ +export type DefaultCredentialProvider = (input: any) => Provider; +/** + * The default credential providers depend STS client to assume role with desired API: sts:assumeRole, + * sts:assumeRoleWithWebIdentity, etc. This function decorates the default credential provider with role assumers which + * encapsulates the process of calling STS commands. This can only be imported by AWS client packages to avoid circular + * dependencies. + * + * @internal + */ +export declare const decorateDefaultCredentialProvider: (provider: DefaultCredentialProvider) => DefaultCredentialProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/endpoint/EndpointParameters.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/endpoint/EndpointParameters.d.ts new file mode 100644 index 000000000..ca9366029 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/endpoint/EndpointParameters.d.ts @@ -0,0 +1,56 @@ +import type { Endpoint, EndpointParameters as __EndpointParameters, EndpointV2, Provider } from "@smithy/types"; +/** + * @public + */ +export interface ClientInputEndpointParameters { + region?: string | undefined | Provider; + useDualstackEndpoint?: boolean | undefined | Provider; + useFipsEndpoint?: boolean | undefined | Provider; + endpoint?: string | Provider | Endpoint | Provider | EndpointV2 | Provider; + useGlobalEndpoint?: boolean | undefined | Provider; +} +/** + * @public + */ +export type ClientResolvedEndpointParameters = Omit & { + defaultSigningName: string; +}; +/** + * @internal + */ +export declare const resolveClientEndpointParameters: (options: T & ClientInputEndpointParameters) => T & ClientResolvedEndpointParameters; +/** + * @internal + */ +export declare const commonParams: { + readonly UseGlobalEndpoint: { + readonly type: "builtInParams"; + readonly name: "useGlobalEndpoint"; + }; + readonly UseFIPS: { + readonly type: "builtInParams"; + readonly name: "useFipsEndpoint"; + }; + readonly Endpoint: { + readonly type: "builtInParams"; + readonly name: "endpoint"; + }; + readonly Region: { + readonly type: "builtInParams"; + readonly name: "region"; + }; + readonly UseDualStack: { + readonly type: "builtInParams"; + readonly name: "useDualstackEndpoint"; + }; +}; +/** + * @internal + */ +export interface EndpointParameters extends __EndpointParameters { + Region?: string | undefined; + UseDualStack?: boolean | undefined; + UseFIPS?: boolean | undefined; + Endpoint?: string | undefined; + UseGlobalEndpoint?: boolean | undefined; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/endpoint/endpointResolver.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/endpoint/endpointResolver.d.ts new file mode 100644 index 000000000..c1de67d3e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/endpoint/endpointResolver.d.ts @@ -0,0 +1,8 @@ +import type { EndpointV2, Logger } from "@smithy/types"; +import type { EndpointParameters } from "./EndpointParameters"; +/** + * @internal + */ +export declare const defaultEndpointResolver: (endpointParams: EndpointParameters, context?: { + logger?: Logger; +}) => EndpointV2; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/endpoint/ruleset.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/endpoint/ruleset.d.ts new file mode 100644 index 000000000..4dda20a8e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/endpoint/ruleset.d.ts @@ -0,0 +1,2 @@ +import type { RuleSetObject } from "@smithy/types"; +export declare const ruleSet: RuleSetObject; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/extensionConfiguration.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/extensionConfiguration.d.ts new file mode 100644 index 000000000..f80c369ee --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/extensionConfiguration.d.ts @@ -0,0 +1,9 @@ +import type { AwsRegionExtensionConfiguration } from "@aws-sdk/types"; +import type { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; +import type { DefaultExtensionConfiguration } from "@smithy/types"; +import type { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; +/** + * @internal + */ +export interface STSExtensionConfiguration extends HttpHandlerExtensionConfiguration, DefaultExtensionConfiguration, AwsRegionExtensionConfiguration, HttpAuthExtensionConfiguration { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/index.d.ts new file mode 100644 index 000000000..d8209c124 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/index.d.ts @@ -0,0 +1,19 @@ +/** + * Security Token Service + *

Security Token Service (STS) enables you to request temporary, limited-privilege + * credentials for users. This guide provides descriptions of the STS API. For + * more information about using this service, see Temporary Security Credentials.

+ * + * @packageDocumentation + */ +export * from "./STSClient"; +export * from "./STS"; +export { ClientInputEndpointParameters } from "./endpoint/EndpointParameters"; +export type { RuntimeExtension } from "./runtimeExtensions"; +export type { STSExtensionConfiguration } from "./extensionConfiguration"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./models/errors"; +export * from "./models/models_0"; +export * from "./defaultRoleAssumers"; +export { STSServiceException } from "./models/STSServiceException"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/models/STSServiceException.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/models/STSServiceException.d.ts new file mode 100644 index 000000000..de90dfac1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/models/STSServiceException.d.ts @@ -0,0 +1,14 @@ +import { type ServiceExceptionOptions as __ServiceExceptionOptions, ServiceException as __ServiceException } from "@smithy/smithy-client"; +export type { __ServiceExceptionOptions }; +export { __ServiceException }; +/** + * @public + * + * Base exception class for all service exceptions from STS service. + */ +export declare class STSServiceException extends __ServiceException { + /** + * @internal + */ + constructor(options: __ServiceExceptionOptions); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/models/errors.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/models/errors.d.ts new file mode 100644 index 000000000..e1f8613dd --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/models/errors.d.ts @@ -0,0 +1,107 @@ +import type { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; +import { STSServiceException as __BaseException } from "./STSServiceException"; +/** + *

The web identity token that was passed is expired or is not valid. Get a new identity + * token from the identity provider and then retry the request.

+ * @public + */ +export declare class ExpiredTokenException extends __BaseException { + readonly name: "ExpiredTokenException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

The request was rejected because the policy document was malformed. The error message + * describes the specific error.

+ * @public + */ +export declare class MalformedPolicyDocumentException extends __BaseException { + readonly name: "MalformedPolicyDocumentException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

The request was rejected because the total packed size of the session policies and + * session tags combined was too large. An Amazon Web Services conversion compresses the session policy + * document, session policy ARNs, and session tags into a packed binary format that has a + * separate limit. The error message indicates by percentage how close the policies and + * tags are to the upper size limit. For more information, see Passing Session Tags in STS in + * the IAM User Guide.

+ *

You could receive this error even though you meet other defined session policy and + * session tag limits. For more information, see IAM and STS Entity Character Limits in the IAM User + * Guide.

+ * @public + */ +export declare class PackedPolicyTooLargeException extends __BaseException { + readonly name: "PackedPolicyTooLargeException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

STS is not activated in the requested region for the account that is being asked to + * generate credentials. The account administrator must use the IAM console to activate + * STS in that region. For more information, see Activating and Deactivating STS in an Amazon Web Services Region in the IAM + * User Guide.

+ * @public + */ +export declare class RegionDisabledException extends __BaseException { + readonly name: "RegionDisabledException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

The identity provider (IdP) reported that authentication failed. This might be because + * the claim is invalid.

+ *

If this error is returned for the AssumeRoleWithWebIdentity operation, it + * can also mean that the claim has expired or has been explicitly revoked.

+ * @public + */ +export declare class IDPRejectedClaimException extends __BaseException { + readonly name: "IDPRejectedClaimException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

The web identity token that was passed could not be validated by Amazon Web Services. Get a new + * identity token from the identity provider and then retry the request.

+ * @public + */ +export declare class InvalidIdentityTokenException extends __BaseException { + readonly name: "InvalidIdentityTokenException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

The request could not be fulfilled because the identity provider (IDP) that was asked + * to verify the incoming identity token could not be reached. This is often a transient + * error caused by network conditions. Retry the request a limited number of times so that + * you don't exceed the request rate. If the error persists, the identity provider might be + * down or not responding.

+ * @public + */ +export declare class IDPCommunicationErrorException extends __BaseException { + readonly name: "IDPCommunicationErrorException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/models/models_0.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/models/models_0.d.ts new file mode 100644 index 000000000..2ee8377f5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/models/models_0.d.ts @@ -0,0 +1,588 @@ +/** + *

The identifiers for the temporary security credentials that the operation + * returns.

+ * @public + */ +export interface AssumedRoleUser { + /** + *

A unique identifier that contains the role ID and the role session name of the role that + * is being assumed. The role ID is generated by Amazon Web Services when the role is created.

+ * @public + */ + AssumedRoleId: string | undefined; + /** + *

The ARN of the temporary security credentials that are returned from the AssumeRole action. For more information about ARNs and how to use them in + * policies, see IAM Identifiers in the + * IAM User Guide.

+ * @public + */ + Arn: string | undefined; +} +/** + *

A reference to the IAM managed policy that is passed as a session policy for a role + * session or a federated user session.

+ * @public + */ +export interface PolicyDescriptorType { + /** + *

The Amazon Resource Name (ARN) of the IAM managed policy to use as a session policy + * for the role. For more information about ARNs, see Amazon Resource Names (ARNs) and Amazon Web Services + * Service Namespaces in the Amazon Web Services General Reference.

+ * @public + */ + arn?: string | undefined; +} +/** + *

Contains information about the provided context. This includes the signed and encrypted + * trusted context assertion and the context provider ARN from which the trusted context + * assertion was generated.

+ * @public + */ +export interface ProvidedContext { + /** + *

The context provider ARN from which the trusted context assertion was generated.

+ * @public + */ + ProviderArn?: string | undefined; + /** + *

The signed and encrypted trusted context assertion generated by the context provider. + * The trusted context assertion is signed and encrypted by Amazon Web Services STS.

+ * @public + */ + ContextAssertion?: string | undefined; +} +/** + *

You can pass custom key-value pair attributes when you assume a role or federate a user. + * These are called session tags. You can then use the session tags to control access to + * resources. For more information, see Tagging Amazon Web Services STS Sessions in the + * IAM User Guide.

+ * @public + */ +export interface Tag { + /** + *

The key for a session tag.

+ *

You can pass up to 50 session tags. The plain text session tag keys can’t exceed 128 + * characters. For these and additional limits, see IAM + * and STS Character Limits in the IAM User Guide.

+ * @public + */ + Key: string | undefined; + /** + *

The value for a session tag.

+ *

You can pass up to 50 session tags. The plain text session tag values can’t exceed 256 + * characters. For these and additional limits, see IAM + * and STS Character Limits in the IAM User Guide.

+ * @public + */ + Value: string | undefined; +} +/** + * @public + */ +export interface AssumeRoleRequest { + /** + *

The Amazon Resource Name (ARN) of the role to assume.

+ * @public + */ + RoleArn: string | undefined; + /** + *

An identifier for the assumed role session.

+ *

Use the role session name to uniquely identify a session when the same role is assumed + * by different principals or for different reasons. In cross-account scenarios, the role + * session name is visible to, and can be logged by the account that owns the role. The role + * session name is also used in the ARN of the assumed role principal. This means that + * subsequent cross-account API requests that use the temporary security credentials will + * expose the role session name to the external account in their CloudTrail logs.

+ *

For security purposes, administrators can view this field in CloudTrail logs to help identify who performed an action in Amazon Web Services. Your + * administrator might require that you specify your user name as the session name when you + * assume the role. For more information, see + * sts:RoleSessionName + * .

+ *

The regex used to validate this parameter is a string of + * characters consisting of upper- and lower-case alphanumeric characters with no spaces. + * You can also include underscores or any of the following characters: +=,.@-

+ * @public + */ + RoleSessionName: string | undefined; + /** + *

The Amazon Resource Names (ARNs) of the IAM managed policies that you want to use as + * managed session policies. The policies must exist in the same account as the role.

+ *

This parameter is optional. You can provide up to 10 managed policy ARNs. However, the + * plaintext that you use for both inline and managed session policies can't exceed 2,048 + * characters. For more information about ARNs, see Amazon Resource Names (ARNs) and Amazon Web Services + * Service Namespaces in the Amazon Web Services General Reference.

+ * + *

An Amazon Web Services conversion compresses the passed inline session policy, managed policy ARNs, + * and session tags into a packed binary format that has a separate limit. Your request can + * fail for this limit even if your plaintext meets the other requirements. The + * PackedPolicySize response element indicates by percentage how close the + * policies and tags for your request are to the upper size limit.

+ *
+ *

Passing policies to this operation returns new + * temporary credentials. The resulting session's permissions are the intersection of the + * role's identity-based policy and the session policies. You can use the role's temporary + * credentials in subsequent Amazon Web Services API calls to access resources in the account that owns + * the role. You cannot use session policies to grant more permissions than those allowed + * by the identity-based policy of the role that is being assumed. For more information, see + * Session + * Policies in the IAM User Guide.

+ * @public + */ + PolicyArns?: PolicyDescriptorType[] | undefined; + /** + *

An IAM policy in JSON format that you want to use as an inline session policy.

+ *

This parameter is optional. Passing policies to this operation returns new + * temporary credentials. The resulting session's permissions are the intersection of the + * role's identity-based policy and the session policies. You can use the role's temporary + * credentials in subsequent Amazon Web Services API calls to access resources in the account that owns + * the role. You cannot use session policies to grant more permissions than those allowed + * by the identity-based policy of the role that is being assumed. For more information, see + * Session + * Policies in the IAM User Guide.

+ *

The plaintext that you use for both inline and managed session policies can't exceed + * 2,048 characters. The JSON policy characters can be any ASCII character from the space + * character to the end of the valid character list (\u0020 through \u00FF). It can also + * include the tab (\u0009), linefeed (\u000A), and carriage return (\u000D) + * characters.

+ * + *

An Amazon Web Services conversion compresses the passed inline session policy, managed policy ARNs, + * and session tags into a packed binary format that has a separate limit. Your request can + * fail for this limit even if your plaintext meets the other requirements. The + * PackedPolicySize response element indicates by percentage how close the + * policies and tags for your request are to the upper size limit.

+ *
+ *

For more information about role session permissions, see Session + * policies.

+ * @public + */ + Policy?: string | undefined; + /** + *

The duration, in seconds, of the role session. The value specified can range from 900 + * seconds (15 minutes) up to the maximum session duration set for the role. The maximum + * session duration setting can have a value from 1 hour to 12 hours. If you specify a value + * higher than this setting or the administrator setting (whichever is lower), the operation + * fails. For example, if you specify a session duration of 12 hours, but your administrator + * set the maximum session duration to 6 hours, your operation fails.

+ *

Role chaining limits your Amazon Web Services CLI or Amazon Web Services API role session to a maximum of one hour. + * When you use the AssumeRole API operation to assume a role, you can specify + * the duration of your role session with the DurationSeconds parameter. You can + * specify a parameter value of up to 43200 seconds (12 hours), depending on the maximum + * session duration setting for your role. However, if you assume a role using role chaining + * and provide a DurationSeconds parameter value greater than one hour, the + * operation fails. To learn how to view the maximum value for your role, see Update the maximum session duration for a role.

+ *

By default, the value is set to 3600 seconds.

+ * + *

The DurationSeconds parameter is separate from the duration of a console + * session that you might request using the returned credentials. The request to the + * federation endpoint for a console sign-in token takes a SessionDuration + * parameter that specifies the maximum length of the console session. For more + * information, see Creating a URL + * that Enables Federated Users to Access the Amazon Web Services Management Console in the + * IAM User Guide.

+ *
+ * @public + */ + DurationSeconds?: number | undefined; + /** + *

A list of session tags that you want to pass. Each session tag consists of a key name + * and an associated value. For more information about session tags, see Tagging Amazon Web Services STS + * Sessions in the IAM User Guide.

+ *

This parameter is optional. You can pass up to 50 session tags. The plaintext session + * tag keys can’t exceed 128 characters, and the values can’t exceed 256 characters. For these + * and additional limits, see IAM + * and STS Character Limits in the IAM User Guide.

+ * + *

An Amazon Web Services conversion compresses the passed inline session policy, managed policy ARNs, + * and session tags into a packed binary format that has a separate limit. Your request can + * fail for this limit even if your plaintext meets the other requirements. The + * PackedPolicySize response element indicates by percentage how close the + * policies and tags for your request are to the upper size limit.

+ *
+ *

You can pass a session tag with the same key as a tag that is already attached to the + * role. When you do, session tags override a role tag with the same key.

+ *

Tag key–value pairs are not case sensitive, but case is preserved. This means that you + * cannot have separate Department and department tag keys. Assume + * that the role has the Department=Marketing tag and you pass the + * department=engineering session tag. Department + * and department are not saved as separate tags, and the session tag passed in + * the request takes precedence over the role tag.

+ *

Additionally, if you used temporary credentials to perform this operation, the new + * session inherits any transitive session tags from the calling session. If you pass a + * session tag with the same key as an inherited tag, the operation fails. To view the + * inherited tags for a session, see the CloudTrail logs. For more information, see Viewing Session Tags in CloudTrail in the + * IAM User Guide.

+ * @public + */ + Tags?: Tag[] | undefined; + /** + *

A list of keys for session tags that you want to set as transitive. If you set a tag key + * as transitive, the corresponding key and value passes to subsequent sessions in a role + * chain. For more information, see Chaining Roles + * with Session Tags in the IAM User Guide.

+ *

This parameter is optional. The transitive status of a session tag does not impact its + * packed binary size.

+ *

If you choose not to specify a transitive tag key, then no tags are passed from this + * session to any subsequent sessions.

+ * @public + */ + TransitiveTagKeys?: string[] | undefined; + /** + *

A unique identifier that might be required when you assume a role in another account. If + * the administrator of the account to which the role belongs provided you with an external + * ID, then provide that value in the ExternalId parameter. This value can be any + * string, such as a passphrase or account number. A cross-account role is usually set up to + * trust everyone in an account. Therefore, the administrator of the trusting account might + * send an external ID to the administrator of the trusted account. That way, only someone + * with the ID can assume the role, rather than everyone in the account. For more information + * about the external ID, see How to Use an External ID + * When Granting Access to Your Amazon Web Services Resources to a Third Party in the + * IAM User Guide.

+ *

The regex used to validate this parameter is a string of + * characters consisting of upper- and lower-case alphanumeric characters with no spaces. + * You can also include underscores or any of the following characters: +=,.@:\/-

+ * @public + */ + ExternalId?: string | undefined; + /** + *

The identification number of the MFA device that is associated with the user who is + * making the AssumeRole call. Specify this value if the trust policy of the role + * being assumed includes a condition that requires MFA authentication. The value is either + * the serial number for a hardware device (such as GAHT12345678) or an Amazon + * Resource Name (ARN) for a virtual device (such as + * arn:aws:iam::123456789012:mfa/user).

+ *

The regex used to validate this parameter is a string of + * characters consisting of upper- and lower-case alphanumeric characters with no spaces. + * You can also include underscores or any of the following characters: +=/:,.@-

+ * @public + */ + SerialNumber?: string | undefined; + /** + *

The value provided by the MFA device, if the trust policy of the role being assumed + * requires MFA. (In other words, if the policy includes a condition that tests for MFA). If + * the role being assumed requires MFA and if the TokenCode value is missing or + * expired, the AssumeRole call returns an "access denied" error.

+ *

The format for this parameter, as described by its regex pattern, is a sequence of six + * numeric digits.

+ * @public + */ + TokenCode?: string | undefined; + /** + *

The source identity specified by the principal that is calling the + * AssumeRole operation. The source identity value persists across chained role sessions.

+ *

You can require users to specify a source identity when they assume a role. You do this + * by using the + * sts:SourceIdentity + * condition key in a role trust policy. You + * can use source identity information in CloudTrail logs to determine who took actions with a + * role. You can use the aws:SourceIdentity condition key to further control + * access to Amazon Web Services resources based on the value of source identity. For more information about + * using source identity, see Monitor and control + * actions taken with assumed roles in the + * IAM User Guide.

+ *

The regex used to validate this parameter is a string of characters consisting of upper- + * and lower-case alphanumeric characters with no spaces. You can also include underscores or + * any of the following characters: +=,.@-. You cannot use a value that begins with the text + * aws:. This prefix is reserved for Amazon Web Services internal use.

+ * @public + */ + SourceIdentity?: string | undefined; + /** + *

A list of previously acquired trusted context assertions in the format of a JSON array. + * The trusted context assertion is signed and encrypted by Amazon Web Services STS.

+ *

The following is an example of a ProvidedContext value that includes a + * single trusted context assertion and the ARN of the context provider from which the trusted + * context assertion was generated.

+ *

+ * [\{"ProviderArn":"arn:aws:iam::aws:contextProvider/IdentityCenter","ContextAssertion":"trusted-context-assertion"\}] + *

+ * @public + */ + ProvidedContexts?: ProvidedContext[] | undefined; +} +/** + *

Amazon Web Services credentials for API authentication.

+ * @public + */ +export interface Credentials { + /** + *

The access key ID that identifies the temporary security credentials.

+ * @public + */ + AccessKeyId: string | undefined; + /** + *

The secret access key that can be used to sign requests.

+ * @public + */ + SecretAccessKey: string | undefined; + /** + *

The token that users must pass to the service API to use the temporary + * credentials.

+ * @public + */ + SessionToken: string | undefined; + /** + *

The date on which the current credentials expire.

+ * @public + */ + Expiration: Date | undefined; +} +/** + *

Contains the response to a successful AssumeRole request, including + * temporary Amazon Web Services credentials that can be used to make Amazon Web Services requests.

+ * @public + */ +export interface AssumeRoleResponse { + /** + *

The temporary security credentials, which include an access key ID, a secret access key, + * and a security (or session) token.

+ * + *

The size of the security token that STS API operations return is not fixed. We + * strongly recommend that you make no assumptions about the maximum size.

+ *
+ * @public + */ + Credentials?: Credentials | undefined; + /** + *

The Amazon Resource Name (ARN) and the assumed role ID, which are identifiers that you + * can use to refer to the resulting temporary security credentials. For example, you can + * reference these credentials as a principal in a resource-based policy by using the ARN or + * assumed role ID. The ARN and ID include the RoleSessionName that you specified + * when you called AssumeRole.

+ * @public + */ + AssumedRoleUser?: AssumedRoleUser | undefined; + /** + *

A percentage value that indicates the packed size of the session policies and session + * tags combined passed in the request. The request fails if the packed size is greater than 100 percent, + * which means the policies and tags exceeded the allowed space.

+ * @public + */ + PackedPolicySize?: number | undefined; + /** + *

The source identity specified by the principal that is calling the + * AssumeRole operation.

+ *

You can require users to specify a source identity when they assume a role. You do this + * by using the sts:SourceIdentity condition key in a role trust policy. You can + * use source identity information in CloudTrail logs to determine who took actions with a role. + * You can use the aws:SourceIdentity condition key to further control access to + * Amazon Web Services resources based on the value of source identity. For more information about using + * source identity, see Monitor and control + * actions taken with assumed roles in the + * IAM User Guide.

+ *

The regex used to validate this parameter is a string of characters consisting of upper- + * and lower-case alphanumeric characters with no spaces. You can also include underscores or + * any of the following characters: =,.@-

+ * @public + */ + SourceIdentity?: string | undefined; +} +/** + * @public + */ +export interface AssumeRoleWithWebIdentityRequest { + /** + *

The Amazon Resource Name (ARN) of the role that the caller is assuming.

+ * + *

Additional considerations apply to Amazon Cognito identity pools that assume cross-account IAM roles. The trust policies of these roles must accept the + * cognito-identity.amazonaws.com service principal and must contain the + * cognito-identity.amazonaws.com:aud condition key to restrict role + * assumption to users from your intended identity pools. A policy that trusts Amazon Cognito + * identity pools without this condition creates a risk that a user from an unintended + * identity pool can assume the role. For more information, see Trust policies for + * IAM roles in Basic (Classic) authentication in the Amazon Cognito + * Developer Guide.

+ *
+ * @public + */ + RoleArn: string | undefined; + /** + *

An identifier for the assumed role session. Typically, you pass the name or identifier + * that is associated with the user who is using your application. That way, the temporary + * security credentials that your application will use are associated with that user. This + * session name is included as part of the ARN and assumed role ID in the + * AssumedRoleUser response element.

+ *

For security purposes, administrators can view this field in CloudTrail logs to help identify who performed an action in Amazon Web Services. Your + * administrator might require that you specify your user name as the session name when you + * assume the role. For more information, see + * sts:RoleSessionName + * .

+ *

The regex used to validate this parameter is a string of characters + * consisting of upper- and lower-case alphanumeric characters with no spaces. You can + * also include underscores or any of the following characters: =,.@-

+ * @public + */ + RoleSessionName: string | undefined; + /** + *

The OAuth 2.0 access token or OpenID Connect ID token that is provided by the identity + * provider. Your application must get this token by authenticating the user who is using your + * application with a web identity provider before the application makes an + * AssumeRoleWithWebIdentity call. Timestamps in the token must be formatted + * as either an integer or a long integer. Tokens must be signed using either RSA keys (RS256, + * RS384, or RS512) or ECDSA keys (ES256, ES384, or ES512).

+ * @public + */ + WebIdentityToken: string | undefined; + /** + *

The fully qualified host component of the domain name of the OAuth 2.0 identity + * provider. Do not specify this value for an OpenID Connect identity provider.

+ *

Currently www.amazon.com and graph.facebook.com are the only + * supported identity providers for OAuth 2.0 access tokens. Do not include URL schemes and + * port numbers.

+ *

Do not specify this value for OpenID Connect ID tokens.

+ * @public + */ + ProviderId?: string | undefined; + /** + *

The Amazon Resource Names (ARNs) of the IAM managed policies that you want to use as + * managed session policies. The policies must exist in the same account as the role.

+ *

This parameter is optional. You can provide up to 10 managed policy ARNs. However, the + * plaintext that you use for both inline and managed session policies can't exceed 2,048 + * characters. For more information about ARNs, see Amazon Resource Names (ARNs) and Amazon Web Services + * Service Namespaces in the Amazon Web Services General Reference.

+ * + *

An Amazon Web Services conversion compresses the passed inline session policy, managed policy ARNs, + * and session tags into a packed binary format that has a separate limit. Your request can + * fail for this limit even if your plaintext meets the other requirements. The + * PackedPolicySize response element indicates by percentage how close the + * policies and tags for your request are to the upper size limit.

+ *
+ *

Passing policies to this operation returns new + * temporary credentials. The resulting session's permissions are the intersection of the + * role's identity-based policy and the session policies. You can use the role's temporary + * credentials in subsequent Amazon Web Services API calls to access resources in the account that owns + * the role. You cannot use session policies to grant more permissions than those allowed + * by the identity-based policy of the role that is being assumed. For more information, see + * Session + * Policies in the IAM User Guide.

+ * @public + */ + PolicyArns?: PolicyDescriptorType[] | undefined; + /** + *

An IAM policy in JSON format that you want to use as an inline session policy.

+ *

This parameter is optional. Passing policies to this operation returns new + * temporary credentials. The resulting session's permissions are the intersection of the + * role's identity-based policy and the session policies. You can use the role's temporary + * credentials in subsequent Amazon Web Services API calls to access resources in the account that owns + * the role. You cannot use session policies to grant more permissions than those allowed + * by the identity-based policy of the role that is being assumed. For more information, see + * Session + * Policies in the IAM User Guide.

+ *

The plaintext that you use for both inline and managed session policies can't exceed + * 2,048 characters. The JSON policy characters can be any ASCII character from the space + * character to the end of the valid character list (\u0020 through \u00FF). It can also + * include the tab (\u0009), linefeed (\u000A), and carriage return (\u000D) + * characters.

+ *

For more information about role session permissions, see Session + * policies.

+ * + *

An Amazon Web Services conversion compresses the passed inline session policy, managed policy ARNs, + * and session tags into a packed binary format that has a separate limit. Your request can + * fail for this limit even if your plaintext meets the other requirements. The + * PackedPolicySize response element indicates by percentage how close the + * policies and tags for your request are to the upper size limit.

+ *
+ * @public + */ + Policy?: string | undefined; + /** + *

The duration, in seconds, of the role session. The value can range from 900 seconds (15 + * minutes) up to the maximum session duration setting for the role. This setting can have a + * value from 1 hour to 12 hours. If you specify a value higher than this setting, the + * operation fails. For example, if you specify a session duration of 12 hours, but your + * administrator set the maximum session duration to 6 hours, your operation fails. To learn + * how to view the maximum value for your role, see View the + * Maximum Session Duration Setting for a Role in the + * IAM User Guide.

+ *

By default, the value is set to 3600 seconds.

+ * + *

The DurationSeconds parameter is separate from the duration of a console + * session that you might request using the returned credentials. The request to the + * federation endpoint for a console sign-in token takes a SessionDuration + * parameter that specifies the maximum length of the console session. For more + * information, see Creating a URL + * that Enables Federated Users to Access the Amazon Web Services Management Console in the + * IAM User Guide.

+ *
+ * @public + */ + DurationSeconds?: number | undefined; +} +/** + *

Contains the response to a successful AssumeRoleWithWebIdentity + * request, including temporary Amazon Web Services credentials that can be used to make Amazon Web Services requests.

+ * @public + */ +export interface AssumeRoleWithWebIdentityResponse { + /** + *

The temporary security credentials, which include an access key ID, a secret access key, + * and a security token.

+ * + *

The size of the security token that STS API operations return is not fixed. We + * strongly recommend that you make no assumptions about the maximum size.

+ *
+ * @public + */ + Credentials?: Credentials | undefined; + /** + *

The unique user identifier that is returned by the identity provider. This identifier is + * associated with the WebIdentityToken that was submitted with the + * AssumeRoleWithWebIdentity call. The identifier is typically unique to the + * user and the application that acquired the WebIdentityToken (pairwise + * identifier). For OpenID Connect ID tokens, this field contains the value returned by the + * identity provider as the token's sub (Subject) claim.

+ * @public + */ + SubjectFromWebIdentityToken?: string | undefined; + /** + *

The Amazon Resource Name (ARN) and the assumed role ID, which are identifiers that you + * can use to refer to the resulting temporary security credentials. For example, you can + * reference these credentials as a principal in a resource-based policy by using the ARN or + * assumed role ID. The ARN and ID include the RoleSessionName that you specified + * when you called AssumeRole.

+ * @public + */ + AssumedRoleUser?: AssumedRoleUser | undefined; + /** + *

A percentage value that indicates the packed size of the session policies and session + * tags combined passed in the request. The request fails if the packed size is greater than 100 percent, + * which means the policies and tags exceeded the allowed space.

+ * @public + */ + PackedPolicySize?: number | undefined; + /** + *

The issuing authority of the web identity token presented. For OpenID Connect ID + * tokens, this contains the value of the iss field. For OAuth 2.0 access tokens, + * this contains the value of the ProviderId parameter that was passed in the + * AssumeRoleWithWebIdentity request.

+ * @public + */ + Provider?: string | undefined; + /** + *

The intended audience (also known as client ID) of the web identity token. This is + * traditionally the client identifier issued to the application that requested the web + * identity token.

+ * @public + */ + Audience?: string | undefined; + /** + *

The value of the source identity that is returned in the JSON web token (JWT) from the + * identity provider.

+ *

You can require users to set a source identity value when they assume a role. You do + * this by using the sts:SourceIdentity condition key in a role trust policy. + * That way, actions that are taken with the role are associated with that user. After the + * source identity is set, the value cannot be changed. It is present in the request for all + * actions that are taken by the role and persists across chained role + * sessions. You can configure your identity provider to use an attribute associated with your + * users, like user name or email, as the source identity when calling + * AssumeRoleWithWebIdentity. You do this by adding a claim to the JSON web + * token. To learn more about OIDC tokens and claims, see Using Tokens with User Pools in the Amazon Cognito Developer Guide. + * For more information about using source identity, see Monitor and control + * actions taken with assumed roles in the + * IAM User Guide.

+ *

The regex used to validate this parameter is a string of characters + * consisting of upper- and lower-case alphanumeric characters with no spaces. You can + * also include underscores or any of the following characters: =,.@-

+ * @public + */ + SourceIdentity?: string | undefined; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.browser.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.browser.d.ts new file mode 100644 index 000000000..9f103f33c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.browser.d.ts @@ -0,0 +1,64 @@ +import { FetchHttpHandler as RequestHandler } from "@smithy/fetch-http-handler"; +import type { STSClientConfig } from "./STSClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: STSClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + credentialDefaultProvider: ((input: any) => import("@smithy/types").AwsCredentialIdentityProvider) | ((_: unknown) => () => Promise); + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: import("@smithy/protocol-http").HttpHandler | RequestHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + cacheMiddleware?: boolean | undefined; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/core").AwsQueryProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: string | undefined | import("@smithy/types").Provider; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (params: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + })[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").STSHttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner; + useGlobalEndpoint?: boolean | undefined | import("@smithy/types").Provider; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.d.ts new file mode 100644 index 000000000..58171b8b6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.d.ts @@ -0,0 +1,62 @@ +import { NoAuthSigner } from "@smithy/core"; +import { NodeHttpHandler as RequestHandler } from "@smithy/node-http-handler"; +import type { IdentityProviderConfig } from "@smithy/types"; +import type { STSClientConfig } from "./STSClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: STSClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider; + authSchemePreference: string[] | import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-node").PreviouslyResolved) => Promise; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | { + schemeId: string; + identityProvider: (ipc: IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: NoAuthSigner; + }[]; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: RequestHandler | import("@smithy/protocol-http").HttpHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: boolean | import("@smithy/types").Provider; + useFipsEndpoint: boolean | import("@smithy/types").Provider; + userAgentAppId: string | import("@smithy/types").Provider; + cacheMiddleware?: boolean | undefined; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/core").AwsQueryProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + credentialDefaultProvider?: (input: any) => import("@smithy/types").AwsCredentialIdentityProvider; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (params: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").STSHttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner; + useGlobalEndpoint?: boolean | undefined | import("@smithy/types").Provider; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.native.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.native.d.ts new file mode 100644 index 000000000..eeb60cdfd --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.native.d.ts @@ -0,0 +1,63 @@ +import type { STSClientConfig } from "./STSClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: STSClientConfig) => { + runtime: string; + sha256: import("@smithy/types").HashConstructor; + requestHandler: import("@smithy/types").NodeHttpHandlerOptions | import("@smithy/types").FetchHttpHandlerOptions | Record | import("@smithy/protocol-http").HttpHandler | import("@smithy/fetch-http-handler").FetchHttpHandler; + cacheMiddleware?: boolean; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/core").AwsQueryProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + streamCollector: import("@smithy/types").StreamCollector; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + region: string | import("@smithy/types").Provider; + profile?: string; + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved) => Promise; + credentialDefaultProvider: ((input: any) => import("@smithy/types").AwsCredentialIdentityProvider) | ((_: unknown) => () => Promise); + maxAttempts: number | import("@smithy/types").Provider; + retryMode: string | import("@smithy/types").Provider; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + defaultsMode: import("@smithy/smithy-client").DefaultsMode | import("@smithy/types").Provider; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: string | undefined | import("@smithy/types").Provider; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (params: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + })[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").STSHttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner; + useGlobalEndpoint?: boolean | undefined | import("@smithy/types").Provider; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.shared.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.shared.d.ts new file mode 100644 index 000000000..3ae833c84 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.shared.d.ts @@ -0,0 +1,38 @@ +import { AwsSdkSigV4Signer } from "@aws-sdk/core"; +import { AwsQueryProtocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; +import type { IdentityProviderConfig } from "@smithy/types"; +import type { STSClientConfig } from "./STSClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: STSClientConfig) => { + apiVersion: string; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + disableHostPrefix: boolean; + endpointProvider: (params: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").STSHttpAuthSchemeProvider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: NoAuthSigner; + })[]; + logger: import("@smithy/types").Logger; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof AwsQueryProtocol; + protocolSettings: { + [setting: string]: unknown; + defaultNamespace?: string; + }; + serviceId: string; + urlParser: import("@smithy/types").UrlParser; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeExtensions.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeExtensions.d.ts new file mode 100644 index 000000000..8b34a63c0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeExtensions.d.ts @@ -0,0 +1,17 @@ +import type { STSExtensionConfiguration } from "./extensionConfiguration"; +/** + * @public + */ +export interface RuntimeExtension { + configure(extensionConfiguration: STSExtensionConfiguration): void; +} +/** + * @public + */ +export interface RuntimeExtensionsConfig { + extensions: RuntimeExtension[]; +} +/** + * @internal + */ +export declare const resolveRuntimeExtensions: (runtimeConfig: any, extensions: RuntimeExtension[]) => any; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/schemas/schemas_0.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/schemas/schemas_0.d.ts new file mode 100644 index 000000000..e8f1d2f5d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/schemas/schemas_0.d.ts @@ -0,0 +1,27 @@ +import { TypeRegistry } from "@smithy/core/schema"; +import type { StaticErrorSchema, StaticOperationSchema, StaticStructureSchema } from "@smithy/types"; +export declare var STSServiceException$: StaticErrorSchema; +export declare var ExpiredTokenException$: StaticErrorSchema; +export declare var IDPCommunicationErrorException$: StaticErrorSchema; +export declare var IDPRejectedClaimException$: StaticErrorSchema; +export declare var InvalidIdentityTokenException$: StaticErrorSchema; +export declare var MalformedPolicyDocumentException$: StaticErrorSchema; +export declare var PackedPolicyTooLargeException$: StaticErrorSchema; +export declare var RegionDisabledException$: StaticErrorSchema; +/** + * TypeRegistry instances containing modeled errors. + * @internal + * + */ +export declare const errorTypeRegistries: TypeRegistry[]; +export declare var AssumedRoleUser$: StaticStructureSchema; +export declare var AssumeRoleRequest$: StaticStructureSchema; +export declare var AssumeRoleResponse$: StaticStructureSchema; +export declare var AssumeRoleWithWebIdentityRequest$: StaticStructureSchema; +export declare var AssumeRoleWithWebIdentityResponse$: StaticStructureSchema; +export declare var Credentials$: StaticStructureSchema; +export declare var PolicyDescriptorType$: StaticStructureSchema; +export declare var ProvidedContext$: StaticStructureSchema; +export declare var Tag$: StaticStructureSchema; +export declare var AssumeRole$: StaticOperationSchema; +export declare var AssumeRoleWithWebIdentity$: StaticOperationSchema; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/CognitoIdentity.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/CognitoIdentity.d.ts new file mode 100644 index 000000000..7749e205d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/CognitoIdentity.d.ts @@ -0,0 +1,38 @@ +import { HttpHandlerOptions as __HttpHandlerOptions } from "@smithy/types"; +import { CognitoIdentityClient } from "./CognitoIdentityClient"; +import { + GetCredentialsForIdentityCommandInput, + GetCredentialsForIdentityCommandOutput, +} from "./commands/GetCredentialsForIdentityCommand"; +import { GetIdCommandInput, GetIdCommandOutput } from "./commands/GetIdCommand"; +export interface CognitoIdentity { + getCredentialsForIdentity( + args: GetCredentialsForIdentityCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getCredentialsForIdentity( + args: GetCredentialsForIdentityCommandInput, + cb: (err: any, data?: GetCredentialsForIdentityCommandOutput) => void + ): void; + getCredentialsForIdentity( + args: GetCredentialsForIdentityCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetCredentialsForIdentityCommandOutput) => void + ): void; + getId( + args: GetIdCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getId( + args: GetIdCommandInput, + cb: (err: any, data?: GetIdCommandOutput) => void + ): void; + getId( + args: GetIdCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetIdCommandOutput) => void + ): void; +} +export declare class CognitoIdentity + extends CognitoIdentityClient + implements CognitoIdentity {} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/CognitoIdentityClient.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/CognitoIdentityClient.d.ts new file mode 100644 index 000000000..a7a2a2a8c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/CognitoIdentityClient.d.ts @@ -0,0 +1,126 @@ +import { + HostHeaderInputConfig, + HostHeaderResolvedConfig, +} from "@aws-sdk/middleware-host-header"; +import { + UserAgentInputConfig, + UserAgentResolvedConfig, +} from "@aws-sdk/middleware-user-agent"; +import { + RegionInputConfig, + RegionResolvedConfig, +} from "@smithy/config-resolver"; +import { + EndpointInputConfig, + EndpointResolvedConfig, +} from "@smithy/middleware-endpoint"; +import { + RetryInputConfig, + RetryResolvedConfig, +} from "@smithy/middleware-retry"; +import { HttpHandlerUserInput as __HttpHandlerUserInput } from "@smithy/protocol-http"; +import { + DefaultsMode as __DefaultsMode, + SmithyConfiguration as __SmithyConfiguration, + SmithyResolvedConfiguration as __SmithyResolvedConfiguration, + Client as __Client, +} from "@smithy/smithy-client"; +import { Provider, UserAgent as __UserAgent } from "@smithy/types"; +import { + BodyLengthCalculator as __BodyLengthCalculator, + CheckOptionalClientConfig as __CheckOptionalClientConfig, + ChecksumConstructor as __ChecksumConstructor, + Decoder as __Decoder, + Encoder as __Encoder, + HashConstructor as __HashConstructor, + HttpHandlerOptions as __HttpHandlerOptions, + Logger as __Logger, + Provider as __Provider, + StreamCollector as __StreamCollector, + UrlParser as __UrlParser, +} from "@smithy/types"; +import { + HttpAuthSchemeInputConfig, + HttpAuthSchemeResolvedConfig, +} from "./auth/httpAuthSchemeProvider"; +import { + GetCredentialsForIdentityCommandInput, + GetCredentialsForIdentityCommandOutput, +} from "./commands/GetCredentialsForIdentityCommand"; +import { GetIdCommandInput, GetIdCommandOutput } from "./commands/GetIdCommand"; +import { + ClientInputEndpointParameters, + ClientResolvedEndpointParameters, + EndpointParameters, +} from "./endpoint/EndpointParameters"; +import { RuntimeExtension, RuntimeExtensionsConfig } from "./runtimeExtensions"; +export { __Client }; +export type ServiceInputTypes = + | GetCredentialsForIdentityCommandInput + | GetIdCommandInput; +export type ServiceOutputTypes = + | GetCredentialsForIdentityCommandOutput + | GetIdCommandOutput; +export interface ClientDefaults + extends Partial<__SmithyConfiguration<__HttpHandlerOptions>> { + requestHandler?: __HttpHandlerUserInput; + sha256?: __ChecksumConstructor | __HashConstructor; + urlParser?: __UrlParser; + bodyLengthChecker?: __BodyLengthCalculator; + streamCollector?: __StreamCollector; + base64Decoder?: __Decoder; + base64Encoder?: __Encoder; + utf8Decoder?: __Decoder; + utf8Encoder?: __Encoder; + runtime?: string; + disableHostPrefix?: boolean; + serviceId?: string; + useDualstackEndpoint?: boolean | __Provider; + useFipsEndpoint?: boolean | __Provider; + region?: string | __Provider; + profile?: string; + defaultUserAgentProvider?: Provider<__UserAgent>; + maxAttempts?: number | __Provider; + retryMode?: string | __Provider; + logger?: __Logger; + extensions?: RuntimeExtension[]; + defaultsMode?: __DefaultsMode | __Provider<__DefaultsMode>; +} +export type CognitoIdentityClientConfigType = Partial< + __SmithyConfiguration<__HttpHandlerOptions> +> & + ClientDefaults & + UserAgentInputConfig & + RetryInputConfig & + RegionInputConfig & + HostHeaderInputConfig & + EndpointInputConfig & + HttpAuthSchemeInputConfig & + ClientInputEndpointParameters; +export interface CognitoIdentityClientConfig + extends CognitoIdentityClientConfigType {} +export type CognitoIdentityClientResolvedConfigType = + __SmithyResolvedConfiguration<__HttpHandlerOptions> & + Required & + RuntimeExtensionsConfig & + UserAgentResolvedConfig & + RetryResolvedConfig & + RegionResolvedConfig & + HostHeaderResolvedConfig & + EndpointResolvedConfig & + HttpAuthSchemeResolvedConfig & + ClientResolvedEndpointParameters; +export interface CognitoIdentityClientResolvedConfig + extends CognitoIdentityClientResolvedConfigType {} +export declare class CognitoIdentityClient extends __Client< + __HttpHandlerOptions, + ServiceInputTypes, + ServiceOutputTypes, + CognitoIdentityClientResolvedConfig +> { + readonly config: CognitoIdentityClientResolvedConfig; + constructor( + ...[configuration]: __CheckOptionalClientConfig + ); + destroy(): void; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/auth/httpAuthExtensionConfiguration.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/auth/httpAuthExtensionConfiguration.d.ts new file mode 100644 index 000000000..a09a8c9d1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/auth/httpAuthExtensionConfiguration.d.ts @@ -0,0 +1,32 @@ +import { + AwsCredentialIdentity, + AwsCredentialIdentityProvider, +} from "@smithy/types"; +import { HttpAuthScheme } from "@smithy/types"; +import { CognitoIdentityHttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; +export interface HttpAuthExtensionConfiguration { + setHttpAuthScheme(httpAuthScheme: HttpAuthScheme): void; + httpAuthSchemes(): HttpAuthScheme[]; + setHttpAuthSchemeProvider( + httpAuthSchemeProvider: CognitoIdentityHttpAuthSchemeProvider + ): void; + httpAuthSchemeProvider(): CognitoIdentityHttpAuthSchemeProvider; + setCredentials( + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider + ): void; + credentials(): + | AwsCredentialIdentity + | AwsCredentialIdentityProvider + | undefined; +} +export type HttpAuthRuntimeConfig = Partial<{ + httpAuthSchemes: HttpAuthScheme[]; + httpAuthSchemeProvider: CognitoIdentityHttpAuthSchemeProvider; + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider; +}>; +export declare const getHttpAuthExtensionConfiguration: ( + runtimeConfig: HttpAuthRuntimeConfig +) => HttpAuthExtensionConfiguration; +export declare const resolveHttpAuthRuntimeConfig: ( + config: HttpAuthExtensionConfiguration +) => HttpAuthRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/auth/httpAuthSchemeProvider.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/auth/httpAuthSchemeProvider.d.ts new file mode 100644 index 000000000..8b4bb087d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/auth/httpAuthSchemeProvider.d.ts @@ -0,0 +1,47 @@ +import { + AwsSdkSigV4AuthInputConfig, + AwsSdkSigV4AuthResolvedConfig, + AwsSdkSigV4PreviouslyResolved, +} from "@aws-sdk/core"; +import { + HandlerExecutionContext, + HttpAuthScheme, + HttpAuthSchemeParameters, + HttpAuthSchemeParametersProvider, + HttpAuthSchemeProvider, + Provider, +} from "@smithy/types"; +import { CognitoIdentityClientResolvedConfig } from "../CognitoIdentityClient"; +export interface CognitoIdentityHttpAuthSchemeParameters + extends HttpAuthSchemeParameters { + region?: string; +} +export interface CognitoIdentityHttpAuthSchemeParametersProvider + extends HttpAuthSchemeParametersProvider< + CognitoIdentityClientResolvedConfig, + HandlerExecutionContext, + CognitoIdentityHttpAuthSchemeParameters, + object + > {} +export declare const defaultCognitoIdentityHttpAuthSchemeParametersProvider: ( + config: CognitoIdentityClientResolvedConfig, + context: HandlerExecutionContext, + input: object +) => Promise; +export interface CognitoIdentityHttpAuthSchemeProvider + extends HttpAuthSchemeProvider {} +export declare const defaultCognitoIdentityHttpAuthSchemeProvider: CognitoIdentityHttpAuthSchemeProvider; +export interface HttpAuthSchemeInputConfig extends AwsSdkSigV4AuthInputConfig { + authSchemePreference?: string[] | Provider; + httpAuthSchemes?: HttpAuthScheme[]; + httpAuthSchemeProvider?: CognitoIdentityHttpAuthSchemeProvider; +} +export interface HttpAuthSchemeResolvedConfig + extends AwsSdkSigV4AuthResolvedConfig { + readonly authSchemePreference: Provider; + readonly httpAuthSchemes: HttpAuthScheme[]; + readonly httpAuthSchemeProvider: CognitoIdentityHttpAuthSchemeProvider; +} +export declare const resolveHttpAuthSchemeConfig: ( + config: T & HttpAuthSchemeInputConfig & AwsSdkSigV4PreviouslyResolved +) => T & HttpAuthSchemeResolvedConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/commands/GetCredentialsForIdentityCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/commands/GetCredentialsForIdentityCommand.d.ts new file mode 100644 index 000000000..9270d7e2e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/commands/GetCredentialsForIdentityCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../CognitoIdentityClient"; +import { + GetCredentialsForIdentityInput, + GetCredentialsForIdentityResponse, +} from "../models/models_0"; +export { __MetadataBearer }; +export { $Command }; +export interface GetCredentialsForIdentityCommandInput + extends GetCredentialsForIdentityInput {} +export interface GetCredentialsForIdentityCommandOutput + extends GetCredentialsForIdentityResponse, + __MetadataBearer {} +declare const GetCredentialsForIdentityCommand_base: { + new ( + input: GetCredentialsForIdentityCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetCredentialsForIdentityCommandInput, + GetCredentialsForIdentityCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetCredentialsForIdentityCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetCredentialsForIdentityCommandInput, + GetCredentialsForIdentityCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetCredentialsForIdentityCommand extends GetCredentialsForIdentityCommand_base { + protected static __types: { + api: { + input: GetCredentialsForIdentityInput; + output: GetCredentialsForIdentityResponse; + }; + sdk: { + input: GetCredentialsForIdentityCommandInput; + output: GetCredentialsForIdentityCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/commands/GetIdCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/commands/GetIdCommand.d.ts new file mode 100644 index 000000000..f57d0c7c8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/commands/GetIdCommand.d.ts @@ -0,0 +1,41 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../CognitoIdentityClient"; +import { GetIdInput, GetIdResponse } from "../models/models_0"; +export { __MetadataBearer }; +export { $Command }; +export interface GetIdCommandInput extends GetIdInput {} +export interface GetIdCommandOutput extends GetIdResponse, __MetadataBearer {} +declare const GetIdCommand_base: { + new (input: GetIdCommandInput): import("@smithy/smithy-client").CommandImpl< + GetIdCommandInput, + GetIdCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new (input: GetIdCommandInput): import("@smithy/smithy-client").CommandImpl< + GetIdCommandInput, + GetIdCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetIdCommand extends GetIdCommand_base { + protected static __types: { + api: { + input: GetIdInput; + output: GetIdResponse; + }; + sdk: { + input: GetIdCommandInput; + output: GetIdCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/commands/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/commands/index.d.ts new file mode 100644 index 000000000..dc560a4f9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/commands/index.d.ts @@ -0,0 +1,2 @@ +export * from "./GetCredentialsForIdentityCommand"; +export * from "./GetIdCommand"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/endpoint/EndpointParameters.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/endpoint/EndpointParameters.d.ts new file mode 100644 index 000000000..c4baac5c4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/endpoint/EndpointParameters.d.ts @@ -0,0 +1,51 @@ +import { + Endpoint, + EndpointParameters as __EndpointParameters, + EndpointV2, + Provider, +} from "@smithy/types"; +export interface ClientInputEndpointParameters { + region?: string | undefined | Provider; + useDualstackEndpoint?: boolean | undefined | Provider; + useFipsEndpoint?: boolean | undefined | Provider; + endpoint?: + | string + | Provider + | Endpoint + | Provider + | EndpointV2 + | Provider; +} +export type ClientResolvedEndpointParameters = Pick< + ClientInputEndpointParameters, + Exclude +> & { + defaultSigningName: string; +}; +export declare const resolveClientEndpointParameters: ( + options: T & ClientInputEndpointParameters +) => T & ClientResolvedEndpointParameters; +export declare const commonParams: { + readonly UseFIPS: { + readonly type: "builtInParams"; + readonly name: "useFipsEndpoint"; + }; + readonly Endpoint: { + readonly type: "builtInParams"; + readonly name: "endpoint"; + }; + readonly Region: { + readonly type: "builtInParams"; + readonly name: "region"; + }; + readonly UseDualStack: { + readonly type: "builtInParams"; + readonly name: "useDualstackEndpoint"; + }; +}; +export interface EndpointParameters extends __EndpointParameters { + Region?: string | undefined; + UseDualStack?: boolean | undefined; + UseFIPS?: boolean | undefined; + Endpoint?: string | undefined; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/endpoint/endpointResolver.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/endpoint/endpointResolver.d.ts new file mode 100644 index 000000000..590992544 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/endpoint/endpointResolver.d.ts @@ -0,0 +1,8 @@ +import { EndpointV2, Logger } from "@smithy/types"; +import { EndpointParameters } from "./EndpointParameters"; +export declare const defaultEndpointResolver: ( + endpointParams: EndpointParameters, + context?: { + logger?: Logger; + } +) => EndpointV2; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/endpoint/ruleset.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/endpoint/ruleset.d.ts new file mode 100644 index 000000000..4b238994b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/endpoint/ruleset.d.ts @@ -0,0 +1,2 @@ +import { RuleSetObject } from "@smithy/types"; +export declare const ruleSet: RuleSetObject; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/extensionConfiguration.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/extensionConfiguration.d.ts new file mode 100644 index 000000000..956fdc271 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/extensionConfiguration.d.ts @@ -0,0 +1,9 @@ +import { AwsRegionExtensionConfiguration } from "@aws-sdk/types"; +import { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; +import { DefaultExtensionConfiguration } from "@smithy/types"; +import { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; +export interface CognitoIdentityExtensionConfiguration + extends HttpHandlerExtensionConfiguration, + DefaultExtensionConfiguration, + AwsRegionExtensionConfiguration, + HttpAuthExtensionConfiguration {} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/index.d.ts new file mode 100644 index 000000000..1e774d9ca --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/index.d.ts @@ -0,0 +1,10 @@ +export * from "./CognitoIdentityClient"; +export * from "./CognitoIdentity"; +export { ClientInputEndpointParameters } from "./endpoint/EndpointParameters"; +export { RuntimeExtension } from "./runtimeExtensions"; +export { CognitoIdentityExtensionConfiguration } from "./extensionConfiguration"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./models/errors"; +export * from "./models/models_0"; +export { CognitoIdentityServiceException } from "./models/CognitoIdentityServiceException"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/models/CognitoIdentityServiceException.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/models/CognitoIdentityServiceException.d.ts new file mode 100644 index 000000000..ba28be39c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/models/CognitoIdentityServiceException.d.ts @@ -0,0 +1,9 @@ +import { + ServiceExceptionOptions as __ServiceExceptionOptions, + ServiceException as __ServiceException, +} from "@smithy/smithy-client"; +export { __ServiceExceptionOptions }; +export { __ServiceException }; +export declare class CognitoIdentityServiceException extends __ServiceException { + constructor(options: __ServiceExceptionOptions); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/models/errors.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/models/errors.d.ts new file mode 100644 index 000000000..34d67d46f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/models/errors.d.ts @@ -0,0 +1,68 @@ +import { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; +import { CognitoIdentityServiceException as __BaseException } from "./CognitoIdentityServiceException"; +export declare class ExternalServiceException extends __BaseException { + readonly name: "ExternalServiceException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class InternalErrorException extends __BaseException { + readonly name: "InternalErrorException"; + readonly $fault: "server"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class InvalidIdentityPoolConfigurationException extends __BaseException { + readonly name: "InvalidIdentityPoolConfigurationException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType< + InvalidIdentityPoolConfigurationException, + __BaseException + > + ); +} +export declare class InvalidParameterException extends __BaseException { + readonly name: "InvalidParameterException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class NotAuthorizedException extends __BaseException { + readonly name: "NotAuthorizedException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class ResourceConflictException extends __BaseException { + readonly name: "ResourceConflictException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class ResourceNotFoundException extends __BaseException { + readonly name: "ResourceNotFoundException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class TooManyRequestsException extends __BaseException { + readonly name: "TooManyRequestsException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class LimitExceededException extends __BaseException { + readonly name: "LimitExceededException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/models/models_0.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/models/models_0.d.ts new file mode 100644 index 000000000..7ef0c1f09 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/models/models_0.d.ts @@ -0,0 +1,23 @@ +export interface GetCredentialsForIdentityInput { + IdentityId: string | undefined; + Logins?: Record | undefined; + CustomRoleArn?: string | undefined; +} +export interface Credentials { + AccessKeyId?: string | undefined; + SecretKey?: string | undefined; + SessionToken?: string | undefined; + Expiration?: Date | undefined; +} +export interface GetCredentialsForIdentityResponse { + IdentityId?: string | undefined; + Credentials?: Credentials | undefined; +} +export interface GetIdInput { + AccountId?: string | undefined; + IdentityPoolId: string | undefined; + Logins?: Record | undefined; +} +export interface GetIdResponse { + IdentityId?: string | undefined; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.browser.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.browser.d.ts new file mode 100644 index 000000000..700869d05 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.browser.d.ts @@ -0,0 +1,122 @@ +import { FetchHttpHandler as RequestHandler } from "@smithy/fetch-http-handler"; +import { CognitoIdentityClientConfig } from "./CognitoIdentityClient"; +export declare const getRuntimeConfig: ( + config: CognitoIdentityClientConfig +) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider< + import("@smithy/smithy-client").ResolvedDefaultsMode + >; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved + ) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: + | import("@smithy/protocol-http").HttpHandler + | RequestHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + cacheMiddleware?: boolean | undefined; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/core").AwsJson1_1Protocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: + | string + | undefined + | import("@smithy/types").Provider; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + } + )[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").CognitoIdentityHttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.d.ts new file mode 100644 index 000000000..fb8063703 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.d.ts @@ -0,0 +1,117 @@ +import { NodeHttpHandler as RequestHandler } from "@smithy/node-http-handler"; +import { CognitoIdentityClientConfig } from "./CognitoIdentityClient"; +export declare const getRuntimeConfig: ( + config: CognitoIdentityClientConfig +) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider< + import("@smithy/smithy-client").ResolvedDefaultsMode + >; + authSchemePreference: string[] | import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-node").PreviouslyResolved + ) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: + | RequestHandler + | import("@smithy/protocol-http").HttpHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: boolean | import("@smithy/types").Provider; + useFipsEndpoint: boolean | import("@smithy/types").Provider; + userAgentAppId: string | import("@smithy/types").Provider; + cacheMiddleware?: boolean | undefined; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/core").AwsJson1_1Protocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + } + )[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").CognitoIdentityHttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.native.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.native.d.ts new file mode 100644 index 000000000..effa0cf8d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.native.d.ts @@ -0,0 +1,126 @@ +import { CognitoIdentityClientConfig } from "./CognitoIdentityClient"; +export declare const getRuntimeConfig: ( + config: CognitoIdentityClientConfig +) => { + runtime: string; + sha256: import("@smithy/types").HashConstructor; + requestHandler: + | import("@smithy/types").NodeHttpHandlerOptions + | import("@smithy/types").FetchHttpHandlerOptions + | Record + | import("@smithy/protocol-http").HttpHandler + | import("@smithy/fetch-http-handler").FetchHttpHandler; + cacheMiddleware?: boolean; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/core").AwsJson1_1Protocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + streamCollector: import("@smithy/types").StreamCollector; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + region: string | import("@smithy/types").Provider; + profile?: string; + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved + ) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + retryMode: string | import("@smithy/types").Provider; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + defaultsMode: + | import("@smithy/smithy-client").DefaultsMode + | import("@smithy/types").Provider< + import("@smithy/smithy-client").DefaultsMode + >; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: + | string + | undefined + | import("@smithy/types").Provider; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + } + )[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").CognitoIdentityHttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.shared.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.shared.d.ts new file mode 100644 index 000000000..e7355cf9d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.shared.d.ts @@ -0,0 +1,60 @@ +import { AwsSdkSigV4Signer } from "@aws-sdk/core"; +import { AwsJson1_1Protocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; +import { IdentityProviderConfig } from "@smithy/types"; +import { CognitoIdentityClientConfig } from "./CognitoIdentityClient"; +export declare const getRuntimeConfig: ( + config: CognitoIdentityClientConfig +) => { + apiVersion: string; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + disableHostPrefix: boolean; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").CognitoIdentityHttpAuthSchemeProvider; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: NoAuthSigner; + } + )[]; + logger: import("@smithy/types").Logger; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof AwsJson1_1Protocol; + protocolSettings: { + [setting: string]: unknown; + defaultNamespace?: string; + }; + serviceId: string; + urlParser: import("@smithy/types").UrlParser; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeExtensions.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeExtensions.d.ts new file mode 100644 index 000000000..3ce83666e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeExtensions.d.ts @@ -0,0 +1,13 @@ +import { CognitoIdentityExtensionConfiguration } from "./extensionConfiguration"; +export interface RuntimeExtension { + configure( + extensionConfiguration: CognitoIdentityExtensionConfiguration + ): void; +} +export interface RuntimeExtensionsConfig { + extensions: RuntimeExtension[]; +} +export declare const resolveRuntimeExtensions: ( + runtimeConfig: any, + extensions: RuntimeExtension[] +) => any; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/schemas/schemas_0.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/schemas/schemas_0.d.ts new file mode 100644 index 000000000..d45fba21d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/schemas/schemas_0.d.ts @@ -0,0 +1,24 @@ +import { TypeRegistry } from "@smithy/core/schema"; +import { + StaticErrorSchema, + StaticOperationSchema, + StaticStructureSchema, +} from "@smithy/types"; +export declare var CognitoIdentityServiceException$: StaticErrorSchema; +export declare var ExternalServiceException$: StaticErrorSchema; +export declare var InternalErrorException$: StaticErrorSchema; +export declare var InvalidIdentityPoolConfigurationException$: StaticErrorSchema; +export declare var InvalidParameterException$: StaticErrorSchema; +export declare var LimitExceededException$: StaticErrorSchema; +export declare var NotAuthorizedException$: StaticErrorSchema; +export declare var ResourceConflictException$: StaticErrorSchema; +export declare var ResourceNotFoundException$: StaticErrorSchema; +export declare var TooManyRequestsException$: StaticErrorSchema; +export declare const errorTypeRegistries: TypeRegistry[]; +export declare var Credentials$: StaticStructureSchema; +export declare var GetCredentialsForIdentityInput$: StaticStructureSchema; +export declare var GetCredentialsForIdentityResponse$: StaticStructureSchema; +export declare var GetIdInput$: StaticStructureSchema; +export declare var GetIdResponse$: StaticStructureSchema; +export declare var GetCredentialsForIdentity$: StaticOperationSchema; +export declare var GetId$: StaticOperationSchema; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/Signin.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/Signin.d.ts new file mode 100644 index 000000000..89e01fe2d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/Signin.d.ts @@ -0,0 +1,22 @@ +import { HttpHandlerOptions as __HttpHandlerOptions } from "@smithy/types"; +import { + CreateOAuth2TokenCommandInput, + CreateOAuth2TokenCommandOutput, +} from "./commands/CreateOAuth2TokenCommand"; +import { SigninClient } from "./SigninClient"; +export interface Signin { + createOAuth2Token( + args: CreateOAuth2TokenCommandInput, + options?: __HttpHandlerOptions + ): Promise; + createOAuth2Token( + args: CreateOAuth2TokenCommandInput, + cb: (err: any, data?: CreateOAuth2TokenCommandOutput) => void + ): void; + createOAuth2Token( + args: CreateOAuth2TokenCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: CreateOAuth2TokenCommandOutput) => void + ): void; +} +export declare class Signin extends SigninClient implements Signin {} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/SigninClient.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/SigninClient.d.ts new file mode 100644 index 000000000..8add9af95 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/SigninClient.d.ts @@ -0,0 +1,125 @@ +import { + HostHeaderInputConfig, + HostHeaderResolvedConfig, +} from "@aws-sdk/middleware-host-header"; +import { + UserAgentInputConfig, + UserAgentResolvedConfig, +} from "@aws-sdk/middleware-user-agent"; +import { + RegionInputConfig, + RegionResolvedConfig, +} from "@smithy/config-resolver"; +import { + EndpointInputConfig, + EndpointResolvedConfig, +} from "@smithy/middleware-endpoint"; +import { + RetryInputConfig, + RetryResolvedConfig, +} from "@smithy/middleware-retry"; +import { HttpHandlerUserInput as __HttpHandlerUserInput } from "@smithy/protocol-http"; +import { + DefaultsMode as __DefaultsMode, + SmithyConfiguration as __SmithyConfiguration, + SmithyResolvedConfiguration as __SmithyResolvedConfiguration, + Client as __Client, +} from "@smithy/smithy-client"; +import { + AwsCredentialIdentityProvider, + Provider, + UserAgent as __UserAgent, +} from "@smithy/types"; +import { + BodyLengthCalculator as __BodyLengthCalculator, + CheckOptionalClientConfig as __CheckOptionalClientConfig, + ChecksumConstructor as __ChecksumConstructor, + Decoder as __Decoder, + Encoder as __Encoder, + HashConstructor as __HashConstructor, + HttpHandlerOptions as __HttpHandlerOptions, + Logger as __Logger, + Provider as __Provider, + StreamCollector as __StreamCollector, + UrlParser as __UrlParser, +} from "@smithy/types"; +import { + HttpAuthSchemeInputConfig, + HttpAuthSchemeResolvedConfig, +} from "./auth/httpAuthSchemeProvider"; +import { + CreateOAuth2TokenCommandInput, + CreateOAuth2TokenCommandOutput, +} from "./commands/CreateOAuth2TokenCommand"; +import { + ClientInputEndpointParameters, + ClientResolvedEndpointParameters, + EndpointParameters, +} from "./endpoint/EndpointParameters"; +import { RuntimeExtension, RuntimeExtensionsConfig } from "./runtimeExtensions"; +export { __Client }; +export type ServiceInputTypes = CreateOAuth2TokenCommandInput; +export type ServiceOutputTypes = CreateOAuth2TokenCommandOutput; +export interface ClientDefaults + extends Partial<__SmithyConfiguration<__HttpHandlerOptions>> { + requestHandler?: __HttpHandlerUserInput; + sha256?: __ChecksumConstructor | __HashConstructor; + urlParser?: __UrlParser; + bodyLengthChecker?: __BodyLengthCalculator; + streamCollector?: __StreamCollector; + base64Decoder?: __Decoder; + base64Encoder?: __Encoder; + utf8Decoder?: __Decoder; + utf8Encoder?: __Encoder; + runtime?: string; + disableHostPrefix?: boolean; + serviceId?: string; + useDualstackEndpoint?: boolean | __Provider; + useFipsEndpoint?: boolean | __Provider; + region?: string | __Provider; + profile?: string; + defaultUserAgentProvider?: Provider<__UserAgent>; + credentialDefaultProvider?: (input: any) => AwsCredentialIdentityProvider; + maxAttempts?: number | __Provider; + retryMode?: string | __Provider; + logger?: __Logger; + extensions?: RuntimeExtension[]; + defaultsMode?: __DefaultsMode | __Provider<__DefaultsMode>; +} +export type SigninClientConfigType = Partial< + __SmithyConfiguration<__HttpHandlerOptions> +> & + ClientDefaults & + UserAgentInputConfig & + RetryInputConfig & + RegionInputConfig & + HostHeaderInputConfig & + EndpointInputConfig & + HttpAuthSchemeInputConfig & + ClientInputEndpointParameters; +export interface SigninClientConfig extends SigninClientConfigType {} +export type SigninClientResolvedConfigType = + __SmithyResolvedConfiguration<__HttpHandlerOptions> & + Required & + RuntimeExtensionsConfig & + UserAgentResolvedConfig & + RetryResolvedConfig & + RegionResolvedConfig & + HostHeaderResolvedConfig & + EndpointResolvedConfig & + HttpAuthSchemeResolvedConfig & + ClientResolvedEndpointParameters; +export interface SigninClientResolvedConfig + extends SigninClientResolvedConfigType {} +export declare class SigninClient extends __Client< + __HttpHandlerOptions, + ServiceInputTypes, + ServiceOutputTypes, + SigninClientResolvedConfig +> { + readonly config: SigninClientResolvedConfig; + constructor( + ...[configuration]: __CheckOptionalClientConfig + ); + destroy(): void; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/auth/httpAuthExtensionConfiguration.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/auth/httpAuthExtensionConfiguration.d.ts new file mode 100644 index 000000000..110c49384 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/auth/httpAuthExtensionConfiguration.d.ts @@ -0,0 +1,32 @@ +import { + AwsCredentialIdentity, + AwsCredentialIdentityProvider, +} from "@smithy/types"; +import { HttpAuthScheme } from "@smithy/types"; +import { SigninHttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; +export interface HttpAuthExtensionConfiguration { + setHttpAuthScheme(httpAuthScheme: HttpAuthScheme): void; + httpAuthSchemes(): HttpAuthScheme[]; + setHttpAuthSchemeProvider( + httpAuthSchemeProvider: SigninHttpAuthSchemeProvider + ): void; + httpAuthSchemeProvider(): SigninHttpAuthSchemeProvider; + setCredentials( + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider + ): void; + credentials(): + | AwsCredentialIdentity + | AwsCredentialIdentityProvider + | undefined; +} +export type HttpAuthRuntimeConfig = Partial<{ + httpAuthSchemes: HttpAuthScheme[]; + httpAuthSchemeProvider: SigninHttpAuthSchemeProvider; + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider; +}>; +export declare const getHttpAuthExtensionConfiguration: ( + runtimeConfig: HttpAuthRuntimeConfig +) => HttpAuthExtensionConfiguration; +export declare const resolveHttpAuthRuntimeConfig: ( + config: HttpAuthExtensionConfiguration +) => HttpAuthRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/auth/httpAuthSchemeProvider.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/auth/httpAuthSchemeProvider.d.ts new file mode 100644 index 000000000..5acc2d8af --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/auth/httpAuthSchemeProvider.d.ts @@ -0,0 +1,47 @@ +import { + AwsSdkSigV4AuthInputConfig, + AwsSdkSigV4AuthResolvedConfig, + AwsSdkSigV4PreviouslyResolved, +} from "@aws-sdk/core"; +import { + HandlerExecutionContext, + HttpAuthScheme, + HttpAuthSchemeParameters, + HttpAuthSchemeParametersProvider, + HttpAuthSchemeProvider, + Provider, +} from "@smithy/types"; +import { SigninClientResolvedConfig } from "../SigninClient"; +export interface SigninHttpAuthSchemeParameters + extends HttpAuthSchemeParameters { + region?: string; +} +export interface SigninHttpAuthSchemeParametersProvider + extends HttpAuthSchemeParametersProvider< + SigninClientResolvedConfig, + HandlerExecutionContext, + SigninHttpAuthSchemeParameters, + object + > {} +export declare const defaultSigninHttpAuthSchemeParametersProvider: ( + config: SigninClientResolvedConfig, + context: HandlerExecutionContext, + input: object +) => Promise; +export interface SigninHttpAuthSchemeProvider + extends HttpAuthSchemeProvider {} +export declare const defaultSigninHttpAuthSchemeProvider: SigninHttpAuthSchemeProvider; +export interface HttpAuthSchemeInputConfig extends AwsSdkSigV4AuthInputConfig { + authSchemePreference?: string[] | Provider; + httpAuthSchemes?: HttpAuthScheme[]; + httpAuthSchemeProvider?: SigninHttpAuthSchemeProvider; +} +export interface HttpAuthSchemeResolvedConfig + extends AwsSdkSigV4AuthResolvedConfig { + readonly authSchemePreference: Provider; + readonly httpAuthSchemes: HttpAuthScheme[]; + readonly httpAuthSchemeProvider: SigninHttpAuthSchemeProvider; +} +export declare const resolveHttpAuthSchemeConfig: ( + config: T & HttpAuthSchemeInputConfig & AwsSdkSigV4PreviouslyResolved +) => T & HttpAuthSchemeResolvedConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/commands/CreateOAuth2TokenCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/commands/CreateOAuth2TokenCommand.d.ts new file mode 100644 index 000000000..3f2873fcd --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/commands/CreateOAuth2TokenCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + CreateOAuth2TokenRequest, + CreateOAuth2TokenResponse, +} from "../models/models_0"; +import { SigninClientResolvedConfig } from "../SigninClient"; +export { __MetadataBearer }; +export { $Command }; +export interface CreateOAuth2TokenCommandInput + extends CreateOAuth2TokenRequest {} +export interface CreateOAuth2TokenCommandOutput + extends CreateOAuth2TokenResponse, + __MetadataBearer {} +declare const CreateOAuth2TokenCommand_base: { + new ( + input: CreateOAuth2TokenCommandInput + ): import("@smithy/smithy-client").CommandImpl< + CreateOAuth2TokenCommandInput, + CreateOAuth2TokenCommandOutput, + SigninClientResolvedConfig, + CreateOAuth2TokenCommandInput, + CreateOAuth2TokenCommandOutput + >; + new ( + input: CreateOAuth2TokenCommandInput + ): import("@smithy/smithy-client").CommandImpl< + CreateOAuth2TokenCommandInput, + CreateOAuth2TokenCommandOutput, + SigninClientResolvedConfig, + CreateOAuth2TokenCommandInput, + CreateOAuth2TokenCommandOutput + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class CreateOAuth2TokenCommand extends CreateOAuth2TokenCommand_base { + protected static __types: { + api: { + input: CreateOAuth2TokenRequest; + output: CreateOAuth2TokenResponse; + }; + sdk: { + input: CreateOAuth2TokenCommandInput; + output: CreateOAuth2TokenCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/commands/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/commands/index.d.ts new file mode 100644 index 000000000..d32e4a315 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/commands/index.d.ts @@ -0,0 +1 @@ +export * from "./CreateOAuth2TokenCommand"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/endpoint/EndpointParameters.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/endpoint/EndpointParameters.d.ts new file mode 100644 index 000000000..30ccc88fd --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/endpoint/EndpointParameters.d.ts @@ -0,0 +1,51 @@ +import { + Endpoint, + EndpointParameters as __EndpointParameters, + EndpointV2, + Provider, +} from "@smithy/types"; +export interface ClientInputEndpointParameters { + useDualstackEndpoint?: boolean | undefined | Provider; + useFipsEndpoint?: boolean | undefined | Provider; + endpoint?: + | string + | Provider + | Endpoint + | Provider + | EndpointV2 + | Provider; + region?: string | undefined | Provider; +} +export type ClientResolvedEndpointParameters = Pick< + ClientInputEndpointParameters, + Exclude +> & { + defaultSigningName: string; +}; +export declare const resolveClientEndpointParameters: ( + options: T & ClientInputEndpointParameters +) => T & ClientResolvedEndpointParameters; +export declare const commonParams: { + readonly UseFIPS: { + readonly type: "builtInParams"; + readonly name: "useFipsEndpoint"; + }; + readonly Endpoint: { + readonly type: "builtInParams"; + readonly name: "endpoint"; + }; + readonly Region: { + readonly type: "builtInParams"; + readonly name: "region"; + }; + readonly UseDualStack: { + readonly type: "builtInParams"; + readonly name: "useDualstackEndpoint"; + }; +}; +export interface EndpointParameters extends __EndpointParameters { + UseDualStack?: boolean | undefined; + UseFIPS?: boolean | undefined; + Endpoint?: string | undefined; + Region?: string | undefined; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/endpoint/endpointResolver.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/endpoint/endpointResolver.d.ts new file mode 100644 index 000000000..590992544 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/endpoint/endpointResolver.d.ts @@ -0,0 +1,8 @@ +import { EndpointV2, Logger } from "@smithy/types"; +import { EndpointParameters } from "./EndpointParameters"; +export declare const defaultEndpointResolver: ( + endpointParams: EndpointParameters, + context?: { + logger?: Logger; + } +) => EndpointV2; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/endpoint/ruleset.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/endpoint/ruleset.d.ts new file mode 100644 index 000000000..4b238994b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/endpoint/ruleset.d.ts @@ -0,0 +1,2 @@ +import { RuleSetObject } from "@smithy/types"; +export declare const ruleSet: RuleSetObject; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/extensionConfiguration.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/extensionConfiguration.d.ts new file mode 100644 index 000000000..d017d1113 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/extensionConfiguration.d.ts @@ -0,0 +1,9 @@ +import { AwsRegionExtensionConfiguration } from "@aws-sdk/types"; +import { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; +import { DefaultExtensionConfiguration } from "@smithy/types"; +import { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; +export interface SigninExtensionConfiguration + extends HttpHandlerExtensionConfiguration, + DefaultExtensionConfiguration, + AwsRegionExtensionConfiguration, + HttpAuthExtensionConfiguration {} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/index.d.ts new file mode 100644 index 000000000..5619b72bd --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/index.d.ts @@ -0,0 +1,11 @@ +export * from "./SigninClient"; +export * from "./Signin"; +export { ClientInputEndpointParameters } from "./endpoint/EndpointParameters"; +export { RuntimeExtension } from "./runtimeExtensions"; +export { SigninExtensionConfiguration } from "./extensionConfiguration"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./models/enums"; +export * from "./models/errors"; +export * from "./models/models_0"; +export { SigninServiceException } from "./models/SigninServiceException"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/models/SigninServiceException.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/models/SigninServiceException.d.ts new file mode 100644 index 000000000..3356c4906 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/models/SigninServiceException.d.ts @@ -0,0 +1,9 @@ +import { + ServiceExceptionOptions as __ServiceExceptionOptions, + ServiceException as __ServiceException, +} from "@smithy/smithy-client"; +export { __ServiceExceptionOptions }; +export { __ServiceException }; +export declare class SigninServiceException extends __ServiceException { + constructor(options: __ServiceExceptionOptions); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/models/enums.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/models/enums.d.ts new file mode 100644 index 000000000..dd1fcebfd --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/models/enums.d.ts @@ -0,0 +1,10 @@ +export declare const OAuth2ErrorCode: { + readonly AUTHCODE_EXPIRED: "AUTHCODE_EXPIRED"; + readonly INSUFFICIENT_PERMISSIONS: "INSUFFICIENT_PERMISSIONS"; + readonly INVALID_REQUEST: "INVALID_REQUEST"; + readonly SERVER_ERROR: "server_error"; + readonly TOKEN_EXPIRED: "TOKEN_EXPIRED"; + readonly USER_CREDENTIALS_CHANGED: "USER_CREDENTIALS_CHANGED"; +}; +export type OAuth2ErrorCode = + (typeof OAuth2ErrorCode)[keyof typeof OAuth2ErrorCode]; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/models/errors.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/models/errors.d.ts new file mode 100644 index 000000000..381854972 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/models/errors.d.ts @@ -0,0 +1,35 @@ +import { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; +import { OAuth2ErrorCode } from "./enums"; +import { SigninServiceException as __BaseException } from "./SigninServiceException"; +export declare class AccessDeniedException extends __BaseException { + readonly name: "AccessDeniedException"; + readonly $fault: "client"; + error: OAuth2ErrorCode | undefined; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class InternalServerException extends __BaseException { + readonly name: "InternalServerException"; + readonly $fault: "server"; + error: OAuth2ErrorCode | undefined; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class TooManyRequestsError extends __BaseException { + readonly name: "TooManyRequestsError"; + readonly $fault: "client"; + error: OAuth2ErrorCode | undefined; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class ValidationException extends __BaseException { + readonly name: "ValidationException"; + readonly $fault: "client"; + error: OAuth2ErrorCode | undefined; + constructor( + opts: __ExceptionOptionType + ); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/models/models_0.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/models/models_0.d.ts new file mode 100644 index 000000000..ea16c9ab3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/models/models_0.d.ts @@ -0,0 +1,26 @@ +export interface AccessToken { + accessKeyId: string | undefined; + secretAccessKey: string | undefined; + sessionToken: string | undefined; +} +export interface CreateOAuth2TokenRequestBody { + clientId: string | undefined; + grantType: string | undefined; + code?: string | undefined; + redirectUri?: string | undefined; + codeVerifier?: string | undefined; + refreshToken?: string | undefined; +} +export interface CreateOAuth2TokenRequest { + tokenInput: CreateOAuth2TokenRequestBody | undefined; +} +export interface CreateOAuth2TokenResponseBody { + accessToken: AccessToken | undefined; + tokenType: string | undefined; + expiresIn: number | undefined; + refreshToken: string | undefined; + idToken?: string | undefined; +} +export interface CreateOAuth2TokenResponse { + tokenOutput: CreateOAuth2TokenResponseBody | undefined; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.browser.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.browser.d.ts new file mode 100644 index 000000000..e9406d837 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.browser.d.ts @@ -0,0 +1,125 @@ +import { FetchHttpHandler as RequestHandler } from "@smithy/fetch-http-handler"; +import { SigninClientConfig } from "./SigninClient"; +export declare const getRuntimeConfig: (config: SigninClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider< + import("@smithy/smithy-client").ResolvedDefaultsMode + >; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + credentialDefaultProvider: + | ((input: any) => import("@smithy/types").AwsCredentialIdentityProvider) + | (( + _: unknown + ) => () => Promise); + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved + ) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: + | import("@smithy/protocol-http").HttpHandler + | RequestHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + cacheMiddleware?: boolean | undefined; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/core").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: + | string + | undefined + | import("@smithy/types").Provider; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + } + )[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SigninHttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.d.ts new file mode 100644 index 000000000..80b916dd1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.d.ts @@ -0,0 +1,118 @@ +import { NodeHttpHandler as RequestHandler } from "@smithy/node-http-handler"; +import { SigninClientConfig } from "./SigninClient"; +export declare const getRuntimeConfig: (config: SigninClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider< + import("@smithy/smithy-client").ResolvedDefaultsMode + >; + authSchemePreference: string[] | import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-node").PreviouslyResolved + ) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: + | RequestHandler + | import("@smithy/protocol-http").HttpHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: boolean | import("@smithy/types").Provider; + useFipsEndpoint: boolean | import("@smithy/types").Provider; + userAgentAppId: string | import("@smithy/types").Provider; + cacheMiddleware?: boolean | undefined; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/core").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + credentialDefaultProvider?: ( + input: any + ) => import("@smithy/types").AwsCredentialIdentityProvider; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + } + )[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SigninHttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.native.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.native.d.ts new file mode 100644 index 000000000..2d3040caf --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.native.d.ts @@ -0,0 +1,129 @@ +import { SigninClientConfig } from "./SigninClient"; +export declare const getRuntimeConfig: (config: SigninClientConfig) => { + runtime: string; + sha256: import("@smithy/types").HashConstructor; + requestHandler: + | import("@smithy/types").NodeHttpHandlerOptions + | import("@smithy/types").FetchHttpHandlerOptions + | Record + | import("@smithy/protocol-http").HttpHandler + | import("@smithy/fetch-http-handler").FetchHttpHandler; + cacheMiddleware?: boolean; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/core").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + streamCollector: import("@smithy/types").StreamCollector; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + region: string | import("@smithy/types").Provider; + profile?: string; + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved + ) => Promise; + credentialDefaultProvider: + | ((input: any) => import("@smithy/types").AwsCredentialIdentityProvider) + | (( + _: unknown + ) => () => Promise); + maxAttempts: number | import("@smithy/types").Provider; + retryMode: string | import("@smithy/types").Provider; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + defaultsMode: + | import("@smithy/smithy-client").DefaultsMode + | import("@smithy/types").Provider< + import("@smithy/smithy-client").DefaultsMode + >; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: + | string + | undefined + | import("@smithy/types").Provider; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + } + )[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SigninHttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.shared.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.shared.d.ts new file mode 100644 index 000000000..1e28febfe --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.shared.d.ts @@ -0,0 +1,58 @@ +import { AwsSdkSigV4Signer } from "@aws-sdk/core"; +import { AwsRestJsonProtocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; +import { IdentityProviderConfig } from "@smithy/types"; +import { SigninClientConfig } from "./SigninClient"; +export declare const getRuntimeConfig: (config: SigninClientConfig) => { + apiVersion: string; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + disableHostPrefix: boolean; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SigninHttpAuthSchemeProvider; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: NoAuthSigner; + } + )[]; + logger: import("@smithy/types").Logger; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof AwsRestJsonProtocol; + protocolSettings: { + [setting: string]: unknown; + defaultNamespace?: string; + }; + serviceId: string; + urlParser: import("@smithy/types").UrlParser; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeExtensions.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeExtensions.d.ts new file mode 100644 index 000000000..b62e7d8d7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeExtensions.d.ts @@ -0,0 +1,11 @@ +import { SigninExtensionConfiguration } from "./extensionConfiguration"; +export interface RuntimeExtension { + configure(extensionConfiguration: SigninExtensionConfiguration): void; +} +export interface RuntimeExtensionsConfig { + extensions: RuntimeExtension[]; +} +export declare const resolveRuntimeExtensions: ( + runtimeConfig: any, + extensions: RuntimeExtension[] +) => any; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/schemas/schemas_0.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/schemas/schemas_0.d.ts new file mode 100644 index 000000000..693e44c45 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/schemas/schemas_0.d.ts @@ -0,0 +1,18 @@ +import { TypeRegistry } from "@smithy/core/schema"; +import { + StaticErrorSchema, + StaticOperationSchema, + StaticStructureSchema, +} from "@smithy/types"; +export declare var SigninServiceException$: StaticErrorSchema; +export declare var AccessDeniedException$: StaticErrorSchema; +export declare var InternalServerException$: StaticErrorSchema; +export declare var TooManyRequestsError$: StaticErrorSchema; +export declare var ValidationException$: StaticErrorSchema; +export declare const errorTypeRegistries: TypeRegistry[]; +export declare var AccessToken$: StaticStructureSchema; +export declare var CreateOAuth2TokenRequest$: StaticStructureSchema; +export declare var CreateOAuth2TokenRequestBody$: StaticStructureSchema; +export declare var CreateOAuth2TokenResponse$: StaticStructureSchema; +export declare var CreateOAuth2TokenResponseBody$: StaticStructureSchema; +export declare var CreateOAuth2Token$: StaticOperationSchema; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/SSOOIDC.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/SSOOIDC.d.ts new file mode 100644 index 000000000..10ee8491f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/SSOOIDC.d.ts @@ -0,0 +1,22 @@ +import { HttpHandlerOptions as __HttpHandlerOptions } from "@smithy/types"; +import { + CreateTokenCommandInput, + CreateTokenCommandOutput, +} from "./commands/CreateTokenCommand"; +import { SSOOIDCClient } from "./SSOOIDCClient"; +export interface SSOOIDC { + createToken( + args: CreateTokenCommandInput, + options?: __HttpHandlerOptions + ): Promise; + createToken( + args: CreateTokenCommandInput, + cb: (err: any, data?: CreateTokenCommandOutput) => void + ): void; + createToken( + args: CreateTokenCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: CreateTokenCommandOutput) => void + ): void; +} +export declare class SSOOIDC extends SSOOIDCClient implements SSOOIDC {} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/SSOOIDCClient.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/SSOOIDCClient.d.ts new file mode 100644 index 000000000..f7857d549 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/SSOOIDCClient.d.ts @@ -0,0 +1,120 @@ +import { + HostHeaderInputConfig, + HostHeaderResolvedConfig, +} from "@aws-sdk/middleware-host-header"; +import { + UserAgentInputConfig, + UserAgentResolvedConfig, +} from "@aws-sdk/middleware-user-agent"; +import { + RegionInputConfig, + RegionResolvedConfig, +} from "@smithy/config-resolver"; +import { + EndpointInputConfig, + EndpointResolvedConfig, +} from "@smithy/middleware-endpoint"; +import { + RetryInputConfig, + RetryResolvedConfig, +} from "@smithy/middleware-retry"; +import { HttpHandlerUserInput as __HttpHandlerUserInput } from "@smithy/protocol-http"; +import { + DefaultsMode as __DefaultsMode, + SmithyConfiguration as __SmithyConfiguration, + SmithyResolvedConfiguration as __SmithyResolvedConfiguration, + Client as __Client, +} from "@smithy/smithy-client"; +import { Provider, UserAgent as __UserAgent } from "@smithy/types"; +import { + BodyLengthCalculator as __BodyLengthCalculator, + CheckOptionalClientConfig as __CheckOptionalClientConfig, + ChecksumConstructor as __ChecksumConstructor, + Decoder as __Decoder, + Encoder as __Encoder, + HashConstructor as __HashConstructor, + HttpHandlerOptions as __HttpHandlerOptions, + Logger as __Logger, + Provider as __Provider, + StreamCollector as __StreamCollector, + UrlParser as __UrlParser, +} from "@smithy/types"; +import { + HttpAuthSchemeInputConfig, + HttpAuthSchemeResolvedConfig, +} from "./auth/httpAuthSchemeProvider"; +import { + CreateTokenCommandInput, + CreateTokenCommandOutput, +} from "./commands/CreateTokenCommand"; +import { + ClientInputEndpointParameters, + ClientResolvedEndpointParameters, + EndpointParameters, +} from "./endpoint/EndpointParameters"; +import { RuntimeExtension, RuntimeExtensionsConfig } from "./runtimeExtensions"; +export { __Client }; +export type ServiceInputTypes = CreateTokenCommandInput; +export type ServiceOutputTypes = CreateTokenCommandOutput; +export interface ClientDefaults + extends Partial<__SmithyConfiguration<__HttpHandlerOptions>> { + requestHandler?: __HttpHandlerUserInput; + sha256?: __ChecksumConstructor | __HashConstructor; + urlParser?: __UrlParser; + bodyLengthChecker?: __BodyLengthCalculator; + streamCollector?: __StreamCollector; + base64Decoder?: __Decoder; + base64Encoder?: __Encoder; + utf8Decoder?: __Decoder; + utf8Encoder?: __Encoder; + runtime?: string; + disableHostPrefix?: boolean; + serviceId?: string; + useDualstackEndpoint?: boolean | __Provider; + useFipsEndpoint?: boolean | __Provider; + region?: string | __Provider; + profile?: string; + defaultUserAgentProvider?: Provider<__UserAgent>; + maxAttempts?: number | __Provider; + retryMode?: string | __Provider; + logger?: __Logger; + extensions?: RuntimeExtension[]; + defaultsMode?: __DefaultsMode | __Provider<__DefaultsMode>; +} +export type SSOOIDCClientConfigType = Partial< + __SmithyConfiguration<__HttpHandlerOptions> +> & + ClientDefaults & + UserAgentInputConfig & + RetryInputConfig & + RegionInputConfig & + HostHeaderInputConfig & + EndpointInputConfig & + HttpAuthSchemeInputConfig & + ClientInputEndpointParameters; +export interface SSOOIDCClientConfig extends SSOOIDCClientConfigType {} +export type SSOOIDCClientResolvedConfigType = + __SmithyResolvedConfiguration<__HttpHandlerOptions> & + Required & + RuntimeExtensionsConfig & + UserAgentResolvedConfig & + RetryResolvedConfig & + RegionResolvedConfig & + HostHeaderResolvedConfig & + EndpointResolvedConfig & + HttpAuthSchemeResolvedConfig & + ClientResolvedEndpointParameters; +export interface SSOOIDCClientResolvedConfig + extends SSOOIDCClientResolvedConfigType {} +export declare class SSOOIDCClient extends __Client< + __HttpHandlerOptions, + ServiceInputTypes, + ServiceOutputTypes, + SSOOIDCClientResolvedConfig +> { + readonly config: SSOOIDCClientResolvedConfig; + constructor( + ...[configuration]: __CheckOptionalClientConfig + ); + destroy(): void; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/auth/httpAuthExtensionConfiguration.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/auth/httpAuthExtensionConfiguration.d.ts new file mode 100644 index 000000000..5e60b00e1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/auth/httpAuthExtensionConfiguration.d.ts @@ -0,0 +1,32 @@ +import { + AwsCredentialIdentity, + AwsCredentialIdentityProvider, +} from "@smithy/types"; +import { HttpAuthScheme } from "@smithy/types"; +import { SSOOIDCHttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; +export interface HttpAuthExtensionConfiguration { + setHttpAuthScheme(httpAuthScheme: HttpAuthScheme): void; + httpAuthSchemes(): HttpAuthScheme[]; + setHttpAuthSchemeProvider( + httpAuthSchemeProvider: SSOOIDCHttpAuthSchemeProvider + ): void; + httpAuthSchemeProvider(): SSOOIDCHttpAuthSchemeProvider; + setCredentials( + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider + ): void; + credentials(): + | AwsCredentialIdentity + | AwsCredentialIdentityProvider + | undefined; +} +export type HttpAuthRuntimeConfig = Partial<{ + httpAuthSchemes: HttpAuthScheme[]; + httpAuthSchemeProvider: SSOOIDCHttpAuthSchemeProvider; + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider; +}>; +export declare const getHttpAuthExtensionConfiguration: ( + runtimeConfig: HttpAuthRuntimeConfig +) => HttpAuthExtensionConfiguration; +export declare const resolveHttpAuthRuntimeConfig: ( + config: HttpAuthExtensionConfiguration +) => HttpAuthRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/auth/httpAuthSchemeProvider.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/auth/httpAuthSchemeProvider.d.ts new file mode 100644 index 000000000..936b10112 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/auth/httpAuthSchemeProvider.d.ts @@ -0,0 +1,47 @@ +import { + AwsSdkSigV4AuthInputConfig, + AwsSdkSigV4AuthResolvedConfig, + AwsSdkSigV4PreviouslyResolved, +} from "@aws-sdk/core"; +import { + HandlerExecutionContext, + HttpAuthScheme, + HttpAuthSchemeParameters, + HttpAuthSchemeParametersProvider, + HttpAuthSchemeProvider, + Provider, +} from "@smithy/types"; +import { SSOOIDCClientResolvedConfig } from "../SSOOIDCClient"; +export interface SSOOIDCHttpAuthSchemeParameters + extends HttpAuthSchemeParameters { + region?: string; +} +export interface SSOOIDCHttpAuthSchemeParametersProvider + extends HttpAuthSchemeParametersProvider< + SSOOIDCClientResolvedConfig, + HandlerExecutionContext, + SSOOIDCHttpAuthSchemeParameters, + object + > {} +export declare const defaultSSOOIDCHttpAuthSchemeParametersProvider: ( + config: SSOOIDCClientResolvedConfig, + context: HandlerExecutionContext, + input: object +) => Promise; +export interface SSOOIDCHttpAuthSchemeProvider + extends HttpAuthSchemeProvider {} +export declare const defaultSSOOIDCHttpAuthSchemeProvider: SSOOIDCHttpAuthSchemeProvider; +export interface HttpAuthSchemeInputConfig extends AwsSdkSigV4AuthInputConfig { + authSchemePreference?: string[] | Provider; + httpAuthSchemes?: HttpAuthScheme[]; + httpAuthSchemeProvider?: SSOOIDCHttpAuthSchemeProvider; +} +export interface HttpAuthSchemeResolvedConfig + extends AwsSdkSigV4AuthResolvedConfig { + readonly authSchemePreference: Provider; + readonly httpAuthSchemes: HttpAuthScheme[]; + readonly httpAuthSchemeProvider: SSOOIDCHttpAuthSchemeProvider; +} +export declare const resolveHttpAuthSchemeConfig: ( + config: T & HttpAuthSchemeInputConfig & AwsSdkSigV4PreviouslyResolved +) => T & HttpAuthSchemeResolvedConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/commands/CreateTokenCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/commands/CreateTokenCommand.d.ts new file mode 100644 index 000000000..bcf1e7a3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/commands/CreateTokenCommand.d.ts @@ -0,0 +1,43 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { CreateTokenRequest, CreateTokenResponse } from "../models/models_0"; +import { SSOOIDCClientResolvedConfig } from "../SSOOIDCClient"; +export { __MetadataBearer }; +export { $Command }; +export interface CreateTokenCommandInput extends CreateTokenRequest {} +export interface CreateTokenCommandOutput + extends CreateTokenResponse, + __MetadataBearer {} +declare const CreateTokenCommand_base: { + new ( + input: CreateTokenCommandInput + ): import("@smithy/smithy-client").CommandImpl< + CreateTokenCommandInput, + CreateTokenCommandOutput, + SSOOIDCClientResolvedConfig, + CreateTokenCommandInput, + CreateTokenCommandOutput + >; + new ( + input: CreateTokenCommandInput + ): import("@smithy/smithy-client").CommandImpl< + CreateTokenCommandInput, + CreateTokenCommandOutput, + SSOOIDCClientResolvedConfig, + CreateTokenCommandInput, + CreateTokenCommandOutput + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class CreateTokenCommand extends CreateTokenCommand_base { + protected static __types: { + api: { + input: CreateTokenRequest; + output: CreateTokenResponse; + }; + sdk: { + input: CreateTokenCommandInput; + output: CreateTokenCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/commands/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/commands/index.d.ts new file mode 100644 index 000000000..09214caef --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/commands/index.d.ts @@ -0,0 +1 @@ +export * from "./CreateTokenCommand"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/endpoint/EndpointParameters.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/endpoint/EndpointParameters.d.ts new file mode 100644 index 000000000..c4baac5c4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/endpoint/EndpointParameters.d.ts @@ -0,0 +1,51 @@ +import { + Endpoint, + EndpointParameters as __EndpointParameters, + EndpointV2, + Provider, +} from "@smithy/types"; +export interface ClientInputEndpointParameters { + region?: string | undefined | Provider; + useDualstackEndpoint?: boolean | undefined | Provider; + useFipsEndpoint?: boolean | undefined | Provider; + endpoint?: + | string + | Provider + | Endpoint + | Provider + | EndpointV2 + | Provider; +} +export type ClientResolvedEndpointParameters = Pick< + ClientInputEndpointParameters, + Exclude +> & { + defaultSigningName: string; +}; +export declare const resolveClientEndpointParameters: ( + options: T & ClientInputEndpointParameters +) => T & ClientResolvedEndpointParameters; +export declare const commonParams: { + readonly UseFIPS: { + readonly type: "builtInParams"; + readonly name: "useFipsEndpoint"; + }; + readonly Endpoint: { + readonly type: "builtInParams"; + readonly name: "endpoint"; + }; + readonly Region: { + readonly type: "builtInParams"; + readonly name: "region"; + }; + readonly UseDualStack: { + readonly type: "builtInParams"; + readonly name: "useDualstackEndpoint"; + }; +}; +export interface EndpointParameters extends __EndpointParameters { + Region?: string | undefined; + UseDualStack?: boolean | undefined; + UseFIPS?: boolean | undefined; + Endpoint?: string | undefined; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/endpoint/endpointResolver.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/endpoint/endpointResolver.d.ts new file mode 100644 index 000000000..590992544 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/endpoint/endpointResolver.d.ts @@ -0,0 +1,8 @@ +import { EndpointV2, Logger } from "@smithy/types"; +import { EndpointParameters } from "./EndpointParameters"; +export declare const defaultEndpointResolver: ( + endpointParams: EndpointParameters, + context?: { + logger?: Logger; + } +) => EndpointV2; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/endpoint/ruleset.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/endpoint/ruleset.d.ts new file mode 100644 index 000000000..4b238994b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/endpoint/ruleset.d.ts @@ -0,0 +1,2 @@ +import { RuleSetObject } from "@smithy/types"; +export declare const ruleSet: RuleSetObject; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/extensionConfiguration.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/extensionConfiguration.d.ts new file mode 100644 index 000000000..c208e3380 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/extensionConfiguration.d.ts @@ -0,0 +1,9 @@ +import { AwsRegionExtensionConfiguration } from "@aws-sdk/types"; +import { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; +import { DefaultExtensionConfiguration } from "@smithy/types"; +import { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; +export interface SSOOIDCExtensionConfiguration + extends HttpHandlerExtensionConfiguration, + DefaultExtensionConfiguration, + AwsRegionExtensionConfiguration, + HttpAuthExtensionConfiguration {} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/index.d.ts new file mode 100644 index 000000000..e64e68ab7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/index.d.ts @@ -0,0 +1,11 @@ +export * from "./SSOOIDCClient"; +export * from "./SSOOIDC"; +export { ClientInputEndpointParameters } from "./endpoint/EndpointParameters"; +export { RuntimeExtension } from "./runtimeExtensions"; +export { SSOOIDCExtensionConfiguration } from "./extensionConfiguration"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./models/enums"; +export * from "./models/errors"; +export * from "./models/models_0"; +export { SSOOIDCServiceException } from "./models/SSOOIDCServiceException"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/SSOOIDCServiceException.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/SSOOIDCServiceException.d.ts new file mode 100644 index 000000000..c7318f2c5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/SSOOIDCServiceException.d.ts @@ -0,0 +1,9 @@ +import { + ServiceExceptionOptions as __ServiceExceptionOptions, + ServiceException as __ServiceException, +} from "@smithy/smithy-client"; +export { __ServiceExceptionOptions }; +export { __ServiceException }; +export declare class SSOOIDCServiceException extends __ServiceException { + constructor(options: __ServiceExceptionOptions); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/enums.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/enums.d.ts new file mode 100644 index 000000000..9028dae15 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/enums.d.ts @@ -0,0 +1,13 @@ +export declare const AccessDeniedExceptionReason: { + readonly KMS_ACCESS_DENIED: "KMS_AccessDeniedException"; +}; +export type AccessDeniedExceptionReason = + (typeof AccessDeniedExceptionReason)[keyof typeof AccessDeniedExceptionReason]; +export declare const InvalidRequestExceptionReason: { + readonly KMS_DISABLED_KEY: "KMS_DisabledException"; + readonly KMS_INVALID_KEY_USAGE: "KMS_InvalidKeyUsageException"; + readonly KMS_INVALID_STATE: "KMS_InvalidStateException"; + readonly KMS_KEY_NOT_FOUND: "KMS_NotFoundException"; +}; +export type InvalidRequestExceptionReason = + (typeof InvalidRequestExceptionReason)[keyof typeof InvalidRequestExceptionReason]; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/errors.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/errors.d.ts new file mode 100644 index 000000000..2037dfecf --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/errors.d.ts @@ -0,0 +1,105 @@ +import { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; +import { + AccessDeniedExceptionReason, + InvalidRequestExceptionReason, +} from "./enums"; +import { SSOOIDCServiceException as __BaseException } from "./SSOOIDCServiceException"; +export declare class AccessDeniedException extends __BaseException { + readonly name: "AccessDeniedException"; + readonly $fault: "client"; + error?: string | undefined; + reason?: AccessDeniedExceptionReason | undefined; + error_description?: string | undefined; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class AuthorizationPendingException extends __BaseException { + readonly name: "AuthorizationPendingException"; + readonly $fault: "client"; + error?: string | undefined; + error_description?: string | undefined; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class ExpiredTokenException extends __BaseException { + readonly name: "ExpiredTokenException"; + readonly $fault: "client"; + error?: string | undefined; + error_description?: string | undefined; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class InternalServerException extends __BaseException { + readonly name: "InternalServerException"; + readonly $fault: "server"; + error?: string | undefined; + error_description?: string | undefined; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class InvalidClientException extends __BaseException { + readonly name: "InvalidClientException"; + readonly $fault: "client"; + error?: string | undefined; + error_description?: string | undefined; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class InvalidGrantException extends __BaseException { + readonly name: "InvalidGrantException"; + readonly $fault: "client"; + error?: string | undefined; + error_description?: string | undefined; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class InvalidRequestException extends __BaseException { + readonly name: "InvalidRequestException"; + readonly $fault: "client"; + error?: string | undefined; + reason?: InvalidRequestExceptionReason | undefined; + error_description?: string | undefined; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class InvalidScopeException extends __BaseException { + readonly name: "InvalidScopeException"; + readonly $fault: "client"; + error?: string | undefined; + error_description?: string | undefined; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class SlowDownException extends __BaseException { + readonly name: "SlowDownException"; + readonly $fault: "client"; + error?: string | undefined; + error_description?: string | undefined; + constructor(opts: __ExceptionOptionType); +} +export declare class UnauthorizedClientException extends __BaseException { + readonly name: "UnauthorizedClientException"; + readonly $fault: "client"; + error?: string | undefined; + error_description?: string | undefined; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class UnsupportedGrantTypeException extends __BaseException { + readonly name: "UnsupportedGrantTypeException"; + readonly $fault: "client"; + error?: string | undefined; + error_description?: string | undefined; + constructor( + opts: __ExceptionOptionType + ); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/models_0.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/models_0.d.ts new file mode 100644 index 000000000..16216b6c0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/models_0.d.ts @@ -0,0 +1,18 @@ +export interface CreateTokenRequest { + clientId: string | undefined; + clientSecret: string | undefined; + grantType: string | undefined; + deviceCode?: string | undefined; + code?: string | undefined; + refreshToken?: string | undefined; + scope?: string[] | undefined; + redirectUri?: string | undefined; + codeVerifier?: string | undefined; +} +export interface CreateTokenResponse { + accessToken?: string | undefined; + tokenType?: string | undefined; + expiresIn?: number | undefined; + refreshToken?: string | undefined; + idToken?: string | undefined; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.browser.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.browser.d.ts new file mode 100644 index 000000000..3ea17622c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.browser.d.ts @@ -0,0 +1,120 @@ +import { FetchHttpHandler as RequestHandler } from "@smithy/fetch-http-handler"; +import { SSOOIDCClientConfig } from "./SSOOIDCClient"; +export declare const getRuntimeConfig: (config: SSOOIDCClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider< + import("@smithy/smithy-client").ResolvedDefaultsMode + >; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved + ) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: + | import("@smithy/protocol-http").HttpHandler + | RequestHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + cacheMiddleware?: boolean | undefined; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/core").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: + | string + | undefined + | import("@smithy/types").Provider; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + } + )[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SSOOIDCHttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.d.ts new file mode 100644 index 000000000..33a65dae0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.d.ts @@ -0,0 +1,115 @@ +import { NodeHttpHandler as RequestHandler } from "@smithy/node-http-handler"; +import { SSOOIDCClientConfig } from "./SSOOIDCClient"; +export declare const getRuntimeConfig: (config: SSOOIDCClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider< + import("@smithy/smithy-client").ResolvedDefaultsMode + >; + authSchemePreference: string[] | import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-node").PreviouslyResolved + ) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: + | RequestHandler + | import("@smithy/protocol-http").HttpHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: boolean | import("@smithy/types").Provider; + useFipsEndpoint: boolean | import("@smithy/types").Provider; + userAgentAppId: string | import("@smithy/types").Provider; + cacheMiddleware?: boolean | undefined; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/core").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + } + )[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SSOOIDCHttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.native.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.native.d.ts new file mode 100644 index 000000000..685b40ff1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.native.d.ts @@ -0,0 +1,124 @@ +import { SSOOIDCClientConfig } from "./SSOOIDCClient"; +export declare const getRuntimeConfig: (config: SSOOIDCClientConfig) => { + runtime: string; + sha256: import("@smithy/types").HashConstructor; + requestHandler: + | import("@smithy/types").NodeHttpHandlerOptions + | import("@smithy/types").FetchHttpHandlerOptions + | Record + | import("@smithy/protocol-http").HttpHandler + | import("@smithy/fetch-http-handler").FetchHttpHandler; + cacheMiddleware?: boolean; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/core").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + streamCollector: import("@smithy/types").StreamCollector; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + region: string | import("@smithy/types").Provider; + profile?: string; + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved + ) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + retryMode: string | import("@smithy/types").Provider; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + defaultsMode: + | import("@smithy/smithy-client").DefaultsMode + | import("@smithy/types").Provider< + import("@smithy/smithy-client").DefaultsMode + >; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: + | string + | undefined + | import("@smithy/types").Provider; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + } + )[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SSOOIDCHttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.shared.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.shared.d.ts new file mode 100644 index 000000000..38aa96ef1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.shared.d.ts @@ -0,0 +1,58 @@ +import { AwsSdkSigV4Signer } from "@aws-sdk/core"; +import { AwsRestJsonProtocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; +import { IdentityProviderConfig } from "@smithy/types"; +import { SSOOIDCClientConfig } from "./SSOOIDCClient"; +export declare const getRuntimeConfig: (config: SSOOIDCClientConfig) => { + apiVersion: string; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + disableHostPrefix: boolean; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SSOOIDCHttpAuthSchemeProvider; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: NoAuthSigner; + } + )[]; + logger: import("@smithy/types").Logger; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof AwsRestJsonProtocol; + protocolSettings: { + [setting: string]: unknown; + defaultNamespace?: string; + }; + serviceId: string; + urlParser: import("@smithy/types").UrlParser; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeExtensions.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeExtensions.d.ts new file mode 100644 index 000000000..d226882e1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeExtensions.d.ts @@ -0,0 +1,11 @@ +import { SSOOIDCExtensionConfiguration } from "./extensionConfiguration"; +export interface RuntimeExtension { + configure(extensionConfiguration: SSOOIDCExtensionConfiguration): void; +} +export interface RuntimeExtensionsConfig { + extensions: RuntimeExtension[]; +} +export declare const resolveRuntimeExtensions: ( + runtimeConfig: any, + extensions: RuntimeExtension[] +) => any; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/schemas/schemas_0.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/schemas/schemas_0.d.ts new file mode 100644 index 000000000..446e4fb67 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/schemas/schemas_0.d.ts @@ -0,0 +1,22 @@ +import { TypeRegistry } from "@smithy/core/schema"; +import { + StaticErrorSchema, + StaticOperationSchema, + StaticStructureSchema, +} from "@smithy/types"; +export declare var SSOOIDCServiceException$: StaticErrorSchema; +export declare var AccessDeniedException$: StaticErrorSchema; +export declare var AuthorizationPendingException$: StaticErrorSchema; +export declare var ExpiredTokenException$: StaticErrorSchema; +export declare var InternalServerException$: StaticErrorSchema; +export declare var InvalidClientException$: StaticErrorSchema; +export declare var InvalidGrantException$: StaticErrorSchema; +export declare var InvalidRequestException$: StaticErrorSchema; +export declare var InvalidScopeException$: StaticErrorSchema; +export declare var SlowDownException$: StaticErrorSchema; +export declare var UnauthorizedClientException$: StaticErrorSchema; +export declare var UnsupportedGrantTypeException$: StaticErrorSchema; +export declare const errorTypeRegistries: TypeRegistry[]; +export declare var CreateTokenRequest$: StaticStructureSchema; +export declare var CreateTokenResponse$: StaticStructureSchema; +export declare var CreateToken$: StaticOperationSchema; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/SSO.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/SSO.d.ts new file mode 100644 index 000000000..aaf662891 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/SSO.d.ts @@ -0,0 +1,22 @@ +import { HttpHandlerOptions as __HttpHandlerOptions } from "@smithy/types"; +import { + GetRoleCredentialsCommandInput, + GetRoleCredentialsCommandOutput, +} from "./commands/GetRoleCredentialsCommand"; +import { SSOClient } from "./SSOClient"; +export interface SSO { + getRoleCredentials( + args: GetRoleCredentialsCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getRoleCredentials( + args: GetRoleCredentialsCommandInput, + cb: (err: any, data?: GetRoleCredentialsCommandOutput) => void + ): void; + getRoleCredentials( + args: GetRoleCredentialsCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetRoleCredentialsCommandOutput) => void + ): void; +} +export declare class SSO extends SSOClient implements SSO {} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/SSOClient.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/SSOClient.d.ts new file mode 100644 index 000000000..cc07ef71c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/SSOClient.d.ts @@ -0,0 +1,117 @@ +import { + HostHeaderInputConfig, + HostHeaderResolvedConfig, +} from "@aws-sdk/middleware-host-header"; +import { + UserAgentInputConfig, + UserAgentResolvedConfig, +} from "@aws-sdk/middleware-user-agent"; +import { + RegionInputConfig, + RegionResolvedConfig, +} from "@smithy/config-resolver"; +import { + EndpointInputConfig, + EndpointResolvedConfig, +} from "@smithy/middleware-endpoint"; +import { + RetryInputConfig, + RetryResolvedConfig, +} from "@smithy/middleware-retry"; +import { HttpHandlerUserInput as __HttpHandlerUserInput } from "@smithy/protocol-http"; +import { + DefaultsMode as __DefaultsMode, + SmithyConfiguration as __SmithyConfiguration, + SmithyResolvedConfiguration as __SmithyResolvedConfiguration, + Client as __Client, +} from "@smithy/smithy-client"; +import { Provider, UserAgent as __UserAgent } from "@smithy/types"; +import { + BodyLengthCalculator as __BodyLengthCalculator, + CheckOptionalClientConfig as __CheckOptionalClientConfig, + ChecksumConstructor as __ChecksumConstructor, + Decoder as __Decoder, + Encoder as __Encoder, + HashConstructor as __HashConstructor, + HttpHandlerOptions as __HttpHandlerOptions, + Logger as __Logger, + Provider as __Provider, + StreamCollector as __StreamCollector, + UrlParser as __UrlParser, +} from "@smithy/types"; +import { + HttpAuthSchemeInputConfig, + HttpAuthSchemeResolvedConfig, +} from "./auth/httpAuthSchemeProvider"; +import { + GetRoleCredentialsCommandInput, + GetRoleCredentialsCommandOutput, +} from "./commands/GetRoleCredentialsCommand"; +import { + ClientInputEndpointParameters, + ClientResolvedEndpointParameters, + EndpointParameters, +} from "./endpoint/EndpointParameters"; +import { RuntimeExtension, RuntimeExtensionsConfig } from "./runtimeExtensions"; +export { __Client }; +export type ServiceInputTypes = GetRoleCredentialsCommandInput; +export type ServiceOutputTypes = GetRoleCredentialsCommandOutput; +export interface ClientDefaults + extends Partial<__SmithyConfiguration<__HttpHandlerOptions>> { + requestHandler?: __HttpHandlerUserInput; + sha256?: __ChecksumConstructor | __HashConstructor; + urlParser?: __UrlParser; + bodyLengthChecker?: __BodyLengthCalculator; + streamCollector?: __StreamCollector; + base64Decoder?: __Decoder; + base64Encoder?: __Encoder; + utf8Decoder?: __Decoder; + utf8Encoder?: __Encoder; + runtime?: string; + disableHostPrefix?: boolean; + serviceId?: string; + useDualstackEndpoint?: boolean | __Provider; + useFipsEndpoint?: boolean | __Provider; + region?: string | __Provider; + profile?: string; + defaultUserAgentProvider?: Provider<__UserAgent>; + maxAttempts?: number | __Provider; + retryMode?: string | __Provider; + logger?: __Logger; + extensions?: RuntimeExtension[]; + defaultsMode?: __DefaultsMode | __Provider<__DefaultsMode>; +} +export type SSOClientConfigType = Partial< + __SmithyConfiguration<__HttpHandlerOptions> +> & + ClientDefaults & + UserAgentInputConfig & + RetryInputConfig & + RegionInputConfig & + HostHeaderInputConfig & + EndpointInputConfig & + HttpAuthSchemeInputConfig & + ClientInputEndpointParameters; +export interface SSOClientConfig extends SSOClientConfigType {} +export type SSOClientResolvedConfigType = + __SmithyResolvedConfiguration<__HttpHandlerOptions> & + Required & + RuntimeExtensionsConfig & + UserAgentResolvedConfig & + RetryResolvedConfig & + RegionResolvedConfig & + HostHeaderResolvedConfig & + EndpointResolvedConfig & + HttpAuthSchemeResolvedConfig & + ClientResolvedEndpointParameters; +export interface SSOClientResolvedConfig extends SSOClientResolvedConfigType {} +export declare class SSOClient extends __Client< + __HttpHandlerOptions, + ServiceInputTypes, + ServiceOutputTypes, + SSOClientResolvedConfig +> { + readonly config: SSOClientResolvedConfig; + constructor(...[configuration]: __CheckOptionalClientConfig); + destroy(): void; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/auth/httpAuthExtensionConfiguration.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/auth/httpAuthExtensionConfiguration.d.ts new file mode 100644 index 000000000..f610df034 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/auth/httpAuthExtensionConfiguration.d.ts @@ -0,0 +1,32 @@ +import { + AwsCredentialIdentity, + AwsCredentialIdentityProvider, +} from "@smithy/types"; +import { HttpAuthScheme } from "@smithy/types"; +import { SSOHttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; +export interface HttpAuthExtensionConfiguration { + setHttpAuthScheme(httpAuthScheme: HttpAuthScheme): void; + httpAuthSchemes(): HttpAuthScheme[]; + setHttpAuthSchemeProvider( + httpAuthSchemeProvider: SSOHttpAuthSchemeProvider + ): void; + httpAuthSchemeProvider(): SSOHttpAuthSchemeProvider; + setCredentials( + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider + ): void; + credentials(): + | AwsCredentialIdentity + | AwsCredentialIdentityProvider + | undefined; +} +export type HttpAuthRuntimeConfig = Partial<{ + httpAuthSchemes: HttpAuthScheme[]; + httpAuthSchemeProvider: SSOHttpAuthSchemeProvider; + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider; +}>; +export declare const getHttpAuthExtensionConfiguration: ( + runtimeConfig: HttpAuthRuntimeConfig +) => HttpAuthExtensionConfiguration; +export declare const resolveHttpAuthRuntimeConfig: ( + config: HttpAuthExtensionConfiguration +) => HttpAuthRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/auth/httpAuthSchemeProvider.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/auth/httpAuthSchemeProvider.d.ts new file mode 100644 index 000000000..864f755cc --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/auth/httpAuthSchemeProvider.d.ts @@ -0,0 +1,46 @@ +import { + AwsSdkSigV4AuthInputConfig, + AwsSdkSigV4AuthResolvedConfig, + AwsSdkSigV4PreviouslyResolved, +} from "@aws-sdk/core"; +import { + HandlerExecutionContext, + HttpAuthScheme, + HttpAuthSchemeParameters, + HttpAuthSchemeParametersProvider, + HttpAuthSchemeProvider, + Provider, +} from "@smithy/types"; +import { SSOClientResolvedConfig } from "../SSOClient"; +export interface SSOHttpAuthSchemeParameters extends HttpAuthSchemeParameters { + region?: string; +} +export interface SSOHttpAuthSchemeParametersProvider + extends HttpAuthSchemeParametersProvider< + SSOClientResolvedConfig, + HandlerExecutionContext, + SSOHttpAuthSchemeParameters, + object + > {} +export declare const defaultSSOHttpAuthSchemeParametersProvider: ( + config: SSOClientResolvedConfig, + context: HandlerExecutionContext, + input: object +) => Promise; +export interface SSOHttpAuthSchemeProvider + extends HttpAuthSchemeProvider {} +export declare const defaultSSOHttpAuthSchemeProvider: SSOHttpAuthSchemeProvider; +export interface HttpAuthSchemeInputConfig extends AwsSdkSigV4AuthInputConfig { + authSchemePreference?: string[] | Provider; + httpAuthSchemes?: HttpAuthScheme[]; + httpAuthSchemeProvider?: SSOHttpAuthSchemeProvider; +} +export interface HttpAuthSchemeResolvedConfig + extends AwsSdkSigV4AuthResolvedConfig { + readonly authSchemePreference: Provider; + readonly httpAuthSchemes: HttpAuthScheme[]; + readonly httpAuthSchemeProvider: SSOHttpAuthSchemeProvider; +} +export declare const resolveHttpAuthSchemeConfig: ( + config: T & HttpAuthSchemeInputConfig & AwsSdkSigV4PreviouslyResolved +) => T & HttpAuthSchemeResolvedConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/commands/GetRoleCredentialsCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/commands/GetRoleCredentialsCommand.d.ts new file mode 100644 index 000000000..6b58e62be --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/commands/GetRoleCredentialsCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + GetRoleCredentialsRequest, + GetRoleCredentialsResponse, +} from "../models/models_0"; +import { SSOClientResolvedConfig } from "../SSOClient"; +export { __MetadataBearer }; +export { $Command }; +export interface GetRoleCredentialsCommandInput + extends GetRoleCredentialsRequest {} +export interface GetRoleCredentialsCommandOutput + extends GetRoleCredentialsResponse, + __MetadataBearer {} +declare const GetRoleCredentialsCommand_base: { + new ( + input: GetRoleCredentialsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetRoleCredentialsCommandInput, + GetRoleCredentialsCommandOutput, + SSOClientResolvedConfig, + GetRoleCredentialsCommandInput, + GetRoleCredentialsCommandOutput + >; + new ( + input: GetRoleCredentialsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetRoleCredentialsCommandInput, + GetRoleCredentialsCommandOutput, + SSOClientResolvedConfig, + GetRoleCredentialsCommandInput, + GetRoleCredentialsCommandOutput + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetRoleCredentialsCommand extends GetRoleCredentialsCommand_base { + protected static __types: { + api: { + input: GetRoleCredentialsRequest; + output: GetRoleCredentialsResponse; + }; + sdk: { + input: GetRoleCredentialsCommandInput; + output: GetRoleCredentialsCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/commands/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/commands/index.d.ts new file mode 100644 index 000000000..69ba055c7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/commands/index.d.ts @@ -0,0 +1 @@ +export * from "./GetRoleCredentialsCommand"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/endpoint/EndpointParameters.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/endpoint/EndpointParameters.d.ts new file mode 100644 index 000000000..c4baac5c4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/endpoint/EndpointParameters.d.ts @@ -0,0 +1,51 @@ +import { + Endpoint, + EndpointParameters as __EndpointParameters, + EndpointV2, + Provider, +} from "@smithy/types"; +export interface ClientInputEndpointParameters { + region?: string | undefined | Provider; + useDualstackEndpoint?: boolean | undefined | Provider; + useFipsEndpoint?: boolean | undefined | Provider; + endpoint?: + | string + | Provider + | Endpoint + | Provider + | EndpointV2 + | Provider; +} +export type ClientResolvedEndpointParameters = Pick< + ClientInputEndpointParameters, + Exclude +> & { + defaultSigningName: string; +}; +export declare const resolveClientEndpointParameters: ( + options: T & ClientInputEndpointParameters +) => T & ClientResolvedEndpointParameters; +export declare const commonParams: { + readonly UseFIPS: { + readonly type: "builtInParams"; + readonly name: "useFipsEndpoint"; + }; + readonly Endpoint: { + readonly type: "builtInParams"; + readonly name: "endpoint"; + }; + readonly Region: { + readonly type: "builtInParams"; + readonly name: "region"; + }; + readonly UseDualStack: { + readonly type: "builtInParams"; + readonly name: "useDualstackEndpoint"; + }; +}; +export interface EndpointParameters extends __EndpointParameters { + Region?: string | undefined; + UseDualStack?: boolean | undefined; + UseFIPS?: boolean | undefined; + Endpoint?: string | undefined; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/endpoint/endpointResolver.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/endpoint/endpointResolver.d.ts new file mode 100644 index 000000000..590992544 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/endpoint/endpointResolver.d.ts @@ -0,0 +1,8 @@ +import { EndpointV2, Logger } from "@smithy/types"; +import { EndpointParameters } from "./EndpointParameters"; +export declare const defaultEndpointResolver: ( + endpointParams: EndpointParameters, + context?: { + logger?: Logger; + } +) => EndpointV2; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/endpoint/ruleset.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/endpoint/ruleset.d.ts new file mode 100644 index 000000000..4b238994b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/endpoint/ruleset.d.ts @@ -0,0 +1,2 @@ +import { RuleSetObject } from "@smithy/types"; +export declare const ruleSet: RuleSetObject; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/extensionConfiguration.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/extensionConfiguration.d.ts new file mode 100644 index 000000000..c1b43ff4c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/extensionConfiguration.d.ts @@ -0,0 +1,9 @@ +import { AwsRegionExtensionConfiguration } from "@aws-sdk/types"; +import { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; +import { DefaultExtensionConfiguration } from "@smithy/types"; +import { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; +export interface SSOExtensionConfiguration + extends HttpHandlerExtensionConfiguration, + DefaultExtensionConfiguration, + AwsRegionExtensionConfiguration, + HttpAuthExtensionConfiguration {} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/index.d.ts new file mode 100644 index 000000000..3c592ed3c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/index.d.ts @@ -0,0 +1,10 @@ +export * from "./SSOClient"; +export * from "./SSO"; +export { ClientInputEndpointParameters } from "./endpoint/EndpointParameters"; +export { RuntimeExtension } from "./runtimeExtensions"; +export { SSOExtensionConfiguration } from "./extensionConfiguration"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./models/errors"; +export * from "./models/models_0"; +export { SSOServiceException } from "./models/SSOServiceException"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/models/SSOServiceException.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/models/SSOServiceException.d.ts new file mode 100644 index 000000000..4ab1cb248 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/models/SSOServiceException.d.ts @@ -0,0 +1,9 @@ +import { + ServiceExceptionOptions as __ServiceExceptionOptions, + ServiceException as __ServiceException, +} from "@smithy/smithy-client"; +export { __ServiceExceptionOptions }; +export { __ServiceException }; +export declare class SSOServiceException extends __ServiceException { + constructor(options: __ServiceExceptionOptions); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/models/errors.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/models/errors.d.ts new file mode 100644 index 000000000..2a2eaf75c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/models/errors.d.ts @@ -0,0 +1,30 @@ +import { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; +import { SSOServiceException as __BaseException } from "./SSOServiceException"; +export declare class InvalidRequestException extends __BaseException { + readonly name: "InvalidRequestException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class ResourceNotFoundException extends __BaseException { + readonly name: "ResourceNotFoundException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class TooManyRequestsException extends __BaseException { + readonly name: "TooManyRequestsException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class UnauthorizedException extends __BaseException { + readonly name: "UnauthorizedException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/models/models_0.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/models/models_0.d.ts new file mode 100644 index 000000000..0eac10409 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/models/models_0.d.ts @@ -0,0 +1,14 @@ +export interface GetRoleCredentialsRequest { + roleName: string | undefined; + accountId: string | undefined; + accessToken: string | undefined; +} +export interface RoleCredentials { + accessKeyId?: string | undefined; + secretAccessKey?: string | undefined; + sessionToken?: string | undefined; + expiration?: number | undefined; +} +export interface GetRoleCredentialsResponse { + roleCredentials?: RoleCredentials | undefined; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.browser.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.browser.d.ts new file mode 100644 index 000000000..291ea4fac --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.browser.d.ts @@ -0,0 +1,120 @@ +import { FetchHttpHandler as RequestHandler } from "@smithy/fetch-http-handler"; +import { SSOClientConfig } from "./SSOClient"; +export declare const getRuntimeConfig: (config: SSOClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider< + import("@smithy/smithy-client").ResolvedDefaultsMode + >; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved + ) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: + | import("@smithy/protocol-http").HttpHandler + | RequestHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + cacheMiddleware?: boolean | undefined; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/core").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: + | string + | undefined + | import("@smithy/types").Provider; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + } + )[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SSOHttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.d.ts new file mode 100644 index 000000000..9abfeee0a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.d.ts @@ -0,0 +1,115 @@ +import { NodeHttpHandler as RequestHandler } from "@smithy/node-http-handler"; +import { SSOClientConfig } from "./SSOClient"; +export declare const getRuntimeConfig: (config: SSOClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider< + import("@smithy/smithy-client").ResolvedDefaultsMode + >; + authSchemePreference: string[] | import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-node").PreviouslyResolved + ) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: + | RequestHandler + | import("@smithy/protocol-http").HttpHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: boolean | import("@smithy/types").Provider; + useFipsEndpoint: boolean | import("@smithy/types").Provider; + userAgentAppId: string | import("@smithy/types").Provider; + cacheMiddleware?: boolean | undefined; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/core").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + } + )[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SSOHttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.native.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.native.d.ts new file mode 100644 index 000000000..a9c74c79b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.native.d.ts @@ -0,0 +1,124 @@ +import { SSOClientConfig } from "./SSOClient"; +export declare const getRuntimeConfig: (config: SSOClientConfig) => { + runtime: string; + sha256: import("@smithy/types").HashConstructor; + requestHandler: + | import("@smithy/types").NodeHttpHandlerOptions + | import("@smithy/types").FetchHttpHandlerOptions + | Record + | import("@smithy/protocol-http").HttpHandler + | import("@smithy/fetch-http-handler").FetchHttpHandler; + cacheMiddleware?: boolean; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/core").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + streamCollector: import("@smithy/types").StreamCollector; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + region: string | import("@smithy/types").Provider; + profile?: string; + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved + ) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + retryMode: string | import("@smithy/types").Provider; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + defaultsMode: + | import("@smithy/smithy-client").DefaultsMode + | import("@smithy/types").Provider< + import("@smithy/smithy-client").DefaultsMode + >; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: + | string + | undefined + | import("@smithy/types").Provider; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + } + )[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SSOHttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.shared.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.shared.d.ts new file mode 100644 index 000000000..1d2bdf7b3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.shared.d.ts @@ -0,0 +1,58 @@ +import { AwsSdkSigV4Signer } from "@aws-sdk/core"; +import { AwsRestJsonProtocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; +import { IdentityProviderConfig } from "@smithy/types"; +import { SSOClientConfig } from "./SSOClient"; +export declare const getRuntimeConfig: (config: SSOClientConfig) => { + apiVersion: string; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + disableHostPrefix: boolean; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SSOHttpAuthSchemeProvider; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: NoAuthSigner; + } + )[]; + logger: import("@smithy/types").Logger; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof AwsRestJsonProtocol; + protocolSettings: { + [setting: string]: unknown; + defaultNamespace?: string; + }; + serviceId: string; + urlParser: import("@smithy/types").UrlParser; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeExtensions.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeExtensions.d.ts new file mode 100644 index 000000000..fbec1e52a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeExtensions.d.ts @@ -0,0 +1,11 @@ +import { SSOExtensionConfiguration } from "./extensionConfiguration"; +export interface RuntimeExtension { + configure(extensionConfiguration: SSOExtensionConfiguration): void; +} +export interface RuntimeExtensionsConfig { + extensions: RuntimeExtension[]; +} +export declare const resolveRuntimeExtensions: ( + runtimeConfig: any, + extensions: RuntimeExtension[] +) => any; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/schemas/schemas_0.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/schemas/schemas_0.d.ts new file mode 100644 index 000000000..df61d4a8a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/schemas/schemas_0.d.ts @@ -0,0 +1,16 @@ +import { TypeRegistry } from "@smithy/core/schema"; +import { + StaticErrorSchema, + StaticOperationSchema, + StaticStructureSchema, +} from "@smithy/types"; +export declare var SSOServiceException$: StaticErrorSchema; +export declare var InvalidRequestException$: StaticErrorSchema; +export declare var ResourceNotFoundException$: StaticErrorSchema; +export declare var TooManyRequestsException$: StaticErrorSchema; +export declare var UnauthorizedException$: StaticErrorSchema; +export declare const errorTypeRegistries: TypeRegistry[]; +export declare var GetRoleCredentialsRequest$: StaticStructureSchema; +export declare var GetRoleCredentialsResponse$: StaticStructureSchema; +export declare var RoleCredentials$: StaticStructureSchema; +export declare var GetRoleCredentials$: StaticOperationSchema; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/STS.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/STS.d.ts new file mode 100644 index 000000000..cca9cbbac --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/STS.d.ts @@ -0,0 +1,39 @@ +import { HttpHandlerOptions as __HttpHandlerOptions } from "@smithy/types"; +import { + AssumeRoleCommandInput, + AssumeRoleCommandOutput, +} from "./commands/AssumeRoleCommand"; +import { + AssumeRoleWithWebIdentityCommandInput, + AssumeRoleWithWebIdentityCommandOutput, +} from "./commands/AssumeRoleWithWebIdentityCommand"; +import { STSClient } from "./STSClient"; +export interface STS { + assumeRole( + args: AssumeRoleCommandInput, + options?: __HttpHandlerOptions + ): Promise; + assumeRole( + args: AssumeRoleCommandInput, + cb: (err: any, data?: AssumeRoleCommandOutput) => void + ): void; + assumeRole( + args: AssumeRoleCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: AssumeRoleCommandOutput) => void + ): void; + assumeRoleWithWebIdentity( + args: AssumeRoleWithWebIdentityCommandInput, + options?: __HttpHandlerOptions + ): Promise; + assumeRoleWithWebIdentity( + args: AssumeRoleWithWebIdentityCommandInput, + cb: (err: any, data?: AssumeRoleWithWebIdentityCommandOutput) => void + ): void; + assumeRoleWithWebIdentity( + args: AssumeRoleWithWebIdentityCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: AssumeRoleWithWebIdentityCommandOutput) => void + ): void; +} +export declare class STS extends STSClient implements STS {} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/STSClient.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/STSClient.d.ts new file mode 100644 index 000000000..a8578a24c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/STSClient.d.ts @@ -0,0 +1,130 @@ +import { + HostHeaderInputConfig, + HostHeaderResolvedConfig, +} from "@aws-sdk/middleware-host-header"; +import { + UserAgentInputConfig, + UserAgentResolvedConfig, +} from "@aws-sdk/middleware-user-agent"; +import { + RegionInputConfig, + RegionResolvedConfig, +} from "@smithy/config-resolver"; +import { + EndpointInputConfig, + EndpointResolvedConfig, +} from "@smithy/middleware-endpoint"; +import { + RetryInputConfig, + RetryResolvedConfig, +} from "@smithy/middleware-retry"; +import { HttpHandlerUserInput as __HttpHandlerUserInput } from "@smithy/protocol-http"; +import { + DefaultsMode as __DefaultsMode, + SmithyConfiguration as __SmithyConfiguration, + SmithyResolvedConfiguration as __SmithyResolvedConfiguration, + Client as __Client, +} from "@smithy/smithy-client"; +import { + AwsCredentialIdentityProvider, + Provider, + UserAgent as __UserAgent, +} from "@smithy/types"; +import { + BodyLengthCalculator as __BodyLengthCalculator, + CheckOptionalClientConfig as __CheckOptionalClientConfig, + ChecksumConstructor as __ChecksumConstructor, + Decoder as __Decoder, + Encoder as __Encoder, + HashConstructor as __HashConstructor, + HttpHandlerOptions as __HttpHandlerOptions, + Logger as __Logger, + Provider as __Provider, + StreamCollector as __StreamCollector, + UrlParser as __UrlParser, +} from "@smithy/types"; +import { + HttpAuthSchemeInputConfig, + HttpAuthSchemeResolvedConfig, +} from "./auth/httpAuthSchemeProvider"; +import { + AssumeRoleCommandInput, + AssumeRoleCommandOutput, +} from "./commands/AssumeRoleCommand"; +import { + AssumeRoleWithWebIdentityCommandInput, + AssumeRoleWithWebIdentityCommandOutput, +} from "./commands/AssumeRoleWithWebIdentityCommand"; +import { + ClientInputEndpointParameters, + ClientResolvedEndpointParameters, + EndpointParameters, +} from "./endpoint/EndpointParameters"; +import { RuntimeExtension, RuntimeExtensionsConfig } from "./runtimeExtensions"; +export { __Client }; +export type ServiceInputTypes = + | AssumeRoleCommandInput + | AssumeRoleWithWebIdentityCommandInput; +export type ServiceOutputTypes = + | AssumeRoleCommandOutput + | AssumeRoleWithWebIdentityCommandOutput; +export interface ClientDefaults + extends Partial<__SmithyConfiguration<__HttpHandlerOptions>> { + requestHandler?: __HttpHandlerUserInput; + sha256?: __ChecksumConstructor | __HashConstructor; + urlParser?: __UrlParser; + bodyLengthChecker?: __BodyLengthCalculator; + streamCollector?: __StreamCollector; + base64Decoder?: __Decoder; + base64Encoder?: __Encoder; + utf8Decoder?: __Decoder; + utf8Encoder?: __Encoder; + runtime?: string; + disableHostPrefix?: boolean; + serviceId?: string; + useDualstackEndpoint?: boolean | __Provider; + useFipsEndpoint?: boolean | __Provider; + region?: string | __Provider; + profile?: string; + defaultUserAgentProvider?: Provider<__UserAgent>; + credentialDefaultProvider?: (input: any) => AwsCredentialIdentityProvider; + maxAttempts?: number | __Provider; + retryMode?: string | __Provider; + logger?: __Logger; + extensions?: RuntimeExtension[]; + defaultsMode?: __DefaultsMode | __Provider<__DefaultsMode>; +} +export type STSClientConfigType = Partial< + __SmithyConfiguration<__HttpHandlerOptions> +> & + ClientDefaults & + UserAgentInputConfig & + RetryInputConfig & + RegionInputConfig & + HostHeaderInputConfig & + EndpointInputConfig & + HttpAuthSchemeInputConfig & + ClientInputEndpointParameters; +export interface STSClientConfig extends STSClientConfigType {} +export type STSClientResolvedConfigType = + __SmithyResolvedConfiguration<__HttpHandlerOptions> & + Required & + RuntimeExtensionsConfig & + UserAgentResolvedConfig & + RetryResolvedConfig & + RegionResolvedConfig & + HostHeaderResolvedConfig & + EndpointResolvedConfig & + HttpAuthSchemeResolvedConfig & + ClientResolvedEndpointParameters; +export interface STSClientResolvedConfig extends STSClientResolvedConfigType {} +export declare class STSClient extends __Client< + __HttpHandlerOptions, + ServiceInputTypes, + ServiceOutputTypes, + STSClientResolvedConfig +> { + readonly config: STSClientResolvedConfig; + constructor(...[configuration]: __CheckOptionalClientConfig); + destroy(): void; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/auth/httpAuthExtensionConfiguration.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/auth/httpAuthExtensionConfiguration.d.ts new file mode 100644 index 000000000..7511a0ef5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/auth/httpAuthExtensionConfiguration.d.ts @@ -0,0 +1,32 @@ +import { + AwsCredentialIdentity, + AwsCredentialIdentityProvider, +} from "@smithy/types"; +import { HttpAuthScheme } from "@smithy/types"; +import { STSHttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; +export interface HttpAuthExtensionConfiguration { + setHttpAuthScheme(httpAuthScheme: HttpAuthScheme): void; + httpAuthSchemes(): HttpAuthScheme[]; + setHttpAuthSchemeProvider( + httpAuthSchemeProvider: STSHttpAuthSchemeProvider + ): void; + httpAuthSchemeProvider(): STSHttpAuthSchemeProvider; + setCredentials( + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider + ): void; + credentials(): + | AwsCredentialIdentity + | AwsCredentialIdentityProvider + | undefined; +} +export type HttpAuthRuntimeConfig = Partial<{ + httpAuthSchemes: HttpAuthScheme[]; + httpAuthSchemeProvider: STSHttpAuthSchemeProvider; + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider; +}>; +export declare const getHttpAuthExtensionConfiguration: ( + runtimeConfig: HttpAuthRuntimeConfig +) => HttpAuthExtensionConfiguration; +export declare const resolveHttpAuthRuntimeConfig: ( + config: HttpAuthExtensionConfiguration +) => HttpAuthRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/auth/httpAuthSchemeProvider.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/auth/httpAuthSchemeProvider.d.ts new file mode 100644 index 000000000..535964fee --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/auth/httpAuthSchemeProvider.d.ts @@ -0,0 +1,57 @@ +import { + AwsSdkSigV4AuthInputConfig, + AwsSdkSigV4AuthResolvedConfig, + AwsSdkSigV4PreviouslyResolved, +} from "@aws-sdk/core"; +import { Client } from "@smithy/types"; +import { + HandlerExecutionContext, + HttpAuthScheme, + HttpAuthSchemeParameters, + HttpAuthSchemeParametersProvider, + HttpAuthSchemeProvider, + Provider, +} from "@smithy/types"; +import { STSClientResolvedConfig } from "../STSClient"; +export interface STSHttpAuthSchemeParameters extends HttpAuthSchemeParameters { + region?: string; +} +export interface STSHttpAuthSchemeParametersProvider + extends HttpAuthSchemeParametersProvider< + STSClientResolvedConfig, + HandlerExecutionContext, + STSHttpAuthSchemeParameters, + object + > {} +export declare const defaultSTSHttpAuthSchemeParametersProvider: ( + config: STSClientResolvedConfig, + context: HandlerExecutionContext, + input: object +) => Promise; +export interface STSHttpAuthSchemeProvider + extends HttpAuthSchemeProvider {} +export declare const defaultSTSHttpAuthSchemeProvider: STSHttpAuthSchemeProvider; +export interface StsAuthInputConfig {} +export interface StsAuthResolvedConfig { + stsClientCtor: new (clientConfig: any) => Client; +} +export declare const resolveStsAuthConfig: ( + input: T & StsAuthInputConfig +) => T & StsAuthResolvedConfig; +export interface HttpAuthSchemeInputConfig + extends StsAuthInputConfig, + AwsSdkSigV4AuthInputConfig { + authSchemePreference?: string[] | Provider; + httpAuthSchemes?: HttpAuthScheme[]; + httpAuthSchemeProvider?: STSHttpAuthSchemeProvider; +} +export interface HttpAuthSchemeResolvedConfig + extends StsAuthResolvedConfig, + AwsSdkSigV4AuthResolvedConfig { + readonly authSchemePreference: Provider; + readonly httpAuthSchemes: HttpAuthScheme[]; + readonly httpAuthSchemeProvider: STSHttpAuthSchemeProvider; +} +export declare const resolveHttpAuthSchemeConfig: ( + config: T & HttpAuthSchemeInputConfig & AwsSdkSigV4PreviouslyResolved +) => T & HttpAuthSchemeResolvedConfig; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/commands/AssumeRoleCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/commands/AssumeRoleCommand.d.ts new file mode 100644 index 000000000..efc55c92f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/commands/AssumeRoleCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { AssumeRoleRequest, AssumeRoleResponse } from "../models/models_0"; +import { + ServiceInputTypes, + ServiceOutputTypes, + STSClientResolvedConfig, +} from "../STSClient"; +export { __MetadataBearer }; +export { $Command }; +export interface AssumeRoleCommandInput extends AssumeRoleRequest {} +export interface AssumeRoleCommandOutput + extends AssumeRoleResponse, + __MetadataBearer {} +declare const AssumeRoleCommand_base: { + new ( + input: AssumeRoleCommandInput + ): import("@smithy/smithy-client").CommandImpl< + AssumeRoleCommandInput, + AssumeRoleCommandOutput, + STSClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: AssumeRoleCommandInput + ): import("@smithy/smithy-client").CommandImpl< + AssumeRoleCommandInput, + AssumeRoleCommandOutput, + STSClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class AssumeRoleCommand extends AssumeRoleCommand_base { + protected static __types: { + api: { + input: AssumeRoleRequest; + output: AssumeRoleResponse; + }; + sdk: { + input: AssumeRoleCommandInput; + output: AssumeRoleCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.d.ts new file mode 100644 index 000000000..941164fb5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + AssumeRoleWithWebIdentityRequest, + AssumeRoleWithWebIdentityResponse, +} from "../models/models_0"; +import { + ServiceInputTypes, + ServiceOutputTypes, + STSClientResolvedConfig, +} from "../STSClient"; +export { __MetadataBearer }; +export { $Command }; +export interface AssumeRoleWithWebIdentityCommandInput + extends AssumeRoleWithWebIdentityRequest {} +export interface AssumeRoleWithWebIdentityCommandOutput + extends AssumeRoleWithWebIdentityResponse, + __MetadataBearer {} +declare const AssumeRoleWithWebIdentityCommand_base: { + new ( + input: AssumeRoleWithWebIdentityCommandInput + ): import("@smithy/smithy-client").CommandImpl< + AssumeRoleWithWebIdentityCommandInput, + AssumeRoleWithWebIdentityCommandOutput, + STSClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: AssumeRoleWithWebIdentityCommandInput + ): import("@smithy/smithy-client").CommandImpl< + AssumeRoleWithWebIdentityCommandInput, + AssumeRoleWithWebIdentityCommandOutput, + STSClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class AssumeRoleWithWebIdentityCommand extends AssumeRoleWithWebIdentityCommand_base { + protected static __types: { + api: { + input: AssumeRoleWithWebIdentityRequest; + output: AssumeRoleWithWebIdentityResponse; + }; + sdk: { + input: AssumeRoleWithWebIdentityCommandInput; + output: AssumeRoleWithWebIdentityCommandOutput; + }; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/commands/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/commands/index.d.ts new file mode 100644 index 000000000..0f200f52c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/commands/index.d.ts @@ -0,0 +1,2 @@ +export * from "./AssumeRoleCommand"; +export * from "./AssumeRoleWithWebIdentityCommand"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/defaultRoleAssumers.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/defaultRoleAssumers.d.ts new file mode 100644 index 000000000..b6f22ccba --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/defaultRoleAssumers.d.ts @@ -0,0 +1,19 @@ +import { Pluggable } from "@smithy/types"; +import { + DefaultCredentialProvider, + RoleAssumer, + RoleAssumerWithWebIdentity, + STSRoleAssumerOptions, +} from "./defaultStsRoleAssumers"; +import { ServiceInputTypes, ServiceOutputTypes } from "./STSClient"; +export declare const getDefaultRoleAssumer: ( + stsOptions?: STSRoleAssumerOptions, + stsPlugins?: Pluggable[] +) => RoleAssumer; +export declare const getDefaultRoleAssumerWithWebIdentity: ( + stsOptions?: STSRoleAssumerOptions, + stsPlugins?: Pluggable[] +) => RoleAssumerWithWebIdentity; +export declare const decorateDefaultCredentialProvider: ( + provider: DefaultCredentialProvider +) => DefaultCredentialProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/defaultStsRoleAssumers.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/defaultStsRoleAssumers.d.ts new file mode 100644 index 000000000..2da7241b6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/defaultStsRoleAssumers.d.ts @@ -0,0 +1,33 @@ +import { CredentialProviderOptions } from "@aws-sdk/types"; +import { AwsCredentialIdentity, Logger, Provider } from "@smithy/types"; +import { AssumeRoleCommandInput } from "./commands/AssumeRoleCommand"; +import { AssumeRoleWithWebIdentityCommandInput } from "./commands/AssumeRoleWithWebIdentityCommand"; +import { STSClient, STSClientConfig } from "./STSClient"; +export type STSRoleAssumerOptions = Pick< + STSClientConfig, + "logger" | "region" | "requestHandler" | "profile" | "userAgentAppId" +> & { + credentialProviderLogger?: Logger; + parentClientConfig?: CredentialProviderOptions["parentClientConfig"]; +}; +export type RoleAssumer = ( + sourceCreds: AwsCredentialIdentity, + params: AssumeRoleCommandInput +) => Promise; +export declare const getDefaultRoleAssumer: ( + stsOptions: STSRoleAssumerOptions, + STSClient: new (options: STSClientConfig) => STSClient +) => RoleAssumer; +export type RoleAssumerWithWebIdentity = ( + params: AssumeRoleWithWebIdentityCommandInput +) => Promise; +export declare const getDefaultRoleAssumerWithWebIdentity: ( + stsOptions: STSRoleAssumerOptions, + STSClient: new (options: STSClientConfig) => STSClient +) => RoleAssumerWithWebIdentity; +export type DefaultCredentialProvider = ( + input: any +) => Provider; +export declare const decorateDefaultCredentialProvider: ( + provider: DefaultCredentialProvider +) => DefaultCredentialProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/endpoint/EndpointParameters.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/endpoint/EndpointParameters.d.ts new file mode 100644 index 000000000..7ff3fe594 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/endpoint/EndpointParameters.d.ts @@ -0,0 +1,57 @@ +import { + Endpoint, + EndpointParameters as __EndpointParameters, + EndpointV2, + Provider, +} from "@smithy/types"; +export interface ClientInputEndpointParameters { + region?: string | undefined | Provider; + useDualstackEndpoint?: boolean | undefined | Provider; + useFipsEndpoint?: boolean | undefined | Provider; + endpoint?: + | string + | Provider + | Endpoint + | Provider + | EndpointV2 + | Provider; + useGlobalEndpoint?: boolean | undefined | Provider; +} +export type ClientResolvedEndpointParameters = Pick< + ClientInputEndpointParameters, + Exclude +> & { + defaultSigningName: string; +}; +export declare const resolveClientEndpointParameters: ( + options: T & ClientInputEndpointParameters +) => T & ClientResolvedEndpointParameters; +export declare const commonParams: { + readonly UseGlobalEndpoint: { + readonly type: "builtInParams"; + readonly name: "useGlobalEndpoint"; + }; + readonly UseFIPS: { + readonly type: "builtInParams"; + readonly name: "useFipsEndpoint"; + }; + readonly Endpoint: { + readonly type: "builtInParams"; + readonly name: "endpoint"; + }; + readonly Region: { + readonly type: "builtInParams"; + readonly name: "region"; + }; + readonly UseDualStack: { + readonly type: "builtInParams"; + readonly name: "useDualstackEndpoint"; + }; +}; +export interface EndpointParameters extends __EndpointParameters { + Region?: string | undefined; + UseDualStack?: boolean | undefined; + UseFIPS?: boolean | undefined; + Endpoint?: string | undefined; + UseGlobalEndpoint?: boolean | undefined; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/endpoint/endpointResolver.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/endpoint/endpointResolver.d.ts new file mode 100644 index 000000000..590992544 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/endpoint/endpointResolver.d.ts @@ -0,0 +1,8 @@ +import { EndpointV2, Logger } from "@smithy/types"; +import { EndpointParameters } from "./EndpointParameters"; +export declare const defaultEndpointResolver: ( + endpointParams: EndpointParameters, + context?: { + logger?: Logger; + } +) => EndpointV2; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/endpoint/ruleset.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/endpoint/ruleset.d.ts new file mode 100644 index 000000000..4b238994b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/endpoint/ruleset.d.ts @@ -0,0 +1,2 @@ +import { RuleSetObject } from "@smithy/types"; +export declare const ruleSet: RuleSetObject; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/extensionConfiguration.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/extensionConfiguration.d.ts new file mode 100644 index 000000000..14b124b30 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/extensionConfiguration.d.ts @@ -0,0 +1,9 @@ +import { AwsRegionExtensionConfiguration } from "@aws-sdk/types"; +import { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; +import { DefaultExtensionConfiguration } from "@smithy/types"; +import { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; +export interface STSExtensionConfiguration + extends HttpHandlerExtensionConfiguration, + DefaultExtensionConfiguration, + AwsRegionExtensionConfiguration, + HttpAuthExtensionConfiguration {} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/index.d.ts new file mode 100644 index 000000000..796e687bc --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/index.d.ts @@ -0,0 +1,11 @@ +export * from "./STSClient"; +export * from "./STS"; +export { ClientInputEndpointParameters } from "./endpoint/EndpointParameters"; +export { RuntimeExtension } from "./runtimeExtensions"; +export { STSExtensionConfiguration } from "./extensionConfiguration"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./models/errors"; +export * from "./models/models_0"; +export * from "./defaultRoleAssumers"; +export { STSServiceException } from "./models/STSServiceException"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/models/STSServiceException.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/models/STSServiceException.d.ts new file mode 100644 index 000000000..18621a2b8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/models/STSServiceException.d.ts @@ -0,0 +1,9 @@ +import { + ServiceExceptionOptions as __ServiceExceptionOptions, + ServiceException as __ServiceException, +} from "@smithy/smithy-client"; +export { __ServiceExceptionOptions }; +export { __ServiceException }; +export declare class STSServiceException extends __ServiceException { + constructor(options: __ServiceExceptionOptions); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/models/errors.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/models/errors.d.ts new file mode 100644 index 000000000..308923bd1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/models/errors.d.ts @@ -0,0 +1,54 @@ +import { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; +import { STSServiceException as __BaseException } from "./STSServiceException"; +export declare class ExpiredTokenException extends __BaseException { + readonly name: "ExpiredTokenException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class MalformedPolicyDocumentException extends __BaseException { + readonly name: "MalformedPolicyDocumentException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType< + MalformedPolicyDocumentException, + __BaseException + > + ); +} +export declare class PackedPolicyTooLargeException extends __BaseException { + readonly name: "PackedPolicyTooLargeException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class RegionDisabledException extends __BaseException { + readonly name: "RegionDisabledException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class IDPRejectedClaimException extends __BaseException { + readonly name: "IDPRejectedClaimException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class InvalidIdentityTokenException extends __BaseException { + readonly name: "InvalidIdentityTokenException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class IDPCommunicationErrorException extends __BaseException { + readonly name: "IDPCommunicationErrorException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/models/models_0.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/models/models_0.d.ts new file mode 100644 index 000000000..a3c7441d8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/models/models_0.d.ts @@ -0,0 +1,59 @@ +export interface AssumedRoleUser { + AssumedRoleId: string | undefined; + Arn: string | undefined; +} +export interface PolicyDescriptorType { + arn?: string | undefined; +} +export interface ProvidedContext { + ProviderArn?: string | undefined; + ContextAssertion?: string | undefined; +} +export interface Tag { + Key: string | undefined; + Value: string | undefined; +} +export interface AssumeRoleRequest { + RoleArn: string | undefined; + RoleSessionName: string | undefined; + PolicyArns?: PolicyDescriptorType[] | undefined; + Policy?: string | undefined; + DurationSeconds?: number | undefined; + Tags?: Tag[] | undefined; + TransitiveTagKeys?: string[] | undefined; + ExternalId?: string | undefined; + SerialNumber?: string | undefined; + TokenCode?: string | undefined; + SourceIdentity?: string | undefined; + ProvidedContexts?: ProvidedContext[] | undefined; +} +export interface Credentials { + AccessKeyId: string | undefined; + SecretAccessKey: string | undefined; + SessionToken: string | undefined; + Expiration: Date | undefined; +} +export interface AssumeRoleResponse { + Credentials?: Credentials | undefined; + AssumedRoleUser?: AssumedRoleUser | undefined; + PackedPolicySize?: number | undefined; + SourceIdentity?: string | undefined; +} +export interface AssumeRoleWithWebIdentityRequest { + RoleArn: string | undefined; + RoleSessionName: string | undefined; + WebIdentityToken: string | undefined; + ProviderId?: string | undefined; + PolicyArns?: PolicyDescriptorType[] | undefined; + Policy?: string | undefined; + DurationSeconds?: number | undefined; +} +export interface AssumeRoleWithWebIdentityResponse { + Credentials?: Credentials | undefined; + SubjectFromWebIdentityToken?: string | undefined; + AssumedRoleUser?: AssumedRoleUser | undefined; + PackedPolicySize?: number | undefined; + Provider?: string | undefined; + Audience?: string | undefined; + SourceIdentity?: string | undefined; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.browser.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.browser.d.ts new file mode 100644 index 000000000..acad4abbb --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.browser.d.ts @@ -0,0 +1,129 @@ +import { FetchHttpHandler as RequestHandler } from "@smithy/fetch-http-handler"; +import { STSClientConfig } from "./STSClient"; +export declare const getRuntimeConfig: (config: STSClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider< + import("@smithy/smithy-client").ResolvedDefaultsMode + >; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + credentialDefaultProvider: + | ((input: any) => import("@smithy/types").AwsCredentialIdentityProvider) + | (( + _: unknown + ) => () => Promise); + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved + ) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: + | import("@smithy/protocol-http").HttpHandler + | RequestHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + cacheMiddleware?: boolean | undefined; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/core").AwsQueryProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: + | string + | undefined + | import("@smithy/types").Provider; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + params: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + } + )[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").STSHttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner; + useGlobalEndpoint?: + | boolean + | undefined + | import("@smithy/types").Provider; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.d.ts new file mode 100644 index 000000000..2f035facd --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.d.ts @@ -0,0 +1,111 @@ +import { NoAuthSigner } from "@smithy/core"; +import { NodeHttpHandler as RequestHandler } from "@smithy/node-http-handler"; +import { IdentityProviderConfig } from "@smithy/types"; +import { STSClientConfig } from "./STSClient"; +export declare const getRuntimeConfig: (config: STSClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider< + import("@smithy/smithy-client").ResolvedDefaultsMode + >; + authSchemePreference: string[] | import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-node").PreviouslyResolved + ) => Promise; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | { + schemeId: string; + identityProvider: ( + ipc: IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: NoAuthSigner; + }[]; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: + | RequestHandler + | import("@smithy/protocol-http").HttpHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: boolean | import("@smithy/types").Provider; + useFipsEndpoint: boolean | import("@smithy/types").Provider; + userAgentAppId: string | import("@smithy/types").Provider; + cacheMiddleware?: boolean | undefined; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/core").AwsQueryProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + credentialDefaultProvider?: ( + input: any + ) => import("@smithy/types").AwsCredentialIdentityProvider; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + params: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").STSHttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner; + useGlobalEndpoint?: + | boolean + | undefined + | import("@smithy/types").Provider; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.native.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.native.d.ts new file mode 100644 index 000000000..47d1d39ca --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.native.d.ts @@ -0,0 +1,133 @@ +import { STSClientConfig } from "./STSClient"; +export declare const getRuntimeConfig: (config: STSClientConfig) => { + runtime: string; + sha256: import("@smithy/types").HashConstructor; + requestHandler: + | import("@smithy/types").NodeHttpHandlerOptions + | import("@smithy/types").FetchHttpHandlerOptions + | Record + | import("@smithy/protocol-http").HttpHandler + | import("@smithy/fetch-http-handler").FetchHttpHandler; + cacheMiddleware?: boolean; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/core").AwsQueryProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + streamCollector: import("@smithy/types").StreamCollector; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + region: string | import("@smithy/types").Provider; + profile?: string; + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved + ) => Promise; + credentialDefaultProvider: + | ((input: any) => import("@smithy/types").AwsCredentialIdentityProvider) + | (( + _: unknown + ) => () => Promise); + maxAttempts: number | import("@smithy/types").Provider; + retryMode: string | import("@smithy/types").Provider; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + defaultsMode: + | import("@smithy/smithy-client").DefaultsMode + | import("@smithy/types").Provider< + import("@smithy/smithy-client").DefaultsMode + >; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: + | string + | undefined + | import("@smithy/types").Provider; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + params: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: import("@aws-sdk/core").AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + } + )[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").STSHttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner; + useGlobalEndpoint?: + | boolean + | undefined + | import("@smithy/types").Provider; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.shared.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.shared.d.ts new file mode 100644 index 000000000..a143ab3da --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.shared.d.ts @@ -0,0 +1,58 @@ +import { AwsSdkSigV4Signer } from "@aws-sdk/core"; +import { AwsQueryProtocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; +import { IdentityProviderConfig } from "@smithy/types"; +import { STSClientConfig } from "./STSClient"; +export declare const getRuntimeConfig: (config: STSClientConfig) => { + apiVersion: string; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + disableHostPrefix: boolean; + endpointProvider: ( + params: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").STSHttpAuthSchemeProvider; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: NoAuthSigner; + } + )[]; + logger: import("@smithy/types").Logger; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof AwsQueryProtocol; + protocolSettings: { + [setting: string]: unknown; + defaultNamespace?: string; + }; + serviceId: string; + urlParser: import("@smithy/types").UrlParser; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeExtensions.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeExtensions.d.ts new file mode 100644 index 000000000..d3cd411e1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeExtensions.d.ts @@ -0,0 +1,11 @@ +import { STSExtensionConfiguration } from "./extensionConfiguration"; +export interface RuntimeExtension { + configure(extensionConfiguration: STSExtensionConfiguration): void; +} +export interface RuntimeExtensionsConfig { + extensions: RuntimeExtension[]; +} +export declare const resolveRuntimeExtensions: ( + runtimeConfig: any, + extensions: RuntimeExtension[] +) => any; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/schemas/schemas_0.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/schemas/schemas_0.d.ts new file mode 100644 index 000000000..fd69e8fb4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/schemas/schemas_0.d.ts @@ -0,0 +1,26 @@ +import { TypeRegistry } from "@smithy/core/schema"; +import { + StaticErrorSchema, + StaticOperationSchema, + StaticStructureSchema, +} from "@smithy/types"; +export declare var STSServiceException$: StaticErrorSchema; +export declare var ExpiredTokenException$: StaticErrorSchema; +export declare var IDPCommunicationErrorException$: StaticErrorSchema; +export declare var IDPRejectedClaimException$: StaticErrorSchema; +export declare var InvalidIdentityTokenException$: StaticErrorSchema; +export declare var MalformedPolicyDocumentException$: StaticErrorSchema; +export declare var PackedPolicyTooLargeException$: StaticErrorSchema; +export declare var RegionDisabledException$: StaticErrorSchema; +export declare const errorTypeRegistries: TypeRegistry[]; +export declare var AssumedRoleUser$: StaticStructureSchema; +export declare var AssumeRoleRequest$: StaticStructureSchema; +export declare var AssumeRoleResponse$: StaticStructureSchema; +export declare var AssumeRoleWithWebIdentityRequest$: StaticStructureSchema; +export declare var AssumeRoleWithWebIdentityResponse$: StaticStructureSchema; +export declare var Credentials$: StaticStructureSchema; +export declare var PolicyDescriptorType$: StaticStructureSchema; +export declare var ProvidedContext$: StaticStructureSchema; +export declare var Tag$: StaticStructureSchema; +export declare var AssumeRole$: StaticOperationSchema; +export declare var AssumeRoleWithWebIdentity$: StaticOperationSchema; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/package.json b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/package.json new file mode 100644 index 000000000..32da7485d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/package.json @@ -0,0 +1,147 @@ +{ + "name": "@aws-sdk/nested-clients", + "version": "3.996.10", + "description": "Nested clients for AWS SDK packages.", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "scripts": { + "build": "yarn lint && concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline nested-clients", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "node ../../scripts/validation/submodules-linter.js --pkg nested-clients", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "engines": { + "node": ">=20.0.0" + }, + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/middleware-host-header": "^3.972.8", + "@aws-sdk/middleware-logger": "^3.972.8", + "@aws-sdk/middleware-recursion-detection": "^3.972.8", + "@aws-sdk/middleware-user-agent": "^3.972.21", + "@aws-sdk/region-config-resolver": "^3.972.8", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-endpoints": "^3.996.5", + "@aws-sdk/util-user-agent-browser": "^3.972.8", + "@aws-sdk/util-user-agent-node": "^3.973.7", + "@smithy/config-resolver": "^4.4.11", + "@smithy/core": "^3.23.11", + "@smithy/fetch-http-handler": "^5.3.15", + "@smithy/hash-node": "^4.2.12", + "@smithy/invalid-dependency": "^4.2.12", + "@smithy/middleware-content-length": "^4.2.12", + "@smithy/middleware-endpoint": "^4.4.25", + "@smithy/middleware-retry": "^4.4.42", + "@smithy/middleware-serde": "^4.2.14", + "@smithy/middleware-stack": "^4.2.12", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/node-http-handler": "^4.4.16", + "@smithy/protocol-http": "^5.3.12", + "@smithy/smithy-client": "^4.12.5", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.41", + "@smithy/util-defaults-mode-node": "^4.2.44", + "@smithy/util-endpoints": "^3.3.3", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-retry": "^4.2.12", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "./cognito-identity.d.ts", + "./cognito-identity.js", + "./signin.d.ts", + "./signin.js", + "./sso-oidc.d.ts", + "./sso-oidc.js", + "./sso.d.ts", + "./sso.js", + "./sts.d.ts", + "./sts.js", + "dist-*/**" + ], + "browser": { + "./dist-es/submodules/cognito-identity/runtimeConfig": "./dist-es/submodules/cognito-identity/runtimeConfig.browser", + "./dist-es/submodules/signin/runtimeConfig": "./dist-es/submodules/signin/runtimeConfig.browser", + "./dist-es/submodules/sso-oidc/runtimeConfig": "./dist-es/submodules/sso-oidc/runtimeConfig.browser", + "./dist-es/submodules/sso/runtimeConfig": "./dist-es/submodules/sso/runtimeConfig.browser", + "./dist-es/submodules/sts/runtimeConfig": "./dist-es/submodules/sts/runtimeConfig.browser" + }, + "react-native": {}, + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages/nested-clients", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages/nested-clients" + }, + "exports": { + "./package.json": "./package.json", + "./sso-oidc": { + "types": "./dist-types/submodules/sso-oidc/index.d.ts", + "module": "./dist-es/submodules/sso-oidc/index.js", + "node": "./dist-cjs/submodules/sso-oidc/index.js", + "import": "./dist-es/submodules/sso-oidc/index.js", + "require": "./dist-cjs/submodules/sso-oidc/index.js" + }, + "./sts": { + "types": "./dist-types/submodules/sts/index.d.ts", + "module": "./dist-es/submodules/sts/index.js", + "node": "./dist-cjs/submodules/sts/index.js", + "import": "./dist-es/submodules/sts/index.js", + "require": "./dist-cjs/submodules/sts/index.js" + }, + "./signin": { + "types": "./dist-types/submodules/signin/index.d.ts", + "module": "./dist-es/submodules/signin/index.js", + "node": "./dist-cjs/submodules/signin/index.js", + "import": "./dist-es/submodules/signin/index.js", + "require": "./dist-cjs/submodules/signin/index.js" + }, + "./cognito-identity": { + "types": "./dist-types/submodules/cognito-identity/index.d.ts", + "module": "./dist-es/submodules/cognito-identity/index.js", + "node": "./dist-cjs/submodules/cognito-identity/index.js", + "import": "./dist-es/submodules/cognito-identity/index.js", + "require": "./dist-cjs/submodules/cognito-identity/index.js" + }, + "./sso": { + "types": "./dist-types/submodules/sso/index.d.ts", + "module": "./dist-es/submodules/sso/index.js", + "node": "./dist-cjs/submodules/sso/index.js", + "import": "./dist-es/submodules/sso/index.js", + "require": "./dist-cjs/submodules/sso/index.js" + } + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/signin.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/signin.d.ts new file mode 100644 index 000000000..461596154 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/signin.d.ts @@ -0,0 +1,7 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +declare module "@aws-sdk/nested-clients/signin" { + export * from "@aws-sdk/nested-clients/dist-types/submodules/signin/index.d"; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/signin.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/signin.js new file mode 100644 index 000000000..db3d54546 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/signin.js @@ -0,0 +1,5 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +module.exports = require("./dist-cjs/submodules/signin/index.js"); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/sso-oidc.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/sso-oidc.d.ts new file mode 100644 index 000000000..ab4728259 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/sso-oidc.d.ts @@ -0,0 +1,7 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +declare module "@aws-sdk/nested-clients/sso-oidc" { + export * from "@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/index.d"; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/sso-oidc.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/sso-oidc.js new file mode 100644 index 000000000..896865cf2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/sso-oidc.js @@ -0,0 +1,5 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +module.exports = require("./dist-cjs/submodules/sso-oidc/index.js"); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/sso.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/sso.d.ts new file mode 100644 index 000000000..04a13c066 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/sso.d.ts @@ -0,0 +1,7 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +declare module "@aws-sdk/nested-clients/sso" { + export * from "@aws-sdk/nested-clients/dist-types/submodules/sso/index.d"; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/sso.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/sso.js new file mode 100644 index 000000000..9423dcef1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/sso.js @@ -0,0 +1,5 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +module.exports = require("./dist-cjs/submodules/sso/index.js"); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/sts.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/sts.d.ts new file mode 100644 index 000000000..03b8e6893 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/sts.d.ts @@ -0,0 +1,7 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +declare module "@aws-sdk/nested-clients/sts" { + export * from "@aws-sdk/nested-clients/dist-types/submodules/sts/index.d"; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/sts.js b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/sts.js new file mode 100644 index 000000000..8976f123e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/nested-clients/sts.js @@ -0,0 +1,5 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +module.exports = require("./dist-cjs/submodules/sts/index.js"); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/LICENSE b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/README.md b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/README.md new file mode 100644 index 000000000..389b76553 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/README.md @@ -0,0 +1,12 @@ +# @aws-sdk/region-config-resolver + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/region-config-resolver/latest.svg)](https://www.npmjs.com/package/@aws-sdk/region-config-resolver) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/region-config-resolver.svg)](https://www.npmjs.com/package/@aws-sdk/region-config-resolver) + +> An internal package + +This package provides utilities for AWS region config resolvers. + +## Usage + +You probably shouldn't, at least directly. diff --git a/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-cjs/index.js b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-cjs/index.js new file mode 100644 index 000000000..4cc1f1de8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-cjs/index.js @@ -0,0 +1,38 @@ +'use strict'; + +var stsRegionDefaultResolver = require('./regionConfig/stsRegionDefaultResolver'); +var configResolver = require('@smithy/config-resolver'); + +const getAwsRegionExtensionConfiguration = (runtimeConfig) => { + return { + setRegion(region) { + runtimeConfig.region = region; + }, + region() { + return runtimeConfig.region; + }, + }; +}; +const resolveAwsRegionExtensionConfiguration = (awsRegionExtensionConfiguration) => { + return { + region: awsRegionExtensionConfiguration.region(), + }; +}; + +exports.NODE_REGION_CONFIG_FILE_OPTIONS = configResolver.NODE_REGION_CONFIG_FILE_OPTIONS; +exports.NODE_REGION_CONFIG_OPTIONS = configResolver.NODE_REGION_CONFIG_OPTIONS; +exports.REGION_ENV_NAME = configResolver.REGION_ENV_NAME; +exports.REGION_INI_NAME = configResolver.REGION_INI_NAME; +exports.resolveRegionConfig = configResolver.resolveRegionConfig; +exports.getAwsRegionExtensionConfiguration = getAwsRegionExtensionConfiguration; +exports.resolveAwsRegionExtensionConfiguration = resolveAwsRegionExtensionConfiguration; +Object.prototype.hasOwnProperty.call(stsRegionDefaultResolver, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: stsRegionDefaultResolver['__proto__'] + }); + +Object.keys(stsRegionDefaultResolver).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = stsRegionDefaultResolver[k]; +}); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-cjs/regionConfig/stsRegionDefaultResolver.js b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-cjs/regionConfig/stsRegionDefaultResolver.js new file mode 100644 index 000000000..30d06fbd2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-cjs/regionConfig/stsRegionDefaultResolver.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.warning = void 0; +exports.stsRegionDefaultResolver = stsRegionDefaultResolver; +const config_resolver_1 = require("@smithy/config-resolver"); +const node_config_provider_1 = require("@smithy/node-config-provider"); +function stsRegionDefaultResolver(loaderConfig = {}) { + return (0, node_config_provider_1.loadConfig)({ + ...config_resolver_1.NODE_REGION_CONFIG_OPTIONS, + async default() { + if (!exports.warning.silence) { + console.warn("@aws-sdk - WARN - default STS region of us-east-1 used. See @aws-sdk/credential-providers README and set a region explicitly."); + } + return "us-east-1"; + }, + }, { ...config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }); +} +exports.warning = { + silence: false, +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-cjs/regionConfig/stsRegionDefaultResolver.native.js b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-cjs/regionConfig/stsRegionDefaultResolver.native.js new file mode 100644 index 000000000..78908f9cb --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-cjs/regionConfig/stsRegionDefaultResolver.native.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.stsRegionDefaultResolver = stsRegionDefaultResolver; +function stsRegionDefaultResolver() { + return async () => "us-east-1"; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-es/extensions/index.js b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-es/extensions/index.js new file mode 100644 index 000000000..eb0331495 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-es/extensions/index.js @@ -0,0 +1,15 @@ +export const getAwsRegionExtensionConfiguration = (runtimeConfig) => { + return { + setRegion(region) { + runtimeConfig.region = region; + }, + region() { + return runtimeConfig.region; + }, + }; +}; +export const resolveAwsRegionExtensionConfiguration = (awsRegionExtensionConfiguration) => { + return { + region: awsRegionExtensionConfiguration.region(), + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-es/index.js b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-es/index.js new file mode 100644 index 000000000..d685b15dc --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-es/index.js @@ -0,0 +1,3 @@ +export * from "./extensions"; +export * from "./regionConfig/awsRegionConfig"; +export * from "./regionConfig/stsRegionDefaultResolver"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-es/regionConfig/awsRegionConfig.js b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-es/regionConfig/awsRegionConfig.js new file mode 100644 index 000000000..533ee0728 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-es/regionConfig/awsRegionConfig.js @@ -0,0 +1,2 @@ +export { REGION_ENV_NAME, REGION_INI_NAME, NODE_REGION_CONFIG_OPTIONS, NODE_REGION_CONFIG_FILE_OPTIONS, } from "@smithy/config-resolver"; +export { resolveRegionConfig } from "@smithy/config-resolver"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-es/regionConfig/stsRegionDefaultResolver.browser.js b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-es/regionConfig/stsRegionDefaultResolver.browser.js new file mode 100644 index 000000000..63fb0c615 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-es/regionConfig/stsRegionDefaultResolver.browser.js @@ -0,0 +1,3 @@ +export function stsRegionDefaultResolver() { + return async () => "us-east-1"; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-es/regionConfig/stsRegionDefaultResolver.js b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-es/regionConfig/stsRegionDefaultResolver.js new file mode 100644 index 000000000..c68755550 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-es/regionConfig/stsRegionDefaultResolver.js @@ -0,0 +1,16 @@ +import { NODE_REGION_CONFIG_FILE_OPTIONS, NODE_REGION_CONFIG_OPTIONS } from "@smithy/config-resolver"; +import { loadConfig } from "@smithy/node-config-provider"; +export function stsRegionDefaultResolver(loaderConfig = {}) { + return loadConfig({ + ...NODE_REGION_CONFIG_OPTIONS, + async default() { + if (!warning.silence) { + console.warn("@aws-sdk - WARN - default STS region of us-east-1 used. See @aws-sdk/credential-providers README and set a region explicitly."); + } + return "us-east-1"; + }, + }, { ...NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }); +} +export const warning = { + silence: false, +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-es/regionConfig/stsRegionDefaultResolver.native.js b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-es/regionConfig/stsRegionDefaultResolver.native.js new file mode 100644 index 000000000..63fb0c615 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-es/regionConfig/stsRegionDefaultResolver.native.js @@ -0,0 +1,3 @@ +export function stsRegionDefaultResolver() { + return async () => "us-east-1"; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/extensions/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/extensions/index.d.ts new file mode 100644 index 000000000..acb4330fd --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/extensions/index.d.ts @@ -0,0 +1,16 @@ +import type { AwsRegionExtensionConfiguration } from "@aws-sdk/types"; +import type { Provider } from "@smithy/types"; +export type RegionExtensionRuntimeConfigType = Partial<{ + region: string | Provider; +}>; +/** + * @internal + */ +export declare const getAwsRegionExtensionConfiguration: (runtimeConfig: RegionExtensionRuntimeConfigType) => { + setRegion(region: Provider): void; + region(): Provider; +}; +/** + * @internal + */ +export declare const resolveAwsRegionExtensionConfiguration: (awsRegionExtensionConfiguration: AwsRegionExtensionConfiguration) => RegionExtensionRuntimeConfigType; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/index.d.ts new file mode 100644 index 000000000..d685b15dc --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/index.d.ts @@ -0,0 +1,3 @@ +export * from "./extensions"; +export * from "./regionConfig/awsRegionConfig"; +export * from "./regionConfig/stsRegionDefaultResolver"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/regionConfig/awsRegionConfig.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/regionConfig/awsRegionConfig.d.ts new file mode 100644 index 000000000..aa5e19307 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/regionConfig/awsRegionConfig.d.ts @@ -0,0 +1,15 @@ +/** + * Backward compatibility re-export alias. + * @internal + */ +export { REGION_ENV_NAME, REGION_INI_NAME, NODE_REGION_CONFIG_OPTIONS, NODE_REGION_CONFIG_FILE_OPTIONS, } from "@smithy/config-resolver"; +/** + * Backward compatibility re-export alias. + * @internal + */ +export type { RegionInputConfig, RegionResolvedConfig } from "@smithy/config-resolver"; +/** + * Backward compatibility re-export alias. + * @internal + */ +export { resolveRegionConfig } from "@smithy/config-resolver"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/regionConfig/stsRegionDefaultResolver.browser.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/regionConfig/stsRegionDefaultResolver.browser.d.ts new file mode 100644 index 000000000..d0a147f28 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/regionConfig/stsRegionDefaultResolver.browser.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare function stsRegionDefaultResolver(): () => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/regionConfig/stsRegionDefaultResolver.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/regionConfig/stsRegionDefaultResolver.d.ts new file mode 100644 index 000000000..fc52c8a7d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/regionConfig/stsRegionDefaultResolver.d.ts @@ -0,0 +1,14 @@ +import { type LocalConfigOptions } from "@smithy/node-config-provider"; +/** + * Default region provider for STS when used as an inner client. + * Differs from the default region resolver in that us-east-1 is the fallback instead of throwing an error. + * + * @internal + */ +export declare function stsRegionDefaultResolver(loaderConfig?: LocalConfigOptions): import("@smithy/types").Provider; +/** + * @internal + */ +export declare const warning: { + silence: boolean; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/regionConfig/stsRegionDefaultResolver.native.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/regionConfig/stsRegionDefaultResolver.native.d.ts new file mode 100644 index 000000000..d0a147f28 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/regionConfig/stsRegionDefaultResolver.native.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare function stsRegionDefaultResolver(): () => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/extensions/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/extensions/index.d.ts new file mode 100644 index 000000000..c1328e3e4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/extensions/index.d.ts @@ -0,0 +1,14 @@ +import { AwsRegionExtensionConfiguration } from "@aws-sdk/types"; +import { Provider } from "@smithy/types"; +export type RegionExtensionRuntimeConfigType = Partial<{ + region: string | Provider; +}>; +export declare const getAwsRegionExtensionConfiguration: ( + runtimeConfig: RegionExtensionRuntimeConfigType +) => { + setRegion(region: Provider): void; + region(): Provider; +}; +export declare const resolveAwsRegionExtensionConfiguration: ( + awsRegionExtensionConfiguration: AwsRegionExtensionConfiguration +) => RegionExtensionRuntimeConfigType; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..d685b15dc --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/index.d.ts @@ -0,0 +1,3 @@ +export * from "./extensions"; +export * from "./regionConfig/awsRegionConfig"; +export * from "./regionConfig/stsRegionDefaultResolver"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/regionConfig/awsRegionConfig.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/regionConfig/awsRegionConfig.d.ts new file mode 100644 index 000000000..d430fa690 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/regionConfig/awsRegionConfig.d.ts @@ -0,0 +1,11 @@ +export { + REGION_ENV_NAME, + REGION_INI_NAME, + NODE_REGION_CONFIG_OPTIONS, + NODE_REGION_CONFIG_FILE_OPTIONS, +} from "@smithy/config-resolver"; +export { + RegionInputConfig, + RegionResolvedConfig, +} from "@smithy/config-resolver"; +export { resolveRegionConfig } from "@smithy/config-resolver"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/regionConfig/stsRegionDefaultResolver.browser.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/regionConfig/stsRegionDefaultResolver.browser.d.ts new file mode 100644 index 000000000..f9bbd6392 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/regionConfig/stsRegionDefaultResolver.browser.d.ts @@ -0,0 +1 @@ +export declare function stsRegionDefaultResolver(): () => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/regionConfig/stsRegionDefaultResolver.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/regionConfig/stsRegionDefaultResolver.d.ts new file mode 100644 index 000000000..e94262af7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/regionConfig/stsRegionDefaultResolver.d.ts @@ -0,0 +1,7 @@ +import { LocalConfigOptions } from "@smithy/node-config-provider"; +export declare function stsRegionDefaultResolver( + loaderConfig?: LocalConfigOptions +): import("@smithy/types").Provider; +export declare const warning: { + silence: boolean; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/regionConfig/stsRegionDefaultResolver.native.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/regionConfig/stsRegionDefaultResolver.native.d.ts new file mode 100644 index 000000000..f9bbd6392 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/regionConfig/stsRegionDefaultResolver.native.d.ts @@ -0,0 +1 @@ +export declare function stsRegionDefaultResolver(): () => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/package.json b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/package.json new file mode 100644 index 000000000..532958ea7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/region-config-resolver/package.json @@ -0,0 +1,62 @@ +{ + "name": "@aws-sdk/region-config-resolver", + "version": "3.972.8", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline region-config-resolver", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "extract:docs": "api-extractor run --local", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/config-resolver": "^4.4.11", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/awslabs/smithy-typescript/tree/main/packages-internal/region-config-resolver", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/region-config-resolver" + }, + "browser": { + "./dist-es/regionConfig/stsRegionDefaultResolver": "./dist-es/regionConfig/stsRegionDefaultResolver.browser" + }, + "react-native": {} +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/LICENSE b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/README.md b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/README.md new file mode 100644 index 000000000..ce609821a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/README.md @@ -0,0 +1,62 @@ +# @aws-sdk/token-providers + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/token-providers/latest.svg)](https://www.npmjs.com/package/@aws-sdk/token-providers) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/token-providers.svg)](https://www.npmjs.com/package/@aws-sdk/token-providers) + +A collection of all token providers. The token providers should be used when the authorization +type is going to be token based. For example, the `bearer` authorization type set using +[httpBearerAuth trait][http-bearer-auth-trait] in Smithy. + +## Static Token Provider + +```ts +import { fromStatic } from "@aws-sdk/token-providers"; + +const token = { token: "TOKEN" }; +const staticTokenProvider = fromStatic(token); + +const staticToken = await staticTokenProvider(); // returns { token: "TOKEN" } +``` + +## SSO Token Provider + +```ts +import { fromSso } from "@aws-sdk/token-providers"; + +// returns token from SSO token cache or ssoOidc.createToken() call. +const ssoToken = await fromSso(); +``` + +## Env Token Provider with Signing Name + +```ts +import { fromEnvSigningName } from "@aws-sdk/token-providers"; + +// returns token from environment, where token's key is based on signing name. +const envSigningNameToken = await fromEnvSigningName({ signingName: "signing name" }); +``` + +## Token Provider Chain + +```ts +import { nodeProvider } from "@aws-sdk/token-providers"; + +// returns token from default providers. +const token = await nodeProvider(); +``` + +[http-bearer-auth-trait]: https://smithy.io/2.0/spec/authentication-traits.html#smithy-api-httpbearerauth-trait + +--- + +### Development + +This package contains a minimal copy of the SSO OIDC client, instead of relying on the full client, which +would cause a circular dependency. + +When regenerating the bundled version of the SSO OIDC client, run the esbuild.js script and then make the following changes: + +- Remove any dependency of the generated client on the credential chain such that it would create + a circular dependency back to this package. Because we only need the `CreateTokenCommand`, the client, and this command's + associated `Exception`s, it is possible to remove auth dependencies. +- Ensure all required packages are declared in the `package.json` of token-providers. diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-cjs/index.js b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-cjs/index.js new file mode 100644 index 000000000..f4469d20c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-cjs/index.js @@ -0,0 +1,157 @@ +'use strict'; + +var client = require('@aws-sdk/core/client'); +var httpAuthSchemes = require('@aws-sdk/core/httpAuthSchemes'); +var propertyProvider = require('@smithy/property-provider'); +var sharedIniFileLoader = require('@smithy/shared-ini-file-loader'); +var node_fs = require('node:fs'); + +const fromEnvSigningName = ({ logger, signingName } = {}) => async () => { + logger?.debug?.("@aws-sdk/token-providers - fromEnvSigningName"); + if (!signingName) { + throw new propertyProvider.TokenProviderError("Please pass 'signingName' to compute environment variable key", { logger }); + } + const bearerTokenKey = httpAuthSchemes.getBearerTokenEnvKey(signingName); + if (!(bearerTokenKey in process.env)) { + throw new propertyProvider.TokenProviderError(`Token not present in '${bearerTokenKey}' environment variable`, { logger }); + } + const token = { token: process.env[bearerTokenKey] }; + client.setTokenFeature(token, "BEARER_SERVICE_ENV_VARS", "3"); + return token; +}; + +const EXPIRE_WINDOW_MS = 5 * 60 * 1000; +const REFRESH_MESSAGE = `To refresh this SSO session run 'aws sso login' with the corresponding profile.`; + +const getSsoOidcClient = async (ssoRegion, init = {}, callerClientConfig) => { + const { SSOOIDCClient } = await import('@aws-sdk/nested-clients/sso-oidc'); + const coalesce = (prop) => init.clientConfig?.[prop] ?? init.parentClientConfig?.[prop] ?? callerClientConfig?.[prop]; + const ssoOidcClient = new SSOOIDCClient(Object.assign({}, init.clientConfig ?? {}, { + region: ssoRegion ?? init.clientConfig?.region, + logger: coalesce("logger"), + userAgentAppId: coalesce("userAgentAppId"), + })); + return ssoOidcClient; +}; + +const getNewSsoOidcToken = async (ssoToken, ssoRegion, init = {}, callerClientConfig) => { + const { CreateTokenCommand } = await import('@aws-sdk/nested-clients/sso-oidc'); + const ssoOidcClient = await getSsoOidcClient(ssoRegion, init, callerClientConfig); + return ssoOidcClient.send(new CreateTokenCommand({ + clientId: ssoToken.clientId, + clientSecret: ssoToken.clientSecret, + refreshToken: ssoToken.refreshToken, + grantType: "refresh_token", + })); +}; + +const validateTokenExpiry = (token) => { + if (token.expiration && token.expiration.getTime() < Date.now()) { + throw new propertyProvider.TokenProviderError(`Token is expired. ${REFRESH_MESSAGE}`, false); + } +}; + +const validateTokenKey = (key, value, forRefresh = false) => { + if (typeof value === "undefined") { + throw new propertyProvider.TokenProviderError(`Value not present for '${key}' in SSO Token${forRefresh ? ". Cannot refresh" : ""}. ${REFRESH_MESSAGE}`, false); + } +}; + +const { writeFile } = node_fs.promises; +const writeSSOTokenToFile = (id, ssoToken) => { + const tokenFilepath = sharedIniFileLoader.getSSOTokenFilepath(id); + const tokenString = JSON.stringify(ssoToken, null, 2); + return writeFile(tokenFilepath, tokenString); +}; + +const lastRefreshAttemptTime = new Date(0); +const fromSso = (init = {}) => async ({ callerClientConfig } = {}) => { + init.logger?.debug("@aws-sdk/token-providers - fromSso"); + const profiles = await sharedIniFileLoader.parseKnownFiles(init); + const profileName = sharedIniFileLoader.getProfileName({ + profile: init.profile ?? callerClientConfig?.profile, + }); + const profile = profiles[profileName]; + if (!profile) { + throw new propertyProvider.TokenProviderError(`Profile '${profileName}' could not be found in shared credentials file.`, false); + } + else if (!profile["sso_session"]) { + throw new propertyProvider.TokenProviderError(`Profile '${profileName}' is missing required property 'sso_session'.`); + } + const ssoSessionName = profile["sso_session"]; + const ssoSessions = await sharedIniFileLoader.loadSsoSessionData(init); + const ssoSession = ssoSessions[ssoSessionName]; + if (!ssoSession) { + throw new propertyProvider.TokenProviderError(`Sso session '${ssoSessionName}' could not be found in shared credentials file.`, false); + } + for (const ssoSessionRequiredKey of ["sso_start_url", "sso_region"]) { + if (!ssoSession[ssoSessionRequiredKey]) { + throw new propertyProvider.TokenProviderError(`Sso session '${ssoSessionName}' is missing required property '${ssoSessionRequiredKey}'.`, false); + } + } + ssoSession["sso_start_url"]; + const ssoRegion = ssoSession["sso_region"]; + let ssoToken; + try { + ssoToken = await sharedIniFileLoader.getSSOTokenFromFile(ssoSessionName); + } + catch (e) { + throw new propertyProvider.TokenProviderError(`The SSO session token associated with profile=${profileName} was not found or is invalid. ${REFRESH_MESSAGE}`, false); + } + validateTokenKey("accessToken", ssoToken.accessToken); + validateTokenKey("expiresAt", ssoToken.expiresAt); + const { accessToken, expiresAt } = ssoToken; + const existingToken = { token: accessToken, expiration: new Date(expiresAt) }; + if (existingToken.expiration.getTime() - Date.now() > EXPIRE_WINDOW_MS) { + return existingToken; + } + if (Date.now() - lastRefreshAttemptTime.getTime() < 30 * 1000) { + validateTokenExpiry(existingToken); + return existingToken; + } + validateTokenKey("clientId", ssoToken.clientId, true); + validateTokenKey("clientSecret", ssoToken.clientSecret, true); + validateTokenKey("refreshToken", ssoToken.refreshToken, true); + try { + lastRefreshAttemptTime.setTime(Date.now()); + const newSsoOidcToken = await getNewSsoOidcToken(ssoToken, ssoRegion, init, callerClientConfig); + validateTokenKey("accessToken", newSsoOidcToken.accessToken); + validateTokenKey("expiresIn", newSsoOidcToken.expiresIn); + const newTokenExpiration = new Date(Date.now() + newSsoOidcToken.expiresIn * 1000); + try { + await writeSSOTokenToFile(ssoSessionName, { + ...ssoToken, + accessToken: newSsoOidcToken.accessToken, + expiresAt: newTokenExpiration.toISOString(), + refreshToken: newSsoOidcToken.refreshToken, + }); + } + catch (error) { + } + return { + token: newSsoOidcToken.accessToken, + expiration: newTokenExpiration, + }; + } + catch (error) { + validateTokenExpiry(existingToken); + return existingToken; + } +}; + +const fromStatic = ({ token, logger }) => async () => { + logger?.debug("@aws-sdk/token-providers - fromStatic"); + if (!token || !token.token) { + throw new propertyProvider.TokenProviderError(`Please pass a valid token to fromStatic`, false); + } + return token; +}; + +const nodeProvider = (init = {}) => propertyProvider.memoize(propertyProvider.chain(fromSso(init), async () => { + throw new propertyProvider.TokenProviderError("Could not load token from any providers", false); +}), (token) => token.expiration !== undefined && token.expiration.getTime() - Date.now() < 300000, (token) => token.expiration !== undefined); + +exports.fromEnvSigningName = fromEnvSigningName; +exports.fromSso = fromSso; +exports.fromStatic = fromStatic; +exports.nodeProvider = nodeProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-es/constants.js b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-es/constants.js new file mode 100644 index 000000000..b84a12678 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-es/constants.js @@ -0,0 +1,2 @@ +export const EXPIRE_WINDOW_MS = 5 * 60 * 1000; +export const REFRESH_MESSAGE = `To refresh this SSO session run 'aws sso login' with the corresponding profile.`; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-es/fromEnvSigningName.js b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-es/fromEnvSigningName.js new file mode 100644 index 000000000..a6faec8c0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-es/fromEnvSigningName.js @@ -0,0 +1,16 @@ +import { setTokenFeature } from "@aws-sdk/core/client"; +import { getBearerTokenEnvKey } from "@aws-sdk/core/httpAuthSchemes"; +import { TokenProviderError } from "@smithy/property-provider"; +export const fromEnvSigningName = ({ logger, signingName } = {}) => async () => { + logger?.debug?.("@aws-sdk/token-providers - fromEnvSigningName"); + if (!signingName) { + throw new TokenProviderError("Please pass 'signingName' to compute environment variable key", { logger }); + } + const bearerTokenKey = getBearerTokenEnvKey(signingName); + if (!(bearerTokenKey in process.env)) { + throw new TokenProviderError(`Token not present in '${bearerTokenKey}' environment variable`, { logger }); + } + const token = { token: process.env[bearerTokenKey] }; + setTokenFeature(token, "BEARER_SERVICE_ENV_VARS", "3"); + return token; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-es/fromSso.js b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-es/fromSso.js new file mode 100644 index 000000000..c8445d769 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-es/fromSso.js @@ -0,0 +1,81 @@ +import { TokenProviderError } from "@smithy/property-provider"; +import { getProfileName, getSSOTokenFromFile, loadSsoSessionData, parseKnownFiles, } from "@smithy/shared-ini-file-loader"; +import { EXPIRE_WINDOW_MS, REFRESH_MESSAGE } from "./constants"; +import { getNewSsoOidcToken } from "./getNewSsoOidcToken"; +import { validateTokenExpiry } from "./validateTokenExpiry"; +import { validateTokenKey } from "./validateTokenKey"; +import { writeSSOTokenToFile } from "./writeSSOTokenToFile"; +const lastRefreshAttemptTime = new Date(0); +export const fromSso = (init = {}) => async ({ callerClientConfig } = {}) => { + init.logger?.debug("@aws-sdk/token-providers - fromSso"); + const profiles = await parseKnownFiles(init); + const profileName = getProfileName({ + profile: init.profile ?? callerClientConfig?.profile, + }); + const profile = profiles[profileName]; + if (!profile) { + throw new TokenProviderError(`Profile '${profileName}' could not be found in shared credentials file.`, false); + } + else if (!profile["sso_session"]) { + throw new TokenProviderError(`Profile '${profileName}' is missing required property 'sso_session'.`); + } + const ssoSessionName = profile["sso_session"]; + const ssoSessions = await loadSsoSessionData(init); + const ssoSession = ssoSessions[ssoSessionName]; + if (!ssoSession) { + throw new TokenProviderError(`Sso session '${ssoSessionName}' could not be found in shared credentials file.`, false); + } + for (const ssoSessionRequiredKey of ["sso_start_url", "sso_region"]) { + if (!ssoSession[ssoSessionRequiredKey]) { + throw new TokenProviderError(`Sso session '${ssoSessionName}' is missing required property '${ssoSessionRequiredKey}'.`, false); + } + } + const ssoStartUrl = ssoSession["sso_start_url"]; + const ssoRegion = ssoSession["sso_region"]; + let ssoToken; + try { + ssoToken = await getSSOTokenFromFile(ssoSessionName); + } + catch (e) { + throw new TokenProviderError(`The SSO session token associated with profile=${profileName} was not found or is invalid. ${REFRESH_MESSAGE}`, false); + } + validateTokenKey("accessToken", ssoToken.accessToken); + validateTokenKey("expiresAt", ssoToken.expiresAt); + const { accessToken, expiresAt } = ssoToken; + const existingToken = { token: accessToken, expiration: new Date(expiresAt) }; + if (existingToken.expiration.getTime() - Date.now() > EXPIRE_WINDOW_MS) { + return existingToken; + } + if (Date.now() - lastRefreshAttemptTime.getTime() < 30 * 1000) { + validateTokenExpiry(existingToken); + return existingToken; + } + validateTokenKey("clientId", ssoToken.clientId, true); + validateTokenKey("clientSecret", ssoToken.clientSecret, true); + validateTokenKey("refreshToken", ssoToken.refreshToken, true); + try { + lastRefreshAttemptTime.setTime(Date.now()); + const newSsoOidcToken = await getNewSsoOidcToken(ssoToken, ssoRegion, init, callerClientConfig); + validateTokenKey("accessToken", newSsoOidcToken.accessToken); + validateTokenKey("expiresIn", newSsoOidcToken.expiresIn); + const newTokenExpiration = new Date(Date.now() + newSsoOidcToken.expiresIn * 1000); + try { + await writeSSOTokenToFile(ssoSessionName, { + ...ssoToken, + accessToken: newSsoOidcToken.accessToken, + expiresAt: newTokenExpiration.toISOString(), + refreshToken: newSsoOidcToken.refreshToken, + }); + } + catch (error) { + } + return { + token: newSsoOidcToken.accessToken, + expiration: newTokenExpiration, + }; + } + catch (error) { + validateTokenExpiry(existingToken); + return existingToken; + } +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-es/fromStatic.js b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-es/fromStatic.js new file mode 100644 index 000000000..0704ae08f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-es/fromStatic.js @@ -0,0 +1,8 @@ +import { TokenProviderError } from "@smithy/property-provider"; +export const fromStatic = ({ token, logger }) => async () => { + logger?.debug("@aws-sdk/token-providers - fromStatic"); + if (!token || !token.token) { + throw new TokenProviderError(`Please pass a valid token to fromStatic`, false); + } + return token; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-es/getNewSsoOidcToken.js b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-es/getNewSsoOidcToken.js new file mode 100644 index 000000000..ecbbe63ef --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-es/getNewSsoOidcToken.js @@ -0,0 +1,11 @@ +import { getSsoOidcClient } from "./getSsoOidcClient"; +export const getNewSsoOidcToken = async (ssoToken, ssoRegion, init = {}, callerClientConfig) => { + const { CreateTokenCommand } = await import("@aws-sdk/nested-clients/sso-oidc"); + const ssoOidcClient = await getSsoOidcClient(ssoRegion, init, callerClientConfig); + return ssoOidcClient.send(new CreateTokenCommand({ + clientId: ssoToken.clientId, + clientSecret: ssoToken.clientSecret, + refreshToken: ssoToken.refreshToken, + grantType: "refresh_token", + })); +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-es/getSsoOidcClient.js b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-es/getSsoOidcClient.js new file mode 100644 index 000000000..22a8aec31 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-es/getSsoOidcClient.js @@ -0,0 +1,10 @@ +export const getSsoOidcClient = async (ssoRegion, init = {}, callerClientConfig) => { + const { SSOOIDCClient } = await import("@aws-sdk/nested-clients/sso-oidc"); + const coalesce = (prop) => init.clientConfig?.[prop] ?? init.parentClientConfig?.[prop] ?? callerClientConfig?.[prop]; + const ssoOidcClient = new SSOOIDCClient(Object.assign({}, init.clientConfig ?? {}, { + region: ssoRegion ?? init.clientConfig?.region, + logger: coalesce("logger"), + userAgentAppId: coalesce("userAgentAppId"), + })); + return ssoOidcClient; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-es/index.js b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-es/index.js new file mode 100644 index 000000000..ae204f848 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-es/index.js @@ -0,0 +1,4 @@ +export * from "./fromEnvSigningName"; +export * from "./fromSso"; +export * from "./fromStatic"; +export * from "./nodeProvider"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-es/nodeProvider.js b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-es/nodeProvider.js new file mode 100644 index 000000000..a0c7b520c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-es/nodeProvider.js @@ -0,0 +1,5 @@ +import { chain, memoize, TokenProviderError } from "@smithy/property-provider"; +import { fromSso } from "./fromSso"; +export const nodeProvider = (init = {}) => memoize(chain(fromSso(init), async () => { + throw new TokenProviderError("Could not load token from any providers", false); +}), (token) => token.expiration !== undefined && token.expiration.getTime() - Date.now() < 300000, (token) => token.expiration !== undefined); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-es/validateTokenExpiry.js b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-es/validateTokenExpiry.js new file mode 100644 index 000000000..8118d7c77 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-es/validateTokenExpiry.js @@ -0,0 +1,7 @@ +import { TokenProviderError } from "@smithy/property-provider"; +import { REFRESH_MESSAGE } from "./constants"; +export const validateTokenExpiry = (token) => { + if (token.expiration && token.expiration.getTime() < Date.now()) { + throw new TokenProviderError(`Token is expired. ${REFRESH_MESSAGE}`, false); + } +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-es/validateTokenKey.js b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-es/validateTokenKey.js new file mode 100644 index 000000000..49796380b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-es/validateTokenKey.js @@ -0,0 +1,7 @@ +import { TokenProviderError } from "@smithy/property-provider"; +import { REFRESH_MESSAGE } from "./constants"; +export const validateTokenKey = (key, value, forRefresh = false) => { + if (typeof value === "undefined") { + throw new TokenProviderError(`Value not present for '${key}' in SSO Token${forRefresh ? ". Cannot refresh" : ""}. ${REFRESH_MESSAGE}`, false); + } +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-es/writeSSOTokenToFile.js b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-es/writeSSOTokenToFile.js new file mode 100644 index 000000000..c982c4e81 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-es/writeSSOTokenToFile.js @@ -0,0 +1,8 @@ +import { getSSOTokenFilepath } from "@smithy/shared-ini-file-loader"; +import { promises as fsPromises } from "node:fs"; +const { writeFile } = fsPromises; +export const writeSSOTokenToFile = (id, ssoToken) => { + const tokenFilepath = getSSOTokenFilepath(id); + const tokenString = JSON.stringify(ssoToken, null, 2); + return writeFile(tokenFilepath, tokenString); +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/constants.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/constants.d.ts new file mode 100644 index 000000000..de28cde96 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/constants.d.ts @@ -0,0 +1,8 @@ +/** + * The time window (5 mins) that SDK will treat the SSO token expires in before the defined expiration date in token. + * This is needed because server side may have invalidated the token before the defined expiration date. + * + * @internal + */ +export declare const EXPIRE_WINDOW_MS: number; +export declare const REFRESH_MESSAGE = "To refresh this SSO session run 'aws sso login' with the corresponding profile."; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/fromEnvSigningName.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/fromEnvSigningName.d.ts new file mode 100644 index 000000000..7282c06b2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/fromEnvSigningName.d.ts @@ -0,0 +1,18 @@ +import type { CredentialProviderOptions, TokenIdentityProvider } from "@aws-sdk/types"; +/** + * @public + */ +export interface FromEnvSigningNameInit extends CredentialProviderOptions { + signingName?: string; +} +/** + * Creates a TokenIdentityProvider that retrieves bearer token from environment variable + * + * @param options - Configuration options for the token provider + * @param options.logger - Optional logger for debug messages + * @param options.signingName - Service signing name used to determine environment variable key + * @returns TokenIdentityProvider that provides bearer token from environment variable + * + * @public + */ +export declare const fromEnvSigningName: ({ logger, signingName }?: FromEnvSigningNameInit) => TokenIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/fromSso.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/fromSso.d.ts new file mode 100644 index 000000000..aca000211 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/fromSso.d.ts @@ -0,0 +1,12 @@ +import type { CredentialProviderOptions, RuntimeConfigIdentityProvider, TokenIdentity } from "@aws-sdk/types"; +import type { SourceProfileInit } from "@smithy/shared-ini-file-loader"; +export interface FromSsoInit extends SourceProfileInit, CredentialProviderOptions { + /** + * @see SSOOIDCClientConfig in \@aws-sdk/client-sso-oidc. + */ + clientConfig?: any; +} +/** + * Creates a token provider that will read from SSO token cache or ssoOidc.createToken() call. + */ +export declare const fromSso: (init?: FromSsoInit) => RuntimeConfigIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/fromStatic.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/fromStatic.d.ts new file mode 100644 index 000000000..248133307 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/fromStatic.d.ts @@ -0,0 +1,9 @@ +import type { CredentialProviderOptions, TokenIdentity, TokenIdentityProvider } from "@aws-sdk/types"; +export interface FromStaticInit extends CredentialProviderOptions { + token?: TokenIdentity; +} +/** + * Creates a token provider that will read from static token. + * @public + */ +export declare const fromStatic: ({ token, logger }: FromStaticInit) => TokenIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/getNewSsoOidcToken.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/getNewSsoOidcToken.d.ts new file mode 100644 index 000000000..0564cde4a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/getNewSsoOidcToken.d.ts @@ -0,0 +1,8 @@ +import type { AwsIdentityProperties } from "@aws-sdk/types"; +import type { SSOToken } from "@smithy/shared-ini-file-loader"; +import type { FromSsoInit } from "./fromSso"; +/** + * Returns a new SSO OIDC token from SSOOIDC::createToken() API call. + * @internal + */ +export declare const getNewSsoOidcToken: (ssoToken: SSOToken, ssoRegion: string, init?: FromSsoInit, callerClientConfig?: AwsIdentityProperties["callerClientConfig"]) => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/getSsoOidcClient.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/getSsoOidcClient.d.ts new file mode 100644 index 000000000..8ed85dd0f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/getSsoOidcClient.d.ts @@ -0,0 +1,7 @@ +import type { AwsIdentityProperties } from "@aws-sdk/types"; +import type { FromSsoInit } from "./fromSso"; +/** + * Returns a SSOOIDC client for the given region. + * @internal + */ +export declare const getSsoOidcClient: (ssoRegion: string, init?: FromSsoInit, callerClientConfig?: AwsIdentityProperties["callerClientConfig"]) => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/index.d.ts new file mode 100644 index 000000000..ae204f848 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/index.d.ts @@ -0,0 +1,4 @@ +export * from "./fromEnvSigningName"; +export * from "./fromSso"; +export * from "./fromStatic"; +export * from "./nodeProvider"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/nodeProvider.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/nodeProvider.d.ts new file mode 100644 index 000000000..2f77c3cfb --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/nodeProvider.d.ts @@ -0,0 +1,18 @@ +import type { TokenIdentityProvider } from "@aws-sdk/types"; +import type { FromSsoInit } from "./fromSso"; +/** + * Creates a token provider that will attempt to find token from the + * following sources (listed in order of precedence): + * * SSO token from SSO cache or ssoOidc.createToken() call + * + * The default token provider is designed to invoke one provider at a time and only + * continue to the next if no token has been located. It currently has only SSO + * Token Provider in the chain. + * + * @param init Configuration that is passed to each individual + * provider + * + * @see fromSso The function used to source credentials from + * SSO cache or ssoOidc.createToken() call + */ +export declare const nodeProvider: (init?: FromSsoInit) => TokenIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/constants.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/constants.d.ts new file mode 100644 index 000000000..d7e75772f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/constants.d.ts @@ -0,0 +1,3 @@ +export declare const EXPIRE_WINDOW_MS: number; +export declare const REFRESH_MESSAGE = + "To refresh this SSO session run 'aws sso login' with the corresponding profile."; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/fromEnvSigningName.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/fromEnvSigningName.d.ts new file mode 100644 index 000000000..abf33ffbf --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/fromEnvSigningName.d.ts @@ -0,0 +1,11 @@ +import { + CredentialProviderOptions, + TokenIdentityProvider, +} from "@aws-sdk/types"; +export interface FromEnvSigningNameInit extends CredentialProviderOptions { + signingName?: string; +} +export declare const fromEnvSigningName: ({ + logger, + signingName, +}?: FromEnvSigningNameInit) => TokenIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/fromSso.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/fromSso.d.ts new file mode 100644 index 000000000..a94d4880d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/fromSso.d.ts @@ -0,0 +1,14 @@ +import { + CredentialProviderOptions, + RuntimeConfigIdentityProvider, + TokenIdentity, +} from "@aws-sdk/types"; +import { SourceProfileInit } from "@smithy/shared-ini-file-loader"; +export interface FromSsoInit + extends SourceProfileInit, + CredentialProviderOptions { + clientConfig?: any; +} +export declare const fromSso: ( + init?: FromSsoInit +) => RuntimeConfigIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/fromStatic.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/fromStatic.d.ts new file mode 100644 index 000000000..e68001238 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/fromStatic.d.ts @@ -0,0 +1,12 @@ +import { + CredentialProviderOptions, + TokenIdentity, + TokenIdentityProvider, +} from "@aws-sdk/types"; +export interface FromStaticInit extends CredentialProviderOptions { + token?: TokenIdentity; +} +export declare const fromStatic: ({ + token, + logger, +}: FromStaticInit) => TokenIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/getNewSsoOidcToken.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/getNewSsoOidcToken.d.ts new file mode 100644 index 000000000..1ff3878d7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/getNewSsoOidcToken.d.ts @@ -0,0 +1,11 @@ +import { AwsIdentityProperties } from "@aws-sdk/types"; +import { SSOToken } from "@smithy/shared-ini-file-loader"; +import { FromSsoInit } from "./fromSso"; +export declare const getNewSsoOidcToken: ( + ssoToken: SSOToken, + ssoRegion: string, + init?: FromSsoInit, + callerClientConfig?: AwsIdentityProperties["callerClientConfig"] +) => Promise< + import("@aws-sdk/nested-clients/sso-oidc").CreateTokenCommandOutput +>; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/getSsoOidcClient.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/getSsoOidcClient.d.ts new file mode 100644 index 000000000..eafcfc94d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/getSsoOidcClient.d.ts @@ -0,0 +1,7 @@ +import { AwsIdentityProperties } from "@aws-sdk/types"; +import { FromSsoInit } from "./fromSso"; +export declare const getSsoOidcClient: ( + ssoRegion: string, + init?: FromSsoInit, + callerClientConfig?: AwsIdentityProperties["callerClientConfig"] +) => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..ae204f848 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/index.d.ts @@ -0,0 +1,4 @@ +export * from "./fromEnvSigningName"; +export * from "./fromSso"; +export * from "./fromStatic"; +export * from "./nodeProvider"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/nodeProvider.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/nodeProvider.d.ts new file mode 100644 index 000000000..11a9bd43d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/nodeProvider.d.ts @@ -0,0 +1,5 @@ +import { TokenIdentityProvider } from "@aws-sdk/types"; +import { FromSsoInit } from "./fromSso"; +export declare const nodeProvider: ( + init?: FromSsoInit +) => TokenIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/validateTokenExpiry.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/validateTokenExpiry.d.ts new file mode 100644 index 000000000..90036052b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/validateTokenExpiry.d.ts @@ -0,0 +1,2 @@ +import { TokenIdentity } from "@aws-sdk/types"; +export declare const validateTokenExpiry: (token: TokenIdentity) => void; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/validateTokenKey.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/validateTokenKey.d.ts new file mode 100644 index 000000000..105b2b4fc --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/validateTokenKey.d.ts @@ -0,0 +1,5 @@ +export declare const validateTokenKey: ( + key: string, + value: unknown, + forRefresh?: boolean +) => void; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/writeSSOTokenToFile.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/writeSSOTokenToFile.d.ts new file mode 100644 index 000000000..a6d025f3a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/writeSSOTokenToFile.d.ts @@ -0,0 +1,5 @@ +import { SSOToken } from "@smithy/shared-ini-file-loader"; +export declare const writeSSOTokenToFile: ( + id: string, + ssoToken: SSOToken +) => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/validateTokenExpiry.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/validateTokenExpiry.d.ts new file mode 100644 index 000000000..c5cfa2f0d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/validateTokenExpiry.d.ts @@ -0,0 +1,5 @@ +import type { TokenIdentity } from "@aws-sdk/types"; +/** + * Throws TokenProviderError is token is expired. + */ +export declare const validateTokenExpiry: (token: TokenIdentity) => void; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/validateTokenKey.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/validateTokenKey.d.ts new file mode 100644 index 000000000..a9618fd84 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/validateTokenKey.d.ts @@ -0,0 +1,4 @@ +/** + * Throws TokenProviderError if value is undefined for key. + */ +export declare const validateTokenKey: (key: string, value: unknown, forRefresh?: boolean) => void; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/writeSSOTokenToFile.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/writeSSOTokenToFile.d.ts new file mode 100644 index 000000000..76f308cce --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/dist-types/writeSSOTokenToFile.d.ts @@ -0,0 +1,5 @@ +import type { SSOToken } from "@smithy/shared-ini-file-loader"; +/** + * Writes SSO token to file based on filepath computed from ssoStartUrl or session name. + */ +export declare const writeSSOTokenToFile: (id: string, ssoToken: SSOToken) => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/token-providers/package.json b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/package.json new file mode 100644 index 000000000..433965043 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/token-providers/package.json @@ -0,0 +1,70 @@ +{ + "name": "@aws-sdk/token-providers", + "version": "3.1009.0", + "description": "A collection of token providers", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline token-providers", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "extract:docs": "api-extractor run --local", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "keywords": [ + "aws", + "token" + ], + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/nested-clients": "^3.996.10", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "@types/node": "^20.14.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "browser": {}, + "react-native": {}, + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages/token-providers", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages/token-providers" + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/LICENSE b/food-ordering-app/server/node_modules/@aws-sdk/types/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/README.md b/food-ordering-app/server/node_modules/@aws-sdk/types/README.md new file mode 100644 index 000000000..a5658db80 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/README.md @@ -0,0 +1,4 @@ +# @aws-sdk/types + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/types/latest.svg)](https://www.npmjs.com/package/@aws-sdk/types) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/types.svg)](https://www.npmjs.com/package/@aws-sdk/types) diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-cjs/index.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-cjs/index.js new file mode 100644 index 000000000..318a5d080 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-cjs/index.js @@ -0,0 +1,13 @@ +'use strict'; + +var types = require('@smithy/types'); + +exports.HostAddressType = void 0; +(function (HostAddressType) { + HostAddressType["AAAA"] = "AAAA"; + HostAddressType["A"] = "A"; +})(exports.HostAddressType || (exports.HostAddressType = {})); + +exports.EndpointURLScheme = types.EndpointURLScheme; +exports.HttpAuthLocation = types.HttpAuthLocation; +exports.RequestHandlerProtocol = types.RequestHandlerProtocol; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/abort.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/abort.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/abort.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/auth.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/auth.js new file mode 100644 index 000000000..81f903b29 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/auth.js @@ -0,0 +1 @@ +export { HttpAuthLocation } from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/blob/blob-types.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/blob/blob-types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/blob/blob-types.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/checksum.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/checksum.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/checksum.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/client.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/client.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/client.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/command.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/command.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/command.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/connection.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/connection.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/connection.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/credentials.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/credentials.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/credentials.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/crypto.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/crypto.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/crypto.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/dns.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/dns.js new file mode 100644 index 000000000..c6a2cd968 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/dns.js @@ -0,0 +1,5 @@ +export var HostAddressType; +(function (HostAddressType) { + HostAddressType["AAAA"] = "AAAA"; + HostAddressType["A"] = "A"; +})(HostAddressType || (HostAddressType = {})); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/encode.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/encode.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/encode.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/endpoint.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/endpoint.js new file mode 100644 index 000000000..ec53acc84 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/endpoint.js @@ -0,0 +1 @@ +export { EndpointURLScheme, } from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/eventStream.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/eventStream.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/eventStream.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/extensions/index.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/extensions/index.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/extensions/index.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/feature-ids.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/feature-ids.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/feature-ids.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/function.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/function.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/function.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/http.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/http.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/http.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/identity/AnonymousIdentity.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/identity/AnonymousIdentity.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/identity/AnonymousIdentity.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/identity/AwsCredentialIdentity.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/identity/AwsCredentialIdentity.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/identity/AwsCredentialIdentity.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/identity/Identity.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/identity/Identity.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/identity/Identity.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/identity/LoginIdentity.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/identity/LoginIdentity.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/identity/LoginIdentity.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/identity/TokenIdentity.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/identity/TokenIdentity.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/identity/TokenIdentity.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/identity/index.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/identity/index.js new file mode 100644 index 000000000..863e78e80 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/identity/index.js @@ -0,0 +1,5 @@ +export * from "./AnonymousIdentity"; +export * from "./AwsCredentialIdentity"; +export * from "./Identity"; +export * from "./LoginIdentity"; +export * from "./TokenIdentity"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/index.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/index.js new file mode 100644 index 000000000..a7f99d93a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/index.js @@ -0,0 +1,34 @@ +export * from "./abort"; +export * from "./auth"; +export * from "./blob/blob-types"; +export * from "./checksum"; +export * from "./client"; +export * from "./command"; +export * from "./connection"; +export * from "./credentials"; +export * from "./crypto"; +export * from "./dns"; +export * from "./encode"; +export * from "./endpoint"; +export * from "./eventStream"; +export * from "./extensions"; +export * from "./feature-ids"; +export * from "./function"; +export * from "./http"; +export * from "./identity"; +export * from "./logger"; +export * from "./middleware"; +export * from "./pagination"; +export * from "./profile"; +export * from "./request"; +export * from "./response"; +export * from "./retry"; +export * from "./serde"; +export * from "./shapes"; +export * from "./signature"; +export * from "./stream"; +export * from "./token"; +export * from "./transfer"; +export * from "./uri"; +export * from "./util"; +export * from "./waiter"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/logger.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/logger.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/logger.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/middleware.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/middleware.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/middleware.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/pagination.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/pagination.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/pagination.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/profile.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/profile.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/profile.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/request.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/request.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/request.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/response.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/response.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/response.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/retry.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/retry.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/retry.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/serde.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/serde.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/serde.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/shapes.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/shapes.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/shapes.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/signature.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/signature.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/signature.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/stream.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/stream.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/stream.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/token.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/token.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/token.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/transfer.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/transfer.js new file mode 100644 index 000000000..ba575896d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/transfer.js @@ -0,0 +1 @@ +export { RequestHandlerProtocol, } from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/uri.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/uri.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/uri.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/util.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/util.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/util.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/waiter.js b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/waiter.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-es/waiter.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/abort.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/abort.d.ts new file mode 100644 index 000000000..dad6079f8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/abort.d.ts @@ -0,0 +1 @@ +export { AbortController, AbortHandler, AbortSignal } from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/auth.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/auth.d.ts new file mode 100644 index 000000000..6626c16d5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/auth.d.ts @@ -0,0 +1 @@ +export { AuthScheme, HttpAuthDefinition, HttpAuthLocation } from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/blob/blob-types.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/blob/blob-types.d.ts new file mode 100644 index 000000000..df39efe01 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/blob/blob-types.d.ts @@ -0,0 +1,2 @@ +import { BlobTypes } from "@smithy/types"; +export { BlobTypes }; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/checksum.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/checksum.d.ts new file mode 100644 index 000000000..f805d7291 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/checksum.d.ts @@ -0,0 +1 @@ +export { Checksum, ChecksumConstructor } from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/client.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/client.d.ts new file mode 100644 index 000000000..d6b3dcf95 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/client.d.ts @@ -0,0 +1 @@ +export { Client } from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/command.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/command.d.ts new file mode 100644 index 000000000..388726706 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/command.d.ts @@ -0,0 +1 @@ +export { Command } from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/connection.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/connection.d.ts new file mode 100644 index 000000000..efcb4d777 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/connection.d.ts @@ -0,0 +1 @@ +export { ConnectConfiguration, ConnectionManager, ConnectionManagerConfiguration, ConnectionPool } from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/credentials.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/credentials.d.ts new file mode 100644 index 000000000..bd34a7cc8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/credentials.d.ts @@ -0,0 +1,52 @@ +import type { Logger } from "@smithy/types"; +import type { AwsCredentialIdentity } from "./identity"; +import type { Provider } from "./util"; +/** + * @public + * + * An object representing temporary or permanent AWS credentials. + * + * @deprecated Use {@link AwsCredentialIdentity} + */ +export interface Credentials extends AwsCredentialIdentity { +} +/** + * @public + * + * @deprecated Use {@link AwsCredentialIdentityProvider} + */ +export type CredentialProvider = Provider; +/** + * @public + * + * Common options for credential providers. + */ +export type CredentialProviderOptions = { + /** + * This logger is only used to provide information + * on what credential providers were used during resolution. + * + * It does not log credentials. + */ + logger?: Logger; + /** + * Present if the credential provider was created by calling + * the defaultCredentialProvider in a client's middleware, having + * access to the client's config. + * + * The region of that parent or outer client is important because + * an inner client used by the credential provider may need + * to match its default partition or region with that of + * the outer client. + * + * @internal + * @deprecated - not truly deprecated, marked as a warning to not use this. + */ + parentClientConfig?: { + region?: string | Provider; + profile?: string; + logger?: Logger; + userAgentAppId?(): Promise; + [key: string]: unknown; + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/crypto.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/crypto.d.ts new file mode 100644 index 000000000..aeeea5027 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/crypto.d.ts @@ -0,0 +1 @@ +export { Hash, HashConstructor, StreamHasher, randomValues, SourceData } from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/dns.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/dns.d.ts new file mode 100644 index 000000000..8348cc491 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/dns.d.ts @@ -0,0 +1,85 @@ +/** + * @public + * + * DNS record types + */ +export declare enum HostAddressType { + /** + * IPv6 + */ + AAAA = "AAAA", + /** + * IPv4 + */ + A = "A" +} +/** + * @public + */ +export interface HostAddress { + /** + * The {@link HostAddressType} of the host address. + */ + addressType: HostAddressType; + /** + * The resolved numerical address represented as a + * string. + */ + address: string; + /** + * The host name the {@link address} was resolved from. + */ + hostName: string; + /** + * The service record of {@link hostName}. + */ + service?: string; +} +/** + * @public + */ +export interface HostResolverArguments { + /** + * The host name to resolve. + */ + hostName: string; + /** + * The service record of {@link hostName}. + */ + service?: string; +} +/** + * @public + * + * Host Resolver interface for DNS queries + */ +export interface HostResolver { + /** + * Resolves the address(es) for {@link HostResolverArguments} and returns a + * list of addresses with (most likely) two addresses, one {@link HostAddressType.AAAA} + * and one {@link HostAddressType.A}. Calls to this function will likely alter + * the cache (if implemented) so that if there's multiple addresses, a different + * set will be returned on the next call. + * In the case of multi-answer, still only a maximum of two records should be + * returned. The resolver implementation is responsible for caching and rotation + * of the multiple addresses that get returned. + * Implementations don't have to explictly call getaddrinfo(), they can use + * high level abstractions provided in their language runtimes/libraries. + * @param args - arguments with host name query addresses for + * @returns promise with a list of {@link HostAddress} + */ + resolveAddress(args: HostResolverArguments): Promise; + /** + * Reports a failure on a {@link HostAddress} so that the cache (if implemented) + * can accomodate the failure and likely not return the address until it recovers. + * @param addr - host address to report a failure on + */ + reportFailureOnAddress(addr: HostAddress): void; + /** + * Empties the cache (if implemented) for a {@link HostResolverArguments.hostName}. + * If {@link HostResolverArguments.hostName} is not provided, the cache (if + * implemented) is emptied for all host names. + * @param args - optional arguments to empty the cache for + */ + purgeCache(args?: HostResolverArguments): void; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/encode.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/encode.d.ts new file mode 100644 index 000000000..128ee5700 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/encode.d.ts @@ -0,0 +1 @@ +export { MessageDecoder, MessageEncoder, AvailableMessage, AvailableMessages } from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/endpoint.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/endpoint.d.ts new file mode 100644 index 000000000..f2ffaf556 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/endpoint.d.ts @@ -0,0 +1 @@ +export { EndpointARN, EndpointPartition, EndpointURLScheme, EndpointURL, EndpointObjectProperty, EndpointV2, EndpointParameters, } from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/eventStream.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/eventStream.d.ts new file mode 100644 index 000000000..cee02f7e7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/eventStream.d.ts @@ -0,0 +1 @@ +export { Message, MessageHeaders, BooleanHeaderValue, ByteHeaderValue, ShortHeaderValue, IntegerHeaderValue, LongHeaderValue, BinaryHeaderValue, StringHeaderValue, TimestampHeaderValue, UuidHeaderValue, MessageHeaderValue, Int64, EventStreamSerdeContext, EventStreamMarshaller, EventStreamMarshallerDeserFn, EventStreamMarshallerSerFn, EventStreamPayloadHandler, EventStreamPayloadHandlerProvider, EventStreamRequestSigner, EventStreamSerdeProvider, EventStreamSignerProvider, } from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/extensions/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/extensions/index.d.ts new file mode 100644 index 000000000..0dae874f9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/extensions/index.d.ts @@ -0,0 +1,8 @@ +import type { Provider } from "@smithy/types"; +/** + * @internal + */ +export interface AwsRegionExtensionConfiguration { + setRegion(region: Provider): void; + region(): Provider; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/feature-ids.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/feature-ids.d.ts new file mode 100644 index 000000000..0c971113f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/feature-ids.d.ts @@ -0,0 +1,67 @@ +/** + * @internal + */ +export type AwsSdkFeatures = Partial<{ + RESOURCE_MODEL: "A"; + WAITER: "B"; + PAGINATOR: "C"; + RETRY_MODE_LEGACY: "D"; + RETRY_MODE_STANDARD: "E"; + RETRY_MODE_ADAPTIVE: "F"; + S3_EXPRESS_BUCKET: "J"; + S3_ACCESS_GRANTS: "K"; + GZIP_REQUEST_COMPRESSION: "L"; + PROTOCOL_RPC_V2_CBOR: "M"; + ENDPOINT_OVERRIDE: "N"; + ACCOUNT_ID_ENDPOINT: "O"; + ACCOUNT_ID_MODE_PREFERRED: "P"; + ACCOUNT_ID_MODE_DISABLED: "Q"; + ACCOUNT_ID_MODE_REQUIRED: "R"; + SIGV4A_SIGNING: "S"; + FLEXIBLE_CHECKSUMS_REQ_CRC32: "U"; + FLEXIBLE_CHECKSUMS_REQ_CRC32C: "V"; + FLEXIBLE_CHECKSUMS_REQ_CRC64: "W"; + FLEXIBLE_CHECKSUMS_REQ_SHA1: "X"; + FLEXIBLE_CHECKSUMS_REQ_SHA256: "Y"; + FLEXIBLE_CHECKSUMS_REQ_WHEN_SUPPORTED: "Z"; + FLEXIBLE_CHECKSUMS_REQ_WHEN_REQUIRED: "a"; + FLEXIBLE_CHECKSUMS_RES_WHEN_SUPPORTED: "b"; + FLEXIBLE_CHECKSUMS_RES_WHEN_REQUIRED: "c"; + DDB_MAPPER: "d"; +}> & AwsSdkCredentialsFeatures & AwsSdkTokenFeatures; +/** + * @internal + */ +export type AwsSdkCredentialsFeatures = Partial<{ + RESOLVED_ACCOUNT_ID: "T"; + CREDENTIALS_CODE: "e"; + CREDENTIALS_ENV_VARS: "g"; + CREDENTIALS_ENV_VARS_STS_WEB_ID_TOKEN: "h"; + CREDENTIALS_STS_ASSUME_ROLE: "i"; + CREDENTIALS_STS_ASSUME_ROLE_SAML: "j"; + CREDENTIALS_STS_ASSUME_ROLE_WEB_ID: "k"; + CREDENTIALS_STS_FEDERATION_TOKEN: "l"; + CREDENTIALS_STS_SESSION_TOKEN: "m"; + CREDENTIALS_PROFILE: "n"; + CREDENTIALS_PROFILE_SOURCE_PROFILE: "o"; + CREDENTIALS_PROFILE_NAMED_PROVIDER: "p"; + CREDENTIALS_PROFILE_STS_WEB_ID_TOKEN: "q"; + CREDENTIALS_PROFILE_SSO: "r"; + CREDENTIALS_SSO: "s"; + CREDENTIALS_PROFILE_SSO_LEGACY: "t"; + CREDENTIALS_SSO_LEGACY: "u"; + CREDENTIALS_PROFILE_PROCESS: "v"; + CREDENTIALS_PROCESS: "w"; + CREDENTIALS_BOTO2_CONFIG_FILE: "x"; + CREDENTIALS_AWS_SDK_STORE: "y"; + CREDENTIALS_HTTP: "z"; + CREDENTIALS_IMDS: "0"; + CREDENTIALS_PROFILE_LOGIN: "AC"; + CREDENTIALS_LOGIN: "AD"; +}>; +/** + * @internal + */ +export type AwsSdkTokenFeatures = Partial<{ + BEARER_SERVICE_ENV_VARS: "3"; +}>; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/function.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/function.d.ts new file mode 100644 index 000000000..3c777fae2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/function.d.ts @@ -0,0 +1,7 @@ +/** + * Resolves a function that accepts both the object argument fields of F1 and F2. + * The function returns an intersection of what F1 and F2 return. + * + * @public + */ +export type MergeFunctions = F1 extends (arg: infer A1) => infer R1 ? F2 extends (arg: infer A2) => infer R2 ? R1 extends Promise ? (arg?: A1 & A2) => Promise & Awaited> : (arg?: A1 & A2) => R1 & R2 : never : never; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/http.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/http.d.ts new file mode 100644 index 000000000..e2efd8493 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/http.d.ts @@ -0,0 +1,33 @@ +import type { HttpResponse } from "@smithy/types"; +export { Endpoint, HeaderBag, HttpHandlerOptions, HttpMessage, HttpRequest, HttpResponse, QueryParameterBag, } from "@smithy/types"; +/** + * @public + * + * A collection of key/value pairs with case-insensitive keys. + */ +export interface Headers extends Map { + /** + * Returns a new instance of Headers with the specified header set to the + * provided value. Does not modify the original Headers instance. + * + * @param headerName - The name of the header to add or overwrite + * @param headerValue - The value to which the header should be set + */ + withHeader(headerName: string, headerValue: string): Headers; + /** + * Returns a new instance of Headers without the specified header. Does not + * modify the original Headers instance. + * + * @param headerName - The name of the header to remove + */ + withoutHeader(headerName: string): Headers; +} +/** + * @public + * + * Represents HTTP message whose body has been resolved to a string. This is + * used in parsing http message. + */ +export interface ResolvedHttpResponse extends HttpResponse { + body: string; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/identity/AnonymousIdentity.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/identity/AnonymousIdentity.d.ts new file mode 100644 index 000000000..88c34cfb0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/identity/AnonymousIdentity.d.ts @@ -0,0 +1,6 @@ +import type { Identity } from "./Identity"; +/** + * @public + */ +export interface AnonymousIdentity extends Identity { +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/identity/AwsCredentialIdentity.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/identity/AwsCredentialIdentity.d.ts new file mode 100644 index 000000000..ef6df77af --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/identity/AwsCredentialIdentity.d.ts @@ -0,0 +1,61 @@ +import type { AwsCredentialIdentity, AwsCredentialIdentityProvider, Logger, RequestHandler } from "@smithy/types"; +import type { AwsSdkCredentialsFeatures } from "../feature-ids"; +export { AwsCredentialIdentity, AwsCredentialIdentityProvider, IdentityProvider } from "@smithy/types"; +/** + * @public + */ +export interface AwsIdentityProperties { + /** + * These are resolved client config values, and may be async providers. + */ + callerClientConfig?: { + /** + * It is likely a programming error if you use + * the caller client config credentials in a credential provider, since + * it will recurse. + * + * @deprecated do not use. + */ + credentials?: AwsCredentialIdentity | AwsCredentialIdentityProvider; + /** + * @internal + * @deprecated minimize use. + */ + credentialDefaultProvider?: (input?: any) => AwsCredentialIdentityProvider; + logger?: Logger; + profile?: string; + region(): Promise; + requestHandler?: RequestHandler; + userAgentAppId?(): Promise; + }; +} +/** + * @public + * + * Variation of {@link IdentityProvider} which accepts a contextual + * client configuration that includes an AWS region and potentially other + * configurable fields. + * + * Used to link a credential provider to a client if it is being called + * in the context of a client. + */ +export type RuntimeConfigIdentityProvider = (awsIdentityProperties?: AwsIdentityProperties) => Promise; +/** + * @public + * + * Variation of {@link AwsCredentialIdentityProvider} which accepts a contextual + * client configuration that includes an AWS region and potentially other + * configurable fields. + * + * Used to link a credential provider to a client if it is being called + * in the context of a client. + */ +export type RuntimeConfigAwsCredentialIdentityProvider = RuntimeConfigIdentityProvider; +/** + * @public + * + * AwsCredentialIdentity with source attribution metadata. + */ +export type AttributedAwsCredentialIdentity = AwsCredentialIdentity & { + $source?: AwsSdkCredentialsFeatures; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/identity/Identity.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/identity/Identity.d.ts new file mode 100644 index 000000000..4175fd346 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/identity/Identity.d.ts @@ -0,0 +1 @@ +export { Identity, IdentityProvider } from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/identity/LoginIdentity.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/identity/LoginIdentity.d.ts new file mode 100644 index 000000000..697ab4169 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/identity/LoginIdentity.d.ts @@ -0,0 +1,18 @@ +import type { Identity, IdentityProvider } from "./Identity"; +/** + * @public + */ +export interface LoginIdentity extends Identity { + /** + * Identity username + */ + readonly username: string; + /** + * Identity password + */ + readonly password: string; +} +/** + * @public + */ +export type LoginIdentityProvider = IdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/identity/TokenIdentity.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/identity/TokenIdentity.d.ts new file mode 100644 index 000000000..063a3ab8a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/identity/TokenIdentity.d.ts @@ -0,0 +1,11 @@ +import type { TokenIdentity } from "@smithy/types"; +import type { AwsSdkTokenFeatures } from "../feature-ids"; +export { TokenIdentity, TokenIdentityProvider } from "@smithy/types"; +/** + * @public + * + * TokenIdentity with source attribution metadata. + */ +export type AttributedTokenIdentity = TokenIdentity & { + $source?: AwsSdkTokenFeatures; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/identity/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/identity/index.d.ts new file mode 100644 index 000000000..863e78e80 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/identity/index.d.ts @@ -0,0 +1,5 @@ +export * from "./AnonymousIdentity"; +export * from "./AwsCredentialIdentity"; +export * from "./Identity"; +export * from "./LoginIdentity"; +export * from "./TokenIdentity"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/index.d.ts new file mode 100644 index 000000000..a7f99d93a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/index.d.ts @@ -0,0 +1,34 @@ +export * from "./abort"; +export * from "./auth"; +export * from "./blob/blob-types"; +export * from "./checksum"; +export * from "./client"; +export * from "./command"; +export * from "./connection"; +export * from "./credentials"; +export * from "./crypto"; +export * from "./dns"; +export * from "./encode"; +export * from "./endpoint"; +export * from "./eventStream"; +export * from "./extensions"; +export * from "./feature-ids"; +export * from "./function"; +export * from "./http"; +export * from "./identity"; +export * from "./logger"; +export * from "./middleware"; +export * from "./pagination"; +export * from "./profile"; +export * from "./request"; +export * from "./response"; +export * from "./retry"; +export * from "./serde"; +export * from "./shapes"; +export * from "./signature"; +export * from "./stream"; +export * from "./token"; +export * from "./transfer"; +export * from "./uri"; +export * from "./util"; +export * from "./waiter"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/logger.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/logger.d.ts new file mode 100644 index 000000000..11a33c697 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/logger.d.ts @@ -0,0 +1,22 @@ +import type { Logger } from "@smithy/types"; +export type { Logger } from "@smithy/types"; +/** + * @public + * + * A list of logger's log level. These levels are sorted in + * order of increasing severity. Each log level includes itself and all + * the levels behind itself. + * + * @example `new Logger({logLevel: 'warn'})` will print all the warn and error + * message. + */ +export type LogLevel = "all" | "trace" | "debug" | "log" | "info" | "warn" | "error" | "off"; +/** + * @public + * + * An object consumed by Logger constructor to initiate a logger object. + */ +export interface LoggerOptions { + logger?: Logger; + logLevel?: LogLevel; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/middleware.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/middleware.d.ts new file mode 100644 index 000000000..3f2451bd0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/middleware.d.ts @@ -0,0 +1,13 @@ +import type { HandlerExecutionContext } from "@smithy/types"; +import type { AwsSdkFeatures } from "./feature-ids"; +export { AbsoluteLocation, BuildHandler, BuildHandlerArguments, BuildHandlerOptions, BuildHandlerOutput, BuildMiddleware, DeserializeHandler, DeserializeHandlerArguments, DeserializeHandlerOptions, DeserializeHandlerOutput, DeserializeMiddleware, FinalizeHandler, FinalizeHandlerArguments, FinalizeHandlerOutput, FinalizeRequestHandlerOptions, FinalizeRequestMiddleware, Handler, HandlerExecutionContext, HandlerOptions, InitializeHandler, InitializeHandlerArguments, InitializeHandlerOptions, InitializeHandlerOutput, InitializeMiddleware, MiddlewareStack, MiddlewareType, Pluggable, Priority, Relation, RelativeLocation, RelativeMiddlewareOptions, SerializeHandler, SerializeHandlerArguments, SerializeHandlerOptions, SerializeHandlerOutput, SerializeMiddleware, Step, Terminalware, } from "@smithy/types"; +/** + * @internal + * Contains reserved keys for AWS SDK internal usage of the + * handler execution context object. + */ +export interface AwsHandlerExecutionContext extends HandlerExecutionContext { + __aws_sdk_context?: { + features?: AwsSdkFeatures; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/pagination.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/pagination.d.ts new file mode 100644 index 000000000..af791b0f4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/pagination.d.ts @@ -0,0 +1 @@ +export { PaginationConfiguration, Paginator } from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/profile.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/profile.d.ts new file mode 100644 index 000000000..9916f3bfc --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/profile.d.ts @@ -0,0 +1 @@ +export { IniSection, Profile, ParsedIniData, SharedConfigFiles } from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/request.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/request.d.ts new file mode 100644 index 000000000..95405d1b8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/request.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + */ +export interface Request { + destination: URL; + body?: any; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/response.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/response.d.ts new file mode 100644 index 000000000..8d9935048 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/response.d.ts @@ -0,0 +1,7 @@ +export { MetadataBearer, ResponseMetadata } from "@smithy/types"; +/** + * @internal + */ +export interface Response { + body: any; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/retry.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/retry.d.ts new file mode 100644 index 000000000..4b7eb98ba --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/retry.d.ts @@ -0,0 +1 @@ +export { ExponentialBackoffJitterType, ExponentialBackoffStrategyOptions, RetryBackoffStrategy, RetryErrorInfo, RetryErrorType, RetryStrategyOptions, RetryStrategyV2, RetryToken, StandardRetryBackoffStrategy, StandardRetryToken, } from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/serde.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/serde.d.ts new file mode 100644 index 000000000..c4cab7964 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/serde.d.ts @@ -0,0 +1,24 @@ +export { EndpointBearer, StreamCollector, SerdeContext, ResponseDeserializer, RequestSerializer, SdkStreamMixin, SdkStream, WithSdkStreamMixin, SdkStreamMixinInjector, SdkStreamSerdeContext, } from "@smithy/types"; +/** + * @public + * + * Declare DOM interfaces in case dom.d.ts is not added to the tsconfig lib, causing + * interfaces to not be defined. For developers with dom.d.ts added, the interfaces will + * be merged correctly. + * + * This is also required for any clients with streaming interfaces where the corresponding + * types are also referred. The type is only declared here once since this `@aws-sdk/types` + * is depended by all `@aws-sdk` packages. + */ +declare global { + /** + * @public + */ + export interface ReadableStream { + } + /** + * @public + */ + export interface Blob { + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/shapes.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/shapes.d.ts new file mode 100644 index 000000000..bc19cc78e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/shapes.d.ts @@ -0,0 +1 @@ +export { DocumentType, RetryableTrait, SmithyException, SdkError } from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/signature.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/signature.d.ts new file mode 100644 index 000000000..23cbe97e1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/signature.d.ts @@ -0,0 +1 @@ +export { DateInput, EventSigner, EventSigningArguments, FormattedEvent, MessageSigner, RequestSigningArguments, RequestPresigner, RequestPresigningArguments, RequestSigner, SignableMessage, SignedMessage, SigningArguments, StringSigner, } from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/stream.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/stream.d.ts new file mode 100644 index 000000000..9092844a6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/stream.d.ts @@ -0,0 +1 @@ +export { GetAwsChunkedEncodingStream, GetAwsChunkedEncodingStreamOptions } from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/token.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/token.d.ts new file mode 100644 index 000000000..b18d9113a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/token.d.ts @@ -0,0 +1,17 @@ +import type { TokenIdentity } from "./identity"; +import type { Provider } from "./util"; +/** + * @public + * + * An object representing temporary or permanent AWS token. + * + * @deprecated Use {@link TokenIdentity} + */ +export interface Token extends TokenIdentity { +} +/** + * @public + * + * @deprecated Use {@link TokenIdentityProvider} + */ +export type TokenProvider = Provider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/transfer.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/transfer.d.ts new file mode 100644 index 000000000..ba781903f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/transfer.d.ts @@ -0,0 +1 @@ +export { RequestContext, RequestHandler, RequestHandlerMetadata, RequestHandlerOutput, RequestHandlerProtocol, } from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/abort.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/abort.d.ts new file mode 100644 index 000000000..dad6079f8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/abort.d.ts @@ -0,0 +1 @@ +export { AbortController, AbortHandler, AbortSignal } from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/auth.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/auth.d.ts new file mode 100644 index 000000000..8a02dbc82 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/auth.d.ts @@ -0,0 +1,5 @@ +export { + AuthScheme, + HttpAuthDefinition, + HttpAuthLocation, +} from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/blob/blob-types.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/blob/blob-types.d.ts new file mode 100644 index 000000000..df39efe01 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/blob/blob-types.d.ts @@ -0,0 +1,2 @@ +import { BlobTypes } from "@smithy/types"; +export { BlobTypes }; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/checksum.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/checksum.d.ts new file mode 100644 index 000000000..f805d7291 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/checksum.d.ts @@ -0,0 +1 @@ +export { Checksum, ChecksumConstructor } from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/client.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/client.d.ts new file mode 100644 index 000000000..d6b3dcf95 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/client.d.ts @@ -0,0 +1 @@ +export { Client } from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/command.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/command.d.ts new file mode 100644 index 000000000..388726706 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/command.d.ts @@ -0,0 +1 @@ +export { Command } from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/connection.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/connection.d.ts new file mode 100644 index 000000000..36ebd004b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/connection.d.ts @@ -0,0 +1,6 @@ +export { + ConnectConfiguration, + ConnectionManager, + ConnectionManagerConfiguration, + ConnectionPool, +} from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/credentials.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/credentials.d.ts new file mode 100644 index 000000000..eb9cfadd6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/credentials.d.ts @@ -0,0 +1,15 @@ +import { Logger } from "@smithy/types"; +import { AwsCredentialIdentity } from "./identity"; +import { Provider } from "./util"; +export interface Credentials extends AwsCredentialIdentity {} +export type CredentialProvider = Provider; +export type CredentialProviderOptions = { + logger?: Logger; + parentClientConfig?: { + region?: string | Provider; + profile?: string; + logger?: Logger; + userAgentAppId?(): Promise; + [key: string]: unknown; + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/crypto.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/crypto.d.ts new file mode 100644 index 000000000..dfe61bfe5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/crypto.d.ts @@ -0,0 +1,7 @@ +export { + Hash, + HashConstructor, + StreamHasher, + randomValues, + SourceData, +} from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/dns.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/dns.d.ts new file mode 100644 index 000000000..d89994920 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/dns.d.ts @@ -0,0 +1,19 @@ +export declare enum HostAddressType { + AAAA = "AAAA", + A = "A", +} +export interface HostAddress { + addressType: HostAddressType; + address: string; + hostName: string; + service?: string; +} +export interface HostResolverArguments { + hostName: string; + service?: string; +} +export interface HostResolver { + resolveAddress(args: HostResolverArguments): Promise; + reportFailureOnAddress(addr: HostAddress): void; + purgeCache(args?: HostResolverArguments): void; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/encode.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/encode.d.ts new file mode 100644 index 000000000..76966f9bd --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/encode.d.ts @@ -0,0 +1,6 @@ +export { + MessageDecoder, + MessageEncoder, + AvailableMessage, + AvailableMessages, +} from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/endpoint.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/endpoint.d.ts new file mode 100644 index 000000000..ff3c7ded7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/endpoint.d.ts @@ -0,0 +1,9 @@ +export { + EndpointARN, + EndpointPartition, + EndpointURLScheme, + EndpointURL, + EndpointObjectProperty, + EndpointV2, + EndpointParameters, +} from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/eventStream.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/eventStream.d.ts new file mode 100644 index 000000000..e4c04a9b6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/eventStream.d.ts @@ -0,0 +1,24 @@ +export { + Message, + MessageHeaders, + BooleanHeaderValue, + ByteHeaderValue, + ShortHeaderValue, + IntegerHeaderValue, + LongHeaderValue, + BinaryHeaderValue, + StringHeaderValue, + TimestampHeaderValue, + UuidHeaderValue, + MessageHeaderValue, + Int64, + EventStreamSerdeContext, + EventStreamMarshaller, + EventStreamMarshallerDeserFn, + EventStreamMarshallerSerFn, + EventStreamPayloadHandler, + EventStreamPayloadHandlerProvider, + EventStreamRequestSigner, + EventStreamSerdeProvider, + EventStreamSignerProvider, +} from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/extensions/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/extensions/index.d.ts new file mode 100644 index 000000000..accf5ec7f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/extensions/index.d.ts @@ -0,0 +1,5 @@ +import { Provider } from "@smithy/types"; +export interface AwsRegionExtensionConfiguration { + setRegion(region: Provider): void; + region(): Provider; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/feature-ids.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/feature-ids.d.ts new file mode 100644 index 000000000..d94278900 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/feature-ids.d.ts @@ -0,0 +1,60 @@ +export type AwsSdkFeatures = Partial<{ + RESOURCE_MODEL: "A"; + WAITER: "B"; + PAGINATOR: "C"; + RETRY_MODE_LEGACY: "D"; + RETRY_MODE_STANDARD: "E"; + RETRY_MODE_ADAPTIVE: "F"; + S3_EXPRESS_BUCKET: "J"; + S3_ACCESS_GRANTS: "K"; + GZIP_REQUEST_COMPRESSION: "L"; + PROTOCOL_RPC_V2_CBOR: "M"; + ENDPOINT_OVERRIDE: "N"; + ACCOUNT_ID_ENDPOINT: "O"; + ACCOUNT_ID_MODE_PREFERRED: "P"; + ACCOUNT_ID_MODE_DISABLED: "Q"; + ACCOUNT_ID_MODE_REQUIRED: "R"; + SIGV4A_SIGNING: "S"; + FLEXIBLE_CHECKSUMS_REQ_CRC32: "U"; + FLEXIBLE_CHECKSUMS_REQ_CRC32C: "V"; + FLEXIBLE_CHECKSUMS_REQ_CRC64: "W"; + FLEXIBLE_CHECKSUMS_REQ_SHA1: "X"; + FLEXIBLE_CHECKSUMS_REQ_SHA256: "Y"; + FLEXIBLE_CHECKSUMS_REQ_WHEN_SUPPORTED: "Z"; + FLEXIBLE_CHECKSUMS_REQ_WHEN_REQUIRED: "a"; + FLEXIBLE_CHECKSUMS_RES_WHEN_SUPPORTED: "b"; + FLEXIBLE_CHECKSUMS_RES_WHEN_REQUIRED: "c"; + DDB_MAPPER: "d"; +}> & + AwsSdkCredentialsFeatures & + AwsSdkTokenFeatures; +export type AwsSdkCredentialsFeatures = Partial<{ + RESOLVED_ACCOUNT_ID: "T"; + CREDENTIALS_CODE: "e"; + CREDENTIALS_ENV_VARS: "g"; + CREDENTIALS_ENV_VARS_STS_WEB_ID_TOKEN: "h"; + CREDENTIALS_STS_ASSUME_ROLE: "i"; + CREDENTIALS_STS_ASSUME_ROLE_SAML: "j"; + CREDENTIALS_STS_ASSUME_ROLE_WEB_ID: "k"; + CREDENTIALS_STS_FEDERATION_TOKEN: "l"; + CREDENTIALS_STS_SESSION_TOKEN: "m"; + CREDENTIALS_PROFILE: "n"; + CREDENTIALS_PROFILE_SOURCE_PROFILE: "o"; + CREDENTIALS_PROFILE_NAMED_PROVIDER: "p"; + CREDENTIALS_PROFILE_STS_WEB_ID_TOKEN: "q"; + CREDENTIALS_PROFILE_SSO: "r"; + CREDENTIALS_SSO: "s"; + CREDENTIALS_PROFILE_SSO_LEGACY: "t"; + CREDENTIALS_SSO_LEGACY: "u"; + CREDENTIALS_PROFILE_PROCESS: "v"; + CREDENTIALS_PROCESS: "w"; + CREDENTIALS_BOTO2_CONFIG_FILE: "x"; + CREDENTIALS_AWS_SDK_STORE: "y"; + CREDENTIALS_HTTP: "z"; + CREDENTIALS_IMDS: "0"; + CREDENTIALS_PROFILE_LOGIN: "AC"; + CREDENTIALS_LOGIN: "AD"; +}>; +export type AwsSdkTokenFeatures = Partial<{ + BEARER_SERVICE_ENV_VARS: "3"; +}>; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/function.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/function.d.ts new file mode 100644 index 000000000..d6efac50a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/function.d.ts @@ -0,0 +1,7 @@ +export type MergeFunctions = F1 extends (arg: infer A1) => infer R1 + ? F2 extends (arg: infer A2) => infer R2 + ? R1 extends Promise + ? (arg?: A1 & A2) => Promise & Awaited> + : (arg?: A1 & A2) => R1 & R2 + : never + : never; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/http.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/http.d.ts new file mode 100644 index 000000000..d8e0eab8d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/http.d.ts @@ -0,0 +1,17 @@ +import { HttpResponse } from "@smithy/types"; +export { + Endpoint, + HeaderBag, + HttpHandlerOptions, + HttpMessage, + HttpRequest, + HttpResponse, + QueryParameterBag, +} from "@smithy/types"; +export interface Headers extends Map { + withHeader(headerName: string, headerValue: string): Headers; + withoutHeader(headerName: string): Headers; +} +export interface ResolvedHttpResponse extends HttpResponse { + body: string; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/AnonymousIdentity.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/AnonymousIdentity.d.ts new file mode 100644 index 000000000..5b175f60c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/AnonymousIdentity.d.ts @@ -0,0 +1,2 @@ +import { Identity } from "./Identity"; +export interface AnonymousIdentity extends Identity {} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/AwsCredentialIdentity.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/AwsCredentialIdentity.d.ts new file mode 100644 index 000000000..a57423cd9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/AwsCredentialIdentity.d.ts @@ -0,0 +1,31 @@ +import { + AwsCredentialIdentity, + AwsCredentialIdentityProvider, + Logger, + RequestHandler, +} from "@smithy/types"; +import { AwsSdkCredentialsFeatures } from "../feature-ids"; +export { + AwsCredentialIdentity, + AwsCredentialIdentityProvider, + IdentityProvider, +} from "@smithy/types"; +export interface AwsIdentityProperties { + callerClientConfig?: { + credentials?: AwsCredentialIdentity | AwsCredentialIdentityProvider; + credentialDefaultProvider?: (input?: any) => AwsCredentialIdentityProvider; + logger?: Logger; + profile?: string; + region(): Promise; + requestHandler?: RequestHandler; + userAgentAppId?(): Promise; + }; +} +export type RuntimeConfigIdentityProvider = ( + awsIdentityProperties?: AwsIdentityProperties +) => Promise; +export type RuntimeConfigAwsCredentialIdentityProvider = + RuntimeConfigIdentityProvider; +export type AttributedAwsCredentialIdentity = AwsCredentialIdentity & { + $source?: AwsSdkCredentialsFeatures; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/Identity.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/Identity.d.ts new file mode 100644 index 000000000..4175fd346 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/Identity.d.ts @@ -0,0 +1 @@ +export { Identity, IdentityProvider } from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/LoginIdentity.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/LoginIdentity.d.ts new file mode 100644 index 000000000..3258bbb2e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/LoginIdentity.d.ts @@ -0,0 +1,6 @@ +import { Identity, IdentityProvider } from "./Identity"; +export interface LoginIdentity extends Identity { + readonly username: string; + readonly password: string; +} +export type LoginIdentityProvider = IdentityProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/TokenIdentity.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/TokenIdentity.d.ts new file mode 100644 index 000000000..dc2ccf9be --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/TokenIdentity.d.ts @@ -0,0 +1,6 @@ +import { TokenIdentity } from "@smithy/types"; +import { AwsSdkTokenFeatures } from "../feature-ids"; +export { TokenIdentity, TokenIdentityProvider } from "@smithy/types"; +export type AttributedTokenIdentity = TokenIdentity & { + $source?: AwsSdkTokenFeatures; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/index.d.ts new file mode 100644 index 000000000..863e78e80 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/index.d.ts @@ -0,0 +1,5 @@ +export * from "./AnonymousIdentity"; +export * from "./AwsCredentialIdentity"; +export * from "./Identity"; +export * from "./LoginIdentity"; +export * from "./TokenIdentity"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..a7f99d93a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/index.d.ts @@ -0,0 +1,34 @@ +export * from "./abort"; +export * from "./auth"; +export * from "./blob/blob-types"; +export * from "./checksum"; +export * from "./client"; +export * from "./command"; +export * from "./connection"; +export * from "./credentials"; +export * from "./crypto"; +export * from "./dns"; +export * from "./encode"; +export * from "./endpoint"; +export * from "./eventStream"; +export * from "./extensions"; +export * from "./feature-ids"; +export * from "./function"; +export * from "./http"; +export * from "./identity"; +export * from "./logger"; +export * from "./middleware"; +export * from "./pagination"; +export * from "./profile"; +export * from "./request"; +export * from "./response"; +export * from "./retry"; +export * from "./serde"; +export * from "./shapes"; +export * from "./signature"; +export * from "./stream"; +export * from "./token"; +export * from "./transfer"; +export * from "./uri"; +export * from "./util"; +export * from "./waiter"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/logger.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/logger.d.ts new file mode 100644 index 000000000..c7149157d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/logger.d.ts @@ -0,0 +1,15 @@ +import { Logger } from "@smithy/types"; +export { Logger } from "@smithy/types"; +export type LogLevel = + | "all" + | "trace" + | "debug" + | "log" + | "info" + | "warn" + | "error" + | "off"; +export interface LoggerOptions { + logger?: Logger; + logLevel?: LogLevel; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/middleware.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/middleware.d.ts new file mode 100644 index 000000000..e101e9bbf --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/middleware.d.ts @@ -0,0 +1,47 @@ +import { HandlerExecutionContext } from "@smithy/types"; +import { AwsSdkFeatures } from "./feature-ids"; +export { + AbsoluteLocation, + BuildHandler, + BuildHandlerArguments, + BuildHandlerOptions, + BuildHandlerOutput, + BuildMiddleware, + DeserializeHandler, + DeserializeHandlerArguments, + DeserializeHandlerOptions, + DeserializeHandlerOutput, + DeserializeMiddleware, + FinalizeHandler, + FinalizeHandlerArguments, + FinalizeHandlerOutput, + FinalizeRequestHandlerOptions, + FinalizeRequestMiddleware, + Handler, + HandlerExecutionContext, + HandlerOptions, + InitializeHandler, + InitializeHandlerArguments, + InitializeHandlerOptions, + InitializeHandlerOutput, + InitializeMiddleware, + MiddlewareStack, + MiddlewareType, + Pluggable, + Priority, + Relation, + RelativeLocation, + RelativeMiddlewareOptions, + SerializeHandler, + SerializeHandlerArguments, + SerializeHandlerOptions, + SerializeHandlerOutput, + SerializeMiddleware, + Step, + Terminalware, +} from "@smithy/types"; +export interface AwsHandlerExecutionContext extends HandlerExecutionContext { + __aws_sdk_context?: { + features?: AwsSdkFeatures; + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/pagination.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/pagination.d.ts new file mode 100644 index 000000000..af791b0f4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/pagination.d.ts @@ -0,0 +1 @@ +export { PaginationConfiguration, Paginator } from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/profile.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/profile.d.ts new file mode 100644 index 000000000..b3813d83a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/profile.d.ts @@ -0,0 +1,6 @@ +export { + IniSection, + Profile, + ParsedIniData, + SharedConfigFiles, +} from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/request.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/request.d.ts new file mode 100644 index 000000000..5c6e79384 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/request.d.ts @@ -0,0 +1,4 @@ +export interface Request { + destination: URL; + body?: any; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/response.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/response.d.ts new file mode 100644 index 000000000..4e5fcd0e0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/response.d.ts @@ -0,0 +1,4 @@ +export { MetadataBearer, ResponseMetadata } from "@smithy/types"; +export interface Response { + body: any; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/retry.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/retry.d.ts new file mode 100644 index 000000000..8fc946ad8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/retry.d.ts @@ -0,0 +1,12 @@ +export { + ExponentialBackoffJitterType, + ExponentialBackoffStrategyOptions, + RetryBackoffStrategy, + RetryErrorInfo, + RetryErrorType, + RetryStrategyOptions, + RetryStrategyV2, + RetryToken, + StandardRetryBackoffStrategy, + StandardRetryToken, +} from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/serde.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/serde.d.ts new file mode 100644 index 000000000..a7ed76f34 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/serde.d.ts @@ -0,0 +1,16 @@ +export { + EndpointBearer, + StreamCollector, + SerdeContext, + ResponseDeserializer, + RequestSerializer, + SdkStreamMixin, + SdkStream, + WithSdkStreamMixin, + SdkStreamMixinInjector, + SdkStreamSerdeContext, +} from "@smithy/types"; +declare global { + export interface ReadableStream {} + export interface Blob {} +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/shapes.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/shapes.d.ts new file mode 100644 index 000000000..d1efa9a06 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/shapes.d.ts @@ -0,0 +1,6 @@ +export { + DocumentType, + RetryableTrait, + SmithyException, + SdkError, +} from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/signature.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/signature.d.ts new file mode 100644 index 000000000..cbabd7573 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/signature.d.ts @@ -0,0 +1,15 @@ +export { + DateInput, + EventSigner, + EventSigningArguments, + FormattedEvent, + MessageSigner, + RequestSigningArguments, + RequestPresigner, + RequestPresigningArguments, + RequestSigner, + SignableMessage, + SignedMessage, + SigningArguments, + StringSigner, +} from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/stream.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/stream.d.ts new file mode 100644 index 000000000..1b7941368 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/stream.d.ts @@ -0,0 +1,4 @@ +export { + GetAwsChunkedEncodingStream, + GetAwsChunkedEncodingStreamOptions, +} from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/token.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/token.d.ts new file mode 100644 index 000000000..c33e50663 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/token.d.ts @@ -0,0 +1,4 @@ +import { TokenIdentity } from "./identity"; +import { Provider } from "./util"; +export interface Token extends TokenIdentity {} +export type TokenProvider = Provider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/transfer.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/transfer.d.ts new file mode 100644 index 000000000..04a7f87a8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/transfer.d.ts @@ -0,0 +1,7 @@ +export { + RequestContext, + RequestHandler, + RequestHandlerMetadata, + RequestHandlerOutput, + RequestHandlerProtocol, +} from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/uri.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/uri.d.ts new file mode 100644 index 000000000..297dfe46c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/uri.d.ts @@ -0,0 +1 @@ +export { URI } from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/util.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/util.d.ts new file mode 100644 index 000000000..e7e43e620 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/util.d.ts @@ -0,0 +1,14 @@ +export { + Encoder, + Decoder, + Provider, + UserAgentPair, + UserAgent, + UrlParser, + MemoizedProvider, + BodyLengthCalculator, + RegionInfo, + RegionInfoProviderOptions, + RegionInfoProvider, + RetryStrategy, +} from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/waiter.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/waiter.d.ts new file mode 100644 index 000000000..bb98020d9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/ts3.4/waiter.d.ts @@ -0,0 +1 @@ +export { WaiterConfiguration } from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/uri.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/uri.d.ts new file mode 100644 index 000000000..297dfe46c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/uri.d.ts @@ -0,0 +1 @@ +export { URI } from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/util.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/util.d.ts new file mode 100644 index 000000000..fd059b644 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/util.d.ts @@ -0,0 +1 @@ +export { Encoder, Decoder, Provider, UserAgentPair, UserAgent, UrlParser, MemoizedProvider, BodyLengthCalculator, RegionInfo, RegionInfoProviderOptions, RegionInfoProvider, RetryStrategy, } from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/waiter.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/waiter.d.ts new file mode 100644 index 000000000..bb98020d9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/dist-types/waiter.d.ts @@ -0,0 +1 @@ +export { WaiterConfiguration } from "@smithy/types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/types/package.json b/food-ordering-app/server/node_modules/@aws-sdk/types/package.json new file mode 100644 index 000000000..a2f60d8f4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/types/package.json @@ -0,0 +1,57 @@ +{ + "name": "@aws-sdk/types", + "version": "3.973.6", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "description": "Types for the AWS SDK", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline types", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "extract:docs": "api-extractor run --local", + "test": "tsc -p tsconfig.test.json" + }, + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/types", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/types" + }, + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "browser": {}, + "react-native": {} +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/LICENSE b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/README.md b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/README.md new file mode 100644 index 000000000..641f54a2c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/README.md @@ -0,0 +1,6 @@ +# @aws-sdk/util-endpoints + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/util-endpoints/latest.svg)](https://www.npmjs.com/package/@aws-sdk/util-endpoints) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/util-endpoints.svg)](https://www.npmjs.com/package/@aws-sdk/util-endpoints) + +> An internal package diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-cjs/index.js b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-cjs/index.js new file mode 100644 index 000000000..5f942508b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-cjs/index.js @@ -0,0 +1,406 @@ +'use strict'; + +var utilEndpoints = require('@smithy/util-endpoints'); +var urlParser = require('@smithy/url-parser'); + +const isVirtualHostableS3Bucket = (value, allowSubDomains = false) => { + if (allowSubDomains) { + for (const label of value.split(".")) { + if (!isVirtualHostableS3Bucket(label)) { + return false; + } + } + return true; + } + if (!utilEndpoints.isValidHostLabel(value)) { + return false; + } + if (value.length < 3 || value.length > 63) { + return false; + } + if (value !== value.toLowerCase()) { + return false; + } + if (utilEndpoints.isIpAddress(value)) { + return false; + } + return true; +}; + +const ARN_DELIMITER = ":"; +const RESOURCE_DELIMITER = "/"; +const parseArn = (value) => { + const segments = value.split(ARN_DELIMITER); + if (segments.length < 6) + return null; + const [arn, partition, service, region, accountId, ...resourcePath] = segments; + if (arn !== "arn" || partition === "" || service === "" || resourcePath.join(ARN_DELIMITER) === "") + return null; + const resourceId = resourcePath.map((resource) => resource.split(RESOURCE_DELIMITER)).flat(); + return { + partition, + service, + region, + accountId, + resourceId, + }; +}; + +var partitions = [ + { + id: "aws", + outputs: { + dnsSuffix: "amazonaws.com", + dualStackDnsSuffix: "api.aws", + implicitGlobalRegion: "us-east-1", + name: "aws", + supportsDualStack: true, + supportsFIPS: true + }, + regionRegex: "^(us|eu|ap|sa|ca|me|af|il|mx)\\-\\w+\\-\\d+$", + regions: { + "af-south-1": { + description: "Africa (Cape Town)" + }, + "ap-east-1": { + description: "Asia Pacific (Hong Kong)" + }, + "ap-east-2": { + description: "Asia Pacific (Taipei)" + }, + "ap-northeast-1": { + description: "Asia Pacific (Tokyo)" + }, + "ap-northeast-2": { + description: "Asia Pacific (Seoul)" + }, + "ap-northeast-3": { + description: "Asia Pacific (Osaka)" + }, + "ap-south-1": { + description: "Asia Pacific (Mumbai)" + }, + "ap-south-2": { + description: "Asia Pacific (Hyderabad)" + }, + "ap-southeast-1": { + description: "Asia Pacific (Singapore)" + }, + "ap-southeast-2": { + description: "Asia Pacific (Sydney)" + }, + "ap-southeast-3": { + description: "Asia Pacific (Jakarta)" + }, + "ap-southeast-4": { + description: "Asia Pacific (Melbourne)" + }, + "ap-southeast-5": { + description: "Asia Pacific (Malaysia)" + }, + "ap-southeast-6": { + description: "Asia Pacific (New Zealand)" + }, + "ap-southeast-7": { + description: "Asia Pacific (Thailand)" + }, + "aws-global": { + description: "aws global region" + }, + "ca-central-1": { + description: "Canada (Central)" + }, + "ca-west-1": { + description: "Canada West (Calgary)" + }, + "eu-central-1": { + description: "Europe (Frankfurt)" + }, + "eu-central-2": { + description: "Europe (Zurich)" + }, + "eu-north-1": { + description: "Europe (Stockholm)" + }, + "eu-south-1": { + description: "Europe (Milan)" + }, + "eu-south-2": { + description: "Europe (Spain)" + }, + "eu-west-1": { + description: "Europe (Ireland)" + }, + "eu-west-2": { + description: "Europe (London)" + }, + "eu-west-3": { + description: "Europe (Paris)" + }, + "il-central-1": { + description: "Israel (Tel Aviv)" + }, + "me-central-1": { + description: "Middle East (UAE)" + }, + "me-south-1": { + description: "Middle East (Bahrain)" + }, + "mx-central-1": { + description: "Mexico (Central)" + }, + "sa-east-1": { + description: "South America (Sao Paulo)" + }, + "us-east-1": { + description: "US East (N. Virginia)" + }, + "us-east-2": { + description: "US East (Ohio)" + }, + "us-west-1": { + description: "US West (N. California)" + }, + "us-west-2": { + description: "US West (Oregon)" + } + } + }, + { + id: "aws-cn", + outputs: { + dnsSuffix: "amazonaws.com.cn", + dualStackDnsSuffix: "api.amazonwebservices.com.cn", + implicitGlobalRegion: "cn-northwest-1", + name: "aws-cn", + supportsDualStack: true, + supportsFIPS: true + }, + regionRegex: "^cn\\-\\w+\\-\\d+$", + regions: { + "aws-cn-global": { + description: "aws-cn global region" + }, + "cn-north-1": { + description: "China (Beijing)" + }, + "cn-northwest-1": { + description: "China (Ningxia)" + } + } + }, + { + id: "aws-eusc", + outputs: { + dnsSuffix: "amazonaws.eu", + dualStackDnsSuffix: "api.amazonwebservices.eu", + implicitGlobalRegion: "eusc-de-east-1", + name: "aws-eusc", + supportsDualStack: true, + supportsFIPS: true + }, + regionRegex: "^eusc\\-(de)\\-\\w+\\-\\d+$", + regions: { + "eusc-de-east-1": { + description: "AWS European Sovereign Cloud (Germany)" + } + } + }, + { + id: "aws-iso", + outputs: { + dnsSuffix: "c2s.ic.gov", + dualStackDnsSuffix: "api.aws.ic.gov", + implicitGlobalRegion: "us-iso-east-1", + name: "aws-iso", + supportsDualStack: true, + supportsFIPS: true + }, + regionRegex: "^us\\-iso\\-\\w+\\-\\d+$", + regions: { + "aws-iso-global": { + description: "aws-iso global region" + }, + "us-iso-east-1": { + description: "US ISO East" + }, + "us-iso-west-1": { + description: "US ISO WEST" + } + } + }, + { + id: "aws-iso-b", + outputs: { + dnsSuffix: "sc2s.sgov.gov", + dualStackDnsSuffix: "api.aws.scloud", + implicitGlobalRegion: "us-isob-east-1", + name: "aws-iso-b", + supportsDualStack: true, + supportsFIPS: true + }, + regionRegex: "^us\\-isob\\-\\w+\\-\\d+$", + regions: { + "aws-iso-b-global": { + description: "aws-iso-b global region" + }, + "us-isob-east-1": { + description: "US ISOB East (Ohio)" + }, + "us-isob-west-1": { + description: "US ISOB West" + } + } + }, + { + id: "aws-iso-e", + outputs: { + dnsSuffix: "cloud.adc-e.uk", + dualStackDnsSuffix: "api.cloud-aws.adc-e.uk", + implicitGlobalRegion: "eu-isoe-west-1", + name: "aws-iso-e", + supportsDualStack: true, + supportsFIPS: true + }, + regionRegex: "^eu\\-isoe\\-\\w+\\-\\d+$", + regions: { + "aws-iso-e-global": { + description: "aws-iso-e global region" + }, + "eu-isoe-west-1": { + description: "EU ISOE West" + } + } + }, + { + id: "aws-iso-f", + outputs: { + dnsSuffix: "csp.hci.ic.gov", + dualStackDnsSuffix: "api.aws.hci.ic.gov", + implicitGlobalRegion: "us-isof-south-1", + name: "aws-iso-f", + supportsDualStack: true, + supportsFIPS: true + }, + regionRegex: "^us\\-isof\\-\\w+\\-\\d+$", + regions: { + "aws-iso-f-global": { + description: "aws-iso-f global region" + }, + "us-isof-east-1": { + description: "US ISOF EAST" + }, + "us-isof-south-1": { + description: "US ISOF SOUTH" + } + } + }, + { + id: "aws-us-gov", + outputs: { + dnsSuffix: "amazonaws.com", + dualStackDnsSuffix: "api.aws", + implicitGlobalRegion: "us-gov-west-1", + name: "aws-us-gov", + supportsDualStack: true, + supportsFIPS: true + }, + regionRegex: "^us\\-gov\\-\\w+\\-\\d+$", + regions: { + "aws-us-gov-global": { + description: "aws-us-gov global region" + }, + "us-gov-east-1": { + description: "AWS GovCloud (US-East)" + }, + "us-gov-west-1": { + description: "AWS GovCloud (US-West)" + } + } + } +]; +var version = "1.1"; +var partitionsInfo = { + partitions: partitions, + version: version +}; + +let selectedPartitionsInfo = partitionsInfo; +let selectedUserAgentPrefix = ""; +const partition = (value) => { + const { partitions } = selectedPartitionsInfo; + for (const partition of partitions) { + const { regions, outputs } = partition; + for (const [region, regionData] of Object.entries(regions)) { + if (region === value) { + return { + ...outputs, + ...regionData, + }; + } + } + } + for (const partition of partitions) { + const { regionRegex, outputs } = partition; + if (new RegExp(regionRegex).test(value)) { + return { + ...outputs, + }; + } + } + const DEFAULT_PARTITION = partitions.find((partition) => partition.id === "aws"); + if (!DEFAULT_PARTITION) { + throw new Error("Provided region was not found in the partition array or regex," + + " and default partition with id 'aws' doesn't exist."); + } + return { + ...DEFAULT_PARTITION.outputs, + }; +}; +const setPartitionInfo = (partitionsInfo, userAgentPrefix = "") => { + selectedPartitionsInfo = partitionsInfo; + selectedUserAgentPrefix = userAgentPrefix; +}; +const useDefaultPartitionInfo = () => { + setPartitionInfo(partitionsInfo, ""); +}; +const getUserAgentPrefix = () => selectedUserAgentPrefix; + +const awsEndpointFunctions = { + isVirtualHostableS3Bucket: isVirtualHostableS3Bucket, + parseArn: parseArn, + partition: partition, +}; +utilEndpoints.customEndpointFunctions.aws = awsEndpointFunctions; + +const resolveDefaultAwsRegionalEndpointsConfig = (input) => { + if (typeof input.endpointProvider !== "function") { + throw new Error("@aws-sdk/util-endpoint - endpointProvider and endpoint missing in config for this client."); + } + const { endpoint } = input; + if (endpoint === undefined) { + input.endpoint = async () => { + return toEndpointV1(input.endpointProvider({ + Region: typeof input.region === "function" ? await input.region() : input.region, + UseDualStack: typeof input.useDualstackEndpoint === "function" + ? await input.useDualstackEndpoint() + : input.useDualstackEndpoint, + UseFIPS: typeof input.useFipsEndpoint === "function" ? await input.useFipsEndpoint() : input.useFipsEndpoint, + Endpoint: undefined, + }, { logger: input.logger })); + }; + } + return input; +}; +const toEndpointV1 = (endpoint) => urlParser.parseUrl(endpoint.url); + +exports.EndpointError = utilEndpoints.EndpointError; +exports.isIpAddress = utilEndpoints.isIpAddress; +exports.resolveEndpoint = utilEndpoints.resolveEndpoint; +exports.awsEndpointFunctions = awsEndpointFunctions; +exports.getUserAgentPrefix = getUserAgentPrefix; +exports.partition = partition; +exports.resolveDefaultAwsRegionalEndpointsConfig = resolveDefaultAwsRegionalEndpointsConfig; +exports.setPartitionInfo = setPartitionInfo; +exports.toEndpointV1 = toEndpointV1; +exports.useDefaultPartitionInfo = useDefaultPartitionInfo; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/aws/partitions.json b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/aws/partitions.json new file mode 100644 index 000000000..d7d22d846 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/aws/partitions.json @@ -0,0 +1,267 @@ +{ + "partitions": [{ + "id": "aws", + "outputs": { + "dnsSuffix": "amazonaws.com", + "dualStackDnsSuffix": "api.aws", + "implicitGlobalRegion": "us-east-1", + "name": "aws", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^(us|eu|ap|sa|ca|me|af|il|mx)\\-\\w+\\-\\d+$", + "regions": { + "af-south-1": { + "description": "Africa (Cape Town)" + }, + "ap-east-1": { + "description": "Asia Pacific (Hong Kong)" + }, + "ap-east-2": { + "description": "Asia Pacific (Taipei)" + }, + "ap-northeast-1": { + "description": "Asia Pacific (Tokyo)" + }, + "ap-northeast-2": { + "description": "Asia Pacific (Seoul)" + }, + "ap-northeast-3": { + "description": "Asia Pacific (Osaka)" + }, + "ap-south-1": { + "description": "Asia Pacific (Mumbai)" + }, + "ap-south-2": { + "description": "Asia Pacific (Hyderabad)" + }, + "ap-southeast-1": { + "description": "Asia Pacific (Singapore)" + }, + "ap-southeast-2": { + "description": "Asia Pacific (Sydney)" + }, + "ap-southeast-3": { + "description": "Asia Pacific (Jakarta)" + }, + "ap-southeast-4": { + "description": "Asia Pacific (Melbourne)" + }, + "ap-southeast-5": { + "description": "Asia Pacific (Malaysia)" + }, + "ap-southeast-6": { + "description": "Asia Pacific (New Zealand)" + }, + "ap-southeast-7": { + "description": "Asia Pacific (Thailand)" + }, + "aws-global": { + "description": "aws global region" + }, + "ca-central-1": { + "description": "Canada (Central)" + }, + "ca-west-1": { + "description": "Canada West (Calgary)" + }, + "eu-central-1": { + "description": "Europe (Frankfurt)" + }, + "eu-central-2": { + "description": "Europe (Zurich)" + }, + "eu-north-1": { + "description": "Europe (Stockholm)" + }, + "eu-south-1": { + "description": "Europe (Milan)" + }, + "eu-south-2": { + "description": "Europe (Spain)" + }, + "eu-west-1": { + "description": "Europe (Ireland)" + }, + "eu-west-2": { + "description": "Europe (London)" + }, + "eu-west-3": { + "description": "Europe (Paris)" + }, + "il-central-1": { + "description": "Israel (Tel Aviv)" + }, + "me-central-1": { + "description": "Middle East (UAE)" + }, + "me-south-1": { + "description": "Middle East (Bahrain)" + }, + "mx-central-1": { + "description": "Mexico (Central)" + }, + "sa-east-1": { + "description": "South America (Sao Paulo)" + }, + "us-east-1": { + "description": "US East (N. Virginia)" + }, + "us-east-2": { + "description": "US East (Ohio)" + }, + "us-west-1": { + "description": "US West (N. California)" + }, + "us-west-2": { + "description": "US West (Oregon)" + } + } + }, { + "id": "aws-cn", + "outputs": { + "dnsSuffix": "amazonaws.com.cn", + "dualStackDnsSuffix": "api.amazonwebservices.com.cn", + "implicitGlobalRegion": "cn-northwest-1", + "name": "aws-cn", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^cn\\-\\w+\\-\\d+$", + "regions": { + "aws-cn-global": { + "description": "aws-cn global region" + }, + "cn-north-1": { + "description": "China (Beijing)" + }, + "cn-northwest-1": { + "description": "China (Ningxia)" + } + } + }, { + "id": "aws-eusc", + "outputs": { + "dnsSuffix": "amazonaws.eu", + "dualStackDnsSuffix": "api.amazonwebservices.eu", + "implicitGlobalRegion": "eusc-de-east-1", + "name": "aws-eusc", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^eusc\\-(de)\\-\\w+\\-\\d+$", + "regions": { + "eusc-de-east-1": { + "description": "AWS European Sovereign Cloud (Germany)" + } + } + }, { + "id": "aws-iso", + "outputs": { + "dnsSuffix": "c2s.ic.gov", + "dualStackDnsSuffix": "api.aws.ic.gov", + "implicitGlobalRegion": "us-iso-east-1", + "name": "aws-iso", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^us\\-iso\\-\\w+\\-\\d+$", + "regions": { + "aws-iso-global": { + "description": "aws-iso global region" + }, + "us-iso-east-1": { + "description": "US ISO East" + }, + "us-iso-west-1": { + "description": "US ISO WEST" + } + } + }, { + "id": "aws-iso-b", + "outputs": { + "dnsSuffix": "sc2s.sgov.gov", + "dualStackDnsSuffix": "api.aws.scloud", + "implicitGlobalRegion": "us-isob-east-1", + "name": "aws-iso-b", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^us\\-isob\\-\\w+\\-\\d+$", + "regions": { + "aws-iso-b-global": { + "description": "aws-iso-b global region" + }, + "us-isob-east-1": { + "description": "US ISOB East (Ohio)" + }, + "us-isob-west-1": { + "description": "US ISOB West" + } + } + }, { + "id": "aws-iso-e", + "outputs": { + "dnsSuffix": "cloud.adc-e.uk", + "dualStackDnsSuffix": "api.cloud-aws.adc-e.uk", + "implicitGlobalRegion": "eu-isoe-west-1", + "name": "aws-iso-e", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^eu\\-isoe\\-\\w+\\-\\d+$", + "regions": { + "aws-iso-e-global": { + "description": "aws-iso-e global region" + }, + "eu-isoe-west-1": { + "description": "EU ISOE West" + } + } + }, { + "id": "aws-iso-f", + "outputs": { + "dnsSuffix": "csp.hci.ic.gov", + "dualStackDnsSuffix": "api.aws.hci.ic.gov", + "implicitGlobalRegion": "us-isof-south-1", + "name": "aws-iso-f", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^us\\-isof\\-\\w+\\-\\d+$", + "regions": { + "aws-iso-f-global": { + "description": "aws-iso-f global region" + }, + "us-isof-east-1": { + "description": "US ISOF EAST" + }, + "us-isof-south-1": { + "description": "US ISOF SOUTH" + } + } + }, { + "id": "aws-us-gov", + "outputs": { + "dnsSuffix": "amazonaws.com", + "dualStackDnsSuffix": "api.aws", + "implicitGlobalRegion": "us-gov-west-1", + "name": "aws-us-gov", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^us\\-gov\\-\\w+\\-\\d+$", + "regions": { + "aws-us-gov-global": { + "description": "aws-us-gov global region" + }, + "us-gov-east-1": { + "description": "AWS GovCloud (US-East)" + }, + "us-gov-west-1": { + "description": "AWS GovCloud (US-West)" + } + } + }], + "version": "1.1" +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/aws.js b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/aws.js new file mode 100644 index 000000000..49a408e6c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/aws.js @@ -0,0 +1,10 @@ +import { customEndpointFunctions } from "@smithy/util-endpoints"; +import { isVirtualHostableS3Bucket } from "./lib/aws/isVirtualHostableS3Bucket"; +import { parseArn } from "./lib/aws/parseArn"; +import { partition } from "./lib/aws/partition"; +export const awsEndpointFunctions = { + isVirtualHostableS3Bucket: isVirtualHostableS3Bucket, + parseArn: parseArn, + partition: partition, +}; +customEndpointFunctions.aws = awsEndpointFunctions; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/index.js b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/index.js new file mode 100644 index 000000000..f41d9bece --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/index.js @@ -0,0 +1,6 @@ +export * from "./aws"; +export * from "./lib/aws/partition"; +export * from "./lib/isIpAddress"; +export * from "./resolveDefaultAwsRegionalEndpointsConfig"; +export * from "./resolveEndpoint"; +export * from "./types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/index.js b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/index.js new file mode 100644 index 000000000..03be049d1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/index.js @@ -0,0 +1,3 @@ +export * from "./isVirtualHostableS3Bucket"; +export * from "./parseArn"; +export * from "./partition"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/isVirtualHostableS3Bucket.js b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/isVirtualHostableS3Bucket.js new file mode 100644 index 000000000..f2bacc0b6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/isVirtualHostableS3Bucket.js @@ -0,0 +1,25 @@ +import { isValidHostLabel } from "@smithy/util-endpoints"; +import { isIpAddress } from "../isIpAddress"; +export const isVirtualHostableS3Bucket = (value, allowSubDomains = false) => { + if (allowSubDomains) { + for (const label of value.split(".")) { + if (!isVirtualHostableS3Bucket(label)) { + return false; + } + } + return true; + } + if (!isValidHostLabel(value)) { + return false; + } + if (value.length < 3 || value.length > 63) { + return false; + } + if (value !== value.toLowerCase()) { + return false; + } + if (isIpAddress(value)) { + return false; + } + return true; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/parseArn.js b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/parseArn.js new file mode 100644 index 000000000..6b128875f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/parseArn.js @@ -0,0 +1,18 @@ +const ARN_DELIMITER = ":"; +const RESOURCE_DELIMITER = "/"; +export const parseArn = (value) => { + const segments = value.split(ARN_DELIMITER); + if (segments.length < 6) + return null; + const [arn, partition, service, region, accountId, ...resourcePath] = segments; + if (arn !== "arn" || partition === "" || service === "" || resourcePath.join(ARN_DELIMITER) === "") + return null; + const resourceId = resourcePath.map((resource) => resource.split(RESOURCE_DELIMITER)).flat(); + return { + partition, + service, + region, + accountId, + resourceId, + }; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/partition.js b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/partition.js new file mode 100644 index 000000000..8d39d8125 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/partition.js @@ -0,0 +1,41 @@ +import partitionsInfo from "./partitions.json"; +let selectedPartitionsInfo = partitionsInfo; +let selectedUserAgentPrefix = ""; +export const partition = (value) => { + const { partitions } = selectedPartitionsInfo; + for (const partition of partitions) { + const { regions, outputs } = partition; + for (const [region, regionData] of Object.entries(regions)) { + if (region === value) { + return { + ...outputs, + ...regionData, + }; + } + } + } + for (const partition of partitions) { + const { regionRegex, outputs } = partition; + if (new RegExp(regionRegex).test(value)) { + return { + ...outputs, + }; + } + } + const DEFAULT_PARTITION = partitions.find((partition) => partition.id === "aws"); + if (!DEFAULT_PARTITION) { + throw new Error("Provided region was not found in the partition array or regex," + + " and default partition with id 'aws' doesn't exist."); + } + return { + ...DEFAULT_PARTITION.outputs, + }; +}; +export const setPartitionInfo = (partitionsInfo, userAgentPrefix = "") => { + selectedPartitionsInfo = partitionsInfo; + selectedUserAgentPrefix = userAgentPrefix; +}; +export const useDefaultPartitionInfo = () => { + setPartitionInfo(partitionsInfo, ""); +}; +export const getUserAgentPrefix = () => selectedUserAgentPrefix; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/partitions.json b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/partitions.json new file mode 100644 index 000000000..d7d22d846 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/partitions.json @@ -0,0 +1,267 @@ +{ + "partitions": [{ + "id": "aws", + "outputs": { + "dnsSuffix": "amazonaws.com", + "dualStackDnsSuffix": "api.aws", + "implicitGlobalRegion": "us-east-1", + "name": "aws", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^(us|eu|ap|sa|ca|me|af|il|mx)\\-\\w+\\-\\d+$", + "regions": { + "af-south-1": { + "description": "Africa (Cape Town)" + }, + "ap-east-1": { + "description": "Asia Pacific (Hong Kong)" + }, + "ap-east-2": { + "description": "Asia Pacific (Taipei)" + }, + "ap-northeast-1": { + "description": "Asia Pacific (Tokyo)" + }, + "ap-northeast-2": { + "description": "Asia Pacific (Seoul)" + }, + "ap-northeast-3": { + "description": "Asia Pacific (Osaka)" + }, + "ap-south-1": { + "description": "Asia Pacific (Mumbai)" + }, + "ap-south-2": { + "description": "Asia Pacific (Hyderabad)" + }, + "ap-southeast-1": { + "description": "Asia Pacific (Singapore)" + }, + "ap-southeast-2": { + "description": "Asia Pacific (Sydney)" + }, + "ap-southeast-3": { + "description": "Asia Pacific (Jakarta)" + }, + "ap-southeast-4": { + "description": "Asia Pacific (Melbourne)" + }, + "ap-southeast-5": { + "description": "Asia Pacific (Malaysia)" + }, + "ap-southeast-6": { + "description": "Asia Pacific (New Zealand)" + }, + "ap-southeast-7": { + "description": "Asia Pacific (Thailand)" + }, + "aws-global": { + "description": "aws global region" + }, + "ca-central-1": { + "description": "Canada (Central)" + }, + "ca-west-1": { + "description": "Canada West (Calgary)" + }, + "eu-central-1": { + "description": "Europe (Frankfurt)" + }, + "eu-central-2": { + "description": "Europe (Zurich)" + }, + "eu-north-1": { + "description": "Europe (Stockholm)" + }, + "eu-south-1": { + "description": "Europe (Milan)" + }, + "eu-south-2": { + "description": "Europe (Spain)" + }, + "eu-west-1": { + "description": "Europe (Ireland)" + }, + "eu-west-2": { + "description": "Europe (London)" + }, + "eu-west-3": { + "description": "Europe (Paris)" + }, + "il-central-1": { + "description": "Israel (Tel Aviv)" + }, + "me-central-1": { + "description": "Middle East (UAE)" + }, + "me-south-1": { + "description": "Middle East (Bahrain)" + }, + "mx-central-1": { + "description": "Mexico (Central)" + }, + "sa-east-1": { + "description": "South America (Sao Paulo)" + }, + "us-east-1": { + "description": "US East (N. Virginia)" + }, + "us-east-2": { + "description": "US East (Ohio)" + }, + "us-west-1": { + "description": "US West (N. California)" + }, + "us-west-2": { + "description": "US West (Oregon)" + } + } + }, { + "id": "aws-cn", + "outputs": { + "dnsSuffix": "amazonaws.com.cn", + "dualStackDnsSuffix": "api.amazonwebservices.com.cn", + "implicitGlobalRegion": "cn-northwest-1", + "name": "aws-cn", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^cn\\-\\w+\\-\\d+$", + "regions": { + "aws-cn-global": { + "description": "aws-cn global region" + }, + "cn-north-1": { + "description": "China (Beijing)" + }, + "cn-northwest-1": { + "description": "China (Ningxia)" + } + } + }, { + "id": "aws-eusc", + "outputs": { + "dnsSuffix": "amazonaws.eu", + "dualStackDnsSuffix": "api.amazonwebservices.eu", + "implicitGlobalRegion": "eusc-de-east-1", + "name": "aws-eusc", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^eusc\\-(de)\\-\\w+\\-\\d+$", + "regions": { + "eusc-de-east-1": { + "description": "AWS European Sovereign Cloud (Germany)" + } + } + }, { + "id": "aws-iso", + "outputs": { + "dnsSuffix": "c2s.ic.gov", + "dualStackDnsSuffix": "api.aws.ic.gov", + "implicitGlobalRegion": "us-iso-east-1", + "name": "aws-iso", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^us\\-iso\\-\\w+\\-\\d+$", + "regions": { + "aws-iso-global": { + "description": "aws-iso global region" + }, + "us-iso-east-1": { + "description": "US ISO East" + }, + "us-iso-west-1": { + "description": "US ISO WEST" + } + } + }, { + "id": "aws-iso-b", + "outputs": { + "dnsSuffix": "sc2s.sgov.gov", + "dualStackDnsSuffix": "api.aws.scloud", + "implicitGlobalRegion": "us-isob-east-1", + "name": "aws-iso-b", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^us\\-isob\\-\\w+\\-\\d+$", + "regions": { + "aws-iso-b-global": { + "description": "aws-iso-b global region" + }, + "us-isob-east-1": { + "description": "US ISOB East (Ohio)" + }, + "us-isob-west-1": { + "description": "US ISOB West" + } + } + }, { + "id": "aws-iso-e", + "outputs": { + "dnsSuffix": "cloud.adc-e.uk", + "dualStackDnsSuffix": "api.cloud-aws.adc-e.uk", + "implicitGlobalRegion": "eu-isoe-west-1", + "name": "aws-iso-e", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^eu\\-isoe\\-\\w+\\-\\d+$", + "regions": { + "aws-iso-e-global": { + "description": "aws-iso-e global region" + }, + "eu-isoe-west-1": { + "description": "EU ISOE West" + } + } + }, { + "id": "aws-iso-f", + "outputs": { + "dnsSuffix": "csp.hci.ic.gov", + "dualStackDnsSuffix": "api.aws.hci.ic.gov", + "implicitGlobalRegion": "us-isof-south-1", + "name": "aws-iso-f", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^us\\-isof\\-\\w+\\-\\d+$", + "regions": { + "aws-iso-f-global": { + "description": "aws-iso-f global region" + }, + "us-isof-east-1": { + "description": "US ISOF EAST" + }, + "us-isof-south-1": { + "description": "US ISOF SOUTH" + } + } + }, { + "id": "aws-us-gov", + "outputs": { + "dnsSuffix": "amazonaws.com", + "dualStackDnsSuffix": "api.aws", + "implicitGlobalRegion": "us-gov-west-1", + "name": "aws-us-gov", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^us\\-gov\\-\\w+\\-\\d+$", + "regions": { + "aws-us-gov-global": { + "description": "aws-us-gov global region" + }, + "us-gov-east-1": { + "description": "AWS GovCloud (US-East)" + }, + "us-gov-west-1": { + "description": "AWS GovCloud (US-West)" + } + } + }], + "version": "1.1" +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/lib/isIpAddress.js b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/lib/isIpAddress.js new file mode 100644 index 000000000..59bfcd8cd --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/lib/isIpAddress.js @@ -0,0 +1 @@ +export { isIpAddress } from "@smithy/util-endpoints"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/resolveDefaultAwsRegionalEndpointsConfig.js b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/resolveDefaultAwsRegionalEndpointsConfig.js new file mode 100644 index 000000000..4da5619ae --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/resolveDefaultAwsRegionalEndpointsConfig.js @@ -0,0 +1,21 @@ +import { parseUrl } from "@smithy/url-parser"; +export const resolveDefaultAwsRegionalEndpointsConfig = (input) => { + if (typeof input.endpointProvider !== "function") { + throw new Error("@aws-sdk/util-endpoint - endpointProvider and endpoint missing in config for this client."); + } + const { endpoint } = input; + if (endpoint === undefined) { + input.endpoint = async () => { + return toEndpointV1(input.endpointProvider({ + Region: typeof input.region === "function" ? await input.region() : input.region, + UseDualStack: typeof input.useDualstackEndpoint === "function" + ? await input.useDualstackEndpoint() + : input.useDualstackEndpoint, + UseFIPS: typeof input.useFipsEndpoint === "function" ? await input.useFipsEndpoint() : input.useFipsEndpoint, + Endpoint: undefined, + }, { logger: input.logger })); + }; + } + return input; +}; +export const toEndpointV1 = (endpoint) => parseUrl(endpoint.url); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/resolveEndpoint.js b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/resolveEndpoint.js new file mode 100644 index 000000000..e2453f7f5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/resolveEndpoint.js @@ -0,0 +1 @@ +export { resolveEndpoint } from "@smithy/util-endpoints"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/types/EndpointError.js b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/types/EndpointError.js new file mode 100644 index 000000000..521e688b6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/types/EndpointError.js @@ -0,0 +1 @@ +export { EndpointError } from "@smithy/util-endpoints"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/types/EndpointRuleObject.js b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/types/EndpointRuleObject.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/types/EndpointRuleObject.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/types/ErrorRuleObject.js b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/types/ErrorRuleObject.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/types/ErrorRuleObject.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/types/RuleSetObject.js b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/types/RuleSetObject.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/types/RuleSetObject.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/types/TreeRuleObject.js b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/types/TreeRuleObject.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/types/TreeRuleObject.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/types/index.js b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/types/index.js new file mode 100644 index 000000000..daba50198 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/types/index.js @@ -0,0 +1,6 @@ +export * from "./EndpointError"; +export * from "./EndpointRuleObject"; +export * from "./ErrorRuleObject"; +export * from "./RuleSetObject"; +export * from "./TreeRuleObject"; +export * from "./shared"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/types/shared.js b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/types/shared.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-es/types/shared.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/aws.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/aws.d.ts new file mode 100644 index 000000000..0c34c9979 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/aws.d.ts @@ -0,0 +1,2 @@ +import type { EndpointFunctions } from "@smithy/util-endpoints"; +export declare const awsEndpointFunctions: EndpointFunctions; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/index.d.ts new file mode 100644 index 000000000..f41d9bece --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/index.d.ts @@ -0,0 +1,6 @@ +export * from "./aws"; +export * from "./lib/aws/partition"; +export * from "./lib/isIpAddress"; +export * from "./resolveDefaultAwsRegionalEndpointsConfig"; +export * from "./resolveEndpoint"; +export * from "./types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/index.d.ts new file mode 100644 index 000000000..03be049d1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/index.d.ts @@ -0,0 +1,3 @@ +export * from "./isVirtualHostableS3Bucket"; +export * from "./parseArn"; +export * from "./partition"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/isVirtualHostableS3Bucket.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/isVirtualHostableS3Bucket.d.ts new file mode 100644 index 000000000..25d46e4ba --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/isVirtualHostableS3Bucket.d.ts @@ -0,0 +1,5 @@ +/** + * Evaluates whether a string is a DNS compatible bucket name and can be used with + * virtual hosted style addressing. + */ +export declare const isVirtualHostableS3Bucket: (value: string, allowSubDomains?: boolean) => boolean; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/parseArn.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/parseArn.d.ts new file mode 100644 index 000000000..01b029d70 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/parseArn.d.ts @@ -0,0 +1,7 @@ +import type { EndpointARN } from "@smithy/types"; +/** + * Evaluates a single string argument value, and returns an object containing + * details about the parsed ARN. + * If the input was not a valid ARN, the function returns null. + */ +export declare const parseArn: (value: string) => EndpointARN | null; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/partition.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/partition.d.ts new file mode 100644 index 000000000..7a70ad51a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/partition.d.ts @@ -0,0 +1,38 @@ +import type { EndpointPartition } from "@smithy/types"; +export type PartitionsInfo = { + partitions: Array<{ + id: string; + outputs: { + dnsSuffix: string; + dualStackDnsSuffix: string; + name: string; + supportsDualStack: boolean; + supportsFIPS: boolean; + }; + regionRegex: string; + regions: Record; + }>; +}; +/** + * Evaluates a single string argument value as a region, and matches the + * string value to an AWS partition. + * The matcher MUST always return a successful object describing the partition + * that the region has been determined to be a part of. + */ +export declare const partition: (value: string) => EndpointPartition; +/** + * Set custom partitions.json data. + * @internal + */ +export declare const setPartitionInfo: (partitionsInfo: PartitionsInfo, userAgentPrefix?: string) => void; +/** + * Reset to the default partitions.json data. + * @internal + */ +export declare const useDefaultPartitionInfo: () => void; +/** + * @internal + */ +export declare const getUserAgentPrefix: () => string; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/lib/isIpAddress.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/lib/isIpAddress.d.ts new file mode 100644 index 000000000..59bfcd8cd --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/lib/isIpAddress.d.ts @@ -0,0 +1 @@ +export { isIpAddress } from "@smithy/util-endpoints"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/resolveDefaultAwsRegionalEndpointsConfig.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/resolveDefaultAwsRegionalEndpointsConfig.d.ts new file mode 100644 index 000000000..dd6f12c7c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/resolveDefaultAwsRegionalEndpointsConfig.d.ts @@ -0,0 +1,56 @@ +import type { Endpoint, EndpointParameters, EndpointV2, Logger, Provider } from "@smithy/types"; +/** + * This is an additional config resolver layer for clients using the default + * AWS regional endpoints ruleset. It makes the *resolved* config guarantee the presence of an + * endpoint provider function. This differs from the base behavior of the Endpoint + * config resolver, which only normalizes config.endpoint IFF one is provided by the caller. + * + * This is not used by AWS SDK clients, but rather + * generated clients that have the aws.api#service trait. This includes protocol tests + * and other customers. + * + * This resolver is MUTUALLY EXCLUSIVE with the EndpointRequired config resolver from + * |@smithy/middleware-endpoint. + * + * It must be placed after the `resolveEndpointConfig` + * resolver. This replaces the endpoints.json-based default endpoint provider. + * + * @public + */ +export type DefaultAwsRegionalEndpointsInputConfig = { + endpoint?: unknown; +}; +type PreviouslyResolved = { + logger?: Logger; + region?: undefined | string | Provider; + useFipsEndpoint?: undefined | boolean | Provider; + useDualstackEndpoint?: undefined | boolean | Provider; + endpointProvider: (endpointParams: EndpointParameters | DefaultRegionalEndpointParameters, context?: { + logger?: Logger; + }) => EndpointV2; +}; +/** + * @internal + */ +type DefaultRegionalEndpointParameters = { + Region?: string | undefined; + UseDualStack?: boolean | undefined; + UseFIPS?: boolean | undefined; +}; +/** + * @internal + */ +export interface DefaultAwsRegionalEndpointsResolvedConfig { + endpoint: Provider; +} +/** + * MUST resolve after `\@smithy/middleware-endpoint`::`resolveEndpointConfig`. + * + * @internal + */ +export declare const resolveDefaultAwsRegionalEndpointsConfig: (input: T & DefaultAwsRegionalEndpointsInputConfig & PreviouslyResolved) => T & DefaultAwsRegionalEndpointsResolvedConfig; +/** + * @internal + */ +export declare const toEndpointV1: (endpoint: EndpointV2) => Endpoint; +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/resolveEndpoint.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/resolveEndpoint.d.ts new file mode 100644 index 000000000..e2453f7f5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/resolveEndpoint.d.ts @@ -0,0 +1 @@ +export { resolveEndpoint } from "@smithy/util-endpoints"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/aws.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/aws.d.ts new file mode 100644 index 000000000..13c64a972 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/aws.d.ts @@ -0,0 +1,2 @@ +import { EndpointFunctions } from "@smithy/util-endpoints"; +export declare const awsEndpointFunctions: EndpointFunctions; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..f41d9bece --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/index.d.ts @@ -0,0 +1,6 @@ +export * from "./aws"; +export * from "./lib/aws/partition"; +export * from "./lib/isIpAddress"; +export * from "./resolveDefaultAwsRegionalEndpointsConfig"; +export * from "./resolveEndpoint"; +export * from "./types"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/index.d.ts new file mode 100644 index 000000000..03be049d1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/index.d.ts @@ -0,0 +1,3 @@ +export * from "./isVirtualHostableS3Bucket"; +export * from "./parseArn"; +export * from "./partition"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/isVirtualHostableS3Bucket.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/isVirtualHostableS3Bucket.d.ts new file mode 100644 index 000000000..5ef329636 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/isVirtualHostableS3Bucket.d.ts @@ -0,0 +1,4 @@ +export declare const isVirtualHostableS3Bucket: ( + value: string, + allowSubDomains?: boolean +) => boolean; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/parseArn.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/parseArn.d.ts new file mode 100644 index 000000000..690d45958 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/parseArn.d.ts @@ -0,0 +1,2 @@ +import { EndpointARN } from "@smithy/types"; +export declare const parseArn: (value: string) => EndpointARN | null; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/partition.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/partition.d.ts new file mode 100644 index 000000000..0683113ce --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/partition.d.ts @@ -0,0 +1,28 @@ +import { EndpointPartition } from "@smithy/types"; +export type PartitionsInfo = { + partitions: Array<{ + id: string; + outputs: { + dnsSuffix: string; + dualStackDnsSuffix: string; + name: string; + supportsDualStack: boolean; + supportsFIPS: boolean; + }; + regionRegex: string; + regions: Record< + string, + | { + description?: string; + } + | undefined + >; + }>; +}; +export declare const partition: (value: string) => EndpointPartition; +export declare const setPartitionInfo: ( + partitionsInfo: PartitionsInfo, + userAgentPrefix?: string +) => void; +export declare const useDefaultPartitionInfo: () => void; +export declare const getUserAgentPrefix: () => string; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/isIpAddress.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/isIpAddress.d.ts new file mode 100644 index 000000000..59bfcd8cd --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/isIpAddress.d.ts @@ -0,0 +1 @@ +export { isIpAddress } from "@smithy/util-endpoints"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/resolveDefaultAwsRegionalEndpointsConfig.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/resolveDefaultAwsRegionalEndpointsConfig.d.ts new file mode 100644 index 000000000..3327ae9f6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/resolveDefaultAwsRegionalEndpointsConfig.d.ts @@ -0,0 +1,35 @@ +import { + Endpoint, + EndpointParameters, + EndpointV2, + Logger, + Provider, +} from "@smithy/types"; +export type DefaultAwsRegionalEndpointsInputConfig = { + endpoint?: unknown; +}; +type PreviouslyResolved = { + logger?: Logger; + region?: undefined | string | Provider; + useFipsEndpoint?: undefined | boolean | Provider; + useDualstackEndpoint?: undefined | boolean | Provider; + endpointProvider: ( + endpointParams: EndpointParameters | DefaultRegionalEndpointParameters, + context?: { + logger?: Logger; + } + ) => EndpointV2; +}; +type DefaultRegionalEndpointParameters = { + Region?: string | undefined; + UseDualStack?: boolean | undefined; + UseFIPS?: boolean | undefined; +}; +export interface DefaultAwsRegionalEndpointsResolvedConfig { + endpoint: Provider; +} +export declare const resolveDefaultAwsRegionalEndpointsConfig: ( + input: T & DefaultAwsRegionalEndpointsInputConfig & PreviouslyResolved +) => T & DefaultAwsRegionalEndpointsResolvedConfig; +export declare const toEndpointV1: (endpoint: EndpointV2) => Endpoint; +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/resolveEndpoint.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/resolveEndpoint.d.ts new file mode 100644 index 000000000..e2453f7f5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/resolveEndpoint.d.ts @@ -0,0 +1 @@ +export { resolveEndpoint } from "@smithy/util-endpoints"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/EndpointError.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/EndpointError.d.ts new file mode 100644 index 000000000..521e688b6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/EndpointError.d.ts @@ -0,0 +1 @@ +export { EndpointError } from "@smithy/util-endpoints"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/EndpointRuleObject.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/EndpointRuleObject.d.ts new file mode 100644 index 000000000..b48af7faf --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/EndpointRuleObject.d.ts @@ -0,0 +1,6 @@ +export { + EndpointObjectProperties, + EndpointObjectHeaders, + EndpointObject, + EndpointRuleObject, +} from "@smithy/util-endpoints"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/ErrorRuleObject.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/ErrorRuleObject.d.ts new file mode 100644 index 000000000..e7b8881be --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/ErrorRuleObject.d.ts @@ -0,0 +1 @@ +export { ErrorRuleObject } from "@smithy/util-endpoints"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/RuleSetObject.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/RuleSetObject.d.ts new file mode 100644 index 000000000..2a489c674 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/RuleSetObject.d.ts @@ -0,0 +1,5 @@ +export { + DeprecatedObject, + ParameterObject, + RuleSetObject, +} from "@smithy/util-endpoints"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/TreeRuleObject.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/TreeRuleObject.d.ts new file mode 100644 index 000000000..716ddcfc9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/TreeRuleObject.d.ts @@ -0,0 +1 @@ +export { RuleSetRules, TreeRuleObject } from "@smithy/util-endpoints"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/index.d.ts new file mode 100644 index 000000000..daba50198 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/index.d.ts @@ -0,0 +1,6 @@ +export * from "./EndpointError"; +export * from "./EndpointRuleObject"; +export * from "./ErrorRuleObject"; +export * from "./RuleSetObject"; +export * from "./TreeRuleObject"; +export * from "./shared"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/shared.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/shared.d.ts new file mode 100644 index 000000000..cfd2248a0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/shared.d.ts @@ -0,0 +1,12 @@ +export { + ReferenceObject, + FunctionObject, + FunctionArgv, + FunctionReturn, + ConditionObject, + Expression, + EndpointParams, + EndpointResolverOptions, + ReferenceRecord, + EvaluateOptions, +} from "@smithy/util-endpoints"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/types/EndpointError.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/types/EndpointError.d.ts new file mode 100644 index 000000000..521e688b6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/types/EndpointError.d.ts @@ -0,0 +1 @@ +export { EndpointError } from "@smithy/util-endpoints"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/types/EndpointRuleObject.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/types/EndpointRuleObject.d.ts new file mode 100644 index 000000000..ef666fe03 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/types/EndpointRuleObject.d.ts @@ -0,0 +1 @@ +export { EndpointObjectProperties, EndpointObjectHeaders, EndpointObject, EndpointRuleObject, } from "@smithy/util-endpoints"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/types/ErrorRuleObject.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/types/ErrorRuleObject.d.ts new file mode 100644 index 000000000..e7b8881be --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/types/ErrorRuleObject.d.ts @@ -0,0 +1 @@ +export { ErrorRuleObject } from "@smithy/util-endpoints"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/types/RuleSetObject.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/types/RuleSetObject.d.ts new file mode 100644 index 000000000..c052af079 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/types/RuleSetObject.d.ts @@ -0,0 +1 @@ +export { DeprecatedObject, ParameterObject, RuleSetObject } from "@smithy/util-endpoints"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/types/TreeRuleObject.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/types/TreeRuleObject.d.ts new file mode 100644 index 000000000..716ddcfc9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/types/TreeRuleObject.d.ts @@ -0,0 +1 @@ +export { RuleSetRules, TreeRuleObject } from "@smithy/util-endpoints"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/types/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/types/index.d.ts new file mode 100644 index 000000000..daba50198 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/types/index.d.ts @@ -0,0 +1,6 @@ +export * from "./EndpointError"; +export * from "./EndpointRuleObject"; +export * from "./ErrorRuleObject"; +export * from "./RuleSetObject"; +export * from "./TreeRuleObject"; +export * from "./shared"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/types/shared.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/types/shared.d.ts new file mode 100644 index 000000000..af7cc53bf --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/dist-types/types/shared.d.ts @@ -0,0 +1 @@ +export { ReferenceObject, FunctionObject, FunctionArgv, FunctionReturn, ConditionObject, Expression, EndpointParams, EndpointResolverOptions, ReferenceRecord, EvaluateOptions, } from "@smithy/util-endpoints"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/package.json b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/package.json new file mode 100644 index 000000000..f58b99119 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-endpoints/package.json @@ -0,0 +1,60 @@ +{ + "name": "@aws-sdk/util-endpoints", + "version": "3.996.5", + "description": "Utilities to help with endpoint resolution", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline util-endpoints", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:watch": "yarn g:vitest watch", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "sideEffects": true, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-endpoints": "^3.3.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages/util-endpoints", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages/util-endpoints" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-locate-window/LICENSE b/food-ordering-app/server/node_modules/@aws-sdk/util-locate-window/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-locate-window/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-locate-window/README.md b/food-ordering-app/server/node_modules/@aws-sdk/util-locate-window/README.md new file mode 100644 index 000000000..cac53d3f3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-locate-window/README.md @@ -0,0 +1,4 @@ +# @aws-sdk/util-locate-window + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/util-locate-window/latest.svg)](https://www.npmjs.com/package/@aws-sdk/util-locate-window) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/util-locate-window.svg)](https://www.npmjs.com/package/@aws-sdk/util-locate-window) diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-locate-window/dist-cjs/index.js b/food-ordering-app/server/node_modules/@aws-sdk/util-locate-window/dist-cjs/index.js new file mode 100644 index 000000000..1daadf81b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-locate-window/dist-cjs/index.js @@ -0,0 +1,14 @@ +'use strict'; + +const fallbackWindow = {}; +function locateWindow() { + if (typeof window !== "undefined") { + return window; + } + else if (typeof self !== "undefined") { + return self; + } + return fallbackWindow; +} + +exports.locateWindow = locateWindow; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-locate-window/dist-es/index.js b/food-ordering-app/server/node_modules/@aws-sdk/util-locate-window/dist-es/index.js new file mode 100644 index 000000000..a51e64424 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-locate-window/dist-es/index.js @@ -0,0 +1,10 @@ +const fallbackWindow = {}; +export function locateWindow() { + if (typeof window !== "undefined") { + return window; + } + else if (typeof self !== "undefined") { + return self; + } + return fallbackWindow; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-locate-window/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-locate-window/dist-types/index.d.ts new file mode 100644 index 000000000..2b02d7f47 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-locate-window/dist-types/index.d.ts @@ -0,0 +1,6 @@ +/** + * Locates the global scope for a browser or browser-like environment. If + * neither `window` nor `self` is defined by the environment, the same object + * will be returned on each invocation. + */ +export declare function locateWindow(): Window; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-locate-window/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-locate-window/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..a5bbba316 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-locate-window/dist-types/ts3.4/index.d.ts @@ -0,0 +1 @@ +export declare function locateWindow(): Window; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-locate-window/package.json b/food-ordering-app/server/node_modules/@aws-sdk/util-locate-window/package.json new file mode 100644 index 000000000..f5c92651a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-locate-window/package.json @@ -0,0 +1,54 @@ +{ + "name": "@aws-sdk/util-locate-window", + "version": "3.965.5", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline util-locate-window", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "@types/node": "^20.14.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/util-locate-window", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/util-locate-window" + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/LICENSE b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/LICENSE new file mode 100644 index 000000000..dd65ae06b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/README.md b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/README.md new file mode 100644 index 000000000..70eb6b359 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/README.md @@ -0,0 +1,29 @@ +# @aws-sdk/util-user-agent-browser + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/util-user-agent-browser/latest.svg)](https://www.npmjs.com/package/@aws-sdk/util-user-agent-browser) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/util-user-agent-browser.svg)](https://www.npmjs.com/package/@aws-sdk/util-user-agent-browser) + +## Usage + +In previous versions of the AWS SDK for JavaScript v3, the AWS SDK user agent header was provided by parsing the navigator user agent string with the `bowser` library. + +This was later changed to browser feature detection using the native Navigator APIs, but if you would like to have the previous functionality, use the following code: + +```js +import { createUserAgentStringParsingProvider } from "@aws-sdk/util-user-agent-browser"; + +import { S3Client } from "@aws-sdk/client-s3"; +import pkgInfo from "@aws-sdk/client-s3/package.json"; +// or any other client. + +const client = new S3Client({ + defaultUserAgentProvider: createUserAgentStringParsingProvider({ + // For a client's serviceId, check the corresponding shared runtimeConfig file + // https://github.com/aws/aws-sdk-js-v3/blob/main/clients/client-s3/src/runtimeConfig.shared.ts + serviceId: "S3", + clientVersion: pkgInfo.version, + }), +}); +``` + +This usage is not recommended, due to the size of the additional parsing library. diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/configurations.js b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/configurations.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/configurations.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/createUserAgentStringParsingProvider.js b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/createUserAgentStringParsingProvider.js new file mode 100644 index 000000000..5e7ea3174 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/createUserAgentStringParsingProvider.js @@ -0,0 +1,57 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || (function () { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createUserAgentStringParsingProvider = void 0; +const createUserAgentStringParsingProvider = ({ serviceId, clientVersion }) => async (config) => { + const module = await Promise.resolve().then(() => __importStar(require("bowser"))); + const parse = module.parse ?? module.default.parse ?? (() => ""); + const parsedUA = typeof window !== "undefined" && window?.navigator?.userAgent ? parse(window.navigator.userAgent) : undefined; + const sections = [ + ["aws-sdk-js", clientVersion], + ["ua", "2.1"], + [`os/${parsedUA?.os?.name || "other"}`, parsedUA?.os?.version], + ["lang/js"], + ["md/browser", `${parsedUA?.browser?.name ?? "unknown"}_${parsedUA?.browser?.version ?? "unknown"}`], + ]; + if (serviceId) { + sections.push([`api/${serviceId}`, clientVersion]); + } + const appId = await config?.userAgentAppId?.(); + if (appId) { + sections.push([`app/${appId}`]); + } + return sections; +}; +exports.createUserAgentStringParsingProvider = createUserAgentStringParsingProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/index.js b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/index.js new file mode 100644 index 000000000..4ab90e8cf --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/index.js @@ -0,0 +1,58 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.defaultUserAgent = exports.fallback = exports.createDefaultUserAgentProvider = exports.createUserAgentStringParsingProvider = void 0; +var createUserAgentStringParsingProvider_1 = require("./createUserAgentStringParsingProvider"); +Object.defineProperty(exports, "createUserAgentStringParsingProvider", { enumerable: true, get: function () { return createUserAgentStringParsingProvider_1.createUserAgentStringParsingProvider; } }); +const createDefaultUserAgentProvider = ({ serviceId, clientVersion }) => async (config) => { + const navigator = typeof window !== "undefined" ? window.navigator : undefined; + const uaString = navigator?.userAgent ?? ""; + const osName = navigator?.userAgentData?.platform ?? exports.fallback.os(uaString) ?? "other"; + const osVersion = undefined; + const brands = navigator?.userAgentData?.brands ?? []; + const brand = brands[brands.length - 1]; + const browserName = brand?.brand ?? exports.fallback.browser(uaString) ?? "unknown"; + const browserVersion = brand?.version ?? "unknown"; + const sections = [ + ["aws-sdk-js", clientVersion], + ["ua", "2.1"], + [`os/${osName}`, osVersion], + ["lang/js"], + ["md/browser", `${browserName}_${browserVersion}`], + ]; + if (serviceId) { + sections.push([`api/${serviceId}`, clientVersion]); + } + const appId = await config?.userAgentAppId?.(); + if (appId) { + sections.push([`app/${appId}`]); + } + return sections; +}; +exports.createDefaultUserAgentProvider = createDefaultUserAgentProvider; +exports.fallback = { + os(ua) { + if (/iPhone|iPad|iPod/.test(ua)) + return "iOS"; + if (/Macintosh|Mac OS X/.test(ua)) + return "macOS"; + if (/Windows NT/.test(ua)) + return "Windows"; + if (/Android/.test(ua)) + return "Android"; + if (/Linux/.test(ua)) + return "Linux"; + return undefined; + }, + browser(ua) { + if (/EdgiOS|EdgA|Edg\//.test(ua)) + return "Microsoft Edge"; + if (/Firefox\//.test(ua)) + return "Firefox"; + if (/Chrome\//.test(ua)) + return "Chrome"; + if (/Safari\//.test(ua)) + return "Safari"; + return undefined; + }, +}; +exports.defaultUserAgent = exports.createDefaultUserAgentProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/index.native.js b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/index.native.js new file mode 100644 index 000000000..4d06e3693 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/index.native.js @@ -0,0 +1,22 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.defaultUserAgent = exports.createDefaultUserAgentProvider = void 0; +const createDefaultUserAgentProvider = ({ serviceId, clientVersion }) => async (config) => { + const sections = [ + ["aws-sdk-js", clientVersion], + ["ua", "2.1"], + ["os/other"], + ["lang/js"], + ["md/rn"], + ]; + if (serviceId) { + sections.push([`api/${serviceId}`, clientVersion]); + } + const appId = await config?.userAgentAppId?.(); + if (appId) { + sections.push([`app/${appId}`]); + } + return sections; +}; +exports.createDefaultUserAgentProvider = createDefaultUserAgentProvider; +exports.defaultUserAgent = exports.createDefaultUserAgentProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-es/configurations.js b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-es/configurations.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-es/configurations.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-es/createUserAgentStringParsingProvider.js b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-es/createUserAgentStringParsingProvider.js new file mode 100644 index 000000000..a87ea5d0b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-es/createUserAgentStringParsingProvider.js @@ -0,0 +1,20 @@ +export const createUserAgentStringParsingProvider = ({ serviceId, clientVersion }) => async (config) => { + const module = await import("bowser"); + const parse = module.parse ?? module.default.parse ?? (() => ""); + const parsedUA = typeof window !== "undefined" && window?.navigator?.userAgent ? parse(window.navigator.userAgent) : undefined; + const sections = [ + ["aws-sdk-js", clientVersion], + ["ua", "2.1"], + [`os/${parsedUA?.os?.name || "other"}`, parsedUA?.os?.version], + ["lang/js"], + ["md/browser", `${parsedUA?.browser?.name ?? "unknown"}_${parsedUA?.browser?.version ?? "unknown"}`], + ]; + if (serviceId) { + sections.push([`api/${serviceId}`, clientVersion]); + } + const appId = await config?.userAgentAppId?.(); + if (appId) { + sections.push([`app/${appId}`]); + } + return sections; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-es/index.js b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-es/index.js new file mode 100644 index 000000000..80762a0cd --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-es/index.js @@ -0,0 +1,53 @@ +export { createUserAgentStringParsingProvider } from "./createUserAgentStringParsingProvider"; +export const createDefaultUserAgentProvider = ({ serviceId, clientVersion }) => async (config) => { + const navigator = typeof window !== "undefined" ? window.navigator : undefined; + const uaString = navigator?.userAgent ?? ""; + const osName = navigator?.userAgentData?.platform ?? fallback.os(uaString) ?? "other"; + const osVersion = undefined; + const brands = navigator?.userAgentData?.brands ?? []; + const brand = brands[brands.length - 1]; + const browserName = brand?.brand ?? fallback.browser(uaString) ?? "unknown"; + const browserVersion = brand?.version ?? "unknown"; + const sections = [ + ["aws-sdk-js", clientVersion], + ["ua", "2.1"], + [`os/${osName}`, osVersion], + ["lang/js"], + ["md/browser", `${browserName}_${browserVersion}`], + ]; + if (serviceId) { + sections.push([`api/${serviceId}`, clientVersion]); + } + const appId = await config?.userAgentAppId?.(); + if (appId) { + sections.push([`app/${appId}`]); + } + return sections; +}; +export const fallback = { + os(ua) { + if (/iPhone|iPad|iPod/.test(ua)) + return "iOS"; + if (/Macintosh|Mac OS X/.test(ua)) + return "macOS"; + if (/Windows NT/.test(ua)) + return "Windows"; + if (/Android/.test(ua)) + return "Android"; + if (/Linux/.test(ua)) + return "Linux"; + return undefined; + }, + browser(ua) { + if (/EdgiOS|EdgA|Edg\//.test(ua)) + return "Microsoft Edge"; + if (/Firefox\//.test(ua)) + return "Firefox"; + if (/Chrome\//.test(ua)) + return "Chrome"; + if (/Safari\//.test(ua)) + return "Safari"; + return undefined; + }, +}; +export const defaultUserAgent = createDefaultUserAgentProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-es/index.native.js b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-es/index.native.js new file mode 100644 index 000000000..04c7ae576 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-es/index.native.js @@ -0,0 +1,18 @@ +export const createDefaultUserAgentProvider = ({ serviceId, clientVersion }) => async (config) => { + const sections = [ + ["aws-sdk-js", clientVersion], + ["ua", "2.1"], + ["os/other"], + ["lang/js"], + ["md/rn"], + ]; + if (serviceId) { + sections.push([`api/${serviceId}`, clientVersion]); + } + const appId = await config?.userAgentAppId?.(); + if (appId) { + sections.push([`app/${appId}`]); + } + return sections; +}; +export const defaultUserAgent = createDefaultUserAgentProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-types/configurations.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-types/configurations.d.ts new file mode 100644 index 000000000..00537a908 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-types/configurations.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + */ +export interface DefaultUserAgentOptions { + serviceId?: string; + clientVersion: string; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-types/createUserAgentStringParsingProvider.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-types/createUserAgentStringParsingProvider.d.ts new file mode 100644 index 000000000..0897b0df4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-types/createUserAgentStringParsingProvider.d.ts @@ -0,0 +1,14 @@ +import type { UserAgent } from "@smithy/types"; +import type { DefaultUserAgentOptions } from "./configurations"; +import type { PreviouslyResolved } from "./index"; +/** + * This is an alternative to the default user agent provider that uses the bowser + * library to parse the user agent string. + * + * Use this with your client's `defaultUserAgentProvider` constructor object field + * to use the legacy behavior. + * + * @deprecated use the default provider unless you need the older UA-parsing functionality. + * @public + */ +export declare const createUserAgentStringParsingProvider: ({ serviceId, clientVersion }: DefaultUserAgentOptions) => ((config?: PreviouslyResolved) => Promise); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-types/index.d.ts new file mode 100644 index 000000000..35d2f7217 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-types/index.d.ts @@ -0,0 +1,27 @@ +import type { Provider, UserAgent } from "@smithy/types"; +import type { DefaultUserAgentOptions } from "./configurations"; +export { createUserAgentStringParsingProvider } from "./createUserAgentStringParsingProvider"; +/** + * @internal + */ +export interface PreviouslyResolved { + userAgentAppId: Provider; +} +/** + * Default provider of the AWS SDK user agent string in react-native. + * @internal + */ +export declare const createDefaultUserAgentProvider: ({ serviceId, clientVersion }: DefaultUserAgentOptions) => ((config?: PreviouslyResolved) => Promise); +/** + * Rudimentary UA string parsing as a fallback. + * @internal + */ +export declare const fallback: { + os(ua: string): string | undefined; + browser(ua: string): string | undefined; +}; +/** + * @internal + * @deprecated use createDefaultUserAgentProvider + */ +export declare const defaultUserAgent: ({ serviceId, clientVersion }: DefaultUserAgentOptions) => ((config?: PreviouslyResolved) => Promise); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-types/index.native.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-types/index.native.d.ts new file mode 100644 index 000000000..02134b1c2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-types/index.native.d.ts @@ -0,0 +1,18 @@ +import type { Provider, UserAgent } from "@smithy/types"; +import type { DefaultUserAgentOptions } from "./configurations"; +/** + * @internal + */ +export interface PreviouslyResolved { + userAgentAppId: Provider; +} +/** + * Default provider to the user agent in ReactNative. + * @internal + */ +export declare const createDefaultUserAgentProvider: ({ serviceId, clientVersion }: DefaultUserAgentOptions) => ((config?: PreviouslyResolved) => Promise); +/** + * @internal + * @deprecated use createDefaultUserAgentProvider + */ +export declare const defaultUserAgent: ({ serviceId, clientVersion }: DefaultUserAgentOptions) => ((config?: PreviouslyResolved) => Promise); diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/configurations.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/configurations.d.ts new file mode 100644 index 000000000..1428231da --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/configurations.d.ts @@ -0,0 +1,4 @@ +export interface DefaultUserAgentOptions { + serviceId?: string; + clientVersion: string; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/createUserAgentStringParsingProvider.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/createUserAgentStringParsingProvider.d.ts new file mode 100644 index 000000000..a5649186d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/createUserAgentStringParsingProvider.d.ts @@ -0,0 +1,9 @@ +import { UserAgent } from "@smithy/types"; +import { DefaultUserAgentOptions } from "./configurations"; +import { PreviouslyResolved } from "./index"; +export declare const createUserAgentStringParsingProvider: ({ + serviceId, + clientVersion, +}: DefaultUserAgentOptions) => ( + config?: PreviouslyResolved +) => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..adca294b1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/index.d.ts @@ -0,0 +1,22 @@ +import { Provider, UserAgent } from "@smithy/types"; +import { DefaultUserAgentOptions } from "./configurations"; +export { createUserAgentStringParsingProvider } from "./createUserAgentStringParsingProvider"; +export interface PreviouslyResolved { + userAgentAppId: Provider; +} +export declare const createDefaultUserAgentProvider: ({ + serviceId, + clientVersion, +}: DefaultUserAgentOptions) => ( + config?: PreviouslyResolved +) => Promise; +export declare const fallback: { + os(ua: string): string | undefined; + browser(ua: string): string | undefined; +}; +export declare const defaultUserAgent: ({ + serviceId, + clientVersion, +}: DefaultUserAgentOptions) => ( + config?: PreviouslyResolved +) => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/index.native.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/index.native.d.ts new file mode 100644 index 000000000..32e643a3e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/index.native.d.ts @@ -0,0 +1,17 @@ +import { Provider, UserAgent } from "@smithy/types"; +import { DefaultUserAgentOptions } from "./configurations"; +export interface PreviouslyResolved { + userAgentAppId: Provider; +} +export declare const createDefaultUserAgentProvider: ({ + serviceId, + clientVersion, +}: DefaultUserAgentOptions) => ( + config?: PreviouslyResolved +) => Promise; +export declare const defaultUserAgent: ({ + serviceId, + clientVersion, +}: DefaultUserAgentOptions) => ( + config?: PreviouslyResolved +) => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/package.json b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/package.json new file mode 100644 index 000000000..8d76eedaa --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-browser/package.json @@ -0,0 +1,55 @@ +{ + "name": "@aws-sdk/util-user-agent-browser", + "version": "3.972.8", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline util-user-agent-browser", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "browser": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "react-native": "dist-es/index.native.js", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/types": "^4.13.1", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/util-user-agent-browser", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/util-user-agent-browser" + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/LICENSE b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/LICENSE new file mode 100644 index 000000000..dd65ae06b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/README.md b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/README.md new file mode 100644 index 000000000..fccfbb54e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/README.md @@ -0,0 +1,10 @@ +# @aws-sdk/util-user-agent-node + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/util-user-agent-node/latest.svg)](https://www.npmjs.com/package/@aws-sdk/util-user-agent-node) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/util-user-agent-node.svg)](https://www.npmjs.com/package/@aws-sdk/util-user-agent-node) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-cjs/index.js b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-cjs/index.js new file mode 100644 index 000000000..df3a95985 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-cjs/index.js @@ -0,0 +1,185 @@ +'use strict'; + +var node_os = require('node:os'); +var node_process = require('node:process'); +var utilConfigProvider = require('@smithy/util-config-provider'); +var promises = require('node:fs/promises'); +var node_path = require('node:path'); +var middlewareUserAgent = require('@aws-sdk/middleware-user-agent'); + +const getRuntimeUserAgentPair = () => { + const runtimesToCheck = ["deno", "bun", "llrt"]; + for (const runtime of runtimesToCheck) { + if (node_process.versions[runtime]) { + return [`md/${runtime}`, node_process.versions[runtime]]; + } + } + return ["md/nodejs", node_process.versions.node]; +}; + +const getNodeModulesParentDirs = (dirname) => { + const cwd = process.cwd(); + if (!dirname) { + return [cwd]; + } + const normalizedPath = node_path.normalize(dirname); + const parts = normalizedPath.split(node_path.sep); + const nodeModulesIndex = parts.indexOf("node_modules"); + const parentDir = nodeModulesIndex !== -1 ? parts.slice(0, nodeModulesIndex).join(node_path.sep) : normalizedPath; + if (cwd === parentDir) { + return [cwd]; + } + return [parentDir, cwd]; +}; + +const SEMVER_REGEX = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*)?$/; +const getSanitizedTypeScriptVersion = (version = "") => { + const match = version.match(SEMVER_REGEX); + if (!match) { + return undefined; + } + const [major, minor, patch, prerelease] = [match[1], match[2], match[3], match[4]]; + return prerelease ? `${major}.${minor}.${patch}-${prerelease}` : `${major}.${minor}.${patch}`; +}; + +const ALLOWED_PREFIXES = ["^", "~", ">=", "<=", ">", "<"]; +const ALLOWED_DIST_TAGS = ["latest", "beta", "dev", "rc", "insiders", "next"]; +const getSanitizedDevTypeScriptVersion = (version = "") => { + if (ALLOWED_DIST_TAGS.includes(version)) { + return version; + } + const prefix = ALLOWED_PREFIXES.find((p) => version.startsWith(p)) ?? ""; + const sanitizedTypeScriptVersion = getSanitizedTypeScriptVersion(version.slice(prefix.length)); + if (!sanitizedTypeScriptVersion) { + return undefined; + } + return `${prefix}${sanitizedTypeScriptVersion}`; +}; + +let tscVersion; +const TS_PACKAGE_JSON = node_path.join("node_modules", "typescript", "package.json"); +const getTypeScriptUserAgentPair = async () => { + if (tscVersion === null) { + return undefined; + } + else if (typeof tscVersion === "string") { + return ["md/tsc", tscVersion]; + } + let isTypeScriptDetectionDisabled = false; + try { + isTypeScriptDetectionDisabled = + utilConfigProvider.booleanSelector(process.env, "AWS_SDK_JS_TYPESCRIPT_DETECTION_DISABLED", utilConfigProvider.SelectorType.ENV) || false; + } + catch { } + if (isTypeScriptDetectionDisabled) { + tscVersion = null; + return undefined; + } + const dirname = typeof __dirname !== "undefined" ? __dirname : undefined; + const nodeModulesParentDirs = getNodeModulesParentDirs(dirname); + let versionFromApp; + for (const nodeModulesParentDir of nodeModulesParentDirs) { + try { + const appPackageJsonPath = node_path.join(nodeModulesParentDir, "package.json"); + const packageJson = await promises.readFile(appPackageJsonPath, "utf-8"); + const { dependencies, devDependencies } = JSON.parse(packageJson); + const version = devDependencies?.typescript ?? dependencies?.typescript; + if (typeof version !== "string") { + continue; + } + versionFromApp = version; + break; + } + catch { + } + } + if (!versionFromApp) { + tscVersion = null; + return undefined; + } + let versionFromNodeModules; + for (const nodeModulesParentDir of nodeModulesParentDirs) { + try { + const tsPackageJsonPath = node_path.join(nodeModulesParentDir, TS_PACKAGE_JSON); + const packageJson = await promises.readFile(tsPackageJsonPath, "utf-8"); + const { version } = JSON.parse(packageJson); + const sanitizedVersion = getSanitizedTypeScriptVersion(version); + if (typeof sanitizedVersion !== "string") { + continue; + } + versionFromNodeModules = sanitizedVersion; + break; + } + catch { + } + } + if (versionFromNodeModules) { + tscVersion = versionFromNodeModules; + return ["md/tsc", tscVersion]; + } + const sanitizedVersion = getSanitizedDevTypeScriptVersion(versionFromApp); + if (typeof sanitizedVersion !== "string") { + tscVersion = null; + return undefined; + } + tscVersion = `dev_${sanitizedVersion}`; + return ["md/tsc", tscVersion]; +}; + +const crtAvailability = { + isCrtAvailable: false, +}; + +const isCrtAvailable = () => { + if (crtAvailability.isCrtAvailable) { + return ["md/crt-avail"]; + } + return null; +}; + +const createDefaultUserAgentProvider = ({ serviceId, clientVersion }) => { + const runtimeUserAgentPair = getRuntimeUserAgentPair(); + return async (config) => { + const sections = [ + ["aws-sdk-js", clientVersion], + ["ua", "2.1"], + [`os/${node_os.platform()}`, node_os.release()], + ["lang/js"], + runtimeUserAgentPair, + ]; + const typescriptUserAgentPair = await getTypeScriptUserAgentPair(); + if (typescriptUserAgentPair) { + sections.push(typescriptUserAgentPair); + } + const crtAvailable = isCrtAvailable(); + if (crtAvailable) { + sections.push(crtAvailable); + } + if (serviceId) { + sections.push([`api/${serviceId}`, clientVersion]); + } + if (node_process.env.AWS_EXECUTION_ENV) { + sections.push([`exec-env/${node_process.env.AWS_EXECUTION_ENV}`]); + } + const appId = await config?.userAgentAppId?.(); + const resolvedUserAgent = appId ? [...sections, [`app/${appId}`]] : [...sections]; + return resolvedUserAgent; + }; +}; +const defaultUserAgent = createDefaultUserAgentProvider; + +const UA_APP_ID_ENV_NAME = "AWS_SDK_UA_APP_ID"; +const UA_APP_ID_INI_NAME = "sdk_ua_app_id"; +const UA_APP_ID_INI_NAME_DEPRECATED = "sdk-ua-app-id"; +const NODE_APP_ID_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => env[UA_APP_ID_ENV_NAME], + configFileSelector: (profile) => profile[UA_APP_ID_INI_NAME] ?? profile[UA_APP_ID_INI_NAME_DEPRECATED], + default: middlewareUserAgent.DEFAULT_UA_APP_ID, +}; + +exports.NODE_APP_ID_CONFIG_OPTIONS = NODE_APP_ID_CONFIG_OPTIONS; +exports.UA_APP_ID_ENV_NAME = UA_APP_ID_ENV_NAME; +exports.UA_APP_ID_INI_NAME = UA_APP_ID_INI_NAME; +exports.createDefaultUserAgentProvider = createDefaultUserAgentProvider; +exports.crtAvailability = crtAvailability; +exports.defaultUserAgent = defaultUserAgent; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-es/crt-availability.js b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-es/crt-availability.js new file mode 100644 index 000000000..99ebeb97a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-es/crt-availability.js @@ -0,0 +1,3 @@ +export const crtAvailability = { + isCrtAvailable: false, +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-es/defaultUserAgent.js b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-es/defaultUserAgent.js new file mode 100644 index 000000000..2b7eb5f01 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-es/defaultUserAgent.js @@ -0,0 +1,36 @@ +import { platform, release } from "node:os"; +import { env } from "node:process"; +import { getRuntimeUserAgentPair } from "./getRuntimeUserAgentPair"; +import { getTypeScriptUserAgentPair } from "./getTypeScriptUserAgentPair"; +import { isCrtAvailable } from "./is-crt-available"; +export { crtAvailability } from "./crt-availability"; +export const createDefaultUserAgentProvider = ({ serviceId, clientVersion }) => { + const runtimeUserAgentPair = getRuntimeUserAgentPair(); + return async (config) => { + const sections = [ + ["aws-sdk-js", clientVersion], + ["ua", "2.1"], + [`os/${platform()}`, release()], + ["lang/js"], + runtimeUserAgentPair, + ]; + const typescriptUserAgentPair = await getTypeScriptUserAgentPair(); + if (typescriptUserAgentPair) { + sections.push(typescriptUserAgentPair); + } + const crtAvailable = isCrtAvailable(); + if (crtAvailable) { + sections.push(crtAvailable); + } + if (serviceId) { + sections.push([`api/${serviceId}`, clientVersion]); + } + if (env.AWS_EXECUTION_ENV) { + sections.push([`exec-env/${env.AWS_EXECUTION_ENV}`]); + } + const appId = await config?.userAgentAppId?.(); + const resolvedUserAgent = appId ? [...sections, [`app/${appId}`]] : [...sections]; + return resolvedUserAgent; + }; +}; +export const defaultUserAgent = createDefaultUserAgentProvider; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-es/getNodeModulesParentDirs.js b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-es/getNodeModulesParentDirs.js new file mode 100644 index 000000000..eca7e637f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-es/getNodeModulesParentDirs.js @@ -0,0 +1,15 @@ +import { normalize, sep } from "node:path"; +export const getNodeModulesParentDirs = (dirname) => { + const cwd = process.cwd(); + if (!dirname) { + return [cwd]; + } + const normalizedPath = normalize(dirname); + const parts = normalizedPath.split(sep); + const nodeModulesIndex = parts.indexOf("node_modules"); + const parentDir = nodeModulesIndex !== -1 ? parts.slice(0, nodeModulesIndex).join(sep) : normalizedPath; + if (cwd === parentDir) { + return [cwd]; + } + return [parentDir, cwd]; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-es/getRuntimeUserAgentPair.js b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-es/getRuntimeUserAgentPair.js new file mode 100644 index 000000000..3d96cd9d9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-es/getRuntimeUserAgentPair.js @@ -0,0 +1,10 @@ +import { versions } from "node:process"; +export const getRuntimeUserAgentPair = () => { + const runtimesToCheck = ["deno", "bun", "llrt"]; + for (const runtime of runtimesToCheck) { + if (versions[runtime]) { + return [`md/${runtime}`, versions[runtime]]; + } + } + return ["md/nodejs", versions.node]; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-es/getSanitizedDevTypeScriptVersion.js b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-es/getSanitizedDevTypeScriptVersion.js new file mode 100644 index 000000000..9ca3f3a51 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-es/getSanitizedDevTypeScriptVersion.js @@ -0,0 +1,14 @@ +import { getSanitizedTypeScriptVersion } from "./getSanitizedTypeScriptVersion"; +const ALLOWED_PREFIXES = ["^", "~", ">=", "<=", ">", "<"]; +const ALLOWED_DIST_TAGS = ["latest", "beta", "dev", "rc", "insiders", "next"]; +export const getSanitizedDevTypeScriptVersion = (version = "") => { + if (ALLOWED_DIST_TAGS.includes(version)) { + return version; + } + const prefix = ALLOWED_PREFIXES.find((p) => version.startsWith(p)) ?? ""; + const sanitizedTypeScriptVersion = getSanitizedTypeScriptVersion(version.slice(prefix.length)); + if (!sanitizedTypeScriptVersion) { + return undefined; + } + return `${prefix}${sanitizedTypeScriptVersion}`; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-es/getSanitizedTypeScriptVersion.js b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-es/getSanitizedTypeScriptVersion.js new file mode 100644 index 000000000..d93d097fd --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-es/getSanitizedTypeScriptVersion.js @@ -0,0 +1,9 @@ +const SEMVER_REGEX = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*)?$/; +export const getSanitizedTypeScriptVersion = (version = "") => { + const match = version.match(SEMVER_REGEX); + if (!match) { + return undefined; + } + const [major, minor, patch, prerelease] = [match[1], match[2], match[3], match[4]]; + return prerelease ? `${major}.${minor}.${patch}-${prerelease}` : `${major}.${minor}.${patch}`; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-es/getTypeScriptUserAgentPair.js b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-es/getTypeScriptUserAgentPair.js new file mode 100644 index 000000000..48d6c6709 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-es/getTypeScriptUserAgentPair.js @@ -0,0 +1,75 @@ +import { booleanSelector, SelectorType } from "@smithy/util-config-provider"; +import { readFile } from "node:fs/promises"; +import { join } from "node:path"; +import { getNodeModulesParentDirs } from "./getNodeModulesParentDirs"; +import { getSanitizedDevTypeScriptVersion } from "./getSanitizedDevTypeScriptVersion"; +import { getSanitizedTypeScriptVersion } from "./getSanitizedTypeScriptVersion"; +let tscVersion; +const TS_PACKAGE_JSON = join("node_modules", "typescript", "package.json"); +export const getTypeScriptUserAgentPair = async () => { + if (tscVersion === null) { + return undefined; + } + else if (typeof tscVersion === "string") { + return ["md/tsc", tscVersion]; + } + let isTypeScriptDetectionDisabled = false; + try { + isTypeScriptDetectionDisabled = + booleanSelector(process.env, "AWS_SDK_JS_TYPESCRIPT_DETECTION_DISABLED", SelectorType.ENV) || false; + } + catch { } + if (isTypeScriptDetectionDisabled) { + tscVersion = null; + return undefined; + } + const dirname = typeof __dirname !== "undefined" ? __dirname : undefined; + const nodeModulesParentDirs = getNodeModulesParentDirs(dirname); + let versionFromApp; + for (const nodeModulesParentDir of nodeModulesParentDirs) { + try { + const appPackageJsonPath = join(nodeModulesParentDir, "package.json"); + const packageJson = await readFile(appPackageJsonPath, "utf-8"); + const { dependencies, devDependencies } = JSON.parse(packageJson); + const version = devDependencies?.typescript ?? dependencies?.typescript; + if (typeof version !== "string") { + continue; + } + versionFromApp = version; + break; + } + catch { + } + } + if (!versionFromApp) { + tscVersion = null; + return undefined; + } + let versionFromNodeModules; + for (const nodeModulesParentDir of nodeModulesParentDirs) { + try { + const tsPackageJsonPath = join(nodeModulesParentDir, TS_PACKAGE_JSON); + const packageJson = await readFile(tsPackageJsonPath, "utf-8"); + const { version } = JSON.parse(packageJson); + const sanitizedVersion = getSanitizedTypeScriptVersion(version); + if (typeof sanitizedVersion !== "string") { + continue; + } + versionFromNodeModules = sanitizedVersion; + break; + } + catch { + } + } + if (versionFromNodeModules) { + tscVersion = versionFromNodeModules; + return ["md/tsc", tscVersion]; + } + const sanitizedVersion = getSanitizedDevTypeScriptVersion(versionFromApp); + if (typeof sanitizedVersion !== "string") { + tscVersion = null; + return undefined; + } + tscVersion = `dev_${sanitizedVersion}`; + return ["md/tsc", tscVersion]; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-es/index.js b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-es/index.js new file mode 100644 index 000000000..cbf37f23b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-es/index.js @@ -0,0 +1,2 @@ +export * from "./defaultUserAgent"; +export * from "./nodeAppIdConfigOptions"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-es/is-crt-available.js b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-es/is-crt-available.js new file mode 100644 index 000000000..e9f8b0de0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-es/is-crt-available.js @@ -0,0 +1,7 @@ +import { crtAvailability } from "./crt-availability"; +export const isCrtAvailable = () => { + if (crtAvailability.isCrtAvailable) { + return ["md/crt-avail"]; + } + return null; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-es/nodeAppIdConfigOptions.js b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-es/nodeAppIdConfigOptions.js new file mode 100644 index 000000000..f270db9b0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-es/nodeAppIdConfigOptions.js @@ -0,0 +1,9 @@ +import { DEFAULT_UA_APP_ID } from "@aws-sdk/middleware-user-agent"; +export const UA_APP_ID_ENV_NAME = "AWS_SDK_UA_APP_ID"; +export const UA_APP_ID_INI_NAME = "sdk_ua_app_id"; +const UA_APP_ID_INI_NAME_DEPRECATED = "sdk-ua-app-id"; +export const NODE_APP_ID_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => env[UA_APP_ID_ENV_NAME], + configFileSelector: (profile) => profile[UA_APP_ID_INI_NAME] ?? profile[UA_APP_ID_INI_NAME_DEPRECATED], + default: DEFAULT_UA_APP_ID, +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/crt-availability.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/crt-availability.d.ts new file mode 100644 index 000000000..0cbb66083 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/crt-availability.d.ts @@ -0,0 +1,8 @@ +/** + * If \@aws-sdk/signature-v4-crt is installed and loaded, it will register + * this value to true. + * @internal + */ +export declare const crtAvailability: { + isCrtAvailable: boolean; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/defaultUserAgent.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/defaultUserAgent.d.ts new file mode 100644 index 000000000..9c07c1482 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/defaultUserAgent.d.ts @@ -0,0 +1,28 @@ +import type { Provider, UserAgent } from "@smithy/types"; +/** + * @internal + */ +export { crtAvailability } from "./crt-availability"; +/** + * @internal + */ +export interface DefaultUserAgentOptions { + serviceId?: string; + clientVersion: string; +} +/** + * @internal + */ +export interface PreviouslyResolved { + userAgentAppId: Provider; +} +/** + * Collect metrics from runtime to put into user agent. + * @internal + */ +export declare const createDefaultUserAgentProvider: ({ serviceId, clientVersion }: DefaultUserAgentOptions) => (config?: PreviouslyResolved) => Promise; +/** + * @internal + * @deprecated use createDefaultUserAgentProvider + */ +export declare const defaultUserAgent: ({ serviceId, clientVersion }: DefaultUserAgentOptions) => (config?: PreviouslyResolved) => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/getNodeModulesParentDirs.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/getNodeModulesParentDirs.d.ts new file mode 100644 index 000000000..ab163e0e3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/getNodeModulesParentDirs.d.ts @@ -0,0 +1,10 @@ +/** + * Returns candidate paths to the node_modules parent directories based on current + * working directory and, if provided, from the given directory. + * + * @param dirname - Optional directory path to derive an additional candidate path from. + * @returns An array of unique candidate paths to the TypeScript package.json file. + * + * @internal + */ +export declare const getNodeModulesParentDirs: (dirname?: string) => string[]; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/getRuntimeUserAgentPair.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/getRuntimeUserAgentPair.d.ts new file mode 100644 index 000000000..d5edbbe1b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/getRuntimeUserAgentPair.d.ts @@ -0,0 +1,6 @@ +import type { UserAgentPair } from "@smithy/types"; +/** + * Returns the runtime name and version as a user agent pair. + * @internal + */ +export declare const getRuntimeUserAgentPair: () => UserAgentPair; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/getSanitizedDevTypeScriptVersion.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/getSanitizedDevTypeScriptVersion.d.ts new file mode 100644 index 000000000..0046e8a4a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/getSanitizedDevTypeScriptVersion.d.ts @@ -0,0 +1,8 @@ +/** + * Sanitizes a TypeScript version string for user-agent reporting. + * Handles dist tags (e.g., "latest", "beta"), version prefixes (e.g., "^", "~"), + * and semver strings. Returns undefined if the version is invalid. + * + * @internal + */ +export declare const getSanitizedDevTypeScriptVersion: (version?: string) => string | undefined; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/getSanitizedTypeScriptVersion.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/getSanitizedTypeScriptVersion.d.ts new file mode 100644 index 000000000..b506b6087 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/getSanitizedTypeScriptVersion.d.ts @@ -0,0 +1,8 @@ +/** + * Validates a semver string (with optional pre-release and/or build metadata). + * If valid, returns the version string with build metadata stripped. + * Returns undefined if the string is not a valid semver. + * + * @internal + */ +export declare const getSanitizedTypeScriptVersion: (version?: string) => string | undefined; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/getTypeScriptUserAgentPair.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/getTypeScriptUserAgentPair.d.ts new file mode 100644 index 000000000..c53959875 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/getTypeScriptUserAgentPair.d.ts @@ -0,0 +1,6 @@ +import type { UserAgentPair } from "@smithy/types"; +/** + * Returns the tyescript name and version as a user agent pair, if present. + * @internal + */ +export declare const getTypeScriptUserAgentPair: () => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/index.d.ts new file mode 100644 index 000000000..cbf37f23b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/index.d.ts @@ -0,0 +1,2 @@ +export * from "./defaultUserAgent"; +export * from "./nodeAppIdConfigOptions"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/is-crt-available.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/is-crt-available.d.ts new file mode 100644 index 000000000..e9b010e7a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/is-crt-available.d.ts @@ -0,0 +1,5 @@ +import type { UserAgentPair } from "@smithy/types"; +/** + * @internal + */ +export declare const isCrtAvailable: () => UserAgentPair | null; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/nodeAppIdConfigOptions.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/nodeAppIdConfigOptions.d.ts new file mode 100644 index 000000000..35201df4f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/nodeAppIdConfigOptions.d.ts @@ -0,0 +1,13 @@ +import type { LoadedConfigSelectors } from "@smithy/node-config-provider"; +/** + * @internal + */ +export declare const UA_APP_ID_ENV_NAME = "AWS_SDK_UA_APP_ID"; +/** + * @internal + */ +export declare const UA_APP_ID_INI_NAME = "sdk_ua_app_id"; +/** + * @internal + */ +export declare const NODE_APP_ID_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/crt-availability.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/crt-availability.d.ts new file mode 100644 index 000000000..9dccfb03c --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/crt-availability.d.ts @@ -0,0 +1,3 @@ +export declare const crtAvailability: { + isCrtAvailable: boolean; +}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/defaultUserAgent.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/defaultUserAgent.d.ts new file mode 100644 index 000000000..6e4884f3e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/defaultUserAgent.d.ts @@ -0,0 +1,21 @@ +import { Provider, UserAgent } from "@smithy/types"; +export { crtAvailability } from "./crt-availability"; +export interface DefaultUserAgentOptions { + serviceId?: string; + clientVersion: string; +} +export interface PreviouslyResolved { + userAgentAppId: Provider; +} +export declare const createDefaultUserAgentProvider: ({ + serviceId, + clientVersion, +}: DefaultUserAgentOptions) => ( + config?: PreviouslyResolved +) => Promise; +export declare const defaultUserAgent: ({ + serviceId, + clientVersion, +}: DefaultUserAgentOptions) => ( + config?: PreviouslyResolved +) => Promise; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/getNodeModulesParentDirs.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/getNodeModulesParentDirs.d.ts new file mode 100644 index 000000000..938df9005 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/getNodeModulesParentDirs.d.ts @@ -0,0 +1 @@ +export declare const getNodeModulesParentDirs: (dirname?: string) => string[]; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/getRuntimeUserAgentPair.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/getRuntimeUserAgentPair.d.ts new file mode 100644 index 000000000..8f2e8476a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/getRuntimeUserAgentPair.d.ts @@ -0,0 +1,2 @@ +import { UserAgentPair } from "@smithy/types"; +export declare const getRuntimeUserAgentPair: () => UserAgentPair; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/getSanitizedDevTypeScriptVersion.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/getSanitizedDevTypeScriptVersion.d.ts new file mode 100644 index 000000000..c16a7aaf8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/getSanitizedDevTypeScriptVersion.d.ts @@ -0,0 +1,3 @@ +export declare const getSanitizedDevTypeScriptVersion: ( + version?: string +) => string | undefined; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/getSanitizedTypeScriptVersion.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/getSanitizedTypeScriptVersion.d.ts new file mode 100644 index 000000000..0f5dbdc46 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/getSanitizedTypeScriptVersion.d.ts @@ -0,0 +1,3 @@ +export declare const getSanitizedTypeScriptVersion: ( + version?: string +) => string | undefined; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/getTypeScriptUserAgentPair.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/getTypeScriptUserAgentPair.d.ts new file mode 100644 index 000000000..47eced35b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/getTypeScriptUserAgentPair.d.ts @@ -0,0 +1,4 @@ +import { UserAgentPair } from "@smithy/types"; +export declare const getTypeScriptUserAgentPair: () => Promise< + UserAgentPair | undefined +>; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..cbf37f23b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/index.d.ts @@ -0,0 +1,2 @@ +export * from "./defaultUserAgent"; +export * from "./nodeAppIdConfigOptions"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/is-crt-available.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/is-crt-available.d.ts new file mode 100644 index 000000000..d28355c1a --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/is-crt-available.d.ts @@ -0,0 +1,2 @@ +import { UserAgentPair } from "@smithy/types"; +export declare const isCrtAvailable: () => UserAgentPair | null; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/nodeAppIdConfigOptions.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/nodeAppIdConfigOptions.d.ts new file mode 100644 index 000000000..b9fa12353 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/nodeAppIdConfigOptions.d.ts @@ -0,0 +1,6 @@ +import { LoadedConfigSelectors } from "@smithy/node-config-provider"; +export declare const UA_APP_ID_ENV_NAME = "AWS_SDK_UA_APP_ID"; +export declare const UA_APP_ID_INI_NAME = "sdk_ua_app_id"; +export declare const NODE_APP_ID_CONFIG_OPTIONS: LoadedConfigSelectors< + string | undefined +>; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/package.json b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/package.json new file mode 100644 index 000000000..4e999153d --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/util-user-agent-node/package.json @@ -0,0 +1,69 @@ +{ + "name": "@aws-sdk/util-user-agent-node", + "version": "3.973.7", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline util-user-agent-node", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:watch": "yarn g:vitest watch", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-user-agent": "^3.972.21", + "@aws-sdk/types": "^3.973.6", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-config-provider": "^4.2.2", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "@types/node": "^20.14.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + }, + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/util-user-agent-node", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/util-user-agent-node" + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/LICENSE b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/README.md b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/README.md new file mode 100644 index 000000000..0aabbc14f --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/README.md @@ -0,0 +1,10 @@ +# @aws-sdk/xml-builder + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/xml-builder/latest.svg)](https://www.npmjs.com/package/@aws-sdk/xml-builder) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/xml-builder.svg)](https://www.npmjs.com/package/@aws-sdk/xml-builder) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-cjs/index.js b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-cjs/index.js new file mode 100644 index 000000000..3db48788e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-cjs/index.js @@ -0,0 +1,121 @@ +'use strict'; + +var xmlParser = require('./xml-parser'); + +function escapeAttribute(value) { + return value.replace(/&/g, "&").replace(//g, ">").replace(/"/g, """); +} + +function escapeElement(value) { + return value + .replace(/&/g, "&") + .replace(/"/g, """) + .replace(/'/g, "'") + .replace(//g, ">") + .replace(/\r/g, " ") + .replace(/\n/g, " ") + .replace(/\u0085/g, "…") + .replace(/\u2028/, "
"); +} + +class XmlText { + value; + constructor(value) { + this.value = value; + } + toString() { + return escapeElement("" + this.value); + } +} + +class XmlNode { + name; + children; + attributes = {}; + static of(name, childText, withName) { + const node = new XmlNode(name); + if (childText !== undefined) { + node.addChildNode(new XmlText(childText)); + } + if (withName !== undefined) { + node.withName(withName); + } + return node; + } + constructor(name, children = []) { + this.name = name; + this.children = children; + } + withName(name) { + this.name = name; + return this; + } + addAttribute(name, value) { + this.attributes[name] = value; + return this; + } + addChildNode(child) { + this.children.push(child); + return this; + } + removeAttribute(name) { + delete this.attributes[name]; + return this; + } + n(name) { + this.name = name; + return this; + } + c(child) { + this.children.push(child); + return this; + } + a(name, value) { + if (value != null) { + this.attributes[name] = value; + } + return this; + } + cc(input, field, withName = field) { + if (input[field] != null) { + const node = XmlNode.of(field, input[field]).withName(withName); + this.c(node); + } + } + l(input, listName, memberName, valueProvider) { + if (input[listName] != null) { + const nodes = valueProvider(); + nodes.map((node) => { + node.withName(memberName); + this.c(node); + }); + } + } + lc(input, listName, memberName, valueProvider) { + if (input[listName] != null) { + const nodes = valueProvider(); + const containerNode = new XmlNode(memberName); + nodes.map((node) => { + containerNode.c(node); + }); + this.c(containerNode); + } + } + toString() { + const hasChildren = Boolean(this.children.length); + let xmlText = `<${this.name}`; + const attributes = this.attributes; + for (const attributeName of Object.keys(attributes)) { + const attribute = attributes[attributeName]; + if (attribute != null) { + xmlText += ` ${attributeName}="${escapeAttribute("" + attribute)}"`; + } + } + return (xmlText += !hasChildren ? "/>" : `>${this.children.map((c) => c.toString()).join("")}`); + } +} + +exports.parseXML = xmlParser.parseXML; +exports.XmlNode = XmlNode; +exports.XmlText = XmlText; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-parser.js b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-parser.js new file mode 100644 index 000000000..2dfeea7b6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-parser.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.parseXML = parseXML; +const fast_xml_parser_1 = require("fast-xml-parser"); +const parser = new fast_xml_parser_1.XMLParser({ + attributeNamePrefix: "", + htmlEntities: true, + ignoreAttributes: false, + ignoreDeclaration: true, + parseTagValue: false, + trimValues: false, + tagValueProcessor: (_, val) => (val.trim() === "" && val.includes("\n") ? "" : undefined), + maxNestedTags: 1024, +}); +parser.addEntity("#xD", "\r"); +parser.addEntity("#10", "\n"); +function parseXML(xmlString) { + return parser.parse(xmlString, true); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-es/XmlNode.js b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-es/XmlNode.js new file mode 100644 index 000000000..4c8d99719 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-es/XmlNode.js @@ -0,0 +1,88 @@ +import { escapeAttribute } from "./escape-attribute"; +import { XmlText } from "./XmlText"; +export class XmlNode { + name; + children; + attributes = {}; + static of(name, childText, withName) { + const node = new XmlNode(name); + if (childText !== undefined) { + node.addChildNode(new XmlText(childText)); + } + if (withName !== undefined) { + node.withName(withName); + } + return node; + } + constructor(name, children = []) { + this.name = name; + this.children = children; + } + withName(name) { + this.name = name; + return this; + } + addAttribute(name, value) { + this.attributes[name] = value; + return this; + } + addChildNode(child) { + this.children.push(child); + return this; + } + removeAttribute(name) { + delete this.attributes[name]; + return this; + } + n(name) { + this.name = name; + return this; + } + c(child) { + this.children.push(child); + return this; + } + a(name, value) { + if (value != null) { + this.attributes[name] = value; + } + return this; + } + cc(input, field, withName = field) { + if (input[field] != null) { + const node = XmlNode.of(field, input[field]).withName(withName); + this.c(node); + } + } + l(input, listName, memberName, valueProvider) { + if (input[listName] != null) { + const nodes = valueProvider(); + nodes.map((node) => { + node.withName(memberName); + this.c(node); + }); + } + } + lc(input, listName, memberName, valueProvider) { + if (input[listName] != null) { + const nodes = valueProvider(); + const containerNode = new XmlNode(memberName); + nodes.map((node) => { + containerNode.c(node); + }); + this.c(containerNode); + } + } + toString() { + const hasChildren = Boolean(this.children.length); + let xmlText = `<${this.name}`; + const attributes = this.attributes; + for (const attributeName of Object.keys(attributes)) { + const attribute = attributes[attributeName]; + if (attribute != null) { + xmlText += ` ${attributeName}="${escapeAttribute("" + attribute)}"`; + } + } + return (xmlText += !hasChildren ? "/>" : `>${this.children.map((c) => c.toString()).join("")}`); + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-es/XmlText.js b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-es/XmlText.js new file mode 100644 index 000000000..e019b3fb1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-es/XmlText.js @@ -0,0 +1,10 @@ +import { escapeElement } from "./escape-element"; +export class XmlText { + value; + constructor(value) { + this.value = value; + } + toString() { + return escapeElement("" + this.value); + } +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-es/escape-attribute.js b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-es/escape-attribute.js new file mode 100644 index 000000000..b54adab49 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-es/escape-attribute.js @@ -0,0 +1,3 @@ +export function escapeAttribute(value) { + return value.replace(/&/g, "&").replace(//g, ">").replace(/"/g, """); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-es/escape-element.js b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-es/escape-element.js new file mode 100644 index 000000000..0746be120 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-es/escape-element.js @@ -0,0 +1,12 @@ +export function escapeElement(value) { + return value + .replace(/&/g, "&") + .replace(/"/g, """) + .replace(/'/g, "'") + .replace(//g, ">") + .replace(/\r/g, " ") + .replace(/\n/g, " ") + .replace(/\u0085/g, "…") + .replace(/\u2028/, "
"); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-es/index.js b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-es/index.js new file mode 100644 index 000000000..b90f969e0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-es/index.js @@ -0,0 +1,3 @@ +export * from "./XmlNode"; +export * from "./XmlText"; +export { parseXML } from "./xml-parser"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-es/stringable.js b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-es/stringable.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-es/stringable.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-es/xml-parser.browser.js b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-es/xml-parser.browser.js new file mode 100644 index 000000000..946982d1e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-es/xml-parser.browser.js @@ -0,0 +1,57 @@ +let parser; +export function parseXML(xmlString) { + if (!parser) { + parser = new DOMParser(); + } + const xmlDocument = parser.parseFromString(xmlString, "application/xml"); + if (xmlDocument.getElementsByTagName("parsererror").length > 0) { + throw new Error("DOMParser XML parsing error."); + } + const xmlToObj = (node) => { + if (node.nodeType === Node.TEXT_NODE) { + if (node.textContent?.trim()) { + return node.textContent; + } + } + if (node.nodeType === Node.ELEMENT_NODE) { + const element = node; + if (element.attributes.length === 0 && element.childNodes.length === 0) { + return ""; + } + const obj = {}; + const attributes = Array.from(element.attributes); + for (const attr of attributes) { + obj[`${attr.name}`] = attr.value; + } + const childNodes = Array.from(element.childNodes); + for (const child of childNodes) { + const childResult = xmlToObj(child); + if (childResult != null) { + const childName = child.nodeName; + if (childNodes.length === 1 && attributes.length === 0 && childName === "#text") { + return childResult; + } + if (obj[childName]) { + if (Array.isArray(obj[childName])) { + obj[childName].push(childResult); + } + else { + obj[childName] = [obj[childName], childResult]; + } + } + else { + obj[childName] = childResult; + } + } + else if (childNodes.length === 1 && attributes.length === 0) { + return element.textContent; + } + } + return obj; + } + return null; + }; + return { + [xmlDocument.documentElement.nodeName]: xmlToObj(xmlDocument.documentElement), + }; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-es/xml-parser.js b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-es/xml-parser.js new file mode 100644 index 000000000..acaa052e5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-es/xml-parser.js @@ -0,0 +1,16 @@ +import { XMLParser } from "fast-xml-parser"; +const parser = new XMLParser({ + attributeNamePrefix: "", + htmlEntities: true, + ignoreAttributes: false, + ignoreDeclaration: true, + parseTagValue: false, + trimValues: false, + tagValueProcessor: (_, val) => (val.trim() === "" && val.includes("\n") ? "" : undefined), + maxNestedTags: 1024, +}); +parser.addEntity("#xD", "\r"); +parser.addEntity("#10", "\n"); +export function parseXML(xmlString) { + return parser.parse(xmlString, true); +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/XmlNode.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/XmlNode.d.ts new file mode 100644 index 000000000..1869b3acd --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/XmlNode.d.ts @@ -0,0 +1,49 @@ +import type { Stringable } from "./stringable"; +/** + * @internal + * + * Represents an XML node. + */ +export declare class XmlNode { + private name; + readonly children: Stringable[]; + private attributes; + static of(name: string, childText?: string, withName?: string): XmlNode; + constructor(name: string, children?: Stringable[]); + withName(name: string): XmlNode; + addAttribute(name: string, value: any): XmlNode; + addChildNode(child: Stringable): XmlNode; + removeAttribute(name: string): XmlNode; + /** + * @internal + * Alias of {@link XmlNode#withName(string)} for codegen brevity. + */ + n(name: string): XmlNode; + /** + * @internal + * Alias of {@link XmlNode#addChildNode(string)} for codegen brevity. + */ + c(child: Stringable): XmlNode; + /** + * @internal + * Checked version of {@link XmlNode#addAttribute(string)} for codegen brevity. + */ + a(name: string, value: any): XmlNode; + /** + * Create a child node. + * Used in serialization of string fields. + * @internal + */ + cc(input: any, field: string, withName?: string): void; + /** + * Creates list child nodes. + * @internal + */ + l(input: any, listName: string, memberName: string, valueProvider: Function): void; + /** + * Creates list child nodes with container. + * @internal + */ + lc(input: any, listName: string, memberName: string, valueProvider: Function): void; + toString(): string; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/XmlText.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/XmlText.d.ts new file mode 100644 index 000000000..808456740 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/XmlText.d.ts @@ -0,0 +1,11 @@ +import type { Stringable } from "./stringable"; +/** + * @internal + * + * Represents an XML text value. + */ +export declare class XmlText implements Stringable { + private value; + constructor(value: string); + toString(): string; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/escape-attribute.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/escape-attribute.d.ts new file mode 100644 index 000000000..4a08e7fad --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/escape-attribute.d.ts @@ -0,0 +1,6 @@ +/** + * @internal + * + * Escapes characters that can not be in an XML attribute. + */ +export declare function escapeAttribute(value: string): string; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/escape-element.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/escape-element.d.ts new file mode 100644 index 000000000..d43e10ec6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/escape-element.d.ts @@ -0,0 +1,6 @@ +/** + * @internal + * + * Escapes characters that can not be in an XML element. + */ +export declare function escapeElement(value: string): string; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/index.d.ts new file mode 100644 index 000000000..dafb64b00 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/index.d.ts @@ -0,0 +1,12 @@ +/** + * @internal + */ +export * from "./XmlNode"; +/** + * @internal + */ +export * from "./XmlText"; +/** + * @internal + */ +export { parseXML } from "./xml-parser"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/stringable.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/stringable.d.ts new file mode 100644 index 000000000..08f42d1bc --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/stringable.d.ts @@ -0,0 +1,6 @@ +/** + * @internal + */ +export interface Stringable { + toString(): string; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/XmlNode.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/XmlNode.d.ts new file mode 100644 index 000000000..164d6c108 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/XmlNode.d.ts @@ -0,0 +1,29 @@ +import { Stringable } from "./stringable"; +export declare class XmlNode { + private name; + readonly children: Stringable[]; + private attributes; + static of(name: string, childText?: string, withName?: string): XmlNode; + constructor(name: string, children?: Stringable[]); + withName(name: string): XmlNode; + addAttribute(name: string, value: any): XmlNode; + addChildNode(child: Stringable): XmlNode; + removeAttribute(name: string): XmlNode; + n(name: string): XmlNode; + c(child: Stringable): XmlNode; + a(name: string, value: any): XmlNode; + cc(input: any, field: string, withName?: string): void; + l( + input: any, + listName: string, + memberName: string, + valueProvider: Function + ): void; + lc( + input: any, + listName: string, + memberName: string, + valueProvider: Function + ): void; + toString(): string; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/XmlText.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/XmlText.d.ts new file mode 100644 index 000000000..f53373c1e --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/XmlText.d.ts @@ -0,0 +1,6 @@ +import { Stringable } from "./stringable"; +export declare class XmlText implements Stringable { + private value; + constructor(value: string); + toString(): string; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/escape-attribute.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/escape-attribute.d.ts new file mode 100644 index 000000000..f9f9a95f6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/escape-attribute.d.ts @@ -0,0 +1 @@ +export declare function escapeAttribute(value: string): string; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/escape-element.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/escape-element.d.ts new file mode 100644 index 000000000..b09ba89ed --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/escape-element.d.ts @@ -0,0 +1 @@ +export declare function escapeElement(value: string): string; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..b90f969e0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/index.d.ts @@ -0,0 +1,3 @@ +export * from "./XmlNode"; +export * from "./XmlText"; +export { parseXML } from "./xml-parser"; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/stringable.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/stringable.d.ts new file mode 100644 index 000000000..ba9b1f72b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/stringable.d.ts @@ -0,0 +1,3 @@ +export interface Stringable { + toString(): string; +} diff --git a/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/xml-parser.browser.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/xml-parser.browser.d.ts new file mode 100644 index 000000000..415a5ac37 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/xml-parser.browser.d.ts @@ -0,0 +1 @@ +export declare function parseXML(xmlString: string): any; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/xml-parser.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/xml-parser.d.ts new file mode 100644 index 000000000..415a5ac37 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/xml-parser.d.ts @@ -0,0 +1 @@ +export declare function parseXML(xmlString: string): any; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/xml-parser.browser.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/xml-parser.browser.d.ts new file mode 100644 index 000000000..31b86dadb --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/xml-parser.browser.d.ts @@ -0,0 +1,9 @@ +/** + * Cases where this differs from fast-xml-parser: + * + * 1. Mixing text with nested tags (does not occur in AWS REST XML). + * hello, world, how are you? + * + * @internal + */ +export declare function parseXML(xmlString: string): any; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/xml-parser.d.ts b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/xml-parser.d.ts new file mode 100644 index 000000000..851695322 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/dist-types/xml-parser.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare function parseXML(xmlString: string): any; diff --git a/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/package.json b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/package.json new file mode 100644 index 000000000..fb29b2af4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws-sdk/xml-builder/package.json @@ -0,0 +1,63 @@ +{ + "name": "@aws-sdk/xml-builder", + "version": "3.972.11", + "description": "XML utilities for the AWS SDK", + "dependencies": { + "@smithy/types": "^4.13.1", + "fast-xml-parser": "5.4.1", + "tslib": "^2.6.2" + }, + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline xml-builder", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "browser": { + "./dist-es/xml-parser": "./dist-es/xml-parser.browser" + }, + "react-native": { + "./dist-es/xml-parser": "./dist-es/xml-parser", + "./dist-cjs/xml-parser": "./dist-cjs/xml-parser" + }, + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/xml-builder", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/xml-builder" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + } +} diff --git a/food-ordering-app/server/node_modules/@aws/lambda-invoke-store/LICENSE b/food-ordering-app/server/node_modules/@aws/lambda-invoke-store/LICENSE new file mode 100644 index 000000000..67db85882 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws/lambda-invoke-store/LICENSE @@ -0,0 +1,175 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. diff --git a/food-ordering-app/server/node_modules/@aws/lambda-invoke-store/README.md b/food-ordering-app/server/node_modules/@aws/lambda-invoke-store/README.md new file mode 100644 index 000000000..5b9112200 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws/lambda-invoke-store/README.md @@ -0,0 +1,198 @@ +# Node.js Invoke Store for AWS Lambda + +`@aws/lambda-invoke-store` provides a generic, per-invocation context store for +AWS Lambda Node.js Runtime Environment. It enables storing and retrieving data +within the scope of a single Lambda invocation, with proper isolation between +concurrent executions. + +## Features + +- **Invocation Isolation**: Safely store and retrieve data within a single Lambda invocation. +- **Protected Lambda Context**: Built-in protection for Lambda execution metadata (requestId, [traceId](https://docs.aws.amazon.com/xray/latest/devguide/xray-concepts.html#xray-concepts-traces)) +- **Custom Data Storage**: Store any custom data within the invocation context +- **Async/Await Support**: Full support for asynchronous operations with context preservation +- **Type Safety**: Complete TypeScript type definitions +- **Singleton Pattern**: Ensures a single shared instance across all imports +- **Global Namespace Integration**: Integrates with the Lambda runtime global namespace + +## Installation + +```bash +npm install @aws/lambda-invoke-store +``` + +## Quick Start + +> **Note**: In the AWS Lambda environment, the Runtime Interface Client (RIC) automatically initializes the InvokeStore context at the beginning of each invocation. Lambda function developers typically don't need to call `InvokeStore.run()` directly. + +```typescript +import { InvokeStore } from "@aws/lambda-invoke-store"; + +// Lambda handler with invoke store +export const handler = async (event, context) => { + // The RIC has already initialized the InvokeStore with requestId and X-Ray traceId + + // Access Lambda context data + const invokeStore = await InvokeStore.getInstanceAsync(); + console.log(`Processing request: ${invokeStore.getRequestId()}`); + + // Store custom data + invokeStore.set("userId", event.userId); + + // Data persists across async operations + await processData(event); + + // Retrieve custom data + const userId = invokeStore.get("userId"); + + return { + requestId: invokeStore.getRequestId(), + userId, + }; +}; + +// Context is preserved in async operations +async function processData(event) { + // Still has access to the same invoke context + const invokeStore = await InvokeStore.getInstanceAsync(); + console.log(`Processing in same context: ${invokeStore.getRequestId()}`); + + // Can set additional data + invokeStore.set("processedData", { result: "success" }); +} +``` + +## API Reference + +### InvokeStore.getInstanceAsync() +First, get an instance of the InvokeStore: +```typescript +const invokeStore = await InvokeStore.getInstanceAsync(); +``` + +### invokeStore.getContext() + +Returns the complete current context or `undefined` if outside a context. + +```typescript +const context = invokeStore.getContext(); +``` + +### invokeStore.get(key) + +Gets a value from the current context. + +```typescript +const requestId = invokeStore.get(InvokeStoreBase.PROTECTED_KEYS.REQUEST_ID); +const customValue = invokeStore.get("customKey"); +``` + +### invokeStore.set(key, value) + +Sets a custom value in the current context. Protected Lambda fields cannot be modified. + +```typescript +invokeStore.set("userId", "user-123"); +invokeStore.set("timestamp", Date.now()); + +// This will throw an error: +// invokeStore.set(InvokeStoreBase.PROTECTED_KEYS.REQUEST_ID, 'new-id'); +``` + +### invokeStore.getRequestId() + +Convenience method to get the current request ID. + +```typescript +const requestId = invokeStore.getRequestId(); // Returns '-' if outside context +``` + +### invokeStore.getTenantId() + +Convenience method to get the tenant ID. + +```typescript +const requestId = invokeStore.getTenantId(); +``` + +### invokeStore.getXRayTraceId() + +Convenience method to get the current [X-Ray trace ID](https://docs.aws.amazon.com/xray/latest/devguide/xray-concepts.html#xray-concepts-traces). This ID is used for distributed tracing across AWS services. + +```typescript +const traceId = invokeStore.getXRayTraceId(); // Returns undefined if not set or outside context +``` + +### invokeStore.hasContext() + +Checks if code is currently running within an invoke context. + +```typescript +if (invokeStore.hasContext()) { + // We're inside an invoke context +} +``` + +### invokeStore.run(context, fn) + +> **Note**: This method is primarily used by the Lambda Runtime Interface Client (RIC) to initialize the context for each invocation. Lambda function developers typically don't need to call this method directly. + +Runs a function within an invoke context. + +```typescript +invokeStore.run( + { + [InvokeStoreBase.PROTECTED_KEYS.REQUEST_ID]: "request-123", + [InvokeStoreBase.PROTECTED_KEYS.X_RAY_TRACE_ID]: "trace-456", // Optional X-Ray trace ID + customField: "value", // Optional custom fields + }, + () => { + // Function to execute within context + } +); +``` + +## Integration with AWS Lambda Runtime + +The `@aws/lambda-invoke-store` package is designed to be integrated with the AWS Lambda Node.js Runtime Interface Client (RIC). The RIC automatically: + +1. Initializes the InvokeStore context at the beginning of each Lambda invocation +2. Sets the `requestId` and [X-Ray `traceId`](https://docs.aws.amazon.com/xray/latest/devguide/xray-concepts.html#xray-concepts-traces) in the context +3. Ensures proper context isolation between concurrent invocations +4. Cleans up the context after the invocation completes + +Lambda function developers can focus on using the context without worrying about initialization or cleanup. + +## Global Namespace and Singleton Pattern + +The InvokeStore uses a singleton pattern to ensure that all imports of the module use the same instance, which is critical for maintaining proper context isolation across different parts of your application. + +### Global Namespace Integration + +The InvokeStore integrates with the Lambda runtime's global namespace: + +```typescript +// The InvokeStore is available globally +const globalInstance = globalThis.awslambda.InvokeStore; +``` + +This enables seamless integration between the Lambda Runtime Interface Client (RIC), AWS SDK, and your function code, ensuring they all share the same context. + +### Environment Variable Opt-Out + +If you prefer not to modify the global namespace, you can opt out by setting the environment variable: + +```bash +# Disable global namespace modification +AWS_LAMBDA_NODEJS_NO_GLOBAL_AWSLAMBDA=1 +``` + +When this environment variable is set, the InvokeStore will still function correctly, but it won't be stored in the global namespace. + +## Security + +See [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) for more information. + +## License + +This project is licensed under the Apache-2.0 License. diff --git a/food-ordering-app/server/node_modules/@aws/lambda-invoke-store/dist-cjs/invoke-store.js b/food-ordering-app/server/node_modules/@aws/lambda-invoke-store/dist-cjs/invoke-store.js new file mode 100644 index 000000000..deeea9e57 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws/lambda-invoke-store/dist-cjs/invoke-store.js @@ -0,0 +1,119 @@ +'use strict'; + +const PROTECTED_KEYS = { + REQUEST_ID: Symbol.for("_AWS_LAMBDA_REQUEST_ID"), + X_RAY_TRACE_ID: Symbol.for("_AWS_LAMBDA_X_RAY_TRACE_ID"), + TENANT_ID: Symbol.for("_AWS_LAMBDA_TENANT_ID"), +}; +const NO_GLOBAL_AWS_LAMBDA = ["true", "1"].includes(process.env?.AWS_LAMBDA_NODEJS_NO_GLOBAL_AWSLAMBDA ?? ""); +if (!NO_GLOBAL_AWS_LAMBDA) { + globalThis.awslambda = globalThis.awslambda || {}; +} +class InvokeStoreBase { + static PROTECTED_KEYS = PROTECTED_KEYS; + isProtectedKey(key) { + return Object.values(PROTECTED_KEYS).includes(key); + } + getRequestId() { + return this.get(PROTECTED_KEYS.REQUEST_ID) ?? "-"; + } + getXRayTraceId() { + return this.get(PROTECTED_KEYS.X_RAY_TRACE_ID); + } + getTenantId() { + return this.get(PROTECTED_KEYS.TENANT_ID); + } +} +class InvokeStoreSingle extends InvokeStoreBase { + currentContext; + getContext() { + return this.currentContext; + } + hasContext() { + return this.currentContext !== undefined; + } + get(key) { + return this.currentContext?.[key]; + } + set(key, value) { + if (this.isProtectedKey(key)) { + throw new Error(`Cannot modify protected Lambda context field: ${String(key)}`); + } + this.currentContext = this.currentContext || {}; + this.currentContext[key] = value; + } + run(context, fn) { + this.currentContext = context; + return fn(); + } +} +class InvokeStoreMulti extends InvokeStoreBase { + als; + static async create() { + const instance = new InvokeStoreMulti(); + const asyncHooks = await import('node:async_hooks'); + instance.als = new asyncHooks.AsyncLocalStorage(); + return instance; + } + getContext() { + return this.als.getStore(); + } + hasContext() { + return this.als.getStore() !== undefined; + } + get(key) { + return this.als.getStore()?.[key]; + } + set(key, value) { + if (this.isProtectedKey(key)) { + throw new Error(`Cannot modify protected Lambda context field: ${String(key)}`); + } + const store = this.als.getStore(); + if (!store) { + throw new Error("No context available"); + } + store[key] = value; + } + run(context, fn) { + return this.als.run(context, fn); + } +} +exports.InvokeStore = void 0; +(function (InvokeStore) { + let instance = null; + async function getInstanceAsync(forceInvokeStoreMulti) { + if (!instance) { + instance = (async () => { + const isMulti = forceInvokeStoreMulti === true || "AWS_LAMBDA_MAX_CONCURRENCY" in process.env; + const newInstance = isMulti + ? await InvokeStoreMulti.create() + : new InvokeStoreSingle(); + if (!NO_GLOBAL_AWS_LAMBDA && globalThis.awslambda?.InvokeStore) { + return globalThis.awslambda.InvokeStore; + } + else if (!NO_GLOBAL_AWS_LAMBDA && globalThis.awslambda) { + globalThis.awslambda.InvokeStore = newInstance; + return newInstance; + } + else { + return newInstance; + } + })(); + } + return instance; + } + InvokeStore.getInstanceAsync = getInstanceAsync; + InvokeStore._testing = process.env.AWS_LAMBDA_BENCHMARK_MODE === "1" + ? { + reset: () => { + instance = null; + if (globalThis.awslambda?.InvokeStore) { + delete globalThis.awslambda.InvokeStore; + } + globalThis.awslambda = { InvokeStore: undefined }; + }, + } + : undefined; +})(exports.InvokeStore || (exports.InvokeStore = {})); + +exports.InvokeStoreBase = InvokeStoreBase; diff --git a/food-ordering-app/server/node_modules/@aws/lambda-invoke-store/dist-es/invoke-store.js b/food-ordering-app/server/node_modules/@aws/lambda-invoke-store/dist-es/invoke-store.js new file mode 100644 index 000000000..b0f9d49fe --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws/lambda-invoke-store/dist-es/invoke-store.js @@ -0,0 +1,117 @@ +const PROTECTED_KEYS = { + REQUEST_ID: Symbol.for("_AWS_LAMBDA_REQUEST_ID"), + X_RAY_TRACE_ID: Symbol.for("_AWS_LAMBDA_X_RAY_TRACE_ID"), + TENANT_ID: Symbol.for("_AWS_LAMBDA_TENANT_ID"), +}; +const NO_GLOBAL_AWS_LAMBDA = ["true", "1"].includes(process.env?.AWS_LAMBDA_NODEJS_NO_GLOBAL_AWSLAMBDA ?? ""); +if (!NO_GLOBAL_AWS_LAMBDA) { + globalThis.awslambda = globalThis.awslambda || {}; +} +class InvokeStoreBase { + static PROTECTED_KEYS = PROTECTED_KEYS; + isProtectedKey(key) { + return Object.values(PROTECTED_KEYS).includes(key); + } + getRequestId() { + return this.get(PROTECTED_KEYS.REQUEST_ID) ?? "-"; + } + getXRayTraceId() { + return this.get(PROTECTED_KEYS.X_RAY_TRACE_ID); + } + getTenantId() { + return this.get(PROTECTED_KEYS.TENANT_ID); + } +} +class InvokeStoreSingle extends InvokeStoreBase { + currentContext; + getContext() { + return this.currentContext; + } + hasContext() { + return this.currentContext !== undefined; + } + get(key) { + return this.currentContext?.[key]; + } + set(key, value) { + if (this.isProtectedKey(key)) { + throw new Error(`Cannot modify protected Lambda context field: ${String(key)}`); + } + this.currentContext = this.currentContext || {}; + this.currentContext[key] = value; + } + run(context, fn) { + this.currentContext = context; + return fn(); + } +} +class InvokeStoreMulti extends InvokeStoreBase { + als; + static async create() { + const instance = new InvokeStoreMulti(); + const asyncHooks = await import('node:async_hooks'); + instance.als = new asyncHooks.AsyncLocalStorage(); + return instance; + } + getContext() { + return this.als.getStore(); + } + hasContext() { + return this.als.getStore() !== undefined; + } + get(key) { + return this.als.getStore()?.[key]; + } + set(key, value) { + if (this.isProtectedKey(key)) { + throw new Error(`Cannot modify protected Lambda context field: ${String(key)}`); + } + const store = this.als.getStore(); + if (!store) { + throw new Error("No context available"); + } + store[key] = value; + } + run(context, fn) { + return this.als.run(context, fn); + } +} +var InvokeStore; +(function (InvokeStore) { + let instance = null; + async function getInstanceAsync(forceInvokeStoreMulti) { + if (!instance) { + instance = (async () => { + const isMulti = forceInvokeStoreMulti === true || "AWS_LAMBDA_MAX_CONCURRENCY" in process.env; + const newInstance = isMulti + ? await InvokeStoreMulti.create() + : new InvokeStoreSingle(); + if (!NO_GLOBAL_AWS_LAMBDA && globalThis.awslambda?.InvokeStore) { + return globalThis.awslambda.InvokeStore; + } + else if (!NO_GLOBAL_AWS_LAMBDA && globalThis.awslambda) { + globalThis.awslambda.InvokeStore = newInstance; + return newInstance; + } + else { + return newInstance; + } + })(); + } + return instance; + } + InvokeStore.getInstanceAsync = getInstanceAsync; + InvokeStore._testing = process.env.AWS_LAMBDA_BENCHMARK_MODE === "1" + ? { + reset: () => { + instance = null; + if (globalThis.awslambda?.InvokeStore) { + delete globalThis.awslambda.InvokeStore; + } + globalThis.awslambda = { InvokeStore: undefined }; + }, + } + : undefined; +})(InvokeStore || (InvokeStore = {})); + +export { InvokeStore, InvokeStoreBase }; diff --git a/food-ordering-app/server/node_modules/@aws/lambda-invoke-store/dist-types/invoke-store.benchmark.d.ts b/food-ordering-app/server/node_modules/@aws/lambda-invoke-store/dist-types/invoke-store.benchmark.d.ts new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws/lambda-invoke-store/dist-types/invoke-store.benchmark.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@aws/lambda-invoke-store/dist-types/invoke-store.d.ts b/food-ordering-app/server/node_modules/@aws/lambda-invoke-store/dist-types/invoke-store.d.ts new file mode 100644 index 000000000..071dfde02 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws/lambda-invoke-store/dist-types/invoke-store.d.ts @@ -0,0 +1,49 @@ +interface Context { + [key: string]: unknown; + [key: symbol]: unknown; +} +declare global { + namespace awslambda { + let InvokeStore: InvokeStoreBase | undefined; + } +} +/** + * Base class for AWS Lambda context storage implementations. + * Provides core functionality for managing Lambda execution context. + * + * Implementations handle either single-context (InvokeStoreSingle) or + * multi-context (InvokeStoreMulti) scenarios based on Lambda's execution environment. + * + * @public + */ +export declare abstract class InvokeStoreBase { + static readonly PROTECTED_KEYS: { + readonly REQUEST_ID: symbol; + readonly X_RAY_TRACE_ID: symbol; + readonly TENANT_ID: symbol; + }; + abstract getContext(): Context | undefined; + abstract hasContext(): boolean; + abstract get(key: string | symbol): T | undefined; + abstract set(key: string | symbol, value: T): void; + abstract run(context: Context, fn: () => T): T; + protected isProtectedKey(key: string | symbol): boolean; + getRequestId(): string; + getXRayTraceId(): string | undefined; + getTenantId(): string | undefined; +} +/** + * Provides access to AWS Lambda execution context storage. + * Supports both single-context and multi-context environments through different implementations. + * + * The store manages protected Lambda context fields and allows storing/retrieving custom values + * within the execution context. + * @public + */ +export declare namespace InvokeStore { + function getInstanceAsync(forceInvokeStoreMulti?: boolean): Promise; + const _testing: { + reset: () => void; + } | undefined; +} +export {}; diff --git a/food-ordering-app/server/node_modules/@aws/lambda-invoke-store/package.json b/food-ordering-app/server/node_modules/@aws/lambda-invoke-store/package.json new file mode 100644 index 000000000..30d6d5e99 --- /dev/null +++ b/food-ordering-app/server/node_modules/@aws/lambda-invoke-store/package.json @@ -0,0 +1,55 @@ +{ + "name": "@aws/lambda-invoke-store", + "version": "0.2.4", + "description": "Invoke scoped data storage for AWS Lambda Node.js Runtime Environment", + "homepage": "https://github.com/awslabs/aws-lambda-invoke-store", + "main": "./dist-cjs/invoke-store.js", + "types": "./dist-types/invoke-store.d.ts", + "module": "./dist-es/invoke-store.js", + "exports": { + ".": { + "types": "./dist-types/invoke-store.d.ts", + "module": "./dist-es/invoke-store.js", + "node": "./dist-cjs/invoke-store.js", + "import": "./dist-es/invoke-store.js", + "require": "./dist-cjs/invoke-store.js" + } + }, + "files": [ + "dist-es", + "dist-cjs", + "dist-types" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/awslabs/aws-lambda-invoke-store.git" + }, + "license": "Apache-2.0", + "author": { + "name": "Amazon Web Services", + "url": "http://aws.amazon.com" + }, + "scripts": { + "build": "yarn clean && yarn build:types && node ./scripts/build-rollup.js", + "build:types": "tsc -p tsconfig.types.json", + "clean": "rm -rf dist-types dist-cjs dist-es", + "test": "vitest run --reporter verbose", + "test:watch": "vitest watch", + "release": "yarn build && changeset publish" + }, + "devDependencies": { + "@changesets/cli": "^2.29.6", + "@rollup/plugin-node-resolve": "^16.0.3", + "@rollup/plugin-typescript": "^12.3.0", + "@tsconfig/node18": "^18.2.4", + "@types/node": "^18.19.130", + "rollup": "^4.52.5", + "tslib": "^2.8.1", + "typescript": "^5.9.3", + "vitest": "^3.1.1" + }, + "engines": { + "node": ">=18.0.0" + }, + "packageManager": "yarn@4.9.4" +} diff --git a/food-ordering-app/server/node_modules/saslprep/LICENSE b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/LICENSE similarity index 100% rename from food-ordering-app/server/node_modules/saslprep/LICENSE rename to food-ordering-app/server/node_modules/@mongodb-js/saslprep/LICENSE diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/.esm-wrapper.mjs b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/.esm-wrapper.mjs new file mode 100644 index 000000000..0b46bfa63 --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/.esm-wrapper.mjs @@ -0,0 +1,4 @@ +import mod from "./node.js"; + +export default mod; +export const saslprep = mod.saslprep; diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/browser.d.ts b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/browser.d.ts new file mode 100644 index 000000000..1c70d492e --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/browser.d.ts @@ -0,0 +1,5 @@ +declare const saslprep: (input: string, opts?: { + allowUnassigned?: boolean; +} | undefined) => string; +export = saslprep; +//# sourceMappingURL=browser.d.ts.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/browser.d.ts.map b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/browser.d.ts.map new file mode 100644 index 000000000..669fc6433 --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/browser.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,QAAQ;;wBAAmC,CAAC;AAIlD,SAAS,QAAQ,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/browser.js b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/browser.js new file mode 100644 index 000000000..1bedd860e --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/browser.js @@ -0,0 +1,12 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +const index_1 = __importDefault(require("./index")); +const memory_code_points_1 = require("./memory-code-points"); +const code_points_data_browser_1 = __importDefault(require("./code-points-data-browser")); +const codePoints = (0, memory_code_points_1.createMemoryCodePoints)(code_points_data_browser_1.default); +const saslprep = index_1.default.bind(null, codePoints); +Object.assign(saslprep, { saslprep, default: saslprep }); +module.exports = saslprep; +//# sourceMappingURL=browser.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/browser.js.map b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/browser.js.map new file mode 100644 index 000000000..40edf44be --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/browser.js.map @@ -0,0 +1 @@ +{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":";;;;AAAA,oDAAgC;AAChC,6DAA8D;AAC9D,0FAA8C;AAE9C,MAAM,UAAU,GAAG,IAAA,2CAAsB,EAAC,kCAAI,CAAC,CAAC;AAEhD,MAAM,QAAQ,GAAG,eAAS,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAElD,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;AAEzD,iBAAS,QAAQ,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.d.ts b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.d.ts new file mode 100644 index 000000000..85013da34 --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.d.ts @@ -0,0 +1,3 @@ +declare const data: Buffer; +export default data; +//# sourceMappingURL=code-points-data-browser.d.ts.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.d.ts.map b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.d.ts.map new file mode 100644 index 000000000..b83694753 --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"code-points-data-browser.d.ts","sourceRoot":"","sources":["../src/code-points-data-browser.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,IAAI,qBAGT,CAAC;AACF,eAAe,IAAI,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.js b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.js new file mode 100644 index 000000000..5ea963551 --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const data = Buffer.from('AAHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAP////AAAAAAAAAAAAAAADAAAAAAAAAAH//wAAAAAAAAAAAAD//wAA893wFAAAIAAAAAABAAAAAAH/AAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAEAAAAAAz8AAP////+AAAAAAYCAAAAAAJ+AACAAACAH/wAAAB8H///3/+6AAAAfAAAD/wAAAAAAAAAAAAAAAAAAAAAAAwABAAIAAAAHAAAAH////////wAAAAAAAD///////////////////////////////////////////////////////4gAAAAAAAAwAAMHAAAAf/+IBmAAAEBcNAZj/vIMAAAf2B5gAABASTQeY/+F/AAH/4gKIAAAQEgwAiN//3wA//+IBmAAAEBMMA5j/PI8AH//yBxDlOccAjwcQ/7//gAf/4gEQAAAQAg8BEP5/zwA///IBEAAAEAIPARD+f08AP//yARAAABAADwMQ/7/PAD//8gAAcAAACALAd4FAP//x/+AAAAAAAAAHgAAAA//////llvwgIrIACMFAwAz/////wAAAAAAAAAAAIAAAAAfgAAADwCAAAAABAAG////////AAAAACCQHD8AAAA///////////8AAAAAA/8AAAAAAG8AAAAAAAAAAAAAAD4AAAAAAAAAAB8AAAAAAAAAAAAAPwEAAAAAAAAAAUMBQwAAAAABQwAAAAFDAUMBAQAAAQAAAAFDAQAAAAABAAAfgAAAB/////8AAAAAAAAAAAAAB/+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/wAAAAcAAAAAAAAAAAAAf/8ABAf/AAAB/wAAD/8ABE//AAAAAAAAAAAAAAAHAD///wABAD8AAAAAAAAAAAAAAP8AAAAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAA/AAADAwAAAAADAwCqAAAAAwAAAAAAAAQABAAMCAAAxAEAAAAAAAAAAAAAHv4PwDAAAAH//wAAP////wAAAB///wAAAAAAAAAYAA/gAAAAAAAP/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf///////wAAAAAB////AB///wAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyAAAAAAAAAAAAAAAADAD///////////////////4QwAAAAgAAAAAodAYAAAAAAAAcAAACAAf//AAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAACAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///8ADwAAAAAAAAAAgAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAA+AAAAAAHgAAAAAAAAAAAAAABAAAAAAD/////////AAAAAAAHAAAAAA//gAAAAAAOAAAAAAAAAAAADwAAAAAAAQAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAB////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAB////////////////////////8B/+D4AAABBSQAAAAAAAAAAAAAAAAAP////+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAwAAAAAAAAP8AAAAAAAcAAP//D/8AAAGAEAABDwQAAAAAAAAAAAAAAAAAAAAABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcDAwMcBAf+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAAAQ//AAAAH/////////////////////////////8AAAAAAwAAAAAD//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/wAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////////////////////////////////////////////////////////////////////////////wAAAAAAAAAAAAAEAAAAAAAAAAAE2YQAKEgAAAAAAAAAAhgEBAAAACEFwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAA//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////y/////AAAAAAAAAAAAAAAA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//AAAAABAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIAD/////AAAAAAAAAAAAAAAB/////4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAD/AAAAAAAB8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKQAP///+D4AAAAABF////g/+AAAAAHf////////////////AQGAAA+//y////4AAAAAAAAAAAAAP/////8AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF/7/++tv/////////////////wAAAAB////////////////////////////////////////////////////////////wAAP//////////P////////wAAAAAA//gAAAAAAAAAAAAAAAAAAPv/////////////////////+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIgAAAAAAAAAAAAf///4H///+AAAAAAACAEIP///v////7/////////////////////////////////////////////////v//wAAAA///////////////8/5/AAMAA+AIAAAAAAAAAAAAAAAAAAAAAACAC6///3//////+//////wA/////////////////////+A///////////7//////MD//wAAAAB//////n9//////0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABf////////HgHiA/8//gAA3+Z///7+jw4GYAQ3D/8/gB+Gf//+/tsOAAAB6A/84ABf13///v7fHgFiAAIP/AAA3+Z///7+zxoGYAQ3D/4AAF+O8axjj/cNjuAEAAf/gAHf7v///v/fAeAAAAMP/AAA3+7///7/3wvmwBgLD/wAAN/u///+//8ODuAEAw/8AADf//j///9/0/gHA/wAAOAB///////+wAP4B//AAAAAAaaQPf3U3sAT6AP/MAAAAAP///z////qD/3/////gAAEE8AAAAAAAA/35AAAAAAAA/////99oQID///8AAAAAAAAAAAD//////AD//////5D//////////////8H//////////+D/////////////wP7//////////rz+vP/////+vP////68/rz+/v///v////68/v/////+///gf///+AAAAAD/////////////+AB////////////////////////////////////////////////////////////////////////////////////////////////////////+AH///+D/////////////gAD/+8AA///GAP//wAD/+4AA/////////gP9gA/o/8AAAAAA/8D//////////////wD//////4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/////////////////////////w///////////////A///8/P/////8/P9V/////P////////v6O/jz8P/4O/gAAgAAAAAAAAAAAAAAAEABAAAAAAAAAAAAAAAAAAAAACE/9HwKvd/HB8AAAP/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////gAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAB/wHz4f/////////////4Hf//////////////vB//////4f//////////////+//////8AAAAAAAAA///////4//////AAAAD////x////////gAD/8P///////v///////////////////h////////////////z////+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAAAAAAAAAAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAAAAAAAAAAAAA//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAAAAAAAAAAAAAP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8/////////+AAAAAAAAAAAAAAAAAAAAAAAAD+AB8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB////gf///4AP//////////////j8/PzgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////vAA////4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////P/////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////////////////////////////////////////8AP/////+P/////////4/4AAYD////8P///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/////////////7///////////7Jnv/17f//////////ef7+////976P7////////////////////////////////////////////////////////D////////////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////////////////////////////////////////////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////w=', 'base64'); +exports.default = data; +//# sourceMappingURL=code-points-data-browser.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.js.map b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.js.map new file mode 100644 index 000000000..feba4779b --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.js.map @@ -0,0 +1 @@ +{"version":3,"file":"code-points-data-browser.js","sourceRoot":"","sources":["../src/code-points-data-browser.ts"],"names":[],"mappings":";;AAAA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CACtB,8sliBAA8sliB,EAC9sliB,QAAQ,CACT,CAAC;AACF,kBAAe,IAAI,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-data.d.ts b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-data.d.ts new file mode 100644 index 000000000..eb93246e0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-data.d.ts @@ -0,0 +1,3 @@ +declare const _default: Buffer; +export default _default; +//# sourceMappingURL=code-points-data.d.ts.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-data.d.ts.map b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-data.d.ts.map new file mode 100644 index 000000000..62c29e29c --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-data.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"code-points-data.d.ts","sourceRoot":"","sources":["../src/code-points-data.ts"],"names":[],"mappings":";AAEA,wBAKE"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-data.js b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-data.js new file mode 100644 index 000000000..6af9a89b9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-data.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const zlib_1 = require("zlib"); +exports.default = (0, zlib_1.gunzipSync)(Buffer.from('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', 'base64')); +//# sourceMappingURL=code-points-data.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-data.js.map b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-data.js.map new file mode 100644 index 000000000..1da1c5500 --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-data.js.map @@ -0,0 +1 @@ +{"version":3,"file":"code-points-data.js","sourceRoot":"","sources":["../src/code-points-data.ts"],"names":[],"mappings":";;AAAA,+BAAkC;AAElC,kBAAe,IAAA,iBAAU,EACvB,MAAM,CAAC,IAAI,CACT,knFAAknF,EAClnF,QAAQ,CACT,CACF,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-src.d.ts b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-src.d.ts new file mode 100644 index 000000000..36b6c5650 --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-src.d.ts @@ -0,0 +1,7 @@ +export declare const unassigned_code_points: Set; +export declare const commonly_mapped_to_nothing: Set; +export declare const non_ASCII_space_characters: Set; +export declare const prohibited_characters: Set; +export declare const bidirectional_r_al: Set; +export declare const bidirectional_l: Set; +//# sourceMappingURL=code-points-src.d.ts.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-src.d.ts.map b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-src.d.ts.map new file mode 100644 index 000000000..ef0e6947b --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-src.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"code-points-src.d.ts","sourceRoot":"","sources":["../src/code-points-src.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,sBAAsB,aA6YjC,CAAC;AAMH,eAAO,MAAM,0BAA0B,aAIrC,CAAC;AAMH,eAAO,MAAM,0BAA0B,aASrC,CAAC;AAMH,eAAO,MAAM,qBAAqB,aA6GhC,CAAC;AAMH,eAAO,MAAM,kBAAkB,aAmC7B,CAAC;AAMH,eAAO,MAAM,eAAe,aAyW1B,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-src.js b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-src.js new file mode 100644 index 000000000..2caa62978 --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-src.js @@ -0,0 +1,881 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.bidirectional_l = exports.bidirectional_r_al = exports.prohibited_characters = exports.non_ASCII_space_characters = exports.commonly_mapped_to_nothing = exports.unassigned_code_points = void 0; +const util_1 = require("./util"); +exports.unassigned_code_points = new Set([ + 0x0221, + ...(0, util_1.range)(0x0234, 0x024f), + ...(0, util_1.range)(0x02ae, 0x02af), + ...(0, util_1.range)(0x02ef, 0x02ff), + ...(0, util_1.range)(0x0350, 0x035f), + ...(0, util_1.range)(0x0370, 0x0373), + ...(0, util_1.range)(0x0376, 0x0379), + ...(0, util_1.range)(0x037b, 0x037d), + ...(0, util_1.range)(0x037f, 0x0383), + 0x038b, + 0x038d, + 0x03a2, + 0x03cf, + ...(0, util_1.range)(0x03f7, 0x03ff), + 0x0487, + 0x04cf, + ...(0, util_1.range)(0x04f6, 0x04f7), + ...(0, util_1.range)(0x04fa, 0x04ff), + ...(0, util_1.range)(0x0510, 0x0530), + ...(0, util_1.range)(0x0557, 0x0558), + 0x0560, + 0x0588, + ...(0, util_1.range)(0x058b, 0x0590), + 0x05a2, + 0x05ba, + ...(0, util_1.range)(0x05c5, 0x05cf), + ...(0, util_1.range)(0x05eb, 0x05ef), + ...(0, util_1.range)(0x05f5, 0x060b), + ...(0, util_1.range)(0x060d, 0x061a), + ...(0, util_1.range)(0x061c, 0x061e), + 0x0620, + ...(0, util_1.range)(0x063b, 0x063f), + ...(0, util_1.range)(0x0656, 0x065f), + ...(0, util_1.range)(0x06ee, 0x06ef), + 0x06ff, + 0x070e, + ...(0, util_1.range)(0x072d, 0x072f), + ...(0, util_1.range)(0x074b, 0x077f), + ...(0, util_1.range)(0x07b2, 0x0900), + 0x0904, + ...(0, util_1.range)(0x093a, 0x093b), + ...(0, util_1.range)(0x094e, 0x094f), + ...(0, util_1.range)(0x0955, 0x0957), + ...(0, util_1.range)(0x0971, 0x0980), + 0x0984, + ...(0, util_1.range)(0x098d, 0x098e), + ...(0, util_1.range)(0x0991, 0x0992), + 0x09a9, + 0x09b1, + ...(0, util_1.range)(0x09b3, 0x09b5), + ...(0, util_1.range)(0x09ba, 0x09bb), + 0x09bd, + ...(0, util_1.range)(0x09c5, 0x09c6), + ...(0, util_1.range)(0x09c9, 0x09ca), + ...(0, util_1.range)(0x09ce, 0x09d6), + ...(0, util_1.range)(0x09d8, 0x09db), + 0x09de, + ...(0, util_1.range)(0x09e4, 0x09e5), + ...(0, util_1.range)(0x09fb, 0x0a01), + ...(0, util_1.range)(0x0a03, 0x0a04), + ...(0, util_1.range)(0x0a0b, 0x0a0e), + ...(0, util_1.range)(0x0a11, 0x0a12), + 0x0a29, + 0x0a31, + 0x0a34, + 0x0a37, + ...(0, util_1.range)(0x0a3a, 0x0a3b), + 0x0a3d, + ...(0, util_1.range)(0x0a43, 0x0a46), + ...(0, util_1.range)(0x0a49, 0x0a4a), + ...(0, util_1.range)(0x0a4e, 0x0a58), + 0x0a5d, + ...(0, util_1.range)(0x0a5f, 0x0a65), + ...(0, util_1.range)(0x0a75, 0x0a80), + 0x0a84, + 0x0a8c, + 0x0a8e, + 0x0a92, + 0x0aa9, + 0x0ab1, + 0x0ab4, + ...(0, util_1.range)(0x0aba, 0x0abb), + 0x0ac6, + 0x0aca, + ...(0, util_1.range)(0x0ace, 0x0acf), + ...(0, util_1.range)(0x0ad1, 0x0adf), + ...(0, util_1.range)(0x0ae1, 0x0ae5), + ...(0, util_1.range)(0x0af0, 0x0b00), + 0x0b04, + ...(0, util_1.range)(0x0b0d, 0x0b0e), + ...(0, util_1.range)(0x0b11, 0x0b12), + 0x0b29, + 0x0b31, + ...(0, util_1.range)(0x0b34, 0x0b35), + ...(0, util_1.range)(0x0b3a, 0x0b3b), + ...(0, util_1.range)(0x0b44, 0x0b46), + ...(0, util_1.range)(0x0b49, 0x0b4a), + ...(0, util_1.range)(0x0b4e, 0x0b55), + ...(0, util_1.range)(0x0b58, 0x0b5b), + 0x0b5e, + ...(0, util_1.range)(0x0b62, 0x0b65), + ...(0, util_1.range)(0x0b71, 0x0b81), + 0x0b84, + ...(0, util_1.range)(0x0b8b, 0x0b8d), + 0x0b91, + ...(0, util_1.range)(0x0b96, 0x0b98), + 0x0b9b, + 0x0b9d, + ...(0, util_1.range)(0x0ba0, 0x0ba2), + ...(0, util_1.range)(0x0ba5, 0x0ba7), + ...(0, util_1.range)(0x0bab, 0x0bad), + 0x0bb6, + ...(0, util_1.range)(0x0bba, 0x0bbd), + ...(0, util_1.range)(0x0bc3, 0x0bc5), + 0x0bc9, + ...(0, util_1.range)(0x0bce, 0x0bd6), + ...(0, util_1.range)(0x0bd8, 0x0be6), + ...(0, util_1.range)(0x0bf3, 0x0c00), + 0x0c04, + 0x0c0d, + 0x0c11, + 0x0c29, + 0x0c34, + ...(0, util_1.range)(0x0c3a, 0x0c3d), + 0x0c45, + 0x0c49, + ...(0, util_1.range)(0x0c4e, 0x0c54), + ...(0, util_1.range)(0x0c57, 0x0c5f), + ...(0, util_1.range)(0x0c62, 0x0c65), + ...(0, util_1.range)(0x0c70, 0x0c81), + 0x0c84, + 0x0c8d, + 0x0c91, + 0x0ca9, + 0x0cb4, + ...(0, util_1.range)(0x0cba, 0x0cbd), + 0x0cc5, + 0x0cc9, + ...(0, util_1.range)(0x0cce, 0x0cd4), + ...(0, util_1.range)(0x0cd7, 0x0cdd), + 0x0cdf, + ...(0, util_1.range)(0x0ce2, 0x0ce5), + ...(0, util_1.range)(0x0cf0, 0x0d01), + 0x0d04, + 0x0d0d, + 0x0d11, + 0x0d29, + ...(0, util_1.range)(0x0d3a, 0x0d3d), + ...(0, util_1.range)(0x0d44, 0x0d45), + 0x0d49, + ...(0, util_1.range)(0x0d4e, 0x0d56), + ...(0, util_1.range)(0x0d58, 0x0d5f), + ...(0, util_1.range)(0x0d62, 0x0d65), + ...(0, util_1.range)(0x0d70, 0x0d81), + 0x0d84, + ...(0, util_1.range)(0x0d97, 0x0d99), + 0x0db2, + 0x0dbc, + ...(0, util_1.range)(0x0dbe, 0x0dbf), + ...(0, util_1.range)(0x0dc7, 0x0dc9), + ...(0, util_1.range)(0x0dcb, 0x0dce), + 0x0dd5, + 0x0dd7, + ...(0, util_1.range)(0x0de0, 0x0df1), + ...(0, util_1.range)(0x0df5, 0x0e00), + ...(0, util_1.range)(0x0e3b, 0x0e3e), + ...(0, util_1.range)(0x0e5c, 0x0e80), + 0x0e83, + ...(0, util_1.range)(0x0e85, 0x0e86), + 0x0e89, + ...(0, util_1.range)(0x0e8b, 0x0e8c), + ...(0, util_1.range)(0x0e8e, 0x0e93), + 0x0e98, + 0x0ea0, + 0x0ea4, + 0x0ea6, + ...(0, util_1.range)(0x0ea8, 0x0ea9), + 0x0eac, + 0x0eba, + ...(0, util_1.range)(0x0ebe, 0x0ebf), + 0x0ec5, + 0x0ec7, + ...(0, util_1.range)(0x0ece, 0x0ecf), + ...(0, util_1.range)(0x0eda, 0x0edb), + ...(0, util_1.range)(0x0ede, 0x0eff), + 0x0f48, + ...(0, util_1.range)(0x0f6b, 0x0f70), + ...(0, util_1.range)(0x0f8c, 0x0f8f), + 0x0f98, + 0x0fbd, + ...(0, util_1.range)(0x0fcd, 0x0fce), + ...(0, util_1.range)(0x0fd0, 0x0fff), + 0x1022, + 0x1028, + 0x102b, + ...(0, util_1.range)(0x1033, 0x1035), + ...(0, util_1.range)(0x103a, 0x103f), + ...(0, util_1.range)(0x105a, 0x109f), + ...(0, util_1.range)(0x10c6, 0x10cf), + ...(0, util_1.range)(0x10f9, 0x10fa), + ...(0, util_1.range)(0x10fc, 0x10ff), + ...(0, util_1.range)(0x115a, 0x115e), + ...(0, util_1.range)(0x11a3, 0x11a7), + ...(0, util_1.range)(0x11fa, 0x11ff), + 0x1207, + 0x1247, + 0x1249, + ...(0, util_1.range)(0x124e, 0x124f), + 0x1257, + 0x1259, + ...(0, util_1.range)(0x125e, 0x125f), + 0x1287, + 0x1289, + ...(0, util_1.range)(0x128e, 0x128f), + 0x12af, + 0x12b1, + ...(0, util_1.range)(0x12b6, 0x12b7), + 0x12bf, + 0x12c1, + ...(0, util_1.range)(0x12c6, 0x12c7), + 0x12cf, + 0x12d7, + 0x12ef, + 0x130f, + 0x1311, + ...(0, util_1.range)(0x1316, 0x1317), + 0x131f, + 0x1347, + ...(0, util_1.range)(0x135b, 0x1360), + ...(0, util_1.range)(0x137d, 0x139f), + ...(0, util_1.range)(0x13f5, 0x1400), + ...(0, util_1.range)(0x1677, 0x167f), + ...(0, util_1.range)(0x169d, 0x169f), + ...(0, util_1.range)(0x16f1, 0x16ff), + 0x170d, + ...(0, util_1.range)(0x1715, 0x171f), + ...(0, util_1.range)(0x1737, 0x173f), + ...(0, util_1.range)(0x1754, 0x175f), + 0x176d, + 0x1771, + ...(0, util_1.range)(0x1774, 0x177f), + ...(0, util_1.range)(0x17dd, 0x17df), + ...(0, util_1.range)(0x17ea, 0x17ff), + 0x180f, + ...(0, util_1.range)(0x181a, 0x181f), + ...(0, util_1.range)(0x1878, 0x187f), + ...(0, util_1.range)(0x18aa, 0x1dff), + ...(0, util_1.range)(0x1e9c, 0x1e9f), + ...(0, util_1.range)(0x1efa, 0x1eff), + ...(0, util_1.range)(0x1f16, 0x1f17), + ...(0, util_1.range)(0x1f1e, 0x1f1f), + ...(0, util_1.range)(0x1f46, 0x1f47), + ...(0, util_1.range)(0x1f4e, 0x1f4f), + 0x1f58, + 0x1f5a, + 0x1f5c, + 0x1f5e, + ...(0, util_1.range)(0x1f7e, 0x1f7f), + 0x1fb5, + 0x1fc5, + ...(0, util_1.range)(0x1fd4, 0x1fd5), + 0x1fdc, + ...(0, util_1.range)(0x1ff0, 0x1ff1), + 0x1ff5, + 0x1fff, + ...(0, util_1.range)(0x2053, 0x2056), + ...(0, util_1.range)(0x2058, 0x205e), + ...(0, util_1.range)(0x2064, 0x2069), + ...(0, util_1.range)(0x2072, 0x2073), + ...(0, util_1.range)(0x208f, 0x209f), + ...(0, util_1.range)(0x20b2, 0x20cf), + ...(0, util_1.range)(0x20eb, 0x20ff), + ...(0, util_1.range)(0x213b, 0x213c), + ...(0, util_1.range)(0x214c, 0x2152), + ...(0, util_1.range)(0x2184, 0x218f), + ...(0, util_1.range)(0x23cf, 0x23ff), + ...(0, util_1.range)(0x2427, 0x243f), + ...(0, util_1.range)(0x244b, 0x245f), + 0x24ff, + ...(0, util_1.range)(0x2614, 0x2615), + 0x2618, + ...(0, util_1.range)(0x267e, 0x267f), + ...(0, util_1.range)(0x268a, 0x2700), + 0x2705, + ...(0, util_1.range)(0x270a, 0x270b), + 0x2728, + 0x274c, + 0x274e, + ...(0, util_1.range)(0x2753, 0x2755), + 0x2757, + ...(0, util_1.range)(0x275f, 0x2760), + ...(0, util_1.range)(0x2795, 0x2797), + 0x27b0, + ...(0, util_1.range)(0x27bf, 0x27cf), + ...(0, util_1.range)(0x27ec, 0x27ef), + ...(0, util_1.range)(0x2b00, 0x2e7f), + 0x2e9a, + ...(0, util_1.range)(0x2ef4, 0x2eff), + ...(0, util_1.range)(0x2fd6, 0x2fef), + ...(0, util_1.range)(0x2ffc, 0x2fff), + 0x3040, + ...(0, util_1.range)(0x3097, 0x3098), + ...(0, util_1.range)(0x3100, 0x3104), + ...(0, util_1.range)(0x312d, 0x3130), + 0x318f, + ...(0, util_1.range)(0x31b8, 0x31ef), + ...(0, util_1.range)(0x321d, 0x321f), + ...(0, util_1.range)(0x3244, 0x3250), + ...(0, util_1.range)(0x327c, 0x327e), + ...(0, util_1.range)(0x32cc, 0x32cf), + 0x32ff, + ...(0, util_1.range)(0x3377, 0x337a), + ...(0, util_1.range)(0x33de, 0x33df), + 0x33ff, + ...(0, util_1.range)(0x4db6, 0x4dff), + ...(0, util_1.range)(0x9fa6, 0x9fff), + ...(0, util_1.range)(0xa48d, 0xa48f), + ...(0, util_1.range)(0xa4c7, 0xabff), + ...(0, util_1.range)(0xd7a4, 0xd7ff), + ...(0, util_1.range)(0xfa2e, 0xfa2f), + ...(0, util_1.range)(0xfa6b, 0xfaff), + ...(0, util_1.range)(0xfb07, 0xfb12), + ...(0, util_1.range)(0xfb18, 0xfb1c), + 0xfb37, + 0xfb3d, + 0xfb3f, + 0xfb42, + 0xfb45, + ...(0, util_1.range)(0xfbb2, 0xfbd2), + ...(0, util_1.range)(0xfd40, 0xfd4f), + ...(0, util_1.range)(0xfd90, 0xfd91), + ...(0, util_1.range)(0xfdc8, 0xfdcf), + ...(0, util_1.range)(0xfdfd, 0xfdff), + ...(0, util_1.range)(0xfe10, 0xfe1f), + ...(0, util_1.range)(0xfe24, 0xfe2f), + ...(0, util_1.range)(0xfe47, 0xfe48), + 0xfe53, + 0xfe67, + ...(0, util_1.range)(0xfe6c, 0xfe6f), + 0xfe75, + ...(0, util_1.range)(0xfefd, 0xfefe), + 0xff00, + ...(0, util_1.range)(0xffbf, 0xffc1), + ...(0, util_1.range)(0xffc8, 0xffc9), + ...(0, util_1.range)(0xffd0, 0xffd1), + ...(0, util_1.range)(0xffd8, 0xffd9), + ...(0, util_1.range)(0xffdd, 0xffdf), + 0xffe7, + ...(0, util_1.range)(0xffef, 0xfff8), + ...(0, util_1.range)(0x10000, 0x102ff), + 0x1031f, + ...(0, util_1.range)(0x10324, 0x1032f), + ...(0, util_1.range)(0x1034b, 0x103ff), + ...(0, util_1.range)(0x10426, 0x10427), + ...(0, util_1.range)(0x1044e, 0x1cfff), + ...(0, util_1.range)(0x1d0f6, 0x1d0ff), + ...(0, util_1.range)(0x1d127, 0x1d129), + ...(0, util_1.range)(0x1d1de, 0x1d3ff), + 0x1d455, + 0x1d49d, + ...(0, util_1.range)(0x1d4a0, 0x1d4a1), + ...(0, util_1.range)(0x1d4a3, 0x1d4a4), + ...(0, util_1.range)(0x1d4a7, 0x1d4a8), + 0x1d4ad, + 0x1d4ba, + 0x1d4bc, + 0x1d4c1, + 0x1d4c4, + 0x1d506, + ...(0, util_1.range)(0x1d50b, 0x1d50c), + 0x1d515, + 0x1d51d, + 0x1d53a, + 0x1d53f, + 0x1d545, + ...(0, util_1.range)(0x1d547, 0x1d549), + 0x1d551, + ...(0, util_1.range)(0x1d6a4, 0x1d6a7), + ...(0, util_1.range)(0x1d7ca, 0x1d7cd), + ...(0, util_1.range)(0x1d800, 0x1fffd), + ...(0, util_1.range)(0x2a6d7, 0x2f7ff), + ...(0, util_1.range)(0x2fa1e, 0x2fffd), + ...(0, util_1.range)(0x30000, 0x3fffd), + ...(0, util_1.range)(0x40000, 0x4fffd), + ...(0, util_1.range)(0x50000, 0x5fffd), + ...(0, util_1.range)(0x60000, 0x6fffd), + ...(0, util_1.range)(0x70000, 0x7fffd), + ...(0, util_1.range)(0x80000, 0x8fffd), + ...(0, util_1.range)(0x90000, 0x9fffd), + ...(0, util_1.range)(0xa0000, 0xafffd), + ...(0, util_1.range)(0xb0000, 0xbfffd), + ...(0, util_1.range)(0xc0000, 0xcfffd), + ...(0, util_1.range)(0xd0000, 0xdfffd), + 0xe0000, + ...(0, util_1.range)(0xe0002, 0xe001f), + ...(0, util_1.range)(0xe0080, 0xefffd), +]); +exports.commonly_mapped_to_nothing = new Set([ + 0x00ad, 0x034f, 0x1806, 0x180b, 0x180c, 0x180d, 0x200b, 0x200c, 0x200d, + 0x2060, 0xfe00, 0xfe01, 0xfe02, 0xfe03, 0xfe04, 0xfe05, 0xfe06, 0xfe07, + 0xfe08, 0xfe09, 0xfe0a, 0xfe0b, 0xfe0c, 0xfe0d, 0xfe0e, 0xfe0f, 0xfeff, +]); +exports.non_ASCII_space_characters = new Set([ + 0x00a0, 0x1680, + 0x2000, 0x2001, 0x2002, + 0x2003, 0x2004, + 0x2005, 0x2006, + 0x2007, 0x2008, + 0x2009, 0x200a, + 0x200b, 0x202f, + 0x205f, 0x3000, +]); +exports.prohibited_characters = new Set([ + ...exports.non_ASCII_space_characters, + ...(0, util_1.range)(0, 0x001f), + 0x007f, + ...(0, util_1.range)(0x0080, 0x009f), + 0x06dd, + 0x070f, + 0x180e, + 0x200c, + 0x200d, + 0x2028, + 0x2029, + 0x2060, + 0x2061, + 0x2062, + 0x2063, + ...(0, util_1.range)(0x206a, 0x206f), + 0xfeff, + ...(0, util_1.range)(0xfff9, 0xfffc), + ...(0, util_1.range)(0x1d173, 0x1d17a), + ...(0, util_1.range)(0xe000, 0xf8ff), + ...(0, util_1.range)(0xf0000, 0xffffd), + ...(0, util_1.range)(0x100000, 0x10fffd), + ...(0, util_1.range)(0xfdd0, 0xfdef), + ...(0, util_1.range)(0xfffe, 0xffff), + ...(0, util_1.range)(0x1fffe, 0x1ffff), + ...(0, util_1.range)(0x2fffe, 0x2ffff), + ...(0, util_1.range)(0x3fffe, 0x3ffff), + ...(0, util_1.range)(0x4fffe, 0x4ffff), + ...(0, util_1.range)(0x5fffe, 0x5ffff), + ...(0, util_1.range)(0x6fffe, 0x6ffff), + ...(0, util_1.range)(0x7fffe, 0x7ffff), + ...(0, util_1.range)(0x8fffe, 0x8ffff), + ...(0, util_1.range)(0x9fffe, 0x9ffff), + ...(0, util_1.range)(0xafffe, 0xaffff), + ...(0, util_1.range)(0xbfffe, 0xbffff), + ...(0, util_1.range)(0xcfffe, 0xcffff), + ...(0, util_1.range)(0xdfffe, 0xdffff), + ...(0, util_1.range)(0xefffe, 0xeffff), + ...(0, util_1.range)(0x10fffe, 0x10ffff), + ...(0, util_1.range)(0xd800, 0xdfff), + 0xfff9, + 0xfffa, + 0xfffb, + 0xfffc, + 0xfffd, + ...(0, util_1.range)(0x2ff0, 0x2ffb), + 0x0340, + 0x0341, + 0x200e, + 0x200f, + 0x202a, + 0x202b, + 0x202c, + 0x202d, + 0x202e, + 0x206a, + 0x206b, + 0x206c, + 0x206d, + 0x206e, + 0x206f, + 0xe0001, + ...(0, util_1.range)(0xe0020, 0xe007f), +]); +exports.bidirectional_r_al = new Set([ + 0x05be, + 0x05c0, + 0x05c3, + ...(0, util_1.range)(0x05d0, 0x05ea), + ...(0, util_1.range)(0x05f0, 0x05f4), + 0x061b, + 0x061f, + ...(0, util_1.range)(0x0621, 0x063a), + ...(0, util_1.range)(0x0640, 0x064a), + ...(0, util_1.range)(0x066d, 0x066f), + ...(0, util_1.range)(0x0671, 0x06d5), + 0x06dd, + ...(0, util_1.range)(0x06e5, 0x06e6), + ...(0, util_1.range)(0x06fa, 0x06fe), + ...(0, util_1.range)(0x0700, 0x070d), + 0x0710, + ...(0, util_1.range)(0x0712, 0x072c), + ...(0, util_1.range)(0x0780, 0x07a5), + 0x07b1, + 0x200f, + 0xfb1d, + ...(0, util_1.range)(0xfb1f, 0xfb28), + ...(0, util_1.range)(0xfb2a, 0xfb36), + ...(0, util_1.range)(0xfb38, 0xfb3c), + 0xfb3e, + ...(0, util_1.range)(0xfb40, 0xfb41), + ...(0, util_1.range)(0xfb43, 0xfb44), + ...(0, util_1.range)(0xfb46, 0xfbb1), + ...(0, util_1.range)(0xfbd3, 0xfd3d), + ...(0, util_1.range)(0xfd50, 0xfd8f), + ...(0, util_1.range)(0xfd92, 0xfdc7), + ...(0, util_1.range)(0xfdf0, 0xfdfc), + ...(0, util_1.range)(0xfe70, 0xfe74), + ...(0, util_1.range)(0xfe76, 0xfefc), +]); +exports.bidirectional_l = new Set([ + ...(0, util_1.range)(0x0041, 0x005a), + ...(0, util_1.range)(0x0061, 0x007a), + 0x00aa, + 0x00b5, + 0x00ba, + ...(0, util_1.range)(0x00c0, 0x00d6), + ...(0, util_1.range)(0x00d8, 0x00f6), + ...(0, util_1.range)(0x00f8, 0x0220), + ...(0, util_1.range)(0x0222, 0x0233), + ...(0, util_1.range)(0x0250, 0x02ad), + ...(0, util_1.range)(0x02b0, 0x02b8), + ...(0, util_1.range)(0x02bb, 0x02c1), + ...(0, util_1.range)(0x02d0, 0x02d1), + ...(0, util_1.range)(0x02e0, 0x02e4), + 0x02ee, + 0x037a, + 0x0386, + ...(0, util_1.range)(0x0388, 0x038a), + 0x038c, + ...(0, util_1.range)(0x038e, 0x03a1), + ...(0, util_1.range)(0x03a3, 0x03ce), + ...(0, util_1.range)(0x03d0, 0x03f5), + ...(0, util_1.range)(0x0400, 0x0482), + ...(0, util_1.range)(0x048a, 0x04ce), + ...(0, util_1.range)(0x04d0, 0x04f5), + ...(0, util_1.range)(0x04f8, 0x04f9), + ...(0, util_1.range)(0x0500, 0x050f), + ...(0, util_1.range)(0x0531, 0x0556), + ...(0, util_1.range)(0x0559, 0x055f), + ...(0, util_1.range)(0x0561, 0x0587), + 0x0589, + 0x0903, + ...(0, util_1.range)(0x0905, 0x0939), + ...(0, util_1.range)(0x093d, 0x0940), + ...(0, util_1.range)(0x0949, 0x094c), + 0x0950, + ...(0, util_1.range)(0x0958, 0x0961), + ...(0, util_1.range)(0x0964, 0x0970), + ...(0, util_1.range)(0x0982, 0x0983), + ...(0, util_1.range)(0x0985, 0x098c), + ...(0, util_1.range)(0x098f, 0x0990), + ...(0, util_1.range)(0x0993, 0x09a8), + ...(0, util_1.range)(0x09aa, 0x09b0), + 0x09b2, + ...(0, util_1.range)(0x09b6, 0x09b9), + ...(0, util_1.range)(0x09be, 0x09c0), + ...(0, util_1.range)(0x09c7, 0x09c8), + ...(0, util_1.range)(0x09cb, 0x09cc), + 0x09d7, + ...(0, util_1.range)(0x09dc, 0x09dd), + ...(0, util_1.range)(0x09df, 0x09e1), + ...(0, util_1.range)(0x09e6, 0x09f1), + ...(0, util_1.range)(0x09f4, 0x09fa), + ...(0, util_1.range)(0x0a05, 0x0a0a), + ...(0, util_1.range)(0x0a0f, 0x0a10), + ...(0, util_1.range)(0x0a13, 0x0a28), + ...(0, util_1.range)(0x0a2a, 0x0a30), + ...(0, util_1.range)(0x0a32, 0x0a33), + ...(0, util_1.range)(0x0a35, 0x0a36), + ...(0, util_1.range)(0x0a38, 0x0a39), + ...(0, util_1.range)(0x0a3e, 0x0a40), + ...(0, util_1.range)(0x0a59, 0x0a5c), + 0x0a5e, + ...(0, util_1.range)(0x0a66, 0x0a6f), + ...(0, util_1.range)(0x0a72, 0x0a74), + 0x0a83, + ...(0, util_1.range)(0x0a85, 0x0a8b), + 0x0a8d, + ...(0, util_1.range)(0x0a8f, 0x0a91), + ...(0, util_1.range)(0x0a93, 0x0aa8), + ...(0, util_1.range)(0x0aaa, 0x0ab0), + ...(0, util_1.range)(0x0ab2, 0x0ab3), + ...(0, util_1.range)(0x0ab5, 0x0ab9), + ...(0, util_1.range)(0x0abd, 0x0ac0), + 0x0ac9, + ...(0, util_1.range)(0x0acb, 0x0acc), + 0x0ad0, + 0x0ae0, + ...(0, util_1.range)(0x0ae6, 0x0aef), + ...(0, util_1.range)(0x0b02, 0x0b03), + ...(0, util_1.range)(0x0b05, 0x0b0c), + ...(0, util_1.range)(0x0b0f, 0x0b10), + ...(0, util_1.range)(0x0b13, 0x0b28), + ...(0, util_1.range)(0x0b2a, 0x0b30), + ...(0, util_1.range)(0x0b32, 0x0b33), + ...(0, util_1.range)(0x0b36, 0x0b39), + ...(0, util_1.range)(0x0b3d, 0x0b3e), + 0x0b40, + ...(0, util_1.range)(0x0b47, 0x0b48), + ...(0, util_1.range)(0x0b4b, 0x0b4c), + 0x0b57, + ...(0, util_1.range)(0x0b5c, 0x0b5d), + ...(0, util_1.range)(0x0b5f, 0x0b61), + ...(0, util_1.range)(0x0b66, 0x0b70), + 0x0b83, + ...(0, util_1.range)(0x0b85, 0x0b8a), + ...(0, util_1.range)(0x0b8e, 0x0b90), + ...(0, util_1.range)(0x0b92, 0x0b95), + ...(0, util_1.range)(0x0b99, 0x0b9a), + 0x0b9c, + ...(0, util_1.range)(0x0b9e, 0x0b9f), + ...(0, util_1.range)(0x0ba3, 0x0ba4), + ...(0, util_1.range)(0x0ba8, 0x0baa), + ...(0, util_1.range)(0x0bae, 0x0bb5), + ...(0, util_1.range)(0x0bb7, 0x0bb9), + ...(0, util_1.range)(0x0bbe, 0x0bbf), + ...(0, util_1.range)(0x0bc1, 0x0bc2), + ...(0, util_1.range)(0x0bc6, 0x0bc8), + ...(0, util_1.range)(0x0bca, 0x0bcc), + 0x0bd7, + ...(0, util_1.range)(0x0be7, 0x0bf2), + ...(0, util_1.range)(0x0c01, 0x0c03), + ...(0, util_1.range)(0x0c05, 0x0c0c), + ...(0, util_1.range)(0x0c0e, 0x0c10), + ...(0, util_1.range)(0x0c12, 0x0c28), + ...(0, util_1.range)(0x0c2a, 0x0c33), + ...(0, util_1.range)(0x0c35, 0x0c39), + ...(0, util_1.range)(0x0c41, 0x0c44), + ...(0, util_1.range)(0x0c60, 0x0c61), + ...(0, util_1.range)(0x0c66, 0x0c6f), + ...(0, util_1.range)(0x0c82, 0x0c83), + ...(0, util_1.range)(0x0c85, 0x0c8c), + ...(0, util_1.range)(0x0c8e, 0x0c90), + ...(0, util_1.range)(0x0c92, 0x0ca8), + ...(0, util_1.range)(0x0caa, 0x0cb3), + ...(0, util_1.range)(0x0cb5, 0x0cb9), + 0x0cbe, + ...(0, util_1.range)(0x0cc0, 0x0cc4), + ...(0, util_1.range)(0x0cc7, 0x0cc8), + ...(0, util_1.range)(0x0cca, 0x0ccb), + ...(0, util_1.range)(0x0cd5, 0x0cd6), + 0x0cde, + ...(0, util_1.range)(0x0ce0, 0x0ce1), + ...(0, util_1.range)(0x0ce6, 0x0cef), + ...(0, util_1.range)(0x0d02, 0x0d03), + ...(0, util_1.range)(0x0d05, 0x0d0c), + ...(0, util_1.range)(0x0d0e, 0x0d10), + ...(0, util_1.range)(0x0d12, 0x0d28), + ...(0, util_1.range)(0x0d2a, 0x0d39), + ...(0, util_1.range)(0x0d3e, 0x0d40), + ...(0, util_1.range)(0x0d46, 0x0d48), + ...(0, util_1.range)(0x0d4a, 0x0d4c), + 0x0d57, + ...(0, util_1.range)(0x0d60, 0x0d61), + ...(0, util_1.range)(0x0d66, 0x0d6f), + ...(0, util_1.range)(0x0d82, 0x0d83), + ...(0, util_1.range)(0x0d85, 0x0d96), + ...(0, util_1.range)(0x0d9a, 0x0db1), + ...(0, util_1.range)(0x0db3, 0x0dbb), + 0x0dbd, + ...(0, util_1.range)(0x0dc0, 0x0dc6), + ...(0, util_1.range)(0x0dcf, 0x0dd1), + ...(0, util_1.range)(0x0dd8, 0x0ddf), + ...(0, util_1.range)(0x0df2, 0x0df4), + ...(0, util_1.range)(0x0e01, 0x0e30), + ...(0, util_1.range)(0x0e32, 0x0e33), + ...(0, util_1.range)(0x0e40, 0x0e46), + ...(0, util_1.range)(0x0e4f, 0x0e5b), + ...(0, util_1.range)(0x0e81, 0x0e82), + 0x0e84, + ...(0, util_1.range)(0x0e87, 0x0e88), + 0x0e8a, + 0x0e8d, + ...(0, util_1.range)(0x0e94, 0x0e97), + ...(0, util_1.range)(0x0e99, 0x0e9f), + ...(0, util_1.range)(0x0ea1, 0x0ea3), + 0x0ea5, + 0x0ea7, + ...(0, util_1.range)(0x0eaa, 0x0eab), + ...(0, util_1.range)(0x0ead, 0x0eb0), + ...(0, util_1.range)(0x0eb2, 0x0eb3), + 0x0ebd, + ...(0, util_1.range)(0x0ec0, 0x0ec4), + 0x0ec6, + ...(0, util_1.range)(0x0ed0, 0x0ed9), + ...(0, util_1.range)(0x0edc, 0x0edd), + ...(0, util_1.range)(0x0f00, 0x0f17), + ...(0, util_1.range)(0x0f1a, 0x0f34), + 0x0f36, + 0x0f38, + ...(0, util_1.range)(0x0f3e, 0x0f47), + ...(0, util_1.range)(0x0f49, 0x0f6a), + 0x0f7f, + 0x0f85, + ...(0, util_1.range)(0x0f88, 0x0f8b), + ...(0, util_1.range)(0x0fbe, 0x0fc5), + ...(0, util_1.range)(0x0fc7, 0x0fcc), + 0x0fcf, + ...(0, util_1.range)(0x1000, 0x1021), + ...(0, util_1.range)(0x1023, 0x1027), + ...(0, util_1.range)(0x1029, 0x102a), + 0x102c, + 0x1031, + 0x1038, + ...(0, util_1.range)(0x1040, 0x1057), + ...(0, util_1.range)(0x10a0, 0x10c5), + ...(0, util_1.range)(0x10d0, 0x10f8), + 0x10fb, + ...(0, util_1.range)(0x1100, 0x1159), + ...(0, util_1.range)(0x115f, 0x11a2), + ...(0, util_1.range)(0x11a8, 0x11f9), + ...(0, util_1.range)(0x1200, 0x1206), + ...(0, util_1.range)(0x1208, 0x1246), + 0x1248, + ...(0, util_1.range)(0x124a, 0x124d), + ...(0, util_1.range)(0x1250, 0x1256), + 0x1258, + ...(0, util_1.range)(0x125a, 0x125d), + ...(0, util_1.range)(0x1260, 0x1286), + 0x1288, + ...(0, util_1.range)(0x128a, 0x128d), + ...(0, util_1.range)(0x1290, 0x12ae), + 0x12b0, + ...(0, util_1.range)(0x12b2, 0x12b5), + ...(0, util_1.range)(0x12b8, 0x12be), + 0x12c0, + ...(0, util_1.range)(0x12c2, 0x12c5), + ...(0, util_1.range)(0x12c8, 0x12ce), + ...(0, util_1.range)(0x12d0, 0x12d6), + ...(0, util_1.range)(0x12d8, 0x12ee), + ...(0, util_1.range)(0x12f0, 0x130e), + 0x1310, + ...(0, util_1.range)(0x1312, 0x1315), + ...(0, util_1.range)(0x1318, 0x131e), + ...(0, util_1.range)(0x1320, 0x1346), + ...(0, util_1.range)(0x1348, 0x135a), + ...(0, util_1.range)(0x1361, 0x137c), + ...(0, util_1.range)(0x13a0, 0x13f4), + ...(0, util_1.range)(0x1401, 0x1676), + ...(0, util_1.range)(0x1681, 0x169a), + ...(0, util_1.range)(0x16a0, 0x16f0), + ...(0, util_1.range)(0x1700, 0x170c), + ...(0, util_1.range)(0x170e, 0x1711), + ...(0, util_1.range)(0x1720, 0x1731), + ...(0, util_1.range)(0x1735, 0x1736), + ...(0, util_1.range)(0x1740, 0x1751), + ...(0, util_1.range)(0x1760, 0x176c), + ...(0, util_1.range)(0x176e, 0x1770), + ...(0, util_1.range)(0x1780, 0x17b6), + ...(0, util_1.range)(0x17be, 0x17c5), + ...(0, util_1.range)(0x17c7, 0x17c8), + ...(0, util_1.range)(0x17d4, 0x17da), + 0x17dc, + ...(0, util_1.range)(0x17e0, 0x17e9), + ...(0, util_1.range)(0x1810, 0x1819), + ...(0, util_1.range)(0x1820, 0x1877), + ...(0, util_1.range)(0x1880, 0x18a8), + ...(0, util_1.range)(0x1e00, 0x1e9b), + ...(0, util_1.range)(0x1ea0, 0x1ef9), + ...(0, util_1.range)(0x1f00, 0x1f15), + ...(0, util_1.range)(0x1f18, 0x1f1d), + ...(0, util_1.range)(0x1f20, 0x1f45), + ...(0, util_1.range)(0x1f48, 0x1f4d), + ...(0, util_1.range)(0x1f50, 0x1f57), + 0x1f59, + 0x1f5b, + 0x1f5d, + ...(0, util_1.range)(0x1f5f, 0x1f7d), + ...(0, util_1.range)(0x1f80, 0x1fb4), + ...(0, util_1.range)(0x1fb6, 0x1fbc), + 0x1fbe, + ...(0, util_1.range)(0x1fc2, 0x1fc4), + ...(0, util_1.range)(0x1fc6, 0x1fcc), + ...(0, util_1.range)(0x1fd0, 0x1fd3), + ...(0, util_1.range)(0x1fd6, 0x1fdb), + ...(0, util_1.range)(0x1fe0, 0x1fec), + ...(0, util_1.range)(0x1ff2, 0x1ff4), + ...(0, util_1.range)(0x1ff6, 0x1ffc), + 0x200e, + 0x2071, + 0x207f, + 0x2102, + 0x2107, + ...(0, util_1.range)(0x210a, 0x2113), + 0x2115, + ...(0, util_1.range)(0x2119, 0x211d), + 0x2124, + 0x2126, + 0x2128, + ...(0, util_1.range)(0x212a, 0x212d), + ...(0, util_1.range)(0x212f, 0x2131), + ...(0, util_1.range)(0x2133, 0x2139), + ...(0, util_1.range)(0x213d, 0x213f), + ...(0, util_1.range)(0x2145, 0x2149), + ...(0, util_1.range)(0x2160, 0x2183), + ...(0, util_1.range)(0x2336, 0x237a), + 0x2395, + ...(0, util_1.range)(0x249c, 0x24e9), + ...(0, util_1.range)(0x3005, 0x3007), + ...(0, util_1.range)(0x3021, 0x3029), + ...(0, util_1.range)(0x3031, 0x3035), + ...(0, util_1.range)(0x3038, 0x303c), + ...(0, util_1.range)(0x3041, 0x3096), + ...(0, util_1.range)(0x309d, 0x309f), + ...(0, util_1.range)(0x30a1, 0x30fa), + ...(0, util_1.range)(0x30fc, 0x30ff), + ...(0, util_1.range)(0x3105, 0x312c), + ...(0, util_1.range)(0x3131, 0x318e), + ...(0, util_1.range)(0x3190, 0x31b7), + ...(0, util_1.range)(0x31f0, 0x321c), + ...(0, util_1.range)(0x3220, 0x3243), + ...(0, util_1.range)(0x3260, 0x327b), + ...(0, util_1.range)(0x327f, 0x32b0), + ...(0, util_1.range)(0x32c0, 0x32cb), + ...(0, util_1.range)(0x32d0, 0x32fe), + ...(0, util_1.range)(0x3300, 0x3376), + ...(0, util_1.range)(0x337b, 0x33dd), + ...(0, util_1.range)(0x33e0, 0x33fe), + ...(0, util_1.range)(0x3400, 0x4db5), + ...(0, util_1.range)(0x4e00, 0x9fa5), + ...(0, util_1.range)(0xa000, 0xa48c), + ...(0, util_1.range)(0xac00, 0xd7a3), + ...(0, util_1.range)(0xd800, 0xfa2d), + ...(0, util_1.range)(0xfa30, 0xfa6a), + ...(0, util_1.range)(0xfb00, 0xfb06), + ...(0, util_1.range)(0xfb13, 0xfb17), + ...(0, util_1.range)(0xff21, 0xff3a), + ...(0, util_1.range)(0xff41, 0xff5a), + ...(0, util_1.range)(0xff66, 0xffbe), + ...(0, util_1.range)(0xffc2, 0xffc7), + ...(0, util_1.range)(0xffca, 0xffcf), + ...(0, util_1.range)(0xffd2, 0xffd7), + ...(0, util_1.range)(0xffda, 0xffdc), + ...(0, util_1.range)(0x10300, 0x1031e), + ...(0, util_1.range)(0x10320, 0x10323), + ...(0, util_1.range)(0x10330, 0x1034a), + ...(0, util_1.range)(0x10400, 0x10425), + ...(0, util_1.range)(0x10428, 0x1044d), + ...(0, util_1.range)(0x1d000, 0x1d0f5), + ...(0, util_1.range)(0x1d100, 0x1d126), + ...(0, util_1.range)(0x1d12a, 0x1d166), + ...(0, util_1.range)(0x1d16a, 0x1d172), + ...(0, util_1.range)(0x1d183, 0x1d184), + ...(0, util_1.range)(0x1d18c, 0x1d1a9), + ...(0, util_1.range)(0x1d1ae, 0x1d1dd), + ...(0, util_1.range)(0x1d400, 0x1d454), + ...(0, util_1.range)(0x1d456, 0x1d49c), + ...(0, util_1.range)(0x1d49e, 0x1d49f), + 0x1d4a2, + ...(0, util_1.range)(0x1d4a5, 0x1d4a6), + ...(0, util_1.range)(0x1d4a9, 0x1d4ac), + ...(0, util_1.range)(0x1d4ae, 0x1d4b9), + 0x1d4bb, + ...(0, util_1.range)(0x1d4bd, 0x1d4c0), + ...(0, util_1.range)(0x1d4c2, 0x1d4c3), + ...(0, util_1.range)(0x1d4c5, 0x1d505), + ...(0, util_1.range)(0x1d507, 0x1d50a), + ...(0, util_1.range)(0x1d50d, 0x1d514), + ...(0, util_1.range)(0x1d516, 0x1d51c), + ...(0, util_1.range)(0x1d51e, 0x1d539), + ...(0, util_1.range)(0x1d53b, 0x1d53e), + ...(0, util_1.range)(0x1d540, 0x1d544), + 0x1d546, + ...(0, util_1.range)(0x1d54a, 0x1d550), + ...(0, util_1.range)(0x1d552, 0x1d6a3), + ...(0, util_1.range)(0x1d6a8, 0x1d7c9), + ...(0, util_1.range)(0x20000, 0x2a6d6), + ...(0, util_1.range)(0x2f800, 0x2fa1d), + ...(0, util_1.range)(0xf0000, 0xffffd), + ...(0, util_1.range)(0x100000, 0x10fffd), +]); +//# sourceMappingURL=code-points-src.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-src.js.map b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-src.js.map new file mode 100644 index 000000000..dfb14ea82 --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/code-points-src.js.map @@ -0,0 +1 @@ +{"version":3,"file":"code-points-src.js","sourceRoot":"","sources":["../src/code-points-src.ts"],"names":[],"mappings":";;;AAAA,iCAA+B;AAMlB,QAAA,sBAAsB,GAAG,IAAI,GAAG,CAAC;IAC5C,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,OAAO;IACP,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,OAAO;IACP,OAAO;IACP,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,OAAO;IACP,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,OAAO;IACP,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;CAC3B,CAAC,CAAC;AAMU,QAAA,0BAA0B,GAAG,IAAI,GAAG,CAAC;IAChD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CACvE,CAAC,CAAC;AAMU,QAAA,0BAA0B,GAAG,IAAI,GAAG,CAAC;IAChD,MAAM,EAAuB,MAAM;IACnC,MAAM,EAAgB,MAAM,EAAgB,MAAM;IAClD,MAAM,EAAiB,MAAM;IAC7B,MAAM,EAA0B,MAAM;IACtC,MAAM,EAAqB,MAAM;IACjC,MAAM,EAAmB,MAAM;IAC/B,MAAM,EAAyB,MAAM;IACrC,MAAM,EAAkC,MAAM;CAC/C,CAAC,CAAC;AAMU,QAAA,qBAAqB,GAAG,IAAI,GAAG,CAAC;IAC3C,GAAG,kCAA0B;IAM7B,GAAG,IAAA,YAAK,EAAC,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM;IAMN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAM1B,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,QAAQ,EAAE,QAAQ,CAAC;IAM5B,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,GAAG,IAAA,YAAK,EAAC,QAAQ,EAAE,QAAQ,CAAC;IAM5B,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IAMxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IAMN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IAMxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IAMN,OAAO;IACP,GAAG,IAAA,YAAK,EAAC,OAAO,EAAE,OAAO,CAAC;CAC3B,CAAC,CAAC;AAMU,QAAA,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACxC,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC,CAAC;AAMU,QAAA,eAAe,GAAG,IAAI,GAAG,CAAC;IACrC,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/generate-code-points.d.ts b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/generate-code-points.d.ts new file mode 100644 index 000000000..5a83ab249 --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/generate-code-points.d.ts @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=generate-code-points.d.ts.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/generate-code-points.d.ts.map b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/generate-code-points.d.ts.map new file mode 100644 index 000000000..b102903ec --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/generate-code-points.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"generate-code-points.d.ts","sourceRoot":"","sources":["../src/generate-code-points.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/generate-code-points.js b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/generate-code-points.js new file mode 100644 index 000000000..38e94392c --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/generate-code-points.js @@ -0,0 +1,83 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || (function () { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; + }; +})(); +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const zlib_1 = require("zlib"); +const sparse_bitfield_1 = __importDefault(require("sparse-bitfield")); +const codePoints = __importStar(require("./code-points-src")); +const fs_1 = require("fs"); +const prettier = __importStar(require("prettier")); +const unassigned_code_points = (0, sparse_bitfield_1.default)(); +const commonly_mapped_to_nothing = (0, sparse_bitfield_1.default)(); +const non_ascii_space_characters = (0, sparse_bitfield_1.default)(); +const prohibited_characters = (0, sparse_bitfield_1.default)(); +const bidirectional_r_al = (0, sparse_bitfield_1.default)(); +const bidirectional_l = (0, sparse_bitfield_1.default)(); +function traverse(bits, src) { + for (const code of src.keys()) { + bits.set(code, true); + } + const buffer = bits.toBuffer(); + return Buffer.concat([createSize(buffer), buffer]); +} +function createSize(buffer) { + const buf = Buffer.alloc(4); + buf.writeUInt32BE(buffer.length); + return buf; +} +const memory = []; +memory.push(traverse(unassigned_code_points, codePoints.unassigned_code_points), traverse(commonly_mapped_to_nothing, codePoints.commonly_mapped_to_nothing), traverse(non_ascii_space_characters, codePoints.non_ASCII_space_characters), traverse(prohibited_characters, codePoints.prohibited_characters), traverse(bidirectional_r_al, codePoints.bidirectional_r_al), traverse(bidirectional_l, codePoints.bidirectional_l)); +async function writeCodepoints() { + const config = await prettier.resolveConfig(__dirname); + const formatOptions = { ...config, parser: 'typescript' }; + function write(stream, chunk) { + return new Promise((resolve) => stream.write(chunk, () => resolve())); + } + await write((0, fs_1.createWriteStream)(process.argv[2]), await prettier.format(`import { gunzipSync } from 'zlib'; + + export default gunzipSync( + Buffer.from( + '${(0, zlib_1.gzipSync)(Buffer.concat(memory), { level: 9 }).toString('base64')}', + 'base64' + ) + ); + `, formatOptions)); + const fsStreamUncompressedData = (0, fs_1.createWriteStream)(process.argv[3]); + await write(fsStreamUncompressedData, await prettier.format(`const data = Buffer.from('${Buffer.concat(memory).toString('base64')}', 'base64');\nexport default data;\n`, formatOptions)); +} +writeCodepoints().catch((error) => console.error('error occurred generating saslprep codepoint data', { error })); +//# sourceMappingURL=generate-code-points.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/generate-code-points.js.map b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/generate-code-points.js.map new file mode 100644 index 000000000..96b6095d0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/generate-code-points.js.map @@ -0,0 +1 @@ +{"version":3,"file":"generate-code-points.js","sourceRoot":"","sources":["../src/generate-code-points.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/index.d.ts b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/index.d.ts new file mode 100644 index 000000000..24d575c54 --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/index.d.ts @@ -0,0 +1,11 @@ +import type { createMemoryCodePoints } from './memory-code-points'; +declare function saslprep({ unassigned_code_points, commonly_mapped_to_nothing, non_ASCII_space_characters, prohibited_characters, bidirectional_r_al, bidirectional_l, }: ReturnType, input: string, opts?: { + allowUnassigned?: boolean; +}): string; +declare namespace saslprep { + export var saslprep: typeof import("."); + var _a: typeof import("."); + export { _a as default }; +} +export = saslprep; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/index.d.ts.map b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/index.d.ts.map new file mode 100644 index 000000000..e53e39461 --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAsCnE,iBAAS,QAAQ,CACf,EACE,sBAAsB,EACtB,0BAA0B,EAC1B,0BAA0B,EAC1B,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,GAChB,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,EAC5C,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAO,GACvC,MAAM,CAqGR;kBAhHQ,QAAQ;;;;;AAoHjB,SAAS,QAAQ,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/index.js b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/index.js new file mode 100644 index 000000000..07d87bc58 --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/index.js @@ -0,0 +1,65 @@ +"use strict"; +const getCodePoint = (character) => character.codePointAt(0); +const first = (x) => x[0]; +const last = (x) => x[x.length - 1]; +function toCodePoints(input) { + const codepoints = []; + const size = input.length; + for (let i = 0; i < size; i += 1) { + const before = input.charCodeAt(i); + if (before >= 0xd800 && before <= 0xdbff && size > i + 1) { + const next = input.charCodeAt(i + 1); + if (next >= 0xdc00 && next <= 0xdfff) { + codepoints.push((before - 0xd800) * 0x400 + next - 0xdc00 + 0x10000); + i += 1; + continue; + } + } + codepoints.push(before); + } + return codepoints; +} +function saslprep({ unassigned_code_points, commonly_mapped_to_nothing, non_ASCII_space_characters, prohibited_characters, bidirectional_r_al, bidirectional_l, }, input, opts = {}) { + const mapping2space = non_ASCII_space_characters; + const mapping2nothing = commonly_mapped_to_nothing; + if (typeof input !== 'string') { + throw new TypeError('Expected string.'); + } + if (input.length === 0) { + return ''; + } + const mapped_input = toCodePoints(input) + .map((character) => (mapping2space.get(character) ? 0x20 : character)) + .filter((character) => !mapping2nothing.get(character)); + const normalized_input = String.fromCodePoint + .apply(null, mapped_input) + .normalize('NFKC'); + const normalized_map = toCodePoints(normalized_input); + const hasProhibited = normalized_map.some((character) => prohibited_characters.get(character)); + if (hasProhibited) { + throw new Error('Prohibited character, see https://tools.ietf.org/html/rfc4013#section-2.3'); + } + if (opts.allowUnassigned !== true) { + const hasUnassigned = normalized_map.some((character) => unassigned_code_points.get(character)); + if (hasUnassigned) { + throw new Error('Unassigned code point, see https://tools.ietf.org/html/rfc4013#section-2.5'); + } + } + const hasBidiRAL = normalized_map.some((character) => bidirectional_r_al.get(character)); + const hasBidiL = normalized_map.some((character) => bidirectional_l.get(character)); + if (hasBidiRAL && hasBidiL) { + throw new Error('String must not contain RandALCat and LCat at the same time,' + + ' see https://tools.ietf.org/html/rfc3454#section-6'); + } + const isFirstBidiRAL = bidirectional_r_al.get(getCodePoint(first(normalized_input))); + const isLastBidiRAL = bidirectional_r_al.get(getCodePoint(last(normalized_input))); + if (hasBidiRAL && !(isFirstBidiRAL && isLastBidiRAL)) { + throw new Error('Bidirectional RandALCat character must be the first and the last' + + ' character of the string, see https://tools.ietf.org/html/rfc3454#section-6'); + } + return normalized_input; +} +saslprep.saslprep = saslprep; +saslprep.default = saslprep; +module.exports = saslprep; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/index.js.map b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/index.js.map new file mode 100644 index 000000000..e1867effd --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/memory-code-points.d.ts b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/memory-code-points.d.ts new file mode 100644 index 000000000..ef4572286 --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/memory-code-points.d.ts @@ -0,0 +1,10 @@ +import bitfield from 'sparse-bitfield'; +export declare function createMemoryCodePoints(data: Buffer): { + unassigned_code_points: bitfield.BitFieldInstance; + commonly_mapped_to_nothing: bitfield.BitFieldInstance; + non_ASCII_space_characters: bitfield.BitFieldInstance; + prohibited_characters: bitfield.BitFieldInstance; + bidirectional_r_al: bitfield.BitFieldInstance; + bidirectional_l: bitfield.BitFieldInstance; +}; +//# sourceMappingURL=memory-code-points.d.ts.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/memory-code-points.d.ts.map b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/memory-code-points.d.ts.map new file mode 100644 index 000000000..18ce0f41a --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/memory-code-points.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"memory-code-points.d.ts","sourceRoot":"","sources":["../src/memory-code-points.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AAEvC,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM;;;;;;;EA+BlD"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/memory-code-points.js b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/memory-code-points.js new file mode 100644 index 000000000..2c6ca0fa9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/memory-code-points.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createMemoryCodePoints = createMemoryCodePoints; +const sparse_bitfield_1 = __importDefault(require("sparse-bitfield")); +function createMemoryCodePoints(data) { + let offset = 0; + function read() { + const size = data.readUInt32BE(offset); + offset += 4; + const codepoints = data.slice(offset, offset + size); + offset += size; + return (0, sparse_bitfield_1.default)({ buffer: codepoints }); + } + const unassigned_code_points = read(); + const commonly_mapped_to_nothing = read(); + const non_ASCII_space_characters = read(); + const prohibited_characters = read(); + const bidirectional_r_al = read(); + const bidirectional_l = read(); + return { + unassigned_code_points, + commonly_mapped_to_nothing, + non_ASCII_space_characters, + prohibited_characters, + bidirectional_r_al, + bidirectional_l, + }; +} +//# sourceMappingURL=memory-code-points.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/memory-code-points.js.map b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/memory-code-points.js.map new file mode 100644 index 000000000..208fd5c7f --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/memory-code-points.js.map @@ -0,0 +1 @@ +{"version":3,"file":"memory-code-points.js","sourceRoot":"","sources":["../src/memory-code-points.ts"],"names":[],"mappings":";;;;;AAEA,wDA+BC;AAjCD,sEAAuC;AAEvC,SAAgB,sBAAsB,CAAC,IAAY;IACjD,IAAI,MAAM,GAAG,CAAC,CAAC;IAKf,SAAS,IAAI;QACX,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,IAAI,CAAC,CAAC;QAEZ,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;QACrD,MAAM,IAAI,IAAI,CAAC;QAEf,OAAO,IAAA,yBAAQ,EAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,sBAAsB,GAAG,IAAI,EAAE,CAAC;IACtC,MAAM,0BAA0B,GAAG,IAAI,EAAE,CAAC;IAC1C,MAAM,0BAA0B,GAAG,IAAI,EAAE,CAAC;IAC1C,MAAM,qBAAqB,GAAG,IAAI,EAAE,CAAC;IACrC,MAAM,kBAAkB,GAAG,IAAI,EAAE,CAAC;IAClC,MAAM,eAAe,GAAG,IAAI,EAAE,CAAC;IAE/B,OAAO;QACL,sBAAsB;QACtB,0BAA0B;QAC1B,0BAA0B;QAC1B,qBAAqB;QACrB,kBAAkB;QAClB,eAAe;KAChB,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/node.d.ts b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/node.d.ts new file mode 100644 index 000000000..0208c8ed2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/node.d.ts @@ -0,0 +1,10 @@ +declare function saslprep(input: string, opts?: { + allowUnassigned?: boolean; +}): string; +declare namespace saslprep { + export var saslprep: typeof import("./node"); + var _a: typeof import("./node"); + export { _a as default }; +} +export = saslprep; +//# sourceMappingURL=node.d.ts.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/node.d.ts.map b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/node.d.ts.map new file mode 100644 index 000000000..3032ff996 --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/node.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAMA,iBAAS,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAE7E;kBAFQ,QAAQ;;;;;AAOjB,SAAS,QAAQ,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/node.js b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/node.js new file mode 100644 index 000000000..1007f86bd --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/node.js @@ -0,0 +1,15 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +const index_1 = __importDefault(require("./index")); +const memory_code_points_1 = require("./memory-code-points"); +const code_points_data_1 = __importDefault(require("./code-points-data")); +const codePoints = (0, memory_code_points_1.createMemoryCodePoints)(code_points_data_1.default); +function saslprep(input, opts) { + return (0, index_1.default)(codePoints, input, opts); +} +saslprep.saslprep = saslprep; +saslprep.default = saslprep; +module.exports = saslprep; +//# sourceMappingURL=node.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/node.js.map b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/node.js.map new file mode 100644 index 000000000..107ee6485 --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/node.js.map @@ -0,0 +1 @@ +{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":";;;;AAAA,oDAAgC;AAChC,6DAA8D;AAC9D,0EAAsC;AAEtC,MAAM,UAAU,GAAG,IAAA,2CAAsB,EAAC,0BAAI,CAAC,CAAC;AAEhD,SAAS,QAAQ,CAAC,KAAa,EAAE,IAAoC;IACnE,OAAO,IAAA,eAAS,EAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC7B,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC;AAE5B,iBAAS,QAAQ,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/util.d.ts b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/util.d.ts new file mode 100644 index 000000000..3a0466ecd --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/util.d.ts @@ -0,0 +1,2 @@ +export declare function range(from: number, to: number): number[]; +//# sourceMappingURL=util.d.ts.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/util.d.ts.map b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/util.d.ts.map new file mode 100644 index 000000000..50c716780 --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/util.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAGA,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAQxD"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/util.js b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/util.js new file mode 100644 index 000000000..6db330a0c --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/util.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.range = range; +function range(from, to) { + const list = new Array(to - from + 1); + for (let i = 0; i < list.length; i += 1) { + list[i] = from + i; + } + return list; +} +//# sourceMappingURL=util.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/util.js.map b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/util.js.map new file mode 100644 index 000000000..f08e43ad1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/dist/util.js.map @@ -0,0 +1 @@ +{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;AAGA,sBAQC;AARD,SAAgB,KAAK,CAAC,IAAY,EAAE,EAAU;IAE5C,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;IAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/package.json b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/package.json new file mode 100644 index 000000000..70d0614f9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/package.json @@ -0,0 +1,87 @@ +{ + "name": "@mongodb-js/saslprep", + "description": "SASLprep: Stringprep Profile for User Names and Passwords, rfc4013", + "keywords": [ + "sasl", + "saslprep", + "stringprep", + "rfc4013", + "4013" + ], + "author": "Dmitry Tsvettsikh ", + "publishConfig": { + "access": "public" + }, + "main": "dist/node.js", + "bugs": { + "url": "https://jira.mongodb.org/projects/COMPASS/issues", + "email": "compass@mongodb.com" + }, + "homepage": "https://github.com/mongodb-js/devtools-shared/tree/main/packages/saslprep", + "version": "1.4.6", + "repository": { + "type": "git", + "url": "https://github.com/mongodb-js/devtools-shared.git" + }, + "files": [ + "dist" + ], + "license": "MIT", + "exports": { + "browser": { + "types": "./dist/browser.d.ts", + "default": "./dist/browser.js" + }, + "import": { + "types": "./dist/node.d.ts", + "default": "./dist/.esm-wrapper.mjs" + }, + "require": { + "types": "./dist/node.d.ts", + "default": "./dist/node.js" + } + }, + "types": "./dist/node.d.ts", + "scripts": { + "gen-code-points": "ts-node src/generate-code-points.ts src/code-points-data.ts src/code-points-data-browser.ts", + "bootstrap": "npm run compile", + "prepublishOnly": "npm run compile", + "compile": "npm run gen-code-points && tsc -p tsconfig.json && gen-esm-wrapper . ./dist/.esm-wrapper.mjs", + "typecheck": "tsc --noEmit", + "eslint": "eslint", + "prettier": "prettier", + "lint": "npm run eslint . && npm run prettier -- --check .", + "depcheck": "depcheck", + "check": "npm run typecheck && npm run lint && npm run depcheck", + "check-ci": "npm run check", + "test": "mocha", + "test-cov": "nyc -x \"**/*.spec.*\" --reporter=lcov --reporter=text --reporter=html npm run test", + "test-watch": "npm run test -- --watch", + "test-ci": "npm run test-cov", + "reformat": "npm run prettier -- --write ." + }, + "dependencies": { + "sparse-bitfield": "^3.0.3" + }, + "devDependencies": { + "@mongodb-js/eslint-config-devtools": "^0.11.3", + "@mongodb-js/mocha-config-devtools": "^1.1.0", + "@mongodb-js/prettier-config-devtools": "^1.0.2", + "@mongodb-js/tsconfig-devtools": "^1.1.1", + "@types/chai": "^4.2.21", + "@types/mocha": "^9.1.1", + "@types/node": "^22.15.30", + "@types/sinon-chai": "^3.2.5", + "@types/sparse-bitfield": "^3.0.1", + "chai": "^4.5.0", + "depcheck": "^1.4.7", + "eslint": "^7.25.0 || ^8.0.0", + "gen-esm-wrapper": "^1.1.3", + "mocha": "^8.4.0", + "nyc": "^15.1.0", + "prettier": "^3.5.3", + "sinon": "^9.2.3", + "typescript": "^5.9.3" + }, + "gitHead": "351125bdca5cc071e432b25605b411b00b2eb336" +} diff --git a/food-ordering-app/server/node_modules/@mongodb-js/saslprep/readme.md b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/readme.md new file mode 100644 index 000000000..28539edaa --- /dev/null +++ b/food-ordering-app/server/node_modules/@mongodb-js/saslprep/readme.md @@ -0,0 +1,29 @@ +# saslprep + +_Note: This is a fork of the original [`saslprep`](https://www.npmjs.com/package/saslprep) npm package +and provides equivalent functionality._ + +Stringprep Profile for User Names and Passwords, [rfc4013](https://tools.ietf.org/html/rfc4013) + +### Usage + +```js +const saslprep = require('@mongodb-js/saslprep'); + +saslprep('password\u00AD'); // password +saslprep('password\u0007'); // Error: prohibited character +``` + +### API + +##### `saslprep(input: String, opts: Options): String` + +Normalize user name or password. + +##### `Options.allowUnassigned: bool` + +A special behavior for unassigned code points, see https://tools.ietf.org/html/rfc4013#section-2.5. Disabled by default. + +## License + +MIT, 2017-2019 (c) Dmitriy Tsvettsikh diff --git a/food-ordering-app/server/node_modules/@smithy/abort-controller/LICENSE b/food-ordering-app/server/node_modules/@smithy/abort-controller/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/abort-controller/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/abort-controller/README.md b/food-ordering-app/server/node_modules/@smithy/abort-controller/README.md new file mode 100644 index 000000000..175bc37f2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/abort-controller/README.md @@ -0,0 +1,4 @@ +# @smithy/abort-controller + +[![NPM version](https://img.shields.io/npm/v/@smithy/abort-controller/latest.svg)](https://www.npmjs.com/package/@smithy/abort-controller) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/abort-controller.svg)](https://www.npmjs.com/package/@smithy/abort-controller) diff --git a/food-ordering-app/server/node_modules/@smithy/abort-controller/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/abort-controller/dist-cjs/index.js new file mode 100644 index 000000000..2ffd4d389 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/abort-controller/dist-cjs/index.js @@ -0,0 +1,32 @@ +'use strict'; + +class AbortSignal { + onabort = null; + _aborted = false; + constructor() { + Object.defineProperty(this, "_aborted", { + value: false, + writable: true, + }); + } + get aborted() { + return this._aborted; + } + abort() { + this._aborted = true; + if (this.onabort) { + this.onabort(this); + this.onabort = null; + } + } +} + +class AbortController { + signal = new AbortSignal(); + abort() { + this.signal.abort(); + } +} + +exports.AbortController = AbortController; +exports.AbortSignal = AbortSignal; diff --git a/food-ordering-app/server/node_modules/@smithy/abort-controller/dist-es/AbortController.js b/food-ordering-app/server/node_modules/@smithy/abort-controller/dist-es/AbortController.js new file mode 100644 index 000000000..b2a329b0a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/abort-controller/dist-es/AbortController.js @@ -0,0 +1,7 @@ +import { AbortSignal } from "./AbortSignal"; +export class AbortController { + signal = new AbortSignal(); + abort() { + this.signal.abort(); + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/abort-controller/dist-es/AbortSignal.js b/food-ordering-app/server/node_modules/@smithy/abort-controller/dist-es/AbortSignal.js new file mode 100644 index 000000000..17e67bd7b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/abort-controller/dist-es/AbortSignal.js @@ -0,0 +1,20 @@ +export class AbortSignal { + onabort = null; + _aborted = false; + constructor() { + Object.defineProperty(this, "_aborted", { + value: false, + writable: true, + }); + } + get aborted() { + return this._aborted; + } + abort() { + this._aborted = true; + if (this.onabort) { + this.onabort(this); + this.onabort = null; + } + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/abort-controller/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/abort-controller/dist-es/index.js new file mode 100644 index 000000000..a0f47f728 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/abort-controller/dist-es/index.js @@ -0,0 +1,2 @@ +export * from "./AbortController"; +export * from "./AbortSignal"; diff --git a/food-ordering-app/server/node_modules/@smithy/abort-controller/dist-types/AbortController.d.ts b/food-ordering-app/server/node_modules/@smithy/abort-controller/dist-types/AbortController.d.ts new file mode 100644 index 000000000..007f0f648 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/abort-controller/dist-types/AbortController.d.ts @@ -0,0 +1,16 @@ +import { AbortController as DeprecatedAbortController } from "@smithy/types"; +import { AbortSignal } from "./AbortSignal"; +/** + * @public + */ +export { DeprecatedAbortController as IAbortController }; +/** + * @deprecated This implementation was added as Node.js didn't support AbortController prior to 15.x + * Use native implementation in browsers or Node.js \>=15.4.0. + * + * @public + */ +export declare class AbortController implements DeprecatedAbortController { + readonly signal: AbortSignal; + abort(): void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/abort-controller/dist-types/AbortSignal.d.ts b/food-ordering-app/server/node_modules/@smithy/abort-controller/dist-types/AbortSignal.d.ts new file mode 100644 index 000000000..a97c3dc16 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/abort-controller/dist-types/AbortSignal.d.ts @@ -0,0 +1,21 @@ +import { AbortHandler, AbortSignal as DeprecatedAbortSignal } from "@smithy/types"; +/** + * @public + */ +export { AbortHandler, DeprecatedAbortSignal as IAbortSignal }; +/** + * @public + */ +export declare class AbortSignal implements DeprecatedAbortSignal { + onabort: AbortHandler | null; + private _aborted; + constructor(); + /** + * Whether the associated operation has already been cancelled. + */ + get aborted(): boolean; + /** + * @internal + */ + abort(): void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/abort-controller/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/abort-controller/dist-types/index.d.ts new file mode 100644 index 000000000..8788e2f1a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/abort-controller/dist-types/index.d.ts @@ -0,0 +1,9 @@ +/** + * This implementation was added as Node.js didn't support AbortController prior to 15.x + * Use native implementation in browsers or Node.js \>=15.4.0. + * + * @deprecated Use standard implementations in [Browsers](https://developer.mozilla.org/en-US/docs/Web/API/AbortController) and [Node.js](https://nodejs.org/docs/latest/api/globals.html#class-abortcontroller) + * @packageDocumentation + */ +export * from "./AbortController"; +export * from "./AbortSignal"; diff --git a/food-ordering-app/server/node_modules/@smithy/abort-controller/dist-types/ts3.4/AbortController.d.ts b/food-ordering-app/server/node_modules/@smithy/abort-controller/dist-types/ts3.4/AbortController.d.ts new file mode 100644 index 000000000..007f0f648 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/abort-controller/dist-types/ts3.4/AbortController.d.ts @@ -0,0 +1,16 @@ +import { AbortController as DeprecatedAbortController } from "@smithy/types"; +import { AbortSignal } from "./AbortSignal"; +/** + * @public + */ +export { DeprecatedAbortController as IAbortController }; +/** + * @deprecated This implementation was added as Node.js didn't support AbortController prior to 15.x + * Use native implementation in browsers or Node.js \>=15.4.0. + * + * @public + */ +export declare class AbortController implements DeprecatedAbortController { + readonly signal: AbortSignal; + abort(): void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/abort-controller/dist-types/ts3.4/AbortSignal.d.ts b/food-ordering-app/server/node_modules/@smithy/abort-controller/dist-types/ts3.4/AbortSignal.d.ts new file mode 100644 index 000000000..f2cf0ef11 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/abort-controller/dist-types/ts3.4/AbortSignal.d.ts @@ -0,0 +1,21 @@ +import { AbortHandler, AbortSignal as DeprecatedAbortSignal } from "@smithy/types"; +/** + * @public + */ +export { AbortHandler, DeprecatedAbortSignal as IAbortSignal }; +/** + * @public + */ +export declare class AbortSignal implements DeprecatedAbortSignal { + onabort: AbortHandler | null; + private _aborted; + constructor(); + /* + * Whether the associated operation has already been cancelled. + */ + readonly aborted: boolean; + /** + * @internal + */ + abort(): void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/abort-controller/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/abort-controller/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..8788e2f1a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/abort-controller/dist-types/ts3.4/index.d.ts @@ -0,0 +1,9 @@ +/** + * This implementation was added as Node.js didn't support AbortController prior to 15.x + * Use native implementation in browsers or Node.js \>=15.4.0. + * + * @deprecated Use standard implementations in [Browsers](https://developer.mozilla.org/en-US/docs/Web/API/AbortController) and [Node.js](https://nodejs.org/docs/latest/api/globals.html#class-abortcontroller) + * @packageDocumentation + */ +export * from "./AbortController"; +export * from "./AbortSignal"; diff --git a/food-ordering-app/server/node_modules/@smithy/abort-controller/package.json b/food-ordering-app/server/node_modules/@smithy/abort-controller/package.json new file mode 100644 index 000000000..bdadf81cb --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/abort-controller/package.json @@ -0,0 +1,63 @@ +{ + "name": "@smithy/abort-controller", + "version": "4.2.12", + "description": "A simple abort controller library", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline abort-controller", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "extract:docs": "api-extractor run --local", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/abort-controller", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/abort-controller" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/LICENSE b/food-ordering-app/server/node_modules/@smithy/config-resolver/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/README.md b/food-ordering-app/server/node_modules/@smithy/config-resolver/README.md new file mode 100644 index 000000000..2a25da2f5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/README.md @@ -0,0 +1,10 @@ +# @smithy/config-resolver + +[![NPM version](https://img.shields.io/npm/v/@smithy/config-resolver/latest.svg)](https://www.npmjs.com/package/@smithy/config-resolver) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/config-resolver.svg)](https://www.npmjs.com/package/@smithy/config-resolver) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-cjs/index.js new file mode 100644 index 000000000..4703cff79 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-cjs/index.js @@ -0,0 +1,186 @@ +'use strict'; + +var utilConfigProvider = require('@smithy/util-config-provider'); +var utilMiddleware = require('@smithy/util-middleware'); +var utilEndpoints = require('@smithy/util-endpoints'); + +const ENV_USE_DUALSTACK_ENDPOINT = "AWS_USE_DUALSTACK_ENDPOINT"; +const CONFIG_USE_DUALSTACK_ENDPOINT = "use_dualstack_endpoint"; +const DEFAULT_USE_DUALSTACK_ENDPOINT = false; +const NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => utilConfigProvider.booleanSelector(env, ENV_USE_DUALSTACK_ENDPOINT, utilConfigProvider.SelectorType.ENV), + configFileSelector: (profile) => utilConfigProvider.booleanSelector(profile, CONFIG_USE_DUALSTACK_ENDPOINT, utilConfigProvider.SelectorType.CONFIG), + default: false, +}; + +const ENV_USE_FIPS_ENDPOINT = "AWS_USE_FIPS_ENDPOINT"; +const CONFIG_USE_FIPS_ENDPOINT = "use_fips_endpoint"; +const DEFAULT_USE_FIPS_ENDPOINT = false; +const NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => utilConfigProvider.booleanSelector(env, ENV_USE_FIPS_ENDPOINT, utilConfigProvider.SelectorType.ENV), + configFileSelector: (profile) => utilConfigProvider.booleanSelector(profile, CONFIG_USE_FIPS_ENDPOINT, utilConfigProvider.SelectorType.CONFIG), + default: false, +}; + +const resolveCustomEndpointsConfig = (input) => { + const { tls, endpoint, urlParser, useDualstackEndpoint } = input; + return Object.assign(input, { + tls: tls ?? true, + endpoint: utilMiddleware.normalizeProvider(typeof endpoint === "string" ? urlParser(endpoint) : endpoint), + isCustomEndpoint: true, + useDualstackEndpoint: utilMiddleware.normalizeProvider(useDualstackEndpoint ?? false), + }); +}; + +const getEndpointFromRegion = async (input) => { + const { tls = true } = input; + const region = await input.region(); + const dnsHostRegex = new RegExp(/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])$/); + if (!dnsHostRegex.test(region)) { + throw new Error("Invalid region in client config"); + } + const useDualstackEndpoint = await input.useDualstackEndpoint(); + const useFipsEndpoint = await input.useFipsEndpoint(); + const { hostname } = (await input.regionInfoProvider(region, { useDualstackEndpoint, useFipsEndpoint })) ?? {}; + if (!hostname) { + throw new Error("Cannot resolve hostname from client config"); + } + return input.urlParser(`${tls ? "https:" : "http:"}//${hostname}`); +}; + +const resolveEndpointsConfig = (input) => { + const useDualstackEndpoint = utilMiddleware.normalizeProvider(input.useDualstackEndpoint ?? false); + const { endpoint, useFipsEndpoint, urlParser, tls } = input; + return Object.assign(input, { + tls: tls ?? true, + endpoint: endpoint + ? utilMiddleware.normalizeProvider(typeof endpoint === "string" ? urlParser(endpoint) : endpoint) + : () => getEndpointFromRegion({ ...input, useDualstackEndpoint, useFipsEndpoint }), + isCustomEndpoint: !!endpoint, + useDualstackEndpoint, + }); +}; + +const REGION_ENV_NAME = "AWS_REGION"; +const REGION_INI_NAME = "region"; +const NODE_REGION_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => env[REGION_ENV_NAME], + configFileSelector: (profile) => profile[REGION_INI_NAME], + default: () => { + throw new Error("Region is missing"); + }, +}; +const NODE_REGION_CONFIG_FILE_OPTIONS = { + preferredFile: "credentials", +}; + +const validRegions = new Set(); +const checkRegion = (region, check = utilEndpoints.isValidHostLabel) => { + if (!validRegions.has(region) && !check(region)) { + if (region === "*") { + console.warn(`@smithy/config-resolver WARN - Please use the caller region instead of "*". See "sigv4a" in https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/CLIENTS.md.`); + } + else { + throw new Error(`Region not accepted: region="${region}" is not a valid hostname component.`); + } + } + else { + validRegions.add(region); + } +}; + +const isFipsRegion = (region) => typeof region === "string" && (region.startsWith("fips-") || region.endsWith("-fips")); + +const getRealRegion = (region) => isFipsRegion(region) + ? ["fips-aws-global", "aws-fips"].includes(region) + ? "us-east-1" + : region.replace(/fips-(dkr-|prod-)?|-fips/, "") + : region; + +const resolveRegionConfig = (input) => { + const { region, useFipsEndpoint } = input; + if (!region) { + throw new Error("Region is missing"); + } + return Object.assign(input, { + region: async () => { + const providedRegion = typeof region === "function" ? await region() : region; + const realRegion = getRealRegion(providedRegion); + checkRegion(realRegion); + return realRegion; + }, + useFipsEndpoint: async () => { + const providedRegion = typeof region === "string" ? region : await region(); + if (isFipsRegion(providedRegion)) { + return true; + } + return typeof useFipsEndpoint !== "function" ? Promise.resolve(!!useFipsEndpoint) : useFipsEndpoint(); + }, + }); +}; + +const getHostnameFromVariants = (variants = [], { useFipsEndpoint, useDualstackEndpoint }) => variants.find(({ tags }) => useFipsEndpoint === tags.includes("fips") && useDualstackEndpoint === tags.includes("dualstack"))?.hostname; + +const getResolvedHostname = (resolvedRegion, { regionHostname, partitionHostname }) => regionHostname + ? regionHostname + : partitionHostname + ? partitionHostname.replace("{region}", resolvedRegion) + : undefined; + +const getResolvedPartition = (region, { partitionHash }) => Object.keys(partitionHash || {}).find((key) => partitionHash[key].regions.includes(region)) ?? "aws"; + +const getResolvedSigningRegion = (hostname, { signingRegion, regionRegex, useFipsEndpoint }) => { + if (signingRegion) { + return signingRegion; + } + else if (useFipsEndpoint) { + const regionRegexJs = regionRegex.replace("\\\\", "\\").replace(/^\^/g, "\\.").replace(/\$$/g, "\\."); + const regionRegexmatchArray = hostname.match(regionRegexJs); + if (regionRegexmatchArray) { + return regionRegexmatchArray[0].slice(1, -1); + } + } +}; + +const getRegionInfo = (region, { useFipsEndpoint = false, useDualstackEndpoint = false, signingService, regionHash, partitionHash, }) => { + const partition = getResolvedPartition(region, { partitionHash }); + const resolvedRegion = region in regionHash ? region : partitionHash[partition]?.endpoint ?? region; + const hostnameOptions = { useFipsEndpoint, useDualstackEndpoint }; + const regionHostname = getHostnameFromVariants(regionHash[resolvedRegion]?.variants, hostnameOptions); + const partitionHostname = getHostnameFromVariants(partitionHash[partition]?.variants, hostnameOptions); + const hostname = getResolvedHostname(resolvedRegion, { regionHostname, partitionHostname }); + if (hostname === undefined) { + throw new Error(`Endpoint resolution failed for: ${{ resolvedRegion, useFipsEndpoint, useDualstackEndpoint }}`); + } + const signingRegion = getResolvedSigningRegion(hostname, { + signingRegion: regionHash[resolvedRegion]?.signingRegion, + regionRegex: partitionHash[partition].regionRegex, + useFipsEndpoint, + }); + return { + partition, + signingService, + hostname, + ...(signingRegion && { signingRegion }), + ...(regionHash[resolvedRegion]?.signingService && { + signingService: regionHash[resolvedRegion].signingService, + }), + }; +}; + +exports.CONFIG_USE_DUALSTACK_ENDPOINT = CONFIG_USE_DUALSTACK_ENDPOINT; +exports.CONFIG_USE_FIPS_ENDPOINT = CONFIG_USE_FIPS_ENDPOINT; +exports.DEFAULT_USE_DUALSTACK_ENDPOINT = DEFAULT_USE_DUALSTACK_ENDPOINT; +exports.DEFAULT_USE_FIPS_ENDPOINT = DEFAULT_USE_FIPS_ENDPOINT; +exports.ENV_USE_DUALSTACK_ENDPOINT = ENV_USE_DUALSTACK_ENDPOINT; +exports.ENV_USE_FIPS_ENDPOINT = ENV_USE_FIPS_ENDPOINT; +exports.NODE_REGION_CONFIG_FILE_OPTIONS = NODE_REGION_CONFIG_FILE_OPTIONS; +exports.NODE_REGION_CONFIG_OPTIONS = NODE_REGION_CONFIG_OPTIONS; +exports.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS = NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS; +exports.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS = NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS; +exports.REGION_ENV_NAME = REGION_ENV_NAME; +exports.REGION_INI_NAME = REGION_INI_NAME; +exports.getRegionInfo = getRegionInfo; +exports.resolveCustomEndpointsConfig = resolveCustomEndpointsConfig; +exports.resolveEndpointsConfig = resolveEndpointsConfig; +exports.resolveRegionConfig = resolveRegionConfig; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/NodeUseDualstackEndpointConfigOptions.js b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/NodeUseDualstackEndpointConfigOptions.js new file mode 100644 index 000000000..d06156780 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/NodeUseDualstackEndpointConfigOptions.js @@ -0,0 +1,9 @@ +import { booleanSelector, SelectorType } from "@smithy/util-config-provider"; +export const ENV_USE_DUALSTACK_ENDPOINT = "AWS_USE_DUALSTACK_ENDPOINT"; +export const CONFIG_USE_DUALSTACK_ENDPOINT = "use_dualstack_endpoint"; +export const DEFAULT_USE_DUALSTACK_ENDPOINT = false; +export const NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => booleanSelector(env, ENV_USE_DUALSTACK_ENDPOINT, SelectorType.ENV), + configFileSelector: (profile) => booleanSelector(profile, CONFIG_USE_DUALSTACK_ENDPOINT, SelectorType.CONFIG), + default: false, +}; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/NodeUseFipsEndpointConfigOptions.js b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/NodeUseFipsEndpointConfigOptions.js new file mode 100644 index 000000000..8cac1e990 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/NodeUseFipsEndpointConfigOptions.js @@ -0,0 +1,9 @@ +import { booleanSelector, SelectorType } from "@smithy/util-config-provider"; +export const ENV_USE_FIPS_ENDPOINT = "AWS_USE_FIPS_ENDPOINT"; +export const CONFIG_USE_FIPS_ENDPOINT = "use_fips_endpoint"; +export const DEFAULT_USE_FIPS_ENDPOINT = false; +export const NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => booleanSelector(env, ENV_USE_FIPS_ENDPOINT, SelectorType.ENV), + configFileSelector: (profile) => booleanSelector(profile, CONFIG_USE_FIPS_ENDPOINT, SelectorType.CONFIG), + default: false, +}; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/index.js b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/index.js new file mode 100644 index 000000000..1424c22f2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/index.js @@ -0,0 +1,4 @@ +export * from "./NodeUseDualstackEndpointConfigOptions"; +export * from "./NodeUseFipsEndpointConfigOptions"; +export * from "./resolveCustomEndpointsConfig"; +export * from "./resolveEndpointsConfig"; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/resolveCustomEndpointsConfig.js b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/resolveCustomEndpointsConfig.js new file mode 100644 index 000000000..7f9a95351 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/resolveCustomEndpointsConfig.js @@ -0,0 +1,10 @@ +import { normalizeProvider } from "@smithy/util-middleware"; +export const resolveCustomEndpointsConfig = (input) => { + const { tls, endpoint, urlParser, useDualstackEndpoint } = input; + return Object.assign(input, { + tls: tls ?? true, + endpoint: normalizeProvider(typeof endpoint === "string" ? urlParser(endpoint) : endpoint), + isCustomEndpoint: true, + useDualstackEndpoint: normalizeProvider(useDualstackEndpoint ?? false), + }); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/resolveEndpointsConfig.js b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/resolveEndpointsConfig.js new file mode 100644 index 000000000..440657d4a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/resolveEndpointsConfig.js @@ -0,0 +1,14 @@ +import { normalizeProvider } from "@smithy/util-middleware"; +import { getEndpointFromRegion } from "./utils/getEndpointFromRegion"; +export const resolveEndpointsConfig = (input) => { + const useDualstackEndpoint = normalizeProvider(input.useDualstackEndpoint ?? false); + const { endpoint, useFipsEndpoint, urlParser, tls } = input; + return Object.assign(input, { + tls: tls ?? true, + endpoint: endpoint + ? normalizeProvider(typeof endpoint === "string" ? urlParser(endpoint) : endpoint) + : () => getEndpointFromRegion({ ...input, useDualstackEndpoint, useFipsEndpoint }), + isCustomEndpoint: !!endpoint, + useDualstackEndpoint, + }); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/utils/getEndpointFromRegion.js b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/utils/getEndpointFromRegion.js new file mode 100644 index 000000000..5627c32e4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/utils/getEndpointFromRegion.js @@ -0,0 +1,15 @@ +export const getEndpointFromRegion = async (input) => { + const { tls = true } = input; + const region = await input.region(); + const dnsHostRegex = new RegExp(/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])$/); + if (!dnsHostRegex.test(region)) { + throw new Error("Invalid region in client config"); + } + const useDualstackEndpoint = await input.useDualstackEndpoint(); + const useFipsEndpoint = await input.useFipsEndpoint(); + const { hostname } = (await input.regionInfoProvider(region, { useDualstackEndpoint, useFipsEndpoint })) ?? {}; + if (!hostname) { + throw new Error("Cannot resolve hostname from client config"); + } + return input.urlParser(`${tls ? "https:" : "http:"}//${hostname}`); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/index.js new file mode 100644 index 000000000..61456a77c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/index.js @@ -0,0 +1,3 @@ +export * from "./endpointsConfig"; +export * from "./regionConfig"; +export * from "./regionInfo"; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionConfig/checkRegion.js b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionConfig/checkRegion.js new file mode 100644 index 000000000..030902e8f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionConfig/checkRegion.js @@ -0,0 +1,15 @@ +import { isValidHostLabel } from "@smithy/util-endpoints"; +const validRegions = new Set(); +export const checkRegion = (region, check = isValidHostLabel) => { + if (!validRegions.has(region) && !check(region)) { + if (region === "*") { + console.warn(`@smithy/config-resolver WARN - Please use the caller region instead of "*". See "sigv4a" in https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/CLIENTS.md.`); + } + else { + throw new Error(`Region not accepted: region="${region}" is not a valid hostname component.`); + } + } + else { + validRegions.add(region); + } +}; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionConfig/config.js b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionConfig/config.js new file mode 100644 index 000000000..7db98960d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionConfig/config.js @@ -0,0 +1,12 @@ +export const REGION_ENV_NAME = "AWS_REGION"; +export const REGION_INI_NAME = "region"; +export const NODE_REGION_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => env[REGION_ENV_NAME], + configFileSelector: (profile) => profile[REGION_INI_NAME], + default: () => { + throw new Error("Region is missing"); + }, +}; +export const NODE_REGION_CONFIG_FILE_OPTIONS = { + preferredFile: "credentials", +}; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionConfig/getRealRegion.js b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionConfig/getRealRegion.js new file mode 100644 index 000000000..8d1246bf4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionConfig/getRealRegion.js @@ -0,0 +1,6 @@ +import { isFipsRegion } from "./isFipsRegion"; +export const getRealRegion = (region) => isFipsRegion(region) + ? ["fips-aws-global", "aws-fips"].includes(region) + ? "us-east-1" + : region.replace(/fips-(dkr-|prod-)?|-fips/, "") + : region; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionConfig/index.js b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionConfig/index.js new file mode 100644 index 000000000..83675f773 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionConfig/index.js @@ -0,0 +1,2 @@ +export * from "./config"; +export * from "./resolveRegionConfig"; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionConfig/isFipsRegion.js b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionConfig/isFipsRegion.js new file mode 100644 index 000000000..d758967d8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionConfig/isFipsRegion.js @@ -0,0 +1 @@ +export const isFipsRegion = (region) => typeof region === "string" && (region.startsWith("fips-") || region.endsWith("-fips")); diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionConfig/resolveRegionConfig.js b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionConfig/resolveRegionConfig.js new file mode 100644 index 000000000..00c3b5587 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionConfig/resolveRegionConfig.js @@ -0,0 +1,24 @@ +import { checkRegion } from "./checkRegion"; +import { getRealRegion } from "./getRealRegion"; +import { isFipsRegion } from "./isFipsRegion"; +export const resolveRegionConfig = (input) => { + const { region, useFipsEndpoint } = input; + if (!region) { + throw new Error("Region is missing"); + } + return Object.assign(input, { + region: async () => { + const providedRegion = typeof region === "function" ? await region() : region; + const realRegion = getRealRegion(providedRegion); + checkRegion(realRegion); + return realRegion; + }, + useFipsEndpoint: async () => { + const providedRegion = typeof region === "string" ? region : await region(); + if (isFipsRegion(providedRegion)) { + return true; + } + return typeof useFipsEndpoint !== "function" ? Promise.resolve(!!useFipsEndpoint) : useFipsEndpoint(); + }, + }); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionInfo/EndpointVariant.js b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionInfo/EndpointVariant.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionInfo/EndpointVariant.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionInfo/EndpointVariantTag.js b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionInfo/EndpointVariantTag.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionInfo/EndpointVariantTag.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionInfo/PartitionHash.js b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionInfo/PartitionHash.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionInfo/PartitionHash.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionInfo/RegionHash.js b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionInfo/RegionHash.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionInfo/RegionHash.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionInfo/getHostnameFromVariants.js b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionInfo/getHostnameFromVariants.js new file mode 100644 index 000000000..84fc50e85 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionInfo/getHostnameFromVariants.js @@ -0,0 +1 @@ +export const getHostnameFromVariants = (variants = [], { useFipsEndpoint, useDualstackEndpoint }) => variants.find(({ tags }) => useFipsEndpoint === tags.includes("fips") && useDualstackEndpoint === tags.includes("dualstack"))?.hostname; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionInfo/getRegionInfo.js b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionInfo/getRegionInfo.js new file mode 100644 index 000000000..c39e2f743 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionInfo/getRegionInfo.js @@ -0,0 +1,29 @@ +import { getHostnameFromVariants } from "./getHostnameFromVariants"; +import { getResolvedHostname } from "./getResolvedHostname"; +import { getResolvedPartition } from "./getResolvedPartition"; +import { getResolvedSigningRegion } from "./getResolvedSigningRegion"; +export const getRegionInfo = (region, { useFipsEndpoint = false, useDualstackEndpoint = false, signingService, regionHash, partitionHash, }) => { + const partition = getResolvedPartition(region, { partitionHash }); + const resolvedRegion = region in regionHash ? region : partitionHash[partition]?.endpoint ?? region; + const hostnameOptions = { useFipsEndpoint, useDualstackEndpoint }; + const regionHostname = getHostnameFromVariants(regionHash[resolvedRegion]?.variants, hostnameOptions); + const partitionHostname = getHostnameFromVariants(partitionHash[partition]?.variants, hostnameOptions); + const hostname = getResolvedHostname(resolvedRegion, { regionHostname, partitionHostname }); + if (hostname === undefined) { + throw new Error(`Endpoint resolution failed for: ${{ resolvedRegion, useFipsEndpoint, useDualstackEndpoint }}`); + } + const signingRegion = getResolvedSigningRegion(hostname, { + signingRegion: regionHash[resolvedRegion]?.signingRegion, + regionRegex: partitionHash[partition].regionRegex, + useFipsEndpoint, + }); + return { + partition, + signingService, + hostname, + ...(signingRegion && { signingRegion }), + ...(regionHash[resolvedRegion]?.signingService && { + signingService: regionHash[resolvedRegion].signingService, + }), + }; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionInfo/getResolvedHostname.js b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionInfo/getResolvedHostname.js new file mode 100644 index 000000000..35fb98815 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionInfo/getResolvedHostname.js @@ -0,0 +1,5 @@ +export const getResolvedHostname = (resolvedRegion, { regionHostname, partitionHostname }) => regionHostname + ? regionHostname + : partitionHostname + ? partitionHostname.replace("{region}", resolvedRegion) + : undefined; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionInfo/getResolvedPartition.js b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionInfo/getResolvedPartition.js new file mode 100644 index 000000000..3d7bc557e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionInfo/getResolvedPartition.js @@ -0,0 +1 @@ +export const getResolvedPartition = (region, { partitionHash }) => Object.keys(partitionHash || {}).find((key) => partitionHash[key].regions.includes(region)) ?? "aws"; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionInfo/getResolvedSigningRegion.js b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionInfo/getResolvedSigningRegion.js new file mode 100644 index 000000000..7977e0009 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionInfo/getResolvedSigningRegion.js @@ -0,0 +1,12 @@ +export const getResolvedSigningRegion = (hostname, { signingRegion, regionRegex, useFipsEndpoint }) => { + if (signingRegion) { + return signingRegion; + } + else if (useFipsEndpoint) { + const regionRegexJs = regionRegex.replace("\\\\", "\\").replace(/^\^/g, "\\.").replace(/\$$/g, "\\."); + const regionRegexmatchArray = hostname.match(regionRegexJs); + if (regionRegexmatchArray) { + return regionRegexmatchArray[0].slice(1, -1); + } + } +}; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionInfo/index.js b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionInfo/index.js new file mode 100644 index 000000000..e29686a33 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-es/regionInfo/index.js @@ -0,0 +1,3 @@ +export * from "./PartitionHash"; +export * from "./RegionHash"; +export * from "./getRegionInfo"; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/NodeUseDualstackEndpointConfigOptions.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/NodeUseDualstackEndpointConfigOptions.d.ts new file mode 100644 index 000000000..72d90ce1a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/NodeUseDualstackEndpointConfigOptions.d.ts @@ -0,0 +1,17 @@ +import type { LoadedConfigSelectors } from "@smithy/node-config-provider"; +/** + * @internal + */ +export declare const ENV_USE_DUALSTACK_ENDPOINT = "AWS_USE_DUALSTACK_ENDPOINT"; +/** + * @internal + */ +export declare const CONFIG_USE_DUALSTACK_ENDPOINT = "use_dualstack_endpoint"; +/** + * @internal + */ +export declare const DEFAULT_USE_DUALSTACK_ENDPOINT = false; +/** + * @internal + */ +export declare const NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/NodeUseFipsEndpointConfigOptions.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/NodeUseFipsEndpointConfigOptions.d.ts new file mode 100644 index 000000000..07115495a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/NodeUseFipsEndpointConfigOptions.d.ts @@ -0,0 +1,17 @@ +import type { LoadedConfigSelectors } from "@smithy/node-config-provider"; +/** + * @internal + */ +export declare const ENV_USE_FIPS_ENDPOINT = "AWS_USE_FIPS_ENDPOINT"; +/** + * @internal + */ +export declare const CONFIG_USE_FIPS_ENDPOINT = "use_fips_endpoint"; +/** + * @internal + */ +export declare const DEFAULT_USE_FIPS_ENDPOINT = false; +/** + * @internal + */ +export declare const NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/index.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/index.d.ts new file mode 100644 index 000000000..ea1cf59a0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/index.d.ts @@ -0,0 +1,16 @@ +/** + * @internal + */ +export * from "./NodeUseDualstackEndpointConfigOptions"; +/** + * @internal + */ +export * from "./NodeUseFipsEndpointConfigOptions"; +/** + * @internal + */ +export * from "./resolveCustomEndpointsConfig"; +/** + * @internal + */ +export * from "./resolveEndpointsConfig"; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/resolveCustomEndpointsConfig.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/resolveCustomEndpointsConfig.d.ts new file mode 100644 index 000000000..10581c2fd --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/resolveCustomEndpointsConfig.d.ts @@ -0,0 +1,37 @@ +import type { Endpoint, Provider, UrlParser } from "@smithy/types"; +import type { EndpointsInputConfig, EndpointsResolvedConfig } from "./resolveEndpointsConfig"; +/** + * @public + * @deprecated superseded by default endpointRuleSet generation. + */ +export interface CustomEndpointsInputConfig extends EndpointsInputConfig { + /** + * The fully qualified endpoint of the webservice. + */ + endpoint: string | Endpoint | Provider; +} +/** + * @internal + * @deprecated superseded by default endpointRuleSet generation. + */ +interface PreviouslyResolved { + urlParser: UrlParser; +} +/** + * @internal + * @deprecated superseded by default endpointRuleSet generation. + */ +export interface CustomEndpointsResolvedConfig extends EndpointsResolvedConfig { + /** + * Whether the endpoint is specified by caller. + * @internal + */ + isCustomEndpoint: true; +} +/** + * @internal + * + * @deprecated superseded by default endpointRuleSet generation. + */ +export declare const resolveCustomEndpointsConfig: (input: T & CustomEndpointsInputConfig & PreviouslyResolved) => T & CustomEndpointsResolvedConfig; +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/resolveEndpointsConfig.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/resolveEndpointsConfig.d.ts new file mode 100644 index 000000000..d801d1d47 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/resolveEndpointsConfig.d.ts @@ -0,0 +1,57 @@ +import type { Endpoint, Provider, RegionInfoProvider, UrlParser } from "@smithy/types"; +/** + * @public + * @deprecated see \@smithy/middleware-endpoint resolveEndpointConfig. + */ +export interface EndpointsInputConfig { + /** + * The fully qualified endpoint of the webservice. This is only required when using + * a custom endpoint (for example, when using a local version of S3). + */ + endpoint?: string | Endpoint | Provider; + /** + * Whether TLS is enabled for requests. + */ + tls?: boolean; + /** + * Enables IPv6/IPv4 dualstack endpoint. + */ + useDualstackEndpoint?: boolean | Provider; +} +/** + * @internal + * @deprecated see \@smithy/middleware-endpoint resolveEndpointConfig. + */ +interface PreviouslyResolved { + regionInfoProvider: RegionInfoProvider; + urlParser: UrlParser; + region: Provider; + useFipsEndpoint: Provider; +} +/** + * @internal + * @deprecated see \@smithy/middleware-endpoint resolveEndpointConfig. + */ +export interface EndpointsResolvedConfig extends Required { + /** + * Resolved value for input {@link EndpointsInputConfig.endpoint} + */ + endpoint: Provider; + /** + * Whether the endpoint is specified by caller. + * @internal + */ + isCustomEndpoint?: boolean; + /** + * Resolved value for input {@link EndpointsInputConfig.useDualstackEndpoint} + */ + useDualstackEndpoint: Provider; +} +/** + * @internal + * + * @deprecated endpoints rulesets use \@smithy/middleware-endpoint resolveEndpointConfig. + * All generated clients should migrate to Endpoints 2.0 endpointRuleSet traits. + */ +export declare const resolveEndpointsConfig: (input: T & EndpointsInputConfig & PreviouslyResolved) => T & EndpointsResolvedConfig; +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/utils/getEndpointFromRegion.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/utils/getEndpointFromRegion.d.ts new file mode 100644 index 000000000..af8780ae0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/utils/getEndpointFromRegion.d.ts @@ -0,0 +1,11 @@ +import type { Provider, RegionInfoProvider, UrlParser } from "@smithy/types"; +interface GetEndpointFromRegionOptions { + region: Provider; + tls?: boolean; + regionInfoProvider: RegionInfoProvider; + urlParser: UrlParser; + useDualstackEndpoint: Provider; + useFipsEndpoint: Provider; +} +export declare const getEndpointFromRegion: (input: GetEndpointFromRegionOptions) => Promise; +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/index.d.ts new file mode 100644 index 000000000..fde708604 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/index.d.ts @@ -0,0 +1,12 @@ +/** + * @internal + */ +export * from "./endpointsConfig"; +/** + * @internal + */ +export * from "./regionConfig"; +/** + * @internal + */ +export * from "./regionInfo"; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionConfig/checkRegion.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionConfig/checkRegion.d.ts new file mode 100644 index 000000000..ead866f18 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionConfig/checkRegion.d.ts @@ -0,0 +1,9 @@ +/** + * Checks whether region can be a host component. + * + * @param region - to check. + * @param check - checking function. + * + * @internal + */ +export declare const checkRegion: (region: string, check?: (value: string, allowSubDomains?: boolean) => boolean) => void; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionConfig/config.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionConfig/config.d.ts new file mode 100644 index 000000000..ce06abf34 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionConfig/config.d.ts @@ -0,0 +1,17 @@ +import type { LoadedConfigSelectors, LocalConfigOptions } from "@smithy/node-config-provider"; +/** + * @internal + */ +export declare const REGION_ENV_NAME = "AWS_REGION"; +/** + * @internal + */ +export declare const REGION_INI_NAME = "region"; +/** + * @internal + */ +export declare const NODE_REGION_CONFIG_OPTIONS: LoadedConfigSelectors; +/** + * @internal + */ +export declare const NODE_REGION_CONFIG_FILE_OPTIONS: LocalConfigOptions; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionConfig/getRealRegion.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionConfig/getRealRegion.d.ts new file mode 100644 index 000000000..c70fb5b66 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionConfig/getRealRegion.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const getRealRegion: (region: string) => string; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionConfig/index.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionConfig/index.d.ts new file mode 100644 index 000000000..6dcf5e55f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionConfig/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./config"; +/** + * @internal + */ +export * from "./resolveRegionConfig"; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionConfig/isFipsRegion.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionConfig/isFipsRegion.d.ts new file mode 100644 index 000000000..b42cee727 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionConfig/isFipsRegion.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const isFipsRegion: (region: string) => boolean; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionConfig/resolveRegionConfig.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionConfig/resolveRegionConfig.d.ts new file mode 100644 index 000000000..4e9bbcc06 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionConfig/resolveRegionConfig.d.ts @@ -0,0 +1,34 @@ +import type { Provider } from "@smithy/types"; +/** + * @public + */ +export interface RegionInputConfig { + /** + * The AWS region to which this client will send requests + */ + region?: string | Provider; + /** + * Enables FIPS compatible endpoints. + */ + useFipsEndpoint?: boolean | Provider; +} +interface PreviouslyResolved { +} +/** + * @internal + */ +export interface RegionResolvedConfig { + /** + * Resolved value for input config {@link RegionInputConfig.region} + */ + region: Provider; + /** + * Resolved value for input {@link RegionInputConfig.useFipsEndpoint} + */ + useFipsEndpoint: Provider; +} +/** + * @internal + */ +export declare const resolveRegionConfig: (input: T & RegionInputConfig & PreviouslyResolved) => T & RegionResolvedConfig; +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionInfo/EndpointVariant.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionInfo/EndpointVariant.d.ts new file mode 100644 index 000000000..a1a2d430d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionInfo/EndpointVariant.d.ts @@ -0,0 +1,11 @@ +import type { EndpointVariantTag } from "./EndpointVariantTag"; +/** + * Provides hostname information for specific host label. + * + * @internal + * @deprecated unused as of endpointsRuleSets. + */ +export type EndpointVariant = { + hostname: string; + tags: EndpointVariantTag[]; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionInfo/EndpointVariantTag.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionInfo/EndpointVariantTag.d.ts new file mode 100644 index 000000000..0c87d4d30 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionInfo/EndpointVariantTag.d.ts @@ -0,0 +1,10 @@ +/** + * + * + * The tag which mentions which area variant is providing information for. + * Can be either "fips" or "dualstack". + * + * @internal + * @deprecated unused for endpointRuleSets. + */ +export type EndpointVariantTag = "fips" | "dualstack"; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionInfo/PartitionHash.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionInfo/PartitionHash.d.ts new file mode 100644 index 000000000..d50af08a2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionInfo/PartitionHash.d.ts @@ -0,0 +1,15 @@ +import type { EndpointVariant } from "./EndpointVariant"; +/** + * The hash of partition with the information specific to that partition. + * The information includes the list of regions belonging to that partition, + * and the hostname to be used for the partition. + * + * @internal + * @deprecated unused for endpointRuleSets. + */ +export type PartitionHash = Record; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionInfo/RegionHash.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionInfo/RegionHash.d.ts new file mode 100644 index 000000000..c2eda12ea --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionInfo/RegionHash.d.ts @@ -0,0 +1,13 @@ +import type { EndpointVariant } from "./EndpointVariant"; +/** + * The hash of region with the information specific to that region. + * The information can include hostname, signingService and signingRegion. + * + * @internal + * @deprecated unused for endpointRuleSets. + */ +export type RegionHash = Record; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionInfo/getHostnameFromVariants.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionInfo/getHostnameFromVariants.d.ts new file mode 100644 index 000000000..bee82d0fd --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionInfo/getHostnameFromVariants.d.ts @@ -0,0 +1,14 @@ +import type { EndpointVariant } from "./EndpointVariant"; +/** + * @internal + * @deprecated unused as of endpointsRuleSets. + */ +export interface GetHostnameFromVariantsOptions { + useFipsEndpoint: boolean; + useDualstackEndpoint: boolean; +} +/** + * @internal + * @deprecated unused as of endpointsRuleSets. + */ +export declare const getHostnameFromVariants: (variants: EndpointVariant[] | undefined, { useFipsEndpoint, useDualstackEndpoint }: GetHostnameFromVariantsOptions) => string | undefined; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionInfo/getRegionInfo.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionInfo/getRegionInfo.d.ts new file mode 100644 index 000000000..0c98f11ee --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionInfo/getRegionInfo.d.ts @@ -0,0 +1,19 @@ +import type { RegionInfo } from "@smithy/types"; +import type { PartitionHash } from "./PartitionHash"; +import type { RegionHash } from "./RegionHash"; +/** + * @internal + * @deprecated unused as of endpointsRuleSets. + */ +export interface GetRegionInfoOptions { + useFipsEndpoint?: boolean; + useDualstackEndpoint?: boolean; + signingService: string; + regionHash: RegionHash; + partitionHash: PartitionHash; +} +/** + * @internal + * @deprecated unused as of endpointsRuleSets. + */ +export declare const getRegionInfo: (region: string, { useFipsEndpoint, useDualstackEndpoint, signingService, regionHash, partitionHash, }: GetRegionInfoOptions) => RegionInfo; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionInfo/getResolvedHostname.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionInfo/getResolvedHostname.d.ts new file mode 100644 index 000000000..48317522c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionInfo/getResolvedHostname.d.ts @@ -0,0 +1,13 @@ +/** + * @internal + * @deprecated unused for endpointRuleSets. + */ +export interface GetResolvedHostnameOptions { + regionHostname?: string; + partitionHostname?: string; +} +/** + * @internal + * @deprecated unused for endpointRuleSets. + */ +export declare const getResolvedHostname: (resolvedRegion: string, { regionHostname, partitionHostname }: GetResolvedHostnameOptions) => string | undefined; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionInfo/getResolvedPartition.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionInfo/getResolvedPartition.d.ts new file mode 100644 index 000000000..bc73cf6a1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionInfo/getResolvedPartition.d.ts @@ -0,0 +1,13 @@ +import type { PartitionHash } from "./PartitionHash"; +/** + * @internal + * @deprecated unused for endpointRuleSets. + */ +export interface GetResolvedPartitionOptions { + partitionHash: PartitionHash; +} +/** + * @internal + * @deprecated unused for endpointRuleSets. + */ +export declare const getResolvedPartition: (region: string, { partitionHash }: GetResolvedPartitionOptions) => string; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionInfo/getResolvedSigningRegion.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionInfo/getResolvedSigningRegion.d.ts new file mode 100644 index 000000000..e0990b7e2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionInfo/getResolvedSigningRegion.d.ts @@ -0,0 +1,14 @@ +/** + * @internal + * @deprecated unused for endpointRuleSets. + */ +export interface GetResolvedSigningRegionOptions { + regionRegex: string; + signingRegion?: string; + useFipsEndpoint: boolean; +} +/** + * @internal + * @deprecated unused for endpointRuleSets. + */ +export declare const getResolvedSigningRegion: (hostname: string, { signingRegion, regionRegex, useFipsEndpoint }: GetResolvedSigningRegionOptions) => string | undefined; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionInfo/index.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionInfo/index.d.ts new file mode 100644 index 000000000..64ef0d51c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/regionInfo/index.d.ts @@ -0,0 +1,12 @@ +/** + * @internal + */ +export * from "./PartitionHash"; +/** + * @internal + */ +export * from "./RegionHash"; +/** + * @internal + */ +export * from "./getRegionInfo"; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/NodeUseDualstackEndpointConfigOptions.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/NodeUseDualstackEndpointConfigOptions.d.ts new file mode 100644 index 000000000..172d8c1dc --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/NodeUseDualstackEndpointConfigOptions.d.ts @@ -0,0 +1,17 @@ +import { LoadedConfigSelectors } from "@smithy/node-config-provider"; +/** + * @internal + */ +export declare const ENV_USE_DUALSTACK_ENDPOINT = "AWS_USE_DUALSTACK_ENDPOINT"; +/** + * @internal + */ +export declare const CONFIG_USE_DUALSTACK_ENDPOINT = "use_dualstack_endpoint"; +/** + * @internal + */ +export declare const DEFAULT_USE_DUALSTACK_ENDPOINT = false; +/** + * @internal + */ +export declare const NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/NodeUseFipsEndpointConfigOptions.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/NodeUseFipsEndpointConfigOptions.d.ts new file mode 100644 index 000000000..106bbdbe3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/NodeUseFipsEndpointConfigOptions.d.ts @@ -0,0 +1,17 @@ +import { LoadedConfigSelectors } from "@smithy/node-config-provider"; +/** + * @internal + */ +export declare const ENV_USE_FIPS_ENDPOINT = "AWS_USE_FIPS_ENDPOINT"; +/** + * @internal + */ +export declare const CONFIG_USE_FIPS_ENDPOINT = "use_fips_endpoint"; +/** + * @internal + */ +export declare const DEFAULT_USE_FIPS_ENDPOINT = false; +/** + * @internal + */ +export declare const NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/index.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/index.d.ts new file mode 100644 index 000000000..ea1cf59a0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/index.d.ts @@ -0,0 +1,16 @@ +/** + * @internal + */ +export * from "./NodeUseDualstackEndpointConfigOptions"; +/** + * @internal + */ +export * from "./NodeUseFipsEndpointConfigOptions"; +/** + * @internal + */ +export * from "./resolveCustomEndpointsConfig"; +/** + * @internal + */ +export * from "./resolveEndpointsConfig"; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/resolveCustomEndpointsConfig.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/resolveCustomEndpointsConfig.d.ts new file mode 100644 index 000000000..93b3293f1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/resolveCustomEndpointsConfig.d.ts @@ -0,0 +1,37 @@ +import { Endpoint, Provider, UrlParser } from "@smithy/types"; +import { EndpointsInputConfig, EndpointsResolvedConfig } from "./resolveEndpointsConfig"; +/** + * @public + * @deprecated superseded by default endpointRuleSet generation. + */ +export interface CustomEndpointsInputConfig extends EndpointsInputConfig { + /** + * The fully qualified endpoint of the webservice. + */ + endpoint: string | Endpoint | Provider; +} +/** + * @internal + * @deprecated superseded by default endpointRuleSet generation. + */ +interface PreviouslyResolved { + urlParser: UrlParser; +} +/** + * @internal + * @deprecated superseded by default endpointRuleSet generation. + */ +export interface CustomEndpointsResolvedConfig extends EndpointsResolvedConfig { + /** + * Whether the endpoint is specified by caller. + * @internal + */ + isCustomEndpoint: true; +} +/** + * @internal + * + * @deprecated superseded by default endpointRuleSet generation. + */ +export declare const resolveCustomEndpointsConfig: (input: T & CustomEndpointsInputConfig & PreviouslyResolved) => T & CustomEndpointsResolvedConfig; +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/resolveEndpointsConfig.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/resolveEndpointsConfig.d.ts new file mode 100644 index 000000000..aaf7780dc --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/resolveEndpointsConfig.d.ts @@ -0,0 +1,57 @@ +import { Endpoint, Provider, RegionInfoProvider, UrlParser } from "@smithy/types"; +/** + * @public + * @deprecated see \@smithy/middleware-endpoint resolveEndpointConfig. + */ +export interface EndpointsInputConfig { + /** + * The fully qualified endpoint of the webservice. This is only required when using + * a custom endpoint (for example, when using a local version of S3). + */ + endpoint?: string | Endpoint | Provider; + /** + * Whether TLS is enabled for requests. + */ + tls?: boolean; + /** + * Enables IPv6/IPv4 dualstack endpoint. + */ + useDualstackEndpoint?: boolean | Provider; +} +/** + * @internal + * @deprecated see \@smithy/middleware-endpoint resolveEndpointConfig. + */ +interface PreviouslyResolved { + regionInfoProvider: RegionInfoProvider; + urlParser: UrlParser; + region: Provider; + useFipsEndpoint: Provider; +} +/** + * @internal + * @deprecated see \@smithy/middleware-endpoint resolveEndpointConfig. + */ +export interface EndpointsResolvedConfig extends Required { + /** + * Resolved value for input {@link EndpointsInputConfig.endpoint} + */ + endpoint: Provider; + /** + * Whether the endpoint is specified by caller. + * @internal + */ + isCustomEndpoint?: boolean; + /** + * Resolved value for input {@link EndpointsInputConfig.useDualstackEndpoint} + */ + useDualstackEndpoint: Provider; +} +/** + * @internal + * + * @deprecated endpoints rulesets use \@smithy/middleware-endpoint resolveEndpointConfig. + * All generated clients should migrate to Endpoints 2.0 endpointRuleSet traits. + */ +export declare const resolveEndpointsConfig: (input: T & EndpointsInputConfig & PreviouslyResolved) => T & EndpointsResolvedConfig; +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/utils/getEndpointFromRegion.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/utils/getEndpointFromRegion.d.ts new file mode 100644 index 000000000..5ded732c5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/utils/getEndpointFromRegion.d.ts @@ -0,0 +1,11 @@ +import { Provider, RegionInfoProvider, UrlParser } from "@smithy/types"; +interface GetEndpointFromRegionOptions { + region: Provider; + tls?: boolean; + regionInfoProvider: RegionInfoProvider; + urlParser: UrlParser; + useDualstackEndpoint: Provider; + useFipsEndpoint: Provider; +} +export declare const getEndpointFromRegion: (input: GetEndpointFromRegionOptions) => Promise; +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..fde708604 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/index.d.ts @@ -0,0 +1,12 @@ +/** + * @internal + */ +export * from "./endpointsConfig"; +/** + * @internal + */ +export * from "./regionConfig"; +/** + * @internal + */ +export * from "./regionInfo"; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/checkRegion.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/checkRegion.d.ts new file mode 100644 index 000000000..ead866f18 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/checkRegion.d.ts @@ -0,0 +1,9 @@ +/** + * Checks whether region can be a host component. + * + * @param region - to check. + * @param check - checking function. + * + * @internal + */ +export declare const checkRegion: (region: string, check?: (value: string, allowSubDomains?: boolean) => boolean) => void; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/config.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/config.d.ts new file mode 100644 index 000000000..d203bb057 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/config.d.ts @@ -0,0 +1,17 @@ +import { LoadedConfigSelectors, LocalConfigOptions } from "@smithy/node-config-provider"; +/** + * @internal + */ +export declare const REGION_ENV_NAME = "AWS_REGION"; +/** + * @internal + */ +export declare const REGION_INI_NAME = "region"; +/** + * @internal + */ +export declare const NODE_REGION_CONFIG_OPTIONS: LoadedConfigSelectors; +/** + * @internal + */ +export declare const NODE_REGION_CONFIG_FILE_OPTIONS: LocalConfigOptions; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/getRealRegion.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/getRealRegion.d.ts new file mode 100644 index 000000000..c70fb5b66 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/getRealRegion.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const getRealRegion: (region: string) => string; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/index.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/index.d.ts new file mode 100644 index 000000000..6dcf5e55f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./config"; +/** + * @internal + */ +export * from "./resolveRegionConfig"; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/isFipsRegion.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/isFipsRegion.d.ts new file mode 100644 index 000000000..b42cee727 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/isFipsRegion.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const isFipsRegion: (region: string) => boolean; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/resolveRegionConfig.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/resolveRegionConfig.d.ts new file mode 100644 index 000000000..c06c9d4eb --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/resolveRegionConfig.d.ts @@ -0,0 +1,34 @@ +import { Provider } from "@smithy/types"; +/** + * @public + */ +export interface RegionInputConfig { + /** + * The AWS region to which this client will send requests + */ + region?: string | Provider; + /** + * Enables FIPS compatible endpoints. + */ + useFipsEndpoint?: boolean | Provider; +} +interface PreviouslyResolved { +} +/** + * @internal + */ +export interface RegionResolvedConfig { + /** + * Resolved value for input config {@link RegionInputConfig.region} + */ + region: Provider; + /** + * Resolved value for input {@link RegionInputConfig.useFipsEndpoint} + */ + useFipsEndpoint: Provider; +} +/** + * @internal + */ +export declare const resolveRegionConfig: (input: T & RegionInputConfig & PreviouslyResolved) => T & RegionResolvedConfig; +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/EndpointVariant.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/EndpointVariant.d.ts new file mode 100644 index 000000000..24c2fd517 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/EndpointVariant.d.ts @@ -0,0 +1,11 @@ +import { EndpointVariantTag } from "./EndpointVariantTag"; +/** + * Provides hostname information for specific host label. + * + * @internal + * @deprecated unused as of endpointsRuleSets. + */ +export type EndpointVariant = { + hostname: string; + tags: EndpointVariantTag[]; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/EndpointVariantTag.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/EndpointVariantTag.d.ts new file mode 100644 index 000000000..0c87d4d30 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/EndpointVariantTag.d.ts @@ -0,0 +1,10 @@ +/** + * + * + * The tag which mentions which area variant is providing information for. + * Can be either "fips" or "dualstack". + * + * @internal + * @deprecated unused for endpointRuleSets. + */ +export type EndpointVariantTag = "fips" | "dualstack"; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/PartitionHash.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/PartitionHash.d.ts new file mode 100644 index 000000000..c86f36b87 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/PartitionHash.d.ts @@ -0,0 +1,15 @@ +import { EndpointVariant } from "./EndpointVariant"; +/** + * The hash of partition with the information specific to that partition. + * The information includes the list of regions belonging to that partition, + * and the hostname to be used for the partition. + * + * @internal + * @deprecated unused for endpointRuleSets. + */ +export type PartitionHash = Record; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/RegionHash.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/RegionHash.d.ts new file mode 100644 index 000000000..991f2f51f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/RegionHash.d.ts @@ -0,0 +1,13 @@ +import { EndpointVariant } from "./EndpointVariant"; +/** + * The hash of region with the information specific to that region. + * The information can include hostname, signingService and signingRegion. + * + * @internal + * @deprecated unused for endpointRuleSets. + */ +export type RegionHash = Record; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getHostnameFromVariants.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getHostnameFromVariants.d.ts new file mode 100644 index 000000000..6538c993b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getHostnameFromVariants.d.ts @@ -0,0 +1,14 @@ +import { EndpointVariant } from "./EndpointVariant"; +/** + * @internal + * @deprecated unused as of endpointsRuleSets. + */ +export interface GetHostnameFromVariantsOptions { + useFipsEndpoint: boolean; + useDualstackEndpoint: boolean; +} +/** + * @internal + * @deprecated unused as of endpointsRuleSets. + */ +export declare const getHostnameFromVariants: (variants: EndpointVariant[] | undefined, { useFipsEndpoint, useDualstackEndpoint }: GetHostnameFromVariantsOptions) => string | undefined; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getRegionInfo.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getRegionInfo.d.ts new file mode 100644 index 000000000..7579e432d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getRegionInfo.d.ts @@ -0,0 +1,19 @@ +import { RegionInfo } from "@smithy/types"; +import { PartitionHash } from "./PartitionHash"; +import { RegionHash } from "./RegionHash"; +/** + * @internal + * @deprecated unused as of endpointsRuleSets. + */ +export interface GetRegionInfoOptions { + useFipsEndpoint?: boolean; + useDualstackEndpoint?: boolean; + signingService: string; + regionHash: RegionHash; + partitionHash: PartitionHash; +} +/** + * @internal + * @deprecated unused as of endpointsRuleSets. + */ +export declare const getRegionInfo: (region: string, { useFipsEndpoint, useDualstackEndpoint, signingService, regionHash, partitionHash, }: GetRegionInfoOptions) => RegionInfo; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getResolvedHostname.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getResolvedHostname.d.ts new file mode 100644 index 000000000..48317522c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getResolvedHostname.d.ts @@ -0,0 +1,13 @@ +/** + * @internal + * @deprecated unused for endpointRuleSets. + */ +export interface GetResolvedHostnameOptions { + regionHostname?: string; + partitionHostname?: string; +} +/** + * @internal + * @deprecated unused for endpointRuleSets. + */ +export declare const getResolvedHostname: (resolvedRegion: string, { regionHostname, partitionHostname }: GetResolvedHostnameOptions) => string | undefined; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getResolvedPartition.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getResolvedPartition.d.ts new file mode 100644 index 000000000..79e6f7c9f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getResolvedPartition.d.ts @@ -0,0 +1,13 @@ +import { PartitionHash } from "./PartitionHash"; +/** + * @internal + * @deprecated unused for endpointRuleSets. + */ +export interface GetResolvedPartitionOptions { + partitionHash: PartitionHash; +} +/** + * @internal + * @deprecated unused for endpointRuleSets. + */ +export declare const getResolvedPartition: (region: string, { partitionHash }: GetResolvedPartitionOptions) => string; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getResolvedSigningRegion.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getResolvedSigningRegion.d.ts new file mode 100644 index 000000000..e0990b7e2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getResolvedSigningRegion.d.ts @@ -0,0 +1,14 @@ +/** + * @internal + * @deprecated unused for endpointRuleSets. + */ +export interface GetResolvedSigningRegionOptions { + regionRegex: string; + signingRegion?: string; + useFipsEndpoint: boolean; +} +/** + * @internal + * @deprecated unused for endpointRuleSets. + */ +export declare const getResolvedSigningRegion: (hostname: string, { signingRegion, regionRegex, useFipsEndpoint }: GetResolvedSigningRegionOptions) => string | undefined; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/index.d.ts b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/index.d.ts new file mode 100644 index 000000000..64ef0d51c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/index.d.ts @@ -0,0 +1,12 @@ +/** + * @internal + */ +export * from "./PartitionHash"; +/** + * @internal + */ +export * from "./RegionHash"; +/** + * @internal + */ +export * from "./getRegionInfo"; diff --git a/food-ordering-app/server/node_modules/@smithy/config-resolver/package.json b/food-ordering-app/server/node_modules/@smithy/config-resolver/package.json new file mode 100644 index 000000000..c419102b3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/config-resolver/package.json @@ -0,0 +1,66 @@ +{ + "name": "@smithy/config-resolver", + "version": "4.4.11", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline config-resolver", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "extract:docs": "api-extractor run --local", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/node-config-provider": "^4.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-config-provider": "^4.2.2", + "@smithy/util-endpoints": "^3.3.3", + "@smithy/util-middleware": "^4.2.12", + "tslib": "^2.6.2" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/config-resolver", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/config-resolver" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/core/LICENSE b/food-ordering-app/server/node_modules/@smithy/core/LICENSE new file mode 100644 index 000000000..e907b5866 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/food-ordering-app/server/node_modules/@smithy/core/README.md b/food-ordering-app/server/node_modules/@smithy/core/README.md new file mode 100644 index 000000000..51f892269 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/README.md @@ -0,0 +1,45 @@ +# @smithy/core + +[![NPM version](https://img.shields.io/npm/v/@smithy/core/latest.svg)](https://www.npmjs.com/package/@smithy/core) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/core.svg)](https://www.npmjs.com/package/@smithy/core) + +> An internal package. You probably shouldn't use this package, at least directly. + +This package provides common or core functionality for generic Smithy clients. + +You do not need to explicitly install this package, since it will be installed during code generation if used. + +## Development of `@smithy/core` submodules + +Core submodules are organized for distribution via the `package.json` `exports` field. + +`exports` is supported by default by the latest Node.js, webpack, and esbuild. For react-native, it can be +enabled via instructions found at [reactnative.dev/blog](https://reactnative.dev/blog/2023/06/21/package-exports-support), but we also provide a compatibility redirect. + +Think of `@smithy/core` as a mono-package within the monorepo. +It preserves the benefits of modularization, for example to optimize Node.js initialization speed, +while making it easier to have a consistent version of core dependencies, reducing package sprawl when +installing a Smithy runtime client. + +### Guide for submodules + +- Each `index.ts` file corresponding to the pattern `./src/submodules//index.ts` will be + published as a separate `dist-cjs` bundled submodule index using the `Inliner.js` build script. +- create a folder as `./src/submodules/` including an `index.ts` file and a `README.md` file. + - The linter will throw an error on missing submodule metadata in `package.json` and the various `tsconfig.json` files, but it will automatically fix them if possible. +- a submodule is equivalent to a standalone `@smithy/` package in that importing it in Node.js will resolve a separate bundle. +- submodules may not relatively import files from other submodules. Instead, directly use the `@scope/pkg/submodule` name as the import. + - The linter will check for this and throw an error. +- To the extent possible, correctly declaring submodule metadata is validated by the linter in `@smithy/core`. + The linter runs during `yarn build` and also as `yarn lint`. + +### When should I create an `@smithy/core/submodule` vs. `@smithy/new-package`? + +Keep in mind that the core package is installed by all downstream clients. + +If the component functionality is upstream of multiple clients, it is +a good candidate for a core submodule. For example, if `middleware-retry` had been written +after the support for submodules was added, it would have been a submodule. + +If the component's functionality is downstream of a client (rare), or only expected to be used by a very small +subset of clients, it could be written as a standalone package. diff --git a/food-ordering-app/server/node_modules/@smithy/core/cbor.d.ts b/food-ordering-app/server/node_modules/@smithy/core/cbor.d.ts new file mode 100644 index 000000000..c44b7074c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/cbor.d.ts @@ -0,0 +1,7 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +declare module "@smithy/core/cbor" { + export * from "@smithy/core/dist-types/submodules/cbor/index.d"; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/cbor.js b/food-ordering-app/server/node_modules/@smithy/core/cbor.js new file mode 100644 index 000000000..710fb798b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/cbor.js @@ -0,0 +1,6 @@ + +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +module.exports = require("./dist-cjs/submodules/cbor/index.js"); diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/core/dist-cjs/index.js new file mode 100644 index 000000000..d1ca1034d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-cjs/index.js @@ -0,0 +1,345 @@ +'use strict'; + +var types = require('@smithy/types'); +var utilMiddleware = require('@smithy/util-middleware'); +var protocolHttp = require('@smithy/protocol-http'); +var protocols = require('@smithy/core/protocols'); + +const getSmithyContext = (context) => context[types.SMITHY_CONTEXT_KEY] || (context[types.SMITHY_CONTEXT_KEY] = {}); + +const resolveAuthOptions = (candidateAuthOptions, authSchemePreference) => { + if (!authSchemePreference || authSchemePreference.length === 0) { + return candidateAuthOptions; + } + const preferredAuthOptions = []; + for (const preferredSchemeName of authSchemePreference) { + for (const candidateAuthOption of candidateAuthOptions) { + const candidateAuthSchemeName = candidateAuthOption.schemeId.split("#")[1]; + if (candidateAuthSchemeName === preferredSchemeName) { + preferredAuthOptions.push(candidateAuthOption); + } + } + } + for (const candidateAuthOption of candidateAuthOptions) { + if (!preferredAuthOptions.find(({ schemeId }) => schemeId === candidateAuthOption.schemeId)) { + preferredAuthOptions.push(candidateAuthOption); + } + } + return preferredAuthOptions; +}; + +function convertHttpAuthSchemesToMap(httpAuthSchemes) { + const map = new Map(); + for (const scheme of httpAuthSchemes) { + map.set(scheme.schemeId, scheme); + } + return map; +} +const httpAuthSchemeMiddleware = (config, mwOptions) => (next, context) => async (args) => { + const options = config.httpAuthSchemeProvider(await mwOptions.httpAuthSchemeParametersProvider(config, context, args.input)); + const authSchemePreference = config.authSchemePreference ? await config.authSchemePreference() : []; + const resolvedOptions = resolveAuthOptions(options, authSchemePreference); + const authSchemes = convertHttpAuthSchemesToMap(config.httpAuthSchemes); + const smithyContext = utilMiddleware.getSmithyContext(context); + const failureReasons = []; + for (const option of resolvedOptions) { + const scheme = authSchemes.get(option.schemeId); + if (!scheme) { + failureReasons.push(`HttpAuthScheme \`${option.schemeId}\` was not enabled for this service.`); + continue; + } + const identityProvider = scheme.identityProvider(await mwOptions.identityProviderConfigProvider(config)); + if (!identityProvider) { + failureReasons.push(`HttpAuthScheme \`${option.schemeId}\` did not have an IdentityProvider configured.`); + continue; + } + const { identityProperties = {}, signingProperties = {} } = option.propertiesExtractor?.(config, context) || {}; + option.identityProperties = Object.assign(option.identityProperties || {}, identityProperties); + option.signingProperties = Object.assign(option.signingProperties || {}, signingProperties); + smithyContext.selectedHttpAuthScheme = { + httpAuthOption: option, + identity: await identityProvider(option.identityProperties), + signer: scheme.signer, + }; + break; + } + if (!smithyContext.selectedHttpAuthScheme) { + throw new Error(failureReasons.join("\n")); + } + return next(args); +}; + +const httpAuthSchemeEndpointRuleSetMiddlewareOptions = { + step: "serialize", + tags: ["HTTP_AUTH_SCHEME"], + name: "httpAuthSchemeMiddleware", + override: true, + relation: "before", + toMiddleware: "endpointV2Middleware", +}; +const getHttpAuthSchemeEndpointRuleSetPlugin = (config, { httpAuthSchemeParametersProvider, identityProviderConfigProvider, }) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo(httpAuthSchemeMiddleware(config, { + httpAuthSchemeParametersProvider, + identityProviderConfigProvider, + }), httpAuthSchemeEndpointRuleSetMiddlewareOptions); + }, +}); + +const httpAuthSchemeMiddlewareOptions = { + step: "serialize", + tags: ["HTTP_AUTH_SCHEME"], + name: "httpAuthSchemeMiddleware", + override: true, + relation: "before", + toMiddleware: "serializerMiddleware", +}; +const getHttpAuthSchemePlugin = (config, { httpAuthSchemeParametersProvider, identityProviderConfigProvider, }) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo(httpAuthSchemeMiddleware(config, { + httpAuthSchemeParametersProvider, + identityProviderConfigProvider, + }), httpAuthSchemeMiddlewareOptions); + }, +}); + +const defaultErrorHandler = (signingProperties) => (error) => { + throw error; +}; +const defaultSuccessHandler = (httpResponse, signingProperties) => { }; +const httpSigningMiddleware = (config) => (next, context) => async (args) => { + if (!protocolHttp.HttpRequest.isInstance(args.request)) { + return next(args); + } + const smithyContext = utilMiddleware.getSmithyContext(context); + const scheme = smithyContext.selectedHttpAuthScheme; + if (!scheme) { + throw new Error(`No HttpAuthScheme was selected: unable to sign request`); + } + const { httpAuthOption: { signingProperties = {} }, identity, signer, } = scheme; + const output = await next({ + ...args, + request: await signer.sign(args.request, identity, signingProperties), + }).catch((signer.errorHandler || defaultErrorHandler)(signingProperties)); + (signer.successHandler || defaultSuccessHandler)(output.response, signingProperties); + return output; +}; + +const httpSigningMiddlewareOptions = { + step: "finalizeRequest", + tags: ["HTTP_SIGNING"], + name: "httpSigningMiddleware", + aliases: ["apiKeyMiddleware", "tokenMiddleware", "awsAuthMiddleware"], + override: true, + relation: "after", + toMiddleware: "retryMiddleware", +}; +const getHttpSigningPlugin = (config) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo(httpSigningMiddleware(), httpSigningMiddlewareOptions); + }, +}); + +const normalizeProvider = (input) => { + if (typeof input === "function") + return input; + const promisified = Promise.resolve(input); + return () => promisified; +}; + +const makePagedClientRequest = async (CommandCtor, client, input, withCommand = (_) => _, ...args) => { + let command = new CommandCtor(input); + command = withCommand(command) ?? command; + return await client.send(command, ...args); +}; +function createPaginator(ClientCtor, CommandCtor, inputTokenName, outputTokenName, pageSizeTokenName) { + return async function* paginateOperation(config, input, ...additionalArguments) { + const _input = input; + let token = config.startingToken ?? _input[inputTokenName]; + let hasNext = true; + let page; + while (hasNext) { + _input[inputTokenName] = token; + if (pageSizeTokenName) { + _input[pageSizeTokenName] = _input[pageSizeTokenName] ?? config.pageSize; + } + if (config.client instanceof ClientCtor) { + page = await makePagedClientRequest(CommandCtor, config.client, input, config.withCommand, ...additionalArguments); + } + else { + throw new Error(`Invalid client, expected instance of ${ClientCtor.name}`); + } + yield page; + const prevToken = token; + token = get(page, outputTokenName); + hasNext = !!(token && (!config.stopOnSameToken || token !== prevToken)); + } + return undefined; + }; +} +const get = (fromObject, path) => { + let cursor = fromObject; + const pathComponents = path.split("."); + for (const step of pathComponents) { + if (!cursor || typeof cursor !== "object") { + return undefined; + } + cursor = cursor[step]; + } + return cursor; +}; + +function setFeature(context, feature, value) { + if (!context.__smithy_context) { + context.__smithy_context = { + features: {}, + }; + } + else if (!context.__smithy_context.features) { + context.__smithy_context.features = {}; + } + context.__smithy_context.features[feature] = value; +} + +class DefaultIdentityProviderConfig { + authSchemes = new Map(); + constructor(config) { + for (const [key, value] of Object.entries(config)) { + if (value !== undefined) { + this.authSchemes.set(key, value); + } + } + } + getIdentityProvider(schemeId) { + return this.authSchemes.get(schemeId); + } +} + +class HttpApiKeyAuthSigner { + async sign(httpRequest, identity, signingProperties) { + if (!signingProperties) { + throw new Error("request could not be signed with `apiKey` since the `name` and `in` signer properties are missing"); + } + if (!signingProperties.name) { + throw new Error("request could not be signed with `apiKey` since the `name` signer property is missing"); + } + if (!signingProperties.in) { + throw new Error("request could not be signed with `apiKey` since the `in` signer property is missing"); + } + if (!identity.apiKey) { + throw new Error("request could not be signed with `apiKey` since the `apiKey` is not defined"); + } + const clonedRequest = protocolHttp.HttpRequest.clone(httpRequest); + if (signingProperties.in === types.HttpApiKeyAuthLocation.QUERY) { + clonedRequest.query[signingProperties.name] = identity.apiKey; + } + else if (signingProperties.in === types.HttpApiKeyAuthLocation.HEADER) { + clonedRequest.headers[signingProperties.name] = signingProperties.scheme + ? `${signingProperties.scheme} ${identity.apiKey}` + : identity.apiKey; + } + else { + throw new Error("request can only be signed with `apiKey` locations `query` or `header`, " + + "but found: `" + + signingProperties.in + + "`"); + } + return clonedRequest; + } +} + +class HttpBearerAuthSigner { + async sign(httpRequest, identity, signingProperties) { + const clonedRequest = protocolHttp.HttpRequest.clone(httpRequest); + if (!identity.token) { + throw new Error("request could not be signed with `token` since the `token` is not defined"); + } + clonedRequest.headers["Authorization"] = `Bearer ${identity.token}`; + return clonedRequest; + } +} + +class NoAuthSigner { + async sign(httpRequest, identity, signingProperties) { + return httpRequest; + } +} + +const createIsIdentityExpiredFunction = (expirationMs) => function isIdentityExpired(identity) { + return doesIdentityRequireRefresh(identity) && identity.expiration.getTime() - Date.now() < expirationMs; +}; +const EXPIRATION_MS = 300_000; +const isIdentityExpired = createIsIdentityExpiredFunction(EXPIRATION_MS); +const doesIdentityRequireRefresh = (identity) => identity.expiration !== undefined; +const memoizeIdentityProvider = (provider, isExpired, requiresRefresh) => { + if (provider === undefined) { + return undefined; + } + const normalizedProvider = typeof provider !== "function" ? async () => Promise.resolve(provider) : provider; + let resolved; + let pending; + let hasResult; + let isConstant = false; + const coalesceProvider = async (options) => { + if (!pending) { + pending = normalizedProvider(options); + } + try { + resolved = await pending; + hasResult = true; + isConstant = false; + } + finally { + pending = undefined; + } + return resolved; + }; + if (isExpired === undefined) { + return async (options) => { + if (!hasResult || options?.forceRefresh) { + resolved = await coalesceProvider(options); + } + return resolved; + }; + } + return async (options) => { + if (!hasResult || options?.forceRefresh) { + resolved = await coalesceProvider(options); + } + if (isConstant) { + return resolved; + } + if (!requiresRefresh(resolved)) { + isConstant = true; + return resolved; + } + if (isExpired(resolved)) { + await coalesceProvider(options); + return resolved; + } + return resolved; + }; +}; + +exports.requestBuilder = protocols.requestBuilder; +exports.DefaultIdentityProviderConfig = DefaultIdentityProviderConfig; +exports.EXPIRATION_MS = EXPIRATION_MS; +exports.HttpApiKeyAuthSigner = HttpApiKeyAuthSigner; +exports.HttpBearerAuthSigner = HttpBearerAuthSigner; +exports.NoAuthSigner = NoAuthSigner; +exports.createIsIdentityExpiredFunction = createIsIdentityExpiredFunction; +exports.createPaginator = createPaginator; +exports.doesIdentityRequireRefresh = doesIdentityRequireRefresh; +exports.getHttpAuthSchemeEndpointRuleSetPlugin = getHttpAuthSchemeEndpointRuleSetPlugin; +exports.getHttpAuthSchemePlugin = getHttpAuthSchemePlugin; +exports.getHttpSigningPlugin = getHttpSigningPlugin; +exports.getSmithyContext = getSmithyContext; +exports.httpAuthSchemeEndpointRuleSetMiddlewareOptions = httpAuthSchemeEndpointRuleSetMiddlewareOptions; +exports.httpAuthSchemeMiddleware = httpAuthSchemeMiddleware; +exports.httpAuthSchemeMiddlewareOptions = httpAuthSchemeMiddlewareOptions; +exports.httpSigningMiddleware = httpSigningMiddleware; +exports.httpSigningMiddlewareOptions = httpSigningMiddlewareOptions; +exports.isIdentityExpired = isIdentityExpired; +exports.memoizeIdentityProvider = memoizeIdentityProvider; +exports.normalizeProvider = normalizeProvider; +exports.setFeature = setFeature; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-cjs/submodules/cbor/index.js b/food-ordering-app/server/node_modules/@smithy/core/dist-cjs/submodules/cbor/index.js new file mode 100644 index 000000000..1b6d5af33 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-cjs/submodules/cbor/index.js @@ -0,0 +1,1096 @@ +'use strict'; + +var serde = require('@smithy/core/serde'); +var utilUtf8 = require('@smithy/util-utf8'); +var protocols = require('@smithy/core/protocols'); +var protocolHttp = require('@smithy/protocol-http'); +var utilBodyLengthBrowser = require('@smithy/util-body-length-browser'); +var schema = require('@smithy/core/schema'); +var utilMiddleware = require('@smithy/util-middleware'); +var utilBase64 = require('@smithy/util-base64'); + +const majorUint64 = 0; +const majorNegativeInt64 = 1; +const majorUnstructuredByteString = 2; +const majorUtf8String = 3; +const majorList = 4; +const majorMap = 5; +const majorTag = 6; +const majorSpecial = 7; +const specialFalse = 20; +const specialTrue = 21; +const specialNull = 22; +const specialUndefined = 23; +const extendedOneByte = 24; +const extendedFloat16 = 25; +const extendedFloat32 = 26; +const extendedFloat64 = 27; +const minorIndefinite = 31; +function alloc(size) { + return typeof Buffer !== "undefined" ? Buffer.alloc(size) : new Uint8Array(size); +} +const tagSymbol = Symbol("@smithy/core/cbor::tagSymbol"); +function tag(data) { + data[tagSymbol] = true; + return data; +} + +const USE_TEXT_DECODER = typeof TextDecoder !== "undefined"; +const USE_BUFFER$1 = typeof Buffer !== "undefined"; +let payload = alloc(0); +let dataView$1 = new DataView(payload.buffer, payload.byteOffset, payload.byteLength); +const textDecoder = USE_TEXT_DECODER ? new TextDecoder() : null; +let _offset = 0; +function setPayload(bytes) { + payload = bytes; + dataView$1 = new DataView(payload.buffer, payload.byteOffset, payload.byteLength); +} +function decode(at, to) { + if (at >= to) { + throw new Error("unexpected end of (decode) payload."); + } + const major = (payload[at] & 0b1110_0000) >> 5; + const minor = payload[at] & 0b0001_1111; + switch (major) { + case majorUint64: + case majorNegativeInt64: + case majorTag: + let unsignedInt; + let offset; + if (minor < 24) { + unsignedInt = minor; + offset = 1; + } + else { + switch (minor) { + case extendedOneByte: + case extendedFloat16: + case extendedFloat32: + case extendedFloat64: + const countLength = minorValueToArgumentLength[minor]; + const countOffset = (countLength + 1); + offset = countOffset; + if (to - at < countOffset) { + throw new Error(`countLength ${countLength} greater than remaining buf len.`); + } + const countIndex = at + 1; + if (countLength === 1) { + unsignedInt = payload[countIndex]; + } + else if (countLength === 2) { + unsignedInt = dataView$1.getUint16(countIndex); + } + else if (countLength === 4) { + unsignedInt = dataView$1.getUint32(countIndex); + } + else { + unsignedInt = dataView$1.getBigUint64(countIndex); + } + break; + default: + throw new Error(`unexpected minor value ${minor}.`); + } + } + if (major === majorUint64) { + _offset = offset; + return castBigInt(unsignedInt); + } + else if (major === majorNegativeInt64) { + let negativeInt; + if (typeof unsignedInt === "bigint") { + negativeInt = BigInt(-1) - unsignedInt; + } + else { + negativeInt = -1 - unsignedInt; + } + _offset = offset; + return castBigInt(negativeInt); + } + else { + if (minor === 2 || minor === 3) { + const length = decodeCount(at + offset, to); + let b = BigInt(0); + const start = at + offset + _offset; + for (let i = start; i < start + length; ++i) { + b = (b << BigInt(8)) | BigInt(payload[i]); + } + _offset = offset + _offset + length; + return minor === 3 ? -b - BigInt(1) : b; + } + else if (minor === 4) { + const decimalFraction = decode(at + offset, to); + const [exponent, mantissa] = decimalFraction; + const normalizer = mantissa < 0 ? -1 : 1; + const mantissaStr = "0".repeat(Math.abs(exponent) + 1) + String(BigInt(normalizer) * BigInt(mantissa)); + let numericString; + const sign = mantissa < 0 ? "-" : ""; + numericString = + exponent === 0 + ? mantissaStr + : mantissaStr.slice(0, mantissaStr.length + exponent) + "." + mantissaStr.slice(exponent); + numericString = numericString.replace(/^0+/g, ""); + if (numericString === "") { + numericString = "0"; + } + if (numericString[0] === ".") { + numericString = "0" + numericString; + } + numericString = sign + numericString; + _offset = offset + _offset; + return serde.nv(numericString); + } + else { + const value = decode(at + offset, to); + const valueOffset = _offset; + _offset = offset + valueOffset; + return tag({ tag: castBigInt(unsignedInt), value }); + } + } + case majorUtf8String: + case majorMap: + case majorList: + case majorUnstructuredByteString: + if (minor === minorIndefinite) { + switch (major) { + case majorUtf8String: + return decodeUtf8StringIndefinite(at, to); + case majorMap: + return decodeMapIndefinite(at, to); + case majorList: + return decodeListIndefinite(at, to); + case majorUnstructuredByteString: + return decodeUnstructuredByteStringIndefinite(at, to); + } + } + else { + switch (major) { + case majorUtf8String: + return decodeUtf8String(at, to); + case majorMap: + return decodeMap(at, to); + case majorList: + return decodeList(at, to); + case majorUnstructuredByteString: + return decodeUnstructuredByteString(at, to); + } + } + default: + return decodeSpecial(at, to); + } +} +function bytesToUtf8(bytes, at, to) { + if (USE_BUFFER$1 && bytes.constructor?.name === "Buffer") { + return bytes.toString("utf-8", at, to); + } + if (textDecoder) { + return textDecoder.decode(bytes.subarray(at, to)); + } + return utilUtf8.toUtf8(bytes.subarray(at, to)); +} +function demote(bigInteger) { + const num = Number(bigInteger); + if (num < Number.MIN_SAFE_INTEGER || Number.MAX_SAFE_INTEGER < num) { + console.warn(new Error(`@smithy/core/cbor - truncating BigInt(${bigInteger}) to ${num} with loss of precision.`)); + } + return num; +} +const minorValueToArgumentLength = { + [extendedOneByte]: 1, + [extendedFloat16]: 2, + [extendedFloat32]: 4, + [extendedFloat64]: 8, +}; +function bytesToFloat16(a, b) { + const sign = a >> 7; + const exponent = (a & 0b0111_1100) >> 2; + const fraction = ((a & 0b0000_0011) << 8) | b; + const scalar = sign === 0 ? 1 : -1; + let exponentComponent; + let summation; + if (exponent === 0b00000) { + if (fraction === 0b00000_00000) { + return 0; + } + else { + exponentComponent = Math.pow(2, 1 - 15); + summation = 0; + } + } + else if (exponent === 0b11111) { + if (fraction === 0b00000_00000) { + return scalar * Infinity; + } + else { + return NaN; + } + } + else { + exponentComponent = Math.pow(2, exponent - 15); + summation = 1; + } + summation += fraction / 1024; + return scalar * (exponentComponent * summation); +} +function decodeCount(at, to) { + const minor = payload[at] & 0b0001_1111; + if (minor < 24) { + _offset = 1; + return minor; + } + if (minor === extendedOneByte || + minor === extendedFloat16 || + minor === extendedFloat32 || + minor === extendedFloat64) { + const countLength = minorValueToArgumentLength[minor]; + _offset = (countLength + 1); + if (to - at < _offset) { + throw new Error(`countLength ${countLength} greater than remaining buf len.`); + } + const countIndex = at + 1; + if (countLength === 1) { + return payload[countIndex]; + } + else if (countLength === 2) { + return dataView$1.getUint16(countIndex); + } + else if (countLength === 4) { + return dataView$1.getUint32(countIndex); + } + return demote(dataView$1.getBigUint64(countIndex)); + } + throw new Error(`unexpected minor value ${minor}.`); +} +function decodeUtf8String(at, to) { + const length = decodeCount(at, to); + const offset = _offset; + at += offset; + if (to - at < length) { + throw new Error(`string len ${length} greater than remaining buf len.`); + } + const value = bytesToUtf8(payload, at, at + length); + _offset = offset + length; + return value; +} +function decodeUtf8StringIndefinite(at, to) { + at += 1; + const vector = []; + for (const base = at; at < to;) { + if (payload[at] === 0b1111_1111) { + const data = alloc(vector.length); + data.set(vector, 0); + _offset = at - base + 2; + return bytesToUtf8(data, 0, data.length); + } + const major = (payload[at] & 0b1110_0000) >> 5; + const minor = payload[at] & 0b0001_1111; + if (major !== majorUtf8String) { + throw new Error(`unexpected major type ${major} in indefinite string.`); + } + if (minor === minorIndefinite) { + throw new Error("nested indefinite string."); + } + const bytes = decodeUnstructuredByteString(at, to); + const length = _offset; + at += length; + for (let i = 0; i < bytes.length; ++i) { + vector.push(bytes[i]); + } + } + throw new Error("expected break marker."); +} +function decodeUnstructuredByteString(at, to) { + const length = decodeCount(at, to); + const offset = _offset; + at += offset; + if (to - at < length) { + throw new Error(`unstructured byte string len ${length} greater than remaining buf len.`); + } + const value = payload.subarray(at, at + length); + _offset = offset + length; + return value; +} +function decodeUnstructuredByteStringIndefinite(at, to) { + at += 1; + const vector = []; + for (const base = at; at < to;) { + if (payload[at] === 0b1111_1111) { + const data = alloc(vector.length); + data.set(vector, 0); + _offset = at - base + 2; + return data; + } + const major = (payload[at] & 0b1110_0000) >> 5; + const minor = payload[at] & 0b0001_1111; + if (major !== majorUnstructuredByteString) { + throw new Error(`unexpected major type ${major} in indefinite string.`); + } + if (minor === minorIndefinite) { + throw new Error("nested indefinite string."); + } + const bytes = decodeUnstructuredByteString(at, to); + const length = _offset; + at += length; + for (let i = 0; i < bytes.length; ++i) { + vector.push(bytes[i]); + } + } + throw new Error("expected break marker."); +} +function decodeList(at, to) { + const listDataLength = decodeCount(at, to); + const offset = _offset; + at += offset; + const base = at; + const list = Array(listDataLength); + for (let i = 0; i < listDataLength; ++i) { + const item = decode(at, to); + const itemOffset = _offset; + list[i] = item; + at += itemOffset; + } + _offset = offset + (at - base); + return list; +} +function decodeListIndefinite(at, to) { + at += 1; + const list = []; + for (const base = at; at < to;) { + if (payload[at] === 0b1111_1111) { + _offset = at - base + 2; + return list; + } + const item = decode(at, to); + const n = _offset; + at += n; + list.push(item); + } + throw new Error("expected break marker."); +} +function decodeMap(at, to) { + const mapDataLength = decodeCount(at, to); + const offset = _offset; + at += offset; + const base = at; + const map = {}; + for (let i = 0; i < mapDataLength; ++i) { + if (at >= to) { + throw new Error("unexpected end of map payload."); + } + const major = (payload[at] & 0b1110_0000) >> 5; + if (major !== majorUtf8String) { + throw new Error(`unexpected major type ${major} for map key at index ${at}.`); + } + const key = decode(at, to); + at += _offset; + const value = decode(at, to); + at += _offset; + map[key] = value; + } + _offset = offset + (at - base); + return map; +} +function decodeMapIndefinite(at, to) { + at += 1; + const base = at; + const map = {}; + for (; at < to;) { + if (at >= to) { + throw new Error("unexpected end of map payload."); + } + if (payload[at] === 0b1111_1111) { + _offset = at - base + 2; + return map; + } + const major = (payload[at] & 0b1110_0000) >> 5; + if (major !== majorUtf8String) { + throw new Error(`unexpected major type ${major} for map key.`); + } + const key = decode(at, to); + at += _offset; + const value = decode(at, to); + at += _offset; + map[key] = value; + } + throw new Error("expected break marker."); +} +function decodeSpecial(at, to) { + const minor = payload[at] & 0b0001_1111; + switch (minor) { + case specialTrue: + case specialFalse: + _offset = 1; + return minor === specialTrue; + case specialNull: + _offset = 1; + return null; + case specialUndefined: + _offset = 1; + return null; + case extendedFloat16: + if (to - at < 3) { + throw new Error("incomplete float16 at end of buf."); + } + _offset = 3; + return bytesToFloat16(payload[at + 1], payload[at + 2]); + case extendedFloat32: + if (to - at < 5) { + throw new Error("incomplete float32 at end of buf."); + } + _offset = 5; + return dataView$1.getFloat32(at + 1); + case extendedFloat64: + if (to - at < 9) { + throw new Error("incomplete float64 at end of buf."); + } + _offset = 9; + return dataView$1.getFloat64(at + 1); + default: + throw new Error(`unexpected minor value ${minor}.`); + } +} +function castBigInt(bigInt) { + if (typeof bigInt === "number") { + return bigInt; + } + const num = Number(bigInt); + if (Number.MIN_SAFE_INTEGER <= num && num <= Number.MAX_SAFE_INTEGER) { + return num; + } + return bigInt; +} + +const USE_BUFFER = typeof Buffer !== "undefined"; +const initialSize = 2048; +let data = alloc(initialSize); +let dataView = new DataView(data.buffer, data.byteOffset, data.byteLength); +let cursor = 0; +function ensureSpace(bytes) { + const remaining = data.byteLength - cursor; + if (remaining < bytes) { + if (cursor < 16_000_000) { + resize(Math.max(data.byteLength * 4, data.byteLength + bytes)); + } + else { + resize(data.byteLength + bytes + 16_000_000); + } + } +} +function toUint8Array() { + const out = alloc(cursor); + out.set(data.subarray(0, cursor), 0); + cursor = 0; + return out; +} +function resize(size) { + const old = data; + data = alloc(size); + if (old) { + if (old.copy) { + old.copy(data, 0, 0, old.byteLength); + } + else { + data.set(old, 0); + } + } + dataView = new DataView(data.buffer, data.byteOffset, data.byteLength); +} +function encodeHeader(major, value) { + if (value < 24) { + data[cursor++] = (major << 5) | value; + } + else if (value < 1 << 8) { + data[cursor++] = (major << 5) | 24; + data[cursor++] = value; + } + else if (value < 1 << 16) { + data[cursor++] = (major << 5) | extendedFloat16; + dataView.setUint16(cursor, value); + cursor += 2; + } + else if (value < 2 ** 32) { + data[cursor++] = (major << 5) | extendedFloat32; + dataView.setUint32(cursor, value); + cursor += 4; + } + else { + data[cursor++] = (major << 5) | extendedFloat64; + dataView.setBigUint64(cursor, typeof value === "bigint" ? value : BigInt(value)); + cursor += 8; + } +} +function encode(_input) { + const encodeStack = [_input]; + while (encodeStack.length) { + const input = encodeStack.pop(); + ensureSpace(typeof input === "string" ? input.length * 4 : 64); + if (typeof input === "string") { + if (USE_BUFFER) { + encodeHeader(majorUtf8String, Buffer.byteLength(input)); + cursor += data.write(input, cursor); + } + else { + const bytes = utilUtf8.fromUtf8(input); + encodeHeader(majorUtf8String, bytes.byteLength); + data.set(bytes, cursor); + cursor += bytes.byteLength; + } + continue; + } + else if (typeof input === "number") { + if (Number.isInteger(input)) { + const nonNegative = input >= 0; + const major = nonNegative ? majorUint64 : majorNegativeInt64; + const value = nonNegative ? input : -input - 1; + if (value < 24) { + data[cursor++] = (major << 5) | value; + } + else if (value < 256) { + data[cursor++] = (major << 5) | 24; + data[cursor++] = value; + } + else if (value < 65536) { + data[cursor++] = (major << 5) | extendedFloat16; + data[cursor++] = value >> 8; + data[cursor++] = value; + } + else if (value < 4294967296) { + data[cursor++] = (major << 5) | extendedFloat32; + dataView.setUint32(cursor, value); + cursor += 4; + } + else { + data[cursor++] = (major << 5) | extendedFloat64; + dataView.setBigUint64(cursor, BigInt(value)); + cursor += 8; + } + continue; + } + data[cursor++] = (majorSpecial << 5) | extendedFloat64; + dataView.setFloat64(cursor, input); + cursor += 8; + continue; + } + else if (typeof input === "bigint") { + const nonNegative = input >= 0; + const major = nonNegative ? majorUint64 : majorNegativeInt64; + const value = nonNegative ? input : -input - BigInt(1); + const n = Number(value); + if (n < 24) { + data[cursor++] = (major << 5) | n; + } + else if (n < 256) { + data[cursor++] = (major << 5) | 24; + data[cursor++] = n; + } + else if (n < 65536) { + data[cursor++] = (major << 5) | extendedFloat16; + data[cursor++] = n >> 8; + data[cursor++] = n & 0b1111_1111; + } + else if (n < 4294967296) { + data[cursor++] = (major << 5) | extendedFloat32; + dataView.setUint32(cursor, n); + cursor += 4; + } + else if (value < BigInt("18446744073709551616")) { + data[cursor++] = (major << 5) | extendedFloat64; + dataView.setBigUint64(cursor, value); + cursor += 8; + } + else { + const binaryBigInt = value.toString(2); + const bigIntBytes = new Uint8Array(Math.ceil(binaryBigInt.length / 8)); + let b = value; + let i = 0; + while (bigIntBytes.byteLength - ++i >= 0) { + bigIntBytes[bigIntBytes.byteLength - i] = Number(b & BigInt(255)); + b >>= BigInt(8); + } + ensureSpace(bigIntBytes.byteLength * 2); + data[cursor++] = nonNegative ? 0b110_00010 : 0b110_00011; + if (USE_BUFFER) { + encodeHeader(majorUnstructuredByteString, Buffer.byteLength(bigIntBytes)); + } + else { + encodeHeader(majorUnstructuredByteString, bigIntBytes.byteLength); + } + data.set(bigIntBytes, cursor); + cursor += bigIntBytes.byteLength; + } + continue; + } + else if (input === null) { + data[cursor++] = (majorSpecial << 5) | specialNull; + continue; + } + else if (typeof input === "boolean") { + data[cursor++] = (majorSpecial << 5) | (input ? specialTrue : specialFalse); + continue; + } + else if (typeof input === "undefined") { + throw new Error("@smithy/core/cbor: client may not serialize undefined value."); + } + else if (Array.isArray(input)) { + for (let i = input.length - 1; i >= 0; --i) { + encodeStack.push(input[i]); + } + encodeHeader(majorList, input.length); + continue; + } + else if (typeof input.byteLength === "number") { + ensureSpace(input.length * 2); + encodeHeader(majorUnstructuredByteString, input.length); + data.set(input, cursor); + cursor += input.byteLength; + continue; + } + else if (typeof input === "object") { + if (input instanceof serde.NumericValue) { + const decimalIndex = input.string.indexOf("."); + const exponent = decimalIndex === -1 ? 0 : decimalIndex - input.string.length + 1; + const mantissa = BigInt(input.string.replace(".", "")); + data[cursor++] = 0b110_00100; + encodeStack.push(mantissa); + encodeStack.push(exponent); + encodeHeader(majorList, 2); + continue; + } + if (input[tagSymbol]) { + if ("tag" in input && "value" in input) { + encodeStack.push(input.value); + encodeHeader(majorTag, input.tag); + continue; + } + else { + throw new Error("tag encountered with missing fields, need 'tag' and 'value', found: " + JSON.stringify(input)); + } + } + const keys = Object.keys(input); + for (let i = keys.length - 1; i >= 0; --i) { + const key = keys[i]; + encodeStack.push(input[key]); + encodeStack.push(key); + } + encodeHeader(majorMap, keys.length); + continue; + } + throw new Error(`data type ${input?.constructor?.name ?? typeof input} not compatible for encoding.`); + } +} + +const cbor = { + deserialize(payload) { + setPayload(payload); + return decode(0, payload.length); + }, + serialize(input) { + try { + encode(input); + return toUint8Array(); + } + catch (e) { + toUint8Array(); + throw e; + } + }, + resizeEncodingBuffer(size) { + resize(size); + }, +}; + +const parseCborBody = (streamBody, context) => { + return protocols.collectBody(streamBody, context).then(async (bytes) => { + if (bytes.length) { + try { + return cbor.deserialize(bytes); + } + catch (e) { + Object.defineProperty(e, "$responseBodyText", { + value: context.utf8Encoder(bytes), + }); + throw e; + } + } + return {}; + }); +}; +const dateToTag = (date) => { + return tag({ + tag: 1, + value: date.getTime() / 1000, + }); +}; +const parseCborErrorBody = async (errorBody, context) => { + const value = await parseCborBody(errorBody, context); + value.message = value.message ?? value.Message; + return value; +}; +const loadSmithyRpcV2CborErrorCode = (output, data) => { + const sanitizeErrorCode = (rawValue) => { + let cleanValue = rawValue; + if (typeof cleanValue === "number") { + cleanValue = cleanValue.toString(); + } + if (cleanValue.indexOf(",") >= 0) { + cleanValue = cleanValue.split(",")[0]; + } + if (cleanValue.indexOf(":") >= 0) { + cleanValue = cleanValue.split(":")[0]; + } + if (cleanValue.indexOf("#") >= 0) { + cleanValue = cleanValue.split("#")[1]; + } + return cleanValue; + }; + if (data["__type"] !== undefined) { + return sanitizeErrorCode(data["__type"]); + } + const codeKey = Object.keys(data).find((key) => key.toLowerCase() === "code"); + if (codeKey && data[codeKey] !== undefined) { + return sanitizeErrorCode(data[codeKey]); + } +}; +const checkCborResponse = (response) => { + if (String(response.headers["smithy-protocol"]).toLowerCase() !== "rpc-v2-cbor") { + throw new Error("Malformed RPCv2 CBOR response, status: " + response.statusCode); + } +}; +const buildHttpRpcRequest = async (context, headers, path, resolvedHostname, body) => { + const endpoint = await context.endpoint(); + const { hostname, protocol = "https", port, path: basePath } = endpoint; + const contents = { + protocol, + hostname, + port, + method: "POST", + path: basePath.endsWith("/") ? basePath.slice(0, -1) + path : basePath + path, + headers: { + ...headers, + }, + }; + if (resolvedHostname !== undefined) { + contents.hostname = resolvedHostname; + } + if (endpoint.headers) { + for (const [name, value] of Object.entries(endpoint.headers)) { + contents.headers[name] = value; + } + } + if (body !== undefined) { + contents.body = body; + try { + contents.headers["content-length"] = String(utilBodyLengthBrowser.calculateBodyLength(body)); + } + catch (e) { } + } + return new protocolHttp.HttpRequest(contents); +}; + +class CborCodec extends protocols.SerdeContext { + createSerializer() { + const serializer = new CborShapeSerializer(); + serializer.setSerdeContext(this.serdeContext); + return serializer; + } + createDeserializer() { + const deserializer = new CborShapeDeserializer(); + deserializer.setSerdeContext(this.serdeContext); + return deserializer; + } +} +class CborShapeSerializer extends protocols.SerdeContext { + value; + write(schema, value) { + this.value = this.serialize(schema, value); + } + serialize(schema$1, source) { + const ns = schema.NormalizedSchema.of(schema$1); + if (source == null) { + if (ns.isIdempotencyToken()) { + return serde.generateIdempotencyToken(); + } + return source; + } + if (ns.isBlobSchema()) { + if (typeof source === "string") { + return (this.serdeContext?.base64Decoder ?? utilBase64.fromBase64)(source); + } + return source; + } + if (ns.isTimestampSchema()) { + if (typeof source === "number" || typeof source === "bigint") { + return dateToTag(new Date((Number(source) / 1000) | 0)); + } + return dateToTag(source); + } + if (typeof source === "function" || typeof source === "object") { + const sourceObject = source; + if (ns.isListSchema() && Array.isArray(sourceObject)) { + const sparse = !!ns.getMergedTraits().sparse; + const newArray = []; + let i = 0; + for (const item of sourceObject) { + const value = this.serialize(ns.getValueSchema(), item); + if (value != null || sparse) { + newArray[i++] = value; + } + } + return newArray; + } + if (sourceObject instanceof Date) { + return dateToTag(sourceObject); + } + const newObject = {}; + if (ns.isMapSchema()) { + const sparse = !!ns.getMergedTraits().sparse; + for (const key of Object.keys(sourceObject)) { + const value = this.serialize(ns.getValueSchema(), sourceObject[key]); + if (value != null || sparse) { + newObject[key] = value; + } + } + } + else if (ns.isStructSchema()) { + for (const [key, memberSchema] of ns.structIterator()) { + const value = this.serialize(memberSchema, sourceObject[key]); + if (value != null) { + newObject[key] = value; + } + } + const isUnion = ns.isUnionSchema(); + if (isUnion && Array.isArray(sourceObject.$unknown)) { + const [k, v] = sourceObject.$unknown; + newObject[k] = v; + } + else if (typeof sourceObject.__type === "string") { + for (const [k, v] of Object.entries(sourceObject)) { + if (!(k in newObject)) { + newObject[k] = this.serialize(15, v); + } + } + } + } + else if (ns.isDocumentSchema()) { + for (const key of Object.keys(sourceObject)) { + newObject[key] = this.serialize(ns.getValueSchema(), sourceObject[key]); + } + } + else if (ns.isBigDecimalSchema()) { + return sourceObject; + } + return newObject; + } + return source; + } + flush() { + const buffer = cbor.serialize(this.value); + this.value = undefined; + return buffer; + } +} +class CborShapeDeserializer extends protocols.SerdeContext { + read(schema, bytes) { + const data = cbor.deserialize(bytes); + return this.readValue(schema, data); + } + readValue(_schema, value) { + const ns = schema.NormalizedSchema.of(_schema); + if (ns.isTimestampSchema()) { + if (typeof value === "number") { + return serde._parseEpochTimestamp(value); + } + if (typeof value === "object") { + if (value.tag === 1 && "value" in value) { + return serde._parseEpochTimestamp(value.value); + } + } + } + if (ns.isBlobSchema()) { + if (typeof value === "string") { + return (this.serdeContext?.base64Decoder ?? utilBase64.fromBase64)(value); + } + return value; + } + if (typeof value === "undefined" || + typeof value === "boolean" || + typeof value === "number" || + typeof value === "string" || + typeof value === "bigint" || + typeof value === "symbol") { + return value; + } + else if (typeof value === "object") { + if (value === null) { + return null; + } + if ("byteLength" in value) { + return value; + } + if (value instanceof Date) { + return value; + } + if (ns.isDocumentSchema()) { + return value; + } + if (ns.isListSchema()) { + const newArray = []; + const memberSchema = ns.getValueSchema(); + for (const item of value) { + const itemValue = this.readValue(memberSchema, item); + newArray.push(itemValue); + } + return newArray; + } + const newObject = {}; + if (ns.isMapSchema()) { + const targetSchema = ns.getValueSchema(); + for (const key of Object.keys(value)) { + const itemValue = this.readValue(targetSchema, value[key]); + newObject[key] = itemValue; + } + } + else if (ns.isStructSchema()) { + const isUnion = ns.isUnionSchema(); + let keys; + if (isUnion) { + keys = new Set(Object.keys(value).filter((k) => k !== "__type")); + } + for (const [key, memberSchema] of ns.structIterator()) { + if (isUnion) { + keys.delete(key); + } + if (value[key] != null) { + newObject[key] = this.readValue(memberSchema, value[key]); + } + } + if (isUnion && keys?.size === 1 && Object.keys(newObject).length === 0) { + const k = keys.values().next().value; + newObject.$unknown = [k, value[k]]; + } + else if (typeof value.__type === "string") { + for (const [k, v] of Object.entries(value)) { + if (!(k in newObject)) { + newObject[k] = v; + } + } + } + } + else if (value instanceof serde.NumericValue) { + return value; + } + return newObject; + } + else { + return value; + } + } +} + +class SmithyRpcV2CborProtocol extends protocols.RpcProtocol { + codec = new CborCodec(); + serializer = this.codec.createSerializer(); + deserializer = this.codec.createDeserializer(); + constructor({ defaultNamespace, errorTypeRegistries, }) { + super({ defaultNamespace, errorTypeRegistries }); + } + getShapeId() { + return "smithy.protocols#rpcv2Cbor"; + } + getPayloadCodec() { + return this.codec; + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + Object.assign(request.headers, { + "content-type": this.getDefaultContentType(), + "smithy-protocol": "rpc-v2-cbor", + accept: this.getDefaultContentType(), + }); + if (schema.deref(operationSchema.input) === "unit") { + delete request.body; + delete request.headers["content-type"]; + } + else { + if (!request.body) { + this.serializer.write(15, {}); + request.body = this.serializer.flush(); + } + try { + request.headers["content-length"] = String(request.body.byteLength); + } + catch (e) { } + } + const { service, operation } = utilMiddleware.getSmithyContext(context); + const path = `/service/${service}/operation/${operation}`; + if (request.path.endsWith("/")) { + request.path += path.slice(1); + } + else { + request.path += path; + } + return request; + } + async deserializeResponse(operationSchema, context, response) { + return super.deserializeResponse(operationSchema, context, response); + } + async handleError(operationSchema, context, response, dataObject, metadata) { + const errorName = loadSmithyRpcV2CborErrorCode(response, dataObject) ?? "Unknown"; + const errorMetadata = { + $metadata: metadata, + $fault: response.statusCode <= 500 ? "client" : "server", + }; + let namespace = this.options.defaultNamespace; + if (errorName.includes("#")) { + [namespace] = errorName.split("#"); + } + const registry = this.compositeErrorRegistry; + const nsRegistry = schema.TypeRegistry.for(namespace); + registry.copyFrom(nsRegistry); + let errorSchema; + try { + errorSchema = registry.getSchema(errorName); + } + catch (e) { + if (dataObject.Message) { + dataObject.message = dataObject.Message; + } + const syntheticRegistry = schema.TypeRegistry.for("smithy.ts.sdk.synthetic." + namespace); + registry.copyFrom(syntheticRegistry); + const baseExceptionSchema = registry.getBaseException(); + if (baseExceptionSchema) { + const ErrorCtor = registry.getErrorCtor(baseExceptionSchema); + throw Object.assign(new ErrorCtor({ name: errorName }), errorMetadata, dataObject); + } + throw Object.assign(new Error(errorName), errorMetadata, dataObject); + } + const ns = schema.NormalizedSchema.of(errorSchema); + const ErrorCtor = registry.getErrorCtor(errorSchema); + const message = dataObject.message ?? dataObject.Message ?? "Unknown"; + const exception = new ErrorCtor(message); + const output = {}; + for (const [name, member] of ns.structIterator()) { + output[name] = this.deserializer.readValue(member, dataObject[name]); + } + throw Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output); + } + getDefaultContentType() { + return "application/cbor"; + } +} + +exports.CborCodec = CborCodec; +exports.CborShapeDeserializer = CborShapeDeserializer; +exports.CborShapeSerializer = CborShapeSerializer; +exports.SmithyRpcV2CborProtocol = SmithyRpcV2CborProtocol; +exports.buildHttpRpcRequest = buildHttpRpcRequest; +exports.cbor = cbor; +exports.checkCborResponse = checkCborResponse; +exports.dateToTag = dateToTag; +exports.loadSmithyRpcV2CborErrorCode = loadSmithyRpcV2CborErrorCode; +exports.parseCborBody = parseCborBody; +exports.parseCborErrorBody = parseCborErrorBody; +exports.tag = tag; +exports.tagSymbol = tagSymbol; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-cjs/submodules/endpoints/index.js b/food-ordering-app/server/node_modules/@smithy/core/dist-cjs/submodules/endpoints/index.js new file mode 100644 index 000000000..2a8bae093 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-cjs/submodules/endpoints/index.js @@ -0,0 +1,22 @@ +'use strict'; + +var urlParser = require('@smithy/url-parser'); + +const toEndpointV1 = (endpoint) => { + if (typeof endpoint === "object") { + if ("url" in endpoint) { + const v1Endpoint = urlParser.parseUrl(endpoint.url); + if (endpoint.headers) { + v1Endpoint.headers = {}; + for (const [name, values] of Object.entries(endpoint.headers)) { + v1Endpoint.headers[name.toLowerCase()] = values.join(", "); + } + } + return v1Endpoint; + } + return endpoint; + } + return urlParser.parseUrl(endpoint); +}; + +exports.toEndpointV1 = toEndpointV1; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-cjs/submodules/event-streams/index.js b/food-ordering-app/server/node_modules/@smithy/core/dist-cjs/submodules/event-streams/index.js new file mode 100644 index 000000000..d43955d7a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-cjs/submodules/event-streams/index.js @@ -0,0 +1,259 @@ +'use strict'; + +var utilUtf8 = require('@smithy/util-utf8'); + +class EventStreamSerde { + marshaller; + serializer; + deserializer; + serdeContext; + defaultContentType; + constructor({ marshaller, serializer, deserializer, serdeContext, defaultContentType, }) { + this.marshaller = marshaller; + this.serializer = serializer; + this.deserializer = deserializer; + this.serdeContext = serdeContext; + this.defaultContentType = defaultContentType; + } + async serializeEventStream({ eventStream, requestSchema, initialRequest, }) { + const marshaller = this.marshaller; + const eventStreamMember = requestSchema.getEventStreamMember(); + const unionSchema = requestSchema.getMemberSchema(eventStreamMember); + const serializer = this.serializer; + const defaultContentType = this.defaultContentType; + const initialRequestMarker = Symbol("initialRequestMarker"); + const eventStreamIterable = { + async *[Symbol.asyncIterator]() { + if (initialRequest) { + const headers = { + ":event-type": { type: "string", value: "initial-request" }, + ":message-type": { type: "string", value: "event" }, + ":content-type": { type: "string", value: defaultContentType }, + }; + serializer.write(requestSchema, initialRequest); + const body = serializer.flush(); + yield { + [initialRequestMarker]: true, + headers, + body, + }; + } + for await (const page of eventStream) { + yield page; + } + }, + }; + return marshaller.serialize(eventStreamIterable, (event) => { + if (event[initialRequestMarker]) { + return { + headers: event.headers, + body: event.body, + }; + } + const unionMember = Object.keys(event).find((key) => { + return key !== "__type"; + }) ?? ""; + const { additionalHeaders, body, eventType, explicitPayloadContentType } = this.writeEventBody(unionMember, unionSchema, event); + const headers = { + ":event-type": { type: "string", value: eventType }, + ":message-type": { type: "string", value: "event" }, + ":content-type": { type: "string", value: explicitPayloadContentType ?? defaultContentType }, + ...additionalHeaders, + }; + return { + headers, + body, + }; + }); + } + async deserializeEventStream({ response, responseSchema, initialResponseContainer, }) { + const marshaller = this.marshaller; + const eventStreamMember = responseSchema.getEventStreamMember(); + const unionSchema = responseSchema.getMemberSchema(eventStreamMember); + const memberSchemas = unionSchema.getMemberSchemas(); + const initialResponseMarker = Symbol("initialResponseMarker"); + const asyncIterable = marshaller.deserialize(response.body, async (event) => { + const unionMember = Object.keys(event).find((key) => { + return key !== "__type"; + }) ?? ""; + const body = event[unionMember].body; + if (unionMember === "initial-response") { + const dataObject = await this.deserializer.read(responseSchema, body); + delete dataObject[eventStreamMember]; + return { + [initialResponseMarker]: true, + ...dataObject, + }; + } + else if (unionMember in memberSchemas) { + const eventStreamSchema = memberSchemas[unionMember]; + if (eventStreamSchema.isStructSchema()) { + const out = {}; + let hasBindings = false; + for (const [name, member] of eventStreamSchema.structIterator()) { + const { eventHeader, eventPayload } = member.getMergedTraits(); + hasBindings = hasBindings || Boolean(eventHeader || eventPayload); + if (eventPayload) { + if (member.isBlobSchema()) { + out[name] = body; + } + else if (member.isStringSchema()) { + out[name] = (this.serdeContext?.utf8Encoder ?? utilUtf8.toUtf8)(body); + } + else if (member.isStructSchema()) { + out[name] = await this.deserializer.read(member, body); + } + } + else if (eventHeader) { + const value = event[unionMember].headers[name]?.value; + if (value != null) { + if (member.isNumericSchema()) { + if (value && typeof value === "object" && "bytes" in value) { + out[name] = BigInt(value.toString()); + } + else { + out[name] = Number(value); + } + } + else { + out[name] = value; + } + } + } + } + if (hasBindings) { + return { + [unionMember]: out, + }; + } + if (body.byteLength === 0) { + return { + [unionMember]: {}, + }; + } + } + return { + [unionMember]: await this.deserializer.read(eventStreamSchema, body), + }; + } + else { + return { + $unknown: event, + }; + } + }); + const asyncIterator = asyncIterable[Symbol.asyncIterator](); + const firstEvent = await asyncIterator.next(); + if (firstEvent.done) { + return asyncIterable; + } + if (firstEvent.value?.[initialResponseMarker]) { + if (!responseSchema) { + throw new Error("@smithy::core/protocols - initial-response event encountered in event stream but no response schema given."); + } + for (const [key, value] of Object.entries(firstEvent.value)) { + initialResponseContainer[key] = value; + } + } + return { + async *[Symbol.asyncIterator]() { + if (!firstEvent?.value?.[initialResponseMarker]) { + yield firstEvent.value; + } + while (true) { + const { done, value } = await asyncIterator.next(); + if (done) { + break; + } + yield value; + } + }, + }; + } + writeEventBody(unionMember, unionSchema, event) { + const serializer = this.serializer; + let eventType = unionMember; + let explicitPayloadMember = null; + let explicitPayloadContentType; + const isKnownSchema = (() => { + const struct = unionSchema.getSchema(); + return struct[4].includes(unionMember); + })(); + const additionalHeaders = {}; + if (!isKnownSchema) { + const [type, value] = event[unionMember]; + eventType = type; + serializer.write(15, value); + } + else { + const eventSchema = unionSchema.getMemberSchema(unionMember); + if (eventSchema.isStructSchema()) { + for (const [memberName, memberSchema] of eventSchema.structIterator()) { + const { eventHeader, eventPayload } = memberSchema.getMergedTraits(); + if (eventPayload) { + explicitPayloadMember = memberName; + } + else if (eventHeader) { + const value = event[unionMember][memberName]; + let type = "binary"; + if (memberSchema.isNumericSchema()) { + if ((-2) ** 31 <= value && value <= 2 ** 31 - 1) { + type = "integer"; + } + else { + type = "long"; + } + } + else if (memberSchema.isTimestampSchema()) { + type = "timestamp"; + } + else if (memberSchema.isStringSchema()) { + type = "string"; + } + else if (memberSchema.isBooleanSchema()) { + type = "boolean"; + } + if (value != null) { + additionalHeaders[memberName] = { + type, + value, + }; + delete event[unionMember][memberName]; + } + } + } + if (explicitPayloadMember !== null) { + const payloadSchema = eventSchema.getMemberSchema(explicitPayloadMember); + if (payloadSchema.isBlobSchema()) { + explicitPayloadContentType = "application/octet-stream"; + } + else if (payloadSchema.isStringSchema()) { + explicitPayloadContentType = "text/plain"; + } + serializer.write(payloadSchema, event[unionMember][explicitPayloadMember]); + } + else { + serializer.write(eventSchema, event[unionMember]); + } + } + else if (eventSchema.isUnitSchema()) { + serializer.write(eventSchema, {}); + } + else { + throw new Error("@smithy/core/event-streams - non-struct member not supported in event stream union."); + } + } + const messageSerialization = serializer.flush() ?? new Uint8Array(); + const body = typeof messageSerialization === "string" + ? (this.serdeContext?.utf8Decoder ?? utilUtf8.fromUtf8)(messageSerialization) + : messageSerialization; + return { + body, + eventType, + explicitPayloadContentType, + additionalHeaders, + }; + } +} + +exports.EventStreamSerde = EventStreamSerde; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-cjs/submodules/protocols/index.js b/food-ordering-app/server/node_modules/@smithy/core/dist-cjs/submodules/protocols/index.js new file mode 100644 index 000000000..e66b92616 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-cjs/submodules/protocols/index.js @@ -0,0 +1,884 @@ +'use strict'; + +var utilStream = require('@smithy/util-stream'); +var schema = require('@smithy/core/schema'); +var serde = require('@smithy/core/serde'); +var protocolHttp = require('@smithy/protocol-http'); +var utilBase64 = require('@smithy/util-base64'); +var utilUtf8 = require('@smithy/util-utf8'); + +const collectBody = async (streamBody = new Uint8Array(), context) => { + if (streamBody instanceof Uint8Array) { + return utilStream.Uint8ArrayBlobAdapter.mutate(streamBody); + } + if (!streamBody) { + return utilStream.Uint8ArrayBlobAdapter.mutate(new Uint8Array()); + } + const fromContext = context.streamCollector(streamBody); + return utilStream.Uint8ArrayBlobAdapter.mutate(await fromContext); +}; + +function extendedEncodeURIComponent(str) { + return encodeURIComponent(str).replace(/[!'()*]/g, function (c) { + return "%" + c.charCodeAt(0).toString(16).toUpperCase(); + }); +} + +class SerdeContext { + serdeContext; + setSerdeContext(serdeContext) { + this.serdeContext = serdeContext; + } +} + +class HttpProtocol extends SerdeContext { + options; + compositeErrorRegistry; + constructor(options) { + super(); + this.options = options; + this.compositeErrorRegistry = schema.TypeRegistry.for(options.defaultNamespace); + for (const etr of options.errorTypeRegistries ?? []) { + this.compositeErrorRegistry.copyFrom(etr); + } + } + getRequestType() { + return protocolHttp.HttpRequest; + } + getResponseType() { + return protocolHttp.HttpResponse; + } + setSerdeContext(serdeContext) { + this.serdeContext = serdeContext; + this.serializer.setSerdeContext(serdeContext); + this.deserializer.setSerdeContext(serdeContext); + if (this.getPayloadCodec()) { + this.getPayloadCodec().setSerdeContext(serdeContext); + } + } + updateServiceEndpoint(request, endpoint) { + if ("url" in endpoint) { + request.protocol = endpoint.url.protocol; + request.hostname = endpoint.url.hostname; + request.port = endpoint.url.port ? Number(endpoint.url.port) : undefined; + request.path = endpoint.url.pathname; + request.fragment = endpoint.url.hash || void 0; + request.username = endpoint.url.username || void 0; + request.password = endpoint.url.password || void 0; + if (!request.query) { + request.query = {}; + } + for (const [k, v] of endpoint.url.searchParams.entries()) { + request.query[k] = v; + } + if (endpoint.headers) { + for (const [name, values] of Object.entries(endpoint.headers)) { + request.headers[name] = values.join(", "); + } + } + return request; + } + else { + request.protocol = endpoint.protocol; + request.hostname = endpoint.hostname; + request.port = endpoint.port ? Number(endpoint.port) : undefined; + request.path = endpoint.path; + request.query = { + ...endpoint.query, + }; + if (endpoint.headers) { + for (const [name, value] of Object.entries(endpoint.headers)) { + request.headers[name] = value; + } + } + return request; + } + } + setHostPrefix(request, operationSchema, input) { + if (this.serdeContext?.disableHostPrefix) { + return; + } + const inputNs = schema.NormalizedSchema.of(operationSchema.input); + const opTraits = schema.translateTraits(operationSchema.traits ?? {}); + if (opTraits.endpoint) { + let hostPrefix = opTraits.endpoint?.[0]; + if (typeof hostPrefix === "string") { + const hostLabelInputs = [...inputNs.structIterator()].filter(([, member]) => member.getMergedTraits().hostLabel); + for (const [name] of hostLabelInputs) { + const replacement = input[name]; + if (typeof replacement !== "string") { + throw new Error(`@smithy/core/schema - ${name} in input must be a string as hostLabel.`); + } + hostPrefix = hostPrefix.replace(`{${name}}`, replacement); + } + request.hostname = hostPrefix + request.hostname; + } + } + } + deserializeMetadata(output) { + return { + httpStatusCode: output.statusCode, + requestId: output.headers["x-amzn-requestid"] ?? output.headers["x-amzn-request-id"] ?? output.headers["x-amz-request-id"], + extendedRequestId: output.headers["x-amz-id-2"], + cfId: output.headers["x-amz-cf-id"], + }; + } + async serializeEventStream({ eventStream, requestSchema, initialRequest, }) { + const eventStreamSerde = await this.loadEventStreamCapability(); + return eventStreamSerde.serializeEventStream({ + eventStream, + requestSchema, + initialRequest, + }); + } + async deserializeEventStream({ response, responseSchema, initialResponseContainer, }) { + const eventStreamSerde = await this.loadEventStreamCapability(); + return eventStreamSerde.deserializeEventStream({ + response, + responseSchema, + initialResponseContainer, + }); + } + async loadEventStreamCapability() { + const { EventStreamSerde } = await import('@smithy/core/event-streams'); + return new EventStreamSerde({ + marshaller: this.getEventStreamMarshaller(), + serializer: this.serializer, + deserializer: this.deserializer, + serdeContext: this.serdeContext, + defaultContentType: this.getDefaultContentType(), + }); + } + getDefaultContentType() { + throw new Error(`@smithy/core/protocols - ${this.constructor.name} getDefaultContentType() implementation missing.`); + } + async deserializeHttpMessage(schema, context, response, arg4, arg5) { + return []; + } + getEventStreamMarshaller() { + const context = this.serdeContext; + if (!context.eventStreamMarshaller) { + throw new Error("@smithy/core - HttpProtocol: eventStreamMarshaller missing in serdeContext."); + } + return context.eventStreamMarshaller; + } +} + +class HttpBindingProtocol extends HttpProtocol { + async serializeRequest(operationSchema, _input, context) { + const input = { + ...(_input ?? {}), + }; + const serializer = this.serializer; + const query = {}; + const headers = {}; + const endpoint = await context.endpoint(); + const ns = schema.NormalizedSchema.of(operationSchema?.input); + const payloadMemberNames = []; + const payloadMemberSchemas = []; + let hasNonHttpBindingMember = false; + let payload; + const request = new protocolHttp.HttpRequest({ + protocol: "", + hostname: "", + port: undefined, + path: "", + fragment: undefined, + query: query, + headers: headers, + body: undefined, + }); + if (endpoint) { + this.updateServiceEndpoint(request, endpoint); + this.setHostPrefix(request, operationSchema, input); + const opTraits = schema.translateTraits(operationSchema.traits); + if (opTraits.http) { + request.method = opTraits.http[0]; + const [path, search] = opTraits.http[1].split("?"); + if (request.path == "/") { + request.path = path; + } + else { + request.path += path; + } + const traitSearchParams = new URLSearchParams(search ?? ""); + Object.assign(query, Object.fromEntries(traitSearchParams)); + } + } + for (const [memberName, memberNs] of ns.structIterator()) { + const memberTraits = memberNs.getMergedTraits() ?? {}; + const inputMemberValue = input[memberName]; + if (inputMemberValue == null && !memberNs.isIdempotencyToken()) { + if (memberTraits.httpLabel) { + if (request.path.includes(`{${memberName}+}`) || request.path.includes(`{${memberName}}`)) { + throw new Error(`No value provided for input HTTP label: ${memberName}.`); + } + } + continue; + } + if (memberTraits.httpPayload) { + const isStreaming = memberNs.isStreaming(); + if (isStreaming) { + const isEventStream = memberNs.isStructSchema(); + if (isEventStream) { + if (input[memberName]) { + payload = await this.serializeEventStream({ + eventStream: input[memberName], + requestSchema: ns, + }); + } + } + else { + payload = inputMemberValue; + } + } + else { + serializer.write(memberNs, inputMemberValue); + payload = serializer.flush(); + } + delete input[memberName]; + } + else if (memberTraits.httpLabel) { + serializer.write(memberNs, inputMemberValue); + const replacement = serializer.flush(); + if (request.path.includes(`{${memberName}+}`)) { + request.path = request.path.replace(`{${memberName}+}`, replacement.split("/").map(extendedEncodeURIComponent).join("/")); + } + else if (request.path.includes(`{${memberName}}`)) { + request.path = request.path.replace(`{${memberName}}`, extendedEncodeURIComponent(replacement)); + } + delete input[memberName]; + } + else if (memberTraits.httpHeader) { + serializer.write(memberNs, inputMemberValue); + headers[memberTraits.httpHeader.toLowerCase()] = String(serializer.flush()); + delete input[memberName]; + } + else if (typeof memberTraits.httpPrefixHeaders === "string") { + for (const [key, val] of Object.entries(inputMemberValue)) { + const amalgam = memberTraits.httpPrefixHeaders + key; + serializer.write([memberNs.getValueSchema(), { httpHeader: amalgam }], val); + headers[amalgam.toLowerCase()] = serializer.flush(); + } + delete input[memberName]; + } + else if (memberTraits.httpQuery || memberTraits.httpQueryParams) { + this.serializeQuery(memberNs, inputMemberValue, query); + delete input[memberName]; + } + else { + hasNonHttpBindingMember = true; + payloadMemberNames.push(memberName); + payloadMemberSchemas.push(memberNs); + } + } + if (hasNonHttpBindingMember && input) { + const [namespace, name] = (ns.getName(true) ?? "#Unknown").split("#"); + const requiredMembers = ns.getSchema()[6]; + const payloadSchema = [ + 3, + namespace, + name, + ns.getMergedTraits(), + payloadMemberNames, + payloadMemberSchemas, + undefined, + ]; + if (requiredMembers) { + payloadSchema[6] = requiredMembers; + } + else { + payloadSchema.pop(); + } + serializer.write(payloadSchema, input); + payload = serializer.flush(); + } + request.headers = headers; + request.query = query; + request.body = payload; + return request; + } + serializeQuery(ns, data, query) { + const serializer = this.serializer; + const traits = ns.getMergedTraits(); + if (traits.httpQueryParams) { + for (const [key, val] of Object.entries(data)) { + if (!(key in query)) { + const valueSchema = ns.getValueSchema(); + Object.assign(valueSchema.getMergedTraits(), { + ...traits, + httpQuery: key, + httpQueryParams: undefined, + }); + this.serializeQuery(valueSchema, val, query); + } + } + return; + } + if (ns.isListSchema()) { + const sparse = !!ns.getMergedTraits().sparse; + const buffer = []; + for (const item of data) { + serializer.write([ns.getValueSchema(), traits], item); + const serializable = serializer.flush(); + if (sparse || serializable !== undefined) { + buffer.push(serializable); + } + } + query[traits.httpQuery] = buffer; + } + else { + serializer.write([ns, traits], data); + query[traits.httpQuery] = serializer.flush(); + } + } + async deserializeResponse(operationSchema, context, response) { + const deserializer = this.deserializer; + const ns = schema.NormalizedSchema.of(operationSchema.output); + const dataObject = {}; + if (response.statusCode >= 300) { + const bytes = await collectBody(response.body, context); + if (bytes.byteLength > 0) { + Object.assign(dataObject, await deserializer.read(15, bytes)); + } + await this.handleError(operationSchema, context, response, dataObject, this.deserializeMetadata(response)); + throw new Error("@smithy/core/protocols - HTTP Protocol error handler failed to throw."); + } + for (const header in response.headers) { + const value = response.headers[header]; + delete response.headers[header]; + response.headers[header.toLowerCase()] = value; + } + const nonHttpBindingMembers = await this.deserializeHttpMessage(ns, context, response, dataObject); + if (nonHttpBindingMembers.length) { + const bytes = await collectBody(response.body, context); + if (bytes.byteLength > 0) { + const dataFromBody = await deserializer.read(ns, bytes); + for (const member of nonHttpBindingMembers) { + if (dataFromBody[member] != null) { + dataObject[member] = dataFromBody[member]; + } + } + } + } + else if (nonHttpBindingMembers.discardResponseBody) { + await collectBody(response.body, context); + } + dataObject.$metadata = this.deserializeMetadata(response); + return dataObject; + } + async deserializeHttpMessage(schema$1, context, response, arg4, arg5) { + let dataObject; + if (arg4 instanceof Set) { + dataObject = arg5; + } + else { + dataObject = arg4; + } + let discardResponseBody = true; + const deserializer = this.deserializer; + const ns = schema.NormalizedSchema.of(schema$1); + const nonHttpBindingMembers = []; + for (const [memberName, memberSchema] of ns.structIterator()) { + const memberTraits = memberSchema.getMemberTraits(); + if (memberTraits.httpPayload) { + discardResponseBody = false; + const isStreaming = memberSchema.isStreaming(); + if (isStreaming) { + const isEventStream = memberSchema.isStructSchema(); + if (isEventStream) { + dataObject[memberName] = await this.deserializeEventStream({ + response, + responseSchema: ns, + }); + } + else { + dataObject[memberName] = utilStream.sdkStreamMixin(response.body); + } + } + else if (response.body) { + const bytes = await collectBody(response.body, context); + if (bytes.byteLength > 0) { + dataObject[memberName] = await deserializer.read(memberSchema, bytes); + } + } + } + else if (memberTraits.httpHeader) { + const key = String(memberTraits.httpHeader).toLowerCase(); + const value = response.headers[key]; + if (null != value) { + if (memberSchema.isListSchema()) { + const headerListValueSchema = memberSchema.getValueSchema(); + headerListValueSchema.getMergedTraits().httpHeader = key; + let sections; + if (headerListValueSchema.isTimestampSchema() && + headerListValueSchema.getSchema() === 4) { + sections = serde.splitEvery(value, ",", 2); + } + else { + sections = serde.splitHeader(value); + } + const list = []; + for (const section of sections) { + list.push(await deserializer.read(headerListValueSchema, section.trim())); + } + dataObject[memberName] = list; + } + else { + dataObject[memberName] = await deserializer.read(memberSchema, value); + } + } + } + else if (memberTraits.httpPrefixHeaders !== undefined) { + dataObject[memberName] = {}; + for (const [header, value] of Object.entries(response.headers)) { + if (header.startsWith(memberTraits.httpPrefixHeaders)) { + const valueSchema = memberSchema.getValueSchema(); + valueSchema.getMergedTraits().httpHeader = header; + dataObject[memberName][header.slice(memberTraits.httpPrefixHeaders.length)] = await deserializer.read(valueSchema, value); + } + } + } + else if (memberTraits.httpResponseCode) { + dataObject[memberName] = response.statusCode; + } + else { + nonHttpBindingMembers.push(memberName); + } + } + nonHttpBindingMembers.discardResponseBody = discardResponseBody; + return nonHttpBindingMembers; + } +} + +class RpcProtocol extends HttpProtocol { + async serializeRequest(operationSchema, input, context) { + const serializer = this.serializer; + const query = {}; + const headers = {}; + const endpoint = await context.endpoint(); + const ns = schema.NormalizedSchema.of(operationSchema?.input); + const schema$1 = ns.getSchema(); + let payload; + const request = new protocolHttp.HttpRequest({ + protocol: "", + hostname: "", + port: undefined, + path: "/", + fragment: undefined, + query: query, + headers: headers, + body: undefined, + }); + if (endpoint) { + this.updateServiceEndpoint(request, endpoint); + this.setHostPrefix(request, operationSchema, input); + } + const _input = { + ...input, + }; + if (input) { + const eventStreamMember = ns.getEventStreamMember(); + if (eventStreamMember) { + if (_input[eventStreamMember]) { + const initialRequest = {}; + for (const [memberName, memberSchema] of ns.structIterator()) { + if (memberName !== eventStreamMember && _input[memberName]) { + serializer.write(memberSchema, _input[memberName]); + initialRequest[memberName] = serializer.flush(); + } + } + payload = await this.serializeEventStream({ + eventStream: _input[eventStreamMember], + requestSchema: ns, + initialRequest, + }); + } + } + else { + serializer.write(schema$1, _input); + payload = serializer.flush(); + } + } + request.headers = Object.assign(request.headers, headers); + request.query = query; + request.body = payload; + request.method = "POST"; + return request; + } + async deserializeResponse(operationSchema, context, response) { + const deserializer = this.deserializer; + const ns = schema.NormalizedSchema.of(operationSchema.output); + const dataObject = {}; + if (response.statusCode >= 300) { + const bytes = await collectBody(response.body, context); + if (bytes.byteLength > 0) { + Object.assign(dataObject, await deserializer.read(15, bytes)); + } + await this.handleError(operationSchema, context, response, dataObject, this.deserializeMetadata(response)); + throw new Error("@smithy/core/protocols - RPC Protocol error handler failed to throw."); + } + for (const header in response.headers) { + const value = response.headers[header]; + delete response.headers[header]; + response.headers[header.toLowerCase()] = value; + } + const eventStreamMember = ns.getEventStreamMember(); + if (eventStreamMember) { + dataObject[eventStreamMember] = await this.deserializeEventStream({ + response, + responseSchema: ns, + initialResponseContainer: dataObject, + }); + } + else { + const bytes = await collectBody(response.body, context); + if (bytes.byteLength > 0) { + Object.assign(dataObject, await deserializer.read(ns, bytes)); + } + } + dataObject.$metadata = this.deserializeMetadata(response); + return dataObject; + } +} + +const resolvedPath = (resolvedPath, input, memberName, labelValueProvider, uriLabel, isGreedyLabel) => { + if (input != null && input[memberName] !== undefined) { + const labelValue = labelValueProvider(); + if (labelValue == null || labelValue.length <= 0) { + throw new Error("Empty value provided for input HTTP label: " + memberName + "."); + } + resolvedPath = resolvedPath.replace(uriLabel, isGreedyLabel + ? labelValue + .split("/") + .map((segment) => extendedEncodeURIComponent(segment)) + .join("/") + : extendedEncodeURIComponent(labelValue)); + } + else { + throw new Error("No value provided for input HTTP label: " + memberName + "."); + } + return resolvedPath; +}; + +function requestBuilder(input, context) { + return new RequestBuilder(input, context); +} +class RequestBuilder { + input; + context; + query = {}; + method = ""; + headers = {}; + path = ""; + body = null; + hostname = ""; + resolvePathStack = []; + constructor(input, context) { + this.input = input; + this.context = context; + } + async build() { + const { hostname, protocol = "https", port, path: basePath } = await this.context.endpoint(); + this.path = basePath; + for (const resolvePath of this.resolvePathStack) { + resolvePath(this.path); + } + return new protocolHttp.HttpRequest({ + protocol, + hostname: this.hostname || hostname, + port, + method: this.method, + path: this.path, + query: this.query, + body: this.body, + headers: this.headers, + }); + } + hn(hostname) { + this.hostname = hostname; + return this; + } + bp(uriLabel) { + this.resolvePathStack.push((basePath) => { + this.path = `${basePath?.endsWith("/") ? basePath.slice(0, -1) : basePath || ""}` + uriLabel; + }); + return this; + } + p(memberName, labelValueProvider, uriLabel, isGreedyLabel) { + this.resolvePathStack.push((path) => { + this.path = resolvedPath(path, this.input, memberName, labelValueProvider, uriLabel, isGreedyLabel); + }); + return this; + } + h(headers) { + this.headers = headers; + return this; + } + q(query) { + this.query = query; + return this; + } + b(body) { + this.body = body; + return this; + } + m(method) { + this.method = method; + return this; + } +} + +function determineTimestampFormat(ns, settings) { + if (settings.timestampFormat.useTrait) { + if (ns.isTimestampSchema() && + (ns.getSchema() === 5 || + ns.getSchema() === 6 || + ns.getSchema() === 7)) { + return ns.getSchema(); + } + } + const { httpLabel, httpPrefixHeaders, httpHeader, httpQuery } = ns.getMergedTraits(); + const bindingFormat = settings.httpBindings + ? typeof httpPrefixHeaders === "string" || Boolean(httpHeader) + ? 6 + : Boolean(httpQuery) || Boolean(httpLabel) + ? 5 + : undefined + : undefined; + return bindingFormat ?? settings.timestampFormat.default; +} + +class FromStringShapeDeserializer extends SerdeContext { + settings; + constructor(settings) { + super(); + this.settings = settings; + } + read(_schema, data) { + const ns = schema.NormalizedSchema.of(_schema); + if (ns.isListSchema()) { + return serde.splitHeader(data).map((item) => this.read(ns.getValueSchema(), item)); + } + if (ns.isBlobSchema()) { + return (this.serdeContext?.base64Decoder ?? utilBase64.fromBase64)(data); + } + if (ns.isTimestampSchema()) { + const format = determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + return serde._parseRfc3339DateTimeWithOffset(data); + case 6: + return serde._parseRfc7231DateTime(data); + case 7: + return serde._parseEpochTimestamp(data); + default: + console.warn("Missing timestamp format, parsing value with Date constructor:", data); + return new Date(data); + } + } + if (ns.isStringSchema()) { + const mediaType = ns.getMergedTraits().mediaType; + let intermediateValue = data; + if (mediaType) { + if (ns.getMergedTraits().httpHeader) { + intermediateValue = this.base64ToUtf8(intermediateValue); + } + const isJson = mediaType === "application/json" || mediaType.endsWith("+json"); + if (isJson) { + intermediateValue = serde.LazyJsonString.from(intermediateValue); + } + return intermediateValue; + } + } + if (ns.isNumericSchema()) { + return Number(data); + } + if (ns.isBigIntegerSchema()) { + return BigInt(data); + } + if (ns.isBigDecimalSchema()) { + return new serde.NumericValue(data, "bigDecimal"); + } + if (ns.isBooleanSchema()) { + return String(data).toLowerCase() === "true"; + } + return data; + } + base64ToUtf8(base64String) { + return (this.serdeContext?.utf8Encoder ?? utilUtf8.toUtf8)((this.serdeContext?.base64Decoder ?? utilBase64.fromBase64)(base64String)); + } +} + +class HttpInterceptingShapeDeserializer extends SerdeContext { + codecDeserializer; + stringDeserializer; + constructor(codecDeserializer, codecSettings) { + super(); + this.codecDeserializer = codecDeserializer; + this.stringDeserializer = new FromStringShapeDeserializer(codecSettings); + } + setSerdeContext(serdeContext) { + this.stringDeserializer.setSerdeContext(serdeContext); + this.codecDeserializer.setSerdeContext(serdeContext); + this.serdeContext = serdeContext; + } + read(schema$1, data) { + const ns = schema.NormalizedSchema.of(schema$1); + const traits = ns.getMergedTraits(); + const toString = this.serdeContext?.utf8Encoder ?? utilUtf8.toUtf8; + if (traits.httpHeader || traits.httpResponseCode) { + return this.stringDeserializer.read(ns, toString(data)); + } + if (traits.httpPayload) { + if (ns.isBlobSchema()) { + const toBytes = this.serdeContext?.utf8Decoder ?? utilUtf8.fromUtf8; + if (typeof data === "string") { + return toBytes(data); + } + return data; + } + else if (ns.isStringSchema()) { + if ("byteLength" in data) { + return toString(data); + } + return data; + } + } + return this.codecDeserializer.read(ns, data); + } +} + +class ToStringShapeSerializer extends SerdeContext { + settings; + stringBuffer = ""; + constructor(settings) { + super(); + this.settings = settings; + } + write(schema$1, value) { + const ns = schema.NormalizedSchema.of(schema$1); + switch (typeof value) { + case "object": + if (value === null) { + this.stringBuffer = "null"; + return; + } + if (ns.isTimestampSchema()) { + if (!(value instanceof Date)) { + throw new Error(`@smithy/core/protocols - received non-Date value ${value} when schema expected Date in ${ns.getName(true)}`); + } + const format = determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + this.stringBuffer = value.toISOString().replace(".000Z", "Z"); + break; + case 6: + this.stringBuffer = serde.dateToUtcString(value); + break; + case 7: + this.stringBuffer = String(value.getTime() / 1000); + break; + default: + console.warn("Missing timestamp format, using epoch seconds", value); + this.stringBuffer = String(value.getTime() / 1000); + } + return; + } + if (ns.isBlobSchema() && "byteLength" in value) { + this.stringBuffer = (this.serdeContext?.base64Encoder ?? utilBase64.toBase64)(value); + return; + } + if (ns.isListSchema() && Array.isArray(value)) { + let buffer = ""; + for (const item of value) { + this.write([ns.getValueSchema(), ns.getMergedTraits()], item); + const headerItem = this.flush(); + const serialized = ns.getValueSchema().isTimestampSchema() ? headerItem : serde.quoteHeader(headerItem); + if (buffer !== "") { + buffer += ", "; + } + buffer += serialized; + } + this.stringBuffer = buffer; + return; + } + this.stringBuffer = JSON.stringify(value, null, 2); + break; + case "string": + const mediaType = ns.getMergedTraits().mediaType; + let intermediateValue = value; + if (mediaType) { + const isJson = mediaType === "application/json" || mediaType.endsWith("+json"); + if (isJson) { + intermediateValue = serde.LazyJsonString.from(intermediateValue); + } + if (ns.getMergedTraits().httpHeader) { + this.stringBuffer = (this.serdeContext?.base64Encoder ?? utilBase64.toBase64)(intermediateValue.toString()); + return; + } + } + this.stringBuffer = value; + break; + default: + if (ns.isIdempotencyToken()) { + this.stringBuffer = serde.generateIdempotencyToken(); + } + else { + this.stringBuffer = String(value); + } + } + } + flush() { + const buffer = this.stringBuffer; + this.stringBuffer = ""; + return buffer; + } +} + +class HttpInterceptingShapeSerializer { + codecSerializer; + stringSerializer; + buffer; + constructor(codecSerializer, codecSettings, stringSerializer = new ToStringShapeSerializer(codecSettings)) { + this.codecSerializer = codecSerializer; + this.stringSerializer = stringSerializer; + } + setSerdeContext(serdeContext) { + this.codecSerializer.setSerdeContext(serdeContext); + this.stringSerializer.setSerdeContext(serdeContext); + } + write(schema$1, value) { + const ns = schema.NormalizedSchema.of(schema$1); + const traits = ns.getMergedTraits(); + if (traits.httpHeader || traits.httpLabel || traits.httpQuery) { + this.stringSerializer.write(ns, value); + this.buffer = this.stringSerializer.flush(); + return; + } + return this.codecSerializer.write(ns, value); + } + flush() { + if (this.buffer !== undefined) { + const buffer = this.buffer; + this.buffer = undefined; + return buffer; + } + return this.codecSerializer.flush(); + } +} + +exports.FromStringShapeDeserializer = FromStringShapeDeserializer; +exports.HttpBindingProtocol = HttpBindingProtocol; +exports.HttpInterceptingShapeDeserializer = HttpInterceptingShapeDeserializer; +exports.HttpInterceptingShapeSerializer = HttpInterceptingShapeSerializer; +exports.HttpProtocol = HttpProtocol; +exports.RequestBuilder = RequestBuilder; +exports.RpcProtocol = RpcProtocol; +exports.SerdeContext = SerdeContext; +exports.ToStringShapeSerializer = ToStringShapeSerializer; +exports.collectBody = collectBody; +exports.determineTimestampFormat = determineTimestampFormat; +exports.extendedEncodeURIComponent = extendedEncodeURIComponent; +exports.requestBuilder = requestBuilder; +exports.resolvedPath = resolvedPath; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-cjs/submodules/schema/index.js b/food-ordering-app/server/node_modules/@smithy/core/dist-cjs/submodules/schema/index.js new file mode 100644 index 000000000..a942fe8ac --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-cjs/submodules/schema/index.js @@ -0,0 +1,698 @@ +'use strict'; + +var protocolHttp = require('@smithy/protocol-http'); +var utilMiddleware = require('@smithy/util-middleware'); +var endpoints = require('@smithy/core/endpoints'); + +const deref = (schemaRef) => { + if (typeof schemaRef === "function") { + return schemaRef(); + } + return schemaRef; +}; + +const operation = (namespace, name, traits, input, output) => ({ + name, + namespace, + traits, + input, + output, +}); + +const schemaDeserializationMiddleware = (config) => (next, context) => async (args) => { + const { response } = await next(args); + const { operationSchema } = utilMiddleware.getSmithyContext(context); + const [, ns, n, t, i, o] = operationSchema ?? []; + try { + const parsed = await config.protocol.deserializeResponse(operation(ns, n, t, i, o), { + ...config, + ...context, + }, response); + return { + response, + output: parsed, + }; + } + catch (error) { + Object.defineProperty(error, "$response", { + value: response, + enumerable: false, + writable: false, + configurable: false, + }); + if (!("$metadata" in error)) { + const hint = `Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.`; + try { + error.message += "\n " + hint; + } + catch (e) { + if (!context.logger || context.logger?.constructor?.name === "NoOpLogger") { + console.warn(hint); + } + else { + context.logger?.warn?.(hint); + } + } + if (typeof error.$responseBodyText !== "undefined") { + if (error.$response) { + error.$response.body = error.$responseBodyText; + } + } + try { + if (protocolHttp.HttpResponse.isInstance(response)) { + const { headers = {} } = response; + const headerEntries = Object.entries(headers); + error.$metadata = { + httpStatusCode: response.statusCode, + requestId: findHeader(/^x-[\w-]+-request-?id$/, headerEntries), + extendedRequestId: findHeader(/^x-[\w-]+-id-2$/, headerEntries), + cfId: findHeader(/^x-[\w-]+-cf-id$/, headerEntries), + }; + } + } + catch (e) { + } + } + throw error; + } +}; +const findHeader = (pattern, headers) => { + return (headers.find(([k]) => { + return k.match(pattern); + }) || [void 0, void 0])[1]; +}; + +const schemaSerializationMiddleware = (config) => (next, context) => async (args) => { + const { operationSchema } = utilMiddleware.getSmithyContext(context); + const [, ns, n, t, i, o] = operationSchema ?? []; + const endpoint = context.endpointV2 + ? async () => endpoints.toEndpointV1(context.endpointV2) + : config.endpoint; + const request = await config.protocol.serializeRequest(operation(ns, n, t, i, o), args.input, { + ...config, + ...context, + endpoint, + }); + return next({ + ...args, + request, + }); +}; + +const deserializerMiddlewareOption = { + name: "deserializerMiddleware", + step: "deserialize", + tags: ["DESERIALIZER"], + override: true, +}; +const serializerMiddlewareOption = { + name: "serializerMiddleware", + step: "serialize", + tags: ["SERIALIZER"], + override: true, +}; +function getSchemaSerdePlugin(config) { + return { + applyToStack: (commandStack) => { + commandStack.add(schemaSerializationMiddleware(config), serializerMiddlewareOption); + commandStack.add(schemaDeserializationMiddleware(config), deserializerMiddlewareOption); + config.protocol.setSerdeContext(config); + }, + }; +} + +class Schema { + name; + namespace; + traits; + static assign(instance, values) { + const schema = Object.assign(instance, values); + return schema; + } + static [Symbol.hasInstance](lhs) { + const isPrototype = this.prototype.isPrototypeOf(lhs); + if (!isPrototype && typeof lhs === "object" && lhs !== null) { + const list = lhs; + return list.symbol === this.symbol; + } + return isPrototype; + } + getName() { + return this.namespace + "#" + this.name; + } +} + +class ListSchema extends Schema { + static symbol = Symbol.for("@smithy/lis"); + name; + traits; + valueSchema; + symbol = ListSchema.symbol; +} +const list = (namespace, name, traits, valueSchema) => Schema.assign(new ListSchema(), { + name, + namespace, + traits, + valueSchema, +}); + +class MapSchema extends Schema { + static symbol = Symbol.for("@smithy/map"); + name; + traits; + keySchema; + valueSchema; + symbol = MapSchema.symbol; +} +const map = (namespace, name, traits, keySchema, valueSchema) => Schema.assign(new MapSchema(), { + name, + namespace, + traits, + keySchema, + valueSchema, +}); + +class OperationSchema extends Schema { + static symbol = Symbol.for("@smithy/ope"); + name; + traits; + input; + output; + symbol = OperationSchema.symbol; +} +const op = (namespace, name, traits, input, output) => Schema.assign(new OperationSchema(), { + name, + namespace, + traits, + input, + output, +}); + +class StructureSchema extends Schema { + static symbol = Symbol.for("@smithy/str"); + name; + traits; + memberNames; + memberList; + symbol = StructureSchema.symbol; +} +const struct = (namespace, name, traits, memberNames, memberList) => Schema.assign(new StructureSchema(), { + name, + namespace, + traits, + memberNames, + memberList, +}); + +class ErrorSchema extends StructureSchema { + static symbol = Symbol.for("@smithy/err"); + ctor; + symbol = ErrorSchema.symbol; +} +const error = (namespace, name, traits, memberNames, memberList, ctor) => Schema.assign(new ErrorSchema(), { + name, + namespace, + traits, + memberNames, + memberList, + ctor: null, +}); + +const traitsCache = []; +function translateTraits(indicator) { + if (typeof indicator === "object") { + return indicator; + } + indicator = indicator | 0; + if (traitsCache[indicator]) { + return traitsCache[indicator]; + } + const traits = {}; + let i = 0; + for (const trait of [ + "httpLabel", + "idempotent", + "idempotencyToken", + "sensitive", + "httpPayload", + "httpResponseCode", + "httpQueryParams", + ]) { + if (((indicator >> i++) & 1) === 1) { + traits[trait] = 1; + } + } + return (traitsCache[indicator] = traits); +} + +const anno = { + it: Symbol.for("@smithy/nor-struct-it"), + ns: Symbol.for("@smithy/ns"), +}; +const simpleSchemaCacheN = []; +const simpleSchemaCacheS = {}; +class NormalizedSchema { + ref; + memberName; + static symbol = Symbol.for("@smithy/nor"); + symbol = NormalizedSchema.symbol; + name; + schema; + _isMemberSchema; + traits; + memberTraits; + normalizedTraits; + constructor(ref, memberName) { + this.ref = ref; + this.memberName = memberName; + const traitStack = []; + let _ref = ref; + let schema = ref; + this._isMemberSchema = false; + while (isMemberSchema(_ref)) { + traitStack.push(_ref[1]); + _ref = _ref[0]; + schema = deref(_ref); + this._isMemberSchema = true; + } + if (traitStack.length > 0) { + this.memberTraits = {}; + for (let i = traitStack.length - 1; i >= 0; --i) { + const traitSet = traitStack[i]; + Object.assign(this.memberTraits, translateTraits(traitSet)); + } + } + else { + this.memberTraits = 0; + } + if (schema instanceof NormalizedSchema) { + const computedMemberTraits = this.memberTraits; + Object.assign(this, schema); + this.memberTraits = Object.assign({}, computedMemberTraits, schema.getMemberTraits(), this.getMemberTraits()); + this.normalizedTraits = void 0; + this.memberName = memberName ?? schema.memberName; + return; + } + this.schema = deref(schema); + if (isStaticSchema(this.schema)) { + this.name = `${this.schema[1]}#${this.schema[2]}`; + this.traits = this.schema[3]; + } + else { + this.name = this.memberName ?? String(schema); + this.traits = 0; + } + if (this._isMemberSchema && !memberName) { + throw new Error(`@smithy/core/schema - NormalizedSchema member init ${this.getName(true)} missing member name.`); + } + } + static [Symbol.hasInstance](lhs) { + const isPrototype = this.prototype.isPrototypeOf(lhs); + if (!isPrototype && typeof lhs === "object" && lhs !== null) { + const ns = lhs; + return ns.symbol === this.symbol; + } + return isPrototype; + } + static of(ref) { + const keyAble = typeof ref === "function" || (typeof ref === "object" && ref !== null); + if (typeof ref === "number") { + if (simpleSchemaCacheN[ref]) { + return simpleSchemaCacheN[ref]; + } + } + else if (typeof ref === "string") { + if (simpleSchemaCacheS[ref]) { + return simpleSchemaCacheS[ref]; + } + } + else if (keyAble) { + if (ref[anno.ns]) { + return ref[anno.ns]; + } + } + const sc = deref(ref); + if (sc instanceof NormalizedSchema) { + return sc; + } + if (isMemberSchema(sc)) { + const [ns, traits] = sc; + if (ns instanceof NormalizedSchema) { + Object.assign(ns.getMergedTraits(), translateTraits(traits)); + return ns; + } + throw new Error(`@smithy/core/schema - may not init unwrapped member schema=${JSON.stringify(ref, null, 2)}.`); + } + const ns = new NormalizedSchema(sc); + if (keyAble) { + return (ref[anno.ns] = ns); + } + if (typeof sc === "string") { + return (simpleSchemaCacheS[sc] = ns); + } + if (typeof sc === "number") { + return (simpleSchemaCacheN[sc] = ns); + } + return ns; + } + getSchema() { + const sc = this.schema; + if (Array.isArray(sc) && sc[0] === 0) { + return sc[4]; + } + return sc; + } + getName(withNamespace = false) { + const { name } = this; + const short = !withNamespace && name && name.includes("#"); + return short ? name.split("#")[1] : name || undefined; + } + getMemberName() { + return this.memberName; + } + isMemberSchema() { + return this._isMemberSchema; + } + isListSchema() { + const sc = this.getSchema(); + return typeof sc === "number" + ? sc >= 64 && sc < 128 + : sc[0] === 1; + } + isMapSchema() { + const sc = this.getSchema(); + return typeof sc === "number" + ? sc >= 128 && sc <= 0b1111_1111 + : sc[0] === 2; + } + isStructSchema() { + const sc = this.getSchema(); + if (typeof sc !== "object") { + return false; + } + const id = sc[0]; + return (id === 3 || + id === -3 || + id === 4); + } + isUnionSchema() { + const sc = this.getSchema(); + if (typeof sc !== "object") { + return false; + } + return sc[0] === 4; + } + isBlobSchema() { + const sc = this.getSchema(); + return sc === 21 || sc === 42; + } + isTimestampSchema() { + const sc = this.getSchema(); + return (typeof sc === "number" && + sc >= 4 && + sc <= 7); + } + isUnitSchema() { + return this.getSchema() === "unit"; + } + isDocumentSchema() { + return this.getSchema() === 15; + } + isStringSchema() { + return this.getSchema() === 0; + } + isBooleanSchema() { + return this.getSchema() === 2; + } + isNumericSchema() { + return this.getSchema() === 1; + } + isBigIntegerSchema() { + return this.getSchema() === 17; + } + isBigDecimalSchema() { + return this.getSchema() === 19; + } + isStreaming() { + const { streaming } = this.getMergedTraits(); + return !!streaming || this.getSchema() === 42; + } + isIdempotencyToken() { + return !!this.getMergedTraits().idempotencyToken; + } + getMergedTraits() { + return (this.normalizedTraits ?? + (this.normalizedTraits = { + ...this.getOwnTraits(), + ...this.getMemberTraits(), + })); + } + getMemberTraits() { + return translateTraits(this.memberTraits); + } + getOwnTraits() { + return translateTraits(this.traits); + } + getKeySchema() { + const [isDoc, isMap] = [this.isDocumentSchema(), this.isMapSchema()]; + if (!isDoc && !isMap) { + throw new Error(`@smithy/core/schema - cannot get key for non-map: ${this.getName(true)}`); + } + const schema = this.getSchema(); + const memberSchema = isDoc + ? 15 + : schema[4] ?? 0; + return member([memberSchema, 0], "key"); + } + getValueSchema() { + const sc = this.getSchema(); + const [isDoc, isMap, isList] = [this.isDocumentSchema(), this.isMapSchema(), this.isListSchema()]; + const memberSchema = typeof sc === "number" + ? 0b0011_1111 & sc + : sc && typeof sc === "object" && (isMap || isList) + ? sc[3 + sc[0]] + : isDoc + ? 15 + : void 0; + if (memberSchema != null) { + return member([memberSchema, 0], isMap ? "value" : "member"); + } + throw new Error(`@smithy/core/schema - ${this.getName(true)} has no value member.`); + } + getMemberSchema(memberName) { + const struct = this.getSchema(); + if (this.isStructSchema() && struct[4].includes(memberName)) { + const i = struct[4].indexOf(memberName); + const memberSchema = struct[5][i]; + return member(isMemberSchema(memberSchema) ? memberSchema : [memberSchema, 0], memberName); + } + if (this.isDocumentSchema()) { + return member([15, 0], memberName); + } + throw new Error(`@smithy/core/schema - ${this.getName(true)} has no member=${memberName}.`); + } + getMemberSchemas() { + const buffer = {}; + try { + for (const [k, v] of this.structIterator()) { + buffer[k] = v; + } + } + catch (ignored) { } + return buffer; + } + getEventStreamMember() { + if (this.isStructSchema()) { + for (const [memberName, memberSchema] of this.structIterator()) { + if (memberSchema.isStreaming() && memberSchema.isStructSchema()) { + return memberName; + } + } + } + return ""; + } + *structIterator() { + if (this.isUnitSchema()) { + return; + } + if (!this.isStructSchema()) { + throw new Error("@smithy/core/schema - cannot iterate non-struct schema."); + } + const struct = this.getSchema(); + const z = struct[4].length; + let it = struct[anno.it]; + if (it && z === it.length) { + yield* it; + return; + } + it = Array(z); + for (let i = 0; i < z; ++i) { + const k = struct[4][i]; + const v = member([struct[5][i], 0], k); + yield (it[i] = [k, v]); + } + struct[anno.it] = it; + } +} +function member(memberSchema, memberName) { + if (memberSchema instanceof NormalizedSchema) { + return Object.assign(memberSchema, { + memberName, + _isMemberSchema: true, + }); + } + const internalCtorAccess = NormalizedSchema; + return new internalCtorAccess(memberSchema, memberName); +} +const isMemberSchema = (sc) => Array.isArray(sc) && sc.length === 2; +const isStaticSchema = (sc) => Array.isArray(sc) && sc.length >= 5; + +class SimpleSchema extends Schema { + static symbol = Symbol.for("@smithy/sim"); + name; + schemaRef; + traits; + symbol = SimpleSchema.symbol; +} +const sim = (namespace, name, schemaRef, traits) => Schema.assign(new SimpleSchema(), { + name, + namespace, + traits, + schemaRef, +}); +const simAdapter = (namespace, name, traits, schemaRef) => Schema.assign(new SimpleSchema(), { + name, + namespace, + traits, + schemaRef, +}); + +const SCHEMA = { + BLOB: 0b0001_0101, + STREAMING_BLOB: 0b0010_1010, + BOOLEAN: 0b0000_0010, + STRING: 0b0000_0000, + NUMERIC: 0b0000_0001, + BIG_INTEGER: 0b0001_0001, + BIG_DECIMAL: 0b0001_0011, + DOCUMENT: 0b0000_1111, + TIMESTAMP_DEFAULT: 0b0000_0100, + TIMESTAMP_DATE_TIME: 0b0000_0101, + TIMESTAMP_HTTP_DATE: 0b0000_0110, + TIMESTAMP_EPOCH_SECONDS: 0b0000_0111, + LIST_MODIFIER: 0b0100_0000, + MAP_MODIFIER: 0b1000_0000, +}; + +class TypeRegistry { + namespace; + schemas; + exceptions; + static registries = new Map(); + constructor(namespace, schemas = new Map(), exceptions = new Map()) { + this.namespace = namespace; + this.schemas = schemas; + this.exceptions = exceptions; + } + static for(namespace) { + if (!TypeRegistry.registries.has(namespace)) { + TypeRegistry.registries.set(namespace, new TypeRegistry(namespace)); + } + return TypeRegistry.registries.get(namespace); + } + copyFrom(other) { + const { schemas, exceptions } = this; + for (const [k, v] of other.schemas) { + if (!schemas.has(k)) { + schemas.set(k, v); + } + } + for (const [k, v] of other.exceptions) { + if (!exceptions.has(k)) { + exceptions.set(k, v); + } + } + } + register(shapeId, schema) { + const qualifiedName = this.normalizeShapeId(shapeId); + for (const r of [this, TypeRegistry.for(qualifiedName.split("#")[0])]) { + r.schemas.set(qualifiedName, schema); + } + } + getSchema(shapeId) { + const id = this.normalizeShapeId(shapeId); + if (!this.schemas.has(id)) { + throw new Error(`@smithy/core/schema - schema not found for ${id}`); + } + return this.schemas.get(id); + } + registerError(es, ctor) { + const $error = es; + const ns = $error[1]; + for (const r of [this, TypeRegistry.for(ns)]) { + r.schemas.set(ns + "#" + $error[2], $error); + r.exceptions.set($error, ctor); + } + } + getErrorCtor(es) { + const $error = es; + if (this.exceptions.has($error)) { + return this.exceptions.get($error); + } + const registry = TypeRegistry.for($error[1]); + return registry.exceptions.get($error); + } + getBaseException() { + for (const exceptionKey of this.exceptions.keys()) { + if (Array.isArray(exceptionKey)) { + const [, ns, name] = exceptionKey; + const id = ns + "#" + name; + if (id.startsWith("smithy.ts.sdk.synthetic.") && id.endsWith("ServiceException")) { + return exceptionKey; + } + } + } + return undefined; + } + find(predicate) { + return [...this.schemas.values()].find(predicate); + } + clear() { + this.schemas.clear(); + this.exceptions.clear(); + } + normalizeShapeId(shapeId) { + if (shapeId.includes("#")) { + return shapeId; + } + return this.namespace + "#" + shapeId; + } +} + +exports.ErrorSchema = ErrorSchema; +exports.ListSchema = ListSchema; +exports.MapSchema = MapSchema; +exports.NormalizedSchema = NormalizedSchema; +exports.OperationSchema = OperationSchema; +exports.SCHEMA = SCHEMA; +exports.Schema = Schema; +exports.SimpleSchema = SimpleSchema; +exports.StructureSchema = StructureSchema; +exports.TypeRegistry = TypeRegistry; +exports.deref = deref; +exports.deserializerMiddlewareOption = deserializerMiddlewareOption; +exports.error = error; +exports.getSchemaSerdePlugin = getSchemaSerdePlugin; +exports.isStaticSchema = isStaticSchema; +exports.list = list; +exports.map = map; +exports.op = op; +exports.operation = operation; +exports.serializerMiddlewareOption = serializerMiddlewareOption; +exports.sim = sim; +exports.simAdapter = simAdapter; +exports.simpleSchemaCacheN = simpleSchemaCacheN; +exports.simpleSchemaCacheS = simpleSchemaCacheS; +exports.struct = struct; +exports.traitsCache = traitsCache; +exports.translateTraits = translateTraits; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-cjs/submodules/serde/index.js b/food-ordering-app/server/node_modules/@smithy/core/dist-cjs/submodules/serde/index.js new file mode 100644 index 000000000..02c06cc82 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-cjs/submodules/serde/index.js @@ -0,0 +1,694 @@ +'use strict'; + +var uuid = require('@smithy/uuid'); + +const copyDocumentWithTransform = (source, schemaRef, transform = (_) => _) => source; + +const parseBoolean = (value) => { + switch (value) { + case "true": + return true; + case "false": + return false; + default: + throw new Error(`Unable to parse boolean value "${value}"`); + } +}; +const expectBoolean = (value) => { + if (value === null || value === undefined) { + return undefined; + } + if (typeof value === "number") { + if (value === 0 || value === 1) { + logger.warn(stackTraceWarning(`Expected boolean, got ${typeof value}: ${value}`)); + } + if (value === 0) { + return false; + } + if (value === 1) { + return true; + } + } + if (typeof value === "string") { + const lower = value.toLowerCase(); + if (lower === "false" || lower === "true") { + logger.warn(stackTraceWarning(`Expected boolean, got ${typeof value}: ${value}`)); + } + if (lower === "false") { + return false; + } + if (lower === "true") { + return true; + } + } + if (typeof value === "boolean") { + return value; + } + throw new TypeError(`Expected boolean, got ${typeof value}: ${value}`); +}; +const expectNumber = (value) => { + if (value === null || value === undefined) { + return undefined; + } + if (typeof value === "string") { + const parsed = parseFloat(value); + if (!Number.isNaN(parsed)) { + if (String(parsed) !== String(value)) { + logger.warn(stackTraceWarning(`Expected number but observed string: ${value}`)); + } + return parsed; + } + } + if (typeof value === "number") { + return value; + } + throw new TypeError(`Expected number, got ${typeof value}: ${value}`); +}; +const MAX_FLOAT = Math.ceil(2 ** 127 * (2 - 2 ** -23)); +const expectFloat32 = (value) => { + const expected = expectNumber(value); + if (expected !== undefined && !Number.isNaN(expected) && expected !== Infinity && expected !== -Infinity) { + if (Math.abs(expected) > MAX_FLOAT) { + throw new TypeError(`Expected 32-bit float, got ${value}`); + } + } + return expected; +}; +const expectLong = (value) => { + if (value === null || value === undefined) { + return undefined; + } + if (Number.isInteger(value) && !Number.isNaN(value)) { + return value; + } + throw new TypeError(`Expected integer, got ${typeof value}: ${value}`); +}; +const expectInt = expectLong; +const expectInt32 = (value) => expectSizedInt(value, 32); +const expectShort = (value) => expectSizedInt(value, 16); +const expectByte = (value) => expectSizedInt(value, 8); +const expectSizedInt = (value, size) => { + const expected = expectLong(value); + if (expected !== undefined && castInt(expected, size) !== expected) { + throw new TypeError(`Expected ${size}-bit integer, got ${value}`); + } + return expected; +}; +const castInt = (value, size) => { + switch (size) { + case 32: + return Int32Array.of(value)[0]; + case 16: + return Int16Array.of(value)[0]; + case 8: + return Int8Array.of(value)[0]; + } +}; +const expectNonNull = (value, location) => { + if (value === null || value === undefined) { + if (location) { + throw new TypeError(`Expected a non-null value for ${location}`); + } + throw new TypeError("Expected a non-null value"); + } + return value; +}; +const expectObject = (value) => { + if (value === null || value === undefined) { + return undefined; + } + if (typeof value === "object" && !Array.isArray(value)) { + return value; + } + const receivedType = Array.isArray(value) ? "array" : typeof value; + throw new TypeError(`Expected object, got ${receivedType}: ${value}`); +}; +const expectString = (value) => { + if (value === null || value === undefined) { + return undefined; + } + if (typeof value === "string") { + return value; + } + if (["boolean", "number", "bigint"].includes(typeof value)) { + logger.warn(stackTraceWarning(`Expected string, got ${typeof value}: ${value}`)); + return String(value); + } + throw new TypeError(`Expected string, got ${typeof value}: ${value}`); +}; +const expectUnion = (value) => { + if (value === null || value === undefined) { + return undefined; + } + const asObject = expectObject(value); + const setKeys = Object.entries(asObject) + .filter(([, v]) => v != null) + .map(([k]) => k); + if (setKeys.length === 0) { + throw new TypeError(`Unions must have exactly one non-null member. None were found.`); + } + if (setKeys.length > 1) { + throw new TypeError(`Unions must have exactly one non-null member. Keys ${setKeys} were not null.`); + } + return asObject; +}; +const strictParseDouble = (value) => { + if (typeof value == "string") { + return expectNumber(parseNumber(value)); + } + return expectNumber(value); +}; +const strictParseFloat = strictParseDouble; +const strictParseFloat32 = (value) => { + if (typeof value == "string") { + return expectFloat32(parseNumber(value)); + } + return expectFloat32(value); +}; +const NUMBER_REGEX = /(-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?)|(-?Infinity)|(NaN)/g; +const parseNumber = (value) => { + const matches = value.match(NUMBER_REGEX); + if (matches === null || matches[0].length !== value.length) { + throw new TypeError(`Expected real number, got implicit NaN`); + } + return parseFloat(value); +}; +const limitedParseDouble = (value) => { + if (typeof value == "string") { + return parseFloatString(value); + } + return expectNumber(value); +}; +const handleFloat = limitedParseDouble; +const limitedParseFloat = limitedParseDouble; +const limitedParseFloat32 = (value) => { + if (typeof value == "string") { + return parseFloatString(value); + } + return expectFloat32(value); +}; +const parseFloatString = (value) => { + switch (value) { + case "NaN": + return NaN; + case "Infinity": + return Infinity; + case "-Infinity": + return -Infinity; + default: + throw new Error(`Unable to parse float value: ${value}`); + } +}; +const strictParseLong = (value) => { + if (typeof value === "string") { + return expectLong(parseNumber(value)); + } + return expectLong(value); +}; +const strictParseInt = strictParseLong; +const strictParseInt32 = (value) => { + if (typeof value === "string") { + return expectInt32(parseNumber(value)); + } + return expectInt32(value); +}; +const strictParseShort = (value) => { + if (typeof value === "string") { + return expectShort(parseNumber(value)); + } + return expectShort(value); +}; +const strictParseByte = (value) => { + if (typeof value === "string") { + return expectByte(parseNumber(value)); + } + return expectByte(value); +}; +const stackTraceWarning = (message) => { + return String(new TypeError(message).stack || message) + .split("\n") + .slice(0, 5) + .filter((s) => !s.includes("stackTraceWarning")) + .join("\n"); +}; +const logger = { + warn: console.warn, +}; + +const DAYS = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; +const MONTHS = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; +function dateToUtcString(date) { + const year = date.getUTCFullYear(); + const month = date.getUTCMonth(); + const dayOfWeek = date.getUTCDay(); + const dayOfMonthInt = date.getUTCDate(); + const hoursInt = date.getUTCHours(); + const minutesInt = date.getUTCMinutes(); + const secondsInt = date.getUTCSeconds(); + const dayOfMonthString = dayOfMonthInt < 10 ? `0${dayOfMonthInt}` : `${dayOfMonthInt}`; + const hoursString = hoursInt < 10 ? `0${hoursInt}` : `${hoursInt}`; + const minutesString = minutesInt < 10 ? `0${minutesInt}` : `${minutesInt}`; + const secondsString = secondsInt < 10 ? `0${secondsInt}` : `${secondsInt}`; + return `${DAYS[dayOfWeek]}, ${dayOfMonthString} ${MONTHS[month]} ${year} ${hoursString}:${minutesString}:${secondsString} GMT`; +} +const RFC3339 = new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?[zZ]$/); +const parseRfc3339DateTime = (value) => { + if (value === null || value === undefined) { + return undefined; + } + if (typeof value !== "string") { + throw new TypeError("RFC-3339 date-times must be expressed as strings"); + } + const match = RFC3339.exec(value); + if (!match) { + throw new TypeError("Invalid RFC-3339 date-time value"); + } + const [_, yearStr, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds] = match; + const year = strictParseShort(stripLeadingZeroes(yearStr)); + const month = parseDateValue(monthStr, "month", 1, 12); + const day = parseDateValue(dayStr, "day", 1, 31); + return buildDate(year, month, day, { hours, minutes, seconds, fractionalMilliseconds }); +}; +const RFC3339_WITH_OFFSET$1 = new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?(([-+]\d{2}\:\d{2})|[zZ])$/); +const parseRfc3339DateTimeWithOffset = (value) => { + if (value === null || value === undefined) { + return undefined; + } + if (typeof value !== "string") { + throw new TypeError("RFC-3339 date-times must be expressed as strings"); + } + const match = RFC3339_WITH_OFFSET$1.exec(value); + if (!match) { + throw new TypeError("Invalid RFC-3339 date-time value"); + } + const [_, yearStr, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds, offsetStr] = match; + const year = strictParseShort(stripLeadingZeroes(yearStr)); + const month = parseDateValue(monthStr, "month", 1, 12); + const day = parseDateValue(dayStr, "day", 1, 31); + const date = buildDate(year, month, day, { hours, minutes, seconds, fractionalMilliseconds }); + if (offsetStr.toUpperCase() != "Z") { + date.setTime(date.getTime() - parseOffsetToMilliseconds(offsetStr)); + } + return date; +}; +const IMF_FIXDATE$1 = new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/); +const RFC_850_DATE$1 = new RegExp(/^(?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d{2})-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/); +const ASC_TIME$1 = new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( [1-9]|\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? (\d{4})$/); +const parseRfc7231DateTime = (value) => { + if (value === null || value === undefined) { + return undefined; + } + if (typeof value !== "string") { + throw new TypeError("RFC-7231 date-times must be expressed as strings"); + } + let match = IMF_FIXDATE$1.exec(value); + if (match) { + const [_, dayStr, monthStr, yearStr, hours, minutes, seconds, fractionalMilliseconds] = match; + return buildDate(strictParseShort(stripLeadingZeroes(yearStr)), parseMonthByShortName(monthStr), parseDateValue(dayStr, "day", 1, 31), { hours, minutes, seconds, fractionalMilliseconds }); + } + match = RFC_850_DATE$1.exec(value); + if (match) { + const [_, dayStr, monthStr, yearStr, hours, minutes, seconds, fractionalMilliseconds] = match; + return adjustRfc850Year(buildDate(parseTwoDigitYear(yearStr), parseMonthByShortName(monthStr), parseDateValue(dayStr, "day", 1, 31), { + hours, + minutes, + seconds, + fractionalMilliseconds, + })); + } + match = ASC_TIME$1.exec(value); + if (match) { + const [_, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds, yearStr] = match; + return buildDate(strictParseShort(stripLeadingZeroes(yearStr)), parseMonthByShortName(monthStr), parseDateValue(dayStr.trimLeft(), "day", 1, 31), { hours, minutes, seconds, fractionalMilliseconds }); + } + throw new TypeError("Invalid RFC-7231 date-time value"); +}; +const parseEpochTimestamp = (value) => { + if (value === null || value === undefined) { + return undefined; + } + let valueAsDouble; + if (typeof value === "number") { + valueAsDouble = value; + } + else if (typeof value === "string") { + valueAsDouble = strictParseDouble(value); + } + else if (typeof value === "object" && value.tag === 1) { + valueAsDouble = value.value; + } + else { + throw new TypeError("Epoch timestamps must be expressed as floating point numbers or their string representation"); + } + if (Number.isNaN(valueAsDouble) || valueAsDouble === Infinity || valueAsDouble === -Infinity) { + throw new TypeError("Epoch timestamps must be valid, non-Infinite, non-NaN numerics"); + } + return new Date(Math.round(valueAsDouble * 1000)); +}; +const buildDate = (year, month, day, time) => { + const adjustedMonth = month - 1; + validateDayOfMonth(year, adjustedMonth, day); + return new Date(Date.UTC(year, adjustedMonth, day, parseDateValue(time.hours, "hour", 0, 23), parseDateValue(time.minutes, "minute", 0, 59), parseDateValue(time.seconds, "seconds", 0, 60), parseMilliseconds(time.fractionalMilliseconds))); +}; +const parseTwoDigitYear = (value) => { + const thisYear = new Date().getUTCFullYear(); + const valueInThisCentury = Math.floor(thisYear / 100) * 100 + strictParseShort(stripLeadingZeroes(value)); + if (valueInThisCentury < thisYear) { + return valueInThisCentury + 100; + } + return valueInThisCentury; +}; +const FIFTY_YEARS_IN_MILLIS = 50 * 365 * 24 * 60 * 60 * 1000; +const adjustRfc850Year = (input) => { + if (input.getTime() - new Date().getTime() > FIFTY_YEARS_IN_MILLIS) { + return new Date(Date.UTC(input.getUTCFullYear() - 100, input.getUTCMonth(), input.getUTCDate(), input.getUTCHours(), input.getUTCMinutes(), input.getUTCSeconds(), input.getUTCMilliseconds())); + } + return input; +}; +const parseMonthByShortName = (value) => { + const monthIdx = MONTHS.indexOf(value); + if (monthIdx < 0) { + throw new TypeError(`Invalid month: ${value}`); + } + return monthIdx + 1; +}; +const DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; +const validateDayOfMonth = (year, month, day) => { + let maxDays = DAYS_IN_MONTH[month]; + if (month === 1 && isLeapYear(year)) { + maxDays = 29; + } + if (day > maxDays) { + throw new TypeError(`Invalid day for ${MONTHS[month]} in ${year}: ${day}`); + } +}; +const isLeapYear = (year) => { + return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); +}; +const parseDateValue = (value, type, lower, upper) => { + const dateVal = strictParseByte(stripLeadingZeroes(value)); + if (dateVal < lower || dateVal > upper) { + throw new TypeError(`${type} must be between ${lower} and ${upper}, inclusive`); + } + return dateVal; +}; +const parseMilliseconds = (value) => { + if (value === null || value === undefined) { + return 0; + } + return strictParseFloat32("0." + value) * 1000; +}; +const parseOffsetToMilliseconds = (value) => { + const directionStr = value[0]; + let direction = 1; + if (directionStr == "+") { + direction = 1; + } + else if (directionStr == "-") { + direction = -1; + } + else { + throw new TypeError(`Offset direction, ${directionStr}, must be "+" or "-"`); + } + const hour = Number(value.substring(1, 3)); + const minute = Number(value.substring(4, 6)); + return direction * (hour * 60 + minute) * 60 * 1000; +}; +const stripLeadingZeroes = (value) => { + let idx = 0; + while (idx < value.length - 1 && value.charAt(idx) === "0") { + idx++; + } + if (idx === 0) { + return value; + } + return value.slice(idx); +}; + +const LazyJsonString = function LazyJsonString(val) { + const str = Object.assign(new String(val), { + deserializeJSON() { + return JSON.parse(String(val)); + }, + toString() { + return String(val); + }, + toJSON() { + return String(val); + }, + }); + return str; +}; +LazyJsonString.from = (object) => { + if (object && typeof object === "object" && (object instanceof LazyJsonString || "deserializeJSON" in object)) { + return object; + } + else if (typeof object === "string" || Object.getPrototypeOf(object) === String.prototype) { + return LazyJsonString(String(object)); + } + return LazyJsonString(JSON.stringify(object)); +}; +LazyJsonString.fromObject = LazyJsonString.from; + +function quoteHeader(part) { + if (part.includes(",") || part.includes('"')) { + part = `"${part.replace(/"/g, '\\"')}"`; + } + return part; +} + +const ddd = `(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)(?:[ne|u?r]?s?day)?`; +const mmm = `(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)`; +const time = `(\\d?\\d):(\\d{2}):(\\d{2})(?:\\.(\\d+))?`; +const date = `(\\d?\\d)`; +const year = `(\\d{4})`; +const RFC3339_WITH_OFFSET = new RegExp(/^(\d{4})-(\d\d)-(\d\d)[tT](\d\d):(\d\d):(\d\d)(\.(\d+))?(([-+]\d\d:\d\d)|[zZ])$/); +const IMF_FIXDATE = new RegExp(`^${ddd}, ${date} ${mmm} ${year} ${time} GMT$`); +const RFC_850_DATE = new RegExp(`^${ddd}, ${date}-${mmm}-(\\d\\d) ${time} GMT$`); +const ASC_TIME = new RegExp(`^${ddd} ${mmm} ( [1-9]|\\d\\d) ${time} ${year}$`); +const months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; +const _parseEpochTimestamp = (value) => { + if (value == null) { + return void 0; + } + let num = NaN; + if (typeof value === "number") { + num = value; + } + else if (typeof value === "string") { + if (!/^-?\d*\.?\d+$/.test(value)) { + throw new TypeError(`parseEpochTimestamp - numeric string invalid.`); + } + num = Number.parseFloat(value); + } + else if (typeof value === "object" && value.tag === 1) { + num = value.value; + } + if (isNaN(num) || Math.abs(num) === Infinity) { + throw new TypeError("Epoch timestamps must be valid finite numbers."); + } + return new Date(Math.round(num * 1000)); +}; +const _parseRfc3339DateTimeWithOffset = (value) => { + if (value == null) { + return void 0; + } + if (typeof value !== "string") { + throw new TypeError("RFC3339 timestamps must be strings"); + } + const matches = RFC3339_WITH_OFFSET.exec(value); + if (!matches) { + throw new TypeError(`Invalid RFC3339 timestamp format ${value}`); + } + const [, yearStr, monthStr, dayStr, hours, minutes, seconds, , ms, offsetStr] = matches; + range(monthStr, 1, 12); + range(dayStr, 1, 31); + range(hours, 0, 23); + range(minutes, 0, 59); + range(seconds, 0, 60); + const date = new Date(Date.UTC(Number(yearStr), Number(monthStr) - 1, Number(dayStr), Number(hours), Number(minutes), Number(seconds), Number(ms) ? Math.round(parseFloat(`0.${ms}`) * 1000) : 0)); + date.setUTCFullYear(Number(yearStr)); + if (offsetStr.toUpperCase() != "Z") { + const [, sign, offsetH, offsetM] = /([+-])(\d\d):(\d\d)/.exec(offsetStr) || [void 0, "+", 0, 0]; + const scalar = sign === "-" ? 1 : -1; + date.setTime(date.getTime() + scalar * (Number(offsetH) * 60 * 60 * 1000 + Number(offsetM) * 60 * 1000)); + } + return date; +}; +const _parseRfc7231DateTime = (value) => { + if (value == null) { + return void 0; + } + if (typeof value !== "string") { + throw new TypeError("RFC7231 timestamps must be strings."); + } + let day; + let month; + let year; + let hour; + let minute; + let second; + let fraction; + let matches; + if ((matches = IMF_FIXDATE.exec(value))) { + [, day, month, year, hour, minute, second, fraction] = matches; + } + else if ((matches = RFC_850_DATE.exec(value))) { + [, day, month, year, hour, minute, second, fraction] = matches; + year = (Number(year) + 1900).toString(); + } + else if ((matches = ASC_TIME.exec(value))) { + [, month, day, hour, minute, second, fraction, year] = matches; + } + if (year && second) { + const timestamp = Date.UTC(Number(year), months.indexOf(month), Number(day), Number(hour), Number(minute), Number(second), fraction ? Math.round(parseFloat(`0.${fraction}`) * 1000) : 0); + range(day, 1, 31); + range(hour, 0, 23); + range(minute, 0, 59); + range(second, 0, 60); + const date = new Date(timestamp); + date.setUTCFullYear(Number(year)); + return date; + } + throw new TypeError(`Invalid RFC7231 date-time value ${value}.`); +}; +function range(v, min, max) { + const _v = Number(v); + if (_v < min || _v > max) { + throw new Error(`Value ${_v} out of range [${min}, ${max}]`); + } +} + +function splitEvery(value, delimiter, numDelimiters) { + if (numDelimiters <= 0 || !Number.isInteger(numDelimiters)) { + throw new Error("Invalid number of delimiters (" + numDelimiters + ") for splitEvery."); + } + const segments = value.split(delimiter); + if (numDelimiters === 1) { + return segments; + } + const compoundSegments = []; + let currentSegment = ""; + for (let i = 0; i < segments.length; i++) { + if (currentSegment === "") { + currentSegment = segments[i]; + } + else { + currentSegment += delimiter + segments[i]; + } + if ((i + 1) % numDelimiters === 0) { + compoundSegments.push(currentSegment); + currentSegment = ""; + } + } + if (currentSegment !== "") { + compoundSegments.push(currentSegment); + } + return compoundSegments; +} + +const splitHeader = (value) => { + const z = value.length; + const values = []; + let withinQuotes = false; + let prevChar = undefined; + let anchor = 0; + for (let i = 0; i < z; ++i) { + const char = value[i]; + switch (char) { + case `"`: + if (prevChar !== "\\") { + withinQuotes = !withinQuotes; + } + break; + case ",": + if (!withinQuotes) { + values.push(value.slice(anchor, i)); + anchor = i + 1; + } + break; + } + prevChar = char; + } + values.push(value.slice(anchor)); + return values.map((v) => { + v = v.trim(); + const z = v.length; + if (z < 2) { + return v; + } + if (v[0] === `"` && v[z - 1] === `"`) { + v = v.slice(1, z - 1); + } + return v.replace(/\\"/g, '"'); + }); +}; + +const format = /^-?\d*(\.\d+)?$/; +class NumericValue { + string; + type; + constructor(string, type) { + this.string = string; + this.type = type; + if (!format.test(string)) { + throw new Error(`@smithy/core/serde - NumericValue must only contain [0-9], at most one decimal point ".", and an optional negation prefix "-".`); + } + } + toString() { + return this.string; + } + static [Symbol.hasInstance](object) { + if (!object || typeof object !== "object") { + return false; + } + const _nv = object; + return NumericValue.prototype.isPrototypeOf(object) || (_nv.type === "bigDecimal" && format.test(_nv.string)); + } +} +function nv(input) { + return new NumericValue(String(input), "bigDecimal"); +} + +exports.generateIdempotencyToken = uuid.v4; +exports.LazyJsonString = LazyJsonString; +exports.NumericValue = NumericValue; +exports._parseEpochTimestamp = _parseEpochTimestamp; +exports._parseRfc3339DateTimeWithOffset = _parseRfc3339DateTimeWithOffset; +exports._parseRfc7231DateTime = _parseRfc7231DateTime; +exports.copyDocumentWithTransform = copyDocumentWithTransform; +exports.dateToUtcString = dateToUtcString; +exports.expectBoolean = expectBoolean; +exports.expectByte = expectByte; +exports.expectFloat32 = expectFloat32; +exports.expectInt = expectInt; +exports.expectInt32 = expectInt32; +exports.expectLong = expectLong; +exports.expectNonNull = expectNonNull; +exports.expectNumber = expectNumber; +exports.expectObject = expectObject; +exports.expectShort = expectShort; +exports.expectString = expectString; +exports.expectUnion = expectUnion; +exports.handleFloat = handleFloat; +exports.limitedParseDouble = limitedParseDouble; +exports.limitedParseFloat = limitedParseFloat; +exports.limitedParseFloat32 = limitedParseFloat32; +exports.logger = logger; +exports.nv = nv; +exports.parseBoolean = parseBoolean; +exports.parseEpochTimestamp = parseEpochTimestamp; +exports.parseRfc3339DateTime = parseRfc3339DateTime; +exports.parseRfc3339DateTimeWithOffset = parseRfc3339DateTimeWithOffset; +exports.parseRfc7231DateTime = parseRfc7231DateTime; +exports.quoteHeader = quoteHeader; +exports.splitEvery = splitEvery; +exports.splitHeader = splitHeader; +exports.strictParseByte = strictParseByte; +exports.strictParseDouble = strictParseDouble; +exports.strictParseFloat = strictParseFloat; +exports.strictParseFloat32 = strictParseFloat32; +exports.strictParseInt = strictParseInt; +exports.strictParseInt32 = strictParseInt32; +exports.strictParseLong = strictParseLong; +exports.strictParseShort = strictParseShort; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/getSmithyContext.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/getSmithyContext.js new file mode 100644 index 000000000..3848a0c2f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/getSmithyContext.js @@ -0,0 +1,2 @@ +import { SMITHY_CONTEXT_KEY } from "@smithy/types"; +export const getSmithyContext = (context) => context[SMITHY_CONTEXT_KEY] || (context[SMITHY_CONTEXT_KEY] = {}); diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/index.js new file mode 100644 index 000000000..82c90b929 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/index.js @@ -0,0 +1,8 @@ +export * from "./getSmithyContext"; +export * from "./middleware-http-auth-scheme"; +export * from "./middleware-http-signing"; +export * from "./normalizeProvider"; +export { createPaginator } from "./pagination/createPaginator"; +export * from "./request-builder/requestBuilder"; +export * from "./setFeature"; +export * from "./util-identity-and-auth"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.js new file mode 100644 index 000000000..d0aaae6ed --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.js @@ -0,0 +1,17 @@ +import { httpAuthSchemeMiddleware } from "./httpAuthSchemeMiddleware"; +export const httpAuthSchemeEndpointRuleSetMiddlewareOptions = { + step: "serialize", + tags: ["HTTP_AUTH_SCHEME"], + name: "httpAuthSchemeMiddleware", + override: true, + relation: "before", + toMiddleware: "endpointV2Middleware", +}; +export const getHttpAuthSchemeEndpointRuleSetPlugin = (config, { httpAuthSchemeParametersProvider, identityProviderConfigProvider, }) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo(httpAuthSchemeMiddleware(config, { + httpAuthSchemeParametersProvider, + identityProviderConfigProvider, + }), httpAuthSchemeEndpointRuleSetMiddlewareOptions); + }, +}); diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/getHttpAuthSchemePlugin.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/getHttpAuthSchemePlugin.js new file mode 100644 index 000000000..fbb448ed7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/getHttpAuthSchemePlugin.js @@ -0,0 +1,17 @@ +import { httpAuthSchemeMiddleware } from "./httpAuthSchemeMiddleware"; +export const httpAuthSchemeMiddlewareOptions = { + step: "serialize", + tags: ["HTTP_AUTH_SCHEME"], + name: "httpAuthSchemeMiddleware", + override: true, + relation: "before", + toMiddleware: "serializerMiddleware", +}; +export const getHttpAuthSchemePlugin = (config, { httpAuthSchemeParametersProvider, identityProviderConfigProvider, }) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo(httpAuthSchemeMiddleware(config, { + httpAuthSchemeParametersProvider, + identityProviderConfigProvider, + }), httpAuthSchemeMiddlewareOptions); + }, +}); diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/httpAuthSchemeMiddleware.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/httpAuthSchemeMiddleware.js new file mode 100644 index 000000000..dbd6cc0e9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/httpAuthSchemeMiddleware.js @@ -0,0 +1,42 @@ +import { getSmithyContext } from "@smithy/util-middleware"; +import { resolveAuthOptions } from "./resolveAuthOptions"; +function convertHttpAuthSchemesToMap(httpAuthSchemes) { + const map = new Map(); + for (const scheme of httpAuthSchemes) { + map.set(scheme.schemeId, scheme); + } + return map; +} +export const httpAuthSchemeMiddleware = (config, mwOptions) => (next, context) => async (args) => { + const options = config.httpAuthSchemeProvider(await mwOptions.httpAuthSchemeParametersProvider(config, context, args.input)); + const authSchemePreference = config.authSchemePreference ? await config.authSchemePreference() : []; + const resolvedOptions = resolveAuthOptions(options, authSchemePreference); + const authSchemes = convertHttpAuthSchemesToMap(config.httpAuthSchemes); + const smithyContext = getSmithyContext(context); + const failureReasons = []; + for (const option of resolvedOptions) { + const scheme = authSchemes.get(option.schemeId); + if (!scheme) { + failureReasons.push(`HttpAuthScheme \`${option.schemeId}\` was not enabled for this service.`); + continue; + } + const identityProvider = scheme.identityProvider(await mwOptions.identityProviderConfigProvider(config)); + if (!identityProvider) { + failureReasons.push(`HttpAuthScheme \`${option.schemeId}\` did not have an IdentityProvider configured.`); + continue; + } + const { identityProperties = {}, signingProperties = {} } = option.propertiesExtractor?.(config, context) || {}; + option.identityProperties = Object.assign(option.identityProperties || {}, identityProperties); + option.signingProperties = Object.assign(option.signingProperties || {}, signingProperties); + smithyContext.selectedHttpAuthScheme = { + httpAuthOption: option, + identity: await identityProvider(option.identityProperties), + signer: scheme.signer, + }; + break; + } + if (!smithyContext.selectedHttpAuthScheme) { + throw new Error(failureReasons.join("\n")); + } + return next(args); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/index.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/index.js new file mode 100644 index 000000000..5042e7dc7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/index.js @@ -0,0 +1,3 @@ +export * from "./httpAuthSchemeMiddleware"; +export * from "./getHttpAuthSchemeEndpointRuleSetPlugin"; +export * from "./getHttpAuthSchemePlugin"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/resolveAuthOptions.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/resolveAuthOptions.js new file mode 100644 index 000000000..8260757e7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/resolveAuthOptions.js @@ -0,0 +1,20 @@ +export const resolveAuthOptions = (candidateAuthOptions, authSchemePreference) => { + if (!authSchemePreference || authSchemePreference.length === 0) { + return candidateAuthOptions; + } + const preferredAuthOptions = []; + for (const preferredSchemeName of authSchemePreference) { + for (const candidateAuthOption of candidateAuthOptions) { + const candidateAuthSchemeName = candidateAuthOption.schemeId.split("#")[1]; + if (candidateAuthSchemeName === preferredSchemeName) { + preferredAuthOptions.push(candidateAuthOption); + } + } + } + for (const candidateAuthOption of candidateAuthOptions) { + if (!preferredAuthOptions.find(({ schemeId }) => schemeId === candidateAuthOption.schemeId)) { + preferredAuthOptions.push(candidateAuthOption); + } + } + return preferredAuthOptions; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/middleware-http-signing/getHttpSigningMiddleware.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/middleware-http-signing/getHttpSigningMiddleware.js new file mode 100644 index 000000000..e19971213 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/middleware-http-signing/getHttpSigningMiddleware.js @@ -0,0 +1,15 @@ +import { httpSigningMiddleware } from "./httpSigningMiddleware"; +export const httpSigningMiddlewareOptions = { + step: "finalizeRequest", + tags: ["HTTP_SIGNING"], + name: "httpSigningMiddleware", + aliases: ["apiKeyMiddleware", "tokenMiddleware", "awsAuthMiddleware"], + override: true, + relation: "after", + toMiddleware: "retryMiddleware", +}; +export const getHttpSigningPlugin = (config) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo(httpSigningMiddleware(config), httpSigningMiddlewareOptions); + }, +}); diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/middleware-http-signing/httpSigningMiddleware.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/middleware-http-signing/httpSigningMiddleware.js new file mode 100644 index 000000000..a9b7b1817 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/middleware-http-signing/httpSigningMiddleware.js @@ -0,0 +1,23 @@ +import { HttpRequest } from "@smithy/protocol-http"; +import { getSmithyContext } from "@smithy/util-middleware"; +const defaultErrorHandler = (signingProperties) => (error) => { + throw error; +}; +const defaultSuccessHandler = (httpResponse, signingProperties) => { }; +export const httpSigningMiddleware = (config) => (next, context) => async (args) => { + if (!HttpRequest.isInstance(args.request)) { + return next(args); + } + const smithyContext = getSmithyContext(context); + const scheme = smithyContext.selectedHttpAuthScheme; + if (!scheme) { + throw new Error(`No HttpAuthScheme was selected: unable to sign request`); + } + const { httpAuthOption: { signingProperties = {} }, identity, signer, } = scheme; + const output = await next({ + ...args, + request: await signer.sign(args.request, identity, signingProperties), + }).catch((signer.errorHandler || defaultErrorHandler)(signingProperties)); + (signer.successHandler || defaultSuccessHandler)(output.response, signingProperties); + return output; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/middleware-http-signing/index.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/middleware-http-signing/index.js new file mode 100644 index 000000000..7bc6cfe12 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/middleware-http-signing/index.js @@ -0,0 +1,2 @@ +export * from "./httpSigningMiddleware"; +export * from "./getHttpSigningMiddleware"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/normalizeProvider.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/normalizeProvider.js new file mode 100644 index 000000000..a83ea99eb --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/normalizeProvider.js @@ -0,0 +1,6 @@ +export const normalizeProvider = (input) => { + if (typeof input === "function") + return input; + const promisified = Promise.resolve(input); + return () => promisified; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/pagination/createPaginator.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/pagination/createPaginator.js new file mode 100644 index 000000000..4e8f88928 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/pagination/createPaginator.js @@ -0,0 +1,41 @@ +const makePagedClientRequest = async (CommandCtor, client, input, withCommand = (_) => _, ...args) => { + let command = new CommandCtor(input); + command = withCommand(command) ?? command; + return await client.send(command, ...args); +}; +export function createPaginator(ClientCtor, CommandCtor, inputTokenName, outputTokenName, pageSizeTokenName) { + return async function* paginateOperation(config, input, ...additionalArguments) { + const _input = input; + let token = config.startingToken ?? _input[inputTokenName]; + let hasNext = true; + let page; + while (hasNext) { + _input[inputTokenName] = token; + if (pageSizeTokenName) { + _input[pageSizeTokenName] = _input[pageSizeTokenName] ?? config.pageSize; + } + if (config.client instanceof ClientCtor) { + page = await makePagedClientRequest(CommandCtor, config.client, input, config.withCommand, ...additionalArguments); + } + else { + throw new Error(`Invalid client, expected instance of ${ClientCtor.name}`); + } + yield page; + const prevToken = token; + token = get(page, outputTokenName); + hasNext = !!(token && (!config.stopOnSameToken || token !== prevToken)); + } + return undefined; + }; +} +const get = (fromObject, path) => { + let cursor = fromObject; + const pathComponents = path.split("."); + for (const step of pathComponents) { + if (!cursor || typeof cursor !== "object") { + return undefined; + } + cursor = cursor[step]; + } + return cursor; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/request-builder/requestBuilder.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/request-builder/requestBuilder.js new file mode 100644 index 000000000..5b790a7f2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/request-builder/requestBuilder.js @@ -0,0 +1 @@ +export { requestBuilder } from "@smithy/core/protocols"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/setFeature.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/setFeature.js new file mode 100644 index 000000000..a3a030319 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/setFeature.js @@ -0,0 +1,11 @@ +export function setFeature(context, feature, value) { + if (!context.__smithy_context) { + context.__smithy_context = { + features: {}, + }; + } + else if (!context.__smithy_context.features) { + context.__smithy_context.features = {}; + } + context.__smithy_context.features[feature] = value; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/cbor/CborCodec.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/cbor/CborCodec.js new file mode 100644 index 000000000..c21c971d6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/cbor/CborCodec.js @@ -0,0 +1,206 @@ +import { SerdeContext } from "@smithy/core/protocols"; +import { NormalizedSchema } from "@smithy/core/schema"; +import { _parseEpochTimestamp, generateIdempotencyToken } from "@smithy/core/serde"; +import { NumericValue } from "@smithy/core/serde"; +import { fromBase64 } from "@smithy/util-base64"; +import { cbor } from "./cbor"; +import { dateToTag } from "./parseCborBody"; +export class CborCodec extends SerdeContext { + createSerializer() { + const serializer = new CborShapeSerializer(); + serializer.setSerdeContext(this.serdeContext); + return serializer; + } + createDeserializer() { + const deserializer = new CborShapeDeserializer(); + deserializer.setSerdeContext(this.serdeContext); + return deserializer; + } +} +export class CborShapeSerializer extends SerdeContext { + value; + write(schema, value) { + this.value = this.serialize(schema, value); + } + serialize(schema, source) { + const ns = NormalizedSchema.of(schema); + if (source == null) { + if (ns.isIdempotencyToken()) { + return generateIdempotencyToken(); + } + return source; + } + if (ns.isBlobSchema()) { + if (typeof source === "string") { + return (this.serdeContext?.base64Decoder ?? fromBase64)(source); + } + return source; + } + if (ns.isTimestampSchema()) { + if (typeof source === "number" || typeof source === "bigint") { + return dateToTag(new Date((Number(source) / 1000) | 0)); + } + return dateToTag(source); + } + if (typeof source === "function" || typeof source === "object") { + const sourceObject = source; + if (ns.isListSchema() && Array.isArray(sourceObject)) { + const sparse = !!ns.getMergedTraits().sparse; + const newArray = []; + let i = 0; + for (const item of sourceObject) { + const value = this.serialize(ns.getValueSchema(), item); + if (value != null || sparse) { + newArray[i++] = value; + } + } + return newArray; + } + if (sourceObject instanceof Date) { + return dateToTag(sourceObject); + } + const newObject = {}; + if (ns.isMapSchema()) { + const sparse = !!ns.getMergedTraits().sparse; + for (const key of Object.keys(sourceObject)) { + const value = this.serialize(ns.getValueSchema(), sourceObject[key]); + if (value != null || sparse) { + newObject[key] = value; + } + } + } + else if (ns.isStructSchema()) { + for (const [key, memberSchema] of ns.structIterator()) { + const value = this.serialize(memberSchema, sourceObject[key]); + if (value != null) { + newObject[key] = value; + } + } + const isUnion = ns.isUnionSchema(); + if (isUnion && Array.isArray(sourceObject.$unknown)) { + const [k, v] = sourceObject.$unknown; + newObject[k] = v; + } + else if (typeof sourceObject.__type === "string") { + for (const [k, v] of Object.entries(sourceObject)) { + if (!(k in newObject)) { + newObject[k] = this.serialize(15, v); + } + } + } + } + else if (ns.isDocumentSchema()) { + for (const key of Object.keys(sourceObject)) { + newObject[key] = this.serialize(ns.getValueSchema(), sourceObject[key]); + } + } + else if (ns.isBigDecimalSchema()) { + return sourceObject; + } + return newObject; + } + return source; + } + flush() { + const buffer = cbor.serialize(this.value); + this.value = undefined; + return buffer; + } +} +export class CborShapeDeserializer extends SerdeContext { + read(schema, bytes) { + const data = cbor.deserialize(bytes); + return this.readValue(schema, data); + } + readValue(_schema, value) { + const ns = NormalizedSchema.of(_schema); + if (ns.isTimestampSchema()) { + if (typeof value === "number") { + return _parseEpochTimestamp(value); + } + if (typeof value === "object") { + if (value.tag === 1 && "value" in value) { + return _parseEpochTimestamp(value.value); + } + } + } + if (ns.isBlobSchema()) { + if (typeof value === "string") { + return (this.serdeContext?.base64Decoder ?? fromBase64)(value); + } + return value; + } + if (typeof value === "undefined" || + typeof value === "boolean" || + typeof value === "number" || + typeof value === "string" || + typeof value === "bigint" || + typeof value === "symbol") { + return value; + } + else if (typeof value === "object") { + if (value === null) { + return null; + } + if ("byteLength" in value) { + return value; + } + if (value instanceof Date) { + return value; + } + if (ns.isDocumentSchema()) { + return value; + } + if (ns.isListSchema()) { + const newArray = []; + const memberSchema = ns.getValueSchema(); + for (const item of value) { + const itemValue = this.readValue(memberSchema, item); + newArray.push(itemValue); + } + return newArray; + } + const newObject = {}; + if (ns.isMapSchema()) { + const targetSchema = ns.getValueSchema(); + for (const key of Object.keys(value)) { + const itemValue = this.readValue(targetSchema, value[key]); + newObject[key] = itemValue; + } + } + else if (ns.isStructSchema()) { + const isUnion = ns.isUnionSchema(); + let keys; + if (isUnion) { + keys = new Set(Object.keys(value).filter((k) => k !== "__type")); + } + for (const [key, memberSchema] of ns.structIterator()) { + if (isUnion) { + keys.delete(key); + } + if (value[key] != null) { + newObject[key] = this.readValue(memberSchema, value[key]); + } + } + if (isUnion && keys?.size === 1 && Object.keys(newObject).length === 0) { + const k = keys.values().next().value; + newObject.$unknown = [k, value[k]]; + } + else if (typeof value.__type === "string") { + for (const [k, v] of Object.entries(value)) { + if (!(k in newObject)) { + newObject[k] = v; + } + } + } + } + else if (value instanceof NumericValue) { + return value; + } + return newObject; + } + else { + return value; + } + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/cbor/SmithyRpcV2CborProtocol.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/cbor/SmithyRpcV2CborProtocol.js new file mode 100644 index 000000000..bfecf132e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/cbor/SmithyRpcV2CborProtocol.js @@ -0,0 +1,100 @@ +import { RpcProtocol } from "@smithy/core/protocols"; +import { TypeRegistry } from "@smithy/core/schema"; +import { deref, NormalizedSchema } from "@smithy/core/schema"; +import { getSmithyContext } from "@smithy/util-middleware"; +import { CborCodec } from "./CborCodec"; +import { loadSmithyRpcV2CborErrorCode } from "./parseCborBody"; +export class SmithyRpcV2CborProtocol extends RpcProtocol { + codec = new CborCodec(); + serializer = this.codec.createSerializer(); + deserializer = this.codec.createDeserializer(); + constructor({ defaultNamespace, errorTypeRegistries, }) { + super({ defaultNamespace, errorTypeRegistries }); + } + getShapeId() { + return "smithy.protocols#rpcv2Cbor"; + } + getPayloadCodec() { + return this.codec; + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + Object.assign(request.headers, { + "content-type": this.getDefaultContentType(), + "smithy-protocol": "rpc-v2-cbor", + accept: this.getDefaultContentType(), + }); + if (deref(operationSchema.input) === "unit") { + delete request.body; + delete request.headers["content-type"]; + } + else { + if (!request.body) { + this.serializer.write(15, {}); + request.body = this.serializer.flush(); + } + try { + request.headers["content-length"] = String(request.body.byteLength); + } + catch (e) { } + } + const { service, operation } = getSmithyContext(context); + const path = `/service/${service}/operation/${operation}`; + if (request.path.endsWith("/")) { + request.path += path.slice(1); + } + else { + request.path += path; + } + return request; + } + async deserializeResponse(operationSchema, context, response) { + return super.deserializeResponse(operationSchema, context, response); + } + async handleError(operationSchema, context, response, dataObject, metadata) { + const errorName = loadSmithyRpcV2CborErrorCode(response, dataObject) ?? "Unknown"; + const errorMetadata = { + $metadata: metadata, + $fault: response.statusCode <= 500 ? "client" : "server", + }; + let namespace = this.options.defaultNamespace; + if (errorName.includes("#")) { + [namespace] = errorName.split("#"); + } + const registry = this.compositeErrorRegistry; + const nsRegistry = TypeRegistry.for(namespace); + registry.copyFrom(nsRegistry); + let errorSchema; + try { + errorSchema = registry.getSchema(errorName); + } + catch (e) { + if (dataObject.Message) { + dataObject.message = dataObject.Message; + } + const syntheticRegistry = TypeRegistry.for("smithy.ts.sdk.synthetic." + namespace); + registry.copyFrom(syntheticRegistry); + const baseExceptionSchema = registry.getBaseException(); + if (baseExceptionSchema) { + const ErrorCtor = registry.getErrorCtor(baseExceptionSchema); + throw Object.assign(new ErrorCtor({ name: errorName }), errorMetadata, dataObject); + } + throw Object.assign(new Error(errorName), errorMetadata, dataObject); + } + const ns = NormalizedSchema.of(errorSchema); + const ErrorCtor = registry.getErrorCtor(errorSchema); + const message = dataObject.message ?? dataObject.Message ?? "Unknown"; + const exception = new ErrorCtor(message); + const output = {}; + for (const [name, member] of ns.structIterator()) { + output[name] = this.deserializer.readValue(member, dataObject[name]); + } + throw Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output); + } + getDefaultContentType() { + return "application/cbor"; + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/cbor/byte-printer.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/cbor/byte-printer.js new file mode 100644 index 000000000..693298dfa --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/cbor/byte-printer.js @@ -0,0 +1,37 @@ +export function printBytes(bytes) { + return [...bytes].map((n) => { + const pad = (num) => ("0".repeat(8) + num.toString(2)).slice(-8); + const b = pad(n); + const [maj, min] = [b.slice(0, 3), b.slice(3)]; + let dmaj = ""; + switch (maj) { + case "000": + dmaj = "0 - Uint64"; + break; + case "001": + dmaj = "1 - Neg Uint64"; + break; + case "010": + dmaj = "2 - unstructured bytestring"; + break; + case "011": + dmaj = "3 - utf8 string"; + break; + case "100": + dmaj = "4 - list"; + break; + case "101": + dmaj = "5 - map"; + break; + case "110": + dmaj = "6 - tag"; + break; + case "111": + dmaj = "7 - special"; + break; + default: + dmaj = String(parseInt(maj, 2)); + } + return `${maj}_${min} (${dmaj}, ${parseInt(min, 2)})`; + }); +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-decode.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-decode.js new file mode 100644 index 000000000..813205f98 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-decode.js @@ -0,0 +1,426 @@ +import { nv } from "@smithy/core/serde"; +import { toUtf8 } from "@smithy/util-utf8"; +import { alloc, extendedFloat16, extendedFloat32, extendedFloat64, extendedOneByte, majorList, majorMap, majorNegativeInt64, majorTag, majorUint64, majorUnstructuredByteString, majorUtf8String, minorIndefinite, specialFalse, specialNull, specialTrue, specialUndefined, tag, } from "./cbor-types"; +const USE_TEXT_DECODER = typeof TextDecoder !== "undefined"; +const USE_BUFFER = typeof Buffer !== "undefined"; +let payload = alloc(0); +let dataView = new DataView(payload.buffer, payload.byteOffset, payload.byteLength); +const textDecoder = USE_TEXT_DECODER ? new TextDecoder() : null; +let _offset = 0; +export function setPayload(bytes) { + payload = bytes; + dataView = new DataView(payload.buffer, payload.byteOffset, payload.byteLength); +} +export function decode(at, to) { + if (at >= to) { + throw new Error("unexpected end of (decode) payload."); + } + const major = (payload[at] & 0b1110_0000) >> 5; + const minor = payload[at] & 0b0001_1111; + switch (major) { + case majorUint64: + case majorNegativeInt64: + case majorTag: + let unsignedInt; + let offset; + if (minor < 24) { + unsignedInt = minor; + offset = 1; + } + else { + switch (minor) { + case extendedOneByte: + case extendedFloat16: + case extendedFloat32: + case extendedFloat64: + const countLength = minorValueToArgumentLength[minor]; + const countOffset = (countLength + 1); + offset = countOffset; + if (to - at < countOffset) { + throw new Error(`countLength ${countLength} greater than remaining buf len.`); + } + const countIndex = at + 1; + if (countLength === 1) { + unsignedInt = payload[countIndex]; + } + else if (countLength === 2) { + unsignedInt = dataView.getUint16(countIndex); + } + else if (countLength === 4) { + unsignedInt = dataView.getUint32(countIndex); + } + else { + unsignedInt = dataView.getBigUint64(countIndex); + } + break; + default: + throw new Error(`unexpected minor value ${minor}.`); + } + } + if (major === majorUint64) { + _offset = offset; + return castBigInt(unsignedInt); + } + else if (major === majorNegativeInt64) { + let negativeInt; + if (typeof unsignedInt === "bigint") { + negativeInt = BigInt(-1) - unsignedInt; + } + else { + negativeInt = -1 - unsignedInt; + } + _offset = offset; + return castBigInt(negativeInt); + } + else { + if (minor === 2 || minor === 3) { + const length = decodeCount(at + offset, to); + let b = BigInt(0); + const start = at + offset + _offset; + for (let i = start; i < start + length; ++i) { + b = (b << BigInt(8)) | BigInt(payload[i]); + } + _offset = offset + _offset + length; + return minor === 3 ? -b - BigInt(1) : b; + } + else if (minor === 4) { + const decimalFraction = decode(at + offset, to); + const [exponent, mantissa] = decimalFraction; + const normalizer = mantissa < 0 ? -1 : 1; + const mantissaStr = "0".repeat(Math.abs(exponent) + 1) + String(BigInt(normalizer) * BigInt(mantissa)); + let numericString; + const sign = mantissa < 0 ? "-" : ""; + numericString = + exponent === 0 + ? mantissaStr + : mantissaStr.slice(0, mantissaStr.length + exponent) + "." + mantissaStr.slice(exponent); + numericString = numericString.replace(/^0+/g, ""); + if (numericString === "") { + numericString = "0"; + } + if (numericString[0] === ".") { + numericString = "0" + numericString; + } + numericString = sign + numericString; + _offset = offset + _offset; + return nv(numericString); + } + else { + const value = decode(at + offset, to); + const valueOffset = _offset; + _offset = offset + valueOffset; + return tag({ tag: castBigInt(unsignedInt), value }); + } + } + case majorUtf8String: + case majorMap: + case majorList: + case majorUnstructuredByteString: + if (minor === minorIndefinite) { + switch (major) { + case majorUtf8String: + return decodeUtf8StringIndefinite(at, to); + case majorMap: + return decodeMapIndefinite(at, to); + case majorList: + return decodeListIndefinite(at, to); + case majorUnstructuredByteString: + return decodeUnstructuredByteStringIndefinite(at, to); + } + } + else { + switch (major) { + case majorUtf8String: + return decodeUtf8String(at, to); + case majorMap: + return decodeMap(at, to); + case majorList: + return decodeList(at, to); + case majorUnstructuredByteString: + return decodeUnstructuredByteString(at, to); + } + } + default: + return decodeSpecial(at, to); + } +} +function bytesToUtf8(bytes, at, to) { + if (USE_BUFFER && bytes.constructor?.name === "Buffer") { + return bytes.toString("utf-8", at, to); + } + if (textDecoder) { + return textDecoder.decode(bytes.subarray(at, to)); + } + return toUtf8(bytes.subarray(at, to)); +} +function demote(bigInteger) { + const num = Number(bigInteger); + if (num < Number.MIN_SAFE_INTEGER || Number.MAX_SAFE_INTEGER < num) { + console.warn(new Error(`@smithy/core/cbor - truncating BigInt(${bigInteger}) to ${num} with loss of precision.`)); + } + return num; +} +const minorValueToArgumentLength = { + [extendedOneByte]: 1, + [extendedFloat16]: 2, + [extendedFloat32]: 4, + [extendedFloat64]: 8, +}; +export function bytesToFloat16(a, b) { + const sign = a >> 7; + const exponent = (a & 0b0111_1100) >> 2; + const fraction = ((a & 0b0000_0011) << 8) | b; + const scalar = sign === 0 ? 1 : -1; + let exponentComponent; + let summation; + if (exponent === 0b00000) { + if (fraction === 0b00000_00000) { + return 0; + } + else { + exponentComponent = Math.pow(2, 1 - 15); + summation = 0; + } + } + else if (exponent === 0b11111) { + if (fraction === 0b00000_00000) { + return scalar * Infinity; + } + else { + return NaN; + } + } + else { + exponentComponent = Math.pow(2, exponent - 15); + summation = 1; + } + summation += fraction / 1024; + return scalar * (exponentComponent * summation); +} +function decodeCount(at, to) { + const minor = payload[at] & 0b0001_1111; + if (minor < 24) { + _offset = 1; + return minor; + } + if (minor === extendedOneByte || + minor === extendedFloat16 || + minor === extendedFloat32 || + minor === extendedFloat64) { + const countLength = minorValueToArgumentLength[minor]; + _offset = (countLength + 1); + if (to - at < _offset) { + throw new Error(`countLength ${countLength} greater than remaining buf len.`); + } + const countIndex = at + 1; + if (countLength === 1) { + return payload[countIndex]; + } + else if (countLength === 2) { + return dataView.getUint16(countIndex); + } + else if (countLength === 4) { + return dataView.getUint32(countIndex); + } + return demote(dataView.getBigUint64(countIndex)); + } + throw new Error(`unexpected minor value ${minor}.`); +} +function decodeUtf8String(at, to) { + const length = decodeCount(at, to); + const offset = _offset; + at += offset; + if (to - at < length) { + throw new Error(`string len ${length} greater than remaining buf len.`); + } + const value = bytesToUtf8(payload, at, at + length); + _offset = offset + length; + return value; +} +function decodeUtf8StringIndefinite(at, to) { + at += 1; + const vector = []; + for (const base = at; at < to;) { + if (payload[at] === 0b1111_1111) { + const data = alloc(vector.length); + data.set(vector, 0); + _offset = at - base + 2; + return bytesToUtf8(data, 0, data.length); + } + const major = (payload[at] & 0b1110_0000) >> 5; + const minor = payload[at] & 0b0001_1111; + if (major !== majorUtf8String) { + throw new Error(`unexpected major type ${major} in indefinite string.`); + } + if (minor === minorIndefinite) { + throw new Error("nested indefinite string."); + } + const bytes = decodeUnstructuredByteString(at, to); + const length = _offset; + at += length; + for (let i = 0; i < bytes.length; ++i) { + vector.push(bytes[i]); + } + } + throw new Error("expected break marker."); +} +function decodeUnstructuredByteString(at, to) { + const length = decodeCount(at, to); + const offset = _offset; + at += offset; + if (to - at < length) { + throw new Error(`unstructured byte string len ${length} greater than remaining buf len.`); + } + const value = payload.subarray(at, at + length); + _offset = offset + length; + return value; +} +function decodeUnstructuredByteStringIndefinite(at, to) { + at += 1; + const vector = []; + for (const base = at; at < to;) { + if (payload[at] === 0b1111_1111) { + const data = alloc(vector.length); + data.set(vector, 0); + _offset = at - base + 2; + return data; + } + const major = (payload[at] & 0b1110_0000) >> 5; + const minor = payload[at] & 0b0001_1111; + if (major !== majorUnstructuredByteString) { + throw new Error(`unexpected major type ${major} in indefinite string.`); + } + if (minor === minorIndefinite) { + throw new Error("nested indefinite string."); + } + const bytes = decodeUnstructuredByteString(at, to); + const length = _offset; + at += length; + for (let i = 0; i < bytes.length; ++i) { + vector.push(bytes[i]); + } + } + throw new Error("expected break marker."); +} +function decodeList(at, to) { + const listDataLength = decodeCount(at, to); + const offset = _offset; + at += offset; + const base = at; + const list = Array(listDataLength); + for (let i = 0; i < listDataLength; ++i) { + const item = decode(at, to); + const itemOffset = _offset; + list[i] = item; + at += itemOffset; + } + _offset = offset + (at - base); + return list; +} +function decodeListIndefinite(at, to) { + at += 1; + const list = []; + for (const base = at; at < to;) { + if (payload[at] === 0b1111_1111) { + _offset = at - base + 2; + return list; + } + const item = decode(at, to); + const n = _offset; + at += n; + list.push(item); + } + throw new Error("expected break marker."); +} +function decodeMap(at, to) { + const mapDataLength = decodeCount(at, to); + const offset = _offset; + at += offset; + const base = at; + const map = {}; + for (let i = 0; i < mapDataLength; ++i) { + if (at >= to) { + throw new Error("unexpected end of map payload."); + } + const major = (payload[at] & 0b1110_0000) >> 5; + if (major !== majorUtf8String) { + throw new Error(`unexpected major type ${major} for map key at index ${at}.`); + } + const key = decode(at, to); + at += _offset; + const value = decode(at, to); + at += _offset; + map[key] = value; + } + _offset = offset + (at - base); + return map; +} +function decodeMapIndefinite(at, to) { + at += 1; + const base = at; + const map = {}; + for (; at < to;) { + if (at >= to) { + throw new Error("unexpected end of map payload."); + } + if (payload[at] === 0b1111_1111) { + _offset = at - base + 2; + return map; + } + const major = (payload[at] & 0b1110_0000) >> 5; + if (major !== majorUtf8String) { + throw new Error(`unexpected major type ${major} for map key.`); + } + const key = decode(at, to); + at += _offset; + const value = decode(at, to); + at += _offset; + map[key] = value; + } + throw new Error("expected break marker."); +} +function decodeSpecial(at, to) { + const minor = payload[at] & 0b0001_1111; + switch (minor) { + case specialTrue: + case specialFalse: + _offset = 1; + return minor === specialTrue; + case specialNull: + _offset = 1; + return null; + case specialUndefined: + _offset = 1; + return null; + case extendedFloat16: + if (to - at < 3) { + throw new Error("incomplete float16 at end of buf."); + } + _offset = 3; + return bytesToFloat16(payload[at + 1], payload[at + 2]); + case extendedFloat32: + if (to - at < 5) { + throw new Error("incomplete float32 at end of buf."); + } + _offset = 5; + return dataView.getFloat32(at + 1); + case extendedFloat64: + if (to - at < 9) { + throw new Error("incomplete float64 at end of buf."); + } + _offset = 9; + return dataView.getFloat64(at + 1); + default: + throw new Error(`unexpected minor value ${minor}.`); + } +} +function castBigInt(bigInt) { + if (typeof bigInt === "number") { + return bigInt; + } + const num = Number(bigInt); + if (Number.MIN_SAFE_INTEGER <= num && num <= Number.MAX_SAFE_INTEGER) { + return num; + } + return bigInt; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-encode.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-encode.js new file mode 100644 index 000000000..ffa87fab5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-encode.js @@ -0,0 +1,221 @@ +import { NumericValue } from "@smithy/core/serde"; +import { fromUtf8 } from "@smithy/util-utf8"; +import { alloc, extendedFloat16, extendedFloat32, extendedFloat64, majorList, majorMap, majorNegativeInt64, majorSpecial, majorTag, majorUint64, majorUnstructuredByteString, majorUtf8String, specialFalse, specialNull, specialTrue, tagSymbol, } from "./cbor-types"; +const USE_BUFFER = typeof Buffer !== "undefined"; +const initialSize = 2048; +let data = alloc(initialSize); +let dataView = new DataView(data.buffer, data.byteOffset, data.byteLength); +let cursor = 0; +function ensureSpace(bytes) { + const remaining = data.byteLength - cursor; + if (remaining < bytes) { + if (cursor < 16_000_000) { + resize(Math.max(data.byteLength * 4, data.byteLength + bytes)); + } + else { + resize(data.byteLength + bytes + 16_000_000); + } + } +} +export function toUint8Array() { + const out = alloc(cursor); + out.set(data.subarray(0, cursor), 0); + cursor = 0; + return out; +} +export function resize(size) { + const old = data; + data = alloc(size); + if (old) { + if (old.copy) { + old.copy(data, 0, 0, old.byteLength); + } + else { + data.set(old, 0); + } + } + dataView = new DataView(data.buffer, data.byteOffset, data.byteLength); +} +function encodeHeader(major, value) { + if (value < 24) { + data[cursor++] = (major << 5) | value; + } + else if (value < 1 << 8) { + data[cursor++] = (major << 5) | 24; + data[cursor++] = value; + } + else if (value < 1 << 16) { + data[cursor++] = (major << 5) | extendedFloat16; + dataView.setUint16(cursor, value); + cursor += 2; + } + else if (value < 2 ** 32) { + data[cursor++] = (major << 5) | extendedFloat32; + dataView.setUint32(cursor, value); + cursor += 4; + } + else { + data[cursor++] = (major << 5) | extendedFloat64; + dataView.setBigUint64(cursor, typeof value === "bigint" ? value : BigInt(value)); + cursor += 8; + } +} +export function encode(_input) { + const encodeStack = [_input]; + while (encodeStack.length) { + const input = encodeStack.pop(); + ensureSpace(typeof input === "string" ? input.length * 4 : 64); + if (typeof input === "string") { + if (USE_BUFFER) { + encodeHeader(majorUtf8String, Buffer.byteLength(input)); + cursor += data.write(input, cursor); + } + else { + const bytes = fromUtf8(input); + encodeHeader(majorUtf8String, bytes.byteLength); + data.set(bytes, cursor); + cursor += bytes.byteLength; + } + continue; + } + else if (typeof input === "number") { + if (Number.isInteger(input)) { + const nonNegative = input >= 0; + const major = nonNegative ? majorUint64 : majorNegativeInt64; + const value = nonNegative ? input : -input - 1; + if (value < 24) { + data[cursor++] = (major << 5) | value; + } + else if (value < 256) { + data[cursor++] = (major << 5) | 24; + data[cursor++] = value; + } + else if (value < 65536) { + data[cursor++] = (major << 5) | extendedFloat16; + data[cursor++] = value >> 8; + data[cursor++] = value; + } + else if (value < 4294967296) { + data[cursor++] = (major << 5) | extendedFloat32; + dataView.setUint32(cursor, value); + cursor += 4; + } + else { + data[cursor++] = (major << 5) | extendedFloat64; + dataView.setBigUint64(cursor, BigInt(value)); + cursor += 8; + } + continue; + } + data[cursor++] = (majorSpecial << 5) | extendedFloat64; + dataView.setFloat64(cursor, input); + cursor += 8; + continue; + } + else if (typeof input === "bigint") { + const nonNegative = input >= 0; + const major = nonNegative ? majorUint64 : majorNegativeInt64; + const value = nonNegative ? input : -input - BigInt(1); + const n = Number(value); + if (n < 24) { + data[cursor++] = (major << 5) | n; + } + else if (n < 256) { + data[cursor++] = (major << 5) | 24; + data[cursor++] = n; + } + else if (n < 65536) { + data[cursor++] = (major << 5) | extendedFloat16; + data[cursor++] = n >> 8; + data[cursor++] = n & 0b1111_1111; + } + else if (n < 4294967296) { + data[cursor++] = (major << 5) | extendedFloat32; + dataView.setUint32(cursor, n); + cursor += 4; + } + else if (value < BigInt("18446744073709551616")) { + data[cursor++] = (major << 5) | extendedFloat64; + dataView.setBigUint64(cursor, value); + cursor += 8; + } + else { + const binaryBigInt = value.toString(2); + const bigIntBytes = new Uint8Array(Math.ceil(binaryBigInt.length / 8)); + let b = value; + let i = 0; + while (bigIntBytes.byteLength - ++i >= 0) { + bigIntBytes[bigIntBytes.byteLength - i] = Number(b & BigInt(255)); + b >>= BigInt(8); + } + ensureSpace(bigIntBytes.byteLength * 2); + data[cursor++] = nonNegative ? 0b110_00010 : 0b110_00011; + if (USE_BUFFER) { + encodeHeader(majorUnstructuredByteString, Buffer.byteLength(bigIntBytes)); + } + else { + encodeHeader(majorUnstructuredByteString, bigIntBytes.byteLength); + } + data.set(bigIntBytes, cursor); + cursor += bigIntBytes.byteLength; + } + continue; + } + else if (input === null) { + data[cursor++] = (majorSpecial << 5) | specialNull; + continue; + } + else if (typeof input === "boolean") { + data[cursor++] = (majorSpecial << 5) | (input ? specialTrue : specialFalse); + continue; + } + else if (typeof input === "undefined") { + throw new Error("@smithy/core/cbor: client may not serialize undefined value."); + } + else if (Array.isArray(input)) { + for (let i = input.length - 1; i >= 0; --i) { + encodeStack.push(input[i]); + } + encodeHeader(majorList, input.length); + continue; + } + else if (typeof input.byteLength === "number") { + ensureSpace(input.length * 2); + encodeHeader(majorUnstructuredByteString, input.length); + data.set(input, cursor); + cursor += input.byteLength; + continue; + } + else if (typeof input === "object") { + if (input instanceof NumericValue) { + const decimalIndex = input.string.indexOf("."); + const exponent = decimalIndex === -1 ? 0 : decimalIndex - input.string.length + 1; + const mantissa = BigInt(input.string.replace(".", "")); + data[cursor++] = 0b110_00100; + encodeStack.push(mantissa); + encodeStack.push(exponent); + encodeHeader(majorList, 2); + continue; + } + if (input[tagSymbol]) { + if ("tag" in input && "value" in input) { + encodeStack.push(input.value); + encodeHeader(majorTag, input.tag); + continue; + } + else { + throw new Error("tag encountered with missing fields, need 'tag' and 'value', found: " + JSON.stringify(input)); + } + } + const keys = Object.keys(input); + for (let i = keys.length - 1; i >= 0; --i) { + const key = keys[i]; + encodeStack.push(input[key]); + encodeStack.push(key); + } + encodeHeader(majorMap, keys.length); + continue; + } + throw new Error(`data type ${input?.constructor?.name ?? typeof input} not compatible for encoding.`); + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-types.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-types.js new file mode 100644 index 000000000..a720eb746 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-types.js @@ -0,0 +1,25 @@ +export const majorUint64 = 0; +export const majorNegativeInt64 = 1; +export const majorUnstructuredByteString = 2; +export const majorUtf8String = 3; +export const majorList = 4; +export const majorMap = 5; +export const majorTag = 6; +export const majorSpecial = 7; +export const specialFalse = 20; +export const specialTrue = 21; +export const specialNull = 22; +export const specialUndefined = 23; +export const extendedOneByte = 24; +export const extendedFloat16 = 25; +export const extendedFloat32 = 26; +export const extendedFloat64 = 27; +export const minorIndefinite = 31; +export function alloc(size) { + return typeof Buffer !== "undefined" ? Buffer.alloc(size) : new Uint8Array(size); +} +export const tagSymbol = Symbol("@smithy/core/cbor::tagSymbol"); +export function tag(data) { + data[tagSymbol] = true; + return data; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/cbor/cbor.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/cbor/cbor.js new file mode 100644 index 000000000..8df975fc1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/cbor/cbor.js @@ -0,0 +1,21 @@ +import { decode, setPayload } from "./cbor-decode"; +import { encode, resize, toUint8Array } from "./cbor-encode"; +export const cbor = { + deserialize(payload) { + setPayload(payload); + return decode(0, payload.length); + }, + serialize(input) { + try { + encode(input); + return toUint8Array(); + } + catch (e) { + toUint8Array(); + throw e; + } + }, + resizeEncodingBuffer(size) { + resize(size); + }, +}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/cbor/index.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/cbor/index.js new file mode 100644 index 000000000..c53524e3a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/cbor/index.js @@ -0,0 +1,5 @@ +export { cbor } from "./cbor"; +export { tag, tagSymbol } from "./cbor-types"; +export * from "./parseCborBody"; +export * from "./SmithyRpcV2CborProtocol"; +export * from "./CborCodec"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/cbor/parseCborBody.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/cbor/parseCborBody.js new file mode 100644 index 000000000..c7594d7b9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/cbor/parseCborBody.js @@ -0,0 +1,92 @@ +import { collectBody } from "@smithy/core/protocols"; +import { HttpRequest as __HttpRequest } from "@smithy/protocol-http"; +import { calculateBodyLength } from "@smithy/util-body-length-browser"; +import { cbor } from "./cbor"; +import { tag } from "./cbor-types"; +export const parseCborBody = (streamBody, context) => { + return collectBody(streamBody, context).then(async (bytes) => { + if (bytes.length) { + try { + return cbor.deserialize(bytes); + } + catch (e) { + Object.defineProperty(e, "$responseBodyText", { + value: context.utf8Encoder(bytes), + }); + throw e; + } + } + return {}; + }); +}; +export const dateToTag = (date) => { + return tag({ + tag: 1, + value: date.getTime() / 1000, + }); +}; +export const parseCborErrorBody = async (errorBody, context) => { + const value = await parseCborBody(errorBody, context); + value.message = value.message ?? value.Message; + return value; +}; +export const loadSmithyRpcV2CborErrorCode = (output, data) => { + const sanitizeErrorCode = (rawValue) => { + let cleanValue = rawValue; + if (typeof cleanValue === "number") { + cleanValue = cleanValue.toString(); + } + if (cleanValue.indexOf(",") >= 0) { + cleanValue = cleanValue.split(",")[0]; + } + if (cleanValue.indexOf(":") >= 0) { + cleanValue = cleanValue.split(":")[0]; + } + if (cleanValue.indexOf("#") >= 0) { + cleanValue = cleanValue.split("#")[1]; + } + return cleanValue; + }; + if (data["__type"] !== undefined) { + return sanitizeErrorCode(data["__type"]); + } + const codeKey = Object.keys(data).find((key) => key.toLowerCase() === "code"); + if (codeKey && data[codeKey] !== undefined) { + return sanitizeErrorCode(data[codeKey]); + } +}; +export const checkCborResponse = (response) => { + if (String(response.headers["smithy-protocol"]).toLowerCase() !== "rpc-v2-cbor") { + throw new Error("Malformed RPCv2 CBOR response, status: " + response.statusCode); + } +}; +export const buildHttpRpcRequest = async (context, headers, path, resolvedHostname, body) => { + const endpoint = await context.endpoint(); + const { hostname, protocol = "https", port, path: basePath } = endpoint; + const contents = { + protocol, + hostname, + port, + method: "POST", + path: basePath.endsWith("/") ? basePath.slice(0, -1) + path : basePath + path, + headers: { + ...headers, + }, + }; + if (resolvedHostname !== undefined) { + contents.hostname = resolvedHostname; + } + if (endpoint.headers) { + for (const [name, value] of Object.entries(endpoint.headers)) { + contents.headers[name] = value; + } + } + if (body !== undefined) { + contents.body = body; + try { + contents.headers["content-length"] = String(calculateBodyLength(body)); + } + catch (e) { } + } + return new __HttpRequest(contents); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/endpoints/index.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/endpoints/index.js new file mode 100644 index 000000000..a88df654d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/endpoints/index.js @@ -0,0 +1 @@ +export * from "./toEndpointV1"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/endpoints/toEndpointV1.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/endpoints/toEndpointV1.js new file mode 100644 index 000000000..701ce11ce --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/endpoints/toEndpointV1.js @@ -0,0 +1,17 @@ +import { parseUrl } from "@smithy/url-parser"; +export const toEndpointV1 = (endpoint) => { + if (typeof endpoint === "object") { + if ("url" in endpoint) { + const v1Endpoint = parseUrl(endpoint.url); + if (endpoint.headers) { + v1Endpoint.headers = {}; + for (const [name, values] of Object.entries(endpoint.headers)) { + v1Endpoint.headers[name.toLowerCase()] = values.join(", "); + } + } + return v1Endpoint; + } + return endpoint; + } + return parseUrl(endpoint); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/event-streams/EventStreamSerde.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/event-streams/EventStreamSerde.js new file mode 100644 index 000000000..d0fa1854b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/event-streams/EventStreamSerde.js @@ -0,0 +1,254 @@ +import { fromUtf8, toUtf8 } from "@smithy/util-utf8"; +export class EventStreamSerde { + marshaller; + serializer; + deserializer; + serdeContext; + defaultContentType; + constructor({ marshaller, serializer, deserializer, serdeContext, defaultContentType, }) { + this.marshaller = marshaller; + this.serializer = serializer; + this.deserializer = deserializer; + this.serdeContext = serdeContext; + this.defaultContentType = defaultContentType; + } + async serializeEventStream({ eventStream, requestSchema, initialRequest, }) { + const marshaller = this.marshaller; + const eventStreamMember = requestSchema.getEventStreamMember(); + const unionSchema = requestSchema.getMemberSchema(eventStreamMember); + const serializer = this.serializer; + const defaultContentType = this.defaultContentType; + const initialRequestMarker = Symbol("initialRequestMarker"); + const eventStreamIterable = { + async *[Symbol.asyncIterator]() { + if (initialRequest) { + const headers = { + ":event-type": { type: "string", value: "initial-request" }, + ":message-type": { type: "string", value: "event" }, + ":content-type": { type: "string", value: defaultContentType }, + }; + serializer.write(requestSchema, initialRequest); + const body = serializer.flush(); + yield { + [initialRequestMarker]: true, + headers, + body, + }; + } + for await (const page of eventStream) { + yield page; + } + }, + }; + return marshaller.serialize(eventStreamIterable, (event) => { + if (event[initialRequestMarker]) { + return { + headers: event.headers, + body: event.body, + }; + } + const unionMember = Object.keys(event).find((key) => { + return key !== "__type"; + }) ?? ""; + const { additionalHeaders, body, eventType, explicitPayloadContentType } = this.writeEventBody(unionMember, unionSchema, event); + const headers = { + ":event-type": { type: "string", value: eventType }, + ":message-type": { type: "string", value: "event" }, + ":content-type": { type: "string", value: explicitPayloadContentType ?? defaultContentType }, + ...additionalHeaders, + }; + return { + headers, + body, + }; + }); + } + async deserializeEventStream({ response, responseSchema, initialResponseContainer, }) { + const marshaller = this.marshaller; + const eventStreamMember = responseSchema.getEventStreamMember(); + const unionSchema = responseSchema.getMemberSchema(eventStreamMember); + const memberSchemas = unionSchema.getMemberSchemas(); + const initialResponseMarker = Symbol("initialResponseMarker"); + const asyncIterable = marshaller.deserialize(response.body, async (event) => { + const unionMember = Object.keys(event).find((key) => { + return key !== "__type"; + }) ?? ""; + const body = event[unionMember].body; + if (unionMember === "initial-response") { + const dataObject = await this.deserializer.read(responseSchema, body); + delete dataObject[eventStreamMember]; + return { + [initialResponseMarker]: true, + ...dataObject, + }; + } + else if (unionMember in memberSchemas) { + const eventStreamSchema = memberSchemas[unionMember]; + if (eventStreamSchema.isStructSchema()) { + const out = {}; + let hasBindings = false; + for (const [name, member] of eventStreamSchema.structIterator()) { + const { eventHeader, eventPayload } = member.getMergedTraits(); + hasBindings = hasBindings || Boolean(eventHeader || eventPayload); + if (eventPayload) { + if (member.isBlobSchema()) { + out[name] = body; + } + else if (member.isStringSchema()) { + out[name] = (this.serdeContext?.utf8Encoder ?? toUtf8)(body); + } + else if (member.isStructSchema()) { + out[name] = await this.deserializer.read(member, body); + } + } + else if (eventHeader) { + const value = event[unionMember].headers[name]?.value; + if (value != null) { + if (member.isNumericSchema()) { + if (value && typeof value === "object" && "bytes" in value) { + out[name] = BigInt(value.toString()); + } + else { + out[name] = Number(value); + } + } + else { + out[name] = value; + } + } + } + } + if (hasBindings) { + return { + [unionMember]: out, + }; + } + if (body.byteLength === 0) { + return { + [unionMember]: {}, + }; + } + } + return { + [unionMember]: await this.deserializer.read(eventStreamSchema, body), + }; + } + else { + return { + $unknown: event, + }; + } + }); + const asyncIterator = asyncIterable[Symbol.asyncIterator](); + const firstEvent = await asyncIterator.next(); + if (firstEvent.done) { + return asyncIterable; + } + if (firstEvent.value?.[initialResponseMarker]) { + if (!responseSchema) { + throw new Error("@smithy::core/protocols - initial-response event encountered in event stream but no response schema given."); + } + for (const [key, value] of Object.entries(firstEvent.value)) { + initialResponseContainer[key] = value; + } + } + return { + async *[Symbol.asyncIterator]() { + if (!firstEvent?.value?.[initialResponseMarker]) { + yield firstEvent.value; + } + while (true) { + const { done, value } = await asyncIterator.next(); + if (done) { + break; + } + yield value; + } + }, + }; + } + writeEventBody(unionMember, unionSchema, event) { + const serializer = this.serializer; + let eventType = unionMember; + let explicitPayloadMember = null; + let explicitPayloadContentType; + const isKnownSchema = (() => { + const struct = unionSchema.getSchema(); + return struct[4].includes(unionMember); + })(); + const additionalHeaders = {}; + if (!isKnownSchema) { + const [type, value] = event[unionMember]; + eventType = type; + serializer.write(15, value); + } + else { + const eventSchema = unionSchema.getMemberSchema(unionMember); + if (eventSchema.isStructSchema()) { + for (const [memberName, memberSchema] of eventSchema.structIterator()) { + const { eventHeader, eventPayload } = memberSchema.getMergedTraits(); + if (eventPayload) { + explicitPayloadMember = memberName; + } + else if (eventHeader) { + const value = event[unionMember][memberName]; + let type = "binary"; + if (memberSchema.isNumericSchema()) { + if ((-2) ** 31 <= value && value <= 2 ** 31 - 1) { + type = "integer"; + } + else { + type = "long"; + } + } + else if (memberSchema.isTimestampSchema()) { + type = "timestamp"; + } + else if (memberSchema.isStringSchema()) { + type = "string"; + } + else if (memberSchema.isBooleanSchema()) { + type = "boolean"; + } + if (value != null) { + additionalHeaders[memberName] = { + type, + value, + }; + delete event[unionMember][memberName]; + } + } + } + if (explicitPayloadMember !== null) { + const payloadSchema = eventSchema.getMemberSchema(explicitPayloadMember); + if (payloadSchema.isBlobSchema()) { + explicitPayloadContentType = "application/octet-stream"; + } + else if (payloadSchema.isStringSchema()) { + explicitPayloadContentType = "text/plain"; + } + serializer.write(payloadSchema, event[unionMember][explicitPayloadMember]); + } + else { + serializer.write(eventSchema, event[unionMember]); + } + } + else if (eventSchema.isUnitSchema()) { + serializer.write(eventSchema, {}); + } + else { + throw new Error("@smithy/core/event-streams - non-struct member not supported in event stream union."); + } + } + const messageSerialization = serializer.flush() ?? new Uint8Array(); + const body = typeof messageSerialization === "string" + ? (this.serdeContext?.utf8Decoder ?? fromUtf8)(messageSerialization) + : messageSerialization; + return { + body, + eventType, + explicitPayloadContentType, + additionalHeaders, + }; + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/event-streams/index.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/event-streams/index.js new file mode 100644 index 000000000..849f48ccf --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/event-streams/index.js @@ -0,0 +1 @@ +export * from "./EventStreamSerde"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/HttpBindingProtocol.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/HttpBindingProtocol.js new file mode 100644 index 000000000..79bb6c048 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/HttpBindingProtocol.js @@ -0,0 +1,293 @@ +import { NormalizedSchema, translateTraits } from "@smithy/core/schema"; +import { splitEvery, splitHeader } from "@smithy/core/serde"; +import { HttpRequest } from "@smithy/protocol-http"; +import { sdkStreamMixin } from "@smithy/util-stream"; +import { collectBody } from "./collect-stream-body"; +import { extendedEncodeURIComponent } from "./extended-encode-uri-component"; +import { HttpProtocol } from "./HttpProtocol"; +export class HttpBindingProtocol extends HttpProtocol { + async serializeRequest(operationSchema, _input, context) { + const input = { + ...(_input ?? {}), + }; + const serializer = this.serializer; + const query = {}; + const headers = {}; + const endpoint = await context.endpoint(); + const ns = NormalizedSchema.of(operationSchema?.input); + const payloadMemberNames = []; + const payloadMemberSchemas = []; + let hasNonHttpBindingMember = false; + let payload; + const request = new HttpRequest({ + protocol: "", + hostname: "", + port: undefined, + path: "", + fragment: undefined, + query: query, + headers: headers, + body: undefined, + }); + if (endpoint) { + this.updateServiceEndpoint(request, endpoint); + this.setHostPrefix(request, operationSchema, input); + const opTraits = translateTraits(operationSchema.traits); + if (opTraits.http) { + request.method = opTraits.http[0]; + const [path, search] = opTraits.http[1].split("?"); + if (request.path == "/") { + request.path = path; + } + else { + request.path += path; + } + const traitSearchParams = new URLSearchParams(search ?? ""); + Object.assign(query, Object.fromEntries(traitSearchParams)); + } + } + for (const [memberName, memberNs] of ns.structIterator()) { + const memberTraits = memberNs.getMergedTraits() ?? {}; + const inputMemberValue = input[memberName]; + if (inputMemberValue == null && !memberNs.isIdempotencyToken()) { + if (memberTraits.httpLabel) { + if (request.path.includes(`{${memberName}+}`) || request.path.includes(`{${memberName}}`)) { + throw new Error(`No value provided for input HTTP label: ${memberName}.`); + } + } + continue; + } + if (memberTraits.httpPayload) { + const isStreaming = memberNs.isStreaming(); + if (isStreaming) { + const isEventStream = memberNs.isStructSchema(); + if (isEventStream) { + if (input[memberName]) { + payload = await this.serializeEventStream({ + eventStream: input[memberName], + requestSchema: ns, + }); + } + } + else { + payload = inputMemberValue; + } + } + else { + serializer.write(memberNs, inputMemberValue); + payload = serializer.flush(); + } + delete input[memberName]; + } + else if (memberTraits.httpLabel) { + serializer.write(memberNs, inputMemberValue); + const replacement = serializer.flush(); + if (request.path.includes(`{${memberName}+}`)) { + request.path = request.path.replace(`{${memberName}+}`, replacement.split("/").map(extendedEncodeURIComponent).join("/")); + } + else if (request.path.includes(`{${memberName}}`)) { + request.path = request.path.replace(`{${memberName}}`, extendedEncodeURIComponent(replacement)); + } + delete input[memberName]; + } + else if (memberTraits.httpHeader) { + serializer.write(memberNs, inputMemberValue); + headers[memberTraits.httpHeader.toLowerCase()] = String(serializer.flush()); + delete input[memberName]; + } + else if (typeof memberTraits.httpPrefixHeaders === "string") { + for (const [key, val] of Object.entries(inputMemberValue)) { + const amalgam = memberTraits.httpPrefixHeaders + key; + serializer.write([memberNs.getValueSchema(), { httpHeader: amalgam }], val); + headers[amalgam.toLowerCase()] = serializer.flush(); + } + delete input[memberName]; + } + else if (memberTraits.httpQuery || memberTraits.httpQueryParams) { + this.serializeQuery(memberNs, inputMemberValue, query); + delete input[memberName]; + } + else { + hasNonHttpBindingMember = true; + payloadMemberNames.push(memberName); + payloadMemberSchemas.push(memberNs); + } + } + if (hasNonHttpBindingMember && input) { + const [namespace, name] = (ns.getName(true) ?? "#Unknown").split("#"); + const requiredMembers = ns.getSchema()[6]; + const payloadSchema = [ + 3, + namespace, + name, + ns.getMergedTraits(), + payloadMemberNames, + payloadMemberSchemas, + undefined, + ]; + if (requiredMembers) { + payloadSchema[6] = requiredMembers; + } + else { + payloadSchema.pop(); + } + serializer.write(payloadSchema, input); + payload = serializer.flush(); + } + request.headers = headers; + request.query = query; + request.body = payload; + return request; + } + serializeQuery(ns, data, query) { + const serializer = this.serializer; + const traits = ns.getMergedTraits(); + if (traits.httpQueryParams) { + for (const [key, val] of Object.entries(data)) { + if (!(key in query)) { + const valueSchema = ns.getValueSchema(); + Object.assign(valueSchema.getMergedTraits(), { + ...traits, + httpQuery: key, + httpQueryParams: undefined, + }); + this.serializeQuery(valueSchema, val, query); + } + } + return; + } + if (ns.isListSchema()) { + const sparse = !!ns.getMergedTraits().sparse; + const buffer = []; + for (const item of data) { + serializer.write([ns.getValueSchema(), traits], item); + const serializable = serializer.flush(); + if (sparse || serializable !== undefined) { + buffer.push(serializable); + } + } + query[traits.httpQuery] = buffer; + } + else { + serializer.write([ns, traits], data); + query[traits.httpQuery] = serializer.flush(); + } + } + async deserializeResponse(operationSchema, context, response) { + const deserializer = this.deserializer; + const ns = NormalizedSchema.of(operationSchema.output); + const dataObject = {}; + if (response.statusCode >= 300) { + const bytes = await collectBody(response.body, context); + if (bytes.byteLength > 0) { + Object.assign(dataObject, await deserializer.read(15, bytes)); + } + await this.handleError(operationSchema, context, response, dataObject, this.deserializeMetadata(response)); + throw new Error("@smithy/core/protocols - HTTP Protocol error handler failed to throw."); + } + for (const header in response.headers) { + const value = response.headers[header]; + delete response.headers[header]; + response.headers[header.toLowerCase()] = value; + } + const nonHttpBindingMembers = await this.deserializeHttpMessage(ns, context, response, dataObject); + if (nonHttpBindingMembers.length) { + const bytes = await collectBody(response.body, context); + if (bytes.byteLength > 0) { + const dataFromBody = await deserializer.read(ns, bytes); + for (const member of nonHttpBindingMembers) { + if (dataFromBody[member] != null) { + dataObject[member] = dataFromBody[member]; + } + } + } + } + else if (nonHttpBindingMembers.discardResponseBody) { + await collectBody(response.body, context); + } + dataObject.$metadata = this.deserializeMetadata(response); + return dataObject; + } + async deserializeHttpMessage(schema, context, response, arg4, arg5) { + let dataObject; + if (arg4 instanceof Set) { + dataObject = arg5; + } + else { + dataObject = arg4; + } + let discardResponseBody = true; + const deserializer = this.deserializer; + const ns = NormalizedSchema.of(schema); + const nonHttpBindingMembers = []; + for (const [memberName, memberSchema] of ns.structIterator()) { + const memberTraits = memberSchema.getMemberTraits(); + if (memberTraits.httpPayload) { + discardResponseBody = false; + const isStreaming = memberSchema.isStreaming(); + if (isStreaming) { + const isEventStream = memberSchema.isStructSchema(); + if (isEventStream) { + dataObject[memberName] = await this.deserializeEventStream({ + response, + responseSchema: ns, + }); + } + else { + dataObject[memberName] = sdkStreamMixin(response.body); + } + } + else if (response.body) { + const bytes = await collectBody(response.body, context); + if (bytes.byteLength > 0) { + dataObject[memberName] = await deserializer.read(memberSchema, bytes); + } + } + } + else if (memberTraits.httpHeader) { + const key = String(memberTraits.httpHeader).toLowerCase(); + const value = response.headers[key]; + if (null != value) { + if (memberSchema.isListSchema()) { + const headerListValueSchema = memberSchema.getValueSchema(); + headerListValueSchema.getMergedTraits().httpHeader = key; + let sections; + if (headerListValueSchema.isTimestampSchema() && + headerListValueSchema.getSchema() === 4) { + sections = splitEvery(value, ",", 2); + } + else { + sections = splitHeader(value); + } + const list = []; + for (const section of sections) { + list.push(await deserializer.read(headerListValueSchema, section.trim())); + } + dataObject[memberName] = list; + } + else { + dataObject[memberName] = await deserializer.read(memberSchema, value); + } + } + } + else if (memberTraits.httpPrefixHeaders !== undefined) { + dataObject[memberName] = {}; + for (const [header, value] of Object.entries(response.headers)) { + if (header.startsWith(memberTraits.httpPrefixHeaders)) { + const valueSchema = memberSchema.getValueSchema(); + valueSchema.getMergedTraits().httpHeader = header; + dataObject[memberName][header.slice(memberTraits.httpPrefixHeaders.length)] = await deserializer.read(valueSchema, value); + } + } + } + else if (memberTraits.httpResponseCode) { + dataObject[memberName] = response.statusCode; + } + else { + nonHttpBindingMembers.push(memberName); + } + } + nonHttpBindingMembers.discardResponseBody = discardResponseBody; + return nonHttpBindingMembers; + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/HttpProtocol.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/HttpProtocol.js new file mode 100644 index 000000000..6d586175c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/HttpProtocol.js @@ -0,0 +1,140 @@ +import { NormalizedSchema, translateTraits, TypeRegistry } from "@smithy/core/schema"; +import { HttpRequest, HttpResponse } from "@smithy/protocol-http"; +import { SerdeContext } from "./SerdeContext"; +export class HttpProtocol extends SerdeContext { + options; + compositeErrorRegistry; + constructor(options) { + super(); + this.options = options; + this.compositeErrorRegistry = TypeRegistry.for(options.defaultNamespace); + for (const etr of options.errorTypeRegistries ?? []) { + this.compositeErrorRegistry.copyFrom(etr); + } + } + getRequestType() { + return HttpRequest; + } + getResponseType() { + return HttpResponse; + } + setSerdeContext(serdeContext) { + this.serdeContext = serdeContext; + this.serializer.setSerdeContext(serdeContext); + this.deserializer.setSerdeContext(serdeContext); + if (this.getPayloadCodec()) { + this.getPayloadCodec().setSerdeContext(serdeContext); + } + } + updateServiceEndpoint(request, endpoint) { + if ("url" in endpoint) { + request.protocol = endpoint.url.protocol; + request.hostname = endpoint.url.hostname; + request.port = endpoint.url.port ? Number(endpoint.url.port) : undefined; + request.path = endpoint.url.pathname; + request.fragment = endpoint.url.hash || void 0; + request.username = endpoint.url.username || void 0; + request.password = endpoint.url.password || void 0; + if (!request.query) { + request.query = {}; + } + for (const [k, v] of endpoint.url.searchParams.entries()) { + request.query[k] = v; + } + if (endpoint.headers) { + for (const [name, values] of Object.entries(endpoint.headers)) { + request.headers[name] = values.join(", "); + } + } + return request; + } + else { + request.protocol = endpoint.protocol; + request.hostname = endpoint.hostname; + request.port = endpoint.port ? Number(endpoint.port) : undefined; + request.path = endpoint.path; + request.query = { + ...endpoint.query, + }; + if (endpoint.headers) { + for (const [name, value] of Object.entries(endpoint.headers)) { + request.headers[name] = value; + } + } + return request; + } + } + setHostPrefix(request, operationSchema, input) { + if (this.serdeContext?.disableHostPrefix) { + return; + } + const inputNs = NormalizedSchema.of(operationSchema.input); + const opTraits = translateTraits(operationSchema.traits ?? {}); + if (opTraits.endpoint) { + let hostPrefix = opTraits.endpoint?.[0]; + if (typeof hostPrefix === "string") { + const hostLabelInputs = [...inputNs.structIterator()].filter(([, member]) => member.getMergedTraits().hostLabel); + for (const [name] of hostLabelInputs) { + const replacement = input[name]; + if (typeof replacement !== "string") { + throw new Error(`@smithy/core/schema - ${name} in input must be a string as hostLabel.`); + } + hostPrefix = hostPrefix.replace(`{${name}}`, replacement); + } + request.hostname = hostPrefix + request.hostname; + } + } + } + deserializeMetadata(output) { + return { + httpStatusCode: output.statusCode, + requestId: output.headers["x-amzn-requestid"] ?? output.headers["x-amzn-request-id"] ?? output.headers["x-amz-request-id"], + extendedRequestId: output.headers["x-amz-id-2"], + cfId: output.headers["x-amz-cf-id"], + }; + } + async serializeEventStream({ eventStream, requestSchema, initialRequest, }) { + const eventStreamSerde = await this.loadEventStreamCapability(); + return eventStreamSerde.serializeEventStream({ + eventStream, + requestSchema, + initialRequest, + }); + } + async deserializeEventStream({ response, responseSchema, initialResponseContainer, }) { + const eventStreamSerde = await this.loadEventStreamCapability(); + return eventStreamSerde.deserializeEventStream({ + response, + responseSchema, + initialResponseContainer, + }); + } + async loadEventStreamCapability() { + const { EventStreamSerde } = await import("@smithy/core/event-streams"); + return new EventStreamSerde({ + marshaller: this.getEventStreamMarshaller(), + serializer: this.serializer, + deserializer: this.deserializer, + serdeContext: this.serdeContext, + defaultContentType: this.getDefaultContentType(), + }); + } + getDefaultContentType() { + throw new Error(`@smithy/core/protocols - ${this.constructor.name} getDefaultContentType() implementation missing.`); + } + async deserializeHttpMessage(schema, context, response, arg4, arg5) { + void schema; + void context; + void response; + void arg4; + void arg5; + return []; + } + getEventStreamMarshaller() { + const context = this.serdeContext; + if (!context.eventStreamMarshaller) { + throw new Error("@smithy/core - HttpProtocol: eventStreamMarshaller missing in serdeContext."); + } + return context.eventStreamMarshaller; + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/RpcProtocol.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/RpcProtocol.js new file mode 100644 index 000000000..0e74e262b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/RpcProtocol.js @@ -0,0 +1,94 @@ +import { NormalizedSchema } from "@smithy/core/schema"; +import { HttpRequest } from "@smithy/protocol-http"; +import { collectBody } from "./collect-stream-body"; +import { HttpProtocol } from "./HttpProtocol"; +export class RpcProtocol extends HttpProtocol { + async serializeRequest(operationSchema, input, context) { + const serializer = this.serializer; + const query = {}; + const headers = {}; + const endpoint = await context.endpoint(); + const ns = NormalizedSchema.of(operationSchema?.input); + const schema = ns.getSchema(); + let payload; + const request = new HttpRequest({ + protocol: "", + hostname: "", + port: undefined, + path: "/", + fragment: undefined, + query: query, + headers: headers, + body: undefined, + }); + if (endpoint) { + this.updateServiceEndpoint(request, endpoint); + this.setHostPrefix(request, operationSchema, input); + } + const _input = { + ...input, + }; + if (input) { + const eventStreamMember = ns.getEventStreamMember(); + if (eventStreamMember) { + if (_input[eventStreamMember]) { + const initialRequest = {}; + for (const [memberName, memberSchema] of ns.structIterator()) { + if (memberName !== eventStreamMember && _input[memberName]) { + serializer.write(memberSchema, _input[memberName]); + initialRequest[memberName] = serializer.flush(); + } + } + payload = await this.serializeEventStream({ + eventStream: _input[eventStreamMember], + requestSchema: ns, + initialRequest, + }); + } + } + else { + serializer.write(schema, _input); + payload = serializer.flush(); + } + } + request.headers = Object.assign(request.headers, headers); + request.query = query; + request.body = payload; + request.method = "POST"; + return request; + } + async deserializeResponse(operationSchema, context, response) { + const deserializer = this.deserializer; + const ns = NormalizedSchema.of(operationSchema.output); + const dataObject = {}; + if (response.statusCode >= 300) { + const bytes = await collectBody(response.body, context); + if (bytes.byteLength > 0) { + Object.assign(dataObject, await deserializer.read(15, bytes)); + } + await this.handleError(operationSchema, context, response, dataObject, this.deserializeMetadata(response)); + throw new Error("@smithy/core/protocols - RPC Protocol error handler failed to throw."); + } + for (const header in response.headers) { + const value = response.headers[header]; + delete response.headers[header]; + response.headers[header.toLowerCase()] = value; + } + const eventStreamMember = ns.getEventStreamMember(); + if (eventStreamMember) { + dataObject[eventStreamMember] = await this.deserializeEventStream({ + response, + responseSchema: ns, + initialResponseContainer: dataObject, + }); + } + else { + const bytes = await collectBody(response.body, context); + if (bytes.byteLength > 0) { + Object.assign(dataObject, await deserializer.read(ns, bytes)); + } + } + dataObject.$metadata = this.deserializeMetadata(response); + return dataObject; + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/SerdeContext.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/SerdeContext.js new file mode 100644 index 000000000..567ae568e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/SerdeContext.js @@ -0,0 +1,6 @@ +export class SerdeContext { + serdeContext; + setSerdeContext(serdeContext) { + this.serdeContext = serdeContext; + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/collect-stream-body.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/collect-stream-body.js new file mode 100644 index 000000000..b6a5c0bae --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/collect-stream-body.js @@ -0,0 +1,11 @@ +import { Uint8ArrayBlobAdapter } from "@smithy/util-stream"; +export const collectBody = async (streamBody = new Uint8Array(), context) => { + if (streamBody instanceof Uint8Array) { + return Uint8ArrayBlobAdapter.mutate(streamBody); + } + if (!streamBody) { + return Uint8ArrayBlobAdapter.mutate(new Uint8Array()); + } + const fromContext = context.streamCollector(streamBody); + return Uint8ArrayBlobAdapter.mutate(await fromContext); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/extended-encode-uri-component.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/extended-encode-uri-component.js new file mode 100644 index 000000000..5baeaf563 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/extended-encode-uri-component.js @@ -0,0 +1,5 @@ +export function extendedEncodeURIComponent(str) { + return encodeURIComponent(str).replace(/[!'()*]/g, function (c) { + return "%" + c.charCodeAt(0).toString(16).toUpperCase(); + }); +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/index.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/index.js new file mode 100644 index 000000000..5cc40c526 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/index.js @@ -0,0 +1,13 @@ +export * from "./collect-stream-body"; +export * from "./extended-encode-uri-component"; +export * from "./HttpBindingProtocol"; +export * from "./HttpProtocol"; +export * from "./RpcProtocol"; +export * from "./requestBuilder"; +export * from "./resolve-path"; +export * from "./serde/FromStringShapeDeserializer"; +export * from "./serde/HttpInterceptingShapeDeserializer"; +export * from "./serde/HttpInterceptingShapeSerializer"; +export * from "./serde/ToStringShapeSerializer"; +export * from "./serde/determineTimestampFormat"; +export * from "./SerdeContext"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/requestBuilder.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/requestBuilder.js new file mode 100644 index 000000000..7126b71ed --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/requestBuilder.js @@ -0,0 +1,69 @@ +import { HttpRequest } from "@smithy/protocol-http"; +import { resolvedPath } from "./resolve-path"; +export function requestBuilder(input, context) { + return new RequestBuilder(input, context); +} +export class RequestBuilder { + input; + context; + query = {}; + method = ""; + headers = {}; + path = ""; + body = null; + hostname = ""; + resolvePathStack = []; + constructor(input, context) { + this.input = input; + this.context = context; + } + async build() { + const { hostname, protocol = "https", port, path: basePath } = await this.context.endpoint(); + this.path = basePath; + for (const resolvePath of this.resolvePathStack) { + resolvePath(this.path); + } + return new HttpRequest({ + protocol, + hostname: this.hostname || hostname, + port, + method: this.method, + path: this.path, + query: this.query, + body: this.body, + headers: this.headers, + }); + } + hn(hostname) { + this.hostname = hostname; + return this; + } + bp(uriLabel) { + this.resolvePathStack.push((basePath) => { + this.path = `${basePath?.endsWith("/") ? basePath.slice(0, -1) : basePath || ""}` + uriLabel; + }); + return this; + } + p(memberName, labelValueProvider, uriLabel, isGreedyLabel) { + this.resolvePathStack.push((path) => { + this.path = resolvedPath(path, this.input, memberName, labelValueProvider, uriLabel, isGreedyLabel); + }); + return this; + } + h(headers) { + this.headers = headers; + return this; + } + q(query) { + this.query = query; + return this; + } + b(body) { + this.body = body; + return this; + } + m(method) { + this.method = method; + return this; + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/resolve-path.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/resolve-path.js new file mode 100644 index 000000000..53c2d6c42 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/resolve-path.js @@ -0,0 +1,19 @@ +import { extendedEncodeURIComponent } from "./extended-encode-uri-component"; +export const resolvedPath = (resolvedPath, input, memberName, labelValueProvider, uriLabel, isGreedyLabel) => { + if (input != null && input[memberName] !== undefined) { + const labelValue = labelValueProvider(); + if (labelValue == null || labelValue.length <= 0) { + throw new Error("Empty value provided for input HTTP label: " + memberName + "."); + } + resolvedPath = resolvedPath.replace(uriLabel, isGreedyLabel + ? labelValue + .split("/") + .map((segment) => extendedEncodeURIComponent(segment)) + .join("/") + : extendedEncodeURIComponent(labelValue)); + } + else { + throw new Error("No value provided for input HTTP label: " + memberName + "."); + } + return resolvedPath; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/serde/FromStringShapeDeserializer.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/serde/FromStringShapeDeserializer.js new file mode 100644 index 000000000..a28e28046 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/serde/FromStringShapeDeserializer.js @@ -0,0 +1,66 @@ +import { NormalizedSchema } from "@smithy/core/schema"; +import { _parseEpochTimestamp, _parseRfc3339DateTimeWithOffset, _parseRfc7231DateTime, LazyJsonString, NumericValue, splitHeader, } from "@smithy/core/serde"; +import { fromBase64 } from "@smithy/util-base64"; +import { toUtf8 } from "@smithy/util-utf8"; +import { SerdeContext } from "../SerdeContext"; +import { determineTimestampFormat } from "./determineTimestampFormat"; +export class FromStringShapeDeserializer extends SerdeContext { + settings; + constructor(settings) { + super(); + this.settings = settings; + } + read(_schema, data) { + const ns = NormalizedSchema.of(_schema); + if (ns.isListSchema()) { + return splitHeader(data).map((item) => this.read(ns.getValueSchema(), item)); + } + if (ns.isBlobSchema()) { + return (this.serdeContext?.base64Decoder ?? fromBase64)(data); + } + if (ns.isTimestampSchema()) { + const format = determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + return _parseRfc3339DateTimeWithOffset(data); + case 6: + return _parseRfc7231DateTime(data); + case 7: + return _parseEpochTimestamp(data); + default: + console.warn("Missing timestamp format, parsing value with Date constructor:", data); + return new Date(data); + } + } + if (ns.isStringSchema()) { + const mediaType = ns.getMergedTraits().mediaType; + let intermediateValue = data; + if (mediaType) { + if (ns.getMergedTraits().httpHeader) { + intermediateValue = this.base64ToUtf8(intermediateValue); + } + const isJson = mediaType === "application/json" || mediaType.endsWith("+json"); + if (isJson) { + intermediateValue = LazyJsonString.from(intermediateValue); + } + return intermediateValue; + } + } + if (ns.isNumericSchema()) { + return Number(data); + } + if (ns.isBigIntegerSchema()) { + return BigInt(data); + } + if (ns.isBigDecimalSchema()) { + return new NumericValue(data, "bigDecimal"); + } + if (ns.isBooleanSchema()) { + return String(data).toLowerCase() === "true"; + } + return data; + } + base64ToUtf8(base64String) { + return (this.serdeContext?.utf8Encoder ?? toUtf8)((this.serdeContext?.base64Decoder ?? fromBase64)(base64String)); + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/serde/HttpInterceptingShapeDeserializer.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/serde/HttpInterceptingShapeDeserializer.js new file mode 100644 index 000000000..1cecb6d04 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/serde/HttpInterceptingShapeDeserializer.js @@ -0,0 +1,42 @@ +import { NormalizedSchema } from "@smithy/core/schema"; +import { fromUtf8, toUtf8 } from "@smithy/util-utf8"; +import { SerdeContext } from "../SerdeContext"; +import { FromStringShapeDeserializer } from "./FromStringShapeDeserializer"; +export class HttpInterceptingShapeDeserializer extends SerdeContext { + codecDeserializer; + stringDeserializer; + constructor(codecDeserializer, codecSettings) { + super(); + this.codecDeserializer = codecDeserializer; + this.stringDeserializer = new FromStringShapeDeserializer(codecSettings); + } + setSerdeContext(serdeContext) { + this.stringDeserializer.setSerdeContext(serdeContext); + this.codecDeserializer.setSerdeContext(serdeContext); + this.serdeContext = serdeContext; + } + read(schema, data) { + const ns = NormalizedSchema.of(schema); + const traits = ns.getMergedTraits(); + const toString = this.serdeContext?.utf8Encoder ?? toUtf8; + if (traits.httpHeader || traits.httpResponseCode) { + return this.stringDeserializer.read(ns, toString(data)); + } + if (traits.httpPayload) { + if (ns.isBlobSchema()) { + const toBytes = this.serdeContext?.utf8Decoder ?? fromUtf8; + if (typeof data === "string") { + return toBytes(data); + } + return data; + } + else if (ns.isStringSchema()) { + if ("byteLength" in data) { + return toString(data); + } + return data; + } + } + return this.codecDeserializer.read(ns, data); + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/serde/HttpInterceptingShapeSerializer.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/serde/HttpInterceptingShapeSerializer.js new file mode 100644 index 000000000..6abe70218 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/serde/HttpInterceptingShapeSerializer.js @@ -0,0 +1,33 @@ +import { NormalizedSchema } from "@smithy/core/schema"; +import { ToStringShapeSerializer } from "./ToStringShapeSerializer"; +export class HttpInterceptingShapeSerializer { + codecSerializer; + stringSerializer; + buffer; + constructor(codecSerializer, codecSettings, stringSerializer = new ToStringShapeSerializer(codecSettings)) { + this.codecSerializer = codecSerializer; + this.stringSerializer = stringSerializer; + } + setSerdeContext(serdeContext) { + this.codecSerializer.setSerdeContext(serdeContext); + this.stringSerializer.setSerdeContext(serdeContext); + } + write(schema, value) { + const ns = NormalizedSchema.of(schema); + const traits = ns.getMergedTraits(); + if (traits.httpHeader || traits.httpLabel || traits.httpQuery) { + this.stringSerializer.write(ns, value); + this.buffer = this.stringSerializer.flush(); + return; + } + return this.codecSerializer.write(ns, value); + } + flush() { + if (this.buffer !== undefined) { + const buffer = this.buffer; + this.buffer = undefined; + return buffer; + } + return this.codecSerializer.flush(); + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/serde/ToStringShapeSerializer.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/serde/ToStringShapeSerializer.js new file mode 100644 index 000000000..de25e8ea4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/serde/ToStringShapeSerializer.js @@ -0,0 +1,91 @@ +import { NormalizedSchema } from "@smithy/core/schema"; +import { dateToUtcString, generateIdempotencyToken, LazyJsonString, quoteHeader } from "@smithy/core/serde"; +import { toBase64 } from "@smithy/util-base64"; +import { SerdeContext } from "../SerdeContext"; +import { determineTimestampFormat } from "./determineTimestampFormat"; +export class ToStringShapeSerializer extends SerdeContext { + settings; + stringBuffer = ""; + constructor(settings) { + super(); + this.settings = settings; + } + write(schema, value) { + const ns = NormalizedSchema.of(schema); + switch (typeof value) { + case "object": + if (value === null) { + this.stringBuffer = "null"; + return; + } + if (ns.isTimestampSchema()) { + if (!(value instanceof Date)) { + throw new Error(`@smithy/core/protocols - received non-Date value ${value} when schema expected Date in ${ns.getName(true)}`); + } + const format = determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + this.stringBuffer = value.toISOString().replace(".000Z", "Z"); + break; + case 6: + this.stringBuffer = dateToUtcString(value); + break; + case 7: + this.stringBuffer = String(value.getTime() / 1000); + break; + default: + console.warn("Missing timestamp format, using epoch seconds", value); + this.stringBuffer = String(value.getTime() / 1000); + } + return; + } + if (ns.isBlobSchema() && "byteLength" in value) { + this.stringBuffer = (this.serdeContext?.base64Encoder ?? toBase64)(value); + return; + } + if (ns.isListSchema() && Array.isArray(value)) { + let buffer = ""; + for (const item of value) { + this.write([ns.getValueSchema(), ns.getMergedTraits()], item); + const headerItem = this.flush(); + const serialized = ns.getValueSchema().isTimestampSchema() ? headerItem : quoteHeader(headerItem); + if (buffer !== "") { + buffer += ", "; + } + buffer += serialized; + } + this.stringBuffer = buffer; + return; + } + this.stringBuffer = JSON.stringify(value, null, 2); + break; + case "string": + const mediaType = ns.getMergedTraits().mediaType; + let intermediateValue = value; + if (mediaType) { + const isJson = mediaType === "application/json" || mediaType.endsWith("+json"); + if (isJson) { + intermediateValue = LazyJsonString.from(intermediateValue); + } + if (ns.getMergedTraits().httpHeader) { + this.stringBuffer = (this.serdeContext?.base64Encoder ?? toBase64)(intermediateValue.toString()); + return; + } + } + this.stringBuffer = value; + break; + default: + if (ns.isIdempotencyToken()) { + this.stringBuffer = generateIdempotencyToken(); + } + else { + this.stringBuffer = String(value); + } + } + } + flush() { + const buffer = this.stringBuffer; + this.stringBuffer = ""; + return buffer; + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/serde/determineTimestampFormat.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/serde/determineTimestampFormat.js new file mode 100644 index 000000000..eaa6005c0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/protocols/serde/determineTimestampFormat.js @@ -0,0 +1,19 @@ +export function determineTimestampFormat(ns, settings) { + if (settings.timestampFormat.useTrait) { + if (ns.isTimestampSchema() && + (ns.getSchema() === 5 || + ns.getSchema() === 6 || + ns.getSchema() === 7)) { + return ns.getSchema(); + } + } + const { httpLabel, httpPrefixHeaders, httpHeader, httpQuery } = ns.getMergedTraits(); + const bindingFormat = settings.httpBindings + ? typeof httpPrefixHeaders === "string" || Boolean(httpHeader) + ? 6 + : Boolean(httpQuery) || Boolean(httpLabel) + ? 5 + : undefined + : undefined; + return bindingFormat ?? settings.timestampFormat.default; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/TypeRegistry.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/TypeRegistry.js new file mode 100644 index 000000000..99a6574ff --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/TypeRegistry.js @@ -0,0 +1,84 @@ +export class TypeRegistry { + namespace; + schemas; + exceptions; + static registries = new Map(); + constructor(namespace, schemas = new Map(), exceptions = new Map()) { + this.namespace = namespace; + this.schemas = schemas; + this.exceptions = exceptions; + } + static for(namespace) { + if (!TypeRegistry.registries.has(namespace)) { + TypeRegistry.registries.set(namespace, new TypeRegistry(namespace)); + } + return TypeRegistry.registries.get(namespace); + } + copyFrom(other) { + const { schemas, exceptions } = this; + for (const [k, v] of other.schemas) { + if (!schemas.has(k)) { + schemas.set(k, v); + } + } + for (const [k, v] of other.exceptions) { + if (!exceptions.has(k)) { + exceptions.set(k, v); + } + } + } + register(shapeId, schema) { + const qualifiedName = this.normalizeShapeId(shapeId); + for (const r of [this, TypeRegistry.for(qualifiedName.split("#")[0])]) { + r.schemas.set(qualifiedName, schema); + } + } + getSchema(shapeId) { + const id = this.normalizeShapeId(shapeId); + if (!this.schemas.has(id)) { + throw new Error(`@smithy/core/schema - schema not found for ${id}`); + } + return this.schemas.get(id); + } + registerError(es, ctor) { + const $error = es; + const ns = $error[1]; + for (const r of [this, TypeRegistry.for(ns)]) { + r.schemas.set(ns + "#" + $error[2], $error); + r.exceptions.set($error, ctor); + } + } + getErrorCtor(es) { + const $error = es; + if (this.exceptions.has($error)) { + return this.exceptions.get($error); + } + const registry = TypeRegistry.for($error[1]); + return registry.exceptions.get($error); + } + getBaseException() { + for (const exceptionKey of this.exceptions.keys()) { + if (Array.isArray(exceptionKey)) { + const [, ns, name] = exceptionKey; + const id = ns + "#" + name; + if (id.startsWith("smithy.ts.sdk.synthetic.") && id.endsWith("ServiceException")) { + return exceptionKey; + } + } + } + return undefined; + } + find(predicate) { + return [...this.schemas.values()].find(predicate); + } + clear() { + this.schemas.clear(); + this.exceptions.clear(); + } + normalizeShapeId(shapeId) { + if (shapeId.includes("#")) { + return shapeId; + } + return this.namespace + "#" + shapeId; + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/deref.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/deref.js new file mode 100644 index 000000000..6004ae3bf --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/deref.js @@ -0,0 +1,6 @@ +export const deref = (schemaRef) => { + if (typeof schemaRef === "function") { + return schemaRef(); + } + return schemaRef; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/index.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/index.js new file mode 100644 index 000000000..fe9508c3d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/index.js @@ -0,0 +1,14 @@ +export * from "./deref"; +export * from "./middleware/getSchemaSerdePlugin"; +export * from "./schemas/ListSchema"; +export * from "./schemas/MapSchema"; +export * from "./schemas/OperationSchema"; +export * from "./schemas/operation"; +export * from "./schemas/ErrorSchema"; +export * from "./schemas/NormalizedSchema"; +export * from "./schemas/Schema"; +export * from "./schemas/SimpleSchema"; +export * from "./schemas/StructureSchema"; +export * from "./schemas/sentinels"; +export * from "./schemas/translateTraits"; +export * from "./TypeRegistry"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/middleware/getSchemaSerdePlugin.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/middleware/getSchemaSerdePlugin.js new file mode 100644 index 000000000..d8515bcd4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/middleware/getSchemaSerdePlugin.js @@ -0,0 +1,23 @@ +import { schemaDeserializationMiddleware } from "./schemaDeserializationMiddleware"; +import { schemaSerializationMiddleware } from "./schemaSerializationMiddleware"; +export const deserializerMiddlewareOption = { + name: "deserializerMiddleware", + step: "deserialize", + tags: ["DESERIALIZER"], + override: true, +}; +export const serializerMiddlewareOption = { + name: "serializerMiddleware", + step: "serialize", + tags: ["SERIALIZER"], + override: true, +}; +export function getSchemaSerdePlugin(config) { + return { + applyToStack: (commandStack) => { + commandStack.add(schemaSerializationMiddleware(config), serializerMiddlewareOption); + commandStack.add(schemaDeserializationMiddleware(config), deserializerMiddlewareOption); + config.protocol.setSerdeContext(config); + }, + }; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schema-middleware-types.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schema-middleware-types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schema-middleware-types.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schemaDeserializationMiddleware.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schemaDeserializationMiddleware.js new file mode 100644 index 000000000..4ec7eff35 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schemaDeserializationMiddleware.js @@ -0,0 +1,65 @@ +import { HttpResponse } from "@smithy/protocol-http"; +import { getSmithyContext } from "@smithy/util-middleware"; +import { operation } from "../schemas/operation"; +export const schemaDeserializationMiddleware = (config) => (next, context) => async (args) => { + const { response } = await next(args); + const { operationSchema } = getSmithyContext(context); + const [, ns, n, t, i, o] = operationSchema ?? []; + try { + const parsed = await config.protocol.deserializeResponse(operation(ns, n, t, i, o), { + ...config, + ...context, + }, response); + return { + response, + output: parsed, + }; + } + catch (error) { + Object.defineProperty(error, "$response", { + value: response, + enumerable: false, + writable: false, + configurable: false, + }); + if (!("$metadata" in error)) { + const hint = `Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.`; + try { + error.message += "\n " + hint; + } + catch (e) { + if (!context.logger || context.logger?.constructor?.name === "NoOpLogger") { + console.warn(hint); + } + else { + context.logger?.warn?.(hint); + } + } + if (typeof error.$responseBodyText !== "undefined") { + if (error.$response) { + error.$response.body = error.$responseBodyText; + } + } + try { + if (HttpResponse.isInstance(response)) { + const { headers = {} } = response; + const headerEntries = Object.entries(headers); + error.$metadata = { + httpStatusCode: response.statusCode, + requestId: findHeader(/^x-[\w-]+-request-?id$/, headerEntries), + extendedRequestId: findHeader(/^x-[\w-]+-id-2$/, headerEntries), + cfId: findHeader(/^x-[\w-]+-cf-id$/, headerEntries), + }; + } + } + catch (e) { + } + } + throw error; + } +}; +const findHeader = (pattern, headers) => { + return (headers.find(([k]) => { + return k.match(pattern); + }) || [void 0, void 1])[1]; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schemaSerializationMiddleware.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schemaSerializationMiddleware.js new file mode 100644 index 000000000..6e7ec9117 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schemaSerializationMiddleware.js @@ -0,0 +1,19 @@ +import { toEndpointV1 } from "@smithy/core/endpoints"; +import { getSmithyContext } from "@smithy/util-middleware"; +import { operation } from "../schemas/operation"; +export const schemaSerializationMiddleware = (config) => (next, context) => async (args) => { + const { operationSchema } = getSmithyContext(context); + const [, ns, n, t, i, o] = operationSchema ?? []; + const endpoint = context.endpointV2 + ? async () => toEndpointV1(context.endpointV2) + : config.endpoint; + const request = await config.protocol.serializeRequest(operation(ns, n, t, i, o), args.input, { + ...config, + ...context, + endpoint, + }); + return next({ + ...args, + request, + }); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/schemas/ErrorSchema.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/schemas/ErrorSchema.js new file mode 100644 index 000000000..7a2599f2d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/schemas/ErrorSchema.js @@ -0,0 +1,15 @@ +import { Schema } from "./Schema"; +import { StructureSchema } from "./StructureSchema"; +export class ErrorSchema extends StructureSchema { + static symbol = Symbol.for("@smithy/err"); + ctor; + symbol = ErrorSchema.symbol; +} +export const error = (namespace, name, traits, memberNames, memberList, ctor) => Schema.assign(new ErrorSchema(), { + name, + namespace, + traits, + memberNames, + memberList, + ctor: null, +}); diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/schemas/ListSchema.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/schemas/ListSchema.js new file mode 100644 index 000000000..10b3182f9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/schemas/ListSchema.js @@ -0,0 +1,14 @@ +import { Schema } from "./Schema"; +export class ListSchema extends Schema { + static symbol = Symbol.for("@smithy/lis"); + name; + traits; + valueSchema; + symbol = ListSchema.symbol; +} +export const list = (namespace, name, traits, valueSchema) => Schema.assign(new ListSchema(), { + name, + namespace, + traits, + valueSchema, +}); diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/schemas/MapSchema.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/schemas/MapSchema.js new file mode 100644 index 000000000..a3956672a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/schemas/MapSchema.js @@ -0,0 +1,16 @@ +import { Schema } from "./Schema"; +export class MapSchema extends Schema { + static symbol = Symbol.for("@smithy/map"); + name; + traits; + keySchema; + valueSchema; + symbol = MapSchema.symbol; +} +export const map = (namespace, name, traits, keySchema, valueSchema) => Schema.assign(new MapSchema(), { + name, + namespace, + traits, + keySchema, + valueSchema, +}); diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/schemas/NormalizedSchema.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/schemas/NormalizedSchema.js new file mode 100644 index 000000000..7b97830b3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/schemas/NormalizedSchema.js @@ -0,0 +1,303 @@ +import { deref } from "../deref"; +import { translateTraits } from "./translateTraits"; +const anno = { + it: Symbol.for("@smithy/nor-struct-it"), + ns: Symbol.for("@smithy/ns"), +}; +export const simpleSchemaCacheN = []; +export const simpleSchemaCacheS = {}; +export class NormalizedSchema { + ref; + memberName; + static symbol = Symbol.for("@smithy/nor"); + symbol = NormalizedSchema.symbol; + name; + schema; + _isMemberSchema; + traits; + memberTraits; + normalizedTraits; + constructor(ref, memberName) { + this.ref = ref; + this.memberName = memberName; + const traitStack = []; + let _ref = ref; + let schema = ref; + this._isMemberSchema = false; + while (isMemberSchema(_ref)) { + traitStack.push(_ref[1]); + _ref = _ref[0]; + schema = deref(_ref); + this._isMemberSchema = true; + } + if (traitStack.length > 0) { + this.memberTraits = {}; + for (let i = traitStack.length - 1; i >= 0; --i) { + const traitSet = traitStack[i]; + Object.assign(this.memberTraits, translateTraits(traitSet)); + } + } + else { + this.memberTraits = 0; + } + if (schema instanceof NormalizedSchema) { + const computedMemberTraits = this.memberTraits; + Object.assign(this, schema); + this.memberTraits = Object.assign({}, computedMemberTraits, schema.getMemberTraits(), this.getMemberTraits()); + this.normalizedTraits = void 0; + this.memberName = memberName ?? schema.memberName; + return; + } + this.schema = deref(schema); + if (isStaticSchema(this.schema)) { + this.name = `${this.schema[1]}#${this.schema[2]}`; + this.traits = this.schema[3]; + } + else { + this.name = this.memberName ?? String(schema); + this.traits = 0; + } + if (this._isMemberSchema && !memberName) { + throw new Error(`@smithy/core/schema - NormalizedSchema member init ${this.getName(true)} missing member name.`); + } + } + static [Symbol.hasInstance](lhs) { + const isPrototype = this.prototype.isPrototypeOf(lhs); + if (!isPrototype && typeof lhs === "object" && lhs !== null) { + const ns = lhs; + return ns.symbol === this.symbol; + } + return isPrototype; + } + static of(ref) { + const keyAble = typeof ref === "function" || (typeof ref === "object" && ref !== null); + if (typeof ref === "number") { + if (simpleSchemaCacheN[ref]) { + return simpleSchemaCacheN[ref]; + } + } + else if (typeof ref === "string") { + if (simpleSchemaCacheS[ref]) { + return simpleSchemaCacheS[ref]; + } + } + else if (keyAble) { + if (ref[anno.ns]) { + return ref[anno.ns]; + } + } + const sc = deref(ref); + if (sc instanceof NormalizedSchema) { + return sc; + } + if (isMemberSchema(sc)) { + const [ns, traits] = sc; + if (ns instanceof NormalizedSchema) { + Object.assign(ns.getMergedTraits(), translateTraits(traits)); + return ns; + } + throw new Error(`@smithy/core/schema - may not init unwrapped member schema=${JSON.stringify(ref, null, 2)}.`); + } + const ns = new NormalizedSchema(sc); + if (keyAble) { + return (ref[anno.ns] = ns); + } + if (typeof sc === "string") { + return (simpleSchemaCacheS[sc] = ns); + } + if (typeof sc === "number") { + return (simpleSchemaCacheN[sc] = ns); + } + return ns; + } + getSchema() { + const sc = this.schema; + if (Array.isArray(sc) && sc[0] === 0) { + return sc[4]; + } + return sc; + } + getName(withNamespace = false) { + const { name } = this; + const short = !withNamespace && name && name.includes("#"); + return short ? name.split("#")[1] : name || undefined; + } + getMemberName() { + return this.memberName; + } + isMemberSchema() { + return this._isMemberSchema; + } + isListSchema() { + const sc = this.getSchema(); + return typeof sc === "number" + ? sc >= 64 && sc < 128 + : sc[0] === 1; + } + isMapSchema() { + const sc = this.getSchema(); + return typeof sc === "number" + ? sc >= 128 && sc <= 0b1111_1111 + : sc[0] === 2; + } + isStructSchema() { + const sc = this.getSchema(); + if (typeof sc !== "object") { + return false; + } + const id = sc[0]; + return (id === 3 || + id === -3 || + id === 4); + } + isUnionSchema() { + const sc = this.getSchema(); + if (typeof sc !== "object") { + return false; + } + return sc[0] === 4; + } + isBlobSchema() { + const sc = this.getSchema(); + return sc === 21 || sc === 42; + } + isTimestampSchema() { + const sc = this.getSchema(); + return (typeof sc === "number" && + sc >= 4 && + sc <= 7); + } + isUnitSchema() { + return this.getSchema() === "unit"; + } + isDocumentSchema() { + return this.getSchema() === 15; + } + isStringSchema() { + return this.getSchema() === 0; + } + isBooleanSchema() { + return this.getSchema() === 2; + } + isNumericSchema() { + return this.getSchema() === 1; + } + isBigIntegerSchema() { + return this.getSchema() === 17; + } + isBigDecimalSchema() { + return this.getSchema() === 19; + } + isStreaming() { + const { streaming } = this.getMergedTraits(); + return !!streaming || this.getSchema() === 42; + } + isIdempotencyToken() { + return !!this.getMergedTraits().idempotencyToken; + } + getMergedTraits() { + return (this.normalizedTraits ?? + (this.normalizedTraits = { + ...this.getOwnTraits(), + ...this.getMemberTraits(), + })); + } + getMemberTraits() { + return translateTraits(this.memberTraits); + } + getOwnTraits() { + return translateTraits(this.traits); + } + getKeySchema() { + const [isDoc, isMap] = [this.isDocumentSchema(), this.isMapSchema()]; + if (!isDoc && !isMap) { + throw new Error(`@smithy/core/schema - cannot get key for non-map: ${this.getName(true)}`); + } + const schema = this.getSchema(); + const memberSchema = isDoc + ? 15 + : schema[4] ?? 0; + return member([memberSchema, 0], "key"); + } + getValueSchema() { + const sc = this.getSchema(); + const [isDoc, isMap, isList] = [this.isDocumentSchema(), this.isMapSchema(), this.isListSchema()]; + const memberSchema = typeof sc === "number" + ? 0b0011_1111 & sc + : sc && typeof sc === "object" && (isMap || isList) + ? sc[3 + sc[0]] + : isDoc + ? 15 + : void 0; + if (memberSchema != null) { + return member([memberSchema, 0], isMap ? "value" : "member"); + } + throw new Error(`@smithy/core/schema - ${this.getName(true)} has no value member.`); + } + getMemberSchema(memberName) { + const struct = this.getSchema(); + if (this.isStructSchema() && struct[4].includes(memberName)) { + const i = struct[4].indexOf(memberName); + const memberSchema = struct[5][i]; + return member(isMemberSchema(memberSchema) ? memberSchema : [memberSchema, 0], memberName); + } + if (this.isDocumentSchema()) { + return member([15, 0], memberName); + } + throw new Error(`@smithy/core/schema - ${this.getName(true)} has no member=${memberName}.`); + } + getMemberSchemas() { + const buffer = {}; + try { + for (const [k, v] of this.structIterator()) { + buffer[k] = v; + } + } + catch (ignored) { } + return buffer; + } + getEventStreamMember() { + if (this.isStructSchema()) { + for (const [memberName, memberSchema] of this.structIterator()) { + if (memberSchema.isStreaming() && memberSchema.isStructSchema()) { + return memberName; + } + } + } + return ""; + } + *structIterator() { + if (this.isUnitSchema()) { + return; + } + if (!this.isStructSchema()) { + throw new Error("@smithy/core/schema - cannot iterate non-struct schema."); + } + const struct = this.getSchema(); + const z = struct[4].length; + let it = struct[anno.it]; + if (it && z === it.length) { + yield* it; + return; + } + it = Array(z); + for (let i = 0; i < z; ++i) { + const k = struct[4][i]; + const v = member([struct[5][i], 0], k); + yield (it[i] = [k, v]); + } + struct[anno.it] = it; + } +} +function member(memberSchema, memberName) { + if (memberSchema instanceof NormalizedSchema) { + return Object.assign(memberSchema, { + memberName, + _isMemberSchema: true, + }); + } + const internalCtorAccess = NormalizedSchema; + return new internalCtorAccess(memberSchema, memberName); +} +const isMemberSchema = (sc) => Array.isArray(sc) && sc.length === 2; +export const isStaticSchema = (sc) => Array.isArray(sc) && sc.length >= 5; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/schemas/OperationSchema.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/schemas/OperationSchema.js new file mode 100644 index 000000000..faf454a0b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/schemas/OperationSchema.js @@ -0,0 +1,16 @@ +import { Schema } from "./Schema"; +export class OperationSchema extends Schema { + static symbol = Symbol.for("@smithy/ope"); + name; + traits; + input; + output; + symbol = OperationSchema.symbol; +} +export const op = (namespace, name, traits, input, output) => Schema.assign(new OperationSchema(), { + name, + namespace, + traits, + input, + output, +}); diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/schemas/Schema.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/schemas/Schema.js new file mode 100644 index 000000000..f382fd73f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/schemas/Schema.js @@ -0,0 +1,20 @@ +export class Schema { + name; + namespace; + traits; + static assign(instance, values) { + const schema = Object.assign(instance, values); + return schema; + } + static [Symbol.hasInstance](lhs) { + const isPrototype = this.prototype.isPrototypeOf(lhs); + if (!isPrototype && typeof lhs === "object" && lhs !== null) { + const list = lhs; + return list.symbol === this.symbol; + } + return isPrototype; + } + getName() { + return this.namespace + "#" + this.name; + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/schemas/SimpleSchema.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/schemas/SimpleSchema.js new file mode 100644 index 000000000..395dd09e2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/schemas/SimpleSchema.js @@ -0,0 +1,20 @@ +import { Schema } from "./Schema"; +export class SimpleSchema extends Schema { + static symbol = Symbol.for("@smithy/sim"); + name; + schemaRef; + traits; + symbol = SimpleSchema.symbol; +} +export const sim = (namespace, name, schemaRef, traits) => Schema.assign(new SimpleSchema(), { + name, + namespace, + traits, + schemaRef, +}); +export const simAdapter = (namespace, name, traits, schemaRef) => Schema.assign(new SimpleSchema(), { + name, + namespace, + traits, + schemaRef, +}); diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/schemas/StructureSchema.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/schemas/StructureSchema.js new file mode 100644 index 000000000..b08a9bc2f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/schemas/StructureSchema.js @@ -0,0 +1,16 @@ +import { Schema } from "./Schema"; +export class StructureSchema extends Schema { + static symbol = Symbol.for("@smithy/str"); + name; + traits; + memberNames; + memberList; + symbol = StructureSchema.symbol; +} +export const struct = (namespace, name, traits, memberNames, memberList) => Schema.assign(new StructureSchema(), { + name, + namespace, + traits, + memberNames, + memberList, +}); diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/schemas/operation.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/schemas/operation.js new file mode 100644 index 000000000..093896136 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/schemas/operation.js @@ -0,0 +1,7 @@ +export const operation = (namespace, name, traits, input, output) => ({ + name, + namespace, + traits, + input, + output, +}); diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/schemas/sentinels.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/schemas/sentinels.js new file mode 100644 index 000000000..3ca09348c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/schemas/sentinels.js @@ -0,0 +1,16 @@ +export const SCHEMA = { + BLOB: 0b0001_0101, + STREAMING_BLOB: 0b0010_1010, + BOOLEAN: 0b0000_0010, + STRING: 0b0000_0000, + NUMERIC: 0b0000_0001, + BIG_INTEGER: 0b0001_0001, + BIG_DECIMAL: 0b0001_0011, + DOCUMENT: 0b0000_1111, + TIMESTAMP_DEFAULT: 0b0000_0100, + TIMESTAMP_DATE_TIME: 0b0000_0101, + TIMESTAMP_HTTP_DATE: 0b0000_0110, + TIMESTAMP_EPOCH_SECONDS: 0b0000_0111, + LIST_MODIFIER: 0b0100_0000, + MAP_MODIFIER: 0b1000_0000, +}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/schemas/translateTraits.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/schemas/translateTraits.js new file mode 100644 index 000000000..ebb450700 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/schema/schemas/translateTraits.js @@ -0,0 +1,26 @@ +export const traitsCache = []; +export function translateTraits(indicator) { + if (typeof indicator === "object") { + return indicator; + } + indicator = indicator | 0; + if (traitsCache[indicator]) { + return traitsCache[indicator]; + } + const traits = {}; + let i = 0; + for (const trait of [ + "httpLabel", + "idempotent", + "idempotencyToken", + "sensitive", + "httpPayload", + "httpResponseCode", + "httpQueryParams", + ]) { + if (((indicator >> i++) & 1) === 1) { + traits[trait] = 1; + } + } + return (traitsCache[indicator] = traits); +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/serde/copyDocumentWithTransform.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/serde/copyDocumentWithTransform.js new file mode 100644 index 000000000..633f05ac6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/serde/copyDocumentWithTransform.js @@ -0,0 +1 @@ +export const copyDocumentWithTransform = (source, schemaRef, transform = (_) => _) => source; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/serde/date-utils.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/serde/date-utils.js new file mode 100644 index 000000000..0d0abf25a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/serde/date-utils.js @@ -0,0 +1,190 @@ +import { strictParseByte, strictParseDouble, strictParseFloat32, strictParseShort } from "./parse-utils"; +const DAYS = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; +const MONTHS = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; +export function dateToUtcString(date) { + const year = date.getUTCFullYear(); + const month = date.getUTCMonth(); + const dayOfWeek = date.getUTCDay(); + const dayOfMonthInt = date.getUTCDate(); + const hoursInt = date.getUTCHours(); + const minutesInt = date.getUTCMinutes(); + const secondsInt = date.getUTCSeconds(); + const dayOfMonthString = dayOfMonthInt < 10 ? `0${dayOfMonthInt}` : `${dayOfMonthInt}`; + const hoursString = hoursInt < 10 ? `0${hoursInt}` : `${hoursInt}`; + const minutesString = minutesInt < 10 ? `0${minutesInt}` : `${minutesInt}`; + const secondsString = secondsInt < 10 ? `0${secondsInt}` : `${secondsInt}`; + return `${DAYS[dayOfWeek]}, ${dayOfMonthString} ${MONTHS[month]} ${year} ${hoursString}:${minutesString}:${secondsString} GMT`; +} +const RFC3339 = new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?[zZ]$/); +export const parseRfc3339DateTime = (value) => { + if (value === null || value === undefined) { + return undefined; + } + if (typeof value !== "string") { + throw new TypeError("RFC-3339 date-times must be expressed as strings"); + } + const match = RFC3339.exec(value); + if (!match) { + throw new TypeError("Invalid RFC-3339 date-time value"); + } + const [_, yearStr, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds] = match; + const year = strictParseShort(stripLeadingZeroes(yearStr)); + const month = parseDateValue(monthStr, "month", 1, 12); + const day = parseDateValue(dayStr, "day", 1, 31); + return buildDate(year, month, day, { hours, minutes, seconds, fractionalMilliseconds }); +}; +const RFC3339_WITH_OFFSET = new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?(([-+]\d{2}\:\d{2})|[zZ])$/); +export const parseRfc3339DateTimeWithOffset = (value) => { + if (value === null || value === undefined) { + return undefined; + } + if (typeof value !== "string") { + throw new TypeError("RFC-3339 date-times must be expressed as strings"); + } + const match = RFC3339_WITH_OFFSET.exec(value); + if (!match) { + throw new TypeError("Invalid RFC-3339 date-time value"); + } + const [_, yearStr, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds, offsetStr] = match; + const year = strictParseShort(stripLeadingZeroes(yearStr)); + const month = parseDateValue(monthStr, "month", 1, 12); + const day = parseDateValue(dayStr, "day", 1, 31); + const date = buildDate(year, month, day, { hours, minutes, seconds, fractionalMilliseconds }); + if (offsetStr.toUpperCase() != "Z") { + date.setTime(date.getTime() - parseOffsetToMilliseconds(offsetStr)); + } + return date; +}; +const IMF_FIXDATE = new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/); +const RFC_850_DATE = new RegExp(/^(?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d{2})-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/); +const ASC_TIME = new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( [1-9]|\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? (\d{4})$/); +export const parseRfc7231DateTime = (value) => { + if (value === null || value === undefined) { + return undefined; + } + if (typeof value !== "string") { + throw new TypeError("RFC-7231 date-times must be expressed as strings"); + } + let match = IMF_FIXDATE.exec(value); + if (match) { + const [_, dayStr, monthStr, yearStr, hours, minutes, seconds, fractionalMilliseconds] = match; + return buildDate(strictParseShort(stripLeadingZeroes(yearStr)), parseMonthByShortName(monthStr), parseDateValue(dayStr, "day", 1, 31), { hours, minutes, seconds, fractionalMilliseconds }); + } + match = RFC_850_DATE.exec(value); + if (match) { + const [_, dayStr, monthStr, yearStr, hours, minutes, seconds, fractionalMilliseconds] = match; + return adjustRfc850Year(buildDate(parseTwoDigitYear(yearStr), parseMonthByShortName(monthStr), parseDateValue(dayStr, "day", 1, 31), { + hours, + minutes, + seconds, + fractionalMilliseconds, + })); + } + match = ASC_TIME.exec(value); + if (match) { + const [_, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds, yearStr] = match; + return buildDate(strictParseShort(stripLeadingZeroes(yearStr)), parseMonthByShortName(monthStr), parseDateValue(dayStr.trimLeft(), "day", 1, 31), { hours, minutes, seconds, fractionalMilliseconds }); + } + throw new TypeError("Invalid RFC-7231 date-time value"); +}; +export const parseEpochTimestamp = (value) => { + if (value === null || value === undefined) { + return undefined; + } + let valueAsDouble; + if (typeof value === "number") { + valueAsDouble = value; + } + else if (typeof value === "string") { + valueAsDouble = strictParseDouble(value); + } + else if (typeof value === "object" && value.tag === 1) { + valueAsDouble = value.value; + } + else { + throw new TypeError("Epoch timestamps must be expressed as floating point numbers or their string representation"); + } + if (Number.isNaN(valueAsDouble) || valueAsDouble === Infinity || valueAsDouble === -Infinity) { + throw new TypeError("Epoch timestamps must be valid, non-Infinite, non-NaN numerics"); + } + return new Date(Math.round(valueAsDouble * 1000)); +}; +const buildDate = (year, month, day, time) => { + const adjustedMonth = month - 1; + validateDayOfMonth(year, adjustedMonth, day); + return new Date(Date.UTC(year, adjustedMonth, day, parseDateValue(time.hours, "hour", 0, 23), parseDateValue(time.minutes, "minute", 0, 59), parseDateValue(time.seconds, "seconds", 0, 60), parseMilliseconds(time.fractionalMilliseconds))); +}; +const parseTwoDigitYear = (value) => { + const thisYear = new Date().getUTCFullYear(); + const valueInThisCentury = Math.floor(thisYear / 100) * 100 + strictParseShort(stripLeadingZeroes(value)); + if (valueInThisCentury < thisYear) { + return valueInThisCentury + 100; + } + return valueInThisCentury; +}; +const FIFTY_YEARS_IN_MILLIS = 50 * 365 * 24 * 60 * 60 * 1000; +const adjustRfc850Year = (input) => { + if (input.getTime() - new Date().getTime() > FIFTY_YEARS_IN_MILLIS) { + return new Date(Date.UTC(input.getUTCFullYear() - 100, input.getUTCMonth(), input.getUTCDate(), input.getUTCHours(), input.getUTCMinutes(), input.getUTCSeconds(), input.getUTCMilliseconds())); + } + return input; +}; +const parseMonthByShortName = (value) => { + const monthIdx = MONTHS.indexOf(value); + if (monthIdx < 0) { + throw new TypeError(`Invalid month: ${value}`); + } + return monthIdx + 1; +}; +const DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; +const validateDayOfMonth = (year, month, day) => { + let maxDays = DAYS_IN_MONTH[month]; + if (month === 1 && isLeapYear(year)) { + maxDays = 29; + } + if (day > maxDays) { + throw new TypeError(`Invalid day for ${MONTHS[month]} in ${year}: ${day}`); + } +}; +const isLeapYear = (year) => { + return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); +}; +const parseDateValue = (value, type, lower, upper) => { + const dateVal = strictParseByte(stripLeadingZeroes(value)); + if (dateVal < lower || dateVal > upper) { + throw new TypeError(`${type} must be between ${lower} and ${upper}, inclusive`); + } + return dateVal; +}; +const parseMilliseconds = (value) => { + if (value === null || value === undefined) { + return 0; + } + return strictParseFloat32("0." + value) * 1000; +}; +const parseOffsetToMilliseconds = (value) => { + const directionStr = value[0]; + let direction = 1; + if (directionStr == "+") { + direction = 1; + } + else if (directionStr == "-") { + direction = -1; + } + else { + throw new TypeError(`Offset direction, ${directionStr}, must be "+" or "-"`); + } + const hour = Number(value.substring(1, 3)); + const minute = Number(value.substring(4, 6)); + return direction * (hour * 60 + minute) * 60 * 1000; +}; +const stripLeadingZeroes = (value) => { + let idx = 0; + while (idx < value.length - 1 && value.charAt(idx) === "0") { + idx++; + } + if (idx === 0) { + return value; + } + return value.slice(idx); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/serde/generateIdempotencyToken.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/serde/generateIdempotencyToken.js new file mode 100644 index 000000000..69ef1f22b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/serde/generateIdempotencyToken.js @@ -0,0 +1,2 @@ +import { v4 as generateIdempotencyToken } from "@smithy/uuid"; +export { generateIdempotencyToken }; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/serde/index.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/serde/index.js new file mode 100644 index 000000000..421ec8ea1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/serde/index.js @@ -0,0 +1,10 @@ +export * from "./copyDocumentWithTransform"; +export * from "./date-utils"; +export * from "./generateIdempotencyToken"; +export * from "./lazy-json"; +export * from "./parse-utils"; +export * from "./quote-header"; +export * from "./schema-serde-lib/schema-date-utils"; +export * from "./split-every"; +export * from "./split-header"; +export * from "./value/NumericValue"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/serde/lazy-json.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/serde/lazy-json.js new file mode 100644 index 000000000..9bddfce3d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/serde/lazy-json.js @@ -0,0 +1,24 @@ +export const LazyJsonString = function LazyJsonString(val) { + const str = Object.assign(new String(val), { + deserializeJSON() { + return JSON.parse(String(val)); + }, + toString() { + return String(val); + }, + toJSON() { + return String(val); + }, + }); + return str; +}; +LazyJsonString.from = (object) => { + if (object && typeof object === "object" && (object instanceof LazyJsonString || "deserializeJSON" in object)) { + return object; + } + else if (typeof object === "string" || Object.getPrototypeOf(object) === String.prototype) { + return LazyJsonString(String(object)); + } + return LazyJsonString(JSON.stringify(object)); +}; +LazyJsonString.fromObject = LazyJsonString.from; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/serde/parse-utils.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/serde/parse-utils.js new file mode 100644 index 000000000..209db79ad --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/serde/parse-utils.js @@ -0,0 +1,230 @@ +export const parseBoolean = (value) => { + switch (value) { + case "true": + return true; + case "false": + return false; + default: + throw new Error(`Unable to parse boolean value "${value}"`); + } +}; +export const expectBoolean = (value) => { + if (value === null || value === undefined) { + return undefined; + } + if (typeof value === "number") { + if (value === 0 || value === 1) { + logger.warn(stackTraceWarning(`Expected boolean, got ${typeof value}: ${value}`)); + } + if (value === 0) { + return false; + } + if (value === 1) { + return true; + } + } + if (typeof value === "string") { + const lower = value.toLowerCase(); + if (lower === "false" || lower === "true") { + logger.warn(stackTraceWarning(`Expected boolean, got ${typeof value}: ${value}`)); + } + if (lower === "false") { + return false; + } + if (lower === "true") { + return true; + } + } + if (typeof value === "boolean") { + return value; + } + throw new TypeError(`Expected boolean, got ${typeof value}: ${value}`); +}; +export const expectNumber = (value) => { + if (value === null || value === undefined) { + return undefined; + } + if (typeof value === "string") { + const parsed = parseFloat(value); + if (!Number.isNaN(parsed)) { + if (String(parsed) !== String(value)) { + logger.warn(stackTraceWarning(`Expected number but observed string: ${value}`)); + } + return parsed; + } + } + if (typeof value === "number") { + return value; + } + throw new TypeError(`Expected number, got ${typeof value}: ${value}`); +}; +const MAX_FLOAT = Math.ceil(2 ** 127 * (2 - 2 ** -23)); +export const expectFloat32 = (value) => { + const expected = expectNumber(value); + if (expected !== undefined && !Number.isNaN(expected) && expected !== Infinity && expected !== -Infinity) { + if (Math.abs(expected) > MAX_FLOAT) { + throw new TypeError(`Expected 32-bit float, got ${value}`); + } + } + return expected; +}; +export const expectLong = (value) => { + if (value === null || value === undefined) { + return undefined; + } + if (Number.isInteger(value) && !Number.isNaN(value)) { + return value; + } + throw new TypeError(`Expected integer, got ${typeof value}: ${value}`); +}; +export const expectInt = expectLong; +export const expectInt32 = (value) => expectSizedInt(value, 32); +export const expectShort = (value) => expectSizedInt(value, 16); +export const expectByte = (value) => expectSizedInt(value, 8); +const expectSizedInt = (value, size) => { + const expected = expectLong(value); + if (expected !== undefined && castInt(expected, size) !== expected) { + throw new TypeError(`Expected ${size}-bit integer, got ${value}`); + } + return expected; +}; +const castInt = (value, size) => { + switch (size) { + case 32: + return Int32Array.of(value)[0]; + case 16: + return Int16Array.of(value)[0]; + case 8: + return Int8Array.of(value)[0]; + } +}; +export const expectNonNull = (value, location) => { + if (value === null || value === undefined) { + if (location) { + throw new TypeError(`Expected a non-null value for ${location}`); + } + throw new TypeError("Expected a non-null value"); + } + return value; +}; +export const expectObject = (value) => { + if (value === null || value === undefined) { + return undefined; + } + if (typeof value === "object" && !Array.isArray(value)) { + return value; + } + const receivedType = Array.isArray(value) ? "array" : typeof value; + throw new TypeError(`Expected object, got ${receivedType}: ${value}`); +}; +export const expectString = (value) => { + if (value === null || value === undefined) { + return undefined; + } + if (typeof value === "string") { + return value; + } + if (["boolean", "number", "bigint"].includes(typeof value)) { + logger.warn(stackTraceWarning(`Expected string, got ${typeof value}: ${value}`)); + return String(value); + } + throw new TypeError(`Expected string, got ${typeof value}: ${value}`); +}; +export const expectUnion = (value) => { + if (value === null || value === undefined) { + return undefined; + } + const asObject = expectObject(value); + const setKeys = Object.entries(asObject) + .filter(([, v]) => v != null) + .map(([k]) => k); + if (setKeys.length === 0) { + throw new TypeError(`Unions must have exactly one non-null member. None were found.`); + } + if (setKeys.length > 1) { + throw new TypeError(`Unions must have exactly one non-null member. Keys ${setKeys} were not null.`); + } + return asObject; +}; +export const strictParseDouble = (value) => { + if (typeof value == "string") { + return expectNumber(parseNumber(value)); + } + return expectNumber(value); +}; +export const strictParseFloat = strictParseDouble; +export const strictParseFloat32 = (value) => { + if (typeof value == "string") { + return expectFloat32(parseNumber(value)); + } + return expectFloat32(value); +}; +const NUMBER_REGEX = /(-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?)|(-?Infinity)|(NaN)/g; +const parseNumber = (value) => { + const matches = value.match(NUMBER_REGEX); + if (matches === null || matches[0].length !== value.length) { + throw new TypeError(`Expected real number, got implicit NaN`); + } + return parseFloat(value); +}; +export const limitedParseDouble = (value) => { + if (typeof value == "string") { + return parseFloatString(value); + } + return expectNumber(value); +}; +export const handleFloat = limitedParseDouble; +export const limitedParseFloat = limitedParseDouble; +export const limitedParseFloat32 = (value) => { + if (typeof value == "string") { + return parseFloatString(value); + } + return expectFloat32(value); +}; +const parseFloatString = (value) => { + switch (value) { + case "NaN": + return NaN; + case "Infinity": + return Infinity; + case "-Infinity": + return -Infinity; + default: + throw new Error(`Unable to parse float value: ${value}`); + } +}; +export const strictParseLong = (value) => { + if (typeof value === "string") { + return expectLong(parseNumber(value)); + } + return expectLong(value); +}; +export const strictParseInt = strictParseLong; +export const strictParseInt32 = (value) => { + if (typeof value === "string") { + return expectInt32(parseNumber(value)); + } + return expectInt32(value); +}; +export const strictParseShort = (value) => { + if (typeof value === "string") { + return expectShort(parseNumber(value)); + } + return expectShort(value); +}; +export const strictParseByte = (value) => { + if (typeof value === "string") { + return expectByte(parseNumber(value)); + } + return expectByte(value); +}; +const stackTraceWarning = (message) => { + return String(new TypeError(message).stack || message) + .split("\n") + .slice(0, 5) + .filter((s) => !s.includes("stackTraceWarning")) + .join("\n"); +}; +export const logger = { + warn: console.warn, +}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/serde/quote-header.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/serde/quote-header.js new file mode 100644 index 000000000..d0ddf67f3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/serde/quote-header.js @@ -0,0 +1,6 @@ +export function quoteHeader(part) { + if (part.includes(",") || part.includes('"')) { + part = `"${part.replace(/"/g, '\\"')}"`; + } + return part; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/serde/schema-serde-lib/schema-date-utils.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/serde/schema-serde-lib/schema-date-utils.js new file mode 100644 index 000000000..b41589e35 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/serde/schema-serde-lib/schema-date-utils.js @@ -0,0 +1,101 @@ +const ddd = `(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)(?:[ne|u?r]?s?day)?`; +const mmm = `(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)`; +const time = `(\\d?\\d):(\\d{2}):(\\d{2})(?:\\.(\\d+))?`; +const date = `(\\d?\\d)`; +const year = `(\\d{4})`; +const RFC3339_WITH_OFFSET = new RegExp(/^(\d{4})-(\d\d)-(\d\d)[tT](\d\d):(\d\d):(\d\d)(\.(\d+))?(([-+]\d\d:\d\d)|[zZ])$/); +const IMF_FIXDATE = new RegExp(`^${ddd}, ${date} ${mmm} ${year} ${time} GMT$`); +const RFC_850_DATE = new RegExp(`^${ddd}, ${date}-${mmm}-(\\d\\d) ${time} GMT$`); +const ASC_TIME = new RegExp(`^${ddd} ${mmm} ( [1-9]|\\d\\d) ${time} ${year}$`); +const months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; +export const _parseEpochTimestamp = (value) => { + if (value == null) { + return void 0; + } + let num = NaN; + if (typeof value === "number") { + num = value; + } + else if (typeof value === "string") { + if (!/^-?\d*\.?\d+$/.test(value)) { + throw new TypeError(`parseEpochTimestamp - numeric string invalid.`); + } + num = Number.parseFloat(value); + } + else if (typeof value === "object" && value.tag === 1) { + num = value.value; + } + if (isNaN(num) || Math.abs(num) === Infinity) { + throw new TypeError("Epoch timestamps must be valid finite numbers."); + } + return new Date(Math.round(num * 1000)); +}; +export const _parseRfc3339DateTimeWithOffset = (value) => { + if (value == null) { + return void 0; + } + if (typeof value !== "string") { + throw new TypeError("RFC3339 timestamps must be strings"); + } + const matches = RFC3339_WITH_OFFSET.exec(value); + if (!matches) { + throw new TypeError(`Invalid RFC3339 timestamp format ${value}`); + } + const [, yearStr, monthStr, dayStr, hours, minutes, seconds, , ms, offsetStr] = matches; + range(monthStr, 1, 12); + range(dayStr, 1, 31); + range(hours, 0, 23); + range(minutes, 0, 59); + range(seconds, 0, 60); + const date = new Date(Date.UTC(Number(yearStr), Number(monthStr) - 1, Number(dayStr), Number(hours), Number(minutes), Number(seconds), Number(ms) ? Math.round(parseFloat(`0.${ms}`) * 1000) : 0)); + date.setUTCFullYear(Number(yearStr)); + if (offsetStr.toUpperCase() != "Z") { + const [, sign, offsetH, offsetM] = /([+-])(\d\d):(\d\d)/.exec(offsetStr) || [void 0, "+", 0, 0]; + const scalar = sign === "-" ? 1 : -1; + date.setTime(date.getTime() + scalar * (Number(offsetH) * 60 * 60 * 1000 + Number(offsetM) * 60 * 1000)); + } + return date; +}; +export const _parseRfc7231DateTime = (value) => { + if (value == null) { + return void 0; + } + if (typeof value !== "string") { + throw new TypeError("RFC7231 timestamps must be strings."); + } + let day; + let month; + let year; + let hour; + let minute; + let second; + let fraction; + let matches; + if ((matches = IMF_FIXDATE.exec(value))) { + [, day, month, year, hour, minute, second, fraction] = matches; + } + else if ((matches = RFC_850_DATE.exec(value))) { + [, day, month, year, hour, minute, second, fraction] = matches; + year = (Number(year) + 1900).toString(); + } + else if ((matches = ASC_TIME.exec(value))) { + [, month, day, hour, minute, second, fraction, year] = matches; + } + if (year && second) { + const timestamp = Date.UTC(Number(year), months.indexOf(month), Number(day), Number(hour), Number(minute), Number(second), fraction ? Math.round(parseFloat(`0.${fraction}`) * 1000) : 0); + range(day, 1, 31); + range(hour, 0, 23); + range(minute, 0, 59); + range(second, 0, 60); + const date = new Date(timestamp); + date.setUTCFullYear(Number(year)); + return date; + } + throw new TypeError(`Invalid RFC7231 date-time value ${value}.`); +}; +function range(v, min, max) { + const _v = Number(v); + if (_v < min || _v > max) { + throw new Error(`Value ${_v} out of range [${min}, ${max}]`); + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/serde/split-every.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/serde/split-every.js new file mode 100644 index 000000000..1d78dcae3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/serde/split-every.js @@ -0,0 +1,27 @@ +export function splitEvery(value, delimiter, numDelimiters) { + if (numDelimiters <= 0 || !Number.isInteger(numDelimiters)) { + throw new Error("Invalid number of delimiters (" + numDelimiters + ") for splitEvery."); + } + const segments = value.split(delimiter); + if (numDelimiters === 1) { + return segments; + } + const compoundSegments = []; + let currentSegment = ""; + for (let i = 0; i < segments.length; i++) { + if (currentSegment === "") { + currentSegment = segments[i]; + } + else { + currentSegment += delimiter + segments[i]; + } + if ((i + 1) % numDelimiters === 0) { + compoundSegments.push(currentSegment); + currentSegment = ""; + } + } + if (currentSegment !== "") { + compoundSegments.push(currentSegment); + } + return compoundSegments; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/serde/split-header.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/serde/split-header.js new file mode 100644 index 000000000..518e77f25 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/serde/split-header.js @@ -0,0 +1,37 @@ +export const splitHeader = (value) => { + const z = value.length; + const values = []; + let withinQuotes = false; + let prevChar = undefined; + let anchor = 0; + for (let i = 0; i < z; ++i) { + const char = value[i]; + switch (char) { + case `"`: + if (prevChar !== "\\") { + withinQuotes = !withinQuotes; + } + break; + case ",": + if (!withinQuotes) { + values.push(value.slice(anchor, i)); + anchor = i + 1; + } + break; + default: + } + prevChar = char; + } + values.push(value.slice(anchor)); + return values.map((v) => { + v = v.trim(); + const z = v.length; + if (z < 2) { + return v; + } + if (v[0] === `"` && v[z - 1] === `"`) { + v = v.slice(1, z - 1); + } + return v.replace(/\\"/g, '"'); + }); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/serde/value/NumericValue.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/serde/value/NumericValue.js new file mode 100644 index 000000000..245511662 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/submodules/serde/value/NumericValue.js @@ -0,0 +1,25 @@ +const format = /^-?\d*(\.\d+)?$/; +export class NumericValue { + string; + type; + constructor(string, type) { + this.string = string; + this.type = type; + if (!format.test(string)) { + throw new Error(`@smithy/core/serde - NumericValue must only contain [0-9], at most one decimal point ".", and an optional negation prefix "-".`); + } + } + toString() { + return this.string; + } + static [Symbol.hasInstance](object) { + if (!object || typeof object !== "object") { + return false; + } + const _nv = object; + return NumericValue.prototype.isPrototypeOf(object) || (_nv.type === "bigDecimal" && format.test(_nv.string)); + } +} +export function nv(input) { + return new NumericValue(String(input), "bigDecimal"); +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/util-identity-and-auth/DefaultIdentityProviderConfig.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/util-identity-and-auth/DefaultIdentityProviderConfig.js new file mode 100644 index 000000000..70d05af03 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/util-identity-and-auth/DefaultIdentityProviderConfig.js @@ -0,0 +1,13 @@ +export class DefaultIdentityProviderConfig { + authSchemes = new Map(); + constructor(config) { + for (const [key, value] of Object.entries(config)) { + if (value !== undefined) { + this.authSchemes.set(key, value); + } + } + } + getIdentityProvider(schemeId) { + return this.authSchemes.get(schemeId); + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.js new file mode 100644 index 000000000..8b6f598cf --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.js @@ -0,0 +1,34 @@ +import { HttpRequest } from "@smithy/protocol-http"; +import { HttpApiKeyAuthLocation } from "@smithy/types"; +export class HttpApiKeyAuthSigner { + async sign(httpRequest, identity, signingProperties) { + if (!signingProperties) { + throw new Error("request could not be signed with `apiKey` since the `name` and `in` signer properties are missing"); + } + if (!signingProperties.name) { + throw new Error("request could not be signed with `apiKey` since the `name` signer property is missing"); + } + if (!signingProperties.in) { + throw new Error("request could not be signed with `apiKey` since the `in` signer property is missing"); + } + if (!identity.apiKey) { + throw new Error("request could not be signed with `apiKey` since the `apiKey` is not defined"); + } + const clonedRequest = HttpRequest.clone(httpRequest); + if (signingProperties.in === HttpApiKeyAuthLocation.QUERY) { + clonedRequest.query[signingProperties.name] = identity.apiKey; + } + else if (signingProperties.in === HttpApiKeyAuthLocation.HEADER) { + clonedRequest.headers[signingProperties.name] = signingProperties.scheme + ? `${signingProperties.scheme} ${identity.apiKey}` + : identity.apiKey; + } + else { + throw new Error("request can only be signed with `apiKey` locations `query` or `header`, " + + "but found: `" + + signingProperties.in + + "`"); + } + return clonedRequest; + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.js new file mode 100644 index 000000000..b92a9c35b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.js @@ -0,0 +1,11 @@ +import { HttpRequest } from "@smithy/protocol-http"; +export class HttpBearerAuthSigner { + async sign(httpRequest, identity, signingProperties) { + const clonedRequest = HttpRequest.clone(httpRequest); + if (!identity.token) { + throw new Error("request could not be signed with `token` since the `token` is not defined"); + } + clonedRequest.headers["Authorization"] = `Bearer ${identity.token}`; + return clonedRequest; + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/index.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/index.js new file mode 100644 index 000000000..9d240feb1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/index.js @@ -0,0 +1,3 @@ +export * from "./httpApiKeyAuth"; +export * from "./httpBearerAuth"; +export * from "./noAuth"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/noAuth.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/noAuth.js new file mode 100644 index 000000000..356193d18 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/noAuth.js @@ -0,0 +1,5 @@ +export class NoAuthSigner { + async sign(httpRequest, identity, signingProperties) { + return httpRequest; + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/util-identity-and-auth/index.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/util-identity-and-auth/index.js new file mode 100644 index 000000000..87ba64ba6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/util-identity-and-auth/index.js @@ -0,0 +1,3 @@ +export * from "./DefaultIdentityProviderConfig"; +export * from "./httpAuthSchemes"; +export * from "./memoizeIdentityProvider"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-es/util-identity-and-auth/memoizeIdentityProvider.js b/food-ordering-app/server/node_modules/@smithy/core/dist-es/util-identity-and-auth/memoizeIdentityProvider.js new file mode 100644 index 000000000..b40049a8f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-es/util-identity-and-auth/memoizeIdentityProvider.js @@ -0,0 +1,55 @@ +export const createIsIdentityExpiredFunction = (expirationMs) => function isIdentityExpired(identity) { + return doesIdentityRequireRefresh(identity) && identity.expiration.getTime() - Date.now() < expirationMs; +}; +export const EXPIRATION_MS = 300_000; +export const isIdentityExpired = createIsIdentityExpiredFunction(EXPIRATION_MS); +export const doesIdentityRequireRefresh = (identity) => identity.expiration !== undefined; +export const memoizeIdentityProvider = (provider, isExpired, requiresRefresh) => { + if (provider === undefined) { + return undefined; + } + const normalizedProvider = typeof provider !== "function" ? async () => Promise.resolve(provider) : provider; + let resolved; + let pending; + let hasResult; + let isConstant = false; + const coalesceProvider = async (options) => { + if (!pending) { + pending = normalizedProvider(options); + } + try { + resolved = await pending; + hasResult = true; + isConstant = false; + } + finally { + pending = undefined; + } + return resolved; + }; + if (isExpired === undefined) { + return async (options) => { + if (!hasResult || options?.forceRefresh) { + resolved = await coalesceProvider(options); + } + return resolved; + }; + } + return async (options) => { + if (!hasResult || options?.forceRefresh) { + resolved = await coalesceProvider(options); + } + if (isConstant) { + return resolved; + } + if (!requiresRefresh(resolved)) { + isConstant = true; + return resolved; + } + if (isExpired(resolved)) { + await coalesceProvider(options); + return resolved; + } + return resolved; + }; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/getSmithyContext.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/getSmithyContext.d.ts new file mode 100644 index 000000000..92cbb09b6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/getSmithyContext.d.ts @@ -0,0 +1,5 @@ +import type { HandlerExecutionContext } from "@smithy/types"; +/** + * @internal + */ +export declare const getSmithyContext: (context: HandlerExecutionContext) => Record; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/index.d.ts new file mode 100644 index 000000000..82c90b929 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/index.d.ts @@ -0,0 +1,8 @@ +export * from "./getSmithyContext"; +export * from "./middleware-http-auth-scheme"; +export * from "./middleware-http-signing"; +export * from "./normalizeProvider"; +export { createPaginator } from "./pagination/createPaginator"; +export * from "./request-builder/requestBuilder"; +export * from "./setFeature"; +export * from "./util-identity-and-auth"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.d.ts new file mode 100644 index 000000000..0a93d3375 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.d.ts @@ -0,0 +1,18 @@ +import type { HandlerExecutionContext, HttpAuthSchemeParameters, HttpAuthSchemeParametersProvider, IdentityProviderConfig, Pluggable, RelativeMiddlewareOptions, SerializeHandlerOptions } from "@smithy/types"; +import type { PreviouslyResolved } from "./httpAuthSchemeMiddleware"; +/** + * @internal + */ +export declare const httpAuthSchemeEndpointRuleSetMiddlewareOptions: SerializeHandlerOptions & RelativeMiddlewareOptions; +/** + * @internal + */ +interface HttpAuthSchemeEndpointRuleSetPluginOptions { + httpAuthSchemeParametersProvider: HttpAuthSchemeParametersProvider; + identityProviderConfigProvider: (config: TConfig) => Promise; +} +/** + * @internal + */ +export declare const getHttpAuthSchemeEndpointRuleSetPlugin: (config: TConfig & PreviouslyResolved, { httpAuthSchemeParametersProvider, identityProviderConfigProvider, }: HttpAuthSchemeEndpointRuleSetPluginOptions) => Pluggable; +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/getHttpAuthSchemePlugin.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/getHttpAuthSchemePlugin.d.ts new file mode 100644 index 000000000..0c314c3bd --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/getHttpAuthSchemePlugin.d.ts @@ -0,0 +1,18 @@ +import type { HandlerExecutionContext, HttpAuthSchemeParameters, HttpAuthSchemeParametersProvider, IdentityProviderConfig, Pluggable, RelativeMiddlewareOptions, SerializeHandlerOptions } from "@smithy/types"; +import type { PreviouslyResolved } from "./httpAuthSchemeMiddleware"; +/** + * @internal + */ +export declare const httpAuthSchemeMiddlewareOptions: SerializeHandlerOptions & RelativeMiddlewareOptions; +/** + * @internal + */ +interface HttpAuthSchemePluginOptions { + httpAuthSchemeParametersProvider: HttpAuthSchemeParametersProvider; + identityProviderConfigProvider: (config: TConfig) => Promise; +} +/** + * @internal + */ +export declare const getHttpAuthSchemePlugin: (config: TConfig & PreviouslyResolved, { httpAuthSchemeParametersProvider, identityProviderConfigProvider, }: HttpAuthSchemePluginOptions) => Pluggable; +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/httpAuthSchemeMiddleware.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/httpAuthSchemeMiddleware.d.ts new file mode 100644 index 000000000..f272be0a9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/httpAuthSchemeMiddleware.d.ts @@ -0,0 +1,33 @@ +import type { HandlerExecutionContext, HttpAuthScheme, HttpAuthSchemeParameters, HttpAuthSchemeParametersProvider, HttpAuthSchemeProvider, IdentityProviderConfig, Provider, SelectedHttpAuthScheme, SerializeMiddleware, SMITHY_CONTEXT_KEY } from "@smithy/types"; +/** + * @internal + */ +export interface PreviouslyResolved { + authSchemePreference?: Provider; + httpAuthSchemes: HttpAuthScheme[]; + httpAuthSchemeProvider: HttpAuthSchemeProvider; +} +/** + * @internal + */ +interface HttpAuthSchemeMiddlewareOptions { + httpAuthSchemeParametersProvider: HttpAuthSchemeParametersProvider; + identityProviderConfigProvider: (config: TConfig) => Promise; +} +/** + * @internal + */ +interface HttpAuthSchemeMiddlewareSmithyContext extends Record { + selectedHttpAuthScheme?: SelectedHttpAuthScheme; +} +/** + * @internal + */ +interface HttpAuthSchemeMiddlewareHandlerExecutionContext extends HandlerExecutionContext { + [SMITHY_CONTEXT_KEY]?: HttpAuthSchemeMiddlewareSmithyContext; +} +/** + * @internal + */ +export declare const httpAuthSchemeMiddleware: (config: TConfig & PreviouslyResolved, mwOptions: HttpAuthSchemeMiddlewareOptions) => SerializeMiddleware; +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/index.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/index.d.ts new file mode 100644 index 000000000..5042e7dc7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/index.d.ts @@ -0,0 +1,3 @@ +export * from "./httpAuthSchemeMiddleware"; +export * from "./getHttpAuthSchemeEndpointRuleSetPlugin"; +export * from "./getHttpAuthSchemePlugin"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/resolveAuthOptions.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/resolveAuthOptions.d.ts new file mode 100644 index 000000000..808b0b67d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/resolveAuthOptions.d.ts @@ -0,0 +1,10 @@ +import type { HttpAuthOption } from "@smithy/types"; +/** + * Resolves list of auth options based on the supported ones, vs the preference list. + * + * @param candidateAuthOptions list of supported auth options selected by the standard + * resolution process (model-based, endpoints 2.0, etc.) + * @param authSchemePreference list of auth schemes preferred by user. + * @returns + */ +export declare const resolveAuthOptions: (candidateAuthOptions: HttpAuthOption[], authSchemePreference: string[]) => HttpAuthOption[]; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/middleware-http-signing/getHttpSigningMiddleware.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/middleware-http-signing/getHttpSigningMiddleware.d.ts new file mode 100644 index 000000000..b70a55375 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/middleware-http-signing/getHttpSigningMiddleware.d.ts @@ -0,0 +1,9 @@ +import type { FinalizeRequestHandlerOptions, Pluggable, RelativeMiddlewareOptions } from "@smithy/types"; +/** + * @internal + */ +export declare const httpSigningMiddlewareOptions: FinalizeRequestHandlerOptions & RelativeMiddlewareOptions; +/** + * @internal + */ +export declare const getHttpSigningPlugin: (config: object) => Pluggable; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/middleware-http-signing/httpSigningMiddleware.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/middleware-http-signing/httpSigningMiddleware.d.ts new file mode 100644 index 000000000..d0d99e24f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/middleware-http-signing/httpSigningMiddleware.d.ts @@ -0,0 +1,5 @@ +import type { FinalizeRequestMiddleware } from "@smithy/types"; +/** + * @internal + */ +export declare const httpSigningMiddleware: (config: object) => FinalizeRequestMiddleware; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/middleware-http-signing/index.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/middleware-http-signing/index.d.ts new file mode 100644 index 000000000..7bc6cfe12 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/middleware-http-signing/index.d.ts @@ -0,0 +1,2 @@ +export * from "./httpSigningMiddleware"; +export * from "./getHttpSigningMiddleware"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/normalizeProvider.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/normalizeProvider.d.ts new file mode 100644 index 000000000..1f7b6f66d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/normalizeProvider.d.ts @@ -0,0 +1,7 @@ +import type { Provider } from "@smithy/types"; +/** + * @internal + * + * @returns a provider function for the input value if it isn't already one. + */ +export declare const normalizeProvider: (input: T | Provider) => Provider; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/pagination/createPaginator.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/pagination/createPaginator.d.ts new file mode 100644 index 000000000..78fcbe055 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/pagination/createPaginator.d.ts @@ -0,0 +1,7 @@ +import type { PaginationConfiguration, Paginator } from "@smithy/types"; +/** + * @internal + * + * Creates a paginator. + */ +export declare function createPaginator(ClientCtor: any, CommandCtor: any, inputTokenName: string, outputTokenName: string, pageSizeTokenName?: string): (config: PaginationConfigType, input: InputType, ...additionalArguments: any[]) => Paginator; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/request-builder/requestBuilder.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/request-builder/requestBuilder.d.ts new file mode 100644 index 000000000..8e2f2effc --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/request-builder/requestBuilder.d.ts @@ -0,0 +1,5 @@ +/** + * @internal + * Backwards compatibility re-export. + */ +export { requestBuilder } from "@smithy/core/protocols"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/setFeature.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/setFeature.d.ts new file mode 100644 index 000000000..279106c17 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/setFeature.d.ts @@ -0,0 +1,12 @@ +import type { HandlerExecutionContext, SmithyFeatures } from "@smithy/types"; +/** + * @internal + * Indicates to the request context that a given feature is active. + * + * @param context - handler execution context. + * @param feature - readable name of feature. + * @param value - encoding value of feature. This is required because the + * specification asks the library not to include a runtime lookup of all + * the feature identifiers. + */ +export declare function setFeature(context: HandlerExecutionContext, feature: F, value: SmithyFeatures[F]): void; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/cbor/CborCodec.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/cbor/CborCodec.d.ts new file mode 100644 index 000000000..74c4ddaee --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/cbor/CborCodec.d.ts @@ -0,0 +1,33 @@ +import { SerdeContext } from "@smithy/core/protocols"; +import type { Codec, Schema, ShapeDeserializer, ShapeSerializer } from "@smithy/types"; +/** + * @public + */ +export declare class CborCodec extends SerdeContext implements Codec { + createSerializer(): CborShapeSerializer; + createDeserializer(): CborShapeDeserializer; +} +/** + * @public + */ +export declare class CborShapeSerializer extends SerdeContext implements ShapeSerializer { + private value; + write(schema: Schema, value: unknown): void; + /** + * Recursive serializer transform that copies and prepares the user input object + * for CBOR serialization. + */ + serialize(schema: Schema, source: unknown): any; + flush(): Uint8Array; +} +/** + * @public + */ +export declare class CborShapeDeserializer extends SerdeContext implements ShapeDeserializer { + read(schema: Schema, bytes: Uint8Array): any; + /** + * Public because it's called by the protocol implementation to deserialize errors. + * @internal + */ + readValue(_schema: Schema, value: any): any; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/cbor/SmithyRpcV2CborProtocol.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/cbor/SmithyRpcV2CborProtocol.d.ts new file mode 100644 index 000000000..603bd84e1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/cbor/SmithyRpcV2CborProtocol.d.ts @@ -0,0 +1,28 @@ +import { RpcProtocol } from "@smithy/core/protocols"; +import { TypeRegistry } from "@smithy/core/schema"; +import type { EndpointBearer, HandlerExecutionContext, HttpRequest as IHttpRequest, HttpResponse as IHttpResponse, MetadataBearer, OperationSchema, ResponseMetadata, SerdeFunctions } from "@smithy/types"; +import { CborCodec } from "./CborCodec"; +/** + * Client protocol for Smithy RPCv2 CBOR. + * + * @public + */ +export declare class SmithyRpcV2CborProtocol extends RpcProtocol { + /** + * @override + */ + protected compositeErrorRegistry: TypeRegistry; + private codec; + protected serializer: import("./CborCodec").CborShapeSerializer; + protected deserializer: import("./CborCodec").CborShapeDeserializer; + constructor({ defaultNamespace, errorTypeRegistries, }: { + defaultNamespace: string; + errorTypeRegistries?: TypeRegistry[]; + }); + getShapeId(): string; + getPayloadCodec(): CborCodec; + serializeRequest(operationSchema: OperationSchema, input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + deserializeResponse(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse): Promise; + protected handleError(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse, dataObject: any, metadata: ResponseMetadata): Promise; + protected getDefaultContentType(): string; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/cbor/byte-printer.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/cbor/byte-printer.d.ts new file mode 100644 index 000000000..698c54456 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/cbor/byte-printer.d.ts @@ -0,0 +1,6 @@ +/** + * Prints bytes as binary string with numbers. + * @param bytes - to print. + * @deprecated for testing only, do not use in runtime. + */ +export declare function printBytes(bytes: Uint8Array): string[]; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/cbor/cbor-decode.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/cbor/cbor-decode.d.ts new file mode 100644 index 000000000..ecb09dcd9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/cbor/cbor-decode.d.ts @@ -0,0 +1,17 @@ +import type { CborValueType, Float32, Uint8, Uint32 } from "./cbor-types"; +/** + * @internal + * @param bytes - to be set as the decode source. + * + * Sets the decode bytearray source and its data view. + */ +export declare function setPayload(bytes: Uint8Array): void; +/** + * @internal + * Decodes the data between the two indices. + */ +export declare function decode(at: Uint32, to: Uint32): CborValueType; +/** + * @internal + */ +export declare function bytesToFloat16(a: Uint8, b: Uint8): Float32; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/cbor/cbor-encode.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/cbor/cbor-encode.d.ts new file mode 100644 index 000000000..bfc3328b3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/cbor/cbor-encode.d.ts @@ -0,0 +1,9 @@ +/** + * @internal + */ +export declare function toUint8Array(): Uint8Array; +export declare function resize(size: number): void; +/** + * @param _input - JS data object. + */ +export declare function encode(_input: any): void; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/cbor/cbor-types.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/cbor/cbor-types.d.ts new file mode 100644 index 000000000..a87178d91 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/cbor/cbor-types.d.ts @@ -0,0 +1,62 @@ +export type CborItemType = undefined | boolean | number | bigint | [CborUnstructuredByteStringType, Uint64] | string | CborTagType; +export type CborTagType = { + tag: Uint64 | number; + value: CborValueType; + [tagSymbol]: true; +}; +export type CborUnstructuredByteStringType = Uint8Array; +export type CborListType = Array; +export type CborMapType = Record; +export type CborCollectionType = CborMapType | CborListType; +export type CborValueType = CborItemType | CborCollectionType | any; +export type CborArgumentLength = 1 | 2 | 4 | 8; +export type CborArgumentLengthOffset = 1 | 2 | 3 | 5 | 9; +export type CborOffset = number; +export type Uint8 = number; +export type Uint32 = number; +export type Uint64 = bigint; +export type Float32 = number; +export type Int64 = bigint; +export type Float16Binary = number; +export type Float32Binary = number; +export type CborMajorType = typeof majorUint64 | typeof majorNegativeInt64 | typeof majorUnstructuredByteString | typeof majorUtf8String | typeof majorList | typeof majorMap | typeof majorTag | typeof majorSpecial; +export declare const majorUint64 = 0; +export declare const majorNegativeInt64 = 1; +export declare const majorUnstructuredByteString = 2; +export declare const majorUtf8String = 3; +export declare const majorList = 4; +export declare const majorMap = 5; +export declare const majorTag = 6; +export declare const majorSpecial = 7; +export declare const specialFalse = 20; +export declare const specialTrue = 21; +export declare const specialNull = 22; +export declare const specialUndefined = 23; +export declare const extendedOneByte = 24; +export declare const extendedFloat16 = 25; +export declare const extendedFloat32 = 26; +export declare const extendedFloat64 = 27; +export declare const minorIndefinite = 31; +export declare function alloc(size: number): Uint8Array; +/** + * @public + * + * The presence of this symbol as an object key indicates it should be considered a tag + * for CBOR serialization purposes. + * + * The object must also have the properties "tag" and "value". + */ +export declare const tagSymbol: unique symbol; +/** + * @public + * Applies the tag symbol to the object. + */ +export declare function tag(data: { + tag: number | bigint; + value: any; + [tagSymbol]?: true; +}): { + tag: number | bigint; + value: any; + [tagSymbol]: true; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/cbor/cbor.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/cbor/cbor.d.ts new file mode 100644 index 000000000..7577213ed --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/cbor/cbor.d.ts @@ -0,0 +1,26 @@ +/** + * This implementation is synchronous and only implements the parts of CBOR + * specification used by Smithy RPCv2 CBOR protocol. + * + * This cbor serde implementation is derived from AWS SDK for Go's implementation. + * @see https://github.com/aws/smithy-go/tree/main/encoding/cbor + * + * The cbor-x implementation was also instructional: + * @see https://github.com/kriszyp/cbor-x + */ +export declare const cbor: { + deserialize(payload: Uint8Array): any; + serialize(input: any): Uint8Array; + /** + * @public + * @param size - byte length to allocate. + * + * This may be used to garbage collect the CBOR + * shared encoding buffer space, + * e.g. resizeEncodingBuffer(0); + * + * This may also be used to pre-allocate more space for + * CBOR encoding, e.g. resizeEncodingBuffer(100_000_000); + */ + resizeEncodingBuffer(size: number): void; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/cbor/index.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/cbor/index.d.ts new file mode 100644 index 000000000..c53524e3a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/cbor/index.d.ts @@ -0,0 +1,5 @@ +export { cbor } from "./cbor"; +export { tag, tagSymbol } from "./cbor-types"; +export * from "./parseCborBody"; +export * from "./SmithyRpcV2CborProtocol"; +export * from "./CborCodec"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/cbor/parseCborBody.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/cbor/parseCborBody.d.ts new file mode 100644 index 000000000..276890004 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/cbor/parseCborBody.d.ts @@ -0,0 +1,31 @@ +import { HttpRequest as __HttpRequest } from "@smithy/protocol-http"; +import type { HeaderBag as __HeaderBag, HttpResponse, SerdeContext as __SerdeContext, SerdeContext } from "@smithy/types"; +import type { tagSymbol } from "./cbor-types"; +/** + * @internal + */ +export declare const parseCborBody: (streamBody: any, context: SerdeContext) => any; +/** + * @internal + */ +export declare const dateToTag: (date: Date) => { + tag: number | bigint; + value: any; + [tagSymbol]: true; +}; +/** + * @internal + */ +export declare const parseCborErrorBody: (errorBody: any, context: SerdeContext) => Promise; +/** + * @internal + */ +export declare const loadSmithyRpcV2CborErrorCode: (output: HttpResponse, data: any) => string | undefined; +/** + * @internal + */ +export declare const checkCborResponse: (response: HttpResponse) => void; +/** + * @internal + */ +export declare const buildHttpRpcRequest: (context: __SerdeContext, headers: __HeaderBag, path: string, resolvedHostname: string | undefined, body: any) => Promise<__HttpRequest>; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/endpoints/index.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/endpoints/index.d.ts new file mode 100644 index 000000000..a88df654d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/endpoints/index.d.ts @@ -0,0 +1 @@ +export * from "./toEndpointV1"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/endpoints/toEndpointV1.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/endpoints/toEndpointV1.d.ts new file mode 100644 index 000000000..56c7ca251 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/endpoints/toEndpointV1.d.ts @@ -0,0 +1,6 @@ +import type { Endpoint, EndpointV2 } from "@smithy/types"; +/** + * Converts an endpoint to EndpointV1 format. + * @internal + */ +export declare const toEndpointV1: (endpoint: string | Endpoint | EndpointV2) => Endpoint; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/event-streams/EventStreamSerde.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/event-streams/EventStreamSerde.d.ts new file mode 100644 index 000000000..944564b84 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/event-streams/EventStreamSerde.d.ts @@ -0,0 +1,60 @@ +import type { NormalizedSchema } from "@smithy/core/schema"; +import type { EventStreamMarshaller, HttpRequest as IHttpRequest, HttpResponse as IHttpResponse, SerdeFunctions, ShapeDeserializer, ShapeSerializer } from "@smithy/types"; +/** + * Separated module for async mixin of EventStream serde capability. + * This is used by the HttpProtocol base class from \@smithy/core/protocols. + * + * @public + */ +export declare class EventStreamSerde { + private readonly marshaller; + private readonly serializer; + private readonly deserializer; + private readonly serdeContext?; + private readonly defaultContentType; + /** + * Properties are injected by the HttpProtocol. + */ + constructor({ marshaller, serializer, deserializer, serdeContext, defaultContentType, }: { + marshaller: EventStreamMarshaller; + serializer: ShapeSerializer; + deserializer: ShapeDeserializer; + serdeContext?: SerdeFunctions; + defaultContentType: string; + }); + /** + * @param eventStream - the iterable provided by the caller. + * @param requestSchema - the schema of the event stream container (struct). + * @param [initialRequest] - only provided if the initial-request is part of the event stream (RPC). + * + * @returns a stream suitable for the HTTP body of a request. + */ + serializeEventStream({ eventStream, requestSchema, initialRequest, }: { + eventStream: AsyncIterable; + requestSchema: NormalizedSchema; + initialRequest?: any; + }): Promise; + /** + * @param response - http response from which to read the event stream. + * @param unionSchema - schema of the event stream container (struct). + * @param [initialResponseContainer] - provided and written to only if the initial response is part of the event stream (RPC). + * + * @returns the asyncIterable of the event stream for the end-user. + */ + deserializeEventStream({ response, responseSchema, initialResponseContainer, }: { + response: IHttpResponse; + responseSchema: NormalizedSchema; + initialResponseContainer?: any; + }): Promise>; + /** + * @param unionMember - member name within the structure that contains an event stream union. + * @param unionSchema - schema of the union. + * @param event + * + * @returns the event body (bytes) and event type (string). + */ + private writeEventBody; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/event-streams/index.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/event-streams/index.d.ts new file mode 100644 index 000000000..849f48ccf --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/event-streams/index.d.ts @@ -0,0 +1 @@ +export * from "./EventStreamSerde"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/HttpBindingProtocol.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/HttpBindingProtocol.d.ts new file mode 100644 index 000000000..9ae28bc01 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/HttpBindingProtocol.d.ts @@ -0,0 +1,31 @@ +import { type TypeRegistry, NormalizedSchema } from "@smithy/core/schema"; +import { HttpRequest } from "@smithy/protocol-http"; +import type { EndpointBearer, HandlerExecutionContext, HttpRequest as IHttpRequest, HttpResponse as IHttpResponse, MetadataBearer, OperationSchema, Schema, SerdeFunctions } from "@smithy/types"; +import { HttpProtocol } from "./HttpProtocol"; +/** + * Base for HTTP-binding protocols. Downstream examples + * include AWS REST JSON and AWS REST XML. + * + * @public + */ +export declare abstract class HttpBindingProtocol extends HttpProtocol { + /** + * @override + */ + protected compositeErrorRegistry: TypeRegistry; + serializeRequest(operationSchema: OperationSchema, _input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + protected serializeQuery(ns: NormalizedSchema, data: any, query: HttpRequest["query"]): void; + deserializeResponse(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse): Promise; + /** + * The base method ignores HTTP bindings. + * + * @deprecated (only this signature) use signature without headerBindings. + * @override + */ + protected deserializeHttpMessage(schema: Schema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse, headerBindings: Set, dataObject: any): Promise; + protected deserializeHttpMessage(schema: Schema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse, dataObject: any): Promise; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/HttpProtocol.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/HttpProtocol.d.ts new file mode 100644 index 000000000..4012a8a54 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/HttpProtocol.d.ts @@ -0,0 +1,89 @@ +import type { EventStreamSerde } from "@smithy/core/event-streams"; +import { NormalizedSchema, TypeRegistry } from "@smithy/core/schema"; +import type { ClientProtocol, Codec, Endpoint, EndpointBearer, EndpointV2, EventStreamMarshaller, HandlerExecutionContext, HttpRequest as IHttpRequest, HttpResponse as IHttpResponse, MetadataBearer, OperationSchema, ResponseMetadata, Schema, SerdeFunctions, ShapeDeserializer, ShapeSerializer } from "@smithy/types"; +import { SerdeContext } from "./SerdeContext"; +/** + * Abstract base for HTTP-based client protocols. + * + * @public + */ +export declare abstract class HttpProtocol extends SerdeContext implements ClientProtocol { + readonly options: { + defaultNamespace: string; + errorTypeRegistries?: TypeRegistry[]; + }; + /** + * An error registry having the namespace of the modeled service, + * but combining all error schemas found within the service closure. + * + * Used to look up error schema during deserialization. + */ + protected compositeErrorRegistry: TypeRegistry; + protected abstract serializer: ShapeSerializer; + protected abstract deserializer: ShapeDeserializer; + /** + * @param options.defaultNamespace - used by various implementing classes. + * @param options.errorTypeRegistries - registry instances that contribute to error deserialization. + */ + protected constructor(options: { + defaultNamespace: string; + errorTypeRegistries?: TypeRegistry[]; + }); + abstract getShapeId(): string; + abstract getPayloadCodec(): Codec; + getRequestType(): new (...args: any[]) => IHttpRequest; + getResponseType(): new (...args: any[]) => IHttpResponse; + /** + * @override + */ + setSerdeContext(serdeContext: SerdeFunctions): void; + abstract serializeRequest(operationSchema: OperationSchema, input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + updateServiceEndpoint(request: IHttpRequest, endpoint: EndpointV2 | Endpoint): IHttpRequest; + abstract deserializeResponse(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse): Promise; + protected setHostPrefix(request: IHttpRequest, operationSchema: OperationSchema, input: Input): void; + protected abstract handleError(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse, dataObject: any, metadata: ResponseMetadata): Promise; + protected deserializeMetadata(output: IHttpResponse): ResponseMetadata; + /** + * @param eventStream - the iterable provided by the caller. + * @param requestSchema - the schema of the event stream container (struct). + * @param [initialRequest] - only provided if the initial-request is part of the event stream (RPC). + * + * @returns a stream suitable for the HTTP body of a request. + */ + protected serializeEventStream({ eventStream, requestSchema, initialRequest, }: { + eventStream: AsyncIterable; + requestSchema: NormalizedSchema; + initialRequest?: any; + }): Promise; + /** + * @param response - http response from which to read the event stream. + * @param unionSchema - schema of the event stream container (struct). + * @param [initialResponseContainer] - provided and written to only if the initial response is part of the event stream (RPC). + * + * @returns the asyncIterable of the event stream. + */ + protected deserializeEventStream({ response, responseSchema, initialResponseContainer, }: { + response: IHttpResponse; + responseSchema: NormalizedSchema; + initialResponseContainer?: any; + }): Promise>; + /** + * Loads eventStream capability async (for chunking). + */ + protected loadEventStreamCapability(): Promise; + /** + * @returns content-type default header value for event stream events and other documents. + */ + protected getDefaultContentType(): string; + /** + * For HTTP binding protocols, this method is overridden in {@link HttpBindingProtocol}. + * + * @deprecated only use this for HTTP binding protocols. + */ + protected deserializeHttpMessage(schema: Schema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse, headerBindings: Set, dataObject: any): Promise; + protected deserializeHttpMessage(schema: Schema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse, dataObject: any): Promise; + protected getEventStreamMarshaller(): EventStreamMarshaller; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/RpcProtocol.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/RpcProtocol.d.ts new file mode 100644 index 000000000..3b2df448a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/RpcProtocol.d.ts @@ -0,0 +1,16 @@ +import { type TypeRegistry } from "@smithy/core/schema"; +import type { EndpointBearer, HandlerExecutionContext, HttpRequest as IHttpRequest, HttpResponse as IHttpResponse, MetadataBearer, OperationSchema, SerdeFunctions } from "@smithy/types"; +import { HttpProtocol } from "./HttpProtocol"; +/** + * Abstract base for RPC-over-HTTP protocols. + * + * @public + */ +export declare abstract class RpcProtocol extends HttpProtocol { + /** + * @override + */ + protected compositeErrorRegistry: TypeRegistry; + serializeRequest(operationSchema: OperationSchema, input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + deserializeResponse(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse): Promise; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/SerdeContext.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/SerdeContext.d.ts new file mode 100644 index 000000000..536329e03 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/SerdeContext.d.ts @@ -0,0 +1,16 @@ +import type { ConfigurableSerdeContext, SerdeFunctions } from "@smithy/types"; +/** + * This in practice should be the client config object. + * @internal + */ +type SerdeContextType = SerdeFunctions & { + disableHostPrefix?: boolean; +}; +/** + * @internal + */ +export declare abstract class SerdeContext implements ConfigurableSerdeContext { + protected serdeContext?: SerdeContextType; + setSerdeContext(serdeContext: SerdeContextType): void; +} +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/collect-stream-body.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/collect-stream-body.d.ts new file mode 100644 index 000000000..512cb9693 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/collect-stream-body.d.ts @@ -0,0 +1,10 @@ +import type { SerdeContext } from "@smithy/types"; +import { Uint8ArrayBlobAdapter } from "@smithy/util-stream"; +/** + * @internal + * + * Collect low-level response body stream to Uint8Array. + */ +export declare const collectBody: (streamBody: any | undefined, context: { + streamCollector: SerdeContext["streamCollector"]; +}) => Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/extended-encode-uri-component.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/extended-encode-uri-component.d.ts new file mode 100644 index 000000000..403e9ae46 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/extended-encode-uri-component.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + * + * Function that wraps encodeURIComponent to encode additional characters + * to fully adhere to RFC 3986. + */ +export declare function extendedEncodeURIComponent(str: string): string; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/index.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/index.d.ts new file mode 100644 index 000000000..5cc40c526 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/index.d.ts @@ -0,0 +1,13 @@ +export * from "./collect-stream-body"; +export * from "./extended-encode-uri-component"; +export * from "./HttpBindingProtocol"; +export * from "./HttpProtocol"; +export * from "./RpcProtocol"; +export * from "./requestBuilder"; +export * from "./resolve-path"; +export * from "./serde/FromStringShapeDeserializer"; +export * from "./serde/HttpInterceptingShapeDeserializer"; +export * from "./serde/HttpInterceptingShapeSerializer"; +export * from "./serde/ToStringShapeSerializer"; +export * from "./serde/determineTimestampFormat"; +export * from "./SerdeContext"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/requestBuilder.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/requestBuilder.d.ts new file mode 100644 index 000000000..3013d8a1e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/requestBuilder.d.ts @@ -0,0 +1,51 @@ +import { HttpRequest } from "@smithy/protocol-http"; +import type { SerdeContext } from "@smithy/types"; +/** + * @internal + * used in code-generated serde. + */ +export declare function requestBuilder(input: any, context: SerdeContext): RequestBuilder; +/** + * @internal + */ +export declare class RequestBuilder { + private input; + private context; + private query; + private method; + private headers; + private path; + private body; + private hostname; + private resolvePathStack; + constructor(input: any, context: SerdeContext); + build(): Promise; + /** + * Brevity setter for "hostname". + */ + hn(hostname: string): this; + /** + * Brevity initial builder for "basepath". + */ + bp(uriLabel: string): this; + /** + * Brevity incremental builder for "path". + */ + p(memberName: string, labelValueProvider: () => string | undefined, uriLabel: string, isGreedyLabel: boolean): this; + /** + * Brevity setter for "headers". + */ + h(headers: Record): this; + /** + * Brevity setter for "query". + */ + q(query: Record): this; + /** + * Brevity setter for "body". + */ + b(body: any): this; + /** + * Brevity setter for "method". + */ + m(method: string): this; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/resolve-path.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/resolve-path.d.ts new file mode 100644 index 000000000..03386d6bb --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/resolve-path.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const resolvedPath: (resolvedPath: string, input: unknown, memberName: string, labelValueProvider: () => string | undefined, uriLabel: string, isGreedyLabel: boolean) => string; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/serde/FromStringShapeDeserializer.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/serde/FromStringShapeDeserializer.d.ts new file mode 100644 index 000000000..bbda36084 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/serde/FromStringShapeDeserializer.d.ts @@ -0,0 +1,13 @@ +import type { CodecSettings, Schema, ShapeDeserializer } from "@smithy/types"; +import { SerdeContext } from "../SerdeContext"; +/** + * This deserializer reads strings. + * + * @public + */ +export declare class FromStringShapeDeserializer extends SerdeContext implements ShapeDeserializer { + private settings; + constructor(settings: CodecSettings); + read(_schema: Schema, data: string): any; + private base64ToUtf8; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/serde/HttpInterceptingShapeDeserializer.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/serde/HttpInterceptingShapeDeserializer.d.ts new file mode 100644 index 000000000..35d19842e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/serde/HttpInterceptingShapeDeserializer.d.ts @@ -0,0 +1,21 @@ +import type { CodecSettings, Schema, SerdeFunctions, ShapeDeserializer } from "@smithy/types"; +import { SerdeContext } from "../SerdeContext"; +/** + * This deserializer is a dispatcher that decides whether to use a string deserializer + * or a codec deserializer based on HTTP traits. + * + * For example, in a JSON HTTP message, the deserialization of a field will differ depending on whether + * it is bound to the HTTP header (string) or body (JSON). + * + * @public + */ +export declare class HttpInterceptingShapeDeserializer> extends SerdeContext implements ShapeDeserializer { + private codecDeserializer; + private stringDeserializer; + constructor(codecDeserializer: CodecShapeDeserializer, codecSettings: CodecSettings); + /** + * @override + */ + setSerdeContext(serdeContext: SerdeFunctions): void; + read(schema: Schema, data: string | Uint8Array): any | Promise; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/serde/HttpInterceptingShapeSerializer.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/serde/HttpInterceptingShapeSerializer.d.ts new file mode 100644 index 000000000..2fcd09357 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/serde/HttpInterceptingShapeSerializer.d.ts @@ -0,0 +1,23 @@ +import type { CodecSettings, ConfigurableSerdeContext, Schema as ISchema, SerdeFunctions, ShapeSerializer } from "@smithy/types"; +import { ToStringShapeSerializer } from "./ToStringShapeSerializer"; +/** + * This serializer decides whether to dispatch to a string serializer or a codec serializer + * depending on HTTP binding traits within the given schema. + * + * For example, a JavaScript array is serialized differently when being written + * to a REST JSON HTTP header (comma-delimited string) and a REST JSON HTTP body (JSON array). + * + * @public + */ +export declare class HttpInterceptingShapeSerializer> implements ShapeSerializer, ConfigurableSerdeContext { + private codecSerializer; + private stringSerializer; + private buffer; + constructor(codecSerializer: CodecShapeSerializer, codecSettings: CodecSettings, stringSerializer?: ToStringShapeSerializer); + /** + * @override + */ + setSerdeContext(serdeContext: SerdeFunctions): void; + write(schema: ISchema, value: unknown): void; + flush(): string | Uint8Array; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/serde/ToStringShapeSerializer.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/serde/ToStringShapeSerializer.d.ts new file mode 100644 index 000000000..13ac76690 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/serde/ToStringShapeSerializer.d.ts @@ -0,0 +1,14 @@ +import type { CodecSettings, Schema, ShapeSerializer } from "@smithy/types"; +import { SerdeContext } from "../SerdeContext"; +/** + * Serializes a shape to string. + * + * @public + */ +export declare class ToStringShapeSerializer extends SerdeContext implements ShapeSerializer { + private settings; + private stringBuffer; + constructor(settings: CodecSettings); + write(schema: Schema, value: unknown): void; + flush(): string; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/serde/determineTimestampFormat.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/serde/determineTimestampFormat.d.ts new file mode 100644 index 000000000..ddfa1e5e4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/protocols/serde/determineTimestampFormat.d.ts @@ -0,0 +1,9 @@ +import type { NormalizedSchema } from "@smithy/core/schema"; +import type { CodecSettings, TimestampDateTimeSchema, TimestampEpochSecondsSchema, TimestampHttpDateSchema } from "@smithy/types"; +/** + * Assuming the schema is a timestamp type, the function resolves the format using + * either the timestamp's own traits, or the default timestamp format from the CodecSettings. + * + * @internal + */ +export declare function determineTimestampFormat(ns: NormalizedSchema, settings: CodecSettings): TimestampDateTimeSchema | TimestampHttpDateSchema | TimestampEpochSecondsSchema; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/TypeRegistry.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/TypeRegistry.d.ts new file mode 100644 index 000000000..08f4ec885 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/TypeRegistry.d.ts @@ -0,0 +1,71 @@ +import type { Schema as ISchema, StaticErrorSchema } from "@smithy/types"; +import type { ErrorSchema } from "./schemas/ErrorSchema"; +/** + * A way to look up schema by their ShapeId values. + * + * @public + */ +export declare class TypeRegistry { + readonly namespace: string; + private schemas; + private exceptions; + static readonly registries: Map; + private constructor(); + /** + * @param namespace - specifier. + * @returns the schema for that namespace, creating it if necessary. + */ + static for(namespace: string): TypeRegistry; + /** + * Copies entries from another instance without changing the namespace of self. + * The composition is additive but non-destructive and will not overwrite existing entries. + * + * @param other - another TypeRegistry. + */ + copyFrom(other: TypeRegistry): void; + /** + * Adds the given schema to a type registry with the same namespace, and this registry. + * + * @param shapeId - to be registered. + * @param schema - to be registered. + */ + register(shapeId: string, schema: ISchema): void; + /** + * @param shapeId - query. + * @returns the schema. + */ + getSchema(shapeId: string): ISchema; + /** + * Associates an error schema with its constructor. + */ + registerError(es: ErrorSchema | StaticErrorSchema, ctor: any): void; + /** + * @param es - query. + * @returns Error constructor that extends the service's base exception. + */ + getErrorCtor(es: ErrorSchema | StaticErrorSchema): any; + /** + * The smithy-typescript code generator generates a synthetic (i.e. unmodeled) base exception, + * because generated SDKs before the introduction of schemas have the notion of a ServiceBaseException, which + * is unique per service/model. + * + * This is generated under a unique prefix that is combined with the service namespace, and this + * method is used to retrieve it. + * + * The base exception synthetic schema is used when an error is returned by a service, but we cannot + * determine what existing schema to use to deserialize it. + * + * @returns the synthetic base exception of the service namespace associated with this registry instance. + */ + getBaseException(): StaticErrorSchema | undefined; + /** + * @param predicate - criterion. + * @returns a schema in this registry matching the predicate. + */ + find(predicate: (schema: ISchema) => boolean): ISchema | undefined; + /** + * Unloads the current TypeRegistry. + */ + clear(): void; + private normalizeShapeId; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/deref.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/deref.d.ts new file mode 100644 index 000000000..397dbc254 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/deref.d.ts @@ -0,0 +1,6 @@ +import type { Schema, SchemaRef } from "@smithy/types"; +/** + * Dereferences a SchemaRef if needed. + * @internal + */ +export declare const deref: (schemaRef: SchemaRef) => Schema; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/index.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/index.d.ts new file mode 100644 index 000000000..fe9508c3d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/index.d.ts @@ -0,0 +1,14 @@ +export * from "./deref"; +export * from "./middleware/getSchemaSerdePlugin"; +export * from "./schemas/ListSchema"; +export * from "./schemas/MapSchema"; +export * from "./schemas/OperationSchema"; +export * from "./schemas/operation"; +export * from "./schemas/ErrorSchema"; +export * from "./schemas/NormalizedSchema"; +export * from "./schemas/Schema"; +export * from "./schemas/SimpleSchema"; +export * from "./schemas/StructureSchema"; +export * from "./schemas/sentinels"; +export * from "./schemas/translateTraits"; +export * from "./TypeRegistry"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/middleware/getSchemaSerdePlugin.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/middleware/getSchemaSerdePlugin.d.ts new file mode 100644 index 000000000..7d3b79876 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/middleware/getSchemaSerdePlugin.d.ts @@ -0,0 +1,14 @@ +import type { DeserializeHandlerOptions, MetadataBearer, Pluggable, SerializeHandlerOptions } from "@smithy/types"; +import type { PreviouslyResolved } from "./schema-middleware-types"; +/** + * @internal + */ +export declare const deserializerMiddlewareOption: DeserializeHandlerOptions; +/** + * @internal + */ +export declare const serializerMiddlewareOption: SerializeHandlerOptions; +/** + * @internal + */ +export declare function getSchemaSerdePlugin(config: PreviouslyResolved): Pluggable; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/middleware/schema-middleware-types.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/middleware/schema-middleware-types.d.ts new file mode 100644 index 000000000..283adb1fc --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/middleware/schema-middleware-types.d.ts @@ -0,0 +1,8 @@ +import type { ClientProtocol, SerdeContext, UrlParser } from "@smithy/types"; +/** + * @internal + */ +export type PreviouslyResolved = Omit; +}, "endpoint">; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/middleware/schemaDeserializationMiddleware.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/middleware/schemaDeserializationMiddleware.d.ts new file mode 100644 index 000000000..026ab1d38 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/middleware/schemaDeserializationMiddleware.d.ts @@ -0,0 +1,9 @@ +import type { DeserializeHandler, DeserializeHandlerArguments, HandlerExecutionContext } from "@smithy/types"; +import type { PreviouslyResolved } from "./schema-middleware-types"; +/** + * @internal + */ +export declare const schemaDeserializationMiddleware: (config: PreviouslyResolved) => (next: DeserializeHandler, context: HandlerExecutionContext) => (args: DeserializeHandlerArguments) => Promise<{ + response: unknown; + output: O; +}>; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/middleware/schemaSerializationMiddleware.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/middleware/schemaSerializationMiddleware.d.ts new file mode 100644 index 000000000..f34e7a37b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/middleware/schemaSerializationMiddleware.d.ts @@ -0,0 +1,6 @@ +import type { HandlerExecutionContext, SerializeHandler, SerializeHandlerArguments } from "@smithy/types"; +import type { PreviouslyResolved } from "./schema-middleware-types"; +/** + * @internal + */ +export declare const schemaSerializationMiddleware: (config: PreviouslyResolved) => (next: SerializeHandler, context: HandlerExecutionContext) => (args: SerializeHandlerArguments) => Promise>; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/schemas/ErrorSchema.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/schemas/ErrorSchema.d.ts new file mode 100644 index 000000000..aa3dbf6ec --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/schemas/ErrorSchema.d.ts @@ -0,0 +1,37 @@ +import type { SchemaRef, SchemaTraits } from "@smithy/types"; +import { StructureSchema } from "./StructureSchema"; +/** + * A schema for a structure shape having the error trait. These represent enumerated operation errors. + * Because Smithy-TS SDKs use classes for exceptions, whereas plain objects are used for all other data, + * and have an existing notion of a XYZServiceBaseException, the ErrorSchema differs from a StructureSchema + * by additionally holding the class reference for the corresponding ServiceException class. + * + * @internal + * @deprecated use StaticSchema + */ +export declare class ErrorSchema extends StructureSchema { + static readonly symbol: unique symbol; + /** + * @deprecated - field unused. + */ + ctor: any; + protected readonly symbol: symbol; +} +/** + * Factory for ErrorSchema, to reduce codegen output and register the schema. + * + * @internal + * @deprecated use StaticSchema + * + * @param namespace - shapeId namespace. + * @param name - shapeId name. + * @param traits - shape level serde traits. + * @param memberNames - list of member names. + * @param memberList - list of schemaRef corresponding to each + * @param ctor - class reference for the existing Error extending class. + */ +export declare const error: (namespace: string, name: string, traits: SchemaTraits, memberNames: string[], memberList: SchemaRef[], +/** + * @deprecated - field unused. + */ +ctor?: any) => ErrorSchema; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/schemas/ListSchema.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/schemas/ListSchema.d.ts new file mode 100644 index 000000000..71ef0d97d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/schemas/ListSchema.d.ts @@ -0,0 +1,23 @@ +import type { ListSchema as IListSchema, SchemaRef, SchemaTraits } from "@smithy/types"; +import { Schema } from "./Schema"; +/** + * A schema with a single member schema. + * The deprecated Set type may be represented as a list. + * + * @internal + * @deprecated use StaticSchema + */ +export declare class ListSchema extends Schema implements IListSchema { + static readonly symbol: unique symbol; + name: string; + traits: SchemaTraits; + valueSchema: SchemaRef; + protected readonly symbol: symbol; +} +/** + * Factory for ListSchema. + * + * @internal + * @deprecated use StaticSchema + */ +export declare const list: (namespace: string, name: string, traits: SchemaTraits, valueSchema: SchemaRef) => ListSchema; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/schemas/MapSchema.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/schemas/MapSchema.d.ts new file mode 100644 index 000000000..52983d6c1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/schemas/MapSchema.d.ts @@ -0,0 +1,24 @@ +import type { MapSchema as IMapSchema, SchemaRef, SchemaTraits } from "@smithy/types"; +import { Schema } from "./Schema"; +/** + * A schema with a key schema and value schema. + * @internal + * @deprecated use StaticSchema + */ +export declare class MapSchema extends Schema implements IMapSchema { + static readonly symbol: unique symbol; + name: string; + traits: SchemaTraits; + /** + * This is expected to be StringSchema, but may have traits. + */ + keySchema: SchemaRef; + valueSchema: SchemaRef; + protected readonly symbol: symbol; +} +/** + * Factory for MapSchema. + * @internal + * @deprecated use StaticSchema + */ +export declare const map: (namespace: string, name: string, traits: SchemaTraits, keySchema: SchemaRef, valueSchema: SchemaRef) => MapSchema; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/schemas/NormalizedSchema.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/schemas/NormalizedSchema.d.ts new file mode 100644 index 000000000..4fb8a8a7b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/schemas/NormalizedSchema.d.ts @@ -0,0 +1,143 @@ +import type { $MemberSchema, $Schema, $SchemaRef, NormalizedSchema as INormalizedSchema, SchemaRef, SchemaTraitsObject, StaticSchema } from "@smithy/types"; +/** + * Cache for numeric schemaRef. Having separate cache objects for number/string improves + * lookup performance. + * @internal + */ +export declare const simpleSchemaCacheN: Array; +/** + * Cache for string schemaRef. + * @internal + */ +export declare const simpleSchemaCacheS: Record; +/** + * Wraps both class instances, numeric sentinel values, and member schema pairs. + * Presents a consistent interface for interacting with polymorphic schema representations. + * + * @public + */ +export declare class NormalizedSchema implements INormalizedSchema { + readonly ref: $SchemaRef; + private readonly memberName?; + static readonly symbol: unique symbol; + protected readonly symbol: symbol; + private readonly name; + private readonly schema; + private readonly _isMemberSchema; + private readonly traits; + private readonly memberTraits; + private normalizedTraits?; + /** + * @param ref - a polymorphic SchemaRef to be dereferenced/normalized. + * @param memberName - optional memberName if this NormalizedSchema should be considered a member schema. + */ + private constructor(); + static [Symbol.hasInstance](lhs: unknown): lhs is NormalizedSchema; + /** + * Static constructor that attempts to avoid wrapping a NormalizedSchema within another. + */ + static of(ref: SchemaRef | $SchemaRef): NormalizedSchema; + /** + * @returns the underlying non-normalized schema. + */ + getSchema(): Exclude<$Schema, $MemberSchema | INormalizedSchema>; + /** + * @param withNamespace - qualifies the name. + * @returns e.g. `MyShape` or `com.namespace#MyShape`. + */ + getName(withNamespace?: boolean): string | undefined; + /** + * @returns the member name if the schema is a member schema. + */ + getMemberName(): string; + isMemberSchema(): boolean; + /** + * boolean methods on this class help control flow in shape serialization and deserialization. + */ + isListSchema(): boolean; + isMapSchema(): boolean; + /** + * To simplify serialization logic, static union schemas are considered a specialization + * of structs in the TypeScript typings and JS runtime, as well as static error schemas + * which have a different identifier. + */ + isStructSchema(): boolean; + isUnionSchema(): boolean; + isBlobSchema(): boolean; + isTimestampSchema(): boolean; + isUnitSchema(): boolean; + isDocumentSchema(): boolean; + isStringSchema(): boolean; + isBooleanSchema(): boolean; + isNumericSchema(): boolean; + isBigIntegerSchema(): boolean; + isBigDecimalSchema(): boolean; + isStreaming(): boolean; + /** + * @returns whether the schema has the idempotencyToken trait. + */ + isIdempotencyToken(): boolean; + /** + * @returns own traits merged with member traits, where member traits of the same trait key take priority. + * This method is cached. + */ + getMergedTraits(): SchemaTraitsObject; + /** + * @returns only the member traits. If the schema is not a member, this returns empty. + */ + getMemberTraits(): SchemaTraitsObject; + /** + * @returns only the traits inherent to the shape or member target shape if this schema is a member. + * If there are any member traits they are excluded. + */ + getOwnTraits(): SchemaTraitsObject; + /** + * @returns the map's key's schema. Returns a dummy Document schema if this schema is a Document. + * + * @throws Error if the schema is not a Map or Document. + */ + getKeySchema(): NormalizedSchema; + /** + * @returns the schema of the map's value or list's member. + * Returns a dummy Document schema if this schema is a Document. + * + * @throws Error if the schema is not a Map, List, nor Document. + */ + getValueSchema(): NormalizedSchema; + /** + * @returns the NormalizedSchema for the given member name. The returned instance will return true for `isMemberSchema()` + * and will have the member name given. + * @param memberName - which member to retrieve and wrap. + * + * @throws Error if member does not exist or the schema is neither a document nor structure. + * Note that errors are assumed to be structures and unions are considered structures for these purposes. + */ + getMemberSchema(memberName: string): NormalizedSchema; + /** + * This can be used for checking the members as a hashmap. + * Prefer the structIterator method for iteration. + * + * This does NOT return list and map members, it is only for structures. + * + * @deprecated use (checked) structIterator instead. + * + * @returns a map of member names to member schemas (normalized). + */ + getMemberSchemas(): Record; + /** + * @returns member name of event stream or empty string indicating none exists or this + * isn't a structure schema. + */ + getEventStreamMember(): string; + /** + * Allows iteration over members of a structure schema. + * Each yield is a pair of the member name and member schema. + * + * This avoids the overhead of calling Object.entries(ns.getMemberSchemas()). + */ + structIterator(): Generator<[string, NormalizedSchema], undefined, undefined>; +} +/** + * @internal + */ +export declare const isStaticSchema: (sc: SchemaRef) => sc is StaticSchema; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/schemas/OperationSchema.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/schemas/OperationSchema.d.ts new file mode 100644 index 000000000..3f3a43701 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/schemas/OperationSchema.d.ts @@ -0,0 +1,23 @@ +import type { OperationSchema as IOperationSchema, SchemaRef, SchemaTraits } from "@smithy/types"; +import { Schema } from "./Schema"; +/** + * This is used as a reference container for the input/output pair of schema, and for trait + * detection on the operation that may affect client protocol logic. + * + * @internal + * @deprecated use StaticSchema + */ +export declare class OperationSchema extends Schema implements IOperationSchema { + static readonly symbol: unique symbol; + name: string; + traits: SchemaTraits; + input: SchemaRef; + output: SchemaRef; + protected readonly symbol: symbol; +} +/** + * Factory for OperationSchema. + * @internal + * @deprecated use StaticSchema + */ +export declare const op: (namespace: string, name: string, traits: SchemaTraits, input: SchemaRef, output: SchemaRef) => OperationSchema; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/schemas/Schema.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/schemas/Schema.d.ts new file mode 100644 index 000000000..64119a393 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/schemas/Schema.d.ts @@ -0,0 +1,16 @@ +import type { SchemaTraits, TraitsSchema } from "@smithy/types"; +/** + * Abstract base for class-based Schema except NormalizedSchema. + * + * @internal + * @deprecated use StaticSchema + */ +export declare abstract class Schema implements TraitsSchema { + name: string; + namespace: string; + traits: SchemaTraits; + protected abstract readonly symbol: symbol; + static assign(instance: T, values: Omit): T; + static [Symbol.hasInstance](lhs: unknown): boolean; + getName(): string; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/schemas/SimpleSchema.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/schemas/SimpleSchema.d.ts new file mode 100644 index 000000000..7fb8b1317 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/schemas/SimpleSchema.d.ts @@ -0,0 +1,28 @@ +import type { SchemaRef, SchemaTraits, TraitsSchema } from "@smithy/types"; +import { Schema } from "./Schema"; +/** + * Although numeric values exist for most simple schema, this class is used for cases where traits are + * attached to those schema, since a single number cannot easily represent both a schema and its traits. + * + * @internal + * @deprecated use StaticSchema + */ +export declare class SimpleSchema extends Schema implements TraitsSchema { + static readonly symbol: unique symbol; + name: string; + schemaRef: SchemaRef; + traits: SchemaTraits; + protected readonly symbol: symbol; +} +/** + * Factory for simple schema class objects. + * + * @internal + * @deprecated use StaticSchema + */ +export declare const sim: (namespace: string, name: string, schemaRef: SchemaRef, traits: SchemaTraits) => SimpleSchema; +/** + * @internal + * @deprecated + */ +export declare const simAdapter: (namespace: string, name: string, traits: SchemaTraits, schemaRef: SchemaRef) => SimpleSchema; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/schemas/StructureSchema.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/schemas/StructureSchema.d.ts new file mode 100644 index 000000000..d00c527eb --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/schemas/StructureSchema.d.ts @@ -0,0 +1,23 @@ +import type { SchemaRef, SchemaTraits, StructureSchema as IStructureSchema } from "@smithy/types"; +import { Schema } from "./Schema"; +/** + * A structure schema has a known list of members. This is also used for unions. + * + * @internal + * @deprecated use StaticSchema + */ +export declare class StructureSchema extends Schema implements IStructureSchema { + static symbol: symbol; + name: string; + traits: SchemaTraits; + memberNames: string[]; + memberList: SchemaRef[]; + protected readonly symbol: symbol; +} +/** + * Factory for StructureSchema. + * + * @internal + * @deprecated use StaticSchema + */ +export declare const struct: (namespace: string, name: string, traits: SchemaTraits, memberNames: string[], memberList: SchemaRef[]) => StructureSchema; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/schemas/operation.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/schemas/operation.d.ts new file mode 100644 index 000000000..e056ee517 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/schemas/operation.d.ts @@ -0,0 +1,7 @@ +import type { OperationSchema, SchemaRef, SchemaTraits } from "@smithy/types"; +/** + * Converts the static schema array into an object-form to adapt + * to the signature of ClientProtocol classes. + * @internal + */ +export declare const operation: (namespace: string, name: string, traits: SchemaTraits, input: SchemaRef, output: SchemaRef) => OperationSchema; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/schemas/sentinels.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/schemas/sentinels.d.ts new file mode 100644 index 000000000..5fa5f6c11 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/schemas/sentinels.d.ts @@ -0,0 +1,23 @@ +import type { BigDecimalSchema, BigIntegerSchema, BlobSchema, BooleanSchema, DocumentSchema, ListSchemaModifier, MapSchemaModifier, NumericSchema, StreamingBlobSchema, StringSchema, TimestampDateTimeSchema, TimestampDefaultSchema, TimestampEpochSecondsSchema, TimestampHttpDateSchema } from "@smithy/types"; +/** + * Schema sentinel runtime values. + * @internal + * + * @deprecated use inline numbers with type annotation to save space. + */ +export declare const SCHEMA: { + BLOB: BlobSchema; + STREAMING_BLOB: StreamingBlobSchema; + BOOLEAN: BooleanSchema; + STRING: StringSchema; + NUMERIC: NumericSchema; + BIG_INTEGER: BigIntegerSchema; + BIG_DECIMAL: BigDecimalSchema; + DOCUMENT: DocumentSchema; + TIMESTAMP_DEFAULT: TimestampDefaultSchema; + TIMESTAMP_DATE_TIME: TimestampDateTimeSchema; + TIMESTAMP_HTTP_DATE: TimestampHttpDateSchema; + TIMESTAMP_EPOCH_SECONDS: TimestampEpochSecondsSchema; + LIST_MODIFIER: ListSchemaModifier; + MAP_MODIFIER: MapSchemaModifier; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/schemas/translateTraits.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/schemas/translateTraits.d.ts new file mode 100644 index 000000000..a87a243d7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/schema/schemas/translateTraits.d.ts @@ -0,0 +1,13 @@ +import type { SchemaTraits, SchemaTraitsObject } from "@smithy/types"; +/** + * Module-level cache for translateTraits() numeric bitmask inputs. + * + * @internal + */ +export declare const traitsCache: SchemaTraitsObject[]; +/** + * @internal + * @param indicator - numeric indicator for preset trait combination. + * @returns equivalent trait object. + */ +export declare function translateTraits(indicator: SchemaTraits): SchemaTraitsObject; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/serde/copyDocumentWithTransform.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/serde/copyDocumentWithTransform.d.ts new file mode 100644 index 000000000..c250b7cee --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/serde/copyDocumentWithTransform.d.ts @@ -0,0 +1,6 @@ +import type { SchemaRef } from "@smithy/types"; +/** + * @internal + * @deprecated the former functionality has been internalized to the CborCodec. + */ +export declare const copyDocumentWithTransform: (source: any, schemaRef: SchemaRef, transform?: (_: any, schemaRef: SchemaRef) => any) => any; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/serde/date-utils.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/serde/date-utils.d.ts new file mode 100644 index 000000000..99c55f45b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/serde/date-utils.d.ts @@ -0,0 +1,73 @@ +/** + * @internal + * + * Builds a proper UTC HttpDate timestamp from a Date object + * since not all environments will have this as the expected + * format. + * + * @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toUTCString} + * - Prior to ECMAScript 2018, the format of the return value + * - varied according to the platform. The most common return + * - value was an RFC-1123 formatted date stamp, which is a + * - slightly updated version of RFC-822 date stamps. + */ +export declare function dateToUtcString(date: Date): string; +/** + * @internal + * + * Parses a value into a Date. Returns undefined if the input is null or + * undefined, throws an error if the input is not a string that can be parsed + * as an RFC 3339 date. + * + * Input strings must conform to RFC3339 section 5.6, and cannot have a UTC + * offset. Fractional precision is supported. + * + * @see {@link https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14} + * + * @param value - the value to parse + * @returns a Date or undefined + */ +export declare const parseRfc3339DateTime: (value: unknown) => Date | undefined; +/** + * @internal + * + * Parses a value into a Date. Returns undefined if the input is null or + * undefined, throws an error if the input is not a string that can be parsed + * as an RFC 3339 date. + * + * Input strings must conform to RFC3339 section 5.6, and can have a UTC + * offset. Fractional precision is supported. + * + * @see {@link https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14} + * + * @param value - the value to parse + * @returns a Date or undefined + */ +export declare const parseRfc3339DateTimeWithOffset: (value: unknown) => Date | undefined; +/** + * @internal + * + * Parses a value into a Date. Returns undefined if the input is null or + * undefined, throws an error if the input is not a string that can be parsed + * as an RFC 7231 IMF-fixdate or obs-date. + * + * Input strings must conform to RFC7231 section 7.1.1.1. Fractional seconds are supported. + * + * @see {@link https://datatracker.ietf.org/doc/html/rfc7231.html#section-7.1.1.1} + * + * @param value - the value to parse + * @returns a Date or undefined + */ +export declare const parseRfc7231DateTime: (value: unknown) => Date | undefined; +/** + * @internal + * + * Parses a value into a Date. Returns undefined if the input is null or + * undefined, throws an error if the input is not a number or a parseable string. + * + * Input strings must be an integer or floating point number. Fractional seconds are supported. + * + * @param value - the value to parse + * @returns a Date or undefined + */ +export declare const parseEpochTimestamp: (value: unknown) => Date | undefined; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/serde/generateIdempotencyToken.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/serde/generateIdempotencyToken.d.ts new file mode 100644 index 000000000..69ef1f22b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/serde/generateIdempotencyToken.d.ts @@ -0,0 +1,2 @@ +import { v4 as generateIdempotencyToken } from "@smithy/uuid"; +export { generateIdempotencyToken }; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/serde/index.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/serde/index.d.ts new file mode 100644 index 000000000..421ec8ea1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/serde/index.d.ts @@ -0,0 +1,10 @@ +export * from "./copyDocumentWithTransform"; +export * from "./date-utils"; +export * from "./generateIdempotencyToken"; +export * from "./lazy-json"; +export * from "./parse-utils"; +export * from "./quote-header"; +export * from "./schema-serde-lib/schema-date-utils"; +export * from "./split-every"; +export * from "./split-header"; +export * from "./value/NumericValue"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/serde/lazy-json.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/serde/lazy-json.d.ts new file mode 100644 index 000000000..0b682ee9b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/serde/lazy-json.d.ts @@ -0,0 +1,45 @@ +/** + * @public + * + * A model field with this type means that you may provide a JavaScript + * object in lieu of a JSON string, and it will be serialized to JSON + * automatically before being sent in a request. + * + * For responses, you will receive a "LazyJsonString", which is a boxed String object + * with additional mixin methods. + * To get the string value, call `.toString()`, or to get the JSON object value, + * call `.deserializeJSON()` or parse it yourself. + */ +export type AutomaticJsonStringConversion = Parameters[0] | LazyJsonString; +/** + * @internal + */ +export interface LazyJsonString extends String { + /** + * @returns the JSON parsing of the string value. + */ + deserializeJSON(): any; + /** + * @returns the original string value rather than a JSON.stringified value. + */ + toJSON(): string; +} +/** + * @internal + * + * Extension of the native String class in the previous implementation + * has negative global performance impact on method dispatch for strings, + * and is generally discouraged. + * + * This current implementation may look strange, but is necessary to preserve the interface and + * behavior of extending the String class. + */ +export declare const LazyJsonString: { + new (s: string): LazyJsonString; + (s: string): LazyJsonString; + from(s: any): LazyJsonString; + /** + * @deprecated use #from. + */ + fromObject(s: any): LazyJsonString; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/serde/parse-utils.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/serde/parse-utils.d.ts new file mode 100644 index 000000000..b5ded6f65 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/serde/parse-utils.d.ts @@ -0,0 +1,270 @@ +/** + * @internal + * + * Give an input string, strictly parses a boolean value. + * + * @param value - The boolean string to parse. + * @returns true for "true", false for "false", otherwise an error is thrown. + */ +export declare const parseBoolean: (value: string) => boolean; +/** + * @internal + * + * Asserts a value is a boolean and returns it. + * Casts strings and numbers with a warning if there is evidence that they were + * intended to be booleans. + * + * @param value - A value that is expected to be a boolean. + * @returns The value if it's a boolean, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectBoolean: (value: any) => boolean | undefined; +/** + * @internal + * + * Asserts a value is a number and returns it. + * Casts strings with a warning if the string is a parseable number. + * This is to unblock slight API definition/implementation inconsistencies. + * + * @param value - A value that is expected to be a number. + * @returns The value if it's a number, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectNumber: (value: any) => number | undefined; +/** + * @internal + * + * Asserts a value is a 32-bit float and returns it. + * + * @param value - A value that is expected to be a 32-bit float. + * @returns The value if it's a float, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectFloat32: (value: any) => number | undefined; +/** + * @internal + * + * Asserts a value is an integer and returns it. + * + * @param value - A value that is expected to be an integer. + * @returns The value if it's an integer, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectLong: (value: any) => number | undefined; +/** + * @internal + * + * @deprecated Use expectLong + */ +export declare const expectInt: (value: any) => number | undefined; +/** + * @internal + * + * Asserts a value is a 32-bit integer and returns it. + * + * @param value - A value that is expected to be an integer. + * @returns The value if it's an integer, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectInt32: (value: any) => number | undefined; +/** + * @internal + * + * Asserts a value is a 16-bit integer and returns it. + * + * @param value - A value that is expected to be an integer. + * @returns The value if it's an integer, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectShort: (value: any) => number | undefined; +/** + * @internal + * + * Asserts a value is an 8-bit integer and returns it. + * + * @param value - A value that is expected to be an integer. + * @returns The value if it's an integer, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectByte: (value: any) => number | undefined; +/** + * @internal + * + * Asserts a value is not null or undefined and returns it, or throws an error. + * + * @param value - A value that is expected to be defined + * @param location - The location where we're expecting to find a defined object (optional) + * @returns The value if it's not undefined, otherwise throws an error + */ +export declare const expectNonNull: (value: T | null | undefined, location?: string) => T; +/** + * @internal + * + * Asserts a value is an JSON-like object and returns it. This is expected to be used + * with values parsed from JSON (arrays, objects, numbers, strings, booleans). + * + * @param value - A value that is expected to be an object + * @returns The value if it's an object, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectObject: (value: any) => Record | undefined; +/** + * @internal + * + * Asserts a value is a string and returns it. + * Numbers and boolean will be cast to strings with a warning. + * + * @param value - A value that is expected to be a string. + * @returns The value if it's a string, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectString: (value: any) => string | undefined; +/** + * @internal + * + * Asserts a value is a JSON-like object with only one non-null/non-undefined key and + * returns it. + * + * @param value - A value that is expected to be an object with exactly one non-null, + * non-undefined key. + * @returns the value if it's a union, undefined if it's null/undefined, otherwise + * an error is thrown. + */ +export declare const expectUnion: (value: unknown) => Record | undefined; +/** + * @internal + * + * Parses a value into a double. If the value is null or undefined, undefined + * will be returned. If the value is a string, it will be parsed by the standard + * parseFloat with one exception: NaN may only be explicitly set as the string + * "NaN", any implicit Nan values will result in an error being thrown. If any + * other type is provided, an exception will be thrown. + * + * @param value - A number or string representation of a double. + * @returns The value as a number, or undefined if it's null/undefined. + */ +export declare const strictParseDouble: (value: string | number) => number | undefined; +/** + * @internal + * + * @deprecated Use strictParseDouble + */ +export declare const strictParseFloat: (value: string | number) => number | undefined; +/** + * @internal + * + * Parses a value into a float. If the value is null or undefined, undefined + * will be returned. If the value is a string, it will be parsed by the standard + * parseFloat with one exception: NaN may only be explicitly set as the string + * "NaN", any implicit Nan values will result in an error being thrown. If any + * other type is provided, an exception will be thrown. + * + * @param value - A number or string representation of a float. + * @returns The value as a number, or undefined if it's null/undefined. + */ +export declare const strictParseFloat32: (value: string | number) => number | undefined; +/** + * @internal + * + * Asserts a value is a number and returns it. If the value is a string + * representation of a non-numeric number type (NaN, Infinity, -Infinity), + * the value will be parsed. Any other string value will result in an exception + * being thrown. Null or undefined will be returned as undefined. Any other + * type will result in an exception being thrown. + * + * @param value - A number or string representation of a non-numeric float. + * @returns The value as a number, or undefined if it's null/undefined. + */ +export declare const limitedParseDouble: (value: string | number) => number | undefined; +/** + * @internal + * + * @deprecated Use limitedParseDouble + */ +export declare const handleFloat: (value: string | number) => number | undefined; +/** + * @internal + * + * @deprecated Use limitedParseDouble + */ +export declare const limitedParseFloat: (value: string | number) => number | undefined; +/** + * @internal + * + * Asserts a value is a 32-bit float and returns it. If the value is a string + * representation of a non-numeric number type (NaN, Infinity, -Infinity), + * the value will be parsed. Any other string value will result in an exception + * being thrown. Null or undefined will be returned as undefined. Any other + * type will result in an exception being thrown. + * + * @param value - A number or string representation of a non-numeric float. + * @returns The value as a number, or undefined if it's null/undefined. + */ +export declare const limitedParseFloat32: (value: string | number) => number | undefined; +/** + * @internal + * + * Parses a value into an integer. If the value is null or undefined, undefined + * will be returned. If the value is a string, it will be parsed by parseFloat + * and the result will be asserted to be an integer. If the parsed value is not + * an integer, or the raw value is any type other than a string or number, an + * exception will be thrown. + * + * @param value - A number or string representation of an integer. + * @returns The value as a number, or undefined if it's null/undefined. + */ +export declare const strictParseLong: (value: string | number) => number | undefined; +/** + * @internal + * + * @deprecated Use strictParseLong + */ +export declare const strictParseInt: (value: string | number) => number | undefined; +/** + * @internal + * + * Parses a value into a 32-bit integer. If the value is null or undefined, undefined + * will be returned. If the value is a string, it will be parsed by parseFloat + * and the result will be asserted to be an integer. If the parsed value is not + * an integer, or the raw value is any type other than a string or number, an + * exception will be thrown. + * + * @param value - A number or string representation of a 32-bit integer. + * @returns The value as a number, or undefined if it's null/undefined. + */ +export declare const strictParseInt32: (value: string | number) => number | undefined; +/** + * @internal + * + * Parses a value into a 16-bit integer. If the value is null or undefined, undefined + * will be returned. If the value is a string, it will be parsed by parseFloat + * and the result will be asserted to be an integer. If the parsed value is not + * an integer, or the raw value is any type other than a string or number, an + * exception will be thrown. + * + * @param value - A number or string representation of a 16-bit integer. + * @returns The value as a number, or undefined if it's null/undefined. + */ +export declare const strictParseShort: (value: string | number) => number | undefined; +/** + * @internal + * + * Parses a value into an 8-bit integer. If the value is null or undefined, undefined + * will be returned. If the value is a string, it will be parsed by parseFloat + * and the result will be asserted to be an integer. If the parsed value is not + * an integer, or the raw value is any type other than a string or number, an + * exception will be thrown. + * + * @param value - A number or string representation of an 8-bit integer. + * @returns The value as a number, or undefined if it's null/undefined. + */ +export declare const strictParseByte: (value: string | number) => number | undefined; +/** + * @internal + */ +export declare const logger: { + warn: { + (...data: any[]): void; + (message?: any, ...optionalParams: any[]): void; + }; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/serde/quote-header.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/serde/quote-header.d.ts new file mode 100644 index 000000000..73d6c16c0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/serde/quote-header.d.ts @@ -0,0 +1,6 @@ +/** + * @public + * @param part - header list element + * @returns quoted string if part contains delimiter. + */ +export declare function quoteHeader(part: string): string; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/serde/schema-serde-lib/schema-date-utils.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/serde/schema-serde-lib/schema-date-utils.d.ts new file mode 100644 index 000000000..096ac3677 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/serde/schema-serde-lib/schema-date-utils.d.ts @@ -0,0 +1,47 @@ +/** + * @internal + * + * Parses a value into a Date. Returns undefined if the input is null or + * undefined, throws an error if the input is not a number or a parseable string. + * + * Input strings must be an integer or floating point number. Fractional seconds are supported. + * + * @param value - the value to parse + * @returns a Date or undefined + */ +export declare const _parseEpochTimestamp: (value: unknown) => Date | undefined; +/** + * @internal + * + * Parses a value into a Date. Returns undefined if the input is null or + * undefined, throws an error if the input is not a string that can be parsed + * as an RFC 3339 date. + * + * Input strings must conform to RFC3339 section 5.6, and can have a UTC + * offset. Fractional precision is supported. + * + * @see {@link https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14} + * + * @param value - the value to parse + * @returns a Date or undefined + */ +export declare const _parseRfc3339DateTimeWithOffset: (value: unknown) => Date | undefined; +/** + * @internal + * + * Parses a value into a Date. Returns undefined if the input is null or + * undefined, throws an error if the input is not a string that can be parsed + * as an RFC 7231 date. + * + * Input strings must conform to RFC7231 section 7.1.1.1. Fractional seconds are supported. + * + * RFC 850 and unix asctime formats are also accepted. + * todo: practically speaking, are RFC 850 and asctime even used anymore? + * todo: can we remove those parts? + * + * @see {@link https://datatracker.ietf.org/doc/html/rfc7231.html#section-7.1.1.1} + * + * @param value - the value to parse. + * @returns a Date or undefined. + */ +export declare const _parseRfc7231DateTime: (value: unknown) => Date | undefined; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/serde/split-every.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/serde/split-every.d.ts new file mode 100644 index 000000000..45a022917 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/serde/split-every.d.ts @@ -0,0 +1,11 @@ +/** + * @internal + * + * Given an input string, splits based on the delimiter after a given + * number of delimiters has been encountered. + * + * @param value - The input string to split. + * @param delimiter - The delimiter to split on. + * @param numDelimiters - The number of delimiters to have encountered to split. + */ +export declare function splitEvery(value: string, delimiter: string, numDelimiters: number): Array; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/serde/split-header.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/serde/split-header.d.ts new file mode 100644 index 000000000..0f51651e4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/serde/split-header.d.ts @@ -0,0 +1,5 @@ +/** + * @param value - header string value. + * @returns value split by commas that aren't in quotes. + */ +export declare const splitHeader: (value: string) => string[]; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/serde/value/NumericValue.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/serde/value/NumericValue.d.ts new file mode 100644 index 000000000..f9da63d61 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/submodules/serde/value/NumericValue.d.ts @@ -0,0 +1,33 @@ +/** + * Types which may be represented by {@link NumericValue}. + * + * There is currently only one option, because BigInteger and Long should + * use JS BigInt directly, and all other numeric types can be contained in JS Number. + * + * @public + */ +export type NumericType = "bigDecimal"; +/** + * Serialization container for Smithy simple types that do not have a + * direct JavaScript runtime representation. + * + * This container does not perform numeric mathematical operations. + * It is a container for discerning a value's true type. + * + * It allows storage of numeric types not representable in JS without + * making a decision on what numeric library to use. + * + * @public + */ +export declare class NumericValue { + readonly string: string; + readonly type: NumericType; + constructor(string: string, type: NumericType); + toString(): string; + static [Symbol.hasInstance](object: unknown): boolean; +} +/** + * Serde shortcut. + * @internal + */ +export declare function nv(input: string | unknown): NumericValue; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/getSmithyContext.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/getSmithyContext.d.ts new file mode 100644 index 000000000..523ee47da --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/getSmithyContext.d.ts @@ -0,0 +1,5 @@ +import { HandlerExecutionContext } from "@smithy/types"; +/** + * @internal + */ +export declare const getSmithyContext: (context: HandlerExecutionContext) => Record; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..82c90b929 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/index.d.ts @@ -0,0 +1,8 @@ +export * from "./getSmithyContext"; +export * from "./middleware-http-auth-scheme"; +export * from "./middleware-http-signing"; +export * from "./normalizeProvider"; +export { createPaginator } from "./pagination/createPaginator"; +export * from "./request-builder/requestBuilder"; +export * from "./setFeature"; +export * from "./util-identity-and-auth"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.d.ts new file mode 100644 index 000000000..996b0deab --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.d.ts @@ -0,0 +1,18 @@ +import { HandlerExecutionContext, HttpAuthSchemeParameters, HttpAuthSchemeParametersProvider, IdentityProviderConfig, Pluggable, RelativeMiddlewareOptions, SerializeHandlerOptions } from "@smithy/types"; +import { PreviouslyResolved } from "./httpAuthSchemeMiddleware"; +/** + * @internal + */ +export declare const httpAuthSchemeEndpointRuleSetMiddlewareOptions: SerializeHandlerOptions & RelativeMiddlewareOptions; +/** + * @internal + */ +interface HttpAuthSchemeEndpointRuleSetPluginOptions { + httpAuthSchemeParametersProvider: HttpAuthSchemeParametersProvider; + identityProviderConfigProvider: (config: TConfig) => Promise; +} +/** + * @internal + */ +export declare const getHttpAuthSchemeEndpointRuleSetPlugin: (config: TConfig & PreviouslyResolved, { httpAuthSchemeParametersProvider, identityProviderConfigProvider, }: HttpAuthSchemeEndpointRuleSetPluginOptions) => Pluggable; +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/getHttpAuthSchemePlugin.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/getHttpAuthSchemePlugin.d.ts new file mode 100644 index 000000000..2e57733e6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/getHttpAuthSchemePlugin.d.ts @@ -0,0 +1,18 @@ +import { HandlerExecutionContext, HttpAuthSchemeParameters, HttpAuthSchemeParametersProvider, IdentityProviderConfig, Pluggable, RelativeMiddlewareOptions, SerializeHandlerOptions } from "@smithy/types"; +import { PreviouslyResolved } from "./httpAuthSchemeMiddleware"; +/** + * @internal + */ +export declare const httpAuthSchemeMiddlewareOptions: SerializeHandlerOptions & RelativeMiddlewareOptions; +/** + * @internal + */ +interface HttpAuthSchemePluginOptions { + httpAuthSchemeParametersProvider: HttpAuthSchemeParametersProvider; + identityProviderConfigProvider: (config: TConfig) => Promise; +} +/** + * @internal + */ +export declare const getHttpAuthSchemePlugin: (config: TConfig & PreviouslyResolved, { httpAuthSchemeParametersProvider, identityProviderConfigProvider, }: HttpAuthSchemePluginOptions) => Pluggable; +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/httpAuthSchemeMiddleware.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/httpAuthSchemeMiddleware.d.ts new file mode 100644 index 000000000..50f1ea8c7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/httpAuthSchemeMiddleware.d.ts @@ -0,0 +1,33 @@ +import { HandlerExecutionContext, HttpAuthScheme, HttpAuthSchemeParameters, HttpAuthSchemeParametersProvider, HttpAuthSchemeProvider, IdentityProviderConfig, Provider, SelectedHttpAuthScheme, SerializeMiddleware, SMITHY_CONTEXT_KEY } from "@smithy/types"; +/** + * @internal + */ +export interface PreviouslyResolved { + authSchemePreference?: Provider; + httpAuthSchemes: HttpAuthScheme[]; + httpAuthSchemeProvider: HttpAuthSchemeProvider; +} +/** + * @internal + */ +interface HttpAuthSchemeMiddlewareOptions { + httpAuthSchemeParametersProvider: HttpAuthSchemeParametersProvider; + identityProviderConfigProvider: (config: TConfig) => Promise; +} +/** + * @internal + */ +interface HttpAuthSchemeMiddlewareSmithyContext extends Record { + selectedHttpAuthScheme?: SelectedHttpAuthScheme; +} +/** + * @internal + */ +interface HttpAuthSchemeMiddlewareHandlerExecutionContext extends HandlerExecutionContext { + [SMITHY_CONTEXT_KEY]?: HttpAuthSchemeMiddlewareSmithyContext; +} +/** + * @internal + */ +export declare const httpAuthSchemeMiddleware: (config: TConfig & PreviouslyResolved, mwOptions: HttpAuthSchemeMiddlewareOptions) => SerializeMiddleware; +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/index.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/index.d.ts new file mode 100644 index 000000000..5042e7dc7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/index.d.ts @@ -0,0 +1,3 @@ +export * from "./httpAuthSchemeMiddleware"; +export * from "./getHttpAuthSchemeEndpointRuleSetPlugin"; +export * from "./getHttpAuthSchemePlugin"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/resolveAuthOptions.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/resolveAuthOptions.d.ts new file mode 100644 index 000000000..52fc604da --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/resolveAuthOptions.d.ts @@ -0,0 +1,10 @@ +import { HttpAuthOption } from "@smithy/types"; +/** + * Resolves list of auth options based on the supported ones, vs the preference list. + * + * @param candidateAuthOptions list of supported auth options selected by the standard + * resolution process (model-based, endpoints 2.0, etc.) + * @param authSchemePreference list of auth schemes preferred by user. + * @returns + */ +export declare const resolveAuthOptions: (candidateAuthOptions: HttpAuthOption[], authSchemePreference: string[]) => HttpAuthOption[]; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-signing/getHttpSigningMiddleware.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-signing/getHttpSigningMiddleware.d.ts new file mode 100644 index 000000000..56c89a21c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-signing/getHttpSigningMiddleware.d.ts @@ -0,0 +1,9 @@ +import { FinalizeRequestHandlerOptions, Pluggable, RelativeMiddlewareOptions } from "@smithy/types"; +/** + * @internal + */ +export declare const httpSigningMiddlewareOptions: FinalizeRequestHandlerOptions & RelativeMiddlewareOptions; +/** + * @internal + */ +export declare const getHttpSigningPlugin: (config: object) => Pluggable; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-signing/httpSigningMiddleware.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-signing/httpSigningMiddleware.d.ts new file mode 100644 index 000000000..3b436117f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-signing/httpSigningMiddleware.d.ts @@ -0,0 +1,5 @@ +import { FinalizeRequestMiddleware } from "@smithy/types"; +/** + * @internal + */ +export declare const httpSigningMiddleware: (config: object) => FinalizeRequestMiddleware; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-signing/index.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-signing/index.d.ts new file mode 100644 index 000000000..7bc6cfe12 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-signing/index.d.ts @@ -0,0 +1,2 @@ +export * from "./httpSigningMiddleware"; +export * from "./getHttpSigningMiddleware"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/normalizeProvider.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/normalizeProvider.d.ts new file mode 100644 index 000000000..4fe2d9ad7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/normalizeProvider.d.ts @@ -0,0 +1,7 @@ +import { Provider } from "@smithy/types"; +/** + * @internal + * + * @returns a provider function for the input value if it isn't already one. + */ +export declare const normalizeProvider: (input: T | Provider) => Provider; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/pagination/createPaginator.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/pagination/createPaginator.d.ts new file mode 100644 index 000000000..64fd95ee5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/pagination/createPaginator.d.ts @@ -0,0 +1,7 @@ +import { PaginationConfiguration, Paginator } from "@smithy/types"; +/** + * @internal + * + * Creates a paginator. + */ +export declare function createPaginator(ClientCtor: any, CommandCtor: any, inputTokenName: string, outputTokenName: string, pageSizeTokenName?: string): (config: PaginationConfigType, input: InputType, ...additionalArguments: any[]) => Paginator; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/request-builder/requestBuilder.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/request-builder/requestBuilder.d.ts new file mode 100644 index 000000000..8e2f2effc --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/request-builder/requestBuilder.d.ts @@ -0,0 +1,5 @@ +/** + * @internal + * Backwards compatibility re-export. + */ +export { requestBuilder } from "@smithy/core/protocols"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/setFeature.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/setFeature.d.ts new file mode 100644 index 000000000..fa833525f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/setFeature.d.ts @@ -0,0 +1,12 @@ +import { HandlerExecutionContext, SmithyFeatures } from "@smithy/types"; +/** + * @internal + * Indicates to the request context that a given feature is active. + * + * @param context - handler execution context. + * @param feature - readable name of feature. + * @param value - encoding value of feature. This is required because the + * specification asks the library not to include a runtime lookup of all + * the feature identifiers. + */ +export declare function setFeature(context: HandlerExecutionContext, feature: F, value: SmithyFeatures[F]): void; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/CborCodec.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/CborCodec.d.ts new file mode 100644 index 000000000..4f598f936 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/CborCodec.d.ts @@ -0,0 +1,33 @@ +import { SerdeContext } from "@smithy/core/protocols"; +import { Codec, Schema, ShapeDeserializer, ShapeSerializer } from "@smithy/types"; +/** + * @public + */ +export declare class CborCodec extends SerdeContext implements Codec { + createSerializer(): CborShapeSerializer; + createDeserializer(): CborShapeDeserializer; +} +/** + * @public + */ +export declare class CborShapeSerializer extends SerdeContext implements ShapeSerializer { + private value; + write(schema: Schema, value: unknown): void; + /** + * Recursive serializer transform that copies and prepares the user input object + * for CBOR serialization. + */ + serialize(schema: Schema, source: unknown): any; + flush(): Uint8Array; +} +/** + * @public + */ +export declare class CborShapeDeserializer extends SerdeContext implements ShapeDeserializer { + read(schema: Schema, bytes: Uint8Array): any; + /** + * Public because it's called by the protocol implementation to deserialize errors. + * @internal + */ + readValue(_schema: Schema, value: any): any; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/SmithyRpcV2CborProtocol.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/SmithyRpcV2CborProtocol.d.ts new file mode 100644 index 000000000..8b69d0fff --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/SmithyRpcV2CborProtocol.d.ts @@ -0,0 +1,28 @@ +import { RpcProtocol } from "@smithy/core/protocols"; +import { TypeRegistry } from "@smithy/core/schema"; +import { EndpointBearer, HandlerExecutionContext, HttpRequest as IHttpRequest, HttpResponse as IHttpResponse, MetadataBearer, OperationSchema, ResponseMetadata, SerdeFunctions } from "@smithy/types"; +import { CborCodec } from "./CborCodec"; +/** + * Client protocol for Smithy RPCv2 CBOR. + * + * @public + */ +export declare class SmithyRpcV2CborProtocol extends RpcProtocol { + /** + * @override + */ + protected compositeErrorRegistry: TypeRegistry; + private codec; + protected serializer: import("./CborCodec").CborShapeSerializer; + protected deserializer: import("./CborCodec").CborShapeDeserializer; + constructor({ defaultNamespace, errorTypeRegistries, }: { + defaultNamespace: string; + errorTypeRegistries?: TypeRegistry[]; + }); + getShapeId(): string; + getPayloadCodec(): CborCodec; + serializeRequest(operationSchema: OperationSchema, input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + deserializeResponse(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse): Promise; + protected handleError(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse, dataObject: any, metadata: ResponseMetadata): Promise; + protected getDefaultContentType(): string; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/byte-printer.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/byte-printer.d.ts new file mode 100644 index 000000000..698c54456 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/byte-printer.d.ts @@ -0,0 +1,6 @@ +/** + * Prints bytes as binary string with numbers. + * @param bytes - to print. + * @deprecated for testing only, do not use in runtime. + */ +export declare function printBytes(bytes: Uint8Array): string[]; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor-decode.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor-decode.d.ts new file mode 100644 index 000000000..baf39613c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor-decode.d.ts @@ -0,0 +1,17 @@ +import { CborValueType, Float32, Uint8, Uint32 } from "./cbor-types"; +/** + * @internal + * @param bytes - to be set as the decode source. + * + * Sets the decode bytearray source and its data view. + */ +export declare function setPayload(bytes: Uint8Array): void; +/** + * @internal + * Decodes the data between the two indices. + */ +export declare function decode(at: Uint32, to: Uint32): CborValueType; +/** + * @internal + */ +export declare function bytesToFloat16(a: Uint8, b: Uint8): Float32; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor-encode.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor-encode.d.ts new file mode 100644 index 000000000..bfc3328b3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor-encode.d.ts @@ -0,0 +1,9 @@ +/** + * @internal + */ +export declare function toUint8Array(): Uint8Array; +export declare function resize(size: number): void; +/** + * @param _input - JS data object. + */ +export declare function encode(_input: any): void; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor-types.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor-types.d.ts new file mode 100644 index 000000000..66b5fb531 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor-types.d.ts @@ -0,0 +1,65 @@ +export type CborItemType = undefined | boolean | number | bigint | [ + CborUnstructuredByteStringType, + Uint64 +] | string | CborTagType; +export type CborTagType = { + tag: Uint64 | number; + value: CborValueType; + [tagSymbol]: true; +}; +export type CborUnstructuredByteStringType = Uint8Array; +export type CborListType = Array; +export type CborMapType = Record; +export type CborCollectionType = CborMapType | CborListType; +export type CborValueType = CborItemType | CborCollectionType | any; +export type CborArgumentLength = 1 | 2 | 4 | 8; +export type CborArgumentLengthOffset = 1 | 2 | 3 | 5 | 9; +export type CborOffset = number; +export type Uint8 = number; +export type Uint32 = number; +export type Uint64 = bigint; +export type Float32 = number; +export type Int64 = bigint; +export type Float16Binary = number; +export type Float32Binary = number; +export type CborMajorType = typeof majorUint64 | typeof majorNegativeInt64 | typeof majorUnstructuredByteString | typeof majorUtf8String | typeof majorList | typeof majorMap | typeof majorTag | typeof majorSpecial; +export declare const majorUint64 = 0; +export declare const majorNegativeInt64 = 1; +export declare const majorUnstructuredByteString = 2; +export declare const majorUtf8String = 3; +export declare const majorList = 4; +export declare const majorMap = 5; +export declare const majorTag = 6; +export declare const majorSpecial = 7; +export declare const specialFalse = 20; +export declare const specialTrue = 21; +export declare const specialNull = 22; +export declare const specialUndefined = 23; +export declare const extendedOneByte = 24; +export declare const extendedFloat16 = 25; +export declare const extendedFloat32 = 26; +export declare const extendedFloat64 = 27; +export declare const minorIndefinite = 31; +export declare function alloc(size: number): Uint8Array; +/** + * @public + * + * The presence of this symbol as an object key indicates it should be considered a tag + * for CBOR serialization purposes. + * + * The object must also have the properties "tag" and "value". + */ +export declare const tagSymbol: unique symbol; +/** + * @public + * Applies the tag symbol to the object. + */ +export declare function tag(data: { + tag: number | bigint; + value: any; + [tagSymbol]?: true; +}): { + tag: number | bigint; + value: any; + [tagSymbol]: true; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor.d.ts new file mode 100644 index 000000000..7577213ed --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor.d.ts @@ -0,0 +1,26 @@ +/** + * This implementation is synchronous and only implements the parts of CBOR + * specification used by Smithy RPCv2 CBOR protocol. + * + * This cbor serde implementation is derived from AWS SDK for Go's implementation. + * @see https://github.com/aws/smithy-go/tree/main/encoding/cbor + * + * The cbor-x implementation was also instructional: + * @see https://github.com/kriszyp/cbor-x + */ +export declare const cbor: { + deserialize(payload: Uint8Array): any; + serialize(input: any): Uint8Array; + /** + * @public + * @param size - byte length to allocate. + * + * This may be used to garbage collect the CBOR + * shared encoding buffer space, + * e.g. resizeEncodingBuffer(0); + * + * This may also be used to pre-allocate more space for + * CBOR encoding, e.g. resizeEncodingBuffer(100_000_000); + */ + resizeEncodingBuffer(size: number): void; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/index.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/index.d.ts new file mode 100644 index 000000000..c53524e3a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/index.d.ts @@ -0,0 +1,5 @@ +export { cbor } from "./cbor"; +export { tag, tagSymbol } from "./cbor-types"; +export * from "./parseCborBody"; +export * from "./SmithyRpcV2CborProtocol"; +export * from "./CborCodec"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/parseCborBody.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/parseCborBody.d.ts new file mode 100644 index 000000000..0a0ab0cc2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/parseCborBody.d.ts @@ -0,0 +1,31 @@ +import { HttpRequest as __HttpRequest } from "@smithy/protocol-http"; +import { HeaderBag as __HeaderBag, HttpResponse, SerdeContext as __SerdeContext, SerdeContext } from "@smithy/types"; +import { tagSymbol } from "./cbor-types"; +/** + * @internal + */ +export declare const parseCborBody: (streamBody: any, context: SerdeContext) => any; +/** + * @internal + */ +export declare const dateToTag: (date: Date) => { + tag: number | bigint; + value: any; + [tagSymbol]: true; +}; +/** + * @internal + */ +export declare const parseCborErrorBody: (errorBody: any, context: SerdeContext) => Promise; +/** + * @internal + */ +export declare const loadSmithyRpcV2CborErrorCode: (output: HttpResponse, data: any) => string | undefined; +/** + * @internal + */ +export declare const checkCborResponse: (response: HttpResponse) => void; +/** + * @internal + */ +export declare const buildHttpRpcRequest: (context: __SerdeContext, headers: __HeaderBag, path: string, resolvedHostname: string | undefined, body: any) => Promise<__HttpRequest>; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/endpoints/index.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/endpoints/index.d.ts new file mode 100644 index 000000000..a88df654d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/endpoints/index.d.ts @@ -0,0 +1 @@ +export * from "./toEndpointV1"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/endpoints/toEndpointV1.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/endpoints/toEndpointV1.d.ts new file mode 100644 index 000000000..daf7ef092 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/endpoints/toEndpointV1.d.ts @@ -0,0 +1,6 @@ +import { Endpoint, EndpointV2 } from "@smithy/types"; +/** + * Converts an endpoint to EndpointV1 format. + * @internal + */ +export declare const toEndpointV1: (endpoint: string | Endpoint | EndpointV2) => Endpoint; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/event-streams/EventStreamSerde.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/event-streams/EventStreamSerde.d.ts new file mode 100644 index 000000000..d9115287a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/event-streams/EventStreamSerde.d.ts @@ -0,0 +1,60 @@ +import { NormalizedSchema } from "@smithy/core/schema"; +import { EventStreamMarshaller, HttpRequest as IHttpRequest, HttpResponse as IHttpResponse, SerdeFunctions, ShapeDeserializer, ShapeSerializer } from "@smithy/types"; +/** + * Separated module for async mixin of EventStream serde capability. + * This is used by the HttpProtocol base class from \@smithy/core/protocols. + * + * @public + */ +export declare class EventStreamSerde { + private readonly marshaller; + private readonly serializer; + private readonly deserializer; + private readonly serdeContext?; + private readonly defaultContentType; + /** + * Properties are injected by the HttpProtocol. + */ + constructor({ marshaller, serializer, deserializer, serdeContext, defaultContentType, }: { + marshaller: EventStreamMarshaller; + serializer: ShapeSerializer; + deserializer: ShapeDeserializer; + serdeContext?: SerdeFunctions; + defaultContentType: string; + }); + /** + * @param eventStream - the iterable provided by the caller. + * @param requestSchema - the schema of the event stream container (struct). + * @param [initialRequest] - only provided if the initial-request is part of the event stream (RPC). + * + * @returns a stream suitable for the HTTP body of a request. + */ + serializeEventStream({ eventStream, requestSchema, initialRequest, }: { + eventStream: AsyncIterable; + requestSchema: NormalizedSchema; + initialRequest?: any; + }): Promise; + /** + * @param response - http response from which to read the event stream. + * @param unionSchema - schema of the event stream container (struct). + * @param [initialResponseContainer] - provided and written to only if the initial response is part of the event stream (RPC). + * + * @returns the asyncIterable of the event stream for the end-user. + */ + deserializeEventStream({ response, responseSchema, initialResponseContainer, }: { + response: IHttpResponse; + responseSchema: NormalizedSchema; + initialResponseContainer?: any; + }): Promise>; + /** + * @param unionMember - member name within the structure that contains an event stream union. + * @param unionSchema - schema of the union. + * @param event + * + * @returns the event body (bytes) and event type (string). + */ + private writeEventBody; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/event-streams/index.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/event-streams/index.d.ts new file mode 100644 index 000000000..849f48ccf --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/event-streams/index.d.ts @@ -0,0 +1 @@ +export * from "./EventStreamSerde"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/HttpBindingProtocol.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/HttpBindingProtocol.d.ts new file mode 100644 index 000000000..8921681e1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/HttpBindingProtocol.d.ts @@ -0,0 +1,31 @@ +import { TypeRegistry, NormalizedSchema } from "@smithy/core/schema"; +import { HttpRequest } from "@smithy/protocol-http"; +import { EndpointBearer, HandlerExecutionContext, HttpRequest as IHttpRequest, HttpResponse as IHttpResponse, MetadataBearer, OperationSchema, Schema, SerdeFunctions } from "@smithy/types"; +import { HttpProtocol } from "./HttpProtocol"; +/** + * Base for HTTP-binding protocols. Downstream examples + * include AWS REST JSON and AWS REST XML. + * + * @public + */ +export declare abstract class HttpBindingProtocol extends HttpProtocol { + /** + * @override + */ + protected compositeErrorRegistry: TypeRegistry; + serializeRequest(operationSchema: OperationSchema, _input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + protected serializeQuery(ns: NormalizedSchema, data: any, query: HttpRequest["query"]): void; + deserializeResponse(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse): Promise; + /** + * The base method ignores HTTP bindings. + * + * @deprecated (only this signature) use signature without headerBindings. + * @override + */ + protected deserializeHttpMessage(schema: Schema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse, headerBindings: Set, dataObject: any): Promise; + protected deserializeHttpMessage(schema: Schema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse, dataObject: any): Promise; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/HttpProtocol.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/HttpProtocol.d.ts new file mode 100644 index 000000000..f48fea485 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/HttpProtocol.d.ts @@ -0,0 +1,89 @@ +import { EventStreamSerde } from "@smithy/core/event-streams"; +import { NormalizedSchema, TypeRegistry } from "@smithy/core/schema"; +import { ClientProtocol, Codec, Endpoint, EndpointBearer, EndpointV2, EventStreamMarshaller, HandlerExecutionContext, HttpRequest as IHttpRequest, HttpResponse as IHttpResponse, MetadataBearer, OperationSchema, ResponseMetadata, Schema, SerdeFunctions, ShapeDeserializer, ShapeSerializer } from "@smithy/types"; +import { SerdeContext } from "./SerdeContext"; +/** + * Abstract base for HTTP-based client protocols. + * + * @public + */ +export declare abstract class HttpProtocol extends SerdeContext implements ClientProtocol { + readonly options: { + defaultNamespace: string; + errorTypeRegistries?: TypeRegistry[]; + }; + /** + * An error registry having the namespace of the modeled service, + * but combining all error schemas found within the service closure. + * + * Used to look up error schema during deserialization. + */ + protected compositeErrorRegistry: TypeRegistry; + protected abstract serializer: ShapeSerializer; + protected abstract deserializer: ShapeDeserializer; + /** + * @param options.defaultNamespace - used by various implementing classes. + * @param options.errorTypeRegistries - registry instances that contribute to error deserialization. + */ + protected constructor(options: { + defaultNamespace: string; + errorTypeRegistries?: TypeRegistry[]; + }); + abstract getShapeId(): string; + abstract getPayloadCodec(): Codec; + getRequestType(): new (...args: any[]) => IHttpRequest; + getResponseType(): new (...args: any[]) => IHttpResponse; + /** + * @override + */ + setSerdeContext(serdeContext: SerdeFunctions): void; + abstract serializeRequest(operationSchema: OperationSchema, input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + updateServiceEndpoint(request: IHttpRequest, endpoint: EndpointV2 | Endpoint): IHttpRequest; + abstract deserializeResponse(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse): Promise; + protected setHostPrefix(request: IHttpRequest, operationSchema: OperationSchema, input: Input): void; + protected abstract handleError(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse, dataObject: any, metadata: ResponseMetadata): Promise; + protected deserializeMetadata(output: IHttpResponse): ResponseMetadata; + /** + * @param eventStream - the iterable provided by the caller. + * @param requestSchema - the schema of the event stream container (struct). + * @param [initialRequest] - only provided if the initial-request is part of the event stream (RPC). + * + * @returns a stream suitable for the HTTP body of a request. + */ + protected serializeEventStream({ eventStream, requestSchema, initialRequest, }: { + eventStream: AsyncIterable; + requestSchema: NormalizedSchema; + initialRequest?: any; + }): Promise; + /** + * @param response - http response from which to read the event stream. + * @param unionSchema - schema of the event stream container (struct). + * @param [initialResponseContainer] - provided and written to only if the initial response is part of the event stream (RPC). + * + * @returns the asyncIterable of the event stream. + */ + protected deserializeEventStream({ response, responseSchema, initialResponseContainer, }: { + response: IHttpResponse; + responseSchema: NormalizedSchema; + initialResponseContainer?: any; + }): Promise>; + /** + * Loads eventStream capability async (for chunking). + */ + protected loadEventStreamCapability(): Promise; + /** + * @returns content-type default header value for event stream events and other documents. + */ + protected getDefaultContentType(): string; + /** + * For HTTP binding protocols, this method is overridden in {@link HttpBindingProtocol}. + * + * @deprecated only use this for HTTP binding protocols. + */ + protected deserializeHttpMessage(schema: Schema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse, headerBindings: Set, dataObject: any): Promise; + protected deserializeHttpMessage(schema: Schema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse, dataObject: any): Promise; + protected getEventStreamMarshaller(): EventStreamMarshaller; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/RpcProtocol.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/RpcProtocol.d.ts new file mode 100644 index 000000000..ed227380e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/RpcProtocol.d.ts @@ -0,0 +1,16 @@ +import { TypeRegistry } from "@smithy/core/schema"; +import { EndpointBearer, HandlerExecutionContext, HttpRequest as IHttpRequest, HttpResponse as IHttpResponse, MetadataBearer, OperationSchema, SerdeFunctions } from "@smithy/types"; +import { HttpProtocol } from "./HttpProtocol"; +/** + * Abstract base for RPC-over-HTTP protocols. + * + * @public + */ +export declare abstract class RpcProtocol extends HttpProtocol { + /** + * @override + */ + protected compositeErrorRegistry: TypeRegistry; + serializeRequest(operationSchema: OperationSchema, input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + deserializeResponse(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse): Promise; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/SerdeContext.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/SerdeContext.d.ts new file mode 100644 index 000000000..f6d513216 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/SerdeContext.d.ts @@ -0,0 +1,16 @@ +import { ConfigurableSerdeContext, SerdeFunctions } from "@smithy/types"; +/** + * This in practice should be the client config object. + * @internal + */ +type SerdeContextType = SerdeFunctions & { + disableHostPrefix?: boolean; +}; +/** + * @internal + */ +export declare abstract class SerdeContext implements ConfigurableSerdeContext { + protected serdeContext?: SerdeContextType; + setSerdeContext(serdeContext: SerdeContextType): void; +} +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/collect-stream-body.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/collect-stream-body.d.ts new file mode 100644 index 000000000..c649668c6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/collect-stream-body.d.ts @@ -0,0 +1,10 @@ +import { SerdeContext } from "@smithy/types"; +import { Uint8ArrayBlobAdapter } from "@smithy/util-stream"; +/** + * @internal + * + * Collect low-level response body stream to Uint8Array. + */ +export declare const collectBody: (streamBody: any | undefined, context: { + streamCollector: SerdeContext["streamCollector"]; +}) => Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/extended-encode-uri-component.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/extended-encode-uri-component.d.ts new file mode 100644 index 000000000..403e9ae46 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/extended-encode-uri-component.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + * + * Function that wraps encodeURIComponent to encode additional characters + * to fully adhere to RFC 3986. + */ +export declare function extendedEncodeURIComponent(str: string): string; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/index.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/index.d.ts new file mode 100644 index 000000000..5cc40c526 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/index.d.ts @@ -0,0 +1,13 @@ +export * from "./collect-stream-body"; +export * from "./extended-encode-uri-component"; +export * from "./HttpBindingProtocol"; +export * from "./HttpProtocol"; +export * from "./RpcProtocol"; +export * from "./requestBuilder"; +export * from "./resolve-path"; +export * from "./serde/FromStringShapeDeserializer"; +export * from "./serde/HttpInterceptingShapeDeserializer"; +export * from "./serde/HttpInterceptingShapeSerializer"; +export * from "./serde/ToStringShapeSerializer"; +export * from "./serde/determineTimestampFormat"; +export * from "./SerdeContext"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/requestBuilder.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/requestBuilder.d.ts new file mode 100644 index 000000000..424f6efa4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/requestBuilder.d.ts @@ -0,0 +1,51 @@ +import { HttpRequest } from "@smithy/protocol-http"; +import { SerdeContext } from "@smithy/types"; +/** + * @internal + * used in code-generated serde. + */ +export declare function requestBuilder(input: any, context: SerdeContext): RequestBuilder; +/** + * @internal + */ +export declare class RequestBuilder { + private input; + private context; + private query; + private method; + private headers; + private path; + private body; + private hostname; + private resolvePathStack; + constructor(input: any, context: SerdeContext); + build(): Promise; + /** + * Brevity setter for "hostname". + */ + hn(hostname: string): this; + /** + * Brevity initial builder for "basepath". + */ + bp(uriLabel: string): this; + /** + * Brevity incremental builder for "path". + */ + p(memberName: string, labelValueProvider: () => string | undefined, uriLabel: string, isGreedyLabel: boolean): this; + /** + * Brevity setter for "headers". + */ + h(headers: Record): this; + /** + * Brevity setter for "query". + */ + q(query: Record): this; + /** + * Brevity setter for "body". + */ + b(body: any): this; + /** + * Brevity setter for "method". + */ + m(method: string): this; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/resolve-path.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/resolve-path.d.ts new file mode 100644 index 000000000..03386d6bb --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/resolve-path.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const resolvedPath: (resolvedPath: string, input: unknown, memberName: string, labelValueProvider: () => string | undefined, uriLabel: string, isGreedyLabel: boolean) => string; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/FromStringShapeDeserializer.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/FromStringShapeDeserializer.d.ts new file mode 100644 index 000000000..682bce2bc --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/FromStringShapeDeserializer.d.ts @@ -0,0 +1,13 @@ +import { CodecSettings, Schema, ShapeDeserializer } from "@smithy/types"; +import { SerdeContext } from "../SerdeContext"; +/** + * This deserializer reads strings. + * + * @public + */ +export declare class FromStringShapeDeserializer extends SerdeContext implements ShapeDeserializer { + private settings; + constructor(settings: CodecSettings); + read(_schema: Schema, data: string): any; + private base64ToUtf8; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/HttpInterceptingShapeDeserializer.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/HttpInterceptingShapeDeserializer.d.ts new file mode 100644 index 000000000..d044bfa88 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/HttpInterceptingShapeDeserializer.d.ts @@ -0,0 +1,21 @@ +import { CodecSettings, Schema, SerdeFunctions, ShapeDeserializer } from "@smithy/types"; +import { SerdeContext } from "../SerdeContext"; +/** + * This deserializer is a dispatcher that decides whether to use a string deserializer + * or a codec deserializer based on HTTP traits. + * + * For example, in a JSON HTTP message, the deserialization of a field will differ depending on whether + * it is bound to the HTTP header (string) or body (JSON). + * + * @public + */ +export declare class HttpInterceptingShapeDeserializer> extends SerdeContext implements ShapeDeserializer { + private codecDeserializer; + private stringDeserializer; + constructor(codecDeserializer: CodecShapeDeserializer, codecSettings: CodecSettings); + /** + * @override + */ + setSerdeContext(serdeContext: SerdeFunctions): void; + read(schema: Schema, data: string | Uint8Array): any | Promise; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/HttpInterceptingShapeSerializer.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/HttpInterceptingShapeSerializer.d.ts new file mode 100644 index 000000000..cf4b91b79 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/HttpInterceptingShapeSerializer.d.ts @@ -0,0 +1,23 @@ +import { CodecSettings, ConfigurableSerdeContext, Schema as ISchema, SerdeFunctions, ShapeSerializer } from "@smithy/types"; +import { ToStringShapeSerializer } from "./ToStringShapeSerializer"; +/** + * This serializer decides whether to dispatch to a string serializer or a codec serializer + * depending on HTTP binding traits within the given schema. + * + * For example, a JavaScript array is serialized differently when being written + * to a REST JSON HTTP header (comma-delimited string) and a REST JSON HTTP body (JSON array). + * + * @public + */ +export declare class HttpInterceptingShapeSerializer> implements ShapeSerializer, ConfigurableSerdeContext { + private codecSerializer; + private stringSerializer; + private buffer; + constructor(codecSerializer: CodecShapeSerializer, codecSettings: CodecSettings, stringSerializer?: ToStringShapeSerializer); + /** + * @override + */ + setSerdeContext(serdeContext: SerdeFunctions): void; + write(schema: ISchema, value: unknown): void; + flush(): string | Uint8Array; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/ToStringShapeSerializer.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/ToStringShapeSerializer.d.ts new file mode 100644 index 000000000..387f21919 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/ToStringShapeSerializer.d.ts @@ -0,0 +1,14 @@ +import { CodecSettings, Schema, ShapeSerializer } from "@smithy/types"; +import { SerdeContext } from "../SerdeContext"; +/** + * Serializes a shape to string. + * + * @public + */ +export declare class ToStringShapeSerializer extends SerdeContext implements ShapeSerializer { + private settings; + private stringBuffer; + constructor(settings: CodecSettings); + write(schema: Schema, value: unknown): void; + flush(): string; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/determineTimestampFormat.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/determineTimestampFormat.d.ts new file mode 100644 index 000000000..66f2cc5b8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/determineTimestampFormat.d.ts @@ -0,0 +1,9 @@ +import { NormalizedSchema } from "@smithy/core/schema"; +import { CodecSettings, TimestampDateTimeSchema, TimestampEpochSecondsSchema, TimestampHttpDateSchema } from "@smithy/types"; +/** + * Assuming the schema is a timestamp type, the function resolves the format using + * either the timestamp's own traits, or the default timestamp format from the CodecSettings. + * + * @internal + */ +export declare function determineTimestampFormat(ns: NormalizedSchema, settings: CodecSettings): TimestampDateTimeSchema | TimestampHttpDateSchema | TimestampEpochSecondsSchema; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/TypeRegistry.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/TypeRegistry.d.ts new file mode 100644 index 000000000..d99a566a5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/TypeRegistry.d.ts @@ -0,0 +1,71 @@ +import { Schema as ISchema, StaticErrorSchema } from "@smithy/types"; +import { ErrorSchema } from "./schemas/ErrorSchema"; +/** + * A way to look up schema by their ShapeId values. + * + * @public + */ +export declare class TypeRegistry { + readonly namespace: string; + private schemas; + private exceptions; + static readonly registries: Map; + private constructor(); + /** + * @param namespace - specifier. + * @returns the schema for that namespace, creating it if necessary. + */ + static for(namespace: string): TypeRegistry; + /** + * Copies entries from another instance without changing the namespace of self. + * The composition is additive but non-destructive and will not overwrite existing entries. + * + * @param other - another TypeRegistry. + */ + copyFrom(other: TypeRegistry): void; + /** + * Adds the given schema to a type registry with the same namespace, and this registry. + * + * @param shapeId - to be registered. + * @param schema - to be registered. + */ + register(shapeId: string, schema: ISchema): void; + /** + * @param shapeId - query. + * @returns the schema. + */ + getSchema(shapeId: string): ISchema; + /** + * Associates an error schema with its constructor. + */ + registerError(es: ErrorSchema | StaticErrorSchema, ctor: any): void; + /** + * @param es - query. + * @returns Error constructor that extends the service's base exception. + */ + getErrorCtor(es: ErrorSchema | StaticErrorSchema): any; + /** + * The smithy-typescript code generator generates a synthetic (i.e. unmodeled) base exception, + * because generated SDKs before the introduction of schemas have the notion of a ServiceBaseException, which + * is unique per service/model. + * + * This is generated under a unique prefix that is combined with the service namespace, and this + * method is used to retrieve it. + * + * The base exception synthetic schema is used when an error is returned by a service, but we cannot + * determine what existing schema to use to deserialize it. + * + * @returns the synthetic base exception of the service namespace associated with this registry instance. + */ + getBaseException(): StaticErrorSchema | undefined; + /** + * @param predicate - criterion. + * @returns a schema in this registry matching the predicate. + */ + find(predicate: (schema: ISchema) => boolean): ISchema | undefined; + /** + * Unloads the current TypeRegistry. + */ + clear(): void; + private normalizeShapeId; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/deref.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/deref.d.ts new file mode 100644 index 000000000..4e6851579 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/deref.d.ts @@ -0,0 +1,6 @@ +import { Schema, SchemaRef } from "@smithy/types"; +/** + * Dereferences a SchemaRef if needed. + * @internal + */ +export declare const deref: (schemaRef: SchemaRef) => Schema; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/index.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/index.d.ts new file mode 100644 index 000000000..fe9508c3d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/index.d.ts @@ -0,0 +1,14 @@ +export * from "./deref"; +export * from "./middleware/getSchemaSerdePlugin"; +export * from "./schemas/ListSchema"; +export * from "./schemas/MapSchema"; +export * from "./schemas/OperationSchema"; +export * from "./schemas/operation"; +export * from "./schemas/ErrorSchema"; +export * from "./schemas/NormalizedSchema"; +export * from "./schemas/Schema"; +export * from "./schemas/SimpleSchema"; +export * from "./schemas/StructureSchema"; +export * from "./schemas/sentinels"; +export * from "./schemas/translateTraits"; +export * from "./TypeRegistry"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/getSchemaSerdePlugin.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/getSchemaSerdePlugin.d.ts new file mode 100644 index 000000000..7311eb3a9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/getSchemaSerdePlugin.d.ts @@ -0,0 +1,14 @@ +import { DeserializeHandlerOptions, MetadataBearer, Pluggable, SerializeHandlerOptions } from "@smithy/types"; +import { PreviouslyResolved } from "./schema-middleware-types"; +/** + * @internal + */ +export declare const deserializerMiddlewareOption: DeserializeHandlerOptions; +/** + * @internal + */ +export declare const serializerMiddlewareOption: SerializeHandlerOptions; +/** + * @internal + */ +export declare function getSchemaSerdePlugin(config: PreviouslyResolved): Pluggable; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/schema-middleware-types.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/schema-middleware-types.d.ts new file mode 100644 index 000000000..8cf66315e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/schema-middleware-types.d.ts @@ -0,0 +1,11 @@ +import { ClientProtocol, SerdeContext, UrlParser } from "@smithy/types"; +/** + * @internal + */ +export type PreviouslyResolved = Pick; +}, Exclude; +}), "endpoint">>; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/schemaDeserializationMiddleware.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/schemaDeserializationMiddleware.d.ts new file mode 100644 index 000000000..3f1cacea6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/schemaDeserializationMiddleware.d.ts @@ -0,0 +1,9 @@ +import { DeserializeHandler, DeserializeHandlerArguments, HandlerExecutionContext } from "@smithy/types"; +import { PreviouslyResolved } from "./schema-middleware-types"; +/** + * @internal + */ +export declare const schemaDeserializationMiddleware: (config: PreviouslyResolved) => (next: DeserializeHandler, context: HandlerExecutionContext) => (args: DeserializeHandlerArguments) => Promise<{ + response: unknown; + output: O; +}>; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/schemaSerializationMiddleware.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/schemaSerializationMiddleware.d.ts new file mode 100644 index 000000000..ecb819820 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/schemaSerializationMiddleware.d.ts @@ -0,0 +1,6 @@ +import { HandlerExecutionContext, SerializeHandler, SerializeHandlerArguments } from "@smithy/types"; +import { PreviouslyResolved } from "./schema-middleware-types"; +/** + * @internal + */ +export declare const schemaSerializationMiddleware: (config: PreviouslyResolved) => (next: SerializeHandler, context: HandlerExecutionContext) => (args: SerializeHandlerArguments) => Promise>; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/ErrorSchema.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/ErrorSchema.d.ts new file mode 100644 index 000000000..348f1c990 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/ErrorSchema.d.ts @@ -0,0 +1,37 @@ +import { SchemaRef, SchemaTraits } from "@smithy/types"; +import { StructureSchema } from "./StructureSchema"; +/** + * A schema for a structure shape having the error trait. These represent enumerated operation errors. + * Because Smithy-TS SDKs use classes for exceptions, whereas plain objects are used for all other data, + * and have an existing notion of a XYZServiceBaseException, the ErrorSchema differs from a StructureSchema + * by additionally holding the class reference for the corresponding ServiceException class. + * + * @internal + * @deprecated use StaticSchema + */ +export declare class ErrorSchema extends StructureSchema { + static readonly symbol: unique symbol; + /** + * @deprecated - field unused. + */ + ctor: any; + protected readonly symbol: symbol; +} +/** + * Factory for ErrorSchema, to reduce codegen output and register the schema. + * + * @internal + * @deprecated use StaticSchema + * + * @param namespace - shapeId namespace. + * @param name - shapeId name. + * @param traits - shape level serde traits. + * @param memberNames - list of member names. + * @param memberList - list of schemaRef corresponding to each + * @param ctor - class reference for the existing Error extending class. + */ +export declare const error: (namespace: string, name: string, traits: SchemaTraits, memberNames: string[], memberList: SchemaRef[], +/** + * @deprecated - field unused. + */ +ctor?: any) => ErrorSchema; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/ListSchema.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/ListSchema.d.ts new file mode 100644 index 000000000..353ec2401 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/ListSchema.d.ts @@ -0,0 +1,23 @@ +import { ListSchema as IListSchema, SchemaRef, SchemaTraits } from "@smithy/types"; +import { Schema } from "./Schema"; +/** + * A schema with a single member schema. + * The deprecated Set type may be represented as a list. + * + * @internal + * @deprecated use StaticSchema + */ +export declare class ListSchema extends Schema implements IListSchema { + static readonly symbol: unique symbol; + name: string; + traits: SchemaTraits; + valueSchema: SchemaRef; + protected readonly symbol: symbol; +} +/** + * Factory for ListSchema. + * + * @internal + * @deprecated use StaticSchema + */ +export declare const list: (namespace: string, name: string, traits: SchemaTraits, valueSchema: SchemaRef) => ListSchema; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/MapSchema.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/MapSchema.d.ts new file mode 100644 index 000000000..db37774c8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/MapSchema.d.ts @@ -0,0 +1,24 @@ +import { MapSchema as IMapSchema, SchemaRef, SchemaTraits } from "@smithy/types"; +import { Schema } from "./Schema"; +/** + * A schema with a key schema and value schema. + * @internal + * @deprecated use StaticSchema + */ +export declare class MapSchema extends Schema implements IMapSchema { + static readonly symbol: unique symbol; + name: string; + traits: SchemaTraits; + /** + * This is expected to be StringSchema, but may have traits. + */ + keySchema: SchemaRef; + valueSchema: SchemaRef; + protected readonly symbol: symbol; +} +/** + * Factory for MapSchema. + * @internal + * @deprecated use StaticSchema + */ +export declare const map: (namespace: string, name: string, traits: SchemaTraits, keySchema: SchemaRef, valueSchema: SchemaRef) => MapSchema; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/NormalizedSchema.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/NormalizedSchema.d.ts new file mode 100644 index 000000000..ca95e2ee0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/NormalizedSchema.d.ts @@ -0,0 +1,146 @@ +import { $MemberSchema, $Schema, $SchemaRef, NormalizedSchema as INormalizedSchema, SchemaRef, SchemaTraitsObject, StaticSchema } from "@smithy/types"; +/** + * Cache for numeric schemaRef. Having separate cache objects for number/string improves + * lookup performance. + * @internal + */ +export declare const simpleSchemaCacheN: Array; +/** + * Cache for string schemaRef. + * @internal + */ +export declare const simpleSchemaCacheS: Record; +/** + * Wraps both class instances, numeric sentinel values, and member schema pairs. + * Presents a consistent interface for interacting with polymorphic schema representations. + * + * @public + */ +export declare class NormalizedSchema implements INormalizedSchema { + readonly ref: $SchemaRef; + private readonly memberName?; + static readonly symbol: unique symbol; + protected readonly symbol: symbol; + private readonly name; + private readonly schema; + private readonly _isMemberSchema; + private readonly traits; + private readonly memberTraits; + private normalizedTraits?; + /** + * @param ref - a polymorphic SchemaRef to be dereferenced/normalized. + * @param memberName - optional memberName if this NormalizedSchema should be considered a member schema. + */ + private constructor(); + static [Symbol.hasInstance](lhs: unknown): lhs is NormalizedSchema; + /** + * Static constructor that attempts to avoid wrapping a NormalizedSchema within another. + */ + static of(ref: SchemaRef | $SchemaRef): NormalizedSchema; + /** + * @returns the underlying non-normalized schema. + */ + getSchema(): Exclude<$Schema, $MemberSchema | INormalizedSchema>; + /** + * @param withNamespace - qualifies the name. + * @returns e.g. `MyShape` or `com.namespace#MyShape`. + */ + getName(withNamespace?: boolean): string | undefined; + /** + * @returns the member name if the schema is a member schema. + */ + getMemberName(): string; + isMemberSchema(): boolean; + /** + * boolean methods on this class help control flow in shape serialization and deserialization. + */ + isListSchema(): boolean; + isMapSchema(): boolean; + /** + * To simplify serialization logic, static union schemas are considered a specialization + * of structs in the TypeScript typings and JS runtime, as well as static error schemas + * which have a different identifier. + */ + isStructSchema(): boolean; + isUnionSchema(): boolean; + isBlobSchema(): boolean; + isTimestampSchema(): boolean; + isUnitSchema(): boolean; + isDocumentSchema(): boolean; + isStringSchema(): boolean; + isBooleanSchema(): boolean; + isNumericSchema(): boolean; + isBigIntegerSchema(): boolean; + isBigDecimalSchema(): boolean; + isStreaming(): boolean; + /** + * @returns whether the schema has the idempotencyToken trait. + */ + isIdempotencyToken(): boolean; + /** + * @returns own traits merged with member traits, where member traits of the same trait key take priority. + * This method is cached. + */ + getMergedTraits(): SchemaTraitsObject; + /** + * @returns only the member traits. If the schema is not a member, this returns empty. + */ + getMemberTraits(): SchemaTraitsObject; + /** + * @returns only the traits inherent to the shape or member target shape if this schema is a member. + * If there are any member traits they are excluded. + */ + getOwnTraits(): SchemaTraitsObject; + /** + * @returns the map's key's schema. Returns a dummy Document schema if this schema is a Document. + * + * @throws Error if the schema is not a Map or Document. + */ + getKeySchema(): NormalizedSchema; + /** + * @returns the schema of the map's value or list's member. + * Returns a dummy Document schema if this schema is a Document. + * + * @throws Error if the schema is not a Map, List, nor Document. + */ + getValueSchema(): NormalizedSchema; + /** + * @returns the NormalizedSchema for the given member name. The returned instance will return true for `isMemberSchema()` + * and will have the member name given. + * @param memberName - which member to retrieve and wrap. + * + * @throws Error if member does not exist or the schema is neither a document nor structure. + * Note that errors are assumed to be structures and unions are considered structures for these purposes. + */ + getMemberSchema(memberName: string): NormalizedSchema; + /** + * This can be used for checking the members as a hashmap. + * Prefer the structIterator method for iteration. + * + * This does NOT return list and map members, it is only for structures. + * + * @deprecated use (checked) structIterator instead. + * + * @returns a map of member names to member schemas (normalized). + */ + getMemberSchemas(): Record; + /** + * @returns member name of event stream or empty string indicating none exists or this + * isn't a structure schema. + */ + getEventStreamMember(): string; + /** + * Allows iteration over members of a structure schema. + * Each yield is a pair of the member name and member schema. + * + * This avoids the overhead of calling Object.entries(ns.getMemberSchemas()). + */ + structIterator(): Generator<[ + string, + NormalizedSchema + ], undefined, undefined>; +} +/** + * @internal + */ +export declare const isStaticSchema: (sc: SchemaRef) => sc is StaticSchema; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/OperationSchema.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/OperationSchema.d.ts new file mode 100644 index 000000000..c37c20d55 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/OperationSchema.d.ts @@ -0,0 +1,23 @@ +import { OperationSchema as IOperationSchema, SchemaRef, SchemaTraits } from "@smithy/types"; +import { Schema } from "./Schema"; +/** + * This is used as a reference container for the input/output pair of schema, and for trait + * detection on the operation that may affect client protocol logic. + * + * @internal + * @deprecated use StaticSchema + */ +export declare class OperationSchema extends Schema implements IOperationSchema { + static readonly symbol: unique symbol; + name: string; + traits: SchemaTraits; + input: SchemaRef; + output: SchemaRef; + protected readonly symbol: symbol; +} +/** + * Factory for OperationSchema. + * @internal + * @deprecated use StaticSchema + */ +export declare const op: (namespace: string, name: string, traits: SchemaTraits, input: SchemaRef, output: SchemaRef) => OperationSchema; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/Schema.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/Schema.d.ts new file mode 100644 index 000000000..9c9fceea6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/Schema.d.ts @@ -0,0 +1,16 @@ +import { SchemaTraits, TraitsSchema } from "@smithy/types"; +/** + * Abstract base for class-based Schema except NormalizedSchema. + * + * @internal + * @deprecated use StaticSchema + */ +export declare abstract class Schema implements TraitsSchema { + name: string; + namespace: string; + traits: SchemaTraits; + protected abstract readonly symbol: symbol; + static assign(instance: T, values: Pick>): T; + static [Symbol.hasInstance](lhs: unknown): boolean; + getName(): string; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/SimpleSchema.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/SimpleSchema.d.ts new file mode 100644 index 000000000..6c1e0b70a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/SimpleSchema.d.ts @@ -0,0 +1,28 @@ +import { SchemaRef, SchemaTraits, TraitsSchema } from "@smithy/types"; +import { Schema } from "./Schema"; +/** + * Although numeric values exist for most simple schema, this class is used for cases where traits are + * attached to those schema, since a single number cannot easily represent both a schema and its traits. + * + * @internal + * @deprecated use StaticSchema + */ +export declare class SimpleSchema extends Schema implements TraitsSchema { + static readonly symbol: unique symbol; + name: string; + schemaRef: SchemaRef; + traits: SchemaTraits; + protected readonly symbol: symbol; +} +/** + * Factory for simple schema class objects. + * + * @internal + * @deprecated use StaticSchema + */ +export declare const sim: (namespace: string, name: string, schemaRef: SchemaRef, traits: SchemaTraits) => SimpleSchema; +/** + * @internal + * @deprecated + */ +export declare const simAdapter: (namespace: string, name: string, traits: SchemaTraits, schemaRef: SchemaRef) => SimpleSchema; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/StructureSchema.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/StructureSchema.d.ts new file mode 100644 index 000000000..2c4c9620e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/StructureSchema.d.ts @@ -0,0 +1,23 @@ +import { SchemaRef, SchemaTraits, StructureSchema as IStructureSchema } from "@smithy/types"; +import { Schema } from "./Schema"; +/** + * A structure schema has a known list of members. This is also used for unions. + * + * @internal + * @deprecated use StaticSchema + */ +export declare class StructureSchema extends Schema implements IStructureSchema { + static symbol: symbol; + name: string; + traits: SchemaTraits; + memberNames: string[]; + memberList: SchemaRef[]; + protected readonly symbol: symbol; +} +/** + * Factory for StructureSchema. + * + * @internal + * @deprecated use StaticSchema + */ +export declare const struct: (namespace: string, name: string, traits: SchemaTraits, memberNames: string[], memberList: SchemaRef[]) => StructureSchema; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/operation.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/operation.d.ts new file mode 100644 index 000000000..efa902442 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/operation.d.ts @@ -0,0 +1,7 @@ +import { OperationSchema, SchemaRef, SchemaTraits } from "@smithy/types"; +/** + * Converts the static schema array into an object-form to adapt + * to the signature of ClientProtocol classes. + * @internal + */ +export declare const operation: (namespace: string, name: string, traits: SchemaTraits, input: SchemaRef, output: SchemaRef) => OperationSchema; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/sentinels.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/sentinels.d.ts new file mode 100644 index 000000000..9586a8b24 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/sentinels.d.ts @@ -0,0 +1,23 @@ +import { BigDecimalSchema, BigIntegerSchema, BlobSchema, BooleanSchema, DocumentSchema, ListSchemaModifier, MapSchemaModifier, NumericSchema, StreamingBlobSchema, StringSchema, TimestampDateTimeSchema, TimestampDefaultSchema, TimestampEpochSecondsSchema, TimestampHttpDateSchema } from "@smithy/types"; +/** + * Schema sentinel runtime values. + * @internal + * + * @deprecated use inline numbers with type annotation to save space. + */ +export declare const SCHEMA: { + BLOB: BlobSchema; + STREAMING_BLOB: StreamingBlobSchema; + BOOLEAN: BooleanSchema; + STRING: StringSchema; + NUMERIC: NumericSchema; + BIG_INTEGER: BigIntegerSchema; + BIG_DECIMAL: BigDecimalSchema; + DOCUMENT: DocumentSchema; + TIMESTAMP_DEFAULT: TimestampDefaultSchema; + TIMESTAMP_DATE_TIME: TimestampDateTimeSchema; + TIMESTAMP_HTTP_DATE: TimestampHttpDateSchema; + TIMESTAMP_EPOCH_SECONDS: TimestampEpochSecondsSchema; + LIST_MODIFIER: ListSchemaModifier; + MAP_MODIFIER: MapSchemaModifier; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/translateTraits.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/translateTraits.d.ts new file mode 100644 index 000000000..ada70de8d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/translateTraits.d.ts @@ -0,0 +1,13 @@ +import { SchemaTraits, SchemaTraitsObject } from "@smithy/types"; +/** + * Module-level cache for translateTraits() numeric bitmask inputs. + * + * @internal + */ +export declare const traitsCache: SchemaTraitsObject[]; +/** + * @internal + * @param indicator - numeric indicator for preset trait combination. + * @returns equivalent trait object. + */ +export declare function translateTraits(indicator: SchemaTraits): SchemaTraitsObject; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/copyDocumentWithTransform.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/copyDocumentWithTransform.d.ts new file mode 100644 index 000000000..15ec2e998 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/copyDocumentWithTransform.d.ts @@ -0,0 +1,6 @@ +import { SchemaRef } from "@smithy/types"; +/** + * @internal + * @deprecated the former functionality has been internalized to the CborCodec. + */ +export declare const copyDocumentWithTransform: (source: any, schemaRef: SchemaRef, transform?: (_: any, schemaRef: SchemaRef) => any) => any; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/date-utils.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/date-utils.d.ts new file mode 100644 index 000000000..99c55f45b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/date-utils.d.ts @@ -0,0 +1,73 @@ +/** + * @internal + * + * Builds a proper UTC HttpDate timestamp from a Date object + * since not all environments will have this as the expected + * format. + * + * @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toUTCString} + * - Prior to ECMAScript 2018, the format of the return value + * - varied according to the platform. The most common return + * - value was an RFC-1123 formatted date stamp, which is a + * - slightly updated version of RFC-822 date stamps. + */ +export declare function dateToUtcString(date: Date): string; +/** + * @internal + * + * Parses a value into a Date. Returns undefined if the input is null or + * undefined, throws an error if the input is not a string that can be parsed + * as an RFC 3339 date. + * + * Input strings must conform to RFC3339 section 5.6, and cannot have a UTC + * offset. Fractional precision is supported. + * + * @see {@link https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14} + * + * @param value - the value to parse + * @returns a Date or undefined + */ +export declare const parseRfc3339DateTime: (value: unknown) => Date | undefined; +/** + * @internal + * + * Parses a value into a Date. Returns undefined if the input is null or + * undefined, throws an error if the input is not a string that can be parsed + * as an RFC 3339 date. + * + * Input strings must conform to RFC3339 section 5.6, and can have a UTC + * offset. Fractional precision is supported. + * + * @see {@link https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14} + * + * @param value - the value to parse + * @returns a Date or undefined + */ +export declare const parseRfc3339DateTimeWithOffset: (value: unknown) => Date | undefined; +/** + * @internal + * + * Parses a value into a Date. Returns undefined if the input is null or + * undefined, throws an error if the input is not a string that can be parsed + * as an RFC 7231 IMF-fixdate or obs-date. + * + * Input strings must conform to RFC7231 section 7.1.1.1. Fractional seconds are supported. + * + * @see {@link https://datatracker.ietf.org/doc/html/rfc7231.html#section-7.1.1.1} + * + * @param value - the value to parse + * @returns a Date or undefined + */ +export declare const parseRfc7231DateTime: (value: unknown) => Date | undefined; +/** + * @internal + * + * Parses a value into a Date. Returns undefined if the input is null or + * undefined, throws an error if the input is not a number or a parseable string. + * + * Input strings must be an integer or floating point number. Fractional seconds are supported. + * + * @param value - the value to parse + * @returns a Date or undefined + */ +export declare const parseEpochTimestamp: (value: unknown) => Date | undefined; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/generateIdempotencyToken.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/generateIdempotencyToken.d.ts new file mode 100644 index 000000000..69ef1f22b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/generateIdempotencyToken.d.ts @@ -0,0 +1,2 @@ +import { v4 as generateIdempotencyToken } from "@smithy/uuid"; +export { generateIdempotencyToken }; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/index.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/index.d.ts new file mode 100644 index 000000000..421ec8ea1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/index.d.ts @@ -0,0 +1,10 @@ +export * from "./copyDocumentWithTransform"; +export * from "./date-utils"; +export * from "./generateIdempotencyToken"; +export * from "./lazy-json"; +export * from "./parse-utils"; +export * from "./quote-header"; +export * from "./schema-serde-lib/schema-date-utils"; +export * from "./split-every"; +export * from "./split-header"; +export * from "./value/NumericValue"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/lazy-json.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/lazy-json.d.ts new file mode 100644 index 000000000..0b682ee9b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/lazy-json.d.ts @@ -0,0 +1,45 @@ +/** + * @public + * + * A model field with this type means that you may provide a JavaScript + * object in lieu of a JSON string, and it will be serialized to JSON + * automatically before being sent in a request. + * + * For responses, you will receive a "LazyJsonString", which is a boxed String object + * with additional mixin methods. + * To get the string value, call `.toString()`, or to get the JSON object value, + * call `.deserializeJSON()` or parse it yourself. + */ +export type AutomaticJsonStringConversion = Parameters[0] | LazyJsonString; +/** + * @internal + */ +export interface LazyJsonString extends String { + /** + * @returns the JSON parsing of the string value. + */ + deserializeJSON(): any; + /** + * @returns the original string value rather than a JSON.stringified value. + */ + toJSON(): string; +} +/** + * @internal + * + * Extension of the native String class in the previous implementation + * has negative global performance impact on method dispatch for strings, + * and is generally discouraged. + * + * This current implementation may look strange, but is necessary to preserve the interface and + * behavior of extending the String class. + */ +export declare const LazyJsonString: { + new (s: string): LazyJsonString; + (s: string): LazyJsonString; + from(s: any): LazyJsonString; + /** + * @deprecated use #from. + */ + fromObject(s: any): LazyJsonString; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/parse-utils.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/parse-utils.d.ts new file mode 100644 index 000000000..b5ded6f65 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/parse-utils.d.ts @@ -0,0 +1,270 @@ +/** + * @internal + * + * Give an input string, strictly parses a boolean value. + * + * @param value - The boolean string to parse. + * @returns true for "true", false for "false", otherwise an error is thrown. + */ +export declare const parseBoolean: (value: string) => boolean; +/** + * @internal + * + * Asserts a value is a boolean and returns it. + * Casts strings and numbers with a warning if there is evidence that they were + * intended to be booleans. + * + * @param value - A value that is expected to be a boolean. + * @returns The value if it's a boolean, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectBoolean: (value: any) => boolean | undefined; +/** + * @internal + * + * Asserts a value is a number and returns it. + * Casts strings with a warning if the string is a parseable number. + * This is to unblock slight API definition/implementation inconsistencies. + * + * @param value - A value that is expected to be a number. + * @returns The value if it's a number, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectNumber: (value: any) => number | undefined; +/** + * @internal + * + * Asserts a value is a 32-bit float and returns it. + * + * @param value - A value that is expected to be a 32-bit float. + * @returns The value if it's a float, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectFloat32: (value: any) => number | undefined; +/** + * @internal + * + * Asserts a value is an integer and returns it. + * + * @param value - A value that is expected to be an integer. + * @returns The value if it's an integer, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectLong: (value: any) => number | undefined; +/** + * @internal + * + * @deprecated Use expectLong + */ +export declare const expectInt: (value: any) => number | undefined; +/** + * @internal + * + * Asserts a value is a 32-bit integer and returns it. + * + * @param value - A value that is expected to be an integer. + * @returns The value if it's an integer, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectInt32: (value: any) => number | undefined; +/** + * @internal + * + * Asserts a value is a 16-bit integer and returns it. + * + * @param value - A value that is expected to be an integer. + * @returns The value if it's an integer, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectShort: (value: any) => number | undefined; +/** + * @internal + * + * Asserts a value is an 8-bit integer and returns it. + * + * @param value - A value that is expected to be an integer. + * @returns The value if it's an integer, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectByte: (value: any) => number | undefined; +/** + * @internal + * + * Asserts a value is not null or undefined and returns it, or throws an error. + * + * @param value - A value that is expected to be defined + * @param location - The location where we're expecting to find a defined object (optional) + * @returns The value if it's not undefined, otherwise throws an error + */ +export declare const expectNonNull: (value: T | null | undefined, location?: string) => T; +/** + * @internal + * + * Asserts a value is an JSON-like object and returns it. This is expected to be used + * with values parsed from JSON (arrays, objects, numbers, strings, booleans). + * + * @param value - A value that is expected to be an object + * @returns The value if it's an object, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectObject: (value: any) => Record | undefined; +/** + * @internal + * + * Asserts a value is a string and returns it. + * Numbers and boolean will be cast to strings with a warning. + * + * @param value - A value that is expected to be a string. + * @returns The value if it's a string, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectString: (value: any) => string | undefined; +/** + * @internal + * + * Asserts a value is a JSON-like object with only one non-null/non-undefined key and + * returns it. + * + * @param value - A value that is expected to be an object with exactly one non-null, + * non-undefined key. + * @returns the value if it's a union, undefined if it's null/undefined, otherwise + * an error is thrown. + */ +export declare const expectUnion: (value: unknown) => Record | undefined; +/** + * @internal + * + * Parses a value into a double. If the value is null or undefined, undefined + * will be returned. If the value is a string, it will be parsed by the standard + * parseFloat with one exception: NaN may only be explicitly set as the string + * "NaN", any implicit Nan values will result in an error being thrown. If any + * other type is provided, an exception will be thrown. + * + * @param value - A number or string representation of a double. + * @returns The value as a number, or undefined if it's null/undefined. + */ +export declare const strictParseDouble: (value: string | number) => number | undefined; +/** + * @internal + * + * @deprecated Use strictParseDouble + */ +export declare const strictParseFloat: (value: string | number) => number | undefined; +/** + * @internal + * + * Parses a value into a float. If the value is null or undefined, undefined + * will be returned. If the value is a string, it will be parsed by the standard + * parseFloat with one exception: NaN may only be explicitly set as the string + * "NaN", any implicit Nan values will result in an error being thrown. If any + * other type is provided, an exception will be thrown. + * + * @param value - A number or string representation of a float. + * @returns The value as a number, or undefined if it's null/undefined. + */ +export declare const strictParseFloat32: (value: string | number) => number | undefined; +/** + * @internal + * + * Asserts a value is a number and returns it. If the value is a string + * representation of a non-numeric number type (NaN, Infinity, -Infinity), + * the value will be parsed. Any other string value will result in an exception + * being thrown. Null or undefined will be returned as undefined. Any other + * type will result in an exception being thrown. + * + * @param value - A number or string representation of a non-numeric float. + * @returns The value as a number, or undefined if it's null/undefined. + */ +export declare const limitedParseDouble: (value: string | number) => number | undefined; +/** + * @internal + * + * @deprecated Use limitedParseDouble + */ +export declare const handleFloat: (value: string | number) => number | undefined; +/** + * @internal + * + * @deprecated Use limitedParseDouble + */ +export declare const limitedParseFloat: (value: string | number) => number | undefined; +/** + * @internal + * + * Asserts a value is a 32-bit float and returns it. If the value is a string + * representation of a non-numeric number type (NaN, Infinity, -Infinity), + * the value will be parsed. Any other string value will result in an exception + * being thrown. Null or undefined will be returned as undefined. Any other + * type will result in an exception being thrown. + * + * @param value - A number or string representation of a non-numeric float. + * @returns The value as a number, or undefined if it's null/undefined. + */ +export declare const limitedParseFloat32: (value: string | number) => number | undefined; +/** + * @internal + * + * Parses a value into an integer. If the value is null or undefined, undefined + * will be returned. If the value is a string, it will be parsed by parseFloat + * and the result will be asserted to be an integer. If the parsed value is not + * an integer, or the raw value is any type other than a string or number, an + * exception will be thrown. + * + * @param value - A number or string representation of an integer. + * @returns The value as a number, or undefined if it's null/undefined. + */ +export declare const strictParseLong: (value: string | number) => number | undefined; +/** + * @internal + * + * @deprecated Use strictParseLong + */ +export declare const strictParseInt: (value: string | number) => number | undefined; +/** + * @internal + * + * Parses a value into a 32-bit integer. If the value is null or undefined, undefined + * will be returned. If the value is a string, it will be parsed by parseFloat + * and the result will be asserted to be an integer. If the parsed value is not + * an integer, or the raw value is any type other than a string or number, an + * exception will be thrown. + * + * @param value - A number or string representation of a 32-bit integer. + * @returns The value as a number, or undefined if it's null/undefined. + */ +export declare const strictParseInt32: (value: string | number) => number | undefined; +/** + * @internal + * + * Parses a value into a 16-bit integer. If the value is null or undefined, undefined + * will be returned. If the value is a string, it will be parsed by parseFloat + * and the result will be asserted to be an integer. If the parsed value is not + * an integer, or the raw value is any type other than a string or number, an + * exception will be thrown. + * + * @param value - A number or string representation of a 16-bit integer. + * @returns The value as a number, or undefined if it's null/undefined. + */ +export declare const strictParseShort: (value: string | number) => number | undefined; +/** + * @internal + * + * Parses a value into an 8-bit integer. If the value is null or undefined, undefined + * will be returned. If the value is a string, it will be parsed by parseFloat + * and the result will be asserted to be an integer. If the parsed value is not + * an integer, or the raw value is any type other than a string or number, an + * exception will be thrown. + * + * @param value - A number or string representation of an 8-bit integer. + * @returns The value as a number, or undefined if it's null/undefined. + */ +export declare const strictParseByte: (value: string | number) => number | undefined; +/** + * @internal + */ +export declare const logger: { + warn: { + (...data: any[]): void; + (message?: any, ...optionalParams: any[]): void; + }; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/quote-header.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/quote-header.d.ts new file mode 100644 index 000000000..73d6c16c0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/quote-header.d.ts @@ -0,0 +1,6 @@ +/** + * @public + * @param part - header list element + * @returns quoted string if part contains delimiter. + */ +export declare function quoteHeader(part: string): string; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/schema-serde-lib/schema-date-utils.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/schema-serde-lib/schema-date-utils.d.ts new file mode 100644 index 000000000..096ac3677 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/schema-serde-lib/schema-date-utils.d.ts @@ -0,0 +1,47 @@ +/** + * @internal + * + * Parses a value into a Date. Returns undefined if the input is null or + * undefined, throws an error if the input is not a number or a parseable string. + * + * Input strings must be an integer or floating point number. Fractional seconds are supported. + * + * @param value - the value to parse + * @returns a Date or undefined + */ +export declare const _parseEpochTimestamp: (value: unknown) => Date | undefined; +/** + * @internal + * + * Parses a value into a Date. Returns undefined if the input is null or + * undefined, throws an error if the input is not a string that can be parsed + * as an RFC 3339 date. + * + * Input strings must conform to RFC3339 section 5.6, and can have a UTC + * offset. Fractional precision is supported. + * + * @see {@link https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14} + * + * @param value - the value to parse + * @returns a Date or undefined + */ +export declare const _parseRfc3339DateTimeWithOffset: (value: unknown) => Date | undefined; +/** + * @internal + * + * Parses a value into a Date. Returns undefined if the input is null or + * undefined, throws an error if the input is not a string that can be parsed + * as an RFC 7231 date. + * + * Input strings must conform to RFC7231 section 7.1.1.1. Fractional seconds are supported. + * + * RFC 850 and unix asctime formats are also accepted. + * todo: practically speaking, are RFC 850 and asctime even used anymore? + * todo: can we remove those parts? + * + * @see {@link https://datatracker.ietf.org/doc/html/rfc7231.html#section-7.1.1.1} + * + * @param value - the value to parse. + * @returns a Date or undefined. + */ +export declare const _parseRfc7231DateTime: (value: unknown) => Date | undefined; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/split-every.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/split-every.d.ts new file mode 100644 index 000000000..45a022917 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/split-every.d.ts @@ -0,0 +1,11 @@ +/** + * @internal + * + * Given an input string, splits based on the delimiter after a given + * number of delimiters has been encountered. + * + * @param value - The input string to split. + * @param delimiter - The delimiter to split on. + * @param numDelimiters - The number of delimiters to have encountered to split. + */ +export declare function splitEvery(value: string, delimiter: string, numDelimiters: number): Array; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/split-header.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/split-header.d.ts new file mode 100644 index 000000000..0f51651e4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/split-header.d.ts @@ -0,0 +1,5 @@ +/** + * @param value - header string value. + * @returns value split by commas that aren't in quotes. + */ +export declare const splitHeader: (value: string) => string[]; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/value/NumericValue.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/value/NumericValue.d.ts new file mode 100644 index 000000000..f9da63d61 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/value/NumericValue.d.ts @@ -0,0 +1,33 @@ +/** + * Types which may be represented by {@link NumericValue}. + * + * There is currently only one option, because BigInteger and Long should + * use JS BigInt directly, and all other numeric types can be contained in JS Number. + * + * @public + */ +export type NumericType = "bigDecimal"; +/** + * Serialization container for Smithy simple types that do not have a + * direct JavaScript runtime representation. + * + * This container does not perform numeric mathematical operations. + * It is a container for discerning a value's true type. + * + * It allows storage of numeric types not representable in JS without + * making a decision on what numeric library to use. + * + * @public + */ +export declare class NumericValue { + readonly string: string; + readonly type: NumericType; + constructor(string: string, type: NumericType); + toString(): string; + static [Symbol.hasInstance](object: unknown): boolean; +} +/** + * Serde shortcut. + * @internal + */ +export declare function nv(input: string | unknown): NumericValue; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/DefaultIdentityProviderConfig.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/DefaultIdentityProviderConfig.d.ts new file mode 100644 index 000000000..0b3920423 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/DefaultIdentityProviderConfig.d.ts @@ -0,0 +1,15 @@ +import { HttpAuthSchemeId, Identity, IdentityProvider, IdentityProviderConfig } from "@smithy/types"; +/** + * Default implementation of IdentityProviderConfig + * @internal + */ +export declare class DefaultIdentityProviderConfig implements IdentityProviderConfig { + private authSchemes; + /** + * Creates an IdentityProviderConfig with a record of scheme IDs to identity providers. + * + * @param config scheme IDs and identity providers to configure + */ + constructor(config: Record | undefined>); + getIdentityProvider(schemeId: HttpAuthSchemeId): IdentityProvider | undefined; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.d.ts new file mode 100644 index 000000000..63de4bc4e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.d.ts @@ -0,0 +1,8 @@ +import { HttpRequest } from "@smithy/protocol-http"; +import { ApiKeyIdentity, HttpRequest as IHttpRequest, HttpSigner } from "@smithy/types"; +/** + * @internal + */ +export declare class HttpApiKeyAuthSigner implements HttpSigner { + sign(httpRequest: HttpRequest, identity: ApiKeyIdentity, signingProperties: Record): Promise; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.d.ts new file mode 100644 index 000000000..0e31e7df0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.d.ts @@ -0,0 +1,8 @@ +import { HttpRequest } from "@smithy/protocol-http"; +import { HttpRequest as IHttpRequest, HttpSigner, TokenIdentity } from "@smithy/types"; +/** + * @internal + */ +export declare class HttpBearerAuthSigner implements HttpSigner { + sign(httpRequest: HttpRequest, identity: TokenIdentity, signingProperties: Record): Promise; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/index.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/index.d.ts new file mode 100644 index 000000000..9d240feb1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/index.d.ts @@ -0,0 +1,3 @@ +export * from "./httpApiKeyAuth"; +export * from "./httpBearerAuth"; +export * from "./noAuth"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/noAuth.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/noAuth.d.ts new file mode 100644 index 000000000..fc8d6b1ce --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/noAuth.d.ts @@ -0,0 +1,8 @@ +import { HttpRequest, HttpSigner, Identity } from "@smithy/types"; +/** + * Signer for the synthetic @smithy.api#noAuth auth scheme. + * @internal + */ +export declare class NoAuthSigner implements HttpSigner { + sign(httpRequest: HttpRequest, identity: Identity, signingProperties: Record): Promise; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/index.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/index.d.ts new file mode 100644 index 000000000..87ba64ba6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/index.d.ts @@ -0,0 +1,3 @@ +export * from "./DefaultIdentityProviderConfig"; +export * from "./httpAuthSchemes"; +export * from "./memoizeIdentityProvider"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/memoizeIdentityProvider.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/memoizeIdentityProvider.d.ts new file mode 100644 index 000000000..67b3be838 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/memoizeIdentityProvider.d.ts @@ -0,0 +1,30 @@ +import { Identity, IdentityProvider } from "@smithy/types"; +/** + * @internal + */ +export declare const createIsIdentityExpiredFunction: (expirationMs: number) => (identity: Identity) => boolean; +/** + * @internal + * This may need to be configurable in the future, but for now it is defaulted to 5min. + */ +export declare const EXPIRATION_MS = 300000; +/** + * @internal + */ +export declare const isIdentityExpired: (identity: Identity) => boolean; +/** + * @internal + */ +export declare const doesIdentityRequireRefresh: (identity: Identity) => boolean; +/** + * @internal + */ +export interface MemoizedIdentityProvider { + (options?: Record & { + forceRefresh?: boolean; + }): Promise; +} +/** + * @internal + */ +export declare const memoizeIdentityProvider: (provider: IdentityT | IdentityProvider | undefined, isExpired: (resolved: Identity) => boolean, requiresRefresh: (resolved: Identity) => boolean) => MemoizedIdentityProvider | undefined; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/util-identity-and-auth/DefaultIdentityProviderConfig.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/util-identity-and-auth/DefaultIdentityProviderConfig.d.ts new file mode 100644 index 000000000..d05d896de --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/util-identity-and-auth/DefaultIdentityProviderConfig.d.ts @@ -0,0 +1,15 @@ +import type { HttpAuthSchemeId, Identity, IdentityProvider, IdentityProviderConfig } from "@smithy/types"; +/** + * Default implementation of IdentityProviderConfig + * @internal + */ +export declare class DefaultIdentityProviderConfig implements IdentityProviderConfig { + private authSchemes; + /** + * Creates an IdentityProviderConfig with a record of scheme IDs to identity providers. + * + * @param config scheme IDs and identity providers to configure + */ + constructor(config: Record | undefined>); + getIdentityProvider(schemeId: HttpAuthSchemeId): IdentityProvider | undefined; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.d.ts new file mode 100644 index 000000000..2401d94bb --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.d.ts @@ -0,0 +1,8 @@ +import { HttpRequest } from "@smithy/protocol-http"; +import type { ApiKeyIdentity, HttpRequest as IHttpRequest, HttpSigner } from "@smithy/types"; +/** + * @internal + */ +export declare class HttpApiKeyAuthSigner implements HttpSigner { + sign(httpRequest: HttpRequest, identity: ApiKeyIdentity, signingProperties: Record): Promise; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.d.ts new file mode 100644 index 000000000..923504b01 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.d.ts @@ -0,0 +1,8 @@ +import { HttpRequest } from "@smithy/protocol-http"; +import type { HttpRequest as IHttpRequest, HttpSigner, TokenIdentity } from "@smithy/types"; +/** + * @internal + */ +export declare class HttpBearerAuthSigner implements HttpSigner { + sign(httpRequest: HttpRequest, identity: TokenIdentity, signingProperties: Record): Promise; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/util-identity-and-auth/httpAuthSchemes/index.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/util-identity-and-auth/httpAuthSchemes/index.d.ts new file mode 100644 index 000000000..9d240feb1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/util-identity-and-auth/httpAuthSchemes/index.d.ts @@ -0,0 +1,3 @@ +export * from "./httpApiKeyAuth"; +export * from "./httpBearerAuth"; +export * from "./noAuth"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/util-identity-and-auth/httpAuthSchemes/noAuth.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/util-identity-and-auth/httpAuthSchemes/noAuth.d.ts new file mode 100644 index 000000000..1b1bab1f8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/util-identity-and-auth/httpAuthSchemes/noAuth.d.ts @@ -0,0 +1,8 @@ +import type { HttpRequest, HttpSigner, Identity } from "@smithy/types"; +/** + * Signer for the synthetic @smithy.api#noAuth auth scheme. + * @internal + */ +export declare class NoAuthSigner implements HttpSigner { + sign(httpRequest: HttpRequest, identity: Identity, signingProperties: Record): Promise; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/util-identity-and-auth/index.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/util-identity-and-auth/index.d.ts new file mode 100644 index 000000000..87ba64ba6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/util-identity-and-auth/index.d.ts @@ -0,0 +1,3 @@ +export * from "./DefaultIdentityProviderConfig"; +export * from "./httpAuthSchemes"; +export * from "./memoizeIdentityProvider"; diff --git a/food-ordering-app/server/node_modules/@smithy/core/dist-types/util-identity-and-auth/memoizeIdentityProvider.d.ts b/food-ordering-app/server/node_modules/@smithy/core/dist-types/util-identity-and-auth/memoizeIdentityProvider.d.ts new file mode 100644 index 000000000..a618afdac --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/dist-types/util-identity-and-auth/memoizeIdentityProvider.d.ts @@ -0,0 +1,30 @@ +import type { Identity, IdentityProvider } from "@smithy/types"; +/** + * @internal + */ +export declare const createIsIdentityExpiredFunction: (expirationMs: number) => (identity: Identity) => boolean; +/** + * @internal + * This may need to be configurable in the future, but for now it is defaulted to 5min. + */ +export declare const EXPIRATION_MS = 300000; +/** + * @internal + */ +export declare const isIdentityExpired: (identity: Identity) => boolean; +/** + * @internal + */ +export declare const doesIdentityRequireRefresh: (identity: Identity) => boolean; +/** + * @internal + */ +export interface MemoizedIdentityProvider { + (options?: Record & { + forceRefresh?: boolean; + }): Promise; +} +/** + * @internal + */ +export declare const memoizeIdentityProvider: (provider: IdentityT | IdentityProvider | undefined, isExpired: (resolved: Identity) => boolean, requiresRefresh: (resolved: Identity) => boolean) => MemoizedIdentityProvider | undefined; diff --git a/food-ordering-app/server/node_modules/@smithy/core/endpoints.d.ts b/food-ordering-app/server/node_modules/@smithy/core/endpoints.d.ts new file mode 100644 index 000000000..fdb2c1506 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/endpoints.d.ts @@ -0,0 +1,7 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +declare module "@smithy/core/endpoints" { + export * from "@smithy/core/dist-types/submodules/endpoints/index.d"; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/endpoints.js b/food-ordering-app/server/node_modules/@smithy/core/endpoints.js new file mode 100644 index 000000000..d1676d89d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/endpoints.js @@ -0,0 +1,6 @@ + +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +module.exports = require("./dist-cjs/submodules/endpoints/index.js"); diff --git a/food-ordering-app/server/node_modules/@smithy/core/event-streams.d.ts b/food-ordering-app/server/node_modules/@smithy/core/event-streams.d.ts new file mode 100644 index 000000000..8637fa8bc --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/event-streams.d.ts @@ -0,0 +1,7 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +declare module "@smithy/core/event-streams" { + export * from "@smithy/core/dist-types/submodules/event-streams/index.d"; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/event-streams.js b/food-ordering-app/server/node_modules/@smithy/core/event-streams.js new file mode 100644 index 000000000..e79eab773 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/event-streams.js @@ -0,0 +1,6 @@ + +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +module.exports = require("./dist-cjs/submodules/event-streams/index.js"); diff --git a/food-ordering-app/server/node_modules/@smithy/core/package.json b/food-ordering-app/server/node_modules/@smithy/core/package.json new file mode 100644 index 000000000..50a932e51 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/package.json @@ -0,0 +1,146 @@ +{ + "name": "@smithy/core", + "version": "3.23.11", + "scripts": { + "build": "yarn lint && concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline core", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "npx eslint -c ../../.eslintrc.js \"src/**/*.ts\" --fix && node ./scripts/lint", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "extract:docs": "api-extractor run --local", + "test:cbor:perf": "node ./scripts/cbor-perf.mjs", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "exports": { + ".": { + "types": "./dist-types/index.d.ts", + "module": "./dist-es/index.js", + "node": "./dist-cjs/index.js", + "import": "./dist-es/index.js", + "require": "./dist-cjs/index.js" + }, + "./package.json": { + "module": "./package.json", + "node": "./package.json", + "import": "./package.json", + "require": "./package.json" + }, + "./cbor": { + "types": "./dist-types/submodules/cbor/index.d.ts", + "module": "./dist-es/submodules/cbor/index.js", + "node": "./dist-cjs/submodules/cbor/index.js", + "import": "./dist-es/submodules/cbor/index.js", + "require": "./dist-cjs/submodules/cbor/index.js" + }, + "./protocols": { + "types": "./dist-types/submodules/protocols/index.d.ts", + "module": "./dist-es/submodules/protocols/index.js", + "node": "./dist-cjs/submodules/protocols/index.js", + "import": "./dist-es/submodules/protocols/index.js", + "require": "./dist-cjs/submodules/protocols/index.js" + }, + "./serde": { + "types": "./dist-types/submodules/serde/index.d.ts", + "module": "./dist-es/submodules/serde/index.js", + "node": "./dist-cjs/submodules/serde/index.js", + "import": "./dist-es/submodules/serde/index.js", + "require": "./dist-cjs/submodules/serde/index.js" + }, + "./schema": { + "types": "./dist-types/submodules/schema/index.d.ts", + "module": "./dist-es/submodules/schema/index.js", + "node": "./dist-cjs/submodules/schema/index.js", + "import": "./dist-es/submodules/schema/index.js", + "require": "./dist-cjs/submodules/schema/index.js" + }, + "./event-streams": { + "types": "./dist-types/submodules/event-streams/index.d.ts", + "module": "./dist-es/submodules/event-streams/index.js", + "node": "./dist-cjs/submodules/event-streams/index.js", + "import": "./dist-es/submodules/event-streams/index.js", + "require": "./dist-cjs/submodules/event-streams/index.js" + }, + "./endpoints": { + "types": "./dist-types/submodules/endpoints/index.d.ts", + "module": "./dist-es/submodules/endpoints/index.js", + "node": "./dist-cjs/submodules/endpoints/index.js", + "import": "./dist-es/submodules/endpoints/index.js", + "require": "./dist-cjs/submodules/endpoints/index.js" + } + }, + "author": { + "name": "AWS Smithy Team", + "email": "", + "url": "https://smithy.io" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-stream": "^4.5.19", + "@smithy/util-utf8": "^4.2.2", + "@smithy/uuid": "^1.1.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "./cbor.d.ts", + "./cbor.js", + "./endpoints.d.ts", + "./endpoints.js", + "./event-streams.d.ts", + "./event-streams.js", + "./protocols.d.ts", + "./protocols.js", + "./schema.d.ts", + "./schema.js", + "./serde.d.ts", + "./serde.js", + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/core", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/core" + }, + "devDependencies": { + "@smithy/eventstream-serde-node": "^4.2.12", + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "json-bigint": "^1.0.0", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/core/protocols.d.ts b/food-ordering-app/server/node_modules/@smithy/core/protocols.d.ts new file mode 100644 index 000000000..e0afd4e85 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/protocols.d.ts @@ -0,0 +1,7 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +declare module "@smithy/core/protocols" { + export * from "@smithy/core/dist-types/submodules/protocols/index.d"; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/protocols.js b/food-ordering-app/server/node_modules/@smithy/core/protocols.js new file mode 100644 index 000000000..43e0c426c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/protocols.js @@ -0,0 +1,6 @@ + +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +module.exports = require("./dist-cjs/submodules/protocols/index.js"); diff --git a/food-ordering-app/server/node_modules/@smithy/core/schema.d.ts b/food-ordering-app/server/node_modules/@smithy/core/schema.d.ts new file mode 100644 index 000000000..e29b35823 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/schema.d.ts @@ -0,0 +1,7 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +declare module "@smithy/core/schema" { + export * from "@smithy/core/dist-types/submodules/schema/index.d"; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/schema.js b/food-ordering-app/server/node_modules/@smithy/core/schema.js new file mode 100644 index 000000000..a5035ded8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/schema.js @@ -0,0 +1,6 @@ + +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +module.exports = require("./dist-cjs/submodules/schema/index.js"); diff --git a/food-ordering-app/server/node_modules/@smithy/core/serde.d.ts b/food-ordering-app/server/node_modules/@smithy/core/serde.d.ts new file mode 100644 index 000000000..9906bb086 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/serde.d.ts @@ -0,0 +1,7 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +declare module "@smithy/core/serde" { + export * from "@smithy/core/dist-types/submodules/serde/index.d"; +} diff --git a/food-ordering-app/server/node_modules/@smithy/core/serde.js b/food-ordering-app/server/node_modules/@smithy/core/serde.js new file mode 100644 index 000000000..b2d727f86 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/core/serde.js @@ -0,0 +1,6 @@ + +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +module.exports = require("./dist-cjs/submodules/serde/index.js"); diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/LICENSE b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/README.md b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/README.md new file mode 100644 index 000000000..9a8f8a533 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/README.md @@ -0,0 +1,11 @@ +# @smithy/credential-provider-imds + +[![NPM version](https://img.shields.io/npm/v/@smithy/credential-provider-imds/latest.svg)](https://www.npmjs.com/package/@smithy/credential-provider-imds) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/credential-provider-imds.svg)](https://www.npmjs.com/package/@smithy/credential-provider-imds) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. Please use [@smithy/credential-providers](https://www.npmjs.com/package/@smithy/credential-providers) +instead. diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-cjs/index.js new file mode 100644 index 000000000..8de0d3f1f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-cjs/index.js @@ -0,0 +1,372 @@ +'use strict'; + +var propertyProvider = require('@smithy/property-provider'); +var url = require('url'); +var buffer = require('buffer'); +var http = require('http'); +var nodeConfigProvider = require('@smithy/node-config-provider'); +var urlParser = require('@smithy/url-parser'); + +function httpRequest(options) { + return new Promise((resolve, reject) => { + const req = http.request({ + method: "GET", + ...options, + hostname: options.hostname?.replace(/^\[(.+)\]$/, "$1"), + }); + req.on("error", (err) => { + reject(Object.assign(new propertyProvider.ProviderError("Unable to connect to instance metadata service"), err)); + req.destroy(); + }); + req.on("timeout", () => { + reject(new propertyProvider.ProviderError("TimeoutError from instance metadata service")); + req.destroy(); + }); + req.on("response", (res) => { + const { statusCode = 400 } = res; + if (statusCode < 200 || 300 <= statusCode) { + reject(Object.assign(new propertyProvider.ProviderError("Error response received from instance metadata service"), { statusCode })); + req.destroy(); + } + const chunks = []; + res.on("data", (chunk) => { + chunks.push(chunk); + }); + res.on("end", () => { + resolve(buffer.Buffer.concat(chunks)); + req.destroy(); + }); + }); + req.end(); + }); +} + +const isImdsCredentials = (arg) => Boolean(arg) && + typeof arg === "object" && + typeof arg.AccessKeyId === "string" && + typeof arg.SecretAccessKey === "string" && + typeof arg.Token === "string" && + typeof arg.Expiration === "string"; +const fromImdsCredentials = (creds) => ({ + accessKeyId: creds.AccessKeyId, + secretAccessKey: creds.SecretAccessKey, + sessionToken: creds.Token, + expiration: new Date(creds.Expiration), + ...(creds.AccountId && { accountId: creds.AccountId }), +}); + +const DEFAULT_TIMEOUT = 1000; +const DEFAULT_MAX_RETRIES = 0; +const providerConfigFromInit = ({ maxRetries = DEFAULT_MAX_RETRIES, timeout = DEFAULT_TIMEOUT, }) => ({ maxRetries, timeout }); + +const retry = (toRetry, maxRetries) => { + let promise = toRetry(); + for (let i = 0; i < maxRetries; i++) { + promise = promise.catch(toRetry); + } + return promise; +}; + +const ENV_CMDS_FULL_URI = "AWS_CONTAINER_CREDENTIALS_FULL_URI"; +const ENV_CMDS_RELATIVE_URI = "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"; +const ENV_CMDS_AUTH_TOKEN = "AWS_CONTAINER_AUTHORIZATION_TOKEN"; +const fromContainerMetadata = (init = {}) => { + const { timeout, maxRetries } = providerConfigFromInit(init); + return () => retry(async () => { + const requestOptions = await getCmdsUri({ logger: init.logger }); + const credsResponse = JSON.parse(await requestFromEcsImds(timeout, requestOptions)); + if (!isImdsCredentials(credsResponse)) { + throw new propertyProvider.CredentialsProviderError("Invalid response received from instance metadata service.", { + logger: init.logger, + }); + } + return fromImdsCredentials(credsResponse); + }, maxRetries); +}; +const requestFromEcsImds = async (timeout, options) => { + if (process.env[ENV_CMDS_AUTH_TOKEN]) { + options.headers = { + ...options.headers, + Authorization: process.env[ENV_CMDS_AUTH_TOKEN], + }; + } + const buffer = await httpRequest({ + ...options, + timeout, + }); + return buffer.toString(); +}; +const CMDS_IP = "169.254.170.2"; +const GREENGRASS_HOSTS = { + localhost: true, + "127.0.0.1": true, +}; +const GREENGRASS_PROTOCOLS = { + "http:": true, + "https:": true, +}; +const getCmdsUri = async ({ logger }) => { + if (process.env[ENV_CMDS_RELATIVE_URI]) { + return { + hostname: CMDS_IP, + path: process.env[ENV_CMDS_RELATIVE_URI], + }; + } + if (process.env[ENV_CMDS_FULL_URI]) { + const parsed = url.parse(process.env[ENV_CMDS_FULL_URI]); + if (!parsed.hostname || !(parsed.hostname in GREENGRASS_HOSTS)) { + throw new propertyProvider.CredentialsProviderError(`${parsed.hostname} is not a valid container metadata service hostname`, { + tryNextLink: false, + logger, + }); + } + if (!parsed.protocol || !(parsed.protocol in GREENGRASS_PROTOCOLS)) { + throw new propertyProvider.CredentialsProviderError(`${parsed.protocol} is not a valid container metadata service protocol`, { + tryNextLink: false, + logger, + }); + } + return { + ...parsed, + port: parsed.port ? parseInt(parsed.port, 10) : undefined, + }; + } + throw new propertyProvider.CredentialsProviderError("The container metadata credential provider cannot be used unless" + + ` the ${ENV_CMDS_RELATIVE_URI} or ${ENV_CMDS_FULL_URI} environment` + + " variable is set", { + tryNextLink: false, + logger, + }); +}; + +class InstanceMetadataV1FallbackError extends propertyProvider.CredentialsProviderError { + tryNextLink; + name = "InstanceMetadataV1FallbackError"; + constructor(message, tryNextLink = true) { + super(message, tryNextLink); + this.tryNextLink = tryNextLink; + Object.setPrototypeOf(this, InstanceMetadataV1FallbackError.prototype); + } +} + +exports.Endpoint = void 0; +(function (Endpoint) { + Endpoint["IPv4"] = "http://169.254.169.254"; + Endpoint["IPv6"] = "http://[fd00:ec2::254]"; +})(exports.Endpoint || (exports.Endpoint = {})); + +const ENV_ENDPOINT_NAME = "AWS_EC2_METADATA_SERVICE_ENDPOINT"; +const CONFIG_ENDPOINT_NAME = "ec2_metadata_service_endpoint"; +const ENDPOINT_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => env[ENV_ENDPOINT_NAME], + configFileSelector: (profile) => profile[CONFIG_ENDPOINT_NAME], + default: undefined, +}; + +var EndpointMode; +(function (EndpointMode) { + EndpointMode["IPv4"] = "IPv4"; + EndpointMode["IPv6"] = "IPv6"; +})(EndpointMode || (EndpointMode = {})); + +const ENV_ENDPOINT_MODE_NAME = "AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE"; +const CONFIG_ENDPOINT_MODE_NAME = "ec2_metadata_service_endpoint_mode"; +const ENDPOINT_MODE_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => env[ENV_ENDPOINT_MODE_NAME], + configFileSelector: (profile) => profile[CONFIG_ENDPOINT_MODE_NAME], + default: EndpointMode.IPv4, +}; + +const getInstanceMetadataEndpoint = async () => urlParser.parseUrl((await getFromEndpointConfig()) || (await getFromEndpointModeConfig())); +const getFromEndpointConfig = async () => nodeConfigProvider.loadConfig(ENDPOINT_CONFIG_OPTIONS)(); +const getFromEndpointModeConfig = async () => { + const endpointMode = await nodeConfigProvider.loadConfig(ENDPOINT_MODE_CONFIG_OPTIONS)(); + switch (endpointMode) { + case EndpointMode.IPv4: + return exports.Endpoint.IPv4; + case EndpointMode.IPv6: + return exports.Endpoint.IPv6; + default: + throw new Error(`Unsupported endpoint mode: ${endpointMode}.` + ` Select from ${Object.values(EndpointMode)}`); + } +}; + +const STATIC_STABILITY_REFRESH_INTERVAL_SECONDS = 5 * 60; +const STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS = 5 * 60; +const STATIC_STABILITY_DOC_URL = "https://docs.aws.amazon.com/sdkref/latest/guide/feature-static-credentials.html"; +const getExtendedInstanceMetadataCredentials = (credentials, logger) => { + const refreshInterval = STATIC_STABILITY_REFRESH_INTERVAL_SECONDS + + Math.floor(Math.random() * STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS); + const newExpiration = new Date(Date.now() + refreshInterval * 1000); + logger.warn("Attempting credential expiration extension due to a credential service availability issue. A refresh of these " + + `credentials will be attempted after ${new Date(newExpiration)}.\nFor more information, please visit: ` + + STATIC_STABILITY_DOC_URL); + const originalExpiration = credentials.originalExpiration ?? credentials.expiration; + return { + ...credentials, + ...(originalExpiration ? { originalExpiration } : {}), + expiration: newExpiration, + }; +}; + +const staticStabilityProvider = (provider, options = {}) => { + const logger = options?.logger || console; + let pastCredentials; + return async () => { + let credentials; + try { + credentials = await provider(); + if (credentials.expiration && credentials.expiration.getTime() < Date.now()) { + credentials = getExtendedInstanceMetadataCredentials(credentials, logger); + } + } + catch (e) { + if (pastCredentials) { + logger.warn("Credential renew failed: ", e); + credentials = getExtendedInstanceMetadataCredentials(pastCredentials, logger); + } + else { + throw e; + } + } + pastCredentials = credentials; + return credentials; + }; +}; + +const IMDS_PATH = "/latest/meta-data/iam/security-credentials/"; +const IMDS_TOKEN_PATH = "/latest/api/token"; +const AWS_EC2_METADATA_V1_DISABLED = "AWS_EC2_METADATA_V1_DISABLED"; +const PROFILE_AWS_EC2_METADATA_V1_DISABLED = "ec2_metadata_v1_disabled"; +const X_AWS_EC2_METADATA_TOKEN = "x-aws-ec2-metadata-token"; +const fromInstanceMetadata = (init = {}) => staticStabilityProvider(getInstanceMetadataProvider(init), { logger: init.logger }); +const getInstanceMetadataProvider = (init = {}) => { + let disableFetchToken = false; + const { logger, profile } = init; + const { timeout, maxRetries } = providerConfigFromInit(init); + const getCredentials = async (maxRetries, options) => { + const isImdsV1Fallback = disableFetchToken || options.headers?.[X_AWS_EC2_METADATA_TOKEN] == null; + if (isImdsV1Fallback) { + let fallbackBlockedFromProfile = false; + let fallbackBlockedFromProcessEnv = false; + const configValue = await nodeConfigProvider.loadConfig({ + environmentVariableSelector: (env) => { + const envValue = env[AWS_EC2_METADATA_V1_DISABLED]; + fallbackBlockedFromProcessEnv = !!envValue && envValue !== "false"; + if (envValue === undefined) { + throw new propertyProvider.CredentialsProviderError(`${AWS_EC2_METADATA_V1_DISABLED} not set in env, checking config file next.`, { logger: init.logger }); + } + return fallbackBlockedFromProcessEnv; + }, + configFileSelector: (profile) => { + const profileValue = profile[PROFILE_AWS_EC2_METADATA_V1_DISABLED]; + fallbackBlockedFromProfile = !!profileValue && profileValue !== "false"; + return fallbackBlockedFromProfile; + }, + default: false, + }, { + profile, + })(); + if (init.ec2MetadataV1Disabled || configValue) { + const causes = []; + if (init.ec2MetadataV1Disabled) + causes.push("credential provider initialization (runtime option ec2MetadataV1Disabled)"); + if (fallbackBlockedFromProfile) + causes.push(`config file profile (${PROFILE_AWS_EC2_METADATA_V1_DISABLED})`); + if (fallbackBlockedFromProcessEnv) + causes.push(`process environment variable (${AWS_EC2_METADATA_V1_DISABLED})`); + throw new InstanceMetadataV1FallbackError(`AWS EC2 Metadata v1 fallback has been blocked by AWS SDK configuration in the following: [${causes.join(", ")}].`); + } + } + const imdsProfile = (await retry(async () => { + let profile; + try { + profile = await getProfile(options); + } + catch (err) { + if (err.statusCode === 401) { + disableFetchToken = false; + } + throw err; + } + return profile; + }, maxRetries)).trim(); + return retry(async () => { + let creds; + try { + creds = await getCredentialsFromProfile(imdsProfile, options, init); + } + catch (err) { + if (err.statusCode === 401) { + disableFetchToken = false; + } + throw err; + } + return creds; + }, maxRetries); + }; + return async () => { + const endpoint = await getInstanceMetadataEndpoint(); + if (disableFetchToken) { + logger?.debug("AWS SDK Instance Metadata", "using v1 fallback (no token fetch)"); + return getCredentials(maxRetries, { ...endpoint, timeout }); + } + else { + let token; + try { + token = (await getMetadataToken({ ...endpoint, timeout })).toString(); + } + catch (error) { + if (error?.statusCode === 400) { + throw Object.assign(error, { + message: "EC2 Metadata token request returned error", + }); + } + else if (error.message === "TimeoutError" || [403, 404, 405].includes(error.statusCode)) { + disableFetchToken = true; + } + logger?.debug("AWS SDK Instance Metadata", "using v1 fallback (initial)"); + return getCredentials(maxRetries, { ...endpoint, timeout }); + } + return getCredentials(maxRetries, { + ...endpoint, + headers: { + [X_AWS_EC2_METADATA_TOKEN]: token, + }, + timeout, + }); + } + }; +}; +const getMetadataToken = async (options) => httpRequest({ + ...options, + path: IMDS_TOKEN_PATH, + method: "PUT", + headers: { + "x-aws-ec2-metadata-token-ttl-seconds": "21600", + }, +}); +const getProfile = async (options) => (await httpRequest({ ...options, path: IMDS_PATH })).toString(); +const getCredentialsFromProfile = async (profile, options, init) => { + const credentialsResponse = JSON.parse((await httpRequest({ + ...options, + path: IMDS_PATH + profile, + })).toString()); + if (!isImdsCredentials(credentialsResponse)) { + throw new propertyProvider.CredentialsProviderError("Invalid response received from instance metadata service.", { + logger: init.logger, + }); + } + return fromImdsCredentials(credentialsResponse); +}; + +exports.DEFAULT_MAX_RETRIES = DEFAULT_MAX_RETRIES; +exports.DEFAULT_TIMEOUT = DEFAULT_TIMEOUT; +exports.ENV_CMDS_AUTH_TOKEN = ENV_CMDS_AUTH_TOKEN; +exports.ENV_CMDS_FULL_URI = ENV_CMDS_FULL_URI; +exports.ENV_CMDS_RELATIVE_URI = ENV_CMDS_RELATIVE_URI; +exports.fromContainerMetadata = fromContainerMetadata; +exports.fromInstanceMetadata = fromInstanceMetadata; +exports.getInstanceMetadataEndpoint = getInstanceMetadataEndpoint; +exports.httpRequest = httpRequest; +exports.providerConfigFromInit = providerConfigFromInit; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/config/Endpoint.js b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/config/Endpoint.js new file mode 100644 index 000000000..b088eb0d8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/config/Endpoint.js @@ -0,0 +1,5 @@ +export var Endpoint; +(function (Endpoint) { + Endpoint["IPv4"] = "http://169.254.169.254"; + Endpoint["IPv6"] = "http://[fd00:ec2::254]"; +})(Endpoint || (Endpoint = {})); diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/config/EndpointConfigOptions.js b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/config/EndpointConfigOptions.js new file mode 100644 index 000000000..f043de93c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/config/EndpointConfigOptions.js @@ -0,0 +1,7 @@ +export const ENV_ENDPOINT_NAME = "AWS_EC2_METADATA_SERVICE_ENDPOINT"; +export const CONFIG_ENDPOINT_NAME = "ec2_metadata_service_endpoint"; +export const ENDPOINT_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => env[ENV_ENDPOINT_NAME], + configFileSelector: (profile) => profile[CONFIG_ENDPOINT_NAME], + default: undefined, +}; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/config/EndpointMode.js b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/config/EndpointMode.js new file mode 100644 index 000000000..bace81980 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/config/EndpointMode.js @@ -0,0 +1,5 @@ +export var EndpointMode; +(function (EndpointMode) { + EndpointMode["IPv4"] = "IPv4"; + EndpointMode["IPv6"] = "IPv6"; +})(EndpointMode || (EndpointMode = {})); diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/config/EndpointModeConfigOptions.js b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/config/EndpointModeConfigOptions.js new file mode 100644 index 000000000..15b19d04d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/config/EndpointModeConfigOptions.js @@ -0,0 +1,8 @@ +import { EndpointMode } from "./EndpointMode"; +export const ENV_ENDPOINT_MODE_NAME = "AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE"; +export const CONFIG_ENDPOINT_MODE_NAME = "ec2_metadata_service_endpoint_mode"; +export const ENDPOINT_MODE_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => env[ENV_ENDPOINT_MODE_NAME], + configFileSelector: (profile) => profile[CONFIG_ENDPOINT_MODE_NAME], + default: EndpointMode.IPv4, +}; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/error/InstanceMetadataV1FallbackError.js b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/error/InstanceMetadataV1FallbackError.js new file mode 100644 index 000000000..b76939249 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/error/InstanceMetadataV1FallbackError.js @@ -0,0 +1,10 @@ +import { CredentialsProviderError } from "@smithy/property-provider"; +export class InstanceMetadataV1FallbackError extends CredentialsProviderError { + tryNextLink; + name = "InstanceMetadataV1FallbackError"; + constructor(message, tryNextLink = true) { + super(message, tryNextLink); + this.tryNextLink = tryNextLink; + Object.setPrototypeOf(this, InstanceMetadataV1FallbackError.prototype); + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/fromContainerMetadata.js b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/fromContainerMetadata.js new file mode 100644 index 000000000..4340e3e56 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/fromContainerMetadata.js @@ -0,0 +1,77 @@ +import { CredentialsProviderError } from "@smithy/property-provider"; +import { parse } from "url"; +import { httpRequest } from "./remoteProvider/httpRequest"; +import { fromImdsCredentials, isImdsCredentials } from "./remoteProvider/ImdsCredentials"; +import { providerConfigFromInit } from "./remoteProvider/RemoteProviderInit"; +import { retry } from "./remoteProvider/retry"; +export const ENV_CMDS_FULL_URI = "AWS_CONTAINER_CREDENTIALS_FULL_URI"; +export const ENV_CMDS_RELATIVE_URI = "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"; +export const ENV_CMDS_AUTH_TOKEN = "AWS_CONTAINER_AUTHORIZATION_TOKEN"; +export const fromContainerMetadata = (init = {}) => { + const { timeout, maxRetries } = providerConfigFromInit(init); + return () => retry(async () => { + const requestOptions = await getCmdsUri({ logger: init.logger }); + const credsResponse = JSON.parse(await requestFromEcsImds(timeout, requestOptions)); + if (!isImdsCredentials(credsResponse)) { + throw new CredentialsProviderError("Invalid response received from instance metadata service.", { + logger: init.logger, + }); + } + return fromImdsCredentials(credsResponse); + }, maxRetries); +}; +const requestFromEcsImds = async (timeout, options) => { + if (process.env[ENV_CMDS_AUTH_TOKEN]) { + options.headers = { + ...options.headers, + Authorization: process.env[ENV_CMDS_AUTH_TOKEN], + }; + } + const buffer = await httpRequest({ + ...options, + timeout, + }); + return buffer.toString(); +}; +const CMDS_IP = "169.254.170.2"; +const GREENGRASS_HOSTS = { + localhost: true, + "127.0.0.1": true, +}; +const GREENGRASS_PROTOCOLS = { + "http:": true, + "https:": true, +}; +const getCmdsUri = async ({ logger }) => { + if (process.env[ENV_CMDS_RELATIVE_URI]) { + return { + hostname: CMDS_IP, + path: process.env[ENV_CMDS_RELATIVE_URI], + }; + } + if (process.env[ENV_CMDS_FULL_URI]) { + const parsed = parse(process.env[ENV_CMDS_FULL_URI]); + if (!parsed.hostname || !(parsed.hostname in GREENGRASS_HOSTS)) { + throw new CredentialsProviderError(`${parsed.hostname} is not a valid container metadata service hostname`, { + tryNextLink: false, + logger, + }); + } + if (!parsed.protocol || !(parsed.protocol in GREENGRASS_PROTOCOLS)) { + throw new CredentialsProviderError(`${parsed.protocol} is not a valid container metadata service protocol`, { + tryNextLink: false, + logger, + }); + } + return { + ...parsed, + port: parsed.port ? parseInt(parsed.port, 10) : undefined, + }; + } + throw new CredentialsProviderError("The container metadata credential provider cannot be used unless" + + ` the ${ENV_CMDS_RELATIVE_URI} or ${ENV_CMDS_FULL_URI} environment` + + " variable is set", { + tryNextLink: false, + logger, + }); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/fromInstanceMetadata.js b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/fromInstanceMetadata.js new file mode 100644 index 000000000..24ecbfd59 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/fromInstanceMetadata.js @@ -0,0 +1,134 @@ +import { loadConfig } from "@smithy/node-config-provider"; +import { CredentialsProviderError } from "@smithy/property-provider"; +import { InstanceMetadataV1FallbackError } from "./error/InstanceMetadataV1FallbackError"; +import { httpRequest } from "./remoteProvider/httpRequest"; +import { fromImdsCredentials, isImdsCredentials } from "./remoteProvider/ImdsCredentials"; +import { providerConfigFromInit } from "./remoteProvider/RemoteProviderInit"; +import { retry } from "./remoteProvider/retry"; +import { getInstanceMetadataEndpoint } from "./utils/getInstanceMetadataEndpoint"; +import { staticStabilityProvider } from "./utils/staticStabilityProvider"; +const IMDS_PATH = "/latest/meta-data/iam/security-credentials/"; +const IMDS_TOKEN_PATH = "/latest/api/token"; +const AWS_EC2_METADATA_V1_DISABLED = "AWS_EC2_METADATA_V1_DISABLED"; +const PROFILE_AWS_EC2_METADATA_V1_DISABLED = "ec2_metadata_v1_disabled"; +const X_AWS_EC2_METADATA_TOKEN = "x-aws-ec2-metadata-token"; +export const fromInstanceMetadata = (init = {}) => staticStabilityProvider(getInstanceMetadataProvider(init), { logger: init.logger }); +const getInstanceMetadataProvider = (init = {}) => { + let disableFetchToken = false; + const { logger, profile } = init; + const { timeout, maxRetries } = providerConfigFromInit(init); + const getCredentials = async (maxRetries, options) => { + const isImdsV1Fallback = disableFetchToken || options.headers?.[X_AWS_EC2_METADATA_TOKEN] == null; + if (isImdsV1Fallback) { + let fallbackBlockedFromProfile = false; + let fallbackBlockedFromProcessEnv = false; + const configValue = await loadConfig({ + environmentVariableSelector: (env) => { + const envValue = env[AWS_EC2_METADATA_V1_DISABLED]; + fallbackBlockedFromProcessEnv = !!envValue && envValue !== "false"; + if (envValue === undefined) { + throw new CredentialsProviderError(`${AWS_EC2_METADATA_V1_DISABLED} not set in env, checking config file next.`, { logger: init.logger }); + } + return fallbackBlockedFromProcessEnv; + }, + configFileSelector: (profile) => { + const profileValue = profile[PROFILE_AWS_EC2_METADATA_V1_DISABLED]; + fallbackBlockedFromProfile = !!profileValue && profileValue !== "false"; + return fallbackBlockedFromProfile; + }, + default: false, + }, { + profile, + })(); + if (init.ec2MetadataV1Disabled || configValue) { + const causes = []; + if (init.ec2MetadataV1Disabled) + causes.push("credential provider initialization (runtime option ec2MetadataV1Disabled)"); + if (fallbackBlockedFromProfile) + causes.push(`config file profile (${PROFILE_AWS_EC2_METADATA_V1_DISABLED})`); + if (fallbackBlockedFromProcessEnv) + causes.push(`process environment variable (${AWS_EC2_METADATA_V1_DISABLED})`); + throw new InstanceMetadataV1FallbackError(`AWS EC2 Metadata v1 fallback has been blocked by AWS SDK configuration in the following: [${causes.join(", ")}].`); + } + } + const imdsProfile = (await retry(async () => { + let profile; + try { + profile = await getProfile(options); + } + catch (err) { + if (err.statusCode === 401) { + disableFetchToken = false; + } + throw err; + } + return profile; + }, maxRetries)).trim(); + return retry(async () => { + let creds; + try { + creds = await getCredentialsFromProfile(imdsProfile, options, init); + } + catch (err) { + if (err.statusCode === 401) { + disableFetchToken = false; + } + throw err; + } + return creds; + }, maxRetries); + }; + return async () => { + const endpoint = await getInstanceMetadataEndpoint(); + if (disableFetchToken) { + logger?.debug("AWS SDK Instance Metadata", "using v1 fallback (no token fetch)"); + return getCredentials(maxRetries, { ...endpoint, timeout }); + } + else { + let token; + try { + token = (await getMetadataToken({ ...endpoint, timeout })).toString(); + } + catch (error) { + if (error?.statusCode === 400) { + throw Object.assign(error, { + message: "EC2 Metadata token request returned error", + }); + } + else if (error.message === "TimeoutError" || [403, 404, 405].includes(error.statusCode)) { + disableFetchToken = true; + } + logger?.debug("AWS SDK Instance Metadata", "using v1 fallback (initial)"); + return getCredentials(maxRetries, { ...endpoint, timeout }); + } + return getCredentials(maxRetries, { + ...endpoint, + headers: { + [X_AWS_EC2_METADATA_TOKEN]: token, + }, + timeout, + }); + } + }; +}; +const getMetadataToken = async (options) => httpRequest({ + ...options, + path: IMDS_TOKEN_PATH, + method: "PUT", + headers: { + "x-aws-ec2-metadata-token-ttl-seconds": "21600", + }, +}); +const getProfile = async (options) => (await httpRequest({ ...options, path: IMDS_PATH })).toString(); +const getCredentialsFromProfile = async (profile, options, init) => { + const credentialsResponse = JSON.parse((await httpRequest({ + ...options, + path: IMDS_PATH + profile, + })).toString()); + if (!isImdsCredentials(credentialsResponse)) { + throw new CredentialsProviderError("Invalid response received from instance metadata service.", { + logger: init.logger, + }); + } + return fromImdsCredentials(credentialsResponse); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/index.js new file mode 100644 index 000000000..53627609d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/index.js @@ -0,0 +1,7 @@ +export * from "./fromContainerMetadata"; +export * from "./fromInstanceMetadata"; +export * from "./remoteProvider/RemoteProviderInit"; +export * from "./types"; +export { httpRequest } from "./remoteProvider/httpRequest"; +export { getInstanceMetadataEndpoint } from "./utils/getInstanceMetadataEndpoint"; +export { Endpoint } from "./config/Endpoint"; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/ImdsCredentials.js b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/ImdsCredentials.js new file mode 100644 index 000000000..c559c4f8a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/ImdsCredentials.js @@ -0,0 +1,13 @@ +export const isImdsCredentials = (arg) => Boolean(arg) && + typeof arg === "object" && + typeof arg.AccessKeyId === "string" && + typeof arg.SecretAccessKey === "string" && + typeof arg.Token === "string" && + typeof arg.Expiration === "string"; +export const fromImdsCredentials = (creds) => ({ + accessKeyId: creds.AccessKeyId, + secretAccessKey: creds.SecretAccessKey, + sessionToken: creds.Token, + expiration: new Date(creds.Expiration), + ...(creds.AccountId && { accountId: creds.AccountId }), +}); diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/RemoteProviderInit.js b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/RemoteProviderInit.js new file mode 100644 index 000000000..39ace380e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/RemoteProviderInit.js @@ -0,0 +1,3 @@ +export const DEFAULT_TIMEOUT = 1000; +export const DEFAULT_MAX_RETRIES = 0; +export const providerConfigFromInit = ({ maxRetries = DEFAULT_MAX_RETRIES, timeout = DEFAULT_TIMEOUT, }) => ({ maxRetries, timeout }); diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/httpRequest.js b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/httpRequest.js new file mode 100644 index 000000000..91742d0d8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/httpRequest.js @@ -0,0 +1,36 @@ +import { ProviderError } from "@smithy/property-provider"; +import { Buffer } from "buffer"; +import { request } from "http"; +export function httpRequest(options) { + return new Promise((resolve, reject) => { + const req = request({ + method: "GET", + ...options, + hostname: options.hostname?.replace(/^\[(.+)\]$/, "$1"), + }); + req.on("error", (err) => { + reject(Object.assign(new ProviderError("Unable to connect to instance metadata service"), err)); + req.destroy(); + }); + req.on("timeout", () => { + reject(new ProviderError("TimeoutError from instance metadata service")); + req.destroy(); + }); + req.on("response", (res) => { + const { statusCode = 400 } = res; + if (statusCode < 200 || 300 <= statusCode) { + reject(Object.assign(new ProviderError("Error response received from instance metadata service"), { statusCode })); + req.destroy(); + } + const chunks = []; + res.on("data", (chunk) => { + chunks.push(chunk); + }); + res.on("end", () => { + resolve(Buffer.concat(chunks)); + req.destroy(); + }); + }); + req.end(); + }); +} diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/index.js b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/index.js new file mode 100644 index 000000000..d4ad60104 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/index.js @@ -0,0 +1,2 @@ +export * from "./ImdsCredentials"; +export * from "./RemoteProviderInit"; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/retry.js b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/retry.js new file mode 100644 index 000000000..22b79bb28 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/retry.js @@ -0,0 +1,7 @@ +export const retry = (toRetry, maxRetries) => { + let promise = toRetry(); + for (let i = 0; i < maxRetries; i++) { + promise = promise.catch(toRetry); + } + return promise; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/types.js b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/types.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/utils/getExtendedInstanceMetadataCredentials.js b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/utils/getExtendedInstanceMetadataCredentials.js new file mode 100644 index 000000000..5614692fc --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/utils/getExtendedInstanceMetadataCredentials.js @@ -0,0 +1,17 @@ +const STATIC_STABILITY_REFRESH_INTERVAL_SECONDS = 5 * 60; +const STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS = 5 * 60; +const STATIC_STABILITY_DOC_URL = "https://docs.aws.amazon.com/sdkref/latest/guide/feature-static-credentials.html"; +export const getExtendedInstanceMetadataCredentials = (credentials, logger) => { + const refreshInterval = STATIC_STABILITY_REFRESH_INTERVAL_SECONDS + + Math.floor(Math.random() * STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS); + const newExpiration = new Date(Date.now() + refreshInterval * 1000); + logger.warn("Attempting credential expiration extension due to a credential service availability issue. A refresh of these " + + `credentials will be attempted after ${new Date(newExpiration)}.\nFor more information, please visit: ` + + STATIC_STABILITY_DOC_URL); + const originalExpiration = credentials.originalExpiration ?? credentials.expiration; + return { + ...credentials, + ...(originalExpiration ? { originalExpiration } : {}), + expiration: newExpiration, + }; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/utils/getInstanceMetadataEndpoint.js b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/utils/getInstanceMetadataEndpoint.js new file mode 100644 index 000000000..4c611ad22 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/utils/getInstanceMetadataEndpoint.js @@ -0,0 +1,19 @@ +import { loadConfig } from "@smithy/node-config-provider"; +import { parseUrl } from "@smithy/url-parser"; +import { Endpoint as InstanceMetadataEndpoint } from "../config/Endpoint"; +import { ENDPOINT_CONFIG_OPTIONS } from "../config/EndpointConfigOptions"; +import { EndpointMode } from "../config/EndpointMode"; +import { ENDPOINT_MODE_CONFIG_OPTIONS, } from "../config/EndpointModeConfigOptions"; +export const getInstanceMetadataEndpoint = async () => parseUrl((await getFromEndpointConfig()) || (await getFromEndpointModeConfig())); +const getFromEndpointConfig = async () => loadConfig(ENDPOINT_CONFIG_OPTIONS)(); +const getFromEndpointModeConfig = async () => { + const endpointMode = await loadConfig(ENDPOINT_MODE_CONFIG_OPTIONS)(); + switch (endpointMode) { + case EndpointMode.IPv4: + return InstanceMetadataEndpoint.IPv4; + case EndpointMode.IPv6: + return InstanceMetadataEndpoint.IPv6; + default: + throw new Error(`Unsupported endpoint mode: ${endpointMode}.` + ` Select from ${Object.values(EndpointMode)}`); + } +}; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/utils/staticStabilityProvider.js b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/utils/staticStabilityProvider.js new file mode 100644 index 000000000..9a1e74219 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-es/utils/staticStabilityProvider.js @@ -0,0 +1,25 @@ +import { getExtendedInstanceMetadataCredentials } from "./getExtendedInstanceMetadataCredentials"; +export const staticStabilityProvider = (provider, options = {}) => { + const logger = options?.logger || console; + let pastCredentials; + return async () => { + let credentials; + try { + credentials = await provider(); + if (credentials.expiration && credentials.expiration.getTime() < Date.now()) { + credentials = getExtendedInstanceMetadataCredentials(credentials, logger); + } + } + catch (e) { + if (pastCredentials) { + logger.warn("Credential renew failed: ", e); + credentials = getExtendedInstanceMetadataCredentials(pastCredentials, logger); + } + else { + throw e; + } + } + pastCredentials = credentials; + return credentials; + }; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/config/Endpoint.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/config/Endpoint.d.ts new file mode 100644 index 000000000..000e3136c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/config/Endpoint.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + */ +export declare enum Endpoint { + IPv4 = "http://169.254.169.254", + IPv6 = "http://[fd00:ec2::254]" +} diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/config/EndpointConfigOptions.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/config/EndpointConfigOptions.d.ts new file mode 100644 index 000000000..0c3309243 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/config/EndpointConfigOptions.d.ts @@ -0,0 +1,13 @@ +import type { LoadedConfigSelectors } from "@smithy/node-config-provider"; +/** + * @internal + */ +export declare const ENV_ENDPOINT_NAME = "AWS_EC2_METADATA_SERVICE_ENDPOINT"; +/** + * @internal + */ +export declare const CONFIG_ENDPOINT_NAME = "ec2_metadata_service_endpoint"; +/** + * @internal + */ +export declare const ENDPOINT_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/config/EndpointMode.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/config/EndpointMode.d.ts new file mode 100644 index 000000000..db7061916 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/config/EndpointMode.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + */ +export declare enum EndpointMode { + IPv4 = "IPv4", + IPv6 = "IPv6" +} diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/config/EndpointModeConfigOptions.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/config/EndpointModeConfigOptions.d.ts new file mode 100644 index 000000000..0037c88bf --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/config/EndpointModeConfigOptions.d.ts @@ -0,0 +1,13 @@ +import type { LoadedConfigSelectors } from "@smithy/node-config-provider"; +/** + * @internal + */ +export declare const ENV_ENDPOINT_MODE_NAME = "AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE"; +/** + * @internal + */ +export declare const CONFIG_ENDPOINT_MODE_NAME = "ec2_metadata_service_endpoint_mode"; +/** + * @internal + */ +export declare const ENDPOINT_MODE_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/error/InstanceMetadataV1FallbackError.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/error/InstanceMetadataV1FallbackError.d.ts new file mode 100644 index 000000000..8338ccb78 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/error/InstanceMetadataV1FallbackError.d.ts @@ -0,0 +1,12 @@ +import { CredentialsProviderError } from "@smithy/property-provider"; +/** + * @public + * + * A specific sub-case of CredentialsProviderError, when the IMDSv1 fallback + * has been attempted but shut off by SDK configuration. + */ +export declare class InstanceMetadataV1FallbackError extends CredentialsProviderError { + readonly tryNextLink: boolean; + name: string; + constructor(message: string, tryNextLink?: boolean); +} diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/fromContainerMetadata.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/fromContainerMetadata.d.ts new file mode 100644 index 000000000..bb64ddbcf --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/fromContainerMetadata.d.ts @@ -0,0 +1,21 @@ +import type { AwsCredentialIdentityProvider } from "@smithy/types"; +import type { RemoteProviderInit } from "./remoteProvider/RemoteProviderInit"; +/** + * @internal + */ +export declare const ENV_CMDS_FULL_URI = "AWS_CONTAINER_CREDENTIALS_FULL_URI"; +/** + * @internal + */ +export declare const ENV_CMDS_RELATIVE_URI = "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"; +/** + * @internal + */ +export declare const ENV_CMDS_AUTH_TOKEN = "AWS_CONTAINER_AUTHORIZATION_TOKEN"; +/** + * @internal + * + * Creates a credential provider that will source credentials from the ECS + * Container Metadata Service + */ +export declare const fromContainerMetadata: (init?: RemoteProviderInit) => AwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/fromInstanceMetadata.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/fromInstanceMetadata.d.ts new file mode 100644 index 000000000..80a94aae9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/fromInstanceMetadata.d.ts @@ -0,0 +1,10 @@ +import type { Provider } from "@smithy/types"; +import type { RemoteProviderInit } from "./remoteProvider/RemoteProviderInit"; +import type { InstanceMetadataCredentials } from "./types"; +/** + * @internal + * + * Creates a credential provider that will source credentials from the EC2 + * Instance Metadata Service + */ +export declare const fromInstanceMetadata: (init?: RemoteProviderInit) => Provider; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/index.d.ts new file mode 100644 index 000000000..5a87b2f16 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/index.d.ts @@ -0,0 +1,28 @@ +/** + * @internal + */ +export * from "./fromContainerMetadata"; +/** + * @internal + */ +export * from "./fromInstanceMetadata"; +/** + * @internal + */ +export * from "./remoteProvider/RemoteProviderInit"; +/** + * @internal + */ +export * from "./types"; +/** + * @internal + */ +export { httpRequest } from "./remoteProvider/httpRequest"; +/** + * @internal + */ +export { getInstanceMetadataEndpoint } from "./utils/getInstanceMetadataEndpoint"; +/** + * @internal + */ +export { Endpoint } from "./config/Endpoint"; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/ImdsCredentials.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/ImdsCredentials.d.ts new file mode 100644 index 000000000..fd5593298 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/ImdsCredentials.d.ts @@ -0,0 +1,19 @@ +import type { AwsCredentialIdentity } from "@smithy/types"; +/** + * @internal + */ +export interface ImdsCredentials { + AccessKeyId: string; + SecretAccessKey: string; + Token: string; + Expiration: string; + AccountId?: string; +} +/** + * @internal + */ +export declare const isImdsCredentials: (arg: any) => arg is ImdsCredentials; +/** + * @internal + */ +export declare const fromImdsCredentials: (creds: ImdsCredentials) => AwsCredentialIdentity; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/RemoteProviderInit.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/RemoteProviderInit.d.ts new file mode 100644 index 000000000..68e6ffea4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/RemoteProviderInit.d.ts @@ -0,0 +1,40 @@ +import type { Logger } from "@smithy/types"; +/** + * @internal + */ +export declare const DEFAULT_TIMEOUT = 1000; +/** + * @internal + */ +export declare const DEFAULT_MAX_RETRIES = 0; +/** + * @public + */ +export interface RemoteProviderConfig { + /** + * The connection timeout (in milliseconds) + */ + timeout: number; + /** + * The maximum number of times the HTTP connection should be retried + */ + maxRetries: number; +} +/** + * @public + */ +export interface RemoteProviderInit extends Partial { + logger?: Logger; + /** + * Only used in the IMDS credential provider. + */ + ec2MetadataV1Disabled?: boolean; + /** + * AWS_PROFILE. + */ + profile?: string; +} +/** + * @internal + */ +export declare const providerConfigFromInit: ({ maxRetries, timeout, }: RemoteProviderInit) => RemoteProviderConfig; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/httpRequest.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/httpRequest.d.ts new file mode 100644 index 000000000..49edfba03 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/httpRequest.d.ts @@ -0,0 +1,6 @@ +import { Buffer } from "buffer"; +import type { RequestOptions } from "http"; +/** + * @internal + */ +export declare function httpRequest(options: RequestOptions): Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/index.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/index.d.ts new file mode 100644 index 000000000..ed18a7032 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./ImdsCredentials"; +/** + * @internal + */ +export * from "./RemoteProviderInit"; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/retry.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/retry.d.ts new file mode 100644 index 000000000..4e8abc045 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/retry.d.ts @@ -0,0 +1,10 @@ +/** + * @internal + */ +export interface RetryableProvider { + (): Promise; +} +/** + * @internal + */ +export declare const retry: (toRetry: RetryableProvider, maxRetries: number) => Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/config/Endpoint.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/config/Endpoint.d.ts new file mode 100644 index 000000000..000e3136c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/config/Endpoint.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + */ +export declare enum Endpoint { + IPv4 = "http://169.254.169.254", + IPv6 = "http://[fd00:ec2::254]" +} diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/config/EndpointConfigOptions.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/config/EndpointConfigOptions.d.ts new file mode 100644 index 000000000..c03e22cb3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/config/EndpointConfigOptions.d.ts @@ -0,0 +1,13 @@ +import { LoadedConfigSelectors } from "@smithy/node-config-provider"; +/** + * @internal + */ +export declare const ENV_ENDPOINT_NAME = "AWS_EC2_METADATA_SERVICE_ENDPOINT"; +/** + * @internal + */ +export declare const CONFIG_ENDPOINT_NAME = "ec2_metadata_service_endpoint"; +/** + * @internal + */ +export declare const ENDPOINT_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/config/EndpointMode.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/config/EndpointMode.d.ts new file mode 100644 index 000000000..db7061916 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/config/EndpointMode.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + */ +export declare enum EndpointMode { + IPv4 = "IPv4", + IPv6 = "IPv6" +} diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/config/EndpointModeConfigOptions.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/config/EndpointModeConfigOptions.d.ts new file mode 100644 index 000000000..c74319993 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/config/EndpointModeConfigOptions.d.ts @@ -0,0 +1,13 @@ +import { LoadedConfigSelectors } from "@smithy/node-config-provider"; +/** + * @internal + */ +export declare const ENV_ENDPOINT_MODE_NAME = "AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE"; +/** + * @internal + */ +export declare const CONFIG_ENDPOINT_MODE_NAME = "ec2_metadata_service_endpoint_mode"; +/** + * @internal + */ +export declare const ENDPOINT_MODE_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/error/InstanceMetadataV1FallbackError.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/error/InstanceMetadataV1FallbackError.d.ts new file mode 100644 index 000000000..8338ccb78 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/error/InstanceMetadataV1FallbackError.d.ts @@ -0,0 +1,12 @@ +import { CredentialsProviderError } from "@smithy/property-provider"; +/** + * @public + * + * A specific sub-case of CredentialsProviderError, when the IMDSv1 fallback + * has been attempted but shut off by SDK configuration. + */ +export declare class InstanceMetadataV1FallbackError extends CredentialsProviderError { + readonly tryNextLink: boolean; + name: string; + constructor(message: string, tryNextLink?: boolean); +} diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/fromContainerMetadata.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/fromContainerMetadata.d.ts new file mode 100644 index 000000000..f6f28f07c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/fromContainerMetadata.d.ts @@ -0,0 +1,21 @@ +import { AwsCredentialIdentityProvider } from "@smithy/types"; +import { RemoteProviderInit } from "./remoteProvider/RemoteProviderInit"; +/** + * @internal + */ +export declare const ENV_CMDS_FULL_URI = "AWS_CONTAINER_CREDENTIALS_FULL_URI"; +/** + * @internal + */ +export declare const ENV_CMDS_RELATIVE_URI = "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"; +/** + * @internal + */ +export declare const ENV_CMDS_AUTH_TOKEN = "AWS_CONTAINER_AUTHORIZATION_TOKEN"; +/** + * @internal + * + * Creates a credential provider that will source credentials from the ECS + * Container Metadata Service + */ +export declare const fromContainerMetadata: (init?: RemoteProviderInit) => AwsCredentialIdentityProvider; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/fromInstanceMetadata.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/fromInstanceMetadata.d.ts new file mode 100644 index 000000000..24db95ae1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/fromInstanceMetadata.d.ts @@ -0,0 +1,10 @@ +import { Provider } from "@smithy/types"; +import { RemoteProviderInit } from "./remoteProvider/RemoteProviderInit"; +import { InstanceMetadataCredentials } from "./types"; +/** + * @internal + * + * Creates a credential provider that will source credentials from the EC2 + * Instance Metadata Service + */ +export declare const fromInstanceMetadata: (init?: RemoteProviderInit) => Provider; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..5a87b2f16 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/index.d.ts @@ -0,0 +1,28 @@ +/** + * @internal + */ +export * from "./fromContainerMetadata"; +/** + * @internal + */ +export * from "./fromInstanceMetadata"; +/** + * @internal + */ +export * from "./remoteProvider/RemoteProviderInit"; +/** + * @internal + */ +export * from "./types"; +/** + * @internal + */ +export { httpRequest } from "./remoteProvider/httpRequest"; +/** + * @internal + */ +export { getInstanceMetadataEndpoint } from "./utils/getInstanceMetadataEndpoint"; +/** + * @internal + */ +export { Endpoint } from "./config/Endpoint"; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/ImdsCredentials.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/ImdsCredentials.d.ts new file mode 100644 index 000000000..c2c7d51a0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/ImdsCredentials.d.ts @@ -0,0 +1,19 @@ +import { AwsCredentialIdentity } from "@smithy/types"; +/** + * @internal + */ +export interface ImdsCredentials { + AccessKeyId: string; + SecretAccessKey: string; + Token: string; + Expiration: string; + AccountId?: string; +} +/** + * @internal + */ +export declare const isImdsCredentials: (arg: any) => arg is ImdsCredentials; +/** + * @internal + */ +export declare const fromImdsCredentials: (creds: ImdsCredentials) => AwsCredentialIdentity; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/RemoteProviderInit.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/RemoteProviderInit.d.ts new file mode 100644 index 000000000..df9eff702 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/RemoteProviderInit.d.ts @@ -0,0 +1,40 @@ +import { Logger } from "@smithy/types"; +/** + * @internal + */ +export declare const DEFAULT_TIMEOUT = 1000; +/** + * @internal + */ +export declare const DEFAULT_MAX_RETRIES = 0; +/** + * @public + */ +export interface RemoteProviderConfig { + /** + * The connection timeout (in milliseconds) + */ + timeout: number; + /** + * The maximum number of times the HTTP connection should be retried + */ + maxRetries: number; +} +/** + * @public + */ +export interface RemoteProviderInit extends Partial { + logger?: Logger; + /** + * Only used in the IMDS credential provider. + */ + ec2MetadataV1Disabled?: boolean; + /** + * AWS_PROFILE. + */ + profile?: string; +} +/** + * @internal + */ +export declare const providerConfigFromInit: ({ maxRetries, timeout, }: RemoteProviderInit) => RemoteProviderConfig; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/httpRequest.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/httpRequest.d.ts new file mode 100644 index 000000000..b9ad63ecf --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/httpRequest.d.ts @@ -0,0 +1,6 @@ +import { Buffer } from "buffer"; +import { RequestOptions } from "http"; +/** + * @internal + */ +export declare function httpRequest(options: RequestOptions): Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/index.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/index.d.ts new file mode 100644 index 000000000..ed18a7032 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./ImdsCredentials"; +/** + * @internal + */ +export * from "./RemoteProviderInit"; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/retry.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/retry.d.ts new file mode 100644 index 000000000..4e8abc045 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/retry.d.ts @@ -0,0 +1,10 @@ +/** + * @internal + */ +export interface RetryableProvider { + (): Promise; +} +/** + * @internal + */ +export declare const retry: (toRetry: RetryableProvider, maxRetries: number) => Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/types.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/types.d.ts new file mode 100644 index 000000000..e74ec995d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/types.d.ts @@ -0,0 +1,7 @@ +import { AwsCredentialIdentity } from "@smithy/types"; +/** + * @internal + */ +export interface InstanceMetadataCredentials extends AwsCredentialIdentity { + readonly originalExpiration?: Date; +} diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/utils/getExtendedInstanceMetadataCredentials.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/utils/getExtendedInstanceMetadataCredentials.d.ts new file mode 100644 index 000000000..f0ed41bcf --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/utils/getExtendedInstanceMetadataCredentials.d.ts @@ -0,0 +1,6 @@ +import { Logger } from "@smithy/types"; +import { InstanceMetadataCredentials } from "../types"; +/** + * @internal + */ +export declare const getExtendedInstanceMetadataCredentials: (credentials: InstanceMetadataCredentials, logger: Logger) => InstanceMetadataCredentials; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/utils/getInstanceMetadataEndpoint.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/utils/getInstanceMetadataEndpoint.d.ts new file mode 100644 index 000000000..db6b6daea --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/utils/getInstanceMetadataEndpoint.d.ts @@ -0,0 +1,21 @@ +import { Endpoint } from "@smithy/types"; +/** + * Returns the host to use for instance metadata service call. + * + * The host is read from endpoint which can be set either in + * {@link ENV_ENDPOINT_NAME} environment variable or {@link CONFIG_ENDPOINT_NAME} + * configuration property. + * + * If endpoint is not set, then endpoint mode is read either from + * {@link ENV_ENDPOINT_MODE_NAME} environment variable or {@link CONFIG_ENDPOINT_MODE_NAME} + * configuration property. If endpoint mode is not set, then default endpoint mode + * {@link EndpointMode.IPv4} is used. + * + * If endpoint mode is set to {@link EndpointMode.IPv4}, then the host is {@link Endpoint.IPv4}. + * If endpoint mode is set to {@link EndpointMode.IPv6}, then the host is {@link Endpoint.IPv6}. + * + * @returns Host to use for instance metadata service call. + * + * @internal + */ +export declare const getInstanceMetadataEndpoint: () => Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/utils/staticStabilityProvider.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/utils/staticStabilityProvider.d.ts new file mode 100644 index 000000000..7a2ad7da0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/utils/staticStabilityProvider.d.ts @@ -0,0 +1,16 @@ +import { Logger, Provider } from "@smithy/types"; +import { InstanceMetadataCredentials } from "../types"; +/** + * @internal + * + * IMDS credential supports static stability feature. When used, the expiration + * of recently issued credentials is extended. The server side allows using + * the recently expired credentials. This mitigates impact when clients using + * refreshable credentials are unable to retrieve updates. + * + * @param provider Credential provider + * @returns A credential provider that supports static stability + */ +export declare const staticStabilityProvider: (provider: Provider, options?: { + logger?: Logger; +}) => Provider; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/types.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/types.d.ts new file mode 100644 index 000000000..d9434edf7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/types.d.ts @@ -0,0 +1,7 @@ +import type { AwsCredentialIdentity } from "@smithy/types"; +/** + * @internal + */ +export interface InstanceMetadataCredentials extends AwsCredentialIdentity { + readonly originalExpiration?: Date; +} diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/utils/getExtendedInstanceMetadataCredentials.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/utils/getExtendedInstanceMetadataCredentials.d.ts new file mode 100644 index 000000000..8420aa216 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/utils/getExtendedInstanceMetadataCredentials.d.ts @@ -0,0 +1,6 @@ +import type { Logger } from "@smithy/types"; +import type { InstanceMetadataCredentials } from "../types"; +/** + * @internal + */ +export declare const getExtendedInstanceMetadataCredentials: (credentials: InstanceMetadataCredentials, logger: Logger) => InstanceMetadataCredentials; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/utils/getInstanceMetadataEndpoint.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/utils/getInstanceMetadataEndpoint.d.ts new file mode 100644 index 000000000..63c0b7b6b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/utils/getInstanceMetadataEndpoint.d.ts @@ -0,0 +1,21 @@ +import type { Endpoint } from "@smithy/types"; +/** + * Returns the host to use for instance metadata service call. + * + * The host is read from endpoint which can be set either in + * {@link ENV_ENDPOINT_NAME} environment variable or {@link CONFIG_ENDPOINT_NAME} + * configuration property. + * + * If endpoint is not set, then endpoint mode is read either from + * {@link ENV_ENDPOINT_MODE_NAME} environment variable or {@link CONFIG_ENDPOINT_MODE_NAME} + * configuration property. If endpoint mode is not set, then default endpoint mode + * {@link EndpointMode.IPv4} is used. + * + * If endpoint mode is set to {@link EndpointMode.IPv4}, then the host is {@link Endpoint.IPv4}. + * If endpoint mode is set to {@link EndpointMode.IPv6}, then the host is {@link Endpoint.IPv6}. + * + * @returns Host to use for instance metadata service call. + * + * @internal + */ +export declare const getInstanceMetadataEndpoint: () => Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/utils/staticStabilityProvider.d.ts b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/utils/staticStabilityProvider.d.ts new file mode 100644 index 000000000..9ad9ddcd1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/dist-types/utils/staticStabilityProvider.d.ts @@ -0,0 +1,16 @@ +import type { Logger, Provider } from "@smithy/types"; +import type { InstanceMetadataCredentials } from "../types"; +/** + * @internal + * + * IMDS credential supports static stability feature. When used, the expiration + * of recently issued credentials is extended. The server side allows using + * the recently expired credentials. This mitigates impact when clients using + * refreshable credentials are unable to retrieve updates. + * + * @param provider Credential provider + * @returns A credential provider that supports static stability + */ +export declare const staticStabilityProvider: (provider: Provider, options?: { + logger?: Logger; +}) => Provider; diff --git a/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/package.json b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/package.json new file mode 100644 index 000000000..cf25306a2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/credential-provider-imds/package.json @@ -0,0 +1,70 @@ +{ + "name": "@smithy/credential-provider-imds", + "version": "4.2.12", + "description": "AWS credential provider that sources credentials from the EC2 instance metadata service and ECS container metadata service", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline credential-provider-imds", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "keywords": [ + "aws", + "credentials" + ], + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/node-config-provider": "^4.3.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/credential-provider-imds", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/credential-provider-imds" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/LICENSE b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/README.md b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/README.md new file mode 100644 index 000000000..e52e8f13d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/README.md @@ -0,0 +1,11 @@ +# @smithy/fetch-http-handler + +[![NPM version](https://img.shields.io/npm/v/@smithy/fetch-http-handler/latest.svg)](https://www.npmjs.com/package/@smithy/fetch-http-handler) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/fetch-http-handler.svg)](https://www.npmjs.com/package/@smithy/fetch-http-handler) + +This is the default `requestHandler` used for browser applications. +Since Node.js introduced experimental Web Streams API in v16.5.0 and made it stable in v21.0.0, +you can consider using `fetch-http-handler` in Node.js, although it's not recommended. + +For the Node.js default `requestHandler` implementation, see instead +[`@smithy/node-http-handler`](https://www.npmjs.com/package/@smithy/node-http-handler). diff --git a/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-cjs/index.js new file mode 100644 index 000000000..82c593f61 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-cjs/index.js @@ -0,0 +1,233 @@ +'use strict'; + +var protocolHttp = require('@smithy/protocol-http'); +var querystringBuilder = require('@smithy/querystring-builder'); +var utilBase64 = require('@smithy/util-base64'); + +function createRequest(url, requestOptions) { + return new Request(url, requestOptions); +} + +function requestTimeout(timeoutInMs = 0) { + return new Promise((resolve, reject) => { + if (timeoutInMs) { + setTimeout(() => { + const timeoutError = new Error(`Request did not complete within ${timeoutInMs} ms`); + timeoutError.name = "TimeoutError"; + reject(timeoutError); + }, timeoutInMs); + } + }); +} + +const keepAliveSupport = { + supported: undefined, +}; +class FetchHttpHandler { + config; + configProvider; + static create(instanceOrOptions) { + if (typeof instanceOrOptions?.handle === "function") { + return instanceOrOptions; + } + return new FetchHttpHandler(instanceOrOptions); + } + constructor(options) { + if (typeof options === "function") { + this.configProvider = options().then((opts) => opts || {}); + } + else { + this.config = options ?? {}; + this.configProvider = Promise.resolve(this.config); + } + if (keepAliveSupport.supported === undefined) { + keepAliveSupport.supported = Boolean(typeof Request !== "undefined" && "keepalive" in createRequest("https://[::1]")); + } + } + destroy() { + } + async handle(request, { abortSignal, requestTimeout: requestTimeout$1 } = {}) { + if (!this.config) { + this.config = await this.configProvider; + } + const requestTimeoutInMs = requestTimeout$1 ?? this.config.requestTimeout; + const keepAlive = this.config.keepAlive === true; + const credentials = this.config.credentials; + if (abortSignal?.aborted) { + const abortError = buildAbortError(abortSignal); + return Promise.reject(abortError); + } + let path = request.path; + const queryString = querystringBuilder.buildQueryString(request.query || {}); + if (queryString) { + path += `?${queryString}`; + } + if (request.fragment) { + path += `#${request.fragment}`; + } + let auth = ""; + if (request.username != null || request.password != null) { + const username = request.username ?? ""; + const password = request.password ?? ""; + auth = `${username}:${password}@`; + } + const { port, method } = request; + const url = `${request.protocol}//${auth}${request.hostname}${port ? `:${port}` : ""}${path}`; + const body = method === "GET" || method === "HEAD" ? undefined : request.body; + const requestOptions = { + body, + headers: new Headers(request.headers), + method: method, + credentials, + }; + if (this.config?.cache) { + requestOptions.cache = this.config.cache; + } + if (body) { + requestOptions.duplex = "half"; + } + if (typeof AbortController !== "undefined") { + requestOptions.signal = abortSignal; + } + if (keepAliveSupport.supported) { + requestOptions.keepalive = keepAlive; + } + if (typeof this.config.requestInit === "function") { + Object.assign(requestOptions, this.config.requestInit(request)); + } + let removeSignalEventListener = () => { }; + const fetchRequest = createRequest(url, requestOptions); + const raceOfPromises = [ + fetch(fetchRequest).then((response) => { + const fetchHeaders = response.headers; + const transformedHeaders = {}; + for (const pair of fetchHeaders.entries()) { + transformedHeaders[pair[0]] = pair[1]; + } + const hasReadableStream = response.body != undefined; + if (!hasReadableStream) { + return response.blob().then((body) => ({ + response: new protocolHttp.HttpResponse({ + headers: transformedHeaders, + reason: response.statusText, + statusCode: response.status, + body, + }), + })); + } + return { + response: new protocolHttp.HttpResponse({ + headers: transformedHeaders, + reason: response.statusText, + statusCode: response.status, + body: response.body, + }), + }; + }), + requestTimeout(requestTimeoutInMs), + ]; + if (abortSignal) { + raceOfPromises.push(new Promise((resolve, reject) => { + const onAbort = () => { + const abortError = buildAbortError(abortSignal); + reject(abortError); + }; + if (typeof abortSignal.addEventListener === "function") { + const signal = abortSignal; + signal.addEventListener("abort", onAbort, { once: true }); + removeSignalEventListener = () => signal.removeEventListener("abort", onAbort); + } + else { + abortSignal.onabort = onAbort; + } + })); + } + return Promise.race(raceOfPromises).finally(removeSignalEventListener); + } + updateHttpClientConfig(key, value) { + this.config = undefined; + this.configProvider = this.configProvider.then((config) => { + config[key] = value; + return config; + }); + } + httpHandlerConfigs() { + return this.config ?? {}; + } +} +function buildAbortError(abortSignal) { + const reason = abortSignal && typeof abortSignal === "object" && "reason" in abortSignal + ? abortSignal.reason + : undefined; + if (reason) { + if (reason instanceof Error) { + const abortError = new Error("Request aborted"); + abortError.name = "AbortError"; + abortError.cause = reason; + return abortError; + } + const abortError = new Error(String(reason)); + abortError.name = "AbortError"; + return abortError; + } + const abortError = new Error("Request aborted"); + abortError.name = "AbortError"; + return abortError; +} + +const streamCollector = async (stream) => { + if ((typeof Blob === "function" && stream instanceof Blob) || stream.constructor?.name === "Blob") { + if (Blob.prototype.arrayBuffer !== undefined) { + return new Uint8Array(await stream.arrayBuffer()); + } + return collectBlob(stream); + } + return collectStream(stream); +}; +async function collectBlob(blob) { + const base64 = await readToBase64(blob); + const arrayBuffer = utilBase64.fromBase64(base64); + return new Uint8Array(arrayBuffer); +} +async function collectStream(stream) { + const chunks = []; + const reader = stream.getReader(); + let isDone = false; + let length = 0; + while (!isDone) { + const { done, value } = await reader.read(); + if (value) { + chunks.push(value); + length += value.length; + } + isDone = done; + } + const collected = new Uint8Array(length); + let offset = 0; + for (const chunk of chunks) { + collected.set(chunk, offset); + offset += chunk.length; + } + return collected; +} +function readToBase64(blob) { + return new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.onloadend = () => { + if (reader.readyState !== 2) { + return reject(new Error("Reader aborted too early")); + } + const result = (reader.result ?? ""); + const commaIndex = result.indexOf(","); + const dataOffset = commaIndex > -1 ? commaIndex + 1 : result.length; + resolve(result.substring(dataOffset)); + }; + reader.onabort = () => reject(new Error("Read aborted")); + reader.onerror = () => reject(reader.error); + reader.readAsDataURL(blob); + }); +} + +exports.FetchHttpHandler = FetchHttpHandler; +exports.keepAliveSupport = keepAliveSupport; +exports.streamCollector = streamCollector; diff --git a/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-es/create-request.js b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-es/create-request.js new file mode 100644 index 000000000..b6f1816e9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-es/create-request.js @@ -0,0 +1,3 @@ +export function createRequest(url, requestOptions) { + return new Request(url, requestOptions); +} diff --git a/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-es/fetch-http-handler.js b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-es/fetch-http-handler.js new file mode 100644 index 000000000..f0aeed82e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-es/fetch-http-handler.js @@ -0,0 +1,158 @@ +import { HttpResponse } from "@smithy/protocol-http"; +import { buildQueryString } from "@smithy/querystring-builder"; +import { createRequest } from "./create-request"; +import { requestTimeout as requestTimeoutFn } from "./request-timeout"; +export const keepAliveSupport = { + supported: undefined, +}; +export class FetchHttpHandler { + config; + configProvider; + static create(instanceOrOptions) { + if (typeof instanceOrOptions?.handle === "function") { + return instanceOrOptions; + } + return new FetchHttpHandler(instanceOrOptions); + } + constructor(options) { + if (typeof options === "function") { + this.configProvider = options().then((opts) => opts || {}); + } + else { + this.config = options ?? {}; + this.configProvider = Promise.resolve(this.config); + } + if (keepAliveSupport.supported === undefined) { + keepAliveSupport.supported = Boolean(typeof Request !== "undefined" && "keepalive" in createRequest("https://[::1]")); + } + } + destroy() { + } + async handle(request, { abortSignal, requestTimeout } = {}) { + if (!this.config) { + this.config = await this.configProvider; + } + const requestTimeoutInMs = requestTimeout ?? this.config.requestTimeout; + const keepAlive = this.config.keepAlive === true; + const credentials = this.config.credentials; + if (abortSignal?.aborted) { + const abortError = buildAbortError(abortSignal); + return Promise.reject(abortError); + } + let path = request.path; + const queryString = buildQueryString(request.query || {}); + if (queryString) { + path += `?${queryString}`; + } + if (request.fragment) { + path += `#${request.fragment}`; + } + let auth = ""; + if (request.username != null || request.password != null) { + const username = request.username ?? ""; + const password = request.password ?? ""; + auth = `${username}:${password}@`; + } + const { port, method } = request; + const url = `${request.protocol}//${auth}${request.hostname}${port ? `:${port}` : ""}${path}`; + const body = method === "GET" || method === "HEAD" ? undefined : request.body; + const requestOptions = { + body, + headers: new Headers(request.headers), + method: method, + credentials, + }; + if (this.config?.cache) { + requestOptions.cache = this.config.cache; + } + if (body) { + requestOptions.duplex = "half"; + } + if (typeof AbortController !== "undefined") { + requestOptions.signal = abortSignal; + } + if (keepAliveSupport.supported) { + requestOptions.keepalive = keepAlive; + } + if (typeof this.config.requestInit === "function") { + Object.assign(requestOptions, this.config.requestInit(request)); + } + let removeSignalEventListener = () => { }; + const fetchRequest = createRequest(url, requestOptions); + const raceOfPromises = [ + fetch(fetchRequest).then((response) => { + const fetchHeaders = response.headers; + const transformedHeaders = {}; + for (const pair of fetchHeaders.entries()) { + transformedHeaders[pair[0]] = pair[1]; + } + const hasReadableStream = response.body != undefined; + if (!hasReadableStream) { + return response.blob().then((body) => ({ + response: new HttpResponse({ + headers: transformedHeaders, + reason: response.statusText, + statusCode: response.status, + body, + }), + })); + } + return { + response: new HttpResponse({ + headers: transformedHeaders, + reason: response.statusText, + statusCode: response.status, + body: response.body, + }), + }; + }), + requestTimeoutFn(requestTimeoutInMs), + ]; + if (abortSignal) { + raceOfPromises.push(new Promise((resolve, reject) => { + const onAbort = () => { + const abortError = buildAbortError(abortSignal); + reject(abortError); + }; + if (typeof abortSignal.addEventListener === "function") { + const signal = abortSignal; + signal.addEventListener("abort", onAbort, { once: true }); + removeSignalEventListener = () => signal.removeEventListener("abort", onAbort); + } + else { + abortSignal.onabort = onAbort; + } + })); + } + return Promise.race(raceOfPromises).finally(removeSignalEventListener); + } + updateHttpClientConfig(key, value) { + this.config = undefined; + this.configProvider = this.configProvider.then((config) => { + config[key] = value; + return config; + }); + } + httpHandlerConfigs() { + return this.config ?? {}; + } +} +function buildAbortError(abortSignal) { + const reason = abortSignal && typeof abortSignal === "object" && "reason" in abortSignal + ? abortSignal.reason + : undefined; + if (reason) { + if (reason instanceof Error) { + const abortError = new Error("Request aborted"); + abortError.name = "AbortError"; + abortError.cause = reason; + return abortError; + } + const abortError = new Error(String(reason)); + abortError.name = "AbortError"; + return abortError; + } + const abortError = new Error("Request aborted"); + abortError.name = "AbortError"; + return abortError; +} diff --git a/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-es/index.js new file mode 100644 index 000000000..a0c61f1b0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-es/index.js @@ -0,0 +1,2 @@ +export * from "./fetch-http-handler"; +export * from "./stream-collector"; diff --git a/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-es/request-timeout.js b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-es/request-timeout.js new file mode 100644 index 000000000..66b09b260 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-es/request-timeout.js @@ -0,0 +1,11 @@ +export function requestTimeout(timeoutInMs = 0) { + return new Promise((resolve, reject) => { + if (timeoutInMs) { + setTimeout(() => { + const timeoutError = new Error(`Request did not complete within ${timeoutInMs} ms`); + timeoutError.name = "TimeoutError"; + reject(timeoutError); + }, timeoutInMs); + } + }); +} diff --git a/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-es/stream-collector.js b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-es/stream-collector.js new file mode 100644 index 000000000..a400d9b14 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-es/stream-collector.js @@ -0,0 +1,53 @@ +import { fromBase64 } from "@smithy/util-base64"; +export const streamCollector = async (stream) => { + if ((typeof Blob === "function" && stream instanceof Blob) || stream.constructor?.name === "Blob") { + if (Blob.prototype.arrayBuffer !== undefined) { + return new Uint8Array(await stream.arrayBuffer()); + } + return collectBlob(stream); + } + return collectStream(stream); +}; +async function collectBlob(blob) { + const base64 = await readToBase64(blob); + const arrayBuffer = fromBase64(base64); + return new Uint8Array(arrayBuffer); +} +async function collectStream(stream) { + const chunks = []; + const reader = stream.getReader(); + let isDone = false; + let length = 0; + while (!isDone) { + const { done, value } = await reader.read(); + if (value) { + chunks.push(value); + length += value.length; + } + isDone = done; + } + const collected = new Uint8Array(length); + let offset = 0; + for (const chunk of chunks) { + collected.set(chunk, offset); + offset += chunk.length; + } + return collected; +} +function readToBase64(blob) { + return new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.onloadend = () => { + if (reader.readyState !== 2) { + return reject(new Error("Reader aborted too early")); + } + const result = (reader.result ?? ""); + const commaIndex = result.indexOf(","); + const dataOffset = commaIndex > -1 ? commaIndex + 1 : result.length; + resolve(result.substring(dataOffset)); + }; + reader.onabort = () => reject(new Error("Read aborted")); + reader.onerror = () => reject(reader.error); + reader.readAsDataURL(blob); + }); +} diff --git a/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-types/create-request.d.ts b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-types/create-request.d.ts new file mode 100644 index 000000000..4fb2e1318 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-types/create-request.d.ts @@ -0,0 +1,6 @@ +import type { AdditionalRequestParameters } from "./fetch-http-handler"; +/** + * @internal + * For mocking/interception. + */ +export declare function createRequest(url: string, requestOptions?: RequestInit & AdditionalRequestParameters): Request; diff --git a/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-types/fetch-http-handler.d.ts b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-types/fetch-http-handler.d.ts new file mode 100644 index 000000000..c9b057d27 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-types/fetch-http-handler.d.ts @@ -0,0 +1,42 @@ +import type { HttpHandler, HttpRequest } from "@smithy/protocol-http"; +import { HttpResponse } from "@smithy/protocol-http"; +import type { FetchHttpHandlerOptions } from "@smithy/types"; +import type { HttpHandlerOptions, Provider } from "@smithy/types"; +/** + * @public + */ +export { FetchHttpHandlerOptions }; +/** + * @internal + * Detection of keepalive support. Can be overridden for testing. + */ +export declare const keepAliveSupport: { + supported: undefined | boolean; +}; +/** + * @internal + */ +export type AdditionalRequestParameters = { + duplex?: "half"; +}; +/** + * @public + * + * HttpHandler implementation using browsers' `fetch` global function. + */ +export declare class FetchHttpHandler implements HttpHandler { + private config?; + private configProvider; + /** + * @returns the input if it is an HttpHandler of any class, + * or instantiates a new instance of this handler. + */ + static create(instanceOrOptions?: HttpHandler | FetchHttpHandlerOptions | Provider): FetchHttpHandler | HttpHandler; + constructor(options?: FetchHttpHandlerOptions | Provider); + destroy(): void; + handle(request: HttpRequest, { abortSignal, requestTimeout }?: HttpHandlerOptions): Promise<{ + response: HttpResponse; + }>; + updateHttpClientConfig(key: keyof FetchHttpHandlerOptions, value: FetchHttpHandlerOptions[typeof key]): void; + httpHandlerConfigs(): FetchHttpHandlerOptions; +} diff --git a/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-types/index.d.ts new file mode 100644 index 000000000..a0c61f1b0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-types/index.d.ts @@ -0,0 +1,2 @@ +export * from "./fetch-http-handler"; +export * from "./stream-collector"; diff --git a/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-types/request-timeout.d.ts b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-types/request-timeout.d.ts new file mode 100644 index 000000000..28d784b29 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-types/request-timeout.d.ts @@ -0,0 +1 @@ +export declare function requestTimeout(timeoutInMs?: number): Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-types/stream-collector.d.ts b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-types/stream-collector.d.ts new file mode 100644 index 000000000..6ae2a9323 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-types/stream-collector.d.ts @@ -0,0 +1,2 @@ +import type { StreamCollector } from "@smithy/types"; +export declare const streamCollector: StreamCollector; diff --git a/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/create-request.d.ts b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/create-request.d.ts new file mode 100644 index 000000000..d668b0654 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/create-request.d.ts @@ -0,0 +1,6 @@ +import { AdditionalRequestParameters } from "./fetch-http-handler"; +/** + * @internal + * For mocking/interception. + */ +export declare function createRequest(url: string, requestOptions?: RequestInit & AdditionalRequestParameters): Request; diff --git a/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/fetch-http-handler.d.ts b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/fetch-http-handler.d.ts new file mode 100644 index 000000000..254479547 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/fetch-http-handler.d.ts @@ -0,0 +1,42 @@ +import { HttpHandler, HttpRequest } from "@smithy/protocol-http"; +import { HttpResponse } from "@smithy/protocol-http"; +import { FetchHttpHandlerOptions } from "@smithy/types"; +import { HttpHandlerOptions, Provider } from "@smithy/types"; +/** + * @public + */ +export { FetchHttpHandlerOptions }; +/** + * @internal + * Detection of keepalive support. Can be overridden for testing. + */ +export declare const keepAliveSupport: { + supported: undefined | boolean; +}; +/** + * @internal + */ +export type AdditionalRequestParameters = { + duplex?: "half"; +}; +/** + * @public + * + * HttpHandler implementation using browsers' `fetch` global function. + */ +export declare class FetchHttpHandler implements HttpHandler { + private config?; + private configProvider; + /** + * @returns the input if it is an HttpHandler of any class, + * or instantiates a new instance of this handler. + */ + static create(instanceOrOptions?: HttpHandler | FetchHttpHandlerOptions | Provider): FetchHttpHandler | HttpHandler; + constructor(options?: FetchHttpHandlerOptions | Provider); + destroy(): void; + handle(request: HttpRequest, { abortSignal, requestTimeout }?: HttpHandlerOptions): Promise<{ + response: HttpResponse; + }>; + updateHttpClientConfig(key: keyof FetchHttpHandlerOptions, value: FetchHttpHandlerOptions[typeof key]): void; + httpHandlerConfigs(): FetchHttpHandlerOptions; +} diff --git a/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..a0c61f1b0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/index.d.ts @@ -0,0 +1,2 @@ +export * from "./fetch-http-handler"; +export * from "./stream-collector"; diff --git a/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/request-timeout.d.ts b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/request-timeout.d.ts new file mode 100644 index 000000000..28d784b29 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/request-timeout.d.ts @@ -0,0 +1 @@ +export declare function requestTimeout(timeoutInMs?: number): Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/stream-collector.d.ts b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/stream-collector.d.ts new file mode 100644 index 000000000..b2ca81224 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/stream-collector.d.ts @@ -0,0 +1,2 @@ +import { StreamCollector } from "@smithy/types"; +export declare const streamCollector: StreamCollector; diff --git a/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/package.json b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/package.json new file mode 100644 index 000000000..a787e999b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/fetch-http-handler/package.json @@ -0,0 +1,69 @@ +{ + "name": "@smithy/fetch-http-handler", + "version": "5.3.15", + "description": "Provides a way to make requests", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline fetch-http-handler", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "extract:docs": "api-extractor run --local", + "test": "yarn g:vitest run && yarn test:browser", + "test:watch": "yarn g:vitest watch", + "test:browser": "yarn g:vitest run -c vitest.config.browser.mts", + "test:browser:watch": "yarn g:vitest watch -c vitest.config.browser.mts" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "dependencies": { + "@smithy/protocol-http": "^5.3.12", + "@smithy/querystring-builder": "^4.2.12", + "@smithy/types": "^4.13.1", + "@smithy/util-base64": "^4.3.2", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@smithy/abort-controller": "^4.2.12", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/fetch-http-handler", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/fetch-http-handler" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + }, + "engines": { + "node": ">=18.0.0" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/hash-node/LICENSE b/food-ordering-app/server/node_modules/@smithy/hash-node/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/hash-node/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/hash-node/README.md b/food-ordering-app/server/node_modules/@smithy/hash-node/README.md new file mode 100644 index 000000000..a160019ee --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/hash-node/README.md @@ -0,0 +1,10 @@ +# @smithy/md5-node + +[![NPM version](https://img.shields.io/npm/v/@smithy/hash-node/latest.svg)](https://www.npmjs.com/package/@smithy/hash-node) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/hash-node.svg)](https://www.npmjs.com/package/@smithy/hash-node) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/food-ordering-app/server/node_modules/@smithy/hash-node/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/hash-node/dist-cjs/index.js new file mode 100644 index 000000000..9038b5fed --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/hash-node/dist-cjs/index.js @@ -0,0 +1,42 @@ +'use strict'; + +var utilBufferFrom = require('@smithy/util-buffer-from'); +var utilUtf8 = require('@smithy/util-utf8'); +var buffer = require('buffer'); +var crypto = require('crypto'); + +class Hash { + algorithmIdentifier; + secret; + hash; + constructor(algorithmIdentifier, secret) { + this.algorithmIdentifier = algorithmIdentifier; + this.secret = secret; + this.reset(); + } + update(toHash, encoding) { + this.hash.update(utilUtf8.toUint8Array(castSourceData(toHash, encoding))); + } + digest() { + return Promise.resolve(this.hash.digest()); + } + reset() { + this.hash = this.secret + ? crypto.createHmac(this.algorithmIdentifier, castSourceData(this.secret)) + : crypto.createHash(this.algorithmIdentifier); + } +} +function castSourceData(toCast, encoding) { + if (buffer.Buffer.isBuffer(toCast)) { + return toCast; + } + if (typeof toCast === "string") { + return utilBufferFrom.fromString(toCast, encoding); + } + if (ArrayBuffer.isView(toCast)) { + return utilBufferFrom.fromArrayBuffer(toCast.buffer, toCast.byteOffset, toCast.byteLength); + } + return utilBufferFrom.fromArrayBuffer(toCast); +} + +exports.Hash = Hash; diff --git a/food-ordering-app/server/node_modules/@smithy/hash-node/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/hash-node/dist-es/index.js new file mode 100644 index 000000000..ec73958a2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/hash-node/dist-es/index.js @@ -0,0 +1,37 @@ +import { fromArrayBuffer, fromString } from "@smithy/util-buffer-from"; +import { toUint8Array } from "@smithy/util-utf8"; +import { Buffer } from "buffer"; +import { createHash, createHmac } from "crypto"; +export class Hash { + algorithmIdentifier; + secret; + hash; + constructor(algorithmIdentifier, secret) { + this.algorithmIdentifier = algorithmIdentifier; + this.secret = secret; + this.reset(); + } + update(toHash, encoding) { + this.hash.update(toUint8Array(castSourceData(toHash, encoding))); + } + digest() { + return Promise.resolve(this.hash.digest()); + } + reset() { + this.hash = this.secret + ? createHmac(this.algorithmIdentifier, castSourceData(this.secret)) + : createHash(this.algorithmIdentifier); + } +} +function castSourceData(toCast, encoding) { + if (Buffer.isBuffer(toCast)) { + return toCast; + } + if (typeof toCast === "string") { + return fromString(toCast, encoding); + } + if (ArrayBuffer.isView(toCast)) { + return fromArrayBuffer(toCast.buffer, toCast.byteOffset, toCast.byteLength); + } + return fromArrayBuffer(toCast); +} diff --git a/food-ordering-app/server/node_modules/@smithy/hash-node/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/hash-node/dist-types/index.d.ts new file mode 100644 index 000000000..c47c51ba4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/hash-node/dist-types/index.d.ts @@ -0,0 +1,13 @@ +import type { Checksum, SourceData } from "@smithy/types"; +/** + * @internal + */ +export declare class Hash implements Checksum { + private readonly algorithmIdentifier; + private readonly secret?; + private hash; + constructor(algorithmIdentifier: string, secret?: SourceData); + update(toHash: SourceData, encoding?: "utf8" | "ascii" | "latin1"): void; + digest(): Promise; + reset(): void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/hash-node/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/hash-node/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..20ed5ed9f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/hash-node/dist-types/ts3.4/index.d.ts @@ -0,0 +1,13 @@ +import { Checksum, SourceData } from "@smithy/types"; +/** + * @internal + */ +export declare class Hash implements Checksum { + private readonly algorithmIdentifier; + private readonly secret?; + private hash; + constructor(algorithmIdentifier: string, secret?: SourceData); + update(toHash: SourceData, encoding?: "utf8" | "ascii" | "latin1"): void; + digest(): Promise; + reset(): void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/hash-node/package.json b/food-ordering-app/server/node_modules/@smithy/hash-node/package.json new file mode 100644 index 000000000..0dd8cd3b6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/hash-node/package.json @@ -0,0 +1,65 @@ +{ + "name": "@smithy/hash-node", + "version": "4.2.12", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline hash-node", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "devDependencies": { + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "hash-test-vectors": "^1.3.2", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "dependencies": { + "@smithy/types": "^4.13.1", + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/hash-node", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/hash-node" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/invalid-dependency/LICENSE b/food-ordering-app/server/node_modules/@smithy/invalid-dependency/LICENSE new file mode 100644 index 000000000..e907b5866 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/invalid-dependency/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/food-ordering-app/server/node_modules/@smithy/invalid-dependency/README.md b/food-ordering-app/server/node_modules/@smithy/invalid-dependency/README.md new file mode 100644 index 000000000..9110465a0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/invalid-dependency/README.md @@ -0,0 +1,10 @@ +# @smithy/invalid-dependency + +[![NPM version](https://img.shields.io/npm/v/@smithy/invalid-dependency/latest.svg)](https://www.npmjs.com/package/@smithy/invalid-dependency) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/invalid-dependency.svg)](https://www.npmjs.com/package/@smithy/invalid-dependency) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/food-ordering-app/server/node_modules/@smithy/invalid-dependency/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/invalid-dependency/dist-cjs/index.js new file mode 100644 index 000000000..4689b9a7e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/invalid-dependency/dist-cjs/index.js @@ -0,0 +1,10 @@ +'use strict'; + +const invalidFunction = (message) => () => { + throw new Error(message); +}; + +const invalidProvider = (message) => () => Promise.reject(message); + +exports.invalidFunction = invalidFunction; +exports.invalidProvider = invalidProvider; diff --git a/food-ordering-app/server/node_modules/@smithy/invalid-dependency/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/invalid-dependency/dist-es/index.js new file mode 100644 index 000000000..fa0f1a606 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/invalid-dependency/dist-es/index.js @@ -0,0 +1,2 @@ +export * from "./invalidFunction"; +export * from "./invalidProvider"; diff --git a/food-ordering-app/server/node_modules/@smithy/invalid-dependency/dist-es/invalidFunction.js b/food-ordering-app/server/node_modules/@smithy/invalid-dependency/dist-es/invalidFunction.js new file mode 100644 index 000000000..676f9cb03 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/invalid-dependency/dist-es/invalidFunction.js @@ -0,0 +1,3 @@ +export const invalidFunction = (message) => () => { + throw new Error(message); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/invalid-dependency/dist-es/invalidProvider.js b/food-ordering-app/server/node_modules/@smithy/invalid-dependency/dist-es/invalidProvider.js new file mode 100644 index 000000000..5305a0bc5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/invalid-dependency/dist-es/invalidProvider.js @@ -0,0 +1 @@ +export const invalidProvider = (message) => () => Promise.reject(message); diff --git a/food-ordering-app/server/node_modules/@smithy/invalid-dependency/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/invalid-dependency/dist-types/index.d.ts new file mode 100644 index 000000000..1c99a5680 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/invalid-dependency/dist-types/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./invalidFunction"; +/** + * @internal + */ +export * from "./invalidProvider"; diff --git a/food-ordering-app/server/node_modules/@smithy/invalid-dependency/dist-types/invalidFunction.d.ts b/food-ordering-app/server/node_modules/@smithy/invalid-dependency/dist-types/invalidFunction.d.ts new file mode 100644 index 000000000..2118b326f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/invalid-dependency/dist-types/invalidFunction.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const invalidFunction: (message: string) => () => never; diff --git a/food-ordering-app/server/node_modules/@smithy/invalid-dependency/dist-types/invalidProvider.d.ts b/food-ordering-app/server/node_modules/@smithy/invalid-dependency/dist-types/invalidProvider.d.ts new file mode 100644 index 000000000..64f1541b6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/invalid-dependency/dist-types/invalidProvider.d.ts @@ -0,0 +1,5 @@ +import type { Provider } from "@smithy/types"; +/** + * @internal + */ +export declare const invalidProvider: (message: string) => Provider; diff --git a/food-ordering-app/server/node_modules/@smithy/invalid-dependency/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/invalid-dependency/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..1c99a5680 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/invalid-dependency/dist-types/ts3.4/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./invalidFunction"; +/** + * @internal + */ +export * from "./invalidProvider"; diff --git a/food-ordering-app/server/node_modules/@smithy/invalid-dependency/dist-types/ts3.4/invalidFunction.d.ts b/food-ordering-app/server/node_modules/@smithy/invalid-dependency/dist-types/ts3.4/invalidFunction.d.ts new file mode 100644 index 000000000..2118b326f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/invalid-dependency/dist-types/ts3.4/invalidFunction.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const invalidFunction: (message: string) => () => never; diff --git a/food-ordering-app/server/node_modules/@smithy/invalid-dependency/dist-types/ts3.4/invalidProvider.d.ts b/food-ordering-app/server/node_modules/@smithy/invalid-dependency/dist-types/ts3.4/invalidProvider.d.ts new file mode 100644 index 000000000..3e9c28cc0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/invalid-dependency/dist-types/ts3.4/invalidProvider.d.ts @@ -0,0 +1,5 @@ +import { Provider } from "@smithy/types"; +/** + * @internal + */ +export declare const invalidProvider: (message: string) => Provider; diff --git a/food-ordering-app/server/node_modules/@smithy/invalid-dependency/package.json b/food-ordering-app/server/node_modules/@smithy/invalid-dependency/package.json new file mode 100644 index 000000000..4e059e84c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/invalid-dependency/package.json @@ -0,0 +1,61 @@ +{ + "name": "@smithy/invalid-dependency", + "version": "4.2.12", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline invalid-dependency", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/invalid-dependency", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/invalid-dependency" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + }, + "engines": { + "node": ">=18.0.0" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/is-array-buffer/LICENSE b/food-ordering-app/server/node_modules/@smithy/is-array-buffer/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/is-array-buffer/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/is-array-buffer/README.md b/food-ordering-app/server/node_modules/@smithy/is-array-buffer/README.md new file mode 100644 index 000000000..31853f24b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/is-array-buffer/README.md @@ -0,0 +1,10 @@ +# @smithy/is-array-buffer + +[![NPM version](https://img.shields.io/npm/v/@smithy/is-array-buffer/latest.svg)](https://www.npmjs.com/package/@smithy/is-array-buffer) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/is-array-buffer.svg)](https://www.npmjs.com/package/@smithy/is-array-buffer) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/food-ordering-app/server/node_modules/@smithy/is-array-buffer/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/is-array-buffer/dist-cjs/index.js new file mode 100644 index 000000000..3238bb771 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/is-array-buffer/dist-cjs/index.js @@ -0,0 +1,6 @@ +'use strict'; + +const isArrayBuffer = (arg) => (typeof ArrayBuffer === "function" && arg instanceof ArrayBuffer) || + Object.prototype.toString.call(arg) === "[object ArrayBuffer]"; + +exports.isArrayBuffer = isArrayBuffer; diff --git a/food-ordering-app/server/node_modules/@smithy/is-array-buffer/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/is-array-buffer/dist-es/index.js new file mode 100644 index 000000000..8096cca36 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/is-array-buffer/dist-es/index.js @@ -0,0 +1,2 @@ +export const isArrayBuffer = (arg) => (typeof ArrayBuffer === "function" && arg instanceof ArrayBuffer) || + Object.prototype.toString.call(arg) === "[object ArrayBuffer]"; diff --git a/food-ordering-app/server/node_modules/@smithy/is-array-buffer/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/is-array-buffer/dist-types/index.d.ts new file mode 100644 index 000000000..64f452e71 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/is-array-buffer/dist-types/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const isArrayBuffer: (arg: any) => arg is ArrayBuffer; diff --git a/food-ordering-app/server/node_modules/@smithy/is-array-buffer/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/is-array-buffer/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..64f452e71 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/is-array-buffer/dist-types/ts3.4/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const isArrayBuffer: (arg: any) => arg is ArrayBuffer; diff --git a/food-ordering-app/server/node_modules/@smithy/is-array-buffer/package.json b/food-ordering-app/server/node_modules/@smithy/is-array-buffer/package.json new file mode 100644 index 000000000..a473b735a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/is-array-buffer/package.json @@ -0,0 +1,61 @@ +{ + "name": "@smithy/is-array-buffer", + "version": "4.2.2", + "description": "Provides a function for detecting if an argument is an ArrayBuffer", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline is-array-buffer", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/is-array-buffer", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/is-array-buffer" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-content-length/LICENSE b/food-ordering-app/server/node_modules/@smithy/middleware-content-length/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-content-length/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-content-length/README.md b/food-ordering-app/server/node_modules/@smithy/middleware-content-length/README.md new file mode 100644 index 000000000..2d40d92a0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-content-length/README.md @@ -0,0 +1,4 @@ +# @smithy/middleware-content-length + +[![NPM version](https://img.shields.io/npm/v/@smithy/middleware-content-length/latest.svg)](https://www.npmjs.com/package/@smithy/middleware-content-length) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/middleware-content-length.svg)](https://www.npmjs.com/package/@smithy/middleware-content-length) diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-content-length/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/middleware-content-length/dist-cjs/index.js new file mode 100644 index 000000000..e957f1966 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-content-length/dist-cjs/index.js @@ -0,0 +1,46 @@ +'use strict'; + +var protocolHttp = require('@smithy/protocol-http'); + +const CONTENT_LENGTH_HEADER = "content-length"; +function contentLengthMiddleware(bodyLengthChecker) { + return (next) => async (args) => { + const request = args.request; + if (protocolHttp.HttpRequest.isInstance(request)) { + const { body, headers } = request; + if (body && + Object.keys(headers) + .map((str) => str.toLowerCase()) + .indexOf(CONTENT_LENGTH_HEADER) === -1) { + try { + const length = bodyLengthChecker(body); + request.headers = { + ...request.headers, + [CONTENT_LENGTH_HEADER]: String(length), + }; + } + catch (error) { + } + } + } + return next({ + ...args, + request, + }); + }; +} +const contentLengthMiddlewareOptions = { + step: "build", + tags: ["SET_CONTENT_LENGTH", "CONTENT_LENGTH"], + name: "contentLengthMiddleware", + override: true, +}; +const getContentLengthPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.add(contentLengthMiddleware(options.bodyLengthChecker), contentLengthMiddlewareOptions); + }, +}); + +exports.contentLengthMiddleware = contentLengthMiddleware; +exports.contentLengthMiddlewareOptions = contentLengthMiddlewareOptions; +exports.getContentLengthPlugin = getContentLengthPlugin; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-content-length/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/middleware-content-length/dist-es/index.js new file mode 100644 index 000000000..fa18e7101 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-content-length/dist-es/index.js @@ -0,0 +1,39 @@ +import { HttpRequest } from "@smithy/protocol-http"; +const CONTENT_LENGTH_HEADER = "content-length"; +export function contentLengthMiddleware(bodyLengthChecker) { + return (next) => async (args) => { + const request = args.request; + if (HttpRequest.isInstance(request)) { + const { body, headers } = request; + if (body && + Object.keys(headers) + .map((str) => str.toLowerCase()) + .indexOf(CONTENT_LENGTH_HEADER) === -1) { + try { + const length = bodyLengthChecker(body); + request.headers = { + ...request.headers, + [CONTENT_LENGTH_HEADER]: String(length), + }; + } + catch (error) { + } + } + } + return next({ + ...args, + request, + }); + }; +} +export const contentLengthMiddlewareOptions = { + step: "build", + tags: ["SET_CONTENT_LENGTH", "CONTENT_LENGTH"], + name: "contentLengthMiddleware", + override: true, +}; +export const getContentLengthPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.add(contentLengthMiddleware(options.bodyLengthChecker), contentLengthMiddlewareOptions); + }, +}); diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-content-length/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-content-length/dist-types/index.d.ts new file mode 100644 index 000000000..35d6588d9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-content-length/dist-types/index.d.ts @@ -0,0 +1,6 @@ +import type { BodyLengthCalculator, BuildHandlerOptions, BuildMiddleware, Pluggable } from "@smithy/types"; +export declare function contentLengthMiddleware(bodyLengthChecker: BodyLengthCalculator): BuildMiddleware; +export declare const contentLengthMiddlewareOptions: BuildHandlerOptions; +export declare const getContentLengthPlugin: (options: { + bodyLengthChecker: BodyLengthCalculator; +}) => Pluggable; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-content-length/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-content-length/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..91a7000a7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-content-length/dist-types/ts3.4/index.d.ts @@ -0,0 +1,6 @@ +import { BodyLengthCalculator, BuildHandlerOptions, BuildMiddleware, Pluggable } from "@smithy/types"; +export declare function contentLengthMiddleware(bodyLengthChecker: BodyLengthCalculator): BuildMiddleware; +export declare const contentLengthMiddlewareOptions: BuildHandlerOptions; +export declare const getContentLengthPlugin: (options: { + bodyLengthChecker: BodyLengthCalculator; +}) => Pluggable; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-content-length/package.json b/food-ordering-app/server/node_modules/@smithy/middleware-content-length/package.json new file mode 100644 index 000000000..04cd1ecf0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-content-length/package.json @@ -0,0 +1,64 @@ +{ + "name": "@smithy/middleware-content-length", + "version": "4.2.12", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline middleware-content-length", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "exit 0", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/middleware-content-length", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/middleware-content-length" + }, + "devDependencies": { + "@smithy/util-test": "^0.2.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/LICENSE b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/README.md b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/README.md new file mode 100644 index 000000000..e03cbb288 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/README.md @@ -0,0 +1,10 @@ +# @smithy/middleware-endpoint + +[![NPM version](https://img.shields.io/npm/v/@smithy/middleware-endpoint/latest.svg)](https://www.npmjs.com/package/@smithy/middleware-endpoint) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/middleware-endpoint.svg)](https://www.npmjs.com/package/@smithy/middleware-endpoint) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointFromConfig.browser.js b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointFromConfig.browser.js new file mode 100644 index 000000000..9b578a7aa --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointFromConfig.browser.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getEndpointFromConfig = void 0; +const getEndpointFromConfig = async (serviceId) => undefined; +exports.getEndpointFromConfig = getEndpointFromConfig; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointFromConfig.js b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointFromConfig.js new file mode 100644 index 000000000..262b45be6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointFromConfig.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getEndpointFromConfig = void 0; +const node_config_provider_1 = require("@smithy/node-config-provider"); +const getEndpointUrlConfig_1 = require("./getEndpointUrlConfig"); +const getEndpointFromConfig = async (serviceId) => (0, node_config_provider_1.loadConfig)((0, getEndpointUrlConfig_1.getEndpointUrlConfig)(serviceId ?? ""))(); +exports.getEndpointFromConfig = getEndpointFromConfig; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointUrlConfig.js b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointUrlConfig.js new file mode 100644 index 000000000..fe5c010a5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointUrlConfig.js @@ -0,0 +1,35 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getEndpointUrlConfig = void 0; +const shared_ini_file_loader_1 = require("@smithy/shared-ini-file-loader"); +const ENV_ENDPOINT_URL = "AWS_ENDPOINT_URL"; +const CONFIG_ENDPOINT_URL = "endpoint_url"; +const getEndpointUrlConfig = (serviceId) => ({ + environmentVariableSelector: (env) => { + const serviceSuffixParts = serviceId.split(" ").map((w) => w.toUpperCase()); + const serviceEndpointUrl = env[[ENV_ENDPOINT_URL, ...serviceSuffixParts].join("_")]; + if (serviceEndpointUrl) + return serviceEndpointUrl; + const endpointUrl = env[ENV_ENDPOINT_URL]; + if (endpointUrl) + return endpointUrl; + return undefined; + }, + configFileSelector: (profile, config) => { + if (config && profile.services) { + const servicesSection = config[["services", profile.services].join(shared_ini_file_loader_1.CONFIG_PREFIX_SEPARATOR)]; + if (servicesSection) { + const servicePrefixParts = serviceId.split(" ").map((w) => w.toLowerCase()); + const endpointUrl = servicesSection[[servicePrefixParts.join("_"), CONFIG_ENDPOINT_URL].join(shared_ini_file_loader_1.CONFIG_PREFIX_SEPARATOR)]; + if (endpointUrl) + return endpointUrl; + } + } + const endpointUrl = profile[CONFIG_ENDPOINT_URL]; + if (endpointUrl) + return endpointUrl; + return undefined; + }, + default: undefined, +}); +exports.getEndpointUrlConfig = getEndpointUrlConfig; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-cjs/index.js new file mode 100644 index 000000000..e7121aa03 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-cjs/index.js @@ -0,0 +1,264 @@ +'use strict'; + +var getEndpointFromConfig = require('./adaptors/getEndpointFromConfig'); +var urlParser = require('@smithy/url-parser'); +var core = require('@smithy/core'); +var utilMiddleware = require('@smithy/util-middleware'); +var middlewareSerde = require('@smithy/middleware-serde'); + +const resolveParamsForS3 = async (endpointParams) => { + const bucket = endpointParams?.Bucket || ""; + if (typeof endpointParams.Bucket === "string") { + endpointParams.Bucket = bucket.replace(/#/g, encodeURIComponent("#")).replace(/\?/g, encodeURIComponent("?")); + } + if (isArnBucketName(bucket)) { + if (endpointParams.ForcePathStyle === true) { + throw new Error("Path-style addressing cannot be used with ARN buckets"); + } + } + else if (!isDnsCompatibleBucketName(bucket) || + (bucket.indexOf(".") !== -1 && !String(endpointParams.Endpoint).startsWith("http:")) || + bucket.toLowerCase() !== bucket || + bucket.length < 3) { + endpointParams.ForcePathStyle = true; + } + if (endpointParams.DisableMultiRegionAccessPoints) { + endpointParams.disableMultiRegionAccessPoints = true; + endpointParams.DisableMRAP = true; + } + return endpointParams; +}; +const DOMAIN_PATTERN = /^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/; +const IP_ADDRESS_PATTERN = /(\d+\.){3}\d+/; +const DOTS_PATTERN = /\.\./; +const isDnsCompatibleBucketName = (bucketName) => DOMAIN_PATTERN.test(bucketName) && !IP_ADDRESS_PATTERN.test(bucketName) && !DOTS_PATTERN.test(bucketName); +const isArnBucketName = (bucketName) => { + const [arn, partition, service, , , bucket] = bucketName.split(":"); + const isArn = arn === "arn" && bucketName.split(":").length >= 6; + const isValidArn = Boolean(isArn && partition && service && bucket); + if (isArn && !isValidArn) { + throw new Error(`Invalid ARN: ${bucketName} was an invalid ARN.`); + } + return isValidArn; +}; + +const createConfigValueProvider = (configKey, canonicalEndpointParamKey, config, isClientContextParam = false) => { + const configProvider = async () => { + let configValue; + if (isClientContextParam) { + const clientContextParams = config.clientContextParams; + const nestedValue = clientContextParams?.[configKey]; + configValue = nestedValue ?? config[configKey] ?? config[canonicalEndpointParamKey]; + } + else { + configValue = config[configKey] ?? config[canonicalEndpointParamKey]; + } + if (typeof configValue === "function") { + return configValue(); + } + return configValue; + }; + if (configKey === "credentialScope" || canonicalEndpointParamKey === "CredentialScope") { + return async () => { + const credentials = typeof config.credentials === "function" ? await config.credentials() : config.credentials; + const configValue = credentials?.credentialScope ?? credentials?.CredentialScope; + return configValue; + }; + } + if (configKey === "accountId" || canonicalEndpointParamKey === "AccountId") { + return async () => { + const credentials = typeof config.credentials === "function" ? await config.credentials() : config.credentials; + const configValue = credentials?.accountId ?? credentials?.AccountId; + return configValue; + }; + } + if (configKey === "endpoint" || canonicalEndpointParamKey === "endpoint") { + return async () => { + if (config.isCustomEndpoint === false) { + return undefined; + } + const endpoint = await configProvider(); + if (endpoint && typeof endpoint === "object") { + if ("url" in endpoint) { + return endpoint.url.href; + } + if ("hostname" in endpoint) { + const { protocol, hostname, port, path } = endpoint; + return `${protocol}//${hostname}${port ? ":" + port : ""}${path}`; + } + } + return endpoint; + }; + } + return configProvider; +}; + +const toEndpointV1 = (endpoint) => { + if (typeof endpoint === "object") { + if ("url" in endpoint) { + const v1Endpoint = urlParser.parseUrl(endpoint.url); + if (endpoint.headers) { + v1Endpoint.headers = {}; + for (const [name, values] of Object.entries(endpoint.headers)) { + v1Endpoint.headers[name.toLowerCase()] = values.join(", "); + } + } + return v1Endpoint; + } + return endpoint; + } + return urlParser.parseUrl(endpoint); +}; + +const getEndpointFromInstructions = async (commandInput, instructionsSupplier, clientConfig, context) => { + if (!clientConfig.isCustomEndpoint) { + let endpointFromConfig; + if (clientConfig.serviceConfiguredEndpoint) { + endpointFromConfig = await clientConfig.serviceConfiguredEndpoint(); + } + else { + endpointFromConfig = await getEndpointFromConfig.getEndpointFromConfig(clientConfig.serviceId); + } + if (endpointFromConfig) { + clientConfig.endpoint = () => Promise.resolve(toEndpointV1(endpointFromConfig)); + clientConfig.isCustomEndpoint = true; + } + } + const endpointParams = await resolveParams(commandInput, instructionsSupplier, clientConfig); + if (typeof clientConfig.endpointProvider !== "function") { + throw new Error("config.endpointProvider is not set."); + } + const endpoint = clientConfig.endpointProvider(endpointParams, context); + if (clientConfig.isCustomEndpoint && clientConfig.endpoint) { + const customEndpoint = await clientConfig.endpoint(); + if (customEndpoint?.headers) { + endpoint.headers ??= {}; + for (const [name, value] of Object.entries(customEndpoint.headers)) { + endpoint.headers[name] = Array.isArray(value) ? value : [value]; + } + } + } + return endpoint; +}; +const resolveParams = async (commandInput, instructionsSupplier, clientConfig) => { + const endpointParams = {}; + const instructions = instructionsSupplier?.getEndpointParameterInstructions?.() || {}; + for (const [name, instruction] of Object.entries(instructions)) { + switch (instruction.type) { + case "staticContextParams": + endpointParams[name] = instruction.value; + break; + case "contextParams": + endpointParams[name] = commandInput[instruction.name]; + break; + case "clientContextParams": + case "builtInParams": + endpointParams[name] = await createConfigValueProvider(instruction.name, name, clientConfig, instruction.type !== "builtInParams")(); + break; + case "operationContextParams": + endpointParams[name] = instruction.get(commandInput); + break; + default: + throw new Error("Unrecognized endpoint parameter instruction: " + JSON.stringify(instruction)); + } + } + if (Object.keys(instructions).length === 0) { + Object.assign(endpointParams, clientConfig); + } + if (String(clientConfig.serviceId).toLowerCase() === "s3") { + await resolveParamsForS3(endpointParams); + } + return endpointParams; +}; + +const endpointMiddleware = ({ config, instructions, }) => { + return (next, context) => async (args) => { + if (config.isCustomEndpoint) { + core.setFeature(context, "ENDPOINT_OVERRIDE", "N"); + } + const endpoint = await getEndpointFromInstructions(args.input, { + getEndpointParameterInstructions() { + return instructions; + }, + }, { ...config }, context); + context.endpointV2 = endpoint; + context.authSchemes = endpoint.properties?.authSchemes; + const authScheme = context.authSchemes?.[0]; + if (authScheme) { + context["signing_region"] = authScheme.signingRegion; + context["signing_service"] = authScheme.signingName; + const smithyContext = utilMiddleware.getSmithyContext(context); + const httpAuthOption = smithyContext?.selectedHttpAuthScheme?.httpAuthOption; + if (httpAuthOption) { + httpAuthOption.signingProperties = Object.assign(httpAuthOption.signingProperties || {}, { + signing_region: authScheme.signingRegion, + signingRegion: authScheme.signingRegion, + signing_service: authScheme.signingName, + signingName: authScheme.signingName, + signingRegionSet: authScheme.signingRegionSet, + }, authScheme.properties); + } + } + return next({ + ...args, + }); + }; +}; + +const endpointMiddlewareOptions = { + step: "serialize", + tags: ["ENDPOINT_PARAMETERS", "ENDPOINT_V2", "ENDPOINT"], + name: "endpointV2Middleware", + override: true, + relation: "before", + toMiddleware: middlewareSerde.serializerMiddlewareOption.name, +}; +const getEndpointPlugin = (config, instructions) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo(endpointMiddleware({ + config, + instructions, + }), endpointMiddlewareOptions); + }, +}); + +const resolveEndpointConfig = (input) => { + const tls = input.tls ?? true; + const { endpoint, useDualstackEndpoint, useFipsEndpoint } = input; + const customEndpointProvider = endpoint != null ? async () => toEndpointV1(await utilMiddleware.normalizeProvider(endpoint)()) : undefined; + const isCustomEndpoint = !!endpoint; + const resolvedConfig = Object.assign(input, { + endpoint: customEndpointProvider, + tls, + isCustomEndpoint, + useDualstackEndpoint: utilMiddleware.normalizeProvider(useDualstackEndpoint ?? false), + useFipsEndpoint: utilMiddleware.normalizeProvider(useFipsEndpoint ?? false), + }); + let configuredEndpointPromise = undefined; + resolvedConfig.serviceConfiguredEndpoint = async () => { + if (input.serviceId && !configuredEndpointPromise) { + configuredEndpointPromise = getEndpointFromConfig.getEndpointFromConfig(input.serviceId); + } + return configuredEndpointPromise; + }; + return resolvedConfig; +}; + +const resolveEndpointRequiredConfig = (input) => { + const { endpoint } = input; + if (endpoint === undefined) { + input.endpoint = async () => { + throw new Error("@smithy/middleware-endpoint: (default endpointRuleSet) endpoint is not set - you must configure an endpoint."); + }; + } + return input; +}; + +exports.endpointMiddleware = endpointMiddleware; +exports.endpointMiddlewareOptions = endpointMiddlewareOptions; +exports.getEndpointFromInstructions = getEndpointFromInstructions; +exports.getEndpointPlugin = getEndpointPlugin; +exports.resolveEndpointConfig = resolveEndpointConfig; +exports.resolveEndpointRequiredConfig = resolveEndpointRequiredConfig; +exports.resolveParams = resolveParams; +exports.toEndpointV1 = toEndpointV1; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/createConfigValueProvider.js b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/createConfigValueProvider.js new file mode 100644 index 000000000..cb939ae6e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/createConfigValueProvider.js @@ -0,0 +1,50 @@ +export const createConfigValueProvider = (configKey, canonicalEndpointParamKey, config, isClientContextParam = false) => { + const configProvider = async () => { + let configValue; + if (isClientContextParam) { + const clientContextParams = config.clientContextParams; + const nestedValue = clientContextParams?.[configKey]; + configValue = nestedValue ?? config[configKey] ?? config[canonicalEndpointParamKey]; + } + else { + configValue = config[configKey] ?? config[canonicalEndpointParamKey]; + } + if (typeof configValue === "function") { + return configValue(); + } + return configValue; + }; + if (configKey === "credentialScope" || canonicalEndpointParamKey === "CredentialScope") { + return async () => { + const credentials = typeof config.credentials === "function" ? await config.credentials() : config.credentials; + const configValue = credentials?.credentialScope ?? credentials?.CredentialScope; + return configValue; + }; + } + if (configKey === "accountId" || canonicalEndpointParamKey === "AccountId") { + return async () => { + const credentials = typeof config.credentials === "function" ? await config.credentials() : config.credentials; + const configValue = credentials?.accountId ?? credentials?.AccountId; + return configValue; + }; + } + if (configKey === "endpoint" || canonicalEndpointParamKey === "endpoint") { + return async () => { + if (config.isCustomEndpoint === false) { + return undefined; + } + const endpoint = await configProvider(); + if (endpoint && typeof endpoint === "object") { + if ("url" in endpoint) { + return endpoint.url.href; + } + if ("hostname" in endpoint) { + const { protocol, hostname, port, path } = endpoint; + return `${protocol}//${hostname}${port ? ":" + port : ""}${path}`; + } + } + return endpoint; + }; + } + return configProvider; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointFromConfig.browser.js b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointFromConfig.browser.js new file mode 100644 index 000000000..75fc13659 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointFromConfig.browser.js @@ -0,0 +1 @@ +export const getEndpointFromConfig = async (serviceId) => undefined; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointFromConfig.js b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointFromConfig.js new file mode 100644 index 000000000..33c1d45af --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointFromConfig.js @@ -0,0 +1,3 @@ +import { loadConfig } from "@smithy/node-config-provider"; +import { getEndpointUrlConfig } from "./getEndpointUrlConfig"; +export const getEndpointFromConfig = async (serviceId) => loadConfig(getEndpointUrlConfig(serviceId ?? ""))(); diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointFromInstructions.js b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointFromInstructions.js new file mode 100644 index 000000000..0be35f64c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointFromInstructions.js @@ -0,0 +1,64 @@ +import { resolveParamsForS3 } from "../service-customizations"; +import { createConfigValueProvider } from "./createConfigValueProvider"; +import { getEndpointFromConfig } from "./getEndpointFromConfig"; +import { toEndpointV1 } from "./toEndpointV1"; +export const getEndpointFromInstructions = async (commandInput, instructionsSupplier, clientConfig, context) => { + if (!clientConfig.isCustomEndpoint) { + let endpointFromConfig; + if (clientConfig.serviceConfiguredEndpoint) { + endpointFromConfig = await clientConfig.serviceConfiguredEndpoint(); + } + else { + endpointFromConfig = await getEndpointFromConfig(clientConfig.serviceId); + } + if (endpointFromConfig) { + clientConfig.endpoint = () => Promise.resolve(toEndpointV1(endpointFromConfig)); + clientConfig.isCustomEndpoint = true; + } + } + const endpointParams = await resolveParams(commandInput, instructionsSupplier, clientConfig); + if (typeof clientConfig.endpointProvider !== "function") { + throw new Error("config.endpointProvider is not set."); + } + const endpoint = clientConfig.endpointProvider(endpointParams, context); + if (clientConfig.isCustomEndpoint && clientConfig.endpoint) { + const customEndpoint = await clientConfig.endpoint(); + if (customEndpoint?.headers) { + endpoint.headers ??= {}; + for (const [name, value] of Object.entries(customEndpoint.headers)) { + endpoint.headers[name] = Array.isArray(value) ? value : [value]; + } + } + } + return endpoint; +}; +export const resolveParams = async (commandInput, instructionsSupplier, clientConfig) => { + const endpointParams = {}; + const instructions = instructionsSupplier?.getEndpointParameterInstructions?.() || {}; + for (const [name, instruction] of Object.entries(instructions)) { + switch (instruction.type) { + case "staticContextParams": + endpointParams[name] = instruction.value; + break; + case "contextParams": + endpointParams[name] = commandInput[instruction.name]; + break; + case "clientContextParams": + case "builtInParams": + endpointParams[name] = await createConfigValueProvider(instruction.name, name, clientConfig, instruction.type !== "builtInParams")(); + break; + case "operationContextParams": + endpointParams[name] = instruction.get(commandInput); + break; + default: + throw new Error("Unrecognized endpoint parameter instruction: " + JSON.stringify(instruction)); + } + } + if (Object.keys(instructions).length === 0) { + Object.assign(endpointParams, clientConfig); + } + if (String(clientConfig.serviceId).toLowerCase() === "s3") { + await resolveParamsForS3(endpointParams); + } + return endpointParams; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointUrlConfig.js b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointUrlConfig.js new file mode 100644 index 000000000..82a151957 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointUrlConfig.js @@ -0,0 +1,31 @@ +import { CONFIG_PREFIX_SEPARATOR } from "@smithy/shared-ini-file-loader"; +const ENV_ENDPOINT_URL = "AWS_ENDPOINT_URL"; +const CONFIG_ENDPOINT_URL = "endpoint_url"; +export const getEndpointUrlConfig = (serviceId) => ({ + environmentVariableSelector: (env) => { + const serviceSuffixParts = serviceId.split(" ").map((w) => w.toUpperCase()); + const serviceEndpointUrl = env[[ENV_ENDPOINT_URL, ...serviceSuffixParts].join("_")]; + if (serviceEndpointUrl) + return serviceEndpointUrl; + const endpointUrl = env[ENV_ENDPOINT_URL]; + if (endpointUrl) + return endpointUrl; + return undefined; + }, + configFileSelector: (profile, config) => { + if (config && profile.services) { + const servicesSection = config[["services", profile.services].join(CONFIG_PREFIX_SEPARATOR)]; + if (servicesSection) { + const servicePrefixParts = serviceId.split(" ").map((w) => w.toLowerCase()); + const endpointUrl = servicesSection[[servicePrefixParts.join("_"), CONFIG_ENDPOINT_URL].join(CONFIG_PREFIX_SEPARATOR)]; + if (endpointUrl) + return endpointUrl; + } + } + const endpointUrl = profile[CONFIG_ENDPOINT_URL]; + if (endpointUrl) + return endpointUrl; + return undefined; + }, + default: undefined, +}); diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/index.js b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/index.js new file mode 100644 index 000000000..17752da20 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/index.js @@ -0,0 +1,2 @@ +export * from "./getEndpointFromInstructions"; +export * from "./toEndpointV1"; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/toEndpointV1.js b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/toEndpointV1.js new file mode 100644 index 000000000..701ce11ce --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/toEndpointV1.js @@ -0,0 +1,17 @@ +import { parseUrl } from "@smithy/url-parser"; +export const toEndpointV1 = (endpoint) => { + if (typeof endpoint === "object") { + if ("url" in endpoint) { + const v1Endpoint = parseUrl(endpoint.url); + if (endpoint.headers) { + v1Endpoint.headers = {}; + for (const [name, values] of Object.entries(endpoint.headers)) { + v1Endpoint.headers[name.toLowerCase()] = values.join(", "); + } + } + return v1Endpoint; + } + return endpoint; + } + return parseUrl(endpoint); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/endpointMiddleware.js b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/endpointMiddleware.js new file mode 100644 index 000000000..82c571902 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/endpointMiddleware.js @@ -0,0 +1,36 @@ +import { setFeature } from "@smithy/core"; +import { getSmithyContext } from "@smithy/util-middleware"; +import { getEndpointFromInstructions } from "./adaptors/getEndpointFromInstructions"; +export const endpointMiddleware = ({ config, instructions, }) => { + return (next, context) => async (args) => { + if (config.isCustomEndpoint) { + setFeature(context, "ENDPOINT_OVERRIDE", "N"); + } + const endpoint = await getEndpointFromInstructions(args.input, { + getEndpointParameterInstructions() { + return instructions; + }, + }, { ...config }, context); + context.endpointV2 = endpoint; + context.authSchemes = endpoint.properties?.authSchemes; + const authScheme = context.authSchemes?.[0]; + if (authScheme) { + context["signing_region"] = authScheme.signingRegion; + context["signing_service"] = authScheme.signingName; + const smithyContext = getSmithyContext(context); + const httpAuthOption = smithyContext?.selectedHttpAuthScheme?.httpAuthOption; + if (httpAuthOption) { + httpAuthOption.signingProperties = Object.assign(httpAuthOption.signingProperties || {}, { + signing_region: authScheme.signingRegion, + signingRegion: authScheme.signingRegion, + signing_service: authScheme.signingName, + signingName: authScheme.signingName, + signingRegionSet: authScheme.signingRegionSet, + }, authScheme.properties); + } + } + return next({ + ...args, + }); + }; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/getEndpointPlugin.js b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/getEndpointPlugin.js new file mode 100644 index 000000000..e2335f4be --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/getEndpointPlugin.js @@ -0,0 +1,18 @@ +import { serializerMiddlewareOption } from "@smithy/middleware-serde"; +import { endpointMiddleware } from "./endpointMiddleware"; +export const endpointMiddlewareOptions = { + step: "serialize", + tags: ["ENDPOINT_PARAMETERS", "ENDPOINT_V2", "ENDPOINT"], + name: "endpointV2Middleware", + override: true, + relation: "before", + toMiddleware: serializerMiddlewareOption.name, +}; +export const getEndpointPlugin = (config, instructions) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo(endpointMiddleware({ + config, + instructions, + }), endpointMiddlewareOptions); + }, +}); diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/index.js new file mode 100644 index 000000000..5c9f264e5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/index.js @@ -0,0 +1,6 @@ +export * from "./adaptors"; +export * from "./endpointMiddleware"; +export * from "./getEndpointPlugin"; +export * from "./resolveEndpointConfig"; +export * from "./resolveEndpointRequiredConfig"; +export * from "./types"; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/resolveEndpointConfig.js b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/resolveEndpointConfig.js new file mode 100644 index 000000000..c3a0eea2e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/resolveEndpointConfig.js @@ -0,0 +1,24 @@ +import { normalizeProvider } from "@smithy/util-middleware"; +import { getEndpointFromConfig } from "./adaptors/getEndpointFromConfig"; +import { toEndpointV1 } from "./adaptors/toEndpointV1"; +export const resolveEndpointConfig = (input) => { + const tls = input.tls ?? true; + const { endpoint, useDualstackEndpoint, useFipsEndpoint } = input; + const customEndpointProvider = endpoint != null ? async () => toEndpointV1(await normalizeProvider(endpoint)()) : undefined; + const isCustomEndpoint = !!endpoint; + const resolvedConfig = Object.assign(input, { + endpoint: customEndpointProvider, + tls, + isCustomEndpoint, + useDualstackEndpoint: normalizeProvider(useDualstackEndpoint ?? false), + useFipsEndpoint: normalizeProvider(useFipsEndpoint ?? false), + }); + let configuredEndpointPromise = undefined; + resolvedConfig.serviceConfiguredEndpoint = async () => { + if (input.serviceId && !configuredEndpointPromise) { + configuredEndpointPromise = getEndpointFromConfig(input.serviceId); + } + return configuredEndpointPromise; + }; + return resolvedConfig; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/resolveEndpointRequiredConfig.js b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/resolveEndpointRequiredConfig.js new file mode 100644 index 000000000..88bd26380 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/resolveEndpointRequiredConfig.js @@ -0,0 +1,9 @@ +export const resolveEndpointRequiredConfig = (input) => { + const { endpoint } = input; + if (endpoint === undefined) { + input.endpoint = async () => { + throw new Error("@smithy/middleware-endpoint: (default endpointRuleSet) endpoint is not set - you must configure an endpoint."); + }; + } + return input; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/service-customizations/index.js b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/service-customizations/index.js new file mode 100644 index 000000000..e50e10799 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/service-customizations/index.js @@ -0,0 +1 @@ +export * from "./s3"; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/service-customizations/s3.js b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/service-customizations/s3.js new file mode 100644 index 000000000..e993fc734 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/service-customizations/s3.js @@ -0,0 +1,37 @@ +export const resolveParamsForS3 = async (endpointParams) => { + const bucket = endpointParams?.Bucket || ""; + if (typeof endpointParams.Bucket === "string") { + endpointParams.Bucket = bucket.replace(/#/g, encodeURIComponent("#")).replace(/\?/g, encodeURIComponent("?")); + } + if (isArnBucketName(bucket)) { + if (endpointParams.ForcePathStyle === true) { + throw new Error("Path-style addressing cannot be used with ARN buckets"); + } + } + else if (!isDnsCompatibleBucketName(bucket) || + (bucket.indexOf(".") !== -1 && !String(endpointParams.Endpoint).startsWith("http:")) || + bucket.toLowerCase() !== bucket || + bucket.length < 3) { + endpointParams.ForcePathStyle = true; + } + if (endpointParams.DisableMultiRegionAccessPoints) { + endpointParams.disableMultiRegionAccessPoints = true; + endpointParams.DisableMRAP = true; + } + return endpointParams; +}; +const DOMAIN_PATTERN = /^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/; +const IP_ADDRESS_PATTERN = /(\d+\.){3}\d+/; +const DOTS_PATTERN = /\.\./; +export const DOT_PATTERN = /\./; +export const S3_HOSTNAME_PATTERN = /^(.+\.)?s3(-fips)?(\.dualstack)?[.-]([a-z0-9-]+)\./; +export const isDnsCompatibleBucketName = (bucketName) => DOMAIN_PATTERN.test(bucketName) && !IP_ADDRESS_PATTERN.test(bucketName) && !DOTS_PATTERN.test(bucketName); +export const isArnBucketName = (bucketName) => { + const [arn, partition, service, , , bucket] = bucketName.split(":"); + const isArn = arn === "arn" && bucketName.split(":").length >= 6; + const isValidArn = Boolean(isArn && partition && service && bucket); + if (isArn && !isValidArn) { + throw new Error(`Invalid ARN: ${bucketName} was an invalid ARN.`); + } + return isValidArn; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/types.js b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-es/types.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/createConfigValueProvider.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/createConfigValueProvider.d.ts new file mode 100644 index 000000000..e99e04456 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/createConfigValueProvider.d.ts @@ -0,0 +1,14 @@ +/** + * Normalize some key of the client config to an async provider. + * @internal + * + * @param configKey - the key to look up in config. + * @param canonicalEndpointParamKey - this is the name the EndpointRuleSet uses. + * it will most likely not contain the config + * value, but we use it as a fallback. + * @param config - container of the config values. + * @param isClientContextParam - whether this is a client context parameter. + * + * @returns async function that will resolve with the value. + */ +export declare const createConfigValueProvider: >(configKey: string, canonicalEndpointParamKey: string, config: Config, isClientContextParam?: boolean) => () => Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getEndpointFromConfig.browser.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getEndpointFromConfig.browser.d.ts new file mode 100644 index 000000000..de05fa52c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getEndpointFromConfig.browser.d.ts @@ -0,0 +1 @@ +export declare const getEndpointFromConfig: (serviceId: string) => Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getEndpointFromConfig.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getEndpointFromConfig.d.ts new file mode 100644 index 000000000..42a3566b8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getEndpointFromConfig.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const getEndpointFromConfig: (serviceId?: string) => Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getEndpointFromInstructions.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getEndpointFromInstructions.d.ts new file mode 100644 index 000000000..13b5ad565 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getEndpointFromInstructions.d.ts @@ -0,0 +1,28 @@ +import type { EndpointParameters, EndpointV2, HandlerExecutionContext } from "@smithy/types"; +import type { EndpointResolvedConfig } from "../resolveEndpointConfig"; +import type { EndpointParameterInstructions } from "../types"; +/** + * @internal + */ +export type EndpointParameterInstructionsSupplier = Partial<{ + getEndpointParameterInstructions(): EndpointParameterInstructions; +}>; +/** + * This step in the endpoint resolution process is exposed as a function + * to allow packages such as signers, lib-upload, etc. to get + * the V2 Endpoint associated to an instance of some api operation command + * without needing to send it or resolve its middleware stack. + * + * @internal + * @param commandInput - the input of the Command in question. + * @param instructionsSupplier - this is typically a Command constructor. A static function supplying the + * endpoint parameter instructions will exist for commands in services + * having an endpoints ruleset trait. + * @param clientConfig - config of the service client. + * @param context - optional context. + */ +export declare const getEndpointFromInstructions: , Config extends Record>(commandInput: CommandInput, instructionsSupplier: EndpointParameterInstructionsSupplier, clientConfig: Partial> & Config, context?: HandlerExecutionContext) => Promise; +/** + * @internal + */ +export declare const resolveParams: , Config extends Record>(commandInput: CommandInput, instructionsSupplier: EndpointParameterInstructionsSupplier, clientConfig: Partial> & Config) => Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getEndpointUrlConfig.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getEndpointUrlConfig.d.ts new file mode 100644 index 000000000..6b0f5d157 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getEndpointUrlConfig.d.ts @@ -0,0 +1,2 @@ +import type { LoadedConfigSelectors } from "@smithy/node-config-provider"; +export declare const getEndpointUrlConfig: (serviceId: string) => LoadedConfigSelectors; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/index.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/index.d.ts new file mode 100644 index 000000000..cc1348838 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./getEndpointFromInstructions"; +/** + * @internal + */ +export * from "./toEndpointV1"; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/toEndpointV1.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/toEndpointV1.d.ts new file mode 100644 index 000000000..5130a31ef --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/toEndpointV1.d.ts @@ -0,0 +1,6 @@ +import type { Endpoint, EndpointV2 } from "@smithy/types"; +/** + * @deprecated Use `toEndpointV1` from `@smithy/core/endpoints` instead. + * @internal + */ +export declare const toEndpointV1: (endpoint: string | Endpoint | EndpointV2) => Endpoint; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/endpointMiddleware.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/endpointMiddleware.d.ts new file mode 100644 index 000000000..b6b7a9de5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/endpointMiddleware.d.ts @@ -0,0 +1,10 @@ +import type { EndpointParameters, SerializeMiddleware } from "@smithy/types"; +import type { EndpointResolvedConfig } from "./resolveEndpointConfig"; +import type { EndpointParameterInstructions } from "./types"; +/** + * @internal + */ +export declare const endpointMiddleware: ({ config, instructions, }: { + config: EndpointResolvedConfig; + instructions: EndpointParameterInstructions; +}) => SerializeMiddleware; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/getEndpointPlugin.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/getEndpointPlugin.d.ts new file mode 100644 index 000000000..159498f7a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/getEndpointPlugin.d.ts @@ -0,0 +1,11 @@ +import type { EndpointParameters, Pluggable, RelativeMiddlewareOptions, SerializeHandlerOptions } from "@smithy/types"; +import type { EndpointResolvedConfig } from "./resolveEndpointConfig"; +import type { EndpointParameterInstructions } from "./types"; +/** + * @internal + */ +export declare const endpointMiddlewareOptions: SerializeHandlerOptions & RelativeMiddlewareOptions; +/** + * @internal + */ +export declare const getEndpointPlugin: (config: EndpointResolvedConfig, instructions: EndpointParameterInstructions) => Pluggable; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/index.d.ts new file mode 100644 index 000000000..3cff7511a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/index.d.ts @@ -0,0 +1,18 @@ +/** + * @internal + */ +export * from "./adaptors"; +/** + * @internal + */ +export * from "./endpointMiddleware"; +/** + * @internal + */ +export * from "./getEndpointPlugin"; +export * from "./resolveEndpointConfig"; +export * from "./resolveEndpointRequiredConfig"; +/** + * @internal + */ +export * from "./types"; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/resolveEndpointConfig.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/resolveEndpointConfig.d.ts new file mode 100644 index 000000000..1dad49cd8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/resolveEndpointConfig.d.ts @@ -0,0 +1,109 @@ +import type { Endpoint, EndpointParameters, EndpointV2, Logger, Provider, UrlParser } from "@smithy/types"; +/** + * @public + * + * Endpoint config interfaces and resolver for Endpoint v2. They live in separate package to allow per-service onboarding. + * When all services onboard Endpoint v2, the resolver in config-resolver package can be removed. + * This interface includes all the endpoint parameters with built-in bindings of "AWS::*" and "SDK::*" + */ +export interface EndpointInputConfig { + /** + * The fully qualified endpoint of the webservice. This is only for using + * a custom endpoint (for example, when using a local version of S3). + * + * Endpoint transformations such as S3 applying a bucket to the hostname are + * still applicable to this custom endpoint. + */ + endpoint?: string | Endpoint | Provider | EndpointV2 | Provider; + /** + * Providing a custom endpointProvider will override + * built-in transformations of the endpoint such as S3 adding the bucket + * name to the hostname, since they are part of the default endpointProvider. + */ + endpointProvider?: (params: T, context?: { + logger?: Logger; + }) => EndpointV2; + /** + * Whether TLS is enabled for requests. + * @deprecated + */ + tls?: boolean; + /** + * Enables IPv6/IPv4 dualstack endpoint. + */ + useDualstackEndpoint?: boolean | Provider; + /** + * Enables FIPS compatible endpoints. + */ + useFipsEndpoint?: boolean | Provider; + /** + * @internal + * This field is used internally so you should not fill any value to this field. + */ + serviceConfiguredEndpoint?: never; +} +/** + * @internal + */ +interface PreviouslyResolved { + urlParser: UrlParser; + endpointProvider: (params: T, context?: { + logger?: Logger; + }) => EndpointV2; + logger?: Logger; + serviceId?: string; +} +/** + * @internal + * + * This supersedes the similarly named EndpointsResolvedConfig (no parametric types) + * from resolveEndpointsConfig.ts in \@smithy/config-resolver. + */ +export interface EndpointResolvedConfig { + /** + * Custom endpoint provided by the user. + * This is normalized to a single interface from the various acceptable types. + * This field will be undefined if a custom endpoint is not provided. + */ + endpoint?: Provider; + endpointProvider: (params: T, context?: { + logger?: Logger; + }) => EndpointV2; + /** + * Whether TLS is enabled for requests. + * @deprecated + */ + tls: boolean; + /** + * Whether the endpoint is specified by caller. + * This should be used over checking the existence of `endpoint`, since + * that may have been set by other means, such as the default regional + * endpoint provider function. + * + * @internal + */ + isCustomEndpoint?: boolean; + /** + * Resolved value for input {@link EndpointsInputConfig.useDualstackEndpoint} + */ + useDualstackEndpoint: Provider; + /** + * Resolved value for input {@link EndpointsInputConfig.useFipsEndpoint} + */ + useFipsEndpoint: Provider; + /** + * Unique service identifier. + * @internal + */ + serviceId?: string; + /** + * A configured endpoint global or specific to the service from ENV or AWS SDK configuration files. + * @internal + */ + serviceConfiguredEndpoint?: Provider; +} +/** + * @internal + */ +export declare const resolveEndpointConfig: (input: T & EndpointInputConfig

& PreviouslyResolved

) => T & EndpointResolvedConfig

; +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/resolveEndpointRequiredConfig.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/resolveEndpointRequiredConfig.d.ts new file mode 100644 index 000000000..6174a866a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/resolveEndpointRequiredConfig.d.ts @@ -0,0 +1,32 @@ +import type { Endpoint, EndpointV2, Provider } from "@smithy/types"; +/** + * This is an additional config resolver layer for clients using the default + * endpoints ruleset. It modifies the input and output config types to make + * the endpoint configuration property required. + * + * It must be placed after the `resolveEndpointConfig` + * resolver. This replaces the "CustomEndpoints" config resolver, which was used + * prior to default endpoint rulesets. + * + * @public + */ +export interface EndpointRequiredInputConfig { + endpoint: string | Endpoint | Provider | EndpointV2 | Provider; +} +/** + * @internal + */ +interface PreviouslyResolved { + endpoint?: Provider; +} +/** + * @internal + */ +export interface EndpointRequiredResolvedConfig { + endpoint: Provider; +} +/** + * @internal + */ +export declare const resolveEndpointRequiredConfig: (input: T & EndpointRequiredInputConfig & PreviouslyResolved) => T & EndpointRequiredResolvedConfig; +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/service-customizations/index.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/service-customizations/index.d.ts new file mode 100644 index 000000000..716a15d42 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/service-customizations/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export * from "./s3"; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/service-customizations/s3.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/service-customizations/s3.d.ts new file mode 100644 index 000000000..ca09eb44c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/service-customizations/s3.d.ts @@ -0,0 +1,26 @@ +import type { EndpointParameters } from "@smithy/types"; +/** + * @internal + */ +export declare const resolveParamsForS3: (endpointParams: EndpointParameters) => Promise; +/** + * @internal + */ +export declare const DOT_PATTERN: RegExp; +/** + * @internal + */ +export declare const S3_HOSTNAME_PATTERN: RegExp; +/** + * Determines whether a given string is DNS compliant per the rules outlined by + * S3. Length, capitaization, and leading dot restrictions are enforced by the + * DOMAIN_PATTERN regular expression. + * @internal + * + * @see https://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html + */ +export declare const isDnsCompatibleBucketName: (bucketName: string) => boolean; +/** + * @internal + */ +export declare const isArnBucketName: (bucketName: string) => boolean; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/createConfigValueProvider.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/createConfigValueProvider.d.ts new file mode 100644 index 000000000..e99e04456 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/createConfigValueProvider.d.ts @@ -0,0 +1,14 @@ +/** + * Normalize some key of the client config to an async provider. + * @internal + * + * @param configKey - the key to look up in config. + * @param canonicalEndpointParamKey - this is the name the EndpointRuleSet uses. + * it will most likely not contain the config + * value, but we use it as a fallback. + * @param config - container of the config values. + * @param isClientContextParam - whether this is a client context parameter. + * + * @returns async function that will resolve with the value. + */ +export declare const createConfigValueProvider: >(configKey: string, canonicalEndpointParamKey: string, config: Config, isClientContextParam?: boolean) => () => Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointFromConfig.browser.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointFromConfig.browser.d.ts new file mode 100644 index 000000000..de05fa52c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointFromConfig.browser.d.ts @@ -0,0 +1 @@ +export declare const getEndpointFromConfig: (serviceId: string) => Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointFromConfig.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointFromConfig.d.ts new file mode 100644 index 000000000..42a3566b8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointFromConfig.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const getEndpointFromConfig: (serviceId?: string) => Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointFromInstructions.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointFromInstructions.d.ts new file mode 100644 index 000000000..49cef2a6e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointFromInstructions.d.ts @@ -0,0 +1,28 @@ +import { EndpointParameters, EndpointV2, HandlerExecutionContext } from "@smithy/types"; +import { EndpointResolvedConfig } from "../resolveEndpointConfig"; +import { EndpointParameterInstructions } from "../types"; +/** + * @internal + */ +export type EndpointParameterInstructionsSupplier = Partial<{ + getEndpointParameterInstructions(): EndpointParameterInstructions; +}>; +/** + * This step in the endpoint resolution process is exposed as a function + * to allow packages such as signers, lib-upload, etc. to get + * the V2 Endpoint associated to an instance of some api operation command + * without needing to send it or resolve its middleware stack. + * + * @internal + * @param commandInput - the input of the Command in question. + * @param instructionsSupplier - this is typically a Command constructor. A static function supplying the + * endpoint parameter instructions will exist for commands in services + * having an endpoints ruleset trait. + * @param clientConfig - config of the service client. + * @param context - optional context. + */ +export declare const getEndpointFromInstructions: , Config extends Record>(commandInput: CommandInput, instructionsSupplier: EndpointParameterInstructionsSupplier, clientConfig: Partial> & Config, context?: HandlerExecutionContext) => Promise; +/** + * @internal + */ +export declare const resolveParams: , Config extends Record>(commandInput: CommandInput, instructionsSupplier: EndpointParameterInstructionsSupplier, clientConfig: Partial> & Config) => Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointUrlConfig.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointUrlConfig.d.ts new file mode 100644 index 000000000..0971010f2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointUrlConfig.d.ts @@ -0,0 +1,2 @@ +import { LoadedConfigSelectors } from "@smithy/node-config-provider"; +export declare const getEndpointUrlConfig: (serviceId: string) => LoadedConfigSelectors; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/index.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/index.d.ts new file mode 100644 index 000000000..cc1348838 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./getEndpointFromInstructions"; +/** + * @internal + */ +export * from "./toEndpointV1"; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/toEndpointV1.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/toEndpointV1.d.ts new file mode 100644 index 000000000..5e6e41ea5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/toEndpointV1.d.ts @@ -0,0 +1,6 @@ +import { Endpoint, EndpointV2 } from "@smithy/types"; +/** + * @deprecated Use `toEndpointV1` from `@smithy/core/endpoints` instead. + * @internal + */ +export declare const toEndpointV1: (endpoint: string | Endpoint | EndpointV2) => Endpoint; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/endpointMiddleware.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/endpointMiddleware.d.ts new file mode 100644 index 000000000..67cee6483 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/endpointMiddleware.d.ts @@ -0,0 +1,10 @@ +import { EndpointParameters, SerializeMiddleware } from "@smithy/types"; +import { EndpointResolvedConfig } from "./resolveEndpointConfig"; +import { EndpointParameterInstructions } from "./types"; +/** + * @internal + */ +export declare const endpointMiddleware: ({ config, instructions, }: { + config: EndpointResolvedConfig; + instructions: EndpointParameterInstructions; +}) => SerializeMiddleware; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/getEndpointPlugin.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/getEndpointPlugin.d.ts new file mode 100644 index 000000000..910f44d7f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/getEndpointPlugin.d.ts @@ -0,0 +1,11 @@ +import { EndpointParameters, Pluggable, RelativeMiddlewareOptions, SerializeHandlerOptions } from "@smithy/types"; +import { EndpointResolvedConfig } from "./resolveEndpointConfig"; +import { EndpointParameterInstructions } from "./types"; +/** + * @internal + */ +export declare const endpointMiddlewareOptions: SerializeHandlerOptions & RelativeMiddlewareOptions; +/** + * @internal + */ +export declare const getEndpointPlugin: (config: EndpointResolvedConfig, instructions: EndpointParameterInstructions) => Pluggable; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..3cff7511a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/index.d.ts @@ -0,0 +1,18 @@ +/** + * @internal + */ +export * from "./adaptors"; +/** + * @internal + */ +export * from "./endpointMiddleware"; +/** + * @internal + */ +export * from "./getEndpointPlugin"; +export * from "./resolveEndpointConfig"; +export * from "./resolveEndpointRequiredConfig"; +/** + * @internal + */ +export * from "./types"; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/resolveEndpointConfig.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/resolveEndpointConfig.d.ts new file mode 100644 index 000000000..0cda5914a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/resolveEndpointConfig.d.ts @@ -0,0 +1,109 @@ +import { Endpoint, EndpointParameters, EndpointV2, Logger, Provider, UrlParser } from "@smithy/types"; +/** + * @public + * + * Endpoint config interfaces and resolver for Endpoint v2. They live in separate package to allow per-service onboarding. + * When all services onboard Endpoint v2, the resolver in config-resolver package can be removed. + * This interface includes all the endpoint parameters with built-in bindings of "AWS::*" and "SDK::*" + */ +export interface EndpointInputConfig { + /** + * The fully qualified endpoint of the webservice. This is only for using + * a custom endpoint (for example, when using a local version of S3). + * + * Endpoint transformations such as S3 applying a bucket to the hostname are + * still applicable to this custom endpoint. + */ + endpoint?: string | Endpoint | Provider | EndpointV2 | Provider; + /** + * Providing a custom endpointProvider will override + * built-in transformations of the endpoint such as S3 adding the bucket + * name to the hostname, since they are part of the default endpointProvider. + */ + endpointProvider?: (params: T, context?: { + logger?: Logger; + }) => EndpointV2; + /** + * Whether TLS is enabled for requests. + * @deprecated + */ + tls?: boolean; + /** + * Enables IPv6/IPv4 dualstack endpoint. + */ + useDualstackEndpoint?: boolean | Provider; + /** + * Enables FIPS compatible endpoints. + */ + useFipsEndpoint?: boolean | Provider; + /** + * @internal + * This field is used internally so you should not fill any value to this field. + */ + serviceConfiguredEndpoint?: never; +} +/** + * @internal + */ +interface PreviouslyResolved { + urlParser: UrlParser; + endpointProvider: (params: T, context?: { + logger?: Logger; + }) => EndpointV2; + logger?: Logger; + serviceId?: string; +} +/** + * @internal + * + * This supersedes the similarly named EndpointsResolvedConfig (no parametric types) + * from resolveEndpointsConfig.ts in \@smithy/config-resolver. + */ +export interface EndpointResolvedConfig { + /** + * Custom endpoint provided by the user. + * This is normalized to a single interface from the various acceptable types. + * This field will be undefined if a custom endpoint is not provided. + */ + endpoint?: Provider; + endpointProvider: (params: T, context?: { + logger?: Logger; + }) => EndpointV2; + /** + * Whether TLS is enabled for requests. + * @deprecated + */ + tls: boolean; + /** + * Whether the endpoint is specified by caller. + * This should be used over checking the existence of `endpoint`, since + * that may have been set by other means, such as the default regional + * endpoint provider function. + * + * @internal + */ + isCustomEndpoint?: boolean; + /** + * Resolved value for input {@link EndpointsInputConfig.useDualstackEndpoint} + */ + useDualstackEndpoint: Provider; + /** + * Resolved value for input {@link EndpointsInputConfig.useFipsEndpoint} + */ + useFipsEndpoint: Provider; + /** + * Unique service identifier. + * @internal + */ + serviceId?: string; + /** + * A configured endpoint global or specific to the service from ENV or AWS SDK configuration files. + * @internal + */ + serviceConfiguredEndpoint?: Provider; +} +/** + * @internal + */ +export declare const resolveEndpointConfig: (input: T & EndpointInputConfig

& PreviouslyResolved

) => T & EndpointResolvedConfig

; +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/resolveEndpointRequiredConfig.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/resolveEndpointRequiredConfig.d.ts new file mode 100644 index 000000000..0572bf2a9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/resolveEndpointRequiredConfig.d.ts @@ -0,0 +1,32 @@ +import { Endpoint, EndpointV2, Provider } from "@smithy/types"; +/** + * This is an additional config resolver layer for clients using the default + * endpoints ruleset. It modifies the input and output config types to make + * the endpoint configuration property required. + * + * It must be placed after the `resolveEndpointConfig` + * resolver. This replaces the "CustomEndpoints" config resolver, which was used + * prior to default endpoint rulesets. + * + * @public + */ +export interface EndpointRequiredInputConfig { + endpoint: string | Endpoint | Provider | EndpointV2 | Provider; +} +/** + * @internal + */ +interface PreviouslyResolved { + endpoint?: Provider; +} +/** + * @internal + */ +export interface EndpointRequiredResolvedConfig { + endpoint: Provider; +} +/** + * @internal + */ +export declare const resolveEndpointRequiredConfig: (input: T & EndpointRequiredInputConfig & PreviouslyResolved) => T & EndpointRequiredResolvedConfig; +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/service-customizations/index.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/service-customizations/index.d.ts new file mode 100644 index 000000000..716a15d42 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/service-customizations/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export * from "./s3"; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/service-customizations/s3.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/service-customizations/s3.d.ts new file mode 100644 index 000000000..80b2e6a17 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/service-customizations/s3.d.ts @@ -0,0 +1,26 @@ +import { EndpointParameters } from "@smithy/types"; +/** + * @internal + */ +export declare const resolveParamsForS3: (endpointParams: EndpointParameters) => Promise; +/** + * @internal + */ +export declare const DOT_PATTERN: RegExp; +/** + * @internal + */ +export declare const S3_HOSTNAME_PATTERN: RegExp; +/** + * Determines whether a given string is DNS compliant per the rules outlined by + * S3. Length, capitaization, and leading dot restrictions are enforced by the + * DOMAIN_PATTERN regular expression. + * @internal + * + * @see https://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html + */ +export declare const isDnsCompatibleBucketName: (bucketName: string) => boolean; +/** + * @internal + */ +export declare const isArnBucketName: (bucketName: string) => boolean; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/types.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/types.d.ts new file mode 100644 index 000000000..0d1d9e901 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/types.d.ts @@ -0,0 +1,41 @@ +/** + * @internal + */ +export interface EndpointParameterInstructions { + [name: string]: BuiltInParamInstruction | ClientContextParamInstruction | StaticContextParamInstruction | ContextParamInstruction | OperationContextParamInstruction; +} +/** + * @internal + */ +export interface BuiltInParamInstruction { + type: "builtInParams"; + name: string; +} +/** + * @internal + */ +export interface ClientContextParamInstruction { + type: "clientContextParams"; + name: string; +} +/** + * @internal + */ +export interface StaticContextParamInstruction { + type: "staticContextParams"; + value: string | boolean; +} +/** + * @internal + */ +export interface ContextParamInstruction { + type: "contextParams"; + name: string; +} +/** + * @internal + */ +export interface OperationContextParamInstruction { + type: "operationContextParams"; + get(input: any): any; +} diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/types.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/types.d.ts new file mode 100644 index 000000000..0d1d9e901 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/dist-types/types.d.ts @@ -0,0 +1,41 @@ +/** + * @internal + */ +export interface EndpointParameterInstructions { + [name: string]: BuiltInParamInstruction | ClientContextParamInstruction | StaticContextParamInstruction | ContextParamInstruction | OperationContextParamInstruction; +} +/** + * @internal + */ +export interface BuiltInParamInstruction { + type: "builtInParams"; + name: string; +} +/** + * @internal + */ +export interface ClientContextParamInstruction { + type: "clientContextParams"; + name: string; +} +/** + * @internal + */ +export interface StaticContextParamInstruction { + type: "staticContextParams"; + value: string | boolean; +} +/** + * @internal + */ +export interface ContextParamInstruction { + type: "contextParams"; + name: string; +} +/** + * @internal + */ +export interface OperationContextParamInstruction { + type: "operationContextParams"; + get(input: any): any; +} diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/package.json b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/package.json new file mode 100644 index 000000000..55e918827 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-endpoint/package.json @@ -0,0 +1,75 @@ +{ + "name": "@smithy/middleware-endpoint", + "version": "4.4.25", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline middleware-endpoint", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "extract:docs": "api-extractor run --local", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/core": "^3.23.11", + "@smithy/middleware-serde": "^4.2.14", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-middleware": "^4.2.12", + "tslib": "^2.6.2" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "browser": { + "./dist-es/adaptors/getEndpointFromConfig": "./dist-es/adaptors/getEndpointFromConfig.browser" + }, + "react-native": { + "./dist-es/adaptors/getEndpointFromConfig": "./dist-es/adaptors/getEndpointFromConfig.browser", + "./dist-cjs/adaptors/getEndpointFromConfig": "./dist-cjs/adaptors/getEndpointFromConfig.browser" + }, + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/middleware-endpoint", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/middleware-endpoint" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/LICENSE b/food-ordering-app/server/node_modules/@smithy/middleware-retry/LICENSE new file mode 100644 index 000000000..dd65ae06b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/README.md b/food-ordering-app/server/node_modules/@smithy/middleware-retry/README.md new file mode 100644 index 000000000..21ce94725 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/README.md @@ -0,0 +1,11 @@ +# @smithy/middleware-retry + +[![NPM version](https://img.shields.io/npm/v/@smithy/middleware-retry/latest.svg)](https://www.npmjs.com/package/@smithy/middleware-retry) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/middleware-retry.svg)](https://www.npmjs.com/package/@smithy/middleware-retry) + +## Usage + +See [@smithy/util-retry](https://github.com/smithy-lang/smithy-typescript/tree/main/packages/util-retry) +for retry behavior and configuration. + +See also: [AWS Documentation: Retry behavior](https://docs.aws.amazon.com/sdkref/latest/guide/feature-retry-behavior.html). diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-cjs/index.js new file mode 100644 index 000000000..a54d6e6ae --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-cjs/index.js @@ -0,0 +1,355 @@ +'use strict'; + +var utilRetry = require('@smithy/util-retry'); +var protocolHttp = require('@smithy/protocol-http'); +var serviceErrorClassification = require('@smithy/service-error-classification'); +var uuid = require('@smithy/uuid'); +var utilMiddleware = require('@smithy/util-middleware'); +var smithyClient = require('@smithy/smithy-client'); +var isStreamingPayload = require('./isStreamingPayload/isStreamingPayload'); + +const getDefaultRetryQuota = (initialRetryTokens, options) => { + const MAX_CAPACITY = initialRetryTokens; + const noRetryIncrement = utilRetry.NO_RETRY_INCREMENT; + const retryCost = utilRetry.RETRY_COST; + const timeoutRetryCost = utilRetry.TIMEOUT_RETRY_COST; + let availableCapacity = initialRetryTokens; + const getCapacityAmount = (error) => (error.name === "TimeoutError" ? timeoutRetryCost : retryCost); + const hasRetryTokens = (error) => getCapacityAmount(error) <= availableCapacity; + const retrieveRetryTokens = (error) => { + if (!hasRetryTokens(error)) { + throw new Error("No retry token available"); + } + const capacityAmount = getCapacityAmount(error); + availableCapacity -= capacityAmount; + return capacityAmount; + }; + const releaseRetryTokens = (capacityReleaseAmount) => { + availableCapacity += capacityReleaseAmount ?? noRetryIncrement; + availableCapacity = Math.min(availableCapacity, MAX_CAPACITY); + }; + return Object.freeze({ + hasRetryTokens, + retrieveRetryTokens, + releaseRetryTokens, + }); +}; + +const defaultDelayDecider = (delayBase, attempts) => Math.floor(Math.min(utilRetry.MAXIMUM_RETRY_DELAY, Math.random() * 2 ** attempts * delayBase)); + +const defaultRetryDecider = (error) => { + if (!error) { + return false; + } + return serviceErrorClassification.isRetryableByTrait(error) || serviceErrorClassification.isClockSkewError(error) || serviceErrorClassification.isThrottlingError(error) || serviceErrorClassification.isTransientError(error); +}; + +const asSdkError = (error) => { + if (error instanceof Error) + return error; + if (error instanceof Object) + return Object.assign(new Error(), error); + if (typeof error === "string") + return new Error(error); + return new Error(`AWS SDK error wrapper for ${error}`); +}; + +class StandardRetryStrategy { + maxAttemptsProvider; + retryDecider; + delayDecider; + retryQuota; + mode = utilRetry.RETRY_MODES.STANDARD; + constructor(maxAttemptsProvider, options) { + this.maxAttemptsProvider = maxAttemptsProvider; + this.retryDecider = options?.retryDecider ?? defaultRetryDecider; + this.delayDecider = options?.delayDecider ?? defaultDelayDecider; + this.retryQuota = options?.retryQuota ?? getDefaultRetryQuota(utilRetry.INITIAL_RETRY_TOKENS); + } + shouldRetry(error, attempts, maxAttempts) { + return attempts < maxAttempts && this.retryDecider(error) && this.retryQuota.hasRetryTokens(error); + } + async getMaxAttempts() { + let maxAttempts; + try { + maxAttempts = await this.maxAttemptsProvider(); + } + catch (error) { + maxAttempts = utilRetry.DEFAULT_MAX_ATTEMPTS; + } + return maxAttempts; + } + async retry(next, args, options) { + let retryTokenAmount; + let attempts = 0; + let totalDelay = 0; + const maxAttempts = await this.getMaxAttempts(); + const { request } = args; + if (protocolHttp.HttpRequest.isInstance(request)) { + request.headers[utilRetry.INVOCATION_ID_HEADER] = uuid.v4(); + } + while (true) { + try { + if (protocolHttp.HttpRequest.isInstance(request)) { + request.headers[utilRetry.REQUEST_HEADER] = `attempt=${attempts + 1}; max=${maxAttempts}`; + } + if (options?.beforeRequest) { + await options.beforeRequest(); + } + const { response, output } = await next(args); + if (options?.afterRequest) { + options.afterRequest(response); + } + this.retryQuota.releaseRetryTokens(retryTokenAmount); + output.$metadata.attempts = attempts + 1; + output.$metadata.totalRetryDelay = totalDelay; + return { response, output }; + } + catch (e) { + const err = asSdkError(e); + attempts++; + if (this.shouldRetry(err, attempts, maxAttempts)) { + retryTokenAmount = this.retryQuota.retrieveRetryTokens(err); + const delayFromDecider = this.delayDecider(serviceErrorClassification.isThrottlingError(err) ? utilRetry.THROTTLING_RETRY_DELAY_BASE : utilRetry.DEFAULT_RETRY_DELAY_BASE, attempts); + const delayFromResponse = getDelayFromRetryAfterHeader(err.$response); + const delay = Math.max(delayFromResponse || 0, delayFromDecider); + totalDelay += delay; + await new Promise((resolve) => setTimeout(resolve, delay)); + continue; + } + if (!err.$metadata) { + err.$metadata = {}; + } + err.$metadata.attempts = attempts; + err.$metadata.totalRetryDelay = totalDelay; + throw err; + } + } + } +} +const getDelayFromRetryAfterHeader = (response) => { + if (!protocolHttp.HttpResponse.isInstance(response)) + return; + const retryAfterHeaderName = Object.keys(response.headers).find((key) => key.toLowerCase() === "retry-after"); + if (!retryAfterHeaderName) + return; + const retryAfter = response.headers[retryAfterHeaderName]; + const retryAfterSeconds = Number(retryAfter); + if (!Number.isNaN(retryAfterSeconds)) + return retryAfterSeconds * 1000; + const retryAfterDate = new Date(retryAfter); + return retryAfterDate.getTime() - Date.now(); +}; + +class AdaptiveRetryStrategy extends StandardRetryStrategy { + rateLimiter; + constructor(maxAttemptsProvider, options) { + const { rateLimiter, ...superOptions } = options ?? {}; + super(maxAttemptsProvider, superOptions); + this.rateLimiter = rateLimiter ?? new utilRetry.DefaultRateLimiter(); + this.mode = utilRetry.RETRY_MODES.ADAPTIVE; + } + async retry(next, args) { + return super.retry(next, args, { + beforeRequest: async () => { + return this.rateLimiter.getSendToken(); + }, + afterRequest: (response) => { + this.rateLimiter.updateClientSendingRate(response); + }, + }); + } +} + +const ENV_MAX_ATTEMPTS = "AWS_MAX_ATTEMPTS"; +const CONFIG_MAX_ATTEMPTS = "max_attempts"; +const NODE_MAX_ATTEMPT_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => { + const value = env[ENV_MAX_ATTEMPTS]; + if (!value) + return undefined; + const maxAttempt = parseInt(value); + if (Number.isNaN(maxAttempt)) { + throw new Error(`Environment variable ${ENV_MAX_ATTEMPTS} mast be a number, got "${value}"`); + } + return maxAttempt; + }, + configFileSelector: (profile) => { + const value = profile[CONFIG_MAX_ATTEMPTS]; + if (!value) + return undefined; + const maxAttempt = parseInt(value); + if (Number.isNaN(maxAttempt)) { + throw new Error(`Shared config file entry ${CONFIG_MAX_ATTEMPTS} mast be a number, got "${value}"`); + } + return maxAttempt; + }, + default: utilRetry.DEFAULT_MAX_ATTEMPTS, +}; +const resolveRetryConfig = (input) => { + const { retryStrategy, retryMode } = input; + const maxAttempts = utilMiddleware.normalizeProvider(input.maxAttempts ?? utilRetry.DEFAULT_MAX_ATTEMPTS); + let controller = retryStrategy + ? Promise.resolve(retryStrategy) + : undefined; + const getDefault = async () => (await utilMiddleware.normalizeProvider(retryMode)()) === utilRetry.RETRY_MODES.ADAPTIVE + ? new utilRetry.AdaptiveRetryStrategy(maxAttempts) + : new utilRetry.StandardRetryStrategy(maxAttempts); + return Object.assign(input, { + maxAttempts, + retryStrategy: () => (controller ??= getDefault()), + }); +}; +const ENV_RETRY_MODE = "AWS_RETRY_MODE"; +const CONFIG_RETRY_MODE = "retry_mode"; +const NODE_RETRY_MODE_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => env[ENV_RETRY_MODE], + configFileSelector: (profile) => profile[CONFIG_RETRY_MODE], + default: utilRetry.DEFAULT_RETRY_MODE, +}; + +const omitRetryHeadersMiddleware = () => (next) => async (args) => { + const { request } = args; + if (protocolHttp.HttpRequest.isInstance(request)) { + delete request.headers[utilRetry.INVOCATION_ID_HEADER]; + delete request.headers[utilRetry.REQUEST_HEADER]; + } + return next(args); +}; +const omitRetryHeadersMiddlewareOptions = { + name: "omitRetryHeadersMiddleware", + tags: ["RETRY", "HEADERS", "OMIT_RETRY_HEADERS"], + relation: "before", + toMiddleware: "awsAuthMiddleware", + override: true, +}; +const getOmitRetryHeadersPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo(omitRetryHeadersMiddleware(), omitRetryHeadersMiddlewareOptions); + }, +}); + +const retryMiddleware = (options) => (next, context) => async (args) => { + let retryStrategy = await options.retryStrategy(); + const maxAttempts = await options.maxAttempts(); + if (isRetryStrategyV2(retryStrategy)) { + retryStrategy = retryStrategy; + let retryToken = await retryStrategy.acquireInitialRetryToken(context["partition_id"]); + let lastError = new Error(); + let attempts = 0; + let totalRetryDelay = 0; + const { request } = args; + const isRequest = protocolHttp.HttpRequest.isInstance(request); + if (isRequest) { + request.headers[utilRetry.INVOCATION_ID_HEADER] = uuid.v4(); + } + while (true) { + try { + if (isRequest) { + request.headers[utilRetry.REQUEST_HEADER] = `attempt=${attempts + 1}; max=${maxAttempts}`; + } + const { response, output } = await next(args); + retryStrategy.recordSuccess(retryToken); + output.$metadata.attempts = attempts + 1; + output.$metadata.totalRetryDelay = totalRetryDelay; + return { response, output }; + } + catch (e) { + const retryErrorInfo = getRetryErrorInfo(e); + lastError = asSdkError(e); + if (isRequest && isStreamingPayload.isStreamingPayload(request)) { + (context.logger instanceof smithyClient.NoOpLogger ? console : context.logger)?.warn("An error was encountered in a non-retryable streaming request."); + throw lastError; + } + try { + retryToken = await retryStrategy.refreshRetryTokenForRetry(retryToken, retryErrorInfo); + } + catch (refreshError) { + if (!lastError.$metadata) { + lastError.$metadata = {}; + } + lastError.$metadata.attempts = attempts + 1; + lastError.$metadata.totalRetryDelay = totalRetryDelay; + throw lastError; + } + attempts = retryToken.getRetryCount(); + const delay = retryToken.getRetryDelay(); + totalRetryDelay += delay; + await new Promise((resolve) => setTimeout(resolve, delay)); + } + } + } + else { + retryStrategy = retryStrategy; + if (retryStrategy?.mode) + context.userAgent = [...(context.userAgent || []), ["cfg/retry-mode", retryStrategy.mode]]; + return retryStrategy.retry(next, args); + } +}; +const isRetryStrategyV2 = (retryStrategy) => typeof retryStrategy.acquireInitialRetryToken !== "undefined" && + typeof retryStrategy.refreshRetryTokenForRetry !== "undefined" && + typeof retryStrategy.recordSuccess !== "undefined"; +const getRetryErrorInfo = (error) => { + const errorInfo = { + error, + errorType: getRetryErrorType(error), + }; + const retryAfterHint = getRetryAfterHint(error.$response); + if (retryAfterHint) { + errorInfo.retryAfterHint = retryAfterHint; + } + return errorInfo; +}; +const getRetryErrorType = (error) => { + if (serviceErrorClassification.isThrottlingError(error)) + return "THROTTLING"; + if (serviceErrorClassification.isTransientError(error)) + return "TRANSIENT"; + if (serviceErrorClassification.isServerError(error)) + return "SERVER_ERROR"; + return "CLIENT_ERROR"; +}; +const retryMiddlewareOptions = { + name: "retryMiddleware", + tags: ["RETRY"], + step: "finalizeRequest", + priority: "high", + override: true, +}; +const getRetryPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.add(retryMiddleware(options), retryMiddlewareOptions); + }, +}); +const getRetryAfterHint = (response) => { + if (!protocolHttp.HttpResponse.isInstance(response)) + return; + const retryAfterHeaderName = Object.keys(response.headers).find((key) => key.toLowerCase() === "retry-after"); + if (!retryAfterHeaderName) + return; + const retryAfter = response.headers[retryAfterHeaderName]; + const retryAfterSeconds = Number(retryAfter); + if (!Number.isNaN(retryAfterSeconds)) + return new Date(retryAfterSeconds * 1000); + const retryAfterDate = new Date(retryAfter); + return retryAfterDate; +}; + +exports.AdaptiveRetryStrategy = AdaptiveRetryStrategy; +exports.CONFIG_MAX_ATTEMPTS = CONFIG_MAX_ATTEMPTS; +exports.CONFIG_RETRY_MODE = CONFIG_RETRY_MODE; +exports.ENV_MAX_ATTEMPTS = ENV_MAX_ATTEMPTS; +exports.ENV_RETRY_MODE = ENV_RETRY_MODE; +exports.NODE_MAX_ATTEMPT_CONFIG_OPTIONS = NODE_MAX_ATTEMPT_CONFIG_OPTIONS; +exports.NODE_RETRY_MODE_CONFIG_OPTIONS = NODE_RETRY_MODE_CONFIG_OPTIONS; +exports.StandardRetryStrategy = StandardRetryStrategy; +exports.defaultDelayDecider = defaultDelayDecider; +exports.defaultRetryDecider = defaultRetryDecider; +exports.getOmitRetryHeadersPlugin = getOmitRetryHeadersPlugin; +exports.getRetryAfterHint = getRetryAfterHint; +exports.getRetryPlugin = getRetryPlugin; +exports.omitRetryHeadersMiddleware = omitRetryHeadersMiddleware; +exports.omitRetryHeadersMiddlewareOptions = omitRetryHeadersMiddlewareOptions; +exports.resolveRetryConfig = resolveRetryConfig; +exports.retryMiddleware = retryMiddleware; +exports.retryMiddlewareOptions = retryMiddlewareOptions; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-cjs/isStreamingPayload/isStreamingPayload.browser.js b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-cjs/isStreamingPayload/isStreamingPayload.browser.js new file mode 100644 index 000000000..ae99d1e8f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-cjs/isStreamingPayload/isStreamingPayload.browser.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isStreamingPayload = void 0; +const isStreamingPayload = (request) => request?.body instanceof ReadableStream; +exports.isStreamingPayload = isStreamingPayload; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-cjs/isStreamingPayload/isStreamingPayload.js b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-cjs/isStreamingPayload/isStreamingPayload.js new file mode 100644 index 000000000..6d66c791d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-cjs/isStreamingPayload/isStreamingPayload.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isStreamingPayload = void 0; +const stream_1 = require("stream"); +const isStreamingPayload = (request) => request?.body instanceof stream_1.Readable || + (typeof ReadableStream !== "undefined" && request?.body instanceof ReadableStream); +exports.isStreamingPayload = isStreamingPayload; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/AdaptiveRetryStrategy.js b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/AdaptiveRetryStrategy.js new file mode 100644 index 000000000..367bdcd19 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/AdaptiveRetryStrategy.js @@ -0,0 +1,21 @@ +import { DefaultRateLimiter, RETRY_MODES } from "@smithy/util-retry"; +import { StandardRetryStrategy } from "./StandardRetryStrategy"; +export class AdaptiveRetryStrategy extends StandardRetryStrategy { + rateLimiter; + constructor(maxAttemptsProvider, options) { + const { rateLimiter, ...superOptions } = options ?? {}; + super(maxAttemptsProvider, superOptions); + this.rateLimiter = rateLimiter ?? new DefaultRateLimiter(); + this.mode = RETRY_MODES.ADAPTIVE; + } + async retry(next, args) { + return super.retry(next, args, { + beforeRequest: async () => { + return this.rateLimiter.getSendToken(); + }, + afterRequest: (response) => { + this.rateLimiter.updateClientSendingRate(response); + }, + }); + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/StandardRetryStrategy.js b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/StandardRetryStrategy.js new file mode 100644 index 000000000..baea44c17 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/StandardRetryStrategy.js @@ -0,0 +1,94 @@ +import { HttpRequest, HttpResponse } from "@smithy/protocol-http"; +import { isThrottlingError } from "@smithy/service-error-classification"; +import { DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_DELAY_BASE, INITIAL_RETRY_TOKENS, INVOCATION_ID_HEADER, REQUEST_HEADER, RETRY_MODES, THROTTLING_RETRY_DELAY_BASE, } from "@smithy/util-retry"; +import { v4 } from "@smithy/uuid"; +import { getDefaultRetryQuota } from "./defaultRetryQuota"; +import { defaultDelayDecider } from "./delayDecider"; +import { defaultRetryDecider } from "./retryDecider"; +import { asSdkError } from "./util"; +export class StandardRetryStrategy { + maxAttemptsProvider; + retryDecider; + delayDecider; + retryQuota; + mode = RETRY_MODES.STANDARD; + constructor(maxAttemptsProvider, options) { + this.maxAttemptsProvider = maxAttemptsProvider; + this.retryDecider = options?.retryDecider ?? defaultRetryDecider; + this.delayDecider = options?.delayDecider ?? defaultDelayDecider; + this.retryQuota = options?.retryQuota ?? getDefaultRetryQuota(INITIAL_RETRY_TOKENS); + } + shouldRetry(error, attempts, maxAttempts) { + return attempts < maxAttempts && this.retryDecider(error) && this.retryQuota.hasRetryTokens(error); + } + async getMaxAttempts() { + let maxAttempts; + try { + maxAttempts = await this.maxAttemptsProvider(); + } + catch (error) { + maxAttempts = DEFAULT_MAX_ATTEMPTS; + } + return maxAttempts; + } + async retry(next, args, options) { + let retryTokenAmount; + let attempts = 0; + let totalDelay = 0; + const maxAttempts = await this.getMaxAttempts(); + const { request } = args; + if (HttpRequest.isInstance(request)) { + request.headers[INVOCATION_ID_HEADER] = v4(); + } + while (true) { + try { + if (HttpRequest.isInstance(request)) { + request.headers[REQUEST_HEADER] = `attempt=${attempts + 1}; max=${maxAttempts}`; + } + if (options?.beforeRequest) { + await options.beforeRequest(); + } + const { response, output } = await next(args); + if (options?.afterRequest) { + options.afterRequest(response); + } + this.retryQuota.releaseRetryTokens(retryTokenAmount); + output.$metadata.attempts = attempts + 1; + output.$metadata.totalRetryDelay = totalDelay; + return { response, output }; + } + catch (e) { + const err = asSdkError(e); + attempts++; + if (this.shouldRetry(err, attempts, maxAttempts)) { + retryTokenAmount = this.retryQuota.retrieveRetryTokens(err); + const delayFromDecider = this.delayDecider(isThrottlingError(err) ? THROTTLING_RETRY_DELAY_BASE : DEFAULT_RETRY_DELAY_BASE, attempts); + const delayFromResponse = getDelayFromRetryAfterHeader(err.$response); + const delay = Math.max(delayFromResponse || 0, delayFromDecider); + totalDelay += delay; + await new Promise((resolve) => setTimeout(resolve, delay)); + continue; + } + if (!err.$metadata) { + err.$metadata = {}; + } + err.$metadata.attempts = attempts; + err.$metadata.totalRetryDelay = totalDelay; + throw err; + } + } + } +} +const getDelayFromRetryAfterHeader = (response) => { + if (!HttpResponse.isInstance(response)) + return; + const retryAfterHeaderName = Object.keys(response.headers).find((key) => key.toLowerCase() === "retry-after"); + if (!retryAfterHeaderName) + return; + const retryAfter = response.headers[retryAfterHeaderName]; + const retryAfterSeconds = Number(retryAfter); + if (!Number.isNaN(retryAfterSeconds)) + return retryAfterSeconds * 1000; + const retryAfterDate = new Date(retryAfter); + return retryAfterDate.getTime() - Date.now(); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/configurations.js b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/configurations.js new file mode 100644 index 000000000..a6a523919 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/configurations.js @@ -0,0 +1,48 @@ +import { normalizeProvider } from "@smithy/util-middleware"; +import { AdaptiveRetryStrategy, DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_MODE, RETRY_MODES, StandardRetryStrategy, } from "@smithy/util-retry"; +export const ENV_MAX_ATTEMPTS = "AWS_MAX_ATTEMPTS"; +export const CONFIG_MAX_ATTEMPTS = "max_attempts"; +export const NODE_MAX_ATTEMPT_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => { + const value = env[ENV_MAX_ATTEMPTS]; + if (!value) + return undefined; + const maxAttempt = parseInt(value); + if (Number.isNaN(maxAttempt)) { + throw new Error(`Environment variable ${ENV_MAX_ATTEMPTS} mast be a number, got "${value}"`); + } + return maxAttempt; + }, + configFileSelector: (profile) => { + const value = profile[CONFIG_MAX_ATTEMPTS]; + if (!value) + return undefined; + const maxAttempt = parseInt(value); + if (Number.isNaN(maxAttempt)) { + throw new Error(`Shared config file entry ${CONFIG_MAX_ATTEMPTS} mast be a number, got "${value}"`); + } + return maxAttempt; + }, + default: DEFAULT_MAX_ATTEMPTS, +}; +export const resolveRetryConfig = (input) => { + const { retryStrategy, retryMode } = input; + const maxAttempts = normalizeProvider(input.maxAttempts ?? DEFAULT_MAX_ATTEMPTS); + let controller = retryStrategy + ? Promise.resolve(retryStrategy) + : undefined; + const getDefault = async () => (await normalizeProvider(retryMode)()) === RETRY_MODES.ADAPTIVE + ? new AdaptiveRetryStrategy(maxAttempts) + : new StandardRetryStrategy(maxAttempts); + return Object.assign(input, { + maxAttempts, + retryStrategy: () => (controller ??= getDefault()), + }); +}; +export const ENV_RETRY_MODE = "AWS_RETRY_MODE"; +export const CONFIG_RETRY_MODE = "retry_mode"; +export const NODE_RETRY_MODE_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => env[ENV_RETRY_MODE], + configFileSelector: (profile) => profile[CONFIG_RETRY_MODE], + default: DEFAULT_RETRY_MODE, +}; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/defaultRetryQuota.js b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/defaultRetryQuota.js new file mode 100644 index 000000000..4bf677163 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/defaultRetryQuota.js @@ -0,0 +1,27 @@ +import { NO_RETRY_INCREMENT, RETRY_COST, TIMEOUT_RETRY_COST } from "@smithy/util-retry"; +export const getDefaultRetryQuota = (initialRetryTokens, options) => { + const MAX_CAPACITY = initialRetryTokens; + const noRetryIncrement = options?.noRetryIncrement ?? NO_RETRY_INCREMENT; + const retryCost = options?.retryCost ?? RETRY_COST; + const timeoutRetryCost = options?.timeoutRetryCost ?? TIMEOUT_RETRY_COST; + let availableCapacity = initialRetryTokens; + const getCapacityAmount = (error) => (error.name === "TimeoutError" ? timeoutRetryCost : retryCost); + const hasRetryTokens = (error) => getCapacityAmount(error) <= availableCapacity; + const retrieveRetryTokens = (error) => { + if (!hasRetryTokens(error)) { + throw new Error("No retry token available"); + } + const capacityAmount = getCapacityAmount(error); + availableCapacity -= capacityAmount; + return capacityAmount; + }; + const releaseRetryTokens = (capacityReleaseAmount) => { + availableCapacity += capacityReleaseAmount ?? noRetryIncrement; + availableCapacity = Math.min(availableCapacity, MAX_CAPACITY); + }; + return Object.freeze({ + hasRetryTokens, + retrieveRetryTokens, + releaseRetryTokens, + }); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/delayDecider.js b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/delayDecider.js new file mode 100644 index 000000000..2928506a0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/delayDecider.js @@ -0,0 +1,2 @@ +import { MAXIMUM_RETRY_DELAY } from "@smithy/util-retry"; +export const defaultDelayDecider = (delayBase, attempts) => Math.floor(Math.min(MAXIMUM_RETRY_DELAY, Math.random() * 2 ** attempts * delayBase)); diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/index.js new file mode 100644 index 000000000..9ebe326af --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/index.js @@ -0,0 +1,7 @@ +export * from "./AdaptiveRetryStrategy"; +export * from "./StandardRetryStrategy"; +export * from "./configurations"; +export * from "./delayDecider"; +export * from "./omitRetryHeadersMiddleware"; +export * from "./retryDecider"; +export * from "./retryMiddleware"; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/isStreamingPayload/isStreamingPayload.browser.js b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/isStreamingPayload/isStreamingPayload.browser.js new file mode 100644 index 000000000..9569e924a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/isStreamingPayload/isStreamingPayload.browser.js @@ -0,0 +1 @@ +export const isStreamingPayload = (request) => request?.body instanceof ReadableStream; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/isStreamingPayload/isStreamingPayload.js b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/isStreamingPayload/isStreamingPayload.js new file mode 100644 index 000000000..7dcc687bf --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/isStreamingPayload/isStreamingPayload.js @@ -0,0 +1,3 @@ +import { Readable } from "stream"; +export const isStreamingPayload = (request) => request?.body instanceof Readable || + (typeof ReadableStream !== "undefined" && request?.body instanceof ReadableStream); diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/omitRetryHeadersMiddleware.js b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/omitRetryHeadersMiddleware.js new file mode 100644 index 000000000..cb3c37248 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/omitRetryHeadersMiddleware.js @@ -0,0 +1,22 @@ +import { HttpRequest } from "@smithy/protocol-http"; +import { INVOCATION_ID_HEADER, REQUEST_HEADER } from "@smithy/util-retry"; +export const omitRetryHeadersMiddleware = () => (next) => async (args) => { + const { request } = args; + if (HttpRequest.isInstance(request)) { + delete request.headers[INVOCATION_ID_HEADER]; + delete request.headers[REQUEST_HEADER]; + } + return next(args); +}; +export const omitRetryHeadersMiddlewareOptions = { + name: "omitRetryHeadersMiddleware", + tags: ["RETRY", "HEADERS", "OMIT_RETRY_HEADERS"], + relation: "before", + toMiddleware: "awsAuthMiddleware", + override: true, +}; +export const getOmitRetryHeadersPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo(omitRetryHeadersMiddleware(), omitRetryHeadersMiddlewareOptions); + }, +}); diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/retryDecider.js b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/retryDecider.js new file mode 100644 index 000000000..b965fba08 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/retryDecider.js @@ -0,0 +1,7 @@ +import { isClockSkewError, isRetryableByTrait, isThrottlingError, isTransientError, } from "@smithy/service-error-classification"; +export const defaultRetryDecider = (error) => { + if (!error) { + return false; + } + return isRetryableByTrait(error) || isClockSkewError(error) || isThrottlingError(error) || isTransientError(error); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/retryMiddleware.js b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/retryMiddleware.js new file mode 100644 index 000000000..5fa097ad7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/retryMiddleware.js @@ -0,0 +1,112 @@ +import { HttpRequest, HttpResponse } from "@smithy/protocol-http"; +import { isServerError, isThrottlingError, isTransientError } from "@smithy/service-error-classification"; +import { NoOpLogger } from "@smithy/smithy-client"; +import { INVOCATION_ID_HEADER, REQUEST_HEADER } from "@smithy/util-retry"; +import { v4 } from "@smithy/uuid"; +import { isStreamingPayload } from "./isStreamingPayload/isStreamingPayload"; +import { asSdkError } from "./util"; +export const retryMiddleware = (options) => (next, context) => async (args) => { + let retryStrategy = await options.retryStrategy(); + const maxAttempts = await options.maxAttempts(); + if (isRetryStrategyV2(retryStrategy)) { + retryStrategy = retryStrategy; + let retryToken = await retryStrategy.acquireInitialRetryToken(context["partition_id"]); + let lastError = new Error(); + let attempts = 0; + let totalRetryDelay = 0; + const { request } = args; + const isRequest = HttpRequest.isInstance(request); + if (isRequest) { + request.headers[INVOCATION_ID_HEADER] = v4(); + } + while (true) { + try { + if (isRequest) { + request.headers[REQUEST_HEADER] = `attempt=${attempts + 1}; max=${maxAttempts}`; + } + const { response, output } = await next(args); + retryStrategy.recordSuccess(retryToken); + output.$metadata.attempts = attempts + 1; + output.$metadata.totalRetryDelay = totalRetryDelay; + return { response, output }; + } + catch (e) { + const retryErrorInfo = getRetryErrorInfo(e); + lastError = asSdkError(e); + if (isRequest && isStreamingPayload(request)) { + (context.logger instanceof NoOpLogger ? console : context.logger)?.warn("An error was encountered in a non-retryable streaming request."); + throw lastError; + } + try { + retryToken = await retryStrategy.refreshRetryTokenForRetry(retryToken, retryErrorInfo); + } + catch (refreshError) { + if (!lastError.$metadata) { + lastError.$metadata = {}; + } + lastError.$metadata.attempts = attempts + 1; + lastError.$metadata.totalRetryDelay = totalRetryDelay; + throw lastError; + } + attempts = retryToken.getRetryCount(); + const delay = retryToken.getRetryDelay(); + totalRetryDelay += delay; + await new Promise((resolve) => setTimeout(resolve, delay)); + } + } + } + else { + retryStrategy = retryStrategy; + if (retryStrategy?.mode) + context.userAgent = [...(context.userAgent || []), ["cfg/retry-mode", retryStrategy.mode]]; + return retryStrategy.retry(next, args); + } +}; +const isRetryStrategyV2 = (retryStrategy) => typeof retryStrategy.acquireInitialRetryToken !== "undefined" && + typeof retryStrategy.refreshRetryTokenForRetry !== "undefined" && + typeof retryStrategy.recordSuccess !== "undefined"; +const getRetryErrorInfo = (error) => { + const errorInfo = { + error, + errorType: getRetryErrorType(error), + }; + const retryAfterHint = getRetryAfterHint(error.$response); + if (retryAfterHint) { + errorInfo.retryAfterHint = retryAfterHint; + } + return errorInfo; +}; +const getRetryErrorType = (error) => { + if (isThrottlingError(error)) + return "THROTTLING"; + if (isTransientError(error)) + return "TRANSIENT"; + if (isServerError(error)) + return "SERVER_ERROR"; + return "CLIENT_ERROR"; +}; +export const retryMiddlewareOptions = { + name: "retryMiddleware", + tags: ["RETRY"], + step: "finalizeRequest", + priority: "high", + override: true, +}; +export const getRetryPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.add(retryMiddleware(options), retryMiddlewareOptions); + }, +}); +export const getRetryAfterHint = (response) => { + if (!HttpResponse.isInstance(response)) + return; + const retryAfterHeaderName = Object.keys(response.headers).find((key) => key.toLowerCase() === "retry-after"); + if (!retryAfterHeaderName) + return; + const retryAfter = response.headers[retryAfterHeaderName]; + const retryAfterSeconds = Number(retryAfter); + if (!Number.isNaN(retryAfterSeconds)) + return new Date(retryAfterSeconds * 1000); + const retryAfterDate = new Date(retryAfter); + return retryAfterDate; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/types.js b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/types.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/util.js b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/util.js new file mode 100644 index 000000000..f45e6b4d3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-es/util.js @@ -0,0 +1,9 @@ +export const asSdkError = (error) => { + if (error instanceof Error) + return error; + if (error instanceof Object) + return Object.assign(new Error(), error); + if (typeof error === "string") + return new Error(error); + return new Error(`AWS SDK error wrapper for ${error}`); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/AdaptiveRetryStrategy.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/AdaptiveRetryStrategy.d.ts new file mode 100644 index 000000000..4d139e97d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/AdaptiveRetryStrategy.d.ts @@ -0,0 +1,23 @@ +import type { FinalizeHandler, FinalizeHandlerArguments, MetadataBearer, Provider } from "@smithy/types"; +import type { RateLimiter } from "@smithy/util-retry"; +import type { StandardRetryStrategyOptions } from "./StandardRetryStrategy"; +import { StandardRetryStrategy } from "./StandardRetryStrategy"; +/** + * @public + * Strategy options to be passed to AdaptiveRetryStrategy + */ +export interface AdaptiveRetryStrategyOptions extends StandardRetryStrategyOptions { + rateLimiter?: RateLimiter; +} +/** + * @public + * @deprecated use AdaptiveRetryStrategy from @smithy/util-retry + */ +export declare class AdaptiveRetryStrategy extends StandardRetryStrategy { + private rateLimiter; + constructor(maxAttemptsProvider: Provider, options?: AdaptiveRetryStrategyOptions); + retry(next: FinalizeHandler, args: FinalizeHandlerArguments): Promise<{ + response: unknown; + output: Ouput; + }>; +} diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/StandardRetryStrategy.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/StandardRetryStrategy.d.ts new file mode 100644 index 000000000..60f2b1f27 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/StandardRetryStrategy.d.ts @@ -0,0 +1,33 @@ +import type { FinalizeHandler, FinalizeHandlerArguments, MetadataBearer, Provider, RetryStrategy } from "@smithy/types"; +import type { DelayDecider, RetryDecider, RetryQuota } from "./types"; +/** + * Strategy options to be passed to StandardRetryStrategy + * @public + * @deprecated use StandardRetryStrategy from @smithy/util-retry + */ +export interface StandardRetryStrategyOptions { + retryDecider?: RetryDecider; + delayDecider?: DelayDecider; + retryQuota?: RetryQuota; +} +/** + * @public + * @deprecated use StandardRetryStrategy from @smithy/util-retry + */ +export declare class StandardRetryStrategy implements RetryStrategy { + private readonly maxAttemptsProvider; + private retryDecider; + private delayDecider; + private retryQuota; + mode: string; + constructor(maxAttemptsProvider: Provider, options?: StandardRetryStrategyOptions); + private shouldRetry; + private getMaxAttempts; + retry(next: FinalizeHandler, args: FinalizeHandlerArguments, options?: { + beforeRequest: Function; + afterRequest: Function; + }): Promise<{ + response: unknown; + output: Ouput; + }>; +} diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/configurations.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/configurations.d.ts new file mode 100644 index 000000000..cf849f7e7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/configurations.d.ts @@ -0,0 +1,66 @@ +import type { LoadedConfigSelectors } from "@smithy/node-config-provider"; +import type { Provider, RetryStrategy, RetryStrategyV2 } from "@smithy/types"; +/** + * @internal + */ +export declare const ENV_MAX_ATTEMPTS = "AWS_MAX_ATTEMPTS"; +/** + * @internal + */ +export declare const CONFIG_MAX_ATTEMPTS = "max_attempts"; +/** + * @internal + */ +export declare const NODE_MAX_ATTEMPT_CONFIG_OPTIONS: LoadedConfigSelectors; +/** + * @public + */ +export interface RetryInputConfig { + /** + * The maximum number of times requests that encounter retryable failures should be attempted. + */ + maxAttempts?: number | Provider; + /** + * The strategy to retry the request. Using built-in exponential backoff strategy by default. + */ + retryStrategy?: RetryStrategy | RetryStrategyV2; +} +/** + * @internal + */ +export interface PreviouslyResolved { + /** + * Specifies provider for retry algorithm to use. + * @internal + */ + retryMode: string | Provider; +} +/** + * @internal + */ +export interface RetryResolvedConfig { + /** + * Resolved value for input config {@link RetryInputConfig.maxAttempts} + */ + maxAttempts: Provider; + /** + * Resolved value for input config {@link RetryInputConfig.retryStrategy} + */ + retryStrategy: Provider; +} +/** + * @internal + */ +export declare const resolveRetryConfig: (input: T & PreviouslyResolved & RetryInputConfig) => T & RetryResolvedConfig; +/** + * @internal + */ +export declare const ENV_RETRY_MODE = "AWS_RETRY_MODE"; +/** + * @internal + */ +export declare const CONFIG_RETRY_MODE = "retry_mode"; +/** + * @internal + */ +export declare const NODE_RETRY_MODE_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/defaultRetryQuota.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/defaultRetryQuota.d.ts new file mode 100644 index 000000000..c9be83560 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/defaultRetryQuota.d.ts @@ -0,0 +1,24 @@ +import type { RetryQuota } from "./types"; +/** + * @internal + */ +export interface DefaultRetryQuotaOptions { + /** + * The total amount of retry token to be incremented from retry token balance + * if an SDK operation invocation succeeds without requiring a retry request. + */ + noRetryIncrement?: number; + /** + * The total amount of retry tokens to be decremented from retry token balance. + */ + retryCost?: number; + /** + * The total amount of retry tokens to be decremented from retry token balance + * when a throttling error is encountered. + */ + timeoutRetryCost?: number; +} +/** + * @internal + */ +export declare const getDefaultRetryQuota: (initialRetryTokens: number, options?: DefaultRetryQuotaOptions) => RetryQuota; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/delayDecider.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/delayDecider.d.ts new file mode 100644 index 000000000..986ff42af --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/delayDecider.d.ts @@ -0,0 +1,5 @@ +/** + * @internal + * Calculate a capped, fully-jittered exponential backoff time. + */ +export declare const defaultDelayDecider: (delayBase: number, attempts: number) => number; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/index.d.ts new file mode 100644 index 000000000..9ebe326af --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/index.d.ts @@ -0,0 +1,7 @@ +export * from "./AdaptiveRetryStrategy"; +export * from "./StandardRetryStrategy"; +export * from "./configurations"; +export * from "./delayDecider"; +export * from "./omitRetryHeadersMiddleware"; +export * from "./retryDecider"; +export * from "./retryMiddleware"; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/isStreamingPayload/isStreamingPayload.browser.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/isStreamingPayload/isStreamingPayload.browser.d.ts new file mode 100644 index 000000000..48d70ba80 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/isStreamingPayload/isStreamingPayload.browser.d.ts @@ -0,0 +1,5 @@ +import type { HttpRequest } from "@smithy/protocol-http"; +/** + * @internal + */ +export declare const isStreamingPayload: (request: HttpRequest) => boolean; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/isStreamingPayload/isStreamingPayload.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/isStreamingPayload/isStreamingPayload.d.ts new file mode 100644 index 000000000..48d70ba80 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/isStreamingPayload/isStreamingPayload.d.ts @@ -0,0 +1,5 @@ +import type { HttpRequest } from "@smithy/protocol-http"; +/** + * @internal + */ +export declare const isStreamingPayload: (request: HttpRequest) => boolean; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/omitRetryHeadersMiddleware.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/omitRetryHeadersMiddleware.d.ts new file mode 100644 index 000000000..282ddc38a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/omitRetryHeadersMiddleware.d.ts @@ -0,0 +1,13 @@ +import type { FinalizeHandler, MetadataBearer, Pluggable, RelativeMiddlewareOptions } from "@smithy/types"; +/** + * @internal + */ +export declare const omitRetryHeadersMiddleware: () => (next: FinalizeHandler) => FinalizeHandler; +/** + * @internal + */ +export declare const omitRetryHeadersMiddlewareOptions: RelativeMiddlewareOptions; +/** + * @internal + */ +export declare const getOmitRetryHeadersPlugin: (options: unknown) => Pluggable; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/retryDecider.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/retryDecider.d.ts new file mode 100644 index 000000000..5c1bb1821 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/retryDecider.d.ts @@ -0,0 +1,6 @@ +import type { SdkError } from "@smithy/types"; +/** + * @internal + * @deprecated this is only used in the deprecated StandardRetryStrategy. Do not use in new code. + */ +export declare const defaultRetryDecider: (error: SdkError) => boolean; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/retryMiddleware.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/retryMiddleware.d.ts new file mode 100644 index 000000000..445990fed --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/retryMiddleware.d.ts @@ -0,0 +1,18 @@ +import type { AbsoluteLocation, FinalizeHandler, FinalizeRequestHandlerOptions, HandlerExecutionContext, MetadataBearer, Pluggable } from "@smithy/types"; +import type { RetryResolvedConfig } from "./configurations"; +/** + * @internal + */ +export declare const retryMiddleware: (options: RetryResolvedConfig) => (next: FinalizeHandler, context: HandlerExecutionContext) => FinalizeHandler; +/** + * @internal + */ +export declare const retryMiddlewareOptions: FinalizeRequestHandlerOptions & AbsoluteLocation; +/** + * @internal + */ +export declare const getRetryPlugin: (options: RetryResolvedConfig) => Pluggable; +/** + * @internal + */ +export declare const getRetryAfterHint: (response: unknown) => Date | undefined; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/AdaptiveRetryStrategy.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/AdaptiveRetryStrategy.d.ts new file mode 100644 index 000000000..dbb3201ea --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/AdaptiveRetryStrategy.d.ts @@ -0,0 +1,23 @@ +import { FinalizeHandler, FinalizeHandlerArguments, MetadataBearer, Provider } from "@smithy/types"; +import { RateLimiter } from "@smithy/util-retry"; +import { StandardRetryStrategyOptions } from "./StandardRetryStrategy"; +import { StandardRetryStrategy } from "./StandardRetryStrategy"; +/** + * @public + * Strategy options to be passed to AdaptiveRetryStrategy + */ +export interface AdaptiveRetryStrategyOptions extends StandardRetryStrategyOptions { + rateLimiter?: RateLimiter; +} +/** + * @public + * @deprecated use AdaptiveRetryStrategy from @smithy/util-retry + */ +export declare class AdaptiveRetryStrategy extends StandardRetryStrategy { + private rateLimiter; + constructor(maxAttemptsProvider: Provider, options?: AdaptiveRetryStrategyOptions); + retry(next: FinalizeHandler, args: FinalizeHandlerArguments): Promise<{ + response: unknown; + output: Ouput; + }>; +} diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/StandardRetryStrategy.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/StandardRetryStrategy.d.ts new file mode 100644 index 000000000..7007ac383 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/StandardRetryStrategy.d.ts @@ -0,0 +1,33 @@ +import { FinalizeHandler, FinalizeHandlerArguments, MetadataBearer, Provider, RetryStrategy } from "@smithy/types"; +import { DelayDecider, RetryDecider, RetryQuota } from "./types"; +/** + * Strategy options to be passed to StandardRetryStrategy + * @public + * @deprecated use StandardRetryStrategy from @smithy/util-retry + */ +export interface StandardRetryStrategyOptions { + retryDecider?: RetryDecider; + delayDecider?: DelayDecider; + retryQuota?: RetryQuota; +} +/** + * @public + * @deprecated use StandardRetryStrategy from @smithy/util-retry + */ +export declare class StandardRetryStrategy implements RetryStrategy { + private readonly maxAttemptsProvider; + private retryDecider; + private delayDecider; + private retryQuota; + mode: string; + constructor(maxAttemptsProvider: Provider, options?: StandardRetryStrategyOptions); + private shouldRetry; + private getMaxAttempts; + retry(next: FinalizeHandler, args: FinalizeHandlerArguments, options?: { + beforeRequest: Function; + afterRequest: Function; + }): Promise<{ + response: unknown; + output: Ouput; + }>; +} diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/configurations.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/configurations.d.ts new file mode 100644 index 000000000..150c2a36c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/configurations.d.ts @@ -0,0 +1,66 @@ +import { LoadedConfigSelectors } from "@smithy/node-config-provider"; +import { Provider, RetryStrategy, RetryStrategyV2 } from "@smithy/types"; +/** + * @internal + */ +export declare const ENV_MAX_ATTEMPTS = "AWS_MAX_ATTEMPTS"; +/** + * @internal + */ +export declare const CONFIG_MAX_ATTEMPTS = "max_attempts"; +/** + * @internal + */ +export declare const NODE_MAX_ATTEMPT_CONFIG_OPTIONS: LoadedConfigSelectors; +/** + * @public + */ +export interface RetryInputConfig { + /** + * The maximum number of times requests that encounter retryable failures should be attempted. + */ + maxAttempts?: number | Provider; + /** + * The strategy to retry the request. Using built-in exponential backoff strategy by default. + */ + retryStrategy?: RetryStrategy | RetryStrategyV2; +} +/** + * @internal + */ +export interface PreviouslyResolved { + /** + * Specifies provider for retry algorithm to use. + * @internal + */ + retryMode: string | Provider; +} +/** + * @internal + */ +export interface RetryResolvedConfig { + /** + * Resolved value for input config {@link RetryInputConfig.maxAttempts} + */ + maxAttempts: Provider; + /** + * Resolved value for input config {@link RetryInputConfig.retryStrategy} + */ + retryStrategy: Provider; +} +/** + * @internal + */ +export declare const resolveRetryConfig: (input: T & PreviouslyResolved & RetryInputConfig) => T & RetryResolvedConfig; +/** + * @internal + */ +export declare const ENV_RETRY_MODE = "AWS_RETRY_MODE"; +/** + * @internal + */ +export declare const CONFIG_RETRY_MODE = "retry_mode"; +/** + * @internal + */ +export declare const NODE_RETRY_MODE_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/defaultRetryQuota.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/defaultRetryQuota.d.ts new file mode 100644 index 000000000..332a49408 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/defaultRetryQuota.d.ts @@ -0,0 +1,24 @@ +import { RetryQuota } from "./types"; +/** + * @internal + */ +export interface DefaultRetryQuotaOptions { + /** + * The total amount of retry token to be incremented from retry token balance + * if an SDK operation invocation succeeds without requiring a retry request. + */ + noRetryIncrement?: number; + /** + * The total amount of retry tokens to be decremented from retry token balance. + */ + retryCost?: number; + /** + * The total amount of retry tokens to be decremented from retry token balance + * when a throttling error is encountered. + */ + timeoutRetryCost?: number; +} +/** + * @internal + */ +export declare const getDefaultRetryQuota: (initialRetryTokens: number, options?: DefaultRetryQuotaOptions) => RetryQuota; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/delayDecider.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/delayDecider.d.ts new file mode 100644 index 000000000..986ff42af --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/delayDecider.d.ts @@ -0,0 +1,5 @@ +/** + * @internal + * Calculate a capped, fully-jittered exponential backoff time. + */ +export declare const defaultDelayDecider: (delayBase: number, attempts: number) => number; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..9ebe326af --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/index.d.ts @@ -0,0 +1,7 @@ +export * from "./AdaptiveRetryStrategy"; +export * from "./StandardRetryStrategy"; +export * from "./configurations"; +export * from "./delayDecider"; +export * from "./omitRetryHeadersMiddleware"; +export * from "./retryDecider"; +export * from "./retryMiddleware"; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/isStreamingPayload/isStreamingPayload.browser.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/isStreamingPayload/isStreamingPayload.browser.d.ts new file mode 100644 index 000000000..2349040f8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/isStreamingPayload/isStreamingPayload.browser.d.ts @@ -0,0 +1,5 @@ +import { HttpRequest } from "@smithy/protocol-http"; +/** + * @internal + */ +export declare const isStreamingPayload: (request: HttpRequest) => boolean; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/isStreamingPayload/isStreamingPayload.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/isStreamingPayload/isStreamingPayload.d.ts new file mode 100644 index 000000000..2349040f8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/isStreamingPayload/isStreamingPayload.d.ts @@ -0,0 +1,5 @@ +import { HttpRequest } from "@smithy/protocol-http"; +/** + * @internal + */ +export declare const isStreamingPayload: (request: HttpRequest) => boolean; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/omitRetryHeadersMiddleware.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/omitRetryHeadersMiddleware.d.ts new file mode 100644 index 000000000..50c1ab676 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/omitRetryHeadersMiddleware.d.ts @@ -0,0 +1,13 @@ +import { FinalizeHandler, MetadataBearer, Pluggable, RelativeMiddlewareOptions } from "@smithy/types"; +/** + * @internal + */ +export declare const omitRetryHeadersMiddleware: () => (next: FinalizeHandler) => FinalizeHandler; +/** + * @internal + */ +export declare const omitRetryHeadersMiddlewareOptions: RelativeMiddlewareOptions; +/** + * @internal + */ +export declare const getOmitRetryHeadersPlugin: (options: unknown) => Pluggable; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/retryDecider.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/retryDecider.d.ts new file mode 100644 index 000000000..11a4a9c7d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/retryDecider.d.ts @@ -0,0 +1,6 @@ +import { SdkError } from "@smithy/types"; +/** + * @internal + * @deprecated this is only used in the deprecated StandardRetryStrategy. Do not use in new code. + */ +export declare const defaultRetryDecider: (error: SdkError) => boolean; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/retryMiddleware.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/retryMiddleware.d.ts new file mode 100644 index 000000000..93103017e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/retryMiddleware.d.ts @@ -0,0 +1,18 @@ +import { AbsoluteLocation, FinalizeHandler, FinalizeRequestHandlerOptions, HandlerExecutionContext, MetadataBearer, Pluggable } from "@smithy/types"; +import { RetryResolvedConfig } from "./configurations"; +/** + * @internal + */ +export declare const retryMiddleware: (options: RetryResolvedConfig) => (next: FinalizeHandler, context: HandlerExecutionContext) => FinalizeHandler; +/** + * @internal + */ +export declare const retryMiddlewareOptions: FinalizeRequestHandlerOptions & AbsoluteLocation; +/** + * @internal + */ +export declare const getRetryPlugin: (options: RetryResolvedConfig) => Pluggable; +/** + * @internal + */ +export declare const getRetryAfterHint: (response: unknown) => Date | undefined; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/types.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/types.d.ts new file mode 100644 index 000000000..8f2271271 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/types.d.ts @@ -0,0 +1,65 @@ +import { SdkError } from "@smithy/types"; +/** + * Determines whether an error is retryable based on the number of retries + * already attempted, the HTTP status code, and the error received (if any). + * + * @param error - The error encountered. + * + * @deprecated + * @internal + */ +export interface RetryDecider { + (error: SdkError): boolean; +} +/** + * Determines the number of milliseconds to wait before retrying an action. + * + * @param delayBase - The base delay (in milliseconds). + * @param attempts - The number of times the action has already been tried. + * + * @deprecated + * @internal + */ +export interface DelayDecider { + (delayBase: number, attempts: number): number; +} +/** + * Interface that specifies the retry quota behavior. + * @deprecated + * @internal + */ +export interface RetryQuota { + /** + * returns true if retry tokens are available from the retry quota bucket. + */ + hasRetryTokens: (error: SdkError) => boolean; + /** + * returns token amount from the retry quota bucket. + * throws error is retry tokens are not available. + */ + retrieveRetryTokens: (error: SdkError) => number; + /** + * releases tokens back to the retry quota. + */ + releaseRetryTokens: (releaseCapacityAmount?: number) => void; +} +/** + * @deprecated + * @internal + */ +export interface RateLimiter { + /** + * If there is sufficient capacity (tokens) available, it immediately returns. + * If there is not sufficient capacity, it will either sleep a certain amount + * of time until the rate limiter can retrieve a token from its token bucket + * or raise an exception indicating there is insufficient capacity. + */ + getSendToken: () => Promise; + /** + * Updates the client sending rate based on response. + * If the response was successful, the capacity and fill rate are increased. + * If the response was a throttling response, the capacity and fill rate are + * decreased. Transient errors do not affect the rate limiter. + */ + updateClientSendingRate: (response: any) => void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/util.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/util.d.ts new file mode 100644 index 000000000..00939b8ea --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/ts3.4/util.d.ts @@ -0,0 +1,2 @@ +import { SdkError } from "@smithy/types"; +export declare const asSdkError: (error: unknown) => SdkError; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/types.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/types.d.ts new file mode 100644 index 000000000..622302d9f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/types.d.ts @@ -0,0 +1,65 @@ +import type { SdkError } from "@smithy/types"; +/** + * Determines whether an error is retryable based on the number of retries + * already attempted, the HTTP status code, and the error received (if any). + * + * @param error - The error encountered. + * + * @deprecated + * @internal + */ +export interface RetryDecider { + (error: SdkError): boolean; +} +/** + * Determines the number of milliseconds to wait before retrying an action. + * + * @param delayBase - The base delay (in milliseconds). + * @param attempts - The number of times the action has already been tried. + * + * @deprecated + * @internal + */ +export interface DelayDecider { + (delayBase: number, attempts: number): number; +} +/** + * Interface that specifies the retry quota behavior. + * @deprecated + * @internal + */ +export interface RetryQuota { + /** + * returns true if retry tokens are available from the retry quota bucket. + */ + hasRetryTokens: (error: SdkError) => boolean; + /** + * returns token amount from the retry quota bucket. + * throws error is retry tokens are not available. + */ + retrieveRetryTokens: (error: SdkError) => number; + /** + * releases tokens back to the retry quota. + */ + releaseRetryTokens: (releaseCapacityAmount?: number) => void; +} +/** + * @deprecated + * @internal + */ +export interface RateLimiter { + /** + * If there is sufficient capacity (tokens) available, it immediately returns. + * If there is not sufficient capacity, it will either sleep a certain amount + * of time until the rate limiter can retrieve a token from its token bucket + * or raise an exception indicating there is insufficient capacity. + */ + getSendToken: () => Promise; + /** + * Updates the client sending rate based on response. + * If the response was successful, the capacity and fill rate are increased. + * If the response was a throttling response, the capacity and fill rate are + * decreased. Transient errors do not affect the rate limiter. + */ + updateClientSendingRate: (response: any) => void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/util.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/util.d.ts new file mode 100644 index 000000000..8b8e01c1a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/dist-types/util.d.ts @@ -0,0 +1,2 @@ +import type { SdkError } from "@smithy/types"; +export declare const asSdkError: (error: unknown) => SdkError; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-retry/package.json b/food-ordering-app/server/node_modules/@smithy/middleware-retry/package.json new file mode 100644 index 000000000..77f4238a0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-retry/package.json @@ -0,0 +1,79 @@ +{ + "name": "@smithy/middleware-retry", + "version": "4.4.42", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline middleware-retry", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "extract:docs": "api-extractor run --local", + "test": "yarn g:vitest run", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:watch": "yarn g:vitest watch", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "browser": { + "./dist-es/isStreamingPayload/isStreamingPayload": "./dist-es/isStreamingPayload/isStreamingPayload.browser" + }, + "react-native": { + "./dist-cjs/isStreamingPayload/isStreamingPayload": "./dist-cjs/isStreamingPayload/isStreamingPayload.browser", + "./dist-es/isStreamingPayload/isStreamingPayload": "./dist-es/isStreamingPayload/isStreamingPayload.browser" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/node-config-provider": "^4.3.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/service-error-classification": "^4.2.12", + "@smithy/smithy-client": "^4.12.5", + "@smithy/types": "^4.13.1", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-retry": "^4.2.12", + "@smithy/uuid": "^1.1.2", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@smithy/util-test": "^0.2.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/middleware-retry", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/middleware-retry" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-serde/LICENSE b/food-ordering-app/server/node_modules/@smithy/middleware-serde/LICENSE new file mode 100644 index 000000000..e907b5866 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-serde/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-serde/README.md b/food-ordering-app/server/node_modules/@smithy/middleware-serde/README.md new file mode 100644 index 000000000..d2bbfa637 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-serde/README.md @@ -0,0 +1,4 @@ +# @smithy/middleware-serde + +[![NPM version](https://img.shields.io/npm/v/@smithy/middleware-serde/latest.svg)](https://www.npmjs.com/package/@smithy/middleware-serde) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/middleware-serde.svg)](https://www.npmjs.com/package/@smithy/middleware-serde) diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-cjs/index.js new file mode 100644 index 000000000..520c6b16d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-cjs/index.js @@ -0,0 +1,104 @@ +'use strict'; + +var protocolHttp = require('@smithy/protocol-http'); +var endpoints = require('@smithy/core/endpoints'); + +const deserializerMiddleware = (options, deserializer) => (next, context) => async (args) => { + const { response } = await next(args); + try { + const parsed = await deserializer(response, options); + return { + response, + output: parsed, + }; + } + catch (error) { + Object.defineProperty(error, "$response", { + value: response, + enumerable: false, + writable: false, + configurable: false, + }); + if (!("$metadata" in error)) { + const hint = `Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.`; + try { + error.message += "\n " + hint; + } + catch (e) { + if (!context.logger || context.logger?.constructor?.name === "NoOpLogger") { + console.warn(hint); + } + else { + context.logger?.warn?.(hint); + } + } + if (typeof error.$responseBodyText !== "undefined") { + if (error.$response) { + error.$response.body = error.$responseBodyText; + } + } + try { + if (protocolHttp.HttpResponse.isInstance(response)) { + const { headers = {} } = response; + const headerEntries = Object.entries(headers); + error.$metadata = { + httpStatusCode: response.statusCode, + requestId: findHeader(/^x-[\w-]+-request-?id$/, headerEntries), + extendedRequestId: findHeader(/^x-[\w-]+-id-2$/, headerEntries), + cfId: findHeader(/^x-[\w-]+-cf-id$/, headerEntries), + }; + } + } + catch (e) { + } + } + throw error; + } +}; +const findHeader = (pattern, headers) => { + return (headers.find(([k]) => { + return k.match(pattern); + }) || [void 0, void 0])[1]; +}; + +const serializerMiddleware = (options, serializer) => (next, context) => async (args) => { + const endpointConfig = options; + const endpoint = context.endpointV2 + ? async () => endpoints.toEndpointV1(context.endpointV2) + : endpointConfig.endpoint; + if (!endpoint) { + throw new Error("No valid endpoint provider available."); + } + const request = await serializer(args.input, { ...options, endpoint }); + return next({ + ...args, + request, + }); +}; + +const deserializerMiddlewareOption = { + name: "deserializerMiddleware", + step: "deserialize", + tags: ["DESERIALIZER"], + override: true, +}; +const serializerMiddlewareOption = { + name: "serializerMiddleware", + step: "serialize", + tags: ["SERIALIZER"], + override: true, +}; +function getSerdePlugin(config, serializer, deserializer) { + return { + applyToStack: (commandStack) => { + commandStack.add(deserializerMiddleware(config, deserializer), deserializerMiddlewareOption); + commandStack.add(serializerMiddleware(config, serializer), serializerMiddlewareOption); + }, + }; +} + +exports.deserializerMiddleware = deserializerMiddleware; +exports.deserializerMiddlewareOption = deserializerMiddlewareOption; +exports.getSerdePlugin = getSerdePlugin; +exports.serializerMiddleware = serializerMiddleware; +exports.serializerMiddlewareOption = serializerMiddlewareOption; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-es/deserializerMiddleware.js b/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-es/deserializerMiddleware.js new file mode 100644 index 000000000..a83d35605 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-es/deserializerMiddleware.js @@ -0,0 +1,58 @@ +import { HttpResponse } from "@smithy/protocol-http"; +export const deserializerMiddleware = (options, deserializer) => (next, context) => async (args) => { + const { response } = await next(args); + try { + const parsed = await deserializer(response, options); + return { + response, + output: parsed, + }; + } + catch (error) { + Object.defineProperty(error, "$response", { + value: response, + enumerable: false, + writable: false, + configurable: false, + }); + if (!("$metadata" in error)) { + const hint = `Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.`; + try { + error.message += "\n " + hint; + } + catch (e) { + if (!context.logger || context.logger?.constructor?.name === "NoOpLogger") { + console.warn(hint); + } + else { + context.logger?.warn?.(hint); + } + } + if (typeof error.$responseBodyText !== "undefined") { + if (error.$response) { + error.$response.body = error.$responseBodyText; + } + } + try { + if (HttpResponse.isInstance(response)) { + const { headers = {} } = response; + const headerEntries = Object.entries(headers); + error.$metadata = { + httpStatusCode: response.statusCode, + requestId: findHeader(/^x-[\w-]+-request-?id$/, headerEntries), + extendedRequestId: findHeader(/^x-[\w-]+-id-2$/, headerEntries), + cfId: findHeader(/^x-[\w-]+-cf-id$/, headerEntries), + }; + } + } + catch (e) { + } + } + throw error; + } +}; +const findHeader = (pattern, headers) => { + return (headers.find(([k]) => { + return k.match(pattern); + }) || [void 0, void 1])[1]; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-es/index.js new file mode 100644 index 000000000..166a2be21 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-es/index.js @@ -0,0 +1,3 @@ +export * from "./deserializerMiddleware"; +export * from "./serdePlugin"; +export * from "./serializerMiddleware"; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-es/serdePlugin.js b/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-es/serdePlugin.js new file mode 100644 index 000000000..be2a06ef8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-es/serdePlugin.js @@ -0,0 +1,22 @@ +import { deserializerMiddleware } from "./deserializerMiddleware"; +import { serializerMiddleware } from "./serializerMiddleware"; +export const deserializerMiddlewareOption = { + name: "deserializerMiddleware", + step: "deserialize", + tags: ["DESERIALIZER"], + override: true, +}; +export const serializerMiddlewareOption = { + name: "serializerMiddleware", + step: "serialize", + tags: ["SERIALIZER"], + override: true, +}; +export function getSerdePlugin(config, serializer, deserializer) { + return { + applyToStack: (commandStack) => { + commandStack.add(deserializerMiddleware(config, deserializer), deserializerMiddlewareOption); + commandStack.add(serializerMiddleware(config, serializer), serializerMiddlewareOption); + }, + }; +} diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-es/serializerMiddleware.js b/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-es/serializerMiddleware.js new file mode 100644 index 000000000..f32db4af4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-es/serializerMiddleware.js @@ -0,0 +1,15 @@ +import { toEndpointV1 } from "@smithy/core/endpoints"; +export const serializerMiddleware = (options, serializer) => (next, context) => async (args) => { + const endpointConfig = options; + const endpoint = context.endpointV2 + ? async () => toEndpointV1(context.endpointV2) + : endpointConfig.endpoint; + if (!endpoint) { + throw new Error("No valid endpoint provider available."); + } + const request = await serializer(args.input, { ...options, endpoint }); + return next({ + ...args, + request, + }); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-types/deserializerMiddleware.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-types/deserializerMiddleware.d.ts new file mode 100644 index 000000000..2a66d7cd3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-types/deserializerMiddleware.d.ts @@ -0,0 +1,6 @@ +import type { DeserializeMiddleware, ResponseDeserializer, SerdeContext, SerdeFunctions } from "@smithy/types"; +/** + * @internal + * @deprecated will be replaced by schemaSerdePlugin from core/schema. + */ +export declare const deserializerMiddleware: (options: SerdeFunctions, deserializer: ResponseDeserializer) => DeserializeMiddleware; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-types/index.d.ts new file mode 100644 index 000000000..166a2be21 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-types/index.d.ts @@ -0,0 +1,3 @@ +export * from "./deserializerMiddleware"; +export * from "./serdePlugin"; +export * from "./serializerMiddleware"; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-types/serdePlugin.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-types/serdePlugin.d.ts new file mode 100644 index 000000000..a4ecfe474 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-types/serdePlugin.d.ts @@ -0,0 +1,24 @@ +import type { DeserializeHandlerOptions, Endpoint, MetadataBearer, Pluggable, Provider, RequestSerializer, ResponseDeserializer, SerdeContext, SerdeFunctions, SerializeHandlerOptions, UrlParser } from "@smithy/types"; +/** + * @deprecated will be replaced by schemaSerdePlugin from core/schema. + */ +export declare const deserializerMiddlewareOption: DeserializeHandlerOptions; +/** + * @deprecated will be replaced by schemaSerdePlugin from core/schema. + */ +export declare const serializerMiddlewareOption: SerializeHandlerOptions; +/** + * Modifies the EndpointBearer to make it compatible with Endpoints 2.0 change. + * + * @internal + * @deprecated + */ +export type V1OrV2Endpoint = { + urlParser?: UrlParser; + endpoint?: Provider; +}; +/** + * @internal + * @deprecated will be replaced by schemaSerdePlugin from core/schema. + */ +export declare function getSerdePlugin(config: SerdeFunctions, serializer: RequestSerializer, deserializer: ResponseDeserializer): Pluggable; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-types/serializerMiddleware.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-types/serializerMiddleware.d.ts new file mode 100644 index 000000000..6312b7d01 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-types/serializerMiddleware.d.ts @@ -0,0 +1,6 @@ +import type { RequestSerializer, SerdeContext, SerdeFunctions, SerializeMiddleware } from "@smithy/types"; +/** + * @internal + * @deprecated will be replaced by schemaSerdePlugin from core/schema. + */ +export declare const serializerMiddleware: (options: SerdeFunctions, serializer: RequestSerializer) => SerializeMiddleware; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-types/ts3.4/deserializerMiddleware.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-types/ts3.4/deserializerMiddleware.d.ts new file mode 100644 index 000000000..fb9a8fa59 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-types/ts3.4/deserializerMiddleware.d.ts @@ -0,0 +1,6 @@ +import { DeserializeMiddleware, ResponseDeserializer, SerdeContext, SerdeFunctions } from "@smithy/types"; +/** + * @internal + * @deprecated will be replaced by schemaSerdePlugin from core/schema. + */ +export declare const deserializerMiddleware: (options: SerdeFunctions, deserializer: ResponseDeserializer) => DeserializeMiddleware; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..166a2be21 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-types/ts3.4/index.d.ts @@ -0,0 +1,3 @@ +export * from "./deserializerMiddleware"; +export * from "./serdePlugin"; +export * from "./serializerMiddleware"; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-types/ts3.4/serdePlugin.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-types/ts3.4/serdePlugin.d.ts new file mode 100644 index 000000000..61cf9d461 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-types/ts3.4/serdePlugin.d.ts @@ -0,0 +1,24 @@ +import { DeserializeHandlerOptions, Endpoint, MetadataBearer, Pluggable, Provider, RequestSerializer, ResponseDeserializer, SerdeContext, SerdeFunctions, SerializeHandlerOptions, UrlParser } from "@smithy/types"; +/** + * @deprecated will be replaced by schemaSerdePlugin from core/schema. + */ +export declare const deserializerMiddlewareOption: DeserializeHandlerOptions; +/** + * @deprecated will be replaced by schemaSerdePlugin from core/schema. + */ +export declare const serializerMiddlewareOption: SerializeHandlerOptions; +/** + * Modifies the EndpointBearer to make it compatible with Endpoints 2.0 change. + * + * @internal + * @deprecated + */ +export type V1OrV2Endpoint = { + urlParser?: UrlParser; + endpoint?: Provider; +}; +/** + * @internal + * @deprecated will be replaced by schemaSerdePlugin from core/schema. + */ +export declare function getSerdePlugin(config: SerdeFunctions, serializer: RequestSerializer, deserializer: ResponseDeserializer): Pluggable; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-types/ts3.4/serializerMiddleware.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-types/ts3.4/serializerMiddleware.d.ts new file mode 100644 index 000000000..c5067702c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-serde/dist-types/ts3.4/serializerMiddleware.d.ts @@ -0,0 +1,6 @@ +import { RequestSerializer, SerdeContext, SerdeFunctions, SerializeMiddleware } from "@smithy/types"; +/** + * @internal + * @deprecated will be replaced by schemaSerdePlugin from core/schema. + */ +export declare const serializerMiddleware: (options: SerdeFunctions, serializer: RequestSerializer) => SerializeMiddleware; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-serde/package.json b/food-ordering-app/server/node_modules/@smithy/middleware-serde/package.json new file mode 100644 index 000000000..7d9726d38 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-serde/package.json @@ -0,0 +1,66 @@ +{ + "name": "@smithy/middleware-serde", + "version": "4.2.14", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline middleware-serde", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:watch": "yarn g:vitest watch", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/core": "^3.23.11", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/middleware-serde", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/middleware-serde" + }, + "devDependencies": { + "@smithy/util-test": "^0.2.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-stack/LICENSE b/food-ordering-app/server/node_modules/@smithy/middleware-stack/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-stack/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-stack/README.md b/food-ordering-app/server/node_modules/@smithy/middleware-stack/README.md new file mode 100644 index 000000000..c09d4d36e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-stack/README.md @@ -0,0 +1,78 @@ +# @smithy/middleware-stack + +[![NPM version](https://img.shields.io/npm/v/@smithy/middleware-stack/latest.svg)](https://www.npmjs.com/package/@smithy/middleware-stack) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/middleware-stack.svg)](https://www.npmjs.com/package/@smithy/middleware-stack) + +The package contains an implementation of middleware stack interface. Middleware +stack is a structure storing middleware in specified order and resolve these +middleware into a single handler. + +A middleware stack has five `Step`s, each of them represents a specific request life cycle: + +- **initialize**: The input is being prepared. Examples of typical initialization tasks include injecting default options computing derived parameters. + +- **serialize**: The input is complete and ready to be serialized. Examples of typical serialization tasks include input validation and building an HTTP request from user input. + +- **build**: The input has been serialized into an HTTP request, but that request may require further modification. Any request alterations will be applied to all retries. Examples of typical build tasks include injecting HTTP headers that describe a stable aspect of the request, such as `Content-Length` or a body checksum. + +- **finalizeRequest**: The request is being prepared to be sent over the wire. The request in this stage should already be semantically complete and should therefore only be altered to match the recipient's expectations. Examples of typical finalization tasks include request signing and injecting hop-by-hop headers. + +- **deserialize**: The response has arrived, the middleware here will deserialize the raw response object to structured response + +## Adding Middleware + +There are two ways to add middleware to a middleware stack. They both add middleware to specified `Step` but they provide fine-grained location control differently. + +### Absolute Location + +You can add middleware to specified step with: + +```javascript +stack.add(middleware, { + step: "finalizeRequest", +}); +``` + +This approach works for most cases. Sometimes you want your middleware to be executed in the front of the `Step`, you can set the `Priority` to `high`. Set the `Priority` to `low` then this middleware will be executed at the end of `Step`: + +```javascript +stack.add(middleware, { + step: "finalizeRequest", + priority: "high", +}); +``` + +If multiple middleware is added to same `step` with same `priority`, the order of them is determined by the order of adding them. + +### Relative Location + +In some cases, you might want to execute your middleware before some other known middleware, then you can use `addRelativeTo()`: + +```javascript +stack.add(middleware, { + step: "finalizeRequest", + name: "myMiddleware", +}); +stack.addRelativeTo(anotherMiddleware, { + relation: "before", //or 'after' + toMiddleware: "myMiddleware", +}); +``` + +## Removing Middleware + +You can remove middleware by name one at a time: + +```javascript +stack.remove("Middleware1"); +``` + +If you specify tags for middleware, you can remove multiple middleware at a time according to tag: + +```javascript +stack.add(middleware, { + step: "finalizeRequest", + tags: ["final"], +}); +stack.removeByTag("final"); +``` diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-stack/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/middleware-stack/dist-cjs/index.js new file mode 100644 index 000000000..b83cef58e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-stack/dist-cjs/index.js @@ -0,0 +1,285 @@ +'use strict'; + +const getAllAliases = (name, aliases) => { + const _aliases = []; + if (name) { + _aliases.push(name); + } + if (aliases) { + for (const alias of aliases) { + _aliases.push(alias); + } + } + return _aliases; +}; +const getMiddlewareNameWithAliases = (name, aliases) => { + return `${name || "anonymous"}${aliases && aliases.length > 0 ? ` (a.k.a. ${aliases.join(",")})` : ""}`; +}; +const constructStack = () => { + let absoluteEntries = []; + let relativeEntries = []; + let identifyOnResolve = false; + const entriesNameSet = new Set(); + const sort = (entries) => entries.sort((a, b) => stepWeights[b.step] - stepWeights[a.step] || + priorityWeights[b.priority || "normal"] - priorityWeights[a.priority || "normal"]); + const removeByName = (toRemove) => { + let isRemoved = false; + const filterCb = (entry) => { + const aliases = getAllAliases(entry.name, entry.aliases); + if (aliases.includes(toRemove)) { + isRemoved = true; + for (const alias of aliases) { + entriesNameSet.delete(alias); + } + return false; + } + return true; + }; + absoluteEntries = absoluteEntries.filter(filterCb); + relativeEntries = relativeEntries.filter(filterCb); + return isRemoved; + }; + const removeByReference = (toRemove) => { + let isRemoved = false; + const filterCb = (entry) => { + if (entry.middleware === toRemove) { + isRemoved = true; + for (const alias of getAllAliases(entry.name, entry.aliases)) { + entriesNameSet.delete(alias); + } + return false; + } + return true; + }; + absoluteEntries = absoluteEntries.filter(filterCb); + relativeEntries = relativeEntries.filter(filterCb); + return isRemoved; + }; + const cloneTo = (toStack) => { + absoluteEntries.forEach((entry) => { + toStack.add(entry.middleware, { ...entry }); + }); + relativeEntries.forEach((entry) => { + toStack.addRelativeTo(entry.middleware, { ...entry }); + }); + toStack.identifyOnResolve?.(stack.identifyOnResolve()); + return toStack; + }; + const expandRelativeMiddlewareList = (from) => { + const expandedMiddlewareList = []; + from.before.forEach((entry) => { + if (entry.before.length === 0 && entry.after.length === 0) { + expandedMiddlewareList.push(entry); + } + else { + expandedMiddlewareList.push(...expandRelativeMiddlewareList(entry)); + } + }); + expandedMiddlewareList.push(from); + from.after.reverse().forEach((entry) => { + if (entry.before.length === 0 && entry.after.length === 0) { + expandedMiddlewareList.push(entry); + } + else { + expandedMiddlewareList.push(...expandRelativeMiddlewareList(entry)); + } + }); + return expandedMiddlewareList; + }; + const getMiddlewareList = (debug = false) => { + const normalizedAbsoluteEntries = []; + const normalizedRelativeEntries = []; + const normalizedEntriesNameMap = {}; + absoluteEntries.forEach((entry) => { + const normalizedEntry = { + ...entry, + before: [], + after: [], + }; + for (const alias of getAllAliases(normalizedEntry.name, normalizedEntry.aliases)) { + normalizedEntriesNameMap[alias] = normalizedEntry; + } + normalizedAbsoluteEntries.push(normalizedEntry); + }); + relativeEntries.forEach((entry) => { + const normalizedEntry = { + ...entry, + before: [], + after: [], + }; + for (const alias of getAllAliases(normalizedEntry.name, normalizedEntry.aliases)) { + normalizedEntriesNameMap[alias] = normalizedEntry; + } + normalizedRelativeEntries.push(normalizedEntry); + }); + normalizedRelativeEntries.forEach((entry) => { + if (entry.toMiddleware) { + const toMiddleware = normalizedEntriesNameMap[entry.toMiddleware]; + if (toMiddleware === undefined) { + if (debug) { + return; + } + throw new Error(`${entry.toMiddleware} is not found when adding ` + + `${getMiddlewareNameWithAliases(entry.name, entry.aliases)} ` + + `middleware ${entry.relation} ${entry.toMiddleware}`); + } + if (entry.relation === "after") { + toMiddleware.after.push(entry); + } + if (entry.relation === "before") { + toMiddleware.before.push(entry); + } + } + }); + const mainChain = sort(normalizedAbsoluteEntries) + .map(expandRelativeMiddlewareList) + .reduce((wholeList, expandedMiddlewareList) => { + wholeList.push(...expandedMiddlewareList); + return wholeList; + }, []); + return mainChain; + }; + const stack = { + add: (middleware, options = {}) => { + const { name, override, aliases: _aliases } = options; + const entry = { + step: "initialize", + priority: "normal", + middleware, + ...options, + }; + const aliases = getAllAliases(name, _aliases); + if (aliases.length > 0) { + if (aliases.some((alias) => entriesNameSet.has(alias))) { + if (!override) + throw new Error(`Duplicate middleware name '${getMiddlewareNameWithAliases(name, _aliases)}'`); + for (const alias of aliases) { + const toOverrideIndex = absoluteEntries.findIndex((entry) => entry.name === alias || entry.aliases?.some((a) => a === alias)); + if (toOverrideIndex === -1) { + continue; + } + const toOverride = absoluteEntries[toOverrideIndex]; + if (toOverride.step !== entry.step || entry.priority !== toOverride.priority) { + throw new Error(`"${getMiddlewareNameWithAliases(toOverride.name, toOverride.aliases)}" middleware with ` + + `${toOverride.priority} priority in ${toOverride.step} step cannot ` + + `be overridden by "${getMiddlewareNameWithAliases(name, _aliases)}" middleware with ` + + `${entry.priority} priority in ${entry.step} step.`); + } + absoluteEntries.splice(toOverrideIndex, 1); + } + } + for (const alias of aliases) { + entriesNameSet.add(alias); + } + } + absoluteEntries.push(entry); + }, + addRelativeTo: (middleware, options) => { + const { name, override, aliases: _aliases } = options; + const entry = { + middleware, + ...options, + }; + const aliases = getAllAliases(name, _aliases); + if (aliases.length > 0) { + if (aliases.some((alias) => entriesNameSet.has(alias))) { + if (!override) + throw new Error(`Duplicate middleware name '${getMiddlewareNameWithAliases(name, _aliases)}'`); + for (const alias of aliases) { + const toOverrideIndex = relativeEntries.findIndex((entry) => entry.name === alias || entry.aliases?.some((a) => a === alias)); + if (toOverrideIndex === -1) { + continue; + } + const toOverride = relativeEntries[toOverrideIndex]; + if (toOverride.toMiddleware !== entry.toMiddleware || toOverride.relation !== entry.relation) { + throw new Error(`"${getMiddlewareNameWithAliases(toOverride.name, toOverride.aliases)}" middleware ` + + `${toOverride.relation} "${toOverride.toMiddleware}" middleware cannot be overridden ` + + `by "${getMiddlewareNameWithAliases(name, _aliases)}" middleware ${entry.relation} ` + + `"${entry.toMiddleware}" middleware.`); + } + relativeEntries.splice(toOverrideIndex, 1); + } + } + for (const alias of aliases) { + entriesNameSet.add(alias); + } + } + relativeEntries.push(entry); + }, + clone: () => cloneTo(constructStack()), + use: (plugin) => { + plugin.applyToStack(stack); + }, + remove: (toRemove) => { + if (typeof toRemove === "string") + return removeByName(toRemove); + else + return removeByReference(toRemove); + }, + removeByTag: (toRemove) => { + let isRemoved = false; + const filterCb = (entry) => { + const { tags, name, aliases: _aliases } = entry; + if (tags && tags.includes(toRemove)) { + const aliases = getAllAliases(name, _aliases); + for (const alias of aliases) { + entriesNameSet.delete(alias); + } + isRemoved = true; + return false; + } + return true; + }; + absoluteEntries = absoluteEntries.filter(filterCb); + relativeEntries = relativeEntries.filter(filterCb); + return isRemoved; + }, + concat: (from) => { + const cloned = cloneTo(constructStack()); + cloned.use(from); + cloned.identifyOnResolve(identifyOnResolve || cloned.identifyOnResolve() || (from.identifyOnResolve?.() ?? false)); + return cloned; + }, + applyToStack: cloneTo, + identify: () => { + return getMiddlewareList(true).map((mw) => { + const step = mw.step ?? + mw.relation + + " " + + mw.toMiddleware; + return getMiddlewareNameWithAliases(mw.name, mw.aliases) + " - " + step; + }); + }, + identifyOnResolve(toggle) { + if (typeof toggle === "boolean") + identifyOnResolve = toggle; + return identifyOnResolve; + }, + resolve: (handler, context) => { + for (const middleware of getMiddlewareList() + .map((entry) => entry.middleware) + .reverse()) { + handler = middleware(handler, context); + } + if (identifyOnResolve) { + console.log(stack.identify()); + } + return handler; + }, + }; + return stack; +}; +const stepWeights = { + initialize: 5, + serialize: 4, + build: 3, + finalizeRequest: 2, + deserialize: 1, +}; +const priorityWeights = { + high: 3, + normal: 2, + low: 1, +}; + +exports.constructStack = constructStack; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-stack/dist-es/MiddlewareStack.js b/food-ordering-app/server/node_modules/@smithy/middleware-stack/dist-es/MiddlewareStack.js new file mode 100644 index 000000000..2e02c73d5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-stack/dist-es/MiddlewareStack.js @@ -0,0 +1,281 @@ +const getAllAliases = (name, aliases) => { + const _aliases = []; + if (name) { + _aliases.push(name); + } + if (aliases) { + for (const alias of aliases) { + _aliases.push(alias); + } + } + return _aliases; +}; +const getMiddlewareNameWithAliases = (name, aliases) => { + return `${name || "anonymous"}${aliases && aliases.length > 0 ? ` (a.k.a. ${aliases.join(",")})` : ""}`; +}; +export const constructStack = () => { + let absoluteEntries = []; + let relativeEntries = []; + let identifyOnResolve = false; + const entriesNameSet = new Set(); + const sort = (entries) => entries.sort((a, b) => stepWeights[b.step] - stepWeights[a.step] || + priorityWeights[b.priority || "normal"] - priorityWeights[a.priority || "normal"]); + const removeByName = (toRemove) => { + let isRemoved = false; + const filterCb = (entry) => { + const aliases = getAllAliases(entry.name, entry.aliases); + if (aliases.includes(toRemove)) { + isRemoved = true; + for (const alias of aliases) { + entriesNameSet.delete(alias); + } + return false; + } + return true; + }; + absoluteEntries = absoluteEntries.filter(filterCb); + relativeEntries = relativeEntries.filter(filterCb); + return isRemoved; + }; + const removeByReference = (toRemove) => { + let isRemoved = false; + const filterCb = (entry) => { + if (entry.middleware === toRemove) { + isRemoved = true; + for (const alias of getAllAliases(entry.name, entry.aliases)) { + entriesNameSet.delete(alias); + } + return false; + } + return true; + }; + absoluteEntries = absoluteEntries.filter(filterCb); + relativeEntries = relativeEntries.filter(filterCb); + return isRemoved; + }; + const cloneTo = (toStack) => { + absoluteEntries.forEach((entry) => { + toStack.add(entry.middleware, { ...entry }); + }); + relativeEntries.forEach((entry) => { + toStack.addRelativeTo(entry.middleware, { ...entry }); + }); + toStack.identifyOnResolve?.(stack.identifyOnResolve()); + return toStack; + }; + const expandRelativeMiddlewareList = (from) => { + const expandedMiddlewareList = []; + from.before.forEach((entry) => { + if (entry.before.length === 0 && entry.after.length === 0) { + expandedMiddlewareList.push(entry); + } + else { + expandedMiddlewareList.push(...expandRelativeMiddlewareList(entry)); + } + }); + expandedMiddlewareList.push(from); + from.after.reverse().forEach((entry) => { + if (entry.before.length === 0 && entry.after.length === 0) { + expandedMiddlewareList.push(entry); + } + else { + expandedMiddlewareList.push(...expandRelativeMiddlewareList(entry)); + } + }); + return expandedMiddlewareList; + }; + const getMiddlewareList = (debug = false) => { + const normalizedAbsoluteEntries = []; + const normalizedRelativeEntries = []; + const normalizedEntriesNameMap = {}; + absoluteEntries.forEach((entry) => { + const normalizedEntry = { + ...entry, + before: [], + after: [], + }; + for (const alias of getAllAliases(normalizedEntry.name, normalizedEntry.aliases)) { + normalizedEntriesNameMap[alias] = normalizedEntry; + } + normalizedAbsoluteEntries.push(normalizedEntry); + }); + relativeEntries.forEach((entry) => { + const normalizedEntry = { + ...entry, + before: [], + after: [], + }; + for (const alias of getAllAliases(normalizedEntry.name, normalizedEntry.aliases)) { + normalizedEntriesNameMap[alias] = normalizedEntry; + } + normalizedRelativeEntries.push(normalizedEntry); + }); + normalizedRelativeEntries.forEach((entry) => { + if (entry.toMiddleware) { + const toMiddleware = normalizedEntriesNameMap[entry.toMiddleware]; + if (toMiddleware === undefined) { + if (debug) { + return; + } + throw new Error(`${entry.toMiddleware} is not found when adding ` + + `${getMiddlewareNameWithAliases(entry.name, entry.aliases)} ` + + `middleware ${entry.relation} ${entry.toMiddleware}`); + } + if (entry.relation === "after") { + toMiddleware.after.push(entry); + } + if (entry.relation === "before") { + toMiddleware.before.push(entry); + } + } + }); + const mainChain = sort(normalizedAbsoluteEntries) + .map(expandRelativeMiddlewareList) + .reduce((wholeList, expandedMiddlewareList) => { + wholeList.push(...expandedMiddlewareList); + return wholeList; + }, []); + return mainChain; + }; + const stack = { + add: (middleware, options = {}) => { + const { name, override, aliases: _aliases } = options; + const entry = { + step: "initialize", + priority: "normal", + middleware, + ...options, + }; + const aliases = getAllAliases(name, _aliases); + if (aliases.length > 0) { + if (aliases.some((alias) => entriesNameSet.has(alias))) { + if (!override) + throw new Error(`Duplicate middleware name '${getMiddlewareNameWithAliases(name, _aliases)}'`); + for (const alias of aliases) { + const toOverrideIndex = absoluteEntries.findIndex((entry) => entry.name === alias || entry.aliases?.some((a) => a === alias)); + if (toOverrideIndex === -1) { + continue; + } + const toOverride = absoluteEntries[toOverrideIndex]; + if (toOverride.step !== entry.step || entry.priority !== toOverride.priority) { + throw new Error(`"${getMiddlewareNameWithAliases(toOverride.name, toOverride.aliases)}" middleware with ` + + `${toOverride.priority} priority in ${toOverride.step} step cannot ` + + `be overridden by "${getMiddlewareNameWithAliases(name, _aliases)}" middleware with ` + + `${entry.priority} priority in ${entry.step} step.`); + } + absoluteEntries.splice(toOverrideIndex, 1); + } + } + for (const alias of aliases) { + entriesNameSet.add(alias); + } + } + absoluteEntries.push(entry); + }, + addRelativeTo: (middleware, options) => { + const { name, override, aliases: _aliases } = options; + const entry = { + middleware, + ...options, + }; + const aliases = getAllAliases(name, _aliases); + if (aliases.length > 0) { + if (aliases.some((alias) => entriesNameSet.has(alias))) { + if (!override) + throw new Error(`Duplicate middleware name '${getMiddlewareNameWithAliases(name, _aliases)}'`); + for (const alias of aliases) { + const toOverrideIndex = relativeEntries.findIndex((entry) => entry.name === alias || entry.aliases?.some((a) => a === alias)); + if (toOverrideIndex === -1) { + continue; + } + const toOverride = relativeEntries[toOverrideIndex]; + if (toOverride.toMiddleware !== entry.toMiddleware || toOverride.relation !== entry.relation) { + throw new Error(`"${getMiddlewareNameWithAliases(toOverride.name, toOverride.aliases)}" middleware ` + + `${toOverride.relation} "${toOverride.toMiddleware}" middleware cannot be overridden ` + + `by "${getMiddlewareNameWithAliases(name, _aliases)}" middleware ${entry.relation} ` + + `"${entry.toMiddleware}" middleware.`); + } + relativeEntries.splice(toOverrideIndex, 1); + } + } + for (const alias of aliases) { + entriesNameSet.add(alias); + } + } + relativeEntries.push(entry); + }, + clone: () => cloneTo(constructStack()), + use: (plugin) => { + plugin.applyToStack(stack); + }, + remove: (toRemove) => { + if (typeof toRemove === "string") + return removeByName(toRemove); + else + return removeByReference(toRemove); + }, + removeByTag: (toRemove) => { + let isRemoved = false; + const filterCb = (entry) => { + const { tags, name, aliases: _aliases } = entry; + if (tags && tags.includes(toRemove)) { + const aliases = getAllAliases(name, _aliases); + for (const alias of aliases) { + entriesNameSet.delete(alias); + } + isRemoved = true; + return false; + } + return true; + }; + absoluteEntries = absoluteEntries.filter(filterCb); + relativeEntries = relativeEntries.filter(filterCb); + return isRemoved; + }, + concat: (from) => { + const cloned = cloneTo(constructStack()); + cloned.use(from); + cloned.identifyOnResolve(identifyOnResolve || cloned.identifyOnResolve() || (from.identifyOnResolve?.() ?? false)); + return cloned; + }, + applyToStack: cloneTo, + identify: () => { + return getMiddlewareList(true).map((mw) => { + const step = mw.step ?? + mw.relation + + " " + + mw.toMiddleware; + return getMiddlewareNameWithAliases(mw.name, mw.aliases) + " - " + step; + }); + }, + identifyOnResolve(toggle) { + if (typeof toggle === "boolean") + identifyOnResolve = toggle; + return identifyOnResolve; + }, + resolve: (handler, context) => { + for (const middleware of getMiddlewareList() + .map((entry) => entry.middleware) + .reverse()) { + handler = middleware(handler, context); + } + if (identifyOnResolve) { + console.log(stack.identify()); + } + return handler; + }, + }; + return stack; +}; +const stepWeights = { + initialize: 5, + serialize: 4, + build: 3, + finalizeRequest: 2, + deserialize: 1, +}; +const priorityWeights = { + high: 3, + normal: 2, + low: 1, +}; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-stack/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/middleware-stack/dist-es/index.js new file mode 100644 index 000000000..16f56ce96 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-stack/dist-es/index.js @@ -0,0 +1 @@ +export * from "./MiddlewareStack"; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-stack/dist-es/types.js b/food-ordering-app/server/node_modules/@smithy/middleware-stack/dist-es/types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-stack/dist-es/types.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-stack/dist-types/MiddlewareStack.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-stack/dist-types/MiddlewareStack.d.ts new file mode 100644 index 000000000..3ea837b10 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-stack/dist-types/MiddlewareStack.d.ts @@ -0,0 +1,5 @@ +import type { MiddlewareStack } from "@smithy/types"; +/** + * @internal + */ +export declare const constructStack: () => MiddlewareStack; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-stack/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-stack/dist-types/index.d.ts new file mode 100644 index 000000000..16f56ce96 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-stack/dist-types/index.d.ts @@ -0,0 +1 @@ +export * from "./MiddlewareStack"; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-stack/dist-types/ts3.4/MiddlewareStack.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-stack/dist-types/ts3.4/MiddlewareStack.d.ts new file mode 100644 index 000000000..2aa088bb9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-stack/dist-types/ts3.4/MiddlewareStack.d.ts @@ -0,0 +1,5 @@ +import { MiddlewareStack } from "@smithy/types"; +/** + * @internal + */ +export declare const constructStack: () => MiddlewareStack; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-stack/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-stack/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..16f56ce96 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-stack/dist-types/ts3.4/index.d.ts @@ -0,0 +1 @@ +export * from "./MiddlewareStack"; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-stack/dist-types/ts3.4/types.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-stack/dist-types/ts3.4/types.d.ts new file mode 100644 index 000000000..4aa5fc643 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-stack/dist-types/ts3.4/types.d.ts @@ -0,0 +1,22 @@ +import { AbsoluteLocation, HandlerOptions, MiddlewareType, Priority, RelativeLocation, Step } from "@smithy/types"; +export interface MiddlewareEntry extends HandlerOptions { + middleware: MiddlewareType; +} +export interface AbsoluteMiddlewareEntry extends MiddlewareEntry, AbsoluteLocation { + step: Step; + priority: Priority; +} +export interface RelativeMiddlewareEntry extends MiddlewareEntry, RelativeLocation { +} +export type Normalized, Input extends object = {}, Output extends object = {}> = T & { + after: Normalized, Input, Output>[]; + before: Normalized, Input, Output>[]; +}; +export interface NormalizedRelativeEntry extends HandlerOptions { + step: Step; + middleware: MiddlewareType; + next?: NormalizedRelativeEntry; + prev?: NormalizedRelativeEntry; + priority: null; +} +export type NamedMiddlewareEntriesMap = Record>; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-stack/dist-types/types.d.ts b/food-ordering-app/server/node_modules/@smithy/middleware-stack/dist-types/types.d.ts new file mode 100644 index 000000000..4c5e581de --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-stack/dist-types/types.d.ts @@ -0,0 +1,22 @@ +import type { AbsoluteLocation, HandlerOptions, MiddlewareType, Priority, RelativeLocation, Step } from "@smithy/types"; +export interface MiddlewareEntry extends HandlerOptions { + middleware: MiddlewareType; +} +export interface AbsoluteMiddlewareEntry extends MiddlewareEntry, AbsoluteLocation { + step: Step; + priority: Priority; +} +export interface RelativeMiddlewareEntry extends MiddlewareEntry, RelativeLocation { +} +export type Normalized, Input extends object = {}, Output extends object = {}> = T & { + after: Normalized, Input, Output>[]; + before: Normalized, Input, Output>[]; +}; +export interface NormalizedRelativeEntry extends HandlerOptions { + step: Step; + middleware: MiddlewareType; + next?: NormalizedRelativeEntry; + prev?: NormalizedRelativeEntry; + priority: null; +} +export type NamedMiddlewareEntriesMap = Record>; diff --git a/food-ordering-app/server/node_modules/@smithy/middleware-stack/package.json b/food-ordering-app/server/node_modules/@smithy/middleware-stack/package.json new file mode 100644 index 000000000..5391ef8d5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/middleware-stack/package.json @@ -0,0 +1,64 @@ +{ + "name": "@smithy/middleware-stack", + "version": "4.2.12", + "description": "Provides a means for composing multiple middleware functions into a single handler", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline middleware-stack", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "extract:docs": "api-extractor run --local", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "email": "", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/middleware-stack", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/middleware-stack" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/node-config-provider/LICENSE b/food-ordering-app/server/node_modules/@smithy/node-config-provider/LICENSE new file mode 100644 index 000000000..74d4e5c31 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-config-provider/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/node-config-provider/README.md b/food-ordering-app/server/node_modules/@smithy/node-config-provider/README.md new file mode 100644 index 000000000..ea695a69b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-config-provider/README.md @@ -0,0 +1,10 @@ +# @smithy/node-config-provider + +[![NPM version](https://img.shields.io/npm/v/@smithy/node-config-provider/latest.svg)](https://www.npmjs.com/package/@smithy/node-config-provider) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/node-config-provider.svg)](https://www.npmjs.com/package/@smithy/node-config-provider) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-cjs/index.js new file mode 100644 index 000000000..b68e54348 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-cjs/index.js @@ -0,0 +1,62 @@ +'use strict'; + +var propertyProvider = require('@smithy/property-provider'); +var sharedIniFileLoader = require('@smithy/shared-ini-file-loader'); + +function getSelectorName(functionString) { + try { + const constants = new Set(Array.from(functionString.match(/([A-Z_]){3,}/g) ?? [])); + constants.delete("CONFIG"); + constants.delete("CONFIG_PREFIX_SEPARATOR"); + constants.delete("ENV"); + return [...constants].join(", "); + } + catch (e) { + return functionString; + } +} + +const fromEnv = (envVarSelector, options) => async () => { + try { + const config = envVarSelector(process.env, options); + if (config === undefined) { + throw new Error(); + } + return config; + } + catch (e) { + throw new propertyProvider.CredentialsProviderError(e.message || `Not found in ENV: ${getSelectorName(envVarSelector.toString())}`, { logger: options?.logger }); + } +}; + +const fromSharedConfigFiles = (configSelector, { preferredFile = "config", ...init } = {}) => async () => { + const profile = sharedIniFileLoader.getProfileName(init); + const { configFile, credentialsFile } = await sharedIniFileLoader.loadSharedConfigFiles(init); + const profileFromCredentials = credentialsFile[profile] || {}; + const profileFromConfig = configFile[profile] || {}; + const mergedProfile = preferredFile === "config" + ? { ...profileFromCredentials, ...profileFromConfig } + : { ...profileFromConfig, ...profileFromCredentials }; + try { + const cfgFile = preferredFile === "config" ? configFile : credentialsFile; + const configValue = configSelector(mergedProfile, cfgFile); + if (configValue === undefined) { + throw new Error(); + } + return configValue; + } + catch (e) { + throw new propertyProvider.CredentialsProviderError(e.message || `Not found in config files w/ profile [${profile}]: ${getSelectorName(configSelector.toString())}`, { logger: init.logger }); + } +}; + +const isFunction = (func) => typeof func === "function"; +const fromStatic = (defaultValue) => isFunction(defaultValue) ? async () => await defaultValue() : propertyProvider.fromStatic(defaultValue); + +const loadConfig = ({ environmentVariableSelector, configFileSelector, default: defaultValue }, configuration = {}) => { + const { signingName, logger } = configuration; + const envOptions = { signingName, logger }; + return propertyProvider.memoize(propertyProvider.chain(fromEnv(environmentVariableSelector, envOptions), fromSharedConfigFiles(configFileSelector, configuration), fromStatic(defaultValue))); +}; + +exports.loadConfig = loadConfig; diff --git a/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-es/configLoader.js b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-es/configLoader.js new file mode 100644 index 000000000..4588a08a0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-es/configLoader.js @@ -0,0 +1,9 @@ +import { chain, memoize } from "@smithy/property-provider"; +import { fromEnv } from "./fromEnv"; +import { fromSharedConfigFiles } from "./fromSharedConfigFiles"; +import { fromStatic } from "./fromStatic"; +export const loadConfig = ({ environmentVariableSelector, configFileSelector, default: defaultValue }, configuration = {}) => { + const { signingName, logger } = configuration; + const envOptions = { signingName, logger }; + return memoize(chain(fromEnv(environmentVariableSelector, envOptions), fromSharedConfigFiles(configFileSelector, configuration), fromStatic(defaultValue))); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-es/fromEnv.js b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-es/fromEnv.js new file mode 100644 index 000000000..f107bc366 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-es/fromEnv.js @@ -0,0 +1,14 @@ +import { CredentialsProviderError } from "@smithy/property-provider"; +import { getSelectorName } from "./getSelectorName"; +export const fromEnv = (envVarSelector, options) => async () => { + try { + const config = envVarSelector(process.env, options); + if (config === undefined) { + throw new Error(); + } + return config; + } + catch (e) { + throw new CredentialsProviderError(e.message || `Not found in ENV: ${getSelectorName(envVarSelector.toString())}`, { logger: options?.logger }); + } +}; diff --git a/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-es/fromSharedConfigFiles.js b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-es/fromSharedConfigFiles.js new file mode 100644 index 000000000..b6435eda8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-es/fromSharedConfigFiles.js @@ -0,0 +1,23 @@ +import { CredentialsProviderError } from "@smithy/property-provider"; +import { getProfileName, loadSharedConfigFiles } from "@smithy/shared-ini-file-loader"; +import { getSelectorName } from "./getSelectorName"; +export const fromSharedConfigFiles = (configSelector, { preferredFile = "config", ...init } = {}) => async () => { + const profile = getProfileName(init); + const { configFile, credentialsFile } = await loadSharedConfigFiles(init); + const profileFromCredentials = credentialsFile[profile] || {}; + const profileFromConfig = configFile[profile] || {}; + const mergedProfile = preferredFile === "config" + ? { ...profileFromCredentials, ...profileFromConfig } + : { ...profileFromConfig, ...profileFromCredentials }; + try { + const cfgFile = preferredFile === "config" ? configFile : credentialsFile; + const configValue = configSelector(mergedProfile, cfgFile); + if (configValue === undefined) { + throw new Error(); + } + return configValue; + } + catch (e) { + throw new CredentialsProviderError(e.message || `Not found in config files w/ profile [${profile}]: ${getSelectorName(configSelector.toString())}`, { logger: init.logger }); + } +}; diff --git a/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-es/fromStatic.js b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-es/fromStatic.js new file mode 100644 index 000000000..c9f91ffbb --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-es/fromStatic.js @@ -0,0 +1,3 @@ +import { fromStatic as convertToProvider } from "@smithy/property-provider"; +const isFunction = (func) => typeof func === "function"; +export const fromStatic = (defaultValue) => isFunction(defaultValue) ? async () => await defaultValue() : convertToProvider(defaultValue); diff --git a/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-es/getSelectorName.js b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-es/getSelectorName.js new file mode 100644 index 000000000..d5e0f7825 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-es/getSelectorName.js @@ -0,0 +1,12 @@ +export function getSelectorName(functionString) { + try { + const constants = new Set(Array.from(functionString.match(/([A-Z_]){3,}/g) ?? [])); + constants.delete("CONFIG"); + constants.delete("CONFIG_PREFIX_SEPARATOR"); + constants.delete("ENV"); + return [...constants].join(", "); + } + catch (e) { + return functionString; + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-es/index.js new file mode 100644 index 000000000..2d035d911 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-es/index.js @@ -0,0 +1 @@ +export * from "./configLoader"; diff --git a/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/configLoader.d.ts b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/configLoader.d.ts new file mode 100644 index 000000000..bc4678932 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/configLoader.d.ts @@ -0,0 +1,31 @@ +import type { Provider } from "@smithy/types"; +import type { EnvOptions, GetterFromEnv } from "./fromEnv"; +import type { GetterFromConfig, SharedConfigInit } from "./fromSharedConfigFiles"; +import type { FromStaticConfig } from "./fromStatic"; +/** + * @internal + */ +export type LocalConfigOptions = SharedConfigInit & EnvOptions; +/** + * @internal + */ +export interface LoadedConfigSelectors { + /** + * A getter function getting the config values from all the environment + * variables. + */ + environmentVariableSelector: GetterFromEnv; + /** + * A getter function getting config values associated with the inferred + * profile from shared INI files + */ + configFileSelector: GetterFromConfig; + /** + * Default value or getter + */ + default: FromStaticConfig; +} +/** + * @internal + */ +export declare const loadConfig: ({ environmentVariableSelector, configFileSelector, default: defaultValue }: LoadedConfigSelectors, configuration?: LocalConfigOptions) => Provider; diff --git a/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/fromEnv.d.ts b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/fromEnv.d.ts new file mode 100644 index 000000000..92f06f20a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/fromEnv.d.ts @@ -0,0 +1,20 @@ +import type { Logger, Provider } from "@smithy/types"; +/** + * @internal + */ +export interface EnvOptions { + /** + * The SigV4 service signing name. + */ + signingName?: string; + /** + * For credential resolution trace logging. + */ + logger?: Logger; +} +export type GetterFromEnv = (env: Record, options?: EnvOptions) => T | undefined; +/** + * Get config value given the environment variable name or getter from + * environment variable. + */ +export declare const fromEnv: (envVarSelector: GetterFromEnv, options?: EnvOptions) => Provider; diff --git a/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/fromSharedConfigFiles.d.ts b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/fromSharedConfigFiles.d.ts new file mode 100644 index 000000000..55bc21078 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/fromSharedConfigFiles.d.ts @@ -0,0 +1,22 @@ +import type { SourceProfileInit } from "@smithy/shared-ini-file-loader"; +import type { ParsedIniData, Profile, Provider } from "@smithy/types"; +/** + * @internal + */ +export interface SharedConfigInit extends SourceProfileInit { + /** + * The preferred shared ini file to load the config. "config" option refers to + * the shared config file(defaults to `~/.aws/config`). "credentials" option + * refers to the shared credentials file(defaults to `~/.aws/credentials`) + */ + preferredFile?: "config" | "credentials"; +} +/** + * @internal + */ +export type GetterFromConfig = (profile: Profile, configFile?: ParsedIniData) => T | undefined; +/** + * Get config value from the shared config files with inferred profile name. + * @internal + */ +export declare const fromSharedConfigFiles: (configSelector: GetterFromConfig, { preferredFile, ...init }?: SharedConfigInit) => Provider; diff --git a/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/fromStatic.d.ts b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/fromStatic.d.ts new file mode 100644 index 000000000..caa50fcf3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/fromStatic.d.ts @@ -0,0 +1,9 @@ +import type { Provider } from "@smithy/types"; +/** + * @internal + */ +export type FromStaticConfig = T | (() => T) | Provider; +/** + * @internal + */ +export declare const fromStatic: (defaultValue: FromStaticConfig) => Provider; diff --git a/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/getSelectorName.d.ts b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/getSelectorName.d.ts new file mode 100644 index 000000000..b5f1a1b5d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/getSelectorName.d.ts @@ -0,0 +1,9 @@ +/** + * Attempts to extract the name of the variable that the functional selector is looking for. + * Improves readability over the raw Function.toString() value. + * @internal + * @param functionString - function's string representation. + * + * @returns constant value used within the function. + */ +export declare function getSelectorName(functionString: string): string; diff --git a/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/index.d.ts new file mode 100644 index 000000000..cd54cfa0e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/index.d.ts @@ -0,0 +1,4 @@ +export * from "./configLoader"; +export { EnvOptions, GetterFromEnv } from "./fromEnv"; +export { GetterFromConfig, SharedConfigInit } from "./fromSharedConfigFiles"; +export { FromStaticConfig } from "./fromStatic"; diff --git a/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/ts3.4/configLoader.d.ts b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/ts3.4/configLoader.d.ts new file mode 100644 index 000000000..8ddec50cb --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/ts3.4/configLoader.d.ts @@ -0,0 +1,31 @@ +import { Provider } from "@smithy/types"; +import { EnvOptions, GetterFromEnv } from "./fromEnv"; +import { GetterFromConfig, SharedConfigInit } from "./fromSharedConfigFiles"; +import { FromStaticConfig } from "./fromStatic"; +/** + * @internal + */ +export type LocalConfigOptions = SharedConfigInit & EnvOptions; +/** + * @internal + */ +export interface LoadedConfigSelectors { + /** + * A getter function getting the config values from all the environment + * variables. + */ + environmentVariableSelector: GetterFromEnv; + /** + * A getter function getting config values associated with the inferred + * profile from shared INI files + */ + configFileSelector: GetterFromConfig; + /** + * Default value or getter + */ + default: FromStaticConfig; +} +/** + * @internal + */ +export declare const loadConfig: ({ environmentVariableSelector, configFileSelector, default: defaultValue }: LoadedConfigSelectors, configuration?: LocalConfigOptions) => Provider; diff --git a/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/ts3.4/fromEnv.d.ts b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/ts3.4/fromEnv.d.ts new file mode 100644 index 000000000..f0b003cdf --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/ts3.4/fromEnv.d.ts @@ -0,0 +1,20 @@ +import { Logger, Provider } from "@smithy/types"; +/** + * @internal + */ +export interface EnvOptions { + /** + * The SigV4 service signing name. + */ + signingName?: string; + /** + * For credential resolution trace logging. + */ + logger?: Logger; +} +export type GetterFromEnv = (env: Record, options?: EnvOptions) => T | undefined; +/** + * Get config value given the environment variable name or getter from + * environment variable. + */ +export declare const fromEnv: (envVarSelector: GetterFromEnv, options?: EnvOptions) => Provider; diff --git a/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/ts3.4/fromSharedConfigFiles.d.ts b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/ts3.4/fromSharedConfigFiles.d.ts new file mode 100644 index 000000000..89a8eac2c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/ts3.4/fromSharedConfigFiles.d.ts @@ -0,0 +1,22 @@ +import { SourceProfileInit } from "@smithy/shared-ini-file-loader"; +import { ParsedIniData, Profile, Provider } from "@smithy/types"; +/** + * @internal + */ +export interface SharedConfigInit extends SourceProfileInit { + /** + * The preferred shared ini file to load the config. "config" option refers to + * the shared config file(defaults to `~/.aws/config`). "credentials" option + * refers to the shared credentials file(defaults to `~/.aws/credentials`) + */ + preferredFile?: "config" | "credentials"; +} +/** + * @internal + */ +export type GetterFromConfig = (profile: Profile, configFile?: ParsedIniData) => T | undefined; +/** + * Get config value from the shared config files with inferred profile name. + * @internal + */ +export declare const fromSharedConfigFiles: (configSelector: GetterFromConfig, { preferredFile, ...init }?: SharedConfigInit) => Provider; diff --git a/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/ts3.4/fromStatic.d.ts b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/ts3.4/fromStatic.d.ts new file mode 100644 index 000000000..d2c32a449 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/ts3.4/fromStatic.d.ts @@ -0,0 +1,9 @@ +import { Provider } from "@smithy/types"; +/** + * @internal + */ +export type FromStaticConfig = T | (() => T) | Provider; +/** + * @internal + */ +export declare const fromStatic: (defaultValue: FromStaticConfig) => Provider; diff --git a/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/ts3.4/getSelectorName.d.ts b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/ts3.4/getSelectorName.d.ts new file mode 100644 index 000000000..b5f1a1b5d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/ts3.4/getSelectorName.d.ts @@ -0,0 +1,9 @@ +/** + * Attempts to extract the name of the variable that the functional selector is looking for. + * Improves readability over the raw Function.toString() value. + * @internal + * @param functionString - function's string representation. + * + * @returns constant value used within the function. + */ +export declare function getSelectorName(functionString: string): string; diff --git a/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..cd54cfa0e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-config-provider/dist-types/ts3.4/index.d.ts @@ -0,0 +1,4 @@ +export * from "./configLoader"; +export { EnvOptions, GetterFromEnv } from "./fromEnv"; +export { GetterFromConfig, SharedConfigInit } from "./fromSharedConfigFiles"; +export { FromStaticConfig } from "./fromStatic"; diff --git a/food-ordering-app/server/node_modules/@smithy/node-config-provider/package.json b/food-ordering-app/server/node_modules/@smithy/node-config-provider/package.json new file mode 100644 index 000000000..2e9b375e7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-config-provider/package.json @@ -0,0 +1,66 @@ +{ + "name": "@smithy/node-config-provider", + "version": "4.3.12", + "description": "Load config default values from ini config files and environmental variable", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline node-config-provider", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "email": "", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "dependencies": { + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/node-config-provider", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/node-config-provider" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/LICENSE b/food-ordering-app/server/node_modules/@smithy/node-http-handler/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/README.md b/food-ordering-app/server/node_modules/@smithy/node-http-handler/README.md new file mode 100644 index 000000000..214719f3f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/README.md @@ -0,0 +1,9 @@ +# @smithy/node-http-handler + +[![NPM version](https://img.shields.io/npm/v/@smithy/node-http-handler/latest.svg)](https://www.npmjs.com/package/@smithy/node-http-handler) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/node-http-handler.svg)](https://www.npmjs.com/package/@smithy/node-http-handler) + +This package implements the default `requestHandler` for Node.js using `node:http`, `node:https`, and `node:http2`. + +For an example on how `requestHandler`s are used by Smithy generated SDK clients, refer to +the [AWS SDK for JavaScript (v3) supplemental docs](https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/CLIENTS.md#request-handler-requesthandler). diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-cjs/index.js new file mode 100644 index 000000000..edb7fc5d6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-cjs/index.js @@ -0,0 +1,755 @@ +'use strict'; + +var protocolHttp = require('@smithy/protocol-http'); +var querystringBuilder = require('@smithy/querystring-builder'); +var http = require('http'); +var https = require('https'); +var stream = require('stream'); +var http2 = require('http2'); + +function buildAbortError(abortSignal) { + const reason = abortSignal && typeof abortSignal === "object" && "reason" in abortSignal + ? abortSignal.reason + : undefined; + if (reason) { + if (reason instanceof Error) { + const abortError = new Error("Request aborted"); + abortError.name = "AbortError"; + abortError.cause = reason; + return abortError; + } + const abortError = new Error(String(reason)); + abortError.name = "AbortError"; + return abortError; + } + const abortError = new Error("Request aborted"); + abortError.name = "AbortError"; + return abortError; +} + +const NODEJS_TIMEOUT_ERROR_CODES = ["ECONNRESET", "EPIPE", "ETIMEDOUT"]; + +const getTransformedHeaders = (headers) => { + const transformedHeaders = {}; + for (const name of Object.keys(headers)) { + const headerValues = headers[name]; + transformedHeaders[name] = Array.isArray(headerValues) ? headerValues.join(",") : headerValues; + } + return transformedHeaders; +}; + +const timing = { + setTimeout: (cb, ms) => setTimeout(cb, ms), + clearTimeout: (timeoutId) => clearTimeout(timeoutId), +}; + +const DEFER_EVENT_LISTENER_TIME$2 = 1000; +const setConnectionTimeout = (request, reject, timeoutInMs = 0) => { + if (!timeoutInMs) { + return -1; + } + const registerTimeout = (offset) => { + const timeoutId = timing.setTimeout(() => { + request.destroy(); + reject(Object.assign(new Error(`@smithy/node-http-handler - the request socket did not establish a connection with the server within the configured timeout of ${timeoutInMs} ms.`), { + name: "TimeoutError", + })); + }, timeoutInMs - offset); + const doWithSocket = (socket) => { + if (socket?.connecting) { + socket.on("connect", () => { + timing.clearTimeout(timeoutId); + }); + } + else { + timing.clearTimeout(timeoutId); + } + }; + if (request.socket) { + doWithSocket(request.socket); + } + else { + request.on("socket", doWithSocket); + } + }; + if (timeoutInMs < 2000) { + registerTimeout(0); + return 0; + } + return timing.setTimeout(registerTimeout.bind(null, DEFER_EVENT_LISTENER_TIME$2), DEFER_EVENT_LISTENER_TIME$2); +}; + +const setRequestTimeout = (req, reject, timeoutInMs = 0, throwOnRequestTimeout, logger) => { + if (timeoutInMs) { + return timing.setTimeout(() => { + let msg = `@smithy/node-http-handler - [${throwOnRequestTimeout ? "ERROR" : "WARN"}] a request has exceeded the configured ${timeoutInMs} ms requestTimeout.`; + if (throwOnRequestTimeout) { + const error = Object.assign(new Error(msg), { + name: "TimeoutError", + code: "ETIMEDOUT", + }); + req.destroy(error); + reject(error); + } + else { + msg += ` Init client requestHandler with throwOnRequestTimeout=true to turn this into an error.`; + logger?.warn?.(msg); + } + }, timeoutInMs); + } + return -1; +}; + +const DEFER_EVENT_LISTENER_TIME$1 = 3000; +const setSocketKeepAlive = (request, { keepAlive, keepAliveMsecs }, deferTimeMs = DEFER_EVENT_LISTENER_TIME$1) => { + if (keepAlive !== true) { + return -1; + } + const registerListener = () => { + if (request.socket) { + request.socket.setKeepAlive(keepAlive, keepAliveMsecs || 0); + } + else { + request.on("socket", (socket) => { + socket.setKeepAlive(keepAlive, keepAliveMsecs || 0); + }); + } + }; + if (deferTimeMs === 0) { + registerListener(); + return 0; + } + return timing.setTimeout(registerListener, deferTimeMs); +}; + +const DEFER_EVENT_LISTENER_TIME = 3000; +const setSocketTimeout = (request, reject, timeoutInMs = 0) => { + const registerTimeout = (offset) => { + const timeout = timeoutInMs - offset; + const onTimeout = () => { + request.destroy(); + reject(Object.assign(new Error(`@smithy/node-http-handler - the request socket timed out after ${timeoutInMs} ms of inactivity (configured by client requestHandler).`), { name: "TimeoutError" })); + }; + if (request.socket) { + request.socket.setTimeout(timeout, onTimeout); + request.on("close", () => request.socket?.removeListener("timeout", onTimeout)); + } + else { + request.setTimeout(timeout, onTimeout); + } + }; + if (0 < timeoutInMs && timeoutInMs < 6000) { + registerTimeout(0); + return 0; + } + return timing.setTimeout(registerTimeout.bind(null, timeoutInMs === 0 ? 0 : DEFER_EVENT_LISTENER_TIME), DEFER_EVENT_LISTENER_TIME); +}; + +const MIN_WAIT_TIME = 6_000; +async function writeRequestBody(httpRequest, request, maxContinueTimeoutMs = MIN_WAIT_TIME, externalAgent = false) { + const headers = request.headers ?? {}; + const expect = headers.Expect || headers.expect; + let timeoutId = -1; + let sendBody = true; + if (!externalAgent && expect === "100-continue") { + sendBody = await Promise.race([ + new Promise((resolve) => { + timeoutId = Number(timing.setTimeout(() => resolve(true), Math.max(MIN_WAIT_TIME, maxContinueTimeoutMs))); + }), + new Promise((resolve) => { + httpRequest.on("continue", () => { + timing.clearTimeout(timeoutId); + resolve(true); + }); + httpRequest.on("response", () => { + timing.clearTimeout(timeoutId); + resolve(false); + }); + httpRequest.on("error", () => { + timing.clearTimeout(timeoutId); + resolve(false); + }); + }), + ]); + } + if (sendBody) { + writeBody(httpRequest, request.body); + } +} +function writeBody(httpRequest, body) { + if (body instanceof stream.Readable) { + body.pipe(httpRequest); + return; + } + if (body) { + const isBuffer = Buffer.isBuffer(body); + const isString = typeof body === "string"; + if (isBuffer || isString) { + if (isBuffer && body.byteLength === 0) { + httpRequest.end(); + } + else { + httpRequest.end(body); + } + return; + } + const uint8 = body; + if (typeof uint8 === "object" && + uint8.buffer && + typeof uint8.byteOffset === "number" && + typeof uint8.byteLength === "number") { + httpRequest.end(Buffer.from(uint8.buffer, uint8.byteOffset, uint8.byteLength)); + return; + } + httpRequest.end(Buffer.from(body)); + return; + } + httpRequest.end(); +} + +const DEFAULT_REQUEST_TIMEOUT = 0; +class NodeHttpHandler { + config; + configProvider; + socketWarningTimestamp = 0; + externalAgent = false; + metadata = { handlerProtocol: "http/1.1" }; + static create(instanceOrOptions) { + if (typeof instanceOrOptions?.handle === "function") { + return instanceOrOptions; + } + return new NodeHttpHandler(instanceOrOptions); + } + static checkSocketUsage(agent, socketWarningTimestamp, logger = console) { + const { sockets, requests, maxSockets } = agent; + if (typeof maxSockets !== "number" || maxSockets === Infinity) { + return socketWarningTimestamp; + } + const interval = 15_000; + if (Date.now() - interval < socketWarningTimestamp) { + return socketWarningTimestamp; + } + if (sockets && requests) { + for (const origin in sockets) { + const socketsInUse = sockets[origin]?.length ?? 0; + const requestsEnqueued = requests[origin]?.length ?? 0; + if (socketsInUse >= maxSockets && requestsEnqueued >= 2 * maxSockets) { + logger?.warn?.(`@smithy/node-http-handler:WARN - socket usage at capacity=${socketsInUse} and ${requestsEnqueued} additional requests are enqueued. +See https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/node-configuring-maxsockets.html +or increase socketAcquisitionWarningTimeout=(millis) in the NodeHttpHandler config.`); + return Date.now(); + } + } + } + return socketWarningTimestamp; + } + constructor(options) { + this.configProvider = new Promise((resolve, reject) => { + if (typeof options === "function") { + options() + .then((_options) => { + resolve(this.resolveDefaultConfig(_options)); + }) + .catch(reject); + } + else { + resolve(this.resolveDefaultConfig(options)); + } + }); + } + resolveDefaultConfig(options) { + const { requestTimeout, connectionTimeout, socketTimeout, socketAcquisitionWarningTimeout, httpAgent, httpsAgent, throwOnRequestTimeout, logger, } = options || {}; + const keepAlive = true; + const maxSockets = 50; + return { + connectionTimeout, + requestTimeout, + socketTimeout, + socketAcquisitionWarningTimeout, + throwOnRequestTimeout, + httpAgent: (() => { + if (httpAgent instanceof http.Agent || typeof httpAgent?.destroy === "function") { + this.externalAgent = true; + return httpAgent; + } + return new http.Agent({ keepAlive, maxSockets, ...httpAgent }); + })(), + httpsAgent: (() => { + if (httpsAgent instanceof https.Agent || typeof httpsAgent?.destroy === "function") { + this.externalAgent = true; + return httpsAgent; + } + return new https.Agent({ keepAlive, maxSockets, ...httpsAgent }); + })(), + logger, + }; + } + destroy() { + this.config?.httpAgent?.destroy(); + this.config?.httpsAgent?.destroy(); + } + async handle(request, { abortSignal, requestTimeout } = {}) { + if (!this.config) { + this.config = await this.configProvider; + } + return new Promise((_resolve, _reject) => { + const config = this.config; + let writeRequestBodyPromise = undefined; + const timeouts = []; + const resolve = async (arg) => { + await writeRequestBodyPromise; + timeouts.forEach(timing.clearTimeout); + _resolve(arg); + }; + const reject = async (arg) => { + await writeRequestBodyPromise; + timeouts.forEach(timing.clearTimeout); + _reject(arg); + }; + if (abortSignal?.aborted) { + const abortError = buildAbortError(abortSignal); + reject(abortError); + return; + } + const isSSL = request.protocol === "https:"; + const headers = request.headers ?? {}; + const expectContinue = (headers.Expect ?? headers.expect) === "100-continue"; + let agent = isSSL ? config.httpsAgent : config.httpAgent; + if (expectContinue && !this.externalAgent) { + agent = new (isSSL ? https.Agent : http.Agent)({ + keepAlive: false, + maxSockets: Infinity, + }); + } + timeouts.push(timing.setTimeout(() => { + this.socketWarningTimestamp = NodeHttpHandler.checkSocketUsage(agent, this.socketWarningTimestamp, config.logger); + }, config.socketAcquisitionWarningTimeout ?? (config.requestTimeout ?? 2000) + (config.connectionTimeout ?? 1000))); + const queryString = querystringBuilder.buildQueryString(request.query || {}); + let auth = undefined; + if (request.username != null || request.password != null) { + const username = request.username ?? ""; + const password = request.password ?? ""; + auth = `${username}:${password}`; + } + let path = request.path; + if (queryString) { + path += `?${queryString}`; + } + if (request.fragment) { + path += `#${request.fragment}`; + } + let hostname = request.hostname ?? ""; + if (hostname[0] === "[" && hostname.endsWith("]")) { + hostname = request.hostname.slice(1, -1); + } + else { + hostname = request.hostname; + } + const nodeHttpsOptions = { + headers: request.headers, + host: hostname, + method: request.method, + path, + port: request.port, + agent, + auth, + }; + const requestFunc = isSSL ? https.request : http.request; + const req = requestFunc(nodeHttpsOptions, (res) => { + const httpResponse = new protocolHttp.HttpResponse({ + statusCode: res.statusCode || -1, + reason: res.statusMessage, + headers: getTransformedHeaders(res.headers), + body: res, + }); + resolve({ response: httpResponse }); + }); + req.on("error", (err) => { + if (NODEJS_TIMEOUT_ERROR_CODES.includes(err.code)) { + reject(Object.assign(err, { name: "TimeoutError" })); + } + else { + reject(err); + } + }); + if (abortSignal) { + const onAbort = () => { + req.destroy(); + const abortError = buildAbortError(abortSignal); + reject(abortError); + }; + if (typeof abortSignal.addEventListener === "function") { + const signal = abortSignal; + signal.addEventListener("abort", onAbort, { once: true }); + req.once("close", () => signal.removeEventListener("abort", onAbort)); + } + else { + abortSignal.onabort = onAbort; + } + } + const effectiveRequestTimeout = requestTimeout ?? config.requestTimeout; + timeouts.push(setConnectionTimeout(req, reject, config.connectionTimeout)); + timeouts.push(setRequestTimeout(req, reject, effectiveRequestTimeout, config.throwOnRequestTimeout, config.logger ?? console)); + timeouts.push(setSocketTimeout(req, reject, config.socketTimeout)); + const httpAgent = nodeHttpsOptions.agent; + if (typeof httpAgent === "object" && "keepAlive" in httpAgent) { + timeouts.push(setSocketKeepAlive(req, { + keepAlive: httpAgent.keepAlive, + keepAliveMsecs: httpAgent.keepAliveMsecs, + })); + } + writeRequestBodyPromise = writeRequestBody(req, request, effectiveRequestTimeout, this.externalAgent).catch((e) => { + timeouts.forEach(timing.clearTimeout); + return _reject(e); + }); + }); + } + updateHttpClientConfig(key, value) { + this.config = undefined; + this.configProvider = this.configProvider.then((config) => { + return { + ...config, + [key]: value, + }; + }); + } + httpHandlerConfigs() { + return this.config ?? {}; + } +} + +class NodeHttp2ConnectionPool { + sessions = []; + constructor(sessions) { + this.sessions = sessions ?? []; + } + poll() { + if (this.sessions.length > 0) { + return this.sessions.shift(); + } + } + offerLast(session) { + this.sessions.push(session); + } + contains(session) { + return this.sessions.includes(session); + } + remove(session) { + this.sessions = this.sessions.filter((s) => s !== session); + } + [Symbol.iterator]() { + return this.sessions[Symbol.iterator](); + } + destroy(connection) { + for (const session of this.sessions) { + if (session === connection) { + if (!session.destroyed) { + session.destroy(); + } + } + } + } +} + +class NodeHttp2ConnectionManager { + constructor(config) { + this.config = config; + if (this.config.maxConcurrency && this.config.maxConcurrency <= 0) { + throw new RangeError("maxConcurrency must be greater than zero."); + } + } + config; + sessionCache = new Map(); + lease(requestContext, connectionConfiguration) { + const url = this.getUrlString(requestContext); + const existingPool = this.sessionCache.get(url); + if (existingPool) { + const existingSession = existingPool.poll(); + if (existingSession && !this.config.disableConcurrency) { + return existingSession; + } + } + const session = http2.connect(url); + if (this.config.maxConcurrency) { + session.settings({ maxConcurrentStreams: this.config.maxConcurrency }, (err) => { + if (err) { + throw new Error("Fail to set maxConcurrentStreams to " + + this.config.maxConcurrency + + "when creating new session for " + + requestContext.destination.toString()); + } + }); + } + session.unref(); + const destroySessionCb = () => { + session.destroy(); + this.deleteSession(url, session); + }; + session.on("goaway", destroySessionCb); + session.on("error", destroySessionCb); + session.on("frameError", destroySessionCb); + session.on("close", () => this.deleteSession(url, session)); + if (connectionConfiguration.requestTimeout) { + session.setTimeout(connectionConfiguration.requestTimeout, destroySessionCb); + } + const connectionPool = this.sessionCache.get(url) || new NodeHttp2ConnectionPool(); + connectionPool.offerLast(session); + this.sessionCache.set(url, connectionPool); + return session; + } + deleteSession(authority, session) { + const existingConnectionPool = this.sessionCache.get(authority); + if (!existingConnectionPool) { + return; + } + if (!existingConnectionPool.contains(session)) { + return; + } + existingConnectionPool.remove(session); + this.sessionCache.set(authority, existingConnectionPool); + } + release(requestContext, session) { + const cacheKey = this.getUrlString(requestContext); + this.sessionCache.get(cacheKey)?.offerLast(session); + } + destroy() { + for (const [key, connectionPool] of this.sessionCache) { + for (const session of connectionPool) { + if (!session.destroyed) { + session.destroy(); + } + connectionPool.remove(session); + } + this.sessionCache.delete(key); + } + } + setMaxConcurrentStreams(maxConcurrentStreams) { + if (maxConcurrentStreams && maxConcurrentStreams <= 0) { + throw new RangeError("maxConcurrentStreams must be greater than zero."); + } + this.config.maxConcurrency = maxConcurrentStreams; + } + setDisableConcurrentStreams(disableConcurrentStreams) { + this.config.disableConcurrency = disableConcurrentStreams; + } + getUrlString(request) { + return request.destination.toString(); + } +} + +class NodeHttp2Handler { + config; + configProvider; + metadata = { handlerProtocol: "h2" }; + connectionManager = new NodeHttp2ConnectionManager({}); + static create(instanceOrOptions) { + if (typeof instanceOrOptions?.handle === "function") { + return instanceOrOptions; + } + return new NodeHttp2Handler(instanceOrOptions); + } + constructor(options) { + this.configProvider = new Promise((resolve, reject) => { + if (typeof options === "function") { + options() + .then((opts) => { + resolve(opts || {}); + }) + .catch(reject); + } + else { + resolve(options || {}); + } + }); + } + destroy() { + this.connectionManager.destroy(); + } + async handle(request, { abortSignal, requestTimeout } = {}) { + if (!this.config) { + this.config = await this.configProvider; + this.connectionManager.setDisableConcurrentStreams(this.config.disableConcurrentStreams || false); + if (this.config.maxConcurrentStreams) { + this.connectionManager.setMaxConcurrentStreams(this.config.maxConcurrentStreams); + } + } + const { requestTimeout: configRequestTimeout, disableConcurrentStreams } = this.config; + const effectiveRequestTimeout = requestTimeout ?? configRequestTimeout; + return new Promise((_resolve, _reject) => { + let fulfilled = false; + let writeRequestBodyPromise = undefined; + const resolve = async (arg) => { + await writeRequestBodyPromise; + _resolve(arg); + }; + const reject = async (arg) => { + await writeRequestBodyPromise; + _reject(arg); + }; + if (abortSignal?.aborted) { + fulfilled = true; + const abortError = buildAbortError(abortSignal); + reject(abortError); + return; + } + const { hostname, method, port, protocol, query } = request; + let auth = ""; + if (request.username != null || request.password != null) { + const username = request.username ?? ""; + const password = request.password ?? ""; + auth = `${username}:${password}@`; + } + const authority = `${protocol}//${auth}${hostname}${port ? `:${port}` : ""}`; + const requestContext = { destination: new URL(authority) }; + const session = this.connectionManager.lease(requestContext, { + requestTimeout: this.config?.sessionTimeout, + disableConcurrentStreams: disableConcurrentStreams || false, + }); + const rejectWithDestroy = (err) => { + if (disableConcurrentStreams) { + this.destroySession(session); + } + fulfilled = true; + reject(err); + }; + const queryString = querystringBuilder.buildQueryString(query || {}); + let path = request.path; + if (queryString) { + path += `?${queryString}`; + } + if (request.fragment) { + path += `#${request.fragment}`; + } + const req = session.request({ + ...request.headers, + [http2.constants.HTTP2_HEADER_PATH]: path, + [http2.constants.HTTP2_HEADER_METHOD]: method, + }); + session.ref(); + req.on("response", (headers) => { + const httpResponse = new protocolHttp.HttpResponse({ + statusCode: headers[":status"] || -1, + headers: getTransformedHeaders(headers), + body: req, + }); + fulfilled = true; + resolve({ response: httpResponse }); + if (disableConcurrentStreams) { + session.close(); + this.connectionManager.deleteSession(authority, session); + } + }); + if (effectiveRequestTimeout) { + req.setTimeout(effectiveRequestTimeout, () => { + req.close(); + const timeoutError = new Error(`Stream timed out because of no activity for ${effectiveRequestTimeout} ms`); + timeoutError.name = "TimeoutError"; + rejectWithDestroy(timeoutError); + }); + } + if (abortSignal) { + const onAbort = () => { + req.close(); + const abortError = buildAbortError(abortSignal); + rejectWithDestroy(abortError); + }; + if (typeof abortSignal.addEventListener === "function") { + const signal = abortSignal; + signal.addEventListener("abort", onAbort, { once: true }); + req.once("close", () => signal.removeEventListener("abort", onAbort)); + } + else { + abortSignal.onabort = onAbort; + } + } + req.on("frameError", (type, code, id) => { + rejectWithDestroy(new Error(`Frame type id ${type} in stream id ${id} has failed with code ${code}.`)); + }); + req.on("error", rejectWithDestroy); + req.on("aborted", () => { + rejectWithDestroy(new Error(`HTTP/2 stream is abnormally aborted in mid-communication with result code ${req.rstCode}.`)); + }); + req.on("close", () => { + session.unref(); + if (disableConcurrentStreams) { + session.destroy(); + } + if (!fulfilled) { + rejectWithDestroy(new Error("Unexpected error: http2 request did not get a response")); + } + }); + writeRequestBodyPromise = writeRequestBody(req, request, effectiveRequestTimeout); + }); + } + updateHttpClientConfig(key, value) { + this.config = undefined; + this.configProvider = this.configProvider.then((config) => { + return { + ...config, + [key]: value, + }; + }); + } + httpHandlerConfigs() { + return this.config ?? {}; + } + destroySession(session) { + if (!session.destroyed) { + session.destroy(); + } + } +} + +class Collector extends stream.Writable { + bufferedBytes = []; + _write(chunk, encoding, callback) { + this.bufferedBytes.push(chunk); + callback(); + } +} + +const streamCollector = (stream) => { + if (isReadableStreamInstance(stream)) { + return collectReadableStream(stream); + } + return new Promise((resolve, reject) => { + const collector = new Collector(); + stream.pipe(collector); + stream.on("error", (err) => { + collector.end(); + reject(err); + }); + collector.on("error", reject); + collector.on("finish", function () { + const bytes = new Uint8Array(Buffer.concat(this.bufferedBytes)); + resolve(bytes); + }); + }); +}; +const isReadableStreamInstance = (stream) => typeof ReadableStream === "function" && stream instanceof ReadableStream; +async function collectReadableStream(stream) { + const chunks = []; + const reader = stream.getReader(); + let isDone = false; + let length = 0; + while (!isDone) { + const { done, value } = await reader.read(); + if (value) { + chunks.push(value); + length += value.length; + } + isDone = done; + } + const collected = new Uint8Array(length); + let offset = 0; + for (const chunk of chunks) { + collected.set(chunk, offset); + offset += chunk.length; + } + return collected; +} + +exports.DEFAULT_REQUEST_TIMEOUT = DEFAULT_REQUEST_TIMEOUT; +exports.NodeHttp2Handler = NodeHttp2Handler; +exports.NodeHttpHandler = NodeHttpHandler; +exports.streamCollector = streamCollector; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/build-abort-error.js b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/build-abort-error.js new file mode 100644 index 000000000..085d973e9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/build-abort-error.js @@ -0,0 +1,19 @@ +export function buildAbortError(abortSignal) { + const reason = abortSignal && typeof abortSignal === "object" && "reason" in abortSignal + ? abortSignal.reason + : undefined; + if (reason) { + if (reason instanceof Error) { + const abortError = new Error("Request aborted"); + abortError.name = "AbortError"; + abortError.cause = reason; + return abortError; + } + const abortError = new Error(String(reason)); + abortError.name = "AbortError"; + return abortError; + } + const abortError = new Error("Request aborted"); + abortError.name = "AbortError"; + return abortError; +} diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/constants.js b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/constants.js new file mode 100644 index 000000000..0619d286a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/constants.js @@ -0,0 +1 @@ +export const NODEJS_TIMEOUT_ERROR_CODES = ["ECONNRESET", "EPIPE", "ETIMEDOUT"]; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/get-transformed-headers.js b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/get-transformed-headers.js new file mode 100644 index 000000000..562883c6b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/get-transformed-headers.js @@ -0,0 +1,9 @@ +const getTransformedHeaders = (headers) => { + const transformedHeaders = {}; + for (const name of Object.keys(headers)) { + const headerValues = headers[name]; + transformedHeaders[name] = Array.isArray(headerValues) ? headerValues.join(",") : headerValues; + } + return transformedHeaders; +}; +export { getTransformedHeaders }; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/index.js new file mode 100644 index 000000000..09c0b9a56 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/index.js @@ -0,0 +1,3 @@ +export * from "./node-http-handler"; +export * from "./node-http2-handler"; +export * from "./stream-collector"; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/node-http-handler.js b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/node-http-handler.js new file mode 100644 index 000000000..9f98d5866 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/node-http-handler.js @@ -0,0 +1,223 @@ +import { HttpResponse } from "@smithy/protocol-http"; +import { buildQueryString } from "@smithy/querystring-builder"; +import { Agent as hAgent, request as hRequest } from "http"; +import { Agent as hsAgent, request as hsRequest } from "https"; +import { buildAbortError } from "./build-abort-error"; +import { NODEJS_TIMEOUT_ERROR_CODES } from "./constants"; +import { getTransformedHeaders } from "./get-transformed-headers"; +import { setConnectionTimeout } from "./set-connection-timeout"; +import { setRequestTimeout } from "./set-request-timeout"; +import { setSocketKeepAlive } from "./set-socket-keep-alive"; +import { setSocketTimeout } from "./set-socket-timeout"; +import { timing } from "./timing"; +import { writeRequestBody } from "./write-request-body"; +export const DEFAULT_REQUEST_TIMEOUT = 0; +export class NodeHttpHandler { + config; + configProvider; + socketWarningTimestamp = 0; + externalAgent = false; + metadata = { handlerProtocol: "http/1.1" }; + static create(instanceOrOptions) { + if (typeof instanceOrOptions?.handle === "function") { + return instanceOrOptions; + } + return new NodeHttpHandler(instanceOrOptions); + } + static checkSocketUsage(agent, socketWarningTimestamp, logger = console) { + const { sockets, requests, maxSockets } = agent; + if (typeof maxSockets !== "number" || maxSockets === Infinity) { + return socketWarningTimestamp; + } + const interval = 15_000; + if (Date.now() - interval < socketWarningTimestamp) { + return socketWarningTimestamp; + } + if (sockets && requests) { + for (const origin in sockets) { + const socketsInUse = sockets[origin]?.length ?? 0; + const requestsEnqueued = requests[origin]?.length ?? 0; + if (socketsInUse >= maxSockets && requestsEnqueued >= 2 * maxSockets) { + logger?.warn?.(`@smithy/node-http-handler:WARN - socket usage at capacity=${socketsInUse} and ${requestsEnqueued} additional requests are enqueued. +See https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/node-configuring-maxsockets.html +or increase socketAcquisitionWarningTimeout=(millis) in the NodeHttpHandler config.`); + return Date.now(); + } + } + } + return socketWarningTimestamp; + } + constructor(options) { + this.configProvider = new Promise((resolve, reject) => { + if (typeof options === "function") { + options() + .then((_options) => { + resolve(this.resolveDefaultConfig(_options)); + }) + .catch(reject); + } + else { + resolve(this.resolveDefaultConfig(options)); + } + }); + } + resolveDefaultConfig(options) { + const { requestTimeout, connectionTimeout, socketTimeout, socketAcquisitionWarningTimeout, httpAgent, httpsAgent, throwOnRequestTimeout, logger, } = options || {}; + const keepAlive = true; + const maxSockets = 50; + return { + connectionTimeout, + requestTimeout, + socketTimeout, + socketAcquisitionWarningTimeout, + throwOnRequestTimeout, + httpAgent: (() => { + if (httpAgent instanceof hAgent || typeof httpAgent?.destroy === "function") { + this.externalAgent = true; + return httpAgent; + } + return new hAgent({ keepAlive, maxSockets, ...httpAgent }); + })(), + httpsAgent: (() => { + if (httpsAgent instanceof hsAgent || typeof httpsAgent?.destroy === "function") { + this.externalAgent = true; + return httpsAgent; + } + return new hsAgent({ keepAlive, maxSockets, ...httpsAgent }); + })(), + logger, + }; + } + destroy() { + this.config?.httpAgent?.destroy(); + this.config?.httpsAgent?.destroy(); + } + async handle(request, { abortSignal, requestTimeout } = {}) { + if (!this.config) { + this.config = await this.configProvider; + } + return new Promise((_resolve, _reject) => { + const config = this.config; + let writeRequestBodyPromise = undefined; + const timeouts = []; + const resolve = async (arg) => { + await writeRequestBodyPromise; + timeouts.forEach(timing.clearTimeout); + _resolve(arg); + }; + const reject = async (arg) => { + await writeRequestBodyPromise; + timeouts.forEach(timing.clearTimeout); + _reject(arg); + }; + if (abortSignal?.aborted) { + const abortError = buildAbortError(abortSignal); + reject(abortError); + return; + } + const isSSL = request.protocol === "https:"; + const headers = request.headers ?? {}; + const expectContinue = (headers.Expect ?? headers.expect) === "100-continue"; + let agent = isSSL ? config.httpsAgent : config.httpAgent; + if (expectContinue && !this.externalAgent) { + agent = new (isSSL ? hsAgent : hAgent)({ + keepAlive: false, + maxSockets: Infinity, + }); + } + timeouts.push(timing.setTimeout(() => { + this.socketWarningTimestamp = NodeHttpHandler.checkSocketUsage(agent, this.socketWarningTimestamp, config.logger); + }, config.socketAcquisitionWarningTimeout ?? (config.requestTimeout ?? 2000) + (config.connectionTimeout ?? 1000))); + const queryString = buildQueryString(request.query || {}); + let auth = undefined; + if (request.username != null || request.password != null) { + const username = request.username ?? ""; + const password = request.password ?? ""; + auth = `${username}:${password}`; + } + let path = request.path; + if (queryString) { + path += `?${queryString}`; + } + if (request.fragment) { + path += `#${request.fragment}`; + } + let hostname = request.hostname ?? ""; + if (hostname[0] === "[" && hostname.endsWith("]")) { + hostname = request.hostname.slice(1, -1); + } + else { + hostname = request.hostname; + } + const nodeHttpsOptions = { + headers: request.headers, + host: hostname, + method: request.method, + path, + port: request.port, + agent, + auth, + }; + const requestFunc = isSSL ? hsRequest : hRequest; + const req = requestFunc(nodeHttpsOptions, (res) => { + const httpResponse = new HttpResponse({ + statusCode: res.statusCode || -1, + reason: res.statusMessage, + headers: getTransformedHeaders(res.headers), + body: res, + }); + resolve({ response: httpResponse }); + }); + req.on("error", (err) => { + if (NODEJS_TIMEOUT_ERROR_CODES.includes(err.code)) { + reject(Object.assign(err, { name: "TimeoutError" })); + } + else { + reject(err); + } + }); + if (abortSignal) { + const onAbort = () => { + req.destroy(); + const abortError = buildAbortError(abortSignal); + reject(abortError); + }; + if (typeof abortSignal.addEventListener === "function") { + const signal = abortSignal; + signal.addEventListener("abort", onAbort, { once: true }); + req.once("close", () => signal.removeEventListener("abort", onAbort)); + } + else { + abortSignal.onabort = onAbort; + } + } + const effectiveRequestTimeout = requestTimeout ?? config.requestTimeout; + timeouts.push(setConnectionTimeout(req, reject, config.connectionTimeout)); + timeouts.push(setRequestTimeout(req, reject, effectiveRequestTimeout, config.throwOnRequestTimeout, config.logger ?? console)); + timeouts.push(setSocketTimeout(req, reject, config.socketTimeout)); + const httpAgent = nodeHttpsOptions.agent; + if (typeof httpAgent === "object" && "keepAlive" in httpAgent) { + timeouts.push(setSocketKeepAlive(req, { + keepAlive: httpAgent.keepAlive, + keepAliveMsecs: httpAgent.keepAliveMsecs, + })); + } + writeRequestBodyPromise = writeRequestBody(req, request, effectiveRequestTimeout, this.externalAgent).catch((e) => { + timeouts.forEach(timing.clearTimeout); + return _reject(e); + }); + }); + } + updateHttpClientConfig(key, value) { + this.config = undefined; + this.configProvider = this.configProvider.then((config) => { + return { + ...config, + [key]: value, + }; + }); + } + httpHandlerConfigs() { + return this.config ?? {}; + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-manager.js b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-manager.js new file mode 100644 index 000000000..75de3ee37 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-manager.js @@ -0,0 +1,87 @@ +import http2 from "http2"; +import { NodeHttp2ConnectionPool } from "./node-http2-connection-pool"; +export class NodeHttp2ConnectionManager { + constructor(config) { + this.config = config; + if (this.config.maxConcurrency && this.config.maxConcurrency <= 0) { + throw new RangeError("maxConcurrency must be greater than zero."); + } + } + config; + sessionCache = new Map(); + lease(requestContext, connectionConfiguration) { + const url = this.getUrlString(requestContext); + const existingPool = this.sessionCache.get(url); + if (existingPool) { + const existingSession = existingPool.poll(); + if (existingSession && !this.config.disableConcurrency) { + return existingSession; + } + } + const session = http2.connect(url); + if (this.config.maxConcurrency) { + session.settings({ maxConcurrentStreams: this.config.maxConcurrency }, (err) => { + if (err) { + throw new Error("Fail to set maxConcurrentStreams to " + + this.config.maxConcurrency + + "when creating new session for " + + requestContext.destination.toString()); + } + }); + } + session.unref(); + const destroySessionCb = () => { + session.destroy(); + this.deleteSession(url, session); + }; + session.on("goaway", destroySessionCb); + session.on("error", destroySessionCb); + session.on("frameError", destroySessionCb); + session.on("close", () => this.deleteSession(url, session)); + if (connectionConfiguration.requestTimeout) { + session.setTimeout(connectionConfiguration.requestTimeout, destroySessionCb); + } + const connectionPool = this.sessionCache.get(url) || new NodeHttp2ConnectionPool(); + connectionPool.offerLast(session); + this.sessionCache.set(url, connectionPool); + return session; + } + deleteSession(authority, session) { + const existingConnectionPool = this.sessionCache.get(authority); + if (!existingConnectionPool) { + return; + } + if (!existingConnectionPool.contains(session)) { + return; + } + existingConnectionPool.remove(session); + this.sessionCache.set(authority, existingConnectionPool); + } + release(requestContext, session) { + const cacheKey = this.getUrlString(requestContext); + this.sessionCache.get(cacheKey)?.offerLast(session); + } + destroy() { + for (const [key, connectionPool] of this.sessionCache) { + for (const session of connectionPool) { + if (!session.destroyed) { + session.destroy(); + } + connectionPool.remove(session); + } + this.sessionCache.delete(key); + } + } + setMaxConcurrentStreams(maxConcurrentStreams) { + if (maxConcurrentStreams && maxConcurrentStreams <= 0) { + throw new RangeError("maxConcurrentStreams must be greater than zero."); + } + this.config.maxConcurrency = maxConcurrentStreams; + } + setDisableConcurrentStreams(disableConcurrentStreams) { + this.config.disableConcurrency = disableConcurrentStreams; + } + getUrlString(request) { + return request.destination.toString(); + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-pool.js b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-pool.js new file mode 100644 index 000000000..43b3ad008 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-pool.js @@ -0,0 +1,32 @@ +export class NodeHttp2ConnectionPool { + sessions = []; + constructor(sessions) { + this.sessions = sessions ?? []; + } + poll() { + if (this.sessions.length > 0) { + return this.sessions.shift(); + } + } + offerLast(session) { + this.sessions.push(session); + } + contains(session) { + return this.sessions.includes(session); + } + remove(session) { + this.sessions = this.sessions.filter((s) => s !== session); + } + [Symbol.iterator]() { + return this.sessions[Symbol.iterator](); + } + destroy(connection) { + for (const session of this.sessions) { + if (session === connection) { + if (!session.destroyed) { + session.destroy(); + } + } + } + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/node-http2-handler.js b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/node-http2-handler.js new file mode 100644 index 000000000..02c805020 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/node-http2-handler.js @@ -0,0 +1,169 @@ +import { HttpResponse } from "@smithy/protocol-http"; +import { buildQueryString } from "@smithy/querystring-builder"; +import { constants } from "http2"; +import { buildAbortError } from "./build-abort-error"; +import { getTransformedHeaders } from "./get-transformed-headers"; +import { NodeHttp2ConnectionManager } from "./node-http2-connection-manager"; +import { writeRequestBody } from "./write-request-body"; +export class NodeHttp2Handler { + config; + configProvider; + metadata = { handlerProtocol: "h2" }; + connectionManager = new NodeHttp2ConnectionManager({}); + static create(instanceOrOptions) { + if (typeof instanceOrOptions?.handle === "function") { + return instanceOrOptions; + } + return new NodeHttp2Handler(instanceOrOptions); + } + constructor(options) { + this.configProvider = new Promise((resolve, reject) => { + if (typeof options === "function") { + options() + .then((opts) => { + resolve(opts || {}); + }) + .catch(reject); + } + else { + resolve(options || {}); + } + }); + } + destroy() { + this.connectionManager.destroy(); + } + async handle(request, { abortSignal, requestTimeout } = {}) { + if (!this.config) { + this.config = await this.configProvider; + this.connectionManager.setDisableConcurrentStreams(this.config.disableConcurrentStreams || false); + if (this.config.maxConcurrentStreams) { + this.connectionManager.setMaxConcurrentStreams(this.config.maxConcurrentStreams); + } + } + const { requestTimeout: configRequestTimeout, disableConcurrentStreams } = this.config; + const effectiveRequestTimeout = requestTimeout ?? configRequestTimeout; + return new Promise((_resolve, _reject) => { + let fulfilled = false; + let writeRequestBodyPromise = undefined; + const resolve = async (arg) => { + await writeRequestBodyPromise; + _resolve(arg); + }; + const reject = async (arg) => { + await writeRequestBodyPromise; + _reject(arg); + }; + if (abortSignal?.aborted) { + fulfilled = true; + const abortError = buildAbortError(abortSignal); + reject(abortError); + return; + } + const { hostname, method, port, protocol, query } = request; + let auth = ""; + if (request.username != null || request.password != null) { + const username = request.username ?? ""; + const password = request.password ?? ""; + auth = `${username}:${password}@`; + } + const authority = `${protocol}//${auth}${hostname}${port ? `:${port}` : ""}`; + const requestContext = { destination: new URL(authority) }; + const session = this.connectionManager.lease(requestContext, { + requestTimeout: this.config?.sessionTimeout, + disableConcurrentStreams: disableConcurrentStreams || false, + }); + const rejectWithDestroy = (err) => { + if (disableConcurrentStreams) { + this.destroySession(session); + } + fulfilled = true; + reject(err); + }; + const queryString = buildQueryString(query || {}); + let path = request.path; + if (queryString) { + path += `?${queryString}`; + } + if (request.fragment) { + path += `#${request.fragment}`; + } + const req = session.request({ + ...request.headers, + [constants.HTTP2_HEADER_PATH]: path, + [constants.HTTP2_HEADER_METHOD]: method, + }); + session.ref(); + req.on("response", (headers) => { + const httpResponse = new HttpResponse({ + statusCode: headers[":status"] || -1, + headers: getTransformedHeaders(headers), + body: req, + }); + fulfilled = true; + resolve({ response: httpResponse }); + if (disableConcurrentStreams) { + session.close(); + this.connectionManager.deleteSession(authority, session); + } + }); + if (effectiveRequestTimeout) { + req.setTimeout(effectiveRequestTimeout, () => { + req.close(); + const timeoutError = new Error(`Stream timed out because of no activity for ${effectiveRequestTimeout} ms`); + timeoutError.name = "TimeoutError"; + rejectWithDestroy(timeoutError); + }); + } + if (abortSignal) { + const onAbort = () => { + req.close(); + const abortError = buildAbortError(abortSignal); + rejectWithDestroy(abortError); + }; + if (typeof abortSignal.addEventListener === "function") { + const signal = abortSignal; + signal.addEventListener("abort", onAbort, { once: true }); + req.once("close", () => signal.removeEventListener("abort", onAbort)); + } + else { + abortSignal.onabort = onAbort; + } + } + req.on("frameError", (type, code, id) => { + rejectWithDestroy(new Error(`Frame type id ${type} in stream id ${id} has failed with code ${code}.`)); + }); + req.on("error", rejectWithDestroy); + req.on("aborted", () => { + rejectWithDestroy(new Error(`HTTP/2 stream is abnormally aborted in mid-communication with result code ${req.rstCode}.`)); + }); + req.on("close", () => { + session.unref(); + if (disableConcurrentStreams) { + session.destroy(); + } + if (!fulfilled) { + rejectWithDestroy(new Error("Unexpected error: http2 request did not get a response")); + } + }); + writeRequestBodyPromise = writeRequestBody(req, request, effectiveRequestTimeout); + }); + } + updateHttpClientConfig(key, value) { + this.config = undefined; + this.configProvider = this.configProvider.then((config) => { + return { + ...config, + [key]: value, + }; + }); + } + httpHandlerConfigs() { + return this.config ?? {}; + } + destroySession(session) { + if (!session.destroyed) { + session.destroy(); + } + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/readable.mock.js b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/readable.mock.js new file mode 100644 index 000000000..f72f1cd4e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/readable.mock.js @@ -0,0 +1,21 @@ +import { Readable } from "stream"; +export class ReadFromBuffers extends Readable { + buffersToRead; + numBuffersRead = 0; + errorAfter; + constructor(options) { + super(options); + this.buffersToRead = options.buffers; + this.errorAfter = typeof options.errorAfter === "number" ? options.errorAfter : -1; + } + _read() { + if (this.errorAfter !== -1 && this.errorAfter === this.numBuffersRead) { + this.emit("error", new Error("Mock Error")); + return; + } + if (this.numBuffersRead >= this.buffersToRead.length) { + return this.push(null); + } + return this.push(this.buffersToRead[this.numBuffersRead++]); + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/server.mock.js b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/server.mock.js new file mode 100644 index 000000000..6a31adf19 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/server.mock.js @@ -0,0 +1,88 @@ +import { readFileSync } from "fs"; +import { createServer as createHttpServer } from "http"; +import { createServer as createHttp2Server } from "http2"; +import { createServer as createHttpsServer } from "https"; +import { join } from "path"; +import { Readable } from "stream"; +import { timing } from "./timing"; +const fixturesDir = join(__dirname, "..", "fixtures"); +const setResponseHeaders = (response, headers) => { + for (const [key, value] of Object.entries(headers)) { + response.setHeader(key, value); + } +}; +const setResponseBody = (response, body) => { + if (body instanceof Readable) { + body.pipe(response); + } + else { + response.end(body); + } +}; +export const createResponseFunction = (httpResp) => (request, response) => { + response.statusCode = httpResp.statusCode; + if (httpResp.reason) { + response.statusMessage = httpResp.reason; + } + setResponseHeaders(response, httpResp.headers); + setResponseBody(response, httpResp.body); +}; +export const createResponseFunctionWithDelay = (httpResp, delay) => (request, response) => { + response.statusCode = httpResp.statusCode; + if (httpResp.reason) { + response.statusMessage = httpResp.reason; + } + setResponseHeaders(response, httpResp.headers); + timing.setTimeout(() => setResponseBody(response, httpResp.body), delay); +}; +export const createContinueResponseFunction = (httpResp) => (request, response) => { + response.writeContinue(); + timing.setTimeout(() => { + createResponseFunction(httpResp)(request, response); + }, 100); +}; +export const createMockHttpsServer = () => { + const server = createHttpsServer({ + key: readFileSync(join(fixturesDir, "test-server-key.pem")), + cert: readFileSync(join(fixturesDir, "test-server-cert.pem")), + }); + return server; +}; +export const createMockHttpServer = () => { + const server = createHttpServer(); + return server; +}; +export const createMockHttp2Server = () => { + const server = createHttp2Server(); + return server; +}; +export const createMirrorResponseFunction = (httpResp) => (request, response) => { + const bufs = []; + request.on("data", (chunk) => { + bufs.push(chunk); + }); + request.on("end", () => { + response.statusCode = httpResp.statusCode; + setResponseHeaders(response, httpResp.headers); + setResponseBody(response, Buffer.concat(bufs)); + }); + request.on("error", (err) => { + response.statusCode = 500; + setResponseHeaders(response, httpResp.headers); + setResponseBody(response, err.message); + }); +}; +export const getResponseBody = (response) => { + return new Promise((resolve, reject) => { + const bufs = []; + response.body.on("data", function (d) { + bufs.push(d); + }); + response.body.on("end", function () { + resolve(Buffer.concat(bufs).toString()); + }); + response.body.on("error", (err) => { + reject(err); + }); + }); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/set-connection-timeout.js b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/set-connection-timeout.js new file mode 100644 index 000000000..297862e06 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/set-connection-timeout.js @@ -0,0 +1,36 @@ +import { timing } from "./timing"; +const DEFER_EVENT_LISTENER_TIME = 1000; +export const setConnectionTimeout = (request, reject, timeoutInMs = 0) => { + if (!timeoutInMs) { + return -1; + } + const registerTimeout = (offset) => { + const timeoutId = timing.setTimeout(() => { + request.destroy(); + reject(Object.assign(new Error(`@smithy/node-http-handler - the request socket did not establish a connection with the server within the configured timeout of ${timeoutInMs} ms.`), { + name: "TimeoutError", + })); + }, timeoutInMs - offset); + const doWithSocket = (socket) => { + if (socket?.connecting) { + socket.on("connect", () => { + timing.clearTimeout(timeoutId); + }); + } + else { + timing.clearTimeout(timeoutId); + } + }; + if (request.socket) { + doWithSocket(request.socket); + } + else { + request.on("socket", doWithSocket); + } + }; + if (timeoutInMs < 2000) { + registerTimeout(0); + return 0; + } + return timing.setTimeout(registerTimeout.bind(null, DEFER_EVENT_LISTENER_TIME), DEFER_EVENT_LISTENER_TIME); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/set-request-timeout.js b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/set-request-timeout.js new file mode 100644 index 000000000..44a1c850c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/set-request-timeout.js @@ -0,0 +1,21 @@ +import { timing } from "./timing"; +export const setRequestTimeout = (req, reject, timeoutInMs = 0, throwOnRequestTimeout, logger) => { + if (timeoutInMs) { + return timing.setTimeout(() => { + let msg = `@smithy/node-http-handler - [${throwOnRequestTimeout ? "ERROR" : "WARN"}] a request has exceeded the configured ${timeoutInMs} ms requestTimeout.`; + if (throwOnRequestTimeout) { + const error = Object.assign(new Error(msg), { + name: "TimeoutError", + code: "ETIMEDOUT", + }); + req.destroy(error); + reject(error); + } + else { + msg += ` Init client requestHandler with throwOnRequestTimeout=true to turn this into an error.`; + logger?.warn?.(msg); + } + }, timeoutInMs); + } + return -1; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/set-socket-keep-alive.js b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/set-socket-keep-alive.js new file mode 100644 index 000000000..18391a83c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/set-socket-keep-alive.js @@ -0,0 +1,22 @@ +import { timing } from "./timing"; +const DEFER_EVENT_LISTENER_TIME = 3000; +export const setSocketKeepAlive = (request, { keepAlive, keepAliveMsecs }, deferTimeMs = DEFER_EVENT_LISTENER_TIME) => { + if (keepAlive !== true) { + return -1; + } + const registerListener = () => { + if (request.socket) { + request.socket.setKeepAlive(keepAlive, keepAliveMsecs || 0); + } + else { + request.on("socket", (socket) => { + socket.setKeepAlive(keepAlive, keepAliveMsecs || 0); + }); + } + }; + if (deferTimeMs === 0) { + registerListener(); + return 0; + } + return timing.setTimeout(registerListener, deferTimeMs); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/set-socket-timeout.js b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/set-socket-timeout.js new file mode 100644 index 000000000..7925afdee --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/set-socket-timeout.js @@ -0,0 +1,23 @@ +import { timing } from "./timing"; +const DEFER_EVENT_LISTENER_TIME = 3000; +export const setSocketTimeout = (request, reject, timeoutInMs = 0) => { + const registerTimeout = (offset) => { + const timeout = timeoutInMs - offset; + const onTimeout = () => { + request.destroy(); + reject(Object.assign(new Error(`@smithy/node-http-handler - the request socket timed out after ${timeoutInMs} ms of inactivity (configured by client requestHandler).`), { name: "TimeoutError" })); + }; + if (request.socket) { + request.socket.setTimeout(timeout, onTimeout); + request.on("close", () => request.socket?.removeListener("timeout", onTimeout)); + } + else { + request.setTimeout(timeout, onTimeout); + } + }; + if (0 < timeoutInMs && timeoutInMs < 6000) { + registerTimeout(0); + return 0; + } + return timing.setTimeout(registerTimeout.bind(null, timeoutInMs === 0 ? 0 : DEFER_EVENT_LISTENER_TIME), DEFER_EVENT_LISTENER_TIME); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/stream-collector/collector.js b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/stream-collector/collector.js new file mode 100644 index 000000000..902b14d98 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/stream-collector/collector.js @@ -0,0 +1,8 @@ +import { Writable } from "stream"; +export class Collector extends Writable { + bufferedBytes = []; + _write(chunk, encoding, callback) { + this.bufferedBytes.push(chunk); + callback(); + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/stream-collector/index.js b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/stream-collector/index.js new file mode 100644 index 000000000..8ff09c011 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/stream-collector/index.js @@ -0,0 +1,41 @@ +import { Collector } from "./collector"; +export const streamCollector = (stream) => { + if (isReadableStreamInstance(stream)) { + return collectReadableStream(stream); + } + return new Promise((resolve, reject) => { + const collector = new Collector(); + stream.pipe(collector); + stream.on("error", (err) => { + collector.end(); + reject(err); + }); + collector.on("error", reject); + collector.on("finish", function () { + const bytes = new Uint8Array(Buffer.concat(this.bufferedBytes)); + resolve(bytes); + }); + }); +}; +const isReadableStreamInstance = (stream) => typeof ReadableStream === "function" && stream instanceof ReadableStream; +async function collectReadableStream(stream) { + const chunks = []; + const reader = stream.getReader(); + let isDone = false; + let length = 0; + while (!isDone) { + const { done, value } = await reader.read(); + if (value) { + chunks.push(value); + length += value.length; + } + isDone = done; + } + const collected = new Uint8Array(length); + let offset = 0; + for (const chunk of chunks) { + collected.set(chunk, offset); + offset += chunk.length; + } + return collected; +} diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/stream-collector/readable.mock.js b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/stream-collector/readable.mock.js new file mode 100644 index 000000000..3846f07a6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/stream-collector/readable.mock.js @@ -0,0 +1,21 @@ +import { Readable } from "stream"; +export class ReadFromBuffers extends Readable { + buffersToRead; + numBuffersRead = 0; + errorAfter; + constructor(options) { + super(options); + this.buffersToRead = options.buffers; + this.errorAfter = typeof options.errorAfter === "number" ? options.errorAfter : -1; + } + _read(size) { + if (this.errorAfter !== -1 && this.errorAfter === this.numBuffersRead) { + this.emit("error", new Error("Mock Error")); + return; + } + if (this.numBuffersRead >= this.buffersToRead.length) { + return this.push(null); + } + return this.push(this.buffersToRead[this.numBuffersRead++]); + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/timing.js b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/timing.js new file mode 100644 index 000000000..792ba4844 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/timing.js @@ -0,0 +1,4 @@ +export const timing = { + setTimeout: (cb, ms) => setTimeout(cb, ms), + clearTimeout: (timeoutId) => clearTimeout(timeoutId), +}; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/write-request-body.js b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/write-request-body.js new file mode 100644 index 000000000..05bd8bace --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-es/write-request-body.js @@ -0,0 +1,63 @@ +import { Readable } from "stream"; +import { timing } from "./timing"; +const MIN_WAIT_TIME = 6_000; +export async function writeRequestBody(httpRequest, request, maxContinueTimeoutMs = MIN_WAIT_TIME, externalAgent = false) { + const headers = request.headers ?? {}; + const expect = headers.Expect || headers.expect; + let timeoutId = -1; + let sendBody = true; + if (!externalAgent && expect === "100-continue") { + sendBody = await Promise.race([ + new Promise((resolve) => { + timeoutId = Number(timing.setTimeout(() => resolve(true), Math.max(MIN_WAIT_TIME, maxContinueTimeoutMs))); + }), + new Promise((resolve) => { + httpRequest.on("continue", () => { + timing.clearTimeout(timeoutId); + resolve(true); + }); + httpRequest.on("response", () => { + timing.clearTimeout(timeoutId); + resolve(false); + }); + httpRequest.on("error", () => { + timing.clearTimeout(timeoutId); + resolve(false); + }); + }), + ]); + } + if (sendBody) { + writeBody(httpRequest, request.body); + } +} +function writeBody(httpRequest, body) { + if (body instanceof Readable) { + body.pipe(httpRequest); + return; + } + if (body) { + const isBuffer = Buffer.isBuffer(body); + const isString = typeof body === "string"; + if (isBuffer || isString) { + if (isBuffer && body.byteLength === 0) { + httpRequest.end(); + } + else { + httpRequest.end(body); + } + return; + } + const uint8 = body; + if (typeof uint8 === "object" && + uint8.buffer && + typeof uint8.byteOffset === "number" && + typeof uint8.byteLength === "number") { + httpRequest.end(Buffer.from(uint8.buffer, uint8.byteOffset, uint8.byteLength)); + return; + } + httpRequest.end(Buffer.from(body)); + return; + } + httpRequest.end(); +} diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/build-abort-error.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/build-abort-error.d.ts new file mode 100644 index 000000000..10fa4eb5c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/build-abort-error.d.ts @@ -0,0 +1,10 @@ +/** + * Builds an abort error, using the AbortSignal's reason if available. + * + * @param abortSignal - Optional AbortSignal that may contain a reason. + * @returns A new Error with name "AbortError". If the signal has a reason that's + * already an Error, the reason is set as `cause`. Otherwise creates a + * new Error with the reason as the message, or "Request aborted" if no + * reason. + */ +export declare function buildAbortError(abortSignal?: unknown): Error; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/constants.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/constants.d.ts new file mode 100644 index 000000000..354046173 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/constants.d.ts @@ -0,0 +1,5 @@ +/** + * Node.js system error codes that indicate timeout. + * @deprecated use NODEJS_TIMEOUT_ERROR_CODES from @smithy/service-error-classification/constants + */ +export declare const NODEJS_TIMEOUT_ERROR_CODES: string[]; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/get-transformed-headers.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/get-transformed-headers.d.ts new file mode 100644 index 000000000..6f3266def --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/get-transformed-headers.d.ts @@ -0,0 +1,4 @@ +import type { HeaderBag } from "@smithy/types"; +import type { IncomingHttpHeaders } from "http2"; +declare const getTransformedHeaders: (headers: IncomingHttpHeaders) => HeaderBag; +export { getTransformedHeaders }; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/index.d.ts new file mode 100644 index 000000000..09c0b9a56 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/index.d.ts @@ -0,0 +1,3 @@ +export * from "./node-http-handler"; +export * from "./node-http2-handler"; +export * from "./stream-collector"; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/node-http-handler.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/node-http-handler.d.ts new file mode 100644 index 000000000..49d0a835a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/node-http-handler.d.ts @@ -0,0 +1,46 @@ +import type { HttpHandler, HttpRequest } from "@smithy/protocol-http"; +import { HttpResponse } from "@smithy/protocol-http"; +import type { HttpHandlerOptions, Logger, NodeHttpHandlerOptions, Provider } from "@smithy/types"; +import { Agent as hAgent } from "http"; +import { Agent as hsAgent } from "https"; +export { NodeHttpHandlerOptions }; +/** + * @public + * A default of 0 means no timeout. + */ +export declare const DEFAULT_REQUEST_TIMEOUT = 0; +/** + * @public + * A request handler that uses the Node.js http and https modules. + */ +export declare class NodeHttpHandler implements HttpHandler { + private config?; + private configProvider; + private socketWarningTimestamp; + private externalAgent; + readonly metadata: { + handlerProtocol: string; + }; + /** + * @returns the input if it is an HttpHandler of any class, + * or instantiates a new instance of this handler. + */ + static create(instanceOrOptions?: HttpHandler | NodeHttpHandlerOptions | Provider): NodeHttpHandler | HttpHandler; + /** + * @internal + * + * @param agent - http(s) agent in use by the NodeHttpHandler instance. + * @param socketWarningTimestamp - last socket usage check timestamp. + * @param logger - channel for the warning. + * @returns timestamp of last emitted warning. + */ + static checkSocketUsage(agent: hAgent | hsAgent, socketWarningTimestamp: number, logger?: Logger): number; + constructor(options?: NodeHttpHandlerOptions | Provider); + private resolveDefaultConfig; + destroy(): void; + handle(request: HttpRequest, { abortSignal, requestTimeout }?: HttpHandlerOptions): Promise<{ + response: HttpResponse; + }>; + updateHttpClientConfig(key: keyof NodeHttpHandlerOptions, value: NodeHttpHandlerOptions[typeof key]): void; + httpHandlerConfigs(): NodeHttpHandlerOptions; +} diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-manager.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-manager.d.ts new file mode 100644 index 000000000..248be4432 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-manager.d.ts @@ -0,0 +1,24 @@ +import type { RequestContext } from "@smithy/types"; +import type { ConnectConfiguration } from "@smithy/types"; +import type { ConnectionManager, ConnectionManagerConfiguration } from "@smithy/types"; +import type { ClientHttp2Session } from "http2"; +/** + * @public + */ +export declare class NodeHttp2ConnectionManager implements ConnectionManager { + constructor(config: ConnectionManagerConfiguration); + private config; + private readonly sessionCache; + lease(requestContext: RequestContext, connectionConfiguration: ConnectConfiguration): ClientHttp2Session; + /** + * Delete a session from the connection pool. + * @param authority The authority of the session to delete. + * @param session The session to delete. + */ + deleteSession(authority: string, session: ClientHttp2Session): void; + release(requestContext: RequestContext, session: ClientHttp2Session): void; + destroy(): void; + setMaxConcurrentStreams(maxConcurrentStreams: number): void; + setDisableConcurrentStreams(disableConcurrentStreams: boolean): void; + private getUrlString; +} diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-pool.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-pool.d.ts new file mode 100644 index 000000000..7d76ca6bf --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-pool.d.ts @@ -0,0 +1,12 @@ +import type { ConnectionPool } from "@smithy/types"; +import type { ClientHttp2Session } from "http2"; +export declare class NodeHttp2ConnectionPool implements ConnectionPool { + private sessions; + constructor(sessions?: ClientHttp2Session[]); + poll(): ClientHttp2Session | void; + offerLast(session: ClientHttp2Session): void; + contains(session: ClientHttp2Session): boolean; + remove(session: ClientHttp2Session): void; + [Symbol.iterator](): ArrayIterator; + destroy(connection: ClientHttp2Session): void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/node-http2-handler.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/node-http2-handler.d.ts new file mode 100644 index 000000000..55aaf808d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/node-http2-handler.d.ts @@ -0,0 +1,63 @@ +import type { HttpHandler, HttpRequest } from "@smithy/protocol-http"; +import { HttpResponse } from "@smithy/protocol-http"; +import type { HttpHandlerOptions, Provider } from "@smithy/types"; +/** + * Represents the http2 options that can be passed to a node http2 client. + * @public + */ +export interface NodeHttp2HandlerOptions { + /** + * The maximum time in milliseconds that a stream may remain idle before it + * is closed. + */ + requestTimeout?: number; + /** + * The maximum time in milliseconds that a session or socket may remain idle + * before it is closed. + * https://nodejs.org/docs/latest-v12.x/api/http2.html#http2_http2session_and_sockets + */ + sessionTimeout?: number; + /** + * Disables processing concurrent streams on a ClientHttp2Session instance. When set + * to true, a new session instance is created for each request to a URL. + * **Default:** false. + * https://nodejs.org/api/http2.html#http2_class_clienthttp2session + */ + disableConcurrentStreams?: boolean; + /** + * Maximum number of concurrent Http2Stream instances per ClientHttp2Session. Each session + * may have up to 2^31-1 Http2Stream instances over its lifetime. + * This value must be greater than or equal to 0. + * https://nodejs.org/api/http2.html#class-http2stream + */ + maxConcurrentStreams?: number; +} +/** + * A request handler using the node:http2 package. + * @public + */ +export declare class NodeHttp2Handler implements HttpHandler { + private config?; + private configProvider; + readonly metadata: { + handlerProtocol: string; + }; + private readonly connectionManager; + /** + * @returns the input if it is an HttpHandler of any class, + * or instantiates a new instance of this handler. + */ + static create(instanceOrOptions?: HttpHandler | NodeHttp2HandlerOptions | Provider): HttpHandler | NodeHttp2Handler; + constructor(options?: NodeHttp2HandlerOptions | Provider); + destroy(): void; + handle(request: HttpRequest, { abortSignal, requestTimeout }?: HttpHandlerOptions): Promise<{ + response: HttpResponse; + }>; + updateHttpClientConfig(key: keyof NodeHttp2HandlerOptions, value: NodeHttp2HandlerOptions[typeof key]): void; + httpHandlerConfigs(): NodeHttp2HandlerOptions; + /** + * Destroys a session. + * @param session - the session to destroy. + */ + private destroySession; +} diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/readable.mock.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/readable.mock.d.ts new file mode 100644 index 000000000..4f21b8821 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/readable.mock.d.ts @@ -0,0 +1,13 @@ +import type { ReadableOptions } from "stream"; +import { Readable } from "stream"; +export interface ReadFromBuffersOptions extends ReadableOptions { + buffers: Buffer[]; + errorAfter?: number; +} +export declare class ReadFromBuffers extends Readable { + private buffersToRead; + private numBuffersRead; + private errorAfter; + constructor(options: ReadFromBuffersOptions); + _read(): boolean | undefined; +} diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/server.mock.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/server.mock.d.ts new file mode 100644 index 000000000..65236f588 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/server.mock.d.ts @@ -0,0 +1,12 @@ +import type { HttpResponse } from "@smithy/types"; +import type { IncomingMessage, Server as HttpServer, ServerResponse } from "http"; +import type { Http2Server } from "http2"; +import type { Server as HttpsServer } from "https"; +export declare const createResponseFunction: (httpResp: HttpResponse) => (request: IncomingMessage, response: ServerResponse) => void; +export declare const createResponseFunctionWithDelay: (httpResp: HttpResponse, delay: number) => (request: IncomingMessage, response: ServerResponse) => void; +export declare const createContinueResponseFunction: (httpResp: HttpResponse) => (request: IncomingMessage, response: ServerResponse) => void; +export declare const createMockHttpsServer: () => HttpsServer; +export declare const createMockHttpServer: () => HttpServer; +export declare const createMockHttp2Server: () => Http2Server; +export declare const createMirrorResponseFunction: (httpResp: HttpResponse) => (request: IncomingMessage, response: ServerResponse) => void; +export declare const getResponseBody: (response: HttpResponse) => Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/set-connection-timeout.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/set-connection-timeout.d.ts new file mode 100644 index 000000000..e5aad6fb2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/set-connection-timeout.d.ts @@ -0,0 +1,2 @@ +import type { ClientRequest } from "http"; +export declare const setConnectionTimeout: (request: ClientRequest, reject: (err: Error) => void, timeoutInMs?: number) => NodeJS.Timeout | number; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/set-request-timeout.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/set-request-timeout.d.ts new file mode 100644 index 000000000..8740ef80c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/set-request-timeout.d.ts @@ -0,0 +1,6 @@ +import type { Logger } from "@smithy/types"; +import type { ClientRequest } from "http"; +/** + * @internal + */ +export declare const setRequestTimeout: (req: ClientRequest, reject: (err: Error) => void, timeoutInMs?: number, throwOnRequestTimeout?: boolean, logger?: Logger) => number; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/set-socket-keep-alive.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/set-socket-keep-alive.d.ts new file mode 100644 index 000000000..a74e9b0f6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/set-socket-keep-alive.d.ts @@ -0,0 +1,6 @@ +import type { ClientRequest } from "http"; +export interface SocketKeepAliveOptions { + keepAlive: boolean; + keepAliveMsecs?: number; +} +export declare const setSocketKeepAlive: (request: ClientRequest, { keepAlive, keepAliveMsecs }: SocketKeepAliveOptions, deferTimeMs?: number) => NodeJS.Timeout | number; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/set-socket-timeout.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/set-socket-timeout.d.ts new file mode 100644 index 000000000..8704db251 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/set-socket-timeout.d.ts @@ -0,0 +1,2 @@ +import type { ClientRequest } from "http"; +export declare const setSocketTimeout: (request: ClientRequest, reject: (err: Error) => void, timeoutInMs?: number) => NodeJS.Timeout | number; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/stream-collector/collector.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/stream-collector/collector.d.ts new file mode 100644 index 000000000..1401347e6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/stream-collector/collector.d.ts @@ -0,0 +1,5 @@ +import { Writable } from "stream"; +export declare class Collector extends Writable { + readonly bufferedBytes: Buffer[]; + _write(chunk: Buffer, encoding: string, callback: (err?: Error) => void): void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/stream-collector/index.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/stream-collector/index.d.ts new file mode 100644 index 000000000..43dc0feff --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/stream-collector/index.d.ts @@ -0,0 +1,6 @@ +import type { StreamCollector } from "@smithy/types"; +/** + * @internal + * Converts a stream to a byte array. + */ +export declare const streamCollector: StreamCollector; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/stream-collector/readable.mock.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/stream-collector/readable.mock.d.ts new file mode 100644 index 000000000..05c988222 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/stream-collector/readable.mock.d.ts @@ -0,0 +1,13 @@ +import type { ReadableOptions } from "stream"; +import { Readable } from "stream"; +export interface ReadFromBuffersOptions extends ReadableOptions { + buffers: Buffer[]; + errorAfter?: number; +} +export declare class ReadFromBuffers extends Readable { + private buffersToRead; + private numBuffersRead; + private errorAfter; + constructor(options: ReadFromBuffersOptions); + _read(size: number): boolean | undefined; +} diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/timing.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/timing.d.ts new file mode 100644 index 000000000..de5b695cb --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/timing.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + * For test spies. + */ +export declare const timing: { + setTimeout: (cb: (...ignored: any[]) => void | unknown, ms?: number) => number; + clearTimeout: (timeoutId: string | number | undefined | unknown) => void; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/build-abort-error.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/build-abort-error.d.ts new file mode 100644 index 000000000..10fa4eb5c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/build-abort-error.d.ts @@ -0,0 +1,10 @@ +/** + * Builds an abort error, using the AbortSignal's reason if available. + * + * @param abortSignal - Optional AbortSignal that may contain a reason. + * @returns A new Error with name "AbortError". If the signal has a reason that's + * already an Error, the reason is set as `cause`. Otherwise creates a + * new Error with the reason as the message, or "Request aborted" if no + * reason. + */ +export declare function buildAbortError(abortSignal?: unknown): Error; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/constants.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/constants.d.ts new file mode 100644 index 000000000..354046173 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/constants.d.ts @@ -0,0 +1,5 @@ +/** + * Node.js system error codes that indicate timeout. + * @deprecated use NODEJS_TIMEOUT_ERROR_CODES from @smithy/service-error-classification/constants + */ +export declare const NODEJS_TIMEOUT_ERROR_CODES: string[]; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/get-transformed-headers.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/get-transformed-headers.d.ts new file mode 100644 index 000000000..bb7cd4e80 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/get-transformed-headers.d.ts @@ -0,0 +1,4 @@ +import { HeaderBag } from "@smithy/types"; +import { IncomingHttpHeaders } from "http2"; +declare const getTransformedHeaders: (headers: IncomingHttpHeaders) => HeaderBag; +export { getTransformedHeaders }; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..09c0b9a56 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/index.d.ts @@ -0,0 +1,3 @@ +export * from "./node-http-handler"; +export * from "./node-http2-handler"; +export * from "./stream-collector"; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http-handler.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http-handler.d.ts new file mode 100644 index 000000000..945e3755d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http-handler.d.ts @@ -0,0 +1,46 @@ +import { HttpHandler, HttpRequest } from "@smithy/protocol-http"; +import { HttpResponse } from "@smithy/protocol-http"; +import { HttpHandlerOptions, Logger, NodeHttpHandlerOptions, Provider } from "@smithy/types"; +import { Agent as hAgent } from "http"; +import { Agent as hsAgent } from "https"; +export { NodeHttpHandlerOptions }; +/** + * @public + * A default of 0 means no timeout. + */ +export declare const DEFAULT_REQUEST_TIMEOUT = 0; +/** + * @public + * A request handler that uses the Node.js http and https modules. + */ +export declare class NodeHttpHandler implements HttpHandler { + private config?; + private configProvider; + private socketWarningTimestamp; + private externalAgent; + readonly metadata: { + handlerProtocol: string; + }; + /** + * @returns the input if it is an HttpHandler of any class, + * or instantiates a new instance of this handler. + */ + static create(instanceOrOptions?: HttpHandler | NodeHttpHandlerOptions | Provider): NodeHttpHandler | HttpHandler; + /** + * @internal + * + * @param agent - http(s) agent in use by the NodeHttpHandler instance. + * @param socketWarningTimestamp - last socket usage check timestamp. + * @param logger - channel for the warning. + * @returns timestamp of last emitted warning. + */ + static checkSocketUsage(agent: hAgent | hsAgent, socketWarningTimestamp: number, logger?: Logger): number; + constructor(options?: NodeHttpHandlerOptions | Provider); + private resolveDefaultConfig; + destroy(): void; + handle(request: HttpRequest, { abortSignal, requestTimeout }?: HttpHandlerOptions): Promise<{ + response: HttpResponse; + }>; + updateHttpClientConfig(key: keyof NodeHttpHandlerOptions, value: NodeHttpHandlerOptions[typeof key]): void; + httpHandlerConfigs(): NodeHttpHandlerOptions; +} diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-connection-manager.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-connection-manager.d.ts new file mode 100644 index 000000000..dc50e78e2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-connection-manager.d.ts @@ -0,0 +1,24 @@ +import { RequestContext } from "@smithy/types"; +import { ConnectConfiguration } from "@smithy/types"; +import { ConnectionManager, ConnectionManagerConfiguration } from "@smithy/types"; +import { ClientHttp2Session } from "http2"; +/** + * @public + */ +export declare class NodeHttp2ConnectionManager implements ConnectionManager { + constructor(config: ConnectionManagerConfiguration); + private config; + private readonly sessionCache; + lease(requestContext: RequestContext, connectionConfiguration: ConnectConfiguration): ClientHttp2Session; + /** + * Delete a session from the connection pool. + * @param authority The authority of the session to delete. + * @param session The session to delete. + */ + deleteSession(authority: string, session: ClientHttp2Session): void; + release(requestContext: RequestContext, session: ClientHttp2Session): void; + destroy(): void; + setMaxConcurrentStreams(maxConcurrentStreams: number): void; + setDisableConcurrentStreams(disableConcurrentStreams: boolean): void; + private getUrlString; +} diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-connection-pool.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-connection-pool.d.ts new file mode 100644 index 000000000..7abe19b69 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-connection-pool.d.ts @@ -0,0 +1,12 @@ +import { ConnectionPool } from "@smithy/types"; +import { ClientHttp2Session } from "http2"; +export declare class NodeHttp2ConnectionPool implements ConnectionPool { + private sessions; + constructor(sessions?: ClientHttp2Session[]); + poll(): ClientHttp2Session | void; + offerLast(session: ClientHttp2Session): void; + contains(session: ClientHttp2Session): boolean; + remove(session: ClientHttp2Session): void; + [Symbol.iterator](): ArrayIterator; + destroy(connection: ClientHttp2Session): void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-handler.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-handler.d.ts new file mode 100644 index 000000000..838c8b8ea --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-handler.d.ts @@ -0,0 +1,63 @@ +import { HttpHandler, HttpRequest } from "@smithy/protocol-http"; +import { HttpResponse } from "@smithy/protocol-http"; +import { HttpHandlerOptions, Provider } from "@smithy/types"; +/** + * Represents the http2 options that can be passed to a node http2 client. + * @public + */ +export interface NodeHttp2HandlerOptions { + /** + * The maximum time in milliseconds that a stream may remain idle before it + * is closed. + */ + requestTimeout?: number; + /** + * The maximum time in milliseconds that a session or socket may remain idle + * before it is closed. + * https://nodejs.org/docs/latest-v12.x/api/http2.html#http2_http2session_and_sockets + */ + sessionTimeout?: number; + /** + * Disables processing concurrent streams on a ClientHttp2Session instance. When set + * to true, a new session instance is created for each request to a URL. + * **Default:** false. + * https://nodejs.org/api/http2.html#http2_class_clienthttp2session + */ + disableConcurrentStreams?: boolean; + /** + * Maximum number of concurrent Http2Stream instances per ClientHttp2Session. Each session + * may have up to 2^31-1 Http2Stream instances over its lifetime. + * This value must be greater than or equal to 0. + * https://nodejs.org/api/http2.html#class-http2stream + */ + maxConcurrentStreams?: number; +} +/** + * A request handler using the node:http2 package. + * @public + */ +export declare class NodeHttp2Handler implements HttpHandler { + private config?; + private configProvider; + readonly metadata: { + handlerProtocol: string; + }; + private readonly connectionManager; + /** + * @returns the input if it is an HttpHandler of any class, + * or instantiates a new instance of this handler. + */ + static create(instanceOrOptions?: HttpHandler | NodeHttp2HandlerOptions | Provider): HttpHandler | NodeHttp2Handler; + constructor(options?: NodeHttp2HandlerOptions | Provider); + destroy(): void; + handle(request: HttpRequest, { abortSignal, requestTimeout }?: HttpHandlerOptions): Promise<{ + response: HttpResponse; + }>; + updateHttpClientConfig(key: keyof NodeHttp2HandlerOptions, value: NodeHttp2HandlerOptions[typeof key]): void; + httpHandlerConfigs(): NodeHttp2HandlerOptions; + /** + * Destroys a session. + * @param session - the session to destroy. + */ + private destroySession; +} diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/readable.mock.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/readable.mock.d.ts new file mode 100644 index 000000000..4012b2f31 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/readable.mock.d.ts @@ -0,0 +1,13 @@ +import { ReadableOptions } from "stream"; +import { Readable } from "stream"; +export interface ReadFromBuffersOptions extends ReadableOptions { + buffers: Buffer[]; + errorAfter?: number; +} +export declare class ReadFromBuffers extends Readable { + private buffersToRead; + private numBuffersRead; + private errorAfter; + constructor(options: ReadFromBuffersOptions); + _read(): boolean | undefined; +} diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/server.mock.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/server.mock.d.ts new file mode 100644 index 000000000..585a67735 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/server.mock.d.ts @@ -0,0 +1,12 @@ +import { HttpResponse } from "@smithy/types"; +import { IncomingMessage, Server as HttpServer, ServerResponse } from "http"; +import { Http2Server } from "http2"; +import { Server as HttpsServer } from "https"; +export declare const createResponseFunction: (httpResp: HttpResponse) => (request: IncomingMessage, response: ServerResponse) => void; +export declare const createResponseFunctionWithDelay: (httpResp: HttpResponse, delay: number) => (request: IncomingMessage, response: ServerResponse) => void; +export declare const createContinueResponseFunction: (httpResp: HttpResponse) => (request: IncomingMessage, response: ServerResponse) => void; +export declare const createMockHttpsServer: () => HttpsServer; +export declare const createMockHttpServer: () => HttpServer; +export declare const createMockHttp2Server: () => Http2Server; +export declare const createMirrorResponseFunction: (httpResp: HttpResponse) => (request: IncomingMessage, response: ServerResponse) => void; +export declare const getResponseBody: (response: HttpResponse) => Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-connection-timeout.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-connection-timeout.d.ts new file mode 100644 index 000000000..69024af42 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-connection-timeout.d.ts @@ -0,0 +1,2 @@ +import { ClientRequest } from "http"; +export declare const setConnectionTimeout: (request: ClientRequest, reject: (err: Error) => void, timeoutInMs?: number) => NodeJS.Timeout | number; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-request-timeout.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-request-timeout.d.ts new file mode 100644 index 000000000..e53d3f871 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-request-timeout.d.ts @@ -0,0 +1,6 @@ +import { Logger } from "@smithy/types"; +import { ClientRequest } from "http"; +/** + * @internal + */ +export declare const setRequestTimeout: (req: ClientRequest, reject: (err: Error) => void, timeoutInMs?: number, throwOnRequestTimeout?: boolean, logger?: Logger) => number; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-socket-keep-alive.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-socket-keep-alive.d.ts new file mode 100644 index 000000000..949e57efc --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-socket-keep-alive.d.ts @@ -0,0 +1,6 @@ +import { ClientRequest } from "http"; +export interface SocketKeepAliveOptions { + keepAlive: boolean; + keepAliveMsecs?: number; +} +export declare const setSocketKeepAlive: (request: ClientRequest, { keepAlive, keepAliveMsecs }: SocketKeepAliveOptions, deferTimeMs?: number) => NodeJS.Timeout | number; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-socket-timeout.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-socket-timeout.d.ts new file mode 100644 index 000000000..246cc64c7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-socket-timeout.d.ts @@ -0,0 +1,2 @@ +import { ClientRequest } from "http"; +export declare const setSocketTimeout: (request: ClientRequest, reject: (err: Error) => void, timeoutInMs?: number) => NodeJS.Timeout | number; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/collector.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/collector.d.ts new file mode 100644 index 000000000..1401347e6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/collector.d.ts @@ -0,0 +1,5 @@ +import { Writable } from "stream"; +export declare class Collector extends Writable { + readonly bufferedBytes: Buffer[]; + _write(chunk: Buffer, encoding: string, callback: (err?: Error) => void): void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/index.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/index.d.ts new file mode 100644 index 000000000..a9a9498d6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/index.d.ts @@ -0,0 +1,6 @@ +import { StreamCollector } from "@smithy/types"; +/** + * @internal + * Converts a stream to a byte array. + */ +export declare const streamCollector: StreamCollector; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/readable.mock.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/readable.mock.d.ts new file mode 100644 index 000000000..7b48fb725 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/readable.mock.d.ts @@ -0,0 +1,13 @@ +import { ReadableOptions } from "stream"; +import { Readable } from "stream"; +export interface ReadFromBuffersOptions extends ReadableOptions { + buffers: Buffer[]; + errorAfter?: number; +} +export declare class ReadFromBuffers extends Readable { + private buffersToRead; + private numBuffersRead; + private errorAfter; + constructor(options: ReadFromBuffersOptions); + _read(size: number): boolean | undefined; +} diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/timing.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/timing.d.ts new file mode 100644 index 000000000..de5b695cb --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/timing.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + * For test spies. + */ +export declare const timing: { + setTimeout: (cb: (...ignored: any[]) => void | unknown, ms?: number) => number; + clearTimeout: (timeoutId: string | number | undefined | unknown) => void; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/write-request-body.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/write-request-body.d.ts new file mode 100644 index 000000000..50409459c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/ts3.4/write-request-body.d.ts @@ -0,0 +1,12 @@ +import { HttpRequest } from "@smithy/types"; +import { ClientRequest } from "http"; +import { ClientHttp2Stream } from "http2"; +/** + * This resolves when writeBody has been called. + * + * @param httpRequest - opened Node.js request. + * @param request - container with the request body. + * @param maxContinueTimeoutMs - time to wait for the continue event. + * @param externalAgent - whether agent is owned by caller code. + */ +export declare function writeRequestBody(httpRequest: ClientRequest | ClientHttp2Stream, request: HttpRequest, maxContinueTimeoutMs?: number, externalAgent?: boolean): Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/write-request-body.d.ts b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/write-request-body.d.ts new file mode 100644 index 000000000..6c0d4b79f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/dist-types/write-request-body.d.ts @@ -0,0 +1,12 @@ +import type { HttpRequest } from "@smithy/types"; +import type { ClientRequest } from "http"; +import type { ClientHttp2Stream } from "http2"; +/** + * This resolves when writeBody has been called. + * + * @param httpRequest - opened Node.js request. + * @param request - container with the request body. + * @param maxContinueTimeoutMs - time to wait for the continue event. + * @param externalAgent - whether agent is owned by caller code. + */ +export declare function writeRequestBody(httpRequest: ClientRequest | ClientHttp2Stream, request: HttpRequest, maxContinueTimeoutMs?: number, externalAgent?: boolean): Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/node-http-handler/package.json b/food-ordering-app/server/node_modules/@smithy/node-http-handler/package.json new file mode 100644 index 000000000..feb167596 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/node-http-handler/package.json @@ -0,0 +1,68 @@ +{ + "name": "@smithy/node-http-handler", + "version": "4.4.16", + "description": "Provides a way to make requests", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline node-http-handler", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "extract:docs": "api-extractor run --local", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "email": "", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "dependencies": { + "@smithy/abort-controller": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/querystring-builder": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/node-http-handler", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/node-http-handler" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/property-provider/LICENSE b/food-ordering-app/server/node_modules/@smithy/property-provider/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/property-provider/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/property-provider/README.md b/food-ordering-app/server/node_modules/@smithy/property-provider/README.md new file mode 100644 index 000000000..b35fafb78 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/property-provider/README.md @@ -0,0 +1,10 @@ +# @smithy/property-provider + +[![NPM version](https://img.shields.io/npm/v/@smithy/property-provider/latest.svg)](https://www.npmjs.com/package/@smithy/property-provider) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/property-provider.svg)](https://www.npmjs.com/package/@smithy/property-provider) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/food-ordering-app/server/node_modules/@smithy/property-provider/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-cjs/index.js new file mode 100644 index 000000000..a419560c1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-cjs/index.js @@ -0,0 +1,117 @@ +'use strict'; + +class ProviderError extends Error { + name = "ProviderError"; + tryNextLink; + constructor(message, options = true) { + let logger; + let tryNextLink = true; + if (typeof options === "boolean") { + logger = undefined; + tryNextLink = options; + } + else if (options != null && typeof options === "object") { + logger = options.logger; + tryNextLink = options.tryNextLink ?? true; + } + super(message); + this.tryNextLink = tryNextLink; + Object.setPrototypeOf(this, ProviderError.prototype); + logger?.debug?.(`@smithy/property-provider ${tryNextLink ? "->" : "(!)"} ${message}`); + } + static from(error, options = true) { + return Object.assign(new this(error.message, options), error); + } +} + +class CredentialsProviderError extends ProviderError { + name = "CredentialsProviderError"; + constructor(message, options = true) { + super(message, options); + Object.setPrototypeOf(this, CredentialsProviderError.prototype); + } +} + +class TokenProviderError extends ProviderError { + name = "TokenProviderError"; + constructor(message, options = true) { + super(message, options); + Object.setPrototypeOf(this, TokenProviderError.prototype); + } +} + +const chain = (...providers) => async () => { + if (providers.length === 0) { + throw new ProviderError("No providers in chain"); + } + let lastProviderError; + for (const provider of providers) { + try { + const credentials = await provider(); + return credentials; + } + catch (err) { + lastProviderError = err; + if (err?.tryNextLink) { + continue; + } + throw err; + } + } + throw lastProviderError; +}; + +const fromStatic = (staticValue) => () => Promise.resolve(staticValue); + +const memoize = (provider, isExpired, requiresRefresh) => { + let resolved; + let pending; + let hasResult; + let isConstant = false; + const coalesceProvider = async () => { + if (!pending) { + pending = provider(); + } + try { + resolved = await pending; + hasResult = true; + isConstant = false; + } + finally { + pending = undefined; + } + return resolved; + }; + if (isExpired === undefined) { + return async (options) => { + if (!hasResult || options?.forceRefresh) { + resolved = await coalesceProvider(); + } + return resolved; + }; + } + return async (options) => { + if (!hasResult || options?.forceRefresh) { + resolved = await coalesceProvider(); + } + if (isConstant) { + return resolved; + } + if (requiresRefresh && !requiresRefresh(resolved)) { + isConstant = true; + return resolved; + } + if (isExpired(resolved)) { + await coalesceProvider(); + return resolved; + } + return resolved; + }; +}; + +exports.CredentialsProviderError = CredentialsProviderError; +exports.ProviderError = ProviderError; +exports.TokenProviderError = TokenProviderError; +exports.chain = chain; +exports.fromStatic = fromStatic; +exports.memoize = memoize; diff --git a/food-ordering-app/server/node_modules/@smithy/property-provider/dist-es/CredentialsProviderError.js b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-es/CredentialsProviderError.js new file mode 100644 index 000000000..94cb2db92 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-es/CredentialsProviderError.js @@ -0,0 +1,8 @@ +import { ProviderError } from "./ProviderError"; +export class CredentialsProviderError extends ProviderError { + name = "CredentialsProviderError"; + constructor(message, options = true) { + super(message, options); + Object.setPrototypeOf(this, CredentialsProviderError.prototype); + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/property-provider/dist-es/ProviderError.js b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-es/ProviderError.js new file mode 100644 index 000000000..6aa3ce387 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-es/ProviderError.js @@ -0,0 +1,23 @@ +export class ProviderError extends Error { + name = "ProviderError"; + tryNextLink; + constructor(message, options = true) { + let logger; + let tryNextLink = true; + if (typeof options === "boolean") { + logger = undefined; + tryNextLink = options; + } + else if (options != null && typeof options === "object") { + logger = options.logger; + tryNextLink = options.tryNextLink ?? true; + } + super(message); + this.tryNextLink = tryNextLink; + Object.setPrototypeOf(this, ProviderError.prototype); + logger?.debug?.(`@smithy/property-provider ${tryNextLink ? "->" : "(!)"} ${message}`); + } + static from(error, options = true) { + return Object.assign(new this(error.message, options), error); + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/property-provider/dist-es/TokenProviderError.js b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-es/TokenProviderError.js new file mode 100644 index 000000000..a16272953 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-es/TokenProviderError.js @@ -0,0 +1,8 @@ +import { ProviderError } from "./ProviderError"; +export class TokenProviderError extends ProviderError { + name = "TokenProviderError"; + constructor(message, options = true) { + super(message, options); + Object.setPrototypeOf(this, TokenProviderError.prototype); + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/property-provider/dist-es/chain.js b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-es/chain.js new file mode 100644 index 000000000..c389f7fec --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-es/chain.js @@ -0,0 +1,21 @@ +import { ProviderError } from "./ProviderError"; +export const chain = (...providers) => async () => { + if (providers.length === 0) { + throw new ProviderError("No providers in chain"); + } + let lastProviderError; + for (const provider of providers) { + try { + const credentials = await provider(); + return credentials; + } + catch (err) { + lastProviderError = err; + if (err?.tryNextLink) { + continue; + } + throw err; + } + } + throw lastProviderError; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/property-provider/dist-es/fromStatic.js b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-es/fromStatic.js new file mode 100644 index 000000000..67da7a75d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-es/fromStatic.js @@ -0,0 +1 @@ +export const fromStatic = (staticValue) => () => Promise.resolve(staticValue); diff --git a/food-ordering-app/server/node_modules/@smithy/property-provider/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-es/index.js new file mode 100644 index 000000000..15d14e5b6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-es/index.js @@ -0,0 +1,6 @@ +export * from "./CredentialsProviderError"; +export * from "./ProviderError"; +export * from "./TokenProviderError"; +export * from "./chain"; +export * from "./fromStatic"; +export * from "./memoize"; diff --git a/food-ordering-app/server/node_modules/@smithy/property-provider/dist-es/memoize.js b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-es/memoize.js new file mode 100644 index 000000000..e04839ab4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-es/memoize.js @@ -0,0 +1,45 @@ +export const memoize = (provider, isExpired, requiresRefresh) => { + let resolved; + let pending; + let hasResult; + let isConstant = false; + const coalesceProvider = async () => { + if (!pending) { + pending = provider(); + } + try { + resolved = await pending; + hasResult = true; + isConstant = false; + } + finally { + pending = undefined; + } + return resolved; + }; + if (isExpired === undefined) { + return async (options) => { + if (!hasResult || options?.forceRefresh) { + resolved = await coalesceProvider(); + } + return resolved; + }; + } + return async (options) => { + if (!hasResult || options?.forceRefresh) { + resolved = await coalesceProvider(); + } + if (isConstant) { + return resolved; + } + if (requiresRefresh && !requiresRefresh(resolved)) { + isConstant = true; + return resolved; + } + if (isExpired(resolved)) { + await coalesceProvider(); + return resolved; + } + return resolved; + }; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/CredentialsProviderError.d.ts b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/CredentialsProviderError.d.ts new file mode 100644 index 000000000..614d76424 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/CredentialsProviderError.d.ts @@ -0,0 +1,31 @@ +import type { ProviderErrorOptionsType } from "./ProviderError"; +import { ProviderError } from "./ProviderError"; +/** + * @public + * + * An error representing a failure of an individual credential provider. + * + * This error class has special meaning to the {@link chain} method. If a + * provider in the chain is rejected with an error, the chain will only proceed + * to the next provider if the value of the `tryNextLink` property on the error + * is truthy. This allows individual providers to halt the chain and also + * ensures the chain will stop if an entirely unexpected error is encountered. + */ +export declare class CredentialsProviderError extends ProviderError { + name: string; + /** + * @override + * @deprecated constructor should be given a logger. + */ + constructor(message: string); + /** + * @override + * @deprecated constructor should be given a logger. + */ + constructor(message: string, tryNextLink: boolean | undefined); + /** + * @override + * This signature is preferred for logging capability. + */ + constructor(message: string, options: ProviderErrorOptionsType); +} diff --git a/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/ProviderError.d.ts b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/ProviderError.d.ts new file mode 100644 index 000000000..7d62b8b3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/ProviderError.d.ts @@ -0,0 +1,39 @@ +import type { Logger } from "@smithy/types"; +/** + * @public + */ +export type ProviderErrorOptionsType = { + tryNextLink?: boolean | undefined; + logger?: Logger; +}; +/** + * @public + * + * An error representing a failure of an individual provider. + * + * This error class has special meaning to the {@link chain} method. If a + * provider in the chain is rejected with an error, the chain will only proceed + * to the next provider if the value of the `tryNextLink` property on the error + * is truthy. This allows individual providers to halt the chain and also + * ensures the chain will stop if an entirely unexpected error is encountered. + */ +export declare class ProviderError extends Error { + name: string; + readonly tryNextLink: boolean; + /** + * @deprecated constructor should be given a logger. + */ + constructor(message: string); + /** + * @deprecated constructor should be given a logger. + */ + constructor(message: string, tryNextLink: boolean | undefined); + /** + * This signature is preferred for logging capability. + */ + constructor(message: string, options: ProviderErrorOptionsType); + /** + * @deprecated use new operator. + */ + static from(error: Error, options?: boolean | ProviderErrorOptionsType): ProviderError; +} diff --git a/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/TokenProviderError.d.ts b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/TokenProviderError.d.ts new file mode 100644 index 000000000..223b64b7c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/TokenProviderError.d.ts @@ -0,0 +1,31 @@ +import type { ProviderErrorOptionsType } from "./ProviderError"; +import { ProviderError } from "./ProviderError"; +/** + * @public + * + * An error representing a failure of an individual token provider. + * + * This error class has special meaning to the {@link chain} method. If a + * provider in the chain is rejected with an error, the chain will only proceed + * to the next provider if the value of the `tryNextLink` property on the error + * is truthy. This allows individual providers to halt the chain and also + * ensures the chain will stop if an entirely unexpected error is encountered. + */ +export declare class TokenProviderError extends ProviderError { + name: string; + /** + * @override + * @deprecated constructor should be given a logger. + */ + constructor(message: string); + /** + * @override + * @deprecated constructor should be given a logger. + */ + constructor(message: string, tryNextLink: boolean | undefined); + /** + * @override + * This signature is preferred for logging capability. + */ + constructor(message: string, options: ProviderErrorOptionsType); +} diff --git a/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/chain.d.ts b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/chain.d.ts new file mode 100644 index 000000000..93d80351b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/chain.d.ts @@ -0,0 +1,13 @@ +import type { Provider } from "@smithy/types"; +/** + * @internal + * + * Compose a single credential provider function from multiple credential + * providers. The first provider in the argument list will always be invoked; + * subsequent providers in the list will be invoked in the order in which the + * were received if the preceding provider did not successfully resolve. + * + * If no providers were received or no provider resolves successfully, the + * returned promise will be rejected. + */ +export declare const chain: (...providers: Array>) => Provider; diff --git a/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/fromStatic.d.ts b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/fromStatic.d.ts new file mode 100644 index 000000000..8d84c0456 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/fromStatic.d.ts @@ -0,0 +1,5 @@ +import type { Provider } from "@smithy/types"; +/** + * @internal + */ +export declare const fromStatic: (staticValue: T) => Provider; diff --git a/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/index.d.ts new file mode 100644 index 000000000..6326994ce --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/index.d.ts @@ -0,0 +1,24 @@ +/** + * @internal + */ +export * from "./CredentialsProviderError"; +/** + * @internal + */ +export * from "./ProviderError"; +/** + * @internal + */ +export * from "./TokenProviderError"; +/** + * @internal + */ +export * from "./chain"; +/** + * @internal + */ +export * from "./fromStatic"; +/** + * @internal + */ +export * from "./memoize"; diff --git a/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/memoize.d.ts b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/memoize.d.ts new file mode 100644 index 000000000..80c08d709 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/memoize.d.ts @@ -0,0 +1,40 @@ +import type { MemoizedProvider, Provider } from "@smithy/types"; +interface MemoizeOverload { + /** + * + * Decorates a provider function with either static memoization. + * + * To create a statically memoized provider, supply a provider as the only + * argument to this function. The provider will be invoked once, and all + * invocations of the provider returned by `memoize` will return the same + * promise object. + * + * @param provider The provider whose result should be cached indefinitely. + */ + (provider: Provider): MemoizedProvider; + /** + * Decorates a provider function with refreshing memoization. + * + * @param provider The provider whose result should be cached. + * @param isExpired A function that will evaluate the resolved value and + * determine if it is expired. For example, when + * memoizing AWS credential providers, this function + * should return `true` when the credential's + * expiration is in the past (or very near future) and + * `false` otherwise. + * @param requiresRefresh A function that will evaluate the resolved value and + * determine if it represents static value or one that + * will eventually need to be refreshed. For example, + * AWS credentials that have no defined expiration will + * never need to be refreshed, so this function would + * return `true` if the credentials resolved by the + * underlying provider had an expiration and `false` + * otherwise. + */ + (provider: Provider, isExpired: (resolved: T) => boolean, requiresRefresh?: (resolved: T) => boolean): MemoizedProvider; +} +/** + * @internal + */ +export declare const memoize: MemoizeOverload; +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/ts3.4/CredentialsProviderError.d.ts b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/ts3.4/CredentialsProviderError.d.ts new file mode 100644 index 000000000..5ecc28475 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/ts3.4/CredentialsProviderError.d.ts @@ -0,0 +1,31 @@ +import { ProviderErrorOptionsType } from "./ProviderError"; +import { ProviderError } from "./ProviderError"; +/** + * @public + * + * An error representing a failure of an individual credential provider. + * + * This error class has special meaning to the {@link chain} method. If a + * provider in the chain is rejected with an error, the chain will only proceed + * to the next provider if the value of the `tryNextLink` property on the error + * is truthy. This allows individual providers to halt the chain and also + * ensures the chain will stop if an entirely unexpected error is encountered. + */ +export declare class CredentialsProviderError extends ProviderError { + name: string; + /** + * @override + * @deprecated constructor should be given a logger. + */ + constructor(message: string); + /** + * @override + * @deprecated constructor should be given a logger. + */ + constructor(message: string, tryNextLink: boolean | undefined); + /** + * @override + * This signature is preferred for logging capability. + */ + constructor(message: string, options: ProviderErrorOptionsType); +} diff --git a/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/ts3.4/ProviderError.d.ts b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/ts3.4/ProviderError.d.ts new file mode 100644 index 000000000..b87b014fd --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/ts3.4/ProviderError.d.ts @@ -0,0 +1,39 @@ +import { Logger } from "@smithy/types"; +/** + * @public + */ +export type ProviderErrorOptionsType = { + tryNextLink?: boolean | undefined; + logger?: Logger; +}; +/** + * @public + * + * An error representing a failure of an individual provider. + * + * This error class has special meaning to the {@link chain} method. If a + * provider in the chain is rejected with an error, the chain will only proceed + * to the next provider if the value of the `tryNextLink` property on the error + * is truthy. This allows individual providers to halt the chain and also + * ensures the chain will stop if an entirely unexpected error is encountered. + */ +export declare class ProviderError extends Error { + name: string; + readonly tryNextLink: boolean; + /** + * @deprecated constructor should be given a logger. + */ + constructor(message: string); + /** + * @deprecated constructor should be given a logger. + */ + constructor(message: string, tryNextLink: boolean | undefined); + /** + * This signature is preferred for logging capability. + */ + constructor(message: string, options: ProviderErrorOptionsType); + /** + * @deprecated use new operator. + */ + static from(error: Error, options?: boolean | ProviderErrorOptionsType): ProviderError; +} diff --git a/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/ts3.4/TokenProviderError.d.ts b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/ts3.4/TokenProviderError.d.ts new file mode 100644 index 000000000..9ef9ce5b7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/ts3.4/TokenProviderError.d.ts @@ -0,0 +1,31 @@ +import { ProviderErrorOptionsType } from "./ProviderError"; +import { ProviderError } from "./ProviderError"; +/** + * @public + * + * An error representing a failure of an individual token provider. + * + * This error class has special meaning to the {@link chain} method. If a + * provider in the chain is rejected with an error, the chain will only proceed + * to the next provider if the value of the `tryNextLink` property on the error + * is truthy. This allows individual providers to halt the chain and also + * ensures the chain will stop if an entirely unexpected error is encountered. + */ +export declare class TokenProviderError extends ProviderError { + name: string; + /** + * @override + * @deprecated constructor should be given a logger. + */ + constructor(message: string); + /** + * @override + * @deprecated constructor should be given a logger. + */ + constructor(message: string, tryNextLink: boolean | undefined); + /** + * @override + * This signature is preferred for logging capability. + */ + constructor(message: string, options: ProviderErrorOptionsType); +} diff --git a/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/ts3.4/chain.d.ts b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/ts3.4/chain.d.ts new file mode 100644 index 000000000..34e5f42a8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/ts3.4/chain.d.ts @@ -0,0 +1,13 @@ +import { Provider } from "@smithy/types"; +/** + * @internal + * + * Compose a single credential provider function from multiple credential + * providers. The first provider in the argument list will always be invoked; + * subsequent providers in the list will be invoked in the order in which the + * were received if the preceding provider did not successfully resolve. + * + * If no providers were received or no provider resolves successfully, the + * returned promise will be rejected. + */ +export declare const chain: (...providers: Array>) => Provider; diff --git a/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/ts3.4/fromStatic.d.ts b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/ts3.4/fromStatic.d.ts new file mode 100644 index 000000000..f58bece97 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/ts3.4/fromStatic.d.ts @@ -0,0 +1,5 @@ +import { Provider } from "@smithy/types"; +/** + * @internal + */ +export declare const fromStatic: (staticValue: T) => Provider; diff --git a/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..6326994ce --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/ts3.4/index.d.ts @@ -0,0 +1,24 @@ +/** + * @internal + */ +export * from "./CredentialsProviderError"; +/** + * @internal + */ +export * from "./ProviderError"; +/** + * @internal + */ +export * from "./TokenProviderError"; +/** + * @internal + */ +export * from "./chain"; +/** + * @internal + */ +export * from "./fromStatic"; +/** + * @internal + */ +export * from "./memoize"; diff --git a/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/ts3.4/memoize.d.ts b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/ts3.4/memoize.d.ts new file mode 100644 index 000000000..ce197c0fb --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/property-provider/dist-types/ts3.4/memoize.d.ts @@ -0,0 +1,40 @@ +import { MemoizedProvider, Provider } from "@smithy/types"; +interface MemoizeOverload { + /** + * + * Decorates a provider function with either static memoization. + * + * To create a statically memoized provider, supply a provider as the only + * argument to this function. The provider will be invoked once, and all + * invocations of the provider returned by `memoize` will return the same + * promise object. + * + * @param provider The provider whose result should be cached indefinitely. + */ + (provider: Provider): MemoizedProvider; + /** + * Decorates a provider function with refreshing memoization. + * + * @param provider The provider whose result should be cached. + * @param isExpired A function that will evaluate the resolved value and + * determine if it is expired. For example, when + * memoizing AWS credential providers, this function + * should return `true` when the credential's + * expiration is in the past (or very near future) and + * `false` otherwise. + * @param requiresRefresh A function that will evaluate the resolved value and + * determine if it represents static value or one that + * will eventually need to be refreshed. For example, + * AWS credentials that have no defined expiration will + * never need to be refreshed, so this function would + * return `true` if the credentials resolved by the + * underlying provider had an expiration and `false` + * otherwise. + */ + (provider: Provider, isExpired: (resolved: T) => boolean, requiresRefresh?: (resolved: T) => boolean): MemoizedProvider; +} +/** + * @internal + */ +export declare const memoize: MemoizeOverload; +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/property-provider/package.json b/food-ordering-app/server/node_modules/@smithy/property-provider/package.json new file mode 100644 index 000000000..565cefa0e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/property-provider/package.json @@ -0,0 +1,61 @@ +{ + "name": "@smithy/property-provider", + "version": "4.2.12", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline property-provider", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/property-provider", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/property-provider" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/LICENSE b/food-ordering-app/server/node_modules/@smithy/protocol-http/LICENSE new file mode 100644 index 000000000..e907b5866 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/README.md b/food-ordering-app/server/node_modules/@smithy/protocol-http/README.md new file mode 100644 index 000000000..a547ab08d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/README.md @@ -0,0 +1,4 @@ +# @smithy/protocol-http + +[![NPM version](https://img.shields.io/npm/v/@smithy/protocol-http/latest.svg)](https://www.npmjs.com/package/@smithy/protocol-http) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/protocol-http.svg)](https://www.npmjs.com/package/@smithy/protocol-http) diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-cjs/index.js new file mode 100644 index 000000000..52303c3bc --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-cjs/index.js @@ -0,0 +1,169 @@ +'use strict'; + +var types = require('@smithy/types'); + +const getHttpHandlerExtensionConfiguration = (runtimeConfig) => { + return { + setHttpHandler(handler) { + runtimeConfig.httpHandler = handler; + }, + httpHandler() { + return runtimeConfig.httpHandler; + }, + updateHttpClientConfig(key, value) { + runtimeConfig.httpHandler?.updateHttpClientConfig(key, value); + }, + httpHandlerConfigs() { + return runtimeConfig.httpHandler.httpHandlerConfigs(); + }, + }; +}; +const resolveHttpHandlerRuntimeConfig = (httpHandlerExtensionConfiguration) => { + return { + httpHandler: httpHandlerExtensionConfiguration.httpHandler(), + }; +}; + +class Field { + name; + kind; + values; + constructor({ name, kind = types.FieldPosition.HEADER, values = [] }) { + this.name = name; + this.kind = kind; + this.values = values; + } + add(value) { + this.values.push(value); + } + set(values) { + this.values = values; + } + remove(value) { + this.values = this.values.filter((v) => v !== value); + } + toString() { + return this.values.map((v) => (v.includes(",") || v.includes(" ") ? `"${v}"` : v)).join(", "); + } + get() { + return this.values; + } +} + +class Fields { + entries = {}; + encoding; + constructor({ fields = [], encoding = "utf-8" }) { + fields.forEach(this.setField.bind(this)); + this.encoding = encoding; + } + setField(field) { + this.entries[field.name.toLowerCase()] = field; + } + getField(name) { + return this.entries[name.toLowerCase()]; + } + removeField(name) { + delete this.entries[name.toLowerCase()]; + } + getByType(kind) { + return Object.values(this.entries).filter((field) => field.kind === kind); + } +} + +class HttpRequest { + method; + protocol; + hostname; + port; + path; + query; + headers; + username; + password; + fragment; + body; + constructor(options) { + this.method = options.method || "GET"; + this.hostname = options.hostname || "localhost"; + this.port = options.port; + this.query = options.query || {}; + this.headers = options.headers || {}; + this.body = options.body; + this.protocol = options.protocol + ? options.protocol.slice(-1) !== ":" + ? `${options.protocol}:` + : options.protocol + : "https:"; + this.path = options.path ? (options.path.charAt(0) !== "/" ? `/${options.path}` : options.path) : "/"; + this.username = options.username; + this.password = options.password; + this.fragment = options.fragment; + } + static clone(request) { + const cloned = new HttpRequest({ + ...request, + headers: { ...request.headers }, + }); + if (cloned.query) { + cloned.query = cloneQuery(cloned.query); + } + return cloned; + } + static isInstance(request) { + if (!request) { + return false; + } + const req = request; + return ("method" in req && + "protocol" in req && + "hostname" in req && + "path" in req && + typeof req["query"] === "object" && + typeof req["headers"] === "object"); + } + clone() { + return HttpRequest.clone(this); + } +} +function cloneQuery(query) { + return Object.keys(query).reduce((carry, paramName) => { + const param = query[paramName]; + return { + ...carry, + [paramName]: Array.isArray(param) ? [...param] : param, + }; + }, {}); +} + +class HttpResponse { + statusCode; + reason; + headers; + body; + constructor(options) { + this.statusCode = options.statusCode; + this.reason = options.reason; + this.headers = options.headers || {}; + this.body = options.body; + } + static isInstance(response) { + if (!response) + return false; + const resp = response; + return typeof resp.statusCode === "number" && typeof resp.headers === "object"; + } +} + +function isValidHostname(hostname) { + const hostPattern = /^[a-z0-9][a-z0-9\.\-]*[a-z0-9]$/; + return hostPattern.test(hostname); +} + +exports.Field = Field; +exports.Fields = Fields; +exports.HttpRequest = HttpRequest; +exports.HttpResponse = HttpResponse; +exports.getHttpHandlerExtensionConfiguration = getHttpHandlerExtensionConfiguration; +exports.isValidHostname = isValidHostname; +exports.resolveHttpHandlerRuntimeConfig = resolveHttpHandlerRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-es/Field.js b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-es/Field.js new file mode 100644 index 000000000..19e5cb0a6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-es/Field.js @@ -0,0 +1,26 @@ +import { FieldPosition } from "@smithy/types"; +export class Field { + name; + kind; + values; + constructor({ name, kind = FieldPosition.HEADER, values = [] }) { + this.name = name; + this.kind = kind; + this.values = values; + } + add(value) { + this.values.push(value); + } + set(values) { + this.values = values; + } + remove(value) { + this.values = this.values.filter((v) => v !== value); + } + toString() { + return this.values.map((v) => (v.includes(",") || v.includes(" ") ? `"${v}"` : v)).join(", "); + } + get() { + return this.values; + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-es/Fields.js b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-es/Fields.js new file mode 100644 index 000000000..aa1138840 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-es/Fields.js @@ -0,0 +1,20 @@ +export class Fields { + entries = {}; + encoding; + constructor({ fields = [], encoding = "utf-8" }) { + fields.forEach(this.setField.bind(this)); + this.encoding = encoding; + } + setField(field) { + this.entries[field.name.toLowerCase()] = field; + } + getField(name) { + return this.entries[name.toLowerCase()]; + } + removeField(name) { + delete this.entries[name.toLowerCase()]; + } + getByType(kind) { + return Object.values(this.entries).filter((field) => field.kind === kind); + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-es/extensions/httpExtensionConfiguration.js b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-es/extensions/httpExtensionConfiguration.js new file mode 100644 index 000000000..1a5aa0c90 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-es/extensions/httpExtensionConfiguration.js @@ -0,0 +1,21 @@ +export const getHttpHandlerExtensionConfiguration = (runtimeConfig) => { + return { + setHttpHandler(handler) { + runtimeConfig.httpHandler = handler; + }, + httpHandler() { + return runtimeConfig.httpHandler; + }, + updateHttpClientConfig(key, value) { + runtimeConfig.httpHandler?.updateHttpClientConfig(key, value); + }, + httpHandlerConfigs() { + return runtimeConfig.httpHandler.httpHandlerConfigs(); + }, + }; +}; +export const resolveHttpHandlerRuntimeConfig = (httpHandlerExtensionConfiguration) => { + return { + httpHandler: httpHandlerExtensionConfiguration.httpHandler(), + }; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-es/extensions/index.js b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-es/extensions/index.js new file mode 100644 index 000000000..a215a4a81 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-es/extensions/index.js @@ -0,0 +1 @@ +export * from "./httpExtensionConfiguration"; diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-es/httpHandler.js b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-es/httpHandler.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-es/httpHandler.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-es/httpRequest.js b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-es/httpRequest.js new file mode 100644 index 000000000..6e9b0c45b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-es/httpRequest.js @@ -0,0 +1,64 @@ +export class HttpRequest { + method; + protocol; + hostname; + port; + path; + query; + headers; + username; + password; + fragment; + body; + constructor(options) { + this.method = options.method || "GET"; + this.hostname = options.hostname || "localhost"; + this.port = options.port; + this.query = options.query || {}; + this.headers = options.headers || {}; + this.body = options.body; + this.protocol = options.protocol + ? options.protocol.slice(-1) !== ":" + ? `${options.protocol}:` + : options.protocol + : "https:"; + this.path = options.path ? (options.path.charAt(0) !== "/" ? `/${options.path}` : options.path) : "/"; + this.username = options.username; + this.password = options.password; + this.fragment = options.fragment; + } + static clone(request) { + const cloned = new HttpRequest({ + ...request, + headers: { ...request.headers }, + }); + if (cloned.query) { + cloned.query = cloneQuery(cloned.query); + } + return cloned; + } + static isInstance(request) { + if (!request) { + return false; + } + const req = request; + return ("method" in req && + "protocol" in req && + "hostname" in req && + "path" in req && + typeof req["query"] === "object" && + typeof req["headers"] === "object"); + } + clone() { + return HttpRequest.clone(this); + } +} +function cloneQuery(query) { + return Object.keys(query).reduce((carry, paramName) => { + const param = query[paramName]; + return { + ...carry, + [paramName]: Array.isArray(param) ? [...param] : param, + }; + }, {}); +} diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-es/httpResponse.js b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-es/httpResponse.js new file mode 100644 index 000000000..be4be4e49 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-es/httpResponse.js @@ -0,0 +1,18 @@ +export class HttpResponse { + statusCode; + reason; + headers; + body; + constructor(options) { + this.statusCode = options.statusCode; + this.reason = options.reason; + this.headers = options.headers || {}; + this.body = options.body; + } + static isInstance(response) { + if (!response) + return false; + const resp = response; + return typeof resp.statusCode === "number" && typeof resp.headers === "object"; + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-es/index.js new file mode 100644 index 000000000..8ff7f269a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-es/index.js @@ -0,0 +1,8 @@ +export * from "./extensions"; +export * from "./Field"; +export * from "./Fields"; +export * from "./httpHandler"; +export * from "./httpRequest"; +export * from "./httpResponse"; +export * from "./isValidHostname"; +export * from "./types"; diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-es/isValidHostname.js b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-es/isValidHostname.js new file mode 100644 index 000000000..464c7db58 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-es/isValidHostname.js @@ -0,0 +1,4 @@ +export function isValidHostname(hostname) { + const hostPattern = /^[a-z0-9][a-z0-9\.\-]*[a-z0-9]$/; + return hostPattern.test(hostname); +} diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-es/types.js b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-es/types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-es/types.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/Field.d.ts b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/Field.d.ts new file mode 100644 index 000000000..d104bf728 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/Field.d.ts @@ -0,0 +1,50 @@ +import type { FieldOptions } from "@smithy/types"; +import { FieldPosition } from "@smithy/types"; +/** + * A name-value pair representing a single field + * transmitted in an HTTP Request or Response. + * + * The kind will dictate metadata placement within + * an HTTP message. + * + * All field names are case insensitive and + * case-variance must be treated as equivalent. + * Names MAY be normalized but SHOULD be preserved + * for accuracy during transmission. + */ +export declare class Field { + readonly name: string; + readonly kind: FieldPosition; + values: string[]; + constructor({ name, kind, values }: FieldOptions); + /** + * Appends a value to the field. + * + * @param value The value to append. + */ + add(value: string): void; + /** + * Overwrite existing field values. + * + * @param values The new field values. + */ + set(values: string[]): void; + /** + * Remove all matching entries from list. + * + * @param value Value to remove. + */ + remove(value: string): void; + /** + * Get comma-delimited string. + * + * @returns String representation of {@link Field}. + */ + toString(): string; + /** + * Get string values as a list + * + * @returns Values in {@link Field} as a list. + */ + get(): string[]; +} diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/Fields.d.ts b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/Fields.d.ts new file mode 100644 index 000000000..da74a67e6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/Fields.d.ts @@ -0,0 +1,44 @@ +import type { FieldPosition } from "@smithy/types"; +import type { Field } from "./Field"; +export type FieldsOptions = { + fields?: Field[]; + encoding?: string; +}; +/** + * Collection of Field entries mapped by name. + */ +export declare class Fields { + private readonly entries; + private readonly encoding; + constructor({ fields, encoding }: FieldsOptions); + /** + * Set entry for a {@link Field} name. The `name` + * attribute will be used to key the collection. + * + * @param field The {@link Field} to set. + */ + setField(field: Field): void; + /** + * Retrieve {@link Field} entry by name. + * + * @param name The name of the {@link Field} entry + * to retrieve + * @returns The {@link Field} if it exists. + */ + getField(name: string): Field | undefined; + /** + * Delete entry from collection. + * + * @param name Name of the entry to delete. + */ + removeField(name: string): void; + /** + * Helper function for retrieving specific types of fields. + * Used to grab all headers or all trailers. + * + * @param kind {@link FieldPosition} of entries to retrieve. + * @returns The {@link Field} entries with the specified + * {@link FieldPosition}. + */ + getByType(kind: FieldPosition): Field[]; +} diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/extensions/httpExtensionConfiguration.d.ts b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/extensions/httpExtensionConfiguration.d.ts new file mode 100644 index 000000000..891458790 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/extensions/httpExtensionConfiguration.d.ts @@ -0,0 +1,33 @@ +import type { HttpHandler } from "../httpHandler"; +/** + * @internal + */ +export interface HttpHandlerExtensionConfiguration { + setHttpHandler(handler: HttpHandler): void; + httpHandler(): HttpHandler; + updateHttpClientConfig(key: keyof HandlerConfig, value: HandlerConfig[typeof key]): void; + httpHandlerConfigs(): HandlerConfig; +} +/** + * @internal + */ +export type HttpHandlerExtensionConfigType = Partial<{ + httpHandler: HttpHandler; +}>; +/** + * @internal + * + * Helper function to resolve default extension configuration from runtime config + */ +export declare const getHttpHandlerExtensionConfiguration: (runtimeConfig: HttpHandlerExtensionConfigType) => { + setHttpHandler(handler: HttpHandler): void; + httpHandler(): HttpHandler; + updateHttpClientConfig(key: keyof HandlerConfig, value: HandlerConfig[typeof key]): void; + httpHandlerConfigs(): HandlerConfig; +}; +/** + * @internal + * + * Helper function to resolve runtime config from default extension configuration + */ +export declare const resolveHttpHandlerRuntimeConfig: (httpHandlerExtensionConfiguration: HttpHandlerExtensionConfiguration) => HttpHandlerExtensionConfigType; diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/extensions/index.d.ts b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/extensions/index.d.ts new file mode 100644 index 000000000..a215a4a81 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/extensions/index.d.ts @@ -0,0 +1 @@ +export * from "./httpExtensionConfiguration"; diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/httpHandler.d.ts b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/httpHandler.d.ts new file mode 100644 index 000000000..8dc8d32b0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/httpHandler.d.ts @@ -0,0 +1,35 @@ +import type { FetchHttpHandlerOptions, HttpHandlerOptions, NodeHttpHandlerOptions, RequestHandler } from "@smithy/types"; +import type { HttpRequest } from "./httpRequest"; +import type { HttpResponse } from "./httpResponse"; +/** + * @internal + */ +export type HttpHandler = RequestHandler & { + /** + * @internal + */ + updateHttpClientConfig(key: keyof HttpHandlerConfig, value: HttpHandlerConfig[typeof key]): void; + /** + * @internal + */ + httpHandlerConfigs(): HttpHandlerConfig; +}; +/** + * @public + * + * A type representing the accepted user inputs for the `requestHandler` field + * of a client's constructor object. + * + * You may provide an instance of an HttpHandler, or alternatively + * provide the constructor arguments as an object which will be passed + * to the constructor of the default request handler. + * + * The default class constructor to which your arguments will be passed + * varies. The Node.js default is the NodeHttpHandler and the browser/react-native + * default is the FetchHttpHandler. In rarer cases specific clients may be + * configured to use other default implementations such as Websocket or HTTP2. + * + * The fallback type Record is part of the union to allow + * passing constructor params to an unknown requestHandler type. + */ +export type HttpHandlerUserInput = HttpHandler | NodeHttpHandlerOptions | FetchHttpHandlerOptions | Record; diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/httpRequest.d.ts b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/httpRequest.d.ts new file mode 100644 index 000000000..00b46a429 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/httpRequest.d.ts @@ -0,0 +1,56 @@ +import type { HeaderBag, HttpMessage, QueryParameterBag, URI } from "@smithy/types"; +import { HttpRequest as IHttpRequest } from "@smithy/types"; +type HttpRequestOptions = Partial & Partial & { + method?: string; +}; +/** + * Use the distinct IHttpRequest interface from \@smithy/types instead. + * This should not be used due to + * overlapping with the concrete class' name. + * + * This is not marked deprecated since that would mark the concrete class + * deprecated as well. + * + * @internal + */ +export interface HttpRequest extends IHttpRequest { +} +/** + * @public + */ +export { IHttpRequest }; +/** + * @public + */ +export declare class HttpRequest implements HttpMessage, URI { + method: string; + protocol: string; + hostname: string; + port?: number; + path: string; + query: QueryParameterBag; + headers: HeaderBag; + username?: string; + password?: string; + fragment?: string; + body?: any; + constructor(options: HttpRequestOptions); + /** + * Note: this does not deep-clone the body. + */ + static clone(request: IHttpRequest): HttpRequest; + /** + * This method only actually asserts that request is the interface {@link IHttpRequest}, + * and not necessarily this concrete class. Left in place for API stability. + * + * Do not call instance methods on the input of this function, and + * do not assume it has the HttpRequest prototype. + */ + static isInstance(request: unknown): request is HttpRequest; + /** + * @deprecated use static HttpRequest.clone(request) instead. It's not safe to call + * this method because {@link HttpRequest.isInstance} incorrectly + * asserts that IHttpRequest (interface) objects are of type HttpRequest (class). + */ + clone(): HttpRequest; +} diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/httpResponse.d.ts b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/httpResponse.d.ts new file mode 100644 index 000000000..f03e49e73 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/httpResponse.d.ts @@ -0,0 +1,29 @@ +import type { HeaderBag, HttpMessage, HttpResponse as IHttpResponse } from "@smithy/types"; +type HttpResponseOptions = Partial & { + statusCode: number; + reason?: string; +}; +/** + * Use the distinct IHttpResponse interface from \@smithy/types instead. + * This should not be used due to + * overlapping with the concrete class' name. + * + * This is not marked deprecated since that would mark the concrete class + * deprecated as well. + * + * @internal + */ +export interface HttpResponse extends IHttpResponse { +} +/** + * @public + */ +export declare class HttpResponse { + statusCode: number; + reason?: string; + headers: HeaderBag; + body?: any; + constructor(options: HttpResponseOptions); + static isInstance(response: unknown): response is HttpResponse; +} +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/index.d.ts new file mode 100644 index 000000000..8ff7f269a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/index.d.ts @@ -0,0 +1,8 @@ +export * from "./extensions"; +export * from "./Field"; +export * from "./Fields"; +export * from "./httpHandler"; +export * from "./httpRequest"; +export * from "./httpResponse"; +export * from "./isValidHostname"; +export * from "./types"; diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/isValidHostname.d.ts b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/isValidHostname.d.ts new file mode 100644 index 000000000..6fb5bcb33 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/isValidHostname.d.ts @@ -0,0 +1 @@ +export declare function isValidHostname(hostname: string): boolean; diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/ts3.4/Field.d.ts b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/ts3.4/Field.d.ts new file mode 100644 index 000000000..35b624ff6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/ts3.4/Field.d.ts @@ -0,0 +1,50 @@ +import { FieldOptions } from "@smithy/types"; +import { FieldPosition } from "@smithy/types"; +/** + * A name-value pair representing a single field + * transmitted in an HTTP Request or Response. + * + * The kind will dictate metadata placement within + * an HTTP message. + * + * All field names are case insensitive and + * case-variance must be treated as equivalent. + * Names MAY be normalized but SHOULD be preserved + * for accuracy during transmission. + */ +export declare class Field { + readonly name: string; + readonly kind: FieldPosition; + values: string[]; + constructor({ name, kind, values }: FieldOptions); + /** + * Appends a value to the field. + * + * @param value The value to append. + */ + add(value: string): void; + /** + * Overwrite existing field values. + * + * @param values The new field values. + */ + set(values: string[]): void; + /** + * Remove all matching entries from list. + * + * @param value Value to remove. + */ + remove(value: string): void; + /** + * Get comma-delimited string. + * + * @returns String representation of {@link Field}. + */ + toString(): string; + /** + * Get string values as a list + * + * @returns Values in {@link Field} as a list. + */ + get(): string[]; +} diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/ts3.4/Fields.d.ts b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/ts3.4/Fields.d.ts new file mode 100644 index 000000000..8915826d4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/ts3.4/Fields.d.ts @@ -0,0 +1,44 @@ +import { FieldPosition } from "@smithy/types"; +import { Field } from "./Field"; +export type FieldsOptions = { + fields?: Field[]; + encoding?: string; +}; +/** + * Collection of Field entries mapped by name. + */ +export declare class Fields { + private readonly entries; + private readonly encoding; + constructor({ fields, encoding }: FieldsOptions); + /** + * Set entry for a {@link Field} name. The `name` + * attribute will be used to key the collection. + * + * @param field The {@link Field} to set. + */ + setField(field: Field): void; + /** + * Retrieve {@link Field} entry by name. + * + * @param name The name of the {@link Field} entry + * to retrieve + * @returns The {@link Field} if it exists. + */ + getField(name: string): Field | undefined; + /** + * Delete entry from collection. + * + * @param name Name of the entry to delete. + */ + removeField(name: string): void; + /** + * Helper function for retrieving specific types of fields. + * Used to grab all headers or all trailers. + * + * @param kind {@link FieldPosition} of entries to retrieve. + * @returns The {@link Field} entries with the specified + * {@link FieldPosition}. + */ + getByType(kind: FieldPosition): Field[]; +} diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/ts3.4/extensions/httpExtensionConfiguration.d.ts b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/ts3.4/extensions/httpExtensionConfiguration.d.ts new file mode 100644 index 000000000..ec7fc277d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/ts3.4/extensions/httpExtensionConfiguration.d.ts @@ -0,0 +1,33 @@ +import { HttpHandler } from "../httpHandler"; +/** + * @internal + */ +export interface HttpHandlerExtensionConfiguration { + setHttpHandler(handler: HttpHandler): void; + httpHandler(): HttpHandler; + updateHttpClientConfig(key: keyof HandlerConfig, value: HandlerConfig[typeof key]): void; + httpHandlerConfigs(): HandlerConfig; +} +/** + * @internal + */ +export type HttpHandlerExtensionConfigType = Partial<{ + httpHandler: HttpHandler; +}>; +/** + * @internal + * + * Helper function to resolve default extension configuration from runtime config + */ +export declare const getHttpHandlerExtensionConfiguration: (runtimeConfig: HttpHandlerExtensionConfigType) => { + setHttpHandler(handler: HttpHandler): void; + httpHandler(): HttpHandler; + updateHttpClientConfig(key: keyof HandlerConfig, value: HandlerConfig[typeof key]): void; + httpHandlerConfigs(): HandlerConfig; +}; +/** + * @internal + * + * Helper function to resolve runtime config from default extension configuration + */ +export declare const resolveHttpHandlerRuntimeConfig: (httpHandlerExtensionConfiguration: HttpHandlerExtensionConfiguration) => HttpHandlerExtensionConfigType; diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/ts3.4/extensions/index.d.ts b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/ts3.4/extensions/index.d.ts new file mode 100644 index 000000000..a215a4a81 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/ts3.4/extensions/index.d.ts @@ -0,0 +1 @@ +export * from "./httpExtensionConfiguration"; diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/ts3.4/httpHandler.d.ts b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/ts3.4/httpHandler.d.ts new file mode 100644 index 000000000..54852c6d2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/ts3.4/httpHandler.d.ts @@ -0,0 +1,35 @@ +import { FetchHttpHandlerOptions, HttpHandlerOptions, NodeHttpHandlerOptions, RequestHandler } from "@smithy/types"; +import { HttpRequest } from "./httpRequest"; +import { HttpResponse } from "./httpResponse"; +/** + * @internal + */ +export type HttpHandler = RequestHandler & { + /** + * @internal + */ + updateHttpClientConfig(key: keyof HttpHandlerConfig, value: HttpHandlerConfig[typeof key]): void; + /** + * @internal + */ + httpHandlerConfigs(): HttpHandlerConfig; +}; +/** + * @public + * + * A type representing the accepted user inputs for the `requestHandler` field + * of a client's constructor object. + * + * You may provide an instance of an HttpHandler, or alternatively + * provide the constructor arguments as an object which will be passed + * to the constructor of the default request handler. + * + * The default class constructor to which your arguments will be passed + * varies. The Node.js default is the NodeHttpHandler and the browser/react-native + * default is the FetchHttpHandler. In rarer cases specific clients may be + * configured to use other default implementations such as Websocket or HTTP2. + * + * The fallback type Record is part of the union to allow + * passing constructor params to an unknown requestHandler type. + */ +export type HttpHandlerUserInput = HttpHandler | NodeHttpHandlerOptions | FetchHttpHandlerOptions | Record; diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/ts3.4/httpRequest.d.ts b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/ts3.4/httpRequest.d.ts new file mode 100644 index 000000000..49e767628 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/ts3.4/httpRequest.d.ts @@ -0,0 +1,56 @@ +import { HeaderBag, HttpMessage, QueryParameterBag, URI } from "@smithy/types"; +import { HttpRequest as IHttpRequest } from "@smithy/types"; +type HttpRequestOptions = Partial & Partial & { + method?: string; +}; +/** + * Use the distinct IHttpRequest interface from \@smithy/types instead. + * This should not be used due to + * overlapping with the concrete class' name. + * + * This is not marked deprecated since that would mark the concrete class + * deprecated as well. + * + * @internal + */ +export interface HttpRequest extends IHttpRequest { +} +/** + * @public + */ +export { IHttpRequest }; +/** + * @public + */ +export declare class HttpRequest implements HttpMessage, URI { + method: string; + protocol: string; + hostname: string; + port?: number; + path: string; + query: QueryParameterBag; + headers: HeaderBag; + username?: string; + password?: string; + fragment?: string; + body?: any; + constructor(options: HttpRequestOptions); + /** + * Note: this does not deep-clone the body. + */ + static clone(request: IHttpRequest): HttpRequest; + /** + * This method only actually asserts that request is the interface {@link IHttpRequest}, + * and not necessarily this concrete class. Left in place for API stability. + * + * Do not call instance methods on the input of this function, and + * do not assume it has the HttpRequest prototype. + */ + static isInstance(request: unknown): request is HttpRequest; + /** + * @deprecated use static HttpRequest.clone(request) instead. It's not safe to call + * this method because {@link HttpRequest.isInstance} incorrectly + * asserts that IHttpRequest (interface) objects are of type HttpRequest (class). + */ + clone(): HttpRequest; +} diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/ts3.4/httpResponse.d.ts b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/ts3.4/httpResponse.d.ts new file mode 100644 index 000000000..e51f18b90 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/ts3.4/httpResponse.d.ts @@ -0,0 +1,29 @@ +import { HeaderBag, HttpMessage, HttpResponse as IHttpResponse } from "@smithy/types"; +type HttpResponseOptions = Partial & { + statusCode: number; + reason?: string; +}; +/** + * Use the distinct IHttpResponse interface from \@smithy/types instead. + * This should not be used due to + * overlapping with the concrete class' name. + * + * This is not marked deprecated since that would mark the concrete class + * deprecated as well. + * + * @internal + */ +export interface HttpResponse extends IHttpResponse { +} +/** + * @public + */ +export declare class HttpResponse { + statusCode: number; + reason?: string; + headers: HeaderBag; + body?: any; + constructor(options: HttpResponseOptions); + static isInstance(response: unknown): response is HttpResponse; +} +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..8ff7f269a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/ts3.4/index.d.ts @@ -0,0 +1,8 @@ +export * from "./extensions"; +export * from "./Field"; +export * from "./Fields"; +export * from "./httpHandler"; +export * from "./httpRequest"; +export * from "./httpResponse"; +export * from "./isValidHostname"; +export * from "./types"; diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/ts3.4/isValidHostname.d.ts b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/ts3.4/isValidHostname.d.ts new file mode 100644 index 000000000..6fb5bcb33 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/ts3.4/isValidHostname.d.ts @@ -0,0 +1 @@ +export declare function isValidHostname(hostname: string): boolean; diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/ts3.4/types.d.ts b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/ts3.4/types.d.ts new file mode 100644 index 000000000..0d597b9c6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/ts3.4/types.d.ts @@ -0,0 +1,21 @@ +import { FieldOptions as __FieldOptions, FieldPosition as __FieldPosition, HeaderBag as __HeaderBag, HttpHandlerOptions as __HttpHandlerOptions, HttpMessage as __HttpMessage } from "@smithy/types"; +/** + * @deprecated Use FieldOptions from `@smithy/types` instead + */ +export type FieldOptions = __FieldOptions; +/** + * @deprecated Use FieldPosition from `@smithy/types` instead + */ +export type FieldPosition = __FieldPosition; +/** + * @deprecated Use HeaderBag from `@smithy/types` instead + */ +export type HeaderBag = __HeaderBag; +/** + * @deprecated Use HttpMessage from `@smithy/types` instead + */ +export type HttpMessage = __HttpMessage; +/** + * @deprecated Use HttpHandlerOptions from `@smithy/types` instead + */ +export type HttpHandlerOptions = __HttpHandlerOptions; diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/types.d.ts b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/types.d.ts new file mode 100644 index 000000000..d5669cb8b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/dist-types/types.d.ts @@ -0,0 +1,21 @@ +import type { FieldOptions as __FieldOptions, FieldPosition as __FieldPosition, HeaderBag as __HeaderBag, HttpHandlerOptions as __HttpHandlerOptions, HttpMessage as __HttpMessage } from "@smithy/types"; +/** + * @deprecated Use FieldOptions from `@smithy/types` instead + */ +export type FieldOptions = __FieldOptions; +/** + * @deprecated Use FieldPosition from `@smithy/types` instead + */ +export type FieldPosition = __FieldPosition; +/** + * @deprecated Use HeaderBag from `@smithy/types` instead + */ +export type HeaderBag = __HeaderBag; +/** + * @deprecated Use HttpMessage from `@smithy/types` instead + */ +export type HttpMessage = __HttpMessage; +/** + * @deprecated Use HttpHandlerOptions from `@smithy/types` instead + */ +export type HttpHandlerOptions = __HttpHandlerOptions; diff --git a/food-ordering-app/server/node_modules/@smithy/protocol-http/package.json b/food-ordering-app/server/node_modules/@smithy/protocol-http/package.json new file mode 100644 index 000000000..c0988aa68 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/protocol-http/package.json @@ -0,0 +1,62 @@ +{ + "name": "@smithy/protocol-http", + "version": "5.3.12", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline protocol-http", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS Smithy Team", + "email": "", + "url": "https://smithy.io" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/protocol-http", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/protocol-http" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/querystring-builder/LICENSE b/food-ordering-app/server/node_modules/@smithy/querystring-builder/LICENSE new file mode 100644 index 000000000..dd65ae06b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/querystring-builder/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/food-ordering-app/server/node_modules/@smithy/querystring-builder/README.md b/food-ordering-app/server/node_modules/@smithy/querystring-builder/README.md new file mode 100644 index 000000000..00275dadf --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/querystring-builder/README.md @@ -0,0 +1,10 @@ +# @smithy/querystring-builder + +[![NPM version](https://img.shields.io/npm/v/@smithy/querystring-builder/latest.svg)](https://www.npmjs.com/package/@smithy/querystring-builder) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/querystring-builder.svg)](https://www.npmjs.com/package/@smithy/querystring-builder) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/food-ordering-app/server/node_modules/@smithy/querystring-builder/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/querystring-builder/dist-cjs/index.js new file mode 100644 index 000000000..f245489f9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/querystring-builder/dist-cjs/index.js @@ -0,0 +1,26 @@ +'use strict'; + +var utilUriEscape = require('@smithy/util-uri-escape'); + +function buildQueryString(query) { + const parts = []; + for (let key of Object.keys(query).sort()) { + const value = query[key]; + key = utilUriEscape.escapeUri(key); + if (Array.isArray(value)) { + for (let i = 0, iLen = value.length; i < iLen; i++) { + parts.push(`${key}=${utilUriEscape.escapeUri(value[i])}`); + } + } + else { + let qsEntry = key; + if (value || typeof value === "string") { + qsEntry += `=${utilUriEscape.escapeUri(value)}`; + } + parts.push(qsEntry); + } + } + return parts.join("&"); +} + +exports.buildQueryString = buildQueryString; diff --git a/food-ordering-app/server/node_modules/@smithy/querystring-builder/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/querystring-builder/dist-es/index.js new file mode 100644 index 000000000..fbc76840a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/querystring-builder/dist-es/index.js @@ -0,0 +1,21 @@ +import { escapeUri } from "@smithy/util-uri-escape"; +export function buildQueryString(query) { + const parts = []; + for (let key of Object.keys(query).sort()) { + const value = query[key]; + key = escapeUri(key); + if (Array.isArray(value)) { + for (let i = 0, iLen = value.length; i < iLen; i++) { + parts.push(`${key}=${escapeUri(value[i])}`); + } + } + else { + let qsEntry = key; + if (value || typeof value === "string") { + qsEntry += `=${escapeUri(value)}`; + } + parts.push(qsEntry); + } + } + return parts.join("&"); +} diff --git a/food-ordering-app/server/node_modules/@smithy/querystring-builder/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/querystring-builder/dist-types/index.d.ts new file mode 100644 index 000000000..2e3b4a461 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/querystring-builder/dist-types/index.d.ts @@ -0,0 +1,5 @@ +import type { QueryParameterBag } from "@smithy/types"; +/** + * @internal + */ +export declare function buildQueryString(query: QueryParameterBag): string; diff --git a/food-ordering-app/server/node_modules/@smithy/querystring-builder/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/querystring-builder/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..538b1b0eb --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/querystring-builder/dist-types/ts3.4/index.d.ts @@ -0,0 +1,5 @@ +import { QueryParameterBag } from "@smithy/types"; +/** + * @internal + */ +export declare function buildQueryString(query: QueryParameterBag): string; diff --git a/food-ordering-app/server/node_modules/@smithy/querystring-builder/package.json b/food-ordering-app/server/node_modules/@smithy/querystring-builder/package.json new file mode 100644 index 000000000..bf7282d82 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/querystring-builder/package.json @@ -0,0 +1,61 @@ +{ + "name": "@smithy/querystring-builder", + "version": "4.2.12", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline querystring-builder", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "exit 0" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/types": "^4.13.1", + "@smithy/util-uri-escape": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/querystring-builder", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/querystring-builder" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/querystring-parser/LICENSE b/food-ordering-app/server/node_modules/@smithy/querystring-parser/LICENSE new file mode 100644 index 000000000..dd65ae06b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/querystring-parser/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/food-ordering-app/server/node_modules/@smithy/querystring-parser/README.md b/food-ordering-app/server/node_modules/@smithy/querystring-parser/README.md new file mode 100644 index 000000000..02dcf51d9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/querystring-parser/README.md @@ -0,0 +1,10 @@ +# @smithy/querystring-parser + +[![NPM version](https://img.shields.io/npm/v/@smithy/querystring-parser/latest.svg)](https://www.npmjs.com/package/@smithy/querystring-parser) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/querystring-parser.svg)](https://www.npmjs.com/package/@smithy/querystring-parser) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/food-ordering-app/server/node_modules/@smithy/querystring-parser/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/querystring-parser/dist-cjs/index.js new file mode 100644 index 000000000..d1efbf7a1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/querystring-parser/dist-cjs/index.js @@ -0,0 +1,27 @@ +'use strict'; + +function parseQueryString(querystring) { + const query = {}; + querystring = querystring.replace(/^\?/, ""); + if (querystring) { + for (const pair of querystring.split("&")) { + let [key, value = null] = pair.split("="); + key = decodeURIComponent(key); + if (value) { + value = decodeURIComponent(value); + } + if (!(key in query)) { + query[key] = value; + } + else if (Array.isArray(query[key])) { + query[key].push(value); + } + else { + query[key] = [query[key], value]; + } + } + } + return query; +} + +exports.parseQueryString = parseQueryString; diff --git a/food-ordering-app/server/node_modules/@smithy/querystring-parser/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/querystring-parser/dist-es/index.js new file mode 100644 index 000000000..bd7bf004b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/querystring-parser/dist-es/index.js @@ -0,0 +1,23 @@ +export function parseQueryString(querystring) { + const query = {}; + querystring = querystring.replace(/^\?/, ""); + if (querystring) { + for (const pair of querystring.split("&")) { + let [key, value = null] = pair.split("="); + key = decodeURIComponent(key); + if (value) { + value = decodeURIComponent(value); + } + if (!(key in query)) { + query[key] = value; + } + else if (Array.isArray(query[key])) { + query[key].push(value); + } + else { + query[key] = [query[key], value]; + } + } + } + return query; +} diff --git a/food-ordering-app/server/node_modules/@smithy/querystring-parser/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/querystring-parser/dist-types/index.d.ts new file mode 100644 index 000000000..6d31bac31 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/querystring-parser/dist-types/index.d.ts @@ -0,0 +1,5 @@ +import type { QueryParameterBag } from "@smithy/types"; +/** + * @internal + */ +export declare function parseQueryString(querystring: string): QueryParameterBag; diff --git a/food-ordering-app/server/node_modules/@smithy/querystring-parser/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/querystring-parser/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..fdc1ba595 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/querystring-parser/dist-types/ts3.4/index.d.ts @@ -0,0 +1,5 @@ +import { QueryParameterBag } from "@smithy/types"; +/** + * @internal + */ +export declare function parseQueryString(querystring: string): QueryParameterBag; diff --git a/food-ordering-app/server/node_modules/@smithy/querystring-parser/package.json b/food-ordering-app/server/node_modules/@smithy/querystring-parser/package.json new file mode 100644 index 000000000..8ac7edea2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/querystring-parser/package.json @@ -0,0 +1,61 @@ +{ + "name": "@smithy/querystring-parser", + "version": "4.2.12", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline querystring-parser", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/querystring-parser", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/querystring-parser" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/service-error-classification/LICENSE b/food-ordering-app/server/node_modules/@smithy/service-error-classification/LICENSE new file mode 100644 index 000000000..dd65ae06b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/service-error-classification/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/food-ordering-app/server/node_modules/@smithy/service-error-classification/README.md b/food-ordering-app/server/node_modules/@smithy/service-error-classification/README.md new file mode 100644 index 000000000..902dd4329 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/service-error-classification/README.md @@ -0,0 +1,4 @@ +# @smithy/service-error-classification + +[![NPM version](https://img.shields.io/npm/v/@smithy/service-error-classification/latest.svg)](https://www.npmjs.com/package/@smithy/service-error-classification) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/service-error-classification.svg)](https://www.npmjs.com/package/@smithy/service-error-classification) diff --git a/food-ordering-app/server/node_modules/@smithy/service-error-classification/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/service-error-classification/dist-cjs/index.js new file mode 100644 index 000000000..03f202308 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/service-error-classification/dist-cjs/index.js @@ -0,0 +1,77 @@ +'use strict'; + +const CLOCK_SKEW_ERROR_CODES = [ + "AuthFailure", + "InvalidSignatureException", + "RequestExpired", + "RequestInTheFuture", + "RequestTimeTooSkewed", + "SignatureDoesNotMatch", +]; +const THROTTLING_ERROR_CODES = [ + "BandwidthLimitExceeded", + "EC2ThrottledException", + "LimitExceededException", + "PriorRequestNotComplete", + "ProvisionedThroughputExceededException", + "RequestLimitExceeded", + "RequestThrottled", + "RequestThrottledException", + "SlowDown", + "ThrottledException", + "Throttling", + "ThrottlingException", + "TooManyRequestsException", + "TransactionInProgressException", +]; +const TRANSIENT_ERROR_CODES = ["TimeoutError", "RequestTimeout", "RequestTimeoutException"]; +const TRANSIENT_ERROR_STATUS_CODES = [500, 502, 503, 504]; +const NODEJS_TIMEOUT_ERROR_CODES = ["ECONNRESET", "ECONNREFUSED", "EPIPE", "ETIMEDOUT"]; +const NODEJS_NETWORK_ERROR_CODES = ["EHOSTUNREACH", "ENETUNREACH", "ENOTFOUND"]; + +const isRetryableByTrait = (error) => error?.$retryable !== undefined; +const isClockSkewError = (error) => CLOCK_SKEW_ERROR_CODES.includes(error.name); +const isClockSkewCorrectedError = (error) => error.$metadata?.clockSkewCorrected; +const isBrowserNetworkError = (error) => { + const errorMessages = new Set([ + "Failed to fetch", + "NetworkError when attempting to fetch resource", + "The Internet connection appears to be offline", + "Load failed", + "Network request failed", + ]); + const isValid = error && error instanceof TypeError; + if (!isValid) { + return false; + } + return errorMessages.has(error.message); +}; +const isThrottlingError = (error) => error.$metadata?.httpStatusCode === 429 || + THROTTLING_ERROR_CODES.includes(error.name) || + error.$retryable?.throttling == true; +const isTransientError = (error, depth = 0) => isRetryableByTrait(error) || + isClockSkewCorrectedError(error) || + TRANSIENT_ERROR_CODES.includes(error.name) || + NODEJS_TIMEOUT_ERROR_CODES.includes(error?.code || "") || + NODEJS_NETWORK_ERROR_CODES.includes(error?.code || "") || + TRANSIENT_ERROR_STATUS_CODES.includes(error.$metadata?.httpStatusCode || 0) || + isBrowserNetworkError(error) || + (error.cause !== undefined && depth <= 10 && isTransientError(error.cause, depth + 1)); +const isServerError = (error) => { + if (error.$metadata?.httpStatusCode !== undefined) { + const statusCode = error.$metadata.httpStatusCode; + if (500 <= statusCode && statusCode <= 599 && !isTransientError(error)) { + return true; + } + return false; + } + return false; +}; + +exports.isBrowserNetworkError = isBrowserNetworkError; +exports.isClockSkewCorrectedError = isClockSkewCorrectedError; +exports.isClockSkewError = isClockSkewError; +exports.isRetryableByTrait = isRetryableByTrait; +exports.isServerError = isServerError; +exports.isThrottlingError = isThrottlingError; +exports.isTransientError = isTransientError; diff --git a/food-ordering-app/server/node_modules/@smithy/service-error-classification/dist-es/constants.js b/food-ordering-app/server/node_modules/@smithy/service-error-classification/dist-es/constants.js new file mode 100644 index 000000000..7a4b7e375 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/service-error-classification/dist-es/constants.js @@ -0,0 +1,28 @@ +export const CLOCK_SKEW_ERROR_CODES = [ + "AuthFailure", + "InvalidSignatureException", + "RequestExpired", + "RequestInTheFuture", + "RequestTimeTooSkewed", + "SignatureDoesNotMatch", +]; +export const THROTTLING_ERROR_CODES = [ + "BandwidthLimitExceeded", + "EC2ThrottledException", + "LimitExceededException", + "PriorRequestNotComplete", + "ProvisionedThroughputExceededException", + "RequestLimitExceeded", + "RequestThrottled", + "RequestThrottledException", + "SlowDown", + "ThrottledException", + "Throttling", + "ThrottlingException", + "TooManyRequestsException", + "TransactionInProgressException", +]; +export const TRANSIENT_ERROR_CODES = ["TimeoutError", "RequestTimeout", "RequestTimeoutException"]; +export const TRANSIENT_ERROR_STATUS_CODES = [500, 502, 503, 504]; +export const NODEJS_TIMEOUT_ERROR_CODES = ["ECONNRESET", "ECONNREFUSED", "EPIPE", "ETIMEDOUT"]; +export const NODEJS_NETWORK_ERROR_CODES = ["EHOSTUNREACH", "ENETUNREACH", "ENOTFOUND"]; diff --git a/food-ordering-app/server/node_modules/@smithy/service-error-classification/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/service-error-classification/dist-es/index.js new file mode 100644 index 000000000..8612c7342 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/service-error-classification/dist-es/index.js @@ -0,0 +1,39 @@ +import { CLOCK_SKEW_ERROR_CODES, NODEJS_NETWORK_ERROR_CODES, NODEJS_TIMEOUT_ERROR_CODES, THROTTLING_ERROR_CODES, TRANSIENT_ERROR_CODES, TRANSIENT_ERROR_STATUS_CODES, } from "./constants"; +export const isRetryableByTrait = (error) => error?.$retryable !== undefined; +export const isClockSkewError = (error) => CLOCK_SKEW_ERROR_CODES.includes(error.name); +export const isClockSkewCorrectedError = (error) => error.$metadata?.clockSkewCorrected; +export const isBrowserNetworkError = (error) => { + const errorMessages = new Set([ + "Failed to fetch", + "NetworkError when attempting to fetch resource", + "The Internet connection appears to be offline", + "Load failed", + "Network request failed", + ]); + const isValid = error && error instanceof TypeError; + if (!isValid) { + return false; + } + return errorMessages.has(error.message); +}; +export const isThrottlingError = (error) => error.$metadata?.httpStatusCode === 429 || + THROTTLING_ERROR_CODES.includes(error.name) || + error.$retryable?.throttling == true; +export const isTransientError = (error, depth = 0) => isRetryableByTrait(error) || + isClockSkewCorrectedError(error) || + TRANSIENT_ERROR_CODES.includes(error.name) || + NODEJS_TIMEOUT_ERROR_CODES.includes(error?.code || "") || + NODEJS_NETWORK_ERROR_CODES.includes(error?.code || "") || + TRANSIENT_ERROR_STATUS_CODES.includes(error.$metadata?.httpStatusCode || 0) || + isBrowserNetworkError(error) || + (error.cause !== undefined && depth <= 10 && isTransientError(error.cause, depth + 1)); +export const isServerError = (error) => { + if (error.$metadata?.httpStatusCode !== undefined) { + const statusCode = error.$metadata.httpStatusCode; + if (500 <= statusCode && statusCode <= 599 && !isTransientError(error)) { + return true; + } + return false; + } + return false; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/service-error-classification/dist-types/constants.d.ts b/food-ordering-app/server/node_modules/@smithy/service-error-classification/dist-types/constants.d.ts new file mode 100644 index 000000000..fb6912915 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/service-error-classification/dist-types/constants.d.ts @@ -0,0 +1,30 @@ +/** + * Errors encountered when the client clock and server clock cannot agree on the + * current time. + * + * These errors are retryable, assuming the SDK has enabled clock skew + * correction. + */ +export declare const CLOCK_SKEW_ERROR_CODES: string[]; +/** + * Errors that indicate the SDK is being throttled. + * + * These errors are always retryable. + */ +export declare const THROTTLING_ERROR_CODES: string[]; +/** + * Error codes that indicate transient issues + */ +export declare const TRANSIENT_ERROR_CODES: string[]; +/** + * Error codes that indicate transient issues + */ +export declare const TRANSIENT_ERROR_STATUS_CODES: number[]; +/** + * Node.js system error codes that indicate timeout. + */ +export declare const NODEJS_TIMEOUT_ERROR_CODES: string[]; +/** + * Node.js system error codes that indicate network error. + */ +export declare const NODEJS_NETWORK_ERROR_CODES: string[]; diff --git a/food-ordering-app/server/node_modules/@smithy/service-error-classification/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/service-error-classification/dist-types/index.d.ts new file mode 100644 index 000000000..2245dd797 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/service-error-classification/dist-types/index.d.ts @@ -0,0 +1,24 @@ +import type { SdkError } from "@smithy/types"; +export declare const isRetryableByTrait: (error: SdkError) => boolean; +/** + * @deprecated use isClockSkewCorrectedError. This is only used in deprecated code. + */ +export declare const isClockSkewError: (error: SdkError) => boolean; +/** + * @returns whether the error resulted in a systemClockOffset aka clock skew correction. + */ +export declare const isClockSkewCorrectedError: (error: SdkError) => true | undefined; +/** + * + * @internal + */ +export declare const isBrowserNetworkError: (error: SdkError) => boolean; +export declare const isThrottlingError: (error: SdkError) => boolean; +/** + * Though NODEJS_TIMEOUT_ERROR_CODES are platform specific, they are + * included here because there is an error scenario with unknown root + * cause where the NodeHttpHandler does not decorate the Error with + * the name "TimeoutError" to be checked by the TRANSIENT_ERROR_CODES condition. + */ +export declare const isTransientError: (error: SdkError, depth?: number) => boolean; +export declare const isServerError: (error: SdkError) => boolean; diff --git a/food-ordering-app/server/node_modules/@smithy/service-error-classification/dist-types/ts3.4/constants.d.ts b/food-ordering-app/server/node_modules/@smithy/service-error-classification/dist-types/ts3.4/constants.d.ts new file mode 100644 index 000000000..fb6912915 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/service-error-classification/dist-types/ts3.4/constants.d.ts @@ -0,0 +1,30 @@ +/** + * Errors encountered when the client clock and server clock cannot agree on the + * current time. + * + * These errors are retryable, assuming the SDK has enabled clock skew + * correction. + */ +export declare const CLOCK_SKEW_ERROR_CODES: string[]; +/** + * Errors that indicate the SDK is being throttled. + * + * These errors are always retryable. + */ +export declare const THROTTLING_ERROR_CODES: string[]; +/** + * Error codes that indicate transient issues + */ +export declare const TRANSIENT_ERROR_CODES: string[]; +/** + * Error codes that indicate transient issues + */ +export declare const TRANSIENT_ERROR_STATUS_CODES: number[]; +/** + * Node.js system error codes that indicate timeout. + */ +export declare const NODEJS_TIMEOUT_ERROR_CODES: string[]; +/** + * Node.js system error codes that indicate network error. + */ +export declare const NODEJS_NETWORK_ERROR_CODES: string[]; diff --git a/food-ordering-app/server/node_modules/@smithy/service-error-classification/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/service-error-classification/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..6aad1024a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/service-error-classification/dist-types/ts3.4/index.d.ts @@ -0,0 +1,24 @@ +import { SdkError } from "@smithy/types"; +export declare const isRetryableByTrait: (error: SdkError) => boolean; +/** + * @deprecated use isClockSkewCorrectedError. This is only used in deprecated code. + */ +export declare const isClockSkewError: (error: SdkError) => boolean; +/** + * @returns whether the error resulted in a systemClockOffset aka clock skew correction. + */ +export declare const isClockSkewCorrectedError: (error: SdkError) => true | undefined; +/** + * + * @internal + */ +export declare const isBrowserNetworkError: (error: SdkError) => boolean; +export declare const isThrottlingError: (error: SdkError) => boolean; +/** + * Though NODEJS_TIMEOUT_ERROR_CODES are platform specific, they are + * included here because there is an error scenario with unknown root + * cause where the NodeHttpHandler does not decorate the Error with + * the name "TimeoutError" to be checked by the TRANSIENT_ERROR_CODES condition. + */ +export declare const isTransientError: (error: SdkError, depth?: number) => boolean; +export declare const isServerError: (error: SdkError) => boolean; diff --git a/food-ordering-app/server/node_modules/@smithy/service-error-classification/package.json b/food-ordering-app/server/node_modules/@smithy/service-error-classification/package.json new file mode 100644 index 000000000..eceed0354 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/service-error-classification/package.json @@ -0,0 +1,60 @@ +{ + "name": "@smithy/service-error-classification", + "version": "4.2.12", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline service-error-classification", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/service-error-classification", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/service-error-classification" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + }, + "dependencies": { + "@smithy/types": "^4.13.1" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/LICENSE b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/README.md b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/README.md new file mode 100644 index 000000000..45a4b2e68 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/README.md @@ -0,0 +1,105 @@ +# @smithy/shared-ini-file-loader + +[![NPM version](https://img.shields.io/npm/v/@smithy/shared-ini-file-loader/latest.svg)](https://www.npmjs.com/package/@smithy/shared-ini-file-loader) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/shared-ini-file-loader.svg)](https://www.npmjs.com/package/@smithy/shared-ini-file-loader) + +## AWS Shared Configuration File Loader + +This module provides a function that reads from AWS SDK configuration files and +returns a promise that will resolve with a hash of the parsed contents of the +AWS credentials file and of the AWS config file. Given the [sample +files](#sample-files) below, the promise returned by `loadSharedConfigFiles` +would resolve with: + +```javascript +{ + configFile: { + 'default': { + aws_access_key_id: 'foo', + aws_secret_access_key: 'bar', + }, + dev: { + aws_access_key_id: 'foo1', + aws_secret_access_key: 'bar1', + }, + prod: { + aws_access_key_id: 'foo2', + aws_secret_access_key: 'bar2', + }, + 'testing host': { + aws_access_key_id: 'foo4', + aws_secret_access_key: 'bar4', + } + }, + credentialsFile: { + 'default': { + aws_access_key_id: 'foo', + aws_secret_access_key: 'bar', + }, + dev: { + aws_access_key_id: 'foo1', + aws_secret_access_key: 'bar1', + }, + prod: { + aws_access_key_id: 'foo2', + aws_secret_access_key: 'bar2', + } + }, +} +``` + +If a file is not found, its key (`configFile` or `credentialsFile`) will instead +have a value of an empty object. + +## Supported configuration + +You may customize how the files are loaded by providing an options hash to the +`loadSharedConfigFiles` function. The following options are supported: + +- `filepath` - The path to the shared credentials file. If not specified, the + provider will use the value in the `AWS_SHARED_CREDENTIALS_FILE` environment + variable or a default of `~/.aws/credentials`. +- `configFilepath` - The path to the shared config file. If not specified, the + provider will use the value in the `AWS_CONFIG_FILE` environment variable or a + default of `~/.aws/config`. +- `ignoreCache` - The provider will normally cache the contents of the files it + loads. This option will force the provider to reload the files from disk. + Defaults to `false`. + +## Sample files + +### `~/.aws/credentials` + +```ini +[default] +aws_access_key_id=foo +aws_secret_access_key=bar + +[dev] +aws_access_key_id=foo2 +aws_secret_access_key=bar2 + +[prod] +aws_access_key_id=foo3 +aws_secret_access_key=bar3 +``` + +### `~/.aws/config` + +```ini +[default] +aws_access_key_id=foo +aws_secret_access_key=bar + +[profile dev] +aws_access_key_id=foo2 +aws_secret_access_key=bar2 + +[profile prod] +aws_access_key_id=foo3 +aws_secret_access_key=bar3 + +[profile "testing host"] +aws_access_key_id=foo4 +aws_secret_access_key=bar4 +``` diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getHomeDir.js b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getHomeDir.js new file mode 100644 index 000000000..2a4f73754 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getHomeDir.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getHomeDir = void 0; +const os_1 = require("os"); +const path_1 = require("path"); +const homeDirCache = {}; +const getHomeDirCacheKey = () => { + if (process && process.geteuid) { + return `${process.geteuid()}`; + } + return "DEFAULT"; +}; +const getHomeDir = () => { + const { HOME, USERPROFILE, HOMEPATH, HOMEDRIVE = `C:${path_1.sep}` } = process.env; + if (HOME) + return HOME; + if (USERPROFILE) + return USERPROFILE; + if (HOMEPATH) + return `${HOMEDRIVE}${HOMEPATH}`; + const homeDirCacheKey = getHomeDirCacheKey(); + if (!homeDirCache[homeDirCacheKey]) + homeDirCache[homeDirCacheKey] = (0, os_1.homedir)(); + return homeDirCache[homeDirCacheKey]; +}; +exports.getHomeDir = getHomeDir; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFilepath.js b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFilepath.js new file mode 100644 index 000000000..30d97b3d8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFilepath.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getSSOTokenFilepath = void 0; +const crypto_1 = require("crypto"); +const path_1 = require("path"); +const getHomeDir_1 = require("./getHomeDir"); +const getSSOTokenFilepath = (id) => { + const hasher = (0, crypto_1.createHash)("sha1"); + const cacheName = hasher.update(id).digest("hex"); + return (0, path_1.join)((0, getHomeDir_1.getHomeDir)(), ".aws", "sso", "cache", `${cacheName}.json`); +}; +exports.getSSOTokenFilepath = getSSOTokenFilepath; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFromFile.js b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFromFile.js new file mode 100644 index 000000000..955e11217 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFromFile.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getSSOTokenFromFile = exports.tokenIntercept = void 0; +const promises_1 = require("fs/promises"); +const getSSOTokenFilepath_1 = require("./getSSOTokenFilepath"); +exports.tokenIntercept = {}; +const getSSOTokenFromFile = async (id) => { + if (exports.tokenIntercept[id]) { + return exports.tokenIntercept[id]; + } + const ssoTokenFilepath = (0, getSSOTokenFilepath_1.getSSOTokenFilepath)(id); + const ssoTokenText = await (0, promises_1.readFile)(ssoTokenFilepath, "utf8"); + return JSON.parse(ssoTokenText); +}; +exports.getSSOTokenFromFile = getSSOTokenFromFile; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-cjs/index.js new file mode 100644 index 000000000..4d50d126c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-cjs/index.js @@ -0,0 +1,196 @@ +'use strict'; + +var getHomeDir = require('./getHomeDir'); +var getSSOTokenFilepath = require('./getSSOTokenFilepath'); +var getSSOTokenFromFile = require('./getSSOTokenFromFile'); +var path = require('path'); +var types = require('@smithy/types'); +var readFile = require('./readFile'); + +const ENV_PROFILE = "AWS_PROFILE"; +const DEFAULT_PROFILE = "default"; +const getProfileName = (init) => init.profile || process.env[ENV_PROFILE] || DEFAULT_PROFILE; + +const CONFIG_PREFIX_SEPARATOR = "."; + +const getConfigData = (data) => Object.entries(data) + .filter(([key]) => { + const indexOfSeparator = key.indexOf(CONFIG_PREFIX_SEPARATOR); + if (indexOfSeparator === -1) { + return false; + } + return Object.values(types.IniSectionType).includes(key.substring(0, indexOfSeparator)); +}) + .reduce((acc, [key, value]) => { + const indexOfSeparator = key.indexOf(CONFIG_PREFIX_SEPARATOR); + const updatedKey = key.substring(0, indexOfSeparator) === types.IniSectionType.PROFILE ? key.substring(indexOfSeparator + 1) : key; + acc[updatedKey] = value; + return acc; +}, { + ...(data.default && { default: data.default }), +}); + +const ENV_CONFIG_PATH = "AWS_CONFIG_FILE"; +const getConfigFilepath = () => process.env[ENV_CONFIG_PATH] || path.join(getHomeDir.getHomeDir(), ".aws", "config"); + +const ENV_CREDENTIALS_PATH = "AWS_SHARED_CREDENTIALS_FILE"; +const getCredentialsFilepath = () => process.env[ENV_CREDENTIALS_PATH] || path.join(getHomeDir.getHomeDir(), ".aws", "credentials"); + +const prefixKeyRegex = /^([\w-]+)\s(["'])?([\w-@\+\.%:/]+)\2$/; +const profileNameBlockList = ["__proto__", "profile __proto__"]; +const parseIni = (iniData) => { + const map = {}; + let currentSection; + let currentSubSection; + for (const iniLine of iniData.split(/\r?\n/)) { + const trimmedLine = iniLine.split(/(^|\s)[;#]/)[0].trim(); + const isSection = trimmedLine[0] === "[" && trimmedLine[trimmedLine.length - 1] === "]"; + if (isSection) { + currentSection = undefined; + currentSubSection = undefined; + const sectionName = trimmedLine.substring(1, trimmedLine.length - 1); + const matches = prefixKeyRegex.exec(sectionName); + if (matches) { + const [, prefix, , name] = matches; + if (Object.values(types.IniSectionType).includes(prefix)) { + currentSection = [prefix, name].join(CONFIG_PREFIX_SEPARATOR); + } + } + else { + currentSection = sectionName; + } + if (profileNameBlockList.includes(sectionName)) { + throw new Error(`Found invalid profile name "${sectionName}"`); + } + } + else if (currentSection) { + const indexOfEqualsSign = trimmedLine.indexOf("="); + if (![0, -1].includes(indexOfEqualsSign)) { + const [name, value] = [ + trimmedLine.substring(0, indexOfEqualsSign).trim(), + trimmedLine.substring(indexOfEqualsSign + 1).trim(), + ]; + if (value === "") { + currentSubSection = name; + } + else { + if (currentSubSection && iniLine.trimStart() === iniLine) { + currentSubSection = undefined; + } + map[currentSection] = map[currentSection] || {}; + const key = currentSubSection ? [currentSubSection, name].join(CONFIG_PREFIX_SEPARATOR) : name; + map[currentSection][key] = value; + } + } + } + } + return map; +}; + +const swallowError$1 = () => ({}); +const loadSharedConfigFiles = async (init = {}) => { + const { filepath = getCredentialsFilepath(), configFilepath = getConfigFilepath() } = init; + const homeDir = getHomeDir.getHomeDir(); + const relativeHomeDirPrefix = "~/"; + let resolvedFilepath = filepath; + if (filepath.startsWith(relativeHomeDirPrefix)) { + resolvedFilepath = path.join(homeDir, filepath.slice(2)); + } + let resolvedConfigFilepath = configFilepath; + if (configFilepath.startsWith(relativeHomeDirPrefix)) { + resolvedConfigFilepath = path.join(homeDir, configFilepath.slice(2)); + } + const parsedFiles = await Promise.all([ + readFile.readFile(resolvedConfigFilepath, { + ignoreCache: init.ignoreCache, + }) + .then(parseIni) + .then(getConfigData) + .catch(swallowError$1), + readFile.readFile(resolvedFilepath, { + ignoreCache: init.ignoreCache, + }) + .then(parseIni) + .catch(swallowError$1), + ]); + return { + configFile: parsedFiles[0], + credentialsFile: parsedFiles[1], + }; +}; + +const getSsoSessionData = (data) => Object.entries(data) + .filter(([key]) => key.startsWith(types.IniSectionType.SSO_SESSION + CONFIG_PREFIX_SEPARATOR)) + .reduce((acc, [key, value]) => ({ ...acc, [key.substring(key.indexOf(CONFIG_PREFIX_SEPARATOR) + 1)]: value }), {}); + +const swallowError = () => ({}); +const loadSsoSessionData = async (init = {}) => readFile.readFile(init.configFilepath ?? getConfigFilepath()) + .then(parseIni) + .then(getSsoSessionData) + .catch(swallowError); + +const mergeConfigFiles = (...files) => { + const merged = {}; + for (const file of files) { + for (const [key, values] of Object.entries(file)) { + if (merged[key] !== undefined) { + Object.assign(merged[key], values); + } + else { + merged[key] = values; + } + } + } + return merged; +}; + +const parseKnownFiles = async (init) => { + const parsedFiles = await loadSharedConfigFiles(init); + return mergeConfigFiles(parsedFiles.configFile, parsedFiles.credentialsFile); +}; + +const externalDataInterceptor = { + getFileRecord() { + return readFile.fileIntercept; + }, + interceptFile(path, contents) { + readFile.fileIntercept[path] = Promise.resolve(contents); + }, + getTokenRecord() { + return getSSOTokenFromFile.tokenIntercept; + }, + interceptToken(id, contents) { + getSSOTokenFromFile.tokenIntercept[id] = contents; + }, +}; + +exports.getSSOTokenFromFile = getSSOTokenFromFile.getSSOTokenFromFile; +exports.readFile = readFile.readFile; +exports.CONFIG_PREFIX_SEPARATOR = CONFIG_PREFIX_SEPARATOR; +exports.DEFAULT_PROFILE = DEFAULT_PROFILE; +exports.ENV_PROFILE = ENV_PROFILE; +exports.externalDataInterceptor = externalDataInterceptor; +exports.getProfileName = getProfileName; +exports.loadSharedConfigFiles = loadSharedConfigFiles; +exports.loadSsoSessionData = loadSsoSessionData; +exports.parseKnownFiles = parseKnownFiles; +Object.prototype.hasOwnProperty.call(getHomeDir, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: getHomeDir['__proto__'] + }); + +Object.keys(getHomeDir).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = getHomeDir[k]; +}); +Object.prototype.hasOwnProperty.call(getSSOTokenFilepath, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: getSSOTokenFilepath['__proto__'] + }); + +Object.keys(getSSOTokenFilepath).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = getSSOTokenFilepath[k]; +}); diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-cjs/readFile.js b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-cjs/readFile.js new file mode 100644 index 000000000..e2a492fd4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-cjs/readFile.js @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.readFile = exports.fileIntercept = exports.filePromises = void 0; +const promises_1 = require("node:fs/promises"); +exports.filePromises = {}; +exports.fileIntercept = {}; +const readFile = (path, options) => { + if (exports.fileIntercept[path] !== undefined) { + return exports.fileIntercept[path]; + } + if (!exports.filePromises[path] || options?.ignoreCache) { + exports.filePromises[path] = (0, promises_1.readFile)(path, "utf8"); + } + return exports.filePromises[path]; +}; +exports.readFile = readFile; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/constants.js b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/constants.js new file mode 100644 index 000000000..0020821ff --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/constants.js @@ -0,0 +1 @@ +export const CONFIG_PREFIX_SEPARATOR = "."; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/externalDataInterceptor.js b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/externalDataInterceptor.js new file mode 100644 index 000000000..a2dcf4605 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/externalDataInterceptor.js @@ -0,0 +1,16 @@ +import { tokenIntercept } from "./getSSOTokenFromFile"; +import { fileIntercept } from "./readFile"; +export const externalDataInterceptor = { + getFileRecord() { + return fileIntercept; + }, + interceptFile(path, contents) { + fileIntercept[path] = Promise.resolve(contents); + }, + getTokenRecord() { + return tokenIntercept; + }, + interceptToken(id, contents) { + tokenIntercept[id] = contents; + }, +}; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/getConfigData.js b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/getConfigData.js new file mode 100644 index 000000000..4b5914198 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/getConfigData.js @@ -0,0 +1,18 @@ +import { IniSectionType } from "@smithy/types"; +import { CONFIG_PREFIX_SEPARATOR } from "./constants"; +export const getConfigData = (data) => Object.entries(data) + .filter(([key]) => { + const indexOfSeparator = key.indexOf(CONFIG_PREFIX_SEPARATOR); + if (indexOfSeparator === -1) { + return false; + } + return Object.values(IniSectionType).includes(key.substring(0, indexOfSeparator)); +}) + .reduce((acc, [key, value]) => { + const indexOfSeparator = key.indexOf(CONFIG_PREFIX_SEPARATOR); + const updatedKey = key.substring(0, indexOfSeparator) === IniSectionType.PROFILE ? key.substring(indexOfSeparator + 1) : key; + acc[updatedKey] = value; + return acc; +}, { + ...(data.default && { default: data.default }), +}); diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/getConfigFilepath.js b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/getConfigFilepath.js new file mode 100644 index 000000000..ca07c2ddc --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/getConfigFilepath.js @@ -0,0 +1,4 @@ +import { join } from "path"; +import { getHomeDir } from "./getHomeDir"; +export const ENV_CONFIG_PATH = "AWS_CONFIG_FILE"; +export const getConfigFilepath = () => process.env[ENV_CONFIG_PATH] || join(getHomeDir(), ".aws", "config"); diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/getCredentialsFilepath.js b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/getCredentialsFilepath.js new file mode 100644 index 000000000..393c0ae52 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/getCredentialsFilepath.js @@ -0,0 +1,4 @@ +import { join } from "path"; +import { getHomeDir } from "./getHomeDir"; +export const ENV_CREDENTIALS_PATH = "AWS_SHARED_CREDENTIALS_FILE"; +export const getCredentialsFilepath = () => process.env[ENV_CREDENTIALS_PATH] || join(getHomeDir(), ".aws", "credentials"); diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/getHomeDir.js b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/getHomeDir.js new file mode 100644 index 000000000..58772af3f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/getHomeDir.js @@ -0,0 +1,22 @@ +import { homedir } from "os"; +import { sep } from "path"; +const homeDirCache = {}; +const getHomeDirCacheKey = () => { + if (process && process.geteuid) { + return `${process.geteuid()}`; + } + return "DEFAULT"; +}; +export const getHomeDir = () => { + const { HOME, USERPROFILE, HOMEPATH, HOMEDRIVE = `C:${sep}` } = process.env; + if (HOME) + return HOME; + if (USERPROFILE) + return USERPROFILE; + if (HOMEPATH) + return `${HOMEDRIVE}${HOMEPATH}`; + const homeDirCacheKey = getHomeDirCacheKey(); + if (!homeDirCache[homeDirCacheKey]) + homeDirCache[homeDirCacheKey] = homedir(); + return homeDirCache[homeDirCacheKey]; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/getProfileName.js b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/getProfileName.js new file mode 100644 index 000000000..acc29f077 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/getProfileName.js @@ -0,0 +1,3 @@ +export const ENV_PROFILE = "AWS_PROFILE"; +export const DEFAULT_PROFILE = "default"; +export const getProfileName = (init) => init.profile || process.env[ENV_PROFILE] || DEFAULT_PROFILE; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/getSSOTokenFilepath.js b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/getSSOTokenFilepath.js new file mode 100644 index 000000000..a44b4ad70 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/getSSOTokenFilepath.js @@ -0,0 +1,8 @@ +import { createHash } from "crypto"; +import { join } from "path"; +import { getHomeDir } from "./getHomeDir"; +export const getSSOTokenFilepath = (id) => { + const hasher = createHash("sha1"); + const cacheName = hasher.update(id).digest("hex"); + return join(getHomeDir(), ".aws", "sso", "cache", `${cacheName}.json`); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/getSSOTokenFromFile.js b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/getSSOTokenFromFile.js new file mode 100644 index 000000000..153cd6af1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/getSSOTokenFromFile.js @@ -0,0 +1,11 @@ +import { readFile } from "fs/promises"; +import { getSSOTokenFilepath } from "./getSSOTokenFilepath"; +export const tokenIntercept = {}; +export const getSSOTokenFromFile = async (id) => { + if (tokenIntercept[id]) { + return tokenIntercept[id]; + } + const ssoTokenFilepath = getSSOTokenFilepath(id); + const ssoTokenText = await readFile(ssoTokenFilepath, "utf8"); + return JSON.parse(ssoTokenText); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/getSsoSessionData.js b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/getSsoSessionData.js new file mode 100644 index 000000000..f2df194c8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/getSsoSessionData.js @@ -0,0 +1,5 @@ +import { IniSectionType } from "@smithy/types"; +import { CONFIG_PREFIX_SEPARATOR } from "./loadSharedConfigFiles"; +export const getSsoSessionData = (data) => Object.entries(data) + .filter(([key]) => key.startsWith(IniSectionType.SSO_SESSION + CONFIG_PREFIX_SEPARATOR)) + .reduce((acc, [key, value]) => ({ ...acc, [key.substring(key.indexOf(CONFIG_PREFIX_SEPARATOR) + 1)]: value }), {}); diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/index.js new file mode 100644 index 000000000..b003abcdf --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/index.js @@ -0,0 +1,10 @@ +export * from "./getHomeDir"; +export * from "./getProfileName"; +export * from "./getSSOTokenFilepath"; +export { getSSOTokenFromFile } from "./getSSOTokenFromFile"; +export * from "./loadSharedConfigFiles"; +export * from "./loadSsoSessionData"; +export * from "./parseKnownFiles"; +export { externalDataInterceptor } from "./externalDataInterceptor"; +export * from "./types"; +export { readFile } from "./readFile"; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/loadSharedConfigFiles.js b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/loadSharedConfigFiles.js new file mode 100644 index 000000000..e8bacccc1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/loadSharedConfigFiles.js @@ -0,0 +1,39 @@ +import { join } from "path"; +import { getConfigData } from "./getConfigData"; +import { getConfigFilepath } from "./getConfigFilepath"; +import { getCredentialsFilepath } from "./getCredentialsFilepath"; +import { getHomeDir } from "./getHomeDir"; +import { parseIni } from "./parseIni"; +import { readFile } from "./readFile"; +const swallowError = () => ({}); +export { CONFIG_PREFIX_SEPARATOR } from "./constants"; +export const loadSharedConfigFiles = async (init = {}) => { + const { filepath = getCredentialsFilepath(), configFilepath = getConfigFilepath() } = init; + const homeDir = getHomeDir(); + const relativeHomeDirPrefix = "~/"; + let resolvedFilepath = filepath; + if (filepath.startsWith(relativeHomeDirPrefix)) { + resolvedFilepath = join(homeDir, filepath.slice(2)); + } + let resolvedConfigFilepath = configFilepath; + if (configFilepath.startsWith(relativeHomeDirPrefix)) { + resolvedConfigFilepath = join(homeDir, configFilepath.slice(2)); + } + const parsedFiles = await Promise.all([ + readFile(resolvedConfigFilepath, { + ignoreCache: init.ignoreCache, + }) + .then(parseIni) + .then(getConfigData) + .catch(swallowError), + readFile(resolvedFilepath, { + ignoreCache: init.ignoreCache, + }) + .then(parseIni) + .catch(swallowError), + ]); + return { + configFile: parsedFiles[0], + credentialsFile: parsedFiles[1], + }; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/loadSsoSessionData.js b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/loadSsoSessionData.js new file mode 100644 index 000000000..279d12591 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/loadSsoSessionData.js @@ -0,0 +1,9 @@ +import { getConfigFilepath } from "./getConfigFilepath"; +import { getSsoSessionData } from "./getSsoSessionData"; +import { parseIni } from "./parseIni"; +import { readFile } from "./readFile"; +const swallowError = () => ({}); +export const loadSsoSessionData = async (init = {}) => readFile(init.configFilepath ?? getConfigFilepath()) + .then(parseIni) + .then(getSsoSessionData) + .catch(swallowError); diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/mergeConfigFiles.js b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/mergeConfigFiles.js new file mode 100644 index 000000000..58576f764 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/mergeConfigFiles.js @@ -0,0 +1,14 @@ +export const mergeConfigFiles = (...files) => { + const merged = {}; + for (const file of files) { + for (const [key, values] of Object.entries(file)) { + if (merged[key] !== undefined) { + Object.assign(merged[key], values); + } + else { + merged[key] = values; + } + } + } + return merged; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/parseIni.js b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/parseIni.js new file mode 100644 index 000000000..ec999c346 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/parseIni.js @@ -0,0 +1,52 @@ +import { IniSectionType } from "@smithy/types"; +import { CONFIG_PREFIX_SEPARATOR } from "./constants"; +const prefixKeyRegex = /^([\w-]+)\s(["'])?([\w-@\+\.%:/]+)\2$/; +const profileNameBlockList = ["__proto__", "profile __proto__"]; +export const parseIni = (iniData) => { + const map = {}; + let currentSection; + let currentSubSection; + for (const iniLine of iniData.split(/\r?\n/)) { + const trimmedLine = iniLine.split(/(^|\s)[;#]/)[0].trim(); + const isSection = trimmedLine[0] === "[" && trimmedLine[trimmedLine.length - 1] === "]"; + if (isSection) { + currentSection = undefined; + currentSubSection = undefined; + const sectionName = trimmedLine.substring(1, trimmedLine.length - 1); + const matches = prefixKeyRegex.exec(sectionName); + if (matches) { + const [, prefix, , name] = matches; + if (Object.values(IniSectionType).includes(prefix)) { + currentSection = [prefix, name].join(CONFIG_PREFIX_SEPARATOR); + } + } + else { + currentSection = sectionName; + } + if (profileNameBlockList.includes(sectionName)) { + throw new Error(`Found invalid profile name "${sectionName}"`); + } + } + else if (currentSection) { + const indexOfEqualsSign = trimmedLine.indexOf("="); + if (![0, -1].includes(indexOfEqualsSign)) { + const [name, value] = [ + trimmedLine.substring(0, indexOfEqualsSign).trim(), + trimmedLine.substring(indexOfEqualsSign + 1).trim(), + ]; + if (value === "") { + currentSubSection = name; + } + else { + if (currentSubSection && iniLine.trimStart() === iniLine) { + currentSubSection = undefined; + } + map[currentSection] = map[currentSection] || {}; + const key = currentSubSection ? [currentSubSection, name].join(CONFIG_PREFIX_SEPARATOR) : name; + map[currentSection][key] = value; + } + } + } + } + return map; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/parseKnownFiles.js b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/parseKnownFiles.js new file mode 100644 index 000000000..4920e2803 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/parseKnownFiles.js @@ -0,0 +1,6 @@ +import { loadSharedConfigFiles } from "./loadSharedConfigFiles"; +import { mergeConfigFiles } from "./mergeConfigFiles"; +export const parseKnownFiles = async (init) => { + const parsedFiles = await loadSharedConfigFiles(init); + return mergeConfigFiles(parsedFiles.configFile, parsedFiles.credentialsFile); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/readFile.js b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/readFile.js new file mode 100644 index 000000000..c2251f08e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/readFile.js @@ -0,0 +1,12 @@ +import { readFile as fsReadFile } from "node:fs/promises"; +export const filePromises = {}; +export const fileIntercept = {}; +export const readFile = (path, options) => { + if (fileIntercept[path] !== undefined) { + return fileIntercept[path]; + } + if (!filePromises[path] || options?.ignoreCache) { + filePromises[path] = fsReadFile(path, "utf8"); + } + return filePromises[path]; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/types.js b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-es/types.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/constants.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/constants.d.ts new file mode 100644 index 000000000..caa3ee3b9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/constants.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const CONFIG_PREFIX_SEPARATOR = "."; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/externalDataInterceptor.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/externalDataInterceptor.d.ts new file mode 100644 index 000000000..1ac1b9b01 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/externalDataInterceptor.d.ts @@ -0,0 +1,9 @@ +/** + * @internal + */ +export declare const externalDataInterceptor: { + getFileRecord(): Record>; + interceptFile(path: string, contents: string): void; + getTokenRecord(): Record; + interceptToken(id: string, contents: any): void; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/getConfigData.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/getConfigData.d.ts new file mode 100644 index 000000000..024b09e89 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/getConfigData.d.ts @@ -0,0 +1,8 @@ +import type { ParsedIniData } from "@smithy/types"; +/** + * Returns the config data from parsed ini data. + * * Returns data for `default` + * * Returns profile name without prefix. + * * Returns non-profiles as is. + */ +export declare const getConfigData: (data: ParsedIniData) => ParsedIniData; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/getConfigFilepath.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/getConfigFilepath.d.ts new file mode 100644 index 000000000..1d123bedd --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/getConfigFilepath.d.ts @@ -0,0 +1,2 @@ +export declare const ENV_CONFIG_PATH = "AWS_CONFIG_FILE"; +export declare const getConfigFilepath: () => string; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/getCredentialsFilepath.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/getCredentialsFilepath.d.ts new file mode 100644 index 000000000..26fda4a60 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/getCredentialsFilepath.d.ts @@ -0,0 +1,2 @@ +export declare const ENV_CREDENTIALS_PATH = "AWS_SHARED_CREDENTIALS_FILE"; +export declare const getCredentialsFilepath: () => string; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/getHomeDir.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/getHomeDir.d.ts new file mode 100644 index 000000000..5d15bf1ae --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/getHomeDir.d.ts @@ -0,0 +1,6 @@ +/** + * Get the HOME directory for the current runtime. + * + * @internal + */ +export declare const getHomeDir: () => string; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/getProfileName.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/getProfileName.d.ts new file mode 100644 index 000000000..5a608b288 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/getProfileName.d.ts @@ -0,0 +1,15 @@ +/** + * @internal + */ +export declare const ENV_PROFILE = "AWS_PROFILE"; +/** + * @internal + */ +export declare const DEFAULT_PROFILE = "default"; +/** + * Returns profile with priority order code - ENV - default. + * @internal + */ +export declare const getProfileName: (init: { + profile?: string; +}) => string; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/getSSOTokenFilepath.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/getSSOTokenFilepath.d.ts new file mode 100644 index 000000000..44a40309d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/getSSOTokenFilepath.d.ts @@ -0,0 +1,5 @@ +/** + * Returns the filepath of the file where SSO token is stored. + * @internal + */ +export declare const getSSOTokenFilepath: (id: string) => string; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/getSSOTokenFromFile.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/getSSOTokenFromFile.d.ts new file mode 100644 index 000000000..79ad7a457 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/getSSOTokenFromFile.d.ts @@ -0,0 +1,52 @@ +/** + * Cached SSO token retrieved from SSO login flow. + * @public + */ +export interface SSOToken { + /** + * A base64 encoded string returned by the sso-oidc service. + */ + accessToken: string; + /** + * The expiration time of the accessToken as an RFC 3339 formatted timestamp. + */ + expiresAt: string; + /** + * The token used to obtain an access token in the event that the accessToken is invalid or expired. + */ + refreshToken?: string; + /** + * The unique identifier string for each client. The client ID generated when performing the registration + * portion of the OIDC authorization flow. This is used to refresh the accessToken. + */ + clientId?: string; + /** + * A secret string generated when performing the registration portion of the OIDC authorization flow. + * This is used to refresh the accessToken. + */ + clientSecret?: string; + /** + * The expiration time of the client registration (clientId and clientSecret) as an RFC 3339 formatted timestamp. + */ + registrationExpiresAt?: string; + /** + * The configured sso_region for the profile that credentials are being resolved for. + */ + region?: string; + /** + * The configured sso_start_url for the profile that credentials are being resolved for. + */ + startUrl?: string; +} +/** + * For testing only. + * @internal + * @deprecated minimize use in application code. + */ +export declare const tokenIntercept: Record; +/** + * @internal + * @param id - can be either a start URL or the SSO session name. + * Returns the SSO token from the file system. + */ +export declare const getSSOTokenFromFile: (id: string) => Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/getSsoSessionData.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/getSsoSessionData.d.ts new file mode 100644 index 000000000..7ac62a428 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/getSsoSessionData.d.ts @@ -0,0 +1,6 @@ +import type { ParsedIniData } from "@smithy/types"; +/** + * Returns the sso-session data from parsed ini data by reading + * ssoSessionName after sso-session prefix including/excluding quotes + */ +export declare const getSsoSessionData: (data: ParsedIniData) => ParsedIniData; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/index.d.ts new file mode 100644 index 000000000..29869da9f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/index.d.ts @@ -0,0 +1,10 @@ +export * from "./getHomeDir"; +export * from "./getProfileName"; +export * from "./getSSOTokenFilepath"; +export { getSSOTokenFromFile, SSOToken } from "./getSSOTokenFromFile"; +export * from "./loadSharedConfigFiles"; +export * from "./loadSsoSessionData"; +export * from "./parseKnownFiles"; +export { externalDataInterceptor } from "./externalDataInterceptor"; +export * from "./types"; +export { type ReadFileOptions, readFile } from "./readFile"; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/loadSharedConfigFiles.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/loadSharedConfigFiles.d.ts new file mode 100644 index 000000000..eaddac335 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/loadSharedConfigFiles.d.ts @@ -0,0 +1,33 @@ +import type { Logger, SharedConfigFiles } from "@smithy/types"; +/** + * @public + */ +export interface SharedConfigInit { + /** + * The path at which to locate the ini credentials file. Defaults to the + * value of the `AWS_SHARED_CREDENTIALS_FILE` environment variable (if + * defined) or `~/.aws/credentials` otherwise. + */ + filepath?: string; + /** + * The path at which to locate the ini config file. Defaults to the value of + * the `AWS_CONFIG_FILE` environment variable (if defined) or + * `~/.aws/config` otherwise. + */ + configFilepath?: string; + /** + * Configuration files are normally cached after the first time they are loaded. When this + * property is set, the provider will always reload any configuration files loaded before. + */ + ignoreCache?: boolean; + /** + * For credential resolution trace logging. + */ + logger?: Logger; +} +export { CONFIG_PREFIX_SEPARATOR } from "./constants"; +/** + * Loads the config and credentials files. + * @internal + */ +export declare const loadSharedConfigFiles: (init?: SharedConfigInit) => Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/loadSsoSessionData.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/loadSsoSessionData.d.ts new file mode 100644 index 000000000..44f8df89b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/loadSsoSessionData.d.ts @@ -0,0 +1,17 @@ +import type { ParsedIniData } from "@smithy/types"; +/** + * Subset of {@link SharedConfigInit}. + * @internal + */ +export interface SsoSessionInit { + /** + * The path at which to locate the ini config file. Defaults to the value of + * the `AWS_CONFIG_FILE` environment variable (if defined) or + * `~/.aws/config` otherwise. + */ + configFilepath?: string; +} +/** + * @internal + */ +export declare const loadSsoSessionData: (init?: SsoSessionInit) => Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/mergeConfigFiles.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/mergeConfigFiles.d.ts new file mode 100644 index 000000000..26b4d0863 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/mergeConfigFiles.d.ts @@ -0,0 +1,7 @@ +import type { ParsedIniData } from "@smithy/types"; +/** + * Merge multiple profile config files such that settings each file are kept together + * + * @internal + */ +export declare const mergeConfigFiles: (...files: ParsedIniData[]) => ParsedIniData; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/parseIni.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/parseIni.d.ts new file mode 100644 index 000000000..33d7ea0b5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/parseIni.d.ts @@ -0,0 +1,2 @@ +import type { ParsedIniData } from "@smithy/types"; +export declare const parseIni: (iniData: string) => ParsedIniData; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/parseKnownFiles.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/parseKnownFiles.d.ts new file mode 100644 index 000000000..bbe8e802a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/parseKnownFiles.d.ts @@ -0,0 +1,18 @@ +import type { ParsedIniData } from "@smithy/types"; +import type { SharedConfigInit } from "./loadSharedConfigFiles"; +/** + * @public + */ +export interface SourceProfileInit extends SharedConfigInit { + /** + * The configuration profile to use. + */ + profile?: string; +} +/** + * Load profiles from credentials and config INI files and normalize them into a + * single profile list. + * + * @internal + */ +export declare const parseKnownFiles: (init: SourceProfileInit) => Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/readFile.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/readFile.d.ts new file mode 100644 index 000000000..ed0c5d6d6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/readFile.d.ts @@ -0,0 +1,21 @@ +/** + * Runtime file cache. + * @internal + */ +export declare const filePromises: Record>; +/** + * For testing only. + * @internal + * @deprecated minimize use in application code. + */ +export declare const fileIntercept: Record>; +/** + * @internal + */ +export interface ReadFileOptions { + ignoreCache?: boolean; +} +/** + * @internal + */ +export declare const readFile: (path: string, options?: ReadFileOptions) => Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/constants.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/constants.d.ts new file mode 100644 index 000000000..caa3ee3b9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/constants.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const CONFIG_PREFIX_SEPARATOR = "."; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/externalDataInterceptor.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/externalDataInterceptor.d.ts new file mode 100644 index 000000000..1ac1b9b01 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/externalDataInterceptor.d.ts @@ -0,0 +1,9 @@ +/** + * @internal + */ +export declare const externalDataInterceptor: { + getFileRecord(): Record>; + interceptFile(path: string, contents: string): void; + getTokenRecord(): Record; + interceptToken(id: string, contents: any): void; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getConfigData.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getConfigData.d.ts new file mode 100644 index 000000000..425983121 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getConfigData.d.ts @@ -0,0 +1,8 @@ +import { ParsedIniData } from "@smithy/types"; +/** + * Returns the config data from parsed ini data. + * * Returns data for `default` + * * Returns profile name without prefix. + * * Returns non-profiles as is. + */ +export declare const getConfigData: (data: ParsedIniData) => ParsedIniData; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getConfigFilepath.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getConfigFilepath.d.ts new file mode 100644 index 000000000..1d123bedd --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getConfigFilepath.d.ts @@ -0,0 +1,2 @@ +export declare const ENV_CONFIG_PATH = "AWS_CONFIG_FILE"; +export declare const getConfigFilepath: () => string; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getCredentialsFilepath.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getCredentialsFilepath.d.ts new file mode 100644 index 000000000..26fda4a60 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getCredentialsFilepath.d.ts @@ -0,0 +1,2 @@ +export declare const ENV_CREDENTIALS_PATH = "AWS_SHARED_CREDENTIALS_FILE"; +export declare const getCredentialsFilepath: () => string; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getHomeDir.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getHomeDir.d.ts new file mode 100644 index 000000000..5d15bf1ae --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getHomeDir.d.ts @@ -0,0 +1,6 @@ +/** + * Get the HOME directory for the current runtime. + * + * @internal + */ +export declare const getHomeDir: () => string; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getProfileName.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getProfileName.d.ts new file mode 100644 index 000000000..5a608b288 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getProfileName.d.ts @@ -0,0 +1,15 @@ +/** + * @internal + */ +export declare const ENV_PROFILE = "AWS_PROFILE"; +/** + * @internal + */ +export declare const DEFAULT_PROFILE = "default"; +/** + * Returns profile with priority order code - ENV - default. + * @internal + */ +export declare const getProfileName: (init: { + profile?: string; +}) => string; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getSSOTokenFilepath.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getSSOTokenFilepath.d.ts new file mode 100644 index 000000000..44a40309d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getSSOTokenFilepath.d.ts @@ -0,0 +1,5 @@ +/** + * Returns the filepath of the file where SSO token is stored. + * @internal + */ +export declare const getSSOTokenFilepath: (id: string) => string; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getSSOTokenFromFile.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getSSOTokenFromFile.d.ts new file mode 100644 index 000000000..79ad7a457 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getSSOTokenFromFile.d.ts @@ -0,0 +1,52 @@ +/** + * Cached SSO token retrieved from SSO login flow. + * @public + */ +export interface SSOToken { + /** + * A base64 encoded string returned by the sso-oidc service. + */ + accessToken: string; + /** + * The expiration time of the accessToken as an RFC 3339 formatted timestamp. + */ + expiresAt: string; + /** + * The token used to obtain an access token in the event that the accessToken is invalid or expired. + */ + refreshToken?: string; + /** + * The unique identifier string for each client. The client ID generated when performing the registration + * portion of the OIDC authorization flow. This is used to refresh the accessToken. + */ + clientId?: string; + /** + * A secret string generated when performing the registration portion of the OIDC authorization flow. + * This is used to refresh the accessToken. + */ + clientSecret?: string; + /** + * The expiration time of the client registration (clientId and clientSecret) as an RFC 3339 formatted timestamp. + */ + registrationExpiresAt?: string; + /** + * The configured sso_region for the profile that credentials are being resolved for. + */ + region?: string; + /** + * The configured sso_start_url for the profile that credentials are being resolved for. + */ + startUrl?: string; +} +/** + * For testing only. + * @internal + * @deprecated minimize use in application code. + */ +export declare const tokenIntercept: Record; +/** + * @internal + * @param id - can be either a start URL or the SSO session name. + * Returns the SSO token from the file system. + */ +export declare const getSSOTokenFromFile: (id: string) => Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getSsoSessionData.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getSsoSessionData.d.ts new file mode 100644 index 000000000..9be020f5b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getSsoSessionData.d.ts @@ -0,0 +1,6 @@ +import { ParsedIniData } from "@smithy/types"; +/** + * Returns the sso-session data from parsed ini data by reading + * ssoSessionName after sso-session prefix including/excluding quotes + */ +export declare const getSsoSessionData: (data: ParsedIniData) => ParsedIniData; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..bb7c47254 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/index.d.ts @@ -0,0 +1,10 @@ +export * from "./getHomeDir"; +export * from "./getProfileName"; +export * from "./getSSOTokenFilepath"; +export { getSSOTokenFromFile, SSOToken } from "./getSSOTokenFromFile"; +export * from "./loadSharedConfigFiles"; +export * from "./loadSsoSessionData"; +export * from "./parseKnownFiles"; +export { externalDataInterceptor } from "./externalDataInterceptor"; +export * from "./types"; +export { ReadFileOptions, readFile } from "./readFile"; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/loadSharedConfigFiles.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/loadSharedConfigFiles.d.ts new file mode 100644 index 000000000..3caeb6d6c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/loadSharedConfigFiles.d.ts @@ -0,0 +1,33 @@ +import { Logger, SharedConfigFiles } from "@smithy/types"; +/** + * @public + */ +export interface SharedConfigInit { + /** + * The path at which to locate the ini credentials file. Defaults to the + * value of the `AWS_SHARED_CREDENTIALS_FILE` environment variable (if + * defined) or `~/.aws/credentials` otherwise. + */ + filepath?: string; + /** + * The path at which to locate the ini config file. Defaults to the value of + * the `AWS_CONFIG_FILE` environment variable (if defined) or + * `~/.aws/config` otherwise. + */ + configFilepath?: string; + /** + * Configuration files are normally cached after the first time they are loaded. When this + * property is set, the provider will always reload any configuration files loaded before. + */ + ignoreCache?: boolean; + /** + * For credential resolution trace logging. + */ + logger?: Logger; +} +export { CONFIG_PREFIX_SEPARATOR } from "./constants"; +/** + * Loads the config and credentials files. + * @internal + */ +export declare const loadSharedConfigFiles: (init?: SharedConfigInit) => Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/loadSsoSessionData.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/loadSsoSessionData.d.ts new file mode 100644 index 000000000..ed6c36737 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/loadSsoSessionData.d.ts @@ -0,0 +1,17 @@ +import { ParsedIniData } from "@smithy/types"; +/** + * Subset of {@link SharedConfigInit}. + * @internal + */ +export interface SsoSessionInit { + /** + * The path at which to locate the ini config file. Defaults to the value of + * the `AWS_CONFIG_FILE` environment variable (if defined) or + * `~/.aws/config` otherwise. + */ + configFilepath?: string; +} +/** + * @internal + */ +export declare const loadSsoSessionData: (init?: SsoSessionInit) => Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/mergeConfigFiles.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/mergeConfigFiles.d.ts new file mode 100644 index 000000000..46b8965d5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/mergeConfigFiles.d.ts @@ -0,0 +1,7 @@ +import { ParsedIniData } from "@smithy/types"; +/** + * Merge multiple profile config files such that settings each file are kept together + * + * @internal + */ +export declare const mergeConfigFiles: (...files: ParsedIniData[]) => ParsedIniData; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/parseIni.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/parseIni.d.ts new file mode 100644 index 000000000..0ae585105 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/parseIni.d.ts @@ -0,0 +1,2 @@ +import { ParsedIniData } from "@smithy/types"; +export declare const parseIni: (iniData: string) => ParsedIniData; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/parseKnownFiles.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/parseKnownFiles.d.ts new file mode 100644 index 000000000..d5fcafaa3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/parseKnownFiles.d.ts @@ -0,0 +1,18 @@ +import { ParsedIniData } from "@smithy/types"; +import { SharedConfigInit } from "./loadSharedConfigFiles"; +/** + * @public + */ +export interface SourceProfileInit extends SharedConfigInit { + /** + * The configuration profile to use. + */ + profile?: string; +} +/** + * Load profiles from credentials and config INI files and normalize them into a + * single profile list. + * + * @internal + */ +export declare const parseKnownFiles: (init: SourceProfileInit) => Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/readFile.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/readFile.d.ts new file mode 100644 index 000000000..ed0c5d6d6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/readFile.d.ts @@ -0,0 +1,21 @@ +/** + * Runtime file cache. + * @internal + */ +export declare const filePromises: Record>; +/** + * For testing only. + * @internal + * @deprecated minimize use in application code. + */ +export declare const fileIntercept: Record>; +/** + * @internal + */ +export interface ReadFileOptions { + ignoreCache?: boolean; +} +/** + * @internal + */ +export declare const readFile: (path: string, options?: ReadFileOptions) => Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/types.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/types.d.ts new file mode 100644 index 000000000..c7c8d925b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/types.d.ts @@ -0,0 +1,16 @@ +import { ParsedIniData as __ParsedIniData, Profile as __Profile, SharedConfigFiles as __SharedConfigFiles } from "@smithy/types"; +/** + * @internal + * @deprecated Use Profile from "\@smithy/types" instead + */ +export type Profile = __Profile; +/** + * @internal + * @deprecated Use ParsedIniData from "\@smithy/types" instead + */ +export type ParsedIniData = __ParsedIniData; +/** + * @internal + * @deprecated Use SharedConfigFiles from "\@smithy/types" instead + */ +export type SharedConfigFiles = __SharedConfigFiles; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/types.d.ts b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/types.d.ts new file mode 100644 index 000000000..ef174f68d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/dist-types/types.d.ts @@ -0,0 +1,16 @@ +import type { ParsedIniData as __ParsedIniData, Profile as __Profile, SharedConfigFiles as __SharedConfigFiles } from "@smithy/types"; +/** + * @internal + * @deprecated Use Profile from "\@smithy/types" instead + */ +export type Profile = __Profile; +/** + * @internal + * @deprecated Use ParsedIniData from "\@smithy/types" instead + */ +export type ParsedIniData = __ParsedIniData; +/** + * @internal + * @deprecated Use SharedConfigFiles from "\@smithy/types" instead + */ +export type SharedConfigFiles = __SharedConfigFiles; diff --git a/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/package.json b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/package.json new file mode 100644 index 000000000..3b6f01cf7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/shared-ini-file-loader/package.json @@ -0,0 +1,73 @@ +{ + "name": "@smithy/shared-ini-file-loader", + "version": "4.4.7", + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline shared-ini-file-loader", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "extract:docs": "api-extractor run --local", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "browser": { + "./dist-es/getSSOTokenFromFile": false, + "./dist-es/readFile": false + }, + "react-native": { + "./dist-cjs/getSSOTokenFromFile": false, + "./dist-cjs/readFile": false, + "./dist-es/getSSOTokenFromFile": false, + "./dist-es/readFile": false + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/shared-ini-file-loader", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/shared-ini-file-loader" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/LICENSE b/food-ordering-app/server/node_modules/@smithy/signature-v4/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/README.md b/food-ordering-app/server/node_modules/@smithy/signature-v4/README.md new file mode 100644 index 000000000..3bc9a17ac --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/README.md @@ -0,0 +1,11 @@ +# @smithy/signature-v4 + +[![NPM version](https://img.shields.io/npm/v/@smithy/signature-v4/latest.svg)](https://www.npmjs.com/package/@smithy/signature-v4) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/signature-v4.svg)](https://www.npmjs.com/package/@smithy/signature-v4) + +This package contains an implementation of the [AWS Signature Version 4](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html) +authentication scheme. + +It is internal to Smithy-TypeScript generated clients, and not generally intended for standalone usage outside this context. + +For custom usage, inspect the interface of the SignatureV4 class. diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-cjs/index.js new file mode 100644 index 000000000..362d7f305 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-cjs/index.js @@ -0,0 +1,556 @@ +'use strict'; + +var utilHexEncoding = require('@smithy/util-hex-encoding'); +var utilUtf8 = require('@smithy/util-utf8'); +var isArrayBuffer = require('@smithy/is-array-buffer'); +var protocolHttp = require('@smithy/protocol-http'); +var utilMiddleware = require('@smithy/util-middleware'); +var utilUriEscape = require('@smithy/util-uri-escape'); + +const ALGORITHM_QUERY_PARAM = "X-Amz-Algorithm"; +const CREDENTIAL_QUERY_PARAM = "X-Amz-Credential"; +const AMZ_DATE_QUERY_PARAM = "X-Amz-Date"; +const SIGNED_HEADERS_QUERY_PARAM = "X-Amz-SignedHeaders"; +const EXPIRES_QUERY_PARAM = "X-Amz-Expires"; +const SIGNATURE_QUERY_PARAM = "X-Amz-Signature"; +const TOKEN_QUERY_PARAM = "X-Amz-Security-Token"; +const REGION_SET_PARAM = "X-Amz-Region-Set"; +const AUTH_HEADER = "authorization"; +const AMZ_DATE_HEADER = AMZ_DATE_QUERY_PARAM.toLowerCase(); +const DATE_HEADER = "date"; +const GENERATED_HEADERS = [AUTH_HEADER, AMZ_DATE_HEADER, DATE_HEADER]; +const SIGNATURE_HEADER = SIGNATURE_QUERY_PARAM.toLowerCase(); +const SHA256_HEADER = "x-amz-content-sha256"; +const TOKEN_HEADER = TOKEN_QUERY_PARAM.toLowerCase(); +const HOST_HEADER = "host"; +const ALWAYS_UNSIGNABLE_HEADERS = { + authorization: true, + "cache-control": true, + connection: true, + expect: true, + from: true, + "keep-alive": true, + "max-forwards": true, + pragma: true, + referer: true, + te: true, + trailer: true, + "transfer-encoding": true, + upgrade: true, + "user-agent": true, + "x-amzn-trace-id": true, +}; +const PROXY_HEADER_PATTERN = /^proxy-/; +const SEC_HEADER_PATTERN = /^sec-/; +const UNSIGNABLE_PATTERNS = [/^proxy-/i, /^sec-/i]; +const ALGORITHM_IDENTIFIER = "AWS4-HMAC-SHA256"; +const ALGORITHM_IDENTIFIER_V4A = "AWS4-ECDSA-P256-SHA256"; +const EVENT_ALGORITHM_IDENTIFIER = "AWS4-HMAC-SHA256-PAYLOAD"; +const UNSIGNED_PAYLOAD = "UNSIGNED-PAYLOAD"; +const MAX_CACHE_SIZE = 50; +const KEY_TYPE_IDENTIFIER = "aws4_request"; +const MAX_PRESIGNED_TTL = 60 * 60 * 24 * 7; + +const signingKeyCache = {}; +const cacheQueue = []; +const createScope = (shortDate, region, service) => `${shortDate}/${region}/${service}/${KEY_TYPE_IDENTIFIER}`; +const getSigningKey = async (sha256Constructor, credentials, shortDate, region, service) => { + const credsHash = await hmac(sha256Constructor, credentials.secretAccessKey, credentials.accessKeyId); + const cacheKey = `${shortDate}:${region}:${service}:${utilHexEncoding.toHex(credsHash)}:${credentials.sessionToken}`; + if (cacheKey in signingKeyCache) { + return signingKeyCache[cacheKey]; + } + cacheQueue.push(cacheKey); + while (cacheQueue.length > MAX_CACHE_SIZE) { + delete signingKeyCache[cacheQueue.shift()]; + } + let key = `AWS4${credentials.secretAccessKey}`; + for (const signable of [shortDate, region, service, KEY_TYPE_IDENTIFIER]) { + key = await hmac(sha256Constructor, key, signable); + } + return (signingKeyCache[cacheKey] = key); +}; +const clearCredentialCache = () => { + cacheQueue.length = 0; + Object.keys(signingKeyCache).forEach((cacheKey) => { + delete signingKeyCache[cacheKey]; + }); +}; +const hmac = (ctor, secret, data) => { + const hash = new ctor(secret); + hash.update(utilUtf8.toUint8Array(data)); + return hash.digest(); +}; + +const getCanonicalHeaders = ({ headers }, unsignableHeaders, signableHeaders) => { + const canonical = {}; + for (const headerName of Object.keys(headers).sort()) { + if (headers[headerName] == undefined) { + continue; + } + const canonicalHeaderName = headerName.toLowerCase(); + if (canonicalHeaderName in ALWAYS_UNSIGNABLE_HEADERS || + unsignableHeaders?.has(canonicalHeaderName) || + PROXY_HEADER_PATTERN.test(canonicalHeaderName) || + SEC_HEADER_PATTERN.test(canonicalHeaderName)) { + if (!signableHeaders || (signableHeaders && !signableHeaders.has(canonicalHeaderName))) { + continue; + } + } + canonical[canonicalHeaderName] = headers[headerName].trim().replace(/\s+/g, " "); + } + return canonical; +}; + +const getPayloadHash = async ({ headers, body }, hashConstructor) => { + for (const headerName of Object.keys(headers)) { + if (headerName.toLowerCase() === SHA256_HEADER) { + return headers[headerName]; + } + } + if (body == undefined) { + return "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"; + } + else if (typeof body === "string" || ArrayBuffer.isView(body) || isArrayBuffer.isArrayBuffer(body)) { + const hashCtor = new hashConstructor(); + hashCtor.update(utilUtf8.toUint8Array(body)); + return utilHexEncoding.toHex(await hashCtor.digest()); + } + return UNSIGNED_PAYLOAD; +}; + +class HeaderFormatter { + format(headers) { + const chunks = []; + for (const headerName of Object.keys(headers)) { + const bytes = utilUtf8.fromUtf8(headerName); + chunks.push(Uint8Array.from([bytes.byteLength]), bytes, this.formatHeaderValue(headers[headerName])); + } + const out = new Uint8Array(chunks.reduce((carry, bytes) => carry + bytes.byteLength, 0)); + let position = 0; + for (const chunk of chunks) { + out.set(chunk, position); + position += chunk.byteLength; + } + return out; + } + formatHeaderValue(header) { + switch (header.type) { + case "boolean": + return Uint8Array.from([header.value ? 0 : 1]); + case "byte": + return Uint8Array.from([2, header.value]); + case "short": + const shortView = new DataView(new ArrayBuffer(3)); + shortView.setUint8(0, 3); + shortView.setInt16(1, header.value, false); + return new Uint8Array(shortView.buffer); + case "integer": + const intView = new DataView(new ArrayBuffer(5)); + intView.setUint8(0, 4); + intView.setInt32(1, header.value, false); + return new Uint8Array(intView.buffer); + case "long": + const longBytes = new Uint8Array(9); + longBytes[0] = 5; + longBytes.set(header.value.bytes, 1); + return longBytes; + case "binary": + const binView = new DataView(new ArrayBuffer(3 + header.value.byteLength)); + binView.setUint8(0, 6); + binView.setUint16(1, header.value.byteLength, false); + const binBytes = new Uint8Array(binView.buffer); + binBytes.set(header.value, 3); + return binBytes; + case "string": + const utf8Bytes = utilUtf8.fromUtf8(header.value); + const strView = new DataView(new ArrayBuffer(3 + utf8Bytes.byteLength)); + strView.setUint8(0, 7); + strView.setUint16(1, utf8Bytes.byteLength, false); + const strBytes = new Uint8Array(strView.buffer); + strBytes.set(utf8Bytes, 3); + return strBytes; + case "timestamp": + const tsBytes = new Uint8Array(9); + tsBytes[0] = 8; + tsBytes.set(Int64.fromNumber(header.value.valueOf()).bytes, 1); + return tsBytes; + case "uuid": + if (!UUID_PATTERN.test(header.value)) { + throw new Error(`Invalid UUID received: ${header.value}`); + } + const uuidBytes = new Uint8Array(17); + uuidBytes[0] = 9; + uuidBytes.set(utilHexEncoding.fromHex(header.value.replace(/\-/g, "")), 1); + return uuidBytes; + } + } +} +const UUID_PATTERN = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/; +class Int64 { + bytes; + constructor(bytes) { + this.bytes = bytes; + if (bytes.byteLength !== 8) { + throw new Error("Int64 buffers must be exactly 8 bytes"); + } + } + static fromNumber(number) { + if (number > 9_223_372_036_854_775_807 || number < -9223372036854776e3) { + throw new Error(`${number} is too large (or, if negative, too small) to represent as an Int64`); + } + const bytes = new Uint8Array(8); + for (let i = 7, remaining = Math.abs(Math.round(number)); i > -1 && remaining > 0; i--, remaining /= 256) { + bytes[i] = remaining; + } + if (number < 0) { + negate(bytes); + } + return new Int64(bytes); + } + valueOf() { + const bytes = this.bytes.slice(0); + const negative = bytes[0] & 0b10000000; + if (negative) { + negate(bytes); + } + return parseInt(utilHexEncoding.toHex(bytes), 16) * (negative ? -1 : 1); + } + toString() { + return String(this.valueOf()); + } +} +function negate(bytes) { + for (let i = 0; i < 8; i++) { + bytes[i] ^= 0xff; + } + for (let i = 7; i > -1; i--) { + bytes[i]++; + if (bytes[i] !== 0) + break; + } +} + +const hasHeader = (soughtHeader, headers) => { + soughtHeader = soughtHeader.toLowerCase(); + for (const headerName of Object.keys(headers)) { + if (soughtHeader === headerName.toLowerCase()) { + return true; + } + } + return false; +}; + +const moveHeadersToQuery = (request, options = {}) => { + const { headers, query = {} } = protocolHttp.HttpRequest.clone(request); + for (const name of Object.keys(headers)) { + const lname = name.toLowerCase(); + if ((lname.slice(0, 6) === "x-amz-" && !options.unhoistableHeaders?.has(lname)) || + options.hoistableHeaders?.has(lname)) { + query[name] = headers[name]; + delete headers[name]; + } + } + return { + ...request, + headers, + query, + }; +}; + +const prepareRequest = (request) => { + request = protocolHttp.HttpRequest.clone(request); + for (const headerName of Object.keys(request.headers)) { + if (GENERATED_HEADERS.indexOf(headerName.toLowerCase()) > -1) { + delete request.headers[headerName]; + } + } + return request; +}; + +const getCanonicalQuery = ({ query = {} }) => { + const keys = []; + const serialized = {}; + for (const key of Object.keys(query)) { + if (key.toLowerCase() === SIGNATURE_HEADER) { + continue; + } + const encodedKey = utilUriEscape.escapeUri(key); + keys.push(encodedKey); + const value = query[key]; + if (typeof value === "string") { + serialized[encodedKey] = `${encodedKey}=${utilUriEscape.escapeUri(value)}`; + } + else if (Array.isArray(value)) { + serialized[encodedKey] = value + .slice(0) + .reduce((encoded, value) => encoded.concat([`${encodedKey}=${utilUriEscape.escapeUri(value)}`]), []) + .sort() + .join("&"); + } + } + return keys + .sort() + .map((key) => serialized[key]) + .filter((serialized) => serialized) + .join("&"); +}; + +const iso8601 = (time) => toDate(time) + .toISOString() + .replace(/\.\d{3}Z$/, "Z"); +const toDate = (time) => { + if (typeof time === "number") { + return new Date(time * 1000); + } + if (typeof time === "string") { + if (Number(time)) { + return new Date(Number(time) * 1000); + } + return new Date(time); + } + return time; +}; + +class SignatureV4Base { + service; + regionProvider; + credentialProvider; + sha256; + uriEscapePath; + applyChecksum; + constructor({ applyChecksum, credentials, region, service, sha256, uriEscapePath = true, }) { + this.service = service; + this.sha256 = sha256; + this.uriEscapePath = uriEscapePath; + this.applyChecksum = typeof applyChecksum === "boolean" ? applyChecksum : true; + this.regionProvider = utilMiddleware.normalizeProvider(region); + this.credentialProvider = utilMiddleware.normalizeProvider(credentials); + } + createCanonicalRequest(request, canonicalHeaders, payloadHash) { + const sortedHeaders = Object.keys(canonicalHeaders).sort(); + return `${request.method} +${this.getCanonicalPath(request)} +${getCanonicalQuery(request)} +${sortedHeaders.map((name) => `${name}:${canonicalHeaders[name]}`).join("\n")} + +${sortedHeaders.join(";")} +${payloadHash}`; + } + async createStringToSign(longDate, credentialScope, canonicalRequest, algorithmIdentifier) { + const hash = new this.sha256(); + hash.update(utilUtf8.toUint8Array(canonicalRequest)); + const hashedRequest = await hash.digest(); + return `${algorithmIdentifier} +${longDate} +${credentialScope} +${utilHexEncoding.toHex(hashedRequest)}`; + } + getCanonicalPath({ path }) { + if (this.uriEscapePath) { + const normalizedPathSegments = []; + for (const pathSegment of path.split("/")) { + if (pathSegment?.length === 0) + continue; + if (pathSegment === ".") + continue; + if (pathSegment === "..") { + normalizedPathSegments.pop(); + } + else { + normalizedPathSegments.push(pathSegment); + } + } + const normalizedPath = `${path?.startsWith("/") ? "/" : ""}${normalizedPathSegments.join("/")}${normalizedPathSegments.length > 0 && path?.endsWith("/") ? "/" : ""}`; + const doubleEncoded = utilUriEscape.escapeUri(normalizedPath); + return doubleEncoded.replace(/%2F/g, "/"); + } + return path; + } + validateResolvedCredentials(credentials) { + if (typeof credentials !== "object" || + typeof credentials.accessKeyId !== "string" || + typeof credentials.secretAccessKey !== "string") { + throw new Error("Resolved credential object is not valid"); + } + } + formatDate(now) { + const longDate = iso8601(now).replace(/[\-:]/g, ""); + return { + longDate, + shortDate: longDate.slice(0, 8), + }; + } + getCanonicalHeaderList(headers) { + return Object.keys(headers).sort().join(";"); + } +} + +class SignatureV4 extends SignatureV4Base { + headerFormatter = new HeaderFormatter(); + constructor({ applyChecksum, credentials, region, service, sha256, uriEscapePath = true, }) { + super({ + applyChecksum, + credentials, + region, + service, + sha256, + uriEscapePath, + }); + } + async presign(originalRequest, options = {}) { + const { signingDate = new Date(), expiresIn = 3600, unsignableHeaders, unhoistableHeaders, signableHeaders, hoistableHeaders, signingRegion, signingService, } = options; + const credentials = await this.credentialProvider(); + this.validateResolvedCredentials(credentials); + const region = signingRegion ?? (await this.regionProvider()); + const { longDate, shortDate } = this.formatDate(signingDate); + if (expiresIn > MAX_PRESIGNED_TTL) { + return Promise.reject("Signature version 4 presigned URLs" + " must have an expiration date less than one week in" + " the future"); + } + const scope = createScope(shortDate, region, signingService ?? this.service); + const request = moveHeadersToQuery(prepareRequest(originalRequest), { unhoistableHeaders, hoistableHeaders }); + if (credentials.sessionToken) { + request.query[TOKEN_QUERY_PARAM] = credentials.sessionToken; + } + request.query[ALGORITHM_QUERY_PARAM] = ALGORITHM_IDENTIFIER; + request.query[CREDENTIAL_QUERY_PARAM] = `${credentials.accessKeyId}/${scope}`; + request.query[AMZ_DATE_QUERY_PARAM] = longDate; + request.query[EXPIRES_QUERY_PARAM] = expiresIn.toString(10); + const canonicalHeaders = getCanonicalHeaders(request, unsignableHeaders, signableHeaders); + request.query[SIGNED_HEADERS_QUERY_PARAM] = this.getCanonicalHeaderList(canonicalHeaders); + request.query[SIGNATURE_QUERY_PARAM] = await this.getSignature(longDate, scope, this.getSigningKey(credentials, region, shortDate, signingService), this.createCanonicalRequest(request, canonicalHeaders, await getPayloadHash(originalRequest, this.sha256))); + return request; + } + async sign(toSign, options) { + if (typeof toSign === "string") { + return this.signString(toSign, options); + } + else if (toSign.headers && toSign.payload) { + return this.signEvent(toSign, options); + } + else if (toSign.message) { + return this.signMessage(toSign, options); + } + else { + return this.signRequest(toSign, options); + } + } + async signEvent({ headers, payload }, { signingDate = new Date(), priorSignature, signingRegion, signingService }) { + const region = signingRegion ?? (await this.regionProvider()); + const { shortDate, longDate } = this.formatDate(signingDate); + const scope = createScope(shortDate, region, signingService ?? this.service); + const hashedPayload = await getPayloadHash({ headers: {}, body: payload }, this.sha256); + const hash = new this.sha256(); + hash.update(headers); + const hashedHeaders = utilHexEncoding.toHex(await hash.digest()); + const stringToSign = [ + EVENT_ALGORITHM_IDENTIFIER, + longDate, + scope, + priorSignature, + hashedHeaders, + hashedPayload, + ].join("\n"); + return this.signString(stringToSign, { signingDate, signingRegion: region, signingService }); + } + async signMessage(signableMessage, { signingDate = new Date(), signingRegion, signingService }) { + const promise = this.signEvent({ + headers: this.headerFormatter.format(signableMessage.message.headers), + payload: signableMessage.message.body, + }, { + signingDate, + signingRegion, + signingService, + priorSignature: signableMessage.priorSignature, + }); + return promise.then((signature) => { + return { message: signableMessage.message, signature }; + }); + } + async signString(stringToSign, { signingDate = new Date(), signingRegion, signingService } = {}) { + const credentials = await this.credentialProvider(); + this.validateResolvedCredentials(credentials); + const region = signingRegion ?? (await this.regionProvider()); + const { shortDate } = this.formatDate(signingDate); + const hash = new this.sha256(await this.getSigningKey(credentials, region, shortDate, signingService)); + hash.update(utilUtf8.toUint8Array(stringToSign)); + return utilHexEncoding.toHex(await hash.digest()); + } + async signRequest(requestToSign, { signingDate = new Date(), signableHeaders, unsignableHeaders, signingRegion, signingService, } = {}) { + const credentials = await this.credentialProvider(); + this.validateResolvedCredentials(credentials); + const region = signingRegion ?? (await this.regionProvider()); + const request = prepareRequest(requestToSign); + const { longDate, shortDate } = this.formatDate(signingDate); + const scope = createScope(shortDate, region, signingService ?? this.service); + request.headers[AMZ_DATE_HEADER] = longDate; + if (credentials.sessionToken) { + request.headers[TOKEN_HEADER] = credentials.sessionToken; + } + const payloadHash = await getPayloadHash(request, this.sha256); + if (!hasHeader(SHA256_HEADER, request.headers) && this.applyChecksum) { + request.headers[SHA256_HEADER] = payloadHash; + } + const canonicalHeaders = getCanonicalHeaders(request, unsignableHeaders, signableHeaders); + const signature = await this.getSignature(longDate, scope, this.getSigningKey(credentials, region, shortDate, signingService), this.createCanonicalRequest(request, canonicalHeaders, payloadHash)); + request.headers[AUTH_HEADER] = + `${ALGORITHM_IDENTIFIER} ` + + `Credential=${credentials.accessKeyId}/${scope}, ` + + `SignedHeaders=${this.getCanonicalHeaderList(canonicalHeaders)}, ` + + `Signature=${signature}`; + return request; + } + async getSignature(longDate, credentialScope, keyPromise, canonicalRequest) { + const stringToSign = await this.createStringToSign(longDate, credentialScope, canonicalRequest, ALGORITHM_IDENTIFIER); + const hash = new this.sha256(await keyPromise); + hash.update(utilUtf8.toUint8Array(stringToSign)); + return utilHexEncoding.toHex(await hash.digest()); + } + getSigningKey(credentials, region, shortDate, service) { + return getSigningKey(this.sha256, credentials, shortDate, region, service || this.service); + } +} + +const signatureV4aContainer = { + SignatureV4a: null, +}; + +exports.ALGORITHM_IDENTIFIER = ALGORITHM_IDENTIFIER; +exports.ALGORITHM_IDENTIFIER_V4A = ALGORITHM_IDENTIFIER_V4A; +exports.ALGORITHM_QUERY_PARAM = ALGORITHM_QUERY_PARAM; +exports.ALWAYS_UNSIGNABLE_HEADERS = ALWAYS_UNSIGNABLE_HEADERS; +exports.AMZ_DATE_HEADER = AMZ_DATE_HEADER; +exports.AMZ_DATE_QUERY_PARAM = AMZ_DATE_QUERY_PARAM; +exports.AUTH_HEADER = AUTH_HEADER; +exports.CREDENTIAL_QUERY_PARAM = CREDENTIAL_QUERY_PARAM; +exports.DATE_HEADER = DATE_HEADER; +exports.EVENT_ALGORITHM_IDENTIFIER = EVENT_ALGORITHM_IDENTIFIER; +exports.EXPIRES_QUERY_PARAM = EXPIRES_QUERY_PARAM; +exports.GENERATED_HEADERS = GENERATED_HEADERS; +exports.HOST_HEADER = HOST_HEADER; +exports.KEY_TYPE_IDENTIFIER = KEY_TYPE_IDENTIFIER; +exports.MAX_CACHE_SIZE = MAX_CACHE_SIZE; +exports.MAX_PRESIGNED_TTL = MAX_PRESIGNED_TTL; +exports.PROXY_HEADER_PATTERN = PROXY_HEADER_PATTERN; +exports.REGION_SET_PARAM = REGION_SET_PARAM; +exports.SEC_HEADER_PATTERN = SEC_HEADER_PATTERN; +exports.SHA256_HEADER = SHA256_HEADER; +exports.SIGNATURE_HEADER = SIGNATURE_HEADER; +exports.SIGNATURE_QUERY_PARAM = SIGNATURE_QUERY_PARAM; +exports.SIGNED_HEADERS_QUERY_PARAM = SIGNED_HEADERS_QUERY_PARAM; +exports.SignatureV4 = SignatureV4; +exports.SignatureV4Base = SignatureV4Base; +exports.TOKEN_HEADER = TOKEN_HEADER; +exports.TOKEN_QUERY_PARAM = TOKEN_QUERY_PARAM; +exports.UNSIGNABLE_PATTERNS = UNSIGNABLE_PATTERNS; +exports.UNSIGNED_PAYLOAD = UNSIGNED_PAYLOAD; +exports.clearCredentialCache = clearCredentialCache; +exports.createScope = createScope; +exports.getCanonicalHeaders = getCanonicalHeaders; +exports.getCanonicalQuery = getCanonicalQuery; +exports.getPayloadHash = getPayloadHash; +exports.getSigningKey = getSigningKey; +exports.hasHeader = hasHeader; +exports.moveHeadersToQuery = moveHeadersToQuery; +exports.prepareRequest = prepareRequest; +exports.signatureV4aContainer = signatureV4aContainer; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/HeaderFormatter.js b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/HeaderFormatter.js new file mode 100644 index 000000000..936012bd5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/HeaderFormatter.js @@ -0,0 +1,126 @@ +import { fromHex, toHex } from "@smithy/util-hex-encoding"; +import { fromUtf8 } from "@smithy/util-utf8"; +export class HeaderFormatter { + format(headers) { + const chunks = []; + for (const headerName of Object.keys(headers)) { + const bytes = fromUtf8(headerName); + chunks.push(Uint8Array.from([bytes.byteLength]), bytes, this.formatHeaderValue(headers[headerName])); + } + const out = new Uint8Array(chunks.reduce((carry, bytes) => carry + bytes.byteLength, 0)); + let position = 0; + for (const chunk of chunks) { + out.set(chunk, position); + position += chunk.byteLength; + } + return out; + } + formatHeaderValue(header) { + switch (header.type) { + case "boolean": + return Uint8Array.from([header.value ? 0 : 1]); + case "byte": + return Uint8Array.from([2, header.value]); + case "short": + const shortView = new DataView(new ArrayBuffer(3)); + shortView.setUint8(0, 3); + shortView.setInt16(1, header.value, false); + return new Uint8Array(shortView.buffer); + case "integer": + const intView = new DataView(new ArrayBuffer(5)); + intView.setUint8(0, 4); + intView.setInt32(1, header.value, false); + return new Uint8Array(intView.buffer); + case "long": + const longBytes = new Uint8Array(9); + longBytes[0] = 5; + longBytes.set(header.value.bytes, 1); + return longBytes; + case "binary": + const binView = new DataView(new ArrayBuffer(3 + header.value.byteLength)); + binView.setUint8(0, 6); + binView.setUint16(1, header.value.byteLength, false); + const binBytes = new Uint8Array(binView.buffer); + binBytes.set(header.value, 3); + return binBytes; + case "string": + const utf8Bytes = fromUtf8(header.value); + const strView = new DataView(new ArrayBuffer(3 + utf8Bytes.byteLength)); + strView.setUint8(0, 7); + strView.setUint16(1, utf8Bytes.byteLength, false); + const strBytes = new Uint8Array(strView.buffer); + strBytes.set(utf8Bytes, 3); + return strBytes; + case "timestamp": + const tsBytes = new Uint8Array(9); + tsBytes[0] = 8; + tsBytes.set(Int64.fromNumber(header.value.valueOf()).bytes, 1); + return tsBytes; + case "uuid": + if (!UUID_PATTERN.test(header.value)) { + throw new Error(`Invalid UUID received: ${header.value}`); + } + const uuidBytes = new Uint8Array(17); + uuidBytes[0] = 9; + uuidBytes.set(fromHex(header.value.replace(/\-/g, "")), 1); + return uuidBytes; + } + } +} +var HEADER_VALUE_TYPE; +(function (HEADER_VALUE_TYPE) { + HEADER_VALUE_TYPE[HEADER_VALUE_TYPE["boolTrue"] = 0] = "boolTrue"; + HEADER_VALUE_TYPE[HEADER_VALUE_TYPE["boolFalse"] = 1] = "boolFalse"; + HEADER_VALUE_TYPE[HEADER_VALUE_TYPE["byte"] = 2] = "byte"; + HEADER_VALUE_TYPE[HEADER_VALUE_TYPE["short"] = 3] = "short"; + HEADER_VALUE_TYPE[HEADER_VALUE_TYPE["integer"] = 4] = "integer"; + HEADER_VALUE_TYPE[HEADER_VALUE_TYPE["long"] = 5] = "long"; + HEADER_VALUE_TYPE[HEADER_VALUE_TYPE["byteArray"] = 6] = "byteArray"; + HEADER_VALUE_TYPE[HEADER_VALUE_TYPE["string"] = 7] = "string"; + HEADER_VALUE_TYPE[HEADER_VALUE_TYPE["timestamp"] = 8] = "timestamp"; + HEADER_VALUE_TYPE[HEADER_VALUE_TYPE["uuid"] = 9] = "uuid"; +})(HEADER_VALUE_TYPE || (HEADER_VALUE_TYPE = {})); +const UUID_PATTERN = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/; +export class Int64 { + bytes; + constructor(bytes) { + this.bytes = bytes; + if (bytes.byteLength !== 8) { + throw new Error("Int64 buffers must be exactly 8 bytes"); + } + } + static fromNumber(number) { + if (number > 9_223_372_036_854_775_807 || number < -9_223_372_036_854_775_808) { + throw new Error(`${number} is too large (or, if negative, too small) to represent as an Int64`); + } + const bytes = new Uint8Array(8); + for (let i = 7, remaining = Math.abs(Math.round(number)); i > -1 && remaining > 0; i--, remaining /= 256) { + bytes[i] = remaining; + } + if (number < 0) { + negate(bytes); + } + return new Int64(bytes); + } + valueOf() { + const bytes = this.bytes.slice(0); + const negative = bytes[0] & 0b10000000; + if (negative) { + negate(bytes); + } + return parseInt(toHex(bytes), 16) * (negative ? -1 : 1); + } + toString() { + return String(this.valueOf()); + } +} +function negate(bytes) { + for (let i = 0; i < 8; i++) { + bytes[i] ^= 0xff; + } + for (let i = 7; i > -1; i--) { + bytes[i]++; + if (bytes[i] !== 0) + break; + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/SignatureV4.js b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/SignatureV4.js new file mode 100644 index 000000000..3e874cfec --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/SignatureV4.js @@ -0,0 +1,135 @@ +import { toHex } from "@smithy/util-hex-encoding"; +import { toUint8Array } from "@smithy/util-utf8"; +import { ALGORITHM_IDENTIFIER, ALGORITHM_QUERY_PARAM, AMZ_DATE_HEADER, AMZ_DATE_QUERY_PARAM, AUTH_HEADER, CREDENTIAL_QUERY_PARAM, EVENT_ALGORITHM_IDENTIFIER, EXPIRES_QUERY_PARAM, MAX_PRESIGNED_TTL, SHA256_HEADER, SIGNATURE_QUERY_PARAM, SIGNED_HEADERS_QUERY_PARAM, TOKEN_HEADER, TOKEN_QUERY_PARAM, } from "./constants"; +import { createScope, getSigningKey } from "./credentialDerivation"; +import { getCanonicalHeaders } from "./getCanonicalHeaders"; +import { getPayloadHash } from "./getPayloadHash"; +import { HeaderFormatter } from "./HeaderFormatter"; +import { hasHeader } from "./headerUtil"; +import { moveHeadersToQuery } from "./moveHeadersToQuery"; +import { prepareRequest } from "./prepareRequest"; +import { SignatureV4Base } from "./SignatureV4Base"; +export class SignatureV4 extends SignatureV4Base { + headerFormatter = new HeaderFormatter(); + constructor({ applyChecksum, credentials, region, service, sha256, uriEscapePath = true, }) { + super({ + applyChecksum, + credentials, + region, + service, + sha256, + uriEscapePath, + }); + } + async presign(originalRequest, options = {}) { + const { signingDate = new Date(), expiresIn = 3600, unsignableHeaders, unhoistableHeaders, signableHeaders, hoistableHeaders, signingRegion, signingService, } = options; + const credentials = await this.credentialProvider(); + this.validateResolvedCredentials(credentials); + const region = signingRegion ?? (await this.regionProvider()); + const { longDate, shortDate } = this.formatDate(signingDate); + if (expiresIn > MAX_PRESIGNED_TTL) { + return Promise.reject("Signature version 4 presigned URLs" + " must have an expiration date less than one week in" + " the future"); + } + const scope = createScope(shortDate, region, signingService ?? this.service); + const request = moveHeadersToQuery(prepareRequest(originalRequest), { unhoistableHeaders, hoistableHeaders }); + if (credentials.sessionToken) { + request.query[TOKEN_QUERY_PARAM] = credentials.sessionToken; + } + request.query[ALGORITHM_QUERY_PARAM] = ALGORITHM_IDENTIFIER; + request.query[CREDENTIAL_QUERY_PARAM] = `${credentials.accessKeyId}/${scope}`; + request.query[AMZ_DATE_QUERY_PARAM] = longDate; + request.query[EXPIRES_QUERY_PARAM] = expiresIn.toString(10); + const canonicalHeaders = getCanonicalHeaders(request, unsignableHeaders, signableHeaders); + request.query[SIGNED_HEADERS_QUERY_PARAM] = this.getCanonicalHeaderList(canonicalHeaders); + request.query[SIGNATURE_QUERY_PARAM] = await this.getSignature(longDate, scope, this.getSigningKey(credentials, region, shortDate, signingService), this.createCanonicalRequest(request, canonicalHeaders, await getPayloadHash(originalRequest, this.sha256))); + return request; + } + async sign(toSign, options) { + if (typeof toSign === "string") { + return this.signString(toSign, options); + } + else if (toSign.headers && toSign.payload) { + return this.signEvent(toSign, options); + } + else if (toSign.message) { + return this.signMessage(toSign, options); + } + else { + return this.signRequest(toSign, options); + } + } + async signEvent({ headers, payload }, { signingDate = new Date(), priorSignature, signingRegion, signingService }) { + const region = signingRegion ?? (await this.regionProvider()); + const { shortDate, longDate } = this.formatDate(signingDate); + const scope = createScope(shortDate, region, signingService ?? this.service); + const hashedPayload = await getPayloadHash({ headers: {}, body: payload }, this.sha256); + const hash = new this.sha256(); + hash.update(headers); + const hashedHeaders = toHex(await hash.digest()); + const stringToSign = [ + EVENT_ALGORITHM_IDENTIFIER, + longDate, + scope, + priorSignature, + hashedHeaders, + hashedPayload, + ].join("\n"); + return this.signString(stringToSign, { signingDate, signingRegion: region, signingService }); + } + async signMessage(signableMessage, { signingDate = new Date(), signingRegion, signingService }) { + const promise = this.signEvent({ + headers: this.headerFormatter.format(signableMessage.message.headers), + payload: signableMessage.message.body, + }, { + signingDate, + signingRegion, + signingService, + priorSignature: signableMessage.priorSignature, + }); + return promise.then((signature) => { + return { message: signableMessage.message, signature }; + }); + } + async signString(stringToSign, { signingDate = new Date(), signingRegion, signingService } = {}) { + const credentials = await this.credentialProvider(); + this.validateResolvedCredentials(credentials); + const region = signingRegion ?? (await this.regionProvider()); + const { shortDate } = this.formatDate(signingDate); + const hash = new this.sha256(await this.getSigningKey(credentials, region, shortDate, signingService)); + hash.update(toUint8Array(stringToSign)); + return toHex(await hash.digest()); + } + async signRequest(requestToSign, { signingDate = new Date(), signableHeaders, unsignableHeaders, signingRegion, signingService, } = {}) { + const credentials = await this.credentialProvider(); + this.validateResolvedCredentials(credentials); + const region = signingRegion ?? (await this.regionProvider()); + const request = prepareRequest(requestToSign); + const { longDate, shortDate } = this.formatDate(signingDate); + const scope = createScope(shortDate, region, signingService ?? this.service); + request.headers[AMZ_DATE_HEADER] = longDate; + if (credentials.sessionToken) { + request.headers[TOKEN_HEADER] = credentials.sessionToken; + } + const payloadHash = await getPayloadHash(request, this.sha256); + if (!hasHeader(SHA256_HEADER, request.headers) && this.applyChecksum) { + request.headers[SHA256_HEADER] = payloadHash; + } + const canonicalHeaders = getCanonicalHeaders(request, unsignableHeaders, signableHeaders); + const signature = await this.getSignature(longDate, scope, this.getSigningKey(credentials, region, shortDate, signingService), this.createCanonicalRequest(request, canonicalHeaders, payloadHash)); + request.headers[AUTH_HEADER] = + `${ALGORITHM_IDENTIFIER} ` + + `Credential=${credentials.accessKeyId}/${scope}, ` + + `SignedHeaders=${this.getCanonicalHeaderList(canonicalHeaders)}, ` + + `Signature=${signature}`; + return request; + } + async getSignature(longDate, credentialScope, keyPromise, canonicalRequest) { + const stringToSign = await this.createStringToSign(longDate, credentialScope, canonicalRequest, ALGORITHM_IDENTIFIER); + const hash = new this.sha256(await keyPromise); + hash.update(toUint8Array(stringToSign)); + return toHex(await hash.digest()); + } + getSigningKey(credentials, region, shortDate, service) { + return getSigningKey(this.sha256, credentials, shortDate, region, service || this.service); + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/SignatureV4Base.js b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/SignatureV4Base.js new file mode 100644 index 000000000..a23d95b93 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/SignatureV4Base.js @@ -0,0 +1,79 @@ +import { toHex } from "@smithy/util-hex-encoding"; +import { normalizeProvider } from "@smithy/util-middleware"; +import { escapeUri } from "@smithy/util-uri-escape"; +import { toUint8Array } from "@smithy/util-utf8"; +import { getCanonicalQuery } from "./getCanonicalQuery"; +import { iso8601 } from "./utilDate"; +export class SignatureV4Base { + service; + regionProvider; + credentialProvider; + sha256; + uriEscapePath; + applyChecksum; + constructor({ applyChecksum, credentials, region, service, sha256, uriEscapePath = true, }) { + this.service = service; + this.sha256 = sha256; + this.uriEscapePath = uriEscapePath; + this.applyChecksum = typeof applyChecksum === "boolean" ? applyChecksum : true; + this.regionProvider = normalizeProvider(region); + this.credentialProvider = normalizeProvider(credentials); + } + createCanonicalRequest(request, canonicalHeaders, payloadHash) { + const sortedHeaders = Object.keys(canonicalHeaders).sort(); + return `${request.method} +${this.getCanonicalPath(request)} +${getCanonicalQuery(request)} +${sortedHeaders.map((name) => `${name}:${canonicalHeaders[name]}`).join("\n")} + +${sortedHeaders.join(";")} +${payloadHash}`; + } + async createStringToSign(longDate, credentialScope, canonicalRequest, algorithmIdentifier) { + const hash = new this.sha256(); + hash.update(toUint8Array(canonicalRequest)); + const hashedRequest = await hash.digest(); + return `${algorithmIdentifier} +${longDate} +${credentialScope} +${toHex(hashedRequest)}`; + } + getCanonicalPath({ path }) { + if (this.uriEscapePath) { + const normalizedPathSegments = []; + for (const pathSegment of path.split("/")) { + if (pathSegment?.length === 0) + continue; + if (pathSegment === ".") + continue; + if (pathSegment === "..") { + normalizedPathSegments.pop(); + } + else { + normalizedPathSegments.push(pathSegment); + } + } + const normalizedPath = `${path?.startsWith("/") ? "/" : ""}${normalizedPathSegments.join("/")}${normalizedPathSegments.length > 0 && path?.endsWith("/") ? "/" : ""}`; + const doubleEncoded = escapeUri(normalizedPath); + return doubleEncoded.replace(/%2F/g, "/"); + } + return path; + } + validateResolvedCredentials(credentials) { + if (typeof credentials !== "object" || + typeof credentials.accessKeyId !== "string" || + typeof credentials.secretAccessKey !== "string") { + throw new Error("Resolved credential object is not valid"); + } + } + formatDate(now) { + const longDate = iso8601(now).replace(/[\-:]/g, ""); + return { + longDate, + shortDate: longDate.slice(0, 8), + }; + } + getCanonicalHeaderList(headers) { + return Object.keys(headers).sort().join(";"); + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/constants.js b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/constants.js new file mode 100644 index 000000000..602728ad4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/constants.js @@ -0,0 +1,43 @@ +export const ALGORITHM_QUERY_PARAM = "X-Amz-Algorithm"; +export const CREDENTIAL_QUERY_PARAM = "X-Amz-Credential"; +export const AMZ_DATE_QUERY_PARAM = "X-Amz-Date"; +export const SIGNED_HEADERS_QUERY_PARAM = "X-Amz-SignedHeaders"; +export const EXPIRES_QUERY_PARAM = "X-Amz-Expires"; +export const SIGNATURE_QUERY_PARAM = "X-Amz-Signature"; +export const TOKEN_QUERY_PARAM = "X-Amz-Security-Token"; +export const REGION_SET_PARAM = "X-Amz-Region-Set"; +export const AUTH_HEADER = "authorization"; +export const AMZ_DATE_HEADER = AMZ_DATE_QUERY_PARAM.toLowerCase(); +export const DATE_HEADER = "date"; +export const GENERATED_HEADERS = [AUTH_HEADER, AMZ_DATE_HEADER, DATE_HEADER]; +export const SIGNATURE_HEADER = SIGNATURE_QUERY_PARAM.toLowerCase(); +export const SHA256_HEADER = "x-amz-content-sha256"; +export const TOKEN_HEADER = TOKEN_QUERY_PARAM.toLowerCase(); +export const HOST_HEADER = "host"; +export const ALWAYS_UNSIGNABLE_HEADERS = { + authorization: true, + "cache-control": true, + connection: true, + expect: true, + from: true, + "keep-alive": true, + "max-forwards": true, + pragma: true, + referer: true, + te: true, + trailer: true, + "transfer-encoding": true, + upgrade: true, + "user-agent": true, + "x-amzn-trace-id": true, +}; +export const PROXY_HEADER_PATTERN = /^proxy-/; +export const SEC_HEADER_PATTERN = /^sec-/; +export const UNSIGNABLE_PATTERNS = [/^proxy-/i, /^sec-/i]; +export const ALGORITHM_IDENTIFIER = "AWS4-HMAC-SHA256"; +export const ALGORITHM_IDENTIFIER_V4A = "AWS4-ECDSA-P256-SHA256"; +export const EVENT_ALGORITHM_IDENTIFIER = "AWS4-HMAC-SHA256-PAYLOAD"; +export const UNSIGNED_PAYLOAD = "UNSIGNED-PAYLOAD"; +export const MAX_CACHE_SIZE = 50; +export const KEY_TYPE_IDENTIFIER = "aws4_request"; +export const MAX_PRESIGNED_TTL = 60 * 60 * 24 * 7; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/credentialDerivation.js b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/credentialDerivation.js new file mode 100644 index 000000000..b16ab8c79 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/credentialDerivation.js @@ -0,0 +1,33 @@ +import { toHex } from "@smithy/util-hex-encoding"; +import { toUint8Array } from "@smithy/util-utf8"; +import { KEY_TYPE_IDENTIFIER, MAX_CACHE_SIZE } from "./constants"; +const signingKeyCache = {}; +const cacheQueue = []; +export const createScope = (shortDate, region, service) => `${shortDate}/${region}/${service}/${KEY_TYPE_IDENTIFIER}`; +export const getSigningKey = async (sha256Constructor, credentials, shortDate, region, service) => { + const credsHash = await hmac(sha256Constructor, credentials.secretAccessKey, credentials.accessKeyId); + const cacheKey = `${shortDate}:${region}:${service}:${toHex(credsHash)}:${credentials.sessionToken}`; + if (cacheKey in signingKeyCache) { + return signingKeyCache[cacheKey]; + } + cacheQueue.push(cacheKey); + while (cacheQueue.length > MAX_CACHE_SIZE) { + delete signingKeyCache[cacheQueue.shift()]; + } + let key = `AWS4${credentials.secretAccessKey}`; + for (const signable of [shortDate, region, service, KEY_TYPE_IDENTIFIER]) { + key = await hmac(sha256Constructor, key, signable); + } + return (signingKeyCache[cacheKey] = key); +}; +export const clearCredentialCache = () => { + cacheQueue.length = 0; + Object.keys(signingKeyCache).forEach((cacheKey) => { + delete signingKeyCache[cacheKey]; + }); +}; +const hmac = (ctor, secret, data) => { + const hash = new ctor(secret); + hash.update(toUint8Array(data)); + return hash.digest(); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/getCanonicalHeaders.js b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/getCanonicalHeaders.js new file mode 100644 index 000000000..33211255f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/getCanonicalHeaders.js @@ -0,0 +1,20 @@ +import { ALWAYS_UNSIGNABLE_HEADERS, PROXY_HEADER_PATTERN, SEC_HEADER_PATTERN } from "./constants"; +export const getCanonicalHeaders = ({ headers }, unsignableHeaders, signableHeaders) => { + const canonical = {}; + for (const headerName of Object.keys(headers).sort()) { + if (headers[headerName] == undefined) { + continue; + } + const canonicalHeaderName = headerName.toLowerCase(); + if (canonicalHeaderName in ALWAYS_UNSIGNABLE_HEADERS || + unsignableHeaders?.has(canonicalHeaderName) || + PROXY_HEADER_PATTERN.test(canonicalHeaderName) || + SEC_HEADER_PATTERN.test(canonicalHeaderName)) { + if (!signableHeaders || (signableHeaders && !signableHeaders.has(canonicalHeaderName))) { + continue; + } + } + canonical[canonicalHeaderName] = headers[headerName].trim().replace(/\s+/g, " "); + } + return canonical; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/getCanonicalQuery.js b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/getCanonicalQuery.js new file mode 100644 index 000000000..0623f1aa6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/getCanonicalQuery.js @@ -0,0 +1,29 @@ +import { escapeUri } from "@smithy/util-uri-escape"; +import { SIGNATURE_HEADER } from "./constants"; +export const getCanonicalQuery = ({ query = {} }) => { + const keys = []; + const serialized = {}; + for (const key of Object.keys(query)) { + if (key.toLowerCase() === SIGNATURE_HEADER) { + continue; + } + const encodedKey = escapeUri(key); + keys.push(encodedKey); + const value = query[key]; + if (typeof value === "string") { + serialized[encodedKey] = `${encodedKey}=${escapeUri(value)}`; + } + else if (Array.isArray(value)) { + serialized[encodedKey] = value + .slice(0) + .reduce((encoded, value) => encoded.concat([`${encodedKey}=${escapeUri(value)}`]), []) + .sort() + .join("&"); + } + } + return keys + .sort() + .map((key) => serialized[key]) + .filter((serialized) => serialized) + .join("&"); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/getPayloadHash.js b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/getPayloadHash.js new file mode 100644 index 000000000..cba165c34 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/getPayloadHash.js @@ -0,0 +1,20 @@ +import { isArrayBuffer } from "@smithy/is-array-buffer"; +import { toHex } from "@smithy/util-hex-encoding"; +import { toUint8Array } from "@smithy/util-utf8"; +import { SHA256_HEADER, UNSIGNED_PAYLOAD } from "./constants"; +export const getPayloadHash = async ({ headers, body }, hashConstructor) => { + for (const headerName of Object.keys(headers)) { + if (headerName.toLowerCase() === SHA256_HEADER) { + return headers[headerName]; + } + } + if (body == undefined) { + return "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"; + } + else if (typeof body === "string" || ArrayBuffer.isView(body) || isArrayBuffer(body)) { + const hashCtor = new hashConstructor(); + hashCtor.update(toUint8Array(body)); + return toHex(await hashCtor.digest()); + } + return UNSIGNED_PAYLOAD; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/headerUtil.js b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/headerUtil.js new file mode 100644 index 000000000..e502cbbcb --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/headerUtil.js @@ -0,0 +1,26 @@ +export const hasHeader = (soughtHeader, headers) => { + soughtHeader = soughtHeader.toLowerCase(); + for (const headerName of Object.keys(headers)) { + if (soughtHeader === headerName.toLowerCase()) { + return true; + } + } + return false; +}; +export const getHeaderValue = (soughtHeader, headers) => { + soughtHeader = soughtHeader.toLowerCase(); + for (const headerName of Object.keys(headers)) { + if (soughtHeader === headerName.toLowerCase()) { + return headers[headerName]; + } + } + return undefined; +}; +export const deleteHeader = (soughtHeader, headers) => { + soughtHeader = soughtHeader.toLowerCase(); + for (const headerName of Object.keys(headers)) { + if (soughtHeader === headerName.toLowerCase()) { + delete headers[headerName]; + } + } +}; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/index.js new file mode 100644 index 000000000..062752d63 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/index.js @@ -0,0 +1,11 @@ +export * from "./SignatureV4"; +export * from "./constants"; +export { getCanonicalHeaders } from "./getCanonicalHeaders"; +export { getCanonicalQuery } from "./getCanonicalQuery"; +export { getPayloadHash } from "./getPayloadHash"; +export { moveHeadersToQuery } from "./moveHeadersToQuery"; +export { prepareRequest } from "./prepareRequest"; +export * from "./credentialDerivation"; +export { SignatureV4Base } from "./SignatureV4Base"; +export { hasHeader } from "./headerUtil"; +export * from "./signature-v4a-container"; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/moveHeadersToQuery.js b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/moveHeadersToQuery.js new file mode 100644 index 000000000..806703ac3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/moveHeadersToQuery.js @@ -0,0 +1,17 @@ +import { HttpRequest } from "@smithy/protocol-http"; +export const moveHeadersToQuery = (request, options = {}) => { + const { headers, query = {} } = HttpRequest.clone(request); + for (const name of Object.keys(headers)) { + const lname = name.toLowerCase(); + if ((lname.slice(0, 6) === "x-amz-" && !options.unhoistableHeaders?.has(lname)) || + options.hoistableHeaders?.has(lname)) { + query[name] = headers[name]; + delete headers[name]; + } + } + return { + ...request, + headers, + query, + }; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/prepareRequest.js b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/prepareRequest.js new file mode 100644 index 000000000..7fe5136cf --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/prepareRequest.js @@ -0,0 +1,11 @@ +import { HttpRequest } from "@smithy/protocol-http"; +import { GENERATED_HEADERS } from "./constants"; +export const prepareRequest = (request) => { + request = HttpRequest.clone(request); + for (const headerName of Object.keys(request.headers)) { + if (GENERATED_HEADERS.indexOf(headerName.toLowerCase()) > -1) { + delete request.headers[headerName]; + } + } + return request; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/signature-v4a-container.js b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/signature-v4a-container.js new file mode 100644 index 000000000..a309b0a0c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/signature-v4a-container.js @@ -0,0 +1,3 @@ +export const signatureV4aContainer = { + SignatureV4a: null, +}; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/suite.fixture.js b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/suite.fixture.js new file mode 100644 index 000000000..bb704a991 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/suite.fixture.js @@ -0,0 +1,399 @@ +export const region = "us-east-1"; +export const service = "service"; +export const credentials = { + accessKeyId: "AKIDEXAMPLE", + secretAccessKey: "wJalrXUtnFEMI/K7MDENG+bPxRfiCYEXAMPLEKEY", +}; +export const signingDate = new Date("2015-08-30T12:36:00Z"); +export const requests = [ + { + name: "get-header-key-duplicate", + request: { + protocol: "https:", + method: "GET", + hostname: "example.amazonaws.com", + query: {}, + headers: { + host: "example.amazonaws.com", + "my-header1": "value2,value2,value1", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;my-header1;x-amz-date, Signature=c9d5ea9f3f72853aea855b47ea873832890dbdd183b4468f858259531a5138ea", + }, + { + name: "get-header-value-multiline", + request: { + protocol: "https:", + method: "GET", + hostname: "example.amazonaws.com", + query: {}, + headers: { + host: "example.amazonaws.com", + "my-header1": "value1,value2,value3", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;my-header1;x-amz-date, Signature=ba17b383a53190154eb5fa66a1b836cc297cc0a3d70a5d00705980573d8ff790", + }, + { + name: "get-header-value-order", + request: { + protocol: "https:", + method: "GET", + hostname: "example.amazonaws.com", + query: {}, + headers: { + host: "example.amazonaws.com", + "my-header1": "value4,value1,value3,value2", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;my-header1;x-amz-date, Signature=08c7e5a9acfcfeb3ab6b2185e75ce8b1deb5e634ec47601a50643f830c755c01", + }, + { + name: "get-header-value-trim", + request: { + protocol: "https:", + method: "GET", + hostname: "example.amazonaws.com", + query: {}, + headers: { + host: "example.amazonaws.com", + "my-header1": "value1", + "my-header2": '"a b c"', + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;my-header1;my-header2;x-amz-date, Signature=acc3ed3afb60bb290fc8d2dd0098b9911fcaa05412b367055dee359757a9c736", + }, + { + name: "get-unreserved", + request: { + protocol: "https:", + method: "GET", + hostname: "example.amazonaws.com", + query: {}, + headers: { + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + path: "/-._~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=07ef7494c76fa4850883e2b006601f940f8a34d404d0cfa977f52a65bbf5f24f", + }, + { + name: "get-utf8", + request: { + protocol: "https:", + method: "GET", + hostname: "example.amazonaws.com", + query: {}, + headers: { + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + path: "/ሴ", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=8318018e0b0f223aa2bbf98705b62bb787dc9c0e678f255a891fd03141be5d85", + }, + { + name: "get-vanilla", + request: { + protocol: "https:", + method: "GET", + hostname: "example.amazonaws.com", + query: {}, + headers: { + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=5fa00fa31553b73ebf1942676e86291e8372ff2a2260956d9b8aae1d763fbf31", + }, + { + name: "get-vanilla-empty-query-key", + request: { + protocol: "https:", + method: "GET", + hostname: "example.amazonaws.com", + query: { + Param1: "value1", + }, + headers: { + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=a67d582fa61cc504c4bae71f336f98b97f1ea3c7a6bfe1b6e45aec72011b9aeb", + }, + { + name: "get-vanilla-query", + request: { + protocol: "https:", + method: "GET", + hostname: "example.amazonaws.com", + query: {}, + headers: { + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=5fa00fa31553b73ebf1942676e86291e8372ff2a2260956d9b8aae1d763fbf31", + }, + { + name: "get-vanilla-query-order-key-case", + request: { + protocol: "https:", + method: "GET", + hostname: "example.amazonaws.com", + query: { + Param2: "value2", + Param1: "value1", + }, + headers: { + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=b97d918cfa904a5beff61c982a1b6f458b799221646efd99d3219ec94cdf2500", + }, + { + name: "get-vanilla-query-unreserved", + request: { + protocol: "https:", + method: "GET", + hostname: "example.amazonaws.com", + query: { + "-._~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz": "-._~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", + }, + headers: { + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=9c3e54bfcdf0b19771a7f523ee5669cdf59bc7cc0884027167c21bb143a40197", + }, + { + name: "get-vanilla-utf8-query", + request: { + protocol: "https:", + method: "GET", + hostname: "example.amazonaws.com", + query: { + ሴ: "bar", + }, + headers: { + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=2cdec8eed098649ff3a119c94853b13c643bcf08f8b0a1d91e12c9027818dd04", + }, + { + name: "post-header-key-case", + request: { + protocol: "https:", + method: "POST", + hostname: "example.amazonaws.com", + query: {}, + headers: { + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=5da7c1a2acd57cee7505fc6676e4e544621c30862966e37dddb68e92efbe5d6b", + }, + { + name: "post-header-key-sort", + request: { + protocol: "https:", + method: "POST", + hostname: "example.amazonaws.com", + query: {}, + headers: { + host: "example.amazonaws.com", + "my-header1": "value1", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;my-header1;x-amz-date, Signature=c5410059b04c1ee005303aed430f6e6645f61f4dc9e1461ec8f8916fdf18852c", + }, + { + name: "post-header-value-case", + request: { + protocol: "https:", + method: "POST", + hostname: "example.amazonaws.com", + query: {}, + headers: { + host: "example.amazonaws.com", + "my-header1": "VALUE1", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;my-header1;x-amz-date, Signature=cdbc9802e29d2942e5e10b5bccfdd67c5f22c7c4e8ae67b53629efa58b974b7d", + }, + { + name: "post-sts-header-after", + request: { + protocol: "https:", + method: "POST", + hostname: "example.amazonaws.com", + query: {}, + headers: { + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=5da7c1a2acd57cee7505fc6676e4e544621c30862966e37dddb68e92efbe5d6b", + }, + { + name: "post-sts-header-before", + request: { + protocol: "https:", + method: "POST", + hostname: "example.amazonaws.com", + query: {}, + headers: { + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + "x-amz-security-token": "AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQWLWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGdQrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz+scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCR/oLxBA==", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date;x-amz-security-token, Signature=85d96828115b5dc0cfc3bd16ad9e210dd772bbebba041836c64533a82be05ead", + }, + { + name: "post-vanilla", + request: { + protocol: "https:", + method: "POST", + hostname: "example.amazonaws.com", + query: {}, + headers: { + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=5da7c1a2acd57cee7505fc6676e4e544621c30862966e37dddb68e92efbe5d6b", + }, + { + name: "post-vanilla-empty-query-value", + request: { + protocol: "https:", + method: "POST", + hostname: "example.amazonaws.com", + query: { + Param1: "value1", + }, + headers: { + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=28038455d6de14eafc1f9222cf5aa6f1a96197d7deb8263271d420d138af7f11", + }, + { + name: "post-vanilla-query", + request: { + protocol: "https:", + method: "POST", + hostname: "example.amazonaws.com", + query: { + Param1: "value1", + }, + headers: { + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=28038455d6de14eafc1f9222cf5aa6f1a96197d7deb8263271d420d138af7f11", + }, + { + name: "post-vanilla-query-nonunreserved", + request: { + protocol: "https:", + method: "POST", + hostname: "example.amazonaws.com", + query: { + "@#$%^": "", + "+": '/,?><`";:\\|][{}', + }, + headers: { + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=66c82657c86e26fb25238d0e69f011edc4c6df5ae71119d7cb98ed9b87393c1e", + }, + { + name: "post-vanilla-query-space", + request: { + protocol: "https:", + method: "POST", + hostname: "example.amazonaws.com", + query: { + p: "", + }, + headers: { + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=e71688addb58a26418614085fb730ba3faa623b461c17f48f2fbdb9361b94a9b", + }, + { + name: "post-x-www-form-urlencoded", + request: { + protocol: "https:", + method: "POST", + hostname: "example.amazonaws.com", + query: {}, + headers: { + "content-type": "application/x-www-form-urlencoded", + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + body: "Param1=value1", + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature=ff11897932ad3f4e8b18135d722051e5ac45fc38421b1da7b9d196a0fe09473a", + }, + { + name: "post-x-www-form-urlencoded-parameters", + request: { + protocol: "https:", + method: "POST", + hostname: "example.amazonaws.com", + query: {}, + headers: { + "content-type": "application/x-www-form-urlencoded; charset=utf8", + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + body: "Param1=value1", + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature=1a72ec8f64bd914b0e42e42607c7fbce7fb2c7465f63e3092b3b0d39fa77a6fe", + }, +]; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/utilDate.js b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/utilDate.js new file mode 100644 index 000000000..4aad623e2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-es/utilDate.js @@ -0,0 +1,15 @@ +export const iso8601 = (time) => toDate(time) + .toISOString() + .replace(/\.\d{3}Z$/, "Z"); +export const toDate = (time) => { + if (typeof time === "number") { + return new Date(time * 1000); + } + if (typeof time === "string") { + if (Number(time)) { + return new Date(Number(time) * 1000); + } + return new Date(time); + } + return time; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/HeaderFormatter.d.ts b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/HeaderFormatter.d.ts new file mode 100644 index 000000000..92056a695 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/HeaderFormatter.d.ts @@ -0,0 +1,24 @@ +import type { Int64 as IInt64, MessageHeaders } from "@smithy/types"; +/** + * @internal + * TODO: duplicated from @smithy/eventstream-codec to break large dependency. + * TODO: This should be moved to its own deduped submodule in @smithy/core when submodules are implemented. + */ +export declare class HeaderFormatter { + format(headers: MessageHeaders): Uint8Array; + private formatHeaderValue; +} +/** + * TODO: duplicated from @smithy/eventstream-codec to break large dependency. + * TODO: This should be moved to its own deduped submodule in @smithy/core when submodules are implemented. + */ +export declare class Int64 implements IInt64 { + readonly bytes: Uint8Array; + constructor(bytes: Uint8Array); + static fromNumber(number: number): Int64; + /** + * Called implicitly by infix arithmetic operators. + */ + valueOf(): number; + toString(): string; +} diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/SignatureV4.d.ts b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/SignatureV4.d.ts new file mode 100644 index 000000000..2f9cf4210 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/SignatureV4.d.ts @@ -0,0 +1,21 @@ +import type { EventSigner, EventSigningArguments, FormattedEvent, HttpRequest, MessageSigner, RequestPresigner, RequestPresigningArguments, RequestSigner, RequestSigningArguments, SignableMessage, SignedMessage, SigningArguments, StringSigner } from "@smithy/types"; +import type { SignatureV4CryptoInit, SignatureV4Init } from "./SignatureV4Base"; +import { SignatureV4Base } from "./SignatureV4Base"; +/** + * @public + */ +export declare class SignatureV4 extends SignatureV4Base implements RequestPresigner, RequestSigner, StringSigner, EventSigner, MessageSigner { + private readonly headerFormatter; + constructor({ applyChecksum, credentials, region, service, sha256, uriEscapePath, }: SignatureV4Init & SignatureV4CryptoInit); + presign(originalRequest: HttpRequest, options?: RequestPresigningArguments): Promise; + sign(stringToSign: string, options?: SigningArguments): Promise; + sign(event: FormattedEvent, options: EventSigningArguments): Promise; + sign(event: SignableMessage, options: SigningArguments): Promise; + sign(requestToSign: HttpRequest, options?: RequestSigningArguments): Promise; + private signEvent; + signMessage(signableMessage: SignableMessage, { signingDate, signingRegion, signingService }: SigningArguments): Promise; + private signString; + private signRequest; + private getSignature; + private getSigningKey; +} diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/SignatureV4Base.d.ts b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/SignatureV4Base.d.ts new file mode 100644 index 000000000..99670fd5f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/SignatureV4Base.d.ts @@ -0,0 +1,69 @@ +import type { AwsCredentialIdentity, ChecksumConstructor, DateInput, HashConstructor, HeaderBag, HttpRequest, Provider } from "@smithy/types"; +/** + * @public + */ +export interface SignatureV4Init { + /** + * The service signing name. + */ + service: string; + /** + * The region name or a function that returns a promise that will be + * resolved with the region name. + */ + region: string | Provider; + /** + * The credentials with which the request should be signed or a function + * that returns a promise that will be resolved with credentials. + */ + credentials: AwsCredentialIdentity | Provider; + /** + * A constructor function for a hash object that will calculate SHA-256 HMAC + * checksums. + */ + sha256?: ChecksumConstructor | HashConstructor; + /** + * Whether to uri-escape the request URI path as part of computing the + * canonical request string. This is required for every AWS service, except + * Amazon S3, as of late 2017. + * + * @default [true] + */ + uriEscapePath?: boolean; + /** + * Whether to calculate a checksum of the request body and include it as + * either a request header (when signing) or as a query string parameter + * (when presigning). This is required for AWS Glacier and Amazon S3 and optional for + * every other AWS service as of late 2017. + * + * @default [true] + */ + applyChecksum?: boolean; +} +/** + * @public + */ +export interface SignatureV4CryptoInit { + sha256: ChecksumConstructor | HashConstructor; +} +/** + * @internal + */ +export declare abstract class SignatureV4Base { + protected readonly service: string; + protected readonly regionProvider: Provider; + protected readonly credentialProvider: Provider; + protected readonly sha256: ChecksumConstructor | HashConstructor; + private readonly uriEscapePath; + protected readonly applyChecksum: boolean; + protected constructor({ applyChecksum, credentials, region, service, sha256, uriEscapePath, }: SignatureV4Init & SignatureV4CryptoInit); + protected createCanonicalRequest(request: HttpRequest, canonicalHeaders: HeaderBag, payloadHash: string): string; + protected createStringToSign(longDate: string, credentialScope: string, canonicalRequest: string, algorithmIdentifier: string): Promise; + private getCanonicalPath; + protected validateResolvedCredentials(credentials: unknown): void; + protected formatDate(now: DateInput): { + longDate: string; + shortDate: string; + }; + protected getCanonicalHeaderList(headers: object): string; +} diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/constants.d.ts b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/constants.d.ts new file mode 100644 index 000000000..ea1cfb5d8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/constants.d.ts @@ -0,0 +1,43 @@ +export declare const ALGORITHM_QUERY_PARAM = "X-Amz-Algorithm"; +export declare const CREDENTIAL_QUERY_PARAM = "X-Amz-Credential"; +export declare const AMZ_DATE_QUERY_PARAM = "X-Amz-Date"; +export declare const SIGNED_HEADERS_QUERY_PARAM = "X-Amz-SignedHeaders"; +export declare const EXPIRES_QUERY_PARAM = "X-Amz-Expires"; +export declare const SIGNATURE_QUERY_PARAM = "X-Amz-Signature"; +export declare const TOKEN_QUERY_PARAM = "X-Amz-Security-Token"; +export declare const REGION_SET_PARAM = "X-Amz-Region-Set"; +export declare const AUTH_HEADER = "authorization"; +export declare const AMZ_DATE_HEADER: string; +export declare const DATE_HEADER = "date"; +export declare const GENERATED_HEADERS: string[]; +export declare const SIGNATURE_HEADER: string; +export declare const SHA256_HEADER = "x-amz-content-sha256"; +export declare const TOKEN_HEADER: string; +export declare const HOST_HEADER = "host"; +export declare const ALWAYS_UNSIGNABLE_HEADERS: { + authorization: boolean; + "cache-control": boolean; + connection: boolean; + expect: boolean; + from: boolean; + "keep-alive": boolean; + "max-forwards": boolean; + pragma: boolean; + referer: boolean; + te: boolean; + trailer: boolean; + "transfer-encoding": boolean; + upgrade: boolean; + "user-agent": boolean; + "x-amzn-trace-id": boolean; +}; +export declare const PROXY_HEADER_PATTERN: RegExp; +export declare const SEC_HEADER_PATTERN: RegExp; +export declare const UNSIGNABLE_PATTERNS: RegExp[]; +export declare const ALGORITHM_IDENTIFIER = "AWS4-HMAC-SHA256"; +export declare const ALGORITHM_IDENTIFIER_V4A = "AWS4-ECDSA-P256-SHA256"; +export declare const EVENT_ALGORITHM_IDENTIFIER = "AWS4-HMAC-SHA256-PAYLOAD"; +export declare const UNSIGNED_PAYLOAD = "UNSIGNED-PAYLOAD"; +export declare const MAX_CACHE_SIZE = 50; +export declare const KEY_TYPE_IDENTIFIER = "aws4_request"; +export declare const MAX_PRESIGNED_TTL: number; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/credentialDerivation.d.ts b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/credentialDerivation.d.ts new file mode 100644 index 000000000..4b7a13aef --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/credentialDerivation.d.ts @@ -0,0 +1,30 @@ +import type { AwsCredentialIdentity, ChecksumConstructor, HashConstructor } from "@smithy/types"; +/** + * Create a string describing the scope of credentials used to sign a request. + * + * @internal + * + * @param shortDate - the current calendar date in the form YYYYMMDD. + * @param region - the AWS region in which the service resides. + * @param service - the service to which the signed request is being sent. + */ +export declare const createScope: (shortDate: string, region: string, service: string) => string; +/** + * Derive a signing key from its composite parts. + * + * @internal + * + * @param sha256Constructor - a constructor function that can instantiate SHA-256 + * hash objects. + * @param credentials - the credentials with which the request will be + * signed. + * @param shortDate - the current calendar date in the form YYYYMMDD. + * @param region - the AWS region in which the service resides. + * @param service - the service to which the signed request is being + * sent. + */ +export declare const getSigningKey: (sha256Constructor: ChecksumConstructor | HashConstructor, credentials: AwsCredentialIdentity, shortDate: string, region: string, service: string) => Promise; +/** + * @internal + */ +export declare const clearCredentialCache: () => void; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/getCanonicalHeaders.d.ts b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/getCanonicalHeaders.d.ts new file mode 100644 index 000000000..cfc8462bf --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/getCanonicalHeaders.d.ts @@ -0,0 +1,5 @@ +import type { HeaderBag, HttpRequest } from "@smithy/types"; +/** + * @internal + */ +export declare const getCanonicalHeaders: ({ headers }: HttpRequest, unsignableHeaders?: Set, signableHeaders?: Set) => HeaderBag; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/getCanonicalQuery.d.ts b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/getCanonicalQuery.d.ts new file mode 100644 index 000000000..ed09586e0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/getCanonicalQuery.d.ts @@ -0,0 +1,5 @@ +import type { HttpRequest } from "@smithy/types"; +/** + * @internal + */ +export declare const getCanonicalQuery: ({ query }: HttpRequest) => string; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/getPayloadHash.d.ts b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/getPayloadHash.d.ts new file mode 100644 index 000000000..e51605bda --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/getPayloadHash.d.ts @@ -0,0 +1,5 @@ +import type { ChecksumConstructor, HashConstructor, HttpRequest } from "@smithy/types"; +/** + * @internal + */ +export declare const getPayloadHash: ({ headers, body }: HttpRequest, hashConstructor: ChecksumConstructor | HashConstructor) => Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/headerUtil.d.ts b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/headerUtil.d.ts new file mode 100644 index 000000000..1663a0c6b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/headerUtil.d.ts @@ -0,0 +1,4 @@ +import type { HeaderBag } from "@smithy/types"; +export declare const hasHeader: (soughtHeader: string, headers: HeaderBag) => boolean; +export declare const getHeaderValue: (soughtHeader: string, headers: HeaderBag) => string | undefined; +export declare const deleteHeader: (soughtHeader: string, headers: HeaderBag) => void; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/index.d.ts new file mode 100644 index 000000000..9305cf315 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/index.d.ts @@ -0,0 +1,11 @@ +export * from "./SignatureV4"; +export * from "./constants"; +export { getCanonicalHeaders } from "./getCanonicalHeaders"; +export { getCanonicalQuery } from "./getCanonicalQuery"; +export { getPayloadHash } from "./getPayloadHash"; +export { moveHeadersToQuery } from "./moveHeadersToQuery"; +export { prepareRequest } from "./prepareRequest"; +export * from "./credentialDerivation"; +export { SignatureV4Init, SignatureV4CryptoInit, SignatureV4Base } from "./SignatureV4Base"; +export { hasHeader } from "./headerUtil"; +export * from "./signature-v4a-container"; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/moveHeadersToQuery.d.ts b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/moveHeadersToQuery.d.ts new file mode 100644 index 000000000..e2c31e0a0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/moveHeadersToQuery.d.ts @@ -0,0 +1,10 @@ +import type { HttpRequest as IHttpRequest, QueryParameterBag } from "@smithy/types"; +/** + * @internal + */ +export declare const moveHeadersToQuery: (request: IHttpRequest, options?: { + unhoistableHeaders?: Set; + hoistableHeaders?: Set; +}) => IHttpRequest & { + query: QueryParameterBag; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/prepareRequest.d.ts b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/prepareRequest.d.ts new file mode 100644 index 000000000..b20e0e353 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/prepareRequest.d.ts @@ -0,0 +1,5 @@ +import type { HttpRequest as IHttpRequest } from "@smithy/types"; +/** + * @internal + */ +export declare const prepareRequest: (request: IHttpRequest) => IHttpRequest; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/signature-v4a-container.d.ts b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/signature-v4a-container.d.ts new file mode 100644 index 000000000..890103611 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/signature-v4a-container.d.ts @@ -0,0 +1,24 @@ +import type { RequestSigner } from "@smithy/types"; +/** + * @public + */ +export type OptionalSigV4aSigner = { + /** + * This constructor is not typed so as not to require a type import + * from the signature-v4a package. + * + * The true type is SignatureV4a from @smithy/signature-v4a. + */ + new (options: any): RequestSigner; +}; +/** + * @public + * + * \@smithy/signature-v4a will install the constructor in this + * container if it's installed. + * + * This avoids a runtime-require being interpreted statically by bundlers. + */ +export declare const signatureV4aContainer: { + SignatureV4a: null | OptionalSigV4aSigner; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/suite.fixture.d.ts b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/suite.fixture.d.ts new file mode 100644 index 000000000..c2b36f3df --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/suite.fixture.d.ts @@ -0,0 +1,14 @@ +import type { HttpRequest } from "@smithy/types"; +export interface TestCase { + name: string; + request: HttpRequest; + authorization: string; +} +export declare const region = "us-east-1"; +export declare const service = "service"; +export declare const credentials: { + accessKeyId: string; + secretAccessKey: string; +}; +export declare const signingDate: Date; +export declare const requests: Array; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/HeaderFormatter.d.ts b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/HeaderFormatter.d.ts new file mode 100644 index 000000000..c58b7f91e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/HeaderFormatter.d.ts @@ -0,0 +1,24 @@ +import { Int64 as IInt64, MessageHeaders } from "@smithy/types"; +/** + * @internal + * TODO: duplicated from @smithy/eventstream-codec to break large dependency. + * TODO: This should be moved to its own deduped submodule in @smithy/core when submodules are implemented. + */ +export declare class HeaderFormatter { + format(headers: MessageHeaders): Uint8Array; + private formatHeaderValue; +} +/** + * TODO: duplicated from @smithy/eventstream-codec to break large dependency. + * TODO: This should be moved to its own deduped submodule in @smithy/core when submodules are implemented. + */ +export declare class Int64 implements IInt64 { + readonly bytes: Uint8Array; + constructor(bytes: Uint8Array); + static fromNumber(number: number): Int64; + /** + * Called implicitly by infix arithmetic operators. + */ + valueOf(): number; + toString(): string; +} diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/SignatureV4.d.ts b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/SignatureV4.d.ts new file mode 100644 index 000000000..123a3c3f1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/SignatureV4.d.ts @@ -0,0 +1,21 @@ +import { EventSigner, EventSigningArguments, FormattedEvent, HttpRequest, MessageSigner, RequestPresigner, RequestPresigningArguments, RequestSigner, RequestSigningArguments, SignableMessage, SignedMessage, SigningArguments, StringSigner } from "@smithy/types"; +import { SignatureV4CryptoInit, SignatureV4Init } from "./SignatureV4Base"; +import { SignatureV4Base } from "./SignatureV4Base"; +/** + * @public + */ +export declare class SignatureV4 extends SignatureV4Base implements RequestPresigner, RequestSigner, StringSigner, EventSigner, MessageSigner { + private readonly headerFormatter; + constructor({ applyChecksum, credentials, region, service, sha256, uriEscapePath, }: SignatureV4Init & SignatureV4CryptoInit); + presign(originalRequest: HttpRequest, options?: RequestPresigningArguments): Promise; + sign(stringToSign: string, options?: SigningArguments): Promise; + sign(event: FormattedEvent, options: EventSigningArguments): Promise; + sign(event: SignableMessage, options: SigningArguments): Promise; + sign(requestToSign: HttpRequest, options?: RequestSigningArguments): Promise; + private signEvent; + signMessage(signableMessage: SignableMessage, { signingDate, signingRegion, signingService }: SigningArguments): Promise; + private signString; + private signRequest; + private getSignature; + private getSigningKey; +} diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/SignatureV4Base.d.ts b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/SignatureV4Base.d.ts new file mode 100644 index 000000000..9a0e6adac --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/SignatureV4Base.d.ts @@ -0,0 +1,69 @@ +import { AwsCredentialIdentity, ChecksumConstructor, DateInput, HashConstructor, HeaderBag, HttpRequest, Provider } from "@smithy/types"; +/** + * @public + */ +export interface SignatureV4Init { + /** + * The service signing name. + */ + service: string; + /** + * The region name or a function that returns a promise that will be + * resolved with the region name. + */ + region: string | Provider; + /** + * The credentials with which the request should be signed or a function + * that returns a promise that will be resolved with credentials. + */ + credentials: AwsCredentialIdentity | Provider; + /** + * A constructor function for a hash object that will calculate SHA-256 HMAC + * checksums. + */ + sha256?: ChecksumConstructor | HashConstructor; + /** + * Whether to uri-escape the request URI path as part of computing the + * canonical request string. This is required for every AWS service, except + * Amazon S3, as of late 2017. + * + * @default [true] + */ + uriEscapePath?: boolean; + /** + * Whether to calculate a checksum of the request body and include it as + * either a request header (when signing) or as a query string parameter + * (when presigning). This is required for AWS Glacier and Amazon S3 and optional for + * every other AWS service as of late 2017. + * + * @default [true] + */ + applyChecksum?: boolean; +} +/** + * @public + */ +export interface SignatureV4CryptoInit { + sha256: ChecksumConstructor | HashConstructor; +} +/** + * @internal + */ +export declare abstract class SignatureV4Base { + protected readonly service: string; + protected readonly regionProvider: Provider; + protected readonly credentialProvider: Provider; + protected readonly sha256: ChecksumConstructor | HashConstructor; + private readonly uriEscapePath; + protected readonly applyChecksum: boolean; + protected constructor({ applyChecksum, credentials, region, service, sha256, uriEscapePath, }: SignatureV4Init & SignatureV4CryptoInit); + protected createCanonicalRequest(request: HttpRequest, canonicalHeaders: HeaderBag, payloadHash: string): string; + protected createStringToSign(longDate: string, credentialScope: string, canonicalRequest: string, algorithmIdentifier: string): Promise; + private getCanonicalPath; + protected validateResolvedCredentials(credentials: unknown): void; + protected formatDate(now: DateInput): { + longDate: string; + shortDate: string; + }; + protected getCanonicalHeaderList(headers: object): string; +} diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/constants.d.ts b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/constants.d.ts new file mode 100644 index 000000000..ea1cfb5d8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/constants.d.ts @@ -0,0 +1,43 @@ +export declare const ALGORITHM_QUERY_PARAM = "X-Amz-Algorithm"; +export declare const CREDENTIAL_QUERY_PARAM = "X-Amz-Credential"; +export declare const AMZ_DATE_QUERY_PARAM = "X-Amz-Date"; +export declare const SIGNED_HEADERS_QUERY_PARAM = "X-Amz-SignedHeaders"; +export declare const EXPIRES_QUERY_PARAM = "X-Amz-Expires"; +export declare const SIGNATURE_QUERY_PARAM = "X-Amz-Signature"; +export declare const TOKEN_QUERY_PARAM = "X-Amz-Security-Token"; +export declare const REGION_SET_PARAM = "X-Amz-Region-Set"; +export declare const AUTH_HEADER = "authorization"; +export declare const AMZ_DATE_HEADER: string; +export declare const DATE_HEADER = "date"; +export declare const GENERATED_HEADERS: string[]; +export declare const SIGNATURE_HEADER: string; +export declare const SHA256_HEADER = "x-amz-content-sha256"; +export declare const TOKEN_HEADER: string; +export declare const HOST_HEADER = "host"; +export declare const ALWAYS_UNSIGNABLE_HEADERS: { + authorization: boolean; + "cache-control": boolean; + connection: boolean; + expect: boolean; + from: boolean; + "keep-alive": boolean; + "max-forwards": boolean; + pragma: boolean; + referer: boolean; + te: boolean; + trailer: boolean; + "transfer-encoding": boolean; + upgrade: boolean; + "user-agent": boolean; + "x-amzn-trace-id": boolean; +}; +export declare const PROXY_HEADER_PATTERN: RegExp; +export declare const SEC_HEADER_PATTERN: RegExp; +export declare const UNSIGNABLE_PATTERNS: RegExp[]; +export declare const ALGORITHM_IDENTIFIER = "AWS4-HMAC-SHA256"; +export declare const ALGORITHM_IDENTIFIER_V4A = "AWS4-ECDSA-P256-SHA256"; +export declare const EVENT_ALGORITHM_IDENTIFIER = "AWS4-HMAC-SHA256-PAYLOAD"; +export declare const UNSIGNED_PAYLOAD = "UNSIGNED-PAYLOAD"; +export declare const MAX_CACHE_SIZE = 50; +export declare const KEY_TYPE_IDENTIFIER = "aws4_request"; +export declare const MAX_PRESIGNED_TTL: number; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/credentialDerivation.d.ts b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/credentialDerivation.d.ts new file mode 100644 index 000000000..a560c2c2b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/credentialDerivation.d.ts @@ -0,0 +1,30 @@ +import { AwsCredentialIdentity, ChecksumConstructor, HashConstructor } from "@smithy/types"; +/** + * Create a string describing the scope of credentials used to sign a request. + * + * @internal + * + * @param shortDate - the current calendar date in the form YYYYMMDD. + * @param region - the AWS region in which the service resides. + * @param service - the service to which the signed request is being sent. + */ +export declare const createScope: (shortDate: string, region: string, service: string) => string; +/** + * Derive a signing key from its composite parts. + * + * @internal + * + * @param sha256Constructor - a constructor function that can instantiate SHA-256 + * hash objects. + * @param credentials - the credentials with which the request will be + * signed. + * @param shortDate - the current calendar date in the form YYYYMMDD. + * @param region - the AWS region in which the service resides. + * @param service - the service to which the signed request is being + * sent. + */ +export declare const getSigningKey: (sha256Constructor: ChecksumConstructor | HashConstructor, credentials: AwsCredentialIdentity, shortDate: string, region: string, service: string) => Promise; +/** + * @internal + */ +export declare const clearCredentialCache: () => void; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/getCanonicalHeaders.d.ts b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/getCanonicalHeaders.d.ts new file mode 100644 index 000000000..efc417c8f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/getCanonicalHeaders.d.ts @@ -0,0 +1,5 @@ +import { HeaderBag, HttpRequest } from "@smithy/types"; +/** + * @internal + */ +export declare const getCanonicalHeaders: ({ headers }: HttpRequest, unsignableHeaders?: Set, signableHeaders?: Set) => HeaderBag; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/getCanonicalQuery.d.ts b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/getCanonicalQuery.d.ts new file mode 100644 index 000000000..a8e180053 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/getCanonicalQuery.d.ts @@ -0,0 +1,5 @@ +import { HttpRequest } from "@smithy/types"; +/** + * @internal + */ +export declare const getCanonicalQuery: ({ query }: HttpRequest) => string; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/getPayloadHash.d.ts b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/getPayloadHash.d.ts new file mode 100644 index 000000000..2de0858aa --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/getPayloadHash.d.ts @@ -0,0 +1,5 @@ +import { ChecksumConstructor, HashConstructor, HttpRequest } from "@smithy/types"; +/** + * @internal + */ +export declare const getPayloadHash: ({ headers, body }: HttpRequest, hashConstructor: ChecksumConstructor | HashConstructor) => Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/headerUtil.d.ts b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/headerUtil.d.ts new file mode 100644 index 000000000..c0b66eb6f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/headerUtil.d.ts @@ -0,0 +1,4 @@ +import { HeaderBag } from "@smithy/types"; +export declare const hasHeader: (soughtHeader: string, headers: HeaderBag) => boolean; +export declare const getHeaderValue: (soughtHeader: string, headers: HeaderBag) => string | undefined; +export declare const deleteHeader: (soughtHeader: string, headers: HeaderBag) => void; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..9305cf315 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/index.d.ts @@ -0,0 +1,11 @@ +export * from "./SignatureV4"; +export * from "./constants"; +export { getCanonicalHeaders } from "./getCanonicalHeaders"; +export { getCanonicalQuery } from "./getCanonicalQuery"; +export { getPayloadHash } from "./getPayloadHash"; +export { moveHeadersToQuery } from "./moveHeadersToQuery"; +export { prepareRequest } from "./prepareRequest"; +export * from "./credentialDerivation"; +export { SignatureV4Init, SignatureV4CryptoInit, SignatureV4Base } from "./SignatureV4Base"; +export { hasHeader } from "./headerUtil"; +export * from "./signature-v4a-container"; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/moveHeadersToQuery.d.ts b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/moveHeadersToQuery.d.ts new file mode 100644 index 000000000..de7dc00e4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/moveHeadersToQuery.d.ts @@ -0,0 +1,10 @@ +import { HttpRequest as IHttpRequest, QueryParameterBag } from "@smithy/types"; +/** + * @internal + */ +export declare const moveHeadersToQuery: (request: IHttpRequest, options?: { + unhoistableHeaders?: Set; + hoistableHeaders?: Set; +}) => IHttpRequest & { + query: QueryParameterBag; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/prepareRequest.d.ts b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/prepareRequest.d.ts new file mode 100644 index 000000000..4e7348cbb --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/prepareRequest.d.ts @@ -0,0 +1,5 @@ +import { HttpRequest as IHttpRequest } from "@smithy/types"; +/** + * @internal + */ +export declare const prepareRequest: (request: IHttpRequest) => IHttpRequest; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/signature-v4a-container.d.ts b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/signature-v4a-container.d.ts new file mode 100644 index 000000000..00d608d82 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/signature-v4a-container.d.ts @@ -0,0 +1,24 @@ +import { RequestSigner } from "@smithy/types"; +/** + * @public + */ +export type OptionalSigV4aSigner = { + /** + * This constructor is not typed so as not to require a type import + * from the signature-v4a package. + * + * The true type is SignatureV4a from @smithy/signature-v4a. + */ + new (options: any): RequestSigner; +}; +/** + * @public + * + * \@smithy/signature-v4a will install the constructor in this + * container if it's installed. + * + * This avoids a runtime-require being interpreted statically by bundlers. + */ +export declare const signatureV4aContainer: { + SignatureV4a: null | OptionalSigV4aSigner; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/suite.fixture.d.ts b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/suite.fixture.d.ts new file mode 100644 index 000000000..383bc35f9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/suite.fixture.d.ts @@ -0,0 +1,14 @@ +import { HttpRequest } from "@smithy/types"; +export interface TestCase { + name: string; + request: HttpRequest; + authorization: string; +} +export declare const region = "us-east-1"; +export declare const service = "service"; +export declare const credentials: { + accessKeyId: string; + secretAccessKey: string; +}; +export declare const signingDate: Date; +export declare const requests: Array; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/utilDate.d.ts b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/utilDate.d.ts new file mode 100644 index 000000000..e8c6a684e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/ts3.4/utilDate.d.ts @@ -0,0 +1,2 @@ +export declare const iso8601: (time: number | string | Date) => string; +export declare const toDate: (time: number | string | Date) => Date; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/utilDate.d.ts b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/utilDate.d.ts new file mode 100644 index 000000000..e8c6a684e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/dist-types/utilDate.d.ts @@ -0,0 +1,2 @@ +export declare const iso8601: (time: number | string | Date) => string; +export declare const toDate: (time: number | string | Date) => Date; diff --git a/food-ordering-app/server/node_modules/@smithy/signature-v4/package.json b/food-ordering-app/server/node_modules/@smithy/signature-v4/package.json new file mode 100644 index 000000000..67b5bd944 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/signature-v4/package.json @@ -0,0 +1,70 @@ +{ + "name": "@smithy/signature-v4", + "version": "5.3.12", + "description": "A standalone implementation of the AWS Signature V4 request signing algorithm", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline signature-v4", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "extract:docs": "api-extractor run --local", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/is-array-buffer": "^4.2.2", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-hex-encoding": "^4.2.2", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-uri-escape": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@aws-crypto/sha256-js": "5.2.0", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/signature-v4", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/signature-v4" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/LICENSE b/food-ordering-app/server/node_modules/@smithy/smithy-client/LICENSE new file mode 100644 index 000000000..e907b5866 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/README.md b/food-ordering-app/server/node_modules/@smithy/smithy-client/README.md new file mode 100644 index 000000000..365cd629c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/README.md @@ -0,0 +1,10 @@ +# @smithy/smithy-client + +[![NPM version](https://img.shields.io/npm/v/@smithy/smithy-client/latest.svg)](https://www.npmjs.com/package/@smithy/smithy-client) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/smithy-client.svg)](https://www.npmjs.com/package/@smithy/smithy-client) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-cjs/index.js new file mode 100644 index 000000000..eb48d04d0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-cjs/index.js @@ -0,0 +1,635 @@ +'use strict'; + +var middlewareStack = require('@smithy/middleware-stack'); +var protocols = require('@smithy/core/protocols'); +var types = require('@smithy/types'); +var schema = require('@smithy/core/schema'); +var serde = require('@smithy/core/serde'); + +class Client { + config; + middlewareStack = middlewareStack.constructStack(); + initConfig; + handlers; + constructor(config) { + this.config = config; + const { protocol, protocolSettings } = config; + if (protocolSettings) { + if (typeof protocol === "function") { + config.protocol = new protocol(protocolSettings); + } + } + } + send(command, optionsOrCb, cb) { + const options = typeof optionsOrCb !== "function" ? optionsOrCb : undefined; + const callback = typeof optionsOrCb === "function" ? optionsOrCb : cb; + const useHandlerCache = options === undefined && this.config.cacheMiddleware === true; + let handler; + if (useHandlerCache) { + if (!this.handlers) { + this.handlers = new WeakMap(); + } + const handlers = this.handlers; + if (handlers.has(command.constructor)) { + handler = handlers.get(command.constructor); + } + else { + handler = command.resolveMiddleware(this.middlewareStack, this.config, options); + handlers.set(command.constructor, handler); + } + } + else { + delete this.handlers; + handler = command.resolveMiddleware(this.middlewareStack, this.config, options); + } + if (callback) { + handler(command) + .then((result) => callback(null, result.output), (err) => callback(err)) + .catch(() => { }); + } + else { + return handler(command).then((result) => result.output); + } + } + destroy() { + this.config?.requestHandler?.destroy?.(); + delete this.handlers; + } +} + +const SENSITIVE_STRING$1 = "***SensitiveInformation***"; +function schemaLogFilter(schema$1, data) { + if (data == null) { + return data; + } + const ns = schema.NormalizedSchema.of(schema$1); + if (ns.getMergedTraits().sensitive) { + return SENSITIVE_STRING$1; + } + if (ns.isListSchema()) { + const isSensitive = !!ns.getValueSchema().getMergedTraits().sensitive; + if (isSensitive) { + return SENSITIVE_STRING$1; + } + } + else if (ns.isMapSchema()) { + const isSensitive = !!ns.getKeySchema().getMergedTraits().sensitive || !!ns.getValueSchema().getMergedTraits().sensitive; + if (isSensitive) { + return SENSITIVE_STRING$1; + } + } + else if (ns.isStructSchema() && typeof data === "object") { + const object = data; + const newObject = {}; + for (const [member, memberNs] of ns.structIterator()) { + if (object[member] != null) { + newObject[member] = schemaLogFilter(memberNs, object[member]); + } + } + return newObject; + } + return data; +} + +class Command { + middlewareStack = middlewareStack.constructStack(); + schema; + static classBuilder() { + return new ClassBuilder(); + } + resolveMiddlewareWithContext(clientStack, configuration, options, { middlewareFn, clientName, commandName, inputFilterSensitiveLog, outputFilterSensitiveLog, smithyContext, additionalContext, CommandCtor, }) { + for (const mw of middlewareFn.bind(this)(CommandCtor, clientStack, configuration, options)) { + this.middlewareStack.use(mw); + } + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog, + outputFilterSensitiveLog, + [types.SMITHY_CONTEXT_KEY]: { + commandInstance: this, + ...smithyContext, + }, + ...additionalContext, + }; + const { requestHandler } = configuration; + return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext); + } +} +class ClassBuilder { + _init = () => { }; + _ep = {}; + _middlewareFn = () => []; + _commandName = ""; + _clientName = ""; + _additionalContext = {}; + _smithyContext = {}; + _inputFilterSensitiveLog = undefined; + _outputFilterSensitiveLog = undefined; + _serializer = null; + _deserializer = null; + _operationSchema; + init(cb) { + this._init = cb; + } + ep(endpointParameterInstructions) { + this._ep = endpointParameterInstructions; + return this; + } + m(middlewareSupplier) { + this._middlewareFn = middlewareSupplier; + return this; + } + s(service, operation, smithyContext = {}) { + this._smithyContext = { + service, + operation, + ...smithyContext, + }; + return this; + } + c(additionalContext = {}) { + this._additionalContext = additionalContext; + return this; + } + n(clientName, commandName) { + this._clientName = clientName; + this._commandName = commandName; + return this; + } + f(inputFilter = (_) => _, outputFilter = (_) => _) { + this._inputFilterSensitiveLog = inputFilter; + this._outputFilterSensitiveLog = outputFilter; + return this; + } + ser(serializer) { + this._serializer = serializer; + return this; + } + de(deserializer) { + this._deserializer = deserializer; + return this; + } + sc(operation) { + this._operationSchema = operation; + this._smithyContext.operationSchema = operation; + return this; + } + build() { + const closure = this; + let CommandRef; + return (CommandRef = class extends Command { + input; + static getEndpointParameterInstructions() { + return closure._ep; + } + constructor(...[input]) { + super(); + this.input = input ?? {}; + closure._init(this); + this.schema = closure._operationSchema; + } + resolveMiddleware(stack, configuration, options) { + const op = closure._operationSchema; + const input = op?.[4] ?? op?.input; + const output = op?.[5] ?? op?.output; + return this.resolveMiddlewareWithContext(stack, configuration, options, { + CommandCtor: CommandRef, + middlewareFn: closure._middlewareFn, + clientName: closure._clientName, + commandName: closure._commandName, + inputFilterSensitiveLog: closure._inputFilterSensitiveLog ?? (op ? schemaLogFilter.bind(null, input) : (_) => _), + outputFilterSensitiveLog: closure._outputFilterSensitiveLog ?? (op ? schemaLogFilter.bind(null, output) : (_) => _), + smithyContext: closure._smithyContext, + additionalContext: closure._additionalContext, + }); + } + serialize = closure._serializer; + deserialize = closure._deserializer; + }); + } +} + +const SENSITIVE_STRING = "***SensitiveInformation***"; + +const createAggregatedClient = (commands, Client, options) => { + for (const [command, CommandCtor] of Object.entries(commands)) { + const methodImpl = async function (args, optionsOrCb, cb) { + const command = new CommandCtor(args); + if (typeof optionsOrCb === "function") { + this.send(command, optionsOrCb); + } + else if (typeof cb === "function") { + if (typeof optionsOrCb !== "object") + throw new Error(`Expected http options but got ${typeof optionsOrCb}`); + this.send(command, optionsOrCb || {}, cb); + } + else { + return this.send(command, optionsOrCb); + } + }; + const methodName = (command[0].toLowerCase() + command.slice(1)).replace(/Command$/, ""); + Client.prototype[methodName] = methodImpl; + } + const { paginators = {}, waiters = {} } = options ?? {}; + for (const [paginatorName, paginatorFn] of Object.entries(paginators)) { + if (Client.prototype[paginatorName] === void 0) { + Client.prototype[paginatorName] = function (commandInput = {}, paginationConfiguration, ...rest) { + return paginatorFn({ + ...paginationConfiguration, + client: this, + }, commandInput, ...rest); + }; + } + } + for (const [waiterName, waiterFn] of Object.entries(waiters)) { + if (Client.prototype[waiterName] === void 0) { + Client.prototype[waiterName] = async function (commandInput = {}, waiterConfiguration, ...rest) { + let config = waiterConfiguration; + if (typeof waiterConfiguration === "number") { + config = { + maxWaitTime: waiterConfiguration, + }; + } + return waiterFn({ + ...config, + client: this, + }, commandInput, ...rest); + }; + } + } +}; + +class ServiceException extends Error { + $fault; + $response; + $retryable; + $metadata; + constructor(options) { + super(options.message); + Object.setPrototypeOf(this, Object.getPrototypeOf(this).constructor.prototype); + this.name = options.name; + this.$fault = options.$fault; + this.$metadata = options.$metadata; + } + static isInstance(value) { + if (!value) + return false; + const candidate = value; + return (ServiceException.prototype.isPrototypeOf(candidate) || + (Boolean(candidate.$fault) && + Boolean(candidate.$metadata) && + (candidate.$fault === "client" || candidate.$fault === "server"))); + } + static [Symbol.hasInstance](instance) { + if (!instance) + return false; + const candidate = instance; + if (this === ServiceException) { + return ServiceException.isInstance(instance); + } + if (ServiceException.isInstance(instance)) { + if (candidate.name && this.name) { + return this.prototype.isPrototypeOf(instance) || candidate.name === this.name; + } + return this.prototype.isPrototypeOf(instance); + } + return false; + } +} +const decorateServiceException = (exception, additions = {}) => { + Object.entries(additions) + .filter(([, v]) => v !== undefined) + .forEach(([k, v]) => { + if (exception[k] == undefined || exception[k] === "") { + exception[k] = v; + } + }); + const message = exception.message || exception.Message || "UnknownError"; + exception.message = message; + delete exception.Message; + return exception; +}; + +const throwDefaultError = ({ output, parsedBody, exceptionCtor, errorCode }) => { + const $metadata = deserializeMetadata(output); + const statusCode = $metadata.httpStatusCode ? $metadata.httpStatusCode + "" : undefined; + const response = new exceptionCtor({ + name: parsedBody?.code || parsedBody?.Code || errorCode || statusCode || "UnknownError", + $fault: "client", + $metadata, + }); + throw decorateServiceException(response, parsedBody); +}; +const withBaseException = (ExceptionCtor) => { + return ({ output, parsedBody, errorCode }) => { + throwDefaultError({ output, parsedBody, exceptionCtor: ExceptionCtor, errorCode }); + }; +}; +const deserializeMetadata = (output) => ({ + httpStatusCode: output.statusCode, + requestId: output.headers["x-amzn-requestid"] ?? output.headers["x-amzn-request-id"] ?? output.headers["x-amz-request-id"], + extendedRequestId: output.headers["x-amz-id-2"], + cfId: output.headers["x-amz-cf-id"], +}); + +const loadConfigsForDefaultMode = (mode) => { + switch (mode) { + case "standard": + return { + retryMode: "standard", + connectionTimeout: 3100, + }; + case "in-region": + return { + retryMode: "standard", + connectionTimeout: 1100, + }; + case "cross-region": + return { + retryMode: "standard", + connectionTimeout: 3100, + }; + case "mobile": + return { + retryMode: "standard", + connectionTimeout: 30000, + }; + default: + return {}; + } +}; + +let warningEmitted = false; +const emitWarningIfUnsupportedVersion = (version) => { + if (version && !warningEmitted && parseInt(version.substring(1, version.indexOf("."))) < 16) { + warningEmitted = true; + } +}; + +const knownAlgorithms = Object.values(types.AlgorithmId); +const getChecksumConfiguration = (runtimeConfig) => { + const checksumAlgorithms = []; + for (const id in types.AlgorithmId) { + const algorithmId = types.AlgorithmId[id]; + if (runtimeConfig[algorithmId] === undefined) { + continue; + } + checksumAlgorithms.push({ + algorithmId: () => algorithmId, + checksumConstructor: () => runtimeConfig[algorithmId], + }); + } + for (const [id, ChecksumCtor] of Object.entries(runtimeConfig.checksumAlgorithms ?? {})) { + checksumAlgorithms.push({ + algorithmId: () => id, + checksumConstructor: () => ChecksumCtor, + }); + } + return { + addChecksumAlgorithm(algo) { + runtimeConfig.checksumAlgorithms = runtimeConfig.checksumAlgorithms ?? {}; + const id = algo.algorithmId(); + const ctor = algo.checksumConstructor(); + if (knownAlgorithms.includes(id)) { + runtimeConfig.checksumAlgorithms[id.toUpperCase()] = ctor; + } + else { + runtimeConfig.checksumAlgorithms[id] = ctor; + } + checksumAlgorithms.push(algo); + }, + checksumAlgorithms() { + return checksumAlgorithms; + }, + }; +}; +const resolveChecksumRuntimeConfig = (clientConfig) => { + const runtimeConfig = {}; + clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => { + const id = checksumAlgorithm.algorithmId(); + if (knownAlgorithms.includes(id)) { + runtimeConfig[id] = checksumAlgorithm.checksumConstructor(); + } + }); + return runtimeConfig; +}; + +const getRetryConfiguration = (runtimeConfig) => { + return { + setRetryStrategy(retryStrategy) { + runtimeConfig.retryStrategy = retryStrategy; + }, + retryStrategy() { + return runtimeConfig.retryStrategy; + }, + }; +}; +const resolveRetryRuntimeConfig = (retryStrategyConfiguration) => { + const runtimeConfig = {}; + runtimeConfig.retryStrategy = retryStrategyConfiguration.retryStrategy(); + return runtimeConfig; +}; + +const getDefaultExtensionConfiguration = (runtimeConfig) => { + return Object.assign(getChecksumConfiguration(runtimeConfig), getRetryConfiguration(runtimeConfig)); +}; +const getDefaultClientConfiguration = getDefaultExtensionConfiguration; +const resolveDefaultRuntimeConfig = (config) => { + return Object.assign(resolveChecksumRuntimeConfig(config), resolveRetryRuntimeConfig(config)); +}; + +const getArrayIfSingleItem = (mayBeArray) => Array.isArray(mayBeArray) ? mayBeArray : [mayBeArray]; + +const getValueFromTextNode = (obj) => { + const textNodeName = "#text"; + for (const key in obj) { + if (obj.hasOwnProperty(key) && obj[key][textNodeName] !== undefined) { + obj[key] = obj[key][textNodeName]; + } + else if (typeof obj[key] === "object" && obj[key] !== null) { + obj[key] = getValueFromTextNode(obj[key]); + } + } + return obj; +}; + +const isSerializableHeaderValue = (value) => { + return value != null; +}; + +class NoOpLogger { + trace() { } + debug() { } + info() { } + warn() { } + error() { } +} + +function map(arg0, arg1, arg2) { + let target; + let filter; + let instructions; + if (typeof arg1 === "undefined" && typeof arg2 === "undefined") { + target = {}; + instructions = arg0; + } + else { + target = arg0; + if (typeof arg1 === "function") { + filter = arg1; + instructions = arg2; + return mapWithFilter(target, filter, instructions); + } + else { + instructions = arg1; + } + } + for (const key of Object.keys(instructions)) { + if (!Array.isArray(instructions[key])) { + target[key] = instructions[key]; + continue; + } + applyInstruction(target, null, instructions, key); + } + return target; +} +const convertMap = (target) => { + const output = {}; + for (const [k, v] of Object.entries(target || {})) { + output[k] = [, v]; + } + return output; +}; +const take = (source, instructions) => { + const out = {}; + for (const key in instructions) { + applyInstruction(out, source, instructions, key); + } + return out; +}; +const mapWithFilter = (target, filter, instructions) => { + return map(target, Object.entries(instructions).reduce((_instructions, [key, value]) => { + if (Array.isArray(value)) { + _instructions[key] = value; + } + else { + if (typeof value === "function") { + _instructions[key] = [filter, value()]; + } + else { + _instructions[key] = [filter, value]; + } + } + return _instructions; + }, {})); +}; +const applyInstruction = (target, source, instructions, targetKey) => { + if (source !== null) { + let instruction = instructions[targetKey]; + if (typeof instruction === "function") { + instruction = [, instruction]; + } + const [filter = nonNullish, valueFn = pass, sourceKey = targetKey] = instruction; + if ((typeof filter === "function" && filter(source[sourceKey])) || (typeof filter !== "function" && !!filter)) { + target[targetKey] = valueFn(source[sourceKey]); + } + return; + } + let [filter, value] = instructions[targetKey]; + if (typeof value === "function") { + let _value; + const defaultFilterPassed = filter === undefined && (_value = value()) != null; + const customFilterPassed = (typeof filter === "function" && !!filter(void 0)) || (typeof filter !== "function" && !!filter); + if (defaultFilterPassed) { + target[targetKey] = _value; + } + else if (customFilterPassed) { + target[targetKey] = value(); + } + } + else { + const defaultFilterPassed = filter === undefined && value != null; + const customFilterPassed = (typeof filter === "function" && !!filter(value)) || (typeof filter !== "function" && !!filter); + if (defaultFilterPassed || customFilterPassed) { + target[targetKey] = value; + } + } +}; +const nonNullish = (_) => _ != null; +const pass = (_) => _; + +const serializeFloat = (value) => { + if (value !== value) { + return "NaN"; + } + switch (value) { + case Infinity: + return "Infinity"; + case -Infinity: + return "-Infinity"; + default: + return value; + } +}; +const serializeDateTime = (date) => date.toISOString().replace(".000Z", "Z"); + +const _json = (obj) => { + if (obj == null) { + return {}; + } + if (Array.isArray(obj)) { + return obj.filter((_) => _ != null).map(_json); + } + if (typeof obj === "object") { + const target = {}; + for (const key of Object.keys(obj)) { + if (obj[key] == null) { + continue; + } + target[key] = _json(obj[key]); + } + return target; + } + return obj; +}; + +exports.collectBody = protocols.collectBody; +exports.extendedEncodeURIComponent = protocols.extendedEncodeURIComponent; +exports.resolvedPath = protocols.resolvedPath; +exports.Client = Client; +exports.Command = Command; +exports.NoOpLogger = NoOpLogger; +exports.SENSITIVE_STRING = SENSITIVE_STRING; +exports.ServiceException = ServiceException; +exports._json = _json; +exports.convertMap = convertMap; +exports.createAggregatedClient = createAggregatedClient; +exports.decorateServiceException = decorateServiceException; +exports.emitWarningIfUnsupportedVersion = emitWarningIfUnsupportedVersion; +exports.getArrayIfSingleItem = getArrayIfSingleItem; +exports.getDefaultClientConfiguration = getDefaultClientConfiguration; +exports.getDefaultExtensionConfiguration = getDefaultExtensionConfiguration; +exports.getValueFromTextNode = getValueFromTextNode; +exports.isSerializableHeaderValue = isSerializableHeaderValue; +exports.loadConfigsForDefaultMode = loadConfigsForDefaultMode; +exports.map = map; +exports.resolveDefaultRuntimeConfig = resolveDefaultRuntimeConfig; +exports.serializeDateTime = serializeDateTime; +exports.serializeFloat = serializeFloat; +exports.take = take; +exports.throwDefaultError = throwDefaultError; +exports.withBaseException = withBaseException; +Object.prototype.hasOwnProperty.call(serde, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: serde['__proto__'] + }); + +Object.keys(serde).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = serde[k]; +}); diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/NoOpLogger.js b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/NoOpLogger.js new file mode 100644 index 000000000..73cd0764d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/NoOpLogger.js @@ -0,0 +1,7 @@ +export class NoOpLogger { + trace() { } + debug() { } + info() { } + warn() { } + error() { } +} diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/client.js b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/client.js new file mode 100644 index 000000000..ca6e2105d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/client.js @@ -0,0 +1,51 @@ +import { constructStack } from "@smithy/middleware-stack"; +export class Client { + config; + middlewareStack = constructStack(); + initConfig; + handlers; + constructor(config) { + this.config = config; + const { protocol, protocolSettings } = config; + if (protocolSettings) { + if (typeof protocol === "function") { + config.protocol = new protocol(protocolSettings); + } + } + } + send(command, optionsOrCb, cb) { + const options = typeof optionsOrCb !== "function" ? optionsOrCb : undefined; + const callback = typeof optionsOrCb === "function" ? optionsOrCb : cb; + const useHandlerCache = options === undefined && this.config.cacheMiddleware === true; + let handler; + if (useHandlerCache) { + if (!this.handlers) { + this.handlers = new WeakMap(); + } + const handlers = this.handlers; + if (handlers.has(command.constructor)) { + handler = handlers.get(command.constructor); + } + else { + handler = command.resolveMiddleware(this.middlewareStack, this.config, options); + handlers.set(command.constructor, handler); + } + } + else { + delete this.handlers; + handler = command.resolveMiddleware(this.middlewareStack, this.config, options); + } + if (callback) { + handler(command) + .then((result) => callback(null, result.output), (err) => callback(err)) + .catch(() => { }); + } + else { + return handler(command).then((result) => result.output); + } + } + destroy() { + this.config?.requestHandler?.destroy?.(); + delete this.handlers; + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/collect-stream-body.js b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/collect-stream-body.js new file mode 100644 index 000000000..2b76f0a0d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/collect-stream-body.js @@ -0,0 +1 @@ +export { collectBody } from "@smithy/core/protocols"; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/command.js b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/command.js new file mode 100644 index 000000000..4124008e9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/command.js @@ -0,0 +1,124 @@ +import { constructStack } from "@smithy/middleware-stack"; +import { SMITHY_CONTEXT_KEY } from "@smithy/types"; +import { schemaLogFilter } from "./schemaLogFilter"; +export class Command { + middlewareStack = constructStack(); + schema; + static classBuilder() { + return new ClassBuilder(); + } + resolveMiddlewareWithContext(clientStack, configuration, options, { middlewareFn, clientName, commandName, inputFilterSensitiveLog, outputFilterSensitiveLog, smithyContext, additionalContext, CommandCtor, }) { + for (const mw of middlewareFn.bind(this)(CommandCtor, clientStack, configuration, options)) { + this.middlewareStack.use(mw); + } + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog, + outputFilterSensitiveLog, + [SMITHY_CONTEXT_KEY]: { + commandInstance: this, + ...smithyContext, + }, + ...additionalContext, + }; + const { requestHandler } = configuration; + return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext); + } +} +class ClassBuilder { + _init = () => { }; + _ep = {}; + _middlewareFn = () => []; + _commandName = ""; + _clientName = ""; + _additionalContext = {}; + _smithyContext = {}; + _inputFilterSensitiveLog = undefined; + _outputFilterSensitiveLog = undefined; + _serializer = null; + _deserializer = null; + _operationSchema; + init(cb) { + this._init = cb; + } + ep(endpointParameterInstructions) { + this._ep = endpointParameterInstructions; + return this; + } + m(middlewareSupplier) { + this._middlewareFn = middlewareSupplier; + return this; + } + s(service, operation, smithyContext = {}) { + this._smithyContext = { + service, + operation, + ...smithyContext, + }; + return this; + } + c(additionalContext = {}) { + this._additionalContext = additionalContext; + return this; + } + n(clientName, commandName) { + this._clientName = clientName; + this._commandName = commandName; + return this; + } + f(inputFilter = (_) => _, outputFilter = (_) => _) { + this._inputFilterSensitiveLog = inputFilter; + this._outputFilterSensitiveLog = outputFilter; + return this; + } + ser(serializer) { + this._serializer = serializer; + return this; + } + de(deserializer) { + this._deserializer = deserializer; + return this; + } + sc(operation) { + this._operationSchema = operation; + this._smithyContext.operationSchema = operation; + return this; + } + build() { + const closure = this; + let CommandRef; + return (CommandRef = class extends Command { + input; + static getEndpointParameterInstructions() { + return closure._ep; + } + constructor(...[input]) { + super(); + this.input = input ?? {}; + closure._init(this); + this.schema = closure._operationSchema; + } + resolveMiddleware(stack, configuration, options) { + const op = closure._operationSchema; + const input = op?.[4] ?? op?.input; + const output = op?.[5] ?? op?.output; + return this.resolveMiddlewareWithContext(stack, configuration, options, { + CommandCtor: CommandRef, + middlewareFn: closure._middlewareFn, + clientName: closure._clientName, + commandName: closure._commandName, + inputFilterSensitiveLog: closure._inputFilterSensitiveLog ?? (op ? schemaLogFilter.bind(null, input) : (_) => _), + outputFilterSensitiveLog: closure._outputFilterSensitiveLog ?? (op ? schemaLogFilter.bind(null, output) : (_) => _), + smithyContext: closure._smithyContext, + additionalContext: closure._additionalContext, + }); + } + serialize = closure._serializer; + deserialize = closure._deserializer; + }); + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/constants.js b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/constants.js new file mode 100644 index 000000000..9b193d785 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/constants.js @@ -0,0 +1 @@ +export const SENSITIVE_STRING = "***SensitiveInformation***"; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/create-aggregated-client.js b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/create-aggregated-client.js new file mode 100644 index 000000000..2ac667a1d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/create-aggregated-client.js @@ -0,0 +1,47 @@ +export const createAggregatedClient = (commands, Client, options) => { + for (const [command, CommandCtor] of Object.entries(commands)) { + const methodImpl = async function (args, optionsOrCb, cb) { + const command = new CommandCtor(args); + if (typeof optionsOrCb === "function") { + this.send(command, optionsOrCb); + } + else if (typeof cb === "function") { + if (typeof optionsOrCb !== "object") + throw new Error(`Expected http options but got ${typeof optionsOrCb}`); + this.send(command, optionsOrCb || {}, cb); + } + else { + return this.send(command, optionsOrCb); + } + }; + const methodName = (command[0].toLowerCase() + command.slice(1)).replace(/Command$/, ""); + Client.prototype[methodName] = methodImpl; + } + const { paginators = {}, waiters = {} } = options ?? {}; + for (const [paginatorName, paginatorFn] of Object.entries(paginators)) { + if (Client.prototype[paginatorName] === void 0) { + Client.prototype[paginatorName] = function (commandInput = {}, paginationConfiguration, ...rest) { + return paginatorFn({ + ...paginationConfiguration, + client: this, + }, commandInput, ...rest); + }; + } + } + for (const [waiterName, waiterFn] of Object.entries(waiters)) { + if (Client.prototype[waiterName] === void 0) { + Client.prototype[waiterName] = async function (commandInput = {}, waiterConfiguration, ...rest) { + let config = waiterConfiguration; + if (typeof waiterConfiguration === "number") { + config = { + maxWaitTime: waiterConfiguration, + }; + } + return waiterFn({ + ...config, + client: this, + }, commandInput, ...rest); + }; + } + } +}; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/default-error-handler.js b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/default-error-handler.js new file mode 100644 index 000000000..7da1091a4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/default-error-handler.js @@ -0,0 +1,22 @@ +import { decorateServiceException } from "./exceptions"; +export const throwDefaultError = ({ output, parsedBody, exceptionCtor, errorCode }) => { + const $metadata = deserializeMetadata(output); + const statusCode = $metadata.httpStatusCode ? $metadata.httpStatusCode + "" : undefined; + const response = new exceptionCtor({ + name: parsedBody?.code || parsedBody?.Code || errorCode || statusCode || "UnknownError", + $fault: "client", + $metadata, + }); + throw decorateServiceException(response, parsedBody); +}; +export const withBaseException = (ExceptionCtor) => { + return ({ output, parsedBody, errorCode }) => { + throwDefaultError({ output, parsedBody, exceptionCtor: ExceptionCtor, errorCode }); + }; +}; +const deserializeMetadata = (output) => ({ + httpStatusCode: output.statusCode, + requestId: output.headers["x-amzn-requestid"] ?? output.headers["x-amzn-request-id"] ?? output.headers["x-amz-request-id"], + extendedRequestId: output.headers["x-amz-id-2"], + cfId: output.headers["x-amz-cf-id"], +}); diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/defaults-mode.js b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/defaults-mode.js new file mode 100644 index 000000000..f19079c00 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/defaults-mode.js @@ -0,0 +1,26 @@ +export const loadConfigsForDefaultMode = (mode) => { + switch (mode) { + case "standard": + return { + retryMode: "standard", + connectionTimeout: 3100, + }; + case "in-region": + return { + retryMode: "standard", + connectionTimeout: 1100, + }; + case "cross-region": + return { + retryMode: "standard", + connectionTimeout: 3100, + }; + case "mobile": + return { + retryMode: "standard", + connectionTimeout: 30000, + }; + default: + return {}; + } +}; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/emitWarningIfUnsupportedVersion.js b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/emitWarningIfUnsupportedVersion.js new file mode 100644 index 000000000..7b308939d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/emitWarningIfUnsupportedVersion.js @@ -0,0 +1,6 @@ +let warningEmitted = false; +export const emitWarningIfUnsupportedVersion = (version) => { + if (version && !warningEmitted && parseInt(version.substring(1, version.indexOf("."))) < 16) { + warningEmitted = true; + } +}; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/exceptions.js b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/exceptions.js new file mode 100644 index 000000000..88c062eb6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/exceptions.js @@ -0,0 +1,50 @@ +export class ServiceException extends Error { + $fault; + $response; + $retryable; + $metadata; + constructor(options) { + super(options.message); + Object.setPrototypeOf(this, Object.getPrototypeOf(this).constructor.prototype); + this.name = options.name; + this.$fault = options.$fault; + this.$metadata = options.$metadata; + } + static isInstance(value) { + if (!value) + return false; + const candidate = value; + return (ServiceException.prototype.isPrototypeOf(candidate) || + (Boolean(candidate.$fault) && + Boolean(candidate.$metadata) && + (candidate.$fault === "client" || candidate.$fault === "server"))); + } + static [Symbol.hasInstance](instance) { + if (!instance) + return false; + const candidate = instance; + if (this === ServiceException) { + return ServiceException.isInstance(instance); + } + if (ServiceException.isInstance(instance)) { + if (candidate.name && this.name) { + return this.prototype.isPrototypeOf(instance) || candidate.name === this.name; + } + return this.prototype.isPrototypeOf(instance); + } + return false; + } +} +export const decorateServiceException = (exception, additions = {}) => { + Object.entries(additions) + .filter(([, v]) => v !== undefined) + .forEach(([k, v]) => { + if (exception[k] == undefined || exception[k] === "") { + exception[k] = v; + } + }); + const message = exception.message || exception.Message || "UnknownError"; + exception.message = message; + delete exception.Message; + return exception; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/extended-encode-uri-component.js b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/extended-encode-uri-component.js new file mode 100644 index 000000000..cb4f99168 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/extended-encode-uri-component.js @@ -0,0 +1 @@ +export { extendedEncodeURIComponent } from "@smithy/core/protocols"; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/extensions/checksum.js b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/extensions/checksum.js new file mode 100644 index 000000000..2b4b50bab --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/extensions/checksum.js @@ -0,0 +1,49 @@ +import { AlgorithmId } from "@smithy/types"; +export { AlgorithmId }; +const knownAlgorithms = Object.values(AlgorithmId); +export const getChecksumConfiguration = (runtimeConfig) => { + const checksumAlgorithms = []; + for (const id in AlgorithmId) { + const algorithmId = AlgorithmId[id]; + if (runtimeConfig[algorithmId] === undefined) { + continue; + } + checksumAlgorithms.push({ + algorithmId: () => algorithmId, + checksumConstructor: () => runtimeConfig[algorithmId], + }); + } + for (const [id, ChecksumCtor] of Object.entries(runtimeConfig.checksumAlgorithms ?? {})) { + checksumAlgorithms.push({ + algorithmId: () => id, + checksumConstructor: () => ChecksumCtor, + }); + } + return { + addChecksumAlgorithm(algo) { + runtimeConfig.checksumAlgorithms = runtimeConfig.checksumAlgorithms ?? {}; + const id = algo.algorithmId(); + const ctor = algo.checksumConstructor(); + if (knownAlgorithms.includes(id)) { + runtimeConfig.checksumAlgorithms[id.toUpperCase()] = ctor; + } + else { + runtimeConfig.checksumAlgorithms[id] = ctor; + } + checksumAlgorithms.push(algo); + }, + checksumAlgorithms() { + return checksumAlgorithms; + }, + }; +}; +export const resolveChecksumRuntimeConfig = (clientConfig) => { + const runtimeConfig = {}; + clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => { + const id = checksumAlgorithm.algorithmId(); + if (knownAlgorithms.includes(id)) { + runtimeConfig[id] = checksumAlgorithm.checksumConstructor(); + } + }); + return runtimeConfig; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/extensions/defaultExtensionConfiguration.js b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/extensions/defaultExtensionConfiguration.js new file mode 100644 index 000000000..272cd3ae7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/extensions/defaultExtensionConfiguration.js @@ -0,0 +1,9 @@ +import { getChecksumConfiguration, resolveChecksumRuntimeConfig } from "./checksum"; +import { getRetryConfiguration, resolveRetryRuntimeConfig } from "./retry"; +export const getDefaultExtensionConfiguration = (runtimeConfig) => { + return Object.assign(getChecksumConfiguration(runtimeConfig), getRetryConfiguration(runtimeConfig)); +}; +export const getDefaultClientConfiguration = getDefaultExtensionConfiguration; +export const resolveDefaultRuntimeConfig = (config) => { + return Object.assign(resolveChecksumRuntimeConfig(config), resolveRetryRuntimeConfig(config)); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/extensions/index.js b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/extensions/index.js new file mode 100644 index 000000000..f1b80749e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/extensions/index.js @@ -0,0 +1 @@ +export * from "./defaultExtensionConfiguration"; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/extensions/retry.js b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/extensions/retry.js new file mode 100644 index 000000000..2c18b0a16 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/extensions/retry.js @@ -0,0 +1,15 @@ +export const getRetryConfiguration = (runtimeConfig) => { + return { + setRetryStrategy(retryStrategy) { + runtimeConfig.retryStrategy = retryStrategy; + }, + retryStrategy() { + return runtimeConfig.retryStrategy; + }, + }; +}; +export const resolveRetryRuntimeConfig = (retryStrategyConfiguration) => { + const runtimeConfig = {}; + runtimeConfig.retryStrategy = retryStrategyConfiguration.retryStrategy(); + return runtimeConfig; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/get-array-if-single-item.js b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/get-array-if-single-item.js new file mode 100644 index 000000000..25d943272 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/get-array-if-single-item.js @@ -0,0 +1 @@ +export const getArrayIfSingleItem = (mayBeArray) => Array.isArray(mayBeArray) ? mayBeArray : [mayBeArray]; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/get-value-from-text-node.js b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/get-value-from-text-node.js new file mode 100644 index 000000000..aa0f8271a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/get-value-from-text-node.js @@ -0,0 +1,12 @@ +export const getValueFromTextNode = (obj) => { + const textNodeName = "#text"; + for (const key in obj) { + if (obj.hasOwnProperty(key) && obj[key][textNodeName] !== undefined) { + obj[key] = obj[key][textNodeName]; + } + else if (typeof obj[key] === "object" && obj[key] !== null) { + obj[key] = getValueFromTextNode(obj[key]); + } + } + return obj; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/index.js new file mode 100644 index 000000000..7dbe6079d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/index.js @@ -0,0 +1,20 @@ +export * from "./client"; +export * from "./collect-stream-body"; +export * from "./command"; +export * from "./constants"; +export * from "./create-aggregated-client"; +export * from "./default-error-handler"; +export * from "./defaults-mode"; +export * from "./emitWarningIfUnsupportedVersion"; +export * from "./exceptions"; +export * from "./extended-encode-uri-component"; +export * from "./extensions"; +export * from "./get-array-if-single-item"; +export * from "./get-value-from-text-node"; +export * from "./is-serializable-header-value"; +export * from "./NoOpLogger"; +export * from "./object-mapping"; +export * from "./resolve-path"; +export * from "./ser-utils"; +export * from "./serde-json"; +export * from "@smithy/core/serde"; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/is-serializable-header-value.js b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/is-serializable-header-value.js new file mode 100644 index 000000000..cb117cafd --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/is-serializable-header-value.js @@ -0,0 +1,3 @@ +export const isSerializableHeaderValue = (value) => { + return value != null; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/object-mapping.js b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/object-mapping.js new file mode 100644 index 000000000..84a1f263c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/object-mapping.js @@ -0,0 +1,92 @@ +export function map(arg0, arg1, arg2) { + let target; + let filter; + let instructions; + if (typeof arg1 === "undefined" && typeof arg2 === "undefined") { + target = {}; + instructions = arg0; + } + else { + target = arg0; + if (typeof arg1 === "function") { + filter = arg1; + instructions = arg2; + return mapWithFilter(target, filter, instructions); + } + else { + instructions = arg1; + } + } + for (const key of Object.keys(instructions)) { + if (!Array.isArray(instructions[key])) { + target[key] = instructions[key]; + continue; + } + applyInstruction(target, null, instructions, key); + } + return target; +} +export const convertMap = (target) => { + const output = {}; + for (const [k, v] of Object.entries(target || {})) { + output[k] = [, v]; + } + return output; +}; +export const take = (source, instructions) => { + const out = {}; + for (const key in instructions) { + applyInstruction(out, source, instructions, key); + } + return out; +}; +const mapWithFilter = (target, filter, instructions) => { + return map(target, Object.entries(instructions).reduce((_instructions, [key, value]) => { + if (Array.isArray(value)) { + _instructions[key] = value; + } + else { + if (typeof value === "function") { + _instructions[key] = [filter, value()]; + } + else { + _instructions[key] = [filter, value]; + } + } + return _instructions; + }, {})); +}; +const applyInstruction = (target, source, instructions, targetKey) => { + if (source !== null) { + let instruction = instructions[targetKey]; + if (typeof instruction === "function") { + instruction = [, instruction]; + } + const [filter = nonNullish, valueFn = pass, sourceKey = targetKey] = instruction; + if ((typeof filter === "function" && filter(source[sourceKey])) || (typeof filter !== "function" && !!filter)) { + target[targetKey] = valueFn(source[sourceKey]); + } + return; + } + let [filter, value] = instructions[targetKey]; + if (typeof value === "function") { + let _value; + const defaultFilterPassed = filter === undefined && (_value = value()) != null; + const customFilterPassed = (typeof filter === "function" && !!filter(void 0)) || (typeof filter !== "function" && !!filter); + if (defaultFilterPassed) { + target[targetKey] = _value; + } + else if (customFilterPassed) { + target[targetKey] = value(); + } + } + else { + const defaultFilterPassed = filter === undefined && value != null; + const customFilterPassed = (typeof filter === "function" && !!filter(value)) || (typeof filter !== "function" && !!filter); + if (defaultFilterPassed || customFilterPassed) { + target[targetKey] = value; + } + } +}; +const nonNullish = (_) => _ != null; +const pass = (_) => _; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/resolve-path.js b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/resolve-path.js new file mode 100644 index 000000000..6c70cb3b0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/resolve-path.js @@ -0,0 +1 @@ +export { resolvedPath } from "@smithy/core/protocols"; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/schemaLogFilter.js b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/schemaLogFilter.js new file mode 100644 index 000000000..b00f55713 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/schemaLogFilter.js @@ -0,0 +1,34 @@ +import { NormalizedSchema } from "@smithy/core/schema"; +const SENSITIVE_STRING = "***SensitiveInformation***"; +export function schemaLogFilter(schema, data) { + if (data == null) { + return data; + } + const ns = NormalizedSchema.of(schema); + if (ns.getMergedTraits().sensitive) { + return SENSITIVE_STRING; + } + if (ns.isListSchema()) { + const isSensitive = !!ns.getValueSchema().getMergedTraits().sensitive; + if (isSensitive) { + return SENSITIVE_STRING; + } + } + else if (ns.isMapSchema()) { + const isSensitive = !!ns.getKeySchema().getMergedTraits().sensitive || !!ns.getValueSchema().getMergedTraits().sensitive; + if (isSensitive) { + return SENSITIVE_STRING; + } + } + else if (ns.isStructSchema() && typeof data === "object") { + const object = data; + const newObject = {}; + for (const [member, memberNs] of ns.structIterator()) { + if (object[member] != null) { + newObject[member] = schemaLogFilter(memberNs, object[member]); + } + } + return newObject; + } + return data; +} diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/ser-utils.js b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/ser-utils.js new file mode 100644 index 000000000..207437fe9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/ser-utils.js @@ -0,0 +1,14 @@ +export const serializeFloat = (value) => { + if (value !== value) { + return "NaN"; + } + switch (value) { + case Infinity: + return "Infinity"; + case -Infinity: + return "-Infinity"; + default: + return value; + } +}; +export const serializeDateTime = (date) => date.toISOString().replace(".000Z", "Z"); diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/serde-json.js b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/serde-json.js new file mode 100644 index 000000000..babb7c174 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-es/serde-json.js @@ -0,0 +1,19 @@ +export const _json = (obj) => { + if (obj == null) { + return {}; + } + if (Array.isArray(obj)) { + return obj.filter((_) => _ != null).map(_json); + } + if (typeof obj === "object") { + const target = {}; + for (const key of Object.keys(obj)) { + if (obj[key] == null) { + continue; + } + target[key] = _json(obj[key]); + } + return target; + } + return obj; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/NoOpLogger.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/NoOpLogger.d.ts new file mode 100644 index 000000000..789fdd2c2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/NoOpLogger.d.ts @@ -0,0 +1,11 @@ +import type { Logger } from "@smithy/types"; +/** + * @internal + */ +export declare class NoOpLogger implements Logger { + trace(): void; + debug(): void; + info(): void; + warn(): void; + error(): void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/client.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/client.d.ts new file mode 100644 index 000000000..09e505a54 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/client.d.ts @@ -0,0 +1,87 @@ +import type { $ClientProtocol, $ClientProtocolCtor, Client as IClient, ClientProtocol, ClientProtocolCtor, Command, FetchHttpHandlerOptions, MetadataBearer, MiddlewareStack, NodeHttpHandlerOptions, RequestHandler } from "@smithy/types"; +/** + * @public + */ +export interface SmithyConfiguration { + /** + * @public + */ + requestHandler: RequestHandler | NodeHttpHandlerOptions | FetchHttpHandlerOptions | Record; + /** + * @public + * + * Default false. + * + * When true, the client will only resolve the middleware stack once per + * Command class. This means modifying the middlewareStack of the + * command or client after requests have been made will not be + * recognized. + * + * Calling client.destroy() also clears this cache. + * + * Enable this only if needing the additional time saved (0-1ms per request) + * and not needing middleware modifications between requests. + */ + cacheMiddleware?: boolean; + /** + * A client request/response protocol or constructor of one. + * A protocol in this context is not e.g. https. + * It is the combined implementation of how to (de)serialize and create + * the messages (e.g. http requests/responses) that are being exchanged. + * + * @public + */ + protocol?: ClientProtocol | $ClientProtocol | ClientProtocolCtor | $ClientProtocolCtor; + /** + * These are automatically generated and will be passed to the + * config.protocol if given as a constructor. + * @internal + */ + protocolSettings?: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + /** + * The API version set internally by the SDK, and is + * not planned to be used by customer code. + * @internal + */ + readonly apiVersion: string; +} +/** + * @internal + */ +export type SmithyResolvedConfiguration = { + requestHandler: RequestHandler; + cacheMiddleware?: boolean; + protocol?: ClientProtocol | $ClientProtocol; + protocolSettings?: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + readonly apiVersion: string; +}; +/** + * @public + */ +export declare class Client> implements IClient { + readonly config: ResolvedClientConfiguration; + middlewareStack: MiddlewareStack; + /** + * Holds an object reference to the initial configuration object. + * Used to check that the config resolver stack does not create + * dangling instances of an intermediate form of the configuration object. + * + * @internal + */ + initConfig?: object; + /** + * May be used to cache the resolved handler function for a Command class. + */ + private handlers?; + constructor(config: ResolvedClientConfiguration); + send(command: Command>, options?: HandlerOptions): Promise; + send(command: Command>, cb: (err: any, data?: OutputType) => void): void; + send(command: Command>, options: HandlerOptions, cb: (err: any, data?: OutputType) => void): void; + destroy(): void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/collect-stream-body.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/collect-stream-body.d.ts new file mode 100644 index 000000000..33378b80a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/collect-stream-body.d.ts @@ -0,0 +1,5 @@ +/** + * @internal + * Backwards compatibility re-export. + */ +export { collectBody } from "@smithy/core/protocols"; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/command.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/command.d.ts new file mode 100644 index 000000000..2c4bab708 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/command.d.ts @@ -0,0 +1,119 @@ +import type { EndpointParameterInstructions } from "@smithy/middleware-endpoint"; +import type { Command as ICommand, Handler, HandlerExecutionContext, HttpRequest as IHttpRequest, HttpResponse as IHttpResponse, Logger, MetadataBearer, MiddlewareStack as IMiddlewareStack, OperationSchema, OptionalParameter, Pluggable, RequestHandler, SerdeContext, StaticOperationSchema } from "@smithy/types"; +/** + * @public + */ +export declare abstract class Command implements ICommand { + abstract input: Input; + readonly middlewareStack: IMiddlewareStack; + readonly schema?: OperationSchema | StaticOperationSchema; + /** + * Factory for Command ClassBuilder. + * @internal + */ + static classBuilder; + }, SI extends object = any, SO extends MetadataBearer = any>(): ClassBuilder; + abstract resolveMiddleware(stack: IMiddlewareStack, configuration: ResolvedClientConfiguration, options: any): Handler; + /** + * @internal + */ + resolveMiddlewareWithContext(clientStack: IMiddlewareStack, configuration: { + logger: Logger; + requestHandler: RequestHandler; + }, options: any, { middlewareFn, clientName, commandName, inputFilterSensitiveLog, outputFilterSensitiveLog, smithyContext, additionalContext, CommandCtor, }: ResolveMiddlewareContextArgs): import("@smithy/types").InitializeHandler; +} +/** + * @internal + */ +type ResolveMiddlewareContextArgs = { + middlewareFn: (CommandCtor: any, clientStack: any, config: any, options: any) => Pluggable[]; + clientName: string; + commandName: string; + smithyContext: Record; + additionalContext: HandlerExecutionContext; + inputFilterSensitiveLog: (_: any) => any; + outputFilterSensitiveLog: (_: any) => any; + CommandCtor: any; +}; +/** + * @internal + */ +declare class ClassBuilder; +}, SI extends object = any, SO extends MetadataBearer = any> { + private _init; + private _ep; + private _middlewareFn; + private _commandName; + private _clientName; + private _additionalContext; + private _smithyContext; + private _inputFilterSensitiveLog; + private _outputFilterSensitiveLog; + private _serializer; + private _deserializer; + private _operationSchema?; + /** + * Optional init callback. + */ + init(cb: (_: Command) => void): void; + /** + * Set the endpoint parameter instructions. + */ + ep(endpointParameterInstructions: EndpointParameterInstructions): ClassBuilder; + /** + * Add any number of middleware. + */ + m(middlewareSupplier: (CommandCtor: any, clientStack: any, config: any, options: any) => Pluggable[]): ClassBuilder; + /** + * Set the initial handler execution context Smithy field. + */ + s(service: string, operation: string, smithyContext?: Record): ClassBuilder; + /** + * Set the initial handler execution context. + */ + c(additionalContext?: HandlerExecutionContext): ClassBuilder; + /** + * Set constant string identifiers for the operation. + */ + n(clientName: string, commandName: string): ClassBuilder; + /** + * Set the input and output sensistive log filters. + */ + f(inputFilter?: (_: any) => any, outputFilter?: (_: any) => any): ClassBuilder; + /** + * Sets the serializer. + */ + ser(serializer: (input: I, context?: SerdeContext | any) => Promise): ClassBuilder; + /** + * Sets the deserializer. + */ + de(deserializer: (output: IHttpResponse, context?: SerdeContext | any) => Promise): ClassBuilder; + /** + * Sets input/output schema for the operation. + */ + sc(operation: OperationSchema | StaticOperationSchema): ClassBuilder; + /** + * @returns a Command class with the classBuilder properties. + */ + build(): { + new (input: I): CommandImpl; + new (...[input]: OptionalParameter): CommandImpl; + getEndpointParameterInstructions(): EndpointParameterInstructions; + }; +} +/** + * A concrete implementation of ICommand with no abstract members. + * @public + */ +export interface CommandImpl; +}, SI extends object = any, SO extends MetadataBearer = any> extends Command { + readonly input: I; + resolveMiddleware(stack: IMiddlewareStack, configuration: C, options: any): Handler; +} +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/constants.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/constants.d.ts new file mode 100644 index 000000000..c17e1c8a5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/constants.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const SENSITIVE_STRING = "***SensitiveInformation***"; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/create-aggregated-client.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/create-aggregated-client.d.ts new file mode 100644 index 000000000..aa15a20aa --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/create-aggregated-client.d.ts @@ -0,0 +1,18 @@ +import type { Client } from "./client"; +/** + * @internal + * + * @param commands - command lookup container. + * @param Client - client instance on which to add aggregated methods. + * @param options + * @param options.paginators - paginator functions. + * @param options.waiters - waiter functions. + * + * @returns an aggregated client with dynamically created methods. + */ +export declare const createAggregatedClient: (commands: Record, Client: { + new (...args: any): Client; +}, options?: { + paginators?: Record; + waiters?: Record; +}) => void; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/default-error-handler.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/default-error-handler.d.ts new file mode 100644 index 000000000..995fbfcbe --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/default-error-handler.d.ts @@ -0,0 +1,15 @@ +/** + * Always throws an error with the given `exceptionCtor` and other arguments. + * This is only called from an error handling code path. + * + * @internal + */ +export declare const throwDefaultError: ({ output, parsedBody, exceptionCtor, errorCode }: any) => never; +/** + * @internal + * + * Creates {@link throwDefaultError} with bound ExceptionCtor. + */ +export declare const withBaseException: (ExceptionCtor: { + new (...args: any): any; +}) => any; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/defaults-mode.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/defaults-mode.d.ts new file mode 100644 index 000000000..1ddb6f0f2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/defaults-mode.d.ts @@ -0,0 +1,28 @@ +/** + * @internal + */ +export declare const loadConfigsForDefaultMode: (mode: ResolvedDefaultsMode) => DefaultsModeConfigs; +/** + * Option determining how certain default configuration options are resolved in the SDK. It can be one of the value listed below: + * * `"standard"`:

The STANDARD mode provides the latest recommended default values that should be safe to run in most scenarios

Note that the default values vended from this mode might change as best practices may evolve. As a result, it is encouraged to perform tests when upgrading the SDK

+ * * `"in-region"`:

The IN_REGION mode builds on the standard mode and includes optimization tailored for applications which call AWS services from within the same AWS region

Note that the default values vended from this mode might change as best practices may evolve. As a result, it is encouraged to perform tests when upgrading the SDK

+ * * `"cross-region"`:

The CROSS_REGION mode builds on the standard mode and includes optimization tailored for applications which call AWS services in a different region

Note that the default values vended from this mode might change as best practices may evolve. As a result, it is encouraged to perform tests when upgrading the SDK

+ * * `"mobile"`:

The MOBILE mode builds on the standard mode and includes optimization tailored for mobile applications

Note that the default values vended from this mode might change as best practices may evolve. As a result, it is encouraged to perform tests when upgrading the SDK

+ * * `"auto"`:

The AUTO mode is an experimental mode that builds on the standard mode. The SDK will attempt to discover the execution environment to determine the appropriate settings automatically.

Note that the auto detection is heuristics-based and does not guarantee 100% accuracy. STANDARD mode will be used if the execution environment cannot be determined. The auto detection might query EC2 Instance Metadata service, which might introduce latency. Therefore we recommend choosing an explicit defaults_mode instead if startup latency is critical to your application

+ * * `"legacy"`:

The LEGACY mode provides default settings that vary per SDK and were used prior to establishment of defaults_mode

+ * + * @defaultValue "legacy" + */ +export type DefaultsMode = "standard" | "in-region" | "cross-region" | "mobile" | "auto" | "legacy"; +/** + * @internal + */ +export type ResolvedDefaultsMode = Exclude; +/** + * @internal + */ +export interface DefaultsModeConfigs { + retryMode?: string; + connectionTimeout?: number; + requestTimeout?: number; +} diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/emitWarningIfUnsupportedVersion.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/emitWarningIfUnsupportedVersion.d.ts new file mode 100644 index 000000000..8fc02ce24 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/emitWarningIfUnsupportedVersion.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + * + * Emits warning if the provided Node.js version string is pending deprecation. + * + * @param version - The Node.js version string. + */ +export declare const emitWarningIfUnsupportedVersion: (version: string) => void; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/exceptions.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/exceptions.d.ts new file mode 100644 index 000000000..614b3cb28 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/exceptions.d.ts @@ -0,0 +1,42 @@ +import type { HttpResponse, MetadataBearer, ResponseMetadata, RetryableTrait, SmithyException } from "@smithy/types"; +/** + * The type of the exception class constructor parameter. The returned type contains the properties + * in the `ExceptionType` but not in the `BaseExceptionType`. If the `BaseExceptionType` contains + * `$metadata` and `message` properties, it's also included in the returned type. + * @internal + */ +export type ExceptionOptionType = Omit>; +/** + * @public + */ +export interface ServiceExceptionOptions extends SmithyException, MetadataBearer { + message?: string; +} +/** + * @public + * + * Base exception class for the exceptions from the server-side. + */ +export declare class ServiceException extends Error implements SmithyException, MetadataBearer { + readonly $fault: "client" | "server"; + $response?: HttpResponse; + $retryable?: RetryableTrait; + $metadata: ResponseMetadata; + constructor(options: ServiceExceptionOptions); + /** + * Checks if a value is an instance of ServiceException (duck typed) + */ + static isInstance(value: unknown): value is ServiceException; + /** + * Custom instanceof check to support the operator for ServiceException base class + */ + static [Symbol.hasInstance](instance: unknown): boolean; +} +/** + * This method inject unmodeled member to a deserialized SDK exception, + * and load the error message from different possible keys('message', + * 'Message'). + * + * @internal + */ +export declare const decorateServiceException: (exception: E, additions?: Record) => E; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/extended-encode-uri-component.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/extended-encode-uri-component.d.ts new file mode 100644 index 000000000..ced666a64 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/extended-encode-uri-component.d.ts @@ -0,0 +1,5 @@ +/** + * @internal + * Backwards compatibility re-export. + */ +export { extendedEncodeURIComponent } from "@smithy/core/protocols"; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/extensions/checksum.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/extensions/checksum.d.ts new file mode 100644 index 000000000..6fa8c2907 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/extensions/checksum.d.ts @@ -0,0 +1,26 @@ +import type { ChecksumAlgorithm, ChecksumConfiguration, ChecksumConstructor, HashConstructor } from "@smithy/types"; +import { AlgorithmId } from "@smithy/types"; +export { AlgorithmId, ChecksumAlgorithm, ChecksumConfiguration }; +/** + * @internal + */ +export type PartialChecksumRuntimeConfigType = { + checksumAlgorithms?: Record; + sha256?: ChecksumConstructor | HashConstructor; + md5?: ChecksumConstructor | HashConstructor; + crc32?: ChecksumConstructor | HashConstructor; + crc32c?: ChecksumConstructor | HashConstructor; + sha1?: ChecksumConstructor | HashConstructor; +}; +/** + * @param runtimeConfig - config object of the client instance. + * @internal + */ +export declare const getChecksumConfiguration: (runtimeConfig: PartialChecksumRuntimeConfigType) => { + addChecksumAlgorithm(algo: ChecksumAlgorithm): void; + checksumAlgorithms(): ChecksumAlgorithm[]; +}; +/** + * @internal + */ +export declare const resolveChecksumRuntimeConfig: (clientConfig: ChecksumConfiguration) => PartialChecksumRuntimeConfigType; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/extensions/defaultExtensionConfiguration.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/extensions/defaultExtensionConfiguration.d.ts new file mode 100644 index 000000000..6eb1ebb08 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/extensions/defaultExtensionConfiguration.d.ts @@ -0,0 +1,38 @@ +import type { DefaultExtensionConfiguration } from "@smithy/types"; +import type { PartialChecksumRuntimeConfigType } from "./checksum"; +import type { PartialRetryRuntimeConfigType } from "./retry"; +/** + * @internal + */ +export type DefaultExtensionRuntimeConfigType = PartialRetryRuntimeConfigType & PartialChecksumRuntimeConfigType; +/** + * @internal + * + * Helper function to resolve default extension configuration from runtime config + */ +export declare const getDefaultExtensionConfiguration: (runtimeConfig: DefaultExtensionRuntimeConfigType) => { + addChecksumAlgorithm(algo: import("@smithy/types").ChecksumAlgorithm): void; + checksumAlgorithms(): import("@smithy/types").ChecksumAlgorithm[]; +} & { + setRetryStrategy(retryStrategy: import("@smithy/types").Provider): void; + retryStrategy(): import("@smithy/types").Provider; +}; +/** + * @deprecated use getDefaultExtensionConfiguration + * @internal + * + * Helper function to resolve default extension configuration from runtime config + */ +export declare const getDefaultClientConfiguration: (runtimeConfig: DefaultExtensionRuntimeConfigType) => { + addChecksumAlgorithm(algo: import("@smithy/types").ChecksumAlgorithm): void; + checksumAlgorithms(): import("@smithy/types").ChecksumAlgorithm[]; +} & { + setRetryStrategy(retryStrategy: import("@smithy/types").Provider): void; + retryStrategy(): import("@smithy/types").Provider; +}; +/** + * @internal + * + * Helper function to resolve runtime config from default extension configuration + */ +export declare const resolveDefaultRuntimeConfig: (config: DefaultExtensionConfiguration) => DefaultExtensionRuntimeConfigType; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/extensions/index.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/extensions/index.d.ts new file mode 100644 index 000000000..f1b80749e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/extensions/index.d.ts @@ -0,0 +1 @@ +export * from "./defaultExtensionConfiguration"; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/extensions/retry.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/extensions/retry.d.ts new file mode 100644 index 000000000..72994aafa --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/extensions/retry.d.ts @@ -0,0 +1,18 @@ +import type { Provider, RetryStrategy, RetryStrategyConfiguration, RetryStrategyV2 } from "@smithy/types"; +/** + * @internal + */ +export type PartialRetryRuntimeConfigType = Partial<{ + retryStrategy: Provider; +}>; +/** + * @internal + */ +export declare const getRetryConfiguration: (runtimeConfig: PartialRetryRuntimeConfigType) => { + setRetryStrategy(retryStrategy: Provider): void; + retryStrategy(): Provider; +}; +/** + * @internal + */ +export declare const resolveRetryRuntimeConfig: (retryStrategyConfiguration: RetryStrategyConfiguration) => PartialRetryRuntimeConfigType; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/get-array-if-single-item.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/get-array-if-single-item.d.ts new file mode 100644 index 000000000..6468b9143 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/get-array-if-single-item.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + * + * The XML parser will set one K:V for a member that could + * return multiple entries but only has one. + */ +export declare const getArrayIfSingleItem: (mayBeArray: T) => T | T[]; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/get-value-from-text-node.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/get-value-from-text-node.d.ts new file mode 100644 index 000000000..7163e5af2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/get-value-from-text-node.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + * + * Recursively parses object and populates value is node from + * "#text" key if it's available + */ +export declare const getValueFromTextNode: (obj: any) => any; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/index.d.ts new file mode 100644 index 000000000..666ce52f1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/index.d.ts @@ -0,0 +1,21 @@ +export type { DocumentType, SdkError, SmithyException } from "@smithy/types"; +export * from "./client"; +export * from "./collect-stream-body"; +export * from "./command"; +export * from "./constants"; +export * from "./create-aggregated-client"; +export * from "./default-error-handler"; +export * from "./defaults-mode"; +export * from "./emitWarningIfUnsupportedVersion"; +export * from "./exceptions"; +export * from "./extended-encode-uri-component"; +export * from "./extensions"; +export * from "./get-array-if-single-item"; +export * from "./get-value-from-text-node"; +export * from "./is-serializable-header-value"; +export * from "./NoOpLogger"; +export * from "./object-mapping"; +export * from "./resolve-path"; +export * from "./ser-utils"; +export * from "./serde-json"; +export * from "@smithy/core/serde"; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/is-serializable-header-value.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/is-serializable-header-value.d.ts new file mode 100644 index 000000000..a35a23ac5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/is-serializable-header-value.d.ts @@ -0,0 +1,5 @@ +/** + * @internal + * @returns whether the header value is serializable. + */ +export declare const isSerializableHeaderValue: (value: any) => boolean; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/object-mapping.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/object-mapping.d.ts new file mode 100644 index 000000000..97e28e590 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/object-mapping.d.ts @@ -0,0 +1,162 @@ +/** + * @internal + * + * A set of instructions for multiple keys. + * The aim is to provide a concise yet readable way to map and filter values + * onto a target object. + * + * @example + * ```javascript + * const example: ObjectMappingInstructions = { + * lazyValue1: [, () => 1], + * lazyValue2: [, () => 2], + * lazyValue3: [, () => 3], + * lazyConditionalValue1: [() => true, () => 4], + * lazyConditionalValue2: [() => true, () => 5], + * lazyConditionalValue3: [true, () => 6], + * lazyConditionalValue4: [false, () => 44], + * lazyConditionalValue5: [() => false, () => 55], + * lazyConditionalValue6: ["", () => 66], + * simpleValue1: [, 7], + * simpleValue2: [, 8], + * simpleValue3: [, 9], + * conditionalValue1: [() => true, 10], + * conditionalValue2: [() => true, 11], + * conditionalValue3: [{}, 12], + * conditionalValue4: [false, 110], + * conditionalValue5: [() => false, 121], + * conditionalValue6: ["", 132], + * }; + * + * const exampleResult: Record = { + * lazyValue1: 1, + * lazyValue2: 2, + * lazyValue3: 3, + * lazyConditionalValue1: 4, + * lazyConditionalValue2: 5, + * lazyConditionalValue3: 6, + * simpleValue1: 7, + * simpleValue2: 8, + * simpleValue3: 9, + * conditionalValue1: 10, + * conditionalValue2: 11, + * conditionalValue3: 12, + * }; + * ``` + */ +export type ObjectMappingInstructions = Record; +/** + * @internal + * + * A variant of the object mapping instruction for the `take` function. + * In this case, the source value is provided to the value function, turning it + * from a supplier into a mapper. + */ +export type SourceMappingInstructions = Record; +/** + * @internal + * + * An instruction set for assigning a value to a target object. + */ +export type ObjectMappingInstruction = LazyValueInstruction | ConditionalLazyValueInstruction | SimpleValueInstruction | ConditionalValueInstruction | UnfilteredValue; +/** + * @internal + * + * non-array + */ +export type UnfilteredValue = any; +/** + * @internal + */ +export type LazyValueInstruction = [FilterStatus, ValueSupplier]; +/** + * @internal + */ +export type ConditionalLazyValueInstruction = [FilterStatusSupplier, ValueSupplier]; +/** + * @internal + */ +export type SimpleValueInstruction = [FilterStatus, Value]; +/** + * @internal + */ +export type ConditionalValueInstruction = [ValueFilteringFunction, Value]; +/** + * @internal + */ +export type SourceMappingInstruction = [(ValueFilteringFunction | FilterStatus)?, ValueMapper?, string?]; +/** + * @internal + * + * Filter is considered passed if + * 1. It is a boolean true. + * 2. It is not undefined and is itself truthy. + * 3. It is undefined and the corresponding _value_ is neither null nor undefined. + */ +export type FilterStatus = boolean | unknown | void; +/** + * @internal + * + * Supplies the filter check but not against any value as input. + */ +export type FilterStatusSupplier = () => boolean; +/** + * @internal + * + * Filter check with the given value. + */ +export type ValueFilteringFunction = (value: any) => boolean; +/** + * @internal + * + * Supplies the value for lazy evaluation. + */ +export type ValueSupplier = () => any; +/** + * @internal + * + * A function that maps the source value to the target value. + * Defaults to pass-through with nullish check. + */ +export type ValueMapper = (value: any) => any; +/** + * @internal + * + * A non-function value. + */ +export type Value = any; +/** + * @internal + * Internal/Private, for codegen use only. + * + * Transfer a set of keys from [instructions] to [target]. + * + * For each instruction in the record, the target key will be the instruction key. + * The target assignment will be conditional on the instruction's filter. + * The target assigned value will be supplied by the instructions as an evaluable function or non-function value. + * + * @see ObjectMappingInstructions for an example. + */ +export declare function map(target: any, filter: (value: any) => boolean, instructions: Record): typeof target; +/** + * @internal + */ +export declare function map(instructions: ObjectMappingInstructions): any; +/** + * @internal + */ +export declare function map(target: any, instructions: ObjectMappingInstructions): typeof target; +/** + * Convert a regular object `{ k: v }` to `{ k: [, v] }` mapping instruction set with default + * filter. + * + * @internal + */ +export declare const convertMap: (target: any) => Record; +/** + * @param source - original object with data. + * @param instructions - how to map the data. + * @returns new object mapped from the source object. + * @internal + */ +export declare const take: (source: any, instructions: SourceMappingInstructions) => any; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/resolve-path.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/resolve-path.d.ts new file mode 100644 index 000000000..2a3204fc9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/resolve-path.d.ts @@ -0,0 +1,5 @@ +/** + * @internal + * Backwards compatibility re-export. + */ +export { resolvedPath } from "@smithy/core/protocols"; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/schemaLogFilter.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/schemaLogFilter.d.ts new file mode 100644 index 000000000..696daefc0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/schemaLogFilter.d.ts @@ -0,0 +1,9 @@ +import type { SchemaRef } from "@smithy/types"; +/** + * Redacts sensitive parts of any data object using its schema, for logging. + * + * @internal + * @param schema - with filtering traits. + * @param data - to be logged. + */ +export declare function schemaLogFilter(schema: SchemaRef, data: unknown): any; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ser-utils.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ser-utils.d.ts new file mode 100644 index 000000000..ae03c61e6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ser-utils.d.ts @@ -0,0 +1,15 @@ +/** + * @internal + * + * Serializes a number, turning non-numeric values into strings. + * + * @param value - The number to serialize. + * @returns A number, or a string if the given number was non-numeric. + */ +export declare const serializeFloat: (value: number) => string | number; +/** + * @internal + * @param date - to be serialized. + * @returns https://smithy.io/2.0/spec/protocol-traits.html#timestampformat-trait date-time format. + */ +export declare const serializeDateTime: (date: Date) => string; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/serde-json.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/serde-json.d.ts new file mode 100644 index 000000000..96ac476a2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/serde-json.d.ts @@ -0,0 +1,12 @@ +/** + * @internal + * + * Maps an object through the default JSON serde behavior. + * This means removing nullish fields and un-sparsifying lists. + * + * This is also used by Smithy RPCv2 CBOR as the default serde behavior. + * + * @param obj - to be checked. + * @returns same object with default serde behavior applied. + */ +export declare const _json: (obj: any) => any; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/NoOpLogger.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/NoOpLogger.d.ts new file mode 100644 index 000000000..93ebff492 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/NoOpLogger.d.ts @@ -0,0 +1,11 @@ +import { Logger } from "@smithy/types"; +/** + * @internal + */ +export declare class NoOpLogger implements Logger { + trace(): void; + debug(): void; + info(): void; + warn(): void; + error(): void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/client.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/client.d.ts new file mode 100644 index 000000000..8dca5961c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/client.d.ts @@ -0,0 +1,87 @@ +import { $ClientProtocol, $ClientProtocolCtor, Client as IClient, ClientProtocol, ClientProtocolCtor, Command, FetchHttpHandlerOptions, MetadataBearer, MiddlewareStack, NodeHttpHandlerOptions, RequestHandler } from "@smithy/types"; +/** + * @public + */ +export interface SmithyConfiguration { + /** + * @public + */ + requestHandler: RequestHandler | NodeHttpHandlerOptions | FetchHttpHandlerOptions | Record; + /** + * @public + * + * Default false. + * + * When true, the client will only resolve the middleware stack once per + * Command class. This means modifying the middlewareStack of the + * command or client after requests have been made will not be + * recognized. + * + * Calling client.destroy() also clears this cache. + * + * Enable this only if needing the additional time saved (0-1ms per request) + * and not needing middleware modifications between requests. + */ + cacheMiddleware?: boolean; + /** + * A client request/response protocol or constructor of one. + * A protocol in this context is not e.g. https. + * It is the combined implementation of how to (de)serialize and create + * the messages (e.g. http requests/responses) that are being exchanged. + * + * @public + */ + protocol?: ClientProtocol | $ClientProtocol | ClientProtocolCtor | $ClientProtocolCtor; + /** + * These are automatically generated and will be passed to the + * config.protocol if given as a constructor. + * @internal + */ + protocolSettings?: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + /** + * The API version set internally by the SDK, and is + * not planned to be used by customer code. + * @internal + */ + readonly apiVersion: string; +} +/** + * @internal + */ +export type SmithyResolvedConfiguration = { + requestHandler: RequestHandler; + cacheMiddleware?: boolean; + protocol?: ClientProtocol | $ClientProtocol; + protocolSettings?: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + readonly apiVersion: string; +}; +/** + * @public + */ +export declare class Client> implements IClient { + readonly config: ResolvedClientConfiguration; + middlewareStack: MiddlewareStack; + /** + * Holds an object reference to the initial configuration object. + * Used to check that the config resolver stack does not create + * dangling instances of an intermediate form of the configuration object. + * + * @internal + */ + initConfig?: object; + /** + * May be used to cache the resolved handler function for a Command class. + */ + private handlers?; + constructor(config: ResolvedClientConfiguration); + send(command: Command>, options?: HandlerOptions): Promise; + send(command: Command>, cb: (err: any, data?: OutputType) => void): void; + send(command: Command>, options: HandlerOptions, cb: (err: any, data?: OutputType) => void): void; + destroy(): void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/collect-stream-body.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/collect-stream-body.d.ts new file mode 100644 index 000000000..33378b80a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/collect-stream-body.d.ts @@ -0,0 +1,5 @@ +/** + * @internal + * Backwards compatibility re-export. + */ +export { collectBody } from "@smithy/core/protocols"; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/command.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/command.d.ts new file mode 100644 index 000000000..f77582fa2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/command.d.ts @@ -0,0 +1,119 @@ +import { EndpointParameterInstructions } from "@smithy/middleware-endpoint"; +import { Command as ICommand, Handler, HandlerExecutionContext, HttpRequest as IHttpRequest, HttpResponse as IHttpResponse, Logger, MetadataBearer, MiddlewareStack as IMiddlewareStack, OperationSchema, OptionalParameter, Pluggable, RequestHandler, SerdeContext, StaticOperationSchema } from "@smithy/types"; +/** + * @public + */ +export declare abstract class Command implements ICommand { + abstract input: Input; + readonly middlewareStack: IMiddlewareStack; + readonly schema?: OperationSchema | StaticOperationSchema; + /** + * Factory for Command ClassBuilder. + * @internal + */ + static classBuilder; + }, SI extends object = any, SO extends MetadataBearer = any>(): ClassBuilder; + abstract resolveMiddleware(stack: IMiddlewareStack, configuration: ResolvedClientConfiguration, options: any): Handler; + /** + * @internal + */ + resolveMiddlewareWithContext(clientStack: IMiddlewareStack, configuration: { + logger: Logger; + requestHandler: RequestHandler; + }, options: any, { middlewareFn, clientName, commandName, inputFilterSensitiveLog, outputFilterSensitiveLog, smithyContext, additionalContext, CommandCtor, }: ResolveMiddlewareContextArgs): import("@smithy/types").InitializeHandler; +} +/** + * @internal + */ +type ResolveMiddlewareContextArgs = { + middlewareFn: (CommandCtor: any, clientStack: any, config: any, options: any) => Pluggable[]; + clientName: string; + commandName: string; + smithyContext: Record; + additionalContext: HandlerExecutionContext; + inputFilterSensitiveLog: (_: any) => any; + outputFilterSensitiveLog: (_: any) => any; + CommandCtor: any; +}; +/** + * @internal + */ +declare class ClassBuilder; +}, SI extends object = any, SO extends MetadataBearer = any> { + private _init; + private _ep; + private _middlewareFn; + private _commandName; + private _clientName; + private _additionalContext; + private _smithyContext; + private _inputFilterSensitiveLog; + private _outputFilterSensitiveLog; + private _serializer; + private _deserializer; + private _operationSchema?; + /** + * Optional init callback. + */ + init(cb: (_: Command) => void): void; + /** + * Set the endpoint parameter instructions. + */ + ep(endpointParameterInstructions: EndpointParameterInstructions): ClassBuilder; + /** + * Add any number of middleware. + */ + m(middlewareSupplier: (CommandCtor: any, clientStack: any, config: any, options: any) => Pluggable[]): ClassBuilder; + /** + * Set the initial handler execution context Smithy field. + */ + s(service: string, operation: string, smithyContext?: Record): ClassBuilder; + /** + * Set the initial handler execution context. + */ + c(additionalContext?: HandlerExecutionContext): ClassBuilder; + /** + * Set constant string identifiers for the operation. + */ + n(clientName: string, commandName: string): ClassBuilder; + /** + * Set the input and output sensistive log filters. + */ + f(inputFilter?: (_: any) => any, outputFilter?: (_: any) => any): ClassBuilder; + /** + * Sets the serializer. + */ + ser(serializer: (input: I, context?: SerdeContext | any) => Promise): ClassBuilder; + /** + * Sets the deserializer. + */ + de(deserializer: (output: IHttpResponse, context?: SerdeContext | any) => Promise): ClassBuilder; + /** + * Sets input/output schema for the operation. + */ + sc(operation: OperationSchema | StaticOperationSchema): ClassBuilder; + /** + * @returns a Command class with the classBuilder properties. + */ + build(): { + new (input: I): CommandImpl; + new (...[input]: OptionalParameter): CommandImpl; + getEndpointParameterInstructions(): EndpointParameterInstructions; + }; +} +/** + * A concrete implementation of ICommand with no abstract members. + * @public + */ +export interface CommandImpl; +}, SI extends object = any, SO extends MetadataBearer = any> extends Command { + readonly input: I; + resolveMiddleware(stack: IMiddlewareStack, configuration: C, options: any): Handler; +} +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/constants.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/constants.d.ts new file mode 100644 index 000000000..c17e1c8a5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/constants.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const SENSITIVE_STRING = "***SensitiveInformation***"; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/create-aggregated-client.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/create-aggregated-client.d.ts new file mode 100644 index 000000000..96c8dfc12 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/create-aggregated-client.d.ts @@ -0,0 +1,18 @@ +import { Client } from "./client"; +/** + * @internal + * + * @param commands - command lookup container. + * @param Client - client instance on which to add aggregated methods. + * @param options + * @param options.paginators - paginator functions. + * @param options.waiters - waiter functions. + * + * @returns an aggregated client with dynamically created methods. + */ +export declare const createAggregatedClient: (commands: Record, Client: { + new (...args: any): Client; +}, options?: { + paginators?: Record; + waiters?: Record; +}) => void; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/default-error-handler.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/default-error-handler.d.ts new file mode 100644 index 000000000..995fbfcbe --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/default-error-handler.d.ts @@ -0,0 +1,15 @@ +/** + * Always throws an error with the given `exceptionCtor` and other arguments. + * This is only called from an error handling code path. + * + * @internal + */ +export declare const throwDefaultError: ({ output, parsedBody, exceptionCtor, errorCode }: any) => never; +/** + * @internal + * + * Creates {@link throwDefaultError} with bound ExceptionCtor. + */ +export declare const withBaseException: (ExceptionCtor: { + new (...args: any): any; +}) => any; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/defaults-mode.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/defaults-mode.d.ts new file mode 100644 index 000000000..1ddb6f0f2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/defaults-mode.d.ts @@ -0,0 +1,28 @@ +/** + * @internal + */ +export declare const loadConfigsForDefaultMode: (mode: ResolvedDefaultsMode) => DefaultsModeConfigs; +/** + * Option determining how certain default configuration options are resolved in the SDK. It can be one of the value listed below: + * * `"standard"`:

The STANDARD mode provides the latest recommended default values that should be safe to run in most scenarios

Note that the default values vended from this mode might change as best practices may evolve. As a result, it is encouraged to perform tests when upgrading the SDK

+ * * `"in-region"`:

The IN_REGION mode builds on the standard mode and includes optimization tailored for applications which call AWS services from within the same AWS region

Note that the default values vended from this mode might change as best practices may evolve. As a result, it is encouraged to perform tests when upgrading the SDK

+ * * `"cross-region"`:

The CROSS_REGION mode builds on the standard mode and includes optimization tailored for applications which call AWS services in a different region

Note that the default values vended from this mode might change as best practices may evolve. As a result, it is encouraged to perform tests when upgrading the SDK

+ * * `"mobile"`:

The MOBILE mode builds on the standard mode and includes optimization tailored for mobile applications

Note that the default values vended from this mode might change as best practices may evolve. As a result, it is encouraged to perform tests when upgrading the SDK

+ * * `"auto"`:

The AUTO mode is an experimental mode that builds on the standard mode. The SDK will attempt to discover the execution environment to determine the appropriate settings automatically.

Note that the auto detection is heuristics-based and does not guarantee 100% accuracy. STANDARD mode will be used if the execution environment cannot be determined. The auto detection might query EC2 Instance Metadata service, which might introduce latency. Therefore we recommend choosing an explicit defaults_mode instead if startup latency is critical to your application

+ * * `"legacy"`:

The LEGACY mode provides default settings that vary per SDK and were used prior to establishment of defaults_mode

+ * + * @defaultValue "legacy" + */ +export type DefaultsMode = "standard" | "in-region" | "cross-region" | "mobile" | "auto" | "legacy"; +/** + * @internal + */ +export type ResolvedDefaultsMode = Exclude; +/** + * @internal + */ +export interface DefaultsModeConfigs { + retryMode?: string; + connectionTimeout?: number; + requestTimeout?: number; +} diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/emitWarningIfUnsupportedVersion.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/emitWarningIfUnsupportedVersion.d.ts new file mode 100644 index 000000000..8fc02ce24 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/emitWarningIfUnsupportedVersion.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + * + * Emits warning if the provided Node.js version string is pending deprecation. + * + * @param version - The Node.js version string. + */ +export declare const emitWarningIfUnsupportedVersion: (version: string) => void; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/exceptions.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/exceptions.d.ts new file mode 100644 index 000000000..e1724ed60 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/exceptions.d.ts @@ -0,0 +1,42 @@ +import { HttpResponse, MetadataBearer, ResponseMetadata, RetryableTrait, SmithyException } from "@smithy/types"; +/** + * The type of the exception class constructor parameter. The returned type contains the properties + * in the `ExceptionType` but not in the `BaseExceptionType`. If the `BaseExceptionType` contains + * `$metadata` and `message` properties, it's also included in the returned type. + * @internal + */ +export type ExceptionOptionType = Pick>>; +/** + * @public + */ +export interface ServiceExceptionOptions extends SmithyException, MetadataBearer { + message?: string; +} +/** + * @public + * + * Base exception class for the exceptions from the server-side. + */ +export declare class ServiceException extends Error implements SmithyException, MetadataBearer { + readonly $fault: "client" | "server"; + $response?: HttpResponse; + $retryable?: RetryableTrait; + $metadata: ResponseMetadata; + constructor(options: ServiceExceptionOptions); + /** + * Checks if a value is an instance of ServiceException (duck typed) + */ + static isInstance(value: unknown): value is ServiceException; + /** + * Custom instanceof check to support the operator for ServiceException base class + */ + static [Symbol.hasInstance](instance: unknown): boolean; +} +/** + * This method inject unmodeled member to a deserialized SDK exception, + * and load the error message from different possible keys('message', + * 'Message'). + * + * @internal + */ +export declare const decorateServiceException: (exception: E, additions?: Record) => E; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/extended-encode-uri-component.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/extended-encode-uri-component.d.ts new file mode 100644 index 000000000..ced666a64 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/extended-encode-uri-component.d.ts @@ -0,0 +1,5 @@ +/** + * @internal + * Backwards compatibility re-export. + */ +export { extendedEncodeURIComponent } from "@smithy/core/protocols"; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/checksum.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/checksum.d.ts new file mode 100644 index 000000000..ae0fbd9bf --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/checksum.d.ts @@ -0,0 +1,26 @@ +import { ChecksumAlgorithm, ChecksumConfiguration, ChecksumConstructor, HashConstructor } from "@smithy/types"; +import { AlgorithmId } from "@smithy/types"; +export { AlgorithmId, ChecksumAlgorithm, ChecksumConfiguration }; +/** + * @internal + */ +export type PartialChecksumRuntimeConfigType = { + checksumAlgorithms?: Record; + sha256?: ChecksumConstructor | HashConstructor; + md5?: ChecksumConstructor | HashConstructor; + crc32?: ChecksumConstructor | HashConstructor; + crc32c?: ChecksumConstructor | HashConstructor; + sha1?: ChecksumConstructor | HashConstructor; +}; +/** + * @param runtimeConfig - config object of the client instance. + * @internal + */ +export declare const getChecksumConfiguration: (runtimeConfig: PartialChecksumRuntimeConfigType) => { + addChecksumAlgorithm(algo: ChecksumAlgorithm): void; + checksumAlgorithms(): ChecksumAlgorithm[]; +}; +/** + * @internal + */ +export declare const resolveChecksumRuntimeConfig: (clientConfig: ChecksumConfiguration) => PartialChecksumRuntimeConfigType; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/defaultExtensionConfiguration.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/defaultExtensionConfiguration.d.ts new file mode 100644 index 000000000..576ec2ed4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/defaultExtensionConfiguration.d.ts @@ -0,0 +1,38 @@ +import { DefaultExtensionConfiguration } from "@smithy/types"; +import { PartialChecksumRuntimeConfigType } from "./checksum"; +import { PartialRetryRuntimeConfigType } from "./retry"; +/** + * @internal + */ +export type DefaultExtensionRuntimeConfigType = PartialRetryRuntimeConfigType & PartialChecksumRuntimeConfigType; +/** + * @internal + * + * Helper function to resolve default extension configuration from runtime config + */ +export declare const getDefaultExtensionConfiguration: (runtimeConfig: DefaultExtensionRuntimeConfigType) => { + addChecksumAlgorithm(algo: import("@smithy/types").ChecksumAlgorithm): void; + checksumAlgorithms(): import("@smithy/types").ChecksumAlgorithm[]; +} & { + setRetryStrategy(retryStrategy: import("@smithy/types").Provider): void; + retryStrategy(): import("@smithy/types").Provider; +}; +/** + * @deprecated use getDefaultExtensionConfiguration + * @internal + * + * Helper function to resolve default extension configuration from runtime config + */ +export declare const getDefaultClientConfiguration: (runtimeConfig: DefaultExtensionRuntimeConfigType) => { + addChecksumAlgorithm(algo: import("@smithy/types").ChecksumAlgorithm): void; + checksumAlgorithms(): import("@smithy/types").ChecksumAlgorithm[]; +} & { + setRetryStrategy(retryStrategy: import("@smithy/types").Provider): void; + retryStrategy(): import("@smithy/types").Provider; +}; +/** + * @internal + * + * Helper function to resolve runtime config from default extension configuration + */ +export declare const resolveDefaultRuntimeConfig: (config: DefaultExtensionConfiguration) => DefaultExtensionRuntimeConfigType; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/index.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/index.d.ts new file mode 100644 index 000000000..f1b80749e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/index.d.ts @@ -0,0 +1 @@ +export * from "./defaultExtensionConfiguration"; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/retry.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/retry.d.ts new file mode 100644 index 000000000..6e2882798 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/retry.d.ts @@ -0,0 +1,18 @@ +import { Provider, RetryStrategy, RetryStrategyConfiguration, RetryStrategyV2 } from "@smithy/types"; +/** + * @internal + */ +export type PartialRetryRuntimeConfigType = Partial<{ + retryStrategy: Provider; +}>; +/** + * @internal + */ +export declare const getRetryConfiguration: (runtimeConfig: PartialRetryRuntimeConfigType) => { + setRetryStrategy(retryStrategy: Provider): void; + retryStrategy(): Provider; +}; +/** + * @internal + */ +export declare const resolveRetryRuntimeConfig: (retryStrategyConfiguration: RetryStrategyConfiguration) => PartialRetryRuntimeConfigType; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/get-array-if-single-item.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/get-array-if-single-item.d.ts new file mode 100644 index 000000000..6468b9143 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/get-array-if-single-item.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + * + * The XML parser will set one K:V for a member that could + * return multiple entries but only has one. + */ +export declare const getArrayIfSingleItem: (mayBeArray: T) => T | T[]; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/get-value-from-text-node.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/get-value-from-text-node.d.ts new file mode 100644 index 000000000..7163e5af2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/get-value-from-text-node.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + * + * Recursively parses object and populates value is node from + * "#text" key if it's available + */ +export declare const getValueFromTextNode: (obj: any) => any; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..1f8d0bf87 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/index.d.ts @@ -0,0 +1,21 @@ +export { DocumentType, SdkError, SmithyException } from "@smithy/types"; +export * from "./client"; +export * from "./collect-stream-body"; +export * from "./command"; +export * from "./constants"; +export * from "./create-aggregated-client"; +export * from "./default-error-handler"; +export * from "./defaults-mode"; +export * from "./emitWarningIfUnsupportedVersion"; +export * from "./exceptions"; +export * from "./extended-encode-uri-component"; +export * from "./extensions"; +export * from "./get-array-if-single-item"; +export * from "./get-value-from-text-node"; +export * from "./is-serializable-header-value"; +export * from "./NoOpLogger"; +export * from "./object-mapping"; +export * from "./resolve-path"; +export * from "./ser-utils"; +export * from "./serde-json"; +export * from "@smithy/core/serde"; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/is-serializable-header-value.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/is-serializable-header-value.d.ts new file mode 100644 index 000000000..a35a23ac5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/is-serializable-header-value.d.ts @@ -0,0 +1,5 @@ +/** + * @internal + * @returns whether the header value is serializable. + */ +export declare const isSerializableHeaderValue: (value: any) => boolean; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/object-mapping.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/object-mapping.d.ts new file mode 100644 index 000000000..c20bf49e8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/object-mapping.d.ts @@ -0,0 +1,178 @@ +/** + * @internal + * + * A set of instructions for multiple keys. + * The aim is to provide a concise yet readable way to map and filter values + * onto a target object. + * + * @example + * ```javascript + * const example: ObjectMappingInstructions = { + * lazyValue1: [, () => 1], + * lazyValue2: [, () => 2], + * lazyValue3: [, () => 3], + * lazyConditionalValue1: [() => true, () => 4], + * lazyConditionalValue2: [() => true, () => 5], + * lazyConditionalValue3: [true, () => 6], + * lazyConditionalValue4: [false, () => 44], + * lazyConditionalValue5: [() => false, () => 55], + * lazyConditionalValue6: ["", () => 66], + * simpleValue1: [, 7], + * simpleValue2: [, 8], + * simpleValue3: [, 9], + * conditionalValue1: [() => true, 10], + * conditionalValue2: [() => true, 11], + * conditionalValue3: [{}, 12], + * conditionalValue4: [false, 110], + * conditionalValue5: [() => false, 121], + * conditionalValue6: ["", 132], + * }; + * + * const exampleResult: Record = { + * lazyValue1: 1, + * lazyValue2: 2, + * lazyValue3: 3, + * lazyConditionalValue1: 4, + * lazyConditionalValue2: 5, + * lazyConditionalValue3: 6, + * simpleValue1: 7, + * simpleValue2: 8, + * simpleValue3: 9, + * conditionalValue1: 10, + * conditionalValue2: 11, + * conditionalValue3: 12, + * }; + * ``` + */ +export type ObjectMappingInstructions = Record; +/** + * @internal + * + * A variant of the object mapping instruction for the `take` function. + * In this case, the source value is provided to the value function, turning it + * from a supplier into a mapper. + */ +export type SourceMappingInstructions = Record; +/** + * @internal + * + * An instruction set for assigning a value to a target object. + */ +export type ObjectMappingInstruction = LazyValueInstruction | ConditionalLazyValueInstruction | SimpleValueInstruction | ConditionalValueInstruction | UnfilteredValue; +/** + * @internal + * + * non-array + */ +export type UnfilteredValue = any; +/** + * @internal + */ +export type LazyValueInstruction = [ + FilterStatus, + ValueSupplier +]; +/** + * @internal + */ +export type ConditionalLazyValueInstruction = [ + FilterStatusSupplier, + ValueSupplier +]; +/** + * @internal + */ +export type SimpleValueInstruction = [ + FilterStatus, + Value +]; +/** + * @internal + */ +export type ConditionalValueInstruction = [ + ValueFilteringFunction, + Value +]; +/** + * @internal + */ +export type SourceMappingInstruction = [ + (ValueFilteringFunction | FilterStatus)?, + ValueMapper?, + string? +]; +/** + * @internal + * + * Filter is considered passed if + * 1. It is a boolean true. + * 2. It is not undefined and is itself truthy. + * 3. It is undefined and the corresponding _value_ is neither null nor undefined. + */ +export type FilterStatus = boolean | unknown | void; +/** + * @internal + * + * Supplies the filter check but not against any value as input. + */ +export type FilterStatusSupplier = () => boolean; +/** + * @internal + * + * Filter check with the given value. + */ +export type ValueFilteringFunction = (value: any) => boolean; +/** + * @internal + * + * Supplies the value for lazy evaluation. + */ +export type ValueSupplier = () => any; +/** + * @internal + * + * A function that maps the source value to the target value. + * Defaults to pass-through with nullish check. + */ +export type ValueMapper = (value: any) => any; +/** + * @internal + * + * A non-function value. + */ +export type Value = any; +/** + * @internal + * Internal/Private, for codegen use only. + * + * Transfer a set of keys from [instructions] to [target]. + * + * For each instruction in the record, the target key will be the instruction key. + * The target assignment will be conditional on the instruction's filter. + * The target assigned value will be supplied by the instructions as an evaluable function or non-function value. + * + * @see ObjectMappingInstructions for an example. + */ +export declare function map(target: any, filter: (value: any) => boolean, instructions: Record): typeof target; +/** + * @internal + */ +export declare function map(instructions: ObjectMappingInstructions): any; +/** + * @internal + */ +export declare function map(target: any, instructions: ObjectMappingInstructions): typeof target; +/** + * Convert a regular object `{ k: v }` to `{ k: [, v] }` mapping instruction set with default + * filter. + * + * @internal + */ +export declare const convertMap: (target: any) => Record; +/** + * @param source - original object with data. + * @param instructions - how to map the data. + * @returns new object mapped from the source object. + * @internal + */ +export declare const take: (source: any, instructions: SourceMappingInstructions) => any; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/resolve-path.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/resolve-path.d.ts new file mode 100644 index 000000000..2a3204fc9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/resolve-path.d.ts @@ -0,0 +1,5 @@ +/** + * @internal + * Backwards compatibility re-export. + */ +export { resolvedPath } from "@smithy/core/protocols"; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/schemaLogFilter.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/schemaLogFilter.d.ts new file mode 100644 index 000000000..858eb9c84 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/schemaLogFilter.d.ts @@ -0,0 +1,9 @@ +import { SchemaRef } from "@smithy/types"; +/** + * Redacts sensitive parts of any data object using its schema, for logging. + * + * @internal + * @param schema - with filtering traits. + * @param data - to be logged. + */ +export declare function schemaLogFilter(schema: SchemaRef, data: unknown): any; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/ser-utils.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/ser-utils.d.ts new file mode 100644 index 000000000..ae03c61e6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/ser-utils.d.ts @@ -0,0 +1,15 @@ +/** + * @internal + * + * Serializes a number, turning non-numeric values into strings. + * + * @param value - The number to serialize. + * @returns A number, or a string if the given number was non-numeric. + */ +export declare const serializeFloat: (value: number) => string | number; +/** + * @internal + * @param date - to be serialized. + * @returns https://smithy.io/2.0/spec/protocol-traits.html#timestampformat-trait date-time format. + */ +export declare const serializeDateTime: (date: Date) => string; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/serde-json.d.ts b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/serde-json.d.ts new file mode 100644 index 000000000..96ac476a2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/dist-types/ts3.4/serde-json.d.ts @@ -0,0 +1,12 @@ +/** + * @internal + * + * Maps an object through the default JSON serde behavior. + * This means removing nullish fields and un-sparsifying lists. + * + * This is also used by Smithy RPCv2 CBOR as the default serde behavior. + * + * @param obj - to be checked. + * @returns same object with default serde behavior applied. + */ +export declare const _json: (obj: any) => any; diff --git a/food-ordering-app/server/node_modules/@smithy/smithy-client/package.json b/food-ordering-app/server/node_modules/@smithy/smithy-client/package.json new file mode 100644 index 000000000..a749fdd3f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/smithy-client/package.json @@ -0,0 +1,70 @@ +{ + "name": "@smithy/smithy-client", + "version": "4.12.5", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline smithy-client", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "extract:docs": "node ./scripts/fix-api-extractor && api-extractor run --local && node ./scripts/fix-api-extractor --unset", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/core": "^3.23.11", + "@smithy/middleware-endpoint": "^4.4.25", + "@smithy/middleware-stack": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-stream": "^4.5.19", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/smithy-client", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/smithy-client" + }, + "devDependencies": { + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/types/LICENSE b/food-ordering-app/server/node_modules/@smithy/types/LICENSE new file mode 100644 index 000000000..e907b5866 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/food-ordering-app/server/node_modules/@smithy/types/README.md b/food-ordering-app/server/node_modules/@smithy/types/README.md new file mode 100644 index 000000000..7ab3ccd41 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/README.md @@ -0,0 +1,115 @@ +# @smithy/types + +[![NPM version](https://img.shields.io/npm/v/@smithy/types/latest.svg)](https://www.npmjs.com/package/@smithy/types) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/types.svg)](https://www.npmjs.com/package/@smithy/types) + +## Usage + +This package is mostly used internally by generated clients. +Some public components have independent applications. + +--- + +### Scenario: Removing `| undefined` from input and output structures + +Generated shapes' members are unioned with `undefined` for +input shapes, and are `?` (optional) for output shapes. + +- for inputs, this defers the validation to the service. +- for outputs, this strongly suggests that you should runtime-check the output data. + +If you would like to skip these steps, use the `AssertiveClient` or +`UncheckedClient` type helpers. + +Using AWS S3 as an example: + +```ts +import { S3 } from "@aws-sdk/client-s3"; +import type { AssertiveClient, UncheckedClient } from "@smithy/types"; + +const s3a = new S3({}) as AssertiveClient; +const s3b = new S3({}) as UncheckedClient; + +// AssertiveClient enforces required inputs are not undefined +// and required outputs are not undefined. +const get = await s3a.getObject({ + Bucket: "", + // @ts-expect-error (undefined not assignable to string) + Key: undefined, +}); + +// UncheckedClient makes output fields non-nullable. +// You should still perform type checks as you deem +// necessary, but the SDK will no longer prompt you +// with nullability errors. +const body = await ( + await s3b.getObject({ + Bucket: "", + Key: "", + }) +).Body.transformToString(); +``` + +When using the transform on non-aggregated client with the `Command` syntax, +the input cannot be validated because it goes through another class. + +```ts +import { S3Client, ListBucketsCommand, GetObjectCommand, GetObjectCommandInput } from "@aws-sdk/client-s3"; +import type { AssertiveClient, UncheckedClient, NoUndefined } from "@smithy/types"; + +const s3 = new S3Client({}) as UncheckedClient; + +const list = await s3.send( + new ListBucketsCommand({ + // command inputs are not validated by the type transform. + // because this is a separate class. + }) +); + +/** + * Although less ergonomic, you can use the NoUndefined + * transform on the input type. + */ +const getObjectInput: NoUndefined = { + Bucket: "undefined", + // @ts-expect-error (undefined not assignable to string) + Key: undefined, + // optional params can still be undefined. + SSECustomerAlgorithm: undefined, +}; + +const get = s3.send(new GetObjectCommand(getObjectInput)); + +// outputs are still transformed. +await get.Body.TransformToString(); +``` + +### Scenario: Narrowing a smithy-typescript generated client's output payload blob types + +This is mostly relevant to operations with streaming bodies such as within +the S3Client in the AWS SDK for JavaScript v3. + +Because blob payload types are platform dependent, you may wish to indicate in your application that a client is running in a specific +environment. This narrows the blob payload types. + +```typescript +import { GetObjectCommand, S3Client } from "@aws-sdk/client-s3"; +import type { NodeJsClient, SdkStream, StreamingBlobPayloadOutputTypes } from "@smithy/types"; +import type { IncomingMessage } from "node:http"; + +// default client init. +const s3Default = new S3Client({}); + +// client init with type narrowing. +const s3NarrowType = new S3Client({}) as NodeJsClient; + +// The default type of blob payloads is a wide union type including multiple possible +// request handlers. +const body1: StreamingBlobPayloadOutputTypes = (await s3Default.send(new GetObjectCommand({ Key: "", Bucket: "" }))) + .Body!; + +// This is of the narrower type SdkStream representing +// blob payload responses using specifically the node:http request handler. +const body2: SdkStream = (await s3NarrowType.send(new GetObjectCommand({ Key: "", Bucket: "" }))) + .Body!; +``` diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/types/dist-cjs/index.js new file mode 100644 index 000000000..be6d0e1a5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-cjs/index.js @@ -0,0 +1,91 @@ +'use strict'; + +exports.HttpAuthLocation = void 0; +(function (HttpAuthLocation) { + HttpAuthLocation["HEADER"] = "header"; + HttpAuthLocation["QUERY"] = "query"; +})(exports.HttpAuthLocation || (exports.HttpAuthLocation = {})); + +exports.HttpApiKeyAuthLocation = void 0; +(function (HttpApiKeyAuthLocation) { + HttpApiKeyAuthLocation["HEADER"] = "header"; + HttpApiKeyAuthLocation["QUERY"] = "query"; +})(exports.HttpApiKeyAuthLocation || (exports.HttpApiKeyAuthLocation = {})); + +exports.EndpointURLScheme = void 0; +(function (EndpointURLScheme) { + EndpointURLScheme["HTTP"] = "http"; + EndpointURLScheme["HTTPS"] = "https"; +})(exports.EndpointURLScheme || (exports.EndpointURLScheme = {})); + +exports.AlgorithmId = void 0; +(function (AlgorithmId) { + AlgorithmId["MD5"] = "md5"; + AlgorithmId["CRC32"] = "crc32"; + AlgorithmId["CRC32C"] = "crc32c"; + AlgorithmId["SHA1"] = "sha1"; + AlgorithmId["SHA256"] = "sha256"; +})(exports.AlgorithmId || (exports.AlgorithmId = {})); +const getChecksumConfiguration = (runtimeConfig) => { + const checksumAlgorithms = []; + if (runtimeConfig.sha256 !== undefined) { + checksumAlgorithms.push({ + algorithmId: () => exports.AlgorithmId.SHA256, + checksumConstructor: () => runtimeConfig.sha256, + }); + } + if (runtimeConfig.md5 != undefined) { + checksumAlgorithms.push({ + algorithmId: () => exports.AlgorithmId.MD5, + checksumConstructor: () => runtimeConfig.md5, + }); + } + return { + addChecksumAlgorithm(algo) { + checksumAlgorithms.push(algo); + }, + checksumAlgorithms() { + return checksumAlgorithms; + }, + }; +}; +const resolveChecksumRuntimeConfig = (clientConfig) => { + const runtimeConfig = {}; + clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => { + runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor(); + }); + return runtimeConfig; +}; + +const getDefaultClientConfiguration = (runtimeConfig) => { + return getChecksumConfiguration(runtimeConfig); +}; +const resolveDefaultRuntimeConfig = (config) => { + return resolveChecksumRuntimeConfig(config); +}; + +exports.FieldPosition = void 0; +(function (FieldPosition) { + FieldPosition[FieldPosition["HEADER"] = 0] = "HEADER"; + FieldPosition[FieldPosition["TRAILER"] = 1] = "TRAILER"; +})(exports.FieldPosition || (exports.FieldPosition = {})); + +const SMITHY_CONTEXT_KEY = "__smithy_context"; + +exports.IniSectionType = void 0; +(function (IniSectionType) { + IniSectionType["PROFILE"] = "profile"; + IniSectionType["SSO_SESSION"] = "sso-session"; + IniSectionType["SERVICES"] = "services"; +})(exports.IniSectionType || (exports.IniSectionType = {})); + +exports.RequestHandlerProtocol = void 0; +(function (RequestHandlerProtocol) { + RequestHandlerProtocol["HTTP_0_9"] = "http/0.9"; + RequestHandlerProtocol["HTTP_1_0"] = "http/1.0"; + RequestHandlerProtocol["TDS_8_0"] = "tds/8.0"; +})(exports.RequestHandlerProtocol || (exports.RequestHandlerProtocol = {})); + +exports.SMITHY_CONTEXT_KEY = SMITHY_CONTEXT_KEY; +exports.getDefaultClientConfiguration = getDefaultClientConfiguration; +exports.resolveDefaultRuntimeConfig = resolveDefaultRuntimeConfig; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/abort-handler.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/abort-handler.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/abort-handler.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/abort.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/abort.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/abort.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/auth/HttpApiKeyAuth.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/auth/HttpApiKeyAuth.js new file mode 100644 index 000000000..4c02f242e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/auth/HttpApiKeyAuth.js @@ -0,0 +1,5 @@ +export var HttpApiKeyAuthLocation; +(function (HttpApiKeyAuthLocation) { + HttpApiKeyAuthLocation["HEADER"] = "header"; + HttpApiKeyAuthLocation["QUERY"] = "query"; +})(HttpApiKeyAuthLocation || (HttpApiKeyAuthLocation = {})); diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/auth/HttpAuthScheme.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/auth/HttpAuthScheme.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/auth/HttpAuthScheme.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/auth/HttpAuthSchemeProvider.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/auth/HttpAuthSchemeProvider.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/auth/HttpAuthSchemeProvider.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/auth/HttpSigner.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/auth/HttpSigner.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/auth/HttpSigner.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/auth/IdentityProviderConfig.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/auth/IdentityProviderConfig.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/auth/IdentityProviderConfig.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/auth/auth.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/auth/auth.js new file mode 100644 index 000000000..bd3b2df8e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/auth/auth.js @@ -0,0 +1,5 @@ +export var HttpAuthLocation; +(function (HttpAuthLocation) { + HttpAuthLocation["HEADER"] = "header"; + HttpAuthLocation["QUERY"] = "query"; +})(HttpAuthLocation || (HttpAuthLocation = {})); diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/auth/index.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/auth/index.js new file mode 100644 index 000000000..7436030cf --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/auth/index.js @@ -0,0 +1,6 @@ +export * from "./auth"; +export * from "./HttpApiKeyAuth"; +export * from "./HttpAuthScheme"; +export * from "./HttpAuthSchemeProvider"; +export * from "./HttpSigner"; +export * from "./IdentityProviderConfig"; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/blob/blob-payload-input-types.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/blob/blob-payload-input-types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/blob/blob-payload-input-types.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/checksum.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/checksum.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/checksum.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/client.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/client.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/client.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/command.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/command.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/command.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/connection/config.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/connection/config.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/connection/config.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/connection/index.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/connection/index.js new file mode 100644 index 000000000..c6c3ea80f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/connection/index.js @@ -0,0 +1,3 @@ +export * from "./config"; +export * from "./manager"; +export * from "./pool"; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/connection/manager.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/connection/manager.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/connection/manager.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/connection/pool.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/connection/pool.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/connection/pool.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/crypto.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/crypto.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/crypto.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/downlevel-ts3.4/transform/type-transform.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/downlevel-ts3.4/transform/type-transform.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/downlevel-ts3.4/transform/type-transform.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/encode.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/encode.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/encode.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/endpoint.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/endpoint.js new file mode 100644 index 000000000..4ae601ffd --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/endpoint.js @@ -0,0 +1,5 @@ +export var EndpointURLScheme; +(function (EndpointURLScheme) { + EndpointURLScheme["HTTP"] = "http"; + EndpointURLScheme["HTTPS"] = "https"; +})(EndpointURLScheme || (EndpointURLScheme = {})); diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/endpoints/EndpointRuleObject.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/endpoints/EndpointRuleObject.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/endpoints/EndpointRuleObject.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/endpoints/ErrorRuleObject.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/endpoints/ErrorRuleObject.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/endpoints/ErrorRuleObject.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/endpoints/RuleSetObject.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/endpoints/RuleSetObject.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/endpoints/RuleSetObject.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/endpoints/TreeRuleObject.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/endpoints/TreeRuleObject.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/endpoints/TreeRuleObject.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/endpoints/index.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/endpoints/index.js new file mode 100644 index 000000000..64d85cf86 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/endpoints/index.js @@ -0,0 +1,5 @@ +export * from "./EndpointRuleObject"; +export * from "./ErrorRuleObject"; +export * from "./RuleSetObject"; +export * from "./shared"; +export * from "./TreeRuleObject"; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/endpoints/shared.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/endpoints/shared.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/endpoints/shared.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/eventStream.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/eventStream.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/eventStream.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/extensions/checksum.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/extensions/checksum.js new file mode 100644 index 000000000..5a7939e7a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/extensions/checksum.js @@ -0,0 +1,38 @@ +export var AlgorithmId; +(function (AlgorithmId) { + AlgorithmId["MD5"] = "md5"; + AlgorithmId["CRC32"] = "crc32"; + AlgorithmId["CRC32C"] = "crc32c"; + AlgorithmId["SHA1"] = "sha1"; + AlgorithmId["SHA256"] = "sha256"; +})(AlgorithmId || (AlgorithmId = {})); +export const getChecksumConfiguration = (runtimeConfig) => { + const checksumAlgorithms = []; + if (runtimeConfig.sha256 !== undefined) { + checksumAlgorithms.push({ + algorithmId: () => AlgorithmId.SHA256, + checksumConstructor: () => runtimeConfig.sha256, + }); + } + if (runtimeConfig.md5 != undefined) { + checksumAlgorithms.push({ + algorithmId: () => AlgorithmId.MD5, + checksumConstructor: () => runtimeConfig.md5, + }); + } + return { + addChecksumAlgorithm(algo) { + checksumAlgorithms.push(algo); + }, + checksumAlgorithms() { + return checksumAlgorithms; + }, + }; +}; +export const resolveChecksumRuntimeConfig = (clientConfig) => { + const runtimeConfig = {}; + clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => { + runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor(); + }); + return runtimeConfig; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/extensions/defaultClientConfiguration.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/extensions/defaultClientConfiguration.js new file mode 100644 index 000000000..4e3eb9114 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/extensions/defaultClientConfiguration.js @@ -0,0 +1,7 @@ +import { getChecksumConfiguration, resolveChecksumRuntimeConfig } from "./checksum"; +export const getDefaultClientConfiguration = (runtimeConfig) => { + return getChecksumConfiguration(runtimeConfig); +}; +export const resolveDefaultRuntimeConfig = (config) => { + return resolveChecksumRuntimeConfig(config); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/extensions/defaultExtensionConfiguration.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/extensions/defaultExtensionConfiguration.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/extensions/defaultExtensionConfiguration.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/extensions/index.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/extensions/index.js new file mode 100644 index 000000000..0fa92d96d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/extensions/index.js @@ -0,0 +1,3 @@ +export * from "./defaultClientConfiguration"; +export * from "./defaultExtensionConfiguration"; +export { AlgorithmId } from "./checksum"; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/extensions/retry.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/extensions/retry.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/extensions/retry.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/externals-check/browser-externals-check.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/externals-check/browser-externals-check.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/externals-check/browser-externals-check.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/feature-ids.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/feature-ids.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/feature-ids.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/http.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/http.js new file mode 100644 index 000000000..27b22f011 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/http.js @@ -0,0 +1,5 @@ +export var FieldPosition; +(function (FieldPosition) { + FieldPosition[FieldPosition["HEADER"] = 0] = "HEADER"; + FieldPosition[FieldPosition["TRAILER"] = 1] = "TRAILER"; +})(FieldPosition || (FieldPosition = {})); diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/http/httpHandlerInitialization.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/http/httpHandlerInitialization.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/http/httpHandlerInitialization.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/identity/apiKeyIdentity.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/identity/apiKeyIdentity.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/identity/apiKeyIdentity.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/identity/awsCredentialIdentity.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/identity/awsCredentialIdentity.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/identity/awsCredentialIdentity.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/identity/identity.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/identity/identity.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/identity/identity.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/identity/index.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/identity/index.js new file mode 100644 index 000000000..336032034 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/identity/index.js @@ -0,0 +1,4 @@ +export * from "./apiKeyIdentity"; +export * from "./awsCredentialIdentity"; +export * from "./identity"; +export * from "./tokenIdentity"; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/identity/tokenIdentity.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/identity/tokenIdentity.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/identity/tokenIdentity.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/index.js new file mode 100644 index 000000000..2f1f25c67 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/index.js @@ -0,0 +1,43 @@ +export * from "./abort"; +export * from "./auth"; +export * from "./blob/blob-payload-input-types"; +export * from "./checksum"; +export * from "./client"; +export * from "./command"; +export * from "./connection"; +export * from "./crypto"; +export * from "./encode"; +export * from "./endpoint"; +export * from "./endpoints"; +export * from "./eventStream"; +export * from "./extensions"; +export * from "./feature-ids"; +export * from "./http"; +export * from "./http/httpHandlerInitialization"; +export * from "./identity"; +export * from "./logger"; +export * from "./middleware"; +export * from "./pagination"; +export * from "./profile"; +export * from "./response"; +export * from "./retry"; +export * from "./schema/schema"; +export * from "./schema/traits"; +export * from "./schema/schema-deprecated"; +export * from "./schema/sentinels"; +export * from "./schema/static-schemas"; +export * from "./serde"; +export * from "./shapes"; +export * from "./signature"; +export * from "./stream"; +export * from "./streaming-payload/streaming-blob-common-types"; +export * from "./streaming-payload/streaming-blob-payload-input-types"; +export * from "./streaming-payload/streaming-blob-payload-output-types"; +export * from "./transfer"; +export * from "./transform/client-payload-blob-type-narrow"; +export * from "./transform/mutable"; +export * from "./transform/no-undefined"; +export * from "./transform/type-transform"; +export * from "./uri"; +export * from "./util"; +export * from "./waiter"; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/logger.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/logger.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/logger.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/middleware.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/middleware.js new file mode 100644 index 000000000..7d0d0500d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/middleware.js @@ -0,0 +1 @@ +export const SMITHY_CONTEXT_KEY = "__smithy_context"; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/pagination.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/pagination.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/pagination.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/profile.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/profile.js new file mode 100644 index 000000000..9d56c8d6d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/profile.js @@ -0,0 +1,6 @@ +export var IniSectionType; +(function (IniSectionType) { + IniSectionType["PROFILE"] = "profile"; + IniSectionType["SSO_SESSION"] = "sso-session"; + IniSectionType["SERVICES"] = "services"; +})(IniSectionType || (IniSectionType = {})); diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/response.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/response.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/response.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/retry.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/retry.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/retry.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/schema/schema-deprecated.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/schema/schema-deprecated.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/schema/schema-deprecated.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/schema/schema.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/schema/schema.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/schema/schema.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/schema/sentinels.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/schema/sentinels.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/schema/sentinels.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/schema/static-schemas.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/schema/static-schemas.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/schema/static-schemas.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/schema/traits.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/schema/traits.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/schema/traits.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/serde.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/serde.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/serde.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/shapes.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/shapes.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/shapes.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/signature.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/signature.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/signature.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/stream.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/stream.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/stream.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-common-types.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-common-types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-common-types.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-input-types.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-input-types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-input-types.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-output-types.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-output-types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-output-types.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/transfer.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/transfer.js new file mode 100644 index 000000000..f77615137 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/transfer.js @@ -0,0 +1,6 @@ +export var RequestHandlerProtocol; +(function (RequestHandlerProtocol) { + RequestHandlerProtocol["HTTP_0_9"] = "http/0.9"; + RequestHandlerProtocol["HTTP_1_0"] = "http/1.0"; + RequestHandlerProtocol["TDS_8_0"] = "tds/8.0"; +})(RequestHandlerProtocol || (RequestHandlerProtocol = {})); diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/transform/client-method-transforms.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/transform/client-method-transforms.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/transform/client-method-transforms.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/transform/client-payload-blob-type-narrow.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/transform/client-payload-blob-type-narrow.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/transform/client-payload-blob-type-narrow.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/transform/exact.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/transform/exact.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/transform/exact.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/transform/mutable.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/transform/mutable.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/transform/mutable.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/transform/no-undefined.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/transform/no-undefined.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/transform/no-undefined.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/transform/type-transform.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/transform/type-transform.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/transform/type-transform.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/uri.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/uri.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/uri.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/util.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/util.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/util.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-es/waiter.js b/food-ordering-app/server/node_modules/@smithy/types/dist-es/waiter.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-es/waiter.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/abort-handler.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/abort-handler.d.ts new file mode 100644 index 000000000..09a0544fb --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/abort-handler.d.ts @@ -0,0 +1,7 @@ +import type { AbortSignal as DeprecatedAbortSignal } from "./abort"; +/** + * @public + */ +export interface AbortHandler { + (this: AbortSignal | DeprecatedAbortSignal, ev: any): any; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/abort.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/abort.d.ts new file mode 100644 index 000000000..80fc87f0a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/abort.d.ts @@ -0,0 +1,50 @@ +import type { AbortHandler } from "./abort-handler"; +/** + * @public + */ +export { AbortHandler }; +/** + * @public + * @deprecated use platform (global) type for AbortSignal. + * + * Holders of an AbortSignal object may query if the associated operation has + * been aborted and register an onabort handler. + * + * @see https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal + */ +export interface AbortSignal { + /** + * Whether the action represented by this signal has been cancelled. + */ + readonly aborted: boolean; + /** + * A function to be invoked when the action represented by this signal has + * been cancelled. + */ + onabort: AbortHandler | Function | null; +} +/** + * @public + * @deprecated use platform (global) type for AbortController. + * + * The AWS SDK uses a Controller/Signal model to allow for cooperative + * cancellation of asynchronous operations. When initiating such an operation, + * the caller can create an AbortController and then provide linked signal to + * subtasks. This allows a single source to communicate to multiple consumers + * that an action has been aborted without dictating how that cancellation + * should be handled. + * + * @see https://developer.mozilla.org/en-US/docs/Web/API/AbortController + */ +export interface AbortController { + /** + * An object that reports whether the action associated with this + * `AbortController` has been cancelled. + */ + readonly signal: AbortSignal; + /** + * Declares the operation associated with this AbortController to have been + * cancelled. + */ + abort(): void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/auth/HttpApiKeyAuth.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/auth/HttpApiKeyAuth.d.ts new file mode 100644 index 000000000..5d74340f4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/auth/HttpApiKeyAuth.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + */ +export declare enum HttpApiKeyAuthLocation { + HEADER = "header", + QUERY = "query" +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/auth/HttpAuthScheme.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/auth/HttpAuthScheme.d.ts new file mode 100644 index 000000000..0a23c5c1b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/auth/HttpAuthScheme.d.ts @@ -0,0 +1,49 @@ +import type { Identity, IdentityProvider } from "../identity/identity"; +import type { HandlerExecutionContext } from "../middleware"; +import type { HttpSigner } from "./HttpSigner"; +import type { IdentityProviderConfig } from "./IdentityProviderConfig"; +/** + * ID for {@link HttpAuthScheme} + * @internal + */ +export type HttpAuthSchemeId = string; +/** + * Interface that defines an HttpAuthScheme + * @internal + */ +export interface HttpAuthScheme { + /** + * ID for an HttpAuthScheme, typically the absolute shape ID of a Smithy auth trait. + */ + schemeId: HttpAuthSchemeId; + /** + * Gets the IdentityProvider corresponding to an HttpAuthScheme. + */ + identityProvider(config: IdentityProviderConfig): IdentityProvider | undefined; + /** + * HttpSigner corresponding to an HttpAuthScheme. + */ + signer: HttpSigner; +} +/** + * Interface that defines the identity and signing properties when selecting + * an HttpAuthScheme. + * @internal + */ +export interface HttpAuthOption { + schemeId: HttpAuthSchemeId; + identityProperties?: Record; + signingProperties?: Record; + propertiesExtractor?: (config: TConfig, context: TContext) => { + identityProperties?: Record; + signingProperties?: Record; + }; +} +/** + * @internal + */ +export interface SelectedHttpAuthScheme { + httpAuthOption: HttpAuthOption; + identity: Identity; + signer: HttpSigner; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/auth/HttpAuthSchemeProvider.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/auth/HttpAuthSchemeProvider.d.ts new file mode 100644 index 000000000..1dde5d6bb --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/auth/HttpAuthSchemeProvider.d.ts @@ -0,0 +1,20 @@ +import type { HandlerExecutionContext } from "../middleware"; +import type { HttpAuthOption } from "./HttpAuthScheme"; +/** + * @internal + */ +export interface HttpAuthSchemeParameters { + operation?: string; +} +/** + * @internal + */ +export interface HttpAuthSchemeProvider { + (authParameters: TParameters): HttpAuthOption[]; +} +/** + * @internal + */ +export interface HttpAuthSchemeParametersProvider { + (config: TConfig, context: TContext, input: TInput): Promise; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/auth/HttpSigner.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/auth/HttpSigner.d.ts new file mode 100644 index 000000000..ec1583bba --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/auth/HttpSigner.d.ts @@ -0,0 +1,41 @@ +import type { HttpRequest, HttpResponse } from "../http"; +import type { Identity } from "../identity/identity"; +/** + * @internal + */ +export interface ErrorHandler { + (signingProperties: Record): (error: E) => never; +} +/** + * @internal + */ +export interface SuccessHandler { + (httpResponse: HttpResponse | unknown, signingProperties: Record): void; +} +/** + * Interface to sign identity and signing properties. + * @internal + */ +export interface HttpSigner { + /** + * Signs an HttpRequest with an identity and signing properties. + * @param httpRequest request to sign + * @param identity identity to sing the request with + * @param signingProperties property bag for signing + * @returns signed request in a promise + */ + sign(httpRequest: HttpRequest, identity: Identity, signingProperties: Record): Promise; + /** + * Handler that executes after the {@link HttpSigner.sign} invocation and corresponding + * middleware throws an error. + * The error handler is expected to throw the error it receives, so the return type of the error handler is `never`. + * @internal + */ + errorHandler?: ErrorHandler; + /** + * Handler that executes after the {@link HttpSigner.sign} invocation and corresponding + * middleware succeeds. + * @internal + */ + successHandler?: SuccessHandler; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/auth/IdentityProviderConfig.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/auth/IdentityProviderConfig.d.ts new file mode 100644 index 000000000..73a193dd9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/auth/IdentityProviderConfig.d.ts @@ -0,0 +1,14 @@ +import type { Identity, IdentityProvider } from "../identity/identity"; +import type { HttpAuthSchemeId } from "./HttpAuthScheme"; +/** + * Interface to get an IdentityProvider for a specified HttpAuthScheme + * @internal + */ +export interface IdentityProviderConfig { + /** + * Get the IdentityProvider for a specified HttpAuthScheme. + * @param schemeId schemeId of the HttpAuthScheme + * @returns IdentityProvider or undefined if HttpAuthScheme is not found + */ + getIdentityProvider(schemeId: HttpAuthSchemeId): IdentityProvider | undefined; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/auth/auth.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/auth/auth.d.ts new file mode 100644 index 000000000..2aaabbcbb --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/auth/auth.d.ts @@ -0,0 +1,57 @@ +/** + * @internal + * + * Authentication schemes represent a way that the service will authenticate the customer’s identity. + */ +export interface AuthScheme { + /** + * @example "sigv4a" or "sigv4" + */ + name: "sigv4" | "sigv4a" | string; + /** + * @example "s3" + */ + signingName: string; + /** + * @example "us-east-1" + */ + signingRegion: string; + /** + * @example ["*"] + * @example ["us-west-2", "us-east-1"] + */ + signingRegionSet?: string[]; + /** + * @deprecated this field was renamed to signingRegion. + */ + signingScope?: never; + properties: Record; +} +/** + * @internal + * @deprecated + */ +export interface HttpAuthDefinition { + /** + * Defines the location of where the Auth is serialized. + */ + in: HttpAuthLocation; + /** + * Defines the name of the HTTP header or query string parameter + * that contains the Auth. + */ + name: string; + /** + * Defines the security scheme to use on the `Authorization` header value. + * This can only be set if the "in" property is set to {@link HttpAuthLocation.HEADER}. + */ + scheme?: string; +} +/** + * @internal + * @deprecated + */ +export declare enum HttpAuthLocation { + HEADER = "header", + QUERY = "query" +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/auth/index.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/auth/index.d.ts new file mode 100644 index 000000000..7436030cf --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/auth/index.d.ts @@ -0,0 +1,6 @@ +export * from "./auth"; +export * from "./HttpApiKeyAuth"; +export * from "./HttpAuthScheme"; +export * from "./HttpAuthSchemeProvider"; +export * from "./HttpSigner"; +export * from "./IdentityProviderConfig"; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/blob/blob-payload-input-types.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/blob/blob-payload-input-types.d.ts new file mode 100644 index 000000000..32eecacb2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/blob/blob-payload-input-types.d.ts @@ -0,0 +1,40 @@ +import type { Readable } from "stream"; +import type { BlobOptionalType, ReadableStreamOptionalType } from "../externals-check/browser-externals-check"; +/** + * @public + * + * A union of types that can be used as inputs for the service model + * "blob" type when it represents the request's entire payload or body. + * + * For example, in Lambda::invoke, the payload is modeled as a blob type + * and this union applies to it. + * In contrast, in Lambda::createFunction the Zip file option is a blob type, + * but is not the (entire) payload and this union does not apply. + * + * Note: not all types are signable by the standard SignatureV4 signer when + * used as the request body. For example, in Node.js a Readable stream + * is not signable by the default signer. + * They are included in the union because it may work in some cases, + * but the expected types are primarily string and Uint8Array. + * + * Additional details may be found in the internal + * function "getPayloadHash" in the SignatureV4 module. + */ +export type BlobPayloadInputTypes = string | ArrayBuffer | ArrayBufferView | Uint8Array | NodeJsRuntimeBlobTypes | BrowserRuntimeBlobTypes; +/** + * @public + * + * Additional blob types for the Node.js environment. + */ +export type NodeJsRuntimeBlobTypes = Readable | Buffer; +/** + * @public + * + * Additional blob types for the browser environment. + */ +export type BrowserRuntimeBlobTypes = BlobOptionalType | ReadableStreamOptionalType; +/** + * @internal + * @deprecated renamed to BlobPayloadInputTypes. + */ +export type BlobTypes = BlobPayloadInputTypes; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/checksum.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/checksum.d.ts new file mode 100644 index 000000000..f572fb987 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/checksum.d.ts @@ -0,0 +1,63 @@ +import type { SourceData } from "./crypto"; +/** + * @public + * + * An object that provides a checksum of data provided in chunks to `update`. + * The checksum may be performed incrementally as chunks are received or all + * at once when the checksum is finalized, depending on the underlying + * implementation. + * + * It's recommended to compute checksum incrementally to avoid reading the + * entire payload in memory. + * + * A class that implements this interface may accept an optional secret key in its + * constructor while computing checksum value, when using HMAC. If provided, + * this secret key would be used when computing checksum. + */ +export interface Checksum { + /** + * Constant length of the digest created by the algorithm in bytes. + */ + digestLength?: number; + /** + * Creates a new checksum object that contains a deep copy of the internal + * state of the current `Checksum` object. + */ + copy?(): Checksum; + /** + * Returns the digest of all of the data passed. + */ + digest(): Promise; + /** + * Allows marking a checksum for checksums that support the ability + * to mark and reset. + * + * @param readLimit - The maximum limit of bytes that can be read + * before the mark position becomes invalid. + */ + mark?(readLimit: number): void; + /** + * Resets the checksum to its initial value. + */ + reset(): void; + /** + * Adds a chunk of data for which checksum needs to be computed. + * This can be called many times with new data as it is streamed. + * + * Implementations may override this method which passes second param + * which makes Checksum object stateless. + * + * @param chunk - The buffer to update checksum with. + */ + update(chunk: Uint8Array): void; +} +/** + * @public + * + * A constructor for a Checksum that may be used to calculate an HMAC. Implementing + * classes should not directly hold the provided key in memory beyond the + * lexical scope of the constructor. + */ +export interface ChecksumConstructor { + new (secret?: SourceData): Checksum; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/client.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/client.d.ts new file mode 100644 index 000000000..9d129354f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/client.d.ts @@ -0,0 +1,57 @@ +import type { Command } from "./command"; +import type { MiddlewareStack } from "./middleware"; +import type { MetadataBearer } from "./response"; +import type { OptionalParameter } from "./util"; +/** + * @public + * + * A type which checks if the client configuration is optional. + * If all entries of the client configuration are optional, it allows client creation without passing any config. + */ +export type CheckOptionalClientConfig = OptionalParameter; +/** + * @public + * + * function definition for different overrides of client's 'send' function. + */ +export interface InvokeFunction { + (command: Command, options?: any): Promise; + (command: Command, cb: (err: any, data?: OutputType) => void): void; + (command: Command, options: any, cb: (err: any, data?: OutputType) => void): void; + (command: Command, options?: any, cb?: (err: any, data?: OutputType) => void): Promise | void; +} +/** + * @public + * + * Signature that appears on aggregated clients' methods. + */ +export interface InvokeMethod { + (input: InputType, options?: any): Promise; + (input: InputType, cb: (err: any, data?: OutputType) => void): void; + (input: InputType, options: any, cb: (err: any, data?: OutputType) => void): void; + (input: InputType, options?: any, cb?: (err: any, data?: OutputType) => void): Promise | void; +} +/** + * @public + * + * Signature that appears on aggregated clients' methods when argument is optional. + */ +export interface InvokeMethodOptionalArgs { + (): Promise; + (input: InputType, options?: any): Promise; + (input: InputType, cb: (err: any, data?: OutputType) => void): void; + (input: InputType, options: any, cb: (err: any, data?: OutputType) => void): void; + (input: InputType, options?: any, cb?: (err: any, data?: OutputType) => void): Promise | void; +} +/** + * A general interface for service clients, idempotent to browser or node clients + * This type corresponds to SmithyClient(https://github.com/aws/aws-sdk-js-v3/blob/main/packages/smithy-client/src/client.ts). + * It's provided for using without importing the SmithyClient class. + * @internal + */ +export interface Client { + readonly config: ResolvedClientConfiguration; + middlewareStack: MiddlewareStack; + send: InvokeFunction; + destroy: () => void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/command.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/command.d.ts new file mode 100644 index 000000000..db82544b9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/command.d.ts @@ -0,0 +1,28 @@ +import type { Handler, MiddlewareStack } from "./middleware"; +import type { MetadataBearer } from "./response"; +/** + * @public + */ +export interface Command extends CommandIO { + readonly input: InputType; + readonly middlewareStack: MiddlewareStack; + /** + * This should be OperationSchema from @smithy/types, but would + * create problems with the client transform type adaptors. + */ + readonly schema?: any; + resolveMiddleware(stack: MiddlewareStack, configuration: ResolvedConfiguration, options: any): Handler; +} +/** + * @internal + * + * This is a subset of the Command type used only to detect the i/o types. + */ +export interface CommandIO { + readonly input: InputType; + resolveMiddleware(stack: any, configuration: any, options: any): Handler; +} +/** + * @internal + */ +export type GetOutputType = Command extends CommandIO ? O : never; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/connection/config.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/connection/config.d.ts new file mode 100644 index 000000000..f9d46322f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/connection/config.d.ts @@ -0,0 +1,10 @@ +/** + * @public + */ +export interface ConnectConfiguration { + /** + * The maximum time in milliseconds that the connection phase of a request + * may take before the connection attempt is abandoned. + */ + requestTimeout?: number; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/connection/index.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/connection/index.d.ts new file mode 100644 index 000000000..c6c3ea80f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/connection/index.d.ts @@ -0,0 +1,3 @@ +export * from "./config"; +export * from "./manager"; +export * from "./pool"; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/connection/manager.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/connection/manager.d.ts new file mode 100644 index 000000000..fd83d44d2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/connection/manager.d.ts @@ -0,0 +1,34 @@ +import type { RequestContext } from "../transfer"; +import type { ConnectConfiguration } from "./config"; +/** + * @public + */ +export interface ConnectionManagerConfiguration { + /** + * Maximum number of allowed concurrent requests per connection. + */ + maxConcurrency?: number; + /** + * Disables concurrent requests per connection. + */ + disableConcurrency?: boolean; +} +/** + * @public + */ +export interface ConnectionManager { + /** + * Retrieves a connection from the connection pool if available, + * otherwise establish a new connection + */ + lease(requestContext: RequestContext, connectionConfiguration: ConnectConfiguration): T; + /** + * Releases the connection back to the pool making it potentially + * re-usable by other requests. + */ + release(requestContext: RequestContext, connection: T): void; + /** + * Destroys the connection manager. All connections will be closed. + */ + destroy(): void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/connection/pool.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/connection/pool.d.ts new file mode 100644 index 000000000..d43530a0c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/connection/pool.d.ts @@ -0,0 +1,32 @@ +/** + * @public + */ +export interface ConnectionPool { + /** + * Retrieve the first connection in the pool + */ + poll(): T | void; + /** + * Release the connection back to the pool making it potentially + * re-usable by other requests. + */ + offerLast(connection: T): void; + /** + * Removes the connection from the pool, and destroys it. + */ + destroy(connection: T): void; + /** + * Implements the iterable protocol and allows arrays to be consumed + * by most syntaxes expecting iterables, such as the spread syntax + * and for...of loops + */ + [Symbol.iterator](): Iterator; +} +/** + * Unused. + * @internal + * @deprecated + */ +export interface CacheKey { + destination: string; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/crypto.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/crypto.d.ts new file mode 100644 index 000000000..874320e33 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/crypto.d.ts @@ -0,0 +1,60 @@ +/** + * @public + */ +export type SourceData = string | ArrayBuffer | ArrayBufferView; +/** + * @public + * + * An object that provides a hash of data provided in chunks to `update`. The + * hash may be performed incrementally as chunks are received or all at once + * when the hash is finalized, depending on the underlying implementation. + * + * @deprecated use {@link Checksum} + */ +export interface Hash { + /** + * Adds a chunk of data to the hash. If a buffer is provided, the `encoding` + * argument will be ignored. If a string is provided without a specified + * encoding, implementations must assume UTF-8 encoding. + * + * Not all encodings are supported on all platforms, though all must support + * UTF-8. + */ + update(toHash: SourceData, encoding?: "utf8" | "ascii" | "latin1"): void; + /** + * Finalizes the hash and provides a promise that will be fulfilled with the + * raw bytes of the calculated hash. + */ + digest(): Promise; +} +/** + * @public + * + * A constructor for a hash that may be used to calculate an HMAC. Implementing + * classes should not directly hold the provided key in memory beyond the + * lexical scope of the constructor. + * + * @deprecated use {@link ChecksumConstructor} + */ +export interface HashConstructor { + new (secret?: SourceData): Hash; +} +/** + * @public + * + * A function that calculates the hash of a data stream. Determining the hash + * will consume the stream, so only replayable streams should be provided to an + * implementation of this interface. + */ +export interface StreamHasher { + (hashCtor: HashConstructor, stream: StreamType): Promise; +} +/** + * @public + * + * A function that returns a promise fulfilled with bytes from a + * cryptographically secure pseudorandom number generator. + */ +export interface randomValues { + (byteLength: number): Promise; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/downlevel-ts3.4/transform/type-transform.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/downlevel-ts3.4/transform/type-transform.d.ts new file mode 100644 index 000000000..312ae6e36 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/downlevel-ts3.4/transform/type-transform.d.ts @@ -0,0 +1,25 @@ +/** + * @public + * + * Transforms any members of the object T having type FromType + * to ToType. This applies only to exact type matches. + * + * This is for the case where FromType is a union and only those fields + * matching the same union should be transformed. + */ +export type Transform = RecursiveTransformExact; +/** + * @internal + * + * Returns ToType if T matches exactly with FromType. + */ +type TransformExact = [T] extends [FromType] ? ([FromType] extends [T] ? ToType : T) : T; +/** + * @internal + * + * Applies TransformExact to members of an object recursively. + */ +type RecursiveTransformExact = T extends Function ? T : T extends object ? { + [key in keyof T]: [T[key]] extends [FromType] ? [FromType] extends [T[key]] ? ToType : RecursiveTransformExact : RecursiveTransformExact; +} : TransformExact; +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/encode.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/encode.d.ts new file mode 100644 index 000000000..2f1715a89 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/encode.d.ts @@ -0,0 +1,31 @@ +import type { Message } from "./eventStream"; +/** + * @public + */ +export interface MessageEncoder { + encode(message: Message): Uint8Array; +} +/** + * @public + */ +export interface MessageDecoder { + decode(message: ArrayBufferView): Message; + feed(message: ArrayBufferView): void; + endOfStream(): void; + getMessage(): AvailableMessage; + getAvailableMessages(): AvailableMessages; +} +/** + * @public + */ +export interface AvailableMessage { + getMessage(): Message | undefined; + isEndOfStream(): boolean; +} +/** + * @public + */ +export interface AvailableMessages { + getMessages(): Message[]; + isEndOfStream(): boolean; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/endpoint.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/endpoint.d.ts new file mode 100644 index 000000000..15bbd9cc0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/endpoint.d.ts @@ -0,0 +1,77 @@ +import type { AuthScheme } from "./auth/auth"; +/** + * @public + */ +export interface EndpointPartition { + name: string; + dnsSuffix: string; + dualStackDnsSuffix: string; + supportsFIPS: boolean; + supportsDualStack: boolean; +} +/** + * @public + */ +export interface EndpointARN { + partition: string; + service: string; + region: string; + accountId: string; + resourceId: Array; +} +/** + * @public + */ +export declare enum EndpointURLScheme { + HTTP = "http", + HTTPS = "https" +} +/** + * @public + */ +export interface EndpointURL { + /** + * The URL scheme such as http or https. + */ + scheme: EndpointURLScheme; + /** + * The authority is the host and optional port component of the URL. + */ + authority: string; + /** + * The parsed path segment of the URL. + * This value is as-is as provided by the user. + */ + path: string; + /** + * The parsed path segment of the URL. + * This value is guranteed to start and end with a "/". + */ + normalizedPath: string; + /** + * A boolean indicating whether the authority is an IP address. + */ + isIp: boolean; +} +/** + * @public + */ +export type EndpointObjectProperty = string | boolean | { + [key: string]: EndpointObjectProperty; +} | EndpointObjectProperty[]; +/** + * @public + */ +export interface EndpointV2 { + url: URL; + properties?: { + authSchemes?: AuthScheme[]; + } & Record; + headers?: Record; +} +/** + * @public + */ +export type EndpointParameters = { + [name: string]: undefined | boolean | string | string[]; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/endpoints/EndpointRuleObject.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/endpoints/EndpointRuleObject.d.ts new file mode 100644 index 000000000..503b7810d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/endpoints/EndpointRuleObject.d.ts @@ -0,0 +1,27 @@ +import type { EndpointObjectProperty } from "../endpoint"; +import type { ConditionObject, Expression } from "./shared"; +/** + * @public + */ +export type EndpointObjectProperties = Record; +/** + * @public + */ +export type EndpointObjectHeaders = Record; +/** + * @public + */ +export type EndpointObject = { + url: Expression; + properties?: EndpointObjectProperties; + headers?: EndpointObjectHeaders; +}; +/** + * @public + */ +export type EndpointRuleObject = { + type: "endpoint"; + conditions?: ConditionObject[]; + endpoint: EndpointObject; + documentation?: string; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/endpoints/ErrorRuleObject.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/endpoints/ErrorRuleObject.d.ts new file mode 100644 index 000000000..602cf9cc7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/endpoints/ErrorRuleObject.d.ts @@ -0,0 +1,10 @@ +import type { ConditionObject, Expression } from "./shared"; +/** + * @public + */ +export type ErrorRuleObject = { + type: "error"; + conditions?: ConditionObject[]; + error: Expression; + documentation?: string; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/endpoints/RuleSetObject.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/endpoints/RuleSetObject.d.ts new file mode 100644 index 000000000..795894083 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/endpoints/RuleSetObject.d.ts @@ -0,0 +1,28 @@ +import type { RuleSetRules } from "./TreeRuleObject"; +/** + * @public + */ +export type DeprecatedObject = { + message?: string; + since?: string; +}; +/** + * @public + */ +export type ParameterObject = { + type: "String" | "string" | "Boolean" | "boolean"; + default?: string | boolean; + required?: boolean; + documentation?: string; + builtIn?: string; + deprecated?: DeprecatedObject; +}; +/** + * @public + */ +export type RuleSetObject = { + version: string; + serviceId?: string; + parameters: Record; + rules: RuleSetRules; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/endpoints/TreeRuleObject.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/endpoints/TreeRuleObject.d.ts new file mode 100644 index 000000000..9ec9194af --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/endpoints/TreeRuleObject.d.ts @@ -0,0 +1,16 @@ +import type { EndpointRuleObject } from "./EndpointRuleObject"; +import type { ErrorRuleObject } from "./ErrorRuleObject"; +import type { ConditionObject } from "./shared"; +/** + * @public + */ +export type RuleSetRules = Array; +/** + * @public + */ +export type TreeRuleObject = { + type: "tree"; + conditions?: ConditionObject[]; + rules: RuleSetRules; + documentation?: string; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/endpoints/index.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/endpoints/index.d.ts new file mode 100644 index 000000000..64d85cf86 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/endpoints/index.d.ts @@ -0,0 +1,5 @@ +export * from "./EndpointRuleObject"; +export * from "./ErrorRuleObject"; +export * from "./RuleSetObject"; +export * from "./shared"; +export * from "./TreeRuleObject"; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/endpoints/shared.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/endpoints/shared.d.ts new file mode 100644 index 000000000..d922e5abd --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/endpoints/shared.d.ts @@ -0,0 +1,55 @@ +import type { Logger } from "../logger"; +/** + * @public + */ +export type ReferenceObject = { + ref: string; +}; +/** + * @public + */ +export type FunctionObject = { + fn: string; + argv: FunctionArgv; +}; +/** + * @public + */ +export type FunctionArgv = Array; +/** + * @public + */ +export type FunctionReturn = string | boolean | number | { + [key: string]: FunctionReturn; +}; +/** + * @public + */ +export type ConditionObject = FunctionObject & { + assign?: string; +}; +/** + * @public + */ +export type Expression = string | ReferenceObject | FunctionObject; +/** + * @public + */ +export type EndpointParams = Record; +/** + * @public + */ +export type EndpointResolverOptions = { + endpointParams: EndpointParams; + logger?: Logger; +}; +/** + * @public + */ +export type ReferenceRecord = Record; +/** + * @public + */ +export type EvaluateOptions = EndpointResolverOptions & { + referenceRecord: ReferenceRecord; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/eventStream.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/eventStream.d.ts new file mode 100644 index 000000000..9250d1458 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/eventStream.d.ts @@ -0,0 +1,137 @@ +import type { HttpRequest } from "./http"; +import type { FinalizeHandler, FinalizeHandlerArguments, FinalizeHandlerOutput, HandlerExecutionContext } from "./middleware"; +import type { MetadataBearer } from "./response"; +/** + * @public + * + * An event stream message. The headers and body properties will always be + * defined, with empty headers represented as an object with no keys and an + * empty body represented as a zero-length Uint8Array. + */ +export interface Message { + headers: MessageHeaders; + body: Uint8Array; +} +/** + * @public + */ +export type MessageHeaders = Record; +/** + * @public + */ +export type HeaderValue = { + type: K; + value: V; +}; +/** + * @public + */ +export type BooleanHeaderValue = HeaderValue<"boolean", boolean>; +/** + * @public + */ +export type ByteHeaderValue = HeaderValue<"byte", number>; +/** + * @public + */ +export type ShortHeaderValue = HeaderValue<"short", number>; +/** + * @public + */ +export type IntegerHeaderValue = HeaderValue<"integer", number>; +/** + * @public + */ +export type LongHeaderValue = HeaderValue<"long", Int64>; +/** + * @public + */ +export type BinaryHeaderValue = HeaderValue<"binary", Uint8Array>; +/** + * @public + */ +export type StringHeaderValue = HeaderValue<"string", string>; +/** + * @public + */ +export type TimestampHeaderValue = HeaderValue<"timestamp", Date>; +/** + * @public + */ +export type UuidHeaderValue = HeaderValue<"uuid", string>; +/** + * @public + */ +export type MessageHeaderValue = BooleanHeaderValue | ByteHeaderValue | ShortHeaderValue | IntegerHeaderValue | LongHeaderValue | BinaryHeaderValue | StringHeaderValue | TimestampHeaderValue | UuidHeaderValue; +/** + * @public + */ +export interface Int64 { + readonly bytes: Uint8Array; + valueOf: () => number; + toString: () => string; +} +/** + * @public + * + * Util functions for serializing or deserializing event stream + */ +export interface EventStreamSerdeContext { + eventStreamMarshaller: EventStreamMarshaller; +} +/** + * @public + * + * A function which deserializes binary event stream message into modeled shape. + */ +export interface EventStreamMarshallerDeserFn { + (body: StreamType, deserializer: (input: Record) => Promise): AsyncIterable; +} +/** + * @public + * + * A function that serializes modeled shape into binary stream message. + */ +export interface EventStreamMarshallerSerFn { + (input: AsyncIterable, serializer: (event: T) => Message): StreamType; +} +/** + * @public + * + * An interface which provides functions for serializing and deserializing binary event stream + * to/from corresponsing modeled shape. + */ +export interface EventStreamMarshaller { + deserialize: EventStreamMarshallerDeserFn; + serialize: EventStreamMarshallerSerFn; +} +/** + * @public + */ +export interface EventStreamRequestSigner { + sign(request: HttpRequest): Promise; +} +/** + * @public + */ +export interface EventStreamPayloadHandler { + handle: (next: FinalizeHandler, args: FinalizeHandlerArguments, context?: HandlerExecutionContext) => Promise>; +} +/** + * @public + */ +export interface EventStreamPayloadHandlerProvider { + (options: any): EventStreamPayloadHandler; +} +/** + * @public + */ +export interface EventStreamSerdeProvider { + (options: any): EventStreamMarshaller; +} +/** + * @public + */ +export interface EventStreamSignerProvider { + (options: any): EventStreamRequestSigner; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/extensions/checksum.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/extensions/checksum.d.ts new file mode 100644 index 000000000..7b45f32d7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/extensions/checksum.d.ts @@ -0,0 +1,58 @@ +import type { ChecksumConstructor } from "../checksum"; +import type { HashConstructor } from "../crypto"; +/** + * @internal + */ +export declare enum AlgorithmId { + MD5 = "md5", + CRC32 = "crc32", + CRC32C = "crc32c", + SHA1 = "sha1", + SHA256 = "sha256" +} +/** + * @internal + */ +export interface ChecksumAlgorithm { + algorithmId(): AlgorithmId | string; + checksumConstructor(): ChecksumConstructor | HashConstructor; +} +/** + * @deprecated unused. + * @internal + */ +type ChecksumConfigurationLegacy = { + [other in string | number]: any; +}; +/** + * @internal + */ +export interface ChecksumConfiguration extends ChecksumConfigurationLegacy { + addChecksumAlgorithm(algo: ChecksumAlgorithm): void; + checksumAlgorithms(): ChecksumAlgorithm[]; +} +/** + * @deprecated will be removed for implicit type. + * @internal + */ +type GetChecksumConfigurationType = (runtimeConfig: Partial<{ + sha256: ChecksumConstructor | HashConstructor; + md5: ChecksumConstructor | HashConstructor; +}>) => ChecksumConfiguration; +/** + * @internal + * @deprecated will be moved to smithy-client. + */ +export declare const getChecksumConfiguration: GetChecksumConfigurationType; +/** + * @internal + * @deprecated will be removed for implicit type. + */ +type ResolveChecksumRuntimeConfigType = (clientConfig: ChecksumConfiguration) => any; +/** + * @internal + * + * @deprecated will be moved to smithy-client. + */ +export declare const resolveChecksumRuntimeConfig: ResolveChecksumRuntimeConfigType; +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/extensions/defaultClientConfiguration.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/extensions/defaultClientConfiguration.d.ts new file mode 100644 index 000000000..4596d436c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/extensions/defaultClientConfiguration.d.ts @@ -0,0 +1,33 @@ +import type { ChecksumConfiguration } from "./checksum"; +/** + * @deprecated will be replaced by DefaultExtensionConfiguration. + * @internal + * + * Default client configuration consisting various configurations for modifying a service client + */ +export interface DefaultClientConfiguration extends ChecksumConfiguration { +} +/** + * @deprecated will be removed for implicit type. + */ +type GetDefaultConfigurationType = (runtimeConfig: any) => DefaultClientConfiguration; +/** + * @deprecated moving to @smithy/smithy-client. + * @internal + * + * Helper function to resolve default client configuration from runtime config + * + */ +export declare const getDefaultClientConfiguration: GetDefaultConfigurationType; +/** + * @deprecated will be removed for implicit type. + */ +type ResolveDefaultRuntimeConfigType = (clientConfig: DefaultClientConfiguration) => any; +/** + * @deprecated moving to @smithy/smithy-client. + * @internal + * + * Helper function to resolve runtime config from default client configuration + */ +export declare const resolveDefaultRuntimeConfig: ResolveDefaultRuntimeConfigType; +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/extensions/defaultExtensionConfiguration.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/extensions/defaultExtensionConfiguration.d.ts new file mode 100644 index 000000000..3b3ef6e83 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/extensions/defaultExtensionConfiguration.d.ts @@ -0,0 +1,9 @@ +import type { ChecksumConfiguration } from "./checksum"; +import type { RetryStrategyConfiguration } from "./retry"; +/** + * @internal + * + * Default extension configuration consisting various configurations for modifying a service client + */ +export interface DefaultExtensionConfiguration extends ChecksumConfiguration, RetryStrategyConfiguration { +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/extensions/index.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/extensions/index.d.ts new file mode 100644 index 000000000..cce65a1ce --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/extensions/index.d.ts @@ -0,0 +1,4 @@ +export * from "./defaultClientConfiguration"; +export * from "./defaultExtensionConfiguration"; +export { AlgorithmId, ChecksumAlgorithm, ChecksumConfiguration } from "./checksum"; +export { RetryStrategyConfiguration } from "./retry"; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/extensions/retry.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/extensions/retry.d.ts new file mode 100644 index 000000000..1eefdfa47 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/extensions/retry.d.ts @@ -0,0 +1,18 @@ +import type { RetryStrategyV2 } from "../retry"; +import type { Provider, RetryStrategy } from "../util"; +/** + * A configuration interface with methods called by runtime extension + * @internal + */ +export interface RetryStrategyConfiguration { + /** + * Set retry strategy used for all http requests + * @param retryStrategy + */ + setRetryStrategy(retryStrategy: Provider): void; + /** + * Get retry strategy used for all http requests + * @param retryStrategy + */ + retryStrategy(): Provider; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/externals-check/browser-externals-check.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/externals-check/browser-externals-check.d.ts new file mode 100644 index 000000000..0de7f8faa --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/externals-check/browser-externals-check.d.ts @@ -0,0 +1,35 @@ +import type { Exact } from "../transform/exact"; +/** + * @public + * + * A checked type that resolves to Blob if it is defined as more than a stub, otherwise + * resolves to 'never' so as not to widen the type of unions containing Blob + * excessively. + */ +export type BlobOptionalType = BlobDefined extends true ? Blob : Unavailable; +/** + * @public + * + * A checked type that resolves to ReadableStream if it is defined as more than a stub, otherwise + * resolves to 'never' so as not to widen the type of unions containing ReadableStream + * excessively. + */ +export type ReadableStreamOptionalType = ReadableStreamDefined extends true ? ReadableStream : Unavailable; +/** + * @public + * + * Indicates a type is unavailable if it resolves to this. + */ +export type Unavailable = never; +/** + * @internal + * + * Whether the global types define more than a stub for ReadableStream. + */ +export type ReadableStreamDefined = Exact extends true ? false : true; +/** + * @internal + * + * Whether the global types define more than a stub for Blob. + */ +export type BlobDefined = Exact extends true ? false : true; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/feature-ids.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/feature-ids.d.ts new file mode 100644 index 000000000..19e4bd2d5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/feature-ids.d.ts @@ -0,0 +1,16 @@ +/** + * @internal + */ +export type SmithyFeatures = Partial<{ + RESOURCE_MODEL: "A"; + WAITER: "B"; + PAGINATOR: "C"; + RETRY_MODE_LEGACY: "D"; + RETRY_MODE_STANDARD: "E"; + RETRY_MODE_ADAPTIVE: "F"; + GZIP_REQUEST_COMPRESSION: "L"; + PROTOCOL_RPC_V2_CBOR: "M"; + ENDPOINT_OVERRIDE: "N"; + SIGV4A_SIGNING: "S"; + CREDENTIALS_CODE: "e"; +}>; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/http.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/http.d.ts new file mode 100644 index 000000000..f74e63d71 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/http.d.ts @@ -0,0 +1,113 @@ +import type { AbortSignal as DeprecatedAbortSignal } from "./abort"; +import type { URI } from "./uri"; +/** + * @public + * + * @deprecated use {@link EndpointV2} from `@smithy/types`. + */ +export interface Endpoint { + protocol: string; + hostname: string; + port?: number; + path: string; + query?: QueryParameterBag; + headers?: HeaderBag; +} +/** + * @public + * + * Interface an HTTP request class. Contains + * addressing information in addition to standard message properties. + */ +export interface HttpRequest extends HttpMessage, URI { + method: string; +} +/** + * @public + * + * Represents an HTTP message as received in reply to a request. Contains a + * numeric status code in addition to standard message properties. + */ +export interface HttpResponse extends HttpMessage { + statusCode: number; + reason?: string; +} +/** + * @public + * + * Represents an HTTP message with headers and an optional static or streaming + * body. body: ArrayBuffer | ArrayBufferView | string | Uint8Array | Readable | ReadableStream; + */ +export interface HttpMessage { + headers: HeaderBag; + body?: any; +} +/** + * @public + * + * A mapping of query parameter names to strings or arrays of strings, with the + * second being used when a parameter contains a list of values. Value can be set + * to null when query is not in key-value pairs shape + */ +export type QueryParameterBag = Record | null>; +/** + * @public + */ +export type FieldOptions = { + name: string; + kind?: FieldPosition; + values?: string[]; +}; +/** + * @public + */ +export declare enum FieldPosition { + HEADER = 0, + TRAILER = 1 +} +/** + * @public + * + * A mapping of header names to string values. Multiple values for the same + * header should be represented as a single string with values separated by + * `, `. + * + * Keys should be considered case insensitive, even if this is not enforced by a + * particular implementation. For example, given the following HeaderBag, where + * keys differ only in case: + * + * ```json + * { + * 'x-request-date': '2000-01-01T00:00:00Z', + * 'X-Request-Date': '2001-01-01T00:00:00Z' + * } + * ``` + * + * The SDK may at any point during processing remove one of the object + * properties in favor of the other. The headers may or may not be combined, and + * the SDK will not deterministically select which header candidate to use. + */ +export type HeaderBag = Record; +/** + * @public + * + * Represents an HTTP message with headers and an optional static or streaming + * body. bode: ArrayBuffer | ArrayBufferView | string | Uint8Array | Readable | ReadableStream; + */ +export interface HttpMessage { + headers: HeaderBag; + body?: any; +} +/** + * @public + * + * Represents the options that may be passed to an Http Handler. + */ +export interface HttpHandlerOptions { + abortSignal?: AbortSignal | DeprecatedAbortSignal; + /** + * The maximum time in milliseconds that the connection phase of a request + * may take before the connection attempt is abandoned. + */ + requestTimeout?: number; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/http/httpHandlerInitialization.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/http/httpHandlerInitialization.d.ts new file mode 100644 index 000000000..a6c94e837 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/http/httpHandlerInitialization.d.ts @@ -0,0 +1,128 @@ +import type { Agent as hAgent, AgentOptions as hAgentOptions } from "http"; +import type { Agent as hsAgent, AgentOptions as hsAgentOptions } from "https"; +import type { HttpRequest as IHttpRequest } from "../http"; +import type { Logger } from "../logger"; +/** + * + * This type represents an alternate client constructor option for the entry + * "requestHandler". Instead of providing an instance of a requestHandler, the user + * may provide the requestHandler's constructor options for either the + * NodeHttpHandler or FetchHttpHandler. + * + * For other RequestHandlers like HTTP2 or WebSocket, + * constructor parameter passthrough is not currently available. + * + * @public + */ +export type RequestHandlerParams = NodeHttpHandlerOptions | FetchHttpHandlerOptions; +/** + * Represents the http options that can be passed to a node http client. + * @public + */ +export interface NodeHttpHandlerOptions { + /** + * The maximum time in milliseconds that the connection phase of a request + * may take before the connection attempt is abandoned. + * Defaults to 0, which disables the timeout. + */ + connectionTimeout?: number; + /** + * The maximum number of milliseconds request & response should take. + * Defaults to 0, which disables the timeout. + * + * If exceeded, a warning will be emitted unless throwOnRequestTimeout=true, + * in which case a TimeoutError will be thrown. + */ + requestTimeout?: number; + /** + * Because requestTimeout was for a long time incorrectly being set as a socket idle timeout, + * users must also opt-in for request timeout thrown errors. + * Without this setting, a breach of the request timeout will be logged as a warning. + */ + throwOnRequestTimeout?: boolean; + /** + * The maximum time in milliseconds that a socket may remain idle before it + * is closed. Defaults to 0, which means no maximum. + * + * This does not affect the server, which may still close the connection due to an idle socket. + */ + socketTimeout?: number; + /** + * Delay before the NodeHttpHandler checks for socket exhaustion, + * and emits a warning if the active sockets and enqueued request count is greater than + * 2x the maxSockets count. + * + * Defaults to connectionTimeout + requestTimeout or 3000ms if those are not set. + */ + socketAcquisitionWarningTimeout?: number; + /** + * You can pass http.Agent or its constructor options. + */ + httpAgent?: hAgent | hAgentOptions; + /** + * You can pass https.Agent or its constructor options. + */ + httpsAgent?: hsAgent | hsAgentOptions; + /** + * Optional logger. + */ + logger?: Logger; +} +/** + * Represents the http options that can be passed to a browser http client. + * @public + */ +export interface FetchHttpHandlerOptions { + /** + * The number of milliseconds a request can take before being automatically + * terminated. + */ + requestTimeout?: number; + /** + * Whether to allow the request to outlive the page. Default value is false. + * + * There may be limitations to the payload size, number of concurrent requests, + * request duration etc. when using keepalive in browsers. + * + * These may change over time, so look for up to date information about + * these limitations before enabling keepalive. + */ + keepAlive?: boolean; + /** + * A string indicating whether credentials will be sent with the request always, never, or + * only when sent to a same-origin URL. + * @see https://developer.mozilla.org/en-US/docs/Web/API/Request/credentials + */ + credentials?: "include" | "omit" | "same-origin" | undefined | string; + /** + * Cache settings for fetch. + * @see https://developer.mozilla.org/en-US/docs/Web/API/Request/cache + */ + cache?: "default" | "force-cache" | "no-cache" | "no-store" | "only-if-cached" | "reload"; + /** + * An optional function that produces additional RequestInit + * parameters for each httpRequest. + * + * This is applied last via merging with Object.assign() and overwrites other values + * set from other sources. + * + * @example + * ```js + * new Client({ + * requestHandler: { + * requestInit(httpRequest) { + * return { cache: "no-store" }; + * } + * } + * }); + * ``` + */ + requestInit?: (httpRequest: IHttpRequest) => RequestInit; +} +declare global { + /** + * interface merging stub. + */ + interface RequestInit { + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/identity/apiKeyIdentity.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/identity/apiKeyIdentity.d.ts new file mode 100644 index 000000000..8e814ea64 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/identity/apiKeyIdentity.d.ts @@ -0,0 +1,14 @@ +import type { Identity, IdentityProvider } from "../identity/identity"; +/** + * @public + */ +export interface ApiKeyIdentity extends Identity { + /** + * The literal API Key + */ + readonly apiKey: string; +} +/** + * @public + */ +export type ApiKeyIdentityProvider = IdentityProvider; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/identity/awsCredentialIdentity.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/identity/awsCredentialIdentity.d.ts new file mode 100644 index 000000000..2fbcab79a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/identity/awsCredentialIdentity.d.ts @@ -0,0 +1,31 @@ +import type { Identity, IdentityProvider } from "./identity"; +/** + * @public + */ +export interface AwsCredentialIdentity extends Identity { + /** + * AWS access key ID + */ + readonly accessKeyId: string; + /** + * AWS secret access key + */ + readonly secretAccessKey: string; + /** + * A security or session token to use with these credentials. Usually + * present for temporary credentials. + */ + readonly sessionToken?: string; + /** + * AWS credential scope for this set of credentials. + */ + readonly credentialScope?: string; + /** + * AWS accountId. + */ + readonly accountId?: string; +} +/** + * @public + */ +export type AwsCredentialIdentityProvider = IdentityProvider; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/identity/identity.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/identity/identity.d.ts new file mode 100644 index 000000000..c6fd0d1d4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/identity/identity.d.ts @@ -0,0 +1,15 @@ +/** + * @public + */ +export interface Identity { + /** + * A `Date` when the identity or credential will no longer be accepted. + */ + readonly expiration?: Date; +} +/** + * @public + */ +export interface IdentityProvider { + (identityProperties?: Record): Promise; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/identity/index.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/identity/index.d.ts new file mode 100644 index 000000000..336032034 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/identity/index.d.ts @@ -0,0 +1,4 @@ +export * from "./apiKeyIdentity"; +export * from "./awsCredentialIdentity"; +export * from "./identity"; +export * from "./tokenIdentity"; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/identity/tokenIdentity.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/identity/tokenIdentity.d.ts new file mode 100644 index 000000000..37bb1694c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/identity/tokenIdentity.d.ts @@ -0,0 +1,14 @@ +import type { Identity, IdentityProvider } from "../identity/identity"; +/** + * @internal + */ +export interface TokenIdentity extends Identity { + /** + * The literal token string + */ + readonly token: string; +} +/** + * @internal + */ +export type TokenIdentityProvider = IdentityProvider; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/index.d.ts new file mode 100644 index 000000000..2f1f25c67 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/index.d.ts @@ -0,0 +1,43 @@ +export * from "./abort"; +export * from "./auth"; +export * from "./blob/blob-payload-input-types"; +export * from "./checksum"; +export * from "./client"; +export * from "./command"; +export * from "./connection"; +export * from "./crypto"; +export * from "./encode"; +export * from "./endpoint"; +export * from "./endpoints"; +export * from "./eventStream"; +export * from "./extensions"; +export * from "./feature-ids"; +export * from "./http"; +export * from "./http/httpHandlerInitialization"; +export * from "./identity"; +export * from "./logger"; +export * from "./middleware"; +export * from "./pagination"; +export * from "./profile"; +export * from "./response"; +export * from "./retry"; +export * from "./schema/schema"; +export * from "./schema/traits"; +export * from "./schema/schema-deprecated"; +export * from "./schema/sentinels"; +export * from "./schema/static-schemas"; +export * from "./serde"; +export * from "./shapes"; +export * from "./signature"; +export * from "./stream"; +export * from "./streaming-payload/streaming-blob-common-types"; +export * from "./streaming-payload/streaming-blob-payload-input-types"; +export * from "./streaming-payload/streaming-blob-payload-output-types"; +export * from "./transfer"; +export * from "./transform/client-payload-blob-type-narrow"; +export * from "./transform/mutable"; +export * from "./transform/no-undefined"; +export * from "./transform/type-transform"; +export * from "./uri"; +export * from "./util"; +export * from "./waiter"; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/logger.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/logger.d.ts new file mode 100644 index 000000000..f66a664c2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/logger.d.ts @@ -0,0 +1,13 @@ +/** + * @public + * + * Represents a logger object that is available in HandlerExecutionContext + * throughout the middleware stack. + */ +export interface Logger { + trace?: (...content: any[]) => void; + debug: (...content: any[]) => void; + info: (...content: any[]) => void; + warn: (...content: any[]) => void; + error: (...content: any[]) => void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/middleware.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/middleware.d.ts new file mode 100644 index 000000000..cc2009876 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/middleware.d.ts @@ -0,0 +1,534 @@ +import type { AuthScheme, HttpAuthDefinition } from "./auth/auth"; +import type { SelectedHttpAuthScheme } from "./auth/HttpAuthScheme"; +import type { Command } from "./command"; +import type { EndpointV2 } from "./endpoint"; +import type { SmithyFeatures } from "./feature-ids"; +import type { Logger } from "./logger"; +import type { UserAgent } from "./util"; +/** + * @public + */ +export interface InitializeHandlerArguments { + /** + * User input to a command. Reflects the userland representation of the + * union of data types the command can effectively handle. + */ + input: Input; +} +/** + * @public + */ +export interface InitializeHandlerOutput extends DeserializeHandlerOutput { + output: Output; +} +/** + * @public + */ +export interface SerializeHandlerArguments extends InitializeHandlerArguments { + /** + * The user input serialized as a request object. The request object is unknown, + * so you cannot modify it directly. When work with request, you need to guard its + * type to e.g. HttpRequest with 'instanceof' operand + * + * During the build phase of the execution of a middleware stack, a built + * request may or may not be available. + */ + request?: unknown; +} +/** + * @public + */ +export interface SerializeHandlerOutput extends InitializeHandlerOutput { +} +/** + * @public + */ +export interface BuildHandlerArguments extends FinalizeHandlerArguments { +} +/** + * @public + */ +export interface BuildHandlerOutput extends InitializeHandlerOutput { +} +/** + * @public + */ +export interface FinalizeHandlerArguments extends SerializeHandlerArguments { + /** + * The user input serialized as a request. + */ + request: unknown; +} +/** + * @public + */ +export interface FinalizeHandlerOutput extends InitializeHandlerOutput { +} +/** + * @public + */ +export interface DeserializeHandlerArguments extends FinalizeHandlerArguments { +} +/** + * @public + */ +export interface DeserializeHandlerOutput { + /** + * The raw response object from runtime is deserialized to structured output object. + * The response object is unknown so you cannot modify it directly. When work with + * response, you need to guard its type to e.g. HttpResponse with 'instanceof' operand. + * + * During the deserialize phase of the execution of a middleware stack, a deserialized + * response may or may not be available + */ + response: unknown; + output?: Output; +} +/** + * @public + */ +export interface InitializeHandler { + /** + * Asynchronously converts an input object into an output object. + * + * @param args - An object containing a input to the command as well as any + * associated or previously generated execution artifacts. + */ + (args: InitializeHandlerArguments): Promise>; +} +/** + * @public + */ +export type Handler = InitializeHandler; +/** + * @public + */ +export interface SerializeHandler { + /** + * Asynchronously converts an input object into an output object. + * + * @param args - An object containing a input to the command as well as any + * associated or previously generated execution artifacts. + */ + (args: SerializeHandlerArguments): Promise>; +} +/** + * @public + */ +export interface FinalizeHandler { + /** + * Asynchronously converts an input object into an output object. + * + * @param args - An object containing a input to the command as well as any + * associated or previously generated execution artifacts. + */ + (args: FinalizeHandlerArguments): Promise>; +} +/** + * @public + */ +export interface BuildHandler { + (args: BuildHandlerArguments): Promise>; +} +/** + * @public + */ +export interface DeserializeHandler { + (args: DeserializeHandlerArguments): Promise>; +} +/** + * @public + * + * A factory function that creates functions implementing the `Handler` + * interface. + */ +export interface InitializeMiddleware { + /** + * @param next - The handler to invoke after this middleware has operated on + * the user input and before this middleware operates on the output. + * + * @param context - Invariant data and functions for use by the handler. + */ + (next: InitializeHandler, context: HandlerExecutionContext): InitializeHandler; +} +/** + * @public + * + * A factory function that creates functions implementing the `BuildHandler` + * interface. + */ +export interface SerializeMiddleware { + /** + * @param next - The handler to invoke after this middleware has operated on + * the user input and before this middleware operates on the output. + * + * @param context - Invariant data and functions for use by the handler. + */ + (next: SerializeHandler, context: HandlerExecutionContext): SerializeHandler; +} +/** + * @public + * + * A factory function that creates functions implementing the `FinalizeHandler` + * interface. + */ +export interface FinalizeRequestMiddleware { + /** + * @param next - The handler to invoke after this middleware has operated on + * the user input and before this middleware operates on the output. + * + * @param context - Invariant data and functions for use by the handler. + */ + (next: FinalizeHandler, context: HandlerExecutionContext): FinalizeHandler; +} +/** + * @public + */ +export interface BuildMiddleware { + (next: BuildHandler, context: HandlerExecutionContext): BuildHandler; +} +/** + * @public + */ +export interface DeserializeMiddleware { + (next: DeserializeHandler, context: HandlerExecutionContext): DeserializeHandler; +} +/** + * @public + */ +export type MiddlewareType = InitializeMiddleware | SerializeMiddleware | BuildMiddleware | FinalizeRequestMiddleware | DeserializeMiddleware; +/** + * @public + * + * A factory function that creates the terminal handler atop which a middleware + * stack sits. + */ +export interface Terminalware { + (context: HandlerExecutionContext): DeserializeHandler; +} +/** + * @public + */ +export type Step = "initialize" | "serialize" | "build" | "finalizeRequest" | "deserialize"; +/** + * @public + */ +export type Priority = "high" | "normal" | "low"; +/** + * @public + */ +export interface HandlerOptions { + /** + * Handlers are ordered using a "step" that describes the stage of command + * execution at which the handler will be executed. The available steps are: + * + * - initialize: The input is being prepared. Examples of typical + * initialization tasks include injecting default options computing + * derived parameters. + * - serialize: The input is complete and ready to be serialized. Examples + * of typical serialization tasks include input validation and building + * an HTTP request from user input. + * - build: The input has been serialized into an HTTP request, but that + * request may require further modification. Any request alterations + * will be applied to all retries. Examples of typical build tasks + * include injecting HTTP headers that describe a stable aspect of the + * request, such as `Content-Length` or a body checksum. + * - finalizeRequest: The request is being prepared to be sent over the wire. The + * request in this stage should already be semantically complete and + * should therefore only be altered as match the recipient's + * expectations. Examples of typical finalization tasks include request + * signing and injecting hop-by-hop headers. + * - deserialize: The response has arrived, the middleware here will deserialize + * the raw response object to structured response + * + * Unlike initialization and build handlers, which are executed once + * per operation execution, finalization and deserialize handlers will be + * executed foreach HTTP request sent. + * + * @defaultValue 'initialize' + */ + step?: Step; + /** + * A list of strings to any that identify the general purpose or important + * characteristics of a given handler. + */ + tags?: Array; + /** + * A unique name to refer to a middleware + */ + name?: string; + /** + * @internal + * Aliases allows for middleware to be found by multiple names besides {@link HandlerOptions.name}. + * This allows for references to replaced middleware to continue working, e.g. replacing + * multiple auth-specific middleware with a single generic auth middleware. + */ + aliases?: Array; + /** + * A flag to override the existing middleware with the same name. Without + * setting it, adding middleware with duplicated name will throw an exception. + * @internal + */ + override?: boolean; +} +/** + * @public + */ +export interface AbsoluteLocation { + /** + * By default middleware will be added to individual step in un-guaranteed order. + * In the case that + * + * @defaultValue 'normal' + */ + priority?: Priority; +} +/** + * @public + */ +export type Relation = "before" | "after"; +/** + * @public + */ +export interface RelativeLocation { + /** + * Specify the relation to be before or after a know middleware. + */ + relation: Relation; + /** + * A known middleware name to indicate inserting middleware's location. + */ + toMiddleware: string; +} +/** + * @public + */ +export type RelativeMiddlewareOptions = RelativeLocation & Omit; +/** + * @public + */ +export interface InitializeHandlerOptions extends HandlerOptions { + step?: "initialize"; +} +/** + * @public + */ +export interface SerializeHandlerOptions extends HandlerOptions { + step: "serialize"; +} +/** + * @public + */ +export interface BuildHandlerOptions extends HandlerOptions { + step: "build"; +} +/** + * @public + */ +export interface FinalizeRequestHandlerOptions extends HandlerOptions { + step: "finalizeRequest"; +} +/** + * @public + */ +export interface DeserializeHandlerOptions extends HandlerOptions { + step: "deserialize"; +} +/** + * @public + * + * A stack storing middleware. It can be resolved into a handler. It supports 2 + * approaches for adding middleware: + * 1. Adding middleware to specific step with `add()`. The order of middleware + * added into same step is determined by order of adding them. If one middleware + * needs to be executed at the front of the step or at the end of step, set + * `priority` options to `high` or `low`. + * 2. Adding middleware to location relative to known middleware with `addRelativeTo()`. + * This is useful when given middleware must be executed before or after specific + * middleware(`toMiddleware`). You can add a middleware relatively to another + * middleware which also added relatively. But eventually, this relative middleware + * chain **must** be 'anchored' by a middleware that added using `add()` API + * with absolute `step` and `priority`. This mothod will throw if specified + * `toMiddleware` is not found. + */ +export interface MiddlewareStack extends Pluggable { + /** + * Add middleware to the stack to be executed during the "initialize" step, + * optionally specifying a priority, tags and name + */ + add(middleware: InitializeMiddleware, options?: InitializeHandlerOptions & AbsoluteLocation): void; + /** + * Add middleware to the stack to be executed during the "serialize" step, + * optionally specifying a priority, tags and name + */ + add(middleware: SerializeMiddleware, options: SerializeHandlerOptions & AbsoluteLocation): void; + /** + * Add middleware to the stack to be executed during the "build" step, + * optionally specifying a priority, tags and name + */ + add(middleware: BuildMiddleware, options: BuildHandlerOptions & AbsoluteLocation): void; + /** + * Add middleware to the stack to be executed during the "finalizeRequest" step, + * optionally specifying a priority, tags and name + */ + add(middleware: FinalizeRequestMiddleware, options: FinalizeRequestHandlerOptions & AbsoluteLocation): void; + /** + * Add middleware to the stack to be executed during the "deserialize" step, + * optionally specifying a priority, tags and name + */ + add(middleware: DeserializeMiddleware, options: DeserializeHandlerOptions & AbsoluteLocation): void; + /** + * Add middleware to a stack position before or after a known middleware,optionally + * specifying name and tags. + */ + addRelativeTo(middleware: MiddlewareType, options: RelativeMiddlewareOptions): void; + /** + * Apply a customization function to mutate the middleware stack, often + * used for customizations that requires mutating multiple middleware. + */ + use(pluggable: Pluggable): void; + /** + * Create a shallow clone of this stack. Step bindings and handler priorities + * and tags are preserved in the copy. + */ + clone(): MiddlewareStack; + /** + * Removes middleware from the stack. + * + * If a string is provided, it will be treated as middleware name. If a middleware + * is inserted with the given name, it will be removed. + * + * If a middleware class is provided, all usages thereof will be removed. + */ + remove(toRemove: MiddlewareType | string): boolean; + /** + * Removes middleware that contains given tag + * + * Multiple middleware will potentially be removed + */ + removeByTag(toRemove: string): boolean; + /** + * Create a stack containing the middlewares in this stack as well as the + * middlewares in the `from` stack. Neither source is modified, and step + * bindings and handler priorities and tags are preserved in the copy. + */ + concat(from: MiddlewareStack): MiddlewareStack; + /** + * Returns a list of the current order of middleware in the stack. + * This does not execute the middleware functions, nor does it + * provide a reference to the stack itself. + */ + identify(): string[]; + /** + * @internal + * + * When an operation is called using this stack, + * it will log its list of middleware to the console using + * the identify function. + * + * @param toggle - set whether to log on resolve. + * If no argument given, returns the current value. + */ + identifyOnResolve(toggle?: boolean): boolean; + /** + * Builds a single handler function from zero or more middleware classes and + * a core handler. The core handler is meant to send command objects to AWS + * services and return promises that will resolve with the operation result + * or be rejected with an error. + * + * When a composed handler is invoked, the arguments will pass through all + * middleware in a defined order, and the return from the innermost handler + * will pass through all middleware in the reverse of that order. + */ + resolve(handler: DeserializeHandler, context: HandlerExecutionContext): InitializeHandler; +} +/** + * @internal + */ +export declare const SMITHY_CONTEXT_KEY = "__smithy_context"; +/** + * @public + * + * Data and helper objects that are not expected to change from one execution of + * a composed handler to another. + */ +export interface HandlerExecutionContext { + /** + * A logger that may be invoked by any handler during execution of an + * operation. + */ + logger?: Logger; + /** + * Name of the service the operation is being sent to. + */ + clientName?: string; + /** + * Name of the operation being executed. + */ + commandName?: string; + /** + * Additional user agent that inferred by middleware. It can be used to save + * the internal user agent sections without overriding the `customUserAgent` + * config in clients. + */ + userAgent?: UserAgent; + /** + * Resolved by the endpointMiddleware function of `@smithy/middleware-endpoint` + * in the serialization stage. + */ + endpointV2?: EndpointV2; + /** + * Set at the same time as endpointV2. + */ + authSchemes?: AuthScheme[]; + /** + * The current auth configuration that has been set by any auth middleware and + * that will prevent from being set more than once. + */ + currentAuthConfig?: HttpAuthDefinition; + /** + * @deprecated do not extend this field, it is a carryover from AWS SDKs. + * Used by DynamoDbDocumentClient. + */ + dynamoDbDocumentClientOptions?: Partial<{ + overrideInputFilterSensitiveLog(...args: any[]): string | void; + overrideOutputFilterSensitiveLog(...args: any[]): string | void; + }>; + /** + * @internal + * Context for Smithy properties. + */ + [SMITHY_CONTEXT_KEY]?: { + service?: string; + operation?: string; + commandInstance?: Command; + selectedHttpAuthScheme?: SelectedHttpAuthScheme; + features?: SmithyFeatures; + /** + * @deprecated + * Do not assign arbitrary members to the Smithy Context, + * fields should be explicitly declared here to avoid collisions. + */ + [key: string]: unknown; + }; + /** + * @deprecated + * Do not assign arbitrary members to the context, since + * they can interfere with existing functionality. + * + * Additional members should instead be declared on the SMITHY_CONTEXT_KEY + * or other reserved keys. + */ + [key: string]: any; +} +/** + * @public + */ +export interface Pluggable { + /** + * A function that mutate the passed in middleware stack. Functions implementing + * this interface can add, remove, modify existing middleware stack from clients + * or commands + */ + applyToStack: (stack: MiddlewareStack) => void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/pagination.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/pagination.d.ts new file mode 100644 index 000000000..e10fddaa8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/pagination.d.ts @@ -0,0 +1,33 @@ +import type { Client } from "./client"; +import type { Command } from "./command"; +/** + * @public + * + * Expected type definition of a paginator. + */ +export type Paginator = AsyncGenerator; +/** + * @public + * + * Expected paginator configuration passed to an operation. Services will extend + * this interface definition and may type client further. + */ +export interface PaginationConfiguration { + client: Client; + pageSize?: number; + startingToken?: any; + /** + * For some APIs, such as CloudWatchLogs events, the next page token will always + * be present. + * + * When true, this config field will have the paginator stop when the token doesn't change + * instead of when it is not present. + */ + stopOnSameToken?: boolean; + /** + * @param command - reference to the instantiated command. This callback is executed + * prior to sending the command with the paginator's client. + * @returns the original command or a replacement, defaulting to the original command object. + */ + withCommand?: (command: Command) => typeof command | undefined; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/profile.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/profile.d.ts new file mode 100644 index 000000000..b7885d988 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/profile.d.ts @@ -0,0 +1,30 @@ +/** + * @public + */ +export declare enum IniSectionType { + PROFILE = "profile", + SSO_SESSION = "sso-session", + SERVICES = "services" +} +/** + * @public + */ +export type IniSection = Record; +/** + * @public + * + * @deprecated Please use {@link IniSection} + */ +export interface Profile extends IniSection { +} +/** + * @public + */ +export type ParsedIniData = Record; +/** + * @public + */ +export interface SharedConfigFiles { + credentialsFile: ParsedIniData; + configFile: ParsedIniData; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/response.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/response.d.ts new file mode 100644 index 000000000..afcfe8f80 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/response.d.ts @@ -0,0 +1,40 @@ +/** + * @public + */ +export interface ResponseMetadata { + /** + * The status code of the last HTTP response received for this operation. + */ + httpStatusCode?: number; + /** + * A unique identifier for the last request sent for this operation. Often + * requested by AWS service teams to aid in debugging. + */ + requestId?: string; + /** + * A secondary identifier for the last request sent. Used for debugging. + */ + extendedRequestId?: string; + /** + * A tertiary identifier for the last request sent. Used for debugging. + */ + cfId?: string; + /** + * The number of times this operation was attempted. + */ + attempts?: number; + /** + * The total amount of time (in milliseconds) that was spent waiting between + * retry attempts. + */ + totalRetryDelay?: number; +} +/** + * @public + */ +export interface MetadataBearer { + /** + * Metadata pertaining to this request. + */ + $metadata: ResponseMetadata; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/retry.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/retry.d.ts new file mode 100644 index 000000000..c8f3a5d62 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/retry.d.ts @@ -0,0 +1,133 @@ +import type { SdkError } from "./shapes"; +/** + * @public + */ +export type RetryErrorType = +/** + * This is a connection level error such as a socket timeout, socket connect + * error, tls negotiation timeout etc... + * Typically these should never be applied for non-idempotent request types + * since in this scenario, it's impossible to know whether the operation had + * a side effect on the server. + */ +"TRANSIENT" +/** + * This is an error where the server explicitly told the client to back off, + * such as a 429 or 503 Http error. + */ + | "THROTTLING" +/** + * This is a server error that isn't explicitly throttling but is considered + * by the client to be something that should be retried. + */ + | "SERVER_ERROR" +/** + * Doesn't count against any budgets. This could be something like a 401 + * challenge in Http. + */ + | "CLIENT_ERROR"; +/** + * @public + */ +export interface RetryErrorInfo { + /** + * The error thrown during the initial request, if available. + */ + error?: SdkError; + errorType: RetryErrorType; + /** + * Protocol hint. This could come from Http's 'retry-after' header or + * something from MQTT or any other protocol that has the ability to convey + * retry info from a peer. + * + * The Date after which a retry should be attempted. + */ + retryAfterHint?: Date; +} +/** + * @public + */ +export interface RetryBackoffStrategy { + /** + * @returns the number of milliseconds to wait before retrying an action. + */ + computeNextBackoffDelay(retryAttempt: number): number; +} +/** + * @public + */ +export interface StandardRetryBackoffStrategy extends RetryBackoffStrategy { + /** + * Sets the delayBase used to compute backoff delays. + * @param delayBase - + */ + setDelayBase(delayBase: number): void; +} +/** + * @public + */ +export interface RetryStrategyOptions { + backoffStrategy: RetryBackoffStrategy; + maxRetriesBase: number; +} +/** + * @public + */ +export interface RetryToken { + /** + * @returns the current count of retry. + */ + getRetryCount(): number; + /** + * @returns the number of milliseconds to wait before retrying an action. + */ + getRetryDelay(): number; +} +/** + * @public + */ +export interface StandardRetryToken extends RetryToken { + /** + * @returns the cost of the last retry attempt. + */ + getRetryCost(): number | undefined; +} +/** + * @public + */ +export interface RetryStrategyV2 { + /** + * Called before any retries (for the first call to the operation). It either + * returns a retry token or an error upon the failure to acquire a token prior. + * + * tokenScope is arbitrary and out of scope for this component. However, + * adding it here offers us a lot of future flexibility for outage detection. + * For example, it could be "us-east-1" on a shared retry strategy, or + * "us-west-2-c:dynamodb". + */ + acquireInitialRetryToken(retryTokenScope: string): Promise; + /** + * After a failed operation call, this function is invoked to refresh the + * retryToken returned by acquireInitialRetryToken(). This function can + * either choose to allow another retry and send a new or updated token, + * or reject the retry attempt and report the error either in an exception + * or returning an error. + */ + refreshRetryTokenForRetry(tokenToRenew: RetryToken, errorInfo: RetryErrorInfo): Promise; + /** + * Upon successful completion of the operation, this function is called + * to record that the operation was successful. + */ + recordSuccess(token: RetryToken): void; +} +/** + * @public + */ +export type ExponentialBackoffJitterType = "DEFAULT" | "NONE" | "FULL" | "DECORRELATED"; +/** + * @public + */ +export interface ExponentialBackoffStrategyOptions { + jitterType: ExponentialBackoffJitterType; + backoffScaleValue?: number; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/schema/schema-deprecated.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/schema/schema-deprecated.d.ts new file mode 100644 index 000000000..f3e94e20b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/schema/schema-deprecated.d.ts @@ -0,0 +1,143 @@ +import type { EndpointV2 } from "../endpoint"; +import type { HandlerExecutionContext } from "../middleware"; +import type { MetadataBearer } from "../response"; +import type { EndpointBearer, SerdeFunctions } from "../serde"; +import type { ConfigurableSerdeContext, NormalizedSchema, SchemaTraits, SimpleSchema, UnitSchema } from "./schema"; +import type { StaticSchema } from "./static-schemas"; +/** + * A schema is an object or value that describes how to serialize/deserialize data. + * @internal + * @deprecated use $Schema + */ +export type Schema = UnitSchema | TraitsSchema | SimpleSchema | ListSchema | MapSchema | StructureSchema | MemberSchema | OperationSchema | StaticSchema | NormalizedSchema; +/** + * A schema "reference" is either a schema or a function that + * provides a schema. This is useful for lazy loading, and to allow + * code generation to define schema out of dependency order. + * @internal + * @deprecated use $SchemaRef + */ +export type SchemaRef = Schema | (() => Schema); +/** + * A schema that has traits. + * + * @internal + * @deprecated use static schema. + */ +export interface TraitsSchema { + namespace: string; + name: string; + traits: SchemaTraits; +} +/** + * Indicates the schema is a member of a parent Structure schema. + * It may also have a set of member traits distinct from its target shape's traits. + * @internal + * @deprecated use $MemberSchema + */ +export type MemberSchema = [SchemaRef, SchemaTraits]; +/** + * Schema for the structure aggregate type. + * @internal + * @deprecated use static schema. + */ +export interface StructureSchema extends TraitsSchema { + memberNames: string[]; + memberList: SchemaRef[]; + /** + * @deprecated structure member iteration will be linear on the memberNames and memberList arrays. + * It can be collected into a hashmap form on an ad-hoc basis, but will not initialize as such. + */ + members?: Record | undefined; +} +/** + * Schema for the list aggregate type. + * @internal + * @deprecated use static schema. + */ +export interface ListSchema extends TraitsSchema { + valueSchema: SchemaRef; +} +/** + * Schema for the map aggregate type. + * @internal + * @deprecated use static schema. + */ +export interface MapSchema extends TraitsSchema { + keySchema: SchemaRef; + valueSchema: SchemaRef; +} +/** + * Schema for an operation. + * @internal + * @deprecated use StaticOperationSchema or $OperationSchema + */ +export interface OperationSchema { + namespace: string; + name: string; + traits: SchemaTraits; + input: SchemaRef; + output: SchemaRef; +} +/** + * Turns a serialization into a data object. + * @internal + * @deprecated use $ShapeDeserializer + */ +export interface ShapeDeserializer extends ConfigurableSerdeContext { + /** + * Optionally async. + */ + read(schema: Schema, data: SerializationType): any | Promise; +} +/** + * Turns a data object into a serialization. + * @internal + * @deprecated use $ShapeSerializer + */ +export interface ShapeSerializer extends ConfigurableSerdeContext { + write(schema: Schema, value: unknown): void; + flush(): SerializationType; +} +/** + * A codec creates serializers and deserializers for some format such as JSON, XML, or CBOR. + * + * @internal + * @deprecated use $Codec + */ +export interface Codec extends ConfigurableSerdeContext { + createSerializer(): ShapeSerializer; + createDeserializer(): ShapeDeserializer; +} +/** + * A client protocol defines how to convert a message (e.g. HTTP request/response) to and from a data object. + * @internal + * @deprecated use $ClientProtocol + */ +export interface ClientProtocol extends ConfigurableSerdeContext { + /** + * @returns the Smithy qualified shape id. + */ + getShapeId(): string; + getRequestType(): { + new (...args: any[]): Request; + }; + getResponseType(): { + new (...args: any[]): Response; + }; + /** + * @returns the payload codec if the requests/responses have a symmetric format. + * It otherwise may return null. + */ + getPayloadCodec(): Codec; + serializeRequest(operationSchema: OperationSchema, input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + updateServiceEndpoint(request: Request, endpoint: EndpointV2): Request; + deserializeResponse(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: Response): Promise; +} +/** + * @public + * @deprecated use $ClientProtocolCtor. + */ +export interface ClientProtocolCtor { + new (args: any): ClientProtocol; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/schema/schema.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/schema/schema.d.ts new file mode 100644 index 000000000..9efce5e92 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/schema/schema.d.ts @@ -0,0 +1,236 @@ +import type { EndpointV2 } from "../endpoint"; +import type { HandlerExecutionContext } from "../middleware"; +import type { MetadataBearer } from "../response"; +import type { EndpointBearer, SerdeFunctions } from "../serde"; +import type { BigDecimalSchema, BigIntegerSchema, BlobSchema, BooleanSchema, DocumentSchema, NumericSchema, StreamingBlobSchema, StringSchema, TimestampDateTimeSchema, TimestampDefaultSchema, TimestampEpochSecondsSchema, TimestampHttpDateSchema } from "./sentinels"; +import type { StaticSchema } from "./static-schemas"; +import type { TraitBitVector } from "./traits"; +/** + * A schema is an object or value that describes how to serialize/deserialize data. + * @public + */ +export type $Schema = UnitSchema | SimpleSchema | $MemberSchema | StaticSchema | NormalizedSchema; +/** + * Traits attached to schema objects. + * + * When this is a number, it refers to a pre-allocated + * trait combination that is equivalent to one of the + * object type's variations. + * + * @public + */ +export type SchemaTraits = TraitBitVector | SchemaTraitsObject; +/** + * Simple schemas are those corresponding to simple Smithy types. + * @see https://smithy.io/2.0/spec/simple-types.html + * @public + */ +export type SimpleSchema = BlobSchemas | StringSchema | BooleanSchema | NumericSchema | BigIntegerSchema | BigDecimalSchema | DocumentSchema | TimestampSchemas | number; +/** + * Sentinel value for Timestamp schema. + * "Default" means unspecified and to use the protocol serializer's default format. + * + * @public + */ +export type TimestampSchemas = TimestampDefaultSchema | TimestampDateTimeSchema | TimestampHttpDateSchema | TimestampEpochSecondsSchema; +/** + * Sentinel values for Blob schema. + * @public + */ +export type BlobSchemas = BlobSchema | StreamingBlobSchema; +/** + * Signal value for the Smithy void value. Typically used for + * operation input and outputs. + * + * @public + */ +export type UnitSchema = "unit"; +/** + * See https://smithy.io/2.0/trait-index.html for individual definitions. + * + * @public + */ +export type SchemaTraitsObject = { + idempotent?: 1; + idempotencyToken?: 1; + sensitive?: 1; + sparse?: 1; + /** + * timestampFormat is expressed by the schema sentinel values of 4, 5, 6, and 7, + * and not contained in trait objects. + * @deprecated use schema value. + */ + timestampFormat?: never; + httpLabel?: 1; + httpHeader?: string; + httpQuery?: string; + httpPrefixHeaders?: string; + httpQueryParams?: 1; + httpPayload?: 1; + /** + * [method, path, statusCode] + */ + http?: [string, string, number]; + httpResponseCode?: 1; + /** + * [hostPrefix] + */ + endpoint?: [string]; + xmlAttribute?: 1; + xmlName?: string; + /** + * [prefix, uri] + */ + xmlNamespace?: [string, string]; + xmlFlattened?: 1; + jsonName?: string; + mediaType?: string; + error?: "client" | "server"; + streaming?: 1; + eventHeader?: 1; + eventPayload?: 1; + [traitName: string]: unknown; +}; +/** + * Indicates the schema is a member of a parent Structure schema. + * It may also have a set of member traits distinct from its target shape's traits. + * @public + */ +export type $MemberSchema = [$SchemaRef, SchemaTraits]; +/** + * Schema for an operation. + * @public + */ +export interface $OperationSchema { + namespace: string; + name: string; + traits: SchemaTraits; + input: $SchemaRef; + output: $SchemaRef; +} +/** + * Normalization wrapper for various schema data objects. + * @public + */ +export interface NormalizedSchema { + getSchema(): $Schema; + getName(): string | undefined; + isMemberSchema(): boolean; + isListSchema(): boolean; + isMapSchema(): boolean; + isStructSchema(): boolean; + isBlobSchema(): boolean; + isTimestampSchema(): boolean; + isStringSchema(): boolean; + isBooleanSchema(): boolean; + isNumericSchema(): boolean; + isBigIntegerSchema(): boolean; + isBigDecimalSchema(): boolean; + isStreaming(): boolean; + getMergedTraits(): SchemaTraitsObject; + getMemberTraits(): SchemaTraitsObject; + getOwnTraits(): SchemaTraitsObject; + /** + * For list/set/map. + */ + getValueSchema(): NormalizedSchema; + /** + * For struct/union. + */ + getMemberSchema(member: string): NormalizedSchema | undefined; + structIterator(): Generator<[string, NormalizedSchema], undefined, undefined>; +} +/** + * A schema "reference" is either a schema or a function that + * provides a schema. This is useful for lazy loading, and to allow + * code generation to define schema out of dependency order. + * @public + */ +export type $SchemaRef = $Schema | (() => $Schema); +/** + * A codec creates serializers and deserializers for some format such as JSON, XML, or CBOR. + * + * @public + */ +export interface $Codec extends ConfigurableSerdeContext { + createSerializer(): $ShapeSerializer; + createDeserializer(): $ShapeDeserializer; +} +/** + * Configuration for codecs. Different protocols may share codecs, but require different behaviors from them. + * + * @public + */ +export type CodecSettings = { + timestampFormat: { + /** + * Whether to use member timestamp format traits. + */ + useTrait: boolean; + /** + * Default timestamp format. + */ + default: TimestampDateTimeSchema | TimestampHttpDateSchema | TimestampEpochSecondsSchema; + }; + /** + * Whether to use HTTP binding traits. + */ + httpBindings?: boolean; +}; +/** + * Turns a serialization into a data object. + * @public + */ +export interface $ShapeDeserializer extends ConfigurableSerdeContext { + /** + * Optionally async. + */ + read(schema: $Schema, data: SerializationType): any | Promise; +} +/** + * Turns a data object into a serialization. + * @public + */ +export interface $ShapeSerializer extends ConfigurableSerdeContext { + write(schema: $Schema, value: unknown): void; + flush(): SerializationType; +} +/** + * A client protocol defines how to convert a message (e.g. HTTP request/response) to and from a data object. + * @public + */ +export interface $ClientProtocol extends ConfigurableSerdeContext { + /** + * @returns the Smithy qualified shape id. + */ + getShapeId(): string; + getRequestType(): { + new (...args: any[]): Request; + }; + getResponseType(): { + new (...args: any[]): Response; + }; + /** + * @returns the payload codec if the requests/responses have a symmetric format. + * It otherwise may return null. + */ + getPayloadCodec(): $Codec; + serializeRequest(operationSchema: $OperationSchema, input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + updateServiceEndpoint(request: Request, endpoint: EndpointV2): Request; + deserializeResponse(operationSchema: $OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: Response): Promise; +} +/** + * @public + */ +export interface $ClientProtocolCtor { + new (args: any): $ClientProtocol; +} +/** + * Allows a protocol, codec, or serde utility to accept the serdeContext + * from a client configuration or request/response handlerExecutionContext. + * + * @public + */ +export interface ConfigurableSerdeContext { + setSerdeContext(serdeContext: SerdeFunctions): void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/schema/sentinels.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/schema/sentinels.d.ts new file mode 100644 index 000000000..939e807dc --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/schema/sentinels.d.ts @@ -0,0 +1,65 @@ +/** + * The blob Smithy type, in JS as Uint8Array and other representations + * such as Buffer, string, or Readable(Stream) depending on circumstances. + * @public + */ +export type BlobSchema = 21; +/** + * @public + */ +export type StreamingBlobSchema = 42; +/** + * @public + */ +export type BooleanSchema = 2; +/** + * Includes string and enum Smithy types. + * @public + */ +export type StringSchema = 0; +/** + * Includes all numeric Smithy types except bigInteger and bigDecimal. + * byte, short, integer, long, float, double, intEnum. + * + * @public + */ +export type NumericSchema = 1; +/** + * @public + */ +export type BigIntegerSchema = 17; +/** + * @public + */ +export type BigDecimalSchema = 19; +/** + * @public + */ +export type DocumentSchema = 15; +/** + * Smithy type timestamp, in JS as native Date object. + * @public + */ +export type TimestampDefaultSchema = 4; +/** + * @public + */ +export type TimestampDateTimeSchema = 5; +/** + * @public + */ +export type TimestampHttpDateSchema = 6; +/** + * @public + */ +export type TimestampEpochSecondsSchema = 7; +/** + * Additional bit indicating the type is a list. + * @public + */ +export type ListSchemaModifier = 64; +/** + * Additional bit indicating the type is a map. + * @public + */ +export type MapSchemaModifier = 128; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/schema/static-schemas.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/schema/static-schemas.d.ts new file mode 100644 index 000000000..826db2a7f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/schema/static-schemas.d.ts @@ -0,0 +1,99 @@ +import type { $SchemaRef, SchemaTraits } from "../schema/schema"; +/** + * @public + */ +export type StaticSchemaIdSimple = 0; +/** + * @public + */ +export type StaticSchemaIdList = 1; +/** + * @public + */ +export type StaticSchemaIdMap = 2; +/** + * @public + */ +export type StaticSchemaIdStruct = 3; +/** + * @public + */ +export type StaticSchemaIdUnion = 4; +/** + * @public + */ +export type StaticSchemaIdError = -3; +/** + * @public + */ +export type StaticSchemaIdOperation = 9; +/** + * @public + */ +export type StaticSchema = StaticSimpleSchema | StaticListSchema | StaticMapSchema | StaticStructureSchema | StaticUnionSchema | StaticErrorSchema | StaticOperationSchema; +/** + * @public + */ +export type ShapeName = string; +/** + * @public + */ +export type ShapeNamespace = string; +/** + * @public + */ +export type StaticSimpleSchema = [StaticSchemaIdSimple, ShapeNamespace, ShapeName, SchemaTraits, $SchemaRef]; +/** + * @public + */ +export type StaticListSchema = [StaticSchemaIdList, ShapeNamespace, ShapeName, SchemaTraits, $SchemaRef]; +/** + * @public + */ +export type StaticMapSchema = [StaticSchemaIdMap, ShapeNamespace, ShapeName, SchemaTraits, $SchemaRef, $SchemaRef]; +/** + * @public + */ +export type StaticStructureSchema = [ + StaticSchemaIdStruct, + ShapeNamespace, + ShapeName, + SchemaTraits, + string[], + $SchemaRef[], + number? +]; +/** + * @public + */ +export type StaticUnionSchema = [ + StaticSchemaIdUnion, + ShapeNamespace, + ShapeName, + SchemaTraits, + string[], + $SchemaRef[] +]; +/** + * @public + */ +export type StaticErrorSchema = [ + StaticSchemaIdError, + ShapeNamespace, + ShapeName, + SchemaTraits, + string[], + $SchemaRef[], + number? +]; +/** + * @public + */ +export type StaticOperationSchema = [ + StaticSchemaIdOperation, + ShapeNamespace, + ShapeName, + SchemaTraits, + $SchemaRef, + $SchemaRef +]; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/schema/traits.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/schema/traits.d.ts new file mode 100644 index 000000000..0825f8151 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/schema/traits.d.ts @@ -0,0 +1,46 @@ +/** + * A bitvector representing a traits object. + * + * Vector index to trait: + * 0 - httpLabel + * 1 - idempotent + * 2 - idempotencyToken + * 3 - sensitive + * 4 - httpPayload + * 5 - httpResponseCode + * 6 - httpQueryParams + * + * The singular trait values are enumerated for quick identification, but + * combination values are left to the `number` union type. + * + * @public + */ +export type TraitBitVector = HttpLabelBitMask | IdempotentBitMask | IdempotencyTokenBitMask | SensitiveBitMask | HttpPayloadBitMask | HttpResponseCodeBitMask | HttpQueryParamsBitMask | number; +/** + * @public + */ +export type HttpLabelBitMask = 1; +/** + * @public + */ +export type IdempotentBitMask = 2; +/** + * @public + */ +export type IdempotencyTokenBitMask = 4; +/** + * @public + */ +export type SensitiveBitMask = 8; +/** + * @public + */ +export type HttpPayloadBitMask = 16; +/** + * @public + */ +export type HttpResponseCodeBitMask = 32; +/** + * @public + */ +export type HttpQueryParamsBitMask = 64; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/serde.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/serde.d.ts new file mode 100644 index 000000000..2f5e5e116 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/serde.d.ts @@ -0,0 +1,114 @@ +import type { Endpoint } from "./http"; +import type { $ClientProtocol } from "./schema/schema"; +import type { RequestHandler } from "./transfer"; +import type { Decoder, Encoder, Provider } from "./util"; +/** + * @public + * + * Interface for object requires an Endpoint set. + */ +export interface EndpointBearer { + endpoint: Provider; +} +/** + * @public + */ +export interface StreamCollector { + /** + * A function that converts a stream into an array of bytes. + * + * @param stream - The low-level native stream from browser or Nodejs runtime + */ + (stream: any): Promise; +} +/** + * @public + * + * Request and Response serde util functions and settings for AWS services + */ +export interface SerdeContext extends SerdeFunctions, EndpointBearer { + requestHandler: RequestHandler; + disableHostPrefix: boolean; + protocol?: $ClientProtocol; +} +/** + * @public + * + * Serde functions from the client config. + */ +export interface SerdeFunctions { + base64Encoder: Encoder; + base64Decoder: Decoder; + utf8Encoder: Encoder; + utf8Decoder: Decoder; + streamCollector: StreamCollector; +} +/** + * @public + */ +export interface RequestSerializer { + /** + * Converts the provided `input` into a request object + * + * @param input - The user input to serialize. + * + * @param context - Context containing runtime-specific util functions. + */ + (input: any, context: Context): Promise; +} +/** + * @public + */ +export interface ResponseDeserializer { + /** + * Converts the output of an operation into JavaScript types. + * + * @param output - The HTTP response received from the service + * + * @param context - context containing runtime-specific util functions. + */ + (output: ResponseType, context: Context): Promise; +} +/** + * The interface contains mix-in utility functions to transfer the runtime-specific + * stream implementation to specified format. Each stream can ONLY be transformed + * once. + * @public + */ +export interface SdkStreamMixin { + transformToByteArray: () => Promise; + transformToString: (encoding?: string) => Promise; + transformToWebStream: () => ReadableStream; +} +/** + * @public + * + * The type describing a runtime-specific stream implementation with mix-in + * utility functions. + */ +export type SdkStream = BaseStream & SdkStreamMixin; +/** + * @public + * + * Indicates that the member of type T with + * key StreamKey have been extended + * with the SdkStreamMixin helper methods. + */ +export type WithSdkStreamMixin = { + [key in keyof T]: key extends StreamKey ? SdkStream : T[key]; +}; +/** + * Interface for internal function to inject stream utility functions + * implementation + * + * @internal + */ +export interface SdkStreamMixinInjector { + (stream: unknown): SdkStreamMixin; +} +/** + * @internal + */ +export interface SdkStreamSerdeContext { + sdkStreamMixin: SdkStreamMixinInjector; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/shapes.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/shapes.d.ts new file mode 100644 index 000000000..86dec3771 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/shapes.d.ts @@ -0,0 +1,82 @@ +import type { HttpResponse } from "./http"; +import type { MetadataBearer } from "./response"; +/** + * @public + * + * A document type represents an untyped JSON-like value. + * + * Not all protocols support document types, and the serialization format of a + * document type is protocol specific. All JSON protocols SHOULD support + * document types and they SHOULD serialize document types inline as normal + * JSON values. + */ +export type DocumentType = null | boolean | number | string | DocumentType[] | { + [prop: string]: DocumentType; +}; +/** + * @public + * + * A structure shape with the error trait. + * https://smithy.io/2.0/spec/behavior-traits.html#smithy-api-retryable-trait + */ +export interface RetryableTrait { + /** + * Indicates that the error is a retryable throttling error. + */ + readonly throttling?: boolean; +} +/** + * @public + * + * Type that is implemented by all Smithy shapes marked with the + * error trait. + * @deprecated + */ +export interface SmithyException { + /** + * The shape ID name of the exception. + */ + readonly name: string; + /** + * Whether the client or server are at fault. + */ + readonly $fault: "client" | "server"; + /** + * The service that encountered the exception. + */ + readonly $service?: string; + /** + * Indicates that an error MAY be retried by the client. + */ + readonly $retryable?: RetryableTrait; + /** + * Reference to low-level HTTP response object. + */ + readonly $response?: HttpResponse; +} +/** + * @public + * + * @deprecated See {@link https://aws.amazon.com/blogs/developer/service-error-handling-modular-aws-sdk-js/} + * + * This type should not be used in your application. + * Users of the AWS SDK for JavaScript v3 service clients should prefer to + * use the specific Exception classes corresponding to each operation. + * These can be found as code in the deserializer for the operation's Command class, + * or as declarations in the service model file in codegen/sdk-codegen/aws-models. + * + * If no exceptions are enumerated by a particular Command operation, + * the base exception for the service should be used. Each client exports + * a base ServiceException prefixed with the service name. + */ +export type SdkError = Error & Partial & Partial & { + $metadata?: Partial["$metadata"] & { + /** + * If present, will have value of true and indicates that the error resulted in a + * correction of the clock skew, a.k.a. config.systemClockOffset. + * This is specific to AWS SDK and sigv4. + */ + readonly clockSkewCorrected?: true; + }; + cause?: Error; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/signature.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/signature.d.ts new file mode 100644 index 000000000..df788de8d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/signature.d.ts @@ -0,0 +1,155 @@ +import type { Message } from "./eventStream"; +import type { HttpRequest } from "./http"; +/** + * @public + * + * A `Date` object, a unix (epoch) timestamp in seconds, or a string that can be + * understood by the JavaScript `Date` constructor. + */ +export type DateInput = number | string | Date; +/** + * @public + */ +export interface SigningArguments { + /** + * The date and time to be used as signature metadata. This value should be + * a Date object, a unix (epoch) timestamp, or a string that can be + * understood by the JavaScript `Date` constructor.If not supplied, the + * value returned by `new Date()` will be used. + */ + signingDate?: DateInput; + /** + * The service signing name. It will override the service name of the signer + * in current invocation + */ + signingService?: string; + /** + * The region name to sign the request. It will override the signing region of the + * signer in current invocation + */ + signingRegion?: string; +} +/** + * @public + */ +export interface RequestSigningArguments extends SigningArguments { + /** + * A set of strings whose members represents headers that cannot be signed. + * All headers in the provided request will have their names converted to + * lower case and then checked for existence in the unsignableHeaders set. + */ + unsignableHeaders?: Set; + /** + * A set of strings whose members represents headers that should be signed. + * Any values passed here will override those provided via unsignableHeaders, + * allowing them to be signed. + * + * All headers in the provided request will have their names converted to + * lower case before signing. + */ + signableHeaders?: Set; +} +/** + * @public + */ +export interface RequestPresigningArguments extends RequestSigningArguments { + /** + * The number of seconds before the presigned URL expires + */ + expiresIn?: number; + /** + * A set of strings whose representing headers that should not be hoisted + * to presigned request's query string. If not supplied, the presigner + * moves all the AWS-specific headers (starting with `x-amz-`) to the request + * query string. If supplied, these headers remain in the presigned request's + * header. + * All headers in the provided request will have their names converted to + * lower case and then checked for existence in the unhoistableHeaders set. + */ + unhoistableHeaders?: Set; + /** + * This overrides any headers with the same name(s) set by unhoistableHeaders. + * These headers will be hoisted into the query string and signed. + */ + hoistableHeaders?: Set; +} +/** + * @public + */ +export interface EventSigningArguments extends SigningArguments { + priorSignature: string; +} +/** + * @public + */ +export interface RequestPresigner { + /** + * Signs a request for future use. + * + * The request will be valid until either the provided `expiration` time has + * passed or the underlying credentials have expired. + * + * @param requestToSign - The request that should be signed. + * @param options - Additional signing options. + */ + presign(requestToSign: HttpRequest, options?: RequestPresigningArguments): Promise; +} +/** + * @public + * + * An object that signs request objects with AWS credentials using one of the + * AWS authentication protocols. + */ +export interface RequestSigner { + /** + * Sign the provided request for immediate dispatch. + */ + sign(requestToSign: HttpRequest, options?: RequestSigningArguments): Promise; +} +/** + * @public + */ +export interface StringSigner { + /** + * Sign the provided `stringToSign` for use outside of the context of + * request signing. Typical uses include signed policy generation. + */ + sign(stringToSign: string, options?: SigningArguments): Promise; +} +/** + * @public + */ +export interface FormattedEvent { + headers: Uint8Array; + payload: Uint8Array; +} +/** + * @public + */ +export interface EventSigner { + /** + * Sign the individual event of the event stream. + */ + sign(event: FormattedEvent, options: EventSigningArguments): Promise; +} +/** + * @public + */ +export interface SignableMessage { + message: Message; + priorSignature: string; +} +/** + * @public + */ +export interface SignedMessage { + message: Message; + signature: string; +} +/** + * @public + */ +export interface MessageSigner { + signMessage(message: SignableMessage, args: SigningArguments): Promise; + sign(event: SignableMessage, options: SigningArguments): Promise; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/stream.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/stream.d.ts new file mode 100644 index 000000000..6b1fda938 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/stream.d.ts @@ -0,0 +1,22 @@ +import type { ChecksumConstructor } from "./checksum"; +import type { HashConstructor, StreamHasher } from "./crypto"; +import type { BodyLengthCalculator, Encoder } from "./util"; +/** + * @public + */ +export interface GetAwsChunkedEncodingStreamOptions { + base64Encoder?: Encoder; + bodyLengthChecker: BodyLengthCalculator; + checksumAlgorithmFn?: ChecksumConstructor | HashConstructor; + checksumLocationName?: string; + streamHasher?: StreamHasher; +} +/** + * @public + * + * A function that returns Readable Stream which follows aws-chunked encoding stream. + * It optionally adds checksum if options are provided. + */ +export interface GetAwsChunkedEncodingStream { + (readableStream: StreamType, options: GetAwsChunkedEncodingStreamOptions): StreamType; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-common-types.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-common-types.d.ts new file mode 100644 index 000000000..a93a8ca1c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-common-types.d.ts @@ -0,0 +1,32 @@ +import type { Readable } from "stream"; +import type { BlobOptionalType, ReadableStreamOptionalType } from "../externals-check/browser-externals-check"; +/** + * @public + * + * This is the union representing the modeled blob type with streaming trait + * in a generic format that does not relate to HTTP input or output payloads. + * + * Note: the non-streaming blob type is represented by Uint8Array, but because + * the streaming blob type is always in the request/response paylod, it has + * historically been handled with different types. + * + * @see https://smithy.io/2.0/spec/simple-types.html#blob + * + * For compatibility with its historical representation, it must contain at least + * Readble (Node.js), Blob (browser), and ReadableStream (browser). + * + * @see StreamingPayloadInputTypes for FAQ about mixing types from multiple environments. + */ +export type StreamingBlobTypes = NodeJsRuntimeStreamingBlobTypes | BrowserRuntimeStreamingBlobTypes; +/** + * @public + * + * Node.js streaming blob type. + */ +export type NodeJsRuntimeStreamingBlobTypes = Readable; +/** + * @public + * + * Browser streaming blob types. + */ +export type BrowserRuntimeStreamingBlobTypes = ReadableStreamOptionalType | BlobOptionalType; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-input-types.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-input-types.d.ts new file mode 100644 index 000000000..3bbd58708 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-input-types.d.ts @@ -0,0 +1,60 @@ +import type { Readable } from "stream"; +import type { BlobOptionalType, ReadableStreamOptionalType } from "../externals-check/browser-externals-check"; +/** + * @public + * + * This union represents a superset of the compatible types you + * can use for streaming payload inputs. + * + * FAQ: + * Why does the type union mix mutually exclusive runtime types, namely + * Node.js and browser types? + * + * There are several reasons: + * 1. For backwards compatibility. + * 2. As a convenient compromise solution so that users in either environment may use the types + * without customization. + * 3. The SDK does not have static type information about the exact implementation + * of the HTTP RequestHandler being used in your client(s) (e.g. fetch, XHR, node:http, or node:http2), + * given that it is chosen at runtime. There are multiple possible request handlers + * in both the Node.js and browser runtime environments. + * + * Rather than restricting the type to a known common format (Uint8Array, for example) + * which doesn't include a universal streaming format in the currently supported Node.js versions, + * the type declaration is widened to multiple possible formats. + * It is up to the user to ultimately select a compatible format with the + * runtime and HTTP handler implementation they are using. + * + * Usage: + * The typical solution we expect users to have is to manually narrow the + * type when needed, picking the appropriate one out of the union according to the + * runtime environment and specific request handler. + * There is also the type utility "NodeJsClient", "BrowserClient" and more + * exported from this package. These can be applied at the client level + * to pre-narrow these streaming payload blobs. For usage see the readme.md + * in the root of the \@smithy/types NPM package. + */ +export type StreamingBlobPayloadInputTypes = NodeJsRuntimeStreamingBlobPayloadInputTypes | BrowserRuntimeStreamingBlobPayloadInputTypes; +/** + * @public + * + * Streaming payload input types in the Node.js environment. + * These are derived from the types compatible with the request body used by node:http. + * + * Note: not all types are signable by the standard SignatureV4 signer when + * used as the request body. For example, in Node.js a Readable stream + * is not signable by the default signer. + * They are included in the union because it may be intended in some cases, + * but the expected types are primarily string, Uint8Array, and Buffer. + * + * Additional details may be found in the internal + * function "getPayloadHash" in the SignatureV4 module. + */ +export type NodeJsRuntimeStreamingBlobPayloadInputTypes = string | Uint8Array | Buffer | Readable; +/** + * @public + * + * Streaming payload input types in the browser environment. + * These are derived from the types compatible with fetch's Request.body. + */ +export type BrowserRuntimeStreamingBlobPayloadInputTypes = string | Uint8Array | ReadableStreamOptionalType | BlobOptionalType; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-output-types.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-output-types.d.ts new file mode 100644 index 000000000..54ab1284e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-output-types.d.ts @@ -0,0 +1,51 @@ +import type { IncomingMessage } from "http"; +import type { Readable } from "stream"; +import type { BlobOptionalType, ReadableStreamOptionalType } from "../externals-check/browser-externals-check"; +import type { SdkStream } from "../serde"; +/** + * @public + * + * This union represents a superset of the types you may receive + * in streaming payload outputs. + * + * @see StreamingPayloadInputTypes for FAQ about mixing types from multiple environments. + * + * To highlight the upstream docs about the SdkStream mixin: + * + * The interface contains mix-in (via Object.assign) methods to transform the runtime-specific + * stream implementation to specified format. Each stream can ONLY be transformed + * once. + * + * The available methods are described on the SdkStream type via SdkStreamMixin. + */ +export type StreamingBlobPayloadOutputTypes = NodeJsRuntimeStreamingBlobPayloadOutputTypes | BrowserRuntimeStreamingBlobPayloadOutputTypes; +/** + * @public + * + * Streaming payload output types in the Node.js environment. + * + * This is by default the IncomingMessage type from node:http responses when + * using the default node-http-handler in Node.js environments. + * + * It can be other Readable types like node:http2's ClientHttp2Stream + * such as when using the node-http2-handler. + * + * The SdkStreamMixin adds methods on this type to help transform (collect) it to + * other formats. + */ +export type NodeJsRuntimeStreamingBlobPayloadOutputTypes = SdkStream; +/** + * @public + * + * Streaming payload output types in the browser environment. + * + * This is by default fetch's Response.body type (ReadableStream) when using + * the default fetch-http-handler in browser-like environments. + * + * It may be a Blob, such as when using the XMLHttpRequest handler + * and receiving an arraybuffer response body. + * + * The SdkStreamMixin adds methods on this type to help transform (collect) it to + * other formats. + */ +export type BrowserRuntimeStreamingBlobPayloadOutputTypes = SdkStream; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/transfer.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/transfer.d.ts new file mode 100644 index 000000000..462ee23c5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/transfer.d.ts @@ -0,0 +1,41 @@ +/** + * @public + */ +export type RequestHandlerOutput = { + response: ResponseType; +}; +/** + * @public + */ +export interface RequestHandler { + /** + * metadata contains information of a handler. For example + * 'h2' refers this handler is for handling HTTP/2 requests, + * whereas 'h1' refers handling HTTP1 requests + */ + metadata?: RequestHandlerMetadata; + destroy?: () => void; + handle: (request: RequestType, handlerOptions?: HandlerOptions) => Promise>; +} +/** + * @public + */ +export interface RequestHandlerMetadata { + handlerProtocol: RequestHandlerProtocol | string; +} +/** + * @public + * Values from ALPN Protocol IDs. + * @see https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids + */ +export declare enum RequestHandlerProtocol { + HTTP_0_9 = "http/0.9", + HTTP_1_0 = "http/1.0", + TDS_8_0 = "tds/8.0" +} +/** + * @public + */ +export interface RequestContext { + destination: URL; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/transform/client-method-transforms.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/transform/client-method-transforms.d.ts new file mode 100644 index 000000000..f9424c48f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/transform/client-method-transforms.d.ts @@ -0,0 +1,26 @@ +import type { CommandIO } from "../command"; +import type { MetadataBearer } from "../response"; +import type { StreamingBlobPayloadOutputTypes } from "../streaming-payload/streaming-blob-payload-output-types"; +import type { Transform } from "./type-transform"; +/** + * @internal + * + * Narrowed version of InvokeFunction used in Client::send. + */ +export interface NarrowedInvokeFunction { + (command: CommandIO, options?: HttpHandlerOptions): Promise>; + (command: CommandIO, cb: (err: unknown, data?: Transform) => void): void; + (command: CommandIO, options: HttpHandlerOptions, cb: (err: unknown, data?: Transform) => void): void; + (command: CommandIO, options?: HttpHandlerOptions, cb?: (err: unknown, data?: Transform) => void): Promise> | void; +} +/** + * @internal + * + * Narrowed version of InvokeMethod used in aggregated Client methods. + */ +export interface NarrowedInvokeMethod { + (input: InputType, options?: HttpHandlerOptions): Promise>; + (input: InputType, cb: (err: unknown, data?: Transform) => void): void; + (input: InputType, options: HttpHandlerOptions, cb: (err: unknown, data?: Transform) => void): void; + (input: InputType, options?: HttpHandlerOptions, cb?: (err: unknown, data?: OutputType) => void): Promise> | void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/transform/client-payload-blob-type-narrow.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/transform/client-payload-blob-type-narrow.d.ts new file mode 100644 index 000000000..28d92f682 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/transform/client-payload-blob-type-narrow.d.ts @@ -0,0 +1,77 @@ +import type { IncomingMessage } from "http"; +import type { ClientHttp2Stream } from "http2"; +import type { InvokeMethod } from "../client"; +import type { GetOutputType } from "../command"; +import type { HttpHandlerOptions } from "../http"; +import type { SdkStream } from "../serde"; +import type { BrowserRuntimeStreamingBlobPayloadInputTypes, NodeJsRuntimeStreamingBlobPayloadInputTypes, StreamingBlobPayloadInputTypes } from "../streaming-payload/streaming-blob-payload-input-types"; +import type { StreamingBlobPayloadOutputTypes } from "../streaming-payload/streaming-blob-payload-output-types"; +import type { NarrowedInvokeMethod } from "./client-method-transforms"; +import type { Transform } from "./type-transform"; +/** + * @public + * + * Creates a type with a given client type that narrows payload blob output + * types to SdkStream. + * + * This can be used for clients with the NodeHttpHandler requestHandler, + * the default in Node.js when not using HTTP2. + * + * Usage example: + * ```typescript + * const client = new YourClient({}) as NodeJsClient; + * ``` + */ +export type NodeJsClient = NarrowPayloadBlobTypes, ClientType>; +/** + * @public + * Variant of NodeJsClient for node:http2. + */ +export type NodeJsHttp2Client = NarrowPayloadBlobTypes, ClientType>; +/** + * @public + * + * Creates a type with a given client type that narrows payload blob output + * types to SdkStream. + * + * This can be used for clients with the FetchHttpHandler requestHandler, + * which is the default in browser environments. + * + * Usage example: + * ```typescript + * const client = new YourClient({}) as BrowserClient; + * ``` + */ +export type BrowserClient = NarrowPayloadBlobTypes, ClientType>; +/** + * @public + * + * Variant of BrowserClient for XMLHttpRequest. + */ +export type BrowserXhrClient = NarrowPayloadBlobTypes, ClientType>; +/** + * @public + * + * @deprecated use NarrowPayloadBlobTypes. + * + * Narrow a given Client's blob payload outputs to the given type T. + */ +export type NarrowPayloadBlobOutputType = { + [key in keyof ClientType]: [ClientType[key]] extends [ + InvokeMethod + ] ? NarrowedInvokeMethod : ClientType[key]; +} & { + send(command: Command, options?: any): Promise, StreamingBlobPayloadOutputTypes | undefined, T>>; +}; +/** + * @public + * + * Narrow a Client's blob payload input and output types to I and O. + */ +export type NarrowPayloadBlobTypes = { + [key in keyof ClientType]: [ClientType[key]] extends [ + InvokeMethod + ] ? NarrowedInvokeMethod, FunctionOutputTypes> : ClientType[key]; +} & { + send(command: Command, options?: any): Promise, StreamingBlobPayloadOutputTypes | undefined, O>>; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/transform/exact.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/transform/exact.d.ts new file mode 100644 index 000000000..c8a15d8da --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/transform/exact.d.ts @@ -0,0 +1,6 @@ +/** + * @internal + * + * Checks that A and B extend each other. + */ +export type Exact = [A] extends [B] ? ([B] extends [A] ? true : false) : false; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/transform/mutable.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/transform/mutable.d.ts new file mode 100644 index 000000000..4ba55e345 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/transform/mutable.d.ts @@ -0,0 +1,6 @@ +/** + * @internal + */ +export type Mutable = { + -readonly [Property in keyof Type]: Type[Property]; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/transform/no-undefined.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/transform/no-undefined.d.ts new file mode 100644 index 000000000..a0ec72e84 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/transform/no-undefined.d.ts @@ -0,0 +1,68 @@ +import type { InvokeMethod, InvokeMethodOptionalArgs } from "../client"; +import type { GetOutputType } from "../command"; +import type { DocumentType } from "../shapes"; +/** + * @public + * + * This type is intended as a type helper for generated clients. + * When initializing client, cast it to this type by passing + * the client constructor type as the type parameter. + * + * It will then recursively remove "undefined" as a union type from all + * input and output shapes' members. Note, this does not affect + * any member that is optional (?) such as outputs with no required members. + * + * @example + * ```ts + * const client = new Client({}) as AssertiveClient; + * ``` + */ +export type AssertiveClient = NarrowClientIOTypes; +/** + * @public + * + * This is similar to AssertiveClient but additionally changes all + * output types to (recursive) Required so as to bypass all output nullability guards. + */ +export type UncheckedClient = UncheckedClientOutputTypes; +/** + * @internal + * + * Excludes undefined recursively. + */ +export type NoUndefined = T extends Function ? T : T extends DocumentType ? T : [T] extends [object] ? { + [key in keyof T]: NoUndefined; +} : Exclude; +/** + * @internal + * + * Excludes undefined and optional recursively. + */ +export type RecursiveRequired = T extends Function ? T : T extends DocumentType ? T : [T] extends [object] ? { + [key in keyof T]-?: RecursiveRequired; +} : Exclude; +/** + * @internal + * + * Removes undefined from unions. + */ +type NarrowClientIOTypes = { + [key in keyof ClientType]: [ClientType[key]] extends [ + InvokeMethodOptionalArgs + ] ? InvokeMethodOptionalArgs, NoUndefined> : [ClientType[key]] extends [InvokeMethod] ? InvokeMethod, NoUndefined> : ClientType[key]; +} & { + send(command: Command, options?: any): Promise>>; +}; +/** + * @internal + * + * Removes undefined from unions and adds yolo output types. + */ +type UncheckedClientOutputTypes = { + [key in keyof ClientType]: [ClientType[key]] extends [ + InvokeMethodOptionalArgs + ] ? InvokeMethodOptionalArgs, RecursiveRequired> : [ClientType[key]] extends [InvokeMethod] ? InvokeMethod, RecursiveRequired> : ClientType[key]; +} & { + send(command: Command, options?: any): Promise>>>; +}; +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/transform/type-transform.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/transform/type-transform.d.ts new file mode 100644 index 000000000..90373fb37 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/transform/type-transform.d.ts @@ -0,0 +1,34 @@ +/** + * @public + * + * Transforms any members of the object T having type FromType + * to ToType. This applies only to exact type matches. + * + * This is for the case where FromType is a union and only those fields + * matching the same union should be transformed. + */ +export type Transform = ConditionalRecursiveTransformExact; +/** + * @internal + * + * Returns ToType if T matches exactly with FromType. + */ +type TransformExact = [T] extends [FromType] ? ([FromType] extends [T] ? ToType : T) : T; +/** + * @internal + * + * Applies TransformExact to members of an object recursively. + */ +type RecursiveTransformExact = T extends Function ? T : T extends object ? { + [key in keyof T]: [T[key]] extends [FromType] ? [FromType] extends [T[key]] ? ToType : ConditionalRecursiveTransformExact : ConditionalRecursiveTransformExact; +} : TransformExact; +/** + * @internal + * + * Same as RecursiveTransformExact but does not assign to an object + * unless there is a matching transformed member. + */ +type ConditionalRecursiveTransformExact = [T] extends [ + RecursiveTransformExact +] ? [RecursiveTransformExact] extends [T] ? T : RecursiveTransformExact : RecursiveTransformExact; +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/abort-handler.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/abort-handler.d.ts new file mode 100644 index 000000000..8f19ee0fe --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/abort-handler.d.ts @@ -0,0 +1,7 @@ +import { AbortSignal as DeprecatedAbortSignal } from "./abort"; +/** + * @public + */ +export interface AbortHandler { + (this: AbortSignal | DeprecatedAbortSignal, ev: any): any; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/abort.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/abort.d.ts new file mode 100644 index 000000000..bde20eb91 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/abort.d.ts @@ -0,0 +1,50 @@ +import { AbortHandler } from "./abort-handler"; +/** + * @public + */ +export { AbortHandler }; +/** + * @public + * @deprecated use platform (global) type for AbortSignal. + * + * Holders of an AbortSignal object may query if the associated operation has + * been aborted and register an onabort handler. + * + * @see https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal + */ +export interface AbortSignal { + /** + * Whether the action represented by this signal has been cancelled. + */ + readonly aborted: boolean; + /** + * A function to be invoked when the action represented by this signal has + * been cancelled. + */ + onabort: AbortHandler | Function | null; +} +/** + * @public + * @deprecated use platform (global) type for AbortController. + * + * The AWS SDK uses a Controller/Signal model to allow for cooperative + * cancellation of asynchronous operations. When initiating such an operation, + * the caller can create an AbortController and then provide linked signal to + * subtasks. This allows a single source to communicate to multiple consumers + * that an action has been aborted without dictating how that cancellation + * should be handled. + * + * @see https://developer.mozilla.org/en-US/docs/Web/API/AbortController + */ +export interface AbortController { + /** + * An object that reports whether the action associated with this + * `AbortController` has been cancelled. + */ + readonly signal: AbortSignal; + /** + * Declares the operation associated with this AbortController to have been + * cancelled. + */ + abort(): void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpApiKeyAuth.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpApiKeyAuth.d.ts new file mode 100644 index 000000000..5d74340f4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpApiKeyAuth.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + */ +export declare enum HttpApiKeyAuthLocation { + HEADER = "header", + QUERY = "query" +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthScheme.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthScheme.d.ts new file mode 100644 index 000000000..c5be5324c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthScheme.d.ts @@ -0,0 +1,49 @@ +import { Identity, IdentityProvider } from "../identity/identity"; +import { HandlerExecutionContext } from "../middleware"; +import { HttpSigner } from "./HttpSigner"; +import { IdentityProviderConfig } from "./IdentityProviderConfig"; +/** + * ID for {@link HttpAuthScheme} + * @internal + */ +export type HttpAuthSchemeId = string; +/** + * Interface that defines an HttpAuthScheme + * @internal + */ +export interface HttpAuthScheme { + /** + * ID for an HttpAuthScheme, typically the absolute shape ID of a Smithy auth trait. + */ + schemeId: HttpAuthSchemeId; + /** + * Gets the IdentityProvider corresponding to an HttpAuthScheme. + */ + identityProvider(config: IdentityProviderConfig): IdentityProvider | undefined; + /** + * HttpSigner corresponding to an HttpAuthScheme. + */ + signer: HttpSigner; +} +/** + * Interface that defines the identity and signing properties when selecting + * an HttpAuthScheme. + * @internal + */ +export interface HttpAuthOption { + schemeId: HttpAuthSchemeId; + identityProperties?: Record; + signingProperties?: Record; + propertiesExtractor?: (config: TConfig, context: TContext) => { + identityProperties?: Record; + signingProperties?: Record; + }; +} +/** + * @internal + */ +export interface SelectedHttpAuthScheme { + httpAuthOption: HttpAuthOption; + identity: Identity; + signer: HttpSigner; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthSchemeProvider.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthSchemeProvider.d.ts new file mode 100644 index 000000000..710dc8f35 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthSchemeProvider.d.ts @@ -0,0 +1,20 @@ +import { HandlerExecutionContext } from "../middleware"; +import { HttpAuthOption } from "./HttpAuthScheme"; +/** + * @internal + */ +export interface HttpAuthSchemeParameters { + operation?: string; +} +/** + * @internal + */ +export interface HttpAuthSchemeProvider { + (authParameters: TParameters): HttpAuthOption[]; +} +/** + * @internal + */ +export interface HttpAuthSchemeParametersProvider { + (config: TConfig, context: TContext, input: TInput): Promise; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpSigner.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpSigner.d.ts new file mode 100644 index 000000000..ea2969cb3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpSigner.d.ts @@ -0,0 +1,41 @@ +import { HttpRequest, HttpResponse } from "../http"; +import { Identity } from "../identity/identity"; +/** + * @internal + */ +export interface ErrorHandler { + (signingProperties: Record): (error: E) => never; +} +/** + * @internal + */ +export interface SuccessHandler { + (httpResponse: HttpResponse | unknown, signingProperties: Record): void; +} +/** + * Interface to sign identity and signing properties. + * @internal + */ +export interface HttpSigner { + /** + * Signs an HttpRequest with an identity and signing properties. + * @param httpRequest request to sign + * @param identity identity to sing the request with + * @param signingProperties property bag for signing + * @returns signed request in a promise + */ + sign(httpRequest: HttpRequest, identity: Identity, signingProperties: Record): Promise; + /** + * Handler that executes after the {@link HttpSigner.sign} invocation and corresponding + * middleware throws an error. + * The error handler is expected to throw the error it receives, so the return type of the error handler is `never`. + * @internal + */ + errorHandler?: ErrorHandler; + /** + * Handler that executes after the {@link HttpSigner.sign} invocation and corresponding + * middleware succeeds. + * @internal + */ + successHandler?: SuccessHandler; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/auth/IdentityProviderConfig.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/auth/IdentityProviderConfig.d.ts new file mode 100644 index 000000000..663d2ec65 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/auth/IdentityProviderConfig.d.ts @@ -0,0 +1,14 @@ +import { Identity, IdentityProvider } from "../identity/identity"; +import { HttpAuthSchemeId } from "./HttpAuthScheme"; +/** + * Interface to get an IdentityProvider for a specified HttpAuthScheme + * @internal + */ +export interface IdentityProviderConfig { + /** + * Get the IdentityProvider for a specified HttpAuthScheme. + * @param schemeId schemeId of the HttpAuthScheme + * @returns IdentityProvider or undefined if HttpAuthScheme is not found + */ + getIdentityProvider(schemeId: HttpAuthSchemeId): IdentityProvider | undefined; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/auth/auth.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/auth/auth.d.ts new file mode 100644 index 000000000..2aaabbcbb --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/auth/auth.d.ts @@ -0,0 +1,57 @@ +/** + * @internal + * + * Authentication schemes represent a way that the service will authenticate the customer’s identity. + */ +export interface AuthScheme { + /** + * @example "sigv4a" or "sigv4" + */ + name: "sigv4" | "sigv4a" | string; + /** + * @example "s3" + */ + signingName: string; + /** + * @example "us-east-1" + */ + signingRegion: string; + /** + * @example ["*"] + * @example ["us-west-2", "us-east-1"] + */ + signingRegionSet?: string[]; + /** + * @deprecated this field was renamed to signingRegion. + */ + signingScope?: never; + properties: Record; +} +/** + * @internal + * @deprecated + */ +export interface HttpAuthDefinition { + /** + * Defines the location of where the Auth is serialized. + */ + in: HttpAuthLocation; + /** + * Defines the name of the HTTP header or query string parameter + * that contains the Auth. + */ + name: string; + /** + * Defines the security scheme to use on the `Authorization` header value. + * This can only be set if the "in" property is set to {@link HttpAuthLocation.HEADER}. + */ + scheme?: string; +} +/** + * @internal + * @deprecated + */ +export declare enum HttpAuthLocation { + HEADER = "header", + QUERY = "query" +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/auth/index.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/auth/index.d.ts new file mode 100644 index 000000000..7436030cf --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/auth/index.d.ts @@ -0,0 +1,6 @@ +export * from "./auth"; +export * from "./HttpApiKeyAuth"; +export * from "./HttpAuthScheme"; +export * from "./HttpAuthSchemeProvider"; +export * from "./HttpSigner"; +export * from "./IdentityProviderConfig"; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/blob/blob-payload-input-types.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/blob/blob-payload-input-types.d.ts new file mode 100644 index 000000000..c76bd3df9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/blob/blob-payload-input-types.d.ts @@ -0,0 +1,40 @@ +import { Readable } from "stream"; +import { BlobOptionalType, ReadableStreamOptionalType } from "../externals-check/browser-externals-check"; +/** + * @public + * + * A union of types that can be used as inputs for the service model + * "blob" type when it represents the request's entire payload or body. + * + * For example, in Lambda::invoke, the payload is modeled as a blob type + * and this union applies to it. + * In contrast, in Lambda::createFunction the Zip file option is a blob type, + * but is not the (entire) payload and this union does not apply. + * + * Note: not all types are signable by the standard SignatureV4 signer when + * used as the request body. For example, in Node.js a Readable stream + * is not signable by the default signer. + * They are included in the union because it may work in some cases, + * but the expected types are primarily string and Uint8Array. + * + * Additional details may be found in the internal + * function "getPayloadHash" in the SignatureV4 module. + */ +export type BlobPayloadInputTypes = string | ArrayBuffer | ArrayBufferView | Uint8Array | NodeJsRuntimeBlobTypes | BrowserRuntimeBlobTypes; +/** + * @public + * + * Additional blob types for the Node.js environment. + */ +export type NodeJsRuntimeBlobTypes = Readable | Buffer; +/** + * @public + * + * Additional blob types for the browser environment. + */ +export type BrowserRuntimeBlobTypes = BlobOptionalType | ReadableStreamOptionalType; +/** + * @internal + * @deprecated renamed to BlobPayloadInputTypes. + */ +export type BlobTypes = BlobPayloadInputTypes; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/checksum.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/checksum.d.ts new file mode 100644 index 000000000..19060090b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/checksum.d.ts @@ -0,0 +1,63 @@ +import { SourceData } from "./crypto"; +/** + * @public + * + * An object that provides a checksum of data provided in chunks to `update`. + * The checksum may be performed incrementally as chunks are received or all + * at once when the checksum is finalized, depending on the underlying + * implementation. + * + * It's recommended to compute checksum incrementally to avoid reading the + * entire payload in memory. + * + * A class that implements this interface may accept an optional secret key in its + * constructor while computing checksum value, when using HMAC. If provided, + * this secret key would be used when computing checksum. + */ +export interface Checksum { + /** + * Constant length of the digest created by the algorithm in bytes. + */ + digestLength?: number; + /** + * Creates a new checksum object that contains a deep copy of the internal + * state of the current `Checksum` object. + */ + copy?(): Checksum; + /** + * Returns the digest of all of the data passed. + */ + digest(): Promise; + /** + * Allows marking a checksum for checksums that support the ability + * to mark and reset. + * + * @param readLimit - The maximum limit of bytes that can be read + * before the mark position becomes invalid. + */ + mark?(readLimit: number): void; + /** + * Resets the checksum to its initial value. + */ + reset(): void; + /** + * Adds a chunk of data for which checksum needs to be computed. + * This can be called many times with new data as it is streamed. + * + * Implementations may override this method which passes second param + * which makes Checksum object stateless. + * + * @param chunk - The buffer to update checksum with. + */ + update(chunk: Uint8Array): void; +} +/** + * @public + * + * A constructor for a Checksum that may be used to calculate an HMAC. Implementing + * classes should not directly hold the provided key in memory beyond the + * lexical scope of the constructor. + */ +export interface ChecksumConstructor { + new (secret?: SourceData): Checksum; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/client.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/client.d.ts new file mode 100644 index 000000000..8bd8f7eb3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/client.d.ts @@ -0,0 +1,57 @@ +import { Command } from "./command"; +import { MiddlewareStack } from "./middleware"; +import { MetadataBearer } from "./response"; +import { OptionalParameter } from "./util"; +/** + * @public + * + * A type which checks if the client configuration is optional. + * If all entries of the client configuration are optional, it allows client creation without passing any config. + */ +export type CheckOptionalClientConfig = OptionalParameter; +/** + * @public + * + * function definition for different overrides of client's 'send' function. + */ +export interface InvokeFunction { + (command: Command, options?: any): Promise; + (command: Command, cb: (err: any, data?: OutputType) => void): void; + (command: Command, options: any, cb: (err: any, data?: OutputType) => void): void; + (command: Command, options?: any, cb?: (err: any, data?: OutputType) => void): Promise | void; +} +/** + * @public + * + * Signature that appears on aggregated clients' methods. + */ +export interface InvokeMethod { + (input: InputType, options?: any): Promise; + (input: InputType, cb: (err: any, data?: OutputType) => void): void; + (input: InputType, options: any, cb: (err: any, data?: OutputType) => void): void; + (input: InputType, options?: any, cb?: (err: any, data?: OutputType) => void): Promise | void; +} +/** + * @public + * + * Signature that appears on aggregated clients' methods when argument is optional. + */ +export interface InvokeMethodOptionalArgs { + (): Promise; + (input: InputType, options?: any): Promise; + (input: InputType, cb: (err: any, data?: OutputType) => void): void; + (input: InputType, options: any, cb: (err: any, data?: OutputType) => void): void; + (input: InputType, options?: any, cb?: (err: any, data?: OutputType) => void): Promise | void; +} +/** + * A general interface for service clients, idempotent to browser or node clients + * This type corresponds to SmithyClient(https://github.com/aws/aws-sdk-js-v3/blob/main/packages/smithy-client/src/client.ts). + * It's provided for using without importing the SmithyClient class. + * @internal + */ +export interface Client { + readonly config: ResolvedClientConfiguration; + middlewareStack: MiddlewareStack; + send: InvokeFunction; + destroy: () => void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/command.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/command.d.ts new file mode 100644 index 000000000..dadbaa42c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/command.d.ts @@ -0,0 +1,28 @@ +import { Handler, MiddlewareStack } from "./middleware"; +import { MetadataBearer } from "./response"; +/** + * @public + */ +export interface Command extends CommandIO { + readonly input: InputType; + readonly middlewareStack: MiddlewareStack; + /** + * This should be OperationSchema from @smithy/types, but would + * create problems with the client transform type adaptors. + */ + readonly schema?: any; + resolveMiddleware(stack: MiddlewareStack, configuration: ResolvedConfiguration, options: any): Handler; +} +/** + * @internal + * + * This is a subset of the Command type used only to detect the i/o types. + */ +export interface CommandIO { + readonly input: InputType; + resolveMiddleware(stack: any, configuration: any, options: any): Handler; +} +/** + * @internal + */ +export type GetOutputType = Command extends CommandIO ? O : never; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/connection/config.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/connection/config.d.ts new file mode 100644 index 000000000..f9d46322f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/connection/config.d.ts @@ -0,0 +1,10 @@ +/** + * @public + */ +export interface ConnectConfiguration { + /** + * The maximum time in milliseconds that the connection phase of a request + * may take before the connection attempt is abandoned. + */ + requestTimeout?: number; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/connection/index.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/connection/index.d.ts new file mode 100644 index 000000000..c6c3ea80f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/connection/index.d.ts @@ -0,0 +1,3 @@ +export * from "./config"; +export * from "./manager"; +export * from "./pool"; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/connection/manager.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/connection/manager.d.ts new file mode 100644 index 000000000..5b1a83725 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/connection/manager.d.ts @@ -0,0 +1,34 @@ +import { RequestContext } from "../transfer"; +import { ConnectConfiguration } from "./config"; +/** + * @public + */ +export interface ConnectionManagerConfiguration { + /** + * Maximum number of allowed concurrent requests per connection. + */ + maxConcurrency?: number; + /** + * Disables concurrent requests per connection. + */ + disableConcurrency?: boolean; +} +/** + * @public + */ +export interface ConnectionManager { + /** + * Retrieves a connection from the connection pool if available, + * otherwise establish a new connection + */ + lease(requestContext: RequestContext, connectionConfiguration: ConnectConfiguration): T; + /** + * Releases the connection back to the pool making it potentially + * re-usable by other requests. + */ + release(requestContext: RequestContext, connection: T): void; + /** + * Destroys the connection manager. All connections will be closed. + */ + destroy(): void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/connection/pool.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/connection/pool.d.ts new file mode 100644 index 000000000..d43530a0c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/connection/pool.d.ts @@ -0,0 +1,32 @@ +/** + * @public + */ +export interface ConnectionPool { + /** + * Retrieve the first connection in the pool + */ + poll(): T | void; + /** + * Release the connection back to the pool making it potentially + * re-usable by other requests. + */ + offerLast(connection: T): void; + /** + * Removes the connection from the pool, and destroys it. + */ + destroy(connection: T): void; + /** + * Implements the iterable protocol and allows arrays to be consumed + * by most syntaxes expecting iterables, such as the spread syntax + * and for...of loops + */ + [Symbol.iterator](): Iterator; +} +/** + * Unused. + * @internal + * @deprecated + */ +export interface CacheKey { + destination: string; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/crypto.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/crypto.d.ts new file mode 100644 index 000000000..874320e33 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/crypto.d.ts @@ -0,0 +1,60 @@ +/** + * @public + */ +export type SourceData = string | ArrayBuffer | ArrayBufferView; +/** + * @public + * + * An object that provides a hash of data provided in chunks to `update`. The + * hash may be performed incrementally as chunks are received or all at once + * when the hash is finalized, depending on the underlying implementation. + * + * @deprecated use {@link Checksum} + */ +export interface Hash { + /** + * Adds a chunk of data to the hash. If a buffer is provided, the `encoding` + * argument will be ignored. If a string is provided without a specified + * encoding, implementations must assume UTF-8 encoding. + * + * Not all encodings are supported on all platforms, though all must support + * UTF-8. + */ + update(toHash: SourceData, encoding?: "utf8" | "ascii" | "latin1"): void; + /** + * Finalizes the hash and provides a promise that will be fulfilled with the + * raw bytes of the calculated hash. + */ + digest(): Promise; +} +/** + * @public + * + * A constructor for a hash that may be used to calculate an HMAC. Implementing + * classes should not directly hold the provided key in memory beyond the + * lexical scope of the constructor. + * + * @deprecated use {@link ChecksumConstructor} + */ +export interface HashConstructor { + new (secret?: SourceData): Hash; +} +/** + * @public + * + * A function that calculates the hash of a data stream. Determining the hash + * will consume the stream, so only replayable streams should be provided to an + * implementation of this interface. + */ +export interface StreamHasher { + (hashCtor: HashConstructor, stream: StreamType): Promise; +} +/** + * @public + * + * A function that returns a promise fulfilled with bytes from a + * cryptographically secure pseudorandom number generator. + */ +export interface randomValues { + (byteLength: number): Promise; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/downlevel-ts3.4/transform/type-transform.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/downlevel-ts3.4/transform/type-transform.d.ts new file mode 100644 index 000000000..f8ddc8a1f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/downlevel-ts3.4/transform/type-transform.d.ts @@ -0,0 +1,41 @@ +/** + * @public + * + * Transforms any members of the object T having type FromType + * to ToType. This applies only to exact type matches. + * + * This is for the case where FromType is a union and only those fields + * matching the same union should be transformed. + */ +export type Transform = RecursiveTransformExact; +/** + * @internal + * + * Returns ToType if T matches exactly with FromType. + */ +type TransformExact = [ + T +] extends [ + FromType +] ? ([ + FromType +] extends [ + T +] ? ToType : T) : T; +/** + * @internal + * + * Applies TransformExact to members of an object recursively. + */ +type RecursiveTransformExact = T extends Function ? T : T extends object ? { + [key in keyof T]: [ + T[key] + ] extends [ + FromType + ] ? [ + FromType + ] extends [ + T[key] + ] ? ToType : RecursiveTransformExact : RecursiveTransformExact; +} : TransformExact; +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/encode.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/encode.d.ts new file mode 100644 index 000000000..27d3a184e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/encode.d.ts @@ -0,0 +1,31 @@ +import { Message } from "./eventStream"; +/** + * @public + */ +export interface MessageEncoder { + encode(message: Message): Uint8Array; +} +/** + * @public + */ +export interface MessageDecoder { + decode(message: ArrayBufferView): Message; + feed(message: ArrayBufferView): void; + endOfStream(): void; + getMessage(): AvailableMessage; + getAvailableMessages(): AvailableMessages; +} +/** + * @public + */ +export interface AvailableMessage { + getMessage(): Message | undefined; + isEndOfStream(): boolean; +} +/** + * @public + */ +export interface AvailableMessages { + getMessages(): Message[]; + isEndOfStream(): boolean; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/endpoint.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/endpoint.d.ts new file mode 100644 index 000000000..4e9373316 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/endpoint.d.ts @@ -0,0 +1,77 @@ +import { AuthScheme } from "./auth/auth"; +/** + * @public + */ +export interface EndpointPartition { + name: string; + dnsSuffix: string; + dualStackDnsSuffix: string; + supportsFIPS: boolean; + supportsDualStack: boolean; +} +/** + * @public + */ +export interface EndpointARN { + partition: string; + service: string; + region: string; + accountId: string; + resourceId: Array; +} +/** + * @public + */ +export declare enum EndpointURLScheme { + HTTP = "http", + HTTPS = "https" +} +/** + * @public + */ +export interface EndpointURL { + /** + * The URL scheme such as http or https. + */ + scheme: EndpointURLScheme; + /** + * The authority is the host and optional port component of the URL. + */ + authority: string; + /** + * The parsed path segment of the URL. + * This value is as-is as provided by the user. + */ + path: string; + /** + * The parsed path segment of the URL. + * This value is guranteed to start and end with a "/". + */ + normalizedPath: string; + /** + * A boolean indicating whether the authority is an IP address. + */ + isIp: boolean; +} +/** + * @public + */ +export type EndpointObjectProperty = string | boolean | { + [key: string]: EndpointObjectProperty; +} | EndpointObjectProperty[]; +/** + * @public + */ +export interface EndpointV2 { + url: URL; + properties?: { + authSchemes?: AuthScheme[]; + } & Record; + headers?: Record; +} +/** + * @public + */ +export type EndpointParameters = { + [name: string]: undefined | boolean | string | string[]; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/endpoints/EndpointRuleObject.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/endpoints/EndpointRuleObject.d.ts new file mode 100644 index 000000000..349558e77 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/endpoints/EndpointRuleObject.d.ts @@ -0,0 +1,27 @@ +import { EndpointObjectProperty } from "../endpoint"; +import { ConditionObject, Expression } from "./shared"; +/** + * @public + */ +export type EndpointObjectProperties = Record; +/** + * @public + */ +export type EndpointObjectHeaders = Record; +/** + * @public + */ +export type EndpointObject = { + url: Expression; + properties?: EndpointObjectProperties; + headers?: EndpointObjectHeaders; +}; +/** + * @public + */ +export type EndpointRuleObject = { + type: "endpoint"; + conditions?: ConditionObject[]; + endpoint: EndpointObject; + documentation?: string; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/endpoints/ErrorRuleObject.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/endpoints/ErrorRuleObject.d.ts new file mode 100644 index 000000000..9ce0733ef --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/endpoints/ErrorRuleObject.d.ts @@ -0,0 +1,10 @@ +import { ConditionObject, Expression } from "./shared"; +/** + * @public + */ +export type ErrorRuleObject = { + type: "error"; + conditions?: ConditionObject[]; + error: Expression; + documentation?: string; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/endpoints/RuleSetObject.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/endpoints/RuleSetObject.d.ts new file mode 100644 index 000000000..669b591db --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/endpoints/RuleSetObject.d.ts @@ -0,0 +1,28 @@ +import { RuleSetRules } from "./TreeRuleObject"; +/** + * @public + */ +export type DeprecatedObject = { + message?: string; + since?: string; +}; +/** + * @public + */ +export type ParameterObject = { + type: "String" | "string" | "Boolean" | "boolean"; + default?: string | boolean; + required?: boolean; + documentation?: string; + builtIn?: string; + deprecated?: DeprecatedObject; +}; +/** + * @public + */ +export type RuleSetObject = { + version: string; + serviceId?: string; + parameters: Record; + rules: RuleSetRules; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/endpoints/TreeRuleObject.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/endpoints/TreeRuleObject.d.ts new file mode 100644 index 000000000..180d306d3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/endpoints/TreeRuleObject.d.ts @@ -0,0 +1,16 @@ +import { EndpointRuleObject } from "./EndpointRuleObject"; +import { ErrorRuleObject } from "./ErrorRuleObject"; +import { ConditionObject } from "./shared"; +/** + * @public + */ +export type RuleSetRules = Array; +/** + * @public + */ +export type TreeRuleObject = { + type: "tree"; + conditions?: ConditionObject[]; + rules: RuleSetRules; + documentation?: string; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/endpoints/index.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/endpoints/index.d.ts new file mode 100644 index 000000000..64d85cf86 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/endpoints/index.d.ts @@ -0,0 +1,5 @@ +export * from "./EndpointRuleObject"; +export * from "./ErrorRuleObject"; +export * from "./RuleSetObject"; +export * from "./shared"; +export * from "./TreeRuleObject"; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/endpoints/shared.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/endpoints/shared.d.ts new file mode 100644 index 000000000..bd1139345 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/endpoints/shared.d.ts @@ -0,0 +1,55 @@ +import { Logger } from "../logger"; +/** + * @public + */ +export type ReferenceObject = { + ref: string; +}; +/** + * @public + */ +export type FunctionObject = { + fn: string; + argv: FunctionArgv; +}; +/** + * @public + */ +export type FunctionArgv = Array; +/** + * @public + */ +export type FunctionReturn = string | boolean | number | { + [key: string]: FunctionReturn; +}; +/** + * @public + */ +export type ConditionObject = FunctionObject & { + assign?: string; +}; +/** + * @public + */ +export type Expression = string | ReferenceObject | FunctionObject; +/** + * @public + */ +export type EndpointParams = Record; +/** + * @public + */ +export type EndpointResolverOptions = { + endpointParams: EndpointParams; + logger?: Logger; +}; +/** + * @public + */ +export type ReferenceRecord = Record; +/** + * @public + */ +export type EvaluateOptions = EndpointResolverOptions & { + referenceRecord: ReferenceRecord; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/eventStream.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/eventStream.d.ts new file mode 100644 index 000000000..7b9af6c67 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/eventStream.d.ts @@ -0,0 +1,137 @@ +import { HttpRequest } from "./http"; +import { FinalizeHandler, FinalizeHandlerArguments, FinalizeHandlerOutput, HandlerExecutionContext } from "./middleware"; +import { MetadataBearer } from "./response"; +/** + * @public + * + * An event stream message. The headers and body properties will always be + * defined, with empty headers represented as an object with no keys and an + * empty body represented as a zero-length Uint8Array. + */ +export interface Message { + headers: MessageHeaders; + body: Uint8Array; +} +/** + * @public + */ +export type MessageHeaders = Record; +/** + * @public + */ +export type HeaderValue = { + type: K; + value: V; +}; +/** + * @public + */ +export type BooleanHeaderValue = HeaderValue<"boolean", boolean>; +/** + * @public + */ +export type ByteHeaderValue = HeaderValue<"byte", number>; +/** + * @public + */ +export type ShortHeaderValue = HeaderValue<"short", number>; +/** + * @public + */ +export type IntegerHeaderValue = HeaderValue<"integer", number>; +/** + * @public + */ +export type LongHeaderValue = HeaderValue<"long", Int64>; +/** + * @public + */ +export type BinaryHeaderValue = HeaderValue<"binary", Uint8Array>; +/** + * @public + */ +export type StringHeaderValue = HeaderValue<"string", string>; +/** + * @public + */ +export type TimestampHeaderValue = HeaderValue<"timestamp", Date>; +/** + * @public + */ +export type UuidHeaderValue = HeaderValue<"uuid", string>; +/** + * @public + */ +export type MessageHeaderValue = BooleanHeaderValue | ByteHeaderValue | ShortHeaderValue | IntegerHeaderValue | LongHeaderValue | BinaryHeaderValue | StringHeaderValue | TimestampHeaderValue | UuidHeaderValue; +/** + * @public + */ +export interface Int64 { + readonly bytes: Uint8Array; + valueOf: () => number; + toString: () => string; +} +/** + * @public + * + * Util functions for serializing or deserializing event stream + */ +export interface EventStreamSerdeContext { + eventStreamMarshaller: EventStreamMarshaller; +} +/** + * @public + * + * A function which deserializes binary event stream message into modeled shape. + */ +export interface EventStreamMarshallerDeserFn { + (body: StreamType, deserializer: (input: Record) => Promise): AsyncIterable; +} +/** + * @public + * + * A function that serializes modeled shape into binary stream message. + */ +export interface EventStreamMarshallerSerFn { + (input: AsyncIterable, serializer: (event: T) => Message): StreamType; +} +/** + * @public + * + * An interface which provides functions for serializing and deserializing binary event stream + * to/from corresponsing modeled shape. + */ +export interface EventStreamMarshaller { + deserialize: EventStreamMarshallerDeserFn; + serialize: EventStreamMarshallerSerFn; +} +/** + * @public + */ +export interface EventStreamRequestSigner { + sign(request: HttpRequest): Promise; +} +/** + * @public + */ +export interface EventStreamPayloadHandler { + handle: (next: FinalizeHandler, args: FinalizeHandlerArguments, context?: HandlerExecutionContext) => Promise>; +} +/** + * @public + */ +export interface EventStreamPayloadHandlerProvider { + (options: any): EventStreamPayloadHandler; +} +/** + * @public + */ +export interface EventStreamSerdeProvider { + (options: any): EventStreamMarshaller; +} +/** + * @public + */ +export interface EventStreamSignerProvider { + (options: any): EventStreamRequestSigner; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/extensions/checksum.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/extensions/checksum.d.ts new file mode 100644 index 000000000..a459e5d9e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/extensions/checksum.d.ts @@ -0,0 +1,58 @@ +import { ChecksumConstructor } from "../checksum"; +import { HashConstructor } from "../crypto"; +/** + * @internal + */ +export declare enum AlgorithmId { + MD5 = "md5", + CRC32 = "crc32", + CRC32C = "crc32c", + SHA1 = "sha1", + SHA256 = "sha256" +} +/** + * @internal + */ +export interface ChecksumAlgorithm { + algorithmId(): AlgorithmId | string; + checksumConstructor(): ChecksumConstructor | HashConstructor; +} +/** + * @deprecated unused. + * @internal + */ +type ChecksumConfigurationLegacy = { + [other in string | number]: any; +}; +/** + * @internal + */ +export interface ChecksumConfiguration extends ChecksumConfigurationLegacy { + addChecksumAlgorithm(algo: ChecksumAlgorithm): void; + checksumAlgorithms(): ChecksumAlgorithm[]; +} +/** + * @deprecated will be removed for implicit type. + * @internal + */ +type GetChecksumConfigurationType = (runtimeConfig: Partial<{ + sha256: ChecksumConstructor | HashConstructor; + md5: ChecksumConstructor | HashConstructor; +}>) => ChecksumConfiguration; +/** + * @internal + * @deprecated will be moved to smithy-client. + */ +export declare const getChecksumConfiguration: GetChecksumConfigurationType; +/** + * @internal + * @deprecated will be removed for implicit type. + */ +type ResolveChecksumRuntimeConfigType = (clientConfig: ChecksumConfiguration) => any; +/** + * @internal + * + * @deprecated will be moved to smithy-client. + */ +export declare const resolveChecksumRuntimeConfig: ResolveChecksumRuntimeConfigType; +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultClientConfiguration.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultClientConfiguration.d.ts new file mode 100644 index 000000000..12eb92487 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultClientConfiguration.d.ts @@ -0,0 +1,33 @@ +import { ChecksumConfiguration } from "./checksum"; +/** + * @deprecated will be replaced by DefaultExtensionConfiguration. + * @internal + * + * Default client configuration consisting various configurations for modifying a service client + */ +export interface DefaultClientConfiguration extends ChecksumConfiguration { +} +/** + * @deprecated will be removed for implicit type. + */ +type GetDefaultConfigurationType = (runtimeConfig: any) => DefaultClientConfiguration; +/** + * @deprecated moving to @smithy/smithy-client. + * @internal + * + * Helper function to resolve default client configuration from runtime config + * + */ +export declare const getDefaultClientConfiguration: GetDefaultConfigurationType; +/** + * @deprecated will be removed for implicit type. + */ +type ResolveDefaultRuntimeConfigType = (clientConfig: DefaultClientConfiguration) => any; +/** + * @deprecated moving to @smithy/smithy-client. + * @internal + * + * Helper function to resolve runtime config from default client configuration + */ +export declare const resolveDefaultRuntimeConfig: ResolveDefaultRuntimeConfigType; +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultExtensionConfiguration.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultExtensionConfiguration.d.ts new file mode 100644 index 000000000..0e6fa0d39 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultExtensionConfiguration.d.ts @@ -0,0 +1,9 @@ +import { ChecksumConfiguration } from "./checksum"; +import { RetryStrategyConfiguration } from "./retry"; +/** + * @internal + * + * Default extension configuration consisting various configurations for modifying a service client + */ +export interface DefaultExtensionConfiguration extends ChecksumConfiguration, RetryStrategyConfiguration { +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/extensions/index.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/extensions/index.d.ts new file mode 100644 index 000000000..cce65a1ce --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/extensions/index.d.ts @@ -0,0 +1,4 @@ +export * from "./defaultClientConfiguration"; +export * from "./defaultExtensionConfiguration"; +export { AlgorithmId, ChecksumAlgorithm, ChecksumConfiguration } from "./checksum"; +export { RetryStrategyConfiguration } from "./retry"; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/extensions/retry.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/extensions/retry.d.ts new file mode 100644 index 000000000..8b91f1c0d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/extensions/retry.d.ts @@ -0,0 +1,18 @@ +import { RetryStrategyV2 } from "../retry"; +import { Provider, RetryStrategy } from "../util"; +/** + * A configuration interface with methods called by runtime extension + * @internal + */ +export interface RetryStrategyConfiguration { + /** + * Set retry strategy used for all http requests + * @param retryStrategy + */ + setRetryStrategy(retryStrategy: Provider): void; + /** + * Get retry strategy used for all http requests + * @param retryStrategy + */ + retryStrategy(): Provider; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/externals-check/browser-externals-check.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/externals-check/browser-externals-check.d.ts new file mode 100644 index 000000000..9b3b597a7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/externals-check/browser-externals-check.d.ts @@ -0,0 +1,35 @@ +import { Exact } from "../transform/exact"; +/** + * @public + * + * A checked type that resolves to Blob if it is defined as more than a stub, otherwise + * resolves to 'never' so as not to widen the type of unions containing Blob + * excessively. + */ +export type BlobOptionalType = BlobDefined extends true ? Blob : Unavailable; +/** + * @public + * + * A checked type that resolves to ReadableStream if it is defined as more than a stub, otherwise + * resolves to 'never' so as not to widen the type of unions containing ReadableStream + * excessively. + */ +export type ReadableStreamOptionalType = ReadableStreamDefined extends true ? ReadableStream : Unavailable; +/** + * @public + * + * Indicates a type is unavailable if it resolves to this. + */ +export type Unavailable = never; +/** + * @internal + * + * Whether the global types define more than a stub for ReadableStream. + */ +export type ReadableStreamDefined = Exact extends true ? false : true; +/** + * @internal + * + * Whether the global types define more than a stub for Blob. + */ +export type BlobDefined = Exact extends true ? false : true; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/feature-ids.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/feature-ids.d.ts new file mode 100644 index 000000000..19e4bd2d5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/feature-ids.d.ts @@ -0,0 +1,16 @@ +/** + * @internal + */ +export type SmithyFeatures = Partial<{ + RESOURCE_MODEL: "A"; + WAITER: "B"; + PAGINATOR: "C"; + RETRY_MODE_LEGACY: "D"; + RETRY_MODE_STANDARD: "E"; + RETRY_MODE_ADAPTIVE: "F"; + GZIP_REQUEST_COMPRESSION: "L"; + PROTOCOL_RPC_V2_CBOR: "M"; + ENDPOINT_OVERRIDE: "N"; + SIGV4A_SIGNING: "S"; + CREDENTIALS_CODE: "e"; +}>; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/http.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/http.d.ts new file mode 100644 index 000000000..a1d5a500f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/http.d.ts @@ -0,0 +1,113 @@ +import { AbortSignal as DeprecatedAbortSignal } from "./abort"; +import { URI } from "./uri"; +/** + * @public + * + * @deprecated use {@link EndpointV2} from `@smithy/types`. + */ +export interface Endpoint { + protocol: string; + hostname: string; + port?: number; + path: string; + query?: QueryParameterBag; + headers?: HeaderBag; +} +/** + * @public + * + * Interface an HTTP request class. Contains + * addressing information in addition to standard message properties. + */ +export interface HttpRequest extends HttpMessage, URI { + method: string; +} +/** + * @public + * + * Represents an HTTP message as received in reply to a request. Contains a + * numeric status code in addition to standard message properties. + */ +export interface HttpResponse extends HttpMessage { + statusCode: number; + reason?: string; +} +/** + * @public + * + * Represents an HTTP message with headers and an optional static or streaming + * body. body: ArrayBuffer | ArrayBufferView | string | Uint8Array | Readable | ReadableStream; + */ +export interface HttpMessage { + headers: HeaderBag; + body?: any; +} +/** + * @public + * + * A mapping of query parameter names to strings or arrays of strings, with the + * second being used when a parameter contains a list of values. Value can be set + * to null when query is not in key-value pairs shape + */ +export type QueryParameterBag = Record | null>; +/** + * @public + */ +export type FieldOptions = { + name: string; + kind?: FieldPosition; + values?: string[]; +}; +/** + * @public + */ +export declare enum FieldPosition { + HEADER = 0, + TRAILER = 1 +} +/** + * @public + * + * A mapping of header names to string values. Multiple values for the same + * header should be represented as a single string with values separated by + * `, `. + * + * Keys should be considered case insensitive, even if this is not enforced by a + * particular implementation. For example, given the following HeaderBag, where + * keys differ only in case: + * + * ```json + * { + * 'x-request-date': '2000-01-01T00:00:00Z', + * 'X-Request-Date': '2001-01-01T00:00:00Z' + * } + * ``` + * + * The SDK may at any point during processing remove one of the object + * properties in favor of the other. The headers may or may not be combined, and + * the SDK will not deterministically select which header candidate to use. + */ +export type HeaderBag = Record; +/** + * @public + * + * Represents an HTTP message with headers and an optional static or streaming + * body. bode: ArrayBuffer | ArrayBufferView | string | Uint8Array | Readable | ReadableStream; + */ +export interface HttpMessage { + headers: HeaderBag; + body?: any; +} +/** + * @public + * + * Represents the options that may be passed to an Http Handler. + */ +export interface HttpHandlerOptions { + abortSignal?: AbortSignal | DeprecatedAbortSignal; + /** + * The maximum time in milliseconds that the connection phase of a request + * may take before the connection attempt is abandoned. + */ + requestTimeout?: number; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/http/httpHandlerInitialization.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/http/httpHandlerInitialization.d.ts new file mode 100644 index 000000000..def415c48 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/http/httpHandlerInitialization.d.ts @@ -0,0 +1,128 @@ +import { Agent as hAgent, AgentOptions as hAgentOptions } from "http"; +import { Agent as hsAgent, AgentOptions as hsAgentOptions } from "https"; +import { HttpRequest as IHttpRequest } from "../http"; +import { Logger } from "../logger"; +/** + * + * This type represents an alternate client constructor option for the entry + * "requestHandler". Instead of providing an instance of a requestHandler, the user + * may provide the requestHandler's constructor options for either the + * NodeHttpHandler or FetchHttpHandler. + * + * For other RequestHandlers like HTTP2 or WebSocket, + * constructor parameter passthrough is not currently available. + * + * @public + */ +export type RequestHandlerParams = NodeHttpHandlerOptions | FetchHttpHandlerOptions; +/** + * Represents the http options that can be passed to a node http client. + * @public + */ +export interface NodeHttpHandlerOptions { + /** + * The maximum time in milliseconds that the connection phase of a request + * may take before the connection attempt is abandoned. + * Defaults to 0, which disables the timeout. + */ + connectionTimeout?: number; + /** + * The maximum number of milliseconds request & response should take. + * Defaults to 0, which disables the timeout. + * + * If exceeded, a warning will be emitted unless throwOnRequestTimeout=true, + * in which case a TimeoutError will be thrown. + */ + requestTimeout?: number; + /** + * Because requestTimeout was for a long time incorrectly being set as a socket idle timeout, + * users must also opt-in for request timeout thrown errors. + * Without this setting, a breach of the request timeout will be logged as a warning. + */ + throwOnRequestTimeout?: boolean; + /** + * The maximum time in milliseconds that a socket may remain idle before it + * is closed. Defaults to 0, which means no maximum. + * + * This does not affect the server, which may still close the connection due to an idle socket. + */ + socketTimeout?: number; + /** + * Delay before the NodeHttpHandler checks for socket exhaustion, + * and emits a warning if the active sockets and enqueued request count is greater than + * 2x the maxSockets count. + * + * Defaults to connectionTimeout + requestTimeout or 3000ms if those are not set. + */ + socketAcquisitionWarningTimeout?: number; + /** + * You can pass http.Agent or its constructor options. + */ + httpAgent?: hAgent | hAgentOptions; + /** + * You can pass https.Agent or its constructor options. + */ + httpsAgent?: hsAgent | hsAgentOptions; + /** + * Optional logger. + */ + logger?: Logger; +} +/** + * Represents the http options that can be passed to a browser http client. + * @public + */ +export interface FetchHttpHandlerOptions { + /** + * The number of milliseconds a request can take before being automatically + * terminated. + */ + requestTimeout?: number; + /** + * Whether to allow the request to outlive the page. Default value is false. + * + * There may be limitations to the payload size, number of concurrent requests, + * request duration etc. when using keepalive in browsers. + * + * These may change over time, so look for up to date information about + * these limitations before enabling keepalive. + */ + keepAlive?: boolean; + /** + * A string indicating whether credentials will be sent with the request always, never, or + * only when sent to a same-origin URL. + * @see https://developer.mozilla.org/en-US/docs/Web/API/Request/credentials + */ + credentials?: "include" | "omit" | "same-origin" | undefined | string; + /** + * Cache settings for fetch. + * @see https://developer.mozilla.org/en-US/docs/Web/API/Request/cache + */ + cache?: "default" | "force-cache" | "no-cache" | "no-store" | "only-if-cached" | "reload"; + /** + * An optional function that produces additional RequestInit + * parameters for each httpRequest. + * + * This is applied last via merging with Object.assign() and overwrites other values + * set from other sources. + * + * @example + * ```js + * new Client({ + * requestHandler: { + * requestInit(httpRequest) { + * return { cache: "no-store" }; + * } + * } + * }); + * ``` + */ + requestInit?: (httpRequest: IHttpRequest) => RequestInit; +} +declare global { + /** + * interface merging stub. + */ + interface RequestInit { + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/identity/apiKeyIdentity.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/identity/apiKeyIdentity.d.ts new file mode 100644 index 000000000..27750d4e8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/identity/apiKeyIdentity.d.ts @@ -0,0 +1,14 @@ +import { Identity, IdentityProvider } from "../identity/identity"; +/** + * @public + */ +export interface ApiKeyIdentity extends Identity { + /** + * The literal API Key + */ + readonly apiKey: string; +} +/** + * @public + */ +export type ApiKeyIdentityProvider = IdentityProvider; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/identity/awsCredentialIdentity.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/identity/awsCredentialIdentity.d.ts new file mode 100644 index 000000000..7aa5a4b06 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/identity/awsCredentialIdentity.d.ts @@ -0,0 +1,31 @@ +import { Identity, IdentityProvider } from "./identity"; +/** + * @public + */ +export interface AwsCredentialIdentity extends Identity { + /** + * AWS access key ID + */ + readonly accessKeyId: string; + /** + * AWS secret access key + */ + readonly secretAccessKey: string; + /** + * A security or session token to use with these credentials. Usually + * present for temporary credentials. + */ + readonly sessionToken?: string; + /** + * AWS credential scope for this set of credentials. + */ + readonly credentialScope?: string; + /** + * AWS accountId. + */ + readonly accountId?: string; +} +/** + * @public + */ +export type AwsCredentialIdentityProvider = IdentityProvider; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/identity/identity.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/identity/identity.d.ts new file mode 100644 index 000000000..c6fd0d1d4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/identity/identity.d.ts @@ -0,0 +1,15 @@ +/** + * @public + */ +export interface Identity { + /** + * A `Date` when the identity or credential will no longer be accepted. + */ + readonly expiration?: Date; +} +/** + * @public + */ +export interface IdentityProvider { + (identityProperties?: Record): Promise; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/identity/index.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/identity/index.d.ts new file mode 100644 index 000000000..336032034 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/identity/index.d.ts @@ -0,0 +1,4 @@ +export * from "./apiKeyIdentity"; +export * from "./awsCredentialIdentity"; +export * from "./identity"; +export * from "./tokenIdentity"; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/identity/tokenIdentity.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/identity/tokenIdentity.d.ts new file mode 100644 index 000000000..84a74ffaf --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/identity/tokenIdentity.d.ts @@ -0,0 +1,14 @@ +import { Identity, IdentityProvider } from "../identity/identity"; +/** + * @internal + */ +export interface TokenIdentity extends Identity { + /** + * The literal token string + */ + readonly token: string; +} +/** + * @internal + */ +export type TokenIdentityProvider = IdentityProvider; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..2f1f25c67 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/index.d.ts @@ -0,0 +1,43 @@ +export * from "./abort"; +export * from "./auth"; +export * from "./blob/blob-payload-input-types"; +export * from "./checksum"; +export * from "./client"; +export * from "./command"; +export * from "./connection"; +export * from "./crypto"; +export * from "./encode"; +export * from "./endpoint"; +export * from "./endpoints"; +export * from "./eventStream"; +export * from "./extensions"; +export * from "./feature-ids"; +export * from "./http"; +export * from "./http/httpHandlerInitialization"; +export * from "./identity"; +export * from "./logger"; +export * from "./middleware"; +export * from "./pagination"; +export * from "./profile"; +export * from "./response"; +export * from "./retry"; +export * from "./schema/schema"; +export * from "./schema/traits"; +export * from "./schema/schema-deprecated"; +export * from "./schema/sentinels"; +export * from "./schema/static-schemas"; +export * from "./serde"; +export * from "./shapes"; +export * from "./signature"; +export * from "./stream"; +export * from "./streaming-payload/streaming-blob-common-types"; +export * from "./streaming-payload/streaming-blob-payload-input-types"; +export * from "./streaming-payload/streaming-blob-payload-output-types"; +export * from "./transfer"; +export * from "./transform/client-payload-blob-type-narrow"; +export * from "./transform/mutable"; +export * from "./transform/no-undefined"; +export * from "./transform/type-transform"; +export * from "./uri"; +export * from "./util"; +export * from "./waiter"; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/logger.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/logger.d.ts new file mode 100644 index 000000000..f66a664c2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/logger.d.ts @@ -0,0 +1,13 @@ +/** + * @public + * + * Represents a logger object that is available in HandlerExecutionContext + * throughout the middleware stack. + */ +export interface Logger { + trace?: (...content: any[]) => void; + debug: (...content: any[]) => void; + info: (...content: any[]) => void; + warn: (...content: any[]) => void; + error: (...content: any[]) => void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/middleware.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/middleware.d.ts new file mode 100644 index 000000000..ac2cfae0e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/middleware.d.ts @@ -0,0 +1,534 @@ +import { AuthScheme, HttpAuthDefinition } from "./auth/auth"; +import { SelectedHttpAuthScheme } from "./auth/HttpAuthScheme"; +import { Command } from "./command"; +import { EndpointV2 } from "./endpoint"; +import { SmithyFeatures } from "./feature-ids"; +import { Logger } from "./logger"; +import { UserAgent } from "./util"; +/** + * @public + */ +export interface InitializeHandlerArguments { + /** + * User input to a command. Reflects the userland representation of the + * union of data types the command can effectively handle. + */ + input: Input; +} +/** + * @public + */ +export interface InitializeHandlerOutput extends DeserializeHandlerOutput { + output: Output; +} +/** + * @public + */ +export interface SerializeHandlerArguments extends InitializeHandlerArguments { + /** + * The user input serialized as a request object. The request object is unknown, + * so you cannot modify it directly. When work with request, you need to guard its + * type to e.g. HttpRequest with 'instanceof' operand + * + * During the build phase of the execution of a middleware stack, a built + * request may or may not be available. + */ + request?: unknown; +} +/** + * @public + */ +export interface SerializeHandlerOutput extends InitializeHandlerOutput { +} +/** + * @public + */ +export interface BuildHandlerArguments extends FinalizeHandlerArguments { +} +/** + * @public + */ +export interface BuildHandlerOutput extends InitializeHandlerOutput { +} +/** + * @public + */ +export interface FinalizeHandlerArguments extends SerializeHandlerArguments { + /** + * The user input serialized as a request. + */ + request: unknown; +} +/** + * @public + */ +export interface FinalizeHandlerOutput extends InitializeHandlerOutput { +} +/** + * @public + */ +export interface DeserializeHandlerArguments extends FinalizeHandlerArguments { +} +/** + * @public + */ +export interface DeserializeHandlerOutput { + /** + * The raw response object from runtime is deserialized to structured output object. + * The response object is unknown so you cannot modify it directly. When work with + * response, you need to guard its type to e.g. HttpResponse with 'instanceof' operand. + * + * During the deserialize phase of the execution of a middleware stack, a deserialized + * response may or may not be available + */ + response: unknown; + output?: Output; +} +/** + * @public + */ +export interface InitializeHandler { + /** + * Asynchronously converts an input object into an output object. + * + * @param args - An object containing a input to the command as well as any + * associated or previously generated execution artifacts. + */ + (args: InitializeHandlerArguments): Promise>; +} +/** + * @public + */ +export type Handler = InitializeHandler; +/** + * @public + */ +export interface SerializeHandler { + /** + * Asynchronously converts an input object into an output object. + * + * @param args - An object containing a input to the command as well as any + * associated or previously generated execution artifacts. + */ + (args: SerializeHandlerArguments): Promise>; +} +/** + * @public + */ +export interface FinalizeHandler { + /** + * Asynchronously converts an input object into an output object. + * + * @param args - An object containing a input to the command as well as any + * associated or previously generated execution artifacts. + */ + (args: FinalizeHandlerArguments): Promise>; +} +/** + * @public + */ +export interface BuildHandler { + (args: BuildHandlerArguments): Promise>; +} +/** + * @public + */ +export interface DeserializeHandler { + (args: DeserializeHandlerArguments): Promise>; +} +/** + * @public + * + * A factory function that creates functions implementing the `Handler` + * interface. + */ +export interface InitializeMiddleware { + /** + * @param next - The handler to invoke after this middleware has operated on + * the user input and before this middleware operates on the output. + * + * @param context - Invariant data and functions for use by the handler. + */ + (next: InitializeHandler, context: HandlerExecutionContext): InitializeHandler; +} +/** + * @public + * + * A factory function that creates functions implementing the `BuildHandler` + * interface. + */ +export interface SerializeMiddleware { + /** + * @param next - The handler to invoke after this middleware has operated on + * the user input and before this middleware operates on the output. + * + * @param context - Invariant data and functions for use by the handler. + */ + (next: SerializeHandler, context: HandlerExecutionContext): SerializeHandler; +} +/** + * @public + * + * A factory function that creates functions implementing the `FinalizeHandler` + * interface. + */ +export interface FinalizeRequestMiddleware { + /** + * @param next - The handler to invoke after this middleware has operated on + * the user input and before this middleware operates on the output. + * + * @param context - Invariant data and functions for use by the handler. + */ + (next: FinalizeHandler, context: HandlerExecutionContext): FinalizeHandler; +} +/** + * @public + */ +export interface BuildMiddleware { + (next: BuildHandler, context: HandlerExecutionContext): BuildHandler; +} +/** + * @public + */ +export interface DeserializeMiddleware { + (next: DeserializeHandler, context: HandlerExecutionContext): DeserializeHandler; +} +/** + * @public + */ +export type MiddlewareType = InitializeMiddleware | SerializeMiddleware | BuildMiddleware | FinalizeRequestMiddleware | DeserializeMiddleware; +/** + * @public + * + * A factory function that creates the terminal handler atop which a middleware + * stack sits. + */ +export interface Terminalware { + (context: HandlerExecutionContext): DeserializeHandler; +} +/** + * @public + */ +export type Step = "initialize" | "serialize" | "build" | "finalizeRequest" | "deserialize"; +/** + * @public + */ +export type Priority = "high" | "normal" | "low"; +/** + * @public + */ +export interface HandlerOptions { + /** + * Handlers are ordered using a "step" that describes the stage of command + * execution at which the handler will be executed. The available steps are: + * + * - initialize: The input is being prepared. Examples of typical + * initialization tasks include injecting default options computing + * derived parameters. + * - serialize: The input is complete and ready to be serialized. Examples + * of typical serialization tasks include input validation and building + * an HTTP request from user input. + * - build: The input has been serialized into an HTTP request, but that + * request may require further modification. Any request alterations + * will be applied to all retries. Examples of typical build tasks + * include injecting HTTP headers that describe a stable aspect of the + * request, such as `Content-Length` or a body checksum. + * - finalizeRequest: The request is being prepared to be sent over the wire. The + * request in this stage should already be semantically complete and + * should therefore only be altered as match the recipient's + * expectations. Examples of typical finalization tasks include request + * signing and injecting hop-by-hop headers. + * - deserialize: The response has arrived, the middleware here will deserialize + * the raw response object to structured response + * + * Unlike initialization and build handlers, which are executed once + * per operation execution, finalization and deserialize handlers will be + * executed foreach HTTP request sent. + * + * @defaultValue 'initialize' + */ + step?: Step; + /** + * A list of strings to any that identify the general purpose or important + * characteristics of a given handler. + */ + tags?: Array; + /** + * A unique name to refer to a middleware + */ + name?: string; + /** + * @internal + * Aliases allows for middleware to be found by multiple names besides {@link HandlerOptions.name}. + * This allows for references to replaced middleware to continue working, e.g. replacing + * multiple auth-specific middleware with a single generic auth middleware. + */ + aliases?: Array; + /** + * A flag to override the existing middleware with the same name. Without + * setting it, adding middleware with duplicated name will throw an exception. + * @internal + */ + override?: boolean; +} +/** + * @public + */ +export interface AbsoluteLocation { + /** + * By default middleware will be added to individual step in un-guaranteed order. + * In the case that + * + * @defaultValue 'normal' + */ + priority?: Priority; +} +/** + * @public + */ +export type Relation = "before" | "after"; +/** + * @public + */ +export interface RelativeLocation { + /** + * Specify the relation to be before or after a know middleware. + */ + relation: Relation; + /** + * A known middleware name to indicate inserting middleware's location. + */ + toMiddleware: string; +} +/** + * @public + */ +export type RelativeMiddlewareOptions = RelativeLocation & Pick>; +/** + * @public + */ +export interface InitializeHandlerOptions extends HandlerOptions { + step?: "initialize"; +} +/** + * @public + */ +export interface SerializeHandlerOptions extends HandlerOptions { + step: "serialize"; +} +/** + * @public + */ +export interface BuildHandlerOptions extends HandlerOptions { + step: "build"; +} +/** + * @public + */ +export interface FinalizeRequestHandlerOptions extends HandlerOptions { + step: "finalizeRequest"; +} +/** + * @public + */ +export interface DeserializeHandlerOptions extends HandlerOptions { + step: "deserialize"; +} +/** + * @public + * + * A stack storing middleware. It can be resolved into a handler. It supports 2 + * approaches for adding middleware: + * 1. Adding middleware to specific step with `add()`. The order of middleware + * added into same step is determined by order of adding them. If one middleware + * needs to be executed at the front of the step or at the end of step, set + * `priority` options to `high` or `low`. + * 2. Adding middleware to location relative to known middleware with `addRelativeTo()`. + * This is useful when given middleware must be executed before or after specific + * middleware(`toMiddleware`). You can add a middleware relatively to another + * middleware which also added relatively. But eventually, this relative middleware + * chain **must** be 'anchored' by a middleware that added using `add()` API + * with absolute `step` and `priority`. This mothod will throw if specified + * `toMiddleware` is not found. + */ +export interface MiddlewareStack extends Pluggable { + /** + * Add middleware to the stack to be executed during the "initialize" step, + * optionally specifying a priority, tags and name + */ + add(middleware: InitializeMiddleware, options?: InitializeHandlerOptions & AbsoluteLocation): void; + /** + * Add middleware to the stack to be executed during the "serialize" step, + * optionally specifying a priority, tags and name + */ + add(middleware: SerializeMiddleware, options: SerializeHandlerOptions & AbsoluteLocation): void; + /** + * Add middleware to the stack to be executed during the "build" step, + * optionally specifying a priority, tags and name + */ + add(middleware: BuildMiddleware, options: BuildHandlerOptions & AbsoluteLocation): void; + /** + * Add middleware to the stack to be executed during the "finalizeRequest" step, + * optionally specifying a priority, tags and name + */ + add(middleware: FinalizeRequestMiddleware, options: FinalizeRequestHandlerOptions & AbsoluteLocation): void; + /** + * Add middleware to the stack to be executed during the "deserialize" step, + * optionally specifying a priority, tags and name + */ + add(middleware: DeserializeMiddleware, options: DeserializeHandlerOptions & AbsoluteLocation): void; + /** + * Add middleware to a stack position before or after a known middleware,optionally + * specifying name and tags. + */ + addRelativeTo(middleware: MiddlewareType, options: RelativeMiddlewareOptions): void; + /** + * Apply a customization function to mutate the middleware stack, often + * used for customizations that requires mutating multiple middleware. + */ + use(pluggable: Pluggable): void; + /** + * Create a shallow clone of this stack. Step bindings and handler priorities + * and tags are preserved in the copy. + */ + clone(): MiddlewareStack; + /** + * Removes middleware from the stack. + * + * If a string is provided, it will be treated as middleware name. If a middleware + * is inserted with the given name, it will be removed. + * + * If a middleware class is provided, all usages thereof will be removed. + */ + remove(toRemove: MiddlewareType | string): boolean; + /** + * Removes middleware that contains given tag + * + * Multiple middleware will potentially be removed + */ + removeByTag(toRemove: string): boolean; + /** + * Create a stack containing the middlewares in this stack as well as the + * middlewares in the `from` stack. Neither source is modified, and step + * bindings and handler priorities and tags are preserved in the copy. + */ + concat(from: MiddlewareStack): MiddlewareStack; + /** + * Returns a list of the current order of middleware in the stack. + * This does not execute the middleware functions, nor does it + * provide a reference to the stack itself. + */ + identify(): string[]; + /** + * @internal + * + * When an operation is called using this stack, + * it will log its list of middleware to the console using + * the identify function. + * + * @param toggle - set whether to log on resolve. + * If no argument given, returns the current value. + */ + identifyOnResolve(toggle?: boolean): boolean; + /** + * Builds a single handler function from zero or more middleware classes and + * a core handler. The core handler is meant to send command objects to AWS + * services and return promises that will resolve with the operation result + * or be rejected with an error. + * + * When a composed handler is invoked, the arguments will pass through all + * middleware in a defined order, and the return from the innermost handler + * will pass through all middleware in the reverse of that order. + */ + resolve(handler: DeserializeHandler, context: HandlerExecutionContext): InitializeHandler; +} +/** + * @internal + */ +export declare const SMITHY_CONTEXT_KEY = "__smithy_context"; +/** + * @public + * + * Data and helper objects that are not expected to change from one execution of + * a composed handler to another. + */ +export interface HandlerExecutionContext { + /** + * A logger that may be invoked by any handler during execution of an + * operation. + */ + logger?: Logger; + /** + * Name of the service the operation is being sent to. + */ + clientName?: string; + /** + * Name of the operation being executed. + */ + commandName?: string; + /** + * Additional user agent that inferred by middleware. It can be used to save + * the internal user agent sections without overriding the `customUserAgent` + * config in clients. + */ + userAgent?: UserAgent; + /** + * Resolved by the endpointMiddleware function of `@smithy/middleware-endpoint` + * in the serialization stage. + */ + endpointV2?: EndpointV2; + /** + * Set at the same time as endpointV2. + */ + authSchemes?: AuthScheme[]; + /** + * The current auth configuration that has been set by any auth middleware and + * that will prevent from being set more than once. + */ + currentAuthConfig?: HttpAuthDefinition; + /** + * @deprecated do not extend this field, it is a carryover from AWS SDKs. + * Used by DynamoDbDocumentClient. + */ + dynamoDbDocumentClientOptions?: Partial<{ + overrideInputFilterSensitiveLog(...args: any[]): string | void; + overrideOutputFilterSensitiveLog(...args: any[]): string | void; + }>; + /** + * @internal + * Context for Smithy properties. + */ + [SMITHY_CONTEXT_KEY]?: { + service?: string; + operation?: string; + commandInstance?: Command; + selectedHttpAuthScheme?: SelectedHttpAuthScheme; + features?: SmithyFeatures; + /** + * @deprecated + * Do not assign arbitrary members to the Smithy Context, + * fields should be explicitly declared here to avoid collisions. + */ + [key: string]: unknown; + }; + /** + * @deprecated + * Do not assign arbitrary members to the context, since + * they can interfere with existing functionality. + * + * Additional members should instead be declared on the SMITHY_CONTEXT_KEY + * or other reserved keys. + */ + [key: string]: any; +} +/** + * @public + */ +export interface Pluggable { + /** + * A function that mutate the passed in middleware stack. Functions implementing + * this interface can add, remove, modify existing middleware stack from clients + * or commands + */ + applyToStack: (stack: MiddlewareStack) => void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/pagination.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/pagination.d.ts new file mode 100644 index 000000000..6aff8abae --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/pagination.d.ts @@ -0,0 +1,33 @@ +import { Client } from "./client"; +import { Command } from "./command"; +/** + * @public + * + * Expected type definition of a paginator. + */ +export type Paginator = AsyncGenerator; +/** + * @public + * + * Expected paginator configuration passed to an operation. Services will extend + * this interface definition and may type client further. + */ +export interface PaginationConfiguration { + client: Client; + pageSize?: number; + startingToken?: any; + /** + * For some APIs, such as CloudWatchLogs events, the next page token will always + * be present. + * + * When true, this config field will have the paginator stop when the token doesn't change + * instead of when it is not present. + */ + stopOnSameToken?: boolean; + /** + * @param command - reference to the instantiated command. This callback is executed + * prior to sending the command with the paginator's client. + * @returns the original command or a replacement, defaulting to the original command object. + */ + withCommand?: (command: Command) => typeof command | undefined; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/profile.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/profile.d.ts new file mode 100644 index 000000000..b7885d988 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/profile.d.ts @@ -0,0 +1,30 @@ +/** + * @public + */ +export declare enum IniSectionType { + PROFILE = "profile", + SSO_SESSION = "sso-session", + SERVICES = "services" +} +/** + * @public + */ +export type IniSection = Record; +/** + * @public + * + * @deprecated Please use {@link IniSection} + */ +export interface Profile extends IniSection { +} +/** + * @public + */ +export type ParsedIniData = Record; +/** + * @public + */ +export interface SharedConfigFiles { + credentialsFile: ParsedIniData; + configFile: ParsedIniData; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/response.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/response.d.ts new file mode 100644 index 000000000..afcfe8f80 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/response.d.ts @@ -0,0 +1,40 @@ +/** + * @public + */ +export interface ResponseMetadata { + /** + * The status code of the last HTTP response received for this operation. + */ + httpStatusCode?: number; + /** + * A unique identifier for the last request sent for this operation. Often + * requested by AWS service teams to aid in debugging. + */ + requestId?: string; + /** + * A secondary identifier for the last request sent. Used for debugging. + */ + extendedRequestId?: string; + /** + * A tertiary identifier for the last request sent. Used for debugging. + */ + cfId?: string; + /** + * The number of times this operation was attempted. + */ + attempts?: number; + /** + * The total amount of time (in milliseconds) that was spent waiting between + * retry attempts. + */ + totalRetryDelay?: number; +} +/** + * @public + */ +export interface MetadataBearer { + /** + * Metadata pertaining to this request. + */ + $metadata: ResponseMetadata; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/retry.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/retry.d.ts new file mode 100644 index 000000000..7bb588192 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/retry.d.ts @@ -0,0 +1,133 @@ +import { SdkError } from "./shapes"; +/** + * @public + */ +export type RetryErrorType = +/** + * This is a connection level error such as a socket timeout, socket connect + * error, tls negotiation timeout etc... + * Typically these should never be applied for non-idempotent request types + * since in this scenario, it's impossible to know whether the operation had + * a side effect on the server. + */ +"TRANSIENT" +/** + * This is an error where the server explicitly told the client to back off, + * such as a 429 or 503 Http error. + */ + | "THROTTLING" +/** + * This is a server error that isn't explicitly throttling but is considered + * by the client to be something that should be retried. + */ + | "SERVER_ERROR" +/** + * Doesn't count against any budgets. This could be something like a 401 + * challenge in Http. + */ + | "CLIENT_ERROR"; +/** + * @public + */ +export interface RetryErrorInfo { + /** + * The error thrown during the initial request, if available. + */ + error?: SdkError; + errorType: RetryErrorType; + /** + * Protocol hint. This could come from Http's 'retry-after' header or + * something from MQTT or any other protocol that has the ability to convey + * retry info from a peer. + * + * The Date after which a retry should be attempted. + */ + retryAfterHint?: Date; +} +/** + * @public + */ +export interface RetryBackoffStrategy { + /** + * @returns the number of milliseconds to wait before retrying an action. + */ + computeNextBackoffDelay(retryAttempt: number): number; +} +/** + * @public + */ +export interface StandardRetryBackoffStrategy extends RetryBackoffStrategy { + /** + * Sets the delayBase used to compute backoff delays. + * @param delayBase - + */ + setDelayBase(delayBase: number): void; +} +/** + * @public + */ +export interface RetryStrategyOptions { + backoffStrategy: RetryBackoffStrategy; + maxRetriesBase: number; +} +/** + * @public + */ +export interface RetryToken { + /** + * @returns the current count of retry. + */ + getRetryCount(): number; + /** + * @returns the number of milliseconds to wait before retrying an action. + */ + getRetryDelay(): number; +} +/** + * @public + */ +export interface StandardRetryToken extends RetryToken { + /** + * @returns the cost of the last retry attempt. + */ + getRetryCost(): number | undefined; +} +/** + * @public + */ +export interface RetryStrategyV2 { + /** + * Called before any retries (for the first call to the operation). It either + * returns a retry token or an error upon the failure to acquire a token prior. + * + * tokenScope is arbitrary and out of scope for this component. However, + * adding it here offers us a lot of future flexibility for outage detection. + * For example, it could be "us-east-1" on a shared retry strategy, or + * "us-west-2-c:dynamodb". + */ + acquireInitialRetryToken(retryTokenScope: string): Promise; + /** + * After a failed operation call, this function is invoked to refresh the + * retryToken returned by acquireInitialRetryToken(). This function can + * either choose to allow another retry and send a new or updated token, + * or reject the retry attempt and report the error either in an exception + * or returning an error. + */ + refreshRetryTokenForRetry(tokenToRenew: RetryToken, errorInfo: RetryErrorInfo): Promise; + /** + * Upon successful completion of the operation, this function is called + * to record that the operation was successful. + */ + recordSuccess(token: RetryToken): void; +} +/** + * @public + */ +export type ExponentialBackoffJitterType = "DEFAULT" | "NONE" | "FULL" | "DECORRELATED"; +/** + * @public + */ +export interface ExponentialBackoffStrategyOptions { + jitterType: ExponentialBackoffJitterType; + backoffScaleValue?: number; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/schema/schema-deprecated.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/schema/schema-deprecated.d.ts new file mode 100644 index 000000000..610cf8650 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/schema/schema-deprecated.d.ts @@ -0,0 +1,149 @@ +import { EndpointV2 } from "../endpoint"; +import { HandlerExecutionContext } from "../middleware"; +import { MetadataBearer } from "../response"; +import { EndpointBearer, SerdeFunctions } from "../serde"; +import { ConfigurableSerdeContext, NormalizedSchema, SchemaTraits, SimpleSchema, UnitSchema } from "./schema"; +import { StaticSchema } from "./static-schemas"; +/** + * A schema is an object or value that describes how to serialize/deserialize data. + * @internal + * @deprecated use $Schema + */ +export type Schema = UnitSchema | TraitsSchema | SimpleSchema | ListSchema | MapSchema | StructureSchema | MemberSchema | OperationSchema | StaticSchema | NormalizedSchema; +/** + * A schema "reference" is either a schema or a function that + * provides a schema. This is useful for lazy loading, and to allow + * code generation to define schema out of dependency order. + * @internal + * @deprecated use $SchemaRef + */ +export type SchemaRef = Schema | (() => Schema); +/** + * A schema that has traits. + * + * @internal + * @deprecated use static schema. + */ +export interface TraitsSchema { + namespace: string; + name: string; + traits: SchemaTraits; +} +/** + * Indicates the schema is a member of a parent Structure schema. + * It may also have a set of member traits distinct from its target shape's traits. + * @internal + * @deprecated use $MemberSchema + */ +export type MemberSchema = [ + SchemaRef, + SchemaTraits +]; +/** + * Schema for the structure aggregate type. + * @internal + * @deprecated use static schema. + */ +export interface StructureSchema extends TraitsSchema { + memberNames: string[]; + memberList: SchemaRef[]; + /** + * @deprecated structure member iteration will be linear on the memberNames and memberList arrays. + * It can be collected into a hashmap form on an ad-hoc basis, but will not initialize as such. + */ + members?: Record | undefined; +} +/** + * Schema for the list aggregate type. + * @internal + * @deprecated use static schema. + */ +export interface ListSchema extends TraitsSchema { + valueSchema: SchemaRef; +} +/** + * Schema for the map aggregate type. + * @internal + * @deprecated use static schema. + */ +export interface MapSchema extends TraitsSchema { + keySchema: SchemaRef; + valueSchema: SchemaRef; +} +/** + * Schema for an operation. + * @internal + * @deprecated use StaticOperationSchema or $OperationSchema + */ +export interface OperationSchema { + namespace: string; + name: string; + traits: SchemaTraits; + input: SchemaRef; + output: SchemaRef; +} +/** + * Turns a serialization into a data object. + * @internal + * @deprecated use $ShapeDeserializer + */ +export interface ShapeDeserializer extends ConfigurableSerdeContext { + /** + * Optionally async. + */ + read(schema: Schema, data: SerializationType): any | Promise; +} +/** + * Turns a data object into a serialization. + * @internal + * @deprecated use $ShapeSerializer + */ +export interface ShapeSerializer extends ConfigurableSerdeContext { + write(schema: Schema, value: unknown): void; + flush(): SerializationType; +} +/** + * A codec creates serializers and deserializers for some format such as JSON, XML, or CBOR. + * + * @internal + * @deprecated use $Codec + */ +export interface Codec extends ConfigurableSerdeContext { + createSerializer(): ShapeSerializer; + createDeserializer(): ShapeDeserializer; +} +/** + * A client protocol defines how to convert a message (e.g. HTTP request/response) to and from a data object. + * @internal + * @deprecated use $ClientProtocol + */ +export interface ClientProtocol extends ConfigurableSerdeContext { + /** + * @returns the Smithy qualified shape id. + */ + getShapeId(): string; + getRequestType(): { + new (...args: any[]): Request; + }; + getResponseType(): { + new (...args: any[]): Response; + }; + /** + * @returns the payload codec if the requests/responses have a symmetric format. + * It otherwise may return null. + */ + getPayloadCodec(): Codec; + serializeRequest(operationSchema: OperationSchema, input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + updateServiceEndpoint(request: Request, endpoint: EndpointV2): Request; + deserializeResponse(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: Response): Promise; +} +/** + * @public + * @deprecated use $ClientProtocolCtor. + */ +export interface ClientProtocolCtor { + new (args: any): ClientProtocol; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/schema/schema.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/schema/schema.d.ts new file mode 100644 index 000000000..8e424dd07 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/schema/schema.d.ts @@ -0,0 +1,251 @@ +import { EndpointV2 } from "../endpoint"; +import { HandlerExecutionContext } from "../middleware"; +import { MetadataBearer } from "../response"; +import { EndpointBearer, SerdeFunctions } from "../serde"; +import { BigDecimalSchema, BigIntegerSchema, BlobSchema, BooleanSchema, DocumentSchema, NumericSchema, StreamingBlobSchema, StringSchema, TimestampDateTimeSchema, TimestampDefaultSchema, TimestampEpochSecondsSchema, TimestampHttpDateSchema } from "./sentinels"; +import { StaticSchema } from "./static-schemas"; +import { TraitBitVector } from "./traits"; +/** + * A schema is an object or value that describes how to serialize/deserialize data. + * @public + */ +export type $Schema = UnitSchema | SimpleSchema | $MemberSchema | StaticSchema | NormalizedSchema; +/** + * Traits attached to schema objects. + * + * When this is a number, it refers to a pre-allocated + * trait combination that is equivalent to one of the + * object type's variations. + * + * @public + */ +export type SchemaTraits = TraitBitVector | SchemaTraitsObject; +/** + * Simple schemas are those corresponding to simple Smithy types. + * @see https://smithy.io/2.0/spec/simple-types.html + * @public + */ +export type SimpleSchema = BlobSchemas | StringSchema | BooleanSchema | NumericSchema | BigIntegerSchema | BigDecimalSchema | DocumentSchema | TimestampSchemas | number; +/** + * Sentinel value for Timestamp schema. + * "Default" means unspecified and to use the protocol serializer's default format. + * + * @public + */ +export type TimestampSchemas = TimestampDefaultSchema | TimestampDateTimeSchema | TimestampHttpDateSchema | TimestampEpochSecondsSchema; +/** + * Sentinel values for Blob schema. + * @public + */ +export type BlobSchemas = BlobSchema | StreamingBlobSchema; +/** + * Signal value for the Smithy void value. Typically used for + * operation input and outputs. + * + * @public + */ +export type UnitSchema = "unit"; +/** + * See https://smithy.io/2.0/trait-index.html for individual definitions. + * + * @public + */ +export type SchemaTraitsObject = { + idempotent?: 1; + idempotencyToken?: 1; + sensitive?: 1; + sparse?: 1; + /** + * timestampFormat is expressed by the schema sentinel values of 4, 5, 6, and 7, + * and not contained in trait objects. + * @deprecated use schema value. + */ + timestampFormat?: never; + httpLabel?: 1; + httpHeader?: string; + httpQuery?: string; + httpPrefixHeaders?: string; + httpQueryParams?: 1; + httpPayload?: 1; + /** + * [method, path, statusCode] + */ + http?: [ + string, + string, + number + ]; + httpResponseCode?: 1; + /** + * [hostPrefix] + */ + endpoint?: [ + string + ]; + xmlAttribute?: 1; + xmlName?: string; + /** + * [prefix, uri] + */ + xmlNamespace?: [ + string, + string + ]; + xmlFlattened?: 1; + jsonName?: string; + mediaType?: string; + error?: "client" | "server"; + streaming?: 1; + eventHeader?: 1; + eventPayload?: 1; + [traitName: string]: unknown; +}; +/** + * Indicates the schema is a member of a parent Structure schema. + * It may also have a set of member traits distinct from its target shape's traits. + * @public + */ +export type $MemberSchema = [ + $SchemaRef, + SchemaTraits +]; +/** + * Schema for an operation. + * @public + */ +export interface $OperationSchema { + namespace: string; + name: string; + traits: SchemaTraits; + input: $SchemaRef; + output: $SchemaRef; +} +/** + * Normalization wrapper for various schema data objects. + * @public + */ +export interface NormalizedSchema { + getSchema(): $Schema; + getName(): string | undefined; + isMemberSchema(): boolean; + isListSchema(): boolean; + isMapSchema(): boolean; + isStructSchema(): boolean; + isBlobSchema(): boolean; + isTimestampSchema(): boolean; + isStringSchema(): boolean; + isBooleanSchema(): boolean; + isNumericSchema(): boolean; + isBigIntegerSchema(): boolean; + isBigDecimalSchema(): boolean; + isStreaming(): boolean; + getMergedTraits(): SchemaTraitsObject; + getMemberTraits(): SchemaTraitsObject; + getOwnTraits(): SchemaTraitsObject; + /** + * For list/set/map. + */ + getValueSchema(): NormalizedSchema; + /** + * For struct/union. + */ + getMemberSchema(member: string): NormalizedSchema | undefined; + structIterator(): Generator<[ + string, + NormalizedSchema + ], undefined, undefined>; +} +/** + * A schema "reference" is either a schema or a function that + * provides a schema. This is useful for lazy loading, and to allow + * code generation to define schema out of dependency order. + * @public + */ +export type $SchemaRef = $Schema | (() => $Schema); +/** + * A codec creates serializers and deserializers for some format such as JSON, XML, or CBOR. + * + * @public + */ +export interface $Codec extends ConfigurableSerdeContext { + createSerializer(): $ShapeSerializer; + createDeserializer(): $ShapeDeserializer; +} +/** + * Configuration for codecs. Different protocols may share codecs, but require different behaviors from them. + * + * @public + */ +export type CodecSettings = { + timestampFormat: { + /** + * Whether to use member timestamp format traits. + */ + useTrait: boolean; + /** + * Default timestamp format. + */ + default: TimestampDateTimeSchema | TimestampHttpDateSchema | TimestampEpochSecondsSchema; + }; + /** + * Whether to use HTTP binding traits. + */ + httpBindings?: boolean; +}; +/** + * Turns a serialization into a data object. + * @public + */ +export interface $ShapeDeserializer extends ConfigurableSerdeContext { + /** + * Optionally async. + */ + read(schema: $Schema, data: SerializationType): any | Promise; +} +/** + * Turns a data object into a serialization. + * @public + */ +export interface $ShapeSerializer extends ConfigurableSerdeContext { + write(schema: $Schema, value: unknown): void; + flush(): SerializationType; +} +/** + * A client protocol defines how to convert a message (e.g. HTTP request/response) to and from a data object. + * @public + */ +export interface $ClientProtocol extends ConfigurableSerdeContext { + /** + * @returns the Smithy qualified shape id. + */ + getShapeId(): string; + getRequestType(): { + new (...args: any[]): Request; + }; + getResponseType(): { + new (...args: any[]): Response; + }; + /** + * @returns the payload codec if the requests/responses have a symmetric format. + * It otherwise may return null. + */ + getPayloadCodec(): $Codec; + serializeRequest(operationSchema: $OperationSchema, input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + updateServiceEndpoint(request: Request, endpoint: EndpointV2): Request; + deserializeResponse(operationSchema: $OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: Response): Promise; +} +/** + * @public + */ +export interface $ClientProtocolCtor { + new (args: any): $ClientProtocol; +} +/** + * Allows a protocol, codec, or serde utility to accept the serdeContext + * from a client configuration or request/response handlerExecutionContext. + * + * @public + */ +export interface ConfigurableSerdeContext { + setSerdeContext(serdeContext: SerdeFunctions): void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/schema/sentinels.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/schema/sentinels.d.ts new file mode 100644 index 000000000..939e807dc --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/schema/sentinels.d.ts @@ -0,0 +1,65 @@ +/** + * The blob Smithy type, in JS as Uint8Array and other representations + * such as Buffer, string, or Readable(Stream) depending on circumstances. + * @public + */ +export type BlobSchema = 21; +/** + * @public + */ +export type StreamingBlobSchema = 42; +/** + * @public + */ +export type BooleanSchema = 2; +/** + * Includes string and enum Smithy types. + * @public + */ +export type StringSchema = 0; +/** + * Includes all numeric Smithy types except bigInteger and bigDecimal. + * byte, short, integer, long, float, double, intEnum. + * + * @public + */ +export type NumericSchema = 1; +/** + * @public + */ +export type BigIntegerSchema = 17; +/** + * @public + */ +export type BigDecimalSchema = 19; +/** + * @public + */ +export type DocumentSchema = 15; +/** + * Smithy type timestamp, in JS as native Date object. + * @public + */ +export type TimestampDefaultSchema = 4; +/** + * @public + */ +export type TimestampDateTimeSchema = 5; +/** + * @public + */ +export type TimestampHttpDateSchema = 6; +/** + * @public + */ +export type TimestampEpochSecondsSchema = 7; +/** + * Additional bit indicating the type is a list. + * @public + */ +export type ListSchemaModifier = 64; +/** + * Additional bit indicating the type is a map. + * @public + */ +export type MapSchemaModifier = 128; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/schema/static-schemas.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/schema/static-schemas.d.ts new file mode 100644 index 000000000..0cd604837 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/schema/static-schemas.d.ts @@ -0,0 +1,118 @@ +import { $SchemaRef, SchemaTraits } from "../schema/schema"; +/** + * @public + */ +export type StaticSchemaIdSimple = 0; +/** + * @public + */ +export type StaticSchemaIdList = 1; +/** + * @public + */ +export type StaticSchemaIdMap = 2; +/** + * @public + */ +export type StaticSchemaIdStruct = 3; +/** + * @public + */ +export type StaticSchemaIdUnion = 4; +/** + * @public + */ +export type StaticSchemaIdError = -3; +/** + * @public + */ +export type StaticSchemaIdOperation = 9; +/** + * @public + */ +export type StaticSchema = StaticSimpleSchema | StaticListSchema | StaticMapSchema | StaticStructureSchema | StaticUnionSchema | StaticErrorSchema | StaticOperationSchema; +/** + * @public + */ +export type ShapeName = string; +/** + * @public + */ +export type ShapeNamespace = string; +/** + * @public + */ +export type StaticSimpleSchema = [ + StaticSchemaIdSimple, + ShapeNamespace, + ShapeName, + SchemaTraits, + $SchemaRef +]; +/** + * @public + */ +export type StaticListSchema = [ + StaticSchemaIdList, + ShapeNamespace, + ShapeName, + SchemaTraits, + $SchemaRef +]; +/** + * @public + */ +export type StaticMapSchema = [ + StaticSchemaIdMap, + ShapeNamespace, + ShapeName, + SchemaTraits, + $SchemaRef, + $SchemaRef +]; +/** + * @public + */ +export type StaticStructureSchema = [ + StaticSchemaIdStruct, + ShapeNamespace, + ShapeName, + SchemaTraits, + string[], + $SchemaRef[], + number? +]; +/** + * @public + */ +export type StaticUnionSchema = [ + StaticSchemaIdUnion, + ShapeNamespace, + ShapeName, + SchemaTraits, + string[], + $SchemaRef[] +]; +/** + * @public + */ +export type StaticErrorSchema = [ + StaticSchemaIdError, + ShapeNamespace, + ShapeName, + SchemaTraits, + string[], + $SchemaRef[], + number? +]; +/** + * @public + */ +export type StaticOperationSchema = [ + StaticSchemaIdOperation, + ShapeNamespace, + ShapeName, + SchemaTraits, + $SchemaRef, + $SchemaRef +]; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/schema/traits.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/schema/traits.d.ts new file mode 100644 index 000000000..0825f8151 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/schema/traits.d.ts @@ -0,0 +1,46 @@ +/** + * A bitvector representing a traits object. + * + * Vector index to trait: + * 0 - httpLabel + * 1 - idempotent + * 2 - idempotencyToken + * 3 - sensitive + * 4 - httpPayload + * 5 - httpResponseCode + * 6 - httpQueryParams + * + * The singular trait values are enumerated for quick identification, but + * combination values are left to the `number` union type. + * + * @public + */ +export type TraitBitVector = HttpLabelBitMask | IdempotentBitMask | IdempotencyTokenBitMask | SensitiveBitMask | HttpPayloadBitMask | HttpResponseCodeBitMask | HttpQueryParamsBitMask | number; +/** + * @public + */ +export type HttpLabelBitMask = 1; +/** + * @public + */ +export type IdempotentBitMask = 2; +/** + * @public + */ +export type IdempotencyTokenBitMask = 4; +/** + * @public + */ +export type SensitiveBitMask = 8; +/** + * @public + */ +export type HttpPayloadBitMask = 16; +/** + * @public + */ +export type HttpResponseCodeBitMask = 32; +/** + * @public + */ +export type HttpQueryParamsBitMask = 64; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/serde.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/serde.d.ts new file mode 100644 index 000000000..cbc09f79e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/serde.d.ts @@ -0,0 +1,114 @@ +import { Endpoint } from "./http"; +import { $ClientProtocol } from "./schema/schema"; +import { RequestHandler } from "./transfer"; +import { Decoder, Encoder, Provider } from "./util"; +/** + * @public + * + * Interface for object requires an Endpoint set. + */ +export interface EndpointBearer { + endpoint: Provider; +} +/** + * @public + */ +export interface StreamCollector { + /** + * A function that converts a stream into an array of bytes. + * + * @param stream - The low-level native stream from browser or Nodejs runtime + */ + (stream: any): Promise; +} +/** + * @public + * + * Request and Response serde util functions and settings for AWS services + */ +export interface SerdeContext extends SerdeFunctions, EndpointBearer { + requestHandler: RequestHandler; + disableHostPrefix: boolean; + protocol?: $ClientProtocol; +} +/** + * @public + * + * Serde functions from the client config. + */ +export interface SerdeFunctions { + base64Encoder: Encoder; + base64Decoder: Decoder; + utf8Encoder: Encoder; + utf8Decoder: Decoder; + streamCollector: StreamCollector; +} +/** + * @public + */ +export interface RequestSerializer { + /** + * Converts the provided `input` into a request object + * + * @param input - The user input to serialize. + * + * @param context - Context containing runtime-specific util functions. + */ + (input: any, context: Context): Promise; +} +/** + * @public + */ +export interface ResponseDeserializer { + /** + * Converts the output of an operation into JavaScript types. + * + * @param output - The HTTP response received from the service + * + * @param context - context containing runtime-specific util functions. + */ + (output: ResponseType, context: Context): Promise; +} +/** + * The interface contains mix-in utility functions to transfer the runtime-specific + * stream implementation to specified format. Each stream can ONLY be transformed + * once. + * @public + */ +export interface SdkStreamMixin { + transformToByteArray: () => Promise; + transformToString: (encoding?: string) => Promise; + transformToWebStream: () => ReadableStream; +} +/** + * @public + * + * The type describing a runtime-specific stream implementation with mix-in + * utility functions. + */ +export type SdkStream = BaseStream & SdkStreamMixin; +/** + * @public + * + * Indicates that the member of type T with + * key StreamKey have been extended + * with the SdkStreamMixin helper methods. + */ +export type WithSdkStreamMixin = { + [key in keyof T]: key extends StreamKey ? SdkStream : T[key]; +}; +/** + * Interface for internal function to inject stream utility functions + * implementation + * + * @internal + */ +export interface SdkStreamMixinInjector { + (stream: unknown): SdkStreamMixin; +} +/** + * @internal + */ +export interface SdkStreamSerdeContext { + sdkStreamMixin: SdkStreamMixinInjector; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/shapes.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/shapes.d.ts new file mode 100644 index 000000000..a4812fb82 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/shapes.d.ts @@ -0,0 +1,82 @@ +import { HttpResponse } from "./http"; +import { MetadataBearer } from "./response"; +/** + * @public + * + * A document type represents an untyped JSON-like value. + * + * Not all protocols support document types, and the serialization format of a + * document type is protocol specific. All JSON protocols SHOULD support + * document types and they SHOULD serialize document types inline as normal + * JSON values. + */ +export type DocumentType = null | boolean | number | string | DocumentType[] | { + [prop: string]: DocumentType; +}; +/** + * @public + * + * A structure shape with the error trait. + * https://smithy.io/2.0/spec/behavior-traits.html#smithy-api-retryable-trait + */ +export interface RetryableTrait { + /** + * Indicates that the error is a retryable throttling error. + */ + readonly throttling?: boolean; +} +/** + * @public + * + * Type that is implemented by all Smithy shapes marked with the + * error trait. + * @deprecated + */ +export interface SmithyException { + /** + * The shape ID name of the exception. + */ + readonly name: string; + /** + * Whether the client or server are at fault. + */ + readonly $fault: "client" | "server"; + /** + * The service that encountered the exception. + */ + readonly $service?: string; + /** + * Indicates that an error MAY be retried by the client. + */ + readonly $retryable?: RetryableTrait; + /** + * Reference to low-level HTTP response object. + */ + readonly $response?: HttpResponse; +} +/** + * @public + * + * @deprecated See {@link https://aws.amazon.com/blogs/developer/service-error-handling-modular-aws-sdk-js/} + * + * This type should not be used in your application. + * Users of the AWS SDK for JavaScript v3 service clients should prefer to + * use the specific Exception classes corresponding to each operation. + * These can be found as code in the deserializer for the operation's Command class, + * or as declarations in the service model file in codegen/sdk-codegen/aws-models. + * + * If no exceptions are enumerated by a particular Command operation, + * the base exception for the service should be used. Each client exports + * a base ServiceException prefixed with the service name. + */ +export type SdkError = Error & Partial & Partial & { + $metadata?: Partial["$metadata"] & { + /** + * If present, will have value of true and indicates that the error resulted in a + * correction of the clock skew, a.k.a. config.systemClockOffset. + * This is specific to AWS SDK and sigv4. + */ + readonly clockSkewCorrected?: true; + }; + cause?: Error; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/signature.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/signature.d.ts new file mode 100644 index 000000000..db0039da9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/signature.d.ts @@ -0,0 +1,155 @@ +import { Message } from "./eventStream"; +import { HttpRequest } from "./http"; +/** + * @public + * + * A `Date` object, a unix (epoch) timestamp in seconds, or a string that can be + * understood by the JavaScript `Date` constructor. + */ +export type DateInput = number | string | Date; +/** + * @public + */ +export interface SigningArguments { + /** + * The date and time to be used as signature metadata. This value should be + * a Date object, a unix (epoch) timestamp, or a string that can be + * understood by the JavaScript `Date` constructor.If not supplied, the + * value returned by `new Date()` will be used. + */ + signingDate?: DateInput; + /** + * The service signing name. It will override the service name of the signer + * in current invocation + */ + signingService?: string; + /** + * The region name to sign the request. It will override the signing region of the + * signer in current invocation + */ + signingRegion?: string; +} +/** + * @public + */ +export interface RequestSigningArguments extends SigningArguments { + /** + * A set of strings whose members represents headers that cannot be signed. + * All headers in the provided request will have their names converted to + * lower case and then checked for existence in the unsignableHeaders set. + */ + unsignableHeaders?: Set; + /** + * A set of strings whose members represents headers that should be signed. + * Any values passed here will override those provided via unsignableHeaders, + * allowing them to be signed. + * + * All headers in the provided request will have their names converted to + * lower case before signing. + */ + signableHeaders?: Set; +} +/** + * @public + */ +export interface RequestPresigningArguments extends RequestSigningArguments { + /** + * The number of seconds before the presigned URL expires + */ + expiresIn?: number; + /** + * A set of strings whose representing headers that should not be hoisted + * to presigned request's query string. If not supplied, the presigner + * moves all the AWS-specific headers (starting with `x-amz-`) to the request + * query string. If supplied, these headers remain in the presigned request's + * header. + * All headers in the provided request will have their names converted to + * lower case and then checked for existence in the unhoistableHeaders set. + */ + unhoistableHeaders?: Set; + /** + * This overrides any headers with the same name(s) set by unhoistableHeaders. + * These headers will be hoisted into the query string and signed. + */ + hoistableHeaders?: Set; +} +/** + * @public + */ +export interface EventSigningArguments extends SigningArguments { + priorSignature: string; +} +/** + * @public + */ +export interface RequestPresigner { + /** + * Signs a request for future use. + * + * The request will be valid until either the provided `expiration` time has + * passed or the underlying credentials have expired. + * + * @param requestToSign - The request that should be signed. + * @param options - Additional signing options. + */ + presign(requestToSign: HttpRequest, options?: RequestPresigningArguments): Promise; +} +/** + * @public + * + * An object that signs request objects with AWS credentials using one of the + * AWS authentication protocols. + */ +export interface RequestSigner { + /** + * Sign the provided request for immediate dispatch. + */ + sign(requestToSign: HttpRequest, options?: RequestSigningArguments): Promise; +} +/** + * @public + */ +export interface StringSigner { + /** + * Sign the provided `stringToSign` for use outside of the context of + * request signing. Typical uses include signed policy generation. + */ + sign(stringToSign: string, options?: SigningArguments): Promise; +} +/** + * @public + */ +export interface FormattedEvent { + headers: Uint8Array; + payload: Uint8Array; +} +/** + * @public + */ +export interface EventSigner { + /** + * Sign the individual event of the event stream. + */ + sign(event: FormattedEvent, options: EventSigningArguments): Promise; +} +/** + * @public + */ +export interface SignableMessage { + message: Message; + priorSignature: string; +} +/** + * @public + */ +export interface SignedMessage { + message: Message; + signature: string; +} +/** + * @public + */ +export interface MessageSigner { + signMessage(message: SignableMessage, args: SigningArguments): Promise; + sign(event: SignableMessage, options: SigningArguments): Promise; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/stream.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/stream.d.ts new file mode 100644 index 000000000..f305dd9dc --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/stream.d.ts @@ -0,0 +1,22 @@ +import { ChecksumConstructor } from "./checksum"; +import { HashConstructor, StreamHasher } from "./crypto"; +import { BodyLengthCalculator, Encoder } from "./util"; +/** + * @public + */ +export interface GetAwsChunkedEncodingStreamOptions { + base64Encoder?: Encoder; + bodyLengthChecker: BodyLengthCalculator; + checksumAlgorithmFn?: ChecksumConstructor | HashConstructor; + checksumLocationName?: string; + streamHasher?: StreamHasher; +} +/** + * @public + * + * A function that returns Readable Stream which follows aws-chunked encoding stream. + * It optionally adds checksum if options are provided. + */ +export interface GetAwsChunkedEncodingStream { + (readableStream: StreamType, options: GetAwsChunkedEncodingStreamOptions): StreamType; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-common-types.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-common-types.d.ts new file mode 100644 index 000000000..bff7c52f2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-common-types.d.ts @@ -0,0 +1,32 @@ +import { Readable } from "stream"; +import { BlobOptionalType, ReadableStreamOptionalType } from "../externals-check/browser-externals-check"; +/** + * @public + * + * This is the union representing the modeled blob type with streaming trait + * in a generic format that does not relate to HTTP input or output payloads. + * + * Note: the non-streaming blob type is represented by Uint8Array, but because + * the streaming blob type is always in the request/response paylod, it has + * historically been handled with different types. + * + * @see https://smithy.io/2.0/spec/simple-types.html#blob + * + * For compatibility with its historical representation, it must contain at least + * Readble (Node.js), Blob (browser), and ReadableStream (browser). + * + * @see StreamingPayloadInputTypes for FAQ about mixing types from multiple environments. + */ +export type StreamingBlobTypes = NodeJsRuntimeStreamingBlobTypes | BrowserRuntimeStreamingBlobTypes; +/** + * @public + * + * Node.js streaming blob type. + */ +export type NodeJsRuntimeStreamingBlobTypes = Readable; +/** + * @public + * + * Browser streaming blob types. + */ +export type BrowserRuntimeStreamingBlobTypes = ReadableStreamOptionalType | BlobOptionalType; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-input-types.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-input-types.d.ts new file mode 100644 index 000000000..7d304543c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-input-types.d.ts @@ -0,0 +1,60 @@ +import { Readable } from "stream"; +import { BlobOptionalType, ReadableStreamOptionalType } from "../externals-check/browser-externals-check"; +/** + * @public + * + * This union represents a superset of the compatible types you + * can use for streaming payload inputs. + * + * FAQ: + * Why does the type union mix mutually exclusive runtime types, namely + * Node.js and browser types? + * + * There are several reasons: + * 1. For backwards compatibility. + * 2. As a convenient compromise solution so that users in either environment may use the types + * without customization. + * 3. The SDK does not have static type information about the exact implementation + * of the HTTP RequestHandler being used in your client(s) (e.g. fetch, XHR, node:http, or node:http2), + * given that it is chosen at runtime. There are multiple possible request handlers + * in both the Node.js and browser runtime environments. + * + * Rather than restricting the type to a known common format (Uint8Array, for example) + * which doesn't include a universal streaming format in the currently supported Node.js versions, + * the type declaration is widened to multiple possible formats. + * It is up to the user to ultimately select a compatible format with the + * runtime and HTTP handler implementation they are using. + * + * Usage: + * The typical solution we expect users to have is to manually narrow the + * type when needed, picking the appropriate one out of the union according to the + * runtime environment and specific request handler. + * There is also the type utility "NodeJsClient", "BrowserClient" and more + * exported from this package. These can be applied at the client level + * to pre-narrow these streaming payload blobs. For usage see the readme.md + * in the root of the \@smithy/types NPM package. + */ +export type StreamingBlobPayloadInputTypes = NodeJsRuntimeStreamingBlobPayloadInputTypes | BrowserRuntimeStreamingBlobPayloadInputTypes; +/** + * @public + * + * Streaming payload input types in the Node.js environment. + * These are derived from the types compatible with the request body used by node:http. + * + * Note: not all types are signable by the standard SignatureV4 signer when + * used as the request body. For example, in Node.js a Readable stream + * is not signable by the default signer. + * They are included in the union because it may be intended in some cases, + * but the expected types are primarily string, Uint8Array, and Buffer. + * + * Additional details may be found in the internal + * function "getPayloadHash" in the SignatureV4 module. + */ +export type NodeJsRuntimeStreamingBlobPayloadInputTypes = string | Uint8Array | Buffer | Readable; +/** + * @public + * + * Streaming payload input types in the browser environment. + * These are derived from the types compatible with fetch's Request.body. + */ +export type BrowserRuntimeStreamingBlobPayloadInputTypes = string | Uint8Array | ReadableStreamOptionalType | BlobOptionalType; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-output-types.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-output-types.d.ts new file mode 100644 index 000000000..146e517bd --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-output-types.d.ts @@ -0,0 +1,51 @@ +import { IncomingMessage } from "http"; +import { Readable } from "stream"; +import { BlobOptionalType, ReadableStreamOptionalType } from "../externals-check/browser-externals-check"; +import { SdkStream } from "../serde"; +/** + * @public + * + * This union represents a superset of the types you may receive + * in streaming payload outputs. + * + * @see StreamingPayloadInputTypes for FAQ about mixing types from multiple environments. + * + * To highlight the upstream docs about the SdkStream mixin: + * + * The interface contains mix-in (via Object.assign) methods to transform the runtime-specific + * stream implementation to specified format. Each stream can ONLY be transformed + * once. + * + * The available methods are described on the SdkStream type via SdkStreamMixin. + */ +export type StreamingBlobPayloadOutputTypes = NodeJsRuntimeStreamingBlobPayloadOutputTypes | BrowserRuntimeStreamingBlobPayloadOutputTypes; +/** + * @public + * + * Streaming payload output types in the Node.js environment. + * + * This is by default the IncomingMessage type from node:http responses when + * using the default node-http-handler in Node.js environments. + * + * It can be other Readable types like node:http2's ClientHttp2Stream + * such as when using the node-http2-handler. + * + * The SdkStreamMixin adds methods on this type to help transform (collect) it to + * other formats. + */ +export type NodeJsRuntimeStreamingBlobPayloadOutputTypes = SdkStream; +/** + * @public + * + * Streaming payload output types in the browser environment. + * + * This is by default fetch's Response.body type (ReadableStream) when using + * the default fetch-http-handler in browser-like environments. + * + * It may be a Blob, such as when using the XMLHttpRequest handler + * and receiving an arraybuffer response body. + * + * The SdkStreamMixin adds methods on this type to help transform (collect) it to + * other formats. + */ +export type BrowserRuntimeStreamingBlobPayloadOutputTypes = SdkStream; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/transfer.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/transfer.d.ts new file mode 100644 index 000000000..462ee23c5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/transfer.d.ts @@ -0,0 +1,41 @@ +/** + * @public + */ +export type RequestHandlerOutput = { + response: ResponseType; +}; +/** + * @public + */ +export interface RequestHandler { + /** + * metadata contains information of a handler. For example + * 'h2' refers this handler is for handling HTTP/2 requests, + * whereas 'h1' refers handling HTTP1 requests + */ + metadata?: RequestHandlerMetadata; + destroy?: () => void; + handle: (request: RequestType, handlerOptions?: HandlerOptions) => Promise>; +} +/** + * @public + */ +export interface RequestHandlerMetadata { + handlerProtocol: RequestHandlerProtocol | string; +} +/** + * @public + * Values from ALPN Protocol IDs. + * @see https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids + */ +export declare enum RequestHandlerProtocol { + HTTP_0_9 = "http/0.9", + HTTP_1_0 = "http/1.0", + TDS_8_0 = "tds/8.0" +} +/** + * @public + */ +export interface RequestContext { + destination: URL; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/transform/client-method-transforms.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/transform/client-method-transforms.d.ts new file mode 100644 index 000000000..c998a76eb --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/transform/client-method-transforms.d.ts @@ -0,0 +1,26 @@ +import { CommandIO } from "../command"; +import { MetadataBearer } from "../response"; +import { StreamingBlobPayloadOutputTypes } from "../streaming-payload/streaming-blob-payload-output-types"; +import { Transform } from "./type-transform"; +/** + * @internal + * + * Narrowed version of InvokeFunction used in Client::send. + */ +export interface NarrowedInvokeFunction { + (command: CommandIO, options?: HttpHandlerOptions): Promise>; + (command: CommandIO, cb: (err: unknown, data?: Transform) => void): void; + (command: CommandIO, options: HttpHandlerOptions, cb: (err: unknown, data?: Transform) => void): void; + (command: CommandIO, options?: HttpHandlerOptions, cb?: (err: unknown, data?: Transform) => void): Promise> | void; +} +/** + * @internal + * + * Narrowed version of InvokeMethod used in aggregated Client methods. + */ +export interface NarrowedInvokeMethod { + (input: InputType, options?: HttpHandlerOptions): Promise>; + (input: InputType, cb: (err: unknown, data?: Transform) => void): void; + (input: InputType, options: HttpHandlerOptions, cb: (err: unknown, data?: Transform) => void): void; + (input: InputType, options?: HttpHandlerOptions, cb?: (err: unknown, data?: OutputType) => void): Promise> | void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/transform/client-payload-blob-type-narrow.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/transform/client-payload-blob-type-narrow.d.ts new file mode 100644 index 000000000..a83bdc5d4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/transform/client-payload-blob-type-narrow.d.ts @@ -0,0 +1,81 @@ +import { IncomingMessage } from "http"; +import { ClientHttp2Stream } from "http2"; +import { InvokeMethod } from "../client"; +import { GetOutputType } from "../command"; +import { HttpHandlerOptions } from "../http"; +import { SdkStream } from "../serde"; +import { BrowserRuntimeStreamingBlobPayloadInputTypes, NodeJsRuntimeStreamingBlobPayloadInputTypes, StreamingBlobPayloadInputTypes } from "../streaming-payload/streaming-blob-payload-input-types"; +import { StreamingBlobPayloadOutputTypes } from "../streaming-payload/streaming-blob-payload-output-types"; +import { NarrowedInvokeMethod } from "./client-method-transforms"; +import { Transform } from "./type-transform"; +/** + * @public + * + * Creates a type with a given client type that narrows payload blob output + * types to SdkStream. + * + * This can be used for clients with the NodeHttpHandler requestHandler, + * the default in Node.js when not using HTTP2. + * + * Usage example: + * ```typescript + * const client = new YourClient({}) as NodeJsClient; + * ``` + */ +export type NodeJsClient = NarrowPayloadBlobTypes, ClientType>; +/** + * @public + * Variant of NodeJsClient for node:http2. + */ +export type NodeJsHttp2Client = NarrowPayloadBlobTypes, ClientType>; +/** + * @public + * + * Creates a type with a given client type that narrows payload blob output + * types to SdkStream. + * + * This can be used for clients with the FetchHttpHandler requestHandler, + * which is the default in browser environments. + * + * Usage example: + * ```typescript + * const client = new YourClient({}) as BrowserClient; + * ``` + */ +export type BrowserClient = NarrowPayloadBlobTypes, ClientType>; +/** + * @public + * + * Variant of BrowserClient for XMLHttpRequest. + */ +export type BrowserXhrClient = NarrowPayloadBlobTypes, ClientType>; +/** + * @public + * + * @deprecated use NarrowPayloadBlobTypes. + * + * Narrow a given Client's blob payload outputs to the given type T. + */ +export type NarrowPayloadBlobOutputType = { + [key in keyof ClientType]: [ + ClientType[key] + ] extends [ + InvokeMethod + ] ? NarrowedInvokeMethod : ClientType[key]; +} & { + send(command: Command, options?: any): Promise, StreamingBlobPayloadOutputTypes | undefined, T>>; +}; +/** + * @public + * + * Narrow a Client's blob payload input and output types to I and O. + */ +export type NarrowPayloadBlobTypes = { + [key in keyof ClientType]: [ + ClientType[key] + ] extends [ + InvokeMethod + ] ? NarrowedInvokeMethod, FunctionOutputTypes> : ClientType[key]; +} & { + send(command: Command, options?: any): Promise, StreamingBlobPayloadOutputTypes | undefined, O>>; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/transform/exact.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/transform/exact.d.ts new file mode 100644 index 000000000..8896f1a21 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/transform/exact.d.ts @@ -0,0 +1,14 @@ +/** + * @internal + * + * Checks that A and B extend each other. + */ +export type Exact = [ + A +] extends [ + B +] ? ([ + B +] extends [ + A +] ? true : false) : false; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/transform/mutable.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/transform/mutable.d.ts new file mode 100644 index 000000000..4ba55e345 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/transform/mutable.d.ts @@ -0,0 +1,6 @@ +/** + * @internal + */ +export type Mutable = { + -readonly [Property in keyof Type]: Type[Property]; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/transform/no-undefined.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/transform/no-undefined.d.ts new file mode 100644 index 000000000..bf8a72cc8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/transform/no-undefined.d.ts @@ -0,0 +1,88 @@ +import { InvokeMethod, InvokeMethodOptionalArgs } from "../client"; +import { GetOutputType } from "../command"; +import { DocumentType } from "../shapes"; +/** + * @public + * + * This type is intended as a type helper for generated clients. + * When initializing client, cast it to this type by passing + * the client constructor type as the type parameter. + * + * It will then recursively remove "undefined" as a union type from all + * input and output shapes' members. Note, this does not affect + * any member that is optional (?) such as outputs with no required members. + * + * @example + * ```ts + * const client = new Client({}) as AssertiveClient; + * ``` + */ +export type AssertiveClient = NarrowClientIOTypes; +/** + * @public + * + * This is similar to AssertiveClient but additionally changes all + * output types to (recursive) Required so as to bypass all output nullability guards. + */ +export type UncheckedClient = UncheckedClientOutputTypes; +/** + * @internal + * + * Excludes undefined recursively. + */ +export type NoUndefined = T extends Function ? T : T extends DocumentType ? T : [ + T +] extends [ + object +] ? { + [key in keyof T]: NoUndefined; +} : Exclude; +/** + * @internal + * + * Excludes undefined and optional recursively. + */ +export type RecursiveRequired = T extends Function ? T : T extends DocumentType ? T : [ + T +] extends [ + object +] ? { + [key in keyof T]-?: RecursiveRequired; +} : Exclude; +/** + * @internal + * + * Removes undefined from unions. + */ +type NarrowClientIOTypes = { + [key in keyof ClientType]: [ + ClientType[key] + ] extends [ + InvokeMethodOptionalArgs + ] ? InvokeMethodOptionalArgs, NoUndefined> : [ + ClientType[key] + ] extends [ + InvokeMethod + ] ? InvokeMethod, NoUndefined> : ClientType[key]; +} & { + send(command: Command, options?: any): Promise>>; +}; +/** + * @internal + * + * Removes undefined from unions and adds yolo output types. + */ +type UncheckedClientOutputTypes = { + [key in keyof ClientType]: [ + ClientType[key] + ] extends [ + InvokeMethodOptionalArgs + ] ? InvokeMethodOptionalArgs, RecursiveRequired> : [ + ClientType[key] + ] extends [ + InvokeMethod + ] ? InvokeMethod, RecursiveRequired> : ClientType[key]; +} & { + send(command: Command, options?: any): Promise>>>; +}; +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/transform/type-transform.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/transform/type-transform.d.ts new file mode 100644 index 000000000..f8ddc8a1f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/transform/type-transform.d.ts @@ -0,0 +1,41 @@ +/** + * @public + * + * Transforms any members of the object T having type FromType + * to ToType. This applies only to exact type matches. + * + * This is for the case where FromType is a union and only those fields + * matching the same union should be transformed. + */ +export type Transform = RecursiveTransformExact; +/** + * @internal + * + * Returns ToType if T matches exactly with FromType. + */ +type TransformExact = [ + T +] extends [ + FromType +] ? ([ + FromType +] extends [ + T +] ? ToType : T) : T; +/** + * @internal + * + * Applies TransformExact to members of an object recursively. + */ +type RecursiveTransformExact = T extends Function ? T : T extends object ? { + [key in keyof T]: [ + T[key] + ] extends [ + FromType + ] ? [ + FromType + ] extends [ + T[key] + ] ? ToType : RecursiveTransformExact : RecursiveTransformExact; +} : TransformExact; +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/uri.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/uri.d.ts new file mode 100644 index 000000000..d7b874c50 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/uri.d.ts @@ -0,0 +1,17 @@ +import { QueryParameterBag } from "./http"; +/** + * @internal + * + * Represents the components parts of a Uniform Resource Identifier used to + * construct the target location of a Request. + */ +export type URI = { + protocol: string; + hostname: string; + port?: number; + path: string; + query?: QueryParameterBag; + username?: string; + password?: string; + fragment?: string; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/util.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/util.d.ts new file mode 100644 index 000000000..ffe151b5c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/util.d.ts @@ -0,0 +1,192 @@ +import { Endpoint } from "./http"; +import { FinalizeHandler, FinalizeHandlerArguments, FinalizeHandlerOutput } from "./middleware"; +import { MetadataBearer } from "./response"; +/** + * @public + * + * A generic which checks if Type1 is exactly same as Type2. + */ +export type Exact = [ + Type1 +] extends [ + Type2 +] ? ([ + Type2 +] extends [ + Type1 +] ? true : false) : false; +/** + * @public + * + * A function that, given a Uint8Array of bytes, can produce a string + * representation thereof. The function may optionally attempt to + * convert other input types to Uint8Array before encoding. + * + * @example An encoder function that converts bytes to hexadecimal + * representation would return `'hello'` when given + * `new Uint8Array([104, 101, 108, 108, 111])`. + */ +export interface Encoder { + /** + * Caution: the `any` type on the input is for backwards compatibility. + * Runtime support is limited to Uint8Array and string by default. + * + * You may choose to support more encoder input types if overriding the default + * implementations. + */ + (input: Uint8Array | string | any): string; +} +/** + * @public + * + * A function that, given a string, can derive the bytes represented by that + * string. + * + * @example A decoder function that converts bytes to hexadecimal + * representation would return `new Uint8Array([104, 101, 108, 108, 111])` when + * given the string `'hello'`. + */ +export interface Decoder { + (input: string): Uint8Array; +} +/** + * @public + * + * A function that, when invoked, returns a promise that will be fulfilled with + * a value of type T. + * + * @example A function that reads credentials from shared SDK configuration + * files, assuming roles and collecting MFA tokens as necessary. + */ +export interface Provider { + (): Promise; +} +/** + * @public + * + * A tuple that represents an API name and optional version + * of a library built using the AWS SDK. + */ +export type UserAgentPair = [ + /*name*/ string, + /*version*/ string +]; +/** + * @public + * + * User agent data that to be put into the request's user + * agent. + */ +export type UserAgent = UserAgentPair[]; +/** + * @public + * + * Parses a URL in string form into an Endpoint object. + */ +export interface UrlParser { + (url: string | URL): Endpoint; +} +/** + * @public + * + * A function that, when invoked, returns a promise that will be fulfilled with + * a value of type T. It memoizes the result from the previous invocation + * instead of calling the underlying resources every time. + * + * You can force the provider to refresh the memoized value by invoke the + * function with optional parameter hash with `forceRefresh` boolean key and + * value `true`. + * + * @example A function that reads credentials from IMDS service that could + * return expired credentials. The SDK will keep using the expired credentials + * until an unretryable service error requiring a force refresh of the + * credentials. + */ +export interface MemoizedProvider { + (options?: { + forceRefresh?: boolean; + }): Promise; +} +/** + * @public + * + * A function that, given a request body, determines the + * length of the body. This is used to determine the Content-Length + * that should be sent with a request. + * + * @example A function that reads a file stream and calculates + * the size of the file. + */ +export interface BodyLengthCalculator { + (body: any): number | undefined; +} +/** + * @public + * + * Object containing regionalization information of + * AWS services. + */ +export interface RegionInfo { + hostname: string; + partition: string; + path?: string; + signingService?: string; + signingRegion?: string; +} +/** + * @public + * + * Options to pass when calling {@link RegionInfoProvider} + */ +export interface RegionInfoProviderOptions { + /** + * Enables IPv6/IPv4 dualstack endpoint. + * @defaultValue false + */ + useDualstackEndpoint: boolean; + /** + * Enables FIPS compatible endpoints. + * @defaultValue false + */ + useFipsEndpoint: boolean; +} +/** + * @public + * + * Function returns designated service's regionalization + * information from given region. Each service client + * comes with its regionalization provider. it serves + * to provide the default values of related configurations + */ +export interface RegionInfoProvider { + (region: string, options?: RegionInfoProviderOptions): Promise; +} +/** + * @public + * + * Interface that specifies the retry behavior + */ +export interface RetryStrategy { + /** + * The retry mode describing how the retry strategy control the traffic flow. + */ + mode?: string; + /** + * the retry behavior the will invoke the next handler and handle the retry accordingly. + * This function should also update the $metadata from the response accordingly. + * @see {@link ResponseMetadata} + */ + retry: (next: FinalizeHandler, args: FinalizeHandlerArguments) => Promise>; +} +/** + * @public + * + * Indicates the parameter may be omitted if the parameter object T + * is equivalent to a Partial, i.e. all properties optional. + */ +export type OptionalParameter = Exact, T> extends true ? [ +] | [ + T +] : [ + T +]; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/waiter.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/waiter.d.ts new file mode 100644 index 000000000..59418322a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/ts3.4/waiter.d.ts @@ -0,0 +1,35 @@ +import { AbortController as DeprecatedAbortController } from "./abort"; +/** + * @public + */ +export interface WaiterConfiguration { + /** + * Required service client + */ + client: Client; + /** + * The amount of time in seconds a user is willing to wait for a waiter to complete. + */ + maxWaitTime: number; + /** + * @deprecated Use abortSignal + * Abort controller. Used for ending the waiter early. + */ + abortController?: AbortController | DeprecatedAbortController; + /** + * Abort Signal. Used for ending the waiter early. + */ + abortSignal?: AbortController["signal"] | DeprecatedAbortController["signal"]; + /** + * The minimum amount of time to delay between retries in seconds. This is the + * floor of the exponential backoff. This value defaults to service default + * if not specified. This value MUST be less than or equal to maxDelay and greater than 0. + */ + minDelay?: number; + /** + * The maximum amount of time to delay between retries in seconds. This is the + * ceiling of the exponential backoff. This value defaults to service default + * if not specified. If specified, this value MUST be greater than or equal to 1. + */ + maxDelay?: number; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/uri.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/uri.d.ts new file mode 100644 index 000000000..c009af431 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/uri.d.ts @@ -0,0 +1,17 @@ +import type { QueryParameterBag } from "./http"; +/** + * @internal + * + * Represents the components parts of a Uniform Resource Identifier used to + * construct the target location of a Request. + */ +export type URI = { + protocol: string; + hostname: string; + port?: number; + path: string; + query?: QueryParameterBag; + username?: string; + password?: string; + fragment?: string; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/util.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/util.d.ts new file mode 100644 index 000000000..755021df9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/util.d.ts @@ -0,0 +1,176 @@ +import type { Endpoint } from "./http"; +import type { FinalizeHandler, FinalizeHandlerArguments, FinalizeHandlerOutput } from "./middleware"; +import type { MetadataBearer } from "./response"; +/** + * @public + * + * A generic which checks if Type1 is exactly same as Type2. + */ +export type Exact = [Type1] extends [Type2] ? ([Type2] extends [Type1] ? true : false) : false; +/** + * @public + * + * A function that, given a Uint8Array of bytes, can produce a string + * representation thereof. The function may optionally attempt to + * convert other input types to Uint8Array before encoding. + * + * @example An encoder function that converts bytes to hexadecimal + * representation would return `'hello'` when given + * `new Uint8Array([104, 101, 108, 108, 111])`. + */ +export interface Encoder { + /** + * Caution: the `any` type on the input is for backwards compatibility. + * Runtime support is limited to Uint8Array and string by default. + * + * You may choose to support more encoder input types if overriding the default + * implementations. + */ + (input: Uint8Array | string | any): string; +} +/** + * @public + * + * A function that, given a string, can derive the bytes represented by that + * string. + * + * @example A decoder function that converts bytes to hexadecimal + * representation would return `new Uint8Array([104, 101, 108, 108, 111])` when + * given the string `'hello'`. + */ +export interface Decoder { + (input: string): Uint8Array; +} +/** + * @public + * + * A function that, when invoked, returns a promise that will be fulfilled with + * a value of type T. + * + * @example A function that reads credentials from shared SDK configuration + * files, assuming roles and collecting MFA tokens as necessary. + */ +export interface Provider { + (): Promise; +} +/** + * @public + * + * A tuple that represents an API name and optional version + * of a library built using the AWS SDK. + */ +export type UserAgentPair = [name: string, version?: string]; +/** + * @public + * + * User agent data that to be put into the request's user + * agent. + */ +export type UserAgent = UserAgentPair[]; +/** + * @public + * + * Parses a URL in string form into an Endpoint object. + */ +export interface UrlParser { + (url: string | URL): Endpoint; +} +/** + * @public + * + * A function that, when invoked, returns a promise that will be fulfilled with + * a value of type T. It memoizes the result from the previous invocation + * instead of calling the underlying resources every time. + * + * You can force the provider to refresh the memoized value by invoke the + * function with optional parameter hash with `forceRefresh` boolean key and + * value `true`. + * + * @example A function that reads credentials from IMDS service that could + * return expired credentials. The SDK will keep using the expired credentials + * until an unretryable service error requiring a force refresh of the + * credentials. + */ +export interface MemoizedProvider { + (options?: { + forceRefresh?: boolean; + }): Promise; +} +/** + * @public + * + * A function that, given a request body, determines the + * length of the body. This is used to determine the Content-Length + * that should be sent with a request. + * + * @example A function that reads a file stream and calculates + * the size of the file. + */ +export interface BodyLengthCalculator { + (body: any): number | undefined; +} +/** + * @public + * + * Object containing regionalization information of + * AWS services. + */ +export interface RegionInfo { + hostname: string; + partition: string; + path?: string; + signingService?: string; + signingRegion?: string; +} +/** + * @public + * + * Options to pass when calling {@link RegionInfoProvider} + */ +export interface RegionInfoProviderOptions { + /** + * Enables IPv6/IPv4 dualstack endpoint. + * @defaultValue false + */ + useDualstackEndpoint: boolean; + /** + * Enables FIPS compatible endpoints. + * @defaultValue false + */ + useFipsEndpoint: boolean; +} +/** + * @public + * + * Function returns designated service's regionalization + * information from given region. Each service client + * comes with its regionalization provider. it serves + * to provide the default values of related configurations + */ +export interface RegionInfoProvider { + (region: string, options?: RegionInfoProviderOptions): Promise; +} +/** + * @public + * + * Interface that specifies the retry behavior + */ +export interface RetryStrategy { + /** + * The retry mode describing how the retry strategy control the traffic flow. + */ + mode?: string; + /** + * the retry behavior the will invoke the next handler and handle the retry accordingly. + * This function should also update the $metadata from the response accordingly. + * @see {@link ResponseMetadata} + */ + retry: (next: FinalizeHandler, args: FinalizeHandlerArguments) => Promise>; +} +/** + * @public + * + * Indicates the parameter may be omitted if the parameter object T + * is equivalent to a Partial, i.e. all properties optional. + */ +export type OptionalParameter = Exact, T> extends true ? [] | [T] : [T]; diff --git a/food-ordering-app/server/node_modules/@smithy/types/dist-types/waiter.d.ts b/food-ordering-app/server/node_modules/@smithy/types/dist-types/waiter.d.ts new file mode 100644 index 000000000..870aa0a99 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/dist-types/waiter.d.ts @@ -0,0 +1,35 @@ +import type { AbortController as DeprecatedAbortController } from "./abort"; +/** + * @public + */ +export interface WaiterConfiguration { + /** + * Required service client + */ + client: Client; + /** + * The amount of time in seconds a user is willing to wait for a waiter to complete. + */ + maxWaitTime: number; + /** + * @deprecated Use abortSignal + * Abort controller. Used for ending the waiter early. + */ + abortController?: AbortController | DeprecatedAbortController; + /** + * Abort Signal. Used for ending the waiter early. + */ + abortSignal?: AbortController["signal"] | DeprecatedAbortController["signal"]; + /** + * The minimum amount of time to delay between retries in seconds. This is the + * floor of the exponential backoff. This value defaults to service default + * if not specified. This value MUST be less than or equal to maxDelay and greater than 0. + */ + minDelay?: number; + /** + * The maximum amount of time to delay between retries in seconds. This is the + * ceiling of the exponential backoff. This value defaults to service default + * if not specified. If specified, this value MUST be greater than or equal to 1. + */ + maxDelay?: number; +} diff --git a/food-ordering-app/server/node_modules/@smithy/types/package.json b/food-ordering-app/server/node_modules/@smithy/types/package.json new file mode 100644 index 000000000..fc06ccf96 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/types/package.json @@ -0,0 +1,61 @@ +{ + "name": "@smithy/types", + "version": "4.13.1", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline types", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4 && node scripts/downlevel", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:tsc -p tsconfig.test.json", + "extract:docs": "api-extractor run --local" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS Smithy Team", + "email": "", + "url": "https://smithy.io" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<=4.0": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/types", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/types" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/url-parser/LICENSE b/food-ordering-app/server/node_modules/@smithy/url-parser/LICENSE new file mode 100644 index 000000000..dd65ae06b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/url-parser/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/food-ordering-app/server/node_modules/@smithy/url-parser/README.md b/food-ordering-app/server/node_modules/@smithy/url-parser/README.md new file mode 100644 index 000000000..0d8d61ef0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/url-parser/README.md @@ -0,0 +1,10 @@ +# @smithy/url-parser + +[![NPM version](https://img.shields.io/npm/v/@smithy/url-parser/latest.svg)](https://www.npmjs.com/package/@smithy/url-parser) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/url-parser.svg)](https://www.npmjs.com/package/@smithy/url-parser) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/food-ordering-app/server/node_modules/@smithy/url-parser/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/url-parser/dist-cjs/index.js new file mode 100644 index 000000000..ddc21b014 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/url-parser/dist-cjs/index.js @@ -0,0 +1,23 @@ +'use strict'; + +var querystringParser = require('@smithy/querystring-parser'); + +const parseUrl = (url) => { + if (typeof url === "string") { + return parseUrl(new URL(url)); + } + const { hostname, pathname, port, protocol, search } = url; + let query; + if (search) { + query = querystringParser.parseQueryString(search); + } + return { + hostname, + port: port ? parseInt(port) : undefined, + protocol, + path: pathname, + query, + }; +}; + +exports.parseUrl = parseUrl; diff --git a/food-ordering-app/server/node_modules/@smithy/url-parser/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/url-parser/dist-es/index.js new file mode 100644 index 000000000..811f8bf89 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/url-parser/dist-es/index.js @@ -0,0 +1,18 @@ +import { parseQueryString } from "@smithy/querystring-parser"; +export const parseUrl = (url) => { + if (typeof url === "string") { + return parseUrl(new URL(url)); + } + const { hostname, pathname, port, protocol, search } = url; + let query; + if (search) { + query = parseQueryString(search); + } + return { + hostname, + port: port ? parseInt(port) : undefined, + protocol, + path: pathname, + query, + }; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/url-parser/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/url-parser/dist-types/index.d.ts new file mode 100644 index 000000000..9b66f46d9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/url-parser/dist-types/index.d.ts @@ -0,0 +1,5 @@ +import type { UrlParser } from "@smithy/types"; +/** + * @internal + */ +export declare const parseUrl: UrlParser; diff --git a/food-ordering-app/server/node_modules/@smithy/url-parser/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/url-parser/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..b0d91c9b7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/url-parser/dist-types/ts3.4/index.d.ts @@ -0,0 +1,5 @@ +import { UrlParser } from "@smithy/types"; +/** + * @internal + */ +export declare const parseUrl: UrlParser; diff --git a/food-ordering-app/server/node_modules/@smithy/url-parser/package.json b/food-ordering-app/server/node_modules/@smithy/url-parser/package.json new file mode 100644 index 000000000..26ba7643d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/url-parser/package.json @@ -0,0 +1,62 @@ +{ + "name": "@smithy/url-parser", + "version": "4.2.12", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline url-parser", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/querystring-parser": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/url-parser", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/url-parser" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + }, + "engines": { + "node": ">=18.0.0" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/util-base64/LICENSE b/food-ordering-app/server/node_modules/@smithy/util-base64/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-base64/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/util-base64/README.md b/food-ordering-app/server/node_modules/@smithy/util-base64/README.md new file mode 100644 index 000000000..c9b6c87f7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-base64/README.md @@ -0,0 +1,4 @@ +# @smithy/util-base64 + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-base64/latest.svg)](https://www.npmjs.com/package/@smithy/util-base64) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-base64.svg)](https://www.npmjs.com/package/@smithy/util-base64) diff --git a/food-ordering-app/server/node_modules/@smithy/util-base64/dist-cjs/constants.browser.js b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-cjs/constants.browser.js new file mode 100644 index 000000000..a41d4de4c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-cjs/constants.browser.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.maxLetterValue = exports.bitsPerByte = exports.bitsPerLetter = exports.alphabetByValue = exports.alphabetByEncoding = void 0; +const chars = `ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`; +exports.alphabetByEncoding = Object.entries(chars).reduce((acc, [i, c]) => { + acc[c] = Number(i); + return acc; +}, {}); +exports.alphabetByValue = chars.split(""); +exports.bitsPerLetter = 6; +exports.bitsPerByte = 8; +exports.maxLetterValue = 0b111111; diff --git a/food-ordering-app/server/node_modules/@smithy/util-base64/dist-cjs/fromBase64.browser.js b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-cjs/fromBase64.browser.js new file mode 100644 index 000000000..a5baffd08 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-cjs/fromBase64.browser.js @@ -0,0 +1,40 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromBase64 = void 0; +const constants_browser_1 = require("./constants.browser"); +const fromBase64 = (input) => { + let totalByteLength = (input.length / 4) * 3; + if (input.slice(-2) === "==") { + totalByteLength -= 2; + } + else if (input.slice(-1) === "=") { + totalByteLength--; + } + const out = new ArrayBuffer(totalByteLength); + const dataView = new DataView(out); + for (let i = 0; i < input.length; i += 4) { + let bits = 0; + let bitLength = 0; + for (let j = i, limit = i + 3; j <= limit; j++) { + if (input[j] !== "=") { + if (!(input[j] in constants_browser_1.alphabetByEncoding)) { + throw new TypeError(`Invalid character ${input[j]} in base64 string.`); + } + bits |= constants_browser_1.alphabetByEncoding[input[j]] << ((limit - j) * constants_browser_1.bitsPerLetter); + bitLength += constants_browser_1.bitsPerLetter; + } + else { + bits >>= constants_browser_1.bitsPerLetter; + } + } + const chunkOffset = (i / 4) * 3; + bits >>= bitLength % constants_browser_1.bitsPerByte; + const byteLength = Math.floor(bitLength / constants_browser_1.bitsPerByte); + for (let k = 0; k < byteLength; k++) { + const offset = (byteLength - k - 1) * constants_browser_1.bitsPerByte; + dataView.setUint8(chunkOffset + k, (bits & (255 << offset)) >> offset); + } + } + return new Uint8Array(out); +}; +exports.fromBase64 = fromBase64; diff --git a/food-ordering-app/server/node_modules/@smithy/util-base64/dist-cjs/fromBase64.js b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-cjs/fromBase64.js new file mode 100644 index 000000000..b06a7b87a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-cjs/fromBase64.js @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromBase64 = void 0; +const util_buffer_from_1 = require("@smithy/util-buffer-from"); +const BASE64_REGEX = /^[A-Za-z0-9+/]*={0,2}$/; +const fromBase64 = (input) => { + if ((input.length * 3) % 4 !== 0) { + throw new TypeError(`Incorrect padding on base64 string.`); + } + if (!BASE64_REGEX.exec(input)) { + throw new TypeError(`Invalid base64 string.`); + } + const buffer = (0, util_buffer_from_1.fromString)(input, "base64"); + return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength); +}; +exports.fromBase64 = fromBase64; diff --git a/food-ordering-app/server/node_modules/@smithy/util-base64/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-cjs/index.js new file mode 100644 index 000000000..e00204620 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-cjs/index.js @@ -0,0 +1,27 @@ +'use strict'; + +var fromBase64 = require('./fromBase64'); +var toBase64 = require('./toBase64'); + + + +Object.prototype.hasOwnProperty.call(fromBase64, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: fromBase64['__proto__'] + }); + +Object.keys(fromBase64).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = fromBase64[k]; +}); +Object.prototype.hasOwnProperty.call(toBase64, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: toBase64['__proto__'] + }); + +Object.keys(toBase64).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = toBase64[k]; +}); diff --git a/food-ordering-app/server/node_modules/@smithy/util-base64/dist-cjs/toBase64.browser.js b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-cjs/toBase64.browser.js new file mode 100644 index 000000000..612ba5775 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-cjs/toBase64.browser.js @@ -0,0 +1,38 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.toBase64 = toBase64; +const util_utf8_1 = require("@smithy/util-utf8"); +const constants_browser_1 = require("./constants.browser"); +function toBase64(_input) { + let input; + if (typeof _input === "string") { + input = (0, util_utf8_1.fromUtf8)(_input); + } + else { + input = _input; + } + const isArrayLike = typeof input === "object" && typeof input.length === "number"; + const isUint8Array = typeof input === "object" && + typeof input.byteOffset === "number" && + typeof input.byteLength === "number"; + if (!isArrayLike && !isUint8Array) { + throw new Error("@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array."); + } + let str = ""; + for (let i = 0; i < input.length; i += 3) { + let bits = 0; + let bitLength = 0; + for (let j = i, limit = Math.min(i + 3, input.length); j < limit; j++) { + bits |= input[j] << ((limit - j - 1) * constants_browser_1.bitsPerByte); + bitLength += constants_browser_1.bitsPerByte; + } + const bitClusterCount = Math.ceil(bitLength / constants_browser_1.bitsPerLetter); + bits <<= bitClusterCount * constants_browser_1.bitsPerLetter - bitLength; + for (let k = 1; k <= bitClusterCount; k++) { + const offset = (bitClusterCount - k) * constants_browser_1.bitsPerLetter; + str += constants_browser_1.alphabetByValue[(bits & (constants_browser_1.maxLetterValue << offset)) >> offset]; + } + str += "==".slice(0, 4 - bitClusterCount); + } + return str; +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-base64/dist-cjs/toBase64.js b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-cjs/toBase64.js new file mode 100644 index 000000000..0590ce3fb --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-cjs/toBase64.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.toBase64 = void 0; +const util_buffer_from_1 = require("@smithy/util-buffer-from"); +const util_utf8_1 = require("@smithy/util-utf8"); +const toBase64 = (_input) => { + let input; + if (typeof _input === "string") { + input = (0, util_utf8_1.fromUtf8)(_input); + } + else { + input = _input; + } + if (typeof input !== "object" || typeof input.byteOffset !== "number" || typeof input.byteLength !== "number") { + throw new Error("@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array."); + } + return (0, util_buffer_from_1.fromArrayBuffer)(input.buffer, input.byteOffset, input.byteLength).toString("base64"); +}; +exports.toBase64 = toBase64; diff --git a/food-ordering-app/server/node_modules/@smithy/util-base64/dist-es/constants.browser.js b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-es/constants.browser.js new file mode 100644 index 000000000..7a5d1b352 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-es/constants.browser.js @@ -0,0 +1,9 @@ +const chars = `ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`; +export const alphabetByEncoding = Object.entries(chars).reduce((acc, [i, c]) => { + acc[c] = Number(i); + return acc; +}, {}); +export const alphabetByValue = chars.split(""); +export const bitsPerLetter = 6; +export const bitsPerByte = 8; +export const maxLetterValue = 0b111111; diff --git a/food-ordering-app/server/node_modules/@smithy/util-base64/dist-es/fromBase64.browser.js b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-es/fromBase64.browser.js new file mode 100644 index 000000000..c2c6a66db --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-es/fromBase64.browser.js @@ -0,0 +1,36 @@ +import { alphabetByEncoding, bitsPerByte, bitsPerLetter } from "./constants.browser"; +export const fromBase64 = (input) => { + let totalByteLength = (input.length / 4) * 3; + if (input.slice(-2) === "==") { + totalByteLength -= 2; + } + else if (input.slice(-1) === "=") { + totalByteLength--; + } + const out = new ArrayBuffer(totalByteLength); + const dataView = new DataView(out); + for (let i = 0; i < input.length; i += 4) { + let bits = 0; + let bitLength = 0; + for (let j = i, limit = i + 3; j <= limit; j++) { + if (input[j] !== "=") { + if (!(input[j] in alphabetByEncoding)) { + throw new TypeError(`Invalid character ${input[j]} in base64 string.`); + } + bits |= alphabetByEncoding[input[j]] << ((limit - j) * bitsPerLetter); + bitLength += bitsPerLetter; + } + else { + bits >>= bitsPerLetter; + } + } + const chunkOffset = (i / 4) * 3; + bits >>= bitLength % bitsPerByte; + const byteLength = Math.floor(bitLength / bitsPerByte); + for (let k = 0; k < byteLength; k++) { + const offset = (byteLength - k - 1) * bitsPerByte; + dataView.setUint8(chunkOffset + k, (bits & (255 << offset)) >> offset); + } + } + return new Uint8Array(out); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-base64/dist-es/fromBase64.js b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-es/fromBase64.js new file mode 100644 index 000000000..5197e93bb --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-es/fromBase64.js @@ -0,0 +1,12 @@ +import { fromString } from "@smithy/util-buffer-from"; +const BASE64_REGEX = /^[A-Za-z0-9+/]*={0,2}$/; +export const fromBase64 = (input) => { + if ((input.length * 3) % 4 !== 0) { + throw new TypeError(`Incorrect padding on base64 string.`); + } + if (!BASE64_REGEX.exec(input)) { + throw new TypeError(`Invalid base64 string.`); + } + const buffer = fromString(input, "base64"); + return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-base64/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-es/index.js new file mode 100644 index 000000000..594bd4350 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-es/index.js @@ -0,0 +1,2 @@ +export * from "./fromBase64"; +export * from "./toBase64"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-base64/dist-es/toBase64.browser.js b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-es/toBase64.browser.js new file mode 100644 index 000000000..2a03a9d06 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-es/toBase64.browser.js @@ -0,0 +1,35 @@ +import { fromUtf8 } from "@smithy/util-utf8"; +import { alphabetByValue, bitsPerByte, bitsPerLetter, maxLetterValue } from "./constants.browser"; +export function toBase64(_input) { + let input; + if (typeof _input === "string") { + input = fromUtf8(_input); + } + else { + input = _input; + } + const isArrayLike = typeof input === "object" && typeof input.length === "number"; + const isUint8Array = typeof input === "object" && + typeof input.byteOffset === "number" && + typeof input.byteLength === "number"; + if (!isArrayLike && !isUint8Array) { + throw new Error("@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array."); + } + let str = ""; + for (let i = 0; i < input.length; i += 3) { + let bits = 0; + let bitLength = 0; + for (let j = i, limit = Math.min(i + 3, input.length); j < limit; j++) { + bits |= input[j] << ((limit - j - 1) * bitsPerByte); + bitLength += bitsPerByte; + } + const bitClusterCount = Math.ceil(bitLength / bitsPerLetter); + bits <<= bitClusterCount * bitsPerLetter - bitLength; + for (let k = 1; k <= bitClusterCount; k++) { + const offset = (bitClusterCount - k) * bitsPerLetter; + str += alphabetByValue[(bits & (maxLetterValue << offset)) >> offset]; + } + str += "==".slice(0, 4 - bitClusterCount); + } + return str; +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-base64/dist-es/toBase64.js b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-es/toBase64.js new file mode 100644 index 000000000..61f03ce66 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-es/toBase64.js @@ -0,0 +1,15 @@ +import { fromArrayBuffer } from "@smithy/util-buffer-from"; +import { fromUtf8 } from "@smithy/util-utf8"; +export const toBase64 = (_input) => { + let input; + if (typeof _input === "string") { + input = fromUtf8(_input); + } + else { + input = _input; + } + if (typeof input !== "object" || typeof input.byteOffset !== "number" || typeof input.byteLength !== "number") { + throw new Error("@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array."); + } + return fromArrayBuffer(input.buffer, input.byteOffset, input.byteLength).toString("base64"); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/constants.browser.d.ts b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/constants.browser.d.ts new file mode 100644 index 000000000..29bb817b2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/constants.browser.d.ts @@ -0,0 +1,5 @@ +export declare const alphabetByEncoding: Record; +export declare const alphabetByValue: Array; +export declare const bitsPerLetter = 6; +export declare const bitsPerByte = 8; +export declare const maxLetterValue = 63; diff --git a/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/fromBase64.browser.d.ts b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/fromBase64.browser.d.ts new file mode 100644 index 000000000..6a640f140 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/fromBase64.browser.d.ts @@ -0,0 +1,8 @@ +/** + * Converts a base-64 encoded string to a Uint8Array of bytes. + * + * @param input The base-64 encoded string + * + * @see https://tools.ietf.org/html/rfc4648#section-4 + */ +export declare const fromBase64: (input: string) => Uint8Array; diff --git a/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/fromBase64.d.ts b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/fromBase64.d.ts new file mode 100644 index 000000000..1878a8914 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/fromBase64.d.ts @@ -0,0 +1,7 @@ +/** + * Converts a base-64 encoded string to a Uint8Array of bytes using Node.JS's + * `buffer` module. + * + * @param input The base-64 encoded string + */ +export declare const fromBase64: (input: string) => Uint8Array; diff --git a/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/index.d.ts new file mode 100644 index 000000000..594bd4350 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/index.d.ts @@ -0,0 +1,2 @@ +export * from "./fromBase64"; +export * from "./toBase64"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/toBase64.browser.d.ts b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/toBase64.browser.d.ts new file mode 100644 index 000000000..5f5615e82 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/toBase64.browser.d.ts @@ -0,0 +1,9 @@ +/** + * Converts a Uint8Array of binary data or a utf-8 string to a base-64 encoded string. + * + * @param _input - the binary data or string to encode. + * @returns base64 string. + * + * @see https://tools.ietf.org/html/rfc4648#section-4 + */ +export declare function toBase64(_input: Uint8Array | string): string; diff --git a/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/toBase64.d.ts b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/toBase64.d.ts new file mode 100644 index 000000000..96bd0eddd --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/toBase64.d.ts @@ -0,0 +1,8 @@ +/** + * Converts a Uint8Array of binary data or a utf-8 string to a base-64 encoded string using + * Node.JS's `buffer` module. + * + * @param _input - the binary data or string to encode. + * @returns base64 string. + */ +export declare const toBase64: (_input: Uint8Array | string) => string; diff --git a/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/ts3.4/constants.browser.d.ts b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/ts3.4/constants.browser.d.ts new file mode 100644 index 000000000..29bb817b2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/ts3.4/constants.browser.d.ts @@ -0,0 +1,5 @@ +export declare const alphabetByEncoding: Record; +export declare const alphabetByValue: Array; +export declare const bitsPerLetter = 6; +export declare const bitsPerByte = 8; +export declare const maxLetterValue = 63; diff --git a/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/ts3.4/fromBase64.browser.d.ts b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/ts3.4/fromBase64.browser.d.ts new file mode 100644 index 000000000..6a640f140 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/ts3.4/fromBase64.browser.d.ts @@ -0,0 +1,8 @@ +/** + * Converts a base-64 encoded string to a Uint8Array of bytes. + * + * @param input The base-64 encoded string + * + * @see https://tools.ietf.org/html/rfc4648#section-4 + */ +export declare const fromBase64: (input: string) => Uint8Array; diff --git a/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/ts3.4/fromBase64.d.ts b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/ts3.4/fromBase64.d.ts new file mode 100644 index 000000000..1878a8914 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/ts3.4/fromBase64.d.ts @@ -0,0 +1,7 @@ +/** + * Converts a base-64 encoded string to a Uint8Array of bytes using Node.JS's + * `buffer` module. + * + * @param input The base-64 encoded string + */ +export declare const fromBase64: (input: string) => Uint8Array; diff --git a/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..594bd4350 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/ts3.4/index.d.ts @@ -0,0 +1,2 @@ +export * from "./fromBase64"; +export * from "./toBase64"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/ts3.4/toBase64.browser.d.ts b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/ts3.4/toBase64.browser.d.ts new file mode 100644 index 000000000..5f5615e82 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/ts3.4/toBase64.browser.d.ts @@ -0,0 +1,9 @@ +/** + * Converts a Uint8Array of binary data or a utf-8 string to a base-64 encoded string. + * + * @param _input - the binary data or string to encode. + * @returns base64 string. + * + * @see https://tools.ietf.org/html/rfc4648#section-4 + */ +export declare function toBase64(_input: Uint8Array | string): string; diff --git a/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/ts3.4/toBase64.d.ts b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/ts3.4/toBase64.d.ts new file mode 100644 index 000000000..96bd0eddd --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-base64/dist-types/ts3.4/toBase64.d.ts @@ -0,0 +1,8 @@ +/** + * Converts a Uint8Array of binary data or a utf-8 string to a base-64 encoded string using + * Node.JS's `buffer` module. + * + * @param _input - the binary data or string to encode. + * @returns base64 string. + */ +export declare const toBase64: (_input: Uint8Array | string) => string; diff --git a/food-ordering-app/server/node_modules/@smithy/util-base64/package.json b/food-ordering-app/server/node_modules/@smithy/util-base64/package.json new file mode 100644 index 000000000..462f819af --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-base64/package.json @@ -0,0 +1,74 @@ +{ + "name": "@smithy/util-base64", + "version": "4.3.2", + "description": "A Base64 <-> UInt8Array converter", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-base64", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "browser": { + "./dist-es/fromBase64": "./dist-es/fromBase64.browser", + "./dist-es/toBase64": "./dist-es/toBase64.browser" + }, + "react-native": { + "./dist-es/fromBase64": "./dist-es/fromBase64.browser", + "./dist-es/toBase64": "./dist-es/toBase64.browser", + "./dist-cjs/fromBase64": "./dist-cjs/fromBase64.browser", + "./dist-cjs/toBase64": "./dist-cjs/toBase64.browser" + }, + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/util-base64", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/util-base64" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/util-body-length-browser/LICENSE b/food-ordering-app/server/node_modules/@smithy/util-body-length-browser/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-body-length-browser/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/util-body-length-browser/README.md b/food-ordering-app/server/node_modules/@smithy/util-body-length-browser/README.md new file mode 100644 index 000000000..460d0929f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-body-length-browser/README.md @@ -0,0 +1,12 @@ +# @smithy/util-body-length-browser + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-body-length-browser/latest.svg)](https://www.npmjs.com/package/@smithy/util-body-length-browser) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-body-length-browser.svg)](https://www.npmjs.com/package/@smithy/util-body-length-browser) + +Determines the length of a request body in browsers + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/food-ordering-app/server/node_modules/@smithy/util-body-length-browser/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/util-body-length-browser/dist-cjs/index.js new file mode 100644 index 000000000..5cf421cb6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-body-length-browser/dist-cjs/index.js @@ -0,0 +1,30 @@ +'use strict'; + +const TEXT_ENCODER = typeof TextEncoder == "function" ? new TextEncoder() : null; +const calculateBodyLength = (body) => { + if (typeof body === "string") { + if (TEXT_ENCODER) { + return TEXT_ENCODER.encode(body).byteLength; + } + let len = body.length; + for (let i = len - 1; i >= 0; i--) { + const code = body.charCodeAt(i); + if (code > 0x7f && code <= 0x7ff) + len++; + else if (code > 0x7ff && code <= 0xffff) + len += 2; + if (code >= 0xdc00 && code <= 0xdfff) + i--; + } + return len; + } + else if (typeof body.byteLength === "number") { + return body.byteLength; + } + else if (typeof body.size === "number") { + return body.size; + } + throw new Error(`Body Length computation failed for ${body}`); +}; + +exports.calculateBodyLength = calculateBodyLength; diff --git a/food-ordering-app/server/node_modules/@smithy/util-body-length-browser/dist-es/calculateBodyLength.js b/food-ordering-app/server/node_modules/@smithy/util-body-length-browser/dist-es/calculateBodyLength.js new file mode 100644 index 000000000..6b994ca22 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-body-length-browser/dist-es/calculateBodyLength.js @@ -0,0 +1,26 @@ +const TEXT_ENCODER = typeof TextEncoder == "function" ? new TextEncoder() : null; +export const calculateBodyLength = (body) => { + if (typeof body === "string") { + if (TEXT_ENCODER) { + return TEXT_ENCODER.encode(body).byteLength; + } + let len = body.length; + for (let i = len - 1; i >= 0; i--) { + const code = body.charCodeAt(i); + if (code > 0x7f && code <= 0x7ff) + len++; + else if (code > 0x7ff && code <= 0xffff) + len += 2; + if (code >= 0xdc00 && code <= 0xdfff) + i--; + } + return len; + } + else if (typeof body.byteLength === "number") { + return body.byteLength; + } + else if (typeof body.size === "number") { + return body.size; + } + throw new Error(`Body Length computation failed for ${body}`); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-body-length-browser/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/util-body-length-browser/dist-es/index.js new file mode 100644 index 000000000..16ba478e2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-body-length-browser/dist-es/index.js @@ -0,0 +1 @@ +export * from "./calculateBodyLength"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-body-length-browser/dist-types/calculateBodyLength.d.ts b/food-ordering-app/server/node_modules/@smithy/util-body-length-browser/dist-types/calculateBodyLength.d.ts new file mode 100644 index 000000000..8e1bdb018 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-body-length-browser/dist-types/calculateBodyLength.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const calculateBodyLength: (body: any) => number | undefined; diff --git a/food-ordering-app/server/node_modules/@smithy/util-body-length-browser/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-body-length-browser/dist-types/index.d.ts new file mode 100644 index 000000000..7b4a0d7f4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-body-length-browser/dist-types/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export * from "./calculateBodyLength"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-body-length-browser/dist-types/ts3.4/calculateBodyLength.d.ts b/food-ordering-app/server/node_modules/@smithy/util-body-length-browser/dist-types/ts3.4/calculateBodyLength.d.ts new file mode 100644 index 000000000..8e1bdb018 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-body-length-browser/dist-types/ts3.4/calculateBodyLength.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const calculateBodyLength: (body: any) => number | undefined; diff --git a/food-ordering-app/server/node_modules/@smithy/util-body-length-browser/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-body-length-browser/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..7b4a0d7f4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-body-length-browser/dist-types/ts3.4/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export * from "./calculateBodyLength"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-body-length-browser/package.json b/food-ordering-app/server/node_modules/@smithy/util-body-length-browser/package.json new file mode 100644 index 000000000..8acddaa1d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-body-length-browser/package.json @@ -0,0 +1,61 @@ +{ + "name": "@smithy/util-body-length-browser", + "description": "Determines the length of a request body in browsers", + "version": "4.2.2", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-body-length-browser", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "tslib": "^2.6.2" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/util-body-length-browser", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/util-body-length-browser" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + }, + "engines": { + "node": ">=18.0.0" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/util-body-length-node/LICENSE b/food-ordering-app/server/node_modules/@smithy/util-body-length-node/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-body-length-node/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/util-body-length-node/README.md b/food-ordering-app/server/node_modules/@smithy/util-body-length-node/README.md new file mode 100644 index 000000000..9a80efe51 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-body-length-node/README.md @@ -0,0 +1,12 @@ +# @smithy/util-body-length-node + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-body-length-node/latest.svg)](https://www.npmjs.com/package/@smithy/util-body-length-node) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-body-length-node.svg)](https://www.npmjs.com/package/@smithy/util-body-length-node) + +Determines the length of a request body in node.js + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/food-ordering-app/server/node_modules/@smithy/util-body-length-node/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/util-body-length-node/dist-cjs/index.js new file mode 100644 index 000000000..a388e288d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-body-length-node/dist-cjs/index.js @@ -0,0 +1,32 @@ +'use strict'; + +var node_fs = require('node:fs'); + +const calculateBodyLength = (body) => { + if (!body) { + return 0; + } + if (typeof body === "string") { + return Buffer.byteLength(body); + } + else if (typeof body.byteLength === "number") { + return body.byteLength; + } + else if (typeof body.size === "number") { + return body.size; + } + else if (typeof body.start === "number" && typeof body.end === "number") { + return body.end + 1 - body.start; + } + else if (body instanceof node_fs.ReadStream) { + if (body.path != null) { + return node_fs.lstatSync(body.path).size; + } + else if (typeof body.fd === "number") { + return node_fs.fstatSync(body.fd).size; + } + } + throw new Error(`Body Length computation failed for ${body}`); +}; + +exports.calculateBodyLength = calculateBodyLength; diff --git a/food-ordering-app/server/node_modules/@smithy/util-body-length-node/dist-es/calculateBodyLength.js b/food-ordering-app/server/node_modules/@smithy/util-body-length-node/dist-es/calculateBodyLength.js new file mode 100644 index 000000000..924c033df --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-body-length-node/dist-es/calculateBodyLength.js @@ -0,0 +1,27 @@ +import { fstatSync, lstatSync, ReadStream } from "node:fs"; +export const calculateBodyLength = (body) => { + if (!body) { + return 0; + } + if (typeof body === "string") { + return Buffer.byteLength(body); + } + else if (typeof body.byteLength === "number") { + return body.byteLength; + } + else if (typeof body.size === "number") { + return body.size; + } + else if (typeof body.start === "number" && typeof body.end === "number") { + return body.end + 1 - body.start; + } + else if (body instanceof ReadStream) { + if (body.path != null) { + return lstatSync(body.path).size; + } + else if (typeof body.fd === "number") { + return fstatSync(body.fd).size; + } + } + throw new Error(`Body Length computation failed for ${body}`); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-body-length-node/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/util-body-length-node/dist-es/index.js new file mode 100644 index 000000000..16ba478e2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-body-length-node/dist-es/index.js @@ -0,0 +1 @@ +export * from "./calculateBodyLength"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-body-length-node/dist-types/calculateBodyLength.d.ts b/food-ordering-app/server/node_modules/@smithy/util-body-length-node/dist-types/calculateBodyLength.d.ts new file mode 100644 index 000000000..8e1bdb018 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-body-length-node/dist-types/calculateBodyLength.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const calculateBodyLength: (body: any) => number | undefined; diff --git a/food-ordering-app/server/node_modules/@smithy/util-body-length-node/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-body-length-node/dist-types/index.d.ts new file mode 100644 index 000000000..7b4a0d7f4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-body-length-node/dist-types/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export * from "./calculateBodyLength"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-body-length-node/dist-types/ts3.4/calculateBodyLength.d.ts b/food-ordering-app/server/node_modules/@smithy/util-body-length-node/dist-types/ts3.4/calculateBodyLength.d.ts new file mode 100644 index 000000000..8e1bdb018 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-body-length-node/dist-types/ts3.4/calculateBodyLength.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const calculateBodyLength: (body: any) => number | undefined; diff --git a/food-ordering-app/server/node_modules/@smithy/util-body-length-node/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-body-length-node/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..7b4a0d7f4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-body-length-node/dist-types/ts3.4/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export * from "./calculateBodyLength"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-body-length-node/package.json b/food-ordering-app/server/node_modules/@smithy/util-body-length-node/package.json new file mode 100644 index 000000000..9cacb02ec --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-body-length-node/package.json @@ -0,0 +1,62 @@ +{ + "name": "@smithy/util-body-length-node", + "description": "Determines the length of a request body in node.js", + "version": "4.2.3", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-body-length-node", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "devDependencies": { + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/util-body-length-node", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/util-body-length-node" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/util-buffer-from/LICENSE b/food-ordering-app/server/node_modules/@smithy/util-buffer-from/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-buffer-from/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/util-buffer-from/README.md b/food-ordering-app/server/node_modules/@smithy/util-buffer-from/README.md new file mode 100644 index 000000000..c896b04ae --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-buffer-from/README.md @@ -0,0 +1,10 @@ +# @smithy/util-buffer-from + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-buffer-from/latest.svg)](https://www.npmjs.com/package/@smithy/util-buffer-from) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-buffer-from.svg)](https://www.npmjs.com/package/@smithy/util-buffer-from) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/food-ordering-app/server/node_modules/@smithy/util-buffer-from/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/util-buffer-from/dist-cjs/index.js new file mode 100644 index 000000000..b577c9cae --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-buffer-from/dist-cjs/index.js @@ -0,0 +1,20 @@ +'use strict'; + +var isArrayBuffer = require('@smithy/is-array-buffer'); +var buffer = require('buffer'); + +const fromArrayBuffer = (input, offset = 0, length = input.byteLength - offset) => { + if (!isArrayBuffer.isArrayBuffer(input)) { + throw new TypeError(`The "input" argument must be ArrayBuffer. Received type ${typeof input} (${input})`); + } + return buffer.Buffer.from(input, offset, length); +}; +const fromString = (input, encoding) => { + if (typeof input !== "string") { + throw new TypeError(`The "input" argument must be of type string. Received type ${typeof input} (${input})`); + } + return encoding ? buffer.Buffer.from(input, encoding) : buffer.Buffer.from(input); +}; + +exports.fromArrayBuffer = fromArrayBuffer; +exports.fromString = fromString; diff --git a/food-ordering-app/server/node_modules/@smithy/util-buffer-from/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/util-buffer-from/dist-es/index.js new file mode 100644 index 000000000..718f83158 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-buffer-from/dist-es/index.js @@ -0,0 +1,14 @@ +import { isArrayBuffer } from "@smithy/is-array-buffer"; +import { Buffer } from "buffer"; +export const fromArrayBuffer = (input, offset = 0, length = input.byteLength - offset) => { + if (!isArrayBuffer(input)) { + throw new TypeError(`The "input" argument must be ArrayBuffer. Received type ${typeof input} (${input})`); + } + return Buffer.from(input, offset, length); +}; +export const fromString = (input, encoding) => { + if (typeof input !== "string") { + throw new TypeError(`The "input" argument must be of type string. Received type ${typeof input} (${input})`); + } + return encoding ? Buffer.from(input, encoding) : Buffer.from(input); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-buffer-from/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-buffer-from/dist-types/index.d.ts new file mode 100644 index 000000000..a523134a5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-buffer-from/dist-types/index.d.ts @@ -0,0 +1,13 @@ +import { Buffer } from "buffer"; +/** + * @internal + */ +export declare const fromArrayBuffer: (input: ArrayBuffer, offset?: number, length?: number) => Buffer; +/** + * @internal + */ +export type StringEncoding = "ascii" | "utf8" | "utf16le" | "ucs2" | "base64" | "latin1" | "binary" | "hex"; +/** + * @internal + */ +export declare const fromString: (input: string, encoding?: StringEncoding) => Buffer; diff --git a/food-ordering-app/server/node_modules/@smithy/util-buffer-from/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-buffer-from/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..a523134a5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-buffer-from/dist-types/ts3.4/index.d.ts @@ -0,0 +1,13 @@ +import { Buffer } from "buffer"; +/** + * @internal + */ +export declare const fromArrayBuffer: (input: ArrayBuffer, offset?: number, length?: number) => Buffer; +/** + * @internal + */ +export type StringEncoding = "ascii" | "utf8" | "utf16le" | "ucs2" | "base64" | "latin1" | "binary" | "hex"; +/** + * @internal + */ +export declare const fromString: (input: string, encoding?: StringEncoding) => Buffer; diff --git a/food-ordering-app/server/node_modules/@smithy/util-buffer-from/package.json b/food-ordering-app/server/node_modules/@smithy/util-buffer-from/package.json new file mode 100644 index 000000000..daa813d55 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-buffer-from/package.json @@ -0,0 +1,62 @@ +{ + "name": "@smithy/util-buffer-from", + "version": "4.2.2", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-buffer-from", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/is-array-buffer": "^4.2.2", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/util-buffer-from", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/util-buffer-from" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/util-config-provider/LICENSE b/food-ordering-app/server/node_modules/@smithy/util-config-provider/LICENSE new file mode 100644 index 000000000..74d4e5c31 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-config-provider/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/util-config-provider/README.md b/food-ordering-app/server/node_modules/@smithy/util-config-provider/README.md new file mode 100644 index 000000000..5b0341d0f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-config-provider/README.md @@ -0,0 +1,4 @@ +# @smithy/util-config-provider + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-config-provider/latest.svg)](https://www.npmjs.com/package/@smithy/util-config-provider) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-config-provider.svg)](https://www.npmjs.com/package/@smithy/util-config-provider) diff --git a/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-cjs/index.js new file mode 100644 index 000000000..52d176d5d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-cjs/index.js @@ -0,0 +1,30 @@ +'use strict'; + +const booleanSelector = (obj, key, type) => { + if (!(key in obj)) + return undefined; + if (obj[key] === "true") + return true; + if (obj[key] === "false") + return false; + throw new Error(`Cannot load ${type} "${key}". Expected "true" or "false", got ${obj[key]}.`); +}; + +const numberSelector = (obj, key, type) => { + if (!(key in obj)) + return undefined; + const numberValue = parseInt(obj[key], 10); + if (Number.isNaN(numberValue)) { + throw new TypeError(`Cannot load ${type} '${key}'. Expected number, got '${obj[key]}'.`); + } + return numberValue; +}; + +exports.SelectorType = void 0; +(function (SelectorType) { + SelectorType["ENV"] = "env"; + SelectorType["CONFIG"] = "shared config entry"; +})(exports.SelectorType || (exports.SelectorType = {})); + +exports.booleanSelector = booleanSelector; +exports.numberSelector = numberSelector; diff --git a/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-es/booleanSelector.js b/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-es/booleanSelector.js new file mode 100644 index 000000000..6ba2261f1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-es/booleanSelector.js @@ -0,0 +1,9 @@ +export const booleanSelector = (obj, key, type) => { + if (!(key in obj)) + return undefined; + if (obj[key] === "true") + return true; + if (obj[key] === "false") + return false; + throw new Error(`Cannot load ${type} "${key}". Expected "true" or "false", got ${obj[key]}.`); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-es/index.js new file mode 100644 index 000000000..a926de84c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-es/index.js @@ -0,0 +1,3 @@ +export * from "./booleanSelector"; +export * from "./numberSelector"; +export * from "./types"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-es/numberSelector.js b/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-es/numberSelector.js new file mode 100644 index 000000000..81cfe404a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-es/numberSelector.js @@ -0,0 +1,9 @@ +export const numberSelector = (obj, key, type) => { + if (!(key in obj)) + return undefined; + const numberValue = parseInt(obj[key], 10); + if (Number.isNaN(numberValue)) { + throw new TypeError(`Cannot load ${type} '${key}'. Expected number, got '${obj[key]}'.`); + } + return numberValue; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-es/types.js b/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-es/types.js new file mode 100644 index 000000000..5b10fb552 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-es/types.js @@ -0,0 +1,5 @@ +export var SelectorType; +(function (SelectorType) { + SelectorType["ENV"] = "env"; + SelectorType["CONFIG"] = "shared config entry"; +})(SelectorType || (SelectorType = {})); diff --git a/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-types/booleanSelector.d.ts b/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-types/booleanSelector.d.ts new file mode 100644 index 000000000..6408abf74 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-types/booleanSelector.d.ts @@ -0,0 +1,10 @@ +import type { SelectorType } from "./types"; +/** + * Returns boolean value true/false for string value "true"/"false", + * if the string is defined in obj[key] + * Returns undefined, if obj[key] is not defined. + * Throws error for all other cases. + * + * @internal + */ +export declare const booleanSelector: (obj: Record, key: string, type: SelectorType) => boolean | undefined; diff --git a/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-types/index.d.ts new file mode 100644 index 000000000..a926de84c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-types/index.d.ts @@ -0,0 +1,3 @@ +export * from "./booleanSelector"; +export * from "./numberSelector"; +export * from "./types"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-types/numberSelector.d.ts b/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-types/numberSelector.d.ts new file mode 100644 index 000000000..55ddc29bf --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-types/numberSelector.d.ts @@ -0,0 +1,9 @@ +import type { SelectorType } from "./types"; +/** + * Returns number value for string value, if the string is defined in obj[key]. + * Returns undefined, if obj[key] is not defined. + * Throws error for all other cases. + * + * @internal + */ +export declare const numberSelector: (obj: Record, key: string, type: SelectorType) => number | undefined; diff --git a/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-types/ts3.4/booleanSelector.d.ts b/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-types/ts3.4/booleanSelector.d.ts new file mode 100644 index 000000000..d4977cbc6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-types/ts3.4/booleanSelector.d.ts @@ -0,0 +1,10 @@ +import { SelectorType } from "./types"; +/** + * Returns boolean value true/false for string value "true"/"false", + * if the string is defined in obj[key] + * Returns undefined, if obj[key] is not defined. + * Throws error for all other cases. + * + * @internal + */ +export declare const booleanSelector: (obj: Record, key: string, type: SelectorType) => boolean | undefined; diff --git a/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..a926de84c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-types/ts3.4/index.d.ts @@ -0,0 +1,3 @@ +export * from "./booleanSelector"; +export * from "./numberSelector"; +export * from "./types"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-types/ts3.4/numberSelector.d.ts b/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-types/ts3.4/numberSelector.d.ts new file mode 100644 index 000000000..9e0cbf904 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-types/ts3.4/numberSelector.d.ts @@ -0,0 +1,9 @@ +import { SelectorType } from "./types"; +/** + * Returns number value for string value, if the string is defined in obj[key]. + * Returns undefined, if obj[key] is not defined. + * Throws error for all other cases. + * + * @internal + */ +export declare const numberSelector: (obj: Record, key: string, type: SelectorType) => number | undefined; diff --git a/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-types/ts3.4/types.d.ts b/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-types/ts3.4/types.d.ts new file mode 100644 index 000000000..caa65d7f5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-types/ts3.4/types.d.ts @@ -0,0 +1,4 @@ +export declare enum SelectorType { + ENV = "env", + CONFIG = "shared config entry" +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-types/types.d.ts b/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-types/types.d.ts new file mode 100644 index 000000000..caa65d7f5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-config-provider/dist-types/types.d.ts @@ -0,0 +1,4 @@ +export declare enum SelectorType { + ENV = "env", + CONFIG = "shared config entry" +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-config-provider/package.json b/food-ordering-app/server/node_modules/@smithy/util-config-provider/package.json new file mode 100644 index 000000000..f82d33c71 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-config-provider/package.json @@ -0,0 +1,63 @@ +{ + "name": "@smithy/util-config-provider", + "version": "4.2.2", + "description": "Utilities package for configuration providers", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-config-provider", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "email": "", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "dependencies": { + "tslib": "^2.6.2" + }, + "devDependencies": { + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/util-config-provider", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/util-config-provider" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/LICENSE b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/LICENSE new file mode 100644 index 000000000..dd65ae06b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/README.md b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/README.md new file mode 100644 index 000000000..f2f1cc071 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/README.md @@ -0,0 +1,10 @@ +# @smithy/util-defaults-mode-browser + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-defaults-mode-browser/latest.svg)](https://www.npmjs.com/package/@smithy/util-defaults-mode-browser) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-defaults-mode-browser.svg)](https://www.npmjs.com/package/@smithy/util-defaults-mode-browser) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-cjs/constants.js b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-cjs/constants.js new file mode 100644 index 000000000..373350623 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-cjs/constants.js @@ -0,0 +1,4 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DEFAULTS_MODE_OPTIONS = void 0; +exports.DEFAULTS_MODE_OPTIONS = ["in-region", "cross-region", "mobile", "standard", "legacy"]; diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-cjs/index.js new file mode 100644 index 000000000..c57627232 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-cjs/index.js @@ -0,0 +1,16 @@ +'use strict'; + +var resolveDefaultsModeConfig = require('./resolveDefaultsModeConfig'); + + + +Object.prototype.hasOwnProperty.call(resolveDefaultsModeConfig, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: resolveDefaultsModeConfig['__proto__'] + }); + +Object.keys(resolveDefaultsModeConfig).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = resolveDefaultsModeConfig[k]; +}); diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-cjs/resolveDefaultsModeConfig.js b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-cjs/resolveDefaultsModeConfig.js new file mode 100644 index 000000000..6618f6a19 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-cjs/resolveDefaultsModeConfig.js @@ -0,0 +1,34 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveDefaultsModeConfig = void 0; +const property_provider_1 = require("@smithy/property-provider"); +const constants_1 = require("./constants"); +const resolveDefaultsModeConfig = ({ defaultsMode, } = {}) => (0, property_provider_1.memoize)(async () => { + const mode = typeof defaultsMode === "function" ? await defaultsMode() : defaultsMode; + switch (mode?.toLowerCase()) { + case "auto": + return Promise.resolve(useMobileConfiguration() ? "mobile" : "standard"); + case "mobile": + case "in-region": + case "cross-region": + case "standard": + case "legacy": + return Promise.resolve(mode?.toLocaleLowerCase()); + case undefined: + return Promise.resolve("legacy"); + default: + throw new Error(`Invalid parameter for "defaultsMode", expect ${constants_1.DEFAULTS_MODE_OPTIONS.join(", ")}, got ${mode}`); + } +}); +exports.resolveDefaultsModeConfig = resolveDefaultsModeConfig; +const useMobileConfiguration = () => { + const navigator = window?.navigator; + if (navigator?.connection) { + const { effectiveType, rtt, downlink } = navigator?.connection; + const slow = (typeof effectiveType === "string" && effectiveType !== "4g") || Number(rtt) > 100 || Number(downlink) < 10; + if (slow) { + return true; + } + } + return (navigator?.userAgentData?.mobile || (typeof navigator?.maxTouchPoints === "number" && navigator?.maxTouchPoints > 1)); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-cjs/resolveDefaultsModeConfig.native.js b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-cjs/resolveDefaultsModeConfig.native.js new file mode 100644 index 000000000..1aed47a0e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-cjs/resolveDefaultsModeConfig.native.js @@ -0,0 +1,23 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveDefaultsModeConfig = void 0; +const property_provider_1 = require("@smithy/property-provider"); +const constants_1 = require("./constants"); +const resolveDefaultsModeConfig = ({ defaultsMode, } = {}) => (0, property_provider_1.memoize)(async () => { + const mode = typeof defaultsMode === "function" ? await defaultsMode() : defaultsMode; + switch (mode?.toLowerCase()) { + case "auto": + return Promise.resolve("mobile"); + case "mobile": + case "in-region": + case "cross-region": + case "standard": + case "legacy": + return Promise.resolve(mode?.toLocaleLowerCase()); + case undefined: + return Promise.resolve("legacy"); + default: + throw new Error(`Invalid parameter for "defaultsMode", expect ${constants_1.DEFAULTS_MODE_OPTIONS.join(", ")}, got ${mode}`); + } +}); +exports.resolveDefaultsModeConfig = resolveDefaultsModeConfig; diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-es/constants.js b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-es/constants.js new file mode 100644 index 000000000..d58e11f4f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-es/constants.js @@ -0,0 +1 @@ +export const DEFAULTS_MODE_OPTIONS = ["in-region", "cross-region", "mobile", "standard", "legacy"]; diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-es/index.js new file mode 100644 index 000000000..05aa8183e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-es/index.js @@ -0,0 +1 @@ +export * from "./resolveDefaultsModeConfig"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-es/resolveDefaultsModeConfig.js b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-es/resolveDefaultsModeConfig.js new file mode 100644 index 000000000..c8939f241 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-es/resolveDefaultsModeConfig.js @@ -0,0 +1,30 @@ +import { memoize } from "@smithy/property-provider"; +import { DEFAULTS_MODE_OPTIONS } from "./constants"; +export const resolveDefaultsModeConfig = ({ defaultsMode, } = {}) => memoize(async () => { + const mode = typeof defaultsMode === "function" ? await defaultsMode() : defaultsMode; + switch (mode?.toLowerCase()) { + case "auto": + return Promise.resolve(useMobileConfiguration() ? "mobile" : "standard"); + case "mobile": + case "in-region": + case "cross-region": + case "standard": + case "legacy": + return Promise.resolve(mode?.toLocaleLowerCase()); + case undefined: + return Promise.resolve("legacy"); + default: + throw new Error(`Invalid parameter for "defaultsMode", expect ${DEFAULTS_MODE_OPTIONS.join(", ")}, got ${mode}`); + } +}); +const useMobileConfiguration = () => { + const navigator = window?.navigator; + if (navigator?.connection) { + const { effectiveType, rtt, downlink } = navigator?.connection; + const slow = (typeof effectiveType === "string" && effectiveType !== "4g") || Number(rtt) > 100 || Number(downlink) < 10; + if (slow) { + return true; + } + } + return (navigator?.userAgentData?.mobile || (typeof navigator?.maxTouchPoints === "number" && navigator?.maxTouchPoints > 1)); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-es/resolveDefaultsModeConfig.native.js b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-es/resolveDefaultsModeConfig.native.js new file mode 100644 index 000000000..31641910a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-es/resolveDefaultsModeConfig.native.js @@ -0,0 +1,19 @@ +import { memoize } from "@smithy/property-provider"; +import { DEFAULTS_MODE_OPTIONS } from "./constants"; +export const resolveDefaultsModeConfig = ({ defaultsMode, } = {}) => memoize(async () => { + const mode = typeof defaultsMode === "function" ? await defaultsMode() : defaultsMode; + switch (mode?.toLowerCase()) { + case "auto": + return Promise.resolve("mobile"); + case "mobile": + case "in-region": + case "cross-region": + case "standard": + case "legacy": + return Promise.resolve(mode?.toLocaleLowerCase()); + case undefined: + return Promise.resolve("legacy"); + default: + throw new Error(`Invalid parameter for "defaultsMode", expect ${DEFAULTS_MODE_OPTIONS.join(", ")}, got ${mode}`); + } +}); diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-types/constants.d.ts b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-types/constants.d.ts new file mode 100644 index 000000000..18dbe6cc6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-types/constants.d.ts @@ -0,0 +1,12 @@ +import type { DefaultsMode } from "@smithy/smithy-client"; +import type { Provider } from "@smithy/types"; +/** + * @internal + */ +export declare const DEFAULTS_MODE_OPTIONS: string[]; +/** + * @internal + */ +export interface ResolveDefaultsModeConfigOptions { + defaultsMode?: DefaultsMode | Provider; +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-types/index.d.ts new file mode 100644 index 000000000..003de26f8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-types/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export * from "./resolveDefaultsModeConfig"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-types/resolveDefaultsModeConfig.d.ts b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-types/resolveDefaultsModeConfig.d.ts new file mode 100644 index 000000000..e4cc1b7fa --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-types/resolveDefaultsModeConfig.d.ts @@ -0,0 +1,17 @@ +import type { DefaultsMode, ResolvedDefaultsMode } from "@smithy/smithy-client"; +import type { Provider } from "@smithy/types"; +/** + * @internal + */ +export interface ResolveDefaultsModeConfigOptions { + defaultsMode?: DefaultsMode | Provider; +} +/** + * Validate the defaultsMode configuration. If the value is set to "auto", it + * resolves the value to "mobile" if the app is running in a mobile browser, + * otherwise it resolves to "standard". + * + * @default "legacy" + * @internal + */ +export declare const resolveDefaultsModeConfig: ({ defaultsMode, }?: ResolveDefaultsModeConfigOptions) => Provider; diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-types/resolveDefaultsModeConfig.native.d.ts b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-types/resolveDefaultsModeConfig.native.d.ts new file mode 100644 index 000000000..6c48ad8b7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-types/resolveDefaultsModeConfig.native.d.ts @@ -0,0 +1,16 @@ +import type { DefaultsMode, ResolvedDefaultsMode } from "@smithy/smithy-client"; +import type { Provider } from "@smithy/types"; +/** + * @internal + */ +export interface ResolveDefaultsModeConfigOptions { + defaultsMode?: DefaultsMode | Provider; +} +/** + * Validate the defaultsMode configuration. If the value is set to "auto", it + * resolves the value to "mobile". + * + * @default "legacy" + * @internal + */ +export declare const resolveDefaultsModeConfig: ({ defaultsMode, }?: ResolveDefaultsModeConfigOptions) => Provider; diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-types/ts3.4/constants.d.ts b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-types/ts3.4/constants.d.ts new file mode 100644 index 000000000..51add03ac --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-types/ts3.4/constants.d.ts @@ -0,0 +1,12 @@ +import { DefaultsMode } from "@smithy/smithy-client"; +import { Provider } from "@smithy/types"; +/** + * @internal + */ +export declare const DEFAULTS_MODE_OPTIONS: string[]; +/** + * @internal + */ +export interface ResolveDefaultsModeConfigOptions { + defaultsMode?: DefaultsMode | Provider; +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..003de26f8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-types/ts3.4/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export * from "./resolveDefaultsModeConfig"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-types/ts3.4/resolveDefaultsModeConfig.d.ts b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-types/ts3.4/resolveDefaultsModeConfig.d.ts new file mode 100644 index 000000000..8e0b58e89 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-types/ts3.4/resolveDefaultsModeConfig.d.ts @@ -0,0 +1,17 @@ +import { DefaultsMode, ResolvedDefaultsMode } from "@smithy/smithy-client"; +import { Provider } from "@smithy/types"; +/** + * @internal + */ +export interface ResolveDefaultsModeConfigOptions { + defaultsMode?: DefaultsMode | Provider; +} +/** + * Validate the defaultsMode configuration. If the value is set to "auto", it + * resolves the value to "mobile" if the app is running in a mobile browser, + * otherwise it resolves to "standard". + * + * @default "legacy" + * @internal + */ +export declare const resolveDefaultsModeConfig: ({ defaultsMode, }?: ResolveDefaultsModeConfigOptions) => Provider; diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-types/ts3.4/resolveDefaultsModeConfig.native.d.ts b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-types/ts3.4/resolveDefaultsModeConfig.native.d.ts new file mode 100644 index 000000000..6be7fd703 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/dist-types/ts3.4/resolveDefaultsModeConfig.native.d.ts @@ -0,0 +1,16 @@ +import { DefaultsMode, ResolvedDefaultsMode } from "@smithy/smithy-client"; +import { Provider } from "@smithy/types"; +/** + * @internal + */ +export interface ResolveDefaultsModeConfigOptions { + defaultsMode?: DefaultsMode | Provider; +} +/** + * Validate the defaultsMode configuration. If the value is set to "auto", it + * resolves the value to "mobile". + * + * @default "legacy" + * @internal + */ +export declare const resolveDefaultsModeConfig: ({ defaultsMode, }?: ResolveDefaultsModeConfigOptions) => Provider; diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/package.json b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/package.json new file mode 100644 index 000000000..bbb1938e0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-browser/package.json @@ -0,0 +1,66 @@ +{ + "name": "@smithy/util-defaults-mode-browser", + "version": "4.3.41", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-defaults-mode-browser", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/property-provider": "^4.2.12", + "@smithy/smithy-client": "^4.12.5", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "react-native": {}, + "browser": {}, + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/util-defaults-mode-node", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/util-defaults-mode-node" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/LICENSE b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/LICENSE new file mode 100644 index 000000000..dd65ae06b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/README.md b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/README.md new file mode 100644 index 000000000..bfae0bd6a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/README.md @@ -0,0 +1,10 @@ +# @smithy/util-defaults-mode-node + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-defaults-mode-node/latest.svg)](https://www.npmjs.com/package/@smithy/util-defaults-mode-node) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-defaults-mode-node.svg)](https://www.npmjs.com/package/@smithy/util-defaults-mode-node) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-cjs/index.js new file mode 100644 index 000000000..9fae1b100 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-cjs/index.js @@ -0,0 +1,74 @@ +'use strict'; + +var configResolver = require('@smithy/config-resolver'); +var nodeConfigProvider = require('@smithy/node-config-provider'); +var propertyProvider = require('@smithy/property-provider'); + +const AWS_EXECUTION_ENV = "AWS_EXECUTION_ENV"; +const AWS_REGION_ENV = "AWS_REGION"; +const AWS_DEFAULT_REGION_ENV = "AWS_DEFAULT_REGION"; +const ENV_IMDS_DISABLED = "AWS_EC2_METADATA_DISABLED"; +const DEFAULTS_MODE_OPTIONS = ["in-region", "cross-region", "mobile", "standard", "legacy"]; +const IMDS_REGION_PATH = "/latest/meta-data/placement/region"; + +const AWS_DEFAULTS_MODE_ENV = "AWS_DEFAULTS_MODE"; +const AWS_DEFAULTS_MODE_CONFIG = "defaults_mode"; +const NODE_DEFAULTS_MODE_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => { + return env[AWS_DEFAULTS_MODE_ENV]; + }, + configFileSelector: (profile) => { + return profile[AWS_DEFAULTS_MODE_CONFIG]; + }, + default: "legacy", +}; + +const resolveDefaultsModeConfig = ({ region = nodeConfigProvider.loadConfig(configResolver.NODE_REGION_CONFIG_OPTIONS), defaultsMode = nodeConfigProvider.loadConfig(NODE_DEFAULTS_MODE_CONFIG_OPTIONS), } = {}) => propertyProvider.memoize(async () => { + const mode = typeof defaultsMode === "function" ? await defaultsMode() : defaultsMode; + switch (mode?.toLowerCase()) { + case "auto": + return resolveNodeDefaultsModeAuto(region); + case "in-region": + case "cross-region": + case "mobile": + case "standard": + case "legacy": + return Promise.resolve(mode?.toLocaleLowerCase()); + case undefined: + return Promise.resolve("legacy"); + default: + throw new Error(`Invalid parameter for "defaultsMode", expect ${DEFAULTS_MODE_OPTIONS.join(", ")}, got ${mode}`); + } +}); +const resolveNodeDefaultsModeAuto = async (clientRegion) => { + if (clientRegion) { + const resolvedRegion = typeof clientRegion === "function" ? await clientRegion() : clientRegion; + const inferredRegion = await inferPhysicalRegion(); + if (!inferredRegion) { + return "standard"; + } + if (resolvedRegion === inferredRegion) { + return "in-region"; + } + else { + return "cross-region"; + } + } + return "standard"; +}; +const inferPhysicalRegion = async () => { + if (process.env[AWS_EXECUTION_ENV] && (process.env[AWS_REGION_ENV] || process.env[AWS_DEFAULT_REGION_ENV])) { + return process.env[AWS_REGION_ENV] ?? process.env[AWS_DEFAULT_REGION_ENV]; + } + if (!process.env[ENV_IMDS_DISABLED]) { + try { + const { getInstanceMetadataEndpoint, httpRequest } = await import('@smithy/credential-provider-imds'); + const endpoint = await getInstanceMetadataEndpoint(); + return (await httpRequest({ ...endpoint, path: IMDS_REGION_PATH })).toString(); + } + catch (e) { + } + } +}; + +exports.resolveDefaultsModeConfig = resolveDefaultsModeConfig; diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-es/constants.js b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-es/constants.js new file mode 100644 index 000000000..69361a3fe --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-es/constants.js @@ -0,0 +1,6 @@ +export const AWS_EXECUTION_ENV = "AWS_EXECUTION_ENV"; +export const AWS_REGION_ENV = "AWS_REGION"; +export const AWS_DEFAULT_REGION_ENV = "AWS_DEFAULT_REGION"; +export const ENV_IMDS_DISABLED = "AWS_EC2_METADATA_DISABLED"; +export const DEFAULTS_MODE_OPTIONS = ["in-region", "cross-region", "mobile", "standard", "legacy"]; +export const IMDS_REGION_PATH = "/latest/meta-data/placement/region"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-es/defaultsModeConfig.js b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-es/defaultsModeConfig.js new file mode 100644 index 000000000..f43b5708f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-es/defaultsModeConfig.js @@ -0,0 +1,11 @@ +const AWS_DEFAULTS_MODE_ENV = "AWS_DEFAULTS_MODE"; +const AWS_DEFAULTS_MODE_CONFIG = "defaults_mode"; +export const NODE_DEFAULTS_MODE_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => { + return env[AWS_DEFAULTS_MODE_ENV]; + }, + configFileSelector: (profile) => { + return profile[AWS_DEFAULTS_MODE_CONFIG]; + }, + default: "legacy", +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-es/index.js new file mode 100644 index 000000000..05aa8183e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-es/index.js @@ -0,0 +1 @@ +export * from "./resolveDefaultsModeConfig"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-es/resolveDefaultsModeConfig.js b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-es/resolveDefaultsModeConfig.js new file mode 100644 index 000000000..8c9d050b4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-es/resolveDefaultsModeConfig.js @@ -0,0 +1,52 @@ +import { NODE_REGION_CONFIG_OPTIONS } from "@smithy/config-resolver"; +import { loadConfig } from "@smithy/node-config-provider"; +import { memoize } from "@smithy/property-provider"; +import { AWS_DEFAULT_REGION_ENV, AWS_EXECUTION_ENV, AWS_REGION_ENV, DEFAULTS_MODE_OPTIONS, ENV_IMDS_DISABLED, IMDS_REGION_PATH, } from "./constants"; +import { NODE_DEFAULTS_MODE_CONFIG_OPTIONS } from "./defaultsModeConfig"; +export const resolveDefaultsModeConfig = ({ region = loadConfig(NODE_REGION_CONFIG_OPTIONS), defaultsMode = loadConfig(NODE_DEFAULTS_MODE_CONFIG_OPTIONS), } = {}) => memoize(async () => { + const mode = typeof defaultsMode === "function" ? await defaultsMode() : defaultsMode; + switch (mode?.toLowerCase()) { + case "auto": + return resolveNodeDefaultsModeAuto(region); + case "in-region": + case "cross-region": + case "mobile": + case "standard": + case "legacy": + return Promise.resolve(mode?.toLocaleLowerCase()); + case undefined: + return Promise.resolve("legacy"); + default: + throw new Error(`Invalid parameter for "defaultsMode", expect ${DEFAULTS_MODE_OPTIONS.join(", ")}, got ${mode}`); + } +}); +const resolveNodeDefaultsModeAuto = async (clientRegion) => { + if (clientRegion) { + const resolvedRegion = typeof clientRegion === "function" ? await clientRegion() : clientRegion; + const inferredRegion = await inferPhysicalRegion(); + if (!inferredRegion) { + return "standard"; + } + if (resolvedRegion === inferredRegion) { + return "in-region"; + } + else { + return "cross-region"; + } + } + return "standard"; +}; +const inferPhysicalRegion = async () => { + if (process.env[AWS_EXECUTION_ENV] && (process.env[AWS_REGION_ENV] || process.env[AWS_DEFAULT_REGION_ENV])) { + return process.env[AWS_REGION_ENV] ?? process.env[AWS_DEFAULT_REGION_ENV]; + } + if (!process.env[ENV_IMDS_DISABLED]) { + try { + const { getInstanceMetadataEndpoint, httpRequest } = await import("@smithy/credential-provider-imds"); + const endpoint = await getInstanceMetadataEndpoint(); + return (await httpRequest({ ...endpoint, path: IMDS_REGION_PATH })).toString(); + } + catch (e) { + } + } +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-types/constants.d.ts b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-types/constants.d.ts new file mode 100644 index 000000000..a2db28343 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-types/constants.d.ts @@ -0,0 +1,24 @@ +/** + * @internal + */ +export declare const AWS_EXECUTION_ENV = "AWS_EXECUTION_ENV"; +/** + * @internal + */ +export declare const AWS_REGION_ENV = "AWS_REGION"; +/** + * @internal + */ +export declare const AWS_DEFAULT_REGION_ENV = "AWS_DEFAULT_REGION"; +/** + * @internal + */ +export declare const ENV_IMDS_DISABLED = "AWS_EC2_METADATA_DISABLED"; +/** + * @internal + */ +export declare const DEFAULTS_MODE_OPTIONS: string[]; +/** + * @internal + */ +export declare const IMDS_REGION_PATH = "/latest/meta-data/placement/region"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-types/defaultsModeConfig.d.ts b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-types/defaultsModeConfig.d.ts new file mode 100644 index 000000000..f9c60f70b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-types/defaultsModeConfig.d.ts @@ -0,0 +1,6 @@ +import type { LoadedConfigSelectors } from "@smithy/node-config-provider"; +import type { DefaultsMode } from "@smithy/smithy-client"; +/** + * @internal + */ +export declare const NODE_DEFAULTS_MODE_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-types/index.d.ts new file mode 100644 index 000000000..003de26f8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-types/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export * from "./resolveDefaultsModeConfig"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-types/resolveDefaultsModeConfig.d.ts b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-types/resolveDefaultsModeConfig.d.ts new file mode 100644 index 000000000..8f3437152 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-types/resolveDefaultsModeConfig.d.ts @@ -0,0 +1,17 @@ +import type { DefaultsMode, ResolvedDefaultsMode } from "@smithy/smithy-client"; +import type { Provider } from "@smithy/types"; +/** + * @internal + */ +export interface ResolveDefaultsModeConfigOptions { + defaultsMode?: DefaultsMode | Provider; + region?: string | Provider; +} +/** + * Validate the defaultsMode configuration. If the value is set to "auto", it + * resolves the value to "in-region", "cross-region", or "standard". + * + * @default "legacy" + * @internal + */ +export declare const resolveDefaultsModeConfig: ({ region, defaultsMode, }?: ResolveDefaultsModeConfigOptions) => Provider; diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-types/ts3.4/constants.d.ts b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-types/ts3.4/constants.d.ts new file mode 100644 index 000000000..a2db28343 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-types/ts3.4/constants.d.ts @@ -0,0 +1,24 @@ +/** + * @internal + */ +export declare const AWS_EXECUTION_ENV = "AWS_EXECUTION_ENV"; +/** + * @internal + */ +export declare const AWS_REGION_ENV = "AWS_REGION"; +/** + * @internal + */ +export declare const AWS_DEFAULT_REGION_ENV = "AWS_DEFAULT_REGION"; +/** + * @internal + */ +export declare const ENV_IMDS_DISABLED = "AWS_EC2_METADATA_DISABLED"; +/** + * @internal + */ +export declare const DEFAULTS_MODE_OPTIONS: string[]; +/** + * @internal + */ +export declare const IMDS_REGION_PATH = "/latest/meta-data/placement/region"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-types/ts3.4/defaultsModeConfig.d.ts b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-types/ts3.4/defaultsModeConfig.d.ts new file mode 100644 index 000000000..4d15cf5b3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-types/ts3.4/defaultsModeConfig.d.ts @@ -0,0 +1,6 @@ +import { LoadedConfigSelectors } from "@smithy/node-config-provider"; +import { DefaultsMode } from "@smithy/smithy-client"; +/** + * @internal + */ +export declare const NODE_DEFAULTS_MODE_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..003de26f8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-types/ts3.4/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export * from "./resolveDefaultsModeConfig"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-types/ts3.4/resolveDefaultsModeConfig.d.ts b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-types/ts3.4/resolveDefaultsModeConfig.d.ts new file mode 100644 index 000000000..a51869e33 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/dist-types/ts3.4/resolveDefaultsModeConfig.d.ts @@ -0,0 +1,17 @@ +import { DefaultsMode, ResolvedDefaultsMode } from "@smithy/smithy-client"; +import { Provider } from "@smithy/types"; +/** + * @internal + */ +export interface ResolveDefaultsModeConfigOptions { + defaultsMode?: DefaultsMode | Provider; + region?: string | Provider; +} +/** + * Validate the defaultsMode configuration. If the value is set to "auto", it + * resolves the value to "in-region", "cross-region", or "standard". + * + * @default "legacy" + * @internal + */ +export declare const resolveDefaultsModeConfig: ({ region, defaultsMode, }?: ResolveDefaultsModeConfigOptions) => Provider; diff --git a/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/package.json b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/package.json new file mode 100644 index 000000000..6bb86a9a1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-defaults-mode-node/package.json @@ -0,0 +1,67 @@ +{ + "name": "@smithy/util-defaults-mode-node", + "version": "4.2.44", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-defaults-mode-node", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/config-resolver": "^4.4.11", + "@smithy/credential-provider-imds": "^4.2.12", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/smithy-client": "^4.12.5", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/util-defaults-mode-node", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/util-defaults-mode-node" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/LICENSE b/food-ordering-app/server/node_modules/@smithy/util-endpoints/LICENSE new file mode 100644 index 000000000..a1895fac3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/README.md b/food-ordering-app/server/node_modules/@smithy/util-endpoints/README.md new file mode 100644 index 000000000..85d60b31c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/README.md @@ -0,0 +1,10 @@ +# @smithy/util-endpoints + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-endpoints/latest.svg)](https://www.npmjs.com/package/@smithy/util-endpoints) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-endpoints.svg)](https://www.npmjs.com/package/@smithy/util-endpoints) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-cjs/index.js new file mode 100644 index 000000000..04665e2fd --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-cjs/index.js @@ -0,0 +1,472 @@ +'use strict'; + +var types = require('@smithy/types'); + +class EndpointCache { + capacity; + data = new Map(); + parameters = []; + constructor({ size, params }) { + this.capacity = size ?? 50; + if (params) { + this.parameters = params; + } + } + get(endpointParams, resolver) { + const key = this.hash(endpointParams); + if (key === false) { + return resolver(); + } + if (!this.data.has(key)) { + if (this.data.size > this.capacity + 10) { + const keys = this.data.keys(); + let i = 0; + while (true) { + const { value, done } = keys.next(); + this.data.delete(value); + if (done || ++i > 10) { + break; + } + } + } + this.data.set(key, resolver()); + } + return this.data.get(key); + } + size() { + return this.data.size; + } + hash(endpointParams) { + let buffer = ""; + const { parameters } = this; + if (parameters.length === 0) { + return false; + } + for (const param of parameters) { + const val = String(endpointParams[param] ?? ""); + if (val.includes("|;")) { + return false; + } + buffer += val + "|;"; + } + return buffer; + } +} + +const IP_V4_REGEX = new RegExp(`^(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}$`); +const isIpAddress = (value) => IP_V4_REGEX.test(value) || (value.startsWith("[") && value.endsWith("]")); + +const VALID_HOST_LABEL_REGEX = new RegExp(`^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$`); +const isValidHostLabel = (value, allowSubDomains = false) => { + if (!allowSubDomains) { + return VALID_HOST_LABEL_REGEX.test(value); + } + const labels = value.split("."); + for (const label of labels) { + if (!isValidHostLabel(label)) { + return false; + } + } + return true; +}; + +const customEndpointFunctions = {}; + +const debugId = "endpoints"; + +function toDebugString(input) { + if (typeof input !== "object" || input == null) { + return input; + } + if ("ref" in input) { + return `$${toDebugString(input.ref)}`; + } + if ("fn" in input) { + return `${input.fn}(${(input.argv || []).map(toDebugString).join(", ")})`; + } + return JSON.stringify(input, null, 2); +} + +class EndpointError extends Error { + constructor(message) { + super(message); + this.name = "EndpointError"; + } +} + +const booleanEquals = (value1, value2) => value1 === value2; + +const getAttrPathList = (path) => { + const parts = path.split("."); + const pathList = []; + for (const part of parts) { + const squareBracketIndex = part.indexOf("["); + if (squareBracketIndex !== -1) { + if (part.indexOf("]") !== part.length - 1) { + throw new EndpointError(`Path: '${path}' does not end with ']'`); + } + const arrayIndex = part.slice(squareBracketIndex + 1, -1); + if (Number.isNaN(parseInt(arrayIndex))) { + throw new EndpointError(`Invalid array index: '${arrayIndex}' in path: '${path}'`); + } + if (squareBracketIndex !== 0) { + pathList.push(part.slice(0, squareBracketIndex)); + } + pathList.push(arrayIndex); + } + else { + pathList.push(part); + } + } + return pathList; +}; + +const getAttr = (value, path) => getAttrPathList(path).reduce((acc, index) => { + if (typeof acc !== "object") { + throw new EndpointError(`Index '${index}' in '${path}' not found in '${JSON.stringify(value)}'`); + } + else if (Array.isArray(acc)) { + return acc[parseInt(index)]; + } + return acc[index]; +}, value); + +const isSet = (value) => value != null; + +const not = (value) => !value; + +const DEFAULT_PORTS = { + [types.EndpointURLScheme.HTTP]: 80, + [types.EndpointURLScheme.HTTPS]: 443, +}; +const parseURL = (value) => { + const whatwgURL = (() => { + try { + if (value instanceof URL) { + return value; + } + if (typeof value === "object" && "hostname" in value) { + const { hostname, port, protocol = "", path = "", query = {} } = value; + const url = new URL(`${protocol}//${hostname}${port ? `:${port}` : ""}${path}`); + url.search = Object.entries(query) + .map(([k, v]) => `${k}=${v}`) + .join("&"); + return url; + } + return new URL(value); + } + catch (error) { + return null; + } + })(); + if (!whatwgURL) { + console.error(`Unable to parse ${JSON.stringify(value)} as a whatwg URL.`); + return null; + } + const urlString = whatwgURL.href; + const { host, hostname, pathname, protocol, search } = whatwgURL; + if (search) { + return null; + } + const scheme = protocol.slice(0, -1); + if (!Object.values(types.EndpointURLScheme).includes(scheme)) { + return null; + } + const isIp = isIpAddress(hostname); + const inputContainsDefaultPort = urlString.includes(`${host}:${DEFAULT_PORTS[scheme]}`) || + (typeof value === "string" && value.includes(`${host}:${DEFAULT_PORTS[scheme]}`)); + const authority = `${host}${inputContainsDefaultPort ? `:${DEFAULT_PORTS[scheme]}` : ``}`; + return { + scheme, + authority, + path: pathname, + normalizedPath: pathname.endsWith("/") ? pathname : `${pathname}/`, + isIp, + }; +}; + +const stringEquals = (value1, value2) => value1 === value2; + +const substring = (input, start, stop, reverse) => { + if (start >= stop || input.length < stop || /[^\u0000-\u007f]/.test(input)) { + return null; + } + if (!reverse) { + return input.substring(start, stop); + } + return input.substring(input.length - stop, input.length - start); +}; + +const uriEncode = (value) => encodeURIComponent(value).replace(/[!*'()]/g, (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`); + +const endpointFunctions = { + booleanEquals, + getAttr, + isSet, + isValidHostLabel, + not, + parseURL, + stringEquals, + substring, + uriEncode, +}; + +const evaluateTemplate = (template, options) => { + const evaluatedTemplateArr = []; + const templateContext = { + ...options.endpointParams, + ...options.referenceRecord, + }; + let currentIndex = 0; + while (currentIndex < template.length) { + const openingBraceIndex = template.indexOf("{", currentIndex); + if (openingBraceIndex === -1) { + evaluatedTemplateArr.push(template.slice(currentIndex)); + break; + } + evaluatedTemplateArr.push(template.slice(currentIndex, openingBraceIndex)); + const closingBraceIndex = template.indexOf("}", openingBraceIndex); + if (closingBraceIndex === -1) { + evaluatedTemplateArr.push(template.slice(openingBraceIndex)); + break; + } + if (template[openingBraceIndex + 1] === "{" && template[closingBraceIndex + 1] === "}") { + evaluatedTemplateArr.push(template.slice(openingBraceIndex + 1, closingBraceIndex)); + currentIndex = closingBraceIndex + 2; + } + const parameterName = template.substring(openingBraceIndex + 1, closingBraceIndex); + if (parameterName.includes("#")) { + const [refName, attrName] = parameterName.split("#"); + evaluatedTemplateArr.push(getAttr(templateContext[refName], attrName)); + } + else { + evaluatedTemplateArr.push(templateContext[parameterName]); + } + currentIndex = closingBraceIndex + 1; + } + return evaluatedTemplateArr.join(""); +}; + +const getReferenceValue = ({ ref }, options) => { + const referenceRecord = { + ...options.endpointParams, + ...options.referenceRecord, + }; + return referenceRecord[ref]; +}; + +const evaluateExpression = (obj, keyName, options) => { + if (typeof obj === "string") { + return evaluateTemplate(obj, options); + } + else if (obj["fn"]) { + return group$2.callFunction(obj, options); + } + else if (obj["ref"]) { + return getReferenceValue(obj, options); + } + throw new EndpointError(`'${keyName}': ${String(obj)} is not a string, function or reference.`); +}; +const callFunction = ({ fn, argv }, options) => { + const evaluatedArgs = argv.map((arg) => ["boolean", "number"].includes(typeof arg) ? arg : group$2.evaluateExpression(arg, "arg", options)); + const fnSegments = fn.split("."); + if (fnSegments[0] in customEndpointFunctions && fnSegments[1] != null) { + return customEndpointFunctions[fnSegments[0]][fnSegments[1]](...evaluatedArgs); + } + return endpointFunctions[fn](...evaluatedArgs); +}; +const group$2 = { + evaluateExpression, + callFunction, +}; + +const evaluateCondition = ({ assign, ...fnArgs }, options) => { + if (assign && assign in options.referenceRecord) { + throw new EndpointError(`'${assign}' is already defined in Reference Record.`); + } + const value = callFunction(fnArgs, options); + options.logger?.debug?.(`${debugId} evaluateCondition: ${toDebugString(fnArgs)} = ${toDebugString(value)}`); + return { + result: value === "" ? true : !!value, + ...(assign != null && { toAssign: { name: assign, value } }), + }; +}; + +const evaluateConditions = (conditions = [], options) => { + const conditionsReferenceRecord = {}; + for (const condition of conditions) { + const { result, toAssign } = evaluateCondition(condition, { + ...options, + referenceRecord: { + ...options.referenceRecord, + ...conditionsReferenceRecord, + }, + }); + if (!result) { + return { result }; + } + if (toAssign) { + conditionsReferenceRecord[toAssign.name] = toAssign.value; + options.logger?.debug?.(`${debugId} assign: ${toAssign.name} := ${toDebugString(toAssign.value)}`); + } + } + return { result: true, referenceRecord: conditionsReferenceRecord }; +}; + +const getEndpointHeaders = (headers, options) => Object.entries(headers).reduce((acc, [headerKey, headerVal]) => ({ + ...acc, + [headerKey]: headerVal.map((headerValEntry) => { + const processedExpr = evaluateExpression(headerValEntry, "Header value entry", options); + if (typeof processedExpr !== "string") { + throw new EndpointError(`Header '${headerKey}' value '${processedExpr}' is not a string`); + } + return processedExpr; + }), +}), {}); + +const getEndpointProperties = (properties, options) => Object.entries(properties).reduce((acc, [propertyKey, propertyVal]) => ({ + ...acc, + [propertyKey]: group$1.getEndpointProperty(propertyVal, options), +}), {}); +const getEndpointProperty = (property, options) => { + if (Array.isArray(property)) { + return property.map((propertyEntry) => getEndpointProperty(propertyEntry, options)); + } + switch (typeof property) { + case "string": + return evaluateTemplate(property, options); + case "object": + if (property === null) { + throw new EndpointError(`Unexpected endpoint property: ${property}`); + } + return group$1.getEndpointProperties(property, options); + case "boolean": + return property; + default: + throw new EndpointError(`Unexpected endpoint property type: ${typeof property}`); + } +}; +const group$1 = { + getEndpointProperty, + getEndpointProperties, +}; + +const getEndpointUrl = (endpointUrl, options) => { + const expression = evaluateExpression(endpointUrl, "Endpoint URL", options); + if (typeof expression === "string") { + try { + return new URL(expression); + } + catch (error) { + console.error(`Failed to construct URL with ${expression}`, error); + throw error; + } + } + throw new EndpointError(`Endpoint URL must be a string, got ${typeof expression}`); +}; + +const evaluateEndpointRule = (endpointRule, options) => { + const { conditions, endpoint } = endpointRule; + const { result, referenceRecord } = evaluateConditions(conditions, options); + if (!result) { + return; + } + const endpointRuleOptions = { + ...options, + referenceRecord: { ...options.referenceRecord, ...referenceRecord }, + }; + const { url, properties, headers } = endpoint; + options.logger?.debug?.(`${debugId} Resolving endpoint from template: ${toDebugString(endpoint)}`); + return { + ...(headers != undefined && { + headers: getEndpointHeaders(headers, endpointRuleOptions), + }), + ...(properties != undefined && { + properties: getEndpointProperties(properties, endpointRuleOptions), + }), + url: getEndpointUrl(url, endpointRuleOptions), + }; +}; + +const evaluateErrorRule = (errorRule, options) => { + const { conditions, error } = errorRule; + const { result, referenceRecord } = evaluateConditions(conditions, options); + if (!result) { + return; + } + throw new EndpointError(evaluateExpression(error, "Error", { + ...options, + referenceRecord: { ...options.referenceRecord, ...referenceRecord }, + })); +}; + +const evaluateRules = (rules, options) => { + for (const rule of rules) { + if (rule.type === "endpoint") { + const endpointOrUndefined = evaluateEndpointRule(rule, options); + if (endpointOrUndefined) { + return endpointOrUndefined; + } + } + else if (rule.type === "error") { + evaluateErrorRule(rule, options); + } + else if (rule.type === "tree") { + const endpointOrUndefined = group.evaluateTreeRule(rule, options); + if (endpointOrUndefined) { + return endpointOrUndefined; + } + } + else { + throw new EndpointError(`Unknown endpoint rule: ${rule}`); + } + } + throw new EndpointError(`Rules evaluation failed`); +}; +const evaluateTreeRule = (treeRule, options) => { + const { conditions, rules } = treeRule; + const { result, referenceRecord } = evaluateConditions(conditions, options); + if (!result) { + return; + } + return group.evaluateRules(rules, { + ...options, + referenceRecord: { ...options.referenceRecord, ...referenceRecord }, + }); +}; +const group = { + evaluateRules, + evaluateTreeRule, +}; + +const resolveEndpoint = (ruleSetObject, options) => { + const { endpointParams, logger } = options; + const { parameters, rules } = ruleSetObject; + options.logger?.debug?.(`${debugId} Initial EndpointParams: ${toDebugString(endpointParams)}`); + const paramsWithDefault = Object.entries(parameters) + .filter(([, v]) => v.default != null) + .map(([k, v]) => [k, v.default]); + if (paramsWithDefault.length > 0) { + for (const [paramKey, paramDefaultValue] of paramsWithDefault) { + endpointParams[paramKey] = endpointParams[paramKey] ?? paramDefaultValue; + } + } + const requiredParams = Object.entries(parameters) + .filter(([, v]) => v.required) + .map(([k]) => k); + for (const requiredParam of requiredParams) { + if (endpointParams[requiredParam] == null) { + throw new EndpointError(`Missing required parameter: '${requiredParam}'`); + } + } + const endpoint = evaluateRules(rules, { endpointParams, logger, referenceRecord: {} }); + options.logger?.debug?.(`${debugId} Resolved endpoint: ${toDebugString(endpoint)}`); + return endpoint; +}; + +exports.EndpointCache = EndpointCache; +exports.EndpointError = EndpointError; +exports.customEndpointFunctions = customEndpointFunctions; +exports.isIpAddress = isIpAddress; +exports.isValidHostLabel = isValidHostLabel; +exports.resolveEndpoint = resolveEndpoint; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/cache/EndpointCache.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/cache/EndpointCache.js new file mode 100644 index 000000000..2c13f9d1f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/cache/EndpointCache.js @@ -0,0 +1,50 @@ +export class EndpointCache { + capacity; + data = new Map(); + parameters = []; + constructor({ size, params }) { + this.capacity = size ?? 50; + if (params) { + this.parameters = params; + } + } + get(endpointParams, resolver) { + const key = this.hash(endpointParams); + if (key === false) { + return resolver(); + } + if (!this.data.has(key)) { + if (this.data.size > this.capacity + 10) { + const keys = this.data.keys(); + let i = 0; + while (true) { + const { value, done } = keys.next(); + this.data.delete(value); + if (done || ++i > 10) { + break; + } + } + } + this.data.set(key, resolver()); + } + return this.data.get(key); + } + size() { + return this.data.size; + } + hash(endpointParams) { + let buffer = ""; + const { parameters } = this; + if (parameters.length === 0) { + return false; + } + for (const param of parameters) { + const val = String(endpointParams[param] ?? ""); + if (val.includes("|;")) { + return false; + } + buffer += val + "|;"; + } + return buffer; + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/debug/debugId.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/debug/debugId.js new file mode 100644 index 000000000..0d4e27e03 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/debug/debugId.js @@ -0,0 +1 @@ +export const debugId = "endpoints"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/debug/index.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/debug/index.js new file mode 100644 index 000000000..70d3b15c3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/debug/index.js @@ -0,0 +1,2 @@ +export * from "./debugId"; +export * from "./toDebugString"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/debug/toDebugString.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/debug/toDebugString.js new file mode 100644 index 000000000..33c8fcbb4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/debug/toDebugString.js @@ -0,0 +1,12 @@ +export function toDebugString(input) { + if (typeof input !== "object" || input == null) { + return input; + } + if ("ref" in input) { + return `$${toDebugString(input.ref)}`; + } + if ("fn" in input) { + return `${input.fn}(${(input.argv || []).map(toDebugString).join(", ")})`; + } + return JSON.stringify(input, null, 2); +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/getEndpointUrlConfig.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/getEndpointUrlConfig.js new file mode 100644 index 000000000..5069030fa --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/getEndpointUrlConfig.js @@ -0,0 +1,21 @@ +const ENV_ENDPOINT_URL = "AWS_ENDPOINT_URL"; +const CONFIG_ENDPOINT_URL = "endpoint_url"; +export const getEndpointUrlConfig = (serviceId) => ({ + environmentVariableSelector: (env) => { + const serviceEndpointUrlSections = [ENV_ENDPOINT_URL, ...serviceId.split(" ").map((w) => w.toUpperCase())]; + const serviceEndpointUrl = env[serviceEndpointUrlSections.join("_")]; + if (serviceEndpointUrl) + return serviceEndpointUrl; + const endpointUrl = env[ENV_ENDPOINT_URL]; + if (endpointUrl) + return endpointUrl; + return undefined; + }, + configFileSelector: (profile) => { + const endpointUrl = profile[CONFIG_ENDPOINT_URL]; + if (endpointUrl) + return endpointUrl; + return undefined; + }, + default: undefined, +}); diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/index.js new file mode 100644 index 000000000..c39ed2b76 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/index.js @@ -0,0 +1,6 @@ +export * from "./cache/EndpointCache"; +export * from "./lib/isIpAddress"; +export * from "./lib/isValidHostLabel"; +export * from "./utils/customEndpointFunctions"; +export * from "./resolveEndpoint"; +export * from "./types"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/booleanEquals.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/booleanEquals.js new file mode 100644 index 000000000..730cbd3bd --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/booleanEquals.js @@ -0,0 +1 @@ +export const booleanEquals = (value1, value2) => value1 === value2; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/getAttr.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/getAttr.js new file mode 100644 index 000000000..d77f1657f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/getAttr.js @@ -0,0 +1,11 @@ +import { EndpointError } from "../types"; +import { getAttrPathList } from "./getAttrPathList"; +export const getAttr = (value, path) => getAttrPathList(path).reduce((acc, index) => { + if (typeof acc !== "object") { + throw new EndpointError(`Index '${index}' in '${path}' not found in '${JSON.stringify(value)}'`); + } + else if (Array.isArray(acc)) { + return acc[parseInt(index)]; + } + return acc[index]; +}, value); diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/getAttrPathList.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/getAttrPathList.js new file mode 100644 index 000000000..5817a2de6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/getAttrPathList.js @@ -0,0 +1,25 @@ +import { EndpointError } from "../types"; +export const getAttrPathList = (path) => { + const parts = path.split("."); + const pathList = []; + for (const part of parts) { + const squareBracketIndex = part.indexOf("["); + if (squareBracketIndex !== -1) { + if (part.indexOf("]") !== part.length - 1) { + throw new EndpointError(`Path: '${path}' does not end with ']'`); + } + const arrayIndex = part.slice(squareBracketIndex + 1, -1); + if (Number.isNaN(parseInt(arrayIndex))) { + throw new EndpointError(`Invalid array index: '${arrayIndex}' in path: '${path}'`); + } + if (squareBracketIndex !== 0) { + pathList.push(part.slice(0, squareBracketIndex)); + } + pathList.push(arrayIndex); + } + else { + pathList.push(part); + } + } + return pathList; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/index.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/index.js new file mode 100644 index 000000000..99a08449a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/index.js @@ -0,0 +1,9 @@ +export * from "./booleanEquals"; +export * from "./getAttr"; +export * from "./isSet"; +export * from "./isValidHostLabel"; +export * from "./not"; +export * from "./parseURL"; +export * from "./stringEquals"; +export * from "./substring"; +export * from "./uriEncode"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/isIpAddress.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/isIpAddress.js new file mode 100644 index 000000000..20be5a3e3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/isIpAddress.js @@ -0,0 +1,2 @@ +const IP_V4_REGEX = new RegExp(`^(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}$`); +export const isIpAddress = (value) => IP_V4_REGEX.test(value) || (value.startsWith("[") && value.endsWith("]")); diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/isSet.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/isSet.js new file mode 100644 index 000000000..83ccc7a56 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/isSet.js @@ -0,0 +1 @@ +export const isSet = (value) => value != null; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/isValidHostLabel.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/isValidHostLabel.js new file mode 100644 index 000000000..785859867 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/isValidHostLabel.js @@ -0,0 +1,13 @@ +const VALID_HOST_LABEL_REGEX = new RegExp(`^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$`); +export const isValidHostLabel = (value, allowSubDomains = false) => { + if (!allowSubDomains) { + return VALID_HOST_LABEL_REGEX.test(value); + } + const labels = value.split("."); + for (const label of labels) { + if (!isValidHostLabel(label)) { + return false; + } + } + return true; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/not.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/not.js new file mode 100644 index 000000000..180e5dd3a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/not.js @@ -0,0 +1 @@ +export const not = (value) => !value; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/parseURL.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/parseURL.js new file mode 100644 index 000000000..79f9b24eb --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/parseURL.js @@ -0,0 +1,51 @@ +import { EndpointURLScheme } from "@smithy/types"; +import { isIpAddress } from "./isIpAddress"; +const DEFAULT_PORTS = { + [EndpointURLScheme.HTTP]: 80, + [EndpointURLScheme.HTTPS]: 443, +}; +export const parseURL = (value) => { + const whatwgURL = (() => { + try { + if (value instanceof URL) { + return value; + } + if (typeof value === "object" && "hostname" in value) { + const { hostname, port, protocol = "", path = "", query = {} } = value; + const url = new URL(`${protocol}//${hostname}${port ? `:${port}` : ""}${path}`); + url.search = Object.entries(query) + .map(([k, v]) => `${k}=${v}`) + .join("&"); + return url; + } + return new URL(value); + } + catch (error) { + return null; + } + })(); + if (!whatwgURL) { + console.error(`Unable to parse ${JSON.stringify(value)} as a whatwg URL.`); + return null; + } + const urlString = whatwgURL.href; + const { host, hostname, pathname, protocol, search } = whatwgURL; + if (search) { + return null; + } + const scheme = protocol.slice(0, -1); + if (!Object.values(EndpointURLScheme).includes(scheme)) { + return null; + } + const isIp = isIpAddress(hostname); + const inputContainsDefaultPort = urlString.includes(`${host}:${DEFAULT_PORTS[scheme]}`) || + (typeof value === "string" && value.includes(`${host}:${DEFAULT_PORTS[scheme]}`)); + const authority = `${host}${inputContainsDefaultPort ? `:${DEFAULT_PORTS[scheme]}` : ``}`; + return { + scheme, + authority, + path: pathname, + normalizedPath: pathname.endsWith("/") ? pathname : `${pathname}/`, + isIp, + }; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/stringEquals.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/stringEquals.js new file mode 100644 index 000000000..ee414269d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/stringEquals.js @@ -0,0 +1 @@ +export const stringEquals = (value1, value2) => value1 === value2; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/substring.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/substring.js new file mode 100644 index 000000000..f906883af --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/substring.js @@ -0,0 +1,9 @@ +export const substring = (input, start, stop, reverse) => { + if (start >= stop || input.length < stop || /[^\u0000-\u007f]/.test(input)) { + return null; + } + if (!reverse) { + return input.substring(start, stop); + } + return input.substring(input.length - stop, input.length - start); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/uriEncode.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/uriEncode.js new file mode 100644 index 000000000..ae226dc7a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/lib/uriEncode.js @@ -0,0 +1 @@ +export const uriEncode = (value) => encodeURIComponent(value).replace(/[!*'()]/g, (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`); diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/resolveEndpoint.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/resolveEndpoint.js new file mode 100644 index 000000000..ac12096b0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/resolveEndpoint.js @@ -0,0 +1,27 @@ +import { debugId, toDebugString } from "./debug"; +import { EndpointError } from "./types"; +import { evaluateRules } from "./utils"; +export const resolveEndpoint = (ruleSetObject, options) => { + const { endpointParams, logger } = options; + const { parameters, rules } = ruleSetObject; + options.logger?.debug?.(`${debugId} Initial EndpointParams: ${toDebugString(endpointParams)}`); + const paramsWithDefault = Object.entries(parameters) + .filter(([, v]) => v.default != null) + .map(([k, v]) => [k, v.default]); + if (paramsWithDefault.length > 0) { + for (const [paramKey, paramDefaultValue] of paramsWithDefault) { + endpointParams[paramKey] = endpointParams[paramKey] ?? paramDefaultValue; + } + } + const requiredParams = Object.entries(parameters) + .filter(([, v]) => v.required) + .map(([k]) => k); + for (const requiredParam of requiredParams) { + if (endpointParams[requiredParam] == null) { + throw new EndpointError(`Missing required parameter: '${requiredParam}'`); + } + } + const endpoint = evaluateRules(rules, { endpointParams, logger, referenceRecord: {} }); + options.logger?.debug?.(`${debugId} Resolved endpoint: ${toDebugString(endpoint)}`); + return endpoint; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/types/EndpointError.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/types/EndpointError.js new file mode 100644 index 000000000..1ce597d7e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/types/EndpointError.js @@ -0,0 +1,6 @@ +export class EndpointError extends Error { + constructor(message) { + super(message); + this.name = "EndpointError"; + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/types/EndpointFunctions.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/types/EndpointFunctions.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/types/EndpointFunctions.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/types/EndpointRuleObject.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/types/EndpointRuleObject.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/types/EndpointRuleObject.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/types/ErrorRuleObject.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/types/ErrorRuleObject.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/types/ErrorRuleObject.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/types/RuleSetObject.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/types/RuleSetObject.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/types/RuleSetObject.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/types/TreeRuleObject.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/types/TreeRuleObject.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/types/TreeRuleObject.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/types/index.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/types/index.js new file mode 100644 index 000000000..a49f9840a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/types/index.js @@ -0,0 +1,7 @@ +export * from "./EndpointError"; +export * from "./EndpointFunctions"; +export * from "./EndpointRuleObject"; +export * from "./ErrorRuleObject"; +export * from "./RuleSetObject"; +export * from "./TreeRuleObject"; +export * from "./shared"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/types/shared.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/types/shared.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/types/shared.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/callFunction.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/callFunction.js new file mode 100644 index 000000000..cd041e386 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/callFunction.js @@ -0,0 +1 @@ +export { callFunction } from "./evaluateExpression"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/customEndpointFunctions.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/customEndpointFunctions.js new file mode 100644 index 000000000..0c26493af --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/customEndpointFunctions.js @@ -0,0 +1 @@ +export const customEndpointFunctions = {}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/endpointFunctions.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/endpointFunctions.js new file mode 100644 index 000000000..e2215ff56 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/endpointFunctions.js @@ -0,0 +1,12 @@ +import { booleanEquals, getAttr, isSet, isValidHostLabel, not, parseURL, stringEquals, substring, uriEncode, } from "../lib"; +export const endpointFunctions = { + booleanEquals, + getAttr, + isSet, + isValidHostLabel, + not, + parseURL, + stringEquals, + substring, + uriEncode, +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateCondition.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateCondition.js new file mode 100644 index 000000000..8e84f0871 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateCondition.js @@ -0,0 +1,14 @@ +import { debugId, toDebugString } from "../debug"; +import { EndpointError } from "../types"; +import { callFunction } from "./callFunction"; +export const evaluateCondition = ({ assign, ...fnArgs }, options) => { + if (assign && assign in options.referenceRecord) { + throw new EndpointError(`'${assign}' is already defined in Reference Record.`); + } + const value = callFunction(fnArgs, options); + options.logger?.debug?.(`${debugId} evaluateCondition: ${toDebugString(fnArgs)} = ${toDebugString(value)}`); + return { + result: value === "" ? true : !!value, + ...(assign != null && { toAssign: { name: assign, value } }), + }; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateConditions.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateConditions.js new file mode 100644 index 000000000..554207612 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateConditions.js @@ -0,0 +1,22 @@ +import { debugId, toDebugString } from "../debug"; +import { evaluateCondition } from "./evaluateCondition"; +export const evaluateConditions = (conditions = [], options) => { + const conditionsReferenceRecord = {}; + for (const condition of conditions) { + const { result, toAssign } = evaluateCondition(condition, { + ...options, + referenceRecord: { + ...options.referenceRecord, + ...conditionsReferenceRecord, + }, + }); + if (!result) { + return { result }; + } + if (toAssign) { + conditionsReferenceRecord[toAssign.name] = toAssign.value; + options.logger?.debug?.(`${debugId} assign: ${toAssign.name} := ${toDebugString(toAssign.value)}`); + } + } + return { result: true, referenceRecord: conditionsReferenceRecord }; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateEndpointRule.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateEndpointRule.js new file mode 100644 index 000000000..ba6307b12 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateEndpointRule.js @@ -0,0 +1,27 @@ +import { debugId, toDebugString } from "../debug"; +import { evaluateConditions } from "./evaluateConditions"; +import { getEndpointHeaders } from "./getEndpointHeaders"; +import { getEndpointProperties } from "./getEndpointProperties"; +import { getEndpointUrl } from "./getEndpointUrl"; +export const evaluateEndpointRule = (endpointRule, options) => { + const { conditions, endpoint } = endpointRule; + const { result, referenceRecord } = evaluateConditions(conditions, options); + if (!result) { + return; + } + const endpointRuleOptions = { + ...options, + referenceRecord: { ...options.referenceRecord, ...referenceRecord }, + }; + const { url, properties, headers } = endpoint; + options.logger?.debug?.(`${debugId} Resolving endpoint from template: ${toDebugString(endpoint)}`); + return { + ...(headers != undefined && { + headers: getEndpointHeaders(headers, endpointRuleOptions), + }), + ...(properties != undefined && { + properties: getEndpointProperties(properties, endpointRuleOptions), + }), + url: getEndpointUrl(url, endpointRuleOptions), + }; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateErrorRule.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateErrorRule.js new file mode 100644 index 000000000..1a578604d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateErrorRule.js @@ -0,0 +1,14 @@ +import { EndpointError } from "../types"; +import { evaluateConditions } from "./evaluateConditions"; +import { evaluateExpression } from "./evaluateExpression"; +export const evaluateErrorRule = (errorRule, options) => { + const { conditions, error } = errorRule; + const { result, referenceRecord } = evaluateConditions(conditions, options); + if (!result) { + return; + } + throw new EndpointError(evaluateExpression(error, "Error", { + ...options, + referenceRecord: { ...options.referenceRecord, ...referenceRecord }, + })); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateExpression.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateExpression.js new file mode 100644 index 000000000..4ff958e16 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateExpression.js @@ -0,0 +1,29 @@ +import { EndpointError } from "../types"; +import { customEndpointFunctions } from "./customEndpointFunctions"; +import { endpointFunctions } from "./endpointFunctions"; +import { evaluateTemplate } from "./evaluateTemplate"; +import { getReferenceValue } from "./getReferenceValue"; +export const evaluateExpression = (obj, keyName, options) => { + if (typeof obj === "string") { + return evaluateTemplate(obj, options); + } + else if (obj["fn"]) { + return group.callFunction(obj, options); + } + else if (obj["ref"]) { + return getReferenceValue(obj, options); + } + throw new EndpointError(`'${keyName}': ${String(obj)} is not a string, function or reference.`); +}; +export const callFunction = ({ fn, argv }, options) => { + const evaluatedArgs = argv.map((arg) => ["boolean", "number"].includes(typeof arg) ? arg : group.evaluateExpression(arg, "arg", options)); + const fnSegments = fn.split("."); + if (fnSegments[0] in customEndpointFunctions && fnSegments[1] != null) { + return customEndpointFunctions[fnSegments[0]][fnSegments[1]](...evaluatedArgs); + } + return endpointFunctions[fn](...evaluatedArgs); +}; +export const group = { + evaluateExpression, + callFunction, +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateRules.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateRules.js new file mode 100644 index 000000000..b8ddffadd --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateRules.js @@ -0,0 +1,42 @@ +import { EndpointError } from "../types"; +import { evaluateConditions } from "./evaluateConditions"; +import { evaluateEndpointRule } from "./evaluateEndpointRule"; +import { evaluateErrorRule } from "./evaluateErrorRule"; +export const evaluateRules = (rules, options) => { + for (const rule of rules) { + if (rule.type === "endpoint") { + const endpointOrUndefined = evaluateEndpointRule(rule, options); + if (endpointOrUndefined) { + return endpointOrUndefined; + } + } + else if (rule.type === "error") { + evaluateErrorRule(rule, options); + } + else if (rule.type === "tree") { + const endpointOrUndefined = group.evaluateTreeRule(rule, options); + if (endpointOrUndefined) { + return endpointOrUndefined; + } + } + else { + throw new EndpointError(`Unknown endpoint rule: ${rule}`); + } + } + throw new EndpointError(`Rules evaluation failed`); +}; +export const evaluateTreeRule = (treeRule, options) => { + const { conditions, rules } = treeRule; + const { result, referenceRecord } = evaluateConditions(conditions, options); + if (!result) { + return; + } + return group.evaluateRules(rules, { + ...options, + referenceRecord: { ...options.referenceRecord, ...referenceRecord }, + }); +}; +export const group = { + evaluateRules, + evaluateTreeRule, +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateTemplate.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateTemplate.js new file mode 100644 index 000000000..700580915 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateTemplate.js @@ -0,0 +1,36 @@ +import { getAttr } from "../lib"; +export const evaluateTemplate = (template, options) => { + const evaluatedTemplateArr = []; + const templateContext = { + ...options.endpointParams, + ...options.referenceRecord, + }; + let currentIndex = 0; + while (currentIndex < template.length) { + const openingBraceIndex = template.indexOf("{", currentIndex); + if (openingBraceIndex === -1) { + evaluatedTemplateArr.push(template.slice(currentIndex)); + break; + } + evaluatedTemplateArr.push(template.slice(currentIndex, openingBraceIndex)); + const closingBraceIndex = template.indexOf("}", openingBraceIndex); + if (closingBraceIndex === -1) { + evaluatedTemplateArr.push(template.slice(openingBraceIndex)); + break; + } + if (template[openingBraceIndex + 1] === "{" && template[closingBraceIndex + 1] === "}") { + evaluatedTemplateArr.push(template.slice(openingBraceIndex + 1, closingBraceIndex)); + currentIndex = closingBraceIndex + 2; + } + const parameterName = template.substring(openingBraceIndex + 1, closingBraceIndex); + if (parameterName.includes("#")) { + const [refName, attrName] = parameterName.split("#"); + evaluatedTemplateArr.push(getAttr(templateContext[refName], attrName)); + } + else { + evaluatedTemplateArr.push(templateContext[parameterName]); + } + currentIndex = closingBraceIndex + 1; + } + return evaluatedTemplateArr.join(""); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateTreeRule.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateTreeRule.js new file mode 100644 index 000000000..128a59ca8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateTreeRule.js @@ -0,0 +1 @@ +export { evaluateTreeRule } from "./evaluateRules"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointHeaders.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointHeaders.js new file mode 100644 index 000000000..f94cf5535 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointHeaders.js @@ -0,0 +1,12 @@ +import { EndpointError } from "../types"; +import { evaluateExpression } from "./evaluateExpression"; +export const getEndpointHeaders = (headers, options) => Object.entries(headers).reduce((acc, [headerKey, headerVal]) => ({ + ...acc, + [headerKey]: headerVal.map((headerValEntry) => { + const processedExpr = evaluateExpression(headerValEntry, "Header value entry", options); + if (typeof processedExpr !== "string") { + throw new EndpointError(`Header '${headerKey}' value '${processedExpr}' is not a string`); + } + return processedExpr; + }), +}), {}); diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointProperties.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointProperties.js new file mode 100644 index 000000000..ab7496fbf --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointProperties.js @@ -0,0 +1,28 @@ +import { EndpointError } from "../types"; +import { evaluateTemplate } from "./evaluateTemplate"; +export const getEndpointProperties = (properties, options) => Object.entries(properties).reduce((acc, [propertyKey, propertyVal]) => ({ + ...acc, + [propertyKey]: group.getEndpointProperty(propertyVal, options), +}), {}); +export const getEndpointProperty = (property, options) => { + if (Array.isArray(property)) { + return property.map((propertyEntry) => getEndpointProperty(propertyEntry, options)); + } + switch (typeof property) { + case "string": + return evaluateTemplate(property, options); + case "object": + if (property === null) { + throw new EndpointError(`Unexpected endpoint property: ${property}`); + } + return group.getEndpointProperties(property, options); + case "boolean": + return property; + default: + throw new EndpointError(`Unexpected endpoint property type: ${typeof property}`); + } +}; +export const group = { + getEndpointProperty, + getEndpointProperties, +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointProperty.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointProperty.js new file mode 100644 index 000000000..3bf38a5f7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointProperty.js @@ -0,0 +1 @@ +export { getEndpointProperty } from "./getEndpointProperties"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointUrl.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointUrl.js new file mode 100644 index 000000000..8f1301e25 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointUrl.js @@ -0,0 +1,15 @@ +import { EndpointError } from "../types"; +import { evaluateExpression } from "./evaluateExpression"; +export const getEndpointUrl = (endpointUrl, options) => { + const expression = evaluateExpression(endpointUrl, "Endpoint URL", options); + if (typeof expression === "string") { + try { + return new URL(expression); + } + catch (error) { + console.error(`Failed to construct URL with ${expression}`, error); + throw error; + } + } + throw new EndpointError(`Endpoint URL must be a string, got ${typeof expression}`); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/getReferenceValue.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/getReferenceValue.js new file mode 100644 index 000000000..759f4d40b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/getReferenceValue.js @@ -0,0 +1,7 @@ +export const getReferenceValue = ({ ref }, options) => { + const referenceRecord = { + ...options.endpointParams, + ...options.referenceRecord, + }; + return referenceRecord[ref]; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/index.js b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/index.js new file mode 100644 index 000000000..b571d021c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-es/utils/index.js @@ -0,0 +1,2 @@ +export * from "./customEndpointFunctions"; +export * from "./evaluateRules"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/cache/EndpointCache.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/cache/EndpointCache.d.ts new file mode 100644 index 000000000..19a338fd0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/cache/EndpointCache.d.ts @@ -0,0 +1,34 @@ +import type { EndpointParams, EndpointV2 } from "@smithy/types"; +/** + * @internal + * + * Cache for endpoint ruleSet resolution. + */ +export declare class EndpointCache { + private capacity; + private data; + private parameters; + /** + * @param [size] - desired average maximum capacity. A buffer of 10 additional keys will be allowed + * before keys are dropped. + * @param [params] - list of params to consider as part of the cache key. + * + * If the params list is not populated, no caching will happen. + * This may be out of order depending on how the object is created and arrives to this class. + */ + constructor({ size, params }: { + size?: number; + params?: string[]; + }); + /** + * @param endpointParams - query for endpoint. + * @param resolver - provider of the value if not present. + * @returns endpoint corresponding to the query. + */ + get(endpointParams: EndpointParams, resolver: () => EndpointV2): EndpointV2; + size(): number; + /** + * @returns cache key or false if not cachable. + */ + private hash; +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/debug/debugId.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/debug/debugId.d.ts new file mode 100644 index 000000000..d39f408f0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/debug/debugId.d.ts @@ -0,0 +1 @@ +export declare const debugId = "endpoints"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/debug/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/debug/index.d.ts new file mode 100644 index 000000000..70d3b15c3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/debug/index.d.ts @@ -0,0 +1,2 @@ +export * from "./debugId"; +export * from "./toDebugString"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/debug/toDebugString.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/debug/toDebugString.d.ts new file mode 100644 index 000000000..69397f6e6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/debug/toDebugString.d.ts @@ -0,0 +1,9 @@ +import type { EndpointParameters, EndpointV2 } from "@smithy/types"; +import type { GetAttrValue } from "../lib"; +import type { EndpointObject, FunctionObject, FunctionReturn } from "../types"; +export declare function toDebugString(input: EndpointParameters): string; +export declare function toDebugString(input: EndpointV2): string; +export declare function toDebugString(input: GetAttrValue): string; +export declare function toDebugString(input: FunctionObject): string; +export declare function toDebugString(input: FunctionReturn): string; +export declare function toDebugString(input: EndpointObject): string; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/getEndpointUrlConfig.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/getEndpointUrlConfig.d.ts new file mode 100644 index 000000000..6b0f5d157 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/getEndpointUrlConfig.d.ts @@ -0,0 +1,2 @@ +import type { LoadedConfigSelectors } from "@smithy/node-config-provider"; +export declare const getEndpointUrlConfig: (serviceId: string) => LoadedConfigSelectors; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/index.d.ts new file mode 100644 index 000000000..c39ed2b76 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/index.d.ts @@ -0,0 +1,6 @@ +export * from "./cache/EndpointCache"; +export * from "./lib/isIpAddress"; +export * from "./lib/isValidHostLabel"; +export * from "./utils/customEndpointFunctions"; +export * from "./resolveEndpoint"; +export * from "./types"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/booleanEquals.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/booleanEquals.d.ts new file mode 100644 index 000000000..7eac5613c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/booleanEquals.d.ts @@ -0,0 +1,5 @@ +/** + * Evaluates two boolean values value1 and value2 for equality and returns + * true if both values match. + */ +export declare const booleanEquals: (value1: boolean, value2: boolean) => boolean; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/getAttr.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/getAttr.d.ts new file mode 100644 index 000000000..a8088c5c2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/getAttr.d.ts @@ -0,0 +1,7 @@ +export type GetAttrValue = string | boolean | { + [key: string]: GetAttrValue; +} | Array; +/** + * Returns value corresponding to pathing string for an array or object. + */ +export declare const getAttr: (value: GetAttrValue, path: string) => GetAttrValue; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/getAttrPathList.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/getAttrPathList.d.ts new file mode 100644 index 000000000..e6c497971 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/getAttrPathList.d.ts @@ -0,0 +1,4 @@ +/** + * Parses path as a getAttr expression, returning a list of strings. + */ +export declare const getAttrPathList: (path: string) => Array; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/index.d.ts new file mode 100644 index 000000000..99a08449a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/index.d.ts @@ -0,0 +1,9 @@ +export * from "./booleanEquals"; +export * from "./getAttr"; +export * from "./isSet"; +export * from "./isValidHostLabel"; +export * from "./not"; +export * from "./parseURL"; +export * from "./stringEquals"; +export * from "./substring"; +export * from "./uriEncode"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/isIpAddress.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/isIpAddress.d.ts new file mode 100644 index 000000000..28aba976a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/isIpAddress.d.ts @@ -0,0 +1,4 @@ +/** + * Validates if the provided value is an IP address. + */ +export declare const isIpAddress: (value: string) => boolean; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/isSet.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/isSet.d.ts new file mode 100644 index 000000000..7cb8c27e7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/isSet.d.ts @@ -0,0 +1,5 @@ +/** + * Evaluates whether a value is set (aka not null or undefined). + * Returns true if the value is set, otherwise returns false. + */ +export declare const isSet: (value: unknown) => value is {}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/isValidHostLabel.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/isValidHostLabel.d.ts new file mode 100644 index 000000000..c05f9e982 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/isValidHostLabel.d.ts @@ -0,0 +1,7 @@ +/** + * Evaluates whether one or more string values are valid host labels per RFC 1123. + * + * If allowSubDomains is true, then the provided value may be zero or more dotted + * subdomains which are each validated per RFC 1123. + */ +export declare const isValidHostLabel: (value: string, allowSubDomains?: boolean) => boolean; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/not.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/not.d.ts new file mode 100644 index 000000000..1e8e72841 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/not.d.ts @@ -0,0 +1,5 @@ +/** + * Performs logical negation on the provided boolean value, + * returning the negated value. + */ +export declare const not: (value: boolean) => boolean; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/parseURL.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/parseURL.d.ts new file mode 100644 index 000000000..3da46ff0a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/parseURL.d.ts @@ -0,0 +1,5 @@ +import type { Endpoint, EndpointURL } from "@smithy/types"; +/** + * Parses a string, URL, or Endpoint into it’s Endpoint URL components. + */ +export declare const parseURL: (value: string | URL | Endpoint) => EndpointURL | null; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/stringEquals.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/stringEquals.d.ts new file mode 100644 index 000000000..bdfc98de0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/stringEquals.d.ts @@ -0,0 +1,5 @@ +/** + * Evaluates two string values value1 and value2 for equality and returns + * true if both values match. + */ +export declare const stringEquals: (value1: string, value2: string) => boolean; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/substring.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/substring.d.ts new file mode 100644 index 000000000..5d7003555 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/substring.d.ts @@ -0,0 +1,7 @@ +/** + * Computes the substring of a given string, conditionally indexing from the end of the string. + * When the string is long enough to fully include the substring, return the substring. + * Otherwise, return None. The start index is inclusive and the stop index is exclusive. + * The length of the returned string will always be stop-start. + */ +export declare const substring: (input: string, start: number, stop: number, reverse: boolean) => string | null; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/uriEncode.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/uriEncode.d.ts new file mode 100644 index 000000000..c2a720c79 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/lib/uriEncode.d.ts @@ -0,0 +1,4 @@ +/** + * Performs percent-encoding per RFC3986 section 2.1 + */ +export declare const uriEncode: (value: string) => string; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/resolveEndpoint.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/resolveEndpoint.d.ts new file mode 100644 index 000000000..9243342f6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/resolveEndpoint.d.ts @@ -0,0 +1,6 @@ +import type { EndpointV2 } from "@smithy/types"; +import type { EndpointResolverOptions, RuleSetObject } from "./types"; +/** + * Resolves an endpoint URL by processing the endpoints ruleset and options. + */ +export declare const resolveEndpoint: (ruleSetObject: RuleSetObject, options: EndpointResolverOptions) => EndpointV2; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/cache/EndpointCache.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/cache/EndpointCache.d.ts new file mode 100644 index 000000000..dd108c00c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/cache/EndpointCache.d.ts @@ -0,0 +1,34 @@ +import { EndpointParams, EndpointV2 } from "@smithy/types"; +/** + * @internal + * + * Cache for endpoint ruleSet resolution. + */ +export declare class EndpointCache { + private capacity; + private data; + private parameters; + /** + * @param [size] - desired average maximum capacity. A buffer of 10 additional keys will be allowed + * before keys are dropped. + * @param [params] - list of params to consider as part of the cache key. + * + * If the params list is not populated, no caching will happen. + * This may be out of order depending on how the object is created and arrives to this class. + */ + constructor({ size, params }: { + size?: number; + params?: string[]; + }); + /** + * @param endpointParams - query for endpoint. + * @param resolver - provider of the value if not present. + * @returns endpoint corresponding to the query. + */ + get(endpointParams: EndpointParams, resolver: () => EndpointV2): EndpointV2; + size(): number; + /** + * @returns cache key or false if not cachable. + */ + private hash; +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/debug/debugId.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/debug/debugId.d.ts new file mode 100644 index 000000000..d39f408f0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/debug/debugId.d.ts @@ -0,0 +1 @@ +export declare const debugId = "endpoints"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/debug/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/debug/index.d.ts new file mode 100644 index 000000000..70d3b15c3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/debug/index.d.ts @@ -0,0 +1,2 @@ +export * from "./debugId"; +export * from "./toDebugString"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/debug/toDebugString.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/debug/toDebugString.d.ts new file mode 100644 index 000000000..6bf1d3a1e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/debug/toDebugString.d.ts @@ -0,0 +1,9 @@ +import { EndpointParameters, EndpointV2 } from "@smithy/types"; +import { GetAttrValue } from "../lib"; +import { EndpointObject, FunctionObject, FunctionReturn } from "../types"; +export declare function toDebugString(input: EndpointParameters): string; +export declare function toDebugString(input: EndpointV2): string; +export declare function toDebugString(input: GetAttrValue): string; +export declare function toDebugString(input: FunctionObject): string; +export declare function toDebugString(input: FunctionReturn): string; +export declare function toDebugString(input: EndpointObject): string; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/getEndpointUrlConfig.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/getEndpointUrlConfig.d.ts new file mode 100644 index 000000000..0971010f2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/getEndpointUrlConfig.d.ts @@ -0,0 +1,2 @@ +import { LoadedConfigSelectors } from "@smithy/node-config-provider"; +export declare const getEndpointUrlConfig: (serviceId: string) => LoadedConfigSelectors; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..c39ed2b76 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/index.d.ts @@ -0,0 +1,6 @@ +export * from "./cache/EndpointCache"; +export * from "./lib/isIpAddress"; +export * from "./lib/isValidHostLabel"; +export * from "./utils/customEndpointFunctions"; +export * from "./resolveEndpoint"; +export * from "./types"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/booleanEquals.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/booleanEquals.d.ts new file mode 100644 index 000000000..7eac5613c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/booleanEquals.d.ts @@ -0,0 +1,5 @@ +/** + * Evaluates two boolean values value1 and value2 for equality and returns + * true if both values match. + */ +export declare const booleanEquals: (value1: boolean, value2: boolean) => boolean; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/getAttr.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/getAttr.d.ts new file mode 100644 index 000000000..a8088c5c2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/getAttr.d.ts @@ -0,0 +1,7 @@ +export type GetAttrValue = string | boolean | { + [key: string]: GetAttrValue; +} | Array; +/** + * Returns value corresponding to pathing string for an array or object. + */ +export declare const getAttr: (value: GetAttrValue, path: string) => GetAttrValue; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/getAttrPathList.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/getAttrPathList.d.ts new file mode 100644 index 000000000..e6c497971 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/getAttrPathList.d.ts @@ -0,0 +1,4 @@ +/** + * Parses path as a getAttr expression, returning a list of strings. + */ +export declare const getAttrPathList: (path: string) => Array; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/index.d.ts new file mode 100644 index 000000000..99a08449a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/index.d.ts @@ -0,0 +1,9 @@ +export * from "./booleanEquals"; +export * from "./getAttr"; +export * from "./isSet"; +export * from "./isValidHostLabel"; +export * from "./not"; +export * from "./parseURL"; +export * from "./stringEquals"; +export * from "./substring"; +export * from "./uriEncode"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/isIpAddress.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/isIpAddress.d.ts new file mode 100644 index 000000000..28aba976a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/isIpAddress.d.ts @@ -0,0 +1,4 @@ +/** + * Validates if the provided value is an IP address. + */ +export declare const isIpAddress: (value: string) => boolean; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/isSet.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/isSet.d.ts new file mode 100644 index 000000000..7cb8c27e7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/isSet.d.ts @@ -0,0 +1,5 @@ +/** + * Evaluates whether a value is set (aka not null or undefined). + * Returns true if the value is set, otherwise returns false. + */ +export declare const isSet: (value: unknown) => value is {}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/isValidHostLabel.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/isValidHostLabel.d.ts new file mode 100644 index 000000000..c05f9e982 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/isValidHostLabel.d.ts @@ -0,0 +1,7 @@ +/** + * Evaluates whether one or more string values are valid host labels per RFC 1123. + * + * If allowSubDomains is true, then the provided value may be zero or more dotted + * subdomains which are each validated per RFC 1123. + */ +export declare const isValidHostLabel: (value: string, allowSubDomains?: boolean) => boolean; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/not.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/not.d.ts new file mode 100644 index 000000000..1e8e72841 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/not.d.ts @@ -0,0 +1,5 @@ +/** + * Performs logical negation on the provided boolean value, + * returning the negated value. + */ +export declare const not: (value: boolean) => boolean; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/parseURL.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/parseURL.d.ts new file mode 100644 index 000000000..3e0dce38c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/parseURL.d.ts @@ -0,0 +1,5 @@ +import { Endpoint, EndpointURL } from "@smithy/types"; +/** + * Parses a string, URL, or Endpoint into it’s Endpoint URL components. + */ +export declare const parseURL: (value: string | URL | Endpoint) => EndpointURL | null; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/stringEquals.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/stringEquals.d.ts new file mode 100644 index 000000000..bdfc98de0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/stringEquals.d.ts @@ -0,0 +1,5 @@ +/** + * Evaluates two string values value1 and value2 for equality and returns + * true if both values match. + */ +export declare const stringEquals: (value1: string, value2: string) => boolean; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/substring.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/substring.d.ts new file mode 100644 index 000000000..5d7003555 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/substring.d.ts @@ -0,0 +1,7 @@ +/** + * Computes the substring of a given string, conditionally indexing from the end of the string. + * When the string is long enough to fully include the substring, return the substring. + * Otherwise, return None. The start index is inclusive and the stop index is exclusive. + * The length of the returned string will always be stop-start. + */ +export declare const substring: (input: string, start: number, stop: number, reverse: boolean) => string | null; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/uriEncode.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/uriEncode.d.ts new file mode 100644 index 000000000..c2a720c79 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/uriEncode.d.ts @@ -0,0 +1,4 @@ +/** + * Performs percent-encoding per RFC3986 section 2.1 + */ +export declare const uriEncode: (value: string) => string; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/resolveEndpoint.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/resolveEndpoint.d.ts new file mode 100644 index 000000000..b02188b5e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/resolveEndpoint.d.ts @@ -0,0 +1,6 @@ +import { EndpointV2 } from "@smithy/types"; +import { EndpointResolverOptions, RuleSetObject } from "./types"; +/** + * Resolves an endpoint URL by processing the endpoints ruleset and options. + */ +export declare const resolveEndpoint: (ruleSetObject: RuleSetObject, options: EndpointResolverOptions) => EndpointV2; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/EndpointError.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/EndpointError.d.ts new file mode 100644 index 000000000..89132f216 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/EndpointError.d.ts @@ -0,0 +1,3 @@ +export declare class EndpointError extends Error { + constructor(message: string); +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/EndpointFunctions.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/EndpointFunctions.d.ts new file mode 100644 index 000000000..33b1a0bde --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/EndpointFunctions.d.ts @@ -0,0 +1,2 @@ +import { FunctionReturn } from "./shared"; +export type EndpointFunctions = Record FunctionReturn>; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/EndpointRuleObject.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/EndpointRuleObject.d.ts new file mode 100644 index 000000000..d24545ffb --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/EndpointRuleObject.d.ts @@ -0,0 +1,5 @@ +import { EndpointObject as __EndpointObject, EndpointObjectHeaders as __EndpointObjectHeaders, EndpointObjectProperties as __EndpointObjectProperties, EndpointRuleObject as __EndpointRuleObject } from "@smithy/types"; +export type EndpointObjectProperties = __EndpointObjectProperties; +export type EndpointObjectHeaders = __EndpointObjectHeaders; +export type EndpointObject = __EndpointObject; +export type EndpointRuleObject = __EndpointRuleObject; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/ErrorRuleObject.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/ErrorRuleObject.d.ts new file mode 100644 index 000000000..51fe1386b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/ErrorRuleObject.d.ts @@ -0,0 +1,2 @@ +import { ErrorRuleObject as __ErrorRuleObject } from "@smithy/types"; +export type ErrorRuleObject = __ErrorRuleObject; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/RuleSetObject.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/RuleSetObject.d.ts new file mode 100644 index 000000000..3335b80d4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/RuleSetObject.d.ts @@ -0,0 +1,4 @@ +import { DeprecatedObject as __DeprecatedObject, ParameterObject as __ParameterObject, RuleSetObject as __RuleSetObject } from "@smithy/types"; +export type DeprecatedObject = __DeprecatedObject; +export type ParameterObject = __ParameterObject; +export type RuleSetObject = __RuleSetObject; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/TreeRuleObject.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/TreeRuleObject.d.ts new file mode 100644 index 000000000..3d902d0ee --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/TreeRuleObject.d.ts @@ -0,0 +1,3 @@ +import { RuleSetRules as __RuleSetRules, TreeRuleObject as __TreeRuleObject } from "@smithy/types"; +export type RuleSetRules = __RuleSetRules; +export type TreeRuleObject = __TreeRuleObject; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/index.d.ts new file mode 100644 index 000000000..a49f9840a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/index.d.ts @@ -0,0 +1,7 @@ +export * from "./EndpointError"; +export * from "./EndpointFunctions"; +export * from "./EndpointRuleObject"; +export * from "./ErrorRuleObject"; +export * from "./RuleSetObject"; +export * from "./TreeRuleObject"; +export * from "./shared"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/shared.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/shared.d.ts new file mode 100644 index 000000000..8351a928b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/shared.d.ts @@ -0,0 +1,25 @@ +import { EndpointARN, EndpointPartition, Logger } from "@smithy/types"; +export type ReferenceObject = { + ref: string; +}; +export type FunctionObject = { + fn: string; + argv: FunctionArgv; +}; +export type FunctionArgv = Array; +export type FunctionReturn = string | boolean | number | EndpointARN | EndpointPartition | { + [key: string]: FunctionReturn; +} | null; +export type ConditionObject = FunctionObject & { + assign?: string; +}; +export type Expression = string | ReferenceObject | FunctionObject; +export type EndpointParams = Record; +export type EndpointResolverOptions = { + endpointParams: EndpointParams; + logger?: Logger; +}; +export type ReferenceRecord = Record; +export type EvaluateOptions = EndpointResolverOptions & { + referenceRecord: ReferenceRecord; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/callFunction.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/callFunction.d.ts new file mode 100644 index 000000000..cd041e386 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/callFunction.d.ts @@ -0,0 +1 @@ +export { callFunction } from "./evaluateExpression"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/customEndpointFunctions.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/customEndpointFunctions.d.ts new file mode 100644 index 000000000..d8971d0d9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/customEndpointFunctions.d.ts @@ -0,0 +1,4 @@ +import { EndpointFunctions } from "../types/EndpointFunctions"; +export declare const customEndpointFunctions: { + [key: string]: EndpointFunctions; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/endpointFunctions.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/endpointFunctions.d.ts new file mode 100644 index 000000000..e1598fb41 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/endpointFunctions.d.ts @@ -0,0 +1,11 @@ +export declare const endpointFunctions: { + booleanEquals: (value1: boolean, value2: boolean) => boolean; + getAttr: (value: import("../lib").GetAttrValue, path: string) => import("../lib").GetAttrValue; + isSet: (value: unknown) => value is {}; + isValidHostLabel: (value: string, allowSubDomains?: boolean) => boolean; + not: (value: boolean) => boolean; + parseURL: (value: string | URL | import("@smithy/types").Endpoint) => import("@smithy/types").EndpointURL | null; + stringEquals: (value1: string, value2: string) => boolean; + substring: (input: string, start: number, stop: number, reverse: boolean) => string | null; + uriEncode: (value: string) => string; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateCondition.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateCondition.d.ts new file mode 100644 index 000000000..5fbe59f56 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateCondition.d.ts @@ -0,0 +1,8 @@ +import { ConditionObject, EvaluateOptions } from "../types"; +export declare const evaluateCondition: ({ assign, ...fnArgs }: ConditionObject, options: EvaluateOptions) => { + toAssign?: { + name: string; + value: import("../types").FunctionReturn; + } | undefined; + result: boolean; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateConditions.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateConditions.d.ts new file mode 100644 index 000000000..4131beba6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateConditions.d.ts @@ -0,0 +1,8 @@ +import { ConditionObject, EvaluateOptions, FunctionReturn } from "../types"; +export declare const evaluateConditions: (conditions: ConditionObject[] | undefined, options: EvaluateOptions) => { + result: false; + referenceRecord?: undefined; +} | { + result: boolean; + referenceRecord: Record; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateEndpointRule.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateEndpointRule.d.ts new file mode 100644 index 000000000..da9496eaa --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateEndpointRule.d.ts @@ -0,0 +1,3 @@ +import { EndpointV2 } from "@smithy/types"; +import { EndpointRuleObject, EvaluateOptions } from "../types"; +export declare const evaluateEndpointRule: (endpointRule: EndpointRuleObject, options: EvaluateOptions) => EndpointV2 | undefined; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateErrorRule.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateErrorRule.d.ts new file mode 100644 index 000000000..df4973da0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateErrorRule.d.ts @@ -0,0 +1,2 @@ +import { ErrorRuleObject, EvaluateOptions } from "../types"; +export declare const evaluateErrorRule: (errorRule: ErrorRuleObject, options: EvaluateOptions) => void; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateExpression.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateExpression.d.ts new file mode 100644 index 000000000..3f8c77d06 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateExpression.d.ts @@ -0,0 +1,7 @@ +import { EvaluateOptions, Expression, FunctionObject, FunctionReturn } from "../types"; +export declare const evaluateExpression: (obj: Expression, keyName: string, options: EvaluateOptions) => FunctionReturn; +export declare const callFunction: ({ fn, argv }: FunctionObject, options: EvaluateOptions) => FunctionReturn; +export declare const group: { + evaluateExpression: (obj: Expression, keyName: string, options: EvaluateOptions) => FunctionReturn; + callFunction: ({ fn, argv }: FunctionObject, options: EvaluateOptions) => FunctionReturn; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateRules.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateRules.d.ts new file mode 100644 index 000000000..a7bea2e99 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateRules.d.ts @@ -0,0 +1,8 @@ +import { EndpointV2 } from "@smithy/types"; +import { EvaluateOptions, RuleSetRules, TreeRuleObject } from "../types"; +export declare const evaluateRules: (rules: RuleSetRules, options: EvaluateOptions) => EndpointV2; +export declare const evaluateTreeRule: (treeRule: TreeRuleObject, options: EvaluateOptions) => EndpointV2 | undefined; +export declare const group: { + evaluateRules: (rules: RuleSetRules, options: EvaluateOptions) => EndpointV2; + evaluateTreeRule: (treeRule: TreeRuleObject, options: EvaluateOptions) => EndpointV2 | undefined; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateTemplate.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateTemplate.d.ts new file mode 100644 index 000000000..9b0b9ad50 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateTemplate.d.ts @@ -0,0 +1,2 @@ +import { EvaluateOptions } from "../types"; +export declare const evaluateTemplate: (template: string, options: EvaluateOptions) => string; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateTreeRule.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateTreeRule.d.ts new file mode 100644 index 000000000..128a59ca8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateTreeRule.d.ts @@ -0,0 +1 @@ +export { evaluateTreeRule } from "./evaluateRules"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/getEndpointHeaders.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/getEndpointHeaders.d.ts new file mode 100644 index 000000000..a80256578 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/getEndpointHeaders.d.ts @@ -0,0 +1,2 @@ +import { EndpointObjectHeaders, EvaluateOptions } from "../types"; +export declare const getEndpointHeaders: (headers: EndpointObjectHeaders, options: EvaluateOptions) => {}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/getEndpointProperties.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/getEndpointProperties.d.ts new file mode 100644 index 000000000..cf819e222 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/getEndpointProperties.d.ts @@ -0,0 +1,8 @@ +import { EndpointObjectProperty } from "@smithy/types"; +import { EndpointObjectProperties, EvaluateOptions } from "../types"; +export declare const getEndpointProperties: (properties: EndpointObjectProperties, options: EvaluateOptions) => {}; +export declare const getEndpointProperty: (property: EndpointObjectProperty, options: EvaluateOptions) => EndpointObjectProperty; +export declare const group: { + getEndpointProperty: (property: EndpointObjectProperty, options: EvaluateOptions) => EndpointObjectProperty; + getEndpointProperties: (properties: EndpointObjectProperties, options: EvaluateOptions) => {}; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/getEndpointProperty.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/getEndpointProperty.d.ts new file mode 100644 index 000000000..3bf38a5f7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/getEndpointProperty.d.ts @@ -0,0 +1 @@ +export { getEndpointProperty } from "./getEndpointProperties"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/getEndpointUrl.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/getEndpointUrl.d.ts new file mode 100644 index 000000000..4ab228956 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/getEndpointUrl.d.ts @@ -0,0 +1,2 @@ +import { EvaluateOptions, Expression } from "../types"; +export declare const getEndpointUrl: (endpointUrl: Expression, options: EvaluateOptions) => URL; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/getReferenceValue.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/getReferenceValue.d.ts new file mode 100644 index 000000000..3699ec1d5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/getReferenceValue.d.ts @@ -0,0 +1,2 @@ +import { EvaluateOptions, ReferenceObject } from "../types"; +export declare const getReferenceValue: ({ ref }: ReferenceObject, options: EvaluateOptions) => import("../types").FunctionReturn; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/index.d.ts new file mode 100644 index 000000000..b571d021c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/index.d.ts @@ -0,0 +1,2 @@ +export * from "./customEndpointFunctions"; +export * from "./evaluateRules"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/types/EndpointError.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/types/EndpointError.d.ts new file mode 100644 index 000000000..89132f216 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/types/EndpointError.d.ts @@ -0,0 +1,3 @@ +export declare class EndpointError extends Error { + constructor(message: string); +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/types/EndpointFunctions.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/types/EndpointFunctions.d.ts new file mode 100644 index 000000000..df54d767f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/types/EndpointFunctions.d.ts @@ -0,0 +1,2 @@ +import type { FunctionReturn } from "./shared"; +export type EndpointFunctions = Record FunctionReturn>; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/types/EndpointRuleObject.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/types/EndpointRuleObject.d.ts new file mode 100644 index 000000000..990206a40 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/types/EndpointRuleObject.d.ts @@ -0,0 +1,5 @@ +import type { EndpointObject as __EndpointObject, EndpointObjectHeaders as __EndpointObjectHeaders, EndpointObjectProperties as __EndpointObjectProperties, EndpointRuleObject as __EndpointRuleObject } from "@smithy/types"; +export type EndpointObjectProperties = __EndpointObjectProperties; +export type EndpointObjectHeaders = __EndpointObjectHeaders; +export type EndpointObject = __EndpointObject; +export type EndpointRuleObject = __EndpointRuleObject; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/types/ErrorRuleObject.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/types/ErrorRuleObject.d.ts new file mode 100644 index 000000000..2b2d06f08 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/types/ErrorRuleObject.d.ts @@ -0,0 +1,2 @@ +import type { ErrorRuleObject as __ErrorRuleObject } from "@smithy/types"; +export type ErrorRuleObject = __ErrorRuleObject; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/types/RuleSetObject.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/types/RuleSetObject.d.ts new file mode 100644 index 000000000..25fe3ae82 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/types/RuleSetObject.d.ts @@ -0,0 +1,4 @@ +import type { DeprecatedObject as __DeprecatedObject, ParameterObject as __ParameterObject, RuleSetObject as __RuleSetObject } from "@smithy/types"; +export type DeprecatedObject = __DeprecatedObject; +export type ParameterObject = __ParameterObject; +export type RuleSetObject = __RuleSetObject; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/types/TreeRuleObject.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/types/TreeRuleObject.d.ts new file mode 100644 index 000000000..733f1530e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/types/TreeRuleObject.d.ts @@ -0,0 +1,3 @@ +import type { RuleSetRules as __RuleSetRules, TreeRuleObject as __TreeRuleObject } from "@smithy/types"; +export type RuleSetRules = __RuleSetRules; +export type TreeRuleObject = __TreeRuleObject; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/types/index.d.ts new file mode 100644 index 000000000..a49f9840a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/types/index.d.ts @@ -0,0 +1,7 @@ +export * from "./EndpointError"; +export * from "./EndpointFunctions"; +export * from "./EndpointRuleObject"; +export * from "./ErrorRuleObject"; +export * from "./RuleSetObject"; +export * from "./TreeRuleObject"; +export * from "./shared"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/types/shared.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/types/shared.d.ts new file mode 100644 index 000000000..3f8671df8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/types/shared.d.ts @@ -0,0 +1,25 @@ +import type { EndpointARN, EndpointPartition, Logger } from "@smithy/types"; +export type ReferenceObject = { + ref: string; +}; +export type FunctionObject = { + fn: string; + argv: FunctionArgv; +}; +export type FunctionArgv = Array; +export type FunctionReturn = string | boolean | number | EndpointARN | EndpointPartition | { + [key: string]: FunctionReturn; +} | null; +export type ConditionObject = FunctionObject & { + assign?: string; +}; +export type Expression = string | ReferenceObject | FunctionObject; +export type EndpointParams = Record; +export type EndpointResolverOptions = { + endpointParams: EndpointParams; + logger?: Logger; +}; +export type ReferenceRecord = Record; +export type EvaluateOptions = EndpointResolverOptions & { + referenceRecord: ReferenceRecord; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/callFunction.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/callFunction.d.ts new file mode 100644 index 000000000..cd041e386 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/callFunction.d.ts @@ -0,0 +1 @@ +export { callFunction } from "./evaluateExpression"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/customEndpointFunctions.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/customEndpointFunctions.d.ts new file mode 100644 index 000000000..dc8999c9a --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/customEndpointFunctions.d.ts @@ -0,0 +1,4 @@ +import type { EndpointFunctions } from "../types/EndpointFunctions"; +export declare const customEndpointFunctions: { + [key: string]: EndpointFunctions; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/endpointFunctions.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/endpointFunctions.d.ts new file mode 100644 index 000000000..e1598fb41 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/endpointFunctions.d.ts @@ -0,0 +1,11 @@ +export declare const endpointFunctions: { + booleanEquals: (value1: boolean, value2: boolean) => boolean; + getAttr: (value: import("../lib").GetAttrValue, path: string) => import("../lib").GetAttrValue; + isSet: (value: unknown) => value is {}; + isValidHostLabel: (value: string, allowSubDomains?: boolean) => boolean; + not: (value: boolean) => boolean; + parseURL: (value: string | URL | import("@smithy/types").Endpoint) => import("@smithy/types").EndpointURL | null; + stringEquals: (value1: string, value2: string) => boolean; + substring: (input: string, start: number, stop: number, reverse: boolean) => string | null; + uriEncode: (value: string) => string; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateCondition.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateCondition.d.ts new file mode 100644 index 000000000..c8c1c9f33 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateCondition.d.ts @@ -0,0 +1,8 @@ +import type { ConditionObject, EvaluateOptions } from "../types"; +export declare const evaluateCondition: ({ assign, ...fnArgs }: ConditionObject, options: EvaluateOptions) => { + toAssign?: { + name: string; + value: import("../types").FunctionReturn; + } | undefined; + result: boolean; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateConditions.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateConditions.d.ts new file mode 100644 index 000000000..18f6b06b6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateConditions.d.ts @@ -0,0 +1,8 @@ +import type { ConditionObject, EvaluateOptions, FunctionReturn } from "../types"; +export declare const evaluateConditions: (conditions: ConditionObject[] | undefined, options: EvaluateOptions) => { + result: false; + referenceRecord?: undefined; +} | { + result: boolean; + referenceRecord: Record; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateEndpointRule.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateEndpointRule.d.ts new file mode 100644 index 000000000..64b60c40f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateEndpointRule.d.ts @@ -0,0 +1,3 @@ +import type { EndpointV2 } from "@smithy/types"; +import type { EndpointRuleObject, EvaluateOptions } from "../types"; +export declare const evaluateEndpointRule: (endpointRule: EndpointRuleObject, options: EvaluateOptions) => EndpointV2 | undefined; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateErrorRule.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateErrorRule.d.ts new file mode 100644 index 000000000..546ef5c6d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateErrorRule.d.ts @@ -0,0 +1,2 @@ +import type { ErrorRuleObject, EvaluateOptions } from "../types"; +export declare const evaluateErrorRule: (errorRule: ErrorRuleObject, options: EvaluateOptions) => void; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateExpression.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateExpression.d.ts new file mode 100644 index 000000000..2f56cad55 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateExpression.d.ts @@ -0,0 +1,7 @@ +import type { EvaluateOptions, Expression, FunctionObject, FunctionReturn } from "../types"; +export declare const evaluateExpression: (obj: Expression, keyName: string, options: EvaluateOptions) => FunctionReturn; +export declare const callFunction: ({ fn, argv }: FunctionObject, options: EvaluateOptions) => FunctionReturn; +export declare const group: { + evaluateExpression: (obj: Expression, keyName: string, options: EvaluateOptions) => FunctionReturn; + callFunction: ({ fn, argv }: FunctionObject, options: EvaluateOptions) => FunctionReturn; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateRules.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateRules.d.ts new file mode 100644 index 000000000..3b45235be --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateRules.d.ts @@ -0,0 +1,8 @@ +import type { EndpointV2 } from "@smithy/types"; +import type { EvaluateOptions, RuleSetRules, TreeRuleObject } from "../types"; +export declare const evaluateRules: (rules: RuleSetRules, options: EvaluateOptions) => EndpointV2; +export declare const evaluateTreeRule: (treeRule: TreeRuleObject, options: EvaluateOptions) => EndpointV2 | undefined; +export declare const group: { + evaluateRules: (rules: RuleSetRules, options: EvaluateOptions) => EndpointV2; + evaluateTreeRule: (treeRule: TreeRuleObject, options: EvaluateOptions) => EndpointV2 | undefined; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateTemplate.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateTemplate.d.ts new file mode 100644 index 000000000..4ea93160c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateTemplate.d.ts @@ -0,0 +1,2 @@ +import type { EvaluateOptions } from "../types"; +export declare const evaluateTemplate: (template: string, options: EvaluateOptions) => string; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateTreeRule.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateTreeRule.d.ts new file mode 100644 index 000000000..128a59ca8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateTreeRule.d.ts @@ -0,0 +1 @@ +export { evaluateTreeRule } from "./evaluateRules"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointHeaders.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointHeaders.d.ts new file mode 100644 index 000000000..cff2a4762 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointHeaders.d.ts @@ -0,0 +1,2 @@ +import type { EndpointObjectHeaders, EvaluateOptions } from "../types"; +export declare const getEndpointHeaders: (headers: EndpointObjectHeaders, options: EvaluateOptions) => {}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointProperties.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointProperties.d.ts new file mode 100644 index 000000000..d4cbccb68 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointProperties.d.ts @@ -0,0 +1,8 @@ +import type { EndpointObjectProperty } from "@smithy/types"; +import type { EndpointObjectProperties, EvaluateOptions } from "../types"; +export declare const getEndpointProperties: (properties: EndpointObjectProperties, options: EvaluateOptions) => {}; +export declare const getEndpointProperty: (property: EndpointObjectProperty, options: EvaluateOptions) => EndpointObjectProperty; +export declare const group: { + getEndpointProperty: (property: EndpointObjectProperty, options: EvaluateOptions) => EndpointObjectProperty; + getEndpointProperties: (properties: EndpointObjectProperties, options: EvaluateOptions) => {}; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointProperty.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointProperty.d.ts new file mode 100644 index 000000000..3bf38a5f7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointProperty.d.ts @@ -0,0 +1 @@ +export { getEndpointProperty } from "./getEndpointProperties"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointUrl.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointUrl.d.ts new file mode 100644 index 000000000..60aadda9f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointUrl.d.ts @@ -0,0 +1,2 @@ +import type { EvaluateOptions, Expression } from "../types"; +export declare const getEndpointUrl: (endpointUrl: Expression, options: EvaluateOptions) => URL; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/getReferenceValue.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/getReferenceValue.d.ts new file mode 100644 index 000000000..40bc34453 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/getReferenceValue.d.ts @@ -0,0 +1,2 @@ +import type { EvaluateOptions, ReferenceObject } from "../types"; +export declare const getReferenceValue: ({ ref }: ReferenceObject, options: EvaluateOptions) => import("../types").FunctionReturn; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/index.d.ts new file mode 100644 index 000000000..b571d021c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/dist-types/utils/index.d.ts @@ -0,0 +1,2 @@ +export * from "./customEndpointFunctions"; +export * from "./evaluateRules"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-endpoints/package.json b/food-ordering-app/server/node_modules/@smithy/util-endpoints/package.json new file mode 100644 index 000000000..089522f13 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-endpoints/package.json @@ -0,0 +1,69 @@ +{ + "name": "@smithy/util-endpoints", + "version": "3.3.3", + "description": "Utilities to help with endpoint resolution.", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-endpoints", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:watch": "yarn g:vitest watch", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "keywords": [ + "endpoint" + ], + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/node-config-provider": "^4.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "types/*": [ + "types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/master/packages/util-endpoints", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/util-endpoints" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/util-hex-encoding/LICENSE b/food-ordering-app/server/node_modules/@smithy/util-hex-encoding/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-hex-encoding/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/util-hex-encoding/README.md b/food-ordering-app/server/node_modules/@smithy/util-hex-encoding/README.md new file mode 100644 index 000000000..67e4499b1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-hex-encoding/README.md @@ -0,0 +1,4 @@ +# @smithy/util-hex-encoding + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-hex-encoding/latest.svg)](https://www.npmjs.com/package/@smithy/util-hex-encoding) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-hex-encoding.svg)](https://www.npmjs.com/package/@smithy/util-hex-encoding) diff --git a/food-ordering-app/server/node_modules/@smithy/util-hex-encoding/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/util-hex-encoding/dist-cjs/index.js new file mode 100644 index 000000000..6d1eb2d18 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-hex-encoding/dist-cjs/index.js @@ -0,0 +1,38 @@ +'use strict'; + +const SHORT_TO_HEX = {}; +const HEX_TO_SHORT = {}; +for (let i = 0; i < 256; i++) { + let encodedByte = i.toString(16).toLowerCase(); + if (encodedByte.length === 1) { + encodedByte = `0${encodedByte}`; + } + SHORT_TO_HEX[i] = encodedByte; + HEX_TO_SHORT[encodedByte] = i; +} +function fromHex(encoded) { + if (encoded.length % 2 !== 0) { + throw new Error("Hex encoded strings must have an even number length"); + } + const out = new Uint8Array(encoded.length / 2); + for (let i = 0; i < encoded.length; i += 2) { + const encodedByte = encoded.slice(i, i + 2).toLowerCase(); + if (encodedByte in HEX_TO_SHORT) { + out[i / 2] = HEX_TO_SHORT[encodedByte]; + } + else { + throw new Error(`Cannot decode unrecognized sequence ${encodedByte} as hexadecimal`); + } + } + return out; +} +function toHex(bytes) { + let out = ""; + for (let i = 0; i < bytes.byteLength; i++) { + out += SHORT_TO_HEX[bytes[i]]; + } + return out; +} + +exports.fromHex = fromHex; +exports.toHex = toHex; diff --git a/food-ordering-app/server/node_modules/@smithy/util-hex-encoding/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/util-hex-encoding/dist-es/index.js new file mode 100644 index 000000000..e47b3aa22 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-hex-encoding/dist-es/index.js @@ -0,0 +1,33 @@ +const SHORT_TO_HEX = {}; +const HEX_TO_SHORT = {}; +for (let i = 0; i < 256; i++) { + let encodedByte = i.toString(16).toLowerCase(); + if (encodedByte.length === 1) { + encodedByte = `0${encodedByte}`; + } + SHORT_TO_HEX[i] = encodedByte; + HEX_TO_SHORT[encodedByte] = i; +} +export function fromHex(encoded) { + if (encoded.length % 2 !== 0) { + throw new Error("Hex encoded strings must have an even number length"); + } + const out = new Uint8Array(encoded.length / 2); + for (let i = 0; i < encoded.length; i += 2) { + const encodedByte = encoded.slice(i, i + 2).toLowerCase(); + if (encodedByte in HEX_TO_SHORT) { + out[i / 2] = HEX_TO_SHORT[encodedByte]; + } + else { + throw new Error(`Cannot decode unrecognized sequence ${encodedByte} as hexadecimal`); + } + } + return out; +} +export function toHex(bytes) { + let out = ""; + for (let i = 0; i < bytes.byteLength; i++) { + out += SHORT_TO_HEX[bytes[i]]; + } + return out; +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-hex-encoding/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-hex-encoding/dist-types/index.d.ts new file mode 100644 index 000000000..9d4307ad7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-hex-encoding/dist-types/index.d.ts @@ -0,0 +1,12 @@ +/** + * Converts a hexadecimal encoded string to a Uint8Array of bytes. + * + * @param encoded The hexadecimal encoded string + */ +export declare function fromHex(encoded: string): Uint8Array; +/** + * Converts a Uint8Array of binary data to a hexadecimal encoded string. + * + * @param bytes The binary data to encode + */ +export declare function toHex(bytes: Uint8Array): string; diff --git a/food-ordering-app/server/node_modules/@smithy/util-hex-encoding/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-hex-encoding/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..9d4307ad7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-hex-encoding/dist-types/ts3.4/index.d.ts @@ -0,0 +1,12 @@ +/** + * Converts a hexadecimal encoded string to a Uint8Array of bytes. + * + * @param encoded The hexadecimal encoded string + */ +export declare function fromHex(encoded: string): Uint8Array; +/** + * Converts a Uint8Array of binary data to a hexadecimal encoded string. + * + * @param bytes The binary data to encode + */ +export declare function toHex(bytes: Uint8Array): string; diff --git a/food-ordering-app/server/node_modules/@smithy/util-hex-encoding/package.json b/food-ordering-app/server/node_modules/@smithy/util-hex-encoding/package.json new file mode 100644 index 000000000..cf4d44e96 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-hex-encoding/package.json @@ -0,0 +1,61 @@ +{ + "name": "@smithy/util-hex-encoding", + "version": "4.2.2", + "description": "Converts binary buffers to and from lowercase hexadecimal encoding", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-hex-encoding", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "dependencies": { + "tslib": "^2.6.2" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/util-hex-encoding", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/util-hex-encoding" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/util-middleware/LICENSE b/food-ordering-app/server/node_modules/@smithy/util-middleware/LICENSE new file mode 100644 index 000000000..a1895fac3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-middleware/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/util-middleware/README.md b/food-ordering-app/server/node_modules/@smithy/util-middleware/README.md new file mode 100644 index 000000000..f043cfa22 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-middleware/README.md @@ -0,0 +1,12 @@ +# @smithy/util-middleware + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-middleware/latest.svg)](https://www.npmjs.com/package/@smithy/util-middleware) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-middleware.svg)](https://www.npmjs.com/package/@smithy/util-middleware) + +> An internal package + +This package provides shared utilities for middleware. + +## Usage + +You probably shouldn't, at least directly. diff --git a/food-ordering-app/server/node_modules/@smithy/util-middleware/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/util-middleware/dist-cjs/index.js new file mode 100644 index 000000000..2b9af753d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-middleware/dist-cjs/index.js @@ -0,0 +1,15 @@ +'use strict'; + +var types = require('@smithy/types'); + +const getSmithyContext = (context) => context[types.SMITHY_CONTEXT_KEY] || (context[types.SMITHY_CONTEXT_KEY] = {}); + +const normalizeProvider = (input) => { + if (typeof input === "function") + return input; + const promisified = Promise.resolve(input); + return () => promisified; +}; + +exports.getSmithyContext = getSmithyContext; +exports.normalizeProvider = normalizeProvider; diff --git a/food-ordering-app/server/node_modules/@smithy/util-middleware/dist-es/getSmithyContext.js b/food-ordering-app/server/node_modules/@smithy/util-middleware/dist-es/getSmithyContext.js new file mode 100644 index 000000000..3848a0c2f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-middleware/dist-es/getSmithyContext.js @@ -0,0 +1,2 @@ +import { SMITHY_CONTEXT_KEY } from "@smithy/types"; +export const getSmithyContext = (context) => context[SMITHY_CONTEXT_KEY] || (context[SMITHY_CONTEXT_KEY] = {}); diff --git a/food-ordering-app/server/node_modules/@smithy/util-middleware/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/util-middleware/dist-es/index.js new file mode 100644 index 000000000..484290d46 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-middleware/dist-es/index.js @@ -0,0 +1,2 @@ +export * from "./getSmithyContext"; +export * from "./normalizeProvider"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-middleware/dist-es/normalizeProvider.js b/food-ordering-app/server/node_modules/@smithy/util-middleware/dist-es/normalizeProvider.js new file mode 100644 index 000000000..a83ea99eb --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-middleware/dist-es/normalizeProvider.js @@ -0,0 +1,6 @@ +export const normalizeProvider = (input) => { + if (typeof input === "function") + return input; + const promisified = Promise.resolve(input); + return () => promisified; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-middleware/dist-types/getSmithyContext.d.ts b/food-ordering-app/server/node_modules/@smithy/util-middleware/dist-types/getSmithyContext.d.ts new file mode 100644 index 000000000..92cbb09b6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-middleware/dist-types/getSmithyContext.d.ts @@ -0,0 +1,5 @@ +import type { HandlerExecutionContext } from "@smithy/types"; +/** + * @internal + */ +export declare const getSmithyContext: (context: HandlerExecutionContext) => Record; diff --git a/food-ordering-app/server/node_modules/@smithy/util-middleware/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-middleware/dist-types/index.d.ts new file mode 100644 index 000000000..3869284e4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-middleware/dist-types/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./getSmithyContext"; +/** + * @internal + */ +export * from "./normalizeProvider"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-middleware/dist-types/normalizeProvider.d.ts b/food-ordering-app/server/node_modules/@smithy/util-middleware/dist-types/normalizeProvider.d.ts new file mode 100644 index 000000000..1f7b6f66d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-middleware/dist-types/normalizeProvider.d.ts @@ -0,0 +1,7 @@ +import type { Provider } from "@smithy/types"; +/** + * @internal + * + * @returns a provider function for the input value if it isn't already one. + */ +export declare const normalizeProvider: (input: T | Provider) => Provider; diff --git a/food-ordering-app/server/node_modules/@smithy/util-middleware/dist-types/ts3.4/getSmithyContext.d.ts b/food-ordering-app/server/node_modules/@smithy/util-middleware/dist-types/ts3.4/getSmithyContext.d.ts new file mode 100644 index 000000000..523ee47da --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-middleware/dist-types/ts3.4/getSmithyContext.d.ts @@ -0,0 +1,5 @@ +import { HandlerExecutionContext } from "@smithy/types"; +/** + * @internal + */ +export declare const getSmithyContext: (context: HandlerExecutionContext) => Record; diff --git a/food-ordering-app/server/node_modules/@smithy/util-middleware/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-middleware/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..3869284e4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-middleware/dist-types/ts3.4/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./getSmithyContext"; +/** + * @internal + */ +export * from "./normalizeProvider"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-middleware/dist-types/ts3.4/normalizeProvider.d.ts b/food-ordering-app/server/node_modules/@smithy/util-middleware/dist-types/ts3.4/normalizeProvider.d.ts new file mode 100644 index 000000000..4fe2d9ad7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-middleware/dist-types/ts3.4/normalizeProvider.d.ts @@ -0,0 +1,7 @@ +import { Provider } from "@smithy/types"; +/** + * @internal + * + * @returns a provider function for the input value if it isn't already one. + */ +export declare const normalizeProvider: (input: T | Provider) => Provider; diff --git a/food-ordering-app/server/node_modules/@smithy/util-middleware/package.json b/food-ordering-app/server/node_modules/@smithy/util-middleware/package.json new file mode 100644 index 000000000..6f9888d83 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-middleware/package.json @@ -0,0 +1,67 @@ +{ + "name": "@smithy/util-middleware", + "version": "4.2.12", + "description": "Shared utilities for to be used in middleware packages.", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-middleware", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "keywords": [ + "aws", + "middleware" + ], + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "types/*": [ + "types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/master/packages/util-middleware", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/util-middleware" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/LICENSE b/food-ordering-app/server/node_modules/@smithy/util-retry/LICENSE new file mode 100644 index 000000000..a1895fac3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/README.md b/food-ordering-app/server/node_modules/@smithy/util-retry/README.md new file mode 100644 index 000000000..bcf11a942 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/README.md @@ -0,0 +1,78 @@ +# @smithy/util-retry + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-retry/latest.svg)](https://www.npmjs.com/package/@smithy/util-retry) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-retry.svg)](https://www.npmjs.com/package/@smithy/util-retry) + +This package provides shared utilities for retries. + +## Usage + +### Default + +By default, each client already has a default retry strategy. The default retry count is 3, and +only retryable errors will be retried. + +[AWS Documentation: Retry behavior](https://docs.aws.amazon.com/sdkref/latest/guide/feature-retry-behavior.html). + +```js +import { S3Client } from "@aws-sdk/client-s3"; + +const client = new S3Client({}); // default retry strategy included. +``` + +### MaxAttempts + +If you want to change the number of attempts, you can provide `maxAttempts` configuration during client creation. + +```js +import { S3Client } from "@aws-sdk/client-s3"; + +const client = new S3Client({ maxAttempts: 4 }); +``` + +This is recommended because the `StandardRetryStrategy` includes backoff calculation, +deciding whether an error should be retried, and a retry token counter. + +### MaxAttempts and BackoffComputation + +If you want to change the number of attempts and use a custom delay +computation, you can use the `ConfiguredRetryStrategy` from `@smithy/util-retry`. + +```js +import { S3Client } from "@aws-sdk/client-s3"; +import { ConfiguredRetryStrategy } from "@smithy/util-retry"; + +const client = new S3Client({ + retryStrategy: new ConfiguredRetryStrategy( + 4, // max attempts. + (attempt: number) => 100 + attempt * 1000 // backoff function. + ), +}); +``` + +This example sets the backoff at 100ms plus 1s per attempt. + +### MaxAttempts and RetryStrategy + +If you provide both `maxAttempts` and `retryStrategy`, the `retryStrategy` will +get precedence as it's more specific. + +```js +import { S3Client } from "@aws-sdk/client-s3"; +import { ConfiguredRetryStrategy } from "@smithy/util-retry"; + +const client = new S3Client({ + maxAttempts: 2, // ignored. + retryStrategy: new ConfiguredRetryStrategy( + 4, // used. + (attempt: number) => 100 + attempt * 1000 // backoff function. + ), +}); +``` + +### Further customization + +You can implement the `RetryStrategyV2` interface. + +Source: https://github.com/smithy-lang/smithy-typescript/blob/main/packages/types/src/retry.ts +API Docs: https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-types/Interface/RetryStrategyV2/ diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-cjs/index.js new file mode 100644 index 000000000..a56d37c93 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-cjs/index.js @@ -0,0 +1,278 @@ +'use strict'; + +var serviceErrorClassification = require('@smithy/service-error-classification'); + +exports.RETRY_MODES = void 0; +(function (RETRY_MODES) { + RETRY_MODES["STANDARD"] = "standard"; + RETRY_MODES["ADAPTIVE"] = "adaptive"; +})(exports.RETRY_MODES || (exports.RETRY_MODES = {})); +const DEFAULT_MAX_ATTEMPTS = 3; +const DEFAULT_RETRY_MODE = exports.RETRY_MODES.STANDARD; + +class DefaultRateLimiter { + static setTimeoutFn = setTimeout; + beta; + minCapacity; + minFillRate; + scaleConstant; + smooth; + currentCapacity = 0; + enabled = false; + lastMaxRate = 0; + measuredTxRate = 0; + requestCount = 0; + fillRate; + lastThrottleTime; + lastTimestamp = 0; + lastTxRateBucket; + maxCapacity; + timeWindow = 0; + constructor(options) { + this.beta = options?.beta ?? 0.7; + this.minCapacity = options?.minCapacity ?? 1; + this.minFillRate = options?.minFillRate ?? 0.5; + this.scaleConstant = options?.scaleConstant ?? 0.4; + this.smooth = options?.smooth ?? 0.8; + const currentTimeInSeconds = this.getCurrentTimeInSeconds(); + this.lastThrottleTime = currentTimeInSeconds; + this.lastTxRateBucket = Math.floor(this.getCurrentTimeInSeconds()); + this.fillRate = this.minFillRate; + this.maxCapacity = this.minCapacity; + } + getCurrentTimeInSeconds() { + return Date.now() / 1000; + } + async getSendToken() { + return this.acquireTokenBucket(1); + } + async acquireTokenBucket(amount) { + if (!this.enabled) { + return; + } + this.refillTokenBucket(); + if (amount > this.currentCapacity) { + const delay = ((amount - this.currentCapacity) / this.fillRate) * 1000; + await new Promise((resolve) => DefaultRateLimiter.setTimeoutFn(resolve, delay)); + } + this.currentCapacity = this.currentCapacity - amount; + } + refillTokenBucket() { + const timestamp = this.getCurrentTimeInSeconds(); + if (!this.lastTimestamp) { + this.lastTimestamp = timestamp; + return; + } + const fillAmount = (timestamp - this.lastTimestamp) * this.fillRate; + this.currentCapacity = Math.min(this.maxCapacity, this.currentCapacity + fillAmount); + this.lastTimestamp = timestamp; + } + updateClientSendingRate(response) { + let calculatedRate; + this.updateMeasuredRate(); + if (serviceErrorClassification.isThrottlingError(response)) { + const rateToUse = !this.enabled ? this.measuredTxRate : Math.min(this.measuredTxRate, this.fillRate); + this.lastMaxRate = rateToUse; + this.calculateTimeWindow(); + this.lastThrottleTime = this.getCurrentTimeInSeconds(); + calculatedRate = this.cubicThrottle(rateToUse); + this.enableTokenBucket(); + } + else { + this.calculateTimeWindow(); + calculatedRate = this.cubicSuccess(this.getCurrentTimeInSeconds()); + } + const newRate = Math.min(calculatedRate, 2 * this.measuredTxRate); + this.updateTokenBucketRate(newRate); + } + calculateTimeWindow() { + this.timeWindow = this.getPrecise(Math.pow((this.lastMaxRate * (1 - this.beta)) / this.scaleConstant, 1 / 3)); + } + cubicThrottle(rateToUse) { + return this.getPrecise(rateToUse * this.beta); + } + cubicSuccess(timestamp) { + return this.getPrecise(this.scaleConstant * Math.pow(timestamp - this.lastThrottleTime - this.timeWindow, 3) + this.lastMaxRate); + } + enableTokenBucket() { + this.enabled = true; + } + updateTokenBucketRate(newRate) { + this.refillTokenBucket(); + this.fillRate = Math.max(newRate, this.minFillRate); + this.maxCapacity = Math.max(newRate, this.minCapacity); + this.currentCapacity = Math.min(this.currentCapacity, this.maxCapacity); + } + updateMeasuredRate() { + const t = this.getCurrentTimeInSeconds(); + const timeBucket = Math.floor(t * 2) / 2; + this.requestCount++; + if (timeBucket > this.lastTxRateBucket) { + const currentRate = this.requestCount / (timeBucket - this.lastTxRateBucket); + this.measuredTxRate = this.getPrecise(currentRate * this.smooth + this.measuredTxRate * (1 - this.smooth)); + this.requestCount = 0; + this.lastTxRateBucket = timeBucket; + } + } + getPrecise(num) { + return parseFloat(num.toFixed(8)); + } +} + +const DEFAULT_RETRY_DELAY_BASE = 100; +const MAXIMUM_RETRY_DELAY = 20 * 1000; +const THROTTLING_RETRY_DELAY_BASE = 500; +const INITIAL_RETRY_TOKENS = 500; +const RETRY_COST = 5; +const TIMEOUT_RETRY_COST = 10; +const NO_RETRY_INCREMENT = 1; +const INVOCATION_ID_HEADER = "amz-sdk-invocation-id"; +const REQUEST_HEADER = "amz-sdk-request"; + +const getDefaultRetryBackoffStrategy = () => { + let delayBase = DEFAULT_RETRY_DELAY_BASE; + const computeNextBackoffDelay = (attempts) => { + return Math.floor(Math.min(MAXIMUM_RETRY_DELAY, Math.random() * 2 ** attempts * delayBase)); + }; + const setDelayBase = (delay) => { + delayBase = delay; + }; + return { + computeNextBackoffDelay, + setDelayBase, + }; +}; + +const createDefaultRetryToken = ({ retryDelay, retryCount, retryCost, }) => { + const getRetryCount = () => retryCount; + const getRetryDelay = () => Math.min(MAXIMUM_RETRY_DELAY, retryDelay); + const getRetryCost = () => retryCost; + return { + getRetryCount, + getRetryDelay, + getRetryCost, + }; +}; + +class StandardRetryStrategy { + maxAttempts; + mode = exports.RETRY_MODES.STANDARD; + capacity = INITIAL_RETRY_TOKENS; + retryBackoffStrategy = getDefaultRetryBackoffStrategy(); + maxAttemptsProvider; + constructor(maxAttempts) { + this.maxAttempts = maxAttempts; + this.maxAttemptsProvider = typeof maxAttempts === "function" ? maxAttempts : async () => maxAttempts; + } + async acquireInitialRetryToken(retryTokenScope) { + return createDefaultRetryToken({ + retryDelay: DEFAULT_RETRY_DELAY_BASE, + retryCount: 0, + }); + } + async refreshRetryTokenForRetry(token, errorInfo) { + const maxAttempts = await this.getMaxAttempts(); + if (this.shouldRetry(token, errorInfo, maxAttempts)) { + const errorType = errorInfo.errorType; + this.retryBackoffStrategy.setDelayBase(errorType === "THROTTLING" ? THROTTLING_RETRY_DELAY_BASE : DEFAULT_RETRY_DELAY_BASE); + const delayFromErrorType = this.retryBackoffStrategy.computeNextBackoffDelay(token.getRetryCount()); + const retryDelay = errorInfo.retryAfterHint + ? Math.max(errorInfo.retryAfterHint.getTime() - Date.now() || 0, delayFromErrorType) + : delayFromErrorType; + const capacityCost = this.getCapacityCost(errorType); + this.capacity -= capacityCost; + return createDefaultRetryToken({ + retryDelay, + retryCount: token.getRetryCount() + 1, + retryCost: capacityCost, + }); + } + throw new Error("No retry token available"); + } + recordSuccess(token) { + this.capacity = Math.max(INITIAL_RETRY_TOKENS, this.capacity + (token.getRetryCost() ?? NO_RETRY_INCREMENT)); + } + getCapacity() { + return this.capacity; + } + async getMaxAttempts() { + try { + return await this.maxAttemptsProvider(); + } + catch (error) { + console.warn(`Max attempts provider could not resolve. Using default of ${DEFAULT_MAX_ATTEMPTS}`); + return DEFAULT_MAX_ATTEMPTS; + } + } + shouldRetry(tokenToRenew, errorInfo, maxAttempts) { + const attempts = tokenToRenew.getRetryCount() + 1; + return (attempts < maxAttempts && + this.capacity >= this.getCapacityCost(errorInfo.errorType) && + this.isRetryableError(errorInfo.errorType)); + } + getCapacityCost(errorType) { + return errorType === "TRANSIENT" ? TIMEOUT_RETRY_COST : RETRY_COST; + } + isRetryableError(errorType) { + return errorType === "THROTTLING" || errorType === "TRANSIENT"; + } +} + +class AdaptiveRetryStrategy { + maxAttemptsProvider; + rateLimiter; + standardRetryStrategy; + mode = exports.RETRY_MODES.ADAPTIVE; + constructor(maxAttemptsProvider, options) { + this.maxAttemptsProvider = maxAttemptsProvider; + const { rateLimiter } = options ?? {}; + this.rateLimiter = rateLimiter ?? new DefaultRateLimiter(); + this.standardRetryStrategy = new StandardRetryStrategy(maxAttemptsProvider); + } + async acquireInitialRetryToken(retryTokenScope) { + await this.rateLimiter.getSendToken(); + return this.standardRetryStrategy.acquireInitialRetryToken(retryTokenScope); + } + async refreshRetryTokenForRetry(tokenToRenew, errorInfo) { + this.rateLimiter.updateClientSendingRate(errorInfo); + return this.standardRetryStrategy.refreshRetryTokenForRetry(tokenToRenew, errorInfo); + } + recordSuccess(token) { + this.rateLimiter.updateClientSendingRate({}); + this.standardRetryStrategy.recordSuccess(token); + } +} + +class ConfiguredRetryStrategy extends StandardRetryStrategy { + computeNextBackoffDelay; + constructor(maxAttempts, computeNextBackoffDelay = DEFAULT_RETRY_DELAY_BASE) { + super(typeof maxAttempts === "function" ? maxAttempts : async () => maxAttempts); + if (typeof computeNextBackoffDelay === "number") { + this.computeNextBackoffDelay = () => computeNextBackoffDelay; + } + else { + this.computeNextBackoffDelay = computeNextBackoffDelay; + } + } + async refreshRetryTokenForRetry(tokenToRenew, errorInfo) { + const token = await super.refreshRetryTokenForRetry(tokenToRenew, errorInfo); + token.getRetryDelay = () => this.computeNextBackoffDelay(token.getRetryCount()); + return token; + } +} + +exports.AdaptiveRetryStrategy = AdaptiveRetryStrategy; +exports.ConfiguredRetryStrategy = ConfiguredRetryStrategy; +exports.DEFAULT_MAX_ATTEMPTS = DEFAULT_MAX_ATTEMPTS; +exports.DEFAULT_RETRY_DELAY_BASE = DEFAULT_RETRY_DELAY_BASE; +exports.DEFAULT_RETRY_MODE = DEFAULT_RETRY_MODE; +exports.DefaultRateLimiter = DefaultRateLimiter; +exports.INITIAL_RETRY_TOKENS = INITIAL_RETRY_TOKENS; +exports.INVOCATION_ID_HEADER = INVOCATION_ID_HEADER; +exports.MAXIMUM_RETRY_DELAY = MAXIMUM_RETRY_DELAY; +exports.NO_RETRY_INCREMENT = NO_RETRY_INCREMENT; +exports.REQUEST_HEADER = REQUEST_HEADER; +exports.RETRY_COST = RETRY_COST; +exports.StandardRetryStrategy = StandardRetryStrategy; +exports.THROTTLING_RETRY_DELAY_BASE = THROTTLING_RETRY_DELAY_BASE; +exports.TIMEOUT_RETRY_COST = TIMEOUT_RETRY_COST; diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/dist-es/AdaptiveRetryStrategy.js b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-es/AdaptiveRetryStrategy.js new file mode 100644 index 000000000..b00d5c0c9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-es/AdaptiveRetryStrategy.js @@ -0,0 +1,27 @@ +import { RETRY_MODES } from "./config"; +import { DefaultRateLimiter } from "./DefaultRateLimiter"; +import { StandardRetryStrategy } from "./StandardRetryStrategy"; +export class AdaptiveRetryStrategy { + maxAttemptsProvider; + rateLimiter; + standardRetryStrategy; + mode = RETRY_MODES.ADAPTIVE; + constructor(maxAttemptsProvider, options) { + this.maxAttemptsProvider = maxAttemptsProvider; + const { rateLimiter } = options ?? {}; + this.rateLimiter = rateLimiter ?? new DefaultRateLimiter(); + this.standardRetryStrategy = new StandardRetryStrategy(maxAttemptsProvider); + } + async acquireInitialRetryToken(retryTokenScope) { + await this.rateLimiter.getSendToken(); + return this.standardRetryStrategy.acquireInitialRetryToken(retryTokenScope); + } + async refreshRetryTokenForRetry(tokenToRenew, errorInfo) { + this.rateLimiter.updateClientSendingRate(errorInfo); + return this.standardRetryStrategy.refreshRetryTokenForRetry(tokenToRenew, errorInfo); + } + recordSuccess(token) { + this.rateLimiter.updateClientSendingRate({}); + this.standardRetryStrategy.recordSuccess(token); + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/dist-es/ConfiguredRetryStrategy.js b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-es/ConfiguredRetryStrategy.js new file mode 100644 index 000000000..59c8d76aa --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-es/ConfiguredRetryStrategy.js @@ -0,0 +1,19 @@ +import { DEFAULT_RETRY_DELAY_BASE } from "./constants"; +import { StandardRetryStrategy } from "./StandardRetryStrategy"; +export class ConfiguredRetryStrategy extends StandardRetryStrategy { + computeNextBackoffDelay; + constructor(maxAttempts, computeNextBackoffDelay = DEFAULT_RETRY_DELAY_BASE) { + super(typeof maxAttempts === "function" ? maxAttempts : async () => maxAttempts); + if (typeof computeNextBackoffDelay === "number") { + this.computeNextBackoffDelay = () => computeNextBackoffDelay; + } + else { + this.computeNextBackoffDelay = computeNextBackoffDelay; + } + } + async refreshRetryTokenForRetry(tokenToRenew, errorInfo) { + const token = await super.refreshRetryTokenForRetry(tokenToRenew, errorInfo); + token.getRetryDelay = () => this.computeNextBackoffDelay(token.getRetryCount()); + return token; + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/dist-es/DefaultRateLimiter.js b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-es/DefaultRateLimiter.js new file mode 100644 index 000000000..ab2b779a9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-es/DefaultRateLimiter.js @@ -0,0 +1,109 @@ +import { isThrottlingError } from "@smithy/service-error-classification"; +export class DefaultRateLimiter { + static setTimeoutFn = setTimeout; + beta; + minCapacity; + minFillRate; + scaleConstant; + smooth; + currentCapacity = 0; + enabled = false; + lastMaxRate = 0; + measuredTxRate = 0; + requestCount = 0; + fillRate; + lastThrottleTime; + lastTimestamp = 0; + lastTxRateBucket; + maxCapacity; + timeWindow = 0; + constructor(options) { + this.beta = options?.beta ?? 0.7; + this.minCapacity = options?.minCapacity ?? 1; + this.minFillRate = options?.minFillRate ?? 0.5; + this.scaleConstant = options?.scaleConstant ?? 0.4; + this.smooth = options?.smooth ?? 0.8; + const currentTimeInSeconds = this.getCurrentTimeInSeconds(); + this.lastThrottleTime = currentTimeInSeconds; + this.lastTxRateBucket = Math.floor(this.getCurrentTimeInSeconds()); + this.fillRate = this.minFillRate; + this.maxCapacity = this.minCapacity; + } + getCurrentTimeInSeconds() { + return Date.now() / 1000; + } + async getSendToken() { + return this.acquireTokenBucket(1); + } + async acquireTokenBucket(amount) { + if (!this.enabled) { + return; + } + this.refillTokenBucket(); + if (amount > this.currentCapacity) { + const delay = ((amount - this.currentCapacity) / this.fillRate) * 1000; + await new Promise((resolve) => DefaultRateLimiter.setTimeoutFn(resolve, delay)); + } + this.currentCapacity = this.currentCapacity - amount; + } + refillTokenBucket() { + const timestamp = this.getCurrentTimeInSeconds(); + if (!this.lastTimestamp) { + this.lastTimestamp = timestamp; + return; + } + const fillAmount = (timestamp - this.lastTimestamp) * this.fillRate; + this.currentCapacity = Math.min(this.maxCapacity, this.currentCapacity + fillAmount); + this.lastTimestamp = timestamp; + } + updateClientSendingRate(response) { + let calculatedRate; + this.updateMeasuredRate(); + if (isThrottlingError(response)) { + const rateToUse = !this.enabled ? this.measuredTxRate : Math.min(this.measuredTxRate, this.fillRate); + this.lastMaxRate = rateToUse; + this.calculateTimeWindow(); + this.lastThrottleTime = this.getCurrentTimeInSeconds(); + calculatedRate = this.cubicThrottle(rateToUse); + this.enableTokenBucket(); + } + else { + this.calculateTimeWindow(); + calculatedRate = this.cubicSuccess(this.getCurrentTimeInSeconds()); + } + const newRate = Math.min(calculatedRate, 2 * this.measuredTxRate); + this.updateTokenBucketRate(newRate); + } + calculateTimeWindow() { + this.timeWindow = this.getPrecise(Math.pow((this.lastMaxRate * (1 - this.beta)) / this.scaleConstant, 1 / 3)); + } + cubicThrottle(rateToUse) { + return this.getPrecise(rateToUse * this.beta); + } + cubicSuccess(timestamp) { + return this.getPrecise(this.scaleConstant * Math.pow(timestamp - this.lastThrottleTime - this.timeWindow, 3) + this.lastMaxRate); + } + enableTokenBucket() { + this.enabled = true; + } + updateTokenBucketRate(newRate) { + this.refillTokenBucket(); + this.fillRate = Math.max(newRate, this.minFillRate); + this.maxCapacity = Math.max(newRate, this.minCapacity); + this.currentCapacity = Math.min(this.currentCapacity, this.maxCapacity); + } + updateMeasuredRate() { + const t = this.getCurrentTimeInSeconds(); + const timeBucket = Math.floor(t * 2) / 2; + this.requestCount++; + if (timeBucket > this.lastTxRateBucket) { + const currentRate = this.requestCount / (timeBucket - this.lastTxRateBucket); + this.measuredTxRate = this.getPrecise(currentRate * this.smooth + this.measuredTxRate * (1 - this.smooth)); + this.requestCount = 0; + this.lastTxRateBucket = timeBucket; + } + } + getPrecise(num) { + return parseFloat(num.toFixed(8)); + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/dist-es/StandardRetryStrategy.js b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-es/StandardRetryStrategy.js new file mode 100644 index 000000000..fe5cb7174 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-es/StandardRetryStrategy.js @@ -0,0 +1,67 @@ +import { DEFAULT_MAX_ATTEMPTS, RETRY_MODES } from "./config"; +import { DEFAULT_RETRY_DELAY_BASE, INITIAL_RETRY_TOKENS, NO_RETRY_INCREMENT, RETRY_COST, THROTTLING_RETRY_DELAY_BASE, TIMEOUT_RETRY_COST, } from "./constants"; +import { getDefaultRetryBackoffStrategy } from "./defaultRetryBackoffStrategy"; +import { createDefaultRetryToken } from "./defaultRetryToken"; +export class StandardRetryStrategy { + maxAttempts; + mode = RETRY_MODES.STANDARD; + capacity = INITIAL_RETRY_TOKENS; + retryBackoffStrategy = getDefaultRetryBackoffStrategy(); + maxAttemptsProvider; + constructor(maxAttempts) { + this.maxAttempts = maxAttempts; + this.maxAttemptsProvider = typeof maxAttempts === "function" ? maxAttempts : async () => maxAttempts; + } + async acquireInitialRetryToken(retryTokenScope) { + return createDefaultRetryToken({ + retryDelay: DEFAULT_RETRY_DELAY_BASE, + retryCount: 0, + }); + } + async refreshRetryTokenForRetry(token, errorInfo) { + const maxAttempts = await this.getMaxAttempts(); + if (this.shouldRetry(token, errorInfo, maxAttempts)) { + const errorType = errorInfo.errorType; + this.retryBackoffStrategy.setDelayBase(errorType === "THROTTLING" ? THROTTLING_RETRY_DELAY_BASE : DEFAULT_RETRY_DELAY_BASE); + const delayFromErrorType = this.retryBackoffStrategy.computeNextBackoffDelay(token.getRetryCount()); + const retryDelay = errorInfo.retryAfterHint + ? Math.max(errorInfo.retryAfterHint.getTime() - Date.now() || 0, delayFromErrorType) + : delayFromErrorType; + const capacityCost = this.getCapacityCost(errorType); + this.capacity -= capacityCost; + return createDefaultRetryToken({ + retryDelay, + retryCount: token.getRetryCount() + 1, + retryCost: capacityCost, + }); + } + throw new Error("No retry token available"); + } + recordSuccess(token) { + this.capacity = Math.max(INITIAL_RETRY_TOKENS, this.capacity + (token.getRetryCost() ?? NO_RETRY_INCREMENT)); + } + getCapacity() { + return this.capacity; + } + async getMaxAttempts() { + try { + return await this.maxAttemptsProvider(); + } + catch (error) { + console.warn(`Max attempts provider could not resolve. Using default of ${DEFAULT_MAX_ATTEMPTS}`); + return DEFAULT_MAX_ATTEMPTS; + } + } + shouldRetry(tokenToRenew, errorInfo, maxAttempts) { + const attempts = tokenToRenew.getRetryCount() + 1; + return (attempts < maxAttempts && + this.capacity >= this.getCapacityCost(errorInfo.errorType) && + this.isRetryableError(errorInfo.errorType)); + } + getCapacityCost(errorType) { + return errorType === "TRANSIENT" ? TIMEOUT_RETRY_COST : RETRY_COST; + } + isRetryableError(errorType) { + return errorType === "THROTTLING" || errorType === "TRANSIENT"; + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/dist-es/config.js b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-es/config.js new file mode 100644 index 000000000..438d42da6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-es/config.js @@ -0,0 +1,7 @@ +export var RETRY_MODES; +(function (RETRY_MODES) { + RETRY_MODES["STANDARD"] = "standard"; + RETRY_MODES["ADAPTIVE"] = "adaptive"; +})(RETRY_MODES || (RETRY_MODES = {})); +export const DEFAULT_MAX_ATTEMPTS = 3; +export const DEFAULT_RETRY_MODE = RETRY_MODES.STANDARD; diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/dist-es/constants.js b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-es/constants.js new file mode 100644 index 000000000..0876f8e23 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-es/constants.js @@ -0,0 +1,9 @@ +export const DEFAULT_RETRY_DELAY_BASE = 100; +export const MAXIMUM_RETRY_DELAY = 20 * 1000; +export const THROTTLING_RETRY_DELAY_BASE = 500; +export const INITIAL_RETRY_TOKENS = 500; +export const RETRY_COST = 5; +export const TIMEOUT_RETRY_COST = 10; +export const NO_RETRY_INCREMENT = 1; +export const INVOCATION_ID_HEADER = "amz-sdk-invocation-id"; +export const REQUEST_HEADER = "amz-sdk-request"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/dist-es/defaultRetryBackoffStrategy.js b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-es/defaultRetryBackoffStrategy.js new file mode 100644 index 000000000..ce04bc5e3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-es/defaultRetryBackoffStrategy.js @@ -0,0 +1,14 @@ +import { DEFAULT_RETRY_DELAY_BASE, MAXIMUM_RETRY_DELAY } from "./constants"; +export const getDefaultRetryBackoffStrategy = () => { + let delayBase = DEFAULT_RETRY_DELAY_BASE; + const computeNextBackoffDelay = (attempts) => { + return Math.floor(Math.min(MAXIMUM_RETRY_DELAY, Math.random() * 2 ** attempts * delayBase)); + }; + const setDelayBase = (delay) => { + delayBase = delay; + }; + return { + computeNextBackoffDelay, + setDelayBase, + }; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/dist-es/defaultRetryToken.js b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-es/defaultRetryToken.js new file mode 100644 index 000000000..203bb662b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-es/defaultRetryToken.js @@ -0,0 +1,11 @@ +import { MAXIMUM_RETRY_DELAY } from "./constants"; +export const createDefaultRetryToken = ({ retryDelay, retryCount, retryCost, }) => { + const getRetryCount = () => retryCount; + const getRetryDelay = () => Math.min(MAXIMUM_RETRY_DELAY, retryDelay); + const getRetryCost = () => retryCost; + return { + getRetryCount, + getRetryDelay, + getRetryCost, + }; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-es/index.js new file mode 100644 index 000000000..8637ced05 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-es/index.js @@ -0,0 +1,7 @@ +export * from "./AdaptiveRetryStrategy"; +export * from "./ConfiguredRetryStrategy"; +export * from "./DefaultRateLimiter"; +export * from "./StandardRetryStrategy"; +export * from "./config"; +export * from "./constants"; +export * from "./types"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/dist-es/types.js b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-es/types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-es/types.js @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/AdaptiveRetryStrategy.d.ts b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/AdaptiveRetryStrategy.d.ts new file mode 100644 index 000000000..b86a6c11b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/AdaptiveRetryStrategy.d.ts @@ -0,0 +1,33 @@ +import type { Provider, RetryErrorInfo, RetryStrategyV2, RetryToken, StandardRetryToken } from "@smithy/types"; +import type { RateLimiter } from "./types"; +/** + * @public + * + * Strategy options to be passed to AdaptiveRetryStrategy + */ +export interface AdaptiveRetryStrategyOptions { + rateLimiter?: RateLimiter; +} +/** + * @public + * + * The AdaptiveRetryStrategy is a retry strategy for executing against a very + * resource constrained set of resources. Care should be taken when using this + * retry strategy. By default, it uses a dynamic backoff delay based on load + * currently perceived against the downstream resource and performs circuit + * breaking to disable retries in the event of high downstream failures using + * the DefaultRateLimiter. + * + * @see {@link StandardRetryStrategy} + * @see {@link DefaultRateLimiter } + */ +export declare class AdaptiveRetryStrategy implements RetryStrategyV2 { + private readonly maxAttemptsProvider; + private rateLimiter; + private standardRetryStrategy; + readonly mode: string; + constructor(maxAttemptsProvider: Provider, options?: AdaptiveRetryStrategyOptions); + acquireInitialRetryToken(retryTokenScope: string): Promise; + refreshRetryTokenForRetry(tokenToRenew: StandardRetryToken, errorInfo: RetryErrorInfo): Promise; + recordSuccess(token: StandardRetryToken): void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/ConfiguredRetryStrategy.d.ts b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/ConfiguredRetryStrategy.d.ts new file mode 100644 index 000000000..3250c6d54 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/ConfiguredRetryStrategy.d.ts @@ -0,0 +1,32 @@ +import type { Provider, RetryBackoffStrategy, RetryErrorInfo, RetryStrategyV2, StandardRetryToken } from "@smithy/types"; +import { StandardRetryStrategy } from "./StandardRetryStrategy"; +/** + * @public + * + * This extension of the StandardRetryStrategy allows customizing the + * backoff computation. + */ +export declare class ConfiguredRetryStrategy extends StandardRetryStrategy implements RetryStrategyV2 { + private readonly computeNextBackoffDelay; + /** + * @param maxAttempts - the maximum number of retry attempts allowed. + * e.g., if set to 3, then 4 total requests are possible. + * @param computeNextBackoffDelay - a millisecond delay for each retry or a function that takes the retry attempt + * and returns the delay. + * + * @example exponential backoff. + * ```js + * new Client({ + * retryStrategy: new ConfiguredRetryStrategy(3, (attempt) => attempt ** 2) + * }); + * ``` + * @example constant delay. + * ```js + * new Client({ + * retryStrategy: new ConfiguredRetryStrategy(3, 2000) + * }); + * ``` + */ + constructor(maxAttempts: number | Provider, computeNextBackoffDelay?: number | RetryBackoffStrategy["computeNextBackoffDelay"]); + refreshRetryTokenForRetry(tokenToRenew: StandardRetryToken, errorInfo: RetryErrorInfo): Promise; +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/DefaultRateLimiter.d.ts b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/DefaultRateLimiter.d.ts new file mode 100644 index 000000000..5e344c6ae --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/DefaultRateLimiter.d.ts @@ -0,0 +1,49 @@ +import type { RateLimiter } from "./types"; +/** + * @public + */ +export interface DefaultRateLimiterOptions { + beta?: number; + minCapacity?: number; + minFillRate?: number; + scaleConstant?: number; + smooth?: number; +} +/** + * @public + */ +export declare class DefaultRateLimiter implements RateLimiter { + /** + * Only used in testing. + */ + private static setTimeoutFn; + private beta; + private minCapacity; + private minFillRate; + private scaleConstant; + private smooth; + private currentCapacity; + private enabled; + private lastMaxRate; + private measuredTxRate; + private requestCount; + private fillRate; + private lastThrottleTime; + private lastTimestamp; + private lastTxRateBucket; + private maxCapacity; + private timeWindow; + constructor(options?: DefaultRateLimiterOptions); + private getCurrentTimeInSeconds; + getSendToken(): Promise; + private acquireTokenBucket; + private refillTokenBucket; + updateClientSendingRate(response: any): void; + private calculateTimeWindow; + private cubicThrottle; + private cubicSuccess; + private enableTokenBucket; + private updateTokenBucketRate; + private updateMeasuredRate; + private getPrecise; +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/StandardRetryStrategy.d.ts b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/StandardRetryStrategy.d.ts new file mode 100644 index 000000000..2052e7edc --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/StandardRetryStrategy.d.ts @@ -0,0 +1,26 @@ +import type { Provider, RetryErrorInfo, RetryStrategyV2, StandardRetryToken } from "@smithy/types"; +/** + * @public + */ +export declare class StandardRetryStrategy implements RetryStrategyV2 { + private readonly maxAttempts; + readonly mode: string; + private capacity; + private readonly retryBackoffStrategy; + private readonly maxAttemptsProvider; + constructor(maxAttempts: number); + constructor(maxAttemptsProvider: Provider); + acquireInitialRetryToken(retryTokenScope: string): Promise; + refreshRetryTokenForRetry(token: StandardRetryToken, errorInfo: RetryErrorInfo): Promise; + recordSuccess(token: StandardRetryToken): void; + /** + * @returns the current available retry capacity. + * + * This number decreases when retries are executed and refills when requests or retries succeed. + */ + getCapacity(): number; + private getMaxAttempts; + private shouldRetry; + private getCapacityCost; + private isRetryableError; +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/config.d.ts b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/config.d.ts new file mode 100644 index 000000000..e4e74b3ab --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/config.d.ts @@ -0,0 +1,20 @@ +/** + * @public + */ +export declare enum RETRY_MODES { + STANDARD = "standard", + ADAPTIVE = "adaptive" +} +/** + * @public + * + * The default value for how many HTTP requests an SDK should make for a + * single SDK operation invocation before giving up + */ +export declare const DEFAULT_MAX_ATTEMPTS = 3; +/** + * @public + * + * The default retry algorithm to use. + */ +export declare const DEFAULT_RETRY_MODE = RETRY_MODES.STANDARD; diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/constants.d.ts b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/constants.d.ts new file mode 100644 index 000000000..bc7fec854 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/constants.d.ts @@ -0,0 +1,59 @@ +/** + * @public + * + * The base number of milliseconds to use in calculating a suitable cool-down + * time when a retryable error is encountered. + */ +export declare const DEFAULT_RETRY_DELAY_BASE = 100; +/** + * @public + * + * The maximum amount of time (in milliseconds) that will be used as a delay + * between retry attempts. + */ +export declare const MAXIMUM_RETRY_DELAY: number; +/** + * @public + * + * The retry delay base (in milliseconds) to use when a throttling error is + * encountered. + */ +export declare const THROTTLING_RETRY_DELAY_BASE = 500; +/** + * @public + * + * Initial number of retry tokens in Retry Quota + */ +export declare const INITIAL_RETRY_TOKENS = 500; +/** + * @public + * + * The total amount of retry tokens to be decremented from retry token balance. + */ +export declare const RETRY_COST = 5; +/** + * @public + * + * The total amount of retry tokens to be decremented from retry token balance + * when a throttling error is encountered. + */ +export declare const TIMEOUT_RETRY_COST = 10; +/** + * @public + * + * The total amount of retry token to be incremented from retry token balance + * if an SDK operation invocation succeeds without requiring a retry request. + */ +export declare const NO_RETRY_INCREMENT = 1; +/** + * @public + * + * Header name for SDK invocation ID + */ +export declare const INVOCATION_ID_HEADER = "amz-sdk-invocation-id"; +/** + * @public + * + * Header name for request retry information. + */ +export declare const REQUEST_HEADER = "amz-sdk-request"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/defaultRetryBackoffStrategy.d.ts b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/defaultRetryBackoffStrategy.d.ts new file mode 100644 index 000000000..1fa33d4ad --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/defaultRetryBackoffStrategy.d.ts @@ -0,0 +1,5 @@ +import type { StandardRetryBackoffStrategy } from "@smithy/types"; +/** + * @internal + */ +export declare const getDefaultRetryBackoffStrategy: () => StandardRetryBackoffStrategy; diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/defaultRetryToken.d.ts b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/defaultRetryToken.d.ts new file mode 100644 index 000000000..51311b171 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/defaultRetryToken.d.ts @@ -0,0 +1,9 @@ +import type { StandardRetryToken } from "@smithy/types"; +/** + * @internal + */ +export declare const createDefaultRetryToken: ({ retryDelay, retryCount, retryCost, }: { + retryDelay: number; + retryCount: number; + retryCost?: number; +}) => StandardRetryToken; diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/index.d.ts new file mode 100644 index 000000000..8637ced05 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/index.d.ts @@ -0,0 +1,7 @@ +export * from "./AdaptiveRetryStrategy"; +export * from "./ConfiguredRetryStrategy"; +export * from "./DefaultRateLimiter"; +export * from "./StandardRetryStrategy"; +export * from "./config"; +export * from "./constants"; +export * from "./types"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/ts3.4/AdaptiveRetryStrategy.d.ts b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/ts3.4/AdaptiveRetryStrategy.d.ts new file mode 100644 index 000000000..809251939 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/ts3.4/AdaptiveRetryStrategy.d.ts @@ -0,0 +1,33 @@ +import { Provider, RetryErrorInfo, RetryStrategyV2, RetryToken, StandardRetryToken } from "@smithy/types"; +import { RateLimiter } from "./types"; +/** + * @public + * + * Strategy options to be passed to AdaptiveRetryStrategy + */ +export interface AdaptiveRetryStrategyOptions { + rateLimiter?: RateLimiter; +} +/** + * @public + * + * The AdaptiveRetryStrategy is a retry strategy for executing against a very + * resource constrained set of resources. Care should be taken when using this + * retry strategy. By default, it uses a dynamic backoff delay based on load + * currently perceived against the downstream resource and performs circuit + * breaking to disable retries in the event of high downstream failures using + * the DefaultRateLimiter. + * + * @see {@link StandardRetryStrategy} + * @see {@link DefaultRateLimiter } + */ +export declare class AdaptiveRetryStrategy implements RetryStrategyV2 { + private readonly maxAttemptsProvider; + private rateLimiter; + private standardRetryStrategy; + readonly mode: string; + constructor(maxAttemptsProvider: Provider, options?: AdaptiveRetryStrategyOptions); + acquireInitialRetryToken(retryTokenScope: string): Promise; + refreshRetryTokenForRetry(tokenToRenew: StandardRetryToken, errorInfo: RetryErrorInfo): Promise; + recordSuccess(token: StandardRetryToken): void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/ts3.4/ConfiguredRetryStrategy.d.ts b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/ts3.4/ConfiguredRetryStrategy.d.ts new file mode 100644 index 000000000..f6ee9a4a8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/ts3.4/ConfiguredRetryStrategy.d.ts @@ -0,0 +1,32 @@ +import { Provider, RetryBackoffStrategy, RetryErrorInfo, RetryStrategyV2, StandardRetryToken } from "@smithy/types"; +import { StandardRetryStrategy } from "./StandardRetryStrategy"; +/** + * @public + * + * This extension of the StandardRetryStrategy allows customizing the + * backoff computation. + */ +export declare class ConfiguredRetryStrategy extends StandardRetryStrategy implements RetryStrategyV2 { + private readonly computeNextBackoffDelay; + /** + * @param maxAttempts - the maximum number of retry attempts allowed. + * e.g., if set to 3, then 4 total requests are possible. + * @param computeNextBackoffDelay - a millisecond delay for each retry or a function that takes the retry attempt + * and returns the delay. + * + * @example exponential backoff. + * ```js + * new Client({ + * retryStrategy: new ConfiguredRetryStrategy(3, (attempt) => attempt ** 2) + * }); + * ``` + * @example constant delay. + * ```js + * new Client({ + * retryStrategy: new ConfiguredRetryStrategy(3, 2000) + * }); + * ``` + */ + constructor(maxAttempts: number | Provider, computeNextBackoffDelay?: number | RetryBackoffStrategy["computeNextBackoffDelay"]); + refreshRetryTokenForRetry(tokenToRenew: StandardRetryToken, errorInfo: RetryErrorInfo): Promise; +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/ts3.4/DefaultRateLimiter.d.ts b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/ts3.4/DefaultRateLimiter.d.ts new file mode 100644 index 000000000..9d689fc9d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/ts3.4/DefaultRateLimiter.d.ts @@ -0,0 +1,49 @@ +import { RateLimiter } from "./types"; +/** + * @public + */ +export interface DefaultRateLimiterOptions { + beta?: number; + minCapacity?: number; + minFillRate?: number; + scaleConstant?: number; + smooth?: number; +} +/** + * @public + */ +export declare class DefaultRateLimiter implements RateLimiter { + /** + * Only used in testing. + */ + private static setTimeoutFn; + private beta; + private minCapacity; + private minFillRate; + private scaleConstant; + private smooth; + private currentCapacity; + private enabled; + private lastMaxRate; + private measuredTxRate; + private requestCount; + private fillRate; + private lastThrottleTime; + private lastTimestamp; + private lastTxRateBucket; + private maxCapacity; + private timeWindow; + constructor(options?: DefaultRateLimiterOptions); + private getCurrentTimeInSeconds; + getSendToken(): Promise; + private acquireTokenBucket; + private refillTokenBucket; + updateClientSendingRate(response: any): void; + private calculateTimeWindow; + private cubicThrottle; + private cubicSuccess; + private enableTokenBucket; + private updateTokenBucketRate; + private updateMeasuredRate; + private getPrecise; +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/ts3.4/StandardRetryStrategy.d.ts b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/ts3.4/StandardRetryStrategy.d.ts new file mode 100644 index 000000000..c100ebca7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/ts3.4/StandardRetryStrategy.d.ts @@ -0,0 +1,26 @@ +import { Provider, RetryErrorInfo, RetryStrategyV2, StandardRetryToken } from "@smithy/types"; +/** + * @public + */ +export declare class StandardRetryStrategy implements RetryStrategyV2 { + private readonly maxAttempts; + readonly mode: string; + private capacity; + private readonly retryBackoffStrategy; + private readonly maxAttemptsProvider; + constructor(maxAttempts: number); + constructor(maxAttemptsProvider: Provider); + acquireInitialRetryToken(retryTokenScope: string): Promise; + refreshRetryTokenForRetry(token: StandardRetryToken, errorInfo: RetryErrorInfo): Promise; + recordSuccess(token: StandardRetryToken): void; + /** + * @returns the current available retry capacity. + * + * This number decreases when retries are executed and refills when requests or retries succeed. + */ + getCapacity(): number; + private getMaxAttempts; + private shouldRetry; + private getCapacityCost; + private isRetryableError; +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/ts3.4/config.d.ts b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/ts3.4/config.d.ts new file mode 100644 index 000000000..e4e74b3ab --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/ts3.4/config.d.ts @@ -0,0 +1,20 @@ +/** + * @public + */ +export declare enum RETRY_MODES { + STANDARD = "standard", + ADAPTIVE = "adaptive" +} +/** + * @public + * + * The default value for how many HTTP requests an SDK should make for a + * single SDK operation invocation before giving up + */ +export declare const DEFAULT_MAX_ATTEMPTS = 3; +/** + * @public + * + * The default retry algorithm to use. + */ +export declare const DEFAULT_RETRY_MODE = RETRY_MODES.STANDARD; diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/ts3.4/constants.d.ts b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/ts3.4/constants.d.ts new file mode 100644 index 000000000..bc7fec854 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/ts3.4/constants.d.ts @@ -0,0 +1,59 @@ +/** + * @public + * + * The base number of milliseconds to use in calculating a suitable cool-down + * time when a retryable error is encountered. + */ +export declare const DEFAULT_RETRY_DELAY_BASE = 100; +/** + * @public + * + * The maximum amount of time (in milliseconds) that will be used as a delay + * between retry attempts. + */ +export declare const MAXIMUM_RETRY_DELAY: number; +/** + * @public + * + * The retry delay base (in milliseconds) to use when a throttling error is + * encountered. + */ +export declare const THROTTLING_RETRY_DELAY_BASE = 500; +/** + * @public + * + * Initial number of retry tokens in Retry Quota + */ +export declare const INITIAL_RETRY_TOKENS = 500; +/** + * @public + * + * The total amount of retry tokens to be decremented from retry token balance. + */ +export declare const RETRY_COST = 5; +/** + * @public + * + * The total amount of retry tokens to be decremented from retry token balance + * when a throttling error is encountered. + */ +export declare const TIMEOUT_RETRY_COST = 10; +/** + * @public + * + * The total amount of retry token to be incremented from retry token balance + * if an SDK operation invocation succeeds without requiring a retry request. + */ +export declare const NO_RETRY_INCREMENT = 1; +/** + * @public + * + * Header name for SDK invocation ID + */ +export declare const INVOCATION_ID_HEADER = "amz-sdk-invocation-id"; +/** + * @public + * + * Header name for request retry information. + */ +export declare const REQUEST_HEADER = "amz-sdk-request"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/ts3.4/defaultRetryBackoffStrategy.d.ts b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/ts3.4/defaultRetryBackoffStrategy.d.ts new file mode 100644 index 000000000..b70eb2dd4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/ts3.4/defaultRetryBackoffStrategy.d.ts @@ -0,0 +1,5 @@ +import { StandardRetryBackoffStrategy } from "@smithy/types"; +/** + * @internal + */ +export declare const getDefaultRetryBackoffStrategy: () => StandardRetryBackoffStrategy; diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/ts3.4/defaultRetryToken.d.ts b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/ts3.4/defaultRetryToken.d.ts new file mode 100644 index 000000000..502b47376 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/ts3.4/defaultRetryToken.d.ts @@ -0,0 +1,9 @@ +import { StandardRetryToken } from "@smithy/types"; +/** + * @internal + */ +export declare const createDefaultRetryToken: ({ retryDelay, retryCount, retryCost, }: { + retryDelay: number; + retryCount: number; + retryCost?: number; +}) => StandardRetryToken; diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..8637ced05 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/ts3.4/index.d.ts @@ -0,0 +1,7 @@ +export * from "./AdaptiveRetryStrategy"; +export * from "./ConfiguredRetryStrategy"; +export * from "./DefaultRateLimiter"; +export * from "./StandardRetryStrategy"; +export * from "./config"; +export * from "./constants"; +export * from "./types"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/ts3.4/types.d.ts b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/ts3.4/types.d.ts new file mode 100644 index 000000000..b3f2bd140 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/ts3.4/types.d.ts @@ -0,0 +1,19 @@ +/** + * @internal + */ +export interface RateLimiter { + /** + * If there is sufficient capacity (tokens) available, it immediately returns. + * If there is not sufficient capacity, it will either sleep a certain amount + * of time until the rate limiter can retrieve a token from its token bucket + * or raise an exception indicating there is insufficient capacity. + */ + getSendToken: () => Promise; + /** + * Updates the client sending rate based on response. + * If the response was successful, the capacity and fill rate are increased. + * If the response was a throttling response, the capacity and fill rate are + * decreased. Transient errors do not affect the rate limiter. + */ + updateClientSendingRate: (response: any) => void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/types.d.ts b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/types.d.ts new file mode 100644 index 000000000..b3f2bd140 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/dist-types/types.d.ts @@ -0,0 +1,19 @@ +/** + * @internal + */ +export interface RateLimiter { + /** + * If there is sufficient capacity (tokens) available, it immediately returns. + * If there is not sufficient capacity, it will either sleep a certain amount + * of time until the rate limiter can retrieve a token from its token bucket + * or raise an exception indicating there is insufficient capacity. + */ + getSendToken: () => Promise; + /** + * Updates the client sending rate based on response. + * If the response was successful, the capacity and fill rate are increased. + * If the response was a throttling response, the capacity and fill rate are + * decreased. Transient errors do not affect the rate limiter. + */ + updateClientSendingRate: (response: any) => void; +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-retry/package.json b/food-ordering-app/server/node_modules/@smithy/util-retry/package.json new file mode 100644 index 000000000..b444d987b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-retry/package.json @@ -0,0 +1,71 @@ +{ + "name": "@smithy/util-retry", + "version": "4.2.12", + "description": "Shared retry utilities to be used in middleware packages.", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-retry", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "extract:docs": "api-extractor run --local", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "keywords": [ + "aws", + "retry" + ], + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/service-error-classification": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "types/*": [ + "types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/master/packages/util-retry", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/util-retry" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/LICENSE b/food-ordering-app/server/node_modules/@smithy/util-stream/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/README.md b/food-ordering-app/server/node_modules/@smithy/util-stream/README.md new file mode 100644 index 000000000..6fcd9f6e7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/README.md @@ -0,0 +1,6 @@ +# @smithy/util-stream + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-stream/latest.svg)](https://www.npmjs.com/package/@smithy/util-stream) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-stream.svg)](https://www.npmjs.com/package/@smithy/util-stream) + +Package with utilities to operate on streams. diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/ByteArrayCollector.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/ByteArrayCollector.js new file mode 100644 index 000000000..f056f8264 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/ByteArrayCollector.js @@ -0,0 +1,36 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ByteArrayCollector = void 0; +class ByteArrayCollector { + allocByteArray; + byteLength = 0; + byteArrays = []; + constructor(allocByteArray) { + this.allocByteArray = allocByteArray; + } + push(byteArray) { + this.byteArrays.push(byteArray); + this.byteLength += byteArray.byteLength; + } + flush() { + if (this.byteArrays.length === 1) { + const bytes = this.byteArrays[0]; + this.reset(); + return bytes; + } + const aggregation = this.allocByteArray(this.byteLength); + let cursor = 0; + for (let i = 0; i < this.byteArrays.length; ++i) { + const bytes = this.byteArrays[i]; + aggregation.set(bytes, cursor); + cursor += bytes.byteLength; + } + this.reset(); + return aggregation; + } + reset() { + this.byteArrays = []; + this.byteLength = 0; + } +} +exports.ByteArrayCollector = ByteArrayCollector; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/checksum/ChecksumStream.browser.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/checksum/ChecksumStream.browser.js new file mode 100644 index 000000000..b73363a51 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/checksum/ChecksumStream.browser.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ChecksumStream = void 0; +const ReadableStreamRef = typeof ReadableStream === "function" ? ReadableStream : function () { }; +class ChecksumStream extends ReadableStreamRef { +} +exports.ChecksumStream = ChecksumStream; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/checksum/ChecksumStream.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/checksum/ChecksumStream.js new file mode 100644 index 000000000..5038f8c08 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/checksum/ChecksumStream.js @@ -0,0 +1,64 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ChecksumStream = void 0; +const util_base64_1 = require("@smithy/util-base64"); +const stream_1 = require("stream"); +class ChecksumStream extends stream_1.Duplex { + expectedChecksum; + checksumSourceLocation; + checksum; + source; + base64Encoder; + pendingCallback = null; + constructor({ expectedChecksum, checksum, source, checksumSourceLocation, base64Encoder, }) { + super(); + if (typeof source.pipe === "function") { + this.source = source; + } + else { + throw new Error(`@smithy/util-stream: unsupported source type ${source?.constructor?.name ?? source} in ChecksumStream.`); + } + this.base64Encoder = base64Encoder ?? util_base64_1.toBase64; + this.expectedChecksum = expectedChecksum; + this.checksum = checksum; + this.checksumSourceLocation = checksumSourceLocation; + this.source.pipe(this); + } + _read(size) { + if (this.pendingCallback) { + const callback = this.pendingCallback; + this.pendingCallback = null; + callback(); + } + } + _write(chunk, encoding, callback) { + try { + this.checksum.update(chunk); + const canPushMore = this.push(chunk); + if (!canPushMore) { + this.pendingCallback = callback; + return; + } + } + catch (e) { + return callback(e); + } + return callback(); + } + async _final(callback) { + try { + const digest = await this.checksum.digest(); + const received = this.base64Encoder(digest); + if (this.expectedChecksum !== received) { + return callback(new Error(`Checksum mismatch: expected "${this.expectedChecksum}" but received "${received}"` + + ` in response header "${this.checksumSourceLocation}".`)); + } + } + catch (e) { + return callback(e); + } + this.push(null); + return callback(); + } +} +exports.ChecksumStream = ChecksumStream; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/checksum/createChecksumStream.browser.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/checksum/createChecksumStream.browser.js new file mode 100644 index 000000000..2bbe76e51 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/checksum/createChecksumStream.browser.js @@ -0,0 +1,39 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createChecksumStream = void 0; +const util_base64_1 = require("@smithy/util-base64"); +const stream_type_check_1 = require("../stream-type-check"); +const ChecksumStream_browser_1 = require("./ChecksumStream.browser"); +const createChecksumStream = ({ expectedChecksum, checksum, source, checksumSourceLocation, base64Encoder, }) => { + if (!(0, stream_type_check_1.isReadableStream)(source)) { + throw new Error(`@smithy/util-stream: unsupported source type ${source?.constructor?.name ?? source} in ChecksumStream.`); + } + const encoder = base64Encoder ?? util_base64_1.toBase64; + if (typeof TransformStream !== "function") { + throw new Error("@smithy/util-stream: unable to instantiate ChecksumStream because API unavailable: ReadableStream/TransformStream."); + } + const transform = new TransformStream({ + start() { }, + async transform(chunk, controller) { + checksum.update(chunk); + controller.enqueue(chunk); + }, + async flush(controller) { + const digest = await checksum.digest(); + const received = encoder(digest); + if (expectedChecksum !== received) { + const error = new Error(`Checksum mismatch: expected "${expectedChecksum}" but received "${received}"` + + ` in response header "${checksumSourceLocation}".`); + controller.error(error); + } + else { + controller.terminate(); + } + }, + }); + source.pipeThrough(transform); + const readable = transform.readable; + Object.setPrototypeOf(readable, ChecksumStream_browser_1.ChecksumStream.prototype); + return readable; +}; +exports.createChecksumStream = createChecksumStream; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/checksum/createChecksumStream.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/checksum/createChecksumStream.js new file mode 100644 index 000000000..9638f0207 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/checksum/createChecksumStream.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createChecksumStream = createChecksumStream; +const stream_type_check_1 = require("../stream-type-check"); +const ChecksumStream_1 = require("./ChecksumStream"); +const createChecksumStream_browser_1 = require("./createChecksumStream.browser"); +function createChecksumStream(init) { + if (typeof ReadableStream === "function" && (0, stream_type_check_1.isReadableStream)(init.source)) { + return (0, createChecksumStream_browser_1.createChecksumStream)(init); + } + return new ChecksumStream_1.ChecksumStream(init); +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/createBufferedReadable.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/createBufferedReadable.js new file mode 100644 index 000000000..b3b47a267 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/createBufferedReadable.js @@ -0,0 +1,60 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createBufferedReadable = createBufferedReadable; +const node_stream_1 = require("node:stream"); +const ByteArrayCollector_1 = require("./ByteArrayCollector"); +const createBufferedReadableStream_1 = require("./createBufferedReadableStream"); +const stream_type_check_1 = require("./stream-type-check"); +function createBufferedReadable(upstream, size, logger) { + if ((0, stream_type_check_1.isReadableStream)(upstream)) { + return (0, createBufferedReadableStream_1.createBufferedReadableStream)(upstream, size, logger); + } + const downstream = new node_stream_1.Readable({ read() { } }); + let streamBufferingLoggedWarning = false; + let bytesSeen = 0; + const buffers = [ + "", + new ByteArrayCollector_1.ByteArrayCollector((size) => new Uint8Array(size)), + new ByteArrayCollector_1.ByteArrayCollector((size) => Buffer.from(new Uint8Array(size))), + ]; + let mode = -1; + upstream.on("data", (chunk) => { + const chunkMode = (0, createBufferedReadableStream_1.modeOf)(chunk, true); + if (mode !== chunkMode) { + if (mode >= 0) { + downstream.push((0, createBufferedReadableStream_1.flush)(buffers, mode)); + } + mode = chunkMode; + } + if (mode === -1) { + downstream.push(chunk); + return; + } + const chunkSize = (0, createBufferedReadableStream_1.sizeOf)(chunk); + bytesSeen += chunkSize; + const bufferSize = (0, createBufferedReadableStream_1.sizeOf)(buffers[mode]); + if (chunkSize >= size && bufferSize === 0) { + downstream.push(chunk); + } + else { + const newSize = (0, createBufferedReadableStream_1.merge)(buffers, mode, chunk); + if (!streamBufferingLoggedWarning && bytesSeen > size * 2) { + streamBufferingLoggedWarning = true; + logger?.warn(`@smithy/util-stream - stream chunk size ${chunkSize} is below threshold of ${size}, automatically buffering.`); + } + if (newSize >= size) { + downstream.push((0, createBufferedReadableStream_1.flush)(buffers, mode)); + } + } + }); + upstream.on("end", () => { + if (mode !== -1) { + const remainder = (0, createBufferedReadableStream_1.flush)(buffers, mode); + if ((0, createBufferedReadableStream_1.sizeOf)(remainder) > 0) { + downstream.push(remainder); + } + } + downstream.push(null); + }); + return downstream; +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/createBufferedReadableStream.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/createBufferedReadableStream.js new file mode 100644 index 000000000..1b7d8c387 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/createBufferedReadableStream.js @@ -0,0 +1,103 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createBufferedReadable = void 0; +exports.createBufferedReadableStream = createBufferedReadableStream; +exports.merge = merge; +exports.flush = flush; +exports.sizeOf = sizeOf; +exports.modeOf = modeOf; +const ByteArrayCollector_1 = require("./ByteArrayCollector"); +function createBufferedReadableStream(upstream, size, logger) { + const reader = upstream.getReader(); + let streamBufferingLoggedWarning = false; + let bytesSeen = 0; + const buffers = ["", new ByteArrayCollector_1.ByteArrayCollector((size) => new Uint8Array(size))]; + let mode = -1; + const pull = async (controller) => { + const { value, done } = await reader.read(); + const chunk = value; + if (done) { + if (mode !== -1) { + const remainder = flush(buffers, mode); + if (sizeOf(remainder) > 0) { + controller.enqueue(remainder); + } + } + controller.close(); + } + else { + const chunkMode = modeOf(chunk, false); + if (mode !== chunkMode) { + if (mode >= 0) { + controller.enqueue(flush(buffers, mode)); + } + mode = chunkMode; + } + if (mode === -1) { + controller.enqueue(chunk); + return; + } + const chunkSize = sizeOf(chunk); + bytesSeen += chunkSize; + const bufferSize = sizeOf(buffers[mode]); + if (chunkSize >= size && bufferSize === 0) { + controller.enqueue(chunk); + } + else { + const newSize = merge(buffers, mode, chunk); + if (!streamBufferingLoggedWarning && bytesSeen > size * 2) { + streamBufferingLoggedWarning = true; + logger?.warn(`@smithy/util-stream - stream chunk size ${chunkSize} is below threshold of ${size}, automatically buffering.`); + } + if (newSize >= size) { + controller.enqueue(flush(buffers, mode)); + } + else { + await pull(controller); + } + } + } + }; + return new ReadableStream({ + pull, + }); +} +exports.createBufferedReadable = createBufferedReadableStream; +function merge(buffers, mode, chunk) { + switch (mode) { + case 0: + buffers[0] += chunk; + return sizeOf(buffers[0]); + case 1: + case 2: + buffers[mode].push(chunk); + return sizeOf(buffers[mode]); + } +} +function flush(buffers, mode) { + switch (mode) { + case 0: + const s = buffers[0]; + buffers[0] = ""; + return s; + case 1: + case 2: + return buffers[mode].flush(); + } + throw new Error(`@smithy/util-stream - invalid index ${mode} given to flush()`); +} +function sizeOf(chunk) { + return chunk?.byteLength ?? chunk?.length ?? 0; +} +function modeOf(chunk, allowBuffer = true) { + if (allowBuffer && typeof Buffer !== "undefined" && chunk instanceof Buffer) { + return 2; + } + if (chunk instanceof Uint8Array) { + return 1; + } + if (typeof chunk === "string") { + return 0; + } + return -1; +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/getAwsChunkedEncodingStream.browser.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/getAwsChunkedEncodingStream.browser.js new file mode 100644 index 000000000..d8e540c2f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/getAwsChunkedEncodingStream.browser.js @@ -0,0 +1,31 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getAwsChunkedEncodingStream = void 0; +const getAwsChunkedEncodingStream = (readableStream, options) => { + const { base64Encoder, bodyLengthChecker, checksumAlgorithmFn, checksumLocationName, streamHasher } = options; + const checksumRequired = base64Encoder !== undefined && + bodyLengthChecker !== undefined && + checksumAlgorithmFn !== undefined && + checksumLocationName !== undefined && + streamHasher !== undefined; + const digest = checksumRequired ? streamHasher(checksumAlgorithmFn, readableStream) : undefined; + const reader = readableStream.getReader(); + return new ReadableStream({ + async pull(controller) { + const { value, done } = await reader.read(); + if (done) { + controller.enqueue(`0\r\n`); + if (checksumRequired) { + const checksum = base64Encoder(await digest); + controller.enqueue(`${checksumLocationName}:${checksum}\r\n`); + controller.enqueue(`\r\n`); + } + controller.close(); + } + else { + controller.enqueue(`${(bodyLengthChecker(value) || 0).toString(16)}\r\n${value}\r\n`); + } + }, + }); +}; +exports.getAwsChunkedEncodingStream = getAwsChunkedEncodingStream; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/getAwsChunkedEncodingStream.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/getAwsChunkedEncodingStream.js new file mode 100644 index 000000000..11b8ec819 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/getAwsChunkedEncodingStream.js @@ -0,0 +1,41 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getAwsChunkedEncodingStream = getAwsChunkedEncodingStream; +const node_stream_1 = require("node:stream"); +const getAwsChunkedEncodingStream_browser_1 = require("./getAwsChunkedEncodingStream.browser"); +const stream_type_check_1 = require("./stream-type-check"); +function getAwsChunkedEncodingStream(stream, options) { + const readable = stream; + const readableStream = stream; + if ((0, stream_type_check_1.isReadableStream)(readableStream)) { + return (0, getAwsChunkedEncodingStream_browser_1.getAwsChunkedEncodingStream)(readableStream, options); + } + const { base64Encoder, bodyLengthChecker, checksumAlgorithmFn, checksumLocationName, streamHasher } = options; + const checksumRequired = base64Encoder !== undefined && + checksumAlgorithmFn !== undefined && + checksumLocationName !== undefined && + streamHasher !== undefined; + const digest = checksumRequired ? streamHasher(checksumAlgorithmFn, readable) : undefined; + const awsChunkedEncodingStream = new node_stream_1.Readable({ + read: () => { }, + }); + readable.on("data", (data) => { + const length = bodyLengthChecker(data) || 0; + if (length === 0) { + return; + } + awsChunkedEncodingStream.push(`${length.toString(16)}\r\n`); + awsChunkedEncodingStream.push(data); + awsChunkedEncodingStream.push("\r\n"); + }); + readable.on("end", async () => { + awsChunkedEncodingStream.push(`0\r\n`); + if (checksumRequired) { + const checksum = base64Encoder(await digest); + awsChunkedEncodingStream.push(`${checksumLocationName}:${checksum}\r\n`); + awsChunkedEncodingStream.push(`\r\n`); + } + awsChunkedEncodingStream.push(null); + }); + return awsChunkedEncodingStream; +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/headStream.browser.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/headStream.browser.js new file mode 100644 index 000000000..e8413f2c9 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/headStream.browser.js @@ -0,0 +1,34 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.headStream = headStream; +async function headStream(stream, bytes) { + let byteLengthCounter = 0; + const chunks = []; + const reader = stream.getReader(); + let isDone = false; + while (!isDone) { + const { done, value } = await reader.read(); + if (value) { + chunks.push(value); + byteLengthCounter += value?.byteLength ?? 0; + } + if (byteLengthCounter >= bytes) { + break; + } + isDone = done; + } + reader.releaseLock(); + const collected = new Uint8Array(Math.min(bytes, byteLengthCounter)); + let offset = 0; + for (const chunk of chunks) { + if (chunk.byteLength > collected.byteLength - offset) { + collected.set(chunk.subarray(0, collected.byteLength - offset), offset); + break; + } + else { + collected.set(chunk, offset); + } + offset += chunk.length; + } + return collected; +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/headStream.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/headStream.js new file mode 100644 index 000000000..4e766334f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/headStream.js @@ -0,0 +1,42 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.headStream = void 0; +const stream_1 = require("stream"); +const headStream_browser_1 = require("./headStream.browser"); +const stream_type_check_1 = require("./stream-type-check"); +const headStream = (stream, bytes) => { + if ((0, stream_type_check_1.isReadableStream)(stream)) { + return (0, headStream_browser_1.headStream)(stream, bytes); + } + return new Promise((resolve, reject) => { + const collector = new Collector(); + collector.limit = bytes; + stream.pipe(collector); + stream.on("error", (err) => { + collector.end(); + reject(err); + }); + collector.on("error", reject); + collector.on("finish", function () { + const bytes = new Uint8Array(Buffer.concat(this.buffers)); + resolve(bytes); + }); + }); +}; +exports.headStream = headStream; +class Collector extends stream_1.Writable { + buffers = []; + limit = Infinity; + bytesBuffered = 0; + _write(chunk, encoding, callback) { + this.buffers.push(chunk); + this.bytesBuffered += chunk.byteLength ?? 0; + if (this.bytesBuffered >= this.limit) { + const excess = this.bytesBuffered - this.limit; + const tailBuffer = this.buffers[this.buffers.length - 1]; + this.buffers[this.buffers.length - 1] = tailBuffer.subarray(0, tailBuffer.byteLength - excess); + this.emit("finish"); + } + callback(); + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/index.js new file mode 100644 index 000000000..6f6ff3db8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/index.js @@ -0,0 +1,108 @@ +'use strict'; + +var utilBase64 = require('@smithy/util-base64'); +var utilUtf8 = require('@smithy/util-utf8'); +var ChecksumStream = require('./checksum/ChecksumStream'); +var createChecksumStream = require('./checksum/createChecksumStream'); +var createBufferedReadable = require('./createBufferedReadable'); +var getAwsChunkedEncodingStream = require('./getAwsChunkedEncodingStream'); +var headStream = require('./headStream'); +var sdkStreamMixin = require('./sdk-stream-mixin'); +var splitStream = require('./splitStream'); +var streamTypeCheck = require('./stream-type-check'); + +class Uint8ArrayBlobAdapter extends Uint8Array { + static fromString(source, encoding = "utf-8") { + if (typeof source === "string") { + if (encoding === "base64") { + return Uint8ArrayBlobAdapter.mutate(utilBase64.fromBase64(source)); + } + return Uint8ArrayBlobAdapter.mutate(utilUtf8.fromUtf8(source)); + } + throw new Error(`Unsupported conversion from ${typeof source} to Uint8ArrayBlobAdapter.`); + } + static mutate(source) { + Object.setPrototypeOf(source, Uint8ArrayBlobAdapter.prototype); + return source; + } + transformToString(encoding = "utf-8") { + if (encoding === "base64") { + return utilBase64.toBase64(this); + } + return utilUtf8.toUtf8(this); + } +} + +exports.isBlob = streamTypeCheck.isBlob; +exports.isReadableStream = streamTypeCheck.isReadableStream; +exports.Uint8ArrayBlobAdapter = Uint8ArrayBlobAdapter; +Object.prototype.hasOwnProperty.call(ChecksumStream, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: ChecksumStream['__proto__'] + }); + +Object.keys(ChecksumStream).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = ChecksumStream[k]; +}); +Object.prototype.hasOwnProperty.call(createChecksumStream, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: createChecksumStream['__proto__'] + }); + +Object.keys(createChecksumStream).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = createChecksumStream[k]; +}); +Object.prototype.hasOwnProperty.call(createBufferedReadable, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: createBufferedReadable['__proto__'] + }); + +Object.keys(createBufferedReadable).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = createBufferedReadable[k]; +}); +Object.prototype.hasOwnProperty.call(getAwsChunkedEncodingStream, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: getAwsChunkedEncodingStream['__proto__'] + }); + +Object.keys(getAwsChunkedEncodingStream).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = getAwsChunkedEncodingStream[k]; +}); +Object.prototype.hasOwnProperty.call(headStream, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: headStream['__proto__'] + }); + +Object.keys(headStream).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = headStream[k]; +}); +Object.prototype.hasOwnProperty.call(sdkStreamMixin, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: sdkStreamMixin['__proto__'] + }); + +Object.keys(sdkStreamMixin).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = sdkStreamMixin[k]; +}); +Object.prototype.hasOwnProperty.call(splitStream, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: splitStream['__proto__'] + }); + +Object.keys(splitStream).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = splitStream[k]; +}); diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/sdk-stream-mixin.browser.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/sdk-stream-mixin.browser.js new file mode 100644 index 000000000..222c5f78e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/sdk-stream-mixin.browser.js @@ -0,0 +1,68 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.sdkStreamMixin = void 0; +const fetch_http_handler_1 = require("@smithy/fetch-http-handler"); +const util_base64_1 = require("@smithy/util-base64"); +const util_hex_encoding_1 = require("@smithy/util-hex-encoding"); +const util_utf8_1 = require("@smithy/util-utf8"); +const stream_type_check_1 = require("./stream-type-check"); +const ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED = "The stream has already been transformed."; +const sdkStreamMixin = (stream) => { + if (!isBlobInstance(stream) && !(0, stream_type_check_1.isReadableStream)(stream)) { + const name = stream?.__proto__?.constructor?.name || stream; + throw new Error(`Unexpected stream implementation, expect Blob or ReadableStream, got ${name}`); + } + let transformed = false; + const transformToByteArray = async () => { + if (transformed) { + throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED); + } + transformed = true; + return await (0, fetch_http_handler_1.streamCollector)(stream); + }; + const blobToWebStream = (blob) => { + if (typeof blob.stream !== "function") { + throw new Error("Cannot transform payload Blob to web stream. Please make sure the Blob.stream() is polyfilled.\n" + + "If you are using React Native, this API is not yet supported, see: https://react-native.canny.io/feature-requests/p/fetch-streaming-body"); + } + return blob.stream(); + }; + return Object.assign(stream, { + transformToByteArray: transformToByteArray, + transformToString: async (encoding) => { + const buf = await transformToByteArray(); + if (encoding === "base64") { + return (0, util_base64_1.toBase64)(buf); + } + else if (encoding === "hex") { + return (0, util_hex_encoding_1.toHex)(buf); + } + else if (encoding === undefined || encoding === "utf8" || encoding === "utf-8") { + return (0, util_utf8_1.toUtf8)(buf); + } + else if (typeof TextDecoder === "function") { + return new TextDecoder(encoding).decode(buf); + } + else { + throw new Error("TextDecoder is not available, please make sure polyfill is provided."); + } + }, + transformToWebStream: () => { + if (transformed) { + throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED); + } + transformed = true; + if (isBlobInstance(stream)) { + return blobToWebStream(stream); + } + else if ((0, stream_type_check_1.isReadableStream)(stream)) { + return stream; + } + else { + throw new Error(`Cannot transform payload to web stream, got ${stream}`); + } + }, + }); +}; +exports.sdkStreamMixin = sdkStreamMixin; +const isBlobInstance = (stream) => typeof Blob === "function" && stream instanceof Blob; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/sdk-stream-mixin.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/sdk-stream-mixin.js new file mode 100644 index 000000000..31d8da1be --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/sdk-stream-mixin.js @@ -0,0 +1,54 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.sdkStreamMixin = void 0; +const node_http_handler_1 = require("@smithy/node-http-handler"); +const util_buffer_from_1 = require("@smithy/util-buffer-from"); +const stream_1 = require("stream"); +const sdk_stream_mixin_browser_1 = require("./sdk-stream-mixin.browser"); +const ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED = "The stream has already been transformed."; +const sdkStreamMixin = (stream) => { + if (!(stream instanceof stream_1.Readable)) { + try { + return (0, sdk_stream_mixin_browser_1.sdkStreamMixin)(stream); + } + catch (e) { + const name = stream?.__proto__?.constructor?.name || stream; + throw new Error(`Unexpected stream implementation, expect Stream.Readable instance, got ${name}`); + } + } + let transformed = false; + const transformToByteArray = async () => { + if (transformed) { + throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED); + } + transformed = true; + return await (0, node_http_handler_1.streamCollector)(stream); + }; + return Object.assign(stream, { + transformToByteArray, + transformToString: async (encoding) => { + const buf = await transformToByteArray(); + if (encoding === undefined || Buffer.isEncoding(encoding)) { + return (0, util_buffer_from_1.fromArrayBuffer)(buf.buffer, buf.byteOffset, buf.byteLength).toString(encoding); + } + else { + const decoder = new TextDecoder(encoding); + return decoder.decode(buf); + } + }, + transformToWebStream: () => { + if (transformed) { + throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED); + } + if (stream.readableFlowing !== null) { + throw new Error("The stream has been consumed by other callbacks."); + } + if (typeof stream_1.Readable.toWeb !== "function") { + throw new Error("Readable.toWeb() is not supported. Please ensure a polyfill is available."); + } + transformed = true; + return stream_1.Readable.toWeb(stream); + }, + }); +}; +exports.sdkStreamMixin = sdkStreamMixin; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/splitStream.browser.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/splitStream.browser.js new file mode 100644 index 000000000..1a4cc07b7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/splitStream.browser.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.splitStream = splitStream; +async function splitStream(stream) { + if (typeof stream.stream === "function") { + stream = stream.stream(); + } + const readableStream = stream; + return readableStream.tee(); +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/splitStream.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/splitStream.js new file mode 100644 index 000000000..a60ffadf1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/splitStream.js @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.splitStream = splitStream; +const stream_1 = require("stream"); +const splitStream_browser_1 = require("./splitStream.browser"); +const stream_type_check_1 = require("./stream-type-check"); +async function splitStream(stream) { + if ((0, stream_type_check_1.isReadableStream)(stream) || (0, stream_type_check_1.isBlob)(stream)) { + return (0, splitStream_browser_1.splitStream)(stream); + } + const stream1 = new stream_1.PassThrough(); + const stream2 = new stream_1.PassThrough(); + stream.pipe(stream1); + stream.pipe(stream2); + return [stream1, stream2]; +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/stream-type-check.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/stream-type-check.js new file mode 100644 index 000000000..c4648f8dc --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-cjs/stream-type-check.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isBlob = exports.isReadableStream = void 0; +const isReadableStream = (stream) => typeof ReadableStream === "function" && + (stream?.constructor?.name === ReadableStream.name || stream instanceof ReadableStream); +exports.isReadableStream = isReadableStream; +const isBlob = (blob) => { + return typeof Blob === "function" && (blob?.constructor?.name === Blob.name || blob instanceof Blob); +}; +exports.isBlob = isBlob; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/ByteArrayCollector.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/ByteArrayCollector.js new file mode 100644 index 000000000..eb2a4bb05 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/ByteArrayCollector.js @@ -0,0 +1,32 @@ +export class ByteArrayCollector { + allocByteArray; + byteLength = 0; + byteArrays = []; + constructor(allocByteArray) { + this.allocByteArray = allocByteArray; + } + push(byteArray) { + this.byteArrays.push(byteArray); + this.byteLength += byteArray.byteLength; + } + flush() { + if (this.byteArrays.length === 1) { + const bytes = this.byteArrays[0]; + this.reset(); + return bytes; + } + const aggregation = this.allocByteArray(this.byteLength); + let cursor = 0; + for (let i = 0; i < this.byteArrays.length; ++i) { + const bytes = this.byteArrays[i]; + aggregation.set(bytes, cursor); + cursor += bytes.byteLength; + } + this.reset(); + return aggregation; + } + reset() { + this.byteArrays = []; + this.byteLength = 0; + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/blob/Uint8ArrayBlobAdapter.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/blob/Uint8ArrayBlobAdapter.js new file mode 100644 index 000000000..49217bba8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/blob/Uint8ArrayBlobAdapter.js @@ -0,0 +1,23 @@ +import { fromBase64, toBase64 } from "@smithy/util-base64"; +import { fromUtf8, toUtf8 } from "@smithy/util-utf8"; +export class Uint8ArrayBlobAdapter extends Uint8Array { + static fromString(source, encoding = "utf-8") { + if (typeof source === "string") { + if (encoding === "base64") { + return Uint8ArrayBlobAdapter.mutate(fromBase64(source)); + } + return Uint8ArrayBlobAdapter.mutate(fromUtf8(source)); + } + throw new Error(`Unsupported conversion from ${typeof source} to Uint8ArrayBlobAdapter.`); + } + static mutate(source) { + Object.setPrototypeOf(source, Uint8ArrayBlobAdapter.prototype); + return source; + } + transformToString(encoding = "utf-8") { + if (encoding === "base64") { + return toBase64(this); + } + return toUtf8(this); + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/checksum/ChecksumStream.browser.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/checksum/ChecksumStream.browser.js new file mode 100644 index 000000000..afcf529c7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/checksum/ChecksumStream.browser.js @@ -0,0 +1,3 @@ +const ReadableStreamRef = typeof ReadableStream === "function" ? ReadableStream : function () { }; +export class ChecksumStream extends ReadableStreamRef { +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/checksum/ChecksumStream.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/checksum/ChecksumStream.js new file mode 100644 index 000000000..772cc1cc3 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/checksum/ChecksumStream.js @@ -0,0 +1,60 @@ +import { toBase64 } from "@smithy/util-base64"; +import { Duplex } from "stream"; +export class ChecksumStream extends Duplex { + expectedChecksum; + checksumSourceLocation; + checksum; + source; + base64Encoder; + pendingCallback = null; + constructor({ expectedChecksum, checksum, source, checksumSourceLocation, base64Encoder, }) { + super(); + if (typeof source.pipe === "function") { + this.source = source; + } + else { + throw new Error(`@smithy/util-stream: unsupported source type ${source?.constructor?.name ?? source} in ChecksumStream.`); + } + this.base64Encoder = base64Encoder ?? toBase64; + this.expectedChecksum = expectedChecksum; + this.checksum = checksum; + this.checksumSourceLocation = checksumSourceLocation; + this.source.pipe(this); + } + _read(size) { + if (this.pendingCallback) { + const callback = this.pendingCallback; + this.pendingCallback = null; + callback(); + } + } + _write(chunk, encoding, callback) { + try { + this.checksum.update(chunk); + const canPushMore = this.push(chunk); + if (!canPushMore) { + this.pendingCallback = callback; + return; + } + } + catch (e) { + return callback(e); + } + return callback(); + } + async _final(callback) { + try { + const digest = await this.checksum.digest(); + const received = this.base64Encoder(digest); + if (this.expectedChecksum !== received) { + return callback(new Error(`Checksum mismatch: expected "${this.expectedChecksum}" but received "${received}"` + + ` in response header "${this.checksumSourceLocation}".`)); + } + } + catch (e) { + return callback(e); + } + this.push(null); + return callback(); + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/checksum/createChecksumStream.browser.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/checksum/createChecksumStream.browser.js new file mode 100644 index 000000000..6a41c1214 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/checksum/createChecksumStream.browser.js @@ -0,0 +1,35 @@ +import { toBase64 } from "@smithy/util-base64"; +import { isReadableStream } from "../stream-type-check"; +import { ChecksumStream } from "./ChecksumStream.browser"; +export const createChecksumStream = ({ expectedChecksum, checksum, source, checksumSourceLocation, base64Encoder, }) => { + if (!isReadableStream(source)) { + throw new Error(`@smithy/util-stream: unsupported source type ${source?.constructor?.name ?? source} in ChecksumStream.`); + } + const encoder = base64Encoder ?? toBase64; + if (typeof TransformStream !== "function") { + throw new Error("@smithy/util-stream: unable to instantiate ChecksumStream because API unavailable: ReadableStream/TransformStream."); + } + const transform = new TransformStream({ + start() { }, + async transform(chunk, controller) { + checksum.update(chunk); + controller.enqueue(chunk); + }, + async flush(controller) { + const digest = await checksum.digest(); + const received = encoder(digest); + if (expectedChecksum !== received) { + const error = new Error(`Checksum mismatch: expected "${expectedChecksum}" but received "${received}"` + + ` in response header "${checksumSourceLocation}".`); + controller.error(error); + } + else { + controller.terminate(); + } + }, + }); + source.pipeThrough(transform); + const readable = transform.readable; + Object.setPrototypeOf(readable, ChecksumStream.prototype); + return readable; +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/checksum/createChecksumStream.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/checksum/createChecksumStream.js new file mode 100644 index 000000000..d205b82b0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/checksum/createChecksumStream.js @@ -0,0 +1,9 @@ +import { isReadableStream } from "../stream-type-check"; +import { ChecksumStream } from "./ChecksumStream"; +import { createChecksumStream as createChecksumStreamWeb } from "./createChecksumStream.browser"; +export function createChecksumStream(init) { + if (typeof ReadableStream === "function" && isReadableStream(init.source)) { + return createChecksumStreamWeb(init); + } + return new ChecksumStream(init); +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/createBufferedReadable.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/createBufferedReadable.js new file mode 100644 index 000000000..0e3bbce25 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/createBufferedReadable.js @@ -0,0 +1,57 @@ +import { Readable } from "node:stream"; +import { ByteArrayCollector } from "./ByteArrayCollector"; +import { createBufferedReadableStream, flush, merge, modeOf, sizeOf } from "./createBufferedReadableStream"; +import { isReadableStream } from "./stream-type-check"; +export function createBufferedReadable(upstream, size, logger) { + if (isReadableStream(upstream)) { + return createBufferedReadableStream(upstream, size, logger); + } + const downstream = new Readable({ read() { } }); + let streamBufferingLoggedWarning = false; + let bytesSeen = 0; + const buffers = [ + "", + new ByteArrayCollector((size) => new Uint8Array(size)), + new ByteArrayCollector((size) => Buffer.from(new Uint8Array(size))), + ]; + let mode = -1; + upstream.on("data", (chunk) => { + const chunkMode = modeOf(chunk, true); + if (mode !== chunkMode) { + if (mode >= 0) { + downstream.push(flush(buffers, mode)); + } + mode = chunkMode; + } + if (mode === -1) { + downstream.push(chunk); + return; + } + const chunkSize = sizeOf(chunk); + bytesSeen += chunkSize; + const bufferSize = sizeOf(buffers[mode]); + if (chunkSize >= size && bufferSize === 0) { + downstream.push(chunk); + } + else { + const newSize = merge(buffers, mode, chunk); + if (!streamBufferingLoggedWarning && bytesSeen > size * 2) { + streamBufferingLoggedWarning = true; + logger?.warn(`@smithy/util-stream - stream chunk size ${chunkSize} is below threshold of ${size}, automatically buffering.`); + } + if (newSize >= size) { + downstream.push(flush(buffers, mode)); + } + } + }); + upstream.on("end", () => { + if (mode !== -1) { + const remainder = flush(buffers, mode); + if (sizeOf(remainder) > 0) { + downstream.push(remainder); + } + } + downstream.push(null); + }); + return downstream; +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/createBufferedReadableStream.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/createBufferedReadableStream.js new file mode 100644 index 000000000..698a75737 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/createBufferedReadableStream.js @@ -0,0 +1,95 @@ +import { ByteArrayCollector } from "./ByteArrayCollector"; +export function createBufferedReadableStream(upstream, size, logger) { + const reader = upstream.getReader(); + let streamBufferingLoggedWarning = false; + let bytesSeen = 0; + const buffers = ["", new ByteArrayCollector((size) => new Uint8Array(size))]; + let mode = -1; + const pull = async (controller) => { + const { value, done } = await reader.read(); + const chunk = value; + if (done) { + if (mode !== -1) { + const remainder = flush(buffers, mode); + if (sizeOf(remainder) > 0) { + controller.enqueue(remainder); + } + } + controller.close(); + } + else { + const chunkMode = modeOf(chunk, false); + if (mode !== chunkMode) { + if (mode >= 0) { + controller.enqueue(flush(buffers, mode)); + } + mode = chunkMode; + } + if (mode === -1) { + controller.enqueue(chunk); + return; + } + const chunkSize = sizeOf(chunk); + bytesSeen += chunkSize; + const bufferSize = sizeOf(buffers[mode]); + if (chunkSize >= size && bufferSize === 0) { + controller.enqueue(chunk); + } + else { + const newSize = merge(buffers, mode, chunk); + if (!streamBufferingLoggedWarning && bytesSeen > size * 2) { + streamBufferingLoggedWarning = true; + logger?.warn(`@smithy/util-stream - stream chunk size ${chunkSize} is below threshold of ${size}, automatically buffering.`); + } + if (newSize >= size) { + controller.enqueue(flush(buffers, mode)); + } + else { + await pull(controller); + } + } + } + }; + return new ReadableStream({ + pull, + }); +} +export const createBufferedReadable = createBufferedReadableStream; +export function merge(buffers, mode, chunk) { + switch (mode) { + case 0: + buffers[0] += chunk; + return sizeOf(buffers[0]); + case 1: + case 2: + buffers[mode].push(chunk); + return sizeOf(buffers[mode]); + } +} +export function flush(buffers, mode) { + switch (mode) { + case 0: + const s = buffers[0]; + buffers[0] = ""; + return s; + case 1: + case 2: + return buffers[mode].flush(); + } + throw new Error(`@smithy/util-stream - invalid index ${mode} given to flush()`); +} +export function sizeOf(chunk) { + return chunk?.byteLength ?? chunk?.length ?? 0; +} +export function modeOf(chunk, allowBuffer = true) { + if (allowBuffer && typeof Buffer !== "undefined" && chunk instanceof Buffer) { + return 2; + } + if (chunk instanceof Uint8Array) { + return 1; + } + if (typeof chunk === "string") { + return 0; + } + return -1; +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/getAwsChunkedEncodingStream.browser.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/getAwsChunkedEncodingStream.browser.js new file mode 100644 index 000000000..b5d5fa4cb --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/getAwsChunkedEncodingStream.browser.js @@ -0,0 +1,27 @@ +export const getAwsChunkedEncodingStream = (readableStream, options) => { + const { base64Encoder, bodyLengthChecker, checksumAlgorithmFn, checksumLocationName, streamHasher } = options; + const checksumRequired = base64Encoder !== undefined && + bodyLengthChecker !== undefined && + checksumAlgorithmFn !== undefined && + checksumLocationName !== undefined && + streamHasher !== undefined; + const digest = checksumRequired ? streamHasher(checksumAlgorithmFn, readableStream) : undefined; + const reader = readableStream.getReader(); + return new ReadableStream({ + async pull(controller) { + const { value, done } = await reader.read(); + if (done) { + controller.enqueue(`0\r\n`); + if (checksumRequired) { + const checksum = base64Encoder(await digest); + controller.enqueue(`${checksumLocationName}:${checksum}\r\n`); + controller.enqueue(`\r\n`); + } + controller.close(); + } + else { + controller.enqueue(`${(bodyLengthChecker(value) || 0).toString(16)}\r\n${value}\r\n`); + } + }, + }); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/getAwsChunkedEncodingStream.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/getAwsChunkedEncodingStream.js new file mode 100644 index 000000000..7d24fb535 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/getAwsChunkedEncodingStream.js @@ -0,0 +1,38 @@ +import { Readable } from "node:stream"; +import { getAwsChunkedEncodingStream as getAwsChunkedEncodingStreamBrowser } from "./getAwsChunkedEncodingStream.browser"; +import { isReadableStream } from "./stream-type-check"; +export function getAwsChunkedEncodingStream(stream, options) { + const readable = stream; + const readableStream = stream; + if (isReadableStream(readableStream)) { + return getAwsChunkedEncodingStreamBrowser(readableStream, options); + } + const { base64Encoder, bodyLengthChecker, checksumAlgorithmFn, checksumLocationName, streamHasher } = options; + const checksumRequired = base64Encoder !== undefined && + checksumAlgorithmFn !== undefined && + checksumLocationName !== undefined && + streamHasher !== undefined; + const digest = checksumRequired ? streamHasher(checksumAlgorithmFn, readable) : undefined; + const awsChunkedEncodingStream = new Readable({ + read: () => { }, + }); + readable.on("data", (data) => { + const length = bodyLengthChecker(data) || 0; + if (length === 0) { + return; + } + awsChunkedEncodingStream.push(`${length.toString(16)}\r\n`); + awsChunkedEncodingStream.push(data); + awsChunkedEncodingStream.push("\r\n"); + }); + readable.on("end", async () => { + awsChunkedEncodingStream.push(`0\r\n`); + if (checksumRequired) { + const checksum = base64Encoder(await digest); + awsChunkedEncodingStream.push(`${checksumLocationName}:${checksum}\r\n`); + awsChunkedEncodingStream.push(`\r\n`); + } + awsChunkedEncodingStream.push(null); + }); + return awsChunkedEncodingStream; +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/headStream.browser.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/headStream.browser.js new file mode 100644 index 000000000..4e7f864ec --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/headStream.browser.js @@ -0,0 +1,31 @@ +export async function headStream(stream, bytes) { + let byteLengthCounter = 0; + const chunks = []; + const reader = stream.getReader(); + let isDone = false; + while (!isDone) { + const { done, value } = await reader.read(); + if (value) { + chunks.push(value); + byteLengthCounter += value?.byteLength ?? 0; + } + if (byteLengthCounter >= bytes) { + break; + } + isDone = done; + } + reader.releaseLock(); + const collected = new Uint8Array(Math.min(bytes, byteLengthCounter)); + let offset = 0; + for (const chunk of chunks) { + if (chunk.byteLength > collected.byteLength - offset) { + collected.set(chunk.subarray(0, collected.byteLength - offset), offset); + break; + } + else { + collected.set(chunk, offset); + } + offset += chunk.length; + } + return collected; +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/headStream.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/headStream.js new file mode 100644 index 000000000..0f66e2917 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/headStream.js @@ -0,0 +1,38 @@ +import { Writable } from "stream"; +import { headStream as headWebStream } from "./headStream.browser"; +import { isReadableStream } from "./stream-type-check"; +export const headStream = (stream, bytes) => { + if (isReadableStream(stream)) { + return headWebStream(stream, bytes); + } + return new Promise((resolve, reject) => { + const collector = new Collector(); + collector.limit = bytes; + stream.pipe(collector); + stream.on("error", (err) => { + collector.end(); + reject(err); + }); + collector.on("error", reject); + collector.on("finish", function () { + const bytes = new Uint8Array(Buffer.concat(this.buffers)); + resolve(bytes); + }); + }); +}; +class Collector extends Writable { + buffers = []; + limit = Infinity; + bytesBuffered = 0; + _write(chunk, encoding, callback) { + this.buffers.push(chunk); + this.bytesBuffered += chunk.byteLength ?? 0; + if (this.bytesBuffered >= this.limit) { + const excess = this.bytesBuffered - this.limit; + const tailBuffer = this.buffers[this.buffers.length - 1]; + this.buffers[this.buffers.length - 1] = tailBuffer.subarray(0, tailBuffer.byteLength - excess); + this.emit("finish"); + } + callback(); + } +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/index.js new file mode 100644 index 000000000..9ed4b0a3d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/index.js @@ -0,0 +1,9 @@ +export * from "./blob/Uint8ArrayBlobAdapter"; +export * from "./checksum/ChecksumStream"; +export * from "./checksum/createChecksumStream"; +export * from "./createBufferedReadable"; +export * from "./getAwsChunkedEncodingStream"; +export * from "./headStream"; +export * from "./sdk-stream-mixin"; +export * from "./splitStream"; +export { isReadableStream, isBlob } from "./stream-type-check"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/sdk-stream-mixin.browser.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/sdk-stream-mixin.browser.js new file mode 100644 index 000000000..f21ff6698 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/sdk-stream-mixin.browser.js @@ -0,0 +1,64 @@ +import { streamCollector } from "@smithy/fetch-http-handler"; +import { toBase64 } from "@smithy/util-base64"; +import { toHex } from "@smithy/util-hex-encoding"; +import { toUtf8 } from "@smithy/util-utf8"; +import { isReadableStream } from "./stream-type-check"; +const ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED = "The stream has already been transformed."; +export const sdkStreamMixin = (stream) => { + if (!isBlobInstance(stream) && !isReadableStream(stream)) { + const name = stream?.__proto__?.constructor?.name || stream; + throw new Error(`Unexpected stream implementation, expect Blob or ReadableStream, got ${name}`); + } + let transformed = false; + const transformToByteArray = async () => { + if (transformed) { + throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED); + } + transformed = true; + return await streamCollector(stream); + }; + const blobToWebStream = (blob) => { + if (typeof blob.stream !== "function") { + throw new Error("Cannot transform payload Blob to web stream. Please make sure the Blob.stream() is polyfilled.\n" + + "If you are using React Native, this API is not yet supported, see: https://react-native.canny.io/feature-requests/p/fetch-streaming-body"); + } + return blob.stream(); + }; + return Object.assign(stream, { + transformToByteArray: transformToByteArray, + transformToString: async (encoding) => { + const buf = await transformToByteArray(); + if (encoding === "base64") { + return toBase64(buf); + } + else if (encoding === "hex") { + return toHex(buf); + } + else if (encoding === undefined || encoding === "utf8" || encoding === "utf-8") { + return toUtf8(buf); + } + else if (typeof TextDecoder === "function") { + return new TextDecoder(encoding).decode(buf); + } + else { + throw new Error("TextDecoder is not available, please make sure polyfill is provided."); + } + }, + transformToWebStream: () => { + if (transformed) { + throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED); + } + transformed = true; + if (isBlobInstance(stream)) { + return blobToWebStream(stream); + } + else if (isReadableStream(stream)) { + return stream; + } + else { + throw new Error(`Cannot transform payload to web stream, got ${stream}`); + } + }, + }); +}; +const isBlobInstance = (stream) => typeof Blob === "function" && stream instanceof Blob; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/sdk-stream-mixin.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/sdk-stream-mixin.js new file mode 100644 index 000000000..473133389 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/sdk-stream-mixin.js @@ -0,0 +1,50 @@ +import { streamCollector } from "@smithy/node-http-handler"; +import { fromArrayBuffer } from "@smithy/util-buffer-from"; +import { Readable } from "stream"; +import { sdkStreamMixin as sdkStreamMixinReadableStream } from "./sdk-stream-mixin.browser"; +const ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED = "The stream has already been transformed."; +export const sdkStreamMixin = (stream) => { + if (!(stream instanceof Readable)) { + try { + return sdkStreamMixinReadableStream(stream); + } + catch (e) { + const name = stream?.__proto__?.constructor?.name || stream; + throw new Error(`Unexpected stream implementation, expect Stream.Readable instance, got ${name}`); + } + } + let transformed = false; + const transformToByteArray = async () => { + if (transformed) { + throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED); + } + transformed = true; + return await streamCollector(stream); + }; + return Object.assign(stream, { + transformToByteArray, + transformToString: async (encoding) => { + const buf = await transformToByteArray(); + if (encoding === undefined || Buffer.isEncoding(encoding)) { + return fromArrayBuffer(buf.buffer, buf.byteOffset, buf.byteLength).toString(encoding); + } + else { + const decoder = new TextDecoder(encoding); + return decoder.decode(buf); + } + }, + transformToWebStream: () => { + if (transformed) { + throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED); + } + if (stream.readableFlowing !== null) { + throw new Error("The stream has been consumed by other callbacks."); + } + if (typeof Readable.toWeb !== "function") { + throw new Error("Readable.toWeb() is not supported. Please ensure a polyfill is available."); + } + transformed = true; + return Readable.toWeb(stream); + }, + }); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/splitStream.browser.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/splitStream.browser.js new file mode 100644 index 000000000..6f06b0eda --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/splitStream.browser.js @@ -0,0 +1,7 @@ +export async function splitStream(stream) { + if (typeof stream.stream === "function") { + stream = stream.stream(); + } + const readableStream = stream; + return readableStream.tee(); +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/splitStream.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/splitStream.js new file mode 100644 index 000000000..1a8c03205 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/splitStream.js @@ -0,0 +1,13 @@ +import { PassThrough } from "stream"; +import { splitStream as splitWebStream } from "./splitStream.browser"; +import { isBlob, isReadableStream } from "./stream-type-check"; +export async function splitStream(stream) { + if (isReadableStream(stream) || isBlob(stream)) { + return splitWebStream(stream); + } + const stream1 = new PassThrough(); + const stream2 = new PassThrough(); + stream.pipe(stream1); + stream.pipe(stream2); + return [stream1, stream2]; +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/stream-type-check.js b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/stream-type-check.js new file mode 100644 index 000000000..6ee93a381 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-es/stream-type-check.js @@ -0,0 +1,5 @@ +export const isReadableStream = (stream) => typeof ReadableStream === "function" && + (stream?.constructor?.name === ReadableStream.name || stream instanceof ReadableStream); +export const isBlob = (blob) => { + return typeof Blob === "function" && (blob?.constructor?.name === Blob.name || blob instanceof Blob); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ByteArrayCollector.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ByteArrayCollector.d.ts new file mode 100644 index 000000000..a1bbd5321 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ByteArrayCollector.d.ts @@ -0,0 +1,13 @@ +/** + * Aggregates byteArrays on demand. + * @internal + */ +export declare class ByteArrayCollector { + readonly allocByteArray: (size: number) => Uint8Array; + byteLength: number; + private byteArrays; + constructor(allocByteArray: (size: number) => Uint8Array); + push(byteArray: Uint8Array): void; + flush(): Uint8Array; + private reset; +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/blob/Uint8ArrayBlobAdapter.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/blob/Uint8ArrayBlobAdapter.d.ts new file mode 100644 index 000000000..269f2b540 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/blob/Uint8ArrayBlobAdapter.d.ts @@ -0,0 +1,22 @@ +/** + * Adapter for conversions of the native Uint8Array type. + * @public + */ +export declare class Uint8ArrayBlobAdapter extends Uint8Array { + /** + * @param source - such as a string or Stream. + * @param encoding - utf-8 or base64. + * @returns a new Uint8ArrayBlobAdapter extending Uint8Array. + */ + static fromString(source: string, encoding?: string): Uint8ArrayBlobAdapter; + /** + * @param source - Uint8Array to be mutated. + * @returns the same Uint8Array but with prototype switched to Uint8ArrayBlobAdapter. + */ + static mutate(source: Uint8Array): Uint8ArrayBlobAdapter; + /** + * @param encoding - default 'utf-8'. + * @returns the blob as string. + */ + transformToString(encoding?: string): string; +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/checksum/ChecksumStream.browser.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/checksum/ChecksumStream.browser.d.ts new file mode 100644 index 000000000..c7fc371b5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/checksum/ChecksumStream.browser.d.ts @@ -0,0 +1,37 @@ +import type { Checksum, Encoder } from "@smithy/types"; +/** + * @internal + */ +export interface ChecksumStreamInit { + /** + * Base64 value of the expected checksum. + */ + expectedChecksum: string; + /** + * For error messaging, the location from which the checksum value was read. + */ + checksumSourceLocation: string; + /** + * The checksum calculator. + */ + checksum: Checksum; + /** + * The stream to be checked. + */ + source: ReadableStream; + /** + * Optional base 64 encoder if calling from a request context. + */ + base64Encoder?: Encoder; +} +declare const ChecksumStream_base: any; +/** + * This stub exists so that the readable returned by createChecksumStream + * identifies as "ChecksumStream" in alignment with the Node.js + * implementation. + * + * @extends ReadableStream + */ +export declare class ChecksumStream extends ChecksumStream_base { +} +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/checksum/ChecksumStream.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/checksum/ChecksumStream.d.ts new file mode 100644 index 000000000..67c8c352d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/checksum/ChecksumStream.d.ts @@ -0,0 +1,61 @@ +import type { Checksum, Encoder } from "@smithy/types"; +import type { Readable } from "stream"; +import { Duplex } from "stream"; +/** + * @internal + */ +export interface ChecksumStreamInit { + /** + * Base64 value of the expected checksum. + */ + expectedChecksum: string; + /** + * For error messaging, the location from which the checksum value was read. + */ + checksumSourceLocation: string; + /** + * The checksum calculator. + */ + checksum: Checksum; + /** + * The stream to be checked. + */ + source: T; + /** + * Optional base 64 encoder if calling from a request context. + */ + base64Encoder?: Encoder; +} +/** + * Wrapper for throwing checksum errors for streams without + * buffering the stream. + * + * @internal + */ +export declare class ChecksumStream extends Duplex { + private expectedChecksum; + private checksumSourceLocation; + private checksum; + private source?; + private base64Encoder; + private pendingCallback; + constructor({ expectedChecksum, checksum, source, checksumSourceLocation, base64Encoder, }: ChecksumStreamInit); + /** + * Do not call this directly. + * @internal + */ + _read(size: number): void; + /** + * When the upstream source flows data to this stream, + * calculate a step update of the checksum. + * Do not call this directly. + * @internal + */ + _write(chunk: Buffer, encoding: string, callback: (err?: Error) => void): void; + /** + * When the upstream source finishes, perform the checksum comparison. + * Do not call this directly. + * @internal + */ + _final(callback: (err?: Error) => void): Promise; +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/checksum/createChecksumStream.browser.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/checksum/createChecksumStream.browser.d.ts new file mode 100644 index 000000000..a2e6845bb --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/checksum/createChecksumStream.browser.d.ts @@ -0,0 +1,14 @@ +import type { ChecksumStreamInit } from "./ChecksumStream.browser"; +/** + * Alias prevents compiler from turning + * ReadableStream into ReadableStream, which is incompatible + * with the NodeJS.ReadableStream global type. + * @internal + */ +export type ReadableStreamType = ReadableStream; +/** + * Creates a stream adapter for throwing checksum errors for streams without + * buffering the stream. + * @internal + */ +export declare const createChecksumStream: ({ expectedChecksum, checksum, source, checksumSourceLocation, base64Encoder, }: ChecksumStreamInit) => ReadableStreamType; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/checksum/createChecksumStream.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/checksum/createChecksumStream.d.ts new file mode 100644 index 000000000..d45b944f7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/checksum/createChecksumStream.d.ts @@ -0,0 +1,13 @@ +import type { Readable } from "stream"; +import type { ChecksumStreamInit } from "./ChecksumStream"; +import type { ReadableStreamType } from "./createChecksumStream.browser"; +/** + * Creates a stream mirroring the input stream's interface, but + * performs checksumming when reading to the end of the stream. + * @internal + */ +export declare function createChecksumStream(init: ChecksumStreamInit): ReadableStreamType; +/** + * @internal + */ +export declare function createChecksumStream(init: ChecksumStreamInit): Readable; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/createBufferedReadable.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/createBufferedReadable.d.ts new file mode 100644 index 000000000..2df8c3bd8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/createBufferedReadable.d.ts @@ -0,0 +1,15 @@ +import type { Logger } from "@smithy/types"; +import { Readable } from "node:stream"; +/** + * @internal + * @param upstream - any Readable or ReadableStream. + * @param size - byte or character length minimum. Buffering occurs when a chunk fails to meet this value. + * @param logger - for emitting warnings when buffering occurs. + * @returns another stream of the same data and stream class, but buffers chunks until + * the minimum size is met, except for the last chunk. + */ +export declare function createBufferedReadable(upstream: Readable, size: number, logger?: Logger): Readable; +/** + * @internal + */ +export declare function createBufferedReadable(upstream: ReadableStream, size: number, logger?: Logger): ReadableStream; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/createBufferedReadableStream.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/createBufferedReadableStream.d.ts new file mode 100644 index 000000000..9f6cdbd5b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/createBufferedReadableStream.d.ts @@ -0,0 +1,50 @@ +import type { Logger } from "@smithy/types"; +import { ByteArrayCollector } from "./ByteArrayCollector"; +export type BufferStore = [string, ByteArrayCollector, ByteArrayCollector?]; +export type BufferUnion = string | Uint8Array; +export type Modes = 0 | 1 | 2; +/** + * @internal + * @param upstream - any ReadableStream. + * @param size - byte or character length minimum. Buffering occurs when a chunk fails to meet this value. + * @param logger - for emitting warnings when buffering occurs. + * @returns another stream of the same data, but buffers chunks until + * the minimum size is met, except for the last chunk. + */ +export declare function createBufferedReadableStream(upstream: ReadableStream, size: number, logger?: Logger): ReadableStream; +/** + * Replaces R/RS polymorphic implementation in environments with only ReadableStream. + * @internal + */ +export declare const createBufferedReadable: typeof createBufferedReadableStream; +/** + * @internal + * @param buffers + * @param mode + * @param chunk + * @returns the new buffer size after merging the chunk with its appropriate buffer. + */ +export declare function merge(buffers: BufferStore, mode: Modes, chunk: string | Uint8Array): number; +/** + * @internal + * @param buffers + * @param mode + * @returns the buffer matching the mode. + */ +export declare function flush(buffers: BufferStore, mode: Modes | -1): BufferUnion; +/** + * @internal + * @param chunk + * @returns size of the chunk in bytes or characters. + */ +export declare function sizeOf(chunk?: { + byteLength?: number; + length?: number; +}): number; +/** + * @internal + * @param chunk - from upstream Readable. + * @param allowBuffer - allow mode 2 (Buffer), otherwise Buffer will return mode 1. + * @returns type index of the chunk. + */ +export declare function modeOf(chunk: BufferUnion, allowBuffer?: boolean): Modes | -1; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/getAwsChunkedEncodingStream.browser.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/getAwsChunkedEncodingStream.browser.d.ts new file mode 100644 index 000000000..18d6eef83 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/getAwsChunkedEncodingStream.browser.d.ts @@ -0,0 +1,5 @@ +import type { GetAwsChunkedEncodingStream } from "@smithy/types"; +/** + * @internal + */ +export declare const getAwsChunkedEncodingStream: GetAwsChunkedEncodingStream; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/getAwsChunkedEncodingStream.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/getAwsChunkedEncodingStream.d.ts new file mode 100644 index 000000000..c1af56584 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/getAwsChunkedEncodingStream.d.ts @@ -0,0 +1,10 @@ +import type { GetAwsChunkedEncodingStreamOptions } from "@smithy/types"; +import { Readable } from "node:stream"; +/** + * @internal + */ +export declare function getAwsChunkedEncodingStream(stream: Readable, options: GetAwsChunkedEncodingStreamOptions): Readable; +/** + * @internal + */ +export declare function getAwsChunkedEncodingStream(stream: ReadableStream, options: GetAwsChunkedEncodingStreamOptions): ReadableStream; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/headStream.browser.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/headStream.browser.d.ts new file mode 100644 index 000000000..303761801 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/headStream.browser.d.ts @@ -0,0 +1,7 @@ +/** + * Caution: the input stream must be destroyed separately, this function does not do so. + * @internal + * @param stream + * @param bytes - read head bytes from the stream and discard the rest of it. + */ +export declare function headStream(stream: ReadableStream, bytes: number): Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/headStream.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/headStream.d.ts new file mode 100644 index 000000000..a4e753607 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/headStream.d.ts @@ -0,0 +1,9 @@ +import type { Readable } from "stream"; +/** + * Caution: the input stream must be destroyed separately, this function does not do so. + * + * @internal + * @param stream - to be read. + * @param bytes - read head bytes from the stream and discard the rest of it. + */ +export declare const headStream: (stream: Readable | ReadableStream, bytes: number) => Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/index.d.ts new file mode 100644 index 000000000..5f3c82f0d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/index.d.ts @@ -0,0 +1,12 @@ +export * from "./blob/Uint8ArrayBlobAdapter"; +export * from "./checksum/ChecksumStream"; +export * from "./checksum/createChecksumStream"; +export * from "./createBufferedReadable"; +export * from "./getAwsChunkedEncodingStream"; +export * from "./headStream"; +export * from "./sdk-stream-mixin"; +export * from "./splitStream"; +/** + * @internal + */ +export { isReadableStream, isBlob } from "./stream-type-check"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/sdk-stream-mixin.browser.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/sdk-stream-mixin.browser.d.ts new file mode 100644 index 000000000..9fdae8878 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/sdk-stream-mixin.browser.d.ts @@ -0,0 +1,7 @@ +import type { SdkStream } from "@smithy/types"; +/** + * The stream handling utility functions for browsers and React Native + * + * @internal + */ +export declare const sdkStreamMixin: (stream: unknown) => SdkStream; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/sdk-stream-mixin.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/sdk-stream-mixin.d.ts new file mode 100644 index 000000000..080dc7acd --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/sdk-stream-mixin.d.ts @@ -0,0 +1,8 @@ +import type { SdkStream } from "@smithy/types"; +import { Readable } from "stream"; +/** + * The function that mixes in the utility functions to help consuming runtime-specific payload stream. + * + * @internal + */ +export declare const sdkStreamMixin: (stream: unknown) => SdkStream | SdkStream; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/splitStream.browser.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/splitStream.browser.d.ts new file mode 100644 index 000000000..506c23aef --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/splitStream.browser.d.ts @@ -0,0 +1,5 @@ +/** + * @param stream + * @returns stream split into two identical streams. + */ +export declare function splitStream(stream: ReadableStream | Blob): Promise<[ReadableStream, ReadableStream]>; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/splitStream.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/splitStream.d.ts new file mode 100644 index 000000000..c0f93b854 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/splitStream.d.ts @@ -0,0 +1,11 @@ +import type { Readable } from "stream"; +/** + * @internal + * @param stream - to be split. + * @returns stream split into two identical streams. + */ +export declare function splitStream(stream: Readable): Promise<[Readable, Readable]>; +/** + * @internal + */ +export declare function splitStream(stream: ReadableStream): Promise<[ReadableStream, ReadableStream]>; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/stream-type-check.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/stream-type-check.d.ts new file mode 100644 index 000000000..6b8caa039 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/stream-type-check.d.ts @@ -0,0 +1,17 @@ +/** + * Alias prevents compiler from turning + * ReadableStream into ReadableStream, which is incompatible + * with the NodeJS.ReadableStream global type. + * + * @internal + */ +type ReadableStreamType = ReadableStream; +/** + * @internal + */ +export declare const isReadableStream: (stream: unknown) => stream is ReadableStreamType; +/** + * @internal + */ +export declare const isBlob: (blob: unknown) => blob is Blob; +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/ByteArrayCollector.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/ByteArrayCollector.d.ts new file mode 100644 index 000000000..a1bbd5321 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/ByteArrayCollector.d.ts @@ -0,0 +1,13 @@ +/** + * Aggregates byteArrays on demand. + * @internal + */ +export declare class ByteArrayCollector { + readonly allocByteArray: (size: number) => Uint8Array; + byteLength: number; + private byteArrays; + constructor(allocByteArray: (size: number) => Uint8Array); + push(byteArray: Uint8Array): void; + flush(): Uint8Array; + private reset; +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/blob/Uint8ArrayBlobAdapter.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/blob/Uint8ArrayBlobAdapter.d.ts new file mode 100644 index 000000000..269f2b540 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/blob/Uint8ArrayBlobAdapter.d.ts @@ -0,0 +1,22 @@ +/** + * Adapter for conversions of the native Uint8Array type. + * @public + */ +export declare class Uint8ArrayBlobAdapter extends Uint8Array { + /** + * @param source - such as a string or Stream. + * @param encoding - utf-8 or base64. + * @returns a new Uint8ArrayBlobAdapter extending Uint8Array. + */ + static fromString(source: string, encoding?: string): Uint8ArrayBlobAdapter; + /** + * @param source - Uint8Array to be mutated. + * @returns the same Uint8Array but with prototype switched to Uint8ArrayBlobAdapter. + */ + static mutate(source: Uint8Array): Uint8ArrayBlobAdapter; + /** + * @param encoding - default 'utf-8'. + * @returns the blob as string. + */ + transformToString(encoding?: string): string; +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/ChecksumStream.browser.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/ChecksumStream.browser.d.ts new file mode 100644 index 000000000..0c5fbd4e5 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/ChecksumStream.browser.d.ts @@ -0,0 +1,37 @@ +import { Checksum, Encoder } from "@smithy/types"; +/** + * @internal + */ +export interface ChecksumStreamInit { + /** + * Base64 value of the expected checksum. + */ + expectedChecksum: string; + /** + * For error messaging, the location from which the checksum value was read. + */ + checksumSourceLocation: string; + /** + * The checksum calculator. + */ + checksum: Checksum; + /** + * The stream to be checked. + */ + source: ReadableStream; + /** + * Optional base 64 encoder if calling from a request context. + */ + base64Encoder?: Encoder; +} +declare const ChecksumStream_base: any; +/** + * This stub exists so that the readable returned by createChecksumStream + * identifies as "ChecksumStream" in alignment with the Node.js + * implementation. + * + * @extends ReadableStream + */ +export declare class ChecksumStream extends ChecksumStream_base { +} +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/ChecksumStream.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/ChecksumStream.d.ts new file mode 100644 index 000000000..33e527c75 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/ChecksumStream.d.ts @@ -0,0 +1,61 @@ +import { Checksum, Encoder } from "@smithy/types"; +import { Readable } from "stream"; +import { Duplex } from "stream"; +/** + * @internal + */ +export interface ChecksumStreamInit { + /** + * Base64 value of the expected checksum. + */ + expectedChecksum: string; + /** + * For error messaging, the location from which the checksum value was read. + */ + checksumSourceLocation: string; + /** + * The checksum calculator. + */ + checksum: Checksum; + /** + * The stream to be checked. + */ + source: T; + /** + * Optional base 64 encoder if calling from a request context. + */ + base64Encoder?: Encoder; +} +/** + * Wrapper for throwing checksum errors for streams without + * buffering the stream. + * + * @internal + */ +export declare class ChecksumStream extends Duplex { + private expectedChecksum; + private checksumSourceLocation; + private checksum; + private source?; + private base64Encoder; + private pendingCallback; + constructor({ expectedChecksum, checksum, source, checksumSourceLocation, base64Encoder, }: ChecksumStreamInit); + /** + * Do not call this directly. + * @internal + */ + _read(size: number): void; + /** + * When the upstream source flows data to this stream, + * calculate a step update of the checksum. + * Do not call this directly. + * @internal + */ + _write(chunk: Buffer, encoding: string, callback: (err?: Error) => void): void; + /** + * When the upstream source finishes, perform the checksum comparison. + * Do not call this directly. + * @internal + */ + _final(callback: (err?: Error) => void): Promise; +} diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/createChecksumStream.browser.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/createChecksumStream.browser.d.ts new file mode 100644 index 000000000..47e5269a1 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/createChecksumStream.browser.d.ts @@ -0,0 +1,14 @@ +import { ChecksumStreamInit } from "./ChecksumStream.browser"; +/** + * Alias prevents compiler from turning + * ReadableStream into ReadableStream, which is incompatible + * with the NodeJS.ReadableStream global type. + * @internal + */ +export type ReadableStreamType = ReadableStream; +/** + * Creates a stream adapter for throwing checksum errors for streams without + * buffering the stream. + * @internal + */ +export declare const createChecksumStream: ({ expectedChecksum, checksum, source, checksumSourceLocation, base64Encoder, }: ChecksumStreamInit) => ReadableStreamType; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/createChecksumStream.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/createChecksumStream.d.ts new file mode 100644 index 000000000..0ab80b180 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/createChecksumStream.d.ts @@ -0,0 +1,13 @@ +import { Readable } from "stream"; +import { ChecksumStreamInit } from "./ChecksumStream"; +import { ReadableStreamType } from "./createChecksumStream.browser"; +/** + * Creates a stream mirroring the input stream's interface, but + * performs checksumming when reading to the end of the stream. + * @internal + */ +export declare function createChecksumStream(init: ChecksumStreamInit): ReadableStreamType; +/** + * @internal + */ +export declare function createChecksumStream(init: ChecksumStreamInit): Readable; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/createBufferedReadable.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/createBufferedReadable.d.ts new file mode 100644 index 000000000..610d6bca4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/createBufferedReadable.d.ts @@ -0,0 +1,15 @@ +import { Logger } from "@smithy/types"; +import { Readable } from "node:stream"; +/** + * @internal + * @param upstream - any Readable or ReadableStream. + * @param size - byte or character length minimum. Buffering occurs when a chunk fails to meet this value. + * @param logger - for emitting warnings when buffering occurs. + * @returns another stream of the same data and stream class, but buffers chunks until + * the minimum size is met, except for the last chunk. + */ +export declare function createBufferedReadable(upstream: Readable, size: number, logger?: Logger): Readable; +/** + * @internal + */ +export declare function createBufferedReadable(upstream: ReadableStream, size: number, logger?: Logger): ReadableStream; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/createBufferedReadableStream.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/createBufferedReadableStream.d.ts new file mode 100644 index 000000000..fba11f4ca --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/createBufferedReadableStream.d.ts @@ -0,0 +1,54 @@ +import { Logger } from "@smithy/types"; +import { ByteArrayCollector } from "./ByteArrayCollector"; +export type BufferStore = [ + string, + ByteArrayCollector, + ByteArrayCollector? +]; +export type BufferUnion = string | Uint8Array; +export type Modes = 0 | 1 | 2; +/** + * @internal + * @param upstream - any ReadableStream. + * @param size - byte or character length minimum. Buffering occurs when a chunk fails to meet this value. + * @param logger - for emitting warnings when buffering occurs. + * @returns another stream of the same data, but buffers chunks until + * the minimum size is met, except for the last chunk. + */ +export declare function createBufferedReadableStream(upstream: ReadableStream, size: number, logger?: Logger): ReadableStream; +/** + * Replaces R/RS polymorphic implementation in environments with only ReadableStream. + * @internal + */ +export declare const createBufferedReadable: typeof createBufferedReadableStream; +/** + * @internal + * @param buffers + * @param mode + * @param chunk + * @returns the new buffer size after merging the chunk with its appropriate buffer. + */ +export declare function merge(buffers: BufferStore, mode: Modes, chunk: string | Uint8Array): number; +/** + * @internal + * @param buffers + * @param mode + * @returns the buffer matching the mode. + */ +export declare function flush(buffers: BufferStore, mode: Modes | -1): BufferUnion; +/** + * @internal + * @param chunk + * @returns size of the chunk in bytes or characters. + */ +export declare function sizeOf(chunk?: { + byteLength?: number; + length?: number; +}): number; +/** + * @internal + * @param chunk - from upstream Readable. + * @param allowBuffer - allow mode 2 (Buffer), otherwise Buffer will return mode 1. + * @returns type index of the chunk. + */ +export declare function modeOf(chunk: BufferUnion, allowBuffer?: boolean): Modes | -1; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/getAwsChunkedEncodingStream.browser.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/getAwsChunkedEncodingStream.browser.d.ts new file mode 100644 index 000000000..f767f771e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/getAwsChunkedEncodingStream.browser.d.ts @@ -0,0 +1,5 @@ +import { GetAwsChunkedEncodingStream } from "@smithy/types"; +/** + * @internal + */ +export declare const getAwsChunkedEncodingStream: GetAwsChunkedEncodingStream; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/getAwsChunkedEncodingStream.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/getAwsChunkedEncodingStream.d.ts new file mode 100644 index 000000000..56a45acfb --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/getAwsChunkedEncodingStream.d.ts @@ -0,0 +1,10 @@ +import { GetAwsChunkedEncodingStreamOptions } from "@smithy/types"; +import { Readable } from "node:stream"; +/** + * @internal + */ +export declare function getAwsChunkedEncodingStream(stream: Readable, options: GetAwsChunkedEncodingStreamOptions): Readable; +/** + * @internal + */ +export declare function getAwsChunkedEncodingStream(stream: ReadableStream, options: GetAwsChunkedEncodingStreamOptions): ReadableStream; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/headStream.browser.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/headStream.browser.d.ts new file mode 100644 index 000000000..303761801 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/headStream.browser.d.ts @@ -0,0 +1,7 @@ +/** + * Caution: the input stream must be destroyed separately, this function does not do so. + * @internal + * @param stream + * @param bytes - read head bytes from the stream and discard the rest of it. + */ +export declare function headStream(stream: ReadableStream, bytes: number): Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/headStream.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/headStream.d.ts new file mode 100644 index 000000000..b0783a838 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/headStream.d.ts @@ -0,0 +1,9 @@ +import { Readable } from "stream"; +/** + * Caution: the input stream must be destroyed separately, this function does not do so. + * + * @internal + * @param stream - to be read. + * @param bytes - read head bytes from the stream and discard the rest of it. + */ +export declare const headStream: (stream: Readable | ReadableStream, bytes: number) => Promise; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..5f3c82f0d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/index.d.ts @@ -0,0 +1,12 @@ +export * from "./blob/Uint8ArrayBlobAdapter"; +export * from "./checksum/ChecksumStream"; +export * from "./checksum/createChecksumStream"; +export * from "./createBufferedReadable"; +export * from "./getAwsChunkedEncodingStream"; +export * from "./headStream"; +export * from "./sdk-stream-mixin"; +export * from "./splitStream"; +/** + * @internal + */ +export { isReadableStream, isBlob } from "./stream-type-check"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/sdk-stream-mixin.browser.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/sdk-stream-mixin.browser.d.ts new file mode 100644 index 000000000..400c0b216 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/sdk-stream-mixin.browser.d.ts @@ -0,0 +1,7 @@ +import { SdkStream } from "@smithy/types"; +/** + * The stream handling utility functions for browsers and React Native + * + * @internal + */ +export declare const sdkStreamMixin: (stream: unknown) => SdkStream; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/sdk-stream-mixin.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/sdk-stream-mixin.d.ts new file mode 100644 index 000000000..34fcb6f38 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/sdk-stream-mixin.d.ts @@ -0,0 +1,8 @@ +import { SdkStream } from "@smithy/types"; +import { Readable } from "stream"; +/** + * The function that mixes in the utility functions to help consuming runtime-specific payload stream. + * + * @internal + */ +export declare const sdkStreamMixin: (stream: unknown) => SdkStream | SdkStream; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/splitStream.browser.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/splitStream.browser.d.ts new file mode 100644 index 000000000..631fc2408 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/splitStream.browser.d.ts @@ -0,0 +1,8 @@ +/** + * @param stream + * @returns stream split into two identical streams. + */ +export declare function splitStream(stream: ReadableStream | Blob): Promise<[ + ReadableStream, + ReadableStream +]>; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/splitStream.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/splitStream.d.ts new file mode 100644 index 000000000..541fb9320 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/splitStream.d.ts @@ -0,0 +1,17 @@ +import { Readable } from "stream"; +/** + * @internal + * @param stream - to be split. + * @returns stream split into two identical streams. + */ +export declare function splitStream(stream: Readable): Promise<[ + Readable, + Readable +]>; +/** + * @internal + */ +export declare function splitStream(stream: ReadableStream): Promise<[ + ReadableStream, + ReadableStream +]>; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/stream-type-check.d.ts b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/stream-type-check.d.ts new file mode 100644 index 000000000..6b8caa039 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/dist-types/ts3.4/stream-type-check.d.ts @@ -0,0 +1,17 @@ +/** + * Alias prevents compiler from turning + * ReadableStream into ReadableStream, which is incompatible + * with the NodeJS.ReadableStream global type. + * + * @internal + */ +type ReadableStreamType = ReadableStream; +/** + * @internal + */ +export declare const isReadableStream: (stream: unknown) => stream is ReadableStreamType; +/** + * @internal + */ +export declare const isBlob: (blob: unknown) => blob is Blob; +export {}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-stream/package.json b/food-ordering-app/server/node_modules/@smithy/util-stream/package.json new file mode 100644 index 000000000..1352df8f0 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-stream/package.json @@ -0,0 +1,99 @@ +{ + "name": "@smithy/util-stream", + "version": "4.5.19", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-stream", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "extract:docs": "api-extractor run --local", + "test": "yarn g:vitest run && yarn test:browser", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:watch": "yarn g:vitest watch", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts", + "test:browser": "yarn g:vitest run -c vitest.config.browser.mts", + "test:browser:watch": "yarn g:vitest watch -c vitest.config.browser.mts" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/fetch-http-handler": "^5.3.15", + "@smithy/node-http-handler": "^4.4.16", + "@smithy/types": "^4.13.1", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-hex-encoding": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@smithy/util-test": "^0.2.8", + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "browser": { + "./dist-es/checksum/ChecksumStream": "./dist-es/checksum/ChecksumStream.browser", + "./dist-es/checksum/createChecksumStream": "./dist-es/checksum/createChecksumStream.browser", + "./dist-es/createBufferedReadable": "./dist-es/createBufferedReadableStream", + "./dist-es/getAwsChunkedEncodingStream": "./dist-es/getAwsChunkedEncodingStream.browser", + "./dist-es/headStream": "./dist-es/headStream.browser", + "./dist-es/sdk-stream-mixin": "./dist-es/sdk-stream-mixin.browser", + "./dist-es/splitStream": "./dist-es/splitStream.browser" + }, + "react-native": { + "./dist-es/checksum/createChecksumStream": "./dist-es/checksum/createChecksumStream.browser", + "./dist-es/checksum/ChecksumStream": "./dist-es/checksum/ChecksumStream.browser", + "./dist-es/getAwsChunkedEncodingStream": "./dist-es/getAwsChunkedEncodingStream.browser", + "./dist-es/sdk-stream-mixin": "./dist-es/sdk-stream-mixin.browser", + "./dist-es/headStream": "./dist-es/headStream.browser", + "./dist-es/splitStream": "./dist-es/splitStream.browser", + "./dist-es/createBufferedReadable": "./dist-es/createBufferedReadableStream", + "./dist-cjs/checksum/createChecksumStream": "./dist-cjs/checksum/createChecksumStream.browser", + "./dist-cjs/checksum/ChecksumStream": "./dist-cjs/checksum/ChecksumStream.browser", + "./dist-cjs/getAwsChunkedEncodingStream": "./dist-cjs/getAwsChunkedEncodingStream.browser", + "./dist-cjs/sdk-stream-mixin": "./dist-cjs/sdk-stream-mixin.browser", + "./dist-cjs/headStream": "./dist-cjs/headStream.browser", + "./dist-cjs/splitStream": "./dist-cjs/splitStream.browser", + "./dist-cjs/createBufferedReadable": "./dist-cjs/createBufferedReadableStream" + }, + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/util-stream", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/util-stream" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/util-uri-escape/LICENSE b/food-ordering-app/server/node_modules/@smithy/util-uri-escape/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-uri-escape/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/util-uri-escape/README.md b/food-ordering-app/server/node_modules/@smithy/util-uri-escape/README.md new file mode 100644 index 000000000..22e939a52 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-uri-escape/README.md @@ -0,0 +1,10 @@ +# @smithy/util-uri-escape + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-uri-escape/latest.svg)](https://www.npmjs.com/package/@smithy/util-uri-escape) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-uri-escape.svg)](https://www.npmjs.com/package/@smithy/util-uri-escape) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/food-ordering-app/server/node_modules/@smithy/util-uri-escape/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/util-uri-escape/dist-cjs/index.js new file mode 100644 index 000000000..11f942c35 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-uri-escape/dist-cjs/index.js @@ -0,0 +1,9 @@ +'use strict'; + +const escapeUri = (uri) => encodeURIComponent(uri).replace(/[!'()*]/g, hexEncode); +const hexEncode = (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`; + +const escapeUriPath = (uri) => uri.split("/").map(escapeUri).join("/"); + +exports.escapeUri = escapeUri; +exports.escapeUriPath = escapeUriPath; diff --git a/food-ordering-app/server/node_modules/@smithy/util-uri-escape/dist-es/escape-uri-path.js b/food-ordering-app/server/node_modules/@smithy/util-uri-escape/dist-es/escape-uri-path.js new file mode 100644 index 000000000..81b3fe37e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-uri-escape/dist-es/escape-uri-path.js @@ -0,0 +1,2 @@ +import { escapeUri } from "./escape-uri"; +export const escapeUriPath = (uri) => uri.split("/").map(escapeUri).join("/"); diff --git a/food-ordering-app/server/node_modules/@smithy/util-uri-escape/dist-es/escape-uri.js b/food-ordering-app/server/node_modules/@smithy/util-uri-escape/dist-es/escape-uri.js new file mode 100644 index 000000000..8990be133 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-uri-escape/dist-es/escape-uri.js @@ -0,0 +1,2 @@ +export const escapeUri = (uri) => encodeURIComponent(uri).replace(/[!'()*]/g, hexEncode); +const hexEncode = (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`; diff --git a/food-ordering-app/server/node_modules/@smithy/util-uri-escape/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/util-uri-escape/dist-es/index.js new file mode 100644 index 000000000..ed402e1cd --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-uri-escape/dist-es/index.js @@ -0,0 +1,2 @@ +export * from "./escape-uri"; +export * from "./escape-uri-path"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-uri-escape/dist-types/escape-uri-path.d.ts b/food-ordering-app/server/node_modules/@smithy/util-uri-escape/dist-types/escape-uri-path.d.ts new file mode 100644 index 000000000..b547ff90c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-uri-escape/dist-types/escape-uri-path.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const escapeUriPath: (uri: string) => string; diff --git a/food-ordering-app/server/node_modules/@smithy/util-uri-escape/dist-types/escape-uri.d.ts b/food-ordering-app/server/node_modules/@smithy/util-uri-escape/dist-types/escape-uri.d.ts new file mode 100644 index 000000000..3f14d2c9b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-uri-escape/dist-types/escape-uri.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const escapeUri: (uri: string) => string; diff --git a/food-ordering-app/server/node_modules/@smithy/util-uri-escape/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-uri-escape/dist-types/index.d.ts new file mode 100644 index 000000000..1913825c2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-uri-escape/dist-types/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./escape-uri"; +/** + * @internal + */ +export * from "./escape-uri-path"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-uri-escape/dist-types/ts3.4/escape-uri-path.d.ts b/food-ordering-app/server/node_modules/@smithy/util-uri-escape/dist-types/ts3.4/escape-uri-path.d.ts new file mode 100644 index 000000000..b547ff90c --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-uri-escape/dist-types/ts3.4/escape-uri-path.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const escapeUriPath: (uri: string) => string; diff --git a/food-ordering-app/server/node_modules/@smithy/util-uri-escape/dist-types/ts3.4/escape-uri.d.ts b/food-ordering-app/server/node_modules/@smithy/util-uri-escape/dist-types/ts3.4/escape-uri.d.ts new file mode 100644 index 000000000..3f14d2c9b --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-uri-escape/dist-types/ts3.4/escape-uri.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const escapeUri: (uri: string) => string; diff --git a/food-ordering-app/server/node_modules/@smithy/util-uri-escape/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-uri-escape/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..1913825c2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-uri-escape/dist-types/ts3.4/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./escape-uri"; +/** + * @internal + */ +export * from "./escape-uri-path"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-uri-escape/package.json b/food-ordering-app/server/node_modules/@smithy/util-uri-escape/package.json new file mode 100644 index 000000000..ac8dacff4 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-uri-escape/package.json @@ -0,0 +1,60 @@ +{ + "name": "@smithy/util-uri-escape", + "version": "4.2.2", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-uri-escape", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/util-uri-escape", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/util-uri-escape" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/util-utf8/LICENSE b/food-ordering-app/server/node_modules/@smithy/util-utf8/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-utf8/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/util-utf8/README.md b/food-ordering-app/server/node_modules/@smithy/util-utf8/README.md new file mode 100644 index 000000000..fc5db6d8e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-utf8/README.md @@ -0,0 +1,4 @@ +# @smithy/util-utf8 + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-utf8/latest.svg)](https://www.npmjs.com/package/@smithy/util-utf8) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-utf8.svg)](https://www.npmjs.com/package/@smithy/util-utf8) diff --git a/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-cjs/index.js new file mode 100644 index 000000000..7f9451000 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-cjs/index.js @@ -0,0 +1,32 @@ +'use strict'; + +var utilBufferFrom = require('@smithy/util-buffer-from'); + +const fromUtf8 = (input) => { + const buf = utilBufferFrom.fromString(input, "utf8"); + return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength / Uint8Array.BYTES_PER_ELEMENT); +}; + +const toUint8Array = (data) => { + if (typeof data === "string") { + return fromUtf8(data); + } + if (ArrayBuffer.isView(data)) { + return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT); + } + return new Uint8Array(data); +}; + +const toUtf8 = (input) => { + if (typeof input === "string") { + return input; + } + if (typeof input !== "object" || typeof input.byteOffset !== "number" || typeof input.byteLength !== "number") { + throw new Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array."); + } + return utilBufferFrom.fromArrayBuffer(input.buffer, input.byteOffset, input.byteLength).toString("utf8"); +}; + +exports.fromUtf8 = fromUtf8; +exports.toUint8Array = toUint8Array; +exports.toUtf8 = toUtf8; diff --git a/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-es/fromUtf8.browser.js b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-es/fromUtf8.browser.js new file mode 100644 index 000000000..73441900f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-es/fromUtf8.browser.js @@ -0,0 +1 @@ +export const fromUtf8 = (input) => new TextEncoder().encode(input); diff --git a/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-es/fromUtf8.js b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-es/fromUtf8.js new file mode 100644 index 000000000..6dc438b3e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-es/fromUtf8.js @@ -0,0 +1,5 @@ +import { fromString } from "@smithy/util-buffer-from"; +export const fromUtf8 = (input) => { + const buf = fromString(input, "utf8"); + return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength / Uint8Array.BYTES_PER_ELEMENT); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-es/index.js new file mode 100644 index 000000000..00ba46574 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-es/index.js @@ -0,0 +1,3 @@ +export * from "./fromUtf8"; +export * from "./toUint8Array"; +export * from "./toUtf8"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-es/toUint8Array.js b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-es/toUint8Array.js new file mode 100644 index 000000000..2cd36f755 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-es/toUint8Array.js @@ -0,0 +1,10 @@ +import { fromUtf8 } from "./fromUtf8"; +export const toUint8Array = (data) => { + if (typeof data === "string") { + return fromUtf8(data); + } + if (ArrayBuffer.isView(data)) { + return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT); + } + return new Uint8Array(data); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-es/toUtf8.browser.js b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-es/toUtf8.browser.js new file mode 100644 index 000000000..c29212787 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-es/toUtf8.browser.js @@ -0,0 +1,9 @@ +export const toUtf8 = (input) => { + if (typeof input === "string") { + return input; + } + if (typeof input !== "object" || typeof input.byteOffset !== "number" || typeof input.byteLength !== "number") { + throw new Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array."); + } + return new TextDecoder("utf-8").decode(input); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-es/toUtf8.js b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-es/toUtf8.js new file mode 100644 index 000000000..7be8745a8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-es/toUtf8.js @@ -0,0 +1,10 @@ +import { fromArrayBuffer } from "@smithy/util-buffer-from"; +export const toUtf8 = (input) => { + if (typeof input === "string") { + return input; + } + if (typeof input !== "object" || typeof input.byteOffset !== "number" || typeof input.byteLength !== "number") { + throw new Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array."); + } + return fromArrayBuffer(input.buffer, input.byteOffset, input.byteLength).toString("utf8"); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/fromUtf8.browser.d.ts b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/fromUtf8.browser.d.ts new file mode 100644 index 000000000..dd9198177 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/fromUtf8.browser.d.ts @@ -0,0 +1 @@ +export declare const fromUtf8: (input: string) => Uint8Array; diff --git a/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/fromUtf8.d.ts b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/fromUtf8.d.ts new file mode 100644 index 000000000..dd9198177 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/fromUtf8.d.ts @@ -0,0 +1 @@ +export declare const fromUtf8: (input: string) => Uint8Array; diff --git a/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/index.d.ts new file mode 100644 index 000000000..00ba46574 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/index.d.ts @@ -0,0 +1,3 @@ +export * from "./fromUtf8"; +export * from "./toUint8Array"; +export * from "./toUtf8"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/toUint8Array.d.ts b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/toUint8Array.d.ts new file mode 100644 index 000000000..11b6342e8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/toUint8Array.d.ts @@ -0,0 +1 @@ +export declare const toUint8Array: (data: string | ArrayBuffer | ArrayBufferView) => Uint8Array; diff --git a/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/toUtf8.browser.d.ts b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/toUtf8.browser.d.ts new file mode 100644 index 000000000..8494acd85 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/toUtf8.browser.d.ts @@ -0,0 +1,7 @@ +/** + * + * This does not convert non-utf8 strings to utf8, it only passes through strings if + * a string is received instead of a Uint8Array. + * + */ +export declare const toUtf8: (input: Uint8Array | string) => string; diff --git a/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/toUtf8.d.ts b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/toUtf8.d.ts new file mode 100644 index 000000000..8494acd85 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/toUtf8.d.ts @@ -0,0 +1,7 @@ +/** + * + * This does not convert non-utf8 strings to utf8, it only passes through strings if + * a string is received instead of a Uint8Array. + * + */ +export declare const toUtf8: (input: Uint8Array | string) => string; diff --git a/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.browser.d.ts b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.browser.d.ts new file mode 100644 index 000000000..dd9198177 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.browser.d.ts @@ -0,0 +1 @@ +export declare const fromUtf8: (input: string) => Uint8Array; diff --git a/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.d.ts b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.d.ts new file mode 100644 index 000000000..dd9198177 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.d.ts @@ -0,0 +1 @@ +export declare const fromUtf8: (input: string) => Uint8Array; diff --git a/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..00ba46574 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/ts3.4/index.d.ts @@ -0,0 +1,3 @@ +export * from "./fromUtf8"; +export * from "./toUint8Array"; +export * from "./toUtf8"; diff --git a/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUint8Array.d.ts b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUint8Array.d.ts new file mode 100644 index 000000000..11b6342e8 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUint8Array.d.ts @@ -0,0 +1 @@ +export declare const toUint8Array: (data: string | ArrayBuffer | ArrayBufferView) => Uint8Array; diff --git a/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.browser.d.ts b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.browser.d.ts new file mode 100644 index 000000000..8494acd85 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.browser.d.ts @@ -0,0 +1,7 @@ +/** + * + * This does not convert non-utf8 strings to utf8, it only passes through strings if + * a string is received instead of a Uint8Array. + * + */ +export declare const toUtf8: (input: Uint8Array | string) => string; diff --git a/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.d.ts b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.d.ts new file mode 100644 index 000000000..8494acd85 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.d.ts @@ -0,0 +1,7 @@ +/** + * + * This does not convert non-utf8 strings to utf8, it only passes through strings if + * a string is received instead of a Uint8Array. + * + */ +export declare const toUtf8: (input: Uint8Array | string) => string; diff --git a/food-ordering-app/server/node_modules/@smithy/util-utf8/package.json b/food-ordering-app/server/node_modules/@smithy/util-utf8/package.json new file mode 100644 index 000000000..5dda0126d --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/util-utf8/package.json @@ -0,0 +1,67 @@ +{ + "name": "@smithy/util-utf8", + "version": "4.2.2", + "description": "A UTF-8 string <-> UInt8Array converter", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-utf8", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/util-buffer-from": "^4.2.2", + "tslib": "^2.6.2" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "browser": { + "./dist-es/fromUtf8": "./dist-es/fromUtf8.browser", + "./dist-es/toUtf8": "./dist-es/toUtf8.browser" + }, + "react-native": {}, + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/util-utf8", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/util-utf8" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/uuid/LICENSE b/food-ordering-app/server/node_modules/@smithy/uuid/LICENSE new file mode 100644 index 000000000..7b6491ba7 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/uuid/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@smithy/uuid/README.md b/food-ordering-app/server/node_modules/@smithy/uuid/README.md new file mode 100644 index 000000000..3e085df31 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/uuid/README.md @@ -0,0 +1,10 @@ +# @smithy/uuid + +[![NPM version](https://img.shields.io/npm/v/@smithy/uuid/latest.svg)](https://www.npmjs.com/package/@smithy/uuid) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/uuid.svg)](https://www.npmjs.com/package/@smithy/uuid) + +> An internal package + +## Usage + +This is an internal `@smithy` package. You should not install it as a direct dependency in your applications. diff --git a/food-ordering-app/server/node_modules/@smithy/uuid/dist-cjs/index.js b/food-ordering-app/server/node_modules/@smithy/uuid/dist-cjs/index.js new file mode 100644 index 000000000..e9399c97e --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/uuid/dist-cjs/index.js @@ -0,0 +1,36 @@ +'use strict'; + +var randomUUID = require('./randomUUID'); + +const decimalToHex = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, "0")); +const v4 = () => { + if (randomUUID.randomUUID) { + return randomUUID.randomUUID(); + } + const rnds = new Uint8Array(16); + crypto.getRandomValues(rnds); + rnds[6] = (rnds[6] & 0x0f) | 0x40; + rnds[8] = (rnds[8] & 0x3f) | 0x80; + return (decimalToHex[rnds[0]] + + decimalToHex[rnds[1]] + + decimalToHex[rnds[2]] + + decimalToHex[rnds[3]] + + "-" + + decimalToHex[rnds[4]] + + decimalToHex[rnds[5]] + + "-" + + decimalToHex[rnds[6]] + + decimalToHex[rnds[7]] + + "-" + + decimalToHex[rnds[8]] + + decimalToHex[rnds[9]] + + "-" + + decimalToHex[rnds[10]] + + decimalToHex[rnds[11]] + + decimalToHex[rnds[12]] + + decimalToHex[rnds[13]] + + decimalToHex[rnds[14]] + + decimalToHex[rnds[15]]); +}; + +exports.v4 = v4; diff --git a/food-ordering-app/server/node_modules/@smithy/uuid/dist-cjs/randomUUID.js b/food-ordering-app/server/node_modules/@smithy/uuid/dist-cjs/randomUUID.js new file mode 100644 index 000000000..a1a972398 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/uuid/dist-cjs/randomUUID.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.randomUUID = void 0; +const tslib_1 = require("tslib"); +const crypto_1 = tslib_1.__importDefault(require("crypto")); +exports.randomUUID = crypto_1.default.randomUUID.bind(crypto_1.default); diff --git a/food-ordering-app/server/node_modules/@smithy/uuid/dist-cjs/randomUUID.native.js b/food-ordering-app/server/node_modules/@smithy/uuid/dist-cjs/randomUUID.native.js new file mode 100644 index 000000000..e95fb3eb2 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/uuid/dist-cjs/randomUUID.native.js @@ -0,0 +1,4 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.randomUUID = void 0; +exports.randomUUID = typeof crypto !== "undefined" && crypto.randomUUID && crypto.randomUUID.bind(crypto); diff --git a/food-ordering-app/server/node_modules/@smithy/uuid/dist-es/index.js b/food-ordering-app/server/node_modules/@smithy/uuid/dist-es/index.js new file mode 100644 index 000000000..7d6737831 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/uuid/dist-es/index.js @@ -0,0 +1 @@ +export * from "./v4"; diff --git a/food-ordering-app/server/node_modules/@smithy/uuid/dist-es/randomUUID.browser.js b/food-ordering-app/server/node_modules/@smithy/uuid/dist-es/randomUUID.browser.js new file mode 100644 index 000000000..c2760b418 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/uuid/dist-es/randomUUID.browser.js @@ -0,0 +1 @@ +export const randomUUID = typeof crypto !== "undefined" && crypto.randomUUID && crypto.randomUUID.bind(crypto); diff --git a/food-ordering-app/server/node_modules/@smithy/uuid/dist-es/randomUUID.js b/food-ordering-app/server/node_modules/@smithy/uuid/dist-es/randomUUID.js new file mode 100644 index 000000000..f97ca18ac --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/uuid/dist-es/randomUUID.js @@ -0,0 +1,2 @@ +import crypto from "crypto"; +export const randomUUID = crypto.randomUUID.bind(crypto); diff --git a/food-ordering-app/server/node_modules/@smithy/uuid/dist-es/randomUUID.native.js b/food-ordering-app/server/node_modules/@smithy/uuid/dist-es/randomUUID.native.js new file mode 100644 index 000000000..c2760b418 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/uuid/dist-es/randomUUID.native.js @@ -0,0 +1 @@ +export const randomUUID = typeof crypto !== "undefined" && crypto.randomUUID && crypto.randomUUID.bind(crypto); diff --git a/food-ordering-app/server/node_modules/@smithy/uuid/dist-es/v4.js b/food-ordering-app/server/node_modules/@smithy/uuid/dist-es/v4.js new file mode 100644 index 000000000..9efe193e6 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/uuid/dist-es/v4.js @@ -0,0 +1,31 @@ +import { randomUUID } from "./randomUUID"; +const decimalToHex = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, "0")); +export const v4 = () => { + if (randomUUID) { + return randomUUID(); + } + const rnds = new Uint8Array(16); + crypto.getRandomValues(rnds); + rnds[6] = (rnds[6] & 0x0f) | 0x40; + rnds[8] = (rnds[8] & 0x3f) | 0x80; + return (decimalToHex[rnds[0]] + + decimalToHex[rnds[1]] + + decimalToHex[rnds[2]] + + decimalToHex[rnds[3]] + + "-" + + decimalToHex[rnds[4]] + + decimalToHex[rnds[5]] + + "-" + + decimalToHex[rnds[6]] + + decimalToHex[rnds[7]] + + "-" + + decimalToHex[rnds[8]] + + decimalToHex[rnds[9]] + + "-" + + decimalToHex[rnds[10]] + + decimalToHex[rnds[11]] + + decimalToHex[rnds[12]] + + decimalToHex[rnds[13]] + + decimalToHex[rnds[14]] + + decimalToHex[rnds[15]]); +}; diff --git a/food-ordering-app/server/node_modules/@smithy/uuid/dist-types/index.d.ts b/food-ordering-app/server/node_modules/@smithy/uuid/dist-types/index.d.ts new file mode 100644 index 000000000..7d6737831 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/uuid/dist-types/index.d.ts @@ -0,0 +1 @@ +export * from "./v4"; diff --git a/food-ordering-app/server/node_modules/@smithy/uuid/dist-types/randomUUID.browser.d.ts b/food-ordering-app/server/node_modules/@smithy/uuid/dist-types/randomUUID.browser.d.ts new file mode 100644 index 000000000..10921111f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/uuid/dist-types/randomUUID.browser.d.ts @@ -0,0 +1 @@ +export declare const randomUUID: false | (() => `${string}-${string}-${string}-${string}-${string}`); diff --git a/food-ordering-app/server/node_modules/@smithy/uuid/dist-types/randomUUID.d.ts b/food-ordering-app/server/node_modules/@smithy/uuid/dist-types/randomUUID.d.ts new file mode 100644 index 000000000..43671f8fa --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/uuid/dist-types/randomUUID.d.ts @@ -0,0 +1,2 @@ +import crypto from "crypto"; +export declare const randomUUID: typeof crypto.randomUUID; diff --git a/food-ordering-app/server/node_modules/@smithy/uuid/dist-types/randomUUID.native.d.ts b/food-ordering-app/server/node_modules/@smithy/uuid/dist-types/randomUUID.native.d.ts new file mode 100644 index 000000000..10921111f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/uuid/dist-types/randomUUID.native.d.ts @@ -0,0 +1 @@ +export declare const randomUUID: false | (() => `${string}-${string}-${string}-${string}-${string}`); diff --git a/food-ordering-app/server/node_modules/@smithy/uuid/dist-types/ts3.4/index.d.ts b/food-ordering-app/server/node_modules/@smithy/uuid/dist-types/ts3.4/index.d.ts new file mode 100644 index 000000000..7d6737831 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/uuid/dist-types/ts3.4/index.d.ts @@ -0,0 +1 @@ +export * from "./v4"; diff --git a/food-ordering-app/server/node_modules/@smithy/uuid/dist-types/ts3.4/randomUUID.browser.d.ts b/food-ordering-app/server/node_modules/@smithy/uuid/dist-types/ts3.4/randomUUID.browser.d.ts new file mode 100644 index 000000000..10921111f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/uuid/dist-types/ts3.4/randomUUID.browser.d.ts @@ -0,0 +1 @@ +export declare const randomUUID: false | (() => `${string}-${string}-${string}-${string}-${string}`); diff --git a/food-ordering-app/server/node_modules/@smithy/uuid/dist-types/ts3.4/randomUUID.d.ts b/food-ordering-app/server/node_modules/@smithy/uuid/dist-types/ts3.4/randomUUID.d.ts new file mode 100644 index 000000000..43671f8fa --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/uuid/dist-types/ts3.4/randomUUID.d.ts @@ -0,0 +1,2 @@ +import crypto from "crypto"; +export declare const randomUUID: typeof crypto.randomUUID; diff --git a/food-ordering-app/server/node_modules/@smithy/uuid/dist-types/ts3.4/randomUUID.native.d.ts b/food-ordering-app/server/node_modules/@smithy/uuid/dist-types/ts3.4/randomUUID.native.d.ts new file mode 100644 index 000000000..10921111f --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/uuid/dist-types/ts3.4/randomUUID.native.d.ts @@ -0,0 +1 @@ +export declare const randomUUID: false | (() => `${string}-${string}-${string}-${string}-${string}`); diff --git a/food-ordering-app/server/node_modules/@smithy/uuid/dist-types/ts3.4/v4.d.ts b/food-ordering-app/server/node_modules/@smithy/uuid/dist-types/ts3.4/v4.d.ts new file mode 100644 index 000000000..bebf33d91 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/uuid/dist-types/ts3.4/v4.d.ts @@ -0,0 +1,19 @@ +/** + * Generates a RFC4122 version 4 UUID + * + * This function generates a random UUID using one of two methods: + * 1. The native randomUUID() function if available + * 2. A fallback implementation using crypto.getRandomValues() + * + * The fallback implementation: + * - Generates 16 random bytes using crypto.getRandomValues() + * - Sets the version bits to indicate version 4 + * - Sets the variant bits to indicate RFC4122 + * - Formats the bytes as a UUID string with dashes + * + * @returns A version 4 UUID string in the format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx + * where x is any hexadecimal digit and y is one of 8, 9, a, or b. + * + * @internal + */ +export declare const v4: () => string; diff --git a/food-ordering-app/server/node_modules/@smithy/uuid/dist-types/v4.d.ts b/food-ordering-app/server/node_modules/@smithy/uuid/dist-types/v4.d.ts new file mode 100644 index 000000000..bebf33d91 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/uuid/dist-types/v4.d.ts @@ -0,0 +1,19 @@ +/** + * Generates a RFC4122 version 4 UUID + * + * This function generates a random UUID using one of two methods: + * 1. The native randomUUID() function if available + * 2. A fallback implementation using crypto.getRandomValues() + * + * The fallback implementation: + * - Generates 16 random bytes using crypto.getRandomValues() + * - Sets the version bits to indicate version 4 + * - Sets the variant bits to indicate RFC4122 + * - Formats the bytes as a UUID string with dashes + * + * @returns A version 4 UUID string in the format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx + * where x is any hexadecimal digit and y is one of 8, 9, a, or b. + * + * @internal + */ +export declare const v4: () => string; diff --git a/food-ordering-app/server/node_modules/@smithy/uuid/package.json b/food-ordering-app/server/node_modules/@smithy/uuid/package.json new file mode 100644 index 000000000..60ab9dc12 --- /dev/null +++ b/food-ordering-app/server/node_modules/@smithy/uuid/package.json @@ -0,0 +1,66 @@ +{ + "name": "@smithy/uuid", + "version": "1.1.2", + "description": "Polyfill for generating UUID v4", + "dependencies": { + "tslib": "^2.6.2" + }, + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline uuid", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/uuid", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/uuid" + }, + "browser": { + "./dist-es/randomUUID": "./dist-es/randomUUID.browser" + }, + "react-native": {}, + "devDependencies": { + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/@types/webidl-conversions/README.md b/food-ordering-app/server/node_modules/@types/webidl-conversions/README.md index cb233f74c..7cd5c9d66 100755 --- a/food-ordering-app/server/node_modules/@types/webidl-conversions/README.md +++ b/food-ordering-app/server/node_modules/@types/webidl-conversions/README.md @@ -8,9 +8,8 @@ This package contains type definitions for webidl-conversions (https://github.co Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/webidl-conversions. ### Additional Details - * Last updated: Fri, 02 Jul 2021 18:05:21 GMT + * Last updated: Tue, 07 Nov 2023 15:11:36 GMT * Dependencies: none - * Global values: none # Credits -These definitions were written by [ExE Boss](https://github.com/ExE-Boss). +These definitions were written by [ExE Boss](https://github.com/ExE-Boss), and [BendingBender](https://github.com/BendingBender). diff --git a/food-ordering-app/server/node_modules/@types/webidl-conversions/index.d.ts b/food-ordering-app/server/node_modules/@types/webidl-conversions/index.d.ts index c3f923fe3..bcf395ab2 100755 --- a/food-ordering-app/server/node_modules/@types/webidl-conversions/index.d.ts +++ b/food-ordering-app/server/node_modules/@types/webidl-conversions/index.d.ts @@ -1,18 +1,10 @@ -// Type definitions for webidl-conversions 6.1 -// Project: https://github.com/jsdom/webidl-conversions#readme -// Definitions by: ExE Boss -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 3.0 - -type Parameters any> = T extends (...args: infer P) => any ? P : never; - declare namespace WebIDLConversions { interface Globals { - [key: string]: any; + [key: string]: unknown; - Number: (value?: any) => number; - String: (value?: any) => string; - TypeError: new (message?: string) => TypeError; + Number: (value?: unknown) => number; + String: (value?: unknown) => string; + TypeError: new(message?: string) => TypeError; } interface Options { @@ -33,70 +25,66 @@ declare namespace WebIDLConversions { allowShared?: boolean | undefined; } - type IntegerConversion = (V: any, opts?: IntegerOptions) => number; - type StringConversion = (V: any, opts?: StringOptions) => string; - type NumberConversion = (V: any, opts?: Options) => number; + type IntegerConversion = (V: unknown, opts?: IntegerOptions) => number; + type StringConversion = (V: unknown, opts?: StringOptions) => string; + type NumberConversion = (V: unknown, opts?: Options) => number; } declare const WebIDLConversions: { any(V: V, opts?: WebIDLConversions.Options): V; - void(V?: any, opts?: WebIDLConversions.Options): void; - boolean(V: any, opts?: WebIDLConversions.Options): boolean; + undefined(V?: unknown, opts?: WebIDLConversions.Options): void; + boolean(V: unknown, opts?: WebIDLConversions.Options): boolean; - byte(V: any, opts?: WebIDLConversions.IntegerOptions): number; - octet(V: any, opts?: WebIDLConversions.IntegerOptions): number; + byte(V: unknown, opts?: WebIDLConversions.IntegerOptions): number; + octet(V: unknown, opts?: WebIDLConversions.IntegerOptions): number; - short(V: any, opts?: WebIDLConversions.IntegerOptions): number; - ['unsigned short'](V: any, opts?: WebIDLConversions.IntegerOptions): number; + short(V: unknown, opts?: WebIDLConversions.IntegerOptions): number; + ["unsigned short"](V: unknown, opts?: WebIDLConversions.IntegerOptions): number; - long(V: any, opts?: WebIDLConversions.IntegerOptions): number; - ['unsigned long'](V: any, opts?: WebIDLConversions.IntegerOptions): number; + long(V: unknown, opts?: WebIDLConversions.IntegerOptions): number; + ["unsigned long"](V: unknown, opts?: WebIDLConversions.IntegerOptions): number; - ['long long'](V: any, opts?: WebIDLConversions.IntegerOptions): number; - ['unsigned long long'](V: any, opts?: WebIDLConversions.IntegerOptions): number; + ["long long"](V: unknown, opts?: WebIDLConversions.IntegerOptions): number; + ["unsigned long long"](V: unknown, opts?: WebIDLConversions.IntegerOptions): number; - double(V: any, opts?: WebIDLConversions.Options): number; - ['unrestricted double'](V: any, opts?: WebIDLConversions.Options): number; + double(V: unknown, opts?: WebIDLConversions.Options): number; + ["unrestricted double"](V: unknown, opts?: WebIDLConversions.Options): number; - float(V: any, opts?: WebIDLConversions.Options): number; - ['unrestricted float'](V: any, opts?: WebIDLConversions.Options): number; + float(V: unknown, opts?: WebIDLConversions.Options): number; + ["unrestricted float"](V: unknown, opts?: WebIDLConversions.Options): number; - DOMString(V: any, opts?: WebIDLConversions.StringOptions): string; - ByteString(V: any, opts?: WebIDLConversions.StringOptions): string; - USVString(V: any, opts?: WebIDLConversions.StringOptions): string; + DOMString(V: unknown, opts?: WebIDLConversions.StringOptions): string; + ByteString(V: unknown, opts?: WebIDLConversions.StringOptions): string; + USVString(V: unknown, opts?: WebIDLConversions.StringOptions): string; object(V: V, opts?: WebIDLConversions.Options): V extends object ? V : V & object; - ArrayBuffer(V: any, opts?: WebIDLConversions.BufferSourceOptions & { allowShared?: false | undefined }): ArrayBuffer; - ArrayBuffer(V: any, opts?: WebIDLConversions.BufferSourceOptions): ArrayBufferLike; - DataView(V: any, opts?: WebIDLConversions.BufferSourceOptions): DataView; - - Int8Array(V: any, opts?: WebIDLConversions.BufferSourceOptions): Int8Array; - Int16Array(V: any, opts?: WebIDLConversions.BufferSourceOptions): Int16Array; - Int32Array(V: any, opts?: WebIDLConversions.BufferSourceOptions): Int32Array; - - Uint8Array(V: any, opts?: WebIDLConversions.BufferSourceOptions): Uint8Array; - Uint16Array(V: any, opts?: WebIDLConversions.BufferSourceOptions): Uint16Array; - Uint32Array(V: any, opts?: WebIDLConversions.BufferSourceOptions): Uint32Array; - Uint8ClampedArray(V: any, opts?: WebIDLConversions.BufferSourceOptions): Uint8ClampedArray; - - Float32Array(V: any, opts?: WebIDLConversions.BufferSourceOptions): Float32Array; - Float64Array(V: any, opts?: WebIDLConversions.BufferSourceOptions): Float64Array; - - ArrayBufferView(V: any, opts?: WebIDLConversions.BufferSourceOptions): ArrayBufferView; - BufferSource(V: any, opts?: WebIDLConversions.BufferSourceOptions & { allowShared?: false | undefined }): ArrayBuffer | ArrayBufferView; - BufferSource(V: any, opts?: WebIDLConversions.BufferSourceOptions): ArrayBufferLike | ArrayBufferView; - - DOMTimeStamp(V: any, opts?: WebIDLConversions.Options): number; - - // tslint:disable:ban-types - /** @deprecated Will be removed in v7.0 */ - Function(V: V, opts?: WebIDLConversions.Options): V extends (...args: any[]) => any ? V : Function; - - /** @deprecated Will be removed in v7.0 */ - VoidFunction( - V: V, - opts?: WebIDLConversions.Options, - ): V extends (...args: any[]) => any ? (...args: Parameters) => void : Function; + ArrayBuffer( + V: unknown, + opts?: WebIDLConversions.BufferSourceOptions & { allowShared?: false | undefined }, + ): ArrayBuffer; + ArrayBuffer(V: unknown, opts?: WebIDLConversions.BufferSourceOptions): ArrayBufferLike; + DataView(V: unknown, opts?: WebIDLConversions.BufferSourceOptions): DataView; + + Int8Array(V: unknown, opts?: WebIDLConversions.BufferSourceOptions): Int8Array; + Int16Array(V: unknown, opts?: WebIDLConversions.BufferSourceOptions): Int16Array; + Int32Array(V: unknown, opts?: WebIDLConversions.BufferSourceOptions): Int32Array; + + Uint8Array(V: unknown, opts?: WebIDLConversions.BufferSourceOptions): Uint8Array; + Uint16Array(V: unknown, opts?: WebIDLConversions.BufferSourceOptions): Uint16Array; + Uint32Array(V: unknown, opts?: WebIDLConversions.BufferSourceOptions): Uint32Array; + Uint8ClampedArray(V: unknown, opts?: WebIDLConversions.BufferSourceOptions): Uint8ClampedArray; + + Float32Array(V: unknown, opts?: WebIDLConversions.BufferSourceOptions): Float32Array; + Float64Array(V: unknown, opts?: WebIDLConversions.BufferSourceOptions): Float64Array; + + ArrayBufferView(V: unknown, opts?: WebIDLConversions.BufferSourceOptions): ArrayBufferView; + BufferSource( + V: unknown, + opts?: WebIDLConversions.BufferSourceOptions & { allowShared?: false | undefined }, + ): ArrayBuffer | ArrayBufferView; + BufferSource(V: unknown, opts?: WebIDLConversions.BufferSourceOptions): ArrayBufferLike | ArrayBufferView; + + DOMTimeStamp(V: unknown, opts?: WebIDLConversions.Options): number; }; // This can't use ES6 style exports, as those can't have spaces in export names. diff --git a/food-ordering-app/server/node_modules/@types/webidl-conversions/package.json b/food-ordering-app/server/node_modules/@types/webidl-conversions/package.json index 4391aff6d..21fdb9586 100755 --- a/food-ordering-app/server/node_modules/@types/webidl-conversions/package.json +++ b/food-ordering-app/server/node_modules/@types/webidl-conversions/package.json @@ -1,14 +1,19 @@ { "name": "@types/webidl-conversions", - "version": "6.1.1", + "version": "7.0.3", "description": "TypeScript definitions for webidl-conversions", "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/webidl-conversions", "license": "MIT", "contributors": [ { "name": "ExE Boss", - "url": "https://github.com/ExE-Boss", - "githubUsername": "ExE-Boss" + "githubUsername": "ExE-Boss", + "url": "https://github.com/ExE-Boss" + }, + { + "name": "BendingBender", + "githubUsername": "BendingBender", + "url": "https://github.com/BendingBender" } ], "main": "", @@ -20,6 +25,6 @@ }, "scripts": {}, "dependencies": {}, - "typesPublisherContentHash": "bc47f919faf031afa91cea9b170f96f05eeac452057ba17794386552a99d0ad7", - "typeScriptVersion": "3.6" + "typesPublisherContentHash": "ff1514e10869784e8b7cca9c4099a4213d3f14b48c198b1bf116300df94bf608", + "typeScriptVersion": "4.5" } \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/body-parser/HISTORY.md b/food-ordering-app/server/node_modules/body-parser/HISTORY.md index e114f6af2..c9b0b5b90 100644 --- a/food-ordering-app/server/node_modules/body-parser/HISTORY.md +++ b/food-ordering-app/server/node_modules/body-parser/HISTORY.md @@ -1,3 +1,32 @@ +1.20.4 / 2025-12-01 +=================== + + * deps: qs@~6.14.0 + * deps: use tilde notation for dependencies + * deps: http-errors@~2.0.1 + * deps: raw-body@~2.5.3 + +1.20.3 / 2024-09-10 +=================== + + * deps: qs@6.13.0 + * add `depth` option to customize the depth level in the parser + * IMPORTANT: The default `depth` level for parsing URL-encoded data is now `32` (previously was `Infinity`) + +1.20.2 / 2023-02-21 +=================== + + * Fix strict json error message on Node.js 19+ + * deps: content-type@~1.0.5 + - perf: skip value escaping when unnecessary + * deps: raw-body@2.5.2 + +1.20.1 / 2022-10-06 +=================== + + * deps: qs@6.11.0 + * perf: remove unnecessary object clone + 1.20.0 / 2022-04-02 =================== diff --git a/food-ordering-app/server/node_modules/body-parser/README.md b/food-ordering-app/server/node_modules/body-parser/README.md index 1149aff57..f6661b7d3 100644 --- a/food-ordering-app/server/node_modules/body-parser/README.md +++ b/food-ordering-app/server/node_modules/body-parser/README.md @@ -1,9 +1,10 @@ # body-parser -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Build Status][github-actions-ci-image]][github-actions-ci-url] +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![Build Status][ci-image]][ci-url] [![Test Coverage][coveralls-image]][coveralls-url] +[![OpenSSF Scorecard Badge][ossf-scorecard-badge]][ossf-scorecard-visualizer] Node.js body parsing middleware. @@ -277,6 +278,10 @@ The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)` where `buf` is a `Buffer` of the raw request body and `encoding` is the encoding of the request. The parsing can be aborted by throwing an error. +#### depth + +The `depth` option is used to configure the maximum depth of the `qs` library when `extended` is `true`. This allows you to limit the amount of keys that are parsed and can be useful to prevent certain types of abuse. Defaults to `32`. It is recommended to keep this value as low as possible. + ## Errors The middlewares provided by this module create errors using the @@ -346,7 +351,7 @@ call `req.setEncoding` when using this module. The `status` property is set to This error will occur when the request is no longer readable when this middleware attempts to read it. This typically means something other than a middleware from -this module read the reqest body already and the middleware was also configured to +this module read the request body already and the middleware was also configured to read the same request. The `status` property is set to `500` and the `type` property is set to `'stream.not.readable'`. @@ -373,6 +378,10 @@ as well as in the `encoding` property. The `status` property is set to `415`, the `type` property is set to `'encoding.unsupported'`, and the `encoding` property is set to the encoding that is unsupported. +### The input exceeded the depth + +This error occurs when using `bodyParser.urlencoded` with the `extended` property set to `true` and the input exceeds the configured `depth` option. The `status` property is set to `400`. It is recommended to review the `depth` option and evaluate if it requires a higher value. When the `depth` option is set to `32` (default value), the error will not be thrown. + ## Examples ### Express/Connect top-level generic @@ -454,11 +463,14 @@ app.use(bodyParser.text({ type: 'text/html' })) [MIT](LICENSE) -[npm-image]: https://img.shields.io/npm/v/body-parser.svg -[npm-url]: https://npmjs.org/package/body-parser -[coveralls-image]: https://img.shields.io/coveralls/expressjs/body-parser/master.svg +[ci-image]: https://badgen.net/github/checks/expressjs/body-parser/master?label=ci +[ci-url]: https://github.com/expressjs/body-parser/actions/workflows/ci.yml +[coveralls-image]: https://badgen.net/coveralls/c/github/expressjs/body-parser/master [coveralls-url]: https://coveralls.io/r/expressjs/body-parser?branch=master -[downloads-image]: https://img.shields.io/npm/dm/body-parser.svg -[downloads-url]: https://npmjs.org/package/body-parser -[github-actions-ci-image]: https://img.shields.io/github/workflow/status/expressjs/body-parser/ci/master?label=ci -[github-actions-ci-url]: https://github.com/expressjs/body-parser/actions/workflows/ci.yml +[node-version-image]: https://badgen.net/npm/node/body-parser +[node-version-url]: https://nodejs.org/en/download +[npm-downloads-image]: https://badgen.net/npm/dm/body-parser +[npm-url]: https://npmjs.org/package/body-parser +[npm-version-image]: https://badgen.net/npm/v/body-parser +[ossf-scorecard-badge]: https://api.scorecard.dev/projects/github.com/expressjs/body-parser/badge +[ossf-scorecard-visualizer]: https://ossf.github.io/scorecard-visualizer/#/projects/github.com/expressjs/body-parser \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/body-parser/SECURITY.md b/food-ordering-app/server/node_modules/body-parser/SECURITY.md deleted file mode 100644 index 9694d4296..000000000 --- a/food-ordering-app/server/node_modules/body-parser/SECURITY.md +++ /dev/null @@ -1,25 +0,0 @@ -# Security Policies and Procedures - -## Reporting a Bug - -The Express team and community take all security bugs seriously. Thank you -for improving the security of Express. We appreciate your efforts and -responsible disclosure and will make every effort to acknowledge your -contributions. - -Report security bugs by emailing the current owner(s) of `body-parser`. This -information can be found in the npm registry using the command -`npm owner ls body-parser`. -If unsure or unable to get the information from the above, open an issue -in the [project issue tracker](https://github.com/expressjs/body-parser/issues) -asking for the current contact information. - -To ensure the timely response to your report, please ensure that the entirety -of the report is contained within the email body and not solely behind a web -link or an attachment. - -At least one owner will acknowledge your email within 48 hours, and will send a -more detailed response within 48 hours indicating the next steps in handling -your report. After the initial reply to your report, the owners will -endeavor to keep you informed of the progress towards a fix and full -announcement, and may ask for additional information or guidance. diff --git a/food-ordering-app/server/node_modules/body-parser/index.js b/food-ordering-app/server/node_modules/body-parser/index.js index 93c3a1fff..bb24d739d 100644 --- a/food-ordering-app/server/node_modules/body-parser/index.js +++ b/food-ordering-app/server/node_modules/body-parser/index.js @@ -91,16 +91,15 @@ Object.defineProperty(exports, 'urlencoded', { */ function bodyParser (options) { - var opts = {} - - // exclude type option - if (options) { - for (var prop in options) { - if (prop !== 'type') { - opts[prop] = options[prop] - } + // use default type for parsers + var opts = Object.create(options || null, { + type: { + configurable: true, + enumerable: true, + value: undefined, + writable: true } - } + }) var _urlencoded = exports.urlencoded(opts) var _json = exports.json(opts) diff --git a/food-ordering-app/server/node_modules/body-parser/lib/types/json.js b/food-ordering-app/server/node_modules/body-parser/lib/types/json.js index c2745be3a..59f3f7e28 100644 --- a/food-ordering-app/server/node_modules/body-parser/lib/types/json.js +++ b/food-ordering-app/server/node_modules/body-parser/lib/types/json.js @@ -39,6 +39,9 @@ module.exports = json var FIRST_CHAR_REGEXP = /^[\x20\x09\x0a\x0d]*([^\x20\x09\x0a\x0d])/ // eslint-disable-line no-control-regex +var JSON_SYNTAX_CHAR = '#' +var JSON_SYNTAX_REGEXP = /#+/g + /** * Create a middleware to parse JSON bodies. * @@ -152,15 +155,23 @@ function json (options) { function createStrictSyntaxError (str, char) { var index = str.indexOf(char) - var partial = index !== -1 - ? str.substring(0, index) + '#' - : '' + var partial = '' + + if (index !== -1) { + partial = str.substring(0, index) + JSON_SYNTAX_CHAR + + for (var i = index + 1; i < str.length; i++) { + partial += JSON_SYNTAX_CHAR + } + } try { JSON.parse(partial); /* istanbul ignore next */ throw new SyntaxError('strict violation') } catch (e) { return normalizeJsonSyntaxError(e, { - message: e.message.replace('#', char), + message: e.message.replace(JSON_SYNTAX_REGEXP, function (placeholder) { + return str.substring(index, index + placeholder.length) + }), stack: e.stack }) } diff --git a/food-ordering-app/server/node_modules/body-parser/lib/types/urlencoded.js b/food-ordering-app/server/node_modules/body-parser/lib/types/urlencoded.js index b2ca8f16d..832992c2c 100644 --- a/food-ordering-app/server/node_modules/body-parser/lib/types/urlencoded.js +++ b/food-ordering-app/server/node_modules/body-parser/lib/types/urlencoded.js @@ -133,12 +133,17 @@ function extendedparser (options) { var parameterLimit = options.parameterLimit !== undefined ? options.parameterLimit : 1000 + var depth = options.depth !== undefined ? options.depth : 32 var parse = parser('qs') if (isNaN(parameterLimit) || parameterLimit < 1) { throw new TypeError('option parameterLimit must be a positive number') } + if (isNaN(depth) || depth < 0) { + throw new TypeError('option depth must be a zero or a positive number') + } + if (isFinite(parameterLimit)) { parameterLimit = parameterLimit | 0 } @@ -156,12 +161,23 @@ function extendedparser (options) { var arrayLimit = Math.max(100, paramCount) debug('parse extended urlencoding') - return parse(body, { - allowPrototypes: true, - arrayLimit: arrayLimit, - depth: Infinity, - parameterLimit: parameterLimit - }) + try { + return parse(body, { + allowPrototypes: true, + arrayLimit: arrayLimit, + depth: depth, + strictDepth: true, + parameterLimit: parameterLimit + }) + } catch (err) { + if (err instanceof RangeError) { + throw createError(400, 'The input exceeded the depth', { + type: 'querystring.parse.rangeError' + }) + } else { + throw err + } + } } } diff --git a/food-ordering-app/server/node_modules/body-parser/package.json b/food-ordering-app/server/node_modules/body-parser/package.json index 9a03357f9..c8e61c19f 100644 --- a/food-ordering-app/server/node_modules/body-parser/package.json +++ b/food-ordering-app/server/node_modules/body-parser/package.json @@ -1,7 +1,7 @@ { "name": "body-parser", "description": "Node.js body parsing middleware", - "version": "1.20.0", + "version": "1.20.4", "contributors": [ "Douglas Christopher Wilson ", "Jonathan Ong (http://jongleberry.com)" @@ -9,38 +9,37 @@ "license": "MIT", "repository": "expressjs/body-parser", "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", + "bytes": "~3.1.2", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.10.3", - "raw-body": "2.5.1", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", "type-is": "~1.6.18", - "unpipe": "1.0.0" + "unpipe": "~1.0.0" }, "devDependencies": { - "eslint": "7.32.0", + "eslint": "8.34.0", "eslint-config-standard": "14.1.1", - "eslint-plugin-import": "2.25.4", - "eslint-plugin-markdown": "2.2.1", + "eslint-plugin-import": "2.27.5", + "eslint-plugin-markdown": "3.0.0", "eslint-plugin-node": "11.1.0", - "eslint-plugin-promise": "5.2.0", + "eslint-plugin-promise": "6.1.1", "eslint-plugin-standard": "4.1.0", "methods": "1.1.2", - "mocha": "9.2.2", + "mocha": "10.2.0", "nyc": "15.1.0", "safe-buffer": "5.2.1", - "supertest": "6.2.2" + "supertest": "6.3.3" }, "files": [ "lib/", "LICENSE", "HISTORY.md", - "SECURITY.md", "index.js" ], "engines": { diff --git a/food-ordering-app/server/node_modules/bowser/LICENSE b/food-ordering-app/server/node_modules/bowser/LICENSE new file mode 100644 index 000000000..94085f02b --- /dev/null +++ b/food-ordering-app/server/node_modules/bowser/LICENSE @@ -0,0 +1,39 @@ +Copyright 2015, Dustin Diaz (the "Original Author") +All rights reserved. + +MIT License + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +Distributions of all or part of the Software intended to be used +by the recipients as they would use the unmodified Software, +containing modifications that substantially alter, remove, or +disable functionality of the Software, outside of the documented +configuration mechanisms provided by the Software, shall be +modified such that the Original Author's bug reporting email +addresses and urls are either replaced with the contact information +of the parties responsible for the changes, or removed entirely. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + + +Except where noted, this license applies to any and all software +programs and associated documentation files created by the +Original Author, when distributed with the Software. diff --git a/food-ordering-app/server/node_modules/bowser/README.md b/food-ordering-app/server/node_modules/bowser/README.md new file mode 100644 index 000000000..96fbb60a9 --- /dev/null +++ b/food-ordering-app/server/node_modules/bowser/README.md @@ -0,0 +1,246 @@ +## Bowser +A small, fast and rich-API browser/platform/engine detector for both browser and node. +- **Small.** Use plain ES5-version which is ~4.8kB gzipped. +- **Optimized.** Use only those parsers you need — it doesn't do useless work. +- **Multi-platform.** It's browser- and node-ready, so you can use it in any environment. + +Don't hesitate to support the project on Github or [OpenCollective](https://opencollective.com/bowser) if you like it ❤️ Also, contributors are always welcome! + +[![Financial Contributors on Open Collective](https://opencollective.com/bowser/all/badge.svg?label=financial+contributors)](https://opencollective.com/bowser) ![Downloads](https://img.shields.io/npm/dm/bowser) + +# Contents +- [Overview](#overview) +- [Use cases](#use-cases) + - [Browser props detection](#browser-props-detection) + - [Using User-Agent Client Hints](#using-user-agent-client-hints) + - [Filtering browsers](#filtering-browsers) + +# Overview + +The library is made to help to detect what browser your user has and gives you a convenient API to filter the users somehow depending on their browsers. Check it out on this page: https://bowser-js.github.io/bowser-online/. + +### ⚠️ Version 2.0 breaking changes ⚠️ + +Version 2.0 has drastically changed the API. All available methods are on the [docs page](https://bowser-js.github.io/bowser/docs/). + +_For legacy code, check out the [1.x](https://github.com/bowser-js/bowser/tree/v1.x) branch and install it through `npm install bowser@1.9.4`._ + +# Use cases + +First of all, require the library. This is a UMD Module, so it will work for AMD, TypeScript, ES6, and CommonJS module systems. + +```javascript +const Bowser = require("bowser"); // CommonJS + +import * as Bowser from "bowser"; // TypeScript + +import Bowser from "bowser"; // ES6 (and TypeScript with --esModuleInterop enabled) +``` + +By default, the exported version is the *ES5 transpiled version*, which **do not** include any polyfills. + +In case you don't use your own `babel-polyfill` you may need to have pre-built bundle with all needed polyfills. +So, for you it's suitable to require bowser like this: `require('bowser/bundled')`. +As the result, you get a ES5 version of bowser with `babel-polyfill` bundled together. + +You may need to use the source files, so they will be available in the package as well. + +## Browser props detection + +Often we need to pick users' browser properties such as the name, the version, the rendering engine and so on. Here is an example how to do it with Bowser: + +```javascript +const browser = Bowser.getParser(window.navigator.userAgent); + +console.log(`The current browser name is "${browser.getBrowserName()}"`); +// The current browser name is "Internet Explorer" +``` + +### Using User-Agent Client Hints + +Modern browsers support [User-Agent Client Hints](https://developer.mozilla.org/en-US/docs/Web/API/User-Agent_Client_Hints_API), which provide a more privacy-friendly and structured way to access browser information. Bowser can use Client Hints data to improve browser detection accuracy. + +```javascript +// Pass Client Hints as the second parameter +const browser = Bowser.getParser( + window.navigator.userAgent, + window.navigator.userAgentData +); + +console.log(`The current browser name is "${browser.getBrowserName()}"`); +// More accurate detection using Client Hints +``` + +#### Working with Client Hints + +Bowser provides methods to access and query Client Hints data: + +```javascript +const browser = Bowser.getParser( + window.navigator.userAgent, + window.navigator.userAgentData +); + +// Get the full Client Hints object +const hints = browser.getHints(); +// Returns the ClientHints object or null if not provided + +// Check if a specific brand exists +if (browser.hasBrand('Google Chrome')) { + console.log('This is Chrome!'); +} + +// Get the version of a specific brand +const chromeVersion = browser.getBrandVersion('Google Chrome'); +console.log(`Chrome version: ${chromeVersion}`); +``` + +The Client Hints object structure: +```javascript +{ + brands: [ + { brand: 'Google Chrome', version: '131' }, + { brand: 'Chromium', version: '131' }, + { brand: 'Not_A Brand', version: '24' } + ], + mobile: false, + platform: 'Windows', + platformVersion: '15.0.0', + architecture: 'x86', + model: '', + wow64: false +} +``` + +**Note:** Client Hints improve detection for browsers like DuckDuckGo and other Chromium-based browsers that may have similar User-Agent strings. When Client Hints are not provided, Bowser falls back to standard User-Agent string parsing. + +or + +```javascript +const browser = Bowser.getParser(window.navigator.userAgent); +console.log(browser.getBrowser()); + +// outputs +{ + name: "Internet Explorer" + version: "11.0" +} +``` + +or + +```javascript +console.log(Bowser.parse(window.navigator.userAgent)); + +// outputs +{ + browser: { + name: "Internet Explorer" + version: "11.0" + }, + os: { + name: "Windows" + version: "NT 6.3" + versionName: "8.1" + }, + platform: { + type: "desktop" + }, + engine: { + name: "Trident" + version: "7.0" + } +} +``` + +You can also use `Bowser.parse()` with Client Hints: + +```javascript +console.log(Bowser.parse(window.navigator.userAgent, window.navigator.userAgentData)); + +// Same output structure, but with enhanced detection from Client Hints +``` + + +## Filtering browsers + +You could want to filter some particular browsers to provide any special support for them or make any workarounds. +It could look like this: + +```javascript +const browser = Bowser.getParser(window.navigator.userAgent); +const isValidBrowser = browser.satisfies({ + // declare browsers per OS + windows: { + "internet explorer": ">10", + }, + macos: { + safari: ">10.1" + }, + + // per platform (mobile, desktop or tablet) + mobile: { + safari: '>=9', + 'android browser': '>3.10' + }, + + // or in general + chrome: "~20.1.1432", + firefox: ">31", + opera: ">=22", + + // also supports equality operator + chrome: "=20.1.1432", // will match particular build only + + // and loose-equality operator + chrome: "~20", // will match any 20.* sub-version + chrome: "~20.1" // will match any 20.1.* sub-version (20.1.19 as well as 20.1.12.42-alpha.1) +}); +``` + +Settings for any particular OS or platform has more priority and redefines settings of standalone browsers. +Thus, you can define OS or platform specific rules and they will have more priority in the end. + +More of API and possibilities you will find in the `docs` folder. + +### Browser names for `.satisfies()` + +By default you are supposed to use the full browser name for `.satisfies`. +But, there's a short way to define a browser using short aliases. The full +list of aliases can be found in [the file](src/constants.js). + +## Similar Projects +* [Kong](https://github.com/BigBadBleuCheese/Kong) - A C# port of Bowser. + +## Contributors + +### Code Contributors + +This project exists thanks to all the people who contribute. [[Contribute](.github/CONTRIBUTING.md)]. + + +### Financial Contributors + +Become a financial contributor and help us sustain our community. [[Contribute](https://opencollective.com/bowser/contribute)] + +#### Individuals + + + +#### Organizations + +Support this project with your organization. Your logo will show up here with a link to your website. [[Contribute](https://opencollective.com/bowser/contribute)] + + + + + + + + + + + + +## License +Licensed as MIT. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE file for more details. diff --git a/food-ordering-app/server/node_modules/bowser/bundled.js b/food-ordering-app/server/node_modules/bowser/bundled.js new file mode 100644 index 000000000..e9dd0cd99 --- /dev/null +++ b/food-ordering-app/server/node_modules/bowser/bundled.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.bowser=e():t.bowser=e()}(this,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=129)}([function(t,e,n){var r=n(1),i=n(7),o=n(14),u=n(11),a=n(19),c=function(t,e,n){var s,f,l,d,h=t&c.F,v=t&c.G,p=t&c.S,g=t&c.P,y=t&c.B,b=v?r:p?r[e]||(r[e]={}):(r[e]||{}).prototype,m=v?i:i[e]||(i[e]={}),M=m.prototype||(m.prototype={});for(s in v&&(n=e),n)l=((f=!h&&b&&void 0!==b[s])?b:n)[s],d=y&&f?a(l,r):g&&"function"==typeof l?a(Function.call,l):l,b&&u(b,s,l,t&c.U),m[s]!=l&&o(m,s,d),g&&M[s]!=l&&(M[s]=l)};r.core=i,c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var r=n(4);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,n){var r=n(50)("wks"),i=n(31),o=n(1).Symbol,u="function"==typeof o;(t.exports=function(t){return r[t]||(r[t]=u&&o[t]||(u?o:i)("Symbol."+t))}).store=r},function(t,e,n){var r=n(21),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},function(t,e){var n=t.exports={version:"2.6.9"};"number"==typeof __e&&(__e=n)},function(t,e,n){t.exports=!n(2)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(t,e,n){var r=n(3),i=n(96),o=n(28),u=Object.defineProperty;e.f=n(8)?Object.defineProperty:function(t,e,n){if(r(t),e=o(e,!0),r(n),i)try{return u(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},function(t,e,n){var r=n(26);t.exports=function(t){return Object(r(t))}},function(t,e,n){var r=n(1),i=n(14),o=n(13),u=n(31)("src"),a=n(134),c=(""+a).split("toString");n(7).inspectSource=function(t){return a.call(t)},(t.exports=function(t,e,n,a){var s="function"==typeof n;s&&(o(n,"name")||i(n,"name",e)),t[e]!==n&&(s&&(o(n,u)||i(n,u,t[e]?""+t[e]:c.join(String(e)))),t===r?t[e]=n:a?t[e]?t[e]=n:i(t,e,n):(delete t[e],i(t,e,n)))})(Function.prototype,"toString",(function(){return"function"==typeof this&&this[u]||a.call(this)}))},function(t,e,n){var r=n(0),i=n(2),o=n(26),u=/"/g,a=function(t,e,n,r){var i=String(o(t)),a="<"+e;return""!==n&&(a+=" "+n+'="'+String(r).replace(u,""")+'"'),a+">"+i+""};t.exports=function(t,e){var n={};n[t]=e(a),r(r.P+r.F*i((function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3})),"String",n)}},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){var r=n(9),i=n(30);t.exports=n(8)?function(t,e,n){return r.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var r=n(46),i=n(26);t.exports=function(t){return r(i(t))}},function(t,e,n){"use strict";var r=n(2);t.exports=function(t,e){return!!t&&r((function(){e?t.call(null,(function(){}),1):t.call(null)}))}},function(t,e,n){"use strict";e.__esModule=!0,e.default=void 0;var r=n(18),i=function(){function t(){}return t.getFirstMatch=function(t,e){var n=e.match(t);return n&&n.length>0&&n[1]||""},t.getSecondMatch=function(t,e){var n=e.match(t);return n&&n.length>1&&n[2]||""},t.matchAndReturnConst=function(t,e,n){if(t.test(e))return n},t.getWindowsVersionName=function(t){switch(t){case"NT":return"NT";case"XP":return"XP";case"NT 5.0":return"2000";case"NT 5.1":return"XP";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}},t.getMacOSVersionName=function(t){var e=t.split(".").splice(0,2).map((function(t){return parseInt(t,10)||0}));e.push(0);var n=e[0],r=e[1];if(10===n)switch(r){case 5:return"Leopard";case 6:return"Snow Leopard";case 7:return"Lion";case 8:return"Mountain Lion";case 9:return"Mavericks";case 10:return"Yosemite";case 11:return"El Capitan";case 12:return"Sierra";case 13:return"High Sierra";case 14:return"Mojave";case 15:return"Catalina";default:return}switch(n){case 11:return"Big Sur";case 12:return"Monterey";case 13:return"Ventura";case 14:return"Sonoma";case 15:return"Sequoia";default:return}},t.getAndroidVersionName=function(t){var e=t.split(".").splice(0,2).map((function(t){return parseInt(t,10)||0}));if(e.push(0),!(1===e[0]&&e[1]<5))return 1===e[0]&&e[1]<6?"Cupcake":1===e[0]&&e[1]>=6?"Donut":2===e[0]&&e[1]<2?"Eclair":2===e[0]&&2===e[1]?"Froyo":2===e[0]&&e[1]>2?"Gingerbread":3===e[0]?"Honeycomb":4===e[0]&&e[1]<1?"Ice Cream Sandwich":4===e[0]&&e[1]<4?"Jelly Bean":4===e[0]&&e[1]>=4?"KitKat":5===e[0]?"Lollipop":6===e[0]?"Marshmallow":7===e[0]?"Nougat":8===e[0]?"Oreo":9===e[0]?"Pie":void 0},t.getVersionPrecision=function(t){return t.split(".").length},t.compareVersions=function(e,n,r){void 0===r&&(r=!1);var i=t.getVersionPrecision(e),o=t.getVersionPrecision(n),u=Math.max(i,o),a=0,c=t.map([e,n],(function(e){var n=u-t.getVersionPrecision(e),r=e+new Array(n+1).join(".0");return t.map(r.split("."),(function(t){return new Array(20-t.length).join("0")+t})).reverse()}));for(r&&(a=u-Math.min(i,o)),u-=1;u>=a;){if(c[0][u]>c[1][u])return 1;if(c[0][u]===c[1][u]){if(u===a)return 0;u-=1}else if(c[0][u]1?i-1:0),u=1;u0?r:n)(t)}},function(t,e,n){var r=n(47),i=n(30),o=n(15),u=n(28),a=n(13),c=n(96),s=Object.getOwnPropertyDescriptor;e.f=n(8)?s:function(t,e){if(t=o(t),e=u(e,!0),c)try{return s(t,e)}catch(t){}if(a(t,e))return i(!r.f.call(t,e),t[e])}},function(t,e,n){var r=n(0),i=n(7),o=n(2);t.exports=function(t,e){var n=(i.Object||{})[t]||Object[t],u={};u[t]=e(n),r(r.S+r.F*o((function(){n(1)})),"Object",u)}},function(t,e,n){var r=n(19),i=n(46),o=n(10),u=n(6),a=n(112);t.exports=function(t,e){var n=1==t,c=2==t,s=3==t,f=4==t,l=6==t,d=5==t||l,h=e||a;return function(e,a,v){for(var p,g,y=o(e),b=i(y),m=r(a,v,3),M=u(b.length),S=0,w=n?h(e,M):c?h(e,0):void 0;M>S;S++)if((d||S in b)&&(g=m(p=b[S],S,y),t))if(n)w[S]=g;else if(g)switch(t){case 3:return!0;case 5:return p;case 6:return S;case 2:w.push(p)}else if(f)return!1;return l?-1:s||f?f:w}}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,n){"use strict";if(n(8)){var r=n(32),i=n(1),o=n(2),u=n(0),a=n(61),c=n(86),s=n(19),f=n(44),l=n(30),d=n(14),h=n(45),v=n(21),p=n(6),g=n(123),y=n(34),b=n(28),m=n(13),M=n(48),S=n(4),w=n(10),x=n(78),_=n(35),P=n(37),A=n(36).f,F=n(80),O=n(31),E=n(5),k=n(24),R=n(51),T=n(49),L=n(82),B=n(42),N=n(54),I=n(43),j=n(81),C=n(114),W=n(9),D=n(22),G=W.f,V=D.f,z=i.RangeError,U=i.TypeError,q=i.Uint8Array,Y=Array.prototype,H=c.ArrayBuffer,K=c.DataView,Q=k(0),J=k(2),X=k(3),$=k(4),Z=k(5),tt=k(6),et=R(!0),nt=R(!1),rt=L.values,it=L.keys,ot=L.entries,ut=Y.lastIndexOf,at=Y.reduce,ct=Y.reduceRight,st=Y.join,ft=Y.sort,lt=Y.slice,dt=Y.toString,ht=Y.toLocaleString,vt=E("iterator"),pt=E("toStringTag"),gt=O("typed_constructor"),yt=O("def_constructor"),bt=a.CONSTR,mt=a.TYPED,Mt=a.VIEW,St=k(1,(function(t,e){return At(T(t,t[yt]),e)})),wt=o((function(){return 1===new q(new Uint16Array([1]).buffer)[0]})),xt=!!q&&!!q.prototype.set&&o((function(){new q(1).set({})})),_t=function(t,e){var n=v(t);if(n<0||n%e)throw z("Wrong offset!");return n},Pt=function(t){if(S(t)&&mt in t)return t;throw U(t+" is not a typed array!")},At=function(t,e){if(!(S(t)&> in t))throw U("It is not a typed array constructor!");return new t(e)},Ft=function(t,e){return Ot(T(t,t[yt]),e)},Ot=function(t,e){for(var n=0,r=e.length,i=At(t,r);r>n;)i[n]=e[n++];return i},Et=function(t,e,n){G(t,e,{get:function(){return this._d[n]}})},kt=function(t){var e,n,r,i,o,u,a=w(t),c=arguments.length,f=c>1?arguments[1]:void 0,l=void 0!==f,d=F(a);if(null!=d&&!x(d)){for(u=d.call(a),r=[],e=0;!(o=u.next()).done;e++)r.push(o.value);a=r}for(l&&c>2&&(f=s(f,arguments[2],2)),e=0,n=p(a.length),i=At(this,n);n>e;e++)i[e]=l?f(a[e],e):a[e];return i},Rt=function(){for(var t=0,e=arguments.length,n=At(this,e);e>t;)n[t]=arguments[t++];return n},Tt=!!q&&o((function(){ht.call(new q(1))})),Lt=function(){return ht.apply(Tt?lt.call(Pt(this)):Pt(this),arguments)},Bt={copyWithin:function(t,e){return C.call(Pt(this),t,e,arguments.length>2?arguments[2]:void 0)},every:function(t){return $(Pt(this),t,arguments.length>1?arguments[1]:void 0)},fill:function(t){return j.apply(Pt(this),arguments)},filter:function(t){return Ft(this,J(Pt(this),t,arguments.length>1?arguments[1]:void 0))},find:function(t){return Z(Pt(this),t,arguments.length>1?arguments[1]:void 0)},findIndex:function(t){return tt(Pt(this),t,arguments.length>1?arguments[1]:void 0)},forEach:function(t){Q(Pt(this),t,arguments.length>1?arguments[1]:void 0)},indexOf:function(t){return nt(Pt(this),t,arguments.length>1?arguments[1]:void 0)},includes:function(t){return et(Pt(this),t,arguments.length>1?arguments[1]:void 0)},join:function(t){return st.apply(Pt(this),arguments)},lastIndexOf:function(t){return ut.apply(Pt(this),arguments)},map:function(t){return St(Pt(this),t,arguments.length>1?arguments[1]:void 0)},reduce:function(t){return at.apply(Pt(this),arguments)},reduceRight:function(t){return ct.apply(Pt(this),arguments)},reverse:function(){for(var t,e=Pt(this).length,n=Math.floor(e/2),r=0;r1?arguments[1]:void 0)},sort:function(t){return ft.call(Pt(this),t)},subarray:function(t,e){var n=Pt(this),r=n.length,i=y(t,r);return new(T(n,n[yt]))(n.buffer,n.byteOffset+i*n.BYTES_PER_ELEMENT,p((void 0===e?r:y(e,r))-i))}},Nt=function(t,e){return Ft(this,lt.call(Pt(this),t,e))},It=function(t){Pt(this);var e=_t(arguments[1],1),n=this.length,r=w(t),i=p(r.length),o=0;if(i+e>n)throw z("Wrong length!");for(;o255?255:255&r),i.v[h](n*e+i.o,r,wt)}(this,n,t)},enumerable:!0})};m?(v=n((function(t,n,r,i){f(t,v,s,"_d");var o,u,a,c,l=0,h=0;if(S(n)){if(!(n instanceof H||"ArrayBuffer"==(c=M(n))||"SharedArrayBuffer"==c))return mt in n?Ot(v,n):kt.call(v,n);o=n,h=_t(r,e);var y=n.byteLength;if(void 0===i){if(y%e)throw z("Wrong length!");if((u=y-h)<0)throw z("Wrong length!")}else if((u=p(i)*e)+h>y)throw z("Wrong length!");a=u/e}else a=g(n),o=new H(u=a*e);for(d(t,"_d",{b:o,o:h,l:u,e:a,v:new K(o)});ldocument.F=Object<\/script>"),t.close(),c=t.F;r--;)delete c.prototype[o[r]];return c()};t.exports=Object.create||function(t,e){var n;return null!==t?(a.prototype=r(t),n=new a,a.prototype=null,n[u]=t):n=c(),void 0===e?n:i(n,e)}},function(t,e,n){var r=n(98),i=n(65).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,i)}},function(t,e,n){var r=n(13),i=n(10),o=n(64)("IE_PROTO"),u=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=i(t),r(t,o)?t[o]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?u:null}},function(t,e,n){var r=n(5)("unscopables"),i=Array.prototype;null==i[r]&&n(14)(i,r,{}),t.exports=function(t){i[r][t]=!0}},function(t,e,n){var r=n(4);t.exports=function(t,e){if(!r(t)||t._t!==e)throw TypeError("Incompatible receiver, "+e+" required!");return t}},function(t,e,n){var r=n(9).f,i=n(13),o=n(5)("toStringTag");t.exports=function(t,e,n){t&&!i(t=n?t:t.prototype,o)&&r(t,o,{configurable:!0,value:e})}},function(t,e,n){var r=n(0),i=n(26),o=n(2),u=n(68),a="["+u+"]",c=RegExp("^"+a+a+"*"),s=RegExp(a+a+"*$"),f=function(t,e,n){var i={},a=o((function(){return!!u[t]()||"​…"!="​…"[t]()})),c=i[t]=a?e(l):u[t];n&&(i[n]=c),r(r.P+r.F*a,"String",i)},l=f.trim=function(t,e){return t=String(i(t)),1&e&&(t=t.replace(c,"")),2&e&&(t=t.replace(s,"")),t};t.exports=f},function(t,e){t.exports={}},function(t,e,n){"use strict";var r=n(1),i=n(9),o=n(8),u=n(5)("species");t.exports=function(t){var e=r[t];o&&e&&!e[u]&&i.f(e,u,{configurable:!0,get:function(){return this}})}},function(t,e){t.exports=function(t,e,n,r){if(!(t instanceof e)||void 0!==r&&r in t)throw TypeError(n+": incorrect invocation!");return t}},function(t,e,n){var r=n(11);t.exports=function(t,e,n){for(var i in e)r(t,i,e[i],n);return t}},function(t,e,n){var r=n(25);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},function(t,e){e.f={}.propertyIsEnumerable},function(t,e,n){var r=n(25),i=n(5)("toStringTag"),o="Arguments"==r(function(){return arguments}());t.exports=function(t){var e,n,u;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),i))?n:o?r(e):"Object"==(u=r(e))&&"function"==typeof e.callee?"Arguments":u}},function(t,e,n){var r=n(3),i=n(20),o=n(5)("species");t.exports=function(t,e){var n,u=r(t).constructor;return void 0===u||null==(n=r(u)[o])?e:i(n)}},function(t,e,n){var r=n(7),i=n(1),o=i["__core-js_shared__"]||(i["__core-js_shared__"]={});(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:r.version,mode:n(32)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(t,e,n){var r=n(15),i=n(6),o=n(34);t.exports=function(t){return function(e,n,u){var a,c=r(e),s=i(c.length),f=o(u,s);if(t&&n!=n){for(;s>f;)if((a=c[f++])!=a)return!0}else for(;s>f;f++)if((t||f in c)&&c[f]===n)return t||f||0;return!t&&-1}}},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e,n){var r=n(25);t.exports=Array.isArray||function(t){return"Array"==r(t)}},function(t,e,n){var r=n(5)("iterator"),i=!1;try{var o=[7][r]();o.return=function(){i=!0},Array.from(o,(function(){throw 2}))}catch(t){}t.exports=function(t,e){if(!e&&!i)return!1;var n=!1;try{var o=[7],u=o[r]();u.next=function(){return{done:n=!0}},o[r]=function(){return u},t(o)}catch(t){}return n}},function(t,e,n){"use strict";var r=n(3);t.exports=function(){var t=r(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},function(t,e,n){"use strict";var r=n(48),i=RegExp.prototype.exec;t.exports=function(t,e){var n=t.exec;if("function"==typeof n){var o=n.call(t,e);if("object"!=typeof o)throw new TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==r(t))throw new TypeError("RegExp#exec called on incompatible receiver");return i.call(t,e)}},function(t,e,n){"use strict";n(116);var r=n(11),i=n(14),o=n(2),u=n(26),a=n(5),c=n(83),s=a("species"),f=!o((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")})),l=function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2===n.length&&"a"===n[0]&&"b"===n[1]}();t.exports=function(t,e,n){var d=a(t),h=!o((function(){var e={};return e[d]=function(){return 7},7!=""[t](e)})),v=h?!o((function(){var e=!1,n=/a/;return n.exec=function(){return e=!0,null},"split"===t&&(n.constructor={},n.constructor[s]=function(){return n}),n[d](""),!e})):void 0;if(!h||!v||"replace"===t&&!f||"split"===t&&!l){var p=/./[d],g=n(u,d,""[t],(function(t,e,n,r,i){return e.exec===c?h&&!i?{done:!0,value:p.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}})),y=g[0],b=g[1];r(String.prototype,t,y),i(RegExp.prototype,d,2==e?function(t,e){return b.call(t,this,e)}:function(t){return b.call(t,this)})}}},function(t,e,n){var r=n(19),i=n(111),o=n(78),u=n(3),a=n(6),c=n(80),s={},f={};(e=t.exports=function(t,e,n,l,d){var h,v,p,g,y=d?function(){return t}:c(t),b=r(n,l,e?2:1),m=0;if("function"!=typeof y)throw TypeError(t+" is not iterable!");if(o(y)){for(h=a(t.length);h>m;m++)if((g=e?b(u(v=t[m])[0],v[1]):b(t[m]))===s||g===f)return g}else for(p=y.call(t);!(v=p.next()).done;)if((g=i(p,b,v.value,e))===s||g===f)return g}).BREAK=s,e.RETURN=f},function(t,e,n){var r=n(1).navigator;t.exports=r&&r.userAgent||""},function(t,e,n){"use strict";var r=n(1),i=n(0),o=n(11),u=n(45),a=n(29),c=n(58),s=n(44),f=n(4),l=n(2),d=n(54),h=n(40),v=n(69);t.exports=function(t,e,n,p,g,y){var b=r[t],m=b,M=g?"set":"add",S=m&&m.prototype,w={},x=function(t){var e=S[t];o(S,t,"delete"==t?function(t){return!(y&&!f(t))&&e.call(this,0===t?0:t)}:"has"==t?function(t){return!(y&&!f(t))&&e.call(this,0===t?0:t)}:"get"==t?function(t){return y&&!f(t)?void 0:e.call(this,0===t?0:t)}:"add"==t?function(t){return e.call(this,0===t?0:t),this}:function(t,n){return e.call(this,0===t?0:t,n),this})};if("function"==typeof m&&(y||S.forEach&&!l((function(){(new m).entries().next()})))){var _=new m,P=_[M](y?{}:-0,1)!=_,A=l((function(){_.has(1)})),F=d((function(t){new m(t)})),O=!y&&l((function(){for(var t=new m,e=5;e--;)t[M](e,e);return!t.has(-0)}));F||((m=e((function(e,n){s(e,m,t);var r=v(new b,e,m);return null!=n&&c(n,g,r[M],r),r}))).prototype=S,S.constructor=m),(A||O)&&(x("delete"),x("has"),g&&x("get")),(O||P)&&x(M),y&&S.clear&&delete S.clear}else m=p.getConstructor(e,t,g,M),u(m.prototype,n),a.NEED=!0;return h(m,t),w[t]=m,i(i.G+i.W+i.F*(m!=b),w),y||p.setStrong(m,t,g),m}},function(t,e,n){for(var r,i=n(1),o=n(14),u=n(31),a=u("typed_array"),c=u("view"),s=!(!i.ArrayBuffer||!i.DataView),f=s,l=0,d="Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(",");l<9;)(r=i[d[l++]])?(o(r.prototype,a,!0),o(r.prototype,c,!0)):f=!1;t.exports={ABV:s,CONSTR:f,TYPED:a,VIEW:c}},function(t,e,n){var r=n(4),i=n(1).document,o=r(i)&&r(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},function(t,e,n){e.f=n(5)},function(t,e,n){var r=n(50)("keys"),i=n(31);t.exports=function(t){return r[t]||(r[t]=i(t))}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,n){var r=n(1).document;t.exports=r&&r.documentElement},function(t,e,n){var r=n(4),i=n(3),o=function(t,e){if(i(t),!r(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,r){try{(r=n(19)(Function.call,n(22).f(Object.prototype,"__proto__").set,2))(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,n){return o(t,n),e?t.__proto__=n:r(t,n),t}}({},!1):void 0),check:o}},function(t,e){t.exports="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff"},function(t,e,n){var r=n(4),i=n(67).set;t.exports=function(t,e,n){var o,u=e.constructor;return u!==n&&"function"==typeof u&&(o=u.prototype)!==n.prototype&&r(o)&&i&&i(t,o),t}},function(t,e,n){"use strict";var r=n(21),i=n(26);t.exports=function(t){var e=String(i(this)),n="",o=r(t);if(o<0||o==1/0)throw RangeError("Count can't be negative");for(;o>0;(o>>>=1)&&(e+=e))1&o&&(n+=e);return n}},function(t,e){t.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:t<0?-1:1}},function(t,e){var n=Math.expm1;t.exports=!n||n(10)>22025.465794806718||n(10)<22025.465794806718||-2e-17!=n(-2e-17)?function(t){return 0==(t=+t)?t:t>-1e-6&&t<1e-6?t+t*t/2:Math.exp(t)-1}:n},function(t,e,n){var r=n(21),i=n(26);t.exports=function(t){return function(e,n){var o,u,a=String(i(e)),c=r(n),s=a.length;return c<0||c>=s?t?"":void 0:(o=a.charCodeAt(c))<55296||o>56319||c+1===s||(u=a.charCodeAt(c+1))<56320||u>57343?t?a.charAt(c):o:t?a.slice(c,c+2):u-56320+(o-55296<<10)+65536}}},function(t,e,n){"use strict";var r=n(32),i=n(0),o=n(11),u=n(14),a=n(42),c=n(110),s=n(40),f=n(37),l=n(5)("iterator"),d=!([].keys&&"next"in[].keys()),h=function(){return this};t.exports=function(t,e,n,v,p,g,y){c(n,e,v);var b,m,M,S=function(t){if(!d&&t in P)return P[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},w=e+" Iterator",x="values"==p,_=!1,P=t.prototype,A=P[l]||P["@@iterator"]||p&&P[p],F=A||S(p),O=p?x?S("entries"):F:void 0,E="Array"==e&&P.entries||A;if(E&&(M=f(E.call(new t)))!==Object.prototype&&M.next&&(s(M,w,!0),r||"function"==typeof M[l]||u(M,l,h)),x&&A&&"values"!==A.name&&(_=!0,F=function(){return A.call(this)}),r&&!y||!d&&!_&&P[l]||u(P,l,F),a[e]=F,a[w]=h,p)if(b={values:x?F:S("values"),keys:g?F:S("keys"),entries:O},y)for(m in b)m in P||o(P,m,b[m]);else i(i.P+i.F*(d||_),e,b);return b}},function(t,e,n){var r=n(76),i=n(26);t.exports=function(t,e,n){if(r(e))throw TypeError("String#"+n+" doesn't accept regex!");return String(i(t))}},function(t,e,n){var r=n(4),i=n(25),o=n(5)("match");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[o])?!!e:"RegExp"==i(t))}},function(t,e,n){var r=n(5)("match");t.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[r]=!1,!"/./"[t](e)}catch(t){}}return!0}},function(t,e,n){var r=n(42),i=n(5)("iterator"),o=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||o[i]===t)}},function(t,e,n){"use strict";var r=n(9),i=n(30);t.exports=function(t,e,n){e in t?r.f(t,e,i(0,n)):t[e]=n}},function(t,e,n){var r=n(48),i=n(5)("iterator"),o=n(42);t.exports=n(7).getIteratorMethod=function(t){if(null!=t)return t[i]||t["@@iterator"]||o[r(t)]}},function(t,e,n){"use strict";var r=n(10),i=n(34),o=n(6);t.exports=function(t){for(var e=r(this),n=o(e.length),u=arguments.length,a=i(u>1?arguments[1]:void 0,n),c=u>2?arguments[2]:void 0,s=void 0===c?n:i(c,n);s>a;)e[a++]=t;return e}},function(t,e,n){"use strict";var r=n(38),i=n(115),o=n(42),u=n(15);t.exports=n(74)(Array,"Array",(function(t,e){this._t=u(t),this._i=0,this._k=e}),(function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,i(1)):i(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])}),"values"),o.Arguments=o.Array,r("keys"),r("values"),r("entries")},function(t,e,n){"use strict";var r,i,o=n(55),u=RegExp.prototype.exec,a=String.prototype.replace,c=u,s=(r=/a/,i=/b*/g,u.call(r,"a"),u.call(i,"a"),0!==r.lastIndex||0!==i.lastIndex),f=void 0!==/()??/.exec("")[1];(s||f)&&(c=function(t){var e,n,r,i,c=this;return f&&(n=new RegExp("^"+c.source+"$(?!\\s)",o.call(c))),s&&(e=c.lastIndex),r=u.call(c,t),s&&r&&(c.lastIndex=c.global?r.index+r[0].length:e),f&&r&&r.length>1&&a.call(r[0],n,(function(){for(i=1;in;)e.push(arguments[n++]);return y[++g]=function(){a("function"==typeof t?t:Function(t),e)},r(g),g},h=function(t){delete y[t]},"process"==n(25)(l)?r=function(t){l.nextTick(u(b,t,1))}:p&&p.now?r=function(t){p.now(u(b,t,1))}:v?(o=(i=new v).port2,i.port1.onmessage=m,r=u(o.postMessage,o,1)):f.addEventListener&&"function"==typeof postMessage&&!f.importScripts?(r=function(t){f.postMessage(t+"","*")},f.addEventListener("message",m,!1)):r="onreadystatechange"in s("script")?function(t){c.appendChild(s("script")).onreadystatechange=function(){c.removeChild(this),b.call(t)}}:function(t){setTimeout(u(b,t,1),0)}),t.exports={set:d,clear:h}},function(t,e,n){"use strict";var r=n(1),i=n(8),o=n(32),u=n(61),a=n(14),c=n(45),s=n(2),f=n(44),l=n(21),d=n(6),h=n(123),v=n(36).f,p=n(9).f,g=n(81),y=n(40),b="prototype",m="Wrong index!",M=r.ArrayBuffer,S=r.DataView,w=r.Math,x=r.RangeError,_=r.Infinity,P=M,A=w.abs,F=w.pow,O=w.floor,E=w.log,k=w.LN2,R=i?"_b":"buffer",T=i?"_l":"byteLength",L=i?"_o":"byteOffset";function B(t,e,n){var r,i,o,u=new Array(n),a=8*n-e-1,c=(1<>1,f=23===e?F(2,-24)-F(2,-77):0,l=0,d=t<0||0===t&&1/t<0?1:0;for((t=A(t))!=t||t===_?(i=t!=t?1:0,r=c):(r=O(E(t)/k),t*(o=F(2,-r))<1&&(r--,o*=2),(t+=r+s>=1?f/o:f*F(2,1-s))*o>=2&&(r++,o/=2),r+s>=c?(i=0,r=c):r+s>=1?(i=(t*o-1)*F(2,e),r+=s):(i=t*F(2,s-1)*F(2,e),r=0));e>=8;u[l++]=255&i,i/=256,e-=8);for(r=r<0;u[l++]=255&r,r/=256,a-=8);return u[--l]|=128*d,u}function N(t,e,n){var r,i=8*n-e-1,o=(1<>1,a=i-7,c=n-1,s=t[c--],f=127&s;for(s>>=7;a>0;f=256*f+t[c],c--,a-=8);for(r=f&(1<<-a)-1,f>>=-a,a+=e;a>0;r=256*r+t[c],c--,a-=8);if(0===f)f=1-u;else{if(f===o)return r?NaN:s?-_:_;r+=F(2,e),f-=u}return(s?-1:1)*r*F(2,f-e)}function I(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]}function j(t){return[255&t]}function C(t){return[255&t,t>>8&255]}function W(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]}function D(t){return B(t,52,8)}function G(t){return B(t,23,4)}function V(t,e,n){p(t[b],e,{get:function(){return this[n]}})}function z(t,e,n,r){var i=h(+n);if(i+e>t[T])throw x(m);var o=t[R]._b,u=i+t[L],a=o.slice(u,u+e);return r?a:a.reverse()}function U(t,e,n,r,i,o){var u=h(+n);if(u+e>t[T])throw x(m);for(var a=t[R]._b,c=u+t[L],s=r(+i),f=0;fK;)(q=H[K++])in M||a(M,q,P[q]);o||(Y.constructor=M)}var Q=new S(new M(2)),J=S[b].setInt8;Q.setInt8(0,2147483648),Q.setInt8(1,2147483649),!Q.getInt8(0)&&Q.getInt8(1)||c(S[b],{setInt8:function(t,e){J.call(this,t,e<<24>>24)},setUint8:function(t,e){J.call(this,t,e<<24>>24)}},!0)}else M=function(t){f(this,M,"ArrayBuffer");var e=h(t);this._b=g.call(new Array(e),0),this[T]=e},S=function(t,e,n){f(this,S,"DataView"),f(t,M,"DataView");var r=t[T],i=l(e);if(i<0||i>r)throw x("Wrong offset!");if(i+(n=void 0===n?r-i:d(n))>r)throw x("Wrong length!");this[R]=t,this[L]=i,this[T]=n},i&&(V(M,"byteLength","_l"),V(S,"buffer","_b"),V(S,"byteLength","_l"),V(S,"byteOffset","_o")),c(S[b],{getInt8:function(t){return z(this,1,t)[0]<<24>>24},getUint8:function(t){return z(this,1,t)[0]},getInt16:function(t){var e=z(this,2,t,arguments[1]);return(e[1]<<8|e[0])<<16>>16},getUint16:function(t){var e=z(this,2,t,arguments[1]);return e[1]<<8|e[0]},getInt32:function(t){return I(z(this,4,t,arguments[1]))},getUint32:function(t){return I(z(this,4,t,arguments[1]))>>>0},getFloat32:function(t){return N(z(this,4,t,arguments[1]),23,4)},getFloat64:function(t){return N(z(this,8,t,arguments[1]),52,8)},setInt8:function(t,e){U(this,1,t,j,e)},setUint8:function(t,e){U(this,1,t,j,e)},setInt16:function(t,e){U(this,2,t,C,e,arguments[2])},setUint16:function(t,e){U(this,2,t,C,e,arguments[2])},setInt32:function(t,e){U(this,4,t,W,e,arguments[2])},setUint32:function(t,e){U(this,4,t,W,e,arguments[2])},setFloat32:function(t,e){U(this,4,t,G,e,arguments[2])},setFloat64:function(t,e){U(this,8,t,D,e,arguments[2])}});y(M,"ArrayBuffer"),y(S,"DataView"),a(S[b],u.VIEW,!0),e.ArrayBuffer=M,e.DataView=S},function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,n){t.exports=!n(128)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(t,e,n){"use strict";e.__esModule=!0,e.default=void 0;var r,i=(r=n(91))&&r.__esModule?r:{default:r},o=n(18);function u(t,e){for(var n=0;n0){var u=Object.keys(n),c=a.default.find(u,(function(t){return e.isOS(t)}));if(c){var s=this.satisfies(n[c]);if(void 0!==s)return s}var f=a.default.find(u,(function(t){return e.isPlatform(t)}));if(f){var l=this.satisfies(n[f]);if(void 0!==l)return l}}if(o>0){var d=Object.keys(i),h=a.default.find(d,(function(t){return e.isBrowser(t,!0)}));if(void 0!==h)return this.compareVersion(i[h])}},e.isBrowser=function(t,e){void 0===e&&(e=!1);var n=this.getBrowserName().toLowerCase(),r=t.toLowerCase(),i=a.default.getBrowserTypeByAlias(r);return e&&i&&(r=i.toLowerCase()),r===n},e.compareVersion=function(t){var e=[0],n=t,r=!1,i=this.getBrowserVersion();if("string"==typeof i)return">"===t[0]||"<"===t[0]?(n=t.substr(1),"="===t[1]?(r=!0,n=t.substr(2)):e=[],">"===t[0]?e.push(1):e.push(-1)):"="===t[0]?n=t.substr(1):"~"===t[0]&&(r=!0,n=t.substr(1)),e.indexOf(a.default.compareVersions(i,n,r))>-1},e.isOS=function(t){return this.getOSName(!0)===String(t).toLowerCase()},e.isPlatform=function(t){return this.getPlatformType(!0)===String(t).toLowerCase()},e.isEngine=function(t){return this.getEngineName(!0)===String(t).toLowerCase()},e.is=function(t,e){return void 0===e&&(e=!1),this.isBrowser(t,e)||this.isOS(t)||this.isPlatform(t)},e.some=function(t){var e=this;return void 0===t&&(t=[]),t.some((function(t){return e.is(t)}))},t}();e.default=s,t.exports=e.default},function(t,e,n){"use strict";e.__esModule=!0,e.default=void 0;var r,i=(r=n(17))&&r.__esModule?r:{default:r};var o=/version\/(\d+(\.?_?\d+)+)/i,u=[{test:[/gptbot/i],describe:function(t){var e={name:"GPTBot"},n=i.default.getFirstMatch(/gptbot\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/chatgpt-user/i],describe:function(t){var e={name:"ChatGPT-User"},n=i.default.getFirstMatch(/chatgpt-user\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/oai-searchbot/i],describe:function(t){var e={name:"OAI-SearchBot"},n=i.default.getFirstMatch(/oai-searchbot\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/claudebot/i,/claude-web/i,/claude-user/i,/claude-searchbot/i],describe:function(t){var e={name:"ClaudeBot"},n=i.default.getFirstMatch(/(?:claudebot|claude-web|claude-user|claude-searchbot)\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/omgilibot/i,/webzio-extended/i],describe:function(t){var e={name:"Omgilibot"},n=i.default.getFirstMatch(/(?:omgilibot|webzio-extended)\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/diffbot/i],describe:function(t){var e={name:"Diffbot"},n=i.default.getFirstMatch(/diffbot\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/perplexitybot/i],describe:function(t){var e={name:"PerplexityBot"},n=i.default.getFirstMatch(/perplexitybot\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/perplexity-user/i],describe:function(t){var e={name:"Perplexity-User"},n=i.default.getFirstMatch(/perplexity-user\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/youbot/i],describe:function(t){var e={name:"YouBot"},n=i.default.getFirstMatch(/youbot\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/meta-webindexer/i],describe:function(t){var e={name:"Meta-WebIndexer"},n=i.default.getFirstMatch(/meta-webindexer\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/meta-externalads/i],describe:function(t){var e={name:"Meta-ExternalAds"},n=i.default.getFirstMatch(/meta-externalads\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/meta-externalagent/i],describe:function(t){var e={name:"Meta-ExternalAgent"},n=i.default.getFirstMatch(/meta-externalagent\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/meta-externalfetcher/i],describe:function(t){var e={name:"Meta-ExternalFetcher"},n=i.default.getFirstMatch(/meta-externalfetcher\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/googlebot/i],describe:function(t){var e={name:"Googlebot"},n=i.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/linespider/i],describe:function(t){var e={name:"Linespider"},n=i.default.getFirstMatch(/(?:linespider)(?:-[-\w]+)?[\s/](\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/amazonbot/i],describe:function(t){var e={name:"AmazonBot"},n=i.default.getFirstMatch(/amazonbot\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/bingbot/i],describe:function(t){var e={name:"BingCrawler"},n=i.default.getFirstMatch(/bingbot\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/baiduspider/i],describe:function(t){var e={name:"BaiduSpider"},n=i.default.getFirstMatch(/baiduspider\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/duckduckbot/i],describe:function(t){var e={name:"DuckDuckBot"},n=i.default.getFirstMatch(/duckduckbot\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/ia_archiver/i],describe:function(t){var e={name:"InternetArchiveCrawler"},n=i.default.getFirstMatch(/ia_archiver\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/facebookexternalhit/i,/facebookcatalog/i],describe:function(){return{name:"FacebookExternalHit"}}},{test:[/slackbot/i,/slack-imgProxy/i],describe:function(t){var e={name:"SlackBot"},n=i.default.getFirstMatch(/(?:slackbot|slack-imgproxy)(?:-[-\w]+)?[\s/](\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/yahoo!?[\s/]*slurp/i],describe:function(){return{name:"YahooSlurp"}}},{test:[/yandexbot/i,/yandexmobilebot/i],describe:function(){return{name:"YandexBot"}}},{test:[/pingdom/i],describe:function(){return{name:"PingdomBot"}}},{test:[/opera/i],describe:function(t){var e={name:"Opera"},n=i.default.getFirstMatch(o,t)||i.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/opr\/|opios/i],describe:function(t){var e={name:"Opera"},n=i.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/SamsungBrowser/i],describe:function(t){var e={name:"Samsung Internet for Android"},n=i.default.getFirstMatch(o,t)||i.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/Whale/i],describe:function(t){var e={name:"NAVER Whale Browser"},n=i.default.getFirstMatch(o,t)||i.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/PaleMoon/i],describe:function(t){var e={name:"Pale Moon"},n=i.default.getFirstMatch(o,t)||i.default.getFirstMatch(/(?:PaleMoon)[\s/](\d+(?:\.\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/MZBrowser/i],describe:function(t){var e={name:"MZ Browser"},n=i.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/focus/i],describe:function(t){var e={name:"Focus"},n=i.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/swing/i],describe:function(t){var e={name:"Swing"},n=i.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/coast/i],describe:function(t){var e={name:"Opera Coast"},n=i.default.getFirstMatch(o,t)||i.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(t){var e={name:"Opera Touch"},n=i.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/yabrowser/i],describe:function(t){var e={name:"Yandex Browser"},n=i.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/ucbrowser/i],describe:function(t){var e={name:"UC Browser"},n=i.default.getFirstMatch(o,t)||i.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/Maxthon|mxios/i],describe:function(t){var e={name:"Maxthon"},n=i.default.getFirstMatch(o,t)||i.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/epiphany/i],describe:function(t){var e={name:"Epiphany"},n=i.default.getFirstMatch(o,t)||i.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/puffin/i],describe:function(t){var e={name:"Puffin"},n=i.default.getFirstMatch(o,t)||i.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/sleipnir/i],describe:function(t){var e={name:"Sleipnir"},n=i.default.getFirstMatch(o,t)||i.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/k-meleon/i],describe:function(t){var e={name:"K-Meleon"},n=i.default.getFirstMatch(o,t)||i.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/micromessenger/i],describe:function(t){var e={name:"WeChat"},n=i.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/qqbrowser/i],describe:function(t){var e={name:/qqbrowserlite/i.test(t)?"QQ Browser Lite":"QQ Browser"},n=i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/msie|trident/i],describe:function(t){var e={name:"Internet Explorer"},n=i.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/\sedg\//i],describe:function(t){var e={name:"Microsoft Edge"},n=i.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/edg([ea]|ios)/i],describe:function(t){var e={name:"Microsoft Edge"},n=i.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/vivaldi/i],describe:function(t){var e={name:"Vivaldi"},n=i.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/seamonkey/i],describe:function(t){var e={name:"SeaMonkey"},n=i.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/sailfish/i],describe:function(t){var e={name:"Sailfish"},n=i.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,t);return n&&(e.version=n),e}},{test:[/silk/i],describe:function(t){var e={name:"Amazon Silk"},n=i.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/phantom/i],describe:function(t){var e={name:"PhantomJS"},n=i.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/slimerjs/i],describe:function(t){var e={name:"SlimerJS"},n=i.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(t){var e={name:"BlackBerry"},n=i.default.getFirstMatch(o,t)||i.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/(web|hpw)[o0]s/i],describe:function(t){var e={name:"WebOS Browser"},n=i.default.getFirstMatch(o,t)||i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/bada/i],describe:function(t){var e={name:"Bada"},n=i.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/tizen/i],describe:function(t){var e={name:"Tizen"},n=i.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/qupzilla/i],describe:function(t){var e={name:"QupZilla"},n=i.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/librewolf/i],describe:function(t){var e={name:"LibreWolf"},n=i.default.getFirstMatch(/(?:librewolf)[\s/](\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/firefox|iceweasel|fxios/i],describe:function(t){var e={name:"Firefox"},n=i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/electron/i],describe:function(t){var e={name:"Electron"},n=i.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/sogoumobilebrowser/i,/metasr/i,/se 2\.[x]/i],describe:function(t){var e={name:"Sogou Browser"},n=i.default.getFirstMatch(/(?:sogoumobilebrowser)[\s/](\d+(\.?_?\d+)+)/i,t),r=i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,t),o=i.default.getFirstMatch(/se ([\d.]+)x/i,t),u=n||r||o;return u&&(e.version=u),e}},{test:[/MiuiBrowser/i],describe:function(t){var e={name:"Miui"},n=i.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:function(t){return!!t.hasBrand("DuckDuckGo")||t.test(/\sDdg\/[\d.]+$/i)},describe:function(t,e){var n={name:"DuckDuckGo"};if(e){var r=e.getBrandVersion("DuckDuckGo");if(r)return n.version=r,n}var o=i.default.getFirstMatch(/\sDdg\/([\d.]+)$/i,t);return o&&(n.version=o),n}},{test:function(t){return t.hasBrand("Brave")},describe:function(t,e){var n={name:"Brave"};if(e){var r=e.getBrandVersion("Brave");if(r)return n.version=r,n}return n}},{test:[/chromium/i],describe:function(t){var e={name:"Chromium"},n=i.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/chrome|crios|crmo/i],describe:function(t){var e={name:"Chrome"},n=i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/GSA/i],describe:function(t){var e={name:"Google Search"},n=i.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:function(t){var e=!t.test(/like android/i),n=t.test(/android/i);return e&&n},describe:function(t){var e={name:"Android Browser"},n=i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/playstation 4/i],describe:function(t){var e={name:"PlayStation 4"},n=i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/safari|applewebkit/i],describe:function(t){var e={name:"Safari"},n=i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/.*/i],describe:function(t){var e=-1!==t.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:i.default.getFirstMatch(e,t),version:i.default.getSecondMatch(e,t)}}}];e.default=u,t.exports=e.default},function(t,e,n){"use strict";e.__esModule=!0,e.default=void 0;var r,i=(r=n(17))&&r.__esModule?r:{default:r},o=n(18);var u=[{test:[/Roku\/DVP/],describe:function(t){var e=i.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,t);return{name:o.OS_MAP.Roku,version:e}}},{test:[/windows phone/i],describe:function(t){var e=i.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,t);return{name:o.OS_MAP.WindowsPhone,version:e}}},{test:[/windows /i],describe:function(t){var e=i.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,t),n=i.default.getWindowsVersionName(e);return{name:o.OS_MAP.Windows,version:e,versionName:n}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(t){var e={name:o.OS_MAP.iOS},n=i.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,t);return n&&(e.version=n),e}},{test:[/macintosh/i],describe:function(t){var e=i.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,t).replace(/[_\s]/g,"."),n=i.default.getMacOSVersionName(e),r={name:o.OS_MAP.MacOS,version:e};return n&&(r.versionName=n),r}},{test:[/(ipod|iphone|ipad)/i],describe:function(t){var e=i.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,t).replace(/[_\s]/g,".");return{name:o.OS_MAP.iOS,version:e}}},{test:[/OpenHarmony/i],describe:function(t){var e=i.default.getFirstMatch(/OpenHarmony\s+(\d+(\.\d+)*)/i,t);return{name:o.OS_MAP.HarmonyOS,version:e}}},{test:function(t){var e=!t.test(/like android/i),n=t.test(/android/i);return e&&n},describe:function(t){var e=i.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,t),n=i.default.getAndroidVersionName(e),r={name:o.OS_MAP.Android,version:e};return n&&(r.versionName=n),r}},{test:[/(web|hpw)[o0]s/i],describe:function(t){var e=i.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,t),n={name:o.OS_MAP.WebOS};return e&&e.length&&(n.version=e),n}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(t){var e=i.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,t)||i.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,t)||i.default.getFirstMatch(/\bbb(\d+)/i,t);return{name:o.OS_MAP.BlackBerry,version:e}}},{test:[/bada/i],describe:function(t){var e=i.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,t);return{name:o.OS_MAP.Bada,version:e}}},{test:[/tizen/i],describe:function(t){var e=i.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,t);return{name:o.OS_MAP.Tizen,version:e}}},{test:[/linux/i],describe:function(){return{name:o.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:o.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(t){var e=i.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,t);return{name:o.OS_MAP.PlayStation4,version:e}}}];e.default=u,t.exports=e.default},function(t,e,n){"use strict";e.__esModule=!0,e.default=void 0;var r,i=(r=n(17))&&r.__esModule?r:{default:r},o=n(18);var u=[{test:[/googlebot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Google"}}},{test:[/linespider/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Line"}}},{test:[/amazonbot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Amazon"}}},{test:[/gptbot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"OpenAI"}}},{test:[/chatgpt-user/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"OpenAI"}}},{test:[/oai-searchbot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"OpenAI"}}},{test:[/baiduspider/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Baidu"}}},{test:[/bingbot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Bing"}}},{test:[/duckduckbot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"DuckDuckGo"}}},{test:[/claudebot/i,/claude-web/i,/claude-user/i,/claude-searchbot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Anthropic"}}},{test:[/omgilibot/i,/webzio-extended/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Webz.io"}}},{test:[/diffbot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Diffbot"}}},{test:[/perplexitybot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Perplexity AI"}}},{test:[/perplexity-user/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Perplexity AI"}}},{test:[/youbot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"You.com"}}},{test:[/ia_archiver/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Internet Archive"}}},{test:[/meta-webindexer/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Meta"}}},{test:[/meta-externalads/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Meta"}}},{test:[/meta-externalagent/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Meta"}}},{test:[/meta-externalfetcher/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Meta"}}},{test:[/facebookexternalhit/i,/facebookcatalog/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Meta"}}},{test:[/slackbot/i,/slack-imgProxy/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Slack"}}},{test:[/yahoo/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Yahoo"}}},{test:[/yandexbot/i,/yandexmobilebot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Yandex"}}},{test:[/pingdom/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Pingdom"}}},{test:[/huawei/i],describe:function(t){var e=i.default.getFirstMatch(/(can-l01)/i,t)&&"Nova",n={type:o.PLATFORMS_MAP.mobile,vendor:"Huawei"};return e&&(n.model=e),n}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet}}},{test:function(t){var e=t.test(/ipod|iphone/i),n=t.test(/like (ipod|iphone)/i);return e&&!n},describe:function(t){var e=i.default.getFirstMatch(/(ipod|iphone)/i,t);return{type:o.PLATFORMS_MAP.mobile,vendor:"Apple",model:e}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/Nokia/i],describe:function(t){var e=i.default.getFirstMatch(/Nokia\s+([0-9]+(\.[0-9]+)?)/i,t),n={type:o.PLATFORMS_MAP.mobile,vendor:"Nokia"};return e&&(n.model=e),n}},{test:[/[^-]mobi/i],describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:function(t){return"blackberry"===t.getBrowserName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(t){return"bada"===t.getBrowserName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:function(t){return"windows phone"===t.getBrowserName()},describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(t){var e=Number(String(t.getOSVersion()).split(".")[0]);return"android"===t.getOSName(!0)&&e>=3},describe:function(){return{type:o.PLATFORMS_MAP.tablet}}},{test:function(t){return"android"===t.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:[/smart-?tv|smarttv/i],describe:function(){return{type:o.PLATFORMS_MAP.tv}}},{test:[/netcast/i],describe:function(){return{type:o.PLATFORMS_MAP.tv}}},{test:function(t){return"macos"===t.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(t){return"windows"===t.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop}}},{test:function(t){return"linux"===t.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop}}},{test:function(t){return"playstation 4"===t.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.tv}}},{test:function(t){return"roku"===t.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.tv}}}];e.default=u,t.exports=e.default},function(t,e,n){"use strict";e.__esModule=!0,e.default=void 0;var r,i=(r=n(17))&&r.__esModule?r:{default:r},o=n(18);var u=[{test:function(t){return"microsoft edge"===t.getBrowserName(!0)},describe:function(t){if(/\sedg\//i.test(t))return{name:o.ENGINE_MAP.Blink};var e=i.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,t);return{name:o.ENGINE_MAP.EdgeHTML,version:e}}},{test:[/trident/i],describe:function(t){var e={name:o.ENGINE_MAP.Trident},n=i.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:function(t){return t.test(/presto/i)},describe:function(t){var e={name:o.ENGINE_MAP.Presto},n=i.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:function(t){var e=t.test(/gecko/i),n=t.test(/like gecko/i);return e&&!n},describe:function(t){var e={name:o.ENGINE_MAP.Gecko},n=i.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:o.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(t){var e={name:o.ENGINE_MAP.WebKit},n=i.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}}];e.default=u,t.exports=e.default},function(t,e,n){t.exports=!n(8)&&!n(2)((function(){return 7!=Object.defineProperty(n(62)("div"),"a",{get:function(){return 7}}).a}))},function(t,e,n){var r=n(1),i=n(7),o=n(32),u=n(63),a=n(9).f;t.exports=function(t){var e=i.Symbol||(i.Symbol=o?{}:r.Symbol||{});"_"==t.charAt(0)||t in e||a(e,t,{value:u.f(t)})}},function(t,e,n){var r=n(13),i=n(15),o=n(51)(!1),u=n(64)("IE_PROTO");t.exports=function(t,e){var n,a=i(t),c=0,s=[];for(n in a)n!=u&&r(a,n)&&s.push(n);for(;e.length>c;)r(a,n=e[c++])&&(~o(s,n)||s.push(n));return s}},function(t,e,n){var r=n(9),i=n(3),o=n(33);t.exports=n(8)?Object.defineProperties:function(t,e){i(t);for(var n,u=o(e),a=u.length,c=0;a>c;)r.f(t,n=u[c++],e[n]);return t}},function(t,e,n){var r=n(15),i=n(36).f,o={}.toString,u="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return u&&"[object Window]"==o.call(t)?function(t){try{return i(t)}catch(t){return u.slice()}}(t):i(r(t))}},function(t,e,n){"use strict";var r=n(8),i=n(33),o=n(52),u=n(47),a=n(10),c=n(46),s=Object.assign;t.exports=!s||n(2)((function(){var t={},e={},n=Symbol(),r="abcdefghijklmnopqrst";return t[n]=7,r.split("").forEach((function(t){e[t]=t})),7!=s({},t)[n]||Object.keys(s({},e)).join("")!=r}))?function(t,e){for(var n=a(t),s=arguments.length,f=1,l=o.f,d=u.f;s>f;)for(var h,v=c(arguments[f++]),p=l?i(v).concat(l(v)):i(v),g=p.length,y=0;g>y;)h=p[y++],r&&!d.call(v,h)||(n[h]=v[h]);return n}:s},function(t,e){t.exports=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e}},function(t,e,n){"use strict";var r=n(20),i=n(4),o=n(104),u=[].slice,a={},c=function(t,e,n){if(!(e in a)){for(var r=[],i=0;i>>0||(u.test(n)?16:10))}:r},function(t,e,n){var r=n(1).parseFloat,i=n(41).trim;t.exports=1/r(n(68)+"-0")!=-1/0?function(t){var e=i(String(t),3),n=r(e);return 0===n&&"-"==e.charAt(0)?-0:n}:r},function(t,e,n){var r=n(25);t.exports=function(t,e){if("number"!=typeof t&&"Number"!=r(t))throw TypeError(e);return+t}},function(t,e,n){var r=n(4),i=Math.floor;t.exports=function(t){return!r(t)&&isFinite(t)&&i(t)===t}},function(t,e){t.exports=Math.log1p||function(t){return(t=+t)>-1e-8&&t<1e-8?t-t*t/2:Math.log(1+t)}},function(t,e,n){"use strict";var r=n(35),i=n(30),o=n(40),u={};n(14)(u,n(5)("iterator"),(function(){return this})),t.exports=function(t,e,n){t.prototype=r(u,{next:i(1,n)}),o(t,e+" Iterator")}},function(t,e,n){var r=n(3);t.exports=function(t,e,n,i){try{return i?e(r(n)[0],n[1]):e(n)}catch(e){var o=t.return;throw void 0!==o&&r(o.call(t)),e}}},function(t,e,n){var r=n(224);t.exports=function(t,e){return new(r(t))(e)}},function(t,e,n){var r=n(20),i=n(10),o=n(46),u=n(6);t.exports=function(t,e,n,a,c){r(e);var s=i(t),f=o(s),l=u(s.length),d=c?l-1:0,h=c?-1:1;if(n<2)for(;;){if(d in f){a=f[d],d+=h;break}if(d+=h,c?d<0:l<=d)throw TypeError("Reduce of empty array with no initial value")}for(;c?d>=0:l>d;d+=h)d in f&&(a=e(a,f[d],d,s));return a}},function(t,e,n){"use strict";var r=n(10),i=n(34),o=n(6);t.exports=[].copyWithin||function(t,e){var n=r(this),u=o(n.length),a=i(t,u),c=i(e,u),s=arguments.length>2?arguments[2]:void 0,f=Math.min((void 0===s?u:i(s,u))-c,u-a),l=1;for(c0;)c in n?n[a]=n[c]:delete n[a],a+=l,c+=l;return n}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e,n){"use strict";var r=n(83);n(0)({target:"RegExp",proto:!0,forced:r!==/./.exec},{exec:r})},function(t,e,n){n(8)&&"g"!=/./g.flags&&n(9).f(RegExp.prototype,"flags",{configurable:!0,get:n(55)})},function(t,e,n){"use strict";var r,i,o,u,a=n(32),c=n(1),s=n(19),f=n(48),l=n(0),d=n(4),h=n(20),v=n(44),p=n(58),g=n(49),y=n(85).set,b=n(244)(),m=n(119),M=n(245),S=n(59),w=n(120),x=c.TypeError,_=c.process,P=_&&_.versions,A=P&&P.v8||"",F=c.Promise,O="process"==f(_),E=function(){},k=i=m.f,R=!!function(){try{var t=F.resolve(1),e=(t.constructor={})[n(5)("species")]=function(t){t(E,E)};return(O||"function"==typeof PromiseRejectionEvent)&&t.then(E)instanceof e&&0!==A.indexOf("6.6")&&-1===S.indexOf("Chrome/66")}catch(t){}}(),T=function(t){var e;return!(!d(t)||"function"!=typeof(e=t.then))&&e},L=function(t,e){if(!t._n){t._n=!0;var n=t._c;b((function(){for(var r=t._v,i=1==t._s,o=0,u=function(e){var n,o,u,a=i?e.ok:e.fail,c=e.resolve,s=e.reject,f=e.domain;try{a?(i||(2==t._h&&I(t),t._h=1),!0===a?n=r:(f&&f.enter(),n=a(r),f&&(f.exit(),u=!0)),n===e.promise?s(x("Promise-chain cycle")):(o=T(n))?o.call(n,c,s):c(n)):s(r)}catch(t){f&&!u&&f.exit(),s(t)}};n.length>o;)u(n[o++]);t._c=[],t._n=!1,e&&!t._h&&B(t)}))}},B=function(t){y.call(c,(function(){var e,n,r,i=t._v,o=N(t);if(o&&(e=M((function(){O?_.emit("unhandledRejection",i,t):(n=c.onunhandledrejection)?n({promise:t,reason:i}):(r=c.console)&&r.error&&r.error("Unhandled promise rejection",i)})),t._h=O||N(t)?2:1),t._a=void 0,o&&e.e)throw e.v}))},N=function(t){return 1!==t._h&&0===(t._a||t._c).length},I=function(t){y.call(c,(function(){var e;O?_.emit("rejectionHandled",t):(e=c.onrejectionhandled)&&e({promise:t,reason:t._v})}))},j=function(t){var e=this;e._d||(e._d=!0,(e=e._w||e)._v=t,e._s=2,e._a||(e._a=e._c.slice()),L(e,!0))},C=function(t){var e,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===t)throw x("Promise can't be resolved itself");(e=T(t))?b((function(){var r={_w:n,_d:!1};try{e.call(t,s(C,r,1),s(j,r,1))}catch(t){j.call(r,t)}})):(n._v=t,n._s=1,L(n,!1))}catch(t){j.call({_w:n,_d:!1},t)}}};R||(F=function(t){v(this,F,"Promise","_h"),h(t),r.call(this);try{t(s(C,this,1),s(j,this,1))}catch(t){j.call(this,t)}},(r=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=n(45)(F.prototype,{then:function(t,e){var n=k(g(this,F));return n.ok="function"!=typeof t||t,n.fail="function"==typeof e&&e,n.domain=O?_.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&L(this,!1),n.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new r;this.promise=t,this.resolve=s(C,t,1),this.reject=s(j,t,1)},m.f=k=function(t){return t===F||t===u?new o(t):i(t)}),l(l.G+l.W+l.F*!R,{Promise:F}),n(40)(F,"Promise"),n(43)("Promise"),u=n(7).Promise,l(l.S+l.F*!R,"Promise",{reject:function(t){var e=k(this);return(0,e.reject)(t),e.promise}}),l(l.S+l.F*(a||!R),"Promise",{resolve:function(t){return w(a&&this===u?F:this,t)}}),l(l.S+l.F*!(R&&n(54)((function(t){F.all(t).catch(E)}))),"Promise",{all:function(t){var e=this,n=k(e),r=n.resolve,i=n.reject,o=M((function(){var n=[],o=0,u=1;p(t,!1,(function(t){var a=o++,c=!1;n.push(void 0),u++,e.resolve(t).then((function(t){c||(c=!0,n[a]=t,--u||r(n))}),i)})),--u||r(n)}));return o.e&&i(o.v),n.promise},race:function(t){var e=this,n=k(e),r=n.reject,i=M((function(){p(t,!1,(function(t){e.resolve(t).then(n.resolve,r)}))}));return i.e&&r(i.v),n.promise}})},function(t,e,n){"use strict";var r=n(20);function i(t){var e,n;this.promise=new t((function(t,r){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=r})),this.resolve=r(e),this.reject=r(n)}t.exports.f=function(t){return new i(t)}},function(t,e,n){var r=n(3),i=n(4),o=n(119);t.exports=function(t,e){if(r(t),i(e)&&e.constructor===t)return e;var n=o.f(t);return(0,n.resolve)(e),n.promise}},function(t,e,n){"use strict";var r=n(9).f,i=n(35),o=n(45),u=n(19),a=n(44),c=n(58),s=n(74),f=n(115),l=n(43),d=n(8),h=n(29).fastKey,v=n(39),p=d?"_s":"size",g=function(t,e){var n,r=h(e);if("F"!==r)return t._i[r];for(n=t._f;n;n=n.n)if(n.k==e)return n};t.exports={getConstructor:function(t,e,n,s){var f=t((function(t,r){a(t,f,e,"_i"),t._t=e,t._i=i(null),t._f=void 0,t._l=void 0,t[p]=0,null!=r&&c(r,n,t[s],t)}));return o(f.prototype,{clear:function(){for(var t=v(this,e),n=t._i,r=t._f;r;r=r.n)r.r=!0,r.p&&(r.p=r.p.n=void 0),delete n[r.i];t._f=t._l=void 0,t[p]=0},delete:function(t){var n=v(this,e),r=g(n,t);if(r){var i=r.n,o=r.p;delete n._i[r.i],r.r=!0,o&&(o.n=i),i&&(i.p=o),n._f==r&&(n._f=i),n._l==r&&(n._l=o),n[p]--}return!!r},forEach:function(t){v(this,e);for(var n,r=u(t,arguments.length>1?arguments[1]:void 0,3);n=n?n.n:this._f;)for(r(n.v,n.k,this);n&&n.r;)n=n.p},has:function(t){return!!g(v(this,e),t)}}),d&&r(f.prototype,"size",{get:function(){return v(this,e)[p]}}),f},def:function(t,e,n){var r,i,o=g(t,e);return o?o.v=n:(t._l=o={i:i=h(e,!0),k:e,v:n,p:r=t._l,n:void 0,r:!1},t._f||(t._f=o),r&&(r.n=o),t[p]++,"F"!==i&&(t._i[i]=o)),t},getEntry:g,setStrong:function(t,e,n){s(t,e,(function(t,n){this._t=v(t,e),this._k=n,this._l=void 0}),(function(){for(var t=this._k,e=this._l;e&&e.r;)e=e.p;return this._t&&(this._l=e=e?e.n:this._t._f)?f(0,"keys"==t?e.k:"values"==t?e.v:[e.k,e.v]):(this._t=void 0,f(1))}),n?"entries":"values",!n,!0),l(e)}}},function(t,e,n){"use strict";var r=n(45),i=n(29).getWeak,o=n(3),u=n(4),a=n(44),c=n(58),s=n(24),f=n(13),l=n(39),d=s(5),h=s(6),v=0,p=function(t){return t._l||(t._l=new g)},g=function(){this.a=[]},y=function(t,e){return d(t.a,(function(t){return t[0]===e}))};g.prototype={get:function(t){var e=y(this,t);if(e)return e[1]},has:function(t){return!!y(this,t)},set:function(t,e){var n=y(this,t);n?n[1]=e:this.a.push([t,e])},delete:function(t){var e=h(this.a,(function(e){return e[0]===t}));return~e&&this.a.splice(e,1),!!~e}},t.exports={getConstructor:function(t,e,n,o){var s=t((function(t,r){a(t,s,e,"_i"),t._t=e,t._i=v++,t._l=void 0,null!=r&&c(r,n,t[o],t)}));return r(s.prototype,{delete:function(t){if(!u(t))return!1;var n=i(t);return!0===n?p(l(this,e)).delete(t):n&&f(n,this._i)&&delete n[this._i]},has:function(t){if(!u(t))return!1;var n=i(t);return!0===n?p(l(this,e)).has(t):n&&f(n,this._i)}}),s},def:function(t,e,n){var r=i(o(e),!0);return!0===r?p(t).set(e,n):r[t._i]=n,t},ufstore:p}},function(t,e,n){var r=n(21),i=n(6);t.exports=function(t){if(void 0===t)return 0;var e=r(t),n=i(e);if(e!==n)throw RangeError("Wrong length!");return n}},function(t,e,n){var r=n(36),i=n(52),o=n(3),u=n(1).Reflect;t.exports=u&&u.ownKeys||function(t){var e=r.f(o(t)),n=i.f;return n?e.concat(n(t)):e}},function(t,e,n){var r=n(6),i=n(70),o=n(26);t.exports=function(t,e,n,u){var a=String(o(t)),c=a.length,s=void 0===n?" ":String(n),f=r(e);if(f<=c||""==s)return a;var l=f-c,d=i.call(s,Math.ceil(l/s.length));return d.length>l&&(d=d.slice(0,l)),u?d+a:a+d}},function(t,e,n){var r=n(8),i=n(33),o=n(15),u=n(47).f;t.exports=function(t){return function(e){for(var n,a=o(e),c=i(a),s=c.length,f=0,l=[];s>f;)n=c[f++],r&&!u.call(a,n)||l.push(t?[n,a[n]]:a[n]);return l}}},function(t,e){var n=t.exports={version:"2.6.9"};"number"==typeof __e&&(__e=n)},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){n(130),t.exports=n(90)},function(t,e,n){"use strict";n(131);var r,i=(r=n(303))&&r.__esModule?r:{default:r};i.default._babelPolyfill&&"undefined"!=typeof console&&console.warn&&console.warn("@babel/polyfill is loaded more than once on this page. This is probably not desirable/intended and may have consequences if different versions of the polyfills are applied sequentially. If you do need to load the polyfill more than once, use @babel/polyfill/noConflict instead to bypass the warning."),i.default._babelPolyfill=!0},function(t,e,n){"use strict";n(132),n(275),n(277),n(280),n(282),n(284),n(286),n(288),n(290),n(292),n(294),n(296),n(298),n(302)},function(t,e,n){n(133),n(136),n(137),n(138),n(139),n(140),n(141),n(142),n(143),n(144),n(145),n(146),n(147),n(148),n(149),n(150),n(151),n(152),n(153),n(154),n(155),n(156),n(157),n(158),n(159),n(160),n(161),n(162),n(163),n(164),n(165),n(166),n(167),n(168),n(169),n(170),n(171),n(172),n(173),n(174),n(175),n(176),n(177),n(179),n(180),n(181),n(182),n(183),n(184),n(185),n(186),n(187),n(188),n(189),n(190),n(191),n(192),n(193),n(194),n(195),n(196),n(197),n(198),n(199),n(200),n(201),n(202),n(203),n(204),n(205),n(206),n(207),n(208),n(209),n(210),n(211),n(212),n(214),n(215),n(217),n(218),n(219),n(220),n(221),n(222),n(223),n(225),n(226),n(227),n(228),n(229),n(230),n(231),n(232),n(233),n(234),n(235),n(236),n(237),n(82),n(238),n(116),n(239),n(117),n(240),n(241),n(242),n(243),n(118),n(246),n(247),n(248),n(249),n(250),n(251),n(252),n(253),n(254),n(255),n(256),n(257),n(258),n(259),n(260),n(261),n(262),n(263),n(264),n(265),n(266),n(267),n(268),n(269),n(270),n(271),n(272),n(273),n(274),t.exports=n(7)},function(t,e,n){"use strict";var r=n(1),i=n(13),o=n(8),u=n(0),a=n(11),c=n(29).KEY,s=n(2),f=n(50),l=n(40),d=n(31),h=n(5),v=n(63),p=n(97),g=n(135),y=n(53),b=n(3),m=n(4),M=n(10),S=n(15),w=n(28),x=n(30),_=n(35),P=n(100),A=n(22),F=n(52),O=n(9),E=n(33),k=A.f,R=O.f,T=P.f,L=r.Symbol,B=r.JSON,N=B&&B.stringify,I=h("_hidden"),j=h("toPrimitive"),C={}.propertyIsEnumerable,W=f("symbol-registry"),D=f("symbols"),G=f("op-symbols"),V=Object.prototype,z="function"==typeof L&&!!F.f,U=r.QObject,q=!U||!U.prototype||!U.prototype.findChild,Y=o&&s((function(){return 7!=_(R({},"a",{get:function(){return R(this,"a",{value:7}).a}})).a}))?function(t,e,n){var r=k(V,e);r&&delete V[e],R(t,e,n),r&&t!==V&&R(V,e,r)}:R,H=function(t){var e=D[t]=_(L.prototype);return e._k=t,e},K=z&&"symbol"==typeof L.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof L},Q=function(t,e,n){return t===V&&Q(G,e,n),b(t),e=w(e,!0),b(n),i(D,e)?(n.enumerable?(i(t,I)&&t[I][e]&&(t[I][e]=!1),n=_(n,{enumerable:x(0,!1)})):(i(t,I)||R(t,I,x(1,{})),t[I][e]=!0),Y(t,e,n)):R(t,e,n)},J=function(t,e){b(t);for(var n,r=g(e=S(e)),i=0,o=r.length;o>i;)Q(t,n=r[i++],e[n]);return t},X=function(t){var e=C.call(this,t=w(t,!0));return!(this===V&&i(D,t)&&!i(G,t))&&(!(e||!i(this,t)||!i(D,t)||i(this,I)&&this[I][t])||e)},$=function(t,e){if(t=S(t),e=w(e,!0),t!==V||!i(D,e)||i(G,e)){var n=k(t,e);return!n||!i(D,e)||i(t,I)&&t[I][e]||(n.enumerable=!0),n}},Z=function(t){for(var e,n=T(S(t)),r=[],o=0;n.length>o;)i(D,e=n[o++])||e==I||e==c||r.push(e);return r},tt=function(t){for(var e,n=t===V,r=T(n?G:S(t)),o=[],u=0;r.length>u;)!i(D,e=r[u++])||n&&!i(V,e)||o.push(D[e]);return o};z||(a((L=function(){if(this instanceof L)throw TypeError("Symbol is not a constructor!");var t=d(arguments.length>0?arguments[0]:void 0),e=function(n){this===V&&e.call(G,n),i(this,I)&&i(this[I],t)&&(this[I][t]=!1),Y(this,t,x(1,n))};return o&&q&&Y(V,t,{configurable:!0,set:e}),H(t)}).prototype,"toString",(function(){return this._k})),A.f=$,O.f=Q,n(36).f=P.f=Z,n(47).f=X,F.f=tt,o&&!n(32)&&a(V,"propertyIsEnumerable",X,!0),v.f=function(t){return H(h(t))}),u(u.G+u.W+u.F*!z,{Symbol:L});for(var et="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),nt=0;et.length>nt;)h(et[nt++]);for(var rt=E(h.store),it=0;rt.length>it;)p(rt[it++]);u(u.S+u.F*!z,"Symbol",{for:function(t){return i(W,t+="")?W[t]:W[t]=L(t)},keyFor:function(t){if(!K(t))throw TypeError(t+" is not a symbol!");for(var e in W)if(W[e]===t)return e},useSetter:function(){q=!0},useSimple:function(){q=!1}}),u(u.S+u.F*!z,"Object",{create:function(t,e){return void 0===e?_(t):J(_(t),e)},defineProperty:Q,defineProperties:J,getOwnPropertyDescriptor:$,getOwnPropertyNames:Z,getOwnPropertySymbols:tt});var ot=s((function(){F.f(1)}));u(u.S+u.F*ot,"Object",{getOwnPropertySymbols:function(t){return F.f(M(t))}}),B&&u(u.S+u.F*(!z||s((function(){var t=L();return"[null]"!=N([t])||"{}"!=N({a:t})||"{}"!=N(Object(t))}))),"JSON",{stringify:function(t){for(var e,n,r=[t],i=1;arguments.length>i;)r.push(arguments[i++]);if(n=e=r[1],(m(e)||void 0!==t)&&!K(t))return y(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!K(e))return e}),r[1]=e,N.apply(B,r)}}),L.prototype[j]||n(14)(L.prototype,j,L.prototype.valueOf),l(L,"Symbol"),l(Math,"Math",!0),l(r.JSON,"JSON",!0)},function(t,e,n){t.exports=n(50)("native-function-to-string",Function.toString)},function(t,e,n){var r=n(33),i=n(52),o=n(47);t.exports=function(t){var e=r(t),n=i.f;if(n)for(var u,a=n(t),c=o.f,s=0;a.length>s;)c.call(t,u=a[s++])&&e.push(u);return e}},function(t,e,n){var r=n(0);r(r.S,"Object",{create:n(35)})},function(t,e,n){var r=n(0);r(r.S+r.F*!n(8),"Object",{defineProperty:n(9).f})},function(t,e,n){var r=n(0);r(r.S+r.F*!n(8),"Object",{defineProperties:n(99)})},function(t,e,n){var r=n(15),i=n(22).f;n(23)("getOwnPropertyDescriptor",(function(){return function(t,e){return i(r(t),e)}}))},function(t,e,n){var r=n(10),i=n(37);n(23)("getPrototypeOf",(function(){return function(t){return i(r(t))}}))},function(t,e,n){var r=n(10),i=n(33);n(23)("keys",(function(){return function(t){return i(r(t))}}))},function(t,e,n){n(23)("getOwnPropertyNames",(function(){return n(100).f}))},function(t,e,n){var r=n(4),i=n(29).onFreeze;n(23)("freeze",(function(t){return function(e){return t&&r(e)?t(i(e)):e}}))},function(t,e,n){var r=n(4),i=n(29).onFreeze;n(23)("seal",(function(t){return function(e){return t&&r(e)?t(i(e)):e}}))},function(t,e,n){var r=n(4),i=n(29).onFreeze;n(23)("preventExtensions",(function(t){return function(e){return t&&r(e)?t(i(e)):e}}))},function(t,e,n){var r=n(4);n(23)("isFrozen",(function(t){return function(e){return!r(e)||!!t&&t(e)}}))},function(t,e,n){var r=n(4);n(23)("isSealed",(function(t){return function(e){return!r(e)||!!t&&t(e)}}))},function(t,e,n){var r=n(4);n(23)("isExtensible",(function(t){return function(e){return!!r(e)&&(!t||t(e))}}))},function(t,e,n){var r=n(0);r(r.S+r.F,"Object",{assign:n(101)})},function(t,e,n){var r=n(0);r(r.S,"Object",{is:n(102)})},function(t,e,n){var r=n(0);r(r.S,"Object",{setPrototypeOf:n(67).set})},function(t,e,n){"use strict";var r=n(48),i={};i[n(5)("toStringTag")]="z",i+""!="[object z]"&&n(11)(Object.prototype,"toString",(function(){return"[object "+r(this)+"]"}),!0)},function(t,e,n){var r=n(0);r(r.P,"Function",{bind:n(103)})},function(t,e,n){var r=n(9).f,i=Function.prototype,o=/^\s*function ([^ (]*)/;"name"in i||n(8)&&r(i,"name",{configurable:!0,get:function(){try{return(""+this).match(o)[1]}catch(t){return""}}})},function(t,e,n){"use strict";var r=n(4),i=n(37),o=n(5)("hasInstance"),u=Function.prototype;o in u||n(9).f(u,o,{value:function(t){if("function"!=typeof this||!r(t))return!1;if(!r(this.prototype))return t instanceof this;for(;t=i(t);)if(this.prototype===t)return!0;return!1}})},function(t,e,n){var r=n(0),i=n(105);r(r.G+r.F*(parseInt!=i),{parseInt:i})},function(t,e,n){var r=n(0),i=n(106);r(r.G+r.F*(parseFloat!=i),{parseFloat:i})},function(t,e,n){"use strict";var r=n(1),i=n(13),o=n(25),u=n(69),a=n(28),c=n(2),s=n(36).f,f=n(22).f,l=n(9).f,d=n(41).trim,h=r.Number,v=h,p=h.prototype,g="Number"==o(n(35)(p)),y="trim"in String.prototype,b=function(t){var e=a(t,!1);if("string"==typeof e&&e.length>2){var n,r,i,o=(e=y?e.trim():d(e,3)).charCodeAt(0);if(43===o||45===o){if(88===(n=e.charCodeAt(2))||120===n)return NaN}else if(48===o){switch(e.charCodeAt(1)){case 66:case 98:r=2,i=49;break;case 79:case 111:r=8,i=55;break;default:return+e}for(var u,c=e.slice(2),s=0,f=c.length;si)return NaN;return parseInt(c,r)}}return+e};if(!h(" 0o1")||!h("0b1")||h("+0x1")){h=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof h&&(g?c((function(){p.valueOf.call(n)})):"Number"!=o(n))?u(new v(b(e)),n,h):b(e)};for(var m,M=n(8)?s(v):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),S=0;M.length>S;S++)i(v,m=M[S])&&!i(h,m)&&l(h,m,f(v,m));h.prototype=p,p.constructor=h,n(11)(r,"Number",h)}},function(t,e,n){"use strict";var r=n(0),i=n(21),o=n(107),u=n(70),a=1..toFixed,c=Math.floor,s=[0,0,0,0,0,0],f="Number.toFixed: incorrect invocation!",l=function(t,e){for(var n=-1,r=e;++n<6;)r+=t*s[n],s[n]=r%1e7,r=c(r/1e7)},d=function(t){for(var e=6,n=0;--e>=0;)n+=s[e],s[e]=c(n/t),n=n%t*1e7},h=function(){for(var t=6,e="";--t>=0;)if(""!==e||0===t||0!==s[t]){var n=String(s[t]);e=""===e?n:e+u.call("0",7-n.length)+n}return e},v=function(t,e,n){return 0===e?n:e%2==1?v(t,e-1,n*t):v(t*t,e/2,n)};r(r.P+r.F*(!!a&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!n(2)((function(){a.call({})}))),"Number",{toFixed:function(t){var e,n,r,a,c=o(this,f),s=i(t),p="",g="0";if(s<0||s>20)throw RangeError(f);if(c!=c)return"NaN";if(c<=-1e21||c>=1e21)return String(c);if(c<0&&(p="-",c=-c),c>1e-21)if(n=(e=function(t){for(var e=0,n=t;n>=4096;)e+=12,n/=4096;for(;n>=2;)e+=1,n/=2;return e}(c*v(2,69,1))-69)<0?c*v(2,-e,1):c/v(2,e,1),n*=4503599627370496,(e=52-e)>0){for(l(0,n),r=s;r>=7;)l(1e7,0),r-=7;for(l(v(10,r,1),0),r=e-1;r>=23;)d(1<<23),r-=23;d(1<0?p+((a=g.length)<=s?"0."+u.call("0",s-a)+g:g.slice(0,a-s)+"."+g.slice(a-s)):p+g}})},function(t,e,n){"use strict";var r=n(0),i=n(2),o=n(107),u=1..toPrecision;r(r.P+r.F*(i((function(){return"1"!==u.call(1,void 0)}))||!i((function(){u.call({})}))),"Number",{toPrecision:function(t){var e=o(this,"Number#toPrecision: incorrect invocation!");return void 0===t?u.call(e):u.call(e,t)}})},function(t,e,n){var r=n(0);r(r.S,"Number",{EPSILON:Math.pow(2,-52)})},function(t,e,n){var r=n(0),i=n(1).isFinite;r(r.S,"Number",{isFinite:function(t){return"number"==typeof t&&i(t)}})},function(t,e,n){var r=n(0);r(r.S,"Number",{isInteger:n(108)})},function(t,e,n){var r=n(0);r(r.S,"Number",{isNaN:function(t){return t!=t}})},function(t,e,n){var r=n(0),i=n(108),o=Math.abs;r(r.S,"Number",{isSafeInteger:function(t){return i(t)&&o(t)<=9007199254740991}})},function(t,e,n){var r=n(0);r(r.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},function(t,e,n){var r=n(0);r(r.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},function(t,e,n){var r=n(0),i=n(106);r(r.S+r.F*(Number.parseFloat!=i),"Number",{parseFloat:i})},function(t,e,n){var r=n(0),i=n(105);r(r.S+r.F*(Number.parseInt!=i),"Number",{parseInt:i})},function(t,e,n){var r=n(0),i=n(109),o=Math.sqrt,u=Math.acosh;r(r.S+r.F*!(u&&710==Math.floor(u(Number.MAX_VALUE))&&u(1/0)==1/0),"Math",{acosh:function(t){return(t=+t)<1?NaN:t>94906265.62425156?Math.log(t)+Math.LN2:i(t-1+o(t-1)*o(t+1))}})},function(t,e,n){var r=n(0),i=Math.asinh;r(r.S+r.F*!(i&&1/i(0)>0),"Math",{asinh:function t(e){return isFinite(e=+e)&&0!=e?e<0?-t(-e):Math.log(e+Math.sqrt(e*e+1)):e}})},function(t,e,n){var r=n(0),i=Math.atanh;r(r.S+r.F*!(i&&1/i(-0)<0),"Math",{atanh:function(t){return 0==(t=+t)?t:Math.log((1+t)/(1-t))/2}})},function(t,e,n){var r=n(0),i=n(71);r(r.S,"Math",{cbrt:function(t){return i(t=+t)*Math.pow(Math.abs(t),1/3)}})},function(t,e,n){var r=n(0);r(r.S,"Math",{clz32:function(t){return(t>>>=0)?31-Math.floor(Math.log(t+.5)*Math.LOG2E):32}})},function(t,e,n){var r=n(0),i=Math.exp;r(r.S,"Math",{cosh:function(t){return(i(t=+t)+i(-t))/2}})},function(t,e,n){var r=n(0),i=n(72);r(r.S+r.F*(i!=Math.expm1),"Math",{expm1:i})},function(t,e,n){var r=n(0);r(r.S,"Math",{fround:n(178)})},function(t,e,n){var r=n(71),i=Math.pow,o=i(2,-52),u=i(2,-23),a=i(2,127)*(2-u),c=i(2,-126);t.exports=Math.fround||function(t){var e,n,i=Math.abs(t),s=r(t);return ia||n!=n?s*(1/0):s*n}},function(t,e,n){var r=n(0),i=Math.abs;r(r.S,"Math",{hypot:function(t,e){for(var n,r,o=0,u=0,a=arguments.length,c=0;u0?(r=n/c)*r:n;return c===1/0?1/0:c*Math.sqrt(o)}})},function(t,e,n){var r=n(0),i=Math.imul;r(r.S+r.F*n(2)((function(){return-5!=i(4294967295,5)||2!=i.length})),"Math",{imul:function(t,e){var n=+t,r=+e,i=65535&n,o=65535&r;return 0|i*o+((65535&n>>>16)*o+i*(65535&r>>>16)<<16>>>0)}})},function(t,e,n){var r=n(0);r(r.S,"Math",{log10:function(t){return Math.log(t)*Math.LOG10E}})},function(t,e,n){var r=n(0);r(r.S,"Math",{log1p:n(109)})},function(t,e,n){var r=n(0);r(r.S,"Math",{log2:function(t){return Math.log(t)/Math.LN2}})},function(t,e,n){var r=n(0);r(r.S,"Math",{sign:n(71)})},function(t,e,n){var r=n(0),i=n(72),o=Math.exp;r(r.S+r.F*n(2)((function(){return-2e-17!=!Math.sinh(-2e-17)})),"Math",{sinh:function(t){return Math.abs(t=+t)<1?(i(t)-i(-t))/2:(o(t-1)-o(-t-1))*(Math.E/2)}})},function(t,e,n){var r=n(0),i=n(72),o=Math.exp;r(r.S,"Math",{tanh:function(t){var e=i(t=+t),n=i(-t);return e==1/0?1:n==1/0?-1:(e-n)/(o(t)+o(-t))}})},function(t,e,n){var r=n(0);r(r.S,"Math",{trunc:function(t){return(t>0?Math.floor:Math.ceil)(t)}})},function(t,e,n){var r=n(0),i=n(34),o=String.fromCharCode,u=String.fromCodePoint;r(r.S+r.F*(!!u&&1!=u.length),"String",{fromCodePoint:function(t){for(var e,n=[],r=arguments.length,u=0;r>u;){if(e=+arguments[u++],i(e,1114111)!==e)throw RangeError(e+" is not a valid code point");n.push(e<65536?o(e):o(55296+((e-=65536)>>10),e%1024+56320))}return n.join("")}})},function(t,e,n){var r=n(0),i=n(15),o=n(6);r(r.S,"String",{raw:function(t){for(var e=i(t.raw),n=o(e.length),r=arguments.length,u=[],a=0;n>a;)u.push(String(e[a++])),a=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})}))},function(t,e,n){"use strict";var r=n(0),i=n(73)(!1);r(r.P,"String",{codePointAt:function(t){return i(this,t)}})},function(t,e,n){"use strict";var r=n(0),i=n(6),o=n(75),u="".endsWith;r(r.P+r.F*n(77)("endsWith"),"String",{endsWith:function(t){var e=o(this,t,"endsWith"),n=arguments.length>1?arguments[1]:void 0,r=i(e.length),a=void 0===n?r:Math.min(i(n),r),c=String(t);return u?u.call(e,c,a):e.slice(a-c.length,a)===c}})},function(t,e,n){"use strict";var r=n(0),i=n(75);r(r.P+r.F*n(77)("includes"),"String",{includes:function(t){return!!~i(this,t,"includes").indexOf(t,arguments.length>1?arguments[1]:void 0)}})},function(t,e,n){var r=n(0);r(r.P,"String",{repeat:n(70)})},function(t,e,n){"use strict";var r=n(0),i=n(6),o=n(75),u="".startsWith;r(r.P+r.F*n(77)("startsWith"),"String",{startsWith:function(t){var e=o(this,t,"startsWith"),n=i(Math.min(arguments.length>1?arguments[1]:void 0,e.length)),r=String(t);return u?u.call(e,r,n):e.slice(n,n+r.length)===r}})},function(t,e,n){"use strict";n(12)("anchor",(function(t){return function(e){return t(this,"a","name",e)}}))},function(t,e,n){"use strict";n(12)("big",(function(t){return function(){return t(this,"big","","")}}))},function(t,e,n){"use strict";n(12)("blink",(function(t){return function(){return t(this,"blink","","")}}))},function(t,e,n){"use strict";n(12)("bold",(function(t){return function(){return t(this,"b","","")}}))},function(t,e,n){"use strict";n(12)("fixed",(function(t){return function(){return t(this,"tt","","")}}))},function(t,e,n){"use strict";n(12)("fontcolor",(function(t){return function(e){return t(this,"font","color",e)}}))},function(t,e,n){"use strict";n(12)("fontsize",(function(t){return function(e){return t(this,"font","size",e)}}))},function(t,e,n){"use strict";n(12)("italics",(function(t){return function(){return t(this,"i","","")}}))},function(t,e,n){"use strict";n(12)("link",(function(t){return function(e){return t(this,"a","href",e)}}))},function(t,e,n){"use strict";n(12)("small",(function(t){return function(){return t(this,"small","","")}}))},function(t,e,n){"use strict";n(12)("strike",(function(t){return function(){return t(this,"strike","","")}}))},function(t,e,n){"use strict";n(12)("sub",(function(t){return function(){return t(this,"sub","","")}}))},function(t,e,n){"use strict";n(12)("sup",(function(t){return function(){return t(this,"sup","","")}}))},function(t,e,n){var r=n(0);r(r.S,"Date",{now:function(){return(new Date).getTime()}})},function(t,e,n){"use strict";var r=n(0),i=n(10),o=n(28);r(r.P+r.F*n(2)((function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})})),"Date",{toJSON:function(t){var e=i(this),n=o(e);return"number"!=typeof n||isFinite(n)?e.toISOString():null}})},function(t,e,n){var r=n(0),i=n(213);r(r.P+r.F*(Date.prototype.toISOString!==i),"Date",{toISOString:i})},function(t,e,n){"use strict";var r=n(2),i=Date.prototype.getTime,o=Date.prototype.toISOString,u=function(t){return t>9?t:"0"+t};t.exports=r((function(){return"0385-07-25T07:06:39.999Z"!=o.call(new Date(-5e13-1))}))||!r((function(){o.call(new Date(NaN))}))?function(){if(!isFinite(i.call(this)))throw RangeError("Invalid time value");var t=this,e=t.getUTCFullYear(),n=t.getUTCMilliseconds(),r=e<0?"-":e>9999?"+":"";return r+("00000"+Math.abs(e)).slice(r?-6:-4)+"-"+u(t.getUTCMonth()+1)+"-"+u(t.getUTCDate())+"T"+u(t.getUTCHours())+":"+u(t.getUTCMinutes())+":"+u(t.getUTCSeconds())+"."+(n>99?n:"0"+u(n))+"Z"}:o},function(t,e,n){var r=Date.prototype,i=r.toString,o=r.getTime;new Date(NaN)+""!="Invalid Date"&&n(11)(r,"toString",(function(){var t=o.call(this);return t==t?i.call(this):"Invalid Date"}))},function(t,e,n){var r=n(5)("toPrimitive"),i=Date.prototype;r in i||n(14)(i,r,n(216))},function(t,e,n){"use strict";var r=n(3),i=n(28);t.exports=function(t){if("string"!==t&&"number"!==t&&"default"!==t)throw TypeError("Incorrect hint");return i(r(this),"number"!=t)}},function(t,e,n){var r=n(0);r(r.S,"Array",{isArray:n(53)})},function(t,e,n){"use strict";var r=n(19),i=n(0),o=n(10),u=n(111),a=n(78),c=n(6),s=n(79),f=n(80);i(i.S+i.F*!n(54)((function(t){Array.from(t)})),"Array",{from:function(t){var e,n,i,l,d=o(t),h="function"==typeof this?this:Array,v=arguments.length,p=v>1?arguments[1]:void 0,g=void 0!==p,y=0,b=f(d);if(g&&(p=r(p,v>2?arguments[2]:void 0,2)),null==b||h==Array&&a(b))for(n=new h(e=c(d.length));e>y;y++)s(n,y,g?p(d[y],y):d[y]);else for(l=b.call(d),n=new h;!(i=l.next()).done;y++)s(n,y,g?u(l,p,[i.value,y],!0):i.value);return n.length=y,n}})},function(t,e,n){"use strict";var r=n(0),i=n(79);r(r.S+r.F*n(2)((function(){function t(){}return!(Array.of.call(t)instanceof t)})),"Array",{of:function(){for(var t=0,e=arguments.length,n=new("function"==typeof this?this:Array)(e);e>t;)i(n,t,arguments[t++]);return n.length=e,n}})},function(t,e,n){"use strict";var r=n(0),i=n(15),o=[].join;r(r.P+r.F*(n(46)!=Object||!n(16)(o)),"Array",{join:function(t){return o.call(i(this),void 0===t?",":t)}})},function(t,e,n){"use strict";var r=n(0),i=n(66),o=n(25),u=n(34),a=n(6),c=[].slice;r(r.P+r.F*n(2)((function(){i&&c.call(i)})),"Array",{slice:function(t,e){var n=a(this.length),r=o(this);if(e=void 0===e?n:e,"Array"==r)return c.call(this,t,e);for(var i=u(t,n),s=u(e,n),f=a(s-i),l=new Array(f),d=0;d1&&(r=Math.min(r,o(arguments[1]))),r<0&&(r=n+r);r>=0;r--)if(r in e&&e[r]===t)return r||0;return-1}})},function(t,e,n){var r=n(0);r(r.P,"Array",{copyWithin:n(114)}),n(38)("copyWithin")},function(t,e,n){var r=n(0);r(r.P,"Array",{fill:n(81)}),n(38)("fill")},function(t,e,n){"use strict";var r=n(0),i=n(24)(5),o=!0;"find"in[]&&Array(1).find((function(){o=!1})),r(r.P+r.F*o,"Array",{find:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),n(38)("find")},function(t,e,n){"use strict";var r=n(0),i=n(24)(6),o="findIndex",u=!0;o in[]&&Array(1)[o]((function(){u=!1})),r(r.P+r.F*u,"Array",{findIndex:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),n(38)(o)},function(t,e,n){n(43)("Array")},function(t,e,n){var r=n(1),i=n(69),o=n(9).f,u=n(36).f,a=n(76),c=n(55),s=r.RegExp,f=s,l=s.prototype,d=/a/g,h=/a/g,v=new s(d)!==d;if(n(8)&&(!v||n(2)((function(){return h[n(5)("match")]=!1,s(d)!=d||s(h)==h||"/a/i"!=s(d,"i")})))){s=function(t,e){var n=this instanceof s,r=a(t),o=void 0===e;return!n&&r&&t.constructor===s&&o?t:i(v?new f(r&&!o?t.source:t,e):f((r=t instanceof s)?t.source:t,r&&o?c.call(t):e),n?this:l,s)};for(var p=function(t){t in s||o(s,t,{configurable:!0,get:function(){return f[t]},set:function(e){f[t]=e}})},g=u(f),y=0;g.length>y;)p(g[y++]);l.constructor=s,s.prototype=l,n(11)(r,"RegExp",s)}n(43)("RegExp")},function(t,e,n){"use strict";n(117);var r=n(3),i=n(55),o=n(8),u=/./.toString,a=function(t){n(11)(RegExp.prototype,"toString",t,!0)};n(2)((function(){return"/a/b"!=u.call({source:"a",flags:"b"})}))?a((function(){var t=r(this);return"/".concat(t.source,"/","flags"in t?t.flags:!o&&t instanceof RegExp?i.call(t):void 0)})):"toString"!=u.name&&a((function(){return u.call(this)}))},function(t,e,n){"use strict";var r=n(3),i=n(6),o=n(84),u=n(56);n(57)("match",1,(function(t,e,n,a){return[function(n){var r=t(this),i=null==n?void 0:n[e];return void 0!==i?i.call(n,r):new RegExp(n)[e](String(r))},function(t){var e=a(n,t,this);if(e.done)return e.value;var c=r(t),s=String(this);if(!c.global)return u(c,s);var f=c.unicode;c.lastIndex=0;for(var l,d=[],h=0;null!==(l=u(c,s));){var v=String(l[0]);d[h]=v,""===v&&(c.lastIndex=o(s,i(c.lastIndex),f)),h++}return 0===h?null:d}]}))},function(t,e,n){"use strict";var r=n(3),i=n(10),o=n(6),u=n(21),a=n(84),c=n(56),s=Math.max,f=Math.min,l=Math.floor,d=/\$([$&`']|\d\d?|<[^>]*>)/g,h=/\$([$&`']|\d\d?)/g;n(57)("replace",2,(function(t,e,n,v){return[function(r,i){var o=t(this),u=null==r?void 0:r[e];return void 0!==u?u.call(r,o,i):n.call(String(o),r,i)},function(t,e){var i=v(n,t,this,e);if(i.done)return i.value;var l=r(t),d=String(this),h="function"==typeof e;h||(e=String(e));var g=l.global;if(g){var y=l.unicode;l.lastIndex=0}for(var b=[];;){var m=c(l,d);if(null===m)break;if(b.push(m),!g)break;""===String(m[0])&&(l.lastIndex=a(d,o(l.lastIndex),y))}for(var M,S="",w=0,x=0;x=w&&(S+=d.slice(w,P)+k,w=P+_.length)}return S+d.slice(w)}];function p(t,e,r,o,u,a){var c=r+t.length,s=o.length,f=h;return void 0!==u&&(u=i(u),f=d),n.call(a,f,(function(n,i){var a;switch(i.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,r);case"'":return e.slice(c);case"<":a=u[i.slice(1,-1)];break;default:var f=+i;if(0===f)return n;if(f>s){var d=l(f/10);return 0===d?n:d<=s?void 0===o[d-1]?i.charAt(1):o[d-1]+i.charAt(1):n}a=o[f-1]}return void 0===a?"":a}))}}))},function(t,e,n){"use strict";var r=n(3),i=n(102),o=n(56);n(57)("search",1,(function(t,e,n,u){return[function(n){var r=t(this),i=null==n?void 0:n[e];return void 0!==i?i.call(n,r):new RegExp(n)[e](String(r))},function(t){var e=u(n,t,this);if(e.done)return e.value;var a=r(t),c=String(this),s=a.lastIndex;i(s,0)||(a.lastIndex=0);var f=o(a,c);return i(a.lastIndex,s)||(a.lastIndex=s),null===f?-1:f.index}]}))},function(t,e,n){"use strict";var r=n(76),i=n(3),o=n(49),u=n(84),a=n(6),c=n(56),s=n(83),f=n(2),l=Math.min,d=[].push,h=!f((function(){RegExp(4294967295,"y")}));n(57)("split",2,(function(t,e,n,f){var v;return v="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(t,e){var i=String(this);if(void 0===t&&0===e)return[];if(!r(t))return n.call(i,t,e);for(var o,u,a,c=[],f=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),l=0,h=void 0===e?4294967295:e>>>0,v=new RegExp(t.source,f+"g");(o=s.call(v,i))&&!((u=v.lastIndex)>l&&(c.push(i.slice(l,o.index)),o.length>1&&o.index=h));)v.lastIndex===o.index&&v.lastIndex++;return l===i.length?!a&&v.test("")||c.push(""):c.push(i.slice(l)),c.length>h?c.slice(0,h):c}:"0".split(void 0,0).length?function(t,e){return void 0===t&&0===e?[]:n.call(this,t,e)}:n,[function(n,r){var i=t(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,i,r):v.call(String(i),n,r)},function(t,e){var r=f(v,t,this,e,v!==n);if(r.done)return r.value;var s=i(t),d=String(this),p=o(s,RegExp),g=s.unicode,y=(s.ignoreCase?"i":"")+(s.multiline?"m":"")+(s.unicode?"u":"")+(h?"y":"g"),b=new p(h?s:"^(?:"+s.source+")",y),m=void 0===e?4294967295:e>>>0;if(0===m)return[];if(0===d.length)return null===c(b,d)?[d]:[];for(var M=0,S=0,w=[];S0?arguments[0]:void 0)}}),{get:function(t){var e=r.getEntry(i(this,"Map"),t);return e&&e.v},set:function(t,e){return r.def(i(this,"Map"),0===t?0:t,e)}},r,!0)},function(t,e,n){"use strict";var r=n(121),i=n(39);t.exports=n(60)("Set",(function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}}),{add:function(t){return r.def(i(this,"Set"),t=0===t?0:t,t)}},r)},function(t,e,n){"use strict";var r,i=n(1),o=n(24)(0),u=n(11),a=n(29),c=n(101),s=n(122),f=n(4),l=n(39),d=n(39),h=!i.ActiveXObject&&"ActiveXObject"in i,v=a.getWeak,p=Object.isExtensible,g=s.ufstore,y=function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},b={get:function(t){if(f(t)){var e=v(t);return!0===e?g(l(this,"WeakMap")).get(t):e?e[this._i]:void 0}},set:function(t,e){return s.def(l(this,"WeakMap"),t,e)}},m=t.exports=n(60)("WeakMap",y,b,s,!0,!0);d&&h&&(c((r=s.getConstructor(y,"WeakMap")).prototype,b),a.NEED=!0,o(["delete","has","get","set"],(function(t){var e=m.prototype,n=e[t];u(e,t,(function(e,i){if(f(e)&&!p(e)){this._f||(this._f=new r);var o=this._f[t](e,i);return"set"==t?this:o}return n.call(this,e,i)}))})))},function(t,e,n){"use strict";var r=n(122),i=n(39);n(60)("WeakSet",(function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}}),{add:function(t){return r.def(i(this,"WeakSet"),t,!0)}},r,!1,!0)},function(t,e,n){"use strict";var r=n(0),i=n(61),o=n(86),u=n(3),a=n(34),c=n(6),s=n(4),f=n(1).ArrayBuffer,l=n(49),d=o.ArrayBuffer,h=o.DataView,v=i.ABV&&f.isView,p=d.prototype.slice,g=i.VIEW;r(r.G+r.W+r.F*(f!==d),{ArrayBuffer:d}),r(r.S+r.F*!i.CONSTR,"ArrayBuffer",{isView:function(t){return v&&v(t)||s(t)&&g in t}}),r(r.P+r.U+r.F*n(2)((function(){return!new d(2).slice(1,void 0).byteLength})),"ArrayBuffer",{slice:function(t,e){if(void 0!==p&&void 0===e)return p.call(u(this),t);for(var n=u(this).byteLength,r=a(t,n),i=a(void 0===e?n:e,n),o=new(l(this,d))(c(i-r)),s=new h(this),f=new h(o),v=0;r=e.length)return{value:void 0,done:!0}}while(!((t=e[this._i++])in this._t));return{value:t,done:!1}})),r(r.S,"Reflect",{enumerate:function(t){return new o(t)}})},function(t,e,n){var r=n(22),i=n(37),o=n(13),u=n(0),a=n(4),c=n(3);u(u.S,"Reflect",{get:function t(e,n){var u,s,f=arguments.length<3?e:arguments[2];return c(e)===f?e[n]:(u=r.f(e,n))?o(u,"value")?u.value:void 0!==u.get?u.get.call(f):void 0:a(s=i(e))?t(s,n,f):void 0}})},function(t,e,n){var r=n(22),i=n(0),o=n(3);i(i.S,"Reflect",{getOwnPropertyDescriptor:function(t,e){return r.f(o(t),e)}})},function(t,e,n){var r=n(0),i=n(37),o=n(3);r(r.S,"Reflect",{getPrototypeOf:function(t){return i(o(t))}})},function(t,e,n){var r=n(0);r(r.S,"Reflect",{has:function(t,e){return e in t}})},function(t,e,n){var r=n(0),i=n(3),o=Object.isExtensible;r(r.S,"Reflect",{isExtensible:function(t){return i(t),!o||o(t)}})},function(t,e,n){var r=n(0);r(r.S,"Reflect",{ownKeys:n(124)})},function(t,e,n){var r=n(0),i=n(3),o=Object.preventExtensions;r(r.S,"Reflect",{preventExtensions:function(t){i(t);try{return o&&o(t),!0}catch(t){return!1}}})},function(t,e,n){var r=n(9),i=n(22),o=n(37),u=n(13),a=n(0),c=n(30),s=n(3),f=n(4);a(a.S,"Reflect",{set:function t(e,n,a){var l,d,h=arguments.length<4?e:arguments[3],v=i.f(s(e),n);if(!v){if(f(d=o(e)))return t(d,n,a,h);v=c(0)}if(u(v,"value")){if(!1===v.writable||!f(h))return!1;if(l=i.f(h,n)){if(l.get||l.set||!1===l.writable)return!1;l.value=a,r.f(h,n,l)}else r.f(h,n,c(0,a));return!0}return void 0!==v.set&&(v.set.call(h,a),!0)}})},function(t,e,n){var r=n(0),i=n(67);i&&r(r.S,"Reflect",{setPrototypeOf:function(t,e){i.check(t,e);try{return i.set(t,e),!0}catch(t){return!1}}})},function(t,e,n){n(276),t.exports=n(7).Array.includes},function(t,e,n){"use strict";var r=n(0),i=n(51)(!0);r(r.P,"Array",{includes:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),n(38)("includes")},function(t,e,n){n(278),t.exports=n(7).Array.flatMap},function(t,e,n){"use strict";var r=n(0),i=n(279),o=n(10),u=n(6),a=n(20),c=n(112);r(r.P,"Array",{flatMap:function(t){var e,n,r=o(this);return a(t),e=u(r.length),n=c(r,0),i(n,r,r,e,0,1,t,arguments[1]),n}}),n(38)("flatMap")},function(t,e,n){"use strict";var r=n(53),i=n(4),o=n(6),u=n(19),a=n(5)("isConcatSpreadable");t.exports=function t(e,n,c,s,f,l,d,h){for(var v,p,g=f,y=0,b=!!d&&u(d,h,3);y0)g=t(e,n,v,o(v.length),g,l-1)-1;else{if(g>=9007199254740991)throw TypeError();e[g]=v}g++}y++}return g}},function(t,e,n){n(281),t.exports=n(7).String.padStart},function(t,e,n){"use strict";var r=n(0),i=n(125),o=n(59),u=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(o);r(r.P+r.F*u,"String",{padStart:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0,!0)}})},function(t,e,n){n(283),t.exports=n(7).String.padEnd},function(t,e,n){"use strict";var r=n(0),i=n(125),o=n(59),u=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(o);r(r.P+r.F*u,"String",{padEnd:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0,!1)}})},function(t,e,n){n(285),t.exports=n(7).String.trimLeft},function(t,e,n){"use strict";n(41)("trimLeft",(function(t){return function(){return t(this,1)}}),"trimStart")},function(t,e,n){n(287),t.exports=n(7).String.trimRight},function(t,e,n){"use strict";n(41)("trimRight",(function(t){return function(){return t(this,2)}}),"trimEnd")},function(t,e,n){n(289),t.exports=n(63).f("asyncIterator")},function(t,e,n){n(97)("asyncIterator")},function(t,e,n){n(291),t.exports=n(7).Object.getOwnPropertyDescriptors},function(t,e,n){var r=n(0),i=n(124),o=n(15),u=n(22),a=n(79);r(r.S,"Object",{getOwnPropertyDescriptors:function(t){for(var e,n,r=o(t),c=u.f,s=i(r),f={},l=0;s.length>l;)void 0!==(n=c(r,e=s[l++]))&&a(f,e,n);return f}})},function(t,e,n){n(293),t.exports=n(7).Object.values},function(t,e,n){var r=n(0),i=n(126)(!1);r(r.S,"Object",{values:function(t){return i(t)}})},function(t,e,n){n(295),t.exports=n(7).Object.entries},function(t,e,n){var r=n(0),i=n(126)(!0);r(r.S,"Object",{entries:function(t){return i(t)}})},function(t,e,n){"use strict";n(118),n(297),t.exports=n(7).Promise.finally},function(t,e,n){"use strict";var r=n(0),i=n(7),o=n(1),u=n(49),a=n(120);r(r.P+r.R,"Promise",{finally:function(t){var e=u(this,i.Promise||o.Promise),n="function"==typeof t;return this.then(n?function(n){return a(e,t()).then((function(){return n}))}:t,n?function(n){return a(e,t()).then((function(){throw n}))}:t)}})},function(t,e,n){n(299),n(300),n(301),t.exports=n(7)},function(t,e,n){var r=n(1),i=n(0),o=n(59),u=[].slice,a=/MSIE .\./.test(o),c=function(t){return function(e,n){var r=arguments.length>2,i=!!r&&u.call(arguments,2);return t(r?function(){("function"==typeof e?e:Function(e)).apply(this,i)}:e,n)}};i(i.G+i.B+i.F*a,{setTimeout:c(r.setTimeout),setInterval:c(r.setInterval)})},function(t,e,n){var r=n(0),i=n(85);r(r.G+r.B,{setImmediate:i.set,clearImmediate:i.clear})},function(t,e,n){for(var r=n(82),i=n(33),o=n(11),u=n(1),a=n(14),c=n(42),s=n(5),f=s("iterator"),l=s("toStringTag"),d=c.Array,h={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},v=i(h),p=0;p=0;--o){var u=this.tryEntries[o],a=u.completion;if("root"===u.tryLoc)return i("end");if(u.tryLoc<=this.prev){var c=r.call(u,"catchLoc"),s=r.call(u,"finallyLoc");if(c&&s){if(this.prev=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),A(n),v}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var i=r.arg;A(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:O(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),v}},t}(t.exports);try{regeneratorRuntime=r}catch(t){Function("r","regeneratorRuntime = r")(r)}},function(t,e,n){n(304),t.exports=n(127).global},function(t,e,n){var r=n(305);r(r.G,{global:n(87)})},function(t,e,n){var r=n(87),i=n(127),o=n(306),u=n(308),a=n(315),c=function(t,e,n){var s,f,l,d=t&c.F,h=t&c.G,v=t&c.S,p=t&c.P,g=t&c.B,y=t&c.W,b=h?i:i[e]||(i[e]={}),m=b.prototype,M=h?r:v?r[e]:(r[e]||{}).prototype;for(s in h&&(n=e),n)(f=!d&&M&&void 0!==M[s])&&a(b,s)||(l=f?M[s]:n[s],b[s]=h&&"function"!=typeof M[s]?n[s]:g&&f?o(l,r):y&&M[s]==l?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e.prototype=t.prototype,e}(l):p&&"function"==typeof l?o(Function.call,l):l,p&&((b.virtual||(b.virtual={}))[s]=l,t&c.R&&m&&!m[s]&&u(m,s,l)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},function(t,e,n){var r=n(307);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,i){return t.call(e,n,r,i)}}return function(){return t.apply(e,arguments)}}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,n){var r=n(309),i=n(314);t.exports=n(89)?function(t,e,n){return r.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var r=n(310),i=n(311),o=n(313),u=Object.defineProperty;e.f=n(89)?Object.defineProperty:function(t,e,n){if(r(t),e=o(e,!0),r(n),i)try{return u(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},function(t,e,n){var r=n(88);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},function(t,e,n){t.exports=!n(89)&&!n(128)((function(){return 7!=Object.defineProperty(n(312)("div"),"a",{get:function(){return 7}}).a}))},function(t,e,n){var r=n(88),i=n(87).document,o=r(i)&&r(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},function(t,e,n){var r=n(88);t.exports=function(t,e){if(!r(t))return t;var n,i;if(e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;if("function"==typeof(n=t.valueOf)&&!r(i=n.call(t)))return i;if(!e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}}])})); \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/bowser/es5.js b/food-ordering-app/server/node_modules/bowser/es5.js new file mode 100644 index 000000000..842c18060 --- /dev/null +++ b/food-ordering-app/server/node_modules/bowser/es5.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.bowser=t():e.bowser=t()}(this,(function(){return function(e){var t={};function r(i){if(t[i])return t[i].exports;var n=t[i]={i:i,l:!1,exports:{}};return e[i].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,i){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(r.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(i,n,function(t){return e[t]}.bind(null,n));return i},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=90)}({17:function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var i=r(18),n=function(){function e(){}return e.getFirstMatch=function(e,t){var r=t.match(e);return r&&r.length>0&&r[1]||""},e.getSecondMatch=function(e,t){var r=t.match(e);return r&&r.length>1&&r[2]||""},e.matchAndReturnConst=function(e,t,r){if(e.test(t))return r},e.getWindowsVersionName=function(e){switch(e){case"NT":return"NT";case"XP":return"XP";case"NT 5.0":return"2000";case"NT 5.1":return"XP";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}},e.getMacOSVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));t.push(0);var r=t[0],i=t[1];if(10===r)switch(i){case 5:return"Leopard";case 6:return"Snow Leopard";case 7:return"Lion";case 8:return"Mountain Lion";case 9:return"Mavericks";case 10:return"Yosemite";case 11:return"El Capitan";case 12:return"Sierra";case 13:return"High Sierra";case 14:return"Mojave";case 15:return"Catalina";default:return}switch(r){case 11:return"Big Sur";case 12:return"Monterey";case 13:return"Ventura";case 14:return"Sonoma";case 15:return"Sequoia";default:return}},e.getAndroidVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?"Cupcake":1===t[0]&&t[1]>=6?"Donut":2===t[0]&&t[1]<2?"Eclair":2===t[0]&&2===t[1]?"Froyo":2===t[0]&&t[1]>2?"Gingerbread":3===t[0]?"Honeycomb":4===t[0]&&t[1]<1?"Ice Cream Sandwich":4===t[0]&&t[1]<4?"Jelly Bean":4===t[0]&&t[1]>=4?"KitKat":5===t[0]?"Lollipop":6===t[0]?"Marshmallow":7===t[0]?"Nougat":8===t[0]?"Oreo":9===t[0]?"Pie":void 0},e.getVersionPrecision=function(e){return e.split(".").length},e.compareVersions=function(t,r,i){void 0===i&&(i=!1);var n=e.getVersionPrecision(t),a=e.getVersionPrecision(r),o=Math.max(n,a),s=0,u=e.map([t,r],(function(t){var r=o-e.getVersionPrecision(t),i=t+new Array(r+1).join(".0");return e.map(i.split("."),(function(e){return new Array(20-e.length).join("0")+e})).reverse()}));for(i&&(s=o-Math.min(n,a)),o-=1;o>=s;){if(u[0][o]>u[1][o])return 1;if(u[0][o]===u[1][o]){if(o===s)return 0;o-=1}else if(u[0][o]1?n-1:0),o=1;o0){var o=Object.keys(r),u=s.default.find(o,(function(e){return t.isOS(e)}));if(u){var d=this.satisfies(r[u]);if(void 0!==d)return d}var c=s.default.find(o,(function(e){return t.isPlatform(e)}));if(c){var f=this.satisfies(r[c]);if(void 0!==f)return f}}if(a>0){var l=Object.keys(n),b=s.default.find(l,(function(e){return t.isBrowser(e,!0)}));if(void 0!==b)return this.compareVersion(n[b])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var r=this.getBrowserName().toLowerCase(),i=e.toLowerCase(),n=s.default.getBrowserTypeByAlias(i);return t&&n&&(i=n.toLowerCase()),i===r},t.compareVersion=function(e){var t=[0],r=e,i=!1,n=this.getBrowserVersion();if("string"==typeof n)return">"===e[0]||"<"===e[0]?(r=e.substr(1),"="===e[1]?(i=!0,r=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?r=e.substr(1):"~"===e[0]&&(i=!0,r=e.substr(1)),t.indexOf(s.default.compareVersions(n,r,i))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some((function(e){return t.is(e)}))},e}();t.default=d,e.exports=t.default},92:function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var i,n=(i=r(17))&&i.__esModule?i:{default:i};var a=/version\/(\d+(\.?_?\d+)+)/i,o=[{test:[/gptbot/i],describe:function(e){var t={name:"GPTBot"},r=n.default.getFirstMatch(/gptbot\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/chatgpt-user/i],describe:function(e){var t={name:"ChatGPT-User"},r=n.default.getFirstMatch(/chatgpt-user\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/oai-searchbot/i],describe:function(e){var t={name:"OAI-SearchBot"},r=n.default.getFirstMatch(/oai-searchbot\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/claudebot/i,/claude-web/i,/claude-user/i,/claude-searchbot/i],describe:function(e){var t={name:"ClaudeBot"},r=n.default.getFirstMatch(/(?:claudebot|claude-web|claude-user|claude-searchbot)\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/omgilibot/i,/webzio-extended/i],describe:function(e){var t={name:"Omgilibot"},r=n.default.getFirstMatch(/(?:omgilibot|webzio-extended)\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/diffbot/i],describe:function(e){var t={name:"Diffbot"},r=n.default.getFirstMatch(/diffbot\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/perplexitybot/i],describe:function(e){var t={name:"PerplexityBot"},r=n.default.getFirstMatch(/perplexitybot\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/perplexity-user/i],describe:function(e){var t={name:"Perplexity-User"},r=n.default.getFirstMatch(/perplexity-user\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/youbot/i],describe:function(e){var t={name:"YouBot"},r=n.default.getFirstMatch(/youbot\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/meta-webindexer/i],describe:function(e){var t={name:"Meta-WebIndexer"},r=n.default.getFirstMatch(/meta-webindexer\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/meta-externalads/i],describe:function(e){var t={name:"Meta-ExternalAds"},r=n.default.getFirstMatch(/meta-externalads\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/meta-externalagent/i],describe:function(e){var t={name:"Meta-ExternalAgent"},r=n.default.getFirstMatch(/meta-externalagent\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/meta-externalfetcher/i],describe:function(e){var t={name:"Meta-ExternalFetcher"},r=n.default.getFirstMatch(/meta-externalfetcher\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/googlebot/i],describe:function(e){var t={name:"Googlebot"},r=n.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/linespider/i],describe:function(e){var t={name:"Linespider"},r=n.default.getFirstMatch(/(?:linespider)(?:-[-\w]+)?[\s/](\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/amazonbot/i],describe:function(e){var t={name:"AmazonBot"},r=n.default.getFirstMatch(/amazonbot\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/bingbot/i],describe:function(e){var t={name:"BingCrawler"},r=n.default.getFirstMatch(/bingbot\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/baiduspider/i],describe:function(e){var t={name:"BaiduSpider"},r=n.default.getFirstMatch(/baiduspider\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/duckduckbot/i],describe:function(e){var t={name:"DuckDuckBot"},r=n.default.getFirstMatch(/duckduckbot\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/ia_archiver/i],describe:function(e){var t={name:"InternetArchiveCrawler"},r=n.default.getFirstMatch(/ia_archiver\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/facebookexternalhit/i,/facebookcatalog/i],describe:function(){return{name:"FacebookExternalHit"}}},{test:[/slackbot/i,/slack-imgProxy/i],describe:function(e){var t={name:"SlackBot"},r=n.default.getFirstMatch(/(?:slackbot|slack-imgproxy)(?:-[-\w]+)?[\s/](\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/yahoo!?[\s/]*slurp/i],describe:function(){return{name:"YahooSlurp"}}},{test:[/yandexbot/i,/yandexmobilebot/i],describe:function(){return{name:"YandexBot"}}},{test:[/pingdom/i],describe:function(){return{name:"PingdomBot"}}},{test:[/opera/i],describe:function(e){var t={name:"Opera"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opr\/|opios/i],describe:function(e){var t={name:"Opera"},r=n.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:"Samsung Internet for Android"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Whale/i],describe:function(e){var t={name:"NAVER Whale Browser"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/PaleMoon/i],describe:function(e){var t={name:"Pale Moon"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/(?:PaleMoon)[\s/](\d+(?:\.\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:"MZ Browser"},r=n.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/focus/i],describe:function(e){var t={name:"Focus"},r=n.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/swing/i],describe:function(e){var t={name:"Swing"},r=n.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/coast/i],describe:function(e){var t={name:"Opera Coast"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(e){var t={name:"Opera Touch"},r=n.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/yabrowser/i],describe:function(e){var t={name:"Yandex Browser"},r=n.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:"UC Browser"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:"Maxthon"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/epiphany/i],describe:function(e){var t={name:"Epiphany"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/puffin/i],describe:function(e){var t={name:"Puffin"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sleipnir/i],describe:function(e){var t={name:"Sleipnir"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/k-meleon/i],describe:function(e){var t={name:"K-Meleon"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/micromessenger/i],describe:function(e){var t={name:"WeChat"},r=n.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?"QQ Browser Lite":"QQ Browser"},r=n.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/msie|trident/i],describe:function(e){var t={name:"Internet Explorer"},r=n.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/\sedg\//i],describe:function(e){var t={name:"Microsoft Edge"},r=n.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:"Microsoft Edge"},r=n.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/vivaldi/i],describe:function(e){var t={name:"Vivaldi"},r=n.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/seamonkey/i],describe:function(e){var t={name:"SeaMonkey"},r=n.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sailfish/i],describe:function(e){var t={name:"Sailfish"},r=n.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return r&&(t.version=r),t}},{test:[/silk/i],describe:function(e){var t={name:"Amazon Silk"},r=n.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/phantom/i],describe:function(e){var t={name:"PhantomJS"},r=n.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/slimerjs/i],describe:function(e){var t={name:"SlimerJS"},r=n.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t={name:"BlackBerry"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:"WebOS Browser"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/bada/i],describe:function(e){var t={name:"Bada"},r=n.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/tizen/i],describe:function(e){var t={name:"Tizen"},r=n.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/qupzilla/i],describe:function(e){var t={name:"QupZilla"},r=n.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/librewolf/i],describe:function(e){var t={name:"LibreWolf"},r=n.default.getFirstMatch(/(?:librewolf)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:"Firefox"},r=n.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/electron/i],describe:function(e){var t={name:"Electron"},r=n.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sogoumobilebrowser/i,/metasr/i,/se 2\.[x]/i],describe:function(e){var t={name:"Sogou Browser"},r=n.default.getFirstMatch(/(?:sogoumobilebrowser)[\s/](\d+(\.?_?\d+)+)/i,e),i=n.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e),a=n.default.getFirstMatch(/se ([\d.]+)x/i,e),o=r||i||a;return o&&(t.version=o),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:"Miui"},r=n.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){return!!e.hasBrand("DuckDuckGo")||e.test(/\sDdg\/[\d.]+$/i)},describe:function(e,t){var r={name:"DuckDuckGo"};if(t){var i=t.getBrandVersion("DuckDuckGo");if(i)return r.version=i,r}var a=n.default.getFirstMatch(/\sDdg\/([\d.]+)$/i,e);return a&&(r.version=a),r}},{test:function(e){return e.hasBrand("Brave")},describe:function(e,t){var r={name:"Brave"};if(t){var i=t.getBrandVersion("Brave");if(i)return r.version=i,r}return r}},{test:[/chromium/i],describe:function(e){var t={name:"Chromium"},r=n.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:"Chrome"},r=n.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/GSA/i],describe:function(e){var t={name:"Google Search"},r=n.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t={name:"Android Browser"},r=n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/playstation 4/i],describe:function(e){var t={name:"PlayStation 4"},r=n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:"Safari"},r=n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:n.default.getFirstMatch(t,e),version:n.default.getSecondMatch(t,e)}}}];t.default=o,e.exports=t.default},93:function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var i,n=(i=r(17))&&i.__esModule?i:{default:i},a=r(18);var o=[{test:[/Roku\/DVP/],describe:function(e){var t=n.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return{name:a.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=n.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return{name:a.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=n.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),r=n.default.getWindowsVersionName(t);return{name:a.OS_MAP.Windows,version:t,versionName:r}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(e){var t={name:a.OS_MAP.iOS},r=n.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return r&&(t.version=r),t}},{test:[/macintosh/i],describe:function(e){var t=n.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),r=n.default.getMacOSVersionName(t),i={name:a.OS_MAP.MacOS,version:t};return r&&(i.versionName=r),i}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=n.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return{name:a.OS_MAP.iOS,version:t}}},{test:[/OpenHarmony/i],describe:function(e){var t=n.default.getFirstMatch(/OpenHarmony\s+(\d+(\.\d+)*)/i,e);return{name:a.OS_MAP.HarmonyOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t=n.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),r=n.default.getAndroidVersionName(t),i={name:a.OS_MAP.Android,version:t};return r&&(i.versionName=r),i}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=n.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),r={name:a.OS_MAP.WebOS};return t&&t.length&&(r.version=t),r}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t=n.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||n.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||n.default.getFirstMatch(/\bbb(\d+)/i,e);return{name:a.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=n.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return{name:a.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=n.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return{name:a.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:a.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:a.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=n.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return{name:a.OS_MAP.PlayStation4,version:t}}}];t.default=o,e.exports=t.default},94:function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var i,n=(i=r(17))&&i.__esModule?i:{default:i},a=r(18);var o=[{test:[/googlebot/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Google"}}},{test:[/linespider/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Line"}}},{test:[/amazonbot/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Amazon"}}},{test:[/gptbot/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"OpenAI"}}},{test:[/chatgpt-user/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"OpenAI"}}},{test:[/oai-searchbot/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"OpenAI"}}},{test:[/baiduspider/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Baidu"}}},{test:[/bingbot/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Bing"}}},{test:[/duckduckbot/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"DuckDuckGo"}}},{test:[/claudebot/i,/claude-web/i,/claude-user/i,/claude-searchbot/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Anthropic"}}},{test:[/omgilibot/i,/webzio-extended/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Webz.io"}}},{test:[/diffbot/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Diffbot"}}},{test:[/perplexitybot/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Perplexity AI"}}},{test:[/perplexity-user/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Perplexity AI"}}},{test:[/youbot/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"You.com"}}},{test:[/ia_archiver/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Internet Archive"}}},{test:[/meta-webindexer/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Meta"}}},{test:[/meta-externalads/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Meta"}}},{test:[/meta-externalagent/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Meta"}}},{test:[/meta-externalfetcher/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Meta"}}},{test:[/facebookexternalhit/i,/facebookcatalog/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Meta"}}},{test:[/slackbot/i,/slack-imgProxy/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Slack"}}},{test:[/yahoo/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Yahoo"}}},{test:[/yandexbot/i,/yandexmobilebot/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Yandex"}}},{test:[/pingdom/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Pingdom"}}},{test:[/huawei/i],describe:function(e){var t=n.default.getFirstMatch(/(can-l01)/i,e)&&"Nova",r={type:a.PLATFORMS_MAP.mobile,vendor:"Huawei"};return t&&(r.model=t),r}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),r=e.test(/like (ipod|iphone)/i);return t&&!r},describe:function(e){var t=n.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:a.PLATFORMS_MAP.mobile,vendor:"Apple",model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/Nokia/i],describe:function(e){var t=n.default.getFirstMatch(/Nokia\s+([0-9]+(\.[0-9]+)?)/i,e),r={type:a.PLATFORMS_MAP.mobile,vendor:"Nokia"};return t&&(r.model=t),r}},{test:[/[^-]mobi/i],describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(e){return"blackberry"===e.getBrowserName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(e){return"bada"===e.getBrowserName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(e){return"windows phone"===e.getBrowserName()},describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(".")[0]);return"android"===e.getOSName(!0)&&t>=3},describe:function(){return{type:a.PLATFORMS_MAP.tablet}}},{test:function(e){return"android"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:[/smart-?tv|smarttv/i],describe:function(){return{type:a.PLATFORMS_MAP.tv}}},{test:[/netcast/i],describe:function(){return{type:a.PLATFORMS_MAP.tv}}},{test:function(e){return"macos"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(e){return"windows"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop}}},{test:function(e){return"linux"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop}}},{test:function(e){return"playstation 4"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.tv}}},{test:function(e){return"roku"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.tv}}}];t.default=o,e.exports=t.default},95:function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var i,n=(i=r(17))&&i.__esModule?i:{default:i},a=r(18);var o=[{test:function(e){return"microsoft edge"===e.getBrowserName(!0)},describe:function(e){if(/\sedg\//i.test(e))return{name:a.ENGINE_MAP.Blink};var t=n.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return{name:a.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:a.ENGINE_MAP.Trident},r=n.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:a.ENGINE_MAP.Presto},r=n.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=e.test(/gecko/i),r=e.test(/like gecko/i);return t&&!r},describe:function(e){var t={name:a.ENGINE_MAP.Gecko},r=n.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:a.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:a.ENGINE_MAP.WebKit},r=n.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}}];t.default=o,e.exports=t.default}})})); \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/bowser/index.d.ts b/food-ordering-app/server/node_modules/bowser/index.d.ts new file mode 100644 index 000000000..4489af879 --- /dev/null +++ b/food-ordering-app/server/node_modules/bowser/index.d.ts @@ -0,0 +1,353 @@ +// Type definitions for Bowser v2 +// Project: https://github.com/bowser-js/bowser +// Definitions by: Alexander P. Cerutti , + +export = Bowser; +export as namespace Bowser; + +declare namespace Bowser { + /** + * User-Agent Client Hints data structure + * @see https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUAData + */ + interface ClientHints { + brands?: Array<{ brand: string; version: string }>; + mobile?: boolean; + platform?: string; + platformVersion?: string; + architecture?: string; + model?: string; + wow64?: boolean; + } + + /** + * Creates a Parser instance + * @param {string} UA - User agent string + * @param {boolean | ClientHints} skipParsingOrHints - Either skip parsing flag or Client Hints + * @param {ClientHints} clientHints - User-Agent Client Hints data + */ + function getParser(UA: string, skipParsing?: boolean): Parser.Parser; + function getParser(UA: string, clientHints?: ClientHints): Parser.Parser; + function getParser(UA: string, skipParsing?: boolean, clientHints?: ClientHints): Parser.Parser; + + /** + * Creates a Parser instance and runs Parser.getResult immediately + * @param UA - User agent string + * @param clientHints - User-Agent Client Hints data + * @returns {Parser.ParsedResult} + */ + function parse(UA: string, clientHints?: ClientHints): Parser.ParsedResult; + + /** + * Constants exposed via bowser getters + */ + const BROWSER_MAP: Record; + const ENGINE_MAP: Record; + const OS_MAP: Record; + const PLATFORMS_MAP: Record; + + namespace Parser { + interface Parser { + constructor(UA: string, skipParsing?: boolean): Parser.Parser; + constructor(UA: string, clientHints?: ClientHints): Parser.Parser; + constructor(UA: string, skipParsing?: boolean, clientHints?: ClientHints): Parser.Parser; + + /** + * Get Client Hints data + * @return {ClientHints|null} + */ + getHints(): ClientHints | null; + + /** + * Check if a brand exists in Client Hints brands array + * @param {string} brandName The brand name to check for + * @return {boolean} + */ + hasBrand(brandName: string): boolean; + + /** + * Get brand version from Client Hints + * @param {string} brandName The brand name to get version for + * @return {string|undefined} + */ + getBrandVersion(brandName: string): string | undefined; + + /** + * Check if the version is equals the browser version + * @param version The string to compare with the browser version + * @returns {boolean} + */ + + compareVersion(version: string): boolean; + + /** + * Get parsed browser object + * @return {BrowserDetails} Browser's details + */ + + getBrowser(): BrowserDetails; + + /** + * Get browser's name + * @param {Boolean} [toLowerCase] return lower-cased value + * @return {String} Browser's name or an empty string + */ + + getBrowserName(toLowerCase?: boolean): string; + + /** + * Get browser's version + * @return {String} version of browser + */ + + getBrowserVersion(): string | undefined; + + /** + * Get OS + * @return {OSDetails} - OS Details + * + * @example + * this.getOS(); // { + * // name: 'macOS', + * // version: '10.11.12', + * // } + */ + + getOS(): OSDetails; + + /** + * Get OS name + * @param {Boolean} [toLowerCase] return lower-cased value + * @return {String} name of the OS — macOS, Windows, Linux, etc. + */ + + getOSName(toLowerCase?: boolean): string; + + /** + * Get OS version + * @return {String} full version with dots ('10.11.12', '5.6', etc) + */ + + getOSVersion(): string; + + /** + * Get parsed platform + * @returns {PlatformDetails} + */ + + getPlatform(): PlatformDetails; + + /** + * Get platform name + * @param {boolean} toLowerCase + */ + + getPlatformType(toLowerCase?: boolean): string; + + /** + * Get parsed engine + * @returns {EngineDetails} + */ + + getEngine(): EngineDetails; + + /** + * Get parsed engine's name + * @returns {String} Engine's name or an empty string + */ + + getEngineName(): string; + + /** + * Get parsed result + * @return {ParsedResult} + */ + + getResult(): ParsedResult; + + /** + * Get UserAgent string of current Parser instance + * @return {String} User-Agent String of the current object + */ + + getUA(): string; + + /** + * Is anything? Check if the browser is called "anything", + * the OS called "anything" or the platform called "anything" + * @param {String} anything + * @param [includingAlias=false] The flag showing whether alias will be included into comparison + * @returns {Boolean} + */ + + is(anything: any, includingAlias?: boolean): boolean; + + /** + * Check if the browser name equals the passed string + * @param browserName The string to compare with the browser name + * @param [includingAlias=false] The flag showing whether alias will be included into comparison + * @returns {boolean} + */ + + isBrowser(browserName: string, includingAlias?: boolean): boolean; + + /** + * Check if the engine name equals the passed string + * @param engineName The string to compare with the engine name + * @returns {boolean} + */ + + isEngine(engineName: string): boolean; + + /** + * Check if the OS name equals the passed string + * @param OSName The string to compare with the OS name + * @returns {boolean} + */ + + isOS(OSName: string): boolean; + + /** + * Check if the platform name equals the passed string + * @param platformName The string to compare with the platform name + * @returns {boolean} + */ + + isPlatform(platformName: string): boolean; + + /** + * Parse full information about the browser + * @returns {Parser.Parser} + */ + + parse(): Parser.Parser; + + /** + * Get parsed browser object + * @returns {BrowserDetails} + */ + + parseBrowser(): BrowserDetails; + + /** + * Get parsed engine + * @returns {EngineDetails} + */ + + parseEngine(): EngineDetails; + + /** + * Parse OS and save it to this.parsedResult.os + * @returns {OSDetails} + */ + + parseOS(): OSDetails; + + /** + * Get parsed platform + * @returns {PlatformDetails} + */ + + parsePlatform(): PlatformDetails; + + /** + * Check if parsed browser matches certain conditions + * + * @param {checkTree} checkTree It's one or two layered object, + * which can include a platform or an OS on the first layer + * and should have browsers specs on the bottom-laying layer + * + * @returns {Boolean|undefined} Whether the browser satisfies the set conditions or not. + * Returns `undefined` when the browser is no described in the checkTree object. + * + * @example + * const browser = new Bowser(UA); + * if (browser.check({chrome: '>118.01.1322' })) + * // or with os + * if (browser.check({windows: { chrome: '>118.01.1322' } })) + * // or with platforms + * if (browser.check({desktop: { chrome: '>118.01.1322' } })) + */ + + satisfies(checkTree: checkTree): boolean | undefined; + + /** + * Check if the browser name equals the passed string + * @param {string} browserName The string to compare with the browser name + * @param [includingAlias=false] The flag showing whether alias will be included into comparison + * @returns {boolean} + */ + + isBrowser(browserName: string, includingAlias?: boolean): boolean; + + /** + * Check if the engine name equals the passed string + * @param {string} engineName The string to compare with the engine name + * @returns {boolean} + */ + + isEngine(engineName: string): boolean; + + /** + * Check if the platform type equals the passed string + * @param {string} platformType The string to compare with the platform type + * @returns {boolean} + */ + + isPlatform(platformType: string): boolean; + + /** + * Check if the OS name equals the passed string + * @param {string} osName The string to compare with the OS name + * @returns {boolean} + */ + + isOS(osName: string): boolean; + + /** + * Check if any of the given values satisfies `.is(anything)` + * @param {string[]} anythings + * @returns {boolean} true if at least one condition is satisfied, false otherwise. + */ + + some(anythings: string[]): boolean | undefined; + + /** + * Test a UA string for a regexp + * @param regex + * @returns {boolean} true if the regex matches the UA, false otherwise. + */ + + test(regex: RegExp): boolean; + } + + interface ParsedResult { + browser: BrowserDetails; + os: OSDetails; + platform: PlatformDetails; + engine: EngineDetails; + } + + interface Details { + name?: string; + version?: string; + } + + interface OSDetails extends Details { + versionName?: string; + } + + interface PlatformDetails { + type?: string; + vendor?: string; + model?: string; + } + + type BrowserDetails = Details; + type EngineDetails = Details; + + interface checkTree { + [key: string]: any; + } + } +} diff --git a/food-ordering-app/server/node_modules/bowser/package.json b/food-ordering-app/server/node_modules/bowser/package.json new file mode 100644 index 000000000..2ee31c0ed --- /dev/null +++ b/food-ordering-app/server/node_modules/bowser/package.json @@ -0,0 +1,93 @@ +{ + "name": "bowser", + "description": "Lightweight browser detector", + "files": [ + "src/", + "es5.js", + "bundled.js", + "index.d.ts" + ], + "keywords": [ + "browser", + "useragent", + "user-agent", + "parser", + "ua", + "detection", + "ender", + "sniff" + ], + "homepage": "https://github.com/bowser-js/bowser", + "author": "Dustin Diaz (http://dustindiaz.com)", + "contributors": [ + { + "name": "Denis Demchenko", + "url": "http://twitter.com/lancedikson" + }, + { + "name": "Naor Peled", + "url": "https://github.com/naorpeled" + } + ], + "main": "es5.js", + "browser": "es5.js", + "module": "src/bowser.js", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "git+https://github.com/bowser-js/bowser.git" + }, + "devDependencies": { + "@babel/cli": "^7.11.6", + "@babel/core": "^7.8.0", + "@babel/polyfill": "^7.8.3", + "@babel/preset-env": "^7.8.2", + "@babel/register": "^7.8.3", + "ava": "^3.0.0", + "babel-eslint": "^10.0.3", + "babel-loader": "^8.0.6", + "babel-plugin-add-module-exports": "^1.0.2", + "babel-plugin-istanbul": "^6.0.0", + "compression-webpack-plugin": "^4.0.0", + "coveralls": "^3.0.6", + "docdash": "^1.1.1", + "eslint": "^6.5.1", + "eslint-config-airbnb-base": "^13.2.0", + "eslint-plugin-ava": "^10.0.0", + "eslint-plugin-import": "^2.18.2", + "gh-pages": "^3.0.0", + "jsdoc": "^3.6.3", + "nyc": "^15.0.0", + "sinon": "^9.0.0", + "testem": "^3.0.0", + "webpack": "^4.41.0", + "webpack-bundle-analyzer": "^3.5.2", + "webpack-cli": "^3.3.9", + "yamljs": "^0.3.0" + }, + "ava": { + "require": [ + "@babel/register" + ] + }, + "bugs": { + "url": "https://github.com/bowser-js/bowser/issues" + }, + "directories": { + "test": "test" + }, + "scripts": { + "build": "webpack --config webpack.config.js", + "generate-and-deploy-docs": "npm run generate-docs && gh-pages --dist docs --dest docs", + "watch": "webpack --watch --config webpack.config.js", + "lint:check": "eslint ./src", + "lint:fix": "eslint --fix ./src", + "testem": "testem", + "test": "nyc --reporter=html --reporter=text ava", + "test:watch": "ava --watch", + "coverage": "nyc report --reporter=text-lcov | coveralls", + "generate-docs": "jsdoc -c jsdoc.json" + }, + "license": "MIT", + "version": "2.14.1" +} diff --git a/food-ordering-app/server/node_modules/bowser/src/bowser.js b/food-ordering-app/server/node_modules/bowser/src/bowser.js new file mode 100644 index 000000000..fd1970662 --- /dev/null +++ b/food-ordering-app/server/node_modules/bowser/src/bowser.js @@ -0,0 +1,93 @@ +/*! + * Bowser - a browser detector + * https://github.com/bowser-js/bowser + * MIT License | (c) Dustin Diaz 2012-2015 + * MIT License | (c) Denis Demchenko 2015-2019 + */ +import Parser from './parser.js'; +import { + BROWSER_MAP, + ENGINE_MAP, + OS_MAP, + PLATFORMS_MAP, +} from './constants.js'; + +/** + * Bowser class. + * Keep it simple as much as it can be. + * It's supposed to work with collections of {@link Parser} instances + * rather then solve one-instance problems. + * All the one-instance stuff is located in Parser class. + * + * @class + * @classdesc Bowser is a static object, that provides an API to the Parsers + * @hideconstructor + */ +class Bowser { + /** + * Creates a {@link Parser} instance + * + * @param {String} UA UserAgent string + * @param {Boolean|Object} [skipParsingOrHints=false] Either a boolean to skip parsing, + * or a ClientHints object (navigator.userAgentData) + * @param {Object} [clientHints] User-Agent Client Hints data (navigator.userAgentData) + * @returns {Parser} + * @throws {Error} when UA is not a String + * + * @example + * const parser = Bowser.getParser(window.navigator.userAgent); + * const result = parser.getResult(); + * + * @example + * // With User-Agent Client Hints + * const parser = Bowser.getParser( + * window.navigator.userAgent, + * window.navigator.userAgentData + * ); + */ + static getParser(UA, skipParsingOrHints = false, clientHints = null) { + if (typeof UA !== 'string') { + throw new Error('UserAgent should be a string'); + } + return new Parser(UA, skipParsingOrHints, clientHints); + } + + /** + * Creates a {@link Parser} instance and runs {@link Parser.getResult} immediately + * + * @param {String} UA UserAgent string + * @param {Object} [clientHints] User-Agent Client Hints data (navigator.userAgentData) + * @return {ParsedResult} + * + * @example + * const result = Bowser.parse(window.navigator.userAgent); + * + * @example + * // With User-Agent Client Hints + * const result = Bowser.parse( + * window.navigator.userAgent, + * window.navigator.userAgentData + * ); + */ + static parse(UA, clientHints = null) { + return (new Parser(UA, clientHints)).getResult(); + } + + static get BROWSER_MAP() { + return BROWSER_MAP; + } + + static get ENGINE_MAP() { + return ENGINE_MAP; + } + + static get OS_MAP() { + return OS_MAP; + } + + static get PLATFORMS_MAP() { + return PLATFORMS_MAP; + } +} + +export default Bowser; diff --git a/food-ordering-app/server/node_modules/bowser/src/constants.js b/food-ordering-app/server/node_modules/bowser/src/constants.js new file mode 100644 index 000000000..2d06c97ae --- /dev/null +++ b/food-ordering-app/server/node_modules/bowser/src/constants.js @@ -0,0 +1,177 @@ +// NOTE: this list must be up-to-date with browsers listed in +// test/acceptance/useragentstrings.yml +export const BROWSER_ALIASES_MAP = { + AmazonBot: 'amazonbot', + 'Amazon Silk': 'amazon_silk', + 'Android Browser': 'android', + BaiduSpider: 'baiduspider', + Bada: 'bada', + BingCrawler: 'bingcrawler', + Brave: 'brave', + BlackBerry: 'blackberry', + 'ChatGPT-User': 'chatgpt_user', + Chrome: 'chrome', + ClaudeBot: 'claudebot', + Chromium: 'chromium', + Diffbot: 'diffbot', + DuckDuckBot: 'duckduckbot', + DuckDuckGo: 'duckduckgo', + Electron: 'electron', + Epiphany: 'epiphany', + FacebookExternalHit: 'facebookexternalhit', + Firefox: 'firefox', + Focus: 'focus', + Generic: 'generic', + 'Google Search': 'google_search', + Googlebot: 'googlebot', + GPTBot: 'gptbot', + 'Internet Explorer': 'ie', + InternetArchiveCrawler: 'internetarchivecrawler', + 'K-Meleon': 'k_meleon', + LibreWolf: 'librewolf', + Linespider: 'linespider', + Maxthon: 'maxthon', + 'Meta-ExternalAds': 'meta_externalads', + 'Meta-ExternalAgent': 'meta_externalagent', + 'Meta-ExternalFetcher': 'meta_externalfetcher', + 'Meta-WebIndexer': 'meta_webindexer', + 'Microsoft Edge': 'edge', + 'MZ Browser': 'mz', + 'NAVER Whale Browser': 'naver', + 'OAI-SearchBot': 'oai_searchbot', + Omgilibot: 'omgilibot', + Opera: 'opera', + 'Opera Coast': 'opera_coast', + 'Pale Moon': 'pale_moon', + PerplexityBot: 'perplexitybot', + 'Perplexity-User': 'perplexity_user', + PhantomJS: 'phantomjs', + PingdomBot: 'pingdombot', + Puffin: 'puffin', + QQ: 'qq', + QQLite: 'qqlite', + QupZilla: 'qupzilla', + Roku: 'roku', + Safari: 'safari', + Sailfish: 'sailfish', + 'Samsung Internet for Android': 'samsung_internet', + SlackBot: 'slackbot', + SeaMonkey: 'seamonkey', + Sleipnir: 'sleipnir', + 'Sogou Browser': 'sogou', + Swing: 'swing', + Tizen: 'tizen', + 'UC Browser': 'uc', + Vivaldi: 'vivaldi', + 'WebOS Browser': 'webos', + WeChat: 'wechat', + YahooSlurp: 'yahooslurp', + 'Yandex Browser': 'yandex', + YandexBot: 'yandexbot', + YouBot: 'youbot', +}; + +export const BROWSER_MAP = { + amazonbot: 'AmazonBot', + amazon_silk: 'Amazon Silk', + android: 'Android Browser', + baiduspider: 'BaiduSpider', + bada: 'Bada', + bingcrawler: 'BingCrawler', + blackberry: 'BlackBerry', + brave: 'Brave', + chatgpt_user: 'ChatGPT-User', + chrome: 'Chrome', + claudebot: 'ClaudeBot', + chromium: 'Chromium', + diffbot: 'Diffbot', + duckduckbot: 'DuckDuckBot', + duckduckgo: 'DuckDuckGo', + edge: 'Microsoft Edge', + electron: 'Electron', + epiphany: 'Epiphany', + facebookexternalhit: 'FacebookExternalHit', + firefox: 'Firefox', + focus: 'Focus', + generic: 'Generic', + google_search: 'Google Search', + googlebot: 'Googlebot', + gptbot: 'GPTBot', + ie: 'Internet Explorer', + internetarchivecrawler: 'InternetArchiveCrawler', + k_meleon: 'K-Meleon', + librewolf: 'LibreWolf', + linespider: 'Linespider', + maxthon: 'Maxthon', + meta_externalads: 'Meta-ExternalAds', + meta_externalagent: 'Meta-ExternalAgent', + meta_externalfetcher: 'Meta-ExternalFetcher', + meta_webindexer: 'Meta-WebIndexer', + mz: 'MZ Browser', + naver: 'NAVER Whale Browser', + oai_searchbot: 'OAI-SearchBot', + omgilibot: 'Omgilibot', + opera: 'Opera', + opera_coast: 'Opera Coast', + pale_moon: 'Pale Moon', + perplexitybot: 'PerplexityBot', + perplexity_user: 'Perplexity-User', + phantomjs: 'PhantomJS', + pingdombot: 'PingdomBot', + puffin: 'Puffin', + qq: 'QQ Browser', + qqlite: 'QQ Browser Lite', + qupzilla: 'QupZilla', + roku: 'Roku', + safari: 'Safari', + sailfish: 'Sailfish', + samsung_internet: 'Samsung Internet for Android', + seamonkey: 'SeaMonkey', + slackbot: 'SlackBot', + sleipnir: 'Sleipnir', + sogou: 'Sogou Browser', + swing: 'Swing', + tizen: 'Tizen', + uc: 'UC Browser', + vivaldi: 'Vivaldi', + webos: 'WebOS Browser', + wechat: 'WeChat', + yahooslurp: 'YahooSlurp', + yandex: 'Yandex Browser', + yandexbot: 'YandexBot', + youbot: 'YouBot', +}; + +export const PLATFORMS_MAP = { + bot: 'bot', + desktop: 'desktop', + mobile: 'mobile', + tablet: 'tablet', + tv: 'tv', +}; + +export const OS_MAP = { + Android: 'Android', + Bada: 'Bada', + BlackBerry: 'BlackBerry', + ChromeOS: 'Chrome OS', + HarmonyOS: 'HarmonyOS', + iOS: 'iOS', + Linux: 'Linux', + MacOS: 'macOS', + PlayStation4: 'PlayStation 4', + Roku: 'Roku', + Tizen: 'Tizen', + WebOS: 'WebOS', + Windows: 'Windows', + WindowsPhone: 'Windows Phone', +}; + +export const ENGINE_MAP = { + Blink: 'Blink', + EdgeHTML: 'EdgeHTML', + Gecko: 'Gecko', + Presto: 'Presto', + Trident: 'Trident', + WebKit: 'WebKit', +}; diff --git a/food-ordering-app/server/node_modules/bowser/src/parser-browsers.js b/food-ordering-app/server/node_modules/bowser/src/parser-browsers.js new file mode 100644 index 000000000..a6567e150 --- /dev/null +++ b/food-ordering-app/server/node_modules/bowser/src/parser-browsers.js @@ -0,0 +1,1183 @@ +/** + * Browsers' descriptors + * + * The idea of descriptors is simple. You should know about them two simple things: + * 1. Every descriptor has a method or property called `test` and a `describe` method. + * 2. Order of descriptors is important. + * + * More details: + * 1. Method or property `test` serves as a way to detect whether the UA string + * matches some certain browser or not. The `describe` method helps to make a result + * object with params that show some browser-specific things: name, version, etc. + * 2. Order of descriptors is important because a Parser goes through them one by one + * in course. For example, if you insert Chrome's descriptor as the first one, + * more then a half of browsers will be described as Chrome, because they will pass + * the Chrome descriptor's test. + * + * Descriptor's `test` could be a property with an array of RegExps, where every RegExp + * will be applied to a UA string to test it whether it matches or not. + * If a descriptor has two or more regexps in the `test` array it tests them one by one + * with a logical sum operation. Parser stops if it has found any RegExp that matches the UA. + * + * Or `test` could be a method. In that case it gets a Parser instance and should + * return true/false to get the Parser know if this browser descriptor matches the UA or not. + */ + +import Utils from './utils.js'; + +const commonVersionIdentifier = /version\/(\d+(\.?_?\d+)+)/i; + +const browsersList = [ + /* GPTBot */ + { + test: [/gptbot/i], + describe(ua) { + const browser = { + name: 'GPTBot', + }; + const version = Utils.getFirstMatch(/gptbot\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* ChatGPT-User */ + { + test: [/chatgpt-user/i], + describe(ua) { + const browser = { + name: 'ChatGPT-User', + }; + const version = Utils.getFirstMatch(/chatgpt-user\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* OAI-SearchBot */ + { + test: [/oai-searchbot/i], + describe(ua) { + const browser = { + name: 'OAI-SearchBot', + }; + const version = Utils.getFirstMatch(/oai-searchbot\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* ClaudeBot */ + { + test: [/claudebot/i, /claude-web/i, /claude-user/i, /claude-searchbot/i], + describe(ua) { + const browser = { + name: 'ClaudeBot', + }; + const version = Utils.getFirstMatch(/(?:claudebot|claude-web|claude-user|claude-searchbot)\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* Omgilibot */ + { + test: [/omgilibot/i, /webzio-extended/i], + describe(ua) { + const browser = { + name: 'Omgilibot', + }; + const version = Utils.getFirstMatch(/(?:omgilibot|webzio-extended)\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* Diffbot */ + { + test: [/diffbot/i], + describe(ua) { + const browser = { + name: 'Diffbot', + }; + const version = Utils.getFirstMatch(/diffbot\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* PerplexityBot */ + { + test: [/perplexitybot/i], + describe(ua) { + const browser = { + name: 'PerplexityBot', + }; + const version = Utils.getFirstMatch(/perplexitybot\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* Perplexity-User */ + { + test: [/perplexity-user/i], + describe(ua) { + const browser = { + name: 'Perplexity-User', + }; + const version = Utils.getFirstMatch(/perplexity-user\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* YouBot */ + { + test: [/youbot/i], + describe(ua) { + const browser = { + name: 'YouBot', + }; + const version = Utils.getFirstMatch(/youbot\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* Meta-WebIndexer */ + { + test: [/meta-webindexer/i], + describe(ua) { + const browser = { + name: 'Meta-WebIndexer', + }; + const version = Utils.getFirstMatch(/meta-webindexer\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* Meta-ExternalAds */ + { + test: [/meta-externalads/i], + describe(ua) { + const browser = { + name: 'Meta-ExternalAds', + }; + const version = Utils.getFirstMatch(/meta-externalads\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* Meta-ExternalAgent */ + { + test: [/meta-externalagent/i], + describe(ua) { + const browser = { + name: 'Meta-ExternalAgent', + }; + const version = Utils.getFirstMatch(/meta-externalagent\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* Meta-ExternalFetcher */ + { + test: [/meta-externalfetcher/i], + describe(ua) { + const browser = { + name: 'Meta-ExternalFetcher', + }; + const version = Utils.getFirstMatch(/meta-externalfetcher\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* Googlebot */ + { + test: [/googlebot/i], + describe(ua) { + const browser = { + name: 'Googlebot', + }; + const version = Utils.getFirstMatch(/googlebot\/(\d+(\.\d+))/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* Linespider */ + { + test: [/linespider/i], + describe(ua) { + const browser = { + name: 'Linespider', + }; + const version = Utils.getFirstMatch(/(?:linespider)(?:-[-\w]+)?[\s/](\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* AmazonBot */ + { + test: [/amazonbot/i], + describe(ua) { + const browser = { + name: 'AmazonBot', + }; + const version = Utils.getFirstMatch(/amazonbot\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* BingCrawler */ + { + test: [/bingbot/i], + describe(ua) { + const browser = { + name: 'BingCrawler', + }; + const version = Utils.getFirstMatch(/bingbot\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* BaiduSpider */ + { + test: [/baiduspider/i], + describe(ua) { + const browser = { + name: 'BaiduSpider', + }; + const version = Utils.getFirstMatch(/baiduspider\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* DuckDuckBot */ + { + test: [/duckduckbot/i], + describe(ua) { + const browser = { + name: 'DuckDuckBot', + }; + const version = Utils.getFirstMatch(/duckduckbot\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* InternetArchiveCrawler */ + { + test: [/ia_archiver/i], + describe(ua) { + const browser = { + name: 'InternetArchiveCrawler', + }; + const version = Utils.getFirstMatch(/ia_archiver\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* FacebookExternalHit */ + { + test: [/facebookexternalhit/i, /facebookcatalog/i], + describe() { + return { + name: 'FacebookExternalHit', + }; + }, + }, + + /* SlackBot */ + { + test: [/slackbot/i, /slack-imgProxy/i], + describe(ua) { + const browser = { + name: 'SlackBot', + }; + const version = Utils.getFirstMatch(/(?:slackbot|slack-imgproxy)(?:-[-\w]+)?[\s/](\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* YahooSlurp */ + { + test: [/yahoo!?[\s/]*slurp/i], + describe() { + return { + name: 'YahooSlurp', + }; + }, + }, + + /* YandexBot */ + { + test: [/yandexbot/i, /yandexmobilebot/i], + describe() { + return { + name: 'YandexBot', + }; + }, + }, + + /* PingdomBot */ + { + test: [/pingdom/i], + describe() { + return { + name: 'PingdomBot', + }; + }, + }, + + /* Opera < 13.0 */ + { + test: [/opera/i], + describe(ua) { + const browser = { + name: 'Opera', + }; + const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* Opera > 13.0 */ + { + test: [/opr\/|opios/i], + describe(ua) { + const browser = { + name: 'Opera', + }; + const version = Utils.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/SamsungBrowser/i], + describe(ua) { + const browser = { + name: 'Samsung Internet for Android', + }; + const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/Whale/i], + describe(ua) { + const browser = { + name: 'NAVER Whale Browser', + }; + const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/PaleMoon/i], + describe(ua) { + const browser = { + name: 'Pale Moon', + }; + const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:PaleMoon)[\s/](\d+(?:\.\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/MZBrowser/i], + describe(ua) { + const browser = { + name: 'MZ Browser', + }; + const version = Utils.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/focus/i], + describe(ua) { + const browser = { + name: 'Focus', + }; + const version = Utils.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/swing/i], + describe(ua) { + const browser = { + name: 'Swing', + }; + const version = Utils.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/coast/i], + describe(ua) { + const browser = { + name: 'Opera Coast', + }; + const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/opt\/\d+(?:.?_?\d+)+/i], + describe(ua) { + const browser = { + name: 'Opera Touch', + }; + const version = Utils.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/yabrowser/i], + describe(ua) { + const browser = { + name: 'Yandex Browser', + }; + const version = Utils.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/ucbrowser/i], + describe(ua) { + const browser = { + name: 'UC Browser', + }; + const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/Maxthon|mxios/i], + describe(ua) { + const browser = { + name: 'Maxthon', + }; + const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/epiphany/i], + describe(ua) { + const browser = { + name: 'Epiphany', + }; + const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/puffin/i], + describe(ua) { + const browser = { + name: 'Puffin', + }; + const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/sleipnir/i], + describe(ua) { + const browser = { + name: 'Sleipnir', + }; + const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/k-meleon/i], + describe(ua) { + const browser = { + name: 'K-Meleon', + }; + const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/micromessenger/i], + describe(ua) { + const browser = { + name: 'WeChat', + }; + const version = Utils.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/qqbrowser/i], + describe(ua) { + const browser = { + name: (/qqbrowserlite/i).test(ua) ? 'QQ Browser Lite' : 'QQ Browser', + }; + const version = Utils.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/msie|trident/i], + describe(ua) { + const browser = { + name: 'Internet Explorer', + }; + const version = Utils.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/\sedg\//i], + describe(ua) { + const browser = { + name: 'Microsoft Edge', + }; + + const version = Utils.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/edg([ea]|ios)/i], + describe(ua) { + const browser = { + name: 'Microsoft Edge', + }; + + const version = Utils.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/vivaldi/i], + describe(ua) { + const browser = { + name: 'Vivaldi', + }; + const version = Utils.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/seamonkey/i], + describe(ua) { + const browser = { + name: 'SeaMonkey', + }; + const version = Utils.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/sailfish/i], + describe(ua) { + const browser = { + name: 'Sailfish', + }; + + const version = Utils.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/silk/i], + describe(ua) { + const browser = { + name: 'Amazon Silk', + }; + const version = Utils.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/phantom/i], + describe(ua) { + const browser = { + name: 'PhantomJS', + }; + const version = Utils.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/slimerjs/i], + describe(ua) { + const browser = { + name: 'SlimerJS', + }; + const version = Utils.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/blackberry|\bbb\d+/i, /rim\stablet/i], + describe(ua) { + const browser = { + name: 'BlackBerry', + }; + const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/(web|hpw)[o0]s/i], + describe(ua) { + const browser = { + name: 'WebOS Browser', + }; + const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/bada/i], + describe(ua) { + const browser = { + name: 'Bada', + }; + const version = Utils.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/tizen/i], + describe(ua) { + const browser = { + name: 'Tizen', + }; + const version = Utils.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/qupzilla/i], + describe(ua) { + const browser = { + name: 'QupZilla', + }; + const version = Utils.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/librewolf/i], + describe(ua) { + const browser = { + name: 'LibreWolf', + }; + const version = Utils.getFirstMatch(/(?:librewolf)[\s/](\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/firefox|iceweasel|fxios/i], + describe(ua) { + const browser = { + name: 'Firefox', + }; + const version = Utils.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/electron/i], + describe(ua) { + const browser = { + name: 'Electron', + }; + const version = Utils.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/sogoumobilebrowser/i, /metasr/i, /se 2\.[x]/i], + describe(ua) { + const browser = { + name: 'Sogou Browser', + }; + const sogouMobileVersion = Utils.getFirstMatch(/(?:sogoumobilebrowser)[\s/](\d+(\.?_?\d+)+)/i, ua); + const chromiumVersion = Utils.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i, ua); + const seVersion = Utils.getFirstMatch(/se ([\d.]+)x/i, ua); + const version = sogouMobileVersion || chromiumVersion || seVersion; + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/MiuiBrowser/i], + describe(ua) { + const browser = { + name: 'Miui', + }; + const version = Utils.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + /* DuckDuckGo Browser */ + { + test(parser) { + // Chromium platforms (Android, Windows): check Client Hints brands first + if (parser.hasBrand('DuckDuckGo')) { + return true; + } + // WebKit platforms (iOS, macOS): check UA string for Ddg/version suffix + return parser.test(/\sDdg\/[\d.]+$/i); + }, + describe(ua, parser) { + const browser = { + name: 'DuckDuckGo', + }; + + // Try Client Hints brand version first + if (parser) { + const hintsVersion = parser.getBrandVersion('DuckDuckGo'); + if (hintsVersion) { + browser.version = hintsVersion; + return browser; + } + } + + // Fall back to WebKit UA pattern + const uaVersion = Utils.getFirstMatch(/\sDdg\/([\d.]+)$/i, ua); + if (uaVersion) { + browser.version = uaVersion; + } + + return browser; + }, + }, + /* Brave Browser */ + { + test(parser) { + // Check Client Hints brands for Brave + return parser.hasBrand('Brave'); + }, + describe(ua, parser) { + const browser = { + name: 'Brave', + }; + + if (parser) { + const hintsVersion = parser.getBrandVersion('Brave'); + if (hintsVersion) { + browser.version = hintsVersion; + return browser; + } + } + + return browser; + }, + }, + { + test: [/chromium/i], + describe(ua) { + const browser = { + name: 'Chromium', + }; + const version = Utils.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/chrome|crios|crmo/i], + describe(ua) { + const browser = { + name: 'Chrome', + }; + const version = Utils.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/GSA/i], + describe(ua) { + const browser = { + name: 'Google Search', + }; + const version = Utils.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* Android Browser */ + { + test(parser) { + const notLikeAndroid = !parser.test(/like android/i); + const butAndroid = parser.test(/android/i); + return notLikeAndroid && butAndroid; + }, + describe(ua) { + const browser = { + name: 'Android Browser', + }; + const version = Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* PlayStation 4 */ + { + test: [/playstation 4/i], + describe(ua) { + const browser = { + name: 'PlayStation 4', + }; + const version = Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* Safari */ + { + test: [/safari|applewebkit/i], + describe(ua) { + const browser = { + name: 'Safari', + }; + const version = Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* Something else */ + { + test: [/.*/i], + describe(ua) { + /* Here we try to make sure that there are explicit details about the device + * in order to decide what regexp exactly we want to apply + * (as there is a specific decision based on that conclusion) + */ + const regexpWithoutDeviceSpec = /^(.*)\/(.*) /; + const regexpWithDeviceSpec = /^(.*)\/(.*)[ \t]\((.*)/; + const hasDeviceSpec = ua.search('\\(') !== -1; + const regexp = hasDeviceSpec ? regexpWithDeviceSpec : regexpWithoutDeviceSpec; + return { + name: Utils.getFirstMatch(regexp, ua), + version: Utils.getSecondMatch(regexp, ua), + }; + }, + }, +]; + +export default browsersList; diff --git a/food-ordering-app/server/node_modules/bowser/src/parser-engines.js b/food-ordering-app/server/node_modules/bowser/src/parser-engines.js new file mode 100644 index 000000000..d46d0e514 --- /dev/null +++ b/food-ordering-app/server/node_modules/bowser/src/parser-engines.js @@ -0,0 +1,120 @@ +import Utils from './utils.js'; +import { ENGINE_MAP } from './constants.js'; + +/* + * More specific goes first + */ +export default [ + /* EdgeHTML */ + { + test(parser) { + return parser.getBrowserName(true) === 'microsoft edge'; + }, + describe(ua) { + const isBlinkBased = /\sedg\//i.test(ua); + + // return blink if it's blink-based one + if (isBlinkBased) { + return { + name: ENGINE_MAP.Blink, + }; + } + + // otherwise match the version and return EdgeHTML + const version = Utils.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i, ua); + + return { + name: ENGINE_MAP.EdgeHTML, + version, + }; + }, + }, + + /* Trident */ + { + test: [/trident/i], + describe(ua) { + const engine = { + name: ENGINE_MAP.Trident, + }; + + const version = Utils.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + engine.version = version; + } + + return engine; + }, + }, + + /* Presto */ + { + test(parser) { + return parser.test(/presto/i); + }, + describe(ua) { + const engine = { + name: ENGINE_MAP.Presto, + }; + + const version = Utils.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + engine.version = version; + } + + return engine; + }, + }, + + /* Gecko */ + { + test(parser) { + const isGecko = parser.test(/gecko/i); + const likeGecko = parser.test(/like gecko/i); + return isGecko && !likeGecko; + }, + describe(ua) { + const engine = { + name: ENGINE_MAP.Gecko, + }; + + const version = Utils.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + engine.version = version; + } + + return engine; + }, + }, + + /* Blink */ + { + test: [/(apple)?webkit\/537\.36/i], + describe() { + return { + name: ENGINE_MAP.Blink, + }; + }, + }, + + /* WebKit */ + { + test: [/(apple)?webkit/i], + describe(ua) { + const engine = { + name: ENGINE_MAP.WebKit, + }; + + const version = Utils.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + engine.version = version; + } + + return engine; + }, + }, +]; diff --git a/food-ordering-app/server/node_modules/bowser/src/parser-os.js b/food-ordering-app/server/node_modules/bowser/src/parser-os.js new file mode 100644 index 000000000..abc2aac3a --- /dev/null +++ b/food-ordering-app/server/node_modules/bowser/src/parser-os.js @@ -0,0 +1,211 @@ +import Utils from './utils.js'; +import { OS_MAP } from './constants.js'; + +export default [ + /* Roku */ + { + test: [/Roku\/DVP/], + describe(ua) { + const version = Utils.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i, ua); + return { + name: OS_MAP.Roku, + version, + }; + }, + }, + + /* Windows Phone */ + { + test: [/windows phone/i], + describe(ua) { + const version = Utils.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i, ua); + return { + name: OS_MAP.WindowsPhone, + version, + }; + }, + }, + + /* Windows */ + { + test: [/windows /i], + describe(ua) { + const version = Utils.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i, ua); + const versionName = Utils.getWindowsVersionName(version); + + return { + name: OS_MAP.Windows, + version, + versionName, + }; + }, + }, + + /* Firefox on iPad */ + { + test: [/Macintosh(.*?) FxiOS(.*?)\//], + describe(ua) { + const result = { + name: OS_MAP.iOS, + }; + const version = Utils.getSecondMatch(/(Version\/)(\d[\d.]+)/, ua); + if (version) { + result.version = version; + } + return result; + }, + }, + + /* macOS */ + { + test: [/macintosh/i], + describe(ua) { + const version = Utils.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i, ua).replace(/[_\s]/g, '.'); + const versionName = Utils.getMacOSVersionName(version); + + const os = { + name: OS_MAP.MacOS, + version, + }; + if (versionName) { + os.versionName = versionName; + } + return os; + }, + }, + + /* iOS */ + { + test: [/(ipod|iphone|ipad)/i], + describe(ua) { + const version = Utils.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i, ua).replace(/[_\s]/g, '.'); + + return { + name: OS_MAP.iOS, + version, + }; + }, + }, + + /* HarmonyOS */ + { + test: [/OpenHarmony/i], + describe(ua) { + const version = Utils.getFirstMatch(/OpenHarmony\s+(\d+(\.\d+)*)/i, ua); + return { + name: OS_MAP.HarmonyOS, + version, + }; + }, + }, + + /* Android */ + { + test(parser) { + const notLikeAndroid = !parser.test(/like android/i); + const butAndroid = parser.test(/android/i); + return notLikeAndroid && butAndroid; + }, + describe(ua) { + const version = Utils.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i, ua); + const versionName = Utils.getAndroidVersionName(version); + const os = { + name: OS_MAP.Android, + version, + }; + if (versionName) { + os.versionName = versionName; + } + return os; + }, + }, + + /* WebOS */ + { + test: [/(web|hpw)[o0]s/i], + describe(ua) { + const version = Utils.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i, ua); + const os = { + name: OS_MAP.WebOS, + }; + + if (version && version.length) { + os.version = version; + } + return os; + }, + }, + + /* BlackBerry */ + { + test: [/blackberry|\bbb\d+/i, /rim\stablet/i], + describe(ua) { + const version = Utils.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i, ua) + || Utils.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i, ua) + || Utils.getFirstMatch(/\bbb(\d+)/i, ua); + + return { + name: OS_MAP.BlackBerry, + version, + }; + }, + }, + + /* Bada */ + { + test: [/bada/i], + describe(ua) { + const version = Utils.getFirstMatch(/bada\/(\d+(\.\d+)*)/i, ua); + + return { + name: OS_MAP.Bada, + version, + }; + }, + }, + + /* Tizen */ + { + test: [/tizen/i], + describe(ua) { + const version = Utils.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i, ua); + + return { + name: OS_MAP.Tizen, + version, + }; + }, + }, + + /* Linux */ + { + test: [/linux/i], + describe() { + return { + name: OS_MAP.Linux, + }; + }, + }, + + /* Chrome OS */ + { + test: [/CrOS/], + describe() { + return { + name: OS_MAP.ChromeOS, + }; + }, + }, + + /* Playstation 4 */ + { + test: [/PlayStation 4/], + describe(ua) { + const version = Utils.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i, ua); + return { + name: OS_MAP.PlayStation4, + version, + }; + }, + }, +]; diff --git a/food-ordering-app/server/node_modules/bowser/src/parser-platforms.js b/food-ordering-app/server/node_modules/bowser/src/parser-platforms.js new file mode 100644 index 000000000..b070ac3d4 --- /dev/null +++ b/food-ordering-app/server/node_modules/bowser/src/parser-platforms.js @@ -0,0 +1,566 @@ +import Utils from './utils.js'; +import { PLATFORMS_MAP } from './constants.js'; + +/* + * Tablets go first since usually they have more specific + * signs to detect. + */ + +export default [ + /* Googlebot */ + { + test: [/googlebot/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Google', + }; + }, + }, + + /* LineSpider */ + { + test: [/linespider/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Line', + }; + }, + }, + + /* AmazonBot */ + { + test: [/amazonbot/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Amazon', + }; + }, + }, + + /* GPTBot */ + { + test: [/gptbot/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'OpenAI', + }; + }, + }, + + /* ChatGPT-User */ + { + test: [/chatgpt-user/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'OpenAI', + }; + }, + }, + + /* OAI-SearchBot */ + { + test: [/oai-searchbot/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'OpenAI', + }; + }, + }, + + /* Baidu */ + { + test: [/baiduspider/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Baidu', + }; + }, + }, + + /* Bingbot */ + { + test: [/bingbot/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Bing', + }; + }, + }, + + /* DuckDuckBot */ + { + test: [/duckduckbot/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'DuckDuckGo', + }; + }, + }, + + /* ClaudeBot */ + { + test: [/claudebot/i, /claude-web/i, /claude-user/i, /claude-searchbot/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Anthropic', + }; + }, + }, + + /* Omgilibot */ + { + test: [/omgilibot/i, /webzio-extended/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Webz.io', + }; + }, + }, + + /* Diffbot */ + { + test: [/diffbot/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Diffbot', + }; + }, + }, + + /* PerplexityBot */ + { + test: [/perplexitybot/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Perplexity AI', + }; + }, + }, + + /* Perplexity-User */ + { + test: [/perplexity-user/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Perplexity AI', + }; + }, + }, + + /* YouBot */ + { + test: [/youbot/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'You.com', + }; + }, + }, + + /* Internet Archive Crawler */ + { + test: [/ia_archiver/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Internet Archive', + }; + }, + }, + + /* Meta-WebIndexer */ + { + test: [/meta-webindexer/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Meta', + }; + }, + }, + + /* Meta-ExternalAds */ + { + test: [/meta-externalads/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Meta', + }; + }, + }, + + /* Meta-ExternalAgent */ + { + test: [/meta-externalagent/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Meta', + }; + }, + }, + + /* Meta-ExternalFetcher */ + { + test: [/meta-externalfetcher/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Meta', + }; + }, + }, + + /* Meta Web Crawler */ + { + test: [/facebookexternalhit/i, /facebookcatalog/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Meta', + }; + }, + }, + + /* SlackBot */ + { + test: [/slackbot/i, /slack-imgProxy/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Slack', + }; + }, + }, + + /* Yahoo! Slurp */ + { + test: [/yahoo/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Yahoo', + }; + }, + }, + + /* Yandex */ + { + test: [/yandexbot/i, /yandexmobilebot/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Yandex', + }; + }, + }, + + /* Pingdom */ + { + test: [/pingdom/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Pingdom', + }; + }, + }, + + /* Huawei */ + { + test: [/huawei/i], + describe(ua) { + const model = Utils.getFirstMatch(/(can-l01)/i, ua) && 'Nova'; + const platform = { + type: PLATFORMS_MAP.mobile, + vendor: 'Huawei', + }; + if (model) { + platform.model = model; + } + return platform; + }, + }, + + /* Nexus Tablet */ + { + test: [/nexus\s*(?:7|8|9|10).*/i], + describe() { + return { + type: PLATFORMS_MAP.tablet, + vendor: 'Nexus', + }; + }, + }, + + /* iPad */ + { + test: [/ipad/i], + describe() { + return { + type: PLATFORMS_MAP.tablet, + vendor: 'Apple', + model: 'iPad', + }; + }, + }, + + /* Firefox on iPad */ + { + test: [/Macintosh(.*?) FxiOS(.*?)\//], + describe() { + return { + type: PLATFORMS_MAP.tablet, + vendor: 'Apple', + model: 'iPad', + }; + }, + }, + + /* Amazon Kindle Fire */ + { + test: [/kftt build/i], + describe() { + return { + type: PLATFORMS_MAP.tablet, + vendor: 'Amazon', + model: 'Kindle Fire HD 7', + }; + }, + }, + + /* Another Amazon Tablet with Silk */ + { + test: [/silk/i], + describe() { + return { + type: PLATFORMS_MAP.tablet, + vendor: 'Amazon', + }; + }, + }, + + /* Tablet */ + { + test: [/tablet(?! pc)/i], + describe() { + return { + type: PLATFORMS_MAP.tablet, + }; + }, + }, + + /* iPod/iPhone */ + { + test(parser) { + const iDevice = parser.test(/ipod|iphone/i); + const likeIDevice = parser.test(/like (ipod|iphone)/i); + return iDevice && !likeIDevice; + }, + describe(ua) { + const model = Utils.getFirstMatch(/(ipod|iphone)/i, ua); + return { + type: PLATFORMS_MAP.mobile, + vendor: 'Apple', + model, + }; + }, + }, + + /* Nexus Mobile */ + { + test: [/nexus\s*[0-6].*/i, /galaxy nexus/i], + describe() { + return { + type: PLATFORMS_MAP.mobile, + vendor: 'Nexus', + }; + }, + }, + + /* Nokia */ + { + test: [/Nokia/i], + describe(ua) { + const model = Utils.getFirstMatch(/Nokia\s+([0-9]+(\.[0-9]+)?)/i, ua); + const platform = { + type: PLATFORMS_MAP.mobile, + vendor: 'Nokia', + }; + if (model) { + platform.model = model; + } + return platform; + }, + }, + + /* Mobile */ + { + test: [/[^-]mobi/i], + describe() { + return { + type: PLATFORMS_MAP.mobile, + }; + }, + }, + + /* BlackBerry */ + { + test(parser) { + return parser.getBrowserName(true) === 'blackberry'; + }, + describe() { + return { + type: PLATFORMS_MAP.mobile, + vendor: 'BlackBerry', + }; + }, + }, + + /* Bada */ + { + test(parser) { + return parser.getBrowserName(true) === 'bada'; + }, + describe() { + return { + type: PLATFORMS_MAP.mobile, + }; + }, + }, + + /* Windows Phone */ + { + test(parser) { + return parser.getBrowserName() === 'windows phone'; + }, + describe() { + return { + type: PLATFORMS_MAP.mobile, + vendor: 'Microsoft', + }; + }, + }, + + /* Android Tablet */ + { + test(parser) { + const osMajorVersion = Number(String(parser.getOSVersion()).split('.')[0]); + return parser.getOSName(true) === 'android' && (osMajorVersion >= 3); + }, + describe() { + return { + type: PLATFORMS_MAP.tablet, + }; + }, + }, + + /* Android Mobile */ + { + test(parser) { + return parser.getOSName(true) === 'android'; + }, + describe() { + return { + type: PLATFORMS_MAP.mobile, + }; + }, + }, + + /* Smart TV */ + { + test: [/smart-?tv|smarttv/i], + describe() { + return { + type: PLATFORMS_MAP.tv, + }; + }, + }, + + /* NetCast (LG Smart TV) */ + { + test: [/netcast/i], + describe() { + return { + type: PLATFORMS_MAP.tv, + }; + }, + }, + + /* desktop */ + { + test(parser) { + return parser.getOSName(true) === 'macos'; + }, + describe() { + return { + type: PLATFORMS_MAP.desktop, + vendor: 'Apple', + }; + }, + }, + + /* Windows */ + { + test(parser) { + return parser.getOSName(true) === 'windows'; + }, + describe() { + return { + type: PLATFORMS_MAP.desktop, + }; + }, + }, + + /* Linux */ + { + test(parser) { + return parser.getOSName(true) === 'linux'; + }, + describe() { + return { + type: PLATFORMS_MAP.desktop, + }; + }, + }, + + /* PlayStation 4 */ + { + test(parser) { + return parser.getOSName(true) === 'playstation 4'; + }, + describe() { + return { + type: PLATFORMS_MAP.tv, + }; + }, + }, + + /* Roku */ + { + test(parser) { + return parser.getOSName(true) === 'roku'; + }, + describe() { + return { + type: PLATFORMS_MAP.tv, + }; + }, + }, +]; diff --git a/food-ordering-app/server/node_modules/bowser/src/parser.js b/food-ordering-app/server/node_modules/bowser/src/parser.js new file mode 100644 index 000000000..1c2a5bfa1 --- /dev/null +++ b/food-ordering-app/server/node_modules/bowser/src/parser.js @@ -0,0 +1,592 @@ +import browserParsersList from './parser-browsers.js'; +import osParsersList from './parser-os.js'; +import platformParsersList from './parser-platforms.js'; +import enginesParsersList from './parser-engines.js'; +import Utils from './utils.js'; + +/** + * @typedef {Object} ClientHints + * @property {Array<{brand: string, version: string}>} [brands] Array of brand objects + * @property {boolean} [mobile] Whether the device is mobile + * @property {string} [platform] Platform name (e.g., "Windows", "macOS") + * @property {string} [platformVersion] Platform version + * @property {string} [architecture] CPU architecture + * @property {string} [model] Device model + * @property {boolean} [wow64] Whether running under WoW64 + */ + +/** + * The main class that arranges the whole parsing process. + */ +class Parser { + /** + * Create instance of Parser + * + * @param {String} UA User-Agent string + * @param {Boolean|ClientHints} [skipParsingOrHints=false] Either a boolean to skip parsing, + * or a ClientHints object containing User-Agent Client Hints data + * @param {ClientHints} [clientHints] User-Agent Client Hints data (navigator.userAgentData) + * + * @throw {Error} in case of empty UA String + * + * @constructor + */ + constructor(UA, skipParsingOrHints = false, clientHints = null) { + if (UA === void (0) || UA === null || UA === '') { + throw new Error("UserAgent parameter can't be empty"); + } + + this._ua = UA; + + // Handle overloaded constructor: (UA, clientHints) or (UA, skipParsing, clientHints) + let skipParsing = false; + if (typeof skipParsingOrHints === 'boolean') { + skipParsing = skipParsingOrHints; + this._hints = clientHints; + } else if (skipParsingOrHints != null && typeof skipParsingOrHints === 'object') { + this._hints = skipParsingOrHints; + } else { + this._hints = null; + } + + /** + * @typedef ParsedResult + * @property {Object} browser + * @property {String|undefined} [browser.name] + * Browser name, like `"Chrome"` or `"Internet Explorer"` + * @property {String|undefined} [browser.version] Browser version as a String `"12.01.45334.10"` + * @property {Object} os + * @property {String|undefined} [os.name] OS name, like `"Windows"` or `"macOS"` + * @property {String|undefined} [os.version] OS version, like `"NT 5.1"` or `"10.11.1"` + * @property {String|undefined} [os.versionName] OS name, like `"XP"` or `"High Sierra"` + * @property {Object} platform + * @property {String|undefined} [platform.type] + * platform type, can be either `"desktop"`, `"tablet"` or `"mobile"` + * @property {String|undefined} [platform.vendor] Vendor of the device, + * like `"Apple"` or `"Samsung"` + * @property {String|undefined} [platform.model] Device model, + * like `"iPhone"` or `"Kindle Fire HD 7"` + * @property {Object} engine + * @property {String|undefined} [engine.name] + * Can be any of this: `WebKit`, `Blink`, `Gecko`, `Trident`, `Presto`, `EdgeHTML` + * @property {String|undefined} [engine.version] String version of the engine + */ + this.parsedResult = {}; + + if (skipParsing !== true) { + this.parse(); + } + } + + /** + * Get Client Hints data + * @return {ClientHints|null} + * + * @public + * @example + * const parser = Bowser.getParser(UA, clientHints); + * const hints = parser.getHints(); + * console.log(hints.platform); // 'Windows' + * console.log(hints.mobile); // false + */ + getHints() { + return this._hints; + } + + /** + * Check if a brand exists in Client Hints brands array + * @param {string} brandName The brand name to check for + * @return {boolean} + * + * @public + * @example + * const parser = Bowser.getParser(UA, clientHints); + * if (parser.hasBrand('Google Chrome')) { + * console.log('Chrome detected!'); + * } + */ + hasBrand(brandName) { + if (!this._hints || !Array.isArray(this._hints.brands)) { + return false; + } + const brandLower = brandName.toLowerCase(); + return this._hints.brands.some( + b => b.brand && b.brand.toLowerCase() === brandLower, + ); + } + + /** + * Get brand version from Client Hints + * @param {string} brandName The brand name to get version for + * @return {string|undefined} + * + * @public + * @example + * const parser = Bowser.getParser(UA, clientHints); + * const version = parser.getBrandVersion('Google Chrome'); + * console.log(version); // '131' + */ + getBrandVersion(brandName) { + if (!this._hints || !Array.isArray(this._hints.brands)) { + return undefined; + } + const brandLower = brandName.toLowerCase(); + const brand = this._hints.brands.find( + b => b.brand && b.brand.toLowerCase() === brandLower, + ); + return brand ? brand.version : undefined; + } + + /** + * Get UserAgent string of current Parser instance + * @return {String} User-Agent String of the current object + * + * @public + */ + getUA() { + return this._ua; + } + + /** + * Test a UA string for a regexp + * @param {RegExp} regex + * @return {Boolean} + */ + test(regex) { + return regex.test(this._ua); + } + + /** + * Get parsed browser object + * @return {Object} + */ + parseBrowser() { + this.parsedResult.browser = {}; + + const browserDescriptor = Utils.find(browserParsersList, (_browser) => { + if (typeof _browser.test === 'function') { + return _browser.test(this); + } + + if (Array.isArray(_browser.test)) { + return _browser.test.some(condition => this.test(condition)); + } + + throw new Error("Browser's test function is not valid"); + }); + + if (browserDescriptor) { + this.parsedResult.browser = browserDescriptor.describe(this.getUA(), this); + } + + return this.parsedResult.browser; + } + + /** + * Get parsed browser object + * @return {Object} + * + * @public + */ + getBrowser() { + if (this.parsedResult.browser) { + return this.parsedResult.browser; + } + + return this.parseBrowser(); + } + + /** + * Get browser's name + * @return {String} Browser's name or an empty string + * + * @public + */ + getBrowserName(toLowerCase) { + if (toLowerCase) { + return String(this.getBrowser().name).toLowerCase() || ''; + } + return this.getBrowser().name || ''; + } + + + /** + * Get browser's version + * @return {String} version of browser + * + * @public + */ + getBrowserVersion() { + return this.getBrowser().version; + } + + /** + * Get OS + * @return {Object} + * + * @example + * this.getOS(); + * { + * name: 'macOS', + * version: '10.11.12' + * } + */ + getOS() { + if (this.parsedResult.os) { + return this.parsedResult.os; + } + + return this.parseOS(); + } + + /** + * Parse OS and save it to this.parsedResult.os + * @return {*|{}} + */ + parseOS() { + this.parsedResult.os = {}; + + const os = Utils.find(osParsersList, (_os) => { + if (typeof _os.test === 'function') { + return _os.test(this); + } + + if (Array.isArray(_os.test)) { + return _os.test.some(condition => this.test(condition)); + } + + throw new Error("Browser's test function is not valid"); + }); + + if (os) { + this.parsedResult.os = os.describe(this.getUA()); + } + + return this.parsedResult.os; + } + + /** + * Get OS name + * @param {Boolean} [toLowerCase] return lower-cased value + * @return {String} name of the OS — macOS, Windows, Linux, etc. + */ + getOSName(toLowerCase) { + const { name } = this.getOS(); + + if (toLowerCase) { + return String(name).toLowerCase() || ''; + } + + return name || ''; + } + + /** + * Get OS version + * @return {String} full version with dots ('10.11.12', '5.6', etc) + */ + getOSVersion() { + return this.getOS().version; + } + + /** + * Get parsed platform + * @return {{}} + */ + getPlatform() { + if (this.parsedResult.platform) { + return this.parsedResult.platform; + } + + return this.parsePlatform(); + } + + /** + * Get platform name + * @param {Boolean} [toLowerCase=false] + * @return {*} + */ + getPlatformType(toLowerCase = false) { + const { type } = this.getPlatform(); + + if (toLowerCase) { + return String(type).toLowerCase() || ''; + } + + return type || ''; + } + + /** + * Get parsed platform + * @return {{}} + */ + parsePlatform() { + this.parsedResult.platform = {}; + + const platform = Utils.find(platformParsersList, (_platform) => { + if (typeof _platform.test === 'function') { + return _platform.test(this); + } + + if (Array.isArray(_platform.test)) { + return _platform.test.some(condition => this.test(condition)); + } + + throw new Error("Browser's test function is not valid"); + }); + + if (platform) { + this.parsedResult.platform = platform.describe(this.getUA()); + } + + return this.parsedResult.platform; + } + + /** + * Get parsed engine + * @return {{}} + */ + getEngine() { + if (this.parsedResult.engine) { + return this.parsedResult.engine; + } + + return this.parseEngine(); + } + + /** + * Get engines's name + * @return {String} Engines's name or an empty string + * + * @public + */ + getEngineName(toLowerCase) { + if (toLowerCase) { + return String(this.getEngine().name).toLowerCase() || ''; + } + return this.getEngine().name || ''; + } + + /** + * Get parsed platform + * @return {{}} + */ + parseEngine() { + this.parsedResult.engine = {}; + + const engine = Utils.find(enginesParsersList, (_engine) => { + if (typeof _engine.test === 'function') { + return _engine.test(this); + } + + if (Array.isArray(_engine.test)) { + return _engine.test.some(condition => this.test(condition)); + } + + throw new Error("Browser's test function is not valid"); + }); + + if (engine) { + this.parsedResult.engine = engine.describe(this.getUA()); + } + + return this.parsedResult.engine; + } + + /** + * Parse full information about the browser + * @returns {Parser} + */ + parse() { + this.parseBrowser(); + this.parseOS(); + this.parsePlatform(); + this.parseEngine(); + + return this; + } + + /** + * Get parsed result + * @return {ParsedResult} + */ + getResult() { + return Utils.assign({}, this.parsedResult); + } + + /** + * Check if parsed browser matches certain conditions + * + * @param {Object} checkTree It's one or two layered object, + * which can include a platform or an OS on the first layer + * and should have browsers specs on the bottom-laying layer + * + * @returns {Boolean|undefined} Whether the browser satisfies the set conditions or not. + * Returns `undefined` when the browser is no described in the checkTree object. + * + * @example + * const browser = Bowser.getParser(window.navigator.userAgent); + * if (browser.satisfies({chrome: '>118.01.1322' })) + * // or with os + * if (browser.satisfies({windows: { chrome: '>118.01.1322' } })) + * // or with platforms + * if (browser.satisfies({desktop: { chrome: '>118.01.1322' } })) + */ + satisfies(checkTree) { + const platformsAndOSes = {}; + let platformsAndOSCounter = 0; + const browsers = {}; + let browsersCounter = 0; + + const allDefinitions = Object.keys(checkTree); + + allDefinitions.forEach((key) => { + const currentDefinition = checkTree[key]; + if (typeof currentDefinition === 'string') { + browsers[key] = currentDefinition; + browsersCounter += 1; + } else if (typeof currentDefinition === 'object') { + platformsAndOSes[key] = currentDefinition; + platformsAndOSCounter += 1; + } + }); + + if (platformsAndOSCounter > 0) { + const platformsAndOSNames = Object.keys(platformsAndOSes); + const OSMatchingDefinition = Utils.find(platformsAndOSNames, name => (this.isOS(name))); + + if (OSMatchingDefinition) { + const osResult = this.satisfies(platformsAndOSes[OSMatchingDefinition]); + + if (osResult !== void 0) { + return osResult; + } + } + + const platformMatchingDefinition = Utils.find( + platformsAndOSNames, + name => (this.isPlatform(name)), + ); + if (platformMatchingDefinition) { + const platformResult = this.satisfies(platformsAndOSes[platformMatchingDefinition]); + + if (platformResult !== void 0) { + return platformResult; + } + } + } + + if (browsersCounter > 0) { + const browserNames = Object.keys(browsers); + const matchingDefinition = Utils.find(browserNames, name => (this.isBrowser(name, true))); + + if (matchingDefinition !== void 0) { + return this.compareVersion(browsers[matchingDefinition]); + } + } + + return undefined; + } + + /** + * Check if the browser name equals the passed string + * @param {string} browserName The string to compare with the browser name + * @param [includingAlias=false] The flag showing whether alias will be included into comparison + * @returns {boolean} + */ + isBrowser(browserName, includingAlias = false) { + const defaultBrowserName = this.getBrowserName().toLowerCase(); + let browserNameLower = browserName.toLowerCase(); + const alias = Utils.getBrowserTypeByAlias(browserNameLower); + + if (includingAlias && alias) { + browserNameLower = alias.toLowerCase(); + } + return browserNameLower === defaultBrowserName; + } + + compareVersion(version) { + let expectedResults = [0]; + let comparableVersion = version; + let isLoose = false; + + const currentBrowserVersion = this.getBrowserVersion(); + + if (typeof currentBrowserVersion !== 'string') { + return void 0; + } + + if (version[0] === '>' || version[0] === '<') { + comparableVersion = version.substr(1); + if (version[1] === '=') { + isLoose = true; + comparableVersion = version.substr(2); + } else { + expectedResults = []; + } + if (version[0] === '>') { + expectedResults.push(1); + } else { + expectedResults.push(-1); + } + } else if (version[0] === '=') { + comparableVersion = version.substr(1); + } else if (version[0] === '~') { + isLoose = true; + comparableVersion = version.substr(1); + } + + return expectedResults.indexOf( + Utils.compareVersions(currentBrowserVersion, comparableVersion, isLoose), + ) > -1; + } + + /** + * Check if the OS name equals the passed string + * @param {string} osName The string to compare with the OS name + * @returns {boolean} + */ + isOS(osName) { + return this.getOSName(true) === String(osName).toLowerCase(); + } + + /** + * Check if the platform type equals the passed string + * @param {string} platformType The string to compare with the platform type + * @returns {boolean} + */ + isPlatform(platformType) { + return this.getPlatformType(true) === String(platformType).toLowerCase(); + } + + /** + * Check if the engine name equals the passed string + * @param {string} engineName The string to compare with the engine name + * @returns {boolean} + */ + isEngine(engineName) { + return this.getEngineName(true) === String(engineName).toLowerCase(); + } + + /** + * Is anything? Check if the browser is called "anything", + * the OS called "anything" or the platform called "anything" + * @param {String} anything + * @param [includingAlias=false] The flag showing whether alias will be included into comparison + * @returns {Boolean} + */ + is(anything, includingAlias = false) { + return this.isBrowser(anything, includingAlias) || this.isOS(anything) + || this.isPlatform(anything); + } + + /** + * Check if any of the given values satisfies this.is(anything) + * @param {String[]} anythings + * @returns {Boolean} + */ + some(anythings = []) { + return anythings.some(anything => this.is(anything)); + } +} + +export default Parser; diff --git a/food-ordering-app/server/node_modules/bowser/src/utils.js b/food-ordering-app/server/node_modules/bowser/src/utils.js new file mode 100644 index 000000000..4f895973e --- /dev/null +++ b/food-ordering-app/server/node_modules/bowser/src/utils.js @@ -0,0 +1,327 @@ +import { BROWSER_MAP, BROWSER_ALIASES_MAP } from './constants.js'; + +export default class Utils { + /** + * Get first matched item for a string + * @param {RegExp} regexp + * @param {String} ua + * @return {Array|{index: number, input: string}|*|boolean|string} + */ + static getFirstMatch(regexp, ua) { + const match = ua.match(regexp); + return (match && match.length > 0 && match[1]) || ''; + } + + /** + * Get second matched item for a string + * @param regexp + * @param {String} ua + * @return {Array|{index: number, input: string}|*|boolean|string} + */ + static getSecondMatch(regexp, ua) { + const match = ua.match(regexp); + return (match && match.length > 1 && match[2]) || ''; + } + + /** + * Match a regexp and return a constant or undefined + * @param {RegExp} regexp + * @param {String} ua + * @param {*} _const Any const that will be returned if regexp matches the string + * @return {*} + */ + static matchAndReturnConst(regexp, ua, _const) { + if (regexp.test(ua)) { + return _const; + } + return void (0); + } + + static getWindowsVersionName(version) { + switch (version) { + case 'NT': return 'NT'; + case 'XP': return 'XP'; + case 'NT 5.0': return '2000'; + case 'NT 5.1': return 'XP'; + case 'NT 5.2': return '2003'; + case 'NT 6.0': return 'Vista'; + case 'NT 6.1': return '7'; + case 'NT 6.2': return '8'; + case 'NT 6.3': return '8.1'; + case 'NT 10.0': return '10'; + default: return undefined; + } + } + + /** + * Get macOS version name + * 10.5 - Leopard + * 10.6 - Snow Leopard + * 10.7 - Lion + * 10.8 - Mountain Lion + * 10.9 - Mavericks + * 10.10 - Yosemite + * 10.11 - El Capitan + * 10.12 - Sierra + * 10.13 - High Sierra + * 10.14 - Mojave + * 10.15 - Catalina + * 11 - Big Sur + * 12 - Monterey + * 13 - Ventura + * 14 - Sonoma + * 15 - Sequoia + * + * @example + * getMacOSVersionName("10.14") // 'Mojave' + * + * @param {string} version + * @return {string} versionName + */ + static getMacOSVersionName(version) { + const v = version.split('.').splice(0, 2).map(s => parseInt(s, 10) || 0); + v.push(0); + const major = v[0]; + const minor = v[1]; + + if (major === 10) { + switch (minor) { + case 5: return 'Leopard'; + case 6: return 'Snow Leopard'; + case 7: return 'Lion'; + case 8: return 'Mountain Lion'; + case 9: return 'Mavericks'; + case 10: return 'Yosemite'; + case 11: return 'El Capitan'; + case 12: return 'Sierra'; + case 13: return 'High Sierra'; + case 14: return 'Mojave'; + case 15: return 'Catalina'; + default: return undefined; + } + } + + switch (major) { + case 11: return 'Big Sur'; + case 12: return 'Monterey'; + case 13: return 'Ventura'; + case 14: return 'Sonoma'; + case 15: return 'Sequoia'; + default: return undefined; + } + } + + /** + * Get Android version name + * 1.5 - Cupcake + * 1.6 - Donut + * 2.0 - Eclair + * 2.1 - Eclair + * 2.2 - Froyo + * 2.x - Gingerbread + * 3.x - Honeycomb + * 4.0 - Ice Cream Sandwich + * 4.1 - Jelly Bean + * 4.4 - KitKat + * 5.x - Lollipop + * 6.x - Marshmallow + * 7.x - Nougat + * 8.x - Oreo + * 9.x - Pie + * + * @example + * getAndroidVersionName("7.0") // 'Nougat' + * + * @param {string} version + * @return {string} versionName + */ + static getAndroidVersionName(version) { + const v = version.split('.').splice(0, 2).map(s => parseInt(s, 10) || 0); + v.push(0); + if (v[0] === 1 && v[1] < 5) return undefined; + if (v[0] === 1 && v[1] < 6) return 'Cupcake'; + if (v[0] === 1 && v[1] >= 6) return 'Donut'; + if (v[0] === 2 && v[1] < 2) return 'Eclair'; + if (v[0] === 2 && v[1] === 2) return 'Froyo'; + if (v[0] === 2 && v[1] > 2) return 'Gingerbread'; + if (v[0] === 3) return 'Honeycomb'; + if (v[0] === 4 && v[1] < 1) return 'Ice Cream Sandwich'; + if (v[0] === 4 && v[1] < 4) return 'Jelly Bean'; + if (v[0] === 4 && v[1] >= 4) return 'KitKat'; + if (v[0] === 5) return 'Lollipop'; + if (v[0] === 6) return 'Marshmallow'; + if (v[0] === 7) return 'Nougat'; + if (v[0] === 8) return 'Oreo'; + if (v[0] === 9) return 'Pie'; + return undefined; + } + + /** + * Get version precisions count + * + * @example + * getVersionPrecision("1.10.3") // 3 + * + * @param {string} version + * @return {number} + */ + static getVersionPrecision(version) { + return version.split('.').length; + } + + /** + * Calculate browser version weight + * + * @example + * compareVersions('1.10.2.1', '1.8.2.1.90') // 1 + * compareVersions('1.010.2.1', '1.09.2.1.90'); // 1 + * compareVersions('1.10.2.1', '1.10.2.1'); // 0 + * compareVersions('1.10.2.1', '1.0800.2'); // -1 + * compareVersions('1.10.2.1', '1.10', true); // 0 + * + * @param {String} versionA versions versions to compare + * @param {String} versionB versions versions to compare + * @param {boolean} [isLoose] enable loose comparison + * @return {Number} comparison result: -1 when versionA is lower, + * 1 when versionA is bigger, 0 when both equal + */ + /* eslint consistent-return: 1 */ + static compareVersions(versionA, versionB, isLoose = false) { + // 1) get common precision for both versions, for example for "10.0" and "9" it should be 2 + const versionAPrecision = Utils.getVersionPrecision(versionA); + const versionBPrecision = Utils.getVersionPrecision(versionB); + + let precision = Math.max(versionAPrecision, versionBPrecision); + let lastPrecision = 0; + + const chunks = Utils.map([versionA, versionB], (version) => { + const delta = precision - Utils.getVersionPrecision(version); + + // 2) "9" -> "9.0" (for precision = 2) + const _version = version + new Array(delta + 1).join('.0'); + + // 3) "9.0" -> ["000000000"", "000000009"] + return Utils.map(_version.split('.'), chunk => new Array(20 - chunk.length).join('0') + chunk).reverse(); + }); + + // adjust precision for loose comparison + if (isLoose) { + lastPrecision = precision - Math.min(versionAPrecision, versionBPrecision); + } + + // iterate in reverse order by reversed chunks array + precision -= 1; + while (precision >= lastPrecision) { + // 4) compare: "000000009" > "000000010" = false (but "9" > "10" = true) + if (chunks[0][precision] > chunks[1][precision]) { + return 1; + } + + if (chunks[0][precision] === chunks[1][precision]) { + if (precision === lastPrecision) { + // all version chunks are same + return 0; + } + + precision -= 1; + } else if (chunks[0][precision] < chunks[1][precision]) { + return -1; + } + } + + return undefined; + } + + /** + * Array::map polyfill + * + * @param {Array} arr + * @param {Function} iterator + * @return {Array} + */ + static map(arr, iterator) { + const result = []; + let i; + if (Array.prototype.map) { + return Array.prototype.map.call(arr, iterator); + } + for (i = 0; i < arr.length; i += 1) { + result.push(iterator(arr[i])); + } + return result; + } + + /** + * Array::find polyfill + * + * @param {Array} arr + * @param {Function} predicate + * @return {Array} + */ + static find(arr, predicate) { + let i; + let l; + if (Array.prototype.find) { + return Array.prototype.find.call(arr, predicate); + } + for (i = 0, l = arr.length; i < l; i += 1) { + const value = arr[i]; + if (predicate(value, i)) { + return value; + } + } + return undefined; + } + + /** + * Object::assign polyfill + * + * @param {Object} obj + * @param {Object} ...objs + * @return {Object} + */ + static assign(obj, ...assigners) { + const result = obj; + let i; + let l; + if (Object.assign) { + return Object.assign(obj, ...assigners); + } + for (i = 0, l = assigners.length; i < l; i += 1) { + const assigner = assigners[i]; + if (typeof assigner === 'object' && assigner !== null) { + const keys = Object.keys(assigner); + keys.forEach((key) => { + result[key] = assigner[key]; + }); + } + } + return obj; + } + + /** + * Get short version/alias for a browser name + * + * @example + * getBrowserAlias('Microsoft Edge') // edge + * + * @param {string} browserName + * @return {string} + */ + static getBrowserAlias(browserName) { + return BROWSER_ALIASES_MAP[browserName]; + } + + /** + * Get browser name for a short version/alias + * + * @example + * getBrowserTypeByAlias('edge') // Microsoft Edge + * + * @param {string} browserAlias + * @return {string} + */ + static getBrowserTypeByAlias(browserAlias) { + return BROWSER_MAP[browserAlias] || ''; + } +} diff --git a/food-ordering-app/server/node_modules/bson/bower.json b/food-ordering-app/server/node_modules/bson/bower.json index d5fc054ee..2883b37f8 100644 --- a/food-ordering-app/server/node_modules/bson/bower.json +++ b/food-ordering-app/server/node_modules/bson/bower.json @@ -22,5 +22,5 @@ "test", "tools" ], - "version": "4.6.5" + "version": "4.7.2" } diff --git a/food-ordering-app/server/node_modules/bson/bson.d.ts b/food-ordering-app/server/node_modules/bson/bson.d.ts index 8417d143b..5a5cf19ff 100644 --- a/food-ordering-app/server/node_modules/bson/bson.d.ts +++ b/food-ordering-app/server/node_modules/bson/bson.d.ts @@ -597,8 +597,6 @@ export declare interface Int32Extended { declare const kId: unique symbol; -declare const kId_2: unique symbol; - /** * A class representing a 64-bit integer * @public @@ -1166,10 +1164,8 @@ export declare type TimestampOverrides = '_bsontype' | 'toExtendedJSON' | 'fromE * A class representation of the BSON UUID type. * @public */ -export declare class UUID { - _bsontype: 'UUID'; +export declare class UUID extends Binary { static cacheHexString: boolean; - /* Excluded from this release type: [kId] */ /* Excluded from this release type: __id */ /** * Create an UUID type @@ -1183,9 +1179,6 @@ export declare class UUID { */ get id(): Buffer; set id(value: Buffer); - /** - * Generate a 16 byte uuid v4 buffer used in UUIDs - */ /** * Returns the UUID id as a 32 or 36 character hex string representation, excluding/including dashes (defaults to 36 character dash separated) * @param includeDashes - should the string exclude dash-separators. diff --git a/food-ordering-app/server/node_modules/bson/dist/bson.browser.esm.js b/food-ordering-app/server/node_modules/bson/dist/bson.browser.esm.js index 647d480c0..dfc20ac3a 100644 --- a/food-ordering-app/server/node_modules/bson/dist/bson.browser.esm.js +++ b/food-ordering-app/server/node_modules/bson/dist/bson.browser.esm.js @@ -2265,174 +2265,84 @@ var bufferToUuidHexString = function (buffer, includeDashes) { : buffer.toString('hex'); }; -var BYTE_LENGTH = 16; -var kId$1 = Symbol('id'); +/** @internal */ +var BSON_INT32_MAX$1 = 0x7fffffff; +/** @internal */ +var BSON_INT32_MIN$1 = -0x80000000; +/** @internal */ +var BSON_INT64_MAX$1 = Math.pow(2, 63) - 1; +/** @internal */ +var BSON_INT64_MIN$1 = -Math.pow(2, 63); /** - * A class representation of the BSON UUID type. - * @public + * Any integer up to 2^53 can be precisely represented by a double. + * @internal */ -var UUID = /** @class */ (function () { - /** - * Create an UUID type - * - * @param input - Can be a 32 or 36 character hex string (dashes excluded/included) or a 16 byte binary Buffer. - */ - function UUID(input) { - if (typeof input === 'undefined') { - // The most common use case (blank id, new UUID() instance) - this.id = UUID.generate(); - } - else if (input instanceof UUID) { - this[kId$1] = buffer_1.from(input.id); - this.__id = input.__id; - } - else if (ArrayBuffer.isView(input) && input.byteLength === BYTE_LENGTH) { - this.id = ensureBuffer(input); - } - else if (typeof input === 'string') { - this.id = uuidHexStringToBuffer(input); - } - else { - throw new BSONTypeError('Argument passed in UUID constructor must be a UUID, a 16 byte Buffer or a 32/36 character hex string (dashes excluded/included, format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).'); - } - } - Object.defineProperty(UUID.prototype, "id", { - /** - * The UUID bytes - * @readonly - */ - get: function () { - return this[kId$1]; - }, - set: function (value) { - this[kId$1] = value; - if (UUID.cacheHexString) { - this.__id = bufferToUuidHexString(value); - } - }, - enumerable: false, - configurable: true - }); - /** - * Generate a 16 byte uuid v4 buffer used in UUIDs - */ - /** - * Returns the UUID id as a 32 or 36 character hex string representation, excluding/including dashes (defaults to 36 character dash separated) - * @param includeDashes - should the string exclude dash-separators. - * */ - UUID.prototype.toHexString = function (includeDashes) { - if (includeDashes === void 0) { includeDashes = true; } - if (UUID.cacheHexString && this.__id) { - return this.__id; - } - var uuidHexString = bufferToUuidHexString(this.id, includeDashes); - if (UUID.cacheHexString) { - this.__id = uuidHexString; - } - return uuidHexString; - }; - /** - * Converts the id into a 36 character (dashes included) hex string, unless a encoding is specified. - */ - UUID.prototype.toString = function (encoding) { - return encoding ? this.id.toString(encoding) : this.toHexString(); - }; - /** - * Converts the id into its JSON string representation. - * A 36 character (dashes included) hex string in the format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx - */ - UUID.prototype.toJSON = function () { - return this.toHexString(); - }; - /** - * Compares the equality of this UUID with `otherID`. - * - * @param otherId - UUID instance to compare against. - */ - UUID.prototype.equals = function (otherId) { - if (!otherId) { - return false; - } - if (otherId instanceof UUID) { - return otherId.id.equals(this.id); - } - try { - return new UUID(otherId).id.equals(this.id); - } - catch (_a) { - return false; - } - }; - /** - * Creates a Binary instance from the current UUID. - */ - UUID.prototype.toBinary = function () { - return new Binary(this.id, Binary.SUBTYPE_UUID); - }; - /** - * Generates a populated buffer containing a v4 uuid - */ - UUID.generate = function () { - var bytes = randomBytes(BYTE_LENGTH); - // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - // Kindly borrowed from https://github.com/uuidjs/uuid/blob/master/src/v4.js - bytes[6] = (bytes[6] & 0x0f) | 0x40; - bytes[8] = (bytes[8] & 0x3f) | 0x80; - return buffer_1.from(bytes); - }; - /** - * Checks if a value is a valid bson UUID - * @param input - UUID, string or Buffer to validate. - */ - UUID.isValid = function (input) { - if (!input) { - return false; - } - if (input instanceof UUID) { - return true; - } - if (typeof input === 'string') { - return uuidValidateString(input); - } - if (isUint8Array(input)) { - // check for length & uuid version (https://tools.ietf.org/html/rfc4122#section-4.1.3) - if (input.length !== BYTE_LENGTH) { - return false; - } - try { - // get this byte as hex: xxxxxxxx-xxxx-XXxx-xxxx-xxxxxxxxxxxx - // check first part as uuid version: xxxxxxxx-xxxx-Xxxx-xxxx-xxxxxxxxxxxx - return parseInt(input[6].toString(16)[0], 10) === Binary.SUBTYPE_UUID; - } - catch (_a) { - return false; - } - } - return false; - }; - /** - * Creates an UUID from a hex string representation of an UUID. - * @param hexString - 32 or 36 character hex string (dashes excluded/included). - */ - UUID.createFromHexString = function (hexString) { - var buffer = uuidHexStringToBuffer(hexString); - return new UUID(buffer); - }; - /** - * Converts to a string representation of this Id. - * - * @returns return the 36 character hex string representation. - * @internal - */ - UUID.prototype[Symbol.for('nodejs.util.inspect.custom')] = function () { - return this.inspect(); - }; - UUID.prototype.inspect = function () { - return "new UUID(\"".concat(this.toHexString(), "\")"); - }; - return UUID; -}()); -Object.defineProperty(UUID.prototype, '_bsontype', { value: 'UUID' }); +var JS_INT_MAX = Math.pow(2, 53); +/** + * Any integer down to -2^53 can be precisely represented by a double. + * @internal + */ +var JS_INT_MIN = -Math.pow(2, 53); +/** Number BSON Type @internal */ +var BSON_DATA_NUMBER = 1; +/** String BSON Type @internal */ +var BSON_DATA_STRING = 2; +/** Object BSON Type @internal */ +var BSON_DATA_OBJECT = 3; +/** Array BSON Type @internal */ +var BSON_DATA_ARRAY = 4; +/** Binary BSON Type @internal */ +var BSON_DATA_BINARY = 5; +/** Binary BSON Type @internal */ +var BSON_DATA_UNDEFINED = 6; +/** ObjectId BSON Type @internal */ +var BSON_DATA_OID = 7; +/** Boolean BSON Type @internal */ +var BSON_DATA_BOOLEAN = 8; +/** Date BSON Type @internal */ +var BSON_DATA_DATE = 9; +/** null BSON Type @internal */ +var BSON_DATA_NULL = 10; +/** RegExp BSON Type @internal */ +var BSON_DATA_REGEXP = 11; +/** Code BSON Type @internal */ +var BSON_DATA_DBPOINTER = 12; +/** Code BSON Type @internal */ +var BSON_DATA_CODE = 13; +/** Symbol BSON Type @internal */ +var BSON_DATA_SYMBOL = 14; +/** Code with Scope BSON Type @internal */ +var BSON_DATA_CODE_W_SCOPE = 15; +/** 32 bit Integer BSON Type @internal */ +var BSON_DATA_INT = 16; +/** Timestamp BSON Type @internal */ +var BSON_DATA_TIMESTAMP = 17; +/** Long BSON Type @internal */ +var BSON_DATA_LONG = 18; +/** Decimal128 BSON Type @internal */ +var BSON_DATA_DECIMAL128 = 19; +/** MinKey BSON Type @internal */ +var BSON_DATA_MIN_KEY = 0xff; +/** MaxKey BSON Type @internal */ +var BSON_DATA_MAX_KEY = 0x7f; +/** Binary Default Type @internal */ +var BSON_BINARY_SUBTYPE_DEFAULT = 0; +/** Binary Function Type @internal */ +var BSON_BINARY_SUBTYPE_FUNCTION = 1; +/** Binary Byte Array Type @internal */ +var BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2; +/** Binary Deprecated UUID Type @deprecated Please use BSON_BINARY_SUBTYPE_UUID_NEW @internal */ +var BSON_BINARY_SUBTYPE_UUID = 3; +/** Binary UUID Type @internal */ +var BSON_BINARY_SUBTYPE_UUID_NEW = 4; +/** Binary MD5 Type @internal */ +var BSON_BINARY_SUBTYPE_MD5 = 5; +/** Encrypted BSON type @internal */ +var BSON_BINARY_SUBTYPE_ENCRYPTED = 6; +/** Column BSON type @internal */ +var BSON_BINARY_SUBTYPE_COLUMN = 7; +/** Binary User Defined Type @internal */ +var BSON_BINARY_SUBTYPE_USER_DEFINED = 128; /** * A class representation of the BSON Binary type. @@ -2633,7 +2543,7 @@ var Binary = /** @class */ (function () { if (!data) { throw new BSONTypeError("Unexpected Binary Extended JSON format ".concat(JSON.stringify(doc))); } - return new Binary(data, type); + return type === BSON_BINARY_SUBTYPE_UUID_NEW ? new UUID(data) : new Binary(data, type); }; /** @internal */ Binary.prototype[Symbol.for('nodejs.util.inspect.custom')] = function () { @@ -2671,6 +2581,168 @@ var Binary = /** @class */ (function () { return Binary; }()); Object.defineProperty(Binary.prototype, '_bsontype', { value: 'Binary' }); +var UUID_BYTE_LENGTH = 16; +/** + * A class representation of the BSON UUID type. + * @public + */ +var UUID = /** @class */ (function (_super) { + __extends(UUID, _super); + /** + * Create an UUID type + * + * @param input - Can be a 32 or 36 character hex string (dashes excluded/included) or a 16 byte binary Buffer. + */ + function UUID(input) { + var _this = this; + var bytes; + var hexStr; + if (input == null) { + bytes = UUID.generate(); + } + else if (input instanceof UUID) { + bytes = buffer_1.from(input.buffer); + hexStr = input.__id; + } + else if (ArrayBuffer.isView(input) && input.byteLength === UUID_BYTE_LENGTH) { + bytes = ensureBuffer(input); + } + else if (typeof input === 'string') { + bytes = uuidHexStringToBuffer(input); + } + else { + throw new BSONTypeError('Argument passed in UUID constructor must be a UUID, a 16 byte Buffer or a 32/36 character hex string (dashes excluded/included, format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).'); + } + _this = _super.call(this, bytes, BSON_BINARY_SUBTYPE_UUID_NEW) || this; + _this.__id = hexStr; + return _this; + } + Object.defineProperty(UUID.prototype, "id", { + /** + * The UUID bytes + * @readonly + */ + get: function () { + return this.buffer; + }, + set: function (value) { + this.buffer = value; + if (UUID.cacheHexString) { + this.__id = bufferToUuidHexString(value); + } + }, + enumerable: false, + configurable: true + }); + /** + * Returns the UUID id as a 32 or 36 character hex string representation, excluding/including dashes (defaults to 36 character dash separated) + * @param includeDashes - should the string exclude dash-separators. + * */ + UUID.prototype.toHexString = function (includeDashes) { + if (includeDashes === void 0) { includeDashes = true; } + if (UUID.cacheHexString && this.__id) { + return this.__id; + } + var uuidHexString = bufferToUuidHexString(this.id, includeDashes); + if (UUID.cacheHexString) { + this.__id = uuidHexString; + } + return uuidHexString; + }; + /** + * Converts the id into a 36 character (dashes included) hex string, unless a encoding is specified. + */ + UUID.prototype.toString = function (encoding) { + return encoding ? this.id.toString(encoding) : this.toHexString(); + }; + /** + * Converts the id into its JSON string representation. + * A 36 character (dashes included) hex string in the format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + */ + UUID.prototype.toJSON = function () { + return this.toHexString(); + }; + /** + * Compares the equality of this UUID with `otherID`. + * + * @param otherId - UUID instance to compare against. + */ + UUID.prototype.equals = function (otherId) { + if (!otherId) { + return false; + } + if (otherId instanceof UUID) { + return otherId.id.equals(this.id); + } + try { + return new UUID(otherId).id.equals(this.id); + } + catch (_a) { + return false; + } + }; + /** + * Creates a Binary instance from the current UUID. + */ + UUID.prototype.toBinary = function () { + return new Binary(this.id, Binary.SUBTYPE_UUID); + }; + /** + * Generates a populated buffer containing a v4 uuid + */ + UUID.generate = function () { + var bytes = randomBytes(UUID_BYTE_LENGTH); + // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` + // Kindly borrowed from https://github.com/uuidjs/uuid/blob/master/src/v4.js + bytes[6] = (bytes[6] & 0x0f) | 0x40; + bytes[8] = (bytes[8] & 0x3f) | 0x80; + return buffer_1.from(bytes); + }; + /** + * Checks if a value is a valid bson UUID + * @param input - UUID, string or Buffer to validate. + */ + UUID.isValid = function (input) { + if (!input) { + return false; + } + if (input instanceof UUID) { + return true; + } + if (typeof input === 'string') { + return uuidValidateString(input); + } + if (isUint8Array(input)) { + // check for length & uuid version (https://tools.ietf.org/html/rfc4122#section-4.1.3) + if (input.length !== UUID_BYTE_LENGTH) { + return false; + } + return (input[6] & 0xf0) === 0x40 && (input[8] & 0x80) === 0x80; + } + return false; + }; + /** + * Creates an UUID from a hex string representation of an UUID. + * @param hexString - 32 or 36 character hex string (dashes excluded/included). + */ + UUID.createFromHexString = function (hexString) { + var buffer = uuidHexStringToBuffer(hexString); + return new UUID(buffer); + }; + /** + * Converts to a string representation of this Id. + * + * @returns return the 36 character hex string representation. + * @internal + */ + UUID.prototype[Symbol.for('nodejs.util.inspect.custom')] = function () { + return this.inspect(); + }; + UUID.prototype.inspect = function () { + return "new UUID(\"".concat(this.toHexString(), "\")"); + }; + return UUID; +}(Binary)); /** * A class representation of the BSON Code type. @@ -4399,22 +4471,14 @@ var Double = /** @class */ (function () { if (options && (options.legacy || (options.relaxed && isFinite(this.value)))) { return this.value; } - // NOTE: JavaScript has +0 and -0, apparently to model limit calculations. If a user - // explicitly provided `-0` then we need to ensure the sign makes it into the output if (Object.is(Math.sign(this.value), -0)) { + // NOTE: JavaScript has +0 and -0, apparently to model limit calculations. If a user + // explicitly provided `-0` then we need to ensure the sign makes it into the output return { $numberDouble: "-".concat(this.value.toFixed(1)) }; } - var $numberDouble; - if (Number.isInteger(this.value)) { - $numberDouble = this.value.toFixed(1); - if ($numberDouble.length >= 13) { - $numberDouble = this.value.toExponential(13).toUpperCase(); - } - } - else { - $numberDouble = this.value.toString(); - } - return { $numberDouble: $numberDouble }; + return { + $numberDouble: Number.isInteger(this.value) ? this.value.toFixed(1) : this.value.toString() + }; }; /** @internal */ Double.fromExtendedJSON = function (doc, options) { @@ -5034,12 +5098,12 @@ function isBSONType(value) { return (isObjectLike(value) && Reflect.has(value, '_bsontype') && typeof value._bsontype === 'string'); } // INT32 boundaries -var BSON_INT32_MAX$1 = 0x7fffffff; -var BSON_INT32_MIN$1 = -0x80000000; +var BSON_INT32_MAX = 0x7fffffff; +var BSON_INT32_MIN = -0x80000000; // INT64 boundaries // const BSON_INT64_MAX = 0x7fffffffffffffff; // TODO(NODE-4377): This number cannot be precisely represented in JS -var BSON_INT64_MAX$1 = 0x8000000000000000; -var BSON_INT64_MIN$1 = -0x8000000000000000; +var BSON_INT64_MAX = 0x8000000000000000; +var BSON_INT64_MIN = -0x8000000000000000; // all the types where we don't need to do any special processing and can just pass the EJSON //straight to type.fromExtendedJSON var keysToCodecs = { @@ -5067,9 +5131,9 @@ function deserializeValue(value, options) { // if it's an integer, should interpret as smallest BSON integer // that can represent it exactly. (if out of range, interpret as double.) if (Math.floor(value) === value) { - if (value >= BSON_INT32_MIN$1 && value <= BSON_INT32_MAX$1) + if (value >= BSON_INT32_MIN && value <= BSON_INT32_MAX) return new Int32(value); - if (value >= BSON_INT64_MIN$1 && value <= BSON_INT64_MAX$1) + if (value >= BSON_INT64_MIN && value <= BSON_INT64_MAX) return Long.fromNumber(value); } // If the number is a non-integer or out of integer range, should interpret as BSON Double. @@ -5193,7 +5257,7 @@ function serializeValue(value, options) { if (typeof value === 'number' && (!options.relaxed || !isFinite(value))) { // it's an integer if (Math.floor(value) === value) { - var int32Range = value >= BSON_INT32_MIN$1 && value <= BSON_INT32_MAX$1, int64Range = value >= BSON_INT64_MIN$1 && value <= BSON_INT64_MAX$1; + var int32Range = value >= BSON_INT32_MIN && value <= BSON_INT32_MAX, int64Range = value >= BSON_INT64_MIN && value <= BSON_INT64_MAX; // interpret as being of the smallest BSON integer type that can represent the number exactly if (int32Range) return { $numberInt: value.toString() }; @@ -5518,85 +5582,6 @@ else { }()); } -/** @internal */ -var BSON_INT32_MAX = 0x7fffffff; -/** @internal */ -var BSON_INT32_MIN = -0x80000000; -/** @internal */ -var BSON_INT64_MAX = Math.pow(2, 63) - 1; -/** @internal */ -var BSON_INT64_MIN = -Math.pow(2, 63); -/** - * Any integer up to 2^53 can be precisely represented by a double. - * @internal - */ -var JS_INT_MAX = Math.pow(2, 53); -/** - * Any integer down to -2^53 can be precisely represented by a double. - * @internal - */ -var JS_INT_MIN = -Math.pow(2, 53); -/** Number BSON Type @internal */ -var BSON_DATA_NUMBER = 1; -/** String BSON Type @internal */ -var BSON_DATA_STRING = 2; -/** Object BSON Type @internal */ -var BSON_DATA_OBJECT = 3; -/** Array BSON Type @internal */ -var BSON_DATA_ARRAY = 4; -/** Binary BSON Type @internal */ -var BSON_DATA_BINARY = 5; -/** Binary BSON Type @internal */ -var BSON_DATA_UNDEFINED = 6; -/** ObjectId BSON Type @internal */ -var BSON_DATA_OID = 7; -/** Boolean BSON Type @internal */ -var BSON_DATA_BOOLEAN = 8; -/** Date BSON Type @internal */ -var BSON_DATA_DATE = 9; -/** null BSON Type @internal */ -var BSON_DATA_NULL = 10; -/** RegExp BSON Type @internal */ -var BSON_DATA_REGEXP = 11; -/** Code BSON Type @internal */ -var BSON_DATA_DBPOINTER = 12; -/** Code BSON Type @internal */ -var BSON_DATA_CODE = 13; -/** Symbol BSON Type @internal */ -var BSON_DATA_SYMBOL = 14; -/** Code with Scope BSON Type @internal */ -var BSON_DATA_CODE_W_SCOPE = 15; -/** 32 bit Integer BSON Type @internal */ -var BSON_DATA_INT = 16; -/** Timestamp BSON Type @internal */ -var BSON_DATA_TIMESTAMP = 17; -/** Long BSON Type @internal */ -var BSON_DATA_LONG = 18; -/** Decimal128 BSON Type @internal */ -var BSON_DATA_DECIMAL128 = 19; -/** MinKey BSON Type @internal */ -var BSON_DATA_MIN_KEY = 0xff; -/** MaxKey BSON Type @internal */ -var BSON_DATA_MAX_KEY = 0x7f; -/** Binary Default Type @internal */ -var BSON_BINARY_SUBTYPE_DEFAULT = 0; -/** Binary Function Type @internal */ -var BSON_BINARY_SUBTYPE_FUNCTION = 1; -/** Binary Byte Array Type @internal */ -var BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2; -/** Binary Deprecated UUID Type @deprecated Please use BSON_BINARY_SUBTYPE_UUID_NEW @internal */ -var BSON_BINARY_SUBTYPE_UUID = 3; -/** Binary UUID Type @internal */ -var BSON_BINARY_SUBTYPE_UUID_NEW = 4; -/** Binary MD5 Type @internal */ -var BSON_BINARY_SUBTYPE_MD5 = 5; -/** Encrypted BSON type @internal */ -var BSON_BINARY_SUBTYPE_ENCRYPTED = 6; -/** Column BSON type @internal */ -var BSON_BINARY_SUBTYPE_COLUMN = 7; -/** Binary User Defined Type @internal */ -var BSON_BINARY_SUBTYPE_USER_DEFINED = 128; - function calculateObjectSize$1(object, serializeFunctions, ignoreUndefined) { var totalLength = 4 + 1; if (Array.isArray(object)) { @@ -5634,7 +5619,7 @@ value, serializeFunctions, isArray, ignoreUndefined) { if (Math.floor(value) === value && value >= JS_INT_MIN && value <= JS_INT_MAX) { - if (value >= BSON_INT32_MIN && value <= BSON_INT32_MAX) { + if (value >= BSON_INT32_MIN$1 && value <= BSON_INT32_MAX$1) { // 32 bit return (name != null ? buffer_1.byteLength(name, 'utf8') + 1 : 0) + (4 + 1); } @@ -6136,6 +6121,9 @@ function deserializeObject(buffer, index, options, isArray) { } else { value = new Binary(buffer.slice(index, index + binarySize), subType); + if (subType === BSON_BINARY_SUBTYPE_UUID_NEW) { + value = value.toUUID(); + } } } else { @@ -6161,8 +6149,11 @@ function deserializeObject(buffer, index, options, isArray) { if (promoteBuffers && promoteValues) { value = _buffer; } + else if (subType === BSON_BINARY_SUBTYPE_UUID_NEW) { + value = new Binary(buffer.slice(index, index + binarySize), subType).toUUID(); + } else { - value = new Binary(_buffer, subType); + value = new Binary(buffer.slice(index, index + binarySize), subType); } } // Update the index @@ -6489,8 +6480,8 @@ function serializeNumber(buffer, key, value, index, isArray) { // We have an integer value // TODO(NODE-2529): Add support for big int if (Number.isInteger(value) && - value >= BSON_INT32_MIN && - value <= BSON_INT32_MAX) { + value >= BSON_INT32_MIN$1 && + value <= BSON_INT32_MAX$1) { // If the value fits in 32 bits encode as int32 // Set int type 32 bits or less buffer[index++] = BSON_DATA_INT; @@ -7467,5 +7458,5 @@ var BSON = { }; export default BSON; -export { BSONError, BSONRegExp, BSONSymbol, BSONTypeError, BSON_BINARY_SUBTYPE_BYTE_ARRAY, BSON_BINARY_SUBTYPE_COLUMN, BSON_BINARY_SUBTYPE_DEFAULT, BSON_BINARY_SUBTYPE_ENCRYPTED, BSON_BINARY_SUBTYPE_FUNCTION, BSON_BINARY_SUBTYPE_MD5, BSON_BINARY_SUBTYPE_USER_DEFINED, BSON_BINARY_SUBTYPE_UUID, BSON_BINARY_SUBTYPE_UUID_NEW, BSON_DATA_ARRAY, BSON_DATA_BINARY, BSON_DATA_BOOLEAN, BSON_DATA_CODE, BSON_DATA_CODE_W_SCOPE, BSON_DATA_DATE, BSON_DATA_DBPOINTER, BSON_DATA_DECIMAL128, BSON_DATA_INT, BSON_DATA_LONG, BSON_DATA_MAX_KEY, BSON_DATA_MIN_KEY, BSON_DATA_NULL, BSON_DATA_NUMBER, BSON_DATA_OBJECT, BSON_DATA_OID, BSON_DATA_REGEXP, BSON_DATA_STRING, BSON_DATA_SYMBOL, BSON_DATA_TIMESTAMP, BSON_DATA_UNDEFINED, BSON_INT32_MAX, BSON_INT32_MIN, BSON_INT64_MAX, BSON_INT64_MIN, Binary, Code, DBRef, Decimal128, Double, EJSON, Int32, Long, LongWithoutOverridesClass, bsonMap as Map, MaxKey, MinKey, ObjectId as ObjectID, ObjectId, Timestamp, UUID, calculateObjectSize, deserialize, deserializeStream, serialize, serializeWithBufferAndIndex, setInternalBufferSize }; +export { BSONError, BSONRegExp, BSONSymbol, BSONTypeError, BSON_BINARY_SUBTYPE_BYTE_ARRAY, BSON_BINARY_SUBTYPE_COLUMN, BSON_BINARY_SUBTYPE_DEFAULT, BSON_BINARY_SUBTYPE_ENCRYPTED, BSON_BINARY_SUBTYPE_FUNCTION, BSON_BINARY_SUBTYPE_MD5, BSON_BINARY_SUBTYPE_USER_DEFINED, BSON_BINARY_SUBTYPE_UUID, BSON_BINARY_SUBTYPE_UUID_NEW, BSON_DATA_ARRAY, BSON_DATA_BINARY, BSON_DATA_BOOLEAN, BSON_DATA_CODE, BSON_DATA_CODE_W_SCOPE, BSON_DATA_DATE, BSON_DATA_DBPOINTER, BSON_DATA_DECIMAL128, BSON_DATA_INT, BSON_DATA_LONG, BSON_DATA_MAX_KEY, BSON_DATA_MIN_KEY, BSON_DATA_NULL, BSON_DATA_NUMBER, BSON_DATA_OBJECT, BSON_DATA_OID, BSON_DATA_REGEXP, BSON_DATA_STRING, BSON_DATA_SYMBOL, BSON_DATA_TIMESTAMP, BSON_DATA_UNDEFINED, BSON_INT32_MAX$1 as BSON_INT32_MAX, BSON_INT32_MIN$1 as BSON_INT32_MIN, BSON_INT64_MAX$1 as BSON_INT64_MAX, BSON_INT64_MIN$1 as BSON_INT64_MIN, Binary, Code, DBRef, Decimal128, Double, EJSON, Int32, Long, LongWithoutOverridesClass, bsonMap as Map, MaxKey, MinKey, ObjectId as ObjectID, ObjectId, Timestamp, UUID, calculateObjectSize, deserialize, deserializeStream, serialize, serializeWithBufferAndIndex, setInternalBufferSize }; //# sourceMappingURL=bson.browser.esm.js.map diff --git a/food-ordering-app/server/node_modules/bson/dist/bson.browser.esm.js.map b/food-ordering-app/server/node_modules/bson/dist/bson.browser.esm.js.map index a9f396b1b..aceabb89b 100644 --- a/food-ordering-app/server/node_modules/bson/dist/bson.browser.esm.js.map +++ b/food-ordering-app/server/node_modules/bson/dist/bson.browser.esm.js.map @@ -1 +1 @@ -{"version":3,"file":"bson.browser.esm.js","sources":["../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/buffer/index.js","../node_modules/tslib/tslib.es6.js","../src/error.ts","../src/utils/global.ts","../src/parser/utils.ts","../src/ensure_buffer.ts","../src/uuid_utils.ts","../src/uuid.ts","../src/binary.ts","../src/code.ts","../src/db_ref.ts","../src/long.ts","../src/decimal128.ts","../src/double.ts","../src/int_32.ts","../src/max_key.ts","../src/min_key.ts","../src/objectid.ts","../src/regexp.ts","../src/symbol.ts","../src/timestamp.ts","../src/extended_json.ts","../src/map.ts","../src/constants.ts","../src/parser/calculate_size.ts","../src/validate_utf8.ts","../src/parser/deserializer.ts","../src/parser/serializer.ts","../src/bson.ts"],"sourcesContent":["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","Uint8Array","Array","code","i","len","length","charCodeAt","getLens","b64","Error","validLen","indexOf","placeHoldersLen","lens","_byteLength","tmp","arr","curByte","tripletToBase64","num","encodeChunk","uint8","start","end","output","push","join","extraBytes","parts","maxChunkLength","len2","buffer","offset","isLE","mLen","nBytes","e","m","eLen","eMax","eBias","nBits","d","s","NaN","Infinity","Math","pow","value","c","rt","abs","isNaN","floor","log","LN2","customInspectSymbol","Symbol","exports","Buffer","SlowBuffer","K_MAX_LENGTH","TYPED_ARRAY_SUPPORT","typedArraySupport","console","error","proto","foo","Object","setPrototypeOf","prototype","defineProperty","enumerable","get","isBuffer","undefined","byteOffset","createBuffer","RangeError","buf","arg","encodingOrOffset","TypeError","allocUnsafe","from","poolSize","fromString","ArrayBuffer","isView","fromArrayView","isInstance","fromArrayBuffer","SharedArrayBuffer","valueOf","b","fromObject","toPrimitive","assertSize","size","alloc","fill","encoding","checked","allocUnsafeSlow","string","isEncoding","actual","write","slice","fromArrayLike","array","arrayView","copy","obj","numberIsNaN","type","isArray","data","toString","_isBuffer","compare","a","x","y","min","String","toLowerCase","concat","list","pos","set","call","mustMatch","arguments","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","swap16","swap32","swap64","apply","toLocaleString","equals","inspect","str","max","INSPECT_MAX_BYTES","replace","trim","target","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","val","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","j","includes","hexWrite","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","asciiToBytes","base64Write","ucs2Write","utf16leToBytes","isFinite","toJSON","_arr","base64","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","fromCharCode","ret","out","hexSliceLookupTable","bytes","newBuf","subarray","checkOffset","ext","readUintLE","readUIntLE","noAssert","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","ieee754","readFloatBE","readDoubleLE","readDoubleBE","checkInt","writeUintLE","writeUIntLE","maxBytes","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","checkIEEE754","writeFloat","littleEndian","writeFloatLE","writeFloatBE","writeDouble","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","INVALID_BASE64_RE","base64clean","split","units","leadSurrogate","byteArray","hi","lo","src","dst","constructor","name","alphabet","table","i16","extendStatics","__proto__","p","hasOwnProperty","__extends","__","create","__assign","assign","t","kId","BSON_INT32_MAX","BSON_INT32_MIN","BSON_INT64_MAX","BSON_INT64_MIN","calculateObjectSize","constants.JS_INT_MIN","constants.JS_INT_MAX","constants.BSON_INT32_MIN","constants.BSON_INT32_MAX","deserialize","constants.BSON_DATA_STRING","constants.BSON_DATA_OID","constants.BSON_DATA_INT","constants.BSON_DATA_NUMBER","constants.BSON_DATA_DATE","constants.BSON_DATA_BOOLEAN","constants.BSON_DATA_OBJECT","constants.BSON_DATA_ARRAY","constants.BSON_DATA_UNDEFINED","constants.BSON_DATA_NULL","constants.BSON_DATA_LONG","constants.BSON_DATA_DECIMAL128","constants.BSON_DATA_BINARY","constants.BSON_DATA_REGEXP","constants.BSON_DATA_SYMBOL","constants.BSON_DATA_TIMESTAMP","constants.BSON_DATA_MIN_KEY","constants.BSON_DATA_MAX_KEY","constants.BSON_DATA_CODE","constants.BSON_DATA_CODE_W_SCOPE","constants.BSON_DATA_DBPOINTER","constants.BSON_BINARY_SUBTYPE_DEFAULT","Map","internalSerialize","internalDeserialize","internalCalculateObjectSize"],"mappings":"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AAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,C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"} \ No newline at end of file +{"version":3,"file":"bson.browser.esm.js","sources":["../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/buffer/index.js","../node_modules/tslib/tslib.es6.js","../src/error.ts","../src/utils/global.ts","../src/parser/utils.ts","../src/ensure_buffer.ts","../src/uuid_utils.ts","../src/constants.ts","../src/binary.ts","../src/code.ts","../src/db_ref.ts","../src/long.ts","../src/decimal128.ts","../src/double.ts","../src/int_32.ts","../src/max_key.ts","../src/min_key.ts","../src/objectid.ts","../src/regexp.ts","../src/symbol.ts","../src/timestamp.ts","../src/extended_json.ts","../src/map.ts","../src/parser/calculate_size.ts","../src/validate_utf8.ts","../src/parser/deserializer.ts","../src/parser/serializer.ts","../src/bson.ts"],"sourcesContent":["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","Uint8Array","Array","code","i","len","length","charCodeAt","getLens","b64","Error","validLen","indexOf","placeHoldersLen","lens","_byteLength","tmp","arr","curByte","tripletToBase64","num","encodeChunk","uint8","start","end","output","push","join","extraBytes","parts","maxChunkLength","len2","buffer","offset","isLE","mLen","nBytes","e","m","eLen","eMax","eBias","nBits","d","s","NaN","Infinity","Math","pow","value","c","rt","abs","isNaN","floor","log","LN2","customInspectSymbol","Symbol","exports","Buffer","SlowBuffer","K_MAX_LENGTH","TYPED_ARRAY_SUPPORT","typedArraySupport","console","error","proto","foo","Object","setPrototypeOf","prototype","defineProperty","enumerable","get","isBuffer","undefined","byteOffset","createBuffer","RangeError","buf","arg","encodingOrOffset","TypeError","allocUnsafe","from","poolSize","fromString","ArrayBuffer","isView","fromArrayView","isInstance","fromArrayBuffer","SharedArrayBuffer","valueOf","b","fromObject","toPrimitive","assertSize","size","alloc","fill","encoding","checked","allocUnsafeSlow","string","isEncoding","actual","write","slice","fromArrayLike","array","arrayView","copy","obj","numberIsNaN","type","isArray","data","toString","_isBuffer","compare","a","x","y","min","String","toLowerCase","concat","list","pos","set","call","mustMatch","arguments","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","swap16","swap32","swap64","apply","toLocaleString","equals","inspect","str","max","INSPECT_MAX_BYTES","replace","trim","target","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","val","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","j","includes","hexWrite","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","asciiToBytes","base64Write","ucs2Write","utf16leToBytes","isFinite","toJSON","_arr","base64","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","fromCharCode","ret","out","hexSliceLookupTable","bytes","newBuf","subarray","checkOffset","ext","readUintLE","readUIntLE","noAssert","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","ieee754","readFloatBE","readDoubleLE","readDoubleBE","checkInt","writeUintLE","writeUIntLE","maxBytes","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","checkIEEE754","writeFloat","littleEndian","writeFloatLE","writeFloatBE","writeDouble","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","INVALID_BASE64_RE","base64clean","split","units","leadSurrogate","byteArray","hi","lo","src","dst","constructor","name","alphabet","table","i16","extendStatics","__proto__","p","hasOwnProperty","__extends","__","create","__assign","assign","t","BSON_INT32_MAX","BSON_INT32_MIN","BSON_INT64_MAX","BSON_INT64_MIN","calculateObjectSize","constants.JS_INT_MIN","constants.JS_INT_MAX","constants.BSON_INT32_MIN","constants.BSON_INT32_MAX","deserialize","constants.BSON_DATA_STRING","constants.BSON_DATA_OID","constants.BSON_DATA_INT","constants.BSON_DATA_NUMBER","constants.BSON_DATA_DATE","constants.BSON_DATA_BOOLEAN","constants.BSON_DATA_OBJECT","constants.BSON_DATA_ARRAY","constants.BSON_DATA_UNDEFINED","constants.BSON_DATA_NULL","constants.BSON_DATA_LONG","constants.BSON_DATA_DECIMAL128","constants.BSON_DATA_BINARY","constants.BSON_BINARY_SUBTYPE_UUID_NEW","constants.BSON_DATA_REGEXP","constants.BSON_DATA_SYMBOL","constants.BSON_DATA_TIMESTAMP","constants.BSON_DATA_MIN_KEY","constants.BSON_DATA_MAX_KEY","constants.BSON_DATA_CODE","constants.BSON_DATA_CODE_W_SCOPE","constants.BSON_DATA_DBPOINTER","constants.BSON_BINARY_SUBTYPE_DEFAULT","Map","internalSerialize","internalDeserialize","internalCalculateObjectSize"],"mappings":"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AC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EA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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/bson/dist/bson.browser.umd.js b/food-ordering-app/server/node_modules/bson/dist/bson.browser.umd.js index fa54e090f..761e5db1e 100644 --- a/food-ordering-app/server/node_modules/bson/dist/bson.browser.umd.js +++ b/food-ordering-app/server/node_modules/bson/dist/bson.browser.umd.js @@ -2271,174 +2271,84 @@ : buffer.toString('hex'); }; - var BYTE_LENGTH = 16; - var kId$1 = Symbol('id'); + /** @internal */ + var BSON_INT32_MAX$1 = 0x7fffffff; + /** @internal */ + var BSON_INT32_MIN$1 = -0x80000000; + /** @internal */ + var BSON_INT64_MAX$1 = Math.pow(2, 63) - 1; + /** @internal */ + var BSON_INT64_MIN$1 = -Math.pow(2, 63); /** - * A class representation of the BSON UUID type. - * @public + * Any integer up to 2^53 can be precisely represented by a double. + * @internal */ - var UUID = /** @class */ (function () { - /** - * Create an UUID type - * - * @param input - Can be a 32 or 36 character hex string (dashes excluded/included) or a 16 byte binary Buffer. - */ - function UUID(input) { - if (typeof input === 'undefined') { - // The most common use case (blank id, new UUID() instance) - this.id = UUID.generate(); - } - else if (input instanceof UUID) { - this[kId$1] = buffer_1.from(input.id); - this.__id = input.__id; - } - else if (ArrayBuffer.isView(input) && input.byteLength === BYTE_LENGTH) { - this.id = ensureBuffer(input); - } - else if (typeof input === 'string') { - this.id = uuidHexStringToBuffer(input); - } - else { - throw new BSONTypeError('Argument passed in UUID constructor must be a UUID, a 16 byte Buffer or a 32/36 character hex string (dashes excluded/included, format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).'); - } - } - Object.defineProperty(UUID.prototype, "id", { - /** - * The UUID bytes - * @readonly - */ - get: function () { - return this[kId$1]; - }, - set: function (value) { - this[kId$1] = value; - if (UUID.cacheHexString) { - this.__id = bufferToUuidHexString(value); - } - }, - enumerable: false, - configurable: true - }); - /** - * Generate a 16 byte uuid v4 buffer used in UUIDs - */ - /** - * Returns the UUID id as a 32 or 36 character hex string representation, excluding/including dashes (defaults to 36 character dash separated) - * @param includeDashes - should the string exclude dash-separators. - * */ - UUID.prototype.toHexString = function (includeDashes) { - if (includeDashes === void 0) { includeDashes = true; } - if (UUID.cacheHexString && this.__id) { - return this.__id; - } - var uuidHexString = bufferToUuidHexString(this.id, includeDashes); - if (UUID.cacheHexString) { - this.__id = uuidHexString; - } - return uuidHexString; - }; - /** - * Converts the id into a 36 character (dashes included) hex string, unless a encoding is specified. - */ - UUID.prototype.toString = function (encoding) { - return encoding ? this.id.toString(encoding) : this.toHexString(); - }; - /** - * Converts the id into its JSON string representation. - * A 36 character (dashes included) hex string in the format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx - */ - UUID.prototype.toJSON = function () { - return this.toHexString(); - }; - /** - * Compares the equality of this UUID with `otherID`. - * - * @param otherId - UUID instance to compare against. - */ - UUID.prototype.equals = function (otherId) { - if (!otherId) { - return false; - } - if (otherId instanceof UUID) { - return otherId.id.equals(this.id); - } - try { - return new UUID(otherId).id.equals(this.id); - } - catch (_a) { - return false; - } - }; - /** - * Creates a Binary instance from the current UUID. - */ - UUID.prototype.toBinary = function () { - return new Binary(this.id, Binary.SUBTYPE_UUID); - }; - /** - * Generates a populated buffer containing a v4 uuid - */ - UUID.generate = function () { - var bytes = randomBytes(BYTE_LENGTH); - // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - // Kindly borrowed from https://github.com/uuidjs/uuid/blob/master/src/v4.js - bytes[6] = (bytes[6] & 0x0f) | 0x40; - bytes[8] = (bytes[8] & 0x3f) | 0x80; - return buffer_1.from(bytes); - }; - /** - * Checks if a value is a valid bson UUID - * @param input - UUID, string or Buffer to validate. - */ - UUID.isValid = function (input) { - if (!input) { - return false; - } - if (input instanceof UUID) { - return true; - } - if (typeof input === 'string') { - return uuidValidateString(input); - } - if (isUint8Array(input)) { - // check for length & uuid version (https://tools.ietf.org/html/rfc4122#section-4.1.3) - if (input.length !== BYTE_LENGTH) { - return false; - } - try { - // get this byte as hex: xxxxxxxx-xxxx-XXxx-xxxx-xxxxxxxxxxxx - // check first part as uuid version: xxxxxxxx-xxxx-Xxxx-xxxx-xxxxxxxxxxxx - return parseInt(input[6].toString(16)[0], 10) === Binary.SUBTYPE_UUID; - } - catch (_a) { - return false; - } - } - return false; - }; - /** - * Creates an UUID from a hex string representation of an UUID. - * @param hexString - 32 or 36 character hex string (dashes excluded/included). - */ - UUID.createFromHexString = function (hexString) { - var buffer = uuidHexStringToBuffer(hexString); - return new UUID(buffer); - }; - /** - * Converts to a string representation of this Id. - * - * @returns return the 36 character hex string representation. - * @internal - */ - UUID.prototype[Symbol.for('nodejs.util.inspect.custom')] = function () { - return this.inspect(); - }; - UUID.prototype.inspect = function () { - return "new UUID(\"".concat(this.toHexString(), "\")"); - }; - return UUID; - }()); - Object.defineProperty(UUID.prototype, '_bsontype', { value: 'UUID' }); + var JS_INT_MAX = Math.pow(2, 53); + /** + * Any integer down to -2^53 can be precisely represented by a double. + * @internal + */ + var JS_INT_MIN = -Math.pow(2, 53); + /** Number BSON Type @internal */ + var BSON_DATA_NUMBER = 1; + /** String BSON Type @internal */ + var BSON_DATA_STRING = 2; + /** Object BSON Type @internal */ + var BSON_DATA_OBJECT = 3; + /** Array BSON Type @internal */ + var BSON_DATA_ARRAY = 4; + /** Binary BSON Type @internal */ + var BSON_DATA_BINARY = 5; + /** Binary BSON Type @internal */ + var BSON_DATA_UNDEFINED = 6; + /** ObjectId BSON Type @internal */ + var BSON_DATA_OID = 7; + /** Boolean BSON Type @internal */ + var BSON_DATA_BOOLEAN = 8; + /** Date BSON Type @internal */ + var BSON_DATA_DATE = 9; + /** null BSON Type @internal */ + var BSON_DATA_NULL = 10; + /** RegExp BSON Type @internal */ + var BSON_DATA_REGEXP = 11; + /** Code BSON Type @internal */ + var BSON_DATA_DBPOINTER = 12; + /** Code BSON Type @internal */ + var BSON_DATA_CODE = 13; + /** Symbol BSON Type @internal */ + var BSON_DATA_SYMBOL = 14; + /** Code with Scope BSON Type @internal */ + var BSON_DATA_CODE_W_SCOPE = 15; + /** 32 bit Integer BSON Type @internal */ + var BSON_DATA_INT = 16; + /** Timestamp BSON Type @internal */ + var BSON_DATA_TIMESTAMP = 17; + /** Long BSON Type @internal */ + var BSON_DATA_LONG = 18; + /** Decimal128 BSON Type @internal */ + var BSON_DATA_DECIMAL128 = 19; + /** MinKey BSON Type @internal */ + var BSON_DATA_MIN_KEY = 0xff; + /** MaxKey BSON Type @internal */ + var BSON_DATA_MAX_KEY = 0x7f; + /** Binary Default Type @internal */ + var BSON_BINARY_SUBTYPE_DEFAULT = 0; + /** Binary Function Type @internal */ + var BSON_BINARY_SUBTYPE_FUNCTION = 1; + /** Binary Byte Array Type @internal */ + var BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2; + /** Binary Deprecated UUID Type @deprecated Please use BSON_BINARY_SUBTYPE_UUID_NEW @internal */ + var BSON_BINARY_SUBTYPE_UUID = 3; + /** Binary UUID Type @internal */ + var BSON_BINARY_SUBTYPE_UUID_NEW = 4; + /** Binary MD5 Type @internal */ + var BSON_BINARY_SUBTYPE_MD5 = 5; + /** Encrypted BSON type @internal */ + var BSON_BINARY_SUBTYPE_ENCRYPTED = 6; + /** Column BSON type @internal */ + var BSON_BINARY_SUBTYPE_COLUMN = 7; + /** Binary User Defined Type @internal */ + var BSON_BINARY_SUBTYPE_USER_DEFINED = 128; /** * A class representation of the BSON Binary type. @@ -2639,7 +2549,7 @@ if (!data) { throw new BSONTypeError("Unexpected Binary Extended JSON format ".concat(JSON.stringify(doc))); } - return new Binary(data, type); + return type === BSON_BINARY_SUBTYPE_UUID_NEW ? new UUID(data) : new Binary(data, type); }; /** @internal */ Binary.prototype[Symbol.for('nodejs.util.inspect.custom')] = function () { @@ -2677,6 +2587,168 @@ return Binary; }()); Object.defineProperty(Binary.prototype, '_bsontype', { value: 'Binary' }); + var UUID_BYTE_LENGTH = 16; + /** + * A class representation of the BSON UUID type. + * @public + */ + var UUID = /** @class */ (function (_super) { + __extends(UUID, _super); + /** + * Create an UUID type + * + * @param input - Can be a 32 or 36 character hex string (dashes excluded/included) or a 16 byte binary Buffer. + */ + function UUID(input) { + var _this = this; + var bytes; + var hexStr; + if (input == null) { + bytes = UUID.generate(); + } + else if (input instanceof UUID) { + bytes = buffer_1.from(input.buffer); + hexStr = input.__id; + } + else if (ArrayBuffer.isView(input) && input.byteLength === UUID_BYTE_LENGTH) { + bytes = ensureBuffer(input); + } + else if (typeof input === 'string') { + bytes = uuidHexStringToBuffer(input); + } + else { + throw new BSONTypeError('Argument passed in UUID constructor must be a UUID, a 16 byte Buffer or a 32/36 character hex string (dashes excluded/included, format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).'); + } + _this = _super.call(this, bytes, BSON_BINARY_SUBTYPE_UUID_NEW) || this; + _this.__id = hexStr; + return _this; + } + Object.defineProperty(UUID.prototype, "id", { + /** + * The UUID bytes + * @readonly + */ + get: function () { + return this.buffer; + }, + set: function (value) { + this.buffer = value; + if (UUID.cacheHexString) { + this.__id = bufferToUuidHexString(value); + } + }, + enumerable: false, + configurable: true + }); + /** + * Returns the UUID id as a 32 or 36 character hex string representation, excluding/including dashes (defaults to 36 character dash separated) + * @param includeDashes - should the string exclude dash-separators. + * */ + UUID.prototype.toHexString = function (includeDashes) { + if (includeDashes === void 0) { includeDashes = true; } + if (UUID.cacheHexString && this.__id) { + return this.__id; + } + var uuidHexString = bufferToUuidHexString(this.id, includeDashes); + if (UUID.cacheHexString) { + this.__id = uuidHexString; + } + return uuidHexString; + }; + /** + * Converts the id into a 36 character (dashes included) hex string, unless a encoding is specified. + */ + UUID.prototype.toString = function (encoding) { + return encoding ? this.id.toString(encoding) : this.toHexString(); + }; + /** + * Converts the id into its JSON string representation. + * A 36 character (dashes included) hex string in the format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + */ + UUID.prototype.toJSON = function () { + return this.toHexString(); + }; + /** + * Compares the equality of this UUID with `otherID`. + * + * @param otherId - UUID instance to compare against. + */ + UUID.prototype.equals = function (otherId) { + if (!otherId) { + return false; + } + if (otherId instanceof UUID) { + return otherId.id.equals(this.id); + } + try { + return new UUID(otherId).id.equals(this.id); + } + catch (_a) { + return false; + } + }; + /** + * Creates a Binary instance from the current UUID. + */ + UUID.prototype.toBinary = function () { + return new Binary(this.id, Binary.SUBTYPE_UUID); + }; + /** + * Generates a populated buffer containing a v4 uuid + */ + UUID.generate = function () { + var bytes = randomBytes(UUID_BYTE_LENGTH); + // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` + // Kindly borrowed from https://github.com/uuidjs/uuid/blob/master/src/v4.js + bytes[6] = (bytes[6] & 0x0f) | 0x40; + bytes[8] = (bytes[8] & 0x3f) | 0x80; + return buffer_1.from(bytes); + }; + /** + * Checks if a value is a valid bson UUID + * @param input - UUID, string or Buffer to validate. + */ + UUID.isValid = function (input) { + if (!input) { + return false; + } + if (input instanceof UUID) { + return true; + } + if (typeof input === 'string') { + return uuidValidateString(input); + } + if (isUint8Array(input)) { + // check for length & uuid version (https://tools.ietf.org/html/rfc4122#section-4.1.3) + if (input.length !== UUID_BYTE_LENGTH) { + return false; + } + return (input[6] & 0xf0) === 0x40 && (input[8] & 0x80) === 0x80; + } + return false; + }; + /** + * Creates an UUID from a hex string representation of an UUID. + * @param hexString - 32 or 36 character hex string (dashes excluded/included). + */ + UUID.createFromHexString = function (hexString) { + var buffer = uuidHexStringToBuffer(hexString); + return new UUID(buffer); + }; + /** + * Converts to a string representation of this Id. + * + * @returns return the 36 character hex string representation. + * @internal + */ + UUID.prototype[Symbol.for('nodejs.util.inspect.custom')] = function () { + return this.inspect(); + }; + UUID.prototype.inspect = function () { + return "new UUID(\"".concat(this.toHexString(), "\")"); + }; + return UUID; + }(Binary)); /** * A class representation of the BSON Code type. @@ -4405,22 +4477,14 @@ if (options && (options.legacy || (options.relaxed && isFinite(this.value)))) { return this.value; } - // NOTE: JavaScript has +0 and -0, apparently to model limit calculations. If a user - // explicitly provided `-0` then we need to ensure the sign makes it into the output if (Object.is(Math.sign(this.value), -0)) { + // NOTE: JavaScript has +0 and -0, apparently to model limit calculations. If a user + // explicitly provided `-0` then we need to ensure the sign makes it into the output return { $numberDouble: "-".concat(this.value.toFixed(1)) }; } - var $numberDouble; - if (Number.isInteger(this.value)) { - $numberDouble = this.value.toFixed(1); - if ($numberDouble.length >= 13) { - $numberDouble = this.value.toExponential(13).toUpperCase(); - } - } - else { - $numberDouble = this.value.toString(); - } - return { $numberDouble: $numberDouble }; + return { + $numberDouble: Number.isInteger(this.value) ? this.value.toFixed(1) : this.value.toString() + }; }; /** @internal */ Double.fromExtendedJSON = function (doc, options) { @@ -5040,12 +5104,12 @@ return (isObjectLike(value) && Reflect.has(value, '_bsontype') && typeof value._bsontype === 'string'); } // INT32 boundaries - var BSON_INT32_MAX$1 = 0x7fffffff; - var BSON_INT32_MIN$1 = -0x80000000; + var BSON_INT32_MAX = 0x7fffffff; + var BSON_INT32_MIN = -0x80000000; // INT64 boundaries // const BSON_INT64_MAX = 0x7fffffffffffffff; // TODO(NODE-4377): This number cannot be precisely represented in JS - var BSON_INT64_MAX$1 = 0x8000000000000000; - var BSON_INT64_MIN$1 = -0x8000000000000000; + var BSON_INT64_MAX = 0x8000000000000000; + var BSON_INT64_MIN = -0x8000000000000000; // all the types where we don't need to do any special processing and can just pass the EJSON //straight to type.fromExtendedJSON var keysToCodecs = { @@ -5073,9 +5137,9 @@ // if it's an integer, should interpret as smallest BSON integer // that can represent it exactly. (if out of range, interpret as double.) if (Math.floor(value) === value) { - if (value >= BSON_INT32_MIN$1 && value <= BSON_INT32_MAX$1) + if (value >= BSON_INT32_MIN && value <= BSON_INT32_MAX) return new Int32(value); - if (value >= BSON_INT64_MIN$1 && value <= BSON_INT64_MAX$1) + if (value >= BSON_INT64_MIN && value <= BSON_INT64_MAX) return Long.fromNumber(value); } // If the number is a non-integer or out of integer range, should interpret as BSON Double. @@ -5199,7 +5263,7 @@ if (typeof value === 'number' && (!options.relaxed || !isFinite(value))) { // it's an integer if (Math.floor(value) === value) { - var int32Range = value >= BSON_INT32_MIN$1 && value <= BSON_INT32_MAX$1, int64Range = value >= BSON_INT64_MIN$1 && value <= BSON_INT64_MAX$1; + var int32Range = value >= BSON_INT32_MIN && value <= BSON_INT32_MAX, int64Range = value >= BSON_INT64_MIN && value <= BSON_INT64_MAX; // interpret as being of the smallest BSON integer type that can represent the number exactly if (int32Range) return { $numberInt: value.toString() }; @@ -5524,85 +5588,6 @@ }()); } - /** @internal */ - var BSON_INT32_MAX = 0x7fffffff; - /** @internal */ - var BSON_INT32_MIN = -0x80000000; - /** @internal */ - var BSON_INT64_MAX = Math.pow(2, 63) - 1; - /** @internal */ - var BSON_INT64_MIN = -Math.pow(2, 63); - /** - * Any integer up to 2^53 can be precisely represented by a double. - * @internal - */ - var JS_INT_MAX = Math.pow(2, 53); - /** - * Any integer down to -2^53 can be precisely represented by a double. - * @internal - */ - var JS_INT_MIN = -Math.pow(2, 53); - /** Number BSON Type @internal */ - var BSON_DATA_NUMBER = 1; - /** String BSON Type @internal */ - var BSON_DATA_STRING = 2; - /** Object BSON Type @internal */ - var BSON_DATA_OBJECT = 3; - /** Array BSON Type @internal */ - var BSON_DATA_ARRAY = 4; - /** Binary BSON Type @internal */ - var BSON_DATA_BINARY = 5; - /** Binary BSON Type @internal */ - var BSON_DATA_UNDEFINED = 6; - /** ObjectId BSON Type @internal */ - var BSON_DATA_OID = 7; - /** Boolean BSON Type @internal */ - var BSON_DATA_BOOLEAN = 8; - /** Date BSON Type @internal */ - var BSON_DATA_DATE = 9; - /** null BSON Type @internal */ - var BSON_DATA_NULL = 10; - /** RegExp BSON Type @internal */ - var BSON_DATA_REGEXP = 11; - /** Code BSON Type @internal */ - var BSON_DATA_DBPOINTER = 12; - /** Code BSON Type @internal */ - var BSON_DATA_CODE = 13; - /** Symbol BSON Type @internal */ - var BSON_DATA_SYMBOL = 14; - /** Code with Scope BSON Type @internal */ - var BSON_DATA_CODE_W_SCOPE = 15; - /** 32 bit Integer BSON Type @internal */ - var BSON_DATA_INT = 16; - /** Timestamp BSON Type @internal */ - var BSON_DATA_TIMESTAMP = 17; - /** Long BSON Type @internal */ - var BSON_DATA_LONG = 18; - /** Decimal128 BSON Type @internal */ - var BSON_DATA_DECIMAL128 = 19; - /** MinKey BSON Type @internal */ - var BSON_DATA_MIN_KEY = 0xff; - /** MaxKey BSON Type @internal */ - var BSON_DATA_MAX_KEY = 0x7f; - /** Binary Default Type @internal */ - var BSON_BINARY_SUBTYPE_DEFAULT = 0; - /** Binary Function Type @internal */ - var BSON_BINARY_SUBTYPE_FUNCTION = 1; - /** Binary Byte Array Type @internal */ - var BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2; - /** Binary Deprecated UUID Type @deprecated Please use BSON_BINARY_SUBTYPE_UUID_NEW @internal */ - var BSON_BINARY_SUBTYPE_UUID = 3; - /** Binary UUID Type @internal */ - var BSON_BINARY_SUBTYPE_UUID_NEW = 4; - /** Binary MD5 Type @internal */ - var BSON_BINARY_SUBTYPE_MD5 = 5; - /** Encrypted BSON type @internal */ - var BSON_BINARY_SUBTYPE_ENCRYPTED = 6; - /** Column BSON type @internal */ - var BSON_BINARY_SUBTYPE_COLUMN = 7; - /** Binary User Defined Type @internal */ - var BSON_BINARY_SUBTYPE_USER_DEFINED = 128; - function calculateObjectSize$1(object, serializeFunctions, ignoreUndefined) { var totalLength = 4 + 1; if (Array.isArray(object)) { @@ -5640,7 +5625,7 @@ if (Math.floor(value) === value && value >= JS_INT_MIN && value <= JS_INT_MAX) { - if (value >= BSON_INT32_MIN && value <= BSON_INT32_MAX) { + if (value >= BSON_INT32_MIN$1 && value <= BSON_INT32_MAX$1) { // 32 bit return (name != null ? buffer_1.byteLength(name, 'utf8') + 1 : 0) + (4 + 1); } @@ -6142,6 +6127,9 @@ } else { value = new Binary(buffer.slice(index, index + binarySize), subType); + if (subType === BSON_BINARY_SUBTYPE_UUID_NEW) { + value = value.toUUID(); + } } } else { @@ -6167,8 +6155,11 @@ if (promoteBuffers && promoteValues) { value = _buffer; } + else if (subType === BSON_BINARY_SUBTYPE_UUID_NEW) { + value = new Binary(buffer.slice(index, index + binarySize), subType).toUUID(); + } else { - value = new Binary(_buffer, subType); + value = new Binary(buffer.slice(index, index + binarySize), subType); } } // Update the index @@ -6495,8 +6486,8 @@ // We have an integer value // TODO(NODE-2529): Add support for big int if (Number.isInteger(value) && - value >= BSON_INT32_MIN && - value <= BSON_INT32_MAX) { + value >= BSON_INT32_MIN$1 && + value <= BSON_INT32_MAX$1) { // If the value fits in 32 bits encode as int32 // Set int type 32 bits or less buffer[index++] = BSON_DATA_INT; @@ -7506,10 +7497,10 @@ exports.BSON_DATA_SYMBOL = BSON_DATA_SYMBOL; exports.BSON_DATA_TIMESTAMP = BSON_DATA_TIMESTAMP; exports.BSON_DATA_UNDEFINED = BSON_DATA_UNDEFINED; - exports.BSON_INT32_MAX = BSON_INT32_MAX; - exports.BSON_INT32_MIN = BSON_INT32_MIN; - exports.BSON_INT64_MAX = BSON_INT64_MAX; - exports.BSON_INT64_MIN = BSON_INT64_MIN; + exports.BSON_INT32_MAX = BSON_INT32_MAX$1; + exports.BSON_INT32_MIN = BSON_INT32_MIN$1; + exports.BSON_INT64_MAX = BSON_INT64_MAX$1; + exports.BSON_INT64_MIN = BSON_INT64_MIN$1; exports.Binary = Binary; exports.Code = Code; exports.DBRef = DBRef; diff --git a/food-ordering-app/server/node_modules/bson/dist/bson.browser.umd.js.map b/food-ordering-app/server/node_modules/bson/dist/bson.browser.umd.js.map index 0675d2810..ef7d7fe7a 100644 --- a/food-ordering-app/server/node_modules/bson/dist/bson.browser.umd.js.map +++ b/food-ordering-app/server/node_modules/bson/dist/bson.browser.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"bson.browser.umd.js","sources":["../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/buffer/index.js","../node_modules/tslib/tslib.es6.js","../src/error.ts","../src/utils/global.ts","../src/parser/utils.ts","../src/ensure_buffer.ts","../src/uuid_utils.ts","../src/uuid.ts","../src/binary.ts","../src/code.ts","../src/db_ref.ts","../src/long.ts","../src/decimal128.ts","../src/double.ts","../src/int_32.ts","../src/max_key.ts","../src/min_key.ts","../src/objectid.ts","../src/regexp.ts","../src/symbol.ts","../src/timestamp.ts","../src/extended_json.ts","../src/map.ts","../src/constants.ts","../src/parser/calculate_size.ts","../src/validate_utf8.ts","../src/parser/deserializer.ts","../src/parser/serializer.ts","../src/bson.ts"],"sourcesContent":["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","Uint8Array","Array","code","i","len","length","charCodeAt","getLens","b64","Error","validLen","indexOf","placeHoldersLen","lens","_byteLength","tmp","arr","curByte","tripletToBase64","num","encodeChunk","uint8","start","end","output","push","join","extraBytes","parts","maxChunkLength","len2","buffer","offset","isLE","mLen","nBytes","e","m","eLen","eMax","eBias","nBits","d","s","NaN","Infinity","Math","pow","value","c","rt","abs","isNaN","floor","log","LN2","customInspectSymbol","Symbol","exports","Buffer","SlowBuffer","K_MAX_LENGTH","TYPED_ARRAY_SUPPORT","typedArraySupport","console","error","proto","foo","Object","setPrototypeOf","prototype","defineProperty","enumerable","get","isBuffer","undefined","byteOffset","createBuffer","RangeError","buf","arg","encodingOrOffset","TypeError","allocUnsafe","from","poolSize","fromString","ArrayBuffer","isView","fromArrayView","isInstance","fromArrayBuffer","SharedArrayBuffer","valueOf","b","fromObject","toPrimitive","assertSize","size","alloc","fill","encoding","checked","allocUnsafeSlow","string","isEncoding","actual","write","slice","fromArrayLike","array","arrayView","copy","obj","numberIsNaN","type","isArray","data","toString","_isBuffer","compare","a","x","y","min","String","toLowerCase","concat","list","pos","set","call","mustMatch","arguments","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","swap16","swap32","swap64","apply","toLocaleString","equals","inspect","str","max","INSPECT_MAX_BYTES","replace","trim","target","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","val","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","j","includes","hexWrite","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","asciiToBytes","base64Write","ucs2Write","utf16leToBytes","isFinite","toJSON","_arr","base64","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","fromCharCode","ret","out","hexSliceLookupTable","bytes","newBuf","subarray","checkOffset","ext","readUintLE","readUIntLE","noAssert","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","ieee754","readFloatBE","readDoubleLE","readDoubleBE","checkInt","writeUintLE","writeUIntLE","maxBytes","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","checkIEEE754","writeFloat","littleEndian","writeFloatLE","writeFloatBE","writeDouble","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","INVALID_BASE64_RE","base64clean","split","units","leadSurrogate","byteArray","hi","lo","src","dst","constructor","name","alphabet","table","i16","extendStatics","__proto__","p","hasOwnProperty","__extends","__","create","__assign","assign","t","kId","BSON_INT32_MAX","BSON_INT32_MIN","BSON_INT64_MAX","BSON_INT64_MIN","EJSON","bsonMap","calculateObjectSize","constants.JS_INT_MIN","constants.JS_INT_MAX","constants.BSON_INT32_MIN","constants.BSON_INT32_MAX","deserialize","constants.BSON_DATA_STRING","constants.BSON_DATA_OID","constants.BSON_DATA_INT","constants.BSON_DATA_NUMBER","constants.BSON_DATA_DATE","constants.BSON_DATA_BOOLEAN","constants.BSON_DATA_OBJECT","constants.BSON_DATA_ARRAY","constants.BSON_DATA_UNDEFINED","constants.BSON_DATA_NULL","constants.BSON_DATA_LONG","constants.BSON_DATA_DECIMAL128","constants.BSON_DATA_BINARY","constants.BSON_DATA_REGEXP","constants.BSON_DATA_SYMBOL","constants.BSON_DATA_TIMESTAMP","constants.BSON_DATA_MIN_KEY","constants.BSON_DATA_MAX_KEY","constants.BSON_DATA_CODE","constants.BSON_DATA_CODE_W_SCOPE","constants.BSON_DATA_DBPOINTER","constants.BSON_BINARY_SUBTYPE_DEFAULT","Map","internalSerialize","internalDeserialize","internalCalculateObjectSize"],"mappings":"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EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,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"} \ No newline at end of file +{"version":3,"file":"bson.browser.umd.js","sources":["../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/buffer/index.js","../node_modules/tslib/tslib.es6.js","../src/error.ts","../src/utils/global.ts","../src/parser/utils.ts","../src/ensure_buffer.ts","../src/uuid_utils.ts","../src/constants.ts","../src/binary.ts","../src/code.ts","../src/db_ref.ts","../src/long.ts","../src/decimal128.ts","../src/double.ts","../src/int_32.ts","../src/max_key.ts","../src/min_key.ts","../src/objectid.ts","../src/regexp.ts","../src/symbol.ts","../src/timestamp.ts","../src/extended_json.ts","../src/map.ts","../src/parser/calculate_size.ts","../src/validate_utf8.ts","../src/parser/deserializer.ts","../src/parser/serializer.ts","../src/bson.ts"],"sourcesContent":["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","Uint8Array","Array","code","i","len","length","charCodeAt","getLens","b64","Error","validLen","indexOf","placeHoldersLen","lens","_byteLength","tmp","arr","curByte","tripletToBase64","num","encodeChunk","uint8","start","end","output","push","join","extraBytes","parts","maxChunkLength","len2","buffer","offset","isLE","mLen","nBytes","e","m","eLen","eMax","eBias","nBits","d","s","NaN","Infinity","Math","pow","value","c","rt","abs","isNaN","floor","log","LN2","customInspectSymbol","Symbol","exports","Buffer","SlowBuffer","K_MAX_LENGTH","TYPED_ARRAY_SUPPORT","typedArraySupport","console","error","proto","foo","Object","setPrototypeOf","prototype","defineProperty","enumerable","get","isBuffer","undefined","byteOffset","createBuffer","RangeError","buf","arg","encodingOrOffset","TypeError","allocUnsafe","from","poolSize","fromString","ArrayBuffer","isView","fromArrayView","isInstance","fromArrayBuffer","SharedArrayBuffer","valueOf","b","fromObject","toPrimitive","assertSize","size","alloc","fill","encoding","checked","allocUnsafeSlow","string","isEncoding","actual","write","slice","fromArrayLike","array","arrayView","copy","obj","numberIsNaN","type","isArray","data","toString","_isBuffer","compare","a","x","y","min","String","toLowerCase","concat","list","pos","set","call","mustMatch","arguments","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","swap16","swap32","swap64","apply","toLocaleString","equals","inspect","str","max","INSPECT_MAX_BYTES","replace","trim","target","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","val","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","j","includes","hexWrite","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","asciiToBytes","base64Write","ucs2Write","utf16leToBytes","isFinite","toJSON","_arr","base64","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","fromCharCode","ret","out","hexSliceLookupTable","bytes","newBuf","subarray","checkOffset","ext","readUintLE","readUIntLE","noAssert","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","ieee754","readFloatBE","readDoubleLE","readDoubleBE","checkInt","writeUintLE","writeUIntLE","maxBytes","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","checkIEEE754","writeFloat","littleEndian","writeFloatLE","writeFloatBE","writeDouble","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","INVALID_BASE64_RE","base64clean","split","units","leadSurrogate","byteArray","hi","lo","src","dst","constructor","name","alphabet","table","i16","extendStatics","__proto__","p","hasOwnProperty","__extends","__","create","__assign","assign","t","BSON_INT32_MAX","BSON_INT32_MIN","BSON_INT64_MAX","BSON_INT64_MIN","EJSON","bsonMap","calculateObjectSize","constants.JS_INT_MIN","constants.JS_INT_MAX","constants.BSON_INT32_MIN","constants.BSON_INT32_MAX","deserialize","constants.BSON_DATA_STRING","constants.BSON_DATA_OID","constants.BSON_DATA_INT","constants.BSON_DATA_NUMBER","constants.BSON_DATA_DATE","constants.BSON_DATA_BOOLEAN","constants.BSON_DATA_OBJECT","constants.BSON_DATA_ARRAY","constants.BSON_DATA_UNDEFINED","constants.BSON_DATA_NULL","constants.BSON_DATA_LONG","constants.BSON_DATA_DECIMAL128","constants.BSON_DATA_BINARY","constants.BSON_BINARY_SUBTYPE_UUID_NEW","constants.BSON_DATA_REGEXP","constants.BSON_DATA_SYMBOL","constants.BSON_DATA_TIMESTAMP","constants.BSON_DATA_MIN_KEY","constants.BSON_DATA_MAX_KEY","constants.BSON_DATA_CODE","constants.BSON_DATA_CODE_W_SCOPE","constants.BSON_DATA_DBPOINTER","constants.BSON_BINARY_SUBTYPE_DEFAULT","Map","internalSerialize","internalDeserialize","internalCalculateObjectSize"],"mappings":"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AAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,E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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/bson/dist/bson.bundle.js b/food-ordering-app/server/node_modules/bson/dist/bson.bundle.js index 5bc2af8a7..63089c410 100644 --- a/food-ordering-app/server/node_modules/bson/dist/bson.bundle.js +++ b/food-ordering-app/server/node_modules/bson/dist/bson.bundle.js @@ -2268,174 +2268,84 @@ var BSON = (function (exports) { : buffer.toString('hex'); }; - var BYTE_LENGTH = 16; - var kId$1 = Symbol('id'); + /** @internal */ + var BSON_INT32_MAX$1 = 0x7fffffff; + /** @internal */ + var BSON_INT32_MIN$1 = -0x80000000; + /** @internal */ + var BSON_INT64_MAX$1 = Math.pow(2, 63) - 1; + /** @internal */ + var BSON_INT64_MIN$1 = -Math.pow(2, 63); /** - * A class representation of the BSON UUID type. - * @public + * Any integer up to 2^53 can be precisely represented by a double. + * @internal */ - var UUID = /** @class */ (function () { - /** - * Create an UUID type - * - * @param input - Can be a 32 or 36 character hex string (dashes excluded/included) or a 16 byte binary Buffer. - */ - function UUID(input) { - if (typeof input === 'undefined') { - // The most common use case (blank id, new UUID() instance) - this.id = UUID.generate(); - } - else if (input instanceof UUID) { - this[kId$1] = buffer_1.from(input.id); - this.__id = input.__id; - } - else if (ArrayBuffer.isView(input) && input.byteLength === BYTE_LENGTH) { - this.id = ensureBuffer(input); - } - else if (typeof input === 'string') { - this.id = uuidHexStringToBuffer(input); - } - else { - throw new BSONTypeError('Argument passed in UUID constructor must be a UUID, a 16 byte Buffer or a 32/36 character hex string (dashes excluded/included, format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).'); - } - } - Object.defineProperty(UUID.prototype, "id", { - /** - * The UUID bytes - * @readonly - */ - get: function () { - return this[kId$1]; - }, - set: function (value) { - this[kId$1] = value; - if (UUID.cacheHexString) { - this.__id = bufferToUuidHexString(value); - } - }, - enumerable: false, - configurable: true - }); - /** - * Generate a 16 byte uuid v4 buffer used in UUIDs - */ - /** - * Returns the UUID id as a 32 or 36 character hex string representation, excluding/including dashes (defaults to 36 character dash separated) - * @param includeDashes - should the string exclude dash-separators. - * */ - UUID.prototype.toHexString = function (includeDashes) { - if (includeDashes === void 0) { includeDashes = true; } - if (UUID.cacheHexString && this.__id) { - return this.__id; - } - var uuidHexString = bufferToUuidHexString(this.id, includeDashes); - if (UUID.cacheHexString) { - this.__id = uuidHexString; - } - return uuidHexString; - }; - /** - * Converts the id into a 36 character (dashes included) hex string, unless a encoding is specified. - */ - UUID.prototype.toString = function (encoding) { - return encoding ? this.id.toString(encoding) : this.toHexString(); - }; - /** - * Converts the id into its JSON string representation. - * A 36 character (dashes included) hex string in the format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx - */ - UUID.prototype.toJSON = function () { - return this.toHexString(); - }; - /** - * Compares the equality of this UUID with `otherID`. - * - * @param otherId - UUID instance to compare against. - */ - UUID.prototype.equals = function (otherId) { - if (!otherId) { - return false; - } - if (otherId instanceof UUID) { - return otherId.id.equals(this.id); - } - try { - return new UUID(otherId).id.equals(this.id); - } - catch (_a) { - return false; - } - }; - /** - * Creates a Binary instance from the current UUID. - */ - UUID.prototype.toBinary = function () { - return new Binary(this.id, Binary.SUBTYPE_UUID); - }; - /** - * Generates a populated buffer containing a v4 uuid - */ - UUID.generate = function () { - var bytes = randomBytes(BYTE_LENGTH); - // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - // Kindly borrowed from https://github.com/uuidjs/uuid/blob/master/src/v4.js - bytes[6] = (bytes[6] & 0x0f) | 0x40; - bytes[8] = (bytes[8] & 0x3f) | 0x80; - return buffer_1.from(bytes); - }; - /** - * Checks if a value is a valid bson UUID - * @param input - UUID, string or Buffer to validate. - */ - UUID.isValid = function (input) { - if (!input) { - return false; - } - if (input instanceof UUID) { - return true; - } - if (typeof input === 'string') { - return uuidValidateString(input); - } - if (isUint8Array(input)) { - // check for length & uuid version (https://tools.ietf.org/html/rfc4122#section-4.1.3) - if (input.length !== BYTE_LENGTH) { - return false; - } - try { - // get this byte as hex: xxxxxxxx-xxxx-XXxx-xxxx-xxxxxxxxxxxx - // check first part as uuid version: xxxxxxxx-xxxx-Xxxx-xxxx-xxxxxxxxxxxx - return parseInt(input[6].toString(16)[0], 10) === Binary.SUBTYPE_UUID; - } - catch (_a) { - return false; - } - } - return false; - }; - /** - * Creates an UUID from a hex string representation of an UUID. - * @param hexString - 32 or 36 character hex string (dashes excluded/included). - */ - UUID.createFromHexString = function (hexString) { - var buffer = uuidHexStringToBuffer(hexString); - return new UUID(buffer); - }; - /** - * Converts to a string representation of this Id. - * - * @returns return the 36 character hex string representation. - * @internal - */ - UUID.prototype[Symbol.for('nodejs.util.inspect.custom')] = function () { - return this.inspect(); - }; - UUID.prototype.inspect = function () { - return "new UUID(\"".concat(this.toHexString(), "\")"); - }; - return UUID; - }()); - Object.defineProperty(UUID.prototype, '_bsontype', { value: 'UUID' }); + var JS_INT_MAX = Math.pow(2, 53); + /** + * Any integer down to -2^53 can be precisely represented by a double. + * @internal + */ + var JS_INT_MIN = -Math.pow(2, 53); + /** Number BSON Type @internal */ + var BSON_DATA_NUMBER = 1; + /** String BSON Type @internal */ + var BSON_DATA_STRING = 2; + /** Object BSON Type @internal */ + var BSON_DATA_OBJECT = 3; + /** Array BSON Type @internal */ + var BSON_DATA_ARRAY = 4; + /** Binary BSON Type @internal */ + var BSON_DATA_BINARY = 5; + /** Binary BSON Type @internal */ + var BSON_DATA_UNDEFINED = 6; + /** ObjectId BSON Type @internal */ + var BSON_DATA_OID = 7; + /** Boolean BSON Type @internal */ + var BSON_DATA_BOOLEAN = 8; + /** Date BSON Type @internal */ + var BSON_DATA_DATE = 9; + /** null BSON Type @internal */ + var BSON_DATA_NULL = 10; + /** RegExp BSON Type @internal */ + var BSON_DATA_REGEXP = 11; + /** Code BSON Type @internal */ + var BSON_DATA_DBPOINTER = 12; + /** Code BSON Type @internal */ + var BSON_DATA_CODE = 13; + /** Symbol BSON Type @internal */ + var BSON_DATA_SYMBOL = 14; + /** Code with Scope BSON Type @internal */ + var BSON_DATA_CODE_W_SCOPE = 15; + /** 32 bit Integer BSON Type @internal */ + var BSON_DATA_INT = 16; + /** Timestamp BSON Type @internal */ + var BSON_DATA_TIMESTAMP = 17; + /** Long BSON Type @internal */ + var BSON_DATA_LONG = 18; + /** Decimal128 BSON Type @internal */ + var BSON_DATA_DECIMAL128 = 19; + /** MinKey BSON Type @internal */ + var BSON_DATA_MIN_KEY = 0xff; + /** MaxKey BSON Type @internal */ + var BSON_DATA_MAX_KEY = 0x7f; + /** Binary Default Type @internal */ + var BSON_BINARY_SUBTYPE_DEFAULT = 0; + /** Binary Function Type @internal */ + var BSON_BINARY_SUBTYPE_FUNCTION = 1; + /** Binary Byte Array Type @internal */ + var BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2; + /** Binary Deprecated UUID Type @deprecated Please use BSON_BINARY_SUBTYPE_UUID_NEW @internal */ + var BSON_BINARY_SUBTYPE_UUID = 3; + /** Binary UUID Type @internal */ + var BSON_BINARY_SUBTYPE_UUID_NEW = 4; + /** Binary MD5 Type @internal */ + var BSON_BINARY_SUBTYPE_MD5 = 5; + /** Encrypted BSON type @internal */ + var BSON_BINARY_SUBTYPE_ENCRYPTED = 6; + /** Column BSON type @internal */ + var BSON_BINARY_SUBTYPE_COLUMN = 7; + /** Binary User Defined Type @internal */ + var BSON_BINARY_SUBTYPE_USER_DEFINED = 128; /** * A class representation of the BSON Binary type. @@ -2636,7 +2546,7 @@ var BSON = (function (exports) { if (!data) { throw new BSONTypeError("Unexpected Binary Extended JSON format ".concat(JSON.stringify(doc))); } - return new Binary(data, type); + return type === BSON_BINARY_SUBTYPE_UUID_NEW ? new UUID(data) : new Binary(data, type); }; /** @internal */ Binary.prototype[Symbol.for('nodejs.util.inspect.custom')] = function () { @@ -2674,6 +2584,168 @@ var BSON = (function (exports) { return Binary; }()); Object.defineProperty(Binary.prototype, '_bsontype', { value: 'Binary' }); + var UUID_BYTE_LENGTH = 16; + /** + * A class representation of the BSON UUID type. + * @public + */ + var UUID = /** @class */ (function (_super) { + __extends(UUID, _super); + /** + * Create an UUID type + * + * @param input - Can be a 32 or 36 character hex string (dashes excluded/included) or a 16 byte binary Buffer. + */ + function UUID(input) { + var _this = this; + var bytes; + var hexStr; + if (input == null) { + bytes = UUID.generate(); + } + else if (input instanceof UUID) { + bytes = buffer_1.from(input.buffer); + hexStr = input.__id; + } + else if (ArrayBuffer.isView(input) && input.byteLength === UUID_BYTE_LENGTH) { + bytes = ensureBuffer(input); + } + else if (typeof input === 'string') { + bytes = uuidHexStringToBuffer(input); + } + else { + throw new BSONTypeError('Argument passed in UUID constructor must be a UUID, a 16 byte Buffer or a 32/36 character hex string (dashes excluded/included, format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).'); + } + _this = _super.call(this, bytes, BSON_BINARY_SUBTYPE_UUID_NEW) || this; + _this.__id = hexStr; + return _this; + } + Object.defineProperty(UUID.prototype, "id", { + /** + * The UUID bytes + * @readonly + */ + get: function () { + return this.buffer; + }, + set: function (value) { + this.buffer = value; + if (UUID.cacheHexString) { + this.__id = bufferToUuidHexString(value); + } + }, + enumerable: false, + configurable: true + }); + /** + * Returns the UUID id as a 32 or 36 character hex string representation, excluding/including dashes (defaults to 36 character dash separated) + * @param includeDashes - should the string exclude dash-separators. + * */ + UUID.prototype.toHexString = function (includeDashes) { + if (includeDashes === void 0) { includeDashes = true; } + if (UUID.cacheHexString && this.__id) { + return this.__id; + } + var uuidHexString = bufferToUuidHexString(this.id, includeDashes); + if (UUID.cacheHexString) { + this.__id = uuidHexString; + } + return uuidHexString; + }; + /** + * Converts the id into a 36 character (dashes included) hex string, unless a encoding is specified. + */ + UUID.prototype.toString = function (encoding) { + return encoding ? this.id.toString(encoding) : this.toHexString(); + }; + /** + * Converts the id into its JSON string representation. + * A 36 character (dashes included) hex string in the format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + */ + UUID.prototype.toJSON = function () { + return this.toHexString(); + }; + /** + * Compares the equality of this UUID with `otherID`. + * + * @param otherId - UUID instance to compare against. + */ + UUID.prototype.equals = function (otherId) { + if (!otherId) { + return false; + } + if (otherId instanceof UUID) { + return otherId.id.equals(this.id); + } + try { + return new UUID(otherId).id.equals(this.id); + } + catch (_a) { + return false; + } + }; + /** + * Creates a Binary instance from the current UUID. + */ + UUID.prototype.toBinary = function () { + return new Binary(this.id, Binary.SUBTYPE_UUID); + }; + /** + * Generates a populated buffer containing a v4 uuid + */ + UUID.generate = function () { + var bytes = randomBytes(UUID_BYTE_LENGTH); + // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` + // Kindly borrowed from https://github.com/uuidjs/uuid/blob/master/src/v4.js + bytes[6] = (bytes[6] & 0x0f) | 0x40; + bytes[8] = (bytes[8] & 0x3f) | 0x80; + return buffer_1.from(bytes); + }; + /** + * Checks if a value is a valid bson UUID + * @param input - UUID, string or Buffer to validate. + */ + UUID.isValid = function (input) { + if (!input) { + return false; + } + if (input instanceof UUID) { + return true; + } + if (typeof input === 'string') { + return uuidValidateString(input); + } + if (isUint8Array(input)) { + // check for length & uuid version (https://tools.ietf.org/html/rfc4122#section-4.1.3) + if (input.length !== UUID_BYTE_LENGTH) { + return false; + } + return (input[6] & 0xf0) === 0x40 && (input[8] & 0x80) === 0x80; + } + return false; + }; + /** + * Creates an UUID from a hex string representation of an UUID. + * @param hexString - 32 or 36 character hex string (dashes excluded/included). + */ + UUID.createFromHexString = function (hexString) { + var buffer = uuidHexStringToBuffer(hexString); + return new UUID(buffer); + }; + /** + * Converts to a string representation of this Id. + * + * @returns return the 36 character hex string representation. + * @internal + */ + UUID.prototype[Symbol.for('nodejs.util.inspect.custom')] = function () { + return this.inspect(); + }; + UUID.prototype.inspect = function () { + return "new UUID(\"".concat(this.toHexString(), "\")"); + }; + return UUID; + }(Binary)); /** * A class representation of the BSON Code type. @@ -4402,22 +4474,14 @@ var BSON = (function (exports) { if (options && (options.legacy || (options.relaxed && isFinite(this.value)))) { return this.value; } - // NOTE: JavaScript has +0 and -0, apparently to model limit calculations. If a user - // explicitly provided `-0` then we need to ensure the sign makes it into the output if (Object.is(Math.sign(this.value), -0)) { + // NOTE: JavaScript has +0 and -0, apparently to model limit calculations. If a user + // explicitly provided `-0` then we need to ensure the sign makes it into the output return { $numberDouble: "-".concat(this.value.toFixed(1)) }; } - var $numberDouble; - if (Number.isInteger(this.value)) { - $numberDouble = this.value.toFixed(1); - if ($numberDouble.length >= 13) { - $numberDouble = this.value.toExponential(13).toUpperCase(); - } - } - else { - $numberDouble = this.value.toString(); - } - return { $numberDouble: $numberDouble }; + return { + $numberDouble: Number.isInteger(this.value) ? this.value.toFixed(1) : this.value.toString() + }; }; /** @internal */ Double.fromExtendedJSON = function (doc, options) { @@ -5037,12 +5101,12 @@ var BSON = (function (exports) { return (isObjectLike(value) && Reflect.has(value, '_bsontype') && typeof value._bsontype === 'string'); } // INT32 boundaries - var BSON_INT32_MAX$1 = 0x7fffffff; - var BSON_INT32_MIN$1 = -0x80000000; + var BSON_INT32_MAX = 0x7fffffff; + var BSON_INT32_MIN = -0x80000000; // INT64 boundaries // const BSON_INT64_MAX = 0x7fffffffffffffff; // TODO(NODE-4377): This number cannot be precisely represented in JS - var BSON_INT64_MAX$1 = 0x8000000000000000; - var BSON_INT64_MIN$1 = -0x8000000000000000; + var BSON_INT64_MAX = 0x8000000000000000; + var BSON_INT64_MIN = -0x8000000000000000; // all the types where we don't need to do any special processing and can just pass the EJSON //straight to type.fromExtendedJSON var keysToCodecs = { @@ -5070,9 +5134,9 @@ var BSON = (function (exports) { // if it's an integer, should interpret as smallest BSON integer // that can represent it exactly. (if out of range, interpret as double.) if (Math.floor(value) === value) { - if (value >= BSON_INT32_MIN$1 && value <= BSON_INT32_MAX$1) + if (value >= BSON_INT32_MIN && value <= BSON_INT32_MAX) return new Int32(value); - if (value >= BSON_INT64_MIN$1 && value <= BSON_INT64_MAX$1) + if (value >= BSON_INT64_MIN && value <= BSON_INT64_MAX) return Long.fromNumber(value); } // If the number is a non-integer or out of integer range, should interpret as BSON Double. @@ -5196,7 +5260,7 @@ var BSON = (function (exports) { if (typeof value === 'number' && (!options.relaxed || !isFinite(value))) { // it's an integer if (Math.floor(value) === value) { - var int32Range = value >= BSON_INT32_MIN$1 && value <= BSON_INT32_MAX$1, int64Range = value >= BSON_INT64_MIN$1 && value <= BSON_INT64_MAX$1; + var int32Range = value >= BSON_INT32_MIN && value <= BSON_INT32_MAX, int64Range = value >= BSON_INT64_MIN && value <= BSON_INT64_MAX; // interpret as being of the smallest BSON integer type that can represent the number exactly if (int32Range) return { $numberInt: value.toString() }; @@ -5521,85 +5585,6 @@ var BSON = (function (exports) { }()); } - /** @internal */ - var BSON_INT32_MAX = 0x7fffffff; - /** @internal */ - var BSON_INT32_MIN = -0x80000000; - /** @internal */ - var BSON_INT64_MAX = Math.pow(2, 63) - 1; - /** @internal */ - var BSON_INT64_MIN = -Math.pow(2, 63); - /** - * Any integer up to 2^53 can be precisely represented by a double. - * @internal - */ - var JS_INT_MAX = Math.pow(2, 53); - /** - * Any integer down to -2^53 can be precisely represented by a double. - * @internal - */ - var JS_INT_MIN = -Math.pow(2, 53); - /** Number BSON Type @internal */ - var BSON_DATA_NUMBER = 1; - /** String BSON Type @internal */ - var BSON_DATA_STRING = 2; - /** Object BSON Type @internal */ - var BSON_DATA_OBJECT = 3; - /** Array BSON Type @internal */ - var BSON_DATA_ARRAY = 4; - /** Binary BSON Type @internal */ - var BSON_DATA_BINARY = 5; - /** Binary BSON Type @internal */ - var BSON_DATA_UNDEFINED = 6; - /** ObjectId BSON Type @internal */ - var BSON_DATA_OID = 7; - /** Boolean BSON Type @internal */ - var BSON_DATA_BOOLEAN = 8; - /** Date BSON Type @internal */ - var BSON_DATA_DATE = 9; - /** null BSON Type @internal */ - var BSON_DATA_NULL = 10; - /** RegExp BSON Type @internal */ - var BSON_DATA_REGEXP = 11; - /** Code BSON Type @internal */ - var BSON_DATA_DBPOINTER = 12; - /** Code BSON Type @internal */ - var BSON_DATA_CODE = 13; - /** Symbol BSON Type @internal */ - var BSON_DATA_SYMBOL = 14; - /** Code with Scope BSON Type @internal */ - var BSON_DATA_CODE_W_SCOPE = 15; - /** 32 bit Integer BSON Type @internal */ - var BSON_DATA_INT = 16; - /** Timestamp BSON Type @internal */ - var BSON_DATA_TIMESTAMP = 17; - /** Long BSON Type @internal */ - var BSON_DATA_LONG = 18; - /** Decimal128 BSON Type @internal */ - var BSON_DATA_DECIMAL128 = 19; - /** MinKey BSON Type @internal */ - var BSON_DATA_MIN_KEY = 0xff; - /** MaxKey BSON Type @internal */ - var BSON_DATA_MAX_KEY = 0x7f; - /** Binary Default Type @internal */ - var BSON_BINARY_SUBTYPE_DEFAULT = 0; - /** Binary Function Type @internal */ - var BSON_BINARY_SUBTYPE_FUNCTION = 1; - /** Binary Byte Array Type @internal */ - var BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2; - /** Binary Deprecated UUID Type @deprecated Please use BSON_BINARY_SUBTYPE_UUID_NEW @internal */ - var BSON_BINARY_SUBTYPE_UUID = 3; - /** Binary UUID Type @internal */ - var BSON_BINARY_SUBTYPE_UUID_NEW = 4; - /** Binary MD5 Type @internal */ - var BSON_BINARY_SUBTYPE_MD5 = 5; - /** Encrypted BSON type @internal */ - var BSON_BINARY_SUBTYPE_ENCRYPTED = 6; - /** Column BSON type @internal */ - var BSON_BINARY_SUBTYPE_COLUMN = 7; - /** Binary User Defined Type @internal */ - var BSON_BINARY_SUBTYPE_USER_DEFINED = 128; - function calculateObjectSize$1(object, serializeFunctions, ignoreUndefined) { var totalLength = 4 + 1; if (Array.isArray(object)) { @@ -5637,7 +5622,7 @@ var BSON = (function (exports) { if (Math.floor(value) === value && value >= JS_INT_MIN && value <= JS_INT_MAX) { - if (value >= BSON_INT32_MIN && value <= BSON_INT32_MAX) { + if (value >= BSON_INT32_MIN$1 && value <= BSON_INT32_MAX$1) { // 32 bit return (name != null ? buffer_1.byteLength(name, 'utf8') + 1 : 0) + (4 + 1); } @@ -6139,6 +6124,9 @@ var BSON = (function (exports) { } else { value = new Binary(buffer.slice(index, index + binarySize), subType); + if (subType === BSON_BINARY_SUBTYPE_UUID_NEW) { + value = value.toUUID(); + } } } else { @@ -6164,8 +6152,11 @@ var BSON = (function (exports) { if (promoteBuffers && promoteValues) { value = _buffer; } + else if (subType === BSON_BINARY_SUBTYPE_UUID_NEW) { + value = new Binary(buffer.slice(index, index + binarySize), subType).toUUID(); + } else { - value = new Binary(_buffer, subType); + value = new Binary(buffer.slice(index, index + binarySize), subType); } } // Update the index @@ -6492,8 +6483,8 @@ var BSON = (function (exports) { // We have an integer value // TODO(NODE-2529): Add support for big int if (Number.isInteger(value) && - value >= BSON_INT32_MIN && - value <= BSON_INT32_MAX) { + value >= BSON_INT32_MIN$1 && + value <= BSON_INT32_MAX$1) { // If the value fits in 32 bits encode as int32 // Set int type 32 bits or less buffer[index++] = BSON_DATA_INT; @@ -7503,10 +7494,10 @@ var BSON = (function (exports) { exports.BSON_DATA_SYMBOL = BSON_DATA_SYMBOL; exports.BSON_DATA_TIMESTAMP = BSON_DATA_TIMESTAMP; exports.BSON_DATA_UNDEFINED = BSON_DATA_UNDEFINED; - exports.BSON_INT32_MAX = BSON_INT32_MAX; - exports.BSON_INT32_MIN = BSON_INT32_MIN; - exports.BSON_INT64_MAX = BSON_INT64_MAX; - exports.BSON_INT64_MIN = BSON_INT64_MIN; + exports.BSON_INT32_MAX = BSON_INT32_MAX$1; + exports.BSON_INT32_MIN = BSON_INT32_MIN$1; + exports.BSON_INT64_MAX = BSON_INT64_MAX$1; + exports.BSON_INT64_MIN = BSON_INT64_MIN$1; exports.Binary = Binary; exports.Code = Code; exports.DBRef = DBRef; diff --git a/food-ordering-app/server/node_modules/bson/dist/bson.bundle.js.map b/food-ordering-app/server/node_modules/bson/dist/bson.bundle.js.map index fae3af34c..d15d7a4fa 100644 --- a/food-ordering-app/server/node_modules/bson/dist/bson.bundle.js.map +++ b/food-ordering-app/server/node_modules/bson/dist/bson.bundle.js.map @@ -1 +1 @@ -{"version":3,"file":"bson.bundle.js","sources":["../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/buffer/index.js","../node_modules/tslib/tslib.es6.js","../src/error.ts","../src/utils/global.ts","../src/parser/utils.ts","../src/ensure_buffer.ts","../src/uuid_utils.ts","../src/uuid.ts","../src/binary.ts","../src/code.ts","../src/db_ref.ts","../src/long.ts","../src/decimal128.ts","../src/double.ts","../src/int_32.ts","../src/max_key.ts","../src/min_key.ts","../src/objectid.ts","../src/regexp.ts","../src/symbol.ts","../src/timestamp.ts","../src/extended_json.ts","../src/map.ts","../src/constants.ts","../src/parser/calculate_size.ts","../src/validate_utf8.ts","../src/parser/deserializer.ts","../src/parser/serializer.ts","../src/bson.ts"],"sourcesContent":["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","Uint8Array","Array","code","i","len","length","charCodeAt","getLens","b64","Error","validLen","indexOf","placeHoldersLen","lens","_byteLength","tmp","arr","curByte","tripletToBase64","num","encodeChunk","uint8","start","end","output","push","join","extraBytes","parts","maxChunkLength","len2","buffer","offset","isLE","mLen","nBytes","e","m","eLen","eMax","eBias","nBits","d","s","NaN","Infinity","Math","pow","value","c","rt","abs","isNaN","floor","log","LN2","customInspectSymbol","Symbol","exports","Buffer","SlowBuffer","K_MAX_LENGTH","TYPED_ARRAY_SUPPORT","typedArraySupport","console","error","proto","foo","Object","setPrototypeOf","prototype","defineProperty","enumerable","get","isBuffer","undefined","byteOffset","createBuffer","RangeError","buf","arg","encodingOrOffset","TypeError","allocUnsafe","from","poolSize","fromString","ArrayBuffer","isView","fromArrayView","isInstance","fromArrayBuffer","SharedArrayBuffer","valueOf","b","fromObject","toPrimitive","assertSize","size","alloc","fill","encoding","checked","allocUnsafeSlow","string","isEncoding","actual","write","slice","fromArrayLike","array","arrayView","copy","obj","numberIsNaN","type","isArray","data","toString","_isBuffer","compare","a","x","y","min","String","toLowerCase","concat","list","pos","set","call","mustMatch","arguments","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","swap16","swap32","swap64","apply","toLocaleString","equals","inspect","str","max","INSPECT_MAX_BYTES","replace","trim","target","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","val","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","j","includes","hexWrite","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","asciiToBytes","base64Write","ucs2Write","utf16leToBytes","isFinite","toJSON","_arr","base64","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","fromCharCode","ret","out","hexSliceLookupTable","bytes","newBuf","subarray","checkOffset","ext","readUintLE","readUIntLE","noAssert","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","ieee754","readFloatBE","readDoubleLE","readDoubleBE","checkInt","writeUintLE","writeUIntLE","maxBytes","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","checkIEEE754","writeFloat","littleEndian","writeFloatLE","writeFloatBE","writeDouble","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","INVALID_BASE64_RE","base64clean","split","units","leadSurrogate","byteArray","hi","lo","src","dst","constructor","name","alphabet","table","i16","extendStatics","__proto__","p","hasOwnProperty","__extends","__","create","__assign","assign","t","kId","BSON_INT32_MAX","BSON_INT32_MIN","BSON_INT64_MAX","BSON_INT64_MIN","EJSON","bsonMap","calculateObjectSize","constants.JS_INT_MIN","constants.JS_INT_MAX","constants.BSON_INT32_MIN","constants.BSON_INT32_MAX","deserialize","constants.BSON_DATA_STRING","constants.BSON_DATA_OID","constants.BSON_DATA_INT","constants.BSON_DATA_NUMBER","constants.BSON_DATA_DATE","constants.BSON_DATA_BOOLEAN","constants.BSON_DATA_OBJECT","constants.BSON_DATA_ARRAY","constants.BSON_DATA_UNDEFINED","constants.BSON_DATA_NULL","constants.BSON_DATA_LONG","constants.BSON_DATA_DECIMAL128","constants.BSON_DATA_BINARY","constants.BSON_DATA_REGEXP","constants.BSON_DATA_SYMBOL","constants.BSON_DATA_TIMESTAMP","constants.BSON_DATA_MIN_KEY","constants.BSON_DATA_MAX_KEY","constants.BSON_DATA_CODE","constants.BSON_DATA_CODE_W_SCOPE","constants.BSON_DATA_DBPOINTER","constants.BSON_BINARY_SUBTYPE_DEFAULT","Map","internalSerialize","internalDeserialize","internalCalculateObjectSize"],"mappings":"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E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAA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"} \ No newline at end of file +{"version":3,"file":"bson.bundle.js","sources":["../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/buffer/index.js","../node_modules/tslib/tslib.es6.js","../src/error.ts","../src/utils/global.ts","../src/parser/utils.ts","../src/ensure_buffer.ts","../src/uuid_utils.ts","../src/constants.ts","../src/binary.ts","../src/code.ts","../src/db_ref.ts","../src/long.ts","../src/decimal128.ts","../src/double.ts","../src/int_32.ts","../src/max_key.ts","../src/min_key.ts","../src/objectid.ts","../src/regexp.ts","../src/symbol.ts","../src/timestamp.ts","../src/extended_json.ts","../src/map.ts","../src/parser/calculate_size.ts","../src/validate_utf8.ts","../src/parser/deserializer.ts","../src/parser/serializer.ts","../src/bson.ts"],"sourcesContent":["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","Uint8Array","Array","code","i","len","length","charCodeAt","getLens","b64","Error","validLen","indexOf","placeHoldersLen","lens","_byteLength","tmp","arr","curByte","tripletToBase64","num","encodeChunk","uint8","start","end","output","push","join","extraBytes","parts","maxChunkLength","len2","buffer","offset","isLE","mLen","nBytes","e","m","eLen","eMax","eBias","nBits","d","s","NaN","Infinity","Math","pow","value","c","rt","abs","isNaN","floor","log","LN2","customInspectSymbol","Symbol","exports","Buffer","SlowBuffer","K_MAX_LENGTH","TYPED_ARRAY_SUPPORT","typedArraySupport","console","error","proto","foo","Object","setPrototypeOf","prototype","defineProperty","enumerable","get","isBuffer","undefined","byteOffset","createBuffer","RangeError","buf","arg","encodingOrOffset","TypeError","allocUnsafe","from","poolSize","fromString","ArrayBuffer","isView","fromArrayView","isInstance","fromArrayBuffer","SharedArrayBuffer","valueOf","b","fromObject","toPrimitive","assertSize","size","alloc","fill","encoding","checked","allocUnsafeSlow","string","isEncoding","actual","write","slice","fromArrayLike","array","arrayView","copy","obj","numberIsNaN","type","isArray","data","toString","_isBuffer","compare","a","x","y","min","String","toLowerCase","concat","list","pos","set","call","mustMatch","arguments","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","swap16","swap32","swap64","apply","toLocaleString","equals","inspect","str","max","INSPECT_MAX_BYTES","replace","trim","target","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","val","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","j","includes","hexWrite","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","asciiToBytes","base64Write","ucs2Write","utf16leToBytes","isFinite","toJSON","_arr","base64","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","fromCharCode","ret","out","hexSliceLookupTable","bytes","newBuf","subarray","checkOffset","ext","readUintLE","readUIntLE","noAssert","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","ieee754","readFloatBE","readDoubleLE","readDoubleBE","checkInt","writeUintLE","writeUIntLE","maxBytes","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","checkIEEE754","writeFloat","littleEndian","writeFloatLE","writeFloatBE","writeDouble","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","INVALID_BASE64_RE","base64clean","split","units","leadSurrogate","byteArray","hi","lo","src","dst","constructor","name","alphabet","table","i16","extendStatics","__proto__","p","hasOwnProperty","__extends","__","create","__assign","assign","t","BSON_INT32_MAX","BSON_INT32_MIN","BSON_INT64_MAX","BSON_INT64_MIN","EJSON","bsonMap","calculateObjectSize","constants.JS_INT_MIN","constants.JS_INT_MAX","constants.BSON_INT32_MIN","constants.BSON_INT32_MAX","deserialize","constants.BSON_DATA_STRING","constants.BSON_DATA_OID","constants.BSON_DATA_INT","constants.BSON_DATA_NUMBER","constants.BSON_DATA_DATE","constants.BSON_DATA_BOOLEAN","constants.BSON_DATA_OBJECT","constants.BSON_DATA_ARRAY","constants.BSON_DATA_UNDEFINED","constants.BSON_DATA_NULL","constants.BSON_DATA_LONG","constants.BSON_DATA_DECIMAL128","constants.BSON_DATA_BINARY","constants.BSON_BINARY_SUBTYPE_UUID_NEW","constants.BSON_DATA_REGEXP","constants.BSON_DATA_SYMBOL","constants.BSON_DATA_TIMESTAMP","constants.BSON_DATA_MIN_KEY","constants.BSON_DATA_MAX_KEY","constants.BSON_DATA_CODE","constants.BSON_DATA_CODE_W_SCOPE","constants.BSON_DATA_DBPOINTER","constants.BSON_BINARY_SUBTYPE_DEFAULT","Map","internalSerialize","internalDeserialize","internalCalculateObjectSize"],"mappings":"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,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/bson/dist/bson.esm.js b/food-ordering-app/server/node_modules/bson/dist/bson.esm.js index 138397c96..0ad60867e 100644 --- a/food-ordering-app/server/node_modules/bson/dist/bson.esm.js +++ b/food-ordering-app/server/node_modules/bson/dist/bson.esm.js @@ -231,174 +231,84 @@ var bufferToUuidHexString = function (buffer, includeDashes) { : buffer.toString('hex'); }; -var BYTE_LENGTH = 16; -var kId$1 = Symbol('id'); +/** @internal */ +var BSON_INT32_MAX$1 = 0x7fffffff; +/** @internal */ +var BSON_INT32_MIN$1 = -0x80000000; +/** @internal */ +var BSON_INT64_MAX$1 = Math.pow(2, 63) - 1; +/** @internal */ +var BSON_INT64_MIN$1 = -Math.pow(2, 63); /** - * A class representation of the BSON UUID type. - * @public + * Any integer up to 2^53 can be precisely represented by a double. + * @internal */ -var UUID = /** @class */ (function () { - /** - * Create an UUID type - * - * @param input - Can be a 32 or 36 character hex string (dashes excluded/included) or a 16 byte binary Buffer. - */ - function UUID(input) { - if (typeof input === 'undefined') { - // The most common use case (blank id, new UUID() instance) - this.id = UUID.generate(); - } - else if (input instanceof UUID) { - this[kId$1] = Buffer.from(input.id); - this.__id = input.__id; - } - else if (ArrayBuffer.isView(input) && input.byteLength === BYTE_LENGTH) { - this.id = ensureBuffer(input); - } - else if (typeof input === 'string') { - this.id = uuidHexStringToBuffer(input); - } - else { - throw new BSONTypeError('Argument passed in UUID constructor must be a UUID, a 16 byte Buffer or a 32/36 character hex string (dashes excluded/included, format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).'); - } - } - Object.defineProperty(UUID.prototype, "id", { - /** - * The UUID bytes - * @readonly - */ - get: function () { - return this[kId$1]; - }, - set: function (value) { - this[kId$1] = value; - if (UUID.cacheHexString) { - this.__id = bufferToUuidHexString(value); - } - }, - enumerable: false, - configurable: true - }); - /** - * Generate a 16 byte uuid v4 buffer used in UUIDs - */ - /** - * Returns the UUID id as a 32 or 36 character hex string representation, excluding/including dashes (defaults to 36 character dash separated) - * @param includeDashes - should the string exclude dash-separators. - * */ - UUID.prototype.toHexString = function (includeDashes) { - if (includeDashes === void 0) { includeDashes = true; } - if (UUID.cacheHexString && this.__id) { - return this.__id; - } - var uuidHexString = bufferToUuidHexString(this.id, includeDashes); - if (UUID.cacheHexString) { - this.__id = uuidHexString; - } - return uuidHexString; - }; - /** - * Converts the id into a 36 character (dashes included) hex string, unless a encoding is specified. - */ - UUID.prototype.toString = function (encoding) { - return encoding ? this.id.toString(encoding) : this.toHexString(); - }; - /** - * Converts the id into its JSON string representation. - * A 36 character (dashes included) hex string in the format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx - */ - UUID.prototype.toJSON = function () { - return this.toHexString(); - }; - /** - * Compares the equality of this UUID with `otherID`. - * - * @param otherId - UUID instance to compare against. - */ - UUID.prototype.equals = function (otherId) { - if (!otherId) { - return false; - } - if (otherId instanceof UUID) { - return otherId.id.equals(this.id); - } - try { - return new UUID(otherId).id.equals(this.id); - } - catch (_a) { - return false; - } - }; - /** - * Creates a Binary instance from the current UUID. - */ - UUID.prototype.toBinary = function () { - return new Binary(this.id, Binary.SUBTYPE_UUID); - }; - /** - * Generates a populated buffer containing a v4 uuid - */ - UUID.generate = function () { - var bytes = randomBytes(BYTE_LENGTH); - // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - // Kindly borrowed from https://github.com/uuidjs/uuid/blob/master/src/v4.js - bytes[6] = (bytes[6] & 0x0f) | 0x40; - bytes[8] = (bytes[8] & 0x3f) | 0x80; - return Buffer.from(bytes); - }; - /** - * Checks if a value is a valid bson UUID - * @param input - UUID, string or Buffer to validate. - */ - UUID.isValid = function (input) { - if (!input) { - return false; - } - if (input instanceof UUID) { - return true; - } - if (typeof input === 'string') { - return uuidValidateString(input); - } - if (isUint8Array(input)) { - // check for length & uuid version (https://tools.ietf.org/html/rfc4122#section-4.1.3) - if (input.length !== BYTE_LENGTH) { - return false; - } - try { - // get this byte as hex: xxxxxxxx-xxxx-XXxx-xxxx-xxxxxxxxxxxx - // check first part as uuid version: xxxxxxxx-xxxx-Xxxx-xxxx-xxxxxxxxxxxx - return parseInt(input[6].toString(16)[0], 10) === Binary.SUBTYPE_UUID; - } - catch (_a) { - return false; - } - } - return false; - }; - /** - * Creates an UUID from a hex string representation of an UUID. - * @param hexString - 32 or 36 character hex string (dashes excluded/included). - */ - UUID.createFromHexString = function (hexString) { - var buffer = uuidHexStringToBuffer(hexString); - return new UUID(buffer); - }; - /** - * Converts to a string representation of this Id. - * - * @returns return the 36 character hex string representation. - * @internal - */ - UUID.prototype[Symbol.for('nodejs.util.inspect.custom')] = function () { - return this.inspect(); - }; - UUID.prototype.inspect = function () { - return "new UUID(\"".concat(this.toHexString(), "\")"); - }; - return UUID; -}()); -Object.defineProperty(UUID.prototype, '_bsontype', { value: 'UUID' }); +var JS_INT_MAX = Math.pow(2, 53); +/** + * Any integer down to -2^53 can be precisely represented by a double. + * @internal + */ +var JS_INT_MIN = -Math.pow(2, 53); +/** Number BSON Type @internal */ +var BSON_DATA_NUMBER = 1; +/** String BSON Type @internal */ +var BSON_DATA_STRING = 2; +/** Object BSON Type @internal */ +var BSON_DATA_OBJECT = 3; +/** Array BSON Type @internal */ +var BSON_DATA_ARRAY = 4; +/** Binary BSON Type @internal */ +var BSON_DATA_BINARY = 5; +/** Binary BSON Type @internal */ +var BSON_DATA_UNDEFINED = 6; +/** ObjectId BSON Type @internal */ +var BSON_DATA_OID = 7; +/** Boolean BSON Type @internal */ +var BSON_DATA_BOOLEAN = 8; +/** Date BSON Type @internal */ +var BSON_DATA_DATE = 9; +/** null BSON Type @internal */ +var BSON_DATA_NULL = 10; +/** RegExp BSON Type @internal */ +var BSON_DATA_REGEXP = 11; +/** Code BSON Type @internal */ +var BSON_DATA_DBPOINTER = 12; +/** Code BSON Type @internal */ +var BSON_DATA_CODE = 13; +/** Symbol BSON Type @internal */ +var BSON_DATA_SYMBOL = 14; +/** Code with Scope BSON Type @internal */ +var BSON_DATA_CODE_W_SCOPE = 15; +/** 32 bit Integer BSON Type @internal */ +var BSON_DATA_INT = 16; +/** Timestamp BSON Type @internal */ +var BSON_DATA_TIMESTAMP = 17; +/** Long BSON Type @internal */ +var BSON_DATA_LONG = 18; +/** Decimal128 BSON Type @internal */ +var BSON_DATA_DECIMAL128 = 19; +/** MinKey BSON Type @internal */ +var BSON_DATA_MIN_KEY = 0xff; +/** MaxKey BSON Type @internal */ +var BSON_DATA_MAX_KEY = 0x7f; +/** Binary Default Type @internal */ +var BSON_BINARY_SUBTYPE_DEFAULT = 0; +/** Binary Function Type @internal */ +var BSON_BINARY_SUBTYPE_FUNCTION = 1; +/** Binary Byte Array Type @internal */ +var BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2; +/** Binary Deprecated UUID Type @deprecated Please use BSON_BINARY_SUBTYPE_UUID_NEW @internal */ +var BSON_BINARY_SUBTYPE_UUID = 3; +/** Binary UUID Type @internal */ +var BSON_BINARY_SUBTYPE_UUID_NEW = 4; +/** Binary MD5 Type @internal */ +var BSON_BINARY_SUBTYPE_MD5 = 5; +/** Encrypted BSON type @internal */ +var BSON_BINARY_SUBTYPE_ENCRYPTED = 6; +/** Column BSON type @internal */ +var BSON_BINARY_SUBTYPE_COLUMN = 7; +/** Binary User Defined Type @internal */ +var BSON_BINARY_SUBTYPE_USER_DEFINED = 128; /** * A class representation of the BSON Binary type. @@ -599,7 +509,7 @@ var Binary = /** @class */ (function () { if (!data) { throw new BSONTypeError("Unexpected Binary Extended JSON format ".concat(JSON.stringify(doc))); } - return new Binary(data, type); + return type === BSON_BINARY_SUBTYPE_UUID_NEW ? new UUID(data) : new Binary(data, type); }; /** @internal */ Binary.prototype[Symbol.for('nodejs.util.inspect.custom')] = function () { @@ -637,6 +547,168 @@ var Binary = /** @class */ (function () { return Binary; }()); Object.defineProperty(Binary.prototype, '_bsontype', { value: 'Binary' }); +var UUID_BYTE_LENGTH = 16; +/** + * A class representation of the BSON UUID type. + * @public + */ +var UUID = /** @class */ (function (_super) { + __extends(UUID, _super); + /** + * Create an UUID type + * + * @param input - Can be a 32 or 36 character hex string (dashes excluded/included) or a 16 byte binary Buffer. + */ + function UUID(input) { + var _this = this; + var bytes; + var hexStr; + if (input == null) { + bytes = UUID.generate(); + } + else if (input instanceof UUID) { + bytes = Buffer.from(input.buffer); + hexStr = input.__id; + } + else if (ArrayBuffer.isView(input) && input.byteLength === UUID_BYTE_LENGTH) { + bytes = ensureBuffer(input); + } + else if (typeof input === 'string') { + bytes = uuidHexStringToBuffer(input); + } + else { + throw new BSONTypeError('Argument passed in UUID constructor must be a UUID, a 16 byte Buffer or a 32/36 character hex string (dashes excluded/included, format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).'); + } + _this = _super.call(this, bytes, BSON_BINARY_SUBTYPE_UUID_NEW) || this; + _this.__id = hexStr; + return _this; + } + Object.defineProperty(UUID.prototype, "id", { + /** + * The UUID bytes + * @readonly + */ + get: function () { + return this.buffer; + }, + set: function (value) { + this.buffer = value; + if (UUID.cacheHexString) { + this.__id = bufferToUuidHexString(value); + } + }, + enumerable: false, + configurable: true + }); + /** + * Returns the UUID id as a 32 or 36 character hex string representation, excluding/including dashes (defaults to 36 character dash separated) + * @param includeDashes - should the string exclude dash-separators. + * */ + UUID.prototype.toHexString = function (includeDashes) { + if (includeDashes === void 0) { includeDashes = true; } + if (UUID.cacheHexString && this.__id) { + return this.__id; + } + var uuidHexString = bufferToUuidHexString(this.id, includeDashes); + if (UUID.cacheHexString) { + this.__id = uuidHexString; + } + return uuidHexString; + }; + /** + * Converts the id into a 36 character (dashes included) hex string, unless a encoding is specified. + */ + UUID.prototype.toString = function (encoding) { + return encoding ? this.id.toString(encoding) : this.toHexString(); + }; + /** + * Converts the id into its JSON string representation. + * A 36 character (dashes included) hex string in the format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + */ + UUID.prototype.toJSON = function () { + return this.toHexString(); + }; + /** + * Compares the equality of this UUID with `otherID`. + * + * @param otherId - UUID instance to compare against. + */ + UUID.prototype.equals = function (otherId) { + if (!otherId) { + return false; + } + if (otherId instanceof UUID) { + return otherId.id.equals(this.id); + } + try { + return new UUID(otherId).id.equals(this.id); + } + catch (_a) { + return false; + } + }; + /** + * Creates a Binary instance from the current UUID. + */ + UUID.prototype.toBinary = function () { + return new Binary(this.id, Binary.SUBTYPE_UUID); + }; + /** + * Generates a populated buffer containing a v4 uuid + */ + UUID.generate = function () { + var bytes = randomBytes(UUID_BYTE_LENGTH); + // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` + // Kindly borrowed from https://github.com/uuidjs/uuid/blob/master/src/v4.js + bytes[6] = (bytes[6] & 0x0f) | 0x40; + bytes[8] = (bytes[8] & 0x3f) | 0x80; + return Buffer.from(bytes); + }; + /** + * Checks if a value is a valid bson UUID + * @param input - UUID, string or Buffer to validate. + */ + UUID.isValid = function (input) { + if (!input) { + return false; + } + if (input instanceof UUID) { + return true; + } + if (typeof input === 'string') { + return uuidValidateString(input); + } + if (isUint8Array(input)) { + // check for length & uuid version (https://tools.ietf.org/html/rfc4122#section-4.1.3) + if (input.length !== UUID_BYTE_LENGTH) { + return false; + } + return (input[6] & 0xf0) === 0x40 && (input[8] & 0x80) === 0x80; + } + return false; + }; + /** + * Creates an UUID from a hex string representation of an UUID. + * @param hexString - 32 or 36 character hex string (dashes excluded/included). + */ + UUID.createFromHexString = function (hexString) { + var buffer = uuidHexStringToBuffer(hexString); + return new UUID(buffer); + }; + /** + * Converts to a string representation of this Id. + * + * @returns return the 36 character hex string representation. + * @internal + */ + UUID.prototype[Symbol.for('nodejs.util.inspect.custom')] = function () { + return this.inspect(); + }; + UUID.prototype.inspect = function () { + return "new UUID(\"".concat(this.toHexString(), "\")"); + }; + return UUID; +}(Binary)); /** * A class representation of the BSON Code type. @@ -2365,22 +2437,14 @@ var Double = /** @class */ (function () { if (options && (options.legacy || (options.relaxed && isFinite(this.value)))) { return this.value; } - // NOTE: JavaScript has +0 and -0, apparently to model limit calculations. If a user - // explicitly provided `-0` then we need to ensure the sign makes it into the output if (Object.is(Math.sign(this.value), -0)) { + // NOTE: JavaScript has +0 and -0, apparently to model limit calculations. If a user + // explicitly provided `-0` then we need to ensure the sign makes it into the output return { $numberDouble: "-".concat(this.value.toFixed(1)) }; } - var $numberDouble; - if (Number.isInteger(this.value)) { - $numberDouble = this.value.toFixed(1); - if ($numberDouble.length >= 13) { - $numberDouble = this.value.toExponential(13).toUpperCase(); - } - } - else { - $numberDouble = this.value.toString(); - } - return { $numberDouble: $numberDouble }; + return { + $numberDouble: Number.isInteger(this.value) ? this.value.toFixed(1) : this.value.toString() + }; }; /** @internal */ Double.fromExtendedJSON = function (doc, options) { @@ -3000,12 +3064,12 @@ function isBSONType(value) { return (isObjectLike(value) && Reflect.has(value, '_bsontype') && typeof value._bsontype === 'string'); } // INT32 boundaries -var BSON_INT32_MAX$1 = 0x7fffffff; -var BSON_INT32_MIN$1 = -0x80000000; +var BSON_INT32_MAX = 0x7fffffff; +var BSON_INT32_MIN = -0x80000000; // INT64 boundaries // const BSON_INT64_MAX = 0x7fffffffffffffff; // TODO(NODE-4377): This number cannot be precisely represented in JS -var BSON_INT64_MAX$1 = 0x8000000000000000; -var BSON_INT64_MIN$1 = -0x8000000000000000; +var BSON_INT64_MAX = 0x8000000000000000; +var BSON_INT64_MIN = -0x8000000000000000; // all the types where we don't need to do any special processing and can just pass the EJSON //straight to type.fromExtendedJSON var keysToCodecs = { @@ -3033,9 +3097,9 @@ function deserializeValue(value, options) { // if it's an integer, should interpret as smallest BSON integer // that can represent it exactly. (if out of range, interpret as double.) if (Math.floor(value) === value) { - if (value >= BSON_INT32_MIN$1 && value <= BSON_INT32_MAX$1) + if (value >= BSON_INT32_MIN && value <= BSON_INT32_MAX) return new Int32(value); - if (value >= BSON_INT64_MIN$1 && value <= BSON_INT64_MAX$1) + if (value >= BSON_INT64_MIN && value <= BSON_INT64_MAX) return Long.fromNumber(value); } // If the number is a non-integer or out of integer range, should interpret as BSON Double. @@ -3159,7 +3223,7 @@ function serializeValue(value, options) { if (typeof value === 'number' && (!options.relaxed || !isFinite(value))) { // it's an integer if (Math.floor(value) === value) { - var int32Range = value >= BSON_INT32_MIN$1 && value <= BSON_INT32_MAX$1, int64Range = value >= BSON_INT64_MIN$1 && value <= BSON_INT64_MAX$1; + var int32Range = value >= BSON_INT32_MIN && value <= BSON_INT32_MAX, int64Range = value >= BSON_INT64_MIN && value <= BSON_INT64_MAX; // interpret as being of the smallest BSON integer type that can represent the number exactly if (int32Range) return { $numberInt: value.toString() }; @@ -3484,85 +3548,6 @@ else { }()); } -/** @internal */ -var BSON_INT32_MAX = 0x7fffffff; -/** @internal */ -var BSON_INT32_MIN = -0x80000000; -/** @internal */ -var BSON_INT64_MAX = Math.pow(2, 63) - 1; -/** @internal */ -var BSON_INT64_MIN = -Math.pow(2, 63); -/** - * Any integer up to 2^53 can be precisely represented by a double. - * @internal - */ -var JS_INT_MAX = Math.pow(2, 53); -/** - * Any integer down to -2^53 can be precisely represented by a double. - * @internal - */ -var JS_INT_MIN = -Math.pow(2, 53); -/** Number BSON Type @internal */ -var BSON_DATA_NUMBER = 1; -/** String BSON Type @internal */ -var BSON_DATA_STRING = 2; -/** Object BSON Type @internal */ -var BSON_DATA_OBJECT = 3; -/** Array BSON Type @internal */ -var BSON_DATA_ARRAY = 4; -/** Binary BSON Type @internal */ -var BSON_DATA_BINARY = 5; -/** Binary BSON Type @internal */ -var BSON_DATA_UNDEFINED = 6; -/** ObjectId BSON Type @internal */ -var BSON_DATA_OID = 7; -/** Boolean BSON Type @internal */ -var BSON_DATA_BOOLEAN = 8; -/** Date BSON Type @internal */ -var BSON_DATA_DATE = 9; -/** null BSON Type @internal */ -var BSON_DATA_NULL = 10; -/** RegExp BSON Type @internal */ -var BSON_DATA_REGEXP = 11; -/** Code BSON Type @internal */ -var BSON_DATA_DBPOINTER = 12; -/** Code BSON Type @internal */ -var BSON_DATA_CODE = 13; -/** Symbol BSON Type @internal */ -var BSON_DATA_SYMBOL = 14; -/** Code with Scope BSON Type @internal */ -var BSON_DATA_CODE_W_SCOPE = 15; -/** 32 bit Integer BSON Type @internal */ -var BSON_DATA_INT = 16; -/** Timestamp BSON Type @internal */ -var BSON_DATA_TIMESTAMP = 17; -/** Long BSON Type @internal */ -var BSON_DATA_LONG = 18; -/** Decimal128 BSON Type @internal */ -var BSON_DATA_DECIMAL128 = 19; -/** MinKey BSON Type @internal */ -var BSON_DATA_MIN_KEY = 0xff; -/** MaxKey BSON Type @internal */ -var BSON_DATA_MAX_KEY = 0x7f; -/** Binary Default Type @internal */ -var BSON_BINARY_SUBTYPE_DEFAULT = 0; -/** Binary Function Type @internal */ -var BSON_BINARY_SUBTYPE_FUNCTION = 1; -/** Binary Byte Array Type @internal */ -var BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2; -/** Binary Deprecated UUID Type @deprecated Please use BSON_BINARY_SUBTYPE_UUID_NEW @internal */ -var BSON_BINARY_SUBTYPE_UUID = 3; -/** Binary UUID Type @internal */ -var BSON_BINARY_SUBTYPE_UUID_NEW = 4; -/** Binary MD5 Type @internal */ -var BSON_BINARY_SUBTYPE_MD5 = 5; -/** Encrypted BSON type @internal */ -var BSON_BINARY_SUBTYPE_ENCRYPTED = 6; -/** Column BSON type @internal */ -var BSON_BINARY_SUBTYPE_COLUMN = 7; -/** Binary User Defined Type @internal */ -var BSON_BINARY_SUBTYPE_USER_DEFINED = 128; - function calculateObjectSize$1(object, serializeFunctions, ignoreUndefined) { var totalLength = 4 + 1; if (Array.isArray(object)) { @@ -3600,7 +3585,7 @@ value, serializeFunctions, isArray, ignoreUndefined) { if (Math.floor(value) === value && value >= JS_INT_MIN && value <= JS_INT_MAX) { - if (value >= BSON_INT32_MIN && value <= BSON_INT32_MAX) { + if (value >= BSON_INT32_MIN$1 && value <= BSON_INT32_MAX$1) { // 32 bit return (name != null ? Buffer.byteLength(name, 'utf8') + 1 : 0) + (4 + 1); } @@ -4102,6 +4087,9 @@ function deserializeObject(buffer, index, options, isArray) { } else { value = new Binary(buffer.slice(index, index + binarySize), subType); + if (subType === BSON_BINARY_SUBTYPE_UUID_NEW) { + value = value.toUUID(); + } } } else { @@ -4127,8 +4115,11 @@ function deserializeObject(buffer, index, options, isArray) { if (promoteBuffers && promoteValues) { value = _buffer; } + else if (subType === BSON_BINARY_SUBTYPE_UUID_NEW) { + value = new Binary(buffer.slice(index, index + binarySize), subType).toUUID(); + } else { - value = new Binary(_buffer, subType); + value = new Binary(buffer.slice(index, index + binarySize), subType); } } // Update the index @@ -4455,8 +4446,8 @@ function serializeNumber(buffer, key, value, index, isArray) { // We have an integer value // TODO(NODE-2529): Add support for big int if (Number.isInteger(value) && - value >= BSON_INT32_MIN && - value <= BSON_INT32_MAX) { + value >= BSON_INT32_MIN$1 && + value <= BSON_INT32_MAX$1) { // If the value fits in 32 bits encode as int32 // Set int type 32 bits or less buffer[index++] = BSON_DATA_INT; @@ -5433,5 +5424,5 @@ var BSON = { }; export default BSON; -export { BSONError, BSONRegExp, BSONSymbol, BSONTypeError, BSON_BINARY_SUBTYPE_BYTE_ARRAY, BSON_BINARY_SUBTYPE_COLUMN, BSON_BINARY_SUBTYPE_DEFAULT, BSON_BINARY_SUBTYPE_ENCRYPTED, BSON_BINARY_SUBTYPE_FUNCTION, BSON_BINARY_SUBTYPE_MD5, BSON_BINARY_SUBTYPE_USER_DEFINED, BSON_BINARY_SUBTYPE_UUID, BSON_BINARY_SUBTYPE_UUID_NEW, BSON_DATA_ARRAY, BSON_DATA_BINARY, BSON_DATA_BOOLEAN, BSON_DATA_CODE, BSON_DATA_CODE_W_SCOPE, BSON_DATA_DATE, BSON_DATA_DBPOINTER, BSON_DATA_DECIMAL128, BSON_DATA_INT, BSON_DATA_LONG, BSON_DATA_MAX_KEY, BSON_DATA_MIN_KEY, BSON_DATA_NULL, BSON_DATA_NUMBER, BSON_DATA_OBJECT, BSON_DATA_OID, BSON_DATA_REGEXP, BSON_DATA_STRING, BSON_DATA_SYMBOL, BSON_DATA_TIMESTAMP, BSON_DATA_UNDEFINED, BSON_INT32_MAX, BSON_INT32_MIN, BSON_INT64_MAX, BSON_INT64_MIN, Binary, Code, DBRef, Decimal128, Double, EJSON, Int32, Long, LongWithoutOverridesClass, bsonMap as Map, MaxKey, MinKey, ObjectId as ObjectID, ObjectId, Timestamp, UUID, calculateObjectSize, deserialize, deserializeStream, serialize, serializeWithBufferAndIndex, setInternalBufferSize }; +export { BSONError, BSONRegExp, BSONSymbol, BSONTypeError, BSON_BINARY_SUBTYPE_BYTE_ARRAY, BSON_BINARY_SUBTYPE_COLUMN, BSON_BINARY_SUBTYPE_DEFAULT, BSON_BINARY_SUBTYPE_ENCRYPTED, BSON_BINARY_SUBTYPE_FUNCTION, BSON_BINARY_SUBTYPE_MD5, BSON_BINARY_SUBTYPE_USER_DEFINED, BSON_BINARY_SUBTYPE_UUID, BSON_BINARY_SUBTYPE_UUID_NEW, BSON_DATA_ARRAY, BSON_DATA_BINARY, BSON_DATA_BOOLEAN, BSON_DATA_CODE, BSON_DATA_CODE_W_SCOPE, BSON_DATA_DATE, BSON_DATA_DBPOINTER, BSON_DATA_DECIMAL128, BSON_DATA_INT, BSON_DATA_LONG, BSON_DATA_MAX_KEY, BSON_DATA_MIN_KEY, BSON_DATA_NULL, BSON_DATA_NUMBER, BSON_DATA_OBJECT, BSON_DATA_OID, BSON_DATA_REGEXP, BSON_DATA_STRING, BSON_DATA_SYMBOL, BSON_DATA_TIMESTAMP, BSON_DATA_UNDEFINED, BSON_INT32_MAX$1 as BSON_INT32_MAX, BSON_INT32_MIN$1 as BSON_INT32_MIN, BSON_INT64_MAX$1 as BSON_INT64_MAX, BSON_INT64_MIN$1 as BSON_INT64_MIN, Binary, Code, DBRef, Decimal128, Double, EJSON, Int32, Long, LongWithoutOverridesClass, bsonMap as Map, MaxKey, MinKey, ObjectId as ObjectID, ObjectId, Timestamp, UUID, calculateObjectSize, deserialize, deserializeStream, serialize, serializeWithBufferAndIndex, setInternalBufferSize }; //# sourceMappingURL=bson.esm.js.map diff --git a/food-ordering-app/server/node_modules/bson/dist/bson.esm.js.map b/food-ordering-app/server/node_modules/bson/dist/bson.esm.js.map index e1c53798f..4867234db 100644 --- a/food-ordering-app/server/node_modules/bson/dist/bson.esm.js.map +++ b/food-ordering-app/server/node_modules/bson/dist/bson.esm.js.map @@ -1 +1 @@ -{"version":3,"file":"bson.esm.js","sources":["../node_modules/tslib/tslib.es6.js","../src/error.ts","../src/utils/global.ts","../src/parser/utils.ts","../src/ensure_buffer.ts","../src/uuid_utils.ts","../src/uuid.ts","../src/binary.ts","../src/code.ts","../src/db_ref.ts","../src/long.ts","../src/decimal128.ts","../src/double.ts","../src/int_32.ts","../src/max_key.ts","../src/min_key.ts","../src/objectid.ts","../src/regexp.ts","../src/symbol.ts","../src/timestamp.ts","../src/extended_json.ts","../src/map.ts","../src/constants.ts","../src/parser/calculate_size.ts","../src/validate_utf8.ts","../src/parser/deserializer.ts","../src/parser/serializer.ts","../src/bson.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","kId","BSON_INT32_MAX","BSON_INT32_MIN","BSON_INT64_MAX","BSON_INT64_MIN","calculateObjectSize","constants.JS_INT_MIN","constants.JS_INT_MAX","constants.BSON_INT32_MIN","constants.BSON_INT32_MAX","deserialize","constants.BSON_DATA_STRING","constants.BSON_DATA_OID","constants.BSON_DATA_INT","constants.BSON_DATA_NUMBER","constants.BSON_DATA_DATE","constants.BSON_DATA_BOOLEAN","constants.BSON_DATA_OBJECT","constants.BSON_DATA_ARRAY","constants.BSON_DATA_UNDEFINED","constants.BSON_DATA_NULL","constants.BSON_DATA_LONG","constants.BSON_DATA_DECIMAL128","constants.BSON_DATA_BINARY","constants.BSON_DATA_REGEXP","constants.BSON_DATA_SYMBOL","constants.BSON_DATA_TIMESTAMP","constants.BSON_DATA_MIN_KEY","constants.BSON_DATA_MAX_KEY","constants.BSON_DATA_CODE","constants.BSON_DATA_CODE_W_SCOPE","constants.BSON_DATA_DBPOINTER","constants.BSON_BINARY_SUBTYPE_DEFAULT","Map","internalSerialize","internalDeserialize","internalCalculateObjectSize"],"mappings":"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EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,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"} \ No newline at end of file +{"version":3,"file":"bson.esm.js","sources":["../node_modules/tslib/tslib.es6.js","../src/error.ts","../src/utils/global.ts","../src/parser/utils.ts","../src/ensure_buffer.ts","../src/uuid_utils.ts","../src/constants.ts","../src/binary.ts","../src/code.ts","../src/db_ref.ts","../src/long.ts","../src/decimal128.ts","../src/double.ts","../src/int_32.ts","../src/max_key.ts","../src/min_key.ts","../src/objectid.ts","../src/regexp.ts","../src/symbol.ts","../src/timestamp.ts","../src/extended_json.ts","../src/map.ts","../src/parser/calculate_size.ts","../src/validate_utf8.ts","../src/parser/deserializer.ts","../src/parser/serializer.ts","../src/bson.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","BSON_INT32_MAX","BSON_INT32_MIN","BSON_INT64_MAX","BSON_INT64_MIN","calculateObjectSize","constants.JS_INT_MIN","constants.JS_INT_MAX","constants.BSON_INT32_MIN","constants.BSON_INT32_MAX","deserialize","constants.BSON_DATA_STRING","constants.BSON_DATA_OID","constants.BSON_DATA_INT","constants.BSON_DATA_NUMBER","constants.BSON_DATA_DATE","constants.BSON_DATA_BOOLEAN","constants.BSON_DATA_OBJECT","constants.BSON_DATA_ARRAY","constants.BSON_DATA_UNDEFINED","constants.BSON_DATA_NULL","constants.BSON_DATA_LONG","constants.BSON_DATA_DECIMAL128","constants.BSON_DATA_BINARY","constants.BSON_BINARY_SUBTYPE_UUID_NEW","constants.BSON_DATA_REGEXP","constants.BSON_DATA_SYMBOL","constants.BSON_DATA_TIMESTAMP","constants.BSON_DATA_MIN_KEY","constants.BSON_DATA_MAX_KEY","constants.BSON_DATA_CODE","constants.BSON_DATA_CODE_W_SCOPE","constants.BSON_DATA_DBPOINTER","constants.BSON_BINARY_SUBTYPE_DEFAULT","Map","internalSerialize","internalDeserialize","internalCalculateObjectSize"],"mappings":"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,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/bson/lib/binary.js b/food-ordering-app/server/node_modules/bson/lib/binary.js index 925c1fcfc..39e13422e 100644 --- a/food-ordering-app/server/node_modules/bson/lib/binary.js +++ b/food-ordering-app/server/node_modules/bson/lib/binary.js @@ -1,11 +1,27 @@ "use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); Object.defineProperty(exports, "__esModule", { value: true }); -exports.Binary = void 0; +exports.UUID = exports.Binary = void 0; var buffer_1 = require("buffer"); var ensure_buffer_1 = require("./ensure_buffer"); var uuid_utils_1 = require("./uuid_utils"); -var uuid_1 = require("./uuid"); +var utils_1 = require("./parser/utils"); var error_1 = require("./error"); +var constants_1 = require("./constants"); /** * A class representation of the BSON Binary type. * @public @@ -177,7 +193,7 @@ var Binary = /** @class */ (function () { }; Binary.prototype.toUUID = function () { if (this.sub_type === Binary.SUBTYPE_UUID) { - return new uuid_1.UUID(this.buffer.slice(0, this.position)); + return new UUID(this.buffer.slice(0, this.position)); } throw new error_1.BSONError("Binary sub_type \"".concat(this.sub_type, "\" is not supported for converting to UUID. Only \"").concat(Binary.SUBTYPE_UUID, "\" is currently supported.")); }; @@ -205,7 +221,7 @@ var Binary = /** @class */ (function () { if (!data) { throw new error_1.BSONTypeError("Unexpected Binary Extended JSON format ".concat(JSON.stringify(doc))); } - return new Binary(data, type); + return type === constants_1.BSON_BINARY_SUBTYPE_UUID_NEW ? new UUID(data) : new Binary(data, type); }; /** @internal */ Binary.prototype[Symbol.for('nodejs.util.inspect.custom')] = function () { @@ -244,4 +260,167 @@ var Binary = /** @class */ (function () { }()); exports.Binary = Binary; Object.defineProperty(Binary.prototype, '_bsontype', { value: 'Binary' }); +var UUID_BYTE_LENGTH = 16; +/** + * A class representation of the BSON UUID type. + * @public + */ +var UUID = /** @class */ (function (_super) { + __extends(UUID, _super); + /** + * Create an UUID type + * + * @param input - Can be a 32 or 36 character hex string (dashes excluded/included) or a 16 byte binary Buffer. + */ + function UUID(input) { + var _this = this; + var bytes; + var hexStr; + if (input == null) { + bytes = UUID.generate(); + } + else if (input instanceof UUID) { + bytes = buffer_1.Buffer.from(input.buffer); + hexStr = input.__id; + } + else if (ArrayBuffer.isView(input) && input.byteLength === UUID_BYTE_LENGTH) { + bytes = (0, ensure_buffer_1.ensureBuffer)(input); + } + else if (typeof input === 'string') { + bytes = (0, uuid_utils_1.uuidHexStringToBuffer)(input); + } + else { + throw new error_1.BSONTypeError('Argument passed in UUID constructor must be a UUID, a 16 byte Buffer or a 32/36 character hex string (dashes excluded/included, format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).'); + } + _this = _super.call(this, bytes, constants_1.BSON_BINARY_SUBTYPE_UUID_NEW) || this; + _this.__id = hexStr; + return _this; + } + Object.defineProperty(UUID.prototype, "id", { + /** + * The UUID bytes + * @readonly + */ + get: function () { + return this.buffer; + }, + set: function (value) { + this.buffer = value; + if (UUID.cacheHexString) { + this.__id = (0, uuid_utils_1.bufferToUuidHexString)(value); + } + }, + enumerable: false, + configurable: true + }); + /** + * Returns the UUID id as a 32 or 36 character hex string representation, excluding/including dashes (defaults to 36 character dash separated) + * @param includeDashes - should the string exclude dash-separators. + * */ + UUID.prototype.toHexString = function (includeDashes) { + if (includeDashes === void 0) { includeDashes = true; } + if (UUID.cacheHexString && this.__id) { + return this.__id; + } + var uuidHexString = (0, uuid_utils_1.bufferToUuidHexString)(this.id, includeDashes); + if (UUID.cacheHexString) { + this.__id = uuidHexString; + } + return uuidHexString; + }; + /** + * Converts the id into a 36 character (dashes included) hex string, unless a encoding is specified. + */ + UUID.prototype.toString = function (encoding) { + return encoding ? this.id.toString(encoding) : this.toHexString(); + }; + /** + * Converts the id into its JSON string representation. + * A 36 character (dashes included) hex string in the format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + */ + UUID.prototype.toJSON = function () { + return this.toHexString(); + }; + /** + * Compares the equality of this UUID with `otherID`. + * + * @param otherId - UUID instance to compare against. + */ + UUID.prototype.equals = function (otherId) { + if (!otherId) { + return false; + } + if (otherId instanceof UUID) { + return otherId.id.equals(this.id); + } + try { + return new UUID(otherId).id.equals(this.id); + } + catch (_a) { + return false; + } + }; + /** + * Creates a Binary instance from the current UUID. + */ + UUID.prototype.toBinary = function () { + return new Binary(this.id, Binary.SUBTYPE_UUID); + }; + /** + * Generates a populated buffer containing a v4 uuid + */ + UUID.generate = function () { + var bytes = (0, utils_1.randomBytes)(UUID_BYTE_LENGTH); + // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` + // Kindly borrowed from https://github.com/uuidjs/uuid/blob/master/src/v4.js + bytes[6] = (bytes[6] & 0x0f) | 0x40; + bytes[8] = (bytes[8] & 0x3f) | 0x80; + return buffer_1.Buffer.from(bytes); + }; + /** + * Checks if a value is a valid bson UUID + * @param input - UUID, string or Buffer to validate. + */ + UUID.isValid = function (input) { + if (!input) { + return false; + } + if (input instanceof UUID) { + return true; + } + if (typeof input === 'string') { + return (0, uuid_utils_1.uuidValidateString)(input); + } + if ((0, utils_1.isUint8Array)(input)) { + // check for length & uuid version (https://tools.ietf.org/html/rfc4122#section-4.1.3) + if (input.length !== UUID_BYTE_LENGTH) { + return false; + } + return (input[6] & 0xf0) === 0x40 && (input[8] & 0x80) === 0x80; + } + return false; + }; + /** + * Creates an UUID from a hex string representation of an UUID. + * @param hexString - 32 or 36 character hex string (dashes excluded/included). + */ + UUID.createFromHexString = function (hexString) { + var buffer = (0, uuid_utils_1.uuidHexStringToBuffer)(hexString); + return new UUID(buffer); + }; + /** + * Converts to a string representation of this Id. + * + * @returns return the 36 character hex string representation. + * @internal + */ + UUID.prototype[Symbol.for('nodejs.util.inspect.custom')] = function () { + return this.inspect(); + }; + UUID.prototype.inspect = function () { + return "new UUID(\"".concat(this.toHexString(), "\")"); + }; + return UUID; +}(Binary)); +exports.UUID = UUID; //# sourceMappingURL=binary.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/bson/lib/binary.js.map b/food-ordering-app/server/node_modules/bson/lib/binary.js.map index d01093009..412903a29 100644 --- a/food-ordering-app/server/node_modules/bson/lib/binary.js.map +++ b/food-ordering-app/server/node_modules/bson/lib/binary.js.map @@ -1 +1 @@ -{"version":3,"file":"binary.js","sourceRoot":"","sources":["../src/binary.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"binary.js","sourceRoot":"","sources":["../src/binary.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/bson/lib/bson.js b/food-ordering-app/server/node_modules/bson/lib/bson.js index 21da67a6d..265d4a0cb 100644 --- a/food-ordering-app/server/node_modules/bson/lib/bson.js +++ b/food-ordering-app/server/node_modules/bson/lib/bson.js @@ -5,6 +5,7 @@ exports.deserializeStream = exports.calculateObjectSize = exports.deserialize = var buffer_1 = require("buffer"); var binary_1 = require("./binary"); Object.defineProperty(exports, "Binary", { enumerable: true, get: function () { return binary_1.Binary; } }); +Object.defineProperty(exports, "UUID", { enumerable: true, get: function () { return binary_1.UUID; } }); var code_1 = require("./code"); Object.defineProperty(exports, "Code", { enumerable: true, get: function () { return code_1.Code; } }); var db_ref_1 = require("./db_ref"); @@ -39,10 +40,6 @@ var symbol_1 = require("./symbol"); Object.defineProperty(exports, "BSONSymbol", { enumerable: true, get: function () { return symbol_1.BSONSymbol; } }); var timestamp_1 = require("./timestamp"); Object.defineProperty(exports, "Timestamp", { enumerable: true, get: function () { return timestamp_1.Timestamp; } }); -var uuid_1 = require("./uuid"); -Object.defineProperty(exports, "UUID", { enumerable: true, get: function () { return uuid_1.UUID; } }); -var binary_2 = require("./binary"); -var code_2 = require("./code"); var constants_1 = require("./constants"); Object.defineProperty(exports, "BSON_BINARY_SUBTYPE_BYTE_ARRAY", { enumerable: true, get: function () { return constants_1.BSON_BINARY_SUBTYPE_BYTE_ARRAY; } }); Object.defineProperty(exports, "BSON_BINARY_SUBTYPE_DEFAULT", { enumerable: true, get: function () { return constants_1.BSON_BINARY_SUBTYPE_DEFAULT; } }); @@ -78,21 +75,10 @@ Object.defineProperty(exports, "BSON_INT32_MAX", { enumerable: true, get: functi Object.defineProperty(exports, "BSON_INT32_MIN", { enumerable: true, get: function () { return constants_1.BSON_INT32_MIN; } }); Object.defineProperty(exports, "BSON_INT64_MAX", { enumerable: true, get: function () { return constants_1.BSON_INT64_MAX; } }); Object.defineProperty(exports, "BSON_INT64_MIN", { enumerable: true, get: function () { return constants_1.BSON_INT64_MIN; } }); -var db_ref_2 = require("./db_ref"); -var decimal128_2 = require("./decimal128"); -var double_2 = require("./double"); var extended_json_2 = require("./extended_json"); Object.defineProperty(exports, "EJSON", { enumerable: true, get: function () { return extended_json_2.EJSON; } }); -var int_32_2 = require("./int_32"); -var long_2 = require("./long"); -var max_key_2 = require("./max_key"); -var min_key_2 = require("./min_key"); -var objectid_2 = require("./objectid"); -var regexp_2 = require("./regexp"); -var symbol_2 = require("./symbol"); var timestamp_2 = require("./timestamp"); Object.defineProperty(exports, "LongWithoutOverridesClass", { enumerable: true, get: function () { return timestamp_2.LongWithoutOverridesClass; } }); -var uuid_2 = require("./uuid"); var error_2 = require("./error"); Object.defineProperty(exports, "BSONError", { enumerable: true, get: function () { return error_2.BSONError; } }); Object.defineProperty(exports, "BSONTypeError", { enumerable: true, get: function () { return error_2.BSONTypeError; } }); @@ -242,7 +228,7 @@ var BSON = { Double: double_1.Double, Int32: int_32_1.Int32, Long: long_1.Long, - UUID: uuid_1.UUID, + UUID: binary_1.UUID, Map: map_1.Map, MaxKey: max_key_1.MaxKey, MinKey: min_key_1.MinKey, diff --git a/food-ordering-app/server/node_modules/bson/lib/bson.js.map b/food-ordering-app/server/node_modules/bson/lib/bson.js.map index 742d1ce54..cc4b5c374 100644 --- a/food-ordering-app/server/node_modules/bson/lib/bson.js.map +++ b/food-ordering-app/server/node_modules/bson/lib/bson.js.map @@ -1 +1 @@ -{"version":3,"file":"bson.js","sourceRoot":"","sources":["../src/bson.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"bson.js","sourceRoot":"","sources":["../src/bson.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/bson/lib/double.js b/food-ordering-app/server/node_modules/bson/lib/double.js index 39c488f32..b4363bcae 100644 --- a/food-ordering-app/server/node_modules/bson/lib/double.js +++ b/food-ordering-app/server/node_modules/bson/lib/double.js @@ -39,22 +39,14 @@ var Double = /** @class */ (function () { if (options && (options.legacy || (options.relaxed && isFinite(this.value)))) { return this.value; } - // NOTE: JavaScript has +0 and -0, apparently to model limit calculations. If a user - // explicitly provided `-0` then we need to ensure the sign makes it into the output if (Object.is(Math.sign(this.value), -0)) { + // NOTE: JavaScript has +0 and -0, apparently to model limit calculations. If a user + // explicitly provided `-0` then we need to ensure the sign makes it into the output return { $numberDouble: "-".concat(this.value.toFixed(1)) }; } - var $numberDouble; - if (Number.isInteger(this.value)) { - $numberDouble = this.value.toFixed(1); - if ($numberDouble.length >= 13) { - $numberDouble = this.value.toExponential(13).toUpperCase(); - } - } - else { - $numberDouble = this.value.toString(); - } - return { $numberDouble: $numberDouble }; + return { + $numberDouble: Number.isInteger(this.value) ? this.value.toFixed(1) : this.value.toString() + }; }; /** @internal */ Double.fromExtendedJSON = function (doc, options) { diff --git a/food-ordering-app/server/node_modules/bson/lib/double.js.map b/food-ordering-app/server/node_modules/bson/lib/double.js.map index 31201e109..46c8bdfcc 100644 --- a/food-ordering-app/server/node_modules/bson/lib/double.js.map +++ b/food-ordering-app/server/node_modules/bson/lib/double.js.map @@ -1 +1 @@ -{"version":3,"file":"double.js","sourceRoot":"","sources":["../src/double.ts"],"names":[],"mappings":";;;AAOA;;;;GAIG;AACH;IAIE;;;;OAIG;IACH,gBAAY,KAAa;QACvB,IAAI,CAAC,CAAC,IAAI,YAAY,MAAM,CAAC;YAAE,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;QAExD,IAAK,KAAiB,YAAY,MAAM,EAAE;YACxC,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;SACzB;QAED,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACH,wBAAO,GAAP;QACE,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,uBAAM,GAAN;QACE,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,yBAAQ,GAAR,UAAS,KAAc;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,gBAAgB;IAChB,+BAAc,GAAd,UAAe,OAAsB;QACnC,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YAC5E,OAAO,IAAI,CAAC,KAAK,CAAC;SACnB;QAED,oFAAoF;QACpF,oFAAoF;QACpF,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YACxC,OAAO,EAAE,aAAa,EAAE,WAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC;SACvD;QAED,IAAI,aAAqB,CAAC;QAC1B,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAChC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,aAAa,CAAC,MAAM,IAAI,EAAE,EAAE;gBAC9B,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;aAC5D;SACF;aAAM;YACL,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;SACvC;QAED,OAAO,EAAE,aAAa,eAAA,EAAE,CAAC;IAC3B,CAAC;IAED,gBAAgB;IACT,uBAAgB,GAAvB,UAAwB,GAAmB,EAAE,OAAsB;QACjE,IAAM,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAClD,OAAO,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC;IAC5E,CAAC;IAED,gBAAgB;IAChB,iBAAC,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,GAA1C;QACE,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,wBAAO,GAAP;QACE,IAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAoB,CAAC;QACtD,OAAO,qBAAc,KAAK,CAAC,aAAa,MAAG,CAAC;IAC9C,CAAC;IACH,aAAC;AAAD,CAAC,AA5ED,IA4EC;AA5EY,wBAAM;AA8EnB,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"double.js","sourceRoot":"","sources":["../src/double.ts"],"names":[],"mappings":";;;AAOA;;;;GAIG;AACH;IAIE;;;;OAIG;IACH,gBAAY,KAAa;QACvB,IAAI,CAAC,CAAC,IAAI,YAAY,MAAM,CAAC;YAAE,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;QAExD,IAAK,KAAiB,YAAY,MAAM,EAAE;YACxC,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;SACzB;QAED,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACH,wBAAO,GAAP;QACE,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,uBAAM,GAAN;QACE,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,yBAAQ,GAAR,UAAS,KAAc;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,gBAAgB;IAChB,+BAAc,GAAd,UAAe,OAAsB;QACnC,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YAC5E,OAAO,IAAI,CAAC,KAAK,CAAC;SACnB;QAED,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YACxC,oFAAoF;YACpF,oFAAoF;YACpF,OAAO,EAAE,aAAa,EAAE,WAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC;SACvD;QAED,OAAO;YACL,aAAa,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;SAC5F,CAAC;IACJ,CAAC;IAED,gBAAgB;IACT,uBAAgB,GAAvB,UAAwB,GAAmB,EAAE,OAAsB;QACjE,IAAM,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAClD,OAAO,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC;IAC5E,CAAC;IAED,gBAAgB;IAChB,iBAAC,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,GAA1C;QACE,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,wBAAO,GAAP;QACE,IAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAoB,CAAC;QACtD,OAAO,qBAAc,KAAK,CAAC,aAAa,MAAG,CAAC;IAC9C,CAAC;IACH,aAAC;AAAD,CAAC,AApED,IAoEC;AApEY,wBAAM;AAsEnB,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/bson/lib/parser/deserializer.js b/food-ordering-app/server/node_modules/bson/lib/parser/deserializer.js index a011a1d2b..57f14a168 100644 --- a/food-ordering-app/server/node_modules/bson/lib/parser/deserializer.js +++ b/food-ordering-app/server/node_modules/bson/lib/parser/deserializer.js @@ -340,6 +340,9 @@ function deserializeObject(buffer, index, options, isArray) { } else { value = new binary_1.Binary(buffer.slice(index, index + binarySize), subType); + if (subType === constants.BSON_BINARY_SUBTYPE_UUID_NEW) { + value = value.toUUID(); + } } } else { @@ -365,8 +368,11 @@ function deserializeObject(buffer, index, options, isArray) { if (promoteBuffers && promoteValues) { value = _buffer; } + else if (subType === constants.BSON_BINARY_SUBTYPE_UUID_NEW) { + value = new binary_1.Binary(buffer.slice(index, index + binarySize), subType).toUUID(); + } else { - value = new binary_1.Binary(_buffer, subType); + value = new binary_1.Binary(buffer.slice(index, index + binarySize), subType); } } // Update the index diff --git a/food-ordering-app/server/node_modules/bson/lib/parser/deserializer.js.map b/food-ordering-app/server/node_modules/bson/lib/parser/deserializer.js.map index 322854706..fc65ae3bd 100644 --- a/food-ordering-app/server/node_modules/bson/lib/parser/deserializer.js.map +++ b/food-ordering-app/server/node_modules/bson/lib/parser/deserializer.js.map @@ -1 +1 @@ -{"version":3,"file":"deserializer.js","sourceRoot":"","sources":["../../src/parser/deserializer.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"deserializer.js","sourceRoot":"","sources":["../../src/parser/deserializer.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/bson/lib/uuid.js b/food-ordering-app/server/node_modules/bson/lib/uuid.js deleted file mode 100644 index 481b1da0c..000000000 --- a/food-ordering-app/server/node_modules/bson/lib/uuid.js +++ /dev/null @@ -1,179 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.UUID = void 0; -var buffer_1 = require("buffer"); -var ensure_buffer_1 = require("./ensure_buffer"); -var binary_1 = require("./binary"); -var uuid_utils_1 = require("./uuid_utils"); -var utils_1 = require("./parser/utils"); -var error_1 = require("./error"); -var BYTE_LENGTH = 16; -var kId = Symbol('id'); -/** - * A class representation of the BSON UUID type. - * @public - */ -var UUID = /** @class */ (function () { - /** - * Create an UUID type - * - * @param input - Can be a 32 or 36 character hex string (dashes excluded/included) or a 16 byte binary Buffer. - */ - function UUID(input) { - if (typeof input === 'undefined') { - // The most common use case (blank id, new UUID() instance) - this.id = UUID.generate(); - } - else if (input instanceof UUID) { - this[kId] = buffer_1.Buffer.from(input.id); - this.__id = input.__id; - } - else if (ArrayBuffer.isView(input) && input.byteLength === BYTE_LENGTH) { - this.id = (0, ensure_buffer_1.ensureBuffer)(input); - } - else if (typeof input === 'string') { - this.id = (0, uuid_utils_1.uuidHexStringToBuffer)(input); - } - else { - throw new error_1.BSONTypeError('Argument passed in UUID constructor must be a UUID, a 16 byte Buffer or a 32/36 character hex string (dashes excluded/included, format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).'); - } - } - Object.defineProperty(UUID.prototype, "id", { - /** - * The UUID bytes - * @readonly - */ - get: function () { - return this[kId]; - }, - set: function (value) { - this[kId] = value; - if (UUID.cacheHexString) { - this.__id = (0, uuid_utils_1.bufferToUuidHexString)(value); - } - }, - enumerable: false, - configurable: true - }); - /** - * Generate a 16 byte uuid v4 buffer used in UUIDs - */ - /** - * Returns the UUID id as a 32 or 36 character hex string representation, excluding/including dashes (defaults to 36 character dash separated) - * @param includeDashes - should the string exclude dash-separators. - * */ - UUID.prototype.toHexString = function (includeDashes) { - if (includeDashes === void 0) { includeDashes = true; } - if (UUID.cacheHexString && this.__id) { - return this.__id; - } - var uuidHexString = (0, uuid_utils_1.bufferToUuidHexString)(this.id, includeDashes); - if (UUID.cacheHexString) { - this.__id = uuidHexString; - } - return uuidHexString; - }; - /** - * Converts the id into a 36 character (dashes included) hex string, unless a encoding is specified. - */ - UUID.prototype.toString = function (encoding) { - return encoding ? this.id.toString(encoding) : this.toHexString(); - }; - /** - * Converts the id into its JSON string representation. - * A 36 character (dashes included) hex string in the format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx - */ - UUID.prototype.toJSON = function () { - return this.toHexString(); - }; - /** - * Compares the equality of this UUID with `otherID`. - * - * @param otherId - UUID instance to compare against. - */ - UUID.prototype.equals = function (otherId) { - if (!otherId) { - return false; - } - if (otherId instanceof UUID) { - return otherId.id.equals(this.id); - } - try { - return new UUID(otherId).id.equals(this.id); - } - catch (_a) { - return false; - } - }; - /** - * Creates a Binary instance from the current UUID. - */ - UUID.prototype.toBinary = function () { - return new binary_1.Binary(this.id, binary_1.Binary.SUBTYPE_UUID); - }; - /** - * Generates a populated buffer containing a v4 uuid - */ - UUID.generate = function () { - var bytes = (0, utils_1.randomBytes)(BYTE_LENGTH); - // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - // Kindly borrowed from https://github.com/uuidjs/uuid/blob/master/src/v4.js - bytes[6] = (bytes[6] & 0x0f) | 0x40; - bytes[8] = (bytes[8] & 0x3f) | 0x80; - return buffer_1.Buffer.from(bytes); - }; - /** - * Checks if a value is a valid bson UUID - * @param input - UUID, string or Buffer to validate. - */ - UUID.isValid = function (input) { - if (!input) { - return false; - } - if (input instanceof UUID) { - return true; - } - if (typeof input === 'string') { - return (0, uuid_utils_1.uuidValidateString)(input); - } - if ((0, utils_1.isUint8Array)(input)) { - // check for length & uuid version (https://tools.ietf.org/html/rfc4122#section-4.1.3) - if (input.length !== BYTE_LENGTH) { - return false; - } - try { - // get this byte as hex: xxxxxxxx-xxxx-XXxx-xxxx-xxxxxxxxxxxx - // check first part as uuid version: xxxxxxxx-xxxx-Xxxx-xxxx-xxxxxxxxxxxx - return parseInt(input[6].toString(16)[0], 10) === binary_1.Binary.SUBTYPE_UUID; - } - catch (_a) { - return false; - } - } - return false; - }; - /** - * Creates an UUID from a hex string representation of an UUID. - * @param hexString - 32 or 36 character hex string (dashes excluded/included). - */ - UUID.createFromHexString = function (hexString) { - var buffer = (0, uuid_utils_1.uuidHexStringToBuffer)(hexString); - return new UUID(buffer); - }; - /** - * Converts to a string representation of this Id. - * - * @returns return the 36 character hex string representation. - * @internal - */ - UUID.prototype[Symbol.for('nodejs.util.inspect.custom')] = function () { - return this.inspect(); - }; - UUID.prototype.inspect = function () { - return "new UUID(\"".concat(this.toHexString(), "\")"); - }; - return UUID; -}()); -exports.UUID = UUID; -Object.defineProperty(UUID.prototype, '_bsontype', { value: 'UUID' }); -//# sourceMappingURL=uuid.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/bson/lib/uuid.js.map b/food-ordering-app/server/node_modules/bson/lib/uuid.js.map deleted file mode 100644 index 046e51d18..000000000 --- a/food-ordering-app/server/node_modules/bson/lib/uuid.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"uuid.js","sourceRoot":"","sources":["../src/uuid.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/bson/package.json b/food-ordering-app/server/node_modules/bson/package.json index a070c00bc..cfe6a2c75 100644 --- a/food-ordering-app/server/node_modules/bson/package.json +++ b/food-ordering-app/server/node_modules/bson/package.json @@ -15,7 +15,7 @@ "bower.json" ], "types": "bson.d.ts", - "version": "4.6.5", + "version": "4.7.2", "author": { "name": "The MongoDB NodeJS Team", "email": "dbx-node@mongodb.com" @@ -41,6 +41,7 @@ "@typescript-eslint/eslint-plugin": "^5.30.0", "@typescript-eslint/parser": "^5.30.0", "array-includes": "^3.1.3", + "array.prototype.flatmap": "^1.3.0", "benchmark": "^2.1.4", "chai": "^4.2.0", "eslint": "^8.18.0", diff --git a/food-ordering-app/server/node_modules/bson/src/binary.ts b/food-ordering-app/server/node_modules/bson/src/binary.ts index f424a547e..d86275c9a 100644 --- a/food-ordering-app/server/node_modules/bson/src/binary.ts +++ b/food-ordering-app/server/node_modules/bson/src/binary.ts @@ -1,9 +1,10 @@ import { Buffer } from 'buffer'; import { ensureBuffer } from './ensure_buffer'; -import { uuidHexStringToBuffer } from './uuid_utils'; -import { UUID, UUIDExtended } from './uuid'; +import { bufferToUuidHexString, uuidHexStringToBuffer, uuidValidateString } from './uuid_utils'; +import { isUint8Array, randomBytes } from './parser/utils'; import type { EJSONOptions } from './extended_json'; import { BSONError, BSONTypeError } from './error'; +import { BSON_BINARY_SUBTYPE_UUID_NEW } from './constants'; /** @public */ export type BinarySequence = Uint8Array | Buffer | number[]; @@ -277,7 +278,7 @@ export class Binary { if (!data) { throw new BSONTypeError(`Unexpected Binary Extended JSON format ${JSON.stringify(doc)}`); } - return new Binary(data, type); + return type === BSON_BINARY_SUBTYPE_UUID_NEW ? new UUID(data) : new Binary(data, type); } /** @internal */ @@ -292,3 +293,189 @@ export class Binary { } Object.defineProperty(Binary.prototype, '_bsontype', { value: 'Binary' }); + +/** @public */ +export type UUIDExtended = { + $uuid: string; +}; +const UUID_BYTE_LENGTH = 16; + +/** + * A class representation of the BSON UUID type. + * @public + */ +export class UUID extends Binary { + static cacheHexString: boolean; + + /** UUID hexString cache @internal */ + private __id?: string; + + /** + * Create an UUID type + * + * @param input - Can be a 32 or 36 character hex string (dashes excluded/included) or a 16 byte binary Buffer. + */ + constructor(input?: string | Buffer | UUID) { + let bytes; + let hexStr; + if (input == null) { + bytes = UUID.generate(); + } else if (input instanceof UUID) { + bytes = Buffer.from(input.buffer); + hexStr = input.__id; + } else if (ArrayBuffer.isView(input) && input.byteLength === UUID_BYTE_LENGTH) { + bytes = ensureBuffer(input); + } else if (typeof input === 'string') { + bytes = uuidHexStringToBuffer(input); + } else { + throw new BSONTypeError( + 'Argument passed in UUID constructor must be a UUID, a 16 byte Buffer or a 32/36 character hex string (dashes excluded/included, format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).' + ); + } + super(bytes, BSON_BINARY_SUBTYPE_UUID_NEW); + this.__id = hexStr; + } + + /** + * The UUID bytes + * @readonly + */ + get id(): Buffer { + return this.buffer; + } + + set id(value: Buffer) { + this.buffer = value; + + if (UUID.cacheHexString) { + this.__id = bufferToUuidHexString(value); + } + } + + /** + * Returns the UUID id as a 32 or 36 character hex string representation, excluding/including dashes (defaults to 36 character dash separated) + * @param includeDashes - should the string exclude dash-separators. + * */ + toHexString(includeDashes = true): string { + if (UUID.cacheHexString && this.__id) { + return this.__id; + } + + const uuidHexString = bufferToUuidHexString(this.id, includeDashes); + + if (UUID.cacheHexString) { + this.__id = uuidHexString; + } + + return uuidHexString; + } + + /** + * Converts the id into a 36 character (dashes included) hex string, unless a encoding is specified. + */ + toString(encoding?: string): string { + return encoding ? this.id.toString(encoding) : this.toHexString(); + } + + /** + * Converts the id into its JSON string representation. + * A 36 character (dashes included) hex string in the format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + */ + toJSON(): string { + return this.toHexString(); + } + + /** + * Compares the equality of this UUID with `otherID`. + * + * @param otherId - UUID instance to compare against. + */ + equals(otherId: string | Buffer | UUID): boolean { + if (!otherId) { + return false; + } + + if (otherId instanceof UUID) { + return otherId.id.equals(this.id); + } + + try { + return new UUID(otherId).id.equals(this.id); + } catch { + return false; + } + } + + /** + * Creates a Binary instance from the current UUID. + */ + toBinary(): Binary { + return new Binary(this.id, Binary.SUBTYPE_UUID); + } + + /** + * Generates a populated buffer containing a v4 uuid + */ + static generate(): Buffer { + const bytes = randomBytes(UUID_BYTE_LENGTH); + + // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` + // Kindly borrowed from https://github.com/uuidjs/uuid/blob/master/src/v4.js + bytes[6] = (bytes[6] & 0x0f) | 0x40; + bytes[8] = (bytes[8] & 0x3f) | 0x80; + + return Buffer.from(bytes); + } + + /** + * Checks if a value is a valid bson UUID + * @param input - UUID, string or Buffer to validate. + */ + static isValid(input: string | Buffer | UUID): boolean { + if (!input) { + return false; + } + + if (input instanceof UUID) { + return true; + } + + if (typeof input === 'string') { + return uuidValidateString(input); + } + + if (isUint8Array(input)) { + // check for length & uuid version (https://tools.ietf.org/html/rfc4122#section-4.1.3) + if (input.length !== UUID_BYTE_LENGTH) { + return false; + } + + return (input[6] & 0xf0) === 0x40 && (input[8] & 0x80) === 0x80; + } + + return false; + } + + /** + * Creates an UUID from a hex string representation of an UUID. + * @param hexString - 32 or 36 character hex string (dashes excluded/included). + */ + static createFromHexString(hexString: string): UUID { + const buffer = uuidHexStringToBuffer(hexString); + return new UUID(buffer); + } + + /** + * Converts to a string representation of this Id. + * + * @returns return the 36 character hex string representation. + * @internal + */ + [Symbol.for('nodejs.util.inspect.custom')](): string { + return this.inspect(); + } + + inspect(): string { + return `new UUID("${this.toHexString()}")`; + } +} diff --git a/food-ordering-app/server/node_modules/bson/src/bson.ts b/food-ordering-app/server/node_modules/bson/src/bson.ts index 924235aab..d32cfe834 100644 --- a/food-ordering-app/server/node_modules/bson/src/bson.ts +++ b/food-ordering-app/server/node_modules/bson/src/bson.ts @@ -1,5 +1,5 @@ import { Buffer } from 'buffer'; -import { Binary } from './binary'; +import { Binary, UUID } from './binary'; import { Code } from './code'; import { DBRef } from './db_ref'; import { Decimal128 } from './decimal128'; @@ -20,9 +20,8 @@ import { serializeInto as internalSerialize, SerializeOptions } from './parser/s import { BSONRegExp } from './regexp'; import { BSONSymbol } from './symbol'; import { Timestamp } from './timestamp'; -import { UUID } from './uuid'; -export { BinaryExtended, BinaryExtendedLegacy, BinarySequence } from './binary'; -export { CodeExtended } from './code'; +export type { UUIDExtended, BinaryExtended, BinaryExtendedLegacy, BinarySequence } from './binary'; +export type { CodeExtended } from './code'; export { BSON_BINARY_SUBTYPE_BYTE_ARRAY, BSON_BINARY_SUBTYPE_DEFAULT, @@ -59,25 +58,21 @@ export { BSON_INT64_MAX, BSON_INT64_MIN } from './constants'; -export { DBRefLike } from './db_ref'; -export { Decimal128Extended } from './decimal128'; -export { DoubleExtended } from './double'; -export { EJSON, EJSONOptions } from './extended_json'; -export { Int32Extended } from './int_32'; -export { LongExtended } from './long'; -export { MaxKeyExtended } from './max_key'; -export { MinKeyExtended } from './min_key'; -export { ObjectIdExtended, ObjectIdLike } from './objectid'; -export { BSONRegExpExtended, BSONRegExpExtendedLegacy } from './regexp'; -export { BSONSymbolExtended } from './symbol'; -export { - LongWithoutOverrides, - LongWithoutOverridesClass, - TimestampExtended, - TimestampOverrides -} from './timestamp'; -export { UUIDExtended } from './uuid'; -export { SerializeOptions, DeserializeOptions }; +export type { DBRefLike } from './db_ref'; +export type { Decimal128Extended } from './decimal128'; +export type { DoubleExtended } from './double'; +export type { EJSONOptions } from './extended_json'; +export { EJSON } from './extended_json'; +export type { Int32Extended } from './int_32'; +export type { LongExtended } from './long'; +export type { MaxKeyExtended } from './max_key'; +export type { MinKeyExtended } from './min_key'; +export type { ObjectIdExtended, ObjectIdLike } from './objectid'; +export type { BSONRegExpExtended, BSONRegExpExtendedLegacy } from './regexp'; +export type { BSONSymbolExtended } from './symbol'; +export type { LongWithoutOverrides, TimestampExtended, TimestampOverrides } from './timestamp'; +export { LongWithoutOverridesClass } from './timestamp'; +export type { SerializeOptions, DeserializeOptions }; export { Code, Map, diff --git a/food-ordering-app/server/node_modules/bson/src/double.ts b/food-ordering-app/server/node_modules/bson/src/double.ts index 51bbf22d7..96e5fcc6a 100644 --- a/food-ordering-app/server/node_modules/bson/src/double.ts +++ b/food-ordering-app/server/node_modules/bson/src/double.ts @@ -52,23 +52,15 @@ export class Double { return this.value; } - // NOTE: JavaScript has +0 and -0, apparently to model limit calculations. If a user - // explicitly provided `-0` then we need to ensure the sign makes it into the output if (Object.is(Math.sign(this.value), -0)) { + // NOTE: JavaScript has +0 and -0, apparently to model limit calculations. If a user + // explicitly provided `-0` then we need to ensure the sign makes it into the output return { $numberDouble: `-${this.value.toFixed(1)}` }; } - let $numberDouble: string; - if (Number.isInteger(this.value)) { - $numberDouble = this.value.toFixed(1); - if ($numberDouble.length >= 13) { - $numberDouble = this.value.toExponential(13).toUpperCase(); - } - } else { - $numberDouble = this.value.toString(); - } - - return { $numberDouble }; + return { + $numberDouble: Number.isInteger(this.value) ? this.value.toFixed(1) : this.value.toString() + }; } /** @internal */ diff --git a/food-ordering-app/server/node_modules/bson/src/parser/deserializer.ts b/food-ordering-app/server/node_modules/bson/src/parser/deserializer.ts index bd306c95c..faef442f4 100644 --- a/food-ordering-app/server/node_modules/bson/src/parser/deserializer.ts +++ b/food-ordering-app/server/node_modules/bson/src/parser/deserializer.ts @@ -417,6 +417,9 @@ function deserializeObject( value = buffer.slice(index, index + binarySize); } else { value = new Binary(buffer.slice(index, index + binarySize), subType); + if (subType === constants.BSON_BINARY_SUBTYPE_UUID_NEW) { + value = value.toUUID(); + } } } else { const _buffer = Buffer.alloc(binarySize); @@ -442,8 +445,10 @@ function deserializeObject( if (promoteBuffers && promoteValues) { value = _buffer; + } else if (subType === constants.BSON_BINARY_SUBTYPE_UUID_NEW) { + value = new Binary(buffer.slice(index, index + binarySize), subType).toUUID(); } else { - value = new Binary(_buffer, subType); + value = new Binary(buffer.slice(index, index + binarySize), subType); } } diff --git a/food-ordering-app/server/node_modules/bson/src/uuid.ts b/food-ordering-app/server/node_modules/bson/src/uuid.ts deleted file mode 100644 index 625e57dea..000000000 --- a/food-ordering-app/server/node_modules/bson/src/uuid.ts +++ /dev/null @@ -1,209 +0,0 @@ -import { Buffer } from 'buffer'; -import { ensureBuffer } from './ensure_buffer'; -import { Binary } from './binary'; -import { bufferToUuidHexString, uuidHexStringToBuffer, uuidValidateString } from './uuid_utils'; -import { isUint8Array, randomBytes } from './parser/utils'; -import { BSONTypeError } from './error'; - -/** @public */ -export type UUIDExtended = { - $uuid: string; -}; - -const BYTE_LENGTH = 16; - -const kId = Symbol('id'); - -/** - * A class representation of the BSON UUID type. - * @public - */ -export class UUID { - // This property is not meant for direct serialization, but simply an indication that this type originates from this package. - _bsontype!: 'UUID'; - - static cacheHexString: boolean; - - /** UUID Bytes @internal */ - private [kId]!: Buffer; - /** UUID hexString cache @internal */ - private __id?: string; - - /** - * Create an UUID type - * - * @param input - Can be a 32 or 36 character hex string (dashes excluded/included) or a 16 byte binary Buffer. - */ - constructor(input?: string | Buffer | UUID) { - if (typeof input === 'undefined') { - // The most common use case (blank id, new UUID() instance) - this.id = UUID.generate(); - } else if (input instanceof UUID) { - this[kId] = Buffer.from(input.id); - this.__id = input.__id; - } else if (ArrayBuffer.isView(input) && input.byteLength === BYTE_LENGTH) { - this.id = ensureBuffer(input); - } else if (typeof input === 'string') { - this.id = uuidHexStringToBuffer(input); - } else { - throw new BSONTypeError( - 'Argument passed in UUID constructor must be a UUID, a 16 byte Buffer or a 32/36 character hex string (dashes excluded/included, format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).' - ); - } - } - - /** - * The UUID bytes - * @readonly - */ - get id(): Buffer { - return this[kId]; - } - - set id(value: Buffer) { - this[kId] = value; - - if (UUID.cacheHexString) { - this.__id = bufferToUuidHexString(value); - } - } - - /** - * Generate a 16 byte uuid v4 buffer used in UUIDs - */ - - /** - * Returns the UUID id as a 32 or 36 character hex string representation, excluding/including dashes (defaults to 36 character dash separated) - * @param includeDashes - should the string exclude dash-separators. - * */ - toHexString(includeDashes = true): string { - if (UUID.cacheHexString && this.__id) { - return this.__id; - } - - const uuidHexString = bufferToUuidHexString(this.id, includeDashes); - - if (UUID.cacheHexString) { - this.__id = uuidHexString; - } - - return uuidHexString; - } - - /** - * Converts the id into a 36 character (dashes included) hex string, unless a encoding is specified. - */ - toString(encoding?: string): string { - return encoding ? this.id.toString(encoding) : this.toHexString(); - } - - /** - * Converts the id into its JSON string representation. - * A 36 character (dashes included) hex string in the format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx - */ - toJSON(): string { - return this.toHexString(); - } - - /** - * Compares the equality of this UUID with `otherID`. - * - * @param otherId - UUID instance to compare against. - */ - equals(otherId: string | Buffer | UUID): boolean { - if (!otherId) { - return false; - } - - if (otherId instanceof UUID) { - return otherId.id.equals(this.id); - } - - try { - return new UUID(otherId).id.equals(this.id); - } catch { - return false; - } - } - - /** - * Creates a Binary instance from the current UUID. - */ - toBinary(): Binary { - return new Binary(this.id, Binary.SUBTYPE_UUID); - } - - /** - * Generates a populated buffer containing a v4 uuid - */ - static generate(): Buffer { - const bytes = randomBytes(BYTE_LENGTH); - - // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - // Kindly borrowed from https://github.com/uuidjs/uuid/blob/master/src/v4.js - bytes[6] = (bytes[6] & 0x0f) | 0x40; - bytes[8] = (bytes[8] & 0x3f) | 0x80; - - return Buffer.from(bytes); - } - - /** - * Checks if a value is a valid bson UUID - * @param input - UUID, string or Buffer to validate. - */ - static isValid(input: string | Buffer | UUID): boolean { - if (!input) { - return false; - } - - if (input instanceof UUID) { - return true; - } - - if (typeof input === 'string') { - return uuidValidateString(input); - } - - if (isUint8Array(input)) { - // check for length & uuid version (https://tools.ietf.org/html/rfc4122#section-4.1.3) - if (input.length !== BYTE_LENGTH) { - return false; - } - - try { - // get this byte as hex: xxxxxxxx-xxxx-XXxx-xxxx-xxxxxxxxxxxx - // check first part as uuid version: xxxxxxxx-xxxx-Xxxx-xxxx-xxxxxxxxxxxx - return parseInt(input[6].toString(16)[0], 10) === Binary.SUBTYPE_UUID; - } catch { - return false; - } - } - - return false; - } - - /** - * Creates an UUID from a hex string representation of an UUID. - * @param hexString - 32 or 36 character hex string (dashes excluded/included). - */ - static createFromHexString(hexString: string): UUID { - const buffer = uuidHexStringToBuffer(hexString); - return new UUID(buffer); - } - - /** - * Converts to a string representation of this Id. - * - * @returns return the 36 character hex string representation. - * @internal - */ - [Symbol.for('nodejs.util.inspect.custom')](): string { - return this.inspect(); - } - - inspect(): string { - return `new UUID("${this.toHexString()}")`; - } -} - -Object.defineProperty(UUID.prototype, '_bsontype', { value: 'UUID' }); diff --git a/food-ordering-app/server/node_modules/call-bind-apply-helpers/.eslintrc b/food-ordering-app/server/node_modules/call-bind-apply-helpers/.eslintrc new file mode 100644 index 000000000..201e859be --- /dev/null +++ b/food-ordering-app/server/node_modules/call-bind-apply-helpers/.eslintrc @@ -0,0 +1,17 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "func-name-matching": 0, + "id-length": 0, + "new-cap": [2, { + "capIsNewExceptions": [ + "GetIntrinsic", + ], + }], + "no-extra-parens": 0, + "no-magic-numbers": 0, + }, +} diff --git a/food-ordering-app/server/node_modules/call-bind-apply-helpers/.github/FUNDING.yml b/food-ordering-app/server/node_modules/call-bind-apply-helpers/.github/FUNDING.yml new file mode 100644 index 000000000..0011e9d65 --- /dev/null +++ b/food-ordering-app/server/node_modules/call-bind-apply-helpers/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/call-bind-apply-helpers +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/food-ordering-app/server/node_modules/call-bind-apply-helpers/.nycrc b/food-ordering-app/server/node_modules/call-bind-apply-helpers/.nycrc new file mode 100644 index 000000000..bdd626ce9 --- /dev/null +++ b/food-ordering-app/server/node_modules/call-bind-apply-helpers/.nycrc @@ -0,0 +1,9 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "exclude": [ + "coverage", + "test" + ] +} diff --git a/food-ordering-app/server/node_modules/call-bind-apply-helpers/CHANGELOG.md b/food-ordering-app/server/node_modules/call-bind-apply-helpers/CHANGELOG.md new file mode 100644 index 000000000..24849428b --- /dev/null +++ b/food-ordering-app/server/node_modules/call-bind-apply-helpers/CHANGELOG.md @@ -0,0 +1,30 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.0.2](https://github.com/ljharb/call-bind-apply-helpers/compare/v1.0.1...v1.0.2) - 2025-02-12 + +### Commits + +- [types] improve inferred types [`e6f9586`](https://github.com/ljharb/call-bind-apply-helpers/commit/e6f95860a3c72879cb861a858cdfb8138fbedec1) +- [Dev Deps] update `@arethetypeswrong/cli`, `@ljharb/tsconfig`, `@types/tape`, `es-value-fixtures`, `for-each`, `has-strict-mode`, `object-inspect` [`e43d540`](https://github.com/ljharb/call-bind-apply-helpers/commit/e43d5409f97543bfbb11f345d47d8ce4e066d8c1) + +## [v1.0.1](https://github.com/ljharb/call-bind-apply-helpers/compare/v1.0.0...v1.0.1) - 2024-12-08 + +### Commits + +- [types] `reflectApply`: fix types [`4efc396`](https://github.com/ljharb/call-bind-apply-helpers/commit/4efc3965351a4f02cc55e836fa391d3d11ef2ef8) +- [Fix] `reflectApply`: oops, Reflect is not a function [`83cc739`](https://github.com/ljharb/call-bind-apply-helpers/commit/83cc7395de6b79b7730bdf092f1436f0b1263c75) +- [Dev Deps] update `@arethetypeswrong/cli` [`80bd5d3`](https://github.com/ljharb/call-bind-apply-helpers/commit/80bd5d3ae58b4f6b6995ce439dd5a1bcb178a940) + +## v1.0.0 - 2024-12-05 + +### Commits + +- Initial implementation, tests, readme [`7879629`](https://github.com/ljharb/call-bind-apply-helpers/commit/78796290f9b7430c9934d6f33d94ae9bc89fce04) +- Initial commit [`3f1dc16`](https://github.com/ljharb/call-bind-apply-helpers/commit/3f1dc164afc43285631b114a5f9dd9137b2b952f) +- npm init [`081df04`](https://github.com/ljharb/call-bind-apply-helpers/commit/081df048c312fcee400922026f6e97281200a603) +- Only apps should have lockfiles [`5b9ca0f`](https://github.com/ljharb/call-bind-apply-helpers/commit/5b9ca0fe8101ebfaf309c549caac4e0a017ed930) diff --git a/food-ordering-app/server/node_modules/call-bind-apply-helpers/LICENSE b/food-ordering-app/server/node_modules/call-bind-apply-helpers/LICENSE new file mode 100644 index 000000000..f82f38963 --- /dev/null +++ b/food-ordering-app/server/node_modules/call-bind-apply-helpers/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/food-ordering-app/server/node_modules/call-bind-apply-helpers/README.md b/food-ordering-app/server/node_modules/call-bind-apply-helpers/README.md new file mode 100644 index 000000000..8fc0dae1b --- /dev/null +++ b/food-ordering-app/server/node_modules/call-bind-apply-helpers/README.md @@ -0,0 +1,62 @@ +# call-bind-apply-helpers [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![dependency status][deps-svg]][deps-url] +[![dev dependency status][dev-deps-svg]][dev-deps-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +Helper functions around Function call/apply/bind, for use in `call-bind`. + +The only packages that should likely ever use this package directly are `call-bind` and `get-intrinsic`. +Please use `call-bind` unless you have a very good reason not to. + +## Getting started + +```sh +npm install --save call-bind-apply-helpers +``` + +## Usage/Examples + +```js +const assert = require('assert'); +const callBindBasic = require('call-bind-apply-helpers'); + +function f(a, b) { + assert.equal(this, 1); + assert.equal(a, 2); + assert.equal(b, 3); + assert.equal(arguments.length, 2); +} + +const fBound = callBindBasic([f, 1]); + +delete Function.prototype.call; +delete Function.prototype.bind; + +fBound(2, 3); +``` + +## Tests + +Clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.org/package/call-bind-apply-helpers +[npm-version-svg]: https://versionbadg.es/ljharb/call-bind-apply-helpers.svg +[deps-svg]: https://david-dm.org/ljharb/call-bind-apply-helpers.svg +[deps-url]: https://david-dm.org/ljharb/call-bind-apply-helpers +[dev-deps-svg]: https://david-dm.org/ljharb/call-bind-apply-helpers/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/call-bind-apply-helpers#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/call-bind-apply-helpers.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/call-bind-apply-helpers.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/call-bind-apply-helpers.svg +[downloads-url]: https://npm-stat.com/charts.html?package=call-bind-apply-helpers +[codecov-image]: https://codecov.io/gh/ljharb/call-bind-apply-helpers/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/call-bind-apply-helpers/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/call-bind-apply-helpers +[actions-url]: https://github.com/ljharb/call-bind-apply-helpers/actions diff --git a/food-ordering-app/server/node_modules/call-bind-apply-helpers/actualApply.d.ts b/food-ordering-app/server/node_modules/call-bind-apply-helpers/actualApply.d.ts new file mode 100644 index 000000000..b87286a21 --- /dev/null +++ b/food-ordering-app/server/node_modules/call-bind-apply-helpers/actualApply.d.ts @@ -0,0 +1 @@ +export = Reflect.apply; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/call-bind-apply-helpers/actualApply.js b/food-ordering-app/server/node_modules/call-bind-apply-helpers/actualApply.js new file mode 100644 index 000000000..ffa51355d --- /dev/null +++ b/food-ordering-app/server/node_modules/call-bind-apply-helpers/actualApply.js @@ -0,0 +1,10 @@ +'use strict'; + +var bind = require('function-bind'); + +var $apply = require('./functionApply'); +var $call = require('./functionCall'); +var $reflectApply = require('./reflectApply'); + +/** @type {import('./actualApply')} */ +module.exports = $reflectApply || bind.call($call, $apply); diff --git a/food-ordering-app/server/node_modules/call-bind-apply-helpers/applyBind.d.ts b/food-ordering-app/server/node_modules/call-bind-apply-helpers/applyBind.d.ts new file mode 100644 index 000000000..d176c1ab3 --- /dev/null +++ b/food-ordering-app/server/node_modules/call-bind-apply-helpers/applyBind.d.ts @@ -0,0 +1,19 @@ +import actualApply from './actualApply'; + +type TupleSplitHead = T['length'] extends N + ? T + : T extends [...infer R, any] + ? TupleSplitHead + : never + +type TupleSplitTail = O['length'] extends N + ? T + : T extends [infer F, ...infer R] + ? TupleSplitTail<[...R], N, [...O, F]> + : never + +type TupleSplit = [TupleSplitHead, TupleSplitTail] + +declare function applyBind(...args: TupleSplit, 2>[1]): ReturnType; + +export = applyBind; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/call-bind-apply-helpers/applyBind.js b/food-ordering-app/server/node_modules/call-bind-apply-helpers/applyBind.js new file mode 100644 index 000000000..d2b772314 --- /dev/null +++ b/food-ordering-app/server/node_modules/call-bind-apply-helpers/applyBind.js @@ -0,0 +1,10 @@ +'use strict'; + +var bind = require('function-bind'); +var $apply = require('./functionApply'); +var actualApply = require('./actualApply'); + +/** @type {import('./applyBind')} */ +module.exports = function applyBind() { + return actualApply(bind, $apply, arguments); +}; diff --git a/food-ordering-app/server/node_modules/call-bind-apply-helpers/functionApply.d.ts b/food-ordering-app/server/node_modules/call-bind-apply-helpers/functionApply.d.ts new file mode 100644 index 000000000..1f6e11b3d --- /dev/null +++ b/food-ordering-app/server/node_modules/call-bind-apply-helpers/functionApply.d.ts @@ -0,0 +1 @@ +export = Function.prototype.apply; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/call-bind-apply-helpers/functionApply.js b/food-ordering-app/server/node_modules/call-bind-apply-helpers/functionApply.js new file mode 100644 index 000000000..c71df9c2b --- /dev/null +++ b/food-ordering-app/server/node_modules/call-bind-apply-helpers/functionApply.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./functionApply')} */ +module.exports = Function.prototype.apply; diff --git a/food-ordering-app/server/node_modules/call-bind-apply-helpers/functionCall.d.ts b/food-ordering-app/server/node_modules/call-bind-apply-helpers/functionCall.d.ts new file mode 100644 index 000000000..15e93df35 --- /dev/null +++ b/food-ordering-app/server/node_modules/call-bind-apply-helpers/functionCall.d.ts @@ -0,0 +1 @@ +export = Function.prototype.call; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/call-bind-apply-helpers/functionCall.js b/food-ordering-app/server/node_modules/call-bind-apply-helpers/functionCall.js new file mode 100644 index 000000000..7a8d87357 --- /dev/null +++ b/food-ordering-app/server/node_modules/call-bind-apply-helpers/functionCall.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./functionCall')} */ +module.exports = Function.prototype.call; diff --git a/food-ordering-app/server/node_modules/call-bind-apply-helpers/index.d.ts b/food-ordering-app/server/node_modules/call-bind-apply-helpers/index.d.ts new file mode 100644 index 000000000..541516bd0 --- /dev/null +++ b/food-ordering-app/server/node_modules/call-bind-apply-helpers/index.d.ts @@ -0,0 +1,64 @@ +type RemoveFromTuple< + Tuple extends readonly unknown[], + RemoveCount extends number, + Index extends 1[] = [] +> = Index["length"] extends RemoveCount + ? Tuple + : Tuple extends [infer First, ...infer Rest] + ? RemoveFromTuple + : Tuple; + +type ConcatTuples< + Prefix extends readonly unknown[], + Suffix extends readonly unknown[] +> = [...Prefix, ...Suffix]; + +type ExtractFunctionParams = T extends (this: infer TThis, ...args: infer P extends readonly unknown[]) => infer R + ? { thisArg: TThis; params: P; returnType: R } + : never; + +type BindFunction< + T extends (this: any, ...args: any[]) => any, + TThis, + TBoundArgs extends readonly unknown[], + ReceiverBound extends boolean +> = ExtractFunctionParams extends { + thisArg: infer OrigThis; + params: infer P extends readonly unknown[]; + returnType: infer R; +} + ? ReceiverBound extends true + ? (...args: RemoveFromTuple>) => R extends [OrigThis, ...infer Rest] + ? [TThis, ...Rest] // Replace `this` with `thisArg` + : R + : >>( + thisArg: U, + ...args: RemainingArgs + ) => R extends [OrigThis, ...infer Rest] + ? [U, ...ConcatTuples] // Preserve bound args in return type + : R + : never; + +declare function callBind< + const T extends (this: any, ...args: any[]) => any, + Extracted extends ExtractFunctionParams, + const TBoundArgs extends Partial & readonly unknown[], + const TThis extends Extracted["thisArg"] +>( + args: [fn: T, thisArg: TThis, ...boundArgs: TBoundArgs] +): BindFunction; + +declare function callBind< + const T extends (this: any, ...args: any[]) => any, + Extracted extends ExtractFunctionParams, + const TBoundArgs extends Partial & readonly unknown[] +>( + args: [fn: T, ...boundArgs: TBoundArgs] +): BindFunction; + +declare function callBind( + args: [fn: Exclude, ...rest: TArgs] +): never; + +// export as namespace callBind; +export = callBind; diff --git a/food-ordering-app/server/node_modules/call-bind-apply-helpers/index.js b/food-ordering-app/server/node_modules/call-bind-apply-helpers/index.js new file mode 100644 index 000000000..2f6dab4c1 --- /dev/null +++ b/food-ordering-app/server/node_modules/call-bind-apply-helpers/index.js @@ -0,0 +1,15 @@ +'use strict'; + +var bind = require('function-bind'); +var $TypeError = require('es-errors/type'); + +var $call = require('./functionCall'); +var $actualApply = require('./actualApply'); + +/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */ +module.exports = function callBindBasic(args) { + if (args.length < 1 || typeof args[0] !== 'function') { + throw new $TypeError('a function is required'); + } + return $actualApply(bind, $call, args); +}; diff --git a/food-ordering-app/server/node_modules/call-bind-apply-helpers/package.json b/food-ordering-app/server/node_modules/call-bind-apply-helpers/package.json new file mode 100644 index 000000000..923b8be2f --- /dev/null +++ b/food-ordering-app/server/node_modules/call-bind-apply-helpers/package.json @@ -0,0 +1,85 @@ +{ + "name": "call-bind-apply-helpers", + "version": "1.0.2", + "description": "Helper functions around Function call/apply/bind, for use in `call-bind`", + "main": "index.js", + "exports": { + ".": "./index.js", + "./actualApply": "./actualApply.js", + "./applyBind": "./applyBind.js", + "./functionApply": "./functionApply.js", + "./functionCall": "./functionCall.js", + "./reflectApply": "./reflectApply.js", + "./package.json": "./package.json" + }, + "scripts": { + "prepack": "npmignore --auto --commentLines=auto", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "prelint": "evalmd README.md", + "lint": "eslint --ext=.js,.mjs .", + "postlint": "tsc -p . && attw -P", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>=10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/call-bind-apply-helpers.git" + }, + "author": "Jordan Harband ", + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/call-bind-apply-helpers/issues" + }, + "homepage": "https://github.com/ljharb/call-bind-apply-helpers#readme", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.3", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.3", + "@types/for-each": "^0.3.3", + "@types/function-bind": "^1.1.10", + "@types/object-inspect": "^1.13.0", + "@types/tape": "^5.8.1", + "auto-changelog": "^2.5.0", + "encoding": "^0.1.13", + "es-value-fixtures": "^1.7.1", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "for-each": "^0.3.5", + "has-strict-mode": "^1.1.0", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "object-inspect": "^1.13.4", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "testling": { + "files": "test/index.js" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/food-ordering-app/server/node_modules/call-bind-apply-helpers/reflectApply.d.ts b/food-ordering-app/server/node_modules/call-bind-apply-helpers/reflectApply.d.ts new file mode 100644 index 000000000..6b2ae764c --- /dev/null +++ b/food-ordering-app/server/node_modules/call-bind-apply-helpers/reflectApply.d.ts @@ -0,0 +1,3 @@ +declare const reflectApply: false | typeof Reflect.apply; + +export = reflectApply; diff --git a/food-ordering-app/server/node_modules/call-bind-apply-helpers/reflectApply.js b/food-ordering-app/server/node_modules/call-bind-apply-helpers/reflectApply.js new file mode 100644 index 000000000..3d03caa69 --- /dev/null +++ b/food-ordering-app/server/node_modules/call-bind-apply-helpers/reflectApply.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./reflectApply')} */ +module.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply; diff --git a/food-ordering-app/server/node_modules/call-bind-apply-helpers/test/index.js b/food-ordering-app/server/node_modules/call-bind-apply-helpers/test/index.js new file mode 100644 index 000000000..1cdc89ed4 --- /dev/null +++ b/food-ordering-app/server/node_modules/call-bind-apply-helpers/test/index.js @@ -0,0 +1,63 @@ +'use strict'; + +var callBind = require('../'); +var hasStrictMode = require('has-strict-mode')(); +var forEach = require('for-each'); +var inspect = require('object-inspect'); +var v = require('es-value-fixtures'); + +var test = require('tape'); + +test('callBindBasic', function (t) { + forEach(v.nonFunctions, function (nonFunction) { + t['throws']( + // @ts-expect-error + function () { callBind([nonFunction]); }, + TypeError, + inspect(nonFunction) + ' is not a function' + ); + }); + + var sentinel = { sentinel: true }; + /** @type {(this: T, a: A, b: B) => [T | undefined, A, B]} */ + var func = function (a, b) { + // eslint-disable-next-line no-invalid-this + return [!hasStrictMode && this === global ? undefined : this, a, b]; + }; + t.equal(func.length, 2, 'original function length is 2'); + + /** type {(thisArg: unknown, a: number, b: number) => [unknown, number, number]} */ + var bound = callBind([func]); + /** type {((a: number, b: number) => [typeof sentinel, typeof a, typeof b])} */ + var boundR = callBind([func, sentinel]); + /** type {((b: number) => [typeof sentinel, number, typeof b])} */ + var boundArg = callBind([func, sentinel, /** @type {const} */ (1)]); + + // @ts-expect-error + t.deepEqual(bound(), [undefined, undefined, undefined], 'bound func with no args'); + + // @ts-expect-error + t.deepEqual(func(), [undefined, undefined, undefined], 'unbound func with too few args'); + // @ts-expect-error + t.deepEqual(bound(1, 2), [hasStrictMode ? 1 : Object(1), 2, undefined], 'bound func too few args'); + // @ts-expect-error + t.deepEqual(boundR(), [sentinel, undefined, undefined], 'bound func with receiver, with too few args'); + // @ts-expect-error + t.deepEqual(boundArg(), [sentinel, 1, undefined], 'bound func with receiver and arg, with too few args'); + + t.deepEqual(func(1, 2), [undefined, 1, 2], 'unbound func with right args'); + t.deepEqual(bound(1, 2, 3), [hasStrictMode ? 1 : Object(1), 2, 3], 'bound func with right args'); + t.deepEqual(boundR(1, 2), [sentinel, 1, 2], 'bound func with receiver, with right args'); + t.deepEqual(boundArg(2), [sentinel, 1, 2], 'bound func with receiver and arg, with right arg'); + + // @ts-expect-error + t.deepEqual(func(1, 2, 3), [undefined, 1, 2], 'unbound func with too many args'); + // @ts-expect-error + t.deepEqual(bound(1, 2, 3, 4), [hasStrictMode ? 1 : Object(1), 2, 3], 'bound func with too many args'); + // @ts-expect-error + t.deepEqual(boundR(1, 2, 3), [sentinel, 1, 2], 'bound func with receiver, with too many args'); + // @ts-expect-error + t.deepEqual(boundArg(2, 3), [sentinel, 1, 2], 'bound func with receiver and arg, with too many args'); + + t.end(); +}); diff --git a/food-ordering-app/server/node_modules/call-bind-apply-helpers/tsconfig.json b/food-ordering-app/server/node_modules/call-bind-apply-helpers/tsconfig.json new file mode 100644 index 000000000..aef999308 --- /dev/null +++ b/food-ordering-app/server/node_modules/call-bind-apply-helpers/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "es2021", + }, + "exclude": [ + "coverage", + ], +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/call-bind/.eslintignore b/food-ordering-app/server/node_modules/call-bind/.eslintignore deleted file mode 100644 index 404abb221..000000000 --- a/food-ordering-app/server/node_modules/call-bind/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -coverage/ diff --git a/food-ordering-app/server/node_modules/call-bind/.eslintrc b/food-ordering-app/server/node_modules/call-bind/.eslintrc deleted file mode 100644 index e5d3c9a94..000000000 --- a/food-ordering-app/server/node_modules/call-bind/.eslintrc +++ /dev/null @@ -1,17 +0,0 @@ -{ - "root": true, - - "extends": "@ljharb", - - "rules": { - "func-name-matching": 0, - "id-length": 0, - "new-cap": [2, { - "capIsNewExceptions": [ - "GetIntrinsic", - ], - }], - "no-magic-numbers": 0, - "operator-linebreak": [2, "before"], - }, -} diff --git a/food-ordering-app/server/node_modules/call-bind/.github/FUNDING.yml b/food-ordering-app/server/node_modules/call-bind/.github/FUNDING.yml deleted file mode 100644 index c70c2ecdb..000000000 --- a/food-ordering-app/server/node_modules/call-bind/.github/FUNDING.yml +++ /dev/null @@ -1,12 +0,0 @@ -# These are supported funding model platforms - -github: [ljharb] -patreon: # Replace with a single Patreon username -open_collective: # Replace with a single Open Collective username -ko_fi: # Replace with a single Ko-fi username -tidelift: npm/call-bind -community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry -liberapay: # Replace with a single Liberapay username -issuehunt: # Replace with a single IssueHunt username -otechie: # Replace with a single Otechie username -custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/food-ordering-app/server/node_modules/call-bind/CHANGELOG.md b/food-ordering-app/server/node_modules/call-bind/CHANGELOG.md deleted file mode 100644 index 62a37279e..000000000 --- a/food-ordering-app/server/node_modules/call-bind/CHANGELOG.md +++ /dev/null @@ -1,42 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [v1.0.2](https://github.com/ljharb/call-bind/compare/v1.0.1...v1.0.2) - 2021-01-11 - -### Commits - -- [Fix] properly include the receiver in the bound length [`dbae7bc`](https://github.com/ljharb/call-bind/commit/dbae7bc676c079a0d33c0a43e9ef92cb7b01345d) - -## [v1.0.1](https://github.com/ljharb/call-bind/compare/v1.0.0...v1.0.1) - 2021-01-08 - -### Commits - -- [Tests] migrate tests to Github Actions [`b6db284`](https://github.com/ljharb/call-bind/commit/b6db284c36f8ccd195b88a6764fe84b7223a0da1) -- [meta] do not publish github action workflow files [`ec7fe46`](https://github.com/ljharb/call-bind/commit/ec7fe46e60cfa4764ee943d2755f5e5a366e578e) -- [Fix] preserve original function’s length when possible [`adbceaa`](https://github.com/ljharb/call-bind/commit/adbceaa3cac4b41ea78bb19d7ccdbaaf7e0bdadb) -- [Tests] gather coverage data on every job [`d69e23c`](https://github.com/ljharb/call-bind/commit/d69e23cc65f101ba1d4c19bb07fa8eb0ec624be8) -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `tape` [`2fd3586`](https://github.com/ljharb/call-bind/commit/2fd3586c5d47b335364c14293114c6b625ae1f71) -- [Deps] update `get-intrinsic` [`f23e931`](https://github.com/ljharb/call-bind/commit/f23e9318cc271c2add8bb38cfded85ee7baf8eee) -- [Deps] update `get-intrinsic` [`72d9f44`](https://github.com/ljharb/call-bind/commit/72d9f44e184465ba8dd3fb48260bbcff234985f2) -- [meta] fix FUNDING.yml [`e723573`](https://github.com/ljharb/call-bind/commit/e723573438c5a68dcec31fb5d96ea6b7e4a93be8) -- [eslint] ignore coverage output [`15e76d2`](https://github.com/ljharb/call-bind/commit/15e76d28a5f43e504696401e5b31ebb78ee1b532) -- [meta] add Automatic Rebase and Require Allow Edits workflows [`8fa4dab`](https://github.com/ljharb/call-bind/commit/8fa4dabb23ba3dd7bb92c9571c1241c08b56e4b6) - -## v1.0.0 - 2020-10-30 - -### Commits - -- Initial commit [`306cf98`](https://github.com/ljharb/call-bind/commit/306cf98c7ec9e7ef66b653ec152277ac1381eb50) -- Tests [`e10d0bb`](https://github.com/ljharb/call-bind/commit/e10d0bbdadc7a10ecedc9a1c035112d3e368b8df) -- Implementation [`43852ed`](https://github.com/ljharb/call-bind/commit/43852eda0f187327b7fad2423ca972149a52bd65) -- npm init [`408f860`](https://github.com/ljharb/call-bind/commit/408f860b773a2f610805fd3613d0d71bac1b6249) -- [meta] add Automatic Rebase and Require Allow Edits workflows [`fb349b2`](https://github.com/ljharb/call-bind/commit/fb349b2e48defbec8b5ec8a8395cc8f69f220b13) -- [meta] add `auto-changelog` [`c4001fc`](https://github.com/ljharb/call-bind/commit/c4001fc43031799ef908211c98d3b0fb2b60fde4) -- [meta] add "funding"; create `FUNDING.yml` [`d4d6d29`](https://github.com/ljharb/call-bind/commit/d4d6d2974a14bc2e98830468eda7fe6d6a776717) -- [Tests] add `npm run lint` [`dedfb98`](https://github.com/ljharb/call-bind/commit/dedfb98bd0ecefb08ddb9a94061bd10cde4332af) -- Only apps should have lockfiles [`54ac776`](https://github.com/ljharb/call-bind/commit/54ac77653db45a7361dc153d2f478e743f110650) -- [meta] add `safe-publish-latest` [`9ea8e43`](https://github.com/ljharb/call-bind/commit/9ea8e435b950ce9b705559cd651039f9bf40140f) diff --git a/food-ordering-app/server/node_modules/call-bind/LICENSE b/food-ordering-app/server/node_modules/call-bind/LICENSE deleted file mode 100644 index 48f05d01d..000000000 --- a/food-ordering-app/server/node_modules/call-bind/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2020 Jordan Harband - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/food-ordering-app/server/node_modules/call-bind/README.md b/food-ordering-app/server/node_modules/call-bind/README.md deleted file mode 100644 index 53649eb46..000000000 --- a/food-ordering-app/server/node_modules/call-bind/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# call-bind -Robustly `.call.bind()` a function. diff --git a/food-ordering-app/server/node_modules/call-bind/callBound.js b/food-ordering-app/server/node_modules/call-bind/callBound.js deleted file mode 100644 index 8374adfd0..000000000 --- a/food-ordering-app/server/node_modules/call-bind/callBound.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -var GetIntrinsic = require('get-intrinsic'); - -var callBind = require('./'); - -var $indexOf = callBind(GetIntrinsic('String.prototype.indexOf')); - -module.exports = function callBoundIntrinsic(name, allowMissing) { - var intrinsic = GetIntrinsic(name, !!allowMissing); - if (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) { - return callBind(intrinsic); - } - return intrinsic; -}; diff --git a/food-ordering-app/server/node_modules/call-bind/index.js b/food-ordering-app/server/node_modules/call-bind/index.js deleted file mode 100644 index 6fa3e4af7..000000000 --- a/food-ordering-app/server/node_modules/call-bind/index.js +++ /dev/null @@ -1,47 +0,0 @@ -'use strict'; - -var bind = require('function-bind'); -var GetIntrinsic = require('get-intrinsic'); - -var $apply = GetIntrinsic('%Function.prototype.apply%'); -var $call = GetIntrinsic('%Function.prototype.call%'); -var $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply); - -var $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true); -var $defineProperty = GetIntrinsic('%Object.defineProperty%', true); -var $max = GetIntrinsic('%Math.max%'); - -if ($defineProperty) { - try { - $defineProperty({}, 'a', { value: 1 }); - } catch (e) { - // IE 8 has a broken defineProperty - $defineProperty = null; - } -} - -module.exports = function callBind(originalFunction) { - var func = $reflectApply(bind, $call, arguments); - if ($gOPD && $defineProperty) { - var desc = $gOPD(func, 'length'); - if (desc.configurable) { - // original length, plus the receiver, minus any additional arguments (after the receiver) - $defineProperty( - func, - 'length', - { value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) } - ); - } - } - return func; -}; - -var applyBind = function applyBind() { - return $reflectApply(bind, $apply, arguments); -}; - -if ($defineProperty) { - $defineProperty(module.exports, 'apply', { value: applyBind }); -} else { - module.exports.apply = applyBind; -} diff --git a/food-ordering-app/server/node_modules/call-bind/package.json b/food-ordering-app/server/node_modules/call-bind/package.json deleted file mode 100644 index 4360556a7..000000000 --- a/food-ordering-app/server/node_modules/call-bind/package.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "name": "call-bind", - "version": "1.0.2", - "description": "Robustly `.call.bind()` a function", - "main": "index.js", - "exports": { - ".": [ - { - "default": "./index.js" - }, - "./index.js" - ], - "./callBound": [ - { - "default": "./callBound.js" - }, - "./callBound.js" - ], - "./package.json": "./package.json" - }, - "scripts": { - "prepublish": "safe-publish-latest", - "lint": "eslint --ext=.js,.mjs .", - "pretest": "npm run lint", - "tests-only": "nyc tape 'test/*'", - "test": "npm run tests-only", - "posttest": "aud --production", - "version": "auto-changelog && git add CHANGELOG.md", - "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/ljharb/call-bind.git" - }, - "keywords": [ - "javascript", - "ecmascript", - "es", - "js", - "callbind", - "callbound", - "call", - "bind", - "bound", - "call-bind", - "call-bound", - "function", - "es-abstract" - ], - "author": "Jordan Harband ", - "funding": { - "url": "https://github.com/sponsors/ljharb" - }, - "license": "MIT", - "bugs": { - "url": "https://github.com/ljharb/call-bind/issues" - }, - "homepage": "https://github.com/ljharb/call-bind#readme", - "devDependencies": { - "@ljharb/eslint-config": "^17.3.0", - "aud": "^1.1.3", - "auto-changelog": "^2.2.1", - "eslint": "^7.17.0", - "nyc": "^10.3.2", - "safe-publish-latest": "^1.1.4", - "tape": "^5.1.1" - }, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "auto-changelog": { - "output": "CHANGELOG.md", - "template": "keepachangelog", - "unreleased": false, - "commitLimit": false, - "backfillLimit": false, - "hideCredit": true - } -} diff --git a/food-ordering-app/server/node_modules/call-bind/test/callBound.js b/food-ordering-app/server/node_modules/call-bind/test/callBound.js deleted file mode 100644 index 209ce3cc3..000000000 --- a/food-ordering-app/server/node_modules/call-bind/test/callBound.js +++ /dev/null @@ -1,55 +0,0 @@ -'use strict'; - -var test = require('tape'); - -var callBound = require('../callBound'); - -test('callBound', function (t) { - // static primitive - t.equal(callBound('Array.length'), Array.length, 'Array.length yields itself'); - t.equal(callBound('%Array.length%'), Array.length, '%Array.length% yields itself'); - - // static non-function object - t.equal(callBound('Array.prototype'), Array.prototype, 'Array.prototype yields itself'); - t.equal(callBound('%Array.prototype%'), Array.prototype, '%Array.prototype% yields itself'); - t.equal(callBound('Array.constructor'), Array.constructor, 'Array.constructor yields itself'); - t.equal(callBound('%Array.constructor%'), Array.constructor, '%Array.constructor% yields itself'); - - // static function - t.equal(callBound('Date.parse'), Date.parse, 'Date.parse yields itself'); - t.equal(callBound('%Date.parse%'), Date.parse, '%Date.parse% yields itself'); - - // prototype primitive - t.equal(callBound('Error.prototype.message'), Error.prototype.message, 'Error.prototype.message yields itself'); - t.equal(callBound('%Error.prototype.message%'), Error.prototype.message, '%Error.prototype.message% yields itself'); - - // prototype function - t.notEqual(callBound('Object.prototype.toString'), Object.prototype.toString, 'Object.prototype.toString does not yield itself'); - t.notEqual(callBound('%Object.prototype.toString%'), Object.prototype.toString, '%Object.prototype.toString% does not yield itself'); - t.equal(callBound('Object.prototype.toString')(true), Object.prototype.toString.call(true), 'call-bound Object.prototype.toString calls into the original'); - t.equal(callBound('%Object.prototype.toString%')(true), Object.prototype.toString.call(true), 'call-bound %Object.prototype.toString% calls into the original'); - - t['throws']( - function () { callBound('does not exist'); }, - SyntaxError, - 'nonexistent intrinsic throws' - ); - t['throws']( - function () { callBound('does not exist', true); }, - SyntaxError, - 'allowMissing arg still throws for unknown intrinsic' - ); - - /* globals WeakRef: false */ - t.test('real but absent intrinsic', { skip: typeof WeakRef !== 'undefined' }, function (st) { - st['throws']( - function () { callBound('WeakRef'); }, - TypeError, - 'real but absent intrinsic throws' - ); - st.equal(callBound('WeakRef', true), undefined, 'allowMissing arg avoids exception'); - st.end(); - }); - - t.end(); -}); diff --git a/food-ordering-app/server/node_modules/call-bind/test/index.js b/food-ordering-app/server/node_modules/call-bind/test/index.js deleted file mode 100644 index bf6769c7c..000000000 --- a/food-ordering-app/server/node_modules/call-bind/test/index.js +++ /dev/null @@ -1,66 +0,0 @@ -'use strict'; - -var callBind = require('../'); -var bind = require('function-bind'); - -var test = require('tape'); - -/* - * older engines have length nonconfigurable - * in io.js v3, it is configurable except on bound functions, hence the .bind() - */ -var functionsHaveConfigurableLengths = !!( - Object.getOwnPropertyDescriptor - && Object.getOwnPropertyDescriptor(bind.call(function () {}), 'length').configurable -); - -test('callBind', function (t) { - var sentinel = { sentinel: true }; - var func = function (a, b) { - // eslint-disable-next-line no-invalid-this - return [this, a, b]; - }; - t.equal(func.length, 2, 'original function length is 2'); - t.deepEqual(func(), [undefined, undefined, undefined], 'unbound func with too few args'); - t.deepEqual(func(1, 2), [undefined, 1, 2], 'unbound func with right args'); - t.deepEqual(func(1, 2, 3), [undefined, 1, 2], 'unbound func with too many args'); - - var bound = callBind(func); - t.equal(bound.length, func.length + 1, 'function length is preserved', { skip: !functionsHaveConfigurableLengths }); - t.deepEqual(bound(), [undefined, undefined, undefined], 'bound func with too few args'); - t.deepEqual(bound(1, 2), [1, 2, undefined], 'bound func with right args'); - t.deepEqual(bound(1, 2, 3), [1, 2, 3], 'bound func with too many args'); - - var boundR = callBind(func, sentinel); - t.equal(boundR.length, func.length, 'function length is preserved', { skip: !functionsHaveConfigurableLengths }); - t.deepEqual(boundR(), [sentinel, undefined, undefined], 'bound func with receiver, with too few args'); - t.deepEqual(boundR(1, 2), [sentinel, 1, 2], 'bound func with receiver, with right args'); - t.deepEqual(boundR(1, 2, 3), [sentinel, 1, 2], 'bound func with receiver, with too many args'); - - var boundArg = callBind(func, sentinel, 1); - t.equal(boundArg.length, func.length - 1, 'function length is preserved', { skip: !functionsHaveConfigurableLengths }); - t.deepEqual(boundArg(), [sentinel, 1, undefined], 'bound func with receiver and arg, with too few args'); - t.deepEqual(boundArg(2), [sentinel, 1, 2], 'bound func with receiver and arg, with right arg'); - t.deepEqual(boundArg(2, 3), [sentinel, 1, 2], 'bound func with receiver and arg, with too many args'); - - t.test('callBind.apply', function (st) { - var aBound = callBind.apply(func); - st.deepEqual(aBound(sentinel), [sentinel, undefined, undefined], 'apply-bound func with no args'); - st.deepEqual(aBound(sentinel, [1], 4), [sentinel, 1, undefined], 'apply-bound func with too few args'); - st.deepEqual(aBound(sentinel, [1, 2], 4), [sentinel, 1, 2], 'apply-bound func with right args'); - - var aBoundArg = callBind.apply(func); - st.deepEqual(aBoundArg(sentinel, [1, 2, 3], 4), [sentinel, 1, 2], 'apply-bound func with too many args'); - st.deepEqual(aBoundArg(sentinel, [1, 2], 4), [sentinel, 1, 2], 'apply-bound func with right args'); - st.deepEqual(aBoundArg(sentinel, [1], 4), [sentinel, 1, undefined], 'apply-bound func with too few args'); - - var aBoundR = callBind.apply(func, sentinel); - st.deepEqual(aBoundR([1, 2, 3], 4), [sentinel, 1, 2], 'apply-bound func with receiver and too many args'); - st.deepEqual(aBoundR([1, 2], 4), [sentinel, 1, 2], 'apply-bound func with receiver and right args'); - st.deepEqual(aBoundR([1], 4), [sentinel, 1, undefined], 'apply-bound func with receiver and too few args'); - - st.end(); - }); - - t.end(); -}); diff --git a/food-ordering-app/server/node_modules/call-bound/.eslintrc b/food-ordering-app/server/node_modules/call-bound/.eslintrc new file mode 100644 index 000000000..2612ed8fe --- /dev/null +++ b/food-ordering-app/server/node_modules/call-bound/.eslintrc @@ -0,0 +1,13 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "new-cap": [2, { + "capIsNewExceptions": [ + "GetIntrinsic", + ], + }], + }, +} diff --git a/food-ordering-app/server/node_modules/call-bound/.github/FUNDING.yml b/food-ordering-app/server/node_modules/call-bound/.github/FUNDING.yml new file mode 100644 index 000000000..2a2a13571 --- /dev/null +++ b/food-ordering-app/server/node_modules/call-bound/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/call-bound +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/food-ordering-app/server/node_modules/call-bound/.nycrc b/food-ordering-app/server/node_modules/call-bound/.nycrc new file mode 100644 index 000000000..bdd626ce9 --- /dev/null +++ b/food-ordering-app/server/node_modules/call-bound/.nycrc @@ -0,0 +1,9 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "exclude": [ + "coverage", + "test" + ] +} diff --git a/food-ordering-app/server/node_modules/call-bound/CHANGELOG.md b/food-ordering-app/server/node_modules/call-bound/CHANGELOG.md new file mode 100644 index 000000000..8bde4e9a5 --- /dev/null +++ b/food-ordering-app/server/node_modules/call-bound/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.0.4](https://github.com/ljharb/call-bound/compare/v1.0.3...v1.0.4) - 2025-03-03 + +### Commits + +- [types] improve types [`e648922`](https://github.com/ljharb/call-bound/commit/e6489222a9e54f350fbf952ceabe51fd8b6027ff) +- [Dev Deps] update `@arethetypeswrong/cli`, `@ljharb/tsconfig`, `@types/tape`, `es-value-fixtures`, `for-each`, `has-strict-mode`, `object-inspect` [`a42a5eb`](https://github.com/ljharb/call-bound/commit/a42a5ebe6c1b54fcdc7997c7dc64fdca9e936719) +- [Deps] update `call-bind-apply-helpers`, `get-intrinsic` [`f529eac`](https://github.com/ljharb/call-bound/commit/f529eac132404c17156bbc23ab2297a25d0f20b8) + +## [v1.0.3](https://github.com/ljharb/call-bound/compare/v1.0.2...v1.0.3) - 2024-12-15 + +### Commits + +- [Refactor] use `call-bind-apply-helpers` instead of `call-bind` [`5e0b134`](https://github.com/ljharb/call-bound/commit/5e0b13496df14fb7d05dae9412f088da8d3f75be) +- [Deps] update `get-intrinsic` [`41fc967`](https://github.com/ljharb/call-bound/commit/41fc96732a22c7b7e8f381f93ccc54bb6293be2e) +- [readme] fix example [`79a0137`](https://github.com/ljharb/call-bound/commit/79a0137723f7c6d09c9c05452bbf8d5efb5d6e49) +- [meta] add `sideEffects` flag [`08b07be`](https://github.com/ljharb/call-bound/commit/08b07be7f1c03f67dc6f3cdaf0906259771859f7) + +## [v1.0.2](https://github.com/ljharb/call-bound/compare/v1.0.1...v1.0.2) - 2024-12-10 + +### Commits + +- [Dev Deps] update `@arethetypeswrong/cli`, `@ljharb/tsconfig`, `gopd` [`e6a5ffe`](https://github.com/ljharb/call-bound/commit/e6a5ffe849368fe4f74dfd6cdeca1b9baa39e8d5) +- [Deps] update `call-bind`, `get-intrinsic` [`2aeb5b5`](https://github.com/ljharb/call-bound/commit/2aeb5b521dc2b2683d1345c753ea1161de2d1c14) +- [types] improve return type [`1a0c9fe`](https://github.com/ljharb/call-bound/commit/1a0c9fe3114471e7ca1f57d104e2efe713bb4871) + +## v1.0.1 - 2024-12-05 + +### Commits + +- Initial implementation, tests, readme, types [`6d94121`](https://github.com/ljharb/call-bound/commit/6d94121a9243602e506334069f7a03189fe3363d) +- Initial commit [`0eae867`](https://github.com/ljharb/call-bound/commit/0eae867334ea025c33e6e91cdecfc9df96680cf9) +- npm init [`71b2479`](https://github.com/ljharb/call-bound/commit/71b2479c6723e0b7d91a6b663613067e98b7b275) +- Only apps should have lockfiles [`c3754a9`](https://github.com/ljharb/call-bound/commit/c3754a949b7f9132b47e2d18c1729889736741eb) +- [actions] skip `npm ls` in node < 10 [`74275a5`](https://github.com/ljharb/call-bound/commit/74275a5186b8caf6309b6b97472bdcb0df4683a8) +- [Dev Deps] add missing peer dep [`1354de8`](https://github.com/ljharb/call-bound/commit/1354de8679413e4ae9c523d85f76fa7a5e032d97) diff --git a/food-ordering-app/server/node_modules/call-bound/LICENSE b/food-ordering-app/server/node_modules/call-bound/LICENSE new file mode 100644 index 000000000..f82f38963 --- /dev/null +++ b/food-ordering-app/server/node_modules/call-bound/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/food-ordering-app/server/node_modules/call-bound/README.md b/food-ordering-app/server/node_modules/call-bound/README.md new file mode 100644 index 000000000..a44e43e56 --- /dev/null +++ b/food-ordering-app/server/node_modules/call-bound/README.md @@ -0,0 +1,53 @@ +# call-bound [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![dependency status][deps-svg]][deps-url] +[![dev dependency status][dev-deps-svg]][dev-deps-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +Robust call-bound JavaScript intrinsics, using `call-bind` and `get-intrinsic`. + +## Getting started + +```sh +npm install --save call-bound +``` + +## Usage/Examples + +```js +const assert = require('assert'); +const callBound = require('call-bound'); + +const slice = callBound('Array.prototype.slice'); + +delete Function.prototype.call; +delete Function.prototype.bind; +delete Array.prototype.slice; + +assert.deepEqual(slice([1, 2, 3, 4], 1, -1), [2, 3]); +``` + +## Tests + +Clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.org/package/call-bound +[npm-version-svg]: https://versionbadg.es/ljharb/call-bound.svg +[deps-svg]: https://david-dm.org/ljharb/call-bound.svg +[deps-url]: https://david-dm.org/ljharb/call-bound +[dev-deps-svg]: https://david-dm.org/ljharb/call-bound/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/call-bound#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/call-bound.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/call-bound.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/call-bound.svg +[downloads-url]: https://npm-stat.com/charts.html?package=call-bound +[codecov-image]: https://codecov.io/gh/ljharb/call-bound/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/call-bound/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/call-bound +[actions-url]: https://github.com/ljharb/call-bound/actions diff --git a/food-ordering-app/server/node_modules/call-bound/index.d.ts b/food-ordering-app/server/node_modules/call-bound/index.d.ts new file mode 100644 index 000000000..5562f00ed --- /dev/null +++ b/food-ordering-app/server/node_modules/call-bound/index.d.ts @@ -0,0 +1,94 @@ +type Intrinsic = typeof globalThis; + +type IntrinsicName = keyof Intrinsic | `%${keyof Intrinsic}%`; + +type IntrinsicPath = IntrinsicName | `${StripPercents}.${string}` | `%${StripPercents}.${string}%`; + +type AllowMissing = boolean; + +type StripPercents = T extends `%${infer U}%` ? U : T; + +type BindMethodPrecise = + F extends (this: infer This, ...args: infer Args) => infer R + ? (obj: This, ...args: Args) => R + : F extends { + (this: infer This1, ...args: infer Args1): infer R1; + (this: infer This2, ...args: infer Args2): infer R2 + } + ? { + (obj: This1, ...args: Args1): R1; + (obj: This2, ...args: Args2): R2 + } + : never + +// Extract method type from a prototype +type GetPrototypeMethod = + (typeof globalThis)[T] extends { prototype: any } + ? M extends keyof (typeof globalThis)[T]['prototype'] + ? (typeof globalThis)[T]['prototype'][M] + : never + : never + +// Get static property/method +type GetStaticMember = + P extends keyof (typeof globalThis)[T] ? (typeof globalThis)[T][P] : never + +// Type that maps string path to actual bound function or value with better precision +type BoundIntrinsic = + S extends `${infer Obj}.prototype.${infer Method}` + ? Obj extends keyof typeof globalThis + ? BindMethodPrecise> + : unknown + : S extends `${infer Obj}.${infer Prop}` + ? Obj extends keyof typeof globalThis + ? GetStaticMember + : unknown + : unknown + +declare function arraySlice(array: readonly T[], start?: number, end?: number): T[]; +declare function arraySlice(array: ArrayLike, start?: number, end?: number): T[]; +declare function arraySlice(array: IArguments, start?: number, end?: number): T[]; + +// Special cases for methods that need explicit typing +interface SpecialCases { + '%Object.prototype.isPrototypeOf%': (thisArg: {}, obj: unknown) => boolean; + '%String.prototype.replace%': { + (str: string, searchValue: string | RegExp, replaceValue: string): string; + (str: string, searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string + }; + '%Object.prototype.toString%': (obj: {}) => string; + '%Object.prototype.hasOwnProperty%': (obj: {}, v: PropertyKey) => boolean; + '%Array.prototype.slice%': typeof arraySlice; + '%Array.prototype.map%': (array: readonly T[], callbackfn: (value: T, index: number, array: readonly T[]) => U, thisArg?: any) => U[]; + '%Array.prototype.filter%': (array: readonly T[], predicate: (value: T, index: number, array: readonly T[]) => unknown, thisArg?: any) => T[]; + '%Array.prototype.indexOf%': (array: readonly T[], searchElement: T, fromIndex?: number) => number; + '%Function.prototype.apply%': (fn: (...args: A) => R, thisArg: any, args: A) => R; + '%Function.prototype.call%': (fn: (...args: A) => R, thisArg: any, ...args: A) => R; + '%Function.prototype.bind%': (fn: (...args: A) => R, thisArg: any, ...args: A) => (...remainingArgs: A) => R; + '%Promise.prototype.then%': { + (promise: Promise, onfulfilled: (value: T) => R | PromiseLike): Promise; + (promise: Promise, onfulfilled: ((value: T) => R | PromiseLike) | undefined | null, onrejected: (reason: any) => R | PromiseLike): Promise; + }; + '%RegExp.prototype.test%': (regexp: RegExp, str: string) => boolean; + '%RegExp.prototype.exec%': (regexp: RegExp, str: string) => RegExpExecArray | null; + '%Error.prototype.toString%': (error: Error) => string; + '%TypeError.prototype.toString%': (error: TypeError) => string; + '%String.prototype.split%': ( + obj: unknown, + splitter: string | RegExp | { + [Symbol.split](string: string, limit?: number): string[]; + }, + limit?: number | undefined + ) => string[]; +} + +/** + * Returns a bound function for a prototype method, or a value for a static property. + * + * @param name - The name of the intrinsic (e.g. 'Array.prototype.slice') + * @param {AllowMissing} [allowMissing] - Whether to allow missing intrinsics (default: false) + */ +declare function callBound, S extends IntrinsicPath>(name: K, allowMissing?: AllowMissing): SpecialCases[`%${StripPercents}%`]; +declare function callBound, S extends IntrinsicPath>(name: S, allowMissing?: AllowMissing): BoundIntrinsic; + +export = callBound; diff --git a/food-ordering-app/server/node_modules/call-bound/index.js b/food-ordering-app/server/node_modules/call-bound/index.js new file mode 100644 index 000000000..e9ade749d --- /dev/null +++ b/food-ordering-app/server/node_modules/call-bound/index.js @@ -0,0 +1,19 @@ +'use strict'; + +var GetIntrinsic = require('get-intrinsic'); + +var callBindBasic = require('call-bind-apply-helpers'); + +/** @type {(thisArg: string, searchString: string, position?: number) => number} */ +var $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]); + +/** @type {import('.')} */ +module.exports = function callBoundIntrinsic(name, allowMissing) { + /* eslint no-extra-parens: 0 */ + + var intrinsic = /** @type {(this: unknown, ...args: unknown[]) => unknown} */ (GetIntrinsic(name, !!allowMissing)); + if (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) { + return callBindBasic(/** @type {const} */ ([intrinsic])); + } + return intrinsic; +}; diff --git a/food-ordering-app/server/node_modules/call-bound/package.json b/food-ordering-app/server/node_modules/call-bound/package.json new file mode 100644 index 000000000..d542db430 --- /dev/null +++ b/food-ordering-app/server/node_modules/call-bound/package.json @@ -0,0 +1,99 @@ +{ + "name": "call-bound", + "version": "1.0.4", + "description": "Robust call-bound JavaScript intrinsics, using `call-bind` and `get-intrinsic`.", + "main": "index.js", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=auto", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "prelint": "evalmd README.md", + "lint": "eslint --ext=.js,.mjs .", + "postlint": "tsc -p . && attw -P", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>=10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/call-bound.git" + }, + "keywords": [ + "javascript", + "ecmascript", + "es", + "js", + "callbind", + "callbound", + "call", + "bind", + "bound", + "call-bind", + "call-bound", + "function", + "es-abstract" + ], + "author": "Jordan Harband ", + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/call-bound/issues" + }, + "homepage": "https://github.com/ljharb/call-bound#readme", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.4", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.3.0", + "@types/call-bind": "^1.0.5", + "@types/get-intrinsic": "^1.2.3", + "@types/tape": "^5.8.1", + "auto-changelog": "^2.5.0", + "encoding": "^0.1.13", + "es-value-fixtures": "^1.7.1", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "for-each": "^0.3.5", + "gopd": "^1.2.0", + "has-strict-mode": "^1.1.0", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "object-inspect": "^1.13.4", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "testling": { + "files": "test/index.js" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/food-ordering-app/server/node_modules/call-bound/test/index.js b/food-ordering-app/server/node_modules/call-bound/test/index.js new file mode 100644 index 000000000..a2fc9f0f2 --- /dev/null +++ b/food-ordering-app/server/node_modules/call-bound/test/index.js @@ -0,0 +1,61 @@ +'use strict'; + +var test = require('tape'); + +var callBound = require('../'); + +/** @template {true} T @template U @typedef {T extends U ? T : never} AssertType */ + +test('callBound', function (t) { + // static primitive + t.equal(callBound('Array.length'), Array.length, 'Array.length yields itself'); + t.equal(callBound('%Array.length%'), Array.length, '%Array.length% yields itself'); + + // static non-function object + t.equal(callBound('Array.prototype'), Array.prototype, 'Array.prototype yields itself'); + t.equal(callBound('%Array.prototype%'), Array.prototype, '%Array.prototype% yields itself'); + t.equal(callBound('Array.constructor'), Array.constructor, 'Array.constructor yields itself'); + t.equal(callBound('%Array.constructor%'), Array.constructor, '%Array.constructor% yields itself'); + + // static function + t.equal(callBound('Date.parse'), Date.parse, 'Date.parse yields itself'); + t.equal(callBound('%Date.parse%'), Date.parse, '%Date.parse% yields itself'); + + // prototype primitive + t.equal(callBound('Error.prototype.message'), Error.prototype.message, 'Error.prototype.message yields itself'); + t.equal(callBound('%Error.prototype.message%'), Error.prototype.message, '%Error.prototype.message% yields itself'); + + var x = callBound('Object.prototype.toString'); + var y = callBound('%Object.prototype.toString%'); + + // prototype function + t.notEqual(x, Object.prototype.toString, 'Object.prototype.toString does not yield itself'); + t.notEqual(y, Object.prototype.toString, '%Object.prototype.toString% does not yield itself'); + t.equal(x(true), Object.prototype.toString.call(true), 'call-bound Object.prototype.toString calls into the original'); + t.equal(y(true), Object.prototype.toString.call(true), 'call-bound %Object.prototype.toString% calls into the original'); + + t['throws']( + // @ts-expect-error + function () { callBound('does not exist'); }, + SyntaxError, + 'nonexistent intrinsic throws' + ); + t['throws']( + // @ts-expect-error + function () { callBound('does not exist', true); }, + SyntaxError, + 'allowMissing arg still throws for unknown intrinsic' + ); + + t.test('real but absent intrinsic', { skip: typeof WeakRef !== 'undefined' }, function (st) { + st['throws']( + function () { callBound('WeakRef'); }, + TypeError, + 'real but absent intrinsic throws' + ); + st.equal(callBound('WeakRef', true), undefined, 'allowMissing arg avoids exception'); + st.end(); + }); + + t.end(); +}); diff --git a/food-ordering-app/server/node_modules/call-bound/tsconfig.json b/food-ordering-app/server/node_modules/call-bound/tsconfig.json new file mode 100644 index 000000000..8976d98b8 --- /dev/null +++ b/food-ordering-app/server/node_modules/call-bound/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "ESNext", + "lib": ["es2024"], + }, + "exclude": [ + "coverage", + ], +} diff --git a/food-ordering-app/server/node_modules/content-type/HISTORY.md b/food-ordering-app/server/node_modules/content-type/HISTORY.md index 8f5cb7030..458367139 100644 --- a/food-ordering-app/server/node_modules/content-type/HISTORY.md +++ b/food-ordering-app/server/node_modules/content-type/HISTORY.md @@ -1,3 +1,8 @@ +1.0.5 / 2023-01-29 +================== + + * perf: skip value escaping when unnecessary + 1.0.4 / 2017-09-11 ================== diff --git a/food-ordering-app/server/node_modules/content-type/README.md b/food-ordering-app/server/node_modules/content-type/README.md index 3ed67413c..c1a922a9a 100644 --- a/food-ordering-app/server/node_modules/content-type/README.md +++ b/food-ordering-app/server/node_modules/content-type/README.md @@ -1,10 +1,10 @@ # content-type -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![Node.js Version][node-image]][node-url] +[![Build Status][ci-image]][ci-url] +[![Coverage Status][coveralls-image]][coveralls-url] Create and parse HTTP Content-Type header according to RFC 7231 @@ -26,7 +26,7 @@ var contentType = require('content-type') var obj = contentType.parse('image/svg+xml; charset=utf-8') ``` -Parse a content type string. This will return an object with the following +Parse a `Content-Type` header. This will return an object with the following properties (examples are shown for the string `'image/svg+xml; charset=utf-8'`): - `type`: The media type (the type and subtype, always lower case). @@ -43,7 +43,7 @@ Throws a `TypeError` if the string is missing or invalid. var obj = contentType.parse(req) ``` -Parse the `content-type` header from the given `req`. Short-cut for +Parse the `Content-Type` header from the given `req`. Short-cut for `contentType.parse(req.headers['content-type'])`. Throws a `TypeError` if the `Content-Type` header is missing or invalid. @@ -54,7 +54,7 @@ Throws a `TypeError` if the `Content-Type` header is missing or invalid. var obj = contentType.parse(res) ``` -Parse the `content-type` header set on the given `res`. Short-cut for +Parse the `Content-Type` header set on the given `res`. Short-cut for `contentType.parse(res.getHeader('content-type'))`. Throws a `TypeError` if the `Content-Type` header is missing or invalid. @@ -62,10 +62,13 @@ Throws a `TypeError` if the `Content-Type` header is missing or invalid. ### contentType.format(obj) ```js -var str = contentType.format({type: 'image/svg+xml'}) +var str = contentType.format({ + type: 'image/svg+xml', + parameters: { charset: 'utf-8' } +}) ``` -Format an object into a content type string. This will return a string of the +Format an object into a `Content-Type` header. This will return a string of the content type for the given object with the following properties (examples are shown that produce the string `'image/svg+xml; charset=utf-8'`): @@ -80,13 +83,12 @@ Throws a `TypeError` if the object contains an invalid type or parameter names. [MIT](LICENSE) -[npm-image]: https://img.shields.io/npm/v/content-type.svg +[ci-image]: https://badgen.net/github/checks/jshttp/content-type/master?label=ci +[ci-url]: https://github.com/jshttp/content-type/actions/workflows/ci.yml +[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/content-type/master +[coveralls-url]: https://coveralls.io/r/jshttp/content-type?branch=master +[node-image]: https://badgen.net/npm/node/content-type +[node-url]: https://nodejs.org/en/download +[npm-downloads-image]: https://badgen.net/npm/dm/content-type [npm-url]: https://npmjs.org/package/content-type -[node-version-image]: https://img.shields.io/node/v/content-type.svg -[node-version-url]: http://nodejs.org/download/ -[travis-image]: https://img.shields.io/travis/jshttp/content-type/master.svg -[travis-url]: https://travis-ci.org/jshttp/content-type -[coveralls-image]: https://img.shields.io/coveralls/jshttp/content-type/master.svg -[coveralls-url]: https://coveralls.io/r/jshttp/content-type -[downloads-image]: https://img.shields.io/npm/dm/content-type.svg -[downloads-url]: https://npmjs.org/package/content-type +[npm-version-image]: https://badgen.net/npm/v/content-type diff --git a/food-ordering-app/server/node_modules/content-type/index.js b/food-ordering-app/server/node_modules/content-type/index.js index 6ce03f208..41840e7bc 100644 --- a/food-ordering-app/server/node_modules/content-type/index.js +++ b/food-ordering-app/server/node_modules/content-type/index.js @@ -20,8 +20,8 @@ * obs-text = %x80-FF * quoted-pair = "\" ( HTAB / SP / VCHAR / obs-text ) */ -var PARAM_REGEXP = /; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g -var TEXT_REGEXP = /^[\u000b\u0020-\u007e\u0080-\u00ff]+$/ +var PARAM_REGEXP = /; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g // eslint-disable-line no-control-regex +var TEXT_REGEXP = /^[\u000b\u0020-\u007e\u0080-\u00ff]+$/ // eslint-disable-line no-control-regex var TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/ /** @@ -30,7 +30,7 @@ var TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/ * quoted-pair = "\" ( HTAB / SP / VCHAR / obs-text ) * obs-text = %x80-FF */ -var QESC_REGEXP = /\\([\u000b\u0020-\u00ff])/g +var QESC_REGEXP = /\\([\u000b\u0020-\u00ff])/g // eslint-disable-line no-control-regex /** * RegExp to match chars that must be quoted-pair in RFC 7230 sec 3.2.6 @@ -119,7 +119,7 @@ function parse (string) { var index = header.indexOf(';') var type = index !== -1 - ? header.substr(0, index).trim() + ? header.slice(0, index).trim() : header.trim() if (!TYPE_REGEXP.test(type)) { @@ -145,11 +145,14 @@ function parse (string) { key = match[1].toLowerCase() value = match[2] - if (value[0] === '"') { - // remove quotes and escapes - value = value - .substr(1, value.length - 2) - .replace(QESC_REGEXP, '$1') + if (value.charCodeAt(0) === 0x22 /* " */) { + // remove quotes + value = value.slice(1, -1) + + // remove escapes + if (value.indexOf('\\') !== -1) { + value = value.replace(QESC_REGEXP, '$1') + } } obj.parameters[key] = value diff --git a/food-ordering-app/server/node_modules/content-type/package.json b/food-ordering-app/server/node_modules/content-type/package.json index f2d31d412..9db19f63f 100644 --- a/food-ordering-app/server/node_modules/content-type/package.json +++ b/food-ordering-app/server/node_modules/content-type/package.json @@ -1,7 +1,7 @@ { "name": "content-type", "description": "Create and parse HTTP Content-Type header", - "version": "1.0.4", + "version": "1.0.5", "author": "Douglas Christopher Wilson ", "license": "MIT", "keywords": [ @@ -13,14 +13,15 @@ ], "repository": "jshttp/content-type", "devDependencies": { - "eslint": "3.19.0", - "eslint-config-standard": "10.2.1", - "eslint-plugin-import": "2.7.0", - "eslint-plugin-node": "5.1.1", - "eslint-plugin-promise": "3.5.0", - "eslint-plugin-standard": "3.0.1", - "istanbul": "0.4.5", - "mocha": "~1.21.5" + "deep-equal": "1.0.1", + "eslint": "8.32.0", + "eslint-config-standard": "15.0.1", + "eslint-plugin-import": "2.27.5", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "6.1.1", + "eslint-plugin-standard": "4.1.0", + "mocha": "10.2.0", + "nyc": "15.1.0" }, "files": [ "LICENSE", @@ -34,7 +35,8 @@ "scripts": { "lint": "eslint .", "test": "mocha --reporter spec --check-leaks --bail test/", - "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/" + "test-ci": "nyc --reporter=lcovonly --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test", + "version": "node scripts/version-history.js && git add HISTORY.md" } } diff --git a/food-ordering-app/server/node_modules/cookie/HISTORY.md b/food-ordering-app/server/node_modules/cookie/HISTORY.md deleted file mode 100644 index ae9b995b4..000000000 --- a/food-ordering-app/server/node_modules/cookie/HISTORY.md +++ /dev/null @@ -1,142 +0,0 @@ -0.5.0 / 2022-04-11 -================== - - * Add `priority` option - * Fix `expires` option to reject invalid dates - * pref: improve default decode speed - * pref: remove slow string split in parse - -0.4.2 / 2022-02-02 -================== - - * pref: read value only when assigning in parse - * pref: remove unnecessary regexp in parse - -0.4.1 / 2020-04-21 -================== - - * Fix `maxAge` option to reject invalid values - -0.4.0 / 2019-05-15 -================== - - * Add `SameSite=None` support - -0.3.1 / 2016-05-26 -================== - - * Fix `sameSite: true` to work with draft-7 clients - - `true` now sends `SameSite=Strict` instead of `SameSite` - -0.3.0 / 2016-05-26 -================== - - * Add `sameSite` option - - Replaces `firstPartyOnly` option, never implemented by browsers - * Improve error message when `encode` is not a function - * Improve error message when `expires` is not a `Date` - -0.2.4 / 2016-05-20 -================== - - * perf: enable strict mode - * perf: use for loop in parse - * perf: use string concatination for serialization - -0.2.3 / 2015-10-25 -================== - - * Fix cookie `Max-Age` to never be a floating point number - -0.2.2 / 2015-09-17 -================== - - * Fix regression when setting empty cookie value - - Ease the new restriction, which is just basic header-level validation - * Fix typo in invalid value errors - -0.2.1 / 2015-09-17 -================== - - * Throw on invalid values provided to `serialize` - - Ensures the resulting string is a valid HTTP header value - -0.2.0 / 2015-08-13 -================== - - * Add `firstPartyOnly` option - * Throw better error for invalid argument to parse - * perf: hoist regular expression - -0.1.5 / 2015-09-17 -================== - - * Fix regression when setting empty cookie value - - Ease the new restriction, which is just basic header-level validation - * Fix typo in invalid value errors - -0.1.4 / 2015-09-17 -================== - - * Throw better error for invalid argument to parse - * Throw on invalid values provided to `serialize` - - Ensures the resulting string is a valid HTTP header value - -0.1.3 / 2015-05-19 -================== - - * Reduce the scope of try-catch deopt - * Remove argument reassignments - -0.1.2 / 2014-04-16 -================== - - * Remove unnecessary files from npm package - -0.1.1 / 2014-02-23 -================== - - * Fix bad parse when cookie value contained a comma - * Fix support for `maxAge` of `0` - -0.1.0 / 2013-05-01 -================== - - * Add `decode` option - * Add `encode` option - -0.0.6 / 2013-04-08 -================== - - * Ignore cookie parts missing `=` - -0.0.5 / 2012-10-29 -================== - - * Return raw cookie value if value unescape errors - -0.0.4 / 2012-06-21 -================== - - * Use encode/decodeURIComponent for cookie encoding/decoding - - Improve server/client interoperability - -0.0.3 / 2012-06-06 -================== - - * Only escape special characters per the cookie RFC - -0.0.2 / 2012-06-01 -================== - - * Fix `maxAge` option to not throw error - -0.0.1 / 2012-05-28 -================== - - * Add more tests - -0.0.0 / 2012-05-28 -================== - - * Initial release diff --git a/food-ordering-app/server/node_modules/cookie/README.md b/food-ordering-app/server/node_modules/cookie/README.md index 5449c3a25..71fdac111 100644 --- a/food-ordering-app/server/node_modules/cookie/README.md +++ b/food-ordering-app/server/node_modules/cookie/README.md @@ -2,9 +2,9 @@ [![NPM Version][npm-version-image]][npm-url] [![NPM Downloads][npm-downloads-image]][npm-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][github-actions-ci-image]][github-actions-ci-url] -[![Test Coverage][coveralls-image]][coveralls-url] +[![Node.js Version][node-image]][node-url] +[![Build Status][ci-image]][ci-url] +[![Coverage Status][coveralls-image]][coveralls-url] Basic HTTP cookie parser and serializer for HTTP servers. @@ -107,6 +107,17 @@ The given number will be converted to an integer by rounding down. By default, n `maxAge` are set, then `maxAge` takes precedence, but it is possible not all clients by obey this, so if both are set, they should point to the same date and time. +##### partitioned + +Specifies the `boolean` value for the [`Partitioned` `Set-Cookie`](rfc-cutler-httpbis-partitioned-cookies) +attribute. When truthy, the `Partitioned` attribute is set, otherwise it is not. By default, the +`Partitioned` attribute is not set. + +**note** This is an attribute that has not yet been fully standardized, and may change in the future. +This also means many clients may ignore this attribute until they understand it. + +More information about can be found in [the proposal](https://github.com/privacycg/CHIPS). + ##### path Specifies the value for the [`Path` `Set-Cookie` attribute][rfc-6265-5.2.4]. By default, the path @@ -212,49 +223,52 @@ $ npm test ``` $ npm run bench -> cookie@0.4.2 bench +> cookie@0.5.0 bench > node benchmark/index.js - node@16.14.0 - v8@9.4.146.24-node.20 - uv@1.43.0 - zlib@1.2.11 + node@18.18.2 + acorn@8.10.0 + ada@2.6.0 + ares@1.19.1 brotli@1.0.9 - ares@1.18.1 - modules@93 - nghttp2@1.45.1 - napi@8 - llhttp@6.0.4 - openssl@1.1.1m+quic - cldr@40.0 - icu@70.1 - tz@2021a3 - unicode@14.0 - ngtcp2@0.1.0-DEV - nghttp3@0.1.0-DEV + cldr@43.1 + icu@73.2 + llhttp@6.0.11 + modules@108 + napi@9 + nghttp2@1.57.0 + nghttp3@0.7.0 + ngtcp2@0.8.1 + openssl@3.0.10+quic + simdutf@3.2.14 + tz@2023c + undici@5.26.3 + unicode@15.0 + uv@1.44.2 + uvwasi@0.0.18 + v8@10.2.154.26-node.26 + zlib@1.2.13.1-motley > node benchmark/parse-top.js cookie.parse - top sites - 15 tests completed. - - parse accounts.google.com x 2,421,245 ops/sec ±0.80% (188 runs sampled) - parse apple.com x 2,684,710 ops/sec ±0.59% (189 runs sampled) - parse cloudflare.com x 2,231,418 ops/sec ±0.76% (186 runs sampled) - parse docs.google.com x 2,316,357 ops/sec ±1.28% (187 runs sampled) - parse drive.google.com x 2,363,543 ops/sec ±0.49% (189 runs sampled) - parse en.wikipedia.org x 839,414 ops/sec ±0.53% (189 runs sampled) - parse linkedin.com x 553,797 ops/sec ±0.63% (190 runs sampled) - parse maps.google.com x 1,314,779 ops/sec ±0.72% (189 runs sampled) - parse microsoft.com x 153,783 ops/sec ±0.53% (190 runs sampled) - parse play.google.com x 2,249,574 ops/sec ±0.59% (187 runs sampled) - parse plus.google.com x 2,258,682 ops/sec ±0.60% (188 runs sampled) - parse sites.google.com x 2,247,069 ops/sec ±0.68% (189 runs sampled) - parse support.google.com x 1,456,840 ops/sec ±0.70% (187 runs sampled) - parse www.google.com x 1,046,028 ops/sec ±0.58% (188 runs sampled) - parse youtu.be x 937,428 ops/sec ±1.47% (190 runs sampled) - parse youtube.com x 963,878 ops/sec ±0.59% (190 runs sampled) + 14 tests completed. + + parse accounts.google.com x 2,588,913 ops/sec ±0.74% (186 runs sampled) + parse apple.com x 2,370,002 ops/sec ±0.69% (186 runs sampled) + parse cloudflare.com x 2,213,102 ops/sec ±0.88% (188 runs sampled) + parse docs.google.com x 2,194,157 ops/sec ±1.03% (184 runs sampled) + parse drive.google.com x 2,265,084 ops/sec ±0.79% (187 runs sampled) + parse en.wikipedia.org x 457,099 ops/sec ±0.81% (186 runs sampled) + parse linkedin.com x 504,407 ops/sec ±0.89% (186 runs sampled) + parse maps.google.com x 1,230,959 ops/sec ±0.98% (186 runs sampled) + parse microsoft.com x 926,294 ops/sec ±0.88% (184 runs sampled) + parse play.google.com x 2,311,338 ops/sec ±0.83% (185 runs sampled) + parse support.google.com x 1,508,850 ops/sec ±0.86% (186 runs sampled) + parse www.google.com x 1,022,582 ops/sec ±1.32% (182 runs sampled) + parse youtu.be x 332,136 ops/sec ±1.02% (185 runs sampled) + parse youtube.com x 323,833 ops/sec ±0.77% (183 runs sampled) > node benchmark/parse.js @@ -262,12 +276,12 @@ $ npm run bench 6 tests completed. - simple x 2,745,604 ops/sec ±0.77% (185 runs sampled) - decode x 557,287 ops/sec ±0.60% (188 runs sampled) - unquote x 2,498,475 ops/sec ±0.55% (189 runs sampled) - duplicates x 868,591 ops/sec ±0.89% (187 runs sampled) - 10 cookies x 306,745 ops/sec ±0.49% (190 runs sampled) - 100 cookies x 22,414 ops/sec ±2.38% (182 runs sampled) + simple x 3,214,032 ops/sec ±1.61% (183 runs sampled) + decode x 587,237 ops/sec ±1.16% (187 runs sampled) + unquote x 2,954,618 ops/sec ±1.35% (183 runs sampled) + duplicates x 857,008 ops/sec ±0.89% (187 runs sampled) + 10 cookies x 292,133 ops/sec ±0.89% (187 runs sampled) + 100 cookies x 22,610 ops/sec ±0.68% (187 runs sampled) ``` ## References @@ -275,6 +289,7 @@ $ npm run bench - [RFC 6265: HTTP State Management Mechanism][rfc-6265] - [Same-site Cookies][rfc-6265bis-09-5.4.7] +[rfc-cutler-httpbis-partitioned-cookies]: https://tools.ietf.org/html/draft-cutler-httpbis-partitioned-cookies/ [rfc-west-cookie-priority-00-4.1]: https://tools.ietf.org/html/draft-west-cookie-priority-00#section-4.1 [rfc-6265bis-09-5.4.7]: https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-09#section-5.4.7 [rfc-6265]: https://tools.ietf.org/html/rfc6265 @@ -291,12 +306,12 @@ $ npm run bench [MIT](LICENSE) +[ci-image]: https://badgen.net/github/checks/jshttp/cookie/master?label=ci +[ci-url]: https://github.com/jshttp/cookie/actions/workflows/ci.yml [coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/cookie/master [coveralls-url]: https://coveralls.io/r/jshttp/cookie?branch=master -[github-actions-ci-image]: https://img.shields.io/github/workflow/status/jshttp/cookie/ci/master?label=ci -[github-actions-ci-url]: https://github.com/jshttp/cookie/actions/workflows/ci.yml -[node-version-image]: https://badgen.net/npm/node/cookie -[node-version-url]: https://nodejs.org/en/download +[node-image]: https://badgen.net/npm/node/cookie +[node-url]: https://nodejs.org/en/download [npm-downloads-image]: https://badgen.net/npm/dm/cookie [npm-url]: https://npmjs.org/package/cookie [npm-version-image]: https://badgen.net/npm/v/cookie diff --git a/food-ordering-app/server/node_modules/cookie/index.js b/food-ordering-app/server/node_modules/cookie/index.js index 9c3d07d89..acd5acd6a 100644 --- a/food-ordering-app/server/node_modules/cookie/index.js +++ b/food-ordering-app/server/node_modules/cookie/index.js @@ -21,16 +21,69 @@ exports.serialize = serialize; */ var __toString = Object.prototype.toString +var __hasOwnProperty = Object.prototype.hasOwnProperty /** - * RegExp to match field-content in RFC 7230 sec 3.2 + * RegExp to match cookie-name in RFC 6265 sec 4.1.1 + * This refers out to the obsoleted definition of token in RFC 2616 sec 2.2 + * which has been replaced by the token definition in RFC 7230 appendix B. * - * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ] - * field-vchar = VCHAR / obs-text - * obs-text = %x80-FF + * cookie-name = token + * token = 1*tchar + * tchar = "!" / "#" / "$" / "%" / "&" / "'" / + * "*" / "+" / "-" / "." / "^" / "_" / + * "`" / "|" / "~" / DIGIT / ALPHA */ -var fieldContentRegExp = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/; +var cookieNameRegExp = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/; + +/** + * RegExp to match cookie-value in RFC 6265 sec 4.1.1 + * + * cookie-value = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE ) + * cookie-octet = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E + * ; US-ASCII characters excluding CTLs, + * ; whitespace DQUOTE, comma, semicolon, + * ; and backslash + */ + +var cookieValueRegExp = /^("?)[\u0021\u0023-\u002B\u002D-\u003A\u003C-\u005B\u005D-\u007E]*\1$/; + +/** + * RegExp to match domain-value in RFC 6265 sec 4.1.1 + * + * domain-value = + * ; defined in [RFC1034], Section 3.5, as + * ; enhanced by [RFC1123], Section 2.1 + * = - -Denque is a well tested, extremely fast and lightweight [double-ended queue](http://en.wikipedia.org/wiki/Double-ended_queue) -implementation with zero dependencies and includes TypeScript types. - -Double-ended queues can also be used as a: - -- [Stack](http://en.wikipedia.org/wiki/Stack_\(abstract_data_type\)) -- [Queue](http://en.wikipedia.org/wiki/Queue_\(data_structure\)) - -This implementation is currently the fastest available, even faster than `double-ended-queue`, see the [benchmarks](https://docs.page/invertase/denque/benchmarks). - -Every queue operation is done at a constant `O(1)` - including random access from `.peekAt(index)`. - -**Works on all node versions >= v0.10** - -## Quick Start - -Install the package: - -```bash -npm install denque -``` - -Create and consume a queue: - -```js -const Denque = require("denque"); - -const denque = new Denque([1,2,3,4]); -denque.shift(); // 1 -denque.pop(); // 4 -``` - - -See the [API reference documentation](https://docs.page/invertase/denque/api) for more examples. - ---- - -## Who's using it? - -- [Kafka Node.js client](https://www.npmjs.com/package/kafka-node) -- [MariaDB Node.js client](https://www.npmjs.com/package/mariadb) -- [MongoDB Node.js client](https://www.npmjs.com/package/mongodb) -- [MySQL Node.js client](https://www.npmjs.com/package/mysql2) -- [Redis Node.js clients](https://www.npmjs.com/package/redis) - -... and [many more](https://www.npmjs.com/browse/depended/denque). - - ---- - -## License - -- See [LICENSE](/LICENSE) - ---- - -

- - - -

- Built and maintained by Invertase. -

-

diff --git a/food-ordering-app/server/node_modules/denque/index.d.ts b/food-ordering-app/server/node_modules/denque/index.d.ts deleted file mode 100644 index e125dd471..000000000 --- a/food-ordering-app/server/node_modules/denque/index.d.ts +++ /dev/null @@ -1,47 +0,0 @@ -declare class Denque { - length: number; - - constructor(); - - constructor(array: T[]); - - constructor(array: T[], options: IDenqueOptions); - - push(item: T): number; - - unshift(item: T): number; - - pop(): T | undefined; - - shift(): T | undefined; - - peekBack(): T | undefined; - - peekFront(): T | undefined; - - peekAt(index: number): T | undefined; - - get(index: number): T | undefined; - - remove(index: number, count: number): T[]; - - removeOne(index: number): T | undefined; - - splice(index: number, count: number, ...item: T[]): T[] | undefined; - - isEmpty(): boolean; - - clear(): void; - - size(): number; - - toString(): string; - - toArray(): T[]; -} - -interface IDenqueOptions { - capacity?: number -} - -export = Denque; diff --git a/food-ordering-app/server/node_modules/denque/index.js b/food-ordering-app/server/node_modules/denque/index.js deleted file mode 100644 index 0e03764c9..000000000 --- a/food-ordering-app/server/node_modules/denque/index.js +++ /dev/null @@ -1,443 +0,0 @@ -'use strict'; - -/** - * Custom implementation of a double ended queue. - */ -function Denque(array, options) { - var options = options || {}; - - this._head = 0; - this._tail = 0; - this._capacity = options.capacity; - this._capacityMask = 0x3; - this._list = new Array(4); - if (Array.isArray(array)) { - this._fromArray(array); - } -} - -/** - * -------------- - * PUBLIC API - * ------------- - */ - -/** - * Returns the item at the specified index from the list. - * 0 is the first element, 1 is the second, and so on... - * Elements at negative values are that many from the end: -1 is one before the end - * (the last element), -2 is two before the end (one before last), etc. - * @param index - * @returns {*} - */ -Denque.prototype.peekAt = function peekAt(index) { - var i = index; - // expect a number or return undefined - if ((i !== (i | 0))) { - return void 0; - } - var len = this.size(); - if (i >= len || i < -len) return undefined; - if (i < 0) i += len; - i = (this._head + i) & this._capacityMask; - return this._list[i]; -}; - -/** - * Alias for peekAt() - * @param i - * @returns {*} - */ -Denque.prototype.get = function get(i) { - return this.peekAt(i); -}; - -/** - * Returns the first item in the list without removing it. - * @returns {*} - */ -Denque.prototype.peek = function peek() { - if (this._head === this._tail) return undefined; - return this._list[this._head]; -}; - -/** - * Alias for peek() - * @returns {*} - */ -Denque.prototype.peekFront = function peekFront() { - return this.peek(); -}; - -/** - * Returns the item that is at the back of the queue without removing it. - * Uses peekAt(-1) - */ -Denque.prototype.peekBack = function peekBack() { - return this.peekAt(-1); -}; - -/** - * Returns the current length of the queue - * @return {Number} - */ -Object.defineProperty(Denque.prototype, 'length', { - get: function length() { - return this.size(); - } -}); - -/** - * Return the number of items on the list, or 0 if empty. - * @returns {number} - */ -Denque.prototype.size = function size() { - if (this._head === this._tail) return 0; - if (this._head < this._tail) return this._tail - this._head; - else return this._capacityMask + 1 - (this._head - this._tail); -}; - -/** - * Add an item at the beginning of the list. - * @param item - */ -Denque.prototype.unshift = function unshift(item) { - if (arguments.length === 0) return this.size(); - var len = this._list.length; - this._head = (this._head - 1 + len) & this._capacityMask; - this._list[this._head] = item; - if (this._tail === this._head) this._growArray(); - if (this._capacity && this.size() > this._capacity) this.pop(); - if (this._head < this._tail) return this._tail - this._head; - else return this._capacityMask + 1 - (this._head - this._tail); -}; - -/** - * Remove and return the first item on the list, - * Returns undefined if the list is empty. - * @returns {*} - */ -Denque.prototype.shift = function shift() { - var head = this._head; - if (head === this._tail) return undefined; - var item = this._list[head]; - this._list[head] = undefined; - this._head = (head + 1) & this._capacityMask; - if (head < 2 && this._tail > 10000 && this._tail <= this._list.length >>> 2) this._shrinkArray(); - return item; -}; - -/** - * Add an item to the bottom of the list. - * @param item - */ -Denque.prototype.push = function push(item) { - if (arguments.length === 0) return this.size(); - var tail = this._tail; - this._list[tail] = item; - this._tail = (tail + 1) & this._capacityMask; - if (this._tail === this._head) { - this._growArray(); - } - if (this._capacity && this.size() > this._capacity) { - this.shift(); - } - if (this._head < this._tail) return this._tail - this._head; - else return this._capacityMask + 1 - (this._head - this._tail); -}; - -/** - * Remove and return the last item on the list. - * Returns undefined if the list is empty. - * @returns {*} - */ -Denque.prototype.pop = function pop() { - var tail = this._tail; - if (tail === this._head) return undefined; - var len = this._list.length; - this._tail = (tail - 1 + len) & this._capacityMask; - var item = this._list[this._tail]; - this._list[this._tail] = undefined; - if (this._head < 2 && tail > 10000 && tail <= len >>> 2) this._shrinkArray(); - return item; -}; - -/** - * Remove and return the item at the specified index from the list. - * Returns undefined if the list is empty. - * @param index - * @returns {*} - */ -Denque.prototype.removeOne = function removeOne(index) { - var i = index; - // expect a number or return undefined - if ((i !== (i | 0))) { - return void 0; - } - if (this._head === this._tail) return void 0; - var size = this.size(); - var len = this._list.length; - if (i >= size || i < -size) return void 0; - if (i < 0) i += size; - i = (this._head + i) & this._capacityMask; - var item = this._list[i]; - var k; - if (index < size / 2) { - for (k = index; k > 0; k--) { - this._list[i] = this._list[i = (i - 1 + len) & this._capacityMask]; - } - this._list[i] = void 0; - this._head = (this._head + 1 + len) & this._capacityMask; - } else { - for (k = size - 1 - index; k > 0; k--) { - this._list[i] = this._list[i = (i + 1 + len) & this._capacityMask]; - } - this._list[i] = void 0; - this._tail = (this._tail - 1 + len) & this._capacityMask; - } - return item; -}; - -/** - * Remove number of items from the specified index from the list. - * Returns array of removed items. - * Returns undefined if the list is empty. - * @param index - * @param count - * @returns {array} - */ -Denque.prototype.remove = function remove(index, count) { - var i = index; - var removed; - var del_count = count; - // expect a number or return undefined - if ((i !== (i | 0))) { - return void 0; - } - if (this._head === this._tail) return void 0; - var size = this.size(); - var len = this._list.length; - if (i >= size || i < -size || count < 1) return void 0; - if (i < 0) i += size; - if (count === 1 || !count) { - removed = new Array(1); - removed[0] = this.removeOne(i); - return removed; - } - if (i === 0 && i + count >= size) { - removed = this.toArray(); - this.clear(); - return removed; - } - if (i + count > size) count = size - i; - var k; - removed = new Array(count); - for (k = 0; k < count; k++) { - removed[k] = this._list[(this._head + i + k) & this._capacityMask]; - } - i = (this._head + i) & this._capacityMask; - if (index + count === size) { - this._tail = (this._tail - count + len) & this._capacityMask; - for (k = count; k > 0; k--) { - this._list[i = (i + 1 + len) & this._capacityMask] = void 0; - } - return removed; - } - if (index === 0) { - this._head = (this._head + count + len) & this._capacityMask; - for (k = count - 1; k > 0; k--) { - this._list[i = (i + 1 + len) & this._capacityMask] = void 0; - } - return removed; - } - if (i < size / 2) { - this._head = (this._head + index + count + len) & this._capacityMask; - for (k = index; k > 0; k--) { - this.unshift(this._list[i = (i - 1 + len) & this._capacityMask]); - } - i = (this._head - 1 + len) & this._capacityMask; - while (del_count > 0) { - this._list[i = (i - 1 + len) & this._capacityMask] = void 0; - del_count--; - } - if (index < 0) this._tail = i; - } else { - this._tail = i; - i = (i + count + len) & this._capacityMask; - for (k = size - (count + index); k > 0; k--) { - this.push(this._list[i++]); - } - i = this._tail; - while (del_count > 0) { - this._list[i = (i + 1 + len) & this._capacityMask] = void 0; - del_count--; - } - } - if (this._head < 2 && this._tail > 10000 && this._tail <= len >>> 2) this._shrinkArray(); - return removed; -}; - -/** - * Native splice implementation. - * Remove number of items from the specified index from the list and/or add new elements. - * Returns array of removed items or empty array if count == 0. - * Returns undefined if the list is empty. - * - * @param index - * @param count - * @param {...*} [elements] - * @returns {array} - */ -Denque.prototype.splice = function splice(index, count) { - var i = index; - // expect a number or return undefined - if ((i !== (i | 0))) { - return void 0; - } - var size = this.size(); - if (i < 0) i += size; - if (i > size) return void 0; - if (arguments.length > 2) { - var k; - var temp; - var removed; - var arg_len = arguments.length; - var len = this._list.length; - var arguments_index = 2; - if (!size || i < size / 2) { - temp = new Array(i); - for (k = 0; k < i; k++) { - temp[k] = this._list[(this._head + k) & this._capacityMask]; - } - if (count === 0) { - removed = []; - if (i > 0) { - this._head = (this._head + i + len) & this._capacityMask; - } - } else { - removed = this.remove(i, count); - this._head = (this._head + i + len) & this._capacityMask; - } - while (arg_len > arguments_index) { - this.unshift(arguments[--arg_len]); - } - for (k = i; k > 0; k--) { - this.unshift(temp[k - 1]); - } - } else { - temp = new Array(size - (i + count)); - var leng = temp.length; - for (k = 0; k < leng; k++) { - temp[k] = this._list[(this._head + i + count + k) & this._capacityMask]; - } - if (count === 0) { - removed = []; - if (i != size) { - this._tail = (this._head + i + len) & this._capacityMask; - } - } else { - removed = this.remove(i, count); - this._tail = (this._tail - leng + len) & this._capacityMask; - } - while (arguments_index < arg_len) { - this.push(arguments[arguments_index++]); - } - for (k = 0; k < leng; k++) { - this.push(temp[k]); - } - } - return removed; - } else { - return this.remove(i, count); - } -}; - -/** - * Soft clear - does not reset capacity. - */ -Denque.prototype.clear = function clear() { - this._head = 0; - this._tail = 0; -}; - -/** - * Returns true or false whether the list is empty. - * @returns {boolean} - */ -Denque.prototype.isEmpty = function isEmpty() { - return this._head === this._tail; -}; - -/** - * Returns an array of all queue items. - * @returns {Array} - */ -Denque.prototype.toArray = function toArray() { - return this._copyArray(false); -}; - -/** - * ------------- - * INTERNALS - * ------------- - */ - -/** - * Fills the queue with items from an array - * For use in the constructor - * @param array - * @private - */ -Denque.prototype._fromArray = function _fromArray(array) { - for (var i = 0; i < array.length; i++) this.push(array[i]); -}; - -/** - * - * @param fullCopy - * @returns {Array} - * @private - */ -Denque.prototype._copyArray = function _copyArray(fullCopy) { - var newArray = []; - var list = this._list; - var len = list.length; - var i; - if (fullCopy || this._head > this._tail) { - for (i = this._head; i < len; i++) newArray.push(list[i]); - for (i = 0; i < this._tail; i++) newArray.push(list[i]); - } else { - for (i = this._head; i < this._tail; i++) newArray.push(list[i]); - } - return newArray; -}; - -/** - * Grows the internal list array. - * @private - */ -Denque.prototype._growArray = function _growArray() { - if (this._head) { - // copy existing data, head to end, then beginning to tail. - this._list = this._copyArray(true); - this._head = 0; - } - - // head is at 0 and array is now full, safe to extend - this._tail = this._list.length; - - this._list.length <<= 1; - this._capacityMask = (this._capacityMask << 1) | 1; -}; - -/** - * Shrinks the internal list array. - * @private - */ -Denque.prototype._shrinkArray = function _shrinkArray() { - this._list.length >>>= 1; - this._capacityMask >>>= 1; -}; - - -module.exports = Denque; diff --git a/food-ordering-app/server/node_modules/denque/package.json b/food-ordering-app/server/node_modules/denque/package.json deleted file mode 100644 index f1a0fcc7b..000000000 --- a/food-ordering-app/server/node_modules/denque/package.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "name": "denque", - "version": "2.0.1", - "description": "The fastest javascript implementation of a double-ended queue. Used by the official Redis, MongoDB, MariaDB & MySQL libraries for Node.js and many other libraries. Maintains compatability with deque.", - "main": "index.js", - "engines": { - "node": ">=0.10" - }, - "keywords": [ - "data-structure", - "data-structures", - "queue", - "double", - "end", - "ended", - "deque", - "denque", - "double-ended-queue" - ], - "scripts": { - "test": "istanbul cover --report lcov _mocha && npm run typescript", - "coveralls": "cat ./coverage/lcov.info | coveralls", - "typescript": "tsc --project ./test/type/tsconfig.json", - "benchmark_thousand": "node benchmark/thousand", - "benchmark_2mil": "node benchmark/two_million", - "benchmark_splice": "node benchmark/splice", - "benchmark_remove": "node benchmark/remove", - "benchmark_removeOne": "node benchmark/removeOne" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/invertase/denque.git" - }, - "license": "Apache-2.0", - "author": { - "name": "Invertase", - "email": "oss@invertase.io", - "url": "http://github.com/invertase/" - }, - "contributors": [ - "Mike Diarmid (Salakar) " - ], - "bugs": { - "url": "https://github.com/invertase/denque/issues" - }, - "homepage": "https://docs.page/invertase/denque", - "devDependencies": { - "benchmark": "^2.1.4", - "codecov": "^3.8.3", - "double-ended-queue": "^2.1.0-0", - "istanbul": "^0.4.5", - "mocha": "^3.5.3", - "typescript": "^3.4.1" - } -} diff --git a/food-ordering-app/server/node_modules/dotenv/CHANGELOG.md b/food-ordering-app/server/node_modules/dotenv/CHANGELOG.md new file mode 100644 index 000000000..c3d6a9c80 --- /dev/null +++ b/food-ordering-app/server/node_modules/dotenv/CHANGELOG.md @@ -0,0 +1,621 @@ +# Changelog + +All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. + +## [Unreleased](https://github.com/motdotla/dotenv/compare/v17.3.1...master) + +## [17.3.1](https://github.com/motdotla/dotenv/compare/v17.3.0...v17.3.1) (2026-02-12) + +### Changed + +* Fix as2 example command in README and update spanish README + +## [17.3.0](https://github.com/motdotla/dotenv/compare/v17.2.4...v17.3.0) (2026-02-12) + +### Added + +* Add a new README section on dotenv’s approach to the agentic future. + +### Changed + +* Rewrite README to get humans started more quickly with less noise while simultaneously making more accessible for llms and agents to go deeper into details. + +## [17.2.4](https://github.com/motdotla/dotenv/compare/v17.2.3...v17.2.4) (2026-02-05) + +### Changed + +* Make `DotenvPopulateInput` accept `NodeJS.ProcessEnv` type ([#915](https://github.com/motdotla/dotenv/pull/915)) +- Give back to dotenv by checking out my newest project [vestauth](https://github.com/vestauth/vestauth). It is auth for agents. Thank you for using my software. + +## [17.2.3](https://github.com/motdotla/dotenv/compare/v17.2.2...v17.2.3) (2025-09-29) + +### Changed + +* Fixed typescript error definition ([#912](https://github.com/motdotla/dotenv/pull/912)) + +## [17.2.2](https://github.com/motdotla/dotenv/compare/v17.2.1...v17.2.2) (2025-09-02) + +### Added + +- 🙏 A big thank you to new sponsor [Tuple.app](https://tuple.app/dotenv) - *the premier screen sharing app for developers on macOS and Windows.* Go check them out. It's wonderful and generous of them to give back to open source by sponsoring dotenv. Give them some love back. + +## [17.2.1](https://github.com/motdotla/dotenv/compare/v17.2.0...v17.2.1) (2025-07-24) + +### Changed + +* Fix clickable tip links by removing parentheses ([#897](https://github.com/motdotla/dotenv/pull/897)) + +## [17.2.0](https://github.com/motdotla/dotenv/compare/v17.1.0...v17.2.0) (2025-07-09) + +### Added + +* Optionally specify `DOTENV_CONFIG_QUIET=true` in your environment or `.env` file to quiet the runtime log ([#889](https://github.com/motdotla/dotenv/pull/889)) +* Just like dotenv any `DOTENV_CONFIG_` environment variables take precedence over any code set options like `({quiet: false})` + +```ini +# .env +DOTENV_CONFIG_QUIET=true +HELLO="World" +``` +```js +// index.js +require('dotenv').config() +console.log(`Hello ${process.env.HELLO}`) +``` +```sh +$ node index.js +Hello World + +or + +$ DOTENV_CONFIG_QUIET=true node index.js +``` + +## [17.1.0](https://github.com/motdotla/dotenv/compare/v17.0.1...v17.1.0) (2025-07-07) + +### Added + +* Add additional security and configuration tips to the runtime log ([#884](https://github.com/motdotla/dotenv/pull/884)) +* Dim the tips text from the main injection information text + +```js +const TIPS = [ + '🔐 encrypt with dotenvx: https://dotenvx.com', + '🔐 prevent committing .env to code: https://dotenvx.com/precommit', + '🔐 prevent building .env in docker: https://dotenvx.com/prebuild', + '🛠️ run anywhere with `dotenvx run -- yourcommand`', + '⚙️ specify custom .env file path with { path: \'/custom/path/.env\' }', + '⚙️ enable debug logging with { debug: true }', + '⚙️ override existing env vars with { override: true }', + '⚙️ suppress all logs with { quiet: true }', + '⚙️ write to custom object with { processEnv: myObject }', + '⚙️ load multiple .env files with { path: [\'.env.local\', \'.env\'] }' +] +``` + +## [17.0.1](https://github.com/motdotla/dotenv/compare/v17.0.0...v17.0.1) (2025-07-01) + +### Changed + +* Patched injected log to count only populated/set keys to process.env ([#879](https://github.com/motdotla/dotenv/pull/879)) + +## [17.0.0](https://github.com/motdotla/dotenv/compare/v16.6.1...v17.0.0) (2025-06-27) + +### Changed + +- Default `quiet` to false - informational (file and keys count) runtime log message shows by default ([#875](https://github.com/motdotla/dotenv/pull/875)) + +## [16.6.1](https://github.com/motdotla/dotenv/compare/v16.6.0...v16.6.1) (2025-06-27) + +### Changed + +- Default `quiet` to true – hiding the runtime log message ([#874](https://github.com/motdotla/dotenv/pull/874)) +- NOTICE: 17.0.0 will be released with quiet defaulting to false. Use `config({ quiet: true })` to suppress. +- And check out the new [dotenvx](https://github.com/dotenvx/dotenvx). As coding workflows evolve and agents increasingly handle secrets, encrypted .env files offer a much safer way to deploy both agents and code together with secure secrets. Simply switch `require('dotenv').config()` for `require('@dotenvx/dotenvx').config()`. + +## [16.6.0](https://github.com/motdotla/dotenv/compare/v16.5.0...v16.6.0) (2025-06-26) + +### Added + +- Default log helpful message `[dotenv@16.6.0] injecting env (1) from .env` ([#870](https://github.com/motdotla/dotenv/pull/870)) +- Use `{ quiet: true }` to suppress +- Aligns dotenv more closely with [dotenvx](https://github.com/dotenvx/dotenvx). + +## [16.5.0](https://github.com/motdotla/dotenv/compare/v16.4.7...v16.5.0) (2025-04-07) + +### Added + +- 🎉 Added new sponsor [Graphite](https://graphite.dev/?utm_source=github&utm_medium=repo&utm_campaign=dotenv) - *the AI developer productivity platform helping teams on GitHub ship higher quality software, faster*. + +> [!TIP] +> **[Become a sponsor](https://github.com/sponsors/motdotla)** +> +> The dotenvx README is viewed thousands of times DAILY on GitHub and NPM. +> Sponsoring dotenv is a great way to get in front of developers and give back to the developer community at the same time. + +### Changed + +- Remove `_log` method. Use `_debug` [#862](https://github.com/motdotla/dotenv/pull/862) + +## [16.4.7](https://github.com/motdotla/dotenv/compare/v16.4.6...v16.4.7) (2024-12-03) + +### Changed + +- Ignore `.tap` folder when publishing. (oops, sorry about that everyone. - @motdotla) [#848](https://github.com/motdotla/dotenv/pull/848) + +## [16.4.6](https://github.com/motdotla/dotenv/compare/v16.4.5...v16.4.6) (2024-12-02) + +### Changed + +- Clean up stale dev dependencies [#847](https://github.com/motdotla/dotenv/pull/847) +- Various README updates clarifying usage and alternative solutions using [dotenvx](https://github.com/dotenvx/dotenvx) + +## [16.4.5](https://github.com/motdotla/dotenv/compare/v16.4.4...v16.4.5) (2024-02-19) + +### Changed + +- 🐞 Fix recent regression when using `path` option. return to historical behavior: do not attempt to auto find `.env` if `path` set. (regression was introduced in `16.4.3`) [#814](https://github.com/motdotla/dotenv/pull/814) + +## [16.4.4](https://github.com/motdotla/dotenv/compare/v16.4.3...v16.4.4) (2024-02-13) + +### Changed + +- 🐞 Replaced chaining operator `?.` with old school `&&` (fixing node 12 failures) [#812](https://github.com/motdotla/dotenv/pull/812) + +## [16.4.3](https://github.com/motdotla/dotenv/compare/v16.4.2...v16.4.3) (2024-02-12) + +### Changed + +- Fixed processing of multiple files in `options.path` [#805](https://github.com/motdotla/dotenv/pull/805) + +## [16.4.2](https://github.com/motdotla/dotenv/compare/v16.4.1...v16.4.2) (2024-02-10) + +### Changed + +- Changed funding link in package.json to [`dotenvx.com`](https://dotenvx.com) + +## [16.4.1](https://github.com/motdotla/dotenv/compare/v16.4.0...v16.4.1) (2024-01-24) + +- Patch support for array as `path` option [#797](https://github.com/motdotla/dotenv/pull/797) + +## [16.4.0](https://github.com/motdotla/dotenv/compare/v16.3.2...v16.4.0) (2024-01-23) + +- Add `error.code` to error messages around `.env.vault` decryption handling [#795](https://github.com/motdotla/dotenv/pull/795) +- Add ability to find `.env.vault` file when filename(s) passed as an array [#784](https://github.com/motdotla/dotenv/pull/784) + +## [16.3.2](https://github.com/motdotla/dotenv/compare/v16.3.1...v16.3.2) (2024-01-18) + +### Added + +- Add debug message when no encoding set [#735](https://github.com/motdotla/dotenv/pull/735) + +### Changed + +- Fix output typing for `populate` [#792](https://github.com/motdotla/dotenv/pull/792) +- Use subarray instead of slice [#793](https://github.com/motdotla/dotenv/pull/793) + +## [16.3.1](https://github.com/motdotla/dotenv/compare/v16.3.0...v16.3.1) (2023-06-17) + +### Added + +- Add missing type definitions for `processEnv` and `DOTENV_KEY` options. [#756](https://github.com/motdotla/dotenv/pull/756) + +## [16.3.0](https://github.com/motdotla/dotenv/compare/v16.2.0...v16.3.0) (2023-06-16) + +### Added + +- Optionally pass `DOTENV_KEY` to options rather than relying on `process.env.DOTENV_KEY`. Defaults to `process.env.DOTENV_KEY` [#754](https://github.com/motdotla/dotenv/pull/754) + +## [16.2.0](https://github.com/motdotla/dotenv/compare/v16.1.4...v16.2.0) (2023-06-15) + +### Added + +- Optionally write to your own target object rather than `process.env`. Defaults to `process.env`. [#753](https://github.com/motdotla/dotenv/pull/753) +- Add import type URL to types file [#751](https://github.com/motdotla/dotenv/pull/751) + +## [16.1.4](https://github.com/motdotla/dotenv/compare/v16.1.3...v16.1.4) (2023-06-04) + +### Added + +- Added `.github/` to `.npmignore` [#747](https://github.com/motdotla/dotenv/pull/747) + +## [16.1.3](https://github.com/motdotla/dotenv/compare/v16.1.2...v16.1.3) (2023-05-31) + +### Removed + +- Removed `browser` keys for `path`, `os`, and `crypto` in package.json. These were set to false incorrectly as of 16.1. Instead, if using dotenv on the front-end make sure to include polyfills for `path`, `os`, and `crypto`. [node-polyfill-webpack-plugin](https://github.com/Richienb/node-polyfill-webpack-plugin) provides these. + +## [16.1.2](https://github.com/motdotla/dotenv/compare/v16.1.1...v16.1.2) (2023-05-31) + +### Changed + +- Exposed private function `_configDotenv` as `configDotenv`. [#744](https://github.com/motdotla/dotenv/pull/744) + +## [16.1.1](https://github.com/motdotla/dotenv/compare/v16.1.0...v16.1.1) (2023-05-30) + +### Added + +- Added type definition for `decrypt` function + +### Changed + +- Fixed `{crypto: false}` in `packageJson.browser` + +## [16.1.0](https://github.com/motdotla/dotenv/compare/v16.0.3...v16.1.0) (2023-05-30) + +### Added + +- Add `populate` convenience method [#733](https://github.com/motdotla/dotenv/pull/733) +- Accept URL as path option [#720](https://github.com/motdotla/dotenv/pull/720) +- Add dotenv to `npm fund` command +- Spanish language README [#698](https://github.com/motdotla/dotenv/pull/698) +- Add `.env.vault` support. 🎉 ([#730](https://github.com/motdotla/dotenv/pull/730)) + +ℹ️ `.env.vault` extends the `.env` file format standard with a localized encrypted vault file. Package it securely with your production code deploys. It's cloud agnostic so that you can deploy your secrets anywhere – without [risky third-party integrations](https://techcrunch.com/2023/01/05/circleci-breach/). [read more](https://github.com/motdotla/dotenv#-deploying) + +### Changed + +- Fixed "cannot resolve 'fs'" error on tools like Replit [#693](https://github.com/motdotla/dotenv/pull/693) + +## [16.0.3](https://github.com/motdotla/dotenv/compare/v16.0.2...v16.0.3) (2022-09-29) + +### Changed + +- Added library version to debug logs ([#682](https://github.com/motdotla/dotenv/pull/682)) + +## [16.0.2](https://github.com/motdotla/dotenv/compare/v16.0.1...v16.0.2) (2022-08-30) + +### Added + +- Export `env-options.js` and `cli-options.js` in package.json for use with downstream [dotenv-expand](https://github.com/motdotla/dotenv-expand) module + +## [16.0.1](https://github.com/motdotla/dotenv/compare/v16.0.0...v16.0.1) (2022-05-10) + +### Changed + +- Minor README clarifications +- Development ONLY: updated devDependencies as recommended for development only security risks ([#658](https://github.com/motdotla/dotenv/pull/658)) + +## [16.0.0](https://github.com/motdotla/dotenv/compare/v15.0.1...v16.0.0) (2022-02-02) + +### Added + +- _Breaking:_ Backtick support 🎉 ([#615](https://github.com/motdotla/dotenv/pull/615)) + +If you had values containing the backtick character, please quote those values with either single or double quotes. + +## [15.0.1](https://github.com/motdotla/dotenv/compare/v15.0.0...v15.0.1) (2022-02-02) + +### Changed + +- Properly parse empty single or double quoted values 🐞 ([#614](https://github.com/motdotla/dotenv/pull/614)) + +## [15.0.0](https://github.com/motdotla/dotenv/compare/v14.3.2...v15.0.0) (2022-01-31) + +`v15.0.0` is a major new release with some important breaking changes. + +### Added + +- _Breaking:_ Multiline parsing support (just works. no need for the flag.) + +### Changed + +- _Breaking:_ `#` marks the beginning of a comment (UNLESS the value is wrapped in quotes. Please update your `.env` files to wrap in quotes any values containing `#`. For example: `SECRET_HASH="something-with-a-#-hash"`). + +..Understandably, (as some teams have noted) this is tedious to do across the entire team. To make it less tedious, we recommend using [dotenv cli](https://github.com/dotenv-org/cli) going forward. It's an optional plugin that will keep your `.env` files in sync between machines, environments, or team members. + +### Removed + +- _Breaking:_ Remove multiline option (just works out of the box now. no need for the flag.) + +## [14.3.2](https://github.com/motdotla/dotenv/compare/v14.3.1...v14.3.2) (2022-01-25) + +### Changed + +- Preserve backwards compatibility on values containing `#` 🐞 ([#603](https://github.com/motdotla/dotenv/pull/603)) + +## [14.3.1](https://github.com/motdotla/dotenv/compare/v14.3.0...v14.3.1) (2022-01-25) + +### Changed + +- Preserve backwards compatibility on exports by re-introducing the prior in-place exports 🐞 ([#606](https://github.com/motdotla/dotenv/pull/606)) + +## [14.3.0](https://github.com/motdotla/dotenv/compare/v14.2.0...v14.3.0) (2022-01-24) + +### Added + +- Add `multiline` option 🎉 ([#486](https://github.com/motdotla/dotenv/pull/486)) + +## [14.2.0](https://github.com/motdotla/dotenv/compare/v14.1.1...v14.2.0) (2022-01-17) + +### Added + +- Add `dotenv_config_override` cli option +- Add `DOTENV_CONFIG_OVERRIDE` command line env option + +## [14.1.1](https://github.com/motdotla/dotenv/compare/v14.1.0...v14.1.1) (2022-01-17) + +### Added + +- Add React gotcha to FAQ on README + +## [14.1.0](https://github.com/motdotla/dotenv/compare/v14.0.1...v14.1.0) (2022-01-17) + +### Added + +- Add `override` option 🎉 ([#595](https://github.com/motdotla/dotenv/pull/595)) + +## [14.0.1](https://github.com/motdotla/dotenv/compare/v14.0.0...v14.0.1) (2022-01-16) + +### Added + +- Log error on failure to load `.env` file ([#594](https://github.com/motdotla/dotenv/pull/594)) + +## [14.0.0](https://github.com/motdotla/dotenv/compare/v13.0.1...v14.0.0) (2022-01-16) + +### Added + +- _Breaking:_ Support inline comments for the parser 🎉 ([#568](https://github.com/motdotla/dotenv/pull/568)) + +## [13.0.1](https://github.com/motdotla/dotenv/compare/v13.0.0...v13.0.1) (2022-01-16) + +### Changed + +* Hide comments and newlines from debug output ([#404](https://github.com/motdotla/dotenv/pull/404)) + +## [13.0.0](https://github.com/motdotla/dotenv/compare/v12.0.4...v13.0.0) (2022-01-16) + +### Added + +* _Breaking:_ Add type file for `config.js` ([#539](https://github.com/motdotla/dotenv/pull/539)) + +## [12.0.4](https://github.com/motdotla/dotenv/compare/v12.0.3...v12.0.4) (2022-01-16) + +### Changed + +* README updates +* Minor order adjustment to package json format + +## [12.0.3](https://github.com/motdotla/dotenv/compare/v12.0.2...v12.0.3) (2022-01-15) + +### Changed + +* Simplified jsdoc for consistency across editors + +## [12.0.2](https://github.com/motdotla/dotenv/compare/v12.0.1...v12.0.2) (2022-01-15) + +### Changed + +* Improve embedded jsdoc type documentation + +## [12.0.1](https://github.com/motdotla/dotenv/compare/v12.0.0...v12.0.1) (2022-01-15) + +### Changed + +* README updates and clarifications + +## [12.0.0](https://github.com/motdotla/dotenv/compare/v11.0.0...v12.0.0) (2022-01-15) + +### Removed + +- _Breaking:_ drop support for Flow static type checker ([#584](https://github.com/motdotla/dotenv/pull/584)) + +### Changed + +- Move types/index.d.ts to lib/main.d.ts ([#585](https://github.com/motdotla/dotenv/pull/585)) +- Typescript cleanup ([#587](https://github.com/motdotla/dotenv/pull/587)) +- Explicit typescript inclusion in package.json ([#566](https://github.com/motdotla/dotenv/pull/566)) + +## [11.0.0](https://github.com/motdotla/dotenv/compare/v10.0.0...v11.0.0) (2022-01-11) + +### Changed + +- _Breaking:_ drop support for Node v10 ([#558](https://github.com/motdotla/dotenv/pull/558)) +- Patch debug option ([#550](https://github.com/motdotla/dotenv/pull/550)) + +## [10.0.0](https://github.com/motdotla/dotenv/compare/v9.0.2...v10.0.0) (2021-05-20) + +### Added + +- Add generic support to parse function +- Allow for import "dotenv/config.js" +- Add support to resolve home directory in path via ~ + +## [9.0.2](https://github.com/motdotla/dotenv/compare/v9.0.1...v9.0.2) (2021-05-10) + +### Changed + +- Support windows newlines with debug mode + +## [9.0.1](https://github.com/motdotla/dotenv/compare/v9.0.0...v9.0.1) (2021-05-08) + +### Changed + +- Updates to README + +## [9.0.0](https://github.com/motdotla/dotenv/compare/v8.6.0...v9.0.0) (2021-05-05) + +### Changed + +- _Breaking:_ drop support for Node v8 + +## [8.6.0](https://github.com/motdotla/dotenv/compare/v8.5.1...v8.6.0) (2021-05-05) + +### Added + +- define package.json in exports + +## [8.5.1](https://github.com/motdotla/dotenv/compare/v8.5.0...v8.5.1) (2021-05-05) + +### Changed + +- updated dev dependencies via npm audit + +## [8.5.0](https://github.com/motdotla/dotenv/compare/v8.4.0...v8.5.0) (2021-05-05) + +### Added + +- allow for `import "dotenv/config"` + +## [8.4.0](https://github.com/motdotla/dotenv/compare/v8.3.0...v8.4.0) (2021-05-05) + +### Changed + +- point to exact types file to work with VS Code + +## [8.3.0](https://github.com/motdotla/dotenv/compare/v8.2.0...v8.3.0) (2021-05-05) + +### Changed + +- _Breaking:_ drop support for Node v8 (mistake to be released as minor bump. later bumped to 9.0.0. see above.) + +## [8.2.0](https://github.com/motdotla/dotenv/compare/v8.1.0...v8.2.0) (2019-10-16) + +### Added + +- TypeScript types + +## [8.1.0](https://github.com/motdotla/dotenv/compare/v8.0.0...v8.1.0) (2019-08-18) + +### Changed + +- _Breaking:_ drop support for Node v6 ([#392](https://github.com/motdotla/dotenv/issues/392)) + +# [8.0.0](https://github.com/motdotla/dotenv/compare/v7.0.0...v8.0.0) (2019-05-02) + +### Changed + +- _Breaking:_ drop support for Node v6 ([#302](https://github.com/motdotla/dotenv/issues/392)) + +## [7.0.0] - 2019-03-12 + +### Fixed + +- Fix removing unbalanced quotes ([#376](https://github.com/motdotla/dotenv/pull/376)) + +### Removed + +- Removed `load` alias for `config` for consistency throughout code and documentation. + +## [6.2.0] - 2018-12-03 + +### Added + +- Support preload configuration via environment variables ([#351](https://github.com/motdotla/dotenv/issues/351)) + +## [6.1.0] - 2018-10-08 + +### Added + +- `debug` option for `config` and `parse` methods will turn on logging + +## [6.0.0] - 2018-06-02 + +### Changed + +- _Breaking:_ drop support for Node v4 ([#304](https://github.com/motdotla/dotenv/pull/304)) + +## [5.0.0] - 2018-01-29 + +### Added + +- Testing against Node v8 and v9 +- Documentation on trim behavior of values +- Documentation on how to use with `import` + +### Changed + +- _Breaking_: default `path` is now `path.resolve(process.cwd(), '.env')` +- _Breaking_: does not write over keys already in `process.env` if the key has a falsy value +- using `const` and `let` instead of `var` + +### Removed + +- Testing against Node v7 + +## [4.0.0] - 2016-12-23 + +### Changed + +- Return Object with parsed content or error instead of false ([#165](https://github.com/motdotla/dotenv/pull/165)). + +### Removed + +- `verbose` option removed in favor of returning result. + +## [3.0.0] - 2016-12-20 + +### Added + +- `verbose` option will log any error messages. Off by default. +- parses email addresses correctly +- allow importing config method directly in ES6 + +### Changed + +- Suppress error messages by default ([#154](https://github.com/motdotla/dotenv/pull/154)) +- Ignoring more files for NPM to make package download smaller + +### Fixed + +- False positive test due to case-sensitive variable ([#124](https://github.com/motdotla/dotenv/pull/124)) + +### Removed + +- `silent` option removed in favor of `verbose` + +## [2.0.0] - 2016-01-20 + +### Added + +- CHANGELOG to ["make it easier for users and contributors to see precisely what notable changes have been made between each release"](http://keepachangelog.com/). Linked to from README +- LICENSE to be more explicit about what was defined in `package.json`. Linked to from README +- Testing nodejs v4 on travis-ci +- added examples of how to use dotenv in different ways +- return parsed object on success rather than boolean true + +### Changed + +- README has shorter description not referencing ruby gem since we don't have or want feature parity + +### Removed + +- Variable expansion and escaping so environment variables are encouraged to be fully orthogonal + +## [1.2.0] - 2015-06-20 + +### Added + +- Preload hook to require dotenv without including it in your code + +### Changed + +- clarified license to be "BSD-2-Clause" in `package.json` + +### Fixed + +- retain spaces in string vars + +## [1.1.0] - 2015-03-31 + +### Added + +- Silent option to silence `console.log` when `.env` missing + +## [1.0.0] - 2015-03-13 + +### Removed + +- support for multiple `.env` files. should always use one `.env` file for the current environment + +[7.0.0]: https://github.com/motdotla/dotenv/compare/v6.2.0...v7.0.0 +[6.2.0]: https://github.com/motdotla/dotenv/compare/v6.1.0...v6.2.0 +[6.1.0]: https://github.com/motdotla/dotenv/compare/v6.0.0...v6.1.0 +[6.0.0]: https://github.com/motdotla/dotenv/compare/v5.0.0...v6.0.0 +[5.0.0]: https://github.com/motdotla/dotenv/compare/v4.0.0...v5.0.0 +[4.0.0]: https://github.com/motdotla/dotenv/compare/v3.0.0...v4.0.0 +[3.0.0]: https://github.com/motdotla/dotenv/compare/v2.0.0...v3.0.0 +[2.0.0]: https://github.com/motdotla/dotenv/compare/v1.2.0...v2.0.0 +[1.2.0]: https://github.com/motdotla/dotenv/compare/v1.1.0...v1.2.0 +[1.1.0]: https://github.com/motdotla/dotenv/compare/v1.0.0...v1.1.0 +[1.0.0]: https://github.com/motdotla/dotenv/compare/v0.4.0...v1.0.0 diff --git a/food-ordering-app/server/node_modules/dotenv/LICENSE b/food-ordering-app/server/node_modules/dotenv/LICENSE new file mode 100644 index 000000000..c430ad8bd --- /dev/null +++ b/food-ordering-app/server/node_modules/dotenv/LICENSE @@ -0,0 +1,23 @@ +Copyright (c) 2015, Scott Motte +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/food-ordering-app/server/node_modules/dotenv/README-es.md b/food-ordering-app/server/node_modules/dotenv/README-es.md new file mode 100644 index 000000000..441160c37 --- /dev/null +++ b/food-ordering-app/server/node_modules/dotenv/README-es.md @@ -0,0 +1,774 @@ +# dotenv [![NPM version](https://img.shields.io/npm/v/dotenv.svg?style=flat-square)](https://www.npmjs.com/package/dotenv) [![downloads](https://img.shields.io/npm/dw/dotenv)](https://www.npmjs.com/package/dotenv) + +dotenv + +Dotenv is a zero-dependency module that loads environment variables from a `.env` file into [`process.env`](https://nodejs.org/docs/latest/api/process.html#process_process_env). Storing configuration in the environment separate from code is based on [The Twelve-Factor App](https://12factor.net/config) methodology. + +[Watch the tutorial](https://www.youtube.com/watch?v=YtkZR0NFd1g) + +  + +## Usage + +Install it. + +```sh +npm install dotenv --save +``` + +Create a `.env` file in the root of your project: + +```ini +# .env +S3_BUCKET="YOURS3BUCKET" +SECRET_KEY="YOURSECRETKEYGOESHERE" +``` + +And as early as possible in your application, import and configure dotenv: + +```javascript +require('dotenv').config() // or import 'dotenv/config' if you're using ES6 +... +console.log(process.env) // remove this after you've confirmed it is working +``` + +That's it. `process.env` now has the keys and values you defined in your `.env` file: + +  + +## Advanced + +
ES6
+ +Import with [ES6](#how-do-i-use-dotenv-with-import): + +```javascript +import 'dotenv/config' +``` + +ES6 import if you need to set config options: + +```javascript +import dotenv from 'dotenv' +dotenv.config({ path: '/custom/path/to/.env' }) +``` + +
+
bun
+ +```sh +bun add dotenv +``` + +
+
yarn
+ +```sh +yarn add dotenv +``` + +
+
pnpm
+ +```sh +pnpm add dotenv +``` + +
+
Monorepos
+ +For monorepos with a structure like `apps/backend/app.js`, put it the `.env` file in the root of the folder where your `app.js` process runs. + +```ini +# app/backend/.env +S3_BUCKET="YOURS3BUCKET" +SECRET_KEY="YOURSECRETKEYGOESHERE" +``` + +
+
Multiline Values
+ +If you need multiline variables, for example private keys, those are now supported (`>= v15.0.0`) with line breaks: + +```ini +PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY----- +... +Kh9NV... +... +-----END RSA PRIVATE KEY-----" +``` + +Alternatively, you can double quote strings and use the `\n` character: + +```ini +PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\nKh9NV...\n-----END RSA PRIVATE KEY-----\n" +``` + +
+
Comments
+ +Comments may be added to your file on their own line or inline: + +```ini +# This is a comment +SECRET_KEY=YOURSECRETKEYGOESHERE # comment +SECRET_HASH="something-with-a-#-hash" +``` + +Comments begin where a `#` exists, so if your value contains a `#` please wrap it in quotes. This is a breaking change from `>= v15.0.0` and on. + +
+
Parsing
+ +The engine which parses the contents of your file containing environment variables is available to use. It accepts a String or Buffer and will return an Object with the parsed keys and values. + +```javascript +const dotenv = require('dotenv') +const buf = Buffer.from('BASIC=basic') +const config = dotenv.parse(buf) // will return an object +console.log(typeof config, config) // object { BASIC : 'basic' } +``` + +
+
Preload
+ +> Note: Consider using [`dotenvx`](https://github.com/dotenvx/dotenvx) instead of preloading. I am now doing (and recommending) so. +> +> It serves the same purpose (you do not need to require and load dotenv), adds better debugging, and works with ANY language, framework, or platform. – [motdotla](https://mot.la) + +You can use the `--require` (`-r`) [command line option](https://nodejs.org/api/cli.html#-r---require-module) to preload dotenv. By doing this, you do not need to require and load dotenv in your application code. + +```bash +$ node -r dotenv/config your_script.js +``` + +The configuration options below are supported as command line arguments in the format `dotenv_config_
+
Variable Expansion
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) for variable expansion. + +Reference and expand variables already on your machine for use in your .env file. + +```ini +# .env +USERNAME="username" +DATABASE_URL="postgres://${USERNAME}@localhost/my_database" +``` +```js +// index.js +console.log('DATABASE_URL', process.env.DATABASE_URL) +``` +```sh +$ dotenvx run --debug -- node index.js +[dotenvx@0.14.1] injecting env (2) from .env +DATABASE_URL postgres://username@localhost/my_database +``` + +
+
Command Substitution
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) for command substitution. + +Add the output of a command to one of your variables in your .env file. + +```ini +# .env +DATABASE_URL="postgres://$(whoami)@localhost/my_database" +``` +```js +// index.js +console.log('DATABASE_URL', process.env.DATABASE_URL) +``` +```sh +$ dotenvx run --debug -- node index.js +[dotenvx@0.14.1] injecting env (1) from .env +DATABASE_URL postgres://yourusername@localhost/my_database +``` + +
+
Encryption
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) for encryption. + +Add encryption to your `.env` files with a single command. + +``` +$ dotenvx set HELLO Production -f .env.production +$ echo "console.log('Hello ' + process.env.HELLO)" > index.js + +$ DOTENV_PRIVATE_KEY_PRODUCTION="<.env.production private key>" dotenvx run -- node index.js +[dotenvx] injecting env (2) from .env.production +Hello Production +``` + +[learn more](https://github.com/dotenvx/dotenvx?tab=readme-ov-file#encryption) + +
+
Multiple Environments
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) to manage multiple environments. + +Run any environment locally. Create a `.env.ENVIRONMENT` file and use `-f` to load it. It's straightforward, yet flexible. + +```bash +$ echo "HELLO=production" > .env.production +$ echo "console.log('Hello ' + process.env.HELLO)" > index.js + +$ dotenvx run -f=.env.production -- node index.js +Hello production +> ^^ +``` + +or with multiple .env files + +```bash +$ echo "HELLO=local" > .env.local +$ echo "HELLO=World" > .env +$ echo "console.log('Hello ' + process.env.HELLO)" > index.js + +$ dotenvx run -f=.env.local -f=.env -- node index.js +Hello local +``` + +[more environment examples](https://dotenvx.com/docs/quickstart/environments) + +
+
Production
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) for production deploys. + +Create a `.env.production` file. + +```sh +$ echo "HELLO=production" > .env.production +``` + +Encrypt it. + +```sh +$ dotenvx encrypt -f .env.production +``` + +Set `DOTENV_PRIVATE_KEY_PRODUCTION` (found in `.env.keys`) on your server. + +``` +$ heroku config:set DOTENV_PRIVATE_KEY_PRODUCTION=value +``` + +Commit your `.env.production` file to code and deploy. + +``` +$ git add .env.production +$ git commit -m "encrypted .env.production" +$ git push heroku main +``` + +Dotenvx will decrypt and inject the secrets at runtime using `dotenvx run -- node index.js`. + +
+
Syncing
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) to sync your .env files. + +Encrypt them with `dotenvx encrypt -f .env` and safely include them in source control. Your secrets are securely synced with your git. + +This still subscribes to the twelve-factor app rules by generating a decryption key separate from code. + +
+
More Examples
+ +See [examples](https://github.com/dotenv-org/examples) of using dotenv with various frameworks, languages, and configurations. + +* [nodejs](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-nodejs) +* [nodejs (debug on)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-nodejs-debug) +* [nodejs (override on)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-nodejs-override) +* [nodejs (processEnv override)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-custom-target) +* [esm](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-esm) +* [esm (preload)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-esm-preload) +* [typescript](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-typescript) +* [typescript parse](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-typescript-parse) +* [typescript config](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-typescript-config) +* [webpack](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-webpack) +* [webpack (plugin)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-webpack2) +* [react](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-react) +* [react (typescript)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-react-typescript) +* [express](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-express) +* [nestjs](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-nestjs) +* [fastify](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-fastify) + +
+ +  + +## Agentes + +dotenvx-as2 + +> El software está cambiando, y dotenv debe cambiar con él—por eso construí [agentic secret storage (AS2)](https://dotenvx.com/as2). Los agentes ejecutan código sin humanos en la terminal, por lo que los archivos `.env` en texto plano son el primitivo equivocado. +> +> AS2 está diseñado para software autónomo: cifrado por defecto, cero acceso a consola y entrega priorizando la criptografía que mantiene a los operadores fuera del circuito. +> +> Está respaldado por [Vestauth](https://github.com/vestauth/vestauth), la capa de autenticación pionera y de confianza para agentes—que otorga a cada agente una identidad criptográfica para firmar solicitudes con claves privadas y verificarlas con claves públicas. Sin secretos compartidos que se filtren. +> +> Es lo que uso ahora. - [motdotla](https://mot.la) + +### Inicio rápido + +Instala vestauth e inicializa tu agente. + +```bash +npm i -g vestauth + +vestauth agent init +``` + +Tu agente puede `set` secretos con un endpoint `curl` simple: + +```bash +vestauth agent curl -X POST https://as2.dotenvx.com/set -d '{"KEY":"value"}' +``` + +Y tu agente puede `get` secretos con un endpoint `curl` simple: + +```bash +vestauth agent curl https://as2.dotenvx.com/get?key=KEY +``` + +¡Eso es todo! Este nuevo primitivo habilita el acceso a secretos para agentes sin intervención humana, flujos de OAuth ni claves API. Es el futuro para los agentes. + +  + +## FAQ + +
Should I commit my `.env` file?
+ +No. + +Unless you encrypt it with [dotenvx](https://github.com/dotenvx/dotenvx). Then we recommend you do. + +
+
What about variable expansion?
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx). + +
+
Should I have multiple `.env` files?
+ +We recommend creating one `.env` file per environment. Use `.env` for local/development, `.env.production` for production and so on. This still follows the twelve factor principles as each is attributed individually to its own environment. Avoid custom set ups that work in inheritance somehow (`.env.production` inherits values form `.env` for example). It is better to duplicate values if necessary across each `.env.environment` file. + +> In a twelve-factor app, env vars are granular controls, each fully orthogonal to other env vars. They are never grouped together as “environments”, but instead are independently managed for each deploy. This is a model that scales up smoothly as the app naturally expands into more deploys over its lifetime. +> +> – [The Twelve-Factor App](http://12factor.net/config) + +Additionally, we recommend using [dotenvx](https://github.com/dotenvx/dotenvx) to encrypt and manage these. + +
+ +
How do I use dotenv with `import`?
+ +Simply.. + +```javascript +// index.mjs (ESM) +import 'dotenv/config' // see https://github.com/motdotla/dotenv#how-do-i-use-dotenv-with-import +import express from 'express' +``` + +A little background.. + +> When you run a module containing an `import` declaration, the modules it imports are loaded first, then each module body is executed in a depth-first traversal of the dependency graph, avoiding cycles by skipping anything already executed. +> +> – [ES6 In Depth: Modules](https://hacks.mozilla.org/2015/08/es6-in-depth-modules/) + +What does this mean in plain language? It means you would think the following would work but it won't. + +`errorReporter.mjs`: +```js +class Client { + constructor (apiKey) { + console.log('apiKey', apiKey) + + this.apiKey = apiKey + } +} + +export default new Client(process.env.API_KEY) +``` +`index.mjs`: +```js +// Note: this is INCORRECT and will not work +import * as dotenv from 'dotenv' +dotenv.config() + +import errorReporter from './errorReporter.mjs' // process.env.API_KEY will be blank! +``` + +`process.env.API_KEY` will be blank. + +Instead, `index.mjs` should be written as.. + +```js +import 'dotenv/config' + +import errorReporter from './errorReporter.mjs' +``` + +Does that make sense? It's a bit unintuitive, but it is how importing of ES6 modules work. Here is a [working example of this pitfall](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-es6-import-pitfall). + +There are two alternatives to this approach: + +1. Preload with dotenvx: `dotenvx run -- node index.js` (_Note: you do not need to `import` dotenv with this approach_) +2. Create a separate file that will execute `config` first as outlined in [this comment on #133](https://github.com/motdotla/dotenv/issues/133#issuecomment-255298822) +
+ +
Can I customize/write plugins for dotenv?
+ +Yes! `dotenv.config()` returns an object representing the parsed `.env` file. This gives you everything you need to continue setting values on `process.env`. For example: + +```js +const dotenv = require('dotenv') +const variableExpansion = require('dotenv-expand') +const myEnv = dotenv.config() +variableExpansion(myEnv) +``` + +
+
What rules does the parsing engine follow?
+ +The parsing engine currently supports the following rules: + +- `BASIC=basic` becomes `{BASIC: 'basic'}` +- empty lines are skipped +- lines beginning with `#` are treated as comments +- `#` marks the beginning of a comment (unless when the value is wrapped in quotes) +- empty values become empty strings (`EMPTY=` becomes `{EMPTY: ''}`) +- inner quotes are maintained (think JSON) (`JSON={"foo": "bar"}` becomes `{JSON:"{\"foo\": \"bar\"}"`) +- whitespace is removed from both ends of unquoted values (see more on [`trim`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim)) (`FOO= some value ` becomes `{FOO: 'some value'}`) +- single and double quoted values are escaped (`SINGLE_QUOTE='quoted'` becomes `{SINGLE_QUOTE: "quoted"}`) +- single and double quoted values maintain whitespace from both ends (`FOO=" some value "` becomes `{FOO: ' some value '}`) +- double quoted values expand new lines (`MULTILINE="new\nline"` becomes + +``` +{MULTILINE: 'new +line'} +``` + +- backticks are supported (`` BACKTICK_KEY=`This has 'single' and "double" quotes inside of it.` ``) + +
+
What about syncing and securing .env files?
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) to unlock syncing encrypted .env files over git. + +
+
What if I accidentally commit my `.env` file to code?
+ +Remove it, [remove git history](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository) and then install the [git pre-commit hook](https://github.com/dotenvx/dotenvx#pre-commit) to prevent this from ever happening again. + +``` +npm i -g @dotenvx/dotenvx +dotenvx precommit --install +``` + +
+
What happens to environment variables that were already set?
+ +By default, we will never modify any environment variables that have already been set. In particular, if there is a variable in your `.env` file which collides with one that already exists in your environment, then that variable will be skipped. + +If instead, you want to override `process.env` use the `override` option. + +```javascript +require('dotenv').config({ override: true }) +``` + +
+
How can I prevent committing my `.env` file to a Docker build?
+ +Use the [docker prebuild hook](https://dotenvx.com/docs/features/prebuild). + +```bash +# Dockerfile +... +RUN curl -fsS https://dotenvx.sh/ | sh +... +RUN dotenvx prebuild +CMD ["dotenvx", "run", "--", "node", "index.js"] +``` + +
+
How come my environment variables are not showing up for React?
+ +Your React code is run in Webpack, where the `fs` module or even the `process` global itself are not accessible out-of-the-box. `process.env` can only be injected through Webpack configuration. + +If you are using [`react-scripts`](https://www.npmjs.com/package/react-scripts), which is distributed through [`create-react-app`](https://create-react-app.dev/), it has dotenv built in but with a quirk. Preface your environment variables with `REACT_APP_`. See [this stack overflow](https://stackoverflow.com/questions/42182577/is-it-possible-to-use-dotenv-in-a-react-project) for more details. + +If you are using other frameworks (e.g. Next.js, Gatsby...), you need to consult their documentation for how to inject environment variables into the client. + +
+
Why is the `.env` file not loading my environment variables successfully?
+ +Most likely your `.env` file is not in the correct place. [See this stack overflow](https://stackoverflow.com/questions/42335016/dotenv-file-is-not-loading-environment-variables). + +Turn on debug mode and try again.. + +```js +require('dotenv').config({ debug: true }) +``` + +You will receive a helpful error outputted to your console. + +
+
Why am I getting the error `Module not found: Error: Can't resolve 'crypto|os|path'`?
+ +You are using dotenv on the front-end and have not included a polyfill. Webpack < 5 used to include these for you. Do the following: + +```bash +npm install node-polyfill-webpack-plugin +``` + +Configure your `webpack.config.js` to something like the following. + +```js +require('dotenv').config() + +const path = require('path'); +const webpack = require('webpack') + +const NodePolyfillPlugin = require('node-polyfill-webpack-plugin') + +module.exports = { + mode: 'development', + entry: './src/index.ts', + output: { + filename: 'bundle.js', + path: path.resolve(__dirname, 'dist'), + }, + plugins: [ + new NodePolyfillPlugin(), + new webpack.DefinePlugin({ + 'process.env': { + HELLO: JSON.stringify(process.env.HELLO) + } + }), + ] +}; +``` + +Alternatively, just use [dotenv-webpack](https://github.com/mrsteele/dotenv-webpack) which does this and more behind the scenes for you. + +
+ +  + +## Docs + +Dotenv exposes four functions: + +* `config` +* `parse` +* `populate` + +### Config + +`config` will read your `.env` file, parse the contents, assign it to +[`process.env`](https://nodejs.org/docs/latest/api/process.html#process_process_env), +and return an Object with a `parsed` key containing the loaded content or an `error` key if it failed. + +```js +const result = dotenv.config() + +if (result.error) { + throw result.error +} + +console.log(result.parsed) +``` + +You can additionally, pass options to `config`. + +#### Options + +##### path + +Default: `path.resolve(process.cwd(), '.env')` + +Specify a custom path if your file containing environment variables is located elsewhere. + +```js +require('dotenv').config({ path: '/custom/path/to/.env' }) +``` + +By default, `config` will look for a file called .env in the current working directory. + +Pass in multiple files as an array, and they will be parsed in order and combined with `process.env` (or `option.processEnv`, if set). The first value set for a variable will win, unless the `options.override` flag is set, in which case the last value set will win. If a value already exists in `process.env` and the `options.override` flag is NOT set, no changes will be made to that value. + +```js +require('dotenv').config({ path: ['.env.local', '.env'] }) +``` + +##### quiet + +Default: `false` + +Suppress runtime logging message. + +```js +// index.js +require('dotenv').config({ quiet: false }) // change to true to suppress +console.log(`Hello ${process.env.HELLO}`) +``` + +```ini +# .env +HELLO=World +``` + +```sh +$ node index.js +[dotenv@17.0.0] injecting env (1) from .env +Hello World +``` + +##### encoding + +Default: `utf8` + +Specify the encoding of your file containing environment variables. + +```js +require('dotenv').config({ encoding: 'latin1' }) +``` + +##### debug + +Default: `false` + +Turn on logging to help debug why certain keys or values are not being set as you expect. + +```js +require('dotenv').config({ debug: process.env.DEBUG }) +``` + +##### override + +Default: `false` + +Override any environment variables that have already been set on your machine with values from your .env file(s). If multiple files have been provided in `option.path` the override will also be used as each file is combined with the next. Without `override` being set, the first value wins. With `override` set the last value wins. + +```js +require('dotenv').config({ override: true }) +``` + +##### processEnv + +Default: `process.env` + +Specify an object to write your environment variables to. Defaults to `process.env` environment variables. + +```js +const myObject = {} +require('dotenv').config({ processEnv: myObject }) + +console.log(myObject) // values from .env +console.log(process.env) // this was not changed or written to +``` + +### Parse + +The engine which parses the contents of your file containing environment +variables is available to use. It accepts a String or Buffer and will return +an Object with the parsed keys and values. + +```js +const dotenv = require('dotenv') +const buf = Buffer.from('BASIC=basic') +const config = dotenv.parse(buf) // will return an object +console.log(typeof config, config) // object { BASIC : 'basic' } +``` + +#### Options + +##### debug + +Default: `false` + +Turn on logging to help debug why certain keys or values are not being set as you expect. + +```js +const dotenv = require('dotenv') +const buf = Buffer.from('hello world') +const opt = { debug: true } +const config = dotenv.parse(buf, opt) +// expect a debug message because the buffer is not in KEY=VAL form +``` + +### Populate + +The engine which populates the contents of your .env file to `process.env` is available for use. It accepts a target, a source, and options. This is useful for power users who want to supply their own objects. + +For example, customizing the source: + +```js +const dotenv = require('dotenv') +const parsed = { HELLO: 'world' } + +dotenv.populate(process.env, parsed) + +console.log(process.env.HELLO) // world +``` + +For example, customizing the source AND target: + +```js +const dotenv = require('dotenv') +const parsed = { HELLO: 'universe' } +const target = { HELLO: 'world' } // empty object + +dotenv.populate(target, parsed, { override: true, debug: true }) + +console.log(target) // { HELLO: 'universe' } +``` + +#### options + +##### Debug + +Default: `false` + +Turn on logging to help debug why certain keys or values are not being populated as you expect. + +##### override + +Default: `false` + +Override any environment variables that have already been set. + +  + +## CHANGELOG + +See [CHANGELOG.md](CHANGELOG.md) + +  + +## Who's using dotenv? + +[These npm modules depend on it.](https://www.npmjs.com/browse/depended/dotenv) + +Projects that expand it often use the [keyword "dotenv" on npm](https://www.npmjs.com/search?q=keywords:dotenv). diff --git a/food-ordering-app/server/node_modules/dotenv/README.md b/food-ordering-app/server/node_modules/dotenv/README.md new file mode 100644 index 000000000..b82a43814 --- /dev/null +++ b/food-ordering-app/server/node_modules/dotenv/README.md @@ -0,0 +1,774 @@ +# dotenv [![NPM version](https://img.shields.io/npm/v/dotenv.svg?style=flat-square)](https://www.npmjs.com/package/dotenv) [![downloads](https://img.shields.io/npm/dw/dotenv)](https://www.npmjs.com/package/dotenv) + +dotenv + +Dotenv is a zero-dependency module that loads environment variables from a `.env` file into [`process.env`](https://nodejs.org/docs/latest/api/process.html#process_process_env). Storing configuration in the environment separate from code is based on [The Twelve-Factor App](https://12factor.net/config) methodology. + +[Watch the tutorial](https://www.youtube.com/watch?v=YtkZR0NFd1g) + +  + +## Usage + +Install it. + +```sh +npm install dotenv --save +``` + +Create a `.env` file in the root of your project: + +```ini +# .env +S3_BUCKET="YOURS3BUCKET" +SECRET_KEY="YOURSECRETKEYGOESHERE" +``` + +And as early as possible in your application, import and configure dotenv: + +```javascript +require('dotenv').config() // or import 'dotenv/config' if you're using ES6 +... +console.log(process.env) // remove this after you've confirmed it is working +``` + +That's it. `process.env` now has the keys and values you defined in your `.env` file: + +  + +## Advanced + +
ES6
+ +Import with [ES6](#how-do-i-use-dotenv-with-import): + +```javascript +import 'dotenv/config' +``` + +ES6 import if you need to set config options: + +```javascript +import dotenv from 'dotenv' +dotenv.config({ path: '/custom/path/to/.env' }) +``` + +
+
bun
+ +```sh +bun add dotenv +``` + +
+
yarn
+ +```sh +yarn add dotenv +``` + +
+
pnpm
+ +```sh +pnpm add dotenv +``` + +
+
Monorepos
+ +For monorepos with a structure like `apps/backend/app.js`, put it the `.env` file in the root of the folder where your `app.js` process runs. + +```ini +# app/backend/.env +S3_BUCKET="YOURS3BUCKET" +SECRET_KEY="YOURSECRETKEYGOESHERE" +``` + +
+
Multiline Values
+ +If you need multiline variables, for example private keys, those are now supported (`>= v15.0.0`) with line breaks: + +```ini +PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY----- +... +Kh9NV... +... +-----END RSA PRIVATE KEY-----" +``` + +Alternatively, you can double quote strings and use the `\n` character: + +```ini +PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\nKh9NV...\n-----END RSA PRIVATE KEY-----\n" +``` + +
+
Comments
+ +Comments may be added to your file on their own line or inline: + +```ini +# This is a comment +SECRET_KEY=YOURSECRETKEYGOESHERE # comment +SECRET_HASH="something-with-a-#-hash" +``` + +Comments begin where a `#` exists, so if your value contains a `#` please wrap it in quotes. This is a breaking change from `>= v15.0.0` and on. + +
+
Parsing
+ +The engine which parses the contents of your file containing environment variables is available to use. It accepts a String or Buffer and will return an Object with the parsed keys and values. + +```javascript +const dotenv = require('dotenv') +const buf = Buffer.from('BASIC=basic') +const config = dotenv.parse(buf) // will return an object +console.log(typeof config, config) // object { BASIC : 'basic' } +``` + +
+
Preload
+ +> Note: Consider using [`dotenvx`](https://github.com/dotenvx/dotenvx) instead of preloading. I am now doing (and recommending) so. +> +> It serves the same purpose (you do not need to require and load dotenv), adds better debugging, and works with ANY language, framework, or platform. – [motdotla](https://mot.la) + +You can use the `--require` (`-r`) [command line option](https://nodejs.org/api/cli.html#-r---require-module) to preload dotenv. By doing this, you do not need to require and load dotenv in your application code. + +```bash +$ node -r dotenv/config your_script.js +``` + +The configuration options below are supported as command line arguments in the format `dotenv_config_
+
Variable Expansion
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) for variable expansion. + +Reference and expand variables already on your machine for use in your .env file. + +```ini +# .env +USERNAME="username" +DATABASE_URL="postgres://${USERNAME}@localhost/my_database" +``` +```js +// index.js +console.log('DATABASE_URL', process.env.DATABASE_URL) +``` +```sh +$ dotenvx run --debug -- node index.js +[dotenvx@0.14.1] injecting env (2) from .env +DATABASE_URL postgres://username@localhost/my_database +``` + +
+
Command Substitution
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) for command substitution. + +Add the output of a command to one of your variables in your .env file. + +```ini +# .env +DATABASE_URL="postgres://$(whoami)@localhost/my_database" +``` +```js +// index.js +console.log('DATABASE_URL', process.env.DATABASE_URL) +``` +```sh +$ dotenvx run --debug -- node index.js +[dotenvx@0.14.1] injecting env (1) from .env +DATABASE_URL postgres://yourusername@localhost/my_database +``` + +
+
Encryption
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) for encryption. + +Add encryption to your `.env` files with a single command. + +``` +$ dotenvx set HELLO Production -f .env.production +$ echo "console.log('Hello ' + process.env.HELLO)" > index.js + +$ DOTENV_PRIVATE_KEY_PRODUCTION="<.env.production private key>" dotenvx run -- node index.js +[dotenvx] injecting env (2) from .env.production +Hello Production +``` + +[learn more](https://github.com/dotenvx/dotenvx?tab=readme-ov-file#encryption) + +
+
Multiple Environments
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) to manage multiple environments. + +Run any environment locally. Create a `.env.ENVIRONMENT` file and use `-f` to load it. It's straightforward, yet flexible. + +```bash +$ echo "HELLO=production" > .env.production +$ echo "console.log('Hello ' + process.env.HELLO)" > index.js + +$ dotenvx run -f=.env.production -- node index.js +Hello production +> ^^ +``` + +or with multiple .env files + +```bash +$ echo "HELLO=local" > .env.local +$ echo "HELLO=World" > .env +$ echo "console.log('Hello ' + process.env.HELLO)" > index.js + +$ dotenvx run -f=.env.local -f=.env -- node index.js +Hello local +``` + +[more environment examples](https://dotenvx.com/docs/quickstart/environments) + +
+
Production
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) for production deploys. + +Create a `.env.production` file. + +```sh +$ echo "HELLO=production" > .env.production +``` + +Encrypt it. + +```sh +$ dotenvx encrypt -f .env.production +``` + +Set `DOTENV_PRIVATE_KEY_PRODUCTION` (found in `.env.keys`) on your server. + +``` +$ heroku config:set DOTENV_PRIVATE_KEY_PRODUCTION=value +``` + +Commit your `.env.production` file to code and deploy. + +``` +$ git add .env.production +$ git commit -m "encrypted .env.production" +$ git push heroku main +``` + +Dotenvx will decrypt and inject the secrets at runtime using `dotenvx run -- node index.js`. + +
+
Syncing
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) to sync your .env files. + +Encrypt them with `dotenvx encrypt -f .env` and safely include them in source control. Your secrets are securely synced with your git. + +This still subscribes to the twelve-factor app rules by generating a decryption key separate from code. + +
+
More Examples
+ +See [examples](https://github.com/dotenv-org/examples) of using dotenv with various frameworks, languages, and configurations. + +* [nodejs](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-nodejs) +* [nodejs (debug on)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-nodejs-debug) +* [nodejs (override on)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-nodejs-override) +* [nodejs (processEnv override)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-custom-target) +* [esm](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-esm) +* [esm (preload)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-esm-preload) +* [typescript](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-typescript) +* [typescript parse](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-typescript-parse) +* [typescript config](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-typescript-config) +* [webpack](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-webpack) +* [webpack (plugin)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-webpack2) +* [react](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-react) +* [react (typescript)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-react-typescript) +* [express](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-express) +* [nestjs](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-nestjs) +* [fastify](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-fastify) + +
+ +  + +## Agents + +dotenvx-as2 + +> Software is changing, and dotenv must change with it—that is why I built [agentic secret storage (AS2)](https://dotenvx.com/as2). Agents run code without humans at terminals, so plaintext `.env` files are the wrong primitive. +> +> AS2 is built for autonomous software: encrypted by default, zero console access, and cryptography‑first delivery that keeps operators out of the loop. +> +> It is backed by [Vestauth](https://github.com/vestauth/vestauth), the trusted, pioneering auth layer for agents—giving each agent a cryptographic identity so requests are signed with private keys and verified with public keys. No shared secrets to leak. +> +> It's what I'm using now. - [motdotla](https://mot.la) + +### Quickstart + +Install vestauth and initialize your agent. + +```bash +npm i -g vestauth + +vestauth agent init +``` + +Your agent `set`s secrets with a simple `curl` endpoint: + +```bash +vestauth agent curl -X POST https://as2.dotenvx.com/set -d '{"KEY":"value"}' +``` + +And your agent `get`s secrets with a simple `curl` endpoint: + +```bash +vestauth agent curl https://as2.dotenvx.com/get?key=KEY +``` + +That's it! This new primitive unlocks secrets access for agents without human-in-the-loop, oauth flows, or API keys. It's the future for agents. + +  + +## FAQ + +
Should I commit my `.env` file?
+ +No. + +Unless you encrypt it with [dotenvx](https://github.com/dotenvx/dotenvx). Then we recommend you do. + +
+
What about variable expansion?
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx). + +
+
Should I have multiple `.env` files?
+ +We recommend creating one `.env` file per environment. Use `.env` for local/development, `.env.production` for production and so on. This still follows the twelve factor principles as each is attributed individually to its own environment. Avoid custom set ups that work in inheritance somehow (`.env.production` inherits values form `.env` for example). It is better to duplicate values if necessary across each `.env.environment` file. + +> In a twelve-factor app, env vars are granular controls, each fully orthogonal to other env vars. They are never grouped together as “environments”, but instead are independently managed for each deploy. This is a model that scales up smoothly as the app naturally expands into more deploys over its lifetime. +> +> – [The Twelve-Factor App](http://12factor.net/config) + +Additionally, we recommend using [dotenvx](https://github.com/dotenvx/dotenvx) to encrypt and manage these. + +
+ +
How do I use dotenv with `import`?
+ +Simply.. + +```javascript +// index.mjs (ESM) +import 'dotenv/config' // see https://github.com/motdotla/dotenv#how-do-i-use-dotenv-with-import +import express from 'express' +``` + +A little background.. + +> When you run a module containing an `import` declaration, the modules it imports are loaded first, then each module body is executed in a depth-first traversal of the dependency graph, avoiding cycles by skipping anything already executed. +> +> – [ES6 In Depth: Modules](https://hacks.mozilla.org/2015/08/es6-in-depth-modules/) + +What does this mean in plain language? It means you would think the following would work but it won't. + +`errorReporter.mjs`: +```js +class Client { + constructor (apiKey) { + console.log('apiKey', apiKey) + + this.apiKey = apiKey + } +} + +export default new Client(process.env.API_KEY) +``` +`index.mjs`: +```js +// Note: this is INCORRECT and will not work +import * as dotenv from 'dotenv' +dotenv.config() + +import errorReporter from './errorReporter.mjs' // process.env.API_KEY will be blank! +``` + +`process.env.API_KEY` will be blank. + +Instead, `index.mjs` should be written as.. + +```js +import 'dotenv/config' + +import errorReporter from './errorReporter.mjs' +``` + +Does that make sense? It's a bit unintuitive, but it is how importing of ES6 modules work. Here is a [working example of this pitfall](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-es6-import-pitfall). + +There are two alternatives to this approach: + +1. Preload with dotenvx: `dotenvx run -- node index.js` (_Note: you do not need to `import` dotenv with this approach_) +2. Create a separate file that will execute `config` first as outlined in [this comment on #133](https://github.com/motdotla/dotenv/issues/133#issuecomment-255298822) +
+ +
Can I customize/write plugins for dotenv?
+ +Yes! `dotenv.config()` returns an object representing the parsed `.env` file. This gives you everything you need to continue setting values on `process.env`. For example: + +```js +const dotenv = require('dotenv') +const variableExpansion = require('dotenv-expand') +const myEnv = dotenv.config() +variableExpansion(myEnv) +``` + +
+
What rules does the parsing engine follow?
+ +The parsing engine currently supports the following rules: + +- `BASIC=basic` becomes `{BASIC: 'basic'}` +- empty lines are skipped +- lines beginning with `#` are treated as comments +- `#` marks the beginning of a comment (unless when the value is wrapped in quotes) +- empty values become empty strings (`EMPTY=` becomes `{EMPTY: ''}`) +- inner quotes are maintained (think JSON) (`JSON={"foo": "bar"}` becomes `{JSON:"{\"foo\": \"bar\"}"`) +- whitespace is removed from both ends of unquoted values (see more on [`trim`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim)) (`FOO= some value ` becomes `{FOO: 'some value'}`) +- single and double quoted values are escaped (`SINGLE_QUOTE='quoted'` becomes `{SINGLE_QUOTE: "quoted"}`) +- single and double quoted values maintain whitespace from both ends (`FOO=" some value "` becomes `{FOO: ' some value '}`) +- double quoted values expand new lines (`MULTILINE="new\nline"` becomes + +``` +{MULTILINE: 'new +line'} +``` + +- backticks are supported (`` BACKTICK_KEY=`This has 'single' and "double" quotes inside of it.` ``) + +
+
What about syncing and securing .env files?
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) to unlock syncing encrypted .env files over git. + +
+
What if I accidentally commit my `.env` file to code?
+ +Remove it, [remove git history](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository) and then install the [git pre-commit hook](https://github.com/dotenvx/dotenvx#pre-commit) to prevent this from ever happening again. + +``` +npm i -g @dotenvx/dotenvx +dotenvx precommit --install +``` + +
+
What happens to environment variables that were already set?
+ +By default, we will never modify any environment variables that have already been set. In particular, if there is a variable in your `.env` file which collides with one that already exists in your environment, then that variable will be skipped. + +If instead, you want to override `process.env` use the `override` option. + +```javascript +require('dotenv').config({ override: true }) +``` + +
+
How can I prevent committing my `.env` file to a Docker build?
+ +Use the [docker prebuild hook](https://dotenvx.com/docs/features/prebuild). + +```bash +# Dockerfile +... +RUN curl -fsS https://dotenvx.sh/ | sh +... +RUN dotenvx prebuild +CMD ["dotenvx", "run", "--", "node", "index.js"] +``` + +
+
How come my environment variables are not showing up for React?
+ +Your React code is run in Webpack, where the `fs` module or even the `process` global itself are not accessible out-of-the-box. `process.env` can only be injected through Webpack configuration. + +If you are using [`react-scripts`](https://www.npmjs.com/package/react-scripts), which is distributed through [`create-react-app`](https://create-react-app.dev/), it has dotenv built in but with a quirk. Preface your environment variables with `REACT_APP_`. See [this stack overflow](https://stackoverflow.com/questions/42182577/is-it-possible-to-use-dotenv-in-a-react-project) for more details. + +If you are using other frameworks (e.g. Next.js, Gatsby...), you need to consult their documentation for how to inject environment variables into the client. + +
+
Why is the `.env` file not loading my environment variables successfully?
+ +Most likely your `.env` file is not in the correct place. [See this stack overflow](https://stackoverflow.com/questions/42335016/dotenv-file-is-not-loading-environment-variables). + +Turn on debug mode and try again.. + +```js +require('dotenv').config({ debug: true }) +``` + +You will receive a helpful error outputted to your console. + +
+
Why am I getting the error `Module not found: Error: Can't resolve 'crypto|os|path'`?
+ +You are using dotenv on the front-end and have not included a polyfill. Webpack < 5 used to include these for you. Do the following: + +```bash +npm install node-polyfill-webpack-plugin +``` + +Configure your `webpack.config.js` to something like the following. + +```js +require('dotenv').config() + +const path = require('path'); +const webpack = require('webpack') + +const NodePolyfillPlugin = require('node-polyfill-webpack-plugin') + +module.exports = { + mode: 'development', + entry: './src/index.ts', + output: { + filename: 'bundle.js', + path: path.resolve(__dirname, 'dist'), + }, + plugins: [ + new NodePolyfillPlugin(), + new webpack.DefinePlugin({ + 'process.env': { + HELLO: JSON.stringify(process.env.HELLO) + } + }), + ] +}; +``` + +Alternatively, just use [dotenv-webpack](https://github.com/mrsteele/dotenv-webpack) which does this and more behind the scenes for you. + +
+ +  + +## Docs + +Dotenv exposes four functions: + +* `config` +* `parse` +* `populate` + +### Config + +`config` will read your `.env` file, parse the contents, assign it to +[`process.env`](https://nodejs.org/docs/latest/api/process.html#process_process_env), +and return an Object with a `parsed` key containing the loaded content or an `error` key if it failed. + +```js +const result = dotenv.config() + +if (result.error) { + throw result.error +} + +console.log(result.parsed) +``` + +You can additionally, pass options to `config`. + +#### Options + +##### path + +Default: `path.resolve(process.cwd(), '.env')` + +Specify a custom path if your file containing environment variables is located elsewhere. + +```js +require('dotenv').config({ path: '/custom/path/to/.env' }) +``` + +By default, `config` will look for a file called .env in the current working directory. + +Pass in multiple files as an array, and they will be parsed in order and combined with `process.env` (or `option.processEnv`, if set). The first value set for a variable will win, unless the `options.override` flag is set, in which case the last value set will win. If a value already exists in `process.env` and the `options.override` flag is NOT set, no changes will be made to that value. + +```js +require('dotenv').config({ path: ['.env.local', '.env'] }) +``` + +##### quiet + +Default: `false` + +Suppress runtime logging message. + +```js +// index.js +require('dotenv').config({ quiet: false }) // change to true to suppress +console.log(`Hello ${process.env.HELLO}`) +``` + +```ini +# .env +HELLO=World +``` + +```sh +$ node index.js +[dotenv@17.0.0] injecting env (1) from .env +Hello World +``` + +##### encoding + +Default: `utf8` + +Specify the encoding of your file containing environment variables. + +```js +require('dotenv').config({ encoding: 'latin1' }) +``` + +##### debug + +Default: `false` + +Turn on logging to help debug why certain keys or values are not being set as you expect. + +```js +require('dotenv').config({ debug: process.env.DEBUG }) +``` + +##### override + +Default: `false` + +Override any environment variables that have already been set on your machine with values from your .env file(s). If multiple files have been provided in `option.path` the override will also be used as each file is combined with the next. Without `override` being set, the first value wins. With `override` set the last value wins. + +```js +require('dotenv').config({ override: true }) +``` + +##### processEnv + +Default: `process.env` + +Specify an object to write your environment variables to. Defaults to `process.env` environment variables. + +```js +const myObject = {} +require('dotenv').config({ processEnv: myObject }) + +console.log(myObject) // values from .env +console.log(process.env) // this was not changed or written to +``` + +### Parse + +The engine which parses the contents of your file containing environment +variables is available to use. It accepts a String or Buffer and will return +an Object with the parsed keys and values. + +```js +const dotenv = require('dotenv') +const buf = Buffer.from('BASIC=basic') +const config = dotenv.parse(buf) // will return an object +console.log(typeof config, config) // object { BASIC : 'basic' } +``` + +#### Options + +##### debug + +Default: `false` + +Turn on logging to help debug why certain keys or values are not being set as you expect. + +```js +const dotenv = require('dotenv') +const buf = Buffer.from('hello world') +const opt = { debug: true } +const config = dotenv.parse(buf, opt) +// expect a debug message because the buffer is not in KEY=VAL form +``` + +### Populate + +The engine which populates the contents of your .env file to `process.env` is available for use. It accepts a target, a source, and options. This is useful for power users who want to supply their own objects. + +For example, customizing the source: + +```js +const dotenv = require('dotenv') +const parsed = { HELLO: 'world' } + +dotenv.populate(process.env, parsed) + +console.log(process.env.HELLO) // world +``` + +For example, customizing the source AND target: + +```js +const dotenv = require('dotenv') +const parsed = { HELLO: 'universe' } +const target = { HELLO: 'world' } // empty object + +dotenv.populate(target, parsed, { override: true, debug: true }) + +console.log(target) // { HELLO: 'universe' } +``` + +#### options + +##### Debug + +Default: `false` + +Turn on logging to help debug why certain keys or values are not being populated as you expect. + +##### override + +Default: `false` + +Override any environment variables that have already been set. + +  + +## CHANGELOG + +See [CHANGELOG.md](CHANGELOG.md) + +  + +## Who's using dotenv? + +[These npm modules depend on it.](https://www.npmjs.com/browse/depended/dotenv) + +Projects that expand it often use the [keyword "dotenv" on npm](https://www.npmjs.com/search?q=keywords:dotenv). diff --git a/food-ordering-app/server/node_modules/dotenv/SECURITY.md b/food-ordering-app/server/node_modules/dotenv/SECURITY.md new file mode 100644 index 000000000..237a8ce74 --- /dev/null +++ b/food-ordering-app/server/node_modules/dotenv/SECURITY.md @@ -0,0 +1 @@ +Please report any security vulnerabilities to security@dotenvx.com. diff --git a/food-ordering-app/server/node_modules/dotenv/config.d.ts b/food-ordering-app/server/node_modules/dotenv/config.d.ts new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/food-ordering-app/server/node_modules/dotenv/config.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/food-ordering-app/server/node_modules/dotenv/config.js b/food-ordering-app/server/node_modules/dotenv/config.js new file mode 100644 index 000000000..b0b5576be --- /dev/null +++ b/food-ordering-app/server/node_modules/dotenv/config.js @@ -0,0 +1,9 @@ +(function () { + require('./lib/main').config( + Object.assign( + {}, + require('./lib/env-options'), + require('./lib/cli-options')(process.argv) + ) + ) +})() diff --git a/food-ordering-app/server/node_modules/dotenv/lib/cli-options.js b/food-ordering-app/server/node_modules/dotenv/lib/cli-options.js new file mode 100644 index 000000000..b6e40db08 --- /dev/null +++ b/food-ordering-app/server/node_modules/dotenv/lib/cli-options.js @@ -0,0 +1,17 @@ +const re = /^dotenv_config_(encoding|path|quiet|debug|override|DOTENV_KEY)=(.+)$/ + +module.exports = function optionMatcher (args) { + const options = args.reduce(function (acc, cur) { + const matches = cur.match(re) + if (matches) { + acc[matches[1]] = matches[2] + } + return acc + }, {}) + + if (!('quiet' in options)) { + options.quiet = 'true' + } + + return options +} diff --git a/food-ordering-app/server/node_modules/dotenv/lib/env-options.js b/food-ordering-app/server/node_modules/dotenv/lib/env-options.js new file mode 100644 index 000000000..5dcee8a37 --- /dev/null +++ b/food-ordering-app/server/node_modules/dotenv/lib/env-options.js @@ -0,0 +1,28 @@ +// ../config.js accepts options via environment variables +const options = {} + +if (process.env.DOTENV_CONFIG_ENCODING != null) { + options.encoding = process.env.DOTENV_CONFIG_ENCODING +} + +if (process.env.DOTENV_CONFIG_PATH != null) { + options.path = process.env.DOTENV_CONFIG_PATH +} + +if (process.env.DOTENV_CONFIG_QUIET != null) { + options.quiet = process.env.DOTENV_CONFIG_QUIET +} + +if (process.env.DOTENV_CONFIG_DEBUG != null) { + options.debug = process.env.DOTENV_CONFIG_DEBUG +} + +if (process.env.DOTENV_CONFIG_OVERRIDE != null) { + options.override = process.env.DOTENV_CONFIG_OVERRIDE +} + +if (process.env.DOTENV_CONFIG_DOTENV_KEY != null) { + options.DOTENV_KEY = process.env.DOTENV_CONFIG_DOTENV_KEY +} + +module.exports = options diff --git a/food-ordering-app/server/node_modules/dotenv/lib/main.d.ts b/food-ordering-app/server/node_modules/dotenv/lib/main.d.ts new file mode 100644 index 000000000..3e57f24fc --- /dev/null +++ b/food-ordering-app/server/node_modules/dotenv/lib/main.d.ts @@ -0,0 +1,179 @@ +// TypeScript Version: 3.0 +/// +import type { URL } from 'url'; + +export interface DotenvParseOutput { + [name: string]: string; +} + +export interface DotenvPopulateOutput { + [name: string]: string; +} + +/** + * Parses a string or buffer in the .env file format into an object. + * + * See https://dotenvx.com/docs + * + * @param src - contents to be parsed. example: `'DB_HOST=localhost'` + * @returns an object with keys and values based on `src`. example: `{ DB_HOST : 'localhost' }` + */ +export function parse( + src: string | Buffer +): T; + +export interface DotenvConfigOptions { + /** + * Default: `path.resolve(process.cwd(), '.env')` + * + * Specify a custom path if your file containing environment variables is located elsewhere. + * Can also be an array of strings, specifying multiple paths. + * + * example: `require('dotenv').config({ path: '/custom/path/to/.env' })` + * example: `require('dotenv').config({ path: ['/path/to/first.env', '/path/to/second.env'] })` + */ + path?: string | string[] | URL; + + /** + * Default: `utf8` + * + * Specify the encoding of your file containing environment variables. + * + * example: `require('dotenv').config({ encoding: 'latin1' })` + */ + encoding?: string; + + /** + * Default: `false` + * + * Suppress all output (except errors). + * + * example: `require('dotenv').config({ quiet: true })` + */ + quiet?: boolean; + + /** + * Default: `false` + * + * Turn on logging to help debug why certain keys or values are not being set as you expect. + * + * example: `require('dotenv').config({ debug: process.env.DEBUG })` + */ + debug?: boolean; + + /** + * Default: `false` + * + * Override any environment variables that have already been set on your machine with values from your .env file. + * + * example: `require('dotenv').config({ override: true })` + */ + override?: boolean; + + /** + * Default: `process.env` + * + * Specify an object to write your secrets to. Defaults to process.env environment variables. + * + * example: `const processEnv = {}; require('dotenv').config({ processEnv: processEnv })` + */ + processEnv?: DotenvPopulateInput; + + /** + * Default: `undefined` + * + * Pass the DOTENV_KEY directly to config options. Defaults to looking for process.env.DOTENV_KEY environment variable. Note this only applies to decrypting .env.vault files. If passed as null or undefined, or not passed at all, dotenv falls back to its traditional job of parsing a .env file. + * + * example: `require('dotenv').config({ DOTENV_KEY: 'dotenv://:key_1234…@dotenvx.com/vault/.env.vault?environment=production' })` + */ + DOTENV_KEY?: string; +} + +export interface DotenvConfigOutput { + error?: DotenvError; + parsed?: DotenvParseOutput; +} + +type DotenvError = Error & { + code: + | 'MISSING_DATA' + | 'INVALID_DOTENV_KEY' + | 'NOT_FOUND_DOTENV_ENVIRONMENT' + | 'DECRYPTION_FAILED' + | 'OBJECT_REQUIRED'; +} + +export interface DotenvPopulateOptions { + /** + * Default: `false` + * + * Turn on logging to help debug why certain keys or values are not being set as you expect. + * + * example: `require('dotenv').config({ debug: process.env.DEBUG })` + */ + debug?: boolean; + + /** + * Default: `false` + * + * Override any environment variables that have already been set on your machine with values from your .env file. + * + * example: `require('dotenv').config({ override: true })` + */ + override?: boolean; +} + +export interface DotenvPopulateInput { + [name: string]: string | undefined; +} + +/** + * Loads `.env` file contents into process.env by default. If `DOTENV_KEY` is present, it smartly attempts to load encrypted `.env.vault` file contents into process.env. + * + * See https://dotenvx.com/docs + * + * @param options - additional options. example: `{ path: './custom/path', encoding: 'latin1', quiet: false, debug: true, override: false }` + * @returns an object with a `parsed` key if successful or `error` key if an error occurred. example: { parsed: { KEY: 'value' } } + * + */ +export function config(options?: DotenvConfigOptions): DotenvConfigOutput; + +/** + * Loads `.env` file contents into process.env. + * + * See https://dotenvx.com/docs + * + * @param options - additional options. example: `{ path: './custom/path', encoding: 'latin1', quiet: false, debug: true, override: false }` + * @returns an object with a `parsed` key if successful or `error` key if an error occurred. example: { parsed: { KEY: 'value' } } + * + */ +export function configDotenv(options?: DotenvConfigOptions): DotenvConfigOutput; + +/** + * Loads `source` json contents into `target` like process.env. + * + * See https://dotenvx.com/docs + * + * @param processEnv - the target JSON object. in most cases use process.env but you can also pass your own JSON object + * @param parsed - the source JSON object + * @param options - additional options. example: `{ quiet: false, debug: true, override: false }` + * @returns an object with the keys and values that were actually set + * + */ +export function populate( + processEnv: DotenvPopulateInput, + parsed: DotenvPopulateInput, + options?: DotenvConfigOptions +): DotenvPopulateOutput; + +/** + * Decrypt ciphertext + * + * See https://dotenvx.com/docs + * + * @param encrypted - the encrypted ciphertext string + * @param keyStr - the decryption key string + * @returns {string} + * + */ +export function decrypt(encrypted: string, keyStr: string): string; diff --git a/food-ordering-app/server/node_modules/dotenv/lib/main.js b/food-ordering-app/server/node_modules/dotenv/lib/main.js new file mode 100644 index 000000000..967107c90 --- /dev/null +++ b/food-ordering-app/server/node_modules/dotenv/lib/main.js @@ -0,0 +1,431 @@ +const fs = require('fs') +const path = require('path') +const os = require('os') +const crypto = require('crypto') +const packageJson = require('../package.json') + +const version = packageJson.version + +// Array of tips to display randomly +const TIPS = [ + '🔐 encrypt with Dotenvx: https://dotenvx.com', + '🔐 prevent committing .env to code: https://dotenvx.com/precommit', + '🔐 prevent building .env in docker: https://dotenvx.com/prebuild', + '🤖 agentic secret storage: https://dotenvx.com/as2', + '⚡️ secrets for agents: https://dotenvx.com/as2', + '🛡️ auth for agents: https://vestauth.com', + '🛠️ run anywhere with `dotenvx run -- yourcommand`', + '⚙️ specify custom .env file path with { path: \'/custom/path/.env\' }', + '⚙️ enable debug logging with { debug: true }', + '⚙️ override existing env vars with { override: true }', + '⚙️ suppress all logs with { quiet: true }', + '⚙️ write to custom object with { processEnv: myObject }', + '⚙️ load multiple .env files with { path: [\'.env.local\', \'.env\'] }' +] + +// Get a random tip from the tips array +function _getRandomTip () { + return TIPS[Math.floor(Math.random() * TIPS.length)] +} + +function parseBoolean (value) { + if (typeof value === 'string') { + return !['false', '0', 'no', 'off', ''].includes(value.toLowerCase()) + } + return Boolean(value) +} + +function supportsAnsi () { + return process.stdout.isTTY // && process.env.TERM !== 'dumb' +} + +function dim (text) { + return supportsAnsi() ? `\x1b[2m${text}\x1b[0m` : text +} + +const LINE = /(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg + +// Parse src into an Object +function parse (src) { + const obj = {} + + // Convert buffer to string + let lines = src.toString() + + // Convert line breaks to same format + lines = lines.replace(/\r\n?/mg, '\n') + + let match + while ((match = LINE.exec(lines)) != null) { + const key = match[1] + + // Default undefined or null to empty string + let value = (match[2] || '') + + // Remove whitespace + value = value.trim() + + // Check if double quoted + const maybeQuote = value[0] + + // Remove surrounding quotes + value = value.replace(/^(['"`])([\s\S]*)\1$/mg, '$2') + + // Expand newlines if double quoted + if (maybeQuote === '"') { + value = value.replace(/\\n/g, '\n') + value = value.replace(/\\r/g, '\r') + } + + // Add to object + obj[key] = value + } + + return obj +} + +function _parseVault (options) { + options = options || {} + + const vaultPath = _vaultPath(options) + options.path = vaultPath // parse .env.vault + const result = DotenvModule.configDotenv(options) + if (!result.parsed) { + const err = new Error(`MISSING_DATA: Cannot parse ${vaultPath} for an unknown reason`) + err.code = 'MISSING_DATA' + throw err + } + + // handle scenario for comma separated keys - for use with key rotation + // example: DOTENV_KEY="dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=prod,dotenv://:key_7890@dotenvx.com/vault/.env.vault?environment=prod" + const keys = _dotenvKey(options).split(',') + const length = keys.length + + let decrypted + for (let i = 0; i < length; i++) { + try { + // Get full key + const key = keys[i].trim() + + // Get instructions for decrypt + const attrs = _instructions(result, key) + + // Decrypt + decrypted = DotenvModule.decrypt(attrs.ciphertext, attrs.key) + + break + } catch (error) { + // last key + if (i + 1 >= length) { + throw error + } + // try next key + } + } + + // Parse decrypted .env string + return DotenvModule.parse(decrypted) +} + +function _warn (message) { + console.error(`[dotenv@${version}][WARN] ${message}`) +} + +function _debug (message) { + console.log(`[dotenv@${version}][DEBUG] ${message}`) +} + +function _log (message) { + console.log(`[dotenv@${version}] ${message}`) +} + +function _dotenvKey (options) { + // prioritize developer directly setting options.DOTENV_KEY + if (options && options.DOTENV_KEY && options.DOTENV_KEY.length > 0) { + return options.DOTENV_KEY + } + + // secondary infra already contains a DOTENV_KEY environment variable + if (process.env.DOTENV_KEY && process.env.DOTENV_KEY.length > 0) { + return process.env.DOTENV_KEY + } + + // fallback to empty string + return '' +} + +function _instructions (result, dotenvKey) { + // Parse DOTENV_KEY. Format is a URI + let uri + try { + uri = new URL(dotenvKey) + } catch (error) { + if (error.code === 'ERR_INVALID_URL') { + const err = new Error('INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development') + err.code = 'INVALID_DOTENV_KEY' + throw err + } + + throw error + } + + // Get decrypt key + const key = uri.password + if (!key) { + const err = new Error('INVALID_DOTENV_KEY: Missing key part') + err.code = 'INVALID_DOTENV_KEY' + throw err + } + + // Get environment + const environment = uri.searchParams.get('environment') + if (!environment) { + const err = new Error('INVALID_DOTENV_KEY: Missing environment part') + err.code = 'INVALID_DOTENV_KEY' + throw err + } + + // Get ciphertext payload + const environmentKey = `DOTENV_VAULT_${environment.toUpperCase()}` + const ciphertext = result.parsed[environmentKey] // DOTENV_VAULT_PRODUCTION + if (!ciphertext) { + const err = new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${environmentKey} in your .env.vault file.`) + err.code = 'NOT_FOUND_DOTENV_ENVIRONMENT' + throw err + } + + return { ciphertext, key } +} + +function _vaultPath (options) { + let possibleVaultPath = null + + if (options && options.path && options.path.length > 0) { + if (Array.isArray(options.path)) { + for (const filepath of options.path) { + if (fs.existsSync(filepath)) { + possibleVaultPath = filepath.endsWith('.vault') ? filepath : `${filepath}.vault` + } + } + } else { + possibleVaultPath = options.path.endsWith('.vault') ? options.path : `${options.path}.vault` + } + } else { + possibleVaultPath = path.resolve(process.cwd(), '.env.vault') + } + + if (fs.existsSync(possibleVaultPath)) { + return possibleVaultPath + } + + return null +} + +function _resolveHome (envPath) { + return envPath[0] === '~' ? path.join(os.homedir(), envPath.slice(1)) : envPath +} + +function _configVault (options) { + const debug = parseBoolean(process.env.DOTENV_CONFIG_DEBUG || (options && options.debug)) + const quiet = parseBoolean(process.env.DOTENV_CONFIG_QUIET || (options && options.quiet)) + + if (debug || !quiet) { + _log('Loading env from encrypted .env.vault') + } + + const parsed = DotenvModule._parseVault(options) + + let processEnv = process.env + if (options && options.processEnv != null) { + processEnv = options.processEnv + } + + DotenvModule.populate(processEnv, parsed, options) + + return { parsed } +} + +function configDotenv (options) { + const dotenvPath = path.resolve(process.cwd(), '.env') + let encoding = 'utf8' + let processEnv = process.env + if (options && options.processEnv != null) { + processEnv = options.processEnv + } + let debug = parseBoolean(processEnv.DOTENV_CONFIG_DEBUG || (options && options.debug)) + let quiet = parseBoolean(processEnv.DOTENV_CONFIG_QUIET || (options && options.quiet)) + + if (options && options.encoding) { + encoding = options.encoding + } else { + if (debug) { + _debug('No encoding is specified. UTF-8 is used by default') + } + } + + let optionPaths = [dotenvPath] // default, look for .env + if (options && options.path) { + if (!Array.isArray(options.path)) { + optionPaths = [_resolveHome(options.path)] + } else { + optionPaths = [] // reset default + for (const filepath of options.path) { + optionPaths.push(_resolveHome(filepath)) + } + } + } + + // Build the parsed data in a temporary object (because we need to return it). Once we have the final + // parsed data, we will combine it with process.env (or options.processEnv if provided). + let lastError + const parsedAll = {} + for (const path of optionPaths) { + try { + // Specifying an encoding returns a string instead of a buffer + const parsed = DotenvModule.parse(fs.readFileSync(path, { encoding })) + + DotenvModule.populate(parsedAll, parsed, options) + } catch (e) { + if (debug) { + _debug(`Failed to load ${path} ${e.message}`) + } + lastError = e + } + } + + const populated = DotenvModule.populate(processEnv, parsedAll, options) + + // handle user settings DOTENV_CONFIG_ options inside .env file(s) + debug = parseBoolean(processEnv.DOTENV_CONFIG_DEBUG || debug) + quiet = parseBoolean(processEnv.DOTENV_CONFIG_QUIET || quiet) + + if (debug || !quiet) { + const keysCount = Object.keys(populated).length + const shortPaths = [] + for (const filePath of optionPaths) { + try { + const relative = path.relative(process.cwd(), filePath) + shortPaths.push(relative) + } catch (e) { + if (debug) { + _debug(`Failed to load ${filePath} ${e.message}`) + } + lastError = e + } + } + + _log(`injecting env (${keysCount}) from ${shortPaths.join(',')} ${dim(`-- tip: ${_getRandomTip()}`)}`) + } + + if (lastError) { + return { parsed: parsedAll, error: lastError } + } else { + return { parsed: parsedAll } + } +} + +// Populates process.env from .env file +function config (options) { + // fallback to original dotenv if DOTENV_KEY is not set + if (_dotenvKey(options).length === 0) { + return DotenvModule.configDotenv(options) + } + + const vaultPath = _vaultPath(options) + + // dotenvKey exists but .env.vault file does not exist + if (!vaultPath) { + _warn(`You set DOTENV_KEY but you are missing a .env.vault file at ${vaultPath}. Did you forget to build it?`) + + return DotenvModule.configDotenv(options) + } + + return DotenvModule._configVault(options) +} + +function decrypt (encrypted, keyStr) { + const key = Buffer.from(keyStr.slice(-64), 'hex') + let ciphertext = Buffer.from(encrypted, 'base64') + + const nonce = ciphertext.subarray(0, 12) + const authTag = ciphertext.subarray(-16) + ciphertext = ciphertext.subarray(12, -16) + + try { + const aesgcm = crypto.createDecipheriv('aes-256-gcm', key, nonce) + aesgcm.setAuthTag(authTag) + return `${aesgcm.update(ciphertext)}${aesgcm.final()}` + } catch (error) { + const isRange = error instanceof RangeError + const invalidKeyLength = error.message === 'Invalid key length' + const decryptionFailed = error.message === 'Unsupported state or unable to authenticate data' + + if (isRange || invalidKeyLength) { + const err = new Error('INVALID_DOTENV_KEY: It must be 64 characters long (or more)') + err.code = 'INVALID_DOTENV_KEY' + throw err + } else if (decryptionFailed) { + const err = new Error('DECRYPTION_FAILED: Please check your DOTENV_KEY') + err.code = 'DECRYPTION_FAILED' + throw err + } else { + throw error + } + } +} + +// Populate process.env with parsed values +function populate (processEnv, parsed, options = {}) { + const debug = Boolean(options && options.debug) + const override = Boolean(options && options.override) + const populated = {} + + if (typeof parsed !== 'object') { + const err = new Error('OBJECT_REQUIRED: Please check the processEnv argument being passed to populate') + err.code = 'OBJECT_REQUIRED' + throw err + } + + // Set process.env + for (const key of Object.keys(parsed)) { + if (Object.prototype.hasOwnProperty.call(processEnv, key)) { + if (override === true) { + processEnv[key] = parsed[key] + populated[key] = parsed[key] + } + + if (debug) { + if (override === true) { + _debug(`"${key}" is already defined and WAS overwritten`) + } else { + _debug(`"${key}" is already defined and was NOT overwritten`) + } + } + } else { + processEnv[key] = parsed[key] + populated[key] = parsed[key] + } + } + + return populated +} + +const DotenvModule = { + configDotenv, + _configVault, + _parseVault, + config, + decrypt, + parse, + populate +} + +module.exports.configDotenv = DotenvModule.configDotenv +module.exports._configVault = DotenvModule._configVault +module.exports._parseVault = DotenvModule._parseVault +module.exports.config = DotenvModule.config +module.exports.decrypt = DotenvModule.decrypt +module.exports.parse = DotenvModule.parse +module.exports.populate = DotenvModule.populate + +module.exports = DotenvModule diff --git a/food-ordering-app/server/node_modules/dotenv/package.json b/food-ordering-app/server/node_modules/dotenv/package.json new file mode 100644 index 000000000..209912e80 --- /dev/null +++ b/food-ordering-app/server/node_modules/dotenv/package.json @@ -0,0 +1,62 @@ +{ + "name": "dotenv", + "version": "17.3.1", + "description": "Loads environment variables from .env file", + "main": "lib/main.js", + "types": "lib/main.d.ts", + "exports": { + ".": { + "types": "./lib/main.d.ts", + "require": "./lib/main.js", + "default": "./lib/main.js" + }, + "./config": "./config.js", + "./config.js": "./config.js", + "./lib/env-options": "./lib/env-options.js", + "./lib/env-options.js": "./lib/env-options.js", + "./lib/cli-options": "./lib/cli-options.js", + "./lib/cli-options.js": "./lib/cli-options.js", + "./package.json": "./package.json" + }, + "scripts": { + "dts-check": "tsc --project tests/types/tsconfig.json", + "lint": "standard", + "pretest": "npm run lint && npm run dts-check", + "test": "tap run tests/**/*.js --allow-empty-coverage --disable-coverage --timeout=60000", + "test:coverage": "tap run tests/**/*.js --show-full-coverage --timeout=60000 --coverage-report=text --coverage-report=lcov", + "prerelease": "npm test", + "release": "standard-version" + }, + "repository": { + "type": "git", + "url": "git://github.com/motdotla/dotenv.git" + }, + "homepage": "https://github.com/motdotla/dotenv#readme", + "funding": "https://dotenvx.com", + "keywords": [ + "dotenv", + "env", + ".env", + "environment", + "variables", + "config", + "settings" + ], + "readmeFilename": "README.md", + "license": "BSD-2-Clause", + "devDependencies": { + "@types/node": "^18.11.3", + "decache": "^4.6.2", + "sinon": "^14.0.1", + "standard": "^17.0.0", + "standard-version": "^9.5.0", + "tap": "^19.2.0", + "typescript": "^4.8.4" + }, + "engines": { + "node": ">=12" + }, + "browser": { + "fs": false + } +} diff --git a/food-ordering-app/server/node_modules/dunder-proto/.eslintrc b/food-ordering-app/server/node_modules/dunder-proto/.eslintrc new file mode 100644 index 000000000..3b5d9e90e --- /dev/null +++ b/food-ordering-app/server/node_modules/dunder-proto/.eslintrc @@ -0,0 +1,5 @@ +{ + "root": true, + + "extends": "@ljharb", +} diff --git a/food-ordering-app/server/node_modules/dunder-proto/.github/FUNDING.yml b/food-ordering-app/server/node_modules/dunder-proto/.github/FUNDING.yml new file mode 100644 index 000000000..8a1d7b0e9 --- /dev/null +++ b/food-ordering-app/server/node_modules/dunder-proto/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/dunder-proto +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/food-ordering-app/server/node_modules/call-bind/.nycrc b/food-ordering-app/server/node_modules/dunder-proto/.nycrc similarity index 100% rename from food-ordering-app/server/node_modules/call-bind/.nycrc rename to food-ordering-app/server/node_modules/dunder-proto/.nycrc diff --git a/food-ordering-app/server/node_modules/dunder-proto/CHANGELOG.md b/food-ordering-app/server/node_modules/dunder-proto/CHANGELOG.md new file mode 100644 index 000000000..9b8b2f82a --- /dev/null +++ b/food-ordering-app/server/node_modules/dunder-proto/CHANGELOG.md @@ -0,0 +1,24 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.0.1](https://github.com/es-shims/dunder-proto/compare/v1.0.0...v1.0.1) - 2024-12-16 + +### Commits + +- [Fix] do not crash when `--disable-proto=throw` [`6c367d9`](https://github.com/es-shims/dunder-proto/commit/6c367d919bc1604778689a297bbdbfea65752847) +- [Tests] ensure noproto tests only use the current version of dunder-proto [`b02365b`](https://github.com/es-shims/dunder-proto/commit/b02365b9cf889c4a2cac7be0c3cfc90a789af36c) +- [Dev Deps] update `@arethetypeswrong/cli`, `@types/tape` [`e3c5c3b`](https://github.com/es-shims/dunder-proto/commit/e3c5c3bd81cf8cef7dff2eca19e558f0e307f666) +- [Deps] update `call-bind-apply-helpers` [`19f1da0`](https://github.com/es-shims/dunder-proto/commit/19f1da028b8dd0d05c85bfd8f7eed2819b686450) + +## v1.0.0 - 2024-12-06 + +### Commits + +- Initial implementation, tests, readme, types [`a5b74b0`](https://github.com/es-shims/dunder-proto/commit/a5b74b0082f5270cb0905cd9a2e533cee7498373) +- Initial commit [`73fb5a3`](https://github.com/es-shims/dunder-proto/commit/73fb5a353b51ac2ab00c9fdeb0114daffd4c07a8) +- npm init [`80152dc`](https://github.com/es-shims/dunder-proto/commit/80152dc98155da4eb046d9f67a87ed96e8280a1d) +- Only apps should have lockfiles [`03e6660`](https://github.com/es-shims/dunder-proto/commit/03e6660a1d70dc401f3e217a031475ec537243dd) diff --git a/food-ordering-app/server/node_modules/dunder-proto/LICENSE b/food-ordering-app/server/node_modules/dunder-proto/LICENSE new file mode 100644 index 000000000..34995e79d --- /dev/null +++ b/food-ordering-app/server/node_modules/dunder-proto/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 ECMAScript Shims + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/food-ordering-app/server/node_modules/dunder-proto/README.md b/food-ordering-app/server/node_modules/dunder-proto/README.md new file mode 100644 index 000000000..44b80a2d4 --- /dev/null +++ b/food-ordering-app/server/node_modules/dunder-proto/README.md @@ -0,0 +1,54 @@ +# dunder-proto [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +If available, the `Object.prototype.__proto__` accessor and mutator, call-bound. + +## Getting started + +```sh +npm install --save dunder-proto +``` + +## Usage/Examples + +```js +const assert = require('assert'); +const getDunder = require('dunder-proto/get'); +const setDunder = require('dunder-proto/set'); + +const obj = {}; + +assert.equal('toString' in obj, true); +assert.equal(getDunder(obj), Object.prototype); + +setDunder(obj, null); + +assert.equal('toString' in obj, false); +assert.equal(getDunder(obj), null); +``` + +## Tests + +Clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.org/package/dunder-proto +[npm-version-svg]: https://versionbadg.es/es-shims/dunder-proto.svg +[deps-svg]: https://david-dm.org/es-shims/dunder-proto.svg +[deps-url]: https://david-dm.org/es-shims/dunder-proto +[dev-deps-svg]: https://david-dm.org/es-shims/dunder-proto/dev-status.svg +[dev-deps-url]: https://david-dm.org/es-shims/dunder-proto#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/dunder-proto.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/dunder-proto.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/dunder-proto.svg +[downloads-url]: https://npm-stat.com/charts.html?package=dunder-proto +[codecov-image]: https://codecov.io/gh/es-shims/dunder-proto/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/es-shims/dunder-proto/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/es-shims/dunder-proto +[actions-url]: https://github.com/es-shims/dunder-proto/actions diff --git a/food-ordering-app/server/node_modules/dunder-proto/get.d.ts b/food-ordering-app/server/node_modules/dunder-proto/get.d.ts new file mode 100644 index 000000000..c7e14d25e --- /dev/null +++ b/food-ordering-app/server/node_modules/dunder-proto/get.d.ts @@ -0,0 +1,5 @@ +declare function getDunderProto(target: {}): object | null; + +declare const x: false | typeof getDunderProto; + +export = x; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/dunder-proto/get.js b/food-ordering-app/server/node_modules/dunder-proto/get.js new file mode 100644 index 000000000..45093df98 --- /dev/null +++ b/food-ordering-app/server/node_modules/dunder-proto/get.js @@ -0,0 +1,30 @@ +'use strict'; + +var callBind = require('call-bind-apply-helpers'); +var gOPD = require('gopd'); + +var hasProtoAccessor; +try { + // eslint-disable-next-line no-extra-parens, no-proto + hasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype; +} catch (e) { + if (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') { + throw e; + } +} + +// eslint-disable-next-line no-extra-parens +var desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__')); + +var $Object = Object; +var $getPrototypeOf = $Object.getPrototypeOf; + +/** @type {import('./get')} */ +module.exports = desc && typeof desc.get === 'function' + ? callBind([desc.get]) + : typeof $getPrototypeOf === 'function' + ? /** @type {import('./get')} */ function getDunder(value) { + // eslint-disable-next-line eqeqeq + return $getPrototypeOf(value == null ? value : $Object(value)); + } + : false; diff --git a/food-ordering-app/server/node_modules/dunder-proto/package.json b/food-ordering-app/server/node_modules/dunder-proto/package.json new file mode 100644 index 000000000..04a403677 --- /dev/null +++ b/food-ordering-app/server/node_modules/dunder-proto/package.json @@ -0,0 +1,76 @@ +{ + "name": "dunder-proto", + "version": "1.0.1", + "description": "If available, the `Object.prototype.__proto__` accessor and mutator, call-bound", + "main": false, + "exports": { + "./get": "./get.js", + "./set": "./set.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "prelint": "evalmd README.md", + "lint": "eslint --ext=.js,.mjs .", + "postlint": "tsc -p . && attw -P", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>= 10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/es-shims/dunder-proto.git" + }, + "author": "Jordan Harband ", + "license": "MIT", + "bugs": { + "url": "https://github.com/es-shims/dunder-proto/issues" + }, + "homepage": "https://github.com/es-shims/dunder-proto#readme", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.1", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.2", + "@types/tape": "^5.7.0", + "auto-changelog": "^2.5.0", + "encoding": "^0.1.13", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "testling": { + "files": "test/index.js" + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/food-ordering-app/server/node_modules/dunder-proto/set.d.ts b/food-ordering-app/server/node_modules/dunder-proto/set.d.ts new file mode 100644 index 000000000..16bfdfe2b --- /dev/null +++ b/food-ordering-app/server/node_modules/dunder-proto/set.d.ts @@ -0,0 +1,5 @@ +declare function setDunderProto

(target: {}, proto: P): P; + +declare const x: false | typeof setDunderProto; + +export = x; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/dunder-proto/set.js b/food-ordering-app/server/node_modules/dunder-proto/set.js new file mode 100644 index 000000000..6085b6e84 --- /dev/null +++ b/food-ordering-app/server/node_modules/dunder-proto/set.js @@ -0,0 +1,35 @@ +'use strict'; + +var callBind = require('call-bind-apply-helpers'); +var gOPD = require('gopd'); +var $TypeError = require('es-errors/type'); + +/** @type {{ __proto__?: object | null }} */ +var obj = {}; +try { + obj.__proto__ = null; // eslint-disable-line no-proto +} catch (e) { + if (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') { + throw e; + } +} + +var hasProtoMutator = !('toString' in obj); + +// eslint-disable-next-line no-extra-parens +var desc = gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__')); + +/** @type {import('./set')} */ +module.exports = hasProtoMutator && ( +// eslint-disable-next-line no-extra-parens + (!!desc && typeof desc.set === 'function' && /** @type {import('./set')} */ (callBind([desc.set]))) + || /** @type {import('./set')} */ function setDunder(object, proto) { + // this is node v0.10 or older, which doesn't have Object.setPrototypeOf and has undeniable __proto__ + if (object == null) { // eslint-disable-line eqeqeq + throw new $TypeError('set Object.prototype.__proto__ called on null or undefined'); + } + // eslint-disable-next-line no-proto, no-param-reassign, no-extra-parens + /** @type {{ __proto__?: object | null }} */ (object).__proto__ = proto; + return proto; + } +); diff --git a/food-ordering-app/server/node_modules/dunder-proto/test/get.js b/food-ordering-app/server/node_modules/dunder-proto/test/get.js new file mode 100644 index 000000000..253f1838e --- /dev/null +++ b/food-ordering-app/server/node_modules/dunder-proto/test/get.js @@ -0,0 +1,34 @@ +'use strict'; + +var test = require('tape'); + +var getDunderProto = require('../get'); + +test('getDunderProto', { skip: !getDunderProto }, function (t) { + if (!getDunderProto) { + throw 'should never happen; this is just for type narrowing'; // eslint-disable-line no-throw-literal + } + + // @ts-expect-error + t['throws'](function () { getDunderProto(); }, TypeError, 'throws if no argument'); + // @ts-expect-error + t['throws'](function () { getDunderProto(undefined); }, TypeError, 'throws with undefined'); + // @ts-expect-error + t['throws'](function () { getDunderProto(null); }, TypeError, 'throws with null'); + + t.equal(getDunderProto({}), Object.prototype); + t.equal(getDunderProto([]), Array.prototype); + t.equal(getDunderProto(function () {}), Function.prototype); + t.equal(getDunderProto(/./g), RegExp.prototype); + t.equal(getDunderProto(42), Number.prototype); + t.equal(getDunderProto(true), Boolean.prototype); + t.equal(getDunderProto('foo'), String.prototype); + + t.end(); +}); + +test('no dunder proto', { skip: !!getDunderProto }, function (t) { + t.notOk('__proto__' in Object.prototype, 'no __proto__ in Object.prototype'); + + t.end(); +}); diff --git a/food-ordering-app/server/node_modules/dunder-proto/test/index.js b/food-ordering-app/server/node_modules/dunder-proto/test/index.js new file mode 100644 index 000000000..08ff36f7d --- /dev/null +++ b/food-ordering-app/server/node_modules/dunder-proto/test/index.js @@ -0,0 +1,4 @@ +'use strict'; + +require('./get'); +require('./set'); diff --git a/food-ordering-app/server/node_modules/dunder-proto/test/set.js b/food-ordering-app/server/node_modules/dunder-proto/test/set.js new file mode 100644 index 000000000..c3bfe4d4f --- /dev/null +++ b/food-ordering-app/server/node_modules/dunder-proto/test/set.js @@ -0,0 +1,50 @@ +'use strict'; + +var test = require('tape'); + +var setDunderProto = require('../set'); + +test('setDunderProto', { skip: !setDunderProto }, function (t) { + if (!setDunderProto) { + throw 'should never happen; this is just for type narrowing'; // eslint-disable-line no-throw-literal + } + + // @ts-expect-error + t['throws'](function () { setDunderProto(); }, TypeError, 'throws if no arguments'); + // @ts-expect-error + t['throws'](function () { setDunderProto(undefined); }, TypeError, 'throws with undefined and nothing'); + // @ts-expect-error + t['throws'](function () { setDunderProto(undefined, undefined); }, TypeError, 'throws with undefined and undefined'); + // @ts-expect-error + t['throws'](function () { setDunderProto(null); }, TypeError, 'throws with null and undefined'); + // @ts-expect-error + t['throws'](function () { setDunderProto(null, undefined); }, TypeError, 'throws with null and undefined'); + + /** @type {{ inherited?: boolean }} */ + var obj = {}; + t.ok('toString' in obj, 'object initially has toString'); + + setDunderProto(obj, null); + t.notOk('toString' in obj, 'object no longer has toString'); + + t.notOk('inherited' in obj, 'object lacks inherited property'); + setDunderProto(obj, { inherited: true }); + t.equal(obj.inherited, true, 'object has inherited property'); + + t.end(); +}); + +test('no dunder proto', { skip: !!setDunderProto }, function (t) { + if ('__proto__' in Object.prototype) { + t['throws']( + // @ts-expect-error + function () { ({}).__proto__ = null; }, // eslint-disable-line no-proto + Error, + 'throws when setting Object.prototype.__proto__' + ); + } else { + t.notOk('__proto__' in Object.prototype, 'no __proto__ in Object.prototype'); + } + + t.end(); +}); diff --git a/food-ordering-app/server/node_modules/dunder-proto/tsconfig.json b/food-ordering-app/server/node_modules/dunder-proto/tsconfig.json new file mode 100644 index 000000000..dabbe230d --- /dev/null +++ b/food-ordering-app/server/node_modules/dunder-proto/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "ES2021", + }, + "exclude": [ + "coverage", + ], +} diff --git a/food-ordering-app/server/node_modules/encodeurl/HISTORY.md b/food-ordering-app/server/node_modules/encodeurl/HISTORY.md deleted file mode 100644 index 41313b2b3..000000000 --- a/food-ordering-app/server/node_modules/encodeurl/HISTORY.md +++ /dev/null @@ -1,14 +0,0 @@ -1.0.2 / 2018-01-21 -================== - - * Fix encoding `%` as last character - -1.0.1 / 2016-06-09 -================== - - * Fix encoding unpaired surrogates at start/end of string - -1.0.0 / 2016-06-08 -================== - - * Initial release diff --git a/food-ordering-app/server/node_modules/encodeurl/README.md b/food-ordering-app/server/node_modules/encodeurl/README.md index 127c5a0d4..3842493ec 100644 --- a/food-ordering-app/server/node_modules/encodeurl/README.md +++ b/food-ordering-app/server/node_modules/encodeurl/README.md @@ -1,21 +1,11 @@ -# encodeurl +# Encode URL -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Encode a URL to a percent-encoded form, excluding already-encoded sequences +Encode a URL to a percent-encoded form, excluding already-encoded sequences. ## Installation -This is a [Node.js](https://nodejs.org/en/) module available through the -[npm registry](https://www.npmjs.com/). Installation is done using the -[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): - ```sh -$ npm install encodeurl +npm install encodeurl ``` ## API @@ -28,24 +18,13 @@ var encodeUrl = require('encodeurl') Encode a URL to a percent-encoded form, excluding already-encoded sequences. -This function will take an already-encoded URL and encode all the non-URL -code points (as UTF-8 byte sequences). This function will not encode the -"%" character unless it is not part of a valid sequence (`%20` will be -left as-is, but `%foo` will be encoded as `%25foo`). +This function accepts a URL and encodes all the non-URL code points (as UTF-8 byte sequences). It will not encode the "%" character unless it is not part of a valid sequence (`%20` will be left as-is, but `%foo` will be encoded as `%25foo`). -This encode is meant to be "safe" and does not throw errors. It will try as -hard as it can to properly encode the given URL, including replacing any raw, -unpaired surrogate pairs with the Unicode replacement character prior to -encoding. - -This function is _similar_ to the intrinsic function `encodeURI`, except it -will not encode the `%` character if that is part of a valid sequence, will -not encode `[` and `]` (for IPv6 hostnames) and will replace raw, unpaired -surrogate pairs with the Unicode replacement character (instead of throwing). +This encode is meant to be "safe" and does not throw errors. It will try as hard as it can to properly encode the given URL, including replacing any raw, unpaired surrogate pairs with the Unicode replacement character prior to encoding. ## Examples -### Encode a URL containing user-controled data +### Encode a URL containing user-controlled data ```js var encodeUrl = require('encodeurl') @@ -97,6 +76,19 @@ http.createServer(function onRequest (req, res) { }) ``` +## Similarities + +This function is _similar_ to the intrinsic function `encodeURI`. However, it will not encode: + +* The `\`, `^`, or `|` characters +* The `%` character when it's part of a valid sequence +* `[` and `]` (for IPv6 hostnames) +* Replaces raw, unpaired surrogate pairs with the Unicode replacement character + +As a result, the encoding aligns closely with the behavior in the [WHATWG URL specification][whatwg-url]. However, this package only encodes strings and does not do any URL parsing or formatting. + +It is expected that any output from `new URL(url)` will not change when used with this package, as the output has already been encoded. Additionally, if we were to encode before `new URL(url)`, we do not expect the before and after encoded formats to be parsed any differently. + ## Testing ```sh @@ -115,14 +107,3 @@ $ npm run lint ## License [MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/encodeurl.svg -[npm-url]: https://npmjs.org/package/encodeurl -[node-version-image]: https://img.shields.io/node/v/encodeurl.svg -[node-version-url]: https://nodejs.org/en/download -[travis-image]: https://img.shields.io/travis/pillarjs/encodeurl.svg -[travis-url]: https://travis-ci.org/pillarjs/encodeurl -[coveralls-image]: https://img.shields.io/coveralls/pillarjs/encodeurl.svg -[coveralls-url]: https://coveralls.io/r/pillarjs/encodeurl?branch=master -[downloads-image]: https://img.shields.io/npm/dm/encodeurl.svg -[downloads-url]: https://npmjs.org/package/encodeurl diff --git a/food-ordering-app/server/node_modules/encodeurl/index.js b/food-ordering-app/server/node_modules/encodeurl/index.js index fc4906c6c..a49ee5a0b 100644 --- a/food-ordering-app/server/node_modules/encodeurl/index.js +++ b/food-ordering-app/server/node_modules/encodeurl/index.js @@ -19,7 +19,7 @@ module.exports = encodeUrl * @private */ -var ENCODE_CHARS_REGEXP = /(?:[^\x21\x25\x26-\x3B\x3D\x3F-\x5B\x5D\x5F\x61-\x7A\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g +var ENCODE_CHARS_REGEXP = /(?:[^\x21\x23-\x3B\x3D\x3F-\x5F\x61-\x7A\x7C\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g /** * RegExp to match unmatched surrogate pair. diff --git a/food-ordering-app/server/node_modules/encodeurl/package.json b/food-ordering-app/server/node_modules/encodeurl/package.json index b9f25ef10..313382214 100644 --- a/food-ordering-app/server/node_modules/encodeurl/package.json +++ b/food-ordering-app/server/node_modules/encodeurl/package.json @@ -1,7 +1,7 @@ { "name": "encodeurl", "description": "Encode a URL to a percent-encoded form, excluding already-encoded sequences", - "version": "1.0.2", + "version": "2.0.0", "contributors": [ "Douglas Christopher Wilson " ], @@ -13,12 +13,12 @@ ], "repository": "pillarjs/encodeurl", "devDependencies": { - "eslint": "3.19.0", - "eslint-config-standard": "10.2.1", - "eslint-plugin-import": "2.8.0", - "eslint-plugin-node": "5.2.1", - "eslint-plugin-promise": "3.6.0", - "eslint-plugin-standard": "3.0.1", + "eslint": "5.11.1", + "eslint-config-standard": "12.0.0", + "eslint-plugin-import": "2.14.0", + "eslint-plugin-node": "7.0.1", + "eslint-plugin-promise": "4.0.1", + "eslint-plugin-standard": "4.0.0", "istanbul": "0.4.5", "mocha": "2.5.3" }, diff --git a/food-ordering-app/server/node_modules/es-define-property/.eslintrc b/food-ordering-app/server/node_modules/es-define-property/.eslintrc new file mode 100644 index 000000000..46f3b120b --- /dev/null +++ b/food-ordering-app/server/node_modules/es-define-property/.eslintrc @@ -0,0 +1,13 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "new-cap": ["error", { + "capIsNewExceptions": [ + "GetIntrinsic", + ], + }], + }, +} diff --git a/food-ordering-app/server/node_modules/es-define-property/.github/FUNDING.yml b/food-ordering-app/server/node_modules/es-define-property/.github/FUNDING.yml new file mode 100644 index 000000000..4445451fb --- /dev/null +++ b/food-ordering-app/server/node_modules/es-define-property/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/es-define-property +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with a single custom sponsorship URL diff --git a/food-ordering-app/server/node_modules/es-define-property/.nycrc b/food-ordering-app/server/node_modules/es-define-property/.nycrc new file mode 100644 index 000000000..bdd626ce9 --- /dev/null +++ b/food-ordering-app/server/node_modules/es-define-property/.nycrc @@ -0,0 +1,9 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "exclude": [ + "coverage", + "test" + ] +} diff --git a/food-ordering-app/server/node_modules/es-define-property/CHANGELOG.md b/food-ordering-app/server/node_modules/es-define-property/CHANGELOG.md new file mode 100644 index 000000000..5f60cc099 --- /dev/null +++ b/food-ordering-app/server/node_modules/es-define-property/CHANGELOG.md @@ -0,0 +1,29 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.0.1](https://github.com/ljharb/es-define-property/compare/v1.0.0...v1.0.1) - 2024-12-06 + +### Commits + +- [types] use shared tsconfig [`954a663`](https://github.com/ljharb/es-define-property/commit/954a66360326e508a0e5daa4b07493d58f5e110e) +- [actions] split out node 10-20, and 20+ [`3a8e84b`](https://github.com/ljharb/es-define-property/commit/3a8e84b23883f26ff37b3e82ff283834228e18c6) +- [Dev Deps] update `@ljharb/eslint-config`, `@ljharb/tsconfig`, `@types/get-intrinsic`, `@types/tape`, `auto-changelog`, `gopd`, `tape` [`86ae27b`](https://github.com/ljharb/es-define-property/commit/86ae27bb8cc857b23885136fad9cbe965ae36612) +- [Refactor] avoid using `get-intrinsic` [`02480c0`](https://github.com/ljharb/es-define-property/commit/02480c0353ef6118965282977c3864aff53d98b1) +- [Tests] replace `aud` with `npm audit` [`f6093ff`](https://github.com/ljharb/es-define-property/commit/f6093ff74ab51c98015c2592cd393bd42478e773) +- [Tests] configure testling [`7139e66`](https://github.com/ljharb/es-define-property/commit/7139e66959247a56086d9977359caef27c6849e7) +- [Dev Deps] update `tape` [`b901b51`](https://github.com/ljharb/es-define-property/commit/b901b511a75e001a40ce1a59fef7d9ffcfc87482) +- [Tests] fix types in tests [`469d269`](https://github.com/ljharb/es-define-property/commit/469d269fd141b1e773ec053a9fa35843493583e0) +- [Dev Deps] add missing peer dep [`733acfb`](https://github.com/ljharb/es-define-property/commit/733acfb0c4c96edf337e470b89a25a5b3724c352) + +## v1.0.0 - 2024-02-12 + +### Commits + +- Initial implementation, tests, readme, types [`3e154e1`](https://github.com/ljharb/es-define-property/commit/3e154e11a2fee09127220f5e503bf2c0a31dd480) +- Initial commit [`07d98de`](https://github.com/ljharb/es-define-property/commit/07d98de34a4dc31ff5e83a37c0c3f49e0d85cd50) +- npm init [`c4eb634`](https://github.com/ljharb/es-define-property/commit/c4eb6348b0d3886aac36cef34ad2ee0665ea6f3e) +- Only apps should have lockfiles [`7af86ec`](https://github.com/ljharb/es-define-property/commit/7af86ec1d311ec0b17fdfe616a25f64276903856) diff --git a/food-ordering-app/server/node_modules/es-define-property/LICENSE b/food-ordering-app/server/node_modules/es-define-property/LICENSE new file mode 100644 index 000000000..f82f38963 --- /dev/null +++ b/food-ordering-app/server/node_modules/es-define-property/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/food-ordering-app/server/node_modules/es-define-property/README.md b/food-ordering-app/server/node_modules/es-define-property/README.md new file mode 100644 index 000000000..9b291bddb --- /dev/null +++ b/food-ordering-app/server/node_modules/es-define-property/README.md @@ -0,0 +1,49 @@ +# es-define-property [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +`Object.defineProperty`, but not IE 8's broken one. + +## Example + +```js +const assert = require('assert'); + +const $defineProperty = require('es-define-property'); + +if ($defineProperty) { + assert.equal($defineProperty, Object.defineProperty); +} else if (Object.defineProperty) { + assert.equal($defineProperty, false, 'this is IE 8'); +} else { + assert.equal($defineProperty, false, 'this is an ES3 engine'); +} +``` + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +## Security + +Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report. + +[package-url]: https://npmjs.org/package/es-define-property +[npm-version-svg]: https://versionbadg.es/ljharb/es-define-property.svg +[deps-svg]: https://david-dm.org/ljharb/es-define-property.svg +[deps-url]: https://david-dm.org/ljharb/es-define-property +[dev-deps-svg]: https://david-dm.org/ljharb/es-define-property/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/es-define-property#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/es-define-property.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/es-define-property.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/es-define-property.svg +[downloads-url]: https://npm-stat.com/charts.html?package=es-define-property +[codecov-image]: https://codecov.io/gh/ljharb/es-define-property/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/es-define-property/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/es-define-property +[actions-url]: https://github.com/ljharb/es-define-property/actions diff --git a/food-ordering-app/server/node_modules/es-define-property/index.d.ts b/food-ordering-app/server/node_modules/es-define-property/index.d.ts new file mode 100644 index 000000000..6012247c4 --- /dev/null +++ b/food-ordering-app/server/node_modules/es-define-property/index.d.ts @@ -0,0 +1,3 @@ +declare const defineProperty: false | typeof Object.defineProperty; + +export = defineProperty; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/es-define-property/index.js b/food-ordering-app/server/node_modules/es-define-property/index.js new file mode 100644 index 000000000..e0a292516 --- /dev/null +++ b/food-ordering-app/server/node_modules/es-define-property/index.js @@ -0,0 +1,14 @@ +'use strict'; + +/** @type {import('.')} */ +var $defineProperty = Object.defineProperty || false; +if ($defineProperty) { + try { + $defineProperty({}, 'a', { value: 1 }); + } catch (e) { + // IE 8 has a broken defineProperty + $defineProperty = false; + } +} + +module.exports = $defineProperty; diff --git a/food-ordering-app/server/node_modules/es-define-property/package.json b/food-ordering-app/server/node_modules/es-define-property/package.json new file mode 100644 index 000000000..fbed18787 --- /dev/null +++ b/food-ordering-app/server/node_modules/es-define-property/package.json @@ -0,0 +1,81 @@ +{ + "name": "es-define-property", + "version": "1.0.1", + "description": "`Object.defineProperty`, but not IE 8's broken one.", + "main": "index.js", + "types": "./index.d.ts", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p .", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>= 10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/es-define-property.git" + }, + "keywords": [ + "javascript", + "ecmascript", + "object", + "define", + "property", + "defineProperty", + "Object.defineProperty" + ], + "author": "Jordan Harband ", + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/es-define-property/issues" + }, + "homepage": "https://github.com/ljharb/es-define-property#readme", + "devDependencies": { + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.2", + "@types/gopd": "^1.0.3", + "@types/tape": "^5.6.5", + "auto-changelog": "^2.5.0", + "encoding": "^0.1.13", + "eslint": "^8.8.0", + "evalmd": "^0.0.19", + "gopd": "^1.2.0", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "engines": { + "node": ">= 0.4" + }, + "testling": { + "files": "test/index.js" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + } +} diff --git a/food-ordering-app/server/node_modules/es-define-property/test/index.js b/food-ordering-app/server/node_modules/es-define-property/test/index.js new file mode 100644 index 000000000..b4b4688fb --- /dev/null +++ b/food-ordering-app/server/node_modules/es-define-property/test/index.js @@ -0,0 +1,56 @@ +'use strict'; + +var $defineProperty = require('../'); + +var test = require('tape'); +var gOPD = require('gopd'); + +test('defineProperty: supported', { skip: !$defineProperty }, function (t) { + t.plan(4); + + t.equal(typeof $defineProperty, 'function', 'defineProperty is supported'); + if ($defineProperty && gOPD) { // this `if` check is just to shut TS up + /** @type {{ a: number, b?: number, c?: number }} */ + var o = { a: 1 }; + + $defineProperty(o, 'b', { enumerable: true, value: 2 }); + t.deepEqual( + gOPD(o, 'b'), + { + configurable: false, + enumerable: true, + value: 2, + writable: false + }, + 'property descriptor is as expected' + ); + + $defineProperty(o, 'c', { enumerable: false, value: 3, writable: true }); + t.deepEqual( + gOPD(o, 'c'), + { + configurable: false, + enumerable: false, + value: 3, + writable: true + }, + 'property descriptor is as expected' + ); + } + + t.equal($defineProperty, Object.defineProperty, 'defineProperty is Object.defineProperty'); + + t.end(); +}); + +test('defineProperty: not supported', { skip: !!$defineProperty }, function (t) { + t.notOk($defineProperty, 'defineProperty is not supported'); + + t.match( + typeof $defineProperty, + /^(?:undefined|boolean)$/, + '`typeof defineProperty` is `undefined` or `boolean`' + ); + + t.end(); +}); diff --git a/food-ordering-app/server/node_modules/es-define-property/tsconfig.json b/food-ordering-app/server/node_modules/es-define-property/tsconfig.json new file mode 100644 index 000000000..5a49992ea --- /dev/null +++ b/food-ordering-app/server/node_modules/es-define-property/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "es2022", + }, + "exclude": [ + "coverage", + "test/list-exports" + ], +} diff --git a/food-ordering-app/server/node_modules/es-errors/.eslintrc b/food-ordering-app/server/node_modules/es-errors/.eslintrc new file mode 100644 index 000000000..3b5d9e90e --- /dev/null +++ b/food-ordering-app/server/node_modules/es-errors/.eslintrc @@ -0,0 +1,5 @@ +{ + "root": true, + + "extends": "@ljharb", +} diff --git a/food-ordering-app/server/node_modules/es-errors/.github/FUNDING.yml b/food-ordering-app/server/node_modules/es-errors/.github/FUNDING.yml new file mode 100644 index 000000000..f1b880554 --- /dev/null +++ b/food-ordering-app/server/node_modules/es-errors/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/es-errors +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with a single custom sponsorship URL diff --git a/food-ordering-app/server/node_modules/es-errors/CHANGELOG.md b/food-ordering-app/server/node_modules/es-errors/CHANGELOG.md new file mode 100644 index 000000000..204a9e904 --- /dev/null +++ b/food-ordering-app/server/node_modules/es-errors/CHANGELOG.md @@ -0,0 +1,40 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.3.0](https://github.com/ljharb/es-errors/compare/v1.2.1...v1.3.0) - 2024-02-05 + +### Commits + +- [New] add `EvalError` and `URIError` [`1927627`](https://github.com/ljharb/es-errors/commit/1927627ba68cb6c829d307231376c967db53acdf) + +## [v1.2.1](https://github.com/ljharb/es-errors/compare/v1.2.0...v1.2.1) - 2024-02-04 + +### Commits + +- [Fix] add missing `exports` entry [`5bb5f28`](https://github.com/ljharb/es-errors/commit/5bb5f280f98922701109d6ebb82eea2257cecc7e) + +## [v1.2.0](https://github.com/ljharb/es-errors/compare/v1.1.0...v1.2.0) - 2024-02-04 + +### Commits + +- [New] add `ReferenceError` [`6d8cf5b`](https://github.com/ljharb/es-errors/commit/6d8cf5bbb6f3f598d02cf6f30e468ba2caa8e143) + +## [v1.1.0](https://github.com/ljharb/es-errors/compare/v1.0.0...v1.1.0) - 2024-02-04 + +### Commits + +- [New] add base Error [`2983ab6`](https://github.com/ljharb/es-errors/commit/2983ab65f7bc5441276cb021dc3aa03c78881698) + +## v1.0.0 - 2024-02-03 + +### Commits + +- Initial implementation, tests, readme, type [`8f47631`](https://github.com/ljharb/es-errors/commit/8f476317e9ad76f40ad648081829b1a1a3a1288b) +- Initial commit [`ea5d099`](https://github.com/ljharb/es-errors/commit/ea5d099ef18e550509ab9e2be000526afd81c385) +- npm init [`6f5ebf9`](https://github.com/ljharb/es-errors/commit/6f5ebf9cead474dadd72b9e63dad315820a089ae) +- Only apps should have lockfiles [`e1a0aeb`](https://github.com/ljharb/es-errors/commit/e1a0aeb7b80f5cfc56be54d6b2100e915d47def8) +- [meta] add `sideEffects` flag [`a9c7d46`](https://github.com/ljharb/es-errors/commit/a9c7d460a492f1d8a241c836bc25a322a19cc043) diff --git a/food-ordering-app/server/node_modules/es-errors/LICENSE b/food-ordering-app/server/node_modules/es-errors/LICENSE new file mode 100644 index 000000000..f82f38963 --- /dev/null +++ b/food-ordering-app/server/node_modules/es-errors/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/food-ordering-app/server/node_modules/es-errors/README.md b/food-ordering-app/server/node_modules/es-errors/README.md new file mode 100644 index 000000000..8dbfacfea --- /dev/null +++ b/food-ordering-app/server/node_modules/es-errors/README.md @@ -0,0 +1,55 @@ +# es-errors [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +A simple cache for a few of the JS Error constructors. + +## Example + +```js +const assert = require('assert'); + +const Base = require('es-errors'); +const Eval = require('es-errors/eval'); +const Range = require('es-errors/range'); +const Ref = require('es-errors/ref'); +const Syntax = require('es-errors/syntax'); +const Type = require('es-errors/type'); +const URI = require('es-errors/uri'); + +assert.equal(Base, Error); +assert.equal(Eval, EvalError); +assert.equal(Range, RangeError); +assert.equal(Ref, ReferenceError); +assert.equal(Syntax, SyntaxError); +assert.equal(Type, TypeError); +assert.equal(URI, URIError); +``` + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +## Security + +Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report. + +[package-url]: https://npmjs.org/package/es-errors +[npm-version-svg]: https://versionbadg.es/ljharb/es-errors.svg +[deps-svg]: https://david-dm.org/ljharb/es-errors.svg +[deps-url]: https://david-dm.org/ljharb/es-errors +[dev-deps-svg]: https://david-dm.org/ljharb/es-errors/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/es-errors#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/es-errors.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/es-errors.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/es-errors.svg +[downloads-url]: https://npm-stat.com/charts.html?package=es-errors +[codecov-image]: https://codecov.io/gh/ljharb/es-errors/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/es-errors/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/es-errors +[actions-url]: https://github.com/ljharb/es-errors/actions diff --git a/food-ordering-app/server/node_modules/es-errors/eval.d.ts b/food-ordering-app/server/node_modules/es-errors/eval.d.ts new file mode 100644 index 000000000..e4210e01e --- /dev/null +++ b/food-ordering-app/server/node_modules/es-errors/eval.d.ts @@ -0,0 +1,3 @@ +declare const EvalError: EvalErrorConstructor; + +export = EvalError; diff --git a/food-ordering-app/server/node_modules/es-errors/eval.js b/food-ordering-app/server/node_modules/es-errors/eval.js new file mode 100644 index 000000000..725ccb61a --- /dev/null +++ b/food-ordering-app/server/node_modules/es-errors/eval.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./eval')} */ +module.exports = EvalError; diff --git a/food-ordering-app/server/node_modules/es-errors/index.d.ts b/food-ordering-app/server/node_modules/es-errors/index.d.ts new file mode 100644 index 000000000..69bdbc92e --- /dev/null +++ b/food-ordering-app/server/node_modules/es-errors/index.d.ts @@ -0,0 +1,3 @@ +declare const Error: ErrorConstructor; + +export = Error; diff --git a/food-ordering-app/server/node_modules/es-errors/index.js b/food-ordering-app/server/node_modules/es-errors/index.js new file mode 100644 index 000000000..cc0c52124 --- /dev/null +++ b/food-ordering-app/server/node_modules/es-errors/index.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('.')} */ +module.exports = Error; diff --git a/food-ordering-app/server/node_modules/es-errors/package.json b/food-ordering-app/server/node_modules/es-errors/package.json new file mode 100644 index 000000000..ff8c2a531 --- /dev/null +++ b/food-ordering-app/server/node_modules/es-errors/package.json @@ -0,0 +1,80 @@ +{ + "name": "es-errors", + "version": "1.3.0", + "description": "A simple cache for a few of the JS Error constructors.", + "main": "index.js", + "exports": { + ".": "./index.js", + "./eval": "./eval.js", + "./range": "./range.js", + "./ref": "./ref.js", + "./syntax": "./syntax.js", + "./type": "./type.js", + "./uri": "./uri.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "pretest": "npm run lint", + "test": "npm run tests-only", + "tests-only": "nyc tape 'test/**/*.js'", + "posttest": "aud --production", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p . && eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git' | grep -v dist/)", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/es-errors.git" + }, + "keywords": [ + "javascript", + "ecmascript", + "error", + "typeerror", + "syntaxerror", + "rangeerror" + ], + "author": "Jordan Harband ", + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/es-errors/issues" + }, + "homepage": "https://github.com/ljharb/es-errors#readme", + "devDependencies": { + "@ljharb/eslint-config": "^21.1.0", + "@types/tape": "^5.6.4", + "aud": "^2.0.4", + "auto-changelog": "^2.4.0", + "eclint": "^2.8.1", + "eslint": "^8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.7.4", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/food-ordering-app/server/node_modules/es-errors/range.d.ts b/food-ordering-app/server/node_modules/es-errors/range.d.ts new file mode 100644 index 000000000..3a12e8642 --- /dev/null +++ b/food-ordering-app/server/node_modules/es-errors/range.d.ts @@ -0,0 +1,3 @@ +declare const RangeError: RangeErrorConstructor; + +export = RangeError; diff --git a/food-ordering-app/server/node_modules/es-errors/range.js b/food-ordering-app/server/node_modules/es-errors/range.js new file mode 100644 index 000000000..2044fe036 --- /dev/null +++ b/food-ordering-app/server/node_modules/es-errors/range.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./range')} */ +module.exports = RangeError; diff --git a/food-ordering-app/server/node_modules/es-errors/ref.d.ts b/food-ordering-app/server/node_modules/es-errors/ref.d.ts new file mode 100644 index 000000000..a13107e24 --- /dev/null +++ b/food-ordering-app/server/node_modules/es-errors/ref.d.ts @@ -0,0 +1,3 @@ +declare const ReferenceError: ReferenceErrorConstructor; + +export = ReferenceError; diff --git a/food-ordering-app/server/node_modules/es-errors/ref.js b/food-ordering-app/server/node_modules/es-errors/ref.js new file mode 100644 index 000000000..d7c430fdb --- /dev/null +++ b/food-ordering-app/server/node_modules/es-errors/ref.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./ref')} */ +module.exports = ReferenceError; diff --git a/food-ordering-app/server/node_modules/es-errors/syntax.d.ts b/food-ordering-app/server/node_modules/es-errors/syntax.d.ts new file mode 100644 index 000000000..6a0c53c5b --- /dev/null +++ b/food-ordering-app/server/node_modules/es-errors/syntax.d.ts @@ -0,0 +1,3 @@ +declare const SyntaxError: SyntaxErrorConstructor; + +export = SyntaxError; diff --git a/food-ordering-app/server/node_modules/es-errors/syntax.js b/food-ordering-app/server/node_modules/es-errors/syntax.js new file mode 100644 index 000000000..5f5fddeec --- /dev/null +++ b/food-ordering-app/server/node_modules/es-errors/syntax.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./syntax')} */ +module.exports = SyntaxError; diff --git a/food-ordering-app/server/node_modules/es-errors/test/index.js b/food-ordering-app/server/node_modules/es-errors/test/index.js new file mode 100644 index 000000000..1ff027721 --- /dev/null +++ b/food-ordering-app/server/node_modules/es-errors/test/index.js @@ -0,0 +1,19 @@ +'use strict'; + +var test = require('tape'); + +var E = require('../'); +var R = require('../range'); +var Ref = require('../ref'); +var S = require('../syntax'); +var T = require('../type'); + +test('errors', function (t) { + t.equal(E, Error); + t.equal(R, RangeError); + t.equal(Ref, ReferenceError); + t.equal(S, SyntaxError); + t.equal(T, TypeError); + + t.end(); +}); diff --git a/food-ordering-app/server/node_modules/es-errors/tsconfig.json b/food-ordering-app/server/node_modules/es-errors/tsconfig.json new file mode 100644 index 000000000..99dfeb6c8 --- /dev/null +++ b/food-ordering-app/server/node_modules/es-errors/tsconfig.json @@ -0,0 +1,49 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + + /* Projects */ + + /* Language and Environment */ + "target": "es5", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": ["types"], /* Specify multiple folders that act like `./node_modules/@types`. */ + "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + + /* JavaScript Support */ + "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ + "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */ + + /* Emit */ + "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + "declarationMap": true, /* Create sourcemaps for d.ts files. */ + "noEmit": true, /* Disable emitting files from a compilation. */ + + /* Interop Constraints */ + "allowSyntheticDefaultImports": true, /* Allow `import x from y` when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + + /* Completeness */ + // "skipLibCheck": true /* Skip type checking all .d.ts files. */ + }, + "exclude": [ + "coverage", + ], +} diff --git a/food-ordering-app/server/node_modules/es-errors/type.d.ts b/food-ordering-app/server/node_modules/es-errors/type.d.ts new file mode 100644 index 000000000..576fb5161 --- /dev/null +++ b/food-ordering-app/server/node_modules/es-errors/type.d.ts @@ -0,0 +1,3 @@ +declare const TypeError: TypeErrorConstructor + +export = TypeError; diff --git a/food-ordering-app/server/node_modules/es-errors/type.js b/food-ordering-app/server/node_modules/es-errors/type.js new file mode 100644 index 000000000..9769e44e3 --- /dev/null +++ b/food-ordering-app/server/node_modules/es-errors/type.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./type')} */ +module.exports = TypeError; diff --git a/food-ordering-app/server/node_modules/es-errors/uri.d.ts b/food-ordering-app/server/node_modules/es-errors/uri.d.ts new file mode 100644 index 000000000..c3261c91e --- /dev/null +++ b/food-ordering-app/server/node_modules/es-errors/uri.d.ts @@ -0,0 +1,3 @@ +declare const URIError: URIErrorConstructor; + +export = URIError; diff --git a/food-ordering-app/server/node_modules/es-errors/uri.js b/food-ordering-app/server/node_modules/es-errors/uri.js new file mode 100644 index 000000000..e9cd1c787 --- /dev/null +++ b/food-ordering-app/server/node_modules/es-errors/uri.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./uri')} */ +module.exports = URIError; diff --git a/food-ordering-app/server/node_modules/es-object-atoms/.eslintrc b/food-ordering-app/server/node_modules/es-object-atoms/.eslintrc new file mode 100644 index 000000000..d90a1bc65 --- /dev/null +++ b/food-ordering-app/server/node_modules/es-object-atoms/.eslintrc @@ -0,0 +1,16 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "eqeqeq": ["error", "allow-null"], + "id-length": "off", + "new-cap": ["error", { + "capIsNewExceptions": [ + "RequireObjectCoercible", + "ToObject", + ], + }], + }, +} diff --git a/food-ordering-app/server/node_modules/es-object-atoms/.github/FUNDING.yml b/food-ordering-app/server/node_modules/es-object-atoms/.github/FUNDING.yml new file mode 100644 index 000000000..352bfdabd --- /dev/null +++ b/food-ordering-app/server/node_modules/es-object-atoms/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/es-object +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with a single custom sponsorship URL diff --git a/food-ordering-app/server/node_modules/es-object-atoms/CHANGELOG.md b/food-ordering-app/server/node_modules/es-object-atoms/CHANGELOG.md new file mode 100644 index 000000000..fdd2abe34 --- /dev/null +++ b/food-ordering-app/server/node_modules/es-object-atoms/CHANGELOG.md @@ -0,0 +1,37 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.1.1](https://github.com/ljharb/es-object-atoms/compare/v1.1.0...v1.1.1) - 2025-01-14 + +### Commits + +- [types] `ToObject`: improve types [`cfe8c8a`](https://github.com/ljharb/es-object-atoms/commit/cfe8c8a105c44820cb22e26f62d12ef0ad9715c8) + +## [v1.1.0](https://github.com/ljharb/es-object-atoms/compare/v1.0.1...v1.1.0) - 2025-01-14 + +### Commits + +- [New] add `isObject` [`51e4042`](https://github.com/ljharb/es-object-atoms/commit/51e4042df722eb3165f40dc5f4bf33d0197ecb07) + +## [v1.0.1](https://github.com/ljharb/es-object-atoms/compare/v1.0.0...v1.0.1) - 2025-01-13 + +### Commits + +- [Dev Deps] update `@ljharb/eslint-config`, `@ljharb/tsconfig`, `@types/tape`, `auto-changelog`, `tape` [`38ab9eb`](https://github.com/ljharb/es-object-atoms/commit/38ab9eb00b62c2f4668644f5e513d9b414ebd595) +- [types] improve types [`7d1beb8`](https://github.com/ljharb/es-object-atoms/commit/7d1beb887958b78b6a728a210a1c8370ab7e2aa1) +- [Tests] replace `aud` with `npm audit` [`25863ba`](https://github.com/ljharb/es-object-atoms/commit/25863baf99178f1d1ad33d1120498db28631907e) +- [Dev Deps] add missing peer dep [`c012309`](https://github.com/ljharb/es-object-atoms/commit/c0123091287e6132d6f4240496340c427433df28) + +## v1.0.0 - 2024-03-16 + +### Commits + +- Initial implementation, tests, readme, types [`f1499db`](https://github.com/ljharb/es-object-atoms/commit/f1499db7d3e1741e64979c61d645ab3137705e82) +- Initial commit [`99eedc7`](https://github.com/ljharb/es-object-atoms/commit/99eedc7b5fde38a50a28d3c8b724706e3e4c5f6a) +- [meta] rename repo [`fc851fa`](https://github.com/ljharb/es-object-atoms/commit/fc851fa70616d2d182aaf0bd02c2ed7084dea8fa) +- npm init [`b909377`](https://github.com/ljharb/es-object-atoms/commit/b909377c50049bd0ec575562d20b0f9ebae8947f) +- Only apps should have lockfiles [`7249edd`](https://github.com/ljharb/es-object-atoms/commit/7249edd2178c1b9ddfc66ffcc6d07fdf0d28efc1) diff --git a/food-ordering-app/server/node_modules/es-object-atoms/LICENSE b/food-ordering-app/server/node_modules/es-object-atoms/LICENSE new file mode 100644 index 000000000..f82f38963 --- /dev/null +++ b/food-ordering-app/server/node_modules/es-object-atoms/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/food-ordering-app/server/node_modules/es-object-atoms/README.md b/food-ordering-app/server/node_modules/es-object-atoms/README.md new file mode 100644 index 000000000..447695b2e --- /dev/null +++ b/food-ordering-app/server/node_modules/es-object-atoms/README.md @@ -0,0 +1,63 @@ +# es-object-atoms [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +ES Object-related atoms: Object, ToObject, RequireObjectCoercible. + +## Example + +```js +const assert = require('assert'); + +const $Object = require('es-object-atoms'); +const isObject = require('es-object-atoms/isObject'); +const ToObject = require('es-object-atoms/ToObject'); +const RequireObjectCoercible = require('es-object-atoms/RequireObjectCoercible'); + +assert.equal($Object, Object); +assert.throws(() => ToObject(null), TypeError); +assert.throws(() => ToObject(undefined), TypeError); +assert.throws(() => RequireObjectCoercible(null), TypeError); +assert.throws(() => RequireObjectCoercible(undefined), TypeError); + +assert.equal(isObject(undefined), false); +assert.equal(isObject(null), false); +assert.equal(isObject({}), true); +assert.equal(isObject([]), true); +assert.equal(isObject(function () {}), true); + +assert.deepEqual(RequireObjectCoercible(true), true); +assert.deepEqual(ToObject(true), Object(true)); + +const obj = {}; +assert.equal(RequireObjectCoercible(obj), obj); +assert.equal(ToObject(obj), obj); +``` + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +## Security + +Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report. + +[package-url]: https://npmjs.org/package/es-object-atoms +[npm-version-svg]: https://versionbadg.es/ljharb/es-object-atoms.svg +[deps-svg]: https://david-dm.org/ljharb/es-object-atoms.svg +[deps-url]: https://david-dm.org/ljharb/es-object-atoms +[dev-deps-svg]: https://david-dm.org/ljharb/es-object-atoms/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/es-object-atoms#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/es-object-atoms.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/es-object-atoms.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/es-object.svg +[downloads-url]: https://npm-stat.com/charts.html?package=es-object-atoms +[codecov-image]: https://codecov.io/gh/ljharb/es-object-atoms/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/es-object-atoms/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/es-object-atoms +[actions-url]: https://github.com/ljharb/es-object-atoms/actions diff --git a/food-ordering-app/server/node_modules/es-object-atoms/RequireObjectCoercible.d.ts b/food-ordering-app/server/node_modules/es-object-atoms/RequireObjectCoercible.d.ts new file mode 100644 index 000000000..7e26c4573 --- /dev/null +++ b/food-ordering-app/server/node_modules/es-object-atoms/RequireObjectCoercible.d.ts @@ -0,0 +1,3 @@ +declare function RequireObjectCoercible(value: T, optMessage?: string): T; + +export = RequireObjectCoercible; diff --git a/food-ordering-app/server/node_modules/es-object-atoms/RequireObjectCoercible.js b/food-ordering-app/server/node_modules/es-object-atoms/RequireObjectCoercible.js new file mode 100644 index 000000000..8e191c6ef --- /dev/null +++ b/food-ordering-app/server/node_modules/es-object-atoms/RequireObjectCoercible.js @@ -0,0 +1,11 @@ +'use strict'; + +var $TypeError = require('es-errors/type'); + +/** @type {import('./RequireObjectCoercible')} */ +module.exports = function RequireObjectCoercible(value) { + if (value == null) { + throw new $TypeError((arguments.length > 0 && arguments[1]) || ('Cannot call method on ' + value)); + } + return value; +}; diff --git a/food-ordering-app/server/node_modules/es-object-atoms/ToObject.d.ts b/food-ordering-app/server/node_modules/es-object-atoms/ToObject.d.ts new file mode 100644 index 000000000..d6dd3029d --- /dev/null +++ b/food-ordering-app/server/node_modules/es-object-atoms/ToObject.d.ts @@ -0,0 +1,7 @@ +declare function ToObject(value: number): Number; +declare function ToObject(value: boolean): Boolean; +declare function ToObject(value: string): String; +declare function ToObject(value: bigint): BigInt; +declare function ToObject(value: T): T; + +export = ToObject; diff --git a/food-ordering-app/server/node_modules/es-object-atoms/ToObject.js b/food-ordering-app/server/node_modules/es-object-atoms/ToObject.js new file mode 100644 index 000000000..2b99a7da0 --- /dev/null +++ b/food-ordering-app/server/node_modules/es-object-atoms/ToObject.js @@ -0,0 +1,10 @@ +'use strict'; + +var $Object = require('./'); +var RequireObjectCoercible = require('./RequireObjectCoercible'); + +/** @type {import('./ToObject')} */ +module.exports = function ToObject(value) { + RequireObjectCoercible(value); + return $Object(value); +}; diff --git a/food-ordering-app/server/node_modules/es-object-atoms/index.d.ts b/food-ordering-app/server/node_modules/es-object-atoms/index.d.ts new file mode 100644 index 000000000..8bdbfc815 --- /dev/null +++ b/food-ordering-app/server/node_modules/es-object-atoms/index.d.ts @@ -0,0 +1,3 @@ +declare const Object: ObjectConstructor; + +export = Object; diff --git a/food-ordering-app/server/node_modules/es-object-atoms/index.js b/food-ordering-app/server/node_modules/es-object-atoms/index.js new file mode 100644 index 000000000..1d33cef45 --- /dev/null +++ b/food-ordering-app/server/node_modules/es-object-atoms/index.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('.')} */ +module.exports = Object; diff --git a/food-ordering-app/server/node_modules/es-object-atoms/isObject.d.ts b/food-ordering-app/server/node_modules/es-object-atoms/isObject.d.ts new file mode 100644 index 000000000..43bee3bc9 --- /dev/null +++ b/food-ordering-app/server/node_modules/es-object-atoms/isObject.d.ts @@ -0,0 +1,3 @@ +declare function isObject(x: unknown): x is object; + +export = isObject; diff --git a/food-ordering-app/server/node_modules/es-object-atoms/isObject.js b/food-ordering-app/server/node_modules/es-object-atoms/isObject.js new file mode 100644 index 000000000..ec49bf128 --- /dev/null +++ b/food-ordering-app/server/node_modules/es-object-atoms/isObject.js @@ -0,0 +1,6 @@ +'use strict'; + +/** @type {import('./isObject')} */ +module.exports = function isObject(x) { + return !!x && (typeof x === 'function' || typeof x === 'object'); +}; diff --git a/food-ordering-app/server/node_modules/es-object-atoms/package.json b/food-ordering-app/server/node_modules/es-object-atoms/package.json new file mode 100644 index 000000000..f4cec7152 --- /dev/null +++ b/food-ordering-app/server/node_modules/es-object-atoms/package.json @@ -0,0 +1,80 @@ +{ + "name": "es-object-atoms", + "version": "1.1.1", + "description": "ES Object-related atoms: Object, ToObject, RequireObjectCoercible", + "main": "index.js", + "exports": { + ".": "./index.js", + "./RequireObjectCoercible": "./RequireObjectCoercible.js", + "./isObject": "./isObject.js", + "./ToObject": "./ToObject.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "pretest": "npm run lint", + "test": "npm run tests-only", + "tests-only": "nyc tape 'test/**/*.js'", + "posttest": "npx npm@\">= 10.2\" audit --production", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p . && eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git' | grep -v dist/)", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/es-object-atoms.git" + }, + "keywords": [ + "javascript", + "ecmascript", + "object", + "toobject", + "coercible" + ], + "author": "Jordan Harband ", + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/es-object-atoms/issues" + }, + "homepage": "https://github.com/ljharb/es-object-atoms#readme", + "dependencies": { + "es-errors": "^1.3.0" + }, + "devDependencies": { + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.3", + "@types/tape": "^5.8.1", + "auto-changelog": "^2.5.0", + "eclint": "^2.8.1", + "encoding": "^0.1.13", + "eslint": "^8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/food-ordering-app/server/node_modules/es-object-atoms/test/index.js b/food-ordering-app/server/node_modules/es-object-atoms/test/index.js new file mode 100644 index 000000000..430b705ac --- /dev/null +++ b/food-ordering-app/server/node_modules/es-object-atoms/test/index.js @@ -0,0 +1,38 @@ +'use strict'; + +var test = require('tape'); + +var $Object = require('../'); +var isObject = require('../isObject'); +var ToObject = require('../ToObject'); +var RequireObjectCoercible = require('..//RequireObjectCoercible'); + +test('errors', function (t) { + t.equal($Object, Object); + // @ts-expect-error + t['throws'](function () { ToObject(null); }, TypeError); + // @ts-expect-error + t['throws'](function () { ToObject(undefined); }, TypeError); + // @ts-expect-error + t['throws'](function () { RequireObjectCoercible(null); }, TypeError); + // @ts-expect-error + t['throws'](function () { RequireObjectCoercible(undefined); }, TypeError); + + t.deepEqual(RequireObjectCoercible(true), true); + t.deepEqual(ToObject(true), Object(true)); + t.deepEqual(ToObject(42), Object(42)); + var f = function () {}; + t.equal(ToObject(f), f); + + t.equal(isObject(undefined), false); + t.equal(isObject(null), false); + t.equal(isObject({}), true); + t.equal(isObject([]), true); + t.equal(isObject(function () {}), true); + + var obj = {}; + t.equal(RequireObjectCoercible(obj), obj); + t.equal(ToObject(obj), obj); + + t.end(); +}); diff --git a/food-ordering-app/server/node_modules/es-object-atoms/tsconfig.json b/food-ordering-app/server/node_modules/es-object-atoms/tsconfig.json new file mode 100644 index 000000000..1f73cb725 --- /dev/null +++ b/food-ordering-app/server/node_modules/es-object-atoms/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "es5", + }, +} diff --git a/food-ordering-app/server/node_modules/express/History.md b/food-ordering-app/server/node_modules/express/History.md index 4c12ec973..150c2abec 100644 --- a/food-ordering-app/server/node_modules/express/History.md +++ b/food-ordering-app/server/node_modules/express/History.md @@ -1,3 +1,91 @@ +4.22.1 / 2025-12-01 +========== + + * Revert security fix for [CVE-2024-51999](https://www.cve.org/CVERecord?id=CVE-2024-51999) ([GHSA-pj86-cfqh-vqx6](https://github.com/expressjs/express/security/advisories/GHSA-pj86-cfqh-vqx6)) + +4.22.0 / 2025-12-01 +========== + * Security fix for [CVE-2024-51999](https://www.cve.org/CVERecord?id=CVE-2024-51999) ([GHSA-pj86-cfqh-vqx6](https://github.com/expressjs/express/security/advisories/GHSA-pj86-cfqh-vqx6)) + * deps: use tilde notation for dependencies + * deps: qs@6.14.0 + +4.21.2 / 2024-11-06 +========== + + * deps: path-to-regexp@0.1.12 + - Fix backtracking protection + * deps: path-to-regexp@0.1.11 + - Throws an error on invalid path values + +4.21.1 / 2024-10-08 +========== + + * Backported a fix for [CVE-2024-47764](https://nvd.nist.gov/vuln/detail/CVE-2024-47764) + + +4.21.0 / 2024-09-11 +========== + + * Deprecate `res.location("back")` and `res.redirect("back")` magic string + * deps: serve-static@1.16.2 + * includes send@0.19.0 + * deps: finalhandler@1.3.1 + * deps: qs@6.13.0 + +4.20.0 / 2024-09-10 +========== + * deps: serve-static@0.16.0 + * Remove link renderization in html while redirecting + * deps: send@0.19.0 + * Remove link renderization in html while redirecting + * deps: body-parser@0.6.0 + * add `depth` option to customize the depth level in the parser + * IMPORTANT: The default `depth` level for parsing URL-encoded data is now `32` (previously was `Infinity`) + * Remove link renderization in html while using `res.redirect` + * deps: path-to-regexp@0.1.10 + - Adds support for named matching groups in the routes using a regex + - Adds backtracking protection to parameters without regexes defined + * deps: encodeurl@~2.0.0 + - Removes encoding of `\`, `|`, and `^` to align better with URL spec + * Deprecate passing `options.maxAge` and `options.expires` to `res.clearCookie` + - Will be ignored in v5, clearCookie will set a cookie with an expires in the past to instruct clients to delete the cookie + +4.19.2 / 2024-03-25 +========== + + * Improved fix for open redirect allow list bypass + +4.19.1 / 2024-03-20 +========== + + * Allow passing non-strings to res.location with new encoding handling checks + +4.19.0 / 2024-03-20 +========== + + * Prevent open redirect allow list bypass due to encodeurl + * deps: cookie@0.6.0 + +4.18.3 / 2024-02-29 +========== + + * Fix routing requests without method + * deps: body-parser@1.20.2 + - Fix strict json error message on Node.js 19+ + - deps: content-type@~1.0.5 + - deps: raw-body@2.5.2 + * deps: cookie@0.6.0 + - Add `partitioned` option + +4.18.2 / 2022-10-08 +=================== + + * Fix regression routing a large stack in a single route + * deps: body-parser@1.20.1 + - deps: qs@6.11.0 + - perf: remove unnecessary object clone + * deps: qs@6.11.0 + 4.18.1 / 2022-04-29 =================== @@ -2102,7 +2190,7 @@ * deps: connect@2.21.0 - deprecate `connect(middleware)` -- use `app.use(middleware)` instead - deprecate `connect.createServer()` -- use `connect()` instead - - fix `res.setHeader()` patch to work with with get -> append -> set pattern + - fix `res.setHeader()` patch to work with get -> append -> set pattern - deps: compression@~1.0.8 - deps: errorhandler@~1.1.1 - deps: express-session@~1.5.0 @@ -3313,8 +3401,8 @@ Shaw] * Added node v0.1.97 compatibility * Added support for deleting cookies via Request#cookie('key', null) * Updated haml submodule - * Fixed not-found page, now using using charset utf-8 - * Fixed show-exceptions page, now using using charset utf-8 + * Fixed not-found page, now using charset utf-8 + * Fixed show-exceptions page, now using charset utf-8 * Fixed view support due to fs.readFile Buffers * Changed; mime.type() no longer accepts ".type" due to node extname() changes @@ -3349,7 +3437,7 @@ Shaw] ================== * Added charset support via Request#charset (automatically assigned to 'UTF-8' when respond()'s - encoding is set to 'utf8' or 'utf-8'. + encoding is set to 'utf8' or 'utf-8'). * Added "encoding" option to Request#render(). Closes #299 * Added "dump exceptions" setting, which is enabled by default. * Added simple ejs template engine support @@ -3388,7 +3476,7 @@ Shaw] * Added [haml.js](http://github.com/visionmedia/haml.js) submodule; removed haml-js * Added callback function support to Request#halt() as 3rd/4th arg * Added preprocessing of route param wildcards using param(). Closes #251 - * Added view partial support (with collections etc) + * Added view partial support (with collections etc.) * Fixed bug preventing falsey params (such as ?page=0). Closes #286 * Fixed setting of multiple cookies. Closes #199 * Changed; view naming convention is now NAME.TYPE.ENGINE (for example page.html.haml) diff --git a/food-ordering-app/server/node_modules/express/Readme.md b/food-ordering-app/server/node_modules/express/Readme.md index 720bf3892..bc108d55f 100644 --- a/food-ordering-app/server/node_modules/express/Readme.md +++ b/food-ordering-app/server/node_modules/express/Readme.md @@ -1,10 +1,29 @@ [![Express Logo](https://i.cloudup.com/zfY6lL7eFa-3000x3000.png)](http://expressjs.com/) - Fast, unopinionated, minimalist web framework for [node](http://nodejs.org). +**Fast, unopinionated, minimalist web framework for [Node.js](http://nodejs.org).** + +**This project has a [Code of Conduct][].** + +## Table of contents + +* [Installation](#Installation) +* [Features](#Features) +* [Docs & Community](#docs--community) +* [Quick Start](#Quick-Start) +* [Running Tests](#Running-Tests) +* [Philosophy](#Philosophy) +* [Examples](#Examples) +* [Contributing to Express](#Contributing) +* [TC (Technical Committee)](#tc-technical-committee) +* [Triagers](#triagers) +* [License](#license) + + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Install Size][npm-install-size-image]][npm-install-size-url] +[![NPM Downloads][npm-downloads-image]][npm-downloads-url] +[![OpenSSF Scorecard Badge][ossf-scorecard-badge]][ossf-scorecard-visualizer] - [![NPM Version][npm-version-image]][npm-url] - [![NPM Install Size][npm-install-size-image]][npm-install-size-url] - [![NPM Downloads][npm-downloads-image]][npm-downloads-url] ```js const express = require('express') @@ -51,7 +70,7 @@ for more information. ## Docs & Community * [Website and Documentation](http://expressjs.com/) - [[website repo](https://github.com/expressjs/expressjs.com)] - * [#express](https://webchat.freenode.net/?channels=express) on freenode IRC + * [#express](https://web.libera.chat/#express) on [Libera Chat](https://libera.chat) IRC * [GitHub Organization](https://github.com/expressjs) for Official Middleware & Modules * Visit the [Wiki](https://github.com/expressjs/express/wiki) * [Google Group](https://groups.google.com/group/express-js) for discussion @@ -104,7 +123,7 @@ $ npm start To view the examples, clone the Express repo and install the dependencies: ```console -$ git clone git://github.com/expressjs/express.git --depth 1 +$ git clone https://github.com/expressjs/express.git --depth 1 $ cd express $ npm install ``` @@ -144,10 +163,82 @@ $ npm test The original author of Express is [TJ Holowaychuk](https://github.com/tj) -The current lead maintainer is [Douglas Christopher Wilson](https://github.com/dougwilson) - [List of all contributors](https://github.com/expressjs/express/graphs/contributors) +### TC (Technical Committee) + +* [UlisesGascon](https://github.com/UlisesGascon) - **Ulises Gascón** (he/him) +* [jonchurch](https://github.com/jonchurch) - **Jon Church** +* [wesleytodd](https://github.com/wesleytodd) - **Wes Todd** +* [LinusU](https://github.com/LinusU) - **Linus Unnebäck** +* [blakeembrey](https://github.com/blakeembrey) - **Blake Embrey** +* [sheplu](https://github.com/sheplu) - **Jean Burellier** +* [crandmck](https://github.com/crandmck) - **Rand McKinney** +* [ctcpip](https://github.com/ctcpip) - **Chris de Almeida** + +

+TC emeriti members + +#### TC emeriti members + + * [dougwilson](https://github.com/dougwilson) - **Douglas Wilson** + * [hacksparrow](https://github.com/hacksparrow) - **Hage Yaapa** + * [jonathanong](https://github.com/jonathanong) - **jongleberry** + * [niftylettuce](https://github.com/niftylettuce) - **niftylettuce** + * [troygoode](https://github.com/troygoode) - **Troy Goode** +
+ + +### Triagers + +* [aravindvnair99](https://github.com/aravindvnair99) - **Aravind Nair** +* [carpasse](https://github.com/carpasse) - **Carlos Serrano** +* [CBID2](https://github.com/CBID2) - **Christine Belzie** +* [enyoghasim](https://github.com/enyoghasim) - **David Enyoghasim** +* [UlisesGascon](https://github.com/UlisesGascon) - **Ulises Gascón** (he/him) +* [mertcanaltin](https://github.com/mertcanaltin) - **Mert Can Altin** +* [0ss](https://github.com/0ss) - **Salah** +* [import-brain](https://github.com/import-brain) - **Eric Cheng** (he/him) +* [3imed-jaberi](https://github.com/3imed-jaberi) - **Imed Jaberi** +* [dakshkhetan](https://github.com/dakshkhetan) - **Daksh Khetan** (he/him) +* [lucasraziel](https://github.com/lucasraziel) - **Lucas Soares Do Rego** +* [IamLizu](https://github.com/IamLizu) - **S M Mahmudul Hasan** (he/him) +* [Sushmeet](https://github.com/Sushmeet) - **Sushmeet Sunger** + +
+Triagers emeriti members + +#### Emeritus Triagers + + * [AuggieH](https://github.com/AuggieH) - **Auggie Hudak** + * [G-Rath](https://github.com/G-Rath) - **Gareth Jones** + * [MohammadXroid](https://github.com/MohammadXroid) - **Mohammad Ayashi** + * [NawafSwe](https://github.com/NawafSwe) - **Nawaf Alsharqi** + * [NotMoni](https://github.com/NotMoni) - **Moni** + * [VigneshMurugan](https://github.com/VigneshMurugan) - **Vignesh Murugan** + * [davidmashe](https://github.com/davidmashe) - **David Ashe** + * [digitaIfabric](https://github.com/digitaIfabric) - **David** + * [e-l-i-s-e](https://github.com/e-l-i-s-e) - **Elise Bonner** + * [fed135](https://github.com/fed135) - **Frederic Charette** + * [firmanJS](https://github.com/firmanJS) - **Firman Abdul Hakim** + * [getspooky](https://github.com/getspooky) - **Yasser Ameur** + * [ghinks](https://github.com/ghinks) - **Glenn** + * [ghousemohamed](https://github.com/ghousemohamed) - **Ghouse Mohamed** + * [gireeshpunathil](https://github.com/gireeshpunathil) - **Gireesh Punathil** + * [jake32321](https://github.com/jake32321) - **Jake Reed** + * [jonchurch](https://github.com/jonchurch) - **Jon Church** + * [lekanikotun](https://github.com/lekanikotun) - **Troy Goode** + * [marsonya](https://github.com/marsonya) - **Lekan Ikotun** + * [mastermatt](https://github.com/mastermatt) - **Matt R. Wilson** + * [maxakuru](https://github.com/maxakuru) - **Max Edell** + * [mlrawlings](https://github.com/mlrawlings) - **Michael Rawlings** + * [rodion-arr](https://github.com/rodion-arr) - **Rodion Abdurakhimov** + * [sheplu](https://github.com/sheplu) - **Jean Burellier** + * [tarunyadav1](https://github.com/tarunyadav1) - **Tarun yadav** + * [tunniclm](https://github.com/tunniclm) - **Mike Tunnicliffe** +
+ + ## License [MIT](LICENSE) @@ -164,3 +255,6 @@ The current lead maintainer is [Douglas Christopher Wilson](https://github.com/d [npm-install-size-url]: https://packagephobia.com/result?p=express [npm-url]: https://npmjs.org/package/express [npm-version-image]: https://badgen.net/npm/v/express +[ossf-scorecard-badge]: https://api.scorecard.dev/projects/github.com/expressjs/express/badge +[ossf-scorecard-visualizer]: https://ossf.github.io/scorecard-visualizer/#/projects/github.com/expressjs/express +[Code of Conduct]: https://github.com/expressjs/express/blob/master/Code-Of-Conduct.md diff --git a/food-ordering-app/server/node_modules/express/lib/response.js b/food-ordering-app/server/node_modules/express/lib/response.js index fede486c0..2b654f4c6 100644 --- a/food-ordering-app/server/node_modules/express/lib/response.js +++ b/food-ordering-app/server/node_modules/express/lib/response.js @@ -822,6 +822,14 @@ res.get = function(field){ */ res.clearCookie = function clearCookie(name, options) { + if (options) { + if (options.maxAge) { + deprecate('res.clearCookie: Passing "options.maxAge" is deprecated. In v5.0.0 of Express, this option will be ignored, as res.clearCookie will automatically set cookies to expire immediately. Please update your code to omit this option.'); + } + if (options.expires) { + deprecate('res.clearCookie: Passing "options.expires" is deprecated. In v5.0.0 of Express, this option will be ignored, as res.clearCookie will automatically set cookies to expire immediately. Please update your code to omit this option.'); + } + } var opts = merge({ expires: new Date(1), path: '/' }, options); return this.cookie(name, '', opts); @@ -904,14 +912,16 @@ res.cookie = function (name, value, options) { */ res.location = function location(url) { - var loc = url; + var loc; // "back" is an alias for the referrer if (url === 'back') { + deprecate('res.location("back"): use res.location(req.get("Referrer") || "/") and refer to https://dub.sh/security-redirect for best practices'); loc = this.req.get('Referrer') || '/'; + } else { + loc = String(url); } - // set location return this.set('Location', encodeUrl(loc)); }; @@ -960,7 +970,7 @@ res.redirect = function redirect(url) { html: function(){ var u = escapeHtml(address); - body = '

' + statuses.message[status] + '. Redirecting to ' + u + '

' + body = '

' + statuses.message[status] + '. Redirecting to ' + u + '

' }, default: function(){ diff --git a/food-ordering-app/server/node_modules/express/lib/router/index.js b/food-ordering-app/server/node_modules/express/lib/router/index.js index 5174c34f4..abb3a6f58 100644 --- a/food-ordering-app/server/node_modules/express/lib/router/index.js +++ b/food-ordering-app/server/node_modules/express/lib/router/index.js @@ -36,7 +36,7 @@ var toString = Object.prototype.toString; * Initialize a new `Router` with the given `options`. * * @param {Object} [options] - * @return {Router} which is an callable function + * @return {Router} which is a callable function * @public */ diff --git a/food-ordering-app/server/node_modules/express/lib/router/route.js b/food-ordering-app/server/node_modules/express/lib/router/route.js index 5adaa125e..a65756d6d 100644 --- a/food-ordering-app/server/node_modules/express/lib/router/route.js +++ b/food-ordering-app/server/node_modules/express/lib/router/route.js @@ -60,7 +60,10 @@ Route.prototype._handles_method = function _handles_method(method) { return true; } - var name = method.toLowerCase(); + // normalize name + var name = typeof method === 'string' + ? method.toLowerCase() + : method if (name === 'head' && !this.methods['head']) { name = 'get'; @@ -103,8 +106,10 @@ Route.prototype.dispatch = function dispatch(req, res, done) { if (stack.length === 0) { return done(); } + var method = typeof req.method === 'string' + ? req.method.toLowerCase() + : req.method - var method = req.method.toLowerCase(); if (method === 'head' && !this.methods['head']) { method = 'get'; } @@ -124,21 +129,21 @@ Route.prototype.dispatch = function dispatch(req, res, done) { return done(err) } - var layer = stack[idx++]; - if (!layer) { - return done(err); - } - // max sync stack if (++sync > 100) { return setImmediate(next, err) } - if (layer.method && layer.method !== method) { - return next(err); + var layer = stack[idx++] + + // end of layers + if (!layer) { + return done(err) } - if (err) { + if (layer.method && layer.method !== method) { + next(err) + } else if (err) { layer.handle_error(err, req, res, next); } else { layer.handle_request(req, res, next); diff --git a/food-ordering-app/server/node_modules/express/lib/utils.js b/food-ordering-app/server/node_modules/express/lib/utils.js index 799a6a2b4..56e12b9b5 100644 --- a/food-ordering-app/server/node_modules/express/lib/utils.js +++ b/food-ordering-app/server/node_modules/express/lib/utils.js @@ -117,17 +117,15 @@ exports.contentDisposition = deprecate.function(contentDisposition, /** * Parse accept params `str` returning an * object with `.value`, `.quality` and `.params`. - * also includes `.originalIndex` for stable sorting * * @param {String} str - * @param {Number} index * @return {Object} * @api private */ -function acceptParams(str, index) { +function acceptParams (str) { var parts = str.split(/ *; */); - var ret = { value: parts[0], quality: 1, params: {}, originalIndex: index }; + var ret = { value: parts[0], quality: 1, params: {} } for (var i = 1; i < parts.length; ++i) { var pms = parts[i].split(/ *= */); @@ -282,6 +280,7 @@ function createETagGenerator (options) { /** * Parse an extended query string with qs. * + * @param {String} str * @return {Object} * @private */ diff --git a/food-ordering-app/server/node_modules/express/package.json b/food-ordering-app/server/node_modules/express/package.json index f5872a533..4322f1a08 100644 --- a/food-ordering-app/server/node_modules/express/package.json +++ b/food-ordering-app/server/node_modules/express/package.json @@ -1,7 +1,7 @@ { "name": "express", "description": "Fast, unopinionated, minimalist web framework", - "version": "4.18.1", + "version": "4.22.1", "author": "TJ Holowaychuk ", "contributors": [ "Aaron Heckmann ", @@ -15,6 +15,10 @@ "license": "MIT", "repository": "expressjs/express", "homepage": "http://expressjs.com/", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + }, "keywords": [ "express", "framework", @@ -30,32 +34,32 @@ "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.0", - "content-disposition": "0.5.4", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "~0.1.12", "proxy-addr": "~2.0.7", - "qs": "6.10.3", + "qs": "~6.14.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "~0.19.0", + "serve-static": "~1.16.2", "setprototypeof": "1.2.0", - "statuses": "2.0.1", + "statuses": "~2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -65,18 +69,17 @@ "connect-redis": "3.4.2", "cookie-parser": "1.4.6", "cookie-session": "2.0.0", - "ejs": "3.1.7", - "eslint": "7.32.0", + "ejs": "3.1.9", + "eslint": "8.47.0", "express-session": "1.17.2", "hbs": "4.2.0", "marked": "0.7.0", "method-override": "3.0.0", - "mocha": "9.2.2", + "mocha": "^6.2.2", "morgan": "1.10.0", - "multiparty": "4.2.3", - "nyc": "15.1.0", + "nyc": "^14.1.1", "pbkdf2-password": "1.2.1", - "supertest": "6.2.3", + "supertest": "^6.1.6", "vhost": "~3.0.2" }, "engines": { @@ -92,8 +95,8 @@ "scripts": { "lint": "eslint .", "test": "mocha --require test/support/env --reporter spec --bail --check-leaks test/ test/acceptance/", - "test-ci": "nyc --reporter=lcovonly --reporter=text npm test", - "test-cov": "nyc --reporter=html --reporter=text npm test", + "test-ci": "nyc --exclude examples --exclude test --exclude benchmarks --reporter=lcovonly --reporter=text npm test", + "test-cov": "nyc --exclude examples --exclude test --exclude benchmarks --reporter=html --reporter=text npm test", "test-tap": "mocha --require test/support/env --reporter tap --check-leaks test/ test/acceptance/" } } diff --git a/food-ordering-app/server/node_modules/fast-xml-builder/CHANGELOG.md b/food-ordering-app/server/node_modules/fast-xml-builder/CHANGELOG.md new file mode 100644 index 000000000..c3bd7c898 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-builder/CHANGELOG.md @@ -0,0 +1,14 @@ +**1.1.3** (2026-03-13) +- declare Matcher & Expression as unknown so user is not forced to install path-expression-matcher + + +**1.1.2** (2026-03-11) +- fix typings + +**1.1.1** (2026-03-11) +- upgrade path-expression-matcher to 1.1.3 + +**1.1.0** (2026-03-10) + +- Integrate [path-expression-matcher](https://github.com/NaturalIntelligence/path-expression-matcher) + diff --git a/food-ordering-app/server/node_modules/fast-xml-builder/LICENSE b/food-ordering-app/server/node_modules/fast-xml-builder/LICENSE new file mode 100644 index 000000000..0311839a0 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-builder/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Natural Intelligence + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/food-ordering-app/server/node_modules/fast-xml-builder/README.md b/food-ordering-app/server/node_modules/fast-xml-builder/README.md new file mode 100644 index 000000000..fadf69689 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-builder/README.md @@ -0,0 +1,23 @@ +# fast-xml-builder +Build XML from JSON + + +XML Builder was the part of [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) for years. But considering that any bug in parser may false-alarm the users who are only using builder, we have decided to split it into a separate package. + +## Installation + +```bash +npm install fast-xml-builder +``` + +## Usage + +```javascript +import XMLBuilder from 'fast-xml-builder'; + +const builder = new XMLBuilder(); +const xml = builder.build({ name: 'value' }); +``` + +fast-xml-builder fully support the response generated by fast-xml-parser. So you can use the maximum options as you are using for fast-xml-parser like `preserveOrder`, `ignoreAttributes`, `attributeNamePrefix`, `textNodeName`, `cdataTagName`, `cdataPositionChar`, `format`, `indentBy`, `suppressEmptyNode` and many more. Any change in parser will reflect here time to time. + diff --git a/food-ordering-app/server/node_modules/fast-xml-builder/lib/fxb.cjs b/food-ordering-app/server/node_modules/fast-xml-builder/lib/fxb.cjs new file mode 100644 index 000000000..ae6a43c61 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-builder/lib/fxb.cjs @@ -0,0 +1 @@ +(()=>{"use strict";var t={d:(e,i)=>{for(var s in i)t.o(i,s)&&!t.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:i[s]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{default:()=>f});class i{constructor(t,e={}){this.pattern=t,this.separator=e.separator||".",this.segments=this._parse(t),this._hasDeepWildcard=this.segments.some(t=>"deep-wildcard"===t.type),this._hasAttributeCondition=this.segments.some(t=>void 0!==t.attrName),this._hasPositionSelector=this.segments.some(t=>void 0!==t.position)}_parse(t){const e=[];let i=0,s="";for(;i0&&(this.path[this.path.length-1].values=void 0);const s=this.path.length;this.siblingStacks[s]||(this.siblingStacks[s]=new Map);const n=this.siblingStacks[s],o=i?`${i}:${t}`:t,r=n.get(o)||0;let a=0;for(const t of n.values())a+=t;n.set(o,r+1);const h={tag:t,position:a,counter:r};null!=i&&(h.namespace=i),null!=e&&(h.values=e),this.path.push(h)}pop(){if(0===this.path.length)return;const t=this.path.pop();return this.siblingStacks.length>this.path.length+1&&(this.siblingStacks.length=this.path.length+1),t}updateCurrent(t){if(this.path.length>0){const e=this.path[this.path.length-1];null!=t&&(e.values=t)}}getCurrentTag(){return this.path.length>0?this.path[this.path.length-1].tag:void 0}getCurrentNamespace(){return this.path.length>0?this.path[this.path.length-1].namespace:void 0}getAttrValue(t){if(0===this.path.length)return;const e=this.path[this.path.length-1];return e.values?.[t]}hasAttr(t){if(0===this.path.length)return!1;const e=this.path[this.path.length-1];return void 0!==e.values&&t in e.values}getPosition(){return 0===this.path.length?-1:this.path[this.path.length-1].position??0}getCounter(){return 0===this.path.length?-1:this.path[this.path.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this.path.length}toString(t,e=!0){const i=t||this.separator;return this.path.map(t=>e&&t.namespace?`${t.namespace}:${t.tag}`:t.tag).join(i)}toArray(){return this.path.map(t=>t.tag)}reset(){this.path=[],this.siblingStacks=[]}matches(t){const e=t.segments;return 0!==e.length&&(t.hasDeepWildcard()?this._matchWithDeepWildcard(e):this._matchSimple(e))}_matchSimple(t){if(this.path.length!==t.length)return!1;for(let e=0;e=0&&e>=0;){const s=t[i];if("deep-wildcard"===s.type){if(i--,i<0)return!0;const s=t[i];let n=!1;for(let t=e;t>=0;t--){const o=t===this.path.length-1;if(this._matchSegment(s,this.path[t],o)){e=t-1,i--,n=!0;break}}if(!n)return!1}else{const t=e===this.path.length-1;if(!this._matchSegment(s,this.path[e],t))return!1;e--,i--}}return i<0}_matchSegment(t,e,i){if("*"!==t.tag&&t.tag!==e.tag)return!1;if(void 0!==t.namespace&&"*"!==t.namespace&&t.namespace!==e.namespace)return!1;if(void 0!==t.attrName){if(!i)return!1;if(!e.values||!(t.attrName in e.values))return!1;if(void 0!==t.attrValue){const i=e.values[t.attrName];if(String(i)!==String(t.attrValue))return!1}}if(void 0!==t.position){if(!i)return!1;const s=e.counter??0;if("first"===t.position&&0!==s)return!1;if("odd"===t.position&&s%2!=1)return!1;if("even"===t.position&&s%2!=0)return!1;if("nth"===t.position&&s!==t.positionValue)return!1}return!0}snapshot(){return{path:this.path.map(t=>({...t})),siblingStacks:this.siblingStacks.map(t=>new Map(t))}}restore(t){this.path=t.path.map(t=>({...t})),this.siblingStacks=t.siblingStacks.map(t=>new Map(t))}}function n(t,e){let n="";e.format&&e.indentBy.length>0&&(n="\n");const r=[];if(e.stopNodes&&Array.isArray(e.stopNodes))for(let t=0;t`,d=!1,s.pop();continue}if(m===e.commentPropName){h+=i+`\x3c!--${g[m][0][e.textNodeName]}--\x3e`,d=!0,s.pop();continue}if("?"===m[0]){const t=u(g[":@"],e,N),n="?xml"===m?"":i;let o=g[m][0][e.textNodeName];o=0!==o.length?" "+o:"",h+=n+`<${m}${o}${t}?>`,d=!0,s.pop();continue}let y=i;""!==y&&(y+=e.indentBy);const x=i+`<${m}${u(g[":@"],e,N)}`;let P;P=N?a(g[m],e):o(g[m],e,y,s,n),-1!==e.unpairedTags.indexOf(m)?e.suppressUnpairedNode?h+=x+">":h+=x+"/>":P&&0!==P.length||!e.suppressEmptyNode?P&&P.endsWith(">")?h+=x+`>${P}${i}`:(h+=x+">",P&&""!==i&&(P.includes("/>")||P.includes("`):h+=x+"/>",d=!0,s.pop()}return h}function r(t,e){if(!t||e.ignoreAttributes)return null;const i={};let s=!1;for(let n in t)Object.prototype.hasOwnProperty.call(t,n)&&(i[n.startsWith(e.attributeNamePrefix)?n.substr(e.attributeNamePrefix.length):n]=t[n],s=!0);return s?i:null}function a(t,e){if(!Array.isArray(t))return null!=t?t.toString():"";let i="";for(let s=0;s${s}`:i+=`<${o}${t}/>`}}}return i}function h(t,e){let i="";if(t&&!e.ignoreAttributes)for(let s in t){if(!Object.prototype.hasOwnProperty.call(t,s))continue;let n=t[s];!0===n&&e.suppressBooleanAttributes?i+=` ${s.substr(e.attributeNamePrefix.length)}`:i+=` ${s.substr(e.attributeNamePrefix.length)}="${n}"`}return i}function p(t){const e=Object.keys(t);for(let i=0;i0&&e.processEntities)for(let i=0;i","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1,jPath:!0};function f(t){if(this.options=Object.assign({},d,t),this.options.stopNodes&&Array.isArray(this.options.stopNodes)&&(this.options.stopNodes=this.options.stopNodes.map(t=>"string"==typeof t&&t.startsWith("*.")?".."+t.substring(2):t)),this.stopNodeExpressions=[],this.options.stopNodes&&Array.isArray(this.options.stopNodes))for(let t=0;t{for(const i of e){if("string"==typeof i&&t===i)return!0;if(i instanceof RegExp&&i.test(t))return!0}}:()=>!1,this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=b),this.processTextOrObjNode=g,this.options.format?(this.indentate=m,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function g(t,e,i,s){const n=this.extractAttributes(t);if(s.push(e,n),this.checkStopNode(s)){const n=this.buildRawContent(t),o=this.buildAttributesForStopNode(t);return s.pop(),this.buildObjectNode(n,e,o,i)}const o=this.j2x(t,i+1,s);return s.pop(),void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,o.attrStr,i,s):this.buildObjectNode(o.val,e,o.attrStr,i)}function m(t){return this.options.indentBy.repeat(t)}function b(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}f.prototype.build=function(t){if(this.options.preserveOrder)return n(t,this.options);{Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t});const e=new s;return this.j2x(t,0,e).val}},f.prototype.j2x=function(t,e,i){let s="",n="";const o=this.options.jPath?i.toString():i,r=this.checkStopNode(i);for(let a in t)if(Object.prototype.hasOwnProperty.call(t,a))if(void 0===t[a])this.isAttribute(a)&&(n+="");else if(null===t[a])this.isAttribute(a)||a===this.options.cdataPropName?n+="":"?"===a[0]?n+=this.indentate(e)+"<"+a+"?"+this.tagEndChar:n+=this.indentate(e)+"<"+a+"/"+this.tagEndChar;else if(t[a]instanceof Date)n+=this.buildTextValNode(t[a],a,"",e,i);else if("object"!=typeof t[a]){const h=this.isAttribute(a);if(h&&!this.ignoreAttributesFn(h,o))s+=this.buildAttrPairStr(h,""+t[a],r);else if(!h)if(a===this.options.textNodeName){let e=this.options.tagValueProcessor(a,""+t[a]);n+=this.replaceEntitiesValue(e)}else{i.push(a);const s=this.checkStopNode(i);if(i.pop(),s){const i=""+t[a];n+=""===i?this.indentate(e)+"<"+a+this.closeTag(a)+this.tagEndChar:this.indentate(e)+"<"+a+">"+i+""+t+"${t}`;else if("object"==typeof t&&null!==t){const s=this.buildRawContent(t),n=this.buildAttributesForStopNode(t);e+=""===s?`<${i}${n}/>`:`<${i}${n}>${s}`}}else if("object"==typeof s&&null!==s){const t=this.buildRawContent(s),n=this.buildAttributesForStopNode(s);e+=""===t?`<${i}${n}/>`:`<${i}${n}>${t}`}else e+=`<${i}>${s}`}return e},f.prototype.buildAttributesForStopNode=function(t){if(!t||"object"!=typeof t)return"";let e="";if(this.options.attributesGroupName&&t[this.options.attributesGroupName]){const i=t[this.options.attributesGroupName];for(let t in i){if(!Object.prototype.hasOwnProperty.call(i,t))continue;const s=t.startsWith(this.options.attributeNamePrefix)?t.substring(this.options.attributeNamePrefix.length):t,n=i[t];!0===n&&this.options.suppressBooleanAttributes?e+=" "+s:e+=" "+s+'="'+n+'"'}}else for(let i in t){if(!Object.prototype.hasOwnProperty.call(t,i))continue;const s=this.isAttribute(i);if(s){const n=t[i];!0===n&&this.options.suppressBooleanAttributes?e+=" "+s:e+=" "+s+'="'+n+'"'}}return e},f.prototype.buildObjectNode=function(t,e,i,s){if(""===t)return"?"===e[0]?this.indentate(s)+"<"+e+i+"?"+this.tagEndChar:this.indentate(s)+"<"+e+i+this.closeTag(e)+this.tagEndChar;{let n=""+t+n}},f.prototype.closeTag=function(t){let e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":`>`+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(s)+`\x3c!--${t}--\x3e`+this.newLine;if("?"===e[0])return this.indentate(s)+"<"+e+i+"?"+this.tagEndChar;{let n=this.options.tagValueProcessor(e,t);return n=this.replaceEntitiesValue(n),""===n?this.indentate(s)+"<"+e+i+this.closeTag(e)+this.tagEndChar:this.indentate(s)+"<"+e+i+">"+n+"0&&this.options.processEntities)for(let e=0;e` - filters out attributes that match provided patterns + * + * When `Function` - calls the function for each attribute and filters out those for which the function returned `true` + * + * Defaults to `true` + */ + ignoreAttributes?: boolean | (string | RegExp)[] | ((attrName: string, jPath: string) => boolean); + + /** + * Give a property name to set CDATA values to instead of merging to tag's text value + * + * Defaults to `false` + */ + cdataPropName?: false | string; + + /** + * If set, parse comments and set as this property + * + * Defaults to `false` + */ + commentPropName?: false | string; + + /** + * Whether to make output pretty instead of single line + * + * Defaults to `false` + */ + format?: boolean; + + + /** + * If `format` is set to `true`, sets the indent string + * + * Defaults to ` ` + */ + indentBy?: string; + + /** + * Give a name to a top-level array + * + * Defaults to `undefined` + */ + arrayNodeName?: string; + + /** + * Create empty tags for tags with no text value + * + * Defaults to `false` + */ + suppressEmptyNode?: boolean; + + /** + * Suppress an unpaired tag + * + * Defaults to `true` + */ + suppressUnpairedNode?: boolean; + + /** + * Don't put a value for boolean attributes + * + * Defaults to `true` + */ + suppressBooleanAttributes?: boolean; + + /** + * Preserve the order of tags in resulting JS object + * + * Defaults to `false` + */ + preserveOrder?: boolean; + + /** + * List of tags without closing tags + * + * Defaults to `[]` + */ + unpairedTags?: string[]; + + /** + * Nodes to stop parsing at + * + * Accepts string patterns or Expression objects from path-expression-matcher + * + * String patterns starting with "*." are automatically converted to ".." for backward compatibility + * + * Defaults to `[]` + */ + stopNodes?: (string | Expression)[]; + + /** + * Control how tag value should be parsed. Called only if tag value is not empty + * + * @returns {undefined|null} `undefined` or `null` to set original value. + * @returns {unknown} + * + * 1. Different value or value with different data type to set new value. + * 2. Same value to set parsed value if `parseTagValue: true`. + * + * Defaults to `(tagName, val, jPath, hasAttributes, isLeafNode) => val` + */ + tagValueProcessor?: (name: string, value: unknown) => unknown; + + /** + * Control how attribute value should be parsed + * + * @param attrName + * @param attrValue + * @param jPath + * @returns {undefined|null} `undefined` or `null` to set original value + * @returns {unknown} + * + * Defaults to `(attrName, val, jPath) => val` + */ + attributeValueProcessor?: (name: string, value: unknown) => unknown; + + /** + * Whether to process default and DOCTYPE entities + * + * Defaults to `true` + */ + processEntities?: boolean; + + + oneListGroup?: boolean; +}; + +interface XMLBuilder { + build(jObj: any): string; +} + +interface XMLBuilderConstructor { + new(options?: XmlBuilderOptions): XMLBuilder; + (options?: XmlBuilderOptions): XMLBuilder; +} + +declare const Builder: XMLBuilderConstructor; + +export = Builder; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/fast-xml-builder/lib/fxb.min.js b/food-ordering-app/server/node_modules/fast-xml-builder/lib/fxb.min.js new file mode 100644 index 000000000..0735740b9 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-builder/lib/fxb.min.js @@ -0,0 +1,2 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.fxb=e():t.fxb=e()}(this,()=>(()=>{"use strict";var t={d:(e,i)=>{for(var r in i)t.o(i,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:i[r]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{default:()=>b});class i{constructor(t,e={}){this.pattern=t,this.separator=e.separator||".",this.segments=this._parse(t),this._hasDeepWildcard=this.segments.some(t=>"deep-wildcard"===t.type),this._hasAttributeCondition=this.segments.some(t=>void 0!==t.attrName),this._hasPositionSelector=this.segments.some(t=>void 0!==t.position)}_parse(t){const e=[];let i=0,r="";for(;i0&&(this.path[this.path.length-1].values=void 0);const r=this.path.length;this.siblingStacks[r]||(this.siblingStacks[r]=new Map);const s=this.siblingStacks[r],n=i?`${i}:${t}`:t,o=s.get(n)||0;let a=0;for(const t of s.values())a+=t;s.set(n,o+1);const h={tag:t,position:a,counter:o};null!=i&&(h.namespace=i),null!=e&&(h.values=e),this.path.push(h)}pop(){if(0===this.path.length)return;const t=this.path.pop();return this.siblingStacks.length>this.path.length+1&&(this.siblingStacks.length=this.path.length+1),t}updateCurrent(t){if(this.path.length>0){const e=this.path[this.path.length-1];null!=t&&(e.values=t)}}getCurrentTag(){return this.path.length>0?this.path[this.path.length-1].tag:void 0}getCurrentNamespace(){return this.path.length>0?this.path[this.path.length-1].namespace:void 0}getAttrValue(t){if(0===this.path.length)return;const e=this.path[this.path.length-1];return e.values?.[t]}hasAttr(t){if(0===this.path.length)return!1;const e=this.path[this.path.length-1];return void 0!==e.values&&t in e.values}getPosition(){return 0===this.path.length?-1:this.path[this.path.length-1].position??0}getCounter(){return 0===this.path.length?-1:this.path[this.path.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this.path.length}toString(t,e=!0){const i=t||this.separator;return this.path.map(t=>e&&t.namespace?`${t.namespace}:${t.tag}`:t.tag).join(i)}toArray(){return this.path.map(t=>t.tag)}reset(){this.path=[],this.siblingStacks=[]}matches(t){const e=t.segments;return 0!==e.length&&(t.hasDeepWildcard()?this._matchWithDeepWildcard(e):this._matchSimple(e))}_matchSimple(t){if(this.path.length!==t.length)return!1;for(let e=0;e=0&&e>=0;){const r=t[i];if("deep-wildcard"===r.type){if(i--,i<0)return!0;const r=t[i];let s=!1;for(let t=e;t>=0;t--){const n=t===this.path.length-1;if(this._matchSegment(r,this.path[t],n)){e=t-1,i--,s=!0;break}}if(!s)return!1}else{const t=e===this.path.length-1;if(!this._matchSegment(r,this.path[e],t))return!1;e--,i--}}return i<0}_matchSegment(t,e,i){if("*"!==t.tag&&t.tag!==e.tag)return!1;if(void 0!==t.namespace&&"*"!==t.namespace&&t.namespace!==e.namespace)return!1;if(void 0!==t.attrName){if(!i)return!1;if(!e.values||!(t.attrName in e.values))return!1;if(void 0!==t.attrValue){const i=e.values[t.attrName];if(String(i)!==String(t.attrValue))return!1}}if(void 0!==t.position){if(!i)return!1;const r=e.counter??0;if("first"===t.position&&0!==r)return!1;if("odd"===t.position&&r%2!=1)return!1;if("even"===t.position&&r%2!=0)return!1;if("nth"===t.position&&r!==t.positionValue)return!1}return!0}snapshot(){return{path:this.path.map(t=>({...t})),siblingStacks:this.siblingStacks.map(t=>new Map(t))}}restore(t){this.path=t.path.map(t=>({...t})),this.siblingStacks=t.siblingStacks.map(t=>new Map(t))}}function s(t,e){var s="";e.format&&e.indentBy.length>0&&(s="\n");var o=[];if(e.stopNodes&&Array.isArray(e.stopNodes))for(var a=0;a":h+=x+"/>":A&&0!==A.length||!e.suppressEmptyNode?A&&A.endsWith(">")?h+=x+">"+A+i+"":(h+=x+">",A&&""!==i&&(A.includes("/>")||A.includes(""):h+=x+"/>",f=!0,r.pop()}else{var S=u(m[":@"],e,N),P="?xml"===b?"":i,O=m[b][0][e.textNodeName];h+=P+"<"+b+(O=0!==O.length?" "+O:"")+S+"?>",f=!0,r.pop()}else h+=i+"\x3c!--"+m[b][0][e.textNodeName]+"--\x3e",f=!0,r.pop();else f&&(h+=i),h+="",f=!1,r.pop();else{var j=m[b];N||(j=c(j=e.tagValueProcessor(b,j),e)),f&&(h+=i),h+=j,f=!1,r.pop()}}}return h}function o(t,e){if(!t||e.ignoreAttributes)return null;var i={},r=!1;for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&(i[s.startsWith(e.attributeNamePrefix)?s.substr(e.attributeNamePrefix.length):s]=t[s],r=!0);return r?i:null}function a(t,e){if(!Array.isArray(t))return null!=t?t.toString():"";for(var i="",r=0;r"+u+"":i+="<"+n+o+"/>"}}}return i}function h(t,e){var i="";if(t&&!e.ignoreAttributes)for(var r in t)if(Object.prototype.hasOwnProperty.call(t,r)){var s=t[r];!0===s&&e.suppressBooleanAttributes?i+=" "+r.substr(e.attributeNamePrefix.length):i+=" "+r.substr(e.attributeNamePrefix.length)+'="'+s+'"'}return i}function p(t){for(var e=Object.keys(t),i=0;i0&&e.processEntities)for(var i=0;it.length)&&(e=t.length);for(var i=0,r=Array(e);i=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function g(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,r=Array(e);i","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1,jPath:!0};function b(t){if(this.options=Object.assign({},m,t),this.options.stopNodes&&Array.isArray(this.options.stopNodes)&&(this.options.stopNodes=this.options.stopNodes.map(function(t){return"string"==typeof t&&t.startsWith("*.")?".."+t.substring(2):t})),this.stopNodeExpressions=[],this.options.stopNodes&&Array.isArray(this.options.stopNodes))for(var e=0;e=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(s);!(e=i()).done;){var r=e.value;if("string"==typeof r&&t===r)return!0;if(r instanceof RegExp&&r.test(t))return!0}}:function(){return!1},this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=y),this.processTextOrObjNode=v,this.options.format?(this.indentate=N,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function v(t,e,i,r){var s=this.extractAttributes(t);if(r.push(e,s),this.checkStopNode(r)){var n=this.buildRawContent(t),o=this.buildAttributesForStopNode(t);return r.pop(),this.buildObjectNode(n,e,o,i)}var a=this.j2x(t,i+1,r);return r.pop(),void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,a.attrStr,i,r):this.buildObjectNode(a.val,e,a.attrStr,i)}function N(t){return this.options.indentBy.repeat(t)}function y(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}return b.prototype.build=function(t){if(this.options.preserveOrder)return s(t,this.options);var e;Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&((e={})[this.options.arrayNodeName]=t,t=e);var i=new r;return this.j2x(t,0,i).val},b.prototype.j2x=function(t,e,i){var r="",s="",n=this.options.jPath?i.toString():i,o=this.checkStopNode(i);for(var a in t)if(Object.prototype.hasOwnProperty.call(t,a))if(void 0===t[a])this.isAttribute(a)&&(s+="");else if(null===t[a])this.isAttribute(a)||a===this.options.cdataPropName?s+="":"?"===a[0]?s+=this.indentate(e)+"<"+a+"?"+this.tagEndChar:s+=this.indentate(e)+"<"+a+"/"+this.tagEndChar;else if(t[a]instanceof Date)s+=this.buildTextValNode(t[a],a,"",e,i);else if("object"!=typeof t[a]){var h=this.isAttribute(a);if(h&&!this.ignoreAttributesFn(h,n))r+=this.buildAttrPairStr(h,""+t[a],o);else if(!h)if(a===this.options.textNodeName){var p=this.options.tagValueProcessor(a,""+t[a]);s+=this.replaceEntitiesValue(p)}else{i.push(a);var u=this.checkStopNode(i);if(i.pop(),u){var l=""+t[a];s+=""===l?this.indentate(e)+"<"+a+this.closeTag(a)+this.tagEndChar:this.indentate(e)+"<"+a+">"+l+""+y+""+o+"";else if("object"==typeof o&&null!==o){var a=this.buildRawContent(o),h=this.buildAttributesForStopNode(o);e+=""===a?"<"+i+h+"/>":"<"+i+h+">"+a+""}}else if("object"==typeof r&&null!==r){var p=this.buildRawContent(r),u=this.buildAttributesForStopNode(r);e+=""===p?"<"+i+u+"/>":"<"+i+u+">"+p+""}else e+="<"+i+">"+r+""}return e},b.prototype.buildAttributesForStopNode=function(t){if(!t||"object"!=typeof t)return"";var e="";if(this.options.attributesGroupName&&t[this.options.attributesGroupName]){var i=t[this.options.attributesGroupName];for(var r in i)if(Object.prototype.hasOwnProperty.call(i,r)){var s=r.startsWith(this.options.attributeNamePrefix)?r.substring(this.options.attributeNamePrefix.length):r,n=i[r];!0===n&&this.options.suppressBooleanAttributes?e+=" "+s:e+=" "+s+'="'+n+'"'}}else for(var o in t)if(Object.prototype.hasOwnProperty.call(t,o)){var a=this.isAttribute(o);if(a){var h=t[o];!0===h&&this.options.suppressBooleanAttributes?e+=" "+a:e+=" "+a+'="'+h+'"'}}return e},b.prototype.buildObjectNode=function(t,e,i,r){if(""===t)return"?"===e[0]?this.indentate(r)+"<"+e+i+"?"+this.tagEndChar:this.indentate(r)+"<"+e+i+this.closeTag(e)+this.tagEndChar;var s=""+t+s},b.prototype.closeTag=function(t){var e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":">"+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(r)+"\x3c!--"+t+"--\x3e"+this.newLine;if("?"===e[0])return this.indentate(r)+"<"+e+i+"?"+this.tagEndChar;var n=this.options.tagValueProcessor(e,t);return""===(n=this.replaceEntitiesValue(n))?this.indentate(r)+"<"+e+i+this.closeTag(e)+this.tagEndChar:this.indentate(r)+"<"+e+i+">"+n+"0&&this.options.processEntities)for(var e=0;e {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * Expression - Parses and stores a tag pattern expression\n * \n * Patterns are parsed once and stored in an optimized structure for fast matching.\n * \n * @example\n * const expr = new Expression(\"root.users.user\");\n * const expr2 = new Expression(\"..user[id]:first\");\n * const expr3 = new Expression(\"root/users/user\", { separator: '/' });\n */\nexport default class Expression {\n /**\n * Create a new Expression\n * @param {string} pattern - Pattern string (e.g., \"root.users.user\", \"..user[id]\")\n * @param {Object} options - Configuration options\n * @param {string} options.separator - Path separator (default: '.')\n */\n constructor(pattern, options = {}) {\n this.pattern = pattern;\n this.separator = options.separator || '.';\n this.segments = this._parse(pattern);\n\n // Cache expensive checks for performance (O(1) instead of O(n))\n this._hasDeepWildcard = this.segments.some(seg => seg.type === 'deep-wildcard');\n this._hasAttributeCondition = this.segments.some(seg => seg.attrName !== undefined);\n this._hasPositionSelector = this.segments.some(seg => seg.position !== undefined);\n }\n\n /**\n * Parse pattern string into segments\n * @private\n * @param {string} pattern - Pattern to parse\n * @returns {Array} Array of segment objects\n */\n _parse(pattern) {\n const segments = [];\n\n // Split by separator but handle \"..\" specially\n let i = 0;\n let currentPart = '';\n\n while (i < pattern.length) {\n if (pattern[i] === this.separator) {\n // Check if next char is also separator (deep wildcard)\n if (i + 1 < pattern.length && pattern[i + 1] === this.separator) {\n // Flush current part if any\n if (currentPart.trim()) {\n segments.push(this._parseSegment(currentPart.trim()));\n currentPart = '';\n }\n // Add deep wildcard\n segments.push({ type: 'deep-wildcard' });\n i += 2; // Skip both separators\n } else {\n // Regular separator\n if (currentPart.trim()) {\n segments.push(this._parseSegment(currentPart.trim()));\n }\n currentPart = '';\n i++;\n }\n } else {\n currentPart += pattern[i];\n i++;\n }\n }\n\n // Flush remaining part\n if (currentPart.trim()) {\n segments.push(this._parseSegment(currentPart.trim()));\n }\n\n return segments;\n }\n\n /**\n * Parse a single segment\n * @private\n * @param {string} part - Segment string (e.g., \"user\", \"ns::user\", \"user[id]\", \"ns::user:first\")\n * @returns {Object} Segment object\n */\n _parseSegment(part) {\n const segment = { type: 'tag' };\n\n // NEW NAMESPACE SYNTAX (v2.0):\n // ============================\n // Namespace uses DOUBLE colon (::)\n // Position uses SINGLE colon (:)\n // \n // Examples:\n // \"user\" → tag\n // \"user:first\" → tag + position\n // \"user[id]\" → tag + attribute\n // \"user[id]:first\" → tag + attribute + position\n // \"ns::user\" → namespace + tag\n // \"ns::user:first\" → namespace + tag + position\n // \"ns::user[id]\" → namespace + tag + attribute\n // \"ns::user[id]:first\" → namespace + tag + attribute + position\n // \"ns::first\" → namespace + tag named \"first\" (NO ambiguity!)\n //\n // This eliminates all ambiguity:\n // :: = namespace separator\n // : = position selector\n // [] = attributes\n\n // Step 1: Extract brackets [attr] or [attr=value]\n let bracketContent = null;\n let withoutBrackets = part;\n\n const bracketMatch = part.match(/^([^\\[]+)(\\[[^\\]]*\\])(.*)$/);\n if (bracketMatch) {\n withoutBrackets = bracketMatch[1] + bracketMatch[3];\n if (bracketMatch[2]) {\n const content = bracketMatch[2].slice(1, -1);\n if (content) {\n bracketContent = content;\n }\n }\n }\n\n // Step 2: Check for namespace (double colon ::)\n let namespace = undefined;\n let tagAndPosition = withoutBrackets;\n\n if (withoutBrackets.includes('::')) {\n const nsIndex = withoutBrackets.indexOf('::');\n namespace = withoutBrackets.substring(0, nsIndex).trim();\n tagAndPosition = withoutBrackets.substring(nsIndex + 2).trim(); // Skip ::\n\n if (!namespace) {\n throw new Error(`Invalid namespace in pattern: ${part}`);\n }\n }\n\n // Step 3: Parse tag and position (single colon :)\n let tag = undefined;\n let positionMatch = null;\n\n if (tagAndPosition.includes(':')) {\n const colonIndex = tagAndPosition.lastIndexOf(':'); // Use last colon for position\n const tagPart = tagAndPosition.substring(0, colonIndex).trim();\n const posPart = tagAndPosition.substring(colonIndex + 1).trim();\n\n // Verify position is a valid keyword\n const isPositionKeyword = ['first', 'last', 'odd', 'even'].includes(posPart) ||\n /^nth\\(\\d+\\)$/.test(posPart);\n\n if (isPositionKeyword) {\n tag = tagPart;\n positionMatch = posPart;\n } else {\n // Not a valid position keyword, treat whole thing as tag\n tag = tagAndPosition;\n }\n } else {\n tag = tagAndPosition;\n }\n\n if (!tag) {\n throw new Error(`Invalid segment pattern: ${part}`);\n }\n\n segment.tag = tag;\n if (namespace) {\n segment.namespace = namespace;\n }\n\n // Step 4: Parse attributes\n if (bracketContent) {\n if (bracketContent.includes('=')) {\n const eqIndex = bracketContent.indexOf('=');\n segment.attrName = bracketContent.substring(0, eqIndex).trim();\n segment.attrValue = bracketContent.substring(eqIndex + 1).trim();\n } else {\n segment.attrName = bracketContent.trim();\n }\n }\n\n // Step 5: Parse position selector\n if (positionMatch) {\n const nthMatch = positionMatch.match(/^nth\\((\\d+)\\)$/);\n if (nthMatch) {\n segment.position = 'nth';\n segment.positionValue = parseInt(nthMatch[1], 10);\n } else {\n segment.position = positionMatch;\n }\n }\n\n return segment;\n }\n\n /**\n * Get the number of segments\n * @returns {number}\n */\n get length() {\n return this.segments.length;\n }\n\n /**\n * Check if expression contains deep wildcard\n * @returns {boolean}\n */\n hasDeepWildcard() {\n return this._hasDeepWildcard;\n }\n\n /**\n * Check if expression has attribute conditions\n * @returns {boolean}\n */\n hasAttributeCondition() {\n return this._hasAttributeCondition;\n }\n\n /**\n * Check if expression has position selectors\n * @returns {boolean}\n */\n hasPositionSelector() {\n return this._hasPositionSelector;\n }\n\n /**\n * Get string representation\n * @returns {string}\n */\n toString() {\n return this.pattern;\n }\n}","/**\n * Matcher - Tracks current path in XML/JSON tree and matches against Expressions\n * \n * The matcher maintains a stack of nodes representing the current path from root to\n * current tag. It only stores attribute values for the current (top) node to minimize\n * memory usage. Sibling tracking is used to auto-calculate position and counter.\n * \n * @example\n * const matcher = new Matcher();\n * matcher.push(\"root\", {});\n * matcher.push(\"users\", {});\n * matcher.push(\"user\", { id: \"123\", type: \"admin\" });\n * \n * const expr = new Expression(\"root.users.user\");\n * matcher.matches(expr); // true\n */\nexport default class Matcher {\n /**\n * Create a new Matcher\n * @param {Object} options - Configuration options\n * @param {string} options.separator - Default path separator (default: '.')\n */\n constructor(options = {}) {\n this.separator = options.separator || '.';\n this.path = [];\n this.siblingStacks = [];\n // Each path node: { tag: string, values: object, position: number, counter: number }\n // values only present for current (last) node\n // Each siblingStacks entry: Map tracking occurrences at each level\n }\n\n /**\n * Push a new tag onto the path\n * @param {string} tagName - Name of the tag\n * @param {Object} attrValues - Attribute key-value pairs for current node (optional)\n * @param {string} namespace - Namespace for the tag (optional)\n */\n push(tagName, attrValues = null, namespace = null) {\n // Remove values from previous current node (now becoming ancestor)\n if (this.path.length > 0) {\n const prev = this.path[this.path.length - 1];\n prev.values = undefined;\n }\n\n // Get or create sibling tracking for current level\n const currentLevel = this.path.length;\n if (!this.siblingStacks[currentLevel]) {\n this.siblingStacks[currentLevel] = new Map();\n }\n\n const siblings = this.siblingStacks[currentLevel];\n\n // Create a unique key for sibling tracking that includes namespace\n const siblingKey = namespace ? `${namespace}:${tagName}` : tagName;\n\n // Calculate counter (how many times this tag appeared at this level)\n const counter = siblings.get(siblingKey) || 0;\n\n // Calculate position (total children at this level so far)\n let position = 0;\n for (const count of siblings.values()) {\n position += count;\n }\n\n // Update sibling count for this tag\n siblings.set(siblingKey, counter + 1);\n\n // Create new node\n const node = {\n tag: tagName,\n position: position,\n counter: counter\n };\n\n // Store namespace if provided\n if (namespace !== null && namespace !== undefined) {\n node.namespace = namespace;\n }\n\n // Store values only for current node\n if (attrValues !== null && attrValues !== undefined) {\n node.values = attrValues;\n }\n\n this.path.push(node);\n }\n\n /**\n * Pop the last tag from the path\n * @returns {Object|undefined} The popped node\n */\n pop() {\n if (this.path.length === 0) {\n return undefined;\n }\n\n const node = this.path.pop();\n\n // Clean up sibling tracking for levels deeper than current\n // After pop, path.length is the new depth\n // We need to clean up siblingStacks[path.length + 1] and beyond\n if (this.siblingStacks.length > this.path.length + 1) {\n this.siblingStacks.length = this.path.length + 1;\n }\n\n return node;\n }\n\n /**\n * Update current node's attribute values\n * Useful when attributes are parsed after push\n * @param {Object} attrValues - Attribute values\n */\n updateCurrent(attrValues) {\n if (this.path.length > 0) {\n const current = this.path[this.path.length - 1];\n if (attrValues !== null && attrValues !== undefined) {\n current.values = attrValues;\n }\n }\n }\n\n /**\n * Get current tag name\n * @returns {string|undefined}\n */\n getCurrentTag() {\n return this.path.length > 0 ? this.path[this.path.length - 1].tag : undefined;\n }\n\n /**\n * Get current namespace\n * @returns {string|undefined}\n */\n getCurrentNamespace() {\n return this.path.length > 0 ? this.path[this.path.length - 1].namespace : undefined;\n }\n\n /**\n * Get current node's attribute value\n * @param {string} attrName - Attribute name\n * @returns {*} Attribute value or undefined\n */\n getAttrValue(attrName) {\n if (this.path.length === 0) return undefined;\n const current = this.path[this.path.length - 1];\n return current.values?.[attrName];\n }\n\n /**\n * Check if current node has an attribute\n * @param {string} attrName - Attribute name\n * @returns {boolean}\n */\n hasAttr(attrName) {\n if (this.path.length === 0) return false;\n const current = this.path[this.path.length - 1];\n return current.values !== undefined && attrName in current.values;\n }\n\n /**\n * Get current node's sibling position (child index in parent)\n * @returns {number}\n */\n getPosition() {\n if (this.path.length === 0) return -1;\n return this.path[this.path.length - 1].position ?? 0;\n }\n\n /**\n * Get current node's repeat counter (occurrence count of this tag name)\n * @returns {number}\n */\n getCounter() {\n if (this.path.length === 0) return -1;\n return this.path[this.path.length - 1].counter ?? 0;\n }\n\n /**\n * Get current node's sibling index (alias for getPosition for backward compatibility)\n * @returns {number}\n * @deprecated Use getPosition() or getCounter() instead\n */\n getIndex() {\n return this.getPosition();\n }\n\n /**\n * Get current path depth\n * @returns {number}\n */\n getDepth() {\n return this.path.length;\n }\n\n /**\n * Get path as string\n * @param {string} separator - Optional separator (uses default if not provided)\n * @param {boolean} includeNamespace - Whether to include namespace in output (default: true)\n * @returns {string}\n */\n toString(separator, includeNamespace = true) {\n const sep = separator || this.separator;\n return this.path.map(n => {\n if (includeNamespace && n.namespace) {\n return `${n.namespace}:${n.tag}`;\n }\n return n.tag;\n }).join(sep);\n }\n\n /**\n * Get path as array of tag names\n * @returns {string[]}\n */\n toArray() {\n return this.path.map(n => n.tag);\n }\n\n /**\n * Reset the path to empty\n */\n reset() {\n this.path = [];\n this.siblingStacks = [];\n }\n\n /**\n * Match current path against an Expression\n * @param {Expression} expression - The expression to match against\n * @returns {boolean} True if current path matches the expression\n */\n matches(expression) {\n const segments = expression.segments;\n\n if (segments.length === 0) {\n return false;\n }\n\n // Handle deep wildcard patterns\n if (expression.hasDeepWildcard()) {\n return this._matchWithDeepWildcard(segments);\n }\n\n // Simple path matching (no deep wildcards)\n return this._matchSimple(segments);\n }\n\n /**\n * Match simple path (no deep wildcards)\n * @private\n */\n _matchSimple(segments) {\n // Path must be same length as segments\n if (this.path.length !== segments.length) {\n return false;\n }\n\n // Match each segment bottom-to-top\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const node = this.path[i];\n const isCurrentNode = (i === this.path.length - 1);\n\n if (!this._matchSegment(segment, node, isCurrentNode)) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Match path with deep wildcards\n * @private\n */\n _matchWithDeepWildcard(segments) {\n let pathIdx = this.path.length - 1; // Start from current node (bottom)\n let segIdx = segments.length - 1; // Start from last segment\n\n while (segIdx >= 0 && pathIdx >= 0) {\n const segment = segments[segIdx];\n\n if (segment.type === 'deep-wildcard') {\n // \"..\" matches zero or more levels\n segIdx--;\n\n if (segIdx < 0) {\n // Pattern ends with \"..\", always matches\n return true;\n }\n\n // Find where next segment matches in the path\n const nextSeg = segments[segIdx];\n let found = false;\n\n for (let i = pathIdx; i >= 0; i--) {\n const isCurrentNode = (i === this.path.length - 1);\n if (this._matchSegment(nextSeg, this.path[i], isCurrentNode)) {\n pathIdx = i - 1;\n segIdx--;\n found = true;\n break;\n }\n }\n\n if (!found) {\n return false;\n }\n } else {\n // Regular segment\n const isCurrentNode = (pathIdx === this.path.length - 1);\n if (!this._matchSegment(segment, this.path[pathIdx], isCurrentNode)) {\n return false;\n }\n pathIdx--;\n segIdx--;\n }\n }\n\n // All segments must be consumed\n return segIdx < 0;\n }\n\n /**\n * Match a single segment against a node\n * @private\n * @param {Object} segment - Segment from Expression\n * @param {Object} node - Node from path\n * @param {boolean} isCurrentNode - Whether this is the current (last) node\n * @returns {boolean}\n */\n _matchSegment(segment, node, isCurrentNode) {\n // Match tag name (* is wildcard)\n if (segment.tag !== '*' && segment.tag !== node.tag) {\n return false;\n }\n\n // Match namespace if specified in segment\n if (segment.namespace !== undefined) {\n // Segment has namespace - node must match it\n if (segment.namespace !== '*' && segment.namespace !== node.namespace) {\n return false;\n }\n }\n // If segment has no namespace, it matches nodes with or without namespace\n\n // Match attribute name (check if node has this attribute)\n // Can only check for current node since ancestors don't have values\n if (segment.attrName !== undefined) {\n if (!isCurrentNode) {\n // Can't check attributes for ancestor nodes (values not stored)\n return false;\n }\n\n if (!node.values || !(segment.attrName in node.values)) {\n return false;\n }\n\n // Match attribute value (only possible for current node)\n if (segment.attrValue !== undefined) {\n const actualValue = node.values[segment.attrName];\n // Both should be strings\n if (String(actualValue) !== String(segment.attrValue)) {\n return false;\n }\n }\n }\n\n // Match position (only for current node)\n if (segment.position !== undefined) {\n if (!isCurrentNode) {\n // Can't check position for ancestor nodes\n return false;\n }\n\n const counter = node.counter ?? 0;\n\n if (segment.position === 'first' && counter !== 0) {\n return false;\n } else if (segment.position === 'odd' && counter % 2 !== 1) {\n return false;\n } else if (segment.position === 'even' && counter % 2 !== 0) {\n return false;\n } else if (segment.position === 'nth') {\n if (counter !== segment.positionValue) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Create a snapshot of current state\n * @returns {Object} State snapshot\n */\n snapshot() {\n return {\n path: this.path.map(node => ({ ...node })),\n siblingStacks: this.siblingStacks.map(map => new Map(map))\n };\n }\n\n /**\n * Restore state from snapshot\n * @param {Object} snapshot - State snapshot\n */\n restore(snapshot) {\n this.path = snapshot.path.map(node => ({ ...node }));\n this.siblingStacks = snapshot.siblingStacks.map(map => new Map(map));\n }\n}","import { Expression, Matcher } from 'path-expression-matcher';\n\nconst EOL = \"\\n\";\n\n/**\n * \n * @param {array} jArray \n * @param {any} options \n * @returns \n */\nexport default function toXml(jArray, options) {\n let indentation = \"\";\n if (options.format && options.indentBy.length > 0) {\n indentation = EOL;\n }\n\n // Pre-compile stopNode expressions for pattern matching\n const stopNodeExpressions = [];\n if (options.stopNodes && Array.isArray(options.stopNodes)) {\n for (let i = 0; i < options.stopNodes.length; i++) {\n const node = options.stopNodes[i];\n if (typeof node === 'string') {\n stopNodeExpressions.push(new Expression(node));\n } else if (node instanceof Expression) {\n stopNodeExpressions.push(node);\n }\n }\n }\n\n // Initialize matcher for path tracking\n const matcher = new Matcher();\n\n return arrToStr(jArray, options, indentation, matcher, stopNodeExpressions);\n}\n\nfunction arrToStr(arr, options, indentation, matcher, stopNodeExpressions) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n\n\n if (!Array.isArray(arr)) {\n // Non-array values (e.g. string tag values) should be treated as text content\n if (arr !== undefined && arr !== null) {\n let text = arr.toString();\n text = replaceEntitiesValue(text, options);\n return text;\n }\n return \"\";\n }\n\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const tagName = propName(tagObj);\n if (tagName === undefined) continue;\n\n // Extract attributes from \":@\" property\n const attrValues = extractAttributeValues(tagObj[\":@\"], options);\n\n // Push tag to matcher WITH attributes\n matcher.push(tagName, attrValues);\n\n // Check if this is a stop node using Expression matching\n const isStopNode = checkStopNode(matcher, stopNodeExpressions);\n\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n matcher.pop();\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += ``;\n isPreviousElementTag = false;\n matcher.pop();\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + ``;\n isPreviousElementTag = true;\n matcher.pop();\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr = attr_to_str(tagObj[\":@\"], options, isStopNode);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n isPreviousElementTag = true;\n matcher.pop();\n continue;\n }\n\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n\n // Pass isStopNode to attr_to_str so attributes are also not processed for stopNodes\n const attStr = attr_to_str(tagObj[\":@\"], options, isStopNode);\n const tagStart = indentation + `<${tagName}${attStr}`;\n\n // If this is a stopNode, get raw content without processing\n let tagValue;\n if (isStopNode) {\n tagValue = getRawContent(tagObj[tagName], options);\n } else {\n tagValue = arrToStr(tagObj[tagName], options, newIdentation, matcher, stopNodeExpressions);\n }\n\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n }\n isPreviousElementTag = true;\n\n // Pop tag from matcher\n matcher.pop();\n }\n\n return xmlStr;\n}\n\n/**\n * Extract attribute values from the \":@\" object and return as plain object\n * for passing to matcher.push()\n */\nfunction extractAttributeValues(attrMap, options) {\n if (!attrMap || options.ignoreAttributes) return null;\n\n const attrValues = {};\n let hasAttrs = false;\n\n for (let attr in attrMap) {\n if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue;\n // Remove the attribute prefix to get clean attribute name\n const cleanAttrName = attr.startsWith(options.attributeNamePrefix)\n ? attr.substr(options.attributeNamePrefix.length)\n : attr;\n attrValues[cleanAttrName] = attrMap[attr];\n hasAttrs = true;\n }\n\n return hasAttrs ? attrValues : null;\n}\n\n/**\n * Extract raw content from a stopNode without any processing\n * This preserves the content exactly as-is, including special characters\n */\nfunction getRawContent(arr, options) {\n if (!Array.isArray(arr)) {\n // Non-array values return as-is\n if (arr !== undefined && arr !== null) {\n return arr.toString();\n }\n return \"\";\n }\n\n let content = \"\";\n for (let i = 0; i < arr.length; i++) {\n const item = arr[i];\n const tagName = propName(item);\n\n if (tagName === options.textNodeName) {\n // Raw text content - NO processing, NO entity replacement\n content += item[tagName];\n } else if (tagName === options.cdataPropName) {\n // CDATA content\n content += item[tagName][0][options.textNodeName];\n } else if (tagName === options.commentPropName) {\n // Comment content\n content += item[tagName][0][options.textNodeName];\n } else if (tagName && tagName[0] === \"?\") {\n // Processing instruction - skip for stopNodes\n continue;\n } else if (tagName) {\n // Nested tags within stopNode\n // Recursively get raw content and reconstruct the tag\n // For stopNodes, we don't process attributes either\n const attStr = attr_to_str_raw(item[\":@\"], options);\n const nestedContent = getRawContent(item[tagName], options);\n\n if (!nestedContent || nestedContent.length === 0) {\n content += `<${tagName}${attStr}/>`;\n } else {\n content += `<${tagName}${attStr}>${nestedContent}`;\n }\n }\n }\n return content;\n}\n\n/**\n * Build attribute string for stopNodes - NO entity replacement\n */\nfunction attr_to_str_raw(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue;\n // For stopNodes, use raw value without processing\n let attrVal = attrMap[attr];\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\n\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;\n if (key !== \":@\") return key;\n }\n}\n\nfunction attr_to_str(attrMap, options, isStopNode) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue;\n let attrVal;\n\n if (isStopNode) {\n // For stopNodes, use raw value without any processing\n attrVal = attrMap[attr];\n } else {\n // Normal processing: apply attributeValueProcessor and entity replacement\n attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n }\n\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\n\nfunction checkStopNode(matcher, stopNodeExpressions) {\n if (!stopNodeExpressions || stopNodeExpressions.length === 0) return false;\n\n for (let i = 0; i < stopNodeExpressions.length; i++) {\n if (matcher.matches(stopNodeExpressions[i])) {\n return true;\n }\n }\n return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i = 0; i < options.entities.length; i++) {\n const entity = options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}","'use strict';\n//parse Empty Node as self closing node\nimport buildFromOrderedJs from './orderedJs2Xml.js';\nimport getIgnoreAttributesFn from \"./ignoreAttributes.js\";\nimport { Expression, Matcher } from 'path-expression-matcher';\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: ' ',\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function (key, a) {\n return a;\n },\n attributeValueProcessor: function (attrName, a) {\n return a;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false,\n jPath: true // When true, callbacks receive string jPath; when false, receive Matcher instance\n};\n\nexport default function Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n\n // Convert old-style stopNodes for backward compatibility\n // Old syntax: \"*.tag\" meant \"tag anywhere in tree\"\n // New syntax: \"..tag\" means \"tag anywhere in tree\"\n if (this.options.stopNodes && Array.isArray(this.options.stopNodes)) {\n this.options.stopNodes = this.options.stopNodes.map(node => {\n if (typeof node === 'string' && node.startsWith('*.')) {\n // Convert old wildcard syntax to deep wildcard\n return '..' + node.substring(2);\n }\n return node;\n });\n }\n\n // Pre-compile stopNode expressions for pattern matching\n this.stopNodeExpressions = [];\n if (this.options.stopNodes && Array.isArray(this.options.stopNodes)) {\n for (let i = 0; i < this.options.stopNodes.length; i++) {\n const node = this.options.stopNodes[i];\n if (typeof node === 'string') {\n this.stopNodeExpressions.push(new Expression(node));\n } else if (node instanceof Expression) {\n this.stopNodeExpressions.push(node);\n }\n }\n }\n\n if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n this.isAttribute = function (/*a*/) {\n return false;\n };\n } else {\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n\n this.processTextOrObjNode = processTextOrObjNode\n\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = '>\\n';\n this.newLine = '\\n';\n } else {\n this.indentate = function () {\n return '';\n };\n this.tagEndChar = '>';\n this.newLine = '';\n }\n}\n\nBuilder.prototype.build = function (jObj) {\n if (this.options.preserveOrder) {\n return buildFromOrderedJs(jObj, this.options);\n } else {\n if (Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1) {\n jObj = {\n [this.options.arrayNodeName]: jObj\n }\n }\n // Initialize matcher for path tracking\n const matcher = new Matcher();\n return this.j2x(jObj, 0, matcher).val;\n }\n};\n\nBuilder.prototype.j2x = function (jObj, level, matcher) {\n let attrStr = '';\n let val = '';\n\n // Get jPath based on option: string for backward compatibility, or Matcher for new features\n const jPath = this.options.jPath ? matcher.toString() : matcher;\n\n // Check if current node is a stopNode (will be used for attribute encoding)\n const isCurrentStopNode = this.checkStopNode(matcher);\n\n for (let key in jObj) {\n if (!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n if (typeof jObj[key] === 'undefined') {\n // supress undefined node only if it is not an attribute\n if (this.isAttribute(key)) {\n val += '';\n }\n } else if (jObj[key] === null) {\n // null attribute should be ignored by the attribute list, but should not cause the tag closing\n if (this.isAttribute(key)) {\n val += '';\n } else if (key === this.options.cdataPropName) {\n val += '';\n } else if (key[0] === '?') {\n val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n } else {\n val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n }\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextValNode(jObj[key], key, '', level, matcher);\n } else if (typeof jObj[key] !== 'object') {\n //premitive type\n const attr = this.isAttribute(key);\n if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n attrStr += this.buildAttrPairStr(attr, '' + jObj[key], isCurrentStopNode);\n } else if (!attr) {\n //tag value\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n val += this.replaceEntitiesValue(newval);\n } else {\n // Check if this is a stopNode before building\n matcher.push(key);\n const isStopNode = this.checkStopNode(matcher);\n matcher.pop();\n\n if (isStopNode) {\n // Build as raw content without encoding\n const textValue = '' + jObj[key];\n if (textValue === '') {\n val += this.indentate(level) + '<' + key + this.closeTag(key) + this.tagEndChar;\n } else {\n val += this.indentate(level) + '<' + key + '>' + textValue + '' + textValue + '${item}`;\n } else if (typeof item === 'object' && item !== null) {\n const nestedContent = this.buildRawContent(item);\n const nestedAttrs = this.buildAttributesForStopNode(item);\n if (nestedContent === '') {\n content += `<${key}${nestedAttrs}/>`;\n } else {\n content += `<${key}${nestedAttrs}>${nestedContent}`;\n }\n }\n }\n } else if (typeof value === 'object' && value !== null) {\n // Nested object\n const nestedContent = this.buildRawContent(value);\n const nestedAttrs = this.buildAttributesForStopNode(value);\n if (nestedContent === '') {\n content += `<${key}${nestedAttrs}/>`;\n } else {\n content += `<${key}${nestedAttrs}>${nestedContent}`;\n }\n } else {\n // Primitive value\n content += `<${key}>${value}`;\n }\n }\n\n return content;\n};\n\n// Build attribute string for stopNode (no entity encoding)\nBuilder.prototype.buildAttributesForStopNode = function (obj) {\n if (!obj || typeof obj !== 'object') return '';\n\n let attrStr = '';\n\n // Check for attributesGroupName (when attributes are grouped)\n if (this.options.attributesGroupName && obj[this.options.attributesGroupName]) {\n const attrGroup = obj[this.options.attributesGroupName];\n for (let attrKey in attrGroup) {\n if (!Object.prototype.hasOwnProperty.call(attrGroup, attrKey)) continue;\n const cleanKey = attrKey.startsWith(this.options.attributeNamePrefix)\n ? attrKey.substring(this.options.attributeNamePrefix.length)\n : attrKey;\n const val = attrGroup[attrKey];\n if (val === true && this.options.suppressBooleanAttributes) {\n attrStr += ' ' + cleanKey;\n } else {\n attrStr += ' ' + cleanKey + '=\"' + val + '\"'; // No encoding for stopNode\n }\n }\n } else {\n // Look for individual attributes\n for (let key in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;\n const attr = this.isAttribute(key);\n if (attr) {\n const val = obj[key];\n if (val === true && this.options.suppressBooleanAttributes) {\n attrStr += ' ' + attr;\n } else {\n attrStr += ' ' + attr + '=\"' + val + '\"'; // No encoding for stopNode\n }\n }\n }\n }\n\n return attrStr;\n};\n\nBuilder.prototype.buildObjectNode = function (val, key, attrStr, level) {\n if (val === \"\") {\n if (key[0] === \"?\") return this.indentate(level) + '<' + key + attrStr + '?' + this.tagEndChar;\n else {\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n } else {\n\n let tagEndExp = '' + val + tagEndExp);\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `` + this.newLine;\n } else {\n return (\n this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n val +\n this.indentate(level) + tagEndExp);\n }\n }\n}\n\nBuilder.prototype.closeTag = function (key) {\n let closeTag = \"\";\n if (this.options.unpairedTags.indexOf(key) !== -1) { //unpaired\n if (!this.options.suppressUnpairedNode) closeTag = \"/\"\n } else if (this.options.suppressEmptyNode) { //empty\n closeTag = \"/\";\n } else {\n closeTag = `>` + this.newLine;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `` + this.newLine;\n } else if (key[0] === \"?\") {//PI tag\n return this.indentate(level) + '<' + key + attrStr + '?' + this.tagEndChar;\n } else {\n // Normal processing: apply tagValueProcessor and entity replacement\n let textValue = this.options.tagValueProcessor(key, val);\n textValue = this.replaceEntitiesValue(textValue);\n\n if (textValue === '') {\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n } else {\n return this.indentate(level) + '<' + key + attrStr + '>' +\n textValue +\n ' 0 && this.options.processEntities) {\n for (let i = 0; i < this.options.entities.length; i++) {\n const entity = this.options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\n\nfunction indentate(level) {\n return this.options.indentBy.repeat(level);\n}\n\nfunction isAttribute(name /*, options*/) {\n if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) {\n return name.substr(this.attrPrefixLen);\n } else {\n return false;\n }\n}","export default function getIgnoreAttributesFn(ignoreAttributes) {\n if (typeof ignoreAttributes === 'function') {\n return ignoreAttributes\n }\n if (Array.isArray(ignoreAttributes)) {\n return (attrName) => {\n for (const pattern of ignoreAttributes) {\n if (typeof pattern === 'string' && attrName === pattern) {\n return true\n }\n if (pattern instanceof RegExp && pattern.test(attrName)) {\n return true\n }\n }\n }\n }\n return () => false\n}"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","Expression","constructor","pattern","options","separator","segments","_parse","_hasDeepWildcard","some","seg","type","_hasAttributeCondition","undefined","attrName","_hasPositionSelector","position","i","currentPart","length","trim","push","_parseSegment","part","segment","bracketContent","withoutBrackets","bracketMatch","match","content","slice","namespace","tag","tagAndPosition","includes","nsIndex","indexOf","substring","Error","positionMatch","colonIndex","lastIndexOf","tagPart","posPart","test","eqIndex","attrValue","nthMatch","positionValue","parseInt","hasDeepWildcard","hasAttributeCondition","hasPositionSelector","toString","Matcher","path","siblingStacks","tagName","attrValues","values","currentLevel","Map","siblings","siblingKey","counter","count","set","node","pop","updateCurrent","current","getCurrentTag","getCurrentNamespace","getAttrValue","hasAttr","getPosition","getCounter","getIndex","getDepth","includeNamespace","sep","map","n","join","toArray","reset","matches","expression","_matchWithDeepWildcard","_matchSimple","isCurrentNode","_matchSegment","pathIdx","segIdx","nextSeg","found","actualValue","String","snapshot","restore","toXml","jArray","indentation","format","indentBy","stopNodeExpressions","stopNodes","Array","isArray","arrToStr","arr","matcher","xmlStr","isPreviousElementTag","text","replaceEntitiesValue","tagObj","propName","extractAttributeValues","isStopNode","checkStopNode","textNodeName","cdataPropName","commentPropName","newIdentation","tagStart","attr_to_str","tagValue","getRawContent","unpairedTags","suppressUnpairedNode","suppressEmptyNode","endsWith","attStr","tempInd","piTextNodeName","tagText","tagValueProcessor","attrMap","ignoreAttributes","hasAttrs","attr","startsWith","attributeNamePrefix","substr","item","attr_to_str_raw","nestedContent","attrStr","attrVal","suppressBooleanAttributes","keys","attributeValueProcessor","textValue","processEntities","entities","entity","replace","regex","val","_createForOfIteratorHelperLoose","r","e","t","iterator","next","bind","a","_arrayLikeToArray","name","from","_unsupportedIterableToArray","done","TypeError","defaultOptions","attributesGroupName","preserveOrder","RegExp","oneListGroup","jPath","Builder","assign","isAttribute","ignoreAttributesFn","_step","_iterator","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","object","level","extractAttributes","rawContent","buildRawContent","buildAttributesForStopNode","buildObjectNode","result","j2x","buildTextValNode","repeat","build","jObj","buildFromOrderedJs","_jObj","arrayNodeName","isCurrentStopNode","Date","buildAttrPairStr","newval","closeTag","arrLen","listTagVal","listTagAttr","j","Ks","L","attrGroup","attrKey","nestedAttrs","cleanKey","tagEndExp","piClosingChar"],"sourceRoot":""} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/fast-xml-builder/package.json b/food-ordering-app/server/node_modules/fast-xml-builder/package.json new file mode 100644 index 000000000..6529a3a79 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-builder/package.json @@ -0,0 +1,80 @@ +{ + "name": "fast-xml-builder", + "version": "1.1.3", + "description": "Build XML from JSON without C/C++ based libraries", + "main": "./lib/fxb.cjs", + "type": "module", + "sideEffects": false, + "module": "./src/fxb.js", + "types": "./src/fxb.d.ts", + "exports": { + ".": { + "import": { + "types": "./src/fxb.d.ts", + "default": "./src/fxb.js" + }, + "require": { + "types": "./lib/fxb.d.cts", + "default": "./lib/fxb.cjs" + } + } + }, + "scripts": { + "test": "c8 --reporter=lcov --reporter=text jasmine spec/*spec.js", + "test-types": "tsc --noEmit spec/typings/typings-test.ts", + "unit": "jasmine", + "lint": "eslint src/**/*.js spec/**/*.js benchmark/**/*.js", + "bundle": "webpack --config webpack.cjs.config.js", + "prettier": "prettier --write src/**/*.js", + "checkReadiness": "publish-please --dry-run", + "publish-please": "publish-please", + "prepublishOnly": "publish-please guard" + }, + "files": [ + "lib", + "src", + "CHANGELOG.md" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/NaturalIntelligence/fast-xml-builder.git" + }, + "keywords": [ + "xml", + "json", + "fast", + "builder", + "parser", + "js2xml", + "json2xml" + ], + "author": "Amit Gupta (https://solothought.com)", + "license": "MIT", + "devDependencies": { + "@babel/core": "^7.13.10", + "@babel/plugin-transform-runtime": "^7.13.10", + "@babel/preset-env": "^7.13.10", + "@babel/register": "^7.13.8", + "@types/node": "20", + "babel-loader": "^8.2.2", + "c8": "^10.1.3", + "eslint": "^8.3.0", + "fast-xml-parser": "^5.3.9", + "he": "^1.2.0", + "jasmine": "^5.6.0", + "prettier": "^3.5.1", + "publish-please": "^5.5.2", + "typescript": "5", + "webpack": "^5.64.4", + "webpack-cli": "^4.9.1" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "dependencies": { + "path-expression-matcher": "^1.1.3" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/fast-xml-builder/src/fxb.d.ts b/food-ordering-app/server/node_modules/fast-xml-builder/src/fxb.d.ts new file mode 100644 index 000000000..f6012b449 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-builder/src/fxb.d.ts @@ -0,0 +1,173 @@ +// import { Expression } from 'path-expression-matcher'; + +type Matcher = unknown; +type Expression = unknown; + +export type XmlBuilderOptions = { + /** + * Give a prefix to the attribute name in the resulting JS object + * + * Defaults to '@_' + */ + attributeNamePrefix?: string; + + /** + * A name to group all attributes of a tag under, or `false` to disable + * + * Defaults to `false` + */ + attributesGroupName?: false | string; + + /** + * The name of the next node in the resulting JS + * + * Defaults to `#text` + */ + textNodeName?: string; + + /** + * Whether to ignore attributes when building + * + * When `true` - ignores all the attributes + * + * When `false` - builds all the attributes + * + * When `Array` - filters out attributes that match provided patterns + * + * When `Function` - calls the function for each attribute and filters out those for which the function returned `true` + * + * Defaults to `true` + */ + ignoreAttributes?: boolean | (string | RegExp)[] | ((attrName: string, jPath: string) => boolean); + + /** + * Give a property name to set CDATA values to instead of merging to tag's text value + * + * Defaults to `false` + */ + cdataPropName?: false | string; + + /** + * If set, parse comments and set as this property + * + * Defaults to `false` + */ + commentPropName?: false | string; + + /** + * Whether to make output pretty instead of single line + * + * Defaults to `false` + */ + format?: boolean; + + + /** + * If `format` is set to `true`, sets the indent string + * + * Defaults to ` ` + */ + indentBy?: string; + + /** + * Give a name to a top-level array + * + * Defaults to `undefined` + */ + arrayNodeName?: string; + + /** + * Create empty tags for tags with no text value + * + * Defaults to `false` + */ + suppressEmptyNode?: boolean; + + /** + * Suppress an unpaired tag + * + * Defaults to `true` + */ + suppressUnpairedNode?: boolean; + + /** + * Don't put a value for boolean attributes + * + * Defaults to `true` + */ + suppressBooleanAttributes?: boolean; + + /** + * Preserve the order of tags in resulting JS object + * + * Defaults to `false` + */ + preserveOrder?: boolean; + + /** + * List of tags without closing tags + * + * Defaults to `[]` + */ + unpairedTags?: string[]; + + /** + * Nodes to stop parsing at + * + * Accepts string patterns or Expression objects from path-expression-matcher + * + * String patterns starting with "*." are automatically converted to ".." for backward compatibility + * + * Defaults to `[]` + */ + stopNodes?: (string | Expression)[]; + + /** + * Control how tag value should be parsed. Called only if tag value is not empty + * + * @returns {undefined|null} `undefined` or `null` to set original value. + * @returns {unknown} + * + * 1. Different value or value with different data type to set new value. + * 2. Same value to set parsed value if `parseTagValue: true`. + * + * Defaults to `(tagName, val, jPath, hasAttributes, isLeafNode) => val` + */ + tagValueProcessor?: (name: string, value: unknown) => unknown; + + /** + * Control how attribute value should be parsed + * + * @param attrName + * @param attrValue + * @param jPath + * @returns {undefined|null} `undefined` or `null` to set original value + * @returns {unknown} + * + * Defaults to `(attrName, val, jPath) => val` + */ + attributeValueProcessor?: (name: string, value: unknown) => unknown; + + /** + * Whether to process default and DOCTYPE entities + * + * Defaults to `true` + */ + processEntities?: boolean; + + + oneListGroup?: boolean; +}; + +export interface XMLBuilder { + build(jObj: any): string; +} + +export interface XMLBuilderConstructor { + new(options?: XmlBuilderOptions): XMLBuilder; + (options?: XmlBuilderOptions): XMLBuilder; +} + +declare const Builder: XMLBuilderConstructor; + +export default Builder; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/fast-xml-builder/src/fxb.js b/food-ordering-app/server/node_modules/fast-xml-builder/src/fxb.js new file mode 100644 index 000000000..7ee70c780 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-builder/src/fxb.js @@ -0,0 +1,526 @@ +'use strict'; +//parse Empty Node as self closing node +import buildFromOrderedJs from './orderedJs2Xml.js'; +import getIgnoreAttributesFn from "./ignoreAttributes.js"; +import { Expression, Matcher } from 'path-expression-matcher'; + +const defaultOptions = { + attributeNamePrefix: '@_', + attributesGroupName: false, + textNodeName: '#text', + ignoreAttributes: true, + cdataPropName: false, + format: false, + indentBy: ' ', + suppressEmptyNode: false, + suppressUnpairedNode: true, + suppressBooleanAttributes: true, + tagValueProcessor: function (key, a) { + return a; + }, + attributeValueProcessor: function (attrName, a) { + return a; + }, + preserveOrder: false, + commentPropName: false, + unpairedTags: [], + entities: [ + { regex: new RegExp("&", "g"), val: "&" },//it must be on top + { regex: new RegExp(">", "g"), val: ">" }, + { regex: new RegExp("<", "g"), val: "<" }, + { regex: new RegExp("\'", "g"), val: "'" }, + { regex: new RegExp("\"", "g"), val: """ } + ], + processEntities: true, + stopNodes: [], + // transformTagName: false, + // transformAttributeName: false, + oneListGroup: false, + jPath: true // When true, callbacks receive string jPath; when false, receive Matcher instance +}; + +export default function Builder(options) { + this.options = Object.assign({}, defaultOptions, options); + + // Convert old-style stopNodes for backward compatibility + // Old syntax: "*.tag" meant "tag anywhere in tree" + // New syntax: "..tag" means "tag anywhere in tree" + if (this.options.stopNodes && Array.isArray(this.options.stopNodes)) { + this.options.stopNodes = this.options.stopNodes.map(node => { + if (typeof node === 'string' && node.startsWith('*.')) { + // Convert old wildcard syntax to deep wildcard + return '..' + node.substring(2); + } + return node; + }); + } + + // Pre-compile stopNode expressions for pattern matching + this.stopNodeExpressions = []; + if (this.options.stopNodes && Array.isArray(this.options.stopNodes)) { + for (let i = 0; i < this.options.stopNodes.length; i++) { + const node = this.options.stopNodes[i]; + if (typeof node === 'string') { + this.stopNodeExpressions.push(new Expression(node)); + } else if (node instanceof Expression) { + this.stopNodeExpressions.push(node); + } + } + } + + if (this.options.ignoreAttributes === true || this.options.attributesGroupName) { + this.isAttribute = function (/*a*/) { + return false; + }; + } else { + this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes) + this.attrPrefixLen = this.options.attributeNamePrefix.length; + this.isAttribute = isAttribute; + } + + this.processTextOrObjNode = processTextOrObjNode + + if (this.options.format) { + this.indentate = indentate; + this.tagEndChar = '>\n'; + this.newLine = '\n'; + } else { + this.indentate = function () { + return ''; + }; + this.tagEndChar = '>'; + this.newLine = ''; + } +} + +Builder.prototype.build = function (jObj) { + if (this.options.preserveOrder) { + return buildFromOrderedJs(jObj, this.options); + } else { + if (Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1) { + jObj = { + [this.options.arrayNodeName]: jObj + } + } + // Initialize matcher for path tracking + const matcher = new Matcher(); + return this.j2x(jObj, 0, matcher).val; + } +}; + +Builder.prototype.j2x = function (jObj, level, matcher) { + let attrStr = ''; + let val = ''; + + // Get jPath based on option: string for backward compatibility, or Matcher for new features + const jPath = this.options.jPath ? matcher.toString() : matcher; + + // Check if current node is a stopNode (will be used for attribute encoding) + const isCurrentStopNode = this.checkStopNode(matcher); + + for (let key in jObj) { + if (!Object.prototype.hasOwnProperty.call(jObj, key)) continue; + if (typeof jObj[key] === 'undefined') { + // supress undefined node only if it is not an attribute + if (this.isAttribute(key)) { + val += ''; + } + } else if (jObj[key] === null) { + // null attribute should be ignored by the attribute list, but should not cause the tag closing + if (this.isAttribute(key)) { + val += ''; + } else if (key === this.options.cdataPropName) { + val += ''; + } else if (key[0] === '?') { + val += this.indentate(level) + '<' + key + '?' + this.tagEndChar; + } else { + val += this.indentate(level) + '<' + key + '/' + this.tagEndChar; + } + // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar; + } else if (jObj[key] instanceof Date) { + val += this.buildTextValNode(jObj[key], key, '', level, matcher); + } else if (typeof jObj[key] !== 'object') { + //premitive type + const attr = this.isAttribute(key); + if (attr && !this.ignoreAttributesFn(attr, jPath)) { + attrStr += this.buildAttrPairStr(attr, '' + jObj[key], isCurrentStopNode); + } else if (!attr) { + //tag value + if (key === this.options.textNodeName) { + let newval = this.options.tagValueProcessor(key, '' + jObj[key]); + val += this.replaceEntitiesValue(newval); + } else { + // Check if this is a stopNode before building + matcher.push(key); + const isStopNode = this.checkStopNode(matcher); + matcher.pop(); + + if (isStopNode) { + // Build as raw content without encoding + const textValue = '' + jObj[key]; + if (textValue === '') { + val += this.indentate(level) + '<' + key + this.closeTag(key) + this.tagEndChar; + } else { + val += this.indentate(level) + '<' + key + '>' + textValue + '' + textValue + '${item}`; + } else if (typeof item === 'object' && item !== null) { + const nestedContent = this.buildRawContent(item); + const nestedAttrs = this.buildAttributesForStopNode(item); + if (nestedContent === '') { + content += `<${key}${nestedAttrs}/>`; + } else { + content += `<${key}${nestedAttrs}>${nestedContent}`; + } + } + } + } else if (typeof value === 'object' && value !== null) { + // Nested object + const nestedContent = this.buildRawContent(value); + const nestedAttrs = this.buildAttributesForStopNode(value); + if (nestedContent === '') { + content += `<${key}${nestedAttrs}/>`; + } else { + content += `<${key}${nestedAttrs}>${nestedContent}`; + } + } else { + // Primitive value + content += `<${key}>${value}`; + } + } + + return content; +}; + +// Build attribute string for stopNode (no entity encoding) +Builder.prototype.buildAttributesForStopNode = function (obj) { + if (!obj || typeof obj !== 'object') return ''; + + let attrStr = ''; + + // Check for attributesGroupName (when attributes are grouped) + if (this.options.attributesGroupName && obj[this.options.attributesGroupName]) { + const attrGroup = obj[this.options.attributesGroupName]; + for (let attrKey in attrGroup) { + if (!Object.prototype.hasOwnProperty.call(attrGroup, attrKey)) continue; + const cleanKey = attrKey.startsWith(this.options.attributeNamePrefix) + ? attrKey.substring(this.options.attributeNamePrefix.length) + : attrKey; + const val = attrGroup[attrKey]; + if (val === true && this.options.suppressBooleanAttributes) { + attrStr += ' ' + cleanKey; + } else { + attrStr += ' ' + cleanKey + '="' + val + '"'; // No encoding for stopNode + } + } + } else { + // Look for individual attributes + for (let key in obj) { + if (!Object.prototype.hasOwnProperty.call(obj, key)) continue; + const attr = this.isAttribute(key); + if (attr) { + const val = obj[key]; + if (val === true && this.options.suppressBooleanAttributes) { + attrStr += ' ' + attr; + } else { + attrStr += ' ' + attr + '="' + val + '"'; // No encoding for stopNode + } + } + } + } + + return attrStr; +}; + +Builder.prototype.buildObjectNode = function (val, key, attrStr, level) { + if (val === "") { + if (key[0] === "?") return this.indentate(level) + '<' + key + attrStr + '?' + this.tagEndChar; + else { + return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar; + } + } else { + + let tagEndExp = '' + val + tagEndExp); + } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) { + return this.indentate(level) + `` + this.newLine; + } else { + return ( + this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar + + val + + this.indentate(level) + tagEndExp); + } + } +} + +Builder.prototype.closeTag = function (key) { + let closeTag = ""; + if (this.options.unpairedTags.indexOf(key) !== -1) { //unpaired + if (!this.options.suppressUnpairedNode) closeTag = "/" + } else if (this.options.suppressEmptyNode) { //empty + closeTag = "/"; + } else { + closeTag = `>` + this.newLine; + } else if (this.options.commentPropName !== false && key === this.options.commentPropName) { + return this.indentate(level) + `` + this.newLine; + } else if (key[0] === "?") {//PI tag + return this.indentate(level) + '<' + key + attrStr + '?' + this.tagEndChar; + } else { + // Normal processing: apply tagValueProcessor and entity replacement + let textValue = this.options.tagValueProcessor(key, val); + textValue = this.replaceEntitiesValue(textValue); + + if (textValue === '') { + return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar; + } else { + return this.indentate(level) + '<' + key + attrStr + '>' + + textValue + + ' 0 && this.options.processEntities) { + for (let i = 0; i < this.options.entities.length; i++) { + const entity = this.options.entities[i]; + textValue = textValue.replace(entity.regex, entity.val); + } + } + return textValue; +} + +function indentate(level) { + return this.options.indentBy.repeat(level); +} + +function isAttribute(name /*, options*/) { + if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) { + return name.substr(this.attrPrefixLen); + } else { + return false; + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/fast-xml-builder/src/ignoreAttributes.js b/food-ordering-app/server/node_modules/fast-xml-builder/src/ignoreAttributes.js new file mode 100644 index 000000000..bdec0a611 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-builder/src/ignoreAttributes.js @@ -0,0 +1,18 @@ +export default function getIgnoreAttributesFn(ignoreAttributes) { + if (typeof ignoreAttributes === 'function') { + return ignoreAttributes + } + if (Array.isArray(ignoreAttributes)) { + return (attrName) => { + for (const pattern of ignoreAttributes) { + if (typeof pattern === 'string' && attrName === pattern) { + return true + } + if (pattern instanceof RegExp && pattern.test(attrName)) { + return true + } + } + } + } + return () => false +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/fast-xml-builder/src/orderedJs2Xml.js b/food-ordering-app/server/node_modules/fast-xml-builder/src/orderedJs2Xml.js new file mode 100644 index 000000000..24292cfbb --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-builder/src/orderedJs2Xml.js @@ -0,0 +1,288 @@ +import { Expression, Matcher } from 'path-expression-matcher'; + +const EOL = "\n"; + +/** + * + * @param {array} jArray + * @param {any} options + * @returns + */ +export default function toXml(jArray, options) { + let indentation = ""; + if (options.format && options.indentBy.length > 0) { + indentation = EOL; + } + + // Pre-compile stopNode expressions for pattern matching + const stopNodeExpressions = []; + if (options.stopNodes && Array.isArray(options.stopNodes)) { + for (let i = 0; i < options.stopNodes.length; i++) { + const node = options.stopNodes[i]; + if (typeof node === 'string') { + stopNodeExpressions.push(new Expression(node)); + } else if (node instanceof Expression) { + stopNodeExpressions.push(node); + } + } + } + + // Initialize matcher for path tracking + const matcher = new Matcher(); + + return arrToStr(jArray, options, indentation, matcher, stopNodeExpressions); +} + +function arrToStr(arr, options, indentation, matcher, stopNodeExpressions) { + let xmlStr = ""; + let isPreviousElementTag = false; + + + if (!Array.isArray(arr)) { + // Non-array values (e.g. string tag values) should be treated as text content + if (arr !== undefined && arr !== null) { + let text = arr.toString(); + text = replaceEntitiesValue(text, options); + return text; + } + return ""; + } + + for (let i = 0; i < arr.length; i++) { + const tagObj = arr[i]; + const tagName = propName(tagObj); + if (tagName === undefined) continue; + + // Extract attributes from ":@" property + const attrValues = extractAttributeValues(tagObj[":@"], options); + + // Push tag to matcher WITH attributes + matcher.push(tagName, attrValues); + + // Check if this is a stop node using Expression matching + const isStopNode = checkStopNode(matcher, stopNodeExpressions); + + if (tagName === options.textNodeName) { + let tagText = tagObj[tagName]; + if (!isStopNode) { + tagText = options.tagValueProcessor(tagName, tagText); + tagText = replaceEntitiesValue(tagText, options); + } + if (isPreviousElementTag) { + xmlStr += indentation; + } + xmlStr += tagText; + isPreviousElementTag = false; + matcher.pop(); + continue; + } else if (tagName === options.cdataPropName) { + if (isPreviousElementTag) { + xmlStr += indentation; + } + xmlStr += ``; + isPreviousElementTag = false; + matcher.pop(); + continue; + } else if (tagName === options.commentPropName) { + xmlStr += indentation + ``; + isPreviousElementTag = true; + matcher.pop(); + continue; + } else if (tagName[0] === "?") { + const attStr = attr_to_str(tagObj[":@"], options, isStopNode); + const tempInd = tagName === "?xml" ? "" : indentation; + let piTextNodeName = tagObj[tagName][0][options.textNodeName]; + piTextNodeName = piTextNodeName.length !== 0 ? " " + piTextNodeName : ""; //remove extra spacing + xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`; + isPreviousElementTag = true; + matcher.pop(); + continue; + } + + let newIdentation = indentation; + if (newIdentation !== "") { + newIdentation += options.indentBy; + } + + // Pass isStopNode to attr_to_str so attributes are also not processed for stopNodes + const attStr = attr_to_str(tagObj[":@"], options, isStopNode); + const tagStart = indentation + `<${tagName}${attStr}`; + + // If this is a stopNode, get raw content without processing + let tagValue; + if (isStopNode) { + tagValue = getRawContent(tagObj[tagName], options); + } else { + tagValue = arrToStr(tagObj[tagName], options, newIdentation, matcher, stopNodeExpressions); + } + + if (options.unpairedTags.indexOf(tagName) !== -1) { + if (options.suppressUnpairedNode) xmlStr += tagStart + ">"; + else xmlStr += tagStart + "/>"; + } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) { + xmlStr += tagStart + "/>"; + } else if (tagValue && tagValue.endsWith(">")) { + xmlStr += tagStart + `>${tagValue}${indentation}`; + } else { + xmlStr += tagStart + ">"; + if (tagValue && indentation !== "" && (tagValue.includes("/>") || tagValue.includes("`; + } + isPreviousElementTag = true; + + // Pop tag from matcher + matcher.pop(); + } + + return xmlStr; +} + +/** + * Extract attribute values from the ":@" object and return as plain object + * for passing to matcher.push() + */ +function extractAttributeValues(attrMap, options) { + if (!attrMap || options.ignoreAttributes) return null; + + const attrValues = {}; + let hasAttrs = false; + + for (let attr in attrMap) { + if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue; + // Remove the attribute prefix to get clean attribute name + const cleanAttrName = attr.startsWith(options.attributeNamePrefix) + ? attr.substr(options.attributeNamePrefix.length) + : attr; + attrValues[cleanAttrName] = attrMap[attr]; + hasAttrs = true; + } + + return hasAttrs ? attrValues : null; +} + +/** + * Extract raw content from a stopNode without any processing + * This preserves the content exactly as-is, including special characters + */ +function getRawContent(arr, options) { + if (!Array.isArray(arr)) { + // Non-array values return as-is + if (arr !== undefined && arr !== null) { + return arr.toString(); + } + return ""; + } + + let content = ""; + for (let i = 0; i < arr.length; i++) { + const item = arr[i]; + const tagName = propName(item); + + if (tagName === options.textNodeName) { + // Raw text content - NO processing, NO entity replacement + content += item[tagName]; + } else if (tagName === options.cdataPropName) { + // CDATA content + content += item[tagName][0][options.textNodeName]; + } else if (tagName === options.commentPropName) { + // Comment content + content += item[tagName][0][options.textNodeName]; + } else if (tagName && tagName[0] === "?") { + // Processing instruction - skip for stopNodes + continue; + } else if (tagName) { + // Nested tags within stopNode + // Recursively get raw content and reconstruct the tag + // For stopNodes, we don't process attributes either + const attStr = attr_to_str_raw(item[":@"], options); + const nestedContent = getRawContent(item[tagName], options); + + if (!nestedContent || nestedContent.length === 0) { + content += `<${tagName}${attStr}/>`; + } else { + content += `<${tagName}${attStr}>${nestedContent}`; + } + } + } + return content; +} + +/** + * Build attribute string for stopNodes - NO entity replacement + */ +function attr_to_str_raw(attrMap, options) { + let attrStr = ""; + if (attrMap && !options.ignoreAttributes) { + for (let attr in attrMap) { + if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue; + // For stopNodes, use raw value without processing + let attrVal = attrMap[attr]; + if (attrVal === true && options.suppressBooleanAttributes) { + attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`; + } else { + attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}="${attrVal}"`; + } + } + } + return attrStr; +} + +function propName(obj) { + const keys = Object.keys(obj); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if (!Object.prototype.hasOwnProperty.call(obj, key)) continue; + if (key !== ":@") return key; + } +} + +function attr_to_str(attrMap, options, isStopNode) { + let attrStr = ""; + if (attrMap && !options.ignoreAttributes) { + for (let attr in attrMap) { + if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue; + let attrVal; + + if (isStopNode) { + // For stopNodes, use raw value without any processing + attrVal = attrMap[attr]; + } else { + // Normal processing: apply attributeValueProcessor and entity replacement + attrVal = options.attributeValueProcessor(attr, attrMap[attr]); + attrVal = replaceEntitiesValue(attrVal, options); + } + + if (attrVal === true && options.suppressBooleanAttributes) { + attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`; + } else { + attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}="${attrVal}"`; + } + } + } + return attrStr; +} + +function checkStopNode(matcher, stopNodeExpressions) { + if (!stopNodeExpressions || stopNodeExpressions.length === 0) return false; + + for (let i = 0; i < stopNodeExpressions.length; i++) { + if (matcher.matches(stopNodeExpressions[i])) { + return true; + } + } + return false; +} + +function replaceEntitiesValue(textValue, options) { + if (textValue && textValue.length > 0 && options.processEntities) { + for (let i = 0; i < options.entities.length; i++) { + const entity = options.entities[i]; + textValue = textValue.replace(entity.regex, entity.val); + } + } + return textValue; +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/fast-xml-builder/src/prettifyJs2Xml.js b/food-ordering-app/server/node_modules/fast-xml-builder/src/prettifyJs2Xml.js new file mode 100644 index 000000000..e69de29bb diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/CHANGELOG.md b/food-ordering-app/server/node_modules/fast-xml-parser/CHANGELOG.md new file mode 100644 index 000000000..928b29ee4 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/CHANGELOG.md @@ -0,0 +1,723 @@ +Note: If you find missing information about particular minor version, that version must have been changed without any functional change in this library. + +**5.4.1 / 2026-02-25** +- fix (#785) unpairedTag node should not have tag content + + +**5.4.0 / 2026-02-25** +- migrate to fast-xml-builder + +5.3.9 +**5.3.9 / 2026-02-25** +- support strictReservedNames + +5.3.8 +**5.3.8 / 2026-02-25** +- support maxNestedTags +- handle non-array input for XML builder when preserveOrder is true (By [Angelo Coetzee](https://github.com/Angelopvtac)) +- save use of js properies + +5.3.7 +**5.3.7 / 2026-02-20** +- fix typings for CJS (By [Corentin Girard](https://github.com/Drarig29)) + + + +**5.3.6 / 2026-02-14** +- Improve security and performance of entity processing + - new options `maxEntitySize`, `maxExpansionDepth`, `maxTotalExpansions`, `maxExpandedLength`, `allowedTags`,`tagFilter` + - fast return when no edtity is present + - improvement replacement logic to reduce number of calls + + +**5.3.5 / 2026-02-08** +- fix: Escape regex char in entity name +- update strnum to 2.1.2 +- add missing exports in CJS typings + + +**5.3.4 / 2026-01-30** +- fix: handle HTML numeric and hex entities when out of range + + +**5.3.3 / 2025-12-12** +- fix #775: transformTagName with allowBooleanAttributes adds an unnecessary attribute + +**5.3.2 / 2025-11-14** +- fix for import statement for v6 + +**5.3.1 / 2025-11-03** +- Performance improvement for stopNodes (By [Maciek Lamberski](https://github.com/macieklamberski)) + +**5.3.0 / 2025-10-03** +- Use `Uint8Array` in place of `Buffer` in Parser + +**5.2.5 / 2025-06-08** +- Inform user to use [fxp-cli](https://github.com/NaturalIntelligence/fxp-cli) instead of in-built CLI feature +- Export typings for direct use + +**5.2.4 / 2025-06-06** +- fix (#747): fix EMPTY and ANY with ELEMENT in DOCTYPE + +**5.2.3 / 2025-05-11** +- fix (#747): support EMPTY and ANY with ELEMENT in DOCTYPE + +**5.2.2 / 2025-05-05** +- fix (#746): update strnum to fix parsing issues related to enotations + +**5.2.1 / 2025-04-22** +- fix: read DOCTYPE entity value correctly +- read DOCTYPE NOTATION, ELEMENT exp but not using read values + + +**5.2.0 / 2025-04-03** +- feat: support metadata on nodes (#593) (By [Steven R. Loomis](https://github.com/srl295)) + +**5.1.0 / 2025-04-02** +- feat: declare package as side-effect free (#738) (By [Thomas Bouffard](https://github.com/tbouffard)) +- fix cjs build mode +- fix builder return type to string +- + +**5.0.9 / 2025-03-14** +- fix: support numeric entities with values over 0xFFFF (#726) (By [Marc Durdin](https://github.com/mcdurdin)) +- fix: update strnum to fix parsing 0 if skiplike option is used + +**5.0.8 / 2025-02-27** +- fix parsing 0 if skiplike option is used. + - updating strnum dependency + +**5.0.7 / 2025-02-25** +- fix (#724) typings for cjs. + +**5.0.6 / 2025-02-20** +- fix cli output (By [Angel Delgado](https://github.com/angeld7)) + - remove multiple JSON parsing + +**5.0.5 / 2025-02-20** +- fix parsing of string starting with 'e' or 'E' by updating strnum + +**5.0.4 / 2025-02-20** +- fix CLI to support all the versions of node js when displaying library version. +- fix CJS import in v5 + - by fixing webpack config + +**5.0.3 / 2025-02-20** +- Using strnum ESM module + - new fixes in strum may break your experience + +**5.0.2 / 2025-02-20** +- fix: include CommonJS resources in the npm package #714 (By [Thomas Bouffard](https://github.com/tbouffard)) +- fix: move babel deps to dev deps + +**5.0.1 / 2025-02-19** +- fix syntax error for CLI command + +**5.0.0 / 2025-02-19** +- ESM support + - no change in the functionality, syntax, APIs, options, or documentation. + +**4.5.2 / 2025-02-18** +- Fix null CDATA to comply with undefined behavior (#701) (By [Matthieu BOHEAS](https://github.com/Kelgors)) +- Fix(performance): Update check for leaf node in saveTextToParentTag function in OrderedObjParser.js (#707) (By [...](https://github.com/tomingtoming)) +- Fix: emit full JSON string from CLI when no output filename specified (#710) (By [Matt Benson](https://github.com/mbenson)) + +**4.5.1 / 2024-12-15** +- Fix empty tag key name for v5 (#697). no impact on v4 +- Fixes entity parsing when used in strict mode (#699) + +**4.5.0 / 2024-09-03** +- feat #666: ignoreAttributes support function, and array of string or regex (By [ArtemM](https://github.com/mav-rik)) + +**4.4.1 / 2024-07-28** +- v5 fix: maximum length limit to currency value +- fix #634: build attributes with oneListGroup and attributesGroupName (#653)(By [Andreas Naziris](https://github.com/a-rasin)) +- fix: get oneListGroup to work as expected for array of strings (#662)(By [Andreas Naziris](https://github.com/a-rasin)) + +**4.4.0 / 2024-05-18** +- fix #654: parse attribute list correctly for self closing stop node. +- fix: validator bug when closing tag is not opened. (#647) (By [Ryosuke Fukatani](https://github.com/RyosukeFukatani)) +- fix #581: typings; return type of `tagValueProcessor` & `attributeValueProcessor` (#582) (By [monholm]()) + +**4.3.6 / 2024-03-16** +- Add support for parsing HTML numeric entities (#645) (By [Jonas Schade ](https://github.com/DerZade)) + +**4.3.5 / 2024-02-24** +- code for v5 is added for experimental use + +**4.3.4 / 2024-01-10** +- fix: Don't escape entities in CDATA sections (#633) (By [wackbyte](https://github.com/wackbyte)) + +**4.3.3 / 2024-01-10** +- Remove unnecessary regex + +**4.3.2 / 2023-10-02** +- fix `jObj.hasOwnProperty` when give input is null (By [Arda TANRIKULU](https://github.com/ardatan)) + +**4.3.1 / 2023-09-24** +- revert back "Fix typings for builder and parser to make return type generic" to avoid failure of existing projects. Need to decide a common approach. + +**4.3.0 / 2023-09-20** +- Fix stopNodes to work with removeNSPrefix (#607) (#608) (By [Craig Andrews]https://github.com/candrews)) +- Fix #610 ignore properties set to Object.prototype +- Fix typings for builder and parser to make return type generic (By [Sarah Dayan](https://github.com/sarahdayan)) + +**4.2.7 / 2023-07-30** +- Fix: builder should set text node correctly when only textnode is present (#589) (By [qianqing](https://github.com/joneqian)) +- Fix: Fix for null and undefined attributes when building xml (#585) (#598). A null or undefined value should be ignored. (By [Eugenio Ceschia](https://github.com/cecia234)) + +**4.2.6 / 2023-07-17** +- Fix: Remove trailing slash from jPath for self-closing tags (#595) (By [Maciej Radzikowski](https://github.com/m-radzikowski)) + +**4.2.5 / 2023-06-22** +- change code implementation + +**4.2.4 / 2023-06-06** +- fix security bug + +**4.2.3 / 2023-06-05** +- fix security bug + +**4.2.2 / 2023-04-18** +- fix #562: fix unpaired tag when it comes in last of a nested tag. Also throw error when unpaired tag is used as closing tag + +**4.2.1 / 2023-04-18** +- fix: jpath after unpaired tags + +**4.2.0 / 2023-04-09** +- support `updateTag` parser property + +**4.1.4 / 2023-04-08** +- update typings to let user create XMLBuilder instance without options (#556) (By [Patrick](https://github.com/omggga)) +- fix: IsArray option isn't parsing tags with 0 as value correctly #490 (#557) (By [Aleksandr Murashkin](https://github.com/p-kuen)) +- feature: support `oneListGroup` to group repeated children tags udder single group + +**4.1.3 / 2023-02-26** +- fix #546: Support complex entity value + +**4.1.2 / 2023-02-12** +- Security Fix + +**4.1.1 / 2023-02-03** +- Fix #540: ignoreAttributes breaks unpairedTags +- Refactor XML builder code + +**4.1.0 / 2023-02-02** +- Fix '<' or '>' in DTD comment throwing an error. (#533) (By [Adam Baker](https://github.com/Cwazywierdo)) +- Set "eNotation" to 'true' as default + +**4.0.15 / 2023-01-25** +- make "eNotation" optional + +**4.0.14 / 2023-01-22** +- fixed: add missed typing "eNotation" to parse values + +**4.0.13 / 2023-01-07** +- preserveorder formatting (By [mdeknowis](https://github.com/mdeknowis)) +- support `transformAttributeName` (By [Erik Rothoff Andersson](https://github.com/erkie)) + +**4.0.12 / 2022-11-19** +- fix typescript + +**4.0.11 / 2022-10-05** +- fix #501: parse for entities only once + +**4.0.10 / 2022-09-14** +- fix broken links in demo site (By [Yannick Lang](https://github.com/layaxx)) +- fix #491: tagValueProcessor type definition (By [Andrea Francesco Speziale](https://github.com/andreafspeziale)) +- Add jsdocs for tagValueProcessor + + +**4.0.9 / 2022-07-10** +- fix #470: stop-tag can have self-closing tag with same name +- fix #472: stopNode can have any special tag inside +- Allow !ATTLIST and !NOTATION with DOCTYPE +- Add transformTagName option to transform tag names when parsing (#469) (By [Erik Rothoff Andersson](https://github.com/erkie)) + +**4.0.8 / 2022-05-28** +- Fix CDATA parsing returning empty string when value = 0 (#451) (By [ndelanou](https://github.com/ndelanou)) +- Fix stopNodes when same tag appears inside node (#456) (By [patrickshipe](https://github.com/patrickshipe)) +- fix #468: prettify own properties only + +**4.0.7 / 2022-03-18** +- support CDATA even if tag order is not preserved +- support Comments even if tag order is not preserved +- fix #446: XMLbuilder should not indent XML declaration + +**4.0.6 / 2022-03-08** +- fix: call tagValueProcessor only once for array items +- fix: missing changed for #437 + +**4.0.5 / 2022-03-06** +- fix #437: call tagValueProcessor from XML builder + +**4.0.4 / 2022-03-03** +- fix #435: should skip unpaired and self-closing nodes when set as stopnodes + +**4.0.3 / 2022-02-15** +- fix: ReferenceError when Bundled with Strict (#431) (By [Andreas Heissenberger](https://github.com/aheissenberger)) + + +**4.0.2 / 2022-02-04** +- builder supports `suppressUnpairedNode` +- parser supports `ignoreDeclaration` and `ignorePiTags` +- fix: when comment is parsed as text value if given as ` ...` #423 +- builder supports decoding `&` + +**4.0.1 / 2022-01-08** +- fix builder for pi tag +- fix: support suppressBooleanAttrs by builder + +**4.0.0 / 2022-01-06** +- Generating different combined, parser only, builder only, validator only browser bundles +- Keeping cjs modules as they can be imported in cjs and esm modules both. Otherwise refer `esm` branch. + +**4.0.0-beta.8 / 2021-12-13** +- call tagValueProcessor for stop nodes + +**4.0.0-beta.7 / 2021-12-09** +- fix Validator bug when an attribute has no value but '=' only +- XML Builder should suppress unpaired tags by default. +- documents update for missing features +- refactoring to use Object.assign +- refactoring to remove repeated code + +**4.0.0-beta.6 / 2021-12-05** +- Support PI Tags processing +- Support `suppressBooleanAttributes` by XML Builder for attributes with value `true`. + +**4.0.0-beta.5 / 2021-12-04** +- fix: when a tag with name "attributes" + +**4.0.0-beta.4 / 2021-12-02** +- Support HTML document parsing +- skip stop nodes parsing when building the XML from JS object +- Support external entites without DOCTYPE +- update dev dependency: strnum v1.0.5 to fix long number issue + +**4.0.0-beta.3 / 2021-11-30** +- support global stopNodes expression like "*.stop" +- support self-closing and paired unpaired tags +- fix: CDATA should not be parsed. +- Fix typings for XMLBuilder (#396)(By [Anders Emil Salvesen](https://github.com/andersem)) +- supports XML entities, HTML entities, DOCTYPE entities + +**⚠️ 4.0.0-beta.2 / 2021-11-19** +- rename `attrMap` to `attibutes` in parser output when `preserveOrder:true` +- supports unpairedTags + +**⚠️ 4.0.0-beta.1 / 2021-11-18** +- Parser returns an array now + - to make the structure common + - and to return root level detail +- renamed `cdataTagName` to `cdataPropName` +- Added `commentPropName` +- fix typings + +**⚠️ 4.0.0-beta.0 / 2021-11-16** +- Name change of many configuration properties. + - `attrNodeName` to `attributesGroupName` + - `attrValueProcessor` to `attributeValueProcessor` + - `parseNodeValue` to `parseTagValue` + - `ignoreNameSpace` to `removeNSPrefix` + - `numParseOptions` to `numberParseOptions` + - spelling correction for `suppressEmptyNode` +- Name change of cli and browser bundle to **fxparser** +- `isArray` option is added to parse a tag into array +- `preserveOrder` option is added to render XML in such a way that the result js Object maintains the order of properties same as in XML. +- Processing behaviour of `tagValueProcessor` and `attributeValueProcessor` are changes with extra input parameters +- j2xparser is renamed to XMLBuilder. +- You need to build XML parser instance for given options first before parsing XML. +- fix #327, #336: throw error when extra text after XML content +- fix #330: attribute value can have '\n', +- fix #350: attrbiutes can be separated by '\n' from tagname + +3.21.1 / 2021-10-31 +- Correctly format JSON elements with a text prop but no attribute props ( By [haddadnj](https://github.com/haddadnj) ) + +3.21.0 / 2021-10-25 + - feat: added option `rootNodeName` to set tag name for array input when converting js object to XML. + - feat: added option `alwaysCreateTextNode` to force text node creation (by: *@massimo-ua*) + - ⚠️ feat: Better error location for unclosed tags. (by *@Gei0r*) + - Some error messages would be changed when validating XML. Eg + - `{ InvalidXml: "Invalid '[ \"rootNode\"]' found." }` → `{InvalidTag: "Unclosed tag 'rootNode'."}` + - `{ InvalidTag: "Closing tag 'rootNode' is expected inplace of 'rootnode'." }` → `{ InvalidTag: "Expected closing tag 'rootNode' (opened in line 1) instead of closing tag 'rootnode'."}` + - ⚠️ feat: Column in error response when validating XML +```js +{ + "code": "InvalidAttr", + "msg": "Attribute 'abc' is repeated.", + "line": 1, + "col": 22 +} +``` + +3.20.1 / 2021-09-25 + - update strnum package + +3.20.0 / 2021-09-10 + - Use strnum npm package to parse string to number + - breaking change: long number will be parsed to scientific notation. + +3.19.0 / 2021-03-14 + - License changed to MIT original + - Fix #321 : namespace tag parsing + +3.18.0 / 2021-02-05 + - Support RegEx and function in arrayMode option + - Fix #317 : validate nested PI tags + +3.17.4 / 2020-06-07 + - Refactor some code to support IE11 + - Fix: `` space as attribute string + +3.17.3 / 2020-05-23 + - Fix: tag name separated by \n \t + - Fix: throw error for unclosed tags + +3.17.2 / 2020-05-23 + - Fixed an issue in processing doctype tag + - Fixed tagName where it should not have whitespace chars + +3.17.1 / 2020-05-19 + - Fixed an issue in checking opening tag + +3.17.0 / 2020-05-18 + - parser: fix '<' issue when it comes in aatr value + - parser: refactoring to remove dependency from regex + - validator: fix IE 11 issue for error messages + - updated dev dependencies + - separated benchmark module to sub-module + - breaking change: comments will not be removed from CDATA data + +3.16.0 / 2020-01-12 + - validaor: fix for ampersand characters (#215) + - refactoring to support unicode chars in tag name + - update typing for validator error + +3.15.1 / 2019-12-09 + - validaor: fix multiple roots are not allowed + +3.15.0 / 2019-11-23 + - validaor: improve error messaging + - validator: add line number in case of error + - validator: add more error scenarios to make it more descriptive + +3.14.0 / 2019-10-25 + - arrayMode for XML to JS obj parsing + +3.13.0 / 2019-10-02 + - pass tag/attr name to tag/attr value processor + - inbuilt optional validation with XML parser + +3.12.21 / 2019-10-02 + - Fix validator for unclosed XMLs + - move nimnjs dependency to dev dependency + - update dependencies + +3.12.20 / 2019-08-16 + - Revert: Fix #167: '>' in attribute value as it is causing high performance degrade. + +3.12.19 / 2019-07-28 + - Fix js to xml parser should work for date values. (broken: `tagValueProcessor` will receive the original value instead of string always) (breaking change) + +3.12.18 / 2019-07-27 + - remove configstore dependency + +3.12.17 / 2019-07-14 + - Fix #167: '>' in attribute value + +3.12.16 / 2019-03-23 + - Support a new option "stopNodes". (#150) +Accept the list of tags which are not required to be parsed. Instead, all the nested tag and data will be assigned as string. + - Don't show post-install message + +3.12.12 / 2019-01-11 + - fix : IE parseInt, parseFloat error + +3.12.11 / 2018-12-24 + - fix #132: "/" should not be parsed as boolean attr in case of self closing tags + +3.12.9 / 2018-11-23 + - fix #129 : validator should not fail when an atrribute name is 'length' + +3.12.8 / 2018-11-22 + - fix #128 : use 'attrValueProcessor' to process attribute value in json2xml parser + +3.12.6 / 2018-11-10 + - Fix #126: check for type + +3.12.4 / 2018-09-12 + - Fix: include tasks in npm package + +3.12.3 / 2018-09-12 + - Fix CLI issue raised in last PR + +3.12.2 / 2018-09-11 + - Fix formatting for JSON to XML output + - Migrate to webpack (PR merged) + - fix cli (PR merged) + +3.12.0 / 2018-08-06 + - Support hexadecimal values + - Support true number parsing + +3.11.2 / 2018-07-23 + - Update Demo for more options + - Update license information + - Update readme for formatting, users, and spelling mistakes + - Add missing typescript definition for j2xParser + - refactoring: change filenames + +3.11.1 / 2018-06-05 + - fix #93: read the text after self closing tag + +3.11.0 / 2018-05-20 + - return defaultOptions if there are not options in buildOptions function + - added localeRange declaration in parser.d.ts + - Added support of cyrillic characters in validator XML + - fixed bug in validator work when XML data with byte order marker + +3.10.0 / 2018-05-13 + - Added support of cyrillic characters in parsing XML to JSON + +3.9.11 / 2018-05-09 + - fix https://github.com/NaturalIntelligence/fast-xml-parser/issues/80 fix nimn chars + - update package information + - fix https://github.com/NaturalIntelligence/fast-xml-parser/issues/86: json 2 xml parser : property with null value should be parsed to self closing tag. + - update online demo + - revert zombiejs to old version to support old version of node + - update dependencies + +3.3.10 / 2018-04-23 + - fix #77 : parse even if closing tag has space before '>' + - include all css & js lib in demo app + - remove babel dependencies until needed + +3.3.9 / 2018-04-18 + - fix #74 : TS2314 TypeScript compiler error + +3.3.8 / 2018-04-17 + - fix #73 : IE doesn't support Object.assign + +3.3.7 / 2018-04-14 + - fix: use let insted of const in for loop of validator + - Merge pull request + https://github.com/NaturalIntelligence/fast-xml-parser/issues/71 from bb/master + first draft of typings for typescript + https://github.com/NaturalIntelligence/fast-xml-parser/issues/69 + - Merge pull request + https://github.com/NaturalIntelligence/fast-xml-parser/issues/70 from bb/patch-1 + fix some typos in readme + +3.3.6 / 2018-03-21 + - change arrow functions to full notation for IE compatibility + +3.3.5 / 2018-03-15 + - fix https://github.com/NaturalIntelligence/fast-xml-parser/issues/67 : attrNodeName invalid behavior + - fix: remove decodeHTML char condition + +3.3.4 / 2018-03-14 + - remove dependency on "he" package + - refactor code to separate methods in separate files. + - draft code for transforming XML to json string. It is not officially documented due to performance issue. + +3.3.0 / 2018-03-05 + - use common default options for XML parsing for consistency. And add `parseToNimn` method. + - update nexttodo + - update README about XML to Nimn transformation and remove special notes about 3.x release + - update CONTRIBUTING.ms mentioning nexttodo + - add negative case for XML PIs + - validate xml processing instruction tags https://github.com/NaturalIntelligence/fast-xml-parser/issues/62 + - nimndata: handle array with object + - nimndata: node with nested node and text node + - nimndata: handle attributes and text node + - nimndata: add options, handle array + - add xml to nimn data converter + - x2j: direct access property with tagname + - update changelog + - fix validator when single quote presents in value enclosed with double quotes or vice versa + - Revert "remove unneded nimnjs dependency, move opencollective to devDependencies and replace it + with more light opencollective-postinstall" + This reverts commit d47aa7181075d82db4fee97fd8ea32b056fe3f46. + - Merge pull request: https://github.com/NaturalIntelligence/fast-xml-parser/issues/63 from HaroldPutman/suppress-undefined + Keep undefined nodes out of the XML output : This is useful when you are deleting nodes from the JSON and rewriting XML. + +3.2.4 / 2018-03-01 + - fix #59 fix in validator when open quote presents in attribute value + - Create nexttodo.md + - exclude static from bitHound tests + - add package lock + +3.2.3 / 2018-02-28 + - Merge pull request from Delagen/master: fix namespaces can contain the same characters as xml names + +3.2.2 / 2018-02-22 + - fix: attribute xmlns should not be removed if ignoreNameSpace is false + - create CONTRIBUTING.md + +3.2.1 / 2018-02-17 + - fix: empty attribute should be parsed + +3.2.0 / 2018-02-16 + - Merge pull request : Dev to Master + - Update README and version + - j2x:add performance test + - j2x: Remove extra empty line before closing tag + - j2x: suppress empty nodes to self closing node if configured + - j2x: provide option to give indentation depth + - j2x: make optional formatting + - j2x: encodeHTMLchat + - j2x: handle cdata tag + - j2x: handle grouped attributes + - convert json to xml + - nested object + - array + - attributes + - text value + - small refactoring + - Merge pull request: Update cli.js to let user validate XML file or data + - Add option for rendering CDATA as separate property + +3.0.1 / 2018-02-09 + - fix CRLF: replace it with single space in attributes value only. + +3.0.0 / 2018-02-08 + - change online tool with new changes + - update info about new options + - separate tag value processing to separate function + - make HTML decoding optional + - give an option to allow boolean attributes + - change cli options as per v3 + - Correct comparison table format on README + - update v3 information + - some performance improvement changes + - Make regex object local to the method and move some common methods to util + - Change parser to + - handle multiple instances of CDATA + - make triming of value optionals + - HTML decode attribute and text value + - refactor code to separate files + - Ignore newline chars without RE (in validator) + - validate for XML prolog + - Validate DOCTYPE without RE + - Update validator to return error response + - Update README to add detail about V3 + - Separate xmlNode model class + - include vscode debug config + - fix for repeated object + - fix attribute regex for boolean attributes + - Fix validator for invalid attributes +2.9.4 / 2018-02-02 + - Merge pull request: Decode HTML characters + - refactor source folder name + - ignore bundle / browser js to be published to npm +2.9.3 / 2018-01-26 + - Merge pull request: Correctly remove CRLF line breaks + - Enable to parse attribute in online editor + - Fix testing demo app test + - Describe parsing options + - Add options for online demo +2.9.2 / 2018-01-18 + - Remove check if tag starting with "XML" + - Fix: when there are spaces before / after CDATA + +2.9.1 / 2018-01-16 + - Fix: newline should be replaced with single space + - Fix: for single and multiline comments + - validate xml with CDATA + - Fix: the issue when there is no space between 2 attributes + - Fix: https://github.com/NaturalIntelligence/fast-xml-parser/issues/33: when there is newline char in attr val, it doesn't parse + - Merge pull request: fix ignoreNamespace + - fix: don't wrap attributes if only namespace attrs + - fix: use portfinder for run tests, update deps + - fix: don't treat namespaces as attributes when ignoreNamespace enabled + +2.9.0 / 2018-01-10 + - Rewrite the validator to handle large files. + Ignore DOCTYPE validation. + - Fix: When attribute value has equal sign + +2.8.3 / 2017-12-15 + - Fix: when a tag has value along with subtags + +2.8.2 / 2017-12-04 + - Fix value parsing for IE + +2.8.1 / 2017-12-01 + - fix: validator should return false instead of err when invalid XML + +2.8.0 / 2017-11-29 + - Add CLI option to ignore value conversion + - Fix variable name when filename is given on CLI + - Update CLI help text + - Merge pull request: xml2js: Accept standard input + - Test Node 8 + - Update dependencies + - Bundle readToEnd + - Add ability to read from standard input + +2.7.4 / 2017-09-22 + - Merge pull request: Allow wrap attributes with subobject to compatible with other parsers output + +2.7.3 / 2017-08-02 + - fix: handle CDATA with regx + +2.7.2 / 2017-07-30 + - Change travis config for yarn caching + - fix validator: when tag property is same as array property + - Merge pull request: Failing test case in validator for valid SVG + +2.7.1 / 2017-07-26 + - Fix: Handle val 0 + +2.7.0 / 2017-07-25 + - Fix test for arrayMode + - Merge pull request: Add arrayMode option to parse any nodes as arrays + +2.6.0 / 2017-07-14 + - code improvement + - Add unit tests for value conversion for attr + - Merge pull request: option of an attribute value conversion to a number (textAttrConversion) the same way as the textNodeConversion option does. Default value is false. + +2.5.1 / 2017-07-01 + - Fix XML element name pattern + - Fix XML element name pattern while parsing + - Fix validation for xml tag element + +2.5.0 / 2017-06-25 + - Improve Validator performance + - update attr matching regex + - Add perf tests + - Improve atrr regex to handle all cases + +2.4.4 / 2017-06-08 + - Bug fix: when an attribute has single or double quote in value + +2.4.3 / 2017-06-05 + - Bug fix: when multiple CDATA tags are given + - Merge pull request: add option "textNodeConversion" + - add option "textNodeConversion" + +2.4.1 / 2017-04-14 + - fix tests + - Bug fix: preserve initial space of node value + - Handle CDATA + +2.3.1 / 2017-03-15 + - Bug fix: when single self closing tag + - Merge pull request: fix .codeclimate.yml + - Update .codeclimate.yml - Fixed config so it does not error anymore. + - Update .codeclimate.yml + +2.3.0 / 2017-02-26 + - Code improvement + - add bithound config + - Update usage + - Update travis to generate bundle js before running tests + - 1.Browserify, 2. add more tests for validator + - Add validator + - Fix CLI default parameter bug + +2.2.1 / 2017-02-05 + - Bug fix: CLI default option diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/LICENSE b/food-ordering-app/server/node_modules/fast-xml-parser/LICENSE new file mode 100644 index 000000000..d7da622a9 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 Amit Kumar Gupta + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/README.md b/food-ordering-app/server/node_modules/fast-xml-parser/README.md new file mode 100644 index 000000000..256be115b --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/README.md @@ -0,0 +1,224 @@ +# [fast-xml-parser](https://www.npmjs.com/package/fast-xml-parser) + +[![NPM total downloads](https://img.shields.io/npm/dt/fast-xml-parser.svg)](https://npm.im/fast-xml-parser) + +Validate XML, Parse XML to JS Object, or Build XML from JS Object without C/C++ based libraries and no callback. + +FXP logo + +* Validate XML data syntactically. Use [detailed-xml-validator](https://github.com/NaturalIntelligence/detailed-xml-validator/) to verify business rules. +* Parse XML to JS Objects and vice versa +* Common JS, ESM, and browser compatible +* Faster than any other pure JS implementation. + +It can handle big files (tested up to 100mb). XML Entities, HTML entities, and DOCTYPE entites are supported. Unpaired tags (Eg `
` in HTML), stop nodes (Eg ` +: + +``` + +Bundle size + +| Bundle Name | Size | +| ------------------ | ---- | +| fxbuilder.min.js | 6.5K | +| fxparser.min.js | 20K | +| fxp.min.js | 26K | +| fxvalidator.min.js | 5.7K | + +## Documents + + + + + + + +
v3v4 and v5v6
+ documents +
    +
  1. Getting Started
  2. +
  3. XML Parser
  4. +
  5. XML Builder
  6. +
  7. XML Validator
  8. +
  9. Entities
  10. +
  11. HTML Document Parsing
  12. +
  13. PI Tag processing
  14. +
    +
  1. Getting Started +
  2. Features
  3. +
  4. Options
  5. +
  6. Output Builders
  7. +
  8. Value Parsers
  9. +
+ +**note**: +- Version 6 is released with version 4 for experimental use. Based on its demand, it'll be developed and the features can be different in final release. +- Version 5 has the same functionalities as version 4. + +## Performance +negative means error + +### XML Parser + + + + +* Y-axis: requests per second +* X-axis: File size + +### XML Builder + + +* Y-axis: requests per second + + + +--- + +## Usage Trend + +[Usage Trend of fast-xml-parser](https://npm-compare.com/fast-xml-parser#timeRange=THREE_YEARS) + + + NPM Usage Trend of fast-xml-parser + + +# Supporters +#### Contributors + +This project exists thanks to [all](graphs/contributors) the people who contribute. [[Contribute](docs/CONTRIBUTING.md)]. + + + + +#### Backers from Open collective + +Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/fast-xml-parser#backer)] + + + + + +# License +* MIT License + +![Donate $5](static/img/donation_quote.png) diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/lib/fxbuilder.min.js b/food-ordering-app/server/node_modules/fast-xml-parser/lib/fxbuilder.min.js new file mode 100644 index 000000000..52f0a60a2 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/lib/fxbuilder.min.js @@ -0,0 +1,2 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.XMLBuilder=e():t.XMLBuilder=e()}(this,()=>(()=>{"use strict";var t={d:(e,i)=>{for(var s in i)t.o(i,s)&&!t.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:i[s]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};function i(t,e){let i="";return e.format&&e.indentBy.length>0&&(i="\n"),s(t,e,"",i)}function s(t,e,i,p){let u="",h=!1;if(!Array.isArray(t)){if(null!=t){let i=t.toString();return i=a(i,e),i}return""}for(let l=0;l`,h=!1;continue}if(c===e.commentPropName){u+=p+`\x3c!--${d[c][0][e.textNodeName]}--\x3e`,h=!0;continue}if("?"===c[0]){const t=o(d[":@"],e),i="?xml"===c?"":p;let s=d[c][0][e.textNodeName];s=0!==s.length?" "+s:"",u+=i+`<${c}${s}${t}?>`,h=!0;continue}let g=p;""!==g&&(g+=e.indentBy);const b=p+`<${c}${o(d[":@"],e)}`,N=s(d[c],e,f,g);-1!==e.unpairedTags.indexOf(c)?e.suppressUnpairedNode?u+=b+">":u+=b+"/>":N&&0!==N.length||!e.suppressEmptyNode?N&&N.endsWith(">")?u+=b+`>${N}${p}`:(u+=b+">",N&&""!==p&&(N.includes("/>")||N.includes("`):u+=b+"/>",h=!0}return u}function n(t){const e=Object.keys(t);for(let i=0;i0&&e.processEntities)for(let i=0;ic});const p={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function u(t){var e;this.options=Object.assign({},p,t),!0===this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn="function"==typeof(e=this.options.ignoreAttributes)?e:Array.isArray(e)?t=>{for(const i of e){if("string"==typeof i&&t===i)return!0;if(i instanceof RegExp&&i.test(t))return!0}}:()=>!1,this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=d),this.processTextOrObjNode=h,this.options.format?(this.indentate=l,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function h(t,e,i,s){const n=this.j2x(t,i+1,s.concat(e));return void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,n.attrStr,i):this.buildObjectNode(n.val,e,n.attrStr,i)}function l(t){return this.options.indentBy.repeat(t)}function d(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}u.prototype.build=function(t){return this.options.preserveOrder?i(t,this.options):(Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t}),this.j2x(t,0,[]).val)},u.prototype.j2x=function(t,e,i){let s="",n="";const o=i.join(".");for(let r in t)if(Object.prototype.hasOwnProperty.call(t,r))if(void 0===t[r])this.isAttribute(r)&&(n+="");else if(null===t[r])this.isAttribute(r)||r===this.options.cdataPropName?n+="":"?"===r[0]?n+=this.indentate(e)+"<"+r+"?"+this.tagEndChar:n+=this.indentate(e)+"<"+r+"/"+this.tagEndChar;else if(t[r]instanceof Date)n+=this.buildTextValNode(t[r],r,"",e);else if("object"!=typeof t[r]){const i=this.isAttribute(r);if(i&&!this.ignoreAttributesFn(i,o))s+=this.buildAttrPairStr(i,""+t[r]);else if(!i)if(r===this.options.textNodeName){let e=this.options.tagValueProcessor(r,""+t[r]);n+=this.replaceEntitiesValue(e)}else n+=this.buildTextValNode(t[r],r,"",e)}else if(Array.isArray(t[r])){const s=t[r].length;let o="",a="";for(let p=0;p"+t+n}},u.prototype.closeTag=function(t){let e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":`>`+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(s)+`\x3c!--${t}--\x3e`+this.newLine;if("?"===e[0])return this.indentate(s)+"<"+e+i+"?"+this.tagEndChar;{let n=this.options.tagValueProcessor(e,t);return n=this.replaceEntitiesValue(n),""===n?this.indentate(s)+"<"+e+i+this.closeTag(e)+this.tagEndChar:this.indentate(s)+"<"+e+i+">"+n+"0&&this.options.processEntities)for(let e=0;e {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const EOL = \"\\n\";\n\n/**\n * \n * @param {array} jArray \n * @param {any} options \n * @returns \n */\nexport default function toXml(jArray, options) {\n let indentation = \"\";\n if (options.format && options.indentBy.length > 0) {\n indentation = EOL;\n }\n return arrToStr(jArray, options, \"\", indentation);\n}\n\nfunction arrToStr(arr, options, jPath, indentation) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n\n\n if (!Array.isArray(arr)) {\n // Non-array values (e.g. string tag values) should be treated as text content\n if (arr !== undefined && arr !== null) {\n let text = arr.toString();\n text = replaceEntitiesValue(text, options);\n return text;\n }\n return \"\";\n }\n\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const tagName = propName(tagObj);\n if (tagName === undefined) continue;\n\n let newJPath = \"\";\n if (jPath.length === 0) newJPath = tagName\n else newJPath = `${jPath}.${tagName}`;\n\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode(newJPath, options)) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += ``;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + ``;\n isPreviousElementTag = true;\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n isPreviousElementTag = true;\n continue;\n }\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tagStart = indentation + `<${tagName}${attStr}`;\n const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n }\n isPreviousElementTag = true;\n }\n\n return xmlStr;\n}\n\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;\n if (key !== \":@\") return key;\n }\n}\n\nfunction attr_to_str(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue;\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\n\nfunction isStopNode(jPath, options) {\n jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for (let index in options.stopNodes) {\n if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n }\n return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i = 0; i < options.entities.length; i++) {\n const entity = options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\n","'use strict';\n//parse Empty Node as self closing node\nimport buildFromOrderedJs from './orderedJs2Xml.js';\nimport getIgnoreAttributesFn from \"./ignoreAttributes.js\";\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: ' ',\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function (key, a) {\n return a;\n },\n attributeValueProcessor: function (attrName, a) {\n return a;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n};\n\nexport default function Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n this.isAttribute = function (/*a*/) {\n return false;\n };\n } else {\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n\n this.processTextOrObjNode = processTextOrObjNode\n\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = '>\\n';\n this.newLine = '\\n';\n } else {\n this.indentate = function () {\n return '';\n };\n this.tagEndChar = '>';\n this.newLine = '';\n }\n}\n\nBuilder.prototype.build = function (jObj) {\n if (this.options.preserveOrder) {\n return buildFromOrderedJs(jObj, this.options);\n } else {\n if (Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1) {\n jObj = {\n [this.options.arrayNodeName]: jObj\n }\n }\n return this.j2x(jObj, 0, []).val;\n }\n};\n\nBuilder.prototype.j2x = function (jObj, level, ajPath) {\n let attrStr = '';\n let val = '';\n const jPath = ajPath.join('.')\n for (let key in jObj) {\n if (!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n if (typeof jObj[key] === 'undefined') {\n // supress undefined node only if it is not an attribute\n if (this.isAttribute(key)) {\n val += '';\n }\n } else if (jObj[key] === null) {\n // null attribute should be ignored by the attribute list, but should not cause the tag closing\n if (this.isAttribute(key)) {\n val += '';\n } else if (key === this.options.cdataPropName) {\n val += '';\n } else if (key[0] === '?') {\n val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n } else {\n val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n }\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextValNode(jObj[key], key, '', level);\n } else if (typeof jObj[key] !== 'object') {\n //premitive type\n const attr = this.isAttribute(key);\n if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n attrStr += this.buildAttrPairStr(attr, '' + jObj[key]);\n } else if (!attr) {\n //tag value\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n val += this.replaceEntitiesValue(newval);\n } else {\n val += this.buildTextValNode(jObj[key], key, '', level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n //repeated nodes\n const arrLen = jObj[key].length;\n let listTagVal = \"\";\n let listTagAttr = \"\";\n for (let j = 0; j < arrLen; j++) {\n const item = jObj[key][j];\n if (typeof item === 'undefined') {\n // supress undefined node\n } else if (item === null) {\n if (key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (typeof item === 'object') {\n if (this.options.oneListGroup) {\n const result = this.j2x(item, level + 1, ajPath.concat(key));\n listTagVal += result.val;\n if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n listTagAttr += result.attrStr\n }\n } else {\n listTagVal += this.processTextOrObjNode(item, key, level, ajPath)\n }\n } else {\n if (this.options.oneListGroup) {\n let textValue = this.options.tagValueProcessor(key, item);\n textValue = this.replaceEntitiesValue(textValue);\n listTagVal += textValue;\n } else {\n listTagVal += this.buildTextValNode(item, key, '', level);\n }\n }\n }\n if (this.options.oneListGroup) {\n listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n }\n val += listTagVal;\n } else {\n //nested node\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j = 0; j < L; j++) {\n attrStr += this.buildAttrPairStr(Ks[j], '' + jObj[key][Ks[j]]);\n }\n } else {\n val += this.processTextOrObjNode(jObj[key], key, level, ajPath)\n }\n }\n }\n return { attrStr: attrStr, val: val };\n};\n\nBuilder.prototype.buildAttrPairStr = function (attrName, val) {\n val = this.options.attributeValueProcessor(attrName, '' + val);\n val = this.replaceEntitiesValue(val);\n if (this.options.suppressBooleanAttributes && val === \"true\") {\n return ' ' + attrName;\n } else return ' ' + attrName + '=\"' + val + '\"';\n}\n\nfunction processTextOrObjNode(object, key, level, ajPath) {\n const result = this.j2x(object, level + 1, ajPath.concat(key));\n if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n}\n\nBuilder.prototype.buildObjectNode = function (val, key, attrStr, level) {\n if (val === \"\") {\n if (key[0] === \"?\") return this.indentate(level) + '<' + key + attrStr + '?' + this.tagEndChar;\n else {\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n } else {\n\n let tagEndExp = '' + val + tagEndExp);\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `` + this.newLine;\n } else {\n return (\n this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n val +\n this.indentate(level) + tagEndExp);\n }\n }\n}\n\nBuilder.prototype.closeTag = function (key) {\n let closeTag = \"\";\n if (this.options.unpairedTags.indexOf(key) !== -1) { //unpaired\n if (!this.options.suppressUnpairedNode) closeTag = \"/\"\n } else if (this.options.suppressEmptyNode) { //empty\n closeTag = \"/\";\n } else {\n closeTag = `>` + this.newLine;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `` + this.newLine;\n } else if (key[0] === \"?\") {//PI tag\n return this.indentate(level) + '<' + key + attrStr + '?' + this.tagEndChar;\n } else {\n let textValue = this.options.tagValueProcessor(key, val);\n textValue = this.replaceEntitiesValue(textValue);\n\n if (textValue === '') {\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n } else {\n return this.indentate(level) + '<' + key + attrStr + '>' +\n textValue +\n ' 0 && this.options.processEntities) {\n for (let i = 0; i < this.options.entities.length; i++) {\n const entity = this.options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\n\nfunction indentate(level) {\n return this.options.indentBy.repeat(level);\n}\n\nfunction isAttribute(name /*, options*/) {\n if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) {\n return name.substr(this.attrPrefixLen);\n } else {\n return false;\n }\n}\n\n","export default function getIgnoreAttributesFn(ignoreAttributes) {\n if (typeof ignoreAttributes === 'function') {\n return ignoreAttributes\n }\n if (Array.isArray(ignoreAttributes)) {\n return (attrName) => {\n for (const pattern of ignoreAttributes) {\n if (typeof pattern === 'string' && attrName === pattern) {\n return true\n }\n if (pattern instanceof RegExp && pattern.test(attrName)) {\n return true\n }\n }\n }\n }\n return () => false\n}","// Re-export from fast-xml-builder for backward compatibility\nimport XMLBuilder from 'fast-xml-builder';\nexport default XMLBuilder;\n\n// If there are any named exports you also want to re-export:\nexport * from 'fast-xml-builder';"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","toXml","jArray","options","indentation","format","indentBy","length","arrToStr","arr","jPath","xmlStr","isPreviousElementTag","Array","isArray","text","toString","replaceEntitiesValue","i","tagObj","tagName","propName","undefined","newJPath","textNodeName","tagText","isStopNode","tagValueProcessor","cdataPropName","commentPropName","attStr","attr_to_str","tempInd","piTextNodeName","newIdentation","tagStart","tagValue","unpairedTags","indexOf","suppressUnpairedNode","suppressEmptyNode","endsWith","includes","keys","attrMap","attrStr","ignoreAttributes","attr","attrVal","attributeValueProcessor","suppressBooleanAttributes","substr","attributeNamePrefix","lastIndexOf","index","stopNodes","textValue","processEntities","entities","entity","replace","regex","val","defaultOptions","attributesGroupName","a","attrName","preserveOrder","RegExp","oneListGroup","Builder","assign","isAttribute","ignoreAttributesFn","pattern","test","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","object","level","ajPath","result","j2x","concat","buildTextValNode","buildObjectNode","repeat","name","startsWith","build","jObj","buildFromOrderedJs","arrayNodeName","join","Date","buildAttrPairStr","newval","arrLen","listTagVal","listTagAttr","j","item","Ks","L","closeTag","tagEndExp","piClosingChar"],"sourceRoot":""} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/lib/fxp.cjs b/food-ordering-app/server/node_modules/fast-xml-parser/lib/fxp.cjs new file mode 100644 index 000000000..a1edad634 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/lib/fxp.cjs @@ -0,0 +1 @@ +(()=>{"use strict";var t={d:(e,n)=>{for(var i in n)t.o(n,i)&&!t.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:n[i]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{XMLBuilder:()=>gt,XMLParser:()=>it,XMLValidator:()=>xt});const n=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",i=new RegExp("^["+n+"]["+n+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$");function s(t,e){const n=[];let i=e.exec(t);for(;i;){const s=[];s.startIndex=e.lastIndex-i[0].length;const r=i.length;for(let t=0;t"!==t[r]&&" "!==t[r]&&"\t"!==t[r]&&"\n"!==t[r]&&"\r"!==t[r];r++)h+=t[r];if(h=h.trim(),"/"===h[h.length-1]&&(h=h.substring(0,h.length-1),r--),!b(h)){let e;return e=0===h.trim().length?"Invalid space after '<'.":"Tag '"+h+"' is an invalid name.",m("InvalidTag",e,N(t,r))}const p=c(t,r);if(!1===p)return m("InvalidAttr","Attributes for '"+h+"' have open quote.",N(t,r));let f=p.value;if(r=p.index,"/"===f[f.length-1]){const n=r-f.length;f=f.substring(0,f.length-1);const s=g(f,e);if(!0!==s)return m(s.err.code,s.err.msg,N(t,n+s.err.line));i=!0}else if(a){if(!p.tagClosed)return m("InvalidTag","Closing tag '"+h+"' doesn't have proper closing.",N(t,r));if(f.trim().length>0)return m("InvalidTag","Closing tag '"+h+"' can't have attributes or invalid starting.",N(t,o));if(0===n.length)return m("InvalidTag","Closing tag '"+h+"' has not been opened.",N(t,o));{const e=n.pop();if(h!==e.tagName){let n=N(t,e.tagStartPos);return m("InvalidTag","Expected closing tag '"+e.tagName+"' (opened in line "+n.line+", col "+n.col+") instead of closing tag '"+h+"'.",N(t,o))}0==n.length&&(s=!0)}}else{const a=g(f,e);if(!0!==a)return m(a.err.code,a.err.msg,N(t,r-f.length+a.err.line));if(!0===s)return m("InvalidXml","Multiple possible root nodes found.",N(t,r));-1!==e.unpairedTags.indexOf(h)||n.push({tagName:h,tagStartPos:o}),i=!0}for(r++;r0)||m("InvalidXml","Invalid '"+JSON.stringify(n.map(t=>t.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):m("InvalidXml","Start tag expected.",1)}function l(t){return" "===t||"\t"===t||"\n"===t||"\r"===t}function u(t,e){const n=e;for(;e5&&"xml"===i)return m("InvalidXml","XML declaration allowed only at the start of the document.",N(t,e));if("?"==t[e]&&">"==t[e+1]){e++;break}continue}return e}function d(t,e){if(t.length>e+5&&"-"===t[e+1]&&"-"===t[e+2]){for(e+=3;e"===t[e+2]){e+=2;break}}else if(t.length>e+8&&"D"===t[e+1]&&"O"===t[e+2]&&"C"===t[e+3]&&"T"===t[e+4]&&"Y"===t[e+5]&&"P"===t[e+6]&&"E"===t[e+7]){let n=1;for(e+=8;e"===t[e]&&(n--,0===n))break}else if(t.length>e+9&&"["===t[e+1]&&"C"===t[e+2]&&"D"===t[e+3]&&"A"===t[e+4]&&"T"===t[e+5]&&"A"===t[e+6]&&"["===t[e+7])for(e+=8;e"===t[e+2]){e+=2;break}return e}const h='"',p="'";function c(t,e){let n="",i="",s=!1;for(;e"===t[e]&&""===i){s=!0;break}n+=t[e]}return""===i&&{value:n,index:e,tagClosed:s}}const f=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function g(t,e){const n=s(t,f),i={};for(let t=0;t!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(t,e,n){return t},captureMetaData:!1,maxNestedTags:100,strictReservedNames:!0};function w(t){return"boolean"==typeof t?{enabled:t,maxEntitySize:1e4,maxExpansionDepth:10,maxTotalExpansions:1e3,maxExpandedLength:1e5,allowedTags:null,tagFilter:null}:"object"==typeof t&&null!==t?{enabled:!1!==t.enabled,maxEntitySize:t.maxEntitySize??1e4,maxExpansionDepth:t.maxExpansionDepth??10,maxTotalExpansions:t.maxTotalExpansions??1e3,maxExpandedLength:t.maxExpandedLength??1e5,allowedTags:t.allowedTags??null,tagFilter:t.tagFilter??null}:w(!0)}const v=function(t){const e=Object.assign({},T,t);return e.processEntities=w(e.processEntities),e};let O;O="function"!=typeof Symbol?"@@xmlMetadata":Symbol("XML Node Metadata");class I{constructor(t){this.tagname=t,this.child=[],this[":@"]=Object.create(null)}add(t,e){"__proto__"===t&&(t="#__proto__"),this.child.push({[t]:e})}addChild(t,e){"__proto__"===t.tagname&&(t.tagname="#__proto__"),t[":@"]&&Object.keys(t[":@"]).length>0?this.child.push({[t.tagname]:t.child,":@":t[":@"]}):this.child.push({[t.tagname]:t.child}),void 0!==e&&(this.child[this.child.length-1][O]={startIndex:e})}static getMetaDataSymbol(){return O}}class P{constructor(t){this.suppressValidationErr=!t,this.options=t}readDocType(t,e){const n=Object.create(null);if("O"!==t[e+3]||"C"!==t[e+4]||"T"!==t[e+5]||"Y"!==t[e+6]||"P"!==t[e+7]||"E"!==t[e+8])throw new Error("Invalid Tag instead of DOCTYPE");{e+=9;let i=1,s=!1,r=!1,o="";for(;e"===t[e]){if(r?"-"===t[e-1]&&"-"===t[e-2]&&(r=!1,i--):i--,0===i)break}else"["===t[e]?s=!0:o+=t[e];else{if(s&&S(t,"!ENTITY",e)){let i,s;if(e+=7,[i,s,e]=this.readEntityExp(t,e+1,this.suppressValidationErr),-1===s.indexOf("&")){const t=i.replace(/[.\-+*:]/g,"\\.");n[i]={regx:RegExp(`&${t};`,"g"),val:s}}}else if(s&&S(t,"!ELEMENT",e)){e+=8;const{index:n}=this.readElementExp(t,e+1);e=n}else if(s&&S(t,"!ATTLIST",e))e+=8;else if(s&&S(t,"!NOTATION",e)){e+=9;const{index:n}=this.readNotationExp(t,e+1,this.suppressValidationErr);e=n}else{if(!S(t,"!--",e))throw new Error("Invalid DOCTYPE");r=!0}i++,o=""}if(0!==i)throw new Error("Unclosed DOCTYPE")}return{entities:n,i:e}}readEntityExp(t,e){e=A(t,e);let n="";for(;ethis.options.maxEntitySize)throw new Error(`Entity "${n}" size (${i.length}) exceeds maximum allowed size (${this.options.maxEntitySize})`);return[n,i,--e]}readNotationExp(t,e){e=A(t,e);let n="";for(;e{for(;e"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(t,e)=>K(e,10,"&#")},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(t,e)=>K(e,16,"&#x")}},this.addExternalEntities=F,this.parseXml=R,this.parseTextData=M,this.resolveNameSpace=k,this.buildAttributesMap=U,this.isItStopNode=X,this.replaceEntitiesValue=Y,this.readStopNodeData=q,this.saveTextToParentTag=G,this.addChild=B,this.ignoreAttributesFn="function"==typeof(e=this.options.ignoreAttributes)?e:Array.isArray(e)?t=>{for(const n of e){if("string"==typeof n&&t===n)return!0;if(n instanceof RegExp&&n.test(t))return!0}}:()=>!1,this.entityExpansionCount=0,this.currentExpandedLength=0,this.options.stopNodes&&this.options.stopNodes.length>0){this.stopNodesExact=new Set,this.stopNodesWildcard=new Set;for(let t=0;t0)){o||(t=this.replaceEntitiesValue(t,e,n));const i=this.options.tagValueProcessor(e,t,n,s,r);return null==i?t:typeof i!=typeof t||i!==t?i:this.options.trimValues||t.trim()===t?Z(t,this.options.parseTagValue,this.options.numberParseOptions):t}}function k(t){if(this.options.removeNSPrefix){const e=t.split(":"),n="/"===t.charAt(0)?"/":"";if("xmlns"===e[0])return"";2===e.length&&(t=n+e[1])}return t}const _=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function U(t,e,n){if(!0!==this.options.ignoreAttributes&&"string"==typeof t){const i=s(t,_),r=i.length,o={};for(let t=0;t",o,"Closing Tag is not closed.");let r=t.substring(o+2,e).trim();if(this.options.removeNSPrefix){const t=r.indexOf(":");-1!==t&&(r=r.substr(t+1))}this.options.transformTagName&&(r=this.options.transformTagName(r)),n&&(i=this.saveTextToParentTag(i,n,s));const a=s.substring(s.lastIndexOf(".")+1);if(r&&-1!==this.options.unpairedTags.indexOf(r))throw new Error(`Unpaired tag can not be used as closing tag: `);let l=0;a&&-1!==this.options.unpairedTags.indexOf(a)?(l=s.lastIndexOf(".",s.lastIndexOf(".")-1),this.tagsNodeStack.pop()):l=s.lastIndexOf("."),s=s.substring(0,l),n=this.tagsNodeStack.pop(),i="",o=e}else if("?"===t[o+1]){let e=W(t,o,!1,"?>");if(!e)throw new Error("Pi Tag is not closed.");if(i=this.saveTextToParentTag(i,n,s),this.options.ignoreDeclaration&&"?xml"===e.tagName||this.options.ignorePiTags);else{const t=new I(e.tagName);t.add(this.options.textNodeName,""),e.tagName!==e.tagExp&&e.attrExpPresent&&(t[":@"]=this.buildAttributesMap(e.tagExp,s,e.tagName)),this.addChild(n,t,s,o)}o=e.closeIndex+1}else if("!--"===t.substr(o+1,3)){const e=z(t,"--\x3e",o+4,"Comment is not closed.");if(this.options.commentPropName){const r=t.substring(o+4,e-2);i=this.saveTextToParentTag(i,n,s),n.add(this.options.commentPropName,[{[this.options.textNodeName]:r}])}o=e}else if("!D"===t.substr(o+1,2)){const e=r.readDocType(t,o);this.docTypeEntities=e.entities,o=e.i}else if("!["===t.substr(o+1,2)){const e=z(t,"]]>",o,"CDATA is not closed.")-2,r=t.substring(o+9,e);i=this.saveTextToParentTag(i,n,s);let a=this.parseTextData(r,n.tagname,s,!0,!1,!0,!0);null==a&&(a=""),this.options.cdataPropName?n.add(this.options.cdataPropName,[{[this.options.textNodeName]:r}]):n.add(this.options.textNodeName,a),o=e+2}else{let r=W(t,o,this.options.removeNSPrefix),a=r.tagName;const l=r.rawTagName;let u=r.tagExp,d=r.attrExpPresent,h=r.closeIndex;if(this.options.transformTagName){const t=this.options.transformTagName(a);u===a&&(u=t),a=t}if(this.options.strictReservedNames&&(a===this.options.commentPropName||a===this.options.cdataPropName))throw new Error(`Invalid tag name: ${a}`);n&&i&&"!xml"!==n.tagname&&(i=this.saveTextToParentTag(i,n,s,!1));const p=n;p&&-1!==this.options.unpairedTags.indexOf(p.tagname)&&(n=this.tagsNodeStack.pop(),s=s.substring(0,s.lastIndexOf("."))),a!==e.tagname&&(s+=s?"."+a:a);const c=o;if(this.isItStopNode(this.stopNodesExact,this.stopNodesWildcard,s,a)){let e="";if(u.length>0&&u.lastIndexOf("/")===u.length-1)"/"===a[a.length-1]?(a=a.substr(0,a.length-1),s=s.substr(0,s.length-1),u=a):u=u.substr(0,u.length-1),o=r.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(a))o=r.closeIndex;else{const n=this.readStopNodeData(t,l,h+1);if(!n)throw new Error(`Unexpected end of ${l}`);o=n.i,e=n.tagContent}const i=new I(a);a!==u&&d&&(i[":@"]=this.buildAttributesMap(u,s,a)),e&&(e=this.parseTextData(e,a,s,!0,d,!0,!0)),s=s.substr(0,s.lastIndexOf(".")),i.add(this.options.textNodeName,e),this.addChild(n,i,s,c)}else{if(u.length>0&&u.lastIndexOf("/")===u.length-1){if("/"===a[a.length-1]?(a=a.substr(0,a.length-1),s=s.substr(0,s.length-1),u=a):u=u.substr(0,u.length-1),this.options.transformTagName){const t=this.options.transformTagName(a);u===a&&(u=t),a=t}const t=new I(a);a!==u&&d&&(t[":@"]=this.buildAttributesMap(u,s,a)),this.addChild(n,t,s,c),s=s.substr(0,s.lastIndexOf("."))}else{if(-1!==this.options.unpairedTags.indexOf(a)){const t=new I(a);a!==u&&d&&(t[":@"]=this.buildAttributesMap(u,s)),this.addChild(n,t,s,c),s=s.substr(0,s.lastIndexOf(".")),o=r.closeIndex;continue}{const t=new I(a);if(this.tagsNodeStack.length>this.options.maxNestedTags)throw new Error("Maximum nested tags exceeded");this.tagsNodeStack.push(n),a!==u&&d&&(t[":@"]=this.buildAttributesMap(u,s,a)),this.addChild(n,t,s,c),n=t}}i="",o=h}}else i+=t[o];return e.child};function B(t,e,n,i){this.options.captureMetaData||(i=void 0);const s=this.options.updateTag(e.tagname,n,e[":@"]);!1===s||("string"==typeof s?(e.tagname=s,t.addChild(e,i)):t.addChild(e,i))}const Y=function(t,e,n){if(-1===t.indexOf("&"))return t;const i=this.options.processEntities;if(!i.enabled)return t;if(i.allowedTags&&!i.allowedTags.includes(e))return t;if(i.tagFilter&&!i.tagFilter(e,n))return t;for(let e in this.docTypeEntities){const n=this.docTypeEntities[e],s=t.match(n.regx);if(s){if(this.entityExpansionCount+=s.length,i.maxTotalExpansions&&this.entityExpansionCount>i.maxTotalExpansions)throw new Error(`Entity expansion limit exceeded: ${this.entityExpansionCount} > ${i.maxTotalExpansions}`);const e=t.length;if(t=t.replace(n.regx,n.val),i.maxExpandedLength&&(this.currentExpandedLength+=t.length-e,this.currentExpandedLength>i.maxExpandedLength))throw new Error(`Total expanded content size exceeded: ${this.currentExpandedLength} > ${i.maxExpandedLength}`)}}if(-1===t.indexOf("&"))return t;for(let e in this.lastEntities){const n=this.lastEntities[e];t=t.replace(n.regex,n.val)}if(-1===t.indexOf("&"))return t;if(this.options.htmlEntities)for(let e in this.htmlEntities){const n=this.htmlEntities[e];t=t.replace(n.regex,n.val)}return t.replace(this.ampEntity.regex,this.ampEntity.val)};function G(t,e,n,i){return t&&(void 0===i&&(i=0===e.child.length),void 0!==(t=this.parseTextData(t,e.tagname,n,!1,!!e[":@"]&&0!==Object.keys(e[":@"]).length,i))&&""!==t&&e.add(this.options.textNodeName,t),t=""),t}function X(t,e,n,i){return!(!e||!e.has(i))||!(!t||!t.has(n))}function z(t,e,n,i){const s=t.indexOf(e,n);if(-1===s)throw new Error(i);return s+e.length-1}function W(t,e,n,i=">"){const s=function(t,e,n=">"){let i,s="";for(let r=e;r",n,`${e} is not closed`);if(t.substring(n+2,r).trim()===e&&(s--,0===s))return{tagContent:t.substring(i,n),i:r};n=r}else if("?"===t[n+1])n=z(t,"?>",n+1,"StopNode is not closed.");else if("!--"===t.substr(n+1,3))n=z(t,"--\x3e",n+3,"StopNode is not closed.");else if("!["===t.substr(n+1,2))n=z(t,"]]>",n,"StopNode is not closed.")-2;else{const i=W(t,n,">");i&&((i&&i.tagName)===e&&"/"!==i.tagExp[i.tagExp.length-1]&&s++,n=i.closeIndex)}}function Z(t,e,n){if(e&&"string"==typeof t){const e=t.trim();return"true"===e||"false"!==e&&function(t,e={}){if(e=Object.assign({},D,e),!t||"string"!=typeof t)return t;let n=t.trim();if(void 0!==e.skipLike&&e.skipLike.test(n))return t;if("0"===t)return 0;if(e.hex&&$.test(n))return function(t){if(parseInt)return parseInt(t,16);if(Number.parseInt)return Number.parseInt(t,16);if(window&&window.parseInt)return window.parseInt(t,16);throw new Error("parseInt, Number.parseInt, window.parseInt are not supported")}(n);if(n.includes("e")||n.includes("E"))return function(t,e,n){if(!n.eNotation)return t;const i=e.match(j);if(i){let s=i[1]||"";const r=-1===i[3].indexOf("e")?"E":"e",o=i[2],a=s?t[o.length+1]===r:t[o.length]===r;return o.length>1&&a?t:1!==o.length||!i[3].startsWith(`.${r}`)&&i[3][0]!==r?n.leadingZeros&&!a?(e=(i[1]||"")+i[3],Number(e)):t:Number(e)}return t}(t,n,e);{const s=V.exec(n);if(s){const r=s[1]||"",o=s[2];let a=(i=s[3])&&-1!==i.indexOf(".")?("."===(i=i.replace(/0+$/,""))?i="0":"."===i[0]?i="0"+i:"."===i[i.length-1]&&(i=i.substring(0,i.length-1)),i):i;const l=r?"."===t[o.length+1]:"."===t[o.length];if(!e.leadingZeros&&(o.length>1||1===o.length&&!l))return t;{const i=Number(n),s=String(i);if(0===i)return i;if(-1!==s.search(/[eE]/))return e.eNotation?i:t;if(-1!==n.indexOf("."))return"0"===s||s===a||s===`${r}${a}`?i:t;let l=o?a:n;return o?l===s||r+l===s?i:t:l===s||l===r+s?i:t}}return t}var i}(t,n)}return void 0!==t?t:""}function K(t,e,n){const i=Number.parseInt(t,e);return i>=0&&i<=1114111?String.fromCodePoint(i):n+t+";"}const Q=I.getMetaDataSymbol();function J(t,e){return H(t,e)}function H(t,e,n){let i;const s={};for(let r=0;r0&&(s[e.textNodeName]=i):void 0!==i&&(s[e.textNodeName]=i),s}function tt(t){const e=Object.keys(t);for(let t=0;t0&&(n="\n"),rt(t,e,"",n)}function rt(t,e,n,i){let s="",r=!1;if(!Array.isArray(t)){if(null!=t){let n=t.toString();return n=ut(n,e),n}return""}for(let o=0;o`,r=!1;continue}if(l===e.commentPropName){s+=i+`\x3c!--${a[l][0][e.textNodeName]}--\x3e`,r=!0;continue}if("?"===l[0]){const t=at(a[":@"],e),n="?xml"===l?"":i;let o=a[l][0][e.textNodeName];o=0!==o.length?" "+o:"",s+=n+`<${l}${o}${t}?>`,r=!0;continue}let d=i;""!==d&&(d+=e.indentBy);const h=i+`<${l}${at(a[":@"],e)}`,p=rt(a[l],e,u,d);-1!==e.unpairedTags.indexOf(l)?e.suppressUnpairedNode?s+=h+">":s+=h+"/>":p&&0!==p.length||!e.suppressEmptyNode?p&&p.endsWith(">")?s+=h+`>${p}${i}`:(s+=h+">",p&&""!==i&&(p.includes("/>")||p.includes("`):s+=h+"/>",r=!0}return s}function ot(t){const e=Object.keys(t);for(let n=0;n0&&e.processEntities)for(let n=0;n","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function ht(t){var e;this.options=Object.assign({},dt,t),!0===this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn="function"==typeof(e=this.options.ignoreAttributes)?e:Array.isArray(e)?t=>{for(const n of e){if("string"==typeof n&&t===n)return!0;if(n instanceof RegExp&&n.test(t))return!0}}:()=>!1,this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=ft),this.processTextOrObjNode=pt,this.options.format?(this.indentate=ct,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function pt(t,e,n,i){const s=this.j2x(t,n+1,i.concat(e));return void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,s.attrStr,n):this.buildObjectNode(s.val,e,s.attrStr,n)}function ct(t){return this.options.indentBy.repeat(t)}function ft(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}ht.prototype.build=function(t){return this.options.preserveOrder?st(t,this.options):(Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t}),this.j2x(t,0,[]).val)},ht.prototype.j2x=function(t,e,n){let i="",s="";const r=n.join(".");for(let o in t)if(Object.prototype.hasOwnProperty.call(t,o))if(void 0===t[o])this.isAttribute(o)&&(s+="");else if(null===t[o])this.isAttribute(o)||o===this.options.cdataPropName?s+="":"?"===o[0]?s+=this.indentate(e)+"<"+o+"?"+this.tagEndChar:s+=this.indentate(e)+"<"+o+"/"+this.tagEndChar;else if(t[o]instanceof Date)s+=this.buildTextValNode(t[o],o,"",e);else if("object"!=typeof t[o]){const n=this.isAttribute(o);if(n&&!this.ignoreAttributesFn(n,r))i+=this.buildAttrPairStr(n,""+t[o]);else if(!n)if(o===this.options.textNodeName){let e=this.options.tagValueProcessor(o,""+t[o]);s+=this.replaceEntitiesValue(e)}else s+=this.buildTextValNode(t[o],o,"",e)}else if(Array.isArray(t[o])){const i=t[o].length;let r="",a="";for(let l=0;l"+t+s}},ht.prototype.closeTag=function(t){let e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":`>`+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(i)+`\x3c!--${t}--\x3e`+this.newLine;if("?"===e[0])return this.indentate(i)+"<"+e+n+"?"+this.tagEndChar;{let s=this.options.tagValueProcessor(e,t);return s=this.replaceEntitiesValue(s),""===s?this.indentate(i)+"<"+e+n+this.closeTag(e)+this.tagEndChar:this.indentate(i)+"<"+e+n+">"+s+"0&&this.options.processEntities)for(let e=0;e boolean) | null; +}; + +type X2jOptions = { + /** + * Preserve the order of tags in resulting JS object + * + * Defaults to `false` + */ + preserveOrder?: boolean; + + /** + * Give a prefix to the attribute name in the resulting JS object + * + * Defaults to '@_' + */ + attributeNamePrefix?: string; + + /** + * A name to group all attributes of a tag under, or `false` to disable + * + * Defaults to `false` + */ + attributesGroupName?: false | string; + + /** + * The name of the next node in the resulting JS + * + * Defaults to `#text` + */ + textNodeName?: string; + + /** + * Whether to ignore attributes when parsing + * + * When `true` - ignores all the attributes + * + * When `false` - parses all the attributes + * + * When `Array` - filters out attributes that match provided patterns + * + * When `Function` - calls the function for each attribute and filters out those for which the function returned `true` + * + * Defaults to `true` + */ + ignoreAttributes?: boolean | (string | RegExp)[] | ((attrName: string, jPath: string) => boolean); + + /** + * Whether to remove namespace string from tag and attribute names + * + * Defaults to `false` + */ + removeNSPrefix?: boolean; + + /** + * Whether to allow attributes without value + * + * Defaults to `false` + */ + allowBooleanAttributes?: boolean; + + /** + * Whether to parse tag value with `strnum` package + * + * Defaults to `true` + */ + parseTagValue?: boolean; + + /** + * Whether to parse attribute value with `strnum` package + * + * Defaults to `false` + */ + parseAttributeValue?: boolean; + + /** + * Whether to remove surrounding whitespace from tag or attribute value + * + * Defaults to `true` + */ + trimValues?: boolean; + + /** + * Give a property name to set CDATA values to instead of merging to tag's text value + * + * Defaults to `false` + */ + cdataPropName?: false | string; + + /** + * If set, parse comments and set as this property + * + * Defaults to `false` + */ + commentPropName?: false | string; + + /** + * Control how tag value should be parsed. Called only if tag value is not empty + * + * @returns {undefined|null} `undefined` or `null` to set original value. + * @returns {unknown} + * + * 1. Different value or value with different data type to set new value. + * 2. Same value to set parsed value if `parseTagValue: true`. + * + * Defaults to `(tagName, val, jPath, hasAttributes, isLeafNode) => val` + */ + tagValueProcessor?: (tagName: string, tagValue: string, jPath: string, hasAttributes: boolean, isLeafNode: boolean) => unknown; + + /** + * Control how attribute value should be parsed + * + * @param attrName + * @param attrValue + * @param jPath + * @returns {undefined|null} `undefined` or `null` to set original value + * @returns {unknown} + * + * Defaults to `(attrName, val, jPath) => val` + */ + attributeValueProcessor?: (attrName: string, attrValue: string, jPath: string) => unknown; + + /** + * Options to pass to `strnum` for parsing numbers + * + * Defaults to `{ hex: true, leadingZeros: true, eNotation: true }` + */ + numberParseOptions?: strnumOptions; + + /** + * Nodes to stop parsing at + * + * Defaults to `[]` + */ + stopNodes?: string[]; + + /** + * List of tags without closing tags + * + * Defaults to `[]` + */ + unpairedTags?: string[]; + + /** + * Whether to always create a text node + * + * Defaults to `false` + */ + alwaysCreateTextNode?: boolean; + + /** + * Determine whether a tag should be parsed as an array + * + * @param tagName + * @param jPath + * @param isLeafNode + * @param isAttribute + * @returns {boolean} + * + * Defaults to `() => false` + */ + isArray?: (tagName: string, jPath: string, isLeafNode: boolean, isAttribute: boolean) => boolean; + + /** + * Whether to process default and DOCTYPE entities + * + * When `true` - enables entity processing with default limits + * + * When `false` - disables all entity processing + * + * When `ProcessEntitiesOptions` - enables entity processing with custom configuration + * + * Defaults to `true` + */ + processEntities?: boolean | ProcessEntitiesOptions; + + /** + * Whether to process HTML entities + * + * Defaults to `false` + */ + htmlEntities?: boolean; + + /** + * Whether to ignore the declaration tag from output + * + * Defaults to `false` + */ + ignoreDeclaration?: boolean; + + /** + * Whether to ignore Pi tags + * + * Defaults to `false` + */ + ignorePiTags?: boolean; + + /** + * Transform tag names + * + * Defaults to `false` + */ + transformTagName?: ((tagName: string) => string) | false; + + /** + * Transform attribute names + * + * Defaults to `false` + */ + transformAttributeName?: ((attributeName: string) => string) | false; + + /** + * Change the tag name when a different name is returned. Skip the tag from parsed result when false is returned. + * Modify `attrs` object to control attributes for the given tag. + * + * @returns {string} new tag name. + * @returns false to skip the tag + * + * Defaults to `(tagName, jPath, attrs) => tagName` + */ + updateTag?: (tagName: string, jPath: string, attrs: { [k: string]: string }) => string | boolean; + + /** + * If true, adds a Symbol to all object nodes, accessible by {@link XMLParser.getMetaDataSymbol} with + * metadata about each the node in the XML file. + */ + captureMetaData?: boolean; + + /** + * Maximum number of nested tags + * + * Defaults to `100` + */ + maxNestedTags?: number; + + /** + * Whether to strictly validate tag names + * + * Defaults to `true` + */ + strictReservedNames?: boolean; +}; + +type strnumOptions = { + hex: boolean; + leadingZeros: boolean, + skipLike?: RegExp, + eNotation?: boolean +} + +type validationOptions = { + /** + * Whether to allow attributes without value + * + * Defaults to `false` + */ + allowBooleanAttributes?: boolean; + + /** + * List of tags without closing tags + * + * Defaults to `[]` + */ + unpairedTags?: string[]; +}; + +type XmlBuilderOptions = { + /** + * Give a prefix to the attribute name in the resulting JS object + * + * Defaults to '@_' + */ + attributeNamePrefix?: string; + + /** + * A name to group all attributes of a tag under, or `false` to disable + * + * Defaults to `false` + */ + attributesGroupName?: false | string; + + /** + * The name of the next node in the resulting JS + * + * Defaults to `#text` + */ + textNodeName?: string; + + /** + * Whether to ignore attributes when building + * + * When `true` - ignores all the attributes + * + * When `false` - builds all the attributes + * + * When `Array` - filters out attributes that match provided patterns + * + * When `Function` - calls the function for each attribute and filters out those for which the function returned `true` + * + * Defaults to `true` + */ + ignoreAttributes?: boolean | (string | RegExp)[] | ((attrName: string, jPath: string) => boolean); + + /** + * Give a property name to set CDATA values to instead of merging to tag's text value + * + * Defaults to `false` + */ + cdataPropName?: false | string; + + /** + * If set, parse comments and set as this property + * + * Defaults to `false` + */ + commentPropName?: false | string; + + /** + * Whether to make output pretty instead of single line + * + * Defaults to `false` + */ + format?: boolean; + + + /** + * If `format` is set to `true`, sets the indent string + * + * Defaults to ` ` + */ + indentBy?: string; + + /** + * Give a name to a top-level array + * + * Defaults to `undefined` + */ + arrayNodeName?: string; + + /** + * Create empty tags for tags with no text value + * + * Defaults to `false` + */ + suppressEmptyNode?: boolean; + + /** + * Suppress an unpaired tag + * + * Defaults to `true` + */ + suppressUnpairedNode?: boolean; + + /** + * Don't put a value for boolean attributes + * + * Defaults to `true` + */ + suppressBooleanAttributes?: boolean; + + /** + * Preserve the order of tags in resulting JS object + * + * Defaults to `false` + */ + preserveOrder?: boolean; + + /** + * List of tags without closing tags + * + * Defaults to `[]` + */ + unpairedTags?: string[]; + + /** + * Nodes to stop parsing at + * + * Defaults to `[]` + */ + stopNodes?: string[]; + + /** + * Control how tag value should be parsed. Called only if tag value is not empty + * + * @returns {undefined|null} `undefined` or `null` to set original value. + * @returns {unknown} + * + * 1. Different value or value with different data type to set new value. + * 2. Same value to set parsed value if `parseTagValue: true`. + * + * Defaults to `(tagName, val, jPath, hasAttributes, isLeafNode) => val` + */ + tagValueProcessor?: (name: string, value: unknown) => unknown; + + /** + * Control how attribute value should be parsed + * + * @param attrName + * @param attrValue + * @param jPath + * @returns {undefined|null} `undefined` or `null` to set original value + * @returns {unknown} + * + * Defaults to `(attrName, val, jPath) => val` + */ + attributeValueProcessor?: (name: string, value: unknown) => unknown; + + /** + * Whether to process default and DOCTYPE entities + * + * Defaults to `true` + */ + processEntities?: boolean; + + + oneListGroup?: boolean; +}; + +type ESchema = string | object | Array; + +type ValidationError = { + err: { + code: string; + msg: string, + line: number, + col: number + }; +}; + +declare class XMLParser { + constructor(options?: X2jOptions); + parse(xmlData: string | Uint8Array, validationOptions?: validationOptions | boolean): any; + /** + * Add Entity which is not by default supported by this library + * @param entityIdentifier {string} Eg: 'ent' for &ent; + * @param entityValue {string} Eg: '\r' + */ + addEntity(entityIdentifier: string, entityValue: string): void; + + /** + * Returns a Symbol that can be used to access the {@link XMLMetaData} + * property on a node. + * + * If Symbol is not available in the environment, an ordinary property is used + * and the name of the property is here returned. + * + * The XMLMetaData property is only present when {@link X2jOptions.captureMetaData} + * is true in the options. + */ + static getMetaDataSymbol(): Symbol; +} + +declare class XMLValidator { + static validate(xmlData: string, options?: validationOptions): true | ValidationError; +} + +declare class XMLBuilder { + constructor(options?: XmlBuilderOptions); + build(jObj: any): string; +} + + +/** + * This object is available on nodes via the symbol {@link XMLParser.getMetaDataSymbol} + * when {@link X2jOptions.captureMetaData} is true. + */ +declare interface XMLMetaData { + /** The index, if available, of the character where the XML node began in the input stream. */ + startIndex?: number; +} + +declare namespace fxp { + export { + XMLParser, + XMLValidator, + XMLBuilder, + XMLMetaData, + XmlBuilderOptions, + X2jOptions, + ESchema, + ValidationError, + strnumOptions, + validationOptions, + ProcessEntitiesOptions, + } +} + +export = fxp; diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/lib/fxp.min.js b/food-ordering-app/server/node_modules/fast-xml-parser/lib/fxp.min.js new file mode 100644 index 000000000..414bff31e --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/lib/fxp.min.js @@ -0,0 +1,2 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.fxp=e():t.fxp=e()}(this,()=>(()=>{"use strict";var t={d:(e,r)=>{for(var i in r)t.o(r,i)&&!t.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:r[i]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{XMLBuilder:()=>mt,XMLParser:()=>nt,XMLValidator:()=>xt});var r=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",i=new RegExp("^["+r+"]["+r+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$");function n(t,e){for(var r=[],i=e.exec(t);i;){var n=[];n.startIndex=e.lastIndex-i[0].length;for(var s=i.length,a=0;a"!==t[s]&&" "!==t[s]&&"\t"!==t[s]&&"\n"!==t[s]&&"\r"!==t[s];s++)p+=t[s];if("/"===(p=p.trim())[p.length-1]&&(p=p.substring(0,p.length-1),s--),!b(p))return x("InvalidTag",0===p.trim().length?"Invalid space after '<'.":"Tag '"+p+"' is an invalid name.",E(t,s));var g=f(t,s);if(!1===g)return x("InvalidAttr","Attributes for '"+p+"' have open quote.",E(t,s));var v=g.value;if(s=g.index,"/"===v[v.length-1]){var N=s-v.length,y=c(v=v.substring(0,v.length-1),e);if(!0!==y)return x(y.err.code,y.err.msg,E(t,N+y.err.line));i=!0}else if(h){if(!g.tagClosed)return x("InvalidTag","Closing tag '"+p+"' doesn't have proper closing.",E(t,s));if(v.trim().length>0)return x("InvalidTag","Closing tag '"+p+"' can't have attributes or invalid starting.",E(t,o));if(0===r.length)return x("InvalidTag","Closing tag '"+p+"' has not been opened.",E(t,o));var T=r.pop();if(p!==T.tagName){var w=E(t,T.tagStartPos);return x("InvalidTag","Expected closing tag '"+T.tagName+"' (opened in line "+w.line+", col "+w.col+") instead of closing tag '"+p+"'.",E(t,o))}0==r.length&&(n=!0)}else{var I=c(v,e);if(!0!==I)return x(I.err.code,I.err.msg,E(t,s-v.length+I.err.line));if(!0===n)return x("InvalidXml","Multiple possible root nodes found.",E(t,s));-1!==e.unpairedTags.indexOf(p)||r.push({tagName:p,tagStartPos:o}),i=!0}for(s++;s0)||x("InvalidXml","Invalid '"+JSON.stringify(r.map(function(t){return t.tagName}),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):x("InvalidXml","Start tag expected.",1)}function l(t){return" "===t||"\t"===t||"\n"===t||"\r"===t}function u(t,e){for(var r=e;e5&&"xml"===i)return x("InvalidXml","XML declaration allowed only at the start of the document.",E(t,e));if("?"==t[e]&&">"==t[e+1]){e++;break}}return e}function d(t,e){if(t.length>e+5&&"-"===t[e+1]&&"-"===t[e+2]){for(e+=3;e"===t[e+2]){e+=2;break}}else if(t.length>e+8&&"D"===t[e+1]&&"O"===t[e+2]&&"C"===t[e+3]&&"T"===t[e+4]&&"Y"===t[e+5]&&"P"===t[e+6]&&"E"===t[e+7]){var r=1;for(e+=8;e"===t[e]&&0===--r)break}else if(t.length>e+9&&"["===t[e+1]&&"C"===t[e+2]&&"D"===t[e+3]&&"A"===t[e+4]&&"T"===t[e+5]&&"A"===t[e+6]&&"["===t[e+7])for(e+=8;e"===t[e+2]){e+=2;break}return e}var h='"',p="'";function f(t,e){for(var r="",i="",n=!1;e"===t[e]&&""===i){n=!0;break}r+=t[e]}return""===i&&{value:r,index:e,tagClosed:n}}var g=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function c(t,e){for(var r=n(t,g),i={},s=0;s0?this.child.push(((r={})[t.tagname]=t.child,r[":@"]=t[":@"],r)):this.child.push(((i={})[t.tagname]=t.child,i)),void 0!==e&&(this.child[this.child.length-1][w]={startIndex:e})},t.getMetaDataSymbol=function(){return w},t}(),A=function(){function t(t){this.suppressValidationErr=!t,this.options=t}var e=t.prototype;return e.readDocType=function(t,e){var r=Object.create(null);if("O"!==t[e+3]||"C"!==t[e+4]||"T"!==t[e+5]||"Y"!==t[e+6]||"P"!==t[e+7]||"E"!==t[e+8])throw new Error("Invalid Tag instead of DOCTYPE");e+=9;for(var i=1,n=!1,s=!1;e"===t[e]){if(s?"-"===t[e-1]&&"-"===t[e-2]&&(s=!1,i--):i--,0===i)break}else"["===t[e]?n=!0:t[e];else{if(n&&S(t,"!ENTITY",e)){e+=7;var a=void 0,o=void 0,l=this.readEntityExp(t,e+1,this.suppressValidationErr);if(a=l[0],o=l[1],e=l[2],-1===o.indexOf("&")){var u=a.replace(/[.\-+*:]/g,"\\.");r[a]={regx:RegExp("&"+u+";","g"),val:o}}}else if(n&&S(t,"!ELEMENT",e))e+=8,e=this.readElementExp(t,e+1).index;else if(n&&S(t,"!ATTLIST",e))e+=8;else if(n&&S(t,"!NOTATION",e))e+=9,e=this.readNotationExp(t,e+1,this.suppressValidationErr).index;else{if(!S(t,"!--",e))throw new Error("Invalid DOCTYPE");s=!0}i++}if(0!==i)throw new Error("Unclosed DOCTYPE");return{entities:r,i:e}},e.readEntityExp=function(t,e){e=P(t,e);for(var r="";ethis.options.maxEntitySize)throw new Error('Entity "'+r+'" size ('+i.length+") exceeds maximum allowed size ("+this.options.maxEntitySize+")");return[r,i,--e]},e.readNotationExp=function(t,e){e=P(t,e);for(var r="";et.length)&&(e=t.length);for(var r=0,i=Array(e);r"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:function(t,e){return Q(e,10,"&#")}},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:function(t,e){return Q(e,16,"&#x")}}},this.addExternalEntities=k,this.parseXml=B,this.parseTextData=_,this.resolveNameSpace=$,this.buildAttributesMap=R,this.isItStopNode=z,this.replaceEntitiesValue=G,this.readStopNodeData=Z,this.saveTextToParentTag=X,this.addChild=Y,this.ignoreAttributesFn="function"==typeof(e=this.options.ignoreAttributes)?e:Array.isArray(e)?function(t){for(var r,i=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(r)return(r=r.call(t)).next.bind(r);if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return M(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?M(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var i=0;return function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(e);!(r=i()).done;){var n=r.value;if("string"==typeof n&&t===n)return!0;if(n instanceof RegExp&&n.test(t))return!0}}:function(){return!1},this.entityExpansionCount=0,this.currentExpandedLength=0,this.options.stopNodes&&this.options.stopNodes.length>0){this.stopNodesExact=new Set,this.stopNodesWildcard=new Set;for(var r=0;r0)){a||(t=this.replaceEntitiesValue(t,e,r));var o=this.options.tagValueProcessor(e,t,r,n,s);return null==o?t:typeof o!=typeof t||o!==t?o:this.options.trimValues||t.trim()===t?K(t,this.options.parseTagValue,this.options.numberParseOptions):t}}function $(t){if(this.options.removeNSPrefix){var e=t.split(":"),r="/"===t.charAt(0)?"/":"";if("xmlns"===e[0])return"";2===e.length&&(t=r+e[1])}return t}var U=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function R(t,e,r){if(!0!==this.options.ignoreAttributes&&"string"==typeof t){for(var i=n(t,U),s=i.length,a={},o=0;o",a,"Closing Tag is not closed."),l=t.substring(a+2,o).trim();if(this.options.removeNSPrefix){var u=l.indexOf(":");-1!==u&&(l=l.substr(u+1))}this.options.transformTagName&&(l=this.options.transformTagName(l)),r&&(i=this.saveTextToParentTag(i,r,n));var d=n.substring(n.lastIndexOf(".")+1);if(l&&-1!==this.options.unpairedTags.indexOf(l))throw new Error("Unpaired tag can not be used as closing tag: ");var h=0;d&&-1!==this.options.unpairedTags.indexOf(d)?(h=n.lastIndexOf(".",n.lastIndexOf(".")-1),this.tagsNodeStack.pop()):h=n.lastIndexOf("."),n=n.substring(0,h),r=this.tagsNodeStack.pop(),i="",a=o}else if("?"===t[a+1]){var p=q(t,a,!1,"?>");if(!p)throw new Error("Pi Tag is not closed.");if(i=this.saveTextToParentTag(i,r,n),this.options.ignoreDeclaration&&"?xml"===p.tagName||this.options.ignorePiTags);else{var f=new O(p.tagName);f.add(this.options.textNodeName,""),p.tagName!==p.tagExp&&p.attrExpPresent&&(f[":@"]=this.buildAttributesMap(p.tagExp,n,p.tagName)),this.addChild(r,f,n,a)}a=p.closeIndex+1}else if("!--"===t.substr(a+1,3)){var g=W(t,"--\x3e",a+4,"Comment is not closed.");if(this.options.commentPropName){var c,m=t.substring(a+4,g-2);i=this.saveTextToParentTag(i,r,n),r.add(this.options.commentPropName,[(c={},c[this.options.textNodeName]=m,c)])}a=g}else if("!D"===t.substr(a+1,2)){var x=s.readDocType(t,a);this.docTypeEntities=x.entities,a=x.i}else if("!["===t.substr(a+1,2)){var v=W(t,"]]>",a,"CDATA is not closed.")-2,b=t.substring(a+9,v);i=this.saveTextToParentTag(i,r,n);var E,N=this.parseTextData(b,r.tagname,n,!0,!1,!0,!0);null==N&&(N=""),this.options.cdataPropName?r.add(this.options.cdataPropName,[(E={},E[this.options.textNodeName]=b,E)]):r.add(this.options.textNodeName,N),a=v+2}else{var y=q(t,a,this.options.removeNSPrefix),T=y.tagName,w=y.rawTagName,I=y.tagExp,P=y.attrExpPresent,S=y.closeIndex;if(this.options.transformTagName){var C=this.options.transformTagName(T);I===T&&(I=C),T=C}if(this.options.strictReservedNames&&(T===this.options.commentPropName||T===this.options.cdataPropName))throw new Error("Invalid tag name: "+T);r&&i&&"!xml"!==r.tagname&&(i=this.saveTextToParentTag(i,r,n,!1));var V=r;V&&-1!==this.options.unpairedTags.indexOf(V.tagname)&&(r=this.tagsNodeStack.pop(),n=n.substring(0,n.lastIndexOf("."))),T!==e.tagname&&(n+=n?"."+T:T);var j=a;if(this.isItStopNode(this.stopNodesExact,this.stopNodesWildcard,n,T)){var D="";if(I.length>0&&I.lastIndexOf("/")===I.length-1)"/"===T[T.length-1]?(T=T.substr(0,T.length-1),n=n.substr(0,n.length-1),I=T):I=I.substr(0,I.length-1),a=y.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(T))a=y.closeIndex;else{var L=this.readStopNodeData(t,w,S+1);if(!L)throw new Error("Unexpected end of "+w);a=L.i,D=L.tagContent}var M=new O(T);T!==I&&P&&(M[":@"]=this.buildAttributesMap(I,n,T)),D&&(D=this.parseTextData(D,T,n,!0,P,!0,!0)),n=n.substr(0,n.lastIndexOf(".")),M.add(this.options.textNodeName,D),this.addChild(r,M,n,j)}else{if(I.length>0&&I.lastIndexOf("/")===I.length-1){if("/"===T[T.length-1]?(T=T.substr(0,T.length-1),n=n.substr(0,n.length-1),I=T):I=I.substr(0,I.length-1),this.options.transformTagName){var F=this.options.transformTagName(T);I===T&&(I=F),T=F}var k=new O(T);T!==I&&P&&(k[":@"]=this.buildAttributesMap(I,n,T)),this.addChild(r,k,n,j),n=n.substr(0,n.lastIndexOf("."))}else{if(-1!==this.options.unpairedTags.indexOf(T)){var _=new O(T);T!==I&&P&&(_[":@"]=this.buildAttributesMap(I,n)),this.addChild(r,_,n,j),n=n.substr(0,n.lastIndexOf(".")),a=y.closeIndex;continue}var $=new O(T);if(this.tagsNodeStack.length>this.options.maxNestedTags)throw new Error("Maximum nested tags exceeded");this.tagsNodeStack.push(r),T!==I&&P&&($[":@"]=this.buildAttributesMap(I,n,T)),this.addChild(r,$,n,j),r=$}i="",a=S}}else i+=t[a];return e.child};function Y(t,e,r,i){this.options.captureMetaData||(i=void 0);var n=this.options.updateTag(e.tagname,r,e[":@"]);!1===n||("string"==typeof n?(e.tagname=n,t.addChild(e,i)):t.addChild(e,i))}var G=function(t,e,r){if(-1===t.indexOf("&"))return t;var i=this.options.processEntities;if(!i.enabled)return t;if(i.allowedTags&&!i.allowedTags.includes(e))return t;if(i.tagFilter&&!i.tagFilter(e,r))return t;for(var n in this.docTypeEntities){var s=this.docTypeEntities[n],a=t.match(s.regx);if(a){if(this.entityExpansionCount+=a.length,i.maxTotalExpansions&&this.entityExpansionCount>i.maxTotalExpansions)throw new Error("Entity expansion limit exceeded: "+this.entityExpansionCount+" > "+i.maxTotalExpansions);var o=t.length;if(t=t.replace(s.regx,s.val),i.maxExpandedLength&&(this.currentExpandedLength+=t.length-o,this.currentExpandedLength>i.maxExpandedLength))throw new Error("Total expanded content size exceeded: "+this.currentExpandedLength+" > "+i.maxExpandedLength)}}if(-1===t.indexOf("&"))return t;for(var l in this.lastEntities){var u=this.lastEntities[l];t=t.replace(u.regex,u.val)}if(-1===t.indexOf("&"))return t;if(this.options.htmlEntities)for(var d in this.htmlEntities){var h=this.htmlEntities[d];t=t.replace(h.regex,h.val)}return t.replace(this.ampEntity.regex,this.ampEntity.val)};function X(t,e,r,i){return t&&(void 0===i&&(i=0===e.child.length),void 0!==(t=this.parseTextData(t,e.tagname,r,!1,!!e[":@"]&&0!==Object.keys(e[":@"]).length,i))&&""!==t&&e.add(this.options.textNodeName,t),t=""),t}function z(t,e,r,i){return!(!e||!e.has(i))||!(!t||!t.has(r))}function W(t,e,r,i){var n=t.indexOf(e,r);if(-1===n)throw new Error(i);return n+e.length-1}function q(t,e,r,i){void 0===i&&(i=">");var n=function(t,e,r){var i;void 0===r&&(r=">");for(var n="",s=e;s",r,e+" is not closed");if(t.substring(r+2,s).trim()===e&&0===--n)return{tagContent:t.substring(i,r),i:s};r=s}else if("?"===t[r+1])r=W(t,"?>",r+1,"StopNode is not closed.");else if("!--"===t.substr(r+1,3))r=W(t,"--\x3e",r+3,"StopNode is not closed.");else if("!["===t.substr(r+1,2))r=W(t,"]]>",r,"StopNode is not closed.")-2;else{var a=q(t,r,">");a&&((a&&a.tagName)===e&&"/"!==a.tagExp[a.tagExp.length-1]&&n++,r=a.closeIndex)}}function K(t,e,r){if(e&&"string"==typeof t){var i=t.trim();return"true"===i||"false"!==i&&function(t,e={}){if(e=Object.assign({},D,e),!t||"string"!=typeof t)return t;let r=t.trim();if(void 0!==e.skipLike&&e.skipLike.test(r))return t;if("0"===t)return 0;if(e.hex&&V.test(r))return function(t){if(parseInt)return parseInt(t,16);if(Number.parseInt)return Number.parseInt(t,16);if(window&&window.parseInt)return window.parseInt(t,16);throw new Error("parseInt, Number.parseInt, window.parseInt are not supported")}(r);if(r.includes("e")||r.includes("E"))return function(t,e,r){if(!r.eNotation)return t;const i=e.match(L);if(i){let n=i[1]||"";const s=-1===i[3].indexOf("e")?"E":"e",a=i[2],o=n?t[a.length+1]===s:t[a.length]===s;return a.length>1&&o?t:1!==a.length||!i[3].startsWith(`.${s}`)&&i[3][0]!==s?r.leadingZeros&&!o?(e=(i[1]||"")+i[3],Number(e)):t:Number(e)}return t}(t,r,e);{const n=j.exec(r);if(n){const s=n[1]||"",a=n[2];let o=(i=n[3])&&-1!==i.indexOf(".")?("."===(i=i.replace(/0+$/,""))?i="0":"."===i[0]?i="0"+i:"."===i[i.length-1]&&(i=i.substring(0,i.length-1)),i):i;const l=s?"."===t[a.length+1]:"."===t[a.length];if(!e.leadingZeros&&(a.length>1||1===a.length&&!l))return t;{const i=Number(r),n=String(i);if(0===i)return i;if(-1!==n.search(/[eE]/))return e.eNotation?i:t;if(-1!==r.indexOf("."))return"0"===n||n===o||n===`${s}${o}`?i:t;let l=a?o:r;return a?l===n||s+l===n?i:t:l===n||l===s+n?i:t}}return t}var i}(t,r)}return void 0!==t?t:""}function Q(t,e,r){var i=Number.parseInt(t,e);return i>=0&&i<=1114111?String.fromCodePoint(i):r+t+";"}var J=O.getMetaDataSymbol();function H(t,e){return tt(t,e)}function tt(t,e,r){for(var i,n={},s=0;s0&&(n[e.textNodeName]=i):void 0!==i&&(n[e.textNodeName]=i),n}function et(t){for(var e=Object.keys(t),r=0;r0&&(r="\n"),at(t,e,"",r)}function at(t,e,r,i){let n="",s=!1;if(!Array.isArray(t)){if(null!=t){let r=t.toString();return r=dt(r,e),r}return""}for(let a=0;a`,s=!1;continue}if(l===e.commentPropName){n+=i+`\x3c!--${o[l][0][e.textNodeName]}--\x3e`,s=!0;continue}if("?"===l[0]){const t=lt(o[":@"],e),r="?xml"===l?"":i;let a=o[l][0][e.textNodeName];a=0!==a.length?" "+a:"",n+=r+`<${l}${a}${t}?>`,s=!0;continue}let d=i;""!==d&&(d+=e.indentBy);const h=i+`<${l}${lt(o[":@"],e)}`,p=at(o[l],e,u,d);-1!==e.unpairedTags.indexOf(l)?e.suppressUnpairedNode?n+=h+">":n+=h+"/>":p&&0!==p.length||!e.suppressEmptyNode?p&&p.endsWith(">")?n+=h+`>${p}${i}`:(n+=h+">",p&&""!==i&&(p.includes("/>")||p.includes("`):n+=h+"/>",s=!0}return n}function ot(t){const e=Object.keys(t);for(let r=0;r0&&e.processEntities)for(let r=0;r","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function pt(t){var e;this.options=Object.assign({},ht,t),!0===this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn="function"==typeof(e=this.options.ignoreAttributes)?e:Array.isArray(e)?t=>{for(const r of e){if("string"==typeof r&&t===r)return!0;if(r instanceof RegExp&&r.test(t))return!0}}:()=>!1,this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=ct),this.processTextOrObjNode=ft,this.options.format?(this.indentate=gt,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function ft(t,e,r,i){const n=this.j2x(t,r+1,i.concat(e));return void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,n.attrStr,r):this.buildObjectNode(n.val,e,n.attrStr,r)}function gt(t){return this.options.indentBy.repeat(t)}function ct(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}pt.prototype.build=function(t){return this.options.preserveOrder?st(t,this.options):(Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t}),this.j2x(t,0,[]).val)},pt.prototype.j2x=function(t,e,r){let i="",n="";const s=r.join(".");for(let a in t)if(Object.prototype.hasOwnProperty.call(t,a))if(void 0===t[a])this.isAttribute(a)&&(n+="");else if(null===t[a])this.isAttribute(a)||a===this.options.cdataPropName?n+="":"?"===a[0]?n+=this.indentate(e)+"<"+a+"?"+this.tagEndChar:n+=this.indentate(e)+"<"+a+"/"+this.tagEndChar;else if(t[a]instanceof Date)n+=this.buildTextValNode(t[a],a,"",e);else if("object"!=typeof t[a]){const r=this.isAttribute(a);if(r&&!this.ignoreAttributesFn(r,s))i+=this.buildAttrPairStr(r,""+t[a]);else if(!r)if(a===this.options.textNodeName){let e=this.options.tagValueProcessor(a,""+t[a]);n+=this.replaceEntitiesValue(e)}else n+=this.buildTextValNode(t[a],a,"",e)}else if(Array.isArray(t[a])){const i=t[a].length;let s="",o="";for(let l=0;l"+t+n}},pt.prototype.closeTag=function(t){let e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":`>`+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(i)+`\x3c!--${t}--\x3e`+this.newLine;if("?"===e[0])return this.indentate(i)+"<"+e+r+"?"+this.tagEndChar;{let n=this.options.tagValueProcessor(e,t);return n=this.replaceEntitiesValue(n),""===n?this.indentate(i)+"<"+e+r+this.closeTag(e)+this.tagEndChar:this.indentate(i)+"<"+e+r+">"+n+"0&&this.options.processEntities)for(let e=0;e {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nexport const nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*';\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nexport function getAllMatches(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n}\n\nexport const isName = function (string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === 'undefined');\n}\n\nexport function isExist(v) {\n return typeof v !== 'undefined';\n}\n\nexport function isEmptyObject(obj) {\n return Object.keys(obj).length === 0;\n}\n\nexport function getValue(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return '';\n }\n}\n","'use strict';\n\nimport { getAllMatches, isName } from './util.js';\n\nconst defaultOptions = {\n allowBooleanAttributes: false, //A tag can have attributes without any value\n unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexport function validate(xmlData, options) {\n options = Object.assign({}, defaultOptions, options);\n\n //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n const tags = [];\n let tagFound = false;\n\n //indicates that the root tag has been closed (aka. depth 0 has been reached)\n let reachedRoot = false;\n\n if (xmlData[0] === '\\ufeff') {\n // check for byte order mark (BOM)\n xmlData = xmlData.substr(1);\n }\n\n for (let i = 0; i < xmlData.length; i++) {\n\n if (xmlData[i] === '<' && xmlData[i + 1] === '?') {\n i += 2;\n i = readPI(xmlData, i);\n if (i.err) return i;\n } else if (xmlData[i] === '<') {\n //starting of tag\n //read until you reach to '>' avoiding any '>' in attribute value\n let tagStartPos = i;\n i++;\n\n if (xmlData[i] === '!') {\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i] === '/') {\n //closing tag\n closingTag = true;\n i++;\n }\n //read tagname\n let tagName = '';\n for (; i < xmlData.length &&\n xmlData[i] !== '>' &&\n xmlData[i] !== ' ' &&\n xmlData[i] !== '\\t' &&\n xmlData[i] !== '\\n' &&\n xmlData[i] !== '\\r'; i++\n ) {\n tagName += xmlData[i];\n }\n tagName = tagName.trim();\n //console.log(tagName);\n\n if (tagName[tagName.length - 1] === '/') {\n //self closing tag without attributes\n tagName = tagName.substring(0, tagName.length - 1);\n //continue;\n i--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\" + tagName + \"' is an invalid name.\";\n }\n return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n }\n\n const result = readAttributeStr(xmlData, i);\n if (result === false) {\n return getErrorObject('InvalidAttr', \"Attributes for '\" + tagName + \"' have open quote.\", getLineNumberForPosition(xmlData, i));\n }\n let attrStr = result.value;\n i = result.index;\n\n if (attrStr[attrStr.length - 1] === '/') {\n //self closing tag\n const attrStrStart = i - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n //continue; //text may presents after self closing tag\n } else {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject('InvalidTag', \"Closing tag '\" + tagName + \"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\" + tagName + \"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else if (tags.length === 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\" + tagName + \"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject('InvalidTag',\n \"Expected closing tag '\" + otg.tagName + \"' (opened in line \" + openPos.line + \", col \" + openPos.col + \") instead of closing tag '\" + tagName + \"'.\",\n getLineNumberForPosition(xmlData, tagStartPos));\n }\n\n //when there are no more tags, we reached the root level.\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n }\n\n //if the root level has been reached before ...\n if (reachedRoot === true) {\n return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n } else if (options.unpairedTags.indexOf(tagName) !== -1) {\n //don't push into stack\n } else {\n tags.push({ tagName, tagStartPos });\n }\n tagFound = true;\n }\n\n //skip tag text value\n //It may include comments and CDATA value\n for (i++; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n if (xmlData[i + 1] === '!') {\n //comment or CADATA\n i++;\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else if (xmlData[i + 1] === '?') {\n i = readPI(xmlData, ++i);\n if (i.err) return i;\n } else {\n break;\n }\n } else if (xmlData[i] === '&') {\n const afterAmp = validateAmpersand(xmlData, i);\n if (afterAmp == -1)\n return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n i = afterAmp;\n } else {\n if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n }\n }\n } //end of reading tag text value\n if (xmlData[i] === '<') {\n i--;\n }\n }\n } else {\n if (isWhiteSpace(xmlData[i])) {\n continue;\n }\n return getErrorObject('InvalidChar', \"char '\" + xmlData[i] + \"' is not expected.\", getLineNumberForPosition(xmlData, i));\n }\n }\n\n if (!tagFound) {\n return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n } else if (tags.length == 1) {\n return getErrorObject('InvalidTag', \"Unclosed tag '\" + tags[0].tagName + \"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n } else if (tags.length > 0) {\n return getErrorObject('InvalidXml', \"Invalid '\" +\n JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '') +\n \"' found.\", { line: 1, col: 1 });\n }\n\n return true;\n};\n\nfunction isWhiteSpace(char) {\n return char === ' ' || char === '\\t' || char === '\\n' || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n const start = i;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] == '?' || xmlData[i] == ' ') {\n //tagname\n const tagname = xmlData.substr(start, i - start);\n if (i > 5 && tagname === 'xml') {\n return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n //check if valid attribut string\n i++;\n break;\n } else {\n continue;\n }\n }\n }\n return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n //comment\n for (i += 3; i < xmlData.length; i++) {\n if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n } else if (\n xmlData.length > i + 8 &&\n xmlData[i + 1] === 'D' &&\n xmlData[i + 2] === 'O' &&\n xmlData[i + 3] === 'C' &&\n xmlData[i + 4] === 'T' &&\n xmlData[i + 5] === 'Y' &&\n xmlData[i + 6] === 'P' &&\n xmlData[i + 7] === 'E'\n ) {\n let angleBracketsCount = 1;\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n angleBracketsCount++;\n } else if (xmlData[i] === '>') {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (\n xmlData.length > i + 9 &&\n xmlData[i + 1] === '[' &&\n xmlData[i + 2] === 'C' &&\n xmlData[i + 3] === 'D' &&\n xmlData[i + 4] === 'A' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'A' &&\n xmlData[i + 7] === '['\n ) {\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n }\n\n return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n let attrStr = '';\n let startChar = '';\n let tagClosed = false;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n if (startChar === '') {\n startChar = xmlData[i];\n } else if (startChar !== xmlData[i]) {\n //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n } else {\n startChar = '';\n }\n } else if (xmlData[i] === '>') {\n if (startChar === '') {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i];\n }\n if (startChar !== '') {\n return false;\n }\n\n return {\n value: attrStr,\n index: i,\n tagClosed: tagClosed\n };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n //console.log(\"start:\"+attrStr+\":end\");\n\n //if(attrStr.trim().length === 0) return true; //empty string\n\n const matches = getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n\n for (let i = 0; i < matches.length; i++) {\n if (matches[i][1].length === 0) {\n //nospace before attribute name: a=\"sd\"b=\"saf\"\n return getErrorObject('InvalidAttr', \"Attribute '\" + matches[i][2] + \"' has no space in starting.\", getPositionFromMatch(matches[i]))\n } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n return getErrorObject('InvalidAttr', \"Attribute '\" + matches[i][2] + \"' is without value.\", getPositionFromMatch(matches[i]));\n } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n //independent attribute: ab\n return getErrorObject('InvalidAttr', \"boolean attribute '\" + matches[i][2] + \"' is not allowed.\", getPositionFromMatch(matches[i]));\n }\n /* else if(matches[i][6] === undefined){//attribute without value: ab=\n return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n } */\n const attrName = matches[i][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject('InvalidAttr', \"Attribute '\" + attrName + \"' is an invalid name.\", getPositionFromMatch(matches[i]));\n }\n if (!Object.prototype.hasOwnProperty.call(attrNames, attrName)) {\n //check for duplicate attribute.\n attrNames[attrName] = 1;\n } else {\n return getErrorObject('InvalidAttr', \"Attribute '\" + attrName + \"' is repeated.\", getPositionFromMatch(matches[i]));\n }\n }\n\n return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n let re = /\\d/;\n if (xmlData[i] === 'x') {\n i++;\n re = /[\\da-fA-F]/;\n }\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === ';')\n return i;\n if (!xmlData[i].match(re))\n break;\n }\n return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n // https://www.w3.org/TR/xml/#dt-charref\n i++;\n if (xmlData[i] === ';')\n return -1;\n if (xmlData[i] === '#') {\n i++;\n return validateNumberAmpersand(xmlData, i);\n }\n let count = 0;\n for (; i < xmlData.length; i++, count++) {\n if (xmlData[i].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i] === ';')\n break;\n return -1;\n }\n return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code: code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col,\n },\n };\n}\n\nfunction validateAttrName(attrName) {\n return isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n return isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n}\n","export const defaultOptions = {\n preserveOrder: false,\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n removeNSPrefix: false, // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false, //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true, //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function (tagName, val) {\n return val;\n },\n attributeValueProcessor: function (attrName, val) {\n return val;\n },\n stopNodes: [], //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function (tagName, jPath, attrs) {\n return tagName\n },\n // skipEmptyListItem: false\n captureMetaData: false,\n maxNestedTags: 100,\n strictReservedNames: true,\n};\n\n/**\n * Normalizes processEntities option for backward compatibility\n * @param {boolean|object} value \n * @returns {object} Always returns normalized object\n */\nfunction normalizeProcessEntities(value) {\n // Boolean backward compatibility\n if (typeof value === 'boolean') {\n return {\n enabled: value, // true or false\n maxEntitySize: 10000,\n maxExpansionDepth: 10,\n maxTotalExpansions: 1000,\n maxExpandedLength: 100000,\n allowedTags: null,\n tagFilter: null\n };\n }\n\n // Object config - merge with defaults\n if (typeof value === 'object' && value !== null) {\n return {\n enabled: value.enabled !== false, // default true if not specified\n maxEntitySize: value.maxEntitySize ?? 10000,\n maxExpansionDepth: value.maxExpansionDepth ?? 10,\n maxTotalExpansions: value.maxTotalExpansions ?? 1000,\n maxExpandedLength: value.maxExpandedLength ?? 100000,\n allowedTags: value.allowedTags ?? null,\n tagFilter: value.tagFilter ?? null\n };\n }\n\n // Default to enabled with limits\n return normalizeProcessEntities(true);\n}\n\nexport const buildOptions = function (options) {\n const built = Object.assign({}, defaultOptions, options);\n\n // Always normalize processEntities for backward compatibility and validation\n built.processEntities = normalizeProcessEntities(built.processEntities);\n //console.debug(built.processEntities)\n return built;\n};","'use strict';\n\nlet METADATA_SYMBOL;\n\nif (typeof Symbol !== \"function\") {\n METADATA_SYMBOL = \"@@xmlMetadata\";\n} else {\n METADATA_SYMBOL = Symbol(\"XML Node Metadata\");\n}\n\nexport default class XmlNode {\n constructor(tagname) {\n this.tagname = tagname;\n this.child = []; //nested tags, text, cdata, comments in order\n this[\":@\"] = Object.create(null); //attributes map\n }\n add(key, val) {\n // this.child.push( {name : key, val: val, isCdata: isCdata });\n if (key === \"__proto__\") key = \"#__proto__\";\n this.child.push({ [key]: val });\n }\n addChild(node, startIndex) {\n if (node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if (node[\":@\"] && Object.keys(node[\":@\"]).length > 0) {\n this.child.push({ [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n } else {\n this.child.push({ [node.tagname]: node.child });\n }\n // if requested, add the startIndex\n if (startIndex !== undefined) {\n // Note: for now we just overwrite the metadata. If we had more complex metadata,\n // we might need to do an object append here: metadata = { ...metadata, startIndex }\n this.child[this.child.length - 1][METADATA_SYMBOL] = { startIndex };\n }\n }\n /** symbol used for metadata */\n static getMetaDataSymbol() {\n return METADATA_SYMBOL;\n }\n}\n","import { isName } from '../util.js';\n\nexport default class DocTypeReader {\n constructor(options) {\n this.suppressValidationErr = !options;\n this.options = options;\n }\n\n readDocType(xmlData, i) {\n\n const entities = Object.create(null);\n if (xmlData[i + 3] === 'O' &&\n xmlData[i + 4] === 'C' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'Y' &&\n xmlData[i + 7] === 'P' &&\n xmlData[i + 8] === 'E') {\n i = i + 9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === '<' && !comment) { //Determine the tag type\n if (hasBody && hasSeq(xmlData, \"!ENTITY\", i)) {\n i += 7;\n let entityName, val;\n [entityName, val, i] = this.readEntityExp(xmlData, i + 1, this.suppressValidationErr);\n if (val.indexOf(\"&\") === -1) { //Parameter entities are not supported\n const escaped = entityName.replace(/[.\\-+*:]/g, '\\\\.');\n entities[entityName] = {\n regx: RegExp(`&${escaped};`, \"g\"),\n val: val\n };\n }\n }\n else if (hasBody && hasSeq(xmlData, \"!ELEMENT\", i)) {\n i += 8;//Not supported\n const { index } = this.readElementExp(xmlData, i + 1);\n i = index;\n } else if (hasBody && hasSeq(xmlData, \"!ATTLIST\", i)) {\n i += 8;//Not supported\n // const {index} = this.readAttlistExp(xmlData,i+1);\n // i = index;\n } else if (hasBody && hasSeq(xmlData, \"!NOTATION\", i)) {\n i += 9;//Not supported\n const { index } = this.readNotationExp(xmlData, i + 1, this.suppressValidationErr);\n i = index;\n } else if (hasSeq(xmlData, \"!--\", i)) comment = true;\n else throw new Error(`Invalid DOCTYPE`);\n\n angleBracketsCount++;\n exp = \"\";\n } else if (xmlData[i] === '>') { //Read tag content\n if (comment) {\n if (xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\") {\n comment = false;\n angleBracketsCount--;\n }\n } else {\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n } else if (xmlData[i] === '[') {\n hasBody = true;\n } else {\n exp += xmlData[i];\n }\n }\n if (angleBracketsCount !== 0) {\n throw new Error(`Unclosed DOCTYPE`);\n }\n } else {\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return { entities, i };\n }\n readEntityExp(xmlData, i) {\n //External entities are not supported\n // \n\n //Parameter entities are not supported\n // \n\n //Internal entities are supported\n // \n\n // Skip leading whitespace after this.options.maxEntitySize) {\n throw new Error(\n `Entity \"${entityName}\" size (${entityValue.length}) exceeds maximum allowed size (${this.options.maxEntitySize})`\n );\n }\n\n i--;\n return [entityName, entityValue, i];\n }\n\n readNotationExp(xmlData, i) {\n // Skip leading whitespace after \n // \n // \n // \n // \n\n // Skip leading whitespace after {\n while (index < data.length && /\\s/.test(data[index])) {\n index++;\n }\n return index;\n};\n\n\n\nfunction hasSeq(data, seq, i) {\n for (let j = 0; j < seq.length; j++) {\n if (seq[j] !== data[i + j + 1]) return false;\n }\n return true;\n}\n\nfunction validateEntityName(name) {\n if (isName(name))\n return name;\n else\n throw new Error(`Invalid entity name ${name}`);\n}","const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)([0-9]*(\\.[0-9]*)?)$/;\n// const octRegex = /^0x[a-z0-9]+/;\n// const binRegex = /0x[a-z0-9]+/;\n\n \nconst consider = {\n hex : true,\n // oct: false,\n leadingZeros: true,\n decimalPoint: \"\\.\",\n eNotation: true,\n //skipLike: /regex/\n};\n\nexport default function toNumber(str, options = {}){\n options = Object.assign({}, consider, options );\n if(!str || typeof str !== \"string\" ) return str;\n \n let trimmedStr = str.trim();\n \n if(options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str;\n else if(str===\"0\") return 0;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return parse_int(trimmedStr, 16);\n // }else if (options.oct && octRegex.test(str)) {\n // return Number.parseInt(val, 8);\n }else if (trimmedStr.includes('e') || trimmedStr.includes('E')) { //eNotation\n return resolveEnotation(str,trimmedStr,options);\n // }else if (options.parseBin && binRegex.test(str)) {\n // return Number.parseInt(val, 2);\n }else{\n //separate negative sign, leading zeros, and rest number\n const match = numRegex.exec(trimmedStr);\n // +00.123 => [ , '+', '00', '.123', ..\n if(match){\n const sign = match[1] || \"\";\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros\n const decimalAdjacentToLeadingZeros = sign ? // 0., -00., 000.\n str[leadingZeros.length+1] === \".\" \n : str[leadingZeros.length] === \".\";\n\n //trim ending zeros for floating number\n if(!options.leadingZeros //leading zeros are not allowed\n && (leadingZeros.length > 1 \n || (leadingZeros.length === 1 && !decimalAdjacentToLeadingZeros))){\n // 00, 00.3, +03.24, 03, 03.24\n return str;\n }\n else{//no leading zeros or leading zeros are allowed\n const num = Number(trimmedStr);\n const parsedStr = String(num);\n\n if( num === 0) return num;\n if(parsedStr.search(/[eE]/) !== -1){ //given number is long and parsed to eNotation\n if(options.eNotation) return num;\n else return str;\n }else if(trimmedStr.indexOf(\".\") !== -1){ //floating number\n if(parsedStr === \"0\") return num; //0.0\n else if(parsedStr === numTrimmedByZeros) return num; //0.456. 0.79000\n else if( parsedStr === `${sign}${numTrimmedByZeros}`) return num;\n else return str;\n }\n \n let n = leadingZeros? numTrimmedByZeros : trimmedStr;\n if(leadingZeros){\n // -009 => -9\n return (n === parsedStr) || (sign+n === parsedStr) ? num : str\n }else {\n // +9\n return (n === parsedStr) || (n === sign+parsedStr) ? num : str\n }\n }\n }else{ //non-numeric string\n return str;\n }\n }\n}\n\nconst eNotationRegx = /^([-+])?(0*)(\\d*(\\.\\d*)?[eE][-\\+]?\\d+)$/;\nfunction resolveEnotation(str,trimmedStr,options){\n if(!options.eNotation) return str;\n const notation = trimmedStr.match(eNotationRegx); \n if(notation){\n let sign = notation[1] || \"\";\n const eChar = notation[3].indexOf(\"e\") === -1 ? \"E\" : \"e\";\n const leadingZeros = notation[2];\n const eAdjacentToLeadingZeros = sign ? // 0E.\n str[leadingZeros.length+1] === eChar \n : str[leadingZeros.length] === eChar;\n\n if(leadingZeros.length > 1 && eAdjacentToLeadingZeros) return str;\n else if(leadingZeros.length === 1 \n && (notation[3].startsWith(`.${eChar}`) || notation[3][0] === eChar)){\n return Number(trimmedStr);\n }else if(options.leadingZeros && !eAdjacentToLeadingZeros){ //accept with leading zeros\n //remove leading 0s\n trimmedStr = (notation[1] || \"\") + notation[3];\n return Number(trimmedStr);\n }else return str;\n }else{\n return str;\n }\n}\n\n/**\n * \n * @param {string} numStr without leading zeros\n * @returns \n */\nfunction trimZeros(numStr){\n if(numStr && numStr.indexOf(\".\") !== -1){//float\n numStr = numStr.replace(/0+$/, \"\"); //remove ending zeros\n if(numStr === \".\") numStr = \"0\";\n else if(numStr[0] === \".\") numStr = \"0\"+numStr;\n else if(numStr[numStr.length-1] === \".\") numStr = numStr.substring(0,numStr.length-1);\n return numStr;\n }\n return numStr;\n}\n\nfunction parse_int(numStr, base){\n //polyfill\n if(parseInt) return parseInt(numStr, base);\n else if(Number.parseInt) return Number.parseInt(numStr, base);\n else if(window && window.parseInt) return window.parseInt(numStr, base);\n else throw new Error(\"parseInt, Number.parseInt, window.parseInt are not supported\")\n}","'use strict';\n///@ts-check\n\nimport { getAllMatches, isExist } from '../util.js';\nimport xmlNode from './xmlNode.js';\nimport DocTypeReader from './DocTypeReader.js';\nimport toNumber from \"strnum\";\nimport getIgnoreAttributesFn from \"../ignoreAttributes.js\";\n\n// const regx =\n// '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n// .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\nexport default class OrderedObjParser {\n constructor(options) {\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\": { regex: /&(apos|#39|#x27);/g, val: \"'\" },\n \"gt\": { regex: /&(gt|#62|#x3E);/g, val: \">\" },\n \"lt\": { regex: /&(lt|#60|#x3C);/g, val: \"<\" },\n \"quot\": { regex: /&(quot|#34|#x22);/g, val: \"\\\"\" },\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: \"&\" };\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\": { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\": { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\": { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\": { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\": { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\": { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\": { regex: /&(inr|#8377);/g, val: \"₹\" },\n \"num_dec\": { regex: /&#([0-9]{1,7});/g, val: (_, str) => fromCodePoint(str, 10, \"&#\") },\n \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (_, str) => fromCodePoint(str, 16, \"&#x\") },\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n this.entityExpansionCount = 0;\n this.currentExpandedLength = 0;\n\n if (this.options.stopNodes && this.options.stopNodes.length > 0) {\n this.stopNodesExact = new Set();\n this.stopNodesWildcard = new Set();\n for (let i = 0; i < this.options.stopNodes.length; i++) {\n const stopNodeExp = this.options.stopNodes[i];\n if (typeof stopNodeExp !== 'string') continue;\n if (stopNodeExp.startsWith(\"*.\")) {\n this.stopNodesWildcard.add(stopNodeExp.substring(2));\n } else {\n this.stopNodesExact.add(stopNodeExp);\n }\n }\n }\n }\n\n}\n\nfunction addExternalEntities(externalEntities) {\n const entKeys = Object.keys(externalEntities);\n for (let i = 0; i < entKeys.length; i++) {\n const ent = entKeys[i];\n const escaped = ent.replace(/[.\\-+*:]/g, '\\\\.');\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\" + escaped + \";\", \"g\"),\n val: externalEntities[ent]\n }\n }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string} jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val !== undefined) {\n if (this.options.trimValues && !dontTrim) {\n val = val.trim();\n }\n if (val.length > 0) {\n if (!escapeEntities) val = this.replaceEntitiesValue(val, tagName, jPath);\n\n const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n if (newval === null || newval === undefined) {\n //don't parse\n return val;\n } else if (typeof newval !== typeof val || newval !== val) {\n //overwrite\n return newval;\n } else if (this.options.trimValues) {\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n const trimmedVal = val.trim();\n if (trimmedVal === val) {\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n return val;\n }\n }\n }\n }\n}\n\nfunction resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(':');\n const prefix = tagname.charAt(0) === '/' ? '/' : '';\n if (tags[0] === 'xmlns') {\n return '';\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n if (this.options.ignoreAttributes !== true && typeof attrStr === 'string') {\n // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n //attrStr = attrStr || attrStr.trim();\n\n const matches = getAllMatches(attrStr, attrsRegx);\n const len = matches.length; //don't make it inline\n const attrs = {};\n for (let i = 0; i < len; i++) {\n const attrName = this.resolveNameSpace(matches[i][1]);\n if (this.ignoreAttributesFn(attrName, jPath)) {\n continue\n }\n let oldVal = matches[i][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if (aName === \"__proto__\") aName = \"#__proto__\";\n\n if (oldVal !== undefined) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal, tagName, jPath);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if (newVal === null || newVal === undefined) {\n //don't parse\n attrs[aName] = oldVal;\n } else if (typeof newVal !== typeof oldVal || newVal !== oldVal) {\n //overwrite\n attrs[aName] = newVal;\n } else {\n //parse\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs\n }\n}\n\nconst parseXml = function (xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n const xmlObj = new xmlNode('!xml');\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n\n // Reset entity expansion counters for this document\n this.entityExpansionCount = 0;\n this.currentExpandedLength = 0;\n\n const docTypeReader = new DocTypeReader(this.options.processEntities);\n for (let i = 0; i < xmlData.length; i++) {//for each char in XML data\n const ch = xmlData[i];\n if (ch === '<') {\n // const nextIndex = i+1;\n // const _2ndChar = xmlData[nextIndex];\n if (xmlData[i + 1] === '/') {//Closing Tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n let tagName = xmlData.substring(i + 2, closeIndex).trim();\n\n if (this.options.removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n }\n }\n\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n if (currentNode) {\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n\n //check if last tag of nested tag was unpaired tag\n const lastTagName = jPath.substring(jPath.lastIndexOf(\".\") + 1);\n if (tagName && this.options.unpairedTags.indexOf(tagName) !== -1) {\n throw new Error(`Unpaired tag can not be used as closing tag: `);\n }\n let propIndex = 0\n if (lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1) {\n propIndex = jPath.lastIndexOf('.', jPath.lastIndexOf('.') - 1)\n this.tagsNodeStack.pop();\n } else {\n propIndex = jPath.lastIndexOf(\".\");\n }\n jPath = jPath.substring(0, propIndex);\n\n currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope\n textData = \"\";\n i = closeIndex;\n } else if (xmlData[i + 1] === '?') {\n\n let tagData = readTagExp(xmlData, i, false, \"?>\");\n if (!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if ((this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags) {\n //do nothing\n } else {\n\n const childNode = new xmlNode(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n\n if (tagData.tagName !== tagData.tagExp && tagData.attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n }\n this.addChild(currentNode, childNode, jPath, i);\n }\n\n\n i = tagData.closeIndex + 1;\n } else if (xmlData.substr(i + 1, 3) === '!--') {\n const endIndex = findClosingIndex(xmlData, \"-->\", i + 4, \"Comment is not closed.\")\n if (this.options.commentPropName) {\n const comment = xmlData.substring(i + 4, endIndex - 2);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n currentNode.add(this.options.commentPropName, [{ [this.options.textNodeName]: comment }]);\n }\n i = endIndex;\n } else if (xmlData.substr(i + 1, 2) === '!D') {\n const result = docTypeReader.readDocType(xmlData, i);\n this.docTypeEntities = result.entities;\n i = result.i;\n } else if (xmlData.substr(i + 1, 2) === '![') {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i + 9, closeIndex);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n if (val == undefined) val = \"\";\n\n //cdata should be set even if it is 0 length string\n if (this.options.cdataPropName) {\n currentNode.add(this.options.cdataPropName, [{ [this.options.textNodeName]: tagExp }]);\n } else {\n currentNode.add(this.options.textNodeName, val);\n }\n\n i = closeIndex + 2;\n } else {//Opening tag\n let result = readTagExp(xmlData, i, this.options.removeNSPrefix);\n let tagName = result.tagName;\n const rawTagName = result.rawTagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n\n if (this.options.transformTagName) {\n //console.log(tagExp, tagName)\n const newTagName = this.options.transformTagName(tagName);\n if (tagExp === tagName) {\n tagExp = newTagName\n }\n tagName = newTagName;\n }\n\n if (this.options.strictReservedNames &&\n (tagName === this.options.commentPropName\n || tagName === this.options.cdataPropName\n )) {\n throw new Error(`Invalid tag name: ${tagName}`);\n }\n\n //save text as child node\n if (currentNode && textData) {\n if (currentNode.tagname !== '!xml') {\n //when nested tag is found\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n\n //check if last tag was unpaired tag\n const lastTag = currentNode;\n if (lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1) {\n currentNode = this.tagsNodeStack.pop();\n jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n }\n if (tagName !== xmlObj.tagname) {\n jPath += jPath ? \".\" + tagName : tagName;\n }\n const startIndex = i;\n if (this.isItStopNode(this.stopNodesExact, this.stopNodesWildcard, jPath, tagName)) {\n let tagContent = \"\";\n //self-closing tag\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") { //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n i = result.closeIndex;\n }\n //unpaired tag\n else if (this.options.unpairedTags.indexOf(tagName) !== -1) {\n\n i = result.closeIndex;\n }\n //normal tag\n else {\n //read until closing tag is found\n const result = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n if (!result) throw new Error(`Unexpected end of ${rawTagName}`);\n i = result.i;\n tagContent = result.tagContent;\n }\n\n const childNode = new xmlNode(tagName);\n\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n if (tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n\n this.addChild(currentNode, childNode, jPath, startIndex);\n } else {\n //selfClosing tag\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") { //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n\n if (this.options.transformTagName) {\n const newTagName = this.options.transformTagName(tagName);\n if (tagExp === tagName) {\n tagExp = newTagName\n }\n tagName = newTagName;\n }\n\n const childNode = new xmlNode(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath, startIndex);\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n }\n else if(this.options.unpairedTags.indexOf(tagName) !== -1){//unpaired tag\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath);\n }\n this.addChild(currentNode, childNode, jPath, startIndex);\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n i = result.closeIndex;\n // Continue to next iteration without changing currentNode\n continue;\n }\n //opening tag\n else {\n const childNode = new xmlNode(tagName);\n if (this.tagsNodeStack.length > this.options.maxNestedTags) {\n throw new Error(\"Maximum nested tags exceeded\");\n }\n this.tagsNodeStack.push(currentNode);\n\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath, startIndex);\n currentNode = childNode;\n }\n textData = \"\";\n i = closeIndex;\n }\n }\n } else {\n textData += xmlData[i];\n }\n }\n return xmlObj.child;\n}\n\nfunction addChild(currentNode, childNode, jPath, startIndex) {\n // unset startIndex if not requested\n if (!this.options.captureMetaData) startIndex = undefined;\n const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"])\n if (result === false) {\n //do nothing\n } else if (typeof result === \"string\") {\n childNode.tagname = result\n currentNode.addChild(childNode, startIndex);\n } else {\n currentNode.addChild(childNode, startIndex);\n }\n}\n\nconst replaceEntitiesValue = function (val, tagName, jPath) {\n // Performance optimization: Early return if no entities to replace\n if (val.indexOf('&') === -1) {\n return val;\n }\n\n const entityConfig = this.options.processEntities;\n\n if (!entityConfig.enabled) {\n return val;\n }\n\n // Check tag-specific filtering\n if (entityConfig.allowedTags) {\n if (!entityConfig.allowedTags.includes(tagName)) {\n return val; // Skip entity replacement for current tag as not set\n }\n }\n\n if (entityConfig.tagFilter) {\n if (!entityConfig.tagFilter(tagName, jPath)) {\n return val; // Skip based on custom filter\n }\n }\n\n // Replace DOCTYPE entities\n for (let entityName in this.docTypeEntities) {\n const entity = this.docTypeEntities[entityName];\n const matches = val.match(entity.regx);\n\n if (matches) {\n // Track expansions\n this.entityExpansionCount += matches.length;\n\n // Check expansion limit\n if (entityConfig.maxTotalExpansions &&\n this.entityExpansionCount > entityConfig.maxTotalExpansions) {\n throw new Error(\n `Entity expansion limit exceeded: ${this.entityExpansionCount} > ${entityConfig.maxTotalExpansions}`\n );\n }\n\n // Store length before replacement\n const lengthBefore = val.length;\n val = val.replace(entity.regx, entity.val);\n\n // Check expanded length immediately after replacement\n if (entityConfig.maxExpandedLength) {\n this.currentExpandedLength += (val.length - lengthBefore);\n\n if (this.currentExpandedLength > entityConfig.maxExpandedLength) {\n throw new Error(\n `Total expanded content size exceeded: ${this.currentExpandedLength} > ${entityConfig.maxExpandedLength}`\n );\n }\n }\n }\n }\n if (val.indexOf('&') === -1) return val; // Early exit\n\n // Replace standard entities\n for (let entityName in this.lastEntities) {\n const entity = this.lastEntities[entityName];\n val = val.replace(entity.regex, entity.val);\n }\n if (val.indexOf('&') === -1) return val; // Early exit\n\n // Replace HTML entities if enabled\n if (this.options.htmlEntities) {\n for (let entityName in this.htmlEntities) {\n const entity = this.htmlEntities[entityName];\n val = val.replace(entity.regex, entity.val);\n }\n }\n\n // Replace ampersand entity last\n val = val.replace(this.ampEntity.regex, this.ampEntity.val);\n\n return val;\n}\n\n\nfunction saveTextToParentTag(textData, parentNode, jPath, isLeafNode) {\n if (textData) { //store previously collected data as textNode\n if (isLeafNode === undefined) isLeafNode = parentNode.child.length === 0\n\n textData = this.parseTextData(textData,\n parentNode.tagname,\n jPath,\n false,\n parentNode[\":@\"] ? Object.keys(parentNode[\":@\"]).length !== 0 : false,\n isLeafNode);\n\n if (textData !== undefined && textData !== \"\")\n parentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * @param {Set} stopNodesExact\n * @param {Set} stopNodesWildcard\n * @param {string} jPath\n * @param {string} currentTagName\n */\nfunction isItStopNode(stopNodesExact, stopNodesWildcard, jPath, currentTagName) {\n if (stopNodesWildcard && stopNodesWildcard.has(currentTagName)) return true;\n if (stopNodesExact && stopNodesExact.has(jPath)) return true;\n return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\") {\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";//reset\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if (closingChar[1]) {\n if (xmlData[index + 1] === closingChar[1]) {\n return {\n data: tagExp,\n index: index\n }\n }\n } else {\n return {\n data: tagExp,\n index: index\n }\n }\n } else if (ch === '\\t') {\n ch = \" \"\n }\n tagExp += ch;\n }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg) {\n const closingIndex = xmlData.indexOf(str, i);\n if (closingIndex === -1) {\n throw new Error(errMsg)\n } else {\n return closingIndex + str.length - 1;\n }\n}\n\nfunction readTagExp(xmlData, i, removeNSPrefix, closingChar = \">\") {\n const result = tagExpWithClosingIndex(xmlData, i + 1, closingChar);\n if (!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if (separatorIndex !== -1) {//separate tag name and attributes expression\n tagName = tagExp.substring(0, separatorIndex);\n tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n }\n\n const rawTagName = tagName;\n if (removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n\n return {\n tagName: tagName,\n tagExp: tagExp,\n closeIndex: closeIndex,\n attrExpPresent: attrExpPresent,\n rawTagName: rawTagName,\n }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i) {\n const startIndex = i;\n // Starting at 1 since we already have an open tag\n let openTagCount = 1;\n\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === \"<\") {\n if (xmlData[i + 1] === \"/\") {//close tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i + 2, closeIndex).trim();\n if (closeTagName === tagName) {\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i),\n i: closeIndex\n }\n }\n }\n i = closeIndex;\n } else if (xmlData[i + 1] === '?') {\n const closeIndex = findClosingIndex(xmlData, \"?>\", i + 1, \"StopNode is not closed.\")\n i = closeIndex;\n } else if (xmlData.substr(i + 1, 3) === '!--') {\n const closeIndex = findClosingIndex(xmlData, \"-->\", i + 3, \"StopNode is not closed.\")\n i = closeIndex;\n } else if (xmlData.substr(i + 1, 2) === '![') {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n i = closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i, '>')\n\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length - 1] !== \"/\") {\n openTagCount++;\n }\n i = tagData.closeIndex;\n }\n }\n }\n }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n if (shouldParse && typeof val === 'string') {\n //console.log(options)\n const newval = val.trim();\n if (newval === 'true') return true;\n else if (newval === 'false') return false;\n else return toNumber(val, options);\n } else {\n if (isExist(val)) {\n return val;\n } else {\n return '';\n }\n }\n}\n\nfunction fromCodePoint(str, base, prefix) {\n const codePoint = Number.parseInt(str, base);\n\n if (codePoint >= 0 && codePoint <= 0x10FFFF) {\n return String.fromCodePoint(codePoint);\n } else {\n return prefix + str + \";\";\n }\n}","export default function getIgnoreAttributesFn(ignoreAttributes) {\n if (typeof ignoreAttributes === 'function') {\n return ignoreAttributes\n }\n if (Array.isArray(ignoreAttributes)) {\n return (attrName) => {\n for (const pattern of ignoreAttributes) {\n if (typeof pattern === 'string' && attrName === pattern) {\n return true\n }\n if (pattern instanceof RegExp && pattern.test(attrName)) {\n return true\n }\n }\n }\n }\n return () => false\n}","'use strict';\n\nimport XmlNode from './xmlNode.js';\n\nconst METADATA_SYMBOL = XmlNode.getMetaDataSymbol();\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @returns \n */\nexport default function prettify(node, options) {\n return compress(node, options);\n}\n\n/**\n * \n * @param {array} arr \n * @param {object} options \n * @param {string} jPath \n * @returns object\n */\nfunction compress(arr, options, jPath) {\n let text;\n const compressedObj = {}; //This is intended to be a plain object\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const property = propName(tagObj);\n let newJpath = \"\";\n if (jPath === undefined) newJpath = property;\n else newJpath = jPath + \".\" + property;\n\n if (property === options.textNodeName) {\n if (text === undefined) text = tagObj[property];\n else text += \"\" + tagObj[property];\n } else if (property === undefined) {\n continue;\n } else if (tagObj[property]) {\n\n let val = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val, options);\n\n if (tagObj[\":@\"]) {\n assignAttributes(val, tagObj[\":@\"], newJpath, options);\n } else if (Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode) {\n val = val[options.textNodeName];\n } else if (Object.keys(val).length === 0) {\n if (options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n else val = \"\";\n }\n\n if (tagObj[METADATA_SYMBOL] !== undefined && typeof val === \"object\" && val !== null) {\n val[METADATA_SYMBOL] = tagObj[METADATA_SYMBOL]; // copy over metadata\n }\n\n\n if (compressedObj[property] !== undefined && Object.prototype.hasOwnProperty.call(compressedObj, property)) {\n if (!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [compressedObj[property]];\n }\n compressedObj[property].push(val);\n } else {\n //TODO: if a node is not an array, then check if it should be an array\n //also determine if it is a leaf node\n if (options.isArray(property, newJpath, isLeaf)) {\n compressedObj[property] = [val];\n } else {\n compressedObj[property] = val;\n }\n }\n }\n\n }\n // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n if (typeof text === \"string\") {\n if (text.length > 0) compressedObj[options.textNodeName] = text;\n } else if (text !== undefined) compressedObj[options.textNodeName] = text;\n\n\n return compressedObj;\n}\n\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (key !== \":@\") return key;\n }\n}\n\nfunction assignAttributes(obj, attrMap, jpath, options) {\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n const atrrName = keys[i];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [attrMap[atrrName]];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n}\n\nfunction isLeafTag(obj, options) {\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n\n if (propCount === 0) {\n return true;\n }\n\n if (\n propCount === 1 &&\n (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)\n ) {\n return true;\n }\n\n return false;\n}\n","import { buildOptions } from './OptionsBuilder.js';\nimport OrderedObjParser from './OrderedObjParser.js';\nimport prettify from './node2json.js';\nimport { validate } from \"../validator.js\";\nimport XmlNode from './xmlNode.js';\n\nexport default class XMLParser {\n\n constructor(options) {\n this.externalEntities = {};\n this.options = buildOptions(options);\n\n }\n /**\n * Parse XML dats to JS object \n * @param {string|Uint8Array} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData, validationOption) {\n if (typeof xmlData !== \"string\" && xmlData.toString) {\n xmlData = xmlData.toString();\n } else if (typeof xmlData !== \"string\") {\n throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n }\n\n if (validationOption) {\n if (validationOption === true) validationOption = {}; //validate with default options\n\n const result = validate(xmlData, validationOption);\n if (result !== true) {\n throw Error(`${result.err.msg}:${result.err.line}:${result.err.col}`)\n }\n }\n const orderedObjParser = new OrderedObjParser(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if (this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value) {\n if (value.indexOf(\"&\") !== -1) {\n throw new Error(\"Entity value can't have '&'\")\n } else if (key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1) {\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for ' '\")\n } else if (value === \"&\") {\n throw new Error(\"An entity with value '&' is not permitted\");\n } else {\n this.externalEntities[key] = value;\n }\n }\n\n /**\n * Returns a Symbol that can be used to access the metadata\n * property on a node.\n * \n * If Symbol is not available in the environment, an ordinary property is used\n * and the name of the property is here returned.\n * \n * The XMLMetaData property is only present when `captureMetaData`\n * is true in the options.\n */\n static getMetaDataSymbol() {\n return XmlNode.getMetaDataSymbol();\n }\n}\n","const EOL = \"\\n\";\n\n/**\n * \n * @param {array} jArray \n * @param {any} options \n * @returns \n */\nexport default function toXml(jArray, options) {\n let indentation = \"\";\n if (options.format && options.indentBy.length > 0) {\n indentation = EOL;\n }\n return arrToStr(jArray, options, \"\", indentation);\n}\n\nfunction arrToStr(arr, options, jPath, indentation) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n\n\n if (!Array.isArray(arr)) {\n // Non-array values (e.g. string tag values) should be treated as text content\n if (arr !== undefined && arr !== null) {\n let text = arr.toString();\n text = replaceEntitiesValue(text, options);\n return text;\n }\n return \"\";\n }\n\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const tagName = propName(tagObj);\n if (tagName === undefined) continue;\n\n let newJPath = \"\";\n if (jPath.length === 0) newJPath = tagName\n else newJPath = `${jPath}.${tagName}`;\n\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode(newJPath, options)) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += ``;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + ``;\n isPreviousElementTag = true;\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n isPreviousElementTag = true;\n continue;\n }\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tagStart = indentation + `<${tagName}${attStr}`;\n const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n }\n isPreviousElementTag = true;\n }\n\n return xmlStr;\n}\n\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;\n if (key !== \":@\") return key;\n }\n}\n\nfunction attr_to_str(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue;\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\n\nfunction isStopNode(jPath, options) {\n jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for (let index in options.stopNodes) {\n if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n }\n return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i = 0; i < options.entities.length; i++) {\n const entity = options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\n","'use strict';\n//parse Empty Node as self closing node\nimport buildFromOrderedJs from './orderedJs2Xml.js';\nimport getIgnoreAttributesFn from \"./ignoreAttributes.js\";\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: ' ',\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function (key, a) {\n return a;\n },\n attributeValueProcessor: function (attrName, a) {\n return a;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n};\n\nexport default function Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n this.isAttribute = function (/*a*/) {\n return false;\n };\n } else {\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n\n this.processTextOrObjNode = processTextOrObjNode\n\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = '>\\n';\n this.newLine = '\\n';\n } else {\n this.indentate = function () {\n return '';\n };\n this.tagEndChar = '>';\n this.newLine = '';\n }\n}\n\nBuilder.prototype.build = function (jObj) {\n if (this.options.preserveOrder) {\n return buildFromOrderedJs(jObj, this.options);\n } else {\n if (Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1) {\n jObj = {\n [this.options.arrayNodeName]: jObj\n }\n }\n return this.j2x(jObj, 0, []).val;\n }\n};\n\nBuilder.prototype.j2x = function (jObj, level, ajPath) {\n let attrStr = '';\n let val = '';\n const jPath = ajPath.join('.')\n for (let key in jObj) {\n if (!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n if (typeof jObj[key] === 'undefined') {\n // supress undefined node only if it is not an attribute\n if (this.isAttribute(key)) {\n val += '';\n }\n } else if (jObj[key] === null) {\n // null attribute should be ignored by the attribute list, but should not cause the tag closing\n if (this.isAttribute(key)) {\n val += '';\n } else if (key === this.options.cdataPropName) {\n val += '';\n } else if (key[0] === '?') {\n val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n } else {\n val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n }\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextValNode(jObj[key], key, '', level);\n } else if (typeof jObj[key] !== 'object') {\n //premitive type\n const attr = this.isAttribute(key);\n if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n attrStr += this.buildAttrPairStr(attr, '' + jObj[key]);\n } else if (!attr) {\n //tag value\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n val += this.replaceEntitiesValue(newval);\n } else {\n val += this.buildTextValNode(jObj[key], key, '', level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n //repeated nodes\n const arrLen = jObj[key].length;\n let listTagVal = \"\";\n let listTagAttr = \"\";\n for (let j = 0; j < arrLen; j++) {\n const item = jObj[key][j];\n if (typeof item === 'undefined') {\n // supress undefined node\n } else if (item === null) {\n if (key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (typeof item === 'object') {\n if (this.options.oneListGroup) {\n const result = this.j2x(item, level + 1, ajPath.concat(key));\n listTagVal += result.val;\n if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n listTagAttr += result.attrStr\n }\n } else {\n listTagVal += this.processTextOrObjNode(item, key, level, ajPath)\n }\n } else {\n if (this.options.oneListGroup) {\n let textValue = this.options.tagValueProcessor(key, item);\n textValue = this.replaceEntitiesValue(textValue);\n listTagVal += textValue;\n } else {\n listTagVal += this.buildTextValNode(item, key, '', level);\n }\n }\n }\n if (this.options.oneListGroup) {\n listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n }\n val += listTagVal;\n } else {\n //nested node\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j = 0; j < L; j++) {\n attrStr += this.buildAttrPairStr(Ks[j], '' + jObj[key][Ks[j]]);\n }\n } else {\n val += this.processTextOrObjNode(jObj[key], key, level, ajPath)\n }\n }\n }\n return { attrStr: attrStr, val: val };\n};\n\nBuilder.prototype.buildAttrPairStr = function (attrName, val) {\n val = this.options.attributeValueProcessor(attrName, '' + val);\n val = this.replaceEntitiesValue(val);\n if (this.options.suppressBooleanAttributes && val === \"true\") {\n return ' ' + attrName;\n } else return ' ' + attrName + '=\"' + val + '\"';\n}\n\nfunction processTextOrObjNode(object, key, level, ajPath) {\n const result = this.j2x(object, level + 1, ajPath.concat(key));\n if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n}\n\nBuilder.prototype.buildObjectNode = function (val, key, attrStr, level) {\n if (val === \"\") {\n if (key[0] === \"?\") return this.indentate(level) + '<' + key + attrStr + '?' + this.tagEndChar;\n else {\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n } else {\n\n let tagEndExp = '' + val + tagEndExp);\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `` + this.newLine;\n } else {\n return (\n this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n val +\n this.indentate(level) + tagEndExp);\n }\n }\n}\n\nBuilder.prototype.closeTag = function (key) {\n let closeTag = \"\";\n if (this.options.unpairedTags.indexOf(key) !== -1) { //unpaired\n if (!this.options.suppressUnpairedNode) closeTag = \"/\"\n } else if (this.options.suppressEmptyNode) { //empty\n closeTag = \"/\";\n } else {\n closeTag = `>` + this.newLine;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `` + this.newLine;\n } else if (key[0] === \"?\") {//PI tag\n return this.indentate(level) + '<' + key + attrStr + '?' + this.tagEndChar;\n } else {\n let textValue = this.options.tagValueProcessor(key, val);\n textValue = this.replaceEntitiesValue(textValue);\n\n if (textValue === '') {\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n } else {\n return this.indentate(level) + '<' + key + attrStr + '>' +\n textValue +\n ' 0 && this.options.processEntities) {\n for (let i = 0; i < this.options.entities.length; i++) {\n const entity = this.options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\n\nfunction indentate(level) {\n return this.options.indentBy.repeat(level);\n}\n\nfunction isAttribute(name /*, options*/) {\n if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) {\n return name.substr(this.attrPrefixLen);\n } else {\n return false;\n }\n}\n\n","export default function getIgnoreAttributesFn(ignoreAttributes) {\n if (typeof ignoreAttributes === 'function') {\n return ignoreAttributes\n }\n if (Array.isArray(ignoreAttributes)) {\n return (attrName) => {\n for (const pattern of ignoreAttributes) {\n if (typeof pattern === 'string' && attrName === pattern) {\n return true\n }\n if (pattern instanceof RegExp && pattern.test(attrName)) {\n return true\n }\n }\n }\n }\n return () => false\n}","// Re-export from fast-xml-builder for backward compatibility\nimport XMLBuilder from 'fast-xml-builder';\nexport default XMLBuilder;\n\n// If there are any named exports you also want to re-export:\nexport * from 'fast-xml-builder';","'use strict';\n\nimport { validate } from './validator.js';\nimport XMLParser from './xmlparser/XMLParser.js';\nimport XMLBuilder from './xmlbuilder/json2xml.js';\n\nconst XMLValidator = {\n validate: validate\n}\nexport {\n XMLParser,\n XMLValidator,\n XMLBuilder\n};"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","nameStartChar","regexName","RegExp","getAllMatches","string","regex","matches","match","exec","allmatches","startIndex","lastIndex","length","len","index","push","isName","defaultOptions","allowBooleanAttributes","unpairedTags","validate","xmlData","options","assign","tags","tagFound","reachedRoot","substr","i","readPI","err","isWhiteSpace","getErrorObject","getLineNumberForPosition","tagStartPos","readCommentAndCDATA","closingTag","tagName","trim","substring","validateTagName","result","readAttributeStr","attrStr","attrStrStart","isValid","validateAttributeString","code","msg","line","tagClosed","otg","pop","openPos","col","indexOf","afterAmp","validateAmpersand","JSON","stringify","map","t","replace","char","start","tagname","angleBracketsCount","doubleQuote","singleQuote","startChar","validAttrStrRegxp","attrNames","getPositionFromMatch","undefined","attrName","validateAttrName","re","validateNumberAmpersand","count","message","lineNumber","lines","split","preserveOrder","attributeNamePrefix","attributesGroupName","textNodeName","ignoreAttributes","removeNSPrefix","parseTagValue","parseAttributeValue","trimValues","cdataPropName","numberParseOptions","hex","leadingZeros","eNotation","tagValueProcessor","val","attributeValueProcessor","stopNodes","alwaysCreateTextNode","isArray","commentPropName","processEntities","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","jPath","attrs","captureMetaData","maxNestedTags","strictReservedNames","normalizeProcessEntities","enabled","maxEntitySize","maxExpansionDepth","maxTotalExpansions","maxExpandedLength","allowedTags","tagFilter","_value$maxEntitySize","_value$maxExpansionDe","_value$maxTotalExpans","_value$maxExpandedLen","_value$allowedTags","_value$tagFilter","METADATA_SYMBOL","buildOptions","built","XmlNode","child","create","_proto","add","_this$child$push","addChild","node","_this$child$push2","_this$child$push3","keys","getMetaDataSymbol","DocTypeReader","suppressValidationErr","readDocType","entities","Error","hasBody","comment","hasSeq","entityName","_this$readEntityExp","readEntityExp","escaped","regx","readElementExp","readNotationExp","skipWhitespace","test","validateEntityName","toUpperCase","entityValue","_this$readIdentifierV","readIdentifierVal","notationName","identifierType","publicIdentifier","systemIdentifier","_this$readIdentifierV2","_this$readIdentifierV3","_this$readIdentifierV4","type","identifierVal","elementName","contentModel","readAttlistExp","attributeName","attributeType","allowedNotations","notation","join","includes","defaultValue","_this$readIdentifierV5","data","seq","j","name","hexRegex","numRegex","consider","decimalPoint","eNotationRegx","OrderedObjParser","currentNode","tagsNodeStack","docTypeEntities","lastEntities","ampEntity","_","str","fromCodePoint","addExternalEntities","parseXml","parseTextData","resolveNameSpace","buildAttributesMap","isItStopNode","replaceEntitiesValue","readStopNodeData","saveTextToParentTag","ignoreAttributesFn","Array","_step","_iterator","_createForOfIteratorHelperLoose","done","pattern","entityExpansionCount","currentExpandedLength","stopNodesExact","Set","stopNodesWildcard","stopNodeExp","startsWith","externalEntities","entKeys","ent","dontTrim","hasAttributes","isLeafNode","escapeEntities","newval","parseValue","prefix","charAt","attrsRegx","oldVal","aName","newVal","attrCollection","xmlObj","xmlNode","textData","docTypeReader","closeIndex","findClosingIndex","colonIndex","lastTagName","lastIndexOf","propIndex","tagData","readTagExp","childNode","tagExp","attrExpPresent","endIndex","_ref","_ref2","rawTagName","newTagName","lastTag","tagContent","entityConfig","entity","lengthBefore","parentNode","currentTagName","has","errMsg","closingIndex","closingChar","attrBoundary","ch","tagExpWithClosingIndex","separatorIndex","search","trimStart","openTagCount","shouldParse","trimmedStr","skipLike","numStr","parseInt","Number","window","parse_int","sign","eChar","eAdjacentToLeadingZeros","resolveEnotation","numTrimmedByZeros","decimalAdjacentToLeadingZeros","num","parsedStr","String","n","toNumber","base","codePoint","prettify","compress","arr","text","compressedObj","newJpath","tagObj","property","propName","isLeaf","isLeafTag","assignAttributes","attrMap","jpath","atrrName","propCount","XMLParser","parse","validationOption","toString","orderedObjParser","orderedResult","addEntity","toXml","jArray","indentation","format","indentBy","arrToStr","xmlStr","isPreviousElementTag","newJPath","tagText","isStopNode","attStr","attr_to_str","tempInd","piTextNodeName","newIdentation","tagStart","tagValue","suppressUnpairedNode","suppressEmptyNode","endsWith","attr","attrVal","suppressBooleanAttributes","textValue","a","oneListGroup","Builder","isAttribute","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","object","level","ajPath","j2x","concat","buildTextValNode","buildObjectNode","repeat","build","jObj","buildFromOrderedJs","arrayNodeName","Date","buildAttrPairStr","arrLen","listTagVal","listTagAttr","item","Ks","L","closeTag","tagEndExp","piClosingChar","XMLValidator"],"sourceRoot":""} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/lib/fxparser.min.js b/food-ordering-app/server/node_modules/fast-xml-parser/lib/fxparser.min.js new file mode 100644 index 000000000..8c6e1cd0b --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/lib/fxparser.min.js @@ -0,0 +1,2 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.XMLParser=e():t.XMLParser=e()}(this,()=>(()=>{"use strict";var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{default:()=>et});var r={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},stopNodes:[],alwaysCreateTextNode:!1,isArray:function(){return!1},commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(t,e,r){return t},captureMetaData:!1,maxNestedTags:100,strictReservedNames:!0};function n(t){return"boolean"==typeof t?{enabled:t,maxEntitySize:1e4,maxExpansionDepth:10,maxTotalExpansions:1e3,maxExpandedLength:1e5,allowedTags:null,tagFilter:null}:"object"==typeof t&&null!==t?{enabled:!1!==t.enabled,maxEntitySize:null!=(e=t.maxEntitySize)?e:1e4,maxExpansionDepth:null!=(r=t.maxExpansionDepth)?r:10,maxTotalExpansions:null!=(i=t.maxTotalExpansions)?i:1e3,maxExpandedLength:null!=(a=t.maxExpandedLength)?a:1e5,allowedTags:null!=(s=t.allowedTags)?s:null,tagFilter:null!=(o=t.tagFilter)?o:null}:n(!0);var e,r,i,a,s,o}var i=function(t){var e=Object.assign({},r,t);return e.processEntities=n(e.processEntities),e},a=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",s=new RegExp("^["+a+"]["+a+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$");function o(t,e){for(var r=[],n=e.exec(t);n;){var i=[];i.startIndex=e.lastIndex-n[0].length;for(var a=n.length,s=0;s0?this.child.push(((r={})[t.tagname]=t.child,r[":@"]=t[":@"],r)):this.child.push(((n={})[t.tagname]=t.child,n)),void 0!==e&&(this.child[this.child.length-1][l]={startIndex:e})},t.getMetaDataSymbol=function(){return l},t}(),f=function(){function t(t){this.suppressValidationErr=!t,this.options=t}var e=t.prototype;return e.readDocType=function(t,e){var r=Object.create(null);if("O"!==t[e+3]||"C"!==t[e+4]||"T"!==t[e+5]||"Y"!==t[e+6]||"P"!==t[e+7]||"E"!==t[e+8])throw new Error("Invalid Tag instead of DOCTYPE");e+=9;for(var n=1,i=!1,a=!1;e"===t[e]){if(a?"-"===t[e-1]&&"-"===t[e-2]&&(a=!1,n--):n--,0===n)break}else"["===t[e]?i=!0:t[e];else{if(i&&p(t,"!ENTITY",e)){e+=7;var s=void 0,o=void 0,l=this.readEntityExp(t,e+1,this.suppressValidationErr);if(s=l[0],o=l[1],e=l[2],-1===o.indexOf("&")){var u=s.replace(/[.\-+*:]/g,"\\.");r[s]={regx:RegExp("&"+u+";","g"),val:o}}}else if(i&&p(t,"!ELEMENT",e))e+=8,e=this.readElementExp(t,e+1).index;else if(i&&p(t,"!ATTLIST",e))e+=8;else if(i&&p(t,"!NOTATION",e))e+=9,e=this.readNotationExp(t,e+1,this.suppressValidationErr).index;else{if(!p(t,"!--",e))throw new Error("Invalid DOCTYPE");a=!0}n++}if(0!==n)throw new Error("Unclosed DOCTYPE");return{entities:r,i:e}},e.readEntityExp=function(t,e){e=h(t,e);for(var r="";ethis.options.maxEntitySize)throw new Error('Entity "'+r+'" size ('+n.length+") exceeds maximum allowed size ("+this.options.maxEntitySize+")");return[r,n,--e]},e.readNotationExp=function(t,e){e=h(t,e);for(var r="";et.length)&&(e=t.length);for(var r=0,n=Array(e);r"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:function(t,e){return _(e,10,"&#")}},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:function(t,e){return _(e,16,"&#x")}}},this.addExternalEntities=N,this.parseXml=O,this.parseTextData=y,this.resolveNameSpace=T,this.buildAttributesMap=I,this.isItStopNode=C,this.replaceEntitiesValue=A,this.readStopNodeData=F,this.saveTextToParentTag=P,this.addChild=S,this.ignoreAttributesFn="function"==typeof(e=this.options.ignoreAttributes)?e:Array.isArray(e)?function(t){for(var r,n=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(r)return(r=r.call(t)).next.bind(r);if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return E(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?E(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0;return function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(e);!(r=n()).done;){var i=r.value;if("string"==typeof i&&t===i)return!0;if(i instanceof RegExp&&i.test(t))return!0}}:function(){return!1},this.entityExpansionCount=0,this.currentExpandedLength=0,this.options.stopNodes&&this.options.stopNodes.length>0){this.stopNodesExact=new Set,this.stopNodesWildcard=new Set;for(var r=0;r0)){s||(t=this.replaceEntitiesValue(t,e,r));var o=this.options.tagValueProcessor(e,t,r,i,a);return null==o?t:typeof o!=typeof t||o!==t?o:this.options.trimValues||t.trim()===t?V(t,this.options.parseTagValue,this.options.numberParseOptions):t}}function T(t){if(this.options.removeNSPrefix){var e=t.split(":"),r="/"===t.charAt(0)?"/":"";if("xmlns"===e[0])return"";2===e.length&&(t=r+e[1])}return t}var w=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function I(t,e,r){if(!0!==this.options.ignoreAttributes&&"string"==typeof t){for(var n=o(t,w),i=n.length,a={},s=0;s",s,"Closing Tag is not closed."),l=t.substring(s+2,o).trim();if(this.options.removeNSPrefix){var u=l.indexOf(":");-1!==u&&(l=l.substr(u+1))}this.options.transformTagName&&(l=this.options.transformTagName(l)),r&&(n=this.saveTextToParentTag(n,r,i));var h=i.substring(i.lastIndexOf(".")+1);if(l&&-1!==this.options.unpairedTags.indexOf(l))throw new Error("Unpaired tag can not be used as closing tag: ");var p=0;h&&-1!==this.options.unpairedTags.indexOf(h)?(p=i.lastIndexOf(".",i.lastIndexOf(".")-1),this.tagsNodeStack.pop()):p=i.lastIndexOf("."),i=i.substring(0,p),r=this.tagsNodeStack.pop(),n="",s=o}else if("?"===t[s+1]){var g=M(t,s,!1,"?>");if(!g)throw new Error("Pi Tag is not closed.");if(n=this.saveTextToParentTag(n,r,i),this.options.ignoreDeclaration&&"?xml"===g.tagName||this.options.ignorePiTags);else{var c=new d(g.tagName);c.add(this.options.textNodeName,""),g.tagName!==g.tagExp&&g.attrExpPresent&&(c[":@"]=this.buildAttributesMap(g.tagExp,i,g.tagName)),this.addChild(r,c,i,s)}s=g.closeIndex+1}else if("!--"===t.substr(s+1,3)){var v=D(t,"--\x3e",s+4,"Comment is not closed.");if(this.options.commentPropName){var m,x=t.substring(s+4,v-2);n=this.saveTextToParentTag(n,r,i),r.add(this.options.commentPropName,[(m={},m[this.options.textNodeName]=x,m)])}s=v}else if("!D"===t.substr(s+1,2)){var E=a.readDocType(t,s);this.docTypeEntities=E.entities,s=E.i}else if("!["===t.substr(s+1,2)){var b=D(t,"]]>",s,"CDATA is not closed.")-2,N=t.substring(s+9,b);n=this.saveTextToParentTag(n,r,i);var y,T=this.parseTextData(N,r.tagname,i,!0,!1,!0,!0);null==T&&(T=""),this.options.cdataPropName?r.add(this.options.cdataPropName,[(y={},y[this.options.textNodeName]=N,y)]):r.add(this.options.textNodeName,T),s=b+2}else{var w=M(t,s,this.options.removeNSPrefix),I=w.tagName,O=w.rawTagName,S=w.tagExp,A=w.attrExpPresent,P=w.closeIndex;if(this.options.transformTagName){var C=this.options.transformTagName(I);S===I&&(S=C),I=C}if(this.options.strictReservedNames&&(I===this.options.commentPropName||I===this.options.cdataPropName))throw new Error("Invalid tag name: "+I);r&&n&&"!xml"!==r.tagname&&(n=this.saveTextToParentTag(n,r,i,!1));var F=r;F&&-1!==this.options.unpairedTags.indexOf(F.tagname)&&(r=this.tagsNodeStack.pop(),i=i.substring(0,i.lastIndexOf("."))),I!==e.tagname&&(i+=i?"."+I:I);var V=s;if(this.isItStopNode(this.stopNodesExact,this.stopNodesWildcard,i,I)){var _="";if(S.length>0&&S.lastIndexOf("/")===S.length-1)"/"===I[I.length-1]?(I=I.substr(0,I.length-1),i=i.substr(0,i.length-1),S=I):S=S.substr(0,S.length-1),s=w.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(I))s=w.closeIndex;else{var j=this.readStopNodeData(t,O,P+1);if(!j)throw new Error("Unexpected end of "+O);s=j.i,_=j.tagContent}var k=new d(I);I!==S&&A&&(k[":@"]=this.buildAttributesMap(S,i,I)),_&&(_=this.parseTextData(_,I,i,!0,A,!0,!0)),i=i.substr(0,i.lastIndexOf(".")),k.add(this.options.textNodeName,_),this.addChild(r,k,i,V)}else{if(S.length>0&&S.lastIndexOf("/")===S.length-1){if("/"===I[I.length-1]?(I=I.substr(0,I.length-1),i=i.substr(0,i.length-1),S=I):S=S.substr(0,S.length-1),this.options.transformTagName){var L=this.options.transformTagName(I);S===I&&(S=L),I=L}var U=new d(I);I!==S&&A&&(U[":@"]=this.buildAttributesMap(S,i,I)),this.addChild(r,U,i,V),i=i.substr(0,i.lastIndexOf("."))}else{if(-1!==this.options.unpairedTags.indexOf(I)){var R=new d(I);I!==S&&A&&(R[":@"]=this.buildAttributesMap(S,i)),this.addChild(r,R,i,V),i=i.substr(0,i.lastIndexOf(".")),s=w.closeIndex;continue}var Y=new d(I);if(this.tagsNodeStack.length>this.options.maxNestedTags)throw new Error("Maximum nested tags exceeded");this.tagsNodeStack.push(r),I!==S&&A&&(Y[":@"]=this.buildAttributesMap(S,i,I)),this.addChild(r,Y,i,V),r=Y}n="",s=P}}else n+=t[s];return e.child};function S(t,e,r,n){this.options.captureMetaData||(n=void 0);var i=this.options.updateTag(e.tagname,r,e[":@"]);!1===i||("string"==typeof i?(e.tagname=i,t.addChild(e,n)):t.addChild(e,n))}var A=function(t,e,r){if(-1===t.indexOf("&"))return t;var n=this.options.processEntities;if(!n.enabled)return t;if(n.allowedTags&&!n.allowedTags.includes(e))return t;if(n.tagFilter&&!n.tagFilter(e,r))return t;for(var i in this.docTypeEntities){var a=this.docTypeEntities[i],s=t.match(a.regx);if(s){if(this.entityExpansionCount+=s.length,n.maxTotalExpansions&&this.entityExpansionCount>n.maxTotalExpansions)throw new Error("Entity expansion limit exceeded: "+this.entityExpansionCount+" > "+n.maxTotalExpansions);var o=t.length;if(t=t.replace(a.regx,a.val),n.maxExpandedLength&&(this.currentExpandedLength+=t.length-o,this.currentExpandedLength>n.maxExpandedLength))throw new Error("Total expanded content size exceeded: "+this.currentExpandedLength+" > "+n.maxExpandedLength)}}if(-1===t.indexOf("&"))return t;for(var l in this.lastEntities){var u=this.lastEntities[l];t=t.replace(u.regex,u.val)}if(-1===t.indexOf("&"))return t;if(this.options.htmlEntities)for(var d in this.htmlEntities){var f=this.htmlEntities[d];t=t.replace(f.regex,f.val)}return t.replace(this.ampEntity.regex,this.ampEntity.val)};function P(t,e,r,n){return t&&(void 0===n&&(n=0===e.child.length),void 0!==(t=this.parseTextData(t,e.tagname,r,!1,!!e[":@"]&&0!==Object.keys(e[":@"]).length,n))&&""!==t&&e.add(this.options.textNodeName,t),t=""),t}function C(t,e,r,n){return!(!e||!e.has(n))||!(!t||!t.has(r))}function D(t,e,r,n){var i=t.indexOf(e,r);if(-1===i)throw new Error(n);return i+e.length-1}function M(t,e,r,n){void 0===n&&(n=">");var i=function(t,e,r){var n;void 0===r&&(r=">");for(var i="",a=e;a",r,e+" is not closed");if(t.substring(r+2,a).trim()===e&&0===--i)return{tagContent:t.substring(n,r),i:a};r=a}else if("?"===t[r+1])r=D(t,"?>",r+1,"StopNode is not closed.");else if("!--"===t.substr(r+1,3))r=D(t,"--\x3e",r+3,"StopNode is not closed.");else if("!["===t.substr(r+1,2))r=D(t,"]]>",r,"StopNode is not closed.")-2;else{var s=M(t,r,">");s&&((s&&s.tagName)===e&&"/"!==s.tagExp[s.tagExp.length-1]&&i++,r=s.closeIndex)}}function V(t,e,r){if(e&&"string"==typeof t){var n=t.trim();return"true"===n||"false"!==n&&function(t,e={}){if(e=Object.assign({},m,e),!t||"string"!=typeof t)return t;let r=t.trim();if(void 0!==e.skipLike&&e.skipLike.test(r))return t;if("0"===t)return 0;if(e.hex&&c.test(r))return function(t){if(parseInt)return parseInt(t,16);if(Number.parseInt)return Number.parseInt(t,16);if(window&&window.parseInt)return window.parseInt(t,16);throw new Error("parseInt, Number.parseInt, window.parseInt are not supported")}(r);if(r.includes("e")||r.includes("E"))return function(t,e,r){if(!r.eNotation)return t;const n=e.match(x);if(n){let i=n[1]||"";const a=-1===n[3].indexOf("e")?"E":"e",s=n[2],o=i?t[s.length+1]===a:t[s.length]===a;return s.length>1&&o?t:1!==s.length||!n[3].startsWith(`.${a}`)&&n[3][0]!==a?r.leadingZeros&&!o?(e=(n[1]||"")+n[3],Number(e)):t:Number(e)}return t}(t,r,e);{const i=v.exec(r);if(i){const a=i[1]||"",s=i[2];let o=(n=i[3])&&-1!==n.indexOf(".")?("."===(n=n.replace(/0+$/,""))?n="0":"."===n[0]?n="0"+n:"."===n[n.length-1]&&(n=n.substring(0,n.length-1)),n):n;const l=a?"."===t[s.length+1]:"."===t[s.length];if(!e.leadingZeros&&(s.length>1||1===s.length&&!l))return t;{const n=Number(r),i=String(n);if(0===n)return n;if(-1!==i.search(/[eE]/))return e.eNotation?n:t;if(-1!==r.indexOf("."))return"0"===i||i===o||i===`${a}${o}`?n:t;let l=s?o:r;return s?l===i||a+l===i?n:t:l===i||l===a+i?n:t}}return t}var n}(t,r)}return void 0!==t?t:""}function _(t,e,r){var n=Number.parseInt(t,e);return n>=0&&n<=1114111?String.fromCodePoint(n):r+t+";"}var j=d.getMetaDataSymbol();function k(t,e){return L(t,e)}function L(t,e,r){for(var n,i={},a=0;a0&&(i[e.textNodeName]=n):void 0!==n&&(i[e.textNodeName]=n),i}function U(t){for(var e=Object.keys(t),r=0;r5&&"xml"===n)return K("InvalidXml","XML declaration allowed only at the start of the document.",H(t,e));if("?"==t[e]&&">"==t[e+1]){e++;break}}return e}function $(t,e){if(t.length>e+5&&"-"===t[e+1]&&"-"===t[e+2]){for(e+=3;e"===t[e+2]){e+=2;break}}else if(t.length>e+8&&"D"===t[e+1]&&"O"===t[e+2]&&"C"===t[e+3]&&"T"===t[e+4]&&"Y"===t[e+5]&&"P"===t[e+6]&&"E"===t[e+7]){var r=1;for(e+=8;e"===t[e]&&0===--r)break}else if(t.length>e+9&&"["===t[e+1]&&"C"===t[e+2]&&"D"===t[e+3]&&"A"===t[e+4]&&"T"===t[e+5]&&"A"===t[e+6]&&"["===t[e+7])for(e+=8;e"===t[e+2]){e+=2;break}return e}function W(t,e){for(var r="",n="",i=!1;e"===t[e]&&""===n){i=!0;break}r+=t[e]}return""===n&&{value:r,index:e,tagClosed:i}}var Z=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function q(t,e){for(var r=o(t,Z),n={},i=0;i"!==t[a]&&" "!==t[a]&&"\t"!==t[a]&&"\n"!==t[a]&&"\r"!==t[a];a++)l+=t[a];if("/"===(l=l.trim())[l.length-1]&&(l=l.substring(0,l.length-1),a--),!J(l))return K("InvalidTag",0===l.trim().length?"Invalid space after '<'.":"Tag '"+l+"' is an invalid name.",H(t,a));var u=W(t,a);if(!1===u)return K("InvalidAttr","Attributes for '"+l+"' have open quote.",H(t,a));var d=u.value;if(a=u.index,"/"===d[d.length-1]){var f=a-d.length,h=q(d=d.substring(0,d.length-1),e);if(!0!==h)return K(h.err.code,h.err.msg,H(t,f+h.err.line));n=!0}else if(o){if(!u.tagClosed)return K("InvalidTag","Closing tag '"+l+"' doesn't have proper closing.",H(t,a));if(d.trim().length>0)return K("InvalidTag","Closing tag '"+l+"' can't have attributes or invalid starting.",H(t,s));if(0===r.length)return K("InvalidTag","Closing tag '"+l+"' has not been opened.",H(t,s));var p=r.pop();if(l!==p.tagName){var g=H(t,p.tagStartPos);return K("InvalidTag","Expected closing tag '"+p.tagName+"' (opened in line "+g.line+", col "+g.col+") instead of closing tag '"+l+"'.",H(t,s))}0==r.length&&(i=!0)}else{var c=q(d,e);if(!0!==c)return K(c.err.code,c.err.msg,H(t,a-d.length+c.err.line));if(!0===i)return K("InvalidXml","Multiple possible root nodes found.",H(t,a));-1!==e.unpairedTags.indexOf(l)||r.push({tagName:l,tagStartPos:s}),n=!0}for(a++;a0)||K("InvalidXml","Invalid '"+JSON.stringify(r.map(function(t){return t.tagName}),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):K("InvalidXml","Start tag expected.",1)}(t,e);if(!0!==r)throw Error(r.err.msg+":"+r.err.line+":"+r.err.col)}var n=new b(this.options);n.addExternalEntities(this.externalEntities);var i=n.parseXml(t);return this.options.preserveOrder||void 0===i?i:k(i,this.options)},e.addEntity=function(t,e){if(-1!==e.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==t.indexOf("&")||-1!==t.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for ' '");if("&"===e)throw new Error("An entity with value '&' is not permitted");this.externalEntities[t]=e},t.getMetaDataSymbol=function(){return d.getMetaDataSymbol()},t}();return e})()); +//# sourceMappingURL=fxparser.min.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/lib/fxparser.min.js.map b/food-ordering-app/server/node_modules/fast-xml-parser/lib/fxparser.min.js.map new file mode 100644 index 000000000..ddcee6ebb --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/lib/fxparser.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"./lib/fxparser.min.js","mappings":"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","sources":["webpack://XMLParser/webpack/universalModuleDefinition","webpack://XMLParser/webpack/bootstrap","webpack://XMLParser/webpack/runtime/define property getters","webpack://XMLParser/webpack/runtime/hasOwnProperty shorthand","webpack://XMLParser/webpack/runtime/make namespace object","webpack://XMLParser/./src/xmlparser/OptionsBuilder.js","webpack://XMLParser/./src/util.js","webpack://XMLParser/./src/xmlparser/xmlNode.js","webpack://XMLParser/./src/xmlparser/DocTypeReader.js","webpack://XMLParser/./node_modules/strnum/strnum.js","webpack://XMLParser/./src/xmlparser/OrderedObjParser.js","webpack://XMLParser/./src/ignoreAttributes.js","webpack://XMLParser/./src/xmlparser/node2json.js","webpack://XMLParser/./src/validator.js","webpack://XMLParser/./src/xmlparser/XMLParser.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"XMLParser\"] = factory();\n\telse\n\t\troot[\"XMLParser\"] = factory();\n})(this, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export const defaultOptions = {\n preserveOrder: false,\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n removeNSPrefix: false, // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false, //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true, //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function (tagName, val) {\n return val;\n },\n attributeValueProcessor: function (attrName, val) {\n return val;\n },\n stopNodes: [], //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function (tagName, jPath, attrs) {\n return tagName\n },\n // skipEmptyListItem: false\n captureMetaData: false,\n maxNestedTags: 100,\n strictReservedNames: true,\n};\n\n/**\n * Normalizes processEntities option for backward compatibility\n * @param {boolean|object} value \n * @returns {object} Always returns normalized object\n */\nfunction normalizeProcessEntities(value) {\n // Boolean backward compatibility\n if (typeof value === 'boolean') {\n return {\n enabled: value, // true or false\n maxEntitySize: 10000,\n maxExpansionDepth: 10,\n maxTotalExpansions: 1000,\n maxExpandedLength: 100000,\n allowedTags: null,\n tagFilter: null\n };\n }\n\n // Object config - merge with defaults\n if (typeof value === 'object' && value !== null) {\n return {\n enabled: value.enabled !== false, // default true if not specified\n maxEntitySize: value.maxEntitySize ?? 10000,\n maxExpansionDepth: value.maxExpansionDepth ?? 10,\n maxTotalExpansions: value.maxTotalExpansions ?? 1000,\n maxExpandedLength: value.maxExpandedLength ?? 100000,\n allowedTags: value.allowedTags ?? null,\n tagFilter: value.tagFilter ?? null\n };\n }\n\n // Default to enabled with limits\n return normalizeProcessEntities(true);\n}\n\nexport const buildOptions = function (options) {\n const built = Object.assign({}, defaultOptions, options);\n\n // Always normalize processEntities for backward compatibility and validation\n built.processEntities = normalizeProcessEntities(built.processEntities);\n //console.debug(built.processEntities)\n return built;\n};","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nexport const nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*';\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nexport function getAllMatches(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n}\n\nexport const isName = function (string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === 'undefined');\n}\n\nexport function isExist(v) {\n return typeof v !== 'undefined';\n}\n\nexport function isEmptyObject(obj) {\n return Object.keys(obj).length === 0;\n}\n\nexport function getValue(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return '';\n }\n}\n","'use strict';\n\nlet METADATA_SYMBOL;\n\nif (typeof Symbol !== \"function\") {\n METADATA_SYMBOL = \"@@xmlMetadata\";\n} else {\n METADATA_SYMBOL = Symbol(\"XML Node Metadata\");\n}\n\nexport default class XmlNode {\n constructor(tagname) {\n this.tagname = tagname;\n this.child = []; //nested tags, text, cdata, comments in order\n this[\":@\"] = Object.create(null); //attributes map\n }\n add(key, val) {\n // this.child.push( {name : key, val: val, isCdata: isCdata });\n if (key === \"__proto__\") key = \"#__proto__\";\n this.child.push({ [key]: val });\n }\n addChild(node, startIndex) {\n if (node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if (node[\":@\"] && Object.keys(node[\":@\"]).length > 0) {\n this.child.push({ [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n } else {\n this.child.push({ [node.tagname]: node.child });\n }\n // if requested, add the startIndex\n if (startIndex !== undefined) {\n // Note: for now we just overwrite the metadata. If we had more complex metadata,\n // we might need to do an object append here: metadata = { ...metadata, startIndex }\n this.child[this.child.length - 1][METADATA_SYMBOL] = { startIndex };\n }\n }\n /** symbol used for metadata */\n static getMetaDataSymbol() {\n return METADATA_SYMBOL;\n }\n}\n","import { isName } from '../util.js';\n\nexport default class DocTypeReader {\n constructor(options) {\n this.suppressValidationErr = !options;\n this.options = options;\n }\n\n readDocType(xmlData, i) {\n\n const entities = Object.create(null);\n if (xmlData[i + 3] === 'O' &&\n xmlData[i + 4] === 'C' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'Y' &&\n xmlData[i + 7] === 'P' &&\n xmlData[i + 8] === 'E') {\n i = i + 9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === '<' && !comment) { //Determine the tag type\n if (hasBody && hasSeq(xmlData, \"!ENTITY\", i)) {\n i += 7;\n let entityName, val;\n [entityName, val, i] = this.readEntityExp(xmlData, i + 1, this.suppressValidationErr);\n if (val.indexOf(\"&\") === -1) { //Parameter entities are not supported\n const escaped = entityName.replace(/[.\\-+*:]/g, '\\\\.');\n entities[entityName] = {\n regx: RegExp(`&${escaped};`, \"g\"),\n val: val\n };\n }\n }\n else if (hasBody && hasSeq(xmlData, \"!ELEMENT\", i)) {\n i += 8;//Not supported\n const { index } = this.readElementExp(xmlData, i + 1);\n i = index;\n } else if (hasBody && hasSeq(xmlData, \"!ATTLIST\", i)) {\n i += 8;//Not supported\n // const {index} = this.readAttlistExp(xmlData,i+1);\n // i = index;\n } else if (hasBody && hasSeq(xmlData, \"!NOTATION\", i)) {\n i += 9;//Not supported\n const { index } = this.readNotationExp(xmlData, i + 1, this.suppressValidationErr);\n i = index;\n } else if (hasSeq(xmlData, \"!--\", i)) comment = true;\n else throw new Error(`Invalid DOCTYPE`);\n\n angleBracketsCount++;\n exp = \"\";\n } else if (xmlData[i] === '>') { //Read tag content\n if (comment) {\n if (xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\") {\n comment = false;\n angleBracketsCount--;\n }\n } else {\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n } else if (xmlData[i] === '[') {\n hasBody = true;\n } else {\n exp += xmlData[i];\n }\n }\n if (angleBracketsCount !== 0) {\n throw new Error(`Unclosed DOCTYPE`);\n }\n } else {\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return { entities, i };\n }\n readEntityExp(xmlData, i) {\n //External entities are not supported\n // \n\n //Parameter entities are not supported\n // \n\n //Internal entities are supported\n // \n\n // Skip leading whitespace after this.options.maxEntitySize) {\n throw new Error(\n `Entity \"${entityName}\" size (${entityValue.length}) exceeds maximum allowed size (${this.options.maxEntitySize})`\n );\n }\n\n i--;\n return [entityName, entityValue, i];\n }\n\n readNotationExp(xmlData, i) {\n // Skip leading whitespace after \n // \n // \n // \n // \n\n // Skip leading whitespace after {\n while (index < data.length && /\\s/.test(data[index])) {\n index++;\n }\n return index;\n};\n\n\n\nfunction hasSeq(data, seq, i) {\n for (let j = 0; j < seq.length; j++) {\n if (seq[j] !== data[i + j + 1]) return false;\n }\n return true;\n}\n\nfunction validateEntityName(name) {\n if (isName(name))\n return name;\n else\n throw new Error(`Invalid entity name ${name}`);\n}","const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)([0-9]*(\\.[0-9]*)?)$/;\n// const octRegex = /^0x[a-z0-9]+/;\n// const binRegex = /0x[a-z0-9]+/;\n\n \nconst consider = {\n hex : true,\n // oct: false,\n leadingZeros: true,\n decimalPoint: \"\\.\",\n eNotation: true,\n //skipLike: /regex/\n};\n\nexport default function toNumber(str, options = {}){\n options = Object.assign({}, consider, options );\n if(!str || typeof str !== \"string\" ) return str;\n \n let trimmedStr = str.trim();\n \n if(options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str;\n else if(str===\"0\") return 0;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return parse_int(trimmedStr, 16);\n // }else if (options.oct && octRegex.test(str)) {\n // return Number.parseInt(val, 8);\n }else if (trimmedStr.includes('e') || trimmedStr.includes('E')) { //eNotation\n return resolveEnotation(str,trimmedStr,options);\n // }else if (options.parseBin && binRegex.test(str)) {\n // return Number.parseInt(val, 2);\n }else{\n //separate negative sign, leading zeros, and rest number\n const match = numRegex.exec(trimmedStr);\n // +00.123 => [ , '+', '00', '.123', ..\n if(match){\n const sign = match[1] || \"\";\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros\n const decimalAdjacentToLeadingZeros = sign ? // 0., -00., 000.\n str[leadingZeros.length+1] === \".\" \n : str[leadingZeros.length] === \".\";\n\n //trim ending zeros for floating number\n if(!options.leadingZeros //leading zeros are not allowed\n && (leadingZeros.length > 1 \n || (leadingZeros.length === 1 && !decimalAdjacentToLeadingZeros))){\n // 00, 00.3, +03.24, 03, 03.24\n return str;\n }\n else{//no leading zeros or leading zeros are allowed\n const num = Number(trimmedStr);\n const parsedStr = String(num);\n\n if( num === 0) return num;\n if(parsedStr.search(/[eE]/) !== -1){ //given number is long and parsed to eNotation\n if(options.eNotation) return num;\n else return str;\n }else if(trimmedStr.indexOf(\".\") !== -1){ //floating number\n if(parsedStr === \"0\") return num; //0.0\n else if(parsedStr === numTrimmedByZeros) return num; //0.456. 0.79000\n else if( parsedStr === `${sign}${numTrimmedByZeros}`) return num;\n else return str;\n }\n \n let n = leadingZeros? numTrimmedByZeros : trimmedStr;\n if(leadingZeros){\n // -009 => -9\n return (n === parsedStr) || (sign+n === parsedStr) ? num : str\n }else {\n // +9\n return (n === parsedStr) || (n === sign+parsedStr) ? num : str\n }\n }\n }else{ //non-numeric string\n return str;\n }\n }\n}\n\nconst eNotationRegx = /^([-+])?(0*)(\\d*(\\.\\d*)?[eE][-\\+]?\\d+)$/;\nfunction resolveEnotation(str,trimmedStr,options){\n if(!options.eNotation) return str;\n const notation = trimmedStr.match(eNotationRegx); \n if(notation){\n let sign = notation[1] || \"\";\n const eChar = notation[3].indexOf(\"e\") === -1 ? \"E\" : \"e\";\n const leadingZeros = notation[2];\n const eAdjacentToLeadingZeros = sign ? // 0E.\n str[leadingZeros.length+1] === eChar \n : str[leadingZeros.length] === eChar;\n\n if(leadingZeros.length > 1 && eAdjacentToLeadingZeros) return str;\n else if(leadingZeros.length === 1 \n && (notation[3].startsWith(`.${eChar}`) || notation[3][0] === eChar)){\n return Number(trimmedStr);\n }else if(options.leadingZeros && !eAdjacentToLeadingZeros){ //accept with leading zeros\n //remove leading 0s\n trimmedStr = (notation[1] || \"\") + notation[3];\n return Number(trimmedStr);\n }else return str;\n }else{\n return str;\n }\n}\n\n/**\n * \n * @param {string} numStr without leading zeros\n * @returns \n */\nfunction trimZeros(numStr){\n if(numStr && numStr.indexOf(\".\") !== -1){//float\n numStr = numStr.replace(/0+$/, \"\"); //remove ending zeros\n if(numStr === \".\") numStr = \"0\";\n else if(numStr[0] === \".\") numStr = \"0\"+numStr;\n else if(numStr[numStr.length-1] === \".\") numStr = numStr.substring(0,numStr.length-1);\n return numStr;\n }\n return numStr;\n}\n\nfunction parse_int(numStr, base){\n //polyfill\n if(parseInt) return parseInt(numStr, base);\n else if(Number.parseInt) return Number.parseInt(numStr, base);\n else if(window && window.parseInt) return window.parseInt(numStr, base);\n else throw new Error(\"parseInt, Number.parseInt, window.parseInt are not supported\")\n}","'use strict';\n///@ts-check\n\nimport { getAllMatches, isExist } from '../util.js';\nimport xmlNode from './xmlNode.js';\nimport DocTypeReader from './DocTypeReader.js';\nimport toNumber from \"strnum\";\nimport getIgnoreAttributesFn from \"../ignoreAttributes.js\";\n\n// const regx =\n// '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n// .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\nexport default class OrderedObjParser {\n constructor(options) {\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\": { regex: /&(apos|#39|#x27);/g, val: \"'\" },\n \"gt\": { regex: /&(gt|#62|#x3E);/g, val: \">\" },\n \"lt\": { regex: /&(lt|#60|#x3C);/g, val: \"<\" },\n \"quot\": { regex: /&(quot|#34|#x22);/g, val: \"\\\"\" },\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: \"&\" };\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\": { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\": { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\": { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\": { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\": { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\": { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\": { regex: /&(inr|#8377);/g, val: \"₹\" },\n \"num_dec\": { regex: /&#([0-9]{1,7});/g, val: (_, str) => fromCodePoint(str, 10, \"&#\") },\n \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (_, str) => fromCodePoint(str, 16, \"&#x\") },\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n this.entityExpansionCount = 0;\n this.currentExpandedLength = 0;\n\n if (this.options.stopNodes && this.options.stopNodes.length > 0) {\n this.stopNodesExact = new Set();\n this.stopNodesWildcard = new Set();\n for (let i = 0; i < this.options.stopNodes.length; i++) {\n const stopNodeExp = this.options.stopNodes[i];\n if (typeof stopNodeExp !== 'string') continue;\n if (stopNodeExp.startsWith(\"*.\")) {\n this.stopNodesWildcard.add(stopNodeExp.substring(2));\n } else {\n this.stopNodesExact.add(stopNodeExp);\n }\n }\n }\n }\n\n}\n\nfunction addExternalEntities(externalEntities) {\n const entKeys = Object.keys(externalEntities);\n for (let i = 0; i < entKeys.length; i++) {\n const ent = entKeys[i];\n const escaped = ent.replace(/[.\\-+*:]/g, '\\\\.');\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\" + escaped + \";\", \"g\"),\n val: externalEntities[ent]\n }\n }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string} jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val !== undefined) {\n if (this.options.trimValues && !dontTrim) {\n val = val.trim();\n }\n if (val.length > 0) {\n if (!escapeEntities) val = this.replaceEntitiesValue(val, tagName, jPath);\n\n const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n if (newval === null || newval === undefined) {\n //don't parse\n return val;\n } else if (typeof newval !== typeof val || newval !== val) {\n //overwrite\n return newval;\n } else if (this.options.trimValues) {\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n const trimmedVal = val.trim();\n if (trimmedVal === val) {\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n return val;\n }\n }\n }\n }\n}\n\nfunction resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(':');\n const prefix = tagname.charAt(0) === '/' ? '/' : '';\n if (tags[0] === 'xmlns') {\n return '';\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n if (this.options.ignoreAttributes !== true && typeof attrStr === 'string') {\n // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n //attrStr = attrStr || attrStr.trim();\n\n const matches = getAllMatches(attrStr, attrsRegx);\n const len = matches.length; //don't make it inline\n const attrs = {};\n for (let i = 0; i < len; i++) {\n const attrName = this.resolveNameSpace(matches[i][1]);\n if (this.ignoreAttributesFn(attrName, jPath)) {\n continue\n }\n let oldVal = matches[i][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if (aName === \"__proto__\") aName = \"#__proto__\";\n\n if (oldVal !== undefined) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal, tagName, jPath);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if (newVal === null || newVal === undefined) {\n //don't parse\n attrs[aName] = oldVal;\n } else if (typeof newVal !== typeof oldVal || newVal !== oldVal) {\n //overwrite\n attrs[aName] = newVal;\n } else {\n //parse\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs\n }\n}\n\nconst parseXml = function (xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n const xmlObj = new xmlNode('!xml');\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n\n // Reset entity expansion counters for this document\n this.entityExpansionCount = 0;\n this.currentExpandedLength = 0;\n\n const docTypeReader = new DocTypeReader(this.options.processEntities);\n for (let i = 0; i < xmlData.length; i++) {//for each char in XML data\n const ch = xmlData[i];\n if (ch === '<') {\n // const nextIndex = i+1;\n // const _2ndChar = xmlData[nextIndex];\n if (xmlData[i + 1] === '/') {//Closing Tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n let tagName = xmlData.substring(i + 2, closeIndex).trim();\n\n if (this.options.removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n }\n }\n\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n if (currentNode) {\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n\n //check if last tag of nested tag was unpaired tag\n const lastTagName = jPath.substring(jPath.lastIndexOf(\".\") + 1);\n if (tagName && this.options.unpairedTags.indexOf(tagName) !== -1) {\n throw new Error(`Unpaired tag can not be used as closing tag: `);\n }\n let propIndex = 0\n if (lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1) {\n propIndex = jPath.lastIndexOf('.', jPath.lastIndexOf('.') - 1)\n this.tagsNodeStack.pop();\n } else {\n propIndex = jPath.lastIndexOf(\".\");\n }\n jPath = jPath.substring(0, propIndex);\n\n currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope\n textData = \"\";\n i = closeIndex;\n } else if (xmlData[i + 1] === '?') {\n\n let tagData = readTagExp(xmlData, i, false, \"?>\");\n if (!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if ((this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags) {\n //do nothing\n } else {\n\n const childNode = new xmlNode(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n\n if (tagData.tagName !== tagData.tagExp && tagData.attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n }\n this.addChild(currentNode, childNode, jPath, i);\n }\n\n\n i = tagData.closeIndex + 1;\n } else if (xmlData.substr(i + 1, 3) === '!--') {\n const endIndex = findClosingIndex(xmlData, \"-->\", i + 4, \"Comment is not closed.\")\n if (this.options.commentPropName) {\n const comment = xmlData.substring(i + 4, endIndex - 2);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n currentNode.add(this.options.commentPropName, [{ [this.options.textNodeName]: comment }]);\n }\n i = endIndex;\n } else if (xmlData.substr(i + 1, 2) === '!D') {\n const result = docTypeReader.readDocType(xmlData, i);\n this.docTypeEntities = result.entities;\n i = result.i;\n } else if (xmlData.substr(i + 1, 2) === '![') {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i + 9, closeIndex);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n if (val == undefined) val = \"\";\n\n //cdata should be set even if it is 0 length string\n if (this.options.cdataPropName) {\n currentNode.add(this.options.cdataPropName, [{ [this.options.textNodeName]: tagExp }]);\n } else {\n currentNode.add(this.options.textNodeName, val);\n }\n\n i = closeIndex + 2;\n } else {//Opening tag\n let result = readTagExp(xmlData, i, this.options.removeNSPrefix);\n let tagName = result.tagName;\n const rawTagName = result.rawTagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n\n if (this.options.transformTagName) {\n //console.log(tagExp, tagName)\n const newTagName = this.options.transformTagName(tagName);\n if (tagExp === tagName) {\n tagExp = newTagName\n }\n tagName = newTagName;\n }\n\n if (this.options.strictReservedNames &&\n (tagName === this.options.commentPropName\n || tagName === this.options.cdataPropName\n )) {\n throw new Error(`Invalid tag name: ${tagName}`);\n }\n\n //save text as child node\n if (currentNode && textData) {\n if (currentNode.tagname !== '!xml') {\n //when nested tag is found\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n\n //check if last tag was unpaired tag\n const lastTag = currentNode;\n if (lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1) {\n currentNode = this.tagsNodeStack.pop();\n jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n }\n if (tagName !== xmlObj.tagname) {\n jPath += jPath ? \".\" + tagName : tagName;\n }\n const startIndex = i;\n if (this.isItStopNode(this.stopNodesExact, this.stopNodesWildcard, jPath, tagName)) {\n let tagContent = \"\";\n //self-closing tag\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") { //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n i = result.closeIndex;\n }\n //unpaired tag\n else if (this.options.unpairedTags.indexOf(tagName) !== -1) {\n\n i = result.closeIndex;\n }\n //normal tag\n else {\n //read until closing tag is found\n const result = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n if (!result) throw new Error(`Unexpected end of ${rawTagName}`);\n i = result.i;\n tagContent = result.tagContent;\n }\n\n const childNode = new xmlNode(tagName);\n\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n if (tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n\n this.addChild(currentNode, childNode, jPath, startIndex);\n } else {\n //selfClosing tag\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") { //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n\n if (this.options.transformTagName) {\n const newTagName = this.options.transformTagName(tagName);\n if (tagExp === tagName) {\n tagExp = newTagName\n }\n tagName = newTagName;\n }\n\n const childNode = new xmlNode(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath, startIndex);\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n }\n else if(this.options.unpairedTags.indexOf(tagName) !== -1){//unpaired tag\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath);\n }\n this.addChild(currentNode, childNode, jPath, startIndex);\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n i = result.closeIndex;\n // Continue to next iteration without changing currentNode\n continue;\n }\n //opening tag\n else {\n const childNode = new xmlNode(tagName);\n if (this.tagsNodeStack.length > this.options.maxNestedTags) {\n throw new Error(\"Maximum nested tags exceeded\");\n }\n this.tagsNodeStack.push(currentNode);\n\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath, startIndex);\n currentNode = childNode;\n }\n textData = \"\";\n i = closeIndex;\n }\n }\n } else {\n textData += xmlData[i];\n }\n }\n return xmlObj.child;\n}\n\nfunction addChild(currentNode, childNode, jPath, startIndex) {\n // unset startIndex if not requested\n if (!this.options.captureMetaData) startIndex = undefined;\n const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"])\n if (result === false) {\n //do nothing\n } else if (typeof result === \"string\") {\n childNode.tagname = result\n currentNode.addChild(childNode, startIndex);\n } else {\n currentNode.addChild(childNode, startIndex);\n }\n}\n\nconst replaceEntitiesValue = function (val, tagName, jPath) {\n // Performance optimization: Early return if no entities to replace\n if (val.indexOf('&') === -1) {\n return val;\n }\n\n const entityConfig = this.options.processEntities;\n\n if (!entityConfig.enabled) {\n return val;\n }\n\n // Check tag-specific filtering\n if (entityConfig.allowedTags) {\n if (!entityConfig.allowedTags.includes(tagName)) {\n return val; // Skip entity replacement for current tag as not set\n }\n }\n\n if (entityConfig.tagFilter) {\n if (!entityConfig.tagFilter(tagName, jPath)) {\n return val; // Skip based on custom filter\n }\n }\n\n // Replace DOCTYPE entities\n for (let entityName in this.docTypeEntities) {\n const entity = this.docTypeEntities[entityName];\n const matches = val.match(entity.regx);\n\n if (matches) {\n // Track expansions\n this.entityExpansionCount += matches.length;\n\n // Check expansion limit\n if (entityConfig.maxTotalExpansions &&\n this.entityExpansionCount > entityConfig.maxTotalExpansions) {\n throw new Error(\n `Entity expansion limit exceeded: ${this.entityExpansionCount} > ${entityConfig.maxTotalExpansions}`\n );\n }\n\n // Store length before replacement\n const lengthBefore = val.length;\n val = val.replace(entity.regx, entity.val);\n\n // Check expanded length immediately after replacement\n if (entityConfig.maxExpandedLength) {\n this.currentExpandedLength += (val.length - lengthBefore);\n\n if (this.currentExpandedLength > entityConfig.maxExpandedLength) {\n throw new Error(\n `Total expanded content size exceeded: ${this.currentExpandedLength} > ${entityConfig.maxExpandedLength}`\n );\n }\n }\n }\n }\n if (val.indexOf('&') === -1) return val; // Early exit\n\n // Replace standard entities\n for (let entityName in this.lastEntities) {\n const entity = this.lastEntities[entityName];\n val = val.replace(entity.regex, entity.val);\n }\n if (val.indexOf('&') === -1) return val; // Early exit\n\n // Replace HTML entities if enabled\n if (this.options.htmlEntities) {\n for (let entityName in this.htmlEntities) {\n const entity = this.htmlEntities[entityName];\n val = val.replace(entity.regex, entity.val);\n }\n }\n\n // Replace ampersand entity last\n val = val.replace(this.ampEntity.regex, this.ampEntity.val);\n\n return val;\n}\n\n\nfunction saveTextToParentTag(textData, parentNode, jPath, isLeafNode) {\n if (textData) { //store previously collected data as textNode\n if (isLeafNode === undefined) isLeafNode = parentNode.child.length === 0\n\n textData = this.parseTextData(textData,\n parentNode.tagname,\n jPath,\n false,\n parentNode[\":@\"] ? Object.keys(parentNode[\":@\"]).length !== 0 : false,\n isLeafNode);\n\n if (textData !== undefined && textData !== \"\")\n parentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * @param {Set} stopNodesExact\n * @param {Set} stopNodesWildcard\n * @param {string} jPath\n * @param {string} currentTagName\n */\nfunction isItStopNode(stopNodesExact, stopNodesWildcard, jPath, currentTagName) {\n if (stopNodesWildcard && stopNodesWildcard.has(currentTagName)) return true;\n if (stopNodesExact && stopNodesExact.has(jPath)) return true;\n return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\") {\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";//reset\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if (closingChar[1]) {\n if (xmlData[index + 1] === closingChar[1]) {\n return {\n data: tagExp,\n index: index\n }\n }\n } else {\n return {\n data: tagExp,\n index: index\n }\n }\n } else if (ch === '\\t') {\n ch = \" \"\n }\n tagExp += ch;\n }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg) {\n const closingIndex = xmlData.indexOf(str, i);\n if (closingIndex === -1) {\n throw new Error(errMsg)\n } else {\n return closingIndex + str.length - 1;\n }\n}\n\nfunction readTagExp(xmlData, i, removeNSPrefix, closingChar = \">\") {\n const result = tagExpWithClosingIndex(xmlData, i + 1, closingChar);\n if (!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if (separatorIndex !== -1) {//separate tag name and attributes expression\n tagName = tagExp.substring(0, separatorIndex);\n tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n }\n\n const rawTagName = tagName;\n if (removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n\n return {\n tagName: tagName,\n tagExp: tagExp,\n closeIndex: closeIndex,\n attrExpPresent: attrExpPresent,\n rawTagName: rawTagName,\n }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i) {\n const startIndex = i;\n // Starting at 1 since we already have an open tag\n let openTagCount = 1;\n\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === \"<\") {\n if (xmlData[i + 1] === \"/\") {//close tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i + 2, closeIndex).trim();\n if (closeTagName === tagName) {\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i),\n i: closeIndex\n }\n }\n }\n i = closeIndex;\n } else if (xmlData[i + 1] === '?') {\n const closeIndex = findClosingIndex(xmlData, \"?>\", i + 1, \"StopNode is not closed.\")\n i = closeIndex;\n } else if (xmlData.substr(i + 1, 3) === '!--') {\n const closeIndex = findClosingIndex(xmlData, \"-->\", i + 3, \"StopNode is not closed.\")\n i = closeIndex;\n } else if (xmlData.substr(i + 1, 2) === '![') {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n i = closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i, '>')\n\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length - 1] !== \"/\") {\n openTagCount++;\n }\n i = tagData.closeIndex;\n }\n }\n }\n }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n if (shouldParse && typeof val === 'string') {\n //console.log(options)\n const newval = val.trim();\n if (newval === 'true') return true;\n else if (newval === 'false') return false;\n else return toNumber(val, options);\n } else {\n if (isExist(val)) {\n return val;\n } else {\n return '';\n }\n }\n}\n\nfunction fromCodePoint(str, base, prefix) {\n const codePoint = Number.parseInt(str, base);\n\n if (codePoint >= 0 && codePoint <= 0x10FFFF) {\n return String.fromCodePoint(codePoint);\n } else {\n return prefix + str + \";\";\n }\n}","export default function getIgnoreAttributesFn(ignoreAttributes) {\n if (typeof ignoreAttributes === 'function') {\n return ignoreAttributes\n }\n if (Array.isArray(ignoreAttributes)) {\n return (attrName) => {\n for (const pattern of ignoreAttributes) {\n if (typeof pattern === 'string' && attrName === pattern) {\n return true\n }\n if (pattern instanceof RegExp && pattern.test(attrName)) {\n return true\n }\n }\n }\n }\n return () => false\n}","'use strict';\n\nimport XmlNode from './xmlNode.js';\n\nconst METADATA_SYMBOL = XmlNode.getMetaDataSymbol();\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @returns \n */\nexport default function prettify(node, options) {\n return compress(node, options);\n}\n\n/**\n * \n * @param {array} arr \n * @param {object} options \n * @param {string} jPath \n * @returns object\n */\nfunction compress(arr, options, jPath) {\n let text;\n const compressedObj = {}; //This is intended to be a plain object\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const property = propName(tagObj);\n let newJpath = \"\";\n if (jPath === undefined) newJpath = property;\n else newJpath = jPath + \".\" + property;\n\n if (property === options.textNodeName) {\n if (text === undefined) text = tagObj[property];\n else text += \"\" + tagObj[property];\n } else if (property === undefined) {\n continue;\n } else if (tagObj[property]) {\n\n let val = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val, options);\n\n if (tagObj[\":@\"]) {\n assignAttributes(val, tagObj[\":@\"], newJpath, options);\n } else if (Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode) {\n val = val[options.textNodeName];\n } else if (Object.keys(val).length === 0) {\n if (options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n else val = \"\";\n }\n\n if (tagObj[METADATA_SYMBOL] !== undefined && typeof val === \"object\" && val !== null) {\n val[METADATA_SYMBOL] = tagObj[METADATA_SYMBOL]; // copy over metadata\n }\n\n\n if (compressedObj[property] !== undefined && Object.prototype.hasOwnProperty.call(compressedObj, property)) {\n if (!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [compressedObj[property]];\n }\n compressedObj[property].push(val);\n } else {\n //TODO: if a node is not an array, then check if it should be an array\n //also determine if it is a leaf node\n if (options.isArray(property, newJpath, isLeaf)) {\n compressedObj[property] = [val];\n } else {\n compressedObj[property] = val;\n }\n }\n }\n\n }\n // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n if (typeof text === \"string\") {\n if (text.length > 0) compressedObj[options.textNodeName] = text;\n } else if (text !== undefined) compressedObj[options.textNodeName] = text;\n\n\n return compressedObj;\n}\n\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (key !== \":@\") return key;\n }\n}\n\nfunction assignAttributes(obj, attrMap, jpath, options) {\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n const atrrName = keys[i];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [attrMap[atrrName]];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n}\n\nfunction isLeafTag(obj, options) {\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n\n if (propCount === 0) {\n return true;\n }\n\n if (\n propCount === 1 &&\n (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)\n ) {\n return true;\n }\n\n return false;\n}\n","'use strict';\n\nimport { getAllMatches, isName } from './util.js';\n\nconst defaultOptions = {\n allowBooleanAttributes: false, //A tag can have attributes without any value\n unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexport function validate(xmlData, options) {\n options = Object.assign({}, defaultOptions, options);\n\n //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n const tags = [];\n let tagFound = false;\n\n //indicates that the root tag has been closed (aka. depth 0 has been reached)\n let reachedRoot = false;\n\n if (xmlData[0] === '\\ufeff') {\n // check for byte order mark (BOM)\n xmlData = xmlData.substr(1);\n }\n\n for (let i = 0; i < xmlData.length; i++) {\n\n if (xmlData[i] === '<' && xmlData[i + 1] === '?') {\n i += 2;\n i = readPI(xmlData, i);\n if (i.err) return i;\n } else if (xmlData[i] === '<') {\n //starting of tag\n //read until you reach to '>' avoiding any '>' in attribute value\n let tagStartPos = i;\n i++;\n\n if (xmlData[i] === '!') {\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i] === '/') {\n //closing tag\n closingTag = true;\n i++;\n }\n //read tagname\n let tagName = '';\n for (; i < xmlData.length &&\n xmlData[i] !== '>' &&\n xmlData[i] !== ' ' &&\n xmlData[i] !== '\\t' &&\n xmlData[i] !== '\\n' &&\n xmlData[i] !== '\\r'; i++\n ) {\n tagName += xmlData[i];\n }\n tagName = tagName.trim();\n //console.log(tagName);\n\n if (tagName[tagName.length - 1] === '/') {\n //self closing tag without attributes\n tagName = tagName.substring(0, tagName.length - 1);\n //continue;\n i--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\" + tagName + \"' is an invalid name.\";\n }\n return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n }\n\n const result = readAttributeStr(xmlData, i);\n if (result === false) {\n return getErrorObject('InvalidAttr', \"Attributes for '\" + tagName + \"' have open quote.\", getLineNumberForPosition(xmlData, i));\n }\n let attrStr = result.value;\n i = result.index;\n\n if (attrStr[attrStr.length - 1] === '/') {\n //self closing tag\n const attrStrStart = i - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n //continue; //text may presents after self closing tag\n } else {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject('InvalidTag', \"Closing tag '\" + tagName + \"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\" + tagName + \"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else if (tags.length === 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\" + tagName + \"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject('InvalidTag',\n \"Expected closing tag '\" + otg.tagName + \"' (opened in line \" + openPos.line + \", col \" + openPos.col + \") instead of closing tag '\" + tagName + \"'.\",\n getLineNumberForPosition(xmlData, tagStartPos));\n }\n\n //when there are no more tags, we reached the root level.\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n }\n\n //if the root level has been reached before ...\n if (reachedRoot === true) {\n return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n } else if (options.unpairedTags.indexOf(tagName) !== -1) {\n //don't push into stack\n } else {\n tags.push({ tagName, tagStartPos });\n }\n tagFound = true;\n }\n\n //skip tag text value\n //It may include comments and CDATA value\n for (i++; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n if (xmlData[i + 1] === '!') {\n //comment or CADATA\n i++;\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else if (xmlData[i + 1] === '?') {\n i = readPI(xmlData, ++i);\n if (i.err) return i;\n } else {\n break;\n }\n } else if (xmlData[i] === '&') {\n const afterAmp = validateAmpersand(xmlData, i);\n if (afterAmp == -1)\n return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n i = afterAmp;\n } else {\n if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n }\n }\n } //end of reading tag text value\n if (xmlData[i] === '<') {\n i--;\n }\n }\n } else {\n if (isWhiteSpace(xmlData[i])) {\n continue;\n }\n return getErrorObject('InvalidChar', \"char '\" + xmlData[i] + \"' is not expected.\", getLineNumberForPosition(xmlData, i));\n }\n }\n\n if (!tagFound) {\n return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n } else if (tags.length == 1) {\n return getErrorObject('InvalidTag', \"Unclosed tag '\" + tags[0].tagName + \"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n } else if (tags.length > 0) {\n return getErrorObject('InvalidXml', \"Invalid '\" +\n JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '') +\n \"' found.\", { line: 1, col: 1 });\n }\n\n return true;\n};\n\nfunction isWhiteSpace(char) {\n return char === ' ' || char === '\\t' || char === '\\n' || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n const start = i;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] == '?' || xmlData[i] == ' ') {\n //tagname\n const tagname = xmlData.substr(start, i - start);\n if (i > 5 && tagname === 'xml') {\n return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n //check if valid attribut string\n i++;\n break;\n } else {\n continue;\n }\n }\n }\n return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n //comment\n for (i += 3; i < xmlData.length; i++) {\n if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n } else if (\n xmlData.length > i + 8 &&\n xmlData[i + 1] === 'D' &&\n xmlData[i + 2] === 'O' &&\n xmlData[i + 3] === 'C' &&\n xmlData[i + 4] === 'T' &&\n xmlData[i + 5] === 'Y' &&\n xmlData[i + 6] === 'P' &&\n xmlData[i + 7] === 'E'\n ) {\n let angleBracketsCount = 1;\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n angleBracketsCount++;\n } else if (xmlData[i] === '>') {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (\n xmlData.length > i + 9 &&\n xmlData[i + 1] === '[' &&\n xmlData[i + 2] === 'C' &&\n xmlData[i + 3] === 'D' &&\n xmlData[i + 4] === 'A' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'A' &&\n xmlData[i + 7] === '['\n ) {\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n }\n\n return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n let attrStr = '';\n let startChar = '';\n let tagClosed = false;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n if (startChar === '') {\n startChar = xmlData[i];\n } else if (startChar !== xmlData[i]) {\n //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n } else {\n startChar = '';\n }\n } else if (xmlData[i] === '>') {\n if (startChar === '') {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i];\n }\n if (startChar !== '') {\n return false;\n }\n\n return {\n value: attrStr,\n index: i,\n tagClosed: tagClosed\n };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n //console.log(\"start:\"+attrStr+\":end\");\n\n //if(attrStr.trim().length === 0) return true; //empty string\n\n const matches = getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n\n for (let i = 0; i < matches.length; i++) {\n if (matches[i][1].length === 0) {\n //nospace before attribute name: a=\"sd\"b=\"saf\"\n return getErrorObject('InvalidAttr', \"Attribute '\" + matches[i][2] + \"' has no space in starting.\", getPositionFromMatch(matches[i]))\n } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n return getErrorObject('InvalidAttr', \"Attribute '\" + matches[i][2] + \"' is without value.\", getPositionFromMatch(matches[i]));\n } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n //independent attribute: ab\n return getErrorObject('InvalidAttr', \"boolean attribute '\" + matches[i][2] + \"' is not allowed.\", getPositionFromMatch(matches[i]));\n }\n /* else if(matches[i][6] === undefined){//attribute without value: ab=\n return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n } */\n const attrName = matches[i][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject('InvalidAttr', \"Attribute '\" + attrName + \"' is an invalid name.\", getPositionFromMatch(matches[i]));\n }\n if (!Object.prototype.hasOwnProperty.call(attrNames, attrName)) {\n //check for duplicate attribute.\n attrNames[attrName] = 1;\n } else {\n return getErrorObject('InvalidAttr', \"Attribute '\" + attrName + \"' is repeated.\", getPositionFromMatch(matches[i]));\n }\n }\n\n return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n let re = /\\d/;\n if (xmlData[i] === 'x') {\n i++;\n re = /[\\da-fA-F]/;\n }\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === ';')\n return i;\n if (!xmlData[i].match(re))\n break;\n }\n return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n // https://www.w3.org/TR/xml/#dt-charref\n i++;\n if (xmlData[i] === ';')\n return -1;\n if (xmlData[i] === '#') {\n i++;\n return validateNumberAmpersand(xmlData, i);\n }\n let count = 0;\n for (; i < xmlData.length; i++, count++) {\n if (xmlData[i].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i] === ';')\n break;\n return -1;\n }\n return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code: code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col,\n },\n };\n}\n\nfunction validateAttrName(attrName) {\n return isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n return isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n}\n","import { buildOptions } from './OptionsBuilder.js';\nimport OrderedObjParser from './OrderedObjParser.js';\nimport prettify from './node2json.js';\nimport { validate } from \"../validator.js\";\nimport XmlNode from './xmlNode.js';\n\nexport default class XMLParser {\n\n constructor(options) {\n this.externalEntities = {};\n this.options = buildOptions(options);\n\n }\n /**\n * Parse XML dats to JS object \n * @param {string|Uint8Array} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData, validationOption) {\n if (typeof xmlData !== \"string\" && xmlData.toString) {\n xmlData = xmlData.toString();\n } else if (typeof xmlData !== \"string\") {\n throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n }\n\n if (validationOption) {\n if (validationOption === true) validationOption = {}; //validate with default options\n\n const result = validate(xmlData, validationOption);\n if (result !== true) {\n throw Error(`${result.err.msg}:${result.err.line}:${result.err.col}`)\n }\n }\n const orderedObjParser = new OrderedObjParser(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if (this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value) {\n if (value.indexOf(\"&\") !== -1) {\n throw new Error(\"Entity value can't have '&'\")\n } else if (key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1) {\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for ' '\")\n } else if (value === \"&\") {\n throw new Error(\"An entity with value '&' is not permitted\");\n } else {\n this.externalEntities[key] = value;\n }\n }\n\n /**\n * Returns a Symbol that can be used to access the metadata\n * property on a node.\n * \n * If Symbol is not available in the environment, an ordinary property is used\n * and the name of the property is here returned.\n * \n * The XMLMetaData property is only present when `captureMetaData`\n * is true in the options.\n */\n static getMetaDataSymbol() {\n return XmlNode.getMetaDataSymbol();\n }\n}\n"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","defaultOptions","preserveOrder","attributeNamePrefix","attributesGroupName","textNodeName","ignoreAttributes","removeNSPrefix","allowBooleanAttributes","parseTagValue","parseAttributeValue","trimValues","cdataPropName","numberParseOptions","hex","leadingZeros","eNotation","tagValueProcessor","tagName","val","attributeValueProcessor","attrName","stopNodes","alwaysCreateTextNode","isArray","commentPropName","unpairedTags","processEntities","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","jPath","attrs","captureMetaData","maxNestedTags","strictReservedNames","normalizeProcessEntities","enabled","maxEntitySize","maxExpansionDepth","maxTotalExpansions","maxExpandedLength","allowedTags","tagFilter","_value$maxEntitySize","_value$maxExpansionDe","_value$maxTotalExpans","_value$maxExpandedLen","_value$allowedTags","_value$tagFilter","buildOptions","options","built","assign","nameStartChar","regexName","RegExp","getAllMatches","string","regex","matches","match","exec","allmatches","startIndex","lastIndex","length","len","index","push","METADATA_SYMBOL","isName","XmlNode","tagname","child","create","_proto","add","_this$child$push","addChild","node","_this$child$push2","_this$child$push3","keys","undefined","getMetaDataSymbol","DocTypeReader","suppressValidationErr","readDocType","xmlData","i","entities","Error","angleBracketsCount","hasBody","comment","hasSeq","entityName","_this$readEntityExp","readEntityExp","indexOf","escaped","replace","regx","readElementExp","readNotationExp","skipWhitespace","test","validateEntityName","substring","toUpperCase","entityValue","_this$readIdentifierV","readIdentifierVal","notationName","identifierType","publicIdentifier","systemIdentifier","_this$readIdentifierV2","_this$readIdentifierV3","_this$readIdentifierV4","type","identifierVal","startChar","elementName","contentModel","trim","readAttlistExp","attributeName","attributeType","allowedNotations","notation","join","includes","defaultValue","_this$readIdentifierV5","data","seq","j","name","hexRegex","numRegex","consider","decimalPoint","eNotationRegx","OrderedObjParser","currentNode","tagsNodeStack","docTypeEntities","lastEntities","ampEntity","_","str","fromCodePoint","addExternalEntities","parseXml","parseTextData","resolveNameSpace","buildAttributesMap","isItStopNode","replaceEntitiesValue","readStopNodeData","saveTextToParentTag","ignoreAttributesFn","Array","_step","_iterator","_createForOfIteratorHelperLoose","done","pattern","entityExpansionCount","currentExpandedLength","stopNodesExact","Set","stopNodesWildcard","stopNodeExp","startsWith","externalEntities","entKeys","ent","dontTrim","hasAttributes","isLeafNode","escapeEntities","newval","parseValue","tags","split","prefix","charAt","attrsRegx","attrStr","oldVal","aName","newVal","attrCollection","xmlObj","xmlNode","textData","docTypeReader","closeIndex","findClosingIndex","colonIndex","substr","lastTagName","lastIndexOf","propIndex","pop","tagData","readTagExp","childNode","tagExp","attrExpPresent","endIndex","_ref","result","_ref2","rawTagName","newTagName","lastTag","tagContent","entityConfig","entity","lengthBefore","parentNode","currentTagName","has","errMsg","closingIndex","closingChar","attrBoundary","ch","tagExpWithClosingIndex","separatorIndex","search","trimStart","openTagCount","shouldParse","trimmedStr","skipLike","numStr","parseInt","Number","window","parse_int","sign","eChar","eAdjacentToLeadingZeros","resolveEnotation","numTrimmedByZeros","decimalAdjacentToLeadingZeros","num","parsedStr","String","n","toNumber","base","codePoint","prettify","compress","arr","text","compressedObj","newJpath","tagObj","property","propName","isLeaf","isLeafTag","assignAttributes","attrMap","jpath","atrrName","propCount","isWhiteSpace","char","readPI","start","getErrorObject","getLineNumberForPosition","readCommentAndCDATA","readAttributeStr","tagClosed","validAttrStrRegxp","validateAttributeString","attrNames","getPositionFromMatch","validateAttrName","validateAmpersand","re","validateNumberAmpersand","count","code","message","lineNumber","err","msg","line","col","validateTagName","lines","XMLParser","parse","validationOption","toString","tagFound","reachedRoot","tagStartPos","closingTag","attrStrStart","isValid","otg","openPos","afterAmp","JSON","stringify","map","t","validate","orderedObjParser","orderedResult","addEntity"],"sourceRoot":""} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/lib/fxvalidator.min.js b/food-ordering-app/server/node_modules/fast-xml-parser/lib/fxvalidator.min.js new file mode 100644 index 000000000..5d0215b76 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/lib/fxvalidator.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.XMLValidator=t():e.XMLValidator=t()}(this,()=>(()=>{"use strict";var e={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{validate:()=>l});var r=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",n=new RegExp("^["+r+"]["+r+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),i=function(e){return!(null==n.exec(e))},a={allowBooleanAttributes:!1,unpairedTags:[]};function l(e,t){t=Object.assign({},a,t);var r=[],n=!1,i=!1;"\ufeff"===e[0]&&(e=e.substr(1));for(var l=0;l"!==e[l]&&" "!==e[l]&&"\t"!==e[l]&&"\n"!==e[l]&&"\r"!==e[l];l++)v+=e[l];if("/"===(v=v.trim())[v.length-1]&&(v=v.substring(0,v.length-1),l--),!m(v))return p("InvalidTag",0===v.trim().length?"Invalid space after '<'.":"Tag '"+v+"' is an invalid name.",F(e,l));var b=d(e,l);if(!1===b)return p("InvalidAttr","Attributes for '"+v+"' have open quote.",F(e,l));var I=b.value;if(l=b.index,"/"===I[I.length-1]){var x=l-I.length,y=c(I=I.substring(0,I.length-1),t);if(!0!==y)return p(y.err.code,y.err.msg,F(e,x+y.err.line));n=!0}else if(g){if(!b.tagClosed)return p("InvalidTag","Closing tag '"+v+"' doesn't have proper closing.",F(e,l));if(I.trim().length>0)return p("InvalidTag","Closing tag '"+v+"' can't have attributes or invalid starting.",F(e,s));if(0===r.length)return p("InvalidTag","Closing tag '"+v+"' has not been opened.",F(e,s));var A=r.pop();if(v!==A.tagName){var C=F(e,A.tagStartPos);return p("InvalidTag","Expected closing tag '"+A.tagName+"' (opened in line "+C.line+", col "+C.col+") instead of closing tag '"+v+"'.",F(e,s))}0==r.length&&(i=!0)}else{var T=c(I,t);if(!0!==T)return p(T.err.code,T.err.msg,F(e,l-I.length+T.err.line));if(!0===i)return p("InvalidXml","Multiple possible root nodes found.",F(e,l));-1!==t.unpairedTags.indexOf(v)||r.push({tagName:v,tagStartPos:s}),n=!0}for(l++;l0)||p("InvalidXml","Invalid '"+JSON.stringify(r.map(function(e){return e.tagName}),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):p("InvalidXml","Start tag expected.",1)}function o(e){return" "===e||"\t"===e||"\n"===e||"\r"===e}function u(e,t){for(var r=t;t5&&"xml"===n)return p("InvalidXml","XML declaration allowed only at the start of the document.",F(e,t));if("?"==e[t]&&">"==e[t+1]){t++;break}}return t}function f(e,t){if(e.length>t+5&&"-"===e[t+1]&&"-"===e[t+2]){for(t+=3;t"===e[t+2]){t+=2;break}}else if(e.length>t+8&&"D"===e[t+1]&&"O"===e[t+2]&&"C"===e[t+3]&&"T"===e[t+4]&&"Y"===e[t+5]&&"P"===e[t+6]&&"E"===e[t+7]){var r=1;for(t+=8;t"===e[t]&&0===--r)break}else if(e.length>t+9&&"["===e[t+1]&&"C"===e[t+2]&&"D"===e[t+3]&&"A"===e[t+4]&&"T"===e[t+5]&&"A"===e[t+6]&&"["===e[t+7])for(t+=8;t"===e[t+2]){t+=2;break}return t}var s='"',g="'";function d(e,t){for(var r="",n="",i=!1;t"===e[t]&&""===n){i=!0;break}r+=e[t]}return""===n&&{value:r,index:t,tagClosed:i}}var v=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function c(e,t){for(var r=function(e,t){for(var r=[],n=t.exec(e);n;){var i=[];i.startIndex=t.lastIndex-n[0].length;for(var a=n.length,l=0;l {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nexport const nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*';\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nexport function getAllMatches(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n}\n\nexport const isName = function (string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === 'undefined');\n}\n\nexport function isExist(v) {\n return typeof v !== 'undefined';\n}\n\nexport function isEmptyObject(obj) {\n return Object.keys(obj).length === 0;\n}\n\nexport function getValue(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return '';\n }\n}\n","'use strict';\n\nimport { getAllMatches, isName } from './util.js';\n\nconst defaultOptions = {\n allowBooleanAttributes: false, //A tag can have attributes without any value\n unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexport function validate(xmlData, options) {\n options = Object.assign({}, defaultOptions, options);\n\n //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n const tags = [];\n let tagFound = false;\n\n //indicates that the root tag has been closed (aka. depth 0 has been reached)\n let reachedRoot = false;\n\n if (xmlData[0] === '\\ufeff') {\n // check for byte order mark (BOM)\n xmlData = xmlData.substr(1);\n }\n\n for (let i = 0; i < xmlData.length; i++) {\n\n if (xmlData[i] === '<' && xmlData[i + 1] === '?') {\n i += 2;\n i = readPI(xmlData, i);\n if (i.err) return i;\n } else if (xmlData[i] === '<') {\n //starting of tag\n //read until you reach to '>' avoiding any '>' in attribute value\n let tagStartPos = i;\n i++;\n\n if (xmlData[i] === '!') {\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i] === '/') {\n //closing tag\n closingTag = true;\n i++;\n }\n //read tagname\n let tagName = '';\n for (; i < xmlData.length &&\n xmlData[i] !== '>' &&\n xmlData[i] !== ' ' &&\n xmlData[i] !== '\\t' &&\n xmlData[i] !== '\\n' &&\n xmlData[i] !== '\\r'; i++\n ) {\n tagName += xmlData[i];\n }\n tagName = tagName.trim();\n //console.log(tagName);\n\n if (tagName[tagName.length - 1] === '/') {\n //self closing tag without attributes\n tagName = tagName.substring(0, tagName.length - 1);\n //continue;\n i--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\" + tagName + \"' is an invalid name.\";\n }\n return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n }\n\n const result = readAttributeStr(xmlData, i);\n if (result === false) {\n return getErrorObject('InvalidAttr', \"Attributes for '\" + tagName + \"' have open quote.\", getLineNumberForPosition(xmlData, i));\n }\n let attrStr = result.value;\n i = result.index;\n\n if (attrStr[attrStr.length - 1] === '/') {\n //self closing tag\n const attrStrStart = i - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n //continue; //text may presents after self closing tag\n } else {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject('InvalidTag', \"Closing tag '\" + tagName + \"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\" + tagName + \"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else if (tags.length === 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\" + tagName + \"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject('InvalidTag',\n \"Expected closing tag '\" + otg.tagName + \"' (opened in line \" + openPos.line + \", col \" + openPos.col + \") instead of closing tag '\" + tagName + \"'.\",\n getLineNumberForPosition(xmlData, tagStartPos));\n }\n\n //when there are no more tags, we reached the root level.\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n }\n\n //if the root level has been reached before ...\n if (reachedRoot === true) {\n return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n } else if (options.unpairedTags.indexOf(tagName) !== -1) {\n //don't push into stack\n } else {\n tags.push({ tagName, tagStartPos });\n }\n tagFound = true;\n }\n\n //skip tag text value\n //It may include comments and CDATA value\n for (i++; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n if (xmlData[i + 1] === '!') {\n //comment or CADATA\n i++;\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else if (xmlData[i + 1] === '?') {\n i = readPI(xmlData, ++i);\n if (i.err) return i;\n } else {\n break;\n }\n } else if (xmlData[i] === '&') {\n const afterAmp = validateAmpersand(xmlData, i);\n if (afterAmp == -1)\n return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n i = afterAmp;\n } else {\n if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n }\n }\n } //end of reading tag text value\n if (xmlData[i] === '<') {\n i--;\n }\n }\n } else {\n if (isWhiteSpace(xmlData[i])) {\n continue;\n }\n return getErrorObject('InvalidChar', \"char '\" + xmlData[i] + \"' is not expected.\", getLineNumberForPosition(xmlData, i));\n }\n }\n\n if (!tagFound) {\n return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n } else if (tags.length == 1) {\n return getErrorObject('InvalidTag', \"Unclosed tag '\" + tags[0].tagName + \"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n } else if (tags.length > 0) {\n return getErrorObject('InvalidXml', \"Invalid '\" +\n JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '') +\n \"' found.\", { line: 1, col: 1 });\n }\n\n return true;\n};\n\nfunction isWhiteSpace(char) {\n return char === ' ' || char === '\\t' || char === '\\n' || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n const start = i;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] == '?' || xmlData[i] == ' ') {\n //tagname\n const tagname = xmlData.substr(start, i - start);\n if (i > 5 && tagname === 'xml') {\n return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n //check if valid attribut string\n i++;\n break;\n } else {\n continue;\n }\n }\n }\n return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n //comment\n for (i += 3; i < xmlData.length; i++) {\n if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n } else if (\n xmlData.length > i + 8 &&\n xmlData[i + 1] === 'D' &&\n xmlData[i + 2] === 'O' &&\n xmlData[i + 3] === 'C' &&\n xmlData[i + 4] === 'T' &&\n xmlData[i + 5] === 'Y' &&\n xmlData[i + 6] === 'P' &&\n xmlData[i + 7] === 'E'\n ) {\n let angleBracketsCount = 1;\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n angleBracketsCount++;\n } else if (xmlData[i] === '>') {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (\n xmlData.length > i + 9 &&\n xmlData[i + 1] === '[' &&\n xmlData[i + 2] === 'C' &&\n xmlData[i + 3] === 'D' &&\n xmlData[i + 4] === 'A' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'A' &&\n xmlData[i + 7] === '['\n ) {\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n }\n\n return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n let attrStr = '';\n let startChar = '';\n let tagClosed = false;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n if (startChar === '') {\n startChar = xmlData[i];\n } else if (startChar !== xmlData[i]) {\n //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n } else {\n startChar = '';\n }\n } else if (xmlData[i] === '>') {\n if (startChar === '') {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i];\n }\n if (startChar !== '') {\n return false;\n }\n\n return {\n value: attrStr,\n index: i,\n tagClosed: tagClosed\n };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n //console.log(\"start:\"+attrStr+\":end\");\n\n //if(attrStr.trim().length === 0) return true; //empty string\n\n const matches = getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n\n for (let i = 0; i < matches.length; i++) {\n if (matches[i][1].length === 0) {\n //nospace before attribute name: a=\"sd\"b=\"saf\"\n return getErrorObject('InvalidAttr', \"Attribute '\" + matches[i][2] + \"' has no space in starting.\", getPositionFromMatch(matches[i]))\n } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n return getErrorObject('InvalidAttr', \"Attribute '\" + matches[i][2] + \"' is without value.\", getPositionFromMatch(matches[i]));\n } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n //independent attribute: ab\n return getErrorObject('InvalidAttr', \"boolean attribute '\" + matches[i][2] + \"' is not allowed.\", getPositionFromMatch(matches[i]));\n }\n /* else if(matches[i][6] === undefined){//attribute without value: ab=\n return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n } */\n const attrName = matches[i][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject('InvalidAttr', \"Attribute '\" + attrName + \"' is an invalid name.\", getPositionFromMatch(matches[i]));\n }\n if (!Object.prototype.hasOwnProperty.call(attrNames, attrName)) {\n //check for duplicate attribute.\n attrNames[attrName] = 1;\n } else {\n return getErrorObject('InvalidAttr', \"Attribute '\" + attrName + \"' is repeated.\", getPositionFromMatch(matches[i]));\n }\n }\n\n return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n let re = /\\d/;\n if (xmlData[i] === 'x') {\n i++;\n re = /[\\da-fA-F]/;\n }\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === ';')\n return i;\n if (!xmlData[i].match(re))\n break;\n }\n return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n // https://www.w3.org/TR/xml/#dt-charref\n i++;\n if (xmlData[i] === ';')\n return -1;\n if (xmlData[i] === '#') {\n i++;\n return validateNumberAmpersand(xmlData, i);\n }\n let count = 0;\n for (; i < xmlData.length; i++, count++) {\n if (xmlData[i].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i] === ';')\n break;\n return -1;\n }\n return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code: code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col,\n },\n };\n}\n\nfunction validateAttrName(attrName) {\n return isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n return isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n}\n"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","nameStartChar","regexName","RegExp","isName","string","exec","defaultOptions","allowBooleanAttributes","unpairedTags","validate","xmlData","options","assign","tags","tagFound","reachedRoot","substr","i","length","readPI","err","isWhiteSpace","getErrorObject","getLineNumberForPosition","tagStartPos","readCommentAndCDATA","closingTag","tagName","trim","substring","validateTagName","result","readAttributeStr","attrStr","index","attrStrStart","isValid","validateAttributeString","code","msg","line","tagClosed","otg","pop","openPos","col","indexOf","push","afterAmp","validateAmpersand","JSON","stringify","map","t","replace","char","start","tagname","angleBracketsCount","doubleQuote","singleQuote","startChar","validAttrStrRegxp","matches","regex","match","allmatches","startIndex","lastIndex","len","getAllMatches","attrNames","getPositionFromMatch","undefined","attrName","validateAttrName","re","validateNumberAmpersand","count","message","lineNumber","lines","split"],"sourceRoot":""} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/package.json b/food-ordering-app/server/node_modules/fast-xml-parser/package.json new file mode 100644 index 000000000..75496301c --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/package.json @@ -0,0 +1,93 @@ +{ + "name": "fast-xml-parser", + "version": "5.4.1", + "description": "Validate XML, Parse XML, Build XML without C/C++ based libraries", + "main": "./lib/fxp.cjs", + "type": "module", + "sideEffects": false, + "module": "./src/fxp.js", + "types": "./src/fxp.d.ts", + "exports": { + ".": { + "import": { + "types": "./src/fxp.d.ts", + "default": "./src/fxp.js" + }, + "require": { + "types": "./lib/fxp.d.cts", + "default": "./lib/fxp.cjs" + } + } + }, + "scripts": { + "test": "c8 --reporter=lcov --reporter=text jasmine spec/*spec.js", + "test-types": "tsc --noEmit spec/typings/typings-test.ts", + "unit": "jasmine", + "coverage": "nyc report --reporter html --reporter text -t .nyc_output --report-dir .nyc_output/summary", + "perf": "node ./benchmark/perfTest3.js", + "lint": "eslint src/**/*.js spec/**/*.js benchmark/**/*.js", + "bundle": "webpack --config webpack.cjs.config.js", + "prettier": "prettier --write src/**/*.js", + "checkReadiness": "publish-please --dry-run", + "publish-please": "publish-please", + "prepublishOnly": "publish-please guard" + }, + "bin": { + "fxparser": "src/cli/cli.js" + }, + "files": [ + "lib", + "src", + "CHANGELOG.md" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/NaturalIntelligence/fast-xml-parser.git" + }, + "keywords": [ + "fast", + "xml", + "json", + "parser", + "xml2js", + "x2js", + "xml2json", + "js", + "validator", + "validate", + "transformer", + "assert", + "js2xml", + "json2xml", + "html" + ], + "author": "Amit Gupta (https://solothought.com)", + "license": "MIT", + "devDependencies": { + "@babel/core": "^7.13.10", + "@babel/plugin-transform-runtime": "^7.13.10", + "@babel/preset-env": "^7.13.10", + "@babel/register": "^7.13.8", + "@types/node": "20", + "babel-loader": "^8.2.2", + "c8": "^10.1.3", + "eslint": "^8.3.0", + "he": "^1.2.0", + "jasmine": "^5.6.0", + "prettier": "^3.5.1", + "publish-please": "^5.5.2", + "typescript": "5", + "webpack": "^5.64.4", + "webpack-cli": "^4.9.1" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "dependencies": { + "fast-xml-builder": "^1.0.0", + "strnum": "^2.1.2" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/cli/cli.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/cli/cli.js new file mode 100644 index 000000000..b4773e403 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/cli/cli.js @@ -0,0 +1,97 @@ +#!/usr/bin/env node +'use strict'; +/*eslint-disable no-console*/ +import fs from 'fs'; +import { resolve } from 'path'; +import {XMLParser, XMLValidator} from "../fxp.js"; +import ReadToEnd from './read.js'; +import cmdDetail from "./man.js" + +console.warn("\x1b[33m%s\x1b[0m", "⚠️ Warning: The built-in CLI interface is now deprecated."); +console.warn("Please install the dedicated CLI package instead:"); +console.warn(" npm install -g fxp-cli"); + +if (process.argv[2] === '--help' || process.argv[2] === '-h') { + console.log(cmdDetail); +} else if (process.argv[2] === '--version') { + const packageJsonPath = resolve(process.cwd(), 'package.json'); + const version = JSON.parse(fs.readFileSync(packageJsonPath).toString()).version; + console.log(version); +} else { + const options = { + removeNSPrefix: true, + ignoreAttributes: false, + parseTagValue: true, + parseAttributeValue: true, + }; + let fileName = ''; + let outputFileName; + let validate = false; + let validateOnly = false; + for (let i = 2; i < process.argv.length; i++) { + if (process.argv[i] === '-ns') { + options.removeNSPrefix = false; + } else if (process.argv[i] === '-a') { + options.ignoreAttributes = true; + } else if (process.argv[i] === '-c') { + options.parseTagValue = false; + options.parseAttributeValue = false; + } else if (process.argv[i] === '-o') { + outputFileName = process.argv[++i]; + } else if (process.argv[i] === '-v') { + validate = true; + } else if (process.argv[i] === '-V') { + validateOnly = true; + } else { + //filename + fileName = process.argv[i]; + } + } + + const callback = function(xmlData) { + let output = ''; + if (validateOnly) { + output = XMLValidator.validate(xmlData); + process.exitCode = output === true ? 0 : 1; + } else { + const parser = new XMLParser(options); + output = JSON.stringify(parser.parse(xmlData,validate), null, 4); + } + if (outputFileName) { + writeToFile(outputFileName, output); + } else { + console.log(output); + } + }; + + + try { + + if (!fileName) { + ReadToEnd.readToEnd(process.stdin, function(err, data) { + if (err) { + throw err; + } + callback(data.toString()); + }); + } else { + fs.readFile(fileName, function(err, data) { + if (err) { + throw err; + } + callback(data.toString()); + }); + } + } catch (e) { + console.log('Seems an invalid file or stream.' + e); + } +} + +function writeToFile(fileName, data) { + fs.writeFile(fileName, data, function(err) { + if (err) { + throw err; + } + console.log('JSON output has been written to ' + fileName); + }); +} diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/cli/man.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/cli/man.js new file mode 100644 index 000000000..418ea3d68 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/cli/man.js @@ -0,0 +1,17 @@ +import fs from 'fs'; +import { resolve } from 'path'; +const packageJsonPath = resolve(process.cwd(), 'package.json'); +const version = JSON.parse(fs.readFileSync(packageJsonPath).toString()).version; + +export default `Fast XML Parser ${version} +---------------- +$ fxparser [-ns|-a|-c|-v|-V] [-o outputfile.json] +$ cat xmlfile.xml | fxparser [-ns|-a|-c|-v|-V] [-o outputfile.json] + +Options +---------------- +-ns: remove namespace from tag and atrribute name. +-a: don't parse attributes. +-c: parse values to premitive type. +-v: validate before parsing. +-V: validate only.` \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/cli/read.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/cli/read.js new file mode 100644 index 000000000..99a20669c --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/cli/read.js @@ -0,0 +1,43 @@ +'use strict'; + +import { Transform } from 'stream'; + +export default class ReadToEnd extends Transform { + constructor(options = {}) { + super(options); + this._encoding = options.encoding || 'utf8'; + this._buffer = ''; + } + + _transform(chunk, encoding, done) { + this._buffer += chunk.toString(this._encoding); + this.push(chunk); + done(); + } + + _flush(done) { + this.emit('complete', null, this._buffer); + done(); + } + + static readToEnd(stream, options, callback) { + if (typeof options === 'function') { + callback = options; + options = {}; + } + + const dest = new ReadToEnd(options); + + stream.pipe(dest); + + stream.on('error', (err) => { + stream.unpipe(dest); + callback(err); + }); + + dest.on('complete', callback); + dest.resume(); + + return dest; + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/fxp.d.ts b/food-ordering-app/server/node_modules/fast-xml-parser/src/fxp.d.ts new file mode 100644 index 000000000..b43c19beb --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/fxp.d.ts @@ -0,0 +1,523 @@ +export type ProcessEntitiesOptions = { + /** + * Whether to enable entity processing + * + * Defaults to `true` + */ + enabled?: boolean; + + /** + * Maximum size in characters for a single entity definition + * + * Defaults to `10000` + */ + maxEntitySize?: number; + + /** + * Maximum depth for nested entity references (reserved for future use) + * + * Defaults to `10` + */ + maxExpansionDepth?: number; + + /** + * Maximum total number of entity expansions allowed + * + * Defaults to `1000` + */ + maxTotalExpansions?: number; + + /** + * Maximum total expanded content length in characters + * + * Defaults to `100000` + */ + maxExpandedLength?: number; + + /** + * Array of tag names where entity replacement is allowed. + * If null, entities are replaced in all tags. + * + * Defaults to `null` + */ + allowedTags?: string[] | null; + + /** + * Custom filter function to determine if entities should be replaced in a tag + * + * @param tagName - The name of the current tag + * @param jPath - The jPath of the current tag + * @returns `true` to allow entity replacement, `false` to skip + * + * Defaults to `null` + */ + tagFilter?: ((tagName: string, jPath: string) => boolean) | null; +}; + +export type X2jOptions = { + /** + * Preserve the order of tags in resulting JS object + * + * Defaults to `false` + */ + preserveOrder?: boolean; + + /** + * Give a prefix to the attribute name in the resulting JS object + * + * Defaults to '@_' + */ + attributeNamePrefix?: string; + + /** + * A name to group all attributes of a tag under, or `false` to disable + * + * Defaults to `false` + */ + attributesGroupName?: false | string; + + /** + * The name of the next node in the resulting JS + * + * Defaults to `#text` + */ + textNodeName?: string; + + /** + * Whether to ignore attributes when parsing + * + * When `true` - ignores all the attributes + * + * When `false` - parses all the attributes + * + * When `Array` - filters out attributes that match provided patterns + * + * When `Function` - calls the function for each attribute and filters out those for which the function returned `true` + * + * Defaults to `true` + */ + ignoreAttributes?: boolean | (string | RegExp)[] | ((attrName: string, jPath: string) => boolean); + + /** + * Whether to remove namespace string from tag and attribute names + * + * Defaults to `false` + */ + removeNSPrefix?: boolean; + + /** + * Whether to allow attributes without value + * + * Defaults to `false` + */ + allowBooleanAttributes?: boolean; + + /** + * Whether to parse tag value with `strnum` package + * + * Defaults to `true` + */ + parseTagValue?: boolean; + + /** + * Whether to parse attribute value with `strnum` package + * + * Defaults to `false` + */ + parseAttributeValue?: boolean; + + /** + * Whether to remove surrounding whitespace from tag or attribute value + * + * Defaults to `true` + */ + trimValues?: boolean; + + /** + * Give a property name to set CDATA values to instead of merging to tag's text value + * + * Defaults to `false` + */ + cdataPropName?: false | string; + + /** + * If set, parse comments and set as this property + * + * Defaults to `false` + */ + commentPropName?: false | string; + + /** + * Control how tag value should be parsed. Called only if tag value is not empty + * + * @returns {undefined|null} `undefined` or `null` to set original value. + * @returns {unknown} + * + * 1. Different value or value with different data type to set new value. + * 2. Same value to set parsed value if `parseTagValue: true`. + * + * Defaults to `(tagName, val, jPath, hasAttributes, isLeafNode) => val` + */ + tagValueProcessor?: (tagName: string, tagValue: string, jPath: string, hasAttributes: boolean, isLeafNode: boolean) => unknown; + + /** + * Control how attribute value should be parsed + * + * @param attrName + * @param attrValue + * @param jPath + * @returns {undefined|null} `undefined` or `null` to set original value + * @returns {unknown} + * + * Defaults to `(attrName, val, jPath) => val` + */ + attributeValueProcessor?: (attrName: string, attrValue: string, jPath: string) => unknown; + + /** + * Options to pass to `strnum` for parsing numbers + * + * Defaults to `{ hex: true, leadingZeros: true, eNotation: true }` + */ + numberParseOptions?: strnumOptions; + + /** + * Nodes to stop parsing at + * + * Defaults to `[]` + */ + stopNodes?: string[]; + + /** + * List of tags without closing tags + * + * Defaults to `[]` + */ + unpairedTags?: string[]; + + /** + * Whether to always create a text node + * + * Defaults to `false` + */ + alwaysCreateTextNode?: boolean; + + /** + * Determine whether a tag should be parsed as an array + * + * @param tagName + * @param jPath + * @param isLeafNode + * @param isAttribute + * @returns {boolean} + * + * Defaults to `() => false` + */ + isArray?: (tagName: string, jPath: string, isLeafNode: boolean, isAttribute: boolean) => boolean; + + /** + * Whether to process default and DOCTYPE entities + * + * When `true` - enables entity processing with default limits + * + * When `false` - disables all entity processing + * + * When `ProcessEntitiesOptions` - enables entity processing with custom configuration + * + * Defaults to `true` + */ + processEntities?: boolean | ProcessEntitiesOptions; + + /** + * Whether to process HTML entities + * + * Defaults to `false` + */ + htmlEntities?: boolean; + + /** + * Whether to ignore the declaration tag from output + * + * Defaults to `false` + */ + ignoreDeclaration?: boolean; + + /** + * Whether to ignore Pi tags + * + * Defaults to `false` + */ + ignorePiTags?: boolean; + + /** + * Transform tag names + * + * Defaults to `false` + */ + transformTagName?: ((tagName: string) => string) | false; + + /** + * Transform attribute names + * + * Defaults to `false` + */ + transformAttributeName?: ((attributeName: string) => string) | false; + + /** + * Change the tag name when a different name is returned. Skip the tag from parsed result when false is returned. + * Modify `attrs` object to control attributes for the given tag. + * + * @returns {string} new tag name. + * @returns false to skip the tag + * + * Defaults to `(tagName, jPath, attrs) => tagName` + */ + updateTag?: (tagName: string, jPath: string, attrs: { [k: string]: string }) => string | boolean; + + /** + * If true, adds a Symbol to all object nodes, accessible by {@link XMLParser.getMetaDataSymbol} with + * metadata about each the node in the XML file. + */ + captureMetaData?: boolean; + + /** + * Maximum number of nested tags + * + * Defaults to `100` + */ + maxNestedTags?: number; + + /** + * Whether to strictly validate tag names + * + * Defaults to `true` + */ + strictReservedNames?: boolean; +}; + + + +export type strnumOptions = { + hex: boolean; + leadingZeros: boolean, + skipLike?: RegExp, + eNotation?: boolean +} + +export type validationOptions = { + /** + * Whether to allow attributes without value + * + * Defaults to `false` + */ + allowBooleanAttributes?: boolean; + + /** + * List of tags without closing tags + * + * Defaults to `[]` + */ + unpairedTags?: string[]; +}; + +export type XmlBuilderOptions = { + /** + * Give a prefix to the attribute name in the resulting JS object + * + * Defaults to '@_' + */ + attributeNamePrefix?: string; + + /** + * A name to group all attributes of a tag under, or `false` to disable + * + * Defaults to `false` + */ + attributesGroupName?: false | string; + + /** + * The name of the next node in the resulting JS + * + * Defaults to `#text` + */ + textNodeName?: string; + + /** + * Whether to ignore attributes when building + * + * When `true` - ignores all the attributes + * + * When `false` - builds all the attributes + * + * When `Array` - filters out attributes that match provided patterns + * + * When `Function` - calls the function for each attribute and filters out those for which the function returned `true` + * + * Defaults to `true` + */ + ignoreAttributes?: boolean | (string | RegExp)[] | ((attrName: string, jPath: string) => boolean); + + /** + * Give a property name to set CDATA values to instead of merging to tag's text value + * + * Defaults to `false` + */ + cdataPropName?: false | string; + + /** + * If set, parse comments and set as this property + * + * Defaults to `false` + */ + commentPropName?: false | string; + + /** + * Whether to make output pretty instead of single line + * + * Defaults to `false` + */ + format?: boolean; + + + /** + * If `format` is set to `true`, sets the indent string + * + * Defaults to ` ` + */ + indentBy?: string; + + /** + * Give a name to a top-level array + * + * Defaults to `undefined` + */ + arrayNodeName?: string; + + /** + * Create empty tags for tags with no text value + * + * Defaults to `false` + */ + suppressEmptyNode?: boolean; + + /** + * Suppress an unpaired tag + * + * Defaults to `true` + */ + suppressUnpairedNode?: boolean; + + /** + * Don't put a value for boolean attributes + * + * Defaults to `true` + */ + suppressBooleanAttributes?: boolean; + + /** + * Preserve the order of tags in resulting JS object + * + * Defaults to `false` + */ + preserveOrder?: boolean; + + /** + * List of tags without closing tags + * + * Defaults to `[]` + */ + unpairedTags?: string[]; + + /** + * Nodes to stop parsing at + * + * Defaults to `[]` + */ + stopNodes?: string[]; + + /** + * Control how tag value should be parsed. Called only if tag value is not empty + * + * @returns {undefined|null} `undefined` or `null` to set original value. + * @returns {unknown} + * + * 1. Different value or value with different data type to set new value. + * 2. Same value to set parsed value if `parseTagValue: true`. + * + * Defaults to `(tagName, val, jPath, hasAttributes, isLeafNode) => val` + */ + tagValueProcessor?: (name: string, value: unknown) => unknown; + + /** + * Control how attribute value should be parsed + * + * @param attrName + * @param attrValue + * @param jPath + * @returns {undefined|null} `undefined` or `null` to set original value + * @returns {unknown} + * + * Defaults to `(attrName, val, jPath) => val` + */ + attributeValueProcessor?: (name: string, value: unknown) => unknown; + + /** + * Whether to process default and DOCTYPE entities + * + * Defaults to `true` + */ + processEntities?: boolean; + + + oneListGroup?: boolean; +}; + +type ESchema = string | object | Array; + +export type ValidationError = { + err: { + code: string; + msg: string, + line: number, + col: number + }; +}; + +export class XMLParser { + constructor(options?: X2jOptions); + parse(xmlData: string | Uint8Array, validationOptions?: validationOptions | boolean): any; + /** + * Add Entity which is not by default supported by this library + * @param entityIdentifier {string} Eg: 'ent' for &ent; + * @param entityValue {string} Eg: '\r' + */ + addEntity(entityIdentifier: string, entityValue: string): void; + + /** + * Returns a Symbol that can be used to access the {@link XMLMetaData} + * property on a node. + * + * If Symbol is not available in the environment, an ordinary property is used + * and the name of the property is here returned. + * + * The XMLMetaData property is only present when {@link X2jOptions.captureMetaData} + * is true in the options. + */ + static getMetaDataSymbol(): Symbol; +} + +export class XMLValidator { + static validate(xmlData: string, options?: validationOptions): true | ValidationError; +} +export class XMLBuilder { + constructor(options?: XmlBuilderOptions); + build(jObj: any): string; +} + +/** + * This object is available on nodes via the symbol {@link XMLParser.getMetaDataSymbol} + * when {@link X2jOptions.captureMetaData} is true. + */ +export interface XMLMetaData { + /** The index, if available, of the character where the XML node began in the input stream. */ + startIndex?: number; +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/fxp.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/fxp.js new file mode 100644 index 000000000..470ed56d0 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/fxp.js @@ -0,0 +1,14 @@ +'use strict'; + +import { validate } from './validator.js'; +import XMLParser from './xmlparser/XMLParser.js'; +import XMLBuilder from './xmlbuilder/json2xml.js'; + +const XMLValidator = { + validate: validate +} +export { + XMLParser, + XMLValidator, + XMLBuilder +}; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/ignoreAttributes.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/ignoreAttributes.js new file mode 100644 index 000000000..bdec0a611 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/ignoreAttributes.js @@ -0,0 +1,18 @@ +export default function getIgnoreAttributesFn(ignoreAttributes) { + if (typeof ignoreAttributes === 'function') { + return ignoreAttributes + } + if (Array.isArray(ignoreAttributes)) { + return (attrName) => { + for (const pattern of ignoreAttributes) { + if (typeof pattern === 'string' && attrName === pattern) { + return true + } + if (pattern instanceof RegExp && pattern.test(attrName)) { + return true + } + } + } + } + return () => false +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/util.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/util.js new file mode 100644 index 000000000..5f8e75fbb --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/util.js @@ -0,0 +1,43 @@ +'use strict'; + +const nameStartChar = ':A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD'; +const nameChar = nameStartChar + '\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040'; +export const nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*'; +const regexName = new RegExp('^' + nameRegexp + '$'); + +export function getAllMatches(string, regex) { + const matches = []; + let match = regex.exec(string); + while (match) { + const allmatches = []; + allmatches.startIndex = regex.lastIndex - match[0].length; + const len = match.length; + for (let index = 0; index < len; index++) { + allmatches.push(match[index]); + } + matches.push(allmatches); + match = regex.exec(string); + } + return matches; +} + +export const isName = function (string) { + const match = regexName.exec(string); + return !(match === null || typeof match === 'undefined'); +} + +export function isExist(v) { + return typeof v !== 'undefined'; +} + +export function isEmptyObject(obj) { + return Object.keys(obj).length === 0; +} + +export function getValue(v) { + if (exports.isExist(v)) { + return v; + } else { + return ''; + } +} diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/CharsSymbol.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/CharsSymbol.js new file mode 100644 index 000000000..6ac2de4cf --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/CharsSymbol.js @@ -0,0 +1,16 @@ +export default { + "<" : "<", //tag start + ">" : ">", //tag end + "/" : "/", //close tag + "!" : "!", //comment or docttype + "!--" : "!--", //comment + "-->" : "-->", //comment end + "?" : "?", //pi + "?>" : "?>", //pi end + "?xml" : "?xml", //pi end + "![" : "![", //cdata + "]]>" : "]]>", //cdata end + "[" : "[", + "-" : "-", + "D" : "D", +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/EntitiesParser.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/EntitiesParser.js new file mode 100644 index 000000000..576e069d6 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/EntitiesParser.js @@ -0,0 +1,106 @@ +const ampEntity = { regex: /&(amp|#38|#x26);/g, val: "&" }; +const htmlEntities = { + "space": { regex: /&(nbsp|#160);/g, val: " " }, + // "lt" : { regex: /&(lt|#60);/g, val: "<" }, + // "gt" : { regex: /&(gt|#62);/g, val: ">" }, + // "amp" : { regex: /&(amp|#38);/g, val: "&" }, + // "quot" : { regex: /&(quot|#34);/g, val: "\"" }, + // "apos" : { regex: /&(apos|#39);/g, val: "'" }, + "cent": { regex: /&(cent|#162);/g, val: "¢" }, + "pound": { regex: /&(pound|#163);/g, val: "£" }, + "yen": { regex: /&(yen|#165);/g, val: "¥" }, + "euro": { regex: /&(euro|#8364);/g, val: "€" }, + "copyright": { regex: /&(copy|#169);/g, val: "©" }, + "reg": { regex: /&(reg|#174);/g, val: "®" }, + "inr": { regex: /&(inr|#8377);/g, val: "₹" }, + "num_dec": { regex: /&#([0-9]{1,7});/g, val: (_, str) => String.fromCodePoint(Number.parseInt(str, 10)) }, + "num_hex": { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (_, str) => String.fromCodePoint(Number.parseInt(str, 16)) }, +}; +export default class EntitiesParser { + constructor(replaceHtmlEntities) { + this.replaceHtmlEntities = replaceHtmlEntities; + this.docTypeEntities = {}; + this.lastEntities = { + "apos": { regex: /&(apos|#39|#x27);/g, val: "'" }, + "gt": { regex: /&(gt|#62|#x3E);/g, val: ">" }, + "lt": { regex: /&(lt|#60|#x3C);/g, val: "<" }, + "quot": { regex: /&(quot|#34|#x22);/g, val: "\"" }, + }; + } + + addExternalEntities(externalEntities) { + const entKeys = Object.keys(externalEntities); + for (let i = 0; i < entKeys.length; i++) { + const ent = entKeys[i]; + this.addExternalEntity(ent, externalEntities[ent]) + } + } + addExternalEntity(key, val) { + validateEntityName(key); + const escaped = key.replace(/[.\-+*:]/g, '\\.'); + if (val.indexOf("&") !== -1) { + reportWarning(`Entity ${key} is not added as '&' is found in value;`) + return; + } else { + this.lastEntities[key] = { + regex: new RegExp("&" + escaped + ";", "g"), + val: val + } + } + } + + addDocTypeEntities(entities) { + const entKeys = Object.keys(entities); + for (let i = 0; i < entKeys.length; i++) { + const ent = entKeys[i]; + const escaped = ent.replace(/[.\-+*:]/g, '\\.'); + this.docTypeEntities[ent] = { + regex: new RegExp("&" + escaped + ";", "g"), + val: entities[ent] + } + } + } + + parse(val) { + return this.replaceEntitiesValue(val) + } + + /** + * 1. Replace DOCTYPE entities + * 2. Replace external entities + * 3. Replace HTML entities if asked + * @param {string} val + */ + replaceEntitiesValue(val) { + if (typeof val === "string" && val.length > 0) { + for (let entityName in this.docTypeEntities) { + const entity = this.docTypeEntities[entityName]; + val = val.replace(entity.regx, entity.val); + } + for (let entityName in this.lastEntities) { + const entity = this.lastEntities[entityName]; + val = val.replace(entity.regex, entity.val); + } + if (this.replaceHtmlEntities) { + for (let entityName in htmlEntities) { + const entity = htmlEntities[entityName]; + val = val.replace(entity.regex, entity.val); + } + } + val = val.replace(ampEntity.regex, ampEntity.val); + } + return val; + } +} + +//an entity name should not contains special characters that may be used in regex +//Eg !?\\\/[]$%{}^&*()<> +const specialChar = "!?\\/[]$%{}^&*()<>|+"; + +function validateEntityName(name) { + for (let i = 0; i < specialChar.length; i++) { + const ch = specialChar[i]; + if (name.indexOf(ch) !== -1) throw new Error(`Invalid character ${ch} in entity name`); + } + return name; +} diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/OptionsBuilder.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/OptionsBuilder.js new file mode 100644 index 000000000..6e3391954 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/OptionsBuilder.js @@ -0,0 +1,61 @@ + +import { JsObjOutputBuilder } from './OutputBuilders/JsObjBuilder.js'; + +export const defaultOptions = { + preserveOrder: false, + removeNSPrefix: false, // remove NS from tag name or attribute name if true + //ignoreRootElement : false, + stopNodes: [], //nested tags will not be parsed even for errors + // isArray: () => false, //User will set it + htmlEntities: false, + // skipEmptyListItem: false + tags: { + unpaired: [], + nameFor: { + cdata: false, + comment: false, + text: '#text' + }, + separateTextProperty: false, + }, + attributes: { + ignore: false, + booleanType: true, + entities: true, + }, + + // select: ["img[src]"], + // stop: ["anim", "[ads]"] + only: [], // rest tags will be skipped. It will result in flat array + hierarchy: false, //will be used when a particular tag is set to be parsed. + skip: [], // will be skipped from parse result. on('skip') will be triggered + + select: [], // on('select', tag => tag ) will be called if match + stop: [], //given tagPath will not be parsed. innerXML will be set as string value + OutputBuilder: new JsObjOutputBuilder(), +}; + +export const buildOptions = function (options) { + const finalOptions = { ...defaultOptions }; + copyProperties(finalOptions, options) + return finalOptions; +}; + +function copyProperties(target, source) { + for (let key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + if (key === 'OutputBuilder') { + target[key] = source[key]; + } else if (typeof source[key] === 'object' && !Array.isArray(source[key])) { + // Recursively copy nested properties + if (typeof target[key] === 'undefined') { + target[key] = {}; + } + copyProperties(target[key], source[key]); + } else { + // Copy non-nested properties + target[key] = source[key]; + } + } + } +} diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/OutputBuilders/BaseOutputBuilder.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/OutputBuilders/BaseOutputBuilder.js new file mode 100644 index 000000000..aee73658d --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/OutputBuilders/BaseOutputBuilder.js @@ -0,0 +1,69 @@ +export default class BaseOutputBuilder { + constructor() { + // this.attributes = {}; + } + + addAttribute(name, value) { + if (this.options.onAttribute) { + //TODO: better to pass tag path + const v = this.options.onAttribute(name, value, this.tagName); + if (v) this.attributes[v.name] = v.value; + } else { + name = this.options.attributes.prefix + name + this.options.attributes.suffix; + this.attributes[name] = this.parseValue(value, this.options.attributes.valueParsers); + } + } + + /** + * parse value by chain of parsers + * @param {string} val + * @returns {any} parsed value if matching parser found + */ + parseValue = function (val, valParsers) { + for (let i = 0; i < valParsers.length; i++) { + let valParser = valParsers[i]; + if (typeof valParser === "string") { + valParser = this.registeredParsers[valParser]; + } + if (valParser) { + val = valParser.parse(val); + } + } + return val; + } + + /** + * To add a nested empty tag. + * @param {string} key + * @param {any} val + */ + _addChild(key, val) { } + + /** + * skip the comment if property is not set + */ + addComment(text) { + if (this.options.nameFor.comment) + this._addChild(this.options.nameFor.comment, text); + } + + //store CDATA separately if property is set + //otherwise add to tag's value + addCdata(text) { + if (this.options.nameFor.cdata) { + this._addChild(this.options.nameFor.cdata, text); + } else { + this.addRawValue(text || ""); + } + } + + addRawValue = text => this.addValue(text); + + addDeclaration() { + if (!this.options.declaration) { + } else { + this.addPi("?xml"); + } + this.attributes = {} + } +} diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/OutputBuilders/JsArrBuilder.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/OutputBuilders/JsArrBuilder.js new file mode 100644 index 000000000..04205e583 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/OutputBuilders/JsArrBuilder.js @@ -0,0 +1,103 @@ +import { buildOptions, registerCommonValueParsers } from './ParserOptionsBuilder.js'; + +export default class OutputBuilder { + constructor(options) { + this.options = buildOptions(options); + this.registeredParsers = registerCommonValueParsers(this.options); + } + + registerValueParser(name, parserInstance) {//existing name will override the parser without warning + this.registeredParsers[name] = parserInstance; + } + + getInstance(parserOptions) { + return new JsArrBuilder(parserOptions, this.options, this.registeredParsers); + } +} + +const rootName = '!js_arr'; +import BaseOutputBuilder from './BaseOutputBuilder.js'; + +class JsArrBuilder extends BaseOutputBuilder { + + constructor(parserOptions, options, registeredParsers) { + super(); + this.tagsStack = []; + this.parserOptions = parserOptions; + this.options = options; + this.registeredParsers = registeredParsers; + + this.root = new Node(rootName); + this.currentNode = this.root; + this.attributes = {}; + } + + addTag(tag) { + //when a new tag is added, it should be added as child of current node + //TODO: shift this check to the parser + if (tag.name === "__proto__") tag.name = "#__proto__"; + + this.tagsStack.push(this.currentNode); + this.currentNode = new Node(tag.name, this.attributes); + this.attributes = {}; + } + + /** + * Check if the node should be added by checking user's preference + * @param {Node} node + * @returns boolean: true if the node should not be added + */ + closeTag() { + const node = this.currentNode; + this.currentNode = this.tagsStack.pop(); //set parent node in scope + if (this.options.onClose !== undefined) { + //TODO TagPathMatcher + const resultTag = this.options.onClose(node, + new TagPathMatcher(this.tagsStack, node)); + + if (resultTag) return; + } + this.currentNode.child.push(node); //to parent node + } + + //Called by parent class methods + _addChild(key, val) { + // if(key === "__proto__") tagName = "#__proto__"; + this.currentNode.child.push({ [key]: val }); + // this.currentNode.leafType = false; + } + + /** + * Add text value child node + * @param {string} text + */ + addValue(text) { + this.currentNode.child.push({ [this.options.nameFor.text]: this.parseValue(text, this.options.tags.valueParsers) }); + } + + addPi(name) { + //TODO: set pi flag + if (!this.options.ignorePiTags) { + const node = new Node(name, this.attributes); + this.currentNode[":@"] = this.attributes; + this.currentNode.child.push(node); + } + this.attributes = {}; + } + getOutput() { + return this.root.child[0]; + } +} + + + +class Node { + constructor(tagname, attributes) { + this.tagname = tagname; + this.child = []; //nested tags, text, cdata, comments + if (attributes && Object.keys(attributes).length > 0) + this[":@"] = attributes; + } +} + +module.exports = OutputBuilder; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/OutputBuilders/JsMinArrBuilder.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/OutputBuilders/JsMinArrBuilder.js new file mode 100644 index 000000000..f0eee0cfd --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/OutputBuilders/JsMinArrBuilder.js @@ -0,0 +1,100 @@ +import {buildOptions,registerCommonValueParsers} from"./ParserOptionsBuilder.js"; + +export default class OutputBuilder{ + constructor(options){ + this.options = buildOptions(options); + this.registeredParsers = registerCommonValueParsers(this.options); + } + + registerValueParser(name,parserInstance){//existing name will override the parser without warning + this.registeredParsers[name] = parserInstance; + } + + getInstance(parserOptions){ + return new JsMinArrBuilder(parserOptions, this.options, this.registeredParsers); + } +} + +import BaseOutputBuilder from "./BaseOutputBuilder.js"; +const rootName = '^'; + +class JsMinArrBuilder extends BaseOutputBuilder{ + + constructor(parserOptions, options,registeredParsers) { + super(); + this.tagsStack = []; + this.parserOptions = parserOptions; + this.options = options; + this.registeredParsers = registeredParsers; + + this.root = {[rootName]: []}; + this.currentNode = this.root; + this.currentNodeTagName = rootName; + this.attributes = {}; + } + + addTag(tag){ + //when a new tag is added, it should be added as child of current node + //TODO: shift this check to the parser + if(tag.name === "__proto__") tag.name = "#__proto__"; + + this.tagsStack.push([this.currentNodeTagName,this.currentNode]); //this.currentNode is parent node here + this.currentNodeTagName = tag.name; + this.currentNode = { [tag.name]:[]} + if(Object.keys(this.attributes).length > 0){ + this.currentNode[":@"] = this.attributes; + this.attributes = {}; + } + } + + /** + * Check if the node should be added by checking user's preference + * @param {Node} node + * @returns boolean: true if the node should not be added + */ + closeTag(){ + const node = this.currentNode; + const nodeName = this.currentNodeTagName; + const arr = this.tagsStack.pop(); //set parent node in scope + this.currentNodeTagName = arr[0]; + this.currentNode = arr[1]; + + if(this.options.onClose !== undefined){ + //TODO TagPathMatcher + const resultTag = this.options.onClose(node, + new TagPathMatcher(this.tagsStack,node)); + + if(resultTag) return; + } + this.currentNode[this.currentNodeTagName].push(node); //to parent node + } + + //Called by parent class methods + _addChild(key, val){ + // if(key === "__proto__") tagName = "#__proto__"; + this.currentNode.push( {[key]: val }); + // this.currentNode.leafType = false; + } + + /** + * Add text value child node + * @param {string} text + */ + addValue(text){ + this.currentNode[this.currentNodeTagName].push( {[this.options.nameFor.text]: this.parseValue(text, this.options.tags.valueParsers) }); + } + + addPi(name){ + if(!this.options.ignorePiTags){ + const node = { [name]:[]} + if(this.attributes){ + node[":@"] = this.attributes; + } + this.currentNode.push(node); + } + this.attributes = {}; + } + getOutput(){ + return this.root[rootName]; + } +} diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/OutputBuilders/JsObjBuilder.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/OutputBuilders/JsObjBuilder.js new file mode 100644 index 000000000..9e19de9e6 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/OutputBuilders/JsObjBuilder.js @@ -0,0 +1,154 @@ + + +import { buildOptions, registerCommonValueParsers } from './ParserOptionsBuilder.js'; + +export default class OutputBuilder { + constructor(builderOptions) { + this.options = buildOptions(builderOptions); + this.registeredParsers = registerCommonValueParsers(this.options); + } + + registerValueParser(name, parserInstance) {//existing name will override the parser without warning + this.registeredParsers[name] = parserInstance; + } + + getInstance(parserOptions) { + return new JsObjBuilder(parserOptions, this.options, this.registeredParsers); + } +} + +import BaseOutputBuilder from './BaseOutputBuilder.js'; +const rootName = '^'; + +class JsObjBuilder extends BaseOutputBuilder { + + constructor(parserOptions, builderOptions, registeredParsers) { + super(); + //hold the raw detail of a tag and sequence with reference to the output + this.tagsStack = []; + this.parserOptions = parserOptions; + this.options = builderOptions; + this.registeredParsers = registeredParsers; + + this.root = {}; + this.parent = this.root; + this.tagName = rootName; + this.value = {}; + this.textValue = ""; + this.attributes = {}; + } + + addTag(tag) { + + let value = ""; + if (!isEmpty(this.attributes)) { + value = {}; + if (this.options.attributes.groupBy) { + value[this.options.attributes.groupBy] = this.attributes; + } else { + value = this.attributes; + } + } + + this.tagsStack.push([this.tagName, this.textValue, this.value]); //parent tag, parent text value, parent tag value (jsobj) + this.tagName = tag.name; + this.value = value; + this.textValue = ""; + this.attributes = {}; + } + + /** + * Check if the node should be added by checking user's preference + * @param {Node} node + * @returns boolean: true if the node should not be added + */ + closeTag() { + const tagName = this.tagName; + let value = this.value; + let textValue = this.textValue; + + //update tag text value + if (typeof value !== "object" && !Array.isArray(value)) { + value = this.parseValue(textValue.trim(), this.options.tags.valueParsers); + } else if (textValue.length > 0) { + value[this.options.nameFor.text] = this.parseValue(textValue.trim(), this.options.tags.valueParsers); + } + + + let resultTag = { + tagName: tagName, + value: value + }; + + if (this.options.onTagClose !== undefined) { + //TODO TagPathMatcher + resultTag = this.options.onClose(tagName, value, this.textValue, new TagPathMatcher(this.tagsStack, node)); + + if (!resultTag) return; + } + + //set parent node in scope + let arr = this.tagsStack.pop(); + let parentTag = arr[2]; + parentTag = this._addChildTo(resultTag.tagName, resultTag.value, parentTag); + + this.tagName = arr[0]; + this.textValue = arr[1]; + this.value = parentTag; + } + + _addChild(key, val) { + if (typeof this.value === "string") { + this.value = { [this.options.nameFor.text]: this.value }; + } + + this._addChildTo(key, val, this.value); + // this.currentNode.leafType = false; + this.attributes = {}; + } + + _addChildTo(key, val, node) { + if (typeof node === 'string') node = {}; + if (!node[key]) { + node[key] = val; + } else { //Repeated + if (!Array.isArray(node[key])) { //but not stored as array + node[key] = [node[key]]; + } + node[key].push(val); + } + return node; + } + + + /** + * Add text value child node + * @param {string} text + */ + addValue(text) { + //TODO: use bytes join + if (this.textValue.length > 0) this.textValue += " " + text; + else this.textValue = text; + } + + addPi(name) { + let value = ""; + if (!isEmpty(this.attributes)) { + value = {}; + if (this.options.attributes.groupBy) { + value[this.options.attributes.groupBy] = this.attributes; + } else { + value = this.attributes; + } + } + this._addChild(name, value); + + } + getOutput() { + return this.value; + } +} + +function isEmpty(obj) { + return Object.keys(obj).length === 0; +} diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/OutputBuilders/ParserOptionsBuilder.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/OutputBuilders/ParserOptionsBuilder.js new file mode 100644 index 000000000..0e206834b --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/OutputBuilders/ParserOptionsBuilder.js @@ -0,0 +1,94 @@ +import trimParser from "../valueParsers/trim.js"; +import booleanParser from "../valueParsers/booleanParser.js"; +import currencyParser from "../valueParsers/currency.js"; +import numberParser from "../valueParsers/number.js"; + +const defaultOptions = { + nameFor: { + text: "#text", + comment: "", + cdata: "", + }, + // onTagClose: () => {}, + // onAttribute: () => {}, + piTag: false, + declaration: false, //"?xml" + tags: { + valueParsers: [ + // "trim", + // "boolean", + // "number", + // "currency", + // "date", + ] + }, + attributes: { + prefix: "@_", + suffix: "", + groupBy: "", + + valueParsers: [ + // "trim", + // "boolean", + // "number", + // "currency", + // "date", + ] + }, + dataType: { + + } +} + +//TODO +const withJoin = ["trim", "join", /*"entities",*/"number", "boolean", "currency"/*, "date"*/] +const withoutJoin = ["trim", /*"entities",*/"number", "boolean", "currency"/*, "date"*/] + +export function buildOptions(options) { + //clone + const finalOptions = { ...defaultOptions }; + + //add config missed in cloning + finalOptions.tags.valueParsers.push(...withJoin) + if (!this.preserveOrder) + finalOptions.tags.valueParsers.push(...withoutJoin); + + //add config missed in cloning + finalOptions.attributes.valueParsers.push(...withJoin) + + //override configuration + copyProperties(finalOptions, options); + return finalOptions; +} + +function copyProperties(target, source) { + for (let key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + if (typeof source[key] === 'object' && !Array.isArray(source[key])) { + // Recursively copy nested properties + if (typeof target[key] === 'undefined') { + target[key] = {}; + } + copyProperties(target[key], source[key]); + } else { + // Copy non-nested properties + target[key] = source[key]; + } + } + } +} + +export function registerCommonValueParsers(options) { + return { + "trim": new trimParser(), + // "join": this.entityParser.parse, + "boolean": new booleanParser(), + "number": new numberParser({ + hex: true, + leadingZeros: true, + eNotation: true + }), + "currency": new currencyParser(), + // "date": this.entityParser.parse, + } +} diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/Report.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/Report.js new file mode 100644 index 000000000..e69de29bb diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/TagPath.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/TagPath.js new file mode 100644 index 000000000..98148c78c --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/TagPath.js @@ -0,0 +1,81 @@ +export default class TagPath{ + constructor(pathStr){ + let text = ""; + let tName = ""; + let pos; + let aName = ""; + let aVal = ""; + this.stack = [] + + for (let i = 0; i < pathStr.length; i++) { + let ch = pathStr[i]; + if(ch === " ") { + if(text.length === 0) continue; + tName = text; text = ""; + }else if(ch === "["){ + if(tName.length === 0){ + tName = text; text = ""; + } + i++; + for (; i < pathStr.length; i++) { + ch = pathStr[i]; + if(ch=== "=") continue; + else if(ch=== "]") {aName = text.trim(); text=""; break; i--;} + else if(ch === "'" || ch === '"'){ + let attrEnd = pathStr.indexOf(ch,i+1); + aVal = pathStr.substring(i+1, attrEnd); + i = attrEnd; + }else{ + text +=ch; + } + } + }else if(ch !== " " && text.length === 0 && tName.length > 0){//reading tagName + //save previous tag + this.stack.push(new TagPathNode(tName,pos,aName,aVal)); + text = ch; tName = ""; aName = ""; aVal = ""; + }else{ + text+=ch; + } + } + + //last tag in the path + if(tName.length >0 || text.length>0){ + this.stack.push(new TagPathNode(text||tName,pos,aName,aVal)); + } + } + + match(tagStack,node){ + if(this.stack[0].name !== "*"){ + if(this.stack.length !== tagStack.length +1) return false; + + //loop through tagPath and tagStack and match + for (let i = 0; i < this.tagStack.length; i++) { + if(!this.stack[i].match(tagStack[i])) return false; + } + } + if(!this.stack[this.stack.length - 1].match(node)) return false; + return true; + } +} + +class TagPathNode{ + constructor(name,position,attrName,attrVal){ + this.name = name; + this.position = position; + this.attrName = attrName, + this.attrVal = attrVal; + } + + match(node){ + let matching = true; + matching = node.name === this.name; + if(this.position) matching = node.position === this.position; + if(this.attrName) matching = node.attrs[this.attrName !== undefined]; + if(this.attrVal) matching = node.attrs[this.attrName !== this.attrVal]; + return matching; + } +} + +// console.log((new TagPath("* b[b]")).stack); +// console.log((new TagPath("a[a] b[b] c")).stack); +// console.log((new TagPath(" b [ b= 'cf sdadwa' ] a ")).stack); \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/TagPathMatcher.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/TagPathMatcher.js new file mode 100644 index 000000000..811044766 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/TagPathMatcher.js @@ -0,0 +1,13 @@ +import {TagPath} from './TagPath.js'; + +export default class TagPathMatcher{ + constructor(stack,node){ + this.stack = stack; + this.node= node; + } + + match(path){ + const tagPath = new TagPath(path); + return tagPath.match(this.stack, this.node); + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/XMLParser.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/XMLParser.js new file mode 100644 index 000000000..44c70dc47 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/XMLParser.js @@ -0,0 +1,83 @@ +import { buildOptions } from './OptionsBuilder.js'; +import Xml2JsParser from './Xml2JsParser.js'; + +export default class XMLParser { + + constructor(options) { + this.externalEntities = {}; + this.options = buildOptions(options); + // console.log(this.options) + } + /** + * Parse XML data string to JS object + * @param {string|Buffer} xmlData + * @param {boolean|Object} validationOption + */ + parse(xmlData) { + if (Array.isArray(xmlData) && xmlData.byteLength !== undefined) { + return this.parse(xmlData); + } else if (xmlData.toString) { + xmlData = xmlData.toString(); + } else { + throw new Error("XML data is accepted in String or Bytes[] form.") + } + // if( validationOption){ + // if(validationOption === true) validationOption = {}; //validate with default options + + // const result = validator.validate(xmlData, validationOption); + // if (result !== true) { + // throw Error( `${result.err.msg}:${result.err.line}:${result.err.col}` ) + // } + // } + const parser = new Xml2JsParser(this.options); + parser.entityParser.addExternalEntities(this.externalEntities); + return parser.parse(xmlData); + } + /** + * Parse XML data buffer to JS object + * @param {string|Buffer} xmlData + * @param {boolean|Object} validationOption + */ + parseBytesArr(xmlData) { + if (Array.isArray(xmlData) && xmlData.byteLength !== undefined) { + } else { + throw new Error("XML data is accepted in Bytes[] form.") + } + const parser = new Xml2JsParser(this.options); + parser.entityParser.addExternalEntities(this.externalEntities); + return parser.parseBytesArr(xmlData); + } + /** + * Parse XML data stream to JS object + * @param {fs.ReadableStream} xmlDataStream + */ + parseStream(xmlDataStream) { + if (!isStream(xmlDataStream)) throw new Error("FXP: Invalid stream input"); + + const orderedObjParser = new Xml2JsParser(this.options); + orderedObjParser.entityParser.addExternalEntities(this.externalEntities); + return orderedObjParser.parseStream(xmlDataStream); + } + + /** + * Add Entity which is not by default supported by this library + * @param {string} key + * @param {string} value + */ + addEntity(key, value) { + if (value.indexOf("&") !== -1) { + throw new Error("Entity value can't have '&'") + } else if (key.indexOf("&") !== -1 || key.indexOf(";") !== -1) { + throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for ' '") + } else if (value === "&") { + throw new Error("An entity with value '&' is not permitted"); + } else { + this.externalEntities[key] = value; + } + } +} + +function isStream(stream) { + if (stream && typeof stream.read === "function" && typeof stream.on === "function" && typeof stream.readableEnded === "boolean") return true; + return false; +} diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/Xml2JsParser.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/Xml2JsParser.js new file mode 100644 index 000000000..bd6226537 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/Xml2JsParser.js @@ -0,0 +1,235 @@ +import StringSource from './inputSource/StringSource.js'; +import BufferSource from './inputSource/BufferSource.js'; +import {readTagExp,readClosingTagName} from './XmlPartReader.js'; +import {readComment, readCdata,readDocType,readPiTag} from './XmlSpecialTagsReader.js'; +import TagPath from './TagPath.js'; +import TagPathMatcher from './TagPathMatcher.js'; +import EntitiesParser from './EntitiesParser.js'; + +//To hold the data of current tag +//This is usually used to compare jpath expression against current tag +class TagDetail{ + constructor(name){ + this.name = name; + this.position = 0; + // this.attributes = {}; + } +} + +export default class Xml2JsParser { + constructor(options) { + this.options = options; + + this.currentTagDetail = null; + this.tagTextData = ""; + this.tagsStack = []; + this.entityParser = new EntitiesParser(options.htmlEntities); + this.stopNodes = []; + for (let i = 0; i < this.options.stopNodes.length; i++) { + this.stopNodes.push(new TagPath(this.options.stopNodes[i])); + } + } + + parse(strData) { + this.source = new StringSource(strData); + this.parseXml(); + return this.outputBuilder.getOutput(); + } + parseBytesArr(data) { + this.source = new BufferSource(data ); + this.parseXml(); + return this.outputBuilder.getOutput(); + } + + parseXml() { + //TODO: Separate TagValueParser as separate class. So no scope issue in node builder class + + //OutputBuilder should be set in XML Parser + this.outputBuilder = this.options.OutputBuilder.getInstance(this.options); + this.root = { root: true}; + this.currentTagDetail = this.root; + + while(this.source.canRead()){ + let ch = this.source.readCh(); + if (ch === "") break; + + if(ch === "<"){//tagStart + let nextChar = this.source.readChAt(0); + if (nextChar === "" ) throw new Error("Unexpected end of source"); + + + if(nextChar === "!" || nextChar === "?"){ + this.source.updateBufferBoundary(); + //previously collected text should be added to current node + this.addTextNode(); + + this.readSpecialTag(nextChar);// Read DOCTYPE, comment, CDATA, PI tag + }else if(nextChar === "/"){ + this.source.updateBufferBoundary(); + this.readClosingTag(); + // console.log(this.source.buffer.length, this.source.readable); + // console.log(this.tagsStack.length); + }else{//opening tag + this.readOpeningTag(); + } + }else{ + this.tagTextData += ch; + } + }//End While loop + if(this.tagsStack.length > 0 || ( this.tagTextData !== "undefined" && this.tagTextData.trimEnd().length > 0) ) throw new Error("Unexpected data in the end of document"); + } + + /** + * read closing paired tag. Set parent tag in scope. + * skip a node on user's choice + */ + readClosingTag(){ + const tagName = this.processTagName(readClosingTagName(this.source)); + // console.log(tagName, this.tagsStack.length); + this.validateClosingTag(tagName); + // All the text data collected, belongs to current tag. + if(!this.currentTagDetail.root) this.addTextNode(); + this.outputBuilder.closeTag(); + // Since the tag is closed now, parent tag comes in scope + this.currentTagDetail = this.tagsStack.pop(); + } + + validateClosingTag(tagName){ + // This can't be unpaired tag, or a stop tag. + if(this.isUnpaired(tagName) || this.isStopNode(tagName)) throw new Error(`Unexpected closing tag '${tagName}'`); + // This must match with last opening tag + else if(tagName !== this.currentTagDetail.name) + throw new Error(`Unexpected closing tag '${tagName}' expecting '${this.currentTagDetail.name}'`) + } + + /** + * Read paired, unpaired, self-closing, stop and special tags. + * Create a new node + * Push paired tag in stack. + */ + readOpeningTag(){ + //save previously collected text data to current node + this.addTextNode(); + + //create new tag + let tagExp = readTagExp(this, ">" ); + + // process and skip from tagsStack For unpaired tag, self closing tag, and stop node + const tagDetail = new TagDetail(tagExp.tagName); + if(this.isUnpaired(tagExp.tagName)) { + //TODO: this will lead 2 extra stack operation + this.outputBuilder.addTag(tagDetail); + this.outputBuilder.closeTag(); + } else if(tagExp.selfClosing){ + this.outputBuilder.addTag(tagDetail); + this.outputBuilder.closeTag(); + } else if(this.isStopNode(this.currentTagDetail)){ + // TODO: let's user set a stop node boundary detector for complex contents like script tag + //TODO: pass tag name only to avoid string operations + const content = source.readUptoCloseTag(` 0){ + //TODO: shift parsing to output builder + + this.outputBuilder.addValue(this.replaceEntities(this.tagTextData)); + } + this.tagTextData = ""; + } + // } + } + + processAttrName(name){ + if(name === "__proto__") name = "#__proto__"; + name = resolveNameSpace(name, this.removeNSPrefix); + return name; + } + + processTagName(name){ + if(name === "__proto__") name = "#__proto__"; + name = resolveNameSpace(name, this.removeNSPrefix); + return name; + } + + /** + * Generate tags path from tagsStack + */ + tagsPath(tagName){ + //TODO: return TagPath Object. User can call match method with path + return ""; + } + + isUnpaired(tagName){ + return this.options.tags.unpaired.indexOf(tagName) !== -1; + } + + /** + * valid expressions are + * tag nested + * * nested + * tag nested[attribute] + * tag nested[attribute=""] + * tag nested[attribute!=""] + * tag nested:0 //for future + * @param {string} tagName + * @returns + */ + isStopNode(node){ + for (let i = 0; i < this.stopNodes.length; i++) { + const givenPath = this.stopNodes[i]; + if(givenPath.match(this.tagsStack, node)) return true; + } + return false + } + + replaceEntities(text){ + //TODO: if option is set then replace entities + return this.entityParser.parse(text) + } +} + +function resolveNameSpace(name, removeNSPrefix) { + if (removeNSPrefix) { + const parts = name.split(':'); + if(parts.length === 2){ + if (parts[0] === 'xmlns') return ''; + else return parts[1]; + }else reportError(`Multiple namespaces ${name}`) + } + return name; +} diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/XmlPartReader.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/XmlPartReader.js new file mode 100644 index 000000000..61c57ec8d --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/XmlPartReader.js @@ -0,0 +1,210 @@ +'use strict'; + +/** + * find paired tag for a stop node + * @param {string} xmlDoc + * @param {string} tagName + * @param {number} i : start index + */ +export function readStopNode(xmlDoc, tagName, i){ + const startIndex = i; + // Starting at 1 since we already have an open tag + let openTagCount = 1; + + for (; i < xmlDoc.length; i++) { + if( xmlDoc[i] === "<"){ + if (xmlDoc[i+1] === "/") {//close tag + const closeIndex = findSubStrIndex(xmlDoc, ">", i, `${tagName} is not closed`); + let closeTagName = xmlDoc.substring(i+2,closeIndex).trim(); + if(closeTagName === tagName){ + openTagCount--; + if (openTagCount === 0) { + return { + tagContent: xmlDoc.substring(startIndex, i), + i : closeIndex + } + } + } + i=closeIndex; + } else if(xmlDoc[i+1] === '?') { + const closeIndex = findSubStrIndex(xmlDoc, "?>", i+1, "StopNode is not closed.") + i=closeIndex; + } else if(xmlDoc.substr(i + 1, 3) === '!--') { + const closeIndex = findSubStrIndex(xmlDoc, "-->", i+3, "StopNode is not closed.") + i=closeIndex; + } else if(xmlDoc.substr(i + 1, 2) === '![') { + const closeIndex = findSubStrIndex(xmlDoc, "]]>", i, "StopNode is not closed.") - 2; + i=closeIndex; + } else { + const tagData = readTagExp(xmlDoc, i, '>') + + if (tagData) { + const openTagName = tagData && tagData.tagName; + if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length-1] !== "/") { + openTagCount++; + } + i=tagData.closeIndex; + } + } + } + }//end for loop +} + +/** + * Read closing tag name + * @param {Source} source + * @returns tag name + */ +export function readClosingTagName(source){ + let text = ""; //temporary data + while(source.canRead()){ + let ch = source.readCh(); + // if (ch === null || ch === undefined) break; + // source.updateBuffer(); + + if (ch === ">") return text.trimEnd(); + else text += ch; + } + throw new Error(`Unexpected end of source. Reading '${substr}'`); +} + +/** + * Read XML tag and build attributes map + * This function can be used to read normal tag, pi tag. + * This function can't be used to read comment, CDATA, DOCTYPE. + * Eg + * @param {string} xmlDoc + * @param {number} startIndex starting index + * @returns tag expression includes tag name & attribute string + */ +export function readTagExp(parser) { + let inSingleQuotes = false; + let inDoubleQuotes = false; + let i; + let EOE = false; + + for (i = 0; parser.source.canRead(i); i++) { + const char = parser.source.readChAt(i); + + if (char === "'" && !inDoubleQuotes) { + inSingleQuotes = !inSingleQuotes; + } else if (char === '"' && !inSingleQuotes) { + inDoubleQuotes = !inDoubleQuotes; + } else if (char === '>' && !inSingleQuotes && !inDoubleQuotes) { + // If not inside quotes, stop reading at '>' + EOE = true; + break; + } + + } + if(inSingleQuotes || inDoubleQuotes){ + throw new Error("Invalid attribute expression. Quote is not properly closed"); + }else if(!EOE) throw new Error("Unexpected closing of source. Waiting for '>'"); + + + const exp = parser.source.readStr(i); + parser.source.updateBufferBoundary(i + 1); + return buildTagExpObj(exp, parser) +} + +export function readPiExp(parser) { + let inSingleQuotes = false; + let inDoubleQuotes = false; + let i; + let EOE = false; + + for (i = 0; parser.source.canRead(i) ; i++) { + const currentChar = parser.source.readChAt(i); + const nextChar = parser.source.readChAt(i+1); + + if (currentChar === "'" && !inDoubleQuotes) { + inSingleQuotes = !inSingleQuotes; + } else if (currentChar === '"' && !inSingleQuotes) { + inDoubleQuotes = !inDoubleQuotes; + } + + if (!inSingleQuotes && !inDoubleQuotes) { + if (currentChar === '?' && nextChar === '>') { + EOE = true; + break; // Exit the loop when '?>' is found + } + } + } + if(inSingleQuotes || inDoubleQuotes){ + throw new Error("Invalid attribute expression. Quote is not properly closed in PI tag expression"); + }else if(!EOE) throw new Error("Unexpected closing of source. Waiting for '?>'"); + + if(!parser.options.attributes.ignore){ + //TODO: use regex to verify attributes if not set to ignore + } + + const exp = parser.source.readStr(i); + parser.source.updateBufferBoundary(i + 1); + return buildTagExpObj(exp, parser) +} + +function buildTagExpObj(exp, parser){ + const tagExp = { + tagName: "", + selfClosing: false + }; + let attrsExp = ""; + + // Check for self-closing tag before setting the name + if(exp[exp.length -1] === "/") { + tagExp.selfClosing = true; + exp = exp.slice(0, -1); // Remove the trailing slash + } + + //separate tag name + let i = 0; + for (; i < exp.length; i++) { + const char = exp[i]; + if(char === " "){ + tagExp.tagName = exp.substring(0, i); + attrsExp = exp.substring(i + 1); + break; + } + } + //only tag + if(tagExp.tagName.length === 0 && i === exp.length)tagExp.tagName = exp; + + tagExp.tagName = tagExp.tagName.trimEnd(); + + if(!parser.options.attributes.ignore && attrsExp.length > 0){ + parseAttributesExp(attrsExp,parser) + } + + return tagExp; +} + +const attrsRegx = new RegExp('([^\\s=]+)\\s*(=\\s*([\'"])([\\s\\S]*?)\\3)?', 'gm'); + +function parseAttributesExp(attrStr, parser) { + const matches = getAllMatches(attrStr, attrsRegx); + const len = matches.length; //don't make it inline + for (let i = 0; i < len; i++) { + let attrName = parser.processAttrName(matches[i][1]); + let attrVal = parser.replaceEntities(matches[i][4] || true); + + parser.outputBuilder.addAttribute(attrName, attrVal); + } +} + + +const getAllMatches = function(string, regex) { + const matches = []; + let match = regex.exec(string); + while (match) { + const allmatches = []; + allmatches.startIndex = regex.lastIndex - match[0].length; + const len = match.length; + for (let index = 0; index < len; index++) { + allmatches.push(match[index]); + } + matches.push(allmatches); + match = regex.exec(string); + } + return matches; +}; + diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/XmlSpecialTagsReader.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/XmlSpecialTagsReader.js new file mode 100644 index 000000000..330e0a46d --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/XmlSpecialTagsReader.js @@ -0,0 +1,111 @@ +import {readPiExp} from './XmlPartReader.js'; + +export function readCdata(parser){ + //"); + parser.outputBuilder.addCdata(text); +} +export function readPiTag(parser){ + //"); + if(!tagExp) throw new Error("Invalid Pi Tag expression."); + + if (tagExp.tagName === "?xml") {//TODO: test if tagName is just xml + parser.outputBuilder.addDeclaration(); + } else { + parser.outputBuilder.addPi("?"+tagExp.tagName); + } +} + +export function readComment(parser){ + //"); + parser.outputBuilder.addComment(text); +} + +const DOCTYPE_tags = { + "EL":/^EMENT\s+([^\s>]+)\s+(ANY|EMPTY|\(.+\)\s*$)/m, + "AT":/^TLIST\s+[^\s]+\s+[^\s]+\s+[^\s]+\s+[^\s]+\s+$/m, + "NO":/^TATION.+$/m +} +export function readDocType(parser){ + //"); + const regx = DOCTYPE_tags[str]; + if(regx){ + const match = dTagExp.match(regx); + if(!match) throw new Error("Invalid DOCTYPE"); + }else throw new Error("Invalid DOCTYPE"); + } + }else if( ch === '>' && lastch === "]"){//end of doctype + return; + } + }else if( ch === '>'){//end of doctype + return; + }else if( ch === '['){ + hasBody = true; + }else{ + lastch = ch; + } + }//End While loop + +} + +function registerEntity(parser){ + //read Entity + let attrBoundary=""; + let name ="", val =""; + while(source.canRead()){ + let ch = source.readCh(); + + if(attrBoundary){ + if (ch === attrBoundary){ + val = text; + text = "" + } + }else if(ch === " " || ch === "\t"){ + if(!name){ + name = text.trimStart(); + text = ""; + } + }else if (ch === '"' || ch === "'") {//start of attrBoundary + attrBoundary = ch; + }else if(ch === ">"){ + parser.entityParser.addExternalEntity(name,val); + return; + }else{ + text+=ch; + } + } +} diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/inputSource/BufferSource.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/inputSource/BufferSource.js new file mode 100644 index 000000000..2c5d8b59c --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/inputSource/BufferSource.js @@ -0,0 +1,116 @@ +const Constants = { + space: 32, + tab: 9 +} +export default class BufferSource{ + constructor(bytesArr){ + this.line = 1; + this.cols = 0; + this.buffer = bytesArr; + this.startIndex = 0; + } + + + + readCh() { + return String.fromCharCode(this.buffer[this.startIndex++]); + } + + readChAt(index) { + return String.fromCharCode(this.buffer[this.startIndex+index]); + } + + readStr(n,from){ + if(typeof from === "undefined") from = this.startIndex; + return this.buffer.slice(from, from + n).toString(); + } + + readUpto(stopStr) { + const inputLength = this.buffer.length; + const stopLength = stopStr.length; + const stopBuffer = Buffer.from(stopStr); + + for (let i = this.startIndex; i < inputLength; i++) { + let match = true; + for (let j = 0; j < stopLength; j++) { + if (this.buffer[i + j] !== stopBuffer[j]) { + match = false; + break; + } + } + + if (match) { + const result = this.buffer.slice(this.startIndex, i).toString(); + this.startIndex = i + stopLength; + return result; + } + } + + throw new Error(`Unexpected end of source. Reading '${stopStr}'`); +} + +readUptoCloseTag(stopStr) { //stopStr: "'){ //TODO: if it should be equivalent ASCII + match = 2; + //tag boundary found + // this.startIndex + } + }else{ + match = 1; + for (let j = 0; j < stopLength; j++) { + if (this.buffer[i + j] !== stopBuffer[j]) { + match = 0; + break; + } + } + } + if (match === 2) {//matched closing part + const result = this.buffer.slice(this.startIndex, stopIndex - 1 ).toString(); + this.startIndex = i + 1; + return result; + } + } + + throw new Error(`Unexpected end of source. Reading '${stopStr}'`); +} + + readFromBuffer(n, shouldUpdate) { + let ch; + if (n === 1) { + ch = this.buffer[this.startIndex]; + if (ch === 10) { + this.line++; + this.cols = 1; + } else { + this.cols++; + } + ch = String.fromCharCode(ch); + } else { + this.cols += n; + ch = this.buffer.slice(this.startIndex, this.startIndex + n).toString(); + } + if (shouldUpdate) this.updateBuffer(n); + return ch; + } + + updateBufferBoundary(n = 1) { //n: number of characters read + this.startIndex += n; + } + + canRead(n){ + n = n || this.startIndex; + return this.buffer.length - n + 1 > 0; + } + +} diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/inputSource/StringSource.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/inputSource/StringSource.js new file mode 100644 index 000000000..275889a39 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/inputSource/StringSource.js @@ -0,0 +1,121 @@ +const whiteSpaces = [" ", "\n", "\t"]; + + +export default class StringSource{ + constructor(str){ + this.line = 1; + this.cols = 0; + this.buffer = str; + //a boundary pointer to indicate where from the buffer dat should be read + // data before this pointer can be deleted to free the memory + this.startIndex = 0; + } + + readCh() { + return this.buffer[this.startIndex++]; + } + + readChAt(index) { + return this.buffer[this.startIndex+index]; + } + + readStr(n,from){ + if(typeof from === "undefined") from = this.startIndex; + return this.buffer.substring(from, from + n); + } + + readUpto(stopStr) { + const inputLength = this.buffer.length; + const stopLength = stopStr.length; + + for (let i = this.startIndex; i < inputLength; i++) { + let match = true; + for (let j = 0; j < stopLength; j++) { + if (this.buffer[i + j] !== stopStr[j]) { + match = false; + break; + } + } + + if (match) { + const result = this.buffer.substring(this.startIndex, i); + this.startIndex = i + stopLength; + return result; + } + } + + throw new Error(`Unexpected end of source. Reading '${stopStr}'`); + } + + readUptoCloseTag(stopStr) { //stopStr: "'){ + match = 2; + //tag boundary found + // this.startIndex + } + }else{ + match = 1; + for (let j = 0; j < stopLength; j++) { + if (this.buffer[i + j] !== stopStr[j]) { + match = 0; + break; + } + } + } + if (match === 2) {//matched closing part + const result = this.buffer.substring(this.startIndex, stopIndex - 1 ); + this.startIndex = i + 1; + return result; + } + } + + throw new Error(`Unexpected end of source. Reading '${stopStr}'`); + } + + readFromBuffer(n, updateIndex){ + let ch; + if(n===1){ + ch = this.buffer[this.startIndex]; + // if(ch === "\n") { + // this.line++; + // this.cols = 1; + // }else{ + // this.cols++; + // } + }else{ + ch = this.buffer.substring(this.startIndex, this.startIndex + n); + // if("".indexOf("\n") !== -1){ + // //TODO: handle the scenario when there are multiple lines + // //TODO: col should be set to number of chars after last '\n' + // // this.cols = 1; + // }else{ + // this.cols += n; + + // } + } + if(updateIndex) this.updateBufferBoundary(n); + return ch; + } + + //TODO: rename to updateBufferReadIndex + + updateBufferBoundary(n = 1) { //n: number of characters read + this.startIndex += n; + } + + canRead(n){ + n = n || this.startIndex; + return this.buffer.length - n + 1 > 0; + } + +} diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/valueParsers/EntitiesParser.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/valueParsers/EntitiesParser.js new file mode 100644 index 000000000..b7f7ba8f5 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/valueParsers/EntitiesParser.js @@ -0,0 +1,105 @@ +const ampEntity = { regex: /&(amp|#38|#x26);/g, val: "&" }; +const htmlEntities = { + "space": { regex: /&(nbsp|#160);/g, val: " " }, + // "lt" : { regex: /&(lt|#60);/g, val: "<" }, + // "gt" : { regex: /&(gt|#62);/g, val: ">" }, + // "amp" : { regex: /&(amp|#38);/g, val: "&" }, + // "quot" : { regex: /&(quot|#34);/g, val: "\"" }, + // "apos" : { regex: /&(apos|#39);/g, val: "'" }, + "cent": { regex: /&(cent|#162);/g, val: "¢" }, + "pound": { regex: /&(pound|#163);/g, val: "£" }, + "yen": { regex: /&(yen|#165);/g, val: "¥" }, + "euro": { regex: /&(euro|#8364);/g, val: "€" }, + "copyright": { regex: /&(copy|#169);/g, val: "©" }, + "reg": { regex: /&(reg|#174);/g, val: "®" }, + "inr": { regex: /&(inr|#8377);/g, val: "₹" }, + "num_dec": { regex: /&#([0-9]{1,7});/g, val: (_, str) => String.fromCodePoint(Number.parseInt(str, 10)) }, + "num_hex": { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (_, str) => String.fromCodePoint(Number.parseInt(str, 16)) }, +}; + +export default class EntitiesParser { + constructor(replaceHtmlEntities) { + this.replaceHtmlEntities = replaceHtmlEntities; + this.docTypeEntities = {}; + this.lastEntities = { + "apos": { regex: /&(apos|#39|#x27);/g, val: "'" }, + "gt": { regex: /&(gt|#62|#x3E);/g, val: ">" }, + "lt": { regex: /&(lt|#60|#x3C);/g, val: "<" }, + "quot": { regex: /&(quot|#34|#x22);/g, val: "\"" }, + }; + } + + addExternalEntities(externalEntities) { + const entKeys = Object.keys(externalEntities); + for (let i = 0; i < entKeys.length; i++) { + const ent = entKeys[i]; + this.addExternalEntity(ent, externalEntities[ent]) + } + } + addExternalEntity(key, val) { + validateEntityName(key); + if (val.indexOf("&") !== -1) { + reportWarning(`Entity ${key} is not added as '&' is found in value;`) + return; + } else { + this.lastEntities[ent] = { + regex: new RegExp("&" + key + ";", "g"), + val: val + } + } + } + + addDocTypeEntities(entities) { + const entKeys = Object.keys(entities); + for (let i = 0; i < entKeys.length; i++) { + const ent = entKeys[i]; + this.docTypeEntities[ent] = { + regex: new RegExp("&" + ent + ";", "g"), + val: entities[ent] + } + } + } + + parse(val) { + return this.replaceEntitiesValue(val) + } + + /** + * 1. Replace DOCTYPE entities + * 2. Replace external entities + * 3. Replace HTML entities if asked + * @param {string} val + */ + replaceEntitiesValue(val) { + if (typeof val === "string" && val.length > 0) { + for (let entityName in this.docTypeEntities) { + const entity = this.docTypeEntities[entityName]; + val = val.replace(entity.regx, entity.val); + } + for (let entityName in this.lastEntities) { + const entity = this.lastEntities[entityName]; + val = val.replace(entity.regex, entity.val); + } + if (this.replaceHtmlEntities) { + for (let entityName in htmlEntities) { + const entity = htmlEntities[entityName]; + val = val.replace(entity.regex, entity.val); + } + } + val = val.replace(ampEntity.regex, ampEntity.val); + } + return val; + } +}; + +//an entity name should not contains special characters that may be used in regex +//Eg !?\\\/[]$%{}^&*()<> +const specialChar = "!?\\\/[]$%{}^&*()<>|+"; + +function validateEntityName(name) { + for (let i = 0; i < specialChar.length; i++) { + const ch = specialChar[i]; + if (name.indexOf(ch) !== -1) throw new Error(`Invalid character ${ch} in entity name`); + } + return name; +} diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/valueParsers/booleanParser.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/valueParsers/booleanParser.js new file mode 100644 index 000000000..bc8f80642 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/valueParsers/booleanParser.js @@ -0,0 +1,22 @@ +export default class boolParser{ + constructor(trueList, falseList){ + if(trueList) + this.trueList = trueList; + else + this.trueList = ["true"]; + + if(falseList) + this.falseList = falseList; + else + this.falseList = ["false"]; + } + parse(val){ + if (typeof val === 'string') { + //TODO: performance: don't convert + const temp = val.toLowerCase(); + if(this.trueList.indexOf(temp) !== -1) return true; + else if(this.falseList.indexOf(temp) !== -1 ) return false; + } + return val; + } +} diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/valueParsers/booleanParserExt.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/valueParsers/booleanParserExt.js new file mode 100644 index 000000000..ec3ba427f --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/valueParsers/booleanParserExt.js @@ -0,0 +1,19 @@ +export default function boolParserExt(val){ + if(isArray(val)){ + for (let i = 0; i < val.length; i++) { + val[i] = parse(val[i]) + } + }else{ + val = parse(val) + } + return val; +} + +function parse(val){ + if (typeof val === 'string') { + const temp = val.toLowerCase(); + if(temp === 'true' || temp ==="yes" || temp==="1") return true; + else if(temp === 'false' || temp ==="no" || temp==="0") return false; + } + return val; +} diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/valueParsers/currency.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/valueParsers/currency.js new file mode 100644 index 000000000..377281767 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/valueParsers/currency.js @@ -0,0 +1,38 @@ +const defaultOptions = { + maxLength: 200, + // locale: "en-IN" +} +const localeMap = { + "$":"en-US", + "€":"de-DE", + "£":"en-GB", + "¥":"ja-JP", + "₹":"en-IN", +} +const sign = "(?:-|\+)?"; +const digitsAndSeparator = "(?:\d+|\d{1,3}(?:,\d{3})+)"; +const decimalPart = "(?:\.\d{1,2})?"; +const symbol = "(?:\$|€|¥|₹)?"; + +const currencyCheckRegex = /^\s*(?:-|\+)?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d{1,2})?\s*(?:\$|€|¥|₹)?\s*$/u; + +export default class CurrencyParser{ + constructor(options){ + this.options = options || defaultOptions; + } + parse(val){ + if (typeof val === 'string' && val.length <= this.options.maxLength) { + if(val.indexOf(",,") !== -1 && val.indexOf(".." !== -1)){ + const match = val.match(currencyCheckRegex); + if(match){ + const locale = this.options.locale || localeMap[match[2]||match[5]||"₹"]; + const formatter = new Intl.NumberFormat(locale) + val = val.replace(/[^0-9,.]/g, '').trim(); + val = Number(val.replace(formatter.format(1000)[1], '')); + } + } + } + return val; + } +} +CurrencyParser.defaultOptions = defaultOptions; diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/valueParsers/join.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/valueParsers/join.js new file mode 100644 index 000000000..f597d99af --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/valueParsers/join.js @@ -0,0 +1,13 @@ +/** + * + * @param {array} val + * @param {string} by + * @returns + */ +export default function join(val, by=" "){ + if(isArray(val)){ + val.join(by) + } + return val; +} + diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/valueParsers/number.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/valueParsers/number.js new file mode 100644 index 000000000..8397fb616 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/valueParsers/number.js @@ -0,0 +1,14 @@ +import toNumber from "strnum"; + + +export default class numParser{ + constructor(options){ + this.options = options; + } + parse(val){ + if (typeof val === 'string') { + val = toNumber(val,this.options); + } + return val; + } +} diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/valueParsers/trim.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/valueParsers/trim.js new file mode 100644 index 000000000..50eed7f9b --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/v6/valueParsers/trim.js @@ -0,0 +1,6 @@ +export default class trimmer{ + parse(val){ + if(typeof val === "string") return val.trim(); + else return val; + } +} diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/validator.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/validator.js new file mode 100644 index 000000000..277225c25 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/validator.js @@ -0,0 +1,425 @@ +'use strict'; + +import { getAllMatches, isName } from './util.js'; + +const defaultOptions = { + allowBooleanAttributes: false, //A tag can have attributes without any value + unpairedTags: [] +}; + +//const tagsPattern = new RegExp("<\\/?([\\w:\\-_\.]+)\\s*\/?>","g"); +export function validate(xmlData, options) { + options = Object.assign({}, defaultOptions, options); + + //xmlData = xmlData.replace(/(\r\n|\n|\r)/gm,"");//make it single line + //xmlData = xmlData.replace(/(^\s*<\?xml.*?\?>)/g,"");//Remove XML starting tag + //xmlData = xmlData.replace(/()/g,"");//Remove DOCTYPE + const tags = []; + let tagFound = false; + + //indicates that the root tag has been closed (aka. depth 0 has been reached) + let reachedRoot = false; + + if (xmlData[0] === '\ufeff') { + // check for byte order mark (BOM) + xmlData = xmlData.substr(1); + } + + for (let i = 0; i < xmlData.length; i++) { + + if (xmlData[i] === '<' && xmlData[i + 1] === '?') { + i += 2; + i = readPI(xmlData, i); + if (i.err) return i; + } else if (xmlData[i] === '<') { + //starting of tag + //read until you reach to '>' avoiding any '>' in attribute value + let tagStartPos = i; + i++; + + if (xmlData[i] === '!') { + i = readCommentAndCDATA(xmlData, i); + continue; + } else { + let closingTag = false; + if (xmlData[i] === '/') { + //closing tag + closingTag = true; + i++; + } + //read tagname + let tagName = ''; + for (; i < xmlData.length && + xmlData[i] !== '>' && + xmlData[i] !== ' ' && + xmlData[i] !== '\t' && + xmlData[i] !== '\n' && + xmlData[i] !== '\r'; i++ + ) { + tagName += xmlData[i]; + } + tagName = tagName.trim(); + //console.log(tagName); + + if (tagName[tagName.length - 1] === '/') { + //self closing tag without attributes + tagName = tagName.substring(0, tagName.length - 1); + //continue; + i--; + } + if (!validateTagName(tagName)) { + let msg; + if (tagName.trim().length === 0) { + msg = "Invalid space after '<'."; + } else { + msg = "Tag '" + tagName + "' is an invalid name."; + } + return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i)); + } + + const result = readAttributeStr(xmlData, i); + if (result === false) { + return getErrorObject('InvalidAttr', "Attributes for '" + tagName + "' have open quote.", getLineNumberForPosition(xmlData, i)); + } + let attrStr = result.value; + i = result.index; + + if (attrStr[attrStr.length - 1] === '/') { + //self closing tag + const attrStrStart = i - attrStr.length; + attrStr = attrStr.substring(0, attrStr.length - 1); + const isValid = validateAttributeString(attrStr, options); + if (isValid === true) { + tagFound = true; + //continue; //text may presents after self closing tag + } else { + //the result from the nested function returns the position of the error within the attribute + //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute + //this gives us the absolute index in the entire xml, which we can use to find the line at last + return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line)); + } + } else if (closingTag) { + if (!result.tagClosed) { + return getErrorObject('InvalidTag', "Closing tag '" + tagName + "' doesn't have proper closing.", getLineNumberForPosition(xmlData, i)); + } else if (attrStr.trim().length > 0) { + return getErrorObject('InvalidTag', "Closing tag '" + tagName + "' can't have attributes or invalid starting.", getLineNumberForPosition(xmlData, tagStartPos)); + } else if (tags.length === 0) { + return getErrorObject('InvalidTag', "Closing tag '" + tagName + "' has not been opened.", getLineNumberForPosition(xmlData, tagStartPos)); + } else { + const otg = tags.pop(); + if (tagName !== otg.tagName) { + let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos); + return getErrorObject('InvalidTag', + "Expected closing tag '" + otg.tagName + "' (opened in line " + openPos.line + ", col " + openPos.col + ") instead of closing tag '" + tagName + "'.", + getLineNumberForPosition(xmlData, tagStartPos)); + } + + //when there are no more tags, we reached the root level. + if (tags.length == 0) { + reachedRoot = true; + } + } + } else { + const isValid = validateAttributeString(attrStr, options); + if (isValid !== true) { + //the result from the nested function returns the position of the error within the attribute + //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute + //this gives us the absolute index in the entire xml, which we can use to find the line at last + return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line)); + } + + //if the root level has been reached before ... + if (reachedRoot === true) { + return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i)); + } else if (options.unpairedTags.indexOf(tagName) !== -1) { + //don't push into stack + } else { + tags.push({ tagName, tagStartPos }); + } + tagFound = true; + } + + //skip tag text value + //It may include comments and CDATA value + for (i++; i < xmlData.length; i++) { + if (xmlData[i] === '<') { + if (xmlData[i + 1] === '!') { + //comment or CADATA + i++; + i = readCommentAndCDATA(xmlData, i); + continue; + } else if (xmlData[i + 1] === '?') { + i = readPI(xmlData, ++i); + if (i.err) return i; + } else { + break; + } + } else if (xmlData[i] === '&') { + const afterAmp = validateAmpersand(xmlData, i); + if (afterAmp == -1) + return getErrorObject('InvalidChar', "char '&' is not expected.", getLineNumberForPosition(xmlData, i)); + i = afterAmp; + } else { + if (reachedRoot === true && !isWhiteSpace(xmlData[i])) { + return getErrorObject('InvalidXml', "Extra text at the end", getLineNumberForPosition(xmlData, i)); + } + } + } //end of reading tag text value + if (xmlData[i] === '<') { + i--; + } + } + } else { + if (isWhiteSpace(xmlData[i])) { + continue; + } + return getErrorObject('InvalidChar', "char '" + xmlData[i] + "' is not expected.", getLineNumberForPosition(xmlData, i)); + } + } + + if (!tagFound) { + return getErrorObject('InvalidXml', 'Start tag expected.', 1); + } else if (tags.length == 1) { + return getErrorObject('InvalidTag', "Unclosed tag '" + tags[0].tagName + "'.", getLineNumberForPosition(xmlData, tags[0].tagStartPos)); + } else if (tags.length > 0) { + return getErrorObject('InvalidXml', "Invalid '" + + JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\r?\n/g, '') + + "' found.", { line: 1, col: 1 }); + } + + return true; +}; + +function isWhiteSpace(char) { + return char === ' ' || char === '\t' || char === '\n' || char === '\r'; +} +/** + * Read Processing insstructions and skip + * @param {*} xmlData + * @param {*} i + */ +function readPI(xmlData, i) { + const start = i; + for (; i < xmlData.length; i++) { + if (xmlData[i] == '?' || xmlData[i] == ' ') { + //tagname + const tagname = xmlData.substr(start, i - start); + if (i > 5 && tagname === 'xml') { + return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i)); + } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') { + //check if valid attribut string + i++; + break; + } else { + continue; + } + } + } + return i; +} + +function readCommentAndCDATA(xmlData, i) { + if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') { + //comment + for (i += 3; i < xmlData.length; i++) { + if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') { + i += 2; + break; + } + } + } else if ( + xmlData.length > i + 8 && + xmlData[i + 1] === 'D' && + xmlData[i + 2] === 'O' && + xmlData[i + 3] === 'C' && + xmlData[i + 4] === 'T' && + xmlData[i + 5] === 'Y' && + xmlData[i + 6] === 'P' && + xmlData[i + 7] === 'E' + ) { + let angleBracketsCount = 1; + for (i += 8; i < xmlData.length; i++) { + if (xmlData[i] === '<') { + angleBracketsCount++; + } else if (xmlData[i] === '>') { + angleBracketsCount--; + if (angleBracketsCount === 0) { + break; + } + } + } + } else if ( + xmlData.length > i + 9 && + xmlData[i + 1] === '[' && + xmlData[i + 2] === 'C' && + xmlData[i + 3] === 'D' && + xmlData[i + 4] === 'A' && + xmlData[i + 5] === 'T' && + xmlData[i + 6] === 'A' && + xmlData[i + 7] === '[' + ) { + for (i += 8; i < xmlData.length; i++) { + if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') { + i += 2; + break; + } + } + } + + return i; +} + +const doubleQuote = '"'; +const singleQuote = "'"; + +/** + * Keep reading xmlData until '<' is found outside the attribute value. + * @param {string} xmlData + * @param {number} i + */ +function readAttributeStr(xmlData, i) { + let attrStr = ''; + let startChar = ''; + let tagClosed = false; + for (; i < xmlData.length; i++) { + if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) { + if (startChar === '') { + startChar = xmlData[i]; + } else if (startChar !== xmlData[i]) { + //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa + } else { + startChar = ''; + } + } else if (xmlData[i] === '>') { + if (startChar === '') { + tagClosed = true; + break; + } + } + attrStr += xmlData[i]; + } + if (startChar !== '') { + return false; + } + + return { + value: attrStr, + index: i, + tagClosed: tagClosed + }; +} + +/** + * Select all the attributes whether valid or invalid. + */ +const validAttrStrRegxp = new RegExp('(\\s*)([^\\s=]+)(\\s*=)?(\\s*([\'"])(([\\s\\S])*?)\\5)?', 'g'); + +//attr, ="sd", a="amit's", a="sd"b="saf", ab cd="" + +function validateAttributeString(attrStr, options) { + //console.log("start:"+attrStr+":end"); + + //if(attrStr.trim().length === 0) return true; //empty string + + const matches = getAllMatches(attrStr, validAttrStrRegxp); + const attrNames = {}; + + for (let i = 0; i < matches.length; i++) { + if (matches[i][1].length === 0) { + //nospace before attribute name: a="sd"b="saf" + return getErrorObject('InvalidAttr', "Attribute '" + matches[i][2] + "' has no space in starting.", getPositionFromMatch(matches[i])) + } else if (matches[i][3] !== undefined && matches[i][4] === undefined) { + return getErrorObject('InvalidAttr', "Attribute '" + matches[i][2] + "' is without value.", getPositionFromMatch(matches[i])); + } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) { + //independent attribute: ab + return getErrorObject('InvalidAttr', "boolean attribute '" + matches[i][2] + "' is not allowed.", getPositionFromMatch(matches[i])); + } + /* else if(matches[i][6] === undefined){//attribute without value: ab= + return { err: { code:"InvalidAttr",msg:"attribute " + matches[i][2] + " has no value assigned."}}; + } */ + const attrName = matches[i][2]; + if (!validateAttrName(attrName)) { + return getErrorObject('InvalidAttr', "Attribute '" + attrName + "' is an invalid name.", getPositionFromMatch(matches[i])); + } + if (!Object.prototype.hasOwnProperty.call(attrNames, attrName)) { + //check for duplicate attribute. + attrNames[attrName] = 1; + } else { + return getErrorObject('InvalidAttr', "Attribute '" + attrName + "' is repeated.", getPositionFromMatch(matches[i])); + } + } + + return true; +} + +function validateNumberAmpersand(xmlData, i) { + let re = /\d/; + if (xmlData[i] === 'x') { + i++; + re = /[\da-fA-F]/; + } + for (; i < xmlData.length; i++) { + if (xmlData[i] === ';') + return i; + if (!xmlData[i].match(re)) + break; + } + return -1; +} + +function validateAmpersand(xmlData, i) { + // https://www.w3.org/TR/xml/#dt-charref + i++; + if (xmlData[i] === ';') + return -1; + if (xmlData[i] === '#') { + i++; + return validateNumberAmpersand(xmlData, i); + } + let count = 0; + for (; i < xmlData.length; i++, count++) { + if (xmlData[i].match(/\w/) && count < 20) + continue; + if (xmlData[i] === ';') + break; + return -1; + } + return i; +} + +function getErrorObject(code, message, lineNumber) { + return { + err: { + code: code, + msg: message, + line: lineNumber.line || lineNumber, + col: lineNumber.col, + }, + }; +} + +function validateAttrName(attrName) { + return isName(attrName); +} + +// const startsWithXML = /^xml/i; + +function validateTagName(tagname) { + return isName(tagname) /* && !tagname.match(startsWithXML) */; +} + +//this function returns the line number for the character at the given index +function getLineNumberForPosition(xmlData, index) { + const lines = xmlData.substring(0, index).split(/\r?\n/); + return { + line: lines.length, + + // column number is last line's length + 1, because column numbering starts at 1: + col: lines[lines.length - 1].length + 1 + }; +} + +//this function returns the position of the first character of match within attrStr +function getPositionFromMatch(match) { + return match.startIndex + match[1].length; +} diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js new file mode 100644 index 000000000..30cfaa174 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js @@ -0,0 +1,6 @@ +// Re-export from fast-xml-builder for backward compatibility +import XMLBuilder from 'fast-xml-builder'; +export default XMLBuilder; + +// If there are any named exports you also want to re-export: +export * from 'fast-xml-builder'; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js new file mode 100644 index 000000000..da0b1a2ca --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js @@ -0,0 +1,391 @@ +import { isName } from '../util.js'; + +export default class DocTypeReader { + constructor(options) { + this.suppressValidationErr = !options; + this.options = options; + } + + readDocType(xmlData, i) { + + const entities = Object.create(null); + if (xmlData[i + 3] === 'O' && + xmlData[i + 4] === 'C' && + xmlData[i + 5] === 'T' && + xmlData[i + 6] === 'Y' && + xmlData[i + 7] === 'P' && + xmlData[i + 8] === 'E') { + i = i + 9; + let angleBracketsCount = 1; + let hasBody = false, comment = false; + let exp = ""; + for (; i < xmlData.length; i++) { + if (xmlData[i] === '<' && !comment) { //Determine the tag type + if (hasBody && hasSeq(xmlData, "!ENTITY", i)) { + i += 7; + let entityName, val; + [entityName, val, i] = this.readEntityExp(xmlData, i + 1, this.suppressValidationErr); + if (val.indexOf("&") === -1) { //Parameter entities are not supported + const escaped = entityName.replace(/[.\-+*:]/g, '\\.'); + entities[entityName] = { + regx: RegExp(`&${escaped};`, "g"), + val: val + }; + } + } + else if (hasBody && hasSeq(xmlData, "!ELEMENT", i)) { + i += 8;//Not supported + const { index } = this.readElementExp(xmlData, i + 1); + i = index; + } else if (hasBody && hasSeq(xmlData, "!ATTLIST", i)) { + i += 8;//Not supported + // const {index} = this.readAttlistExp(xmlData,i+1); + // i = index; + } else if (hasBody && hasSeq(xmlData, "!NOTATION", i)) { + i += 9;//Not supported + const { index } = this.readNotationExp(xmlData, i + 1, this.suppressValidationErr); + i = index; + } else if (hasSeq(xmlData, "!--", i)) comment = true; + else throw new Error(`Invalid DOCTYPE`); + + angleBracketsCount++; + exp = ""; + } else if (xmlData[i] === '>') { //Read tag content + if (comment) { + if (xmlData[i - 1] === "-" && xmlData[i - 2] === "-") { + comment = false; + angleBracketsCount--; + } + } else { + angleBracketsCount--; + } + if (angleBracketsCount === 0) { + break; + } + } else if (xmlData[i] === '[') { + hasBody = true; + } else { + exp += xmlData[i]; + } + } + if (angleBracketsCount !== 0) { + throw new Error(`Unclosed DOCTYPE`); + } + } else { + throw new Error(`Invalid Tag instead of DOCTYPE`); + } + return { entities, i }; + } + readEntityExp(xmlData, i) { + //External entities are not supported + // + + //Parameter entities are not supported + // + + //Internal entities are supported + // + + // Skip leading whitespace after this.options.maxEntitySize) { + throw new Error( + `Entity "${entityName}" size (${entityValue.length}) exceeds maximum allowed size (${this.options.maxEntitySize})` + ); + } + + i--; + return [entityName, entityValue, i]; + } + + readNotationExp(xmlData, i) { + // Skip leading whitespace after + // + // + // + // + + // Skip leading whitespace after { + while (index < data.length && /\s/.test(data[index])) { + index++; + } + return index; +}; + + + +function hasSeq(data, seq, i) { + for (let j = 0; j < seq.length; j++) { + if (seq[j] !== data[i + j + 1]) return false; + } + return true; +} + +function validateEntityName(name) { + if (isName(name)) + return name; + else + throw new Error(`Invalid entity name ${name}`); +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js new file mode 100644 index 000000000..b517f01f9 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js @@ -0,0 +1,88 @@ +export const defaultOptions = { + preserveOrder: false, + attributeNamePrefix: '@_', + attributesGroupName: false, + textNodeName: '#text', + ignoreAttributes: true, + removeNSPrefix: false, // remove NS from tag name or attribute name if true + allowBooleanAttributes: false, //a tag can have attributes without any value + //ignoreRootElement : false, + parseTagValue: true, + parseAttributeValue: false, + trimValues: true, //Trim string values of tag and attributes + cdataPropName: false, + numberParseOptions: { + hex: true, + leadingZeros: true, + eNotation: true + }, + tagValueProcessor: function (tagName, val) { + return val; + }, + attributeValueProcessor: function (attrName, val) { + return val; + }, + stopNodes: [], //nested tags will not be parsed even for errors + alwaysCreateTextNode: false, + isArray: () => false, + commentPropName: false, + unpairedTags: [], + processEntities: true, + htmlEntities: false, + ignoreDeclaration: false, + ignorePiTags: false, + transformTagName: false, + transformAttributeName: false, + updateTag: function (tagName, jPath, attrs) { + return tagName + }, + // skipEmptyListItem: false + captureMetaData: false, + maxNestedTags: 100, + strictReservedNames: true, +}; + +/** + * Normalizes processEntities option for backward compatibility + * @param {boolean|object} value + * @returns {object} Always returns normalized object + */ +function normalizeProcessEntities(value) { + // Boolean backward compatibility + if (typeof value === 'boolean') { + return { + enabled: value, // true or false + maxEntitySize: 10000, + maxExpansionDepth: 10, + maxTotalExpansions: 1000, + maxExpandedLength: 100000, + allowedTags: null, + tagFilter: null + }; + } + + // Object config - merge with defaults + if (typeof value === 'object' && value !== null) { + return { + enabled: value.enabled !== false, // default true if not specified + maxEntitySize: value.maxEntitySize ?? 10000, + maxExpansionDepth: value.maxExpansionDepth ?? 10, + maxTotalExpansions: value.maxTotalExpansions ?? 1000, + maxExpandedLength: value.maxExpandedLength ?? 100000, + allowedTags: value.allowedTags ?? null, + tagFilter: value.tagFilter ?? null + }; + } + + // Default to enabled with limits + return normalizeProcessEntities(true); +} + +export const buildOptions = function (options) { + const built = Object.assign({}, defaultOptions, options); + + // Always normalize processEntities for backward compatibility and validation + built.processEntities = normalizeProcessEntities(built.processEntities); + //console.debug(built.processEntities) + return built; +}; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js new file mode 100644 index 000000000..187b5deed --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js @@ -0,0 +1,729 @@ +'use strict'; +///@ts-check + +import { getAllMatches, isExist } from '../util.js'; +import xmlNode from './xmlNode.js'; +import DocTypeReader from './DocTypeReader.js'; +import toNumber from "strnum"; +import getIgnoreAttributesFn from "../ignoreAttributes.js"; + +// const regx = +// '<((!\\[CDATA\\[([\\s\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\/)(NAME)\\s*>))([^<]*)' +// .replace(/NAME/g, util.nameRegexp); + +//const tagsRegx = new RegExp("<(\\/?[\\w:\\-\._]+)([^>]*)>(\\s*"+cdataRegx+")*([^<]+)?","g"); +//const tagsRegx = new RegExp("<(\\/?)((\\w*:)?([\\w:\\-\._]+))([^>]*)>([^<]*)("+cdataRegx+"([^<]*))*([^<]+)?","g"); + +export default class OrderedObjParser { + constructor(options) { + this.options = options; + this.currentNode = null; + this.tagsNodeStack = []; + this.docTypeEntities = {}; + this.lastEntities = { + "apos": { regex: /&(apos|#39|#x27);/g, val: "'" }, + "gt": { regex: /&(gt|#62|#x3E);/g, val: ">" }, + "lt": { regex: /&(lt|#60|#x3C);/g, val: "<" }, + "quot": { regex: /&(quot|#34|#x22);/g, val: "\"" }, + }; + this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: "&" }; + this.htmlEntities = { + "space": { regex: /&(nbsp|#160);/g, val: " " }, + // "lt" : { regex: /&(lt|#60);/g, val: "<" }, + // "gt" : { regex: /&(gt|#62);/g, val: ">" }, + // "amp" : { regex: /&(amp|#38);/g, val: "&" }, + // "quot" : { regex: /&(quot|#34);/g, val: "\"" }, + // "apos" : { regex: /&(apos|#39);/g, val: "'" }, + "cent": { regex: /&(cent|#162);/g, val: "¢" }, + "pound": { regex: /&(pound|#163);/g, val: "£" }, + "yen": { regex: /&(yen|#165);/g, val: "¥" }, + "euro": { regex: /&(euro|#8364);/g, val: "€" }, + "copyright": { regex: /&(copy|#169);/g, val: "©" }, + "reg": { regex: /&(reg|#174);/g, val: "®" }, + "inr": { regex: /&(inr|#8377);/g, val: "₹" }, + "num_dec": { regex: /&#([0-9]{1,7});/g, val: (_, str) => fromCodePoint(str, 10, "&#") }, + "num_hex": { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (_, str) => fromCodePoint(str, 16, "&#x") }, + }; + this.addExternalEntities = addExternalEntities; + this.parseXml = parseXml; + this.parseTextData = parseTextData; + this.resolveNameSpace = resolveNameSpace; + this.buildAttributesMap = buildAttributesMap; + this.isItStopNode = isItStopNode; + this.replaceEntitiesValue = replaceEntitiesValue; + this.readStopNodeData = readStopNodeData; + this.saveTextToParentTag = saveTextToParentTag; + this.addChild = addChild; + this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes) + this.entityExpansionCount = 0; + this.currentExpandedLength = 0; + + if (this.options.stopNodes && this.options.stopNodes.length > 0) { + this.stopNodesExact = new Set(); + this.stopNodesWildcard = new Set(); + for (let i = 0; i < this.options.stopNodes.length; i++) { + const stopNodeExp = this.options.stopNodes[i]; + if (typeof stopNodeExp !== 'string') continue; + if (stopNodeExp.startsWith("*.")) { + this.stopNodesWildcard.add(stopNodeExp.substring(2)); + } else { + this.stopNodesExact.add(stopNodeExp); + } + } + } + } + +} + +function addExternalEntities(externalEntities) { + const entKeys = Object.keys(externalEntities); + for (let i = 0; i < entKeys.length; i++) { + const ent = entKeys[i]; + const escaped = ent.replace(/[.\-+*:]/g, '\\.'); + this.lastEntities[ent] = { + regex: new RegExp("&" + escaped + ";", "g"), + val: externalEntities[ent] + } + } +} + +/** + * @param {string} val + * @param {string} tagName + * @param {string} jPath + * @param {boolean} dontTrim + * @param {boolean} hasAttributes + * @param {boolean} isLeafNode + * @param {boolean} escapeEntities + */ +function parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) { + if (val !== undefined) { + if (this.options.trimValues && !dontTrim) { + val = val.trim(); + } + if (val.length > 0) { + if (!escapeEntities) val = this.replaceEntitiesValue(val, tagName, jPath); + + const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode); + if (newval === null || newval === undefined) { + //don't parse + return val; + } else if (typeof newval !== typeof val || newval !== val) { + //overwrite + return newval; + } else if (this.options.trimValues) { + return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions); + } else { + const trimmedVal = val.trim(); + if (trimmedVal === val) { + return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions); + } else { + return val; + } + } + } + } +} + +function resolveNameSpace(tagname) { + if (this.options.removeNSPrefix) { + const tags = tagname.split(':'); + const prefix = tagname.charAt(0) === '/' ? '/' : ''; + if (tags[0] === 'xmlns') { + return ''; + } + if (tags.length === 2) { + tagname = prefix + tags[1]; + } + } + return tagname; +} + +//TODO: change regex to capture NS +//const attrsRegx = new RegExp("([\\w\\-\\.\\:]+)\\s*=\\s*(['\"])((.|\n)*?)\\2","gm"); +const attrsRegx = new RegExp('([^\\s=]+)\\s*(=\\s*([\'"])([\\s\\S]*?)\\3)?', 'gm'); + +function buildAttributesMap(attrStr, jPath, tagName) { + if (this.options.ignoreAttributes !== true && typeof attrStr === 'string') { + // attrStr = attrStr.replace(/\r?\n/g, ' '); + //attrStr = attrStr || attrStr.trim(); + + const matches = getAllMatches(attrStr, attrsRegx); + const len = matches.length; //don't make it inline + const attrs = {}; + for (let i = 0; i < len; i++) { + const attrName = this.resolveNameSpace(matches[i][1]); + if (this.ignoreAttributesFn(attrName, jPath)) { + continue + } + let oldVal = matches[i][4]; + let aName = this.options.attributeNamePrefix + attrName; + if (attrName.length) { + if (this.options.transformAttributeName) { + aName = this.options.transformAttributeName(aName); + } + if (aName === "__proto__") aName = "#__proto__"; + + if (oldVal !== undefined) { + if (this.options.trimValues) { + oldVal = oldVal.trim(); + } + oldVal = this.replaceEntitiesValue(oldVal, tagName, jPath); + const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath); + if (newVal === null || newVal === undefined) { + //don't parse + attrs[aName] = oldVal; + } else if (typeof newVal !== typeof oldVal || newVal !== oldVal) { + //overwrite + attrs[aName] = newVal; + } else { + //parse + attrs[aName] = parseValue( + oldVal, + this.options.parseAttributeValue, + this.options.numberParseOptions + ); + } + } else if (this.options.allowBooleanAttributes) { + attrs[aName] = true; + } + } + } + if (!Object.keys(attrs).length) { + return; + } + if (this.options.attributesGroupName) { + const attrCollection = {}; + attrCollection[this.options.attributesGroupName] = attrs; + return attrCollection; + } + return attrs + } +} + +const parseXml = function (xmlData) { + xmlData = xmlData.replace(/\r\n?/g, "\n"); //TODO: remove this line + const xmlObj = new xmlNode('!xml'); + let currentNode = xmlObj; + let textData = ""; + let jPath = ""; + + // Reset entity expansion counters for this document + this.entityExpansionCount = 0; + this.currentExpandedLength = 0; + + const docTypeReader = new DocTypeReader(this.options.processEntities); + for (let i = 0; i < xmlData.length; i++) {//for each char in XML data + const ch = xmlData[i]; + if (ch === '<') { + // const nextIndex = i+1; + // const _2ndChar = xmlData[nextIndex]; + if (xmlData[i + 1] === '/') {//Closing Tag + const closeIndex = findClosingIndex(xmlData, ">", i, "Closing Tag is not closed.") + let tagName = xmlData.substring(i + 2, closeIndex).trim(); + + if (this.options.removeNSPrefix) { + const colonIndex = tagName.indexOf(":"); + if (colonIndex !== -1) { + tagName = tagName.substr(colonIndex + 1); + } + } + + if (this.options.transformTagName) { + tagName = this.options.transformTagName(tagName); + } + + if (currentNode) { + textData = this.saveTextToParentTag(textData, currentNode, jPath); + } + + //check if last tag of nested tag was unpaired tag + const lastTagName = jPath.substring(jPath.lastIndexOf(".") + 1); + if (tagName && this.options.unpairedTags.indexOf(tagName) !== -1) { + throw new Error(`Unpaired tag can not be used as closing tag: `); + } + let propIndex = 0 + if (lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1) { + propIndex = jPath.lastIndexOf('.', jPath.lastIndexOf('.') - 1) + this.tagsNodeStack.pop(); + } else { + propIndex = jPath.lastIndexOf("."); + } + jPath = jPath.substring(0, propIndex); + + currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope + textData = ""; + i = closeIndex; + } else if (xmlData[i + 1] === '?') { + + let tagData = readTagExp(xmlData, i, false, "?>"); + if (!tagData) throw new Error("Pi Tag is not closed."); + + textData = this.saveTextToParentTag(textData, currentNode, jPath); + if ((this.options.ignoreDeclaration && tagData.tagName === "?xml") || this.options.ignorePiTags) { + //do nothing + } else { + + const childNode = new xmlNode(tagData.tagName); + childNode.add(this.options.textNodeName, ""); + + if (tagData.tagName !== tagData.tagExp && tagData.attrExpPresent) { + childNode[":@"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName); + } + this.addChild(currentNode, childNode, jPath, i); + } + + + i = tagData.closeIndex + 1; + } else if (xmlData.substr(i + 1, 3) === '!--') { + const endIndex = findClosingIndex(xmlData, "-->", i + 4, "Comment is not closed.") + if (this.options.commentPropName) { + const comment = xmlData.substring(i + 4, endIndex - 2); + + textData = this.saveTextToParentTag(textData, currentNode, jPath); + + currentNode.add(this.options.commentPropName, [{ [this.options.textNodeName]: comment }]); + } + i = endIndex; + } else if (xmlData.substr(i + 1, 2) === '!D') { + const result = docTypeReader.readDocType(xmlData, i); + this.docTypeEntities = result.entities; + i = result.i; + } else if (xmlData.substr(i + 1, 2) === '![') { + const closeIndex = findClosingIndex(xmlData, "]]>", i, "CDATA is not closed.") - 2; + const tagExp = xmlData.substring(i + 9, closeIndex); + + textData = this.saveTextToParentTag(textData, currentNode, jPath); + + let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true); + if (val == undefined) val = ""; + + //cdata should be set even if it is 0 length string + if (this.options.cdataPropName) { + currentNode.add(this.options.cdataPropName, [{ [this.options.textNodeName]: tagExp }]); + } else { + currentNode.add(this.options.textNodeName, val); + } + + i = closeIndex + 2; + } else {//Opening tag + let result = readTagExp(xmlData, i, this.options.removeNSPrefix); + let tagName = result.tagName; + const rawTagName = result.rawTagName; + let tagExp = result.tagExp; + let attrExpPresent = result.attrExpPresent; + let closeIndex = result.closeIndex; + + if (this.options.transformTagName) { + //console.log(tagExp, tagName) + const newTagName = this.options.transformTagName(tagName); + if (tagExp === tagName) { + tagExp = newTagName + } + tagName = newTagName; + } + + if (this.options.strictReservedNames && + (tagName === this.options.commentPropName + || tagName === this.options.cdataPropName + )) { + throw new Error(`Invalid tag name: ${tagName}`); + } + + //save text as child node + if (currentNode && textData) { + if (currentNode.tagname !== '!xml') { + //when nested tag is found + textData = this.saveTextToParentTag(textData, currentNode, jPath, false); + } + } + + //check if last tag was unpaired tag + const lastTag = currentNode; + if (lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1) { + currentNode = this.tagsNodeStack.pop(); + jPath = jPath.substring(0, jPath.lastIndexOf(".")); + } + if (tagName !== xmlObj.tagname) { + jPath += jPath ? "." + tagName : tagName; + } + const startIndex = i; + if (this.isItStopNode(this.stopNodesExact, this.stopNodesWildcard, jPath, tagName)) { + let tagContent = ""; + //self-closing tag + if (tagExp.length > 0 && tagExp.lastIndexOf("/") === tagExp.length - 1) { + if (tagName[tagName.length - 1] === "/") { //remove trailing '/' + tagName = tagName.substr(0, tagName.length - 1); + jPath = jPath.substr(0, jPath.length - 1); + tagExp = tagName; + } else { + tagExp = tagExp.substr(0, tagExp.length - 1); + } + i = result.closeIndex; + } + //unpaired tag + else if (this.options.unpairedTags.indexOf(tagName) !== -1) { + + i = result.closeIndex; + } + //normal tag + else { + //read until closing tag is found + const result = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1); + if (!result) throw new Error(`Unexpected end of ${rawTagName}`); + i = result.i; + tagContent = result.tagContent; + } + + const childNode = new xmlNode(tagName); + + if (tagName !== tagExp && attrExpPresent) { + childNode[":@"] = this.buildAttributesMap(tagExp, jPath, tagName); + } + if (tagContent) { + tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true); + } + + jPath = jPath.substr(0, jPath.lastIndexOf(".")); + childNode.add(this.options.textNodeName, tagContent); + + this.addChild(currentNode, childNode, jPath, startIndex); + } else { + //selfClosing tag + if (tagExp.length > 0 && tagExp.lastIndexOf("/") === tagExp.length - 1) { + if (tagName[tagName.length - 1] === "/") { //remove trailing '/' + tagName = tagName.substr(0, tagName.length - 1); + jPath = jPath.substr(0, jPath.length - 1); + tagExp = tagName; + } else { + tagExp = tagExp.substr(0, tagExp.length - 1); + } + + if (this.options.transformTagName) { + const newTagName = this.options.transformTagName(tagName); + if (tagExp === tagName) { + tagExp = newTagName + } + tagName = newTagName; + } + + const childNode = new xmlNode(tagName); + if (tagName !== tagExp && attrExpPresent) { + childNode[":@"] = this.buildAttributesMap(tagExp, jPath, tagName); + } + this.addChild(currentNode, childNode, jPath, startIndex); + jPath = jPath.substr(0, jPath.lastIndexOf(".")); + } + else if(this.options.unpairedTags.indexOf(tagName) !== -1){//unpaired tag + const childNode = new xmlNode(tagName); + if(tagName !== tagExp && attrExpPresent){ + childNode[":@"] = this.buildAttributesMap(tagExp, jPath); + } + this.addChild(currentNode, childNode, jPath, startIndex); + jPath = jPath.substr(0, jPath.lastIndexOf(".")); + i = result.closeIndex; + // Continue to next iteration without changing currentNode + continue; + } + //opening tag + else { + const childNode = new xmlNode(tagName); + if (this.tagsNodeStack.length > this.options.maxNestedTags) { + throw new Error("Maximum nested tags exceeded"); + } + this.tagsNodeStack.push(currentNode); + + if (tagName !== tagExp && attrExpPresent) { + childNode[":@"] = this.buildAttributesMap(tagExp, jPath, tagName); + } + this.addChild(currentNode, childNode, jPath, startIndex); + currentNode = childNode; + } + textData = ""; + i = closeIndex; + } + } + } else { + textData += xmlData[i]; + } + } + return xmlObj.child; +} + +function addChild(currentNode, childNode, jPath, startIndex) { + // unset startIndex if not requested + if (!this.options.captureMetaData) startIndex = undefined; + const result = this.options.updateTag(childNode.tagname, jPath, childNode[":@"]) + if (result === false) { + //do nothing + } else if (typeof result === "string") { + childNode.tagname = result + currentNode.addChild(childNode, startIndex); + } else { + currentNode.addChild(childNode, startIndex); + } +} + +const replaceEntitiesValue = function (val, tagName, jPath) { + // Performance optimization: Early return if no entities to replace + if (val.indexOf('&') === -1) { + return val; + } + + const entityConfig = this.options.processEntities; + + if (!entityConfig.enabled) { + return val; + } + + // Check tag-specific filtering + if (entityConfig.allowedTags) { + if (!entityConfig.allowedTags.includes(tagName)) { + return val; // Skip entity replacement for current tag as not set + } + } + + if (entityConfig.tagFilter) { + if (!entityConfig.tagFilter(tagName, jPath)) { + return val; // Skip based on custom filter + } + } + + // Replace DOCTYPE entities + for (let entityName in this.docTypeEntities) { + const entity = this.docTypeEntities[entityName]; + const matches = val.match(entity.regx); + + if (matches) { + // Track expansions + this.entityExpansionCount += matches.length; + + // Check expansion limit + if (entityConfig.maxTotalExpansions && + this.entityExpansionCount > entityConfig.maxTotalExpansions) { + throw new Error( + `Entity expansion limit exceeded: ${this.entityExpansionCount} > ${entityConfig.maxTotalExpansions}` + ); + } + + // Store length before replacement + const lengthBefore = val.length; + val = val.replace(entity.regx, entity.val); + + // Check expanded length immediately after replacement + if (entityConfig.maxExpandedLength) { + this.currentExpandedLength += (val.length - lengthBefore); + + if (this.currentExpandedLength > entityConfig.maxExpandedLength) { + throw new Error( + `Total expanded content size exceeded: ${this.currentExpandedLength} > ${entityConfig.maxExpandedLength}` + ); + } + } + } + } + if (val.indexOf('&') === -1) return val; // Early exit + + // Replace standard entities + for (let entityName in this.lastEntities) { + const entity = this.lastEntities[entityName]; + val = val.replace(entity.regex, entity.val); + } + if (val.indexOf('&') === -1) return val; // Early exit + + // Replace HTML entities if enabled + if (this.options.htmlEntities) { + for (let entityName in this.htmlEntities) { + const entity = this.htmlEntities[entityName]; + val = val.replace(entity.regex, entity.val); + } + } + + // Replace ampersand entity last + val = val.replace(this.ampEntity.regex, this.ampEntity.val); + + return val; +} + + +function saveTextToParentTag(textData, parentNode, jPath, isLeafNode) { + if (textData) { //store previously collected data as textNode + if (isLeafNode === undefined) isLeafNode = parentNode.child.length === 0 + + textData = this.parseTextData(textData, + parentNode.tagname, + jPath, + false, + parentNode[":@"] ? Object.keys(parentNode[":@"]).length !== 0 : false, + isLeafNode); + + if (textData !== undefined && textData !== "") + parentNode.add(this.options.textNodeName, textData); + textData = ""; + } + return textData; +} + +//TODO: use jPath to simplify the logic +/** + * @param {Set} stopNodesExact + * @param {Set} stopNodesWildcard + * @param {string} jPath + * @param {string} currentTagName + */ +function isItStopNode(stopNodesExact, stopNodesWildcard, jPath, currentTagName) { + if (stopNodesWildcard && stopNodesWildcard.has(currentTagName)) return true; + if (stopNodesExact && stopNodesExact.has(jPath)) return true; + return false; +} + +/** + * Returns the tag Expression and where it is ending handling single-double quotes situation + * @param {string} xmlData + * @param {number} i starting index + * @returns + */ +function tagExpWithClosingIndex(xmlData, i, closingChar = ">") { + let attrBoundary; + let tagExp = ""; + for (let index = i; index < xmlData.length; index++) { + let ch = xmlData[index]; + if (attrBoundary) { + if (ch === attrBoundary) attrBoundary = "";//reset + } else if (ch === '"' || ch === "'") { + attrBoundary = ch; + } else if (ch === closingChar[0]) { + if (closingChar[1]) { + if (xmlData[index + 1] === closingChar[1]) { + return { + data: tagExp, + index: index + } + } + } else { + return { + data: tagExp, + index: index + } + } + } else if (ch === '\t') { + ch = " " + } + tagExp += ch; + } +} + +function findClosingIndex(xmlData, str, i, errMsg) { + const closingIndex = xmlData.indexOf(str, i); + if (closingIndex === -1) { + throw new Error(errMsg) + } else { + return closingIndex + str.length - 1; + } +} + +function readTagExp(xmlData, i, removeNSPrefix, closingChar = ">") { + const result = tagExpWithClosingIndex(xmlData, i + 1, closingChar); + if (!result) return; + let tagExp = result.data; + const closeIndex = result.index; + const separatorIndex = tagExp.search(/\s/); + let tagName = tagExp; + let attrExpPresent = true; + if (separatorIndex !== -1) {//separate tag name and attributes expression + tagName = tagExp.substring(0, separatorIndex); + tagExp = tagExp.substring(separatorIndex + 1).trimStart(); + } + + const rawTagName = tagName; + if (removeNSPrefix) { + const colonIndex = tagName.indexOf(":"); + if (colonIndex !== -1) { + tagName = tagName.substr(colonIndex + 1); + attrExpPresent = tagName !== result.data.substr(colonIndex + 1); + } + } + + return { + tagName: tagName, + tagExp: tagExp, + closeIndex: closeIndex, + attrExpPresent: attrExpPresent, + rawTagName: rawTagName, + } +} +/** + * find paired tag for a stop node + * @param {string} xmlData + * @param {string} tagName + * @param {number} i + */ +function readStopNodeData(xmlData, tagName, i) { + const startIndex = i; + // Starting at 1 since we already have an open tag + let openTagCount = 1; + + for (; i < xmlData.length; i++) { + if (xmlData[i] === "<") { + if (xmlData[i + 1] === "/") {//close tag + const closeIndex = findClosingIndex(xmlData, ">", i, `${tagName} is not closed`); + let closeTagName = xmlData.substring(i + 2, closeIndex).trim(); + if (closeTagName === tagName) { + openTagCount--; + if (openTagCount === 0) { + return { + tagContent: xmlData.substring(startIndex, i), + i: closeIndex + } + } + } + i = closeIndex; + } else if (xmlData[i + 1] === '?') { + const closeIndex = findClosingIndex(xmlData, "?>", i + 1, "StopNode is not closed.") + i = closeIndex; + } else if (xmlData.substr(i + 1, 3) === '!--') { + const closeIndex = findClosingIndex(xmlData, "-->", i + 3, "StopNode is not closed.") + i = closeIndex; + } else if (xmlData.substr(i + 1, 2) === '![') { + const closeIndex = findClosingIndex(xmlData, "]]>", i, "StopNode is not closed.") - 2; + i = closeIndex; + } else { + const tagData = readTagExp(xmlData, i, '>') + + if (tagData) { + const openTagName = tagData && tagData.tagName; + if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length - 1] !== "/") { + openTagCount++; + } + i = tagData.closeIndex; + } + } + } + }//end for loop +} + +function parseValue(val, shouldParse, options) { + if (shouldParse && typeof val === 'string') { + //console.log(options) + const newval = val.trim(); + if (newval === 'true') return true; + else if (newval === 'false') return false; + else return toNumber(val, options); + } else { + if (isExist(val)) { + return val; + } else { + return ''; + } + } +} + +function fromCodePoint(str, base, prefix) { + const codePoint = Number.parseInt(str, base); + + if (codePoint >= 0 && codePoint <= 0x10FFFF) { + return String.fromCodePoint(codePoint); + } else { + return prefix + str + ";"; + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js new file mode 100644 index 000000000..70fe5ba48 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js @@ -0,0 +1,71 @@ +import { buildOptions } from './OptionsBuilder.js'; +import OrderedObjParser from './OrderedObjParser.js'; +import prettify from './node2json.js'; +import { validate } from "../validator.js"; +import XmlNode from './xmlNode.js'; + +export default class XMLParser { + + constructor(options) { + this.externalEntities = {}; + this.options = buildOptions(options); + + } + /** + * Parse XML dats to JS object + * @param {string|Uint8Array} xmlData + * @param {boolean|Object} validationOption + */ + parse(xmlData, validationOption) { + if (typeof xmlData !== "string" && xmlData.toString) { + xmlData = xmlData.toString(); + } else if (typeof xmlData !== "string") { + throw new Error("XML data is accepted in String or Bytes[] form.") + } + + if (validationOption) { + if (validationOption === true) validationOption = {}; //validate with default options + + const result = validate(xmlData, validationOption); + if (result !== true) { + throw Error(`${result.err.msg}:${result.err.line}:${result.err.col}`) + } + } + const orderedObjParser = new OrderedObjParser(this.options); + orderedObjParser.addExternalEntities(this.externalEntities); + const orderedResult = orderedObjParser.parseXml(xmlData); + if (this.options.preserveOrder || orderedResult === undefined) return orderedResult; + else return prettify(orderedResult, this.options); + } + + /** + * Add Entity which is not by default supported by this library + * @param {string} key + * @param {string} value + */ + addEntity(key, value) { + if (value.indexOf("&") !== -1) { + throw new Error("Entity value can't have '&'") + } else if (key.indexOf("&") !== -1 || key.indexOf(";") !== -1) { + throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for ' '") + } else if (value === "&") { + throw new Error("An entity with value '&' is not permitted"); + } else { + this.externalEntities[key] = value; + } + } + + /** + * Returns a Symbol that can be used to access the metadata + * property on a node. + * + * If Symbol is not available in the environment, an ordinary property is used + * and the name of the property is here returned. + * + * The XMLMetaData property is only present when `captureMetaData` + * is true in the options. + */ + static getMetaDataSymbol() { + return XmlNode.getMetaDataSymbol(); + } +} diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/xmlparser/node2json.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/xmlparser/node2json.js new file mode 100644 index 000000000..b2e26dc96 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/xmlparser/node2json.js @@ -0,0 +1,123 @@ +'use strict'; + +import XmlNode from './xmlNode.js'; + +const METADATA_SYMBOL = XmlNode.getMetaDataSymbol(); + +/** + * + * @param {array} node + * @param {any} options + * @returns + */ +export default function prettify(node, options) { + return compress(node, options); +} + +/** + * + * @param {array} arr + * @param {object} options + * @param {string} jPath + * @returns object + */ +function compress(arr, options, jPath) { + let text; + const compressedObj = {}; //This is intended to be a plain object + for (let i = 0; i < arr.length; i++) { + const tagObj = arr[i]; + const property = propName(tagObj); + let newJpath = ""; + if (jPath === undefined) newJpath = property; + else newJpath = jPath + "." + property; + + if (property === options.textNodeName) { + if (text === undefined) text = tagObj[property]; + else text += "" + tagObj[property]; + } else if (property === undefined) { + continue; + } else if (tagObj[property]) { + + let val = compress(tagObj[property], options, newJpath); + const isLeaf = isLeafTag(val, options); + + if (tagObj[":@"]) { + assignAttributes(val, tagObj[":@"], newJpath, options); + } else if (Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode) { + val = val[options.textNodeName]; + } else if (Object.keys(val).length === 0) { + if (options.alwaysCreateTextNode) val[options.textNodeName] = ""; + else val = ""; + } + + if (tagObj[METADATA_SYMBOL] !== undefined && typeof val === "object" && val !== null) { + val[METADATA_SYMBOL] = tagObj[METADATA_SYMBOL]; // copy over metadata + } + + + if (compressedObj[property] !== undefined && Object.prototype.hasOwnProperty.call(compressedObj, property)) { + if (!Array.isArray(compressedObj[property])) { + compressedObj[property] = [compressedObj[property]]; + } + compressedObj[property].push(val); + } else { + //TODO: if a node is not an array, then check if it should be an array + //also determine if it is a leaf node + if (options.isArray(property, newJpath, isLeaf)) { + compressedObj[property] = [val]; + } else { + compressedObj[property] = val; + } + } + } + + } + // if(text && text.length > 0) compressedObj[options.textNodeName] = text; + if (typeof text === "string") { + if (text.length > 0) compressedObj[options.textNodeName] = text; + } else if (text !== undefined) compressedObj[options.textNodeName] = text; + + + return compressedObj; +} + +function propName(obj) { + const keys = Object.keys(obj); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if (key !== ":@") return key; + } +} + +function assignAttributes(obj, attrMap, jpath, options) { + if (attrMap) { + const keys = Object.keys(attrMap); + const len = keys.length; //don't make it inline + for (let i = 0; i < len; i++) { + const atrrName = keys[i]; + if (options.isArray(atrrName, jpath + "." + atrrName, true, true)) { + obj[atrrName] = [attrMap[atrrName]]; + } else { + obj[atrrName] = attrMap[atrrName]; + } + } + } +} + +function isLeafTag(obj, options) { + const { textNodeName } = options; + const propCount = Object.keys(obj).length; + + if (propCount === 0) { + return true; + } + + if ( + propCount === 1 && + (obj[textNodeName] || typeof obj[textNodeName] === "boolean" || obj[textNodeName] === 0) + ) { + return true; + } + + return false; +} diff --git a/food-ordering-app/server/node_modules/fast-xml-parser/src/xmlparser/xmlNode.js b/food-ordering-app/server/node_modules/fast-xml-parser/src/xmlparser/xmlNode.js new file mode 100644 index 000000000..4223a8d31 --- /dev/null +++ b/food-ordering-app/server/node_modules/fast-xml-parser/src/xmlparser/xmlNode.js @@ -0,0 +1,40 @@ +'use strict'; + +let METADATA_SYMBOL; + +if (typeof Symbol !== "function") { + METADATA_SYMBOL = "@@xmlMetadata"; +} else { + METADATA_SYMBOL = Symbol("XML Node Metadata"); +} + +export default class XmlNode { + constructor(tagname) { + this.tagname = tagname; + this.child = []; //nested tags, text, cdata, comments in order + this[":@"] = Object.create(null); //attributes map + } + add(key, val) { + // this.child.push( {name : key, val: val, isCdata: isCdata }); + if (key === "__proto__") key = "#__proto__"; + this.child.push({ [key]: val }); + } + addChild(node, startIndex) { + if (node.tagname === "__proto__") node.tagname = "#__proto__"; + if (node[":@"] && Object.keys(node[":@"]).length > 0) { + this.child.push({ [node.tagname]: node.child, [":@"]: node[":@"] }); + } else { + this.child.push({ [node.tagname]: node.child }); + } + // if requested, add the startIndex + if (startIndex !== undefined) { + // Note: for now we just overwrite the metadata. If we had more complex metadata, + // we might need to do an object append here: metadata = { ...metadata, startIndex } + this.child[this.child.length - 1][METADATA_SYMBOL] = { startIndex }; + } + } + /** symbol used for metadata */ + static getMetaDataSymbol() { + return METADATA_SYMBOL; + } +} diff --git a/food-ordering-app/server/node_modules/finalhandler/HISTORY.md b/food-ordering-app/server/node_modules/finalhandler/HISTORY.md index ec2d38b5d..77ce54d15 100644 --- a/food-ordering-app/server/node_modules/finalhandler/HISTORY.md +++ b/food-ordering-app/server/node_modules/finalhandler/HISTORY.md @@ -1,3 +1,24 @@ +v1.3.2 / 2025-12-01 +================== + + * deps: use tilde notation for dependencies + * deps: statuses@~2.0.2 + +v1.3.1 / 2024-09-11 +================== + + * deps: encodeurl@~2.0.0 + +v1.3.0 / 2024-09-03 +================== + + * ignore status message for HTTP/2 (#53) + +v1.2.1 / 2024-09-02 +================== + + * Gracefully handle when handling an error and socket is null + 1.2.0 / 2022-03-22 ================== diff --git a/food-ordering-app/server/node_modules/finalhandler/README.md b/food-ordering-app/server/node_modules/finalhandler/README.md index 81f10ef3d..6244a13eb 100644 --- a/food-ordering-app/server/node_modules/finalhandler/README.md +++ b/food-ordering-app/server/node_modules/finalhandler/README.md @@ -143,5 +143,5 @@ function logerror (err) { [coveralls-url]: https://coveralls.io/r/pillarjs/finalhandler?branch=master [downloads-image]: https://img.shields.io/npm/dm/finalhandler.svg [downloads-url]: https://npmjs.org/package/finalhandler -[github-actions-ci-image]: https://img.shields.io/github/workflow/status/pillarjs/finalhandler/ci/master?label=ci -[github-actions-ci-url]: https://github.com/jshttp/pillarjs/finalhandler?query=workflow%3Aci +[github-actions-ci-image]: https://github.com/pillarjs/finalhandler/actions/workflows/ci.yml/badge.svg +[github-actions-ci-url]: https://github.com/pillarjs/finalhandler/actions/workflows/ci.yml diff --git a/food-ordering-app/server/node_modules/finalhandler/index.js b/food-ordering-app/server/node_modules/finalhandler/index.js index f628e42fa..ec34be90d 100644 --- a/food-ordering-app/server/node_modules/finalhandler/index.js +++ b/food-ordering-app/server/node_modules/finalhandler/index.js @@ -125,7 +125,9 @@ function finalhandler (req, res, options) { // cannot actually respond if (headersSent(res)) { debug('cannot %d after headers sent', status) - req.socket.destroy() + if (req.socket) { + req.socket.destroy() + } return } @@ -276,7 +278,10 @@ function send (req, res, status, headers, message) { // response status res.statusCode = status - res.statusMessage = statuses.message[status] + + if (req.httpVersionMajor < 2) { + res.statusMessage = statuses.message[status] + } // remove any content headers res.removeHeader('Content-Encoding') diff --git a/food-ordering-app/server/node_modules/finalhandler/package.json b/food-ordering-app/server/node_modules/finalhandler/package.json index 16bf11ed7..ce618dc44 100644 --- a/food-ordering-app/server/node_modules/finalhandler/package.json +++ b/food-ordering-app/server/node_modules/finalhandler/package.json @@ -1,32 +1,32 @@ { "name": "finalhandler", "description": "Node.js final http responder", - "version": "1.2.0", + "version": "1.3.2", "author": "Douglas Christopher Wilson ", "license": "MIT", "repository": "pillarjs/finalhandler", "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "parseurl": "~1.3.3", - "statuses": "2.0.1", + "statuses": "~2.0.2", "unpipe": "~1.0.0" }, "devDependencies": { "eslint": "7.32.0", "eslint-config-standard": "14.1.1", - "eslint-plugin-import": "2.25.4", + "eslint-plugin-import": "2.26.0", "eslint-plugin-markdown": "2.2.1", "eslint-plugin-node": "11.1.0", "eslint-plugin-promise": "5.2.0", "eslint-plugin-standard": "4.1.0", - "mocha": "9.2.2", + "mocha": "10.0.0", "nyc": "15.1.0", "readable-stream": "2.3.6", "safe-buffer": "5.2.1", - "supertest": "6.2.2" + "supertest": "6.2.4" }, "files": [ "LICENSE", @@ -39,8 +39,9 @@ }, "scripts": { "lint": "eslint .", - "test": "mocha --reporter spec --bail --check-leaks test/", + "test": "mocha --reporter spec --check-leaks test/", "test-ci": "nyc --reporter=lcovonly --reporter=text npm test", - "test-cov": "nyc --reporter=html --reporter=text npm test" + "test-cov": "nyc --reporter=html --reporter=text npm test", + "test-inspect": "mocha --reporter spec --inspect --inspect-brk test/" } } diff --git a/food-ordering-app/server/node_modules/fsevents/LICENSE b/food-ordering-app/server/node_modules/fsevents/LICENSE deleted file mode 100644 index 5d70441c3..000000000 --- a/food-ordering-app/server/node_modules/fsevents/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -MIT License ------------ - -Copyright (C) 2010-2020 by Philipp Dunkel, Ben Noordhuis, Elan Shankar, Paul Miller - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/food-ordering-app/server/node_modules/fsevents/README.md b/food-ordering-app/server/node_modules/fsevents/README.md deleted file mode 100644 index 025c9a13e..000000000 --- a/food-ordering-app/server/node_modules/fsevents/README.md +++ /dev/null @@ -1,83 +0,0 @@ -# fsevents [![NPM](https://nodei.co/npm/fsevents.png)](https://nodei.co/npm/fsevents/) - -Native access to MacOS FSEvents in [Node.js](https://nodejs.org/) - -The FSEvents API in MacOS allows applications to register for notifications of -changes to a given directory tree. It is a very fast and lightweight alternative -to kqueue. - -This is a low-level library. For a cross-platform file watching module that -uses fsevents, check out [Chokidar](https://github.com/paulmillr/chokidar). - -## Installation - -Supports only **Node.js v8.16 and higher**. - -```sh -npm install fsevents -``` - -## Usage - -```js -const fsevents = require('fsevents'); -const stop = fsevents.watch(__dirname, (path, flags, id) => { - const info = fsevents.getInfo(path, flags, id); -}); // To start observation -stop(); // To end observation -``` - -The callback passed as the second parameter to `.watch` get's called whenever the operating system detects a -a change in the file system. It takes three arguments: - -###### `fsevents.watch(dirname: string, (path: string, flags: number, id: string) => void): () => Promise` - - * `path: string` - the item in the filesystem that have been changed - * `flags: number` - a numeric value describing what the change was - * `id: string` - an unique-id identifying this specific event - - Returns closer callback which when called returns a Promise resolving when the watcher process has been shut down. - -###### `fsevents.getInfo(path: string, flags: number, id: string): FsEventInfo` - -The `getInfo` function takes the `path`, `flags` and `id` arguments and converts those parameters into a structure -that is easier to digest to determine what the change was. - -The `FsEventsInfo` has the following shape: - -```js -/** - * @typedef {'created'|'modified'|'deleted'|'moved'|'root-changed'|'cloned'|'unknown'} FsEventsEvent - * @typedef {'file'|'directory'|'symlink'} FsEventsType - */ -{ - "event": "created", // {FsEventsEvent} - "path": "file.txt", - "type": "file", // {FsEventsType} - "changes": { - "inode": true, // Had iNode Meta-Information changed - "finder": false, // Had Finder Meta-Data changed - "access": false, // Had access permissions changed - "xattrs": false // Had xAttributes changed - }, - "flags": 0x100000000 -} -``` - -## Changelog - -- v2.3 supports Apple Silicon ARM CPUs -- v2 supports node 8.16+ and reduces package size massively -- v1.2.8 supports node 6+ -- v1.2.7 supports node 4+ - -## Troubleshooting - -- I'm getting `EBADPLATFORM` `Unsupported platform for fsevents` error. -- It's fine, nothing is broken. fsevents is macos-only. Other platforms are skipped. If you want to hide this warning, report a bug to NPM bugtracker asking them to hide ebadplatform warnings by default. - -## License - -The MIT License Copyright (C) 2010-2020 by Philipp Dunkel, Ben Noordhuis, Elan Shankar, Paul Miller — see LICENSE file. - -Visit our [GitHub page](https://github.com/fsevents/fsevents) and [NPM Page](https://npmjs.org/package/fsevents) diff --git a/food-ordering-app/server/node_modules/fsevents/fsevents.d.ts b/food-ordering-app/server/node_modules/fsevents/fsevents.d.ts deleted file mode 100644 index 2723c048a..000000000 --- a/food-ordering-app/server/node_modules/fsevents/fsevents.d.ts +++ /dev/null @@ -1,46 +0,0 @@ -declare type Event = "created" | "cloned" | "modified" | "deleted" | "moved" | "root-changed" | "unknown"; -declare type Type = "file" | "directory" | "symlink"; -declare type FileChanges = { - inode: boolean; - finder: boolean; - access: boolean; - xattrs: boolean; -}; -declare type Info = { - event: Event; - path: string; - type: Type; - changes: FileChanges; - flags: number; -}; -declare type WatchHandler = (path: string, flags: number, id: string) => void; -export declare function watch(path: string, handler: WatchHandler): () => Promise; -export declare function watch(path: string, since: number, handler: WatchHandler): () => Promise; -export declare function getInfo(path: string, flags: number): Info; -export declare const constants: { - None: 0x00000000; - MustScanSubDirs: 0x00000001; - UserDropped: 0x00000002; - KernelDropped: 0x00000004; - EventIdsWrapped: 0x00000008; - HistoryDone: 0x00000010; - RootChanged: 0x00000020; - Mount: 0x00000040; - Unmount: 0x00000080; - ItemCreated: 0x00000100; - ItemRemoved: 0x00000200; - ItemInodeMetaMod: 0x00000400; - ItemRenamed: 0x00000800; - ItemModified: 0x00001000; - ItemFinderInfoMod: 0x00002000; - ItemChangeOwner: 0x00004000; - ItemXattrMod: 0x00008000; - ItemIsFile: 0x00010000; - ItemIsDir: 0x00020000; - ItemIsSymlink: 0x00040000; - ItemIsHardlink: 0x00100000; - ItemIsLastHardlink: 0x00200000; - OwnEvent: 0x00080000; - ItemCloned: 0x00400000; -}; -export {}; diff --git a/food-ordering-app/server/node_modules/fsevents/fsevents.js b/food-ordering-app/server/node_modules/fsevents/fsevents.js deleted file mode 100644 index f1b31c953..000000000 --- a/food-ordering-app/server/node_modules/fsevents/fsevents.js +++ /dev/null @@ -1,82 +0,0 @@ -/* - ** © 2020 by Philipp Dunkel, Ben Noordhuis, Elan Shankar, Paul Miller - ** Licensed under MIT License. - */ - -/* jshint node:true */ -"use strict"; - -if (process.platform !== "darwin") { - throw new Error(`Module 'fsevents' is not compatible with platform '${process.platform}'`); -} - -const Native = require("./fsevents.node"); -const events = Native.constants; - -function watch(path, since, handler) { - if (typeof path !== "string") { - throw new TypeError(`fsevents argument 1 must be a string and not a ${typeof path}`); - } - if ("function" === typeof since && "undefined" === typeof handler) { - handler = since; - since = Native.flags.SinceNow; - } - if (typeof since !== "number") { - throw new TypeError(`fsevents argument 2 must be a number and not a ${typeof since}`); - } - if (typeof handler !== "function") { - throw new TypeError(`fsevents argument 3 must be a function and not a ${typeof handler}`); - } - - let instance = Native.start(Native.global, path, since, handler); - if (!instance) throw new Error(`could not watch: ${path}`); - return () => { - const result = instance ? Promise.resolve(instance).then(Native.stop) : Promise.resolve(undefined); - instance = undefined; - return result; - }; -} - -function getInfo(path, flags) { - return { - path, - flags, - event: getEventType(flags), - type: getFileType(flags), - changes: getFileChanges(flags), - }; -} - -function getFileType(flags) { - if (events.ItemIsFile & flags) return "file"; - if (events.ItemIsDir & flags) return "directory"; - if (events.ItemIsSymlink & flags) return "symlink"; -} -function anyIsTrue(obj) { - for (let key in obj) { - if (obj[key]) return true; - } - return false; -} -function getEventType(flags) { - if (events.ItemRemoved & flags) return "deleted"; - if (events.ItemRenamed & flags) return "moved"; - if (events.ItemCreated & flags) return "created"; - if (events.ItemModified & flags) return "modified"; - if (events.RootChanged & flags) return "root-changed"; - if (events.ItemCloned & flags) return "cloned"; - if (anyIsTrue(flags)) return "modified"; - return "unknown"; -} -function getFileChanges(flags) { - return { - inode: !!(events.ItemInodeMetaMod & flags), - finder: !!(events.ItemFinderInfoMod & flags), - access: !!(events.ItemChangeOwner & flags), - xattrs: !!(events.ItemXattrMod & flags), - }; -} - -exports.watch = watch; -exports.getInfo = getInfo; -exports.constants = events; diff --git a/food-ordering-app/server/node_modules/fsevents/fsevents.node b/food-ordering-app/server/node_modules/fsevents/fsevents.node deleted file mode 100755 index 00fac7e88..000000000 Binary files a/food-ordering-app/server/node_modules/fsevents/fsevents.node and /dev/null differ diff --git a/food-ordering-app/server/node_modules/fsevents/package.json b/food-ordering-app/server/node_modules/fsevents/package.json deleted file mode 100644 index af6da84ae..000000000 --- a/food-ordering-app/server/node_modules/fsevents/package.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "name": "fsevents", - "version": "2.3.2", - "description": "Native Access to MacOS FSEvents", - "main": "fsevents.js", - "types": "fsevents.d.ts", - "os": [ - "darwin" - ], - "files": [ - "fsevents.d.ts", - "fsevents.js", - "fsevents.node" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - }, - "scripts": { - "clean": "node-gyp clean && rm -f fsevents.node", - "build": "node-gyp clean && rm -f fsevents.node && node-gyp rebuild && node-gyp clean", - "test": "/bin/bash ./test.sh 2>/dev/null", - "prepublishOnly": "npm run build" - }, - "repository": { - "type": "git", - "url": "https://github.com/fsevents/fsevents.git" - }, - "keywords": [ - "fsevents", - "mac" - ], - "contributors": [ - { - "name": "Philipp Dunkel", - "email": "pip@pipobscure.com" - }, - { - "name": "Ben Noordhuis", - "email": "info@bnoordhuis.nl" - }, - { - "name": "Elan Shankar", - "email": "elan.shanker@gmail.com" - }, - { - "name": "Miroslav Bajtoš", - "email": "mbajtoss@gmail.com" - }, - { - "name": "Paul Miller", - "url": "https://paulmillr.com" - } - ], - "license": "MIT", - "bugs": { - "url": "https://github.com/fsevents/fsevents/issues" - }, - "homepage": "https://github.com/fsevents/fsevents", - "devDependencies": { - "node-gyp": "^6.1.0" - } -} diff --git a/food-ordering-app/server/node_modules/function-bind/.editorconfig b/food-ordering-app/server/node_modules/function-bind/.editorconfig deleted file mode 100644 index ac29adef0..000000000 --- a/food-ordering-app/server/node_modules/function-bind/.editorconfig +++ /dev/null @@ -1,20 +0,0 @@ -root = true - -[*] -indent_style = tab -indent_size = 4 -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true -max_line_length = 120 - -[CHANGELOG.md] -indent_style = space -indent_size = 2 - -[*.json] -max_line_length = off - -[Makefile] -max_line_length = off diff --git a/food-ordering-app/server/node_modules/function-bind/.eslintrc b/food-ordering-app/server/node_modules/function-bind/.eslintrc index 9b33d8edf..71a054fd3 100644 --- a/food-ordering-app/server/node_modules/function-bind/.eslintrc +++ b/food-ordering-app/server/node_modules/function-bind/.eslintrc @@ -6,10 +6,16 @@ "rules": { "func-name-matching": 0, "indent": [2, 4], - "max-nested-callbacks": [2, 3], - "max-params": [2, 3], - "max-statements": [2, 20], "no-new-func": [1], - "strict": [0] - } + }, + + "overrides": [ + { + "files": "test/**", + "rules": { + "max-lines-per-function": 0, + "strict": [0] + }, + }, + ], } diff --git a/food-ordering-app/server/node_modules/function-bind/.github/FUNDING.yml b/food-ordering-app/server/node_modules/function-bind/.github/FUNDING.yml new file mode 100644 index 000000000..744821959 --- /dev/null +++ b/food-ordering-app/server/node_modules/function-bind/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/function-bind +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/food-ordering-app/server/node_modules/function-bind/.github/SECURITY.md b/food-ordering-app/server/node_modules/function-bind/.github/SECURITY.md new file mode 100644 index 000000000..82e4285ad --- /dev/null +++ b/food-ordering-app/server/node_modules/function-bind/.github/SECURITY.md @@ -0,0 +1,3 @@ +# Security + +Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report. diff --git a/food-ordering-app/server/node_modules/function-bind/.jscs.json b/food-ordering-app/server/node_modules/function-bind/.jscs.json deleted file mode 100644 index 8c4479480..000000000 --- a/food-ordering-app/server/node_modules/function-bind/.jscs.json +++ /dev/null @@ -1,176 +0,0 @@ -{ - "es3": true, - - "additionalRules": [], - - "requireSemicolons": true, - - "disallowMultipleSpaces": true, - - "disallowIdentifierNames": [], - - "requireCurlyBraces": { - "allExcept": [], - "keywords": ["if", "else", "for", "while", "do", "try", "catch"] - }, - - "requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch", "function"], - - "disallowSpaceAfterKeywords": [], - - "disallowSpaceBeforeComma": true, - "disallowSpaceAfterComma": false, - "disallowSpaceBeforeSemicolon": true, - - "disallowNodeTypes": [ - "DebuggerStatement", - "ForInStatement", - "LabeledStatement", - "SwitchCase", - "SwitchStatement", - "WithStatement" - ], - - "requireObjectKeysOnNewLine": { "allExcept": ["sameLine"] }, - - "requireSpacesInAnonymousFunctionExpression": { "beforeOpeningRoundBrace": true, "beforeOpeningCurlyBrace": true }, - "requireSpacesInNamedFunctionExpression": { "beforeOpeningCurlyBrace": true }, - "disallowSpacesInNamedFunctionExpression": { "beforeOpeningRoundBrace": true }, - "requireSpacesInFunctionDeclaration": { "beforeOpeningCurlyBrace": true }, - "disallowSpacesInFunctionDeclaration": { "beforeOpeningRoundBrace": true }, - - "requireSpaceBetweenArguments": true, - - "disallowSpacesInsideParentheses": true, - - "disallowSpacesInsideArrayBrackets": true, - - "disallowQuotedKeysInObjects": { "allExcept": ["reserved"] }, - - "disallowSpaceAfterObjectKeys": true, - - "requireCommaBeforeLineBreak": true, - - "disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"], - "requireSpaceAfterPrefixUnaryOperators": [], - - "disallowSpaceBeforePostfixUnaryOperators": ["++", "--"], - "requireSpaceBeforePostfixUnaryOperators": [], - - "disallowSpaceBeforeBinaryOperators": [], - "requireSpaceBeforeBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="], - - "requireSpaceAfterBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="], - "disallowSpaceAfterBinaryOperators": [], - - "disallowImplicitTypeConversion": ["binary", "string"], - - "disallowKeywords": ["with", "eval"], - - "requireKeywordsOnNewLine": [], - "disallowKeywordsOnNewLine": ["else"], - - "requireLineFeedAtFileEnd": true, - - "disallowTrailingWhitespace": true, - - "disallowTrailingComma": true, - - "excludeFiles": ["node_modules/**", "vendor/**"], - - "disallowMultipleLineStrings": true, - - "requireDotNotation": { "allExcept": ["keywords"] }, - - "requireParenthesesAroundIIFE": true, - - "validateLineBreaks": "LF", - - "validateQuoteMarks": { - "escape": true, - "mark": "'" - }, - - "disallowOperatorBeforeLineBreak": [], - - "requireSpaceBeforeKeywords": [ - "do", - "for", - "if", - "else", - "switch", - "case", - "try", - "catch", - "finally", - "while", - "with", - "return" - ], - - "validateAlignedFunctionParameters": { - "lineBreakAfterOpeningBraces": true, - "lineBreakBeforeClosingBraces": true - }, - - "requirePaddingNewLinesBeforeExport": true, - - "validateNewlineAfterArrayElements": { - "maximum": 8 - }, - - "requirePaddingNewLinesAfterUseStrict": true, - - "disallowArrowFunctions": true, - - "disallowMultiLineTernary": true, - - "validateOrderInObjectKeys": "asc-insensitive", - - "disallowIdenticalDestructuringNames": true, - - "disallowNestedTernaries": { "maxLevel": 1 }, - - "requireSpaceAfterComma": { "allExcept": ["trailing"] }, - "requireAlignedMultilineParams": false, - - "requireSpacesInGenerator": { - "afterStar": true - }, - - "disallowSpacesInGenerator": { - "beforeStar": true - }, - - "disallowVar": false, - - "requireArrayDestructuring": false, - - "requireEnhancedObjectLiterals": false, - - "requireObjectDestructuring": false, - - "requireEarlyReturn": false, - - "requireCapitalizedConstructorsNew": { - "allExcept": ["Function", "String", "Object", "Symbol", "Number", "Date", "RegExp", "Error", "Boolean", "Array"] - }, - - "requireImportAlphabetized": false, - - "requireSpaceBeforeObjectValues": true, - "requireSpaceBeforeDestructuredValues": true, - - "disallowSpacesInsideTemplateStringPlaceholders": true, - - "disallowArrayDestructuringReturn": false, - - "requireNewlineBeforeSingleStatementsInIf": false, - - "disallowUnusedVariables": true, - - "requireSpacesInsideImportedObjectBraces": true, - - "requireUseStrict": true -} - diff --git a/food-ordering-app/server/node_modules/function-bind/.npmignore b/food-ordering-app/server/node_modules/function-bind/.npmignore deleted file mode 100644 index dbb555fd1..000000000 --- a/food-ordering-app/server/node_modules/function-bind/.npmignore +++ /dev/null @@ -1,22 +0,0 @@ -# gitignore -.DS_Store -.monitor -.*.swp -.nodemonignore -releases -*.log -*.err -fleet.json -public/browserify -bin/*.json -.bin -build -compile -.lock-wscript -coverage -node_modules - -# Only apps should have lockfiles -npm-shrinkwrap.json -package-lock.json -yarn.lock diff --git a/food-ordering-app/server/node_modules/function-bind/.nycrc b/food-ordering-app/server/node_modules/function-bind/.nycrc new file mode 100644 index 000000000..1826526e0 --- /dev/null +++ b/food-ordering-app/server/node_modules/function-bind/.nycrc @@ -0,0 +1,13 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "lines": 86, + "statements": 85.93, + "functions": 82.43, + "branches": 76.06, + "exclude": [ + "coverage", + "test" + ] +} diff --git a/food-ordering-app/server/node_modules/function-bind/.travis.yml b/food-ordering-app/server/node_modules/function-bind/.travis.yml deleted file mode 100644 index 85f70d246..000000000 --- a/food-ordering-app/server/node_modules/function-bind/.travis.yml +++ /dev/null @@ -1,168 +0,0 @@ -language: node_js -os: - - linux -node_js: - - "8.4" - - "7.10" - - "6.11" - - "5.12" - - "4.8" - - "iojs-v3.3" - - "iojs-v2.5" - - "iojs-v1.8" - - "0.12" - - "0.10" - - "0.8" -before_install: - - 'if [ "${TRAVIS_NODE_VERSION}" = "0.6" ]; then npm install -g npm@1.3 ; elif [ "${TRAVIS_NODE_VERSION}" != "0.9" ]; then case "$(npm --version)" in 1.*) npm install -g npm@1.4.28 ;; 2.*) npm install -g npm@2 ;; esac ; fi' - - 'if [ "${TRAVIS_NODE_VERSION}" != "0.6" ] && [ "${TRAVIS_NODE_VERSION}" != "0.9" ]; then if [ "${TRAVIS_NODE_VERSION%${TRAVIS_NODE_VERSION#[0-9]}}" = "0" ] || [ "${TRAVIS_NODE_VERSION:0:4}" = "iojs" ]; then npm install -g npm@4.5 ; else npm install -g npm; fi; fi' -install: - - 'if [ "${TRAVIS_NODE_VERSION}" = "0.6" ]; then nvm install 0.8 && npm install -g npm@1.3 && npm install -g npm@1.4.28 && npm install -g npm@2 && npm install && nvm use "${TRAVIS_NODE_VERSION}"; else npm install; fi;' -script: - - 'if [ -n "${PRETEST-}" ]; then npm run pretest ; fi' - - 'if [ -n "${POSTTEST-}" ]; then npm run posttest ; fi' - - 'if [ -n "${COVERAGE-}" ]; then npm run coverage ; fi' - - 'if [ -n "${TEST-}" ]; then npm run tests-only ; fi' -sudo: false -env: - - TEST=true -matrix: - fast_finish: true - include: - - node_js: "node" - env: PRETEST=true - - node_js: "4" - env: COVERAGE=true - - node_js: "8.3" - env: TEST=true ALLOW_FAILURE=true - - node_js: "8.2" - env: TEST=true ALLOW_FAILURE=true - - node_js: "8.1" - env: TEST=true ALLOW_FAILURE=true - - node_js: "8.0" - env: TEST=true ALLOW_FAILURE=true - - node_js: "7.9" - env: TEST=true ALLOW_FAILURE=true - - node_js: "7.8" - env: TEST=true ALLOW_FAILURE=true - - node_js: "7.7" - env: TEST=true ALLOW_FAILURE=true - - node_js: "7.6" - env: TEST=true ALLOW_FAILURE=true - - node_js: "7.5" - env: TEST=true ALLOW_FAILURE=true - - node_js: "7.4" - env: TEST=true ALLOW_FAILURE=true - - node_js: "7.3" - env: TEST=true ALLOW_FAILURE=true - - node_js: "7.2" - env: TEST=true ALLOW_FAILURE=true - - node_js: "7.1" - env: TEST=true ALLOW_FAILURE=true - - node_js: "7.0" - env: TEST=true ALLOW_FAILURE=true - - node_js: "6.10" - env: TEST=true ALLOW_FAILURE=true - - node_js: "6.9" - env: TEST=true ALLOW_FAILURE=true - - node_js: "6.8" - env: TEST=true ALLOW_FAILURE=true - - node_js: "6.7" - env: TEST=true ALLOW_FAILURE=true - - node_js: "6.6" - env: TEST=true ALLOW_FAILURE=true - - node_js: "6.5" - env: TEST=true ALLOW_FAILURE=true - - node_js: "6.4" - env: TEST=true ALLOW_FAILURE=true - - node_js: "6.3" - env: TEST=true ALLOW_FAILURE=true - - node_js: "6.2" - env: TEST=true ALLOW_FAILURE=true - - node_js: "6.1" - env: TEST=true ALLOW_FAILURE=true - - node_js: "6.0" - env: TEST=true ALLOW_FAILURE=true - - node_js: "5.11" - env: TEST=true ALLOW_FAILURE=true - - node_js: "5.10" - env: TEST=true ALLOW_FAILURE=true - - node_js: "5.9" - env: TEST=true ALLOW_FAILURE=true - - node_js: "5.8" - env: TEST=true ALLOW_FAILURE=true - - node_js: "5.7" - env: TEST=true ALLOW_FAILURE=true - - node_js: "5.6" - env: TEST=true ALLOW_FAILURE=true - - node_js: "5.5" - env: TEST=true ALLOW_FAILURE=true - - node_js: "5.4" - env: TEST=true ALLOW_FAILURE=true - - node_js: "5.3" - env: TEST=true ALLOW_FAILURE=true - - node_js: "5.2" - env: TEST=true ALLOW_FAILURE=true - - node_js: "5.1" - env: TEST=true ALLOW_FAILURE=true - - node_js: "5.0" - env: TEST=true ALLOW_FAILURE=true - - node_js: "4.7" - env: TEST=true ALLOW_FAILURE=true - - node_js: "4.6" - env: TEST=true ALLOW_FAILURE=true - - node_js: "4.5" - env: TEST=true ALLOW_FAILURE=true - - node_js: "4.4" - env: TEST=true ALLOW_FAILURE=true - - node_js: "4.3" - env: TEST=true ALLOW_FAILURE=true - - node_js: "4.2" - env: TEST=true ALLOW_FAILURE=true - - node_js: "4.1" - env: TEST=true ALLOW_FAILURE=true - - node_js: "4.0" - env: TEST=true ALLOW_FAILURE=true - - node_js: "iojs-v3.2" - env: TEST=true ALLOW_FAILURE=true - - node_js: "iojs-v3.1" - env: TEST=true ALLOW_FAILURE=true - - node_js: "iojs-v3.0" - env: TEST=true ALLOW_FAILURE=true - - node_js: "iojs-v2.4" - env: TEST=true ALLOW_FAILURE=true - - node_js: "iojs-v2.3" - env: TEST=true ALLOW_FAILURE=true - - node_js: "iojs-v2.2" - env: TEST=true ALLOW_FAILURE=true - - node_js: "iojs-v2.1" - env: TEST=true ALLOW_FAILURE=true - - node_js: "iojs-v2.0" - env: TEST=true ALLOW_FAILURE=true - - node_js: "iojs-v1.7" - env: TEST=true ALLOW_FAILURE=true - - node_js: "iojs-v1.6" - env: TEST=true ALLOW_FAILURE=true - - node_js: "iojs-v1.5" - env: TEST=true ALLOW_FAILURE=true - - node_js: "iojs-v1.4" - env: TEST=true ALLOW_FAILURE=true - - node_js: "iojs-v1.3" - env: TEST=true ALLOW_FAILURE=true - - node_js: "iojs-v1.2" - env: TEST=true ALLOW_FAILURE=true - - node_js: "iojs-v1.1" - env: TEST=true ALLOW_FAILURE=true - - node_js: "iojs-v1.0" - env: TEST=true ALLOW_FAILURE=true - - node_js: "0.11" - env: TEST=true ALLOW_FAILURE=true - - node_js: "0.9" - env: TEST=true ALLOW_FAILURE=true - - node_js: "0.6" - env: TEST=true ALLOW_FAILURE=true - - node_js: "0.4" - env: TEST=true ALLOW_FAILURE=true - allow_failures: - - os: osx - - env: TEST=true ALLOW_FAILURE=true diff --git a/food-ordering-app/server/node_modules/function-bind/CHANGELOG.md b/food-ordering-app/server/node_modules/function-bind/CHANGELOG.md new file mode 100644 index 000000000..f9e6cc078 --- /dev/null +++ b/food-ordering-app/server/node_modules/function-bind/CHANGELOG.md @@ -0,0 +1,136 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.1.2](https://github.com/ljharb/function-bind/compare/v1.1.1...v1.1.2) - 2023-10-12 + +### Merged + +- Point to the correct file [`#16`](https://github.com/ljharb/function-bind/pull/16) + +### Commits + +- [Tests] migrate tests to Github Actions [`4f8b57c`](https://github.com/ljharb/function-bind/commit/4f8b57c02f2011fe9ae353d5e74e8745f0988af8) +- [Tests] remove `jscs` [`90eb2ed`](https://github.com/ljharb/function-bind/commit/90eb2edbeefd5b76cd6c3a482ea3454db169b31f) +- [meta] update `.gitignore` [`53fcdc3`](https://github.com/ljharb/function-bind/commit/53fcdc371cd66634d6e9b71c836a50f437e89fed) +- [Tests] up to `node` `v11.10`, `v10.15`, `v9.11`, `v8.15`, `v6.16`, `v4.9`; use `nvm install-latest-npm`; run audit script in tests [`1fe8f6e`](https://github.com/ljharb/function-bind/commit/1fe8f6e9aed0dfa8d8b3cdbd00c7f5ea0cd2b36e) +- [meta] add `auto-changelog` [`1921fcb`](https://github.com/ljharb/function-bind/commit/1921fcb5b416b63ffc4acad051b6aad5722f777d) +- [Robustness] remove runtime dependency on all builtins except `.apply` [`f743e61`](https://github.com/ljharb/function-bind/commit/f743e61aa6bb2360358c04d4884c9db853d118b7) +- Docs: enable badges; update wording [`503cb12`](https://github.com/ljharb/function-bind/commit/503cb12d998b5f91822776c73332c7adcd6355dd) +- [readme] update badges [`290c5db`](https://github.com/ljharb/function-bind/commit/290c5dbbbda7264efaeb886552a374b869a4bb48) +- [Tests] switch to nyc for coverage [`ea360ba`](https://github.com/ljharb/function-bind/commit/ea360ba907fc2601ed18d01a3827fa2d3533cdf8) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape` [`cae5e9e`](https://github.com/ljharb/function-bind/commit/cae5e9e07a5578dc6df26c03ee22851ce05b943c) +- [meta] add `funding` field; create FUNDING.yml [`c9f4274`](https://github.com/ljharb/function-bind/commit/c9f4274aa80ea3aae9657a3938fdba41a3b04ca6) +- [Tests] fix eslint errors from #15 [`f69aaa2`](https://github.com/ljharb/function-bind/commit/f69aaa2beb2fdab4415bfb885760a699d0b9c964) +- [actions] fix permissions [`99a0cd9`](https://github.com/ljharb/function-bind/commit/99a0cd9f3b5bac223a0d572f081834cd73314be7) +- [meta] use `npmignore` to autogenerate an npmignore file [`f03b524`](https://github.com/ljharb/function-bind/commit/f03b524ca91f75a109a5d062f029122c86ecd1ae) +- [Dev Deps] update `@ljharb/eslint‑config`, `eslint`, `tape` [`7af9300`](https://github.com/ljharb/function-bind/commit/7af930023ae2ce7645489532821e4fbbcd7a2280) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `covert`, `tape` [`64a9127`](https://github.com/ljharb/function-bind/commit/64a9127ab0bd331b93d6572eaf6e9971967fc08c) +- [Tests] use `aud` instead of `npm audit` [`e75069c`](https://github.com/ljharb/function-bind/commit/e75069c50010a8fcce2a9ce2324934c35fdb4386) +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`d03555c`](https://github.com/ljharb/function-bind/commit/d03555ca59dea3b71ce710045e4303b9e2619e28) +- [meta] add `safe-publish-latest` [`9c8f809`](https://github.com/ljharb/function-bind/commit/9c8f8092aed027d7e80c94f517aa892385b64f09) +- [Dev Deps] update `@ljharb/eslint-config`, `tape` [`baf6893`](https://github.com/ljharb/function-bind/commit/baf6893e27f5b59abe88bc1995e6f6ed1e527397) +- [meta] create SECURITY.md [`4db1779`](https://github.com/ljharb/function-bind/commit/4db17799f1f28ae294cb95e0081ca2b591c3911b) +- [Tests] add `npm run audit` [`c8b38ec`](https://github.com/ljharb/function-bind/commit/c8b38ec40ed3f85dabdee40ed4148f1748375bc2) +- Revert "Point to the correct file" [`05cdf0f`](https://github.com/ljharb/function-bind/commit/05cdf0fa205c6a3c5ba40bbedd1dfa9874f915c9) + +## [v1.1.1](https://github.com/ljharb/function-bind/compare/v1.1.0...v1.1.1) - 2017-08-28 + +### Commits + +- [Tests] up to `node` `v8`; newer npm breaks on older node; fix scripts [`817f7d2`](https://github.com/ljharb/function-bind/commit/817f7d28470fdbff8ef608d4d565dd4d1430bc5e) +- [Dev Deps] update `eslint`, `jscs`, `tape`, `@ljharb/eslint-config` [`854288b`](https://github.com/ljharb/function-bind/commit/854288b1b6f5c555f89aceb9eff1152510262084) +- [Dev Deps] update `tape`, `jscs`, `eslint`, `@ljharb/eslint-config` [`83e639f`](https://github.com/ljharb/function-bind/commit/83e639ff74e6cd6921285bccec22c1bcf72311bd) +- Only apps should have lockfiles [`5ed97f5`](https://github.com/ljharb/function-bind/commit/5ed97f51235c17774e0832e122abda0f3229c908) +- Use a SPDX-compliant “license” field. [`5feefea`](https://github.com/ljharb/function-bind/commit/5feefea0dc0193993e83e5df01ded424403a5381) + +## [v1.1.0](https://github.com/ljharb/function-bind/compare/v1.0.2...v1.1.0) - 2016-02-14 + +### Commits + +- Update `eslint`, `tape`; use my personal shared `eslint` config [`9c9062a`](https://github.com/ljharb/function-bind/commit/9c9062abbe9dd70b59ea2c3a3c3a81f29b457097) +- Add `npm run eslint` [`dd96c56`](https://github.com/ljharb/function-bind/commit/dd96c56720034a3c1ffee10b8a59a6f7c53e24ad) +- [New] return the native `bind` when available. [`82186e0`](https://github.com/ljharb/function-bind/commit/82186e03d73e580f95ff167e03f3582bed90ed72) +- [Dev Deps] update `tape`, `jscs`, `eslint`, `@ljharb/eslint-config` [`a3dd767`](https://github.com/ljharb/function-bind/commit/a3dd76720c795cb7f4586b0544efabf8aa107b8b) +- Update `eslint` [`3dae2f7`](https://github.com/ljharb/function-bind/commit/3dae2f7423de30a2d20313ddb1edc19660142fe9) +- Update `tape`, `covert`, `jscs` [`a181eee`](https://github.com/ljharb/function-bind/commit/a181eee0cfa24eb229c6e843a971f36e060a2f6a) +- [Tests] up to `node` `v5.6`, `v4.3` [`964929a`](https://github.com/ljharb/function-bind/commit/964929a6a4ddb36fb128de2bcc20af5e4f22e1ed) +- Test up to `io.js` `v2.1` [`2be7310`](https://github.com/ljharb/function-bind/commit/2be7310f2f74886a7124ca925be411117d41d5ea) +- Update `tape`, `jscs`, `eslint`, `@ljharb/eslint-config` [`45f3d68`](https://github.com/ljharb/function-bind/commit/45f3d6865c6ca93726abcef54febe009087af101) +- [Dev Deps] update `tape`, `jscs` [`6e1340d`](https://github.com/ljharb/function-bind/commit/6e1340d94642deaecad3e717825db641af4f8b1f) +- [Tests] up to `io.js` `v3.3`, `node` `v4.1` [`d9bad2b`](https://github.com/ljharb/function-bind/commit/d9bad2b778b1b3a6dd2876087b88b3acf319f8cc) +- Update `eslint` [`935590c`](https://github.com/ljharb/function-bind/commit/935590caa024ab356102e4858e8fc315b2ccc446) +- [Dev Deps] update `jscs`, `eslint`, `@ljharb/eslint-config` [`8c9a1ef`](https://github.com/ljharb/function-bind/commit/8c9a1efd848e5167887aa8501857a0940a480c57) +- Test on `io.js` `v2.2` [`9a3a38c`](https://github.com/ljharb/function-bind/commit/9a3a38c92013aed6e108666e7bd40969b84ac86e) +- Run `travis-ci` tests on `iojs` and `node` v0.12; speed up builds; allow 0.8 failures. [`69afc26`](https://github.com/ljharb/function-bind/commit/69afc2617405b147dd2a8d8ae73ca9e9283f18b4) +- [Dev Deps] Update `tape`, `eslint` [`36c1be0`](https://github.com/ljharb/function-bind/commit/36c1be0ab12b45fe5df6b0fdb01a5d5137fd0115) +- Update `tape`, `jscs` [`98d8303`](https://github.com/ljharb/function-bind/commit/98d8303cd5ca1c6b8f985469f86b0d44d7d45f6e) +- Update `jscs` [`9633a4e`](https://github.com/ljharb/function-bind/commit/9633a4e9fbf82051c240855166e468ba8ba0846f) +- Update `tape`, `jscs` [`c80ef0f`](https://github.com/ljharb/function-bind/commit/c80ef0f46efc9791e76fa50de4414092ac147831) +- Test up to `io.js` `v3.0` [`7e2c853`](https://github.com/ljharb/function-bind/commit/7e2c8537d52ab9cf5a655755561d8917684c0df4) +- Test on `io.js` `v2.4` [`5a199a2`](https://github.com/ljharb/function-bind/commit/5a199a27ba46795ba5eaf0845d07d4b8232895c9) +- Test on `io.js` `v2.3` [`a511b88`](https://github.com/ljharb/function-bind/commit/a511b8896de0bddf3b56862daa416c701f4d0453) +- Fixing a typo from 822b4e1938db02dc9584aa434fd3a45cb20caf43 [`732d6b6`](https://github.com/ljharb/function-bind/commit/732d6b63a9b33b45230e630dbcac7a10855d3266) +- Update `jscs` [`da52a48`](https://github.com/ljharb/function-bind/commit/da52a4886c06d6490f46ae30b15e4163ba08905d) +- Lock covert to v1.0.0. [`d6150fd`](https://github.com/ljharb/function-bind/commit/d6150fda1e6f486718ebdeff823333d9e48e7430) + +## [v1.0.2](https://github.com/ljharb/function-bind/compare/v1.0.1...v1.0.2) - 2014-10-04 + +## [v1.0.1](https://github.com/ljharb/function-bind/compare/v1.0.0...v1.0.1) - 2014-10-03 + +### Merged + +- make CI build faster [`#3`](https://github.com/ljharb/function-bind/pull/3) + +### Commits + +- Using my standard jscs.json [`d8ee94c`](https://github.com/ljharb/function-bind/commit/d8ee94c993eff0a84cf5744fe6a29627f5cffa1a) +- Adding `npm run lint` [`7571ab7`](https://github.com/ljharb/function-bind/commit/7571ab7dfdbd99b25a1dbb2d232622bd6f4f9c10) +- Using consistent indentation [`e91a1b1`](https://github.com/ljharb/function-bind/commit/e91a1b13a61e99ec1e530e299b55508f74218a95) +- Updating jscs [`7e17892`](https://github.com/ljharb/function-bind/commit/7e1789284bc629bc9c1547a61c9b227bbd8c7a65) +- Using consistent quotes [`c50b57f`](https://github.com/ljharb/function-bind/commit/c50b57fcd1c5ec38320979c837006069ebe02b77) +- Adding keywords [`cb94631`](https://github.com/ljharb/function-bind/commit/cb946314eed35f21186a25fb42fc118772f9ee00) +- Directly export a function expression instead of using a declaration, and relying on hoisting. [`5a33c5f`](https://github.com/ljharb/function-bind/commit/5a33c5f45642de180e0d207110bf7d1843ceb87c) +- Naming npm URL and badge in README; use SVG [`2aef8fc`](https://github.com/ljharb/function-bind/commit/2aef8fcb79d54e63a58ae557c4e60949e05d5e16) +- Naming deps URLs in README [`04228d7`](https://github.com/ljharb/function-bind/commit/04228d766670ee45ca24e98345c1f6a7621065b5) +- Naming travis-ci URLs in README; using SVG [`62c810c`](https://github.com/ljharb/function-bind/commit/62c810c2f54ced956cd4d4ab7b793055addfe36e) +- Make sure functions are invoked correctly (also passing coverage tests) [`2b289b4`](https://github.com/ljharb/function-bind/commit/2b289b4dfbf037ffcfa4dc95eb540f6165e9e43a) +- Removing the strict mode pragmas; they make tests fail. [`1aa701d`](https://github.com/ljharb/function-bind/commit/1aa701d199ddc3782476e8f7eef82679be97b845) +- Adding myself as a contributor [`85fd57b`](https://github.com/ljharb/function-bind/commit/85fd57b0860e5a7af42de9a287f3f265fc6d72fc) +- Adding strict mode pragmas [`915b08e`](https://github.com/ljharb/function-bind/commit/915b08e084c86a722eafe7245e21db74aa21ca4c) +- Adding devDeps URLs to README [`4ccc731`](https://github.com/ljharb/function-bind/commit/4ccc73112c1769859e4ca3076caf4086b3cba2cd) +- Fixing the description. [`a7a472c`](https://github.com/ljharb/function-bind/commit/a7a472cf649af515c635cf560fc478fbe48999c8) +- Using a function expression instead of a function declaration. [`b5d3e4e`](https://github.com/ljharb/function-bind/commit/b5d3e4ea6aaffc63888953eeb1fbc7ff45f1fa14) +- Updating tape [`f086be6`](https://github.com/ljharb/function-bind/commit/f086be6029fb56dde61a258c1340600fa174d1e0) +- Updating jscs [`5f9bdb3`](https://github.com/ljharb/function-bind/commit/5f9bdb375ab13ba48f30852aab94029520c54d71) +- Updating jscs [`9b409ba`](https://github.com/ljharb/function-bind/commit/9b409ba6118e23395a4e5d83ef39152aab9d3bfc) +- Run coverage as part of tests. [`8e1b6d4`](https://github.com/ljharb/function-bind/commit/8e1b6d459f047d1bd4fee814e01247c984c80bd0) +- Run linter as part of tests [`c1ca83f`](https://github.com/ljharb/function-bind/commit/c1ca83f832df94587d09e621beba682fabfaa987) +- Updating covert [`701e837`](https://github.com/ljharb/function-bind/commit/701e83774b57b4d3ef631e1948143f43a72f4bb9) + +## [v1.0.0](https://github.com/ljharb/function-bind/compare/v0.2.0...v1.0.0) - 2014-08-09 + +### Commits + +- Make sure old and unstable nodes don't fail Travis [`27adca3`](https://github.com/ljharb/function-bind/commit/27adca34a4ab6ad67b6dfde43942a1b103ce4d75) +- Fixing an issue when the bound function is called as a constructor in ES3. [`e20122d`](https://github.com/ljharb/function-bind/commit/e20122d267d92ce553859b280cbbea5d27c07731) +- Adding `npm run coverage` [`a2e29c4`](https://github.com/ljharb/function-bind/commit/a2e29c4ecaef9e2f6cd1603e868c139073375502) +- Updating tape [`b741168`](https://github.com/ljharb/function-bind/commit/b741168b12b235b1717ff696087645526b69213c) +- Upgrading tape [`63631a0`](https://github.com/ljharb/function-bind/commit/63631a04c7fbe97cc2fa61829cc27246d6986f74) +- Updating tape [`363cb46`](https://github.com/ljharb/function-bind/commit/363cb46dafb23cb3e347729a22f9448051d78464) + +## v0.2.0 - 2014-03-23 + +### Commits + +- Updating test coverage to match es5-shim. [`aa94d44`](https://github.com/ljharb/function-bind/commit/aa94d44b8f9d7f69f10e060db7709aa7a694e5d4) +- initial [`942ee07`](https://github.com/ljharb/function-bind/commit/942ee07e94e542d91798137bc4b80b926137e066) +- Setting the bound function's length properly. [`079f46a`](https://github.com/ljharb/function-bind/commit/079f46a2d3515b7c0b308c2c13fceb641f97ca25) +- Ensuring that some older browsers will throw when given a regex. [`36ac55b`](https://github.com/ljharb/function-bind/commit/36ac55b87f460d4330253c92870aa26fbfe8227f) +- Removing npm scripts that don't have dependencies [`9d2be60`](https://github.com/ljharb/function-bind/commit/9d2be600002cb8bc8606f8f3585ad3e05868c750) +- Updating tape [`297a4ac`](https://github.com/ljharb/function-bind/commit/297a4acc5464db381940aafb194d1c88f4e678f3) +- Skipping length tests for now. [`d9891ea`](https://github.com/ljharb/function-bind/commit/d9891ea4d2aaffa69f408339cdd61ff740f70565) +- don't take my tea [`dccd930`](https://github.com/ljharb/function-bind/commit/dccd930bfd60ea10cb178d28c97550c3bc8c1e07) diff --git a/food-ordering-app/server/node_modules/function-bind/README.md b/food-ordering-app/server/node_modules/function-bind/README.md index 81862a02c..814c20b5a 100644 --- a/food-ordering-app/server/node_modules/function-bind/README.md +++ b/food-ordering-app/server/node_modules/function-bind/README.md @@ -1,22 +1,19 @@ -# function-bind +# function-bind [![Version Badge][npm-version-svg]][package-url] - +[![github actions][actions-image]][actions-url] + +[![dependency status][deps-svg]][deps-url] +[![dev dependency status][dev-deps-svg]][dev-deps-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] - +[![npm badge][npm-badge-png]][package-url] Implementation of function.prototype.bind -## Example +Old versions of phantomjs, Internet Explorer < 9, and node < 0.6 don't support `Function.prototype.bind`. -I mainly do this for unit tests I run on phantomjs. -PhantomJS does not have Function.prototype.bind :( +## Example ```js Function.prototype.bind = require("function-bind") @@ -32,17 +29,18 @@ Function.prototype.bind = require("function-bind") ## MIT Licenced - [travis-svg]: https://travis-ci.org/Raynos/function-bind.svg - [travis-url]: https://travis-ci.org/Raynos/function-bind - [npm-badge-svg]: https://badge.fury.io/js/function-bind.svg - [npm-url]: https://npmjs.org/package/function-bind - [5]: https://coveralls.io/repos/Raynos/function-bind/badge.png - [6]: https://coveralls.io/r/Raynos/function-bind - [7]: https://gemnasium.com/Raynos/function-bind.png - [8]: https://gemnasium.com/Raynos/function-bind - [deps-svg]: https://david-dm.org/Raynos/function-bind.svg - [deps-url]: https://david-dm.org/Raynos/function-bind - [dev-deps-svg]: https://david-dm.org/Raynos/function-bind/dev-status.svg - [dev-deps-url]: https://david-dm.org/Raynos/function-bind#info=devDependencies - [11]: https://ci.testling.com/Raynos/function-bind.png - [12]: https://ci.testling.com/Raynos/function-bind +[package-url]: https://npmjs.org/package/function-bind +[npm-version-svg]: https://versionbadg.es/Raynos/function-bind.svg +[deps-svg]: https://david-dm.org/Raynos/function-bind.svg +[deps-url]: https://david-dm.org/Raynos/function-bind +[dev-deps-svg]: https://david-dm.org/Raynos/function-bind/dev-status.svg +[dev-deps-url]: https://david-dm.org/Raynos/function-bind#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/function-bind.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/function-bind.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/function-bind.svg +[downloads-url]: https://npm-stat.com/charts.html?package=function-bind +[codecov-image]: https://codecov.io/gh/Raynos/function-bind/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/Raynos/function-bind/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/Raynos/function-bind +[actions-url]: https://github.com/Raynos/function-bind/actions diff --git a/food-ordering-app/server/node_modules/function-bind/implementation.js b/food-ordering-app/server/node_modules/function-bind/implementation.js index cc4daec1b..fd4384cc0 100644 --- a/food-ordering-app/server/node_modules/function-bind/implementation.js +++ b/food-ordering-app/server/node_modules/function-bind/implementation.js @@ -3,43 +3,75 @@ /* eslint no-invalid-this: 1 */ var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible '; -var slice = Array.prototype.slice; var toStr = Object.prototype.toString; +var max = Math.max; var funcType = '[object Function]'; +var concatty = function concatty(a, b) { + var arr = []; + + for (var i = 0; i < a.length; i += 1) { + arr[i] = a[i]; + } + for (var j = 0; j < b.length; j += 1) { + arr[j + a.length] = b[j]; + } + + return arr; +}; + +var slicy = function slicy(arrLike, offset) { + var arr = []; + for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) { + arr[j] = arrLike[i]; + } + return arr; +}; + +var joiny = function (arr, joiner) { + var str = ''; + for (var i = 0; i < arr.length; i += 1) { + str += arr[i]; + if (i + 1 < arr.length) { + str += joiner; + } + } + return str; +}; + module.exports = function bind(that) { var target = this; - if (typeof target !== 'function' || toStr.call(target) !== funcType) { + if (typeof target !== 'function' || toStr.apply(target) !== funcType) { throw new TypeError(ERROR_MESSAGE + target); } - var args = slice.call(arguments, 1); + var args = slicy(arguments, 1); var bound; var binder = function () { if (this instanceof bound) { var result = target.apply( this, - args.concat(slice.call(arguments)) + concatty(args, arguments) ); if (Object(result) === result) { return result; } return this; - } else { - return target.apply( - that, - args.concat(slice.call(arguments)) - ); } + return target.apply( + that, + concatty(args, arguments) + ); + }; - var boundLength = Math.max(0, target.length - args.length); + var boundLength = max(0, target.length - args.length); var boundArgs = []; for (var i = 0; i < boundLength; i++) { - boundArgs.push('$' + i); + boundArgs[i] = '$' + i; } - bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder); + bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder); if (target.prototype) { var Empty = function Empty() {}; diff --git a/food-ordering-app/server/node_modules/function-bind/package.json b/food-ordering-app/server/node_modules/function-bind/package.json index 20a1727cb..618596389 100644 --- a/food-ordering-app/server/node_modules/function-bind/package.json +++ b/food-ordering-app/server/node_modules/function-bind/package.json @@ -1,6 +1,6 @@ { "name": "function-bind", - "version": "1.1.1", + "version": "1.1.2", "description": "Implementation of Function.prototype.bind", "keywords": [ "function", @@ -9,7 +9,13 @@ "es5" ], "author": "Raynos ", - "repository": "git://github.com/Raynos/function-bind.git", + "repository": { + "type": "git", + "url": "https://github.com/Raynos/function-bind.git" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, "main": "index", "homepage": "https://github.com/Raynos/function-bind", "contributors": [ @@ -25,24 +31,29 @@ "url": "https://github.com/Raynos/function-bind/issues", "email": "raynos2@gmail.com" }, - "dependencies": {}, "devDependencies": { - "@ljharb/eslint-config": "^12.2.1", - "covert": "^1.1.0", - "eslint": "^4.5.0", - "jscs": "^3.0.7", - "tape": "^4.8.0" + "@ljharb/eslint-config": "^21.1.0", + "aud": "^2.0.3", + "auto-changelog": "^2.4.0", + "eslint": "=8.8.0", + "in-publish": "^2.0.1", + "npmignore": "^0.3.0", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.7.1" }, "license": "MIT", "scripts": { + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepack": "npmignore --auto --commentLines=autogenerated", "pretest": "npm run lint", "test": "npm run tests-only", - "posttest": "npm run coverage -- --quiet", - "tests-only": "node test", - "coverage": "covert test/*.js", - "lint": "npm run jscs && npm run eslint", - "jscs": "jscs *.js */*.js", - "eslint": "eslint *.js */*.js" + "posttest": "aud --production", + "tests-only": "nyc tape 'test/**/*.js'", + "lint": "eslint --ext=js,mjs .", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" }, "testling": { "files": "test/index.js", @@ -59,5 +70,18 @@ "iphone/6.0..latest", "android-browser/4.2..latest" ] + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] } } diff --git a/food-ordering-app/server/node_modules/get-intrinsic/.eslintrc b/food-ordering-app/server/node_modules/get-intrinsic/.eslintrc index 0ab0876eb..235fb79a2 100644 --- a/food-ordering-app/server/node_modules/get-intrinsic/.eslintrc +++ b/food-ordering-app/server/node_modules/get-intrinsic/.eslintrc @@ -11,12 +11,17 @@ "es2022": true, }, + "globals": { + "Float16Array": false, + }, + "rules": { "array-bracket-newline": 0, "complexity": 0, "eqeqeq": [2, "allow-null"], "func-name-matching": 0, "id-length": 0, + "max-lines": 0, "max-lines-per-function": [2, 90], "max-params": [2, 4], "max-statements": 0, diff --git a/food-ordering-app/server/node_modules/get-intrinsic/CHANGELOG.md b/food-ordering-app/server/node_modules/get-intrinsic/CHANGELOG.md index ff3917226..ce1dd9871 100644 --- a/food-ordering-app/server/node_modules/get-intrinsic/CHANGELOG.md +++ b/food-ordering-app/server/node_modules/get-intrinsic/CHANGELOG.md @@ -5,6 +5,101 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [v1.3.0](https://github.com/ljharb/get-intrinsic/compare/v1.2.7...v1.3.0) - 2025-02-22 + +### Commits + +- [Dev Deps] update `es-abstract`, `es-value-fixtures`, `for-each`, `object-inspect` [`9b61553`](https://github.com/ljharb/get-intrinsic/commit/9b61553c587f1c1edbd435597e88c7d387da97dd) +- [Deps] update `call-bind-apply-helpers`, `es-object-atoms`, `get-proto` [`a341fee`](https://github.com/ljharb/get-intrinsic/commit/a341fee0f39a403b0f0069e82c97642d5eb11043) +- [New] add `Float16Array` [`de22116`](https://github.com/ljharb/get-intrinsic/commit/de22116b492fb989a0341bceb6e573abfaed73dc) + +## [v1.2.7](https://github.com/ljharb/get-intrinsic/compare/v1.2.6...v1.2.7) - 2025-01-02 + +### Commits + +- [Refactor] use `get-proto` directly [`00ab955`](https://github.com/ljharb/get-intrinsic/commit/00ab95546a0980c8ad42a84253daaa8d2adcedf9) +- [Deps] update `math-intrinsics` [`c716cdd`](https://github.com/ljharb/get-intrinsic/commit/c716cdd6bbe36b438057025561b8bb5a879ac8a0) +- [Dev Deps] update `call-bound`, `es-abstract` [`dc648a6`](https://github.com/ljharb/get-intrinsic/commit/dc648a67eb359037dff8d8619bfa71d86debccb1) + +## [v1.2.6](https://github.com/ljharb/get-intrinsic/compare/v1.2.5...v1.2.6) - 2024-12-11 + +### Commits + +- [Refactor] use `math-intrinsics` [`841be86`](https://github.com/ljharb/get-intrinsic/commit/841be8641a9254c4c75483b30c8871b5d5065926) +- [Refactor] use `es-object-atoms` [`42057df`](https://github.com/ljharb/get-intrinsic/commit/42057dfa16f66f64787e66482af381cc6f31d2c1) +- [Deps] update `call-bind-apply-helpers` [`45afa24`](https://github.com/ljharb/get-intrinsic/commit/45afa24a9ee4d6d3c172db1f555b16cb27843ef4) +- [Dev Deps] update `call-bound` [`9cba9c6`](https://github.com/ljharb/get-intrinsic/commit/9cba9c6e70212bc163b7a5529cb25df46071646f) + +## [v1.2.5](https://github.com/ljharb/get-intrinsic/compare/v1.2.4...v1.2.5) - 2024-12-06 + +### Commits + +- [actions] split out node 10-20, and 20+ [`6e2b9dd`](https://github.com/ljharb/get-intrinsic/commit/6e2b9dd23902665681ebe453256ccfe21d7966f0) +- [Refactor] use `dunder-proto` and `call-bind-apply-helpers` instead of `has-proto` [`c095d17`](https://github.com/ljharb/get-intrinsic/commit/c095d179ad0f4fbfff20c8a3e0cb4fe668018998) +- [Refactor] use `gopd` [`9841d5b`](https://github.com/ljharb/get-intrinsic/commit/9841d5b35f7ab4fd2d193f0c741a50a077920e90) +- [Dev Deps] update `@ljharb/eslint-config`, `auto-changelog`, `es-abstract`, `es-value-fixtures`, `gopd`, `mock-property`, `object-inspect`, `tape` [`2d07e01`](https://github.com/ljharb/get-intrinsic/commit/2d07e01310cee2cbaedfead6903df128b1f5d425) +- [Deps] update `gopd`, `has-proto`, `has-symbols`, `hasown` [`974d8bf`](https://github.com/ljharb/get-intrinsic/commit/974d8bf5baad7939eef35c25cc1dd88c10a30fa6) +- [Dev Deps] update `call-bind`, `es-abstract`, `tape` [`df9dde1`](https://github.com/ljharb/get-intrinsic/commit/df9dde178186631ab8a3165ede056549918ce4bc) +- [Refactor] cache `es-define-property` as well [`43ef543`](https://github.com/ljharb/get-intrinsic/commit/43ef543cb02194401420e3a914a4ca9168691926) +- [Deps] update `has-proto`, `has-symbols`, `hasown` [`ad4949d`](https://github.com/ljharb/get-intrinsic/commit/ad4949d5467316505aad89bf75f9417ed782f7af) +- [Tests] use `call-bound` directly [`ad5c406`](https://github.com/ljharb/get-intrinsic/commit/ad5c4069774bfe90e520a35eead5fe5ca9d69e80) +- [Deps] update `has-proto`, `hasown` [`45414ca`](https://github.com/ljharb/get-intrinsic/commit/45414caa312333a2798953682c68f85c550627dd) +- [Tests] replace `aud` with `npm audit` [`18d3509`](https://github.com/ljharb/get-intrinsic/commit/18d3509f79460e7924da70409ee81e5053087523) +- [Deps] update `es-define-property` [`aadaa3b`](https://github.com/ljharb/get-intrinsic/commit/aadaa3b2188d77ad9bff394ce5d4249c49eb21f5) +- [Dev Deps] add missing peer dep [`c296a16`](https://github.com/ljharb/get-intrinsic/commit/c296a16246d0c9a5981944f4cc5cf61fbda0cf6a) + +## [v1.2.4](https://github.com/ljharb/get-intrinsic/compare/v1.2.3...v1.2.4) - 2024-02-05 + +### Commits + +- [Refactor] use all 7 <+ ES6 Errors from `es-errors` [`bcac811`](https://github.com/ljharb/get-intrinsic/commit/bcac811abdc1c982e12abf848a410d6aae148d14) + +## [v1.2.3](https://github.com/ljharb/get-intrinsic/compare/v1.2.2...v1.2.3) - 2024-02-03 + +### Commits + +- [Refactor] use `es-errors`, so things that only need those do not need `get-intrinsic` [`f11db9c`](https://github.com/ljharb/get-intrinsic/commit/f11db9c4fb97d87bbd53d3c73ac6b3db3613ad3b) +- [Dev Deps] update `aud`, `es-abstract`, `mock-property`, `npmignore` [`b7ac7d1`](https://github.com/ljharb/get-intrinsic/commit/b7ac7d1616fefb03877b1aed0c8f8d61aad32b6c) +- [meta] simplify `exports` [`faa0cc6`](https://github.com/ljharb/get-intrinsic/commit/faa0cc618e2830ffb51a8202490b0c215d965cbc) +- [meta] add missing `engines.node` [`774dd0b`](https://github.com/ljharb/get-intrinsic/commit/774dd0b3e8f741c3f05a6322d124d6087f146af1) +- [Dev Deps] update `tape` [`5828e8e`](https://github.com/ljharb/get-intrinsic/commit/5828e8e4a04e69312e87a36c0ea39428a7a4c3d8) +- [Robustness] use null objects for lookups [`eb9a11f`](https://github.com/ljharb/get-intrinsic/commit/eb9a11fa9eb3e13b193fcc05a7fb814341b1a7b7) +- [meta] add `sideEffects` flag [`89bcc7a`](https://github.com/ljharb/get-intrinsic/commit/89bcc7a42e19bf07b7c21e3094d5ab177109e6d2) + +## [v1.2.2](https://github.com/ljharb/get-intrinsic/compare/v1.2.1...v1.2.2) - 2023-10-20 + +### Commits + +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `call-bind`, `es-abstract`, `mock-property`, `object-inspect`, `tape` [`f51bcf2`](https://github.com/ljharb/get-intrinsic/commit/f51bcf26412d58d17ce17c91c9afd0ad271f0762) +- [Refactor] use `hasown` instead of `has` [`18d14b7`](https://github.com/ljharb/get-intrinsic/commit/18d14b799bea6b5765e1cec91890830cbcdb0587) +- [Deps] update `function-bind` [`6e109c8`](https://github.com/ljharb/get-intrinsic/commit/6e109c81e03804cc5e7824fb64353cdc3d8ee2c7) + +## [v1.2.1](https://github.com/ljharb/get-intrinsic/compare/v1.2.0...v1.2.1) - 2023-05-13 + +### Commits + +- [Fix] avoid a crash in envs without `__proto__` [`7bad8d0`](https://github.com/ljharb/get-intrinsic/commit/7bad8d061bf8721733b58b73a2565af2b6756b64) +- [Dev Deps] update `es-abstract` [`c60e6b7`](https://github.com/ljharb/get-intrinsic/commit/c60e6b7b4cf9660c7f27ed970970fd55fac48dc5) + +## [v1.2.0](https://github.com/ljharb/get-intrinsic/compare/v1.1.3...v1.2.0) - 2023-01-19 + +### Commits + +- [actions] update checkout action [`ca6b12f`](https://github.com/ljharb/get-intrinsic/commit/ca6b12f31eaacea4ea3b055e744cd61623385ffb) +- [Dev Deps] update `@ljharb/eslint-config`, `es-abstract`, `object-inspect`, `tape` [`41a3727`](https://github.com/ljharb/get-intrinsic/commit/41a3727d0026fa04273ae216a5f8e12eefd72da8) +- [Fix] ensure `Error.prototype` is undeniable [`c511e97`](https://github.com/ljharb/get-intrinsic/commit/c511e97ae99c764c4524b540dee7a70757af8da3) +- [Dev Deps] update `aud`, `es-abstract`, `tape` [`1bef8a8`](https://github.com/ljharb/get-intrinsic/commit/1bef8a8fd439ebb80863199b6189199e0851ac67) +- [Dev Deps] update `aud`, `es-abstract` [`0d41f16`](https://github.com/ljharb/get-intrinsic/commit/0d41f16bcd500bc28b7bfc98043ebf61ea081c26) +- [New] add `BigInt64Array` and `BigUint64Array` [`a6cca25`](https://github.com/ljharb/get-intrinsic/commit/a6cca25f29635889b7e9bd669baf9e04be90e48c) +- [Tests] use `gopd` [`ecf7722`](https://github.com/ljharb/get-intrinsic/commit/ecf7722240d15cfd16edda06acf63359c10fb9bd) + +## [v1.1.3](https://github.com/ljharb/get-intrinsic/compare/v1.1.2...v1.1.3) - 2022-09-12 + +### Commits + +- [Dev Deps] update `es-abstract`, `es-value-fixtures`, `tape` [`07ff291`](https://github.com/ljharb/get-intrinsic/commit/07ff291816406ebe5a12d7f16965bde0942dd688) +- [Fix] properly check for % signs [`50ac176`](https://github.com/ljharb/get-intrinsic/commit/50ac1760fe99c227e64eabde76e9c0e44cd881b5) + ## [v1.1.2](https://github.com/ljharb/get-intrinsic/compare/v1.1.1...v1.1.2) - 2022-06-08 ### Fixed diff --git a/food-ordering-app/server/node_modules/get-intrinsic/index.js b/food-ordering-app/server/node_modules/get-intrinsic/index.js index 81ad8fca0..bd1d94b7f 100644 --- a/food-ordering-app/server/node_modules/get-intrinsic/index.js +++ b/food-ordering-app/server/node_modules/get-intrinsic/index.js @@ -2,9 +2,25 @@ var undefined; -var $SyntaxError = SyntaxError; +var $Object = require('es-object-atoms'); + +var $Error = require('es-errors'); +var $EvalError = require('es-errors/eval'); +var $RangeError = require('es-errors/range'); +var $ReferenceError = require('es-errors/ref'); +var $SyntaxError = require('es-errors/syntax'); +var $TypeError = require('es-errors/type'); +var $URIError = require('es-errors/uri'); + +var abs = require('math-intrinsics/abs'); +var floor = require('math-intrinsics/floor'); +var max = require('math-intrinsics/max'); +var min = require('math-intrinsics/min'); +var pow = require('math-intrinsics/pow'); +var round = require('math-intrinsics/round'); +var sign = require('math-intrinsics/sign'); + var $Function = Function; -var $TypeError = TypeError; // eslint-disable-next-line consistent-return var getEvalledConstructor = function (expressionSyntax) { @@ -13,14 +29,8 @@ var getEvalledConstructor = function (expressionSyntax) { } catch (e) {} }; -var $gOPD = Object.getOwnPropertyDescriptor; -if ($gOPD) { - try { - $gOPD({}, ''); - } catch (e) { - $gOPD = null; // this is IE 8, which has a broken gOPD - } -} +var $gOPD = require('gopd'); +var $defineProperty = require('es-define-property'); var throwTypeError = function () { throw new $TypeError(); @@ -44,17 +54,23 @@ var ThrowTypeError = $gOPD var hasSymbols = require('has-symbols')(); -var getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto +var getProto = require('get-proto'); +var $ObjectGPO = require('get-proto/Object.getPrototypeOf'); +var $ReflectGPO = require('get-proto/Reflect.getPrototypeOf'); + +var $apply = require('call-bind-apply-helpers/functionApply'); +var $call = require('call-bind-apply-helpers/functionCall'); var needsEval = {}; -var TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array); +var TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array); var INTRINSICS = { + __proto__: null, '%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError, '%Array%': Array, '%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer, - '%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined, + '%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined, '%AsyncFromSyncIteratorPrototype%': undefined, '%AsyncFunction%': needsEval, '%AsyncGenerator%': needsEval, @@ -62,6 +78,8 @@ var INTRINSICS = { '%AsyncIteratorPrototype%': needsEval, '%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics, '%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt, + '%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array, + '%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array, '%Boolean%': Boolean, '%DataView%': typeof DataView === 'undefined' ? undefined : DataView, '%Date%': Date, @@ -69,9 +87,10 @@ var INTRINSICS = { '%decodeURIComponent%': decodeURIComponent, '%encodeURI%': encodeURI, '%encodeURIComponent%': encodeURIComponent, - '%Error%': Error, + '%Error%': $Error, '%eval%': eval, // eslint-disable-line no-eval - '%EvalError%': EvalError, + '%EvalError%': $EvalError, + '%Float16Array%': typeof Float16Array === 'undefined' ? undefined : Float16Array, '%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array, '%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array, '%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry, @@ -82,26 +101,27 @@ var INTRINSICS = { '%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array, '%isFinite%': isFinite, '%isNaN%': isNaN, - '%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined, + '%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined, '%JSON%': typeof JSON === 'object' ? JSON : undefined, '%Map%': typeof Map === 'undefined' ? undefined : Map, - '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()), + '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()), '%Math%': Math, '%Number%': Number, - '%Object%': Object, + '%Object%': $Object, + '%Object.getOwnPropertyDescriptor%': $gOPD, '%parseFloat%': parseFloat, '%parseInt%': parseInt, '%Promise%': typeof Promise === 'undefined' ? undefined : Promise, '%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy, - '%RangeError%': RangeError, - '%ReferenceError%': ReferenceError, + '%RangeError%': $RangeError, + '%ReferenceError%': $ReferenceError, '%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect, '%RegExp%': RegExp, '%Set%': typeof Set === 'undefined' ? undefined : Set, - '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()), + '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()), '%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer, '%String%': String, - '%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined, + '%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined, '%Symbol%': hasSymbols ? Symbol : undefined, '%SyntaxError%': $SyntaxError, '%ThrowTypeError%': ThrowTypeError, @@ -111,12 +131,35 @@ var INTRINSICS = { '%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray, '%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array, '%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array, - '%URIError%': URIError, + '%URIError%': $URIError, '%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap, '%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef, - '%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet + '%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet, + + '%Function.prototype.call%': $call, + '%Function.prototype.apply%': $apply, + '%Object.defineProperty%': $defineProperty, + '%Object.getPrototypeOf%': $ObjectGPO, + '%Math.abs%': abs, + '%Math.floor%': floor, + '%Math.max%': max, + '%Math.min%': min, + '%Math.pow%': pow, + '%Math.round%': round, + '%Math.sign%': sign, + '%Reflect.getPrototypeOf%': $ReflectGPO }; +if (getProto) { + try { + null.error; // eslint-disable-line no-unused-expressions + } catch (e) { + // https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229 + var errorProto = getProto(getProto(e)); + INTRINSICS['%Error.prototype%'] = errorProto; + } +} + var doEval = function doEval(name) { var value; if (name === '%AsyncFunction%') { @@ -132,7 +175,7 @@ var doEval = function doEval(name) { } } else if (name === '%AsyncIteratorPrototype%') { var gen = doEval('%AsyncGenerator%'); - if (gen) { + if (gen && getProto) { value = getProto(gen.prototype); } } @@ -143,6 +186,7 @@ var doEval = function doEval(name) { }; var LEGACY_ALIASES = { + __proto__: null, '%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'], '%ArrayPrototype%': ['Array', 'prototype'], '%ArrayProto_entries%': ['Array', 'prototype', 'entries'], @@ -197,12 +241,12 @@ var LEGACY_ALIASES = { }; var bind = require('function-bind'); -var hasOwn = require('has'); -var $concat = bind.call(Function.call, Array.prototype.concat); -var $spliceApply = bind.call(Function.apply, Array.prototype.splice); -var $replace = bind.call(Function.call, String.prototype.replace); -var $strSlice = bind.call(Function.call, String.prototype.slice); -var $exec = bind.call(Function.call, RegExp.prototype.exec); +var hasOwn = require('hasown'); +var $concat = bind.call($call, Array.prototype.concat); +var $spliceApply = bind.call($apply, Array.prototype.splice); +var $replace = bind.call($call, String.prototype.replace); +var $strSlice = bind.call($call, String.prototype.slice); +var $exec = bind.call($call, RegExp.prototype.exec); /* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */ var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g; @@ -258,7 +302,7 @@ module.exports = function GetIntrinsic(name, allowMissing) { throw new $TypeError('"allowMissing" argument must be a boolean'); } - if ($exec(/^%?[^%]*%?$/g, name) === null) { + if ($exec(/^%?[^%]*%?$/, name) === null) { throw new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name'); } var parts = stringToPath(name); diff --git a/food-ordering-app/server/node_modules/get-intrinsic/package.json b/food-ordering-app/server/node_modules/get-intrinsic/package.json index e8dc03774..2828e736c 100644 --- a/food-ordering-app/server/node_modules/get-intrinsic/package.json +++ b/food-ordering-app/server/node_modules/get-intrinsic/package.json @@ -1,17 +1,13 @@ { "name": "get-intrinsic", - "version": "1.1.2", + "version": "1.3.0", "description": "Get and robustly cache all JS language-level intrinsics at first require time", "main": "index.js", "exports": { - ".": [ - { - "default": "./index.js" - }, - "./index.js" - ], + ".": "./index.js", "./package.json": "./package.json" }, + "sideEffects": false, "scripts": { "prepack": "npmignore --auto --commentLines=autogenerated", "prepublish": "not-in-publish || npm run prepublishOnly", @@ -21,7 +17,7 @@ "pretest": "npm run lint", "tests-only": "nyc tape 'test/**/*.js'", "test": "npm run tests-only", - "posttest": "aud --production", + "posttest": "npx npm@'>= 10.2' audit --production", "version": "auto-changelog && git add CHANGELOG.md", "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" }, @@ -47,25 +43,37 @@ "url": "https://github.com/ljharb/get-intrinsic/issues" }, "homepage": "https://github.com/ljharb/get-intrinsic#readme", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, "devDependencies": { - "@ljharb/eslint-config": "^21.0.0", - "aud": "^2.0.0", - "auto-changelog": "^2.4.0", - "call-bind": "^1.0.2", - "es-abstract": "^1.20.1", - "es-value-fixtures": "^1.4.1", + "@ljharb/eslint-config": "^21.1.1", + "auto-changelog": "^2.5.0", + "call-bound": "^1.0.3", + "encoding": "^0.1.13", + "es-abstract": "^1.23.9", + "es-value-fixtures": "^1.7.1", "eslint": "=8.8.0", "evalmd": "^0.0.19", - "for-each": "^0.3.3", + "for-each": "^0.3.5", "make-async-function": "^1.0.0", "make-async-generator-function": "^1.0.0", "make-generator-function": "^2.0.0", - "mock-property": "^1.0.0", - "npmignore": "^0.3.0", + "mock-property": "^1.1.0", + "npmignore": "^0.3.1", "nyc": "^10.3.2", - "object-inspect": "^1.12.2", + "object-inspect": "^1.13.4", "safe-publish-latest": "^2.0.0", - "tape": "^5.5.3" + "tape": "^5.9.0" }, "auto-changelog": { "output": "CHANGELOG.md", @@ -75,14 +83,15 @@ "backfillLimit": false, "hideCredit": true }, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "testling": { + "files": "test/GetIntrinsic.js" }, "publishConfig": { "ignore": [ ".github/workflows" ] + }, + "engines": { + "node": ">= 0.4" } } diff --git a/food-ordering-app/server/node_modules/get-intrinsic/test/GetIntrinsic.js b/food-ordering-app/server/node_modules/get-intrinsic/test/GetIntrinsic.js index 7e0ea30f6..d9c0f30a3 100644 --- a/food-ordering-app/server/node_modules/get-intrinsic/test/GetIntrinsic.js +++ b/food-ordering-app/server/node_modules/get-intrinsic/test/GetIntrinsic.js @@ -10,10 +10,10 @@ var asyncFns = require('make-async-function').list(); var asyncGenFns = require('make-async-generator-function')(); var mockProperty = require('mock-property'); -var callBound = require('call-bind/callBound'); +var callBound = require('call-bound'); var v = require('es-value-fixtures'); -var $gOPD = require('es-abstract/helpers/getOwnPropertyDescriptor'); -var DefinePropertyOrThrow = require('es-abstract/2021/DefinePropertyOrThrow'); +var $gOPD = require('gopd'); +var DefinePropertyOrThrow = require('es-abstract/2023/DefinePropertyOrThrow'); var $isProto = callBound('%Object.prototype.isPrototypeOf%'); diff --git a/food-ordering-app/server/node_modules/get-proto/.eslintrc b/food-ordering-app/server/node_modules/get-proto/.eslintrc new file mode 100644 index 000000000..1d21a8aef --- /dev/null +++ b/food-ordering-app/server/node_modules/get-proto/.eslintrc @@ -0,0 +1,10 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "id-length": "off", + "sort-keys": "off", + }, +} diff --git a/food-ordering-app/server/node_modules/get-proto/.github/FUNDING.yml b/food-ordering-app/server/node_modules/get-proto/.github/FUNDING.yml new file mode 100644 index 000000000..93183ef5f --- /dev/null +++ b/food-ordering-app/server/node_modules/get-proto/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/get-proto +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/food-ordering-app/server/node_modules/get-proto/.nycrc b/food-ordering-app/server/node_modules/get-proto/.nycrc new file mode 100644 index 000000000..bdd626ce9 --- /dev/null +++ b/food-ordering-app/server/node_modules/get-proto/.nycrc @@ -0,0 +1,9 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "exclude": [ + "coverage", + "test" + ] +} diff --git a/food-ordering-app/server/node_modules/get-proto/CHANGELOG.md b/food-ordering-app/server/node_modules/get-proto/CHANGELOG.md new file mode 100644 index 000000000..586022936 --- /dev/null +++ b/food-ordering-app/server/node_modules/get-proto/CHANGELOG.md @@ -0,0 +1,21 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.0.1](https://github.com/ljharb/get-proto/compare/v1.0.0...v1.0.1) - 2025-01-02 + +### Commits + +- [Fix] for the `Object.getPrototypeOf` window, throw for non-objects [`7fe6508`](https://github.com/ljharb/get-proto/commit/7fe6508b71419ebe1976bedb86001d1feaeaa49a) + +## v1.0.0 - 2025-01-01 + +### Commits + +- Initial implementation, tests, readme, types [`5c70775`](https://github.com/ljharb/get-proto/commit/5c707751e81c3deeb2cf980d185fc7fd43611415) +- Initial commit [`7c65c2a`](https://github.com/ljharb/get-proto/commit/7c65c2ad4e33d5dae2f219ebe1a046ae2256972c) +- npm init [`0b8cf82`](https://github.com/ljharb/get-proto/commit/0b8cf824c9634e4a34ef7dd2a2cdc5be6ac79518) +- Only apps should have lockfiles [`a6d1bff`](https://github.com/ljharb/get-proto/commit/a6d1bffc364f5828377cea7194558b2dbef7aea2) diff --git a/food-ordering-app/server/node_modules/get-proto/LICENSE b/food-ordering-app/server/node_modules/get-proto/LICENSE new file mode 100644 index 000000000..eeabd1c37 --- /dev/null +++ b/food-ordering-app/server/node_modules/get-proto/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/food-ordering-app/server/node_modules/get-proto/Object.getPrototypeOf.d.ts b/food-ordering-app/server/node_modules/get-proto/Object.getPrototypeOf.d.ts new file mode 100644 index 000000000..028b3ff1c --- /dev/null +++ b/food-ordering-app/server/node_modules/get-proto/Object.getPrototypeOf.d.ts @@ -0,0 +1,5 @@ +declare function getProto(object: O): object | null; + +declare const x: typeof getProto | null; + +export = x; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/get-proto/Object.getPrototypeOf.js b/food-ordering-app/server/node_modules/get-proto/Object.getPrototypeOf.js new file mode 100644 index 000000000..c2cbbdfc6 --- /dev/null +++ b/food-ordering-app/server/node_modules/get-proto/Object.getPrototypeOf.js @@ -0,0 +1,6 @@ +'use strict'; + +var $Object = require('es-object-atoms'); + +/** @type {import('./Object.getPrototypeOf')} */ +module.exports = $Object.getPrototypeOf || null; diff --git a/food-ordering-app/server/node_modules/get-proto/README.md b/food-ordering-app/server/node_modules/get-proto/README.md new file mode 100644 index 000000000..f8b4cce34 --- /dev/null +++ b/food-ordering-app/server/node_modules/get-proto/README.md @@ -0,0 +1,50 @@ +# get-proto [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +Robustly get the [[Prototype]] of an object. Uses the best available method. + +## Getting started + +```sh +npm install --save get-proto +``` + +## Usage/Examples + +```js +const assert = require('assert'); +const getProto = require('get-proto'); + +const a = { a: 1, b: 2, [Symbol.toStringTag]: 'foo' }; +const b = { c: 3, __proto__: a }; + +assert.equal(getProto(b), a); +assert.equal(getProto(a), Object.prototype); +assert.equal(getProto({ __proto__: null }), null); +``` + +## Tests + +Clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.org/package/get-proto +[npm-version-svg]: https://versionbadg.es/ljharb/get-proto.svg +[deps-svg]: https://david-dm.org/ljharb/get-proto.svg +[deps-url]: https://david-dm.org/ljharb/get-proto +[dev-deps-svg]: https://david-dm.org/ljharb/get-proto/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/get-proto#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/get-proto.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/get-proto.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/get-proto.svg +[downloads-url]: https://npm-stat.com/charts.html?package=get-proto +[codecov-image]: https://codecov.io/gh/ljharb/get-proto/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/get-proto/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/get-proto +[actions-url]: https://github.com/ljharb/get-proto/actions diff --git a/food-ordering-app/server/node_modules/get-proto/Reflect.getPrototypeOf.d.ts b/food-ordering-app/server/node_modules/get-proto/Reflect.getPrototypeOf.d.ts new file mode 100644 index 000000000..2388fe073 --- /dev/null +++ b/food-ordering-app/server/node_modules/get-proto/Reflect.getPrototypeOf.d.ts @@ -0,0 +1,3 @@ +declare const x: typeof Reflect.getPrototypeOf | null; + +export = x; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/get-proto/Reflect.getPrototypeOf.js b/food-ordering-app/server/node_modules/get-proto/Reflect.getPrototypeOf.js new file mode 100644 index 000000000..e6c51bee4 --- /dev/null +++ b/food-ordering-app/server/node_modules/get-proto/Reflect.getPrototypeOf.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./Reflect.getPrototypeOf')} */ +module.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null; diff --git a/food-ordering-app/server/node_modules/get-proto/index.d.ts b/food-ordering-app/server/node_modules/get-proto/index.d.ts new file mode 100644 index 000000000..2c021f304 --- /dev/null +++ b/food-ordering-app/server/node_modules/get-proto/index.d.ts @@ -0,0 +1,5 @@ +declare function getProto(object: O): object | null; + +declare const x: typeof getProto | null; + +export = x; diff --git a/food-ordering-app/server/node_modules/get-proto/index.js b/food-ordering-app/server/node_modules/get-proto/index.js new file mode 100644 index 000000000..7e5747be0 --- /dev/null +++ b/food-ordering-app/server/node_modules/get-proto/index.js @@ -0,0 +1,27 @@ +'use strict'; + +var reflectGetProto = require('./Reflect.getPrototypeOf'); +var originalGetProto = require('./Object.getPrototypeOf'); + +var getDunderProto = require('dunder-proto/get'); + +/** @type {import('.')} */ +module.exports = reflectGetProto + ? function getProto(O) { + // @ts-expect-error TS can't narrow inside a closure, for some reason + return reflectGetProto(O); + } + : originalGetProto + ? function getProto(O) { + if (!O || (typeof O !== 'object' && typeof O !== 'function')) { + throw new TypeError('getProto: not an object'); + } + // @ts-expect-error TS can't narrow inside a closure, for some reason + return originalGetProto(O); + } + : getDunderProto + ? function getProto(O) { + // @ts-expect-error TS can't narrow inside a closure, for some reason + return getDunderProto(O); + } + : null; diff --git a/food-ordering-app/server/node_modules/get-proto/package.json b/food-ordering-app/server/node_modules/get-proto/package.json new file mode 100644 index 000000000..9c35cec93 --- /dev/null +++ b/food-ordering-app/server/node_modules/get-proto/package.json @@ -0,0 +1,81 @@ +{ + "name": "get-proto", + "version": "1.0.1", + "description": "Robustly get the [[Prototype]] of an object", + "main": "index.js", + "exports": { + ".": "./index.js", + "./Reflect.getPrototypeOf": "./Reflect.getPrototypeOf.js", + "./Object.getPrototypeOf": "./Object.getPrototypeOf.js", + "./package.json": "./package.json" + }, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "pretest": "npm run --silent lint", + "test": "npm run tests-only", + "posttest": "npx npm@\">=10.2\" audit --production", + "tests-only": "nyc tape 'test/**/*.js'", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc && attw -P", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/get-proto.git" + }, + "keywords": [ + "get", + "proto", + "prototype", + "getPrototypeOf", + "[[Prototype]]" + ], + "author": "Jordan Harband ", + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/get-proto/issues" + }, + "homepage": "https://github.com/ljharb/get-proto#readme", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.2", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.3", + "@types/tape": "^5.8.0", + "auto-changelog": "^2.5.0", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "engines": { + "node": ">= 0.4" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "testling": { + "files": "test/index.js" + } +} diff --git a/food-ordering-app/server/node_modules/get-proto/test/index.js b/food-ordering-app/server/node_modules/get-proto/test/index.js new file mode 100644 index 000000000..5a2ece252 --- /dev/null +++ b/food-ordering-app/server/node_modules/get-proto/test/index.js @@ -0,0 +1,68 @@ +'use strict'; + +var test = require('tape'); + +var getProto = require('../'); + +test('getProto', function (t) { + t.equal(typeof getProto, 'function', 'is a function'); + + t.test('can get', { skip: !getProto }, function (st) { + if (getProto) { // TS doesn't understand tape's skip + var proto = { b: 2 }; + st.equal(getProto(proto), Object.prototype, 'proto: returns the [[Prototype]]'); + + st.test('nullish value', function (s2t) { + // @ts-expect-error + s2t['throws'](function () { return getProto(undefined); }, TypeError, 'undefined is not an object'); + // @ts-expect-error + s2t['throws'](function () { return getProto(null); }, TypeError, 'null is not an object'); + s2t.end(); + }); + + // @ts-expect-error + st['throws'](function () { getProto(true); }, 'throws for true'); + // @ts-expect-error + st['throws'](function () { getProto(false); }, 'throws for false'); + // @ts-expect-error + st['throws'](function () { getProto(42); }, 'throws for 42'); + // @ts-expect-error + st['throws'](function () { getProto(NaN); }, 'throws for NaN'); + // @ts-expect-error + st['throws'](function () { getProto(0); }, 'throws for +0'); + // @ts-expect-error + st['throws'](function () { getProto(-0); }, 'throws for -0'); + // @ts-expect-error + st['throws'](function () { getProto(Infinity); }, 'throws for ∞'); + // @ts-expect-error + st['throws'](function () { getProto(-Infinity); }, 'throws for -∞'); + // @ts-expect-error + st['throws'](function () { getProto(''); }, 'throws for empty string'); + // @ts-expect-error + st['throws'](function () { getProto('foo'); }, 'throws for non-empty string'); + st.equal(getProto(/a/g), RegExp.prototype); + st.equal(getProto(new Date()), Date.prototype); + st.equal(getProto(function () {}), Function.prototype); + st.equal(getProto([]), Array.prototype); + st.equal(getProto({}), Object.prototype); + + var nullObject = { __proto__: null }; + if ('toString' in nullObject) { + st.comment('no null objects in this engine'); + st.equal(getProto(nullObject), Object.prototype, '"null" object has Object.prototype as [[Prototype]]'); + } else { + st.equal(getProto(nullObject), null, 'null object has null [[Prototype]]'); + } + } + + st.end(); + }); + + t.test('can not get', { skip: !!getProto }, function (st) { + st.equal(getProto, null); + + st.end(); + }); + + t.end(); +}); diff --git a/food-ordering-app/server/node_modules/get-proto/tsconfig.json b/food-ordering-app/server/node_modules/get-proto/tsconfig.json new file mode 100644 index 000000000..60fb90e45 --- /dev/null +++ b/food-ordering-app/server/node_modules/get-proto/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + //"target": "es2021", + }, + "exclude": [ + "coverage", + ], +} diff --git a/food-ordering-app/server/node_modules/gopd/.eslintrc b/food-ordering-app/server/node_modules/gopd/.eslintrc new file mode 100644 index 000000000..e2550c0fb --- /dev/null +++ b/food-ordering-app/server/node_modules/gopd/.eslintrc @@ -0,0 +1,16 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "func-style": [2, "declaration"], + "id-length": 0, + "multiline-comment-style": 0, + "new-cap": [2, { + "capIsNewExceptions": [ + "GetIntrinsic", + ], + }], + }, +} diff --git a/food-ordering-app/server/node_modules/gopd/.github/FUNDING.yml b/food-ordering-app/server/node_modules/gopd/.github/FUNDING.yml new file mode 100644 index 000000000..94a44a8e8 --- /dev/null +++ b/food-ordering-app/server/node_modules/gopd/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/gopd +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/food-ordering-app/server/node_modules/gopd/CHANGELOG.md b/food-ordering-app/server/node_modules/gopd/CHANGELOG.md new file mode 100644 index 000000000..87f5727fb --- /dev/null +++ b/food-ordering-app/server/node_modules/gopd/CHANGELOG.md @@ -0,0 +1,45 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.2.0](https://github.com/ljharb/gopd/compare/v1.1.0...v1.2.0) - 2024-12-03 + +### Commits + +- [New] add `gOPD` entry point; remove `get-intrinsic` [`5b61232`](https://github.com/ljharb/gopd/commit/5b61232dedea4591a314bcf16101b1961cee024e) + +## [v1.1.0](https://github.com/ljharb/gopd/compare/v1.0.1...v1.1.0) - 2024-11-29 + +### Commits + +- [New] add types [`f585e39`](https://github.com/ljharb/gopd/commit/f585e397886d270e4ba84e53d226e4f9ca2eb0e6) +- [Dev Deps] update `@ljharb/eslint-config`, `auto-changelog`, `tape` [`0b8e4fd`](https://github.com/ljharb/gopd/commit/0b8e4fded64397a7726a9daa144a6cc9a5e2edfa) +- [Dev Deps] update `aud`, `npmignore`, `tape` [`48378b2`](https://github.com/ljharb/gopd/commit/48378b2443f09a4f7efbd0fb6c3ee845a6cabcf3) +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`78099ee`](https://github.com/ljharb/gopd/commit/78099eeed41bfdc134c912280483689cc8861c31) +- [Tests] replace `aud` with `npm audit` [`4e0d0ac`](https://github.com/ljharb/gopd/commit/4e0d0ac47619d24a75318a8e1f543ee04b2a2632) +- [meta] add missing `engines.node` [`1443316`](https://github.com/ljharb/gopd/commit/14433165d07835c680155b3dfd62d9217d735eca) +- [Deps] update `get-intrinsic` [`eee5f51`](https://github.com/ljharb/gopd/commit/eee5f51769f3dbaf578b70e2a3199116b01aa670) +- [Deps] update `get-intrinsic` [`550c378`](https://github.com/ljharb/gopd/commit/550c3780e3a9c77b62565712a001b4ed64ea61f5) +- [Dev Deps] add missing peer dep [`8c2ecf8`](https://github.com/ljharb/gopd/commit/8c2ecf848122e4e30abfc5b5086fb48b390dce75) + +## [v1.0.1](https://github.com/ljharb/gopd/compare/v1.0.0...v1.0.1) - 2022-11-01 + +### Commits + +- [Fix] actually export gOPD instead of dP [`4b624bf`](https://github.com/ljharb/gopd/commit/4b624bfbeff788c5e3ff16d9443a83627847234f) + +## v1.0.0 - 2022-11-01 + +### Commits + +- Initial implementation, tests, readme [`0911e01`](https://github.com/ljharb/gopd/commit/0911e012cd642092bd88b732c161c58bf4f20bea) +- Initial commit [`b84e33f`](https://github.com/ljharb/gopd/commit/b84e33f5808a805ac57ff88d4247ad935569acbe) +- [actions] add reusable workflows [`12ae28a`](https://github.com/ljharb/gopd/commit/12ae28ae5f50f86e750215b6e2188901646d0119) +- npm init [`280118b`](https://github.com/ljharb/gopd/commit/280118badb45c80b4483836b5cb5315bddf6e582) +- [meta] add `auto-changelog` [`bb78de5`](https://github.com/ljharb/gopd/commit/bb78de5639a180747fb290c28912beaaf1615709) +- [meta] create FUNDING.yml; add `funding` in package.json [`11c22e6`](https://github.com/ljharb/gopd/commit/11c22e6355bb01f24e7fac4c9bb3055eb5b25002) +- [meta] use `npmignore` to autogenerate an npmignore file [`4f4537a`](https://github.com/ljharb/gopd/commit/4f4537a843b39f698c52f072845092e6fca345bb) +- Only apps should have lockfiles [`c567022`](https://github.com/ljharb/gopd/commit/c567022a18573aa7951cf5399445d9840e23e98b) diff --git a/food-ordering-app/server/node_modules/gopd/LICENSE b/food-ordering-app/server/node_modules/gopd/LICENSE new file mode 100644 index 000000000..6abfe1434 --- /dev/null +++ b/food-ordering-app/server/node_modules/gopd/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/food-ordering-app/server/node_modules/gopd/README.md b/food-ordering-app/server/node_modules/gopd/README.md new file mode 100644 index 000000000..784e56a09 --- /dev/null +++ b/food-ordering-app/server/node_modules/gopd/README.md @@ -0,0 +1,40 @@ +# gopd [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +`Object.getOwnPropertyDescriptor`, but accounts for IE's broken implementation. + +## Usage + +```javascript +var gOPD = require('gopd'); +var assert = require('assert'); + +if (gOPD) { + assert.equal(typeof gOPD, 'function', 'descriptors supported'); + // use gOPD like Object.getOwnPropertyDescriptor here +} else { + assert.ok(!gOPD, 'descriptors not supported'); +} +``` + +[package-url]: https://npmjs.org/package/gopd +[npm-version-svg]: https://versionbadg.es/ljharb/gopd.svg +[deps-svg]: https://david-dm.org/ljharb/gopd.svg +[deps-url]: https://david-dm.org/ljharb/gopd +[dev-deps-svg]: https://david-dm.org/ljharb/gopd/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/gopd#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/gopd.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/gopd.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/gopd.svg +[downloads-url]: https://npm-stat.com/charts.html?package=gopd +[codecov-image]: https://codecov.io/gh/ljharb/gopd/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/gopd/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/gopd +[actions-url]: https://github.com/ljharb/gopd/actions diff --git a/food-ordering-app/server/node_modules/gopd/gOPD.d.ts b/food-ordering-app/server/node_modules/gopd/gOPD.d.ts new file mode 100644 index 000000000..def48a3cc --- /dev/null +++ b/food-ordering-app/server/node_modules/gopd/gOPD.d.ts @@ -0,0 +1 @@ +export = Object.getOwnPropertyDescriptor; diff --git a/food-ordering-app/server/node_modules/gopd/gOPD.js b/food-ordering-app/server/node_modules/gopd/gOPD.js new file mode 100644 index 000000000..cf9616c4a --- /dev/null +++ b/food-ordering-app/server/node_modules/gopd/gOPD.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./gOPD')} */ +module.exports = Object.getOwnPropertyDescriptor; diff --git a/food-ordering-app/server/node_modules/gopd/index.d.ts b/food-ordering-app/server/node_modules/gopd/index.d.ts new file mode 100644 index 000000000..e228065f3 --- /dev/null +++ b/food-ordering-app/server/node_modules/gopd/index.d.ts @@ -0,0 +1,5 @@ +declare function gOPD(obj: O, prop: K): PropertyDescriptor | undefined; + +declare const fn: typeof gOPD | undefined | null; + +export = fn; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/gopd/index.js b/food-ordering-app/server/node_modules/gopd/index.js new file mode 100644 index 000000000..a4081b013 --- /dev/null +++ b/food-ordering-app/server/node_modules/gopd/index.js @@ -0,0 +1,15 @@ +'use strict'; + +/** @type {import('.')} */ +var $gOPD = require('./gOPD'); + +if ($gOPD) { + try { + $gOPD([], 'length'); + } catch (e) { + // IE 8 has a broken gOPD + $gOPD = null; + } +} + +module.exports = $gOPD; diff --git a/food-ordering-app/server/node_modules/gopd/package.json b/food-ordering-app/server/node_modules/gopd/package.json new file mode 100644 index 000000000..01c5ffa63 --- /dev/null +++ b/food-ordering-app/server/node_modules/gopd/package.json @@ -0,0 +1,77 @@ +{ + "name": "gopd", + "version": "1.2.0", + "description": "`Object.getOwnPropertyDescriptor`, but accounts for IE's broken implementation.", + "main": "index.js", + "exports": { + ".": "./index.js", + "./gOPD": "./gOPD.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prelint": "tsc -p . && attw -P", + "lint": "eslint --ext=js,mjs .", + "postlint": "evalmd README.md", + "pretest": "npm run lint", + "tests-only": "tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>=10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/gopd.git" + }, + "keywords": [ + "ecmascript", + "javascript", + "getownpropertydescriptor", + "property", + "descriptor" + ], + "author": "Jordan Harband ", + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/gopd/issues" + }, + "homepage": "https://github.com/ljharb/gopd#readme", + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.0", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.0", + "@types/tape": "^5.6.5", + "auto-changelog": "^2.5.0", + "encoding": "^0.1.13", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/food-ordering-app/server/node_modules/gopd/test/index.js b/food-ordering-app/server/node_modules/gopd/test/index.js new file mode 100644 index 000000000..6f43453ad --- /dev/null +++ b/food-ordering-app/server/node_modules/gopd/test/index.js @@ -0,0 +1,36 @@ +'use strict'; + +var test = require('tape'); +var gOPD = require('../'); + +test('gOPD', function (t) { + t.test('supported', { skip: !gOPD }, function (st) { + st.equal(typeof gOPD, 'function', 'is a function'); + + var obj = { x: 1 }; + st.ok('x' in obj, 'property exists'); + + // @ts-expect-error TS can't figure out narrowing from `skip` + var desc = gOPD(obj, 'x'); + st.deepEqual( + desc, + { + configurable: true, + enumerable: true, + value: 1, + writable: true + }, + 'descriptor is as expected' + ); + + st.end(); + }); + + t.test('not supported', { skip: !!gOPD }, function (st) { + st.notOk(gOPD, 'is falsy'); + + st.end(); + }); + + t.end(); +}); diff --git a/food-ordering-app/server/node_modules/gopd/tsconfig.json b/food-ordering-app/server/node_modules/gopd/tsconfig.json new file mode 100644 index 000000000..d9a6668c3 --- /dev/null +++ b/food-ordering-app/server/node_modules/gopd/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "es2021", + }, + "exclude": [ + "coverage", + ], +} diff --git a/food-ordering-app/server/node_modules/has-symbols/CHANGELOG.md b/food-ordering-app/server/node_modules/has-symbols/CHANGELOG.md index cd532a2b4..cc3cf8390 100644 --- a/food-ordering-app/server/node_modules/has-symbols/CHANGELOG.md +++ b/food-ordering-app/server/node_modules/has-symbols/CHANGELOG.md @@ -5,6 +5,22 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [v1.1.0](https://github.com/inspect-js/has-symbols/compare/v1.0.3...v1.1.0) - 2024-12-02 + +### Commits + +- [actions] update workflows [`548c0bf`](https://github.com/inspect-js/has-symbols/commit/548c0bf8c9b1235458df7a1c0490b0064647a282) +- [actions] further shard; update action deps [`bec56bb`](https://github.com/inspect-js/has-symbols/commit/bec56bb0fb44b43a786686b944875a3175cf3ff3) +- [meta] use `npmignore` to autogenerate an npmignore file [`ac81032`](https://github.com/inspect-js/has-symbols/commit/ac81032809157e0a079e5264e9ce9b6f1275777e) +- [New] add types [`6469cbf`](https://github.com/inspect-js/has-symbols/commit/6469cbff1866cfe367b2b3d181d9296ec14b2a3d) +- [actions] update rebase action to use reusable workflow [`9c9d4d0`](https://github.com/inspect-js/has-symbols/commit/9c9d4d0d8938e4b267acdf8e421f4e92d1716d72) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `tape` [`adb5887`](https://github.com/inspect-js/has-symbols/commit/adb5887ca9444849b08beb5caaa9e1d42320cdfb) +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`13ec198`](https://github.com/inspect-js/has-symbols/commit/13ec198ec80f1993a87710af1606a1970b22c7cb) +- [Dev Deps] update `auto-changelog`, `core-js`, `tape` [`941be52`](https://github.com/inspect-js/has-symbols/commit/941be5248387cab1da72509b22acf3fdb223f057) +- [Tests] replace `aud` with `npm audit` [`74f49e9`](https://github.com/inspect-js/has-symbols/commit/74f49e9a9d17a443020784234a1c53ce765b3559) +- [Dev Deps] update `npmignore` [`9c0ac04`](https://github.com/inspect-js/has-symbols/commit/9c0ac0452a834f4c2a4b54044f2d6a89f17e9a70) +- [Dev Deps] add missing peer dep [`52337a5`](https://github.com/inspect-js/has-symbols/commit/52337a5621cced61f846f2afdab7707a8132cc12) + ## [v1.0.3](https://github.com/inspect-js/has-symbols/compare/v1.0.2...v1.0.3) - 2022-03-01 ### Commits diff --git a/food-ordering-app/server/node_modules/has-symbols/index.d.ts b/food-ordering-app/server/node_modules/has-symbols/index.d.ts new file mode 100644 index 000000000..9b9859500 --- /dev/null +++ b/food-ordering-app/server/node_modules/has-symbols/index.d.ts @@ -0,0 +1,3 @@ +declare function hasNativeSymbols(): boolean; + +export = hasNativeSymbols; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/has-symbols/index.js b/food-ordering-app/server/node_modules/has-symbols/index.js index 17044fa21..fa65265a9 100644 --- a/food-ordering-app/server/node_modules/has-symbols/index.js +++ b/food-ordering-app/server/node_modules/has-symbols/index.js @@ -3,6 +3,7 @@ var origSymbol = typeof Symbol !== 'undefined' && Symbol; var hasSymbolSham = require('./shams'); +/** @type {import('.')} */ module.exports = function hasNativeSymbols() { if (typeof origSymbol !== 'function') { return false; } if (typeof Symbol !== 'function') { return false; } diff --git a/food-ordering-app/server/node_modules/has-symbols/package.json b/food-ordering-app/server/node_modules/has-symbols/package.json index fe7004a10..d835e20b9 100644 --- a/food-ordering-app/server/node_modules/has-symbols/package.json +++ b/food-ordering-app/server/node_modules/has-symbols/package.json @@ -1,21 +1,23 @@ { "name": "has-symbols", - "version": "1.0.3", + "version": "1.1.0", "description": "Determine if the JS environment has Symbol support. Supports spec, or shams.", "main": "index.js", "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", "prepublishOnly": "safe-publish-latest", "prepublish": "not-in-publish || npm run prepublishOnly", "pretest": "npm run --silent lint", "test": "npm run tests-only", - "posttest": "aud --production", - "tests-only": "npm run test:stock && npm run test:staging && npm run test:shams", + "posttest": "npx npm@'>=10.2' audit --production", + "tests-only": "npm run test:stock && npm run test:shams", "test:stock": "nyc node test", "test:staging": "nyc node --harmony --es-staging test", "test:shams": "npm run --silent test:shams:getownpropertysymbols && npm run --silent test:shams:corejs", "test:shams:corejs": "nyc node test/shams/core-js.js", "test:shams:getownpropertysymbols": "nyc node test/shams/get-own-property-symbols.js", "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p . && attw -P", "version": "auto-changelog && git add CHANGELOG.md", "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" }, @@ -54,15 +56,22 @@ }, "homepage": "https://github.com/ljharb/has-symbols#readme", "devDependencies": { - "@ljharb/eslint-config": "^20.2.3", - "aud": "^2.0.0", - "auto-changelog": "^2.4.0", + "@arethetypeswrong/cli": "^0.17.0", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.0", + "@types/core-js": "^2.5.8", + "@types/tape": "^5.6.5", + "auto-changelog": "^2.5.0", "core-js": "^2.6.12", + "encoding": "^0.1.13", "eslint": "=8.8.0", "get-own-property-symbols": "^0.9.5", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", "nyc": "^10.3.2", "safe-publish-latest": "^2.0.0", - "tape": "^5.5.2" + "tape": "^5.9.0", + "typescript": "next" }, "testling": { "files": "test/index.js", @@ -93,9 +102,10 @@ "backfillLimit": false, "hideCredit": true }, - "greenkeeper": { + "publishConfig": { "ignore": [ - "core-js" + ".github/workflows", + "types" ] } } diff --git a/food-ordering-app/server/node_modules/has-symbols/shams.d.ts b/food-ordering-app/server/node_modules/has-symbols/shams.d.ts new file mode 100644 index 000000000..8d0bf2435 --- /dev/null +++ b/food-ordering-app/server/node_modules/has-symbols/shams.d.ts @@ -0,0 +1,3 @@ +declare function hasSymbolShams(): boolean; + +export = hasSymbolShams; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/has-symbols/shams.js b/food-ordering-app/server/node_modules/has-symbols/shams.js index 1285210ef..f97b47410 100644 --- a/food-ordering-app/server/node_modules/has-symbols/shams.js +++ b/food-ordering-app/server/node_modules/has-symbols/shams.js @@ -1,10 +1,12 @@ 'use strict'; +/** @type {import('./shams')} */ /* eslint complexity: [2, 18], max-statements: [2, 33] */ module.exports = function hasSymbols() { if (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; } if (typeof Symbol.iterator === 'symbol') { return true; } + /** @type {{ [k in symbol]?: unknown }} */ var obj = {}; var sym = Symbol('test'); var symObj = Object(sym); @@ -23,7 +25,7 @@ module.exports = function hasSymbols() { var symVal = 42; obj[sym] = symVal; - for (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop + for (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop if (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; } if (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; } @@ -34,7 +36,8 @@ module.exports = function hasSymbols() { if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; } if (typeof Object.getOwnPropertyDescriptor === 'function') { - var descriptor = Object.getOwnPropertyDescriptor(obj, sym); + // eslint-disable-next-line no-extra-parens + var descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym)); if (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; } } diff --git a/food-ordering-app/server/node_modules/has-symbols/test/shams/core-js.js b/food-ordering-app/server/node_modules/has-symbols/test/shams/core-js.js index df5365c23..1a29024ea 100644 --- a/food-ordering-app/server/node_modules/has-symbols/test/shams/core-js.js +++ b/food-ordering-app/server/node_modules/has-symbols/test/shams/core-js.js @@ -8,6 +8,7 @@ if (typeof Symbol === 'function' && typeof Symbol() === 'symbol') { t.equal(typeof Symbol(), 'symbol'); t.end(); }); + // @ts-expect-error TS is stupid and doesn't know about top level return return; } diff --git a/food-ordering-app/server/node_modules/has-symbols/test/shams/get-own-property-symbols.js b/food-ordering-app/server/node_modules/has-symbols/test/shams/get-own-property-symbols.js index 9191b248b..e0296f8e2 100644 --- a/food-ordering-app/server/node_modules/has-symbols/test/shams/get-own-property-symbols.js +++ b/food-ordering-app/server/node_modules/has-symbols/test/shams/get-own-property-symbols.js @@ -8,6 +8,7 @@ if (typeof Symbol === 'function' && typeof Symbol() === 'symbol') { t.equal(typeof Symbol(), 'symbol'); t.end(); }); + // @ts-expect-error TS is stupid and doesn't know about top level return return; } diff --git a/food-ordering-app/server/node_modules/has-symbols/test/tests.js b/food-ordering-app/server/node_modules/has-symbols/test/tests.js index 89edd1291..66a2cb800 100644 --- a/food-ordering-app/server/node_modules/has-symbols/test/tests.js +++ b/food-ordering-app/server/node_modules/has-symbols/test/tests.js @@ -1,5 +1,6 @@ 'use strict'; +/** @type {(t: import('tape').Test) => false | void} */ // eslint-disable-next-line consistent-return module.exports = function runSymbolTests(t) { t.equal(typeof Symbol, 'function', 'global Symbol is a function'); @@ -31,6 +32,7 @@ module.exports = function runSymbolTests(t) { t.equal(typeof Object.getOwnPropertySymbols, 'function', 'Object.getOwnPropertySymbols is a function'); + /** @type {{ [k in symbol]?: unknown }} */ var obj = {}; var sym = Symbol('test'); var symObj = Object(sym); @@ -40,8 +42,8 @@ module.exports = function runSymbolTests(t) { var symVal = 42; obj[sym] = symVal; - // eslint-disable-next-line no-restricted-syntax - for (sym in obj) { t.fail('symbol property key was found in for..in of object'); } + // eslint-disable-next-line no-restricted-syntax, no-unused-vars + for (var _ in obj) { t.fail('symbol property key was found in for..in of object'); } t.deepEqual(Object.keys(obj), [], 'no enumerable own keys on symbol-valued object'); t.deepEqual(Object.getOwnPropertyNames(obj), [], 'no own names on symbol-valued object'); diff --git a/food-ordering-app/server/node_modules/has-symbols/tsconfig.json b/food-ordering-app/server/node_modules/has-symbols/tsconfig.json new file mode 100644 index 000000000..ba99af43f --- /dev/null +++ b/food-ordering-app/server/node_modules/has-symbols/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "ES2021", + "maxNodeModuleJsDepth": 0, + }, + "exclude": [ + "coverage" + ] +} diff --git a/food-ordering-app/server/node_modules/has/LICENSE-MIT b/food-ordering-app/server/node_modules/has/LICENSE-MIT deleted file mode 100644 index ae7014d38..000000000 --- a/food-ordering-app/server/node_modules/has/LICENSE-MIT +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2013 Thiago de Arruda - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/food-ordering-app/server/node_modules/has/README.md b/food-ordering-app/server/node_modules/has/README.md deleted file mode 100644 index 635e3a4ba..000000000 --- a/food-ordering-app/server/node_modules/has/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# has - -> Object.prototype.hasOwnProperty.call shortcut - -## Installation - -```sh -npm install --save has -``` - -## Usage - -```js -var has = require('has'); - -has({}, 'hasOwnProperty'); // false -has(Object.prototype, 'hasOwnProperty'); // true -``` diff --git a/food-ordering-app/server/node_modules/has/package.json b/food-ordering-app/server/node_modules/has/package.json deleted file mode 100644 index 7c4592f16..000000000 --- a/food-ordering-app/server/node_modules/has/package.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "has", - "description": "Object.prototype.hasOwnProperty.call shortcut", - "version": "1.0.3", - "homepage": "https://github.com/tarruda/has", - "author": { - "name": "Thiago de Arruda", - "email": "tpadilha84@gmail.com" - }, - "contributors": [ - { - "name": "Jordan Harband", - "email": "ljharb@gmail.com", - "url": "http://ljharb.codes" - } - ], - "repository": { - "type": "git", - "url": "git://github.com/tarruda/has.git" - }, - "bugs": { - "url": "https://github.com/tarruda/has/issues" - }, - "license": "MIT", - "licenses": [ - { - "type": "MIT", - "url": "https://github.com/tarruda/has/blob/master/LICENSE-MIT" - } - ], - "main": "./src", - "dependencies": { - "function-bind": "^1.1.1" - }, - "devDependencies": { - "@ljharb/eslint-config": "^12.2.1", - "eslint": "^4.19.1", - "tape": "^4.9.0" - }, - "engines": { - "node": ">= 0.4.0" - }, - "scripts": { - "lint": "eslint .", - "pretest": "npm run lint", - "test": "tape test" - } -} diff --git a/food-ordering-app/server/node_modules/has/src/index.js b/food-ordering-app/server/node_modules/has/src/index.js deleted file mode 100644 index dd92dd909..000000000 --- a/food-ordering-app/server/node_modules/has/src/index.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict'; - -var bind = require('function-bind'); - -module.exports = bind.call(Function.call, Object.prototype.hasOwnProperty); diff --git a/food-ordering-app/server/node_modules/has/test/index.js b/food-ordering-app/server/node_modules/has/test/index.js deleted file mode 100644 index 43d480b2c..000000000 --- a/food-ordering-app/server/node_modules/has/test/index.js +++ /dev/null @@ -1,10 +0,0 @@ -'use strict'; - -var test = require('tape'); -var has = require('../'); - -test('has', function (t) { - t.equal(has({}, 'hasOwnProperty'), false, 'object literal does not have own property "hasOwnProperty"'); - t.equal(has(Object.prototype, 'hasOwnProperty'), true, 'Object.prototype has own property "hasOwnProperty"'); - t.end(); -}); diff --git a/food-ordering-app/server/node_modules/hasown/.eslintrc b/food-ordering-app/server/node_modules/hasown/.eslintrc new file mode 100644 index 000000000..3b5d9e90e --- /dev/null +++ b/food-ordering-app/server/node_modules/hasown/.eslintrc @@ -0,0 +1,5 @@ +{ + "root": true, + + "extends": "@ljharb", +} diff --git a/food-ordering-app/server/node_modules/hasown/.github/FUNDING.yml b/food-ordering-app/server/node_modules/hasown/.github/FUNDING.yml new file mode 100644 index 000000000..d68c8b716 --- /dev/null +++ b/food-ordering-app/server/node_modules/hasown/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/hasown +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with a single custom sponsorship URL diff --git a/food-ordering-app/server/node_modules/hasown/.nycrc b/food-ordering-app/server/node_modules/hasown/.nycrc new file mode 100644 index 000000000..1826526e0 --- /dev/null +++ b/food-ordering-app/server/node_modules/hasown/.nycrc @@ -0,0 +1,13 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "lines": 86, + "statements": 85.93, + "functions": 82.43, + "branches": 76.06, + "exclude": [ + "coverage", + "test" + ] +} diff --git a/food-ordering-app/server/node_modules/hasown/CHANGELOG.md b/food-ordering-app/server/node_modules/hasown/CHANGELOG.md new file mode 100644 index 000000000..2b0a980fb --- /dev/null +++ b/food-ordering-app/server/node_modules/hasown/CHANGELOG.md @@ -0,0 +1,40 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v2.0.2](https://github.com/inspect-js/hasOwn/compare/v2.0.1...v2.0.2) - 2024-03-10 + +### Commits + +- [types] use shared config [`68e9d4d`](https://github.com/inspect-js/hasOwn/commit/68e9d4dab6facb4f05f02c6baea94a3f2a4e44b2) +- [actions] remove redundant finisher; use reusable workflow [`241a68e`](https://github.com/inspect-js/hasOwn/commit/241a68e13ea1fe52bec5ba7f74144befc31fae7b) +- [Tests] increase coverage [`4125c0d`](https://github.com/inspect-js/hasOwn/commit/4125c0d6121db56ae30e38346dfb0c000b04f0a7) +- [Tests] skip `npm ls` in old node due to TS [`01b9282`](https://github.com/inspect-js/hasOwn/commit/01b92822f9971dea031eafdd14767df41d61c202) +- [types] improve predicate type [`d340f85`](https://github.com/inspect-js/hasOwn/commit/d340f85ce02e286ef61096cbbb6697081d40a12b) +- [Dev Deps] update `tape` [`70089fc`](https://github.com/inspect-js/hasOwn/commit/70089fcf544e64acc024cbe60f5a9b00acad86de) +- [Tests] use `@arethetypeswrong/cli` [`50b272c`](https://github.com/inspect-js/hasOwn/commit/50b272c829f40d053a3dd91c9796e0ac0b2af084) + +## [v2.0.1](https://github.com/inspect-js/hasOwn/compare/v2.0.0...v2.0.1) - 2024-02-10 + +### Commits + +- [types] use a handwritten d.ts file; fix exported type [`012b989`](https://github.com/inspect-js/hasOwn/commit/012b9898ccf91dc441e2ebf594ff70270a5fda58) +- [Dev Deps] update `@types/function-bind`, `@types/mock-property`, `@types/tape`, `aud`, `mock-property`, `npmignore`, `tape`, `typescript` [`977a56f`](https://github.com/inspect-js/hasOwn/commit/977a56f51a1f8b20566f3c471612137894644025) +- [meta] add `sideEffects` flag [`3a60b7b`](https://github.com/inspect-js/hasOwn/commit/3a60b7bf42fccd8c605e5f145a6fcc83b13cb46f) + +## [v2.0.0](https://github.com/inspect-js/hasOwn/compare/v1.0.1...v2.0.0) - 2023-10-19 + +### Commits + +- revamped implementation, tests, readme [`72bf8b3`](https://github.com/inspect-js/hasOwn/commit/72bf8b338e77a638f0a290c63ffaed18339c36b4) +- [meta] revamp package.json [`079775f`](https://github.com/inspect-js/hasOwn/commit/079775fb1ec72c1c6334069593617a0be3847458) +- Only apps should have lockfiles [`6640e23`](https://github.com/inspect-js/hasOwn/commit/6640e233d1bb8b65260880f90787637db157d215) + +## v1.0.1 - 2023-10-10 + +### Commits + +- Initial commit [`8dbfde6`](https://github.com/inspect-js/hasOwn/commit/8dbfde6e8fb0ebb076fab38d138f2984eb340a62) diff --git a/food-ordering-app/server/node_modules/hasown/LICENSE b/food-ordering-app/server/node_modules/hasown/LICENSE new file mode 100644 index 000000000..031492907 --- /dev/null +++ b/food-ordering-app/server/node_modules/hasown/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Jordan Harband and contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/food-ordering-app/server/node_modules/hasown/README.md b/food-ordering-app/server/node_modules/hasown/README.md new file mode 100644 index 000000000..f759b8a83 --- /dev/null +++ b/food-ordering-app/server/node_modules/hasown/README.md @@ -0,0 +1,40 @@ +# hasown [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +A robust, ES3 compatible, "has own property" predicate. + +## Example + +```js +const assert = require('assert'); +const hasOwn = require('hasown'); + +assert.equal(hasOwn({}, 'toString'), false); +assert.equal(hasOwn([], 'length'), true); +assert.equal(hasOwn({ a: 42 }, 'a'), true); +``` + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.org/package/hasown +[npm-version-svg]: https://versionbadg.es/inspect-js/hasown.svg +[deps-svg]: https://david-dm.org/inspect-js/hasOwn.svg +[deps-url]: https://david-dm.org/inspect-js/hasOwn +[dev-deps-svg]: https://david-dm.org/inspect-js/hasOwn/dev-status.svg +[dev-deps-url]: https://david-dm.org/inspect-js/hasOwn#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/hasown.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/hasown.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/hasown.svg +[downloads-url]: https://npm-stat.com/charts.html?package=hasown +[codecov-image]: https://codecov.io/gh/inspect-js/hasOwn/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/inspect-js/hasOwn/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/inspect-js/hasOwn +[actions-url]: https://github.com/inspect-js/hasOwn/actions diff --git a/food-ordering-app/server/node_modules/hasown/index.d.ts b/food-ordering-app/server/node_modules/hasown/index.d.ts new file mode 100644 index 000000000..aafdf3b2b --- /dev/null +++ b/food-ordering-app/server/node_modules/hasown/index.d.ts @@ -0,0 +1,3 @@ +declare function hasOwn(o: O, p: K): o is O & Record; + +export = hasOwn; diff --git a/food-ordering-app/server/node_modules/hasown/index.js b/food-ordering-app/server/node_modules/hasown/index.js new file mode 100644 index 000000000..34e605913 --- /dev/null +++ b/food-ordering-app/server/node_modules/hasown/index.js @@ -0,0 +1,8 @@ +'use strict'; + +var call = Function.prototype.call; +var $hasOwn = Object.prototype.hasOwnProperty; +var bind = require('function-bind'); + +/** @type {import('.')} */ +module.exports = bind.call(call, $hasOwn); diff --git a/food-ordering-app/server/node_modules/hasown/package.json b/food-ordering-app/server/node_modules/hasown/package.json new file mode 100644 index 000000000..8502e13dd --- /dev/null +++ b/food-ordering-app/server/node_modules/hasown/package.json @@ -0,0 +1,92 @@ +{ + "name": "hasown", + "version": "2.0.2", + "description": "A robust, ES3 compatible, \"has own property\" predicate.", + "main": "index.js", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "types": "index.d.ts", + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "npm run tsc", + "pretest": "npm run lint", + "tsc": "tsc -p .", + "posttsc": "attw -P", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "aud --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/inspect-js/hasOwn.git" + }, + "keywords": [ + "has", + "hasOwnProperty", + "hasOwn", + "has-own", + "own", + "has", + "property", + "in", + "javascript", + "ecmascript" + ], + "author": "Jordan Harband ", + "license": "MIT", + "bugs": { + "url": "https://github.com/inspect-js/hasOwn/issues" + }, + "homepage": "https://github.com/inspect-js/hasOwn#readme", + "dependencies": { + "function-bind": "^1.1.2" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.15.1", + "@ljharb/eslint-config": "^21.1.0", + "@ljharb/tsconfig": "^0.2.0", + "@types/function-bind": "^1.1.10", + "@types/mock-property": "^1.0.2", + "@types/tape": "^5.6.4", + "aud": "^2.0.4", + "auto-changelog": "^2.4.0", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "mock-property": "^1.0.3", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.7.5", + "typescript": "next" + }, + "engines": { + "node": ">= 0.4" + }, + "testling": { + "files": "test/index.js" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows", + "test" + ] + } +} diff --git a/food-ordering-app/server/node_modules/hasown/tsconfig.json b/food-ordering-app/server/node_modules/hasown/tsconfig.json new file mode 100644 index 000000000..0930c5658 --- /dev/null +++ b/food-ordering-app/server/node_modules/hasown/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "@ljharb/tsconfig", + "exclude": [ + "coverage", + ], +} diff --git a/food-ordering-app/server/node_modules/http-errors/HISTORY.md b/food-ordering-app/server/node_modules/http-errors/HISTORY.md index 722868429..3d81d265f 100644 --- a/food-ordering-app/server/node_modules/http-errors/HISTORY.md +++ b/food-ordering-app/server/node_modules/http-errors/HISTORY.md @@ -1,3 +1,9 @@ +2.0.1 / 2025-11-20 +================== + + * deps: use tilde notation for dependencies + * deps: update statuses to 2.0.2 + 2.0.0 / 2021-12-17 ================== diff --git a/food-ordering-app/server/node_modules/http-errors/index.js b/food-ordering-app/server/node_modules/http-errors/index.js index c425f1ee9..82271f6f5 100644 --- a/food-ordering-app/server/node_modules/http-errors/index.js +++ b/food-ordering-app/server/node_modules/http-errors/index.js @@ -279,11 +279,12 @@ function populateConstructorExports (exports, codes, HttpError) { /** * Get a class name from a name identifier. + * + * @param {string} name + * @returns {string} * @private */ function toClassName (name) { - return name.substr(-5) !== 'Error' - ? name + 'Error' - : name + return name.slice(-5) === 'Error' ? name : name + 'Error' } diff --git a/food-ordering-app/server/node_modules/http-errors/package.json b/food-ordering-app/server/node_modules/http-errors/package.json index 4cb6d7eda..4b46d62ad 100644 --- a/food-ordering-app/server/node_modules/http-errors/package.json +++ b/food-ordering-app/server/node_modules/http-errors/package.json @@ -1,7 +1,7 @@ { "name": "http-errors", "description": "Create HTTP error objects", - "version": "2.0.0", + "version": "2.0.1", "author": "Jonathan Ong (http://jongleberry.com)", "contributors": [ "Alan Plum ", @@ -9,17 +9,21 @@ ], "license": "MIT", "repository": "jshttp/http-errors", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + }, "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" }, "devDependencies": { "eslint": "7.32.0", "eslint-config-standard": "14.1.1", - "eslint-plugin-import": "2.25.3", + "eslint-plugin-import": "2.32.0", "eslint-plugin-markdown": "2.2.1", "eslint-plugin-node": "11.1.0", "eslint-plugin-promise": "5.2.0", @@ -32,7 +36,7 @@ }, "scripts": { "lint": "eslint . && node ./scripts/lint-readme-list.js", - "test": "mocha --reporter spec --bail", + "test": "mocha --reporter spec", "test-ci": "nyc --reporter=lcov --reporter=text npm test", "test-cov": "nyc --reporter=html --reporter=text npm test", "version": "node scripts/version-history.js && git add HISTORY.md" diff --git a/food-ordering-app/server/node_modules/ip-address/LICENSE b/food-ordering-app/server/node_modules/ip-address/LICENSE new file mode 100644 index 000000000..ec79adb0c --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/LICENSE @@ -0,0 +1,19 @@ +Copyright (C) 2011 by Beau Gunderson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/food-ordering-app/server/node_modules/ip-address/README.md b/food-ordering-app/server/node_modules/ip-address/README.md new file mode 100644 index 000000000..93ccb412d --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/README.md @@ -0,0 +1,105 @@ +[![CircleCI](https://dl.circleci.com/status-badge/img/circleci/9fJmTZfn8d8p7GtVt688PY/JjriGjhcxBD6zYKygMZaet/tree/master.svg?style=svg&circle-token=7baede7efd3db5f1f25fb439e97d5f695ff76318)](https://dl.circleci.com/status-badge/redirect/circleci/9fJmTZfn8d8p7GtVt688PY/JjriGjhcxBD6zYKygMZaet/tree/master) +[![codecov]](https://codecov.io/github/beaugunderson/ip-address?branch=master) +[![downloads]](https://www.npmjs.com/package/ip-address) +[![npm]](https://www.npmjs.com/package/ip-address) +[![snyk]](https://snyk.io/test/github/beaugunderson/ip-address) + +[codecov]: https://codecov.io/github/beaugunderson/ip-address/coverage.svg?branch=master +[downloads]: https://img.shields.io/npm/dm/ip-address.svg +[npm]: https://img.shields.io/npm/v/ip-address.svg +[snyk]: https://snyk.io/test/github/beaugunderson/ip-address/badge.svg + +## ip-address + +`ip-address` is a library for validating and manipulating IPv4 and IPv6 +addresses in JavaScript. + +### Upgrading from 9.x to 10.x + +The dependency on `jsbn` was removed thanks to +[michal-kocarek](https://github.com/michal-kocarek). Thanks Michal! For +clarity, all methods with BigInteger in the name were renamed to BigInt. + +#### Breaking changes + +- `#fromBigInteger()` → `#fromBigInt()`; now returns a native BigInt +- `#bigInteger()` → `#bigInt()`; now returns a native BigInt + +### Documentation + +Documentation is available at [ip-address.js.org](http://ip-address.js.org/). + +### Examples + +```js +var Address6 = require('ip-address').Address6; + +var address = new Address6('2001:0:ce49:7601:e866:efff:62c3:fffe'); + +var teredo = address.inspectTeredo(); + +teredo.client4; // '157.60.0.1' +``` + +### Features + +- Usable via CommonJS or ESM +- Parsing of all IPv6 notations +- Parsing of IPv6 addresses and ports from URLs with `Address6.fromURL(url)` +- Validity checking +- Decoding of the [Teredo + information](http://en.wikipedia.org/wiki/Teredo_tunneling#IPv6_addressing) + in an address +- Whether one address is a valid subnet of another +- What special properties a given address has (multicast prefix, unique + local address prefix, etc.) +- Number of subnets of a certain size in a given address +- Display methods + - Hex, binary, and decimal + - Canonical form + - Correct form + - IPv4-compatible (i.e. `::ffff:192.168.0.1`) +- Works in [node](http://nodejs.org/) and the browser (with browserify) +- ~1,600 test cases + +### Used by + +- [anon](https://github.com/edsu/anon) which powers + [@congressedits](https://twitter.com/congressedits), among + [many others](https://github.com/edsu/anon#community) +- [base85](https://github.com/noseglid/base85): base85 encoding/decoding +- [contrail-web-core](https://github.com/Juniper/contrail-web-core): part of + Contrail, a network virtualization solution made by Juniper Networks +- [dhcpjs](https://github.com/apaprocki/node-dhcpjs): a DHCP client and server +- [epochtalk](https://github.com/epochtalk/epochtalk): next generation forum + software +- [geoip-web](https://github.com/tfrce/node-geoip-web): a server for + quickly geolocating IP addresses +- [hexabus](https://github.com/mysmartgrid/hexabus): an IPv6-based home + automation bus +- [hubot-deploy](https://github.com/atmos/hubot-deploy): GitHub Flow via hubot +- [heroku-portscanner](https://github.com/robison/heroku-portscanner): nmap + hosted on Heroku +- [ipfs-swarm](https://github.com/diasdavid/node-ipfs-swarm): a swarm + implementation based on IPFS +- [javascript-x-server](https://github.com/GothAck/javascript-x-server): an X + server written in JavaScript +- [libnmap](https://github.com/jas-/node-libnmap): a node API for nmap +- [mail-io](https://github.com/mofux/mail-io): a lightweight SMTP server +- [maxmind-db-reader](https://github.com/PaddeK/node-maxmind-db): a library for + reading MaxMind database files +- [proxy-protocol-v2](https://github.com/ably/proxy-protocol-v2): a proxy + protocol encoder/decoder built by [Ably](https://www.ably.io/) +- [Samsara](https://github.com/mariusGundersen/Samsara): a Docker web interface +- [sis-api](https://github.com/sis-cmdb/sis-api): a configuration management + database API +- [socks5-client](https://github.com/mattcg/socks5-client): a SOCKS v5 client +- [socksified](https://github.com/vially/node-socksified): a SOCKS v5 client +- [socksv5](https://github.com/mscdex/socksv5): a SOCKS v5 server/client +- [ssdapi](https://github.com/rsolomou/ssdapi): an API created by the + University of Portsmouth +- [SwitchyOmega](https://github.com/FelisCatus/SwitchyOmega): a [Chrome + extension](https://chrome.google.com/webstore/detail/padekgcemlokbadohgkifijomclgjgif) + for switching between multiple proxies with ~311k users! +- [swiz](https://github.com/racker/node-swiz): a serialization framework built + and used by [Rackspace](http://www.rackspace.com/) diff --git a/food-ordering-app/server/node_modules/ip-address/dist/address-error.d.ts b/food-ordering-app/server/node_modules/ip-address/dist/address-error.d.ts new file mode 100644 index 000000000..59b216516 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/address-error.d.ts @@ -0,0 +1,5 @@ +export declare class AddressError extends Error { + parseMessage?: string; + constructor(message: string, parseMessage?: string); +} +//# sourceMappingURL=address-error.d.ts.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/address-error.d.ts.map b/food-ordering-app/server/node_modules/ip-address/dist/address-error.d.ts.map new file mode 100644 index 000000000..0ef7fa696 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/address-error.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"address-error.d.ts","sourceRoot":"","sources":["../src/address-error.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAa,SAAQ,KAAK;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;gBAEV,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;CAOnD"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/address-error.js b/food-ordering-app/server/node_modules/ip-address/dist/address-error.js new file mode 100644 index 000000000..c178ae482 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/address-error.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AddressError = void 0; +class AddressError extends Error { + constructor(message, parseMessage) { + super(message); + this.name = 'AddressError'; + this.parseMessage = parseMessage; + } +} +exports.AddressError = AddressError; +//# sourceMappingURL=address-error.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/address-error.js.map b/food-ordering-app/server/node_modules/ip-address/dist/address-error.js.map new file mode 100644 index 000000000..5d71d1343 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/address-error.js.map @@ -0,0 +1 @@ +{"version":3,"file":"address-error.js","sourceRoot":"","sources":["../src/address-error.ts"],"names":[],"mappings":";;;AAAA,MAAa,YAAa,SAAQ,KAAK;IAGrC,YAAY,OAAe,EAAE,YAAqB;QAChD,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAE3B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;CACF;AAVD,oCAUC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/common.d.ts b/food-ordering-app/server/node_modules/ip-address/dist/common.d.ts new file mode 100644 index 000000000..a4250d881 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/common.d.ts @@ -0,0 +1,15 @@ +import { Address4 } from './ipv4'; +import { Address6 } from './ipv6'; +export interface ReverseFormOptions { + omitSuffix?: boolean; +} +export declare function isInSubnet(this: Address4 | Address6, address: Address4 | Address6): boolean; +export declare function isCorrect(defaultBits: number): (this: Address4 | Address6) => boolean; +export declare function numberToPaddedHex(number: number): string; +export declare function stringToPaddedHex(numberString: string): string; +/** + * @param binaryValue Binary representation of a value (e.g. `10`) + * @param position Byte position, where 0 is the least significant bit + */ +export declare function testBit(binaryValue: string, position: number): boolean; +//# sourceMappingURL=common.d.ts.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/common.d.ts.map b/food-ordering-app/server/node_modules/ip-address/dist/common.d.ts.map new file mode 100644 index 000000000..d13705ad6 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/common.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,EAAE,OAAO,EAAE,QAAQ,GAAG,QAAQ,WAUjF;AAED,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,UACpB,QAAQ,GAAG,QAAQ,aAW3C;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,UAE/C;AAED,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,UAErD;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAStE"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/common.js b/food-ordering-app/server/node_modules/ip-address/dist/common.js new file mode 100644 index 000000000..273a01e28 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/common.js @@ -0,0 +1,46 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isInSubnet = isInSubnet; +exports.isCorrect = isCorrect; +exports.numberToPaddedHex = numberToPaddedHex; +exports.stringToPaddedHex = stringToPaddedHex; +exports.testBit = testBit; +function isInSubnet(address) { + if (this.subnetMask < address.subnetMask) { + return false; + } + if (this.mask(address.subnetMask) === address.mask()) { + return true; + } + return false; +} +function isCorrect(defaultBits) { + return function () { + if (this.addressMinusSuffix !== this.correctForm()) { + return false; + } + if (this.subnetMask === defaultBits && !this.parsedSubnet) { + return true; + } + return this.parsedSubnet === String(this.subnetMask); + }; +} +function numberToPaddedHex(number) { + return number.toString(16).padStart(2, '0'); +} +function stringToPaddedHex(numberString) { + return numberToPaddedHex(parseInt(numberString, 10)); +} +/** + * @param binaryValue Binary representation of a value (e.g. `10`) + * @param position Byte position, where 0 is the least significant bit + */ +function testBit(binaryValue, position) { + const { length } = binaryValue; + if (position > length) { + return false; + } + const positionInString = length - position; + return binaryValue.substring(positionInString, positionInString + 1) === '1'; +} +//# sourceMappingURL=common.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/common.js.map b/food-ordering-app/server/node_modules/ip-address/dist/common.js.map new file mode 100644 index 000000000..036ce661d --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/common.js.map @@ -0,0 +1 @@ +{"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":";;AAOA,gCAUC;AAED,8BAYC;AAED,8CAEC;AAED,8CAEC;AAMD,0BASC;AA/CD,SAAgB,UAAU,CAA4B,OAA4B;IAChF,IAAI,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,SAAS,CAAC,WAAmB;IAC3C,OAAO;QACL,IAAI,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACnD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YAC1D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,YAAY,KAAK,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvD,CAAC,CAAC;AACJ,CAAC;AAED,SAAgB,iBAAiB,CAAC,MAAc;IAC9C,OAAO,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC9C,CAAC;AAED,SAAgB,iBAAiB,CAAC,YAAoB;IACpD,OAAO,iBAAiB,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC;AACvD,CAAC;AAED;;;GAGG;AACH,SAAgB,OAAO,CAAC,WAAmB,EAAE,QAAgB;IAC3D,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC;IAE/B,IAAI,QAAQ,GAAG,MAAM,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC3C,OAAO,WAAW,CAAC,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC;AAC/E,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/ip-address.d.ts b/food-ordering-app/server/node_modules/ip-address/dist/ip-address.d.ts new file mode 100644 index 000000000..14f8fe002 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/ip-address.d.ts @@ -0,0 +1,8 @@ +export { Address4 } from './ipv4'; +export { Address6 } from './ipv6'; +export { AddressError } from './address-error'; +import * as helpers from './v6/helpers'; +export declare const v6: { + helpers: typeof helpers; +}; +//# sourceMappingURL=ip-address.d.ts.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/ip-address.d.ts.map b/food-ordering-app/server/node_modules/ip-address/dist/ip-address.d.ts.map new file mode 100644 index 000000000..7bcb98aba --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/ip-address.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ip-address.d.ts","sourceRoot":"","sources":["../src/ip-address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AAExC,eAAO,MAAM,EAAE;;CAAc,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/ip-address.js b/food-ordering-app/server/node_modules/ip-address/dist/ip-address.js new file mode 100644 index 000000000..84f348709 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/ip-address.js @@ -0,0 +1,35 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.v6 = exports.AddressError = exports.Address6 = exports.Address4 = void 0; +var ipv4_1 = require("./ipv4"); +Object.defineProperty(exports, "Address4", { enumerable: true, get: function () { return ipv4_1.Address4; } }); +var ipv6_1 = require("./ipv6"); +Object.defineProperty(exports, "Address6", { enumerable: true, get: function () { return ipv6_1.Address6; } }); +var address_error_1 = require("./address-error"); +Object.defineProperty(exports, "AddressError", { enumerable: true, get: function () { return address_error_1.AddressError; } }); +const helpers = __importStar(require("./v6/helpers")); +exports.v6 = { helpers }; +//# sourceMappingURL=ip-address.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/ip-address.js.map b/food-ordering-app/server/node_modules/ip-address/dist/ip-address.js.map new file mode 100644 index 000000000..cb89ed368 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/ip-address.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ip-address.js","sourceRoot":"","sources":["../src/ip-address.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAAkC;AAAzB,gGAAA,QAAQ,OAAA;AACjB,+BAAkC;AAAzB,gGAAA,QAAQ,OAAA;AACjB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AAErB,sDAAwC;AAE3B,QAAA,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/ipv4.d.ts b/food-ordering-app/server/node_modules/ip-address/dist/ipv4.d.ts new file mode 100644 index 000000000..28edbaa5b --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/ipv4.d.ts @@ -0,0 +1,209 @@ +import * as common from './common'; +/** + * Represents an IPv4 address + * @class Address4 + * @param {string} address - An IPv4 address string + */ +export declare class Address4 { + address: string; + addressMinusSuffix?: string; + groups: number; + parsedAddress: string[]; + parsedSubnet: string; + subnet: string; + subnetMask: number; + v4: boolean; + constructor(address: string); + static isValid(address: string): boolean; + parse(address: string): string[]; + /** + * Returns the correct form of an address + * @memberof Address4 + * @instance + * @returns {String} + */ + correctForm(): string; + /** + * Returns true if the address is correct, false otherwise + * @memberof Address4 + * @instance + * @returns {Boolean} + */ + isCorrect: (this: Address4 | import("./ipv6").Address6) => boolean; + /** + * Converts a hex string to an IPv4 address object + * @memberof Address4 + * @static + * @param {string} hex - a hex string to convert + * @returns {Address4} + */ + static fromHex(hex: string): Address4; + /** + * Converts an integer into a IPv4 address object + * @memberof Address4 + * @static + * @param {integer} integer - a number to convert + * @returns {Address4} + */ + static fromInteger(integer: number): Address4; + /** + * Return an address from in-addr.arpa form + * @memberof Address4 + * @static + * @param {string} arpaFormAddress - an 'in-addr.arpa' form ipv4 address + * @returns {Adress4} + * @example + * var address = Address4.fromArpa(42.2.0.192.in-addr.arpa.) + * address.correctForm(); // '192.0.2.42' + */ + static fromArpa(arpaFormAddress: string): Address4; + /** + * Converts an IPv4 address object to a hex string + * @memberof Address4 + * @instance + * @returns {String} + */ + toHex(): string; + /** + * Converts an IPv4 address object to an array of bytes + * @memberof Address4 + * @instance + * @returns {Array} + */ + toArray(): number[]; + /** + * Converts an IPv4 address object to an IPv6 address group + * @memberof Address4 + * @instance + * @returns {String} + */ + toGroup6(): string; + /** + * Returns the address as a `bigint` + * @memberof Address4 + * @instance + * @returns {bigint} + */ + bigInt(): bigint; + /** + * Helper function getting start address. + * @memberof Address4 + * @instance + * @returns {bigint} + */ + _startAddress(): bigint; + /** + * The first address in the range given by this address' subnet. + * Often referred to as the Network Address. + * @memberof Address4 + * @instance + * @returns {Address4} + */ + startAddress(): Address4; + /** + * The first host address in the range given by this address's subnet ie + * the first address after the Network Address + * @memberof Address4 + * @instance + * @returns {Address4} + */ + startAddressExclusive(): Address4; + /** + * Helper function getting end address. + * @memberof Address4 + * @instance + * @returns {bigint} + */ + _endAddress(): bigint; + /** + * The last address in the range given by this address' subnet + * Often referred to as the Broadcast + * @memberof Address4 + * @instance + * @returns {Address4} + */ + endAddress(): Address4; + /** + * The last host address in the range given by this address's subnet ie + * the last address prior to the Broadcast Address + * @memberof Address4 + * @instance + * @returns {Address4} + */ + endAddressExclusive(): Address4; + /** + * Converts a BigInt to a v4 address object + * @memberof Address4 + * @static + * @param {bigint} bigInt - a BigInt to convert + * @returns {Address4} + */ + static fromBigInt(bigInt: bigint): Address4; + /** + * Convert a byte array to an Address4 object + * @memberof Address4 + * @static + * @param {Array} bytes - an array of 4 bytes (0-255) + * @returns {Address4} + */ + static fromByteArray(bytes: Array): Address4; + /** + * Convert an unsigned byte array to an Address4 object + * @memberof Address4 + * @static + * @param {Array} bytes - an array of 4 unsigned bytes (0-255) + * @returns {Address4} + */ + static fromUnsignedByteArray(bytes: Array): Address4; + /** + * Returns the first n bits of the address, defaulting to the + * subnet mask + * @memberof Address4 + * @instance + * @returns {String} + */ + mask(mask?: number): string; + /** + * Returns the bits in the given range as a base-2 string + * @memberof Address4 + * @instance + * @returns {string} + */ + getBitsBase2(start: number, end: number): string; + /** + * Return the reversed ip6.arpa form of the address + * @memberof Address4 + * @param {Object} options + * @param {boolean} options.omitSuffix - omit the "in-addr.arpa" suffix + * @instance + * @returns {String} + */ + reverseForm(options?: common.ReverseFormOptions): string; + /** + * Returns true if the given address is in the subnet of the current address + * @memberof Address4 + * @instance + * @returns {boolean} + */ + isInSubnet: typeof common.isInSubnet; + /** + * Returns true if the given address is a multicast address + * @memberof Address4 + * @instance + * @returns {boolean} + */ + isMulticast(): boolean; + /** + * Returns a zero-padded base-2 string representation of the address + * @memberof Address4 + * @instance + * @returns {string} + */ + binaryZeroPad(): string; + /** + * Groups an IPv4 address for inclusion at the end of an IPv6 address + * @returns {String} + */ + groupForV6(): string; +} +//# sourceMappingURL=ipv4.d.ts.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/ipv4.d.ts.map b/food-ordering-app/server/node_modules/ip-address/dist/ipv4.d.ts.map new file mode 100644 index 000000000..165d45912 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/ipv4.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ipv4.d.ts","sourceRoot":"","sources":["../src/ipv4.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AAInC;;;;GAIG;AACH,qBAAa,QAAQ;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAoB;IAClC,aAAa,EAAE,MAAM,EAAE,CAAM;IAC7B,YAAY,EAAE,MAAM,CAAM;IAC1B,MAAM,EAAE,MAAM,CAAS;IACvB,UAAU,EAAE,MAAM,CAAM;IACxB,EAAE,EAAE,OAAO,CAAQ;gBAEP,OAAO,EAAE,MAAM;IAsB3B,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAcxC,KAAK,CAAC,OAAO,EAAE,MAAM;IAUrB;;;;;OAKG;IACH,WAAW,IAAI,MAAM;IAIrB;;;;;OAKG;IACH,SAAS,0DAAoC;IAE7C;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ;IAcrC;;;;;;OAMG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ;IAI7C;;;;;;;;;OASG;IACH,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,QAAQ;IASlD;;;;;OAKG;IACH,KAAK,IAAI,MAAM;IAIf;;;;;OAKG;IACH,OAAO,IAAI,MAAM,EAAE;IAInB;;;;;OAKG;IACH,QAAQ,IAAI,MAAM;IAelB;;;;;OAKG;IACH,MAAM,IAAI,MAAM;IAIhB;;;;;OAKG;IACH,aAAa,IAAI,MAAM;IAIvB;;;;;;OAMG;IACH,YAAY,IAAI,QAAQ;IAIxB;;;;;;OAMG;IACH,qBAAqB,IAAI,QAAQ;IAKjC;;;;;OAKG;IACH,WAAW,IAAI,MAAM;IAIrB;;;;;;OAMG;IACH,UAAU,IAAI,QAAQ;IAItB;;;;;;OAMG;IACH,mBAAmB,IAAI,QAAQ;IAK/B;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ;IAI3C;;;;;;OAMG;IACH,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,QAAQ;IAepD;;;;;;OAMG;IACH,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,QAAQ;IAS5D;;;;;;OAMG;IACH,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM;IAQ3B;;;;;OAKG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;IAIhD;;;;;;;OAOG;IACH,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,kBAAkB,GAAG,MAAM;IAcxD;;;;;OAKG;IACH,UAAU,2BAAqB;IAE/B;;;;;OAKG;IACH,WAAW,IAAI,OAAO;IAItB;;;;;OAKG;IACH,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACH,UAAU,IAAI,MAAM;CAYrB"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/ipv4.js b/food-ordering-app/server/node_modules/ip-address/dist/ipv4.js new file mode 100644 index 000000000..311c89c69 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/ipv4.js @@ -0,0 +1,360 @@ +"use strict"; +/* eslint-disable no-param-reassign */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Address4 = void 0; +const common = __importStar(require("./common")); +const constants = __importStar(require("./v4/constants")); +const address_error_1 = require("./address-error"); +/** + * Represents an IPv4 address + * @class Address4 + * @param {string} address - An IPv4 address string + */ +class Address4 { + constructor(address) { + this.groups = constants.GROUPS; + this.parsedAddress = []; + this.parsedSubnet = ''; + this.subnet = '/32'; + this.subnetMask = 32; + this.v4 = true; + /** + * Returns true if the address is correct, false otherwise + * @memberof Address4 + * @instance + * @returns {Boolean} + */ + this.isCorrect = common.isCorrect(constants.BITS); + /** + * Returns true if the given address is in the subnet of the current address + * @memberof Address4 + * @instance + * @returns {boolean} + */ + this.isInSubnet = common.isInSubnet; + this.address = address; + const subnet = constants.RE_SUBNET_STRING.exec(address); + if (subnet) { + this.parsedSubnet = subnet[0].replace('/', ''); + this.subnetMask = parseInt(this.parsedSubnet, 10); + this.subnet = `/${this.subnetMask}`; + if (this.subnetMask < 0 || this.subnetMask > constants.BITS) { + throw new address_error_1.AddressError('Invalid subnet mask.'); + } + address = address.replace(constants.RE_SUBNET_STRING, ''); + } + this.addressMinusSuffix = address; + this.parsedAddress = this.parse(address); + } + static isValid(address) { + try { + // eslint-disable-next-line no-new + new Address4(address); + return true; + } + catch (e) { + return false; + } + } + /* + * Parses a v4 address + */ + parse(address) { + const groups = address.split('.'); + if (!address.match(constants.RE_ADDRESS)) { + throw new address_error_1.AddressError('Invalid IPv4 address.'); + } + return groups; + } + /** + * Returns the correct form of an address + * @memberof Address4 + * @instance + * @returns {String} + */ + correctForm() { + return this.parsedAddress.map((part) => parseInt(part, 10)).join('.'); + } + /** + * Converts a hex string to an IPv4 address object + * @memberof Address4 + * @static + * @param {string} hex - a hex string to convert + * @returns {Address4} + */ + static fromHex(hex) { + const padded = hex.replace(/:/g, '').padStart(8, '0'); + const groups = []; + let i; + for (i = 0; i < 8; i += 2) { + const h = padded.slice(i, i + 2); + groups.push(parseInt(h, 16)); + } + return new Address4(groups.join('.')); + } + /** + * Converts an integer into a IPv4 address object + * @memberof Address4 + * @static + * @param {integer} integer - a number to convert + * @returns {Address4} + */ + static fromInteger(integer) { + return Address4.fromHex(integer.toString(16)); + } + /** + * Return an address from in-addr.arpa form + * @memberof Address4 + * @static + * @param {string} arpaFormAddress - an 'in-addr.arpa' form ipv4 address + * @returns {Adress4} + * @example + * var address = Address4.fromArpa(42.2.0.192.in-addr.arpa.) + * address.correctForm(); // '192.0.2.42' + */ + static fromArpa(arpaFormAddress) { + // remove ending ".in-addr.arpa." or just "." + const leader = arpaFormAddress.replace(/(\.in-addr\.arpa)?\.$/, ''); + const address = leader.split('.').reverse().join('.'); + return new Address4(address); + } + /** + * Converts an IPv4 address object to a hex string + * @memberof Address4 + * @instance + * @returns {String} + */ + toHex() { + return this.parsedAddress.map((part) => common.stringToPaddedHex(part)).join(':'); + } + /** + * Converts an IPv4 address object to an array of bytes + * @memberof Address4 + * @instance + * @returns {Array} + */ + toArray() { + return this.parsedAddress.map((part) => parseInt(part, 10)); + } + /** + * Converts an IPv4 address object to an IPv6 address group + * @memberof Address4 + * @instance + * @returns {String} + */ + toGroup6() { + const output = []; + let i; + for (i = 0; i < constants.GROUPS; i += 2) { + output.push(`${common.stringToPaddedHex(this.parsedAddress[i])}${common.stringToPaddedHex(this.parsedAddress[i + 1])}`); + } + return output.join(':'); + } + /** + * Returns the address as a `bigint` + * @memberof Address4 + * @instance + * @returns {bigint} + */ + bigInt() { + return BigInt(`0x${this.parsedAddress.map((n) => common.stringToPaddedHex(n)).join('')}`); + } + /** + * Helper function getting start address. + * @memberof Address4 + * @instance + * @returns {bigint} + */ + _startAddress() { + return BigInt(`0b${this.mask() + '0'.repeat(constants.BITS - this.subnetMask)}`); + } + /** + * The first address in the range given by this address' subnet. + * Often referred to as the Network Address. + * @memberof Address4 + * @instance + * @returns {Address4} + */ + startAddress() { + return Address4.fromBigInt(this._startAddress()); + } + /** + * The first host address in the range given by this address's subnet ie + * the first address after the Network Address + * @memberof Address4 + * @instance + * @returns {Address4} + */ + startAddressExclusive() { + const adjust = BigInt('1'); + return Address4.fromBigInt(this._startAddress() + adjust); + } + /** + * Helper function getting end address. + * @memberof Address4 + * @instance + * @returns {bigint} + */ + _endAddress() { + return BigInt(`0b${this.mask() + '1'.repeat(constants.BITS - this.subnetMask)}`); + } + /** + * The last address in the range given by this address' subnet + * Often referred to as the Broadcast + * @memberof Address4 + * @instance + * @returns {Address4} + */ + endAddress() { + return Address4.fromBigInt(this._endAddress()); + } + /** + * The last host address in the range given by this address's subnet ie + * the last address prior to the Broadcast Address + * @memberof Address4 + * @instance + * @returns {Address4} + */ + endAddressExclusive() { + const adjust = BigInt('1'); + return Address4.fromBigInt(this._endAddress() - adjust); + } + /** + * Converts a BigInt to a v4 address object + * @memberof Address4 + * @static + * @param {bigint} bigInt - a BigInt to convert + * @returns {Address4} + */ + static fromBigInt(bigInt) { + return Address4.fromHex(bigInt.toString(16)); + } + /** + * Convert a byte array to an Address4 object + * @memberof Address4 + * @static + * @param {Array} bytes - an array of 4 bytes (0-255) + * @returns {Address4} + */ + static fromByteArray(bytes) { + if (bytes.length !== 4) { + throw new address_error_1.AddressError('IPv4 addresses require exactly 4 bytes'); + } + // Validate that all bytes are within valid range (0-255) + for (let i = 0; i < bytes.length; i++) { + if (!Number.isInteger(bytes[i]) || bytes[i] < 0 || bytes[i] > 255) { + throw new address_error_1.AddressError('All bytes must be integers between 0 and 255'); + } + } + return this.fromUnsignedByteArray(bytes); + } + /** + * Convert an unsigned byte array to an Address4 object + * @memberof Address4 + * @static + * @param {Array} bytes - an array of 4 unsigned bytes (0-255) + * @returns {Address4} + */ + static fromUnsignedByteArray(bytes) { + if (bytes.length !== 4) { + throw new address_error_1.AddressError('IPv4 addresses require exactly 4 bytes'); + } + const address = bytes.join('.'); + return new Address4(address); + } + /** + * Returns the first n bits of the address, defaulting to the + * subnet mask + * @memberof Address4 + * @instance + * @returns {String} + */ + mask(mask) { + if (mask === undefined) { + mask = this.subnetMask; + } + return this.getBitsBase2(0, mask); + } + /** + * Returns the bits in the given range as a base-2 string + * @memberof Address4 + * @instance + * @returns {string} + */ + getBitsBase2(start, end) { + return this.binaryZeroPad().slice(start, end); + } + /** + * Return the reversed ip6.arpa form of the address + * @memberof Address4 + * @param {Object} options + * @param {boolean} options.omitSuffix - omit the "in-addr.arpa" suffix + * @instance + * @returns {String} + */ + reverseForm(options) { + if (!options) { + options = {}; + } + const reversed = this.correctForm().split('.').reverse().join('.'); + if (options.omitSuffix) { + return reversed; + } + return `${reversed}.in-addr.arpa.`; + } + /** + * Returns true if the given address is a multicast address + * @memberof Address4 + * @instance + * @returns {boolean} + */ + isMulticast() { + return this.isInSubnet(new Address4('224.0.0.0/4')); + } + /** + * Returns a zero-padded base-2 string representation of the address + * @memberof Address4 + * @instance + * @returns {string} + */ + binaryZeroPad() { + return this.bigInt().toString(2).padStart(constants.BITS, '0'); + } + /** + * Groups an IPv4 address for inclusion at the end of an IPv6 address + * @returns {String} + */ + groupForV6() { + const segments = this.parsedAddress; + return this.address.replace(constants.RE_ADDRESS, `${segments + .slice(0, 2) + .join('.')}.${segments + .slice(2, 4) + .join('.')}`); + } +} +exports.Address4 = Address4; +//# sourceMappingURL=ipv4.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/ipv4.js.map b/food-ordering-app/server/node_modules/ip-address/dist/ipv4.js.map new file mode 100644 index 000000000..2b4e92804 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/ipv4.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ipv4.js","sourceRoot":"","sources":["../src/ipv4.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/ipv6.d.ts b/food-ordering-app/server/node_modules/ip-address/dist/ipv6.d.ts new file mode 100644 index 000000000..2a7c7e0b3 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/ipv6.d.ts @@ -0,0 +1,428 @@ +import * as common from './common'; +import { Address4 } from './ipv4'; +interface SixToFourProperties { + prefix: string; + gateway: string; +} +interface TeredoProperties { + prefix: string; + server4: string; + client4: string; + flags: string; + coneNat: boolean; + microsoft: { + reserved: boolean; + universalLocal: boolean; + groupIndividual: boolean; + nonce: string; + }; + udpPort: string; +} +/** + * Represents an IPv6 address + * @class Address6 + * @param {string} address - An IPv6 address string + * @param {number} [groups=8] - How many octets to parse + * @example + * var address = new Address6('2001::/32'); + */ +export declare class Address6 { + address4?: Address4; + address: string; + addressMinusSuffix: string; + elidedGroups?: number; + elisionBegin?: number; + elisionEnd?: number; + groups: number; + parsedAddress4?: string; + parsedAddress: string[]; + parsedSubnet: string; + subnet: string; + subnetMask: number; + v4: boolean; + zone: string; + constructor(address: string, optionalGroups?: number); + static isValid(address: string): boolean; + /** + * Convert a BigInt to a v6 address object + * @memberof Address6 + * @static + * @param {bigint} bigInt - a BigInt to convert + * @returns {Address6} + * @example + * var bigInt = BigInt('1000000000000'); + * var address = Address6.fromBigInt(bigInt); + * address.correctForm(); // '::e8:d4a5:1000' + */ + static fromBigInt(bigInt: bigint): Address6; + /** + * Convert a URL (with optional port number) to an address object + * @memberof Address6 + * @static + * @param {string} url - a URL with optional port number + * @example + * var addressAndPort = Address6.fromURL('http://[ffff::]:8080/foo/'); + * addressAndPort.address.correctForm(); // 'ffff::' + * addressAndPort.port; // 8080 + */ + static fromURL(url: string): { + error: string; + address: null; + port: null; + } | { + address: Address6; + port: number | null; + error?: undefined; + }; + /** + * Create an IPv6-mapped address given an IPv4 address + * @memberof Address6 + * @static + * @param {string} address - An IPv4 address string + * @returns {Address6} + * @example + * var address = Address6.fromAddress4('192.168.0.1'); + * address.correctForm(); // '::ffff:c0a8:1' + * address.to4in6(); // '::ffff:192.168.0.1' + */ + static fromAddress4(address: string): Address6; + /** + * Return an address from ip6.arpa form + * @memberof Address6 + * @static + * @param {string} arpaFormAddress - an 'ip6.arpa' form address + * @returns {Adress6} + * @example + * var address = Address6.fromArpa(e.f.f.f.3.c.2.6.f.f.f.e.6.6.8.e.1.0.6.7.9.4.e.c.0.0.0.0.1.0.0.2.ip6.arpa.) + * address.correctForm(); // '2001:0:ce49:7601:e866:efff:62c3:fffe' + */ + static fromArpa(arpaFormAddress: string): Address6; + /** + * Return the Microsoft UNC transcription of the address + * @memberof Address6 + * @instance + * @returns {String} the Microsoft UNC transcription of the address + */ + microsoftTranscription(): string; + /** + * Return the first n bits of the address, defaulting to the subnet mask + * @memberof Address6 + * @instance + * @param {number} [mask=subnet] - the number of bits to mask + * @returns {String} the first n bits of the address as a string + */ + mask(mask?: number): string; + /** + * Return the number of possible subnets of a given size in the address + * @memberof Address6 + * @instance + * @param {number} [subnetSize=128] - the subnet size + * @returns {String} + */ + possibleSubnets(subnetSize?: number): string; + /** + * Helper function getting start address. + * @memberof Address6 + * @instance + * @returns {bigint} + */ + _startAddress(): bigint; + /** + * The first address in the range given by this address' subnet + * Often referred to as the Network Address. + * @memberof Address6 + * @instance + * @returns {Address6} + */ + startAddress(): Address6; + /** + * The first host address in the range given by this address's subnet ie + * the first address after the Network Address + * @memberof Address6 + * @instance + * @returns {Address6} + */ + startAddressExclusive(): Address6; + /** + * Helper function getting end address. + * @memberof Address6 + * @instance + * @returns {bigint} + */ + _endAddress(): bigint; + /** + * The last address in the range given by this address' subnet + * Often referred to as the Broadcast + * @memberof Address6 + * @instance + * @returns {Address6} + */ + endAddress(): Address6; + /** + * The last host address in the range given by this address's subnet ie + * the last address prior to the Broadcast Address + * @memberof Address6 + * @instance + * @returns {Address6} + */ + endAddressExclusive(): Address6; + /** + * Return the scope of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + getScope(): string; + /** + * Return the type of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + getType(): string; + /** + * Return the bits in the given range as a BigInt + * @memberof Address6 + * @instance + * @returns {bigint} + */ + getBits(start: number, end: number): bigint; + /** + * Return the bits in the given range as a base-2 string + * @memberof Address6 + * @instance + * @returns {String} + */ + getBitsBase2(start: number, end: number): string; + /** + * Return the bits in the given range as a base-16 string + * @memberof Address6 + * @instance + * @returns {String} + */ + getBitsBase16(start: number, end: number): string; + /** + * Return the bits that are set past the subnet mask length + * @memberof Address6 + * @instance + * @returns {String} + */ + getBitsPastSubnet(): string; + /** + * Return the reversed ip6.arpa form of the address + * @memberof Address6 + * @param {Object} options + * @param {boolean} options.omitSuffix - omit the "ip6.arpa" suffix + * @instance + * @returns {String} + */ + reverseForm(options?: common.ReverseFormOptions): string; + /** + * Return the correct form of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + correctForm(): string; + /** + * Return a zero-padded base-2 string representation of the address + * @memberof Address6 + * @instance + * @returns {String} + * @example + * var address = new Address6('2001:4860:4001:803::1011'); + * address.binaryZeroPad(); + * // '0010000000000001010010000110000001000000000000010000100000000011 + * // 0000000000000000000000000000000000000000000000000001000000010001' + */ + binaryZeroPad(): string; + parse4in6(address: string): string; + parse(address: string): string[]; + /** + * Return the canonical form of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + canonicalForm(): string; + /** + * Return the decimal form of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + decimal(): string; + /** + * Return the address as a BigInt + * @memberof Address6 + * @instance + * @returns {bigint} + */ + bigInt(): bigint; + /** + * Return the last two groups of this address as an IPv4 address string + * @memberof Address6 + * @instance + * @returns {Address4} + * @example + * var address = new Address6('2001:4860:4001::1825:bf11'); + * address.to4().correctForm(); // '24.37.191.17' + */ + to4(): Address4; + /** + * Return the v4-in-v6 form of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + to4in6(): string; + /** + * Return an object containing the Teredo properties of the address + * @memberof Address6 + * @instance + * @returns {Object} + */ + inspectTeredo(): TeredoProperties; + /** + * Return an object containing the 6to4 properties of the address + * @memberof Address6 + * @instance + * @returns {Object} + */ + inspect6to4(): SixToFourProperties; + /** + * Return a v6 6to4 address from a v6 v4inv6 address + * @memberof Address6 + * @instance + * @returns {Address6} + */ + to6to4(): Address6 | null; + /** + * Return a byte array + * @memberof Address6 + * @instance + * @returns {Array} + */ + toByteArray(): number[]; + /** + * Return an unsigned byte array + * @memberof Address6 + * @instance + * @returns {Array} + */ + toUnsignedByteArray(): number[]; + /** + * Convert a byte array to an Address6 object + * @memberof Address6 + * @static + * @returns {Address6} + */ + static fromByteArray(bytes: Array): Address6; + /** + * Convert an unsigned byte array to an Address6 object + * @memberof Address6 + * @static + * @returns {Address6} + */ + static fromUnsignedByteArray(bytes: Array): Address6; + /** + * Returns true if the given address is in the subnet of the current address + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isInSubnet: typeof common.isInSubnet; + /** + * Returns true if the address is correct, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isCorrect: (this: Address4 | Address6) => boolean; + /** + * Returns true if the address is in the canonical form, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isCanonical(): boolean; + /** + * Returns true if the address is a link local address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isLinkLocal(): boolean; + /** + * Returns true if the address is a multicast address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isMulticast(): boolean; + /** + * Returns true if the address is a v4-in-v6 address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + is4(): boolean; + /** + * Returns true if the address is a Teredo address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isTeredo(): boolean; + /** + * Returns true if the address is a 6to4 address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + is6to4(): boolean; + /** + * Returns true if the address is a loopback address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isLoopback(): boolean; + /** + * @returns {String} the address in link form with a default port of 80 + */ + href(optionalPort?: number | string): string; + /** + * @returns {String} a link suitable for conveying the address via a URL hash + */ + link(options?: { + className?: string; + prefix?: string; + v4?: boolean; + }): string; + /** + * Groups an address + * @returns {String} + */ + group(): string; + /** + * Generate a regular expression string that can be used to find or validate + * all variations of this address + * @memberof Address6 + * @instance + * @param {boolean} substringSearch + * @returns {string} + */ + regularExpressionString(this: Address6, substringSearch?: boolean): string; + /** + * Generate a regular expression that can be used to find or validate all + * variations of this address. + * @memberof Address6 + * @instance + * @param {boolean} substringSearch + * @returns {RegExp} + */ + regularExpression(this: Address6, substringSearch?: boolean): RegExp; +} +export {}; +//# sourceMappingURL=ipv6.d.ts.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/ipv6.d.ts.map b/food-ordering-app/server/node_modules/ip-address/dist/ipv6.d.ts.map new file mode 100644 index 000000000..37ead6aa0 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/ipv6.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ipv6.d.ts","sourceRoot":"","sources":["../src/ipv6.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/ipv6.js b/food-ordering-app/server/node_modules/ip-address/dist/ipv6.js new file mode 100644 index 000000000..5f88ab63a --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/ipv6.js @@ -0,0 +1,1003 @@ +"use strict"; +/* eslint-disable prefer-destructuring */ +/* eslint-disable no-param-reassign */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Address6 = void 0; +const common = __importStar(require("./common")); +const constants4 = __importStar(require("./v4/constants")); +const constants6 = __importStar(require("./v6/constants")); +const helpers = __importStar(require("./v6/helpers")); +const ipv4_1 = require("./ipv4"); +const regular_expressions_1 = require("./v6/regular-expressions"); +const address_error_1 = require("./address-error"); +const common_1 = require("./common"); +function assert(condition) { + if (!condition) { + throw new Error('Assertion failed.'); + } +} +function addCommas(number) { + const r = /(\d+)(\d{3})/; + while (r.test(number)) { + number = number.replace(r, '$1,$2'); + } + return number; +} +function spanLeadingZeroes4(n) { + n = n.replace(/^(0{1,})([1-9]+)$/, '$1$2'); + n = n.replace(/^(0{1,})(0)$/, '$1$2'); + return n; +} +/* + * A helper function to compact an array + */ +function compact(address, slice) { + const s1 = []; + const s2 = []; + let i; + for (i = 0; i < address.length; i++) { + if (i < slice[0]) { + s1.push(address[i]); + } + else if (i > slice[1]) { + s2.push(address[i]); + } + } + return s1.concat(['compact']).concat(s2); +} +function paddedHex(octet) { + return parseInt(octet, 16).toString(16).padStart(4, '0'); +} +function unsignByte(b) { + // eslint-disable-next-line no-bitwise + return b & 0xff; +} +/** + * Represents an IPv6 address + * @class Address6 + * @param {string} address - An IPv6 address string + * @param {number} [groups=8] - How many octets to parse + * @example + * var address = new Address6('2001::/32'); + */ +class Address6 { + constructor(address, optionalGroups) { + this.addressMinusSuffix = ''; + this.parsedSubnet = ''; + this.subnet = '/128'; + this.subnetMask = 128; + this.v4 = false; + this.zone = ''; + // #region Attributes + /** + * Returns true if the given address is in the subnet of the current address + * @memberof Address6 + * @instance + * @returns {boolean} + */ + this.isInSubnet = common.isInSubnet; + /** + * Returns true if the address is correct, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + this.isCorrect = common.isCorrect(constants6.BITS); + if (optionalGroups === undefined) { + this.groups = constants6.GROUPS; + } + else { + this.groups = optionalGroups; + } + this.address = address; + const subnet = constants6.RE_SUBNET_STRING.exec(address); + if (subnet) { + this.parsedSubnet = subnet[0].replace('/', ''); + this.subnetMask = parseInt(this.parsedSubnet, 10); + this.subnet = `/${this.subnetMask}`; + if (Number.isNaN(this.subnetMask) || + this.subnetMask < 0 || + this.subnetMask > constants6.BITS) { + throw new address_error_1.AddressError('Invalid subnet mask.'); + } + address = address.replace(constants6.RE_SUBNET_STRING, ''); + } + else if (/\//.test(address)) { + throw new address_error_1.AddressError('Invalid subnet mask.'); + } + const zone = constants6.RE_ZONE_STRING.exec(address); + if (zone) { + this.zone = zone[0]; + address = address.replace(constants6.RE_ZONE_STRING, ''); + } + this.addressMinusSuffix = address; + this.parsedAddress = this.parse(this.addressMinusSuffix); + } + static isValid(address) { + try { + // eslint-disable-next-line no-new + new Address6(address); + return true; + } + catch (e) { + return false; + } + } + /** + * Convert a BigInt to a v6 address object + * @memberof Address6 + * @static + * @param {bigint} bigInt - a BigInt to convert + * @returns {Address6} + * @example + * var bigInt = BigInt('1000000000000'); + * var address = Address6.fromBigInt(bigInt); + * address.correctForm(); // '::e8:d4a5:1000' + */ + static fromBigInt(bigInt) { + const hex = bigInt.toString(16).padStart(32, '0'); + const groups = []; + let i; + for (i = 0; i < constants6.GROUPS; i++) { + groups.push(hex.slice(i * 4, (i + 1) * 4)); + } + return new Address6(groups.join(':')); + } + /** + * Convert a URL (with optional port number) to an address object + * @memberof Address6 + * @static + * @param {string} url - a URL with optional port number + * @example + * var addressAndPort = Address6.fromURL('http://[ffff::]:8080/foo/'); + * addressAndPort.address.correctForm(); // 'ffff::' + * addressAndPort.port; // 8080 + */ + static fromURL(url) { + let host; + let port = null; + let result; + // If we have brackets parse them and find a port + if (url.indexOf('[') !== -1 && url.indexOf(']:') !== -1) { + result = constants6.RE_URL_WITH_PORT.exec(url); + if (result === null) { + return { + error: 'failed to parse address with port', + address: null, + port: null, + }; + } + host = result[1]; + port = result[2]; + // If there's a URL extract the address + } + else if (url.indexOf('/') !== -1) { + // Remove the protocol prefix + url = url.replace(/^[a-z0-9]+:\/\//, ''); + // Parse the address + result = constants6.RE_URL.exec(url); + if (result === null) { + return { + error: 'failed to parse address from URL', + address: null, + port: null, + }; + } + host = result[1]; + // Otherwise just assign the URL to the host and let the library parse it + } + else { + host = url; + } + // If there's a port convert it to an integer + if (port) { + port = parseInt(port, 10); + // squelch out of range ports + if (port < 0 || port > 65536) { + port = null; + } + } + else { + // Standardize `undefined` to `null` + port = null; + } + return { + address: new Address6(host), + port, + }; + } + /** + * Create an IPv6-mapped address given an IPv4 address + * @memberof Address6 + * @static + * @param {string} address - An IPv4 address string + * @returns {Address6} + * @example + * var address = Address6.fromAddress4('192.168.0.1'); + * address.correctForm(); // '::ffff:c0a8:1' + * address.to4in6(); // '::ffff:192.168.0.1' + */ + static fromAddress4(address) { + const address4 = new ipv4_1.Address4(address); + const mask6 = constants6.BITS - (constants4.BITS - address4.subnetMask); + return new Address6(`::ffff:${address4.correctForm()}/${mask6}`); + } + /** + * Return an address from ip6.arpa form + * @memberof Address6 + * @static + * @param {string} arpaFormAddress - an 'ip6.arpa' form address + * @returns {Adress6} + * @example + * var address = Address6.fromArpa(e.f.f.f.3.c.2.6.f.f.f.e.6.6.8.e.1.0.6.7.9.4.e.c.0.0.0.0.1.0.0.2.ip6.arpa.) + * address.correctForm(); // '2001:0:ce49:7601:e866:efff:62c3:fffe' + */ + static fromArpa(arpaFormAddress) { + // remove ending ".ip6.arpa." or just "." + let address = arpaFormAddress.replace(/(\.ip6\.arpa)?\.$/, ''); + const semicolonAmount = 7; + // correct ip6.arpa form with ending removed will be 63 characters + if (address.length !== 63) { + throw new address_error_1.AddressError("Invalid 'ip6.arpa' form."); + } + const parts = address.split('.').reverse(); + for (let i = semicolonAmount; i > 0; i--) { + const insertIndex = i * 4; + parts.splice(insertIndex, 0, ':'); + } + address = parts.join(''); + return new Address6(address); + } + /** + * Return the Microsoft UNC transcription of the address + * @memberof Address6 + * @instance + * @returns {String} the Microsoft UNC transcription of the address + */ + microsoftTranscription() { + return `${this.correctForm().replace(/:/g, '-')}.ipv6-literal.net`; + } + /** + * Return the first n bits of the address, defaulting to the subnet mask + * @memberof Address6 + * @instance + * @param {number} [mask=subnet] - the number of bits to mask + * @returns {String} the first n bits of the address as a string + */ + mask(mask = this.subnetMask) { + return this.getBitsBase2(0, mask); + } + /** + * Return the number of possible subnets of a given size in the address + * @memberof Address6 + * @instance + * @param {number} [subnetSize=128] - the subnet size + * @returns {String} + */ + // TODO: probably useful to have a numeric version of this too + possibleSubnets(subnetSize = 128) { + const availableBits = constants6.BITS - this.subnetMask; + const subnetBits = Math.abs(subnetSize - constants6.BITS); + const subnetPowers = availableBits - subnetBits; + if (subnetPowers < 0) { + return '0'; + } + return addCommas((BigInt('2') ** BigInt(subnetPowers)).toString(10)); + } + /** + * Helper function getting start address. + * @memberof Address6 + * @instance + * @returns {bigint} + */ + _startAddress() { + return BigInt(`0b${this.mask() + '0'.repeat(constants6.BITS - this.subnetMask)}`); + } + /** + * The first address in the range given by this address' subnet + * Often referred to as the Network Address. + * @memberof Address6 + * @instance + * @returns {Address6} + */ + startAddress() { + return Address6.fromBigInt(this._startAddress()); + } + /** + * The first host address in the range given by this address's subnet ie + * the first address after the Network Address + * @memberof Address6 + * @instance + * @returns {Address6} + */ + startAddressExclusive() { + const adjust = BigInt('1'); + return Address6.fromBigInt(this._startAddress() + adjust); + } + /** + * Helper function getting end address. + * @memberof Address6 + * @instance + * @returns {bigint} + */ + _endAddress() { + return BigInt(`0b${this.mask() + '1'.repeat(constants6.BITS - this.subnetMask)}`); + } + /** + * The last address in the range given by this address' subnet + * Often referred to as the Broadcast + * @memberof Address6 + * @instance + * @returns {Address6} + */ + endAddress() { + return Address6.fromBigInt(this._endAddress()); + } + /** + * The last host address in the range given by this address's subnet ie + * the last address prior to the Broadcast Address + * @memberof Address6 + * @instance + * @returns {Address6} + */ + endAddressExclusive() { + const adjust = BigInt('1'); + return Address6.fromBigInt(this._endAddress() - adjust); + } + /** + * Return the scope of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + getScope() { + let scope = constants6.SCOPES[parseInt(this.getBits(12, 16).toString(10), 10)]; + if (this.getType() === 'Global unicast' && scope !== 'Link local') { + scope = 'Global'; + } + return scope || 'Unknown'; + } + /** + * Return the type of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + getType() { + for (const subnet of Object.keys(constants6.TYPES)) { + if (this.isInSubnet(new Address6(subnet))) { + return constants6.TYPES[subnet]; + } + } + return 'Global unicast'; + } + /** + * Return the bits in the given range as a BigInt + * @memberof Address6 + * @instance + * @returns {bigint} + */ + getBits(start, end) { + return BigInt(`0b${this.getBitsBase2(start, end)}`); + } + /** + * Return the bits in the given range as a base-2 string + * @memberof Address6 + * @instance + * @returns {String} + */ + getBitsBase2(start, end) { + return this.binaryZeroPad().slice(start, end); + } + /** + * Return the bits in the given range as a base-16 string + * @memberof Address6 + * @instance + * @returns {String} + */ + getBitsBase16(start, end) { + const length = end - start; + if (length % 4 !== 0) { + throw new Error('Length of bits to retrieve must be divisible by four'); + } + return this.getBits(start, end) + .toString(16) + .padStart(length / 4, '0'); + } + /** + * Return the bits that are set past the subnet mask length + * @memberof Address6 + * @instance + * @returns {String} + */ + getBitsPastSubnet() { + return this.getBitsBase2(this.subnetMask, constants6.BITS); + } + /** + * Return the reversed ip6.arpa form of the address + * @memberof Address6 + * @param {Object} options + * @param {boolean} options.omitSuffix - omit the "ip6.arpa" suffix + * @instance + * @returns {String} + */ + reverseForm(options) { + if (!options) { + options = {}; + } + const characters = Math.floor(this.subnetMask / 4); + const reversed = this.canonicalForm() + .replace(/:/g, '') + .split('') + .slice(0, characters) + .reverse() + .join('.'); + if (characters > 0) { + if (options.omitSuffix) { + return reversed; + } + return `${reversed}.ip6.arpa.`; + } + if (options.omitSuffix) { + return ''; + } + return 'ip6.arpa.'; + } + /** + * Return the correct form of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + correctForm() { + let i; + let groups = []; + let zeroCounter = 0; + const zeroes = []; + for (i = 0; i < this.parsedAddress.length; i++) { + const value = parseInt(this.parsedAddress[i], 16); + if (value === 0) { + zeroCounter++; + } + if (value !== 0 && zeroCounter > 0) { + if (zeroCounter > 1) { + zeroes.push([i - zeroCounter, i - 1]); + } + zeroCounter = 0; + } + } + // Do we end with a string of zeroes? + if (zeroCounter > 1) { + zeroes.push([this.parsedAddress.length - zeroCounter, this.parsedAddress.length - 1]); + } + const zeroLengths = zeroes.map((n) => n[1] - n[0] + 1); + if (zeroes.length > 0) { + const index = zeroLengths.indexOf(Math.max(...zeroLengths)); + groups = compact(this.parsedAddress, zeroes[index]); + } + else { + groups = this.parsedAddress; + } + for (i = 0; i < groups.length; i++) { + if (groups[i] !== 'compact') { + groups[i] = parseInt(groups[i], 16).toString(16); + } + } + let correct = groups.join(':'); + correct = correct.replace(/^compact$/, '::'); + correct = correct.replace(/(^compact)|(compact$)/, ':'); + correct = correct.replace(/compact/, ''); + return correct; + } + /** + * Return a zero-padded base-2 string representation of the address + * @memberof Address6 + * @instance + * @returns {String} + * @example + * var address = new Address6('2001:4860:4001:803::1011'); + * address.binaryZeroPad(); + * // '0010000000000001010010000110000001000000000000010000100000000011 + * // 0000000000000000000000000000000000000000000000000001000000010001' + */ + binaryZeroPad() { + return this.bigInt().toString(2).padStart(constants6.BITS, '0'); + } + // TODO: Improve the semantics of this helper function + parse4in6(address) { + const groups = address.split(':'); + const lastGroup = groups.slice(-1)[0]; + const address4 = lastGroup.match(constants4.RE_ADDRESS); + if (address4) { + this.parsedAddress4 = address4[0]; + this.address4 = new ipv4_1.Address4(this.parsedAddress4); + for (let i = 0; i < this.address4.groups; i++) { + if (/^0[0-9]+/.test(this.address4.parsedAddress[i])) { + throw new address_error_1.AddressError("IPv4 addresses can't have leading zeroes.", address.replace(constants4.RE_ADDRESS, this.address4.parsedAddress.map(spanLeadingZeroes4).join('.'))); + } + } + this.v4 = true; + groups[groups.length - 1] = this.address4.toGroup6(); + address = groups.join(':'); + } + return address; + } + // TODO: Make private? + parse(address) { + address = this.parse4in6(address); + const badCharacters = address.match(constants6.RE_BAD_CHARACTERS); + if (badCharacters) { + throw new address_error_1.AddressError(`Bad character${badCharacters.length > 1 ? 's' : ''} detected in address: ${badCharacters.join('')}`, address.replace(constants6.RE_BAD_CHARACTERS, '$1')); + } + const badAddress = address.match(constants6.RE_BAD_ADDRESS); + if (badAddress) { + throw new address_error_1.AddressError(`Address failed regex: ${badAddress.join('')}`, address.replace(constants6.RE_BAD_ADDRESS, '$1')); + } + let groups = []; + const halves = address.split('::'); + if (halves.length === 2) { + let first = halves[0].split(':'); + let last = halves[1].split(':'); + if (first.length === 1 && first[0] === '') { + first = []; + } + if (last.length === 1 && last[0] === '') { + last = []; + } + const remaining = this.groups - (first.length + last.length); + if (!remaining) { + throw new address_error_1.AddressError('Error parsing groups'); + } + this.elidedGroups = remaining; + this.elisionBegin = first.length; + this.elisionEnd = first.length + this.elidedGroups; + groups = groups.concat(first); + for (let i = 0; i < remaining; i++) { + groups.push('0'); + } + groups = groups.concat(last); + } + else if (halves.length === 1) { + groups = address.split(':'); + this.elidedGroups = 0; + } + else { + throw new address_error_1.AddressError('Too many :: groups found'); + } + groups = groups.map((group) => parseInt(group, 16).toString(16)); + if (groups.length !== this.groups) { + throw new address_error_1.AddressError('Incorrect number of groups found'); + } + return groups; + } + /** + * Return the canonical form of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + canonicalForm() { + return this.parsedAddress.map(paddedHex).join(':'); + } + /** + * Return the decimal form of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + decimal() { + return this.parsedAddress.map((n) => parseInt(n, 16).toString(10).padStart(5, '0')).join(':'); + } + /** + * Return the address as a BigInt + * @memberof Address6 + * @instance + * @returns {bigint} + */ + bigInt() { + return BigInt(`0x${this.parsedAddress.map(paddedHex).join('')}`); + } + /** + * Return the last two groups of this address as an IPv4 address string + * @memberof Address6 + * @instance + * @returns {Address4} + * @example + * var address = new Address6('2001:4860:4001::1825:bf11'); + * address.to4().correctForm(); // '24.37.191.17' + */ + to4() { + const binary = this.binaryZeroPad().split(''); + return ipv4_1.Address4.fromHex(BigInt(`0b${binary.slice(96, 128).join('')}`).toString(16)); + } + /** + * Return the v4-in-v6 form of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + to4in6() { + const address4 = this.to4(); + const address6 = new Address6(this.parsedAddress.slice(0, 6).join(':'), 6); + const correct = address6.correctForm(); + let infix = ''; + if (!/:$/.test(correct)) { + infix = ':'; + } + return correct + infix + address4.address; + } + /** + * Return an object containing the Teredo properties of the address + * @memberof Address6 + * @instance + * @returns {Object} + */ + inspectTeredo() { + /* + - Bits 0 to 31 are set to the Teredo prefix (normally 2001:0000::/32). + - Bits 32 to 63 embed the primary IPv4 address of the Teredo server that + is used. + - Bits 64 to 79 can be used to define some flags. Currently only the + higher order bit is used; it is set to 1 if the Teredo client is + located behind a cone NAT, 0 otherwise. For Microsoft's Windows Vista + and Windows Server 2008 implementations, more bits are used. In those + implementations, the format for these 16 bits is "CRAAAAUG AAAAAAAA", + where "C" remains the "Cone" flag. The "R" bit is reserved for future + use. The "U" bit is for the Universal/Local flag (set to 0). The "G" bit + is Individual/Group flag (set to 0). The A bits are set to a 12-bit + randomly generated number chosen by the Teredo client to introduce + additional protection for the Teredo node against IPv6-based scanning + attacks. + - Bits 80 to 95 contains the obfuscated UDP port number. This is the + port number that is mapped by the NAT to the Teredo client with all + bits inverted. + - Bits 96 to 127 contains the obfuscated IPv4 address. This is the + public IPv4 address of the NAT with all bits inverted. + */ + const prefix = this.getBitsBase16(0, 32); + const bitsForUdpPort = this.getBits(80, 96); + // eslint-disable-next-line no-bitwise + const udpPort = (bitsForUdpPort ^ BigInt('0xffff')).toString(); + const server4 = ipv4_1.Address4.fromHex(this.getBitsBase16(32, 64)); + const bitsForClient4 = this.getBits(96, 128); + // eslint-disable-next-line no-bitwise + const client4 = ipv4_1.Address4.fromHex((bitsForClient4 ^ BigInt('0xffffffff')).toString(16)); + const flagsBase2 = this.getBitsBase2(64, 80); + const coneNat = (0, common_1.testBit)(flagsBase2, 15); + const reserved = (0, common_1.testBit)(flagsBase2, 14); + const groupIndividual = (0, common_1.testBit)(flagsBase2, 8); + const universalLocal = (0, common_1.testBit)(flagsBase2, 9); + const nonce = BigInt(`0b${flagsBase2.slice(2, 6) + flagsBase2.slice(8, 16)}`).toString(10); + return { + prefix: `${prefix.slice(0, 4)}:${prefix.slice(4, 8)}`, + server4: server4.address, + client4: client4.address, + flags: flagsBase2, + coneNat, + microsoft: { + reserved, + universalLocal, + groupIndividual, + nonce, + }, + udpPort, + }; + } + /** + * Return an object containing the 6to4 properties of the address + * @memberof Address6 + * @instance + * @returns {Object} + */ + inspect6to4() { + /* + - Bits 0 to 15 are set to the 6to4 prefix (2002::/16). + - Bits 16 to 48 embed the IPv4 address of the 6to4 gateway that is used. + */ + const prefix = this.getBitsBase16(0, 16); + const gateway = ipv4_1.Address4.fromHex(this.getBitsBase16(16, 48)); + return { + prefix: prefix.slice(0, 4), + gateway: gateway.address, + }; + } + /** + * Return a v6 6to4 address from a v6 v4inv6 address + * @memberof Address6 + * @instance + * @returns {Address6} + */ + to6to4() { + if (!this.is4()) { + return null; + } + const addr6to4 = [ + '2002', + this.getBitsBase16(96, 112), + this.getBitsBase16(112, 128), + '', + '/16', + ].join(':'); + return new Address6(addr6to4); + } + /** + * Return a byte array + * @memberof Address6 + * @instance + * @returns {Array} + */ + toByteArray() { + const valueWithoutPadding = this.bigInt().toString(16); + const leadingPad = '0'.repeat(valueWithoutPadding.length % 2); + const value = `${leadingPad}${valueWithoutPadding}`; + const bytes = []; + for (let i = 0, length = value.length; i < length; i += 2) { + bytes.push(parseInt(value.substring(i, i + 2), 16)); + } + return bytes; + } + /** + * Return an unsigned byte array + * @memberof Address6 + * @instance + * @returns {Array} + */ + toUnsignedByteArray() { + return this.toByteArray().map(unsignByte); + } + /** + * Convert a byte array to an Address6 object + * @memberof Address6 + * @static + * @returns {Address6} + */ + static fromByteArray(bytes) { + return this.fromUnsignedByteArray(bytes.map(unsignByte)); + } + /** + * Convert an unsigned byte array to an Address6 object + * @memberof Address6 + * @static + * @returns {Address6} + */ + static fromUnsignedByteArray(bytes) { + const BYTE_MAX = BigInt('256'); + let result = BigInt('0'); + let multiplier = BigInt('1'); + for (let i = bytes.length - 1; i >= 0; i--) { + result += multiplier * BigInt(bytes[i].toString(10)); + multiplier *= BYTE_MAX; + } + return Address6.fromBigInt(result); + } + /** + * Returns true if the address is in the canonical form, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isCanonical() { + return this.addressMinusSuffix === this.canonicalForm(); + } + /** + * Returns true if the address is a link local address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isLinkLocal() { + // Zeroes are required, i.e. we can't check isInSubnet with 'fe80::/10' + if (this.getBitsBase2(0, 64) === + '1111111010000000000000000000000000000000000000000000000000000000') { + return true; + } + return false; + } + /** + * Returns true if the address is a multicast address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isMulticast() { + return this.getType() === 'Multicast'; + } + /** + * Returns true if the address is a v4-in-v6 address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + is4() { + return this.v4; + } + /** + * Returns true if the address is a Teredo address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isTeredo() { + return this.isInSubnet(new Address6('2001::/32')); + } + /** + * Returns true if the address is a 6to4 address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + is6to4() { + return this.isInSubnet(new Address6('2002::/16')); + } + /** + * Returns true if the address is a loopback address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isLoopback() { + return this.getType() === 'Loopback'; + } + // #endregion + // #region HTML + /** + * @returns {String} the address in link form with a default port of 80 + */ + href(optionalPort) { + if (optionalPort === undefined) { + optionalPort = ''; + } + else { + optionalPort = `:${optionalPort}`; + } + return `http://[${this.correctForm()}]${optionalPort}/`; + } + /** + * @returns {String} a link suitable for conveying the address via a URL hash + */ + link(options) { + if (!options) { + options = {}; + } + if (options.className === undefined) { + options.className = ''; + } + if (options.prefix === undefined) { + options.prefix = '/#address='; + } + if (options.v4 === undefined) { + options.v4 = false; + } + let formFunction = this.correctForm; + if (options.v4) { + formFunction = this.to4in6; + } + const form = formFunction.call(this); + if (options.className) { + return `${form}`; + } + return `${form}`; + } + /** + * Groups an address + * @returns {String} + */ + group() { + if (this.elidedGroups === 0) { + // The simple case + return helpers.simpleGroup(this.address).join(':'); + } + assert(typeof this.elidedGroups === 'number'); + assert(typeof this.elisionBegin === 'number'); + // The elided case + const output = []; + const [left, right] = this.address.split('::'); + if (left.length) { + output.push(...helpers.simpleGroup(left)); + } + else { + output.push(''); + } + const classes = ['hover-group']; + for (let i = this.elisionBegin; i < this.elisionBegin + this.elidedGroups; i++) { + classes.push(`group-${i}`); + } + output.push(``); + if (right.length) { + output.push(...helpers.simpleGroup(right, this.elisionEnd)); + } + else { + output.push(''); + } + if (this.is4()) { + assert(this.address4 instanceof ipv4_1.Address4); + output.pop(); + output.push(this.address4.groupForV6()); + } + return output.join(':'); + } + // #endregion + // #region Regular expressions + /** + * Generate a regular expression string that can be used to find or validate + * all variations of this address + * @memberof Address6 + * @instance + * @param {boolean} substringSearch + * @returns {string} + */ + regularExpressionString(substringSearch = false) { + let output = []; + // TODO: revisit why this is necessary + const address6 = new Address6(this.correctForm()); + if (address6.elidedGroups === 0) { + // The simple case + output.push((0, regular_expressions_1.simpleRegularExpression)(address6.parsedAddress)); + } + else if (address6.elidedGroups === constants6.GROUPS) { + // A completely elided address + output.push((0, regular_expressions_1.possibleElisions)(constants6.GROUPS)); + } + else { + // A partially elided address + const halves = address6.address.split('::'); + if (halves[0].length) { + output.push((0, regular_expressions_1.simpleRegularExpression)(halves[0].split(':'))); + } + assert(typeof address6.elidedGroups === 'number'); + output.push((0, regular_expressions_1.possibleElisions)(address6.elidedGroups, halves[0].length !== 0, halves[1].length !== 0)); + if (halves[1].length) { + output.push((0, regular_expressions_1.simpleRegularExpression)(halves[1].split(':'))); + } + output = [output.join(':')]; + } + if (!substringSearch) { + output = [ + '(?=^|', + regular_expressions_1.ADDRESS_BOUNDARY, + '|[^\\w\\:])(', + ...output, + ')(?=[^\\w\\:]|', + regular_expressions_1.ADDRESS_BOUNDARY, + '|$)', + ]; + } + return output.join(''); + } + /** + * Generate a regular expression that can be used to find or validate all + * variations of this address. + * @memberof Address6 + * @instance + * @param {boolean} substringSearch + * @returns {RegExp} + */ + regularExpression(substringSearch = false) { + return new RegExp(this.regularExpressionString(substringSearch), 'i'); + } +} +exports.Address6 = Address6; +//# sourceMappingURL=ipv6.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/ipv6.js.map b/food-ordering-app/server/node_modules/ip-address/dist/ipv6.js.map new file mode 100644 index 000000000..05d59a086 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/ipv6.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ipv6.js","sourceRoot":"","sources":["../src/ipv6.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/v4/constants.d.ts b/food-ordering-app/server/node_modules/ip-address/dist/v4/constants.d.ts new file mode 100644 index 000000000..4e85d4a4b --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/v4/constants.d.ts @@ -0,0 +1,5 @@ +export declare const BITS = 32; +export declare const GROUPS = 4; +export declare const RE_ADDRESS: RegExp; +export declare const RE_SUBNET_STRING: RegExp; +//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/v4/constants.d.ts.map b/food-ordering-app/server/node_modules/ip-address/dist/v4/constants.d.ts.map new file mode 100644 index 000000000..ea60cedb7 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/v4/constants.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/v4/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,KAAK,CAAC;AACvB,eAAO,MAAM,MAAM,IAAI,CAAC;AAExB,eAAO,MAAM,UAAU,QAC8I,CAAC;AAEtK,eAAO,MAAM,gBAAgB,QAAe,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/v4/constants.js b/food-ordering-app/server/node_modules/ip-address/dist/v4/constants.js new file mode 100644 index 000000000..6fa2518f9 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/v4/constants.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.RE_SUBNET_STRING = exports.RE_ADDRESS = exports.GROUPS = exports.BITS = void 0; +exports.BITS = 32; +exports.GROUPS = 4; +exports.RE_ADDRESS = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/g; +exports.RE_SUBNET_STRING = /\/\d{1,2}$/; +//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/v4/constants.js.map b/food-ordering-app/server/node_modules/ip-address/dist/v4/constants.js.map new file mode 100644 index 000000000..0a96f8697 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/v4/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/v4/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,IAAI,GAAG,EAAE,CAAC;AACV,QAAA,MAAM,GAAG,CAAC,CAAC;AAEX,QAAA,UAAU,GACrB,mKAAmK,CAAC;AAEzJ,QAAA,gBAAgB,GAAG,YAAY,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/v6/constants.d.ts b/food-ordering-app/server/node_modules/ip-address/dist/v6/constants.d.ts new file mode 100644 index 000000000..130237531 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/v6/constants.d.ts @@ -0,0 +1,45 @@ +export declare const BITS = 128; +export declare const GROUPS = 8; +/** + * Represents IPv6 address scopes + * @memberof Address6 + * @static + */ +export declare const SCOPES: { + [key: number]: string | undefined; +}; +/** + * Represents IPv6 address types + * @memberof Address6 + * @static + */ +export declare const TYPES: { + [key: string]: string | undefined; +}; +/** + * A regular expression that matches bad characters in an IPv6 address + * @memberof Address6 + * @static + */ +export declare const RE_BAD_CHARACTERS: RegExp; +/** + * A regular expression that matches an incorrect IPv6 address + * @memberof Address6 + * @static + */ +export declare const RE_BAD_ADDRESS: RegExp; +/** + * A regular expression that matches an IPv6 subnet + * @memberof Address6 + * @static + */ +export declare const RE_SUBNET_STRING: RegExp; +/** + * A regular expression that matches an IPv6 zone + * @memberof Address6 + * @static + */ +export declare const RE_ZONE_STRING: RegExp; +export declare const RE_URL: RegExp; +export declare const RE_URL_WITH_PORT: RegExp; +//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/v6/constants.d.ts.map b/food-ordering-app/server/node_modules/ip-address/dist/v6/constants.d.ts.map new file mode 100644 index 000000000..0f4f412f9 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/v6/constants.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/v6/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,MAAM,CAAC;AACxB,eAAO,MAAM,MAAM,IAAI,CAAC;AAExB;;;;GAIG;AACH,eAAO,MAAM,MAAM,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CAS9C,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,KAAK,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CAuB7C,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,QAAqB,CAAC;AAEpD;;;;GAIG;AACH,eAAO,MAAM,cAAc,QAA6C,CAAC;AAEzE;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,QAAqB,CAAC;AAEnD;;;;GAIG;AACH,eAAO,MAAM,cAAc,QAAS,CAAC;AAErC,eAAO,MAAM,MAAM,QAAgC,CAAC;AACpD,eAAO,MAAM,gBAAgB,QAAkC,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/v6/constants.js b/food-ordering-app/server/node_modules/ip-address/dist/v6/constants.js new file mode 100644 index 000000000..0abc423e0 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/v6/constants.js @@ -0,0 +1,76 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.RE_URL_WITH_PORT = exports.RE_URL = exports.RE_ZONE_STRING = exports.RE_SUBNET_STRING = exports.RE_BAD_ADDRESS = exports.RE_BAD_CHARACTERS = exports.TYPES = exports.SCOPES = exports.GROUPS = exports.BITS = void 0; +exports.BITS = 128; +exports.GROUPS = 8; +/** + * Represents IPv6 address scopes + * @memberof Address6 + * @static + */ +exports.SCOPES = { + 0: 'Reserved', + 1: 'Interface local', + 2: 'Link local', + 4: 'Admin local', + 5: 'Site local', + 8: 'Organization local', + 14: 'Global', + 15: 'Reserved', +}; +/** + * Represents IPv6 address types + * @memberof Address6 + * @static + */ +exports.TYPES = { + 'ff01::1/128': 'Multicast (All nodes on this interface)', + 'ff01::2/128': 'Multicast (All routers on this interface)', + 'ff02::1/128': 'Multicast (All nodes on this link)', + 'ff02::2/128': 'Multicast (All routers on this link)', + 'ff05::2/128': 'Multicast (All routers in this site)', + 'ff02::5/128': 'Multicast (OSPFv3 AllSPF routers)', + 'ff02::6/128': 'Multicast (OSPFv3 AllDR routers)', + 'ff02::9/128': 'Multicast (RIP routers)', + 'ff02::a/128': 'Multicast (EIGRP routers)', + 'ff02::d/128': 'Multicast (PIM routers)', + 'ff02::16/128': 'Multicast (MLDv2 reports)', + 'ff01::fb/128': 'Multicast (mDNSv6)', + 'ff02::fb/128': 'Multicast (mDNSv6)', + 'ff05::fb/128': 'Multicast (mDNSv6)', + 'ff02::1:2/128': 'Multicast (All DHCP servers and relay agents on this link)', + 'ff05::1:2/128': 'Multicast (All DHCP servers and relay agents in this site)', + 'ff02::1:3/128': 'Multicast (All DHCP servers on this link)', + 'ff05::1:3/128': 'Multicast (All DHCP servers in this site)', + '::/128': 'Unspecified', + '::1/128': 'Loopback', + 'ff00::/8': 'Multicast', + 'fe80::/10': 'Link-local unicast', +}; +/** + * A regular expression that matches bad characters in an IPv6 address + * @memberof Address6 + * @static + */ +exports.RE_BAD_CHARACTERS = /([^0-9a-f:/%])/gi; +/** + * A regular expression that matches an incorrect IPv6 address + * @memberof Address6 + * @static + */ +exports.RE_BAD_ADDRESS = /([0-9a-f]{5,}|:{3,}|[^:]:$|^:[^:]|\/$)/gi; +/** + * A regular expression that matches an IPv6 subnet + * @memberof Address6 + * @static + */ +exports.RE_SUBNET_STRING = /\/\d{1,3}(?=%|$)/; +/** + * A regular expression that matches an IPv6 zone + * @memberof Address6 + * @static + */ +exports.RE_ZONE_STRING = /%.*$/; +exports.RE_URL = /^\[{0,1}([0-9a-f:]+)\]{0,1}/; +exports.RE_URL_WITH_PORT = /\[([0-9a-f:]+)\]:([0-9]{1,5})/; +//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/v6/constants.js.map b/food-ordering-app/server/node_modules/ip-address/dist/v6/constants.js.map new file mode 100644 index 000000000..1d313e0c5 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/v6/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/v6/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,IAAI,GAAG,GAAG,CAAC;AACX,QAAA,MAAM,GAAG,CAAC,CAAC;AAExB;;;;GAIG;AACU,QAAA,MAAM,GAA0C;IAC3D,CAAC,EAAE,UAAU;IACb,CAAC,EAAE,iBAAiB;IACpB,CAAC,EAAE,YAAY;IACf,CAAC,EAAE,aAAa;IAChB,CAAC,EAAE,YAAY;IACf,CAAC,EAAE,oBAAoB;IACvB,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,UAAU;CACN,CAAC;AAEX;;;;GAIG;AACU,QAAA,KAAK,GAA0C;IAC1D,aAAa,EAAE,yCAAyC;IACxD,aAAa,EAAE,2CAA2C;IAC1D,aAAa,EAAE,oCAAoC;IACnD,aAAa,EAAE,sCAAsC;IACrD,aAAa,EAAE,sCAAsC;IACrD,aAAa,EAAE,mCAAmC;IAClD,aAAa,EAAE,kCAAkC;IACjD,aAAa,EAAE,yBAAyB;IACxC,aAAa,EAAE,2BAA2B;IAC1C,aAAa,EAAE,yBAAyB;IACxC,cAAc,EAAE,2BAA2B;IAC3C,cAAc,EAAE,oBAAoB;IACpC,cAAc,EAAE,oBAAoB;IACpC,cAAc,EAAE,oBAAoB;IACpC,eAAe,EAAE,4DAA4D;IAC7E,eAAe,EAAE,4DAA4D;IAC7E,eAAe,EAAE,2CAA2C;IAC5D,eAAe,EAAE,2CAA2C;IAC5D,QAAQ,EAAE,aAAa;IACvB,SAAS,EAAE,UAAU;IACrB,UAAU,EAAE,WAAW;IACvB,WAAW,EAAE,oBAAoB;CACzB,CAAC;AAEX;;;;GAIG;AACU,QAAA,iBAAiB,GAAG,kBAAkB,CAAC;AAEpD;;;;GAIG;AACU,QAAA,cAAc,GAAG,0CAA0C,CAAC;AAEzE;;;;GAIG;AACU,QAAA,gBAAgB,GAAG,kBAAkB,CAAC;AAEnD;;;;GAIG;AACU,QAAA,cAAc,GAAG,MAAM,CAAC;AAExB,QAAA,MAAM,GAAG,6BAA6B,CAAC;AACvC,QAAA,gBAAgB,GAAG,+BAA+B,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/v6/helpers.d.ts b/food-ordering-app/server/node_modules/ip-address/dist/v6/helpers.d.ts new file mode 100644 index 000000000..e72f0311d --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/v6/helpers.d.ts @@ -0,0 +1,18 @@ +/** + * @returns {String} the string with all zeroes contained in a + */ +export declare function spanAllZeroes(s: string): string; +/** + * @returns {String} the string with each character contained in a + */ +export declare function spanAll(s: string, offset?: number): string; +/** + * @returns {String} the string with leading zeroes contained in a + */ +export declare function spanLeadingZeroes(address: string): string; +/** + * Groups an address + * @returns {String} a grouped address + */ +export declare function simpleGroup(addressString: string, offset?: number): string[]; +//# sourceMappingURL=helpers.d.ts.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/v6/helpers.d.ts.map b/food-ordering-app/server/node_modules/ip-address/dist/v6/helpers.d.ts.map new file mode 100644 index 000000000..823f26e21 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/v6/helpers.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/v6/helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAE,MAAU,GAAG,MAAM,CAQ7D;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAIzD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,GAAE,MAAU,GAAG,MAAM,EAAE,CAU/E"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/v6/helpers.js b/food-ordering-app/server/node_modules/ip-address/dist/v6/helpers.js new file mode 100644 index 000000000..fafca0c27 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/v6/helpers.js @@ -0,0 +1,45 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.spanAllZeroes = spanAllZeroes; +exports.spanAll = spanAll; +exports.spanLeadingZeroes = spanLeadingZeroes; +exports.simpleGroup = simpleGroup; +/** + * @returns {String} the string with all zeroes contained in a + */ +function spanAllZeroes(s) { + return s.replace(/(0+)/g, '$1'); +} +/** + * @returns {String} the string with each character contained in a + */ +function spanAll(s, offset = 0) { + const letters = s.split(''); + return letters + .map((n, i) => `${spanAllZeroes(n)}`) + .join(''); +} +function spanLeadingZeroesSimple(group) { + return group.replace(/^(0+)/, '$1'); +} +/** + * @returns {String} the string with leading zeroes contained in a + */ +function spanLeadingZeroes(address) { + const groups = address.split(':'); + return groups.map((g) => spanLeadingZeroesSimple(g)).join(':'); +} +/** + * Groups an address + * @returns {String} a grouped address + */ +function simpleGroup(addressString, offset = 0) { + const groups = addressString.split(':'); + return groups.map((g, i) => { + if (/group-v4/.test(g)) { + return g; + } + return `${spanLeadingZeroesSimple(g)}`; + }); +} +//# sourceMappingURL=helpers.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/v6/helpers.js.map b/food-ordering-app/server/node_modules/ip-address/dist/v6/helpers.js.map new file mode 100644 index 000000000..c89545538 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/v6/helpers.js.map @@ -0,0 +1 @@ +{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/v6/helpers.ts"],"names":[],"mappings":";;AAGA,sCAEC;AAKD,0BAQC;AASD,8CAIC;AAMD,kCAUC;AA/CD;;GAEG;AACH,SAAgB,aAAa,CAAC,CAAS;IACrC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC;AAC5D,CAAC;AAED;;GAEG;AACH,SAAgB,OAAO,CAAC,CAAS,EAAE,SAAiB,CAAC;IACnD,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAE5B,OAAO,OAAO;SACX,GAAG,CACF,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,4BAA4B,CAAC,aAAa,CAAC,GAAG,MAAM,KAAK,aAAa,CAAC,CAAC,CAAC,SAAS,CAC7F;SACA,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAa;IAC5C,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC;AAChE,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,OAAe;IAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAElC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjE,CAAC;AAED;;;GAGG;AACH,SAAgB,WAAW,CAAC,aAAqB,EAAE,SAAiB,CAAC;IACnE,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAExC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACzB,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,CAAC;QACX,CAAC;QAED,OAAO,kCAAkC,CAAC,GAAG,MAAM,KAAK,uBAAuB,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9F,CAAC,CAAC,CAAC;AACL,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/v6/regular-expressions.d.ts b/food-ordering-app/server/node_modules/ip-address/dist/v6/regular-expressions.d.ts new file mode 100644 index 000000000..181b91e81 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/v6/regular-expressions.d.ts @@ -0,0 +1,6 @@ +export declare function groupPossibilities(possibilities: string[]): string; +export declare function padGroup(group: string): string; +export declare const ADDRESS_BOUNDARY = "[^A-Fa-f0-9:]"; +export declare function simpleRegularExpression(groups: string[]): string; +export declare function possibleElisions(elidedGroups: number, moreLeft?: boolean, moreRight?: boolean): string; +//# sourceMappingURL=regular-expressions.d.ts.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/v6/regular-expressions.d.ts.map b/food-ordering-app/server/node_modules/ip-address/dist/v6/regular-expressions.d.ts.map new file mode 100644 index 000000000..20a93f7d9 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/v6/regular-expressions.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"regular-expressions.d.ts","sourceRoot":"","sources":["../../src/v6/regular-expressions.ts"],"names":[],"mappings":"AAEA,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM,CAElE;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAM9C;AAED,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAEhD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,UA+BvD;AAED,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,OAAO,GAClB,MAAM,CAwCR"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/v6/regular-expressions.js b/food-ordering-app/server/node_modules/ip-address/dist/v6/regular-expressions.js new file mode 100644 index 000000000..a2c514593 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/v6/regular-expressions.js @@ -0,0 +1,95 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ADDRESS_BOUNDARY = void 0; +exports.groupPossibilities = groupPossibilities; +exports.padGroup = padGroup; +exports.simpleRegularExpression = simpleRegularExpression; +exports.possibleElisions = possibleElisions; +const v6 = __importStar(require("./constants")); +function groupPossibilities(possibilities) { + return `(${possibilities.join('|')})`; +} +function padGroup(group) { + if (group.length < 4) { + return `0{0,${4 - group.length}}${group}`; + } + return group; +} +exports.ADDRESS_BOUNDARY = '[^A-Fa-f0-9:]'; +function simpleRegularExpression(groups) { + const zeroIndexes = []; + groups.forEach((group, i) => { + const groupInteger = parseInt(group, 16); + if (groupInteger === 0) { + zeroIndexes.push(i); + } + }); + // You can technically elide a single 0, this creates the regular expressions + // to match that eventuality + const possibilities = zeroIndexes.map((zeroIndex) => groups + .map((group, i) => { + if (i === zeroIndex) { + const elision = i === 0 || i === v6.GROUPS - 1 ? ':' : ''; + return groupPossibilities([padGroup(group), elision]); + } + return padGroup(group); + }) + .join(':')); + // The simplest case + possibilities.push(groups.map(padGroup).join(':')); + return groupPossibilities(possibilities); +} +function possibleElisions(elidedGroups, moreLeft, moreRight) { + const left = moreLeft ? '' : ':'; + const right = moreRight ? '' : ':'; + const possibilities = []; + // 1. elision of everything (::) + if (!moreLeft && !moreRight) { + possibilities.push('::'); + } + // 2. complete elision of the middle + if (moreLeft && moreRight) { + possibilities.push(''); + } + if ((moreRight && !moreLeft) || (!moreRight && moreLeft)) { + // 3. complete elision of one side + possibilities.push(':'); + } + // 4. elision from the left side + possibilities.push(`${left}(:0{1,4}){1,${elidedGroups - 1}}`); + // 5. elision from the right side + possibilities.push(`(0{1,4}:){1,${elidedGroups - 1}}${right}`); + // 6. no elision + possibilities.push(`(0{1,4}:){${elidedGroups - 1}}0{1,4}`); + // 7. elision (including sloppy elision) from the middle + for (let groups = 1; groups < elidedGroups - 1; groups++) { + for (let position = 1; position < elidedGroups - groups; position++) { + possibilities.push(`(0{1,4}:){${position}}:(0{1,4}:){${elidedGroups - position - groups - 1}}0{1,4}`); + } + } + return groupPossibilities(possibilities); +} +//# sourceMappingURL=regular-expressions.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/dist/v6/regular-expressions.js.map b/food-ordering-app/server/node_modules/ip-address/dist/v6/regular-expressions.js.map new file mode 100644 index 000000000..190fd4a17 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/dist/v6/regular-expressions.js.map @@ -0,0 +1 @@ +{"version":3,"file":"regular-expressions.js","sourceRoot":"","sources":["../../src/v6/regular-expressions.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/ip-address/package.json b/food-ordering-app/server/node_modules/ip-address/package.json new file mode 100644 index 000000000..5cf811e8c --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/package.json @@ -0,0 +1,78 @@ +{ + "name": "ip-address", + "description": "A library for parsing IPv4 and IPv6 IP addresses in node and the browser.", + "keywords": [ + "ipv6", + "ipv4", + "browser", + "validation" + ], + "version": "10.1.0", + "author": "Beau Gunderson (https://beaugunderson.com/)", + "license": "MIT", + "main": "dist/ip-address.js", + "types": "dist/ip-address.d.ts", + "scripts": { + "docs": "documentation build --github --output docs --format html ./ip-address.js", + "build": "rm -rf dist; mkdir dist; tsc", + "prepack": "npm run build", + "release": "release-it", + "test-ci": "nyc mocha", + "test": "mocha", + "watch": "mocha --watch" + }, + "nyc": { + "extension": [ + ".ts" + ], + "exclude": [ + "**/*.d.ts", + ".eslintrc.js", + "coverage/", + "dist/", + "test/", + "tmp/" + ], + "reporter": [ + "html", + "lcov", + "text" + ], + "all": true + }, + "engines": { + "node": ">= 12" + }, + "files": [ + "src", + "dist" + ], + "repository": { + "type": "git", + "url": "git://github.com/beaugunderson/ip-address.git" + }, + "devDependencies": { + "@types/chai": "^5.0.0", + "@types/mocha": "^10.0.8", + "@typescript-eslint/eslint-plugin": "^8.8.0", + "@typescript-eslint/parser": "^8.8.0", + "chai": "^5.1.1", + "documentation": "^14.0.3", + "eslint": "^8.50.0", + "eslint_d": "^14.0.4", + "eslint-config-airbnb": "^19.0.4", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-filenames": "^1.3.2", + "eslint-plugin-import": "^2.30.0", + "eslint-plugin-jsx-a11y": "^6.10.0", + "eslint-plugin-prettier": "^5.2.1", + "eslint-plugin-sort-imports-es6-autofix": "^0.6.0", + "mocha": "^10.7.3", + "nyc": "^17.1.0", + "prettier": "^3.3.3", + "release-it": "^17.6.0", + "source-map-support": "^0.5.21", + "tsx": "^4.19.1", + "typescript": "<5.6.0" + } +} diff --git a/food-ordering-app/server/node_modules/ip-address/src/address-error.ts b/food-ordering-app/server/node_modules/ip-address/src/address-error.ts new file mode 100644 index 000000000..032d4cdd7 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/src/address-error.ts @@ -0,0 +1,11 @@ +export class AddressError extends Error { + parseMessage?: string; + + constructor(message: string, parseMessage?: string) { + super(message); + + this.name = 'AddressError'; + + this.parseMessage = parseMessage; + } +} diff --git a/food-ordering-app/server/node_modules/ip-address/src/common.ts b/food-ordering-app/server/node_modules/ip-address/src/common.ts new file mode 100644 index 000000000..1123fa3b1 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/src/common.ts @@ -0,0 +1,55 @@ +import { Address4 } from './ipv4'; +import { Address6 } from './ipv6'; + +export interface ReverseFormOptions { + omitSuffix?: boolean; +} + +export function isInSubnet(this: Address4 | Address6, address: Address4 | Address6) { + if (this.subnetMask < address.subnetMask) { + return false; + } + + if (this.mask(address.subnetMask) === address.mask()) { + return true; + } + + return false; +} + +export function isCorrect(defaultBits: number) { + return function (this: Address4 | Address6) { + if (this.addressMinusSuffix !== this.correctForm()) { + return false; + } + + if (this.subnetMask === defaultBits && !this.parsedSubnet) { + return true; + } + + return this.parsedSubnet === String(this.subnetMask); + }; +} + +export function numberToPaddedHex(number: number) { + return number.toString(16).padStart(2, '0'); +} + +export function stringToPaddedHex(numberString: string) { + return numberToPaddedHex(parseInt(numberString, 10)); +} + +/** + * @param binaryValue Binary representation of a value (e.g. `10`) + * @param position Byte position, where 0 is the least significant bit + */ +export function testBit(binaryValue: string, position: number): boolean { + const { length } = binaryValue; + + if (position > length) { + return false; + } + + const positionInString = length - position; + return binaryValue.substring(positionInString, positionInString + 1) === '1'; +} diff --git a/food-ordering-app/server/node_modules/ip-address/src/ip-address.ts b/food-ordering-app/server/node_modules/ip-address/src/ip-address.ts new file mode 100644 index 000000000..b4e150267 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/src/ip-address.ts @@ -0,0 +1,7 @@ +export { Address4 } from './ipv4'; +export { Address6 } from './ipv6'; +export { AddressError } from './address-error'; + +import * as helpers from './v6/helpers'; + +export const v6 = { helpers }; diff --git a/food-ordering-app/server/node_modules/ip-address/src/ipv4.ts b/food-ordering-app/server/node_modules/ip-address/src/ipv4.ts new file mode 100644 index 000000000..7c7ce308b --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/src/ipv4.ts @@ -0,0 +1,394 @@ +/* eslint-disable no-param-reassign */ + +import * as common from './common'; +import * as constants from './v4/constants'; +import { AddressError } from './address-error'; + +/** + * Represents an IPv4 address + * @class Address4 + * @param {string} address - An IPv4 address string + */ +export class Address4 { + address: string; + addressMinusSuffix?: string; + groups: number = constants.GROUPS; + parsedAddress: string[] = []; + parsedSubnet: string = ''; + subnet: string = '/32'; + subnetMask: number = 32; + v4: boolean = true; + + constructor(address: string) { + this.address = address; + + const subnet = constants.RE_SUBNET_STRING.exec(address); + + if (subnet) { + this.parsedSubnet = subnet[0].replace('/', ''); + this.subnetMask = parseInt(this.parsedSubnet, 10); + this.subnet = `/${this.subnetMask}`; + + if (this.subnetMask < 0 || this.subnetMask > constants.BITS) { + throw new AddressError('Invalid subnet mask.'); + } + + address = address.replace(constants.RE_SUBNET_STRING, ''); + } + + this.addressMinusSuffix = address; + + this.parsedAddress = this.parse(address); + } + + static isValid(address: string): boolean { + try { + // eslint-disable-next-line no-new + new Address4(address); + + return true; + } catch (e) { + return false; + } + } + + /* + * Parses a v4 address + */ + parse(address: string) { + const groups = address.split('.'); + + if (!address.match(constants.RE_ADDRESS)) { + throw new AddressError('Invalid IPv4 address.'); + } + + return groups; + } + + /** + * Returns the correct form of an address + * @memberof Address4 + * @instance + * @returns {String} + */ + correctForm(): string { + return this.parsedAddress.map((part) => parseInt(part, 10)).join('.'); + } + + /** + * Returns true if the address is correct, false otherwise + * @memberof Address4 + * @instance + * @returns {Boolean} + */ + isCorrect = common.isCorrect(constants.BITS); + + /** + * Converts a hex string to an IPv4 address object + * @memberof Address4 + * @static + * @param {string} hex - a hex string to convert + * @returns {Address4} + */ + static fromHex(hex: string): Address4 { + const padded = hex.replace(/:/g, '').padStart(8, '0'); + const groups = []; + let i; + + for (i = 0; i < 8; i += 2) { + const h = padded.slice(i, i + 2); + + groups.push(parseInt(h, 16)); + } + + return new Address4(groups.join('.')); + } + + /** + * Converts an integer into a IPv4 address object + * @memberof Address4 + * @static + * @param {integer} integer - a number to convert + * @returns {Address4} + */ + static fromInteger(integer: number): Address4 { + return Address4.fromHex(integer.toString(16)); + } + + /** + * Return an address from in-addr.arpa form + * @memberof Address4 + * @static + * @param {string} arpaFormAddress - an 'in-addr.arpa' form ipv4 address + * @returns {Adress4} + * @example + * var address = Address4.fromArpa(42.2.0.192.in-addr.arpa.) + * address.correctForm(); // '192.0.2.42' + */ + static fromArpa(arpaFormAddress: string): Address4 { + // remove ending ".in-addr.arpa." or just "." + const leader = arpaFormAddress.replace(/(\.in-addr\.arpa)?\.$/, ''); + + const address = leader.split('.').reverse().join('.'); + + return new Address4(address); + } + + /** + * Converts an IPv4 address object to a hex string + * @memberof Address4 + * @instance + * @returns {String} + */ + toHex(): string { + return this.parsedAddress.map((part) => common.stringToPaddedHex(part)).join(':'); + } + + /** + * Converts an IPv4 address object to an array of bytes + * @memberof Address4 + * @instance + * @returns {Array} + */ + toArray(): number[] { + return this.parsedAddress.map((part) => parseInt(part, 10)); + } + + /** + * Converts an IPv4 address object to an IPv6 address group + * @memberof Address4 + * @instance + * @returns {String} + */ + toGroup6(): string { + const output = []; + let i; + + for (i = 0; i < constants.GROUPS; i += 2) { + output.push( + `${common.stringToPaddedHex(this.parsedAddress[i])}${common.stringToPaddedHex( + this.parsedAddress[i + 1], + )}`, + ); + } + + return output.join(':'); + } + + /** + * Returns the address as a `bigint` + * @memberof Address4 + * @instance + * @returns {bigint} + */ + bigInt(): bigint { + return BigInt(`0x${this.parsedAddress.map((n) => common.stringToPaddedHex(n)).join('')}`); + } + + /** + * Helper function getting start address. + * @memberof Address4 + * @instance + * @returns {bigint} + */ + _startAddress(): bigint { + return BigInt(`0b${this.mask() + '0'.repeat(constants.BITS - this.subnetMask)}`); + } + + /** + * The first address in the range given by this address' subnet. + * Often referred to as the Network Address. + * @memberof Address4 + * @instance + * @returns {Address4} + */ + startAddress(): Address4 { + return Address4.fromBigInt(this._startAddress()); + } + + /** + * The first host address in the range given by this address's subnet ie + * the first address after the Network Address + * @memberof Address4 + * @instance + * @returns {Address4} + */ + startAddressExclusive(): Address4 { + const adjust = BigInt('1'); + return Address4.fromBigInt(this._startAddress() + adjust); + } + + /** + * Helper function getting end address. + * @memberof Address4 + * @instance + * @returns {bigint} + */ + _endAddress(): bigint { + return BigInt(`0b${this.mask() + '1'.repeat(constants.BITS - this.subnetMask)}`); + } + + /** + * The last address in the range given by this address' subnet + * Often referred to as the Broadcast + * @memberof Address4 + * @instance + * @returns {Address4} + */ + endAddress(): Address4 { + return Address4.fromBigInt(this._endAddress()); + } + + /** + * The last host address in the range given by this address's subnet ie + * the last address prior to the Broadcast Address + * @memberof Address4 + * @instance + * @returns {Address4} + */ + endAddressExclusive(): Address4 { + const adjust = BigInt('1'); + return Address4.fromBigInt(this._endAddress() - adjust); + } + + /** + * Converts a BigInt to a v4 address object + * @memberof Address4 + * @static + * @param {bigint} bigInt - a BigInt to convert + * @returns {Address4} + */ + static fromBigInt(bigInt: bigint): Address4 { + return Address4.fromHex(bigInt.toString(16)); + } + + /** + * Convert a byte array to an Address4 object + * @memberof Address4 + * @static + * @param {Array} bytes - an array of 4 bytes (0-255) + * @returns {Address4} + */ + static fromByteArray(bytes: Array): Address4 { + if (bytes.length !== 4) { + throw new AddressError('IPv4 addresses require exactly 4 bytes'); + } + + // Validate that all bytes are within valid range (0-255) + for (let i = 0; i < bytes.length; i++) { + if (!Number.isInteger(bytes[i]) || bytes[i] < 0 || bytes[i] > 255) { + throw new AddressError('All bytes must be integers between 0 and 255'); + } + } + + return this.fromUnsignedByteArray(bytes); + } + + /** + * Convert an unsigned byte array to an Address4 object + * @memberof Address4 + * @static + * @param {Array} bytes - an array of 4 unsigned bytes (0-255) + * @returns {Address4} + */ + static fromUnsignedByteArray(bytes: Array): Address4 { + if (bytes.length !== 4) { + throw new AddressError('IPv4 addresses require exactly 4 bytes'); + } + + const address = bytes.join('.'); + return new Address4(address); + } + + /** + * Returns the first n bits of the address, defaulting to the + * subnet mask + * @memberof Address4 + * @instance + * @returns {String} + */ + mask(mask?: number): string { + if (mask === undefined) { + mask = this.subnetMask; + } + + return this.getBitsBase2(0, mask); + } + + /** + * Returns the bits in the given range as a base-2 string + * @memberof Address4 + * @instance + * @returns {string} + */ + getBitsBase2(start: number, end: number): string { + return this.binaryZeroPad().slice(start, end); + } + + /** + * Return the reversed ip6.arpa form of the address + * @memberof Address4 + * @param {Object} options + * @param {boolean} options.omitSuffix - omit the "in-addr.arpa" suffix + * @instance + * @returns {String} + */ + reverseForm(options?: common.ReverseFormOptions): string { + if (!options) { + options = {}; + } + + const reversed = this.correctForm().split('.').reverse().join('.'); + + if (options.omitSuffix) { + return reversed; + } + + return `${reversed}.in-addr.arpa.`; + } + + /** + * Returns true if the given address is in the subnet of the current address + * @memberof Address4 + * @instance + * @returns {boolean} + */ + isInSubnet = common.isInSubnet; + + /** + * Returns true if the given address is a multicast address + * @memberof Address4 + * @instance + * @returns {boolean} + */ + isMulticast(): boolean { + return this.isInSubnet(new Address4('224.0.0.0/4')); + } + + /** + * Returns a zero-padded base-2 string representation of the address + * @memberof Address4 + * @instance + * @returns {string} + */ + binaryZeroPad(): string { + return this.bigInt().toString(2).padStart(constants.BITS, '0'); + } + + /** + * Groups an IPv4 address for inclusion at the end of an IPv6 address + * @returns {String} + */ + groupForV6(): string { + const segments = this.parsedAddress; + + return this.address.replace( + constants.RE_ADDRESS, + `${segments + .slice(0, 2) + .join('.')}.${segments + .slice(2, 4) + .join('.')}`, + ); + } +} diff --git a/food-ordering-app/server/node_modules/ip-address/src/ipv6.ts b/food-ordering-app/server/node_modules/ip-address/src/ipv6.ts new file mode 100644 index 000000000..60348e97a --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/src/ipv6.ts @@ -0,0 +1,1212 @@ +/* eslint-disable prefer-destructuring */ +/* eslint-disable no-param-reassign */ + +import * as common from './common'; +import * as constants4 from './v4/constants'; +import * as constants6 from './v6/constants'; +import * as helpers from './v6/helpers'; +import { Address4 } from './ipv4'; +import { + ADDRESS_BOUNDARY, + possibleElisions, + simpleRegularExpression, +} from './v6/regular-expressions'; +import { AddressError } from './address-error'; +import { testBit } from './common'; + +function assert(condition: any): asserts condition { + if (!condition) { + throw new Error('Assertion failed.'); + } +} + +function addCommas(number: string): string { + const r = /(\d+)(\d{3})/; + + while (r.test(number)) { + number = number.replace(r, '$1,$2'); + } + + return number; +} + +function spanLeadingZeroes4(n: string): string { + n = n.replace(/^(0{1,})([1-9]+)$/, '$1$2'); + n = n.replace(/^(0{1,})(0)$/, '$1$2'); + + return n; +} + +/* + * A helper function to compact an array + */ +function compact(address: string[], slice: number[]) { + const s1 = []; + const s2 = []; + let i; + + for (i = 0; i < address.length; i++) { + if (i < slice[0]) { + s1.push(address[i]); + } else if (i > slice[1]) { + s2.push(address[i]); + } + } + + return s1.concat(['compact']).concat(s2); +} + +function paddedHex(octet: string): string { + return parseInt(octet, 16).toString(16).padStart(4, '0'); +} + +function unsignByte(b: number) { + // eslint-disable-next-line no-bitwise + return b & 0xff; +} + +interface SixToFourProperties { + prefix: string; + gateway: string; +} + +interface TeredoProperties { + prefix: string; + server4: string; + client4: string; + flags: string; + coneNat: boolean; + microsoft: { + reserved: boolean; + universalLocal: boolean; + groupIndividual: boolean; + nonce: string; + }; + udpPort: string; +} + +/** + * Represents an IPv6 address + * @class Address6 + * @param {string} address - An IPv6 address string + * @param {number} [groups=8] - How many octets to parse + * @example + * var address = new Address6('2001::/32'); + */ +export class Address6 { + address4?: Address4; + address: string; + addressMinusSuffix: string = ''; + elidedGroups?: number; + elisionBegin?: number; + elisionEnd?: number; + groups: number; + parsedAddress4?: string; + parsedAddress: string[]; + parsedSubnet: string = ''; + subnet: string = '/128'; + subnetMask: number = 128; + v4: boolean = false; + zone: string = ''; + + constructor(address: string, optionalGroups?: number) { + if (optionalGroups === undefined) { + this.groups = constants6.GROUPS; + } else { + this.groups = optionalGroups; + } + + this.address = address; + + const subnet = constants6.RE_SUBNET_STRING.exec(address); + + if (subnet) { + this.parsedSubnet = subnet[0].replace('/', ''); + this.subnetMask = parseInt(this.parsedSubnet, 10); + this.subnet = `/${this.subnetMask}`; + + if ( + Number.isNaN(this.subnetMask) || + this.subnetMask < 0 || + this.subnetMask > constants6.BITS + ) { + throw new AddressError('Invalid subnet mask.'); + } + + address = address.replace(constants6.RE_SUBNET_STRING, ''); + } else if (/\//.test(address)) { + throw new AddressError('Invalid subnet mask.'); + } + + const zone = constants6.RE_ZONE_STRING.exec(address); + + if (zone) { + this.zone = zone[0]; + + address = address.replace(constants6.RE_ZONE_STRING, ''); + } + + this.addressMinusSuffix = address; + + this.parsedAddress = this.parse(this.addressMinusSuffix); + } + + static isValid(address: string): boolean { + try { + // eslint-disable-next-line no-new + new Address6(address); + + return true; + } catch (e) { + return false; + } + } + + /** + * Convert a BigInt to a v6 address object + * @memberof Address6 + * @static + * @param {bigint} bigInt - a BigInt to convert + * @returns {Address6} + * @example + * var bigInt = BigInt('1000000000000'); + * var address = Address6.fromBigInt(bigInt); + * address.correctForm(); // '::e8:d4a5:1000' + */ + static fromBigInt(bigInt: bigint): Address6 { + const hex = bigInt.toString(16).padStart(32, '0'); + const groups = []; + let i; + + for (i = 0; i < constants6.GROUPS; i++) { + groups.push(hex.slice(i * 4, (i + 1) * 4)); + } + + return new Address6(groups.join(':')); + } + + /** + * Convert a URL (with optional port number) to an address object + * @memberof Address6 + * @static + * @param {string} url - a URL with optional port number + * @example + * var addressAndPort = Address6.fromURL('http://[ffff::]:8080/foo/'); + * addressAndPort.address.correctForm(); // 'ffff::' + * addressAndPort.port; // 8080 + */ + static fromURL(url: string) { + let host: string; + let port: string | number | null = null; + let result: string[] | null; + + // If we have brackets parse them and find a port + if (url.indexOf('[') !== -1 && url.indexOf(']:') !== -1) { + result = constants6.RE_URL_WITH_PORT.exec(url); + + if (result === null) { + return { + error: 'failed to parse address with port', + address: null, + port: null, + }; + } + + host = result[1]; + port = result[2]; + // If there's a URL extract the address + } else if (url.indexOf('/') !== -1) { + // Remove the protocol prefix + url = url.replace(/^[a-z0-9]+:\/\//, ''); + + // Parse the address + result = constants6.RE_URL.exec(url); + + if (result === null) { + return { + error: 'failed to parse address from URL', + address: null, + port: null, + }; + } + + host = result[1]; + // Otherwise just assign the URL to the host and let the library parse it + } else { + host = url; + } + + // If there's a port convert it to an integer + if (port) { + port = parseInt(port, 10); + + // squelch out of range ports + if (port < 0 || port > 65536) { + port = null; + } + } else { + // Standardize `undefined` to `null` + port = null; + } + + return { + address: new Address6(host), + port, + }; + } + + /** + * Create an IPv6-mapped address given an IPv4 address + * @memberof Address6 + * @static + * @param {string} address - An IPv4 address string + * @returns {Address6} + * @example + * var address = Address6.fromAddress4('192.168.0.1'); + * address.correctForm(); // '::ffff:c0a8:1' + * address.to4in6(); // '::ffff:192.168.0.1' + */ + static fromAddress4(address: string): Address6 { + const address4 = new Address4(address); + + const mask6 = constants6.BITS - (constants4.BITS - address4.subnetMask); + + return new Address6(`::ffff:${address4.correctForm()}/${mask6}`); + } + + /** + * Return an address from ip6.arpa form + * @memberof Address6 + * @static + * @param {string} arpaFormAddress - an 'ip6.arpa' form address + * @returns {Adress6} + * @example + * var address = Address6.fromArpa(e.f.f.f.3.c.2.6.f.f.f.e.6.6.8.e.1.0.6.7.9.4.e.c.0.0.0.0.1.0.0.2.ip6.arpa.) + * address.correctForm(); // '2001:0:ce49:7601:e866:efff:62c3:fffe' + */ + static fromArpa(arpaFormAddress: string): Address6 { + // remove ending ".ip6.arpa." or just "." + let address = arpaFormAddress.replace(/(\.ip6\.arpa)?\.$/, ''); + const semicolonAmount = 7; + + // correct ip6.arpa form with ending removed will be 63 characters + if (address.length !== 63) { + throw new AddressError("Invalid 'ip6.arpa' form."); + } + + const parts = address.split('.').reverse(); + + for (let i = semicolonAmount; i > 0; i--) { + const insertIndex = i * 4; + parts.splice(insertIndex, 0, ':'); + } + + address = parts.join(''); + + return new Address6(address); + } + + /** + * Return the Microsoft UNC transcription of the address + * @memberof Address6 + * @instance + * @returns {String} the Microsoft UNC transcription of the address + */ + microsoftTranscription(): string { + return `${this.correctForm().replace(/:/g, '-')}.ipv6-literal.net`; + } + + /** + * Return the first n bits of the address, defaulting to the subnet mask + * @memberof Address6 + * @instance + * @param {number} [mask=subnet] - the number of bits to mask + * @returns {String} the first n bits of the address as a string + */ + mask(mask: number = this.subnetMask): string { + return this.getBitsBase2(0, mask); + } + + /** + * Return the number of possible subnets of a given size in the address + * @memberof Address6 + * @instance + * @param {number} [subnetSize=128] - the subnet size + * @returns {String} + */ + // TODO: probably useful to have a numeric version of this too + possibleSubnets(subnetSize: number = 128): string { + const availableBits = constants6.BITS - this.subnetMask; + const subnetBits = Math.abs(subnetSize - constants6.BITS); + const subnetPowers = availableBits - subnetBits; + + if (subnetPowers < 0) { + return '0'; + } + + return addCommas((BigInt('2') ** BigInt(subnetPowers)).toString(10)); + } + + /** + * Helper function getting start address. + * @memberof Address6 + * @instance + * @returns {bigint} + */ + _startAddress(): bigint { + return BigInt(`0b${this.mask() + '0'.repeat(constants6.BITS - this.subnetMask)}`); + } + + /** + * The first address in the range given by this address' subnet + * Often referred to as the Network Address. + * @memberof Address6 + * @instance + * @returns {Address6} + */ + startAddress(): Address6 { + return Address6.fromBigInt(this._startAddress()); + } + + /** + * The first host address in the range given by this address's subnet ie + * the first address after the Network Address + * @memberof Address6 + * @instance + * @returns {Address6} + */ + startAddressExclusive(): Address6 { + const adjust = BigInt('1'); + return Address6.fromBigInt(this._startAddress() + adjust); + } + + /** + * Helper function getting end address. + * @memberof Address6 + * @instance + * @returns {bigint} + */ + _endAddress(): bigint { + return BigInt(`0b${this.mask() + '1'.repeat(constants6.BITS - this.subnetMask)}`); + } + + /** + * The last address in the range given by this address' subnet + * Often referred to as the Broadcast + * @memberof Address6 + * @instance + * @returns {Address6} + */ + endAddress(): Address6 { + return Address6.fromBigInt(this._endAddress()); + } + + /** + * The last host address in the range given by this address's subnet ie + * the last address prior to the Broadcast Address + * @memberof Address6 + * @instance + * @returns {Address6} + */ + endAddressExclusive(): Address6 { + const adjust = BigInt('1'); + return Address6.fromBigInt(this._endAddress() - adjust); + } + + /** + * Return the scope of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + getScope(): string { + let scope = constants6.SCOPES[parseInt(this.getBits(12, 16).toString(10), 10)]; + + if (this.getType() === 'Global unicast' && scope !== 'Link local') { + scope = 'Global'; + } + + return scope || 'Unknown'; + } + + /** + * Return the type of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + getType(): string { + for (const subnet of Object.keys(constants6.TYPES)) { + if (this.isInSubnet(new Address6(subnet))) { + return constants6.TYPES[subnet] as string; + } + } + + return 'Global unicast'; + } + + /** + * Return the bits in the given range as a BigInt + * @memberof Address6 + * @instance + * @returns {bigint} + */ + getBits(start: number, end: number): bigint { + return BigInt(`0b${this.getBitsBase2(start, end)}`); + } + + /** + * Return the bits in the given range as a base-2 string + * @memberof Address6 + * @instance + * @returns {String} + */ + getBitsBase2(start: number, end: number): string { + return this.binaryZeroPad().slice(start, end); + } + + /** + * Return the bits in the given range as a base-16 string + * @memberof Address6 + * @instance + * @returns {String} + */ + getBitsBase16(start: number, end: number): string { + const length = end - start; + + if (length % 4 !== 0) { + throw new Error('Length of bits to retrieve must be divisible by four'); + } + + return this.getBits(start, end) + .toString(16) + .padStart(length / 4, '0'); + } + + /** + * Return the bits that are set past the subnet mask length + * @memberof Address6 + * @instance + * @returns {String} + */ + getBitsPastSubnet(): string { + return this.getBitsBase2(this.subnetMask, constants6.BITS); + } + + /** + * Return the reversed ip6.arpa form of the address + * @memberof Address6 + * @param {Object} options + * @param {boolean} options.omitSuffix - omit the "ip6.arpa" suffix + * @instance + * @returns {String} + */ + reverseForm(options?: common.ReverseFormOptions): string { + if (!options) { + options = {}; + } + + const characters = Math.floor(this.subnetMask / 4); + + const reversed = this.canonicalForm() + .replace(/:/g, '') + .split('') + .slice(0, characters) + .reverse() + .join('.'); + + if (characters > 0) { + if (options.omitSuffix) { + return reversed; + } + + return `${reversed}.ip6.arpa.`; + } + + if (options.omitSuffix) { + return ''; + } + + return 'ip6.arpa.'; + } + + /** + * Return the correct form of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + correctForm(): string { + let i; + let groups = []; + + let zeroCounter = 0; + const zeroes = []; + + for (i = 0; i < this.parsedAddress.length; i++) { + const value = parseInt(this.parsedAddress[i], 16); + + if (value === 0) { + zeroCounter++; + } + + if (value !== 0 && zeroCounter > 0) { + if (zeroCounter > 1) { + zeroes.push([i - zeroCounter, i - 1]); + } + + zeroCounter = 0; + } + } + + // Do we end with a string of zeroes? + if (zeroCounter > 1) { + zeroes.push([this.parsedAddress.length - zeroCounter, this.parsedAddress.length - 1]); + } + + const zeroLengths = zeroes.map((n) => n[1] - n[0] + 1); + + if (zeroes.length > 0) { + const index = zeroLengths.indexOf(Math.max(...zeroLengths) as number); + + groups = compact(this.parsedAddress, zeroes[index]); + } else { + groups = this.parsedAddress; + } + + for (i = 0; i < groups.length; i++) { + if (groups[i] !== 'compact') { + groups[i] = parseInt(groups[i], 16).toString(16); + } + } + + let correct = groups.join(':'); + + correct = correct.replace(/^compact$/, '::'); + correct = correct.replace(/(^compact)|(compact$)/, ':'); + correct = correct.replace(/compact/, ''); + + return correct; + } + + /** + * Return a zero-padded base-2 string representation of the address + * @memberof Address6 + * @instance + * @returns {String} + * @example + * var address = new Address6('2001:4860:4001:803::1011'); + * address.binaryZeroPad(); + * // '0010000000000001010010000110000001000000000000010000100000000011 + * // 0000000000000000000000000000000000000000000000000001000000010001' + */ + binaryZeroPad(): string { + return this.bigInt().toString(2).padStart(constants6.BITS, '0'); + } + + // TODO: Improve the semantics of this helper function + parse4in6(address: string): string { + const groups = address.split(':'); + const lastGroup = groups.slice(-1)[0]; + + const address4 = lastGroup.match(constants4.RE_ADDRESS); + + if (address4) { + this.parsedAddress4 = address4[0]; + this.address4 = new Address4(this.parsedAddress4); + + for (let i = 0; i < this.address4.groups; i++) { + if (/^0[0-9]+/.test(this.address4.parsedAddress[i])) { + throw new AddressError( + "IPv4 addresses can't have leading zeroes.", + address.replace( + constants4.RE_ADDRESS, + this.address4.parsedAddress.map(spanLeadingZeroes4).join('.'), + ), + ); + } + } + + this.v4 = true; + + groups[groups.length - 1] = this.address4.toGroup6(); + + address = groups.join(':'); + } + + return address; + } + + // TODO: Make private? + parse(address: string): string[] { + address = this.parse4in6(address); + + const badCharacters = address.match(constants6.RE_BAD_CHARACTERS); + + if (badCharacters) { + throw new AddressError( + `Bad character${ + badCharacters.length > 1 ? 's' : '' + } detected in address: ${badCharacters.join('')}`, + address.replace(constants6.RE_BAD_CHARACTERS, '$1'), + ); + } + + const badAddress = address.match(constants6.RE_BAD_ADDRESS); + + if (badAddress) { + throw new AddressError( + `Address failed regex: ${badAddress.join('')}`, + address.replace(constants6.RE_BAD_ADDRESS, '$1'), + ); + } + + let groups: string[] = []; + + const halves = address.split('::'); + + if (halves.length === 2) { + let first = halves[0].split(':'); + let last = halves[1].split(':'); + + if (first.length === 1 && first[0] === '') { + first = []; + } + + if (last.length === 1 && last[0] === '') { + last = []; + } + + const remaining = this.groups - (first.length + last.length); + + if (!remaining) { + throw new AddressError('Error parsing groups'); + } + + this.elidedGroups = remaining; + + this.elisionBegin = first.length; + this.elisionEnd = first.length + this.elidedGroups; + + groups = groups.concat(first); + + for (let i = 0; i < remaining; i++) { + groups.push('0'); + } + + groups = groups.concat(last); + } else if (halves.length === 1) { + groups = address.split(':'); + + this.elidedGroups = 0; + } else { + throw new AddressError('Too many :: groups found'); + } + + groups = groups.map((group: string) => parseInt(group, 16).toString(16)); + + if (groups.length !== this.groups) { + throw new AddressError('Incorrect number of groups found'); + } + + return groups; + } + + /** + * Return the canonical form of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + canonicalForm(): string { + return this.parsedAddress.map(paddedHex).join(':'); + } + + /** + * Return the decimal form of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + decimal(): string { + return this.parsedAddress.map((n) => parseInt(n, 16).toString(10).padStart(5, '0')).join(':'); + } + + /** + * Return the address as a BigInt + * @memberof Address6 + * @instance + * @returns {bigint} + */ + bigInt(): bigint { + return BigInt(`0x${this.parsedAddress.map(paddedHex).join('')}`); + } + + /** + * Return the last two groups of this address as an IPv4 address string + * @memberof Address6 + * @instance + * @returns {Address4} + * @example + * var address = new Address6('2001:4860:4001::1825:bf11'); + * address.to4().correctForm(); // '24.37.191.17' + */ + to4(): Address4 { + const binary = this.binaryZeroPad().split(''); + + return Address4.fromHex(BigInt(`0b${binary.slice(96, 128).join('')}`).toString(16)); + } + + /** + * Return the v4-in-v6 form of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + to4in6(): string { + const address4 = this.to4(); + const address6 = new Address6(this.parsedAddress.slice(0, 6).join(':'), 6); + + const correct = address6.correctForm(); + + let infix = ''; + + if (!/:$/.test(correct)) { + infix = ':'; + } + + return correct + infix + address4.address; + } + + /** + * Return an object containing the Teredo properties of the address + * @memberof Address6 + * @instance + * @returns {Object} + */ + inspectTeredo(): TeredoProperties { + /* + - Bits 0 to 31 are set to the Teredo prefix (normally 2001:0000::/32). + - Bits 32 to 63 embed the primary IPv4 address of the Teredo server that + is used. + - Bits 64 to 79 can be used to define some flags. Currently only the + higher order bit is used; it is set to 1 if the Teredo client is + located behind a cone NAT, 0 otherwise. For Microsoft's Windows Vista + and Windows Server 2008 implementations, more bits are used. In those + implementations, the format for these 16 bits is "CRAAAAUG AAAAAAAA", + where "C" remains the "Cone" flag. The "R" bit is reserved for future + use. The "U" bit is for the Universal/Local flag (set to 0). The "G" bit + is Individual/Group flag (set to 0). The A bits are set to a 12-bit + randomly generated number chosen by the Teredo client to introduce + additional protection for the Teredo node against IPv6-based scanning + attacks. + - Bits 80 to 95 contains the obfuscated UDP port number. This is the + port number that is mapped by the NAT to the Teredo client with all + bits inverted. + - Bits 96 to 127 contains the obfuscated IPv4 address. This is the + public IPv4 address of the NAT with all bits inverted. + */ + const prefix = this.getBitsBase16(0, 32); + + const bitsForUdpPort: bigint = this.getBits(80, 96); + // eslint-disable-next-line no-bitwise + const udpPort = (bitsForUdpPort ^ BigInt('0xffff')).toString(); + + const server4 = Address4.fromHex(this.getBitsBase16(32, 64)); + + const bitsForClient4 = this.getBits(96, 128); + // eslint-disable-next-line no-bitwise + const client4 = Address4.fromHex((bitsForClient4 ^ BigInt('0xffffffff')).toString(16)); + + const flagsBase2 = this.getBitsBase2(64, 80); + + const coneNat = testBit(flagsBase2, 15); + const reserved = testBit(flagsBase2, 14); + const groupIndividual = testBit(flagsBase2, 8); + const universalLocal = testBit(flagsBase2, 9); + const nonce = BigInt(`0b${flagsBase2.slice(2, 6) + flagsBase2.slice(8, 16)}`).toString(10); + + return { + prefix: `${prefix.slice(0, 4)}:${prefix.slice(4, 8)}`, + server4: server4.address, + client4: client4.address, + flags: flagsBase2, + coneNat, + microsoft: { + reserved, + universalLocal, + groupIndividual, + nonce, + }, + udpPort, + }; + } + + /** + * Return an object containing the 6to4 properties of the address + * @memberof Address6 + * @instance + * @returns {Object} + */ + inspect6to4(): SixToFourProperties { + /* + - Bits 0 to 15 are set to the 6to4 prefix (2002::/16). + - Bits 16 to 48 embed the IPv4 address of the 6to4 gateway that is used. + */ + + const prefix = this.getBitsBase16(0, 16); + + const gateway = Address4.fromHex(this.getBitsBase16(16, 48)); + + return { + prefix: prefix.slice(0, 4), + gateway: gateway.address, + }; + } + + /** + * Return a v6 6to4 address from a v6 v4inv6 address + * @memberof Address6 + * @instance + * @returns {Address6} + */ + to6to4(): Address6 | null { + if (!this.is4()) { + return null; + } + + const addr6to4 = [ + '2002', + this.getBitsBase16(96, 112), + this.getBitsBase16(112, 128), + '', + '/16', + ].join(':'); + + return new Address6(addr6to4); + } + + /** + * Return a byte array + * @memberof Address6 + * @instance + * @returns {Array} + */ + toByteArray(): number[] { + const valueWithoutPadding = this.bigInt().toString(16); + const leadingPad = '0'.repeat(valueWithoutPadding.length % 2); + + const value = `${leadingPad}${valueWithoutPadding}`; + + const bytes = []; + for (let i = 0, length = value.length; i < length; i += 2) { + bytes.push(parseInt(value.substring(i, i + 2), 16)); + } + + return bytes; + } + + /** + * Return an unsigned byte array + * @memberof Address6 + * @instance + * @returns {Array} + */ + toUnsignedByteArray(): number[] { + return this.toByteArray().map(unsignByte); + } + + /** + * Convert a byte array to an Address6 object + * @memberof Address6 + * @static + * @returns {Address6} + */ + static fromByteArray(bytes: Array): Address6 { + return this.fromUnsignedByteArray(bytes.map(unsignByte)); + } + + /** + * Convert an unsigned byte array to an Address6 object + * @memberof Address6 + * @static + * @returns {Address6} + */ + static fromUnsignedByteArray(bytes: Array): Address6 { + const BYTE_MAX = BigInt('256'); + let result = BigInt('0'); + let multiplier = BigInt('1'); + + for (let i = bytes.length - 1; i >= 0; i--) { + result += multiplier * BigInt(bytes[i].toString(10)); + + multiplier *= BYTE_MAX; + } + + return Address6.fromBigInt(result); + } + + // #region Attributes + /** + * Returns true if the given address is in the subnet of the current address + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isInSubnet = common.isInSubnet; + + /** + * Returns true if the address is correct, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isCorrect = common.isCorrect(constants6.BITS); + + /** + * Returns true if the address is in the canonical form, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isCanonical(): boolean { + return this.addressMinusSuffix === this.canonicalForm(); + } + + /** + * Returns true if the address is a link local address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isLinkLocal(): boolean { + // Zeroes are required, i.e. we can't check isInSubnet with 'fe80::/10' + if ( + this.getBitsBase2(0, 64) === + '1111111010000000000000000000000000000000000000000000000000000000' + ) { + return true; + } + + return false; + } + + /** + * Returns true if the address is a multicast address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isMulticast(): boolean { + return this.getType() === 'Multicast'; + } + + /** + * Returns true if the address is a v4-in-v6 address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + is4(): boolean { + return this.v4; + } + + /** + * Returns true if the address is a Teredo address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isTeredo(): boolean { + return this.isInSubnet(new Address6('2001::/32')); + } + + /** + * Returns true if the address is a 6to4 address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + is6to4(): boolean { + return this.isInSubnet(new Address6('2002::/16')); + } + + /** + * Returns true if the address is a loopback address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isLoopback(): boolean { + return this.getType() === 'Loopback'; + } + // #endregion + + // #region HTML + /** + * @returns {String} the address in link form with a default port of 80 + */ + href(optionalPort?: number | string): string { + if (optionalPort === undefined) { + optionalPort = ''; + } else { + optionalPort = `:${optionalPort}`; + } + + return `http://[${this.correctForm()}]${optionalPort}/`; + } + + /** + * @returns {String} a link suitable for conveying the address via a URL hash + */ + link(options?: { className?: string; prefix?: string; v4?: boolean }): string { + if (!options) { + options = {}; + } + + if (options.className === undefined) { + options.className = ''; + } + + if (options.prefix === undefined) { + options.prefix = '/#address='; + } + + if (options.v4 === undefined) { + options.v4 = false; + } + + let formFunction = this.correctForm; + + if (options.v4) { + formFunction = this.to4in6; + } + + const form = formFunction.call(this); + + if (options.className) { + return `${form}`; + } + + return `${form}`; + } + + /** + * Groups an address + * @returns {String} + */ + group(): string { + if (this.elidedGroups === 0) { + // The simple case + return helpers.simpleGroup(this.address).join(':'); + } + + assert(typeof this.elidedGroups === 'number'); + assert(typeof this.elisionBegin === 'number'); + + // The elided case + const output = []; + + const [left, right] = this.address.split('::'); + + if (left.length) { + output.push(...helpers.simpleGroup(left)); + } else { + output.push(''); + } + + const classes = ['hover-group']; + + for (let i = this.elisionBegin; i < this.elisionBegin + this.elidedGroups; i++) { + classes.push(`group-${i}`); + } + + output.push(``); + + if (right.length) { + output.push(...helpers.simpleGroup(right, this.elisionEnd)); + } else { + output.push(''); + } + + if (this.is4()) { + assert(this.address4 instanceof Address4); + + output.pop(); + output.push(this.address4.groupForV6()); + } + + return output.join(':'); + } + // #endregion + + // #region Regular expressions + /** + * Generate a regular expression string that can be used to find or validate + * all variations of this address + * @memberof Address6 + * @instance + * @param {boolean} substringSearch + * @returns {string} + */ + regularExpressionString(this: Address6, substringSearch: boolean = false): string { + let output: string[] = []; + + // TODO: revisit why this is necessary + const address6 = new Address6(this.correctForm()); + + if (address6.elidedGroups === 0) { + // The simple case + output.push(simpleRegularExpression(address6.parsedAddress)); + } else if (address6.elidedGroups === constants6.GROUPS) { + // A completely elided address + output.push(possibleElisions(constants6.GROUPS)); + } else { + // A partially elided address + const halves = address6.address.split('::'); + + if (halves[0].length) { + output.push(simpleRegularExpression(halves[0].split(':'))); + } + + assert(typeof address6.elidedGroups === 'number'); + + output.push( + possibleElisions(address6.elidedGroups, halves[0].length !== 0, halves[1].length !== 0), + ); + + if (halves[1].length) { + output.push(simpleRegularExpression(halves[1].split(':'))); + } + + output = [output.join(':')]; + } + + if (!substringSearch) { + output = [ + '(?=^|', + ADDRESS_BOUNDARY, + '|[^\\w\\:])(', + ...output, + ')(?=[^\\w\\:]|', + ADDRESS_BOUNDARY, + '|$)', + ]; + } + + return output.join(''); + } + + /** + * Generate a regular expression that can be used to find or validate all + * variations of this address. + * @memberof Address6 + * @instance + * @param {boolean} substringSearch + * @returns {RegExp} + */ + regularExpression(this: Address6, substringSearch: boolean = false): RegExp { + return new RegExp(this.regularExpressionString(substringSearch), 'i'); + } + // #endregion +} diff --git a/food-ordering-app/server/node_modules/ip-address/src/v4/constants.ts b/food-ordering-app/server/node_modules/ip-address/src/v4/constants.ts new file mode 100644 index 000000000..73c32f1fd --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/src/v4/constants.ts @@ -0,0 +1,7 @@ +export const BITS = 32; +export const GROUPS = 4; + +export const RE_ADDRESS = + /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/g; + +export const RE_SUBNET_STRING = /\/\d{1,2}$/; diff --git a/food-ordering-app/server/node_modules/ip-address/src/v6/constants.ts b/food-ordering-app/server/node_modules/ip-address/src/v6/constants.ts new file mode 100644 index 000000000..e23bfa56f --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/src/v6/constants.ts @@ -0,0 +1,79 @@ +export const BITS = 128; +export const GROUPS = 8; + +/** + * Represents IPv6 address scopes + * @memberof Address6 + * @static + */ +export const SCOPES: { [key: number]: string | undefined } = { + 0: 'Reserved', + 1: 'Interface local', + 2: 'Link local', + 4: 'Admin local', + 5: 'Site local', + 8: 'Organization local', + 14: 'Global', + 15: 'Reserved', +} as const; + +/** + * Represents IPv6 address types + * @memberof Address6 + * @static + */ +export const TYPES: { [key: string]: string | undefined } = { + 'ff01::1/128': 'Multicast (All nodes on this interface)', + 'ff01::2/128': 'Multicast (All routers on this interface)', + 'ff02::1/128': 'Multicast (All nodes on this link)', + 'ff02::2/128': 'Multicast (All routers on this link)', + 'ff05::2/128': 'Multicast (All routers in this site)', + 'ff02::5/128': 'Multicast (OSPFv3 AllSPF routers)', + 'ff02::6/128': 'Multicast (OSPFv3 AllDR routers)', + 'ff02::9/128': 'Multicast (RIP routers)', + 'ff02::a/128': 'Multicast (EIGRP routers)', + 'ff02::d/128': 'Multicast (PIM routers)', + 'ff02::16/128': 'Multicast (MLDv2 reports)', + 'ff01::fb/128': 'Multicast (mDNSv6)', + 'ff02::fb/128': 'Multicast (mDNSv6)', + 'ff05::fb/128': 'Multicast (mDNSv6)', + 'ff02::1:2/128': 'Multicast (All DHCP servers and relay agents on this link)', + 'ff05::1:2/128': 'Multicast (All DHCP servers and relay agents in this site)', + 'ff02::1:3/128': 'Multicast (All DHCP servers on this link)', + 'ff05::1:3/128': 'Multicast (All DHCP servers in this site)', + '::/128': 'Unspecified', + '::1/128': 'Loopback', + 'ff00::/8': 'Multicast', + 'fe80::/10': 'Link-local unicast', +} as const; + +/** + * A regular expression that matches bad characters in an IPv6 address + * @memberof Address6 + * @static + */ +export const RE_BAD_CHARACTERS = /([^0-9a-f:/%])/gi; + +/** + * A regular expression that matches an incorrect IPv6 address + * @memberof Address6 + * @static + */ +export const RE_BAD_ADDRESS = /([0-9a-f]{5,}|:{3,}|[^:]:$|^:[^:]|\/$)/gi; + +/** + * A regular expression that matches an IPv6 subnet + * @memberof Address6 + * @static + */ +export const RE_SUBNET_STRING = /\/\d{1,3}(?=%|$)/; + +/** + * A regular expression that matches an IPv6 zone + * @memberof Address6 + * @static + */ +export const RE_ZONE_STRING = /%.*$/; + +export const RE_URL = /^\[{0,1}([0-9a-f:]+)\]{0,1}/; +export const RE_URL_WITH_PORT = /\[([0-9a-f:]+)\]:([0-9]{1,5})/; diff --git a/food-ordering-app/server/node_modules/ip-address/src/v6/helpers.ts b/food-ordering-app/server/node_modules/ip-address/src/v6/helpers.ts new file mode 100644 index 000000000..e40074c9f --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/src/v6/helpers.ts @@ -0,0 +1,48 @@ +/** + * @returns {String} the string with all zeroes contained in a + */ +export function spanAllZeroes(s: string): string { + return s.replace(/(0+)/g, '$1'); +} + +/** + * @returns {String} the string with each character contained in a + */ +export function spanAll(s: string, offset: number = 0): string { + const letters = s.split(''); + + return letters + .map( + (n, i) => `${spanAllZeroes(n)}`, + ) + .join(''); +} + +function spanLeadingZeroesSimple(group: string): string { + return group.replace(/^(0+)/, '$1'); +} + +/** + * @returns {String} the string with leading zeroes contained in a + */ +export function spanLeadingZeroes(address: string): string { + const groups = address.split(':'); + + return groups.map((g) => spanLeadingZeroesSimple(g)).join(':'); +} + +/** + * Groups an address + * @returns {String} a grouped address + */ +export function simpleGroup(addressString: string, offset: number = 0): string[] { + const groups = addressString.split(':'); + + return groups.map((g, i) => { + if (/group-v4/.test(g)) { + return g; + } + + return `${spanLeadingZeroesSimple(g)}`; + }); +} diff --git a/food-ordering-app/server/node_modules/ip-address/src/v6/regular-expressions.ts b/food-ordering-app/server/node_modules/ip-address/src/v6/regular-expressions.ts new file mode 100644 index 000000000..a511b8499 --- /dev/null +++ b/food-ordering-app/server/node_modules/ip-address/src/v6/regular-expressions.ts @@ -0,0 +1,94 @@ +import * as v6 from './constants'; + +export function groupPossibilities(possibilities: string[]): string { + return `(${possibilities.join('|')})`; +} + +export function padGroup(group: string): string { + if (group.length < 4) { + return `0{0,${4 - group.length}}${group}`; + } + + return group; +} + +export const ADDRESS_BOUNDARY = '[^A-Fa-f0-9:]'; + +export function simpleRegularExpression(groups: string[]) { + const zeroIndexes: number[] = []; + + groups.forEach((group, i) => { + const groupInteger = parseInt(group, 16); + + if (groupInteger === 0) { + zeroIndexes.push(i); + } + }); + + // You can technically elide a single 0, this creates the regular expressions + // to match that eventuality + const possibilities = zeroIndexes.map((zeroIndex) => + groups + .map((group, i) => { + if (i === zeroIndex) { + const elision = i === 0 || i === v6.GROUPS - 1 ? ':' : ''; + + return groupPossibilities([padGroup(group), elision]); + } + + return padGroup(group); + }) + .join(':'), + ); + + // The simplest case + possibilities.push(groups.map(padGroup).join(':')); + + return groupPossibilities(possibilities); +} + +export function possibleElisions( + elidedGroups: number, + moreLeft?: boolean, + moreRight?: boolean, +): string { + const left = moreLeft ? '' : ':'; + const right = moreRight ? '' : ':'; + + const possibilities = []; + + // 1. elision of everything (::) + if (!moreLeft && !moreRight) { + possibilities.push('::'); + } + + // 2. complete elision of the middle + if (moreLeft && moreRight) { + possibilities.push(''); + } + + if ((moreRight && !moreLeft) || (!moreRight && moreLeft)) { + // 3. complete elision of one side + possibilities.push(':'); + } + + // 4. elision from the left side + possibilities.push(`${left}(:0{1,4}){1,${elidedGroups - 1}}`); + + // 5. elision from the right side + possibilities.push(`(0{1,4}:){1,${elidedGroups - 1}}${right}`); + + // 6. no elision + possibilities.push(`(0{1,4}:){${elidedGroups - 1}}0{1,4}`); + + // 7. elision (including sloppy elision) from the middle + for (let groups = 1; groups < elidedGroups - 1; groups++) { + for (let position = 1; position < elidedGroups - groups; position++) { + possibilities.push( + `(0{1,4}:){${position}}:(0{1,4}:){${elidedGroups - position - groups - 1}}0{1,4}`, + ); + } + } + + return groupPossibilities(possibilities); +} diff --git a/food-ordering-app/server/node_modules/ip/README.md b/food-ordering-app/server/node_modules/ip/README.md deleted file mode 100644 index 22e5819ff..000000000 --- a/food-ordering-app/server/node_modules/ip/README.md +++ /dev/null @@ -1,90 +0,0 @@ -# IP -[![](https://badge.fury.io/js/ip.svg)](https://www.npmjs.com/package/ip) - -IP address utilities for node.js - -## Installation - -### npm -```shell -npm install ip -``` - -### git - -```shell -git clone https://github.com/indutny/node-ip.git -``` - -## Usage -Get your ip address, compare ip addresses, validate ip addresses, etc. - -```js -var ip = require('ip'); - -ip.address() // my ip address -ip.isEqual('::1', '::0:1'); // true -ip.toBuffer('127.0.0.1') // Buffer([127, 0, 0, 1]) -ip.toString(new Buffer([127, 0, 0, 1])) // 127.0.0.1 -ip.fromPrefixLen(24) // 255.255.255.0 -ip.mask('192.168.1.134', '255.255.255.0') // 192.168.1.0 -ip.cidr('192.168.1.134/26') // 192.168.1.128 -ip.not('255.255.255.0') // 0.0.0.255 -ip.or('192.168.1.134', '0.0.0.255') // 192.168.1.255 -ip.isPrivate('127.0.0.1') // true -ip.isV4Format('127.0.0.1'); // true -ip.isV6Format('::ffff:127.0.0.1'); // true - -// operate on buffers in-place -var buf = new Buffer(128); -var offset = 64; -ip.toBuffer('127.0.0.1', buf, offset); // [127, 0, 0, 1] at offset 64 -ip.toString(buf, offset, 4); // '127.0.0.1' - -// subnet information -ip.subnet('192.168.1.134', '255.255.255.192') -// { networkAddress: '192.168.1.128', -// firstAddress: '192.168.1.129', -// lastAddress: '192.168.1.190', -// broadcastAddress: '192.168.1.191', -// subnetMask: '255.255.255.192', -// subnetMaskLength: 26, -// numHosts: 62, -// length: 64, -// contains: function(addr){...} } -ip.cidrSubnet('192.168.1.134/26') -// Same as previous. - -// range checking -ip.cidrSubnet('192.168.1.134/26').contains('192.168.1.190') // true - - -// ipv4 long conversion -ip.toLong('127.0.0.1'); // 2130706433 -ip.fromLong(2130706433); // '127.0.0.1' -``` - -### License - -This software is licensed under the MIT License. - -Copyright Fedor Indutny, 2012. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to permit -persons to whom the Software is furnished to do so, subject to the -following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/food-ordering-app/server/node_modules/ip/lib/ip.js b/food-ordering-app/server/node_modules/ip/lib/ip.js deleted file mode 100644 index 5b5ccc246..000000000 --- a/food-ordering-app/server/node_modules/ip/lib/ip.js +++ /dev/null @@ -1,427 +0,0 @@ -var ip = exports; -var { Buffer } = require('buffer'); -var os = require('os'); - -ip.toBuffer = function (ip, buff, offset) { - offset = ~~offset; - - var result; - - if (this.isV4Format(ip)) { - result = buff || new Buffer(offset + 4); - ip.split(/\./g).map((byte) => { - result[offset++] = parseInt(byte, 10) & 0xff; - }); - } else if (this.isV6Format(ip)) { - var sections = ip.split(':', 8); - - var i; - for (i = 0; i < sections.length; i++) { - var isv4 = this.isV4Format(sections[i]); - var v4Buffer; - - if (isv4) { - v4Buffer = this.toBuffer(sections[i]); - sections[i] = v4Buffer.slice(0, 2).toString('hex'); - } - - if (v4Buffer && ++i < 8) { - sections.splice(i, 0, v4Buffer.slice(2, 4).toString('hex')); - } - } - - if (sections[0] === '') { - while (sections.length < 8) sections.unshift('0'); - } else if (sections[sections.length - 1] === '') { - while (sections.length < 8) sections.push('0'); - } else if (sections.length < 8) { - for (i = 0; i < sections.length && sections[i] !== ''; i++); - var argv = [i, 1]; - for (i = 9 - sections.length; i > 0; i--) { - argv.push('0'); - } - sections.splice.apply(sections, argv); - } - - result = buff || new Buffer(offset + 16); - for (i = 0; i < sections.length; i++) { - var word = parseInt(sections[i], 16); - result[offset++] = (word >> 8) & 0xff; - result[offset++] = word & 0xff; - } - } - - if (!result) { - throw Error(`Invalid ip address: ${ip}`); - } - - return result; -}; - -ip.toString = function (buff, offset, length) { - offset = ~~offset; - length = length || (buff.length - offset); - - var result = []; - var i; - if (length === 4) { - // IPv4 - for (i = 0; i < length; i++) { - result.push(buff[offset + i]); - } - result = result.join('.'); - } else if (length === 16) { - // IPv6 - for (i = 0; i < length; i += 2) { - result.push(buff.readUInt16BE(offset + i).toString(16)); - } - result = result.join(':'); - result = result.replace(/(^|:)0(:0)*:0(:|$)/, '$1::$3'); - result = result.replace(/:{3,4}/, '::'); - } - - return result; -}; - -var ipv4Regex = /^(\d{1,3}\.){3,3}\d{1,3}$/; -var ipv6Regex = /^(::)?(((\d{1,3}\.){3}(\d{1,3}){1})?([0-9a-f]){0,4}:{0,2}){1,8}(::)?$/i; - -ip.isV4Format = function (ip) { - return ipv4Regex.test(ip); -}; - -ip.isV6Format = function (ip) { - return ipv6Regex.test(ip); -}; - -function _normalizeFamily(family) { - if (family === 4) { - return 'ipv4'; - } - if (family === 6) { - return 'ipv6'; - } - return family ? family.toLowerCase() : 'ipv4'; -} - -ip.fromPrefixLen = function (prefixlen, family) { - if (prefixlen > 32) { - family = 'ipv6'; - } else { - family = _normalizeFamily(family); - } - - var len = 4; - if (family === 'ipv6') { - len = 16; - } - var buff = new Buffer(len); - - for (var i = 0, n = buff.length; i < n; ++i) { - var bits = 8; - if (prefixlen < 8) { - bits = prefixlen; - } - prefixlen -= bits; - - buff[i] = ~(0xff >> bits) & 0xff; - } - - return ip.toString(buff); -}; - -ip.mask = function (addr, mask) { - addr = ip.toBuffer(addr); - mask = ip.toBuffer(mask); - - var result = new Buffer(Math.max(addr.length, mask.length)); - - // Same protocol - do bitwise and - var i; - if (addr.length === mask.length) { - for (i = 0; i < addr.length; i++) { - result[i] = addr[i] & mask[i]; - } - } else if (mask.length === 4) { - // IPv6 address and IPv4 mask - // (Mask low bits) - for (i = 0; i < mask.length; i++) { - result[i] = addr[addr.length - 4 + i] & mask[i]; - } - } else { - // IPv6 mask and IPv4 addr - for (i = 0; i < result.length - 6; i++) { - result[i] = 0; - } - - // ::ffff:ipv4 - result[10] = 0xff; - result[11] = 0xff; - for (i = 0; i < addr.length; i++) { - result[i + 12] = addr[i] & mask[i + 12]; - } - i += 12; - } - for (; i < result.length; i++) { - result[i] = 0; - } - - return ip.toString(result); -}; - -ip.cidr = function (cidrString) { - var cidrParts = cidrString.split('/'); - - var addr = cidrParts[0]; - if (cidrParts.length !== 2) { - throw new Error(`invalid CIDR subnet: ${addr}`); - } - - var mask = ip.fromPrefixLen(parseInt(cidrParts[1], 10)); - - return ip.mask(addr, mask); -}; - -ip.subnet = function (addr, mask) { - var networkAddress = ip.toLong(ip.mask(addr, mask)); - - // Calculate the mask's length. - var maskBuffer = ip.toBuffer(mask); - var maskLength = 0; - - for (var i = 0; i < maskBuffer.length; i++) { - if (maskBuffer[i] === 0xff) { - maskLength += 8; - } else { - var octet = maskBuffer[i] & 0xff; - while (octet) { - octet = (octet << 1) & 0xff; - maskLength++; - } - } - } - - var numberOfAddresses = Math.pow(2, 32 - maskLength); - - return { - networkAddress: ip.fromLong(networkAddress), - firstAddress: numberOfAddresses <= 2 - ? ip.fromLong(networkAddress) - : ip.fromLong(networkAddress + 1), - lastAddress: numberOfAddresses <= 2 - ? ip.fromLong(networkAddress + numberOfAddresses - 1) - : ip.fromLong(networkAddress + numberOfAddresses - 2), - broadcastAddress: ip.fromLong(networkAddress + numberOfAddresses - 1), - subnetMask: mask, - subnetMaskLength: maskLength, - numHosts: numberOfAddresses <= 2 - ? numberOfAddresses : numberOfAddresses - 2, - length: numberOfAddresses, - contains(other) { - return networkAddress === ip.toLong(ip.mask(other, mask)); - }, - }; -}; - -ip.cidrSubnet = function (cidrString) { - var cidrParts = cidrString.split('/'); - - var addr = cidrParts[0]; - if (cidrParts.length !== 2) { - throw new Error(`invalid CIDR subnet: ${addr}`); - } - - var mask = ip.fromPrefixLen(parseInt(cidrParts[1], 10)); - - return ip.subnet(addr, mask); -}; - -ip.not = function (addr) { - var buff = ip.toBuffer(addr); - for (var i = 0; i < buff.length; i++) { - buff[i] = 0xff ^ buff[i]; - } - return ip.toString(buff); -}; - -ip.or = function (a, b) { - var i; - - a = ip.toBuffer(a); - b = ip.toBuffer(b); - - // same protocol - if (a.length === b.length) { - for (i = 0; i < a.length; ++i) { - a[i] |= b[i]; - } - return ip.toString(a); - - // mixed protocols - } - var buff = a; - var other = b; - if (b.length > a.length) { - buff = b; - other = a; - } - - var offset = buff.length - other.length; - for (i = offset; i < buff.length; ++i) { - buff[i] |= other[i - offset]; - } - - return ip.toString(buff); -}; - -ip.isEqual = function (a, b) { - var i; - - a = ip.toBuffer(a); - b = ip.toBuffer(b); - - // Same protocol - if (a.length === b.length) { - for (i = 0; i < a.length; i++) { - if (a[i] !== b[i]) return false; - } - return true; - } - - // Swap - if (b.length === 4) { - var t = b; - b = a; - a = t; - } - - // a - IPv4, b - IPv6 - for (i = 0; i < 10; i++) { - if (b[i] !== 0) return false; - } - - var word = b.readUInt16BE(10); - if (word !== 0 && word !== 0xffff) return false; - - for (i = 0; i < 4; i++) { - if (a[i] !== b[i + 12]) return false; - } - - return true; -}; - -ip.isPrivate = function (addr) { - return /^(::f{4}:)?10\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/i - .test(addr) - || /^(::f{4}:)?192\.168\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(addr) - || /^(::f{4}:)?172\.(1[6-9]|2\d|30|31)\.([0-9]{1,3})\.([0-9]{1,3})$/i - .test(addr) - || /^(::f{4}:)?127\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(addr) - || /^(::f{4}:)?169\.254\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(addr) - || /^f[cd][0-9a-f]{2}:/i.test(addr) - || /^fe80:/i.test(addr) - || /^::1$/.test(addr) - || /^::$/.test(addr); -}; - -ip.isPublic = function (addr) { - return !ip.isPrivate(addr); -}; - -ip.isLoopback = function (addr) { - return /^(::f{4}:)?127\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/ - .test(addr) - || /^fe80::1$/.test(addr) - || /^::1$/.test(addr) - || /^::$/.test(addr); -}; - -ip.loopback = function (family) { - // - // Default to `ipv4` - // - family = _normalizeFamily(family); - - if (family !== 'ipv4' && family !== 'ipv6') { - throw new Error('family must be ipv4 or ipv6'); - } - - return family === 'ipv4' ? '127.0.0.1' : 'fe80::1'; -}; - -// -// ### function address (name, family) -// #### @name {string|'public'|'private'} **Optional** Name or security -// of the network interface. -// #### @family {ipv4|ipv6} **Optional** IP family of the address (defaults -// to ipv4). -// -// Returns the address for the network interface on the current system with -// the specified `name`: -// * String: First `family` address of the interface. -// If not found see `undefined`. -// * 'public': the first public ip address of family. -// * 'private': the first private ip address of family. -// * undefined: First address with `ipv4` or loopback address `127.0.0.1`. -// -ip.address = function (name, family) { - var interfaces = os.networkInterfaces(); - - // - // Default to `ipv4` - // - family = _normalizeFamily(family); - - // - // If a specific network interface has been named, - // return the address. - // - if (name && name !== 'private' && name !== 'public') { - var res = interfaces[name].filter((details) => { - var itemFamily = _normalizeFamily(details.family); - return itemFamily === family; - }); - if (res.length === 0) { - return undefined; - } - return res[0].address; - } - - var all = Object.keys(interfaces).map((nic) => { - // - // Note: name will only be `public` or `private` - // when this is called. - // - var addresses = interfaces[nic].filter((details) => { - details.family = _normalizeFamily(details.family); - if (details.family !== family || ip.isLoopback(details.address)) { - return false; - } if (!name) { - return true; - } - - return name === 'public' ? ip.isPrivate(details.address) - : ip.isPublic(details.address); - }); - - return addresses.length ? addresses[0].address : undefined; - }).filter(Boolean); - - return !all.length ? ip.loopback(family) : all[0]; -}; - -ip.toLong = function (ip) { - var ipl = 0; - ip.split('.').forEach((octet) => { - ipl <<= 8; - ipl += parseInt(octet); - }); - return (ipl >>> 0); -}; - -ip.fromLong = function (ipl) { - return (`${ipl >>> 24}.${ - ipl >> 16 & 255}.${ - ipl >> 8 & 255}.${ - ipl & 255}`); -}; diff --git a/food-ordering-app/server/node_modules/ip/package.json b/food-ordering-app/server/node_modules/ip/package.json deleted file mode 100644 index 70e1a4f02..000000000 --- a/food-ordering-app/server/node_modules/ip/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "ip", - "version": "1.1.8", - "author": "Fedor Indutny ", - "homepage": "https://github.com/indutny/node-ip", - "repository": { - "type": "git", - "url": "http://github.com/indutny/node-ip.git" - }, - "files": [ - "lib", - "README.md" - ], - "main": "lib/ip", - "devDependencies": { - "eslint": "^8.15.0", - "mocha": "^10.0.0" - }, - "scripts": { - "lint": "eslint lib/*.js test/*.js", - "test": "npm run lint && mocha --reporter spec test/*-test.js", - "fix": "npm run lint -- --fix" - }, - "license": "MIT" -} diff --git a/food-ordering-app/server/node_modules/kareem/.eslintrc.json b/food-ordering-app/server/node_modules/kareem/.eslintrc.json deleted file mode 100644 index 3fee7aed1..000000000 --- a/food-ordering-app/server/node_modules/kareem/.eslintrc.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": [ - "@masteringjs" - ], - "parserOptions": { - "ecmaVersion": 2020 - }, - "env": { - "node": true, - "es6": true - }, - "rules": { - "no-var": "off", - "prefer-const": "off" - } -} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/kareem/.github/workflows/test.yml b/food-ordering-app/server/node_modules/kareem/.github/workflows/test.yml deleted file mode 100644 index ed306cb6a..000000000 --- a/food-ordering-app/server/node_modules/kareem/.github/workflows/test.yml +++ /dev/null @@ -1,47 +0,0 @@ -name: Test -on: - pull_request: - push: -permissions: - contents: read - -jobs: - test: - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - node: [12, 14, 16, 18] - os: [ubuntu-20.04] - name: Node ${{ matrix.node }} - steps: - - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 - - - name: Setup node - uses: actions/setup-node@5b52f097d36d4b0b2f94ed6de710023fbb8b2236 # v3.1.0 - with: - node-version: ${{ matrix.node }} - - - run: npm install - - - run: npm test - - lint: - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - node: [18] - os: [ubuntu-20.04] - name: Lint - steps: - - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 - - - name: Setup node - uses: actions/setup-node@5b52f097d36d4b0b2f94ed6de710023fbb8b2236 # v3.1.0 - with: - node-version: ${{ matrix.node }} - - - run: npm install - - - run: npm run lint \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/kareem/.travis.yml b/food-ordering-app/server/node_modules/kareem/.travis.yml deleted file mode 100644 index 0a388b901..000000000 --- a/food-ordering-app/server/node_modules/kareem/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ -language: node_js -node_js: - - "12" - - "10" - - "9" - - "8" - - "7" - - "6" - - "5" - - "4" -script: "npm run-script test-travis" -after_script: "npm install coveralls@2.10.0 && cat ./coverage/lcov.info | coveralls" diff --git a/food-ordering-app/server/node_modules/kareem/CHANGELOG.md b/food-ordering-app/server/node_modules/kareem/CHANGELOG.md deleted file mode 100644 index 02830dd1a..000000000 --- a/food-ordering-app/server/node_modules/kareem/CHANGELOG.md +++ /dev/null @@ -1,808 +0,0 @@ -# Changelog - - -## 2.4.0 (2022-06-13) - -* feat: add `overwriteResult()` and `skipWrappedFunction()` for more advanced control flow - - -## 2.3.4 (2022-02-10) - -* perf: various performance improvements #27 #24 #23 #22 #21 #20 - - -## 2.3.3 (2021-12-26) - -* fix: handle sync errors in `wrap()` - - -## 2.3.2 (2020-12-08) - -* fix: handle sync errors in pre hooks if there are multiple hooks - - -## 2.3.0 (2018-09-24) - -* chore(release): 2.2.3 ([c8f2695](https://github.com/vkarpov15/kareem/commit/c8f2695)) -* chore(release): 2.2.4 ([a377a4f](https://github.com/vkarpov15/kareem/commit/a377a4f)) -* chore(release): 2.2.5 ([5a495e3](https://github.com/vkarpov15/kareem/commit/5a495e3)) -* fix(filter): copy async pres correctly with `filter()` ([1b1ed8a](https://github.com/vkarpov15/kareem/commit/1b1ed8a)), closes [Automattic/mongoose#3054](https://github.com/Automattic/mongoose/issues/3054) -* feat: add filter() function ([1f641f4](https://github.com/vkarpov15/kareem/commit/1f641f4)) -* feat: support storing options on pre and post hooks ([59220b9](https://github.com/vkarpov15/kareem/commit/59220b9)) - - - - -## 2.2.3 (2018-09-10) - -* chore: release 2.2.3 ([af653a3](https://github.com/vkarpov15/kareem/commit/af653a3)) - - - - -## 2.2.2 (2018-09-10) - -* chore: release 2.2.2 ([3f0144d](https://github.com/vkarpov15/kareem/commit/3f0144d)) -* fix: allow merge() to not clone ([e628d65](https://github.com/vkarpov15/kareem/commit/e628d65)) - - - - -## 2.2.1 (2018-06-05) - -* chore: release 2.2.1 ([4625a64](https://github.com/vkarpov15/kareem/commit/4625a64)) -* chore: remove lockfile from git ([7f3e4e6](https://github.com/vkarpov15/kareem/commit/7f3e4e6)) -* fix: handle numAsync correctly when merging ([fef8e7e](https://github.com/vkarpov15/kareem/commit/fef8e7e)) -* test: repro issue with not copying numAsync ([952d9db](https://github.com/vkarpov15/kareem/commit/952d9db)) - - - - -## 2.2.0 (2018-06-05) - -* chore: release 2.2.0 ([ff9ad03](https://github.com/vkarpov15/kareem/commit/ff9ad03)) -* fix: use maps instead of objects for _pres and _posts so `toString()` doesn't get reported as having ([55df303](https://github.com/vkarpov15/kareem/commit/55df303)), closes [Automattic/mongoose#6538](https://github.com/Automattic/mongoose/issues/6538) - - - - -## 2.1.0 (2018-05-16) - -* chore: release 2.1.0 ([ba5f1bc](https://github.com/vkarpov15/kareem/commit/ba5f1bc)) -* feat: add option to check wrapped function return value for promises ([c9d7dd1](https://github.com/vkarpov15/kareem/commit/c9d7dd1)) -* refactor: use const in wrap() ([0fc21f9](https://github.com/vkarpov15/kareem/commit/0fc21f9)) - - - - -## 2.0.7 (2018-04-28) - -* chore: release 2.0.7 ([0bf91e6](https://github.com/vkarpov15/kareem/commit/0bf91e6)) -* feat: add `hasHooks()` ([225f18d](https://github.com/vkarpov15/kareem/commit/225f18d)), closes [Automattic/mongoose#6385](https://github.com/Automattic/mongoose/issues/6385) - - - - -## 2.0.6 (2018-03-22) - -* chore: release 2.0.6 ([f3d406b](https://github.com/vkarpov15/kareem/commit/f3d406b)) -* fix(wrap): ensure fast path still wraps function in `nextTick()` for chaining ([7000494](https://github.com/vkarpov15/kareem/commit/7000494)), closes [Automattic/mongoose#6250](https://github.com/Automattic/mongoose/issues/6250) [dsanel/mongoose-delete#36](https://github.com/dsanel/mongoose-delete/issues/36) - - - - -## 2.0.5 (2018-02-22) - -* chore: release 2.0.5 ([3286612](https://github.com/vkarpov15/kareem/commit/3286612)) -* perf(createWrapper): don't create wrapper if there are no hooks ([5afc5b9](https://github.com/vkarpov15/kareem/commit/5afc5b9)), closes [Automattic/mongoose#6126](https://github.com/Automattic/mongoose/issues/6126) - - - - -## 2.0.4 (2018-02-08) - -* chore: release 2.0.4 ([2ab0293](https://github.com/vkarpov15/kareem/commit/2ab0293)) - - - - -## 2.0.3 (2018-02-01) - -* chore: release 2.0.3 ([3c1abe5](https://github.com/vkarpov15/kareem/commit/3c1abe5)) -* fix: use process.nextTick() re: Automattic/mongoose#6074 ([e5bfe33](https://github.com/vkarpov15/kareem/commit/e5bfe33)), closes [Automattic/mongoose#6074](https://github.com/Automattic/mongoose/issues/6074) - - - - -## 2.0.2 (2018-01-24) - -* chore: fix license ([a9d755c](https://github.com/vkarpov15/kareem/commit/a9d755c)), closes [#10](https://github.com/vkarpov15/kareem/issues/10) -* chore: release 2.0.2 ([fe87ab6](https://github.com/vkarpov15/kareem/commit/fe87ab6)) - - - - -## 2.0.1 (2018-01-09) - -* chore: release 2.0.1 with lockfile bump ([09c44fb](https://github.com/vkarpov15/kareem/commit/09c44fb)) - - - - -## 2.0.0 (2018-01-09) - -* chore: bump marked re: security ([cc564a9](https://github.com/vkarpov15/kareem/commit/cc564a9)) -* chore: release 2.0.0 ([f511d1c](https://github.com/vkarpov15/kareem/commit/f511d1c)) - - - - -## 2.0.0-rc5 (2017-12-23) - -* chore: fix build on node 4+5 ([6dac5a4](https://github.com/vkarpov15/kareem/commit/6dac5a4)) -* chore: fix built on node 4 + 5 again ([434ef0a](https://github.com/vkarpov15/kareem/commit/434ef0a)) -* chore: release 2.0.0-rc5 ([25a32ee](https://github.com/vkarpov15/kareem/commit/25a32ee)) - - - - -## 2.0.0-rc4 (2017-12-22) - -* chore: release 2.0.0-rc4 ([49fc083](https://github.com/vkarpov15/kareem/commit/49fc083)) -* BREAKING CHANGE: deduplicate when merging hooks re: Automattic/mongoose#2945 ([d458573](https://github.com/vkarpov15/kareem/commit/d458573)), closes [Automattic/mongoose#2945](https://github.com/Automattic/mongoose/issues/2945) - - - - -## 2.0.0-rc3 (2017-12-22) - -* chore: release 2.0.0-rc3 ([adaaa00](https://github.com/vkarpov15/kareem/commit/adaaa00)) -* feat: support returning promises from middleware functions ([05b4480](https://github.com/vkarpov15/kareem/commit/05b4480)), closes [Automattic/mongoose#3779](https://github.com/Automattic/mongoose/issues/3779) - - - - -## 2.0.0-rc2 (2017-12-21) - -* chore: release 2.0.0-rc2 ([76325fa](https://github.com/vkarpov15/kareem/commit/76325fa)) -* fix: ensure next() and done() run in next tick ([6c20684](https://github.com/vkarpov15/kareem/commit/6c20684)) - - - - -## 2.0.0-rc1 (2017-12-21) - -* chore: improve test coverage re: Automattic/mongoose#3232 ([7b45cf0](https://github.com/vkarpov15/kareem/commit/7b45cf0)), closes [Automattic/mongoose#3232](https://github.com/Automattic/mongoose/issues/3232) -* chore: release 2.0.0-rc1 ([9b83f52](https://github.com/vkarpov15/kareem/commit/9b83f52)) -* BREAKING CHANGE: report sync exceptions as errors, only allow calling next() and done() once ([674adcc](https://github.com/vkarpov15/kareem/commit/674adcc)), closes [Automattic/mongoose#3483](https://github.com/Automattic/mongoose/issues/3483) - - - - -## 2.0.0-rc0 (2017-12-17) - -* chore: release 2.0.0-rc0 ([16b44b5](https://github.com/vkarpov15/kareem/commit/16b44b5)) -* BREAKING CHANGE: drop support for node < 4 ([9cbb8c7](https://github.com/vkarpov15/kareem/commit/9cbb8c7)) -* BREAKING CHANGE: remove useLegacyPost and add several new features ([6dd8531](https://github.com/vkarpov15/kareem/commit/6dd8531)), closes [Automattic/mongoose#3232](https://github.com/Automattic/mongoose/issues/3232) - - - - -## 1.5.0 (2017-07-20) - -* chore: release 1.5.0 ([9c491a0](https://github.com/vkarpov15/kareem/commit/9c491a0)) -* fix: improve post error handlers results ([9928dd5](https://github.com/vkarpov15/kareem/commit/9928dd5)), closes [Automattic/mongoose#5466](https://github.com/Automattic/mongoose/issues/5466) - - - - -## 1.4.2 (2017-07-06) - -* chore: release 1.4.2 ([8d14ac5](https://github.com/vkarpov15/kareem/commit/8d14ac5)) -* fix: correct args re: Automattic/mongoose#5405 ([3f28ae6](https://github.com/vkarpov15/kareem/commit/3f28ae6)), closes [Automattic/mongoose#5405](https://github.com/Automattic/mongoose/issues/5405) - - - - -## 1.4.1 (2017-04-25) - -* chore: release 1.4.1 ([5ecf0c2](https://github.com/vkarpov15/kareem/commit/5ecf0c2)) -* fix: handle numAsyncPres with clone() ([c72e857](https://github.com/vkarpov15/kareem/commit/c72e857)), closes [#8](https://github.com/vkarpov15/kareem/issues/8) -* test: repro #8 ([9b4d6b2](https://github.com/vkarpov15/kareem/commit/9b4d6b2)), closes [#8](https://github.com/vkarpov15/kareem/issues/8) - - - - -## 1.4.0 (2017-04-19) - -* chore: release 1.4.0 ([101c5f5](https://github.com/vkarpov15/kareem/commit/101c5f5)) -* feat: add merge() function ([285325e](https://github.com/vkarpov15/kareem/commit/285325e)) - - - - -## 1.3.0 (2017-03-26) - -* chore: release 1.3.0 ([f3a9e50](https://github.com/vkarpov15/kareem/commit/f3a9e50)) -* feat: pass function args to execPre ([4dd466d](https://github.com/vkarpov15/kareem/commit/4dd466d)) - - - - -## 1.2.1 (2017-02-03) - -* chore: release 1.2.1 ([d97081f](https://github.com/vkarpov15/kareem/commit/d97081f)) -* fix: filter out _kareemIgnored args for error handlers re: Automattic/mongoose#4925 ([ddc7aeb](https://github.com/vkarpov15/kareem/commit/ddc7aeb)), closes [Automattic/mongoose#4925](https://github.com/Automattic/mongoose/issues/4925) -* fix: make error handlers handle errors in pre hooks ([af38033](https://github.com/vkarpov15/kareem/commit/af38033)), closes [Automattic/mongoose#4927](https://github.com/Automattic/mongoose/issues/4927) - - - - -## 1.2.0 (2017-01-02) - -* chore: release 1.2.0 ([033225c](https://github.com/vkarpov15/kareem/commit/033225c)) -* chore: upgrade deps ([f9e9a09](https://github.com/vkarpov15/kareem/commit/f9e9a09)) -* feat: add _kareemIgnore re: Automattic/mongoose#4836 ([7957771](https://github.com/vkarpov15/kareem/commit/7957771)), closes [Automattic/mongoose#4836](https://github.com/Automattic/mongoose/issues/4836) - - - - -## 1.1.5 (2016-12-13) - -* chore: release 1.1.5 ([1a9f684](https://github.com/vkarpov15/kareem/commit/1a9f684)) -* fix: correct field name ([04a0e9d](https://github.com/vkarpov15/kareem/commit/04a0e9d)) - - - - -## 1.1.4 (2016-12-09) - -* chore: release 1.1.4 ([ece401c](https://github.com/vkarpov15/kareem/commit/ece401c)) -* chore: run tests on node 6 ([e0cb1cb](https://github.com/vkarpov15/kareem/commit/e0cb1cb)) -* fix: only copy own properties in clone() ([dfe28ce](https://github.com/vkarpov15/kareem/commit/dfe28ce)), closes [#7](https://github.com/vkarpov15/kareem/issues/7) - - - - -## 1.1.3 (2016-06-27) - -* chore: release 1.1.3 ([87171c8](https://github.com/vkarpov15/kareem/commit/87171c8)) -* fix: couple more issues with arg processing ([c65f523](https://github.com/vkarpov15/kareem/commit/c65f523)) - - - - -## 1.1.2 (2016-06-27) - -* chore: release 1.1.2 ([8e102b6](https://github.com/vkarpov15/kareem/commit/8e102b6)) -* fix: add early return ([4feda4e](https://github.com/vkarpov15/kareem/commit/4feda4e)) - - - - -## 1.1.1 (2016-06-27) - -* chore: release 1.1.1 ([8bb3050](https://github.com/vkarpov15/kareem/commit/8bb3050)) -* fix: skip error handlers if no error ([0eb3a44](https://github.com/vkarpov15/kareem/commit/0eb3a44)) - - - - -## 1.1.0 (2016-05-11) - -* chore: release 1.1.0 ([85332d9](https://github.com/vkarpov15/kareem/commit/85332d9)) -* chore: test on node 4 and node 5 ([1faefa1](https://github.com/vkarpov15/kareem/commit/1faefa1)) -* 100% coverage again ([c9aee4e](https://github.com/vkarpov15/kareem/commit/c9aee4e)) -* add support for error post hooks ([d378113](https://github.com/vkarpov15/kareem/commit/d378113)) -* basic setup for sync hooks #4 ([55aa081](https://github.com/vkarpov15/kareem/commit/55aa081)), closes [#4](https://github.com/vkarpov15/kareem/issues/4) -* proof of concept for error handlers ([e4a07d9](https://github.com/vkarpov15/kareem/commit/e4a07d9)) -* refactor out handleWrapError helper ([b19af38](https://github.com/vkarpov15/kareem/commit/b19af38)) - - - - -## 1.0.1 (2015-05-10) - -* Fix #1 ([de60dc6](https://github.com/vkarpov15/kareem/commit/de60dc6)), closes [#1](https://github.com/vkarpov15/kareem/issues/1) -* release 1.0.1 ([6971088](https://github.com/vkarpov15/kareem/commit/6971088)) -* Run tests on iojs in travis ([adcd201](https://github.com/vkarpov15/kareem/commit/adcd201)) -* support legacy post hook behavior in wrap() ([23fa74c](https://github.com/vkarpov15/kareem/commit/23fa74c)) -* Use node 0.12 in travis ([834689d](https://github.com/vkarpov15/kareem/commit/834689d)) - - - - -## 1.0.0 (2015-01-28) - -* Tag 1.0.0 ([4c5a35a](https://github.com/vkarpov15/kareem/commit/4c5a35a)) - - - - -## 0.0.8 (2015-01-27) - -* Add clone function ([688bba7](https://github.com/vkarpov15/kareem/commit/688bba7)) -* Add jscs for style checking ([5c93149](https://github.com/vkarpov15/kareem/commit/5c93149)) -* Bump 0.0.8 ([03c0d2f](https://github.com/vkarpov15/kareem/commit/03c0d2f)) -* Fix jscs config, add gulp rules ([9989abf](https://github.com/vkarpov15/kareem/commit/9989abf)) -* fix Makefile typo ([1f7e61a](https://github.com/vkarpov15/kareem/commit/1f7e61a)) - - - - -## 0.0.7 (2015-01-04) - -* Bump 0.0.7 ([98ef173](https://github.com/vkarpov15/kareem/commit/98ef173)) -* fix LearnBoost/mongoose#2553 - use null instead of undefined for err ([9157b48](https://github.com/vkarpov15/kareem/commit/9157b48)), closes [LearnBoost/mongoose#2553](https://github.com/LearnBoost/mongoose/issues/2553) -* Regenerate docs ([2331cdf](https://github.com/vkarpov15/kareem/commit/2331cdf)) - - - - -## 0.0.6 (2015-01-01) - -* Update docs and bump 0.0.6 ([92c12a7](https://github.com/vkarpov15/kareem/commit/92c12a7)) - - - - -## 0.0.5 (2015-01-01) - -* Add coverage rule to Makefile ([825a91c](https://github.com/vkarpov15/kareem/commit/825a91c)) -* Add coveralls to README ([fb52369](https://github.com/vkarpov15/kareem/commit/fb52369)) -* Add coveralls to travis ([93f6f15](https://github.com/vkarpov15/kareem/commit/93f6f15)) -* Add createWrapper() function ([ea77741](https://github.com/vkarpov15/kareem/commit/ea77741)) -* Add istanbul code coverage ([6eceeef](https://github.com/vkarpov15/kareem/commit/6eceeef)) -* Add some more comments for examples ([c5b0c6f](https://github.com/vkarpov15/kareem/commit/c5b0c6f)) -* Add travis ([e6dcb06](https://github.com/vkarpov15/kareem/commit/e6dcb06)) -* Add travis badge to docs ([ad8c9b3](https://github.com/vkarpov15/kareem/commit/ad8c9b3)) -* Add wrap() tests, 100% coverage ([6945be4](https://github.com/vkarpov15/kareem/commit/6945be4)) -* Better test coverage for execPost ([d9ad539](https://github.com/vkarpov15/kareem/commit/d9ad539)) -* Bump 0.0.5 ([69875b1](https://github.com/vkarpov15/kareem/commit/69875b1)) -* Docs fix ([15b7098](https://github.com/vkarpov15/kareem/commit/15b7098)) -* Fix silly mistake in docs generation ([50373eb](https://github.com/vkarpov15/kareem/commit/50373eb)) -* Fix typo in readme ([fec4925](https://github.com/vkarpov15/kareem/commit/fec4925)) -* Linkify travis badge ([92b25fe](https://github.com/vkarpov15/kareem/commit/92b25fe)) -* Make travis run coverage ([747157b](https://github.com/vkarpov15/kareem/commit/747157b)) -* Move travis status badge ([d52e89b](https://github.com/vkarpov15/kareem/commit/d52e89b)) -* Quick fix for coverage ([50bbddb](https://github.com/vkarpov15/kareem/commit/50bbddb)) -* Typo fix ([adea794](https://github.com/vkarpov15/kareem/commit/adea794)) - - - - -## 0.0.4 (2014-12-13) - -* Bump 0.0.4, run docs generation ([51a15fe](https://github.com/vkarpov15/kareem/commit/51a15fe)) -* Use correct post parameters in wrap() ([9bb5da3](https://github.com/vkarpov15/kareem/commit/9bb5da3)) - - - - -## 0.0.3 (2014-12-12) - -* Add npm test script, fix small bug with args not getting passed through post ([49e3e68](https://github.com/vkarpov15/kareem/commit/49e3e68)) -* Bump 0.0.3 ([65621d8](https://github.com/vkarpov15/kareem/commit/65621d8)) -* Update readme ([901388b](https://github.com/vkarpov15/kareem/commit/901388b)) - - - - -## 0.0.2 (2014-12-12) - -* Add github repo and bump 0.0.2 ([59db8be](https://github.com/vkarpov15/kareem/commit/59db8be)) - - - - -## 0.0.1 (2014-12-12) - -* Add basic docs ([ad29ea4](https://github.com/vkarpov15/kareem/commit/ad29ea4)) -* Add pre hooks ([2ffc356](https://github.com/vkarpov15/kareem/commit/2ffc356)) -* Add wrap function ([68c540c](https://github.com/vkarpov15/kareem/commit/68c540c)) -* Bump to version 0.0.1 ([a4bfd68](https://github.com/vkarpov15/kareem/commit/a4bfd68)) -* Initial commit ([4002458](https://github.com/vkarpov15/kareem/commit/4002458)) -* Initial deposit ([98fc489](https://github.com/vkarpov15/kareem/commit/98fc489)) -* Post hooks ([395b67c](https://github.com/vkarpov15/kareem/commit/395b67c)) -* Some basic setup work ([82df75e](https://github.com/vkarpov15/kareem/commit/82df75e)) -* Support sync pre hooks ([1cc1b9f](https://github.com/vkarpov15/kareem/commit/1cc1b9f)) -* Update package.json description ([978da18](https://github.com/vkarpov15/kareem/commit/978da18)) - - - - -## 2.2.5 (2018-09-24) - - - - - -## 2.2.4 (2018-09-24) - - - - - -## 2.2.3 (2018-09-24) - -* fix(filter): copy async pres correctly with `filter()` ([1b1ed8a](https://github.com/vkarpov15/kareem/commit/1b1ed8a)), closes [Automattic/mongoose#3054](https://github.com/Automattic/mongoose/issues/3054) -* feat: add filter() function ([1f641f4](https://github.com/vkarpov15/kareem/commit/1f641f4)) -* feat: support storing options on pre and post hooks ([59220b9](https://github.com/vkarpov15/kareem/commit/59220b9)) - - - - -## 2.2.3 (2018-09-10) - -* chore: release 2.2.3 ([af653a3](https://github.com/vkarpov15/kareem/commit/af653a3)) - - - - -## 2.2.2 (2018-09-10) - -* chore: release 2.2.2 ([3f0144d](https://github.com/vkarpov15/kareem/commit/3f0144d)) -* fix: allow merge() to not clone ([e628d65](https://github.com/vkarpov15/kareem/commit/e628d65)) - - - - -## 2.2.1 (2018-06-05) - -* chore: release 2.2.1 ([4625a64](https://github.com/vkarpov15/kareem/commit/4625a64)) -* chore: remove lockfile from git ([7f3e4e6](https://github.com/vkarpov15/kareem/commit/7f3e4e6)) -* fix: handle numAsync correctly when merging ([fef8e7e](https://github.com/vkarpov15/kareem/commit/fef8e7e)) -* test: repro issue with not copying numAsync ([952d9db](https://github.com/vkarpov15/kareem/commit/952d9db)) - - - - -## 2.2.0 (2018-06-05) - -* chore: release 2.2.0 ([ff9ad03](https://github.com/vkarpov15/kareem/commit/ff9ad03)) -* fix: use maps instead of objects for _pres and _posts so `toString()` doesn't get reported as having ([55df303](https://github.com/vkarpov15/kareem/commit/55df303)), closes [Automattic/mongoose#6538](https://github.com/Automattic/mongoose/issues/6538) - - - - -## 2.1.0 (2018-05-16) - -* chore: release 2.1.0 ([ba5f1bc](https://github.com/vkarpov15/kareem/commit/ba5f1bc)) -* feat: add option to check wrapped function return value for promises ([c9d7dd1](https://github.com/vkarpov15/kareem/commit/c9d7dd1)) -* refactor: use const in wrap() ([0fc21f9](https://github.com/vkarpov15/kareem/commit/0fc21f9)) - - - - -## 2.0.7 (2018-04-28) - -* chore: release 2.0.7 ([0bf91e6](https://github.com/vkarpov15/kareem/commit/0bf91e6)) -* feat: add `hasHooks()` ([225f18d](https://github.com/vkarpov15/kareem/commit/225f18d)), closes [Automattic/mongoose#6385](https://github.com/Automattic/mongoose/issues/6385) - - - - -## 2.0.6 (2018-03-22) - -* chore: release 2.0.6 ([f3d406b](https://github.com/vkarpov15/kareem/commit/f3d406b)) -* fix(wrap): ensure fast path still wraps function in `nextTick()` for chaining ([7000494](https://github.com/vkarpov15/kareem/commit/7000494)), closes [Automattic/mongoose#6250](https://github.com/Automattic/mongoose/issues/6250) [dsanel/mongoose-delete#36](https://github.com/dsanel/mongoose-delete/issues/36) - - - - -## 2.0.5 (2018-02-22) - -* chore: release 2.0.5 ([3286612](https://github.com/vkarpov15/kareem/commit/3286612)) -* perf(createWrapper): don't create wrapper if there are no hooks ([5afc5b9](https://github.com/vkarpov15/kareem/commit/5afc5b9)), closes [Automattic/mongoose#6126](https://github.com/Automattic/mongoose/issues/6126) - - - - -## 2.0.4 (2018-02-08) - -* chore: release 2.0.4 ([2ab0293](https://github.com/vkarpov15/kareem/commit/2ab0293)) - - - - -## 2.0.3 (2018-02-01) - -* chore: release 2.0.3 ([3c1abe5](https://github.com/vkarpov15/kareem/commit/3c1abe5)) -* fix: use process.nextTick() re: Automattic/mongoose#6074 ([e5bfe33](https://github.com/vkarpov15/kareem/commit/e5bfe33)), closes [Automattic/mongoose#6074](https://github.com/Automattic/mongoose/issues/6074) - - - - -## 2.0.2 (2018-01-24) - -* chore: fix license ([a9d755c](https://github.com/vkarpov15/kareem/commit/a9d755c)), closes [#10](https://github.com/vkarpov15/kareem/issues/10) -* chore: release 2.0.2 ([fe87ab6](https://github.com/vkarpov15/kareem/commit/fe87ab6)) - - - - -## 2.0.1 (2018-01-09) - -* chore: release 2.0.1 with lockfile bump ([09c44fb](https://github.com/vkarpov15/kareem/commit/09c44fb)) - - - - -## 2.0.0 (2018-01-09) - -* chore: bump marked re: security ([cc564a9](https://github.com/vkarpov15/kareem/commit/cc564a9)) -* chore: release 2.0.0 ([f511d1c](https://github.com/vkarpov15/kareem/commit/f511d1c)) - - - - -## 2.0.0-rc5 (2017-12-23) - -* chore: fix build on node 4+5 ([6dac5a4](https://github.com/vkarpov15/kareem/commit/6dac5a4)) -* chore: fix built on node 4 + 5 again ([434ef0a](https://github.com/vkarpov15/kareem/commit/434ef0a)) -* chore: release 2.0.0-rc5 ([25a32ee](https://github.com/vkarpov15/kareem/commit/25a32ee)) - - - - -## 2.0.0-rc4 (2017-12-22) - -* chore: release 2.0.0-rc4 ([49fc083](https://github.com/vkarpov15/kareem/commit/49fc083)) -* BREAKING CHANGE: deduplicate when merging hooks re: Automattic/mongoose#2945 ([d458573](https://github.com/vkarpov15/kareem/commit/d458573)), closes [Automattic/mongoose#2945](https://github.com/Automattic/mongoose/issues/2945) - - - - -## 2.0.0-rc3 (2017-12-22) - -* chore: release 2.0.0-rc3 ([adaaa00](https://github.com/vkarpov15/kareem/commit/adaaa00)) -* feat: support returning promises from middleware functions ([05b4480](https://github.com/vkarpov15/kareem/commit/05b4480)), closes [Automattic/mongoose#3779](https://github.com/Automattic/mongoose/issues/3779) - - - - -## 2.0.0-rc2 (2017-12-21) - -* chore: release 2.0.0-rc2 ([76325fa](https://github.com/vkarpov15/kareem/commit/76325fa)) -* fix: ensure next() and done() run in next tick ([6c20684](https://github.com/vkarpov15/kareem/commit/6c20684)) - - - - -## 2.0.0-rc1 (2017-12-21) - -* chore: improve test coverage re: Automattic/mongoose#3232 ([7b45cf0](https://github.com/vkarpov15/kareem/commit/7b45cf0)), closes [Automattic/mongoose#3232](https://github.com/Automattic/mongoose/issues/3232) -* chore: release 2.0.0-rc1 ([9b83f52](https://github.com/vkarpov15/kareem/commit/9b83f52)) -* BREAKING CHANGE: report sync exceptions as errors, only allow calling next() and done() once ([674adcc](https://github.com/vkarpov15/kareem/commit/674adcc)), closes [Automattic/mongoose#3483](https://github.com/Automattic/mongoose/issues/3483) - - - - -## 2.0.0-rc0 (2017-12-17) - -* chore: release 2.0.0-rc0 ([16b44b5](https://github.com/vkarpov15/kareem/commit/16b44b5)) -* BREAKING CHANGE: drop support for node < 4 ([9cbb8c7](https://github.com/vkarpov15/kareem/commit/9cbb8c7)) -* BREAKING CHANGE: remove useLegacyPost and add several new features ([6dd8531](https://github.com/vkarpov15/kareem/commit/6dd8531)), closes [Automattic/mongoose#3232](https://github.com/Automattic/mongoose/issues/3232) - - - - -## 1.5.0 (2017-07-20) - -* chore: release 1.5.0 ([9c491a0](https://github.com/vkarpov15/kareem/commit/9c491a0)) -* fix: improve post error handlers results ([9928dd5](https://github.com/vkarpov15/kareem/commit/9928dd5)), closes [Automattic/mongoose#5466](https://github.com/Automattic/mongoose/issues/5466) - - - - -## 1.4.2 (2017-07-06) - -* chore: release 1.4.2 ([8d14ac5](https://github.com/vkarpov15/kareem/commit/8d14ac5)) -* fix: correct args re: Automattic/mongoose#5405 ([3f28ae6](https://github.com/vkarpov15/kareem/commit/3f28ae6)), closes [Automattic/mongoose#5405](https://github.com/Automattic/mongoose/issues/5405) - - - - -## 1.4.1 (2017-04-25) - -* chore: release 1.4.1 ([5ecf0c2](https://github.com/vkarpov15/kareem/commit/5ecf0c2)) -* fix: handle numAsyncPres with clone() ([c72e857](https://github.com/vkarpov15/kareem/commit/c72e857)), closes [#8](https://github.com/vkarpov15/kareem/issues/8) -* test: repro #8 ([9b4d6b2](https://github.com/vkarpov15/kareem/commit/9b4d6b2)), closes [#8](https://github.com/vkarpov15/kareem/issues/8) - - - - -## 1.4.0 (2017-04-19) - -* chore: release 1.4.0 ([101c5f5](https://github.com/vkarpov15/kareem/commit/101c5f5)) -* feat: add merge() function ([285325e](https://github.com/vkarpov15/kareem/commit/285325e)) - - - - -## 1.3.0 (2017-03-26) - -* chore: release 1.3.0 ([f3a9e50](https://github.com/vkarpov15/kareem/commit/f3a9e50)) -* feat: pass function args to execPre ([4dd466d](https://github.com/vkarpov15/kareem/commit/4dd466d)) - - - - -## 1.2.1 (2017-02-03) - -* chore: release 1.2.1 ([d97081f](https://github.com/vkarpov15/kareem/commit/d97081f)) -* fix: filter out _kareemIgnored args for error handlers re: Automattic/mongoose#4925 ([ddc7aeb](https://github.com/vkarpov15/kareem/commit/ddc7aeb)), closes [Automattic/mongoose#4925](https://github.com/Automattic/mongoose/issues/4925) -* fix: make error handlers handle errors in pre hooks ([af38033](https://github.com/vkarpov15/kareem/commit/af38033)), closes [Automattic/mongoose#4927](https://github.com/Automattic/mongoose/issues/4927) - - - - -## 1.2.0 (2017-01-02) - -* chore: release 1.2.0 ([033225c](https://github.com/vkarpov15/kareem/commit/033225c)) -* chore: upgrade deps ([f9e9a09](https://github.com/vkarpov15/kareem/commit/f9e9a09)) -* feat: add _kareemIgnore re: Automattic/mongoose#4836 ([7957771](https://github.com/vkarpov15/kareem/commit/7957771)), closes [Automattic/mongoose#4836](https://github.com/Automattic/mongoose/issues/4836) - - - - -## 1.1.5 (2016-12-13) - -* chore: release 1.1.5 ([1a9f684](https://github.com/vkarpov15/kareem/commit/1a9f684)) -* fix: correct field name ([04a0e9d](https://github.com/vkarpov15/kareem/commit/04a0e9d)) - - - - -## 1.1.4 (2016-12-09) - -* chore: release 1.1.4 ([ece401c](https://github.com/vkarpov15/kareem/commit/ece401c)) -* chore: run tests on node 6 ([e0cb1cb](https://github.com/vkarpov15/kareem/commit/e0cb1cb)) -* fix: only copy own properties in clone() ([dfe28ce](https://github.com/vkarpov15/kareem/commit/dfe28ce)), closes [#7](https://github.com/vkarpov15/kareem/issues/7) - - - - -## 1.1.3 (2016-06-27) - -* chore: release 1.1.3 ([87171c8](https://github.com/vkarpov15/kareem/commit/87171c8)) -* fix: couple more issues with arg processing ([c65f523](https://github.com/vkarpov15/kareem/commit/c65f523)) - - - - -## 1.1.2 (2016-06-27) - -* chore: release 1.1.2 ([8e102b6](https://github.com/vkarpov15/kareem/commit/8e102b6)) -* fix: add early return ([4feda4e](https://github.com/vkarpov15/kareem/commit/4feda4e)) - - - - -## 1.1.1 (2016-06-27) - -* chore: release 1.1.1 ([8bb3050](https://github.com/vkarpov15/kareem/commit/8bb3050)) -* fix: skip error handlers if no error ([0eb3a44](https://github.com/vkarpov15/kareem/commit/0eb3a44)) - - - - -## 1.1.0 (2016-05-11) - -* chore: release 1.1.0 ([85332d9](https://github.com/vkarpov15/kareem/commit/85332d9)) -* chore: test on node 4 and node 5 ([1faefa1](https://github.com/vkarpov15/kareem/commit/1faefa1)) -* 100% coverage again ([c9aee4e](https://github.com/vkarpov15/kareem/commit/c9aee4e)) -* add support for error post hooks ([d378113](https://github.com/vkarpov15/kareem/commit/d378113)) -* basic setup for sync hooks #4 ([55aa081](https://github.com/vkarpov15/kareem/commit/55aa081)), closes [#4](https://github.com/vkarpov15/kareem/issues/4) -* proof of concept for error handlers ([e4a07d9](https://github.com/vkarpov15/kareem/commit/e4a07d9)) -* refactor out handleWrapError helper ([b19af38](https://github.com/vkarpov15/kareem/commit/b19af38)) - - - - -## 1.0.1 (2015-05-10) - -* Fix #1 ([de60dc6](https://github.com/vkarpov15/kareem/commit/de60dc6)), closes [#1](https://github.com/vkarpov15/kareem/issues/1) -* release 1.0.1 ([6971088](https://github.com/vkarpov15/kareem/commit/6971088)) -* Run tests on iojs in travis ([adcd201](https://github.com/vkarpov15/kareem/commit/adcd201)) -* support legacy post hook behavior in wrap() ([23fa74c](https://github.com/vkarpov15/kareem/commit/23fa74c)) -* Use node 0.12 in travis ([834689d](https://github.com/vkarpov15/kareem/commit/834689d)) - - - - -## 1.0.0 (2015-01-28) - -* Tag 1.0.0 ([4c5a35a](https://github.com/vkarpov15/kareem/commit/4c5a35a)) - - - - -## 0.0.8 (2015-01-27) - -* Add clone function ([688bba7](https://github.com/vkarpov15/kareem/commit/688bba7)) -* Add jscs for style checking ([5c93149](https://github.com/vkarpov15/kareem/commit/5c93149)) -* Bump 0.0.8 ([03c0d2f](https://github.com/vkarpov15/kareem/commit/03c0d2f)) -* Fix jscs config, add gulp rules ([9989abf](https://github.com/vkarpov15/kareem/commit/9989abf)) -* fix Makefile typo ([1f7e61a](https://github.com/vkarpov15/kareem/commit/1f7e61a)) - - - - -## 0.0.7 (2015-01-04) - -* Bump 0.0.7 ([98ef173](https://github.com/vkarpov15/kareem/commit/98ef173)) -* fix LearnBoost/mongoose#2553 - use null instead of undefined for err ([9157b48](https://github.com/vkarpov15/kareem/commit/9157b48)), closes [LearnBoost/mongoose#2553](https://github.com/LearnBoost/mongoose/issues/2553) -* Regenerate docs ([2331cdf](https://github.com/vkarpov15/kareem/commit/2331cdf)) - - - - -## 0.0.6 (2015-01-01) - -* Update docs and bump 0.0.6 ([92c12a7](https://github.com/vkarpov15/kareem/commit/92c12a7)) - - - - -## 0.0.5 (2015-01-01) - -* Add coverage rule to Makefile ([825a91c](https://github.com/vkarpov15/kareem/commit/825a91c)) -* Add coveralls to README ([fb52369](https://github.com/vkarpov15/kareem/commit/fb52369)) -* Add coveralls to travis ([93f6f15](https://github.com/vkarpov15/kareem/commit/93f6f15)) -* Add createWrapper() function ([ea77741](https://github.com/vkarpov15/kareem/commit/ea77741)) -* Add istanbul code coverage ([6eceeef](https://github.com/vkarpov15/kareem/commit/6eceeef)) -* Add some more comments for examples ([c5b0c6f](https://github.com/vkarpov15/kareem/commit/c5b0c6f)) -* Add travis ([e6dcb06](https://github.com/vkarpov15/kareem/commit/e6dcb06)) -* Add travis badge to docs ([ad8c9b3](https://github.com/vkarpov15/kareem/commit/ad8c9b3)) -* Add wrap() tests, 100% coverage ([6945be4](https://github.com/vkarpov15/kareem/commit/6945be4)) -* Better test coverage for execPost ([d9ad539](https://github.com/vkarpov15/kareem/commit/d9ad539)) -* Bump 0.0.5 ([69875b1](https://github.com/vkarpov15/kareem/commit/69875b1)) -* Docs fix ([15b7098](https://github.com/vkarpov15/kareem/commit/15b7098)) -* Fix silly mistake in docs generation ([50373eb](https://github.com/vkarpov15/kareem/commit/50373eb)) -* Fix typo in readme ([fec4925](https://github.com/vkarpov15/kareem/commit/fec4925)) -* Linkify travis badge ([92b25fe](https://github.com/vkarpov15/kareem/commit/92b25fe)) -* Make travis run coverage ([747157b](https://github.com/vkarpov15/kareem/commit/747157b)) -* Move travis status badge ([d52e89b](https://github.com/vkarpov15/kareem/commit/d52e89b)) -* Quick fix for coverage ([50bbddb](https://github.com/vkarpov15/kareem/commit/50bbddb)) -* Typo fix ([adea794](https://github.com/vkarpov15/kareem/commit/adea794)) - - - - -## 0.0.4 (2014-12-13) - -* Bump 0.0.4, run docs generation ([51a15fe](https://github.com/vkarpov15/kareem/commit/51a15fe)) -* Use correct post parameters in wrap() ([9bb5da3](https://github.com/vkarpov15/kareem/commit/9bb5da3)) - - - - -## 0.0.3 (2014-12-12) - -* Add npm test script, fix small bug with args not getting passed through post ([49e3e68](https://github.com/vkarpov15/kareem/commit/49e3e68)) -* Bump 0.0.3 ([65621d8](https://github.com/vkarpov15/kareem/commit/65621d8)) -* Update readme ([901388b](https://github.com/vkarpov15/kareem/commit/901388b)) - - - - -## 0.0.2 (2014-12-12) - -* Add github repo and bump 0.0.2 ([59db8be](https://github.com/vkarpov15/kareem/commit/59db8be)) - - - - -## 0.0.1 (2014-12-12) - -* Add basic docs ([ad29ea4](https://github.com/vkarpov15/kareem/commit/ad29ea4)) -* Add pre hooks ([2ffc356](https://github.com/vkarpov15/kareem/commit/2ffc356)) -* Add wrap function ([68c540c](https://github.com/vkarpov15/kareem/commit/68c540c)) -* Bump to version 0.0.1 ([a4bfd68](https://github.com/vkarpov15/kareem/commit/a4bfd68)) -* Initial commit ([4002458](https://github.com/vkarpov15/kareem/commit/4002458)) -* Initial deposit ([98fc489](https://github.com/vkarpov15/kareem/commit/98fc489)) -* Post hooks ([395b67c](https://github.com/vkarpov15/kareem/commit/395b67c)) -* Some basic setup work ([82df75e](https://github.com/vkarpov15/kareem/commit/82df75e)) -* Support sync pre hooks ([1cc1b9f](https://github.com/vkarpov15/kareem/commit/1cc1b9f)) -* Update package.json description ([978da18](https://github.com/vkarpov15/kareem/commit/978da18)) diff --git a/food-ordering-app/server/node_modules/kareem/LICENSE b/food-ordering-app/server/node_modules/kareem/LICENSE index e06d20818..b0d46d3c2 100644 --- a/food-ordering-app/server/node_modules/kareem/LICENSE +++ b/food-ordering-app/server/node_modules/kareem/LICENSE @@ -186,7 +186,7 @@ Apache License same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright {yyyy} {name of copyright owner} + Copyright 2014-2022 mongoosejs Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/food-ordering-app/server/node_modules/kareem/Makefile b/food-ordering-app/server/node_modules/kareem/Makefile deleted file mode 100644 index f71ba9008..000000000 --- a/food-ordering-app/server/node_modules/kareem/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -docs: - node ./docs.js - -coverage: - ./node_modules/istanbul/lib/cli.js cover ./node_modules/mocha/bin/_mocha -- -R spec ./test/* diff --git a/food-ordering-app/server/node_modules/kareem/docs.js b/food-ordering-app/server/node_modules/kareem/docs.js deleted file mode 100644 index cf5bda2c3..000000000 --- a/food-ordering-app/server/node_modules/kareem/docs.js +++ /dev/null @@ -1,41 +0,0 @@ -'use strict'; - -var acquit = require('acquit'); - -require('acquit-ignore')(); - -var content = require('fs').readFileSync('./test/examples.test.js').toString(); -var blocks = acquit.parse(content); - -var mdOutput = - '# kareem\n\n' + - ' [![Build Status](https://travis-ci.org/vkarpov15/kareem.svg?branch=master)](https://travis-ci.org/vkarpov15/kareem)\n' + - ' [![Coverage Status](https://img.shields.io/coveralls/vkarpov15/kareem.svg)](https://coveralls.io/r/vkarpov15/kareem)\n\n' + - 'Re-imagined take on the [hooks](http://npmjs.org/package/hooks) module, ' + - 'meant to offer additional flexibility in allowing you to execute hooks ' + - 'whenever necessary, as opposed to simply wrapping a single function.\n\n' + - 'Named for the NBA\'s all-time leading scorer Kareem Abdul-Jabbar, known ' + - 'for his mastery of the [hook shot](http://en.wikipedia.org/wiki/Kareem_Abdul-Jabbar#Skyhook)\n\n' + - '\n\n' + - '# API\n\n'; - -for (var i = 0; i < blocks.length; ++i) { - var describe = blocks[i]; - mdOutput += '## ' + describe.contents + '\n\n'; - mdOutput += describe.comments[0] ? - acquit.trimEachLine(describe.comments[0]) + '\n\n' : - ''; - - for (var j = 0; j < describe.blocks.length; ++j) { - var it = describe.blocks[j]; - mdOutput += '#### It ' + it.contents + '\n\n'; - mdOutput += it.comments[0] ? - acquit.trimEachLine(it.comments[0]) + '\n\n' : - ''; - mdOutput += '```javascript\n'; - mdOutput += it.code + '\n'; - mdOutput += '```\n\n'; - } -} - -require('fs').writeFileSync('README.md', mdOutput); diff --git a/food-ordering-app/server/node_modules/kareem/index.js b/food-ordering-app/server/node_modules/kareem/index.js index b10aaf9a1..9c5aa16ed 100644 --- a/food-ordering-app/server/node_modules/kareem/index.js +++ b/food-ordering-app/server/node_modules/kareem/index.js @@ -1,5 +1,8 @@ 'use strict'; +/** + * Create a new instance + */ function Kareem() { this._pres = new Map(); this._posts = new Map(); @@ -21,19 +24,27 @@ Kareem.overwriteResult = function overwriteResult() { this.args = [...arguments]; }; +/** + * Execute all "pre" hooks for "name" + * @param {String} name The hook name to execute + * @param {*} context Overwrite the "this" for the hook + * @param {Array|Function} args Optional arguments or directly the callback + * @param {Function} [callback] The callback to call when executing all hooks are finished + * @returns {void} + */ Kareem.prototype.execPre = function(name, context, args, callback) { if (arguments.length === 3) { callback = args; args = []; } - var pres = this._pres.get(name) || []; - var numPres = pres.length; - var numAsyncPres = pres.numAsync || 0; - var currentPre = 0; - var asyncPresLeft = numAsyncPres; - var done = false; - var $args = args; - var shouldSkipWrappedFunction = null; + const pres = this._pres.get(name) || []; + const numPres = pres.length; + const numAsyncPres = pres.numAsync || 0; + let currentPre = 0; + let asyncPresLeft = numAsyncPres; + let done = false; + const $args = args; + let shouldSkipWrappedFunction = null; if (!numPres) { return nextTick(function() { @@ -41,14 +52,14 @@ Kareem.prototype.execPre = function(name, context, args, callback) { }); } - var next = function() { + function next() { if (currentPre >= numPres) { return; } - var pre = pres[currentPre]; + const pre = pres[currentPre]; if (pre.isAsync) { - var args = [ + const args = [ decorateNextFn(_next), decorateNextFn(function(error) { if (error) { @@ -70,9 +81,12 @@ Kareem.prototype.execPre = function(name, context, args, callback) { callMiddlewareFunction(pre.fn, context, args, args[0]); } else if (pre.fn.length > 0) { - var args = [decorateNextFn(_next)]; - var _args = arguments.length >= 2 ? arguments : [null].concat($args); - for (var i = 1; i < _args.length; ++i) { + const args = [decorateNextFn(_next)]; + const _args = arguments.length >= 2 ? arguments : [null].concat($args); + for (let i = 1; i < _args.length; ++i) { + if (i === _args.length - 1 && typeof _args[i] === 'function') { + continue; // skip callbacks to avoid accidentally calling the callback from a hook + } args.push(_args[i]); } @@ -103,7 +117,7 @@ Kareem.prototype.execPre = function(name, context, args, callback) { next(); } } - }; + } next.apply(null, [null].concat(args)); @@ -133,25 +147,41 @@ Kareem.prototype.execPre = function(name, context, args, callback) { } }; +/** + * Execute all "pre" hooks for "name" synchronously + * @param {String} name The hook name to execute + * @param {*} context Overwrite the "this" for the hook + * @param {Array} [args] Apply custom arguments to the hook + * @returns {void} + */ Kareem.prototype.execPreSync = function(name, context, args) { - var pres = this._pres.get(name) || []; - var numPres = pres.length; + const pres = this._pres.get(name) || []; + const numPres = pres.length; - for (var i = 0; i < numPres; ++i) { + for (let i = 0; i < numPres; ++i) { pres[i].fn.apply(context, args || []); } }; +/** + * Execute all "post" hooks for "name" + * @param {String} name The hook name to execute + * @param {*} context Overwrite the "this" for the hook + * @param {Array|Function} args Apply custom arguments to the hook + * @param {*} options Optional options or directly the callback + * @param {Function} [callback] The callback to call when executing all hooks are finished + * @returns {void} + */ Kareem.prototype.execPost = function(name, context, args, options, callback) { if (arguments.length < 5) { callback = options; options = null; } - var posts = this._posts.get(name) || []; - var numPosts = posts.length; - var currentPost = 0; + const posts = this._posts.get(name) || []; + const numPosts = posts.length; + let currentPost = 0; - var firstError = null; + let firstError = null; if (options && options.error) { firstError = options.error; } @@ -162,12 +192,12 @@ Kareem.prototype.execPost = function(name, context, args, options, callback) { }); } - var next = function() { - var post = posts[currentPost].fn; - var numArgs = 0; - var argLength = args.length; - var newArgs = []; - for (var i = 0; i < argLength; ++i) { + function next() { + const post = posts[currentPost].fn; + let numArgs = 0; + const argLength = args.length; + const newArgs = []; + for (let i = 0; i < argLength; ++i) { numArgs += args[i] && args[i]._kareemIgnore ? 0 : 1; if (!args[i] || !args[i]._kareemIgnore) { newArgs.push(args[i]); @@ -175,7 +205,7 @@ Kareem.prototype.execPost = function(name, context, args, options, callback) { } if (firstError) { - if (post.length === numArgs + 2) { + if (isErrorHandlingMiddleware(posts[currentPost], numArgs)) { const _cb = decorateNextFn(function(error) { if (error) { if (error instanceof Kareem.overwriteResult) { @@ -222,7 +252,7 @@ Kareem.prototype.execPost = function(name, context, args, options, callback) { next(); }); - if (post.length === numArgs + 2) { + if (isErrorHandlingMiddleware(posts[currentPost], numArgs)) { // Skip error handlers if no error if (++currentPost >= numPosts) { return callback.apply(null, [null].concat(args)); @@ -261,11 +291,18 @@ Kareem.prototype.execPost = function(name, context, args, options, callback) { next(); } } - }; + } next(); }; +/** + * Execute all "post" hooks for "name" synchronously + * @param {String} name The hook name to execute + * @param {*} context Overwrite the "this" for the hook + * @param {Array|Function} args Apply custom arguments to the hook + * @returns {Array} The used arguments + */ Kareem.prototype.execPostSync = function(name, context, args) { const posts = this._posts.get(name) || []; const numPosts = posts.length; @@ -280,14 +317,20 @@ Kareem.prototype.execPostSync = function(name, context, args) { return args; }; +/** + * Create a synchronous wrapper for "fn" + * @param {String} name The name of the hook + * @param {Function} fn The function to wrap + * @returns {Function} The wrapped function + */ Kareem.prototype.createWrapperSync = function(name, fn) { - var kareem = this; + const _this = this; return function syncWrapper() { - kareem.execPreSync(name, this, arguments); + _this.execPreSync(name, this, arguments); - var toReturn = fn.apply(this, arguments); + const toReturn = fn.apply(this, arguments); - const result = kareem.execPostSync(name, this, [toReturn]); + const result = _this.execPostSync(name, this, [toReturn]); return result[0]; }; @@ -303,9 +346,19 @@ function _handleWrapError(instance, error, name, context, args, options, callbac } } +/** + * Executes pre hooks, followed by the wrapped function, followed by post hooks. + * @param {String} name The name of the hook + * @param {Function} fn The function for the hook + * @param {*} context Overwrite the "this" for the hook + * @param {Array} args Apply custom arguments to the hook + * @param {Object} [options] + * @param {Boolean} [options.checkForPromise] + * @returns {void} + */ Kareem.prototype.wrap = function(name, fn, context, args, options) { const lastArg = (args.length > 0 ? args[args.length - 1] : null); - let argsWithoutCb = Array.from(args); + const argsWithoutCb = Array.from(args); typeof lastArg === 'function' && argsWithoutCb.pop(); const _this = this; @@ -316,7 +369,7 @@ Kareem.prototype.wrap = function(name, fn, context, args, options) { if (error && !(error instanceof Kareem.skipWrappedFunction)) { const numCallbackParams = options.numCallbackParams || 0; const errorArgs = options.contextParameter ? [context] : []; - for (var i = errorArgs.length; i < numCallbackParams; ++i) { + for (let i = errorArgs.length; i < numCallbackParams; ++i) { errorArgs.push(null); } return _handleWrapError(_this, error, name, context, errorArgs, @@ -377,6 +430,11 @@ Kareem.prototype.wrap = function(name, fn, context, args, options) { }); }; +/** + * Filter current instance for something specific and return the filtered clone + * @param {Function} fn The filter function + * @returns {Kareem} The cloned and filtered instance + */ Kareem.prototype.filter = function(fn) { const clone = this.clone(); @@ -413,12 +471,25 @@ Kareem.prototype.filter = function(fn) { return clone; }; +/** + * Check for a "name" to exist either in pre or post hooks + * @param {String} name The name of the hook + * @returns {Boolean} "true" if found, "false" otherwise + */ Kareem.prototype.hasHooks = function(name) { return this._pres.has(name) || this._posts.has(name); }; +/** + * Create a Wrapper for "fn" on "name" and return the wrapped function + * @param {String} name The name of the hook + * @param {Function} fn The function to wrap + * @param {*} context Overwrite the "this" for the hook + * @param {Object} [options] + * @returns {Function} The wrapped function + */ Kareem.prototype.createWrapper = function(name, fn, context, options) { - var _this = this; + const _this = this; if (!this.hasHooks(name)) { // Fast path: if there's no hooks for this function, just return the // function wrapped in a nextTick() @@ -427,11 +498,20 @@ Kareem.prototype.createWrapper = function(name, fn, context, options) { }; } return function() { - var _context = context || this; + const _context = context || this; _this.wrap(name, fn, _context, Array.from(arguments), options); }; }; +/** + * Register a new hook for "pre" + * @param {String} name The name of the hook + * @param {Boolean} [isAsync] + * @param {Function} fn The function to register for "name" + * @param {never} error Unused + * @param {Boolean} [unshift] Wheter to "push" or to "unshift" the new hook + * @returns {Kareem} + */ Kareem.prototype.pre = function(name, isAsync, fn, error, unshift) { let options = {}; if (typeof isAsync === 'object' && isAsync !== null) { @@ -463,8 +543,16 @@ Kareem.prototype.pre = function(name, isAsync, fn, error, unshift) { return this; }; +/** + * Register a new hook for "post" + * @param {String} name The name of the hook + * @param {Object} [options] + * @param {Function} fn The function to register for "name" + * @param {Boolean} [unshift] Wheter to "push" or to "unshift" the new hook + * @returns {Kareem} + */ Kareem.prototype.post = function(name, options, fn, unshift) { - const hooks = this._posts.get(name) || []; + const posts = this._posts.get(name) || []; if (typeof options === 'function') { unshift = !!fn; @@ -477,34 +565,44 @@ Kareem.prototype.post = function(name, options, fn, unshift) { } if (unshift) { - hooks.unshift(Object.assign({}, options, { fn: fn })); + posts.unshift(Object.assign({}, options, { fn: fn })); } else { - hooks.push(Object.assign({}, options, { fn: fn })); + posts.push(Object.assign({}, options, { fn: fn })); } - this._posts.set(name, hooks); + this._posts.set(name, posts); return this; }; +/** + * Clone the current instance + * @returns {Kareem} The cloned instance + */ Kareem.prototype.clone = function() { const n = new Kareem(); - for (let key of this._pres.keys()) { + for (const key of this._pres.keys()) { const clone = this._pres.get(key).slice(); clone.numAsync = this._pres.get(key).numAsync; n._pres.set(key, clone); } - for (let key of this._posts.keys()) { + for (const key of this._posts.keys()) { n._posts.set(key, this._posts.get(key).slice()); } return n; }; +/** + * Merge "other" into self or "clone" + * @param {Kareem} other The instance to merge with + * @param {Kareem} [clone] The instance to merge onto (if not defined, using "this") + * @returns {Kareem} The merged instance + */ Kareem.prototype.merge = function(other, clone) { clone = arguments.length === 1 ? true : clone; - var ret = clone ? this.clone() : this; + const ret = clone ? this.clone() : this; - for (let key of other._pres.keys()) { + for (const key of other._pres.keys()) { const sourcePres = ret._pres.get(key) || []; const deduplicated = other._pres.get(key). // Deduplicate based on `fn` @@ -514,7 +612,7 @@ Kareem.prototype.merge = function(other, clone) { combined.numAsync += deduplicated.filter(p => p.isAsync).length; ret._pres.set(key, combined); } - for (let key of other._posts.keys()) { + for (const key of other._posts.keys()) { const sourcePosts = ret._posts.get(key) || []; const deduplicated = other._posts.get(key). filter(p => sourcePosts.indexOf(p) === -1); @@ -542,8 +640,8 @@ function isPromiseLike(v) { } function decorateNextFn(fn) { - var called = false; - var _this = this; + let called = false; + const _this = this; return function() { // Ensure this function can only be called once if (called) { @@ -556,8 +654,15 @@ function decorateNextFn(fn) { }; } -const nextTick = typeof process === 'object' && process !== null && process.nextTick || function nextTick(cb) { - setTimeout(cb, 0); +const nextTick = typeof process === 'object' && process !== null && process.nextTick || function nextTick(cb) { + setTimeout(cb, 0); }; +function isErrorHandlingMiddleware(post, numArgs) { + if (post.errorHandler) { + return true; + } + return post.fn.length === numArgs + 2; +} + module.exports = Kareem; diff --git a/food-ordering-app/server/node_modules/kareem/package.json b/food-ordering-app/server/node_modules/kareem/package.json index 437dded94..db878a0df 100644 --- a/food-ordering-app/server/node_modules/kareem/package.json +++ b/food-ordering-app/server/node_modules/kareem/package.json @@ -1,25 +1,31 @@ { "name": "kareem", - "version": "2.4.1", + "version": "2.5.1", "description": "Next-generation take on pre/post function hooks", "main": "index.js", "scripts": { "lint": "eslint .", "test": "mocha ./test/*", - "test-travis": "nyc mocha ./test/*" + "test-coverage": "nyc --reporter lcov mocha ./test/*", + "docs": "node ./docs.js" }, "repository": { "type": "git", "url": "git://github.com/vkarpov15/kareem.git" }, "devDependencies": { - "@masteringjs/eslint-config": "0.0.1", "acquit": "1.x", - "acquit-ignore": "0.1.x", - "eslint": "8.15.0", + "acquit-ignore": "0.2.x", + "eslint": "8.20.0", "mocha": "9.2.0", "nyc": "15.1.0" }, "author": "Valeri Karpov ", - "license": "Apache-2.0" + "license": "Apache-2.0", + "files": [ + "index.js" + ], + "engines": { + "node": ">=12.0.0" + } } diff --git a/food-ordering-app/server/node_modules/kareem/test/examples.test.js b/food-ordering-app/server/node_modules/kareem/test/examples.test.js deleted file mode 100644 index a267be333..000000000 --- a/food-ordering-app/server/node_modules/kareem/test/examples.test.js +++ /dev/null @@ -1,429 +0,0 @@ -'use strict'; - -var assert = require('assert'); -const { beforeEach, describe, it } = require('mocha'); -var Kareem = require('../'); - -/* Much like [hooks](https://npmjs.org/package/hooks), kareem lets you define - * pre and post hooks: pre hooks are called before a given function executes. - * Unlike hooks, kareem stores hooks and other internal state in a separate - * object, rather than relying on inheritance. Furthermore, kareem exposes - * an `execPre()` function that allows you to execute your pre hooks when - * appropriate, giving you more fine-grained control over your function hooks. - */ -describe('pre hooks', function() { - var hooks; - - beforeEach(function() { - hooks = new Kareem(); - }); - - it('runs without any hooks specified', function(done) { - hooks.execPre('cook', null, function() { - // ... - // acquit:ignore:start - done(); - // acquit:ignore:end - }); - }); - - /* pre hook functions take one parameter, a "done" function that you execute - * when your pre hook is finished. - */ - it('runs basic serial pre hooks', function(done) { - var count = 0; - - hooks.pre('cook', function(done) { - ++count; - done(); - }); - - hooks.execPre('cook', null, function() { - assert.equal(1, count); - // acquit:ignore:start - done(); - // acquit:ignore:end - }); - }); - - it('can run multipe pre hooks', function(done) { - var count1 = 0; - var count2 = 0; - - hooks.pre('cook', function(done) { - ++count1; - done(); - }); - - hooks.pre('cook', function(done) { - ++count2; - done(); - }); - - hooks.execPre('cook', null, function() { - assert.equal(1, count1); - assert.equal(1, count2); - // acquit:ignore:start - done(); - // acquit:ignore:end - }); - }); - - /* If your pre hook function takes no parameters, its assumed to be - * fully synchronous. - */ - it('can run fully synchronous pre hooks', function(done) { - var count1 = 0; - var count2 = 0; - - hooks.pre('cook', function() { - ++count1; - }); - - hooks.pre('cook', function() { - ++count2; - }); - - hooks.execPre('cook', null, function(error) { - assert.equal(null, error); - assert.equal(1, count1); - assert.equal(1, count2); - // acquit:ignore:start - done(); - // acquit:ignore:end - }); - }); - - /* Pre save hook functions are bound to the second parameter to `execPre()` - */ - it('properly attaches context to pre hooks', function(done) { - hooks.pre('cook', function(done) { - this.bacon = 3; - done(); - }); - - hooks.pre('cook', function(done) { - this.eggs = 4; - done(); - }); - - var obj = { bacon: 0, eggs: 0 }; - - // In the pre hooks, `this` will refer to `obj` - hooks.execPre('cook', obj, function(error) { - assert.equal(null, error); - assert.equal(3, obj.bacon); - assert.equal(4, obj.eggs); - // acquit:ignore:start - done(); - // acquit:ignore:end - }); - }); - - /* Like the hooks module, you can declare "async" pre hooks - these take two - * parameters, the functions `next()` and `done()`. `next()` passes control to - * the next pre hook, but the underlying function won't be called until all - * async pre hooks have called `done()`. - */ - it('can execute parallel (async) pre hooks', function(done) { - hooks.pre('cook', true, function(next, done) { - this.bacon = 3; - next(); - setTimeout(function() { - done(); - }, 5); - }); - - hooks.pre('cook', true, function(next, done) { - next(); - var _this = this; - setTimeout(function() { - _this.eggs = 4; - done(); - }, 10); - }); - - hooks.pre('cook', function(next) { - this.waffles = false; - next(); - }); - - var obj = { bacon: 0, eggs: 0 }; - - hooks.execPre('cook', obj, function() { - assert.equal(3, obj.bacon); - assert.equal(4, obj.eggs); - assert.equal(false, obj.waffles); - // acquit:ignore:start - done(); - // acquit:ignore:end - }); - }); - - /* You can also return a promise from your pre hooks instead of calling - * `next()`. When the returned promise resolves, kareem will kick off the - * next middleware. - */ - it('supports returning a promise', function(done) { - hooks.pre('cook', function() { - return new Promise(resolve => { - setTimeout(() => { - this.bacon = 3; - resolve(); - }, 100); - }); - }); - - var obj = { bacon: 0 }; - - hooks.execPre('cook', obj, function() { - assert.equal(3, obj.bacon); - // acquit:ignore:start - done(); - // acquit:ignore:end - }); - }); -}); - -describe('post hooks', function() { - var hooks; - - beforeEach(function() { - hooks = new Kareem(); - }); - - it('runs without any hooks specified', function(done) { - hooks.execPost('cook', null, [1], function(error, eggs) { - assert.ifError(error); - assert.equal(1, eggs); - done(); - }); - }); - - it('executes with parameters passed in', function(done) { - hooks.post('cook', function(eggs, bacon, callback) { - assert.equal(1, eggs); - assert.equal(2, bacon); - callback(); - }); - - hooks.execPost('cook', null, [1, 2], function(error, eggs, bacon) { - assert.ifError(error); - assert.equal(1, eggs); - assert.equal(2, bacon); - // acquit:ignore:start - done(); - // acquit:ignore:end - }); - }); - - it('can use synchronous post hooks', function(done) { - var execed = {}; - - hooks.post('cook', function(eggs, bacon) { - execed.first = true; - assert.equal(1, eggs); - assert.equal(2, bacon); - }); - - hooks.post('cook', function(eggs, bacon, callback) { - execed.second = true; - assert.equal(1, eggs); - assert.equal(2, bacon); - callback(); - }); - - hooks.execPost('cook', null, [1, 2], function(error, eggs, bacon) { - assert.ifError(error); - assert.equal(2, Object.keys(execed).length); - assert.ok(execed.first); - assert.ok(execed.second); - assert.equal(1, eggs); - assert.equal(2, bacon); - // acquit:ignore:start - done(); - // acquit:ignore:end - }); - }); - - /* You can also return a promise from your post hooks instead of calling - * `next()`. When the returned promise resolves, kareem will kick off the - * next middleware. - */ - it('supports returning a promise', function(done) { - hooks.post('cook', function(bacon) { - return new Promise(resolve => { - setTimeout(() => { - this.bacon = 3; - resolve(); - }, 100); - }); - }); - - var obj = { bacon: 0 }; - - hooks.execPost('cook', obj, obj, function() { - assert.equal(obj.bacon, 3); - // acquit:ignore:start - done(); - // acquit:ignore:end - }); - }); -}); - -describe('wrap()', function() { - var hooks; - - beforeEach(function() { - hooks = new Kareem(); - }); - - it('wraps pre and post calls into one call', function(done) { - hooks.pre('cook', true, function(next, done) { - this.bacon = 3; - next(); - setTimeout(function() { - done(); - }, 5); - }); - - hooks.pre('cook', true, function(next, done) { - next(); - var _this = this; - setTimeout(function() { - _this.eggs = 4; - done(); - }, 10); - }); - - hooks.pre('cook', function(next) { - this.waffles = false; - next(); - }); - - hooks.post('cook', function(obj) { - obj.tofu = 'no'; - }); - - var obj = { bacon: 0, eggs: 0 }; - - var args = [obj]; - args.push(function(error, result) { - assert.ifError(error); - assert.equal(null, error); - assert.equal(3, obj.bacon); - assert.equal(4, obj.eggs); - assert.equal(false, obj.waffles); - assert.equal('no', obj.tofu); - - assert.equal(obj, result); - // acquit:ignore:start - done(); - // acquit:ignore:end - }); - - hooks.wrap( - 'cook', - function(o, callback) { - assert.equal(3, obj.bacon); - assert.equal(4, obj.eggs); - assert.equal(false, obj.waffles); - assert.equal(undefined, obj.tofu); - callback(null, o); - }, - obj, - args); - }); -}); - -describe('createWrapper()', function() { - var hooks; - - beforeEach(function() { - hooks = new Kareem(); - }); - - it('wraps wrap() into a callable function', function(done) { - hooks.pre('cook', true, function(next, done) { - this.bacon = 3; - next(); - setTimeout(function() { - done(); - }, 5); - }); - - hooks.pre('cook', true, function(next, done) { - next(); - var _this = this; - setTimeout(function() { - _this.eggs = 4; - done(); - }, 10); - }); - - hooks.pre('cook', function(next) { - this.waffles = false; - next(); - }); - - hooks.post('cook', function(obj) { - obj.tofu = 'no'; - }); - - var obj = { bacon: 0, eggs: 0 }; - - var cook = hooks.createWrapper( - 'cook', - function(o, callback) { - assert.equal(3, obj.bacon); - assert.equal(4, obj.eggs); - assert.equal(false, obj.waffles); - assert.equal(undefined, obj.tofu); - callback(null, o); - }, - obj); - - cook(obj, function(error, result) { - assert.ifError(error); - assert.equal(3, obj.bacon); - assert.equal(4, obj.eggs); - assert.equal(false, obj.waffles); - assert.equal('no', obj.tofu); - - assert.equal(obj, result); - // acquit:ignore:start - done(); - // acquit:ignore:end - }); - }); -}); - -describe('clone()', function() { - it('clones a Kareem object', function() { - var k1 = new Kareem(); - k1.pre('cook', function() {}); - k1.post('cook', function() {}); - - var k2 = k1.clone(); - assert.deepEqual(Array.from(k2._pres.keys()), ['cook']); - assert.deepEqual(Array.from(k2._posts.keys()), ['cook']); - }); -}); - -describe('merge()', function() { - it('pulls hooks from another Kareem object', function() { - var k1 = new Kareem(); - var test1 = function() {}; - k1.pre('cook', test1); - k1.post('cook', function() {}); - - var k2 = new Kareem(); - var test2 = function() {}; - k2.pre('cook', test2); - var k3 = k2.merge(k1); - assert.equal(k3._pres.get('cook').length, 2); - assert.equal(k3._pres.get('cook')[0].fn, test2); - assert.equal(k3._pres.get('cook')[1].fn, test1); - assert.equal(k3._posts.get('cook').length, 1); - }); -}); diff --git a/food-ordering-app/server/node_modules/kareem/test/misc.test.js b/food-ordering-app/server/node_modules/kareem/test/misc.test.js deleted file mode 100644 index db3e4e6bf..000000000 --- a/food-ordering-app/server/node_modules/kareem/test/misc.test.js +++ /dev/null @@ -1,71 +0,0 @@ -'use strict'; - -const assert = require('assert'); -const Kareem = require('../'); -const { describe, it } = require('mocha'); - -describe('hasHooks', function() { - it('returns false for toString (Automattic/mongoose#6538)', function() { - const k = new Kareem(); - assert.ok(!k.hasHooks('toString')); - }); -}); - -describe('merge', function() { - it('handles async pres if source doesnt have them', function() { - const k1 = new Kareem(); - k1.pre('cook', true, function(next, done) { - setTimeout( - function() { - done('error!'); - }, - 5); - - next(); - }); - - assert.equal(k1._pres.get('cook').numAsync, 1); - - const k2 = new Kareem(); - const k3 = k2.merge(k1); - assert.equal(k3._pres.get('cook').numAsync, 1); - }); -}); - -describe('filter', function() { - it('returns clone with only hooks that match `fn()`', function() { - const k1 = new Kareem(); - - k1.pre('update', { document: true }, f1); - k1.pre('update', { query: true }, f2); - k1.pre('remove', { document: true }, f3); - - k1.post('update', { document: true }, f1); - k1.post('update', { query: true }, f2); - k1.post('remove', { document: true }, f3); - - const k2 = k1.filter(hook => hook.document); - assert.equal(k2._pres.get('update').length, 1); - assert.equal(k2._pres.get('update')[0].fn, f1); - assert.equal(k2._pres.get('remove').length, 1); - assert.equal(k2._pres.get('remove')[0].fn, f3); - - assert.equal(k2._posts.get('update').length, 1); - assert.equal(k2._posts.get('update')[0].fn, f1); - assert.equal(k2._posts.get('remove').length, 1); - assert.equal(k2._posts.get('remove')[0].fn, f3); - - const k3 = k1.filter(hook => hook.query); - assert.equal(k3._pres.get('update').length, 1); - assert.equal(k3._pres.get('update')[0].fn, f2); - assert.ok(!k3._pres.has('remove')); - - assert.equal(k3._posts.get('update').length, 1); - assert.equal(k3._posts.get('update')[0].fn, f2); - assert.ok(!k3._posts.has('remove')); - - function f1() {} - function f2() {} - function f3() {} - }); -}); diff --git a/food-ordering-app/server/node_modules/kareem/test/post.test.js b/food-ordering-app/server/node_modules/kareem/test/post.test.js deleted file mode 100644 index 36a307292..000000000 --- a/food-ordering-app/server/node_modules/kareem/test/post.test.js +++ /dev/null @@ -1,264 +0,0 @@ -'use strict'; - -const assert = require('assert'); -const Kareem = require('../'); -const { beforeEach, describe, it } = require('mocha'); - -describe('execPost', function() { - var hooks; - - beforeEach(function() { - hooks = new Kareem(); - }); - - it('handles errors', function(done) { - hooks.post('cook', function(eggs, callback) { - callback('error!'); - }); - - hooks.execPost('cook', null, [4], function(error, eggs) { - assert.equal('error!', error); - assert.ok(!eggs); - done(); - }); - }); - - it('unshift', function() { - var f1 = function() {}; - var f2 = function() {}; - hooks.post('cook', f1); - hooks.post('cook', f2, true); - assert.strictEqual(hooks._posts.get('cook')[0].fn, f2); - assert.strictEqual(hooks._posts.get('cook')[1].fn, f1); - }); - - it('arbitrary options', function() { - const f1 = function() {}; - const f2 = function() {}; - hooks.post('cook', { foo: 'bar' }, f1); - hooks.post('cook', { bar: 'baz' }, f2, true); - assert.equal(hooks._posts.get('cook')[1].foo, 'bar'); - assert.equal(hooks._posts.get('cook')[0].bar, 'baz'); - }); - - it('throws error if no function', function() { - assert.throws(() => hooks.post('test'), /got "undefined"/); - }); - - it('multiple posts', function(done) { - hooks.post('cook', function(eggs, callback) { - setTimeout( - function() { - callback(); - }, - 5); - }); - - hooks.post('cook', function(eggs, callback) { - setTimeout( - function() { - callback(); - }, - 5); - }); - - hooks.execPost('cook', null, [4], function(error, eggs) { - assert.ifError(error); - assert.equal(4, eggs); - done(); - }); - }); - - it('error posts', function(done) { - var called = {}; - hooks.post('cook', function(eggs, callback) { - called.first = true; - callback(); - }); - - hooks.post('cook', function(eggs, callback) { - called.second = true; - callback(new Error('fail')); - }); - - hooks.post('cook', function(eggs, callback) { - assert.ok(false); - }); - - hooks.post('cook', function(error, eggs, callback) { - called.fourth = true; - assert.equal(error.message, 'fail'); - callback(new Error('fourth')); - }); - - hooks.post('cook', function(error, eggs, callback) { - called.fifth = true; - assert.equal(error.message, 'fourth'); - callback(new Error('fifth')); - }); - - hooks.execPost('cook', null, [4], function(error, eggs) { - assert.ok(error); - assert.equal(error.message, 'fifth'); - assert.deepEqual(called, { - first: true, - second: true, - fourth: true, - fifth: true - }); - done(); - }); - }); - - it('error posts with initial error', function(done) { - var called = {}; - - hooks.post('cook', function(eggs, callback) { - assert.ok(false); - }); - - hooks.post('cook', function(error, eggs, callback) { - called.second = true; - assert.equal(error.message, 'fail'); - callback(new Error('second')); - }); - - hooks.post('cook', function(error, eggs, callback) { - called.third = true; - assert.equal(error.message, 'second'); - callback(new Error('third')); - }); - - hooks.post('cook', function(error, eggs, callback) { - called.fourth = true; - assert.equal(error.message, 'third'); - callback(); - }); - - var options = { error: new Error('fail') }; - hooks.execPost('cook', null, [4], options, function(error, eggs) { - assert.ok(error); - assert.equal(error.message, 'third'); - assert.deepEqual(called, { - second: true, - third: true, - fourth: true - }); - done(); - }); - }); - - it('supports returning a promise', function(done) { - var calledPost = 0; - - hooks.post('cook', function() { - return new Promise(resolve => { - setTimeout(() => { - ++calledPost; - resolve(); - }, 100); - }); - }); - - hooks.execPost('cook', null, [], {}, function(error) { - assert.ifError(error); - assert.equal(calledPost, 1); - done(); - }); - }); - - it('supports overwriteResult', function(done) { - hooks.post('cook', function(eggs, callback) { - callback(Kareem.overwriteResult(5)); - }); - - hooks.post('cook', function(eggs, callback) { - assert.equal(eggs, 5); - callback(); - }); - - var options = {}; - hooks.execPost('cook', null, [4], options, function(error, eggs) { - assert.equal(eggs, 5); - done(); - }); - }); - - it('supports sync returning overwriteResult', function(done) { - hooks.post('cook', function() { - return Kareem.overwriteResult(5); - }); - - hooks.post('cook', function(eggs, callback) { - assert.equal(eggs, 5); - callback(); - }); - - var options = {}; - hooks.execPost('cook', null, [4], options, function(error, eggs) { - assert.ifError(error); - assert.equal(eggs, 5); - done(); - }); - }); - - it('supports sync overwriteResult', function() { - hooks.post('cook', function(eggs) { - return Kareem.overwriteResult(5); - }); - - hooks.post('cook', function(eggs) { - assert.equal(eggs, 5); - }); - - var options = {}; - const res = hooks.execPostSync('cook', null, [4], options); - assert.deepEqual(res, [5]); - }); - - it('supports overwriteResult with promises', function(done) { - hooks.post('cook', function(eggs) { - return Promise.resolve(Kareem.overwriteResult(5)); - }); - - hooks.post('cook', function(eggs) { - assert.equal(eggs, 5); - }); - - var options = {}; - hooks.execPost('cook', null, [4], options, function(error, eggs) { - assert.equal(eggs, 5); - done(); - }); - }); -}); - -describe('execPostSync', function() { - var hooks; - - beforeEach(function() { - hooks = new Kareem(); - }); - - it('executes hooks synchronously', function() { - var execed = {}; - - hooks.post('cook', function() { - execed.first = true; - }); - - hooks.post('cook', function() { - execed.second = true; - }); - - hooks.execPostSync('cook', null); - assert.ok(execed.first); - assert.ok(execed.second); - }); - - it('works with no hooks specified', function() { - assert.doesNotThrow(function() { - hooks.execPostSync('cook', null); - }); - }); -}); diff --git a/food-ordering-app/server/node_modules/kareem/test/pre.test.js b/food-ordering-app/server/node_modules/kareem/test/pre.test.js deleted file mode 100644 index 3c2a8593f..000000000 --- a/food-ordering-app/server/node_modules/kareem/test/pre.test.js +++ /dev/null @@ -1,359 +0,0 @@ -'use strict'; - -const assert = require('assert'); -const Kareem = require('../'); -const { beforeEach, describe, it } = require('mocha'); - -describe('execPre', function() { - var hooks; - - beforeEach(function() { - hooks = new Kareem(); - }); - - it('handles errors with multiple pres', function(done) { - var execed = {}; - - hooks.pre('cook', function(done) { - execed.first = true; - done(); - }); - - hooks.pre('cook', function(done) { - execed.second = true; - done('error!'); - }); - - hooks.pre('cook', function(done) { - execed.third = true; - done(); - }); - - hooks.execPre('cook', null, function(err) { - assert.equal('error!', err); - assert.equal(2, Object.keys(execed).length); - assert.ok(execed.first); - assert.ok(execed.second); - done(); - }); - }); - - it('sync errors', function(done) { - var called = 0; - - hooks.pre('cook', function(next) { - throw new Error('woops!'); - }); - - hooks.pre('cook', function(next) { - ++called; - next(); - }); - - hooks.execPre('cook', null, function(err) { - assert.equal(err.message, 'woops!'); - assert.equal(called, 0); - done(); - }); - }); - - it('unshift', function() { - var f1 = function() {}; - var f2 = function() {}; - hooks.pre('cook', false, f1); - hooks.pre('cook', false, f2, null, true); - assert.strictEqual(hooks._pres.get('cook')[0].fn, f2); - assert.strictEqual(hooks._pres.get('cook')[1].fn, f1); - }); - - it('throws error if no function', function() { - assert.throws(() => hooks.pre('test'), /got "undefined"/); - }); - - it('arbitrary options', function() { - const f1 = function() {}; - const f2 = function() {}; - hooks.pre('cook', { foo: 'bar' }, f1); - hooks.pre('cook', { bar: 'baz' }, f2, null, true); - assert.equal(hooks._pres.get('cook')[1].foo, 'bar'); - assert.equal(hooks._pres.get('cook')[0].bar, 'baz'); - }); - - it('handles async errors', function(done) { - var execed = {}; - - hooks.pre('cook', true, function(next, done) { - execed.first = true; - setTimeout( - function() { - done('error!'); - }, - 5); - - next(); - }); - - hooks.pre('cook', true, function(next, done) { - execed.second = true; - setTimeout( - function() { - done('other error!'); - }, - 10); - - next(); - }); - - hooks.execPre('cook', null, function(err) { - assert.equal('error!', err); - assert.equal(2, Object.keys(execed).length); - assert.ok(execed.first); - assert.ok(execed.second); - done(); - }); - }); - - it('handles async errors in next()', function(done) { - var execed = {}; - - hooks.pre('cook', true, function(next, done) { - execed.first = true; - setTimeout( - function() { - done('other error!'); - }, - 15); - - next(); - }); - - hooks.pre('cook', true, function(next, done) { - execed.second = true; - setTimeout( - function() { - next('error!'); - done('another error!'); - }, - 5); - }); - - hooks.execPre('cook', null, function(err) { - assert.equal('error!', err); - assert.equal(2, Object.keys(execed).length); - assert.ok(execed.first); - assert.ok(execed.second); - done(); - }); - }); - - it('handles async errors in next() when already done', function(done) { - var execed = {}; - - hooks.pre('cook', true, function(next, done) { - execed.first = true; - setTimeout( - function() { - done('other error!'); - }, - 5); - - next(); - }); - - hooks.pre('cook', true, function(next, done) { - execed.second = true; - setTimeout( - function() { - next('error!'); - done('another error!'); - }, - 25); - }); - - hooks.execPre('cook', null, function(err) { - assert.equal('other error!', err); - assert.equal(2, Object.keys(execed).length); - assert.ok(execed.first); - assert.ok(execed.second); - done(); - }); - }); - - it('async pres with clone()', function(done) { - var execed = false; - - hooks.pre('cook', true, function(next, done) { - execed = true; - setTimeout( - function() { - done(); - }, - 5); - - next(); - }); - - hooks.clone().execPre('cook', null, function(err) { - assert.ifError(err); - assert.ok(execed); - done(); - }); - }); - - it('returns correct error when async pre errors', function(done) { - var execed = {}; - - hooks.pre('cook', true, function(next, done) { - execed.first = true; - setTimeout( - function() { - done('other error!'); - }, - 5); - - next(); - }); - - hooks.pre('cook', function(next) { - execed.second = true; - setTimeout( - function() { - next('error!'); - }, - 15); - }); - - hooks.execPre('cook', null, function(err) { - assert.equal('other error!', err); - assert.equal(2, Object.keys(execed).length); - assert.ok(execed.first); - assert.ok(execed.second); - done(); - }); - }); - - it('lets async pres run when fully sync pres are done', function(done) { - var execed = {}; - - hooks.pre('cook', true, function(next, done) { - execed.first = true; - setTimeout( - function() { - done(); - }, - 5); - - next(); - }); - - hooks.pre('cook', function() { - execed.second = true; - }); - - hooks.execPre('cook', null, function(err) { - assert.ifError(err); - assert.equal(2, Object.keys(execed).length); - assert.ok(execed.first); - assert.ok(execed.second); - done(); - }); - }); - - it('allows passing arguments to the next pre', function(done) { - var execed = {}; - - hooks.pre('cook', function(next) { - execed.first = true; - next(null, 'test'); - }); - - hooks.pre('cook', function(next, p) { - execed.second = true; - assert.equal(p, 'test'); - next(); - }); - - hooks.pre('cook', function(next, p) { - execed.third = true; - assert.ok(!p); - next(); - }); - - hooks.execPre('cook', null, function(err) { - assert.ifError(err); - assert.equal(3, Object.keys(execed).length); - assert.ok(execed.first); - assert.ok(execed.second); - assert.ok(execed.third); - done(); - }); - }); - - it('handles sync errors in pre if there are more hooks', function(done) { - var execed = {}; - - hooks.pre('cook', function() { - execed.first = true; - throw new Error('Oops!'); - }); - - hooks.pre('cook', function() { - execed.second = true; - }); - - hooks.execPre('cook', null, function(err) { - assert.ok(err); - assert.ok(execed.first); - assert.equal(err.message, 'Oops!'); - done(); - }); - }); - - it('supports skipWrappedFunction', function(done) { - var execed = {}; - - hooks.pre('cook', function(callback) { - callback(Kareem.skipWrappedFunction(42)); - }); - - hooks.pre('cook', function() { - execed.second = true; - }); - - hooks.execPre('cook', null, function(err) { - assert.ok(execed.second); - assert.ok(err instanceof Kareem.skipWrappedFunction); - done(); - }); - }); -}); - -describe('execPreSync', function() { - var hooks; - - beforeEach(function() { - hooks = new Kareem(); - }); - - it('executes hooks synchronously', function() { - var execed = {}; - - hooks.pre('cook', function() { - execed.first = true; - }); - - hooks.pre('cook', function() { - execed.second = true; - }); - - hooks.execPreSync('cook', null); - assert.ok(execed.first); - assert.ok(execed.second); - }); - - it('works with no hooks specified', function() { - assert.doesNotThrow(function() { - hooks.execPreSync('cook', null); - }); - }); -}); diff --git a/food-ordering-app/server/node_modules/kareem/test/wrap.test.js b/food-ordering-app/server/node_modules/kareem/test/wrap.test.js deleted file mode 100644 index c248686ff..000000000 --- a/food-ordering-app/server/node_modules/kareem/test/wrap.test.js +++ /dev/null @@ -1,467 +0,0 @@ -'use strict'; - -var assert = require('assert'); -var Kareem = require('../'); -const { beforeEach, describe, it } = require('mocha'); - -describe('wrap()', function() { - var hooks; - - beforeEach(function() { - hooks = new Kareem(); - }); - - it('handles pre errors', function(done) { - hooks.pre('cook', function(done) { - done('error!'); - }); - - hooks.post('cook', function(obj) { - obj.tofu = 'no'; - }); - - var obj = { bacon: 0, eggs: 0 }; - - var args = [obj]; - args.push(function(error, result) { - assert.equal('error!', error); - assert.ok(!result); - assert.equal(undefined, obj.tofu); - done(); - }); - - hooks.wrap( - 'cook', - function(o, callback) { - // Should never get called - assert.ok(false); - callback(null, o); - }, - obj, - args); - }); - - it('handles pre errors when no callback defined', function(done) { - hooks.pre('cook', function(done) { - done('error!'); - }); - - hooks.post('cook', function(obj) { - obj.tofu = 'no'; - }); - - var obj = { bacon: 0, eggs: 0 }; - - var args = [obj]; - - hooks.wrap( - 'cook', - function(o, callback) { - // Should never get called - assert.ok(false); - callback(null, o); - }, - obj, - args); - - setTimeout( - function() { - done(); - }, - 25); - }); - - it('handles errors in wrapped function', function(done) { - hooks.pre('cook', function(done) { - done(); - }); - - hooks.post('cook', function(obj) { - obj.tofu = 'no'; - }); - - var obj = { bacon: 0, eggs: 0 }; - - var args = [obj]; - args.push(function(error, result) { - assert.equal('error!', error); - assert.ok(!result); - assert.equal(undefined, obj.tofu); - done(); - }); - - hooks.wrap( - 'cook', - function(o, callback) { - callback('error!'); - }, - obj, - args); - }); - - it('handles errors in post', function(done) { - hooks.pre('cook', function(done) { - done(); - }); - - hooks.post('cook', function(obj, callback) { - obj.tofu = 'no'; - callback('error!'); - }); - - var obj = { bacon: 0, eggs: 0 }; - - var args = [obj]; - args.push(function(error, result) { - assert.equal('error!', error); - assert.ok(!result); - assert.equal('no', obj.tofu); - done(); - }); - - hooks.wrap( - 'cook', - function(o, callback) { - callback(null, o); - }, - obj, - args); - }); - - it('defers errors to post hooks if enabled', function(done) { - hooks.pre('cook', function(done) { - done(new Error('fail')); - }); - - hooks.post('cook', function(error, res, callback) { - callback(new Error('another error occurred')); - }); - - var args = []; - args.push(function(error) { - assert.equal(error.message, 'another error occurred'); - done(); - }); - - hooks.wrap( - 'cook', - function(callback) { - assert.ok(false); - callback(); - }, - null, - args, - { useErrorHandlers: true, numCallbackParams: 1 }); - }); - - it('error handlers with no callback', function(done) { - hooks.pre('cook', function(done) { - done(new Error('fail')); - }); - - hooks.post('cook', function(error, callback) { - assert.equal(error.message, 'fail'); - done(); - }); - - var args = []; - - hooks.wrap( - 'cook', - function(callback) { - assert.ok(false); - callback(); - }, - null, - args, - { useErrorHandlers: true }); - }); - - it('error handlers with no error', function(done) { - hooks.post('cook', function(error, callback) { - callback(new Error('another error occurred')); - }); - - var args = []; - args.push(function(error) { - assert.ifError(error); - done(); - }); - - hooks.wrap( - 'cook', - function(callback) { - callback(); - }, - null, - args, - { useErrorHandlers: true }); - }); - - it('works with no args', function(done) { - hooks.pre('cook', function(done) { - done(); - }); - - hooks.post('cook', function(callback) { - obj.tofu = 'no'; - callback(); - }); - - var obj = { bacon: 0, eggs: 0 }; - - var args = []; - - hooks.wrap( - 'cook', - function(callback) { - callback(null); - }, - obj, - args); - - setTimeout( - function() { - assert.equal('no', obj.tofu); - done(); - }, - 25); - }); - - it('handles pre errors with no args', function(done) { - hooks.pre('cook', function(done) { - done('error!'); - }); - - hooks.post('cook', function(callback) { - obj.tofu = 'no'; - callback(); - }); - - var obj = { bacon: 0, eggs: 0 }; - - var args = []; - - hooks.wrap( - 'cook', - function(callback) { - callback(null); - }, - obj, - args); - - setTimeout( - function() { - assert.equal(undefined, obj.tofu); - done(); - }, - 25); - }); - - it('handles wrapped function errors with no args', function(done) { - hooks.pre('cook', function(done) { - obj.waffles = false; - done(); - }); - - hooks.post('cook', function(callback) { - obj.tofu = 'no'; - callback(); - }); - - var obj = { bacon: 0, eggs: 0 }; - - var args = []; - - hooks.wrap( - 'cook', - function(callback) { - callback('error!'); - }, - obj, - args); - - setTimeout( - function() { - assert.equal(false, obj.waffles); - assert.equal(undefined, obj.tofu); - done(); - }, - 25); - }); - - it('supports overwriteResult', function(done) { - hooks.post('cook', function(eggs, callback) { - callback(Kareem.overwriteResult(5)); - }); - - const args = [(err, res) => { - assert.ifError(err); - assert.equal(res, 5); - done(); - }]; - - hooks.wrap( - 'cook', - function(callback) { - callback(null, 4); - }, - null, - args); - }); - - it('supports skipWrappedFunction', function(done) { - const execed = {}; - hooks.pre('cook', function pre(callback) { - execed.pre = true; - callback(Kareem.skipWrappedFunction(3)); - }); - - hooks.post('cook', function(res, callback) { - assert.equal(res, 3); - execed.post = true; - callback(); - }); - - const args = [(err, res) => { - assert.ifError(err); - assert.equal(res, 3); - assert.ok(execed.pre); - assert.ok(execed.post); - assert.ok(!execed.wrapped); - done(); - }]; - - hooks.wrap( - 'cook', - function wrapped(callback) { - execed.wrapped = true; - callback(); - }, - null, - args); - }); - - it('supports skipWrappedFunction with arguments', function(done) { - const execed = {}; - hooks.pre('cook', function pre(callback, arg) { - execed.pre = true; - assert.strictEqual(arg, 4); - callback(Kareem.skipWrappedFunction(3)); - }); - - hooks.post('cook', function(res, callback) { - assert.equal(res, 3); - execed.post = true; - callback(); - }); - - const args = [4, (err, res) => { - assert.ifError(err); - assert.equal(res, 3); - assert.ok(execed.pre); - assert.ok(execed.post); - assert.ok(!execed.wrapped); - done(); - }]; - - hooks.wrap( - 'cook', - function wrapped(arg, callback) { - execed.wrapped = true; - callback(); - }, - null, - args); - }); - - it('handles post errors with no args', function(done) { - hooks.pre('cook', function(done) { - obj.waffles = false; - done(); - }); - - hooks.post('cook', function(callback) { - obj.tofu = 'no'; - callback('error!'); - }); - - var obj = { bacon: 0, eggs: 0 }; - - var args = []; - - hooks.wrap( - 'cook', - function(callback) { - callback(); - }, - obj, - args); - - setTimeout( - function() { - assert.equal(false, obj.waffles); - assert.equal('no', obj.tofu); - done(); - }, - 25); - }); - - it('catches sync errors', function(done) { - hooks.pre('cook', function(done) { - done(); - }); - - hooks.post('cook', function(callback) { - callback(); - }); - - var args = []; - args.push(function(error) { - assert.equal(error.message, 'oops!'); - done(); - }); - - hooks.wrap( - 'cook', - function() { - throw new Error('oops!'); - }, - null, - args); - }); - - it('sync wrappers', function() { - var calledPre = 0; - var calledFn = 0; - var calledPost = 0; - hooks.pre('cook', function() { - ++calledPre; - }); - - hooks.post('cook', function() { - ++calledPost; - }); - - var wrapper = hooks.createWrapperSync('cook', function() { ++calledFn; }); - - wrapper(); - - assert.equal(calledPre, 1); - assert.equal(calledFn, 1); - assert.equal(calledPost, 1); - }); - - it('sync wrappers with overwriteResult', function() { - hooks.pre('cook', function() { - }); - - hooks.post('cook', function() { - return Kareem.overwriteResult(5); - }); - - const wrapper = hooks.createWrapperSync('cook', function() { return 4; }); - - assert.strictEqual(wrapper(), 5); - }); -}); diff --git a/food-ordering-app/server/node_modules/math-intrinsics/.eslintrc b/food-ordering-app/server/node_modules/math-intrinsics/.eslintrc new file mode 100644 index 000000000..d90a1bc65 --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/.eslintrc @@ -0,0 +1,16 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "eqeqeq": ["error", "allow-null"], + "id-length": "off", + "new-cap": ["error", { + "capIsNewExceptions": [ + "RequireObjectCoercible", + "ToObject", + ], + }], + }, +} diff --git a/food-ordering-app/server/node_modules/math-intrinsics/.github/FUNDING.yml b/food-ordering-app/server/node_modules/math-intrinsics/.github/FUNDING.yml new file mode 100644 index 000000000..868f4ff48 --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/math-intrinsics +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with a single custom sponsorship URL diff --git a/food-ordering-app/server/node_modules/math-intrinsics/CHANGELOG.md b/food-ordering-app/server/node_modules/math-intrinsics/CHANGELOG.md new file mode 100644 index 000000000..9cf48f5a1 --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/CHANGELOG.md @@ -0,0 +1,24 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.1.0](https://github.com/es-shims/math-intrinsics/compare/v1.0.0...v1.1.0) - 2024-12-18 + +### Commits + +- [New] add `round` [`7cfb044`](https://github.com/es-shims/math-intrinsics/commit/7cfb04460c0fbdf1ca101eecbac3f59d11994130) +- [Tests] add attw [`e96be8f`](https://github.com/es-shims/math-intrinsics/commit/e96be8fbf58449eafe976446a0470e6ea561ad8d) +- [Dev Deps] update `@types/tape` [`30d0023`](https://github.com/es-shims/math-intrinsics/commit/30d00234ce8a3fa0094a61cd55d6686eb91e36ec) + +## v1.0.0 - 2024-12-11 + +### Commits + +- Initial implementation, tests, readme, types [`b898caa`](https://github.com/es-shims/math-intrinsics/commit/b898caae94e9994a94a42b8740f7bbcfd0a868fe) +- Initial commit [`02745b0`](https://github.com/es-shims/math-intrinsics/commit/02745b03a62255af8a332771987b55d127538d9c) +- [New] add `constants/maxArrayLength`, `mod` [`b978178`](https://github.com/es-shims/math-intrinsics/commit/b978178a57685bd23ed1c7efe2137f3784f5fcc5) +- npm init [`a39fc57`](https://github.com/es-shims/math-intrinsics/commit/a39fc57e5639a645d0bd52a0dc56202480223be2) +- Only apps should have lockfiles [`9451580`](https://github.com/es-shims/math-intrinsics/commit/94515800fb34db4f3cc7e99290042d45609ac7bd) diff --git a/food-ordering-app/server/node_modules/math-intrinsics/LICENSE b/food-ordering-app/server/node_modules/math-intrinsics/LICENSE new file mode 100644 index 000000000..34995e79d --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 ECMAScript Shims + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/food-ordering-app/server/node_modules/math-intrinsics/README.md b/food-ordering-app/server/node_modules/math-intrinsics/README.md new file mode 100644 index 000000000..4a66dcf24 --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/README.md @@ -0,0 +1,50 @@ +# math-intrinsics [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +ES Math-related intrinsics and helpers, robustly cached. + + - `abs` + - `floor` + - `isFinite` + - `isInteger` + - `isNaN` + - `isNegativeZero` + - `max` + - `min` + - `mod` + - `pow` + - `round` + - `sign` + - `constants/maxArrayLength` + - `constants/maxSafeInteger` + - `constants/maxValue` + + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +## Security + +Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report. + +[package-url]: https://npmjs.org/package/math-intrinsics +[npm-version-svg]: https://versionbadg.es/es-shims/math-intrinsics.svg +[deps-svg]: https://david-dm.org/es-shims/math-intrinsics.svg +[deps-url]: https://david-dm.org/es-shims/math-intrinsics +[dev-deps-svg]: https://david-dm.org/es-shims/math-intrinsics/dev-status.svg +[dev-deps-url]: https://david-dm.org/es-shims/math-intrinsics#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/math-intrinsics.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/math-intrinsics.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/es-object.svg +[downloads-url]: https://npm-stat.com/charts.html?package=math-intrinsics +[codecov-image]: https://codecov.io/gh/es-shims/math-intrinsics/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/es-shims/math-intrinsics/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/es-shims/math-intrinsics +[actions-url]: https://github.com/es-shims/math-intrinsics/actions diff --git a/food-ordering-app/server/node_modules/math-intrinsics/abs.d.ts b/food-ordering-app/server/node_modules/math-intrinsics/abs.d.ts new file mode 100644 index 000000000..14ad9c699 --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/abs.d.ts @@ -0,0 +1 @@ +export = Math.abs; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/math-intrinsics/abs.js b/food-ordering-app/server/node_modules/math-intrinsics/abs.js new file mode 100644 index 000000000..a751424cd --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/abs.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./abs')} */ +module.exports = Math.abs; diff --git a/food-ordering-app/server/node_modules/math-intrinsics/constants/maxArrayLength.d.ts b/food-ordering-app/server/node_modules/math-intrinsics/constants/maxArrayLength.d.ts new file mode 100644 index 000000000..b92d46be2 --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/constants/maxArrayLength.d.ts @@ -0,0 +1,3 @@ +declare const MAX_ARRAY_LENGTH: 4294967295; + +export = MAX_ARRAY_LENGTH; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/math-intrinsics/constants/maxArrayLength.js b/food-ordering-app/server/node_modules/math-intrinsics/constants/maxArrayLength.js new file mode 100644 index 000000000..cfc6affd0 --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/constants/maxArrayLength.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./maxArrayLength')} */ +module.exports = 4294967295; // Math.pow(2, 32) - 1; diff --git a/food-ordering-app/server/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts b/food-ordering-app/server/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts new file mode 100644 index 000000000..fee3f621e --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts @@ -0,0 +1,3 @@ +declare const MAX_SAFE_INTEGER: 9007199254740991; + +export = MAX_SAFE_INTEGER; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/math-intrinsics/constants/maxSafeInteger.js b/food-ordering-app/server/node_modules/math-intrinsics/constants/maxSafeInteger.js new file mode 100644 index 000000000..b568ad393 --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/constants/maxSafeInteger.js @@ -0,0 +1,5 @@ +'use strict'; + +/** @type {import('./maxSafeInteger')} */ +// eslint-disable-next-line no-extra-parens +module.exports = /** @type {import('./maxSafeInteger')} */ (Number.MAX_SAFE_INTEGER) || 9007199254740991; // Math.pow(2, 53) - 1; diff --git a/food-ordering-app/server/node_modules/math-intrinsics/constants/maxValue.d.ts b/food-ordering-app/server/node_modules/math-intrinsics/constants/maxValue.d.ts new file mode 100644 index 000000000..292cb8271 --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/constants/maxValue.d.ts @@ -0,0 +1,3 @@ +declare const MAX_VALUE: 1.7976931348623157e+308; + +export = MAX_VALUE; diff --git a/food-ordering-app/server/node_modules/math-intrinsics/constants/maxValue.js b/food-ordering-app/server/node_modules/math-intrinsics/constants/maxValue.js new file mode 100644 index 000000000..a2202dc39 --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/constants/maxValue.js @@ -0,0 +1,5 @@ +'use strict'; + +/** @type {import('./maxValue')} */ +// eslint-disable-next-line no-extra-parens +module.exports = /** @type {import('./maxValue')} */ (Number.MAX_VALUE) || 1.7976931348623157e+308; diff --git a/food-ordering-app/server/node_modules/math-intrinsics/floor.d.ts b/food-ordering-app/server/node_modules/math-intrinsics/floor.d.ts new file mode 100644 index 000000000..9265236f2 --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/floor.d.ts @@ -0,0 +1 @@ +export = Math.floor; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/math-intrinsics/floor.js b/food-ordering-app/server/node_modules/math-intrinsics/floor.js new file mode 100644 index 000000000..ab0e5d7dc --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/floor.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./floor')} */ +module.exports = Math.floor; diff --git a/food-ordering-app/server/node_modules/math-intrinsics/isFinite.d.ts b/food-ordering-app/server/node_modules/math-intrinsics/isFinite.d.ts new file mode 100644 index 000000000..6daae331f --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/isFinite.d.ts @@ -0,0 +1,3 @@ +declare function isFinite(x: unknown): x is number | bigint; + +export = isFinite; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/math-intrinsics/isFinite.js b/food-ordering-app/server/node_modules/math-intrinsics/isFinite.js new file mode 100644 index 000000000..b201a5a52 --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/isFinite.js @@ -0,0 +1,12 @@ +'use strict'; + +var $isNaN = require('./isNaN'); + +/** @type {import('./isFinite')} */ +module.exports = function isFinite(x) { + return (typeof x === 'number' || typeof x === 'bigint') + && !$isNaN(x) + && x !== Infinity + && x !== -Infinity; +}; + diff --git a/food-ordering-app/server/node_modules/math-intrinsics/isInteger.d.ts b/food-ordering-app/server/node_modules/math-intrinsics/isInteger.d.ts new file mode 100644 index 000000000..13935a8cc --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/isInteger.d.ts @@ -0,0 +1,3 @@ +declare function isInteger(argument: unknown): argument is number; + +export = isInteger; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/math-intrinsics/isInteger.js b/food-ordering-app/server/node_modules/math-intrinsics/isInteger.js new file mode 100644 index 000000000..4b1b9a56d --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/isInteger.js @@ -0,0 +1,16 @@ +'use strict'; + +var $abs = require('./abs'); +var $floor = require('./floor'); + +var $isNaN = require('./isNaN'); +var $isFinite = require('./isFinite'); + +/** @type {import('./isInteger')} */ +module.exports = function isInteger(argument) { + if (typeof argument !== 'number' || $isNaN(argument) || !$isFinite(argument)) { + return false; + } + var absValue = $abs(argument); + return $floor(absValue) === absValue; +}; diff --git a/food-ordering-app/server/node_modules/math-intrinsics/isNaN.d.ts b/food-ordering-app/server/node_modules/math-intrinsics/isNaN.d.ts new file mode 100644 index 000000000..c1d4c5524 --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/isNaN.d.ts @@ -0,0 +1 @@ +export = Number.isNaN; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/math-intrinsics/isNaN.js b/food-ordering-app/server/node_modules/math-intrinsics/isNaN.js new file mode 100644 index 000000000..e36475cf8 --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/isNaN.js @@ -0,0 +1,6 @@ +'use strict'; + +/** @type {import('./isNaN')} */ +module.exports = Number.isNaN || function isNaN(a) { + return a !== a; +}; diff --git a/food-ordering-app/server/node_modules/math-intrinsics/isNegativeZero.d.ts b/food-ordering-app/server/node_modules/math-intrinsics/isNegativeZero.d.ts new file mode 100644 index 000000000..7ad88193e --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/isNegativeZero.d.ts @@ -0,0 +1,3 @@ +declare function isNegativeZero(x: unknown): boolean; + +export = isNegativeZero; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/math-intrinsics/isNegativeZero.js b/food-ordering-app/server/node_modules/math-intrinsics/isNegativeZero.js new file mode 100644 index 000000000..b69adcc5a --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/isNegativeZero.js @@ -0,0 +1,6 @@ +'use strict'; + +/** @type {import('./isNegativeZero')} */ +module.exports = function isNegativeZero(x) { + return x === 0 && 1 / x === 1 / -0; +}; diff --git a/food-ordering-app/server/node_modules/math-intrinsics/max.d.ts b/food-ordering-app/server/node_modules/math-intrinsics/max.d.ts new file mode 100644 index 000000000..ad6f43e35 --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/max.d.ts @@ -0,0 +1 @@ +export = Math.max; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/math-intrinsics/max.js b/food-ordering-app/server/node_modules/math-intrinsics/max.js new file mode 100644 index 000000000..edb55dfbc --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/max.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./max')} */ +module.exports = Math.max; diff --git a/food-ordering-app/server/node_modules/math-intrinsics/min.d.ts b/food-ordering-app/server/node_modules/math-intrinsics/min.d.ts new file mode 100644 index 000000000..fd90f2d50 --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/min.d.ts @@ -0,0 +1 @@ +export = Math.min; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/math-intrinsics/min.js b/food-ordering-app/server/node_modules/math-intrinsics/min.js new file mode 100644 index 000000000..5a4a7c714 --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/min.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./min')} */ +module.exports = Math.min; diff --git a/food-ordering-app/server/node_modules/math-intrinsics/mod.d.ts b/food-ordering-app/server/node_modules/math-intrinsics/mod.d.ts new file mode 100644 index 000000000..549dbd46e --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/mod.d.ts @@ -0,0 +1,3 @@ +declare function mod(number: number, modulo: number): number; + +export = mod; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/math-intrinsics/mod.js b/food-ordering-app/server/node_modules/math-intrinsics/mod.js new file mode 100644 index 000000000..4a98362ba --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/mod.js @@ -0,0 +1,9 @@ +'use strict'; + +var $floor = require('./floor'); + +/** @type {import('./mod')} */ +module.exports = function mod(number, modulo) { + var remain = number % modulo; + return $floor(remain >= 0 ? remain : remain + modulo); +}; diff --git a/food-ordering-app/server/node_modules/math-intrinsics/package.json b/food-ordering-app/server/node_modules/math-intrinsics/package.json new file mode 100644 index 000000000..067627354 --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/package.json @@ -0,0 +1,86 @@ +{ + "name": "math-intrinsics", + "version": "1.1.0", + "description": "ES Math-related intrinsics and helpers, robustly cached.", + "main": false, + "exports": { + "./abs": "./abs.js", + "./floor": "./floor.js", + "./isFinite": "./isFinite.js", + "./isInteger": "./isInteger.js", + "./isNaN": "./isNaN.js", + "./isNegativeZero": "./isNegativeZero.js", + "./max": "./max.js", + "./min": "./min.js", + "./mod": "./mod.js", + "./pow": "./pow.js", + "./sign": "./sign.js", + "./round": "./round.js", + "./constants/maxArrayLength": "./constants/maxArrayLength.js", + "./constants/maxSafeInteger": "./constants/maxSafeInteger.js", + "./constants/maxValue": "./constants/maxValue.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "pretest": "npm run lint", + "test": "npm run tests-only", + "tests-only": "nyc tape 'test/**/*.js'", + "posttest": "npx npm@'>= 10.2' audit --production", + "prelint": "evalmd README.md && eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git' | grep -v dist/)", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc && attw -P", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/es-shims/math-intrinsics.git" + }, + "author": "Jordan Harband ", + "license": "MIT", + "bugs": { + "url": "https://github.com/es-shims/math-intrinsics/issues" + }, + "homepage": "https://github.com/es-shims/math-intrinsics#readme", + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.1", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.2", + "@types/for-each": "^0.3.3", + "@types/object-inspect": "^1.13.0", + "@types/tape": "^5.8.0", + "auto-changelog": "^2.5.0", + "eclint": "^2.8.1", + "es-value-fixtures": "^1.5.0", + "eslint": "^8.8.0", + "evalmd": "^0.0.19", + "for-each": "^0.3.3", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "object-inspect": "^1.13.3", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/food-ordering-app/server/node_modules/math-intrinsics/pow.d.ts b/food-ordering-app/server/node_modules/math-intrinsics/pow.d.ts new file mode 100644 index 000000000..5873c441e --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/pow.d.ts @@ -0,0 +1 @@ +export = Math.pow; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/math-intrinsics/pow.js b/food-ordering-app/server/node_modules/math-intrinsics/pow.js new file mode 100644 index 000000000..c0a410381 --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/pow.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./pow')} */ +module.exports = Math.pow; diff --git a/food-ordering-app/server/node_modules/math-intrinsics/round.d.ts b/food-ordering-app/server/node_modules/math-intrinsics/round.d.ts new file mode 100644 index 000000000..da1fde3f6 --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/round.d.ts @@ -0,0 +1 @@ +export = Math.round; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/math-intrinsics/round.js b/food-ordering-app/server/node_modules/math-intrinsics/round.js new file mode 100644 index 000000000..b79215663 --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/round.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./round')} */ +module.exports = Math.round; diff --git a/food-ordering-app/server/node_modules/math-intrinsics/sign.d.ts b/food-ordering-app/server/node_modules/math-intrinsics/sign.d.ts new file mode 100644 index 000000000..c49cecaa2 --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/sign.d.ts @@ -0,0 +1,3 @@ +declare function sign(x: number): number; + +export = sign; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/math-intrinsics/sign.js b/food-ordering-app/server/node_modules/math-intrinsics/sign.js new file mode 100644 index 000000000..9e5173c80 --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/sign.js @@ -0,0 +1,11 @@ +'use strict'; + +var $isNaN = require('./isNaN'); + +/** @type {import('./sign')} */ +module.exports = function sign(number) { + if ($isNaN(number) || number === 0) { + return number; + } + return number < 0 ? -1 : +1; +}; diff --git a/food-ordering-app/server/node_modules/math-intrinsics/test/index.js b/food-ordering-app/server/node_modules/math-intrinsics/test/index.js new file mode 100644 index 000000000..0f90a5dc0 --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/test/index.js @@ -0,0 +1,192 @@ +'use strict'; + +var test = require('tape'); +var v = require('es-value-fixtures'); +var forEach = require('for-each'); +var inspect = require('object-inspect'); + +var abs = require('../abs'); +var floor = require('../floor'); +var isFinite = require('../isFinite'); +var isInteger = require('../isInteger'); +var isNaN = require('../isNaN'); +var isNegativeZero = require('../isNegativeZero'); +var max = require('../max'); +var min = require('../min'); +var mod = require('../mod'); +var pow = require('../pow'); +var round = require('../round'); +var sign = require('../sign'); + +var maxArrayLength = require('../constants/maxArrayLength'); +var maxSafeInteger = require('../constants/maxSafeInteger'); +var maxValue = require('../constants/maxValue'); + +test('abs', function (t) { + t.equal(abs(-1), 1, 'abs(-1) === 1'); + t.equal(abs(+1), 1, 'abs(+1) === 1'); + t.equal(abs(+0), +0, 'abs(+0) === +0'); + t.equal(abs(-0), +0, 'abs(-0) === +0'); + + t.end(); +}); + +test('floor', function (t) { + t.equal(floor(-1.1), -2, 'floor(-1.1) === -2'); + t.equal(floor(+1.1), 1, 'floor(+1.1) === 1'); + t.equal(floor(+0), +0, 'floor(+0) === +0'); + t.equal(floor(-0), -0, 'floor(-0) === -0'); + t.equal(floor(-Infinity), -Infinity, 'floor(-Infinity) === -Infinity'); + t.equal(floor(Number(Infinity)), Number(Infinity), 'floor(+Infinity) === +Infinity'); + t.equal(floor(NaN), NaN, 'floor(NaN) === NaN'); + t.equal(floor(0), +0, 'floor(0) === +0'); + t.equal(floor(-0), -0, 'floor(-0) === -0'); + t.equal(floor(1), 1, 'floor(1) === 1'); + t.equal(floor(-1), -1, 'floor(-1) === -1'); + t.equal(floor(1.1), 1, 'floor(1.1) === 1'); + t.equal(floor(-1.1), -2, 'floor(-1.1) === -2'); + t.equal(floor(maxValue), maxValue, 'floor(maxValue) === maxValue'); + t.equal(floor(maxSafeInteger), maxSafeInteger, 'floor(maxSafeInteger) === maxSafeInteger'); + + t.end(); +}); + +test('isFinite', function (t) { + t.equal(isFinite(0), true, 'isFinite(+0) === true'); + t.equal(isFinite(-0), true, 'isFinite(-0) === true'); + t.equal(isFinite(1), true, 'isFinite(1) === true'); + t.equal(isFinite(Infinity), false, 'isFinite(Infinity) === false'); + t.equal(isFinite(-Infinity), false, 'isFinite(-Infinity) === false'); + t.equal(isFinite(NaN), false, 'isFinite(NaN) === false'); + + forEach(v.nonNumbers, function (nonNumber) { + t.equal(isFinite(nonNumber), false, 'isFinite(' + inspect(nonNumber) + ') === false'); + }); + + t.end(); +}); + +test('isInteger', function (t) { + forEach([].concat( + // @ts-expect-error TS sucks with concat + v.nonNumbers, + v.nonIntegerNumbers + ), function (nonInteger) { + t.equal(isInteger(nonInteger), false, 'isInteger(' + inspect(nonInteger) + ') === false'); + }); + + t.end(); +}); + +test('isNaN', function (t) { + forEach([].concat( + // @ts-expect-error TS sucks with concat + v.nonNumbers, + v.infinities, + v.zeroes, + v.integerNumbers + ), function (nonNaN) { + t.equal(isNaN(nonNaN), false, 'isNaN(' + inspect(nonNaN) + ') === false'); + }); + + t.equal(isNaN(NaN), true, 'isNaN(NaN) === true'); + + t.end(); +}); + +test('isNegativeZero', function (t) { + t.equal(isNegativeZero(-0), true, 'isNegativeZero(-0) === true'); + t.equal(isNegativeZero(+0), false, 'isNegativeZero(+0) === false'); + t.equal(isNegativeZero(1), false, 'isNegativeZero(1) === false'); + t.equal(isNegativeZero(-1), false, 'isNegativeZero(-1) === false'); + t.equal(isNegativeZero(NaN), false, 'isNegativeZero(NaN) === false'); + t.equal(isNegativeZero(Infinity), false, 'isNegativeZero(Infinity) === false'); + t.equal(isNegativeZero(-Infinity), false, 'isNegativeZero(-Infinity) === false'); + + forEach(v.nonNumbers, function (nonNumber) { + t.equal(isNegativeZero(nonNumber), false, 'isNegativeZero(' + inspect(nonNumber) + ') === false'); + }); + + t.end(); +}); + +test('max', function (t) { + t.equal(max(1, 2), 2, 'max(1, 2) === 2'); + t.equal(max(1, 2, 3), 3, 'max(1, 2, 3) === 3'); + t.equal(max(1, 2, 3, 4), 4, 'max(1, 2, 3, 4) === 4'); + t.equal(max(1, 2, 3, 4, 5), 5, 'max(1, 2, 3, 4, 5) === 5'); + t.equal(max(1, 2, 3, 4, 5, 6), 6, 'max(1, 2, 3, 4, 5, 6) === 6'); + t.equal(max(1, 2, 3, 4, 5, 6, 7), 7, 'max(1, 2, 3, 4, 5, 6, 7) === 7'); + + t.end(); +}); + +test('min', function (t) { + t.equal(min(1, 2), 1, 'min(1, 2) === 1'); + t.equal(min(1, 2, 3), 1, 'min(1, 2, 3) === 1'); + t.equal(min(1, 2, 3, 4), 1, 'min(1, 2, 3, 4) === 1'); + t.equal(min(1, 2, 3, 4, 5), 1, 'min(1, 2, 3, 4, 5) === 1'); + t.equal(min(1, 2, 3, 4, 5, 6), 1, 'min(1, 2, 3, 4, 5, 6) === 1'); + + t.end(); +}); + +test('mod', function (t) { + t.equal(mod(1, 2), 1, 'mod(1, 2) === 1'); + t.equal(mod(2, 2), 0, 'mod(2, 2) === 0'); + t.equal(mod(3, 2), 1, 'mod(3, 2) === 1'); + t.equal(mod(4, 2), 0, 'mod(4, 2) === 0'); + t.equal(mod(5, 2), 1, 'mod(5, 2) === 1'); + t.equal(mod(6, 2), 0, 'mod(6, 2) === 0'); + t.equal(mod(7, 2), 1, 'mod(7, 2) === 1'); + t.equal(mod(8, 2), 0, 'mod(8, 2) === 0'); + t.equal(mod(9, 2), 1, 'mod(9, 2) === 1'); + t.equal(mod(10, 2), 0, 'mod(10, 2) === 0'); + t.equal(mod(11, 2), 1, 'mod(11, 2) === 1'); + + t.end(); +}); + +test('pow', function (t) { + t.equal(pow(2, 2), 4, 'pow(2, 2) === 4'); + t.equal(pow(2, 3), 8, 'pow(2, 3) === 8'); + t.equal(pow(2, 4), 16, 'pow(2, 4) === 16'); + t.equal(pow(2, 5), 32, 'pow(2, 5) === 32'); + t.equal(pow(2, 6), 64, 'pow(2, 6) === 64'); + t.equal(pow(2, 7), 128, 'pow(2, 7) === 128'); + t.equal(pow(2, 8), 256, 'pow(2, 8) === 256'); + t.equal(pow(2, 9), 512, 'pow(2, 9) === 512'); + t.equal(pow(2, 10), 1024, 'pow(2, 10) === 1024'); + + t.end(); +}); + +test('round', function (t) { + t.equal(round(1.1), 1, 'round(1.1) === 1'); + t.equal(round(1.5), 2, 'round(1.5) === 2'); + t.equal(round(1.9), 2, 'round(1.9) === 2'); + + t.end(); +}); + +test('sign', function (t) { + t.equal(sign(-1), -1, 'sign(-1) === -1'); + t.equal(sign(+1), +1, 'sign(+1) === +1'); + t.equal(sign(+0), +0, 'sign(+0) === +0'); + t.equal(sign(-0), -0, 'sign(-0) === -0'); + t.equal(sign(NaN), NaN, 'sign(NaN) === NaN'); + t.equal(sign(Infinity), +1, 'sign(Infinity) === +1'); + t.equal(sign(-Infinity), -1, 'sign(-Infinity) === -1'); + t.equal(sign(maxValue), +1, 'sign(maxValue) === +1'); + t.equal(sign(maxSafeInteger), +1, 'sign(maxSafeInteger) === +1'); + + t.end(); +}); + +test('constants', function (t) { + t.equal(typeof maxArrayLength, 'number', 'typeof maxArrayLength === "number"'); + t.equal(typeof maxSafeInteger, 'number', 'typeof maxSafeInteger === "number"'); + t.equal(typeof maxValue, 'number', 'typeof maxValue === "number"'); + + t.end(); +}); diff --git a/food-ordering-app/server/node_modules/math-intrinsics/tsconfig.json b/food-ordering-app/server/node_modules/math-intrinsics/tsconfig.json new file mode 100644 index 000000000..b13100079 --- /dev/null +++ b/food-ordering-app/server/node_modules/math-intrinsics/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "@ljharb/tsconfig", +} diff --git a/food-ordering-app/server/node_modules/merge-descriptors/README.md b/food-ordering-app/server/node_modules/merge-descriptors/README.md index d593c0ebd..3403f4a0c 100644 --- a/food-ordering-app/server/node_modules/merge-descriptors/README.md +++ b/food-ordering-app/server/node_modules/merge-descriptors/README.md @@ -1,4 +1,4 @@ -# Merge Descriptors +# merge-descriptors [![NPM Version][npm-image]][npm-url] [![NPM Downloads][downloads-image]][downloads-url] @@ -27,12 +27,13 @@ animal.name === 'jon' ### merge(destination, source) -Redefines `destination`'s descriptors with `source`'s. +Redefines `destination`'s descriptors with `source`'s. The return value is the +`destination` object. ### merge(destination, source, false) Defines `source`'s descriptors on `destination` if `destination` does not have -a descriptor by the same name. +a descriptor by the same name. The return value is the `destination` object. ## License diff --git a/food-ordering-app/server/node_modules/merge-descriptors/index.js b/food-ordering-app/server/node_modules/merge-descriptors/index.js index 573b132eb..f22ebab4c 100644 --- a/food-ordering-app/server/node_modules/merge-descriptors/index.js +++ b/food-ordering-app/server/node_modules/merge-descriptors/index.js @@ -31,7 +31,7 @@ var hasOwnProperty = Object.prototype.hasOwnProperty * @public */ -function merge(dest, src, redefine) { +function merge (dest, src, redefine) { if (!dest) { throw new TypeError('argument dest is required') } @@ -45,9 +45,9 @@ function merge(dest, src, redefine) { redefine = true } - Object.getOwnPropertyNames(src).forEach(function forEachOwnPropertyName(name) { + Object.getOwnPropertyNames(src).forEach(function forEachOwnPropertyName (name) { if (!redefine && hasOwnProperty.call(dest, name)) { - // Skip desriptor + // Skip descriptor return } diff --git a/food-ordering-app/server/node_modules/merge-descriptors/package.json b/food-ordering-app/server/node_modules/merge-descriptors/package.json index 514cdbd81..aa9af0a85 100644 --- a/food-ordering-app/server/node_modules/merge-descriptors/package.json +++ b/food-ordering-app/server/node_modules/merge-descriptors/package.json @@ -1,7 +1,7 @@ { "name": "merge-descriptors", "description": "Merge objects using descriptors", - "version": "1.0.1", + "version": "1.0.3", "author": { "name": "Jonathan Ong", "email": "me@jongleberry.com", @@ -13,10 +13,17 @@ "Mike Grabowski " ], "license": "MIT", - "repository": "component/merge-descriptors", + "repository": "sindresorhus/merge-descriptors", + "funding": "https://github.com/sponsors/sindresorhus", "devDependencies": { - "istanbul": "0.4.1", - "mocha": "1.21.5" + "eslint": "5.9.0", + "eslint-config-standard": "12.0.0", + "eslint-plugin-import": "2.14.0", + "eslint-plugin-node": "7.0.1", + "eslint-plugin-promise": "4.0.1", + "eslint-plugin-standard": "4.0.0", + "mocha": "5.2.0", + "nyc": "13.1.0" }, "files": [ "HISTORY.md", @@ -25,8 +32,8 @@ "index.js" ], "scripts": { - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/" + "lint": "eslint .", + "test": "mocha test/", + "test-cov": "nyc --reporter=html --reporter=text npm test" } } diff --git a/food-ordering-app/server/node_modules/mongodb-connection-string-url/lib/index.js b/food-ordering-app/server/node_modules/mongodb-connection-string-url/lib/index.js index 297908c1c..8e4864d20 100644 --- a/food-ordering-app/server/node_modules/mongodb-connection-string-url/lib/index.js +++ b/food-ordering-app/server/node_modules/mongodb-connection-string-url/lib/index.js @@ -9,7 +9,7 @@ function connectionStringHasValidScheme(connectionString) { return (connectionString.startsWith('mongodb://') || connectionString.startsWith('mongodb+srv://')); } -const HOSTS_REGEX = /^(?[^/]+):\/\/(?:(?[^:]*)(?::(?[^@]*))?@)?(?(?!:)[^/?@]*)(?.*)/; +const HOSTS_REGEX = /^(?[^/]+):\/\/(?:(?[^:@]*)(?::(?[^@]*))?@)?(?(?!:)[^/?@]*)(?.*)/; class CaseInsensitiveMap extends Map { delete(name) { return super.delete(this._normalizeKey(name)); diff --git a/food-ordering-app/server/node_modules/mongodb-connection-string-url/lib/index.js.map b/food-ordering-app/server/node_modules/mongodb-connection-string-url/lib/index.js.map index aea1c0e09..d325062aa 100644 --- a/food-ordering-app/server/node_modules/mongodb-connection-string-url/lib/index.js.map +++ b/food-ordering-app/server/node_modules/mongodb-connection-string-url/lib/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,2CAAkD;AAClD,qCAIkB;AACT,uGAHP,+BAAsB,OAGO;AAE/B,MAAM,cAAc,GAAG,2BAA2B,CAAC;AAEnD,SAAS,8BAA8B,CAAC,gBAAwB;IAC9D,OAAO,CACL,gBAAgB,CAAC,UAAU,CAAC,YAAY,CAAC;QACzC,gBAAgB,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAC9C,CAAC;AACJ,CAAC;AAID,MAAM,WAAW,GACf,2GAA2G,CAAC;AAE9G,MAAM,kBAA8C,SAAQ,GAAc;IACxE,MAAM,CAAC,IAAO;QACZ,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,GAAG,CAAC,IAAO;QACT,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,GAAG,CAAC,IAAO;QACT,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,GAAG,CAAC,IAAO,EAAE,KAAU;QACrB,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,aAAa,CAAC,IAAS;QACrB,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC;QACjB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;YAC7B,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;gBAC5C,IAAI,GAAG,GAAG,CAAC;gBACX,MAAM;aACP;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,SAAS,6BAA6B,CAA4B,IAA4B;IAC5F,OAAO,MAAM,6BAA8B,SAAQ,IAAI;QACrD,MAAM,CAAC,IAAO,EAAE,KAAU;YACxB,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,CAAC,IAAO;YACZ,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,CAAC;QAED,GAAG,CAAC,IAAO;YACT,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,CAAC,IAAO;YACZ,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,CAAC;QAED,GAAG,CAAC,IAAO;YACT,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7C,CAAC;QAED,GAAG,CAAC,IAAO,EAAE,KAAU;YACrB,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;QACpD,CAAC;QAED,IAAI;YACF,OAAO,KAAK,CAAC,IAAI,EAAyB,CAAC;QAC7C,CAAC;QAED,MAAM;YACJ,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;QACxB,CAAC;QAED,OAAO;YACL,OAAO,KAAK,CAAC,OAAO,EAAmC,CAAC;QAC1D,CAAC;QAED,CAAC,MAAM,CAAC,QAAQ,CAAC;YACf,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAmC,CAAC;QACnE,CAAC;QAED,aAAa,CAAC,IAAO;YACnB,OAAO,kBAAkB,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrE,CAAC;KACF,CAAC;AACJ,CAAC;AAGD,MAAe,cAAe,SAAQ,gBAAG;CASxC;AAED,MAAM,eAAgB,SAAQ,KAAK;IACjC,IAAI,IAAI;QACN,OAAO,iBAAiB,CAAC;IAC3B,CAAC;CACF;AAUD,MAAa,gBAAiB,SAAQ,cAAc;IAIlD,YAAY,GAAW,EAAE,UAA0C,EAAE;;QACnE,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;QACpC,IAAI,CAAC,eAAe,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,EAAE;YAC5D,MAAM,IAAI,eAAe,CAAC,2FAA2F,CAAC,CAAC;SACxH;QAED,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,IAAI,eAAe,CAAC,8BAA8B,GAAG,GAAG,CAAC,CAAC;SACjE;QAED,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAA,KAAK,CAAC,MAAM,mCAAI,EAAE,CAAC;QAEzE,IAAI,CAAC,eAAe,EAAE;YACpB,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,EAAE;gBACvB,MAAM,IAAI,eAAe,CAAC,2CAA2C,GAAG,GAAG,CAAC,CAAC;aAC9E;YAED,IAAI;gBACF,kBAAkB,CAAC,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,CAAC,CAAC;gBACnC,kBAAkB,CAAC,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,CAAC,CAAC;aACpC;YAAC,OAAO,GAAG,EAAE;gBACZ,MAAM,IAAI,eAAe,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;aACnD;YAGD,MAAM,iBAAiB,GAAG,cAAc,CAAC;YACzC,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,CAAC,iBAAiB,CAAC,EAAE;gBACtC,MAAM,IAAI,eAAe,CAAC,0CAA0C,QAAQ,EAAE,CAAC,CAAC;aACjF;YACD,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE;gBAC1B,MAAM,kBAAkB,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,QAAQ,KAAK,EAAE,EAAE,CAAC,CAAC;gBAC7D,IAAI,kBAAkB,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,kBAAkB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;oBAC5E,MAAM,IAAI,eAAe,CAAC,sCAAsC,CAAC,CAAC;iBACnE;aACF;YAED,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,CAAC,iBAAiB,CAAC,EAAE;gBACtC,MAAM,IAAI,eAAe,CAAC,wCAAwC,CAAC,CAAC;aACrE;SACF;QAED,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,UAAU,IAAI,QAAQ,CAAC;QACzD,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,UAAU,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC/D,IAAI,UAAU;YAAE,UAAU,IAAI,GAAG,CAAC;QAElC,IAAI;YACF,KAAK,CAAC,GAAG,QAAQ,CAAC,WAAW,EAAE,MAAM,UAAU,GAAG,cAAc,GAAG,IAAI,EAAE,CAAC,CAAC;SAC5E;QAAC,OAAO,GAAQ,EAAE;YACjB,IAAI,eAAe,EAAE;gBAInB,IAAI,gBAAgB,CAAC,GAAG,EAAE;oBACxB,GAAG,OAAO;oBACV,eAAe,EAAE,KAAK;iBACvB,CAAC,CAAC;aACJ;YACD,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE;gBACnC,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;aAC1D;YACD,MAAM,GAAG,CAAC;SACX;QACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE/B,IAAI,CAAC,eAAe,EAAE;YACpB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;gBACzC,MAAM,IAAI,eAAe,CAAC,oDAAoD,CAAC,CAAC;aACjF;YACD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC7D,MAAM,IAAI,eAAe,CAAC,yCAAyC,CAAC,CAAC;aACtE;SACF;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;SACrB;QACD,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,6BAA6B,CAAC,IAAI,CAAC,YAAY,CAAC,WAAkB,CAAC,CAAC,SAAS,CAAC,CAAC;IAC1H,CAAC;IAKD,IAAI,IAAI,KAAY,OAAO,cAAuB,CAAC,CAAC,CAAC;IACrD,IAAI,IAAI,CAAC,QAAe,IAAI,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC,CAAC,CAAC;IACtF,IAAI,QAAQ,KAAY,OAAO,cAAuB,CAAC,CAAC,CAAC;IACzD,IAAI,QAAQ,CAAC,QAAe,IAAI,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC,CAAC,CAAC;IAC1F,IAAI,IAAI,KAAY,OAAO,EAAW,CAAC,CAAC,CAAC;IACzC,IAAI,IAAI,CAAC,QAAe,IAAI,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC,CAAC,CAAC;IACtF,IAAI,IAAI,KAAa,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC9C,IAAI,IAAI,CAAC,QAAgB,IAAI,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAC,CAAC;IAEzF,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,KAAK,CAAC,IAAc;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,QAAQ;QACN,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,KAAK;QACH,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;YAC3C,eAAe,EAAE,IAAI;SACtB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,OAA0C;QAC/C,OAAO,IAAA,oCAA2B,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAGD,iBAAiB;QACf,MAAM,QAAQ,GAAI,KAAc,IAAI,IAAI,CAAC,6BAA6B,CAAmB,4BAAe,CAAC,CAAC,EAAE,CAAC;QAC7G,OAAO,IAAI,CAAC,YAA0C,CAAC;IACzD,CAAC;IAED,CAAC,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QACxC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QACzG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACrG,CAAC;CACF;AArID,4CAqIC;AAOD,MAAa,4BAAqE,SAAQ,kBAAoC;IAC5H,YAAY,IAAoB;QAC9B,KAAK,EAAE,CAAC;QACR,KAAK,MAAM,KAAK,IAAI,CAAC,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAC3C,IAAI,CAAC,KAAK;gBAAE,SAAS;YACrB,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAEtC,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE;gBACrB,IAAI,CAAC,GAAG,CAAC,KAA2B,EAAE,EAAE,CAAC,CAAC;aAC3C;iBAAM;gBACL,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAuB,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;aACzF;SACF;IACH,CAAC;IAED,QAAQ;QACN,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3D,CAAC;CACF;AAlBD,oEAkBC;AAED,kBAAe,gBAAgB,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb-connection-string-url/lib/redact.js b/food-ordering-app/server/node_modules/mongodb-connection-string-url/lib/redact.js index 6c558fbdd..62c7ba71c 100644 --- a/food-ordering-app/server/node_modules/mongodb-connection-string-url/lib/redact.js +++ b/food-ordering-app/server/node_modules/mongodb-connection-string-url/lib/redact.js @@ -1,7 +1,11 @@ "use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; @@ -65,17 +69,16 @@ function redactConnectionString(uri, options) { options = { ...options, replacementString: '___credentials___' }; return parsed.redact(options).toString().replace(/___credentials___/g, replacementString); } - const regexes = [ - redactUsernames ? /(?<=\/\/)(.*)(?=@)/g : /(?<=\/\/[^@]+:)(.*)(?=@)/g, - /(?<=AWS_SESSION_TOKEN(:|%3A))([^,&]+)/gi, - /(?<=tlsCertificateKeyFilePassword=)([^&]+)/gi, - redactUsernames ? /(?<=proxyUsername=)([^&]+)/gi : null, - /(?<=proxyPassword=)([^&]+)/gi + const R = replacementString; + const replacements = [ + uri => uri.replace(redactUsernames ? /(\/\/)(.*)(@)/g : /(\/\/[^@]*:)(.*)(@)/g, `$1${R}$3`), + uri => uri.replace(/(AWS_SESSION_TOKEN(:|%3A))([^,&]+)/gi, `$1${R}`), + uri => uri.replace(/(tlsCertificateKeyFilePassword=)([^&]+)/gi, `$1${R}`), + uri => redactUsernames ? uri.replace(/(proxyUsername=)([^&]+)/gi, `$1${R}`) : uri, + uri => uri.replace(/(proxyPassword=)([^&]+)/gi, `$1${R}`) ]; - for (const r of regexes) { - if (r !== null) { - uri = uri.replace(r, replacementString); - } + for (const replacer of replacements) { + uri = replacer(uri); } return uri; } diff --git a/food-ordering-app/server/node_modules/mongodb-connection-string-url/lib/redact.js.map b/food-ordering-app/server/node_modules/mongodb-connection-string-url/lib/redact.js.map index 1d971eee3..24a282b9c 100644 --- a/food-ordering-app/server/node_modules/mongodb-connection-string-url/lib/redact.js.map +++ b/food-ordering-app/server/node_modules/mongodb-connection-string-url/lib/redact.js.map @@ -1 +1 @@ -{"version":3,"file":"redact.js","sourceRoot":"","sources":["../src/redact.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"redact.js","sourceRoot":"","sources":["../src/redact.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb-connection-string-url/package.json b/food-ordering-app/server/node_modules/mongodb-connection-string-url/package.json index cfb44d9f8..24a13d784 100644 --- a/food-ordering-app/server/node_modules/mongodb-connection-string-url/package.json +++ b/food-ordering-app/server/node_modules/mongodb-connection-string-url/package.json @@ -1,6 +1,6 @@ { "name": "mongodb-connection-string-url", - "version": "2.5.2", + "version": "2.6.0", "description": "MongoDB connection strings, based on the WhatWG URL API", "keywords": [ "password", @@ -52,8 +52,8 @@ "gen-esm-wrapper": "^1.1.3", "mocha": "^8.1.3", "nyc": "^15.1.0", - "ts-node": "^9.0.0", - "typescript": "^4.0.3" + "ts-node": "^10.9.1", + "typescript": "^4.7.4" }, "dependencies": { "@types/whatwg-url": "^8.2.1", diff --git a/food-ordering-app/server/node_modules/mongodb/lib/admin.js b/food-ordering-app/server/node_modules/mongodb/lib/admin.js index f984a9ee5..b872b998b 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/admin.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/admin.js @@ -15,26 +15,15 @@ const validate_collection_1 = require("./operations/validate_collection"); * @public * * @example - * ```js - * const MongoClient = require('mongodb').MongoClient; - * const test = require('assert'); - * // Connection url - * const url = 'mongodb://localhost:27017'; - * // Database Name - * const dbName = 'test'; + * ```ts + * import { MongoClient } from 'mongodb'; * - * // Connect using MongoClient - * MongoClient.connect(url, function(err, client) { - * // Use the admin database for the operation - * const adminDb = client.db(dbName).admin(); - * - * // List all the available databases - * adminDb.listDatabases(function(err, dbs) { - * expect(err).to.not.exist; - * test.ok(dbs.databases.length > 0); - * client.close(); - * }); - * }); + * const client = new MongoClient('mongodb://localhost:27017'); + * const admin = client.db().admin(); + * const dbInfo = await admin.listDatabases(); + * for (const db of dbInfo.databases) { + * console.log(db.name); + * } * ``` */ class Admin { diff --git a/food-ordering-app/server/node_modules/mongodb/lib/admin.js.map b/food-ordering-app/server/node_modules/mongodb/lib/admin.js.map index da5ef61d4..4fce20809 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/admin.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/admin.js.map @@ -1 +1 @@ -{"version":3,"file":"admin.js","sourceRoot":"","sources":["../src/admin.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"admin.js","sourceRoot":"","sources":["../src/admin.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/bson.js b/food-ordering-app/server/node_modules/mongodb/lib/bson.js index f825a907f..c311e59e9 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/bson.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/bson.js @@ -1,11 +1,13 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.resolveBSONOptions = exports.pluckBSONSerializeOptions = exports.Timestamp = exports.ObjectId = exports.MinKey = exports.MaxKey = exports.Map = exports.Long = exports.Int32 = exports.Double = exports.Decimal128 = exports.DBRef = exports.Code = exports.BSONSymbol = exports.BSONRegExp = exports.Binary = exports.calculateObjectSize = exports.serialize = exports.deserialize = void 0; +exports.resolveBSONOptions = exports.pluckBSONSerializeOptions = exports.BSON = exports.Timestamp = exports.ObjectId = exports.MinKey = exports.MaxKey = exports.Map = exports.Long = exports.Int32 = exports.Double = exports.Decimal128 = exports.DBRef = exports.Code = exports.BSONSymbol = exports.BSONRegExp = exports.Binary = exports.calculateObjectSize = exports.serialize = exports.deserialize = void 0; +/** @internal */ // eslint-disable-next-line @typescript-eslint/no-var-requires let BSON = require('bson'); +exports.BSON = BSON; try { // Ensure you always wrap an optional require in the try block NODE-3199 - BSON = require('bson-ext'); + exports.BSON = BSON = require('bson-ext'); } catch { } // eslint-disable-line /** @internal */ diff --git a/food-ordering-app/server/node_modules/mongodb/lib/bson.js.map b/food-ordering-app/server/node_modules/mongodb/lib/bson.js.map index fcd7b7a3f..deac09b7e 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/bson.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/bson.js.map @@ -1 +1 @@ -{"version":3,"file":"bson.js","sourceRoot":"","sources":["../src/bson.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"bson.js","sourceRoot":"","sources":["../src/bson.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/bulk/common.js b/food-ordering-app/server/node_modules/mongodb/lib/bulk/common.js index 330761cab..ef17000f5 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/bulk/common.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/bulk/common.js @@ -8,7 +8,6 @@ const execute_operation_1 = require("../operations/execute_operation"); const insert_1 = require("../operations/insert"); const operation_1 = require("../operations/operation"); const update_1 = require("../operations/update"); -const promise_provider_1 = require("../promise_provider"); const utils_1 = require("../utils"); const write_concern_1 = require("../write_concern"); /** @internal */ @@ -148,7 +147,11 @@ class BulkWriteResult { getWriteErrors() { return this.result.writeErrors; } - /** Retrieve lastOp if available */ + /** + * Retrieve lastOp if available + * + * @deprecated Will be removed in 5.0 + */ getLastOp() { return this.result.opTime; } @@ -174,6 +177,7 @@ class BulkWriteResult { return new WriteConcernError({ errmsg, code: error_1.MONGODB_ERROR_CODES.WriteConcernFailed }); } } + /* @deprecated Will be removed in 5.0 release */ toJSON() { return this.result; } @@ -257,6 +261,7 @@ class WriteError { exports.WriteError = WriteError; /** Converts the number to a Long or returns it. */ function longOrConvert(value) { + // TODO(NODE-2674): Preserve int64 sent from MongoDB return typeof value === 'number' ? bson_1.Long.fromNumber(value) : value; } /** Merges results into shared data structure */ @@ -584,6 +589,14 @@ class FindOperators { this.bulkOperation.s.currentOp.arrayFilters = arrayFilters; return this; } + /** Specifies hint for the bulk operation. */ + hint(hint) { + if (!this.bulkOperation.s.currentOp) { + this.bulkOperation.s.currentOp = {}; + } + this.bulkOperation.s.currentOp.hint = hint; + return this; + } } exports.FindOperators = FindOperators; /** @@ -707,7 +720,7 @@ class BulkOperationBase { * Add a single insert document to the bulk operation * * @example - * ```js + * ```ts * const bulkOp = collection.initializeOrderedBulkOp(); * * // Adds three inserts to the bulkOp. @@ -729,7 +742,7 @@ class BulkOperationBase { * Returns a builder object used to complete the definition of the operation. * * @example - * ```js + * ```ts * const bulkOp = collection.initializeOrderedBulkOp(); * * // Add an updateOne to the bulkOp @@ -864,38 +877,43 @@ class BulkOperationBase { return batches; } execute(options, callback) { - if (typeof options === 'function') - (callback = options), (options = {}); - options = options !== null && options !== void 0 ? options : {}; - if (this.s.executed) { - return handleEarlyError(new error_1.MongoBatchReExecutionError(), callback); - } - const writeConcern = write_concern_1.WriteConcern.fromOptions(options); - if (writeConcern) { - this.s.writeConcern = writeConcern; - } - // If we have current batch - if (this.isOrdered) { - if (this.s.currentBatch) - this.s.batches.push(this.s.currentBatch); - } - else { - if (this.s.currentInsertBatch) - this.s.batches.push(this.s.currentInsertBatch); - if (this.s.currentUpdateBatch) - this.s.batches.push(this.s.currentUpdateBatch); - if (this.s.currentRemoveBatch) - this.s.batches.push(this.s.currentRemoveBatch); - } - // If we have no operations in the bulk raise an error - if (this.s.batches.length === 0) { - const emptyBatchError = new error_1.MongoInvalidArgumentError('Invalid BulkOperation, Batch cannot be empty'); - return handleEarlyError(emptyBatchError, callback); - } - this.s.executed = true; - const finalOptions = { ...this.s.options, ...options }; - const operation = new BulkWriteShimOperation(this, finalOptions); - return (0, execute_operation_1.executeOperation)(this.s.collection.s.db.s.client, operation, callback); + callback = + typeof callback === 'function' + ? callback + : typeof options === 'function' + ? options + : undefined; + return (0, utils_1.maybeCallback)(async () => { + options = options != null && typeof options !== 'function' ? options : {}; + if (this.s.executed) { + throw new error_1.MongoBatchReExecutionError(); + } + const writeConcern = write_concern_1.WriteConcern.fromOptions(options); + if (writeConcern) { + this.s.writeConcern = writeConcern; + } + // If we have current batch + if (this.isOrdered) { + if (this.s.currentBatch) + this.s.batches.push(this.s.currentBatch); + } + else { + if (this.s.currentInsertBatch) + this.s.batches.push(this.s.currentInsertBatch); + if (this.s.currentUpdateBatch) + this.s.batches.push(this.s.currentUpdateBatch); + if (this.s.currentRemoveBatch) + this.s.batches.push(this.s.currentRemoveBatch); + } + // If we have no operations in the bulk raise an error + if (this.s.batches.length === 0) { + throw new error_1.MongoInvalidArgumentError('Invalid BulkOperation, Batch cannot be empty'); + } + this.s.executed = true; + const finalOptions = { ...this.s.options, ...options }; + const operation = new BulkWriteShimOperation(this, finalOptions); + return (0, execute_operation_1.executeOperation)(this.s.collection.s.db.s.client, operation); + }, callback); } /** * Handles the write error before executing commands @@ -928,15 +946,6 @@ Object.defineProperty(BulkOperationBase.prototype, 'length', { return this.s.currentIndex; } }); -/** helper function to assist with promiseOrCallback behavior */ -function handleEarlyError(err, callback) { - const Promise = promise_provider_1.PromiseProvider.get(); - if (typeof callback === 'function') { - callback(err); - return; - } - return Promise.reject(err); -} function shouldForceServerObjectId(bulkOperation) { var _a, _b; if (typeof bulkOperation.s.options.forceServerObjectId === 'boolean') { diff --git a/food-ordering-app/server/node_modules/mongodb/lib/bulk/common.js.map b/food-ordering-app/server/node_modules/mongodb/lib/bulk/common.js.map index c512e0af3..c05f1f065 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/bulk/common.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/bulk/common.js.map @@ -1 +1 @@ -{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/bulk/common.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/bulk/common.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/bulk/ordered.js b/food-ordering-app/server/node_modules/mongodb/lib/bulk/ordered.js index f7e5418d7..667f724f1 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/bulk/ordered.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/bulk/ordered.js @@ -6,6 +6,7 @@ const error_1 = require("../error"); const common_1 = require("./common"); /** @public */ class OrderedBulkOperation extends common_1.BulkOperationBase { + /** @internal */ constructor(collection, options) { super(collection, options, true); } diff --git a/food-ordering-app/server/node_modules/mongodb/lib/bulk/ordered.js.map b/food-ordering-app/server/node_modules/mongodb/lib/bulk/ordered.js.map index 4058c1cde..3f16a9906 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/bulk/ordered.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/bulk/ordered.js.map @@ -1 +1 @@ -{"version":3,"file":"ordered.js","sourceRoot":"","sources":["../../src/bulk/ordered.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"ordered.js","sourceRoot":"","sources":["../../src/bulk/ordered.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/bulk/unordered.js b/food-ordering-app/server/node_modules/mongodb/lib/bulk/unordered.js index f5a34180e..14b8f038f 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/bulk/unordered.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/bulk/unordered.js @@ -6,6 +6,7 @@ const error_1 = require("../error"); const common_1 = require("./common"); /** @public */ class UnorderedBulkOperation extends common_1.BulkOperationBase { + /** @internal */ constructor(collection, options) { super(collection, options, false); } diff --git a/food-ordering-app/server/node_modules/mongodb/lib/bulk/unordered.js.map b/food-ordering-app/server/node_modules/mongodb/lib/bulk/unordered.js.map index 476e1998e..22bfa5d31 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/bulk/unordered.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/bulk/unordered.js.map @@ -1 +1 @@ -{"version":3,"file":"unordered.js","sourceRoot":"","sources":["../../src/bulk/unordered.ts"],"names":[],"mappings":";;;AACA,gCAAgC;AAEhC,oCAAqD;AAIrD,qCAAkG;AAElG,cAAc;AACd,MAAa,sBAAuB,SAAQ,0BAAiB;IAC3D,YAAY,UAAsB,EAAE,OAAyB;QAC3D,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IAEQ,gBAAgB,CAAC,QAAkB,EAAE,WAA4B;QACxE,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE;YACzB,OAAO,KAAK,CAAC;SACd;QAED,OAAO,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACvD,CAAC;IAED,mBAAmB,CACjB,SAAoB,EACpB,QAAsD;QAEtD,mBAAmB;QACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE;YAClD,SAAS,EAAE,KAAK;YAEhB,oEAAoE;YACpE,wEAAwE;YACxE,eAAe,EAAE,KAAK;SAChB,CAAC,CAAC;QAEV,0DAA0D;QAC1D,IAAI,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,iBAAiB,EAAE;YACxC,iDAAiD;YACjD,MAAM,IAAI,iCAAyB,CACjC,4CAA4C,IAAI,CAAC,CAAC,CAAC,iBAAiB,EAAE,CACvE,CAAC;SACH;QAED,0BAA0B;QAC1B,IAAI,CAAC,CAAC,CAAC,YAAY,GAAG,SAAS,CAAC;QAChC,8BAA8B;QAC9B,IAAI,SAAS,KAAK,kBAAS,CAAC,MAAM,EAAE;YAClC,IAAI,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC;SACjD;aAAM,IAAI,SAAS,KAAK,kBAAS,CAAC,MAAM,EAAE;YACzC,IAAI,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC;SACjD;aAAM,IAAI,SAAS,KAAK,kBAAS,CAAC,MAAM,EAAE;YACzC,IAAI,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC;SACjD;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;QAErC,2DAA2D;QAC3D,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,EAAE;YAC/B,IAAI,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,cAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;SACjE;QAED,yCAAyC;QACzC;QACE,+CAA+C;QAC/C,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,iBAAiB;YACxD,yFAAyF;YACzF,qCAAqC;YACrC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC;gBAC3B,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,GAAG,UAAU,GAAG,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC;YACpF,8EAA8E;YAC9E,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,KAAK,SAAS,EAC3C;YACA,wCAAwC;YACxC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;YAEzC,qBAAqB;YACrB,IAAI,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,cAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;SACjE;QAED,gCAAgC;QAChC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC3B,MAAM,IAAI,iCAAyB,CAAC,wCAAwC,CAAC,CAAC;SAC/E;QAED,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QAC9D,IAAI,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC;QAE9C,gDAAgD;QAChD,IAAI,SAAS,KAAK,kBAAS,CAAC,MAAM,EAAE;YAClC,IAAI,CAAC,CAAC,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;YAChD,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC;gBACjC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM;gBAC3C,GAAG,EAAG,QAAqB,CAAC,GAAG;aAChC,CAAC,CAAC;SACJ;aAAM,IAAI,SAAS,KAAK,kBAAS,CAAC,MAAM,EAAE;YACzC,IAAI,CAAC,CAAC,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;SACjD;aAAM,IAAI,SAAS,KAAK,kBAAS,CAAC,MAAM,EAAE;YACzC,IAAI,CAAC,CAAC,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;SACjD;QAED,4BAA4B;QAC5B,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,IAAI,UAAU,GAAG,QAAQ,CAAC;QAEvD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAlGD,wDAkGC"} \ No newline at end of file +{"version":3,"file":"unordered.js","sourceRoot":"","sources":["../../src/bulk/unordered.ts"],"names":[],"mappings":";;;AACA,gCAAgC;AAEhC,oCAAqD;AAIrD,qCAAkG;AAElG,cAAc;AACd,MAAa,sBAAuB,SAAQ,0BAAiB;IAC3D,gBAAgB;IAChB,YAAY,UAAsB,EAAE,OAAyB;QAC3D,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IAEQ,gBAAgB,CAAC,QAAkB,EAAE,WAA4B;QACxE,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE;YACzB,OAAO,KAAK,CAAC;SACd;QAED,OAAO,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACvD,CAAC;IAED,mBAAmB,CACjB,SAAoB,EACpB,QAAsD;QAEtD,mBAAmB;QACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE;YAClD,SAAS,EAAE,KAAK;YAEhB,oEAAoE;YACpE,wEAAwE;YACxE,eAAe,EAAE,KAAK;SAChB,CAAC,CAAC;QAEV,0DAA0D;QAC1D,IAAI,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,iBAAiB,EAAE;YACxC,iDAAiD;YACjD,MAAM,IAAI,iCAAyB,CACjC,4CAA4C,IAAI,CAAC,CAAC,CAAC,iBAAiB,EAAE,CACvE,CAAC;SACH;QAED,0BAA0B;QAC1B,IAAI,CAAC,CAAC,CAAC,YAAY,GAAG,SAAS,CAAC;QAChC,8BAA8B;QAC9B,IAAI,SAAS,KAAK,kBAAS,CAAC,MAAM,EAAE;YAClC,IAAI,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC;SACjD;aAAM,IAAI,SAAS,KAAK,kBAAS,CAAC,MAAM,EAAE;YACzC,IAAI,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC;SACjD;aAAM,IAAI,SAAS,KAAK,kBAAS,CAAC,MAAM,EAAE;YACzC,IAAI,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC;SACjD;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;QAErC,2DAA2D;QAC3D,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,EAAE;YAC/B,IAAI,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,cAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;SACjE;QAED,yCAAyC;QACzC;QACE,+CAA+C;QAC/C,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,iBAAiB;YACxD,yFAAyF;YACzF,qCAAqC;YACrC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC;gBAC3B,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,GAAG,UAAU,GAAG,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC;YACpF,8EAA8E;YAC9E,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,KAAK,SAAS,EAC3C;YACA,wCAAwC;YACxC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;YAEzC,qBAAqB;YACrB,IAAI,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,cAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;SACjE;QAED,gCAAgC;QAChC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC3B,MAAM,IAAI,iCAAyB,CAAC,wCAAwC,CAAC,CAAC;SAC/E;QAED,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QAC9D,IAAI,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC;QAE9C,gDAAgD;QAChD,IAAI,SAAS,KAAK,kBAAS,CAAC,MAAM,EAAE;YAClC,IAAI,CAAC,CAAC,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;YAChD,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC;gBACjC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM;gBAC3C,GAAG,EAAG,QAAqB,CAAC,GAAG;aAChC,CAAC,CAAC;SACJ;aAAM,IAAI,SAAS,KAAK,kBAAS,CAAC,MAAM,EAAE;YACzC,IAAI,CAAC,CAAC,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;SACjD;aAAM,IAAI,SAAS,KAAK,kBAAS,CAAC,MAAM,EAAE;YACzC,IAAI,CAAC,CAAC,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;SACjD;QAED,4BAA4B;QAC5B,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,IAAI,UAAU,GAAG,QAAQ,CAAC;QAEvD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAnGD,wDAmGC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/change_stream.js b/food-ordering-app/server/node_modules/mongodb/lib/change_stream.js index d898e849a..4927fd06a 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/change_stream.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/change_stream.js @@ -1,21 +1,15 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.ChangeStreamCursor = exports.ChangeStream = void 0; -const Denque = require("denque"); -const timers_1 = require("timers"); +exports.ChangeStream = void 0; const collection_1 = require("./collection"); const constants_1 = require("./constants"); -const abstract_cursor_1 = require("./cursor/abstract_cursor"); +const change_stream_cursor_1 = require("./cursor/change_stream_cursor"); const db_1 = require("./db"); const error_1 = require("./error"); const mongo_client_1 = require("./mongo_client"); const mongo_types_1 = require("./mongo_types"); -const aggregate_1 = require("./operations/aggregate"); -const execute_operation_1 = require("./operations/execute_operation"); const utils_1 = require("./utils"); /** @internal */ -const kResumeQueue = Symbol('resumeQueue'); -/** @internal */ const kCursorStream = Symbol('cursorStream'); /** @internal */ const kClosed = Symbol('closed'); @@ -34,10 +28,8 @@ const CHANGE_DOMAIN_TYPES = { DATABASE: Symbol('Database'), CLUSTER: Symbol('Cluster') }; -const SELECTION_TIMEOUT = 30000; const CHANGE_STREAM_EVENTS = [constants_1.RESUME_TOKEN_CHANGED, constants_1.END, constants_1.CLOSE]; const NO_RESUME_TOKEN_ERROR = 'A change stream document has been received that lacks a resume token (_id).'; -const NO_CURSOR_ERROR = 'ChangeStream has no cursor'; const CHANGESTREAM_CLOSED_ERROR = 'ChangeStream is closed'; /** * Creates a new Change Stream instance. Normally created using {@link Collection#watch|Collection.watch()}. @@ -53,7 +45,8 @@ class ChangeStream extends mongo_types_1.TypedEventEmitter { constructor(parent, pipeline = [], options = {}) { super(); this.pipeline = pipeline; - this.options = options; + this.options = { ...options }; + delete this.options.writeConcern; if (parent instanceof collection_1.Collection) { this.type = CHANGE_DOMAIN_TYPES.COLLECTION; } @@ -71,7 +64,6 @@ class ChangeStream extends mongo_types_1.TypedEventEmitter { if (!this.options.readPreference && parent.readPreference) { this.options.readPreference = parent.readPreference; } - this[kResumeQueue] = new Denque(); // Create contained Change Stream cursor this.cursor = this._createChangeStreamCursor(options); this[kClosed] = false; @@ -100,71 +92,143 @@ class ChangeStream extends mongo_types_1.TypedEventEmitter { } hasNext(callback) { this._setIsIterator(); - return (0, utils_1.maybePromise)(callback, cb => { - this._getCursor((err, cursor) => { - if (err || !cursor) - return cb(err); // failed to resume, raise an error - cursor.hasNext(cb); - }); - }); + return (0, utils_1.maybeCallback)(async () => { + // Change streams must resume indefinitely while each resume event succeeds. + // This loop continues until either a change event is received or until a resume attempt + // fails. + // eslint-disable-next-line no-constant-condition + while (true) { + try { + const hasNext = await this.cursor.hasNext(); + return hasNext; + } + catch (error) { + try { + await this._processErrorIteratorMode(error); + } + catch (error) { + try { + await this.close(); + } + catch { + // We are not concerned with errors from close() + } + throw error; + } + } + } + }, callback); } next(callback) { this._setIsIterator(); - return (0, utils_1.maybePromise)(callback, cb => { - this._getCursor((err, cursor) => { - if (err || !cursor) - return cb(err); // failed to resume, raise an error - cursor.next((error, change) => { - if (error) { - this[kResumeQueue].push(() => this.next(cb)); - this._processError(error, cb); - return; + return (0, utils_1.maybeCallback)(async () => { + // Change streams must resume indefinitely while each resume event succeeds. + // This loop continues until either a change event is received or until a resume attempt + // fails. + // eslint-disable-next-line no-constant-condition + while (true) { + try { + const change = await this.cursor.next(); + const processedChange = this._processChange(change !== null && change !== void 0 ? change : null); + return processedChange; + } + catch (error) { + try { + await this._processErrorIteratorMode(error); } - this._processNewChange(change !== null && change !== void 0 ? change : null, cb); - }); - }); - }); + catch (error) { + try { + await this.close(); + } + catch { + // We are not concerned with errors from close() + } + throw error; + } + } + } + }, callback); + } + tryNext(callback) { + this._setIsIterator(); + return (0, utils_1.maybeCallback)(async () => { + // Change streams must resume indefinitely while each resume event succeeds. + // This loop continues until either a change event is received or until a resume attempt + // fails. + // eslint-disable-next-line no-constant-condition + while (true) { + try { + const change = await this.cursor.tryNext(); + return change !== null && change !== void 0 ? change : null; + } + catch (error) { + try { + await this._processErrorIteratorMode(error); + } + catch (error) { + try { + await this.close(); + } + catch { + // We are not concerned with errors from close() + } + throw error; + } + } + } + }, callback); + } + async *[Symbol.asyncIterator]() { + if (this.closed) { + return; + } + try { + // Change streams run indefinitely as long as errors are resumable + // So the only loop breaking condition is if `next()` throws + while (true) { + yield await this.next(); + } + } + finally { + try { + await this.close(); + } + catch { + // we're not concerned with errors from close() + } + } } /** Is the cursor closed */ get closed() { - var _a, _b; - return this[kClosed] || ((_b = (_a = this.cursor) === null || _a === void 0 ? void 0 : _a.closed) !== null && _b !== void 0 ? _b : false); + return this[kClosed] || this.cursor.closed; } - /** Close the Change Stream */ close(callback) { this[kClosed] = true; - return (0, utils_1.maybePromise)(callback, cb => { - if (!this.cursor) { - return cb(); - } + return (0, utils_1.maybeCallback)(async () => { const cursor = this.cursor; - return cursor.close(err => { + try { + await cursor.close(); + } + finally { this._endStream(); - this.cursor = undefined; - return cb(err); - }); - }); + } + }, callback); } /** * Return a modified Readable stream including a possible transform method. - * @throws MongoDriverError if this.cursor is undefined + * + * NOTE: When using a Stream to process change stream events, the stream will + * NOT automatically resume in the case a resumable error is encountered. + * + * @throws MongoChangeStreamError if the underlying cursor or the change stream is closed */ stream(options) { + if (this.closed) { + throw new error_1.MongoChangeStreamError(CHANGESTREAM_CLOSED_ERROR); + } this.streamOptions = options; - if (!this.cursor) - throw new error_1.MongoChangeStreamError(NO_CURSOR_ERROR); return this.cursor.stream(options); } - tryNext(callback) { - this._setIsIterator(); - return (0, utils_1.maybePromise)(callback, cb => { - this._getCursor((err, cursor) => { - if (err || !cursor) - return cb(err); // failed to resume, raise an error - return cursor.tryNext(cb); - }); - }); - } /** @internal */ _setIsEmitter() { if (this[kMode] === 'iterator') { @@ -202,7 +266,7 @@ class ChangeStream extends mongo_types_1.TypedEventEmitter { // This should never happen because of the assertion in the constructor throw new error_1.MongoRuntimeError(`Changestream type should only be one of cluster, database, collection. Found ${this.type.toString()}`); } - const changeStreamCursor = new ChangeStreamCursor(client, this.namespace, pipeline, options); + const changeStreamCursor = new change_stream_cursor_1.ChangeStreamCursor(client, this.namespace, pipeline, options); for (const event of CHANGE_STREAM_EVENTS) { changeStreamCursor.on(event, e => this.emit(event, e)); } @@ -211,34 +275,12 @@ class ChangeStream extends mongo_types_1.TypedEventEmitter { } return changeStreamCursor; } - /** - * This method performs a basic server selection loop, satisfying the requirements of - * ChangeStream resumability until the new SDAM layer can be used. - * @internal - */ - _waitForTopologyConnected(topology, options, callback) { - (0, timers_1.setTimeout)(() => { - if (options && options.start == null) { - options.start = (0, utils_1.now)(); - } - const start = options.start || (0, utils_1.now)(); - const timeout = options.timeout || SELECTION_TIMEOUT; - if (topology.isConnected()) { - return callback(); - } - if ((0, utils_1.calculateDurationInMs)(start) > timeout) { - // TODO(NODE-3497): Replace with MongoNetworkTimeoutError - return callback(new error_1.MongoRuntimeError('Timed out waiting for connection')); - } - this._waitForTopologyConnected(topology, options, callback); - }, 500); // this is an arbitrary wait time to allow SDAM to transition - } /** @internal */ - _closeWithError(error, callback) { - if (!callback) { - this.emit(ChangeStream.ERROR, error); - } - this.close(() => callback && callback(error)); + _closeEmitterModeWithError(error) { + this.emit(ChangeStream.ERROR, error); + this.close(() => { + // nothing to do + }); } /** @internal */ _streamEvents(cursor) { @@ -246,8 +288,16 @@ class ChangeStream extends mongo_types_1.TypedEventEmitter { this._setIsEmitter(); const stream = (_a = this[kCursorStream]) !== null && _a !== void 0 ? _a : cursor.stream(); this[kCursorStream] = stream; - stream.on('data', change => this._processNewChange(change)); - stream.on('error', error => this._processError(error)); + stream.on('data', change => { + try { + const processedChange = this._processChange(change); + this.emit(ChangeStream.CHANGE, processedChange); + } + catch (error) { + this.emit(ChangeStream.ERROR, error); + } + }); + stream.on('error', error => this._processErrorStreamMode(error)); } /** @internal */ _endStream() { @@ -259,122 +309,70 @@ class ChangeStream extends mongo_types_1.TypedEventEmitter { this[kCursorStream] = undefined; } /** @internal */ - _processNewChange(change, callback) { - var _a; + _processChange(change) { if (this[kClosed]) { // TODO(NODE-3485): Replace with MongoChangeStreamClosedError - if (callback) - callback(new error_1.MongoAPIError(CHANGESTREAM_CLOSED_ERROR)); - return; + throw new error_1.MongoAPIError(CHANGESTREAM_CLOSED_ERROR); } // a null change means the cursor has been notified, implicitly closing the change stream if (change == null) { // TODO(NODE-3485): Replace with MongoChangeStreamClosedError - return this._closeWithError(new error_1.MongoRuntimeError(CHANGESTREAM_CLOSED_ERROR), callback); + throw new error_1.MongoRuntimeError(CHANGESTREAM_CLOSED_ERROR); } if (change && !change._id) { - return this._closeWithError(new error_1.MongoChangeStreamError(NO_RESUME_TOKEN_ERROR), callback); + throw new error_1.MongoChangeStreamError(NO_RESUME_TOKEN_ERROR); } // cache the resume token - (_a = this.cursor) === null || _a === void 0 ? void 0 : _a.cacheResumeToken(change._id); + this.cursor.cacheResumeToken(change._id); // wipe the startAtOperationTime if there was one so that there won't be a conflict // between resumeToken and startAtOperationTime if we need to reconnect the cursor this.options.startAtOperationTime = undefined; - // Return the change - if (!callback) - return this.emit(ChangeStream.CHANGE, change); - return callback(undefined, change); + return change; } /** @internal */ - _processError(error, callback) { - const cursor = this.cursor; + _processErrorStreamMode(changeStreamError) { // If the change stream has been closed explicitly, do not process error. - if (this[kClosed]) { - // TODO(NODE-3485): Replace with MongoChangeStreamClosedError - if (callback) - callback(new error_1.MongoAPIError(CHANGESTREAM_CLOSED_ERROR)); + if (this[kClosed]) return; - } - // if the resume succeeds, continue with the new cursor - const resumeWithCursor = (newCursor) => { - this.cursor = newCursor; - this._processResumeQueue(); - }; - // otherwise, raise an error and close the change stream - const unresumableError = (err) => { - if (!callback) { - this.emit(ChangeStream.ERROR, err); - } - this.close(() => this._processResumeQueue(err)); - }; - if (cursor && (0, error_1.isResumableError)(error, (0, utils_1.maxWireVersion)(cursor.server))) { - this.cursor = undefined; - // stop listening to all events from old cursor + if ((0, error_1.isResumableError)(changeStreamError, this.cursor.maxWireVersion)) { this._endStream(); - // close internal cursor, ignore errors - cursor.close(); + this.cursor.close().catch(() => null); const topology = (0, utils_1.getTopology)(this.parent); - this._waitForTopologyConnected(topology, { readPreference: cursor.readPreference }, err => { - // if the topology can't reconnect, close the stream - if (err) - return unresumableError(err); - // create a new cursor, preserving the old cursor's options - const newCursor = this._createChangeStreamCursor(cursor.resumeOptions); - // attempt to continue in emitter mode - if (!callback) - return resumeWithCursor(newCursor); - // attempt to continue in iterator mode - newCursor.hasNext(err => { - // if there's an error immediately after resuming, close the stream - if (err) - return unresumableError(err); - resumeWithCursor(newCursor); - }); + topology.selectServer(this.cursor.readPreference, {}, serverSelectionError => { + if (serverSelectionError) + return this._closeEmitterModeWithError(changeStreamError); + this.cursor = this._createChangeStreamCursor(this.cursor.resumeOptions); }); - return; } - // if initial error wasn't resumable, raise an error and close the change stream - return this._closeWithError(error, callback); + else { + this._closeEmitterModeWithError(changeStreamError); + } } /** @internal */ - _getCursor(callback) { + async _processErrorIteratorMode(changeStreamError) { if (this[kClosed]) { // TODO(NODE-3485): Replace with MongoChangeStreamClosedError - callback(new error_1.MongoAPIError(CHANGESTREAM_CLOSED_ERROR)); - return; + throw new error_1.MongoAPIError(CHANGESTREAM_CLOSED_ERROR); } - // if a cursor exists and it is open, return it - if (this.cursor) { - callback(undefined, this.cursor); - return; - } - // no cursor, queue callback until topology reconnects - this[kResumeQueue].push(callback); - } - /** - * Drain the resume queue when a new has become available - * @internal - * - * @param error - error getting a new cursor - */ - _processResumeQueue(error) { - var _a; - while (this[kResumeQueue].length) { - const request = this[kResumeQueue].pop(); - if (!request) - break; // Should never occur but TS can't use the length check in the while condition - if (!error) { - if (this[kClosed]) { - // TODO(NODE-3485): Replace with MongoChangeStreamClosedError - request(new error_1.MongoAPIError(CHANGESTREAM_CLOSED_ERROR)); - return; - } - if (!this.cursor) { - request(new error_1.MongoChangeStreamError(NO_CURSOR_ERROR)); - return; - } + if (!(0, error_1.isResumableError)(changeStreamError, this.cursor.maxWireVersion)) { + try { + await this.close(); + } + catch { + // ignore errors from close } - request(error, (_a = this.cursor) !== null && _a !== void 0 ? _a : undefined); + throw changeStreamError; + } + await this.cursor.close().catch(() => null); + const topology = (0, utils_1.getTopology)(this.parent); + try { + await topology.selectServerAsync(this.cursor.readPreference, {}); + this.cursor = this._createChangeStreamCursor(this.cursor.resumeOptions); + } + catch { + // if the topology can't reconnect, close the stream + await this.close(); + throw changeStreamError; } } } @@ -403,107 +401,4 @@ ChangeStream.ERROR = constants_1.ERROR; * @event */ ChangeStream.RESUME_TOKEN_CHANGED = constants_1.RESUME_TOKEN_CHANGED; -/** @internal */ -class ChangeStreamCursor extends abstract_cursor_1.AbstractCursor { - constructor(client, namespace, pipeline = [], options = {}) { - super(client, namespace, options); - this.pipeline = pipeline; - this.options = options; - this._resumeToken = null; - this.startAtOperationTime = options.startAtOperationTime; - if (options.startAfter) { - this.resumeToken = options.startAfter; - } - else if (options.resumeAfter) { - this.resumeToken = options.resumeAfter; - } - } - set resumeToken(token) { - this._resumeToken = token; - this.emit(ChangeStream.RESUME_TOKEN_CHANGED, token); - } - get resumeToken() { - return this._resumeToken; - } - get resumeOptions() { - const options = { - ...this.options - }; - for (const key of ['resumeAfter', 'startAfter', 'startAtOperationTime']) { - delete options[key]; - } - if (this.resumeToken != null) { - if (this.options.startAfter && !this.hasReceived) { - options.startAfter = this.resumeToken; - } - else { - options.resumeAfter = this.resumeToken; - } - } - else if (this.startAtOperationTime != null && (0, utils_1.maxWireVersion)(this.server) >= 7) { - options.startAtOperationTime = this.startAtOperationTime; - } - return options; - } - cacheResumeToken(resumeToken) { - if (this.bufferedCount() === 0 && this.postBatchResumeToken) { - this.resumeToken = this.postBatchResumeToken; - } - else { - this.resumeToken = resumeToken; - } - this.hasReceived = true; - } - _processBatch(response) { - const cursor = response.cursor; - if (cursor.postBatchResumeToken) { - this.postBatchResumeToken = response.cursor.postBatchResumeToken; - const batch = 'firstBatch' in response.cursor ? response.cursor.firstBatch : response.cursor.nextBatch; - if (batch.length === 0) { - this.resumeToken = cursor.postBatchResumeToken; - } - } - } - clone() { - return new ChangeStreamCursor(this.client, this.namespace, this.pipeline, { - ...this.cursorOptions - }); - } - _initialize(session, callback) { - const aggregateOperation = new aggregate_1.AggregateOperation(this.namespace, this.pipeline, { - ...this.cursorOptions, - ...this.options, - session - }); - (0, execute_operation_1.executeOperation)(session.client, aggregateOperation, (err, response) => { - if (err || response == null) { - return callback(err); - } - const server = aggregateOperation.server; - if (this.startAtOperationTime == null && - this.resumeAfter == null && - this.startAfter == null && - (0, utils_1.maxWireVersion)(server) >= 7) { - this.startAtOperationTime = response.operationTime; - } - this._processBatch(response); - this.emit(ChangeStream.INIT, response); - this.emit(ChangeStream.RESPONSE); - // TODO: NODE-2882 - callback(undefined, { server, session, response }); - }); - } - _getMore(batchSize, callback) { - super._getMore(batchSize, (err, response) => { - if (err) { - return callback(err); - } - this._processBatch(response); - this.emit(ChangeStream.MORE, response); - this.emit(ChangeStream.RESPONSE); - callback(err, response); - }); - } -} -exports.ChangeStreamCursor = ChangeStreamCursor; //# sourceMappingURL=change_stream.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/change_stream.js.map b/food-ordering-app/server/node_modules/mongodb/lib/change_stream.js.map index bad180bd0..77107268f 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/change_stream.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/change_stream.js.map @@ -1 +1 @@ -{"version":3,"file":"change_stream.js","sourceRoot":"","sources":["../src/change_stream.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"change_stream.js","sourceRoot":"","sources":["../src/change_stream.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cmap/auth/auth_provider.js b/food-ordering-app/server/node_modules/mongodb/lib/cmap/auth/auth_provider.js index b9a840ee8..d73fac7b8 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/cmap/auth/auth_provider.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/cmap/auth/auth_provider.js @@ -2,7 +2,10 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.AuthProvider = exports.AuthContext = void 0; const error_1 = require("../../error"); -/** Context used during authentication */ +/** + * Context used during authentication + * @internal + */ class AuthContext { constructor(connection, credentials, options) { this.connection = connection; diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cmap/auth/auth_provider.js.map b/food-ordering-app/server/node_modules/mongodb/lib/cmap/auth/auth_provider.js.map index c03ab3749..dcec37162 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/cmap/auth/auth_provider.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/cmap/auth/auth_provider.js.map @@ -1 +1 @@ -{"version":3,"file":"auth_provider.js","sourceRoot":"","sources":["../../../src/cmap/auth/auth_provider.ts"],"names":[],"mappings":";;;AACA,uCAAgD;AAQhD,yCAAyC;AACzC,MAAa,WAAW;IAatB,YACE,UAAsB,EACtB,WAAyC,EACzC,OAA2B;QAE3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAtBD,kCAsBC;AAED,MAAa,YAAY;IACvB;;;;;OAKG;IACH,OAAO,CACL,YAA+B,EAC/B,WAAwB,EACxB,QAAqC;QAErC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACpC,CAAC;IAED;;;;;OAKG;IACH,IAAI,CAAC,OAAoB,EAAE,QAAkB;QAC3C,8DAA8D;QAC9D,QAAQ,CAAC,IAAI,yBAAiB,CAAC,8CAA8C,CAAC,CAAC,CAAC;IAClF,CAAC;CACF;AAzBD,oCAyBC"} \ No newline at end of file +{"version":3,"file":"auth_provider.js","sourceRoot":"","sources":["../../../src/cmap/auth/auth_provider.ts"],"names":[],"mappings":";;;AACA,uCAAgD;AAShD;;;GAGG;AACH,MAAa,WAAW;IAatB,YACE,UAAsB,EACtB,WAAyC,EACzC,OAA0B;QAE1B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAtBD,kCAsBC;AAED,MAAa,YAAY;IACvB;;;;;OAKG;IACH,OAAO,CACL,YAA+B,EAC/B,WAAwB,EACxB,QAAqC;QAErC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACpC,CAAC;IAED;;;;;OAKG;IACH,IAAI,CAAC,OAAoB,EAAE,QAAkB;QAC3C,8DAA8D;QAC9D,QAAQ,CAAC,IAAI,yBAAiB,CAAC,8CAA8C,CAAC,CAAC,CAAC;IAClF,CAAC;CACF;AAzBD,oCAyBC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cmap/auth/mongodb_aws.js b/food-ordering-app/server/node_modules/mongodb/lib/cmap/auth/mongodb_aws.js index ba0679fd1..473e2358a 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/cmap/auth/mongodb_aws.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/cmap/auth/mongodb_aws.js @@ -135,33 +135,64 @@ function makeTempCredentials(credentials, callback) { } })); } - // If the environment variable AWS_CONTAINER_CREDENTIALS_RELATIVE_URI - // is set then drivers MUST assume that it was set by an AWS ECS agent - if (process.env.AWS_CONTAINER_CREDENTIALS_RELATIVE_URI) { - request(`${AWS_RELATIVE_URI}${process.env.AWS_CONTAINER_CREDENTIALS_RELATIVE_URI}`, undefined, (err, res) => { - if (err) - return callback(err); - done(res); - }); - return; - } - // Otherwise assume we are on an EC2 instance - // get a token - request(`${AWS_EC2_URI}/latest/api/token`, { method: 'PUT', json: false, headers: { 'X-aws-ec2-metadata-token-ttl-seconds': 30 } }, (err, token) => { - if (err) - return callback(err); - // get role name - request(`${AWS_EC2_URI}/${AWS_EC2_PATH}`, { json: false, headers: { 'X-aws-ec2-metadata-token': token } }, (err, roleName) => { + const credentialProvider = (0, deps_1.getAwsCredentialProvider)(); + // Check if the AWS credential provider from the SDK is present. If not, + // use the old method. + if ('kModuleError' in credentialProvider) { + // If the environment variable AWS_CONTAINER_CREDENTIALS_RELATIVE_URI + // is set then drivers MUST assume that it was set by an AWS ECS agent + if (process.env.AWS_CONTAINER_CREDENTIALS_RELATIVE_URI) { + request(`${AWS_RELATIVE_URI}${process.env.AWS_CONTAINER_CREDENTIALS_RELATIVE_URI}`, undefined, (err, res) => { + if (err) + return callback(err); + done(res); + }); + return; + } + // Otherwise assume we are on an EC2 instance + // get a token + request(`${AWS_EC2_URI}/latest/api/token`, { method: 'PUT', json: false, headers: { 'X-aws-ec2-metadata-token-ttl-seconds': 30 } }, (err, token) => { if (err) return callback(err); - // get temp credentials - request(`${AWS_EC2_URI}/${AWS_EC2_PATH}/${roleName}`, { headers: { 'X-aws-ec2-metadata-token': token } }, (err, creds) => { + // get role name + request(`${AWS_EC2_URI}/${AWS_EC2_PATH}`, { json: false, headers: { 'X-aws-ec2-metadata-token': token } }, (err, roleName) => { if (err) return callback(err); - done(creds); + // get temp credentials + request(`${AWS_EC2_URI}/${AWS_EC2_PATH}/${roleName}`, { headers: { 'X-aws-ec2-metadata-token': token } }, (err, creds) => { + if (err) + return callback(err); + done(creds); + }); }); }); - }); + } + else { + /* + * Creates a credential provider that will attempt to find credentials from the + * following sources (listed in order of precedence): + * + * - Environment variables exposed via process.env + * - SSO credentials from token cache + * - Web identity token credentials + * - Shared credentials and config ini files + * - The EC2/ECS Instance Metadata Service + */ + const { fromNodeProviderChain } = credentialProvider; + const provider = fromNodeProviderChain(); + provider() + .then((creds) => { + done({ + AccessKeyId: creds.accessKeyId, + SecretAccessKey: creds.secretAccessKey, + Token: creds.sessionToken, + Expiration: creds.expiration + }); + }) + .catch((error) => { + callback(new error_1.MongoAWSError(error.message)); + }); + } } function deriveRegion(host) { const parts = host.split('.'); diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cmap/auth/mongodb_aws.js.map b/food-ordering-app/server/node_modules/mongodb/lib/cmap/auth/mongodb_aws.js.map index f88f08b05..a1d43a475 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/cmap/auth/mongodb_aws.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/cmap/auth/mongodb_aws.js.map @@ -1 +1 @@ -{"version":3,"file":"mongodb_aws.js","sourceRoot":"","sources":["../../../src/cmap/auth/mongodb_aws.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"mongodb_aws.js","sourceRoot":"","sources":["../../../src/cmap/auth/mongodb_aws.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cmap/auth/scram.js b/food-ordering-app/server/node_modules/mongodb/lib/cmap/auth/scram.js index 00a77ac00..73af13a63 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/cmap/auth/scram.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/cmap/auth/scram.js @@ -19,7 +19,8 @@ class ScramSHA extends auth_provider_1.AuthProvider { if (!credentials) { return callback(new error_1.MongoMissingCredentialsError('AuthContext must provide credentials.')); } - if (cryptoMethod === 'sha256' && deps_1.saslprep == null) { + if (cryptoMethod === 'sha256' && + ('kModuleError' in deps_1.saslprep || typeof deps_1.saslprep !== 'function')) { (0, utils_1.emitWarning)('Warning: no saslprep library specified. Passwords will not be sanitized'); } crypto.randomBytes(24, (err, nonce) => { @@ -105,7 +106,8 @@ function continueScramConversation(cryptoMethod, response, authContext, callback const password = credentials.password; let processedPassword; if (cryptoMethod === 'sha256') { - processedPassword = 'kModuleError' in deps_1.saslprep ? password : (0, deps_1.saslprep)(password); + processedPassword = + 'kModuleError' in deps_1.saslprep || typeof deps_1.saslprep !== 'function' ? password : (0, deps_1.saslprep)(password); } else { try { diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cmap/auth/scram.js.map b/food-ordering-app/server/node_modules/mongodb/lib/cmap/auth/scram.js.map index c94940db2..5550d4ae5 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/cmap/auth/scram.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/cmap/auth/scram.js.map @@ -1 +1 @@ -{"version":3,"file":"scram.js","sourceRoot":"","sources":["../../../src/cmap/auth/scram.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AAEjC,qCAA8C;AAC9C,qCAAsC;AACtC,uCAMqB;AACrB,uCAAwD;AAExD,mDAA4D;AAE5D,2CAA4C;AAI5C,MAAM,QAAS,SAAQ,4BAAY;IAEjC,YAAY,YAA0B;QACpC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,YAAY,GAAG,YAAY,IAAI,MAAM,CAAC;IAC7C,CAAC;IAEQ,OAAO,CAAC,YAA+B,EAAE,WAAwB,EAAE,QAAkB;QAC5F,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC;QAC5C,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO,QAAQ,CAAC,IAAI,oCAA4B,CAAC,uCAAuC,CAAC,CAAC,CAAC;SAC5F;QACD,IAAI,YAAY,KAAK,QAAQ,IAAI,eAAQ,IAAI,IAAI,EAAE;YACjD,IAAA,mBAAW,EAAC,yEAAyE,CAAC,CAAC;SACxF;QAED,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YACpC,IAAI,GAAG,EAAE;gBACP,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;aACtB;YAED,gCAAgC;YAChC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAEtC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,EAAE;gBAC9C,uBAAuB,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE;oBACzF,EAAE,EAAE,WAAW,CAAC,MAAM;iBACvB,CAAC;aACH,CAAC,CAAC;YAEH,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC;IAEQ,IAAI,CAAC,WAAwB,EAAE,QAAkB;QACxD,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;QACtC,IAAI,QAAQ,IAAI,QAAQ,CAAC,uBAAuB,EAAE;YAChD,yBAAyB,CACvB,IAAI,CAAC,YAAY,EACjB,QAAQ,CAAC,uBAAuB,EAChC,WAAW,EACX,QAAQ,CACT,CAAC;YAEF,OAAO;SACR;QAED,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IACzD,CAAC;CACF;AAED,SAAS,aAAa,CAAC,QAAgB;IACrC,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,sBAAsB,CAAC,QAAgB,EAAE,KAAa;IAC7D,qFAAqF;IACrF,kEAAkE;IAClE,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;KAC9C,CAAC,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB,CACvB,YAA0B,EAC1B,WAA6B,EAC7B,KAAa;IAEb,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACrD,MAAM,SAAS,GACb,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,yBAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC,yBAAa,CAAC,oBAAoB,CAAC;IAElG,qFAAqF;IACrF,kEAAkE;IAClE,OAAO;QACL,SAAS,EAAE,CAAC;QACZ,SAAS;QACT,OAAO,EAAE,IAAI,aAAM,CACjB,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,sBAAsB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CACrF;QACD,aAAa,EAAE,CAAC;QAChB,OAAO,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACrC,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,YAA0B,EAAE,WAAwB,EAAE,QAAkB;IAC5F,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,WAAW,CAAC;IAChD,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,QAAQ,CAAC,IAAI,oCAA4B,CAAC,uCAAuC,CAAC,CAAC,CAAC;KAC5F;IACD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;QACtB,OAAO,QAAQ,CACb,IAAI,iCAAyB,CAAC,iDAAiD,CAAC,CACjF,CAAC;KACH;IACD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;IAChC,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC;IAE9B,MAAM,YAAY,GAAG,gBAAgB,CAAC,YAAY,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IACxE,UAAU,CAAC,OAAO,CAAC,IAAA,UAAE,EAAC,GAAG,EAAE,OAAO,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QAC7E,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACvC,IAAI,GAAG,EAAE;YACP,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;SACtB;QAED,yBAAyB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,yBAAyB,CAChC,YAA0B,EAC1B,QAAkB,EAClB,WAAwB,EACxB,QAAkB;IAElB,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC;IAC1C,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC;IAC5C,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,QAAQ,CAAC,IAAI,oCAA4B,CAAC,uCAAuC,CAAC,CAAC,CAAC;KAC5F;IACD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;QACtB,OAAO,QAAQ,CAAC,IAAI,iCAAyB,CAAC,8CAA8C,CAAC,CAAC,CAAC;KAChG;IACD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;IAEhC,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC;IAC9B,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;IAEtC,IAAI,iBAAiB,CAAC;IACtB,IAAI,YAAY,KAAK,QAAQ,EAAE;QAC7B,iBAAiB,GAAG,cAAc,IAAI,eAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAA,eAAQ,EAAC,QAAQ,CAAC,CAAC;KAChF;SAAM;QACL,IAAI;YACF,iBAAiB,GAAG,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;SACxD;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;SACpB;KACF;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC/C,CAAC,CAAC,IAAI,aAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC9B,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;IACrB,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAE3C,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxC,IAAI,UAAU,IAAI,UAAU,GAAG,IAAI,EAAE;QACnC,QAAQ;QACN,kBAAkB;QAClB,IAAI,yBAAiB,CAAC,8CAA8C,UAAU,EAAE,CAAC,EACjF,KAAK,CACN,CAAC;QACF,OAAO;KACR;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;IACpB,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;IACtB,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QAC9B,kBAAkB;QAClB,QAAQ,CAAC,IAAI,yBAAiB,CAAC,qCAAqC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QACtF,OAAO;KACR;IAED,wBAAwB;IACxB,MAAM,YAAY,GAAG,YAAY,MAAM,EAAE,CAAC;IAC1C,MAAM,cAAc,GAAG,EAAE,CACvB,iBAAiB,EACjB,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,EAC3B,UAAU,EACV,YAAY,CACb,CAAC;IAEF,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,CAAC,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IAC7C,MAAM,WAAW,GAAG,CAAC,sBAAsB,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,YAAY,CAAC,CAAC,IAAI,CAC/F,GAAG,CACJ,CAAC;IAEF,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,KAAK,GAAG,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,CAAC;IAC3D,MAAM,WAAW,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE1D,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IACnE,MAAM,eAAe,GAAG;QACtB,YAAY,EAAE,CAAC;QACf,cAAc,EAAE,QAAQ,CAAC,cAAc;QACvC,OAAO,EAAE,IAAI,aAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KAC9C,CAAC;IAEF,UAAU,CAAC,OAAO,CAAC,IAAA,UAAE,EAAC,GAAG,EAAE,OAAO,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QAC3E,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAClC,IAAI,GAAG,EAAE;YACP,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;SACtB;QAED,MAAM,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,eAAe,CAAC,EAAE;YAC5E,QAAQ,CAAC,IAAI,yBAAiB,CAAC,sCAAsC,CAAC,CAAC,CAAC;YACxE,OAAO;SACR;QAED,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE;YAC1B,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;SACzB;QAED,MAAM,oBAAoB,GAAG;YAC3B,YAAY,EAAE,CAAC;YACf,cAAc,EAAE,CAAC,CAAC,cAAc;YAChC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;SACzB,CAAC;QAEF,UAAU,CAAC,OAAO,CAAC,IAAA,UAAE,EAAC,GAAG,EAAE,OAAO,CAAC,EAAE,oBAAoB,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CAAC,OAAe;IACnC,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACrC,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;KACrC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB,EAAE,QAAgB;IACxD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;QAChC,MAAM,IAAI,iCAAyB,CAAC,2BAA2B,CAAC,CAAC;KAClE;IAED,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;QAChC,MAAM,IAAI,iCAAyB,CAAC,2BAA2B,CAAC,CAAC;KAClE;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;QACzB,MAAM,IAAI,iCAAyB,CAAC,0BAA0B,CAAC,CAAC;KACjE;IAED,IAAI,GAAgB,CAAC;IACrB,IAAI;QACF,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;KAChC;IAAC,OAAO,GAAG,EAAE;QACZ,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE;YACpB,oFAAoF;YACpF,wFAAwF;YACxF,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;SAC7E;QACD,MAAM,GAAG,CAAC;KACX;IACD,GAAG,CAAC,MAAM,CAAC,GAAG,QAAQ,UAAU,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC;IACpD,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,kBAAkB;AAClB,SAAS,GAAG,CAAC,CAAS,EAAE,CAAS;IAC/B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;QACvB,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACpB;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;QACvB,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACpB;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,EAAE,CAAC;IAEf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QAClC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACvB;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,CAAC,CAAC,MAAoB,EAAE,IAAY;IAC3C,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;AACzD,CAAC;AAED,SAAS,IAAI,CAAC,MAAoB,EAAE,GAAW,EAAE,IAAqB;IACpE,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;AAC9D,CAAC;AAMD,IAAI,QAAQ,GAAY,EAAE,CAAC;AAC3B,IAAI,aAAa,GAAG,CAAC,CAAC;AACtB,SAAS,aAAa;IACpB,QAAQ,GAAG,EAAE,CAAC;IACd,aAAa,GAAG,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,EAAE;IACV,IAAI,EAAE,EAAE;CACT,CAAC;AAEF,SAAS,EAAE,CAAC,IAAY,EAAE,IAAY,EAAE,UAAkB,EAAE,YAA0B;IACpF,qCAAqC;IACrC,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClE,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;QACzB,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;KACtB;IAED,oBAAoB;IACpB,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAClC,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,WAAW,CAAC,YAAY,CAAC,EACzB,YAAY,CACb,CAAC;IAEF,+EAA+E;IAC/E,IAAI,aAAa,IAAI,GAAG,EAAE;QACxB,aAAa,EAAE,CAAC;KACjB;IAED,QAAQ,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;IAC3B,aAAa,IAAI,CAAC,CAAC;IACnB,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,aAAa,CAAC,GAAW,EAAE,GAAe;IACjD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE;QAC7B,OAAO,KAAK,CAAC;KACd;IAED,IAAI,OAAO,MAAM,CAAC,eAAe,KAAK,UAAU,EAAE;QAChD,OAAO,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzC;IAED,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACnC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;KAC3B;IAED,OAAO,MAAM,KAAK,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,YAAY,CAAC,GAAc,EAAE,MAAiB;IACrD,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC;IACpB,IAAI,MAAM,EAAE;QACV,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM;YAAE,OAAO,IAAI,wBAAgB,CAAC,MAAM,CAAC,CAAC;KACvE;IACD,OAAO;AACT,CAAC;AAED,MAAa,SAAU,SAAQ,QAAQ;IACrC;QACE,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;CACF;AAJD,8BAIC;AAED,MAAa,WAAY,SAAQ,QAAQ;IACvC;QACE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClB,CAAC;CACF;AAJD,kCAIC"} \ No newline at end of file +{"version":3,"file":"scram.js","sourceRoot":"","sources":["../../../src/cmap/auth/scram.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cmap/command_monitoring_events.js b/food-ordering-app/server/node_modules/mongodb/lib/cmap/command_monitoring_events.js index 6cfaa31a6..7bcfe3f5a 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/cmap/command_monitoring_events.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/cmap/command_monitoring_events.js @@ -157,19 +157,6 @@ const OP_QUERY_KEYS = [ /** Extract the actual command from the query, possibly up-converting if it's a legacy format */ function extractCommand(command) { var _a; - if (command instanceof commands_1.GetMore) { - return { - getMore: (0, utils_1.deepCopy)(command.cursorId), - collection: collectionName(command), - batchSize: command.numberToReturn - }; - } - if (command instanceof commands_1.KillCursor) { - return { - killCursors: collectionName(command), - cursors: (0, utils_1.deepCopy)(command.cursorIds) - }; - } if (command instanceof commands_1.Msg) { return (0, utils_1.deepCopy)(command.command); } @@ -195,9 +182,8 @@ function extractCommand(command) { } }); OP_QUERY_KEYS.forEach(key => { - const opKey = key; - if (command[opKey]) { - result[opKey] = command[opKey]; + if (command[key]) { + result[key] = command[key]; } }); if (command.pre32Limit != null) { @@ -224,25 +210,9 @@ function extractCommand(command) { return command.query ? clonedQuery : clonedCommand; } function extractReply(command, reply) { - if (command instanceof commands_1.KillCursor) { - return { - ok: 1, - cursorsUnknown: command.cursorIds - }; - } if (!reply) { return reply; } - if (command instanceof commands_1.GetMore) { - return { - ok: 1, - cursor: { - id: (0, utils_1.deepCopy)(reply.cursorId), - ns: namespace(command), - nextBatch: (0, utils_1.deepCopy)(reply.documents) - } - }; - } if (command instanceof commands_1.Msg) { return (0, utils_1.deepCopy)(reply.result ? reply.result : reply); } diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cmap/command_monitoring_events.js.map b/food-ordering-app/server/node_modules/mongodb/lib/cmap/command_monitoring_events.js.map index 2c53ca4de..e88e96ff2 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/cmap/command_monitoring_events.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/cmap/command_monitoring_events.js.map @@ -1 +1 @@ -{"version":3,"file":"command_monitoring_events.js","sourceRoot":"","sources":["../../src/cmap/command_monitoring_events.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"command_monitoring_events.js","sourceRoot":"","sources":["../../src/cmap/command_monitoring_events.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cmap/commands.js b/food-ordering-app/server/node_modules/mongodb/lib/cmap/commands.js index 415a4b6f1..1fce711c6 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/cmap/commands.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/cmap/commands.js @@ -1,6 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.BinMsg = exports.Msg = exports.Response = exports.KillCursor = exports.GetMore = exports.Query = void 0; +exports.BinMsg = exports.Msg = exports.Response = exports.Query = void 0; const BSON = require("../bson"); const error_1 = require("../error"); const read_preference_1 = require("../read_preference"); @@ -189,158 +189,6 @@ class Query { } } exports.Query = Query; -/************************************************************** - * GETMORE - **************************************************************/ -/** @internal */ -class GetMore { - constructor(ns, cursorId, opts = {}) { - this.numberToReturn = opts.numberToReturn || 0; - this.requestId = _requestId++; - this.ns = ns; - this.cursorId = cursorId; - } - // Uses a single allocated buffer for the process, avoiding multiple memory allocations - toBin() { - const length = 4 + Buffer.byteLength(this.ns) + 1 + 4 + 8 + 4 * 4; - // Create command buffer - let index = 0; - // Allocate buffer - const _buffer = Buffer.alloc(length); - // Write header information - // index = write32bit(index, _buffer, length); - _buffer[index + 3] = (length >> 24) & 0xff; - _buffer[index + 2] = (length >> 16) & 0xff; - _buffer[index + 1] = (length >> 8) & 0xff; - _buffer[index] = length & 0xff; - index = index + 4; - // index = write32bit(index, _buffer, requestId); - _buffer[index + 3] = (this.requestId >> 24) & 0xff; - _buffer[index + 2] = (this.requestId >> 16) & 0xff; - _buffer[index + 1] = (this.requestId >> 8) & 0xff; - _buffer[index] = this.requestId & 0xff; - index = index + 4; - // index = write32bit(index, _buffer, 0); - _buffer[index + 3] = (0 >> 24) & 0xff; - _buffer[index + 2] = (0 >> 16) & 0xff; - _buffer[index + 1] = (0 >> 8) & 0xff; - _buffer[index] = 0 & 0xff; - index = index + 4; - // index = write32bit(index, _buffer, OP_GETMORE); - _buffer[index + 3] = (constants_1.OP_GETMORE >> 24) & 0xff; - _buffer[index + 2] = (constants_1.OP_GETMORE >> 16) & 0xff; - _buffer[index + 1] = (constants_1.OP_GETMORE >> 8) & 0xff; - _buffer[index] = constants_1.OP_GETMORE & 0xff; - index = index + 4; - // index = write32bit(index, _buffer, 0); - _buffer[index + 3] = (0 >> 24) & 0xff; - _buffer[index + 2] = (0 >> 16) & 0xff; - _buffer[index + 1] = (0 >> 8) & 0xff; - _buffer[index] = 0 & 0xff; - index = index + 4; - // Write collection name - index = index + _buffer.write(this.ns, index, 'utf8') + 1; - _buffer[index - 1] = 0; - // Write batch size - // index = write32bit(index, _buffer, numberToReturn); - _buffer[index + 3] = (this.numberToReturn >> 24) & 0xff; - _buffer[index + 2] = (this.numberToReturn >> 16) & 0xff; - _buffer[index + 1] = (this.numberToReturn >> 8) & 0xff; - _buffer[index] = this.numberToReturn & 0xff; - index = index + 4; - // Write cursor id - // index = write32bit(index, _buffer, cursorId.getLowBits()); - _buffer[index + 3] = (this.cursorId.getLowBits() >> 24) & 0xff; - _buffer[index + 2] = (this.cursorId.getLowBits() >> 16) & 0xff; - _buffer[index + 1] = (this.cursorId.getLowBits() >> 8) & 0xff; - _buffer[index] = this.cursorId.getLowBits() & 0xff; - index = index + 4; - // index = write32bit(index, _buffer, cursorId.getHighBits()); - _buffer[index + 3] = (this.cursorId.getHighBits() >> 24) & 0xff; - _buffer[index + 2] = (this.cursorId.getHighBits() >> 16) & 0xff; - _buffer[index + 1] = (this.cursorId.getHighBits() >> 8) & 0xff; - _buffer[index] = this.cursorId.getHighBits() & 0xff; - index = index + 4; - // Return buffer - return [_buffer]; - } -} -exports.GetMore = GetMore; -/************************************************************** - * KILLCURSOR - **************************************************************/ -/** @internal */ -class KillCursor { - constructor(ns, cursorIds) { - this.ns = ns; - this.requestId = _requestId++; - this.cursorIds = cursorIds; - } - // Uses a single allocated buffer for the process, avoiding multiple memory allocations - toBin() { - const length = 4 + 4 + 4 * 4 + this.cursorIds.length * 8; - // Create command buffer - let index = 0; - const _buffer = Buffer.alloc(length); - // Write header information - // index = write32bit(index, _buffer, length); - _buffer[index + 3] = (length >> 24) & 0xff; - _buffer[index + 2] = (length >> 16) & 0xff; - _buffer[index + 1] = (length >> 8) & 0xff; - _buffer[index] = length & 0xff; - index = index + 4; - // index = write32bit(index, _buffer, requestId); - _buffer[index + 3] = (this.requestId >> 24) & 0xff; - _buffer[index + 2] = (this.requestId >> 16) & 0xff; - _buffer[index + 1] = (this.requestId >> 8) & 0xff; - _buffer[index] = this.requestId & 0xff; - index = index + 4; - // index = write32bit(index, _buffer, 0); - _buffer[index + 3] = (0 >> 24) & 0xff; - _buffer[index + 2] = (0 >> 16) & 0xff; - _buffer[index + 1] = (0 >> 8) & 0xff; - _buffer[index] = 0 & 0xff; - index = index + 4; - // index = write32bit(index, _buffer, OP_KILL_CURSORS); - _buffer[index + 3] = (constants_1.OP_KILL_CURSORS >> 24) & 0xff; - _buffer[index + 2] = (constants_1.OP_KILL_CURSORS >> 16) & 0xff; - _buffer[index + 1] = (constants_1.OP_KILL_CURSORS >> 8) & 0xff; - _buffer[index] = constants_1.OP_KILL_CURSORS & 0xff; - index = index + 4; - // index = write32bit(index, _buffer, 0); - _buffer[index + 3] = (0 >> 24) & 0xff; - _buffer[index + 2] = (0 >> 16) & 0xff; - _buffer[index + 1] = (0 >> 8) & 0xff; - _buffer[index] = 0 & 0xff; - index = index + 4; - // Write batch size - // index = write32bit(index, _buffer, this.cursorIds.length); - _buffer[index + 3] = (this.cursorIds.length >> 24) & 0xff; - _buffer[index + 2] = (this.cursorIds.length >> 16) & 0xff; - _buffer[index + 1] = (this.cursorIds.length >> 8) & 0xff; - _buffer[index] = this.cursorIds.length & 0xff; - index = index + 4; - // Write all the cursor ids into the array - for (let i = 0; i < this.cursorIds.length; i++) { - // Write cursor id - // index = write32bit(index, _buffer, cursorIds[i].getLowBits()); - _buffer[index + 3] = (this.cursorIds[i].getLowBits() >> 24) & 0xff; - _buffer[index + 2] = (this.cursorIds[i].getLowBits() >> 16) & 0xff; - _buffer[index + 1] = (this.cursorIds[i].getLowBits() >> 8) & 0xff; - _buffer[index] = this.cursorIds[i].getLowBits() & 0xff; - index = index + 4; - // index = write32bit(index, _buffer, cursorIds[i].getHighBits()); - _buffer[index + 3] = (this.cursorIds[i].getHighBits() >> 24) & 0xff; - _buffer[index + 2] = (this.cursorIds[i].getHighBits() >> 16) & 0xff; - _buffer[index + 1] = (this.cursorIds[i].getHighBits() >> 8) & 0xff; - _buffer[index] = this.cursorIds[i].getHighBits() & 0xff; - index = index + 4; - } - // Return buffer - return [_buffer]; - } -} -exports.KillCursor = KillCursor; /** @internal */ class Response { constructor(message, msgHeader, msgBody, opts) { diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cmap/commands.js.map b/food-ordering-app/server/node_modules/mongodb/lib/cmap/commands.js.map index 051635790..3c067bee7 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/cmap/commands.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/cmap/commands.js.map @@ -1 +1 @@ -{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cmap/commands.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cmap/commands.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cmap/connect.js b/food-ordering-app/server/node_modules/mongodb/lib/cmap/connect.js index 8643d6896..c3dc448c6 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/cmap/connect.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/cmap/connect.js @@ -1,6 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.LEGAL_TCP_SOCKET_OPTIONS = exports.LEGAL_TLS_SOCKET_OPTIONS = exports.connect = void 0; +exports.LEGAL_TCP_SOCKET_OPTIONS = exports.LEGAL_TLS_SOCKET_OPTIONS = exports.prepareHandshakeDocument = exports.connect = void 0; const net = require("net"); const socks_1 = require("socks"); const tls = require("tls"); @@ -143,6 +143,11 @@ function performInitialHandshake(conn, options, _callback) { }); }); } +/** + * @internal + * + * This function is only exposed for testing purposes. + */ function prepareHandshakeDocument(authContext, callback) { const options = authContext.options; const compressors = options.compressors ? options.compressors : []; @@ -150,10 +155,12 @@ function prepareHandshakeDocument(authContext, callback) { const handshakeDoc = { [(serverApi === null || serverApi === void 0 ? void 0 : serverApi.version) ? 'hello' : constants_1.LEGACY_HELLO_COMMAND]: true, helloOk: true, - client: options.metadata || (0, utils_1.makeClientMetadata)(options), - compression: compressors, - loadBalanced: options.loadBalanced + client: options.metadata, + compression: compressors }; + if (options.loadBalanced === true) { + handshakeDoc.loadBalanced = true; + } const credentials = authContext.credentials; if (credentials) { if (credentials.mechanism === providers_1.AuthMechanism.MONGODB_DEFAULT && credentials.username) { @@ -173,6 +180,7 @@ function prepareHandshakeDocument(authContext, callback) { } callback(undefined, handshakeDoc); } +exports.prepareHandshakeDocument = prepareHandshakeDocument; /** @public */ exports.LEGAL_TLS_SOCKET_OPTIONS = [ 'ALPNProtocols', @@ -312,7 +320,7 @@ function makeConnection(options, _callback) { return callback(socket.authorizationError); } } - socket.setTimeout(socketTimeoutMS); + socket.setTimeout(0); callback(undefined, socket); } SOCKET_ERROR_EVENTS.forEach(event => socket.once(event, errorHandler(event))); @@ -362,18 +370,15 @@ function makeSocks5Connection(options, callback) { userId: options.proxyUsername || undefined, password: options.proxyPassword || undefined } - }, (err, info) => { - if (err) { - return callback(connectionFailureError('error', err)); - } + }).then(({ socket }) => { // Finally, now treat the resulting duplex stream as the // socket over which we send and receive wire protocol messages: makeConnection({ ...options, - existingSocket: info.socket, + existingSocket: socket, proxyHost: undefined }, callback); - }); + }, error => callback(connectionFailureError('error', error))); }); } function connectionFailureError(type, err) { diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cmap/connect.js.map b/food-ordering-app/server/node_modules/mongodb/lib/cmap/connect.js.map index 2f7131e21..7c5aa7ccc 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/cmap/connect.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/cmap/connect.js.map @@ -1 +1 @@ -{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/cmap/connect.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/cmap/connect.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cmap/connection.js b/food-ordering-app/server/node_modules/mongodb/lib/cmap/connection.js index 1ad803cd7..6dcd11c83 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/cmap/connection.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/cmap/connection.js @@ -2,7 +2,6 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.hasSessionSupport = exports.CryptoConnection = exports.Connection = void 0; const timers_1 = require("timers"); -const bson_1 = require("../bson"); const constants_1 = require("../constants"); const error_1 = require("../error"); const mongo_types_1 = require("../mongo_types"); @@ -32,9 +31,8 @@ const kHello = Symbol('hello'); /** @internal */ const kAutoEncrypter = Symbol('autoEncrypter'); /** @internal */ -const kFullResult = Symbol('fullResult'); -/** @internal */ const kDelayedTimeoutId = Symbol('delayedTimeoutId'); +const INVALID_QUEUE_SIZE = 'Connection internal queue contains more than 1 operation description'; /** @internal */ class Connection extends mongo_types_1.TypedEventEmitter { constructor(stream, options) { @@ -157,14 +155,36 @@ class Connection extends mongo_types_1.TypedEventEmitter { }, 1).unref(); // No need for this timer to hold the event loop open } onMessage(message) { + var _a; const delayedTimeoutId = this[kDelayedTimeoutId]; if (delayedTimeoutId != null) { - clearTimeout(delayedTimeoutId); + (0, timers_1.clearTimeout)(delayedTimeoutId); this[kDelayedTimeoutId] = null; } + const socketTimeoutMS = (_a = this[kStream].timeout) !== null && _a !== void 0 ? _a : 0; + this[kStream].setTimeout(0); // always emit the message, in case we are streaming this.emit('message', message); - const operationDescription = this[kQueue].get(message.responseTo); + let operationDescription = this[kQueue].get(message.responseTo); + if (!operationDescription && this.isMonitoringConnection) { + // This is how we recover when the initial hello's requestId is not + // the responseTo when hello responses have been skipped: + // First check if the map is of invalid size + if (this[kQueue].size > 1) { + this.onError(new error_1.MongoRuntimeError(INVALID_QUEUE_SIZE)); + } + else { + // Get the first orphaned operation description. + const entry = this[kQueue].entries().next(); + if (entry.value != null) { + const [requestId, orphaned] = entry.value; + // If the orphaned operation description exists then set it. + operationDescription = orphaned; + // Remove the entry with the bad request id from the queue. + this[kQueue].delete(requestId); + } + } + } if (!operationDescription) { return; } @@ -174,11 +194,12 @@ class Connection extends mongo_types_1.TypedEventEmitter { // making the `responseTo` change on each response this[kQueue].delete(message.responseTo); if ('moreToCome' in message && message.moreToCome) { - // requeue the callback for next synthetic request + // If the operation description check above does find an orphaned + // description and sets the operationDescription then this line will put one + // back in the queue with the correct requestId and will resolve not being able + // to find the next one via the responseTo of the next streaming hello. this[kQueue].set(message.requestId, operationDescription); - } - else if (operationDescription.socketTimeoutOverride) { - this[kStream].setTimeout(this.socketTimeoutMS); + this[kStream].setTimeout(socketTimeoutMS); } try { // Pass in the entire description because it has BSON parsing options @@ -219,7 +240,7 @@ class Connection extends mongo_types_1.TypedEventEmitter { } } } - callback(undefined, operationDescription.fullResult ? message : message.documents[0]); + callback(undefined, message.documents[0]); } destroy(options, callback) { if (typeof options === 'function') { @@ -252,10 +273,6 @@ class Connection extends mongo_types_1.TypedEventEmitter { }); } command(ns, cmd, options, callback) { - if (!(ns instanceof utils_1.MongoDBNamespace)) { - // TODO(NODE-3483): Replace this with a MongoCommandError - throw new error_1.MongoRuntimeError('Must provide a MongoDBNamespace instance'); - } const readPreference = (0, shared_1.getReadPreference)(cmd, options); const shouldUseOpMsg = supportsOpMsg(this); const session = options === null || options === void 0 ? void 0 : options.session; @@ -309,77 +326,6 @@ class Connection extends mongo_types_1.TypedEventEmitter { callback(err); } } - getMore(ns, cursorId, options, callback) { - const fullResult = !!options[kFullResult]; - const wireVersion = (0, utils_1.maxWireVersion)(this); - if (!cursorId) { - // TODO(NODE-3483): Replace this with a MongoCommandError - callback(new error_1.MongoRuntimeError('Invalid internal cursor state, no known cursor id')); - return; - } - if (wireVersion < 4) { - const getMoreOp = new commands_1.GetMore(ns.toString(), cursorId, { numberToReturn: options.batchSize }); - const queryOptions = (0, shared_1.applyCommonQueryOptions)({}, Object.assign(options, { ...(0, bson_1.pluckBSONSerializeOptions)(options) })); - queryOptions[kFullResult] = true; - queryOptions.command = true; - write(this, getMoreOp, queryOptions, (err, response) => { - if (fullResult) - return callback(err, response); - if (err) - return callback(err); - callback(undefined, { cursor: { id: response.cursorId, nextBatch: response.documents } }); - }); - return; - } - const getMoreCmd = { - getMore: cursorId, - collection: ns.collection - }; - if (typeof options.batchSize === 'number') { - getMoreCmd.batchSize = Math.abs(options.batchSize); - } - if (typeof options.maxAwaitTimeMS === 'number') { - getMoreCmd.maxTimeMS = options.maxAwaitTimeMS; - } - // we check for undefined specifically here to allow falsy values - // eslint-disable-next-line no-restricted-syntax - if (options.comment !== undefined) { - getMoreCmd.comment = options.comment; - } - const commandOptions = Object.assign({ - returnFieldSelector: null, - documentsReturnedIn: 'nextBatch' - }, options); - this.command(ns, getMoreCmd, commandOptions, callback); - } - killCursors(ns, cursorIds, options, callback) { - if (!cursorIds || !Array.isArray(cursorIds)) { - // TODO(NODE-3483): Replace this with a MongoCommandError - throw new error_1.MongoRuntimeError(`Invalid list of cursor ids provided: ${cursorIds}`); - } - if ((0, utils_1.maxWireVersion)(this) < 4) { - try { - write(this, new commands_1.KillCursor(ns.toString(), cursorIds), { noResponse: true, ...options }, callback); - } - catch (err) { - callback(err); - } - return; - } - this.command(ns, { killCursors: ns.collection, cursors: cursorIds }, { [kFullResult]: true, ...options }, (err, response) => { - if (err || !response) - return callback(err); - if (response.cursorNotFound) { - return callback(new error_1.MongoNetworkError('cursor killed or timed out'), null); - } - if (!Array.isArray(response.documents) || response.documents.length === 0) { - return callback( - // TODO(NODE-3483) - new error_1.MongoRuntimeError(`invalid killCursors result returned for cursor id ${cursorIds[0]}`)); - } - callback(undefined, response.documents[0]); - }); - } } exports.Connection = Connection; /** @event */ @@ -419,11 +365,30 @@ class CryptoConnection extends Connection { callback(new error_1.MongoCompatibilityError('Auto-encryption requires a minimum MongoDB version of 4.2')); return; } + // Save sort or indexKeys based on the command being run + // the encrypt API serializes our JS objects to BSON to pass to the native code layer + // and then deserializes the encrypted result, the protocol level components + // of the command (ex. sort) are then converted to JS objects potentially losing + // import key order information. These fields are never encrypted so we can save the values + // from before the encryption and replace them after encryption has been performed + const sort = cmd.find || cmd.findAndModify ? cmd.sort : null; + const indexKeys = cmd.createIndexes + ? cmd.indexes.map((index) => index.key) + : null; autoEncrypter.encrypt(ns.toString(), cmd, options, (err, encrypted) => { if (err || encrypted == null) { callback(err, null); return; } + // Replace the saved values + if (sort != null && (cmd.find || cmd.findAndModify)) { + encrypted.sort = sort; + } + if (indexKeys != null && cmd.createIndexes) { + for (const [offset, index] of indexKeys.entries()) { + encrypted.indexes[offset].key = index; + } + } super.command(ns, encrypted, options, (err, response) => { if (err || response == null) { callback(err, response); @@ -454,21 +419,18 @@ function streamIdentifier(stream, options) { // will not accurately reflect what endpoint this is connected to. return options.hostAddress.toString(); } - if (typeof stream.address === 'function') { - return `${stream.remoteAddress}:${stream.remotePort}`; + const { remoteAddress, remotePort } = stream; + if (typeof remoteAddress === 'string' && typeof remotePort === 'number') { + return utils_1.HostAddress.fromHostPort(remoteAddress, remotePort).toString(); } return (0, utils_1.uuidV4)().toString('hex'); } function write(conn, command, options, callback) { - if (typeof options === 'function') { - callback = options; - } options = options !== null && options !== void 0 ? options : {}; const operationDescription = { requestId: command.requestId, cb: callback, session: options.session, - fullResult: !!options[kFullResult], noResponse: typeof options.noResponse === 'boolean' ? options.noResponse : false, documentsReturnedIn: options.documentsReturnedIn, command: !!options.command, @@ -488,9 +450,11 @@ function write(conn, command, options, callback) { } } if (typeof options.socketTimeoutMS === 'number') { - operationDescription.socketTimeoutOverride = true; conn[kStream].setTimeout(options.socketTimeoutMS); } + else if (conn.socketTimeoutMS !== 0) { + conn[kStream].setTimeout(conn.socketTimeoutMS); + } // if command monitoring is enabled we need to modify the callback here if (conn.monitorCommands) { conn.emit(Connection.COMMAND_STARTED, new command_monitoring_events_1.CommandStartedEvent(conn, command)); diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cmap/connection.js.map b/food-ordering-app/server/node_modules/mongodb/lib/cmap/connection.js.map index fda34479b..4a55df6b5 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/cmap/connection.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/cmap/connection.js.map @@ -1 +1 @@ -{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/cmap/connection.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/cmap/connection.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cmap/connection_pool.js b/food-ordering-app/server/node_modules/mongodb/lib/cmap/connection_pool.js index 257572af4..6ff4580c0 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/cmap/connection_pool.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/cmap/connection_pool.js @@ -1,7 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.ConnectionPool = void 0; -const Denque = require("denque"); +exports.ConnectionPool = exports.PoolState = void 0; const timers_1 = require("timers"); const constants_1 = require("../constants"); const error_1 = require("../error"); @@ -14,6 +13,8 @@ const connection_pool_events_1 = require("./connection_pool_events"); const errors_1 = require("./errors"); const metrics_1 = require("./metrics"); /** @internal */ +const kServer = Symbol('server'); +/** @internal */ const kLogger = Symbol('logger'); /** @internal */ const kConnections = Symbol('connections'); @@ -39,16 +40,22 @@ const kCancelled = Symbol('cancelled'); const kMetrics = Symbol('metrics'); /** @internal */ const kProcessingWaitQueue = Symbol('processingWaitQueue'); +/** @internal */ +const kPoolState = Symbol('poolState'); +/** @internal */ +exports.PoolState = Object.freeze({ + paused: 'paused', + ready: 'ready', + closed: 'closed' +}); /** * A pool of connections which dynamically resizes, and emit events related to pool activity * @internal */ class ConnectionPool extends mongo_types_1.TypedEventEmitter { - /** @internal */ - constructor(options) { - var _a, _b, _c, _d, _e; + constructor(server, options) { + var _a, _b, _c, _d, _e, _f; super(); - this.closed = false; this.options = Object.freeze({ ...options, connectionType: connection_1.Connection, @@ -57,34 +64,44 @@ class ConnectionPool extends mongo_types_1.TypedEventEmitter { maxConnecting: (_c = options.maxConnecting) !== null && _c !== void 0 ? _c : 2, maxIdleTimeMS: (_d = options.maxIdleTimeMS) !== null && _d !== void 0 ? _d : 0, waitQueueTimeoutMS: (_e = options.waitQueueTimeoutMS) !== null && _e !== void 0 ? _e : 0, + minPoolSizeCheckFrequencyMS: (_f = options.minPoolSizeCheckFrequencyMS) !== null && _f !== void 0 ? _f : 100, autoEncrypter: options.autoEncrypter, metadata: options.metadata }); if (this.options.minPoolSize > this.options.maxPoolSize) { throw new error_1.MongoInvalidArgumentError('Connection pool minimum size must not be greater than maximum pool size'); } + this[kPoolState] = exports.PoolState.paused; + this[kServer] = server; this[kLogger] = new logger_1.Logger('ConnectionPool'); - this[kConnections] = new Denque(); + this[kConnections] = new utils_1.List(); this[kPending] = 0; - this[kCheckedOut] = 0; + this[kCheckedOut] = new Set(); this[kMinPoolSizeTimer] = undefined; this[kGeneration] = 0; this[kServiceGenerations] = new Map(); this[kConnectionCounter] = (0, utils_1.makeCounter)(1); this[kCancellationToken] = new mongo_types_1.CancellationToken(); this[kCancellationToken].setMaxListeners(Infinity); - this[kWaitQueue] = new Denque(); + this[kWaitQueue] = new utils_1.List(); this[kMetrics] = new metrics_1.ConnectionPoolMetrics(); this[kProcessingWaitQueue] = false; process.nextTick(() => { this.emit(ConnectionPool.CONNECTION_POOL_CREATED, new connection_pool_events_1.ConnectionPoolCreatedEvent(this)); - ensureMinPoolSize(this); }); } /** The address of the endpoint the pool is connected to */ get address() { return this.options.hostAddress.toString(); } + /** + * Check if the pool has been closed + * + * TODO(NODE-3263): We can remove this property once shell no longer needs it + */ + get closed() { + return this[kPoolState] === exports.PoolState.closed; + } /** An integer representing the SDAM generation of the pool */ get generation() { return this[kGeneration]; @@ -101,7 +118,7 @@ class ConnectionPool extends mongo_types_1.TypedEventEmitter { return this[kPending]; } get currentCheckedOutCount() { - return this[kCheckedOut]; + return this[kCheckedOut].size; } get waitQueueSize() { return this[kWaitQueue].length; @@ -112,12 +129,37 @@ class ConnectionPool extends mongo_types_1.TypedEventEmitter { get serviceGenerations() { return this[kServiceGenerations]; } + get serverError() { + return this[kServer].description.error; + } + /** + * This is exposed ONLY for use in mongosh, to enable + * killing all connections if a user quits the shell with + * operations in progress. + * + * This property may be removed as a part of NODE-3263. + */ + get checkedOutConnections() { + return this[kCheckedOut]; + } /** * Get the metrics information for the pool when a wait queue timeout occurs. */ waitQueueErrorMetrics() { return this[kMetrics].info(this.options.maxPoolSize); } + /** + * Set the pool state to "ready" + */ + ready() { + if (this[kPoolState] !== exports.PoolState.paused) { + return; + } + this[kPoolState] = exports.PoolState.ready; + this.emit(ConnectionPool.CONNECTION_POOL_READY, new connection_pool_events_1.ConnectionPoolReadyEvent(this)); + (0, timers_1.clearTimeout)(this[kMinPoolSizeTimer]); + this.ensureMinPoolSize(); + } /** * Check a connection out of this pool. The connection will continue to be tracked, but no reference to it * will be held by the pool. This means that if a connection is checked out it MUST be checked back in or @@ -125,11 +167,6 @@ class ConnectionPool extends mongo_types_1.TypedEventEmitter { */ checkOut(callback) { this.emit(ConnectionPool.CONNECTION_CHECK_OUT_STARTED, new connection_pool_events_1.ConnectionCheckOutStartedEvent(this)); - if (this.closed) { - this.emit(ConnectionPool.CONNECTION_CHECK_OUT_FAILED, new connection_pool_events_1.ConnectionCheckOutFailedEvent(this, 'poolClosed')); - callback(new errors_1.PoolClosedError(this)); - return; - } const waitQueueMember = { callback }; const waitQueueTimeoutMS = this.options.waitQueueTimeoutMS; if (waitQueueTimeoutMS) { @@ -143,7 +180,7 @@ class ConnectionPool extends mongo_types_1.TypedEventEmitter { }, waitQueueTimeoutMS); } this[kWaitQueue].push(waitQueueMember); - process.nextTick(processWaitQueue, this); + process.nextTick(() => this.processWaitQueue()); } /** * Check a connection into the pool. @@ -151,20 +188,23 @@ class ConnectionPool extends mongo_types_1.TypedEventEmitter { * @param connection - The connection to check in */ checkIn(connection) { + if (!this[kCheckedOut].has(connection)) { + return; + } const poolClosed = this.closed; - const stale = connectionIsStale(this, connection); + const stale = this.connectionIsStale(connection); const willDestroy = !!(poolClosed || stale || connection.closed); if (!willDestroy) { connection.markAvailable(); this[kConnections].unshift(connection); } - this[kCheckedOut]--; + this[kCheckedOut].delete(connection); this.emit(ConnectionPool.CONNECTION_CHECKED_IN, new connection_pool_events_1.ConnectionCheckedInEvent(this, connection)); if (willDestroy) { const reason = connection.closed ? 'error' : poolClosed ? 'poolClosed' : 'stale'; - destroyConnection(this, connection, reason); + this.destroyConnection(connection, reason); } - process.nextTick(processWaitQueue, this); + process.nextTick(() => this.processWaitQueue()); } /** * Clear the pool @@ -172,25 +212,58 @@ class ConnectionPool extends mongo_types_1.TypedEventEmitter { * Pool reset is handled by incrementing the pool's generation count. Any existing connection of a * previous generation will eventually be pruned during subsequent checkouts. */ - clear(serviceId) { - if (this.loadBalanced && serviceId) { + clear(options = {}) { + var _a; + if (this.closed) { + return; + } + // handle load balanced case + if (this.loadBalanced) { + const { serviceId } = options; + if (!serviceId) { + throw new error_1.MongoRuntimeError('ConnectionPool.clear() called in load balanced mode with no serviceId.'); + } const sid = serviceId.toHexString(); const generation = this.serviceGenerations.get(sid); // Only need to worry if the generation exists, since it should // always be there but typescript needs the check. if (generation == null) { - // TODO(NODE-3483) throw new error_1.MongoRuntimeError('Service generations are required in load balancer mode.'); } else { // Increment the generation for the service id. this.serviceGenerations.set(sid, generation + 1); } + this.emit(ConnectionPool.CONNECTION_POOL_CLEARED, new connection_pool_events_1.ConnectionPoolClearedEvent(this, { serviceId })); + return; } - else { - this[kGeneration] += 1; + // handle non load-balanced case + const interruptInUseConnections = (_a = options.interruptInUseConnections) !== null && _a !== void 0 ? _a : false; + const oldGeneration = this[kGeneration]; + this[kGeneration] += 1; + const alreadyPaused = this[kPoolState] === exports.PoolState.paused; + this[kPoolState] = exports.PoolState.paused; + this.clearMinPoolSizeTimer(); + if (!alreadyPaused) { + this.emit(ConnectionPool.CONNECTION_POOL_CLEARED, new connection_pool_events_1.ConnectionPoolClearedEvent(this, { interruptInUseConnections })); + } + if (interruptInUseConnections) { + process.nextTick(() => this.interruptInUseConnections(oldGeneration)); + } + this.processWaitQueue(); + } + /** + * Closes all stale in-use connections in the pool with a resumable PoolClearedOnNetworkError. + * + * Only connections where `connection.generation <= minGeneration` are killed. + */ + interruptInUseConnections(minGeneration) { + for (const connection of this[kCheckedOut]) { + if (connection.generation <= minGeneration) { + this.checkIn(connection); + connection.onError(new errors_1.PoolClearedOnNetworkError(this)); + } } - this.emit('connectionPoolCleared', new connection_pool_events_1.ConnectionPoolClearedEvent(this, serviceId)); } close(_options, _cb) { let options = _options; @@ -204,30 +277,13 @@ class ConnectionPool extends mongo_types_1.TypedEventEmitter { } // immediately cancel any in-flight connections this[kCancellationToken].emit('cancel'); - // drain the wait queue - while (this.waitQueueSize) { - const waitQueueMember = this[kWaitQueue].pop(); - if (waitQueueMember) { - if (waitQueueMember.timer) { - clearTimeout(waitQueueMember.timer); - } - if (!waitQueueMember[kCancelled]) { - // TODO(NODE-3483): Replace with MongoConnectionPoolClosedError - waitQueueMember.callback(new error_1.MongoRuntimeError('Connection pool closed')); - } - } - } - // clear the min pool size timer - const minPoolSizeTimer = this[kMinPoolSizeTimer]; - if (minPoolSizeTimer) { - clearTimeout(minPoolSizeTimer); - } // end the connection counter if (typeof this[kConnectionCounter].return === 'function') { this[kConnectionCounter].return(undefined); } - // mark the pool as closed immediately - this.closed = true; + this[kPoolState] = exports.PoolState.closed; + this.clearMinPoolSizeTimer(); + this.processWaitQueue(); (0, utils_1.eachAsync)(this[kConnections].toArray(), (conn, cb) => { this.emit(ConnectionPool.CONNECTION_CLOSED, new connection_pool_events_1.ConnectionClosedEvent(this, conn, 'poolClosed')); conn.destroy(options, cb); @@ -283,6 +339,205 @@ class ConnectionPool extends mongo_types_1.TypedEventEmitter { }); }); } + /** Clear the min pool size timer */ + clearMinPoolSizeTimer() { + const minPoolSizeTimer = this[kMinPoolSizeTimer]; + if (minPoolSizeTimer) { + (0, timers_1.clearTimeout)(minPoolSizeTimer); + } + } + destroyConnection(connection, reason) { + this.emit(ConnectionPool.CONNECTION_CLOSED, new connection_pool_events_1.ConnectionClosedEvent(this, connection, reason)); + // destroy the connection + process.nextTick(() => connection.destroy()); + } + connectionIsStale(connection) { + const serviceId = connection.serviceId; + if (this.loadBalanced && serviceId) { + const sid = serviceId.toHexString(); + const generation = this.serviceGenerations.get(sid); + return connection.generation !== generation; + } + return connection.generation !== this[kGeneration]; + } + connectionIsIdle(connection) { + return !!(this.options.maxIdleTimeMS && connection.idleTime > this.options.maxIdleTimeMS); + } + /** + * Destroys a connection if the connection is perished. + * + * @returns `true` if the connection was destroyed, `false` otherwise. + */ + destroyConnectionIfPerished(connection) { + const isStale = this.connectionIsStale(connection); + const isIdle = this.connectionIsIdle(connection); + if (!isStale && !isIdle && !connection.closed) { + return false; + } + const reason = connection.closed ? 'error' : isStale ? 'stale' : 'idle'; + this.destroyConnection(connection, reason); + return true; + } + createConnection(callback) { + const connectOptions = { + ...this.options, + id: this[kConnectionCounter].next().value, + generation: this[kGeneration], + cancellationToken: this[kCancellationToken] + }; + this[kPending]++; + // This is our version of a "virtual" no-I/O connection as the spec requires + this.emit(ConnectionPool.CONNECTION_CREATED, new connection_pool_events_1.ConnectionCreatedEvent(this, { id: connectOptions.id })); + (0, connect_1.connect)(connectOptions, (err, connection) => { + if (err || !connection) { + this[kLogger].debug(`connection attempt failed with error [${JSON.stringify(err)}]`); + this[kPending]--; + this.emit(ConnectionPool.CONNECTION_CLOSED, new connection_pool_events_1.ConnectionClosedEvent(this, { id: connectOptions.id, serviceId: undefined }, 'error')); + if (err instanceof error_1.MongoNetworkError || err instanceof error_1.MongoServerError) { + err.connectionGeneration = connectOptions.generation; + } + callback(err !== null && err !== void 0 ? err : new error_1.MongoRuntimeError('Connection creation failed without error')); + return; + } + // The pool might have closed since we started trying to create a connection + if (this[kPoolState] !== exports.PoolState.ready) { + this[kPending]--; + connection.destroy({ force: true }); + callback(this.closed ? new errors_1.PoolClosedError(this) : new errors_1.PoolClearedError(this)); + return; + } + // forward all events from the connection to the pool + for (const event of [...constants_1.APM_EVENTS, connection_1.Connection.CLUSTER_TIME_RECEIVED]) { + connection.on(event, (e) => this.emit(event, e)); + } + if (this.loadBalanced) { + connection.on(connection_1.Connection.PINNED, pinType => this[kMetrics].markPinned(pinType)); + connection.on(connection_1.Connection.UNPINNED, pinType => this[kMetrics].markUnpinned(pinType)); + const serviceId = connection.serviceId; + if (serviceId) { + let generation; + const sid = serviceId.toHexString(); + if ((generation = this.serviceGenerations.get(sid))) { + connection.generation = generation; + } + else { + this.serviceGenerations.set(sid, 0); + connection.generation = 0; + } + } + } + connection.markAvailable(); + this.emit(ConnectionPool.CONNECTION_READY, new connection_pool_events_1.ConnectionReadyEvent(this, connection)); + this[kPending]--; + callback(undefined, connection); + return; + }); + } + ensureMinPoolSize() { + const minPoolSize = this.options.minPoolSize; + if (this[kPoolState] !== exports.PoolState.ready || minPoolSize === 0) { + return; + } + this[kConnections].prune(connection => this.destroyConnectionIfPerished(connection)); + if (this.totalConnectionCount < minPoolSize && + this.pendingConnectionCount < this.options.maxConnecting) { + // NOTE: ensureMinPoolSize should not try to get all the pending + // connection permits because that potentially delays the availability of + // the connection to a checkout request + this.createConnection((err, connection) => { + if (err) { + this[kServer].handleError(err); + } + if (!err && connection) { + this[kConnections].push(connection); + process.nextTick(() => this.processWaitQueue()); + } + if (this[kPoolState] === exports.PoolState.ready) { + (0, timers_1.clearTimeout)(this[kMinPoolSizeTimer]); + this[kMinPoolSizeTimer] = (0, timers_1.setTimeout)(() => this.ensureMinPoolSize(), this.options.minPoolSizeCheckFrequencyMS); + } + }); + } + else { + (0, timers_1.clearTimeout)(this[kMinPoolSizeTimer]); + this[kMinPoolSizeTimer] = (0, timers_1.setTimeout)(() => this.ensureMinPoolSize(), this.options.minPoolSizeCheckFrequencyMS); + } + } + processWaitQueue() { + if (this[kProcessingWaitQueue]) { + return; + } + this[kProcessingWaitQueue] = true; + while (this.waitQueueSize) { + const waitQueueMember = this[kWaitQueue].first(); + if (!waitQueueMember) { + this[kWaitQueue].shift(); + continue; + } + if (waitQueueMember[kCancelled]) { + this[kWaitQueue].shift(); + continue; + } + if (this[kPoolState] !== exports.PoolState.ready) { + const reason = this.closed ? 'poolClosed' : 'connectionError'; + const error = this.closed ? new errors_1.PoolClosedError(this) : new errors_1.PoolClearedError(this); + this.emit(ConnectionPool.CONNECTION_CHECK_OUT_FAILED, new connection_pool_events_1.ConnectionCheckOutFailedEvent(this, reason)); + if (waitQueueMember.timer) { + (0, timers_1.clearTimeout)(waitQueueMember.timer); + } + this[kWaitQueue].shift(); + waitQueueMember.callback(error); + continue; + } + if (!this.availableConnectionCount) { + break; + } + const connection = this[kConnections].shift(); + if (!connection) { + break; + } + if (!this.destroyConnectionIfPerished(connection)) { + this[kCheckedOut].add(connection); + this.emit(ConnectionPool.CONNECTION_CHECKED_OUT, new connection_pool_events_1.ConnectionCheckedOutEvent(this, connection)); + if (waitQueueMember.timer) { + (0, timers_1.clearTimeout)(waitQueueMember.timer); + } + this[kWaitQueue].shift(); + waitQueueMember.callback(undefined, connection); + } + } + const { maxPoolSize, maxConnecting } = this.options; + while (this.waitQueueSize > 0 && + this.pendingConnectionCount < maxConnecting && + (maxPoolSize === 0 || this.totalConnectionCount < maxPoolSize)) { + const waitQueueMember = this[kWaitQueue].shift(); + if (!waitQueueMember || waitQueueMember[kCancelled]) { + continue; + } + this.createConnection((err, connection) => { + if (waitQueueMember[kCancelled]) { + if (!err && connection) { + this[kConnections].push(connection); + } + } + else { + if (err) { + this.emit(ConnectionPool.CONNECTION_CHECK_OUT_FAILED, new connection_pool_events_1.ConnectionCheckOutFailedEvent(this, 'connectionError')); + } + else if (connection) { + this[kCheckedOut].add(connection); + this.emit(ConnectionPool.CONNECTION_CHECKED_OUT, new connection_pool_events_1.ConnectionCheckedOutEvent(this, connection)); + } + if (waitQueueMember.timer) { + (0, timers_1.clearTimeout)(waitQueueMember.timer); + } + waitQueueMember.callback(err, connection); + } + process.nextTick(() => this.processWaitQueue()); + }); + } + this[kProcessingWaitQueue] = false; + } } exports.ConnectionPool = ConnectionPool; /** @@ -300,6 +555,11 @@ ConnectionPool.CONNECTION_POOL_CLOSED = constants_1.CONNECTION_POOL_CLOSED; * @event */ ConnectionPool.CONNECTION_POOL_CLEARED = constants_1.CONNECTION_POOL_CLEARED; +/** + * Emitted each time the connection pool is marked ready + * @event + */ +ConnectionPool.CONNECTION_POOL_READY = constants_1.CONNECTION_POOL_READY; /** * Emitted when a connection is created. * @event @@ -335,163 +595,4 @@ ConnectionPool.CONNECTION_CHECKED_OUT = constants_1.CONNECTION_CHECKED_OUT; * @event */ ConnectionPool.CONNECTION_CHECKED_IN = constants_1.CONNECTION_CHECKED_IN; -function ensureMinPoolSize(pool) { - const minPoolSize = pool.options.minPoolSize; - if (pool.closed || minPoolSize === 0) { - return; - } - if (pool.totalConnectionCount < minPoolSize && - pool.pendingConnectionCount < pool.options.maxConnecting) { - // NOTE: ensureMinPoolSize should not try to get all the pending - // connection permits because that potentially delays the availability of - // the connection to a checkout request - createConnection(pool, (err, connection) => { - pool[kPending]--; - if (!err && connection) { - pool[kConnections].push(connection); - process.nextTick(processWaitQueue, pool); - } - pool[kMinPoolSizeTimer] = (0, timers_1.setTimeout)(() => ensureMinPoolSize(pool), 10); - }); - } - else { - pool[kMinPoolSizeTimer] = (0, timers_1.setTimeout)(() => ensureMinPoolSize(pool), 100); - } -} -function connectionIsStale(pool, connection) { - const serviceId = connection.serviceId; - if (pool.loadBalanced && serviceId) { - const sid = serviceId.toHexString(); - const generation = pool.serviceGenerations.get(sid); - return connection.generation !== generation; - } - return connection.generation !== pool[kGeneration]; -} -function connectionIsIdle(pool, connection) { - return !!(pool.options.maxIdleTimeMS && connection.idleTime > pool.options.maxIdleTimeMS); -} -function createConnection(pool, callback) { - const connectOptions = { - ...pool.options, - id: pool[kConnectionCounter].next().value, - generation: pool[kGeneration], - cancellationToken: pool[kCancellationToken] - }; - pool[kPending]++; - // This is our version of a "virtual" no-I/O connection as the spec requires - pool.emit(ConnectionPool.CONNECTION_CREATED, new connection_pool_events_1.ConnectionCreatedEvent(pool, { id: connectOptions.id })); - (0, connect_1.connect)(connectOptions, (err, connection) => { - if (err || !connection) { - pool[kLogger].debug(`connection attempt failed with error [${JSON.stringify(err)}]`); - callback(err); - return; - } - // The pool might have closed since we started trying to create a connection - if (pool.closed) { - pool[kPending]--; - connection.destroy({ force: true }); - return; - } - // forward all events from the connection to the pool - for (const event of [...constants_1.APM_EVENTS, connection_1.Connection.CLUSTER_TIME_RECEIVED]) { - connection.on(event, (e) => pool.emit(event, e)); - } - if (pool.loadBalanced) { - connection.on(connection_1.Connection.PINNED, pinType => pool[kMetrics].markPinned(pinType)); - connection.on(connection_1.Connection.UNPINNED, pinType => pool[kMetrics].markUnpinned(pinType)); - const serviceId = connection.serviceId; - if (serviceId) { - let generation; - const sid = serviceId.toHexString(); - if ((generation = pool.serviceGenerations.get(sid))) { - connection.generation = generation; - } - else { - pool.serviceGenerations.set(sid, 0); - connection.generation = 0; - } - } - } - connection.markAvailable(); - pool.emit(ConnectionPool.CONNECTION_READY, new connection_pool_events_1.ConnectionReadyEvent(pool, connection)); - callback(undefined, connection); - return; - }); -} -function destroyConnection(pool, connection, reason) { - pool.emit(ConnectionPool.CONNECTION_CLOSED, new connection_pool_events_1.ConnectionClosedEvent(pool, connection, reason)); - // destroy the connection - process.nextTick(() => connection.destroy()); -} -function processWaitQueue(pool) { - if (pool.closed || pool[kProcessingWaitQueue]) { - return; - } - pool[kProcessingWaitQueue] = true; - while (pool.waitQueueSize) { - const waitQueueMember = pool[kWaitQueue].peekFront(); - if (!waitQueueMember) { - pool[kWaitQueue].shift(); - continue; - } - if (waitQueueMember[kCancelled]) { - pool[kWaitQueue].shift(); - continue; - } - if (!pool.availableConnectionCount) { - break; - } - const connection = pool[kConnections].shift(); - if (!connection) { - break; - } - const isStale = connectionIsStale(pool, connection); - const isIdle = connectionIsIdle(pool, connection); - if (!isStale && !isIdle && !connection.closed) { - pool[kCheckedOut]++; - pool.emit(ConnectionPool.CONNECTION_CHECKED_OUT, new connection_pool_events_1.ConnectionCheckedOutEvent(pool, connection)); - if (waitQueueMember.timer) { - clearTimeout(waitQueueMember.timer); - } - pool[kWaitQueue].shift(); - waitQueueMember.callback(undefined, connection); - } - else { - const reason = connection.closed ? 'error' : isStale ? 'stale' : 'idle'; - destroyConnection(pool, connection, reason); - } - } - const { maxPoolSize, maxConnecting } = pool.options; - while (pool.waitQueueSize > 0 && - pool.pendingConnectionCount < maxConnecting && - (maxPoolSize === 0 || pool.totalConnectionCount < maxPoolSize)) { - const waitQueueMember = pool[kWaitQueue].shift(); - if (!waitQueueMember || waitQueueMember[kCancelled]) { - continue; - } - createConnection(pool, (err, connection) => { - pool[kPending]--; - if (waitQueueMember[kCancelled]) { - if (!err && connection) { - pool[kConnections].push(connection); - } - } - else { - if (err) { - pool.emit(ConnectionPool.CONNECTION_CHECK_OUT_FAILED, new connection_pool_events_1.ConnectionCheckOutFailedEvent(pool, err)); - } - else if (connection) { - pool[kCheckedOut]++; - pool.emit(ConnectionPool.CONNECTION_CHECKED_OUT, new connection_pool_events_1.ConnectionCheckedOutEvent(pool, connection)); - } - if (waitQueueMember.timer) { - clearTimeout(waitQueueMember.timer); - } - waitQueueMember.callback(err, connection); - } - process.nextTick(processWaitQueue, pool); - }); - } - pool[kProcessingWaitQueue] = false; -} //# sourceMappingURL=connection_pool.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cmap/connection_pool.js.map b/food-ordering-app/server/node_modules/mongodb/lib/cmap/connection_pool.js.map index d0dd20db2..950516d72 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/cmap/connection_pool.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/cmap/connection_pool.js.map @@ -1 +1 @@ -{"version":3,"file":"connection_pool.js","sourceRoot":"","sources":["../../src/cmap/connection_pool.ts"],"names":[],"mappings":";;;AAAA,iCAAkC;AAClC,mCAAoC;AAGpC,4CAYsB;AACtB,oCAAoF;AACpF,sCAAmC;AACnC,gDAAsE;AACtE,oCAA4D;AAC5D,uCAAoC;AACpC,6CAA+E;AAC/E,qEAWkC;AAClC,qCAAkE;AAClE,uCAAkD;AAElD,gBAAgB;AAChB,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AACjC,gBAAgB;AAChB,MAAM,YAAY,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAC3C,gBAAgB;AAChB,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AACnC,gBAAgB;AAChB,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AACzC,gBAAgB;AAChB,MAAM,iBAAiB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACrD,gBAAgB;AAChB,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AACzC,gBAAgB;AAChB,MAAM,mBAAmB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AACzD,gBAAgB;AAChB,MAAM,kBAAkB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;AACvD,gBAAgB;AAChB,MAAM,kBAAkB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;AACvD,gBAAgB;AAChB,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AACvC,gBAAgB;AAChB,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AACvC,gBAAgB;AAChB,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AACnC,gBAAgB;AAChB,MAAM,oBAAoB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AA4C3D;;;GAGG;AACH,MAAa,cAAe,SAAQ,+BAAuC;IAoFzE,gBAAgB;IAChB,YAAY,OAA8B;;QACxC,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;YAC3B,GAAG,OAAO;YACV,cAAc,EAAE,uBAAU;YAC1B,WAAW,EAAE,MAAA,OAAO,CAAC,WAAW,mCAAI,GAAG;YACvC,WAAW,EAAE,MAAA,OAAO,CAAC,WAAW,mCAAI,CAAC;YACrC,aAAa,EAAE,MAAA,OAAO,CAAC,aAAa,mCAAI,CAAC;YACzC,aAAa,EAAE,MAAA,OAAO,CAAC,aAAa,mCAAI,CAAC;YACzC,kBAAkB,EAAE,MAAA,OAAO,CAAC,kBAAkB,mCAAI,CAAC;YACnD,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;YACvD,MAAM,IAAI,iCAAyB,CACjC,yEAAyE,CAC1E,CAAC;SACH;QAED,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,eAAM,CAAC,gBAAgB,CAAC,CAAC;QAC7C,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAAC;QACpC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,mBAAmB,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;QACtC,IAAI,CAAC,kBAAkB,CAAC,GAAG,IAAA,mBAAW,EAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,kBAAkB,CAAC,GAAG,IAAI,+BAAiB,EAAE,CAAC;QACnD,IAAI,CAAC,kBAAkB,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,+BAAqB,EAAE,CAAC;QAC7C,IAAI,CAAC,oBAAoB,CAAC,GAAG,KAAK,CAAC;QAEnC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE;YACpB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE,IAAI,mDAA0B,CAAC,IAAI,CAAC,CAAC,CAAC;YACxF,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,2DAA2D;IAC3D,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;IAC7C,CAAC;IAED,8DAA8D;IAC9D,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3B,CAAC;IAED,6GAA6G;IAC7G,IAAI,oBAAoB;QACtB,OAAO,CACL,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAC1F,CAAC;IACJ,CAAC;IAED,sFAAsF;IACtF,IAAI,wBAAwB;QAC1B,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC;IACnC,CAAC;IAED,IAAI,sBAAsB;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxB,CAAC;IAED,IAAI,sBAAsB;QACxB,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;IACjC,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;IACnC,CAAC;IAED,IAAI,kBAAkB;QACpB,OAAO,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACK,qBAAqB;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACvD,CAAC;IAED;;;;OAIG;IACH,QAAQ,CAAC,QAA8B;QACrC,IAAI,CAAC,IAAI,CACP,cAAc,CAAC,4BAA4B,EAC3C,IAAI,uDAA8B,CAAC,IAAI,CAAC,CACzC,CAAC;QAEF,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,IAAI,CACP,cAAc,CAAC,2BAA2B,EAC1C,IAAI,sDAA6B,CAAC,IAAI,EAAE,YAAY,CAAC,CACtD,CAAC;YACF,QAAQ,CAAC,IAAI,wBAAe,CAAC,IAAI,CAAC,CAAC,CAAC;YACpC,OAAO;SACR;QAED,MAAM,eAAe,GAAoB,EAAE,QAAQ,EAAE,CAAC;QACtD,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAC3D,IAAI,kBAAkB,EAAE;YACtB,eAAe,CAAC,KAAK,GAAG,IAAA,mBAAU,EAAC,GAAG,EAAE;gBACtC,eAAe,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;gBACnC,eAAe,CAAC,KAAK,GAAG,SAAS,CAAC;gBAElC,IAAI,CAAC,IAAI,CACP,cAAc,CAAC,2BAA2B,EAC1C,IAAI,sDAA6B,CAAC,IAAI,EAAE,SAAS,CAAC,CACnD,CAAC;gBACF,eAAe,CAAC,QAAQ,CACtB,IAAI,8BAAqB,CACvB,IAAI,CAAC,YAAY;oBACf,CAAC,CAAC,IAAI,CAAC,qBAAqB,EAAE;oBAC9B,CAAC,CAAC,gEAAgE,EACpE,IAAI,CAAC,OAAO,CACb,CACF,CAAC;YACJ,CAAC,EAAE,kBAAkB,CAAC,CAAC;SACxB;QAED,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACvC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,UAAsB;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;QAC/B,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,KAAK,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;QAEjE,IAAI,CAAC,WAAW,EAAE;YAChB,UAAU,CAAC,aAAa,EAAE,CAAC;YAC3B,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;SACxC;QAED,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,IAAI,iDAAwB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;QAEhG,IAAI,WAAW,EAAE;YACf,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC;YACjF,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;SAC7C;QAED,OAAO,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,SAAoB;QACxB,IAAI,IAAI,CAAC,YAAY,IAAI,SAAS,EAAE;YAClC,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;YACpC,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpD,+DAA+D;YAC/D,kDAAkD;YAClD,IAAI,UAAU,IAAI,IAAI,EAAE;gBACtB,kBAAkB;gBAClB,MAAM,IAAI,yBAAiB,CAAC,yDAAyD,CAAC,CAAC;aACxF;iBAAM;gBACL,+CAA+C;gBAC/C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;aAClD;SACF;aAAM;YACL,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SACxB;QAED,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,mDAA0B,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IACtF,CAAC;IAKD,KAAK,CAAC,QAAwC,EAAE,GAAoB;QAClE,IAAI,OAAO,GAAG,QAAwB,CAAC;QACvC,MAAM,QAAQ,GAAG,CAAC,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,QAAQ,CAAmB,CAAC;QACrD,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;YACjC,OAAO,GAAG,EAAE,CAAC;SACd;QAED,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;QACnD,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,OAAO,QAAQ,EAAE,CAAC;SACnB;QAED,+CAA+C;QAC/C,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAExC,uBAAuB;QACvB,OAAO,IAAI,CAAC,aAAa,EAAE;YACzB,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC;YAC/C,IAAI,eAAe,EAAE;gBACnB,IAAI,eAAe,CAAC,KAAK,EAAE;oBACzB,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;iBACrC;gBACD,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;oBAChC,+DAA+D;oBAC/D,eAAe,CAAC,QAAQ,CAAC,IAAI,yBAAiB,CAAC,wBAAwB,CAAC,CAAC,CAAC;iBAC3E;aACF;SACF;QAED,gCAAgC;QAChC,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACjD,IAAI,gBAAgB,EAAE;YACpB,YAAY,CAAC,gBAAgB,CAAC,CAAC;SAChC;QAED,6BAA6B;QAC7B,IAAI,OAAO,IAAI,CAAC,kBAAkB,CAAC,CAAC,MAAM,KAAK,UAAU,EAAE;YACzD,IAAI,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SAC5C;QAED,sCAAsC;QACtC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAA,iBAAS,EACP,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,EAC5B,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE;YACX,IAAI,CAAC,IAAI,CACP,cAAc,CAAC,iBAAiB,EAChC,IAAI,8CAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CACpD,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC5B,CAAC,EACD,GAAG,CAAC,EAAE;YACJ,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,sBAAsB,EAAE,IAAI,kDAAyB,CAAC,IAAI,CAAC,CAAC,CAAC;YACtF,QAAQ,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC,CACF,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,cAAc,CACZ,IAA4B,EAC5B,EAA0B,EAC1B,QAA+B;QAE/B,IAAI,IAAI,EAAE;YACR,wEAAwE;YACxE,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;gBACpC,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;oBAClC,IAAI,KAAK,EAAE;wBACT,QAAQ,CAAC,KAAK,CAAC,CAAC;qBACjB;yBAAM;wBACL,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;qBAC7B;iBACF;YACH,CAAC,CAAC,CAAC;YAEH,OAAO;SACR;QAED,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YAC1B,2EAA2E;YAC3E,EAAE,CAAC,GAAiB,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;gBAC5C,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;oBAClC,IAAI,KAAK,EAAE;wBACT,QAAQ,CAAC,KAAK,CAAC,CAAC;qBACjB;yBAAM;wBACL,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;qBAC7B;iBACF;gBAED,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBACpB;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;;AAlYH,wCAmYC;AAlWC;;;GAGG;AACa,sCAAuB,GAAG,mCAAuB,CAAC;AAClE;;;GAGG;AACa,qCAAsB,GAAG,kCAAsB,CAAC;AAChE;;;GAGG;AACa,sCAAuB,GAAG,mCAAuB,CAAC;AAClE;;;GAGG;AACa,iCAAkB,GAAG,8BAAkB,CAAC;AACxD;;;GAGG;AACa,+BAAgB,GAAG,4BAAgB,CAAC;AACpD;;;GAGG;AACa,gCAAiB,GAAG,6BAAiB,CAAC;AACtD;;;GAGG;AACa,2CAA4B,GAAG,wCAA4B,CAAC;AAC5E;;;GAGG;AACa,0CAA2B,GAAG,uCAA2B,CAAC;AAC1E;;;GAGG;AACa,qCAAsB,GAAG,kCAAsB,CAAC;AAChE;;;GAGG;AACa,oCAAqB,GAAG,iCAAqB,CAAC;AAmThE,SAAS,iBAAiB,CAAC,IAAoB;IAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;IAC7C,IAAI,IAAI,CAAC,MAAM,IAAI,WAAW,KAAK,CAAC,EAAE;QACpC,OAAO;KACR;IAED,IACE,IAAI,CAAC,oBAAoB,GAAG,WAAW;QACvC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EACxD;QACA,gEAAgE;QAChE,yEAAyE;QACzE,uCAAuC;QACvC,gBAAgB,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE;YACzC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjB,IAAI,CAAC,GAAG,IAAI,UAAU,EAAE;gBACtB,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;aAC1C;YACD,IAAI,CAAC,iBAAiB,CAAC,GAAG,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;KACJ;SAAM;QACL,IAAI,CAAC,iBAAiB,CAAC,GAAG,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;KAC1E;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAoB,EAAE,UAAsB;IACrE,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;IACvC,IAAI,IAAI,CAAC,YAAY,IAAI,SAAS,EAAE;QAClC,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpD,OAAO,UAAU,CAAC,UAAU,KAAK,UAAU,CAAC;KAC7C;IAED,OAAO,UAAU,CAAC,UAAU,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAoB,EAAE,UAAsB;IACpE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AAC5F,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAoB,EAAE,QAA8B;IAC5E,MAAM,cAAc,GAAsB;QACxC,GAAG,IAAI,CAAC,OAAO;QACf,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK;QACzC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC;QAC7B,iBAAiB,EAAE,IAAI,CAAC,kBAAkB,CAAC;KAC5C,CAAC;IAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;IACjB,4EAA4E;IAC5E,IAAI,CAAC,IAAI,CACP,cAAc,CAAC,kBAAkB,EACjC,IAAI,+CAAsB,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,CAC5D,CAAC;IAEF,IAAA,iBAAO,EAAC,cAAc,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE;QAC1C,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE;YACtB,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,yCAAyC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACrF,QAAQ,CAAC,GAAG,CAAC,CAAC;YACd,OAAO;SACR;QAED,4EAA4E;QAC5E,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjB,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACpC,OAAO;SACR;QAED,qDAAqD;QACrD,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,sBAAU,EAAE,uBAAU,CAAC,qBAAqB,CAAC,EAAE;YACrE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAM,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;SACvD;QAED,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,UAAU,CAAC,EAAE,CAAC,uBAAU,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;YAChF,UAAU,CAAC,EAAE,CAAC,uBAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;YAEpF,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;YACvC,IAAI,SAAS,EAAE;gBACb,IAAI,UAAU,CAAC;gBACf,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;gBACpC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;oBACnD,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC;iBACpC;qBAAM;oBACL,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;oBACpC,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC;iBAC3B;aACF;SACF;QAED,UAAU,CAAC,aAAa,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,IAAI,6CAAoB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;QAEvF,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAChC,OAAO;IACT,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAoB,EAAE,UAAsB,EAAE,MAAc;IACrF,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,IAAI,8CAAqB,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IAEjG,yBAAyB;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAoB;IAC5C,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,oBAAoB,CAAC,EAAE;QAC7C,OAAO;KACR;IAED,IAAI,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC;IAClC,OAAO,IAAI,CAAC,aAAa,EAAE;QACzB,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAC;QACrD,IAAI,CAAC,eAAe,EAAE;YACpB,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC;YACzB,SAAS;SACV;QAED,IAAI,eAAe,CAAC,UAAU,CAAC,EAAE;YAC/B,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC;YACzB,SAAS;SACV;QAED,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;YAClC,MAAM;SACP;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC;QAC9C,IAAI,CAAC,UAAU,EAAE;YACf,MAAM;SACP;QAED,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YAC7C,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CACP,cAAc,CAAC,sBAAsB,EACrC,IAAI,kDAAyB,CAAC,IAAI,EAAE,UAAU,CAAC,CAChD,CAAC;YACF,IAAI,eAAe,CAAC,KAAK,EAAE;gBACzB,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;aACrC;YAED,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC;YACzB,eAAe,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;SACjD;aAAM;YACL,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;YACxE,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;SAC7C;KACF;IAED,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;IACpD,OACE,IAAI,CAAC,aAAa,GAAG,CAAC;QACtB,IAAI,CAAC,sBAAsB,GAAG,aAAa;QAC3C,CAAC,WAAW,KAAK,CAAC,IAAI,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC,EAC9D;QACA,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC;QACjD,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,UAAU,CAAC,EAAE;YACnD,SAAS;SACV;QACD,gBAAgB,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE;YACzC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjB,IAAI,eAAe,CAAC,UAAU,CAAC,EAAE;gBAC/B,IAAI,CAAC,GAAG,IAAI,UAAU,EAAE;oBACtB,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBACrC;aACF;iBAAM;gBACL,IAAI,GAAG,EAAE;oBACP,IAAI,CAAC,IAAI,CACP,cAAc,CAAC,2BAA2B,EAC1C,IAAI,sDAA6B,CAAC,IAAI,EAAE,GAAG,CAAC,CAC7C,CAAC;iBACH;qBAAM,IAAI,UAAU,EAAE;oBACrB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;oBACpB,IAAI,CAAC,IAAI,CACP,cAAc,CAAC,sBAAsB,EACrC,IAAI,kDAAyB,CAAC,IAAI,EAAE,UAAU,CAAC,CAChD,CAAC;iBACH;gBAED,IAAI,eAAe,CAAC,KAAK,EAAE;oBACzB,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;iBACrC;gBACD,eAAe,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;aAC3C;YACD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;KACJ;IACD,IAAI,CAAC,oBAAoB,CAAC,GAAG,KAAK,CAAC;AACrC,CAAC"} \ No newline at end of file +{"version":3,"file":"connection_pool.js","sourceRoot":"","sources":["../../src/cmap/connection_pool.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cmap/connection_pool_events.js b/food-ordering-app/server/node_modules/mongodb/lib/cmap/connection_pool_events.js index 86aeaef8a..5902177e5 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/cmap/connection_pool_events.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/cmap/connection_pool_events.js @@ -1,6 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.ConnectionPoolClearedEvent = exports.ConnectionCheckedInEvent = exports.ConnectionCheckedOutEvent = exports.ConnectionCheckOutFailedEvent = exports.ConnectionCheckOutStartedEvent = exports.ConnectionClosedEvent = exports.ConnectionReadyEvent = exports.ConnectionCreatedEvent = exports.ConnectionPoolClosedEvent = exports.ConnectionPoolCreatedEvent = exports.ConnectionPoolMonitoringEvent = void 0; +exports.ConnectionPoolClearedEvent = exports.ConnectionCheckedInEvent = exports.ConnectionCheckedOutEvent = exports.ConnectionCheckOutFailedEvent = exports.ConnectionCheckOutStartedEvent = exports.ConnectionClosedEvent = exports.ConnectionReadyEvent = exports.ConnectionCreatedEvent = exports.ConnectionPoolClosedEvent = exports.ConnectionPoolReadyEvent = exports.ConnectionPoolCreatedEvent = exports.ConnectionPoolMonitoringEvent = void 0; /** * The base export class for all monitoring events published from the connection pool * @public @@ -23,10 +23,28 @@ class ConnectionPoolCreatedEvent extends ConnectionPoolMonitoringEvent { /** @internal */ constructor(pool) { super(pool); - this.options = pool.options; + if (pool.options.credentials != null) { + // Intentionally remove credentials: NODE-5460 + this.options = { ...pool.options, credentials: {} }; + } + else { + this.options = pool.options; + } } } exports.ConnectionPoolCreatedEvent = ConnectionPoolCreatedEvent; +/** + * An event published when a connection pool is ready + * @public + * @category Event + */ +class ConnectionPoolReadyEvent extends ConnectionPoolMonitoringEvent { + /** @internal */ + constructor(pool) { + super(pool); + } +} +exports.ConnectionPoolReadyEvent = ConnectionPoolReadyEvent; /** * An event published when a connection pool is closed * @public @@ -138,9 +156,10 @@ exports.ConnectionCheckedInEvent = ConnectionCheckedInEvent; */ class ConnectionPoolClearedEvent extends ConnectionPoolMonitoringEvent { /** @internal */ - constructor(pool, serviceId) { + constructor(pool, options = {}) { super(pool); - this.serviceId = serviceId; + this.serviceId = options.serviceId; + this.interruptInUseConnections = options.interruptInUseConnections; } } exports.ConnectionPoolClearedEvent = ConnectionPoolClearedEvent; diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cmap/connection_pool_events.js.map b/food-ordering-app/server/node_modules/mongodb/lib/cmap/connection_pool_events.js.map index 47ecacd5a..3ed776107 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/cmap/connection_pool_events.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/cmap/connection_pool_events.js.map @@ -1 +1 @@ -{"version":3,"file":"connection_pool_events.js","sourceRoot":"","sources":["../../src/cmap/connection_pool_events.ts"],"names":[],"mappings":";;;AAKA;;;;GAIG;AACH,MAAa,6BAA6B;IAMxC,gBAAgB;IAChB,YAAY,IAAoB;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC9B,CAAC;CACF;AAXD,sEAWC;AAED;;;;GAIG;AACH,MAAa,0BAA2B,SAAQ,6BAA6B;IAI3E,gBAAgB;IAChB,YAAY,IAAoB;QAC9B,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC9B,CAAC;CACF;AATD,gEASC;AAED;;;;GAIG;AACH,MAAa,yBAA0B,SAAQ,6BAA6B;IAC1E,gBAAgB;IAChB,YAAY,IAAoB;QAC9B,KAAK,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;CACF;AALD,8DAKC;AAED;;;;GAIG;AACH,MAAa,sBAAuB,SAAQ,6BAA6B;IAIvE,gBAAgB;IAChB,YAAY,IAAoB,EAAE,UAAwC;QACxE,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,EAAE,CAAC;IACpC,CAAC;CACF;AATD,wDASC;AAED;;;;GAIG;AACH,MAAa,oBAAqB,SAAQ,6BAA6B;IAIrE,gBAAgB;IAChB,YAAY,IAAoB,EAAE,UAAsB;QACtD,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,EAAE,CAAC;IACpC,CAAC;CACF;AATD,oDASC;AAED;;;;GAIG;AACH,MAAa,qBAAsB,SAAQ,6BAA6B;IAOtE,gBAAgB;IAChB,YAAY,IAAoB,EAAE,UAAsB,EAAE,MAAc;QACtE,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,EAAE,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,SAAS,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;IACxC,CAAC;CACF;AAdD,sDAcC;AAED;;;;GAIG;AACH,MAAa,8BAA+B,SAAQ,6BAA6B;IAC/E,gBAAgB;IAChB,YAAY,IAAoB;QAC9B,KAAK,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;CACF;AALD,wEAKC;AAED;;;;GAIG;AACH,MAAa,6BAA8B,SAAQ,6BAA6B;IAI9E,gBAAgB;IAChB,YAAY,IAAoB,EAAE,MAAyB;QACzD,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AATD,sEASC;AAED;;;;GAIG;AACH,MAAa,yBAA0B,SAAQ,6BAA6B;IAI1E,gBAAgB;IAChB,YAAY,IAAoB,EAAE,UAAsB;QACtD,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,EAAE,CAAC;IACpC,CAAC;CACF;AATD,8DASC;AAED;;;;GAIG;AACH,MAAa,wBAAyB,SAAQ,6BAA6B;IAIzE,gBAAgB;IAChB,YAAY,IAAoB,EAAE,UAAsB;QACtD,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,EAAE,CAAC;IACpC,CAAC;CACF;AATD,4DASC;AAED;;;;GAIG;AACH,MAAa,0BAA2B,SAAQ,6BAA6B;IAI3E,gBAAgB;IAChB,YAAY,IAAoB,EAAE,SAAoB;QACpD,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AATD,gEASC"} \ No newline at end of file +{"version":3,"file":"connection_pool_events.js","sourceRoot":"","sources":["../../src/cmap/connection_pool_events.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cmap/errors.js b/food-ordering-app/server/node_modules/mongodb/lib/cmap/errors.js index 63112628a..99f71adf9 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/cmap/errors.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/cmap/errors.js @@ -1,6 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.WaitQueueTimeoutError = exports.PoolClosedError = void 0; +exports.WaitQueueTimeoutError = exports.PoolClearedOnNetworkError = exports.PoolClearedError = exports.PoolClosedError = void 0; const error_1 = require("../error"); /** * An error indicating a connection pool is closed @@ -16,6 +16,38 @@ class PoolClosedError extends error_1.MongoDriverError { } } exports.PoolClosedError = PoolClosedError; +/** + * An error indicating a connection pool is currently paused + * @category Error + */ +class PoolClearedError extends error_1.MongoNetworkError { + constructor(pool, message) { + var _a; + const errorMessage = message + ? message + : `Connection pool for ${pool.address} was cleared because another operation failed with: "${(_a = pool.serverError) === null || _a === void 0 ? void 0 : _a.message}"`; + super(errorMessage); + this.address = pool.address; + this.addErrorLabel(error_1.MongoErrorLabel.RetryableWriteError); + } + get name() { + return 'MongoPoolClearedError'; + } +} +exports.PoolClearedError = PoolClearedError; +/** + * An error indicating that a connection pool has been cleared after the monitor for that server timed out. + * @category Error + */ +class PoolClearedOnNetworkError extends PoolClearedError { + constructor(pool) { + super(pool, `Connection to ${pool.address} interrupted due to server monitor timeout`); + } + get name() { + return 'PoolClearedOnNetworkError'; + } +} +exports.PoolClearedOnNetworkError = PoolClearedOnNetworkError; /** * An error thrown when a request to check out a connection times out * @category Error diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cmap/errors.js.map b/food-ordering-app/server/node_modules/mongodb/lib/cmap/errors.js.map index ae7e49659..6009e9506 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/cmap/errors.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/cmap/errors.js.map @@ -1 +1 @@ -{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/cmap/errors.ts"],"names":[],"mappings":";;;AAAA,oCAA4C;AAG5C;;;GAGG;AACH,MAAa,eAAgB,SAAQ,wBAAgB;IAInD,YAAY,IAAoB;QAC9B,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACzE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC9B,CAAC;IAED,IAAa,IAAI;QACf,OAAO,sBAAsB,CAAC;IAChC,CAAC;CACF;AAZD,0CAYC;AAED;;;GAGG;AACH,MAAa,qBAAsB,SAAQ,wBAAgB;IAIzD,YAAY,OAAe,EAAE,OAAe;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,IAAa,IAAI;QACf,OAAO,4BAA4B,CAAC;IACtC,CAAC;CACF;AAZD,sDAYC"} \ No newline at end of file +{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/cmap/errors.ts"],"names":[],"mappings":";;;AAAA,oCAAgF;AAGhF;;;GAGG;AACH,MAAa,eAAgB,SAAQ,wBAAgB;IAInD,YAAY,IAAoB;QAC9B,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACzE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC9B,CAAC;IAED,IAAa,IAAI;QACf,OAAO,sBAAsB,CAAC;IAChC,CAAC;CACF;AAZD,0CAYC;AAED;;;GAGG;AACH,MAAa,gBAAiB,SAAQ,yBAAiB;IAIrD,YAAY,IAAoB,EAAE,OAAgB;;QAChD,MAAM,YAAY,GAAG,OAAO;YAC1B,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,uBAAuB,IAAI,CAAC,OAAO,wDAAwD,MAAA,IAAI,CAAC,WAAW,0CAAE,OAAO,GAAG,CAAC;QAC5H,KAAK,CAAC,YAAY,CAAC,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAE5B,IAAI,CAAC,aAAa,CAAC,uBAAe,CAAC,mBAAmB,CAAC,CAAC;IAC1D,CAAC;IAED,IAAa,IAAI;QACf,OAAO,uBAAuB,CAAC;IACjC,CAAC;CACF;AAjBD,4CAiBC;AAED;;;GAGG;AACH,MAAa,yBAA0B,SAAQ,gBAAgB;IAC7D,YAAY,IAAoB;QAC9B,KAAK,CAAC,IAAI,EAAE,iBAAiB,IAAI,CAAC,OAAO,4CAA4C,CAAC,CAAC;IACzF,CAAC;IAED,IAAa,IAAI;QACf,OAAO,2BAA2B,CAAC;IACrC,CAAC;CACF;AARD,8DAQC;AAED;;;GAGG;AACH,MAAa,qBAAsB,SAAQ,wBAAgB;IAIzD,YAAY,OAAe,EAAE,OAAe;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,IAAa,IAAI;QACf,OAAO,4BAA4B,CAAC;IACtC,CAAC;CACF;AAZD,sDAYC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cmap/handshake/client_metadata.js b/food-ordering-app/server/node_modules/mongodb/lib/cmap/handshake/client_metadata.js new file mode 100644 index 000000000..6c7f5e103 --- /dev/null +++ b/food-ordering-app/server/node_modules/mongodb/lib/cmap/handshake/client_metadata.js @@ -0,0 +1,174 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getFAASEnv = exports.makeClientMetadata = exports.LimitedSizeDocument = void 0; +const os = require("os"); +const process = require("process"); +const bson_1 = require("../../bson"); +const error_1 = require("../../error"); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const NODE_DRIVER_VERSION = require('../../../package.json').version; +/** @internal */ +class LimitedSizeDocument { + constructor(maxSize) { + this.maxSize = maxSize; + this.document = new Map(); + /** BSON overhead: Int32 + Null byte */ + this.documentSize = 5; + } + /** Only adds key/value if the bsonByteLength is less than MAX_SIZE */ + ifItFitsItSits(key, value) { + // The BSON byteLength of the new element is the same as serializing it to its own document + // subtracting the document size int32 and the null terminator. + const newElementSize = bson_1.BSON.serialize(new Map().set(key, value)).byteLength - 5; + if (newElementSize + this.documentSize > this.maxSize) { + return false; + } + this.documentSize += newElementSize; + this.document.set(key, value); + return true; + } + toObject() { + return bson_1.BSON.deserialize(bson_1.BSON.serialize(this.document), { + promoteLongs: false, + promoteBuffers: false, + promoteValues: false, + useBigInt64: false + }); + } +} +exports.LimitedSizeDocument = LimitedSizeDocument; +/** + * From the specs: + * Implementors SHOULD cumulatively update fields in the following order until the document is under the size limit: + * 1. Omit fields from `env` except `env.name`. + * 2. Omit fields from `os` except `os.type`. + * 3. Omit the `env` document entirely. + * 4. Truncate `platform`. -- special we do not truncate this field + */ +function makeClientMetadata(options) { + const metadataDocument = new LimitedSizeDocument(512); + const { appName = '' } = options; + // Add app name first, it must be sent + if (appName.length > 0) { + const name = Buffer.byteLength(appName, 'utf8') <= 128 + ? options.appName + : Buffer.from(appName, 'utf8').subarray(0, 128).toString('utf8'); + metadataDocument.ifItFitsItSits('application', { name }); + } + const { name = '', version = '', platform = '' } = options.driverInfo; + const driverInfo = { + name: name.length > 0 ? `nodejs|${name}` : 'nodejs', + version: version.length > 0 ? `${NODE_DRIVER_VERSION}|${version}` : NODE_DRIVER_VERSION + }; + if (!metadataDocument.ifItFitsItSits('driver', driverInfo)) { + throw new error_1.MongoInvalidArgumentError('Unable to include driverInfo name and version, metadata cannot exceed 512 bytes'); + } + let runtimeInfo = getRuntimeInfo(); + if (platform.length > 0) { + runtimeInfo = `${runtimeInfo}|${platform}`; + } + if (!metadataDocument.ifItFitsItSits('platform', runtimeInfo)) { + throw new error_1.MongoInvalidArgumentError('Unable to include driverInfo platform, metadata cannot exceed 512 bytes'); + } + // Note: order matters, os.type is last so it will be removed last if we're at maxSize + const osInfo = new Map() + .set('name', process.platform) + .set('architecture', process.arch) + .set('version', os.release()) + .set('type', os.type()); + if (!metadataDocument.ifItFitsItSits('os', osInfo)) { + for (const key of osInfo.keys()) { + osInfo.delete(key); + if (osInfo.size === 0) + break; + if (metadataDocument.ifItFitsItSits('os', osInfo)) + break; + } + } + const faasEnv = getFAASEnv(); + if (faasEnv != null) { + if (!metadataDocument.ifItFitsItSits('env', faasEnv)) { + for (const key of faasEnv.keys()) { + faasEnv.delete(key); + if (faasEnv.size === 0) + break; + if (metadataDocument.ifItFitsItSits('env', faasEnv)) + break; + } + } + } + return metadataDocument.toObject(); +} +exports.makeClientMetadata = makeClientMetadata; +/** + * Collects FaaS metadata. + * - `name` MUST be the last key in the Map returned. + */ +function getFAASEnv() { + const { AWS_EXECUTION_ENV = '', AWS_LAMBDA_RUNTIME_API = '', FUNCTIONS_WORKER_RUNTIME = '', K_SERVICE = '', FUNCTION_NAME = '', VERCEL = '', AWS_LAMBDA_FUNCTION_MEMORY_SIZE = '', AWS_REGION = '', FUNCTION_MEMORY_MB = '', FUNCTION_REGION = '', FUNCTION_TIMEOUT_SEC = '', VERCEL_REGION = '' } = process.env; + const isAWSFaaS = AWS_EXECUTION_ENV.startsWith('AWS_Lambda_') || AWS_LAMBDA_RUNTIME_API.length > 0; + const isAzureFaaS = FUNCTIONS_WORKER_RUNTIME.length > 0; + const isGCPFaaS = K_SERVICE.length > 0 || FUNCTION_NAME.length > 0; + const isVercelFaaS = VERCEL.length > 0; + // Note: order matters, name must always be the last key + const faasEnv = new Map(); + // When isVercelFaaS is true so is isAWSFaaS; Vercel inherits the AWS env + if (isVercelFaaS && !(isAzureFaaS || isGCPFaaS)) { + if (VERCEL_REGION.length > 0) { + faasEnv.set('region', VERCEL_REGION); + } + faasEnv.set('name', 'vercel'); + return faasEnv; + } + if (isAWSFaaS && !(isAzureFaaS || isGCPFaaS || isVercelFaaS)) { + if (AWS_REGION.length > 0) { + faasEnv.set('region', AWS_REGION); + } + if (AWS_LAMBDA_FUNCTION_MEMORY_SIZE.length > 0 && + Number.isInteger(+AWS_LAMBDA_FUNCTION_MEMORY_SIZE)) { + faasEnv.set('memory_mb', new bson_1.Int32(AWS_LAMBDA_FUNCTION_MEMORY_SIZE)); + } + faasEnv.set('name', 'aws.lambda'); + return faasEnv; + } + if (isAzureFaaS && !(isGCPFaaS || isAWSFaaS || isVercelFaaS)) { + faasEnv.set('name', 'azure.func'); + return faasEnv; + } + if (isGCPFaaS && !(isAzureFaaS || isAWSFaaS || isVercelFaaS)) { + if (FUNCTION_REGION.length > 0) { + faasEnv.set('region', FUNCTION_REGION); + } + if (FUNCTION_MEMORY_MB.length > 0 && Number.isInteger(+FUNCTION_MEMORY_MB)) { + faasEnv.set('memory_mb', new bson_1.Int32(FUNCTION_MEMORY_MB)); + } + if (FUNCTION_TIMEOUT_SEC.length > 0 && Number.isInteger(+FUNCTION_TIMEOUT_SEC)) { + faasEnv.set('timeout_sec', new bson_1.Int32(FUNCTION_TIMEOUT_SEC)); + } + faasEnv.set('name', 'gcp.func'); + return faasEnv; + } + return null; +} +exports.getFAASEnv = getFAASEnv; +/** + * @internal + * Get current JavaScript runtime platform + * + * NOTE: The version information fetching is intentionally written defensively + * to avoid having a released driver version that becomes incompatible + * with a future change to these global objects. + */ +function getRuntimeInfo() { + var _a, _b; + if ('Deno' in globalThis) { + const version = typeof ((_a = Deno === null || Deno === void 0 ? void 0 : Deno.version) === null || _a === void 0 ? void 0 : _a.deno) === 'string' ? (_b = Deno === null || Deno === void 0 ? void 0 : Deno.version) === null || _b === void 0 ? void 0 : _b.deno : '0.0.0-unknown'; + return `Deno v${version}, ${os.endianness()}`; + } + if ('Bun' in globalThis) { + const version = typeof (Bun === null || Bun === void 0 ? void 0 : Bun.version) === 'string' ? Bun === null || Bun === void 0 ? void 0 : Bun.version : '0.0.0-unknown'; + return `Bun v${version}, ${os.endianness()}`; + } + return `Node.js ${process.version}, ${os.endianness()}`; +} +//# sourceMappingURL=client_metadata.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cmap/handshake/client_metadata.js.map b/food-ordering-app/server/node_modules/mongodb/lib/cmap/handshake/client_metadata.js.map new file mode 100644 index 000000000..ec254cfb3 --- /dev/null +++ b/food-ordering-app/server/node_modules/mongodb/lib/cmap/handshake/client_metadata.js.map @@ -0,0 +1 @@ +{"version":3,"file":"client_metadata.js","sourceRoot":"","sources":["../../../src/cmap/handshake/client_metadata.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cmap/message_stream.js b/food-ordering-app/server/node_modules/mongodb/lib/cmap/message_stream.js index de7e7d7a5..3029a2cc9 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/cmap/message_stream.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/cmap/message_stream.js @@ -83,22 +83,18 @@ function canCompress(command) { } function processIncomingData(stream, callback) { const buffer = stream[kBuffer]; - if (buffer.length < 4) { - callback(); - return; + const sizeOfMessage = buffer.getInt32(); + if (sizeOfMessage == null) { + return callback(); } - const sizeOfMessage = buffer.peek(4).readInt32LE(); if (sizeOfMessage < 0) { - callback(new error_1.MongoParseError(`Invalid message size: ${sizeOfMessage}`)); - return; + return callback(new error_1.MongoParseError(`Invalid message size: ${sizeOfMessage}`)); } if (sizeOfMessage > stream.maxBsonMessageSize) { - callback(new error_1.MongoParseError(`Invalid message size: ${sizeOfMessage}, max allowed: ${stream.maxBsonMessageSize}`)); - return; + return callback(new error_1.MongoParseError(`Invalid message size: ${sizeOfMessage}, max allowed: ${stream.maxBsonMessageSize}`)); } if (sizeOfMessage > buffer.length) { - callback(); - return; + return callback(); } const message = buffer.read(sizeOfMessage); const messageHeader = { @@ -110,34 +106,27 @@ function processIncomingData(stream, callback) { const monitorHasAnotherHello = () => { if (stream.isMonitoringConnection) { // Can we read the next message size? - if (buffer.length >= 4) { - const sizeOfMessage = buffer.peek(4).readInt32LE(); - if (sizeOfMessage <= buffer.length) { - return true; - } + const sizeOfMessage = buffer.getInt32(); + if (sizeOfMessage != null && sizeOfMessage <= buffer.length) { + return true; } } return false; }; let ResponseType = messageHeader.opCode === constants_1.OP_MSG ? commands_1.BinMsg : commands_1.Response; if (messageHeader.opCode !== constants_1.OP_COMPRESSED) { - const messageBody = message.slice(MESSAGE_HEADER_SIZE); + const messageBody = message.subarray(MESSAGE_HEADER_SIZE); // If we are a monitoring connection message stream and // there is more in the buffer that can be read, skip processing since we // want the last hello command response that is in the buffer. if (monitorHasAnotherHello()) { - processIncomingData(stream, callback); + return processIncomingData(stream, callback); } - else { - stream.emit('message', new ResponseType(message, messageHeader, messageBody)); - if (buffer.length >= 4) { - processIncomingData(stream, callback); - } - else { - callback(); - } + stream.emit('message', new ResponseType(message, messageHeader, messageBody)); + if (buffer.length >= 4) { + return processIncomingData(stream, callback); } - return; + return callback(); } messageHeader.fromCompressed = true; messageHeader.opCode = message.readInt32LE(MESSAGE_HEADER_SIZE); @@ -146,30 +135,24 @@ function processIncomingData(stream, callback) { const compressedBuffer = message.slice(MESSAGE_HEADER_SIZE + 9); // recalculate based on wrapped opcode ResponseType = messageHeader.opCode === constants_1.OP_MSG ? commands_1.BinMsg : commands_1.Response; - (0, compression_1.decompress)(compressorID, compressedBuffer, (err, messageBody) => { + return (0, compression_1.decompress)(compressorID, compressedBuffer, (err, messageBody) => { if (err || !messageBody) { - callback(err); - return; + return callback(err); } if (messageBody.length !== messageHeader.length) { - callback(new error_1.MongoDecompressionError('Message body and message header must be the same length')); - return; + return callback(new error_1.MongoDecompressionError('Message body and message header must be the same length')); } // If we are a monitoring connection message stream and // there is more in the buffer that can be read, skip processing since we // want the last hello command response that is in the buffer. if (monitorHasAnotherHello()) { - processIncomingData(stream, callback); + return processIncomingData(stream, callback); } - else { - stream.emit('message', new ResponseType(message, messageHeader, messageBody)); - if (buffer.length >= 4) { - processIncomingData(stream, callback); - } - else { - callback(); - } + stream.emit('message', new ResponseType(message, messageHeader, messageBody)); + if (buffer.length >= 4) { + return processIncomingData(stream, callback); } + return callback(); }); } //# sourceMappingURL=message_stream.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cmap/message_stream.js.map b/food-ordering-app/server/node_modules/mongodb/lib/cmap/message_stream.js.map index e2aa88dc6..6f7c51822 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/cmap/message_stream.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/cmap/message_stream.js.map @@ -1 +1 @@ -{"version":3,"file":"message_stream.js","sourceRoot":"","sources":["../../src/cmap/message_stream.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"message_stream.js","sourceRoot":"","sources":["../../src/cmap/message_stream.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cmap/wire_protocol/compression.js b/food-ordering-app/server/node_modules/mongodb/lib/cmap/wire_protocol/compression.js index 1bd17a369..e198be865 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/cmap/wire_protocol/compression.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/cmap/wire_protocol/compression.js @@ -38,9 +38,7 @@ function compress(self, dataToBeCompressed, callback) { deps_1.Snappy.compress(dataToBeCompressed, callback); } else { - deps_1.Snappy.compress(dataToBeCompressed) - .then(buffer => callback(undefined, buffer)) - .catch(error => callback(error)); + deps_1.Snappy.compress(dataToBeCompressed).then(buffer => callback(undefined, buffer), error => callback(error)); } break; } @@ -76,9 +74,7 @@ function decompress(compressorID, compressedData, callback) { deps_1.Snappy.uncompress(compressedData, { asBuffer: true }, callback); } else { - deps_1.Snappy.uncompress(compressedData, { asBuffer: true }) - .then(buffer => callback(undefined, buffer)) - .catch(error => callback(error)); + deps_1.Snappy.uncompress(compressedData, { asBuffer: true }).then(buffer => callback(undefined, buffer), error => callback(error)); } break; } diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cmap/wire_protocol/compression.js.map b/food-ordering-app/server/node_modules/mongodb/lib/cmap/wire_protocol/compression.js.map index 113379734..e2ecbbd3e 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/cmap/wire_protocol/compression.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/cmap/wire_protocol/compression.js.map @@ -1 +1 @@ -{"version":3,"file":"compression.js","sourceRoot":"","sources":["../../../src/cmap/wire_protocol/compression.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"compression.js","sourceRoot":"","sources":["../../../src/cmap/wire_protocol/compression.ts"],"names":[],"mappings":";;;AAAA,6BAA6B;AAE7B,+CAAuD;AACvD,qCAA4D;AAC5D,uCAAiF;AAIjF,cAAc;AACD,QAAA,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;CACC,CAAC,CAAC;AAQC,QAAA,sBAAsB,GAAG,IAAI,GAAG,CAAC;IAC5C,gCAAoB;IACpB,WAAW;IACX,cAAc;IACd,UAAU;IACV,cAAc;IACd,YAAY;IACZ,YAAY;IACZ,iBAAiB;IACjB,gBAAgB;IAChB,QAAQ;CACT,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAEjC,8DAA8D;AAC9D,SAAgB,QAAQ,CACtB,IAA0D,EAC1D,kBAA0B,EAC1B,QAA0B;IAE1B,MAAM,WAAW,GAAG,EAAsB,CAAC;IAC3C,QAAQ,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;QACrC,KAAK,QAAQ,CAAC,CAAC;YACb,IAAI,cAAc,IAAI,aAAM,EAAE;gBAC5B,OAAO,QAAQ,CAAC,aAAM,CAAC,cAAc,CAAC,CAAC,CAAC;aACzC;YAED,IAAI,aAAM,CAAC,kBAAW,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE;gBAClC,aAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;aAC/C;iBAAM;gBACL,aAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,IAAI,CACtC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,EACrC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CACzB,CAAC;aACH;YACD,MAAM;SACP;QACD,KAAK,MAAM;YACT,iCAAiC;YACjC,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE;gBACrC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;aACvD;YACD,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,WAAW,EAAE,QAAiC,CAAC,CAAC;YACjF,MAAM;QACR,KAAK,MAAM;YACT,IAAI,cAAc,IAAI,gBAAS,EAAE;gBAC/B,OAAO,QAAQ,CAAC,gBAAS,CAAC,cAAc,CAAC,CAAC,CAAC;aAC5C;YACD,gBAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,sBAAsB,CAAC,CAAC,IAAI,CACjE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,EACrC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CACzB,CAAC;YACF,MAAM;QACR;YACE,MAAM,IAAI,iCAAyB,CACjC,sBAAsB,IAAI,CAAC,OAAO,CAAC,gBAAgB,qBAAqB,CACzE,CAAC;KACL;AACH,CAAC;AA3CD,4BA2CC;AAED,kDAAkD;AAClD,SAAgB,UAAU,CACxB,YAAwB,EACxB,cAAsB,EACtB,QAA0B;IAE1B,IAAI,YAAY,GAAG,CAAC,IAAI,YAAY,GAAG,iBAAiB,EAAE;QACxD,MAAM,IAAI,+BAAuB,CAC/B,2FAA2F,YAAY,GAAG,CAC3G,CAAC;KACH;IAED,QAAQ,YAAY,EAAE;QACpB,KAAK,kBAAU,CAAC,MAAM,CAAC,CAAC;YACtB,IAAI,cAAc,IAAI,aAAM,EAAE;gBAC5B,OAAO,QAAQ,CAAC,aAAM,CAAC,cAAc,CAAC,CAAC,CAAC;aACzC;YAED,IAAI,aAAM,CAAC,kBAAW,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE;gBAClC,aAAM,CAAC,UAAU,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;aACjE;iBAAM;gBACL,aAAM,CAAC,UAAU,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CACxD,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,EACrC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CACzB,CAAC;aACH;YACD,MAAM;SACP;QACD,KAAK,kBAAU,CAAC,IAAI,CAAC,CAAC;YACpB,IAAI,cAAc,IAAI,gBAAS,EAAE;gBAC/B,OAAO,QAAQ,CAAC,gBAAS,CAAC,cAAc,CAAC,CAAC,CAAC;aAC5C;YAED,gBAAS,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,IAAI,CACvC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,EACrC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CACzB,CAAC;YACF,MAAM;SACP;QACD,KAAK,kBAAU,CAAC,IAAI;YAClB,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,QAAiC,CAAC,CAAC;YAChE,MAAM;QACR;YACE,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;KACvC;AACH,CAAC;AA5CD,gCA4CC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cmap/wire_protocol/constants.js b/food-ordering-app/server/node_modules/mongodb/lib/cmap/wire_protocol/constants.js index ee5de73aa..edfc23722 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/cmap/wire_protocol/constants.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/cmap/wire_protocol/constants.js @@ -1,17 +1,17 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.OP_MSG = exports.OP_COMPRESSED = exports.OP_KILL_CURSORS = exports.OP_DELETE = exports.OP_GETMORE = exports.OP_QUERY = exports.OP_INSERT = exports.OP_UPDATE = exports.OP_REPLY = exports.MAX_SUPPORTED_WIRE_VERSION = exports.MIN_SUPPORTED_WIRE_VERSION = exports.MAX_SUPPORTED_SERVER_VERSION = exports.MIN_SUPPORTED_SERVER_VERSION = void 0; +exports.OP_MSG = exports.OP_COMPRESSED = exports.OP_DELETE = exports.OP_QUERY = exports.OP_INSERT = exports.OP_UPDATE = exports.OP_REPLY = exports.MIN_SUPPORTED_QE_SERVER_VERSION = exports.MIN_SUPPORTED_QE_WIRE_VERSION = exports.MAX_SUPPORTED_WIRE_VERSION = exports.MIN_SUPPORTED_WIRE_VERSION = exports.MAX_SUPPORTED_SERVER_VERSION = exports.MIN_SUPPORTED_SERVER_VERSION = void 0; exports.MIN_SUPPORTED_SERVER_VERSION = '3.6'; exports.MAX_SUPPORTED_SERVER_VERSION = '6.0'; exports.MIN_SUPPORTED_WIRE_VERSION = 6; exports.MAX_SUPPORTED_WIRE_VERSION = 17; +exports.MIN_SUPPORTED_QE_WIRE_VERSION = 21; +exports.MIN_SUPPORTED_QE_SERVER_VERSION = '7.0'; exports.OP_REPLY = 1; exports.OP_UPDATE = 2001; exports.OP_INSERT = 2002; exports.OP_QUERY = 2004; -exports.OP_GETMORE = 2005; exports.OP_DELETE = 2006; -exports.OP_KILL_CURSORS = 2007; exports.OP_COMPRESSED = 2012; exports.OP_MSG = 2013; //# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cmap/wire_protocol/constants.js.map b/food-ordering-app/server/node_modules/mongodb/lib/cmap/wire_protocol/constants.js.map index 9dc053b22..6aa9450b9 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/cmap/wire_protocol/constants.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/cmap/wire_protocol/constants.js.map @@ -1 +1 @@ -{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/cmap/wire_protocol/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,4BAA4B,GAAG,KAAK,CAAC;AACrC,QAAA,4BAA4B,GAAG,KAAK,CAAC;AACrC,QAAA,0BAA0B,GAAG,CAAC,CAAC;AAC/B,QAAA,0BAA0B,GAAG,EAAE,CAAC;AAChC,QAAA,QAAQ,GAAG,CAAC,CAAC;AACb,QAAA,SAAS,GAAG,IAAI,CAAC;AACjB,QAAA,SAAS,GAAG,IAAI,CAAC;AACjB,QAAA,QAAQ,GAAG,IAAI,CAAC;AAChB,QAAA,UAAU,GAAG,IAAI,CAAC;AAClB,QAAA,SAAS,GAAG,IAAI,CAAC;AACjB,QAAA,eAAe,GAAG,IAAI,CAAC;AACvB,QAAA,aAAa,GAAG,IAAI,CAAC;AACrB,QAAA,MAAM,GAAG,IAAI,CAAC"} \ No newline at end of file +{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/cmap/wire_protocol/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,4BAA4B,GAAG,KAAK,CAAC;AACrC,QAAA,4BAA4B,GAAG,KAAK,CAAC;AACrC,QAAA,0BAA0B,GAAG,CAAC,CAAC;AAC/B,QAAA,0BAA0B,GAAG,EAAE,CAAC;AAChC,QAAA,6BAA6B,GAAG,EAAE,CAAC;AACnC,QAAA,+BAA+B,GAAG,KAAK,CAAC;AACxC,QAAA,QAAQ,GAAG,CAAC,CAAC;AACb,QAAA,SAAS,GAAG,IAAI,CAAC;AACjB,QAAA,SAAS,GAAG,IAAI,CAAC;AACjB,QAAA,QAAQ,GAAG,IAAI,CAAC;AAChB,QAAA,SAAS,GAAG,IAAI,CAAC;AACjB,QAAA,aAAa,GAAG,IAAI,CAAC;AACrB,QAAA,MAAM,GAAG,IAAI,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/collection.js b/food-ordering-app/server/node_modules/mongodb/lib/collection.js index a47d1ce8f..7bece054d 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/collection.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/collection.js @@ -7,6 +7,7 @@ const unordered_1 = require("./bulk/unordered"); const change_stream_1 = require("./change_stream"); const aggregation_cursor_1 = require("./cursor/aggregation_cursor"); const find_cursor_1 = require("./cursor/find_cursor"); +const list_indexes_cursor_1 = require("./cursor/list_indexes_cursor"); const error_1 = require("./error"); const bulk_write_1 = require("./operations/bulk_write"); const count_1 = require("./operations/count"); @@ -31,30 +32,28 @@ const utils_1 = require("./utils"); const write_concern_1 = require("./write_concern"); /** * The **Collection** class is an internal class that embodies a MongoDB collection - * allowing for insert/update/remove/find and other command operation on that MongoDB collection. + * allowing for insert/find/update/delete and other command operation on that MongoDB collection. * * **COLLECTION Cannot directly be instantiated** * @public * * @example - * ```js - * const MongoClient = require('mongodb').MongoClient; - * const test = require('assert'); - * // Connection url - * const url = 'mongodb://localhost:27017'; - * // Database Name - * const dbName = 'test'; - * // Connect using MongoClient - * MongoClient.connect(url, function(err, client) { - * // Create a collection we want to drop later - * const col = client.db(dbName).collection('createIndexExample1'); - * // Show that duplicate records got dropped - * col.find({}).toArray(function(err, items) { - * expect(err).to.not.exist; - * test.equal(4, items.length); - * client.close(); - * }); - * }); + * ```ts + * import { MongoClient } from 'mongodb'; + * + * interface Pet { + * name: string; + * kind: 'dog' | 'cat' | 'fish'; + * } + * + * const client = new MongoClient('mongodb://localhost:27017'); + * const pets = client.db().collection('pets'); + * + * const petCursor = pets.find(); + * + * for await (const pet of petCursor) { + * console.log(`${pet.name} is a ${pet.kind}!`); + * } * ``` */ class Collection { @@ -141,8 +140,8 @@ class Collection { callback = options; options = {}; } - // CSFLE passes in { w: 'majority' } to ensure the lib works in both 3.x and 4.x - // we support that option style here only + // versions of mongodb-client-encryption before v1.2.6 pass in hardcoded { w: 'majority' } + // specifically to an insertOne call in createDataKey, so we want to support this only here if (options && Reflect.get(options, 'w')) { options.writeConcern = write_concern_1.WriteConcern.fromOptions(Reflect.get(options, 'w')); } @@ -283,7 +282,7 @@ class Collection { * @param options - Optional settings for the command */ listIndexes(options) { - return new indexes_1.ListIndexesCursor(this, (0, utils_1.resolveOptions)(this, options)); + return new list_indexes_cursor_1.ListIndexesCursor(this, (0, utils_1.resolveOptions)(this, options)); } indexExists(indexes, options, callback) { if (typeof options === 'function') @@ -377,7 +376,7 @@ class Collection { * Create a new Change Stream, watching for new changes (insertions, updates, replacements, deletions, and invalidations) in this collection. * * @remarks - * watch() accepts two generic arguments for distinct usecases: + * watch() accepts two generic arguments for distinct use cases: * - The first is to override the schema that may be defined for this specific collection * - The second is to override the shape of the change stream document entirely, if it is not provided the type will default to ChangeStreamDocument of the first argument * @example @@ -439,11 +438,25 @@ class Collection { } return (0, execute_operation_1.executeOperation)(this.s.db.s.client, new map_reduce_1.MapReduceOperation(this, map, reduce, (0, utils_1.resolveOptions)(this, options)), callback); } - /** Initiate an Out of order batch write operation. All operations will be buffered into insert/update/remove commands executed out of order. */ + /** + * Initiate an Out of order batch write operation. All operations will be buffered into insert/update/remove commands executed out of order. + * + * @throws MongoNotConnectedError + * @remarks + * **NOTE:** MongoClient must be connected prior to calling this method due to a known limitation in this legacy implementation. + * However, `collection.bulkWrite()` provides an equivalent API that does not require prior connecting. + */ initializeUnorderedBulkOp(options) { return new unordered_1.UnorderedBulkOperation(this, (0, utils_1.resolveOptions)(this, options)); } - /** Initiate an In order bulk write operation. Operations will be serially executed in the order they are added, creating a new operation for each switch in types. */ + /** + * Initiate an In order bulk write operation. Operations will be serially executed in the order they are added, creating a new operation for each switch in types. + * + * @throws MongoNotConnectedError + * @remarks + * **NOTE:** MongoClient must be connected prior to calling this method due to a known limitation in this legacy implementation. + * However, `collection.bulkWrite()` provides an equivalent API that does not require prior connecting. + */ initializeOrderedBulkOp(options) { return new ordered_1.OrderedBulkOperation(this, (0, utils_1.resolveOptions)(this, options)); } @@ -459,7 +472,7 @@ class Collection { * one will be added to each of the documents missing it by the driver, mutating the document. This behavior * can be overridden by setting the **forceServerObjectId** flag. * - * @deprecated Use insertOne, insertMany or bulkWrite instead. + * @deprecated Use insertOne, insertMany or bulkWrite instead. Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance * @param docs - The documents to insert * @param options - Optional settings for the command * @param callback - An optional callback, a Promise will be returned if none is provided @@ -478,33 +491,33 @@ class Collection { /** * Updates documents. * - * @deprecated use updateOne, updateMany or bulkWrite - * @param selector - The selector for the update operation. + * @deprecated use updateOne, updateMany or bulkWrite. Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance + * @param filter - The filter for the update operation. * @param update - The update operations to be applied to the documents * @param options - Optional settings for the command * @param callback - An optional callback, a Promise will be returned if none is provided */ - update(selector, update, options, callback) { + update(filter, update, options, callback) { (0, utils_1.emitWarningOnce)('collection.update is deprecated. Use updateOne, updateMany, or bulkWrite instead.'); if (typeof options === 'function') (callback = options), (options = {}); options = options !== null && options !== void 0 ? options : {}; - return this.updateMany(selector, update, options, callback); + return this.updateMany(filter, update, options, callback); } /** * Remove documents. * - * @deprecated use deleteOne, deleteMany or bulkWrite - * @param selector - The selector for the update operation. + * @deprecated use deleteOne, deleteMany or bulkWrite. Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance + * @param filter - The filter for the remove operation. * @param options - Optional settings for the command * @param callback - An optional callback, a Promise will be returned if none is provided */ - remove(selector, options, callback) { + remove(filter, options, callback) { (0, utils_1.emitWarningOnce)('collection.remove is deprecated. Use deleteOne, deleteMany, or bulkWrite instead.'); if (typeof options === 'function') (callback = options), (options = {}); options = options !== null && options !== void 0 ? options : {}; - return this.deleteMany(selector, options, callback); + return this.deleteMany(filter, options, callback); } count(filter, options, callback) { if (typeof filter === 'function') { diff --git a/food-ordering-app/server/node_modules/mongodb/lib/collection.js.map b/food-ordering-app/server/node_modules/mongodb/lib/collection.js.map index 07a0ce944..179acabf7 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/collection.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/collection.js.map @@ -1 +1 @@ -{"version":3,"file":"collection.js","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"collection.js","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/connection_string.js b/food-ordering-app/server/node_modules/mongodb/lib/connection_string.js index f48447fef..b67c955e5 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/connection_string.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/connection_string.js @@ -1,17 +1,19 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.FEATURE_FLAGS = exports.DEFAULT_OPTIONS = exports.OPTIONS = exports.parseOptions = exports.checkTLSOptions = exports.resolveSRVRecord = void 0; +exports.FEATURE_FLAGS = exports.DEFAULT_OPTIONS = exports.OPTIONS = exports.parseOptions = exports.resolveSRVRecord = void 0; const dns = require("dns"); const fs = require("fs"); const mongodb_connection_string_url_1 = require("mongodb-connection-string-url"); const url_1 = require("url"); const mongo_credentials_1 = require("./cmap/auth/mongo_credentials"); const providers_1 = require("./cmap/auth/providers"); +const client_metadata_1 = require("./cmap/handshake/client_metadata"); const compression_1 = require("./cmap/wire_protocol/compression"); const encrypter_1 = require("./encrypter"); const error_1 = require("./error"); const logger_1 = require("./logger"); const mongo_client_1 = require("./mongo_client"); +const mongo_logger_1 = require("./mongo_logger"); const promise_provider_1 = require("./promise_provider"); const read_concern_1 = require("./read_concern"); const read_preference_1 = require("./read_preference"); @@ -21,20 +23,6 @@ const VALID_TXT_RECORDS = ['authSource', 'replicaSet', 'loadBalanced']; const LB_SINGLE_HOST_ERROR = 'loadBalanced option only supported with a single host in the URI'; const LB_REPLICA_SET_ERROR = 'loadBalanced option not supported with a replicaSet option'; const LB_DIRECT_CONNECTION_ERROR = 'loadBalanced option not supported when directConnection is provided'; -/** - * Determines whether a provided address matches the provided parent domain in order - * to avoid certain attack vectors. - * - * @param srvAddress - The address to check against a domain - * @param parentDomain - The domain to check the provided address against - * @returns Whether the provided address matches the parent domain - */ -function matchesParentDomain(srvAddress, parentDomain) { - const regex = /^.*?\./; - const srv = `.${srvAddress.replace(regex, '')}`; - const parent = `.${parentDomain.replace(regex, '')}`; - return srv.endsWith(parent); -} /** * Lookup a `mongodb+srv` connection string, combine the parts and reparse it as a normal * connection string. @@ -42,92 +30,84 @@ function matchesParentDomain(srvAddress, parentDomain) { * @param uri - The connection string to parse * @param options - Optional user provided connection string options */ -function resolveSRVRecord(options, callback) { +async function resolveSRVRecord(options) { + var _a, _b, _c; if (typeof options.srvHost !== 'string') { - return callback(new error_1.MongoAPIError('Option "srvHost" must not be empty')); + throw new error_1.MongoAPIError('Option "srvHost" must not be empty'); } if (options.srvHost.split('.').length < 3) { // TODO(NODE-3484): Replace with MongoConnectionStringError - return callback(new error_1.MongoAPIError('URI must include hostname, domain name, and tld')); + throw new error_1.MongoAPIError('URI must include hostname, domain name, and tld'); } // Resolve the SRV record and use the result as the list of hosts to connect to. const lookupAddress = options.srvHost; - dns.resolveSrv(`_${options.srvServiceName}._tcp.${lookupAddress}`, (err, addresses) => { - if (err) - return callback(err); - if (addresses.length === 0) { - return callback(new error_1.MongoAPIError('No addresses found at host')); - } - for (const { name } of addresses) { - if (!matchesParentDomain(name, lookupAddress)) { - return callback(new error_1.MongoAPIError('Server record does not share hostname with parent URI')); - } + const addresses = await dns.promises.resolveSrv(`_${options.srvServiceName}._tcp.${lookupAddress}`); + if (addresses.length === 0) { + throw new error_1.MongoAPIError('No addresses found at host'); + } + for (const { name } of addresses) { + if (!(0, utils_1.matchesParentDomain)(name, lookupAddress)) { + throw new error_1.MongoAPIError('Server record does not share hostname with parent URI'); } - const hostAddresses = addresses.map(r => { var _a; return utils_1.HostAddress.fromString(`${r.name}:${(_a = r.port) !== null && _a !== void 0 ? _a : 27017}`); }); - const lbError = validateLoadBalancedOptions(hostAddresses, options, true); - if (lbError) { - return callback(lbError); + } + const hostAddresses = addresses.map(r => { var _a; return utils_1.HostAddress.fromString(`${r.name}:${(_a = r.port) !== null && _a !== void 0 ? _a : 27017}`); }); + validateLoadBalancedOptions(hostAddresses, options, true); + // Resolve TXT record and add options from there if they exist. + let record; + try { + record = await dns.promises.resolveTxt(lookupAddress); + } + catch (error) { + if (error.code !== 'ENODATA' && error.code !== 'ENOTFOUND') { + throw error; } - // Resolve TXT record and add options from there if they exist. - dns.resolveTxt(lookupAddress, (err, record) => { - var _a, _b, _c; - if (err) { - if (err.code !== 'ENODATA' && err.code !== 'ENOTFOUND') { - return callback(err); - } - } - else { - if (record.length > 1) { - return callback(new error_1.MongoParseError('Multiple text records not allowed')); - } - const txtRecordOptions = new url_1.URLSearchParams(record[0].join('')); - const txtRecordOptionKeys = [...txtRecordOptions.keys()]; - if (txtRecordOptionKeys.some(key => !VALID_TXT_RECORDS.includes(key))) { - return callback(new error_1.MongoParseError(`Text record may only set any of: ${VALID_TXT_RECORDS.join(', ')}`)); - } - if (VALID_TXT_RECORDS.some(option => txtRecordOptions.get(option) === '')) { - return callback(new error_1.MongoParseError('Cannot have empty URI params in DNS TXT Record')); - } - const source = (_a = txtRecordOptions.get('authSource')) !== null && _a !== void 0 ? _a : undefined; - const replicaSet = (_b = txtRecordOptions.get('replicaSet')) !== null && _b !== void 0 ? _b : undefined; - const loadBalanced = (_c = txtRecordOptions.get('loadBalanced')) !== null && _c !== void 0 ? _c : undefined; - if (!options.userSpecifiedAuthSource && - source && - options.credentials && - !providers_1.AUTH_MECHS_AUTH_SRC_EXTERNAL.has(options.credentials.mechanism)) { - options.credentials = mongo_credentials_1.MongoCredentials.merge(options.credentials, { source }); - } - if (!options.userSpecifiedReplicaSet && replicaSet) { - options.replicaSet = replicaSet; - } - if (loadBalanced === 'true') { - options.loadBalanced = true; - } - if (options.replicaSet && options.srvMaxHosts > 0) { - return callback(new error_1.MongoParseError('Cannot combine replicaSet option with srvMaxHosts')); - } - const lbError = validateLoadBalancedOptions(hostAddresses, options, true); - if (lbError) { - return callback(lbError); - } - } - callback(undefined, hostAddresses); - }); - }); + return hostAddresses; + } + if (record.length > 1) { + throw new error_1.MongoParseError('Multiple text records not allowed'); + } + const txtRecordOptions = new url_1.URLSearchParams(record[0].join('')); + const txtRecordOptionKeys = [...txtRecordOptions.keys()]; + if (txtRecordOptionKeys.some(key => !VALID_TXT_RECORDS.includes(key))) { + throw new error_1.MongoParseError(`Text record may only set any of: ${VALID_TXT_RECORDS.join(', ')}`); + } + if (VALID_TXT_RECORDS.some(option => txtRecordOptions.get(option) === '')) { + throw new error_1.MongoParseError('Cannot have empty URI params in DNS TXT Record'); + } + const source = (_a = txtRecordOptions.get('authSource')) !== null && _a !== void 0 ? _a : undefined; + const replicaSet = (_b = txtRecordOptions.get('replicaSet')) !== null && _b !== void 0 ? _b : undefined; + const loadBalanced = (_c = txtRecordOptions.get('loadBalanced')) !== null && _c !== void 0 ? _c : undefined; + if (!options.userSpecifiedAuthSource && + source && + options.credentials && + !providers_1.AUTH_MECHS_AUTH_SRC_EXTERNAL.has(options.credentials.mechanism)) { + options.credentials = mongo_credentials_1.MongoCredentials.merge(options.credentials, { source }); + } + if (!options.userSpecifiedReplicaSet && replicaSet) { + options.replicaSet = replicaSet; + } + if (loadBalanced === 'true') { + options.loadBalanced = true; + } + if (options.replicaSet && options.srvMaxHosts > 0) { + throw new error_1.MongoParseError('Cannot combine replicaSet option with srvMaxHosts'); + } + validateLoadBalancedOptions(hostAddresses, options, true); + return hostAddresses; } exports.resolveSRVRecord = resolveSRVRecord; /** * Checks if TLS options are valid * - * @param options - The options used for options parsing - * @throws MongoParseError if TLS options are invalid + * @param allOptions - All options provided by user or included in default options map + * @throws MongoAPIError if TLS options are invalid */ -function checkTLSOptions(options) { - if (!options) +function checkTLSOptions(allOptions) { + if (!allOptions) return; const check = (a, b) => { - if (Reflect.has(options, a) && Reflect.has(options, b)) { - throw new error_1.MongoParseError(`The '${a}' option cannot be used with '${b}'`); + if (allOptions.has(a) && allOptions.has(b)) { + throw new error_1.MongoAPIError(`The '${a}' option cannot be used with the '${b}' option`); } }; check('tlsInsecure', 'tlsAllowInvalidCertificates'); @@ -138,7 +118,6 @@ function checkTLSOptions(options) { check('tlsAllowInvalidCertificates', 'tlsDisableOCSPEndpointCheck'); check('tlsDisableCertificateRevocationCheck', 'tlsDisableOCSPEndpointCheck'); } -exports.checkTLSOptions = checkTLSOptions; const TRUTHS = new Set(['true', 't', '1', 'y', 'yes']); const FALSEHOODS = new Set(['false', 'f', '0', 'n', 'no', '-1']); function getBoolean(name, value) { @@ -159,16 +138,15 @@ function getBoolean(name, value) { } throw new error_1.MongoParseError(`Expected ${name} to be stringified boolean value, got: ${value}`); } -function getInt(name, value) { - if (typeof value === 'number') - return Math.trunc(value); - const parsedValue = Number.parseInt(String(value), 10); - if (!Number.isNaN(parsedValue)) - return parsedValue; +function getIntFromOptions(name, value) { + const parsedInt = (0, utils_1.parseInteger)(value); + if (parsedInt != null) { + return parsedInt; + } throw new error_1.MongoParseError(`Expected ${name} to be stringified int value, got: ${value}`); } -function getUint(name, value) { - const parsedValue = getInt(name, value); +function getUIntFromOptions(name, value) { + const parsedValue = getIntFromOptions(name, value); if (parsedValue < 0) { throw new error_1.MongoParseError(`${name} can only be a positive int value, got: ${value}`); } @@ -202,6 +180,7 @@ class CaseInsensitiveMap extends Map { } } function parseOptions(uri, mongoClient = undefined, options = {}) { + var _a; if (mongoClient != null && !(mongoClient instanceof mongo_client_1.MongoClient)) { options = mongoClient; mongoClient = undefined; @@ -283,6 +262,7 @@ function parseOptions(uri, mongoClient = undefined, options = {}) { throw new error_1.MongoParseError('All values of tls/ssl must be the same.'); } } + checkTLSOptions(allOptions); const unsupportedOptions = (0, utils_1.setDifference)(allKeys, Array.from(Object.keys(exports.OPTIONS)).map(s => s.toLowerCase())); if (unsupportedOptions.size !== 0) { const optionWord = unsupportedOptions.size > 1 ? 'options' : 'option'; @@ -313,6 +293,9 @@ function parseOptions(uri, mongoClient = undefined, options = {}) { source: mongoOptions.dbName }); } + if (isAws && mongoOptions.credentials.username && !mongoOptions.credentials.password) { + throw new error_1.MongoMissingCredentialsError(`When using ${mongoOptions.credentials.mechanism} password must be set when a username is specified`); + } mongoOptions.credentials.validate(); // Check if the only auth related option provided was authSource, if so we can remove credentials if (mongoOptions.credentials.password === '' && @@ -326,13 +309,10 @@ function parseOptions(uri, mongoClient = undefined, options = {}) { // dbName default is applied here because of the credential validation above mongoOptions.dbName = 'test'; } - checkTLSOptions(mongoOptions); - if (options.promiseLibrary) + if (options.promiseLibrary) { promise_provider_1.PromiseProvider.set(options.promiseLibrary); - const lbError = validateLoadBalancedOptions(hosts, mongoOptions, isSRV); - if (lbError) { - throw lbError; } + validateLoadBalancedOptions(hosts, mongoOptions, isSRV); if (mongoClient && mongoOptions.autoEncryption) { encrypter_1.Encrypter.checkForMongoCrypt(); mongoOptions.encrypter = new encrypter_1.Encrypter(mongoClient, uri, options); @@ -383,22 +363,51 @@ function parseOptions(uri, mongoClient = undefined, options = {}) { if (proxyOptions.some(options => options.length > 1)) { throw new error_1.MongoParseError('Proxy options cannot be specified multiple times in the connection string'); } + const loggerFeatureFlag = Symbol.for('@@mdb.enableMongoLogger'); + mongoOptions[loggerFeatureFlag] = (_a = mongoOptions[loggerFeatureFlag]) !== null && _a !== void 0 ? _a : false; + let loggerEnvOptions = {}; + let loggerClientOptions = {}; + if (mongoOptions[loggerFeatureFlag]) { + loggerEnvOptions = { + MONGODB_LOG_COMMAND: process.env.MONGODB_LOG_COMMAND, + MONGODB_LOG_TOPOLOGY: process.env.MONGODB_LOG_TOPOLOGY, + MONGODB_LOG_SERVER_SELECTION: process.env.MONGODB_LOG_SERVER_SELECTION, + MONGODB_LOG_CONNECTION: process.env.MONGODB_LOG_CONNECTION, + MONGODB_LOG_ALL: process.env.MONGODB_LOG_ALL, + MONGODB_LOG_MAX_DOCUMENT_LENGTH: process.env.MONGODB_LOG_MAX_DOCUMENT_LENGTH, + MONGODB_LOG_PATH: process.env.MONGODB_LOG_PATH + }; + loggerClientOptions = { + mongodbLogPath: mongoOptions.mongodbLogPath + }; + } + mongoOptions.mongoLoggerOptions = mongo_logger_1.MongoLogger.resolveOptions(loggerEnvOptions, loggerClientOptions); + mongoOptions.metadata = (0, client_metadata_1.makeClientMetadata)(mongoOptions); return mongoOptions; } exports.parseOptions = parseOptions; +/** + * #### Throws if LB mode is true: + * - hosts contains more than one host + * - there is a replicaSet name set + * - directConnection is set + * - if srvMaxHosts is used when an srv connection string is passed in + * + * @throws MongoParseError + */ function validateLoadBalancedOptions(hosts, mongoOptions, isSrv) { if (mongoOptions.loadBalanced) { if (hosts.length > 1) { - return new error_1.MongoParseError(LB_SINGLE_HOST_ERROR); + throw new error_1.MongoParseError(LB_SINGLE_HOST_ERROR); } if (mongoOptions.replicaSet) { - return new error_1.MongoParseError(LB_REPLICA_SET_ERROR); + throw new error_1.MongoParseError(LB_REPLICA_SET_ERROR); } if (mongoOptions.directConnection) { - return new error_1.MongoParseError(LB_DIRECT_CONNECTION_ERROR); + throw new error_1.MongoParseError(LB_DIRECT_CONNECTION_ERROR); } if (isSrv && mongoOptions.srvMaxHosts > 0) { - return new error_1.MongoParseError('Cannot limit srv hosts with loadBalanced enabled'); + throw new error_1.MongoParseError('Cannot limit srv hosts with loadBalanced enabled'); } } return; @@ -415,10 +424,10 @@ function setOption(mongoOptions, key, descriptor, values) { mongoOptions[name] = getBoolean(name, values[0]); break; case 'int': - mongoOptions[name] = getInt(name, values[0]); + mongoOptions[name] = getIntFromOptions(name, values[0]); break; case 'uint': - mongoOptions[name] = getUint(name, values[0]); + mongoOptions[name] = getUIntFromOptions(name, values[0]); break; case 'string': if (values[0] == null) { @@ -447,10 +456,7 @@ function setOption(mongoOptions, key, descriptor, values) { } exports.OPTIONS = { appName: { - target: 'metadata', - transform({ options, values: [value] }) { - return (0, utils_1.makeClientMetadata)({ ...options.driverInfo, appName: String(value) }); - } + type: 'string' }, auth: { target: 'credentials', @@ -577,22 +583,13 @@ exports.OPTIONS = { type: 'boolean' }, driverInfo: { - target: 'metadata', - default: (0, utils_1.makeClientMetadata)(), - transform({ options, values: [value] }) { - var _a, _b; - if (!(0, utils_1.isRecord)(value)) - throw new error_1.MongoParseError('DriverInfo must be an object'); - return (0, utils_1.makeClientMetadata)({ - driverInfo: value, - appName: (_b = (_a = options.metadata) === null || _a === void 0 ? void 0 : _a.application) === null || _b === void 0 ? void 0 : _b.name - }); - } + default: {}, + type: 'record' }, enableUtf8Validation: { type: 'boolean', default: true }, family: { transform({ name, values: [value] }) { - const transformValue = getInt(name, value); + const transformValue = getIntFromOptions(name, value); if (transformValue === 4 || transformValue === 6) { return transformValue; } @@ -694,7 +691,7 @@ exports.OPTIONS = { maxConnecting: { default: 2, transform({ name, values: [value] }) { - const maxConnecting = getUint(name, value); + const maxConnecting = getUIntFromOptions(name, value); if (maxConnecting === 0) { throw new error_1.MongoInvalidArgumentError('maxConnecting must be > 0 if specified'); } @@ -712,7 +709,7 @@ exports.OPTIONS = { maxStalenessSeconds: { target: 'readPreference', transform({ name, options, values: [value] }) { - const maxStalenessSeconds = getUint(name, value); + const maxStalenessSeconds = getUIntFromOptions(name, value); if (options.readPreference) { return read_preference_1.ReadPreference.fromOptions({ readPreference: { ...options.readPreference, maxStalenessSeconds } @@ -1024,7 +1021,7 @@ exports.OPTIONS = { const wc = write_concern_1.WriteConcern.fromOptions({ writeConcern: { ...options.writeConcern, - wtimeout: getUint('wtimeout', value) + wtimeout: getUIntFromOptions('wtimeout', value) } }); if (wc) @@ -1038,7 +1035,7 @@ exports.OPTIONS = { const wc = write_concern_1.WriteConcern.fromOptions({ writeConcern: { ...options.writeConcern, - wtimeoutMS: getUint('wtimeoutMS', value) + wtimeoutMS: getUIntFromOptions('wtimeoutMS', value) } }); if (wc) @@ -1090,5 +1087,8 @@ exports.DEFAULT_OPTIONS = new CaseInsensitiveMap(Object.entries(exports.OPTIONS) * Set of permitted feature flags * @internal */ -exports.FEATURE_FLAGS = new Set([Symbol.for('@@mdb.skipPingOnConnect')]); +exports.FEATURE_FLAGS = new Set([ + Symbol.for('@@mdb.skipPingOnConnect'), + Symbol.for('@@mdb.enableMongoLogger') +]); //# sourceMappingURL=connection_string.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/connection_string.js.map b/food-ordering-app/server/node_modules/mongodb/lib/connection_string.js.map index 1584fccce..e48f71d81 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/connection_string.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/connection_string.js.map @@ -1 +1 @@ -{"version":3,"file":"connection_string.js","sourceRoot":"","sources":["../src/connection_string.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"connection_string.js","sourceRoot":"","sources":["../src/connection_string.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/constants.js b/food-ordering-app/server/node_modules/mongodb/lib/constants.js index 83653840d..f3b151f2d 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/constants.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/constants.js @@ -1,7 +1,7 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.APM_EVENTS = exports.TOPOLOGY_EVENTS = exports.CMAP_EVENTS = exports.HEARTBEAT_EVENTS = exports.RESUME_TOKEN_CHANGED = exports.END = exports.CHANGE = exports.INIT = exports.MORE = exports.RESPONSE = exports.SERVER_HEARTBEAT_FAILED = exports.SERVER_HEARTBEAT_SUCCEEDED = exports.SERVER_HEARTBEAT_STARTED = exports.COMMAND_FAILED = exports.COMMAND_SUCCEEDED = exports.COMMAND_STARTED = exports.CLUSTER_TIME_RECEIVED = exports.CONNECTION_CHECKED_IN = exports.CONNECTION_CHECKED_OUT = exports.CONNECTION_CHECK_OUT_FAILED = exports.CONNECTION_CHECK_OUT_STARTED = exports.CONNECTION_CLOSED = exports.CONNECTION_READY = exports.CONNECTION_CREATED = exports.CONNECTION_POOL_CLEARED = exports.CONNECTION_POOL_CLOSED = exports.CONNECTION_POOL_CREATED = exports.TOPOLOGY_DESCRIPTION_CHANGED = exports.TOPOLOGY_CLOSED = exports.TOPOLOGY_OPENING = exports.SERVER_DESCRIPTION_CHANGED = exports.SERVER_CLOSED = exports.SERVER_OPENING = exports.DESCRIPTION_RECEIVED = exports.UNPINNED = exports.PINNED = exports.MESSAGE = exports.ENDED = exports.CLOSED = exports.CONNECT = exports.OPEN = exports.CLOSE = exports.TIMEOUT = exports.ERROR = exports.SYSTEM_JS_COLLECTION = exports.SYSTEM_COMMAND_COLLECTION = exports.SYSTEM_USER_COLLECTION = exports.SYSTEM_PROFILE_COLLECTION = exports.SYSTEM_INDEX_COLLECTION = exports.SYSTEM_NAMESPACE_COLLECTION = void 0; -exports.LEGACY_HELLO_COMMAND_CAMEL_CASE = exports.LEGACY_HELLO_COMMAND = exports.MONGO_CLIENT_EVENTS = exports.LOCAL_SERVER_EVENTS = exports.SERVER_RELAY_EVENTS = void 0; +exports.TOPOLOGY_EVENTS = exports.CMAP_EVENTS = exports.HEARTBEAT_EVENTS = exports.RESUME_TOKEN_CHANGED = exports.END = exports.CHANGE = exports.INIT = exports.MORE = exports.RESPONSE = exports.SERVER_HEARTBEAT_FAILED = exports.SERVER_HEARTBEAT_SUCCEEDED = exports.SERVER_HEARTBEAT_STARTED = exports.COMMAND_FAILED = exports.COMMAND_SUCCEEDED = exports.COMMAND_STARTED = exports.CLUSTER_TIME_RECEIVED = exports.CONNECTION_CHECKED_IN = exports.CONNECTION_CHECKED_OUT = exports.CONNECTION_CHECK_OUT_FAILED = exports.CONNECTION_CHECK_OUT_STARTED = exports.CONNECTION_CLOSED = exports.CONNECTION_READY = exports.CONNECTION_CREATED = exports.CONNECTION_POOL_READY = exports.CONNECTION_POOL_CLEARED = exports.CONNECTION_POOL_CLOSED = exports.CONNECTION_POOL_CREATED = exports.TOPOLOGY_DESCRIPTION_CHANGED = exports.TOPOLOGY_CLOSED = exports.TOPOLOGY_OPENING = exports.SERVER_DESCRIPTION_CHANGED = exports.SERVER_CLOSED = exports.SERVER_OPENING = exports.DESCRIPTION_RECEIVED = exports.UNPINNED = exports.PINNED = exports.MESSAGE = exports.ENDED = exports.CLOSED = exports.CONNECT = exports.OPEN = exports.CLOSE = exports.TIMEOUT = exports.ERROR = exports.SYSTEM_JS_COLLECTION = exports.SYSTEM_COMMAND_COLLECTION = exports.SYSTEM_USER_COLLECTION = exports.SYSTEM_PROFILE_COLLECTION = exports.SYSTEM_INDEX_COLLECTION = exports.SYSTEM_NAMESPACE_COLLECTION = void 0; +exports.LEGACY_HELLO_COMMAND_CAMEL_CASE = exports.LEGACY_HELLO_COMMAND = exports.MONGO_CLIENT_EVENTS = exports.LOCAL_SERVER_EVENTS = exports.SERVER_RELAY_EVENTS = exports.APM_EVENTS = void 0; exports.SYSTEM_NAMESPACE_COLLECTION = 'system.namespaces'; exports.SYSTEM_INDEX_COLLECTION = 'system.indexes'; exports.SYSTEM_PROFILE_COLLECTION = 'system.profile'; @@ -29,6 +29,7 @@ exports.TOPOLOGY_DESCRIPTION_CHANGED = 'topologyDescriptionChanged'; exports.CONNECTION_POOL_CREATED = 'connectionPoolCreated'; exports.CONNECTION_POOL_CLOSED = 'connectionPoolClosed'; exports.CONNECTION_POOL_CLEARED = 'connectionPoolCleared'; +exports.CONNECTION_POOL_READY = 'connectionPoolReady'; exports.CONNECTION_CREATED = 'connectionCreated'; exports.CONNECTION_READY = 'connectionReady'; exports.CONNECTION_CLOSED = 'connectionClosed'; @@ -58,6 +59,8 @@ exports.HEARTBEAT_EVENTS = Object.freeze([ /** @public */ exports.CMAP_EVENTS = Object.freeze([ exports.CONNECTION_POOL_CREATED, + exports.CONNECTION_POOL_READY, + exports.CONNECTION_POOL_CLEARED, exports.CONNECTION_POOL_CLOSED, exports.CONNECTION_CREATED, exports.CONNECTION_READY, @@ -65,8 +68,7 @@ exports.CMAP_EVENTS = Object.freeze([ exports.CONNECTION_CHECK_OUT_STARTED, exports.CONNECTION_CHECK_OUT_FAILED, exports.CONNECTION_CHECKED_OUT, - exports.CONNECTION_CHECKED_IN, - exports.CONNECTION_POOL_CLEARED + exports.CONNECTION_CHECKED_IN ]); /** @public */ exports.TOPOLOGY_EVENTS = Object.freeze([ diff --git a/food-ordering-app/server/node_modules/mongodb/lib/constants.js.map b/food-ordering-app/server/node_modules/mongodb/lib/constants.js.map index f6e3365c5..483983ab6 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/constants.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/constants.js.map @@ -1 +1 @@ -{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;;AAAa,QAAA,2BAA2B,GAAG,mBAAmB,CAAC;AAClD,QAAA,uBAAuB,GAAG,gBAAgB,CAAC;AAC3C,QAAA,yBAAyB,GAAG,gBAAgB,CAAC;AAC7C,QAAA,sBAAsB,GAAG,cAAc,CAAC;AACxC,QAAA,yBAAyB,GAAG,MAAM,CAAC;AACnC,QAAA,oBAAoB,GAAG,WAAW,CAAC;AAEhD,SAAS;AACI,QAAA,KAAK,GAAG,OAAgB,CAAC;AACzB,QAAA,OAAO,GAAG,SAAkB,CAAC;AAC7B,QAAA,KAAK,GAAG,OAAgB,CAAC;AACzB,QAAA,IAAI,GAAG,MAAe,CAAC;AACvB,QAAA,OAAO,GAAG,SAAkB,CAAC;AAC7B,QAAA,MAAM,GAAG,QAAiB,CAAC;AAC3B,QAAA,KAAK,GAAG,OAAgB,CAAC;AACzB,QAAA,OAAO,GAAG,SAAkB,CAAC;AAC7B,QAAA,MAAM,GAAG,QAAiB,CAAC;AAC3B,QAAA,QAAQ,GAAG,UAAmB,CAAC;AAC/B,QAAA,oBAAoB,GAAG,qBAAqB,CAAC;AAC7C,QAAA,cAAc,GAAG,eAAwB,CAAC;AAC1C,QAAA,aAAa,GAAG,cAAuB,CAAC;AACxC,QAAA,0BAA0B,GAAG,0BAAmC,CAAC;AACjE,QAAA,gBAAgB,GAAG,iBAA0B,CAAC;AAC9C,QAAA,eAAe,GAAG,gBAAyB,CAAC;AAC5C,QAAA,4BAA4B,GAAG,4BAAqC,CAAC;AACrE,QAAA,uBAAuB,GAAG,uBAAgC,CAAC;AAC3D,QAAA,sBAAsB,GAAG,sBAA+B,CAAC;AACzD,QAAA,uBAAuB,GAAG,uBAAgC,CAAC;AAC3D,QAAA,qBAAqB,GAAG,qBAA8B,CAAC;AACvD,QAAA,kBAAkB,GAAG,mBAA4B,CAAC;AAClD,QAAA,gBAAgB,GAAG,iBAA0B,CAAC;AAC9C,QAAA,iBAAiB,GAAG,kBAA2B,CAAC;AAChD,QAAA,4BAA4B,GAAG,2BAAoC,CAAC;AACpE,QAAA,2BAA2B,GAAG,0BAAmC,CAAC;AAClE,QAAA,sBAAsB,GAAG,sBAA+B,CAAC;AACzD,QAAA,qBAAqB,GAAG,qBAA8B,CAAC;AACvD,QAAA,qBAAqB,GAAG,qBAA8B,CAAC;AACvD,QAAA,eAAe,GAAG,gBAAyB,CAAC;AAC5C,QAAA,iBAAiB,GAAG,kBAA2B,CAAC;AAChD,QAAA,cAAc,GAAG,eAAwB,CAAC;AAC1C,QAAA,wBAAwB,GAAG,wBAAiC,CAAC;AAC7D,QAAA,0BAA0B,GAAG,0BAAmC,CAAC;AACjE,QAAA,uBAAuB,GAAG,uBAAgC,CAAC;AAC3D,QAAA,QAAQ,GAAG,UAAmB,CAAC;AAC/B,QAAA,IAAI,GAAG,MAAe,CAAC;AACvB,QAAA,IAAI,GAAG,MAAe,CAAC;AACvB,QAAA,MAAM,GAAG,QAAiB,CAAC;AAC3B,QAAA,GAAG,GAAG,KAAc,CAAC;AACrB,QAAA,oBAAoB,GAAG,oBAA6B,CAAC;AAElE,cAAc;AACD,QAAA,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC5C,gCAAwB;IACxB,kCAA0B;IAC1B,+BAAuB;CACf,CAAC,CAAC;AAEZ,cAAc;AACD,QAAA,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;IACvC,+BAAuB;IACvB,6BAAqB;IACrB,+BAAuB;IACvB,8BAAsB;IACtB,0BAAkB;IAClB,wBAAgB;IAChB,yBAAiB;IACjB,oCAA4B;IAC5B,mCAA2B;IAC3B,8BAAsB;IACtB,6BAAqB;CACb,CAAC,CAAC;AAEZ,cAAc;AACD,QAAA,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3C,sBAAc;IACd,qBAAa;IACb,kCAA0B;IAC1B,wBAAgB;IAChB,uBAAe;IACf,oCAA4B;IAC5B,aAAK;IACL,eAAO;IACP,aAAK;CACG,CAAC,CAAC;AAEZ,cAAc;AACD,QAAA,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IACtC,uBAAe;IACf,yBAAiB;IACjB,sBAAc;CACN,CAAC,CAAC;AAEZ;;;GAGG;AACU,QAAA,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/C,gCAAwB;IACxB,kCAA0B;IAC1B,+BAAuB;IACvB,uBAAe;IACf,yBAAiB;IACjB,sBAAc;IACd,GAAG,mBAAW;CACN,CAAC,CAAC;AAEZ;;;GAGG;AACU,QAAA,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/C,eAAO;IACP,4BAAoB;IACpB,cAAM;IACN,aAAK;CACG,CAAC,CAAC;AAEZ,cAAc;AACD,QAAA,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/C,GAAG,mBAAW;IACd,GAAG,kBAAU;IACb,GAAG,uBAAe;IAClB,GAAG,wBAAgB;CACX,CAAC,CAAC;AAEZ;;;GAGG;AACU,QAAA,oBAAoB,GAAG,UAAU,CAAC;AAE/C;;;GAGG;AACU,QAAA,+BAA+B,GAAG,UAAU,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cursor/abstract_cursor.js b/food-ordering-app/server/node_modules/mongodb/lib/cursor/abstract_cursor.js index 5b518f7c6..76554c62a 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/cursor/abstract_cursor.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/cursor/abstract_cursor.js @@ -1,12 +1,15 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.assertUninitialized = exports.AbstractCursor = exports.CURSOR_FLAGS = void 0; +exports.assertUninitialized = exports.next = exports.AbstractCursor = exports.CURSOR_FLAGS = void 0; const stream_1 = require("stream"); +const util_1 = require("util"); const bson_1 = require("../bson"); const error_1 = require("../error"); const mongo_types_1 = require("../mongo_types"); const execute_operation_1 = require("../operations/execute_operation"); const get_more_1 = require("../operations/get_more"); +const kill_cursors_1 = require("../operations/kill_cursors"); +const promise_provider_1 = require("../promise_provider"); const read_concern_1 = require("../read_concern"); const read_preference_1 = require("../read_preference"); const sessions_1 = require("../sessions"); @@ -54,7 +57,8 @@ class AbstractCursor extends mongo_types_1.TypedEventEmitter { } this[kClient] = client; this[kNamespace] = namespace; - this[kDocuments] = []; // TODO: https://github.com/microsoft/TypeScript/issues/36230 + this[kId] = null; + this[kDocuments] = new utils_1.List(); this[kInitialized] = false; this[kClosed] = false; this[kKilled] = false; @@ -79,12 +83,19 @@ class AbstractCursor extends mongo_types_1.TypedEventEmitter { if (typeof options.maxTimeMS === 'number') { this[kOptions].maxTimeMS = options.maxTimeMS; } + if (typeof options.maxAwaitTimeMS === 'number') { + this[kOptions].maxAwaitTimeMS = options.maxAwaitTimeMS; + } if (options.session instanceof sessions_1.ClientSession) { this[kSession] = options.session; } + else { + this[kSession] = this[kClient].startSession({ owner: this, explicit: false }); + } } get id() { - return this[kId]; + var _a; + return (_a = this[kId]) !== null && _a !== void 0 ? _a : undefined; } /** @internal */ get client() { @@ -130,17 +141,53 @@ class AbstractCursor extends mongo_types_1.TypedEventEmitter { } /** Returns current buffered documents */ readBufferedDocuments(number) { - return this[kDocuments].splice(0, number !== null && number !== void 0 ? number : this[kDocuments].length); + const bufferedDocs = []; + const documentsToRead = Math.min(number !== null && number !== void 0 ? number : this[kDocuments].length, this[kDocuments].length); + for (let count = 0; count < documentsToRead; count++) { + const document = this[kDocuments].shift(); + if (document != null) { + bufferedDocs.push(document); + } + } + return bufferedDocs; } [Symbol.asyncIterator]() { + async function* nativeAsyncIterator() { + if (this.closed) { + return; + } + while (true) { + const document = await this.next(); + // Intentional strict null check, because users can map cursors to falsey values. + // We allow mapping to all values except for null. + // eslint-disable-next-line no-restricted-syntax + if (document === null) { + if (!this.closed) { + const message = 'Cursor returned a `null` document, but the cursor is not exhausted. Mapping documents to `null` is not supported in the cursor transform.'; + await cleanupCursorAsync(this, { needsToEmitClosed: true }).catch(() => null); + throw new error_1.MongoAPIError(message); + } + break; + } + yield document; + if (this[kId] === bson_1.Long.ZERO) { + // Cursor exhausted + break; + } + } + } + const iterator = nativeAsyncIterator.call(this); + if (promise_provider_1.PromiseProvider.get() == null) { + return iterator; + } return { - next: () => this.next().then(value => value != null ? { value, done: false } : { value: undefined, done: true }) + next: () => (0, utils_1.maybeCallback)(() => iterator.next(), null) }; } stream(options) { if (options === null || options === void 0 ? void 0 : options.transform) { const transform = options.transform; - const readable = makeCursorStream(this); + const readable = new ReadableCursorStream(this); return readable.pipe(new stream_1.Transform({ objectMode: true, highWaterMark: 1, @@ -155,82 +202,52 @@ class AbstractCursor extends mongo_types_1.TypedEventEmitter { } })); } - return makeCursorStream(this); + return new ReadableCursorStream(this); } hasNext(callback) { - return (0, utils_1.maybePromise)(callback, done => { + return (0, utils_1.maybeCallback)(async () => { if (this[kId] === bson_1.Long.ZERO) { - return done(undefined, false); + return false; } - if (this[kDocuments].length) { - return done(undefined, true); + if (this[kDocuments].length !== 0) { + return true; } - next(this, true, (err, doc) => { - if (err) - return done(err); - if (doc) { - this[kDocuments].unshift(doc); - done(undefined, true); - return; - } - done(undefined, false); - }); - }); + const doc = await nextAsync(this, true); + if (doc) { + this[kDocuments].unshift(doc); + return true; + } + return false; + }, callback); } next(callback) { - return (0, utils_1.maybePromise)(callback, done => { + return (0, utils_1.maybeCallback)(async () => { if (this[kId] === bson_1.Long.ZERO) { - return done(new error_1.MongoCursorExhaustedError()); + throw new error_1.MongoCursorExhaustedError(); } - next(this, true, done); - }); + return nextAsync(this, true); + }, callback); } tryNext(callback) { - return (0, utils_1.maybePromise)(callback, done => { + return (0, utils_1.maybeCallback)(async () => { if (this[kId] === bson_1.Long.ZERO) { - return done(new error_1.MongoCursorExhaustedError()); + throw new error_1.MongoCursorExhaustedError(); } - next(this, false, done); - }); + return nextAsync(this, false); + }, callback); } forEach(iterator, callback) { if (typeof iterator !== 'function') { throw new error_1.MongoInvalidArgumentError('Argument "iterator" must be a function'); } - return (0, utils_1.maybePromise)(callback, done => { - const transform = this[kTransform]; - const fetchDocs = () => { - next(this, true, (err, doc) => { - if (err || doc == null) - return done(err); - let result; - // NOTE: no need to transform because `next` will do this automatically - try { - result = iterator(doc); // TODO(NODE-3283): Improve transform typing - } - catch (error) { - return done(error); - } - if (result === false) - return done(); - // these do need to be transformed since they are copying the rest of the batch - const internalDocs = this[kDocuments].splice(0, this[kDocuments].length); - for (let i = 0; i < internalDocs.length; ++i) { - try { - result = iterator((transform ? transform(internalDocs[i]) : internalDocs[i]) // TODO(NODE-3283): Improve transform typing - ); - } - catch (error) { - return done(error); - } - if (result === false) - return done(); - } - fetchDocs(); - }); - }; - fetchDocs(); - }); + return (0, utils_1.maybeCallback)(async () => { + for await (const document of this) { + const result = iterator(document); + if (result === false) { + break; + } + } + }, callback); } close(options, callback) { if (typeof options === 'function') @@ -238,33 +255,16 @@ class AbstractCursor extends mongo_types_1.TypedEventEmitter { options = options !== null && options !== void 0 ? options : {}; const needsToEmitClosed = !this[kClosed]; this[kClosed] = true; - return (0, utils_1.maybePromise)(callback, done => cleanupCursor(this, { needsToEmitClosed }, done)); + return (0, utils_1.maybeCallback)(async () => cleanupCursorAsync(this, { needsToEmitClosed }), callback); } toArray(callback) { - return (0, utils_1.maybePromise)(callback, done => { - const docs = []; - const transform = this[kTransform]; - const fetchDocs = () => { - // NOTE: if we add a `nextBatch` then we should use it here - next(this, true, (err, doc) => { - if (err) - return done(err); - if (doc == null) - return done(undefined, docs); - // NOTE: no need to transform because `next` will do this automatically - docs.push(doc); - // these do need to be transformed since they are copying the rest of the batch - const internalDocs = (transform - ? this[kDocuments].splice(0, this[kDocuments].length).map(transform) - : this[kDocuments].splice(0, this[kDocuments].length)); // TODO(NODE-3283): Improve transform typing - if (internalDocs) { - docs.push(...internalDocs); - } - fetchDocs(); - }); - }; - fetchDocs(); - }); + return (0, utils_1.maybeCallback)(async () => { + const array = []; + for await (const document of this) { + array.push(document); + } + return array; + }, callback); } /** * Add a cursor flag to the cursor @@ -289,6 +289,29 @@ class AbstractCursor extends mongo_types_1.TypedEventEmitter { * this function's transform. * * @remarks + * + * **Note** Cursors use `null` internally to indicate that there are no more documents in the cursor. Providing a mapping + * function that maps values to `null` will result in the cursor closing itself before it has finished iterating + * all documents. This will **not** result in a memory leak, just surprising behavior. For example: + * + * ```typescript + * const cursor = collection.find({}); + * cursor.map(() => null); + * + * const documents = await cursor.toArray(); + * // documents is always [], regardless of how many documents are in the collection. + * ``` + * + * Other falsey values are allowed: + * + * ```typescript + * const cursor = collection.find({}); + * cursor.map(() => ''); + * + * const documents = await cursor.toArray(); + * // documents is now an array of empty strings + * ``` + * * **Note for Typescript Users:** adding a transform changes the return type of the iteration of this cursor, * it **does not** return a new instance of a cursor. This means when calling map, * you should always assign the result to a new variable in order to get a correctly typed cursor variable. @@ -384,34 +407,26 @@ class AbstractCursor extends mongo_types_1.TypedEventEmitter { if (!this[kInitialized]) { return; } - this[kId] = undefined; - this[kDocuments] = []; + this[kId] = null; + this[kDocuments].clear(); this[kClosed] = false; this[kKilled] = false; this[kInitialized] = false; const session = this[kSession]; if (session) { // We only want to end this session if we created it, and it hasn't ended yet - if (session.explicit === false && !session.hasEnded) { - session.endSession(); + if (session.explicit === false) { + if (!session.hasEnded) { + session.endSession().catch(() => null); + } + this[kSession] = this.client.startSession({ owner: this, explicit: false }); } - this[kSession] = undefined; } } /** @internal */ _getMore(batchSize, callback) { - const cursorId = this[kId]; - const cursorNs = this[kNamespace]; - const server = this[kServer]; - if (cursorId == null) { - callback(new error_1.MongoRuntimeError('Unable to iterate cursor with no id')); - return; - } - if (server == null) { - callback(new error_1.MongoRuntimeError('Unable to iterate cursor without selected server')); - return; - } - const getMoreOperation = new get_more_1.GetMoreOperation(cursorNs, cursorId, server, { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const getMoreOperation = new get_more_1.GetMoreOperation(this[kNamespace], this[kId], this[kServer], { ...this[kOptions], session: this[kSession], batchSize @@ -426,25 +441,12 @@ class AbstractCursor extends mongo_types_1.TypedEventEmitter { * a significant refactor. */ [kInit](callback) { - var _a, _b, _c, _d; - if (this[kSession] == null) { - if ((_a = this[kClient].topology) === null || _a === void 0 ? void 0 : _a.shouldCheckForSessionSupport()) { - return (_b = this[kClient].topology) === null || _b === void 0 ? void 0 : _b.selectServer(read_preference_1.ReadPreference.primaryPreferred, {}, err => { - if (err) - return callback(err); - return this[kInit](callback); - }); - } - else if ((_c = this[kClient].topology) === null || _c === void 0 ? void 0 : _c.hasSessionSupport()) { - this[kSession] = (_d = this[kClient].topology) === null || _d === void 0 ? void 0 : _d.startSession({ owner: this, explicit: false }); - } - } - this._initialize(this[kSession], (err, state) => { + this._initialize(this[kSession], (error, state) => { if (state) { const response = state.response; this[kServer] = state.server; - this[kSession] = state.session; if (response.cursor) { + // TODO(NODE-2674): Preserve int64 sent from MongoDB this[kId] = typeof response.cursor.id === 'number' ? bson_1.Long.fromNumber(response.cursor.id) @@ -452,7 +454,7 @@ class AbstractCursor extends mongo_types_1.TypedEventEmitter { if (response.cursor.ns) { this[kNamespace] = (0, utils_1.ns)(response.cursor.ns); } - this[kDocuments] = response.cursor.firstBatch; + this[kDocuments].pushMany(response.cursor.firstBatch); } // When server responses return without a cursor document, we close this cursor // and return the raw server response. This is often the case for explain commands @@ -460,13 +462,16 @@ class AbstractCursor extends mongo_types_1.TypedEventEmitter { if (this[kId] == null) { this[kId] = bson_1.Long.ZERO; // TODO(NODE-3286): ExecutionResult needs to accept a generic parameter - this[kDocuments] = [state.response]; + this[kDocuments].push(state.response); } } // the cursor is now initialized, even if an error occurred or it is dead this[kInitialized] = true; - if (err || cursorIsDead(this)) { - return cleanupCursor(this, { error: err }, () => callback(err, nextDocument(this))); + if (error) { + return cleanupCursor(this, { error }, () => callback(error, undefined)); + } + if (cursorIsDead(this)) { + return cleanupCursor(this, undefined, () => callback()); } callback(); }); @@ -476,36 +481,37 @@ exports.AbstractCursor = AbstractCursor; /** @event */ AbstractCursor.CLOSE = 'close'; function nextDocument(cursor) { - if (cursor[kDocuments] == null || !cursor[kDocuments].length) { - return null; - } const doc = cursor[kDocuments].shift(); - if (doc) { - const transform = cursor[kTransform]; - if (transform) { - return transform(doc); - } - return doc; + if (doc && cursor[kTransform]) { + return cursor[kTransform](doc); } - return null; + return doc; } +const nextAsync = (0, util_1.promisify)(next); +/** + * @param cursor - the cursor on which to call `next` + * @param blocking - a boolean indicating whether or not the cursor should `block` until data + * is available. Generally, this flag is set to `false` because if the getMore returns no documents, + * the cursor has been exhausted. In certain scenarios (ChangeStreams, tailable await cursors and + * `tryNext`, for example) blocking is necessary because a getMore returning no documents does + * not indicate the end of the cursor. + * @param callback - callback to return the result to the caller + * @returns + */ function next(cursor, blocking, callback) { const cursorId = cursor[kId]; if (cursor.closed) { return callback(undefined, null); } - if (cursor[kDocuments] && cursor[kDocuments].length) { + if (cursor[kDocuments].length !== 0) { callback(undefined, nextDocument(cursor)); return; } if (cursorId == null) { // All cursors must operate within a session, one must be made implicitly if not explicitly provided - cursor[kInit]((err, value) => { + cursor[kInit](err => { if (err) return callback(err); - if (value) { - return callback(undefined, value); - } return next(cursor, blocking, callback); }); return; @@ -515,16 +521,16 @@ function next(cursor, blocking, callback) { } // otherwise need to call getMore const batchSize = cursor[kOptions].batchSize || 1000; - cursor._getMore(batchSize, (err, response) => { + cursor._getMore(batchSize, (error, response) => { if (response) { const cursorId = typeof response.cursor.id === 'number' ? bson_1.Long.fromNumber(response.cursor.id) : response.cursor.id; - cursor[kDocuments] = response.cursor.nextBatch; + cursor[kDocuments].pushMany(response.cursor.nextBatch); cursor[kId] = cursorId; } - if (err || cursorIsDead(cursor)) { - return cleanupCursor(cursor, { error: err }, () => callback(err, nextDocument(cursor))); + if (error || cursorIsDead(cursor)) { + return cleanupCursor(cursor, { error }, () => callback(error, nextDocument(cursor))); } if (cursor[kDocuments].length === 0 && blocking === false) { return callback(undefined, null); @@ -532,10 +538,12 @@ function next(cursor, blocking, callback) { next(cursor, blocking, callback); }); } +exports.next = next; function cursorIsDead(cursor) { const cursorId = cursor[kId]; return !!cursorId && cursorId.isZero(); } +const cleanupCursorAsync = (0, util_1.promisify)(cleanupCursor); function cleanupCursor(cursor, options, callback) { var _a; const cursorId = cursor[kId]; @@ -581,7 +589,7 @@ function cleanupCursor(cursor, options, callback) { return callback(); } cursor[kKilled] = true; - server.killCursors(cursorNs, [cursorId], { ...(0, bson_1.pluckBSONSerializeOptions)(cursor[kOptions]), session }, () => completeCleanup()); + return (0, execute_operation_1.executeOperation)(cursor[kClient], new kill_cursors_1.KillCursorsOperation(cursorId, cursorNs, server, { session }), completeCleanup); } /** @internal */ function assertUninitialized(cursor) { @@ -590,70 +598,68 @@ function assertUninitialized(cursor) { } } exports.assertUninitialized = assertUninitialized; -function makeCursorStream(cursor) { - const readable = new stream_1.Readable({ - objectMode: true, - autoDestroy: false, - highWaterMark: 1 - }); - let initialized = false; - let reading = false; - let needToClose = true; // NOTE: we must close the cursor if we never read from it, use `_construct` in future node versions - readable._read = function () { - if (initialized === false) { - needToClose = false; - initialized = true; - } - if (!reading) { - reading = true; - readNext(); - } - }; - readable._destroy = function (error, cb) { - if (needToClose) { - cursor.close(err => process.nextTick(cb, err || error)); - } - else { - cb(error); +class ReadableCursorStream extends stream_1.Readable { + constructor(cursor) { + super({ + objectMode: true, + autoDestroy: false, + highWaterMark: 1 + }); + this._readInProgress = false; + this._cursor = cursor; + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + _read(size) { + if (!this._readInProgress) { + this._readInProgress = true; + this._readNext(); } - }; - function readNext() { - needToClose = false; - next(cursor, true, (err, result) => { - needToClose = err ? !cursor.closed : result != null; + } + _destroy(error, callback) { + this._cursor.close(err => process.nextTick(callback, err || error)); + } + _readNext() { + next(this._cursor, true, (err, result) => { if (err) { // NOTE: This is questionable, but we have a test backing the behavior. It seems the // desired behavior is that a stream ends cleanly when a user explicitly closes // a client during iteration. Alternatively, we could do the "right" thing and // propagate the error message by removing this special case. if (err.message.match(/server is closed/)) { - cursor.close(); - return readable.push(null); + this._cursor.close().catch(() => null); + return this.push(null); } // NOTE: This is also perhaps questionable. The rationale here is that these errors tend - // to be "operation interrupted", where a cursor has been closed but there is an + // to be "operation was interrupted", where a cursor has been closed but there is an // active getMore in-flight. This used to check if the cursor was killed but once // that changed to happen in cleanup legitimate errors would not destroy the // stream. There are change streams test specifically test these cases. - if (err.message.match(/interrupted/)) { - return readable.push(null); + if (err.message.match(/operation was interrupted/)) { + return this.push(null); } - return readable.destroy(err); + // NOTE: The two above checks on the message of the error will cause a null to be pushed + // to the stream, thus closing the stream before the destroy call happens. This means + // that either of those error messages on a change stream will not get a proper + // 'error' event to be emitted (the error passed to destroy). Change stream resumability + // relies on that error event to be emitted to create its new cursor and thus was not + // working on 4.4 servers because the error emitted on failover was "interrupted at + // shutdown" while on 5.0+ it is "The server is in quiesce mode and will shut down". + // See NODE-4475. + return this.destroy(err); } if (result == null) { - readable.push(null); + this.push(null); } - else if (readable.destroyed) { - cursor.close(); + else if (this.destroyed) { + this._cursor.close().catch(() => null); } else { - if (readable.push(result)) { - return readNext(); + if (this.push(result)) { + return this._readNext(); } - reading = false; + this._readInProgress = false; } }); } - return readable; } //# sourceMappingURL=abstract_cursor.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cursor/abstract_cursor.js.map b/food-ordering-app/server/node_modules/mongodb/lib/cursor/abstract_cursor.js.map index 2a14e2a64..e428a6773 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/cursor/abstract_cursor.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/cursor/abstract_cursor.js.map @@ -1 +1 @@ -{"version":3,"file":"abstract_cursor.js","sourceRoot":"","sources":["../../src/cursor/abstract_cursor.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"abstract_cursor.js","sourceRoot":"","sources":["../../src/cursor/abstract_cursor.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cursor/aggregation_cursor.js b/food-ordering-app/server/node_modules/mongodb/lib/cursor/aggregation_cursor.js index ad77c58a0..81480f178 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/cursor/aggregation_cursor.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/cursor/aggregation_cursor.js @@ -160,8 +160,7 @@ class AggregationCursor extends abstract_cursor_1.AbstractCursor { this[kPipeline].push({ $unwind }); return this; } - // deprecated methods - /** @deprecated Add a geoNear stage to the aggregation pipeline */ + /** Add a geoNear stage to the aggregation pipeline */ geoNear($geoNear) { (0, abstract_cursor_1.assertUninitialized)(this); this[kPipeline].push({ $geoNear }); diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cursor/aggregation_cursor.js.map b/food-ordering-app/server/node_modules/mongodb/lib/cursor/aggregation_cursor.js.map index ed6d31ea0..ea670ddd0 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/cursor/aggregation_cursor.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/cursor/aggregation_cursor.js.map @@ -1 +1 @@ -{"version":3,"file":"aggregation_cursor.js","sourceRoot":"","sources":["../../src/cursor/aggregation_cursor.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"aggregation_cursor.js","sourceRoot":"","sources":["../../src/cursor/aggregation_cursor.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cursor/change_stream_cursor.js b/food-ordering-app/server/node_modules/mongodb/lib/cursor/change_stream_cursor.js new file mode 100644 index 000000000..471fb6cd3 --- /dev/null +++ b/food-ordering-app/server/node_modules/mongodb/lib/cursor/change_stream_cursor.js @@ -0,0 +1,115 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ChangeStreamCursor = void 0; +const change_stream_1 = require("../change_stream"); +const constants_1 = require("../constants"); +const aggregate_1 = require("../operations/aggregate"); +const execute_operation_1 = require("../operations/execute_operation"); +const utils_1 = require("../utils"); +const abstract_cursor_1 = require("./abstract_cursor"); +/** @internal */ +class ChangeStreamCursor extends abstract_cursor_1.AbstractCursor { + constructor(client, namespace, pipeline = [], options = {}) { + super(client, namespace, options); + this.pipeline = pipeline; + this.options = options; + this._resumeToken = null; + this.startAtOperationTime = options.startAtOperationTime; + if (options.startAfter) { + this.resumeToken = options.startAfter; + } + else if (options.resumeAfter) { + this.resumeToken = options.resumeAfter; + } + } + set resumeToken(token) { + this._resumeToken = token; + this.emit(change_stream_1.ChangeStream.RESUME_TOKEN_CHANGED, token); + } + get resumeToken() { + return this._resumeToken; + } + get resumeOptions() { + const options = { + ...this.options + }; + for (const key of ['resumeAfter', 'startAfter', 'startAtOperationTime']) { + delete options[key]; + } + if (this.resumeToken != null) { + if (this.options.startAfter && !this.hasReceived) { + options.startAfter = this.resumeToken; + } + else { + options.resumeAfter = this.resumeToken; + } + } + else if (this.startAtOperationTime != null && (0, utils_1.maxWireVersion)(this.server) >= 7) { + options.startAtOperationTime = this.startAtOperationTime; + } + return options; + } + cacheResumeToken(resumeToken) { + if (this.bufferedCount() === 0 && this.postBatchResumeToken) { + this.resumeToken = this.postBatchResumeToken; + } + else { + this.resumeToken = resumeToken; + } + this.hasReceived = true; + } + _processBatch(response) { + const cursor = response.cursor; + if (cursor.postBatchResumeToken) { + this.postBatchResumeToken = response.cursor.postBatchResumeToken; + const batch = 'firstBatch' in response.cursor ? response.cursor.firstBatch : response.cursor.nextBatch; + if (batch.length === 0) { + this.resumeToken = cursor.postBatchResumeToken; + } + } + } + clone() { + return new ChangeStreamCursor(this.client, this.namespace, this.pipeline, { + ...this.cursorOptions + }); + } + _initialize(session, callback) { + const aggregateOperation = new aggregate_1.AggregateOperation(this.namespace, this.pipeline, { + ...this.cursorOptions, + ...this.options, + session + }); + (0, execute_operation_1.executeOperation)(session.client, aggregateOperation, (err, response) => { + if (err || response == null) { + return callback(err); + } + const server = aggregateOperation.server; + this.maxWireVersion = (0, utils_1.maxWireVersion)(server); + if (this.startAtOperationTime == null && + this.resumeAfter == null && + this.startAfter == null && + this.maxWireVersion >= 7) { + this.startAtOperationTime = response.operationTime; + } + this._processBatch(response); + this.emit(constants_1.INIT, response); + this.emit(constants_1.RESPONSE); + // TODO: NODE-2882 + callback(undefined, { server, session, response }); + }); + } + _getMore(batchSize, callback) { + super._getMore(batchSize, (err, response) => { + if (err) { + return callback(err); + } + this.maxWireVersion = (0, utils_1.maxWireVersion)(this.server); + this._processBatch(response); + this.emit(change_stream_1.ChangeStream.MORE, response); + this.emit(change_stream_1.ChangeStream.RESPONSE); + callback(err, response); + }); + } +} +exports.ChangeStreamCursor = ChangeStreamCursor; +//# sourceMappingURL=change_stream_cursor.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cursor/change_stream_cursor.js.map b/food-ordering-app/server/node_modules/mongodb/lib/cursor/change_stream_cursor.js.map new file mode 100644 index 000000000..259e3ded1 --- /dev/null +++ b/food-ordering-app/server/node_modules/mongodb/lib/cursor/change_stream_cursor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"change_stream_cursor.js","sourceRoot":"","sources":["../../src/cursor/change_stream_cursor.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cursor/find_cursor.js b/food-ordering-app/server/node_modules/mongodb/lib/cursor/find_cursor.js index 072bf789d..22429472c 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/cursor/find_cursor.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/cursor/find_cursor.js @@ -327,7 +327,7 @@ class FindCursor extends abstract_cursor_1.AbstractCursor { if (!this[kBuiltOptions].sort) { throw new error_1.MongoInvalidArgumentError('Option "allowDiskUse" requires a sort specification'); } - // As of 6.0 the default is true. This allows users to get back to the old behaviour. + // As of 6.0 the default is true. This allows users to get back to the old behavior. if (!allow) { this[kBuiltOptions].allowDiskUse = false; return this; diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cursor/find_cursor.js.map b/food-ordering-app/server/node_modules/mongodb/lib/cursor/find_cursor.js.map index 494320a58..dae06902a 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/cursor/find_cursor.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/cursor/find_cursor.js.map @@ -1 +1 @@ -{"version":3,"file":"find_cursor.js","sourceRoot":"","sources":["../../src/cursor/find_cursor.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"find_cursor.js","sourceRoot":"","sources":["../../src/cursor/find_cursor.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cursor/list_collections_cursor.js b/food-ordering-app/server/node_modules/mongodb/lib/cursor/list_collections_cursor.js new file mode 100644 index 000000000..883474b08 --- /dev/null +++ b/food-ordering-app/server/node_modules/mongodb/lib/cursor/list_collections_cursor.js @@ -0,0 +1,37 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ListCollectionsCursor = void 0; +const execute_operation_1 = require("../operations/execute_operation"); +const list_collections_1 = require("../operations/list_collections"); +const abstract_cursor_1 = require("./abstract_cursor"); +/** @public */ +class ListCollectionsCursor extends abstract_cursor_1.AbstractCursor { + constructor(db, filter, options) { + super(db.s.client, db.s.namespace, options); + this.parent = db; + this.filter = filter; + this.options = options; + } + clone() { + return new ListCollectionsCursor(this.parent, this.filter, { + ...this.options, + ...this.cursorOptions + }); + } + /** @internal */ + _initialize(session, callback) { + const operation = new list_collections_1.ListCollectionsOperation(this.parent, this.filter, { + ...this.cursorOptions, + ...this.options, + session + }); + (0, execute_operation_1.executeOperation)(this.parent.s.client, operation, (err, response) => { + if (err || response == null) + return callback(err); + // TODO: NODE-2882 + callback(undefined, { server: operation.server, session, response }); + }); + } +} +exports.ListCollectionsCursor = ListCollectionsCursor; +//# sourceMappingURL=list_collections_cursor.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cursor/list_collections_cursor.js.map b/food-ordering-app/server/node_modules/mongodb/lib/cursor/list_collections_cursor.js.map new file mode 100644 index 000000000..2f8ecbe33 --- /dev/null +++ b/food-ordering-app/server/node_modules/mongodb/lib/cursor/list_collections_cursor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"list_collections_cursor.js","sourceRoot":"","sources":["../../src/cursor/list_collections_cursor.ts"],"names":[],"mappings":";;;AAEA,uEAAoF;AACpF,qEAIwC;AAGxC,uDAAmD;AAEnD,cAAc;AACd,MAAa,qBAIX,SAAQ,gCAAiB;IAKzB,YAAY,EAAM,EAAE,MAAgB,EAAE,OAAgC;QACpE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK;QACH,OAAO,IAAI,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;YACzD,GAAG,IAAI,CAAC,OAAO;YACf,GAAG,IAAI,CAAC,aAAa;SACtB,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;IAChB,WAAW,CAAC,OAAkC,EAAE,QAAmC;QACjF,MAAM,SAAS,GAAG,IAAI,2CAAwB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;YACvE,GAAG,IAAI,CAAC,aAAa;YACrB,GAAG,IAAI,CAAC,OAAO;YACf,OAAO;SACR,CAAC,CAAC;QAEH,IAAA,oCAAgB,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;YAClE,IAAI,GAAG,IAAI,QAAQ,IAAI,IAAI;gBAAE,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;YAElD,kBAAkB;YAClB,QAAQ,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAtCD,sDAsCC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cursor/list_indexes_cursor.js b/food-ordering-app/server/node_modules/mongodb/lib/cursor/list_indexes_cursor.js new file mode 100644 index 000000000..7d62d78fd --- /dev/null +++ b/food-ordering-app/server/node_modules/mongodb/lib/cursor/list_indexes_cursor.js @@ -0,0 +1,36 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ListIndexesCursor = void 0; +const execute_operation_1 = require("../operations/execute_operation"); +const indexes_1 = require("../operations/indexes"); +const abstract_cursor_1 = require("./abstract_cursor"); +/** @public */ +class ListIndexesCursor extends abstract_cursor_1.AbstractCursor { + constructor(collection, options) { + super(collection.s.db.s.client, collection.s.namespace, options); + this.parent = collection; + this.options = options; + } + clone() { + return new ListIndexesCursor(this.parent, { + ...this.options, + ...this.cursorOptions + }); + } + /** @internal */ + _initialize(session, callback) { + const operation = new indexes_1.ListIndexesOperation(this.parent, { + ...this.cursorOptions, + ...this.options, + session + }); + (0, execute_operation_1.executeOperation)(this.parent.s.db.s.client, operation, (err, response) => { + if (err || response == null) + return callback(err); + // TODO: NODE-2882 + callback(undefined, { server: operation.server, session, response }); + }); + } +} +exports.ListIndexesCursor = ListIndexesCursor; +//# sourceMappingURL=list_indexes_cursor.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/cursor/list_indexes_cursor.js.map b/food-ordering-app/server/node_modules/mongodb/lib/cursor/list_indexes_cursor.js.map new file mode 100644 index 000000000..f17b57685 --- /dev/null +++ b/food-ordering-app/server/node_modules/mongodb/lib/cursor/list_indexes_cursor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"list_indexes_cursor.js","sourceRoot":"","sources":["../../src/cursor/list_indexes_cursor.ts"],"names":[],"mappings":";;;AACA,uEAAoF;AACpF,mDAAiF;AAGjF,uDAAmD;AAEnD,cAAc;AACd,MAAa,iBAAkB,SAAQ,gCAAc;IAInD,YAAY,UAAsB,EAAE,OAA4B;QAC9D,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK;QACH,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE;YACxC,GAAG,IAAI,CAAC,OAAO;YACf,GAAG,IAAI,CAAC,aAAa;SACtB,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;IAChB,WAAW,CAAC,OAAkC,EAAE,QAAmC;QACjF,MAAM,SAAS,GAAG,IAAI,8BAAoB,CAAC,IAAI,CAAC,MAAM,EAAE;YACtD,GAAG,IAAI,CAAC,aAAa;YACrB,GAAG,IAAI,CAAC,OAAO;YACf,OAAO;SACR,CAAC,CAAC;QAEH,IAAA,oCAAgB,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;YACvE,IAAI,GAAG,IAAI,QAAQ,IAAI,IAAI;gBAAE,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;YAElD,kBAAkB;YAClB,QAAQ,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAhCD,8CAgCC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/db.js b/food-ordering-app/server/node_modules/mongodb/lib/db.js index 0fcadb4e4..dffabecc0 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/db.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/db.js @@ -7,6 +7,7 @@ const change_stream_1 = require("./change_stream"); const collection_1 = require("./collection"); const CONSTANTS = require("./constants"); const aggregation_cursor_1 = require("./cursor/aggregation_cursor"); +const list_collections_cursor_1 = require("./cursor/list_collections_cursor"); const error_1 = require("./error"); const logger_1 = require("./logger"); const add_user_1 = require("./operations/add_user"); @@ -15,7 +16,6 @@ const create_collection_1 = require("./operations/create_collection"); const drop_1 = require("./operations/drop"); const execute_operation_1 = require("./operations/execute_operation"); const indexes_1 = require("./operations/indexes"); -const list_collections_1 = require("./operations/list_collections"); const profiling_level_1 = require("./operations/profiling_level"); const remove_user_1 = require("./operations/remove_user"); const rename_1 = require("./operations/rename"); @@ -56,18 +56,21 @@ const DB_OPTIONS_ALLOW_LIST = [ * @public * * @example - * ```js - * const { MongoClient } = require('mongodb'); - * // Connection url - * const url = 'mongodb://localhost:27017'; - * // Database Name - * const dbName = 'test'; - * // Connect using MongoClient - * MongoClient.connect(url, function(err, client) { - * // Select the database by name - * const testDb = client.db(dbName); - * client.close(); - * }); + * ```ts + * import { MongoClient } from 'mongodb'; + * + * interface Pet { + * name: string; + * kind: 'dog' | 'cat' | 'fish'; + * } + * + * const client = new MongoClient('mongodb://localhost:27017'); + * const db = client.db(); + * + * // Create a collection that validates our union + * await db.createCollection('pets', { + * validator: { $expr: { $in: ['$kind', ['dog', 'cat', 'fish']] } } + * }) * ``` */ class Db { @@ -202,7 +205,7 @@ class Db { return (0, execute_operation_1.executeOperation)(this.s.client, new stats_1.DbStatsOperation(this, (0, utils_1.resolveOptions)(this, options)), callback); } listCollections(filter = {}, options = {}) { - return new list_collections_1.ListCollectionsCursor(this, filter, (0, utils_1.resolveOptions)(this, options)); + return new list_collections_cursor_1.ListCollectionsCursor(this, filter, (0, utils_1.resolveOptions)(this, options)); } renameCollection(fromCollection, toCollection, options, callback) { if (typeof options === 'function') @@ -284,7 +287,7 @@ class Db { * changes to system collections. * * @remarks - * watch() accepts two generic arguments for distinct usecases: + * watch() accepts two generic arguments for distinct use cases: * - The first is to provide the schema that may be defined for all the collections within this database * - The second is to override the shape of the change stream document entirely, if it is not provided the type will default to ChangeStreamDocument of the first argument * @@ -301,10 +304,14 @@ class Db { } return new change_stream_1.ChangeStream(this, pipeline, (0, utils_1.resolveOptions)(this, options)); } - /** Return the db logger */ + /** + * Return the db logger + * @deprecated The Legacy Logger is deprecated and will be removed in the next major version. + */ getLogger() { return this.s.logger; } + /** @deprecated The Legacy Logger is deprecated and will be removed in the next major version. */ get logger() { return this.s.logger; } diff --git a/food-ordering-app/server/node_modules/mongodb/lib/db.js.map b/food-ordering-app/server/node_modules/mongodb/lib/db.js.map index d701a292f..bd9c61645 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/db.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/db.js.map @@ -1 +1 @@ -{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/deps.js b/food-ordering-app/server/node_modules/mongodb/lib/deps.js index 6a73e6322..33e6cc586 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/deps.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/deps.js @@ -1,6 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.AutoEncryptionLoggerLevel = exports.aws4 = exports.saslprep = exports.Snappy = exports.ZStandard = exports.Kerberos = exports.PKG_VERSION = void 0; +exports.AutoEncryptionLoggerLevel = exports.aws4 = exports.saslprep = exports.Snappy = exports.getAwsCredentialProvider = exports.ZStandard = exports.Kerberos = exports.PKG_VERSION = void 0; const error_1 = require("./error"); const utils_1 = require("./utils"); exports.PKG_VERSION = Symbol('kPkgVersion'); @@ -29,6 +29,18 @@ try { exports.ZStandard = require('@mongodb-js/zstd'); } catch { } // eslint-disable-line +function getAwsCredentialProvider() { + try { + // Ensure you always wrap an optional require in the try block NODE-3199 + const credentialProvider = require('@aws-sdk/credential-providers'); + return credentialProvider; + } + catch { + return makeErrorModule(new error_1.MongoMissingDependencyError('Optional module `@aws-sdk/credential-providers` not found.' + + ' Please install it to enable getting aws credentials via the official sdk.')); + } +} +exports.getAwsCredentialProvider = getAwsCredentialProvider; exports.Snappy = makeErrorModule(new error_1.MongoMissingDependencyError('Optional module `snappy` not found. Please install it to enable snappy compression')); try { // Ensure you always wrap an optional require in the try block NODE-3199 @@ -39,11 +51,11 @@ try { catch { } // eslint-disable-line } catch { } // eslint-disable-line -exports.saslprep = makeErrorModule(new error_1.MongoMissingDependencyError('Optional module `saslprep` not found.' + +exports.saslprep = makeErrorModule(new error_1.MongoMissingDependencyError('Optional module `@mongodb-js/saslprep` not found.' + ' Please install it to enable Stringprep Profile for User Names and Passwords')); try { // Ensure you always wrap an optional require in the try block NODE-3199 - exports.saslprep = require('saslprep'); + exports.saslprep = require('@mongodb-js/saslprep'); } catch { } // eslint-disable-line exports.aws4 = makeErrorModule(new error_1.MongoMissingDependencyError('Optional module `aws4` not found. Please install it to enable AWS authentication')); diff --git a/food-ordering-app/server/node_modules/mongodb/lib/deps.js.map b/food-ordering-app/server/node_modules/mongodb/lib/deps.js.map index e3e0228c5..ca5f4838f 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/deps.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/deps.js.map @@ -1 +1 @@ -{"version":3,"file":"deps.js","sourceRoot":"","sources":["../src/deps.ts"],"names":[],"mappings":";;;AAGA,mCAAsD;AAEtD,mCAAwD;AAE3C,QAAA,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAEjD,SAAS,eAAe,CAAC,KAAU;IACjC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACnD,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;QACtB,GAAG,EAAE,CAAC,CAAM,EAAE,GAAQ,EAAE,EAAE;YACxB,IAAI,GAAG,KAAK,cAAc,EAAE;gBAC1B,OAAO,KAAK,CAAC;aACd;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QACD,GAAG,EAAE,GAAG,EAAE;YACR,MAAM,KAAK,CAAC;QACd,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAEU,QAAA,QAAQ,GACjB,eAAe,CACb,IAAI,mCAA2B,CAC7B,2FAA2F,CAC5F,CACF,CAAC;AAEJ,IAAI;IACF,wEAAwE;IACxE,gBAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAChC;AAAC,MAAM,GAAE,CAAC,sBAAsB;AAyBtB,QAAA,SAAS,GAClB,eAAe,CACb,IAAI,mCAA2B,CAC7B,4FAA4F,CAC7F,CACF,CAAC;AAEJ,IAAI;IACF,iBAAS,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACzC;AAAC,MAAM,GAAE,CAAC,sBAAsB;AAyCtB,QAAA,MAAM,GAA8D,eAAe,CAC5F,IAAI,mCAA2B,CAC7B,oFAAoF,CACrF,CACF,CAAC;AAEF,IAAI;IACF,wEAAwE;IACxE,cAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,IAAI;QACD,cAAc,CAAC,mBAAW,CAAC,GAAG,IAAA,2BAAmB,EAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC;KACpF;IAAC,MAAM,GAAE,CAAC,sBAAsB;CAClC;AAAC,MAAM,GAAE,CAAC,sBAAsB;AAEtB,QAAA,QAAQ,GACjB,eAAe,CACb,IAAI,mCAA2B,CAC7B,uCAAuC;IACrC,8EAA8E,CACjF,CACF,CAAC;AAEJ,IAAI;IACF,wEAAwE;IACxE,gBAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAChC;AAAC,MAAM,GAAE,CAAC,sBAAsB;AA0CtB,QAAA,IAAI,GAAyD,eAAe,CACrF,IAAI,mCAA2B,CAC7B,kFAAkF,CACnF,CACF,CAAC;AAEF,IAAI;IACF,wEAAwE;IACxE,YAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACxB;AAAC,MAAM,GAAE,CAAC,sBAAsB;AAEjC,cAAc;AACD,QAAA,yBAAyB,GAAG,MAAM,CAAC,MAAM,CAAC;IACrD,UAAU,EAAE,CAAC;IACb,KAAK,EAAE,CAAC;IACR,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;CACA,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"deps.js","sourceRoot":"","sources":["../src/deps.ts"],"names":[],"mappings":";;;AAIA,mCAAsD;AAEtD,mCAAwD;AAE3C,QAAA,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAEjD,SAAS,eAAe,CAAC,KAAU;IACjC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACnD,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;QACtB,GAAG,EAAE,CAAC,CAAM,EAAE,GAAQ,EAAE,EAAE;YACxB,IAAI,GAAG,KAAK,cAAc,EAAE;gBAC1B,OAAO,KAAK,CAAC;aACd;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QACD,GAAG,EAAE,GAAG,EAAE;YACR,MAAM,KAAK,CAAC;QACd,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAEU,QAAA,QAAQ,GACjB,eAAe,CACb,IAAI,mCAA2B,CAC7B,2FAA2F,CAC5F,CACF,CAAC;AAEJ,IAAI;IACF,wEAAwE;IACxE,gBAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAChC;AAAC,MAAM,GAAE,CAAC,sBAAsB;AAwBtB,QAAA,SAAS,GAClB,eAAe,CACb,IAAI,mCAA2B,CAC7B,4FAA4F,CAC7F,CACF,CAAC;AAEJ,IAAI;IACF,iBAAS,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACzC;AAAC,MAAM,GAAE,CAAC,sBAAsB;AAMjC,SAAgB,wBAAwB;IAGtC,IAAI;QACF,wEAAwE;QACxE,MAAM,kBAAkB,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;QACpE,OAAO,kBAAkB,CAAC;KAC3B;IAAC,MAAM;QACN,OAAO,eAAe,CACpB,IAAI,mCAA2B,CAC7B,4DAA4D;YAC1D,4EAA4E,CAC/E,CACF,CAAC;KACH;AACH,CAAC;AAfD,4DAeC;AAgCU,QAAA,MAAM,GAA8D,eAAe,CAC5F,IAAI,mCAA2B,CAC7B,oFAAoF,CACrF,CACF,CAAC;AAEF,IAAI;IACF,wEAAwE;IACxE,cAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,IAAI;QACD,cAAc,CAAC,mBAAW,CAAC,GAAG,IAAA,2BAAmB,EAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC;KACpF;IAAC,MAAM,GAAE,CAAC,sBAAsB;CAClC;AAAC,MAAM,GAAE,CAAC,sBAAsB;AAEtB,QAAA,QAAQ,GAEiC,eAAe,CACjE,IAAI,mCAA2B,CAC7B,mDAAmD;IACjD,8EAA8E,CACjF,CACF,CAAC;AAEF,IAAI;IACF,wEAAwE;IACxE,gBAAQ,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;CAC5C;AAAC,MAAM,GAAE,CAAC,sBAAsB;AA2CtB,QAAA,IAAI,GAAyD,eAAe,CACrF,IAAI,mCAA2B,CAC7B,kFAAkF,CACnF,CACF,CAAC;AAEF,IAAI;IACF,wEAAwE;IACxE,YAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACxB;AAAC,MAAM,GAAE,CAAC,sBAAsB;AAEjC,cAAc;AACD,QAAA,yBAAyB,GAAG,MAAM,CAAC,MAAM,CAAC;IACrD,UAAU,EAAE,CAAC;IACb,KAAK,EAAE,CAAC;IACR,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;CACA,CAAC,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/encrypter.js b/food-ordering-app/server/node_modules/mongodb/lib/encrypter.js index 624da54c7..d506b6499 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/encrypter.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/encrypter.js @@ -6,6 +6,7 @@ const bson_1 = require("./bson"); const constants_1 = require("./constants"); const error_1 = require("./error"); const mongo_client_1 = require("./mongo_client"); +const utils_1 = require("./utils"); let AutoEncrypterClass; /** @internal */ const kInternalClient = Symbol('internalClient'); @@ -77,14 +78,13 @@ class Encrypter { } return internalClient; } - connectInternalClient(callback) { + async connectInternalClient() { // TODO(NODE-4144): Remove new variable for type narrowing const internalClient = this[kInternalClient]; if (this.needsConnecting && internalClient != null) { this.needsConnecting = false; - return internalClient.connect(callback); + await internalClient.connect(); } - return callback(); } close(client, force, callback) { this.autoEncrypter.teardown(!!force, e => { @@ -96,19 +96,8 @@ class Encrypter { }); } static checkForMongoCrypt() { - let mongodbClientEncryption = undefined; - // Ensure you always wrap an optional require in the try block NODE-3199 - try { - // Note (NODE-4254): This is to get around the circular dependency between - // mongodb-client-encryption and the driver in the test scenarios. - if (process.env.MONGODB_CLIENT_ENCRYPTION_OVERRIDE) { - mongodbClientEncryption = require(process.env.MONGODB_CLIENT_ENCRYPTION_OVERRIDE); - } - else { - mongodbClientEncryption = require('mongodb-client-encryption'); - } - } - catch (err) { + const mongodbClientEncryption = (0, utils_1.getMongoDBClientEncryption)(); + if (mongodbClientEncryption == null) { throw new error_1.MongoMissingDependencyError('Auto-encryption requested, but the module is not installed. ' + 'Please add `mongodb-client-encryption` as a dependency of your project'); } diff --git a/food-ordering-app/server/node_modules/mongodb/lib/encrypter.js.map b/food-ordering-app/server/node_modules/mongodb/lib/encrypter.js.map index c4fd5ae22..7f578a426 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/encrypter.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/encrypter.js.map @@ -1 +1 @@ -{"version":3,"file":"encrypter.js","sourceRoot":"","sources":["../src/encrypter.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"encrypter.js","sourceRoot":"","sources":["../src/encrypter.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/error.js b/food-ordering-app/server/node_modules/mongodb/lib/error.js index cf28508db..0ed05a4b3 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/error.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/error.js @@ -76,25 +76,41 @@ exports.MongoErrorLabel = Object.freeze({ TransientTransactionError: 'TransientTransactionError', UnknownTransactionCommitResult: 'UnknownTransactionCommitResult', ResumableChangeStreamError: 'ResumableChangeStreamError', - HandshakeError: 'HandshakeError' + HandshakeError: 'HandshakeError', + ResetPool: 'ResetPool', + InterruptInUseConnections: 'InterruptInUseConnections', + NoWritesPerformed: 'NoWritesPerformed' }); +function isAggregateError(e) { + return 'errors' in e && Array.isArray(e.errors); +} /** * @public * @category Error * * @privateRemarks - * CSFLE has a dependency on this error, it uses the constructor with a string argument + * mongodb-client-encryption has a dependency on this error, it uses the constructor with a string argument */ class MongoError extends Error { constructor(message) { + super(MongoError.buildErrorMessage(message)); if (message instanceof Error) { - super(message.message); - } - else { - super(message); + this.cause = message; } this[kErrorLabels] = new Set(); } + /** @internal */ + static buildErrorMessage(e) { + if (typeof e === 'string') { + return e; + } + if (isAggregateError(e) && e.message.length === 0) { + return e.errors.length === 0 + ? 'AggregateError has an empty errors array. Please check the `cause` property for more information.' + : e.errors.map(({ message }) => message).join(', '); + } + return e.message; + } get name() { return 'MongoError'; } @@ -482,7 +498,7 @@ exports.MongoNetworkError = MongoNetworkError; * @category Error * * @privateRemarks - * CSFLE has a dependency on this error with an instanceof check + * mongodb-client-encryption has a dependency on this error with an instanceof check */ class MongoNetworkTimeoutError extends MongoNetworkError { constructor(message, options) { diff --git a/food-ordering-app/server/node_modules/mongodb/lib/error.js.map b/food-ordering-app/server/node_modules/mongodb/lib/error.js.map index c02c2d88e..db5eaaba1 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/error.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/error.js.map @@ -1 +1 @@ -{"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/gridfs/download.js b/food-ordering-app/server/node_modules/mongodb/lib/gridfs/download.js index ad7c2d08f..3702b6d30 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/gridfs/download.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/gridfs/download.js @@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.GridFSBucketReadStream = void 0; const stream_1 = require("stream"); const error_1 = require("../error"); +const utils_1 = require("../utils"); /** * A readable stream that enables you to read buffers from GridFS. * @@ -10,11 +11,12 @@ const error_1 = require("../error"); * @public */ class GridFSBucketReadStream extends stream_1.Readable { - /** @internal + /** * @param chunks - Handle for chunks collection * @param files - Handle for files collection * @param readPreference - The read preference to use * @param filter - The filter to use to find the file document + * @internal */ constructor(chunks, files, readPreference, filter, options) { super(); @@ -70,30 +72,24 @@ class GridFSBucketReadStream extends stream_1.Readable { this.s.options.end = end; return this; } - /** - * Marks this stream as aborted (will never push another `data` event) - * and kills the underlying cursor. Will emit the 'end' event, and then - * the 'close' event once the cursor is successfully killed. - * - * @param callback - called when the cursor is successfully closed or an error occurred. - */ abort(callback) { - this.push(null); - this.destroyed = true; - if (this.s.cursor) { - this.s.cursor.close(error => { - this.emit(GridFSBucketReadStream.CLOSE); - callback && callback(error); - }); - } - else { - if (!this.s.init) { - // If not initialized, fire close event because we will never - // get a cursor - this.emit(GridFSBucketReadStream.CLOSE); + return (0, utils_1.maybeCallback)(async () => { + this.push(null); + this.destroyed = true; + if (this.s.cursor) { + await this.s.cursor.close().catch(error => { + this.emit(GridFSBucketReadStream.CLOSE); + throw error; + }); } - callback && callback(); - } + else { + if (!this.s.init) { + // If not initialized, fire close event because we will never + // get a cursor + this.emit(GridFSBucketReadStream.CLOSE); + } + } + }, callback); } } exports.GridFSBucketReadStream = GridFSBucketReadStream; @@ -144,16 +140,14 @@ function doRead(stream) { } if (!doc) { stream.push(null); - process.nextTick(() => { - if (!stream.s.cursor) + if (!stream.s.cursor) + return; + stream.s.cursor.close(error => { + if (error) { + stream.emit(GridFSBucketReadStream.ERROR, error); return; - stream.s.cursor.close(error => { - if (error) { - stream.emit(GridFSBucketReadStream.ERROR, error); - return; - } - stream.emit(GridFSBucketReadStream.CLOSE); - }); + } + stream.emit(GridFSBucketReadStream.CLOSE); }); return; } diff --git a/food-ordering-app/server/node_modules/mongodb/lib/gridfs/download.js.map b/food-ordering-app/server/node_modules/mongodb/lib/gridfs/download.js.map index a06049afc..dcf2d5f70 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/gridfs/download.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/gridfs/download.js.map @@ -1 +1 @@ -{"version":3,"file":"download.js","sourceRoot":"","sources":["../../src/gridfs/download.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"download.js","sourceRoot":"","sources":["../../src/gridfs/download.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/gridfs/index.js b/food-ordering-app/server/node_modules/mongodb/lib/gridfs/index.js index cfe89d060..d65b5c11b 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/gridfs/index.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/gridfs/index.js @@ -57,25 +57,16 @@ class GridFSBucket extends mongo_types_1.TypedEventEmitter { return new download_1.GridFSBucketReadStream(this.s._chunksCollection, this.s._filesCollection, this.s.options.readPreference, { _id: id }, options); } delete(id, callback) { - return (0, utils_1.maybePromise)(callback, callback => { - return this.s._filesCollection.deleteOne({ _id: id }, (error, res) => { - if (error) { - return callback(error); - } - return this.s._chunksCollection.deleteMany({ files_id: id }, error => { - if (error) { - return callback(error); - } - // Delete orphaned chunks before returning FileNotFound - if (!(res === null || res === void 0 ? void 0 : res.deletedCount)) { - // TODO(NODE-3483): Replace with more appropriate error - // Consider creating new error MongoGridFSFileNotFoundError - return callback(new error_1.MongoRuntimeError(`File not found for id ${id}`)); - } - return callback(); - }); - }); - }); + return (0, utils_1.maybeCallback)(async () => { + const { deletedCount } = await this.s._filesCollection.deleteOne({ _id: id }); + // Delete orphaned chunks before returning FileNotFound + await this.s._chunksCollection.deleteMany({ files_id: id }); + if (deletedCount === 0) { + // TODO(NODE-3483): Replace with more appropriate error + // Consider creating new error MongoGridFSFileNotFoundError + throw new error_1.MongoRuntimeError(`File not found for id ${id}`); + } + }, callback); } /** Convenience wrapper around find on the files collection */ find(filter, options) { @@ -105,36 +96,26 @@ class GridFSBucket extends mongo_types_1.TypedEventEmitter { return new download_1.GridFSBucketReadStream(this.s._chunksCollection, this.s._filesCollection, this.s.options.readPreference, { filename }, { ...options, sort, skip }); } rename(id, filename, callback) { - return (0, utils_1.maybePromise)(callback, callback => { + return (0, utils_1.maybeCallback)(async () => { const filter = { _id: id }; const update = { $set: { filename } }; - return this.s._filesCollection.updateOne(filter, update, (error, res) => { - if (error) { - return callback(error); - } - if (!(res === null || res === void 0 ? void 0 : res.matchedCount)) { - return callback(new error_1.MongoRuntimeError(`File with id ${id} not found`)); - } - return callback(); - }); - }); + const { matchedCount } = await this.s._filesCollection.updateOne(filter, update); + if (matchedCount === 0) { + throw new error_1.MongoRuntimeError(`File with id ${id} not found`); + } + }, callback); } drop(callback) { - return (0, utils_1.maybePromise)(callback, callback => { - return this.s._filesCollection.drop(error => { - if (error) { - return callback(error); - } - return this.s._chunksCollection.drop(error => { - if (error) { - return callback(error); - } - return callback(); - }); - }); - }); + return (0, utils_1.maybeCallback)(async () => { + await this.s._filesCollection.drop(); + await this.s._chunksCollection.drop(); + }, callback); } - /** Get the Db scoped logger. */ + /** + * Get the Db scoped logger. + * + * @deprecated Legacy Logger is deprecated and will be removed in the next major version. + */ getLogger() { return this.s.db.s.logger; } diff --git a/food-ordering-app/server/node_modules/mongodb/lib/gridfs/index.js.map b/food-ordering-app/server/node_modules/mongodb/lib/gridfs/index.js.map index 861e3b8c2..015e6dda4 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/gridfs/index.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/gridfs/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/gridfs/index.ts"],"names":[],"mappings":";;;AAIA,oCAA6C;AAE7C,gDAA2D;AAG3D,oCAAkD;AAClD,oDAAqE;AAErE,yCAKoB;AACpB,qCAAgG;AAEhG,MAAM,6BAA6B,GAG/B;IACF,UAAU,EAAE,IAAI;IAChB,cAAc,EAAE,GAAG,GAAG,IAAI;CAC3B,CAAC;AAgCF;;;GAGG;AACH,MAAa,YAAa,SAAQ,+BAAqC;IAcrE,YAAY,EAAM,EAAE,OAA6B;QAC/C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,cAAc,GAAG;YACrB,GAAG,6BAA6B;YAChC,GAAG,OAAO;YACV,YAAY,EAAE,4BAAY,CAAC,WAAW,CAAC,OAAO,CAAC;SAChD,CAAC;QACF,IAAI,CAAC,CAAC,GAAG;YACP,EAAE;YACF,OAAO,EAAE,cAAc;YACvB,iBAAiB,EAAE,EAAE,CAAC,UAAU,CAAc,cAAc,CAAC,UAAU,GAAG,SAAS,CAAC;YACpF,gBAAgB,EAAE,EAAE,CAAC,UAAU,CAAa,cAAc,CAAC,UAAU,GAAG,QAAQ,CAAC;YACjF,cAAc,EAAE,KAAK;YACrB,sBAAsB,EAAE,KAAK;SAC9B,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IAEH,gBAAgB,CACd,QAAgB,EAChB,OAAwC;QAExC,OAAO,IAAI,gCAAuB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED;;;;OAIG;IACH,sBAAsB,CACpB,EAAY,EACZ,QAAgB,EAChB,OAAwC;QAExC,OAAO,IAAI,gCAAuB,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,8FAA8F;IAC9F,kBAAkB,CAChB,EAAY,EACZ,OAAuC;QAEvC,OAAO,IAAI,iCAAsB,CAC/B,IAAI,CAAC,CAAC,CAAC,iBAAiB,EACxB,IAAI,CAAC,CAAC,CAAC,gBAAgB,EACvB,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAC7B,EAAE,GAAG,EAAE,EAAE,EAAE,EACX,OAAO,CACR,CAAC;IACJ,CAAC;IASD,MAAM,CAAC,EAAY,EAAE,QAAyB;QAC5C,OAAO,IAAA,oBAAY,EAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE;YACvC,OAAO,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBACnE,IAAI,KAAK,EAAE;oBACT,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;iBACxB;gBAED,OAAO,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE;oBACnE,IAAI,KAAK,EAAE;wBACT,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;qBACxB;oBAED,uDAAuD;oBACvD,IAAI,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,YAAY,CAAA,EAAE;wBACtB,uDAAuD;wBACvD,2DAA2D;wBAC3D,OAAO,QAAQ,CAAC,IAAI,yBAAiB,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC,CAAC;qBACvE;oBAED,OAAO,QAAQ,EAAE,CAAC;gBACpB,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,8DAA8D;IAC9D,IAAI,CAAC,MAA2B,EAAE,OAAqB;QACrD,MAAM,aAAN,MAAM,cAAN,MAAM,IAAN,MAAM,GAAK,EAAE,EAAC;QACd,OAAO,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IAED;;;;;;OAMG;IACH,wBAAwB,CACtB,QAAgB,EAChB,OAAmD;QAEnD,IAAI,IAAI,GAAS,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC;QACpC,IAAI,IAAI,GAAG,SAAS,CAAC;QACrB,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,IAAI,IAAI,EAAE;YACvC,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,EAAE;gBACzB,IAAI,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;gBACzB,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC;aACzB;iBAAM;gBACL,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;aAC9B;SACF;QACD,OAAO,IAAI,iCAAsB,CAC/B,IAAI,CAAC,CAAC,CAAC,iBAAiB,EACxB,IAAI,CAAC,CAAC,CAAC,gBAAgB,EACvB,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAC7B,EAAE,QAAQ,EAAE,EACZ,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAC3B,CAAC;IACJ,CAAC;IAUD,MAAM,CAAC,EAAY,EAAE,QAAgB,EAAE,QAAyB;QAC9D,OAAO,IAAA,oBAAY,EAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE;YACvC,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,KAAM,EAAE,GAAI,EAAE,EAAE;gBACxE,IAAI,KAAK,EAAE;oBACT,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;iBACxB;gBAED,IAAI,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,YAAY,CAAA,EAAE;oBACtB,OAAO,QAAQ,CAAC,IAAI,yBAAiB,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC,CAAC;iBACxE;gBAED,OAAO,QAAQ,EAAE,CAAC;YACpB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAKD,IAAI,CAAC,QAAyB;QAC5B,OAAO,IAAA,oBAAY,EAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE;YACvC,OAAO,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBAC1C,IAAI,KAAK,EAAE;oBACT,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;iBACxB;gBACD,OAAO,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;oBAC3C,IAAI,KAAK,EAAE;wBACT,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;qBACxB;oBAED,OAAO,QAAQ,EAAE,CAAC;gBACpB,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,gCAAgC;IAChC,SAAS;QACP,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IAC5B,CAAC;;AAjMH,oCAkMC;AA9LC;;;;;;;GAOG;AACa,kBAAK,GAAG,OAAgB,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/gridfs/index.ts"],"names":[],"mappings":";;;AAIA,oCAA6C;AAE7C,gDAA2D;AAG3D,oCAAmD;AACnD,oDAAqE;AAErE,yCAKoB;AACpB,qCAAgG;AAEhG,MAAM,6BAA6B,GAG/B;IACF,UAAU,EAAE,IAAI;IAChB,cAAc,EAAE,GAAG,GAAG,IAAI;CAC3B,CAAC;AAgCF;;;GAGG;AACH,MAAa,YAAa,SAAQ,+BAAqC;IAcrE,YAAY,EAAM,EAAE,OAA6B;QAC/C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,cAAc,GAAG;YACrB,GAAG,6BAA6B;YAChC,GAAG,OAAO;YACV,YAAY,EAAE,4BAAY,CAAC,WAAW,CAAC,OAAO,CAAC;SAChD,CAAC;QACF,IAAI,CAAC,CAAC,GAAG;YACP,EAAE;YACF,OAAO,EAAE,cAAc;YACvB,iBAAiB,EAAE,EAAE,CAAC,UAAU,CAAc,cAAc,CAAC,UAAU,GAAG,SAAS,CAAC;YACpF,gBAAgB,EAAE,EAAE,CAAC,UAAU,CAAa,cAAc,CAAC,UAAU,GAAG,QAAQ,CAAC;YACjF,cAAc,EAAE,KAAK;YACrB,sBAAsB,EAAE,KAAK;SAC9B,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IAEH,gBAAgB,CACd,QAAgB,EAChB,OAAwC;QAExC,OAAO,IAAI,gCAAuB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED;;;;OAIG;IACH,sBAAsB,CACpB,EAAY,EACZ,QAAgB,EAChB,OAAwC;QAExC,OAAO,IAAI,gCAAuB,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,8FAA8F;IAC9F,kBAAkB,CAChB,EAAY,EACZ,OAAuC;QAEvC,OAAO,IAAI,iCAAsB,CAC/B,IAAI,CAAC,CAAC,CAAC,iBAAiB,EACxB,IAAI,CAAC,CAAC,CAAC,gBAAgB,EACvB,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAC7B,EAAE,GAAG,EAAE,EAAE,EAAE,EACX,OAAO,CACR,CAAC;IACJ,CAAC;IAUD,MAAM,CAAC,EAAY,EAAE,QAAyB;QAC5C,OAAO,IAAA,qBAAa,EAAC,KAAK,IAAI,EAAE;YAC9B,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;YAE9E,uDAAuD;YACvD,MAAM,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;YAE5D,IAAI,YAAY,KAAK,CAAC,EAAE;gBACtB,uDAAuD;gBACvD,2DAA2D;gBAC3D,MAAM,IAAI,yBAAiB,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;aAC5D;QACH,CAAC,EAAE,QAAQ,CAAC,CAAC;IACf,CAAC;IAED,8DAA8D;IAC9D,IAAI,CAAC,MAA2B,EAAE,OAAqB;QACrD,MAAM,aAAN,MAAM,cAAN,MAAM,IAAN,MAAM,GAAK,EAAE,EAAC;QACd,OAAO,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IAED;;;;;;OAMG;IACH,wBAAwB,CACtB,QAAgB,EAChB,OAAmD;QAEnD,IAAI,IAAI,GAAS,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC;QACpC,IAAI,IAAI,GAAG,SAAS,CAAC;QACrB,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,IAAI,IAAI,EAAE;YACvC,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,EAAE;gBACzB,IAAI,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;gBACzB,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC;aACzB;iBAAM;gBACL,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;aAC9B;SACF;QACD,OAAO,IAAI,iCAAsB,CAC/B,IAAI,CAAC,CAAC,CAAC,iBAAiB,EACxB,IAAI,CAAC,CAAC,CAAC,gBAAgB,EACvB,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAC7B,EAAE,QAAQ,EAAE,EACZ,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAC3B,CAAC;IACJ,CAAC;IAWD,MAAM,CAAC,EAAY,EAAE,QAAgB,EAAE,QAAyB;QAC9D,OAAO,IAAA,qBAAa,EAAC,KAAK,IAAI,EAAE;YAC9B,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC;YACtC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACjF,IAAI,YAAY,KAAK,CAAC,EAAE;gBACtB,MAAM,IAAI,yBAAiB,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;aAC7D;QACH,CAAC,EAAE,QAAQ,CAAC,CAAC;IACf,CAAC;IAMD,IAAI,CAAC,QAAyB;QAC5B,OAAO,IAAA,qBAAa,EAAC,KAAK,IAAI,EAAE;YAC9B,MAAM,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;QACxC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACf,CAAC;IAED;;;;OAIG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IAC5B,CAAC;;AA7KH,oCA8KC;AA1KC;;;;;;;GAOG;AACa,kBAAK,GAAG,OAAgB,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/gridfs/upload.js b/food-ordering-app/server/node_modules/mongodb/lib/gridfs/upload.js index 71507d377..0dd8a4a89 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/gridfs/upload.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/gridfs/upload.js @@ -13,10 +13,11 @@ const write_concern_1 = require("./../write_concern"); * @public */ class GridFSBucketWriteStream extends stream_1.Writable { - /** @internal + /** * @param bucket - Handle for this stream's corresponding bucket * @param filename - The value of the 'filename' key in the files doc * @param options - Optional settings. + * @internal */ constructor(bucket, filename, options) { super(); @@ -56,18 +57,18 @@ class GridFSBucketWriteStream extends stream_1.Writable { return waitForIndexes(this, () => doWrite(this, chunk, encoding, callback)); } abort(callback) { - return (0, utils_1.maybePromise)(callback, callback => { + return (0, utils_1.maybeCallback)(async () => { if (this.state.streamEnd) { // TODO(NODE-3485): Replace with MongoGridFSStreamClosed - return callback(new error_1.MongoAPIError('Cannot abort a stream that has already completed')); + throw new error_1.MongoAPIError('Cannot abort a stream that has already completed'); } if (this.state.aborted) { // TODO(NODE-3485): Replace with MongoGridFSStreamClosed - return callback(new error_1.MongoAPIError('Cannot call abort() on a stream twice')); + throw new error_1.MongoAPIError('Cannot call abort() on a stream twice'); } this.state.aborted = true; - this.chunks.deleteMany({ files_id: this.id }, error => callback(error)); - }); + await this.chunks.deleteMany({ files_id: this.id }); + }, callback); } end(chunkOrCallback, encodingOrCallback, callback) { const chunk = typeof chunkOrCallback === 'function' ? undefined : chunkOrCallback; diff --git a/food-ordering-app/server/node_modules/mongodb/lib/gridfs/upload.js.map b/food-ordering-app/server/node_modules/mongodb/lib/gridfs/upload.js.map index c9c6c481a..dd6071c00 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/gridfs/upload.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/gridfs/upload.js.map @@ -1 +1 @@ -{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/gridfs/upload.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/gridfs/upload.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/index.js b/food-ordering-app/server/node_modules/mongodb/lib/index.js index d806b1177..c47aee32a 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/index.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/index.js @@ -1,11 +1,17 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.AggregationCursor = exports.Admin = exports.AbstractCursor = exports.MongoWriteConcernError = exports.MongoUnexpectedServerResponseError = exports.MongoTransactionError = exports.MongoTopologyClosedError = exports.MongoTailableCursorError = exports.MongoSystemError = exports.MongoServerSelectionError = exports.MongoServerError = exports.MongoServerClosedError = exports.MongoRuntimeError = exports.MongoParseError = exports.MongoNotConnectedError = exports.MongoNetworkTimeoutError = exports.MongoNetworkError = exports.MongoMissingDependencyError = exports.MongoMissingCredentialsError = exports.MongoKerberosError = exports.MongoInvalidArgumentError = exports.MongoGridFSStreamError = exports.MongoGridFSChunkError = exports.MongoExpiredSessionError = exports.MongoError = exports.MongoDriverError = exports.MongoDecompressionError = exports.MongoCursorInUseError = exports.MongoCursorExhaustedError = exports.MongoCompatibilityError = exports.MongoChangeStreamError = exports.MongoBatchReExecutionError = exports.MongoAWSError = exports.MongoAPIError = exports.MongoBulkWriteError = exports.ObjectID = exports.Timestamp = exports.ObjectId = exports.MinKey = exports.MaxKey = exports.Map = exports.Long = exports.Int32 = exports.Double = exports.Decimal128 = exports.DBRef = exports.Code = exports.BSONSymbol = exports.BSONRegExp = exports.Binary = void 0; -exports.ServerOpeningEvent = exports.ServerHeartbeatSucceededEvent = exports.ServerHeartbeatStartedEvent = exports.ServerHeartbeatFailedEvent = exports.ServerDescriptionChangedEvent = exports.ServerClosedEvent = exports.ConnectionReadyEvent = exports.ConnectionPoolMonitoringEvent = exports.ConnectionPoolCreatedEvent = exports.ConnectionPoolClosedEvent = exports.ConnectionPoolClearedEvent = exports.ConnectionCreatedEvent = exports.ConnectionClosedEvent = exports.ConnectionCheckOutStartedEvent = exports.ConnectionCheckOutFailedEvent = exports.ConnectionCheckedOutEvent = exports.ConnectionCheckedInEvent = exports.CommandSucceededEvent = exports.CommandStartedEvent = exports.CommandFailedEvent = exports.WriteConcern = exports.ReadPreference = exports.ReadConcern = exports.TopologyType = exports.ServerType = exports.ReadPreferenceMode = exports.ReadConcernLevel = exports.ProfilingLevel = exports.ReturnDocument = exports.BSONType = exports.ServerApiVersion = exports.LoggerLevel = exports.ExplainVerbosity = exports.MongoErrorLabel = exports.AutoEncryptionLoggerLevel = exports.CURSOR_FLAGS = exports.Compressor = exports.AuthMechanism = exports.GSSAPICanonicalizationValue = exports.BatchType = exports.Promise = exports.MongoClient = exports.Logger = exports.ListIndexesCursor = exports.ListCollectionsCursor = exports.GridFSBucket = exports.FindCursor = exports.Db = exports.Collection = exports.CancellationToken = void 0; -exports.SrvPollingEvent = exports.TopologyOpeningEvent = exports.TopologyDescriptionChangedEvent = exports.TopologyClosedEvent = void 0; +exports.AbstractCursor = exports.MongoWriteConcernError = exports.MongoUnexpectedServerResponseError = exports.MongoTransactionError = exports.MongoTopologyClosedError = exports.MongoTailableCursorError = exports.MongoSystemError = exports.MongoServerSelectionError = exports.MongoServerError = exports.MongoServerClosedError = exports.MongoRuntimeError = exports.MongoParseError = exports.MongoNotConnectedError = exports.MongoNetworkTimeoutError = exports.MongoNetworkError = exports.MongoMissingDependencyError = exports.MongoMissingCredentialsError = exports.MongoKerberosError = exports.MongoInvalidArgumentError = exports.MongoGridFSStreamError = exports.MongoGridFSChunkError = exports.MongoExpiredSessionError = exports.MongoError = exports.MongoDriverError = exports.MongoDecompressionError = exports.MongoCursorInUseError = exports.MongoCursorExhaustedError = exports.MongoCompatibilityError = exports.MongoChangeStreamError = exports.MongoBatchReExecutionError = exports.MongoAWSError = exports.MongoAPIError = exports.MongoBulkWriteError = exports.ObjectID = exports.ChangeStreamCursor = exports.Timestamp = exports.ObjectId = exports.MinKey = exports.MaxKey = exports.Map = exports.Long = exports.Int32 = exports.Double = exports.Decimal128 = exports.DBRef = exports.Code = exports.BSONSymbol = exports.BSONRegExp = exports.Binary = exports.BSON = void 0; +exports.ConnectionPoolCreatedEvent = exports.ConnectionPoolClosedEvent = exports.ConnectionPoolClearedEvent = exports.ConnectionCreatedEvent = exports.ConnectionClosedEvent = exports.ConnectionCheckOutStartedEvent = exports.ConnectionCheckOutFailedEvent = exports.ConnectionCheckedOutEvent = exports.ConnectionCheckedInEvent = exports.CommandSucceededEvent = exports.CommandStartedEvent = exports.CommandFailedEvent = exports.WriteConcern = exports.ReadPreference = exports.ReadConcern = exports.TopologyType = exports.ServerType = exports.ReadPreferenceMode = exports.ReadConcernLevel = exports.ProfilingLevel = exports.ReturnDocument = exports.BSONType = exports.ServerApiVersion = exports.LoggerLevel = exports.ExplainVerbosity = exports.MongoErrorLabel = exports.AutoEncryptionLoggerLevel = exports.CURSOR_FLAGS = exports.Compressor = exports.AuthMechanism = exports.GSSAPICanonicalizationValue = exports.BatchType = exports.Promise = exports.UnorderedBulkOperation = exports.OrderedBulkOperation = exports.MongoClient = exports.Logger = exports.ListIndexesCursor = exports.ListCollectionsCursor = exports.GridFSBucketWriteStream = exports.GridFSBucketReadStream = exports.GridFSBucket = exports.FindCursor = exports.Db = exports.Collection = exports.ClientSession = exports.ChangeStream = exports.CancellationToken = exports.AggregationCursor = exports.Admin = void 0; +exports.SrvPollingEvent = exports.TopologyOpeningEvent = exports.TopologyDescriptionChangedEvent = exports.TopologyClosedEvent = exports.ServerOpeningEvent = exports.ServerHeartbeatSucceededEvent = exports.ServerHeartbeatStartedEvent = exports.ServerHeartbeatFailedEvent = exports.ServerDescriptionChangedEvent = exports.ServerClosedEvent = exports.ConnectionReadyEvent = exports.ConnectionPoolReadyEvent = exports.ConnectionPoolMonitoringEvent = void 0; const admin_1 = require("./admin"); Object.defineProperty(exports, "Admin", { enumerable: true, get: function () { return admin_1.Admin; } }); const bson_1 = require("./bson"); +const ordered_1 = require("./bulk/ordered"); +Object.defineProperty(exports, "OrderedBulkOperation", { enumerable: true, get: function () { return ordered_1.OrderedBulkOperation; } }); +const unordered_1 = require("./bulk/unordered"); +Object.defineProperty(exports, "UnorderedBulkOperation", { enumerable: true, get: function () { return unordered_1.UnorderedBulkOperation; } }); +const change_stream_1 = require("./change_stream"); +Object.defineProperty(exports, "ChangeStream", { enumerable: true, get: function () { return change_stream_1.ChangeStream; } }); const collection_1 = require("./collection"); Object.defineProperty(exports, "Collection", { enumerable: true, get: function () { return collection_1.Collection; } }); const abstract_cursor_1 = require("./cursor/abstract_cursor"); @@ -14,37 +20,48 @@ const aggregation_cursor_1 = require("./cursor/aggregation_cursor"); Object.defineProperty(exports, "AggregationCursor", { enumerable: true, get: function () { return aggregation_cursor_1.AggregationCursor; } }); const find_cursor_1 = require("./cursor/find_cursor"); Object.defineProperty(exports, "FindCursor", { enumerable: true, get: function () { return find_cursor_1.FindCursor; } }); +const list_collections_cursor_1 = require("./cursor/list_collections_cursor"); +Object.defineProperty(exports, "ListCollectionsCursor", { enumerable: true, get: function () { return list_collections_cursor_1.ListCollectionsCursor; } }); +const list_indexes_cursor_1 = require("./cursor/list_indexes_cursor"); +Object.defineProperty(exports, "ListIndexesCursor", { enumerable: true, get: function () { return list_indexes_cursor_1.ListIndexesCursor; } }); const db_1 = require("./db"); Object.defineProperty(exports, "Db", { enumerable: true, get: function () { return db_1.Db; } }); const gridfs_1 = require("./gridfs"); Object.defineProperty(exports, "GridFSBucket", { enumerable: true, get: function () { return gridfs_1.GridFSBucket; } }); +const download_1 = require("./gridfs/download"); +Object.defineProperty(exports, "GridFSBucketReadStream", { enumerable: true, get: function () { return download_1.GridFSBucketReadStream; } }); +const upload_1 = require("./gridfs/upload"); +Object.defineProperty(exports, "GridFSBucketWriteStream", { enumerable: true, get: function () { return upload_1.GridFSBucketWriteStream; } }); const logger_1 = require("./logger"); Object.defineProperty(exports, "Logger", { enumerable: true, get: function () { return logger_1.Logger; } }); const mongo_client_1 = require("./mongo_client"); Object.defineProperty(exports, "MongoClient", { enumerable: true, get: function () { return mongo_client_1.MongoClient; } }); const mongo_types_1 = require("./mongo_types"); Object.defineProperty(exports, "CancellationToken", { enumerable: true, get: function () { return mongo_types_1.CancellationToken; } }); -const indexes_1 = require("./operations/indexes"); -Object.defineProperty(exports, "ListIndexesCursor", { enumerable: true, get: function () { return indexes_1.ListIndexesCursor; } }); -const list_collections_1 = require("./operations/list_collections"); -Object.defineProperty(exports, "ListCollectionsCursor", { enumerable: true, get: function () { return list_collections_1.ListCollectionsCursor; } }); const promise_provider_1 = require("./promise_provider"); Object.defineProperty(exports, "Promise", { enumerable: true, get: function () { return promise_provider_1.PromiseProvider; } }); +const sessions_1 = require("./sessions"); +Object.defineProperty(exports, "ClientSession", { enumerable: true, get: function () { return sessions_1.ClientSession; } }); +/** @internal */ var bson_2 = require("./bson"); -Object.defineProperty(exports, "Binary", { enumerable: true, get: function () { return bson_2.Binary; } }); -Object.defineProperty(exports, "BSONRegExp", { enumerable: true, get: function () { return bson_2.BSONRegExp; } }); -Object.defineProperty(exports, "BSONSymbol", { enumerable: true, get: function () { return bson_2.BSONSymbol; } }); -Object.defineProperty(exports, "Code", { enumerable: true, get: function () { return bson_2.Code; } }); -Object.defineProperty(exports, "DBRef", { enumerable: true, get: function () { return bson_2.DBRef; } }); -Object.defineProperty(exports, "Decimal128", { enumerable: true, get: function () { return bson_2.Decimal128; } }); -Object.defineProperty(exports, "Double", { enumerable: true, get: function () { return bson_2.Double; } }); -Object.defineProperty(exports, "Int32", { enumerable: true, get: function () { return bson_2.Int32; } }); -Object.defineProperty(exports, "Long", { enumerable: true, get: function () { return bson_2.Long; } }); -Object.defineProperty(exports, "Map", { enumerable: true, get: function () { return bson_2.Map; } }); -Object.defineProperty(exports, "MaxKey", { enumerable: true, get: function () { return bson_2.MaxKey; } }); -Object.defineProperty(exports, "MinKey", { enumerable: true, get: function () { return bson_2.MinKey; } }); -Object.defineProperty(exports, "ObjectId", { enumerable: true, get: function () { return bson_2.ObjectId; } }); -Object.defineProperty(exports, "Timestamp", { enumerable: true, get: function () { return bson_2.Timestamp; } }); +Object.defineProperty(exports, "BSON", { enumerable: true, get: function () { return bson_2.BSON; } }); +var bson_3 = require("./bson"); +Object.defineProperty(exports, "Binary", { enumerable: true, get: function () { return bson_3.Binary; } }); +Object.defineProperty(exports, "BSONRegExp", { enumerable: true, get: function () { return bson_3.BSONRegExp; } }); +Object.defineProperty(exports, "BSONSymbol", { enumerable: true, get: function () { return bson_3.BSONSymbol; } }); +Object.defineProperty(exports, "Code", { enumerable: true, get: function () { return bson_3.Code; } }); +Object.defineProperty(exports, "DBRef", { enumerable: true, get: function () { return bson_3.DBRef; } }); +Object.defineProperty(exports, "Decimal128", { enumerable: true, get: function () { return bson_3.Decimal128; } }); +Object.defineProperty(exports, "Double", { enumerable: true, get: function () { return bson_3.Double; } }); +Object.defineProperty(exports, "Int32", { enumerable: true, get: function () { return bson_3.Int32; } }); +Object.defineProperty(exports, "Long", { enumerable: true, get: function () { return bson_3.Long; } }); +Object.defineProperty(exports, "Map", { enumerable: true, get: function () { return bson_3.Map; } }); +Object.defineProperty(exports, "MaxKey", { enumerable: true, get: function () { return bson_3.MaxKey; } }); +Object.defineProperty(exports, "MinKey", { enumerable: true, get: function () { return bson_3.MinKey; } }); +Object.defineProperty(exports, "ObjectId", { enumerable: true, get: function () { return bson_3.ObjectId; } }); +Object.defineProperty(exports, "Timestamp", { enumerable: true, get: function () { return bson_3.Timestamp; } }); +var change_stream_cursor_1 = require("./cursor/change_stream_cursor"); +Object.defineProperty(exports, "ChangeStreamCursor", { enumerable: true, get: function () { return change_stream_cursor_1.ChangeStreamCursor; } }); /** * @public * @deprecated Please use `ObjectId` @@ -141,6 +158,7 @@ Object.defineProperty(exports, "ConnectionPoolClearedEvent", { enumerable: true, Object.defineProperty(exports, "ConnectionPoolClosedEvent", { enumerable: true, get: function () { return connection_pool_events_1.ConnectionPoolClosedEvent; } }); Object.defineProperty(exports, "ConnectionPoolCreatedEvent", { enumerable: true, get: function () { return connection_pool_events_1.ConnectionPoolCreatedEvent; } }); Object.defineProperty(exports, "ConnectionPoolMonitoringEvent", { enumerable: true, get: function () { return connection_pool_events_1.ConnectionPoolMonitoringEvent; } }); +Object.defineProperty(exports, "ConnectionPoolReadyEvent", { enumerable: true, get: function () { return connection_pool_events_1.ConnectionPoolReadyEvent; } }); Object.defineProperty(exports, "ConnectionReadyEvent", { enumerable: true, get: function () { return connection_pool_events_1.ConnectionReadyEvent; } }); var events_1 = require("./sdam/events"); Object.defineProperty(exports, "ServerClosedEvent", { enumerable: true, get: function () { return events_1.ServerClosedEvent; } }); diff --git a/food-ordering-app/server/node_modules/mongodb/lib/index.js.map b/food-ordering-app/server/node_modules/mongodb/lib/index.js.map index f25fd4588..c9a53bf10 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/index.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/logger.js b/food-ordering-app/server/node_modules/mongodb/lib/logger.js index 03e036e7c..5d1588b97 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/logger.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/logger.js @@ -13,7 +13,10 @@ const pid = process.pid; // current logger // eslint-disable-next-line no-console let currentLogger = console.warn; -/** @public */ +/** + * @public + * @deprecated The Legacy Logger is deprecated and will be removed in the next major version. + */ exports.LoggerLevel = Object.freeze({ ERROR: 'error', WARN: 'warn', @@ -26,6 +29,7 @@ exports.LoggerLevel = Object.freeze({ }); /** * @public + * @deprecated This logger is unused and will be removed in the next major version. */ class Logger { /** diff --git a/food-ordering-app/server/node_modules/mongodb/lib/logger.js.map b/food-ordering-app/server/node_modules/mongodb/lib/logger.js.map index 4bd0592f8..832bbed64 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/logger.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/logger.js.map @@ -1 +1 @@ -{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/mongo_client.js b/food-ordering-app/server/node_modules/mongodb/lib/mongo_client.js index 093804083..5301d5b3c 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/mongo_client.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/mongo_client.js @@ -1,14 +1,19 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MongoClient = exports.ServerApiVersion = void 0; +const util_1 = require("util"); const bson_1 = require("./bson"); const change_stream_1 = require("./change_stream"); const connection_string_1 = require("./connection_string"); +const constants_1 = require("./constants"); const db_1 = require("./db"); const error_1 = require("./error"); +const mongo_logger_1 = require("./mongo_logger"); const mongo_types_1 = require("./mongo_types"); -const connect_1 = require("./operations/connect"); -const promise_provider_1 = require("./promise_provider"); +const read_preference_1 = require("./read_preference"); +const server_selection_1 = require("./sdam/server_selection"); +const topology_1 = require("./sdam/topology"); +const sessions_1 = require("./sessions"); const utils_1 = require("./utils"); /** @public */ exports.ServerApiVersion = Object.freeze({ @@ -21,54 +26,35 @@ const kOptions = Symbol('options'); * @public * * @remarks - * The programmatically provided options take precedent over the URI options. + * The programmatically provided options take precedence over the URI options. * * @example - * ```js - * // Connect using a MongoClient instance - * const MongoClient = require('mongodb').MongoClient; - * const test = require('assert'); - * // Connection url - * const url = 'mongodb://localhost:27017'; - * // Database Name - * const dbName = 'test'; - * // Connect using MongoClient - * const mongoClient = new MongoClient(url); - * mongoClient.connect(function(err, client) { - * const db = client.db(dbName); - * client.close(); - * }); - * ``` + * ```ts + * import { MongoClient } from 'mongodb'; * - * @example - * ```js - * // Connect using the MongoClient.connect static method - * const MongoClient = require('mongodb').MongoClient; - * const test = require('assert'); - * // Connection url - * const url = 'mongodb://localhost:27017'; - * // Database Name - * const dbName = 'test'; - * // Connect using MongoClient - * MongoClient.connect(url, function(err, client) { - * const db = client.db(dbName); - * client.close(); - * }); + * // Enable command monitoring for debugging + * const client = new MongoClient('mongodb://localhost:27017', { monitorCommands: true }); + * + * client.on('commandStarted', started => console.log(started)); + * client.db().collection('pets'); + * await client.insertOne({ name: 'spot', kind: 'dog' }); * ``` */ class MongoClient extends mongo_types_1.TypedEventEmitter { constructor(url, options) { super(); this[kOptions] = (0, connection_string_1.parseOptions)(url, this, options); + this.mongoLogger = new mongo_logger_1.MongoLogger(this[kOptions].mongoLoggerOptions); // eslint-disable-next-line @typescript-eslint/no-this-alias const client = this; // The internal state this.s = { url, - sessions: new Set(), bsonOptions: (0, bson_1.resolveBSONOptions)(this[kOptions]), namespace: (0, utils_1.ns)('admin'), hasBeenClosed: false, + sessionPool: new sessions_1.ServerSessionPool(this), + activeSessions: new Set(), get options() { return client[kOptions]; }, @@ -89,6 +75,7 @@ class MongoClient extends mongo_types_1.TypedEventEmitter { } }; } + /** @see MongoOptions */ get options() { return Object.freeze({ ...this[kOptions] }); } @@ -120,6 +107,7 @@ class MongoClient extends mongo_types_1.TypedEventEmitter { get bsonOptions() { return this.s.bsonOptions; } + /** @deprecated The Legacy Logger is deprecated and will be removed in the next major version. */ get logger() { return this.s.logger; } @@ -127,13 +115,59 @@ class MongoClient extends mongo_types_1.TypedEventEmitter { if (callback && typeof callback !== 'function') { throw new error_1.MongoInvalidArgumentError('Method `connect` only accepts a callback'); } - return (0, utils_1.maybePromise)(callback, cb => { - (0, connect_1.connect)(this, this[kOptions], err => { - if (err) - return cb(err); - cb(undefined, this); - }); - }); + return (0, utils_1.maybeCallback)(async () => { + if (this.connectionLock) { + return this.connectionLock; + } + try { + this.connectionLock = this._connect(); + await this.connectionLock; + return this; + } + finally { + this.connectionLock = undefined; + } + }, callback); + } + async _connect() { + if (this.topology && this.topology.isConnected()) { + return this; + } + const options = this[kOptions]; + if (typeof options.srvHost === 'string') { + const hosts = await (0, connection_string_1.resolveSRVRecord)(options); + for (const [index, host] of hosts.entries()) { + options.hosts[index] = host; + } + } + const topology = new topology_1.Topology(options.hosts, options); + // Events can be emitted before initialization is complete so we have to + // save the reference to the topology on the client ASAP if the event handlers need to access it + this.topology = topology; + topology.client = this; + topology.once(topology_1.Topology.OPEN, () => this.emit('open', this)); + for (const event of constants_1.MONGO_CLIENT_EVENTS) { + topology.on(event, (...args) => this.emit(event, ...args)); + } + const topologyConnect = async () => { + try { + await (0, util_1.promisify)(callback => topology.connect(options, callback))(); + } + catch (error) { + topology.close({ force: true }); + throw error; + } + }; + if (this.autoEncrypter) { + const initAutoEncrypter = (0, util_1.promisify)(callback => { var _a; return (_a = this.autoEncrypter) === null || _a === void 0 ? void 0 : _a.init(callback); }); + await initAutoEncrypter(); + await topologyConnect(); + await options.encrypter.connectInternalClient(); + } + else { + await topologyConnect(); + } + return this; } close(forceOrCallback, callback) { // There's no way to set hasBeenClosed back to false @@ -147,25 +181,46 @@ class MongoClient extends mongo_types_1.TypedEventEmitter { callback = forceOrCallback; } const force = typeof forceOrCallback === 'boolean' ? forceOrCallback : false; - return (0, utils_1.maybePromise)(callback, callback => { + return (0, utils_1.maybeCallback)(async () => { + const activeSessionEnds = Array.from(this.s.activeSessions, session => session.endSession()); + this.s.activeSessions.clear(); + await Promise.all(activeSessionEnds); if (this.topology == null) { - return callback(); + return; + } + // If we would attempt to select a server and get nothing back we short circuit + // to avoid the server selection timeout. + const selector = (0, server_selection_1.readPreferenceServerSelector)(read_preference_1.ReadPreference.primaryPreferred); + const topologyDescription = this.topology.description; + const serverDescriptions = Array.from(topologyDescription.servers.values()); + const servers = selector(topologyDescription, serverDescriptions); + if (servers.length !== 0) { + const endSessions = Array.from(this.s.sessionPool.sessions, ({ id }) => id); + if (endSessions.length !== 0) { + await this.db('admin') + .command({ endSessions }, { readPreference: read_preference_1.ReadPreference.primaryPreferred, noResponse: true }) + .catch(() => null); // outcome does not matter + } } // clear out references to old topology const topology = this.topology; this.topology = undefined; - topology.close({ force }, error => { - if (error) - return callback(error); - const { encrypter } = this[kOptions]; - if (encrypter) { - return encrypter.close(this, force, error => { - callback(error); - }); - } - callback(); + await new Promise((resolve, reject) => { + topology.close({ force }, error => { + if (error) + return reject(error); + const { encrypter } = this[kOptions]; + if (encrypter) { + return encrypter.close(this, force, error => { + if (error) + return reject(error); + resolve(); + }); + } + resolve(); + }); }); - }); + }, callback); } /** * Create a new Db instance sharing the current socket connections. @@ -187,33 +242,25 @@ class MongoClient extends mongo_types_1.TypedEventEmitter { return db; } static connect(url, options, callback) { - if (typeof options === 'function') - (callback = options), (options = {}); - options = options !== null && options !== void 0 ? options : {}; - try { - // Create client - const mongoClient = new MongoClient(url, options); - // Execute the connect method - if (callback) { - return mongoClient.connect(callback); - } - else { - return mongoClient.connect(); - } - } - catch (error) { - if (callback) - return callback(error); - else - return promise_provider_1.PromiseProvider.get().reject(error); - } + callback = + typeof callback === 'function' + ? callback + : typeof options === 'function' + ? options + : undefined; + return (0, utils_1.maybeCallback)(async () => { + options = typeof options !== 'function' ? options : undefined; + const client = new this(url, options); + return client.connect(); + }, callback); } startSession(options) { - options = Object.assign({ explicit: true }, options); - if (!this.topology) { - throw new error_1.MongoNotConnectedError('MongoClient must be connected to start a session'); - } - return this.topology.startSession(options, this.s.options); + const session = new sessions_1.ClientSession(this, this.s.sessionPool, { explicit: true, ...options }, this[kOptions]); + this.s.activeSessions.add(session); + session.once('ended', () => { + this.s.activeSessions.delete(session); + }); + return session; } withSession(optionsOrOperation, callback) { const options = { @@ -227,13 +274,19 @@ class MongoClient extends mongo_types_1.TypedEventEmitter { throw new error_1.MongoInvalidArgumentError('Missing required callback parameter'); } const session = this.startSession(options); - const Promise = promise_provider_1.PromiseProvider.get(); - return Promise.resolve() - .then(() => withSessionCallback(session)) - .then(() => { - // Do not return the result of callback - }) - .finally(() => session.endSession()); + return (0, utils_1.maybeCallback)(async () => { + try { + await withSessionCallback(session); + } + finally { + try { + await session.endSession(); + } + catch { + // We are not concerned with errors from endSession() + } + } + }, null); } /** * Create a new Change Stream, watching for new changes (insertions, updates, @@ -241,7 +294,7 @@ class MongoClient extends mongo_types_1.TypedEventEmitter { * changes to system collections, as well as the local, admin, and config databases. * * @remarks - * watch() accepts two generic arguments for distinct usecases: + * watch() accepts two generic arguments for distinct use cases: * - The first is to provide the schema that may be defined for all the data within the current cluster * - The second is to override the shape of the change stream document entirely, if it is not provided the type will default to ChangeStreamDocument of the first argument * @@ -258,7 +311,10 @@ class MongoClient extends mongo_types_1.TypedEventEmitter { } return new change_stream_1.ChangeStream(this, pipeline, (0, utils_1.resolveOptions)(this, options)); } - /** Return the mongo client logger */ + /** + * Return the mongo client logger + * @deprecated The Legacy Logger is deprecated and will be removed in the next major version. + */ getLogger() { return this.s.logger; } diff --git a/food-ordering-app/server/node_modules/mongodb/lib/mongo_client.js.map b/food-ordering-app/server/node_modules/mongodb/lib/mongo_client.js.map index ef6453c97..50dc90f06 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/mongo_client.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/mongo_client.js.map @@ -1 +1 @@ -{"version":3,"file":"mongo_client.js","sourceRoot":"","sources":["../src/mongo_client.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"mongo_client.js","sourceRoot":"","sources":["../src/mongo_client.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/mongo_logger.js b/food-ordering-app/server/node_modules/mongodb/lib/mongo_logger.js new file mode 100644 index 000000000..66111d572 --- /dev/null +++ b/food-ordering-app/server/node_modules/mongodb/lib/mongo_logger.js @@ -0,0 +1,114 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.MongoLogger = exports.MongoLoggableComponent = exports.SeverityLevel = void 0; +const stream_1 = require("stream"); +const utils_1 = require("./utils"); +/** @internal */ +exports.SeverityLevel = Object.freeze({ + EMERGENCY: 'emergency', + ALERT: 'alert', + CRITICAL: 'critical', + ERROR: 'error', + WARNING: 'warn', + NOTICE: 'notice', + INFORMATIONAL: 'info', + DEBUG: 'debug', + TRACE: 'trace', + OFF: 'off' +}); +/** @internal */ +exports.MongoLoggableComponent = Object.freeze({ + COMMAND: 'command', + TOPOLOGY: 'topology', + SERVER_SELECTION: 'serverSelection', + CONNECTION: 'connection' +}); +/** + * Parses a string as one of SeverityLevel + * + * @param s - the value to be parsed + * @returns one of SeverityLevel if value can be parsed as such, otherwise null + */ +function parseSeverityFromString(s) { + const validSeverities = Object.values(exports.SeverityLevel); + const lowerSeverity = s === null || s === void 0 ? void 0 : s.toLowerCase(); + if (lowerSeverity != null && validSeverities.includes(lowerSeverity)) { + return lowerSeverity; + } + return null; +} +/** + * resolves the MONGODB_LOG_PATH and mongodbLogPath options from the environment and the + * mongo client options respectively. + * + * @returns the Writable stream to write logs to + */ +function resolveLogPath({ MONGODB_LOG_PATH }, { mongodbLogPath }) { + const isValidLogDestinationString = (destination) => ['stdout', 'stderr'].includes(destination.toLowerCase()); + if (typeof mongodbLogPath === 'string' && isValidLogDestinationString(mongodbLogPath)) { + return mongodbLogPath.toLowerCase() === 'stderr' ? process.stderr : process.stdout; + } + // TODO(NODE-4813): check for minimal interface instead of instanceof Writable + if (typeof mongodbLogPath === 'object' && mongodbLogPath instanceof stream_1.Writable) { + return mongodbLogPath; + } + if (typeof MONGODB_LOG_PATH === 'string' && isValidLogDestinationString(MONGODB_LOG_PATH)) { + return MONGODB_LOG_PATH.toLowerCase() === 'stderr' ? process.stderr : process.stdout; + } + return process.stderr; +} +/** @internal */ +class MongoLogger { + constructor(options) { + this.componentSeverities = options.componentSeverities; + this.maxDocumentLength = options.maxDocumentLength; + this.logDestination = options.logDestination; + } + /* eslint-disable @typescript-eslint/no-unused-vars */ + /* eslint-disable @typescript-eslint/no-empty-function */ + emergency(component, message) { } + alert(component, message) { } + critical(component, message) { } + error(component, message) { } + warn(component, message) { } + notice(component, message) { } + info(component, message) { } + debug(component, message) { } + trace(component, message) { } + /** + * Merges options set through environment variables and the MongoClient, preferring environment + * variables when both are set, and substituting defaults for values not set. Options set in + * constructor take precedence over both environment variables and MongoClient options. + * + * @remarks + * When parsing component severity levels, invalid values are treated as unset and replaced with + * the default severity. + * + * @param envOptions - options set for the logger from the environment + * @param clientOptions - options set for the logger in the MongoClient options + * @returns a MongoLoggerOptions object to be used when instantiating a new MongoLogger + */ + static resolveOptions(envOptions, clientOptions) { + var _a, _b, _c, _d, _e, _f; + // client options take precedence over env options + const combinedOptions = { + ...envOptions, + ...clientOptions, + mongodbLogPath: resolveLogPath(envOptions, clientOptions) + }; + const defaultSeverity = (_a = parseSeverityFromString(combinedOptions.MONGODB_LOG_ALL)) !== null && _a !== void 0 ? _a : exports.SeverityLevel.OFF; + return { + componentSeverities: { + command: (_b = parseSeverityFromString(combinedOptions.MONGODB_LOG_COMMAND)) !== null && _b !== void 0 ? _b : defaultSeverity, + topology: (_c = parseSeverityFromString(combinedOptions.MONGODB_LOG_TOPOLOGY)) !== null && _c !== void 0 ? _c : defaultSeverity, + serverSelection: (_d = parseSeverityFromString(combinedOptions.MONGODB_LOG_SERVER_SELECTION)) !== null && _d !== void 0 ? _d : defaultSeverity, + connection: (_e = parseSeverityFromString(combinedOptions.MONGODB_LOG_CONNECTION)) !== null && _e !== void 0 ? _e : defaultSeverity, + default: defaultSeverity + }, + maxDocumentLength: (_f = (0, utils_1.parseUnsignedInteger)(combinedOptions.MONGODB_LOG_MAX_DOCUMENT_LENGTH)) !== null && _f !== void 0 ? _f : 1000, + logDestination: combinedOptions.mongodbLogPath + }; + } +} +exports.MongoLogger = MongoLogger; +//# sourceMappingURL=mongo_logger.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/mongo_logger.js.map b/food-ordering-app/server/node_modules/mongodb/lib/mongo_logger.js.map new file mode 100644 index 000000000..8207d73e0 --- /dev/null +++ b/food-ordering-app/server/node_modules/mongodb/lib/mongo_logger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mongo_logger.js","sourceRoot":"","sources":["../src/mongo_logger.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/mongo_types.js.map b/food-ordering-app/server/node_modules/mongodb/lib/mongo_types.js.map index dde1a8780..e1221e563 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/mongo_types.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/mongo_types.js.map @@ -1 +1 @@ -{"version":3,"file":"mongo_types.js","sourceRoot":"","sources":["../src/mongo_types.ts"],"names":[],"mappings":";;;AACA,mCAAsC;AAmKtC,cAAc;AACD,QAAA,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;IACpC,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,CAAC;IACR,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,CAAC;IACZ,QAAQ,EAAE,CAAC;IACX,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,EAAE;IACR,KAAK,EAAE,EAAE;IACT,SAAS,EAAE,EAAE;IACb,UAAU,EAAE,EAAE;IACd,MAAM,EAAE,EAAE;IACV,mBAAmB,EAAE,EAAE;IACvB,GAAG,EAAE,EAAE;IACP,SAAS,EAAE,EAAE;IACb,IAAI,EAAE,EAAE;IACR,OAAO,EAAE,EAAE;IACX,MAAM,EAAE,CAAC,CAAC;IACV,MAAM,EAAE,GAAG;CACH,CAAC,CAAC;AA0PZ;;;GAGG;AACH,6DAA6D;AAC7D,MAAa,iBAAoD,SAAQ,qBAAY;CAAG;AAAxF,8CAAwF;AAExF,cAAc;AACd,MAAa,iBAAkB,SAAQ,iBAAqC;CAAG;AAA/E,8CAA+E"} \ No newline at end of file +{"version":3,"file":"mongo_types.js","sourceRoot":"","sources":["../src/mongo_types.ts"],"names":[],"mappings":";;;AACA,mCAAsC;AAmKtC,cAAc;AACD,QAAA,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;IACpC,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,CAAC;IACR,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,CAAC;IACZ,QAAQ,EAAE,CAAC;IACX,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,EAAE;IACR,KAAK,EAAE,EAAE;IACT,SAAS,EAAE,EAAE;IACb,UAAU,EAAE,EAAE;IACd,MAAM,EAAE,EAAE;IACV,mBAAmB,EAAE,EAAE;IACvB,GAAG,EAAE,EAAE;IACP,SAAS,EAAE,EAAE;IACb,IAAI,EAAE,EAAE;IACR,OAAO,EAAE,EAAE;IACX,MAAM,EAAE,CAAC,CAAC;IACV,MAAM,EAAE,GAAG;CACH,CAAC,CAAC;AAyQZ;;;GAGG;AACH,6DAA6D;AAC7D,MAAa,iBAAoD,SAAQ,qBAAY;CAAG;AAAxF,8CAAwF;AAExF,cAAc;AACd,MAAa,iBAAkB,SAAQ,iBAAqC;CAAG;AAA/E,8CAA+E"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/aggregate.js b/food-ordering-app/server/node_modules/mongodb/lib/operations/aggregate.js index 33b513600..6211eeba6 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/operations/aggregate.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/operations/aggregate.js @@ -12,7 +12,7 @@ const MIN_WIRE_VERSION_$OUT_READ_CONCERN_SUPPORT = 8; class AggregateOperation extends command_1.CommandOperation { constructor(ns, pipeline, options) { super(undefined, { ...options, dbName: ns.db }); - this.options = options !== null && options !== void 0 ? options : {}; + this.options = { ...options }; // Covers when ns.collection is null, undefined or the empty string, use DB_AGGREGATE_COLLECTION this.target = ns.collection || exports.DB_AGGREGATE_COLLECTION; this.pipeline = pipeline; @@ -31,6 +31,9 @@ class AggregateOperation extends command_1.CommandOperation { if (this.hasWriteStage) { this.trySecondaryWrite = true; } + else { + delete this.options.writeConcern; + } if (this.explain && this.writeConcern) { throw new error_1.MongoInvalidArgumentError('Option "explain" cannot be used on an aggregate call with writeConcern'); } @@ -51,10 +54,8 @@ class AggregateOperation extends command_1.CommandOperation { if (this.hasWriteStage && serverWireVersion < MIN_WIRE_VERSION_$OUT_READ_CONCERN_SUPPORT) { this.readConcern = undefined; } - if (serverWireVersion >= 5) { - if (this.hasWriteStage && this.writeConcern) { - Object.assign(command, { writeConcern: this.writeConcern }); - } + if (this.hasWriteStage && this.writeConcern) { + Object.assign(command, { writeConcern: this.writeConcern }); } if (options.bypassDocumentValidation === true) { command.bypassDocumentValidation = options.bypassDocumentValidation; diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/aggregate.js.map b/food-ordering-app/server/node_modules/mongodb/lib/operations/aggregate.js.map index a8dc5fcfb..a7b1d8305 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/operations/aggregate.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/operations/aggregate.js.map @@ -1 +1 @@ -{"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../src/operations/aggregate.ts"],"names":[],"mappings":";;;AACA,oCAAqD;AAGrD,oCAAsE;AACtE,uCAAwF;AACxF,2CAA0D;AAE1D,gBAAgB;AACH,QAAA,uBAAuB,GAAG,CAAU,CAAC;AAClD,MAAM,0CAA0C,GAAG,CAAU,CAAC;AA0B9D,gBAAgB;AAChB,MAAa,kBAAiC,SAAQ,0BAAmB;IAMvE,YAAY,EAAoB,EAAE,QAAoB,EAAE,OAA0B;QAChF,KAAK,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAEhD,IAAI,CAAC,OAAO,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;QAE7B,gGAAgG;QAChG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,UAAU,IAAI,+BAAuB,CAAC;QAEvD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,qEAAqE;QACrE,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,OAAO,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,CAAA,KAAK,QAAQ,EAAE;YACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YAC5D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;SAC3B;aAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9B,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACjD,IAAI,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,MAAM,EAAE;gBACxC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;aAC3B;SACF;QAED,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;SAC/B;QAED,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,YAAY,EAAE;YACrC,MAAM,IAAI,iCAAyB,CACjC,wEAAwE,CACzE,CAAC;SACH;QAED,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,KAAI,IAAI,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE;YACjE,MAAM,IAAI,iCAAyB,CAAC,kCAAkC,CAAC,CAAC;SACzE;IACH,CAAC;IAED,IAAa,YAAY;QACvB,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;IAC7B,CAAC;IAED,aAAa,CAAC,KAAe;QAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAEQ,OAAO,CACd,MAAc,EACd,OAAkC,EAClC,QAAqB;QAErB,MAAM,OAAO,GAAqB,IAAI,CAAC,OAAO,CAAC;QAC/C,MAAM,iBAAiB,GAAG,IAAA,sBAAc,EAAC,MAAM,CAAC,CAAC;QACjD,MAAM,OAAO,GAAa,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;QAE9E,IAAI,IAAI,CAAC,aAAa,IAAI,iBAAiB,GAAG,0CAA0C,EAAE;YACxF,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;SAC9B;QAED,IAAI,iBAAiB,IAAI,CAAC,EAAE;YAC1B,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,YAAY,EAAE;gBAC3C,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;aAC7D;SACF;QAED,IAAI,OAAO,CAAC,wBAAwB,KAAK,IAAI,EAAE;YAC7C,OAAO,CAAC,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,CAAC;SACrE;QAED,IAAI,OAAO,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE;YAC7C,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;SAC7C;QAED,IAAI,OAAO,CAAC,IAAI,EAAE;YAChB,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;SAC7B;QAED,IAAI,OAAO,CAAC,GAAG,EAAE;YACf,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;SAC3B;QAED,iEAAiE;QACjE,gDAAgD;QAChD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE;YACjC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;SACnC;QAED,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;QACtC,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAC5C,OAAO,CAAC,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;SAC9C;QAED,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC3D,CAAC;CACF;AAnGD,gDAmGC;AAED,IAAA,yBAAa,EAAC,kBAAkB,EAAE;IAChC,kBAAM,CAAC,cAAc;IACrB,kBAAM,CAAC,SAAS;IAChB,kBAAM,CAAC,WAAW;IAClB,kBAAM,CAAC,eAAe;CACvB,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../src/operations/aggregate.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/command.js b/food-ordering-app/server/node_modules/mongodb/lib/operations/command.js index 55ce871ee..e6c5434ab 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/operations/command.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/operations/command.js @@ -8,7 +8,6 @@ const server_selection_1 = require("../sdam/server_selection"); const utils_1 = require("../utils"); const write_concern_1 = require("../write_concern"); const operation_1 = require("./operation"); -const SUPPORTS_WRITE_CONCERN_AND_COLLATION = 5; /** @internal */ class CommandOperation extends operation_1.AbstractOperation { constructor(parent, options) { @@ -62,31 +61,19 @@ class CommandOperation extends operation_1.AbstractOperation { if (this.trySecondaryWrite && serverWireVersion < server_selection_1.MIN_SECONDARY_WRITE_WIRE_VERSION) { options.omitReadPreference = true; } - if (options.collation && serverWireVersion < SUPPORTS_WRITE_CONCERN_AND_COLLATION) { - callback(new error_1.MongoCompatibilityError(`Server ${server.name}, which reports wire version ${serverWireVersion}, does not support collation`)); - return; - } if (this.writeConcern && this.hasAspect(operation_1.Aspect.WRITE_OPERATION) && !inTransaction) { Object.assign(cmd, { writeConcern: this.writeConcern }); } - if (serverWireVersion >= SUPPORTS_WRITE_CONCERN_AND_COLLATION) { - if (options.collation && - typeof options.collation === 'object' && - !this.hasAspect(operation_1.Aspect.SKIP_COLLATION)) { - Object.assign(cmd, { collation: options.collation }); - } + if (options.collation && + typeof options.collation === 'object' && + !this.hasAspect(operation_1.Aspect.SKIP_COLLATION)) { + Object.assign(cmd, { collation: options.collation }); } if (typeof options.maxTimeMS === 'number') { cmd.maxTimeMS = options.maxTimeMS; } if (this.hasAspect(operation_1.Aspect.EXPLAINABLE) && this.explain) { - if (serverWireVersion < 6 && cmd.aggregate) { - // Prior to 3.6, with aggregate, verbosity is ignored, and we must pass in "explain: true" - cmd.explain = true; - } - else { - cmd = (0, utils_1.decorateWithExplain)(cmd, this.explain); - } + cmd = (0, utils_1.decorateWithExplain)(cmd, this.explain); } server.command(this.ns, cmd, options, callback); } diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/command.js.map b/food-ordering-app/server/node_modules/mongodb/lib/operations/command.js.map index 5f49482f9..5a43b2510 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/operations/command.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/operations/command.js.map @@ -1 +1 @@ -{"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/operations/command.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/operations/command.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/common_functions.js.map b/food-ordering-app/server/node_modules/mongodb/lib/operations/common_functions.js.map index 980fd92de..60d1acb09 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/operations/common_functions.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/operations/common_functions.js.map @@ -1 +1 @@ -{"version":3,"file":"common_functions.js","sourceRoot":"","sources":["../../src/operations/common_functions.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"common_functions.js","sourceRoot":"","sources":["../../src/operations/common_functions.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/connect.js b/food-ordering-app/server/node_modules/mongodb/lib/operations/connect.js deleted file mode 100644 index eb7abc874..000000000 --- a/food-ordering-app/server/node_modules/mongodb/lib/operations/connect.js +++ /dev/null @@ -1,85 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.connect = void 0; -const connection_string_1 = require("../connection_string"); -const constants_1 = require("../constants"); -const error_1 = require("../error"); -const topology_1 = require("../sdam/topology"); -function connect(mongoClient, options, callback) { - if (!callback) { - throw new error_1.MongoInvalidArgumentError('Callback function must be provided'); - } - // If a connection already been established, we can terminate early - if (mongoClient.topology && mongoClient.topology.isConnected()) { - return callback(undefined, mongoClient); - } - const logger = mongoClient.logger; - const connectCallback = err => { - const warningMessage = 'seed list contains no mongos proxies, replicaset connections requires ' + - 'the parameter replicaSet to be supplied in the URI or options object, ' + - 'mongodb://server:port/db?replicaSet=name'; - if (err && err.message === 'no mongos proxies found in seed list') { - if (logger.isWarn()) { - logger.warn(warningMessage); - } - // Return a more specific error message for MongoClient.connect - // TODO(NODE-3483) - return callback(new error_1.MongoRuntimeError(warningMessage)); - } - callback(err, mongoClient); - }; - if (typeof options.srvHost === 'string') { - return (0, connection_string_1.resolveSRVRecord)(options, (err, hosts) => { - if (err || !hosts) - return callback(err); - for (const [index, host] of hosts.entries()) { - options.hosts[index] = host; - } - return createTopology(mongoClient, options, connectCallback); - }); - } - return createTopology(mongoClient, options, connectCallback); -} -exports.connect = connect; -function createTopology(mongoClient, options, callback) { - // Create the topology - const topology = new topology_1.Topology(options.hosts, options); - // Events can be emitted before initialization is complete so we have to - // save the reference to the topology on the client ASAP if the event handlers need to access it - mongoClient.topology = topology; - topology.client = mongoClient; - topology.once(topology_1.Topology.OPEN, () => mongoClient.emit('open', mongoClient)); - for (const event of constants_1.MONGO_CLIENT_EVENTS) { - topology.on(event, (...args) => mongoClient.emit(event, ...args)); - } - // initialize CSFLE if requested - if (mongoClient.autoEncrypter) { - mongoClient.autoEncrypter.init(err => { - if (err) { - return callback(err); - } - topology.connect(options, err => { - if (err) { - topology.close({ force: true }); - return callback(err); - } - options.encrypter.connectInternalClient(error => { - if (error) - return callback(error); - callback(undefined, topology); - }); - }); - }); - return; - } - // otherwise connect normally - topology.connect(options, err => { - if (err) { - topology.close({ force: true }); - return callback(err); - } - callback(undefined, topology); - return; - }); -} -//# sourceMappingURL=connect.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/connect.js.map b/food-ordering-app/server/node_modules/mongodb/lib/operations/connect.js.map deleted file mode 100644 index f39e04be5..000000000 --- a/food-ordering-app/server/node_modules/mongodb/lib/operations/connect.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/operations/connect.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/create_collection.js b/food-ordering-app/server/node_modules/mongodb/lib/operations/create_collection.js index 4d6c8a50e..7f3558ff4 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/operations/create_collection.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/operations/create_collection.js @@ -1,7 +1,9 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CreateCollectionOperation = void 0; +const constants_1 = require("../cmap/wire_protocol/constants"); const collection_1 = require("../collection"); +const error_1 = require("../error"); const command_1 = require("./command"); const indexes_1 = require("./indexes"); const operation_1 = require("./operation"); @@ -27,6 +29,8 @@ const ILLEGAL_COMMAND_FIELDS = new Set([ 'ignoreUndefined', 'enableUtf8Validation' ]); +/* @internal */ +const INVALID_QE_VERSION = 'Driver support of Queryable Encryption is incompatible with server. Upgrade server to use Queryable Encryption.'; /** @internal */ class CreateCollectionOperation extends command_1.CommandOperation { constructor(db, name, options = {}) { @@ -37,17 +41,20 @@ class CreateCollectionOperation extends command_1.CommandOperation { } execute(server, session, callback) { (async () => { - var _a, _b, _c, _d, _e, _f; + var _a, _b, _c, _d, _e; const db = this.db; const name = this.name; const options = this.options; const encryptedFields = (_a = options.encryptedFields) !== null && _a !== void 0 ? _a : (_c = (_b = db.s.client.options.autoEncryption) === null || _b === void 0 ? void 0 : _b.encryptedFieldsMap) === null || _c === void 0 ? void 0 : _c[`${db.databaseName}.${name}`]; if (encryptedFields) { + // Creating a QE collection required min server of 7.0.0 + if (server.description.maxWireVersion < constants_1.MIN_SUPPORTED_QE_WIRE_VERSION) { + throw new error_1.MongoCompatibilityError(`${INVALID_QE_VERSION} The minimum server version required is ${constants_1.MIN_SUPPORTED_QE_SERVER_VERSION}`); + } // Create auxilliary collections for queryable encryption support. const escCollection = (_d = encryptedFields.escCollection) !== null && _d !== void 0 ? _d : `enxcol_.${name}.esc`; - const eccCollection = (_e = encryptedFields.eccCollection) !== null && _e !== void 0 ? _e : `enxcol_.${name}.ecc`; - const ecocCollection = (_f = encryptedFields.ecocCollection) !== null && _f !== void 0 ? _f : `enxcol_.${name}.ecoc`; - for (const collectionName of [escCollection, eccCollection, ecocCollection]) { + const ecocCollection = (_e = encryptedFields.ecocCollection) !== null && _e !== void 0 ? _e : `enxcol_.${name}.ecoc`; + for (const collectionName of [escCollection, ecocCollection]) { const createOp = new CreateCollectionOperation(db, collectionName, { clusteredIndex: { key: { _id: 1 }, diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/create_collection.js.map b/food-ordering-app/server/node_modules/mongodb/lib/operations/create_collection.js.map index 397690f8b..efa202d4e 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/operations/create_collection.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/operations/create_collection.js.map @@ -1 +1 @@ -{"version":3,"file":"create_collection.js","sourceRoot":"","sources":["../../src/operations/create_collection.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"create_collection.js","sourceRoot":"","sources":["../../src/operations/create_collection.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/delete.js b/food-ordering-app/server/node_modules/mongodb/lib/operations/delete.js index 34cd24a10..18be414d5 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/operations/delete.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/operations/delete.js @@ -2,7 +2,6 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.makeDeleteStatement = exports.DeleteManyOperation = exports.DeleteOneOperation = exports.DeleteOperation = void 0; const error_1 = require("../error"); -const utils_1 = require("../utils"); const command_1 = require("./command"); const operation_1 = require("./operation"); /** @internal */ @@ -36,23 +35,14 @@ class DeleteOperation extends command_1.CommandOperation { if (options.comment !== undefined) { command.comment = options.comment; } - if (options.explain != null && (0, utils_1.maxWireVersion)(server) < 3) { - return callback - ? callback(new error_1.MongoCompatibilityError(`Server ${server.name} does not support explain on delete`)) - : undefined; - } const unacknowledgedWrite = this.writeConcern && this.writeConcern.w === 0; - if (unacknowledgedWrite || (0, utils_1.maxWireVersion)(server) < 5) { + if (unacknowledgedWrite) { if (this.statements.find((o) => o.hint)) { - callback(new error_1.MongoCompatibilityError(`Servers < 3.4 do not support hint on delete`)); + // TODO(NODE-3541): fix error for hint with unacknowledged writes + callback(new error_1.MongoCompatibilityError(`hint is not supported with unacknowledged writes`)); return; } } - const statementWithCollation = this.statements.find(statement => !!statement.collation); - if (statementWithCollation && (0, utils_1.collationNotSupported)(server, statementWithCollation)) { - callback(new error_1.MongoCompatibilityError(`Server ${server.name} does not support collation`)); - return; - } super.executeCommand(server, session, command, callback); } } diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/delete.js.map b/food-ordering-app/server/node_modules/mongodb/lib/operations/delete.js.map index e716dfe5e..7d8601170 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/operations/delete.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/operations/delete.js.map @@ -1 +1 @@ -{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../src/operations/delete.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../src/operations/delete.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/distinct.js b/food-ordering-app/server/node_modules/mongodb/lib/operations/distinct.js index 4e2e8264f..8e9dd9455 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/operations/distinct.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/operations/distinct.js @@ -1,7 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DistinctOperation = void 0; -const error_1 = require("../error"); const utils_1 = require("../utils"); const command_1 = require("./command"); const operation_1 = require("./operation"); @@ -40,6 +39,11 @@ class DistinctOperation extends command_1.CommandOperation { if (typeof options.maxTimeMS === 'number') { cmd.maxTimeMS = options.maxTimeMS; } + // we check for undefined specifically here to allow falsy values + // eslint-disable-next-line no-restricted-syntax + if (typeof options.comment !== 'undefined') { + cmd.comment = options.comment; + } // Do we have a readConcern specified (0, utils_1.decorateWithReadConcern)(cmd, coll, options); // Have we specified collation @@ -49,10 +53,6 @@ class DistinctOperation extends command_1.CommandOperation { catch (err) { return callback(err); } - if (this.explain && (0, utils_1.maxWireVersion)(server) < 4) { - callback(new error_1.MongoCompatibilityError(`Server ${server.name} does not support explain on distinct`)); - return; - } super.executeCommand(server, session, cmd, (err, result) => { if (err) { callback(err); diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/distinct.js.map b/food-ordering-app/server/node_modules/mongodb/lib/operations/distinct.js.map index 1b111c909..39dc73ba9 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/operations/distinct.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/operations/distinct.js.map @@ -1 +1 @@ -{"version":3,"file":"distinct.js","sourceRoot":"","sources":["../../src/operations/distinct.ts"],"names":[],"mappings":";;;AAEA,oCAAmD;AAGnD,oCAAoG;AACpG,uCAAsE;AACtE,2CAAoD;AAKpD;;;GAGG;AACH,MAAa,iBAAkB,SAAQ,0BAAuB;IAQ5D;;;;;;;OAOG;IACH,YAAY,UAAsB,EAAE,GAAW,EAAE,KAAe,EAAE,OAAyB;QACzF,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAE3B,IAAI,CAAC,OAAO,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEQ,OAAO,CACd,MAAc,EACd,OAAkC,EAClC,QAAyB;QAEzB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAE7B,mBAAmB;QACnB,MAAM,GAAG,GAAa;YACpB,QAAQ,EAAE,IAAI,CAAC,cAAc;YAC7B,GAAG,EAAE,GAAG;YACR,KAAK,EAAE,KAAK;SACb,CAAC;QAEF,2BAA2B;QAC3B,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE;YACzC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;SACnC;QAED,qCAAqC;QACrC,IAAA,+BAAuB,EAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAE5C,8BAA8B;QAC9B,IAAI;YACF,IAAA,6BAAqB,EAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;SAC3C;QAAC,OAAO,GAAG,EAAE;YACZ,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;SACtB;QAED,IAAI,IAAI,CAAC,OAAO,IAAI,IAAA,sBAAc,EAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YAC9C,QAAQ,CACN,IAAI,+BAAuB,CAAC,UAAU,MAAM,CAAC,IAAI,uCAAuC,CAAC,CAC1F,CAAC;YACF,OAAO;SACR;QAED,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;YACzD,IAAI,GAAG,EAAE;gBACP,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACd,OAAO;aACR;YAED,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAzED,8CAyEC;AAED,IAAA,yBAAa,EAAC,iBAAiB,EAAE,CAAC,kBAAM,CAAC,cAAc,EAAE,kBAAM,CAAC,SAAS,EAAE,kBAAM,CAAC,WAAW,CAAC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"distinct.js","sourceRoot":"","sources":["../../src/operations/distinct.ts"],"names":[],"mappings":";;;AAIA,oCAAoF;AACpF,uCAAsE;AACtE,2CAAoD;AAKpD;;;GAGG;AACH,MAAa,iBAAkB,SAAQ,0BAAuB;IAQ5D;;;;;;;OAOG;IACH,YAAY,UAAsB,EAAE,GAAW,EAAE,KAAe,EAAE,OAAyB;QACzF,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAE3B,IAAI,CAAC,OAAO,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEQ,OAAO,CACd,MAAc,EACd,OAAkC,EAClC,QAAyB;QAEzB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAE7B,mBAAmB;QACnB,MAAM,GAAG,GAAa;YACpB,QAAQ,EAAE,IAAI,CAAC,cAAc;YAC7B,GAAG,EAAE,GAAG;YACR,KAAK,EAAE,KAAK;SACb,CAAC;QAEF,2BAA2B;QAC3B,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE;YACzC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;SACnC;QAED,iEAAiE;QACjE,gDAAgD;QAChD,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,WAAW,EAAE;YAC1C,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;SAC/B;QAED,qCAAqC;QACrC,IAAA,+BAAuB,EAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAE5C,8BAA8B;QAC9B,IAAI;YACF,IAAA,6BAAqB,EAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;SAC3C;QAAC,OAAO,GAAG,EAAE;YACZ,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;SACtB;QAED,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;YACzD,IAAI,GAAG,EAAE;gBACP,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACd,OAAO;aACR;YAED,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAxED,8CAwEC;AAED,IAAA,yBAAa,EAAC,iBAAiB,EAAE,CAAC,kBAAM,CAAC,cAAc,EAAE,kBAAM,CAAC,SAAS,EAAE,kBAAM,CAAC,WAAW,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/drop.js b/food-ordering-app/server/node_modules/mongodb/lib/operations/drop.js index c0cbcf2f4..2488c0819 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/operations/drop.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/operations/drop.js @@ -21,7 +21,7 @@ class DropCollectionOperation extends command_1.CommandOperation { const encryptedFieldsMap = (_a = db.s.client.options.autoEncryption) === null || _a === void 0 ? void 0 : _a.encryptedFieldsMap; let encryptedFields = (_b = options.encryptedFields) !== null && _b !== void 0 ? _b : encryptedFieldsMap === null || encryptedFieldsMap === void 0 ? void 0 : encryptedFieldsMap[`${db.databaseName}.${name}`]; if (!encryptedFields && encryptedFieldsMap) { - // If the MongoClient was configued with an encryptedFieldsMap, + // If the MongoClient was configured with an encryptedFieldsMap, // and no encryptedFields config was available in it or explicitly // passed as an argument, the spec tells us to look one up using // listCollections(). @@ -32,9 +32,8 @@ class DropCollectionOperation extends command_1.CommandOperation { } if (encryptedFields) { const escCollection = encryptedFields.escCollection || `enxcol_.${name}.esc`; - const eccCollection = encryptedFields.eccCollection || `enxcol_.${name}.ecc`; const ecocCollection = encryptedFields.ecocCollection || `enxcol_.${name}.ecoc`; - for (const collectionName of [escCollection, eccCollection, ecocCollection]) { + for (const collectionName of [escCollection, ecocCollection]) { // Drop auxilliary collections, ignoring potential NamespaceNotFound errors. const dropOp = new DropCollectionOperation(db, collectionName); try { @@ -48,7 +47,7 @@ class DropCollectionOperation extends command_1.CommandOperation { } } } - return await this.executeWithoutEncryptedFieldsCheck(server, session); + return this.executeWithoutEncryptedFieldsCheck(server, session); })().then(result => callback(undefined, result), err => callback(err)); } executeWithoutEncryptedFieldsCheck(server, session) { diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/drop.js.map b/food-ordering-app/server/node_modules/mongodb/lib/operations/drop.js.map index 6f6e283b4..4c7f90fc8 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/operations/drop.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/operations/drop.js.map @@ -1 +1 @@ -{"version":3,"file":"drop.js","sourceRoot":"","sources":["../../src/operations/drop.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"drop.js","sourceRoot":"","sources":["../../src/operations/drop.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/estimated_document_count.js b/food-ordering-app/server/node_modules/mongodb/lib/operations/estimated_document_count.js index eb303af36..1cd7f60bf 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/operations/estimated_document_count.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/operations/estimated_document_count.js @@ -15,6 +15,11 @@ class EstimatedDocumentCountOperation extends command_1.CommandOperation { if (typeof this.options.maxTimeMS === 'number') { cmd.maxTimeMS = this.options.maxTimeMS; } + // we check for undefined specifically here to allow falsy values + // eslint-disable-next-line no-restricted-syntax + if (this.options.comment !== undefined) { + cmd.comment = this.options.comment; + } super.executeCommand(server, session, cmd, (err, response) => { if (err) { callback(err); diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/estimated_document_count.js.map b/food-ordering-app/server/node_modules/mongodb/lib/operations/estimated_document_count.js.map index ecf67db83..e325a23d5 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/operations/estimated_document_count.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/operations/estimated_document_count.js.map @@ -1 +1 @@ -{"version":3,"file":"estimated_document_count.js","sourceRoot":"","sources":["../../src/operations/estimated_document_count.ts"],"names":[],"mappings":";;;AAKA,uCAAsE;AACtE,2CAAoD;AAYpD,gBAAgB;AAChB,MAAa,+BAAgC,SAAQ,0BAAwB;IAI3E,YAAY,UAAsB,EAAE,UAAyC,EAAE;QAC7E,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC;IAClD,CAAC;IAEQ,OAAO,CACd,MAAc,EACd,OAAkC,EAClC,QAA0B;QAE1B,MAAM,GAAG,GAAa,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;QAErD,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE;YAC9C,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;SACxC;QAED,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;YAC3D,IAAI,GAAG,EAAE;gBACP,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACd,OAAO;aACR;YAED,QAAQ,CAAC,SAAS,EAAE,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,CAAC,KAAI,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AA9BD,0EA8BC;AAED,IAAA,yBAAa,EAAC,+BAA+B,EAAE;IAC7C,kBAAM,CAAC,cAAc;IACrB,kBAAM,CAAC,SAAS;IAChB,kBAAM,CAAC,eAAe;CACvB,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"estimated_document_count.js","sourceRoot":"","sources":["../../src/operations/estimated_document_count.ts"],"names":[],"mappings":";;;AAKA,uCAAsE;AACtE,2CAAoD;AAYpD,gBAAgB;AAChB,MAAa,+BAAgC,SAAQ,0BAAwB;IAI3E,YAAY,UAAsB,EAAE,UAAyC,EAAE;QAC7E,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC;IAClD,CAAC;IAEQ,OAAO,CACd,MAAc,EACd,OAAkC,EAClC,QAA0B;QAE1B,MAAM,GAAG,GAAa,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;QAErD,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE;YAC9C,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;SACxC;QAED,iEAAiE;QACjE,gDAAgD;QAChD,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE;YACtC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;SACpC;QAED,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;YAC3D,IAAI,GAAG,EAAE;gBACP,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACd,OAAO;aACR;YAED,QAAQ,CAAC,SAAS,EAAE,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,CAAC,KAAI,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AApCD,0EAoCC;AAED,IAAA,yBAAa,EAAC,+BAA+B,EAAE;IAC7C,kBAAM,CAAC,cAAc;IACrB,kBAAM,CAAC,SAAS;IAChB,kBAAM,CAAC,eAAe;CACvB,CAAC,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/execute_operation.js b/food-ordering-app/server/node_modules/mongodb/lib/operations/execute_operation.js index 5cd49f341..1ce4859ee 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/operations/execute_operation.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/operations/execute_operation.js @@ -9,83 +9,76 @@ const operation_1 = require("./operation"); const MMAPv1_RETRY_WRITES_ERROR_CODE = error_1.MONGODB_ERROR_CODES.IllegalOperation; const MMAPv1_RETRY_WRITES_ERROR_MESSAGE = 'This MongoDB deployment does not support retryable writes. Please add retryWrites=false to your connection string.'; function executeOperation(client, operation, callback) { + return (0, utils_1.maybeCallback)(() => executeOperationAsync(client, operation), callback); +} +exports.executeOperation = executeOperation; +async function executeOperationAsync(client, operation) { + var _a, _b; if (!(operation instanceof operation_1.AbstractOperation)) { // TODO(NODE-3483): Extend MongoRuntimeError throw new error_1.MongoRuntimeError('This method requires a valid operation instance'); } - return (0, utils_1.maybePromise)(callback, callback => { - const topology = client.topology; - if (topology == null) { - if (client.s.hasBeenClosed) { - return callback(new error_1.MongoNotConnectedError('Client must be connected before running operations')); - } - client.s.options[Symbol.for('@@mdb.skipPingOnConnect')] = true; - return client.connect(error => { - delete client.s.options[Symbol.for('@@mdb.skipPingOnConnect')]; - if (error) { - return callback(error); - } - return executeOperation(client, operation, callback); - }); + if (client.topology == null) { + // Auto connect on operation + if (client.s.hasBeenClosed) { + throw new error_1.MongoNotConnectedError('Client must be connected before running operations'); } - if (topology.shouldCheckForSessionSupport()) { - return topology.selectServer(read_preference_1.ReadPreference.primaryPreferred, {}, err => { - if (err) - return callback(err); - executeOperation(client, operation, callback); - }); + client.s.options[Symbol.for('@@mdb.skipPingOnConnect')] = true; + try { + await client.connect(); } - // The driver sessions spec mandates that we implicitly create sessions for operations - // that are not explicitly provided with a session. - let session = operation.session; - let owner; - if (topology.hasSessionSupport()) { - if (session == null) { - owner = Symbol(); - session = topology.startSession({ owner, explicit: false }); - } - else if (session.hasEnded) { - return callback(new error_1.MongoExpiredSessionError('Use of expired sessions is not permitted')); - } - else if (session.snapshotEnabled && !topology.capabilities.supportsSnapshotReads) { - return callback(new error_1.MongoCompatibilityError('Snapshot reads require MongoDB 5.0 or later')); - } + finally { + delete client.s.options[Symbol.for('@@mdb.skipPingOnConnect')]; + } + } + const { topology } = client; + if (topology == null) { + throw new error_1.MongoRuntimeError('client.connect did not create a topology but also did not throw'); + } + if (topology.shouldCheckForSessionSupport()) { + await topology.selectServerAsync(read_preference_1.ReadPreference.primaryPreferred, {}); + } + // The driver sessions spec mandates that we implicitly create sessions for operations + // that are not explicitly provided with a session. + let session = operation.session; + let owner; + if (topology.hasSessionSupport()) { + if (session == null) { + owner = Symbol(); + session = client.startSession({ owner, explicit: false }); + } + else if (session.hasEnded) { + throw new error_1.MongoExpiredSessionError('Use of expired sessions is not permitted'); } - else if (session) { + else if (session.snapshotEnabled && !topology.capabilities.supportsSnapshotReads) { + throw new error_1.MongoCompatibilityError('Snapshot reads require MongoDB 5.0 or later'); + } + } + else { + // no session support + if (session && session.explicit) { // If the user passed an explicit session and we are still, after server selection, // trying to run against a topology that doesn't support sessions we error out. - return callback(new error_1.MongoCompatibilityError('Current topology does not support sessions')); + throw new error_1.MongoCompatibilityError('Current topology does not support sessions'); } - try { - executeWithServerSelection(topology, session, operation, (error, result) => { - if ((session === null || session === void 0 ? void 0 : session.owner) != null && session.owner === owner) { - return session.endSession(endSessionError => callback(endSessionError !== null && endSessionError !== void 0 ? endSessionError : error, result)); - } - callback(error, result); - }); - } - catch (error) { - if ((session === null || session === void 0 ? void 0 : session.owner) != null && session.owner === owner) { - session.endSession(); - } - throw error; + else if (session && !session.explicit) { + // We do not have to worry about ending the session because the server session has not been acquired yet + delete operation.options.session; + operation.clearSession(); + session = undefined; } - }); -} -exports.executeOperation = executeOperation; -function executeWithServerSelection(topology, session, operation, callback) { - var _a, _b; + } const readPreference = (_a = operation.readPreference) !== null && _a !== void 0 ? _a : read_preference_1.ReadPreference.primary; const inTransaction = !!(session === null || session === void 0 ? void 0 : session.inTransaction()); if (inTransaction && !readPreference.equals(read_preference_1.ReadPreference.primary)) { - return callback(new error_1.MongoTransactionError(`Read preference in a transaction must be primary, not: ${readPreference.mode}`)); + throw new error_1.MongoTransactionError(`Read preference in a transaction must be primary, not: ${readPreference.mode}`); } if ((session === null || session === void 0 ? void 0 : session.isPinned) && session.transaction.isCommitted && !operation.bypassPinningCheck) { session.unpin(); } let selector; - if (operation.hasAspect(operation_1.Aspect.CURSOR_ITERATING)) { - // Get more operations must always select the same server, but run through + if (operation.hasAspect(operation_1.Aspect.MUST_SELECT_SAME_SERVER)) { + // GetMore and KillCursor operations must always select the same server, but run through // server selection to potentially force monitor checks if the server is // in an unknown state. selector = (0, server_selection_1.sameServerSelector)((_b = operation.server) === null || _b === void 0 ? void 0 : _b.description); @@ -98,79 +91,92 @@ function executeWithServerSelection(topology, session, operation, callback) { else { selector = readPreference; } - const serverSelectionOptions = { session }; - function retryOperation(originalError) { - const isWriteOperation = operation.hasAspect(operation_1.Aspect.WRITE_OPERATION); - const isReadOperation = operation.hasAspect(operation_1.Aspect.READ_OPERATION); - if (isWriteOperation && originalError.code === MMAPv1_RETRY_WRITES_ERROR_CODE) { - return callback(new error_1.MongoServerError({ - message: MMAPv1_RETRY_WRITES_ERROR_MESSAGE, - errmsg: MMAPv1_RETRY_WRITES_ERROR_MESSAGE, - originalError - })); + const server = await topology.selectServerAsync(selector, { session }); + if (session == null) { + // No session also means it is not retryable, early exit + return operation.executeAsync(server, undefined); + } + if (!operation.hasAspect(operation_1.Aspect.RETRYABLE)) { + // non-retryable operation, early exit + try { + return await operation.executeAsync(server, session); } - if (isWriteOperation && !(0, error_1.isRetryableWriteError)(originalError)) { - return callback(originalError); + finally { + if ((session === null || session === void 0 ? void 0 : session.owner) != null && session.owner === owner) { + await session.endSession().catch(() => null); + } } - if (isReadOperation && !(0, error_1.isRetryableReadError)(originalError)) { - return callback(originalError); + } + const willRetryRead = topology.s.options.retryReads && !inTransaction && operation.canRetryRead; + const willRetryWrite = topology.s.options.retryWrites && + !inTransaction && + (0, utils_1.supportsRetryableWrites)(server) && + operation.canRetryWrite; + const hasReadAspect = operation.hasAspect(operation_1.Aspect.READ_OPERATION); + const hasWriteAspect = operation.hasAspect(operation_1.Aspect.WRITE_OPERATION); + const willRetry = (hasReadAspect && willRetryRead) || (hasWriteAspect && willRetryWrite); + if (hasWriteAspect && willRetryWrite) { + operation.options.willRetryWrite = true; + session.incrementTransactionNumber(); + } + try { + return await operation.executeAsync(server, session); + } + catch (operationError) { + if (willRetry && operationError instanceof error_1.MongoError) { + return await retryOperation(operation, operationError, { + session, + topology, + selector + }); } - if (originalError instanceof error_1.MongoNetworkError && - (session === null || session === void 0 ? void 0 : session.isPinned) && - !session.inTransaction() && - operation.hasAspect(operation_1.Aspect.CURSOR_CREATING)) { - // If we have a cursor and the initial command fails with a network error, - // we can retry it on another connection. So we need to check it back in, clear the - // pool for the service id, and retry again. - session.unpin({ force: true, forceClear: true }); + throw operationError; + } + finally { + if ((session === null || session === void 0 ? void 0 : session.owner) != null && session.owner === owner) { + await session.endSession().catch(() => null); } - // select a new server, and attempt to retry the operation - topology.selectServer(selector, serverSelectionOptions, (error, server) => { - if (!error && isWriteOperation && !(0, utils_1.supportsRetryableWrites)(server)) { - return callback(new error_1.MongoUnexpectedServerResponseError('Selected server does not support retryable writes')); - } - if (error || !server) { - return callback(error !== null && error !== void 0 ? error : new error_1.MongoUnexpectedServerResponseError('Server selection failed without error')); - } - operation.execute(server, session, callback); + } +} +async function retryOperation(operation, originalError, { session, topology, selector }) { + const isWriteOperation = operation.hasAspect(operation_1.Aspect.WRITE_OPERATION); + const isReadOperation = operation.hasAspect(operation_1.Aspect.READ_OPERATION); + if (isWriteOperation && originalError.code === MMAPv1_RETRY_WRITES_ERROR_CODE) { + throw new error_1.MongoServerError({ + message: MMAPv1_RETRY_WRITES_ERROR_MESSAGE, + errmsg: MMAPv1_RETRY_WRITES_ERROR_MESSAGE, + originalError }); } - if (readPreference && - !readPreference.equals(read_preference_1.ReadPreference.primary) && - (session === null || session === void 0 ? void 0 : session.inTransaction())) { - callback(new error_1.MongoTransactionError(`Read preference in a transaction must be primary, not: ${readPreference.mode}`)); - return; + if (isWriteOperation && !(0, error_1.isRetryableWriteError)(originalError)) { + throw originalError; } - // select a server, and execute the operation against it - topology.selectServer(selector, serverSelectionOptions, (error, server) => { - if (error || !server) { - return callback(error); - } - if (session && operation.hasAspect(operation_1.Aspect.RETRYABLE)) { - const willRetryRead = topology.s.options.retryReads && !inTransaction && operation.canRetryRead; - const willRetryWrite = topology.s.options.retryWrites && - !inTransaction && - (0, utils_1.supportsRetryableWrites)(server) && - operation.canRetryWrite; - const hasReadAspect = operation.hasAspect(operation_1.Aspect.READ_OPERATION); - const hasWriteAspect = operation.hasAspect(operation_1.Aspect.WRITE_OPERATION); - if ((hasReadAspect && willRetryRead) || (hasWriteAspect && willRetryWrite)) { - if (hasWriteAspect && willRetryWrite) { - operation.options.willRetryWrite = true; - session.incrementTransactionNumber(); - } - return operation.execute(server, session, (error, result) => { - if (error instanceof error_1.MongoError) { - return retryOperation(error); - } - else if (error) { - return callback(error); - } - callback(undefined, result); - }); - } + if (isReadOperation && !(0, error_1.isRetryableReadError)(originalError)) { + throw originalError; + } + if (originalError instanceof error_1.MongoNetworkError && + session.isPinned && + !session.inTransaction() && + operation.hasAspect(operation_1.Aspect.CURSOR_CREATING)) { + // If we have a cursor and the initial command fails with a network error, + // we can retry it on another connection. So we need to check it back in, clear the + // pool for the service id, and retry again. + session.unpin({ force: true, forceClear: true }); + } + // select a new server, and attempt to retry the operation + const server = await topology.selectServerAsync(selector, { session }); + if (isWriteOperation && !(0, utils_1.supportsRetryableWrites)(server)) { + throw new error_1.MongoUnexpectedServerResponseError('Selected server does not support retryable writes'); + } + try { + return await operation.executeAsync(server, session); + } + catch (retryError) { + if (retryError instanceof error_1.MongoError && + retryError.hasErrorLabel(error_1.MongoErrorLabel.NoWritesPerformed)) { + throw originalError; } - return operation.execute(server, session, callback); - }); + throw retryError; + } } //# sourceMappingURL=execute_operation.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/execute_operation.js.map b/food-ordering-app/server/node_modules/mongodb/lib/operations/execute_operation.js.map index caad823d2..436885d4d 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/operations/execute_operation.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/operations/execute_operation.js.map @@ -1 +1 @@ -{"version":3,"file":"execute_operation.js","sourceRoot":"","sources":["../../src/operations/execute_operation.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"execute_operation.js","sourceRoot":"","sources":["../../src/operations/execute_operation.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/find.js b/food-ordering-app/server/node_modules/mongodb/lib/operations/find.js index f961909f3..b196f663f 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/operations/find.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/operations/find.js @@ -7,12 +7,12 @@ const sort_1 = require("../sort"); const utils_1 = require("../utils"); const command_1 = require("./command"); const operation_1 = require("./operation"); -const SUPPORTS_WRITE_CONCERN_AND_COLLATION = 5; /** @internal */ class FindOperation extends command_1.CommandOperation { constructor(collection, ns, filter = {}, options = {}) { super(collection, options); - this.options = options; + this.options = { ...options }; + delete this.options.writeConcern; this.ns = ns; if (typeof filter !== 'object' || Array.isArray(filter)) { throw new error_1.MongoInvalidArgumentError('Query filter must be a plain object or ObjectId'); @@ -29,16 +29,7 @@ class FindOperation extends command_1.CommandOperation { } execute(server, session, callback) { this.server = server; - const serverWireVersion = (0, utils_1.maxWireVersion)(server); const options = this.options; - if (options.allowDiskUse != null && serverWireVersion < 4) { - callback(new error_1.MongoCompatibilityError('Option "allowDiskUse" is not supported on MongoDB < 3.2')); - return; - } - if (options.collation && serverWireVersion < SUPPORTS_WRITE_CONCERN_AND_COLLATION) { - callback(new error_1.MongoCompatibilityError(`Server ${server.name}, which reports wire version ${serverWireVersion}, does not support collation`)); - return; - } let findCommand = makeFindCommand(this.ns, this.filter, options); if (this.explain) { findCommand = (0, utils_1.decorateWithExplain)(findCommand, this.explain); @@ -130,6 +121,9 @@ function makeFindCommand(ns, filter, options) { if (typeof options.tailable === 'boolean') { findCommand.tailable = options.tailable; } + if (typeof options.oplogReplay === 'boolean') { + findCommand.oplogReplay = options.oplogReplay; + } if (typeof options.timeout === 'boolean') { findCommand.noCursorTimeout = !options.timeout; } diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/find.js.map b/food-ordering-app/server/node_modules/mongodb/lib/operations/find.js.map index d8b587edc..05b985ea2 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/operations/find.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/operations/find.js.map @@ -1 +1 @@ -{"version":3,"file":"find.js","sourceRoot":"","sources":["../../src/operations/find.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"find.js","sourceRoot":"","sources":["../../src/operations/find.ts"],"names":[],"mappings":";;;AAEA,oCAAqD;AACrD,kDAA8C;AAG9C,kCAA2C;AAC3C,oCAA+F;AAC/F,uCAAwF;AACxF,2CAA0D;AAyD1D,gBAAgB;AAChB,MAAa,aAAc,SAAQ,0BAA0B;IAI3D,YACE,UAAkC,EAClC,EAAoB,EACpB,SAAmB,EAAE,EACrB,UAAuB,EAAE;QAEzB,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAE3B,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;QACjC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QAEb,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACvD,MAAM,IAAI,iCAAyB,CAAC,iDAAiD,CAAC,CAAC;SACxF;QAED,oEAAoE;QACpE,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YAC3B,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACxF,IAAI,UAAU,KAAK,MAAM,CAAC,MAAM,EAAE;gBAChC,MAAM,IAAI,iCAAyB,CACjC,qEAAqE,MAAM,CAAC,MAAM,SAAS,UAAU,GAAG,CACzG,CAAC;aACH;SACF;QAED,kDAAkD;QAClD,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IAC7F,CAAC;IAEQ,OAAO,CACd,MAAc,EACd,OAAkC,EAClC,QAA4B;QAE5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAE7B,IAAI,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjE,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,WAAW,GAAG,IAAA,2BAAmB,EAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SAC9D;QAED,MAAM,CAAC,OAAO,CACZ,IAAI,CAAC,EAAE,EACP,WAAW,EACX;YACE,GAAG,IAAI,CAAC,OAAO;YACf,GAAG,IAAI,CAAC,WAAW;YACnB,mBAAmB,EAAE,YAAY;YACjC,OAAO;SACR,EACD,QAAQ,CACT,CAAC;IACJ,CAAC;CACF;AA5DD,sCA4DC;AAED,SAAS,eAAe,CAAC,EAAoB,EAAE,MAAgB,EAAE,OAAoB;IACnF,MAAM,WAAW,GAAa;QAC5B,IAAI,EAAE,EAAE,CAAC,UAAU;QACnB,MAAM;KACP,CAAC;IAEF,IAAI,OAAO,CAAC,IAAI,EAAE;QAChB,WAAW,CAAC,IAAI,GAAG,IAAA,iBAAU,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KAC7C;IAED,IAAI,OAAO,CAAC,UAAU,EAAE;QACtB,IAAI,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACpC,IAAI,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAC3C,UAAU,GAAG,UAAU,CAAC,MAAM;gBAC5B,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBAClC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAClB,OAAO,MAAM,CAAC;gBAChB,CAAC,EAAE,EAAE,CAAC;gBACR,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;SAChB;QAED,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC;KACrC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE;QAChB,WAAW,CAAC,IAAI,GAAG,IAAA,0BAAkB,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACrD;IAED,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;QACpC,WAAW,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;KACjC;IAED,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE;QACrC,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE;YACrB,WAAW,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;YACnC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC;SAChC;aAAM;YACL,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;SACnC;KACF;IAED,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE;QACzC,IAAI,OAAO,CAAC,SAAS,GAAG,CAAC,EAAE;YACzB,IACE,OAAO,CAAC,KAAK;gBACb,OAAO,CAAC,KAAK,KAAK,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EACrD;gBACA,WAAW,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC;aACxC;YAED,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC;SAChC;aAAM;YACL,WAAW,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;SAC3C;KACF;IAED,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE;QAC5C,WAAW,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;KAC/C;IAED,iEAAiE;IACjE,gDAAgD;IAChD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE;QACjC,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;KACvC;IAED,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE;QACzC,WAAW,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;KAC3C;IAED,MAAM,WAAW,GAAG,0BAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACrD,IAAI,WAAW,EAAE;QACf,WAAW,CAAC,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;KAChD;IAED,IAAI,OAAO,CAAC,GAAG,EAAE;QACf,WAAW,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;KAC/B;IAED,IAAI,OAAO,CAAC,GAAG,EAAE;QACf,WAAW,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;KAC/B;IAED,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE;QAC1C,WAAW,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;KAC3C;IAED,IAAI,OAAO,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE;QAC7C,WAAW,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;KACjD;IAED,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE;QACzC,WAAW,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;KACzC;IAED,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE;QAC5C,WAAW,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;KAC/C;IAED,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE;QACxC,WAAW,CAAC,eAAe,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;KAChD;SAAM,IAAI,OAAO,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE;QACvD,WAAW,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;KACvD;IAED,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE;QAC1C,WAAW,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;KAC3C;IAED,IAAI,OAAO,OAAO,CAAC,mBAAmB,KAAK,SAAS,EAAE;QACpD,WAAW,CAAC,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;KAC/D;IAED,IAAI,OAAO,CAAC,SAAS,EAAE;QACrB,WAAW,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;KAC3C;IAED,IAAI,OAAO,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE;QAC7C,WAAW,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;KACjD;IAED,IAAI,OAAO,CAAC,GAAG,EAAE;QACf,WAAW,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;KAC/B;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,IAAA,yBAAa,EAAC,aAAa,EAAE;IAC3B,kBAAM,CAAC,cAAc;IACrB,kBAAM,CAAC,SAAS;IAChB,kBAAM,CAAC,WAAW;IAClB,kBAAM,CAAC,eAAe;CACvB,CAAC,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/find_and_modify.js b/food-ordering-app/server/node_modules/mongodb/lib/operations/find_and_modify.js index 525bdc692..ee42a277e 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/operations/find_and_modify.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/operations/find_and_modify.js @@ -85,10 +85,6 @@ class FindAndModifyOperation extends command_1.CommandOperation { } cmd.hint = options.hint; } - if (this.explain && (0, utils_1.maxWireVersion)(server) < 4) { - callback(new error_1.MongoCompatibilityError(`Server ${server.name} does not support explain on findAndModify`)); - return; - } // Execute the command super.executeCommand(server, session, cmd, (err, result) => { if (err) diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/find_and_modify.js.map b/food-ordering-app/server/node_modules/mongodb/lib/operations/find_and_modify.js.map index 2d6262aff..55c98da27 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/operations/find_and_modify.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/operations/find_and_modify.js.map @@ -1 +1 @@ -{"version":3,"file":"find_and_modify.js","sourceRoot":"","sources":["../../src/operations/find_and_modify.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"find_and_modify.js","sourceRoot":"","sources":["../../src/operations/find_and_modify.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/get_more.js b/food-ordering-app/server/node_modules/mongodb/lib/operations/get_more.js index c1a8bf636..94ba64ed9 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/operations/get_more.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/operations/get_more.js @@ -6,13 +6,9 @@ const utils_1 = require("../utils"); const operation_1 = require("./operation"); /** @internal */ class GetMoreOperation extends operation_1.AbstractOperation { - constructor(ns, cursorId, server, options = {}) { + constructor(ns, cursorId, server, options) { super(options); this.options = options; - // comment on getMore is only supported for server versions 4.4 and above - if ((0, utils_1.maxWireVersion)(server) < 9) { - delete this.options.comment; - } this.ns = ns; this.cursorId = cursorId; this.server = server; @@ -25,9 +21,38 @@ class GetMoreOperation extends operation_1.AbstractOperation { if (server !== this.server) { return callback(new error_1.MongoRuntimeError('Getmore must run on the same server operation began on')); } - server.getMore(this.ns, this.cursorId, this.options, callback); + if (this.cursorId == null || this.cursorId.isZero()) { + return callback(new error_1.MongoRuntimeError('Unable to iterate cursor with no id')); + } + const collection = this.ns.collection; + if (collection == null) { + // Cursors should have adopted the namespace returned by MongoDB + // which should always defined a collection name (even a pseudo one, ex. db.aggregate()) + return callback(new error_1.MongoRuntimeError('A collection name must be determined before getMore')); + } + const getMoreCmd = { + getMore: this.cursorId, + collection + }; + if (typeof this.options.batchSize === 'number') { + getMoreCmd.batchSize = Math.abs(this.options.batchSize); + } + if (typeof this.options.maxAwaitTimeMS === 'number') { + getMoreCmd.maxTimeMS = this.options.maxAwaitTimeMS; + } + // we check for undefined specifically here to allow falsy values + // eslint-disable-next-line no-restricted-syntax + if (this.options.comment !== undefined && (0, utils_1.maxWireVersion)(server) >= 9) { + getMoreCmd.comment = this.options.comment; + } + const commandOptions = { + returnFieldSelector: null, + documentsReturnedIn: 'nextBatch', + ...this.options + }; + server.command(this.ns, getMoreCmd, commandOptions, callback); } } exports.GetMoreOperation = GetMoreOperation; -(0, operation_1.defineAspects)(GetMoreOperation, [operation_1.Aspect.READ_OPERATION, operation_1.Aspect.CURSOR_ITERATING]); +(0, operation_1.defineAspects)(GetMoreOperation, [operation_1.Aspect.READ_OPERATION, operation_1.Aspect.MUST_SELECT_SAME_SERVER]); //# sourceMappingURL=get_more.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/get_more.js.map b/food-ordering-app/server/node_modules/mongodb/lib/operations/get_more.js.map index c9199200a..3803d986f 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/operations/get_more.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/operations/get_more.js.map @@ -1 +1 @@ -{"version":3,"file":"get_more.js","sourceRoot":"","sources":["../../src/operations/get_more.ts"],"names":[],"mappings":";;;AACA,oCAA6C;AAG7C,oCAAsE;AACtE,2CAAyF;AAmBzF,gBAAgB;AAChB,MAAa,gBAAiB,SAAQ,6BAAiB;IAIrD,YAAY,EAAoB,EAAE,QAAc,EAAE,MAAc,EAAE,UAA0B,EAAE;QAC5F,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,yEAAyE;QACzE,IAAI,IAAA,sBAAc,EAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;SAC7B;QAED,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;OAGG;IACM,OAAO,CACd,MAAc,EACd,OAAkC,EAClC,QAA4B;QAE5B,IAAI,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;YAC1B,OAAO,QAAQ,CACb,IAAI,yBAAiB,CAAC,wDAAwD,CAAC,CAChF,CAAC;SACH;QACD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACjE,CAAC;CACF;AAnCD,4CAmCC;AAED,IAAA,yBAAa,EAAC,gBAAgB,EAAE,CAAC,kBAAM,CAAC,cAAc,EAAE,kBAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"get_more.js","sourceRoot":"","sources":["../../src/operations/get_more.ts"],"names":[],"mappings":";;;AACA,oCAA6C;AAG7C,oCAAsE;AACtE,2CAAyF;AA+BzF,gBAAgB;AAChB,MAAa,gBAAiB,SAAQ,6BAAiB;IAIrD,YAAY,EAAoB,EAAE,QAAc,EAAE,MAAc,EAAE,OAAuB;QACvF,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;OAGG;IACM,OAAO,CACd,MAAc,EACd,OAAkC,EAClC,QAA4B;QAE5B,IAAI,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;YAC1B,OAAO,QAAQ,CACb,IAAI,yBAAiB,CAAC,wDAAwD,CAAC,CAChF,CAAC;SACH;QAED,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE;YACnD,OAAO,QAAQ,CAAC,IAAI,yBAAiB,CAAC,qCAAqC,CAAC,CAAC,CAAC;SAC/E;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC;QACtC,IAAI,UAAU,IAAI,IAAI,EAAE;YACtB,gEAAgE;YAChE,wFAAwF;YACxF,OAAO,QAAQ,CAAC,IAAI,yBAAiB,CAAC,qDAAqD,CAAC,CAAC,CAAC;SAC/F;QAED,MAAM,UAAU,GAAmB;YACjC,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,UAAU;SACX,CAAC;QAEF,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE;YAC9C,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;SACzD;QAED,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,KAAK,QAAQ,EAAE;YACnD,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;SACpD;QAED,iEAAiE;QACjE,gDAAgD;QAChD,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,IAAA,sBAAc,EAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACrE,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;SAC3C;QAED,MAAM,cAAc,GAAG;YACrB,mBAAmB,EAAE,IAAI;YACzB,mBAAmB,EAAE,WAAW;YAChC,GAAG,IAAI,CAAC,OAAO;SAChB,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;IAChE,CAAC;CACF;AAlED,4CAkEC;AAED,IAAA,yBAAa,EAAC,gBAAgB,EAAE,CAAC,kBAAM,CAAC,cAAc,EAAE,kBAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/indexes.js b/food-ordering-app/server/node_modules/mongodb/lib/operations/indexes.js index 73f87d2bc..87f6c055e 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/operations/indexes.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/operations/indexes.js @@ -1,13 +1,11 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.IndexInformationOperation = exports.IndexExistsOperation = exports.ListIndexesCursor = exports.ListIndexesOperation = exports.DropIndexesOperation = exports.DropIndexOperation = exports.EnsureIndexOperation = exports.CreateIndexOperation = exports.CreateIndexesOperation = exports.IndexesOperation = void 0; -const abstract_cursor_1 = require("../cursor/abstract_cursor"); +exports.IndexInformationOperation = exports.IndexExistsOperation = exports.ListIndexesOperation = exports.DropIndexesOperation = exports.DropIndexOperation = exports.EnsureIndexOperation = exports.CreateIndexOperation = exports.CreateIndexesOperation = exports.IndexesOperation = void 0; const error_1 = require("../error"); const read_preference_1 = require("../read_preference"); const utils_1 = require("../utils"); const command_1 = require("./command"); const common_functions_1 = require("./common_functions"); -const execute_operation_1 = require("./execute_operation"); const operation_1 = require("./operation"); const VALID_INDEX_OPTIONS = new Set([ 'background', @@ -36,19 +34,36 @@ const VALID_INDEX_OPTIONS = new Set([ // wildcard indexes 'wildcardProjection' ]); +function isIndexDirection(x) { + return (typeof x === 'number' || x === '2d' || x === '2dsphere' || x === 'text' || x === 'geoHaystack'); +} +function isSingleIndexTuple(t) { + return Array.isArray(t) && t.length === 2 && isIndexDirection(t[1]); +} function makeIndexSpec(indexSpec, options) { - const indexParameters = (0, utils_1.parseIndexOptions)(indexSpec); - // Generate the index name - const name = typeof options.name === 'string' ? options.name : indexParameters.name; - // Set up the index - const finalIndexSpec = { name, key: indexParameters.fieldHash }; - // merge valid index options into the index spec - for (const optionName in options) { - if (VALID_INDEX_OPTIONS.has(optionName)) { - finalIndexSpec[optionName] = options[optionName]; + var _a; + const key = new Map(); + const indexSpecs = !Array.isArray(indexSpec) || isSingleIndexTuple(indexSpec) ? [indexSpec] : indexSpec; + // Iterate through array and handle different types + for (const spec of indexSpecs) { + if (typeof spec === 'string') { + key.set(spec, 1); + } + else if (Array.isArray(spec)) { + key.set(spec[0], (_a = spec[1]) !== null && _a !== void 0 ? _a : 1); + } + else if (spec instanceof Map) { + for (const [property, value] of spec) { + key.set(property, value); + } + } + else if ((0, utils_1.isObject)(spec)) { + for (const [property, value] of Object.entries(spec)) { + key.set(property, value); + } } } - return finalIndexSpec; + return { ...options, key }; } /** @internal */ class IndexesOperation extends operation_1.AbstractOperation { @@ -70,29 +85,22 @@ class CreateIndexesOperation extends command_1.CommandOperation { super(parent, options); this.options = options !== null && options !== void 0 ? options : {}; this.collectionName = collectionName; - this.indexes = indexes; + this.indexes = indexes.map(userIndex => { + // Ensure the key is a Map to preserve index key ordering + const key = userIndex.key instanceof Map ? userIndex.key : new Map(Object.entries(userIndex.key)); + const name = userIndex.name != null ? userIndex.name : Array.from(key).flat().join('_'); + const validIndexOptions = Object.fromEntries(Object.entries({ ...userIndex }).filter(([optionName]) => VALID_INDEX_OPTIONS.has(optionName))); + return { + ...validIndexOptions, + name, + key + }; + }); } execute(server, session, callback) { const options = this.options; const indexes = this.indexes; const serverWireVersion = (0, utils_1.maxWireVersion)(server); - // Ensure we generate the correct name if the parameter is not set - for (let i = 0; i < indexes.length; i++) { - // Did the user pass in a collation, check if our write server supports it - if (indexes[i].collation && serverWireVersion < 5) { - callback(new error_1.MongoCompatibilityError(`Server ${server.name}, which reports wire version ${serverWireVersion}, ` + - 'does not support collation')); - return; - } - if (indexes[i].name == null) { - const keys = []; - for (const name in indexes[i].key) { - keys.push(`${name}_${indexes[i].key[name]}`); - } - // Set the name - indexes[i].name = keys.join('_'); - } - } const cmd = { createIndexes: this.collectionName, indexes }; if (options.commitQuorum != null) { if (serverWireVersion < 9) { @@ -117,11 +125,6 @@ exports.CreateIndexesOperation = CreateIndexesOperation; /** @internal */ class CreateIndexOperation extends CreateIndexesOperation { constructor(parent, collectionName, indexSpec, options) { - // createIndex can be called with a variety of styles: - // coll.createIndex('a'); - // coll.createIndex({ a: 1 }); - // coll.createIndex([['a', 1]]); - // createIndexes is always called with an array of index spec objects super(parent, collectionName, [makeIndexSpec(indexSpec, options)], options); } execute(server, session, callback) { @@ -193,7 +196,8 @@ exports.DropIndexesOperation = DropIndexesOperation; class ListIndexesOperation extends command_1.CommandOperation { constructor(collection, options) { super(collection, options); - this.options = options !== null && options !== void 0 ? options : {}; + this.options = { ...options }; + delete this.options.writeConcern; this.collectionNamespace = collection.s.namespace; } execute(server, session, callback) { @@ -209,35 +213,6 @@ class ListIndexesOperation extends command_1.CommandOperation { } } exports.ListIndexesOperation = ListIndexesOperation; -/** @public */ -class ListIndexesCursor extends abstract_cursor_1.AbstractCursor { - constructor(collection, options) { - super(collection.s.db.s.client, collection.s.namespace, options); - this.parent = collection; - this.options = options; - } - clone() { - return new ListIndexesCursor(this.parent, { - ...this.options, - ...this.cursorOptions - }); - } - /** @internal */ - _initialize(session, callback) { - const operation = new ListIndexesOperation(this.parent, { - ...this.cursorOptions, - ...this.options, - session - }); - (0, execute_operation_1.executeOperation)(this.parent.s.db.s.client, operation, (err, response) => { - if (err || response == null) - return callback(err); - // TODO: NODE-2882 - callback(undefined, { server: operation.server, session, response }); - }); - } -} -exports.ListIndexesCursor = ListIndexesCursor; /** @internal */ class IndexExistsOperation extends operation_1.AbstractOperation { constructor(collection, indexes, options) { diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/indexes.js.map b/food-ordering-app/server/node_modules/mongodb/lib/operations/indexes.js.map index 07dfd9074..c20868161 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/operations/indexes.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/operations/indexes.js.map @@ -1 +1 @@ -{"version":3,"file":"indexes.js","sourceRoot":"","sources":["../../src/operations/indexes.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"indexes.js","sourceRoot":"","sources":["../../src/operations/indexes.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/kill_cursors.js b/food-ordering-app/server/node_modules/mongodb/lib/operations/kill_cursors.js new file mode 100644 index 000000000..63d6e3e6f --- /dev/null +++ b/food-ordering-app/server/node_modules/mongodb/lib/operations/kill_cursors.js @@ -0,0 +1,32 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.KillCursorsOperation = void 0; +const error_1 = require("../error"); +const operation_1 = require("./operation"); +class KillCursorsOperation extends operation_1.AbstractOperation { + constructor(cursorId, ns, server, options) { + super(options); + this.ns = ns; + this.cursorId = cursorId; + this.server = server; + } + execute(server, session, callback) { + if (server !== this.server) { + return callback(new error_1.MongoRuntimeError('Killcursor must run on the same server operation began on')); + } + const killCursors = this.ns.collection; + if (killCursors == null) { + // Cursors should have adopted the namespace returned by MongoDB + // which should always defined a collection name (even a pseudo one, ex. db.aggregate()) + return callback(new error_1.MongoRuntimeError('A collection name must be determined before killCursors')); + } + const killCursorsCommand = { + killCursors, + cursors: [this.cursorId] + }; + server.command(this.ns, killCursorsCommand, { session }, () => callback()); + } +} +exports.KillCursorsOperation = KillCursorsOperation; +(0, operation_1.defineAspects)(KillCursorsOperation, [operation_1.Aspect.MUST_SELECT_SAME_SERVER]); +//# sourceMappingURL=kill_cursors.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/kill_cursors.js.map b/food-ordering-app/server/node_modules/mongodb/lib/operations/kill_cursors.js.map new file mode 100644 index 000000000..022ad6874 --- /dev/null +++ b/food-ordering-app/server/node_modules/mongodb/lib/operations/kill_cursors.js.map @@ -0,0 +1 @@ +{"version":3,"file":"kill_cursors.js","sourceRoot":"","sources":["../../src/operations/kill_cursors.ts"],"names":[],"mappings":";;;AACA,oCAA6C;AAI7C,2CAAyF;AAYzF,MAAa,oBAAqB,SAAQ,6BAAiB;IAGzD,YAAY,QAAc,EAAE,EAAoB,EAAE,MAAc,EAAE,OAAyB;QACzF,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,OAAO,CAAC,MAAc,EAAE,OAAkC,EAAE,QAAwB;QAClF,IAAI,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;YAC1B,OAAO,QAAQ,CACb,IAAI,yBAAiB,CAAC,2DAA2D,CAAC,CACnF,CAAC;SACH;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC;QACvC,IAAI,WAAW,IAAI,IAAI,EAAE;YACvB,gEAAgE;YAChE,wFAAwF;YACxF,OAAO,QAAQ,CACb,IAAI,yBAAiB,CAAC,yDAAyD,CAAC,CACjF,CAAC;SACH;QAED,MAAM,kBAAkB,GAAuB;YAC7C,WAAW;YACX,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;SACzB,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,kBAAkB,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7E,CAAC;CACF;AAjCD,oDAiCC;AAED,IAAA,yBAAa,EAAC,oBAAoB,EAAE,CAAC,kBAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/list_collections.js b/food-ordering-app/server/node_modules/mongodb/lib/operations/list_collections.js index 12adf6fc0..9f0726b67 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/operations/list_collections.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/operations/list_collections.js @@ -1,16 +1,15 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.ListCollectionsCursor = exports.ListCollectionsOperation = void 0; -const abstract_cursor_1 = require("../cursor/abstract_cursor"); +exports.ListCollectionsOperation = void 0; const utils_1 = require("../utils"); const command_1 = require("./command"); -const execute_operation_1 = require("./execute_operation"); const operation_1 = require("./operation"); /** @internal */ class ListCollectionsOperation extends command_1.CommandOperation { constructor(db, filter, options) { super(db, options); - this.options = options !== null && options !== void 0 ? options : {}; + this.options = { ...options }; + delete this.options.writeConcern; this.db = db; this.filter = filter; this.nameOnly = !!this.options.nameOnly; @@ -40,36 +39,6 @@ class ListCollectionsOperation extends command_1.CommandOperation { } } exports.ListCollectionsOperation = ListCollectionsOperation; -/** @public */ -class ListCollectionsCursor extends abstract_cursor_1.AbstractCursor { - constructor(db, filter, options) { - super(db.s.client, db.s.namespace, options); - this.parent = db; - this.filter = filter; - this.options = options; - } - clone() { - return new ListCollectionsCursor(this.parent, this.filter, { - ...this.options, - ...this.cursorOptions - }); - } - /** @internal */ - _initialize(session, callback) { - const operation = new ListCollectionsOperation(this.parent, this.filter, { - ...this.cursorOptions, - ...this.options, - session - }); - (0, execute_operation_1.executeOperation)(this.parent.s.client, operation, (err, response) => { - if (err || response == null) - return callback(err); - // TODO: NODE-2882 - callback(undefined, { server: operation.server, session, response }); - }); - } -} -exports.ListCollectionsCursor = ListCollectionsCursor; (0, operation_1.defineAspects)(ListCollectionsOperation, [ operation_1.Aspect.READ_OPERATION, operation_1.Aspect.RETRYABLE, diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/list_collections.js.map b/food-ordering-app/server/node_modules/mongodb/lib/operations/list_collections.js.map index 12b01e8a6..0b7d6ffd5 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/operations/list_collections.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/operations/list_collections.js.map @@ -1 +1 @@ -{"version":3,"file":"list_collections.js","sourceRoot":"","sources":["../../src/operations/list_collections.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"list_collections.js","sourceRoot":"","sources":["../../src/operations/list_collections.ts"],"names":[],"mappings":";;;AAIA,oCAAoD;AACpD,uCAAsE;AACtE,2CAAoD;AAYpD,gBAAgB;AAChB,MAAa,wBAAyB,SAAQ,0BAA0B;IAQtE,YAAY,EAAM,EAAE,MAAgB,EAAE,OAAgC;QACpE,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAEnB,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;QACjC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QACxC,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC;QAElE,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE;YAC9C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;SACzC;IACH,CAAC;IAEQ,OAAO,CACd,MAAc,EACd,OAAkC,EAClC,QAA4B;QAE5B,OAAO,KAAK,CAAC,cAAc,CACzB,MAAM,EACN,OAAO,EACP,IAAI,CAAC,eAAe,CAAC,IAAA,sBAAc,EAAC,MAAM,CAAC,CAAC,EAC5C,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,oFAAoF;IACpF,eAAe,CAAC,WAAmB;QACjC,MAAM,OAAO,GAAa;YACxB,eAAe,EAAE,CAAC;YAClB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE;YAC3D,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;SAClD,CAAC;QAEF,iEAAiE;QACjE,gDAAgD;QAChD,IAAI,WAAW,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE;YAC1D,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;SACxC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAtDD,4DAsDC;AAcD,IAAA,yBAAa,EAAC,wBAAwB,EAAE;IACtC,kBAAM,CAAC,cAAc;IACrB,kBAAM,CAAC,SAAS;IAChB,kBAAM,CAAC,eAAe;CACvB,CAAC,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/operation.js b/food-ordering-app/server/node_modules/mongodb/lib/operations/operation.js index 861753ab6..f9f2fa0ff 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/operations/operation.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/operations/operation.js @@ -1,6 +1,7 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.defineAspects = exports.AbstractOperation = exports.Aspect = void 0; +const util_1 = require("util"); const bson_1 = require("../bson"); const read_preference_1 = require("../read_preference"); exports.Aspect = { @@ -10,7 +11,7 @@ exports.Aspect = { EXPLAINABLE: Symbol('EXPLAINABLE'), SKIP_COLLATION: Symbol('SKIP_COLLATION'), CURSOR_CREATING: Symbol('CURSOR_CREATING'), - CURSOR_ITERATING: Symbol('CURSOR_ITERATING') + MUST_SELECT_SAME_SERVER: Symbol('MUST_SELECT_SAME_SERVER') }; /** @internal */ const kSession = Symbol('session'); @@ -24,6 +25,9 @@ const kSession = Symbol('session'); class AbstractOperation { constructor(options = {}) { var _a; + this.executeAsync = (0, util_1.promisify)((server, session, callback) => { + this.execute(server, session, callback); + }); this.readPreference = this.hasAspect(exports.Aspect.WRITE_OPERATION) ? read_preference_1.ReadPreference.primary : (_a = read_preference_1.ReadPreference.fromOptions(options)) !== null && _a !== void 0 ? _a : read_preference_1.ReadPreference.primary; @@ -44,6 +48,9 @@ class AbstractOperation { get session() { return this[kSession]; } + clearSession() { + this[kSession] = undefined; + } get canRetryRead() { return true; } diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/operation.js.map b/food-ordering-app/server/node_modules/mongodb/lib/operations/operation.js.map index 785853841..408bed7aa 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/operations/operation.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/operations/operation.js.map @@ -1 +1 @@ -{"version":3,"file":"operation.js","sourceRoot":"","sources":["../../src/operations/operation.ts"],"names":[],"mappings":";;;AAAA,kCAA6E;AAC7E,wDAAwE;AAK3D,QAAA,MAAM,GAAG;IACpB,cAAc,EAAE,MAAM,CAAC,gBAAgB,CAAC;IACxC,eAAe,EAAE,MAAM,CAAC,iBAAiB,CAAC;IAC1C,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC;IAClC,cAAc,EAAE,MAAM,CAAC,gBAAgB,CAAC;IACxC,eAAe,EAAE,MAAM,CAAC,iBAAiB,CAAC;IAC1C,gBAAgB,EAAE,MAAM,CAAC,kBAAkB,CAAC;CACpC,CAAC;AAuBX,gBAAgB;AAChB,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAEnC;;;;;;GAMG;AACH,MAAsB,iBAAiB;IAerC,YAAY,UAA4B,EAAE;;QACxC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,cAAM,CAAC,eAAe,CAAC;YAC1D,CAAC,CAAC,gCAAc,CAAC,OAAO;YACxB,CAAC,CAAC,MAAA,gCAAc,CAAC,WAAW,CAAC,OAAO,CAAC,mCAAI,gCAAc,CAAC,OAAO,CAAC;QAElE,oEAAoE;QACpE,IAAI,CAAC,WAAW,GAAG,IAAA,yBAAkB,EAAC,OAAO,CAAC,CAAC;QAE/C,IAAI,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAEvE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC;QACvD,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;IACjC,CAAC;IAQD,SAAS,CAAC,MAAc;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAmC,CAAC;QACtD,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE;YACxB,OAAO,KAAK,CAAC;SACd;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxB,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAxDD,8CAwDC;AAED,SAAgB,aAAa,CAC3B,SAA+B,EAC/B,OAAwC;IAExC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,YAAY,GAAG,CAAC,EAAE;QACxD,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;KACrB;IAED,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3B,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE;QAC1C,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AAfD,sCAeC"} \ No newline at end of file +{"version":3,"file":"operation.js","sourceRoot":"","sources":["../../src/operations/operation.ts"],"names":[],"mappings":";;;AAAA,+BAAiC;AAEjC,kCAA6E;AAC7E,wDAAwE;AAK3D,QAAA,MAAM,GAAG;IACpB,cAAc,EAAE,MAAM,CAAC,gBAAgB,CAAC;IACxC,eAAe,EAAE,MAAM,CAAC,iBAAiB,CAAC;IAC1C,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC;IAClC,cAAc,EAAE,MAAM,CAAC,gBAAgB,CAAC;IACxC,eAAe,EAAE,MAAM,CAAC,iBAAiB,CAAC;IAC1C,uBAAuB,EAAE,MAAM,CAAC,yBAAyB,CAAC;CAClD,CAAC;AAmBX,gBAAgB;AAChB,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAEnC;;;;;;GAMG;AACH,MAAsB,iBAAiB;IAiBrC,YAAY,UAA4B,EAAE;;QACxC,IAAI,CAAC,YAAY,GAAG,IAAA,gBAAS,EAC3B,CACE,MAAc,EACd,OAAkC,EAClC,QAAwC,EACxC,EAAE;YACF,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,QAAe,CAAC,CAAC;QACjD,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,cAAM,CAAC,eAAe,CAAC;YAC1D,CAAC,CAAC,gCAAc,CAAC,OAAO;YACxB,CAAC,CAAC,MAAA,gCAAc,CAAC,WAAW,CAAC,OAAO,CAAC,mCAAI,gCAAc,CAAC,OAAO,CAAC;QAElE,oEAAoE;QACpE,IAAI,CAAC,WAAW,GAAG,IAAA,yBAAkB,EAAC,OAAO,CAAC,CAAC;QAE/C,IAAI,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAEvE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC;QACvD,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;IACjC,CAAC;IAQD,SAAS,CAAC,MAAc;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAwC,CAAC;QAC3D,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE;YACxB,OAAO,KAAK,CAAC;SACd;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxB,CAAC;IAED,YAAY;QACV,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAxED,8CAwEC;AAED,SAAgB,aAAa,CAC3B,SAAwC,EACxC,OAAwC;IAExC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,YAAY,GAAG,CAAC,EAAE;QACxD,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;KACrB;IAED,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3B,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE;QAC1C,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AAfD,sCAeC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/update.js b/food-ordering-app/server/node_modules/mongodb/lib/operations/update.js index 03c825ec7..e54ca3d58 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/operations/update.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/operations/update.js @@ -39,27 +39,14 @@ class UpdateOperation extends command_1.CommandOperation { if (options.comment !== undefined) { command.comment = options.comment; } - const statementWithCollation = this.statements.find(statement => !!statement.collation); - if ((0, utils_1.collationNotSupported)(server, options) || - (statementWithCollation && (0, utils_1.collationNotSupported)(server, statementWithCollation))) { - callback(new error_1.MongoCompatibilityError(`Server ${server.name} does not support collation`)); - return; - } const unacknowledgedWrite = this.writeConcern && this.writeConcern.w === 0; - if (unacknowledgedWrite || (0, utils_1.maxWireVersion)(server) < 5) { + if (unacknowledgedWrite) { if (this.statements.find((o) => o.hint)) { - callback(new error_1.MongoCompatibilityError(`Servers < 3.4 do not support hint on update`)); + // TODO(NODE-3541): fix error for hint with unacknowledged writes + callback(new error_1.MongoCompatibilityError(`hint is not supported with unacknowledged writes`)); return; } } - if (this.explain && (0, utils_1.maxWireVersion)(server) < 3) { - callback(new error_1.MongoCompatibilityError(`Server ${server.name} does not support explain on update`)); - return; - } - if (this.statements.some(statement => !!statement.arrayFilters) && (0, utils_1.maxWireVersion)(server) < 6) { - callback(new error_1.MongoCompatibilityError('Option "arrayFilters" is only supported on MongoDB 3.6+')); - return; - } super.executeCommand(server, session, command, callback); } } diff --git a/food-ordering-app/server/node_modules/mongodb/lib/operations/update.js.map b/food-ordering-app/server/node_modules/mongodb/lib/operations/update.js.map index bc10fed98..8bad03d88 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/operations/update.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/operations/update.js.map @@ -1 +1 @@ -{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/operations/update.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/operations/update.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/promise_provider.js b/food-ordering-app/server/node_modules/mongodb/lib/promise_provider.js index e76480a29..4c4d28c86 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/promise_provider.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/promise_provider.js @@ -5,32 +5,47 @@ const error_1 = require("./error"); /** @internal */ const kPromise = Symbol('promise'); const store = { - [kPromise]: undefined + [kPromise]: null }; /** * Global promise store allowing user-provided promises + * @deprecated Setting a custom promise library is deprecated the next major version will use the global Promise constructor only. * @public */ class PromiseProvider { - /** Validates the passed in promise library */ + /** + * Validates the passed in promise library + * @deprecated Setting a custom promise library is deprecated the next major version will use the global Promise constructor only. + */ static validate(lib) { if (typeof lib !== 'function') throw new error_1.MongoInvalidArgumentError(`Promise must be a function, got ${lib}`); return !!lib; } - /** Sets the promise library */ + /** + * Sets the promise library + * @deprecated Setting a custom promise library is deprecated the next major version will use the global Promise constructor only. + */ static set(lib) { + // eslint-disable-next-line no-restricted-syntax + if (lib === null) { + // Check explicitly against null since `.set()` (no args) should fall through to validate + store[kPromise] = null; + return; + } if (!PromiseProvider.validate(lib)) { // validate return; } store[kPromise] = lib; } - /** Get the stored promise library, or resolves passed in */ + /** + * Get the stored promise library, or resolves passed in + * @deprecated Setting a custom promise library is deprecated the next major version will use the global Promise constructor only. + */ static get() { return store[kPromise]; } } exports.PromiseProvider = PromiseProvider; -PromiseProvider.set(global.Promise); //# sourceMappingURL=promise_provider.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/promise_provider.js.map b/food-ordering-app/server/node_modules/mongodb/lib/promise_provider.js.map index 703bee2c9..b69273075 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/promise_provider.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/promise_provider.js.map @@ -1 +1 @@ -{"version":3,"file":"promise_provider.js","sourceRoot":"","sources":["../src/promise_provider.ts"],"names":[],"mappings":";;;AAAA,mCAAoD;AAEpD,gBAAgB;AAChB,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAMnC,MAAM,KAAK,GAAiB;IAC1B,CAAC,QAAQ,CAAC,EAAE,SAAS;CACtB,CAAC;AAEF;;;GAGG;AACH,MAAa,eAAe;IAC1B,8CAA8C;IAC9C,MAAM,CAAC,QAAQ,CAAC,GAAY;QAC1B,IAAI,OAAO,GAAG,KAAK,UAAU;YAC3B,MAAM,IAAI,iCAAyB,CAAC,mCAAmC,GAAG,EAAE,CAAC,CAAC;QAChF,OAAO,CAAC,CAAC,GAAG,CAAC;IACf,CAAC;IAED,+BAA+B;IAC/B,MAAM,CAAC,GAAG,CAAC,GAAuB;QAChC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAClC,WAAW;YACX,OAAO;SACR;QACD,KAAK,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;IACxB,CAAC;IAED,4DAA4D;IAC5D,MAAM,CAAC,GAAG;QACR,OAAO,KAAK,CAAC,QAAQ,CAAuB,CAAC;IAC/C,CAAC;CACF;AArBD,0CAqBC;AAED,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"promise_provider.js","sourceRoot":"","sources":["../src/promise_provider.ts"],"names":[],"mappings":";;;AAAA,mCAAoD;AAEpD,gBAAgB;AAChB,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAMnC,MAAM,KAAK,GAAiB;IAC1B,CAAC,QAAQ,CAAC,EAAE,IAAI;CACjB,CAAC;AAEF;;;;GAIG;AACH,MAAa,eAAe;IAC1B;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,GAAY;QAC1B,IAAI,OAAO,GAAG,KAAK,UAAU;YAC3B,MAAM,IAAI,iCAAyB,CAAC,mCAAmC,GAAG,EAAE,CAAC,CAAC;QAChF,OAAO,CAAC,CAAC,GAAG,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,GAAG,CAAC,GAA8B;QACvC,gDAAgD;QAChD,IAAI,GAAG,KAAK,IAAI,EAAE;YAChB,yFAAyF;YACzF,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;YACvB,OAAO;SACR;QAED,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAClC,WAAW;YACX,OAAO;SACR;QACD,KAAK,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;IACxB,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,GAAG;QACR,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;CACF;AArCD,0CAqCC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/read_preference.js.map b/food-ordering-app/server/node_modules/mongodb/lib/read_preference.js.map index a67ad7af5..120e51ea0 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/read_preference.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/read_preference.js.map @@ -1 +1 @@ -{"version":3,"file":"read_preference.js","sourceRoot":"","sources":["../src/read_preference.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"read_preference.js","sourceRoot":"","sources":["../src/read_preference.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/sdam/common.js b/food-ordering-app/server/node_modules/mongodb/lib/sdam/common.js index 3a6929e6a..60b96aa30 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/sdam/common.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/sdam/common.js @@ -1,6 +1,7 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports._advanceClusterTime = exports.drainTimerQueue = exports.ServerType = exports.TopologyType = exports.STATE_CONNECTED = exports.STATE_CONNECTING = exports.STATE_CLOSED = exports.STATE_CLOSING = void 0; +const timers_1 = require("timers"); // shared state names exports.STATE_CLOSING = 'closing'; exports.STATE_CLOSED = 'closed'; @@ -36,7 +37,7 @@ exports.ServerType = Object.freeze({ }); /** @internal */ function drainTimerQueue(queue) { - queue.forEach(clearTimeout); + queue.forEach(timers_1.clearTimeout); queue.clear(); } exports.drainTimerQueue = drainTimerQueue; diff --git a/food-ordering-app/server/node_modules/mongodb/lib/sdam/common.js.map b/food-ordering-app/server/node_modules/mongodb/lib/sdam/common.js.map index 8771ed460..95a76c42d 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/sdam/common.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/sdam/common.js.map @@ -1 +1 @@ -{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/sdam/common.ts"],"names":[],"mappings":";;;AAIA,qBAAqB;AACR,QAAA,aAAa,GAAG,SAAS,CAAC;AAC1B,QAAA,YAAY,GAAG,QAAQ,CAAC;AACxB,QAAA,gBAAgB,GAAG,YAAY,CAAC;AAChC,QAAA,eAAe,GAAG,WAAW,CAAC;AAE3C;;;GAGG;AACU,QAAA,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;IACxC,MAAM,EAAE,QAAQ;IAChB,mBAAmB,EAAE,qBAAqB;IAC1C,qBAAqB,EAAE,uBAAuB;IAC9C,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,cAAc;CACpB,CAAC,CAAC;AAKZ;;;GAGG;AACU,QAAA,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IACtC,UAAU,EAAE,YAAY;IACxB,MAAM,EAAE,QAAQ;IAChB,eAAe,EAAE,iBAAiB;IAClC,SAAS,EAAE,WAAW;IACtB,WAAW,EAAE,aAAa;IAC1B,SAAS,EAAE,WAAW;IACtB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,cAAc;CACpB,CAAC,CAAC;AAQZ,gBAAgB;AAChB,SAAgB,eAAe,CAAC,KAAiB;IAC/C,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5B,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC;AAHD,0CAGC;AAWD,+EAA+E;AAC/E,SAAgB,mBAAmB,CACjC,MAAgC,EAChC,YAAyB;IAEzB,IAAI,MAAM,CAAC,WAAW,IAAI,IAAI,EAAE;QAC9B,MAAM,CAAC,WAAW,GAAG,YAAY,CAAC;KACnC;SAAM;QACL,IAAI,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE;YACxE,MAAM,CAAC,WAAW,GAAG,YAAY,CAAC;SACnC;KACF;AACH,CAAC;AAXD,kDAWC"} \ No newline at end of file +{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/sdam/common.ts"],"names":[],"mappings":";;;AAAA,mCAAsC;AAMtC,qBAAqB;AACR,QAAA,aAAa,GAAG,SAAS,CAAC;AAC1B,QAAA,YAAY,GAAG,QAAQ,CAAC;AACxB,QAAA,gBAAgB,GAAG,YAAY,CAAC;AAChC,QAAA,eAAe,GAAG,WAAW,CAAC;AAE3C;;;GAGG;AACU,QAAA,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;IACxC,MAAM,EAAE,QAAQ;IAChB,mBAAmB,EAAE,qBAAqB;IAC1C,qBAAqB,EAAE,uBAAuB;IAC9C,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,cAAc;CACpB,CAAC,CAAC;AAKZ;;;GAGG;AACU,QAAA,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IACtC,UAAU,EAAE,YAAY;IACxB,MAAM,EAAE,QAAQ;IAChB,eAAe,EAAE,iBAAiB;IAClC,SAAS,EAAE,WAAW;IACtB,WAAW,EAAE,aAAa;IAC1B,SAAS,EAAE,WAAW;IACtB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,cAAc;CACpB,CAAC,CAAC;AAQZ,gBAAgB;AAChB,SAAgB,eAAe,CAAC,KAAiB;IAC/C,KAAK,CAAC,OAAO,CAAC,qBAAY,CAAC,CAAC;IAC5B,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC;AAHD,0CAGC;AAWD,+EAA+E;AAC/E,SAAgB,mBAAmB,CACjC,MAAgC,EAChC,YAAyB;IAEzB,IAAI,MAAM,CAAC,WAAW,IAAI,IAAI,EAAE;QAC9B,MAAM,CAAC,WAAW,GAAG,YAAY,CAAC;KACnC;SAAM;QACL,IAAI,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE;YACxE,MAAM,CAAC,WAAW,GAAG,YAAY,CAAC;SACnC;KACF;AACH,CAAC;AAXD,kDAWC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/sdam/monitor.js b/food-ordering-app/server/node_modules/mongodb/lib/sdam/monitor.js index 1149c7961..aec3d2773 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/sdam/monitor.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/sdam/monitor.js @@ -1,6 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.RTTPinger = exports.Monitor = void 0; +exports.MonitorInterval = exports.RTTPinger = exports.Monitor = void 0; const timers_1 = require("timers"); const bson_1 = require("../bson"); const connect_1 = require("../cmap/connect"); @@ -21,8 +21,6 @@ const kConnection = Symbol('connection'); /** @internal */ const kCancellationToken = Symbol('cancellationToken'); /** @internal */ -const kRTTPinger = Symbol('rttPinger'); -/** @internal */ const kRoundTripTime = Symbol('roundTripTime'); const STATE_IDLE = 'idle'; const STATE_MONITORING = 'monitoring'; @@ -38,6 +36,9 @@ function isInCloseState(monitor) { } /** @internal */ class Monitor extends mongo_types_1.TypedEventEmitter { + get connection() { + return this[kConnection]; + } constructor(server, options) { var _a, _b, _c; super(); @@ -78,9 +79,6 @@ class Monitor extends mongo_types_1.TypedEventEmitter { } this.connectOptions = Object.freeze(connectOptions); } - get connection() { - return this[kConnection]; - } connect() { if (this.s.state !== common_1.STATE_CLOSED) { return; @@ -88,9 +86,9 @@ class Monitor extends mongo_types_1.TypedEventEmitter { // start const heartbeatFrequencyMS = this.options.heartbeatFrequencyMS; const minHeartbeatFrequencyMS = this.options.minHeartbeatFrequencyMS; - this[kMonitorId] = (0, utils_1.makeInterruptibleAsyncInterval)(monitorServer(this), { - interval: heartbeatFrequencyMS, - minInterval: minHeartbeatFrequencyMS, + this[kMonitorId] = new MonitorInterval(monitorServer(this), { + heartbeatFrequencyMS: heartbeatFrequencyMS, + minHeartbeatFrequencyMS: minHeartbeatFrequencyMS, immediate: true }); } @@ -113,9 +111,9 @@ class Monitor extends mongo_types_1.TypedEventEmitter { // restart monitoring const heartbeatFrequencyMS = this.options.heartbeatFrequencyMS; const minHeartbeatFrequencyMS = this.options.minHeartbeatFrequencyMS; - this[kMonitorId] = (0, utils_1.makeInterruptibleAsyncInterval)(monitorServer(this), { - interval: heartbeatFrequencyMS, - minInterval: minHeartbeatFrequencyMS + this[kMonitorId] = new MonitorInterval(monitorServer(this), { + heartbeatFrequencyMS: heartbeatFrequencyMS, + minHeartbeatFrequencyMS: minHeartbeatFrequencyMS }); } close() { @@ -134,8 +132,8 @@ function resetMonitorState(monitor) { var _a, _b, _c; (_a = monitor[kMonitorId]) === null || _a === void 0 ? void 0 : _a.stop(); monitor[kMonitorId] = undefined; - (_b = monitor[kRTTPinger]) === null || _b === void 0 ? void 0 : _b.close(); - monitor[kRTTPinger] = undefined; + (_b = monitor.rttPinger) === null || _b === void 0 ? void 0 : _b.close(); + monitor.rttPinger = undefined; monitor[kCancellationToken].emit('cancel'); (_c = monitor[kConnection]) === null || _c === void 0 ? void 0 : _c.destroy({ force: true }); monitor[kConnection] = undefined; @@ -148,8 +146,12 @@ function checkServer(monitor, callback) { (_a = monitor[kConnection]) === null || _a === void 0 ? void 0 : _a.destroy({ force: true }); monitor[kConnection] = undefined; monitor.emit(server_1.Server.SERVER_HEARTBEAT_FAILED, new events_1.ServerHeartbeatFailedEvent(monitor.address, (0, utils_1.calculateDurationInMs)(start), err)); - monitor.emit('resetServer', err); - monitor.emit('resetConnectionPool'); + const error = !(err instanceof error_1.MongoError) ? new error_1.MongoError(err) : err; + error.addErrorLabel(error_1.MongoErrorLabel.ResetPool); + if (error instanceof error_1.MongoNetworkTimeoutError) { + error.addErrorLabel(error_1.MongoErrorLabel.InterruptInUseConnections); + } + monitor.emit('resetServer', error); callback(err); } const connection = monitor[kConnection]; @@ -171,8 +173,8 @@ function checkServer(monitor, callback) { exhaustAllowed: true } : { socketTimeoutMS: connectTimeoutMS }; - if (isAwaitable && monitor[kRTTPinger] == null) { - monitor[kRTTPinger] = new RTTPinger(monitor[kCancellationToken], Object.assign({ heartbeatFrequencyMS: monitor.options.heartbeatFrequencyMS }, monitor.connectOptions)); + if (isAwaitable && monitor.rttPinger == null) { + monitor.rttPinger = new RTTPinger(monitor[kCancellationToken], Object.assign({ heartbeatFrequencyMS: monitor.options.heartbeatFrequencyMS }, monitor.connectOptions)); } connection.command((0, utils_1.ns)('admin.$cmd'), cmd, options, (err, hello) => { var _a; @@ -183,8 +185,9 @@ function checkServer(monitor, callback) { // Provide hello-style response document. hello.isWritablePrimary = hello[constants_1.LEGACY_HELLO_COMMAND]; } - const rttPinger = monitor[kRTTPinger]; - const duration = isAwaitable && rttPinger ? rttPinger.roundTripTime : (0, utils_1.calculateDurationInMs)(start); + const duration = isAwaitable && monitor.rttPinger + ? monitor.rttPinger.roundTripTime + : (0, utils_1.calculateDurationInMs)(start); monitor.emit(server_1.Server.SERVER_HEARTBEAT_SUCCEEDED, new events_1.ServerHeartbeatSucceededEvent(monitor.address, duration, hello)); // if we are using the streaming protocol then we immediately issue another `started` // event, otherwise the "check" is complete and return to the main monitor loop @@ -193,8 +196,8 @@ function checkServer(monitor, callback) { start = (0, utils_1.now)(); } else { - (_a = monitor[kRTTPinger]) === null || _a === void 0 ? void 0 : _a.close(); - monitor[kRTTPinger] = undefined; + (_a = monitor.rttPinger) === null || _a === void 0 ? void 0 : _a.close(); + monitor.rttPinger = undefined; callback(undefined, hello); } }); @@ -204,10 +207,6 @@ function checkServer(monitor, callback) { (0, connect_1.connect)(monitor.connectOptions, (err, conn) => { if (err) { monitor[kConnection] = undefined; - // we already reset the connection pool on network errors in all cases - if (!(err instanceof error_1.MongoNetworkError)) { - monitor.emit('resetConnectionPool'); - } failureHandler(err); return; } @@ -227,6 +226,10 @@ function checkServer(monitor, callback) { } function monitorServer(monitor) { return (callback) => { + if (monitor.s.state === STATE_MONITORING) { + process.nextTick(callback); + return; + } stateTransition(monitor, STATE_MONITORING); function done() { if (!isInCloseState(monitor)) { @@ -238,7 +241,6 @@ function monitorServer(monitor) { if (err) { // otherwise an error occurred on initial discovery, also bail if (monitor[kServer].description.type === common_1.ServerType.Unknown) { - monitor.emit('resetServer', err); return done(); } } @@ -259,13 +261,14 @@ function makeTopologyVersion(tv) { return { processId: tv.processId, // tests mock counter as just number, but in a real situation counter should always be a Long + // TODO(NODE-2674): Preserve int64 sent from MongoDB counter: bson_1.Long.isLong(tv.counter) ? tv.counter : bson_1.Long.fromNumber(tv.counter) }; } /** @internal */ class RTTPinger { constructor(cancellationToken, options) { - this[kConnection] = undefined; + this.connection = undefined; this[kCancellationToken] = cancellationToken; this[kRoundTripTime] = 0; this.closed = false; @@ -278,13 +281,14 @@ class RTTPinger { close() { var _a; this.closed = true; - clearTimeout(this[kMonitorId]); - (_a = this[kConnection]) === null || _a === void 0 ? void 0 : _a.destroy({ force: true }); - this[kConnection] = undefined; + (0, timers_1.clearTimeout)(this[kMonitorId]); + (_a = this.connection) === null || _a === void 0 ? void 0 : _a.destroy({ force: true }); + this.connection = undefined; } } exports.RTTPinger = RTTPinger; function measureRoundTripTime(rttPinger, options) { + var _a; const start = (0, utils_1.now)(); options.cancellationToken = rttPinger[kCancellationToken]; const heartbeatFrequencyMS = options.heartbeatFrequencyMS; @@ -296,17 +300,17 @@ function measureRoundTripTime(rttPinger, options) { conn === null || conn === void 0 ? void 0 : conn.destroy({ force: true }); return; } - if (rttPinger[kConnection] == null) { - rttPinger[kConnection] = conn; + if (rttPinger.connection == null) { + rttPinger.connection = conn; } rttPinger[kRoundTripTime] = (0, utils_1.calculateDurationInMs)(start); rttPinger[kMonitorId] = (0, timers_1.setTimeout)(() => measureRoundTripTime(rttPinger, options), heartbeatFrequencyMS); } - const connection = rttPinger[kConnection]; + const connection = rttPinger.connection; if (connection == null) { (0, connect_1.connect)(options, (err, conn) => { if (err) { - rttPinger[kConnection] = undefined; + rttPinger.connection = undefined; rttPinger[kRoundTripTime] = 0; return; } @@ -314,13 +318,110 @@ function measureRoundTripTime(rttPinger, options) { }); return; } - connection.command((0, utils_1.ns)('admin.$cmd'), { [constants_1.LEGACY_HELLO_COMMAND]: 1 }, undefined, err => { + const commandName = ((_a = connection.serverApi) === null || _a === void 0 ? void 0 : _a.version) || connection.helloOk ? 'hello' : constants_1.LEGACY_HELLO_COMMAND; + connection.command((0, utils_1.ns)('admin.$cmd'), { [commandName]: 1 }, undefined, err => { + var _a; if (err) { - rttPinger[kConnection] = undefined; + (_a = rttPinger.connection) === null || _a === void 0 ? void 0 : _a.destroy({ force: true }); + rttPinger.connection = undefined; rttPinger[kRoundTripTime] = 0; return; } measureAndReschedule(); }); } +/** + * @internal + */ +class MonitorInterval { + constructor(fn, options = {}) { + var _a, _b; + this.isExpeditedCallToFnScheduled = false; + this.stopped = false; + this.isExecutionInProgress = false; + this.hasExecutedOnce = false; + this._executeAndReschedule = () => { + if (this.stopped) + return; + if (this.timerId) { + (0, timers_1.clearTimeout)(this.timerId); + } + this.isExpeditedCallToFnScheduled = false; + this.isExecutionInProgress = true; + this.fn(() => { + this.lastExecutionEnded = (0, utils_1.now)(); + this.isExecutionInProgress = false; + this._reschedule(this.heartbeatFrequencyMS); + }); + }; + this.fn = fn; + this.lastExecutionEnded = -Infinity; + this.heartbeatFrequencyMS = (_a = options.heartbeatFrequencyMS) !== null && _a !== void 0 ? _a : 1000; + this.minHeartbeatFrequencyMS = (_b = options.minHeartbeatFrequencyMS) !== null && _b !== void 0 ? _b : 500; + if (options.immediate) { + this._executeAndReschedule(); + } + else { + this._reschedule(undefined); + } + } + wake() { + const currentTime = (0, utils_1.now)(); + const timeSinceLastCall = currentTime - this.lastExecutionEnded; + // TODO(NODE-4674): Add error handling and logging to the monitor + if (timeSinceLastCall < 0) { + return this._executeAndReschedule(); + } + if (this.isExecutionInProgress) { + return; + } + // debounce multiple calls to wake within the `minInterval` + if (this.isExpeditedCallToFnScheduled) { + return; + } + // reschedule a call as soon as possible, ensuring the call never happens + // faster than the `minInterval` + if (timeSinceLastCall < this.minHeartbeatFrequencyMS) { + this.isExpeditedCallToFnScheduled = true; + this._reschedule(this.minHeartbeatFrequencyMS - timeSinceLastCall); + return; + } + this._executeAndReschedule(); + } + stop() { + this.stopped = true; + if (this.timerId) { + (0, timers_1.clearTimeout)(this.timerId); + this.timerId = undefined; + } + this.lastExecutionEnded = -Infinity; + this.isExpeditedCallToFnScheduled = false; + } + toString() { + return JSON.stringify(this); + } + toJSON() { + const currentTime = (0, utils_1.now)(); + const timeSinceLastCall = currentTime - this.lastExecutionEnded; + return { + timerId: this.timerId != null ? 'set' : 'cleared', + lastCallTime: this.lastExecutionEnded, + isExpeditedCheckScheduled: this.isExpeditedCallToFnScheduled, + stopped: this.stopped, + heartbeatFrequencyMS: this.heartbeatFrequencyMS, + minHeartbeatFrequencyMS: this.minHeartbeatFrequencyMS, + currentTime, + timeSinceLastCall + }; + } + _reschedule(ms) { + if (this.stopped) + return; + if (this.timerId) { + (0, timers_1.clearTimeout)(this.timerId); + } + this.timerId = (0, timers_1.setTimeout)(this._executeAndReschedule, ms || this.heartbeatFrequencyMS); + } +} +exports.MonitorInterval = MonitorInterval; //# sourceMappingURL=monitor.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/sdam/monitor.js.map b/food-ordering-app/server/node_modules/mongodb/lib/sdam/monitor.js.map index f2ef5a83e..3280d3bd1 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/sdam/monitor.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/sdam/monitor.js.map @@ -1 +1 @@ -{"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../src/sdam/monitor.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../src/sdam/monitor.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/sdam/server.js b/food-ordering-app/server/node_modules/mongodb/lib/sdam/server.js index 70e4ec376..a1884c1a2 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/sdam/server.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/sdam/server.js @@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.Server = void 0; const connection_1 = require("../cmap/connection"); const connection_pool_1 = require("../cmap/connection_pool"); +const errors_1 = require("../cmap/errors"); const constants_1 = require("../constants"); const error_1 = require("../error"); const logger_1 = require("../logger"); @@ -19,8 +20,6 @@ const stateTransition = (0, utils_1.makeStateMachine)({ [common_1.STATE_CLOSING]: [common_1.STATE_CLOSING, common_1.STATE_CLOSED] }); /** @internal */ -const kMonitor = Symbol('monitor'); -/** @internal */ class Server extends mongo_types_1.TypedEventEmitter { /** * Create a server @@ -35,7 +34,7 @@ class Server extends mongo_types_1.TypedEventEmitter { logger: new logger_1.Logger('Server'), state: common_1.STATE_CLOSED, topology, - pool: new connection_pool_1.ConnectionPool(poolOptions), + pool: new connection_pool_1.ConnectionPool(this, poolOptions), operationCount: 0 }; for (const event of [...constants_1.CMAP_EVENTS, ...constants_1.APM_EVENTS]) { @@ -45,22 +44,18 @@ class Server extends mongo_types_1.TypedEventEmitter { this.clusterTime = clusterTime; }); if (this.loadBalanced) { - this[kMonitor] = null; + this.monitor = null; // monitoring is disabled in load balancing mode return; } // create the monitor // TODO(NODE-4144): Remove new variable for type narrowing - const monitor = new monitor_1.Monitor(this, this.s.options); - this[kMonitor] = monitor; + this.monitor = new monitor_1.Monitor(this, this.s.options); for (const event of constants_1.HEARTBEAT_EVENTS) { - monitor.on(event, (e) => this.emit(event, e)); + this.monitor.on(event, (e) => this.emit(event, e)); } - monitor.on('resetConnectionPool', () => { - this.s.pool.clear(); - }); - monitor.on('resetServer', (error) => markServerUnknown(this, error)); - monitor.on(Server.SERVER_HEARTBEAT_SUCCEEDED, (event) => { + this.monitor.on('resetServer', (error) => markServerUnknown(this, error)); + this.monitor.on(Server.SERVER_HEARTBEAT_SUCCEEDED, (event) => { this.emit(Server.DESCRIPTION_RECEIVED, new server_description_1.ServerDescription(this.description.hostAddress, event.reply, { roundTripTime: calculateRoundTripTime(this.description.roundTripTime, event.duration) })); @@ -104,7 +99,7 @@ class Server extends mongo_types_1.TypedEventEmitter { // a load balancer. It never transitions out of this state and // has no monitor. if (!this.loadBalanced) { - (_a = this[kMonitor]) === null || _a === void 0 ? void 0 : _a.connect(); + (_a = this.monitor) === null || _a === void 0 ? void 0 : _a.connect(); } else { stateTransition(this, common_1.STATE_CONNECTED); @@ -125,7 +120,7 @@ class Server extends mongo_types_1.TypedEventEmitter { } stateTransition(this, common_1.STATE_CLOSING); if (!this.loadBalanced) { - (_a = this[kMonitor]) === null || _a === void 0 ? void 0 : _a.close(); + (_a = this.monitor) === null || _a === void 0 ? void 0 : _a.close(); } this.s.pool.close(options, err => { stateTransition(this, common_1.STATE_CLOSED); @@ -142,7 +137,7 @@ class Server extends mongo_types_1.TypedEventEmitter { requestCheck() { var _a; if (!this.loadBalanced) { - (_a = this[kMonitor]) === null || _a === void 0 ? void 0 : _a.requestCheck(); + (_a = this.monitor) === null || _a === void 0 ? void 0 : _a.requestCheck(); } } /** @@ -169,11 +164,6 @@ class Server extends mongo_types_1.TypedEventEmitter { if (finalOptions.omitReadPreference) { delete finalOptions.readPreference; } - // error if collation not supported - if ((0, utils_1.collationNotSupported)(this, cmd)) { - callback(new error_1.MongoCompatibilityError(`Server ${this.name} does not support collation`)); - return; - } const session = finalOptions.session; const conn = session === null || session === void 0 ? void 0 : session.pinnedConnection; // NOTE: This is a hack! We can't retrieve the connections used for executing an operation @@ -204,7 +194,12 @@ class Server extends mongo_types_1.TypedEventEmitter { this.s.pool.withConnection(conn, (err, conn, cb) => { if (err || !conn) { this.s.operationCount -= 1; - markServerUnknown(this, err); + if (!err) { + return cb(new error_1.MongoRuntimeError('Failed to create connection without error')); + } + if (!(err instanceof errors_1.PoolClearedError)) { + this.handleError(err); + } return cb(err); } conn.command(ns, cmd, finalOptions, makeOperationHandler(this, conn, cmd, finalOptions, (error, response) => { @@ -214,52 +209,48 @@ class Server extends mongo_types_1.TypedEventEmitter { }, callback); } /** - * Execute a `getMore` against the server + * Handle SDAM error * @internal */ - getMore(ns, cursorId, options, callback) { - var _a; - if (this.s.state === common_1.STATE_CLOSING || this.s.state === common_1.STATE_CLOSED) { - callback(new error_1.MongoServerClosedError()); + handleError(error, connection) { + if (!(error instanceof error_1.MongoError)) { return; } - this.s.operationCount += 1; - this.s.pool.withConnection((_a = options.session) === null || _a === void 0 ? void 0 : _a.pinnedConnection, (err, conn, cb) => { - if (err || !conn) { - this.s.operationCount -= 1; - markServerUnknown(this, err); - return cb(err); + const isStaleError = error.connectionGeneration && error.connectionGeneration < this.s.pool.generation; + if (isStaleError) { + return; + } + const isNetworkNonTimeoutError = error instanceof error_1.MongoNetworkError && !(error instanceof error_1.MongoNetworkTimeoutError); + const isNetworkTimeoutBeforeHandshakeError = (0, error_1.isNetworkErrorBeforeHandshake)(error); + const isAuthHandshakeError = error.hasErrorLabel(error_1.MongoErrorLabel.HandshakeError); + if (isNetworkNonTimeoutError || isNetworkTimeoutBeforeHandshakeError || isAuthHandshakeError) { + // In load balanced mode we never mark the server as unknown and always + // clear for the specific service id. + if (!this.loadBalanced) { + error.addErrorLabel(error_1.MongoErrorLabel.ResetPool); + markServerUnknown(this, error); } - conn.getMore(ns, cursorId, options, makeOperationHandler(this, conn, {}, options, (error, response) => { - this.s.operationCount -= 1; - cb(error, response); - })); - }, callback); - } - /** - * Execute a `killCursors` command against the server - * @internal - */ - killCursors(ns, cursorIds, options, callback) { - var _a; - if (this.s.state === common_1.STATE_CLOSING || this.s.state === common_1.STATE_CLOSED) { - if (typeof callback === 'function') { - callback(new error_1.MongoServerClosedError()); + else if (connection) { + this.s.pool.clear({ serviceId: connection.serviceId }); } - return; } - this.s.operationCount += 1; - this.s.pool.withConnection((_a = options.session) === null || _a === void 0 ? void 0 : _a.pinnedConnection, (err, conn, cb) => { - if (err || !conn) { - this.s.operationCount -= 1; - markServerUnknown(this, err); - return cb(err); + else { + if ((0, error_1.isSDAMUnrecoverableError)(error)) { + if (shouldHandleStateChangeError(this, error)) { + const shouldClearPool = (0, utils_1.maxWireVersion)(this) <= 7 || (0, error_1.isNodeShuttingDownError)(error); + if (this.loadBalanced && connection && shouldClearPool) { + this.s.pool.clear({ serviceId: connection.serviceId }); + } + if (!this.loadBalanced) { + if (shouldClearPool) { + error.addErrorLabel(error_1.MongoErrorLabel.ResetPool); + } + markServerUnknown(this, error); + process.nextTick(() => this.requestCheck()); + } + } } - conn.killCursors(ns, cursorIds, options, makeOperationHandler(this, conn, {}, undefined, (error, response) => { - this.s.operationCount -= 1; - cb(error, response); - })); - }, callback); + } } } exports.Server = Server; @@ -291,12 +282,9 @@ function markServerUnknown(server, error) { return; } if (error instanceof error_1.MongoNetworkError && !(error instanceof error_1.MongoNetworkTimeoutError)) { - (_a = server[kMonitor]) === null || _a === void 0 ? void 0 : _a.reset(); + (_a = server.monitor) === null || _a === void 0 ? void 0 : _a.reset(); } - server.emit(Server.DESCRIPTION_RECEIVED, new server_description_1.ServerDescription(server.description.hostAddress, undefined, { - error, - topologyVersion: error && error.topologyVersion ? error.topologyVersion : server.description.topologyVersion - })); + server.emit(Server.DESCRIPTION_RECEIVED, new server_description_1.ServerDescription(server.description.hostAddress, undefined, { error })); } function isPinnableCommand(cmd, session) { if (session) { @@ -334,6 +322,9 @@ function makeOperationHandler(server, connection, cmd, options, callback) { if (result != null) { return callback(undefined, result); } + if ((options === null || options === void 0 ? void 0 : options.noResponse) === true) { + return callback(undefined, null); + } if (!error) { return callback(new error_1.MongoUnexpectedServerResponseError('Empty response with no error')); } @@ -358,14 +349,6 @@ function makeOperationHandler(server, connection, cmd, options, callback) { !inActiveTransaction(session, cmd)) { error.addErrorLabel(error_1.MongoErrorLabel.RetryableWriteError); } - if (!(error instanceof error_1.MongoNetworkTimeoutError) || (0, error_1.isNetworkErrorBeforeHandshake)(error)) { - // In load balanced mode we never mark the server as unknown and always - // clear for the specific service id. - server.s.pool.clear(connection.serviceId); - if (!server.loadBalanced) { - markServerUnknown(server, error); - } - } } else { if ((isRetryableWritesEnabled(server.s.topology) || (0, transactions_1.isTransactionCommand)(cmd)) && @@ -373,23 +356,13 @@ function makeOperationHandler(server, connection, cmd, options, callback) { !inActiveTransaction(session, cmd)) { error.addErrorLabel(error_1.MongoErrorLabel.RetryableWriteError); } - if ((0, error_1.isSDAMUnrecoverableError)(error)) { - if (shouldHandleStateChangeError(server, error)) { - if ((0, utils_1.maxWireVersion)(server) <= 7 || (0, error_1.isNodeShuttingDownError)(error)) { - server.s.pool.clear(connection.serviceId); - } - if (!server.loadBalanced) { - markServerUnknown(server, error); - process.nextTick(() => server.requestCheck()); - } - } - } } if (session && session.isPinned && error.hasErrorLabel(error_1.MongoErrorLabel.TransientTransactionError)) { session.unpin({ force: true }); } + server.handleError(error, connection); return callback(error); }; } diff --git a/food-ordering-app/server/node_modules/mongodb/lib/sdam/server.js.map b/food-ordering-app/server/node_modules/mongodb/lib/sdam/server.js.map index ea6340f6b..f95b709f5 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/sdam/server.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/sdam/server.js.map @@ -1 +1 @@ -{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/sdam/server.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/sdam/server.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/sdam/server_description.js b/food-ordering-app/server/node_modules/mongodb/lib/sdam/server_description.js index fc3e3e5b3..2815dbbfd 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/sdam/server_description.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/sdam/server_description.js @@ -2,6 +2,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.compareTopologyVersion = exports.parseServerType = exports.ServerDescription = void 0; const bson_1 = require("../bson"); +const error_1 = require("../error"); const utils_1 = require("../utils"); const common_1 = require("./common"); const WRITABLE_SERVER_TYPES = new Set([ @@ -31,16 +32,15 @@ class ServerDescription { * @param address - The address of the server * @param hello - An optional hello response for this server */ - constructor(address, hello, options) { - var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m; - if (typeof address === 'string') { - this._hostAddress = new utils_1.HostAddress(address); - this.address = this._hostAddress.toString(); - } - else { - this._hostAddress = address; - this.address = this._hostAddress.toString(); - } + constructor(address, hello, options = {}) { + var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z; + if (address == null || address === '') { + throw new error_1.MongoRuntimeError('ServerDescription must be provided with a non-empty address'); + } + this.address = + typeof address === 'string' + ? utils_1.HostAddress.fromString(address).toString() // Use HostAddress to normalize + : address.toString(); this.type = parseServerType(hello, options); this.hosts = (_b = (_a = hello === null || hello === void 0 ? void 0 : hello.hosts) === null || _a === void 0 ? void 0 : _a.map((host) => host.toLowerCase())) !== null && _b !== void 0 ? _b : []; this.passives = (_d = (_c = hello === null || hello === void 0 ? void 0 : hello.passives) === null || _c === void 0 ? void 0 : _c.map((host) => host.toLowerCase())) !== null && _d !== void 0 ? _d : []; @@ -51,42 +51,19 @@ class ServerDescription { this.roundTripTime = (_k = options === null || options === void 0 ? void 0 : options.roundTripTime) !== null && _k !== void 0 ? _k : -1; this.lastUpdateTime = (0, utils_1.now)(); this.lastWriteDate = (_m = (_l = hello === null || hello === void 0 ? void 0 : hello.lastWrite) === null || _l === void 0 ? void 0 : _l.lastWriteDate) !== null && _m !== void 0 ? _m : 0; - if (options === null || options === void 0 ? void 0 : options.topologyVersion) { - this.topologyVersion = options.topologyVersion; - } - else if (hello === null || hello === void 0 ? void 0 : hello.topologyVersion) { - this.topologyVersion = hello.topologyVersion; - } - if (options === null || options === void 0 ? void 0 : options.error) { - this.error = options.error; - } - if (hello === null || hello === void 0 ? void 0 : hello.primary) { - this.primary = hello.primary; - } - if (hello === null || hello === void 0 ? void 0 : hello.me) { - this.me = hello.me.toLowerCase(); - } - if (hello === null || hello === void 0 ? void 0 : hello.setName) { - this.setName = hello.setName; - } - if (hello === null || hello === void 0 ? void 0 : hello.setVersion) { - this.setVersion = hello.setVersion; - } - if (hello === null || hello === void 0 ? void 0 : hello.electionId) { - this.electionId = hello.electionId; - } - if (hello === null || hello === void 0 ? void 0 : hello.logicalSessionTimeoutMinutes) { - this.logicalSessionTimeoutMinutes = hello.logicalSessionTimeoutMinutes; - } - if (hello === null || hello === void 0 ? void 0 : hello.$clusterTime) { - this.$clusterTime = hello.$clusterTime; - } + this.error = (_o = options.error) !== null && _o !== void 0 ? _o : null; + // TODO(NODE-2674): Preserve int64 sent from MongoDB + this.topologyVersion = (_r = (_q = (_p = this.error) === null || _p === void 0 ? void 0 : _p.topologyVersion) !== null && _q !== void 0 ? _q : hello === null || hello === void 0 ? void 0 : hello.topologyVersion) !== null && _r !== void 0 ? _r : null; + this.setName = (_s = hello === null || hello === void 0 ? void 0 : hello.setName) !== null && _s !== void 0 ? _s : null; + this.setVersion = (_t = hello === null || hello === void 0 ? void 0 : hello.setVersion) !== null && _t !== void 0 ? _t : null; + this.electionId = (_u = hello === null || hello === void 0 ? void 0 : hello.electionId) !== null && _u !== void 0 ? _u : null; + this.logicalSessionTimeoutMinutes = (_v = hello === null || hello === void 0 ? void 0 : hello.logicalSessionTimeoutMinutes) !== null && _v !== void 0 ? _v : null; + this.primary = (_w = hello === null || hello === void 0 ? void 0 : hello.primary) !== null && _w !== void 0 ? _w : null; + this.me = (_y = (_x = hello === null || hello === void 0 ? void 0 : hello.me) === null || _x === void 0 ? void 0 : _x.toLowerCase()) !== null && _y !== void 0 ? _y : null; + this.$clusterTime = (_z = hello === null || hello === void 0 ? void 0 : hello.$clusterTime) !== null && _z !== void 0 ? _z : null; } get hostAddress() { - if (this._hostAddress) - return this._hostAddress; - else - return new utils_1.HostAddress(this.address); + return utils_1.HostAddress.fromString(this.address); } get allHosts() { return this.hosts.concat(this.arbiters).concat(this.passives); @@ -116,11 +93,13 @@ class ServerDescription { * in the {@link https://github.com/mongodb/specifications/blob/master/source/server-discovery-and-monitoring/server-discovery-and-monitoring.rst#serverdescription|SDAM spec} */ equals(other) { - const topologyVersionsEqual = this.topologyVersion === other.topologyVersion || - compareTopologyVersion(this.topologyVersion, other.topologyVersion) === 0; - const electionIdsEqual = this.electionId && other.electionId - ? other.electionId && this.electionId.equals(other.electionId) - : this.electionId === other.electionId; + // Despite using the comparator that would determine a nullish topologyVersion as greater than + // for equality we should only always perform direct equality comparison + const topologyVersionsEqual = this.topologyVersion === (other === null || other === void 0 ? void 0 : other.topologyVersion) || + compareTopologyVersion(this.topologyVersion, other === null || other === void 0 ? void 0 : other.topologyVersion) === 0; + const electionIdsEqual = this.electionId != null && (other === null || other === void 0 ? void 0 : other.electionId) != null + ? (0, utils_1.compareObjectId)(this.electionId, other.electionId) === 0 + : this.electionId === (other === null || other === void 0 ? void 0 : other.electionId); return (other != null && (0, utils_1.errorStrictEqual)(this.error, other.error) && this.type === other.type && @@ -179,19 +158,33 @@ function tagsStrictEqual(tags, tags2) { /** * Compares two topology versions. * - * @returns A negative number if `lhs` is older than `rhs`; positive if `lhs` is newer than `rhs`; 0 if they are equivalent. + * 1. If the response topologyVersion is unset or the ServerDescription's + * topologyVersion is null, the client MUST assume the response is more recent. + * 1. If the response's topologyVersion.processId is not equal to the + * ServerDescription's, the client MUST assume the response is more recent. + * 1. If the response's topologyVersion.processId is equal to the + * ServerDescription's, the client MUST use the counter field to determine + * which topologyVersion is more recent. + * + * ```ts + * currentTv < newTv === -1 + * currentTv === newTv === 0 + * currentTv > newTv === 1 + * ``` */ -function compareTopologyVersion(lhs, rhs) { - if (lhs == null || rhs == null) { +function compareTopologyVersion(currentTv, newTv) { + if (currentTv == null || newTv == null) { return -1; } - if (lhs.processId.equals(rhs.processId)) { - // tests mock counter as just number, but in a real situation counter should always be a Long - const lhsCounter = bson_1.Long.isLong(lhs.counter) ? lhs.counter : bson_1.Long.fromNumber(lhs.counter); - const rhsCounter = bson_1.Long.isLong(rhs.counter) ? lhs.counter : bson_1.Long.fromNumber(rhs.counter); - return lhsCounter.compare(rhsCounter); + if (!currentTv.processId.equals(newTv.processId)) { + return -1; } - return -1; + // TODO(NODE-2674): Preserve int64 sent from MongoDB + const currentCounter = bson_1.Long.isLong(currentTv.counter) + ? currentTv.counter + : bson_1.Long.fromNumber(currentTv.counter); + const newCounter = bson_1.Long.isLong(newTv.counter) ? newTv.counter : bson_1.Long.fromNumber(newTv.counter); + return currentCounter.compare(newCounter); } exports.compareTopologyVersion = compareTopologyVersion; //# sourceMappingURL=server_description.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/sdam/server_description.js.map b/food-ordering-app/server/node_modules/mongodb/lib/sdam/server_description.js.map index d81da31ae..2974522c1 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/sdam/server_description.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/sdam/server_description.js.map @@ -1 +1 @@ -{"version":3,"file":"server_description.js","sourceRoot":"","sources":["../../src/sdam/server_description.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"server_description.js","sourceRoot":"","sources":["../../src/sdam/server_description.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/sdam/srv_polling.js b/food-ordering-app/server/node_modules/mongodb/lib/sdam/srv_polling.js index e8ced70f5..c5659278c 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/sdam/srv_polling.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/sdam/srv_polling.js @@ -7,20 +7,6 @@ const error_1 = require("../error"); const logger_1 = require("../logger"); const mongo_types_1 = require("../mongo_types"); const utils_1 = require("../utils"); -/** - * Determines whether a provided address matches the provided parent domain in order - * to avoid certain attack vectors. - * - * @param srvAddress - The address to check against a domain - * @param parentDomain - The domain to check the provided address against - * @returns Whether the provided address matches the parent domain - */ -function matchesParentDomain(srvAddress, parentDomain) { - const regex = /^.*?\./; - const srv = `.${srvAddress.replace(regex, '')}`; - const parent = `.${parentDomain.replace(regex, '')}`; - return srv.endsWith(parent); -} /** * @internal * @category Event @@ -65,16 +51,20 @@ class SrvPoller extends mongo_types_1.TypedEventEmitter { } stop() { if (this._timeout) { - clearTimeout(this._timeout); + (0, timers_1.clearTimeout)(this._timeout); this.generation += 1; this._timeout = undefined; } } schedule() { if (this._timeout) { - clearTimeout(this._timeout); + (0, timers_1.clearTimeout)(this._timeout); } - this._timeout = (0, timers_1.setTimeout)(() => this._poll(), this.intervalMS); + this._timeout = (0, timers_1.setTimeout)(() => { + this._poll().catch(unexpectedRuntimeError => { + this.logger.error(`Unexpected ${new error_1.MongoRuntimeError(unexpectedRuntimeError).stack}`); + }); + }, this.intervalMS); } success(srvRecords) { this.haMode = false; @@ -89,31 +79,33 @@ class SrvPoller extends mongo_types_1.TypedEventEmitter { parentDomainMismatch(srvRecord) { this.logger.warn(`parent domain mismatch on SRV record (${srvRecord.name}:${srvRecord.port})`, srvRecord); } - _poll() { + async _poll() { const generation = this.generation; - dns.resolveSrv(this.srvAddress, (err, srvRecords) => { - if (generation !== this.generation) { - return; - } - if (err) { - this.failure('DNS error', err); - return; - } - const finalAddresses = []; - for (const record of srvRecords) { - if (matchesParentDomain(record.name, this.srvHost)) { - finalAddresses.push(record); - } - else { - this.parentDomainMismatch(record); - } + let srvRecords; + try { + srvRecords = await dns.promises.resolveSrv(this.srvAddress); + } + catch (dnsError) { + this.failure('DNS error', dnsError); + return; + } + if (generation !== this.generation) { + return; + } + const finalAddresses = []; + for (const record of srvRecords) { + if ((0, utils_1.matchesParentDomain)(record.name, this.srvHost)) { + finalAddresses.push(record); } - if (!finalAddresses.length) { - this.failure('No valid addresses found at host'); - return; + else { + this.parentDomainMismatch(record); } - this.success(finalAddresses); - }); + } + if (!finalAddresses.length) { + this.failure('No valid addresses found at host'); + return; + } + this.success(finalAddresses); } } exports.SrvPoller = SrvPoller; diff --git a/food-ordering-app/server/node_modules/mongodb/lib/sdam/srv_polling.js.map b/food-ordering-app/server/node_modules/mongodb/lib/sdam/srv_polling.js.map index 18e86f585..3c46e4867 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/sdam/srv_polling.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/sdam/srv_polling.js.map @@ -1 +1 @@ -{"version":3,"file":"srv_polling.js","sourceRoot":"","sources":["../../src/sdam/srv_polling.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"srv_polling.js","sourceRoot":"","sources":["../../src/sdam/srv_polling.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/sdam/topology.js b/food-ordering-app/server/node_modules/mongodb/lib/sdam/topology.js index 26e1677eb..03b2de135 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/sdam/topology.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/sdam/topology.js @@ -1,15 +1,14 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ServerCapabilities = exports.Topology = void 0; -const Denque = require("denque"); const timers_1 = require("timers"); +const util_1 = require("util"); const bson_1 = require("../bson"); const connection_string_1 = require("../connection_string"); const constants_1 = require("../constants"); const error_1 = require("../error"); const mongo_types_1 = require("../mongo_types"); const read_preference_1 = require("../read_preference"); -const sessions_1 = require("../sessions"); const utils_1 = require("../utils"); const common_1 = require("./common"); const events_1 = require("./events"); @@ -41,7 +40,9 @@ class Topology extends mongo_types_1.TypedEventEmitter { constructor(seeds, options) { var _a; super(); - // Legacy CSFLE support + this.selectServerAsync = (0, util_1.promisify)((selector, options, callback) => this.selectServer(selector, options, callback)); + // Saving a reference to these BSON functions + // supports v2.2.0 and older versions of mongodb-client-encryption this.bson = Object.create(null); this.bson.serialize = bson_1.serialize; this.bson.deserialize = bson_1.deserialize; @@ -81,7 +82,7 @@ class Topology extends mongo_types_1.TypedEventEmitter { for (const hostAddress of selectedHosts) { serverDescriptions.set(hostAddress.toString(), new server_description_1.ServerDescription(hostAddress)); } - this[kWaitQueue] = new Denque(); + this[kWaitQueue] = new utils_1.List(); this.s = { // the id of this topology id: topologyId, @@ -98,10 +99,6 @@ class Topology extends mongo_types_1.TypedEventEmitter { minHeartbeatFrequencyMS: options.minHeartbeatFrequencyMS, // a map of server instances to normalized addresses servers: new Map(), - // Server Session Pool - sessionPool: new sessions_1.ServerSessionPool(this), - // Active client sessions - sessions: new Set(), credentials: options === null || options === void 0 ? void 0 : options.credentials, clusterTime: undefined, // timer management @@ -154,7 +151,6 @@ class Topology extends mongo_types_1.TypedEventEmitter { get capabilities() { return new ServerCapabilities(this.lastHello()); } - /** Initiate server connect */ connect(options, callback) { var _a; if (typeof options === 'function') @@ -188,37 +184,32 @@ class Topology extends mongo_types_1.TypedEventEmitter { this.serverUpdateHandler(newDescription); } } + const exitWithError = (error) => callback ? callback(error) : this.emit(Topology.ERROR, error); const readPreference = (_a = options.readPreference) !== null && _a !== void 0 ? _a : read_preference_1.ReadPreference.primary; this.selectServer((0, server_selection_1.readPreferenceServerSelector)(readPreference), options, (err, server) => { if (err) { - this.close(); - typeof callback === 'function' ? callback(err) : this.emit(Topology.ERROR, err); - return; + return this.close({ force: false }, () => exitWithError(err)); } // TODO: NODE-2471 const skipPingOnConnect = this.s.options[Symbol.for('@@mdb.skipPingOnConnect')] === true; if (!skipPingOnConnect && server && this.s.credentials) { server.command((0, utils_1.ns)('admin.$cmd'), { ping: 1 }, {}, err => { if (err) { - typeof callback === 'function' ? callback(err) : this.emit(Topology.ERROR, err); - return; + return exitWithError(err); } stateTransition(this, common_1.STATE_CONNECTED); this.emit(Topology.OPEN, this); this.emit(Topology.CONNECT, this); - if (typeof callback === 'function') - callback(undefined, this); + callback === null || callback === void 0 ? void 0 : callback(undefined, this); }); return; } stateTransition(this, common_1.STATE_CONNECTED); this.emit(Topology.OPEN, this); this.emit(Topology.CONNECT, this); - if (typeof callback === 'function') - callback(undefined, this); + callback === null || callback === void 0 ? void 0 : callback(undefined, this); }); } - /** Close this topology */ close(options, callback) { if (typeof options === 'function') { callback = options; @@ -229,32 +220,27 @@ class Topology extends mongo_types_1.TypedEventEmitter { } options = options !== null && options !== void 0 ? options : {}; if (this.s.state === common_1.STATE_CLOSED || this.s.state === common_1.STATE_CLOSING) { - if (typeof callback === 'function') { - callback(); - } - return; + return callback === null || callback === void 0 ? void 0 : callback(); } - stateTransition(this, common_1.STATE_CLOSING); - drainWaitQueue(this[kWaitQueue], new error_1.MongoTopologyClosedError()); - (0, common_1.drainTimerQueue)(this.s.connectionTimers); - if (this.s.srvPoller) { - this.s.srvPoller.stop(); - this.s.srvPoller.removeListener(srv_polling_1.SrvPoller.SRV_RECORD_DISCOVERY, this.s.detectSrvRecords); - } - this.removeListener(Topology.TOPOLOGY_DESCRIPTION_CHANGED, this.s.detectShardedTopology); - (0, utils_1.eachAsync)(Array.from(this.s.sessions.values()), (session, cb) => session.endSession(cb), () => { - this.s.sessionPool.endAllPooledSessions(() => { - (0, utils_1.eachAsync)(Array.from(this.s.servers.values()), (server, cb) => destroyServer(server, this, options, cb), err => { - this.s.servers.clear(); - // emit an event for close - this.emit(Topology.TOPOLOGY_CLOSED, new events_1.TopologyClosedEvent(this.s.id)); - stateTransition(this, common_1.STATE_CLOSED); - if (typeof callback === 'function') { - callback(err); - } - }); - }); + const destroyedServers = Array.from(this.s.servers.values(), server => { + return (0, util_1.promisify)(destroyServer)(server, this, options); }); + Promise.all(destroyedServers) + .then(() => { + this.s.servers.clear(); + stateTransition(this, common_1.STATE_CLOSING); + drainWaitQueue(this[kWaitQueue], new error_1.MongoTopologyClosedError()); + (0, common_1.drainTimerQueue)(this.s.connectionTimers); + if (this.s.srvPoller) { + this.s.srvPoller.stop(); + this.s.srvPoller.removeListener(srv_polling_1.SrvPoller.SRV_RECORD_DISCOVERY, this.s.detectSrvRecords); + } + this.removeListener(Topology.TOPOLOGY_DESCRIPTION_CHANGED, this.s.detectShardedTopology); + stateTransition(this, common_1.STATE_CLOSED); + // emit an event for close + this.emit(Topology.TOPOLOGY_CLOSED, new events_1.TopologyClosedEvent(this.s.id)); + }) + .finally(() => callback === null || callback === void 0 ? void 0 : callback()); } /** * Selects a server according to the selection predicate provided @@ -326,32 +312,6 @@ class Topology extends mongo_types_1.TypedEventEmitter { hasSessionSupport() { return this.loadBalanced || this.description.logicalSessionTimeoutMinutes != null; } - /** Start a logical session */ - startSession(options, clientOptions) { - const session = new sessions_1.ClientSession(this.client, this.s.sessionPool, options, clientOptions); - session.once('ended', () => { - this.s.sessions.delete(session); - }); - this.s.sessions.add(session); - return session; - } - /** Send endSessions command(s) with the given session ids */ - endSessions(sessions, callback) { - if (!Array.isArray(sessions)) { - sessions = [sessions]; - } - this.selectServer((0, server_selection_1.readPreferenceServerSelector)(read_preference_1.ReadPreference.primaryPreferred), {}, (err, server) => { - if (err || !server) { - if (typeof callback === 'function') - callback(err); - return; - } - server.command((0, utils_1.ns)('admin.$cmd'), { endSessions: sessions }, { noResponse: true }, (err, result) => { - if (typeof callback === 'function') - callback(err, result); - }); - }); - } /** * Update the internal TopologyDescription with a ServerDescription * @@ -531,6 +491,20 @@ function updateServers(topology, incomingServerDescription) { const server = topology.s.servers.get(incomingServerDescription.address); if (server) { server.s.description = incomingServerDescription; + if (incomingServerDescription.error instanceof error_1.MongoError && + incomingServerDescription.error.hasErrorLabel(error_1.MongoErrorLabel.ResetPool)) { + const interruptInUseConnections = incomingServerDescription.error.hasErrorLabel(error_1.MongoErrorLabel.InterruptInUseConnections); + server.s.pool.clear({ interruptInUseConnections }); + } + else if (incomingServerDescription.error == null) { + const newTopologyType = topology.s.description.type; + const shouldMarkPoolReady = incomingServerDescription.isDataBearing || + (incomingServerDescription.type !== common_1.ServerType.Unknown && + newTopologyType === common_1.TopologyType.Single); + if (shouldMarkPoolReady) { + server.s.pool.ready(); + } + } } } // add new servers for all descriptions we currently don't know about locally @@ -564,7 +538,7 @@ function drainWaitQueue(queue, err) { continue; } if (waitQueueMember.timer) { - clearTimeout(waitQueueMember.timer); + (0, timers_1.clearTimeout)(waitQueueMember.timer); } if (!waitQueueMember[kCancelled]) { waitQueueMember.callback(err); @@ -596,7 +570,7 @@ function processWaitQueue(topology) { } catch (e) { if (waitQueueMember.timer) { - clearTimeout(waitQueueMember.timer); + (0, timers_1.clearTimeout)(waitQueueMember.timer); } waitQueueMember.callback(e); continue; @@ -610,8 +584,7 @@ function processWaitQueue(topology) { selectedServer = topology.s.servers.get(selectedDescriptions[0].address); } else { - // don't shuffle the array if there are only two elements - const descriptions = selectedDescriptions.length === 2 ? selectedDescriptions : (0, utils_1.shuffle)(selectedDescriptions, 2); + const descriptions = (0, utils_1.shuffle)(selectedDescriptions, 2); const server1 = topology.s.servers.get(descriptions[0].address); const server2 = topology.s.servers.get(descriptions[1].address); selectedServer = @@ -628,7 +601,7 @@ function processWaitQueue(topology) { transaction.pinServer(selectedServer); } if (waitQueueMember.timer) { - clearTimeout(waitQueueMember.timer); + (0, timers_1.clearTimeout)(waitQueueMember.timer); } waitQueueMember.callback(undefined, selectedServer); } diff --git a/food-ordering-app/server/node_modules/mongodb/lib/sdam/topology.js.map b/food-ordering-app/server/node_modules/mongodb/lib/sdam/topology.js.map index 8f1088c8a..229883b25 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/sdam/topology.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/sdam/topology.js.map @@ -1 +1 @@ -{"version":3,"file":"topology.js","sourceRoot":"","sources":["../../src/sdam/topology.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"topology.js","sourceRoot":"","sources":["../../src/sdam/topology.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/sdam/topology_description.js b/food-ordering-app/server/node_modules/mongodb/lib/sdam/topology_description.js index b6c4fd076..a4dcac653 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/sdam/topology_description.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/sdam/topology_description.js @@ -26,7 +26,7 @@ class TopologyDescription { /** * Create a TopologyDescription */ - constructor(topologyType, serverDescriptions, setName, maxSetVersion, maxElectionId, commonWireVersion, options) { + constructor(topologyType, serverDescriptions = null, setName = null, maxSetVersion = null, maxElectionId = null, commonWireVersion = null, options = null) { var _a, _b; options = options !== null && options !== void 0 ? options : {}; this.type = topologyType !== null && topologyType !== void 0 ? topologyType : common_1.TopologyType.Unknown; @@ -35,18 +35,10 @@ class TopologyDescription { this.compatible = true; this.heartbeatFrequencyMS = (_a = options.heartbeatFrequencyMS) !== null && _a !== void 0 ? _a : 0; this.localThresholdMS = (_b = options.localThresholdMS) !== null && _b !== void 0 ? _b : 15; - if (setName) { - this.setName = setName; - } - if (maxSetVersion) { - this.maxSetVersion = maxSetVersion; - } - if (maxElectionId) { - this.maxElectionId = maxElectionId; - } - if (commonWireVersion) { - this.commonWireVersion = commonWireVersion; - } + this.setName = setName !== null && setName !== void 0 ? setName : null; + this.maxElectionId = maxElectionId !== null && maxElectionId !== void 0 ? maxElectionId : null; + this.maxSetVersion = maxSetVersion !== null && maxSetVersion !== void 0 ? maxSetVersion : null; + this.commonWireVersion = commonWireVersion !== null && commonWireVersion !== void 0 ? commonWireVersion : 0; // determine server compatibility for (const serverDescription of this.servers.values()) { // Load balancer mode is always compatible. @@ -69,12 +61,12 @@ class TopologyDescription { // value among ServerDescriptions of all data-bearing server types. If any have a null // logicalSessionTimeoutMinutes, then TopologyDescription.logicalSessionTimeoutMinutes MUST be // set to null. - this.logicalSessionTimeoutMinutes = undefined; + this.logicalSessionTimeoutMinutes = null; for (const [, server] of this.servers) { if (server.isReadable) { if (server.logicalSessionTimeoutMinutes == null) { // If any of the servers have a null logicalSessionsTimeout, then the whole topology does - this.logicalSessionTimeoutMinutes = undefined; + this.logicalSessionTimeoutMinutes = null; break; } if (this.logicalSessionTimeoutMinutes == null) { @@ -140,10 +132,6 @@ class TopologyDescription { const address = serverDescription.address; // potentially mutated values let { type: topologyType, setName, maxSetVersion, maxElectionId, commonWireVersion } = this; - if (serverDescription.setName && setName && serverDescription.setName !== setName) { - // TODO(NODE-4159): servers with an incorrect setName should be removed not marked Unknown - serverDescription = new server_description_1.ServerDescription(address, undefined); - } const serverType = serverDescription.type; const serverDescriptions = new Map(this.servers); // update common wire version @@ -155,6 +143,17 @@ class TopologyDescription { commonWireVersion = Math.min(commonWireVersion, serverDescription.maxWireVersion); } } + if (typeof serverDescription.setName === 'string' && + typeof setName === 'string' && + serverDescription.setName !== setName) { + if (topologyType === common_1.TopologyType.Single) { + // "Single" Topology with setName mismatch is direct connection usage, mark unknown do not remove + serverDescription = new server_description_1.ServerDescription(address); + } + else { + serverDescriptions.delete(address); + } + } // update the actual server description serverDescriptions.set(address, serverDescription); if (topologyType === common_1.TopologyType.Single) { @@ -217,7 +216,7 @@ class TopologyDescription { if (descriptionsWithError.length > 0) { return descriptionsWithError[0].error; } - return; + return null; } /** * Determines if the topology description has any known servers @@ -255,44 +254,49 @@ function topologyTypeForServerType(serverType) { return common_1.TopologyType.Unknown; } } -// TODO: improve these docs when ObjectId is properly typed -function compareObjectId(oid1, oid2) { - if (oid1 == null) { - return -1; - } - if (oid2 == null) { - return 1; - } - if (oid1.id instanceof Buffer && oid2.id instanceof Buffer) { - const oid1Buffer = oid1.id; - const oid2Buffer = oid2.id; - return oid1Buffer.compare(oid2Buffer); - } - const oid1String = oid1.toString(); - const oid2String = oid2.toString(); - return oid1String.localeCompare(oid2String); -} -function updateRsFromPrimary(serverDescriptions, serverDescription, setName, maxSetVersion, maxElectionId) { +function updateRsFromPrimary(serverDescriptions, serverDescription, setName = null, maxSetVersion = null, maxElectionId = null) { + var _a; setName = setName || serverDescription.setName; if (setName !== serverDescription.setName) { serverDescriptions.delete(serverDescription.address); return [checkHasPrimary(serverDescriptions), setName, maxSetVersion, maxElectionId]; } - const electionId = serverDescription.electionId ? serverDescription.electionId : null; - if (serverDescription.setVersion && electionId) { - if (maxSetVersion && maxElectionId) { - if (maxSetVersion > serverDescription.setVersion || - compareObjectId(maxElectionId, electionId) > 0) { - // this primary is stale, we must remove it - serverDescriptions.set(serverDescription.address, new server_description_1.ServerDescription(serverDescription.address)); - return [checkHasPrimary(serverDescriptions), setName, maxSetVersion, maxElectionId]; - } + if (serverDescription.maxWireVersion >= 17) { + const electionIdComparison = (0, utils_1.compareObjectId)(maxElectionId, serverDescription.electionId); + const maxElectionIdIsEqual = electionIdComparison === 0; + const maxElectionIdIsLess = electionIdComparison === -1; + const maxSetVersionIsLessOrEqual = (maxSetVersion !== null && maxSetVersion !== void 0 ? maxSetVersion : -1) <= ((_a = serverDescription.setVersion) !== null && _a !== void 0 ? _a : -1); + if (maxElectionIdIsLess || (maxElectionIdIsEqual && maxSetVersionIsLessOrEqual)) { + // The reported electionId was greater + // or the electionId was equal and reported setVersion was greater + // Always update both values, they are a tuple + maxElectionId = serverDescription.electionId; + maxSetVersion = serverDescription.setVersion; + } + else { + // Stale primary + // replace serverDescription with a default ServerDescription of type "Unknown" + serverDescriptions.set(serverDescription.address, new server_description_1.ServerDescription(serverDescription.address)); + return [checkHasPrimary(serverDescriptions), setName, maxSetVersion, maxElectionId]; } - maxElectionId = serverDescription.electionId; } - if (serverDescription.setVersion != null && - (maxSetVersion == null || serverDescription.setVersion > maxSetVersion)) { - maxSetVersion = serverDescription.setVersion; + else { + const electionId = serverDescription.electionId ? serverDescription.electionId : null; + if (serverDescription.setVersion && electionId) { + if (maxSetVersion && maxElectionId) { + if (maxSetVersion > serverDescription.setVersion || + (0, utils_1.compareObjectId)(maxElectionId, electionId) > 0) { + // this primary is stale, we must remove it + serverDescriptions.set(serverDescription.address, new server_description_1.ServerDescription(serverDescription.address)); + return [checkHasPrimary(serverDescriptions), setName, maxSetVersion, maxElectionId]; + } + } + maxElectionId = serverDescription.electionId; + } + if (serverDescription.setVersion != null && + (maxSetVersion == null || serverDescription.setVersion > maxSetVersion)) { + maxSetVersion = serverDescription.setVersion; + } } // We've heard from the primary. Is it the same primary as before? for (const [address, server] of serverDescriptions) { @@ -319,7 +323,7 @@ function updateRsFromPrimary(serverDescriptions, serverDescription, setName, max }); return [checkHasPrimary(serverDescriptions), setName, maxSetVersion, maxElectionId]; } -function updateRsWithPrimaryFromMember(serverDescriptions, serverDescription, setName) { +function updateRsWithPrimaryFromMember(serverDescriptions, serverDescription, setName = null) { if (setName == null) { // TODO(NODE-3483): should be an appropriate runtime error throw new error_1.MongoRuntimeError('Argument "setName" is required if connected to a replica set'); @@ -330,9 +334,9 @@ function updateRsWithPrimaryFromMember(serverDescriptions, serverDescription, se } return checkHasPrimary(serverDescriptions); } -function updateRsNoPrimaryFromMember(serverDescriptions, serverDescription, setName) { +function updateRsNoPrimaryFromMember(serverDescriptions, serverDescription, setName = null) { const topologyType = common_1.TopologyType.ReplicaSetNoPrimary; - setName = setName || serverDescription.setName; + setName = setName !== null && setName !== void 0 ? setName : serverDescription.setName; if (setName !== serverDescription.setName) { serverDescriptions.delete(serverDescription.address); return [topologyType, setName]; diff --git a/food-ordering-app/server/node_modules/mongodb/lib/sdam/topology_description.js.map b/food-ordering-app/server/node_modules/mongodb/lib/sdam/topology_description.js.map index e32dd37a2..673952a20 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/sdam/topology_description.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/sdam/topology_description.js.map @@ -1 +1 @@ -{"version":3,"file":"topology_description.js","sourceRoot":"","sources":["../../src/sdam/topology_description.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"topology_description.js","sourceRoot":"","sources":["../../src/sdam/topology_description.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/sessions.js b/food-ordering-app/server/node_modules/mongodb/lib/sessions.js index 480034871..83a2d01fb 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/sessions.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/sessions.js @@ -2,6 +2,7 @@ var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.updateSessionFromResponse = exports.applySession = exports.ServerSessionPool = exports.ServerSession = exports.maybeClearPinnedConnection = exports.ClientSession = void 0; +const util_1 = require("util"); const bson_1 = require("./bson"); const metrics_1 = require("./cmap/metrics"); const shared_1 = require("./cmap/wire_protocol/shared"); @@ -43,6 +44,7 @@ class ClientSession extends mongo_types_1.TypedEventEmitter { * @param clientOptions - Optional settings provided when creating a MongoClient */ constructor(client, sessionPool, options, clientOptions) { + var _b; super(); /** @internal */ this[_a] = false; @@ -68,8 +70,10 @@ class ClientSession extends mongo_types_1.TypedEventEmitter { this.explicit = !!options.explicit; this[kServerSession] = this.explicit ? this.sessionPool.acquire() : null; this[kTxnNumberIncrement] = 0; + const defaultCausalConsistencyValue = this.explicit && options.snapshot !== true; this.supports = { - causalConsistency: options.snapshot !== true && options.causalConsistency !== false + // if we can enable causal consistency, do so by default + causalConsistency: (_b = options.causalConsistency) !== null && _b !== void 0 ? _b : defaultCausalConsistencyValue }; this.clusterTime = options.initialClusterTime; this.operationTime = undefined; @@ -130,40 +134,34 @@ class ClientSession extends mongo_types_1.TypedEventEmitter { if (typeof options === 'function') (callback = options), (options = {}); const finalOptions = { force: true, ...options }; - return (0, utils_1.maybePromise)(callback, done => { - if (this.hasEnded) { - maybeClearPinnedConnection(this, finalOptions); - return done(); - } - const completeEndSession = () => { - maybeClearPinnedConnection(this, finalOptions); - const serverSession = this[kServerSession]; - if (serverSession != null) { - // release the server session back to the pool - this.sessionPool.release(serverSession); - // Make sure a new serverSession never makes it on to the ClientSession - Object.defineProperty(this, kServerSession, { - value: ServerSession.clone(serverSession) - }); + return (0, utils_1.maybeCallback)(async () => { + try { + if (this.inTransaction()) { + await this.abortTransaction(); + } + if (!this.hasEnded) { + const serverSession = this[kServerSession]; + if (serverSession != null) { + // release the server session back to the pool + this.sessionPool.release(serverSession); + // Make sure a new serverSession never makes it onto this ClientSession + Object.defineProperty(this, kServerSession, { + value: ServerSession.clone(serverSession), + writable: false + }); + } + // mark the session as ended, and emit a signal + this.hasEnded = true; + this.emit('ended', this); } - // mark the session as ended, and emit a signal - this.hasEnded = true; - this.emit('ended', this); + } + catch { // spec indicates that we should ignore all errors for `endSessions` - done(); - }; - if (this.inTransaction()) { - // If we've reached endSession and the transaction is still active - // by default we abort it - this.abortTransaction(err => { - if (err) - return done(err); - completeEndSession(); - }); - return; } - completeEndSession(); - }); + finally { + maybeClearPinnedConnection(this, finalOptions); + } + }, callback); } /** * Advances the operationTime for a ClientSession. @@ -238,7 +236,7 @@ class ClientSession extends mongo_types_1.TypedEventEmitter { startTransaction(options) { var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l; if (this[kSnapshotEnabled]) { - throw new error_1.MongoCompatibilityError('Transactions are not allowed with snapshot sessions'); + throw new error_1.MongoCompatibilityError('Transactions are not supported in snapshot sessions'); } if (this.inTransaction()) { throw new error_1.MongoTransactionError('Transaction already in progress'); @@ -264,10 +262,10 @@ class ClientSession extends mongo_types_1.TypedEventEmitter { this.transaction.transition(transactions_1.TxnState.STARTING_TRANSACTION); } commitTransaction(callback) { - return (0, utils_1.maybePromise)(callback, cb => endTransaction(this, 'commitTransaction', cb)); + return (0, utils_1.maybeCallback)(async () => endTransactionAsync(this, 'commitTransaction'), callback); } abortTransaction(callback) { - return (0, utils_1.maybePromise)(callback, cb => endTransaction(this, 'abortTransaction', cb)); + return (0, utils_1.maybeCallback)(async () => endTransactionAsync(this, 'abortTransaction'), callback); } /** * This is here to ensure that ClientSession is never serialized to BSON. @@ -343,7 +341,7 @@ function maybeClearPinnedConnection(session, options) { ? metrics_1.ConnectionPoolMetrics.TXN : metrics_1.ConnectionPoolMetrics.CURSOR); if (options === null || options === void 0 ? void 0 : options.forceClear) { - loadBalancer.s.pool.clear(conn.serviceId); + loadBalancer.s.pool.clear({ serviceId: conn.serviceId }); } } session[kPinnedConnection] = undefined; @@ -381,17 +379,18 @@ function userExplicitlyEndedTransaction(session) { return USER_EXPLICIT_TXN_END_STATES.has(session.transaction.state); } function attemptTransaction(session, startTime, fn, options) { - const Promise = promise_provider_1.PromiseProvider.get(); + var _b; session.startTransaction(options); let promise; try { promise = fn(session); } catch (err) { - promise = Promise.reject(err); + const PromiseConstructor = (_b = promise_provider_1.PromiseProvider.get()) !== null && _b !== void 0 ? _b : Promise; + promise = PromiseConstructor.reject(err); } if (!(0, utils_1.isPromiseLike)(promise)) { - session.abortTransaction(); + session.abortTransaction().catch(() => null); throw new error_1.MongoInvalidArgumentError('Function provided to `withTransaction` must return a Promise'); } return promise.then(() => { @@ -417,6 +416,7 @@ function attemptTransaction(session, startTime, fn, options) { return maybeRetryOrThrow(err); }); } +const endTransactionAsync = (0, util_1.promisify)(endTransaction); function endTransaction(session, commandName, callback) { // handle any initial problematic cases const txnState = session.transaction.state; @@ -580,27 +580,12 @@ exports.ServerSession = ServerSession; * @internal */ class ServerSessionPool { - constructor(topology) { - if (topology == null) { - throw new error_1.MongoRuntimeError('ServerSessionPool requires a topology'); - } - this.topology = topology; - this.sessions = []; - } - /** Ends all sessions in the session pool */ - endAllPooledSessions(callback) { - if (this.sessions.length) { - this.topology.endSessions(this.sessions.map((session) => session.id), () => { - this.sessions = []; - if (typeof callback === 'function') { - callback(); - } - }); - return; - } - if (typeof callback === 'function') { - callback(); + constructor(client) { + if (client == null) { + throw new error_1.MongoRuntimeError('ServerSessionPool requires a MongoClient'); } + this.client = client; + this.sessions = new utils_1.List(); } /** * Acquire a Server Session from the pool. @@ -609,14 +594,24 @@ class ServerSessionPool { * pool and returned. If no non-stale session is found, a new ServerSession is created. */ acquire() { - const sessionTimeoutMinutes = this.topology.logicalSessionTimeoutMinutes || 10; - while (this.sessions.length) { - const session = this.sessions.shift(); - if (session && (this.topology.loadBalanced || !session.hasTimedOut(sessionTimeoutMinutes))) { - return session; + var _b, _c, _d; + const sessionTimeoutMinutes = (_c = (_b = this.client.topology) === null || _b === void 0 ? void 0 : _b.logicalSessionTimeoutMinutes) !== null && _c !== void 0 ? _c : 10; + let session = null; + // Try to obtain from session pool + while (this.sessions.length > 0) { + const potentialSession = this.sessions.shift(); + if (potentialSession != null && + (!!((_d = this.client.topology) === null || _d === void 0 ? void 0 : _d.loadBalanced) || + !potentialSession.hasTimedOut(sessionTimeoutMinutes))) { + session = potentialSession; + break; } } - return new ServerSession(); + // If nothing valid came from the pool make a new one + if (session == null) { + session = new ServerSession(); + } + return session; } /** * Release a session to the session pool @@ -626,22 +621,15 @@ class ServerSessionPool { * @param session - The session to release to the pool */ release(session) { - const sessionTimeoutMinutes = this.topology.logicalSessionTimeoutMinutes; - if (this.topology.loadBalanced && !sessionTimeoutMinutes) { + var _b, _c, _d; + const sessionTimeoutMinutes = (_c = (_b = this.client.topology) === null || _b === void 0 ? void 0 : _b.logicalSessionTimeoutMinutes) !== null && _c !== void 0 ? _c : 10; + if (((_d = this.client.topology) === null || _d === void 0 ? void 0 : _d.loadBalanced) && !sessionTimeoutMinutes) { this.sessions.unshift(session); } if (!sessionTimeoutMinutes) { return; } - while (this.sessions.length) { - const pooledSession = this.sessions[this.sessions.length - 1]; - if (pooledSession.hasTimedOut(sessionTimeoutMinutes)) { - this.sessions.pop(); - } - else { - break; - } - } + this.sessions.prune(session => session.hasTimedOut(sessionTimeoutMinutes)); if (!session.hasTimedOut(sessionTimeoutMinutes)) { if (session.isDirty) { return; @@ -686,6 +674,7 @@ function applySession(session, command, options) { if (isRetryableWrite || inTxnOrTxnCommand) { serverSession.txnNumber += session[kTxnNumberIncrement]; session[kTxnNumberIncrement] = 0; + // TODO(NODE-2674): Preserve int64 sent from MongoDB command.txnNumber = bson_1.Long.fromNumber(serverSession.txnNumber); } if (!inTxnOrTxnCommand) { diff --git a/food-ordering-app/server/node_modules/mongodb/lib/sessions.js.map b/food-ordering-app/server/node_modules/mongodb/lib/sessions.js.map index 46068711a..496c5d69d 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/sessions.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/sessions.js.map @@ -1 +1 @@ -{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/transactions.js.map b/food-ordering-app/server/node_modules/mongodb/lib/transactions.js.map index 5e261e908..f0bd554a8 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/transactions.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/transactions.js.map @@ -1 +1 @@ -{"version":3,"file":"transactions.js","sourceRoot":"","sources":["../src/transactions.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"transactions.js","sourceRoot":"","sources":["../src/transactions.ts"],"names":[],"mappings":";;;AACA,mCAAmE;AAEnE,iDAA8D;AAE9D,uDAAmD;AAEnD,mDAA+C;AAE/C,gBAAgB;AACH,QAAA,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;IACpC,cAAc,EAAE,gBAAgB;IAChC,oBAAoB,EAAE,sBAAsB;IAC5C,uBAAuB,EAAE,yBAAyB;IAClD,qBAAqB,EAAE,uBAAuB;IAC9C,2BAA2B,EAAE,6BAA6B;IAC1D,mBAAmB,EAAE,qBAAqB;CAClC,CAAC,CAAC;AAKZ,MAAM,YAAY,GAAwC;IACxD,CAAC,gBAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,gBAAQ,CAAC,cAAc,EAAE,gBAAQ,CAAC,oBAAoB,CAAC;IACnF,CAAC,gBAAQ,CAAC,oBAAoB,CAAC,EAAE;QAC/B,gBAAQ,CAAC,uBAAuB;QAChC,gBAAQ,CAAC,qBAAqB;QAC9B,gBAAQ,CAAC,2BAA2B;QACpC,gBAAQ,CAAC,mBAAmB;KAC7B;IACD,CAAC,gBAAQ,CAAC,uBAAuB,CAAC,EAAE;QAClC,gBAAQ,CAAC,uBAAuB;QAChC,gBAAQ,CAAC,qBAAqB;QAC9B,gBAAQ,CAAC,mBAAmB;KAC7B;IACD,CAAC,gBAAQ,CAAC,qBAAqB,CAAC,EAAE;QAChC,gBAAQ,CAAC,qBAAqB;QAC9B,gBAAQ,CAAC,2BAA2B;QACpC,gBAAQ,CAAC,oBAAoB;QAC7B,gBAAQ,CAAC,cAAc;KACxB;IACD,CAAC,gBAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,gBAAQ,CAAC,oBAAoB,EAAE,gBAAQ,CAAC,cAAc,CAAC;IACxF,CAAC,gBAAQ,CAAC,2BAA2B,CAAC,EAAE;QACtC,gBAAQ,CAAC,2BAA2B;QACpC,gBAAQ,CAAC,cAAc;KACxB;CACF,CAAC;AAEF,MAAM,aAAa,GAAkB,IAAI,GAAG,CAAC;IAC3C,gBAAQ,CAAC,oBAAoB;IAC7B,gBAAQ,CAAC,uBAAuB;CACjC,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAkB,IAAI,GAAG,CAAC;IAC9C,gBAAQ,CAAC,qBAAqB;IAC9B,gBAAQ,CAAC,2BAA2B;IACpC,gBAAQ,CAAC,mBAAmB;CAC7B,CAAC,CAAC;AAkBH;;;GAGG;AACH,MAAa,WAAW;IAStB,qCAAqC;IACrC,YAAY,OAA4B;QACtC,OAAO,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,gBAAQ,CAAC,cAAc,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAElB,MAAM,YAAY,GAAG,4BAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,YAAY,EAAE;YAChB,IAAI,YAAY,CAAC,CAAC,KAAK,CAAC,EAAE;gBACxB,MAAM,IAAI,6BAAqB,CAAC,0DAA0D,CAAC,CAAC;aAC7F;YAED,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;SAC1C;QAED,IAAI,OAAO,CAAC,WAAW,EAAE;YACvB,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,0BAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;SAC7D;QAED,IAAI,OAAO,CAAC,cAAc,EAAE;YAC1B,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,gCAAc,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;SACnE;QAED,IAAI,OAAO,CAAC,eAAe,EAAE;YAC3B,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC;SAClD;QAED,yCAAyC;QACzC,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAC/B,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;IAClC,CAAC;IAED,gBAAgB;IAChB,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,mDAAmD;IACnD,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,KAAK,KAAK,gBAAQ,CAAC,oBAAoB,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ;QACV,OAAO,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,WAAW;QACb,OAAO,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IACD;;;;OAIG;IACH,UAAU,CAAC,SAAmB;QAC5B,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YAChD,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;YACvB,IACE,IAAI,CAAC,KAAK,KAAK,gBAAQ,CAAC,cAAc;gBACtC,IAAI,CAAC,KAAK,KAAK,gBAAQ,CAAC,oBAAoB;gBAC5C,IAAI,CAAC,KAAK,KAAK,gBAAQ,CAAC,mBAAmB,EAC3C;gBACA,IAAI,CAAC,WAAW,EAAE,CAAC;aACpB;YACD,OAAO;SACR;QAED,MAAM,IAAI,yBAAiB,CACzB,4CAA4C,IAAI,CAAC,KAAK,SAAS,SAAS,GAAG,CAC5E,CAAC;IACJ,CAAC;IAED,gBAAgB;IAChB,SAAS,CAAC,MAAc;QACtB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;SAC7B;IACH,CAAC;IAED,gBAAgB;IAChB,WAAW;QACT,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;IACjC,CAAC;CACF;AAxGD,kCAwGC;AAED,SAAgB,oBAAoB,CAAC,OAAiB;IACpD,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;AACnE,CAAC;AAFD,oDAEC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/utils.js b/food-ordering-app/server/node_modules/mongodb/lib/utils.js index be36600fc..8b4967966 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/utils.js +++ b/food-ordering-app/server/node_modules/mongodb/lib/utils.js @@ -1,10 +1,8 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.shuffle = exports.parsePackageVersion = exports.supportsRetryableWrites = exports.enumToString = exports.emitWarningOnce = exports.emitWarning = exports.MONGODB_WARNING_CODE = exports.DEFAULT_PK_FACTORY = exports.HostAddress = exports.BufferPool = exports.deepCopy = exports.isRecord = exports.setDifference = exports.isHello = exports.isSuperset = exports.resolveOptions = exports.hasAtomicOperators = exports.makeInterruptibleAsyncInterval = exports.calculateDurationInMs = exports.now = exports.makeClientMetadata = exports.makeStateMachine = exports.errorStrictEqual = exports.arrayStrictEqual = exports.eachAsyncSeries = exports.eachAsync = exports.collationNotSupported = exports.maxWireVersion = exports.uuidV4 = exports.databaseNamespace = exports.maybePromise = exports.makeCounter = exports.MongoDBNamespace = exports.ns = exports.deprecateOptions = exports.defaultMsgHandler = exports.getTopology = exports.decorateWithExplain = exports.decorateWithReadConcern = exports.decorateWithCollation = exports.isPromiseLike = exports.applyWriteConcern = exports.applyRetryableWrites = exports.filterOptions = exports.mergeOptions = exports.isObject = exports.parseIndexOptions = exports.normalizeHintField = exports.checkCollectionName = exports.MAX_JS_INT = void 0; -exports.commandSupportsReadConcern = void 0; +exports.compareObjectId = exports.getMongoDBClientEncryption = exports.commandSupportsReadConcern = exports.shuffle = exports.parsePackageVersion = exports.supportsRetryableWrites = exports.enumToString = exports.emitWarningOnce = exports.emitWarning = exports.MONGODB_WARNING_CODE = exports.DEFAULT_PK_FACTORY = exports.HostAddress = exports.BufferPool = exports.List = exports.deepCopy = exports.isRecord = exports.setDifference = exports.isHello = exports.isSuperset = exports.resolveOptions = exports.hasAtomicOperators = exports.calculateDurationInMs = exports.now = exports.makeStateMachine = exports.errorStrictEqual = exports.arrayStrictEqual = exports.eachAsyncSeries = exports.eachAsync = exports.maxWireVersion = exports.uuidV4 = exports.databaseNamespace = exports.maybeCallback = exports.makeCounter = exports.MongoDBNamespace = exports.ns = exports.deprecateOptions = exports.defaultMsgHandler = exports.getTopology = exports.decorateWithExplain = exports.decorateWithReadConcern = exports.decorateWithCollation = exports.isPromiseLike = exports.applyWriteConcern = exports.applyRetryableWrites = exports.filterOptions = exports.mergeOptions = exports.isObject = exports.normalizeHintField = exports.checkCollectionName = exports.MAX_JS_INT = void 0; +exports.matchesParentDomain = exports.parseUnsignedInteger = exports.parseInteger = void 0; const crypto = require("crypto"); -const os = require("os"); -const timers_1 = require("timers"); const url_1 = require("url"); const bson_1 = require("./bson"); const constants_1 = require("./cmap/wire_protocol/constants"); @@ -69,68 +67,14 @@ function normalizeHintField(hint) { return finalHint; } exports.normalizeHintField = normalizeHintField; -/** - * Create an index specifier based on - * @internal - */ -function parseIndexOptions(indexSpec) { - const fieldHash = {}; - const indexes = []; - let keys; - // Get all the fields accordingly - if ('string' === typeof indexSpec) { - // 'type' - indexes.push(indexSpec + '_' + 1); - fieldHash[indexSpec] = 1; - } - else if (Array.isArray(indexSpec)) { - indexSpec.forEach((f) => { - if ('string' === typeof f) { - // [{location:'2d'}, 'type'] - indexes.push(f + '_' + 1); - fieldHash[f] = 1; - } - else if (Array.isArray(f)) { - // [['location', '2d'],['type', 1]] - indexes.push(f[0] + '_' + (f[1] || 1)); - fieldHash[f[0]] = f[1] || 1; - } - else if (isObject(f)) { - // [{location:'2d'}, {type:1}] - keys = Object.keys(f); - keys.forEach(k => { - indexes.push(k + '_' + f[k]); - fieldHash[k] = f[k]; - }); - } - else { - // undefined (ignore) - } - }); - } - else if (isObject(indexSpec)) { - // {location:'2d', type:1} - keys = Object.keys(indexSpec); - Object.entries(indexSpec).forEach(([key, value]) => { - indexes.push(key + '_' + value); - fieldHash[key] = value; - }); - } - return { - name: indexes.join('_'), - keys: keys, - fieldHash: fieldHash - }; -} -exports.parseIndexOptions = parseIndexOptions; +const TO_STRING = (object) => Object.prototype.toString.call(object); /** * Checks if arg is an Object: * - **NOTE**: the check is based on the `[Symbol.toStringTag]() === 'Object'` * @internal */ -// eslint-disable-next-line @typescript-eslint/ban-types function isObject(arg) { - return '[object Object]' === Object.prototype.toString.call(arg); + return '[object Object]' === TO_STRING(arg); } exports.isObject = isObject; /** @internal */ @@ -201,12 +145,12 @@ exports.applyWriteConcern = applyWriteConcern; /** * Checks if a given value is a Promise * - * @typeParam T - The result type of maybePromise - * @param maybePromise - An object that could be a promise + * @typeParam T - The resolution type of the possible promise + * @param value - An object that could be a promise * @returns true if the provided value is a Promise */ -function isPromiseLike(maybePromise) { - return !!maybePromise && typeof maybePromise.then === 'function'; +function isPromiseLike(value) { + return !!value && typeof value.then === 'function'; } exports.isPromiseLike = isPromiseLike; /** @@ -359,7 +303,7 @@ class MongoDBNamespace { */ constructor(db, collection) { this.db = db; - this.collection = collection; + this.collection = collection === '' ? undefined : collection; } toString() { return this.collection ? `${this.db}.${this.collection}` : this.db; @@ -368,12 +312,13 @@ class MongoDBNamespace { return new MongoDBNamespace(this.db, collection); } static fromString(namespace) { - if (!namespace) { + if (typeof namespace !== 'string' || namespace === '') { // TODO(NODE-3483): Replace with MongoNamespaceError throw new error_1.MongoRuntimeError(`Cannot parse namespace from "${namespace}"`); } - const [db, ...collection] = namespace.split('.'); - return new MongoDBNamespace(db, collection.join('.')); + const [db, ...collectionParts] = namespace.split('.'); + const collection = collectionParts.join('.'); + return new MongoDBNamespace(db, collection === '' ? undefined : collection); } } exports.MongoDBNamespace = MongoDBNamespace; @@ -387,45 +332,23 @@ function* makeCounter(seed = 0) { } } exports.makeCounter = makeCounter; -/** - * Helper function for either accepting a callback, or returning a promise - * @internal - * - * @param callback - The last function argument in exposed method, controls if a Promise is returned - * @param wrapper - A function that wraps the callback - * @returns Returns void if a callback is supplied, else returns a Promise. - */ -function maybePromise(callback, wrapper) { - const Promise = promise_provider_1.PromiseProvider.get(); - let result; - if (typeof callback !== 'function') { - result = new Promise((resolve, reject) => { - callback = (err, res) => { - if (err) - return reject(err); - resolve(res); - }; - }); - } - wrapper((err, res) => { - if (err != null) { - try { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - callback(err); - } - catch (error) { - process.nextTick(() => { - throw error; - }); - } - return; +function maybeCallback(promiseFn, callback) { + const PromiseConstructor = promise_provider_1.PromiseProvider.get(); + const promise = promiseFn(); + if (callback == null) { + if (PromiseConstructor == null) { + return promise; } - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - callback(err, res); - }); - return result; + else { + return new PromiseConstructor((resolve, reject) => { + promise.then(resolve, reject); + }); + } + } + promise.then(result => callback(undefined, result), error => callback(error)); + return; } -exports.maybePromise = maybePromise; +exports.maybeCallback = maybeCallback; /** @internal */ function databaseNamespace(ns) { return ns.split('.')[0]; @@ -452,7 +375,7 @@ function maxWireVersion(topologyOrServer) { // Since we do not have a monitor, we assume the load balanced server is always // pointed at the latest mongodb version. There is a risk that for on-prem // deployments that don't upgrade immediately that this could alert to the - // application that a feature is avaiable that is actually not. + // application that a feature is available that is actually not. return constants_1.MAX_SUPPORTED_WIRE_VERSION; } if (topologyOrServer.hello) { @@ -473,17 +396,6 @@ function maxWireVersion(topologyOrServer) { return 0; } exports.maxWireVersion = maxWireVersion; -/** - * Checks that collation is supported by server. - * @internal - * - * @param server - to check against - * @param cmd - object where collation may be specified - */ -function collationNotSupported(server, cmd) { - return cmd && cmd.collation && maxWireVersion(server) < 5; -} -exports.collationNotSupported = collationNotSupported; /** * Applies the function `eachFn` to each item in `arr`, in parallel. * @internal @@ -581,45 +493,6 @@ function makeStateMachine(stateTable) { }; } exports.makeStateMachine = makeStateMachine; -// eslint-disable-next-line @typescript-eslint/no-var-requires -const NODE_DRIVER_VERSION = require('../package.json').version; -function makeClientMetadata(options) { - options = options !== null && options !== void 0 ? options : {}; - const metadata = { - driver: { - name: 'nodejs', - version: NODE_DRIVER_VERSION - }, - os: { - type: os.type(), - name: process.platform, - architecture: process.arch, - version: os.release() - }, - platform: `Node.js ${process.version}, ${os.endianness()} (unified)` - }; - // support optionally provided wrapping driver info - if (options.driverInfo) { - if (options.driverInfo.name) { - metadata.driver.name = `${metadata.driver.name}|${options.driverInfo.name}`; - } - if (options.driverInfo.version) { - metadata.version = `${metadata.driver.version}|${options.driverInfo.version}`; - } - if (options.driverInfo.platform) { - metadata.platform = `${metadata.platform}|${options.driverInfo.platform}`; - } - } - if (options.appName) { - // MongoDB requires the appName not exceed a byte length of 128 - const buffer = Buffer.from(options.appName); - metadata.application = { - name: buffer.byteLength > 128 ? buffer.slice(0, 128).toString('utf8') : options.appName - }; - } - return metadata; -} -exports.makeClientMetadata = makeClientMetadata; /** @internal */ function now() { const hrtime = process.hrtime(); @@ -635,89 +508,6 @@ function calculateDurationInMs(started) { return elapsed < 0 ? 0 : elapsed; } exports.calculateDurationInMs = calculateDurationInMs; -/** - * Creates an interval timer which is able to be woken up sooner than - * the interval. The timer will also debounce multiple calls to wake - * ensuring that the function is only ever called once within a minimum - * interval window. - * @internal - * - * @param fn - An async function to run on an interval, must accept a `callback` as its only parameter - */ -function makeInterruptibleAsyncInterval(fn, options) { - let timerId; - let lastCallTime; - let cannotBeExpedited = false; - let stopped = false; - options = options !== null && options !== void 0 ? options : {}; - const interval = options.interval || 1000; - const minInterval = options.minInterval || 500; - const immediate = typeof options.immediate === 'boolean' ? options.immediate : false; - const clock = typeof options.clock === 'function' ? options.clock : now; - function wake() { - const currentTime = clock(); - const nextScheduledCallTime = lastCallTime + interval; - const timeUntilNextCall = nextScheduledCallTime - currentTime; - // For the streaming protocol: there is nothing obviously stopping this - // interval from being woken up again while we are waiting "infinitely" - // for `fn` to be called again`. Since the function effectively - // never completes, the `timeUntilNextCall` will continue to grow - // negatively unbounded, so it will never trigger a reschedule here. - // This is possible in virtualized environments like AWS Lambda where our - // clock is unreliable. In these cases the timer is "running" but never - // actually completes, so we want to execute immediately and then attempt - // to reschedule. - if (timeUntilNextCall < 0) { - executeAndReschedule(); - return; - } - // debounce multiple calls to wake within the `minInterval` - if (cannotBeExpedited) { - return; - } - // reschedule a call as soon as possible, ensuring the call never happens - // faster than the `minInterval` - if (timeUntilNextCall > minInterval) { - reschedule(minInterval); - cannotBeExpedited = true; - } - } - function stop() { - stopped = true; - if (timerId) { - clearTimeout(timerId); - timerId = undefined; - } - lastCallTime = 0; - cannotBeExpedited = false; - } - function reschedule(ms) { - if (stopped) - return; - if (timerId) { - clearTimeout(timerId); - } - timerId = (0, timers_1.setTimeout)(executeAndReschedule, ms || interval); - } - function executeAndReschedule() { - cannotBeExpedited = false; - lastCallTime = clock(); - fn(err => { - if (err) - throw err; - reschedule(interval); - }); - } - if (immediate) { - executeAndReschedule(); - } - else { - lastCallTime = clock(); - reschedule(undefined); - } - return { wake, stop }; -} -exports.makeInterruptibleAsyncInterval = makeInterruptibleAsyncInterval; /** @internal */ function hasAtomicOperators(doc) { if (Array.isArray(doc)) { @@ -787,10 +577,8 @@ function setDifference(setA, setB) { return difference; } exports.setDifference = setDifference; +const HAS_OWN = (object, prop) => Object.prototype.hasOwnProperty.call(object, prop); function isRecord(value, requiredKeys = undefined) { - const toString = Object.prototype.toString; - const hasOwnProperty = Object.prototype.hasOwnProperty; - const isObject = (v) => toString.call(v) === '[object Object]'; if (!isObject(value)) { return false; } @@ -800,7 +588,7 @@ function isRecord(value, requiredKeys = undefined) { return false; } // Check to see if some method exists from the Object exists - if (!hasOwnProperty.call(ctor.prototype, 'isPrototypeOf')) { + if (!HAS_OWN(ctor.prototype, 'isPrototypeOf')) { return false; } } @@ -848,82 +636,190 @@ function deepCopy(value) { return value; } exports.deepCopy = deepCopy; -/** @internal */ -const kBuffers = Symbol('buffers'); -/** @internal */ -const kLength = Symbol('length'); +/** + * A sequential list of items in a circularly linked list + * @remarks + * The head node is special, it is always defined and has a value of null. + * It is never "included" in the list, in that, it is not returned by pop/shift or yielded by the iterator. + * The circular linkage and always defined head node are to reduce checks for null next/prev references to zero. + * New nodes are declared as object literals with keys always in the same order: next, prev, value. + * @internal + */ +class List { + get length() { + return this.count; + } + get [Symbol.toStringTag]() { + return 'List'; + } + constructor() { + this.count = 0; + // this is carefully crafted: + // declaring a complete and consistently key ordered + // object is beneficial to the runtime optimizations + this.head = { + next: null, + prev: null, + value: null + }; + this.head.next = this.head; + this.head.prev = this.head; + } + toArray() { + return Array.from(this); + } + toString() { + return `head <=> ${this.toArray().join(' <=> ')} <=> head`; + } + *[Symbol.iterator]() { + for (const node of this.nodes()) { + yield node.value; + } + } + *nodes() { + let ptr = this.head.next; + while (ptr !== this.head) { + // Save next before yielding so that we make removing within iteration safe + const { next } = ptr; + yield ptr; + ptr = next; + } + } + /** Insert at end of list */ + push(value) { + this.count += 1; + const newNode = { + next: this.head, + prev: this.head.prev, + value + }; + this.head.prev.next = newNode; + this.head.prev = newNode; + } + /** Inserts every item inside an iterable instead of the iterable itself */ + pushMany(iterable) { + for (const value of iterable) { + this.push(value); + } + } + /** Insert at front of list */ + unshift(value) { + this.count += 1; + const newNode = { + next: this.head.next, + prev: this.head, + value + }; + this.head.next.prev = newNode; + this.head.next = newNode; + } + remove(node) { + if (node === this.head || this.length === 0) { + return null; + } + this.count -= 1; + const prevNode = node.prev; + const nextNode = node.next; + prevNode.next = nextNode; + nextNode.prev = prevNode; + return node.value; + } + /** Removes the first node at the front of the list */ + shift() { + return this.remove(this.head.next); + } + /** Removes the last node at the end of the list */ + pop() { + return this.remove(this.head.prev); + } + /** Iterates through the list and removes nodes where filter returns true */ + prune(filter) { + for (const node of this.nodes()) { + if (filter(node.value)) { + this.remove(node); + } + } + } + clear() { + this.count = 0; + this.head.next = this.head; + this.head.prev = this.head; + } + /** Returns the first item in the list, does not remove */ + first() { + // If the list is empty, value will be the head's null + return this.head.next.value; + } + /** Returns the last item in the list, does not remove */ + last() { + // If the list is empty, value will be the head's null + return this.head.prev.value; + } +} +exports.List = List; /** * A pool of Buffers which allow you to read them as if they were one * @internal */ class BufferPool { constructor() { - this[kBuffers] = []; - this[kLength] = 0; + this.buffers = new List(); + this.totalByteLength = 0; } get length() { - return this[kLength]; + return this.totalByteLength; } /** Adds a buffer to the internal buffer pool list */ append(buffer) { - this[kBuffers].push(buffer); - this[kLength] += buffer.length; + this.buffers.push(buffer); + this.totalByteLength += buffer.length; } - /** Returns the requested number of bytes without consuming them */ - peek(size) { - return this.read(size, false); + /** + * If BufferPool contains 4 bytes or more construct an int32 from the leading bytes, + * otherwise return null. Size can be negative, caller should error check. + */ + getInt32() { + if (this.totalByteLength < 4) { + return null; + } + const firstBuffer = this.buffers.first(); + if (firstBuffer != null && firstBuffer.byteLength >= 4) { + return firstBuffer.readInt32LE(0); + } + // Unlikely case: an int32 is split across buffers. + // Use read and put the returned buffer back on top + const top4Bytes = this.read(4); + const value = top4Bytes.readInt32LE(0); + // Put it back. + this.totalByteLength += 4; + this.buffers.unshift(top4Bytes); + return value; } /** Reads the requested number of bytes, optionally consuming them */ - read(size, consume = true) { + read(size) { if (typeof size !== 'number' || size < 0) { throw new error_1.MongoInvalidArgumentError('Argument "size" must be a non-negative number'); } - if (size > this[kLength]) { + // oversized request returns empty buffer + if (size > this.totalByteLength) { return Buffer.alloc(0); } - let result; - // read the whole buffer - if (size === this.length) { - result = Buffer.concat(this[kBuffers]); - if (consume) { - this[kBuffers] = []; - this[kLength] = 0; - } - } - // size is within first buffer, no need to concat - else if (size <= this[kBuffers][0].length) { - result = this[kBuffers][0].slice(0, size); - if (consume) { - this[kBuffers][0] = this[kBuffers][0].slice(size); - this[kLength] -= size; - } - } - // size is beyond first buffer, need to track and copy - else { - result = Buffer.allocUnsafe(size); - let idx; - let offset = 0; - let bytesToCopy = size; - for (idx = 0; idx < this[kBuffers].length; ++idx) { - let bytesCopied; - if (bytesToCopy > this[kBuffers][idx].length) { - bytesCopied = this[kBuffers][idx].copy(result, offset, 0); - offset += bytesCopied; - } - else { - bytesCopied = this[kBuffers][idx].copy(result, offset, 0, bytesToCopy); - if (consume) { - this[kBuffers][idx] = this[kBuffers][idx].slice(bytesCopied); - } - offset += bytesCopied; - break; - } - bytesToCopy -= bytesCopied; + // We know we have enough, we just don't know how it is spread across chunks + // TODO(NODE-4732): alloc API should change based on raw option + const result = Buffer.allocUnsafe(size); + for (let bytesRead = 0; bytesRead < size;) { + const buffer = this.buffers.shift(); + if (buffer == null) { + break; } - // compact the internal buffer array - if (consume) { - this[kBuffers] = this[kBuffers].slice(idx); - this[kLength] -= size; + const bytesRemaining = size - bytesRead; + const bytesReadable = Math.min(bytesRemaining, buffer.byteLength); + const bytes = buffer.subarray(0, bytesReadable); + result.set(bytes, bytesRead); + bytesRead += bytesReadable; + this.totalByteLength -= bytesReadable; + if (bytesReadable < buffer.byteLength) { + this.buffers.unshift(buffer.subarray(bytesReadable)); } } return result; @@ -933,35 +829,45 @@ exports.BufferPool = BufferPool; /** @public */ class HostAddress { constructor(hostString) { + this.host = undefined; + this.port = undefined; + this.socketPath = undefined; + this.isIPv6 = false; const escapedHost = hostString.split(' ').join('%20'); // escape spaces, for socket path hosts - const { hostname, port } = new url_1.URL(`mongodb://${escapedHost}`); - if (hostname.endsWith('.sock')) { + if (escapedHost.endsWith('.sock')) { // heuristically determine if we're working with a domain socket - this.socketPath = decodeURIComponent(hostname); + this.socketPath = decodeURIComponent(escapedHost); + return; } - else if (typeof hostname === 'string') { - this.isIPv6 = false; - let normalized = decodeURIComponent(hostname).toLowerCase(); - if (normalized.startsWith('[') && normalized.endsWith(']')) { - this.isIPv6 = true; - normalized = normalized.substring(1, hostname.length - 1); - } - this.host = normalized.toLowerCase(); - if (typeof port === 'number') { - this.port = port; - } - else if (typeof port === 'string' && port !== '') { - this.port = Number.parseInt(port, 10); - } - else { - this.port = 27017; - } - if (this.port === 0) { - throw new error_1.MongoParseError('Invalid port (zero) with hostname'); - } + const urlString = `iLoveJS://${escapedHost}`; + let url; + try { + url = new url_1.URL(urlString); + } + catch (urlError) { + const runtimeError = new error_1.MongoRuntimeError(`Unable to parse ${escapedHost} with URL`); + runtimeError.cause = urlError; + throw runtimeError; + } + const hostname = url.hostname; + const port = url.port; + let normalized = decodeURIComponent(hostname).toLowerCase(); + if (normalized.startsWith('[') && normalized.endsWith(']')) { + this.isIPv6 = true; + normalized = normalized.substring(1, hostname.length - 1); + } + this.host = normalized.toLowerCase(); + if (typeof port === 'number') { + this.port = port; + } + else if (typeof port === 'string' && port !== '') { + this.port = Number.parseInt(port, 10); } else { - throw new error_1.MongoInvalidArgumentError('Either socketPath or host must be defined.'); + this.port = 27017; + } + if (this.port === 0) { + throw new error_1.MongoParseError('Invalid port (zero) with hostname'); } Object.freeze(this); } @@ -969,14 +875,11 @@ class HostAddress { return this.inspect(); } inspect() { - return `new HostAddress('${this.toString(true)}')`; + return `new HostAddress('${this.toString()}')`; } - /** - * @param ipv6Brackets - optionally request ipv6 bracket notation required for connection strings - */ - toString(ipv6Brackets = false) { + toString() { if (typeof this.host === 'string') { - if (this.isIPv6 && ipv6Brackets) { + if (this.isIPv6) { return `[${this.host}]:${this.port}`; } return `${this.host}:${this.port}`; @@ -1008,7 +911,7 @@ exports.DEFAULT_PK_FACTORY = { * @public * * @example - * ```js + * ```ts * process.on('warning', (warning) => { * if (warning.code === MONGODB_WARNING_CODE) console.error('Ah an important warning! :)') * }) @@ -1110,4 +1013,90 @@ function commandSupportsReadConcern(command, options) { return false; } exports.commandSupportsReadConcern = commandSupportsReadConcern; +/** A utility function to get the instance of mongodb-client-encryption, if it exists. */ +function getMongoDBClientEncryption() { + let mongodbClientEncryption = null; + // NOTE(NODE-4254): This is to get around the circular dependency between + // mongodb-client-encryption and the driver in the test scenarios. + if (typeof process.env.MONGODB_CLIENT_ENCRYPTION_OVERRIDE === 'string' && + process.env.MONGODB_CLIENT_ENCRYPTION_OVERRIDE.length > 0) { + try { + // NOTE(NODE-3199): Ensure you always wrap an optional require literally in the try block + // Cannot be moved to helper utility function, bundlers search and replace the actual require call + // in a way that makes this line throw at bundle time, not runtime, catching here will make bundling succeed + mongodbClientEncryption = require(process.env.MONGODB_CLIENT_ENCRYPTION_OVERRIDE); + } + catch { + // ignore + } + } + else { + try { + // NOTE(NODE-3199): Ensure you always wrap an optional require literally in the try block + // Cannot be moved to helper utility function, bundlers search and replace the actual require call + // in a way that makes this line throw at bundle time, not runtime, catching here will make bundling succeed + mongodbClientEncryption = require('mongodb-client-encryption'); + } + catch { + // ignore + } + } + return mongodbClientEncryption; +} +exports.getMongoDBClientEncryption = getMongoDBClientEncryption; +/** + * Compare objectIds. `null` is always less + * - `+1 = oid1 is greater than oid2` + * - `-1 = oid1 is less than oid2` + * - `+0 = oid1 is equal oid2` + */ +function compareObjectId(oid1, oid2) { + if (oid1 == null && oid2 == null) { + return 0; + } + if (oid1 == null) { + return -1; + } + if (oid2 == null) { + return 1; + } + return oid1.id.compare(oid2.id); +} +exports.compareObjectId = compareObjectId; +function parseInteger(value) { + if (typeof value === 'number') + return Math.trunc(value); + const parsedValue = Number.parseInt(String(value), 10); + return Number.isNaN(parsedValue) ? null : parsedValue; +} +exports.parseInteger = parseInteger; +function parseUnsignedInteger(value) { + const parsedInt = parseInteger(value); + return parsedInt != null && parsedInt >= 0 ? parsedInt : null; +} +exports.parseUnsignedInteger = parseUnsignedInteger; +/** + * Determines whether a provided address matches the provided parent domain. + * + * If a DNS server were to become compromised SRV records would still need to + * advertise addresses that are under the same domain as the srvHost. + * + * @param address - The address to check against a domain + * @param srvHost - The domain to check the provided address against + * @returns Whether the provided address matches the parent domain + */ +function matchesParentDomain(address, srvHost) { + // Remove trailing dot if exists on either the resolved address or the srv hostname + const normalizedAddress = address.endsWith('.') ? address.slice(0, address.length - 1) : address; + const normalizedSrvHost = srvHost.endsWith('.') ? srvHost.slice(0, srvHost.length - 1) : srvHost; + const allCharacterBeforeFirstDot = /^.*?\./; + // Remove all characters before first dot + // Add leading dot back to string so + // an srvHostDomain = '.trusted.site' + // will not satisfy an addressDomain that endsWith '.fake-trusted.site' + const addressDomain = `.${normalizedAddress.replace(allCharacterBeforeFirstDot, '')}`; + const srvHostDomain = `.${normalizedSrvHost.replace(allCharacterBeforeFirstDot, '')}`; + return addressDomain.endsWith(srvHostDomain); +} +exports.matchesParentDomain = matchesParentDomain; //# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/lib/utils.js.map b/food-ordering-app/server/node_modules/mongodb/lib/utils.js.map index 9fc6fae83..a583f783a 100644 --- a/food-ordering-app/server/node_modules/mongodb/lib/utils.js.map +++ b/food-ordering-app/server/node_modules/mongodb/lib/utils.js.map @@ -1 +1 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongodb/mongodb.d.ts b/food-ordering-app/server/node_modules/mongodb/mongodb.d.ts index b7dcca1a8..9696a0d01 100644 --- a/food-ordering-app/server/node_modules/mongodb/mongodb.d.ts +++ b/food-ordering-app/server/node_modules/mongodb/mongodb.d.ts @@ -7,7 +7,6 @@ import { Code } from 'bson'; import type { ConnectionOptions as ConnectionOptions_2 } from 'tls'; import { DBRef } from 'bson'; import { Decimal128 } from 'bson'; -import Denque = require('denque'); import type { deserialize as deserialize_2 } from 'bson'; import type { DeserializeOptions } from 'bson'; import * as dns from 'dns'; @@ -69,32 +68,40 @@ export declare abstract class AbstractCursor; stream(options?: CursorStreamOptions): Readable & AsyncIterable; hasNext(): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ hasNext(callback: Callback): void; /** Get the next available document from the cursor, returns null if no more documents are available. */ next(): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ next(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ next(callback?: Callback): Promise | void; /** * Try to get the next available document from the cursor or `null` if an empty batch is returned */ tryNext(): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ tryNext(callback: Callback): void; /** * Iterates over all the documents for this cursor using the iterator, callback pattern. * + * If the iterator returns `false`, iteration will stop. + * * @param iterator - The iteration callback. * @param callback - The end callback. */ forEach(iterator: (doc: TSchema) => boolean | void): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ forEach(iterator: (doc: TSchema) => boolean | void, callback: Callback): void; close(): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ close(callback: Callback): void; /** * @deprecated options argument is deprecated */ close(options: CursorCloseOptions): Promise; /** - * @deprecated options argument is deprecated + * @deprecated options argument is deprecated. Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ close(options: CursorCloseOptions, callback: Callback): void; /** @@ -106,6 +113,7 @@ export declare abstract class AbstractCursor; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ toArray(callback: Callback): void; /** * Add a cursor flag to the cursor @@ -120,6 +128,29 @@ export declare abstract class AbstractCursor null); + * + * const documents = await cursor.toArray(); + * // documents is always [], regardless of how many documents are in the collection. + * ``` + * + * Other falsey values are allowed: + * + * ```typescript + * const cursor = collection.find({}); + * cursor.map(() => ''); + * + * const documents = await cursor.toArray(); + * // documents is now an array of empty strings + * ``` + * * **Note for Typescript Users:** adding a transform changes the return type of the iteration of this cursor, * it **does not** return a new instance of a cursor. This means when calling map, * you should always assign the result to a new variable in order to get a correctly typed cursor variable. @@ -183,8 +214,20 @@ export declare interface AbstractCursorOptions extends BSONSerializeOptions { session?: ClientSession; readPreference?: ReadPreferenceLike; readConcern?: ReadConcernLike; + /** + * Specifies the number of documents to return in each response from MongoDB + */ batchSize?: number; + /** + * When applicable `maxTimeMS` controls the amount of time the initial command + * that constructs a cursor should take. (ex. find, aggregate, listCollections) + */ maxTimeMS?: number; + /** + * When applicable `maxAwaitTimeMS` controls the amount of time subsequent getMores + * that a cursor uses to fetch more data should take. (ex. cursor.next()) + */ + maxAwaitTimeMS?: number; /** * Comment to apply to the operation. * @@ -194,7 +237,19 @@ export declare interface AbstractCursorOptions extends BSONSerializeOptions { * In server versions 4.4 and above, 'comment' can be any valid BSON type. */ comment?: unknown; + /** + * By default, MongoDB will automatically close a cursor when the + * client has exhausted all results in the cursor. However, for [capped collections](https://www.mongodb.com/docs/manual/core/capped-collections) + * you may use a Tailable Cursor that remains open after the client exhausts + * the results in the initial cursor. + */ tailable?: boolean; + /** + * If awaitData is set to true, when the cursor reaches the end of the capped collection, + * MongoDB blocks the query thread for a period of time waiting for new data to arrive. + * When new data is inserted into the capped collection, the blocked thread is signaled + * to wake up and return the next batch to the client. + */ awaitData?: boolean; noCursorTimeout?: boolean; } @@ -229,26 +284,15 @@ export declare interface AddUserOptions extends CommandOperationOptions { * @public * * @example - * ```js - * const MongoClient = require('mongodb').MongoClient; - * const test = require('assert'); - * // Connection url - * const url = 'mongodb://localhost:27017'; - * // Database Name - * const dbName = 'test'; - * - * // Connect using MongoClient - * MongoClient.connect(url, function(err, client) { - * // Use the admin database for the operation - * const adminDb = client.db(dbName).admin(); + * ```ts + * import { MongoClient } from 'mongodb'; * - * // List all the available databases - * adminDb.listDatabases(function(err, dbs) { - * expect(err).to.not.exist; - * test.ok(dbs.databases.length > 0); - * client.close(); - * }); - * }); + * const client = new MongoClient('mongodb://localhost:27017'); + * const admin = client.db().admin(); + * const dbInfo = await admin.listDatabases(); + * for (const db of dbInfo.databases) { + * console.log(db.name); + * } * ``` */ export declare class Admin { @@ -262,8 +306,10 @@ export declare class Admin { * @param callback - An optional callback, a Promise will be returned if none is provided */ command(command: Document): Promise; - command(command: Document, callback: Callback): void; command(command: Document, options: RunCommandOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + command(command: Document, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ command(command: Document, options: RunCommandOptions, callback: Callback): void; /** * Retrieve the server build information @@ -272,8 +318,10 @@ export declare class Admin { * @param callback - An optional callback, a Promise will be returned if none is provided */ buildInfo(): Promise; - buildInfo(callback: Callback): void; buildInfo(options: CommandOperationOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + buildInfo(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ buildInfo(options: CommandOperationOptions, callback: Callback): void; /** * Retrieve the server build information @@ -282,8 +330,10 @@ export declare class Admin { * @param callback - An optional callback, a Promise will be returned if none is provided */ serverInfo(): Promise; - serverInfo(callback: Callback): void; serverInfo(options: CommandOperationOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + serverInfo(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ serverInfo(options: CommandOperationOptions, callback: Callback): void; /** * Retrieve this db's server status. @@ -292,8 +342,10 @@ export declare class Admin { * @param callback - An optional callback, a Promise will be returned if none is provided */ serverStatus(): Promise; - serverStatus(callback: Callback): void; serverStatus(options: CommandOperationOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + serverStatus(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ serverStatus(options: CommandOperationOptions, callback: Callback): void; /** * Ping the MongoDB server and retrieve results @@ -302,8 +354,10 @@ export declare class Admin { * @param callback - An optional callback, a Promise will be returned if none is provided */ ping(): Promise; - ping(callback: Callback): void; ping(options: CommandOperationOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + ping(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ ping(options: CommandOperationOptions, callback: Callback): void; /** * Add a user to the database @@ -314,12 +368,16 @@ export declare class Admin { * @param callback - An optional callback, a Promise will be returned if none is provided */ addUser(username: string): Promise; - addUser(username: string, callback: Callback): void; addUser(username: string, password: string): Promise; - addUser(username: string, password: string, callback: Callback): void; addUser(username: string, options: AddUserOptions): Promise; - addUser(username: string, options: AddUserOptions, callback: Callback): void; addUser(username: string, password: string, options: AddUserOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + addUser(username: string, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + addUser(username: string, password: string, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + addUser(username: string, options: AddUserOptions, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ addUser(username: string, password: string, options: AddUserOptions, callback: Callback): void; /** * Remove a user from a database @@ -329,8 +387,10 @@ export declare class Admin { * @param callback - An optional callback, a Promise will be returned if none is provided */ removeUser(username: string): Promise; - removeUser(username: string, callback: Callback): void; removeUser(username: string, options: RemoveUserOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + removeUser(username: string, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ removeUser(username: string, options: RemoveUserOptions, callback: Callback): void; /** * Validate an existing collection @@ -340,8 +400,10 @@ export declare class Admin { * @param callback - An optional callback, a Promise will be returned if none is provided */ validateCollection(collectionName: string): Promise; - validateCollection(collectionName: string, callback: Callback): void; validateCollection(collectionName: string, options: ValidateCollectionOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + validateCollection(collectionName: string, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ validateCollection(collectionName: string, options: ValidateCollectionOptions, callback: Callback): void; /** * List the available databases @@ -350,8 +412,10 @@ export declare class Admin { * @param callback - An optional callback, a Promise will be returned if none is provided */ listDatabases(): Promise; - listDatabases(callback: Callback): void; listDatabases(options: ListDatabasesOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + listDatabases(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ listDatabases(options: ListDatabasesOptions, callback: Callback): void; /** * Get ReplicaSet status @@ -360,8 +424,10 @@ export declare class Admin { * @param callback - An optional callback, a Promise will be returned if none is provided */ replSetGetStatus(): Promise; - replSetGetStatus(callback: Callback): void; replSetGetStatus(options: CommandOperationOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + replSetGetStatus(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ replSetGetStatus(options: CommandOperationOptions, callback: Callback): void; } @@ -409,8 +475,9 @@ export declare class AggregationCursor extends AbstractCursor; - explain(callback: Callback): void; explain(verbosity: ExplainVerbosityLike): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + explain(callback: Callback): void; /** Add a group stage to the aggregation pipeline */ group($group: Document): AggregationCursor; /** Add a limit stage to the aggregation pipeline */ @@ -474,7 +541,7 @@ export declare class AggregationCursor extends AbstractCursor = /** @public */ export declare type AnyError = MongoError | Error; +/** @public */ +export declare type ArrayElement = Type extends ReadonlyArray ? Item : never; + /** @public */ export declare type ArrayOperator = { $each?: Array>; @@ -537,7 +607,7 @@ export declare const AuthMechanism: Readonly<{ }>; /** @public */ -export declare type AuthMechanism = typeof AuthMechanism[keyof typeof AuthMechanism]; +export declare type AuthMechanism = (typeof AuthMechanism)[keyof typeof AuthMechanism]; /** @public */ export declare interface AuthMechanismProperties extends Document { @@ -572,7 +642,7 @@ export declare const AutoEncryptionLoggerLevel: Readonly<{ }>; /** @public */ -export declare type AutoEncryptionLoggerLevel = typeof AutoEncryptionLoggerLevel[keyof typeof AutoEncryptionLoggerLevel]; +export declare type AutoEncryptionLoggerLevel = (typeof AutoEncryptionLoggerLevel)[keyof typeof AutoEncryptionLoggerLevel]; /** @public */ export declare interface AutoEncryptionOptions { @@ -649,15 +719,15 @@ export declare interface AutoEncryptionOptions { * * **NOTE**: Supplying options.schemaMap provides more security than relying on JSON Schemas obtained from the server. * It protects against a malicious server advertising a false JSON Schema, which could trick the client into sending decrypted data that should be encrypted. - * Schemas supplied in the schemaMap only apply to configuring automatic encryption for client side encryption. + * Schemas supplied in the schemaMap only apply to configuring automatic encryption for Client-Side Field Level Encryption. * Other validation rules in the JSON schema will not be enforced by the driver and will result in an error. */ schemaMap?: Document; - /** @experimental */ + /** @experimental Public Technical Preview: Supply a schema for the encrypted fields in the document */ encryptedFieldsMap?: Document; /** Allows the user to bypass auto encryption, maintaining implicit decryption */ bypassAutoEncryption?: boolean; - /** @experimental */ + /** @experimental Public Technical Preview: Allows users to bypass query analysis */ bypassQueryAnalysis?: boolean; options?: { /** An optional hook to catch logging messages from the underlying encryption engine */ @@ -696,7 +766,7 @@ export declare interface AutoEncryptionOptions { * * Specifying a path prevents mongocryptd from being used as a fallback. * - * @experimental Requires the MongoDB Crypt shared library, available in MongoDB 6.0 or higher. + * Requires the MongoDB Crypt shared library, available in MongoDB 6.0 or higher. */ cryptSharedLibPath?: string; /** @@ -705,7 +775,7 @@ export declare interface AutoEncryptionOptions { * * This is always true when `cryptSharedLibPath` is specified. * - * @experimental Requires the MongoDB Crypt shared library, available in MongoDB 6.0 or higher. + * Requires the MongoDB Crypt shared library, available in MongoDB 6.0 or higher. */ cryptSharedLibRequired?: boolean; /* Excluded from this release type: cryptSharedLibSearchPaths */ @@ -768,7 +838,7 @@ export declare const BatchType: Readonly<{ }>; /** @public */ -export declare type BatchType = typeof BatchType[keyof typeof BatchType]; +export declare type BatchType = (typeof BatchType)[keyof typeof BatchType]; export { Binary } @@ -777,6 +847,7 @@ export { Binary } /** @public */ export declare type BitwiseFilter = number /** numeric bit mask */ | Binary /** BinData bit mask */ | ReadonlyArray; +/* Excluded from this release type: BSON */ export { BSONRegExp } /** @@ -784,7 +855,26 @@ export { BSONRegExp } * @public */ export declare interface BSONSerializeOptions extends Omit, Omit { - /** Return BSON filled buffers from operations */ + /** + * Enabling the raw option will return a [Node.js Buffer](https://nodejs.org/api/buffer.html) + * which is allocated using [allocUnsafe API](https://nodejs.org/api/buffer.html#static-method-bufferallocunsafesize). + * See this section from the [Node.js Docs here](https://nodejs.org/api/buffer.html#what-makes-bufferallocunsafe-and-bufferallocunsafeslow-unsafe) + * for more detail about what "unsafe" refers to in this context. + * If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate + * your own buffer and clone the contents: + * + * @example + * ```ts + * const raw = await collection.findOne({}, { raw: true }); + * const myBuffer = Buffer.alloc(raw.byteLength); + * myBuffer.set(raw, 0); + * // Only save and use `myBuffer` beyond this point + * ``` + * + * @remarks + * Please note there is a known limitation where this option cannot be used at the MongoClient level (see [NODE-3946](https://jira.mongodb.org/browse/NODE-3946)). + * It does correctly work at `Db`, `Collection`, and per operation the same as other BSON options work. + */ raw?: boolean; /** Enable utf8 validation when deserializing BSON documents. Defaults to true. */ enableUtf8Validation?: boolean; @@ -818,7 +908,7 @@ export declare const BSONType: Readonly<{ }>; /** @public */ -export declare type BSONType = typeof BSONType[keyof typeof BSONType]; +export declare type BSONType = (typeof BSONType)[keyof typeof BSONType]; /** @public */ export declare type BSONTypeAlias = keyof typeof BSONType; @@ -835,7 +925,7 @@ export declare abstract class BulkOperationBase { * Add a single insert document to the bulk operation * * @example - * ```js + * ```ts * const bulkOp = collection.initializeOrderedBulkOp(); * * // Adds three inserts to the bulkOp. @@ -852,7 +942,7 @@ export declare abstract class BulkOperationBase { * Returns a builder object used to complete the definition of the operation. * * @example - * ```js + * ```ts * const bulkOp = collection.initializeOrderedBulkOp(); * * // Add an updateOne to the bulkOp @@ -889,8 +979,11 @@ export declare abstract class BulkOperationBase { get writeConcern(): WriteConcern | undefined; get batches(): Batch[]; execute(options?: BulkWriteOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ execute(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ execute(options: BulkWriteOptions | undefined, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ execute(options?: BulkWriteOptions | Callback, callback?: Callback): Promise | void; /* Excluded from this release type: handleWriteError */ abstract addToOperationsList(batchType: BatchType, document: Document | UpdateStatement | DeleteStatement): this; @@ -898,7 +991,11 @@ export declare abstract class BulkOperationBase { /* Excluded from this release type: BulkOperationPrivate */ -/** @public */ +/** + * @public + * + * @deprecated Will be made internal in 5.0 + */ export declare interface BulkResult { ok: number; writeErrors: WriteError[]; @@ -941,6 +1038,7 @@ export declare interface BulkWriteOptions extends CommandOperationOptions { * The result of a bulk write. */ export declare class BulkWriteResult { + /** @deprecated Will be removed in 5.0 */ result: BulkResult; /* Excluded from this release type: __constructor */ /** Number of documents inserted. */ @@ -989,7 +1087,11 @@ export declare class BulkWriteResult { getWriteErrorAt(index: number): WriteError | undefined; /** Retrieve all write errors */ getWriteErrors(): WriteError[]; - /** Retrieve lastOp if available */ + /** + * Retrieve lastOp if available + * + * @deprecated Will be removed in 5.0 + */ getLastOp(): Document | undefined; /** Retrieve the write concern error if one exists */ getWriteConcernError(): WriteConcernError | undefined; @@ -1022,7 +1124,6 @@ export declare class ChangeStream; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ hasNext(callback: Callback): void; /** Get the next available document from the Change Stream. */ next(): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ next(callback: Callback): void; + /** + * Try to get the next available document from the Change Stream's cursor or `null` if an empty batch is returned + */ + tryNext(): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + tryNext(callback: Callback): void; + [Symbol.asyncIterator](): AsyncGenerator; /** Is the cursor closed */ get closed(): boolean; /** Close the Change Stream */ - close(callback?: Callback): Promise | void; + close(): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + close(callback: Callback): void; /** * Return a modified Readable stream including a possible transform method. - * @throws MongoDriverError if this.cursor is undefined + * + * NOTE: When using a Stream to process change stream events, the stream will + * NOT automatically resume in the case a resumable error is encountered. + * + * @throws MongoChangeStreamError if the underlying cursor or the change stream is closed */ stream(options?: CursorStreamOptions): Readable & AsyncIterable; - /** - * Try to get the next available document from the Change Stream's cursor or `null` if an empty batch is returned - */ - tryNext(): Promise; - tryNext(callback: Callback): void; /* Excluded from this release type: _setIsEmitter */ /* Excluded from this release type: _setIsIterator */ /* Excluded from this release type: _createChangeStreamCursor */ - /* Excluded from this release type: _waitForTopologyConnected */ - /* Excluded from this release type: _closeWithError */ + /* Excluded from this release type: _closeEmitterModeWithError */ /* Excluded from this release type: _streamEvents */ /* Excluded from this release type: _endStream */ - /* Excluded from this release type: _processNewChange */ - /* Excluded from this release type: _processError */ - /* Excluded from this release type: _getCursor */ - /* Excluded from this release type: _processResumeQueue */ + /* Excluded from this release type: _processChange */ + /* Excluded from this release type: _processErrorStreamMode */ + /* Excluded from this release type: _processErrorIteratorMode */ } /* Excluded from this release type: ChangeStreamAggregateRawResult */ @@ -1129,7 +1238,7 @@ export declare interface ChangeStreamCreateIndexDocument extends ChangeStreamDoc export declare interface ChangeStreamDeleteDocument extends ChangeStreamDocumentCommon, ChangeStreamDocumentKey, ChangeStreamDocumentCollectionUUID { /** Describes the type of operation represented in this change notification */ operationType: 'delete'; - /** Namespace the delete event occured on */ + /** Namespace the delete event occurred on */ ns: ChangeStreamNameSpace; /** * Contains the pre-image of the modified or deleted document if the @@ -1154,7 +1263,7 @@ export declare interface ChangeStreamDocumentCollectionUUID { * **NOTE:** collectionUUID will be converted to a NodeJS Buffer if the promoteBuffers * flag is enabled. * - * @since 6.1.0 + * @sinceServerVersion 6.1.0 */ collectionUUID: Binary; } @@ -1208,7 +1317,7 @@ export declare interface ChangeStreamDocumentOperationDescription { * * Only present when the `showExpandedEvents` flag is enabled. * - * @since 6.1.0 + * @sinceServerVersion 6.1.0 */ operationDescription?: Document; } @@ -1233,7 +1342,7 @@ export declare interface ChangeStreamDropDatabaseDocument extends ChangeStreamDo export declare interface ChangeStreamDropDocument extends ChangeStreamDocumentCommon, ChangeStreamDocumentCollectionUUID { /** Describes the type of operation represented in this change notification */ operationType: 'drop'; - /** Namespace the drop event occured on */ + /** Namespace the drop event occurred on */ ns: ChangeStreamNameSpace; } @@ -1267,7 +1376,7 @@ export declare interface ChangeStreamInsertDocument; - /** Namespace the update event occured on */ + /** Namespace the update event occurred on */ ns: ChangeStreamNameSpace; /** * Contains the pre-image of the modified or deleted document if the @@ -1445,7 +1554,10 @@ export declare interface ChangeStreamUpdateDocument; - endSession(callback: Callback): void; endSession(options: EndSessionOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + endSession(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ endSession(options: EndSessionOptions, callback: Callback): void; /** * Advances the operationTime for a ClientSession. @@ -1561,6 +1682,7 @@ export declare class ClientSession extends TypedEventEmitter; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ commitTransaction(callback: Callback): void; /** * Aborts the currently active transaction in this session. @@ -1568,6 +1690,7 @@ export declare class ClientSession extends TypedEventEmitter; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ abortTransaction(callback: Callback): void; /** * This is here to ensure that ClientSession is never serialized to BSON. @@ -1622,8 +1745,7 @@ export declare interface CloseOptions { /** @public * Configuration options for clustered collections - * TODO: NODE-4230 replace with normal manual link once it is on there. - * @see https://www.mongodb.com/docs/v5.3/core/clustered-collections/ + * @see https://www.mongodb.com/docs/manual/core/clustered-collections/ */ export declare interface ClusteredCollectionOptions extends Document { name?: string; @@ -1657,30 +1779,28 @@ export declare interface CollationOptions { /** * The **Collection** class is an internal class that embodies a MongoDB collection - * allowing for insert/update/remove/find and other command operation on that MongoDB collection. + * allowing for insert/find/update/delete and other command operation on that MongoDB collection. * * **COLLECTION Cannot directly be instantiated** * @public * * @example - * ```js - * const MongoClient = require('mongodb').MongoClient; - * const test = require('assert'); - * // Connection url - * const url = 'mongodb://localhost:27017'; - * // Database Name - * const dbName = 'test'; - * // Connect using MongoClient - * MongoClient.connect(url, function(err, client) { - * // Create a collection we want to drop later - * const col = client.db(dbName).collection('createIndexExample1'); - * // Show that duplicate records got dropped - * col.find({}).toArray(function(err, items) { - * expect(err).to.not.exist; - * test.equal(4, items.length); - * client.close(); - * }); - * }); + * ```ts + * import { MongoClient } from 'mongodb'; + * + * interface Pet { + * name: string; + * kind: 'dog' | 'cat' | 'fish'; + * } + * + * const client = new MongoClient('mongodb://localhost:27017'); + * const pets = client.db().collection('pets'); + * + * const petCursor = pets.find(); + * + * for await (const pet of petCursor) { + * console.log(`${pet.name} is a ${pet.kind}!`); + * } * ``` */ export declare class Collection { @@ -1727,8 +1847,10 @@ export declare class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ insertOne(doc: OptionalUnlessRequiredId): Promise>; - insertOne(doc: OptionalUnlessRequiredId, callback: Callback>): void; insertOne(doc: OptionalUnlessRequiredId, options: InsertOneOptions): Promise>; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + insertOne(doc: OptionalUnlessRequiredId, callback: Callback>): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ insertOne(doc: OptionalUnlessRequiredId, options: InsertOneOptions, callback: Callback>): void; /** * Inserts an array of documents into MongoDB. If documents passed in do not contain the **_id** field, @@ -1740,29 +1862,22 @@ export declare class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ insertMany(docs: OptionalUnlessRequiredId[]): Promise>; - insertMany(docs: OptionalUnlessRequiredId[], callback: Callback>): void; insertMany(docs: OptionalUnlessRequiredId[], options: BulkWriteOptions): Promise>; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + insertMany(docs: OptionalUnlessRequiredId[], callback: Callback>): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ insertMany(docs: OptionalUnlessRequiredId[], options: BulkWriteOptions, callback: Callback>): void; /** * Perform a bulkWrite operation without a fluent API * * Legal operation types are + * - `insertOne` + * - `replaceOne` + * - `updateOne` + * - `updateMany` + * - `deleteOne` + * - `deleteMany` * - * ```js - * { insertOne: { document: { a: 1 } } } - * - * { updateOne: { filter: {a:2}, update: {$set: {a:2}}, upsert:true } } - * - * { updateMany: { filter: {a:2}, update: {$set: {a:2}}, upsert:true } } - * - * { updateMany: { filter: {}, update: {$set: {"a.$[i].x": 5}}, arrayFilters: [{ "i.x": 5 }]} } - * - * { deleteOne: { filter: {c:1} } } - * - * { deleteMany: { filter: {c:1} } } - * - * { replaceOne: { filter: {c:3}, replacement: {c:4}, upsert:true} } - *``` * Please note that raw operations are no longer accepted as of driver version 4.0. * * If documents passed in do not contain the **_id** field, @@ -1775,8 +1890,10 @@ export declare class Collection { * @throws MongoDriverError if operations is not an array */ bulkWrite(operations: AnyBulkWriteOperation[]): Promise; - bulkWrite(operations: AnyBulkWriteOperation[], callback: Callback): void; bulkWrite(operations: AnyBulkWriteOperation[], options: BulkWriteOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + bulkWrite(operations: AnyBulkWriteOperation[], callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ bulkWrite(operations: AnyBulkWriteOperation[], options: BulkWriteOptions, callback: Callback): void; /** * Update a single document in a collection @@ -1787,8 +1904,10 @@ export declare class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ updateOne(filter: Filter, update: UpdateFilter | Partial): Promise; - updateOne(filter: Filter, update: UpdateFilter | Partial, callback: Callback): void; updateOne(filter: Filter, update: UpdateFilter | Partial, options: UpdateOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + updateOne(filter: Filter, update: UpdateFilter | Partial, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ updateOne(filter: Filter, update: UpdateFilter | Partial, options: UpdateOptions, callback: Callback): void; /** * Replace a document in a collection with another document @@ -1799,8 +1918,10 @@ export declare class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ replaceOne(filter: Filter, replacement: WithoutId): Promise; - replaceOne(filter: Filter, replacement: WithoutId, callback: Callback): void; replaceOne(filter: Filter, replacement: WithoutId, options: ReplaceOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + replaceOne(filter: Filter, replacement: WithoutId, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ replaceOne(filter: Filter, replacement: WithoutId, options: ReplaceOptions, callback: Callback): void; /** * Update multiple documents in a collection @@ -1811,8 +1932,10 @@ export declare class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ updateMany(filter: Filter, update: UpdateFilter): Promise; - updateMany(filter: Filter, update: UpdateFilter, callback: Callback): void; updateMany(filter: Filter, update: UpdateFilter, options: UpdateOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + updateMany(filter: Filter, update: UpdateFilter, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ updateMany(filter: Filter, update: UpdateFilter, options: UpdateOptions, callback: Callback): void; /** * Delete a document from a collection @@ -1822,8 +1945,10 @@ export declare class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ deleteOne(filter: Filter): Promise; - deleteOne(filter: Filter, callback: Callback): void; deleteOne(filter: Filter, options: DeleteOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + deleteOne(filter: Filter, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ deleteOne(filter: Filter, options: DeleteOptions, callback?: Callback): void; /** * Delete multiple documents from a collection @@ -1833,8 +1958,10 @@ export declare class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ deleteMany(filter: Filter): Promise; - deleteMany(filter: Filter, callback: Callback): void; deleteMany(filter: Filter, options: DeleteOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + deleteMany(filter: Filter, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ deleteMany(filter: Filter, options: DeleteOptions, callback: Callback): void; /** * Rename the collection. @@ -1847,8 +1974,10 @@ export declare class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ rename(newName: string): Promise; - rename(newName: string, callback: Callback): void; rename(newName: string, options: RenameOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + rename(newName: string, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ rename(newName: string, options: RenameOptions, callback: Callback): void; /** * Drop the collection from the database, removing it permanently. New accesses will create a new collection. @@ -1857,8 +1986,10 @@ export declare class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ drop(): Promise; - drop(callback: Callback): void; drop(options: DropCollectionOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + drop(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ drop(options: DropCollectionOptions, callback: Callback): void; /** * Fetches the first document that matches the filter @@ -1868,15 +1999,20 @@ export declare class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ findOne(): Promise | null>; - findOne(callback: Callback | null>): void; findOne(filter: Filter): Promise | null>; - findOne(filter: Filter, callback: Callback | null>): void; findOne(filter: Filter, options: FindOptions): Promise | null>; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + findOne(callback: Callback | null>): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + findOne(filter: Filter, callback: Callback | null>): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ findOne(filter: Filter, options: FindOptions, callback: Callback | null>): void; findOne(): Promise; - findOne(callback: Callback): void; findOne(filter: Filter): Promise; findOne(filter: Filter, options?: FindOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + findOne(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ findOne(filter: Filter, options?: FindOptions, callback?: Callback): void; /** * Creates a cursor for a filter that can be used to iterate over results from MongoDB @@ -1893,8 +2029,10 @@ export declare class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ options(): Promise; - options(callback: Callback): void; options(options: OperationOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + options(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ options(options: OperationOptions, callback: Callback): void; /** * Returns if the collection is a capped collection @@ -1903,8 +2041,10 @@ export declare class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ isCapped(): Promise; - isCapped(callback: Callback): void; isCapped(options: OperationOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + isCapped(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ isCapped(options: OperationOptions, callback: Callback): void; /** * Creates an index on the db and collection collection. @@ -1914,7 +2054,7 @@ export declare class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided * * @example - * ```js + * ```ts * const collection = client.db('foo').collection('bar'); * * await collection.createIndex({ a: 1, b: -1 }); @@ -1936,8 +2076,10 @@ export declare class Collection { * ``` */ createIndex(indexSpec: IndexSpecification): Promise; - createIndex(indexSpec: IndexSpecification, callback: Callback): void; createIndex(indexSpec: IndexSpecification, options: CreateIndexesOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + createIndex(indexSpec: IndexSpecification, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ createIndex(indexSpec: IndexSpecification, options: CreateIndexesOptions, callback: Callback): void; /** * Creates multiple indexes in the collection, this method is only supported for @@ -1952,7 +2094,7 @@ export declare class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided * * @example - * ```js + * ```ts * const collection = client.db('foo').collection('bar'); * await collection.createIndexes([ * // Simple index on field fizz @@ -1972,8 +2114,10 @@ export declare class Collection { * ``` */ createIndexes(indexSpecs: IndexDescription[]): Promise; - createIndexes(indexSpecs: IndexDescription[], callback: Callback): void; createIndexes(indexSpecs: IndexDescription[], options: CreateIndexesOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + createIndexes(indexSpecs: IndexDescription[], callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ createIndexes(indexSpecs: IndexDescription[], options: CreateIndexesOptions, callback: Callback): void; /** * Drops an index from this collection. @@ -1983,8 +2127,10 @@ export declare class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ dropIndex(indexName: string): Promise; - dropIndex(indexName: string, callback: Callback): void; dropIndex(indexName: string, options: DropIndexesOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + dropIndex(indexName: string, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ dropIndex(indexName: string, options: DropIndexesOptions, callback: Callback): void; /** * Drops all indexes from this collection. @@ -1993,8 +2139,10 @@ export declare class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ dropIndexes(): Promise; - dropIndexes(callback: Callback): void; dropIndexes(options: DropIndexesOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + dropIndexes(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ dropIndexes(options: DropIndexesOptions, callback: Callback): void; /** * Get the list of all indexes information for the collection. @@ -2010,8 +2158,10 @@ export declare class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ indexExists(indexes: string | string[]): Promise; - indexExists(indexes: string | string[], callback: Callback): void; indexExists(indexes: string | string[], options: IndexInformationOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + indexExists(indexes: string | string[], callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ indexExists(indexes: string | string[], options: IndexInformationOptions, callback: Callback): void; /** * Retrieves this collections index info. @@ -2020,8 +2170,10 @@ export declare class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ indexInformation(): Promise; - indexInformation(callback: Callback): void; indexInformation(options: IndexInformationOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + indexInformation(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ indexInformation(options: IndexInformationOptions, callback: Callback): void; /** * Gets an estimate of the count of documents in a collection using collection metadata. @@ -2038,8 +2190,10 @@ export declare class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ estimatedDocumentCount(): Promise; - estimatedDocumentCount(callback: Callback): void; estimatedDocumentCount(options: EstimatedDocumentCountOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + estimatedDocumentCount(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ estimatedDocumentCount(options: EstimatedDocumentCountOptions, callback: Callback): void; /** * Gets the number of documents matching the filter. @@ -2068,12 +2222,14 @@ export declare class Collection { * @see https://docs.mongodb.com/manual/reference/operator/query/centerSphere/#op._S_centerSphere */ countDocuments(): Promise; - countDocuments(callback: Callback): void; countDocuments(filter: Filter): Promise; - countDocuments(callback: Callback): void; countDocuments(filter: Filter, options: CountDocumentsOptions): Promise; - countDocuments(filter: Filter, options: CountDocumentsOptions, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + countDocuments(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ countDocuments(filter: Filter, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + countDocuments(filter: Filter, options: CountDocumentsOptions, callback: Callback): void; /** * The distinct command returns a list of distinct values for the given key across a collection. * @@ -2083,16 +2239,22 @@ export declare class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ distinct>(key: Key): Promise[Key]>>>; - distinct>(key: Key, callback: Callback[Key]>>>): void; distinct>(key: Key, filter: Filter): Promise[Key]>>>; - distinct>(key: Key, filter: Filter, callback: Callback[Key]>>>): void; distinct>(key: Key, filter: Filter, options: DistinctOptions): Promise[Key]>>>; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + distinct>(key: Key, callback: Callback[Key]>>>): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + distinct>(key: Key, filter: Filter, callback: Callback[Key]>>>): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ distinct>(key: Key, filter: Filter, options: DistinctOptions, callback: Callback[Key]>>>): void; distinct(key: string): Promise; - distinct(key: string, callback: Callback): void; distinct(key: string, filter: Filter): Promise; - distinct(key: string, filter: Filter, callback: Callback): void; distinct(key: string, filter: Filter, options: DistinctOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + distinct(key: string, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + distinct(key: string, filter: Filter, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ distinct(key: string, filter: Filter, options: DistinctOptions, callback: Callback): void; /** * Retrieve all the indexes on the collection. @@ -2101,8 +2263,10 @@ export declare class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ indexes(): Promise; - indexes(callback: Callback): void; indexes(options: IndexInformationOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + indexes(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ indexes(options: IndexInformationOptions, callback: Callback): void; /** * Get all the collection statistics. @@ -2111,8 +2275,10 @@ export declare class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ stats(): Promise; - stats(callback: Callback): void; stats(options: CollStatsOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + stats(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ stats(options: CollStatsOptions, callback: Callback): void; /** * Find a document and delete it in one atomic operation. Requires a write lock for the duration of the operation. @@ -2123,7 +2289,9 @@ export declare class Collection { */ findOneAndDelete(filter: Filter): Promise>; findOneAndDelete(filter: Filter, options: FindOneAndDeleteOptions): Promise>; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ findOneAndDelete(filter: Filter, callback: Callback>): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ findOneAndDelete(filter: Filter, options: FindOneAndDeleteOptions, callback: Callback>): void; /** * Find a document and replace it in one atomic operation. Requires a write lock for the duration of the operation. @@ -2134,8 +2302,10 @@ export declare class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ findOneAndReplace(filter: Filter, replacement: WithoutId): Promise>; - findOneAndReplace(filter: Filter, replacement: WithoutId, callback: Callback>): void; findOneAndReplace(filter: Filter, replacement: WithoutId, options: FindOneAndReplaceOptions): Promise>; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + findOneAndReplace(filter: Filter, replacement: WithoutId, callback: Callback>): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ findOneAndReplace(filter: Filter, replacement: WithoutId, options: FindOneAndReplaceOptions, callback: Callback>): void; /** * Find a document and update it in one atomic operation. Requires a write lock for the duration of the operation. @@ -2146,8 +2316,10 @@ export declare class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ findOneAndUpdate(filter: Filter, update: UpdateFilter): Promise>; - findOneAndUpdate(filter: Filter, update: UpdateFilter, callback: Callback>): void; findOneAndUpdate(filter: Filter, update: UpdateFilter, options: FindOneAndUpdateOptions): Promise>; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + findOneAndUpdate(filter: Filter, update: UpdateFilter, callback: Callback>): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ findOneAndUpdate(filter: Filter, update: UpdateFilter, options: FindOneAndUpdateOptions, callback: Callback>): void; /** * Execute an aggregation framework pipeline against the collection, needs MongoDB \>= 2.2 @@ -2160,7 +2332,7 @@ export declare class Collection { * Create a new Change Stream, watching for new changes (insertions, updates, replacements, deletions, and invalidations) in this collection. * * @remarks - * watch() accepts two generic arguments for distinct usecases: + * watch() accepts two generic arguments for distinct use cases: * - The first is to override the schema that may be defined for this specific collection * - The second is to override the shape of the change stream document entirely, if it is not provided the type will default to ChangeStreamDocument of the first argument * @example @@ -2205,12 +2377,28 @@ export declare class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ mapReduce(map: string | MapFunction, reduce: string | ReduceFunction): Promise; - mapReduce(map: string | MapFunction, reduce: string | ReduceFunction, callback: Callback): void; mapReduce(map: string | MapFunction, reduce: string | ReduceFunction, options: MapReduceOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + mapReduce(map: string | MapFunction, reduce: string | ReduceFunction, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ mapReduce(map: string | MapFunction, reduce: string | ReduceFunction, options: MapReduceOptions, callback: Callback): void; - /** Initiate an Out of order batch write operation. All operations will be buffered into insert/update/remove commands executed out of order. */ + /** + * Initiate an Out of order batch write operation. All operations will be buffered into insert/update/remove commands executed out of order. + * + * @throws MongoNotConnectedError + * @remarks + * **NOTE:** MongoClient must be connected prior to calling this method due to a known limitation in this legacy implementation. + * However, `collection.bulkWrite()` provides an equivalent API that does not require prior connecting. + */ initializeUnorderedBulkOp(options?: BulkWriteOptions): UnorderedBulkOperation; - /** Initiate an In order bulk write operation. Operations will be serially executed in the order they are added, creating a new operation for each switch in types. */ + /** + * Initiate an In order bulk write operation. Operations will be serially executed in the order they are added, creating a new operation for each switch in types. + * + * @throws MongoNotConnectedError + * @remarks + * **NOTE:** MongoClient must be connected prior to calling this method due to a known limitation in this legacy implementation. + * However, `collection.bulkWrite()` provides an equivalent API that does not require prior connecting. + */ initializeOrderedBulkOp(options?: BulkWriteOptions): OrderedBulkOperation; /** Get the db scoped logger */ getLogger(): Logger; @@ -2220,7 +2408,7 @@ export declare class Collection { * one will be added to each of the documents missing it by the driver, mutating the document. This behavior * can be overridden by setting the **forceServerObjectId** flag. * - * @deprecated Use insertOne, insertMany or bulkWrite instead. + * @deprecated Use insertOne, insertMany or bulkWrite instead. Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance * @param docs - The documents to insert * @param options - Optional settings for the command * @param callback - An optional callback, a Promise will be returned if none is provided @@ -2229,22 +2417,22 @@ export declare class Collection { /** * Updates documents. * - * @deprecated use updateOne, updateMany or bulkWrite - * @param selector - The selector for the update operation. + * @deprecated use updateOne, updateMany or bulkWrite. Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance + * @param filter - The filter for the update operation. * @param update - The update operations to be applied to the documents * @param options - Optional settings for the command * @param callback - An optional callback, a Promise will be returned if none is provided */ - update(selector: Filter, update: UpdateFilter, options: UpdateOptions, callback: Callback): Promise | void; + update(filter: Filter, update: UpdateFilter, options: UpdateOptions, callback: Callback): Promise | void; /** * Remove documents. * - * @deprecated use deleteOne, deleteMany or bulkWrite - * @param selector - The selector for the update operation. + * @deprecated use deleteOne, deleteMany or bulkWrite. Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance + * @param filter - The filter for the remove operation. * @param options - Optional settings for the command * @param callback - An optional callback, a Promise will be returned if none is provided */ - remove(selector: Filter, options: DeleteOptions, callback: Callback): Promise | void; + remove(filter: Filter, options: DeleteOptions, callback: Callback): Promise | void; /** * An estimated count of matching documents in the db to a filter. * @@ -2259,10 +2447,13 @@ export declare class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ count(): Promise; - count(callback: Callback): void; count(filter: Filter): Promise; - count(filter: Filter, callback: Callback): void; count(filter: Filter, options: CountOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + count(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + count(filter: Filter, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ count(filter: Filter, options: CountOptions, callback: Callback): Promise | void; } @@ -2444,7 +2635,7 @@ export declare const Compressor: Readonly<{ }>; /** @public */ -export declare type Compressor = typeof Compressor[CompressorName]; +export declare type Compressor = (typeof Compressor)[CompressorName]; /** @public */ export declare type CompressorName = keyof typeof Compressor; @@ -2562,6 +2753,7 @@ export declare interface ConnectionOptions extends SupportedNodeConnectionOption */ export declare class ConnectionPoolClearedEvent extends ConnectionPoolMonitoringEvent { /* Excluded from this release type: serviceId */ + interruptInUseConnections?: boolean; /* Excluded from this release type: __constructor */ } @@ -2581,13 +2773,16 @@ export declare class ConnectionPoolClosedEvent extends ConnectionPoolMonitoringE */ export declare class ConnectionPoolCreatedEvent extends ConnectionPoolMonitoringEvent { /** The options used to create this connection pool */ - options?: ConnectionPoolOptions; + options: Omit & { + credentials?: Record; + }; /* Excluded from this release type: __constructor */ } /** @public */ export declare type ConnectionPoolEvents = { connectionPoolCreated(event: ConnectionPoolCreatedEvent): void; + connectionPoolReady(event: ConnectionPoolReadyEvent): void; connectionPoolClosed(event: ConnectionPoolClosedEvent): void; connectionPoolCleared(event: ConnectionPoolClearedEvent): void; connectionCreated(event: ConnectionCreatedEvent): void; @@ -2628,6 +2823,16 @@ export declare interface ConnectionPoolOptions extends Omit('pets', { + * validator: { $expr: { $in: ['$kind', ['dog', 'cat', 'fish']] } } + * }) * ``` */ export declare class Db { @@ -2833,7 +3041,9 @@ export declare class Db { * @param callback - An optional callback, a Promise will be returned if none is provided */ createCollection(name: string, options?: CreateCollectionOptions): Promise>; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ createCollection(name: string, callback: Callback>): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ createCollection(name: string, options: CreateCollectionOptions | undefined, callback: Callback>): void; /** * Execute a command @@ -2846,8 +3056,10 @@ export declare class Db { * @param callback - An optional callback, a Promise will be returned if none is provided */ command(command: Document): Promise; - command(command: Document, callback: Callback): void; command(command: Document, options: RunCommandOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + command(command: Document, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ command(command: Document, options: RunCommandOptions, callback: Callback): void; /** * Execute an aggregation framework pipeline against the database, needs MongoDB \>= 3.6 @@ -2872,8 +3084,10 @@ export declare class Db { * @param callback - An optional callback, a Promise will be returned if none is provided */ stats(): Promise; - stats(callback: Callback): void; stats(options: DbStatsOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + stats(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ stats(options: DbStatsOptions, callback: Callback): void; /** * List all collections of this database with optional filter @@ -2900,8 +3114,10 @@ export declare class Db { * @param callback - An optional callback, a Promise will be returned if none is provided */ renameCollection(fromCollection: string, toCollection: string): Promise>; - renameCollection(fromCollection: string, toCollection: string, callback: Callback>): void; renameCollection(fromCollection: string, toCollection: string, options: RenameOptions): Promise>; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + renameCollection(fromCollection: string, toCollection: string, callback: Callback>): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ renameCollection(fromCollection: string, toCollection: string, options: RenameOptions, callback: Callback>): void; /** * Drop a collection from the database, removing it permanently. New accesses will create a new collection. @@ -2911,8 +3127,10 @@ export declare class Db { * @param callback - An optional callback, a Promise will be returned if none is provided */ dropCollection(name: string): Promise; - dropCollection(name: string, callback: Callback): void; dropCollection(name: string, options: DropCollectionOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + dropCollection(name: string, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ dropCollection(name: string, options: DropCollectionOptions, callback: Callback): void; /** * Drop a database, removing it permanently from the server. @@ -2921,8 +3139,10 @@ export declare class Db { * @param callback - An optional callback, a Promise will be returned if none is provided */ dropDatabase(): Promise; - dropDatabase(callback: Callback): void; dropDatabase(options: DropDatabaseOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + dropDatabase(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ dropDatabase(options: DropDatabaseOptions, callback: Callback): void; /** * Fetch all collections for the current db. @@ -2931,8 +3151,10 @@ export declare class Db { * @param callback - An optional callback, a Promise will be returned if none is provided */ collections(): Promise; - collections(callback: Callback): void; collections(options: ListCollectionsOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + collections(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ collections(options: ListCollectionsOptions, callback: Callback): void; /** * Creates an index on the db and collection. @@ -2943,8 +3165,10 @@ export declare class Db { * @param callback - An optional callback, a Promise will be returned if none is provided */ createIndex(name: string, indexSpec: IndexSpecification): Promise; - createIndex(name: string, indexSpec: IndexSpecification, callback?: Callback): void; createIndex(name: string, indexSpec: IndexSpecification, options: CreateIndexesOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + createIndex(name: string, indexSpec: IndexSpecification, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ createIndex(name: string, indexSpec: IndexSpecification, options: CreateIndexesOptions, callback: Callback): void; /** * Add a user to the database @@ -2955,12 +3179,16 @@ export declare class Db { * @param callback - An optional callback, a Promise will be returned if none is provided */ addUser(username: string): Promise; - addUser(username: string, callback: Callback): void; addUser(username: string, password: string): Promise; - addUser(username: string, password: string, callback: Callback): void; addUser(username: string, options: AddUserOptions): Promise; - addUser(username: string, options: AddUserOptions, callback: Callback): void; addUser(username: string, password: string, options: AddUserOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + addUser(username: string, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + addUser(username: string, password: string, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + addUser(username: string, options: AddUserOptions, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ addUser(username: string, password: string, options: AddUserOptions, callback: Callback): void; /** * Remove a user from a database @@ -2970,8 +3198,10 @@ export declare class Db { * @param callback - An optional callback, a Promise will be returned if none is provided */ removeUser(username: string): Promise; - removeUser(username: string, callback: Callback): void; removeUser(username: string, options: RemoveUserOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + removeUser(username: string, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ removeUser(username: string, options: RemoveUserOptions, callback: Callback): void; /** * Set the current profiling level of MongoDB @@ -2981,8 +3211,10 @@ export declare class Db { * @param callback - An optional callback, a Promise will be returned if none is provided */ setProfilingLevel(level: ProfilingLevel): Promise; - setProfilingLevel(level: ProfilingLevel, callback: Callback): void; setProfilingLevel(level: ProfilingLevel, options: SetProfilingLevelOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + setProfilingLevel(level: ProfilingLevel, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ setProfilingLevel(level: ProfilingLevel, options: SetProfilingLevelOptions, callback: Callback): void; /** * Retrieve the current profiling Level for MongoDB @@ -2991,8 +3223,10 @@ export declare class Db { * @param callback - An optional callback, a Promise will be returned if none is provided */ profilingLevel(): Promise; - profilingLevel(callback: Callback): void; profilingLevel(options: ProfilingLevelOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + profilingLevel(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ profilingLevel(options: ProfilingLevelOptions, callback: Callback): void; /** * Retrieves this collections index info. @@ -3002,8 +3236,10 @@ export declare class Db { * @param callback - An optional callback, a Promise will be returned if none is provided */ indexInformation(name: string): Promise; - indexInformation(name: string, callback: Callback): void; indexInformation(name: string, options: IndexInformationOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + indexInformation(name: string, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ indexInformation(name: string, options: IndexInformationOptions, callback: Callback): void; /** * Unref all sockets @@ -3016,7 +3252,7 @@ export declare class Db { * changes to system collections. * * @remarks - * watch() accepts two generic arguments for distinct usecases: + * watch() accepts two generic arguments for distinct use cases: * - The first is to provide the schema that may be defined for all the collections within this database * - The second is to override the shape of the change stream document entirely, if it is not provided the type will default to ChangeStreamDocument of the first argument * @@ -3026,8 +3262,12 @@ export declare class Db { * @typeParam TChange - Type of the whole change stream document emitted */ watch>(pipeline?: Document[], options?: ChangeStreamOptions): ChangeStream; - /** Return the db logger */ + /** + * Return the db logger + * @deprecated The Legacy Logger is deprecated and will be removed in the next major version. + */ getLogger(): Logger; + /** @deprecated The Legacy Logger is deprecated and will be removed in the next major version. */ get logger(): Logger; } @@ -3116,11 +3356,7 @@ export declare interface DeleteStatement { /* Excluded from this release type: deserialize */ -/** @public */ -export declare interface DestroyOptions { - /** Force the destruction. */ - force?: boolean; -} +/* Excluded from this release type: DestroyOptions */ /** @public */ export declare type DistinctOptions = CommandOperationOptions; @@ -3228,7 +3464,7 @@ export declare type ExplainVerbosityLike = ExplainVerbosity | boolean; /** A MongoDB filter can be some portion of the schema or a set of operators @public */ export declare type Filter = Partial | ({ - [Property in Join>, '.'>]?: Condition, Property>>; + [Property in Join, []>, '.'>]?: Condition, Property>>; } & RootFilterOperators>); /** @public */ @@ -3293,16 +3529,17 @@ export declare class FindCursor extends AbstractCursor { * @deprecated Use `collection.estimatedDocumentCount` or `collection.countDocuments` instead */ count(): Promise; - /** @deprecated Use `collection.estimatedDocumentCount` or `collection.countDocuments` instead */ - count(callback: Callback): void; - /** @deprecated Use `collection.estimatedDocumentCount` or `collection.countDocuments` instead */ + /** @deprecated Use `collection.estimatedDocumentCount` or `collection.countDocuments` instead. */ count(options: CountOptions): Promise; - /** @deprecated Use `collection.estimatedDocumentCount` or `collection.countDocuments` instead */ + /** @deprecated Use `collection.estimatedDocumentCount` or `collection.countDocuments` instead. Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + count(callback: Callback): void; + /** @deprecated Use `collection.estimatedDocumentCount` or `collection.countDocuments` instead. Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ count(options: CountOptions, callback: Callback): void; /** Execute the explain for the cursor */ explain(): Promise; - explain(callback: Callback): void; explain(verbosity?: ExplainVerbosityLike): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + explain(callback: Callback): void; /** Set the cursor query */ filter(filter: Document): this; /** @@ -3497,9 +3734,9 @@ export declare class FindOperators { bulkOperation: BulkOperationBase; /* Excluded from this release type: __constructor */ /** Add a multiple update operation to the bulk operation */ - update(updateDocument: Document): BulkOperationBase; + update(updateDocument: Document | Document[]): BulkOperationBase; /** Add a single update operation to the bulk operation */ - updateOne(updateDocument: Document): BulkOperationBase; + updateOne(updateDocument: Document | Document[]): BulkOperationBase; /** Add a replace one operation to the bulk operation */ replaceOne(replacement: Document): BulkOperationBase; /** Add a delete one operation to the bulk operation */ @@ -3512,6 +3749,8 @@ export declare class FindOperators { collation(collation: CollationOptions): this; /** Specifies arrayFilters for UpdateOne or UpdateMany bulk operations. */ arrayFilters(arrayFilters: Document[]): this; + /** Specifies hint for the bulk operation. */ + hint(hint: Hint): this; } /** @@ -3561,6 +3800,11 @@ export declare interface FindOptions extend showRecordId?: boolean; /** Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0). */ let?: Document; + /** + * Option to enable an optimized code path for queries looking for a particular range of `ts` values in the oplog. Requires `tailable` to be true. + * @deprecated Starting from MongoDB 4.4 this flag is not needed and will be ignored. + */ + oplogReplay?: boolean; } /** @public */ @@ -3569,8 +3813,6 @@ export declare type Flatten = Type extends ReadonlyArray ? Ite /** @public */ export declare type GenericListener = (...args: any[]) => void; -/* Excluded from this release type: GetMore */ - /* Excluded from this release type: GetMoreOptions */ /** @@ -3612,6 +3854,7 @@ export declare class GridFSBucket extends TypedEventEmitter * @param id - The id of the file doc */ delete(id: ObjectId): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ delete(id: ObjectId, callback: Callback): void; /** Convenience wrapper around find on the files collection */ find(filter?: Filter, options?: FindOptions): FindCursor; @@ -3630,11 +3873,17 @@ export declare class GridFSBucket extends TypedEventEmitter * @param filename - new name for the file */ rename(id: ObjectId, filename: string): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ rename(id: ObjectId, filename: string, callback: Callback): void; /** Removes this bucket's files collection, followed by its chunks collection. */ drop(): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ drop(callback: Callback): void; - /** Get the Db scoped logger. */ + /** + * Get the Db scoped logger. + * + * @deprecated Legacy Logger is deprecated and will be removed in the next major version. + */ getLogger(): Logger; } @@ -3713,16 +3962,23 @@ export declare class GridFSBucketReadStream extends Readable implements NodeJS.R * * @param callback - called when the cursor is successfully closed or an error occurred. */ - abort(callback?: Callback): void; + abort(): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + abort(callback: Callback): void; } /** @public */ export declare interface GridFSBucketReadStreamOptions { sort?: Sort; skip?: number; - /** 0-based offset in bytes to start streaming from */ + /** + * 0-indexed non-negative byte offset from the beginning of the file + */ start?: number; - /** 0-based offset in bytes to stop streaming before */ + /** + * 0-indexed non-negative byte offset to the end of the file contents + * to be returned by the stream. `end` is non-inclusive + */ end?: number; } @@ -3791,6 +4047,7 @@ export declare class GridFSBucketWriteStream extends Writable implements NodeJS. * @param callback - called when chunks are successfully removed or error occurred */ abort(): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ abort(callback: Callback): void; /** * Tells the stream that no more data will be coming in. The stream will @@ -3853,7 +4110,7 @@ export declare const GSSAPICanonicalizationValue: Readonly<{ }>; /** @public */ -export declare type GSSAPICanonicalizationValue = typeof GSSAPICanonicalizationValue[keyof typeof GSSAPICanonicalizationValue]; +export declare type GSSAPICanonicalizationValue = (typeof GSSAPICanonicalizationValue)[keyof typeof GSSAPICanonicalizationValue]; /** @public */ export declare interface HedgeOptions { @@ -3869,14 +4126,11 @@ export declare class HostAddress { host: string | undefined; port: number | undefined; socketPath: string | undefined; - isIPv6: boolean | undefined; + isIPv6: boolean; constructor(hostString: string); inspect(): string; - /** - * @param ipv6Brackets - optionally request ipv6 bracket notation required for connection strings - */ - toString(ipv6Brackets?: boolean): string; - static fromString(s: string): HostAddress; + toString(): string; + static fromString(this: void, s: string): HostAddress; static fromHostPort(host: string, port: number): HostAddress; static fromSrvRecord({ name, port }: SrvRecord): HostAddress; } @@ -3885,11 +4139,13 @@ export declare class HostAddress { export declare interface IndexDescription extends Pick { collation?: CollationOptions; name?: string; - key: Document; + key: { + [key: string]: IndexDirection; + } | Map; } /** @public */ -export declare type IndexDirection = -1 | 1 | '2d' | '2dsphere' | 'text' | 'geoHaystack' | number; +export declare type IndexDirection = -1 | 1 | '2d' | '2dsphere' | 'text' | 'geoHaystack' | 'hashed' | number; /** @public */ export declare interface IndexInformationOptions { @@ -3901,9 +4157,7 @@ export declare interface IndexInformationOptions { /** @public */ export declare type IndexSpecification = OneOrMore; +} | Map>; /** Given an object shaped type, return the type of the _id field or default to ObjectId @public */ export declare type InferIdType = TSchema extends { @@ -3953,8 +4207,6 @@ export declare type IntegerType = number | Int32 | Long; /* Excluded from this release type: InternalAbstractCursorOptions */ -/* Excluded from this release type: InterruptibleAsyncInterval */ - /** @public */ export declare type IsAny = true extends false & Type ? ResultIfAny : ResultIfNotAny; @@ -3968,8 +4220,6 @@ export declare type Join = T extends [] ? /* Excluded from this release type: kBuffer */ -/* Excluded from this release type: kBuffers */ - /* Excluded from this release type: kBuiltOptions */ /* Excluded from this release type: kCancellationToken */ @@ -4018,8 +4268,6 @@ export declare type KeysOfOtherType = { /* Excluded from this release type: kFilter */ -/* Excluded from this release type: kFullResult */ - /* Excluded from this release type: kGeneration */ /* Excluded from this release type: kGeneration_2 */ @@ -4028,8 +4276,6 @@ export declare type KeysOfOtherType = { /* Excluded from this release type: kId */ -/* Excluded from this release type: KillCursor */ - /* Excluded from this release type: kInit */ /* Excluded from this release type: kInitialized */ @@ -4040,8 +4286,6 @@ export declare type KeysOfOtherType = { /* Excluded from this release type: kLastUseTime */ -/* Excluded from this release type: kLength */ - /* Excluded from this release type: kLogger */ /* Excluded from this release type: kMessageStream */ @@ -4052,8 +4296,6 @@ export declare type KeysOfOtherType = { /* Excluded from this release type: kMode */ -/* Excluded from this release type: kMonitor */ - /* Excluded from this release type: kMonitorId */ /* Excluded from this release type: kNamespace */ @@ -4072,20 +4314,20 @@ export declare type KeysOfOtherType = { /* Excluded from this release type: kPipeline */ +/* Excluded from this release type: kPoolState */ + /* Excluded from this release type: kProcessingWaitQueue */ /* Excluded from this release type: kQueue */ -/* Excluded from this release type: kResumeQueue */ - /* Excluded from this release type: kRoundTripTime */ -/* Excluded from this release type: kRTTPinger */ - /* Excluded from this release type: kServer */ /* Excluded from this release type: kServer_2 */ +/* Excluded from this release type: kServer_3 */ + /* Excluded from this release type: kServerError */ /* Excluded from this release type: kServerSession */ @@ -4116,6 +4358,8 @@ export declare const LEGAL_TCP_SOCKET_OPTIONS: readonly ["family", "hints", "loc /** @public */ export declare const LEGAL_TLS_SOCKET_OPTIONS: readonly ["ALPNProtocols", "ca", "cert", "checkServerIdentity", "ciphers", "crl", "ecdhCurve", "key", "minDHSize", "passphrase", "pfx", "rejectUnauthorized", "secureContext", "secureProtocol", "servername", "session"]; +/* Excluded from this release type: List */ + /** @public */ export declare class ListCollectionsCursor | CollectionInfo = Pick | CollectionInfo> extends AbstractCursor { parent: Db; @@ -4175,6 +4419,7 @@ export declare interface ListIndexesOptions extends CommandOperationOptions { /** * @public + * @deprecated This logger is unused and will be removed in the next major version. */ export declare class Logger { className: string; @@ -4246,10 +4491,16 @@ export declare class Logger { static setLevel(newLevel: LoggerLevel): void; } -/** @public */ +/** + * @public + * @deprecated The Legacy Logger is deprecated and will be removed in the next major version. + */ export declare type LoggerFunction = (message?: any, ...optionalParams: any[]) => void; -/** @public */ +/** + * @public + * @deprecated The Legacy Logger is deprecated and will be removed in the next major version. + */ export declare const LoggerLevel: Readonly<{ readonly ERROR: "error"; readonly WARN: "warn"; @@ -4261,10 +4512,16 @@ export declare const LoggerLevel: Readonly<{ readonly debug: "debug"; }>; -/** @public */ -export declare type LoggerLevel = typeof LoggerLevel[keyof typeof LoggerLevel]; +/** + * @public + * @deprecated The Legacy Logger is deprecated and will be removed in the next major version. + */ +export declare type LoggerLevel = (typeof LoggerLevel)[keyof typeof LoggerLevel]; -/** @public */ +/** + * @public + * @deprecated The Legacy Logger is deprecated and will be removed in the next major version. + */ export declare interface LoggerOptions { logger?: LoggerFunction; loggerLevel?: LoggerLevel; @@ -4310,7 +4567,13 @@ export declare interface MapReduceOptions ex } /** @public */ -export declare type MatchKeysAndValues = Readonly> & Record; +export declare type MatchKeysAndValues = Readonly<{ + [Property in Join, '.'>]?: PropertyType; +} & { + [Property in `${NestedPathsOfType}.$${`[${string}]` | ''}`]?: ArrayElement>; +} & { + [Property in `${NestedPathsOfType[]>}.$${`[${string}]` | ''}.${string}`]?: any; +} & Document>; export { MaxKey } @@ -4321,7 +4584,12 @@ export { MaxKey } /* Excluded from this release type: MessageStreamOptions */ export { MinKey } -/** @public */ +/** + * @public + * @deprecated This type will be completely removed in 5.0 and findOneAndUpdate, + * findOneAndDelete, and findOneAndReplace will then return the + * actual result document. + */ export declare interface ModifyResult { value: WithId | null; lastErrorObject?: Document; @@ -4329,7 +4597,7 @@ export declare interface ModifyResult { } /** @public */ -export declare const MONGO_CLIENT_EVENTS: readonly ["connectionPoolCreated", "connectionPoolClosed", "connectionCreated", "connectionReady", "connectionClosed", "connectionCheckOutStarted", "connectionCheckOutFailed", "connectionCheckedOut", "connectionCheckedIn", "connectionPoolCleared", "commandStarted", "commandSucceeded", "commandFailed", "serverOpening", "serverClosed", "serverDescriptionChanged", "topologyOpening", "topologyClosed", "topologyDescriptionChanged", "error", "timeout", "close", "serverHeartbeatStarted", "serverHeartbeatSucceeded", "serverHeartbeatFailed"]; +export declare const MONGO_CLIENT_EVENTS: readonly ["connectionPoolCreated", "connectionPoolReady", "connectionPoolCleared", "connectionPoolClosed", "connectionCreated", "connectionReady", "connectionClosed", "connectionCheckOutStarted", "connectionCheckOutFailed", "connectionCheckedOut", "connectionCheckedIn", "commandStarted", "commandSucceeded", "commandFailed", "serverOpening", "serverClosed", "serverDescriptionChanged", "topologyOpening", "topologyClosed", "topologyDescriptionChanged", "error", "timeout", "close", "serverHeartbeatStarted", "serverHeartbeatSucceeded", "serverHeartbeatFailed"]; /** * An error generated when the driver API is used incorrectly @@ -4421,46 +4689,28 @@ export declare class MongoChangeStreamError extends MongoRuntimeError { * @public * * @remarks - * The programmatically provided options take precedent over the URI options. + * The programmatically provided options take precedence over the URI options. * * @example - * ```js - * // Connect using a MongoClient instance - * const MongoClient = require('mongodb').MongoClient; - * const test = require('assert'); - * // Connection url - * const url = 'mongodb://localhost:27017'; - * // Database Name - * const dbName = 'test'; - * // Connect using MongoClient - * const mongoClient = new MongoClient(url); - * mongoClient.connect(function(err, client) { - * const db = client.db(dbName); - * client.close(); - * }); - * ``` + * ```ts + * import { MongoClient } from 'mongodb'; * - * @example - * ```js - * // Connect using the MongoClient.connect static method - * const MongoClient = require('mongodb').MongoClient; - * const test = require('assert'); - * // Connection url - * const url = 'mongodb://localhost:27017'; - * // Database Name - * const dbName = 'test'; - * // Connect using MongoClient - * MongoClient.connect(url, function(err, client) { - * const db = client.db(dbName); - * client.close(); - * }); + * // Enable command monitoring for debugging + * const client = new MongoClient('mongodb://localhost:27017', { monitorCommands: true }); + * + * client.on('commandStarted', started => console.log(started)); + * client.db().collection('pets'); + * await client.insertOne({ name: 'spot', kind: 'dog' }); * ``` */ export declare class MongoClient extends TypedEventEmitter { /* Excluded from this release type: s */ /* Excluded from this release type: topology */ + /* Excluded from this release type: mongoLogger */ + /* Excluded from this release type: connectionLock */ /* Excluded from this release type: [kOptions] */ constructor(url: string, options?: MongoClientOptions); + /** @see MongoOptions */ get options(): Readonly; get serverApi(): Readonly; /* Excluded from this release type: monitorCommands */ @@ -4470,6 +4720,7 @@ export declare class MongoClient extends TypedEventEmitter { get writeConcern(): WriteConcern | undefined; get readPreference(): ReadPreference; get bsonOptions(): BSONSerializeOptions; + /** @deprecated The Legacy Logger is deprecated and will be removed in the next major version. */ get logger(): Logger; /** * Connect to MongoDB using a url @@ -4477,7 +4728,9 @@ export declare class MongoClient extends TypedEventEmitter { * @see docs.mongodb.org/manual/reference/connection-string/ */ connect(): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ connect(callback: Callback): void; + private _connect; /** * Close the db and its underlying connections * @@ -4485,8 +4738,10 @@ export declare class MongoClient extends TypedEventEmitter { * @param callback - An optional callback, a Promise will be returned if none is provided */ close(): Promise; - close(callback: Callback): void; close(force: boolean): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + close(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ close(force: boolean, callback: Callback): void; /** * Create a new Db instance sharing the current socket connections. @@ -4499,13 +4754,15 @@ export declare class MongoClient extends TypedEventEmitter { * Connect to MongoDB using a url * * @remarks - * The programmatically provided options take precedent over the URI options. + * The programmatically provided options take precedence over the URI options. * * @see https://docs.mongodb.org/manual/reference/connection-string/ */ static connect(url: string): Promise; - static connect(url: string, callback: Callback): void; static connect(url: string, options: MongoClientOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + static connect(url: string, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ static connect(url: string, options: MongoClientOptions, callback: Callback): void; /** Starts a new session on the server */ startSession(): ClientSession; @@ -4527,7 +4784,7 @@ export declare class MongoClient extends TypedEventEmitter { * changes to system collections, as well as the local, admin, and config databases. * * @remarks - * watch() accepts two generic arguments for distinct usecases: + * watch() accepts two generic arguments for distinct use cases: * - The first is to provide the schema that may be defined for all the data within the current cluster * - The second is to override the shape of the change stream document entirely, if it is not provided the type will default to ChangeStreamDocument of the first argument * @@ -4537,12 +4794,15 @@ export declare class MongoClient extends TypedEventEmitter { * @typeParam TChange - Type of the whole change stream document emitted */ watch>(pipeline?: Document[], options?: ChangeStreamOptions): ChangeStream; - /** Return the mongo client logger */ + /** + * Return the mongo client logger + * @deprecated The Legacy Logger is deprecated and will be removed in the next major version. + */ getLogger(): Logger; } /** @public */ -export declare type MongoClientEvents = Pick & { +export declare type MongoClientEvents = Pick & { open(mongoClient: MongoClient): void; }; @@ -4636,12 +4896,28 @@ export declare interface MongoClientOptions extends BSONSerializeOptions, Suppor directConnection?: boolean; /** Instruct the driver it is connecting to a load balancer fronting a mongos like service */ loadBalanced?: boolean; - /** The write concern w value */ + /** + * The write concern w value + * @deprecated Please use the `writeConcern` option instead + */ w?: W; - /** The write concern timeout */ + /** + * The write concern timeout + * @deprecated Please use the `writeConcern` option instead + */ wtimeoutMS?: number; - /** The journal write concern */ + /** + * The journal write concern + * @deprecated Please use the `writeConcern` option instead + */ journal?: boolean; + /** + * A MongoDB WriteConcern, which describes the level of acknowledgement + * requested from MongoDB for write operations. + * + * @see https://docs.mongodb.com/manual/reference/write-concern/ + */ + writeConcern?: WriteConcern | WriteConcernSettings; /** Validate mongod server certificate against Certificate Authority */ sslValidate?: boolean; /** SSL Certificate file path. */ @@ -4662,22 +4938,29 @@ export declare interface MongoClientOptions extends BSONSerializeOptions, Suppor keepAliveInitialDelay?: number; /** Force server to assign `_id` values instead of driver */ forceServerObjectId?: boolean; - /** Return document results as raw BSON buffers */ - raw?: boolean; /** A primary key factory function for generation of custom `_id` keys */ pkFactory?: PkFactory; - /** A Promise library class the application wishes to use such as Bluebird, must be ES6 compatible */ + /** + * A Promise library class the application wishes to use such as Bluebird, must be ES6 compatible + * @deprecated Setting a custom promise library is deprecated the next major version will use the global Promise constructor only. + */ promiseLibrary?: any; - /** The logging level */ + /** + * The logging level + * @deprecated The Legacy Logger is deprecated and will be removed in the next major version. + */ loggerLevel?: LoggerLevel; - /** Custom logger object */ + /** + * Custom logger object + * @deprecated The Legacy Logger is deprecated and will be removed in the next major version. + */ logger?: Logger; /** Enable command monitoring for this client */ monitorCommands?: boolean; /** Server API version */ serverApi?: ServerApi | ServerApiVersion; /** - * Optionally enable client side auto encryption + * Optionally enable in-use auto encryption * * @remarks * Automatic encryption is an enterprise only feature that only applies to operations on a collection. Automatic encryption is not supported for operations on a database or view, and operations that are not bypassed will result in error @@ -4787,7 +5070,7 @@ export declare class MongoCursorInUseError extends MongoAPIError { /** @public */ export declare class MongoDBNamespace { db: string; - collection?: string; + collection: string | undefined; /** * Create a namespace object * @@ -4828,7 +5111,7 @@ export declare class MongoDriverError extends MongoError { * @category Error * * @privateRemarks - * CSFLE has a dependency on this error, it uses the constructor with a string argument + * mongodb-client-encryption has a dependency on this error, it uses the constructor with a string argument */ export declare class MongoError extends Error { /* Excluded from this release type: [kErrorLabels] */ @@ -4839,7 +5122,10 @@ export declare class MongoError extends Error { */ code?: number | string; topologyVersion?: TopologyVersion; + connectionGeneration?: number; + cause?: Error; constructor(message: string | Error); + /* Excluded from this release type: buildErrorMessage */ get name(): string; /** Legacy name for server error responses */ get errmsg(): string; @@ -4861,10 +5147,13 @@ export declare const MongoErrorLabel: Readonly<{ readonly UnknownTransactionCommitResult: "UnknownTransactionCommitResult"; readonly ResumableChangeStreamError: "ResumableChangeStreamError"; readonly HandshakeError: "HandshakeError"; + readonly ResetPool: "ResetPool"; + readonly InterruptInUseConnections: "InterruptInUseConnections"; + readonly NoWritesPerformed: "NoWritesPerformed"; }>; /** @public */ -export declare type MongoErrorLabel = typeof MongoErrorLabel[keyof typeof MongoErrorLabel]; +export declare type MongoErrorLabel = (typeof MongoErrorLabel)[keyof typeof MongoErrorLabel]; /** * An error generated when the user attempts to operate @@ -4925,6 +5214,16 @@ export declare class MongoKerberosError extends MongoRuntimeError { get name(): string; } +/* Excluded from this release type: MongoLoggableComponent */ + +/* Excluded from this release type: MongoLogger */ + +/* Excluded from this release type: MongoLoggerEnvOptions */ + +/* Excluded from this release type: MongoLoggerMongoClientOptions */ + +/* Excluded from this release type: MongoLoggerOptions */ + /** * An error generated when the user fails to provide authentication credentials before attempting * to connect to a mongo server instance. @@ -4972,7 +5271,7 @@ export declare interface MongoNetworkErrorOptions { * @category Error * * @privateRemarks - * CSFLE has a dependency on this error with an instanceof check + * mongodb-client-encryption has a dependency on this error with an instanceof check */ export declare class MongoNetworkTimeoutError extends MongoNetworkError { constructor(message: string, options?: MongoNetworkErrorOptions); @@ -4992,10 +5291,26 @@ export declare class MongoNotConnectedError extends MongoAPIError { } /** - * Mongo Client Options + * Parsed Mongo Client Options. + * + * User supplied options are documented by `MongoClientOptions`. + * + * **NOTE:** The client's options parsing is subject to change to support new features. + * This type is provided to aid with inspection of options after parsing, it should not be relied upon programmatically. + * + * Options are sourced from: + * - connection string + * - options object passed to the MongoClient constructor + * - file system (ex. tls settings) + * - environment variables + * - DNS SRV records and TXT records + * + * Not all options may be present after client construction as some are obtained from asynchronous operations. + * * @public */ export declare interface MongoOptions extends Required>, SupportedNodeConnectionOptions { + appName?: string; hosts: HostAddress[]; srvHost?: string; credentials?: MongoCredentials; @@ -5035,6 +5350,7 @@ export declare interface MongoOptions extends Required { connectTimeoutMS: number; @@ -5207,19 +5527,36 @@ export declare interface MonitorOptions extends Omit = Type extends string | number | boolean | Date | RegExp | Buffer | Uint8Array | ((...args: any[]) => any) | { +export declare type NestedPaths = Depth['length'] extends 8 ? [] : Type extends string | number | boolean | Date | RegExp | Buffer | Uint8Array | ((...args: any[]) => any) | { _bsontype: string; -} ? [] : Type extends ReadonlyArray ? [] | [number, ...NestedPaths] : Type extends Map ? [string] : Type extends object ? { +} ? [] : Type extends ReadonlyArray ? [] | [number, ...NestedPaths] : Type extends Map ? [string] : Type extends object ? { [Key in Extract]: Type[Key] extends Type ? [Key] : Type extends Type[Key] ? [Key] : Type[Key] extends ReadonlyArray ? Type extends ArrayType ? [Key] : ArrayType extends Type ? [Key] : [ Key, - ...NestedPaths - ] : [ + ...NestedPaths + ] : // child is not structured the same as the parent + [ Key, - ...NestedPaths - ]; + ...NestedPaths + ] | [Key]; }[Extract] : []; +/** + * @public + * returns keys (strings) for every path into a schema with a value of type + * https://docs.mongodb.com/manual/tutorial/query-embedded-documents/ + */ +export declare type NestedPathsOfType = KeysOfAType<{ + [Property in Join, '.'>]: PropertyType; +}, Type>; + /** * @public * A type that extends Document but forbids anything that "looks like" an object id. @@ -5272,8 +5609,6 @@ export declare interface OperationOptions extends BSONSerializeOptions { */ export declare type OperationTime = Timestamp; -/* Excluded from this release type: OpGetMoreOptions */ - /* Excluded from this release type: OpMsgOptions */ /* Excluded from this release type: OpQueryOptions */ @@ -5289,7 +5624,7 @@ export declare type OptionalId = EnhancedOmit & { }; /** - * Adds an optional _id field to an object shaped type, unless the _id field is requried on that type. + * Adds an optional _id field to an object shaped type, unless the _id field is required on that type. * In the case _id is required, this method continues to require_id. * * @public @@ -5305,11 +5640,14 @@ export declare type OptionalUnlessRequiredId = TSchema extends { /** @public */ export declare class OrderedBulkOperation extends BulkOperationBase { - constructor(collection: Collection, options: BulkWriteOptions); + /* Excluded from this release type: __constructor */ addToOperationsList(batchType: BatchType, document: Document | UpdateStatement | DeleteStatement): this; } -/** @public */ +/** + * @public + * @deprecated This interface is unused and will be removed in the next major version of the driver. + */ export declare interface PipeOptions { end?: boolean; } @@ -5319,6 +5657,8 @@ export declare interface PkFactory { createPk(): any; } +/* Excluded from this release type: PoolState */ + /** @public */ export declare const ProfilingLevel: Readonly<{ readonly off: "off"; @@ -5327,7 +5667,7 @@ export declare const ProfilingLevel: Readonly<{ }>; /** @public */ -export declare type ProfilingLevel = typeof ProfilingLevel[keyof typeof ProfilingLevel]; +export declare type ProfilingLevel = (typeof ProfilingLevel)[keyof typeof ProfilingLevel]; /** @public */ export declare type ProfilingLevelOptions = CommandOperationOptions; @@ -5347,15 +5687,25 @@ export declare type ProjectionOperators = Document; /** * Global promise store allowing user-provided promises + * @deprecated Setting a custom promise library is deprecated the next major version will use the global Promise constructor only. * @public */ declare class Promise_2 { - /** Validates the passed in promise library */ + /** + * Validates the passed in promise library + * @deprecated Setting a custom promise library is deprecated the next major version will use the global Promise constructor only. + */ static validate(lib: unknown): lib is PromiseConstructor; - /** Sets the promise library */ - static set(lib: PromiseConstructor): void; - /** Get the stored promise library, or resolves passed in */ - static get(): PromiseConstructor; + /** + * Sets the promise library + * @deprecated Setting a custom promise library is deprecated the next major version will use the global Promise constructor only. + */ + static set(lib: PromiseConstructor | null): void; + /** + * Get the stored promise library, or resolves passed in + * @deprecated Setting a custom promise library is deprecated the next major version will use the global Promise constructor only. + */ + static get(): PromiseConstructor | null; } export { Promise_2 as Promise } @@ -5393,8 +5743,6 @@ export declare type PushOperator = ({ /* Excluded from this release type: Query */ -/* Excluded from this release type: QueryOptions */ - /** * The MongoDB ReadConcern, which allows for control of the consistency and isolation properties * of the data read from replica sets and replica set shards. @@ -5432,7 +5780,7 @@ export declare const ReadConcernLevel: Readonly<{ }>; /** @public */ -export declare type ReadConcernLevel = typeof ReadConcernLevel[keyof typeof ReadConcernLevel]; +export declare type ReadConcernLevel = (typeof ReadConcernLevel)[keyof typeof ReadConcernLevel]; /** @public */ export declare type ReadConcernLike = ReadConcern | { @@ -5543,7 +5891,7 @@ export declare const ReadPreferenceMode: Readonly<{ }>; /** @public */ -export declare type ReadPreferenceMode = typeof ReadPreferenceMode[keyof typeof ReadPreferenceMode]; +export declare type ReadPreferenceMode = (typeof ReadPreferenceMode)[keyof typeof ReadPreferenceMode]; /** @public */ export declare interface ReadPreferenceOptions { @@ -5629,7 +5977,7 @@ export declare const ReturnDocument: Readonly<{ }>; /** @public */ -export declare type ReturnDocument = typeof ReturnDocument[keyof typeof ReturnDocument]; +export declare type ReturnDocument = (typeof ReturnDocument)[keyof typeof ReturnDocument]; /** @public */ export declare interface RoleSpecification { @@ -5696,7 +6044,7 @@ export declare const ServerApiVersion: Readonly<{ }>; /** @public */ -export declare type ServerApiVersion = typeof ServerApiVersion[keyof typeof ServerApiVersion]; +export declare type ServerApiVersion = (typeof ServerApiVersion)[keyof typeof ServerApiVersion]; /** @public */ export declare class ServerCapabilities { @@ -5734,26 +6082,25 @@ export declare class ServerClosedEvent { * @public */ export declare class ServerDescription { - private _hostAddress; address: string; type: ServerType; hosts: string[]; passives: string[]; arbiters: string[]; tags: TagSet; - error?: MongoError; - topologyVersion?: TopologyVersion; + error: MongoError | null; + topologyVersion: TopologyVersion | null; minWireVersion: number; maxWireVersion: number; roundTripTime: number; lastUpdateTime: number; lastWriteDate: number; - me?: string; - primary?: string; - setName?: string; - setVersion?: number; - electionId?: ObjectId; - logicalSessionTimeoutMinutes?: number; + me: string | null; + primary: string | null; + setName: string | null; + setVersion: number | null; + electionId: ObjectId | null; + logicalSessionTimeoutMinutes: number | null; $clusterTime?: ClusterTime; /* Excluded from this release type: __constructor */ get hostAddress(): HostAddress; @@ -5770,7 +6117,7 @@ export declare class ServerDescription { * Determines if another `ServerDescription` is equal to this one per the rules defined * in the {@link https://github.com/mongodb/specifications/blob/master/source/server-discovery-and-monitoring/server-discovery-and-monitoring.rst#serverdescription|SDAM spec} */ - equals(other: ServerDescription): boolean; + equals(other?: ServerDescription | null): boolean; } /** @@ -5916,7 +6263,7 @@ export declare const ServerType: Readonly<{ }>; /** @public */ -export declare type ServerType = typeof ServerType[keyof typeof ServerType]; +export declare type ServerType = (typeof ServerType)[keyof typeof ServerType]; /** @public */ export declare type SetFields = ({ @@ -5928,6 +6275,8 @@ export declare type SetFields = ({ /** @public */ export declare type SetProfilingLevelOptions = CommandOperationOptions; +/* Excluded from this release type: SeverityLevel */ + /** @public */ export declare type Sort = string | Exclude; +export declare type SupportedSocketOptions = Pick; /** @public */ -export declare type SupportedTLSConnectionOptions = Pick>; +export declare type SupportedTLSConnectionOptions = Pick>; /** @public */ -export declare type SupportedTLSSocketOptions = Pick>; +export declare type SupportedTLSSocketOptions = Pick>; /** @public */ export declare type TagSet = { @@ -6031,24 +6380,24 @@ export declare class TopologyClosedEvent { */ export declare class TopologyDescription { type: TopologyType; - setName?: string; - maxSetVersion?: number; - maxElectionId?: ObjectId; + setName: string | null; + maxSetVersion: number | null; + maxElectionId: ObjectId | null; servers: Map; stale: boolean; compatible: boolean; compatibilityError?: string; - logicalSessionTimeoutMinutes?: number; + logicalSessionTimeoutMinutes: number | null; heartbeatFrequencyMS: number; localThresholdMS: number; - commonWireVersion?: number; + commonWireVersion: number; /** * Create a TopologyDescription */ - constructor(topologyType: TopologyType, serverDescriptions?: Map, setName?: string, maxSetVersion?: number, maxElectionId?: ObjectId, commonWireVersion?: number, options?: TopologyDescriptionOptions); + constructor(topologyType: TopologyType, serverDescriptions?: Map | null, setName?: string | null, maxSetVersion?: number | null, maxElectionId?: ObjectId | null, commonWireVersion?: number | null, options?: TopologyDescriptionOptions | null); /* Excluded from this release type: updateFromSrvPollingEvent */ /* Excluded from this release type: update */ - get error(): MongoError | undefined; + get error(): MongoServerError | null; /** * Determines if the topology description has any known servers */ @@ -6145,7 +6494,7 @@ export declare const TopologyType: Readonly<{ }>; /** @public */ -export declare type TopologyType = typeof TopologyType[keyof typeof TopologyType]; +export declare type TopologyType = (typeof TopologyType)[keyof typeof TopologyType]; /** @public */ export declare interface TopologyVersion { @@ -6188,7 +6537,7 @@ export declare interface TransactionOptions extends CommandOperationOptions { /** A default writeConcern for commands in this transaction */ writeConcern?: WriteConcern; /** A default read preference for commands in this transaction */ - readPreference?: ReadPreference; + readPreference?: ReadPreferenceLike; /** Specifies the maximum amount of time to allow a commit action on a transaction to run in milliseconds */ maxCommitTimeMS?: number; } @@ -6240,7 +6589,7 @@ export declare class TypedEventEmitter extends /** @public */ export declare class UnorderedBulkOperation extends BulkOperationBase { - constructor(collection: Collection, options: BulkWriteOptions); + /* Excluded from this release type: __constructor */ handleWriteError(callback: Callback, writeResult: BulkWriteResult): boolean; addToOperationsList(batchType: BatchType, document: Document | UpdateStatement | DeleteStatement): this; } @@ -6269,6 +6618,23 @@ export declare interface UpdateDescription /** The number of elements in the truncated array. */ newSize: number; }>; + /** + * A document containing additional information about any ambiguous update paths from the update event. The document + * maps the full ambiguous update path to an array containing the actual resolved components of the path. For example, + * given a document shaped like `{ a: { '0': 0 } }`, and an update of `{ $inc: 'a.0' }`, disambiguated paths would look like + * the following: + * + * ``` + * { + * 'a.0': ['a', '0'] + * } + * ``` + * + * This field is only present when there are ambiguous paths that are updated as a part of the update event and `showExpandedEvents` + * is enabled for the change stream. + * @sinceServerVersion 6.1.0 + */ + disambiguatedPaths?: Document; } /** @public */ @@ -6339,7 +6705,7 @@ export declare interface UpdateOptions extends CommandOperationOptions { /** Specifies a collation */ collation?: CollationOptions; /** Specify that the update query should only consider plans using the hinted index */ - hint?: string | Document; + hint?: Hint; /** When true, creates a new document if no document matches the query */ upsert?: boolean; /** Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0). */ diff --git a/food-ordering-app/server/node_modules/mongodb/package.json b/food-ordering-app/server/node_modules/mongodb/package.json index 754a6cd94..0f4d91253 100644 --- a/food-ordering-app/server/node_modules/mongodb/package.json +++ b/food-ordering-app/server/node_modules/mongodb/package.json @@ -1,6 +1,6 @@ { "name": "mongodb", - "version": "4.7.0", + "version": "4.17.2", "description": "The official MongoDB driver for Node.js", "main": "lib/index.js", "files": [ @@ -25,58 +25,57 @@ "email": "dbx-node@mongodb.com" }, "dependencies": { - "bson": "^4.6.3", - "denque": "^2.0.1", - "mongodb-connection-string-url": "^2.5.2", - "socks": "^2.6.2" + "bson": "^4.7.2", + "mongodb-connection-string-url": "^2.6.0", + "socks": "^2.7.1" }, "devDependencies": { "@iarna/toml": "^2.2.5", "@istanbuljs/nyc-config-typescript": "^1.0.2", - "@microsoft/api-extractor": "^7.24.1", - "@microsoft/tsdoc-config": "^0.16.1", - "@mongodb-js/zstd": "^1.0.0", - "@types/chai": "^4.3.0", + "@microsoft/api-extractor": "^7.34.7", + "@microsoft/tsdoc-config": "^0.16.2", + "@mongodb-js/zstd": "^1.1.0", + "@octokit/core": "^4.2.4", + "@types/chai": "^4.3.5", "@types/chai-subset": "^1.3.3", - "@types/express": "^4.17.13", + "@types/express": "^4.17.17", "@types/kerberos": "^1.1.1", - "@types/mocha": "^9.1.0", - "@types/node": "^17.0.23", + "@types/mocha": "^10.0.1", + "@types/node": "^18.16.3", "@types/saslprep": "^1.0.1", - "@types/semver": "^7.3.9", - "@types/sinon": "^10.0.11", - "@types/sinon-chai": "^3.2.8", - "@types/whatwg-url": "^8.2.1", - "@typescript-eslint/eslint-plugin": "^5.26.0", - "@typescript-eslint/parser": "^5.26.0", + "@types/semver": "^7.3.13", + "@types/sinon": "^10.0.14", + "@types/sinon-chai": "^3.2.9", + "@types/whatwg-url": "^11.0.0", + "@typescript-eslint/eslint-plugin": "^5.59.2", + "@typescript-eslint/parser": "^5.59.2", "bluebird": "^3.7.2", - "chai": "^4.3.6", + "chai": "^4.3.7", "chai-subset": "^1.6.0", "chalk": "^4.1.2", - "eslint": "^8.12.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.25.4", - "eslint-plugin-prettier": "^4.0.0", - "eslint-plugin-simple-import-sort": "^7.0.0", - "eslint-plugin-tsdoc": "^0.2.16", - "express": "^4.17.3", + "eslint": "^8.39.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-simple-import-sort": "^8.0.0", + "eslint-plugin-tsdoc": "^0.2.17", + "express": "^4.18.2", "js-yaml": "^4.1.0", "mocha": "^9.2.2", "mocha-sinon": "^2.1.2", "nyc": "^15.1.0", - "prettier": "^2.6.1", - "rimraf": "^3.0.2", - "semver": "^7.3.5", + "prettier": "^2.8.8", + "semver": "^7.5.0", "sinon": "^13.0.1", "sinon-chai": "^3.7.0", "source-map-support": "^0.5.21", - "standard-version": "^9.3.2", - "ts-node": "^10.8.0", - "tsd": "^0.20.0", - "typescript": "^4.7.2", + "standard-version": "^9.5.0", + "ts-node": "^10.9.1", + "tsd": "^0.27.0", + "typescript": "^4.8.4", "typescript-cached-transpile": "^0.0.6", - "xml2js": "^0.4.23", - "yargs": "^17.4.0" + "v8-heapsnapshot": "^1.2.0", + "yargs": "^17.7.2" }, "license": "Apache-2.0", "engines": { @@ -87,27 +86,31 @@ }, "homepage": "https://github.com/mongodb/node-mongodb-native", "optionalDependencies": { - "saslprep": "^1.0.3" + "@aws-sdk/credential-providers": "^3.186.0", + "@mongodb-js/saslprep": "^1.1.0" }, "scripts": { "build:evergreen": "node .evergreen/generate_evergreen_tasks.js", "build:ts": "node ./node_modules/typescript/bin/tsc", - "build:dts": "npm run build:ts && api-extractor run && rimraf 'lib/**/*.d.ts*'", + "build:dts": "npm run build:ts && api-extractor run && node etc/clean_definition_files.cjs", "build:docs": "./etc/docs/build.ts", "build:typedoc": "typedoc", "check:bench": "node test/benchmarks/driverBench", "check:coverage": "nyc npm run test:all", "check:integration-coverage": "nyc npm run check:test", + "check:lambda": "mocha --config test/mocha_lambda.json test/integration/node-specific/examples/handler.test.js", + "check:lambda:aws": "mocha --config test/mocha_lambda.json test/integration/node-specific/examples/aws_handler.test.js", "check:lint": "npm run build:dts && npm run check:dts && npm run check:eslint && npm run check:tsd", "check:eslint": "eslint -v && eslint --max-warnings=0 --ext '.js,.ts' src test", "check:tsd": "tsd --version && tsd", + "check:dependencies": "mocha test/action/dependency.test.ts", "check:dts": "node ./node_modules/typescript/bin/tsc --noEmit mongodb.d.ts && tsd", "check:test": "mocha --config test/mocha_mongodb.json test/integration", "check:unit": "mocha test/unit", "check:ts": "node ./node_modules/typescript/bin/tsc -v && node ./node_modules/typescript/bin/tsc --noEmit", "check:atlas": "mocha --config test/manual/mocharc.json test/manual/atlas_connectivity.test.js", "check:adl": "mocha --config test/mocha_mongodb.json test/manual/atlas-data-lake-testing", - "check:aws": "mocha --config test/mocha_mongodb.json test/integration/auth/mongodb_aws.test.js", + "check:aws": "mocha --config test/mocha_mongodb.json test/integration/auth/mongodb_aws.test.ts", "check:ocsp": "mocha --config test/manual/mocharc.json test/manual/ocsp_support.test.js", "check:kerberos": "mocha --config test/manual/mocharc.json test/manual/kerberos.test.js", "check:tls": "mocha --config test/manual/mocharc.json test/manual/tls_support.test.js", @@ -118,7 +121,7 @@ "fix:eslint": "npm run check:eslint -- --fix", "prepare": "node etc/prepare.js", "preview:docs": "ts-node etc/docs/preview.ts", - "release": "standard-version -a -i HISTORY.md", + "release": "bash etc/check-remote.sh && standard-version -a -i HISTORY.md", "test": "npm run check:lint && npm run test:all", "test:all": "npm run check:unit && npm run check:test", "update:docs": "npm run build:docs -- --yes" diff --git a/food-ordering-app/server/node_modules/mongodb/src/admin.ts b/food-ordering-app/server/node_modules/mongodb/src/admin.ts index 303af58a7..977de4e88 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/admin.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/admin.ts @@ -29,26 +29,15 @@ export interface AdminPrivate { * @public * * @example - * ```js - * const MongoClient = require('mongodb').MongoClient; - * const test = require('assert'); - * // Connection url - * const url = 'mongodb://localhost:27017'; - * // Database Name - * const dbName = 'test'; + * ```ts + * import { MongoClient } from 'mongodb'; * - * // Connect using MongoClient - * MongoClient.connect(url, function(err, client) { - * // Use the admin database for the operation - * const adminDb = client.db(dbName).admin(); - * - * // List all the available databases - * adminDb.listDatabases(function(err, dbs) { - * expect(err).to.not.exist; - * test.ok(dbs.databases.length > 0); - * client.close(); - * }); - * }); + * const client = new MongoClient('mongodb://localhost:27017'); + * const admin = client.db().admin(); + * const dbInfo = await admin.listDatabases(); + * for (const db of dbInfo.databases) { + * console.log(db.name); + * } * ``` */ export class Admin { @@ -71,8 +60,10 @@ export class Admin { * @param callback - An optional callback, a Promise will be returned if none is provided */ command(command: Document): Promise; - command(command: Document, callback: Callback): void; command(command: Document, options: RunCommandOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + command(command: Document, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ command(command: Document, options: RunCommandOptions, callback: Callback): void; command( command: Document, @@ -96,8 +87,10 @@ export class Admin { * @param callback - An optional callback, a Promise will be returned if none is provided */ buildInfo(): Promise; - buildInfo(callback: Callback): void; buildInfo(options: CommandOperationOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + buildInfo(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ buildInfo(options: CommandOperationOptions, callback: Callback): void; buildInfo( options?: CommandOperationOptions | Callback, @@ -115,8 +108,10 @@ export class Admin { * @param callback - An optional callback, a Promise will be returned if none is provided */ serverInfo(): Promise; - serverInfo(callback: Callback): void; serverInfo(options: CommandOperationOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + serverInfo(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ serverInfo(options: CommandOperationOptions, callback: Callback): void; serverInfo( options?: CommandOperationOptions | Callback, @@ -134,8 +129,10 @@ export class Admin { * @param callback - An optional callback, a Promise will be returned if none is provided */ serverStatus(): Promise; - serverStatus(callback: Callback): void; serverStatus(options: CommandOperationOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + serverStatus(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ serverStatus(options: CommandOperationOptions, callback: Callback): void; serverStatus( options?: CommandOperationOptions | Callback, @@ -153,8 +150,10 @@ export class Admin { * @param callback - An optional callback, a Promise will be returned if none is provided */ ping(): Promise; - ping(callback: Callback): void; ping(options: CommandOperationOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + ping(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ ping(options: CommandOperationOptions, callback: Callback): void; ping( options?: CommandOperationOptions | Callback, @@ -174,12 +173,16 @@ export class Admin { * @param callback - An optional callback, a Promise will be returned if none is provided */ addUser(username: string): Promise; - addUser(username: string, callback: Callback): void; addUser(username: string, password: string): Promise; - addUser(username: string, password: string, callback: Callback): void; addUser(username: string, options: AddUserOptions): Promise; - addUser(username: string, options: AddUserOptions, callback: Callback): void; addUser(username: string, password: string, options: AddUserOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + addUser(username: string, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + addUser(username: string, password: string, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + addUser(username: string, options: AddUserOptions, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ addUser( username: string, password: string, @@ -221,8 +224,10 @@ export class Admin { * @param callback - An optional callback, a Promise will be returned if none is provided */ removeUser(username: string): Promise; - removeUser(username: string, callback: Callback): void; removeUser(username: string, options: RemoveUserOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + removeUser(username: string, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ removeUser(username: string, options: RemoveUserOptions, callback: Callback): void; removeUser( username: string, @@ -247,8 +252,10 @@ export class Admin { * @param callback - An optional callback, a Promise will be returned if none is provided */ validateCollection(collectionName: string): Promise; - validateCollection(collectionName: string, callback: Callback): void; validateCollection(collectionName: string, options: ValidateCollectionOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + validateCollection(collectionName: string, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ validateCollection( collectionName: string, options: ValidateCollectionOptions, @@ -276,8 +283,10 @@ export class Admin { * @param callback - An optional callback, a Promise will be returned if none is provided */ listDatabases(): Promise; - listDatabases(callback: Callback): void; listDatabases(options: ListDatabasesOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + listDatabases(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ listDatabases(options: ListDatabasesOptions, callback: Callback): void; listDatabases( options?: ListDatabasesOptions | Callback, @@ -300,8 +309,10 @@ export class Admin { * @param callback - An optional callback, a Promise will be returned if none is provided */ replSetGetStatus(): Promise; - replSetGetStatus(callback: Callback): void; replSetGetStatus(options: CommandOperationOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + replSetGetStatus(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ replSetGetStatus(options: CommandOperationOptions, callback: Callback): void; replSetGetStatus( options?: CommandOperationOptions | Callback, diff --git a/food-ordering-app/server/node_modules/mongodb/src/bson.ts b/food-ordering-app/server/node_modules/mongodb/src/bson.ts index 42d9ab08d..88a4dc900 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/bson.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/bson.ts @@ -6,6 +6,7 @@ import type { SerializeOptions } from 'bson'; +/** @internal */ // eslint-disable-next-line @typescript-eslint/no-var-requires let BSON = require('bson'); @@ -39,6 +40,9 @@ export { Timestamp } from 'bson'; +/** @internal */ +export { BSON }; + /** * BSON Serialization options. * @public @@ -54,7 +58,26 @@ export interface BSONSerializeOptions | 'index' | 'validation' > { - /** Return BSON filled buffers from operations */ + /** + * Enabling the raw option will return a [Node.js Buffer](https://nodejs.org/api/buffer.html) + * which is allocated using [allocUnsafe API](https://nodejs.org/api/buffer.html#static-method-bufferallocunsafesize). + * See this section from the [Node.js Docs here](https://nodejs.org/api/buffer.html#what-makes-bufferallocunsafe-and-bufferallocunsafeslow-unsafe) + * for more detail about what "unsafe" refers to in this context. + * If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate + * your own buffer and clone the contents: + * + * @example + * ```ts + * const raw = await collection.findOne({}, { raw: true }); + * const myBuffer = Buffer.alloc(raw.byteLength); + * myBuffer.set(raw, 0); + * // Only save and use `myBuffer` beyond this point + * ``` + * + * @remarks + * Please note there is a known limitation where this option cannot be used at the MongoClient level (see [NODE-3946](https://jira.mongodb.org/browse/NODE-3946)). + * It does correctly work at `Db`, `Collection`, and per operation the same as other BSON options work. + */ raw?: boolean; /** Enable utf8 validation when deserializing BSON documents. Defaults to true. */ diff --git a/food-ordering-app/server/node_modules/mongodb/src/bulk/common.ts b/food-ordering-app/server/node_modules/mongodb/src/bulk/common.ts index 41b69da65..90631b885 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/bulk/common.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/bulk/common.ts @@ -22,7 +22,6 @@ import { executeOperation } from '../operations/execute_operation'; import { InsertOperation } from '../operations/insert'; import { AbstractOperation, Hint } from '../operations/operation'; import { makeUpdateStatement, UpdateOperation, UpdateStatement } from '../operations/update'; -import { PromiseProvider } from '../promise_provider'; import type { Server } from '../sdam/server'; import type { Topology } from '../sdam/topology'; import type { ClientSession } from '../sessions'; @@ -31,6 +30,7 @@ import { Callback, getTopology, hasAtomicOperators, + maybeCallback, MongoDBNamespace, resolveOptions } from '../utils'; @@ -47,7 +47,7 @@ export const BatchType = Object.freeze({ } as const); /** @public */ -export type BatchType = typeof BatchType[keyof typeof BatchType]; +export type BatchType = (typeof BatchType)[keyof typeof BatchType]; /** @public */ export interface InsertOneModel { @@ -130,7 +130,11 @@ export type AnyBulkWriteOperation = | { deleteOne: DeleteOneModel } | { deleteMany: DeleteManyModel }; -/** @public */ +/** + * @public + * + * @deprecated Will be made internal in 5.0 + */ export interface BulkResult { ok: number; writeErrors: WriteError[]; @@ -176,6 +180,7 @@ export class Batch { * The result of a bulk write. */ export class BulkWriteResult { + /** @deprecated Will be removed in 5.0 */ result: BulkResult; /** @@ -295,7 +300,11 @@ export class BulkWriteResult { return this.result.writeErrors; } - /** Retrieve lastOp if available */ + /** + * Retrieve lastOp if available + * + * @deprecated Will be removed in 5.0 + */ getLastOp(): Document | undefined { return this.result.opTime; } @@ -322,6 +331,7 @@ export class BulkWriteResult { } } + /* @deprecated Will be removed in 5.0 release */ toJSON(): BulkResult { return this.result; } @@ -441,6 +451,7 @@ export class WriteError { /** Converts the number to a Long or returns it. */ function longOrConvert(value: number | Long | Timestamp): Long | Timestamp { + // TODO(NODE-2674): Preserve int64 sent from MongoDB return typeof value === 'number' ? Long.fromNumber(value) : value; } @@ -783,7 +794,7 @@ export class FindOperators { } /** Add a multiple update operation to the bulk operation */ - update(updateDocument: Document): BulkOperationBase { + update(updateDocument: Document | Document[]): BulkOperationBase { const currentOp = buildCurrentOp(this.bulkOperation); return this.bulkOperation.addToOperationsList( BatchType.UPDATE, @@ -795,7 +806,7 @@ export class FindOperators { } /** Add a single update operation to the bulk operation */ - updateOne(updateDocument: Document): BulkOperationBase { + updateOne(updateDocument: Document | Document[]): BulkOperationBase { if (!hasAtomicOperators(updateDocument)) { throw new MongoInvalidArgumentError('Update document requires atomic operators'); } @@ -867,6 +878,16 @@ export class FindOperators { this.bulkOperation.s.currentOp.arrayFilters = arrayFilters; return this; } + + /** Specifies hint for the bulk operation. */ + hint(hint: Hint): this { + if (!this.bulkOperation.s.currentOp) { + this.bulkOperation.s.currentOp = {}; + } + + this.bulkOperation.s.currentOp.hint = hint; + return this; + } } /** @internal */ @@ -1064,7 +1085,7 @@ export abstract class BulkOperationBase { * Add a single insert document to the bulk operation * * @example - * ```js + * ```ts * const bulkOp = collection.initializeOrderedBulkOp(); * * // Adds three inserts to the bulkOp. @@ -1088,7 +1109,7 @@ export abstract class BulkOperationBase { * Returns a builder object used to complete the definition of the operation. * * @example - * ```js + * ```ts * const bulkOp = collection.initializeOrderedBulkOp(); * * // Add an updateOne to the bulkOp @@ -1246,8 +1267,11 @@ export abstract class BulkOperationBase { } execute(options?: BulkWriteOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ execute(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ execute(options: BulkWriteOptions | undefined, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ execute( options?: BulkWriteOptions | Callback, callback?: Callback @@ -1256,39 +1280,43 @@ export abstract class BulkOperationBase { options?: BulkWriteOptions | Callback, callback?: Callback ): Promise | void { - if (typeof options === 'function') (callback = options), (options = {}); - options = options ?? {}; - - if (this.s.executed) { - return handleEarlyError(new MongoBatchReExecutionError(), callback); - } + callback = + typeof callback === 'function' + ? callback + : typeof options === 'function' + ? options + : undefined; + return maybeCallback(async () => { + options = options != null && typeof options !== 'function' ? options : {}; + + if (this.s.executed) { + throw new MongoBatchReExecutionError(); + } - const writeConcern = WriteConcern.fromOptions(options); - if (writeConcern) { - this.s.writeConcern = writeConcern; - } + const writeConcern = WriteConcern.fromOptions(options); + if (writeConcern) { + this.s.writeConcern = writeConcern; + } - // If we have current batch - if (this.isOrdered) { - if (this.s.currentBatch) this.s.batches.push(this.s.currentBatch); - } else { - if (this.s.currentInsertBatch) this.s.batches.push(this.s.currentInsertBatch); - if (this.s.currentUpdateBatch) this.s.batches.push(this.s.currentUpdateBatch); - if (this.s.currentRemoveBatch) this.s.batches.push(this.s.currentRemoveBatch); - } - // If we have no operations in the bulk raise an error - if (this.s.batches.length === 0) { - const emptyBatchError = new MongoInvalidArgumentError( - 'Invalid BulkOperation, Batch cannot be empty' - ); - return handleEarlyError(emptyBatchError, callback); - } + // If we have current batch + if (this.isOrdered) { + if (this.s.currentBatch) this.s.batches.push(this.s.currentBatch); + } else { + if (this.s.currentInsertBatch) this.s.batches.push(this.s.currentInsertBatch); + if (this.s.currentUpdateBatch) this.s.batches.push(this.s.currentUpdateBatch); + if (this.s.currentRemoveBatch) this.s.batches.push(this.s.currentRemoveBatch); + } + // If we have no operations in the bulk raise an error + if (this.s.batches.length === 0) { + throw new MongoInvalidArgumentError('Invalid BulkOperation, Batch cannot be empty'); + } - this.s.executed = true; - const finalOptions = { ...this.s.options, ...options }; - const operation = new BulkWriteShimOperation(this, finalOptions); + this.s.executed = true; + const finalOptions = { ...this.s.options, ...options }; + const operation = new BulkWriteShimOperation(this, finalOptions); - return executeOperation(this.s.collection.s.db.s.client, operation, callback); + return executeOperation(this.s.collection.s.db.s.client, operation); + }, callback); } /** @@ -1337,20 +1365,6 @@ Object.defineProperty(BulkOperationBase.prototype, 'length', { } }); -/** helper function to assist with promiseOrCallback behavior */ -function handleEarlyError( - err?: AnyError, - callback?: Callback -): Promise | void { - const Promise = PromiseProvider.get(); - if (typeof callback === 'function') { - callback(err); - return; - } - - return Promise.reject(err); -} - function shouldForceServerObjectId(bulkOperation: BulkOperationBase): boolean { if (typeof bulkOperation.s.options.forceServerObjectId === 'boolean') { return bulkOperation.s.options.forceServerObjectId; diff --git a/food-ordering-app/server/node_modules/mongodb/src/bulk/ordered.ts b/food-ordering-app/server/node_modules/mongodb/src/bulk/ordered.ts index e0dbf9b7e..97ee6444d 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/bulk/ordered.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/bulk/ordered.ts @@ -8,6 +8,7 @@ import { Batch, BatchType, BulkOperationBase, BulkWriteOptions } from './common' /** @public */ export class OrderedBulkOperation extends BulkOperationBase { + /** @internal */ constructor(collection: Collection, options: BulkWriteOptions) { super(collection, options, true); } diff --git a/food-ordering-app/server/node_modules/mongodb/src/bulk/unordered.ts b/food-ordering-app/server/node_modules/mongodb/src/bulk/unordered.ts index b4227e8d0..5f2e562f3 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/bulk/unordered.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/bulk/unordered.ts @@ -9,6 +9,7 @@ import { Batch, BatchType, BulkOperationBase, BulkWriteOptions, BulkWriteResult /** @public */ export class UnorderedBulkOperation extends BulkOperationBase { + /** @internal */ constructor(collection: Collection, options: BulkWriteOptions) { super(collection, options, false); } diff --git a/food-ordering-app/server/node_modules/mongodb/src/change_stream.ts b/food-ordering-app/server/node_modules/mongodb/src/change_stream.ts index e268097bd..42ee01278 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/change_stream.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/change_stream.ts @@ -1,16 +1,10 @@ -import Denque = require('denque'); import type { Readable } from 'stream'; -import { setTimeout } from 'timers'; -import type { Binary, Document, Long, Timestamp } from './bson'; +import type { Binary, Document, Timestamp } from './bson'; import { Collection } from './collection'; import { CHANGE, CLOSE, END, ERROR, INIT, MORE, RESPONSE, RESUME_TOKEN_CHANGED } from './constants'; -import { - AbstractCursor, - AbstractCursorEvents, - AbstractCursorOptions, - CursorStreamOptions -} from './cursor/abstract_cursor'; +import type { AbstractCursorEvents, CursorStreamOptions } from './cursor/abstract_cursor'; +import { ChangeStreamCursor, ChangeStreamCursorOptions } from './cursor/change_stream_cursor'; import { Db } from './db'; import { AnyError, @@ -20,26 +14,13 @@ import { MongoRuntimeError } from './error'; import { MongoClient } from './mongo_client'; -import { InferIdType, TODO_NODE_3286, TypedEventEmitter } from './mongo_types'; -import { AggregateOperation, AggregateOptions } from './operations/aggregate'; +import { InferIdType, TypedEventEmitter } from './mongo_types'; +import type { AggregateOptions } from './operations/aggregate'; import type { CollationOptions, OperationParent } from './operations/command'; -import { executeOperation, ExecutionResult } from './operations/execute_operation'; import type { ReadPreference } from './read_preference'; -import type { Topology } from './sdam/topology'; -import type { ClientSession, ServerSessionId } from './sessions'; -import { - calculateDurationInMs, - Callback, - filterOptions, - getTopology, - maxWireVersion, - maybePromise, - MongoDBNamespace, - now -} from './utils'; +import type { ServerSessionId } from './sessions'; +import { Callback, filterOptions, getTopology, maybeCallback, MongoDBNamespace } from './utils'; -/** @internal */ -const kResumeQueue = Symbol('resumeQueue'); /** @internal */ const kCursorStream = Symbol('cursorStream'); /** @internal */ @@ -62,19 +43,10 @@ const CHANGE_DOMAIN_TYPES = { CLUSTER: Symbol('Cluster') }; -interface TopologyWaitOptions { - start?: number; - timeout?: number; - readPreference?: ReadPreference; -} - -const SELECTION_TIMEOUT = 30000; - const CHANGE_STREAM_EVENTS = [RESUME_TOKEN_CHANGED, END, CLOSE]; const NO_RESUME_TOKEN_ERROR = 'A change stream document has been received that lacks a resume token (_id).'; -const NO_CURSOR_ERROR = 'ChangeStream has no cursor'; const CHANGESTREAM_CLOSED_ERROR = 'ChangeStream is closed'; /** @@ -106,23 +78,14 @@ export type ResumeToken = unknown; */ export type OperationTime = Timestamp; -/** @public */ +/** + * @public + * @deprecated This interface is unused and will be removed in the next major version of the driver. + */ export interface PipeOptions { end?: boolean; } -/** @internal */ -export type ChangeStreamAggregateRawResult = { - $clusterTime: { clusterTime: Timestamp }; - cursor: { - postBatchResumeToken: ResumeToken; - ns: string; - id: number | Long; - } & ({ firstBatch: TChange[] } | { nextBatch: TChange[] }); - ok: 1; - operationTime: Timestamp; -}; - /** * Options that can be passed to a ChangeStream. Note that startAfter, resumeAfter, and startAtOperationTime are all mutually exclusive, and the server will error if more than one is specified. * @public @@ -249,7 +212,7 @@ export interface ChangeStreamDocumentCollectionUUID { * **NOTE:** collectionUUID will be converted to a NodeJS Buffer if the promoteBuffers * flag is enabled. * - * @since 6.1.0 + * @sinceServerVersion 6.1.0 */ collectionUUID: Binary; } @@ -261,7 +224,7 @@ export interface ChangeStreamDocumentOperationDescription { * * Only present when the `showExpandedEvents` flag is enabled. * - * @since 6.1.0 + * @sinceServerVersion 6.1.0 */ operationDescription?: Document; } @@ -278,7 +241,7 @@ export interface ChangeStreamInsertDocument operationType: 'insert'; /** This key will contain the document being inserted */ fullDocument: TSchema; - /** Namespace the insert event occured on */ + /** Namespace the insert event occurred on */ ns: ChangeStreamNameSpace; } @@ -301,7 +264,7 @@ export interface ChangeStreamUpdateDocument fullDocument?: TSchema; /** Contains a description of updated and removed fields in this operation */ updateDescription: UpdateDescription; - /** Namespace the update event occured on */ + /** Namespace the update event occurred on */ ns: ChangeStreamNameSpace; /** * Contains the pre-image of the modified or deleted document if the @@ -324,7 +287,7 @@ export interface ChangeStreamReplaceDocument ChangeStreamDocumentCollectionUUID { /** Describes the type of operation represented in this change notification */ operationType: 'delete'; - /** Namespace the delete event occured on */ + /** Namespace the delete event occurred on */ ns: ChangeStreamNameSpace; /** * Contains the pre-image of the modified or deleted document if the @@ -367,7 +330,7 @@ export interface ChangeStreamDropDocument ChangeStreamDocumentCollectionUUID { /** Describes the type of operation represented in this change notification */ operationType: 'drop'; - /** Namespace the drop event occured on */ + /** Namespace the drop event occurred on */ ns: ChangeStreamNameSpace; } @@ -382,7 +345,7 @@ export interface ChangeStreamRenameDocument operationType: 'rename'; /** The new name for the `ns.coll` collection */ to: { db: string; coll: string }; - /** The "from" namespace that the rename occured on */ + /** The "from" namespace that the rename occurred on */ ns: ChangeStreamNameSpace; } @@ -535,6 +498,24 @@ export interface UpdateDescription { /** The number of elements in the truncated array. */ newSize: number; }>; + + /** + * A document containing additional information about any ambiguous update paths from the update event. The document + * maps the full ambiguous update path to an array containing the actual resolved components of the path. For example, + * given a document shaped like `{ a: { '0': 0 } }`, and an update of `{ $inc: 'a.0' }`, disambiguated paths would look like + * the following: + * + * ``` + * { + * 'a.0': ['a', '0'] + * } + * ``` + * + * This field is only present when there are ambiguous paths that are updated as a part of the update event and `showExpandedEvents` + * is enabled for the change stream. + * @sinceServerVersion 6.1.0 + */ + disambiguatedPaths?: Document; } /** @public */ @@ -565,11 +546,9 @@ export class ChangeStream< namespace: MongoDBNamespace; type: symbol; /** @internal */ - cursor: ChangeStreamCursor | undefined; + cursor: ChangeStreamCursor; streamOptions?: CursorStreamOptions; /** @internal */ - [kResumeQueue]: Denque>>; - /** @internal */ [kCursorStream]?: Readable & AsyncIterable; /** @internal */ [kClosed]: boolean; @@ -615,7 +594,8 @@ export class ChangeStream< super(); this.pipeline = pipeline; - this.options = options; + this.options = { ...options }; + delete this.options.writeConcern; if (parent instanceof Collection) { this.type = CHANGE_DOMAIN_TYPES.COLLECTION; @@ -635,8 +615,6 @@ export class ChangeStream< this.options.readPreference = parent.readPreference; } - this[kResumeQueue] = new Denque(); - // Create contained Change Stream cursor this.cursor = this._createChangeStreamCursor(options); @@ -669,85 +647,159 @@ export class ChangeStream< /** Check if there is any document still available in the Change Stream */ hasNext(): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ hasNext(callback: Callback): void; hasNext(callback?: Callback): Promise | void { this._setIsIterator(); - return maybePromise(callback, cb => { - this._getCursor((err, cursor) => { - if (err || !cursor) return cb(err); // failed to resume, raise an error - cursor.hasNext(cb); - }); - }); + return maybeCallback(async () => { + // Change streams must resume indefinitely while each resume event succeeds. + // This loop continues until either a change event is received or until a resume attempt + // fails. + // eslint-disable-next-line no-constant-condition + while (true) { + try { + const hasNext = await this.cursor.hasNext(); + return hasNext; + } catch (error) { + try { + await this._processErrorIteratorMode(error); + } catch (error) { + try { + await this.close(); + } catch { + // We are not concerned with errors from close() + } + throw error; + } + } + } + }, callback); } /** Get the next available document from the Change Stream. */ next(): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ next(callback: Callback): void; next(callback?: Callback): Promise | void { this._setIsIterator(); - return maybePromise(callback, cb => { - this._getCursor((err, cursor) => { - if (err || !cursor) return cb(err); // failed to resume, raise an error - cursor.next((error, change) => { - if (error) { - this[kResumeQueue].push(() => this.next(cb)); - this._processError(error, cb); - return; + return maybeCallback(async () => { + // Change streams must resume indefinitely while each resume event succeeds. + // This loop continues until either a change event is received or until a resume attempt + // fails. + // eslint-disable-next-line no-constant-condition + while (true) { + try { + const change = await this.cursor.next(); + const processedChange = this._processChange(change ?? null); + return processedChange; + } catch (error) { + try { + await this._processErrorIteratorMode(error); + } catch (error) { + try { + await this.close(); + } catch { + // We are not concerned with errors from close() + } + throw error; } - this._processNewChange(change ?? null, cb); - }); - }); - }); + } + } + }, callback); + } + + /** + * Try to get the next available document from the Change Stream's cursor or `null` if an empty batch is returned + */ + tryNext(): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + tryNext(callback: Callback): void; + tryNext(callback?: Callback): Promise | void { + this._setIsIterator(); + return maybeCallback(async () => { + // Change streams must resume indefinitely while each resume event succeeds. + // This loop continues until either a change event is received or until a resume attempt + // fails. + // eslint-disable-next-line no-constant-condition + while (true) { + try { + const change = await this.cursor.tryNext(); + return change ?? null; + } catch (error) { + try { + await this._processErrorIteratorMode(error); + } catch (error) { + try { + await this.close(); + } catch { + // We are not concerned with errors from close() + } + throw error; + } + } + } + }, callback); + } + + async *[Symbol.asyncIterator](): AsyncGenerator { + if (this.closed) { + return; + } + + try { + // Change streams run indefinitely as long as errors are resumable + // So the only loop breaking condition is if `next()` throws + while (true) { + yield await this.next(); + } + } finally { + try { + await this.close(); + } catch { + // we're not concerned with errors from close() + } + } } /** Is the cursor closed */ get closed(): boolean { - return this[kClosed] || (this.cursor?.closed ?? false); + return this[kClosed] || this.cursor.closed; } /** Close the Change Stream */ + close(): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + close(callback: Callback): void; close(callback?: Callback): Promise | void { this[kClosed] = true; - return maybePromise(callback, cb => { - if (!this.cursor) { - return cb(); - } - + return maybeCallback(async () => { const cursor = this.cursor; - return cursor.close(err => { + try { + await cursor.close(); + } finally { this._endStream(); - this.cursor = undefined; - return cb(err); - }); - }); + } + }, callback); } /** * Return a modified Readable stream including a possible transform method. - * @throws MongoDriverError if this.cursor is undefined + * + * NOTE: When using a Stream to process change stream events, the stream will + * NOT automatically resume in the case a resumable error is encountered. + * + * @throws MongoChangeStreamError if the underlying cursor or the change stream is closed */ stream(options?: CursorStreamOptions): Readable & AsyncIterable { + if (this.closed) { + throw new MongoChangeStreamError(CHANGESTREAM_CLOSED_ERROR); + } + this.streamOptions = options; - if (!this.cursor) throw new MongoChangeStreamError(NO_CURSOR_ERROR); return this.cursor.stream(options); } - /** - * Try to get the next available document from the Change Stream's cursor or `null` if an empty batch is returned - */ - tryNext(): Promise; - tryNext(callback: Callback): void; - tryNext(callback?: Callback): Promise | void { - this._setIsIterator(); - return maybePromise(callback, cb => { - this._getCursor((err, cursor) => { - if (err || !cursor) return cb(err); // failed to resume, raise an error - return cursor.tryNext(cb); - }); - }); - } - /** @internal */ private _setIsEmitter(): void { if (this[kMode] === 'iterator') { @@ -817,43 +869,13 @@ export class ChangeStream< return changeStreamCursor; } - /** - * This method performs a basic server selection loop, satisfying the requirements of - * ChangeStream resumability until the new SDAM layer can be used. - * @internal - */ - private _waitForTopologyConnected( - topology: Topology, - options: TopologyWaitOptions, - callback: Callback - ) { - setTimeout(() => { - if (options && options.start == null) { - options.start = now(); - } - - const start = options.start || now(); - const timeout = options.timeout || SELECTION_TIMEOUT; - if (topology.isConnected()) { - return callback(); - } - - if (calculateDurationInMs(start) > timeout) { - // TODO(NODE-3497): Replace with MongoNetworkTimeoutError - return callback(new MongoRuntimeError('Timed out waiting for connection')); - } - - this._waitForTopologyConnected(topology, options, callback); - }, 500); // this is an arbitrary wait time to allow SDAM to transition - } - /** @internal */ - private _closeWithError(error: AnyError, callback?: Callback): void { - if (!callback) { - this.emit(ChangeStream.ERROR, error); - } + private _closeEmitterModeWithError(error: AnyError): void { + this.emit(ChangeStream.ERROR, error); - this.close(() => callback && callback(error)); + this.close(() => { + // nothing to do + }); } /** @internal */ @@ -861,8 +883,15 @@ export class ChangeStream< this._setIsEmitter(); const stream = this[kCursorStream] ?? cursor.stream(); this[kCursorStream] = stream; - stream.on('data', change => this._processNewChange(change)); - stream.on('error', error => this._processError(error)); + stream.on('data', change => { + try { + const processedChange = this._processChange(change); + this.emit(ChangeStream.CHANGE, processedChange); + } catch (error) { + this.emit(ChangeStream.ERROR, error); + } + }); + stream.on('error', error => this._processErrorStreamMode(error)); } /** @internal */ @@ -877,291 +906,76 @@ export class ChangeStream< } /** @internal */ - private _processNewChange(change: TChange | null, callback?: Callback) { + private _processChange(change: TChange | null): TChange { if (this[kClosed]) { // TODO(NODE-3485): Replace with MongoChangeStreamClosedError - if (callback) callback(new MongoAPIError(CHANGESTREAM_CLOSED_ERROR)); - return; + throw new MongoAPIError(CHANGESTREAM_CLOSED_ERROR); } // a null change means the cursor has been notified, implicitly closing the change stream if (change == null) { // TODO(NODE-3485): Replace with MongoChangeStreamClosedError - return this._closeWithError(new MongoRuntimeError(CHANGESTREAM_CLOSED_ERROR), callback); + throw new MongoRuntimeError(CHANGESTREAM_CLOSED_ERROR); } if (change && !change._id) { - return this._closeWithError(new MongoChangeStreamError(NO_RESUME_TOKEN_ERROR), callback); + throw new MongoChangeStreamError(NO_RESUME_TOKEN_ERROR); } // cache the resume token - this.cursor?.cacheResumeToken(change._id); + this.cursor.cacheResumeToken(change._id); // wipe the startAtOperationTime if there was one so that there won't be a conflict // between resumeToken and startAtOperationTime if we need to reconnect the cursor this.options.startAtOperationTime = undefined; - // Return the change - if (!callback) return this.emit(ChangeStream.CHANGE, change); - return callback(undefined, change); + return change; } /** @internal */ - private _processError(error: AnyError, callback?: Callback) { - const cursor = this.cursor; - + private _processErrorStreamMode(changeStreamError: AnyError) { // If the change stream has been closed explicitly, do not process error. - if (this[kClosed]) { - // TODO(NODE-3485): Replace with MongoChangeStreamClosedError - if (callback) callback(new MongoAPIError(CHANGESTREAM_CLOSED_ERROR)); - return; - } - - // if the resume succeeds, continue with the new cursor - const resumeWithCursor = (newCursor: ChangeStreamCursor) => { - this.cursor = newCursor; - this._processResumeQueue(); - }; - - // otherwise, raise an error and close the change stream - const unresumableError = (err: AnyError) => { - if (!callback) { - this.emit(ChangeStream.ERROR, err); - } - - this.close(() => this._processResumeQueue(err)); - }; + if (this[kClosed]) return; - if (cursor && isResumableError(error, maxWireVersion(cursor.server))) { - this.cursor = undefined; - - // stop listening to all events from old cursor + if (isResumableError(changeStreamError, this.cursor.maxWireVersion)) { this._endStream(); - - // close internal cursor, ignore errors - cursor.close(); + this.cursor.close().catch(() => null); const topology = getTopology(this.parent); - this._waitForTopologyConnected(topology, { readPreference: cursor.readPreference }, err => { - // if the topology can't reconnect, close the stream - if (err) return unresumableError(err); - - // create a new cursor, preserving the old cursor's options - const newCursor = this._createChangeStreamCursor(cursor.resumeOptions); - - // attempt to continue in emitter mode - if (!callback) return resumeWithCursor(newCursor); - - // attempt to continue in iterator mode - newCursor.hasNext(err => { - // if there's an error immediately after resuming, close the stream - if (err) return unresumableError(err); - resumeWithCursor(newCursor); - }); + topology.selectServer(this.cursor.readPreference, {}, serverSelectionError => { + if (serverSelectionError) return this._closeEmitterModeWithError(changeStreamError); + this.cursor = this._createChangeStreamCursor(this.cursor.resumeOptions); }); - return; + } else { + this._closeEmitterModeWithError(changeStreamError); } - - // if initial error wasn't resumable, raise an error and close the change stream - return this._closeWithError(error, callback); } /** @internal */ - private _getCursor(callback: Callback>) { + private async _processErrorIteratorMode(changeStreamError: AnyError) { if (this[kClosed]) { // TODO(NODE-3485): Replace with MongoChangeStreamClosedError - callback(new MongoAPIError(CHANGESTREAM_CLOSED_ERROR)); - return; + throw new MongoAPIError(CHANGESTREAM_CLOSED_ERROR); } - // if a cursor exists and it is open, return it - if (this.cursor) { - callback(undefined, this.cursor); - return; - } - - // no cursor, queue callback until topology reconnects - this[kResumeQueue].push(callback); - } - - /** - * Drain the resume queue when a new has become available - * @internal - * - * @param error - error getting a new cursor - */ - private _processResumeQueue(error?: Error) { - while (this[kResumeQueue].length) { - const request = this[kResumeQueue].pop(); - if (!request) break; // Should never occur but TS can't use the length check in the while condition - - if (!error) { - if (this[kClosed]) { - // TODO(NODE-3485): Replace with MongoChangeStreamClosedError - request(new MongoAPIError(CHANGESTREAM_CLOSED_ERROR)); - return; - } - if (!this.cursor) { - request(new MongoChangeStreamError(NO_CURSOR_ERROR)); - return; - } + if (!isResumableError(changeStreamError, this.cursor.maxWireVersion)) { + try { + await this.close(); + } catch { + // ignore errors from close } - request(error, this.cursor ?? undefined); + throw changeStreamError; } - } -} - -/** @internal */ -export interface ChangeStreamCursorOptions extends AbstractCursorOptions { - startAtOperationTime?: OperationTime; - resumeAfter?: ResumeToken; - startAfter?: ResumeToken; - maxAwaitTimeMS?: number; - collation?: CollationOptions; - fullDocument?: string; -} - -/** @internal */ -export class ChangeStreamCursor< - TSchema extends Document = Document, - TChange extends Document = ChangeStreamDocument -> extends AbstractCursor { - _resumeToken: ResumeToken; - startAtOperationTime?: OperationTime; - hasReceived?: boolean; - resumeAfter: ResumeToken; - startAfter: ResumeToken; - options: ChangeStreamCursorOptions; - - postBatchResumeToken?: ResumeToken; - pipeline: Document[]; - - constructor( - client: MongoClient, - namespace: MongoDBNamespace, - pipeline: Document[] = [], - options: ChangeStreamCursorOptions = {} - ) { - super(client, namespace, options); - this.pipeline = pipeline; - this.options = options; - this._resumeToken = null; - this.startAtOperationTime = options.startAtOperationTime; - - if (options.startAfter) { - this.resumeToken = options.startAfter; - } else if (options.resumeAfter) { - this.resumeToken = options.resumeAfter; - } - } - - set resumeToken(token: ResumeToken) { - this._resumeToken = token; - this.emit(ChangeStream.RESUME_TOKEN_CHANGED, token); - } - - get resumeToken(): ResumeToken { - return this._resumeToken; - } - - get resumeOptions(): ChangeStreamCursorOptions { - const options: ChangeStreamCursorOptions = { - ...this.options - }; - - for (const key of ['resumeAfter', 'startAfter', 'startAtOperationTime'] as const) { - delete options[key]; - } - - if (this.resumeToken != null) { - if (this.options.startAfter && !this.hasReceived) { - options.startAfter = this.resumeToken; - } else { - options.resumeAfter = this.resumeToken; - } - } else if (this.startAtOperationTime != null && maxWireVersion(this.server) >= 7) { - options.startAtOperationTime = this.startAtOperationTime; - } - - return options; - } - - cacheResumeToken(resumeToken: ResumeToken): void { - if (this.bufferedCount() === 0 && this.postBatchResumeToken) { - this.resumeToken = this.postBatchResumeToken; - } else { - this.resumeToken = resumeToken; - } - this.hasReceived = true; - } - - _processBatch(response: ChangeStreamAggregateRawResult): void { - const cursor = response.cursor; - if (cursor.postBatchResumeToken) { - this.postBatchResumeToken = response.cursor.postBatchResumeToken; - - const batch = - 'firstBatch' in response.cursor ? response.cursor.firstBatch : response.cursor.nextBatch; - if (batch.length === 0) { - this.resumeToken = cursor.postBatchResumeToken; - } + await this.cursor.close().catch(() => null); + const topology = getTopology(this.parent); + try { + await topology.selectServerAsync(this.cursor.readPreference, {}); + this.cursor = this._createChangeStreamCursor(this.cursor.resumeOptions); + } catch { + // if the topology can't reconnect, close the stream + await this.close(); + throw changeStreamError; } } - - clone(): AbstractCursor { - return new ChangeStreamCursor(this.client, this.namespace, this.pipeline, { - ...this.cursorOptions - }); - } - - _initialize(session: ClientSession, callback: Callback): void { - const aggregateOperation = new AggregateOperation(this.namespace, this.pipeline, { - ...this.cursorOptions, - ...this.options, - session - }); - - executeOperation>( - session.client, - aggregateOperation, - (err, response) => { - if (err || response == null) { - return callback(err); - } - - const server = aggregateOperation.server; - if ( - this.startAtOperationTime == null && - this.resumeAfter == null && - this.startAfter == null && - maxWireVersion(server) >= 7 - ) { - this.startAtOperationTime = response.operationTime; - } - - this._processBatch(response); - - this.emit(ChangeStream.INIT, response); - this.emit(ChangeStream.RESPONSE); - - // TODO: NODE-2882 - callback(undefined, { server, session, response }); - } - ); - } - - override _getMore(batchSize: number, callback: Callback): void { - super._getMore(batchSize, (err, response) => { - if (err) { - return callback(err); - } - - this._processBatch(response as TODO_NODE_3286 as ChangeStreamAggregateRawResult); - - this.emit(ChangeStream.MORE, response); - this.emit(ChangeStream.RESPONSE); - callback(err, response); - }); - } } diff --git a/food-ordering-app/server/node_modules/mongodb/src/cmap/auth/auth_provider.ts b/food-ordering-app/server/node_modules/mongodb/src/cmap/auth/auth_provider.ts index 2a38abe9b..45c94965f 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/cmap/auth/auth_provider.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/cmap/auth/auth_provider.ts @@ -1,20 +1,24 @@ import type { Document } from '../../bson'; import { MongoRuntimeError } from '../../error'; -import type { Callback, ClientMetadataOptions } from '../../utils'; +import type { Callback } from '../../utils'; import type { HandshakeDocument } from '../connect'; import type { Connection, ConnectionOptions } from '../connection'; +import type { ClientMetadataOptions } from '../handshake/client_metadata'; import type { MongoCredentials } from './mongo_credentials'; export type AuthContextOptions = ConnectionOptions & ClientMetadataOptions; -/** Context used during authentication */ +/** + * Context used during authentication + * @internal + */ export class AuthContext { /** The connection to authenticate */ connection: Connection; /** The credentials to use for authentication */ credentials?: MongoCredentials; /** The options passed to the `connect` method */ - options: AuthContextOptions; + options: ConnectionOptions; /** A response from an initial auth attempt, only some mechanisms use this (e.g, SCRAM) */ response?: Document; @@ -24,7 +28,7 @@ export class AuthContext { constructor( connection: Connection, credentials: MongoCredentials | undefined, - options: AuthContextOptions + options: ConnectionOptions ) { this.connection = connection; this.credentials = credentials; diff --git a/food-ordering-app/server/node_modules/mongodb/src/cmap/auth/gssapi.ts b/food-ordering-app/server/node_modules/mongodb/src/cmap/auth/gssapi.ts index 689d6e951..4c343f80b 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/cmap/auth/gssapi.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/cmap/auth/gssapi.ts @@ -23,7 +23,7 @@ export const GSSAPICanonicalizationValue = Object.freeze({ /** @public */ export type GSSAPICanonicalizationValue = - typeof GSSAPICanonicalizationValue[keyof typeof GSSAPICanonicalizationValue]; + (typeof GSSAPICanonicalizationValue)[keyof typeof GSSAPICanonicalizationValue]; type MechanismProperties = { /** @deprecated use `CANONICALIZE_HOST_NAME` instead */ diff --git a/food-ordering-app/server/node_modules/mongodb/src/cmap/auth/mongodb_aws.ts b/food-ordering-app/server/node_modules/mongodb/src/cmap/auth/mongodb_aws.ts index 3136dc879..fc7f8bef8 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/cmap/auth/mongodb_aws.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/cmap/auth/mongodb_aws.ts @@ -4,7 +4,7 @@ import * as url from 'url'; import type { Binary, BSONSerializeOptions } from '../../bson'; import * as BSON from '../../bson'; -import { aws4 } from '../../deps'; +import { aws4, getAwsCredentialProvider } from '../../deps'; import { MongoAWSError, MongoCompatibilityError, @@ -167,6 +167,14 @@ interface AWSTempCredentials { Expiration?: Date; } +/* @internal */ +export interface AWSCredentials { + accessKeyId?: string; + secretAccessKey?: string; + sessionToken?: string; + expiration?: Date; +} + function makeTempCredentials(credentials: MongoCredentials, callback: Callback) { function done(creds: AWSTempCredentials) { if (!creds.AccessKeyId || !creds.SecretAccessKey || !creds.Token) { @@ -190,50 +198,81 @@ function makeTempCredentials(credentials: MongoCredentials, callback: Callback { - if (err) return callback(err); - done(res); - } - ); - - return; - } - - // Otherwise assume we are on an EC2 instance - - // get a token - request( - `${AWS_EC2_URI}/latest/api/token`, - { method: 'PUT', json: false, headers: { 'X-aws-ec2-metadata-token-ttl-seconds': 30 } }, - (err, token) => { - if (err) return callback(err); + const credentialProvider = getAwsCredentialProvider(); - // get role name + // Check if the AWS credential provider from the SDK is present. If not, + // use the old method. + if ('kModuleError' in credentialProvider) { + // If the environment variable AWS_CONTAINER_CREDENTIALS_RELATIVE_URI + // is set then drivers MUST assume that it was set by an AWS ECS agent + if (process.env.AWS_CONTAINER_CREDENTIALS_RELATIVE_URI) { request( - `${AWS_EC2_URI}/${AWS_EC2_PATH}`, - { json: false, headers: { 'X-aws-ec2-metadata-token': token } }, - (err, roleName) => { + `${AWS_RELATIVE_URI}${process.env.AWS_CONTAINER_CREDENTIALS_RELATIVE_URI}`, + undefined, + (err, res) => { if (err) return callback(err); - - // get temp credentials - request( - `${AWS_EC2_URI}/${AWS_EC2_PATH}/${roleName}`, - { headers: { 'X-aws-ec2-metadata-token': token } }, - (err, creds) => { - if (err) return callback(err); - done(creds); - } - ); + done(res); } ); + + return; } - ); + + // Otherwise assume we are on an EC2 instance + + // get a token + request( + `${AWS_EC2_URI}/latest/api/token`, + { method: 'PUT', json: false, headers: { 'X-aws-ec2-metadata-token-ttl-seconds': 30 } }, + (err, token) => { + if (err) return callback(err); + + // get role name + request( + `${AWS_EC2_URI}/${AWS_EC2_PATH}`, + { json: false, headers: { 'X-aws-ec2-metadata-token': token } }, + (err, roleName) => { + if (err) return callback(err); + + // get temp credentials + request( + `${AWS_EC2_URI}/${AWS_EC2_PATH}/${roleName}`, + { headers: { 'X-aws-ec2-metadata-token': token } }, + (err, creds) => { + if (err) return callback(err); + done(creds); + } + ); + } + ); + } + ); + } else { + /* + * Creates a credential provider that will attempt to find credentials from the + * following sources (listed in order of precedence): + * + * - Environment variables exposed via process.env + * - SSO credentials from token cache + * - Web identity token credentials + * - Shared credentials and config ini files + * - The EC2/ECS Instance Metadata Service + */ + const { fromNodeProviderChain } = credentialProvider; + const provider = fromNodeProviderChain(); + provider() + .then((creds: AWSCredentials) => { + done({ + AccessKeyId: creds.accessKeyId, + SecretAccessKey: creds.secretAccessKey, + Token: creds.sessionToken, + Expiration: creds.expiration + }); + }) + .catch((error: Error) => { + callback(new MongoAWSError(error.message)); + }); + } } function deriveRegion(host: string) { diff --git a/food-ordering-app/server/node_modules/mongodb/src/cmap/auth/providers.ts b/food-ordering-app/server/node_modules/mongodb/src/cmap/auth/providers.ts index 9c7b1f4b8..1e4d6f18c 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/cmap/auth/providers.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/cmap/auth/providers.ts @@ -11,7 +11,7 @@ export const AuthMechanism = Object.freeze({ } as const); /** @public */ -export type AuthMechanism = typeof AuthMechanism[keyof typeof AuthMechanism]; +export type AuthMechanism = (typeof AuthMechanism)[keyof typeof AuthMechanism]; /** @internal */ export const AUTH_MECHS_AUTH_SRC_EXTERNAL = new Set([ diff --git a/food-ordering-app/server/node_modules/mongodb/src/cmap/auth/scram.ts b/food-ordering-app/server/node_modules/mongodb/src/cmap/auth/scram.ts index 7a339151f..d17abbac4 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/cmap/auth/scram.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/cmap/auth/scram.ts @@ -30,7 +30,10 @@ class ScramSHA extends AuthProvider { if (!credentials) { return callback(new MongoMissingCredentialsError('AuthContext must provide credentials.')); } - if (cryptoMethod === 'sha256' && saslprep == null) { + if ( + cryptoMethod === 'sha256' && + ('kModuleError' in saslprep || typeof saslprep !== 'function') + ) { emitWarning('Warning: no saslprep library specified. Passwords will not be sanitized'); } @@ -152,7 +155,8 @@ function continueScramConversation( let processedPassword; if (cryptoMethod === 'sha256') { - processedPassword = 'kModuleError' in saslprep ? password : saslprep(password); + processedPassword = + 'kModuleError' in saslprep || typeof saslprep !== 'function' ? password : saslprep(password); } else { try { processedPassword = passwordDigest(username, password); diff --git a/food-ordering-app/server/node_modules/mongodb/src/cmap/command_monitoring_events.ts b/food-ordering-app/server/node_modules/mongodb/src/cmap/command_monitoring_events.ts index dcf05632e..40c3419a1 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/cmap/command_monitoring_events.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/cmap/command_monitoring_events.ts @@ -1,7 +1,7 @@ import type { Document, ObjectId } from '../bson'; import { LEGACY_HELLO_COMMAND, LEGACY_HELLO_COMMAND_CAMEL_CASE } from '../constants'; import { calculateDurationInMs, deepCopy } from '../utils'; -import { GetMore, KillCursor, Msg, WriteProtocolMessageType } from './commands'; +import { Msg, WriteProtocolMessageType } from './commands'; import type { Connection } from './connection'; /** @@ -206,21 +206,6 @@ const OP_QUERY_KEYS = [ /** Extract the actual command from the query, possibly up-converting if it's a legacy format */ function extractCommand(command: WriteProtocolMessageType): Document { - if (command instanceof GetMore) { - return { - getMore: deepCopy(command.cursorId), - collection: collectionName(command), - batchSize: command.numberToReturn - }; - } - - if (command instanceof KillCursor) { - return { - killCursors: collectionName(command), - cursors: deepCopy(command.cursorIds) - }; - } - if (command instanceof Msg) { return deepCopy(command.command); } @@ -248,9 +233,8 @@ function extractCommand(command: WriteProtocolMessageType): Document { }); OP_QUERY_KEYS.forEach(key => { - const opKey = key as typeof OP_QUERY_KEYS[number]; - if (command[opKey]) { - result[opKey] = command[opKey]; + if (command[key]) { + result[key] = command[key]; } }); @@ -281,28 +265,10 @@ function extractCommand(command: WriteProtocolMessageType): Document { } function extractReply(command: WriteProtocolMessageType, reply?: Document) { - if (command instanceof KillCursor) { - return { - ok: 1, - cursorsUnknown: command.cursorIds - }; - } - if (!reply) { return reply; } - if (command instanceof GetMore) { - return { - ok: 1, - cursor: { - id: deepCopy(reply.cursorId), - ns: namespace(command), - nextBatch: deepCopy(reply.documents) - } - }; - } - if (command instanceof Msg) { return deepCopy(reply.result ? reply.result : reply); } diff --git a/food-ordering-app/server/node_modules/mongodb/src/cmap/commands.ts b/food-ordering-app/server/node_modules/mongodb/src/cmap/commands.ts index a49d18431..827fba189 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/cmap/commands.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/cmap/commands.ts @@ -5,7 +5,7 @@ import { ReadPreference } from '../read_preference'; import type { ClientSession } from '../sessions'; import { databaseNamespace } from '../utils'; import type { CommandOptions } from './connection'; -import { OP_GETMORE, OP_KILL_CURSORS, OP_MSG, OP_QUERY } from './wire_protocol/constants'; +import { OP_MSG, OP_QUERY } from './wire_protocol/constants'; // Incrementing request id let _requestId = 0; @@ -26,7 +26,7 @@ const SHARD_CONFIG_STALE = 4; const AWAIT_CAPABLE = 8; /** @internal */ -export type WriteProtocolMessageType = Query | Msg | GetMore | KillCursor; +export type WriteProtocolMessageType = Query | Msg; /** @internal */ export interface OpQueryOptions extends CommandOptions { @@ -270,194 +270,6 @@ export class Query { } } -/** @internal */ -export interface OpGetMoreOptions { - numberToReturn?: number; -} - -/************************************************************** - * GETMORE - **************************************************************/ -/** @internal */ -export class GetMore { - numberToReturn: number; - requestId: number; - ns: string; - cursorId: Long; - - constructor(ns: string, cursorId: Long, opts: OpGetMoreOptions = {}) { - this.numberToReturn = opts.numberToReturn || 0; - this.requestId = _requestId++; - this.ns = ns; - this.cursorId = cursorId; - } - - // Uses a single allocated buffer for the process, avoiding multiple memory allocations - toBin(): Buffer[] { - const length = 4 + Buffer.byteLength(this.ns) + 1 + 4 + 8 + 4 * 4; - // Create command buffer - let index = 0; - // Allocate buffer - const _buffer = Buffer.alloc(length); - - // Write header information - // index = write32bit(index, _buffer, length); - _buffer[index + 3] = (length >> 24) & 0xff; - _buffer[index + 2] = (length >> 16) & 0xff; - _buffer[index + 1] = (length >> 8) & 0xff; - _buffer[index] = length & 0xff; - index = index + 4; - - // index = write32bit(index, _buffer, requestId); - _buffer[index + 3] = (this.requestId >> 24) & 0xff; - _buffer[index + 2] = (this.requestId >> 16) & 0xff; - _buffer[index + 1] = (this.requestId >> 8) & 0xff; - _buffer[index] = this.requestId & 0xff; - index = index + 4; - - // index = write32bit(index, _buffer, 0); - _buffer[index + 3] = (0 >> 24) & 0xff; - _buffer[index + 2] = (0 >> 16) & 0xff; - _buffer[index + 1] = (0 >> 8) & 0xff; - _buffer[index] = 0 & 0xff; - index = index + 4; - - // index = write32bit(index, _buffer, OP_GETMORE); - _buffer[index + 3] = (OP_GETMORE >> 24) & 0xff; - _buffer[index + 2] = (OP_GETMORE >> 16) & 0xff; - _buffer[index + 1] = (OP_GETMORE >> 8) & 0xff; - _buffer[index] = OP_GETMORE & 0xff; - index = index + 4; - - // index = write32bit(index, _buffer, 0); - _buffer[index + 3] = (0 >> 24) & 0xff; - _buffer[index + 2] = (0 >> 16) & 0xff; - _buffer[index + 1] = (0 >> 8) & 0xff; - _buffer[index] = 0 & 0xff; - index = index + 4; - - // Write collection name - index = index + _buffer.write(this.ns, index, 'utf8') + 1; - _buffer[index - 1] = 0; - - // Write batch size - // index = write32bit(index, _buffer, numberToReturn); - _buffer[index + 3] = (this.numberToReturn >> 24) & 0xff; - _buffer[index + 2] = (this.numberToReturn >> 16) & 0xff; - _buffer[index + 1] = (this.numberToReturn >> 8) & 0xff; - _buffer[index] = this.numberToReturn & 0xff; - index = index + 4; - - // Write cursor id - // index = write32bit(index, _buffer, cursorId.getLowBits()); - _buffer[index + 3] = (this.cursorId.getLowBits() >> 24) & 0xff; - _buffer[index + 2] = (this.cursorId.getLowBits() >> 16) & 0xff; - _buffer[index + 1] = (this.cursorId.getLowBits() >> 8) & 0xff; - _buffer[index] = this.cursorId.getLowBits() & 0xff; - index = index + 4; - - // index = write32bit(index, _buffer, cursorId.getHighBits()); - _buffer[index + 3] = (this.cursorId.getHighBits() >> 24) & 0xff; - _buffer[index + 2] = (this.cursorId.getHighBits() >> 16) & 0xff; - _buffer[index + 1] = (this.cursorId.getHighBits() >> 8) & 0xff; - _buffer[index] = this.cursorId.getHighBits() & 0xff; - index = index + 4; - - // Return buffer - return [_buffer]; - } -} - -/************************************************************** - * KILLCURSOR - **************************************************************/ -/** @internal */ -export class KillCursor { - ns: string; - requestId: number; - cursorIds: Long[]; - - constructor(ns: string, cursorIds: Long[]) { - this.ns = ns; - this.requestId = _requestId++; - this.cursorIds = cursorIds; - } - - // Uses a single allocated buffer for the process, avoiding multiple memory allocations - toBin(): Buffer[] { - const length = 4 + 4 + 4 * 4 + this.cursorIds.length * 8; - - // Create command buffer - let index = 0; - const _buffer = Buffer.alloc(length); - - // Write header information - // index = write32bit(index, _buffer, length); - _buffer[index + 3] = (length >> 24) & 0xff; - _buffer[index + 2] = (length >> 16) & 0xff; - _buffer[index + 1] = (length >> 8) & 0xff; - _buffer[index] = length & 0xff; - index = index + 4; - - // index = write32bit(index, _buffer, requestId); - _buffer[index + 3] = (this.requestId >> 24) & 0xff; - _buffer[index + 2] = (this.requestId >> 16) & 0xff; - _buffer[index + 1] = (this.requestId >> 8) & 0xff; - _buffer[index] = this.requestId & 0xff; - index = index + 4; - - // index = write32bit(index, _buffer, 0); - _buffer[index + 3] = (0 >> 24) & 0xff; - _buffer[index + 2] = (0 >> 16) & 0xff; - _buffer[index + 1] = (0 >> 8) & 0xff; - _buffer[index] = 0 & 0xff; - index = index + 4; - - // index = write32bit(index, _buffer, OP_KILL_CURSORS); - _buffer[index + 3] = (OP_KILL_CURSORS >> 24) & 0xff; - _buffer[index + 2] = (OP_KILL_CURSORS >> 16) & 0xff; - _buffer[index + 1] = (OP_KILL_CURSORS >> 8) & 0xff; - _buffer[index] = OP_KILL_CURSORS & 0xff; - index = index + 4; - - // index = write32bit(index, _buffer, 0); - _buffer[index + 3] = (0 >> 24) & 0xff; - _buffer[index + 2] = (0 >> 16) & 0xff; - _buffer[index + 1] = (0 >> 8) & 0xff; - _buffer[index] = 0 & 0xff; - index = index + 4; - - // Write batch size - // index = write32bit(index, _buffer, this.cursorIds.length); - _buffer[index + 3] = (this.cursorIds.length >> 24) & 0xff; - _buffer[index + 2] = (this.cursorIds.length >> 16) & 0xff; - _buffer[index + 1] = (this.cursorIds.length >> 8) & 0xff; - _buffer[index] = this.cursorIds.length & 0xff; - index = index + 4; - - // Write all the cursor ids into the array - for (let i = 0; i < this.cursorIds.length; i++) { - // Write cursor id - // index = write32bit(index, _buffer, cursorIds[i].getLowBits()); - _buffer[index + 3] = (this.cursorIds[i].getLowBits() >> 24) & 0xff; - _buffer[index + 2] = (this.cursorIds[i].getLowBits() >> 16) & 0xff; - _buffer[index + 1] = (this.cursorIds[i].getLowBits() >> 8) & 0xff; - _buffer[index] = this.cursorIds[i].getLowBits() & 0xff; - index = index + 4; - - // index = write32bit(index, _buffer, cursorIds[i].getHighBits()); - _buffer[index + 3] = (this.cursorIds[i].getHighBits() >> 24) & 0xff; - _buffer[index + 2] = (this.cursorIds[i].getHighBits() >> 16) & 0xff; - _buffer[index + 1] = (this.cursorIds[i].getHighBits() >> 8) & 0xff; - _buffer[index] = this.cursorIds[i].getHighBits() & 0xff; - index = index + 4; - } - - // Return buffer - return [_buffer]; - } -} - /** @internal */ export interface MessageHeader { length: number; @@ -469,7 +281,6 @@ export interface MessageHeader { /** @internal */ export interface OpResponseOptions extends BSONSerializeOptions { - raw?: boolean; documentsReturnedIn?: string | null; } diff --git a/food-ordering-app/server/node_modules/mongodb/src/cmap/connect.ts b/food-ordering-app/server/node_modules/mongodb/src/cmap/connect.ts index 21556324a..645c9a3c5 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/cmap/connect.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/cmap/connect.ts @@ -8,7 +8,6 @@ import type { Document } from '../bson'; import { Int32 } from '../bson'; import { LEGACY_HELLO_COMMAND } from '../constants'; import { - AnyError, MongoCompatibilityError, MongoError, MongoErrorLabel, @@ -19,7 +18,7 @@ import { MongoServerError, needsRetryableWriteLabel } from '../error'; -import { Callback, ClientMetadata, HostAddress, makeClientMetadata, ns } from '../utils'; +import { Callback, HostAddress, ns } from '../utils'; import { AuthContext, AuthProvider } from './auth/auth_provider'; import { GSSAPI } from './auth/gssapi'; import { MongoCR } from './auth/mongocr'; @@ -29,6 +28,7 @@ import { AuthMechanism } from './auth/providers'; import { ScramSHA1, ScramSHA256 } from './auth/scram'; import { X509 } from './auth/x509'; import { Connection, ConnectionOptions, CryptoConnection } from './connection'; +import type { ClientMetadata } from './handshake/client_metadata'; import { MAX_SUPPORTED_SERVER_VERSION, MAX_SUPPORTED_WIRE_VERSION, @@ -215,10 +215,18 @@ export interface HandshakeDocument extends Document { client: ClientMetadata; compression: string[]; saslSupportedMechs?: string; - loadBalanced: boolean; + loadBalanced?: boolean; } -function prepareHandshakeDocument(authContext: AuthContext, callback: Callback) { +/** + * @internal + * + * This function is only exposed for testing purposes. + */ +export function prepareHandshakeDocument( + authContext: AuthContext, + callback: Callback +) { const options = authContext.options; const compressors = options.compressors ? options.compressors : []; const { serverApi } = authContext.connection; @@ -226,11 +234,14 @@ function prepareHandshakeDocument(authContext: AuthContext, callback: Callback) { @@ -418,7 +429,7 @@ function makeConnection(options: MakeConnectionOptions, _callback: Callback { - if (err) { - return callback(connectionFailureError('error', err)); - } - + proxy: { + // host and port are ignored because we pass existing_socket + host: 'iLoveJavaScript', + port: 0, + type: 5, + userId: options.proxyUsername || undefined, + password: options.proxyPassword || undefined + } + }).then( + ({ socket }) => { // Finally, now treat the resulting duplex stream as the // socket over which we send and receive wire protocol messages: makeConnection( { ...options, - existingSocket: info.socket, + existingSocket: socket, proxyHost: undefined }, callback ); - } + }, + error => callback(connectionFailureError('error', error)) ); } ); diff --git a/food-ordering-app/server/node_modules/mongodb/src/cmap/connection.ts b/food-ordering-app/server/node_modules/mongodb/src/cmap/connection.ts index 4140cad63..e18bec165 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/cmap/connection.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/cmap/connection.ts @@ -1,6 +1,6 @@ -import { setTimeout } from 'timers'; +import { clearTimeout, setTimeout } from 'timers'; -import { BSONSerializeOptions, Document, Long, ObjectId, pluckBSONSerializeOptions } from '../bson'; +import type { BSONSerializeOptions, Document, ObjectId } from '../bson'; import { CLOSE, CLUSTER_TIME_RECEIVED, @@ -23,12 +23,11 @@ import { } from '../error'; import type { ServerApi, SupportedNodeConnectionOptions } from '../mongo_client'; import { CancellationToken, TypedEventEmitter } from '../mongo_types'; -import type { ReadPreference, ReadPreferenceLike } from '../read_preference'; +import type { ReadPreferenceLike } from '../read_preference'; import { applySession, ClientSession, updateSessionFromResponse } from '../sessions'; import { calculateDurationInMs, Callback, - ClientMetadata, HostAddress, maxWireVersion, MongoDBNamespace, @@ -42,19 +41,12 @@ import { CommandStartedEvent, CommandSucceededEvent } from './command_monitoring_events'; -import { - BinMsg, - GetMore, - KillCursor, - Msg, - Query, - Response, - WriteProtocolMessageType -} from './commands'; +import { BinMsg, Msg, Query, Response, WriteProtocolMessageType } from './commands'; import type { Stream } from './connect'; +import type { ClientMetadata } from './handshake/client_metadata'; import { MessageStream, OperationDescription } from './message_stream'; import { StreamDescription, StreamDescriptionOptions } from './stream_description'; -import { applyCommonQueryOptions, getReadPreference, isSharded } from './wire_protocol/shared'; +import { getReadPreference, isSharded } from './wire_protocol/shared'; /** @internal */ const kStream = Symbol('stream'); @@ -75,26 +67,9 @@ const kHello = Symbol('hello'); /** @internal */ const kAutoEncrypter = Symbol('autoEncrypter'); /** @internal */ -const kFullResult = Symbol('fullResult'); -/** @internal */ const kDelayedTimeoutId = Symbol('delayedTimeoutId'); -/** @internal */ -export interface QueryOptions extends BSONSerializeOptions { - readPreference: ReadPreference; - documentsReturnedIn?: string; - batchSize?: number; - limit?: number; - skip?: number; - projection?: Document; - tailable?: boolean; - awaitData?: boolean; - noCursorTimeout?: boolean; - /** @deprecated use `noCursorTimeout` instead */ - timeout?: boolean; - partial?: boolean; - oplogReplay?: boolean; -} +const INVALID_QUEUE_SIZE = 'Connection internal queue contains more than 1 operation description'; /** @internal */ export interface CommandOptions extends BSONSerializeOptions { @@ -102,9 +77,7 @@ export interface CommandOptions extends BSONSerializeOptions { secondaryOk?: boolean; /** Specify read preference if command supports it */ readPreference?: ReadPreferenceLike; - raw?: boolean; monitoring?: boolean; - [kFullResult]?: boolean; socketTimeoutMS?: number; /** Session to use for the operation */ session?: ClientSession; @@ -173,7 +146,7 @@ export interface ConnectionOptions metadata: ClientMetadata; } -/** @public */ +/** @internal */ export interface DestroyOptions { /** Force the destruction. */ force?: boolean; @@ -397,9 +370,33 @@ export class Connection extends TypedEventEmitter { this[kDelayedTimeoutId] = null; } + const socketTimeoutMS = this[kStream].timeout ?? 0; + this[kStream].setTimeout(0); + // always emit the message, in case we are streaming this.emit('message', message); - const operationDescription = this[kQueue].get(message.responseTo); + let operationDescription = this[kQueue].get(message.responseTo); + + if (!operationDescription && this.isMonitoringConnection) { + // This is how we recover when the initial hello's requestId is not + // the responseTo when hello responses have been skipped: + + // First check if the map is of invalid size + if (this[kQueue].size > 1) { + this.onError(new MongoRuntimeError(INVALID_QUEUE_SIZE)); + } else { + // Get the first orphaned operation description. + const entry = this[kQueue].entries().next(); + if (entry.value != null) { + const [requestId, orphaned]: [number, OperationDescription] = entry.value; + // If the orphaned operation description exists then set it. + operationDescription = orphaned; + // Remove the entry with the bad request id from the queue. + this[kQueue].delete(requestId); + } + } + } + if (!operationDescription) { return; } @@ -411,10 +408,12 @@ export class Connection extends TypedEventEmitter { // making the `responseTo` change on each response this[kQueue].delete(message.responseTo); if ('moreToCome' in message && message.moreToCome) { - // requeue the callback for next synthetic request + // If the operation description check above does find an orphaned + // description and sets the operationDescription then this line will put one + // back in the queue with the correct requestId and will resolve not being able + // to find the next one via the responseTo of the next streaming hello. this[kQueue].set(message.requestId, operationDescription); - } else if (operationDescription.socketTimeoutOverride) { - this[kStream].setTimeout(this.socketTimeoutMS); + this[kStream].setTimeout(socketTimeoutMS); } try { @@ -459,7 +458,7 @@ export class Connection extends TypedEventEmitter { } } - callback(undefined, operationDescription.fullResult ? message : message.documents[0]); + callback(undefined, message.documents[0]); } destroy(options?: DestroyOptions, callback?: Callback): void { @@ -505,11 +504,6 @@ export class Connection extends TypedEventEmitter { options: CommandOptions | undefined, callback: Callback ): void { - if (!(ns instanceof MongoDBNamespace)) { - // TODO(NODE-3483): Replace this with a MongoCommandError - throw new MongoRuntimeError('Must provide a MongoDBNamespace instance'); - } - const readPreference = getReadPreference(cmd, options); const shouldUseOpMsg = supportsOpMsg(this); const session = options?.session; @@ -533,7 +527,7 @@ export class Connection extends TypedEventEmitter { clusterTime = session.clusterTime; } - const err = applySession(session, finalCmd, options as CommandOptions); + const err = applySession(session, finalCmd, options); if (err) { return callback(err); } @@ -574,117 +568,6 @@ export class Connection extends TypedEventEmitter { callback(err); } } - - getMore( - ns: MongoDBNamespace, - cursorId: Long, - options: GetMoreOptions, - callback: Callback - ): void { - const fullResult = !!options[kFullResult]; - const wireVersion = maxWireVersion(this); - if (!cursorId) { - // TODO(NODE-3483): Replace this with a MongoCommandError - callback(new MongoRuntimeError('Invalid internal cursor state, no known cursor id')); - return; - } - - if (wireVersion < 4) { - const getMoreOp = new GetMore(ns.toString(), cursorId, { numberToReturn: options.batchSize }); - const queryOptions = applyCommonQueryOptions( - {}, - Object.assign(options, { ...pluckBSONSerializeOptions(options) }) - ); - - queryOptions[kFullResult] = true; - queryOptions.command = true; - write(this, getMoreOp, queryOptions, (err, response) => { - if (fullResult) return callback(err, response); - if (err) return callback(err); - callback(undefined, { cursor: { id: response.cursorId, nextBatch: response.documents } }); - }); - - return; - } - - const getMoreCmd: Document = { - getMore: cursorId, - collection: ns.collection - }; - - if (typeof options.batchSize === 'number') { - getMoreCmd.batchSize = Math.abs(options.batchSize); - } - - if (typeof options.maxAwaitTimeMS === 'number') { - getMoreCmd.maxTimeMS = options.maxAwaitTimeMS; - } - // we check for undefined specifically here to allow falsy values - // eslint-disable-next-line no-restricted-syntax - if (options.comment !== undefined) { - getMoreCmd.comment = options.comment; - } - - const commandOptions = Object.assign( - { - returnFieldSelector: null, - documentsReturnedIn: 'nextBatch' - }, - options - ); - - this.command(ns, getMoreCmd, commandOptions, callback); - } - - killCursors( - ns: MongoDBNamespace, - cursorIds: Long[], - options: CommandOptions, - callback: Callback - ): void { - if (!cursorIds || !Array.isArray(cursorIds)) { - // TODO(NODE-3483): Replace this with a MongoCommandError - throw new MongoRuntimeError(`Invalid list of cursor ids provided: ${cursorIds}`); - } - - if (maxWireVersion(this) < 4) { - try { - write( - this, - new KillCursor(ns.toString(), cursorIds), - { noResponse: true, ...options }, - callback - ); - } catch (err) { - callback(err); - } - - return; - } - - this.command( - ns, - { killCursors: ns.collection, cursors: cursorIds }, - { [kFullResult]: true, ...options }, - (err, response) => { - if (err || !response) return callback(err); - if (response.cursorNotFound) { - return callback(new MongoNetworkError('cursor killed or timed out'), null); - } - - if (!Array.isArray(response.documents) || response.documents.length === 0) { - return callback( - // TODO(NODE-3483) - new MongoRuntimeError( - `invalid killCursors result returned for cursor id ${cursorIds[0]}` - ) - ); - } - - callback(undefined, response.documents[0]); - } - ); - } } /** @internal */ @@ -722,12 +605,33 @@ export class CryptoConnection extends Connection { return; } + // Save sort or indexKeys based on the command being run + // the encrypt API serializes our JS objects to BSON to pass to the native code layer + // and then deserializes the encrypted result, the protocol level components + // of the command (ex. sort) are then converted to JS objects potentially losing + // import key order information. These fields are never encrypted so we can save the values + // from before the encryption and replace them after encryption has been performed + const sort: Map | null = cmd.find || cmd.findAndModify ? cmd.sort : null; + const indexKeys: Map[] | null = cmd.createIndexes + ? cmd.indexes.map((index: { key: Map }) => index.key) + : null; + autoEncrypter.encrypt(ns.toString(), cmd, options, (err, encrypted) => { if (err || encrypted == null) { callback(err, null); return; } + // Replace the saved values + if (sort != null && (cmd.find || cmd.findAndModify)) { + encrypted.sort = sort; + } + if (indexKeys != null && cmd.createIndexes) { + for (const [offset, index] of indexKeys.entries()) { + encrypted.indexes[offset].key = index; + } + } + super.command(ns, encrypted, options, (err, response) => { if (err || response == null) { callback(err, response); @@ -762,8 +666,9 @@ function streamIdentifier(stream: Stream, options: ConnectionOptions): string { return options.hostAddress.toString(); } - if (typeof stream.address === 'function') { - return `${stream.remoteAddress}:${stream.remotePort}`; + const { remoteAddress, remotePort } = stream; + if (typeof remoteAddress === 'string' && typeof remotePort === 'number') { + return HostAddress.fromHostPort(remoteAddress, remotePort).toString(); } return uuidV4().toString('hex'); @@ -775,16 +680,11 @@ function write( options: CommandOptions, callback: Callback ) { - if (typeof options === 'function') { - callback = options; - } - options = options ?? {}; const operationDescription: OperationDescription = { requestId: command.requestId, cb: callback, session: options.session, - fullResult: !!options[kFullResult], noResponse: typeof options.noResponse === 'boolean' ? options.noResponse : false, documentsReturnedIn: options.documentsReturnedIn, command: !!options.command, @@ -809,8 +709,9 @@ function write( } if (typeof options.socketTimeoutMS === 'number') { - operationDescription.socketTimeoutOverride = true; conn[kStream].setTimeout(options.socketTimeoutMS); + } else if (conn.socketTimeoutMS !== 0) { + conn[kStream].setTimeout(conn.socketTimeoutMS); } // if command monitoring is enabled we need to modify the callback here diff --git a/food-ordering-app/server/node_modules/mongodb/src/cmap/connection_pool.ts b/food-ordering-app/server/node_modules/mongodb/src/cmap/connection_pool.ts index e8888ccc5..dd751a4e0 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/cmap/connection_pool.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/cmap/connection_pool.ts @@ -1,5 +1,4 @@ -import Denque = require('denque'); -import { setTimeout } from 'timers'; +import { clearTimeout, setTimeout } from 'timers'; import type { ObjectId } from '../bson'; import { @@ -13,12 +12,20 @@ import { CONNECTION_POOL_CLEARED, CONNECTION_POOL_CLOSED, CONNECTION_POOL_CREATED, + CONNECTION_POOL_READY, CONNECTION_READY } from '../constants'; -import { MongoError, MongoInvalidArgumentError, MongoRuntimeError } from '../error'; +import { + MongoError, + MongoInvalidArgumentError, + MongoNetworkError, + MongoRuntimeError, + MongoServerError +} from '../error'; import { Logger } from '../logger'; import { CancellationToken, TypedEventEmitter } from '../mongo_types'; -import { Callback, eachAsync, makeCounter } from '../utils'; +import type { Server } from '../sdam/server'; +import { Callback, eachAsync, List, makeCounter } from '../utils'; import { connect } from './connect'; import { Connection, ConnectionEvents, ConnectionOptions } from './connection'; import { @@ -31,11 +38,19 @@ import { ConnectionPoolClearedEvent, ConnectionPoolClosedEvent, ConnectionPoolCreatedEvent, + ConnectionPoolReadyEvent, ConnectionReadyEvent } from './connection_pool_events'; -import { PoolClosedError, WaitQueueTimeoutError } from './errors'; +import { + PoolClearedError, + PoolClearedOnNetworkError, + PoolClosedError, + WaitQueueTimeoutError +} from './errors'; import { ConnectionPoolMetrics } from './metrics'; +/** @internal */ +const kServer = Symbol('server'); /** @internal */ const kLogger = Symbol('logger'); /** @internal */ @@ -62,6 +77,8 @@ const kCancelled = Symbol('cancelled'); const kMetrics = Symbol('metrics'); /** @internal */ const kProcessingWaitQueue = Symbol('processingWaitQueue'); +/** @internal */ +const kPoolState = Symbol('poolState'); /** @public */ export interface ConnectionPoolOptions extends Omit { @@ -77,6 +94,8 @@ export interface ConnectionPoolOptions extends Omit { - closed: boolean; options: Readonly; - /** @internal */ + [kPoolState]: (typeof PoolState)[keyof typeof PoolState]; + [kServer]: Server; [kLogger]: Logger; - /** @internal */ - [kConnections]: Denque; - /** @internal */ + [kConnections]: List; [kPending]: number; - /** @internal */ - [kCheckedOut]: number; - /** @internal */ + [kCheckedOut]: Set; [kMinPoolSizeTimer]?: NodeJS.Timeout; /** * An integer representing the SDAM generation of the pool - * @internal */ [kGeneration]: number; - /** A map of generations to service ids - * @internal + /** + * A map of generations to service ids */ [kServiceGenerations]: Map; - /** @internal */ [kConnectionCounter]: Generator; - /** @internal */ [kCancellationToken]: CancellationToken; - /** @internal */ - [kWaitQueue]: Denque; - /** @internal */ + [kWaitQueue]: List; [kMetrics]: ConnectionPoolMetrics; - /** @internal */ [kProcessingWaitQueue]: boolean; /** @@ -157,6 +174,11 @@ export class ConnectionPool extends TypedEventEmitter { * @event */ static readonly CONNECTION_POOL_CLEARED = CONNECTION_POOL_CLEARED; + /** + * Emitted each time the connection pool is marked ready + * @event + */ + static readonly CONNECTION_POOL_READY = CONNECTION_POOL_READY; /** * Emitted when a connection is created. * @event @@ -193,11 +215,9 @@ export class ConnectionPool extends TypedEventEmitter { */ static readonly CONNECTION_CHECKED_IN = CONNECTION_CHECKED_IN; - /** @internal */ - constructor(options: ConnectionPoolOptions) { + constructor(server: Server, options: ConnectionPoolOptions) { super(); - this.closed = false; this.options = Object.freeze({ ...options, connectionType: Connection, @@ -206,6 +226,7 @@ export class ConnectionPool extends TypedEventEmitter { maxConnecting: options.maxConnecting ?? 2, maxIdleTimeMS: options.maxIdleTimeMS ?? 0, waitQueueTimeoutMS: options.waitQueueTimeoutMS ?? 0, + minPoolSizeCheckFrequencyMS: options.minPoolSizeCheckFrequencyMS ?? 100, autoEncrypter: options.autoEncrypter, metadata: options.metadata }); @@ -216,23 +237,24 @@ export class ConnectionPool extends TypedEventEmitter { ); } + this[kPoolState] = PoolState.paused; + this[kServer] = server; this[kLogger] = new Logger('ConnectionPool'); - this[kConnections] = new Denque(); + this[kConnections] = new List(); this[kPending] = 0; - this[kCheckedOut] = 0; + this[kCheckedOut] = new Set(); this[kMinPoolSizeTimer] = undefined; this[kGeneration] = 0; this[kServiceGenerations] = new Map(); this[kConnectionCounter] = makeCounter(1); this[kCancellationToken] = new CancellationToken(); this[kCancellationToken].setMaxListeners(Infinity); - this[kWaitQueue] = new Denque(); + this[kWaitQueue] = new List(); this[kMetrics] = new ConnectionPoolMetrics(); this[kProcessingWaitQueue] = false; process.nextTick(() => { this.emit(ConnectionPool.CONNECTION_POOL_CREATED, new ConnectionPoolCreatedEvent(this)); - ensureMinPoolSize(this); }); } @@ -241,6 +263,15 @@ export class ConnectionPool extends TypedEventEmitter { return this.options.hostAddress.toString(); } + /** + * Check if the pool has been closed + * + * TODO(NODE-3263): We can remove this property once shell no longer needs it + */ + get closed(): boolean { + return this[kPoolState] === PoolState.closed; + } + /** An integer representing the SDAM generation of the pool */ get generation(): number { return this[kGeneration]; @@ -263,7 +294,7 @@ export class ConnectionPool extends TypedEventEmitter { } get currentCheckedOutCount(): number { - return this[kCheckedOut]; + return this[kCheckedOut].size; } get waitQueueSize(): number { @@ -278,6 +309,21 @@ export class ConnectionPool extends TypedEventEmitter { return this[kServiceGenerations]; } + get serverError() { + return this[kServer].description.error; + } + + /** + * This is exposed ONLY for use in mongosh, to enable + * killing all connections if a user quits the shell with + * operations in progress. + * + * This property may be removed as a part of NODE-3263. + */ + get checkedOutConnections() { + return this[kCheckedOut]; + } + /** * Get the metrics information for the pool when a wait queue timeout occurs. */ @@ -285,6 +331,19 @@ export class ConnectionPool extends TypedEventEmitter { return this[kMetrics].info(this.options.maxPoolSize); } + /** + * Set the pool state to "ready" + */ + ready(): void { + if (this[kPoolState] !== PoolState.paused) { + return; + } + this[kPoolState] = PoolState.ready; + this.emit(ConnectionPool.CONNECTION_POOL_READY, new ConnectionPoolReadyEvent(this)); + clearTimeout(this[kMinPoolSizeTimer]); + this.ensureMinPoolSize(); + } + /** * Check a connection out of this pool. The connection will continue to be tracked, but no reference to it * will be held by the pool. This means that if a connection is checked out it MUST be checked back in or @@ -296,15 +355,6 @@ export class ConnectionPool extends TypedEventEmitter { new ConnectionCheckOutStartedEvent(this) ); - if (this.closed) { - this.emit( - ConnectionPool.CONNECTION_CHECK_OUT_FAILED, - new ConnectionCheckOutFailedEvent(this, 'poolClosed') - ); - callback(new PoolClosedError(this)); - return; - } - const waitQueueMember: WaitQueueMember = { callback }; const waitQueueTimeoutMS = this.options.waitQueueTimeoutMS; if (waitQueueTimeoutMS) { @@ -328,7 +378,7 @@ export class ConnectionPool extends TypedEventEmitter { } this[kWaitQueue].push(waitQueueMember); - process.nextTick(processWaitQueue, this); + process.nextTick(() => this.processWaitQueue()); } /** @@ -337,8 +387,11 @@ export class ConnectionPool extends TypedEventEmitter { * @param connection - The connection to check in */ checkIn(connection: Connection): void { + if (!this[kCheckedOut].has(connection)) { + return; + } const poolClosed = this.closed; - const stale = connectionIsStale(this, connection); + const stale = this.connectionIsStale(connection); const willDestroy = !!(poolClosed || stale || connection.closed); if (!willDestroy) { @@ -346,15 +399,15 @@ export class ConnectionPool extends TypedEventEmitter { this[kConnections].unshift(connection); } - this[kCheckedOut]--; + this[kCheckedOut].delete(connection); this.emit(ConnectionPool.CONNECTION_CHECKED_IN, new ConnectionCheckedInEvent(this, connection)); if (willDestroy) { const reason = connection.closed ? 'error' : poolClosed ? 'poolClosed' : 'stale'; - destroyConnection(this, connection, reason); + this.destroyConnection(connection, reason); } - process.nextTick(processWaitQueue, this); + process.nextTick(() => this.processWaitQueue()); } /** @@ -363,24 +416,69 @@ export class ConnectionPool extends TypedEventEmitter { * Pool reset is handled by incrementing the pool's generation count. Any existing connection of a * previous generation will eventually be pruned during subsequent checkouts. */ - clear(serviceId?: ObjectId): void { - if (this.loadBalanced && serviceId) { + clear(options: { serviceId?: ObjectId; interruptInUseConnections?: boolean } = {}): void { + if (this.closed) { + return; + } + + // handle load balanced case + if (this.loadBalanced) { + const { serviceId } = options; + if (!serviceId) { + throw new MongoRuntimeError( + 'ConnectionPool.clear() called in load balanced mode with no serviceId.' + ); + } const sid = serviceId.toHexString(); const generation = this.serviceGenerations.get(sid); // Only need to worry if the generation exists, since it should // always be there but typescript needs the check. if (generation == null) { - // TODO(NODE-3483) throw new MongoRuntimeError('Service generations are required in load balancer mode.'); } else { // Increment the generation for the service id. this.serviceGenerations.set(sid, generation + 1); } - } else { - this[kGeneration] += 1; + this.emit( + ConnectionPool.CONNECTION_POOL_CLEARED, + new ConnectionPoolClearedEvent(this, { serviceId }) + ); + return; + } + // handle non load-balanced case + const interruptInUseConnections = options.interruptInUseConnections ?? false; + const oldGeneration = this[kGeneration]; + this[kGeneration] += 1; + const alreadyPaused = this[kPoolState] === PoolState.paused; + this[kPoolState] = PoolState.paused; + + this.clearMinPoolSizeTimer(); + if (!alreadyPaused) { + this.emit( + ConnectionPool.CONNECTION_POOL_CLEARED, + new ConnectionPoolClearedEvent(this, { interruptInUseConnections }) + ); + } + + if (interruptInUseConnections) { + process.nextTick(() => this.interruptInUseConnections(oldGeneration)); } - this.emit('connectionPoolCleared', new ConnectionPoolClearedEvent(this, serviceId)); + this.processWaitQueue(); + } + + /** + * Closes all stale in-use connections in the pool with a resumable PoolClearedOnNetworkError. + * + * Only connections where `connection.generation <= minGeneration` are killed. + */ + private interruptInUseConnections(minGeneration: number) { + for (const connection of this[kCheckedOut]) { + if (connection.generation <= minGeneration) { + this.checkIn(connection); + connection.onError(new PoolClearedOnNetworkError(this)); + } + } } /** Close the pool */ @@ -401,33 +499,15 @@ export class ConnectionPool extends TypedEventEmitter { // immediately cancel any in-flight connections this[kCancellationToken].emit('cancel'); - // drain the wait queue - while (this.waitQueueSize) { - const waitQueueMember = this[kWaitQueue].pop(); - if (waitQueueMember) { - if (waitQueueMember.timer) { - clearTimeout(waitQueueMember.timer); - } - if (!waitQueueMember[kCancelled]) { - // TODO(NODE-3483): Replace with MongoConnectionPoolClosedError - waitQueueMember.callback(new MongoRuntimeError('Connection pool closed')); - } - } - } - - // clear the min pool size timer - const minPoolSizeTimer = this[kMinPoolSizeTimer]; - if (minPoolSizeTimer) { - clearTimeout(minPoolSizeTimer); - } - // end the connection counter if (typeof this[kConnectionCounter].return === 'function') { this[kConnectionCounter].return(undefined); } - // mark the pool as closed immediately - this.closed = true; + this[kPoolState] = PoolState.closed; + this.clearMinPoolSizeTimer(); + this.processWaitQueue(); + eachAsync( this[kConnections].toArray(), (conn, cb) => { @@ -496,201 +576,260 @@ export class ConnectionPool extends TypedEventEmitter { }); }); } -} - -function ensureMinPoolSize(pool: ConnectionPool) { - const minPoolSize = pool.options.minPoolSize; - if (pool.closed || minPoolSize === 0) { - return; - } - if ( - pool.totalConnectionCount < minPoolSize && - pool.pendingConnectionCount < pool.options.maxConnecting - ) { - // NOTE: ensureMinPoolSize should not try to get all the pending - // connection permits because that potentially delays the availability of - // the connection to a checkout request - createConnection(pool, (err, connection) => { - pool[kPending]--; - if (!err && connection) { - pool[kConnections].push(connection); - process.nextTick(processWaitQueue, pool); - } - pool[kMinPoolSizeTimer] = setTimeout(() => ensureMinPoolSize(pool), 10); - }); - } else { - pool[kMinPoolSizeTimer] = setTimeout(() => ensureMinPoolSize(pool), 100); + /** Clear the min pool size timer */ + private clearMinPoolSizeTimer(): void { + const minPoolSizeTimer = this[kMinPoolSizeTimer]; + if (minPoolSizeTimer) { + clearTimeout(minPoolSizeTimer); + } } -} -function connectionIsStale(pool: ConnectionPool, connection: Connection) { - const serviceId = connection.serviceId; - if (pool.loadBalanced && serviceId) { - const sid = serviceId.toHexString(); - const generation = pool.serviceGenerations.get(sid); - return connection.generation !== generation; + private destroyConnection(connection: Connection, reason: string) { + this.emit( + ConnectionPool.CONNECTION_CLOSED, + new ConnectionClosedEvent(this, connection, reason) + ); + // destroy the connection + process.nextTick(() => connection.destroy()); } - return connection.generation !== pool[kGeneration]; -} + private connectionIsStale(connection: Connection) { + const serviceId = connection.serviceId; + if (this.loadBalanced && serviceId) { + const sid = serviceId.toHexString(); + const generation = this.serviceGenerations.get(sid); + return connection.generation !== generation; + } -function connectionIsIdle(pool: ConnectionPool, connection: Connection) { - return !!(pool.options.maxIdleTimeMS && connection.idleTime > pool.options.maxIdleTimeMS); -} + return connection.generation !== this[kGeneration]; + } -function createConnection(pool: ConnectionPool, callback: Callback) { - const connectOptions: ConnectionOptions = { - ...pool.options, - id: pool[kConnectionCounter].next().value, - generation: pool[kGeneration], - cancellationToken: pool[kCancellationToken] - }; - - pool[kPending]++; - // This is our version of a "virtual" no-I/O connection as the spec requires - pool.emit( - ConnectionPool.CONNECTION_CREATED, - new ConnectionCreatedEvent(pool, { id: connectOptions.id }) - ); - - connect(connectOptions, (err, connection) => { - if (err || !connection) { - pool[kLogger].debug(`connection attempt failed with error [${JSON.stringify(err)}]`); - callback(err); - return; - } + private connectionIsIdle(connection: Connection) { + return !!(this.options.maxIdleTimeMS && connection.idleTime > this.options.maxIdleTimeMS); + } - // The pool might have closed since we started trying to create a connection - if (pool.closed) { - pool[kPending]--; - connection.destroy({ force: true }); - return; + /** + * Destroys a connection if the connection is perished. + * + * @returns `true` if the connection was destroyed, `false` otherwise. + */ + private destroyConnectionIfPerished(connection: Connection): boolean { + const isStale = this.connectionIsStale(connection); + const isIdle = this.connectionIsIdle(connection); + if (!isStale && !isIdle && !connection.closed) { + return false; } + const reason = connection.closed ? 'error' : isStale ? 'stale' : 'idle'; + this.destroyConnection(connection, reason); + return true; + } - // forward all events from the connection to the pool - for (const event of [...APM_EVENTS, Connection.CLUSTER_TIME_RECEIVED]) { - connection.on(event, (e: any) => pool.emit(event, e)); - } + private createConnection(callback: Callback) { + const connectOptions: ConnectionOptions = { + ...this.options, + id: this[kConnectionCounter].next().value, + generation: this[kGeneration], + cancellationToken: this[kCancellationToken] + }; - if (pool.loadBalanced) { - connection.on(Connection.PINNED, pinType => pool[kMetrics].markPinned(pinType)); - connection.on(Connection.UNPINNED, pinType => pool[kMetrics].markUnpinned(pinType)); + this[kPending]++; + // This is our version of a "virtual" no-I/O connection as the spec requires + this.emit( + ConnectionPool.CONNECTION_CREATED, + new ConnectionCreatedEvent(this, { id: connectOptions.id }) + ); - const serviceId = connection.serviceId; - if (serviceId) { - let generation; - const sid = serviceId.toHexString(); - if ((generation = pool.serviceGenerations.get(sid))) { - connection.generation = generation; - } else { - pool.serviceGenerations.set(sid, 0); - connection.generation = 0; + connect(connectOptions, (err, connection) => { + if (err || !connection) { + this[kLogger].debug(`connection attempt failed with error [${JSON.stringify(err)}]`); + this[kPending]--; + this.emit( + ConnectionPool.CONNECTION_CLOSED, + new ConnectionClosedEvent(this, { id: connectOptions.id, serviceId: undefined }, 'error') + ); + if (err instanceof MongoNetworkError || err instanceof MongoServerError) { + err.connectionGeneration = connectOptions.generation; } + callback(err ?? new MongoRuntimeError('Connection creation failed without error')); + return; } - } - connection.markAvailable(); - pool.emit(ConnectionPool.CONNECTION_READY, new ConnectionReadyEvent(pool, connection)); + // The pool might have closed since we started trying to create a connection + if (this[kPoolState] !== PoolState.ready) { + this[kPending]--; + connection.destroy({ force: true }); + callback(this.closed ? new PoolClosedError(this) : new PoolClearedError(this)); + return; + } - callback(undefined, connection); - return; - }); -} + // forward all events from the connection to the pool + for (const event of [...APM_EVENTS, Connection.CLUSTER_TIME_RECEIVED]) { + connection.on(event, (e: any) => this.emit(event, e)); + } -function destroyConnection(pool: ConnectionPool, connection: Connection, reason: string) { - pool.emit(ConnectionPool.CONNECTION_CLOSED, new ConnectionClosedEvent(pool, connection, reason)); + if (this.loadBalanced) { + connection.on(Connection.PINNED, pinType => this[kMetrics].markPinned(pinType)); + connection.on(Connection.UNPINNED, pinType => this[kMetrics].markUnpinned(pinType)); - // destroy the connection - process.nextTick(() => connection.destroy()); -} + const serviceId = connection.serviceId; + if (serviceId) { + let generation; + const sid = serviceId.toHexString(); + if ((generation = this.serviceGenerations.get(sid))) { + connection.generation = generation; + } else { + this.serviceGenerations.set(sid, 0); + connection.generation = 0; + } + } + } -function processWaitQueue(pool: ConnectionPool) { - if (pool.closed || pool[kProcessingWaitQueue]) { - return; + connection.markAvailable(); + this.emit(ConnectionPool.CONNECTION_READY, new ConnectionReadyEvent(this, connection)); + + this[kPending]--; + callback(undefined, connection); + return; + }); } - pool[kProcessingWaitQueue] = true; - while (pool.waitQueueSize) { - const waitQueueMember = pool[kWaitQueue].peekFront(); - if (!waitQueueMember) { - pool[kWaitQueue].shift(); - continue; + private ensureMinPoolSize() { + const minPoolSize = this.options.minPoolSize; + if (this[kPoolState] !== PoolState.ready || minPoolSize === 0) { + return; } - if (waitQueueMember[kCancelled]) { - pool[kWaitQueue].shift(); - continue; - } + this[kConnections].prune(connection => this.destroyConnectionIfPerished(connection)); - if (!pool.availableConnectionCount) { - break; + if ( + this.totalConnectionCount < minPoolSize && + this.pendingConnectionCount < this.options.maxConnecting + ) { + // NOTE: ensureMinPoolSize should not try to get all the pending + // connection permits because that potentially delays the availability of + // the connection to a checkout request + this.createConnection((err, connection) => { + if (err) { + this[kServer].handleError(err); + } + if (!err && connection) { + this[kConnections].push(connection); + process.nextTick(() => this.processWaitQueue()); + } + if (this[kPoolState] === PoolState.ready) { + clearTimeout(this[kMinPoolSizeTimer]); + this[kMinPoolSizeTimer] = setTimeout( + () => this.ensureMinPoolSize(), + this.options.minPoolSizeCheckFrequencyMS + ); + } + }); + } else { + clearTimeout(this[kMinPoolSizeTimer]); + this[kMinPoolSizeTimer] = setTimeout( + () => this.ensureMinPoolSize(), + this.options.minPoolSizeCheckFrequencyMS + ); } + } - const connection = pool[kConnections].shift(); - if (!connection) { - break; + private processWaitQueue() { + if (this[kProcessingWaitQueue]) { + return; } + this[kProcessingWaitQueue] = true; - const isStale = connectionIsStale(pool, connection); - const isIdle = connectionIsIdle(pool, connection); - if (!isStale && !isIdle && !connection.closed) { - pool[kCheckedOut]++; - pool.emit( - ConnectionPool.CONNECTION_CHECKED_OUT, - new ConnectionCheckedOutEvent(pool, connection) - ); - if (waitQueueMember.timer) { - clearTimeout(waitQueueMember.timer); + while (this.waitQueueSize) { + const waitQueueMember = this[kWaitQueue].first(); + if (!waitQueueMember) { + this[kWaitQueue].shift(); + continue; } - pool[kWaitQueue].shift(); - waitQueueMember.callback(undefined, connection); - } else { - const reason = connection.closed ? 'error' : isStale ? 'stale' : 'idle'; - destroyConnection(pool, connection, reason); - } - } - - const { maxPoolSize, maxConnecting } = pool.options; - while ( - pool.waitQueueSize > 0 && - pool.pendingConnectionCount < maxConnecting && - (maxPoolSize === 0 || pool.totalConnectionCount < maxPoolSize) - ) { - const waitQueueMember = pool[kWaitQueue].shift(); - if (!waitQueueMember || waitQueueMember[kCancelled]) { - continue; - } - createConnection(pool, (err, connection) => { - pool[kPending]--; if (waitQueueMember[kCancelled]) { - if (!err && connection) { - pool[kConnections].push(connection); - } - } else { - if (err) { - pool.emit( - ConnectionPool.CONNECTION_CHECK_OUT_FAILED, - new ConnectionCheckOutFailedEvent(pool, err) - ); - } else if (connection) { - pool[kCheckedOut]++; - pool.emit( - ConnectionPool.CONNECTION_CHECKED_OUT, - new ConnectionCheckedOutEvent(pool, connection) - ); + this[kWaitQueue].shift(); + continue; + } + + if (this[kPoolState] !== PoolState.ready) { + const reason = this.closed ? 'poolClosed' : 'connectionError'; + const error = this.closed ? new PoolClosedError(this) : new PoolClearedError(this); + this.emit( + ConnectionPool.CONNECTION_CHECK_OUT_FAILED, + new ConnectionCheckOutFailedEvent(this, reason) + ); + if (waitQueueMember.timer) { + clearTimeout(waitQueueMember.timer); } + this[kWaitQueue].shift(); + waitQueueMember.callback(error); + continue; + } + + if (!this.availableConnectionCount) { + break; + } + + const connection = this[kConnections].shift(); + if (!connection) { + break; + } + if (!this.destroyConnectionIfPerished(connection)) { + this[kCheckedOut].add(connection); + this.emit( + ConnectionPool.CONNECTION_CHECKED_OUT, + new ConnectionCheckedOutEvent(this, connection) + ); if (waitQueueMember.timer) { clearTimeout(waitQueueMember.timer); } - waitQueueMember.callback(err, connection); + + this[kWaitQueue].shift(); + waitQueueMember.callback(undefined, connection); } - process.nextTick(processWaitQueue, pool); - }); + } + + const { maxPoolSize, maxConnecting } = this.options; + while ( + this.waitQueueSize > 0 && + this.pendingConnectionCount < maxConnecting && + (maxPoolSize === 0 || this.totalConnectionCount < maxPoolSize) + ) { + const waitQueueMember = this[kWaitQueue].shift(); + if (!waitQueueMember || waitQueueMember[kCancelled]) { + continue; + } + this.createConnection((err, connection) => { + if (waitQueueMember[kCancelled]) { + if (!err && connection) { + this[kConnections].push(connection); + } + } else { + if (err) { + this.emit( + ConnectionPool.CONNECTION_CHECK_OUT_FAILED, + new ConnectionCheckOutFailedEvent(this, 'connectionError') + ); + } else if (connection) { + this[kCheckedOut].add(connection); + this.emit( + ConnectionPool.CONNECTION_CHECKED_OUT, + new ConnectionCheckedOutEvent(this, connection) + ); + } + + if (waitQueueMember.timer) { + clearTimeout(waitQueueMember.timer); + } + waitQueueMember.callback(err, connection); + } + process.nextTick(() => this.processWaitQueue()); + }); + } + this[kProcessingWaitQueue] = false; } - pool[kProcessingWaitQueue] = false; } /** diff --git a/food-ordering-app/server/node_modules/mongodb/src/cmap/connection_pool_events.ts b/food-ordering-app/server/node_modules/mongodb/src/cmap/connection_pool_events.ts index a98dc25d7..92df40b7f 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/cmap/connection_pool_events.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/cmap/connection_pool_events.ts @@ -28,12 +28,29 @@ export class ConnectionPoolMonitoringEvent { */ export class ConnectionPoolCreatedEvent extends ConnectionPoolMonitoringEvent { /** The options used to create this connection pool */ - options?: ConnectionPoolOptions; + options: Omit & { credentials?: Record }; /** @internal */ constructor(pool: ConnectionPool) { super(pool); - this.options = pool.options; + if (pool.options.credentials != null) { + // Intentionally remove credentials: NODE-5460 + this.options = { ...pool.options, credentials: {} }; + } else { + this.options = pool.options; + } + } +} + +/** + * An event published when a connection pool is ready + * @public + * @category Event + */ +export class ConnectionPoolReadyEvent extends ConnectionPoolMonitoringEvent { + /** @internal */ + constructor(pool: ConnectionPool) { + super(pool); } } @@ -94,7 +111,11 @@ export class ConnectionClosedEvent extends ConnectionPoolMonitoringEvent { serviceId?: ObjectId; /** @internal */ - constructor(pool: ConnectionPool, connection: Connection, reason: string) { + constructor( + pool: ConnectionPool, + connection: Pick, + reason: string + ) { super(pool); this.connectionId = connection.id; this.reason = reason || 'unknown'; @@ -171,9 +192,15 @@ export class ConnectionPoolClearedEvent extends ConnectionPoolMonitoringEvent { /** @internal */ serviceId?: ObjectId; + interruptInUseConnections?: boolean; + /** @internal */ - constructor(pool: ConnectionPool, serviceId?: ObjectId) { + constructor( + pool: ConnectionPool, + options: { serviceId?: ObjectId; interruptInUseConnections?: boolean } = {} + ) { super(pool); - this.serviceId = serviceId; + this.serviceId = options.serviceId; + this.interruptInUseConnections = options.interruptInUseConnections; } } diff --git a/food-ordering-app/server/node_modules/mongodb/src/cmap/errors.ts b/food-ordering-app/server/node_modules/mongodb/src/cmap/errors.ts index 85e8dac79..f6d2ed588 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/cmap/errors.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/cmap/errors.ts @@ -1,4 +1,4 @@ -import { MongoDriverError } from '../error'; +import { MongoDriverError, MongoErrorLabel, MongoNetworkError } from '../error'; import type { ConnectionPool } from './connection_pool'; /** @@ -19,6 +19,43 @@ export class PoolClosedError extends MongoDriverError { } } +/** + * An error indicating a connection pool is currently paused + * @category Error + */ +export class PoolClearedError extends MongoNetworkError { + /** The address of the connection pool */ + address: string; + + constructor(pool: ConnectionPool, message?: string) { + const errorMessage = message + ? message + : `Connection pool for ${pool.address} was cleared because another operation failed with: "${pool.serverError?.message}"`; + super(errorMessage); + this.address = pool.address; + + this.addErrorLabel(MongoErrorLabel.RetryableWriteError); + } + + override get name(): string { + return 'MongoPoolClearedError'; + } +} + +/** + * An error indicating that a connection pool has been cleared after the monitor for that server timed out. + * @category Error + */ +export class PoolClearedOnNetworkError extends PoolClearedError { + constructor(pool: ConnectionPool) { + super(pool, `Connection to ${pool.address} interrupted due to server monitor timeout`); + } + + override get name(): string { + return 'PoolClearedOnNetworkError'; + } +} + /** * An error thrown when a request to check out a connection times out * @category Error diff --git a/food-ordering-app/server/node_modules/mongodb/src/cmap/handshake/client_metadata.ts b/food-ordering-app/server/node_modules/mongodb/src/cmap/handshake/client_metadata.ts new file mode 100644 index 000000000..fb1ba40b1 --- /dev/null +++ b/food-ordering-app/server/node_modules/mongodb/src/cmap/handshake/client_metadata.ts @@ -0,0 +1,273 @@ +import * as os from 'os'; +import * as process from 'process'; + +import { BSON, Int32 } from '../../bson'; +import { MongoInvalidArgumentError } from '../../error'; +import type { MongoOptions } from '../../mongo_client'; + +// eslint-disable-next-line @typescript-eslint/no-var-requires +const NODE_DRIVER_VERSION = require('../../../package.json').version; + +/** + * @public + * @see https://github.com/mongodb/specifications/blob/master/source/mongodb-handshake/handshake.rst#hello-command + */ +export interface ClientMetadata { + driver: { + name: string; + version: string; + }; + os: { + type: string; + name?: NodeJS.Platform; + architecture?: string; + version?: string; + }; + platform: string; + application?: { + name: string; + }; + /** FaaS environment information */ + env?: { + name: 'aws.lambda' | 'gcp.func' | 'azure.func' | 'vercel'; + timeout_sec?: Int32; + memory_mb?: Int32; + region?: string; + url?: string; + }; +} + +/** @public */ +export interface ClientMetadataOptions { + driverInfo?: { + name?: string; + version?: string; + platform?: string; + }; + appName?: string; +} + +/** @internal */ +export class LimitedSizeDocument { + private document = new Map(); + /** BSON overhead: Int32 + Null byte */ + private documentSize = 5; + constructor(private maxSize: number) {} + + /** Only adds key/value if the bsonByteLength is less than MAX_SIZE */ + public ifItFitsItSits(key: string, value: Record | string): boolean { + // The BSON byteLength of the new element is the same as serializing it to its own document + // subtracting the document size int32 and the null terminator. + const newElementSize = BSON.serialize(new Map().set(key, value)).byteLength - 5; + + if (newElementSize + this.documentSize > this.maxSize) { + return false; + } + + this.documentSize += newElementSize; + + this.document.set(key, value); + + return true; + } + + toObject(): ClientMetadata { + return BSON.deserialize(BSON.serialize(this.document), { + promoteLongs: false, + promoteBuffers: false, + promoteValues: false, + useBigInt64: false + }) as ClientMetadata; + } +} + +type MakeClientMetadataOptions = Pick; +/** + * From the specs: + * Implementors SHOULD cumulatively update fields in the following order until the document is under the size limit: + * 1. Omit fields from `env` except `env.name`. + * 2. Omit fields from `os` except `os.type`. + * 3. Omit the `env` document entirely. + * 4. Truncate `platform`. -- special we do not truncate this field + */ +export function makeClientMetadata(options: MakeClientMetadataOptions): ClientMetadata { + const metadataDocument = new LimitedSizeDocument(512); + + const { appName = '' } = options; + // Add app name first, it must be sent + if (appName.length > 0) { + const name = + Buffer.byteLength(appName, 'utf8') <= 128 + ? options.appName + : Buffer.from(appName, 'utf8').subarray(0, 128).toString('utf8'); + metadataDocument.ifItFitsItSits('application', { name }); + } + + const { name = '', version = '', platform = '' } = options.driverInfo; + + const driverInfo = { + name: name.length > 0 ? `nodejs|${name}` : 'nodejs', + version: version.length > 0 ? `${NODE_DRIVER_VERSION}|${version}` : NODE_DRIVER_VERSION + }; + + if (!metadataDocument.ifItFitsItSits('driver', driverInfo)) { + throw new MongoInvalidArgumentError( + 'Unable to include driverInfo name and version, metadata cannot exceed 512 bytes' + ); + } + + let runtimeInfo = getRuntimeInfo(); + if (platform.length > 0) { + runtimeInfo = `${runtimeInfo}|${platform}`; + } + + if (!metadataDocument.ifItFitsItSits('platform', runtimeInfo)) { + throw new MongoInvalidArgumentError( + 'Unable to include driverInfo platform, metadata cannot exceed 512 bytes' + ); + } + + // Note: order matters, os.type is last so it will be removed last if we're at maxSize + const osInfo = new Map() + .set('name', process.platform) + .set('architecture', process.arch) + .set('version', os.release()) + .set('type', os.type()); + + if (!metadataDocument.ifItFitsItSits('os', osInfo)) { + for (const key of osInfo.keys()) { + osInfo.delete(key); + if (osInfo.size === 0) break; + if (metadataDocument.ifItFitsItSits('os', osInfo)) break; + } + } + + const faasEnv = getFAASEnv(); + if (faasEnv != null) { + if (!metadataDocument.ifItFitsItSits('env', faasEnv)) { + for (const key of faasEnv.keys()) { + faasEnv.delete(key); + if (faasEnv.size === 0) break; + if (metadataDocument.ifItFitsItSits('env', faasEnv)) break; + } + } + } + + return metadataDocument.toObject(); +} + +/** + * Collects FaaS metadata. + * - `name` MUST be the last key in the Map returned. + */ +export function getFAASEnv(): Map | null { + const { + AWS_EXECUTION_ENV = '', + AWS_LAMBDA_RUNTIME_API = '', + FUNCTIONS_WORKER_RUNTIME = '', + K_SERVICE = '', + FUNCTION_NAME = '', + VERCEL = '', + AWS_LAMBDA_FUNCTION_MEMORY_SIZE = '', + AWS_REGION = '', + FUNCTION_MEMORY_MB = '', + FUNCTION_REGION = '', + FUNCTION_TIMEOUT_SEC = '', + VERCEL_REGION = '' + } = process.env; + + const isAWSFaaS = + AWS_EXECUTION_ENV.startsWith('AWS_Lambda_') || AWS_LAMBDA_RUNTIME_API.length > 0; + const isAzureFaaS = FUNCTIONS_WORKER_RUNTIME.length > 0; + const isGCPFaaS = K_SERVICE.length > 0 || FUNCTION_NAME.length > 0; + const isVercelFaaS = VERCEL.length > 0; + + // Note: order matters, name must always be the last key + const faasEnv = new Map(); + + // When isVercelFaaS is true so is isAWSFaaS; Vercel inherits the AWS env + if (isVercelFaaS && !(isAzureFaaS || isGCPFaaS)) { + if (VERCEL_REGION.length > 0) { + faasEnv.set('region', VERCEL_REGION); + } + + faasEnv.set('name', 'vercel'); + return faasEnv; + } + + if (isAWSFaaS && !(isAzureFaaS || isGCPFaaS || isVercelFaaS)) { + if (AWS_REGION.length > 0) { + faasEnv.set('region', AWS_REGION); + } + + if ( + AWS_LAMBDA_FUNCTION_MEMORY_SIZE.length > 0 && + Number.isInteger(+AWS_LAMBDA_FUNCTION_MEMORY_SIZE) + ) { + faasEnv.set('memory_mb', new Int32(AWS_LAMBDA_FUNCTION_MEMORY_SIZE)); + } + + faasEnv.set('name', 'aws.lambda'); + return faasEnv; + } + + if (isAzureFaaS && !(isGCPFaaS || isAWSFaaS || isVercelFaaS)) { + faasEnv.set('name', 'azure.func'); + return faasEnv; + } + + if (isGCPFaaS && !(isAzureFaaS || isAWSFaaS || isVercelFaaS)) { + if (FUNCTION_REGION.length > 0) { + faasEnv.set('region', FUNCTION_REGION); + } + + if (FUNCTION_MEMORY_MB.length > 0 && Number.isInteger(+FUNCTION_MEMORY_MB)) { + faasEnv.set('memory_mb', new Int32(FUNCTION_MEMORY_MB)); + } + + if (FUNCTION_TIMEOUT_SEC.length > 0 && Number.isInteger(+FUNCTION_TIMEOUT_SEC)) { + faasEnv.set('timeout_sec', new Int32(FUNCTION_TIMEOUT_SEC)); + } + + faasEnv.set('name', 'gcp.func'); + return faasEnv; + } + + return null; +} + +/** + * @internal + * This type represents the global Deno object and the minimal type contract we expect it to satisfy. + */ +declare const Deno: { version?: { deno?: string } } | undefined; + +/** + * @internal + * This type represents the global Bun object and the minimal type contract we expect it to satisfy. + */ +declare const Bun: { (): void; version?: string } | undefined; + +/** + * @internal + * Get current JavaScript runtime platform + * + * NOTE: The version information fetching is intentionally written defensively + * to avoid having a released driver version that becomes incompatible + * with a future change to these global objects. + */ +function getRuntimeInfo(): string { + if ('Deno' in globalThis) { + const version = typeof Deno?.version?.deno === 'string' ? Deno?.version?.deno : '0.0.0-unknown'; + + return `Deno v${version}, ${os.endianness()}`; + } + + if ('Bun' in globalThis) { + const version = typeof Bun?.version === 'string' ? Bun?.version : '0.0.0-unknown'; + + return `Bun v${version}, ${os.endianness()}`; + } + + return `Node.js ${process.version}, ${os.endianness()}`; +} diff --git a/food-ordering-app/server/node_modules/mongodb/src/cmap/message_stream.ts b/food-ordering-app/server/node_modules/mongodb/src/cmap/message_stream.ts index 542e35cf7..91f436a9b 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/cmap/message_stream.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/cmap/message_stream.ts @@ -4,7 +4,7 @@ import type { BSONSerializeOptions, Document } from '../bson'; import { MongoDecompressionError, MongoParseError } from '../error'; import type { ClientSession } from '../sessions'; import { BufferPool, Callback } from '../utils'; -import { BinMsg, MessageHeader, Msg, Query, Response, WriteProtocolMessageType } from './commands'; +import { BinMsg, MessageHeader, Msg, Response, WriteProtocolMessageType } from './commands'; import { compress, Compressor, @@ -32,12 +32,10 @@ export interface OperationDescription extends BSONSerializeOptions { cb: Callback; command: boolean; documentsReturnedIn?: string; - fullResult: boolean; noResponse: boolean; raw: boolean; requestId: number; session?: ClientSession; - socketTimeoutOverride?: boolean; agreedCompressor?: CompressorName; zlibCompressionLevel?: number; $clusterTime?: Document; @@ -128,36 +126,33 @@ export class MessageStream extends Duplex { // Return whether a command contains an uncompressible command term // Will return true if command contains no uncompressible command terms function canCompress(command: WriteProtocolMessageType) { - const commandDoc = command instanceof Msg ? command.command : (command as Query).query; + const commandDoc = command instanceof Msg ? command.command : command.query; const commandName = Object.keys(commandDoc)[0]; return !uncompressibleCommands.has(commandName); } -function processIncomingData(stream: MessageStream, callback: Callback) { +function processIncomingData(stream: MessageStream, callback: Callback): void { const buffer = stream[kBuffer]; - if (buffer.length < 4) { - callback(); - return; + const sizeOfMessage = buffer.getInt32(); + + if (sizeOfMessage == null) { + return callback(); } - const sizeOfMessage = buffer.peek(4).readInt32LE(); if (sizeOfMessage < 0) { - callback(new MongoParseError(`Invalid message size: ${sizeOfMessage}`)); - return; + return callback(new MongoParseError(`Invalid message size: ${sizeOfMessage}`)); } if (sizeOfMessage > stream.maxBsonMessageSize) { - callback( + return callback( new MongoParseError( `Invalid message size: ${sizeOfMessage}, max allowed: ${stream.maxBsonMessageSize}` ) ); - return; } if (sizeOfMessage > buffer.length) { - callback(); - return; + return callback(); } const message = buffer.read(sizeOfMessage); @@ -171,11 +166,9 @@ function processIncomingData(stream: MessageStream, callback: Callback) const monitorHasAnotherHello = () => { if (stream.isMonitoringConnection) { // Can we read the next message size? - if (buffer.length >= 4) { - const sizeOfMessage = buffer.peek(4).readInt32LE(); - if (sizeOfMessage <= buffer.length) { - return true; - } + const sizeOfMessage = buffer.getInt32(); + if (sizeOfMessage != null && sizeOfMessage <= buffer.length) { + return true; } } return false; @@ -183,24 +176,21 @@ function processIncomingData(stream: MessageStream, callback: Callback) let ResponseType = messageHeader.opCode === OP_MSG ? BinMsg : Response; if (messageHeader.opCode !== OP_COMPRESSED) { - const messageBody = message.slice(MESSAGE_HEADER_SIZE); + const messageBody = message.subarray(MESSAGE_HEADER_SIZE); // If we are a monitoring connection message stream and // there is more in the buffer that can be read, skip processing since we // want the last hello command response that is in the buffer. if (monitorHasAnotherHello()) { - processIncomingData(stream, callback); - } else { - stream.emit('message', new ResponseType(message, messageHeader, messageBody)); - - if (buffer.length >= 4) { - processIncomingData(stream, callback); - } else { - callback(); - } + return processIncomingData(stream, callback); } - return; + stream.emit('message', new ResponseType(message, messageHeader, messageBody)); + + if (buffer.length >= 4) { + return processIncomingData(stream, callback); + } + return callback(); } messageHeader.fromCompressed = true; @@ -211,33 +201,28 @@ function processIncomingData(stream: MessageStream, callback: Callback) // recalculate based on wrapped opcode ResponseType = messageHeader.opCode === OP_MSG ? BinMsg : Response; - decompress(compressorID, compressedBuffer, (err, messageBody) => { + return decompress(compressorID, compressedBuffer, (err, messageBody) => { if (err || !messageBody) { - callback(err); - return; + return callback(err); } if (messageBody.length !== messageHeader.length) { - callback( + return callback( new MongoDecompressionError('Message body and message header must be the same length') ); - - return; } // If we are a monitoring connection message stream and // there is more in the buffer that can be read, skip processing since we // want the last hello command response that is in the buffer. if (monitorHasAnotherHello()) { - processIncomingData(stream, callback); - } else { - stream.emit('message', new ResponseType(message, messageHeader, messageBody)); - - if (buffer.length >= 4) { - processIncomingData(stream, callback); - } else { - callback(); - } + return processIncomingData(stream, callback); + } + stream.emit('message', new ResponseType(message, messageHeader, messageBody)); + + if (buffer.length >= 4) { + return processIncomingData(stream, callback); } + return callback(); }); } diff --git a/food-ordering-app/server/node_modules/mongodb/src/cmap/wire_protocol/compression.ts b/food-ordering-app/server/node_modules/mongodb/src/cmap/wire_protocol/compression.ts index 9f98051fc..a6f770591 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/cmap/wire_protocol/compression.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/cmap/wire_protocol/compression.ts @@ -15,7 +15,7 @@ export const Compressor = Object.freeze({ } as const); /** @public */ -export type Compressor = typeof Compressor[CompressorName]; +export type Compressor = (typeof Compressor)[CompressorName]; /** @public */ export type CompressorName = keyof typeof Compressor; @@ -52,9 +52,10 @@ export function compress( if (Snappy[PKG_VERSION].major <= 6) { Snappy.compress(dataToBeCompressed, callback); } else { - Snappy.compress(dataToBeCompressed) - .then(buffer => callback(undefined, buffer)) - .catch(error => callback(error)); + Snappy.compress(dataToBeCompressed).then( + buffer => callback(undefined, buffer), + error => callback(error) + ); } break; } @@ -102,9 +103,10 @@ export function decompress( if (Snappy[PKG_VERSION].major <= 6) { Snappy.uncompress(compressedData, { asBuffer: true }, callback); } else { - Snappy.uncompress(compressedData, { asBuffer: true }) - .then(buffer => callback(undefined, buffer)) - .catch(error => callback(error)); + Snappy.uncompress(compressedData, { asBuffer: true }).then( + buffer => callback(undefined, buffer), + error => callback(error) + ); } break; } diff --git a/food-ordering-app/server/node_modules/mongodb/src/cmap/wire_protocol/constants.ts b/food-ordering-app/server/node_modules/mongodb/src/cmap/wire_protocol/constants.ts index 4d515a5e5..438078173 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/cmap/wire_protocol/constants.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/cmap/wire_protocol/constants.ts @@ -2,12 +2,12 @@ export const MIN_SUPPORTED_SERVER_VERSION = '3.6'; export const MAX_SUPPORTED_SERVER_VERSION = '6.0'; export const MIN_SUPPORTED_WIRE_VERSION = 6; export const MAX_SUPPORTED_WIRE_VERSION = 17; +export const MIN_SUPPORTED_QE_WIRE_VERSION = 21; +export const MIN_SUPPORTED_QE_SERVER_VERSION = '7.0'; export const OP_REPLY = 1; export const OP_UPDATE = 2001; export const OP_INSERT = 2002; export const OP_QUERY = 2004; -export const OP_GETMORE = 2005; export const OP_DELETE = 2006; -export const OP_KILL_CURSORS = 2007; export const OP_COMPRESSED = 2012; export const OP_MSG = 2013; diff --git a/food-ordering-app/server/node_modules/mongodb/src/collection.ts b/food-ordering-app/server/node_modules/mongodb/src/collection.ts index f89a9f2fc..d61ffcb28 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/collection.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/collection.ts @@ -5,6 +5,7 @@ import { UnorderedBulkOperation } from './bulk/unordered'; import { ChangeStream, ChangeStreamDocument, ChangeStreamOptions } from './change_stream'; import { AggregationCursor } from './cursor/aggregation_cursor'; import { FindCursor } from './cursor/find_cursor'; +import { ListIndexesCursor } from './cursor/list_indexes_cursor'; import type { Db } from './db'; import { MongoInvalidArgumentError } from './error'; import type { Logger, LoggerOptions } from './logger'; @@ -57,7 +58,6 @@ import { IndexExistsOperation, IndexInformationOperation, IndexSpecification, - ListIndexesCursor, ListIndexesOptions } from './operations/indexes'; import { @@ -99,7 +99,12 @@ import { } from './utils'; import { WriteConcern, WriteConcernOptions } from './write_concern'; -/** @public */ +/** + * @public + * @deprecated This type will be completely removed in 5.0 and findOneAndUpdate, + * findOneAndDelete, and findOneAndReplace will then return the + * actual result document. + */ export interface ModifyResult { value: WithId | null; lastErrorObject?: Document; @@ -136,30 +141,28 @@ export interface CollectionPrivate { /** * The **Collection** class is an internal class that embodies a MongoDB collection - * allowing for insert/update/remove/find and other command operation on that MongoDB collection. + * allowing for insert/find/update/delete and other command operation on that MongoDB collection. * * **COLLECTION Cannot directly be instantiated** * @public * * @example - * ```js - * const MongoClient = require('mongodb').MongoClient; - * const test = require('assert'); - * // Connection url - * const url = 'mongodb://localhost:27017'; - * // Database Name - * const dbName = 'test'; - * // Connect using MongoClient - * MongoClient.connect(url, function(err, client) { - * // Create a collection we want to drop later - * const col = client.db(dbName).collection('createIndexExample1'); - * // Show that duplicate records got dropped - * col.find({}).toArray(function(err, items) { - * expect(err).to.not.exist; - * test.equal(4, items.length); - * client.close(); - * }); - * }); + * ```ts + * import { MongoClient } from 'mongodb'; + * + * interface Pet { + * name: string; + * kind: 'dog' | 'cat' | 'fish'; + * } + * + * const client = new MongoClient('mongodb://localhost:27017'); + * const pets = client.db().collection('pets'); + * + * const petCursor = pets.find(); + * + * for await (const pet of petCursor) { + * console.log(`${pet.name} is a ${pet.kind}!`); + * } * ``` */ export class Collection { @@ -265,14 +268,16 @@ export class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ insertOne(doc: OptionalUnlessRequiredId): Promise>; - insertOne( - doc: OptionalUnlessRequiredId, - callback: Callback> - ): void; insertOne( doc: OptionalUnlessRequiredId, options: InsertOneOptions ): Promise>; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + insertOne( + doc: OptionalUnlessRequiredId, + callback: Callback> + ): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ insertOne( doc: OptionalUnlessRequiredId, options: InsertOneOptions, @@ -288,8 +293,8 @@ export class Collection { options = {}; } - // CSFLE passes in { w: 'majority' } to ensure the lib works in both 3.x and 4.x - // we support that option style here only + // versions of mongodb-client-encryption before v1.2.6 pass in hardcoded { w: 'majority' } + // specifically to an insertOne call in createDataKey, so we want to support this only here if (options && Reflect.get(options, 'w')) { options.writeConcern = WriteConcern.fromOptions(Reflect.get(options, 'w')); } @@ -315,14 +320,16 @@ export class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ insertMany(docs: OptionalUnlessRequiredId[]): Promise>; - insertMany( - docs: OptionalUnlessRequiredId[], - callback: Callback> - ): void; insertMany( docs: OptionalUnlessRequiredId[], options: BulkWriteOptions ): Promise>; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + insertMany( + docs: OptionalUnlessRequiredId[], + callback: Callback> + ): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ insertMany( docs: OptionalUnlessRequiredId[], options: BulkWriteOptions, @@ -351,22 +358,13 @@ export class Collection { * Perform a bulkWrite operation without a fluent API * * Legal operation types are + * - `insertOne` + * - `replaceOne` + * - `updateOne` + * - `updateMany` + * - `deleteOne` + * - `deleteMany` * - * ```js - * { insertOne: { document: { a: 1 } } } - * - * { updateOne: { filter: {a:2}, update: {$set: {a:2}}, upsert:true } } - * - * { updateMany: { filter: {a:2}, update: {$set: {a:2}}, upsert:true } } - * - * { updateMany: { filter: {}, update: {$set: {"a.$[i].x": 5}}, arrayFilters: [{ "i.x": 5 }]} } - * - * { deleteOne: { filter: {c:1} } } - * - * { deleteMany: { filter: {c:1} } } - * - * { replaceOne: { filter: {c:3}, replacement: {c:4}, upsert:true} } - *``` * Please note that raw operations are no longer accepted as of driver version 4.0. * * If documents passed in do not contain the **_id** field, @@ -379,14 +377,16 @@ export class Collection { * @throws MongoDriverError if operations is not an array */ bulkWrite(operations: AnyBulkWriteOperation[]): Promise; - bulkWrite( - operations: AnyBulkWriteOperation[], - callback: Callback - ): void; bulkWrite( operations: AnyBulkWriteOperation[], options: BulkWriteOptions ): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + bulkWrite( + operations: AnyBulkWriteOperation[], + callback: Callback + ): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ bulkWrite( operations: AnyBulkWriteOperation[], options: BulkWriteOptions, @@ -430,13 +430,15 @@ export class Collection { updateOne( filter: Filter, update: UpdateFilter | Partial, - callback: Callback - ): void; + options: UpdateOptions + ): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ updateOne( filter: Filter, update: UpdateFilter | Partial, - options: UpdateOptions - ): Promise; + callback: Callback + ): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ updateOne( filter: Filter, update: UpdateFilter | Partial, @@ -478,13 +480,15 @@ export class Collection { replaceOne( filter: Filter, replacement: WithoutId, - callback: Callback - ): void; + options: ReplaceOptions + ): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ replaceOne( filter: Filter, replacement: WithoutId, - options: ReplaceOptions - ): Promise; + callback: Callback + ): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ replaceOne( filter: Filter, replacement: WithoutId, @@ -526,13 +530,15 @@ export class Collection { updateMany( filter: Filter, update: UpdateFilter, - callback: Callback - ): void; + options: UpdateOptions + ): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ updateMany( filter: Filter, update: UpdateFilter, - options: UpdateOptions - ): Promise; + callback: Callback + ): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ updateMany( filter: Filter, update: UpdateFilter, @@ -567,8 +573,10 @@ export class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ deleteOne(filter: Filter): Promise; - deleteOne(filter: Filter, callback: Callback): void; deleteOne(filter: Filter, options: DeleteOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + deleteOne(filter: Filter, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ deleteOne( filter: Filter, options: DeleteOptions, @@ -596,8 +604,10 @@ export class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ deleteMany(filter: Filter): Promise; - deleteMany(filter: Filter, callback: Callback): void; deleteMany(filter: Filter, options: DeleteOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + deleteMany(filter: Filter, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ deleteMany( filter: Filter, options: DeleteOptions, @@ -639,8 +649,10 @@ export class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ rename(newName: string): Promise; - rename(newName: string, callback: Callback): void; rename(newName: string, options: RenameOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + rename(newName: string, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ rename(newName: string, options: RenameOptions, callback: Callback): void; rename( newName: string, @@ -655,7 +667,7 @@ export class Collection { new RenameOperation(this as TODO_NODE_3286, newName, { ...options, readPreference: ReadPreference.PRIMARY - }), + }) as TODO_NODE_3286, callback ); } @@ -667,8 +679,10 @@ export class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ drop(): Promise; - drop(callback: Callback): void; drop(options: DropCollectionOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + drop(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ drop(options: DropCollectionOptions, callback: Callback): void; drop( options?: DropCollectionOptions | Callback, @@ -692,10 +706,13 @@ export class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ findOne(): Promise | null>; - findOne(callback: Callback | null>): void; findOne(filter: Filter): Promise | null>; - findOne(filter: Filter, callback: Callback | null>): void; findOne(filter: Filter, options: FindOptions): Promise | null>; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + findOne(callback: Callback | null>): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + findOne(filter: Filter, callback: Callback | null>): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ findOne( filter: Filter, options: FindOptions, @@ -704,9 +721,11 @@ export class Collection { // allow an override of the schema. findOne(): Promise; - findOne(callback: Callback): void; findOne(filter: Filter): Promise; findOne(filter: Filter, options?: FindOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + findOne(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ findOne( filter: Filter, options?: FindOptions, @@ -725,7 +744,7 @@ export class Collection { } if (typeof filter === 'function') { - callback = filter as Callback | null>; + callback = filter; filter = {}; options = {}; } @@ -772,8 +791,10 @@ export class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ options(): Promise; - options(callback: Callback): void; options(options: OperationOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + options(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ options(options: OperationOptions, callback: Callback): void; options( options?: OperationOptions | Callback, @@ -795,8 +816,10 @@ export class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ isCapped(): Promise; - isCapped(callback: Callback): void; isCapped(options: OperationOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + isCapped(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ isCapped(options: OperationOptions, callback: Callback): void; isCapped( options?: OperationOptions | Callback, @@ -819,7 +842,7 @@ export class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided * * @example - * ```js + * ```ts * const collection = client.db('foo').collection('bar'); * * await collection.createIndex({ a: 1, b: -1 }); @@ -841,8 +864,10 @@ export class Collection { * ``` */ createIndex(indexSpec: IndexSpecification): Promise; - createIndex(indexSpec: IndexSpecification, callback: Callback): void; createIndex(indexSpec: IndexSpecification, options: CreateIndexesOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + createIndex(indexSpec: IndexSpecification, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ createIndex( indexSpec: IndexSpecification, options: CreateIndexesOptions, @@ -880,7 +905,7 @@ export class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided * * @example - * ```js + * ```ts * const collection = client.db('foo').collection('bar'); * await collection.createIndexes([ * // Simple index on field fizz @@ -900,8 +925,10 @@ export class Collection { * ``` */ createIndexes(indexSpecs: IndexDescription[]): Promise; - createIndexes(indexSpecs: IndexDescription[], callback: Callback): void; createIndexes(indexSpecs: IndexDescription[], options: CreateIndexesOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + createIndexes(indexSpecs: IndexDescription[], callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ createIndexes( indexSpecs: IndexDescription[], options: CreateIndexesOptions, @@ -936,8 +963,10 @@ export class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ dropIndex(indexName: string): Promise; - dropIndex(indexName: string, callback: Callback): void; dropIndex(indexName: string, options: DropIndexesOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + dropIndex(indexName: string, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ dropIndex(indexName: string, options: DropIndexesOptions, callback: Callback): void; dropIndex( indexName: string, @@ -964,8 +993,10 @@ export class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ dropIndexes(): Promise; - dropIndexes(callback: Callback): void; dropIndexes(options: DropIndexesOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + dropIndexes(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ dropIndexes(options: DropIndexesOptions, callback: Callback): void; dropIndexes( options?: DropIndexesOptions | Callback, @@ -997,8 +1028,10 @@ export class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ indexExists(indexes: string | string[]): Promise; - indexExists(indexes: string | string[], callback: Callback): void; indexExists(indexes: string | string[], options: IndexInformationOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + indexExists(indexes: string | string[], callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ indexExists( indexes: string | string[], options: IndexInformationOptions, @@ -1025,8 +1058,10 @@ export class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ indexInformation(): Promise; - indexInformation(callback: Callback): void; indexInformation(options: IndexInformationOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + indexInformation(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ indexInformation(options: IndexInformationOptions, callback: Callback): void; indexInformation( options?: IndexInformationOptions | Callback, @@ -1056,8 +1091,10 @@ export class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ estimatedDocumentCount(): Promise; - estimatedDocumentCount(callback: Callback): void; estimatedDocumentCount(options: EstimatedDocumentCountOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + estimatedDocumentCount(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ estimatedDocumentCount(options: EstimatedDocumentCountOptions, callback: Callback): void; estimatedDocumentCount( options?: EstimatedDocumentCountOptions | Callback, @@ -1098,16 +1135,18 @@ export class Collection { * @see https://docs.mongodb.com/manual/reference/operator/query/centerSphere/#op._S_centerSphere */ countDocuments(): Promise; - countDocuments(callback: Callback): void; countDocuments(filter: Filter): Promise; - countDocuments(callback: Callback): void; countDocuments(filter: Filter, options: CountDocumentsOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + countDocuments(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + countDocuments(filter: Filter, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ countDocuments( filter: Filter, options: CountDocumentsOptions, callback: Callback ): void; - countDocuments(filter: Filter, callback: Callback): void; countDocuments( filter?: Document | CountDocumentsOptions | Callback, options?: CountDocumentsOptions | Callback, @@ -1128,7 +1167,7 @@ export class Collection { this.s.db.s.client, new CountDocumentsOperation( this as TODO_NODE_3286, - filter as Document, + filter, resolveOptions(this, options as CountDocumentsOptions) ), callback @@ -1146,10 +1185,6 @@ export class Collection { distinct>( key: Key ): Promise[Key]>>>; - distinct>( - key: Key, - callback: Callback[Key]>>> - ): void; distinct>( key: Key, filter: Filter @@ -1157,13 +1192,20 @@ export class Collection { distinct>( key: Key, filter: Filter, + options: DistinctOptions + ): Promise[Key]>>>; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + distinct>( + key: Key, callback: Callback[Key]>>> ): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ distinct>( key: Key, filter: Filter, - options: DistinctOptions - ): Promise[Key]>>>; + callback: Callback[Key]>>> + ): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ distinct>( key: Key, filter: Filter, @@ -1173,10 +1215,13 @@ export class Collection { // Embedded documents overload distinct(key: string): Promise; - distinct(key: string, callback: Callback): void; distinct(key: string, filter: Filter): Promise; - distinct(key: string, filter: Filter, callback: Callback): void; distinct(key: string, filter: Filter, options: DistinctOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + distinct(key: string, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + distinct(key: string, filter: Filter, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ distinct( key: string, filter: Filter, @@ -1191,7 +1236,7 @@ export class Collection { callback?: Callback ): Promise | void { if (typeof filter === 'function') { - (callback = filter as Callback), (filter = {}), (options = {}); + (callback = filter), (filter = {}), (options = {}); } else { if (arguments.length === 3 && typeof options === 'function') { (callback = options), (options = {}); @@ -1218,8 +1263,10 @@ export class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ indexes(): Promise; - indexes(callback: Callback): void; indexes(options: IndexInformationOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + indexes(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ indexes(options: IndexInformationOptions, callback: Callback): void; indexes( options?: IndexInformationOptions | Callback, @@ -1241,8 +1288,10 @@ export class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ stats(): Promise; - stats(callback: Callback): void; stats(options: CollStatsOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + stats(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ stats(options: CollStatsOptions, callback: Callback): void; stats( options?: CollStatsOptions | Callback, @@ -1253,7 +1302,7 @@ export class Collection { return executeOperation( this.s.db.s.client, - new CollStatsOperation(this as TODO_NODE_3286, options), + new CollStatsOperation(this as TODO_NODE_3286, options) as TODO_NODE_3286, callback ); } @@ -1270,7 +1319,9 @@ export class Collection { filter: Filter, options: FindOneAndDeleteOptions ): Promise>; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ findOneAndDelete(filter: Filter, callback: Callback>): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ findOneAndDelete( filter: Filter, options: FindOneAndDeleteOptions, @@ -1309,13 +1360,15 @@ export class Collection { findOneAndReplace( filter: Filter, replacement: WithoutId, - callback: Callback> - ): void; + options: FindOneAndReplaceOptions + ): Promise>; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ findOneAndReplace( filter: Filter, replacement: WithoutId, - options: FindOneAndReplaceOptions - ): Promise>; + callback: Callback> + ): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ findOneAndReplace( filter: Filter, replacement: WithoutId, @@ -1357,13 +1410,15 @@ export class Collection { findOneAndUpdate( filter: Filter, update: UpdateFilter, - callback: Callback> - ): void; + options: FindOneAndUpdateOptions + ): Promise>; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ findOneAndUpdate( filter: Filter, update: UpdateFilter, - options: FindOneAndUpdateOptions - ): Promise>; + callback: Callback> + ): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ findOneAndUpdate( filter: Filter, update: UpdateFilter, @@ -1426,7 +1481,7 @@ export class Collection { * Create a new Change Stream, watching for new changes (insertions, updates, replacements, deletions, and invalidations) in this collection. * * @remarks - * watch() accepts two generic arguments for distinct usecases: + * watch() accepts two generic arguments for distinct use cases: * - The first is to override the schema that may be defined for this specific collection * - The second is to override the shape of the change stream document entirely, if it is not provided the type will default to ChangeStreamDocument of the first argument * @example @@ -1489,13 +1544,15 @@ export class Collection { mapReduce( map: string | MapFunction, reduce: string | ReduceFunction, - callback: Callback - ): void; + options: MapReduceOptions + ): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ mapReduce( map: string | MapFunction, reduce: string | ReduceFunction, - options: MapReduceOptions - ): Promise; + callback: Callback + ): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ mapReduce( map: string | MapFunction, reduce: string | ReduceFunction, @@ -1544,12 +1601,26 @@ export class Collection { ); } - /** Initiate an Out of order batch write operation. All operations will be buffered into insert/update/remove commands executed out of order. */ + /** + * Initiate an Out of order batch write operation. All operations will be buffered into insert/update/remove commands executed out of order. + * + * @throws MongoNotConnectedError + * @remarks + * **NOTE:** MongoClient must be connected prior to calling this method due to a known limitation in this legacy implementation. + * However, `collection.bulkWrite()` provides an equivalent API that does not require prior connecting. + */ initializeUnorderedBulkOp(options?: BulkWriteOptions): UnorderedBulkOperation { return new UnorderedBulkOperation(this as TODO_NODE_3286, resolveOptions(this, options)); } - /** Initiate an In order bulk write operation. Operations will be serially executed in the order they are added, creating a new operation for each switch in types. */ + /** + * Initiate an In order bulk write operation. Operations will be serially executed in the order they are added, creating a new operation for each switch in types. + * + * @throws MongoNotConnectedError + * @remarks + * **NOTE:** MongoClient must be connected prior to calling this method due to a known limitation in this legacy implementation. + * However, `collection.bulkWrite()` provides an equivalent API that does not require prior connecting. + */ initializeOrderedBulkOp(options?: BulkWriteOptions): OrderedBulkOperation { return new OrderedBulkOperation(this as TODO_NODE_3286, resolveOptions(this, options)); } @@ -1568,7 +1639,7 @@ export class Collection { * one will be added to each of the documents missing it by the driver, mutating the document. This behavior * can be overridden by setting the **forceServerObjectId** flag. * - * @deprecated Use insertOne, insertMany or bulkWrite instead. + * @deprecated Use insertOne, insertMany or bulkWrite instead. Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance * @param docs - The documents to insert * @param options - Optional settings for the command * @param callback - An optional callback, a Promise will be returned if none is provided @@ -1595,14 +1666,14 @@ export class Collection { /** * Updates documents. * - * @deprecated use updateOne, updateMany or bulkWrite - * @param selector - The selector for the update operation. + * @deprecated use updateOne, updateMany or bulkWrite. Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance + * @param filter - The filter for the update operation. * @param update - The update operations to be applied to the documents * @param options - Optional settings for the command * @param callback - An optional callback, a Promise will be returned if none is provided */ update( - selector: Filter, + filter: Filter, update: UpdateFilter, options: UpdateOptions, callback: Callback @@ -1613,19 +1684,19 @@ export class Collection { if (typeof options === 'function') (callback = options), (options = {}); options = options ?? {}; - return this.updateMany(selector, update, options, callback); + return this.updateMany(filter, update, options, callback); } /** * Remove documents. * - * @deprecated use deleteOne, deleteMany or bulkWrite - * @param selector - The selector for the update operation. + * @deprecated use deleteOne, deleteMany or bulkWrite. Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance + * @param filter - The filter for the remove operation. * @param options - Optional settings for the command * @param callback - An optional callback, a Promise will be returned if none is provided */ remove( - selector: Filter, + filter: Filter, options: DeleteOptions, callback: Callback ): Promise | void { @@ -1635,7 +1706,7 @@ export class Collection { if (typeof options === 'function') (callback = options), (options = {}); options = options ?? {}; - return this.deleteMany(selector, options, callback); + return this.deleteMany(filter, options, callback); } /** @@ -1652,10 +1723,13 @@ export class Collection { * @param callback - An optional callback, a Promise will be returned if none is provided */ count(): Promise; - count(callback: Callback): void; count(filter: Filter): Promise; - count(filter: Filter, callback: Callback): void; count(filter: Filter, options: CountOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + count(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + count(filter: Filter, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ count( filter: Filter, options: CountOptions, @@ -1667,7 +1741,7 @@ export class Collection { callback?: Callback ): Promise | void { if (typeof filter === 'function') { - (callback = filter as Callback), (filter = {}), (options = {}); + (callback = filter), (filter = {}), (options = {}); } else { if (typeof options === 'function') (callback = options), (options = {}); } diff --git a/food-ordering-app/server/node_modules/mongodb/src/connection_string.ts b/food-ordering-app/server/node_modules/mongodb/src/connection_string.ts index 5b3d494a7..322e0c066 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/connection_string.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/connection_string.ts @@ -6,12 +6,17 @@ import { URLSearchParams } from 'url'; import type { Document } from './bson'; import { MongoCredentials } from './cmap/auth/mongo_credentials'; import { AUTH_MECHS_AUTH_SRC_EXTERNAL, AuthMechanism } from './cmap/auth/providers'; +import { makeClientMetadata } from './cmap/handshake/client_metadata'; import { Compressor, CompressorName } from './cmap/wire_protocol/compression'; import { Encrypter } from './encrypter'; -import { MongoAPIError, MongoInvalidArgumentError, MongoParseError } from './error'; -import { Logger, LoggerLevel } from './logger'; import { - DriverInfo, + MongoAPIError, + MongoInvalidArgumentError, + MongoMissingCredentialsError, + MongoParseError +} from './error'; +import { Logger as LegacyLogger, LoggerLevel as LegacyLoggerLevel } from './logger'; +import { MongoClient, MongoClientOptions, MongoOptions, @@ -19,19 +24,19 @@ import { ServerApi, ServerApiVersion } from './mongo_client'; +import { MongoLogger, MongoLoggerEnvOptions, MongoLoggerMongoClientOptions } from './mongo_logger'; import { PromiseProvider } from './promise_provider'; import { ReadConcern, ReadConcernLevel } from './read_concern'; import { ReadPreference, ReadPreferenceMode } from './read_preference'; import type { TagSet } from './sdam/server_description'; import { - AnyOptions, - Callback, DEFAULT_PK_FACTORY, emitWarning, emitWarningOnce, HostAddress, isRecord, - makeClientMetadata, + matchesParentDomain, + parseInteger, setDifference } from './utils'; import { W, WriteConcern } from './write_concern'; @@ -43,21 +48,6 @@ const LB_REPLICA_SET_ERROR = 'loadBalanced option not supported with a replicaSe const LB_DIRECT_CONNECTION_ERROR = 'loadBalanced option not supported when directConnection is provided'; -/** - * Determines whether a provided address matches the provided parent domain in order - * to avoid certain attack vectors. - * - * @param srvAddress - The address to check against a domain - * @param parentDomain - The domain to check the provided address against - * @returns Whether the provided address matches the parent domain - */ -function matchesParentDomain(srvAddress: string, parentDomain: string): boolean { - const regex = /^.*?\./; - const srv = `.${srvAddress.replace(regex, '')}`; - const parent = `.${parentDomain.replace(regex, '')}`; - return srv.endsWith(parent); -} - /** * Lookup a `mongodb+srv` connection string, combine the parts and reparse it as a normal * connection string. @@ -65,110 +55,102 @@ function matchesParentDomain(srvAddress: string, parentDomain: string): boolean * @param uri - The connection string to parse * @param options - Optional user provided connection string options */ -export function resolveSRVRecord(options: MongoOptions, callback: Callback): void { +export async function resolveSRVRecord(options: MongoOptions): Promise { if (typeof options.srvHost !== 'string') { - return callback(new MongoAPIError('Option "srvHost" must not be empty')); + throw new MongoAPIError('Option "srvHost" must not be empty'); } if (options.srvHost.split('.').length < 3) { // TODO(NODE-3484): Replace with MongoConnectionStringError - return callback(new MongoAPIError('URI must include hostname, domain name, and tld')); + throw new MongoAPIError('URI must include hostname, domain name, and tld'); } // Resolve the SRV record and use the result as the list of hosts to connect to. const lookupAddress = options.srvHost; - dns.resolveSrv(`_${options.srvServiceName}._tcp.${lookupAddress}`, (err, addresses) => { - if (err) return callback(err); + const addresses = await dns.promises.resolveSrv( + `_${options.srvServiceName}._tcp.${lookupAddress}` + ); - if (addresses.length === 0) { - return callback(new MongoAPIError('No addresses found at host')); - } + if (addresses.length === 0) { + throw new MongoAPIError('No addresses found at host'); + } - for (const { name } of addresses) { - if (!matchesParentDomain(name, lookupAddress)) { - return callback(new MongoAPIError('Server record does not share hostname with parent URI')); - } + for (const { name } of addresses) { + if (!matchesParentDomain(name, lookupAddress)) { + throw new MongoAPIError('Server record does not share hostname with parent URI'); } + } - const hostAddresses = addresses.map(r => - HostAddress.fromString(`${r.name}:${r.port ?? 27017}`) - ); + const hostAddresses = addresses.map(r => HostAddress.fromString(`${r.name}:${r.port ?? 27017}`)); - const lbError = validateLoadBalancedOptions(hostAddresses, options, true); - if (lbError) { - return callback(lbError); + validateLoadBalancedOptions(hostAddresses, options, true); + + // Resolve TXT record and add options from there if they exist. + let record; + try { + record = await dns.promises.resolveTxt(lookupAddress); + } catch (error) { + if (error.code !== 'ENODATA' && error.code !== 'ENOTFOUND') { + throw error; } + return hostAddresses; + } - // Resolve TXT record and add options from there if they exist. - dns.resolveTxt(lookupAddress, (err, record) => { - if (err) { - if (err.code !== 'ENODATA' && err.code !== 'ENOTFOUND') { - return callback(err); - } - } else { - if (record.length > 1) { - return callback(new MongoParseError('Multiple text records not allowed')); - } + if (record.length > 1) { + throw new MongoParseError('Multiple text records not allowed'); + } - const txtRecordOptions = new URLSearchParams(record[0].join('')); - const txtRecordOptionKeys = [...txtRecordOptions.keys()]; - if (txtRecordOptionKeys.some(key => !VALID_TXT_RECORDS.includes(key))) { - return callback( - new MongoParseError(`Text record may only set any of: ${VALID_TXT_RECORDS.join(', ')}`) - ); - } + const txtRecordOptions = new URLSearchParams(record[0].join('')); + const txtRecordOptionKeys = [...txtRecordOptions.keys()]; + if (txtRecordOptionKeys.some(key => !VALID_TXT_RECORDS.includes(key))) { + throw new MongoParseError(`Text record may only set any of: ${VALID_TXT_RECORDS.join(', ')}`); + } - if (VALID_TXT_RECORDS.some(option => txtRecordOptions.get(option) === '')) { - return callback(new MongoParseError('Cannot have empty URI params in DNS TXT Record')); - } + if (VALID_TXT_RECORDS.some(option => txtRecordOptions.get(option) === '')) { + throw new MongoParseError('Cannot have empty URI params in DNS TXT Record'); + } - const source = txtRecordOptions.get('authSource') ?? undefined; - const replicaSet = txtRecordOptions.get('replicaSet') ?? undefined; - const loadBalanced = txtRecordOptions.get('loadBalanced') ?? undefined; - - if ( - !options.userSpecifiedAuthSource && - source && - options.credentials && - !AUTH_MECHS_AUTH_SRC_EXTERNAL.has(options.credentials.mechanism) - ) { - options.credentials = MongoCredentials.merge(options.credentials, { source }); - } + const source = txtRecordOptions.get('authSource') ?? undefined; + const replicaSet = txtRecordOptions.get('replicaSet') ?? undefined; + const loadBalanced = txtRecordOptions.get('loadBalanced') ?? undefined; - if (!options.userSpecifiedReplicaSet && replicaSet) { - options.replicaSet = replicaSet; - } + if ( + !options.userSpecifiedAuthSource && + source && + options.credentials && + !AUTH_MECHS_AUTH_SRC_EXTERNAL.has(options.credentials.mechanism) + ) { + options.credentials = MongoCredentials.merge(options.credentials, { source }); + } - if (loadBalanced === 'true') { - options.loadBalanced = true; - } + if (!options.userSpecifiedReplicaSet && replicaSet) { + options.replicaSet = replicaSet; + } - if (options.replicaSet && options.srvMaxHosts > 0) { - return callback(new MongoParseError('Cannot combine replicaSet option with srvMaxHosts')); - } + if (loadBalanced === 'true') { + options.loadBalanced = true; + } - const lbError = validateLoadBalancedOptions(hostAddresses, options, true); - if (lbError) { - return callback(lbError); - } - } + if (options.replicaSet && options.srvMaxHosts > 0) { + throw new MongoParseError('Cannot combine replicaSet option with srvMaxHosts'); + } + + validateLoadBalancedOptions(hostAddresses, options, true); - callback(undefined, hostAddresses); - }); - }); + return hostAddresses; } /** * Checks if TLS options are valid * - * @param options - The options used for options parsing - * @throws MongoParseError if TLS options are invalid + * @param allOptions - All options provided by user or included in default options map + * @throws MongoAPIError if TLS options are invalid */ -export function checkTLSOptions(options: AnyOptions): void { - if (!options) return; +function checkTLSOptions(allOptions: CaseInsensitiveMap): void { + if (!allOptions) return; const check = (a: string, b: string) => { - if (Reflect.has(options, a) && Reflect.has(options, b)) { - throw new MongoParseError(`The '${a}' option cannot be used with '${b}'`); + if (allOptions.has(a) && allOptions.has(b)) { + throw new MongoAPIError(`The '${a}' option cannot be used with the '${b}' option`); } }; check('tlsInsecure', 'tlsAllowInvalidCertificates'); @@ -204,15 +186,16 @@ function getBoolean(name: string, value: unknown): boolean { throw new MongoParseError(`Expected ${name} to be stringified boolean value, got: ${value}`); } -function getInt(name: string, value: unknown): number { - if (typeof value === 'number') return Math.trunc(value); - const parsedValue = Number.parseInt(String(value), 10); - if (!Number.isNaN(parsedValue)) return parsedValue; +function getIntFromOptions(name: string, value: unknown): number { + const parsedInt = parseInteger(value); + if (parsedInt != null) { + return parsedInt; + } throw new MongoParseError(`Expected ${name} to be stringified int value, got: ${value}`); } -function getUint(name: string, value: unknown): number { - const parsedValue = getInt(name, value); +function getUIntFromOptions(name: string, value: unknown): number { + const parsedValue = getIntFromOptions(name, value); if (parsedValue < 0) { throw new MongoParseError(`${name} can only be a positive int value, got: ${value}`); } @@ -364,6 +347,8 @@ export function parseOptions( } } + checkTLSOptions(allOptions); + const unsupportedOptions = setDifference( allKeys, Array.from(Object.keys(OPTIONS)).map(s => s.toLowerCase()) @@ -407,6 +392,12 @@ export function parseOptions( }); } + if (isAws && mongoOptions.credentials.username && !mongoOptions.credentials.password) { + throw new MongoMissingCredentialsError( + `When using ${mongoOptions.credentials.mechanism} password must be set when a username is specified` + ); + } + mongoOptions.credentials.validate(); // Check if the only auth related option provided was authSource, if so we can remove credentials @@ -425,14 +416,12 @@ export function parseOptions( mongoOptions.dbName = 'test'; } - checkTLSOptions(mongoOptions); + if (options.promiseLibrary) { + PromiseProvider.set(options.promiseLibrary); + } - if (options.promiseLibrary) PromiseProvider.set(options.promiseLibrary); + validateLoadBalancedOptions(hosts, mongoOptions, isSRV); - const lbError = validateLoadBalancedOptions(hosts, mongoOptions, isSRV); - if (lbError) { - throw lbError; - } if (mongoClient && mongoOptions.autoEncryption) { Encrypter.checkForMongoCrypt(); mongoOptions.encrypter = new Encrypter(mongoClient, uri, options); @@ -506,27 +495,62 @@ export function parseOptions( ); } + const loggerFeatureFlag = Symbol.for('@@mdb.enableMongoLogger'); + mongoOptions[loggerFeatureFlag] = mongoOptions[loggerFeatureFlag] ?? false; + + let loggerEnvOptions: MongoLoggerEnvOptions = {}; + let loggerClientOptions: MongoLoggerMongoClientOptions = {}; + if (mongoOptions[loggerFeatureFlag]) { + loggerEnvOptions = { + MONGODB_LOG_COMMAND: process.env.MONGODB_LOG_COMMAND, + MONGODB_LOG_TOPOLOGY: process.env.MONGODB_LOG_TOPOLOGY, + MONGODB_LOG_SERVER_SELECTION: process.env.MONGODB_LOG_SERVER_SELECTION, + MONGODB_LOG_CONNECTION: process.env.MONGODB_LOG_CONNECTION, + MONGODB_LOG_ALL: process.env.MONGODB_LOG_ALL, + MONGODB_LOG_MAX_DOCUMENT_LENGTH: process.env.MONGODB_LOG_MAX_DOCUMENT_LENGTH, + MONGODB_LOG_PATH: process.env.MONGODB_LOG_PATH + }; + loggerClientOptions = { + mongodbLogPath: mongoOptions.mongodbLogPath + }; + } + mongoOptions.mongoLoggerOptions = MongoLogger.resolveOptions( + loggerEnvOptions, + loggerClientOptions + ); + + mongoOptions.metadata = makeClientMetadata(mongoOptions); + return mongoOptions; } +/** + * #### Throws if LB mode is true: + * - hosts contains more than one host + * - there is a replicaSet name set + * - directConnection is set + * - if srvMaxHosts is used when an srv connection string is passed in + * + * @throws MongoParseError + */ function validateLoadBalancedOptions( hosts: HostAddress[] | string[], mongoOptions: MongoOptions, isSrv: boolean -): MongoParseError | undefined { +): void { if (mongoOptions.loadBalanced) { if (hosts.length > 1) { - return new MongoParseError(LB_SINGLE_HOST_ERROR); + throw new MongoParseError(LB_SINGLE_HOST_ERROR); } if (mongoOptions.replicaSet) { - return new MongoParseError(LB_REPLICA_SET_ERROR); + throw new MongoParseError(LB_REPLICA_SET_ERROR); } if (mongoOptions.directConnection) { - return new MongoParseError(LB_DIRECT_CONNECTION_ERROR); + throw new MongoParseError(LB_DIRECT_CONNECTION_ERROR); } if (isSrv && mongoOptions.srvMaxHosts > 0) { - return new MongoParseError('Cannot limit srv hosts with loadBalanced enabled'); + throw new MongoParseError('Cannot limit srv hosts with loadBalanced enabled'); } } return; @@ -551,10 +575,10 @@ function setOption( mongoOptions[name] = getBoolean(name, values[0]); break; case 'int': - mongoOptions[name] = getInt(name, values[0]); + mongoOptions[name] = getIntFromOptions(name, values[0]); break; case 'uint': - mongoOptions[name] = getUint(name, values[0]); + mongoOptions[name] = getUIntFromOptions(name, values[0]); break; case 'string': if (values[0] == null) { @@ -598,10 +622,7 @@ interface OptionDescriptor { export const OPTIONS = { appName: { - target: 'metadata', - transform({ options, values: [value] }): DriverInfo { - return makeClientMetadata({ ...options.driverInfo, appName: String(value) }); - } + type: 'string' }, auth: { target: 'credentials', @@ -747,20 +768,13 @@ export const OPTIONS = { type: 'boolean' }, driverInfo: { - target: 'metadata', - default: makeClientMetadata(), - transform({ options, values: [value] }) { - if (!isRecord(value)) throw new MongoParseError('DriverInfo must be an object'); - return makeClientMetadata({ - driverInfo: value, - appName: options.metadata?.application?.name - }); - } + default: {}, + type: 'record' }, enableUtf8Validation: { type: 'boolean', default: true }, family: { transform({ name, values: [value] }): 4 | 6 { - const transformValue = getInt(name, value); + const transformValue = getIntFromOptions(name, value); if (transformValue === 4 || transformValue === 6) { return transformValue; } @@ -839,9 +853,9 @@ export const OPTIONS = { type: 'uint' }, logger: { - default: new Logger('MongoClient'), + default: new LegacyLogger('MongoClient'), transform({ values: [value] }) { - if (value instanceof Logger) { + if (value instanceof LegacyLogger) { return value; } emitWarning('Alternative loggers might not be supported'); @@ -853,13 +867,13 @@ export const OPTIONS = { loggerLevel: { target: 'logger', transform({ values: [value] }) { - return new Logger('MongoClient', { loggerLevel: value as LoggerLevel }); + return new LegacyLogger('MongoClient', { loggerLevel: value as LegacyLoggerLevel }); } }, maxConnecting: { default: 2, transform({ name, values: [value] }): number { - const maxConnecting = getUint(name, value); + const maxConnecting = getUIntFromOptions(name, value); if (maxConnecting === 0) { throw new MongoInvalidArgumentError('maxConnecting must be > 0 if specified'); } @@ -877,7 +891,7 @@ export const OPTIONS = { maxStalenessSeconds: { target: 'readPreference', transform({ name, options, values: [value] }) { - const maxStalenessSeconds = getUint(name, value); + const maxStalenessSeconds = getUIntFromOptions(name, value); if (options.readPreference) { return ReadPreference.fromOptions({ readPreference: { ...options.readPreference, maxStalenessSeconds } @@ -1188,7 +1202,7 @@ export const OPTIONS = { throw new MongoParseError(`Invalid WriteConcern cannot parse: ${JSON.stringify(value)}`); } - } as OptionDescriptor, + }, wtimeout: { deprecated: 'Please use wtimeoutMS instead', target: 'writeConcern', @@ -1196,7 +1210,7 @@ export const OPTIONS = { const wc = WriteConcern.fromOptions({ writeConcern: { ...options.writeConcern, - wtimeout: getUint('wtimeout', value) + wtimeout: getUIntFromOptions('wtimeout', value) } }); if (wc) return wc; @@ -1209,7 +1223,7 @@ export const OPTIONS = { const wc = WriteConcern.fromOptions({ writeConcern: { ...options.writeConcern, - wtimeoutMS: getUint('wtimeoutMS', value) + wtimeoutMS: getUIntFromOptions('wtimeoutMS', value) } }); if (wc) return wc; @@ -1264,4 +1278,7 @@ export const DEFAULT_OPTIONS = new CaseInsensitiveMap( * Set of permitted feature flags * @internal */ -export const FEATURE_FLAGS = new Set([Symbol.for('@@mdb.skipPingOnConnect')]); +export const FEATURE_FLAGS = new Set([ + Symbol.for('@@mdb.skipPingOnConnect'), + Symbol.for('@@mdb.enableMongoLogger') +]); diff --git a/food-ordering-app/server/node_modules/mongodb/src/constants.ts b/food-ordering-app/server/node_modules/mongodb/src/constants.ts index 2326e8d2c..eec4b0757 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/constants.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/constants.ts @@ -26,6 +26,7 @@ export const TOPOLOGY_DESCRIPTION_CHANGED = 'topologyDescriptionChanged' as cons export const CONNECTION_POOL_CREATED = 'connectionPoolCreated' as const; export const CONNECTION_POOL_CLOSED = 'connectionPoolClosed' as const; export const CONNECTION_POOL_CLEARED = 'connectionPoolCleared' as const; +export const CONNECTION_POOL_READY = 'connectionPoolReady' as const; export const CONNECTION_CREATED = 'connectionCreated' as const; export const CONNECTION_READY = 'connectionReady' as const; export const CONNECTION_CLOSED = 'connectionClosed' as const; @@ -57,6 +58,8 @@ export const HEARTBEAT_EVENTS = Object.freeze([ /** @public */ export const CMAP_EVENTS = Object.freeze([ CONNECTION_POOL_CREATED, + CONNECTION_POOL_READY, + CONNECTION_POOL_CLEARED, CONNECTION_POOL_CLOSED, CONNECTION_CREATED, CONNECTION_READY, @@ -64,8 +67,7 @@ export const CMAP_EVENTS = Object.freeze([ CONNECTION_CHECK_OUT_STARTED, CONNECTION_CHECK_OUT_FAILED, CONNECTION_CHECKED_OUT, - CONNECTION_CHECKED_IN, - CONNECTION_POOL_CLEARED + CONNECTION_CHECKED_IN ] as const); /** @public */ diff --git a/food-ordering-app/server/node_modules/mongodb/src/cursor/abstract_cursor.ts b/food-ordering-app/server/node_modules/mongodb/src/cursor/abstract_cursor.ts index 851f1d5f0..81f30800c 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/cursor/abstract_cursor.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/cursor/abstract_cursor.ts @@ -1,8 +1,10 @@ import { Readable, Transform } from 'stream'; +import { promisify } from 'util'; import { BSONSerializeOptions, Document, Long, pluckBSONSerializeOptions } from '../bson'; import { AnyError, + MongoAPIError, MongoCursorExhaustedError, MongoCursorInUseError, MongoInvalidArgumentError, @@ -14,11 +16,13 @@ import type { MongoClient } from '../mongo_client'; import { TODO_NODE_3286, TypedEventEmitter } from '../mongo_types'; import { executeOperation, ExecutionResult } from '../operations/execute_operation'; import { GetMoreOperation } from '../operations/get_more'; +import { KillCursorsOperation } from '../operations/kill_cursors'; +import { PromiseProvider } from '../promise_provider'; import { ReadConcern, ReadConcernLike } from '../read_concern'; import { ReadPreference, ReadPreferenceLike } from '../read_preference'; import type { Server } from '../sdam/server'; import { ClientSession, maybeClearPinnedConnection } from '../sessions'; -import { Callback, maybePromise, MongoDBNamespace, ns } from '../utils'; +import { Callback, List, maybeCallback, MongoDBNamespace, ns } from '../utils'; /** @internal */ const kId = Symbol('id'); @@ -66,19 +70,31 @@ export interface CursorCloseOptions { /** @public */ export interface CursorStreamOptions { /** A transformation method applied to each document emitted by the stream */ - transform?(doc: Document): Document; + transform?(this: void, doc: Document): Document; } /** @public */ -export type CursorFlag = typeof CURSOR_FLAGS[number]; +export type CursorFlag = (typeof CURSOR_FLAGS)[number]; /** @public */ export interface AbstractCursorOptions extends BSONSerializeOptions { session?: ClientSession; readPreference?: ReadPreferenceLike; readConcern?: ReadConcernLike; + /** + * Specifies the number of documents to return in each response from MongoDB + */ batchSize?: number; + /** + * When applicable `maxTimeMS` controls the amount of time the initial command + * that constructs a cursor should take. (ex. find, aggregate, listCollections) + */ maxTimeMS?: number; + /** + * When applicable `maxAwaitTimeMS` controls the amount of time subsequent getMores + * that a cursor uses to fetch more data should take. (ex. cursor.next()) + */ + maxAwaitTimeMS?: number; /** * Comment to apply to the operation. * @@ -88,7 +104,19 @@ export interface AbstractCursorOptions extends BSONSerializeOptions { * In server versions 4.4 and above, 'comment' can be any valid BSON type. */ comment?: unknown; + /** + * By default, MongoDB will automatically close a cursor when the + * client has exhausted all results in the cursor. However, for [capped collections](https://www.mongodb.com/docs/manual/core/capped-collections) + * you may use a Tailable Cursor that remains open after the client exhausts + * the results in the initial cursor. + */ tailable?: boolean; + /** + * If awaitData is set to true, when the cursor reaches the end of the capped collection, + * MongoDB blocks the query thread for a period of time waiting for new data to arrive. + * When new data is inserted into the capped collection, the blocked thread is signaled + * to wake up and return the next batch to the client. + */ awaitData?: boolean; noCursorTimeout?: boolean; } @@ -116,15 +144,15 @@ export abstract class AbstractCursor< CursorEvents extends AbstractCursorEvents = AbstractCursorEvents > extends TypedEventEmitter { /** @internal */ - [kId]?: Long; + [kId]: Long | null; /** @internal */ - [kSession]?: ClientSession; + [kSession]: ClientSession; /** @internal */ [kServer]?: Server; /** @internal */ [kNamespace]: MongoDBNamespace; /** @internal */ - [kDocuments]: TSchema[]; + [kDocuments]: List; /** @internal */ [kClient]: MongoClient; /** @internal */ @@ -154,7 +182,8 @@ export abstract class AbstractCursor< } this[kClient] = client; this[kNamespace] = namespace; - this[kDocuments] = []; // TODO: https://github.com/microsoft/TypeScript/issues/36230 + this[kId] = null; + this[kDocuments] = new List(); this[kInitialized] = false; this[kClosed] = false; this[kKilled] = false; @@ -185,13 +214,19 @@ export abstract class AbstractCursor< this[kOptions].maxTimeMS = options.maxTimeMS; } + if (typeof options.maxAwaitTimeMS === 'number') { + this[kOptions].maxAwaitTimeMS = options.maxAwaitTimeMS; + } + if (options.session instanceof ClientSession) { this[kSession] = options.session; + } else { + this[kSession] = this[kClient].startSession({ owner: this, explicit: false }); } } get id(): Long | undefined { - return this[kId]; + return this[kId] ?? undefined; } /** @internal */ @@ -217,11 +252,11 @@ export abstract class AbstractCursor< } /** @internal */ - get session(): ClientSession | undefined { + get session(): ClientSession { return this[kSession]; } - set session(clientSession: ClientSession | undefined) { + set session(clientSession: ClientSession) { this[kSession] = clientSession; } @@ -249,22 +284,66 @@ export abstract class AbstractCursor< /** Returns current buffered documents */ readBufferedDocuments(number?: number): TSchema[] { - return this[kDocuments].splice(0, number ?? this[kDocuments].length); + const bufferedDocs: TSchema[] = []; + const documentsToRead = Math.min(number ?? this[kDocuments].length, this[kDocuments].length); + + for (let count = 0; count < documentsToRead; count++) { + const document = this[kDocuments].shift(); + if (document != null) { + bufferedDocs.push(document); + } + } + + return bufferedDocs; } [Symbol.asyncIterator](): AsyncIterator { + async function* nativeAsyncIterator(this: AbstractCursor) { + if (this.closed) { + return; + } + + while (true) { + const document = await this.next(); + + // Intentional strict null check, because users can map cursors to falsey values. + // We allow mapping to all values except for null. + // eslint-disable-next-line no-restricted-syntax + if (document === null) { + if (!this.closed) { + const message = + 'Cursor returned a `null` document, but the cursor is not exhausted. Mapping documents to `null` is not supported in the cursor transform.'; + + await cleanupCursorAsync(this, { needsToEmitClosed: true }).catch(() => null); + + throw new MongoAPIError(message); + } + break; + } + + yield document; + + if (this[kId] === Long.ZERO) { + // Cursor exhausted + break; + } + } + } + + const iterator = nativeAsyncIterator.call(this); + + if (PromiseProvider.get() == null) { + return iterator; + } return { - next: () => - this.next().then(value => - value != null ? { value, done: false } : { value: undefined, done: true } - ) + next: () => maybeCallback(() => iterator.next(), null) }; } stream(options?: CursorStreamOptions): Readable & AsyncIterable { if (options?.transform) { const transform = options.transform; - const readable = makeCursorStream(this); + const readable = new ReadableCursorStream(this); return readable.pipe( new Transform({ @@ -282,71 +361,75 @@ export abstract class AbstractCursor< ); } - return makeCursorStream(this); + return new ReadableCursorStream(this); } hasNext(): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ hasNext(callback: Callback): void; hasNext(callback?: Callback): Promise | void { - return maybePromise(callback, done => { + return maybeCallback(async () => { if (this[kId] === Long.ZERO) { - return done(undefined, false); + return false; } - if (this[kDocuments].length) { - return done(undefined, true); + if (this[kDocuments].length !== 0) { + return true; } - next(this, true, (err, doc) => { - if (err) return done(err); + const doc = await nextAsync(this, true); - if (doc) { - this[kDocuments].unshift(doc); - done(undefined, true); - return; - } + if (doc) { + this[kDocuments].unshift(doc); + return true; + } - done(undefined, false); - }); - }); + return false; + }, callback); } /** Get the next available document from the cursor, returns null if no more documents are available. */ next(): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ next(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ next(callback?: Callback): Promise | void; next(callback?: Callback): Promise | void { - return maybePromise(callback, done => { + return maybeCallback(async () => { if (this[kId] === Long.ZERO) { - return done(new MongoCursorExhaustedError()); + throw new MongoCursorExhaustedError(); } - next(this, true, done); - }); + return nextAsync(this, true); + }, callback); } /** * Try to get the next available document from the cursor or `null` if an empty batch is returned */ tryNext(): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ tryNext(callback: Callback): void; tryNext(callback?: Callback): Promise | void { - return maybePromise(callback, done => { + return maybeCallback(async () => { if (this[kId] === Long.ZERO) { - return done(new MongoCursorExhaustedError()); + throw new MongoCursorExhaustedError(); } - next(this, false, done); - }); + return nextAsync(this, false); + }, callback); } /** * Iterates over all the documents for this cursor using the iterator, callback pattern. * + * If the iterator returns `false`, iteration will stop. + * * @param iterator - The iteration callback. * @param callback - The end callback. */ forEach(iterator: (doc: TSchema) => boolean | void): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ forEach(iterator: (doc: TSchema) => boolean | void, callback: Callback): void; forEach( iterator: (doc: TSchema) => boolean | void, @@ -355,50 +438,25 @@ export abstract class AbstractCursor< if (typeof iterator !== 'function') { throw new MongoInvalidArgumentError('Argument "iterator" must be a function'); } - return maybePromise(callback, done => { - const transform = this[kTransform]; - const fetchDocs = () => { - next(this, true, (err, doc) => { - if (err || doc == null) return done(err); - let result; - // NOTE: no need to transform because `next` will do this automatically - try { - result = iterator(doc); // TODO(NODE-3283): Improve transform typing - } catch (error) { - return done(error); - } - - if (result === false) return done(); - - // these do need to be transformed since they are copying the rest of the batch - const internalDocs = this[kDocuments].splice(0, this[kDocuments].length); - for (let i = 0; i < internalDocs.length; ++i) { - try { - result = iterator( - (transform ? transform(internalDocs[i]) : internalDocs[i]) as TSchema // TODO(NODE-3283): Improve transform typing - ); - } catch (error) { - return done(error); - } - if (result === false) return done(); - } - - fetchDocs(); - }); - }; - - fetchDocs(); - }); + return maybeCallback(async () => { + for await (const document of this) { + const result = iterator(document); + if (result === false) { + break; + } + } + }, callback); } close(): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ close(callback: Callback): void; /** * @deprecated options argument is deprecated */ close(options: CursorCloseOptions): Promise; /** - * @deprecated options argument is deprecated + * @deprecated options argument is deprecated. Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ close(options: CursorCloseOptions, callback: Callback): void; close(options?: CursorCloseOptions | Callback, callback?: Callback): Promise | void { @@ -408,7 +466,7 @@ export abstract class AbstractCursor< const needsToEmitClosed = !this[kClosed]; this[kClosed] = true; - return maybePromise(callback, done => cleanupCursor(this, { needsToEmitClosed }, done)); + return maybeCallback(async () => cleanupCursorAsync(this, { needsToEmitClosed }), callback); } /** @@ -420,37 +478,16 @@ export abstract class AbstractCursor< * @param callback - The result callback. */ toArray(): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ toArray(callback: Callback): void; toArray(callback?: Callback): Promise | void { - return maybePromise(callback, done => { - const docs: TSchema[] = []; - const transform = this[kTransform]; - const fetchDocs = () => { - // NOTE: if we add a `nextBatch` then we should use it here - next(this, true, (err, doc) => { - if (err) return done(err); - if (doc == null) return done(undefined, docs); - - // NOTE: no need to transform because `next` will do this automatically - docs.push(doc); - - // these do need to be transformed since they are copying the rest of the batch - const internalDocs = ( - transform - ? this[kDocuments].splice(0, this[kDocuments].length).map(transform) - : this[kDocuments].splice(0, this[kDocuments].length) - ) as TSchema[]; // TODO(NODE-3283): Improve transform typing - - if (internalDocs) { - docs.push(...internalDocs); - } - - fetchDocs(); - }); - }; - - fetchDocs(); - }); + return maybeCallback(async () => { + const array = []; + for await (const document of this) { + array.push(document); + } + return array; + }, callback); } /** @@ -479,6 +516,29 @@ export abstract class AbstractCursor< * this function's transform. * * @remarks + * + * **Note** Cursors use `null` internally to indicate that there are no more documents in the cursor. Providing a mapping + * function that maps values to `null` will result in the cursor closing itself before it has finished iterating + * all documents. This will **not** result in a memory leak, just surprising behavior. For example: + * + * ```typescript + * const cursor = collection.find({}); + * cursor.map(() => null); + * + * const documents = await cursor.toArray(); + * // documents is always [], regardless of how many documents are in the collection. + * ``` + * + * Other falsey values are allowed: + * + * ```typescript + * const cursor = collection.find({}); + * cursor.map(() => ''); + * + * const documents = await cursor.toArray(); + * // documents is now an array of empty strings + * ``` + * * **Note for Typescript Users:** adding a transform changes the return type of the iteration of this cursor, * it **does not** return a new instance of a cursor. This means when calling map, * you should always assign the result to a new variable in order to get a correctly typed cursor variable. @@ -583,8 +643,8 @@ export abstract class AbstractCursor< return; } - this[kId] = undefined; - this[kDocuments] = []; + this[kId] = null; + this[kDocuments].clear(); this[kClosed] = false; this[kKilled] = false; this[kInitialized] = false; @@ -592,11 +652,12 @@ export abstract class AbstractCursor< const session = this[kSession]; if (session) { // We only want to end this session if we created it, and it hasn't ended yet - if (session.explicit === false && !session.hasEnded) { - session.endSession(); + if (session.explicit === false) { + if (!session.hasEnded) { + session.endSession().catch(() => null); + } + this[kSession] = this.client.startSession({ owner: this, explicit: false }); } - - this[kSession] = undefined; } } @@ -613,21 +674,8 @@ export abstract class AbstractCursor< /** @internal */ _getMore(batchSize: number, callback: Callback): void { - const cursorId = this[kId]; - const cursorNs = this[kNamespace]; - const server = this[kServer]; - - if (cursorId == null) { - callback(new MongoRuntimeError('Unable to iterate cursor with no id')); - return; - } - - if (server == null) { - callback(new MongoRuntimeError('Unable to iterate cursor without selected server')); - return; - } - - const getMoreOperation = new GetMoreOperation(cursorNs, cursorId, server, { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const getMoreOperation = new GetMoreOperation(this[kNamespace], this[kId]!, this[kServer]!, { ...this[kOptions], session: this[kSession], batchSize @@ -644,24 +692,13 @@ export abstract class AbstractCursor< * a significant refactor. */ [kInit](callback: Callback): void { - if (this[kSession] == null) { - if (this[kClient].topology?.shouldCheckForSessionSupport()) { - return this[kClient].topology?.selectServer(ReadPreference.primaryPreferred, {}, err => { - if (err) return callback(err); - return this[kInit](callback); - }); - } else if (this[kClient].topology?.hasSessionSupport()) { - this[kSession] = this[kClient].topology?.startSession({ owner: this, explicit: false }); - } - } - - this._initialize(this[kSession], (err, state) => { + this._initialize(this[kSession], (error, state) => { if (state) { const response = state.response; this[kServer] = state.server; - this[kSession] = state.session; if (response.cursor) { + // TODO(NODE-2674): Preserve int64 sent from MongoDB this[kId] = typeof response.cursor.id === 'number' ? Long.fromNumber(response.cursor.id) @@ -671,7 +708,7 @@ export abstract class AbstractCursor< this[kNamespace] = ns(response.cursor.ns); } - this[kDocuments] = response.cursor.firstBatch; + this[kDocuments].pushMany(response.cursor.firstBatch); } // When server responses return without a cursor document, we close this cursor @@ -680,15 +717,19 @@ export abstract class AbstractCursor< if (this[kId] == null) { this[kId] = Long.ZERO; // TODO(NODE-3286): ExecutionResult needs to accept a generic parameter - this[kDocuments] = [state.response as TODO_NODE_3286]; + this[kDocuments].push(state.response as TODO_NODE_3286); } } // the cursor is now initialized, even if an error occurred or it is dead this[kInitialized] = true; - if (err || cursorIsDead(this)) { - return cleanupCursor(this, { error: err }, () => callback(err, nextDocument(this))); + if (error) { + return cleanupCursor(this, { error }, () => callback(error, undefined)); + } + + if (cursorIsDead(this)) { + return cleanupCursor(this, undefined, () => callback()); } callback(); @@ -696,42 +737,53 @@ export abstract class AbstractCursor< } } -function nextDocument(cursor: AbstractCursor): T | null { - if (cursor[kDocuments] == null || !cursor[kDocuments].length) { - return null; - } - +function nextDocument(cursor: AbstractCursor): T | null { const doc = cursor[kDocuments].shift(); - if (doc) { - const transform = cursor[kTransform]; - if (transform) { - return transform(doc) as T; - } - return doc; + if (doc && cursor[kTransform]) { + return cursor[kTransform](doc) as T; } - return null; + return doc; } -function next(cursor: AbstractCursor, blocking: boolean, callback: Callback): void { +const nextAsync = promisify( + next as ( + cursor: AbstractCursor, + blocking: boolean, + callback: (e: Error, r: T | null) => void + ) => void +); + +/** + * @param cursor - the cursor on which to call `next` + * @param blocking - a boolean indicating whether or not the cursor should `block` until data + * is available. Generally, this flag is set to `false` because if the getMore returns no documents, + * the cursor has been exhausted. In certain scenarios (ChangeStreams, tailable await cursors and + * `tryNext`, for example) blocking is necessary because a getMore returning no documents does + * not indicate the end of the cursor. + * @param callback - callback to return the result to the caller + * @returns + */ +export function next( + cursor: AbstractCursor, + blocking: boolean, + callback: Callback +): void { const cursorId = cursor[kId]; if (cursor.closed) { return callback(undefined, null); } - if (cursor[kDocuments] && cursor[kDocuments].length) { + if (cursor[kDocuments].length !== 0) { callback(undefined, nextDocument(cursor)); return; } if (cursorId == null) { // All cursors must operate within a session, one must be made implicitly if not explicitly provided - cursor[kInit]((err, value) => { + cursor[kInit](err => { if (err) return callback(err); - if (value) { - return callback(undefined, value); - } return next(cursor, blocking, callback); }); @@ -744,19 +796,19 @@ function next(cursor: AbstractCursor, blocking: boolean, callback: Callbac // otherwise need to call getMore const batchSize = cursor[kOptions].batchSize || 1000; - cursor._getMore(batchSize, (err, response) => { + cursor._getMore(batchSize, (error, response) => { if (response) { const cursorId = typeof response.cursor.id === 'number' ? Long.fromNumber(response.cursor.id) : response.cursor.id; - cursor[kDocuments] = response.cursor.nextBatch; + cursor[kDocuments].pushMany(response.cursor.nextBatch); cursor[kId] = cursorId; } - if (err || cursorIsDead(cursor)) { - return cleanupCursor(cursor, { error: err }, () => callback(err, nextDocument(cursor))); + if (error || cursorIsDead(cursor)) { + return cleanupCursor(cursor, { error }, () => callback(error, nextDocument(cursor))); } if (cursor[kDocuments].length === 0 && blocking === false) { @@ -772,6 +824,8 @@ function cursorIsDead(cursor: AbstractCursor): boolean { return !!cursorId && cursorId.isZero(); } +const cleanupCursorAsync = promisify(cleanupCursor); + function cleanupCursor( cursor: AbstractCursor, options: { error?: AnyError | undefined; needsToEmitClosed?: boolean } | undefined, @@ -829,11 +883,11 @@ function cleanupCursor( } cursor[kKilled] = true; - server.killCursors( - cursorNs, - [cursorId], - { ...pluckBSONSerializeOptions(cursor[kOptions]), session }, - () => completeCleanup() + + return executeOperation( + cursor[kClient], + new KillCursorsOperation(cursorId, cursorNs, server, { session }), + completeCleanup ); } @@ -844,77 +898,74 @@ export function assertUninitialized(cursor: AbstractCursor): void { } } -function makeCursorStream(cursor: AbstractCursor) { - const readable = new Readable({ - objectMode: true, - autoDestroy: false, - highWaterMark: 1 - }); - - let initialized = false; - let reading = false; - let needToClose = true; // NOTE: we must close the cursor if we never read from it, use `_construct` in future node versions +class ReadableCursorStream extends Readable { + private _cursor: AbstractCursor; + private _readInProgress = false; - readable._read = function () { - if (initialized === false) { - needToClose = false; - initialized = true; - } - - if (!reading) { - reading = true; - readNext(); - } - }; + constructor(cursor: AbstractCursor) { + super({ + objectMode: true, + autoDestroy: false, + highWaterMark: 1 + }); + this._cursor = cursor; + } - readable._destroy = function (error, cb) { - if (needToClose) { - cursor.close(err => process.nextTick(cb, err || error)); - } else { - cb(error); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + override _read(size: number): void { + if (!this._readInProgress) { + this._readInProgress = true; + this._readNext(); } - }; + } - function readNext() { - needToClose = false; - next(cursor, true, (err, result) => { - needToClose = err ? !cursor.closed : result != null; + override _destroy(error: Error | null, callback: (error?: Error | null) => void): void { + this._cursor.close(err => process.nextTick(callback, err || error)); + } + private _readNext() { + next(this._cursor, true, (err, result) => { if (err) { // NOTE: This is questionable, but we have a test backing the behavior. It seems the // desired behavior is that a stream ends cleanly when a user explicitly closes // a client during iteration. Alternatively, we could do the "right" thing and // propagate the error message by removing this special case. if (err.message.match(/server is closed/)) { - cursor.close(); - return readable.push(null); + this._cursor.close().catch(() => null); + return this.push(null); } // NOTE: This is also perhaps questionable. The rationale here is that these errors tend - // to be "operation interrupted", where a cursor has been closed but there is an + // to be "operation was interrupted", where a cursor has been closed but there is an // active getMore in-flight. This used to check if the cursor was killed but once // that changed to happen in cleanup legitimate errors would not destroy the // stream. There are change streams test specifically test these cases. - if (err.message.match(/interrupted/)) { - return readable.push(null); + if (err.message.match(/operation was interrupted/)) { + return this.push(null); } - return readable.destroy(err); + // NOTE: The two above checks on the message of the error will cause a null to be pushed + // to the stream, thus closing the stream before the destroy call happens. This means + // that either of those error messages on a change stream will not get a proper + // 'error' event to be emitted (the error passed to destroy). Change stream resumability + // relies on that error event to be emitted to create its new cursor and thus was not + // working on 4.4 servers because the error emitted on failover was "interrupted at + // shutdown" while on 5.0+ it is "The server is in quiesce mode and will shut down". + // See NODE-4475. + return this.destroy(err); } if (result == null) { - readable.push(null); - } else if (readable.destroyed) { - cursor.close(); + this.push(null); + } else if (this.destroyed) { + this._cursor.close().catch(() => null); } else { - if (readable.push(result)) { - return readNext(); + if (this.push(result)) { + return this._readNext(); } - reading = false; + this._readInProgress = false; } }); } - - return readable; } diff --git a/food-ordering-app/server/node_modules/mongodb/src/cursor/aggregation_cursor.ts b/food-ordering-app/server/node_modules/mongodb/src/cursor/aggregation_cursor.ts index 350696ee4..981989902 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/cursor/aggregation_cursor.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/cursor/aggregation_cursor.ts @@ -78,8 +78,9 @@ export class AggregationCursor extends AbstractCursor { /** Execute the explain for the cursor */ explain(): Promise; - explain(callback: Callback): void; explain(verbosity: ExplainVerbosityLike): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + explain(callback: Callback): void; explain( verbosity?: ExplainVerbosityLike | Callback, callback?: Callback @@ -209,8 +210,7 @@ export class AggregationCursor extends AbstractCursor { return this; } - // deprecated methods - /** @deprecated Add a geoNear stage to the aggregation pipeline */ + /** Add a geoNear stage to the aggregation pipeline */ geoNear($geoNear: Document): this { assertUninitialized(this); this[kPipeline].push({ $geoNear }); diff --git a/food-ordering-app/server/node_modules/mongodb/src/cursor/change_stream_cursor.ts b/food-ordering-app/server/node_modules/mongodb/src/cursor/change_stream_cursor.ts new file mode 100644 index 000000000..b5a4ae463 --- /dev/null +++ b/food-ordering-app/server/node_modules/mongodb/src/cursor/change_stream_cursor.ts @@ -0,0 +1,194 @@ +import type { Document, Long, Timestamp } from '../bson'; +import { + type ChangeStreamDocument, + type ChangeStreamEvents, + type OperationTime, + type ResumeToken, + ChangeStream +} from '../change_stream'; +import { INIT, RESPONSE } from '../constants'; +import type { MongoClient } from '../mongo_client'; +import type { TODO_NODE_3286 } from '../mongo_types'; +import { AggregateOperation } from '../operations/aggregate'; +import type { CollationOptions } from '../operations/command'; +import { type ExecutionResult, executeOperation } from '../operations/execute_operation'; +import type { ClientSession } from '../sessions'; +import { type Callback, type MongoDBNamespace, maxWireVersion } from '../utils'; +import { type AbstractCursorOptions, AbstractCursor } from './abstract_cursor'; + +/** @internal */ +export interface ChangeStreamCursorOptions extends AbstractCursorOptions { + startAtOperationTime?: OperationTime; + resumeAfter?: ResumeToken; + startAfter?: ResumeToken; + maxAwaitTimeMS?: number; + collation?: CollationOptions; + fullDocument?: string; +} + +/** @internal */ +export type ChangeStreamAggregateRawResult = { + $clusterTime: { clusterTime: Timestamp }; + cursor: { + postBatchResumeToken: ResumeToken; + ns: string; + id: number | Long; + } & ({ firstBatch: TChange[] } | { nextBatch: TChange[] }); + ok: 1; + operationTime: Timestamp; +}; + +/** @internal */ +export class ChangeStreamCursor< + TSchema extends Document = Document, + TChange extends Document = ChangeStreamDocument +> extends AbstractCursor { + _resumeToken: ResumeToken; + startAtOperationTime?: OperationTime; + hasReceived?: boolean; + resumeAfter: ResumeToken; + startAfter: ResumeToken; + options: ChangeStreamCursorOptions; + + postBatchResumeToken?: ResumeToken; + pipeline: Document[]; + + /** + * @internal + * + * used to determine change stream resumability + */ + maxWireVersion: number | undefined; + + constructor( + client: MongoClient, + namespace: MongoDBNamespace, + pipeline: Document[] = [], + options: ChangeStreamCursorOptions = {} + ) { + super(client, namespace, options); + + this.pipeline = pipeline; + this.options = options; + this._resumeToken = null; + this.startAtOperationTime = options.startAtOperationTime; + + if (options.startAfter) { + this.resumeToken = options.startAfter; + } else if (options.resumeAfter) { + this.resumeToken = options.resumeAfter; + } + } + + set resumeToken(token: ResumeToken) { + this._resumeToken = token; + this.emit(ChangeStream.RESUME_TOKEN_CHANGED, token); + } + + get resumeToken(): ResumeToken { + return this._resumeToken; + } + + get resumeOptions(): ChangeStreamCursorOptions { + const options: ChangeStreamCursorOptions = { + ...this.options + }; + + for (const key of ['resumeAfter', 'startAfter', 'startAtOperationTime'] as const) { + delete options[key]; + } + + if (this.resumeToken != null) { + if (this.options.startAfter && !this.hasReceived) { + options.startAfter = this.resumeToken; + } else { + options.resumeAfter = this.resumeToken; + } + } else if (this.startAtOperationTime != null && maxWireVersion(this.server) >= 7) { + options.startAtOperationTime = this.startAtOperationTime; + } + + return options; + } + + cacheResumeToken(resumeToken: ResumeToken): void { + if (this.bufferedCount() === 0 && this.postBatchResumeToken) { + this.resumeToken = this.postBatchResumeToken; + } else { + this.resumeToken = resumeToken; + } + this.hasReceived = true; + } + + _processBatch(response: ChangeStreamAggregateRawResult): void { + const cursor = response.cursor; + if (cursor.postBatchResumeToken) { + this.postBatchResumeToken = response.cursor.postBatchResumeToken; + + const batch = + 'firstBatch' in response.cursor ? response.cursor.firstBatch : response.cursor.nextBatch; + if (batch.length === 0) { + this.resumeToken = cursor.postBatchResumeToken; + } + } + } + + clone(): AbstractCursor { + return new ChangeStreamCursor(this.client, this.namespace, this.pipeline, { + ...this.cursorOptions + }); + } + + _initialize(session: ClientSession, callback: Callback): void { + const aggregateOperation = new AggregateOperation(this.namespace, this.pipeline, { + ...this.cursorOptions, + ...this.options, + session + }); + + executeOperation>( + session.client, + aggregateOperation, + (err, response) => { + if (err || response == null) { + return callback(err); + } + + const server = aggregateOperation.server; + this.maxWireVersion = maxWireVersion(server); + + if ( + this.startAtOperationTime == null && + this.resumeAfter == null && + this.startAfter == null && + this.maxWireVersion >= 7 + ) { + this.startAtOperationTime = response.operationTime; + } + + this._processBatch(response); + + this.emit(INIT, response); + this.emit(RESPONSE); + + // TODO: NODE-2882 + callback(undefined, { server, session, response }); + } + ); + } + + override _getMore(batchSize: number, callback: Callback): void { + super._getMore(batchSize, (err, response) => { + if (err) { + return callback(err); + } + + this.maxWireVersion = maxWireVersion(this.server); + this._processBatch(response as TODO_NODE_3286 as ChangeStreamAggregateRawResult); + + this.emit(ChangeStream.MORE, response); + this.emit(ChangeStream.RESPONSE); + callback(err, response); + }); + } +} diff --git a/food-ordering-app/server/node_modules/mongodb/src/cursor/find_cursor.ts b/food-ordering-app/server/node_modules/mongodb/src/cursor/find_cursor.ts index 8034bfd7c..49f4f95cb 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/cursor/find_cursor.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/cursor/find_cursor.ts @@ -122,11 +122,11 @@ export class FindCursor extends AbstractCursor { * @deprecated Use `collection.estimatedDocumentCount` or `collection.countDocuments` instead */ count(): Promise; - /** @deprecated Use `collection.estimatedDocumentCount` or `collection.countDocuments` instead */ - count(callback: Callback): void; - /** @deprecated Use `collection.estimatedDocumentCount` or `collection.countDocuments` instead */ + /** @deprecated Use `collection.estimatedDocumentCount` or `collection.countDocuments` instead. */ count(options: CountOptions): Promise; - /** @deprecated Use `collection.estimatedDocumentCount` or `collection.countDocuments` instead */ + /** @deprecated Use `collection.estimatedDocumentCount` or `collection.countDocuments` instead. Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + count(callback: Callback): void; + /** @deprecated Use `collection.estimatedDocumentCount` or `collection.countDocuments` instead. Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ count(options: CountOptions, callback: Callback): void; count( options?: CountOptions | Callback, @@ -155,8 +155,9 @@ export class FindCursor extends AbstractCursor { /** Execute the explain for the cursor */ explain(): Promise; - explain(callback: Callback): void; explain(verbosity?: ExplainVerbosityLike): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + explain(callback: Callback): void; explain( verbosity?: ExplainVerbosityLike | Callback, callback?: Callback @@ -419,7 +420,7 @@ export class FindCursor extends AbstractCursor { throw new MongoInvalidArgumentError('Option "allowDiskUse" requires a sort specification'); } - // As of 6.0 the default is true. This allows users to get back to the old behaviour. + // As of 6.0 the default is true. This allows users to get back to the old behavior. if (!allow) { this[kBuiltOptions].allowDiskUse = false; return this; diff --git a/food-ordering-app/server/node_modules/mongodb/src/cursor/list_collections_cursor.ts b/food-ordering-app/server/node_modules/mongodb/src/cursor/list_collections_cursor.ts new file mode 100644 index 000000000..460126be8 --- /dev/null +++ b/food-ordering-app/server/node_modules/mongodb/src/cursor/list_collections_cursor.ts @@ -0,0 +1,52 @@ +import type { Document } from '../bson'; +import type { Db } from '../db'; +import { executeOperation, ExecutionResult } from '../operations/execute_operation'; +import { + CollectionInfo, + ListCollectionsOperation, + ListCollectionsOptions +} from '../operations/list_collections'; +import type { ClientSession } from '../sessions'; +import type { Callback } from '../utils'; +import { AbstractCursor } from './abstract_cursor'; + +/** @public */ +export class ListCollectionsCursor< + T extends Pick | CollectionInfo = + | Pick + | CollectionInfo +> extends AbstractCursor { + parent: Db; + filter: Document; + options?: ListCollectionsOptions; + + constructor(db: Db, filter: Document, options?: ListCollectionsOptions) { + super(db.s.client, db.s.namespace, options); + this.parent = db; + this.filter = filter; + this.options = options; + } + + clone(): ListCollectionsCursor { + return new ListCollectionsCursor(this.parent, this.filter, { + ...this.options, + ...this.cursorOptions + }); + } + + /** @internal */ + _initialize(session: ClientSession | undefined, callback: Callback): void { + const operation = new ListCollectionsOperation(this.parent, this.filter, { + ...this.cursorOptions, + ...this.options, + session + }); + + executeOperation(this.parent.s.client, operation, (err, response) => { + if (err || response == null) return callback(err); + + // TODO: NODE-2882 + callback(undefined, { server: operation.server, session, response }); + }); + } +} diff --git a/food-ordering-app/server/node_modules/mongodb/src/cursor/list_indexes_cursor.ts b/food-ordering-app/server/node_modules/mongodb/src/cursor/list_indexes_cursor.ts new file mode 100644 index 000000000..25336d84d --- /dev/null +++ b/food-ordering-app/server/node_modules/mongodb/src/cursor/list_indexes_cursor.ts @@ -0,0 +1,41 @@ +import type { Collection } from '../collection'; +import { executeOperation, ExecutionResult } from '../operations/execute_operation'; +import { ListIndexesOperation, ListIndexesOptions } from '../operations/indexes'; +import type { ClientSession } from '../sessions'; +import type { Callback } from '../utils'; +import { AbstractCursor } from './abstract_cursor'; + +/** @public */ +export class ListIndexesCursor extends AbstractCursor { + parent: Collection; + options?: ListIndexesOptions; + + constructor(collection: Collection, options?: ListIndexesOptions) { + super(collection.s.db.s.client, collection.s.namespace, options); + this.parent = collection; + this.options = options; + } + + clone(): ListIndexesCursor { + return new ListIndexesCursor(this.parent, { + ...this.options, + ...this.cursorOptions + }); + } + + /** @internal */ + _initialize(session: ClientSession | undefined, callback: Callback): void { + const operation = new ListIndexesOperation(this.parent, { + ...this.cursorOptions, + ...this.options, + session + }); + + executeOperation(this.parent.s.db.s.client, operation, (err, response) => { + if (err || response == null) return callback(err); + + // TODO: NODE-2882 + callback(undefined, { server: operation.server, session, response }); + }); + } +} diff --git a/food-ordering-app/server/node_modules/mongodb/src/db.ts b/food-ordering-app/server/node_modules/mongodb/src/db.ts index 3f6a1f0f1..5e8d339c7 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/db.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/db.ts @@ -4,6 +4,7 @@ import { ChangeStream, ChangeStreamDocument, ChangeStreamOptions } from './chang import { Collection, CollectionOptions } from './collection'; import * as CONSTANTS from './constants'; import { AggregationCursor } from './cursor/aggregation_cursor'; +import { ListCollectionsCursor } from './cursor/list_collections_cursor'; import { MongoAPIError, MongoInvalidArgumentError } from './error'; import { Logger, LoggerOptions } from './logger'; import type { MongoClient, PkFactory } from './mongo_client'; @@ -26,11 +27,7 @@ import { IndexInformationOperation, IndexSpecification } from './operations/indexes'; -import { - CollectionInfo, - ListCollectionsCursor, - ListCollectionsOptions -} from './operations/list_collections'; +import type { CollectionInfo, ListCollectionsOptions } from './operations/list_collections'; import { ProfilingLevelOperation, ProfilingLevelOptions } from './operations/profiling_level'; import { RemoveUserOperation, RemoveUserOptions } from './operations/remove_user'; import { RenameOperation, RenameOptions } from './operations/rename'; @@ -113,18 +110,21 @@ export interface DbOptions extends BSONSerializeOptions, WriteConcernOptions, Lo * @public * * @example - * ```js - * const { MongoClient } = require('mongodb'); - * // Connection url - * const url = 'mongodb://localhost:27017'; - * // Database Name - * const dbName = 'test'; - * // Connect using MongoClient - * MongoClient.connect(url, function(err, client) { - * // Select the database by name - * const testDb = client.db(dbName); - * client.close(); - * }); + * ```ts + * import { MongoClient } from 'mongodb'; + * + * interface Pet { + * name: string; + * kind: 'dog' | 'cat' | 'fish'; + * } + * + * const client = new MongoClient('mongodb://localhost:27017'); + * const db = client.db(); + * + * // Create a collection that validates our union + * await db.createCollection('pets', { + * validator: { $expr: { $in: ['$kind', ['dog', 'cat', 'fish']] } } + * }) * ``` */ export class Db { @@ -241,10 +241,12 @@ export class Db { name: string, options?: CreateCollectionOptions ): Promise>; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ createCollection( name: string, callback: Callback> ): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ createCollection( name: string, options: CreateCollectionOptions | undefined, @@ -275,8 +277,10 @@ export class Db { * @param callback - An optional callback, a Promise will be returned if none is provided */ command(command: Document): Promise; - command(command: Document, callback: Callback): void; command(command: Document, options: RunCommandOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + command(command: Document, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ command(command: Document, options: RunCommandOptions, callback: Callback): void; command( command: Document, @@ -350,8 +354,10 @@ export class Db { * @param callback - An optional callback, a Promise will be returned if none is provided */ stats(): Promise; - stats(callback: Callback): void; stats(options: DbStatsOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + stats(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ stats(options: DbStatsOptions, callback: Callback): void; stats( options?: DbStatsOptions | Callback, @@ -410,13 +416,15 @@ export class Db { renameCollection( fromCollection: string, toCollection: string, - callback: Callback> - ): void; + options: RenameOptions + ): Promise>; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ renameCollection( fromCollection: string, toCollection: string, - options: RenameOptions - ): Promise>; + callback: Callback> + ): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ renameCollection( fromCollection: string, toCollection: string, @@ -456,8 +464,10 @@ export class Db { * @param callback - An optional callback, a Promise will be returned if none is provided */ dropCollection(name: string): Promise; - dropCollection(name: string, callback: Callback): void; dropCollection(name: string, options: DropCollectionOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + dropCollection(name: string, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ dropCollection(name: string, options: DropCollectionOptions, callback: Callback): void; dropCollection( name: string, @@ -480,8 +490,10 @@ export class Db { * @param callback - An optional callback, a Promise will be returned if none is provided */ dropDatabase(): Promise; - dropDatabase(callback: Callback): void; dropDatabase(options: DropDatabaseOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + dropDatabase(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ dropDatabase(options: DropDatabaseOptions, callback: Callback): void; dropDatabase( options?: DropDatabaseOptions | Callback, @@ -503,8 +515,10 @@ export class Db { * @param callback - An optional callback, a Promise will be returned if none is provided */ collections(): Promise; - collections(callback: Callback): void; collections(options: ListCollectionsOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + collections(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ collections(options: ListCollectionsOptions, callback: Callback): void; collections( options?: ListCollectionsOptions | Callback, @@ -528,12 +542,14 @@ export class Db { * @param callback - An optional callback, a Promise will be returned if none is provided */ createIndex(name: string, indexSpec: IndexSpecification): Promise; - createIndex(name: string, indexSpec: IndexSpecification, callback?: Callback): void; createIndex( name: string, indexSpec: IndexSpecification, options: CreateIndexesOptions ): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + createIndex(name: string, indexSpec: IndexSpecification, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ createIndex( name: string, indexSpec: IndexSpecification, @@ -564,12 +580,16 @@ export class Db { * @param callback - An optional callback, a Promise will be returned if none is provided */ addUser(username: string): Promise; - addUser(username: string, callback: Callback): void; addUser(username: string, password: string): Promise; - addUser(username: string, password: string, callback: Callback): void; addUser(username: string, options: AddUserOptions): Promise; - addUser(username: string, options: AddUserOptions, callback: Callback): void; addUser(username: string, password: string, options: AddUserOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + addUser(username: string, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + addUser(username: string, password: string, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + addUser(username: string, options: AddUserOptions, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ addUser( username: string, password: string, @@ -609,8 +629,10 @@ export class Db { * @param callback - An optional callback, a Promise will be returned if none is provided */ removeUser(username: string): Promise; - removeUser(username: string, callback: Callback): void; removeUser(username: string, options: RemoveUserOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + removeUser(username: string, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ removeUser(username: string, options: RemoveUserOptions, callback: Callback): void; removeUser( username: string, @@ -634,11 +656,13 @@ export class Db { * @param callback - An optional callback, a Promise will be returned if none is provided */ setProfilingLevel(level: ProfilingLevel): Promise; - setProfilingLevel(level: ProfilingLevel, callback: Callback): void; setProfilingLevel( level: ProfilingLevel, options: SetProfilingLevelOptions ): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + setProfilingLevel(level: ProfilingLevel, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ setProfilingLevel( level: ProfilingLevel, options: SetProfilingLevelOptions, @@ -665,8 +689,10 @@ export class Db { * @param callback - An optional callback, a Promise will be returned if none is provided */ profilingLevel(): Promise; - profilingLevel(callback: Callback): void; profilingLevel(options: ProfilingLevelOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + profilingLevel(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ profilingLevel(options: ProfilingLevelOptions, callback: Callback): void; profilingLevel( options?: ProfilingLevelOptions | Callback, @@ -689,8 +715,10 @@ export class Db { * @param callback - An optional callback, a Promise will be returned if none is provided */ indexInformation(name: string): Promise; - indexInformation(name: string, callback: Callback): void; indexInformation(name: string, options: IndexInformationOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + indexInformation(name: string, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ indexInformation( name: string, options: IndexInformationOptions, @@ -724,7 +752,7 @@ export class Db { * changes to system collections. * * @remarks - * watch() accepts two generic arguments for distinct usecases: + * watch() accepts two generic arguments for distinct use cases: * - The first is to provide the schema that may be defined for all the collections within this database * - The second is to override the shape of the change stream document entirely, if it is not provided the type will default to ChangeStreamDocument of the first argument * @@ -746,11 +774,15 @@ export class Db { return new ChangeStream(this, pipeline, resolveOptions(this, options)); } - /** Return the db logger */ + /** + * Return the db logger + * @deprecated The Legacy Logger is deprecated and will be removed in the next major version. + */ getLogger(): Logger { return this.s.logger; } + /** @deprecated The Legacy Logger is deprecated and will be removed in the next major version. */ get logger(): Logger { return this.s.logger; } diff --git a/food-ordering-app/server/node_modules/mongodb/src/deps.ts b/food-ordering-app/server/node_modules/mongodb/src/deps.ts index 1c3ab68eb..ef5f24f3a 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/deps.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/deps.ts @@ -1,5 +1,6 @@ /* eslint-disable @typescript-eslint/no-var-requires */ import type { deserialize, Document, serialize } from './bson'; +import type { AWSCredentials } from './cmap/auth/mongodb_aws'; import type { ProxyOptions } from './cmap/connection'; import { MongoMissingDependencyError } from './error'; import type { MongoClient } from './mongo_client'; @@ -35,13 +36,12 @@ try { } catch {} // eslint-disable-line export interface KerberosClient { - step: (challenge: string, callback?: Callback) => Promise | void; - wrap: ( - challenge: string, - options?: { user: string }, - callback?: Callback - ) => Promise | void; - unwrap: (challenge: string, callback?: Callback) => Promise | void; + step(challenge: string): Promise; + step(challenge: string, callback: Callback): void; + wrap(challenge: string, options: { user: string }): Promise; + wrap(challenge: string, options: { user: string }, callback: Callback): void; + unwrap(challenge: string): Promise; + unwrap(challenge: string, callback: Callback): void; } type ZStandardLib = { @@ -68,6 +68,27 @@ try { ZStandard = require('@mongodb-js/zstd'); } catch {} // eslint-disable-line +type CredentialProvider = { + fromNodeProviderChain(this: void): () => Promise; +}; + +export function getAwsCredentialProvider(): + | CredentialProvider + | { kModuleError: MongoMissingDependencyError } { + try { + // Ensure you always wrap an optional require in the try block NODE-3199 + const credentialProvider = require('@aws-sdk/credential-providers'); + return credentialProvider; + } catch { + return makeErrorModule( + new MongoMissingDependencyError( + 'Optional module `@aws-sdk/credential-providers` not found.' + + ' Please install it to enable getting aws credentials via the official sdk.' + ) + ); + } +} + type SnappyLib = { [PKG_VERSION]: { major: number; minor: number; patch: number }; @@ -80,11 +101,7 @@ type SnappyLib = { * @param callback - ONLY USED IN SNAPPY 6.x */ compress(buf: Buffer): Promise; - compress(buf: Buffer, callback: (error?: Error, buffer?: Buffer) => void): Promise | void; - compress( - buf: Buffer, - callback?: (error?: Error, buffer?: Buffer) => void - ): Promise | void; + compress(buf: Buffer, callback: (error?: Error, buffer?: Buffer) => void): void; /** * - Snappy 6.x takes a callback and returns void @@ -99,12 +116,7 @@ type SnappyLib = { buf: Buffer, opt: { asBuffer: true }, callback: (error?: Error, buffer?: Buffer) => void - ): Promise | void; - uncompress( - buf: Buffer, - opt: { asBuffer: true }, - callback?: (error?: Error, buffer?: Buffer) => void - ): Promise | void; + ): void; }; export let Snappy: SnappyLib | { kModuleError: MongoMissingDependencyError } = makeErrorModule( @@ -121,17 +133,18 @@ try { } catch {} // eslint-disable-line } catch {} // eslint-disable-line -export let saslprep: typeof import('saslprep') | { kModuleError: MongoMissingDependencyError } = - makeErrorModule( - new MongoMissingDependencyError( - 'Optional module `saslprep` not found.' + - ' Please install it to enable Stringprep Profile for User Names and Passwords' - ) - ); +export let saslprep: + | typeof import('@mongodb-js/saslprep') + | { kModuleError: MongoMissingDependencyError } = makeErrorModule( + new MongoMissingDependencyError( + 'Optional module `@mongodb-js/saslprep` not found.' + + ' Please install it to enable Stringprep Profile for User Names and Passwords' + ) +); try { // Ensure you always wrap an optional require in the try block NODE-3199 - saslprep = require('saslprep'); + saslprep = require('@mongodb-js/saslprep'); } catch {} // eslint-disable-line interface AWS4 { @@ -141,6 +154,7 @@ interface AWS4 { * @param credentials - AWS credential details, sessionToken should be omitted entirely if its false-y */ sign( + this: void, options: { path: '/'; body: string; @@ -196,7 +210,7 @@ export const AutoEncryptionLoggerLevel = Object.freeze({ /** @public */ export type AutoEncryptionLoggerLevel = - typeof AutoEncryptionLoggerLevel[keyof typeof AutoEncryptionLoggerLevel]; + (typeof AutoEncryptionLoggerLevel)[keyof typeof AutoEncryptionLoggerLevel]; /** @public */ export interface AutoEncryptionTlsOptions { @@ -297,15 +311,15 @@ export interface AutoEncryptionOptions { * * **NOTE**: Supplying options.schemaMap provides more security than relying on JSON Schemas obtained from the server. * It protects against a malicious server advertising a false JSON Schema, which could trick the client into sending decrypted data that should be encrypted. - * Schemas supplied in the schemaMap only apply to configuring automatic encryption for client side encryption. + * Schemas supplied in the schemaMap only apply to configuring automatic encryption for Client-Side Field Level Encryption. * Other validation rules in the JSON schema will not be enforced by the driver and will result in an error. */ schemaMap?: Document; - /** @experimental */ + /** @experimental Public Technical Preview: Supply a schema for the encrypted fields in the document */ encryptedFieldsMap?: Document; /** Allows the user to bypass auto encryption, maintaining implicit decryption */ bypassAutoEncryption?: boolean; - /** @experimental */ + /** @experimental Public Technical Preview: Allows users to bypass query analysis */ bypassQueryAnalysis?: boolean; options?: { /** An optional hook to catch logging messages from the underlying encryption engine */ @@ -344,7 +358,7 @@ export interface AutoEncryptionOptions { * * Specifying a path prevents mongocryptd from being used as a fallback. * - * @experimental Requires the MongoDB Crypt shared library, available in MongoDB 6.0 or higher. + * Requires the MongoDB Crypt shared library, available in MongoDB 6.0 or higher. */ cryptSharedLibPath?: string; /** @@ -353,7 +367,7 @@ export interface AutoEncryptionOptions { * * This is always true when `cryptSharedLibPath` is specified. * - * @experimental Requires the MongoDB Crypt shared library, available in MongoDB 6.0 or higher. + * Requires the MongoDB Crypt shared library, available in MongoDB 6.0 or higher. */ cryptSharedLibRequired?: boolean; /** diff --git a/food-ordering-app/server/node_modules/mongodb/src/encrypter.ts b/food-ordering-app/server/node_modules/mongodb/src/encrypter.ts index de654ef12..8fe18aa36 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/encrypter.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/encrypter.ts @@ -4,9 +4,9 @@ import { MONGO_CLIENT_EVENTS } from './constants'; import type { AutoEncrypter, AutoEncryptionOptions } from './deps'; import { MongoInvalidArgumentError, MongoMissingDependencyError } from './error'; import { MongoClient, MongoClientOptions } from './mongo_client'; -import type { Callback } from './utils'; +import { Callback, getMongoDBClientEncryption } from './utils'; -let AutoEncrypterClass: AutoEncrypter; +let AutoEncrypterClass: { new (...args: ConstructorParameters): AutoEncrypter }; /** @internal */ const kInternalClient = Symbol('internalClient'); @@ -101,15 +101,13 @@ export class Encrypter { return internalClient; } - connectInternalClient(callback: Callback): void { + async connectInternalClient(): Promise { // TODO(NODE-4144): Remove new variable for type narrowing const internalClient = this[kInternalClient]; if (this.needsConnecting && internalClient != null) { this.needsConnecting = false; - return internalClient.connect(callback); + await internalClient.connect(); } - - return callback(); } close(client: MongoClient, force: boolean, callback: Callback): void { @@ -123,23 +121,13 @@ export class Encrypter { } static checkForMongoCrypt(): void { - let mongodbClientEncryption = undefined; - // Ensure you always wrap an optional require in the try block NODE-3199 - try { - // Note (NODE-4254): This is to get around the circular dependency between - // mongodb-client-encryption and the driver in the test scenarios. - if (process.env.MONGODB_CLIENT_ENCRYPTION_OVERRIDE) { - mongodbClientEncryption = require(process.env.MONGODB_CLIENT_ENCRYPTION_OVERRIDE); - } else { - mongodbClientEncryption = require('mongodb-client-encryption'); - } - } catch (err) { + const mongodbClientEncryption = getMongoDBClientEncryption(); + if (mongodbClientEncryption == null) { throw new MongoMissingDependencyError( 'Auto-encryption requested, but the module is not installed. ' + 'Please add `mongodb-client-encryption` as a dependency of your project' ); } - AutoEncrypterClass = mongodbClientEncryption.extension(require('../lib/index')).AutoEncrypter; } } diff --git a/food-ordering-app/server/node_modules/mongodb/src/error.ts b/food-ordering-app/server/node_modules/mongodb/src/error.ts index 7a788b923..6e5f6a515 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/error.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/error.ts @@ -89,11 +89,14 @@ export const MongoErrorLabel = Object.freeze({ TransientTransactionError: 'TransientTransactionError', UnknownTransactionCommitResult: 'UnknownTransactionCommitResult', ResumableChangeStreamError: 'ResumableChangeStreamError', - HandshakeError: 'HandshakeError' + HandshakeError: 'HandshakeError', + ResetPool: 'ResetPool', + InterruptInUseConnections: 'InterruptInUseConnections', + NoWritesPerformed: 'NoWritesPerformed' } as const); /** @public */ -export type MongoErrorLabel = typeof MongoErrorLabel[keyof typeof MongoErrorLabel]; +export type MongoErrorLabel = (typeof MongoErrorLabel)[keyof typeof MongoErrorLabel]; /** @public */ export interface ErrorDescription extends Document { @@ -104,12 +107,16 @@ export interface ErrorDescription extends Document { errInfo?: Document; } +function isAggregateError(e: Error): e is Error & { errors: Error[] } { + return 'errors' in e && Array.isArray(e.errors); +} + /** * @public * @category Error * * @privateRemarks - * CSFLE has a dependency on this error, it uses the constructor with a string argument + * mongodb-client-encryption has a dependency on this error, it uses the constructor with a string argument */ export class MongoError extends Error { /** @internal */ @@ -121,16 +128,34 @@ export class MongoError extends Error { */ code?: number | string; topologyVersion?: TopologyVersion; + connectionGeneration?: number; + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + cause?: Error; // depending on the node version, this may or may not exist on the base constructor(message: string | Error) { + super(MongoError.buildErrorMessage(message)); if (message instanceof Error) { - super(message.message); - } else { - super(message); + this.cause = message; } + this[kErrorLabels] = new Set(); } + /** @internal */ + private static buildErrorMessage(e: Error | string): string { + if (typeof e === 'string') { + return e; + } + if (isAggregateError(e) && e.message.length === 0) { + return e.errors.length === 0 + ? 'AggregateError has an empty errors array. Please check the `cause` property for more information.' + : e.errors.map(({ message }) => message).join(', '); + } + + return e.message; + } + override get name(): string { return 'MongoError'; } @@ -561,7 +586,7 @@ export class MongoNetworkError extends MongoError { * @category Error * * @privateRemarks - * CSFLE has a dependency on this error with an instanceof check + * mongodb-client-encryption has a dependency on this error with an instanceof check */ export class MongoNetworkTimeoutError extends MongoNetworkError { constructor(message: string, options?: MongoNetworkErrorOptions) { diff --git a/food-ordering-app/server/node_modules/mongodb/src/gridfs/download.ts b/food-ordering-app/server/node_modules/mongodb/src/gridfs/download.ts index a13cdac39..41a67d915 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/gridfs/download.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/gridfs/download.ts @@ -12,16 +12,21 @@ import { import type { FindOptions } from '../operations/find'; import type { ReadPreference } from '../read_preference'; import type { Sort } from '../sort'; -import type { Callback } from '../utils'; +import { Callback, maybeCallback } from '../utils'; import type { GridFSChunk } from './upload'; /** @public */ export interface GridFSBucketReadStreamOptions { sort?: Sort; skip?: number; - /** 0-based offset in bytes to start streaming from */ + /** + * 0-indexed non-negative byte offset from the beginning of the file + */ start?: number; - /** 0-based offset in bytes to stop streaming before */ + /** + * 0-indexed non-negative byte offset to the end of the file contents + * to be returned by the stream. `end` is non-inclusive + */ end?: number; } @@ -103,11 +108,12 @@ export class GridFSBucketReadStream extends Readable implements NodeJS.ReadableS */ static readonly CLOSE = 'close' as const; - /** @internal + /** * @param chunks - Handle for chunks collection * @param files - Handle for files collection * @param readPreference - The read preference to use * @param filter - The filter to use to find the file document + * @internal */ constructor( chunks: Collection, @@ -179,22 +185,26 @@ export class GridFSBucketReadStream extends Readable implements NodeJS.ReadableS * * @param callback - called when the cursor is successfully closed or an error occurred. */ - abort(callback?: Callback): void { - this.push(null); - this.destroyed = true; - if (this.s.cursor) { - this.s.cursor.close(error => { - this.emit(GridFSBucketReadStream.CLOSE); - callback && callback(error); - }); - } else { - if (!this.s.init) { - // If not initialized, fire close event because we will never - // get a cursor - this.emit(GridFSBucketReadStream.CLOSE); + abort(): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + abort(callback: Callback): void; + abort(callback?: Callback): Promise | void { + return maybeCallback(async () => { + this.push(null); + this.destroyed = true; + if (this.s.cursor) { + await this.s.cursor.close().catch(error => { + this.emit(GridFSBucketReadStream.CLOSE); + throw error; + }); + } else { + if (!this.s.init) { + // If not initialized, fire close event because we will never + // get a cursor + this.emit(GridFSBucketReadStream.CLOSE); + } } - callback && callback(); - } + }, callback); } } @@ -220,16 +230,14 @@ function doRead(stream: GridFSBucketReadStream): void { if (!doc) { stream.push(null); - process.nextTick(() => { - if (!stream.s.cursor) return; - stream.s.cursor.close(error => { - if (error) { - stream.emit(GridFSBucketReadStream.ERROR, error); - return; - } + if (!stream.s.cursor) return; + stream.s.cursor.close(error => { + if (error) { + stream.emit(GridFSBucketReadStream.ERROR, error); + return; + } - stream.emit(GridFSBucketReadStream.CLOSE); - }); + stream.emit(GridFSBucketReadStream.CLOSE); }); return; diff --git a/food-ordering-app/server/node_modules/mongodb/src/gridfs/index.ts b/food-ordering-app/server/node_modules/mongodb/src/gridfs/index.ts index a2a1c3dcc..ef23fbef4 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/gridfs/index.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/gridfs/index.ts @@ -7,7 +7,7 @@ import type { Logger } from '../logger'; import { Filter, TypedEventEmitter } from '../mongo_types'; import type { ReadPreference } from '../read_preference'; import type { Sort } from '../sort'; -import { Callback, maybePromise } from '../utils'; +import { Callback, maybeCallback } from '../utils'; import { WriteConcern, WriteConcernOptions } from '../write_concern'; import type { FindOptions } from './../operations/find'; import { @@ -141,30 +141,21 @@ export class GridFSBucket extends TypedEventEmitter { * @param id - The id of the file doc */ delete(id: ObjectId): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ delete(id: ObjectId, callback: Callback): void; delete(id: ObjectId, callback?: Callback): Promise | void { - return maybePromise(callback, callback => { - return this.s._filesCollection.deleteOne({ _id: id }, (error, res) => { - if (error) { - return callback(error); - } + return maybeCallback(async () => { + const { deletedCount } = await this.s._filesCollection.deleteOne({ _id: id }); - return this.s._chunksCollection.deleteMany({ files_id: id }, error => { - if (error) { - return callback(error); - } + // Delete orphaned chunks before returning FileNotFound + await this.s._chunksCollection.deleteMany({ files_id: id }); - // Delete orphaned chunks before returning FileNotFound - if (!res?.deletedCount) { - // TODO(NODE-3483): Replace with more appropriate error - // Consider creating new error MongoGridFSFileNotFoundError - return callback(new MongoRuntimeError(`File not found for id ${id}`)); - } - - return callback(); - }); - }); - }); + if (deletedCount === 0) { + // TODO(NODE-3483): Replace with more appropriate error + // Consider creating new error MongoGridFSFileNotFoundError + throw new MongoRuntimeError(`File not found for id ${id}`); + } + }, callback); } /** Convenience wrapper around find on the files collection */ @@ -211,46 +202,35 @@ export class GridFSBucket extends TypedEventEmitter { * @param filename - new name for the file */ rename(id: ObjectId, filename: string): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ rename(id: ObjectId, filename: string, callback: Callback): void; rename(id: ObjectId, filename: string, callback?: Callback): Promise | void { - return maybePromise(callback, callback => { + return maybeCallback(async () => { const filter = { _id: id }; const update = { $set: { filename } }; - return this.s._filesCollection.updateOne(filter, update, (error?, res?) => { - if (error) { - return callback(error); - } - - if (!res?.matchedCount) { - return callback(new MongoRuntimeError(`File with id ${id} not found`)); - } - - return callback(); - }); - }); + const { matchedCount } = await this.s._filesCollection.updateOne(filter, update); + if (matchedCount === 0) { + throw new MongoRuntimeError(`File with id ${id} not found`); + } + }, callback); } /** Removes this bucket's files collection, followed by its chunks collection. */ drop(): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ drop(callback: Callback): void; drop(callback?: Callback): Promise | void { - return maybePromise(callback, callback => { - return this.s._filesCollection.drop(error => { - if (error) { - return callback(error); - } - return this.s._chunksCollection.drop(error => { - if (error) { - return callback(error); - } - - return callback(); - }); - }); - }); + return maybeCallback(async () => { + await this.s._filesCollection.drop(); + await this.s._chunksCollection.drop(); + }, callback); } - /** Get the Db scoped logger. */ + /** + * Get the Db scoped logger. + * + * @deprecated Legacy Logger is deprecated and will be removed in the next major version. + */ getLogger(): Logger { return this.s.db.s.logger; } diff --git a/food-ordering-app/server/node_modules/mongodb/src/gridfs/upload.ts b/food-ordering-app/server/node_modules/mongodb/src/gridfs/upload.ts index ae0d67899..f2597b079 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/gridfs/upload.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/gridfs/upload.ts @@ -4,7 +4,7 @@ import type { Document } from '../bson'; import { ObjectId } from '../bson'; import type { Collection } from '../collection'; import { AnyError, MongoAPIError, MONGODB_ERROR_CODES, MongoError } from '../error'; -import { Callback, maybePromise } from '../utils'; +import { Callback, maybeCallback } from '../utils'; import type { WriteConcernOptions } from '../write_concern'; import { WriteConcern } from './../write_concern'; import type { GridFSFile } from './download'; @@ -69,10 +69,11 @@ export class GridFSBucketWriteStream extends Writable implements NodeJS.Writable */ static readonly FINISH = 'finish'; - /** @internal + /** * @param bucket - Handle for this stream's corresponding bucket * @param filename - The value of the 'filename' key in the files doc * @param options - Optional settings. + * @internal */ constructor(bucket: GridFSBucket, filename: string, options?: GridFSBucketWriteStreamOptions) { super(); @@ -137,7 +138,6 @@ export class GridFSBucketWriteStream extends Writable implements NodeJS.Writable return waitForIndexes(this, () => doWrite(this, chunk, encoding, callback)); } - // TODO(NODE-3405): Refactor this with maybePromise and MongoStreamClosedError /** * Places this write stream into an aborted state (all future writes fail) * and deletes all chunks that have already been written. @@ -145,22 +145,23 @@ export class GridFSBucketWriteStream extends Writable implements NodeJS.Writable * @param callback - called when chunks are successfully removed or error occurred */ abort(): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ abort(callback: Callback): void; abort(callback?: Callback): Promise | void { - return maybePromise(callback, callback => { + return maybeCallback(async () => { if (this.state.streamEnd) { // TODO(NODE-3485): Replace with MongoGridFSStreamClosed - return callback(new MongoAPIError('Cannot abort a stream that has already completed')); + throw new MongoAPIError('Cannot abort a stream that has already completed'); } if (this.state.aborted) { // TODO(NODE-3485): Replace with MongoGridFSStreamClosed - return callback(new MongoAPIError('Cannot call abort() on a stream twice')); + throw new MongoAPIError('Cannot call abort() on a stream twice'); } this.state.aborted = true; - this.chunks.deleteMany({ files_id: this.id }, error => callback(error)); - }); + await this.chunks.deleteMany({ files_id: this.id }); + }, callback); } /** diff --git a/food-ordering-app/server/node_modules/mongodb/src/index.ts b/food-ordering-app/server/node_modules/mongodb/src/index.ts index 410af2ee8..24c2ea1cb 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/index.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/index.ts @@ -1,18 +1,26 @@ import { Admin } from './admin'; import { ObjectId } from './bson'; +import { OrderedBulkOperation } from './bulk/ordered'; +import { UnorderedBulkOperation } from './bulk/unordered'; +import { ChangeStream } from './change_stream'; import { Collection } from './collection'; import { AbstractCursor } from './cursor/abstract_cursor'; import { AggregationCursor } from './cursor/aggregation_cursor'; import { FindCursor } from './cursor/find_cursor'; +import { ListCollectionsCursor } from './cursor/list_collections_cursor'; +import { ListIndexesCursor } from './cursor/list_indexes_cursor'; import { Db } from './db'; import { GridFSBucket } from './gridfs'; +import { GridFSBucketReadStream } from './gridfs/download'; +import { GridFSBucketWriteStream } from './gridfs/upload'; import { Logger } from './logger'; import { MongoClient } from './mongo_client'; import { CancellationToken } from './mongo_types'; -import { ListIndexesCursor } from './operations/indexes'; -import { ListCollectionsCursor } from './operations/list_collections'; import { PromiseProvider } from './promise_provider'; +import { ClientSession } from './sessions'; +/** @internal */ +export { BSON } from './bson'; export { Binary, BSONRegExp, @@ -29,6 +37,7 @@ export { ObjectId, Timestamp } from './bson'; +export { ChangeStreamCursor } from './cursor/change_stream_cursor'; /** * @public * @deprecated Please use `ObjectId` @@ -75,18 +84,25 @@ export { Admin, AggregationCursor, CancellationToken, + ChangeStream, + ClientSession, Collection, Db, FindCursor, GridFSBucket, + GridFSBucketReadStream, + GridFSBucketWriteStream, ListCollectionsCursor, ListIndexesCursor, Logger, MongoClient, - // Utils - PromiseProvider as Promise + OrderedBulkOperation, + UnorderedBulkOperation }; +// Deprecated, remove in next major +export { PromiseProvider as Promise }; + // enums export { BatchType } from './bulk/common'; export { GSSAPICanonicalizationValue } from './cmap/auth/gssapi'; @@ -127,6 +143,7 @@ export { ConnectionPoolClosedEvent, ConnectionPoolCreatedEvent, ConnectionPoolMonitoringEvent, + ConnectionPoolReadyEvent, ConnectionReadyEvent } from './cmap/connection_pool_events'; export { @@ -166,16 +183,10 @@ export type { FindOperators, WriteConcernErrorData } from './bulk/common'; -export type { OrderedBulkOperation } from './bulk/ordered'; -export type { UnorderedBulkOperation } from './bulk/unordered'; export type { - ChangeStream, - ChangeStreamAggregateRawResult, ChangeStreamCollModDocument, ChangeStreamCreateDocument, ChangeStreamCreateIndexDocument, - ChangeStreamCursor, - ChangeStreamCursorOptions, ChangeStreamDeleteDocument, ChangeStreamDocument, ChangeStreamDocumentCollectionUUID, @@ -209,11 +220,8 @@ export type { } from './cmap/auth/mongo_credentials'; export type { BinMsg, - GetMore, - KillCursor, MessageHeader, Msg, - OpGetMoreOptions, OpMsgOptions, OpQueryOptions, OpResponseOptions, @@ -229,17 +237,18 @@ export type { ConnectionOptions, DestroyOptions, GetMoreOptions, - ProxyOptions, - QueryOptions + ProxyOptions } from './cmap/connection'; export type { CloseOptions, ConnectionPool, ConnectionPoolEvents, ConnectionPoolOptions, + PoolState, WaitQueueMember, WithConnectionCallback } from './cmap/connection_pool'; +export type { ClientMetadata, ClientMetadataOptions } from './cmap/handshake/client_metadata'; export type { MessageStream, MessageStreamOptions, @@ -259,24 +268,23 @@ export type { } from './cursor/abstract_cursor'; export type { InternalAbstractCursorOptions } from './cursor/abstract_cursor'; export type { AggregationCursorOptions } from './cursor/aggregation_cursor'; +export type { + ChangeStreamAggregateRawResult, + ChangeStreamCursorOptions +} from './cursor/change_stream_cursor'; export type { DbOptions, DbPrivate } from './db'; export type { AutoEncrypter, AutoEncryptionOptions, AutoEncryptionTlsOptions } from './deps'; export type { Encrypter, EncrypterOptions } from './encrypter'; export type { AnyError, ErrorDescription, MongoNetworkErrorOptions } from './error'; export type { Explain, ExplainOptions, ExplainVerbosityLike } from './explain'; export type { - GridFSBucketReadStream, GridFSBucketReadStreamOptions, GridFSBucketReadStreamOptionsWithRevision, GridFSBucketReadStreamPrivate, GridFSFile } from './gridfs/download'; export type { GridFSBucketEvents, GridFSBucketOptions, GridFSBucketPrivate } from './gridfs/index'; -export type { - GridFSBucketWriteStream, - GridFSBucketWriteStreamOptions, - GridFSChunk -} from './gridfs/upload'; +export type { GridFSBucketWriteStreamOptions, GridFSChunk } from './gridfs/upload'; export type { LoggerFunction, LoggerOptions } from './logger'; export type { Auth, @@ -293,6 +301,14 @@ export type { SupportedTLSSocketOptions, WithSessionCallback } from './mongo_client'; +export type { + MongoLoggableComponent, + MongoLogger, + MongoLoggerEnvOptions, + MongoLoggerMongoClientOptions, + MongoLoggerOptions, + SeverityLevel +} from './mongo_logger'; export type { CommonEvents, EventsDescription, @@ -303,6 +319,7 @@ export type { AcceptedFields, AddToSetOperators, AlternativeType, + ArrayElement, ArrayOperator, BitwiseFilter, BSONTypeAlias, @@ -320,6 +337,7 @@ export type { KeysOfOtherType, MatchKeysAndValues, NestedPaths, + NestedPathsOfType, NonObjectIdLikeDocument, NotAcceptedFields, NumericType, @@ -421,6 +439,8 @@ export type { ClusterTime, TimerQueue } from './sdam/common'; export type { Monitor, MonitorEvents, + MonitorInterval, + MonitorIntervalOptions, MonitorOptions, MonitorPrivate, RTTPinger, @@ -448,7 +468,6 @@ export type { } from './sdam/topology'; export type { TopologyDescription, TopologyDescriptionOptions } from './sdam/topology_description'; export type { - ClientSession, ClientSessionEvents, ClientSessionOptions, EndSessionOptions, @@ -462,11 +481,9 @@ export type { Transaction, TransactionOptions, TxnState } from './transactions'; export type { BufferPool, Callback, - ClientMetadata, - ClientMetadataOptions, EventEmitterWithState, HostAddress, - InterruptibleAsyncInterval, + List, MongoDBNamespace } from './utils'; export type { W, WriteConcernOptions, WriteConcernSettings } from './write_concern'; diff --git a/food-ordering-app/server/node_modules/mongodb/src/logger.ts b/food-ordering-app/server/node_modules/mongodb/src/logger.ts index 22609c868..c7b3e63ac 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/logger.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/logger.ts @@ -15,7 +15,10 @@ const pid = process.pid; // eslint-disable-next-line no-console let currentLogger: LoggerFunction = console.warn; -/** @public */ +/** + * @public + * @deprecated The Legacy Logger is deprecated and will be removed in the next major version. + */ export const LoggerLevel = Object.freeze({ ERROR: 'error', WARN: 'warn', @@ -27,13 +30,22 @@ export const LoggerLevel = Object.freeze({ debug: 'debug' } as const); -/** @public */ -export type LoggerLevel = typeof LoggerLevel[keyof typeof LoggerLevel]; +/** + * @public + * @deprecated The Legacy Logger is deprecated and will be removed in the next major version. + */ +export type LoggerLevel = (typeof LoggerLevel)[keyof typeof LoggerLevel]; -/** @public */ +/** + * @public + * @deprecated The Legacy Logger is deprecated and will be removed in the next major version. + */ export type LoggerFunction = (message?: any, ...optionalParams: any[]) => void; -/** @public */ +/** + * @public + * @deprecated The Legacy Logger is deprecated and will be removed in the next major version. + */ export interface LoggerOptions { logger?: LoggerFunction; loggerLevel?: LoggerLevel; @@ -41,6 +53,7 @@ export interface LoggerOptions { /** * @public + * @deprecated This logger is unused and will be removed in the next major version. */ export class Logger { className: string; diff --git a/food-ordering-app/server/node_modules/mongodb/src/mongo_client.ts b/food-ordering-app/server/node_modules/mongodb/src/mongo_client.ts index 068142e2c..12a41c7ab 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/mongo_client.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/mongo_client.ts @@ -1,5 +1,6 @@ import type { TcpNetConnectOpts } from 'net'; import type { ConnectionOptions as TLSConnectionOptions, TLSSocketOptions } from 'tls'; +import { promisify } from 'util'; import { BSONSerializeOptions, Document, resolveBSONOptions } from './bson'; import { ChangeStream, ChangeStreamDocument, ChangeStreamOptions } from './change_stream'; @@ -7,33 +8,33 @@ import type { AuthMechanismProperties, MongoCredentials } from './cmap/auth/mong import type { AuthMechanism } from './cmap/auth/providers'; import type { LEGAL_TCP_SOCKET_OPTIONS, LEGAL_TLS_SOCKET_OPTIONS } from './cmap/connect'; import type { Connection } from './cmap/connection'; +import type { ClientMetadata } from './cmap/handshake/client_metadata'; import type { CompressorName } from './cmap/wire_protocol/compression'; -import { parseOptions } from './connection_string'; -import type { MONGO_CLIENT_EVENTS } from './constants'; +import { parseOptions, resolveSRVRecord } from './connection_string'; +import { MONGO_CLIENT_EVENTS } from './constants'; import { Db, DbOptions } from './db'; import type { AutoEncrypter, AutoEncryptionOptions } from './deps'; import type { Encrypter } from './encrypter'; -import { MongoInvalidArgumentError, MongoNotConnectedError } from './error'; -import type { Logger, LoggerLevel } from './logger'; +import { MongoInvalidArgumentError } from './error'; +import type { Logger as LegacyLogger, LoggerLevel as LegacyLoggerLevel } from './logger'; +import { MongoLogger, MongoLoggerOptions } from './mongo_logger'; import { TypedEventEmitter } from './mongo_types'; -import { connect } from './operations/connect'; -import { PromiseProvider } from './promise_provider'; import type { ReadConcern, ReadConcernLevel, ReadConcernLike } from './read_concern'; -import type { ReadPreference, ReadPreferenceMode } from './read_preference'; +import { ReadPreference, ReadPreferenceMode } from './read_preference'; import type { TagSet } from './sdam/server_description'; +import { readPreferenceServerSelector } from './sdam/server_selection'; import type { SrvPoller } from './sdam/srv_polling'; -import type { Topology, TopologyEvents } from './sdam/topology'; -import type { ClientSession, ClientSessionOptions } from './sessions'; +import { Topology, TopologyEvents } from './sdam/topology'; +import { ClientSession, ClientSessionOptions, ServerSessionPool } from './sessions'; import { Callback, - ClientMetadata, HostAddress, - maybePromise, + maybeCallback, MongoDBNamespace, ns, resolveOptions } from './utils'; -import type { W, WriteConcern } from './write_concern'; +import type { W, WriteConcern, WriteConcernSettings } from './write_concern'; /** @public */ export const ServerApiVersion = Object.freeze({ @@ -41,7 +42,7 @@ export const ServerApiVersion = Object.freeze({ } as const); /** @public */ -export type ServerApiVersion = typeof ServerApiVersion[keyof typeof ServerApiVersion]; +export type ServerApiVersion = (typeof ServerApiVersion)[keyof typeof ServerApiVersion]; /** @public */ export interface ServerApi { @@ -73,19 +74,19 @@ export interface PkFactory { /** @public */ export type SupportedTLSConnectionOptions = Pick< TLSConnectionOptions, - Extract + Extract >; /** @public */ export type SupportedTLSSocketOptions = Pick< TLSSocketOptions, - Extract + Extract >; /** @public */ export type SupportedSocketOptions = Pick< TcpNetConnectOpts, - typeof LEGAL_TCP_SOCKET_OPTIONS[number] + (typeof LEGAL_TCP_SOCKET_OPTIONS)[number] >; /** @public */ @@ -183,14 +184,28 @@ export interface MongoClientOptions extends BSONSerializeOptions, SupportedNodeC directConnection?: boolean; /** Instruct the driver it is connecting to a load balancer fronting a mongos like service */ loadBalanced?: boolean; - - /** The write concern w value */ + /** + * The write concern w value + * @deprecated Please use the `writeConcern` option instead + */ w?: W; - /** The write concern timeout */ + /** + * The write concern timeout + * @deprecated Please use the `writeConcern` option instead + */ wtimeoutMS?: number; - /** The journal write concern */ + /** + * The journal write concern + * @deprecated Please use the `writeConcern` option instead + */ journal?: boolean; - + /** + * A MongoDB WriteConcern, which describes the level of acknowledgement + * requested from MongoDB for write operations. + * + * @see https://docs.mongodb.com/manual/reference/write-concern/ + */ + writeConcern?: WriteConcern | WriteConcernSettings; /** Validate mongod server certificate against Certificate Authority */ sslValidate?: boolean; /** SSL Certificate file path. */ @@ -211,22 +226,29 @@ export interface MongoClientOptions extends BSONSerializeOptions, SupportedNodeC keepAliveInitialDelay?: number; /** Force server to assign `_id` values instead of driver */ forceServerObjectId?: boolean; - /** Return document results as raw BSON buffers */ - raw?: boolean; /** A primary key factory function for generation of custom `_id` keys */ pkFactory?: PkFactory; - /** A Promise library class the application wishes to use such as Bluebird, must be ES6 compatible */ + /** + * A Promise library class the application wishes to use such as Bluebird, must be ES6 compatible + * @deprecated Setting a custom promise library is deprecated the next major version will use the global Promise constructor only. + */ promiseLibrary?: any; - /** The logging level */ - loggerLevel?: LoggerLevel; - /** Custom logger object */ - logger?: Logger; + /** + * The logging level + * @deprecated The Legacy Logger is deprecated and will be removed in the next major version. + */ + loggerLevel?: LegacyLoggerLevel; + /** + * Custom logger object + * @deprecated The Legacy Logger is deprecated and will be removed in the next major version. + */ + logger?: LegacyLogger; /** Enable command monitoring for this client */ monitorCommands?: boolean; /** Server API version */ serverApi?: ServerApi | ServerApiVersion; /** - * Optionally enable client side auto encryption + * Optionally enable in-use auto encryption * * @remarks * Automatic encryption is an enterprise only feature that only applies to operations on a collection. Automatic encryption is not supported for operations on a database or view, and operations that are not bypassed will result in error @@ -267,20 +289,26 @@ export type WithSessionCallback = (session: ClientSession) => Promise; /** @internal */ export interface MongoClientPrivate { url: string; - sessions: Set; bsonOptions: BSONSerializeOptions; namespace: MongoDBNamespace; hasBeenClosed: boolean; + /** + * We keep a reference to the sessions that are acquired from the pool. + * - used to track and close all sessions in client.close() (which is non-standard behavior) + * - used to notify the leak checker in our tests if test author forgot to clean up explicit sessions + */ + readonly activeSessions: Set; + readonly sessionPool: ServerSessionPool; readonly options: MongoOptions; readonly readConcern?: ReadConcern; readonly writeConcern?: WriteConcern; readonly readPreference: ReadPreference; - readonly logger: Logger; + readonly logger: LegacyLogger; readonly isMongoClient: true; } /** @public */ -export type MongoClientEvents = Pick & { +export type MongoClientEvents = Pick & { // In previous versions the open event emitted a topology, in an effort to no longer // expose internals but continue to expose this useful event API, it now emits a mongoClient open(mongoClient: MongoClient): void; @@ -294,39 +322,18 @@ const kOptions = Symbol('options'); * @public * * @remarks - * The programmatically provided options take precedent over the URI options. + * The programmatically provided options take precedence over the URI options. * * @example - * ```js - * // Connect using a MongoClient instance - * const MongoClient = require('mongodb').MongoClient; - * const test = require('assert'); - * // Connection url - * const url = 'mongodb://localhost:27017'; - * // Database Name - * const dbName = 'test'; - * // Connect using MongoClient - * const mongoClient = new MongoClient(url); - * mongoClient.connect(function(err, client) { - * const db = client.db(dbName); - * client.close(); - * }); - * ``` + * ```ts + * import { MongoClient } from 'mongodb'; * - * @example - * ```js - * // Connect using the MongoClient.connect static method - * const MongoClient = require('mongodb').MongoClient; - * const test = require('assert'); - * // Connection url - * const url = 'mongodb://localhost:27017'; - * // Database Name - * const dbName = 'test'; - * // Connect using MongoClient - * MongoClient.connect(url, function(err, client) { - * const db = client.db(dbName); - * client.close(); - * }); + * // Enable command monitoring for debugging + * const client = new MongoClient('mongodb://localhost:27017', { monitorCommands: true }); + * + * client.on('commandStarted', started => console.log(started)); + * client.db().collection('pets'); + * await client.insertOne({ name: 'spot', kind: 'dog' }); * ``` */ export class MongoClient extends TypedEventEmitter { @@ -334,6 +341,10 @@ export class MongoClient extends TypedEventEmitter { s: MongoClientPrivate; /** @internal */ topology?: Topology; + /** @internal */ + readonly mongoLogger: MongoLogger; + /** @internal */ + private connectionLock?: Promise; /** * The consolidate, parsed, transformed and merged options. @@ -345,6 +356,7 @@ export class MongoClient extends TypedEventEmitter { super(); this[kOptions] = parseOptions(url, this, options); + this.mongoLogger = new MongoLogger(this[kOptions].mongoLoggerOptions); // eslint-disable-next-line @typescript-eslint/no-this-alias const client = this; @@ -352,10 +364,11 @@ export class MongoClient extends TypedEventEmitter { // The internal state this.s = { url, - sessions: new Set(), bsonOptions: resolveBSONOptions(this[kOptions]), namespace: ns('admin'), hasBeenClosed: false, + sessionPool: new ServerSessionPool(this), + activeSessions: new Set(), get options() { return client[kOptions]; @@ -378,6 +391,7 @@ export class MongoClient extends TypedEventEmitter { }; } + /** @see MongoOptions */ get options(): Readonly { return Object.freeze({ ...this[kOptions] }); } @@ -416,7 +430,8 @@ export class MongoClient extends TypedEventEmitter { return this.s.bsonOptions; } - get logger(): Logger { + /** @deprecated The Legacy Logger is deprecated and will be removed in the next major version. */ + get logger(): LegacyLogger { return this.s.logger; } @@ -426,20 +441,74 @@ export class MongoClient extends TypedEventEmitter { * @see docs.mongodb.org/manual/reference/connection-string/ */ connect(): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ connect(callback: Callback): void; connect(callback?: Callback): Promise | void { if (callback && typeof callback !== 'function') { throw new MongoInvalidArgumentError('Method `connect` only accepts a callback'); } - return maybePromise(callback, cb => { - connect(this, this[kOptions], err => { - if (err) return cb(err); - cb(undefined, this); - }); - }); + return maybeCallback(async () => { + if (this.connectionLock) { + return this.connectionLock; + } + try { + this.connectionLock = this._connect(); + await this.connectionLock; + return this; + } finally { + this.connectionLock = undefined; + } + }, callback); } + private async _connect(): Promise { + if (this.topology && this.topology.isConnected()) { + return this; + } + + const options = this[kOptions]; + + if (typeof options.srvHost === 'string') { + const hosts = await resolveSRVRecord(options); + + for (const [index, host] of hosts.entries()) { + options.hosts[index] = host; + } + } + + const topology = new Topology(options.hosts, options); + // Events can be emitted before initialization is complete so we have to + // save the reference to the topology on the client ASAP if the event handlers need to access it + this.topology = topology; + topology.client = this; + + topology.once(Topology.OPEN, () => this.emit('open', this)); + + for (const event of MONGO_CLIENT_EVENTS) { + topology.on(event, (...args: any[]): unknown => this.emit(event, ...(args as any))); + } + + const topologyConnect = async () => { + try { + await promisify(callback => topology.connect(options, callback))(); + } catch (error) { + topology.close({ force: true }); + throw error; + } + }; + + if (this.autoEncrypter) { + const initAutoEncrypter = promisify(callback => this.autoEncrypter?.init(callback)); + await initAutoEncrypter(); + await topologyConnect(); + await options.encrypter.connectInternalClient(); + } else { + await topologyConnect(); + } + + return this; + } /** * Close the db and its underlying connections * @@ -447,8 +516,10 @@ export class MongoClient extends TypedEventEmitter { * @param callback - An optional callback, a Promise will be returned if none is provided */ close(): Promise; - close(callback: Callback): void; close(force: boolean): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + close(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ close(force: boolean, callback: Callback): void; close( forceOrCallback?: boolean | Callback, @@ -468,26 +539,52 @@ export class MongoClient extends TypedEventEmitter { const force = typeof forceOrCallback === 'boolean' ? forceOrCallback : false; - return maybePromise(callback, callback => { + return maybeCallback(async () => { + const activeSessionEnds = Array.from(this.s.activeSessions, session => session.endSession()); + this.s.activeSessions.clear(); + + await Promise.all(activeSessionEnds); + if (this.topology == null) { - return callback(); + return; + } + + // If we would attempt to select a server and get nothing back we short circuit + // to avoid the server selection timeout. + const selector = readPreferenceServerSelector(ReadPreference.primaryPreferred); + const topologyDescription = this.topology.description; + const serverDescriptions = Array.from(topologyDescription.servers.values()); + const servers = selector(topologyDescription, serverDescriptions); + if (servers.length !== 0) { + const endSessions = Array.from(this.s.sessionPool.sessions, ({ id }) => id); + if (endSessions.length !== 0) { + await this.db('admin') + .command( + { endSessions }, + { readPreference: ReadPreference.primaryPreferred, noResponse: true } + ) + .catch(() => null); // outcome does not matter + } } // clear out references to old topology const topology = this.topology; this.topology = undefined; - topology.close({ force }, error => { - if (error) return callback(error); - const { encrypter } = this[kOptions]; - if (encrypter) { - return encrypter.close(this, force, error => { - callback(error); - }); - } - callback(); + await new Promise((resolve, reject) => { + topology.close({ force }, error => { + if (error) return reject(error); + const { encrypter } = this[kOptions]; + if (encrypter) { + return encrypter.close(this, force, error => { + if (error) return reject(error); + resolve(); + }); + } + resolve(); + }); }); - }); + }, callback); } /** @@ -518,47 +615,50 @@ export class MongoClient extends TypedEventEmitter { * Connect to MongoDB using a url * * @remarks - * The programmatically provided options take precedent over the URI options. + * The programmatically provided options take precedence over the URI options. * * @see https://docs.mongodb.org/manual/reference/connection-string/ */ static connect(url: string): Promise; - static connect(url: string, callback: Callback): void; static connect(url: string, options: MongoClientOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + static connect(url: string, callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ static connect(url: string, options: MongoClientOptions, callback: Callback): void; static connect( url: string, options?: MongoClientOptions | Callback, callback?: Callback ): Promise | void { - if (typeof options === 'function') (callback = options), (options = {}); - options = options ?? {}; - - try { - // Create client - const mongoClient = new MongoClient(url, options); - // Execute the connect method - if (callback) { - return mongoClient.connect(callback); - } else { - return mongoClient.connect(); - } - } catch (error) { - if (callback) return callback(error); - else return PromiseProvider.get().reject(error); - } + callback = + typeof callback === 'function' + ? callback + : typeof options === 'function' + ? options + : undefined; + + return maybeCallback(async () => { + options = typeof options !== 'function' ? options : undefined; + const client = new this(url, options); + return client.connect(); + }, callback); } /** Starts a new session on the server */ startSession(): ClientSession; startSession(options: ClientSessionOptions): ClientSession; startSession(options?: ClientSessionOptions): ClientSession { - options = Object.assign({ explicit: true }, options); - if (!this.topology) { - throw new MongoNotConnectedError('MongoClient must be connected to start a session'); - } - - return this.topology.startSession(options, this.s.options); + const session = new ClientSession( + this, + this.s.sessionPool, + { explicit: true, ...options }, + this[kOptions] + ); + this.s.activeSessions.add(session); + session.once('ended', () => { + this.s.activeSessions.delete(session); + }); + return session; } /** @@ -591,14 +691,18 @@ export class MongoClient extends TypedEventEmitter { } const session = this.startSession(options); - const Promise = PromiseProvider.get(); - - return Promise.resolve() - .then(() => withSessionCallback(session)) - .then(() => { - // Do not return the result of callback - }) - .finally(() => session.endSession()); + + return maybeCallback(async () => { + try { + await withSessionCallback(session); + } finally { + try { + await session.endSession(); + } catch { + // We are not concerned with errors from endSession() + } + } + }, null); } /** @@ -607,7 +711,7 @@ export class MongoClient extends TypedEventEmitter { * changes to system collections, as well as the local, admin, and config databases. * * @remarks - * watch() accepts two generic arguments for distinct usecases: + * watch() accepts two generic arguments for distinct use cases: * - The first is to provide the schema that may be defined for all the data within the current cluster * - The second is to override the shape of the change stream document entirely, if it is not provided the type will default to ChangeStreamDocument of the first argument * @@ -629,14 +733,32 @@ export class MongoClient extends TypedEventEmitter { return new ChangeStream(this, pipeline, resolveOptions(this, options)); } - /** Return the mongo client logger */ - getLogger(): Logger { + /** + * Return the mongo client logger + * @deprecated The Legacy Logger is deprecated and will be removed in the next major version. + */ + getLogger(): LegacyLogger { return this.s.logger; } } /** - * Mongo Client Options + * Parsed Mongo Client Options. + * + * User supplied options are documented by `MongoClientOptions`. + * + * **NOTE:** The client's options parsing is subject to change to support new features. + * This type is provided to aid with inspection of options after parsing, it should not be relied upon programmatically. + * + * Options are sourced from: + * - connection string + * - options object passed to the MongoClient constructor + * - file system (ex. tls settings) + * - environment variables + * - DNS SRV records and TXT records + * + * Not all options may be present after client construction as some are obtained from asynchronous operations. + * * @public */ export interface MongoOptions @@ -678,6 +800,7 @@ export interface MongoOptions > >, SupportedNodeConnectionOptions { + appName?: string; hosts: HostAddress[]; srvHost?: string; credentials?: MongoCredentials; @@ -694,6 +817,7 @@ export interface MongoOptions proxyPort?: number; proxyUsername?: string; proxyPassword?: string; + /** @internal */ connectionType?: typeof Connection; @@ -725,4 +849,7 @@ export interface MongoOptions /** @internal */ [featureFlag: symbol]: any; + + /** @internal */ + mongoLoggerOptions: MongoLoggerOptions; } diff --git a/food-ordering-app/server/node_modules/mongodb/src/mongo_logger.ts b/food-ordering-app/server/node_modules/mongodb/src/mongo_logger.ts new file mode 100644 index 000000000..16bd66c8f --- /dev/null +++ b/food-ordering-app/server/node_modules/mongodb/src/mongo_logger.ts @@ -0,0 +1,201 @@ +import { Writable } from 'stream'; + +import { parseUnsignedInteger } from './utils'; + +/** @internal */ +export const SeverityLevel = Object.freeze({ + EMERGENCY: 'emergency', + ALERT: 'alert', + CRITICAL: 'critical', + ERROR: 'error', + WARNING: 'warn', + NOTICE: 'notice', + INFORMATIONAL: 'info', + DEBUG: 'debug', + TRACE: 'trace', + OFF: 'off' +} as const); + +/** @internal */ +export type SeverityLevel = (typeof SeverityLevel)[keyof typeof SeverityLevel]; + +/** @internal */ +export const MongoLoggableComponent = Object.freeze({ + COMMAND: 'command', + TOPOLOGY: 'topology', + SERVER_SELECTION: 'serverSelection', + CONNECTION: 'connection' +} as const); + +/** @internal */ +export type MongoLoggableComponent = + (typeof MongoLoggableComponent)[keyof typeof MongoLoggableComponent]; + +/** @internal */ +export interface MongoLoggerEnvOptions { + /** Severity level for command component */ + MONGODB_LOG_COMMAND?: string; + /** Severity level for topology component */ + MONGODB_LOG_TOPOLOGY?: string; + /** Severity level for server selection component */ + MONGODB_LOG_SERVER_SELECTION?: string; + /** Severity level for CMAP */ + MONGODB_LOG_CONNECTION?: string; + /** Default severity level to be if any of the above are unset */ + MONGODB_LOG_ALL?: string; + /** Max length of embedded EJSON docs. Setting to 0 disables truncation. Defaults to 1000. */ + MONGODB_LOG_MAX_DOCUMENT_LENGTH?: string; + /** Destination for log messages. Must be 'stderr', 'stdout'. Defaults to 'stderr'. */ + MONGODB_LOG_PATH?: string; +} + +/** @internal */ +export interface MongoLoggerMongoClientOptions { + /** Destination for log messages */ + mongodbLogPath?: 'stdout' | 'stderr' | Writable; +} + +/** @internal */ +export interface MongoLoggerOptions { + componentSeverities: { + /** Severity level for command component */ + command: SeverityLevel; + /** Severity level for topology component */ + topology: SeverityLevel; + /** Severity level for server selection component */ + serverSelection: SeverityLevel; + /** Severity level for connection component */ + connection: SeverityLevel; + /** Default severity level to be used if any of the above are unset */ + default: SeverityLevel; + }; + + /** Max length of embedded EJSON docs. Setting to 0 disables truncation. Defaults to 1000. */ + maxDocumentLength: number; + /** Destination for log messages. */ + logDestination: Writable; +} + +/** + * Parses a string as one of SeverityLevel + * + * @param s - the value to be parsed + * @returns one of SeverityLevel if value can be parsed as such, otherwise null + */ +function parseSeverityFromString(s?: string): SeverityLevel | null { + const validSeverities: string[] = Object.values(SeverityLevel); + const lowerSeverity = s?.toLowerCase(); + + if (lowerSeverity != null && validSeverities.includes(lowerSeverity)) { + return lowerSeverity as SeverityLevel; + } + + return null; +} + +/** + * resolves the MONGODB_LOG_PATH and mongodbLogPath options from the environment and the + * mongo client options respectively. + * + * @returns the Writable stream to write logs to + */ +function resolveLogPath( + { MONGODB_LOG_PATH }: MongoLoggerEnvOptions, + { + mongodbLogPath + }: { + mongodbLogPath?: unknown; + } +): Writable { + const isValidLogDestinationString = (destination: string) => + ['stdout', 'stderr'].includes(destination.toLowerCase()); + if (typeof mongodbLogPath === 'string' && isValidLogDestinationString(mongodbLogPath)) { + return mongodbLogPath.toLowerCase() === 'stderr' ? process.stderr : process.stdout; + } + + // TODO(NODE-4813): check for minimal interface instead of instanceof Writable + if (typeof mongodbLogPath === 'object' && mongodbLogPath instanceof Writable) { + return mongodbLogPath; + } + + if (typeof MONGODB_LOG_PATH === 'string' && isValidLogDestinationString(MONGODB_LOG_PATH)) { + return MONGODB_LOG_PATH.toLowerCase() === 'stderr' ? process.stderr : process.stdout; + } + + return process.stderr; +} + +/** @internal */ +export class MongoLogger { + componentSeverities: Record; + maxDocumentLength: number; + logDestination: Writable; + + constructor(options: MongoLoggerOptions) { + this.componentSeverities = options.componentSeverities; + this.maxDocumentLength = options.maxDocumentLength; + this.logDestination = options.logDestination; + } + + /* eslint-disable @typescript-eslint/no-unused-vars */ + /* eslint-disable @typescript-eslint/no-empty-function */ + emergency(component: any, message: any): void {} + + alert(component: any, message: any): void {} + + critical(component: any, message: any): void {} + + error(component: any, message: any): void {} + + warn(component: any, message: any): void {} + + notice(component: any, message: any): void {} + + info(component: any, message: any): void {} + + debug(component: any, message: any): void {} + + trace(component: any, message: any): void {} + + /** + * Merges options set through environment variables and the MongoClient, preferring environment + * variables when both are set, and substituting defaults for values not set. Options set in + * constructor take precedence over both environment variables and MongoClient options. + * + * @remarks + * When parsing component severity levels, invalid values are treated as unset and replaced with + * the default severity. + * + * @param envOptions - options set for the logger from the environment + * @param clientOptions - options set for the logger in the MongoClient options + * @returns a MongoLoggerOptions object to be used when instantiating a new MongoLogger + */ + static resolveOptions( + envOptions: MongoLoggerEnvOptions, + clientOptions: MongoLoggerMongoClientOptions + ): MongoLoggerOptions { + // client options take precedence over env options + const combinedOptions = { + ...envOptions, + ...clientOptions, + mongodbLogPath: resolveLogPath(envOptions, clientOptions) + }; + const defaultSeverity = + parseSeverityFromString(combinedOptions.MONGODB_LOG_ALL) ?? SeverityLevel.OFF; + + return { + componentSeverities: { + command: parseSeverityFromString(combinedOptions.MONGODB_LOG_COMMAND) ?? defaultSeverity, + topology: parseSeverityFromString(combinedOptions.MONGODB_LOG_TOPOLOGY) ?? defaultSeverity, + serverSelection: + parseSeverityFromString(combinedOptions.MONGODB_LOG_SERVER_SELECTION) ?? defaultSeverity, + connection: + parseSeverityFromString(combinedOptions.MONGODB_LOG_CONNECTION) ?? defaultSeverity, + default: defaultSeverity + }, + maxDocumentLength: + parseUnsignedInteger(combinedOptions.MONGODB_LOG_MAX_DOCUMENT_LENGTH) ?? 1000, + logDestination: combinedOptions.mongodbLogPath + }; + } +} diff --git a/food-ordering-app/server/node_modules/mongodb/src/mongo_types.ts b/food-ordering-app/server/node_modules/mongodb/src/mongo_types.ts index fbbb2a475..ee31945f6 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/mongo_types.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/mongo_types.ts @@ -40,7 +40,7 @@ export type WithId = EnhancedOmit & { _id: InferIdType< export type OptionalId = EnhancedOmit & { _id?: InferIdType }; /** - * Adds an optional _id field to an object shaped type, unless the _id field is requried on that type. + * Adds an optional _id field to an object shaped type, unless the _id field is required on that type. * In the case _id is required, this method continues to require_id. * * @public @@ -68,7 +68,7 @@ export type WithoutId = Omit; export type Filter = | Partial | ({ - [Property in Join>, '.'>]?: Condition< + [Property in Join, []>, '.'>]?: Condition< PropertyType, Property> >; } & RootFilterOperators>); @@ -188,7 +188,7 @@ export const BSONType = Object.freeze({ } as const); /** @public */ -export type BSONType = typeof BSONType[keyof typeof BSONType]; +export type BSONType = (typeof BSONType)[keyof typeof BSONType]; /** @public */ export type BSONTypeAlias = keyof typeof BSONType; @@ -214,6 +214,9 @@ export type IsAny = true extends false & Type /** @public */ export type Flatten = Type extends ReadonlyArray ? Item : Type; +/** @public */ +export type ArrayElement = Type extends ReadonlyArray ? Item : never; + /** @public */ export type SchemaMember = { [P in keyof T]?: V } | { [key: string]: V }; @@ -258,7 +261,19 @@ export type OnlyFieldsOfType; /** @public */ -export type MatchKeysAndValues = Readonly> & Record; +export type MatchKeysAndValues = Readonly< + { + [Property in Join, '.'>]?: PropertyType; + } & { + [Property in `${NestedPathsOfType}.$${`[${string}]` | ''}`]?: ArrayElement< + PropertyType + >; + } & { + [Property in `${NestedPathsOfType[]>}.$${ + | `[${string}]` + | ''}.${string}`]?: any; // Could be further narrowed + } & Document +>; /** @public */ export type AddToSetOperators = { @@ -483,24 +498,32 @@ export type PropertyType = string extends Propert * @public * returns tuple of strings (keys to be joined on '.') that represent every path into a schema * https://docs.mongodb.com/manual/tutorial/query-embedded-documents/ + * + * @remarks + * Through testing we determined that a depth of 8 is safe for the typescript compiler + * and provides reasonable compilation times. This number is otherwise not special and + * should be changed if issues are found with this level of checking. Beyond this + * depth any helpers that make use of NestedPaths should devolve to not asserting any + * type safety on the input. */ -export type NestedPaths = Type extends - | string - | number - | boolean - | Date - | RegExp - | Buffer - | Uint8Array - | ((...args: any[]) => any) - | { _bsontype: string } +export type NestedPaths = Depth['length'] extends 8 + ? [] + : Type extends + | string + | number + | boolean + | Date + | RegExp + | Buffer + | Uint8Array + | ((...args: any[]) => any) + | { _bsontype: string } ? [] : Type extends ReadonlyArray - ? [] | [number, ...NestedPaths] + ? [] | [number, ...NestedPaths] : Type extends Map ? [string] - : // eslint-disable-next-line @typescript-eslint/ban-types - Type extends object + : Type extends object ? { [Key in Extract]: Type[Key] extends Type // type of value extends the parent ? [Key] @@ -515,8 +538,20 @@ export type NestedPaths = Type extends ArrayType extends Type ? [Key] // we have a recursive array union : // child is an array, but it's not a recursive array - [Key, ...NestedPaths] + [Key, ...NestedPaths] : // child is not structured the same as the parent - [Key, ...NestedPaths]; + [Key, ...NestedPaths] | [Key]; }[Extract] : []; + +/** + * @public + * returns keys (strings) for every path into a schema with a value of type + * https://docs.mongodb.com/manual/tutorial/query-embedded-documents/ + */ +export type NestedPathsOfType = KeysOfAType< + { + [Property in Join, '.'>]: PropertyType; + }, + Type +>; diff --git a/food-ordering-app/server/node_modules/mongodb/src/operations/aggregate.ts b/food-ordering-app/server/node_modules/mongodb/src/operations/aggregate.ts index 1acc6ac62..ea0b7fa43 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/operations/aggregate.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/operations/aggregate.ts @@ -44,7 +44,7 @@ export class AggregateOperation extends CommandOperation { constructor(ns: MongoDBNamespace, pipeline: Document[], options?: AggregateOptions) { super(undefined, { ...options, dbName: ns.db }); - this.options = options ?? {}; + this.options = { ...options }; // Covers when ns.collection is null, undefined or the empty string, use DB_AGGREGATE_COLLECTION this.target = ns.collection || DB_AGGREGATE_COLLECTION; @@ -65,6 +65,8 @@ export class AggregateOperation extends CommandOperation { if (this.hasWriteStage) { this.trySecondaryWrite = true; + } else { + delete this.options.writeConcern; } if (this.explain && this.writeConcern) { @@ -99,10 +101,8 @@ export class AggregateOperation extends CommandOperation { this.readConcern = undefined; } - if (serverWireVersion >= 5) { - if (this.hasWriteStage && this.writeConcern) { - Object.assign(command, { writeConcern: this.writeConcern }); - } + if (this.hasWriteStage && this.writeConcern) { + Object.assign(command, { writeConcern: this.writeConcern }); } if (options.bypassDocumentValidation === true) { diff --git a/food-ordering-app/server/node_modules/mongodb/src/operations/command.ts b/food-ordering-app/server/node_modules/mongodb/src/operations/command.ts index 57186ab42..fc8f88006 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/operations/command.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/operations/command.ts @@ -1,5 +1,5 @@ import type { BSONSerializeOptions, Document } from '../bson'; -import { MongoCompatibilityError, MongoInvalidArgumentError } from '../error'; +import { MongoInvalidArgumentError } from '../error'; import { Explain, ExplainOptions } from '../explain'; import type { Logger } from '../logger'; import { ReadConcern } from '../read_concern'; @@ -18,8 +18,6 @@ import { WriteConcern, WriteConcernOptions } from '../write_concern'; import type { ReadConcernLike } from './../read_concern'; import { AbstractOperation, Aspect, OperationOptions } from './operation'; -const SUPPORTS_WRITE_CONCERN_AND_COLLATION = 5; - /** @public */ export interface CollationOptions { locale: string; @@ -119,12 +117,6 @@ export abstract class CommandOperation extends AbstractOperation { return true; } - abstract override execute( - server: Server, - session: ClientSession | undefined, - callback: Callback - ): void; - executeCommand( server: Server, session: ClientSession | undefined, @@ -152,27 +144,16 @@ export abstract class CommandOperation extends AbstractOperation { options.omitReadPreference = true; } - if (options.collation && serverWireVersion < SUPPORTS_WRITE_CONCERN_AND_COLLATION) { - callback( - new MongoCompatibilityError( - `Server ${server.name}, which reports wire version ${serverWireVersion}, does not support collation` - ) - ); - return; - } - if (this.writeConcern && this.hasAspect(Aspect.WRITE_OPERATION) && !inTransaction) { Object.assign(cmd, { writeConcern: this.writeConcern }); } - if (serverWireVersion >= SUPPORTS_WRITE_CONCERN_AND_COLLATION) { - if ( - options.collation && - typeof options.collation === 'object' && - !this.hasAspect(Aspect.SKIP_COLLATION) - ) { - Object.assign(cmd, { collation: options.collation }); - } + if ( + options.collation && + typeof options.collation === 'object' && + !this.hasAspect(Aspect.SKIP_COLLATION) + ) { + Object.assign(cmd, { collation: options.collation }); } if (typeof options.maxTimeMS === 'number') { @@ -180,12 +161,7 @@ export abstract class CommandOperation extends AbstractOperation { } if (this.hasAspect(Aspect.EXPLAINABLE) && this.explain) { - if (serverWireVersion < 6 && cmd.aggregate) { - // Prior to 3.6, with aggregate, verbosity is ignored, and we must pass in "explain: true" - cmd.explain = true; - } else { - cmd = decorateWithExplain(cmd, this.explain); - } + cmd = decorateWithExplain(cmd, this.explain); } server.command(this.ns, cmd, options, callback); diff --git a/food-ordering-app/server/node_modules/mongodb/src/operations/common_functions.ts b/food-ordering-app/server/node_modules/mongodb/src/operations/common_functions.ts index 928e00fd0..a439aca7e 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/operations/common_functions.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/operations/common_functions.ts @@ -34,7 +34,7 @@ export function indexInformation( let options = _optionsOrCallback as IndexInformationOptions; let callback = _callback as Callback; if ('function' === typeof _optionsOrCallback) { - callback = _optionsOrCallback as Callback; + callback = _optionsOrCallback; options = {}; } // If we specified full information diff --git a/food-ordering-app/server/node_modules/mongodb/src/operations/connect.ts b/food-ordering-app/server/node_modules/mongodb/src/operations/connect.ts deleted file mode 100644 index a71e95867..000000000 --- a/food-ordering-app/server/node_modules/mongodb/src/operations/connect.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { resolveSRVRecord } from '../connection_string'; -import { MONGO_CLIENT_EVENTS } from '../constants'; -import { MongoInvalidArgumentError, MongoRuntimeError } from '../error'; -import type { MongoClient, MongoOptions } from '../mongo_client'; -import { Topology } from '../sdam/topology'; -import type { Callback } from '../utils'; - -export function connect( - mongoClient: MongoClient, - options: MongoOptions, - callback: Callback -): void { - if (!callback) { - throw new MongoInvalidArgumentError('Callback function must be provided'); - } - - // If a connection already been established, we can terminate early - if (mongoClient.topology && mongoClient.topology.isConnected()) { - return callback(undefined, mongoClient); - } - - const logger = mongoClient.logger; - const connectCallback: Callback = err => { - const warningMessage = - 'seed list contains no mongos proxies, replicaset connections requires ' + - 'the parameter replicaSet to be supplied in the URI or options object, ' + - 'mongodb://server:port/db?replicaSet=name'; - if (err && err.message === 'no mongos proxies found in seed list') { - if (logger.isWarn()) { - logger.warn(warningMessage); - } - - // Return a more specific error message for MongoClient.connect - // TODO(NODE-3483) - return callback(new MongoRuntimeError(warningMessage)); - } - - callback(err, mongoClient); - }; - - if (typeof options.srvHost === 'string') { - return resolveSRVRecord(options, (err, hosts) => { - if (err || !hosts) return callback(err); - for (const [index, host] of hosts.entries()) { - options.hosts[index] = host; - } - - return createTopology(mongoClient, options, connectCallback); - }); - } - - return createTopology(mongoClient, options, connectCallback); -} - -function createTopology( - mongoClient: MongoClient, - options: MongoOptions, - callback: Callback -) { - // Create the topology - const topology = new Topology(options.hosts, options); - // Events can be emitted before initialization is complete so we have to - // save the reference to the topology on the client ASAP if the event handlers need to access it - mongoClient.topology = topology; - topology.client = mongoClient; - - topology.once(Topology.OPEN, () => mongoClient.emit('open', mongoClient)); - - for (const event of MONGO_CLIENT_EVENTS) { - topology.on(event, (...args: any[]) => mongoClient.emit(event, ...(args as any))); - } - - // initialize CSFLE if requested - if (mongoClient.autoEncrypter) { - mongoClient.autoEncrypter.init(err => { - if (err) { - return callback(err); - } - - topology.connect(options, err => { - if (err) { - topology.close({ force: true }); - return callback(err); - } - - options.encrypter.connectInternalClient(error => { - if (error) return callback(error); - - callback(undefined, topology); - }); - }); - }); - - return; - } - - // otherwise connect normally - topology.connect(options, err => { - if (err) { - topology.close({ force: true }); - return callback(err); - } - - callback(undefined, topology); - return; - }); -} diff --git a/food-ordering-app/server/node_modules/mongodb/src/operations/create_collection.ts b/food-ordering-app/server/node_modules/mongodb/src/operations/create_collection.ts index c3f094437..526913c1c 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/operations/create_collection.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/operations/create_collection.ts @@ -1,6 +1,11 @@ import type { Document } from '../bson'; +import { + MIN_SUPPORTED_QE_SERVER_VERSION, + MIN_SUPPORTED_QE_WIRE_VERSION +} from '../cmap/wire_protocol/constants'; import { Collection } from '../collection'; import type { Db } from '../db'; +import { MongoCompatibilityError } from '../error'; import type { PkFactory } from '../mongo_client'; import type { Server } from '../sdam/server'; import type { ClientSession } from '../sessions'; @@ -44,8 +49,7 @@ export interface TimeSeriesCollectionOptions extends Document { /** @public * Configuration options for clustered collections - * TODO: NODE-4230 replace with normal manual link once it is on there. - * @see https://www.mongodb.com/docs/v5.3/core/clustered-collections/ + * @see https://www.mongodb.com/docs/manual/core/clustered-collections/ */ export interface ClusteredCollectionOptions extends Document { name?: string; @@ -59,7 +63,7 @@ export interface CreateCollectionOptions extends CommandOperationOptions { strict?: boolean; /** Create a capped collection */ capped?: boolean; - /** @deprecated Create an index on the _id field of the document, True by default on MongoDB 2.6 - 3.0 */ + /** @deprecated Create an index on the _id field of the document. This option is deprecated in MongoDB 3.2+ and will be removed once no longer supported by the server. */ autoIndexId?: boolean; /** The size of the capped collection in bytes */ size?: number; @@ -67,19 +71,19 @@ export interface CreateCollectionOptions extends CommandOperationOptions { max?: number; /** Available for the MMAPv1 storage engine only to set the usePowerOf2Sizes and the noPadding flag */ flags?: number; - /** Allows users to specify configuration to the storage engine on a per-collection basis when creating a collection on MongoDB 3.0 or higher */ + /** Allows users to specify configuration to the storage engine on a per-collection basis when creating a collection */ storageEngine?: Document; - /** Allows users to specify validation rules or expressions for the collection. For more information, see Document Validation on MongoDB 3.2 or higher */ + /** Allows users to specify validation rules or expressions for the collection. For more information, see Document Validation */ validator?: Document; - /** Determines how strictly MongoDB applies the validation rules to existing documents during an update on MongoDB 3.2 or higher */ + /** Determines how strictly MongoDB applies the validation rules to existing documents during an update */ validationLevel?: string; - /** Determines whether to error on invalid documents or just warn about the violations but allow invalid documents to be inserted on MongoDB 3.2 or higher */ + /** Determines whether to error on invalid documents or just warn about the violations but allow invalid documents to be inserted */ validationAction?: string; - /** Allows users to specify a default configuration for indexes when creating a collection on MongoDB 3.2 or higher */ + /** Allows users to specify a default configuration for indexes when creating a collection */ indexOptionDefaults?: Document; - /** The name of the source collection or view from which to create the view. The name is not the full namespace of the collection or view; i.e. does not include the database name and implies the same database as the view to create on MongoDB 3.4 or higher */ + /** The name of the source collection or view from which to create the view. The name is not the full namespace of the collection or view (i.e., does not include the database name and implies the same database as the view to create) */ viewOn?: string; - /** An array that consists of the aggregation pipeline stage. Creates the view by applying the specified pipeline to the viewOn collection or view on MongoDB 3.4 or higher */ + /** An array that consists of the aggregation pipeline stage. Creates the view by applying the specified pipeline to the viewOn collection or view */ pipeline?: Document[]; /** A primary key factory function for generation of custom _id keys. */ pkFactory?: PkFactory; @@ -98,6 +102,10 @@ export interface CreateCollectionOptions extends CommandOperationOptions { changeStreamPreAndPostImages?: { enabled: boolean }; } +/* @internal */ +const INVALID_QE_VERSION = + 'Driver support of Queryable Encryption is incompatible with server. Upgrade server to use Queryable Encryption.'; + /** @internal */ export class CreateCollectionOperation extends CommandOperation { override options: CreateCollectionOptions; @@ -127,12 +135,17 @@ export class CreateCollectionOperation extends CommandOperation { db.s.client.options.autoEncryption?.encryptedFieldsMap?.[`${db.databaseName}.${name}`]; if (encryptedFields) { + // Creating a QE collection required min server of 7.0.0 + if (server.description.maxWireVersion < MIN_SUPPORTED_QE_WIRE_VERSION) { + throw new MongoCompatibilityError( + `${INVALID_QE_VERSION} The minimum server version required is ${MIN_SUPPORTED_QE_SERVER_VERSION}` + ); + } // Create auxilliary collections for queryable encryption support. const escCollection = encryptedFields.escCollection ?? `enxcol_.${name}.esc`; - const eccCollection = encryptedFields.eccCollection ?? `enxcol_.${name}.ecc`; const ecocCollection = encryptedFields.ecocCollection ?? `enxcol_.${name}.ecoc`; - for (const collectionName of [escCollection, eccCollection, ecocCollection]) { + for (const collectionName of [escCollection, ecocCollection]) { const createOp = new CreateCollectionOperation(db, collectionName, { clusteredIndex: { key: { _id: 1 }, diff --git a/food-ordering-app/server/node_modules/mongodb/src/operations/delete.ts b/food-ordering-app/server/node_modules/mongodb/src/operations/delete.ts index ccdfd1c80..9887719bb 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/operations/delete.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/operations/delete.ts @@ -3,7 +3,7 @@ import type { Collection } from '../collection'; import { MongoCompatibilityError, MongoServerError } from '../error'; import type { Server } from '../sdam/server'; import type { ClientSession } from '../sessions'; -import { Callback, collationNotSupported, maxWireVersion, MongoDBNamespace } from '../utils'; +import type { Callback, MongoDBNamespace } from '../utils'; import type { WriteConcernOptions } from '../write_concern'; import { CollationOptions, CommandOperation, CommandOperationOptions } from './command'; import { Aspect, defineAspects, Hint } from './operation'; @@ -44,7 +44,7 @@ export interface DeleteStatement { } /** @internal */ -export class DeleteOperation extends CommandOperation { +export class DeleteOperation extends CommandOperation { override options: DeleteOptions; statements: DeleteStatement[]; @@ -82,28 +82,15 @@ export class DeleteOperation extends CommandOperation { command.comment = options.comment; } - if (options.explain != null && maxWireVersion(server) < 3) { - return callback - ? callback( - new MongoCompatibilityError(`Server ${server.name} does not support explain on delete`) - ) - : undefined; - } - const unacknowledgedWrite = this.writeConcern && this.writeConcern.w === 0; - if (unacknowledgedWrite || maxWireVersion(server) < 5) { + if (unacknowledgedWrite) { if (this.statements.find((o: Document) => o.hint)) { - callback(new MongoCompatibilityError(`Servers < 3.4 do not support hint on delete`)); + // TODO(NODE-3541): fix error for hint with unacknowledged writes + callback(new MongoCompatibilityError(`hint is not supported with unacknowledged writes`)); return; } } - const statementWithCollation = this.statements.find(statement => !!statement.collation); - if (statementWithCollation && collationNotSupported(server, statementWithCollation)) { - callback(new MongoCompatibilityError(`Server ${server.name} does not support collation`)); - return; - } - super.executeCommand(server, session, command, callback); } } diff --git a/food-ordering-app/server/node_modules/mongodb/src/operations/distinct.ts b/food-ordering-app/server/node_modules/mongodb/src/operations/distinct.ts index d006d3113..5fe8585e8 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/operations/distinct.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/operations/distinct.ts @@ -1,9 +1,8 @@ import type { Document } from '../bson'; import type { Collection } from '../collection'; -import { MongoCompatibilityError } from '../error'; import type { Server } from '../sdam/server'; import type { ClientSession } from '../sessions'; -import { Callback, decorateWithCollation, decorateWithReadConcern, maxWireVersion } from '../utils'; +import { Callback, decorateWithCollation, decorateWithReadConcern } from '../utils'; import { CommandOperation, CommandOperationOptions } from './command'; import { Aspect, defineAspects } from './operation'; @@ -61,6 +60,12 @@ export class DistinctOperation extends CommandOperation { cmd.maxTimeMS = options.maxTimeMS; } + // we check for undefined specifically here to allow falsy values + // eslint-disable-next-line no-restricted-syntax + if (typeof options.comment !== 'undefined') { + cmd.comment = options.comment; + } + // Do we have a readConcern specified decorateWithReadConcern(cmd, coll, options); @@ -71,13 +76,6 @@ export class DistinctOperation extends CommandOperation { return callback(err); } - if (this.explain && maxWireVersion(server) < 4) { - callback( - new MongoCompatibilityError(`Server ${server.name} does not support explain on distinct`) - ); - return; - } - super.executeCommand(server, session, cmd, (err, result) => { if (err) { callback(err); diff --git a/food-ordering-app/server/node_modules/mongodb/src/operations/drop.ts b/food-ordering-app/server/node_modules/mongodb/src/operations/drop.ts index 00f78e543..b22fe65cd 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/operations/drop.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/operations/drop.ts @@ -41,7 +41,7 @@ export class DropCollectionOperation extends CommandOperation { options.encryptedFields ?? encryptedFieldsMap?.[`${db.databaseName}.${name}`]; if (!encryptedFields && encryptedFieldsMap) { - // If the MongoClient was configued with an encryptedFieldsMap, + // If the MongoClient was configured with an encryptedFieldsMap, // and no encryptedFields config was available in it or explicitly // passed as an argument, the spec tells us to look one up using // listCollections(). @@ -53,10 +53,9 @@ export class DropCollectionOperation extends CommandOperation { if (encryptedFields) { const escCollection = encryptedFields.escCollection || `enxcol_.${name}.esc`; - const eccCollection = encryptedFields.eccCollection || `enxcol_.${name}.ecc`; const ecocCollection = encryptedFields.ecocCollection || `enxcol_.${name}.ecoc`; - for (const collectionName of [escCollection, eccCollection, ecocCollection]) { + for (const collectionName of [escCollection, ecocCollection]) { // Drop auxilliary collections, ignoring potential NamespaceNotFound errors. const dropOp = new DropCollectionOperation(db, collectionName); try { @@ -72,7 +71,7 @@ export class DropCollectionOperation extends CommandOperation { } } - return await this.executeWithoutEncryptedFieldsCheck(server, session); + return this.executeWithoutEncryptedFieldsCheck(server, session); })().then( result => callback(undefined, result), err => callback(err) diff --git a/food-ordering-app/server/node_modules/mongodb/src/operations/estimated_document_count.ts b/food-ordering-app/server/node_modules/mongodb/src/operations/estimated_document_count.ts index d96ca4475..22b29deb9 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/operations/estimated_document_count.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/operations/estimated_document_count.ts @@ -38,6 +38,12 @@ export class EstimatedDocumentCountOperation extends CommandOperation { cmd.maxTimeMS = this.options.maxTimeMS; } + // we check for undefined specifically here to allow falsy values + // eslint-disable-next-line no-restricted-syntax + if (this.options.comment !== undefined) { + cmd.comment = this.options.comment; + } + super.executeCommand(server, session, cmd, (err, response) => { if (err) { callback(err); diff --git a/food-ordering-app/server/node_modules/mongodb/src/operations/execute_operation.ts b/food-ordering-app/server/node_modules/mongodb/src/operations/execute_operation.ts index 17674e548..f8619de7f 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/operations/execute_operation.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/operations/execute_operation.ts @@ -5,6 +5,7 @@ import { MongoCompatibilityError, MONGODB_ERROR_CODES, MongoError, + MongoErrorLabel, MongoExpiredSessionError, MongoNetworkError, MongoNotConnectedError, @@ -23,7 +24,7 @@ import { } from '../sdam/server_selection'; import type { Topology } from '../sdam/topology'; import type { ClientSession } from '../sessions'; -import { Callback, maybePromise, supportsRetryableWrites } from '../utils'; +import { Callback, maybeCallback, supportsRetryableWrites } from '../utils'; import { AbstractOperation, Aspect } from './operation'; const MMAPv1_RETRY_WRITES_ERROR_CODE = MONGODB_ERROR_CODES.IllegalOperation; @@ -75,88 +76,73 @@ export function executeOperation< T extends AbstractOperation, TResult = ResultTypeFromOperation >(client: MongoClient, operation: T, callback?: Callback): Promise | void { + return maybeCallback(() => executeOperationAsync(client, operation), callback); +} + +async function executeOperationAsync< + T extends AbstractOperation, + TResult = ResultTypeFromOperation +>(client: MongoClient, operation: T): Promise { if (!(operation instanceof AbstractOperation)) { // TODO(NODE-3483): Extend MongoRuntimeError throw new MongoRuntimeError('This method requires a valid operation instance'); } - return maybePromise(callback, callback => { - const topology = client.topology; - - if (topology == null) { - if (client.s.hasBeenClosed) { - return callback( - new MongoNotConnectedError('Client must be connected before running operations') - ); - } - client.s.options[Symbol.for('@@mdb.skipPingOnConnect')] = true; - return client.connect(error => { - delete client.s.options[Symbol.for('@@mdb.skipPingOnConnect')]; - if (error) { - return callback(error); - } - return executeOperation(client, operation, callback); - }); + if (client.topology == null) { + // Auto connect on operation + if (client.s.hasBeenClosed) { + throw new MongoNotConnectedError('Client must be connected before running operations'); + } + client.s.options[Symbol.for('@@mdb.skipPingOnConnect')] = true; + try { + await client.connect(); + } finally { + delete client.s.options[Symbol.for('@@mdb.skipPingOnConnect')]; } + } - if (topology.shouldCheckForSessionSupport()) { - return topology.selectServer(ReadPreference.primaryPreferred, {}, err => { - if (err) return callback(err); + const { topology } = client; + if (topology == null) { + throw new MongoRuntimeError('client.connect did not create a topology but also did not throw'); + } - executeOperation(client, operation, callback); - }); - } + if (topology.shouldCheckForSessionSupport()) { + await topology.selectServerAsync(ReadPreference.primaryPreferred, {}); + } - // The driver sessions spec mandates that we implicitly create sessions for operations - // that are not explicitly provided with a session. - let session = operation.session; - let owner: symbol | undefined; - if (topology.hasSessionSupport()) { - if (session == null) { - owner = Symbol(); - session = topology.startSession({ owner, explicit: false }); - } else if (session.hasEnded) { - return callback(new MongoExpiredSessionError('Use of expired sessions is not permitted')); - } else if (session.snapshotEnabled && !topology.capabilities.supportsSnapshotReads) { - return callback(new MongoCompatibilityError('Snapshot reads require MongoDB 5.0 or later')); - } - } else if (session) { + // The driver sessions spec mandates that we implicitly create sessions for operations + // that are not explicitly provided with a session. + let session = operation.session; + let owner: symbol | undefined; + if (topology.hasSessionSupport()) { + if (session == null) { + owner = Symbol(); + session = client.startSession({ owner, explicit: false }); + } else if (session.hasEnded) { + throw new MongoExpiredSessionError('Use of expired sessions is not permitted'); + } else if (session.snapshotEnabled && !topology.capabilities.supportsSnapshotReads) { + throw new MongoCompatibilityError('Snapshot reads require MongoDB 5.0 or later'); + } + } else { + // no session support + if (session && session.explicit) { // If the user passed an explicit session and we are still, after server selection, // trying to run against a topology that doesn't support sessions we error out. - return callback(new MongoCompatibilityError('Current topology does not support sessions')); - } - - try { - executeWithServerSelection(topology, session, operation, (error, result) => { - if (session?.owner != null && session.owner === owner) { - return session.endSession(endSessionError => callback(endSessionError ?? error, result)); - } - - callback(error, result); - }); - } catch (error) { - if (session?.owner != null && session.owner === owner) { - session.endSession(); - } - throw error; + throw new MongoCompatibilityError('Current topology does not support sessions'); + } else if (session && !session.explicit) { + // We do not have to worry about ending the session because the server session has not been acquired yet + delete operation.options.session; + operation.clearSession(); + session = undefined; } - }); -} + } -function executeWithServerSelection( - topology: Topology, - session: ClientSession | undefined, - operation: AbstractOperation, - callback: Callback -) { const readPreference = operation.readPreference ?? ReadPreference.primary; const inTransaction = !!session?.inTransaction(); if (inTransaction && !readPreference.equals(ReadPreference.primary)) { - return callback( - new MongoTransactionError( - `Read preference in a transaction must be primary, not: ${readPreference.mode}` - ) + throw new MongoTransactionError( + `Read preference in a transaction must be primary, not: ${readPreference.mode}` ); } @@ -166,8 +152,8 @@ function executeWithServerSelection( let selector: ReadPreference | ServerSelector; - if (operation.hasAspect(Aspect.CURSOR_ITERATING)) { - // Get more operations must always select the same server, but run through + if (operation.hasAspect(Aspect.MUST_SELECT_SAME_SERVER)) { + // GetMore and KillCursor operations must always select the same server, but run through // server selection to potentially force monitor checks if the server is // in an unknown state. selector = sameServerSelector(operation.server?.description); @@ -179,111 +165,123 @@ function executeWithServerSelection( selector = readPreference; } - const serverSelectionOptions = { session }; - function retryOperation(originalError: MongoError) { - const isWriteOperation = operation.hasAspect(Aspect.WRITE_OPERATION); - const isReadOperation = operation.hasAspect(Aspect.READ_OPERATION); + const server = await topology.selectServerAsync(selector, { session }); - if (isWriteOperation && originalError.code === MMAPv1_RETRY_WRITES_ERROR_CODE) { - return callback( - new MongoServerError({ - message: MMAPv1_RETRY_WRITES_ERROR_MESSAGE, - errmsg: MMAPv1_RETRY_WRITES_ERROR_MESSAGE, - originalError - }) - ); - } + if (session == null) { + // No session also means it is not retryable, early exit + return operation.executeAsync(server, undefined); + } - if (isWriteOperation && !isRetryableWriteError(originalError)) { - return callback(originalError); + if (!operation.hasAspect(Aspect.RETRYABLE)) { + // non-retryable operation, early exit + try { + return await operation.executeAsync(server, session); + } finally { + if (session?.owner != null && session.owner === owner) { + await session.endSession().catch(() => null); + } } + } - if (isReadOperation && !isRetryableReadError(originalError)) { - return callback(originalError); - } + const willRetryRead = topology.s.options.retryReads && !inTransaction && operation.canRetryRead; - if ( - originalError instanceof MongoNetworkError && - session?.isPinned && - !session.inTransaction() && - operation.hasAspect(Aspect.CURSOR_CREATING) - ) { - // If we have a cursor and the initial command fails with a network error, - // we can retry it on another connection. So we need to check it back in, clear the - // pool for the service id, and retry again. - session.unpin({ force: true, forceClear: true }); - } + const willRetryWrite = + topology.s.options.retryWrites && + !inTransaction && + supportsRetryableWrites(server) && + operation.canRetryWrite; - // select a new server, and attempt to retry the operation - topology.selectServer(selector, serverSelectionOptions, (error?: Error, server?: Server) => { - if (!error && isWriteOperation && !supportsRetryableWrites(server)) { - return callback( - new MongoUnexpectedServerResponseError( - 'Selected server does not support retryable writes' - ) - ); - } + const hasReadAspect = operation.hasAspect(Aspect.READ_OPERATION); + const hasWriteAspect = operation.hasAspect(Aspect.WRITE_OPERATION); + const willRetry = (hasReadAspect && willRetryRead) || (hasWriteAspect && willRetryWrite); - if (error || !server) { - return callback( - error ?? new MongoUnexpectedServerResponseError('Server selection failed without error') - ); - } + if (hasWriteAspect && willRetryWrite) { + operation.options.willRetryWrite = true; + session.incrementTransactionNumber(); + } - operation.execute(server, session, callback); - }); + try { + return await operation.executeAsync(server, session); + } catch (operationError) { + if (willRetry && operationError instanceof MongoError) { + return await retryOperation(operation, operationError, { + session, + topology, + selector + }); + } + throw operationError; + } finally { + if (session?.owner != null && session.owner === owner) { + await session.endSession().catch(() => null); + } } +} - if ( - readPreference && - !readPreference.equals(ReadPreference.primary) && - session?.inTransaction() - ) { - callback( - new MongoTransactionError( - `Read preference in a transaction must be primary, not: ${readPreference.mode}` - ) - ); +/** @internal */ +type RetryOptions = { + session: ClientSession; + topology: Topology; + selector: ReadPreference | ServerSelector; +}; - return; +async function retryOperation< + T extends AbstractOperation, + TResult = ResultTypeFromOperation +>( + operation: T, + originalError: MongoError, + { session, topology, selector }: RetryOptions +): Promise { + const isWriteOperation = operation.hasAspect(Aspect.WRITE_OPERATION); + const isReadOperation = operation.hasAspect(Aspect.READ_OPERATION); + + if (isWriteOperation && originalError.code === MMAPv1_RETRY_WRITES_ERROR_CODE) { + throw new MongoServerError({ + message: MMAPv1_RETRY_WRITES_ERROR_MESSAGE, + errmsg: MMAPv1_RETRY_WRITES_ERROR_MESSAGE, + originalError + }); } - // select a server, and execute the operation against it - topology.selectServer(selector, serverSelectionOptions, (error, server) => { - if (error || !server) { - return callback(error); - } + if (isWriteOperation && !isRetryableWriteError(originalError)) { + throw originalError; + } - if (session && operation.hasAspect(Aspect.RETRYABLE)) { - const willRetryRead = - topology.s.options.retryReads && !inTransaction && operation.canRetryRead; + if (isReadOperation && !isRetryableReadError(originalError)) { + throw originalError; + } - const willRetryWrite = - topology.s.options.retryWrites && - !inTransaction && - supportsRetryableWrites(server) && - operation.canRetryWrite; + if ( + originalError instanceof MongoNetworkError && + session.isPinned && + !session.inTransaction() && + operation.hasAspect(Aspect.CURSOR_CREATING) + ) { + // If we have a cursor and the initial command fails with a network error, + // we can retry it on another connection. So we need to check it back in, clear the + // pool for the service id, and retry again. + session.unpin({ force: true, forceClear: true }); + } - const hasReadAspect = operation.hasAspect(Aspect.READ_OPERATION); - const hasWriteAspect = operation.hasAspect(Aspect.WRITE_OPERATION); + // select a new server, and attempt to retry the operation + const server = await topology.selectServerAsync(selector, { session }); - if ((hasReadAspect && willRetryRead) || (hasWriteAspect && willRetryWrite)) { - if (hasWriteAspect && willRetryWrite) { - operation.options.willRetryWrite = true; - session.incrementTransactionNumber(); - } + if (isWriteOperation && !supportsRetryableWrites(server)) { + throw new MongoUnexpectedServerResponseError( + 'Selected server does not support retryable writes' + ); + } - return operation.execute(server, session, (error, result) => { - if (error instanceof MongoError) { - return retryOperation(error); - } else if (error) { - return callback(error); - } - callback(undefined, result); - }); - } + try { + return await operation.executeAsync(server, session); + } catch (retryError) { + if ( + retryError instanceof MongoError && + retryError.hasErrorLabel(MongoErrorLabel.NoWritesPerformed) + ) { + throw originalError; } - - return operation.execute(server, session, callback); - }); + throw retryError; + } } diff --git a/food-ordering-app/server/node_modules/mongodb/src/operations/find.ts b/food-ordering-app/server/node_modules/mongodb/src/operations/find.ts index c52aa2cd9..87a6af889 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/operations/find.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/operations/find.ts @@ -1,17 +1,11 @@ import type { Document } from '../bson'; import type { Collection } from '../collection'; -import { MongoCompatibilityError, MongoInvalidArgumentError } from '../error'; +import { MongoInvalidArgumentError } from '../error'; import { ReadConcern } from '../read_concern'; import type { Server } from '../sdam/server'; import type { ClientSession } from '../sessions'; import { formatSort, Sort } from '../sort'; -import { - Callback, - decorateWithExplain, - maxWireVersion, - MongoDBNamespace, - normalizeHintField -} from '../utils'; +import { Callback, decorateWithExplain, MongoDBNamespace, normalizeHintField } from '../utils'; import { CollationOptions, CommandOperation, CommandOperationOptions } from './command'; import { Aspect, defineAspects, Hint } from './operation'; @@ -63,10 +57,13 @@ export interface FindOptions extends Comman showRecordId?: boolean; /** Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0). */ let?: Document; + /** + * Option to enable an optimized code path for queries looking for a particular range of `ts` values in the oplog. Requires `tailable` to be true. + * @deprecated Starting from MongoDB 4.4 this flag is not needed and will be ignored. + */ + oplogReplay?: boolean; } -const SUPPORTS_WRITE_CONCERN_AND_COLLATION = 5; - /** @internal */ export class FindOperation extends CommandOperation { override options: FindOptions; @@ -80,7 +77,8 @@ export class FindOperation extends CommandOperation { ) { super(collection, options); - this.options = options; + this.options = { ...options }; + delete this.options.writeConcern; this.ns = ns; if (typeof filter !== 'object' || Array.isArray(filter)) { @@ -108,24 +106,7 @@ export class FindOperation extends CommandOperation { ): void { this.server = server; - const serverWireVersion = maxWireVersion(server); const options = this.options; - if (options.allowDiskUse != null && serverWireVersion < 4) { - callback( - new MongoCompatibilityError('Option "allowDiskUse" is not supported on MongoDB < 3.2') - ); - return; - } - - if (options.collation && serverWireVersion < SUPPORTS_WRITE_CONCERN_AND_COLLATION) { - callback( - new MongoCompatibilityError( - `Server ${server.name}, which reports wire version ${serverWireVersion}, does not support collation` - ) - ); - - return; - } let findCommand = makeFindCommand(this.ns, this.filter, options); if (this.explain) { @@ -242,6 +223,10 @@ function makeFindCommand(ns: MongoDBNamespace, filter: Document, options: FindOp findCommand.tailable = options.tailable; } + if (typeof options.oplogReplay === 'boolean') { + findCommand.oplogReplay = options.oplogReplay; + } + if (typeof options.timeout === 'boolean') { findCommand.noCursorTimeout = !options.timeout; } else if (typeof options.noCursorTimeout === 'boolean') { diff --git a/food-ordering-app/server/node_modules/mongodb/src/operations/find_and_modify.ts b/food-ordering-app/server/node_modules/mongodb/src/operations/find_and_modify.ts index 12d7ba504..c3e76d230 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/operations/find_and_modify.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/operations/find_and_modify.ts @@ -17,7 +17,7 @@ export const ReturnDocument = Object.freeze({ } as const); /** @public */ -export type ReturnDocument = typeof ReturnDocument[keyof typeof ReturnDocument]; +export type ReturnDocument = (typeof ReturnDocument)[keyof typeof ReturnDocument]; /** @public */ export interface FindOneAndDeleteOptions extends CommandOperationOptions { @@ -202,15 +202,6 @@ class FindAndModifyOperation extends CommandOperation { cmd.hint = options.hint; } - if (this.explain && maxWireVersion(server) < 4) { - callback( - new MongoCompatibilityError( - `Server ${server.name} does not support explain on findAndModify` - ) - ); - return; - } - // Execute the command super.executeCommand(server, session, cmd, (err, result) => { if (err) return callback(err); diff --git a/food-ordering-app/server/node_modules/mongodb/src/operations/get_more.ts b/food-ordering-app/server/node_modules/mongodb/src/operations/get_more.ts index 51fe9cf4b..c86c3f368 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/operations/get_more.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/operations/get_more.ts @@ -5,10 +5,7 @@ import type { ClientSession } from '../sessions'; import { Callback, maxWireVersion, MongoDBNamespace } from '../utils'; import { AbstractOperation, Aspect, defineAspects, OperationOptions } from './operation'; -/** - * @public - */ -// eslint-disable-next-line @typescript-eslint/no-unused-vars +/** @internal */ export interface GetMoreOptions extends OperationOptions { /** Set the batchSize for the getMoreCommand when iterating over the query results. */ batchSize?: number; @@ -20,6 +17,21 @@ export interface GetMoreOptions extends OperationOptions { comment?: unknown; /** Number of milliseconds to wait before aborting the query. */ maxTimeMS?: number; + /** TODO(NODE-4413): Address bug with maxAwaitTimeMS not being passed in from the cursor correctly */ + maxAwaitTimeMS?: number; +} + +/** + * GetMore command: https://www.mongodb.com/docs/manual/reference/command/getMore/ + * @internal + */ +export interface GetMoreCommand { + getMore: Long; + collection: string; + batchSize?: number; + maxTimeMS?: number; + /** Only supported on wire versions 10 or greater */ + comment?: unknown; } /** @internal */ @@ -27,16 +39,10 @@ export class GetMoreOperation extends AbstractOperation { cursorId: Long; override options: GetMoreOptions; - constructor(ns: MongoDBNamespace, cursorId: Long, server: Server, options: GetMoreOptions = {}) { + constructor(ns: MongoDBNamespace, cursorId: Long, server: Server, options: GetMoreOptions) { super(options); this.options = options; - - // comment on getMore is only supported for server versions 4.4 and above - if (maxWireVersion(server) < 9) { - delete this.options.comment; - } - this.ns = ns; this.cursorId = cursorId; this.server = server; @@ -56,8 +62,45 @@ export class GetMoreOperation extends AbstractOperation { new MongoRuntimeError('Getmore must run on the same server operation began on') ); } - server.getMore(this.ns, this.cursorId, this.options, callback); + + if (this.cursorId == null || this.cursorId.isZero()) { + return callback(new MongoRuntimeError('Unable to iterate cursor with no id')); + } + + const collection = this.ns.collection; + if (collection == null) { + // Cursors should have adopted the namespace returned by MongoDB + // which should always defined a collection name (even a pseudo one, ex. db.aggregate()) + return callback(new MongoRuntimeError('A collection name must be determined before getMore')); + } + + const getMoreCmd: GetMoreCommand = { + getMore: this.cursorId, + collection + }; + + if (typeof this.options.batchSize === 'number') { + getMoreCmd.batchSize = Math.abs(this.options.batchSize); + } + + if (typeof this.options.maxAwaitTimeMS === 'number') { + getMoreCmd.maxTimeMS = this.options.maxAwaitTimeMS; + } + + // we check for undefined specifically here to allow falsy values + // eslint-disable-next-line no-restricted-syntax + if (this.options.comment !== undefined && maxWireVersion(server) >= 9) { + getMoreCmd.comment = this.options.comment; + } + + const commandOptions = { + returnFieldSelector: null, + documentsReturnedIn: 'nextBatch', + ...this.options + }; + + server.command(this.ns, getMoreCmd, commandOptions, callback); } } -defineAspects(GetMoreOperation, [Aspect.READ_OPERATION, Aspect.CURSOR_ITERATING]); +defineAspects(GetMoreOperation, [Aspect.READ_OPERATION, Aspect.MUST_SELECT_SAME_SERVER]); diff --git a/food-ordering-app/server/node_modules/mongodb/src/operations/indexes.ts b/food-ordering-app/server/node_modules/mongodb/src/operations/indexes.ts index af27bbcb1..31cef117a 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/operations/indexes.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/operations/indexes.ts @@ -1,13 +1,12 @@ import type { Document } from '../bson'; import type { Collection } from '../collection'; -import { AbstractCursor } from '../cursor/abstract_cursor'; import type { Db } from '../db'; import { MongoCompatibilityError, MONGODB_ERROR_CODES, MongoServerError } from '../error'; import type { OneOrMore } from '../mongo_types'; import { ReadPreference } from '../read_preference'; import type { Server } from '../sdam/server'; import type { ClientSession } from '../sessions'; -import { Callback, maxWireVersion, MongoDBNamespace, parseIndexOptions } from '../utils'; +import { Callback, isObject, maxWireVersion, MongoDBNamespace } from '../utils'; import { CollationOptions, CommandOperation, @@ -15,7 +14,6 @@ import { OperationParent } from './command'; import { indexInformation, IndexInformationOptions } from './common_functions'; -import { executeOperation, ExecutionResult } from './execute_operation'; import { AbstractOperation, Aspect, defineAspects } from './operation'; const VALID_INDEX_OPTIONS = new Set([ @@ -52,15 +50,27 @@ const VALID_INDEX_OPTIONS = new Set([ ]); /** @public */ -export type IndexDirection = -1 | 1 | '2d' | '2dsphere' | 'text' | 'geoHaystack' | number; - +export type IndexDirection = + | -1 + | 1 + | '2d' + | '2dsphere' + | 'text' + | 'geoHaystack' + | 'hashed' + | number; + +function isIndexDirection(x: unknown): x is IndexDirection { + return ( + typeof x === 'number' || x === '2d' || x === '2dsphere' || x === 'text' || x === 'geoHaystack' + ); +} /** @public */ export type IndexSpecification = OneOrMore< | string | [string, IndexDirection] | { [key: string]: IndexDirection } - | [string, IndexDirection][] - | { [key: string]: IndexDirection }[] + | Map >; /** @public */ @@ -88,7 +98,7 @@ export interface IndexDescription > { collation?: CollationOptions; name?: string; - key: Document; + key: { [key: string]: IndexDirection } | Map; } /** @public */ @@ -132,23 +142,37 @@ export interface CreateIndexesOptions extends CommandOperationOptions { hidden?: boolean; } -function makeIndexSpec(indexSpec: IndexSpecification, options: any): IndexDescription { - const indexParameters = parseIndexOptions(indexSpec); - - // Generate the index name - const name = typeof options.name === 'string' ? options.name : indexParameters.name; - - // Set up the index - const finalIndexSpec: Document = { name, key: indexParameters.fieldHash }; +function isSingleIndexTuple(t: unknown): t is [string, IndexDirection] { + return Array.isArray(t) && t.length === 2 && isIndexDirection(t[1]); +} - // merge valid index options into the index spec - for (const optionName in options) { - if (VALID_INDEX_OPTIONS.has(optionName)) { - finalIndexSpec[optionName] = options[optionName]; +function makeIndexSpec( + indexSpec: IndexSpecification, + options?: CreateIndexesOptions +): IndexDescription { + const key: Map = new Map(); + + const indexSpecs = + !Array.isArray(indexSpec) || isSingleIndexTuple(indexSpec) ? [indexSpec] : indexSpec; + + // Iterate through array and handle different types + for (const spec of indexSpecs) { + if (typeof spec === 'string') { + key.set(spec, 1); + } else if (Array.isArray(spec)) { + key.set(spec[0], spec[1] ?? 1); + } else if (spec instanceof Map) { + for (const [property, value] of spec) { + key.set(property, value); + } + } else if (isObject(spec)) { + for (const [property, value] of Object.entries(spec)) { + key.set(property, value); + } } } - return finalIndexSpec as IndexDescription; + return { ...options, key }; } /** @internal */ @@ -185,7 +209,7 @@ export class CreateIndexesOperation< > extends CommandOperation { override options: CreateIndexesOptions; collectionName: string; - indexes: IndexDescription[]; + indexes: ReadonlyArray & { key: Map }>; constructor( parent: OperationParent, @@ -197,8 +221,22 @@ export class CreateIndexesOperation< this.options = options ?? {}; this.collectionName = collectionName; - - this.indexes = indexes; + this.indexes = indexes.map(userIndex => { + // Ensure the key is a Map to preserve index key ordering + const key = + userIndex.key instanceof Map ? userIndex.key : new Map(Object.entries(userIndex.key)); + const name = userIndex.name != null ? userIndex.name : Array.from(key).flat().join('_'); + const validIndexOptions = Object.fromEntries( + Object.entries({ ...userIndex }).filter(([optionName]) => + VALID_INDEX_OPTIONS.has(optionName) + ) + ); + return { + ...validIndexOptions, + name, + key + }; + }); } override execute( @@ -211,31 +249,6 @@ export class CreateIndexesOperation< const serverWireVersion = maxWireVersion(server); - // Ensure we generate the correct name if the parameter is not set - for (let i = 0; i < indexes.length; i++) { - // Did the user pass in a collation, check if our write server supports it - if (indexes[i].collation && serverWireVersion < 5) { - callback( - new MongoCompatibilityError( - `Server ${server.name}, which reports wire version ${serverWireVersion}, ` + - 'does not support collation' - ) - ); - return; - } - - if (indexes[i].name == null) { - const keys = []; - - for (const name in indexes[i].key) { - keys.push(`${name}_${indexes[i].key[name]}`); - } - - // Set the name - indexes[i].name = keys.join('_'); - } - } - const cmd: Document = { createIndexes: this.collectionName, indexes }; if (options.commitQuorum != null) { @@ -273,12 +286,6 @@ export class CreateIndexOperation extends CreateIndexesOperation { indexSpec: IndexSpecification, options?: CreateIndexesOptions ) { - // createIndex can be called with a variety of styles: - // coll.createIndex('a'); - // coll.createIndex({ a: 1 }); - // coll.createIndex([['a', 1]]); - // createIndexes is always called with an array of index spec objects - super(parent, collectionName, [makeIndexSpec(indexSpec, options)], options); } override execute( @@ -387,7 +394,8 @@ export class ListIndexesOperation extends CommandOperation { constructor(collection: Collection, options?: ListIndexesOptions) { super(collection, options); - this.options = options ?? {}; + this.options = { ...options }; + delete this.options.writeConcern; this.collectionNamespace = collection.s.namespace; } @@ -412,41 +420,6 @@ export class ListIndexesOperation extends CommandOperation { } } -/** @public */ -export class ListIndexesCursor extends AbstractCursor { - parent: Collection; - options?: ListIndexesOptions; - - constructor(collection: Collection, options?: ListIndexesOptions) { - super(collection.s.db.s.client, collection.s.namespace, options); - this.parent = collection; - this.options = options; - } - - clone(): ListIndexesCursor { - return new ListIndexesCursor(this.parent, { - ...this.options, - ...this.cursorOptions - }); - } - - /** @internal */ - _initialize(session: ClientSession | undefined, callback: Callback): void { - const operation = new ListIndexesOperation(this.parent, { - ...this.cursorOptions, - ...this.options, - session - }); - - executeOperation(this.parent.s.db.s.client, operation, (err, response) => { - if (err || response == null) return callback(err); - - // TODO: NODE-2882 - callback(undefined, { server: operation.server, session, response }); - }); - } -} - /** @internal */ export class IndexExistsOperation extends AbstractOperation { override options: IndexInformationOptions; diff --git a/food-ordering-app/server/node_modules/mongodb/src/operations/kill_cursors.ts b/food-ordering-app/server/node_modules/mongodb/src/operations/kill_cursors.ts new file mode 100644 index 000000000..59c78c15d --- /dev/null +++ b/food-ordering-app/server/node_modules/mongodb/src/operations/kill_cursors.ts @@ -0,0 +1,53 @@ +import type { Long } from '../bson'; +import { MongoRuntimeError } from '../error'; +import type { Server } from '../sdam/server'; +import type { ClientSession } from '../sessions'; +import type { Callback, MongoDBNamespace } from '../utils'; +import { AbstractOperation, Aspect, defineAspects, OperationOptions } from './operation'; + +/** + * https://www.mongodb.com/docs/manual/reference/command/killCursors/ + * @internal + */ +interface KillCursorsCommand { + killCursors: string; + cursors: Long[]; + comment?: unknown; +} + +export class KillCursorsOperation extends AbstractOperation { + cursorId: Long; + + constructor(cursorId: Long, ns: MongoDBNamespace, server: Server, options: OperationOptions) { + super(options); + this.ns = ns; + this.cursorId = cursorId; + this.server = server; + } + + execute(server: Server, session: ClientSession | undefined, callback: Callback): void { + if (server !== this.server) { + return callback( + new MongoRuntimeError('Killcursor must run on the same server operation began on') + ); + } + + const killCursors = this.ns.collection; + if (killCursors == null) { + // Cursors should have adopted the namespace returned by MongoDB + // which should always defined a collection name (even a pseudo one, ex. db.aggregate()) + return callback( + new MongoRuntimeError('A collection name must be determined before killCursors') + ); + } + + const killCursorsCommand: KillCursorsCommand = { + killCursors, + cursors: [this.cursorId] + }; + + server.command(this.ns, killCursorsCommand, { session }, () => callback()); + } +} + +defineAspects(KillCursorsOperation, [Aspect.MUST_SELECT_SAME_SERVER]); diff --git a/food-ordering-app/server/node_modules/mongodb/src/operations/list_collections.ts b/food-ordering-app/server/node_modules/mongodb/src/operations/list_collections.ts index 507b2c0b4..a2a44f1d3 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/operations/list_collections.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/operations/list_collections.ts @@ -1,11 +1,9 @@ import type { Binary, Document } from '../bson'; -import { AbstractCursor } from '../cursor/abstract_cursor'; import type { Db } from '../db'; import type { Server } from '../sdam/server'; import type { ClientSession } from '../sessions'; import { Callback, maxWireVersion } from '../utils'; import { CommandOperation, CommandOperationOptions } from './command'; -import { executeOperation, ExecutionResult } from './execute_operation'; import { Aspect, defineAspects } from './operation'; /** @public */ @@ -30,7 +28,8 @@ export class ListCollectionsOperation extends CommandOperation { constructor(db: Db, filter: Document, options?: ListCollectionsOptions) { super(db, options); - this.options = options ?? {}; + this.options = { ...options }; + delete this.options.writeConcern; this.db = db; this.filter = filter; this.nameOnly = !!this.options.nameOnly; @@ -86,47 +85,6 @@ export interface CollectionInfo extends Document { idIndex?: Document; } -/** @public */ -export class ListCollectionsCursor< - T extends Pick | CollectionInfo = - | Pick - | CollectionInfo -> extends AbstractCursor { - parent: Db; - filter: Document; - options?: ListCollectionsOptions; - - constructor(db: Db, filter: Document, options?: ListCollectionsOptions) { - super(db.s.client, db.s.namespace, options); - this.parent = db; - this.filter = filter; - this.options = options; - } - - clone(): ListCollectionsCursor { - return new ListCollectionsCursor(this.parent, this.filter, { - ...this.options, - ...this.cursorOptions - }); - } - - /** @internal */ - _initialize(session: ClientSession | undefined, callback: Callback): void { - const operation = new ListCollectionsOperation(this.parent, this.filter, { - ...this.cursorOptions, - ...this.options, - session - }); - - executeOperation(this.parent.s.client, operation, (err, response) => { - if (err || response == null) return callback(err); - - // TODO: NODE-2882 - callback(undefined, { server: operation.server, session, response }); - }); - } -} - defineAspects(ListCollectionsOperation, [ Aspect.READ_OPERATION, Aspect.RETRYABLE, diff --git a/food-ordering-app/server/node_modules/mongodb/src/operations/operation.ts b/food-ordering-app/server/node_modules/mongodb/src/operations/operation.ts index e21a87585..5bdd41477 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/operations/operation.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/operations/operation.ts @@ -1,3 +1,5 @@ +import { promisify } from 'util'; + import { BSONSerializeOptions, Document, resolveBSONOptions } from '../bson'; import { ReadPreference, ReadPreferenceLike } from '../read_preference'; import type { Server } from '../sdam/server'; @@ -11,16 +13,12 @@ export const Aspect = { EXPLAINABLE: Symbol('EXPLAINABLE'), SKIP_COLLATION: Symbol('SKIP_COLLATION'), CURSOR_CREATING: Symbol('CURSOR_CREATING'), - CURSOR_ITERATING: Symbol('CURSOR_ITERATING') + MUST_SELECT_SAME_SERVER: Symbol('MUST_SELECT_SAME_SERVER') } as const; /** @public */ export type Hint = string | Document; -export interface OperationConstructor extends Function { - aspects?: Set; -} - /** @public */ export interface OperationOptions extends BSONSerializeOptions { /** Specify ClientSession for this command */ @@ -60,7 +58,19 @@ export abstract class AbstractOperation { [kSession]: ClientSession | undefined; + executeAsync: (server: Server, session: ClientSession | undefined) => Promise; + constructor(options: OperationOptions = {}) { + this.executeAsync = promisify( + ( + server: Server, + session: ClientSession | undefined, + callback: (e: Error, r: TResult) => void + ) => { + this.execute(server, session, callback as any); + } + ); + this.readPreference = this.hasAspect(Aspect.WRITE_OPERATION) ? ReadPreference.primary : ReadPreference.fromOptions(options) ?? ReadPreference.primary; @@ -82,7 +92,7 @@ export abstract class AbstractOperation { ): void; hasAspect(aspect: symbol): boolean { - const ctor = this.constructor as OperationConstructor; + const ctor = this.constructor as { aspects?: Set }; if (ctor.aspects == null) { return false; } @@ -94,6 +104,10 @@ export abstract class AbstractOperation { return this[kSession]; } + clearSession() { + this[kSession] = undefined; + } + get canRetryRead(): boolean { return true; } @@ -104,7 +118,7 @@ export abstract class AbstractOperation { } export function defineAspects( - operation: OperationConstructor, + operation: { new (...args: any[]): any }, aspects: symbol | symbol[] | Set ): Set { if (!Array.isArray(aspects) && !(aspects instanceof Set)) { diff --git a/food-ordering-app/server/node_modules/mongodb/src/operations/set_profiling_level.ts b/food-ordering-app/server/node_modules/mongodb/src/operations/set_profiling_level.ts index 6fc8502dc..2dd7e3932 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/operations/set_profiling_level.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/operations/set_profiling_level.ts @@ -16,7 +16,7 @@ export const ProfilingLevel = Object.freeze({ } as const); /** @public */ -export type ProfilingLevel = typeof ProfilingLevel[keyof typeof ProfilingLevel]; +export type ProfilingLevel = (typeof ProfilingLevel)[keyof typeof ProfilingLevel]; /** @public */ export type SetProfilingLevelOptions = CommandOperationOptions; diff --git a/food-ordering-app/server/node_modules/mongodb/src/operations/update.ts b/food-ordering-app/server/node_modules/mongodb/src/operations/update.ts index a389878a1..278a0b34b 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/operations/update.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/operations/update.ts @@ -3,13 +3,7 @@ import type { Collection } from '../collection'; import { MongoCompatibilityError, MongoInvalidArgumentError, MongoServerError } from '../error'; import type { Server } from '../sdam/server'; import type { ClientSession } from '../sessions'; -import { - Callback, - collationNotSupported, - hasAtomicOperators, - maxWireVersion, - MongoDBNamespace -} from '../utils'; +import { Callback, hasAtomicOperators, MongoDBNamespace } from '../utils'; import { CollationOptions, CommandOperation, CommandOperationOptions } from './command'; import { Aspect, defineAspects, Hint } from './operation'; @@ -22,7 +16,7 @@ export interface UpdateOptions extends CommandOperationOptions { /** Specifies a collation */ collation?: CollationOptions; /** Specify that the update query should only consider plans using the hinted index */ - hint?: string | Document; + hint?: Hint; /** When true, creates a new document if no document matches the query */ upsert?: boolean; /** Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0). */ @@ -113,37 +107,15 @@ export class UpdateOperation extends CommandOperation { command.comment = options.comment; } - const statementWithCollation = this.statements.find(statement => !!statement.collation); - if ( - collationNotSupported(server, options) || - (statementWithCollation && collationNotSupported(server, statementWithCollation)) - ) { - callback(new MongoCompatibilityError(`Server ${server.name} does not support collation`)); - return; - } - const unacknowledgedWrite = this.writeConcern && this.writeConcern.w === 0; - if (unacknowledgedWrite || maxWireVersion(server) < 5) { + if (unacknowledgedWrite) { if (this.statements.find((o: Document) => o.hint)) { - callback(new MongoCompatibilityError(`Servers < 3.4 do not support hint on update`)); + // TODO(NODE-3541): fix error for hint with unacknowledged writes + callback(new MongoCompatibilityError(`hint is not supported with unacknowledged writes`)); return; } } - if (this.explain && maxWireVersion(server) < 3) { - callback( - new MongoCompatibilityError(`Server ${server.name} does not support explain on update`) - ); - return; - } - - if (this.statements.some(statement => !!statement.arrayFilters) && maxWireVersion(server) < 6) { - callback( - new MongoCompatibilityError('Option "arrayFilters" is only supported on MongoDB 3.6+') - ); - return; - } - super.executeCommand(server, session, command, callback); } } @@ -280,7 +252,7 @@ export class ReplaceOneOperation extends UpdateOperation { export function makeUpdateStatement( filter: Document, - update: Document, + update: Document | Document[], options: UpdateOptions & { multi?: boolean } ): UpdateStatement { if (filter == null || typeof filter !== 'object') { diff --git a/food-ordering-app/server/node_modules/mongodb/src/promise_provider.ts b/food-ordering-app/server/node_modules/mongodb/src/promise_provider.ts index a6aeb548e..eb9a28c75 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/promise_provider.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/promise_provider.ts @@ -4,27 +4,41 @@ import { MongoInvalidArgumentError } from './error'; const kPromise = Symbol('promise'); interface PromiseStore { - [kPromise]?: PromiseConstructor; + [kPromise]: PromiseConstructor | null; } const store: PromiseStore = { - [kPromise]: undefined + [kPromise]: null }; /** * Global promise store allowing user-provided promises + * @deprecated Setting a custom promise library is deprecated the next major version will use the global Promise constructor only. * @public */ export class PromiseProvider { - /** Validates the passed in promise library */ + /** + * Validates the passed in promise library + * @deprecated Setting a custom promise library is deprecated the next major version will use the global Promise constructor only. + */ static validate(lib: unknown): lib is PromiseConstructor { if (typeof lib !== 'function') throw new MongoInvalidArgumentError(`Promise must be a function, got ${lib}`); return !!lib; } - /** Sets the promise library */ - static set(lib: PromiseConstructor): void { + /** + * Sets the promise library + * @deprecated Setting a custom promise library is deprecated the next major version will use the global Promise constructor only. + */ + static set(lib: PromiseConstructor | null): void { + // eslint-disable-next-line no-restricted-syntax + if (lib === null) { + // Check explicitly against null since `.set()` (no args) should fall through to validate + store[kPromise] = null; + return; + } + if (!PromiseProvider.validate(lib)) { // validate return; @@ -32,10 +46,11 @@ export class PromiseProvider { store[kPromise] = lib; } - /** Get the stored promise library, or resolves passed in */ - static get(): PromiseConstructor { - return store[kPromise] as PromiseConstructor; + /** + * Get the stored promise library, or resolves passed in + * @deprecated Setting a custom promise library is deprecated the next major version will use the global Promise constructor only. + */ + static get(): PromiseConstructor | null { + return store[kPromise]; } } - -PromiseProvider.set(global.Promise); diff --git a/food-ordering-app/server/node_modules/mongodb/src/read_concern.ts b/food-ordering-app/server/node_modules/mongodb/src/read_concern.ts index 09e39be56..30530f5fe 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/read_concern.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/read_concern.ts @@ -10,7 +10,7 @@ export const ReadConcernLevel = Object.freeze({ } as const); /** @public */ -export type ReadConcernLevel = typeof ReadConcernLevel[keyof typeof ReadConcernLevel]; +export type ReadConcernLevel = (typeof ReadConcernLevel)[keyof typeof ReadConcernLevel]; /** @public */ export type ReadConcernLike = ReadConcern | { level: ReadConcernLevel } | ReadConcernLevel; diff --git a/food-ordering-app/server/node_modules/mongodb/src/read_preference.ts b/food-ordering-app/server/node_modules/mongodb/src/read_preference.ts index 554bf2341..d2aa8db28 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/read_preference.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/read_preference.ts @@ -16,7 +16,7 @@ export const ReadPreferenceMode = Object.freeze({ } as const); /** @public */ -export type ReadPreferenceMode = typeof ReadPreferenceMode[keyof typeof ReadPreferenceMode]; +export type ReadPreferenceMode = (typeof ReadPreferenceMode)[keyof typeof ReadPreferenceMode]; /** @public */ export interface HedgeOptions { @@ -156,21 +156,17 @@ export class ReadPreference { } if (typeof readPreference === 'string') { - return new ReadPreference(readPreference as ReadPreferenceMode, readPreferenceTags, { + return new ReadPreference(readPreference, readPreferenceTags, { maxStalenessSeconds: options.maxStalenessSeconds, hedge: options.hedge }); } else if (!(readPreference instanceof ReadPreference) && typeof readPreference === 'object') { const mode = readPreference.mode || readPreference.preference; if (mode && typeof mode === 'string') { - return new ReadPreference( - mode as ReadPreferenceMode, - readPreference.tags ?? readPreferenceTags, - { - maxStalenessSeconds: readPreference.maxStalenessSeconds, - hedge: options.hedge - } - ); + return new ReadPreference(mode, readPreference.tags ?? readPreferenceTags, { + maxStalenessSeconds: readPreference.maxStalenessSeconds, + hedge: options.hedge + }); } } @@ -189,11 +185,11 @@ export class ReadPreference { const r = options.readPreference; if (typeof r === 'string') { - options.readPreference = new ReadPreference(r as ReadPreferenceMode); + options.readPreference = new ReadPreference(r); } else if (r && !(r instanceof ReadPreference) && typeof r === 'object') { const mode = r.mode || r.preference; if (mode && typeof mode === 'string') { - options.readPreference = new ReadPreference(mode as ReadPreferenceMode, r.tags, { + options.readPreference = new ReadPreference(mode, r.tags, { maxStalenessSeconds: r.maxStalenessSeconds }); } diff --git a/food-ordering-app/server/node_modules/mongodb/src/sdam/common.ts b/food-ordering-app/server/node_modules/mongodb/src/sdam/common.ts index 6738ad9eb..e4b84d83f 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/sdam/common.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/sdam/common.ts @@ -1,3 +1,5 @@ +import { clearTimeout } from 'timers'; + import type { Binary, Long, Timestamp } from '../bson'; import type { ClientSession } from '../sessions'; import type { Topology } from './topology'; @@ -22,7 +24,7 @@ export const TopologyType = Object.freeze({ } as const); /** @public */ -export type TopologyType = typeof TopologyType[keyof typeof TopologyType]; +export type TopologyType = (typeof TopologyType)[keyof typeof TopologyType]; /** * An enumeration of server types we know about @@ -42,7 +44,7 @@ export const ServerType = Object.freeze({ } as const); /** @public */ -export type ServerType = typeof ServerType[keyof typeof ServerType]; +export type ServerType = (typeof ServerType)[keyof typeof ServerType]; /** @internal */ export type TimerQueue = Set; diff --git a/food-ordering-app/server/node_modules/mongodb/src/sdam/monitor.ts b/food-ordering-app/server/node_modules/mongodb/src/sdam/monitor.ts index cd1bc092f..f210fa74c 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/sdam/monitor.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/sdam/monitor.ts @@ -1,20 +1,13 @@ -import { setTimeout } from 'timers'; +import { clearTimeout, setTimeout } from 'timers'; import { Document, Long } from '../bson'; import { connect } from '../cmap/connect'; import { Connection, ConnectionOptions } from '../cmap/connection'; import { LEGACY_HELLO_COMMAND } from '../constants'; -import { MongoNetworkError } from '../error'; +import { MongoError, MongoErrorLabel, MongoNetworkTimeoutError } from '../error'; import { CancellationToken, TypedEventEmitter } from '../mongo_types'; -import type { Callback, InterruptibleAsyncInterval } from '../utils'; -import { - calculateDurationInMs, - EventEmitterWithState, - makeInterruptibleAsyncInterval, - makeStateMachine, - now, - ns -} from '../utils'; +import type { Callback } from '../utils'; +import { calculateDurationInMs, EventEmitterWithState, makeStateMachine, now, ns } from '../utils'; import { ServerType, STATE_CLOSED, STATE_CLOSING } from './common'; import { ServerHeartbeatFailedEvent, @@ -33,8 +26,6 @@ const kConnection = Symbol('connection'); /** @internal */ const kCancellationToken = Symbol('cancellationToken'); /** @internal */ -const kRTTPinger = Symbol('rttPinger'); -/** @internal */ const kRoundTripTime = Symbol('roundTripTime'); const STATE_IDLE = 'idle'; @@ -69,7 +60,7 @@ export type MonitorEvents = { serverHeartbeatStarted(event: ServerHeartbeatStartedEvent): void; serverHeartbeatSucceeded(event: ServerHeartbeatSucceededEvent): void; serverHeartbeatFailed(event: ServerHeartbeatFailedEvent): void; - resetServer(error?: Error): void; + resetServer(error?: MongoError): void; resetConnectionPool(): void; close(): void; } & EventEmitterWithState; @@ -87,8 +78,8 @@ export class Monitor extends TypedEventEmitter { [kConnection]?: Connection; [kCancellationToken]: CancellationToken; /** @internal */ - [kMonitorId]?: InterruptibleAsyncInterval; - [kRTTPinger]?: RTTPinger; + [kMonitorId]?: MonitorInterval; + rttPinger?: RTTPinger; get connection(): Connection | undefined { return this[kConnection]; @@ -150,9 +141,9 @@ export class Monitor extends TypedEventEmitter { // start const heartbeatFrequencyMS = this.options.heartbeatFrequencyMS; const minHeartbeatFrequencyMS = this.options.minHeartbeatFrequencyMS; - this[kMonitorId] = makeInterruptibleAsyncInterval(monitorServer(this), { - interval: heartbeatFrequencyMS, - minInterval: minHeartbeatFrequencyMS, + this[kMonitorId] = new MonitorInterval(monitorServer(this), { + heartbeatFrequencyMS: heartbeatFrequencyMS, + minHeartbeatFrequencyMS: minHeartbeatFrequencyMS, immediate: true }); } @@ -180,9 +171,9 @@ export class Monitor extends TypedEventEmitter { // restart monitoring const heartbeatFrequencyMS = this.options.heartbeatFrequencyMS; const minHeartbeatFrequencyMS = this.options.minHeartbeatFrequencyMS; - this[kMonitorId] = makeInterruptibleAsyncInterval(monitorServer(this), { - interval: heartbeatFrequencyMS, - minInterval: minHeartbeatFrequencyMS + this[kMonitorId] = new MonitorInterval(monitorServer(this), { + heartbeatFrequencyMS: heartbeatFrequencyMS, + minHeartbeatFrequencyMS: minHeartbeatFrequencyMS }); } @@ -204,8 +195,8 @@ function resetMonitorState(monitor: Monitor) { monitor[kMonitorId]?.stop(); monitor[kMonitorId] = undefined; - monitor[kRTTPinger]?.close(); - monitor[kRTTPinger] = undefined; + monitor.rttPinger?.close(); + monitor.rttPinger = undefined; monitor[kCancellationToken].emit('cancel'); @@ -226,8 +217,13 @@ function checkServer(monitor: Monitor, callback: Callback) { new ServerHeartbeatFailedEvent(monitor.address, calculateDurationInMs(start), err) ); - monitor.emit('resetServer', err); - monitor.emit('resetConnectionPool'); + const error = !(err instanceof MongoError) ? new MongoError(err) : err; + error.addErrorLabel(MongoErrorLabel.ResetPool); + if (error instanceof MongoNetworkTimeoutError) { + error.addErrorLabel(MongoErrorLabel.InterruptInUseConnections); + } + + monitor.emit('resetServer', error); callback(err); } @@ -253,8 +249,8 @@ function checkServer(monitor: Monitor, callback: Callback) { } : { socketTimeoutMS: connectTimeoutMS }; - if (isAwaitable && monitor[kRTTPinger] == null) { - monitor[kRTTPinger] = new RTTPinger( + if (isAwaitable && monitor.rttPinger == null) { + monitor.rttPinger = new RTTPinger( monitor[kCancellationToken], Object.assign( { heartbeatFrequencyMS: monitor.options.heartbeatFrequencyMS }, @@ -273,9 +269,10 @@ function checkServer(monitor: Monitor, callback: Callback) { hello.isWritablePrimary = hello[LEGACY_HELLO_COMMAND]; } - const rttPinger = monitor[kRTTPinger]; const duration = - isAwaitable && rttPinger ? rttPinger.roundTripTime : calculateDurationInMs(start); + isAwaitable && monitor.rttPinger + ? monitor.rttPinger.roundTripTime + : calculateDurationInMs(start); monitor.emit( Server.SERVER_HEARTBEAT_SUCCEEDED, @@ -291,8 +288,8 @@ function checkServer(monitor: Monitor, callback: Callback) { ); start = now(); } else { - monitor[kRTTPinger]?.close(); - monitor[kRTTPinger] = undefined; + monitor.rttPinger?.close(); + monitor.rttPinger = undefined; callback(undefined, hello); } @@ -306,11 +303,6 @@ function checkServer(monitor: Monitor, callback: Callback) { if (err) { monitor[kConnection] = undefined; - // we already reset the connection pool on network errors in all cases - if (!(err instanceof MongoNetworkError)) { - monitor.emit('resetConnectionPool'); - } - failureHandler(err); return; } @@ -338,6 +330,10 @@ function checkServer(monitor: Monitor, callback: Callback) { function monitorServer(monitor: Monitor) { return (callback: Callback) => { + if (monitor.s.state === STATE_MONITORING) { + process.nextTick(callback); + return; + } stateTransition(monitor, STATE_MONITORING); function done() { if (!isInCloseState(monitor)) { @@ -351,7 +347,6 @@ function monitorServer(monitor: Monitor) { if (err) { // otherwise an error occurred on initial discovery, also bail if (monitor[kServer].description.type === ServerType.Unknown) { - monitor.emit('resetServer', err); return done(); } } @@ -374,6 +369,7 @@ function makeTopologyVersion(tv: TopologyVersion) { return { processId: tv.processId, // tests mock counter as just number, but in a real situation counter should always be a Long + // TODO(NODE-2674): Preserve int64 sent from MongoDB counter: Long.isLong(tv.counter) ? tv.counter : Long.fromNumber(tv.counter) }; } @@ -386,7 +382,7 @@ export interface RTTPingerOptions extends ConnectionOptions { /** @internal */ export class RTTPinger { /** @internal */ - [kConnection]?: Connection; + connection?: Connection; /** @internal */ [kCancellationToken]: CancellationToken; /** @internal */ @@ -396,7 +392,7 @@ export class RTTPinger { closed: boolean; constructor(cancellationToken: CancellationToken, options: RTTPingerOptions) { - this[kConnection] = undefined; + this.connection = undefined; this[kCancellationToken] = cancellationToken; this[kRoundTripTime] = 0; this.closed = false; @@ -413,8 +409,8 @@ export class RTTPinger { this.closed = true; clearTimeout(this[kMonitorId]); - this[kConnection]?.destroy({ force: true }); - this[kConnection] = undefined; + this.connection?.destroy({ force: true }); + this.connection = undefined; } } @@ -433,8 +429,8 @@ function measureRoundTripTime(rttPinger: RTTPinger, options: RTTPingerOptions) { return; } - if (rttPinger[kConnection] == null) { - rttPinger[kConnection] = conn; + if (rttPinger.connection == null) { + rttPinger.connection = conn; } rttPinger[kRoundTripTime] = calculateDurationInMs(start); @@ -444,11 +440,11 @@ function measureRoundTripTime(rttPinger: RTTPinger, options: RTTPingerOptions) { ); } - const connection = rttPinger[kConnection]; + const connection = rttPinger.connection; if (connection == null) { connect(options, (err, conn) => { if (err) { - rttPinger[kConnection] = undefined; + rttPinger.connection = undefined; rttPinger[kRoundTripTime] = 0; return; } @@ -459,9 +455,12 @@ function measureRoundTripTime(rttPinger: RTTPinger, options: RTTPingerOptions) { return; } - connection.command(ns('admin.$cmd'), { [LEGACY_HELLO_COMMAND]: 1 }, undefined, err => { + const commandName = + connection.serverApi?.version || connection.helloOk ? 'hello' : LEGACY_HELLO_COMMAND; + connection.command(ns('admin.$cmd'), { [commandName]: 1 }, undefined, err => { if (err) { - rttPinger[kConnection] = undefined; + rttPinger.connection?.destroy({ force: true }); + rttPinger.connection = undefined; rttPinger[kRoundTripTime] = 0; return; } @@ -469,3 +468,129 @@ function measureRoundTripTime(rttPinger: RTTPinger, options: RTTPingerOptions) { measureAndReschedule(); }); } + +/** + * @internal + */ +export interface MonitorIntervalOptions { + /** The interval to execute a method on */ + heartbeatFrequencyMS: number; + /** A minimum interval that must elapse before the method is called */ + minHeartbeatFrequencyMS: number; + /** Whether the method should be called immediately when the interval is started */ + immediate: boolean; +} + +/** + * @internal + */ +export class MonitorInterval { + fn: (callback: Callback) => void; + timerId: NodeJS.Timeout | undefined; + lastExecutionEnded: number; + isExpeditedCallToFnScheduled = false; + stopped = false; + isExecutionInProgress = false; + hasExecutedOnce = false; + + heartbeatFrequencyMS: number; + minHeartbeatFrequencyMS: number; + + constructor(fn: (callback: Callback) => void, options: Partial = {}) { + this.fn = fn; + this.lastExecutionEnded = -Infinity; + + this.heartbeatFrequencyMS = options.heartbeatFrequencyMS ?? 1000; + this.minHeartbeatFrequencyMS = options.minHeartbeatFrequencyMS ?? 500; + + if (options.immediate) { + this._executeAndReschedule(); + } else { + this._reschedule(undefined); + } + } + + wake() { + const currentTime = now(); + const timeSinceLastCall = currentTime - this.lastExecutionEnded; + + // TODO(NODE-4674): Add error handling and logging to the monitor + if (timeSinceLastCall < 0) { + return this._executeAndReschedule(); + } + + if (this.isExecutionInProgress) { + return; + } + + // debounce multiple calls to wake within the `minInterval` + if (this.isExpeditedCallToFnScheduled) { + return; + } + + // reschedule a call as soon as possible, ensuring the call never happens + // faster than the `minInterval` + if (timeSinceLastCall < this.minHeartbeatFrequencyMS) { + this.isExpeditedCallToFnScheduled = true; + this._reschedule(this.minHeartbeatFrequencyMS - timeSinceLastCall); + return; + } + + this._executeAndReschedule(); + } + + stop() { + this.stopped = true; + if (this.timerId) { + clearTimeout(this.timerId); + this.timerId = undefined; + } + + this.lastExecutionEnded = -Infinity; + this.isExpeditedCallToFnScheduled = false; + } + + toString() { + return JSON.stringify(this); + } + + toJSON() { + const currentTime = now(); + const timeSinceLastCall = currentTime - this.lastExecutionEnded; + return { + timerId: this.timerId != null ? 'set' : 'cleared', + lastCallTime: this.lastExecutionEnded, + isExpeditedCheckScheduled: this.isExpeditedCallToFnScheduled, + stopped: this.stopped, + heartbeatFrequencyMS: this.heartbeatFrequencyMS, + minHeartbeatFrequencyMS: this.minHeartbeatFrequencyMS, + currentTime, + timeSinceLastCall + }; + } + + private _reschedule(ms?: number) { + if (this.stopped) return; + if (this.timerId) { + clearTimeout(this.timerId); + } + + this.timerId = setTimeout(this._executeAndReschedule, ms || this.heartbeatFrequencyMS); + } + + private _executeAndReschedule = () => { + if (this.stopped) return; + if (this.timerId) { + clearTimeout(this.timerId); + } + + this.isExpeditedCallToFnScheduled = false; + this.isExecutionInProgress = true; + + this.fn(() => { + this.lastExecutionEnded = now(); + this.isExecutionInProgress = false; + this._reschedule(this.heartbeatFrequencyMS); + }); + }; +} diff --git a/food-ordering-app/server/node_modules/mongodb/src/sdam/server.ts b/food-ordering-app/server/node_modules/mongodb/src/sdam/server.ts index 93c7be92a..133a9e01b 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/sdam/server.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/sdam/server.ts @@ -1,10 +1,11 @@ -import type { Document, Long } from '../bson'; +import type { Document } from '../bson'; import { CommandOptions, Connection, DestroyOptions, GetMoreOptions } from '../cmap/connection'; import { ConnectionPool, ConnectionPoolEvents, ConnectionPoolOptions } from '../cmap/connection_pool'; +import { PoolClearedError } from '../cmap/errors'; import { APM_EVENTS, CLOSED, @@ -19,16 +20,18 @@ import { } from '../constants'; import type { AutoEncrypter } from '../deps'; import { + AnyError, isNetworkErrorBeforeHandshake, isNodeShuttingDownError, isSDAMUnrecoverableError, - MongoCompatibilityError, MongoError, MongoErrorLabel, MongoInvalidArgumentError, MongoNetworkError, MongoNetworkTimeoutError, + MongoRuntimeError, MongoServerClosedError, + MongoServerError, MongoUnexpectedServerResponseError, needsRetryableWriteLabel } from '../error'; @@ -39,7 +42,6 @@ import type { ClientSession } from '../sessions'; import { isTransactionCommand } from '../transactions'; import { Callback, - collationNotSupported, EventEmitterWithState, makeStateMachine, maxWireVersion, @@ -70,9 +72,6 @@ const stateTransition = makeStateMachine({ [STATE_CLOSING]: [STATE_CLOSING, STATE_CLOSED] }); -/** @internal */ -const kMonitor = Symbol('monitor'); - /** @public */ export type ServerOptions = Omit & MonitorOptions; @@ -116,7 +115,7 @@ export class Server extends TypedEventEmitter { s: ServerPrivate; serverApi?: ServerApi; hello?: Document; - [kMonitor]: Monitor | null; + monitor: Monitor | null; /** @event */ static readonly SERVER_HEARTBEAT_STARTED = SERVER_HEARTBEAT_STARTED; @@ -149,7 +148,7 @@ export class Server extends TypedEventEmitter { logger: new Logger('Server'), state: STATE_CLOSED, topology, - pool: new ConnectionPool(poolOptions), + pool: new ConnectionPool(this, poolOptions), operationCount: 0 }; @@ -162,26 +161,21 @@ export class Server extends TypedEventEmitter { }); if (this.loadBalanced) { - this[kMonitor] = null; + this.monitor = null; // monitoring is disabled in load balancing mode return; } // create the monitor // TODO(NODE-4144): Remove new variable for type narrowing - const monitor = new Monitor(this, this.s.options); - this[kMonitor] = monitor; + this.monitor = new Monitor(this, this.s.options); for (const event of HEARTBEAT_EVENTS) { - monitor.on(event, (e: any) => this.emit(event, e)); + this.monitor.on(event, (e: any) => this.emit(event, e)); } - monitor.on('resetConnectionPool', () => { - this.s.pool.clear(); - }); - - monitor.on('resetServer', (error: MongoError) => markServerUnknown(this, error)); - monitor.on(Server.SERVER_HEARTBEAT_SUCCEEDED, (event: ServerHeartbeatSucceededEvent) => { + this.monitor.on('resetServer', (error: MongoError) => markServerUnknown(this, error)); + this.monitor.on(Server.SERVER_HEARTBEAT_SUCCEEDED, (event: ServerHeartbeatSucceededEvent) => { this.emit( Server.DESCRIPTION_RECEIVED, new ServerDescription(this.description.hostAddress, event.reply, { @@ -237,7 +231,7 @@ export class Server extends TypedEventEmitter { // a load balancer. It never transitions out of this state and // has no monitor. if (!this.loadBalanced) { - this[kMonitor]?.connect(); + this.monitor?.connect(); } else { stateTransition(this, STATE_CONNECTED); this.emit(Server.CONNECT, this); @@ -260,7 +254,7 @@ export class Server extends TypedEventEmitter { stateTransition(this, STATE_CLOSING); if (!this.loadBalanced) { - this[kMonitor]?.close(); + this.monitor?.close(); } this.s.pool.close(options, err => { @@ -278,7 +272,7 @@ export class Server extends TypedEventEmitter { */ requestCheck(): void { if (!this.loadBalanced) { - this[kMonitor]?.requestCheck(); + this.monitor?.requestCheck(); } } @@ -316,12 +310,6 @@ export class Server extends TypedEventEmitter { delete finalOptions.readPreference; } - // error if collation not supported - if (collationNotSupported(this, cmd)) { - callback(new MongoCompatibilityError(`Server ${this.name} does not support collation`)); - return; - } - const session = finalOptions.session; const conn = session?.pinnedConnection; @@ -357,7 +345,12 @@ export class Server extends TypedEventEmitter { (err, conn, cb) => { if (err || !conn) { this.s.operationCount -= 1; - markServerUnknown(this, err); + if (!err) { + return cb(new MongoRuntimeError('Failed to create connection without error')); + } + if (!(err instanceof PoolClearedError)) { + this.handleError(err); + } return cb(err); } @@ -376,85 +369,51 @@ export class Server extends TypedEventEmitter { } /** - * Execute a `getMore` against the server + * Handle SDAM error * @internal */ - getMore( - ns: MongoDBNamespace, - cursorId: Long, - options: GetMoreOptions, - callback: Callback - ): void { - if (this.s.state === STATE_CLOSING || this.s.state === STATE_CLOSED) { - callback(new MongoServerClosedError()); + handleError(error: AnyError, connection?: Connection) { + if (!(error instanceof MongoError)) { return; } - this.s.operationCount += 1; - - this.s.pool.withConnection( - options.session?.pinnedConnection, - (err, conn, cb) => { - if (err || !conn) { - this.s.operationCount -= 1; - markServerUnknown(this, err); - return cb(err); - } - - conn.getMore( - ns, - cursorId, - options, - makeOperationHandler(this, conn, {}, options, (error, response) => { - this.s.operationCount -= 1; - cb(error, response); - }) - ); - }, - callback - ); - } - - /** - * Execute a `killCursors` command against the server - * @internal - */ - killCursors( - ns: MongoDBNamespace, - cursorIds: Long[], - options: CommandOptions, - callback?: Callback - ): void { - if (this.s.state === STATE_CLOSING || this.s.state === STATE_CLOSED) { - if (typeof callback === 'function') { - callback(new MongoServerClosedError()); - } - + const isStaleError = + error.connectionGeneration && error.connectionGeneration < this.s.pool.generation; + if (isStaleError) { return; } - this.s.operationCount += 1; - this.s.pool.withConnection( - options.session?.pinnedConnection, - (err, conn, cb) => { - if (err || !conn) { - this.s.operationCount -= 1; - markServerUnknown(this, err); - return cb(err); - } + const isNetworkNonTimeoutError = + error instanceof MongoNetworkError && !(error instanceof MongoNetworkTimeoutError); + const isNetworkTimeoutBeforeHandshakeError = isNetworkErrorBeforeHandshake(error); + const isAuthHandshakeError = error.hasErrorLabel(MongoErrorLabel.HandshakeError); + if (isNetworkNonTimeoutError || isNetworkTimeoutBeforeHandshakeError || isAuthHandshakeError) { + // In load balanced mode we never mark the server as unknown and always + // clear for the specific service id. + if (!this.loadBalanced) { + error.addErrorLabel(MongoErrorLabel.ResetPool); + markServerUnknown(this, error); + } else if (connection) { + this.s.pool.clear({ serviceId: connection.serviceId }); + } + } else { + if (isSDAMUnrecoverableError(error)) { + if (shouldHandleStateChangeError(this, error)) { + const shouldClearPool = maxWireVersion(this) <= 7 || isNodeShuttingDownError(error); + if (this.loadBalanced && connection && shouldClearPool) { + this.s.pool.clear({ serviceId: connection.serviceId }); + } - conn.killCursors( - ns, - cursorIds, - options, - makeOperationHandler(this, conn, {}, undefined, (error, response) => { - this.s.operationCount -= 1; - cb(error, response); - }) - ); - }, - callback - ); + if (!this.loadBalanced) { + if (shouldClearPool) { + error.addErrorLabel(MongoErrorLabel.ResetPool); + } + markServerUnknown(this, error); + process.nextTick(() => this.requestCheck()); + } + } + } + } } } @@ -467,23 +426,19 @@ function calculateRoundTripTime(oldRtt: number, duration: number): number { return alpha * duration + (1 - alpha) * oldRtt; } -function markServerUnknown(server: Server, error?: MongoError) { +function markServerUnknown(server: Server, error?: MongoServerError) { // Load balancer servers can never be marked unknown. if (server.loadBalanced) { return; } if (error instanceof MongoNetworkError && !(error instanceof MongoNetworkTimeoutError)) { - server[kMonitor]?.reset(); + server.monitor?.reset(); } server.emit( Server.DESCRIPTION_RECEIVED, - new ServerDescription(server.description.hostAddress, undefined, { - error, - topologyVersion: - error && error.topologyVersion ? error.topologyVersion : server.description.topologyVersion - }) + new ServerDescription(server.description.hostAddress, undefined, { error }) ); } @@ -541,6 +496,10 @@ function makeOperationHandler( return callback(undefined, result); } + if (options?.noResponse === true) { + return callback(undefined, null); + } + if (!error) { return callback(new MongoUnexpectedServerResponseError('Empty response with no error')); } @@ -574,16 +533,6 @@ function makeOperationHandler( ) { error.addErrorLabel(MongoErrorLabel.RetryableWriteError); } - - if (!(error instanceof MongoNetworkTimeoutError) || isNetworkErrorBeforeHandshake(error)) { - // In load balanced mode we never mark the server as unknown and always - // clear for the specific service id. - - server.s.pool.clear(connection.serviceId); - if (!server.loadBalanced) { - markServerUnknown(server, error); - } - } } else { if ( (isRetryableWritesEnabled(server.s.topology) || isTransactionCommand(cmd)) && @@ -592,19 +541,6 @@ function makeOperationHandler( ) { error.addErrorLabel(MongoErrorLabel.RetryableWriteError); } - - if (isSDAMUnrecoverableError(error)) { - if (shouldHandleStateChangeError(server, error)) { - if (maxWireVersion(server) <= 7 || isNodeShuttingDownError(error)) { - server.s.pool.clear(connection.serviceId); - } - - if (!server.loadBalanced) { - markServerUnknown(server, error); - process.nextTick(() => server.requestCheck()); - } - } - } } if ( @@ -615,6 +551,8 @@ function makeOperationHandler( session.unpin({ force: true }); } + server.handleError(error, connection); + return callback(error); }; } diff --git a/food-ordering-app/server/node_modules/mongodb/src/sdam/server_description.ts b/food-ordering-app/server/node_modules/mongodb/src/sdam/server_description.ts index 5082c7cb3..ab5da450a 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/sdam/server_description.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/sdam/server_description.ts @@ -1,6 +1,6 @@ import { Document, Long, ObjectId } from '../bson'; -import type { MongoError } from '../error'; -import { arrayStrictEqual, errorStrictEqual, HostAddress, now } from '../utils'; +import { MongoError, MongoRuntimeError, MongoServerError } from '../error'; +import { arrayStrictEqual, compareObjectId, errorStrictEqual, HostAddress, now } from '../utils'; import type { ClusterTime } from './common'; import { ServerType } from './common'; @@ -31,14 +31,11 @@ export type TagSet = { [key: string]: string }; /** @internal */ export interface ServerDescriptionOptions { /** An Error used for better reporting debugging */ - error?: MongoError; + error?: MongoServerError; /** The round trip time to ping this server (in ms) */ roundTripTime?: number; - /** The topologyVersion */ - topologyVersion?: TopologyVersion; - /** If the client is in load balancing mode. */ loadBalanced?: boolean; } @@ -50,28 +47,25 @@ export interface ServerDescriptionOptions { * @public */ export class ServerDescription { - private _hostAddress: HostAddress; address: string; type: ServerType; hosts: string[]; passives: string[]; arbiters: string[]; tags: TagSet; - - error?: MongoError; - topologyVersion?: TopologyVersion; + error: MongoError | null; + topologyVersion: TopologyVersion | null; minWireVersion: number; maxWireVersion: number; roundTripTime: number; lastUpdateTime: number; lastWriteDate: number; - - me?: string; - primary?: string; - setName?: string; - setVersion?: number; - electionId?: ObjectId; - logicalSessionTimeoutMinutes?: number; + me: string | null; + primary: string | null; + setName: string | null; + setVersion: number | null; + electionId: ObjectId | null; + logicalSessionTimeoutMinutes: number | null; // NOTE: does this belong here? It seems we should gossip the cluster time at the CMAP level $clusterTime?: ClusterTime; @@ -83,14 +77,19 @@ export class ServerDescription { * @param address - The address of the server * @param hello - An optional hello response for this server */ - constructor(address: HostAddress | string, hello?: Document, options?: ServerDescriptionOptions) { - if (typeof address === 'string') { - this._hostAddress = new HostAddress(address); - this.address = this._hostAddress.toString(); - } else { - this._hostAddress = address; - this.address = this._hostAddress.toString(); + constructor( + address: HostAddress | string, + hello?: Document, + options: ServerDescriptionOptions = {} + ) { + if (address == null || address === '') { + throw new MongoRuntimeError('ServerDescription must be provided with a non-empty address'); } + + this.address = + typeof address === 'string' + ? HostAddress.fromString(address).toString() // Use HostAddress to normalize + : address.toString(); this.type = parseServerType(hello, options); this.hosts = hello?.hosts?.map((host: string) => host.toLowerCase()) ?? []; this.passives = hello?.passives?.map((host: string) => host.toLowerCase()) ?? []; @@ -101,49 +100,20 @@ export class ServerDescription { this.roundTripTime = options?.roundTripTime ?? -1; this.lastUpdateTime = now(); this.lastWriteDate = hello?.lastWrite?.lastWriteDate ?? 0; - - if (options?.topologyVersion) { - this.topologyVersion = options.topologyVersion; - } else if (hello?.topologyVersion) { - this.topologyVersion = hello.topologyVersion; - } - - if (options?.error) { - this.error = options.error; - } - - if (hello?.primary) { - this.primary = hello.primary; - } - - if (hello?.me) { - this.me = hello.me.toLowerCase(); - } - - if (hello?.setName) { - this.setName = hello.setName; - } - - if (hello?.setVersion) { - this.setVersion = hello.setVersion; - } - - if (hello?.electionId) { - this.electionId = hello.electionId; - } - - if (hello?.logicalSessionTimeoutMinutes) { - this.logicalSessionTimeoutMinutes = hello.logicalSessionTimeoutMinutes; - } - - if (hello?.$clusterTime) { - this.$clusterTime = hello.$clusterTime; - } + this.error = options.error ?? null; + // TODO(NODE-2674): Preserve int64 sent from MongoDB + this.topologyVersion = this.error?.topologyVersion ?? hello?.topologyVersion ?? null; + this.setName = hello?.setName ?? null; + this.setVersion = hello?.setVersion ?? null; + this.electionId = hello?.electionId ?? null; + this.logicalSessionTimeoutMinutes = hello?.logicalSessionTimeoutMinutes ?? null; + this.primary = hello?.primary ?? null; + this.me = hello?.me?.toLowerCase() ?? null; + this.$clusterTime = hello?.$clusterTime ?? null; } get hostAddress(): HostAddress { - if (this._hostAddress) return this._hostAddress; - else return new HostAddress(this.address); + return HostAddress.fromString(this.address); } get allHosts(): string[] { @@ -179,15 +149,17 @@ export class ServerDescription { * Determines if another `ServerDescription` is equal to this one per the rules defined * in the {@link https://github.com/mongodb/specifications/blob/master/source/server-discovery-and-monitoring/server-discovery-and-monitoring.rst#serverdescription|SDAM spec} */ - equals(other: ServerDescription): boolean { + equals(other?: ServerDescription | null): boolean { + // Despite using the comparator that would determine a nullish topologyVersion as greater than + // for equality we should only always perform direct equality comparison const topologyVersionsEqual = - this.topologyVersion === other.topologyVersion || - compareTopologyVersion(this.topologyVersion, other.topologyVersion) === 0; + this.topologyVersion === other?.topologyVersion || + compareTopologyVersion(this.topologyVersion, other?.topologyVersion) === 0; - const electionIdsEqual: boolean = - this.electionId && other.electionId - ? other.electionId && this.electionId.equals(other.electionId) - : this.electionId === other.electionId; + const electionIdsEqual = + this.electionId != null && other?.electionId != null + ? compareObjectId(this.electionId, other.electionId) === 0 + : this.electionId === other?.electionId; return ( other != null && @@ -254,19 +226,37 @@ function tagsStrictEqual(tags: TagSet, tags2: TagSet): boolean { /** * Compares two topology versions. * - * @returns A negative number if `lhs` is older than `rhs`; positive if `lhs` is newer than `rhs`; 0 if they are equivalent. + * 1. If the response topologyVersion is unset or the ServerDescription's + * topologyVersion is null, the client MUST assume the response is more recent. + * 1. If the response's topologyVersion.processId is not equal to the + * ServerDescription's, the client MUST assume the response is more recent. + * 1. If the response's topologyVersion.processId is equal to the + * ServerDescription's, the client MUST use the counter field to determine + * which topologyVersion is more recent. + * + * ```ts + * currentTv < newTv === -1 + * currentTv === newTv === 0 + * currentTv > newTv === 1 + * ``` */ -export function compareTopologyVersion(lhs?: TopologyVersion, rhs?: TopologyVersion): number { - if (lhs == null || rhs == null) { +export function compareTopologyVersion( + currentTv?: TopologyVersion | null, + newTv?: TopologyVersion | null +): 0 | -1 | 1 { + if (currentTv == null || newTv == null) { return -1; } - if (lhs.processId.equals(rhs.processId)) { - // tests mock counter as just number, but in a real situation counter should always be a Long - const lhsCounter = Long.isLong(lhs.counter) ? lhs.counter : Long.fromNumber(lhs.counter); - const rhsCounter = Long.isLong(rhs.counter) ? lhs.counter : Long.fromNumber(rhs.counter); - return lhsCounter.compare(rhsCounter); + if (!currentTv.processId.equals(newTv.processId)) { + return -1; } - return -1; + // TODO(NODE-2674): Preserve int64 sent from MongoDB + const currentCounter = Long.isLong(currentTv.counter) + ? currentTv.counter + : Long.fromNumber(currentTv.counter); + const newCounter = Long.isLong(newTv.counter) ? newTv.counter : Long.fromNumber(newTv.counter); + + return currentCounter.compare(newCounter); } diff --git a/food-ordering-app/server/node_modules/mongodb/src/sdam/srv_polling.ts b/food-ordering-app/server/node_modules/mongodb/src/sdam/srv_polling.ts index 71ee20a47..7202282c1 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/sdam/srv_polling.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/sdam/srv_polling.ts @@ -1,25 +1,10 @@ import * as dns from 'dns'; -import { setTimeout } from 'timers'; +import { clearTimeout, setTimeout } from 'timers'; import { MongoRuntimeError } from '../error'; import { Logger, LoggerOptions } from '../logger'; import { TypedEventEmitter } from '../mongo_types'; -import { HostAddress } from '../utils'; - -/** - * Determines whether a provided address matches the provided parent domain in order - * to avoid certain attack vectors. - * - * @param srvAddress - The address to check against a domain - * @param parentDomain - The domain to check the provided address against - * @returns Whether the provided address matches the parent domain - */ -function matchesParentDomain(srvAddress: string, parentDomain: string): boolean { - const regex = /^.*?\./; - const srv = `.${srvAddress.replace(regex, '')}`; - const parent = `.${parentDomain.replace(regex, '')}`; - return srv.endsWith(parent); -} +import { HostAddress, matchesParentDomain } from '../utils'; /** * @internal @@ -111,7 +96,11 @@ export class SrvPoller extends TypedEventEmitter { clearTimeout(this._timeout); } - this._timeout = setTimeout(() => this._poll(), this.intervalMS); + this._timeout = setTimeout(() => { + this._poll().catch(unexpectedRuntimeError => { + this.logger.error(`Unexpected ${new MongoRuntimeError(unexpectedRuntimeError).stack}`); + }); + }, this.intervalMS); } success(srvRecords: dns.SrvRecord[]): void { @@ -133,33 +122,35 @@ export class SrvPoller extends TypedEventEmitter { ); } - _poll(): void { + async _poll(): Promise { const generation = this.generation; - dns.resolveSrv(this.srvAddress, (err, srvRecords) => { - if (generation !== this.generation) { - return; - } + let srvRecords; - if (err) { - this.failure('DNS error', err); - return; - } + try { + srvRecords = await dns.promises.resolveSrv(this.srvAddress); + } catch (dnsError) { + this.failure('DNS error', dnsError); + return; + } - const finalAddresses: dns.SrvRecord[] = []; - for (const record of srvRecords) { - if (matchesParentDomain(record.name, this.srvHost)) { - finalAddresses.push(record); - } else { - this.parentDomainMismatch(record); - } - } + if (generation !== this.generation) { + return; + } - if (!finalAddresses.length) { - this.failure('No valid addresses found at host'); - return; + const finalAddresses: dns.SrvRecord[] = []; + for (const record of srvRecords) { + if (matchesParentDomain(record.name, this.srvHost)) { + finalAddresses.push(record); + } else { + this.parentDomainMismatch(record); } + } + + if (!finalAddresses.length) { + this.failure('No valid addresses found at host'); + return; + } - this.success(finalAddresses); - }); + this.success(finalAddresses); } } diff --git a/food-ordering-app/server/node_modules/mongodb/src/sdam/topology.ts b/food-ordering-app/server/node_modules/mongodb/src/sdam/topology.ts index c489385c2..d1911b4c9 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/sdam/topology.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/sdam/topology.ts @@ -1,11 +1,12 @@ -import Denque = require('denque'); -import { setTimeout } from 'timers'; +import { clearTimeout, setTimeout } from 'timers'; +import { promisify } from 'util'; import type { BSONSerializeOptions, Document } from '../bson'; import { deserialize, serialize } from '../bson'; import type { MongoCredentials } from '../cmap/auth/mongo_credentials'; import type { ConnectionEvents, DestroyOptions } from '../cmap/connection'; import type { CloseOptions, ConnectionPoolEvents } from '../cmap/connection_pool'; +import type { ClientMetadata } from '../cmap/handshake/client_metadata'; import { DEFAULT_OPTIONS, FEATURE_FLAGS } from '../connection_string'; import { CLOSE, @@ -25,27 +26,23 @@ import { import { MongoCompatibilityError, MongoDriverError, + MongoError, + MongoErrorLabel, MongoRuntimeError, MongoServerSelectionError, MongoTopologyClosedError } from '../error'; -import type { MongoClient, MongoOptions, ServerApi } from '../mongo_client'; +import type { MongoClient, ServerApi } from '../mongo_client'; import { TypedEventEmitter } from '../mongo_types'; import { ReadPreference, ReadPreferenceLike } from '../read_preference'; -import { - ClientSession, - ClientSessionOptions, - ServerSessionId, - ServerSessionPool -} from '../sessions'; +import type { ClientSession } from '../sessions'; import type { Transaction } from '../transactions'; import { Callback, - ClientMetadata, - eachAsync, emitWarning, EventEmitterWithState, HostAddress, + List, makeStateMachine, ns, shuffle @@ -120,10 +117,6 @@ export interface TopologyPrivate { minHeartbeatFrequencyMS: number; /** A map of server instances to normalized addresses */ servers: Map; - /** Server Session Pool */ - sessionPool: ServerSessionPool; - /** Active client sessions */ - sessions: Set; credentials?: MongoCredentials; clusterTime?: ClusterTime; /** timers created for the initial connect to a server */ @@ -199,7 +192,7 @@ export class Topology extends TypedEventEmitter { /** @internal */ s: TopologyPrivate; /** @internal */ - [kWaitQueue]: Denque; + [kWaitQueue]: List; /** @internal */ hello?: Document; /** @internal */ @@ -240,13 +233,27 @@ export class Topology extends TypedEventEmitter { */ bson: { serialize: typeof serialize; deserialize: typeof deserialize }; + selectServerAsync: ( + selector: string | ReadPreference | ServerSelector, + options: SelectServerOptions + ) => Promise; + /** * @param seedlist - a list of HostAddress instances to connect to */ constructor(seeds: string | string[] | HostAddress | HostAddress[], options: TopologyOptions) { super(); - // Legacy CSFLE support + this.selectServerAsync = promisify( + ( + selector: string | ReadPreference | ServerSelector, + options: SelectServerOptions, + callback: (e: Error, r: Server) => void + ) => this.selectServer(selector, options, callback as any) + ); + + // Saving a reference to these BSON functions + // supports v2.2.0 and older versions of mongodb-client-encryption this.bson = Object.create(null); this.bson.serialize = serialize; this.bson.deserialize = deserialize; @@ -291,7 +298,7 @@ export class Topology extends TypedEventEmitter { serverDescriptions.set(hostAddress.toString(), new ServerDescription(hostAddress)); } - this[kWaitQueue] = new Denque(); + this[kWaitQueue] = new List(); this.s = { // the id of this topology id: topologyId, @@ -316,10 +323,6 @@ export class Topology extends TypedEventEmitter { minHeartbeatFrequencyMS: options.minHeartbeatFrequencyMS, // a map of server instances to normalized addresses servers: new Map(), - // Server Session Pool - sessionPool: new ServerSessionPool(this), - // Active client sessions - sessions: new Set(), credentials: options?.credentials, clusterTime: undefined, @@ -397,7 +400,9 @@ export class Topology extends TypedEventEmitter { } /** Initiate server connect */ - connect(options?: ConnectOptions, callback?: Callback): void { + connect(callback: Callback): void; + connect(options: ConnectOptions, callback: Callback): void; + connect(options?: ConnectOptions | Callback, callback?: Callback): void { if (typeof options === 'function') (callback = options), (options = {}); options = options ?? {}; if (this.s.state === STATE_CONNECTED) { @@ -443,13 +448,13 @@ export class Topology extends TypedEventEmitter { } } + const exitWithError = (error: Error) => + callback ? callback(error) : this.emit(Topology.ERROR, error); + const readPreference = options.readPreference ?? ReadPreference.primary; this.selectServer(readPreferenceServerSelector(readPreference), options, (err, server) => { if (err) { - this.close(); - - typeof callback === 'function' ? callback(err) : this.emit(Topology.ERROR, err); - return; + return this.close({ force: false }, () => exitWithError(err)); } // TODO: NODE-2471 @@ -457,15 +462,14 @@ export class Topology extends TypedEventEmitter { if (!skipPingOnConnect && server && this.s.credentials) { server.command(ns('admin.$cmd'), { ping: 1 }, {}, err => { if (err) { - typeof callback === 'function' ? callback(err) : this.emit(Topology.ERROR, err); - return; + return exitWithError(err); } stateTransition(this, STATE_CONNECTED); this.emit(Topology.OPEN, this); this.emit(Topology.CONNECT, this); - if (typeof callback === 'function') callback(undefined, this); + callback?.(undefined, this); }); return; @@ -475,12 +479,15 @@ export class Topology extends TypedEventEmitter { this.emit(Topology.OPEN, this); this.emit(Topology.CONNECT, this); - if (typeof callback === 'function') callback(undefined, this); + callback?.(undefined, this); }); } /** Close this topology */ - close(options?: CloseOptions, callback?: Callback): void { + close(callback: Callback): void; + close(options: CloseOptions): void; + close(options: CloseOptions, callback: Callback): void; + close(options?: CloseOptions | Callback, callback?: Callback): void { if (typeof options === 'function') { callback = options; options = {}; @@ -489,52 +496,38 @@ export class Topology extends TypedEventEmitter { if (typeof options === 'boolean') { options = { force: options }; } - options = options ?? {}; - if (this.s.state === STATE_CLOSED || this.s.state === STATE_CLOSING) { - if (typeof callback === 'function') { - callback(); - } - return; + if (this.s.state === STATE_CLOSED || this.s.state === STATE_CLOSING) { + return callback?.(); } - stateTransition(this, STATE_CLOSING); + const destroyedServers = Array.from(this.s.servers.values(), server => { + return promisify(destroyServer)(server, this, options as CloseOptions); + }); - drainWaitQueue(this[kWaitQueue], new MongoTopologyClosedError()); - drainTimerQueue(this.s.connectionTimers); + Promise.all(destroyedServers) + .then(() => { + this.s.servers.clear(); - if (this.s.srvPoller) { - this.s.srvPoller.stop(); - this.s.srvPoller.removeListener(SrvPoller.SRV_RECORD_DISCOVERY, this.s.detectSrvRecords); - } + stateTransition(this, STATE_CLOSING); - this.removeListener(Topology.TOPOLOGY_DESCRIPTION_CHANGED, this.s.detectShardedTopology); - - eachAsync( - Array.from(this.s.sessions.values()), - (session, cb) => session.endSession(cb), - () => { - this.s.sessionPool.endAllPooledSessions(() => { - eachAsync( - Array.from(this.s.servers.values()), - (server, cb) => destroyServer(server, this, options, cb), - err => { - this.s.servers.clear(); - - // emit an event for close - this.emit(Topology.TOPOLOGY_CLOSED, new TopologyClosedEvent(this.s.id)); - - stateTransition(this, STATE_CLOSED); - - if (typeof callback === 'function') { - callback(err); - } - } - ); - }); - } - ); + drainWaitQueue(this[kWaitQueue], new MongoTopologyClosedError()); + drainTimerQueue(this.s.connectionTimers); + + if (this.s.srvPoller) { + this.s.srvPoller.stop(); + this.s.srvPoller.removeListener(SrvPoller.SRV_RECORD_DISCOVERY, this.s.detectSrvRecords); + } + + this.removeListener(Topology.TOPOLOGY_DESCRIPTION_CHANGED, this.s.detectShardedTopology); + + stateTransition(this, STATE_CLOSED); + + // emit an event for close + this.emit(Topology.TOPOLOGY_CLOSED, new TopologyClosedEvent(this.s.id)); + }) + .finally(() => callback?.()); } /** @@ -628,44 +621,6 @@ export class Topology extends TypedEventEmitter { return this.loadBalanced || this.description.logicalSessionTimeoutMinutes != null; } - /** Start a logical session */ - startSession(options: ClientSessionOptions, clientOptions?: MongoOptions): ClientSession { - const session = new ClientSession(this.client, this.s.sessionPool, options, clientOptions); - session.once('ended', () => { - this.s.sessions.delete(session); - }); - - this.s.sessions.add(session); - return session; - } - - /** Send endSessions command(s) with the given session ids */ - endSessions(sessions: ServerSessionId[], callback?: Callback): void { - if (!Array.isArray(sessions)) { - sessions = [sessions]; - } - - this.selectServer( - readPreferenceServerSelector(ReadPreference.primaryPreferred), - {}, - (err, server) => { - if (err || !server) { - if (typeof callback === 'function') callback(err); - return; - } - - server.command( - ns('admin.$cmd'), - { endSessions: sessions }, - { noResponse: true }, - (err, result) => { - if (typeof callback === 'function') callback(err, result); - } - ); - } - ); - } - /** * Update the internal TopologyDescription with a ServerDescription * @@ -790,7 +745,7 @@ export class Topology extends TypedEventEmitter { return this.description.commonWireVersion; } - get logicalSessionTimeoutMinutes(): number | undefined { + get logicalSessionTimeoutMinutes(): number | null { return this.description.logicalSessionTimeoutMinutes; } @@ -880,6 +835,25 @@ function updateServers(topology: Topology, incomingServerDescription?: ServerDes const server = topology.s.servers.get(incomingServerDescription.address); if (server) { server.s.description = incomingServerDescription; + if ( + incomingServerDescription.error instanceof MongoError && + incomingServerDescription.error.hasErrorLabel(MongoErrorLabel.ResetPool) + ) { + const interruptInUseConnections = incomingServerDescription.error.hasErrorLabel( + MongoErrorLabel.InterruptInUseConnections + ); + + server.s.pool.clear({ interruptInUseConnections }); + } else if (incomingServerDescription.error == null) { + const newTopologyType = topology.s.description.type; + const shouldMarkPoolReady = + incomingServerDescription.isDataBearing || + (incomingServerDescription.type !== ServerType.Unknown && + newTopologyType === TopologyType.Single); + if (shouldMarkPoolReady) { + server.s.pool.ready(); + } + } } } @@ -912,7 +886,7 @@ function updateServers(topology: Topology, incomingServerDescription?: ServerDes } } -function drainWaitQueue(queue: Denque, err?: MongoDriverError) { +function drainWaitQueue(queue: List, err?: MongoDriverError) { while (queue.length) { const waitQueueMember = queue.shift(); if (!waitQueueMember) { @@ -970,9 +944,7 @@ function processWaitQueue(topology: Topology) { } else if (selectedDescriptions.length === 1) { selectedServer = topology.s.servers.get(selectedDescriptions[0].address); } else { - // don't shuffle the array if there are only two elements - const descriptions = - selectedDescriptions.length === 2 ? selectedDescriptions : shuffle(selectedDescriptions, 2); + const descriptions = shuffle(selectedDescriptions, 2); const server1 = topology.s.servers.get(descriptions[0].address); const server2 = topology.s.servers.get(descriptions[1].address); diff --git a/food-ordering-app/server/node_modules/mongodb/src/sdam/topology_description.ts b/food-ordering-app/server/node_modules/mongodb/src/sdam/topology_description.ts index 34db44f0e..d35a9ad6e 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/sdam/topology_description.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/sdam/topology_description.ts @@ -1,7 +1,7 @@ -import type { Document, ObjectId } from '../bson'; +import type { ObjectId } from '../bson'; import * as WIRE_CONSTANTS from '../cmap/wire_protocol/constants'; -import { MongoError, MongoRuntimeError } from '../error'; -import { shuffle } from '../utils'; +import { MongoRuntimeError, MongoServerError } from '../error'; +import { compareObjectId, shuffle } from '../utils'; import { ServerType, TopologyType } from './common'; import { ServerDescription } from './server_description'; import type { SrvPollingEvent } from './srv_polling'; @@ -32,29 +32,29 @@ export interface TopologyDescriptionOptions { */ export class TopologyDescription { type: TopologyType; - setName?: string; - maxSetVersion?: number; - maxElectionId?: ObjectId; + setName: string | null; + maxSetVersion: number | null; + maxElectionId: ObjectId | null; servers: Map; stale: boolean; compatible: boolean; compatibilityError?: string; - logicalSessionTimeoutMinutes?: number; + logicalSessionTimeoutMinutes: number | null; heartbeatFrequencyMS: number; localThresholdMS: number; - commonWireVersion?: number; + commonWireVersion: number; /** * Create a TopologyDescription */ constructor( topologyType: TopologyType, - serverDescriptions?: Map, - setName?: string, - maxSetVersion?: number, - maxElectionId?: ObjectId, - commonWireVersion?: number, - options?: TopologyDescriptionOptions + serverDescriptions: Map | null = null, + setName: string | null = null, + maxSetVersion: number | null = null, + maxElectionId: ObjectId | null = null, + commonWireVersion: number | null = null, + options: TopologyDescriptionOptions | null = null ) { options = options ?? {}; @@ -64,22 +64,10 @@ export class TopologyDescription { this.compatible = true; this.heartbeatFrequencyMS = options.heartbeatFrequencyMS ?? 0; this.localThresholdMS = options.localThresholdMS ?? 15; - - if (setName) { - this.setName = setName; - } - - if (maxSetVersion) { - this.maxSetVersion = maxSetVersion; - } - - if (maxElectionId) { - this.maxElectionId = maxElectionId; - } - - if (commonWireVersion) { - this.commonWireVersion = commonWireVersion; - } + this.setName = setName ?? null; + this.maxElectionId = maxElectionId ?? null; + this.maxSetVersion = maxSetVersion ?? null; + this.commonWireVersion = commonWireVersion ?? 0; // determine server compatibility for (const serverDescription of this.servers.values()) { @@ -108,12 +96,12 @@ export class TopologyDescription { // value among ServerDescriptions of all data-bearing server types. If any have a null // logicalSessionTimeoutMinutes, then TopologyDescription.logicalSessionTimeoutMinutes MUST be // set to null. - this.logicalSessionTimeoutMinutes = undefined; + this.logicalSessionTimeoutMinutes = null; for (const [, server] of this.servers) { if (server.isReadable) { if (server.logicalSessionTimeoutMinutes == null) { // If any of the servers have a null logicalSessionsTimeout, then the whole topology does - this.logicalSessionTimeoutMinutes = undefined; + this.logicalSessionTimeoutMinutes = null; break; } @@ -200,11 +188,6 @@ export class TopologyDescription { // potentially mutated values let { type: topologyType, setName, maxSetVersion, maxElectionId, commonWireVersion } = this; - if (serverDescription.setName && setName && serverDescription.setName !== setName) { - // TODO(NODE-4159): servers with an incorrect setName should be removed not marked Unknown - serverDescription = new ServerDescription(address, undefined); - } - const serverType = serverDescription.type; const serverDescriptions = new Map(this.servers); @@ -217,6 +200,19 @@ export class TopologyDescription { } } + if ( + typeof serverDescription.setName === 'string' && + typeof setName === 'string' && + serverDescription.setName !== setName + ) { + if (topologyType === TopologyType.Single) { + // "Single" Topology with setName mismatch is direct connection usage, mark unknown do not remove + serverDescription = new ServerDescription(address); + } else { + serverDescriptions.delete(address); + } + } + // update the actual server description serverDescriptions.set(address, serverDescription); @@ -311,7 +307,7 @@ export class TopologyDescription { ); } - get error(): MongoError | undefined { + get error(): MongoServerError | null { const descriptionsWithError = Array.from(this.servers.values()).filter( (sd: ServerDescription) => sd.error ); @@ -319,7 +315,8 @@ export class TopologyDescription { if (descriptionsWithError.length > 0) { return descriptionsWithError[0].error; } - return; + + return null; } /** @@ -363,65 +360,69 @@ function topologyTypeForServerType(serverType: ServerType): TopologyType { } } -// TODO: improve these docs when ObjectId is properly typed -function compareObjectId(oid1: Document, oid2: Document): number { - if (oid1 == null) { - return -1; - } - - if (oid2 == null) { - return 1; - } - - if (oid1.id instanceof Buffer && oid2.id instanceof Buffer) { - const oid1Buffer = oid1.id; - const oid2Buffer = oid2.id; - return oid1Buffer.compare(oid2Buffer); - } - - const oid1String = oid1.toString(); - const oid2String = oid2.toString(); - return oid1String.localeCompare(oid2String); -} - function updateRsFromPrimary( serverDescriptions: Map, serverDescription: ServerDescription, - setName?: string, - maxSetVersion?: number, - maxElectionId?: ObjectId -): [TopologyType, string?, number?, ObjectId?] { + setName: string | null = null, + maxSetVersion: number | null = null, + maxElectionId: ObjectId | null = null +): [TopologyType, string | null, number | null, ObjectId | null] { setName = setName || serverDescription.setName; if (setName !== serverDescription.setName) { serverDescriptions.delete(serverDescription.address); return [checkHasPrimary(serverDescriptions), setName, maxSetVersion, maxElectionId]; } - const electionId = serverDescription.electionId ? serverDescription.electionId : null; - if (serverDescription.setVersion && electionId) { - if (maxSetVersion && maxElectionId) { - if ( - maxSetVersion > serverDescription.setVersion || - compareObjectId(maxElectionId, electionId) > 0 - ) { - // this primary is stale, we must remove it - serverDescriptions.set( - serverDescription.address, - new ServerDescription(serverDescription.address) - ); + if (serverDescription.maxWireVersion >= 17) { + const electionIdComparison = compareObjectId(maxElectionId, serverDescription.electionId); + const maxElectionIdIsEqual = electionIdComparison === 0; + const maxElectionIdIsLess = electionIdComparison === -1; + const maxSetVersionIsLessOrEqual = + (maxSetVersion ?? -1) <= (serverDescription.setVersion ?? -1); + + if (maxElectionIdIsLess || (maxElectionIdIsEqual && maxSetVersionIsLessOrEqual)) { + // The reported electionId was greater + // or the electionId was equal and reported setVersion was greater + // Always update both values, they are a tuple + maxElectionId = serverDescription.electionId; + maxSetVersion = serverDescription.setVersion; + } else { + // Stale primary + // replace serverDescription with a default ServerDescription of type "Unknown" + serverDescriptions.set( + serverDescription.address, + new ServerDescription(serverDescription.address) + ); - return [checkHasPrimary(serverDescriptions), setName, maxSetVersion, maxElectionId]; - } + return [checkHasPrimary(serverDescriptions), setName, maxSetVersion, maxElectionId]; } + } else { + const electionId = serverDescription.electionId ? serverDescription.electionId : null; + if (serverDescription.setVersion && electionId) { + if (maxSetVersion && maxElectionId) { + if ( + maxSetVersion > serverDescription.setVersion || + compareObjectId(maxElectionId, electionId) > 0 + ) { + // this primary is stale, we must remove it + serverDescriptions.set( + serverDescription.address, + new ServerDescription(serverDescription.address) + ); + + return [checkHasPrimary(serverDescriptions), setName, maxSetVersion, maxElectionId]; + } + } - maxElectionId = serverDescription.electionId; - } + maxElectionId = serverDescription.electionId; + } - if ( - serverDescription.setVersion != null && - (maxSetVersion == null || serverDescription.setVersion > maxSetVersion) - ) { - maxSetVersion = serverDescription.setVersion; + if ( + serverDescription.setVersion != null && + (maxSetVersion == null || serverDescription.setVersion > maxSetVersion) + ) { + maxSetVersion = serverDescription.setVersion; + } } // We've heard from the primary. Is it the same primary as before? @@ -457,7 +458,7 @@ function updateRsFromPrimary( function updateRsWithPrimaryFromMember( serverDescriptions: Map, serverDescription: ServerDescription, - setName?: string + setName: string | null = null ): TopologyType { if (setName == null) { // TODO(NODE-3483): should be an appropriate runtime error @@ -477,10 +478,10 @@ function updateRsWithPrimaryFromMember( function updateRsNoPrimaryFromMember( serverDescriptions: Map, serverDescription: ServerDescription, - setName?: string -): [TopologyType, string?] { + setName: string | null = null +): [TopologyType, string | null] { const topologyType = TopologyType.ReplicaSetNoPrimary; - setName = setName || serverDescription.setName; + setName = setName ?? serverDescription.setName; if (setName !== serverDescription.setName) { serverDescriptions.delete(serverDescription.address); return [topologyType, setName]; diff --git a/food-ordering-app/server/node_modules/mongodb/src/sessions.ts b/food-ordering-app/server/node_modules/mongodb/src/sessions.ts index 36f261323..803a174de 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/sessions.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/sessions.ts @@ -1,3 +1,5 @@ +import { promisify } from 'util'; + import { Binary, Document, Long, Timestamp } from './bson'; import type { CommandOptions, Connection } from './cmap/connection'; import { ConnectionPoolMetrics } from './cmap/metrics'; @@ -27,15 +29,15 @@ import { PromiseProvider } from './promise_provider'; import { ReadConcernLevel } from './read_concern'; import { ReadPreference } from './read_preference'; import { _advanceClusterTime, ClusterTime, TopologyType } from './sdam/common'; -import type { Topology } from './sdam/topology'; import { isTransactionCommand, Transaction, TransactionOptions, TxnState } from './transactions'; import { calculateDurationInMs, Callback, commandSupportsReadConcern, isPromiseLike, + List, maxWireVersion, - maybePromise, + maybeCallback, now, uuidV4 } from './utils'; @@ -167,8 +169,10 @@ export class ClientSession extends TypedEventEmitter { this[kServerSession] = this.explicit ? this.sessionPool.acquire() : null; this[kTxnNumberIncrement] = 0; + const defaultCausalConsistencyValue = this.explicit && options.snapshot !== true; this.supports = { - causalConsistency: options.snapshot !== true && options.causalConsistency !== false + // if we can enable causal consistency, do so by default + causalConsistency: options.causalConsistency ?? defaultCausalConsistencyValue }; this.clusterTime = options.initialClusterTime; @@ -246,8 +250,10 @@ export class ClientSession extends TypedEventEmitter { * @param callback - Optional callback for completion of this operation */ endSession(): Promise; - endSession(callback: Callback): void; endSession(options: EndSessionOptions): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ + endSession(callback: Callback): void; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ endSession(options: EndSessionOptions, callback: Callback): void; endSession( options?: EndSessionOptions | Callback, @@ -256,46 +262,32 @@ export class ClientSession extends TypedEventEmitter { if (typeof options === 'function') (callback = options), (options = {}); const finalOptions = { force: true, ...options }; - return maybePromise(callback, done => { - if (this.hasEnded) { - maybeClearPinnedConnection(this, finalOptions); - return done(); - } - - const completeEndSession = () => { - maybeClearPinnedConnection(this, finalOptions); - - const serverSession = this[kServerSession]; - if (serverSession != null) { - // release the server session back to the pool - this.sessionPool.release(serverSession); - // Make sure a new serverSession never makes it on to the ClientSession - Object.defineProperty(this, kServerSession, { - value: ServerSession.clone(serverSession) - }); + return maybeCallback(async () => { + try { + if (this.inTransaction()) { + await this.abortTransaction(); } - - // mark the session as ended, and emit a signal - this.hasEnded = true; - this.emit('ended', this); - + if (!this.hasEnded) { + const serverSession = this[kServerSession]; + if (serverSession != null) { + // release the server session back to the pool + this.sessionPool.release(serverSession); + // Make sure a new serverSession never makes it onto this ClientSession + Object.defineProperty(this, kServerSession, { + value: ServerSession.clone(serverSession), + writable: false + }); + } + // mark the session as ended, and emit a signal + this.hasEnded = true; + this.emit('ended', this); + } + } catch { // spec indicates that we should ignore all errors for `endSessions` - done(); - }; - - if (this.inTransaction()) { - // If we've reached endSession and the transaction is still active - // by default we abort it - this.abortTransaction(err => { - if (err) return done(err); - completeEndSession(); - }); - - return; + } finally { + maybeClearPinnedConnection(this, finalOptions); } - - completeEndSession(); - }); + }, callback); } /** @@ -383,7 +375,7 @@ export class ClientSession extends TypedEventEmitter { */ startTransaction(options?: TransactionOptions): void { if (this[kSnapshotEnabled]) { - throw new MongoCompatibilityError('Transactions are not allowed with snapshot sessions'); + throw new MongoCompatibilityError('Transactions are not supported in snapshot sessions'); } if (this.inTransaction()) { @@ -433,9 +425,10 @@ export class ClientSession extends TypedEventEmitter { * @param callback - An optional callback, a Promise will be returned if none is provided */ commitTransaction(): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ commitTransaction(callback: Callback): void; commitTransaction(callback?: Callback): Promise | void { - return maybePromise(callback, cb => endTransaction(this, 'commitTransaction', cb)); + return maybeCallback(async () => endTransactionAsync(this, 'commitTransaction'), callback); } /** @@ -444,9 +437,10 @@ export class ClientSession extends TypedEventEmitter { * @param callback - An optional callback, a Promise will be returned if none is provided */ abortTransaction(): Promise; + /** @deprecated Callbacks are deprecated and will be removed in the next major version. See [mongodb-legacy](https://github.com/mongodb-js/nodejs-mongodb-legacy) for migration assistance */ abortTransaction(callback: Callback): void; abortTransaction(callback?: Callback): Promise | void { - return maybePromise(callback, cb => endTransaction(this, 'abortTransaction', cb)); + return maybeCallback(async () => endTransactionAsync(this, 'abortTransaction'), callback); } /** @@ -545,7 +539,7 @@ export function maybeClearPinnedConnection( ); if (options?.forceClear) { - loadBalancer.s.pool.clear(conn.serviceId); + loadBalancer.s.pool.clear({ serviceId: conn.serviceId }); } } @@ -605,18 +599,18 @@ function attemptTransaction( fn: WithTransactionCallback, options?: TransactionOptions ): Promise { - const Promise = PromiseProvider.get(); session.startTransaction(options); let promise; try { promise = fn(session); } catch (err) { - promise = Promise.reject(err); + const PromiseConstructor = PromiseProvider.get() ?? Promise; + promise = PromiseConstructor.reject(err); } if (!isPromiseLike(promise)) { - session.abortTransaction(); + session.abortTransaction().catch(() => null); throw new MongoInvalidArgumentError( 'Function provided to `withTransaction` must return a Promise' ); @@ -656,6 +650,14 @@ function attemptTransaction( ); } +const endTransactionAsync = promisify( + endTransaction as ( + session: ClientSession, + commandName: 'abortTransaction' | 'commitTransaction', + callback: (error: Error, result: Document) => void + ) => void +); + function endTransaction( session: ClientSession, commandName: 'abortTransaction' | 'commitTransaction', @@ -878,37 +880,16 @@ export class ServerSession { * @internal */ export class ServerSessionPool { - topology: Topology; - sessions: ServerSession[]; - - constructor(topology: Topology) { - if (topology == null) { - throw new MongoRuntimeError('ServerSessionPool requires a topology'); - } - - this.topology = topology; - this.sessions = []; - } - - /** Ends all sessions in the session pool */ - endAllPooledSessions(callback?: Callback): void { - if (this.sessions.length) { - this.topology.endSessions( - this.sessions.map((session: ServerSession) => session.id), - () => { - this.sessions = []; - if (typeof callback === 'function') { - callback(); - } - } - ); + client: MongoClient; + sessions: List; - return; + constructor(client: MongoClient) { + if (client == null) { + throw new MongoRuntimeError('ServerSessionPool requires a MongoClient'); } - if (typeof callback === 'function') { - callback(); - } + this.client = client; + this.sessions = new List(); } /** @@ -918,16 +899,29 @@ export class ServerSessionPool { * pool and returned. If no non-stale session is found, a new ServerSession is created. */ acquire(): ServerSession { - const sessionTimeoutMinutes = this.topology.logicalSessionTimeoutMinutes || 10; + const sessionTimeoutMinutes = this.client.topology?.logicalSessionTimeoutMinutes ?? 10; + + let session: ServerSession | null = null; - while (this.sessions.length) { - const session = this.sessions.shift(); - if (session && (this.topology.loadBalanced || !session.hasTimedOut(sessionTimeoutMinutes))) { - return session; + // Try to obtain from session pool + while (this.sessions.length > 0) { + const potentialSession = this.sessions.shift(); + if ( + potentialSession != null && + (!!this.client.topology?.loadBalanced || + !potentialSession.hasTimedOut(sessionTimeoutMinutes)) + ) { + session = potentialSession; + break; } } - return new ServerSession(); + // If nothing valid came from the pool make a new one + if (session == null) { + session = new ServerSession(); + } + + return session; } /** @@ -938,9 +932,9 @@ export class ServerSessionPool { * @param session - The session to release to the pool */ release(session: ServerSession): void { - const sessionTimeoutMinutes = this.topology.logicalSessionTimeoutMinutes; + const sessionTimeoutMinutes = this.client.topology?.logicalSessionTimeoutMinutes ?? 10; - if (this.topology.loadBalanced && !sessionTimeoutMinutes) { + if (this.client.topology?.loadBalanced && !sessionTimeoutMinutes) { this.sessions.unshift(session); } @@ -948,14 +942,7 @@ export class ServerSessionPool { return; } - while (this.sessions.length) { - const pooledSession = this.sessions[this.sessions.length - 1]; - if (pooledSession.hasTimedOut(sessionTimeoutMinutes)) { - this.sessions.pop(); - } else { - break; - } - } + this.sessions.prune(session => session.hasTimedOut(sessionTimeoutMinutes)); if (!session.hasTimedOut(sessionTimeoutMinutes)) { if (session.isDirty) { @@ -1010,6 +997,7 @@ export function applySession( if (isRetryableWrite || inTxnOrTxnCommand) { serverSession.txnNumber += session[kTxnNumberIncrement]; session[kTxnNumberIncrement] = 0; + // TODO(NODE-2674): Preserve int64 sent from MongoDB command.txnNumber = Long.fromNumber(serverSession.txnNumber); } diff --git a/food-ordering-app/server/node_modules/mongodb/src/transactions.ts b/food-ordering-app/server/node_modules/mongodb/src/transactions.ts index 34d84403c..20dcb9cf8 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/transactions.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/transactions.ts @@ -2,6 +2,7 @@ import type { Document } from './bson'; import { MongoRuntimeError, MongoTransactionError } from './error'; import type { CommandOperationOptions } from './operations/command'; import { ReadConcern, ReadConcernLike } from './read_concern'; +import type { ReadPreferenceLike } from './read_preference'; import { ReadPreference } from './read_preference'; import type { Server } from './sdam/server'; import { WriteConcern } from './write_concern'; @@ -17,7 +18,7 @@ export const TxnState = Object.freeze({ } as const); /** @internal */ -export type TxnState = typeof TxnState[keyof typeof TxnState]; +export type TxnState = (typeof TxnState)[keyof typeof TxnState]; const stateMachine: { [state in TxnState]: TxnState[] } = { [TxnState.NO_TRANSACTION]: [TxnState.NO_TRANSACTION, TxnState.STARTING_TRANSACTION], @@ -67,7 +68,7 @@ export interface TransactionOptions extends CommandOperationOptions { /** A default writeConcern for commands in this transaction */ writeConcern?: WriteConcern; /** A default read preference for commands in this transaction */ - readPreference?: ReadPreference; + readPreference?: ReadPreferenceLike; /** Specifies the maximum amount of time to allow a commit action on a transaction to run in milliseconds */ maxCommitTimeMS?: number; } diff --git a/food-ordering-app/server/node_modules/mongodb/src/utils.ts b/food-ordering-app/server/node_modules/mongodb/src/utils.ts index a21ef49c9..d32812e92 100644 --- a/food-ordering-app/server/node_modules/mongodb/src/utils.ts +++ b/food-ordering-app/server/node_modules/mongodb/src/utils.ts @@ -1,7 +1,5 @@ import * as crypto from 'crypto'; import type { SrvRecord } from 'dns'; -import * as os from 'os'; -import { setTimeout } from 'timers'; import { URL } from 'url'; import { Document, ObjectId, resolveBSONOptions } from './bson'; @@ -23,7 +21,6 @@ import { import type { Explain } from './explain'; import type { MongoClient } from './mongo_client'; import type { CommandOperationOptions, OperationParent } from './operations/command'; -import type { IndexDirection, IndexSpecification } from './operations/indexes'; import type { Hint, OperationOptions } from './operations/operation'; import { PromiseProvider } from './promise_provider'; import { ReadConcern } from './read_concern'; @@ -104,71 +101,15 @@ export function normalizeHintField(hint?: Hint): Hint | undefined { return finalHint; } -interface IndexOptions { - name: string; - keys?: string[]; - fieldHash: Document; -} - -/** - * Create an index specifier based on - * @internal - */ -export function parseIndexOptions(indexSpec: IndexSpecification): IndexOptions { - const fieldHash: { [key: string]: IndexDirection } = {}; - const indexes = []; - let keys; - - // Get all the fields accordingly - if ('string' === typeof indexSpec) { - // 'type' - indexes.push(indexSpec + '_' + 1); - fieldHash[indexSpec] = 1; - } else if (Array.isArray(indexSpec)) { - indexSpec.forEach((f: any) => { - if ('string' === typeof f) { - // [{location:'2d'}, 'type'] - indexes.push(f + '_' + 1); - fieldHash[f] = 1; - } else if (Array.isArray(f)) { - // [['location', '2d'],['type', 1]] - indexes.push(f[0] + '_' + (f[1] || 1)); - fieldHash[f[0]] = f[1] || 1; - } else if (isObject(f)) { - // [{location:'2d'}, {type:1}] - keys = Object.keys(f); - keys.forEach(k => { - indexes.push(k + '_' + (f as AnyOptions)[k]); - fieldHash[k] = (f as AnyOptions)[k]; - }); - } else { - // undefined (ignore) - } - }); - } else if (isObject(indexSpec)) { - // {location:'2d', type:1} - keys = Object.keys(indexSpec); - Object.entries(indexSpec).forEach(([key, value]) => { - indexes.push(key + '_' + value); - fieldHash[key] = value; - }); - } - - return { - name: indexes.join('_'), - keys: keys, - fieldHash: fieldHash - }; -} - +const TO_STRING = (object: unknown) => Object.prototype.toString.call(object); /** * Checks if arg is an Object: * - **NOTE**: the check is based on the `[Symbol.toStringTag]() === 'Object'` * @internal */ -// eslint-disable-next-line @typescript-eslint/ban-types + export function isObject(arg: unknown): arg is object { - return '[object Object]' === Object.prototype.toString.call(arg); + return '[object Object]' === TO_STRING(arg); } /** @internal */ @@ -257,14 +198,12 @@ export function applyWriteConcern( /** * Checks if a given value is a Promise * - * @typeParam T - The result type of maybePromise - * @param maybePromise - An object that could be a promise + * @typeParam T - The resolution type of the possible promise + * @param value - An object that could be a promise * @returns true if the provided value is a Promise */ -export function isPromiseLike( - maybePromise?: PromiseLike | void -): maybePromise is Promise { - return !!maybePromise && typeof maybePromise.then === 'function'; +export function isPromiseLike(value?: PromiseLike | void): value is Promise { + return !!value && typeof value.then === 'function'; } /** @@ -380,7 +319,7 @@ export interface DeprecateOptionsConfig { /** index of options object in function arguments array */ optionsIndex: number; /** optional custom message handler to generate warnings */ - msgHandler?(name: string, option: string): string; + msgHandler?(this: void, name: string, option: string): string; } /** @@ -451,7 +390,7 @@ export function ns(ns: string): MongoDBNamespace { /** @public */ export class MongoDBNamespace { db: string; - collection?: string; + collection: string | undefined; /** * Create a namespace object * @@ -460,7 +399,7 @@ export class MongoDBNamespace { */ constructor(db: string, collection?: string) { this.db = db; - this.collection = collection; + this.collection = collection === '' ? undefined : collection; } toString(): string { @@ -472,13 +411,14 @@ export class MongoDBNamespace { } static fromString(namespace?: string): MongoDBNamespace { - if (!namespace) { + if (typeof namespace !== 'string' || namespace === '') { // TODO(NODE-3483): Replace with MongoNamespaceError throw new MongoRuntimeError(`Cannot parse namespace from "${namespace}"`); } - const [db, ...collection] = namespace.split('.'); - return new MongoDBNamespace(db, collection.join('.')); + const [db, ...collectionParts] = namespace.split('.'); + const collection = collectionParts.join('.'); + return new MongoDBNamespace(db, collection === '' ? undefined : collection); } } @@ -493,47 +433,35 @@ export function* makeCounter(seed = 0): Generator { } /** - * Helper function for either accepting a callback, or returning a promise - * @internal - * - * @param callback - The last function argument in exposed method, controls if a Promise is returned - * @param wrapper - A function that wraps the callback - * @returns Returns void if a callback is supplied, else returns a Promise. + * Helper for handling legacy callback support. */ -export function maybePromise( - callback: Callback | undefined, - wrapper: (fn: Callback) => void +export function maybeCallback(promiseFn: () => Promise, callback: null): Promise; +export function maybeCallback( + promiseFn: () => Promise, + callback?: Callback +): Promise | void; +export function maybeCallback( + promiseFn: () => Promise, + callback?: Callback | null ): Promise | void { - const Promise = PromiseProvider.get(); - let result: Promise | void; - if (typeof callback !== 'function') { - result = new Promise((resolve, reject) => { - callback = (err, res) => { - if (err) return reject(err); - resolve(res); - }; - }); - } + const PromiseConstructor = PromiseProvider.get(); - wrapper((err, res) => { - if (err != null) { - try { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - callback!(err); - } catch (error) { - process.nextTick(() => { - throw error; - }); - } - - return; + const promise = promiseFn(); + if (callback == null) { + if (PromiseConstructor == null) { + return promise; + } else { + return new PromiseConstructor((resolve, reject) => { + promise.then(resolve, reject); + }); } + } - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - callback!(err, res); - }); - - return result; + promise.then( + result => callback(undefined, result), + error => callback(error) + ); + return; } /** @internal */ @@ -562,7 +490,7 @@ export function maxWireVersion(topologyOrServer?: Connection | Topology | Server // Since we do not have a monitor, we assume the load balanced server is always // pointed at the latest mongodb version. There is a risk that for on-prem // deployments that don't upgrade immediately that this could alert to the - // application that a feature is avaiable that is actually not. + // application that a feature is available that is actually not. return MAX_SUPPORTED_WIRE_VERSION; } if (topologyOrServer.hello) { @@ -588,17 +516,6 @@ export function maxWireVersion(topologyOrServer?: Connection | Topology | Server return 0; } -/** - * Checks that collation is supported by server. - * @internal - * - * @param server - to check against - * @param cmd - object where collation may be specified - */ -export function collationNotSupported(server: Server, cmd: Document): boolean { - return cmd && cmd.collation && maxWireVersion(server) < 5; -} - /** * Applies the function `eachFn` to each item in `arr`, in parallel. * @internal @@ -683,7 +600,7 @@ export function arrayStrictEqual(arr: unknown[], arr2: unknown[]): boolean { } /** @internal */ -export function errorStrictEqual(lhs?: AnyError, rhs?: AnyError): boolean { +export function errorStrictEqual(lhs?: AnyError | null, rhs?: AnyError | null): boolean { if (lhs === rhs) { return true; } @@ -739,81 +656,6 @@ export function makeStateMachine(stateTable: StateTable): StateTransitionFunctio }; } -/** @public */ -export interface ClientMetadata { - driver: { - name: string; - version: string; - }; - os: { - type: string; - name: NodeJS.Platform; - architecture: string; - version: string; - }; - platform: string; - version?: string; - application?: { - name: string; - }; -} - -/** @public */ -export interface ClientMetadataOptions { - driverInfo?: { - name?: string; - version?: string; - platform?: string; - }; - appName?: string; -} - -// eslint-disable-next-line @typescript-eslint/no-var-requires -const NODE_DRIVER_VERSION = require('../package.json').version; - -export function makeClientMetadata(options?: ClientMetadataOptions): ClientMetadata { - options = options ?? {}; - - const metadata: ClientMetadata = { - driver: { - name: 'nodejs', - version: NODE_DRIVER_VERSION - }, - os: { - type: os.type(), - name: process.platform, - architecture: process.arch, - version: os.release() - }, - platform: `Node.js ${process.version}, ${os.endianness()} (unified)` - }; - - // support optionally provided wrapping driver info - if (options.driverInfo) { - if (options.driverInfo.name) { - metadata.driver.name = `${metadata.driver.name}|${options.driverInfo.name}`; - } - - if (options.driverInfo.version) { - metadata.version = `${metadata.driver.version}|${options.driverInfo.version}`; - } - - if (options.driverInfo.platform) { - metadata.platform = `${metadata.platform}|${options.driverInfo.platform}`; - } - } - - if (options.appName) { - // MongoDB requires the appName not exceed a byte length of 128 - const buffer = Buffer.from(options.appName); - metadata.application = { - name: buffer.byteLength > 128 ? buffer.slice(0, 128).toString('utf8') : options.appName - }; - } - - return metadata; -} - /** @internal */ export function now(): number { const hrtime = process.hrtime(); @@ -830,124 +672,6 @@ export function calculateDurationInMs(started: number): number { return elapsed < 0 ? 0 : elapsed; } -export interface InterruptibleAsyncIntervalOptions { - /** The interval to execute a method on */ - interval: number; - /** A minimum interval that must elapse before the method is called */ - minInterval: number; - /** Whether the method should be called immediately when the interval is started */ - immediate: boolean; - - /** - * Only used for testing unreliable timer environments - * @internal - */ - clock: () => number; -} - -/** @internal */ -export interface InterruptibleAsyncInterval { - wake(): void; - stop(): void; -} - -/** - * Creates an interval timer which is able to be woken up sooner than - * the interval. The timer will also debounce multiple calls to wake - * ensuring that the function is only ever called once within a minimum - * interval window. - * @internal - * - * @param fn - An async function to run on an interval, must accept a `callback` as its only parameter - */ -export function makeInterruptibleAsyncInterval( - fn: (callback: Callback) => void, - options?: Partial -): InterruptibleAsyncInterval { - let timerId: NodeJS.Timeout | undefined; - let lastCallTime: number; - let cannotBeExpedited = false; - let stopped = false; - - options = options ?? {}; - const interval = options.interval || 1000; - const minInterval = options.minInterval || 500; - const immediate = typeof options.immediate === 'boolean' ? options.immediate : false; - const clock = typeof options.clock === 'function' ? options.clock : now; - - function wake() { - const currentTime = clock(); - const nextScheduledCallTime = lastCallTime + interval; - const timeUntilNextCall = nextScheduledCallTime - currentTime; - - // For the streaming protocol: there is nothing obviously stopping this - // interval from being woken up again while we are waiting "infinitely" - // for `fn` to be called again`. Since the function effectively - // never completes, the `timeUntilNextCall` will continue to grow - // negatively unbounded, so it will never trigger a reschedule here. - - // This is possible in virtualized environments like AWS Lambda where our - // clock is unreliable. In these cases the timer is "running" but never - // actually completes, so we want to execute immediately and then attempt - // to reschedule. - if (timeUntilNextCall < 0) { - executeAndReschedule(); - return; - } - - // debounce multiple calls to wake within the `minInterval` - if (cannotBeExpedited) { - return; - } - - // reschedule a call as soon as possible, ensuring the call never happens - // faster than the `minInterval` - if (timeUntilNextCall > minInterval) { - reschedule(minInterval); - cannotBeExpedited = true; - } - } - - function stop() { - stopped = true; - if (timerId) { - clearTimeout(timerId); - timerId = undefined; - } - - lastCallTime = 0; - cannotBeExpedited = false; - } - - function reschedule(ms?: number) { - if (stopped) return; - if (timerId) { - clearTimeout(timerId); - } - - timerId = setTimeout(executeAndReschedule, ms || interval); - } - - function executeAndReschedule() { - cannotBeExpedited = false; - lastCallTime = clock(); - - fn(err => { - if (err) throw err; - reschedule(interval); - }); - } - - if (immediate) { - executeAndReschedule(); - } else { - lastCallTime = clock(); - reschedule(undefined); - } - - return { wake, stop }; -} - /** @internal */ export function hasAtomicOperators(doc: Document | Document[]): boolean { if (Array.isArray(doc)) { @@ -1024,6 +748,9 @@ export function setDifference(setA: Iterable, setB: Iterable): Set { return difference; } +const HAS_OWN = (object: unknown, prop: string) => + Object.prototype.hasOwnProperty.call(object, prop); + export function isRecord( value: unknown, requiredKeys: T @@ -1033,9 +760,6 @@ export function isRecord( value: unknown, requiredKeys: string[] | undefined = undefined ): value is Record { - const toString = Object.prototype.toString; - const hasOwnProperty = Object.prototype.hasOwnProperty; - const isObject = (v: unknown) => toString.call(v) === '[object Object]'; if (!isObject(value)) { return false; } @@ -1047,7 +771,7 @@ export function isRecord( } // Check to see if some method exists from the Object exists - if (!hasOwnProperty.call(ctor.prototype, 'isPrototypeOf')) { + if (!HAS_OWN(ctor.prototype, 'isPrototypeOf')) { return false; } } @@ -1097,98 +821,250 @@ export function deepCopy(value: T): T { return value; } -/** @internal */ -const kBuffers = Symbol('buffers'); -/** @internal */ -const kLength = Symbol('length'); +type ListNode = { + value: T; + next: ListNode | HeadNode; + prev: ListNode | HeadNode; +}; + +type HeadNode = { + value: null; + next: ListNode; + prev: ListNode; +}; + +/** + * When a list is empty the head is a reference with pointers to itself + * So this type represents that self referential state + */ +type EmptyNode = { + value: null; + next: EmptyNode; + prev: EmptyNode; +}; + +/** + * A sequential list of items in a circularly linked list + * @remarks + * The head node is special, it is always defined and has a value of null. + * It is never "included" in the list, in that, it is not returned by pop/shift or yielded by the iterator. + * The circular linkage and always defined head node are to reduce checks for null next/prev references to zero. + * New nodes are declared as object literals with keys always in the same order: next, prev, value. + * @internal + */ +export class List { + private readonly head: HeadNode | EmptyNode; + private count: number; + + get length() { + return this.count; + } + + get [Symbol.toStringTag]() { + return 'List' as const; + } + + constructor() { + this.count = 0; + + // this is carefully crafted: + // declaring a complete and consistently key ordered + // object is beneficial to the runtime optimizations + this.head = { + next: null, + prev: null, + value: null + } as unknown as EmptyNode; + this.head.next = this.head; + this.head.prev = this.head; + } + + toArray() { + return Array.from(this); + } + + toString() { + return `head <=> ${this.toArray().join(' <=> ')} <=> head`; + } + + *[Symbol.iterator](): Generator { + for (const node of this.nodes()) { + yield node.value; + } + } + + private *nodes(): Generator, void, void> { + let ptr: HeadNode | ListNode | EmptyNode = this.head.next; + while (ptr !== this.head) { + // Save next before yielding so that we make removing within iteration safe + const { next } = ptr as ListNode; + yield ptr as ListNode; + ptr = next; + } + } + + /** Insert at end of list */ + push(value: T) { + this.count += 1; + const newNode: ListNode = { + next: this.head as HeadNode, + prev: this.head.prev as ListNode, + value + }; + this.head.prev.next = newNode; + this.head.prev = newNode; + } + + /** Inserts every item inside an iterable instead of the iterable itself */ + pushMany(iterable: Iterable) { + for (const value of iterable) { + this.push(value); + } + } + + /** Insert at front of list */ + unshift(value: T) { + this.count += 1; + const newNode: ListNode = { + next: this.head.next as ListNode, + prev: this.head as HeadNode, + value + }; + this.head.next.prev = newNode; + this.head.next = newNode; + } + + private remove(node: ListNode | EmptyNode): T | null { + if (node === this.head || this.length === 0) { + return null; + } + + this.count -= 1; + + const prevNode = node.prev; + const nextNode = node.next; + prevNode.next = nextNode; + nextNode.prev = prevNode; + + return node.value; + } + + /** Removes the first node at the front of the list */ + shift(): T | null { + return this.remove(this.head.next); + } + + /** Removes the last node at the end of the list */ + pop(): T | null { + return this.remove(this.head.prev); + } + + /** Iterates through the list and removes nodes where filter returns true */ + prune(filter: (value: T) => boolean) { + for (const node of this.nodes()) { + if (filter(node.value)) { + this.remove(node); + } + } + } + + clear() { + this.count = 0; + this.head.next = this.head as EmptyNode; + this.head.prev = this.head as EmptyNode; + } + + /** Returns the first item in the list, does not remove */ + first(): T | null { + // If the list is empty, value will be the head's null + return this.head.next.value; + } + + /** Returns the last item in the list, does not remove */ + last(): T | null { + // If the list is empty, value will be the head's null + return this.head.prev.value; + } +} /** * A pool of Buffers which allow you to read them as if they were one * @internal */ export class BufferPool { - [kBuffers]: Buffer[]; - [kLength]: number; + private buffers: List; + private totalByteLength: number; constructor() { - this[kBuffers] = []; - this[kLength] = 0; + this.buffers = new List(); + this.totalByteLength = 0; } get length(): number { - return this[kLength]; + return this.totalByteLength; } /** Adds a buffer to the internal buffer pool list */ append(buffer: Buffer): void { - this[kBuffers].push(buffer); - this[kLength] += buffer.length; + this.buffers.push(buffer); + this.totalByteLength += buffer.length; } - /** Returns the requested number of bytes without consuming them */ - peek(size: number): Buffer { - return this.read(size, false); + /** + * If BufferPool contains 4 bytes or more construct an int32 from the leading bytes, + * otherwise return null. Size can be negative, caller should error check. + */ + getInt32(): number | null { + if (this.totalByteLength < 4) { + return null; + } + const firstBuffer = this.buffers.first(); + if (firstBuffer != null && firstBuffer.byteLength >= 4) { + return firstBuffer.readInt32LE(0); + } + + // Unlikely case: an int32 is split across buffers. + // Use read and put the returned buffer back on top + const top4Bytes = this.read(4); + const value = top4Bytes.readInt32LE(0); + + // Put it back. + this.totalByteLength += 4; + this.buffers.unshift(top4Bytes); + + return value; } /** Reads the requested number of bytes, optionally consuming them */ - read(size: number, consume = true): Buffer { + read(size: number): Buffer { if (typeof size !== 'number' || size < 0) { throw new MongoInvalidArgumentError('Argument "size" must be a non-negative number'); } - if (size > this[kLength]) { + // oversized request returns empty buffer + if (size > this.totalByteLength) { return Buffer.alloc(0); } - let result: Buffer; + // We know we have enough, we just don't know how it is spread across chunks + // TODO(NODE-4732): alloc API should change based on raw option + const result = Buffer.allocUnsafe(size); - // read the whole buffer - if (size === this.length) { - result = Buffer.concat(this[kBuffers]); - - if (consume) { - this[kBuffers] = []; - this[kLength] = 0; - } - } - - // size is within first buffer, no need to concat - else if (size <= this[kBuffers][0].length) { - result = this[kBuffers][0].slice(0, size); - if (consume) { - this[kBuffers][0] = this[kBuffers][0].slice(size); - this[kLength] -= size; + for (let bytesRead = 0; bytesRead < size; ) { + const buffer = this.buffers.shift(); + if (buffer == null) { + break; } - } - - // size is beyond first buffer, need to track and copy - else { - result = Buffer.allocUnsafe(size); - - let idx; - let offset = 0; - let bytesToCopy = size; - for (idx = 0; idx < this[kBuffers].length; ++idx) { - let bytesCopied; - if (bytesToCopy > this[kBuffers][idx].length) { - bytesCopied = this[kBuffers][idx].copy(result, offset, 0); - offset += bytesCopied; - } else { - bytesCopied = this[kBuffers][idx].copy(result, offset, 0, bytesToCopy); - if (consume) { - this[kBuffers][idx] = this[kBuffers][idx].slice(bytesCopied); - } - offset += bytesCopied; - break; - } + const bytesRemaining = size - bytesRead; + const bytesReadable = Math.min(bytesRemaining, buffer.byteLength); + const bytes = buffer.subarray(0, bytesReadable); - bytesToCopy -= bytesCopied; - } + result.set(bytes, bytesRead); - // compact the internal buffer array - if (consume) { - this[kBuffers] = this[kBuffers].slice(idx); - this[kLength] -= size; + bytesRead += bytesReadable; + this.totalByteLength -= bytesReadable; + if (bytesReadable < buffer.byteLength) { + this.buffers.unshift(buffer.subarray(bytesReadable)); } } @@ -1198,44 +1074,51 @@ export class BufferPool { /** @public */ export class HostAddress { - host; - port; - // Driver only works with unix socket path to connect - // SDAM operates only on tcp addresses - socketPath; - isIPv6; + host: string | undefined = undefined; + port: number | undefined = undefined; + socketPath: string | undefined = undefined; + isIPv6 = false; constructor(hostString: string) { const escapedHost = hostString.split(' ').join('%20'); // escape spaces, for socket path hosts - const { hostname, port } = new URL(`mongodb://${escapedHost}`); - if (hostname.endsWith('.sock')) { + if (escapedHost.endsWith('.sock')) { // heuristically determine if we're working with a domain socket - this.socketPath = decodeURIComponent(hostname); - } else if (typeof hostname === 'string') { - this.isIPv6 = false; - - let normalized = decodeURIComponent(hostname).toLowerCase(); - if (normalized.startsWith('[') && normalized.endsWith(']')) { - this.isIPv6 = true; - normalized = normalized.substring(1, hostname.length - 1); - } + this.socketPath = decodeURIComponent(escapedHost); + return; + } - this.host = normalized.toLowerCase(); + const urlString = `iLoveJS://${escapedHost}`; + let url; + try { + url = new URL(urlString); + } catch (urlError) { + const runtimeError = new MongoRuntimeError(`Unable to parse ${escapedHost} with URL`); + runtimeError.cause = urlError; + throw runtimeError; + } - if (typeof port === 'number') { - this.port = port; - } else if (typeof port === 'string' && port !== '') { - this.port = Number.parseInt(port, 10); - } else { - this.port = 27017; - } + const hostname = url.hostname; + const port = url.port; - if (this.port === 0) { - throw new MongoParseError('Invalid port (zero) with hostname'); - } + let normalized = decodeURIComponent(hostname).toLowerCase(); + if (normalized.startsWith('[') && normalized.endsWith(']')) { + this.isIPv6 = true; + normalized = normalized.substring(1, hostname.length - 1); + } + + this.host = normalized.toLowerCase(); + + if (typeof port === 'number') { + this.port = port; + } else if (typeof port === 'string' && port !== '') { + this.port = Number.parseInt(port, 10); } else { - throw new MongoInvalidArgumentError('Either socketPath or host must be defined.'); + this.port = 27017; + } + + if (this.port === 0) { + throw new MongoParseError('Invalid port (zero) with hostname'); } Object.freeze(this); } @@ -1245,15 +1128,12 @@ export class HostAddress { } inspect(): string { - return `new HostAddress('${this.toString(true)}')`; + return `new HostAddress('${this.toString()}')`; } - /** - * @param ipv6Brackets - optionally request ipv6 bracket notation required for connection strings - */ - toString(ipv6Brackets = false): string { + toString(): string { if (typeof this.host === 'string') { - if (this.isIPv6 && ipv6Brackets) { + if (this.isIPv6) { return `[${this.host}]:${this.port}`; } return `${this.host}:${this.port}`; @@ -1261,7 +1141,7 @@ export class HostAddress { return `${this.socketPath}`; } - static fromString(s: string): HostAddress { + static fromString(this: void, s: string): HostAddress { return new HostAddress(s); } @@ -1289,7 +1169,7 @@ export const DEFAULT_PK_FACTORY = { * @public * * @example - * ```js + * ```ts * process.on('warning', (warning) => { * if (warning.code === MONGODB_WARNING_CODE) console.error('Ah an important warning! :)') * }) @@ -1406,3 +1286,101 @@ export function commandSupportsReadConcern(command: Document, options?: Document return false; } + +/** A utility function to get the instance of mongodb-client-encryption, if it exists. */ +export function getMongoDBClientEncryption(): { + extension: (mdb: unknown) => { + AutoEncrypter: any; + ClientEncryption: any; + }; +} | null { + let mongodbClientEncryption = null; + + // NOTE(NODE-4254): This is to get around the circular dependency between + // mongodb-client-encryption and the driver in the test scenarios. + if ( + typeof process.env.MONGODB_CLIENT_ENCRYPTION_OVERRIDE === 'string' && + process.env.MONGODB_CLIENT_ENCRYPTION_OVERRIDE.length > 0 + ) { + try { + // NOTE(NODE-3199): Ensure you always wrap an optional require literally in the try block + // Cannot be moved to helper utility function, bundlers search and replace the actual require call + // in a way that makes this line throw at bundle time, not runtime, catching here will make bundling succeed + mongodbClientEncryption = require(process.env.MONGODB_CLIENT_ENCRYPTION_OVERRIDE); + } catch { + // ignore + } + } else { + try { + // NOTE(NODE-3199): Ensure you always wrap an optional require literally in the try block + // Cannot be moved to helper utility function, bundlers search and replace the actual require call + // in a way that makes this line throw at bundle time, not runtime, catching here will make bundling succeed + mongodbClientEncryption = require('mongodb-client-encryption'); + } catch { + // ignore + } + } + + return mongodbClientEncryption; +} + +/** + * Compare objectIds. `null` is always less + * - `+1 = oid1 is greater than oid2` + * - `-1 = oid1 is less than oid2` + * - `+0 = oid1 is equal oid2` + */ +export function compareObjectId(oid1?: ObjectId | null, oid2?: ObjectId | null): 0 | 1 | -1 { + if (oid1 == null && oid2 == null) { + return 0; + } + + if (oid1 == null) { + return -1; + } + + if (oid2 == null) { + return 1; + } + + return oid1.id.compare(oid2.id); +} + +export function parseInteger(value: unknown): number | null { + if (typeof value === 'number') return Math.trunc(value); + const parsedValue = Number.parseInt(String(value), 10); + + return Number.isNaN(parsedValue) ? null : parsedValue; +} + +export function parseUnsignedInteger(value: unknown): number | null { + const parsedInt = parseInteger(value); + + return parsedInt != null && parsedInt >= 0 ? parsedInt : null; +} + +/** + * Determines whether a provided address matches the provided parent domain. + * + * If a DNS server were to become compromised SRV records would still need to + * advertise addresses that are under the same domain as the srvHost. + * + * @param address - The address to check against a domain + * @param srvHost - The domain to check the provided address against + * @returns Whether the provided address matches the parent domain + */ +export function matchesParentDomain(address: string, srvHost: string): boolean { + // Remove trailing dot if exists on either the resolved address or the srv hostname + const normalizedAddress = address.endsWith('.') ? address.slice(0, address.length - 1) : address; + const normalizedSrvHost = srvHost.endsWith('.') ? srvHost.slice(0, srvHost.length - 1) : srvHost; + + const allCharacterBeforeFirstDot = /^.*?\./; + // Remove all characters before first dot + // Add leading dot back to string so + // an srvHostDomain = '.trusted.site' + // will not satisfy an addressDomain that endsWith '.fake-trusted.site' + const addressDomain = `.${normalizedAddress.replace(allCharacterBeforeFirstDot, '')}`; + const srvHostDomain = `.${normalizedSrvHost.replace(allCharacterBeforeFirstDot, '')}`; + + return addressDomain.endsWith(srvHostDomain); +} diff --git a/food-ordering-app/server/node_modules/mongoose/.claude/settings.local.json b/food-ordering-app/server/node_modules/mongoose/.claude/settings.local.json new file mode 100644 index 000000000..b5cf70c52 --- /dev/null +++ b/food-ordering-app/server/node_modules/mongoose/.claude/settings.local.json @@ -0,0 +1,7 @@ +{ + "permissions": { + "allow": [ + "mcp__acp__Bash" + ] + } +} diff --git a/food-ordering-app/server/node_modules/mongoose/.eslintrc.js b/food-ordering-app/server/node_modules/mongoose/.eslintrc.js new file mode 100644 index 000000000..0b98da741 --- /dev/null +++ b/food-ordering-app/server/node_modules/mongoose/.eslintrc.js @@ -0,0 +1,232 @@ +'use strict'; + +module.exports = { + extends: [ + 'eslint:recommended' + ], + ignorePatterns: [ + 'tools', + 'dist', + 'website.js', + 'test/files/*', + 'benchmarks', + '*.min.js', + 'docs/js/native.js' + ], + overrides: [ + { + files: [ + '**/*.{ts,tsx}', + '**/*.md/*.ts', + '**/*.md/*.typescript' + ], + extends: [ + 'plugin:@typescript-eslint/eslint-recommended', + 'plugin:@typescript-eslint/recommended' + ], + plugins: [ + '@typescript-eslint' + ], + rules: { + '@typescript-eslint/triple-slash-reference': 'off', + '@typescript-eslint/no-non-null-assertion': 'off', + '@typescript-eslint/no-empty-function': 'off', + 'spaced-comment': [ + 'error', + 'always', + { + block: { + markers: [ + '!' + ], + balanced: true + }, + markers: [ + '/' + ] + } + ], + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/ban-types': 'off', + '@typescript-eslint/no-unused-vars': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/indent': [ + 'warn', + 2, + { + SwitchCase: 1, + ignoredNodes: ['TSTypeParameterInstantiation'] + } + ], + '@typescript-eslint/prefer-optional-chain': 'error', + '@typescript-eslint/brace-style': 'error', + '@typescript-eslint/no-dupe-class-members': 'error', + '@typescript-eslint/no-redeclare': 'error', + '@typescript-eslint/type-annotation-spacing': 'error', + '@typescript-eslint/object-curly-spacing': [ + 'error', + 'always' + ], + '@typescript-eslint/semi': 'error', + '@typescript-eslint/space-before-function-paren': [ + 'error', + 'never' + ], + '@typescript-eslint/space-infix-ops': 'off' + } + }, + { + files: [ + 'docs/js/**/*.js' + ], + env: { + node: false, + browser: true + } + } + // // eslint-plugin-markdown has been disabled because of out-standing issues, see https://github.com/eslint/eslint-plugin-markdown/issues/214 + // { + // files: ['**/*.md'], + // processor: 'markdown/markdown' + // }, + // { + // files: ['**/*.md/*.js', '**/*.md/*.javascript', '**/*.md/*.ts', '**/*.md/*.typescript'], + // parserOptions: { + // ecmaFeatures: { + // impliedStrict: true + // }, + // sourceType: 'module', // required to allow "import" statements + // ecmaVersion: 'latest' // required to allow top-level await + // }, + // rules: { + // 'no-undef': 'off', + // 'no-unused-expressions': 'off', + // 'no-unused-vars': 'off', + // 'no-redeclare': 'off', + // '@typescript-eslint/no-redeclare': 'off' + // } + // } + ], + plugins: [ + 'mocha-no-only' + // 'markdown' + ], + parserOptions: { + ecmaVersion: 2020 + }, + env: { + node: true, + es6: true + }, + rules: { + 'comma-style': 'error', + indent: [ + 'error', + 2, + { + SwitchCase: 1, + VariableDeclarator: 2 + } + ], + 'keyword-spacing': 'error', + 'no-whitespace-before-property': 'error', + 'no-buffer-constructor': 'warn', + 'no-console': 'off', + 'no-constant-condition': 'off', + 'no-multi-spaces': 'error', + 'func-call-spacing': 'error', + 'no-trailing-spaces': 'error', + 'no-undef': 'error', + 'no-unneeded-ternary': 'error', + 'no-const-assign': 'error', + 'no-useless-rename': 'error', + 'no-dupe-keys': 'error', + 'space-in-parens': [ + 'error', + 'never' + ], + 'spaced-comment': [ + 'error', + 'always', + { + block: { + markers: [ + '!' + ], + balanced: true + } + } + ], + 'key-spacing': [ + 'error', + { + beforeColon: false, + afterColon: true + } + ], + 'comma-spacing': [ + 'error', + { + before: false, + after: true + } + ], + 'array-bracket-spacing': 1, + 'arrow-spacing': [ + 'error', + { + before: true, + after: true + } + ], + 'object-curly-spacing': [ + 'error', + 'always' + ], + 'comma-dangle': [ + 'error', + 'never' + ], + 'no-unreachable': 'error', + quotes: [ + 'error', + 'single' + ], + 'quote-props': [ + 'error', + 'as-needed' + ], + semi: 'error', + 'no-extra-semi': 'error', + 'semi-spacing': 'error', + 'no-spaced-func': 'error', + 'no-throw-literal': 'error', + 'space-before-blocks': 'error', + 'space-before-function-paren': [ + 'error', + 'never' + ], + 'space-infix-ops': 'error', + 'space-unary-ops': 'error', + 'no-var': 'warn', + 'prefer-const': 'warn', + strict: [ + 'error', + 'global' + ], + 'no-restricted-globals': [ + 'error', + { + name: 'context', + message: 'Don\'t use Mocha\'s global context' + } + ], + 'no-prototype-builtins': 'off', + 'mocha-no-only/mocha-no-only': [ + 'error' + ], + 'no-empty': 'off', + 'eol-last': 'warn', + 'no-multiple-empty-lines': ['warn', { max: 2 }] + } +}; diff --git a/food-ordering-app/server/node_modules/mongoose/.eslintrc.json b/food-ordering-app/server/node_modules/mongoose/.eslintrc.json deleted file mode 100644 index 589be0e17..000000000 --- a/food-ordering-app/server/node_modules/mongoose/.eslintrc.json +++ /dev/null @@ -1,193 +0,0 @@ -{ - "extends": [ - "eslint:recommended" - ], - "ignorePatterns": [ - "docs", - "tools", - "dist", - "website.js", - "test/files/*", - "benchmarks" - ], - "overrides": [ - { - "files": [ - "**/*.{ts,tsx}" - ], - "extends": [ - "plugin:@typescript-eslint/eslint-recommended", - "plugin:@typescript-eslint/recommended" - ], - "plugins": [ - "@typescript-eslint" - ], - "rules": { - "@typescript-eslint/triple-slash-reference": "off", - "@typescript-eslint/no-non-null-assertion": "off", - "spaced-comment": [ - "error", - "always", - { - "block": { - "markers": [ - "!" - ], - "balanced": true - }, - "markers": [ - "/" - ] - } - ], - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/ban-types": "off", - "@typescript-eslint/no-unused-vars": "off", - "@typescript-eslint/explicit-module-boundary-types": "off", - "@typescript-eslint/indent": [ - "error", - 2, - { - "SwitchCase": 1 - } - ], - "@typescript-eslint/prefer-optional-chain": "error", - "@typescript-eslint/brace-style": "error", - "@typescript-eslint/no-dupe-class-members": "error", - "@typescript-eslint/no-redeclare": "error", - "@typescript-eslint/type-annotation-spacing": "error", - "@typescript-eslint/object-curly-spacing": [ - "error", - "always" - ], - "@typescript-eslint/semi": "error", - "@typescript-eslint/space-before-function-paren": [ - "error", - "never" - ], - "@typescript-eslint/space-infix-ops": "off" - } - } - ], - "plugins": [ - "mocha-no-only" - ], - "parserOptions": { - "ecmaVersion": 2020 - }, - "env": { - "node": true, - "es6": true - }, - "rules": { - "comma-style": "error", - "indent": [ - "error", - 2, - { - "SwitchCase": 1, - "VariableDeclarator": 2 - } - ], - "keyword-spacing": "error", - "no-whitespace-before-property": "error", - "no-buffer-constructor": "warn", - "no-console": "off", - "no-constant-condition": "off", - "no-multi-spaces": "error", - "func-call-spacing": "error", - "no-trailing-spaces": "error", - "no-undef": "error", - "no-unneeded-ternary": "error", - "no-const-assign": "error", - "no-useless-rename": "error", - "no-dupe-keys": "error", - "space-in-parens": [ - "error", - "never" - ], - "spaced-comment": [ - "error", - "always", - { - "block": { - "markers": [ - "!" - ], - "balanced": true - } - } - ], - "key-spacing": [ - "error", - { - "beforeColon": false, - "afterColon": true - } - ], - "comma-spacing": [ - "error", - { - "before": false, - "after": true - } - ], - "array-bracket-spacing": 1, - "arrow-spacing": [ - "error", - { - "before": true, - "after": true - } - ], - "object-curly-spacing": [ - "error", - "always" - ], - "comma-dangle": [ - "error", - "never" - ], - "no-unreachable": "error", - "quotes": [ - "error", - "single" - ], - "quote-props": [ - "error", - "as-needed" - ], - "semi": "error", - "no-extra-semi": "error", - "semi-spacing": "error", - "no-spaced-func": "error", - "no-throw-literal": "error", - "space-before-blocks": "error", - "space-before-function-paren": [ - "error", - "never" - ], - "space-infix-ops": "error", - "space-unary-ops": "error", - "no-var": "warn", - "prefer-const": "warn", - "strict": [ - "error", - "global" - ], - "no-restricted-globals": [ - "error", - { - "name": "context", - "message": "Don't use Mocha's global context" - } - ], - "no-prototype-builtins": "off", - "mocha-no-only/mocha-no-only": [ - "error" - ], - "no-empty": "off", - "eol-last": "warn", - "no-multiple-empty-lines": ["warn", { "max": 2 }] - } -} diff --git a/food-ordering-app/server/node_modules/mongoose/.mocharc.yml b/food-ordering-app/server/node_modules/mongoose/.mocharc.yml new file mode 100644 index 000000000..efa9bf8a8 --- /dev/null +++ b/food-ordering-app/server/node_modules/mongoose/.mocharc.yml @@ -0,0 +1,4 @@ +reporter: spec # better to identify failing / slow tests than "dot" +ui: bdd # explicitly setting, even though it is mocha default +require: + - test/mocha-fixtures.js diff --git a/food-ordering-app/server/node_modules/mongoose/README.md b/food-ordering-app/server/node_modules/mongoose/README.md index 60da3ccde..dc8553971 100644 --- a/food-ordering-app/server/node_modules/mongoose/README.md +++ b/food-ordering-app/server/node_modules/mongoose/README.md @@ -1,10 +1,11 @@ # Mongoose -Mongoose is a [MongoDB](https://www.mongodb.org/) object modeling tool designed to work in an asynchronous environment. Mongoose supports both promises and callbacks. +Mongoose is a [MongoDB](https://www.mongodb.org/) object modeling tool designed to work in an asynchronous environment. Mongoose supports [Node.js](https://nodejs.org/en/) and [Deno](https://deno.land/) (alpha). -[![Slack Status](https://img.shields.io/badge/slack-mongoosejsteam-34D058.svg?logo=slack )](https://mongoosejsteam.slack.com) [![Build Status](https://github.com/Automattic/mongoose/workflows/Test/badge.svg)](https://github.com/Automattic/mongoose) [![NPM version](https://badge.fury.io/js/mongoose.svg)](http://badge.fury.io/js/mongoose) +[![Deno version](https://deno.land/badge/mongoose/version)](https://deno.land/x/mongoose) +[![Deno popularity](https://deno.land/badge/mongoose/popularity)](https://deno.land/x/mongoose) [![npm](https://nodei.co/npm/mongoose.png)](https://www.npmjs.com/package/mongoose) @@ -20,7 +21,7 @@ Mongoose 6.0.0 was released on August 24, 2021. You can find more details on [ba - [Bug Reports](https://github.com/Automattic/mongoose/issues/) - [Mongoose Slack Channel](http://slack.mongoosejs.io/) - [Help Forum](http://groups.google.com/group/mongoose-orm) - - [MongoDB Support](https://docs.mongodb.org/manual/support/) + - [MongoDB Support](https://www.mongodb.com/docs/manual/support/) ## Plugins @@ -45,6 +46,8 @@ First install [Node.js](http://nodejs.org/) and [MongoDB](https://www.mongodb.or $ npm install mongoose ``` +Mongoose 6.8.0 also includes alpha support for [Deno](https://deno.land/). + ## Importing ```javascript @@ -55,6 +58,24 @@ const mongoose = require('mongoose'); import mongoose from 'mongoose'; ``` +Or, using [Deno's `createRequire()` for CommonJS support](https://deno.land/std@0.113.0/node/README.md?source=#commonjs-modules-loading) as follows. + +```javascript +import { createRequire } from 'https://deno.land/std/node/module.ts'; +const require = createRequire(import.meta.url); + +const mongoose = require('mongoose'); + +mongoose.connect('mongodb://127.0.0.1:27017/test') + .then(() => console.log('Connected!')); +``` + +You can then run the above script using the following. + +``` +deno run --allow-net --allow-read --allow-sys --allow-env mongoose-test.js +``` + ## Mongoose for Enterprise Available as part of the Tidelift Subscription @@ -70,7 +91,7 @@ First, we need to define a connection. If your app uses only one database, you s Both `connect` and `createConnection` take a `mongodb://` URI, or the parameters `host, database, port, options`. ```js -await mongoose.connect('mongodb://localhost/my_database'); +await mongoose.connect('mongodb://127.0.0.1/my_database'); ``` Once connected, the `open` event is fired on the `Connection` instance. If you're using `mongoose.connect`, the `Connection` is `mongoose.connection`. Otherwise, `mongoose.createConnection` return value is a `Connection`. @@ -91,16 +112,16 @@ const BlogPost = new Schema({ author: ObjectId, title: String, body: String, -  date: Date + date: Date }); ``` Aside from defining the structure of your documents and the types of data you're storing, a Schema handles the definition of: * [Validators](http://mongoosejs.com/docs/validation.html) (async and sync) -* [Defaults](http://mongoosejs.com/docs/api.html#schematype_SchemaType-default) -* [Getters](http://mongoosejs.com/docs/api.html#schematype_SchemaType-get) -* [Setters](http://mongoosejs.com/docs/api.html#schematype_SchemaType-set) +* [Defaults](http://mongoosejs.com/docs/api/schematype.html#schematype_SchemaType-default) +* [Getters](http://mongoosejs.com/docs/api/schematype.html#schematype_SchemaType-get) +* [Setters](http://mongoosejs.com/docs/api/schematype.html#schematype_SchemaType-set) * [Indexes](http://mongoosejs.com/docs/guide.html#indexes) * [Middleware](http://mongoosejs.com/docs/middleware.html) * [Methods](http://mongoosejs.com/docs/guide.html#methods) definition @@ -120,12 +141,12 @@ const Comment = new Schema({ }); // a setter -Comment.path('name').set(function (v) { +Comment.path('name').set(function(v) { return capitalize(v); }); // middleware -Comment.pre('save', function (next) { +Comment.pre('save', function(next) { notify(this.get('email')); next(); }); @@ -160,7 +181,7 @@ Once we have our model, we can then instantiate it, and save it: ```js const instance = new MyModel(); instance.my.key = 'hello'; -instance.save(function (err) { +instance.save(function(err) { // }); ``` @@ -168,7 +189,7 @@ instance.save(function (err) { Or we can find documents from the same collection ```js -MyModel.find({}, function (err, docs) { +MyModel.find({}, function(err, docs) { // docs.forEach }); ``` @@ -176,8 +197,8 @@ MyModel.find({}, function (err, docs) { You can also `findOne`, `findById`, `update`, etc. ```js -const instance = await MyModel.findOne({ ... }); -console.log(instance.my.key); // 'hello' +const instance = await MyModel.findOne({ /* ... */ }); +console.log(instance.my.key); // 'hello' ``` For more details check out [the docs](http://mongoosejs.com/docs/queries.html). @@ -220,7 +241,7 @@ const post = new BlogPost(); // create a comment post.comments.push({ title: 'My comment' }); -post.save(function (err) { +post.save(function(err) { if (!err) console.log('Success!'); }); ``` @@ -228,10 +249,10 @@ post.save(function (err) { The same goes for removing them: ```js -BlogPost.findById(myId, function (err, post) { +BlogPost.findById(myId, function(err, post) { if (!err) { post.comments[0].remove(); - post.save(function (err) { + post.save(function(err) { // do something }); } @@ -252,7 +273,7 @@ You can intercept method arguments via middleware. For example, this would allow you to broadcast changes about your Documents every time someone `set`s a path in your Document to a new value: ```js -schema.pre('set', function (next, path, val, typel) { +schema.pre('set', function(next, path, val, typel) { // `this` is the current Document this.emit('set', path, val); @@ -264,13 +285,13 @@ schema.pre('set', function (next, path, val, typel) { Moreover, you can mutate the incoming `method` arguments so that subsequent middleware see different values for those arguments. To do so, just pass the new values to `next`: ```js -.pre(method, function firstPre (next, methodArg1, methodArg2) { +schema.pre(method, function firstPre(next, methodArg1, methodArg2) { // Mutate methodArg1 - next("altered-" + methodArg1.toString(), methodArg2); + next('altered-' + methodArg1.toString(), methodArg2); }); // pre declaration is chainable -.pre(method, function secondPre (next, methodArg1, methodArg2) { +schema.pre(method, function secondPre(next, methodArg1, methodArg2) { console.log(methodArg1); // => 'altered-originalValOfMethodArg1' @@ -316,7 +337,7 @@ return a cursor. ## API Docs -Find the API docs [here](http://mongoosejs.com/docs/api.html), generated using [dox](https://github.com/tj/dox) +Find the API docs [here](http://mongoosejs.com/docs/api/mongoose.html), generated using [dox](https://github.com/tj/dox) and [acquit](https://github.com/vkarpov15/acquit). ## Related Projects diff --git a/food-ordering-app/server/node_modules/mongoose/dist/browser.umd.js b/food-ordering-app/server/node_modules/mongoose/dist/browser.umd.js index d398868e0..f0f73c042 100644 --- a/food-ordering-app/server/node_modules/mongoose/dist/browser.umd.js +++ b/food-ordering-app/server/node_modules/mongoose/dist/browser.umd.js @@ -1,68579 +1,2 @@ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else if(typeof exports === 'object') - exports["mongoose"] = factory(); - else - root["mongoose"] = factory(); -})(typeof self !== 'undefined' ? self : this, () => { -return /******/ (() => { // webpackBootstrap -/******/ var __webpack_modules__ = ({ - -/***/ 5507: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/** - * Export lib/mongoose - * - */ - - -module.exports = __webpack_require__(1735); - -/***/ }), - -/***/ 1735: -/***/ ((module, exports, __webpack_require__) => { - -"use strict"; -/* provided dependency */ var Buffer = __webpack_require__(365)["Buffer"]; -/* eslint-env browser */ - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -(__webpack_require__(9906).set)(__webpack_require__(6333)); - -var DocumentProvider = __webpack_require__(4304); - -var PromiseProvider = __webpack_require__(6755); - -DocumentProvider.setBrowser(true); -/** - * The Mongoose [Promise](#promise_Promise) constructor. - * - * @method Promise - * @api public - */ - -Object.defineProperty(exports, "Promise", ({ - get: function get() { - return PromiseProvider.get(); - }, - set: function set(lib) { - PromiseProvider.set(lib); - } -})); -/** - * Storage layer for mongoose promises - * - * @method PromiseProvider - * @api public - */ - -exports.PromiseProvider = PromiseProvider; -/** - * The [MongooseError](#error_MongooseError) constructor. - * - * @method Error - * @api public - */ - -exports.Error = __webpack_require__(4888); -/** - * The Mongoose [Schema](#schema_Schema) constructor - * - * #### Example: - * - * const mongoose = require('mongoose'); - * const Schema = mongoose.Schema; - * const CatSchema = new Schema(..); - * - * @method Schema - * @api public - */ - -exports.Schema = __webpack_require__(5506); -/** - * The various Mongoose Types. - * - * #### Example: - * - * const mongoose = require('mongoose'); - * const array = mongoose.Types.Array; - * - * #### Types: - * - * - [Array](/docs/schematypes.html#arrays) - * - [Buffer](/docs/schematypes.html#buffers) - * - [Embedded](/docs/schematypes.html#schemas) - * - [DocumentArray](/docs/api/documentarraypath.html) - * - [Decimal128](/docs/api.html#mongoose_Mongoose-Decimal128) - * - [ObjectId](/docs/schematypes.html#objectids) - * - [Map](/docs/schematypes.html#maps) - * - [Subdocument](/docs/schematypes.html#schemas) - * - * Using this exposed access to the `ObjectId` type, we can construct ids on demand. - * - * const ObjectId = mongoose.Types.ObjectId; - * const id1 = new ObjectId; - * - * @property Types - * @api public - */ - -exports.Types = __webpack_require__(8941); -/** - * The Mongoose [VirtualType](#virtualtype_VirtualType) constructor - * - * @method VirtualType - * @api public - */ - -exports.VirtualType = __webpack_require__(459); -/** - * The various Mongoose SchemaTypes. - * - * #### Note: - * - * _Alias of mongoose.Schema.Types for backwards compatibility._ - * - * @property SchemaTypes - * @see Schema.SchemaTypes #schema_Schema.Types - * @api public - */ - -exports.SchemaType = __webpack_require__(4289); -/** - * Internal utils - * - * @property utils - * @api private - */ - -exports.utils = __webpack_require__(6872); -/** - * The Mongoose browser [Document](/api/document.html) constructor. - * - * @method Document - * @api public - */ - -exports.Document = DocumentProvider(); -/** - * Return a new browser model. In the browser, a model is just - * a simplified document with a schema - it does **not** have - * functions like `findOne()`, etc. - * - * @method model - * @api public - * @param {String} name - * @param {Schema} schema - * @return Class - */ - -exports.model = function (name, schema) { - var Model = /*#__PURE__*/function (_exports$Document) { - _inherits(Model, _exports$Document); - - var _super = _createSuper(Model); - - function Model(obj, fields) { - _classCallCheck(this, Model); - - return _super.call(this, obj, schema, fields); - } - - return _createClass(Model); - }(exports.Document); - - Model.modelName = name; - return Model; -}; -/*! - * Module exports. - */ - - -if (typeof window !== 'undefined') { - window.mongoose = module.exports; - window.Buffer = Buffer; -} - -/***/ }), - -/***/ 3434: -/***/ ((module, exports, __webpack_require__) => { - -"use strict"; -/*! - * Module dependencies. - */ - - -var NodeJSDocument = __webpack_require__(8727); - -var EventEmitter = (__webpack_require__(9620).EventEmitter); - -var MongooseError = __webpack_require__(4888); - -var Schema = __webpack_require__(5506); - -var ObjectId = __webpack_require__(6079); - -var ValidationError = MongooseError.ValidationError; - -var applyHooks = __webpack_require__(8859); - -var isObject = __webpack_require__(5721); -/** - * Document constructor. - * - * @param {Object} obj the values to set - * @param {Object} schema - * @param {Object} [fields] optional object containing the fields which were selected in the query returning this document and any populated paths data - * @param {Boolean} [skipId] bool, should we auto create an ObjectId _id - * @inherits NodeJS EventEmitter https://nodejs.org/api/events.html#events_class_events_eventemitter - * @event `init`: Emitted on a document after it has was retrieved from the db and fully hydrated by Mongoose. - * @event `save`: Emitted when the document is successfully saved - * @api private - */ - - -function Document(obj, schema, fields, skipId, skipInit) { - if (!(this instanceof Document)) { - return new Document(obj, schema, fields, skipId, skipInit); - } - - if (isObject(schema) && !schema.instanceOfSchema) { - schema = new Schema(schema); - } // When creating EmbeddedDocument, it already has the schema and he doesn't need the _id - - - schema = this.schema || schema; // Generate ObjectId if it is missing, but it requires a scheme - - if (!this.schema && schema.options._id) { - obj = obj || {}; - - if (obj._id === undefined) { - obj._id = new ObjectId(); - } - } - - if (!schema) { - throw new MongooseError.MissingSchemaError(); - } - - this.$__setSchema(schema); - NodeJSDocument.call(this, obj, fields, skipId, skipInit); - applyHooks(this, schema, { - decorateDoc: true - }); // apply methods - - for (var m in schema.methods) { - this[m] = schema.methods[m]; - } // apply statics - - - for (var s in schema.statics) { - this[s] = schema.statics[s]; - } -} -/*! - * Inherit from the NodeJS document - */ - - -Document.prototype = Object.create(NodeJSDocument.prototype); -Document.prototype.constructor = Document; -/*! - * ignore - */ - -Document.events = new EventEmitter(); -/*! - * Browser doc exposes the event emitter API - */ - -Document.$emitter = new EventEmitter(); -['on', 'once', 'emit', 'listeners', 'removeListener', 'setMaxListeners', 'removeAllListeners', 'addListener'].forEach(function (emitterFn) { - Document[emitterFn] = function () { - return Document.$emitter[emitterFn].apply(Document.$emitter, arguments); - }; -}); -/*! - * Module exports. - */ - -Document.ValidationError = ValidationError; -module.exports = exports = Document; - -/***/ }), - -/***/ 6787: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -/*! - * Module dependencies. - */ - -function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } - -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } - -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var CastError = __webpack_require__(1795); - -var StrictModeError = __webpack_require__(3328); - -var Types = __webpack_require__(5251); - -var cast$expr = __webpack_require__(9739); - -var castTextSearch = __webpack_require__(6495); - -var get = __webpack_require__(9981); - -var getConstructorName = __webpack_require__(1981); - -var getSchemaDiscriminatorByValue = __webpack_require__(2392); - -var isOperator = __webpack_require__(9627); - -var util = __webpack_require__(161); - -var isObject = __webpack_require__(5721); - -var isMongooseObject = __webpack_require__(6584); - -var ALLOWED_GEOWITHIN_GEOJSON_TYPES = ['Polygon', 'MultiPolygon']; -/** - * Handles internal casting for query filters. - * - * @param {Schema} schema - * @param {Object} obj Object to cast - * @param {Object} options the query options - * @param {Query} context passed to setters - * @api private - */ - -module.exports = function cast(schema, obj, options, context) { - if (Array.isArray(obj)) { - throw new Error('Query filter must be an object, got an array ', util.inspect(obj)); - } - - if (obj == null) { - return obj; - } - - if (schema != null && schema.discriminators != null && obj[schema.options.discriminatorKey] != null) { - schema = getSchemaDiscriminatorByValue(schema, obj[schema.options.discriminatorKey]) || schema; - } - - var paths = Object.keys(obj); - var i = paths.length; - - var _keys; - - var any$conditionals; - var schematype; - var nested; - var path; - var type; - var val; - options = options || {}; - - while (i--) { - path = paths[i]; - val = obj[path]; - - if (path === '$or' || path === '$nor' || path === '$and') { - if (!Array.isArray(val)) { - throw new CastError('Array', val, path); - } - - for (var k = 0; k < val.length; ++k) { - if (val[k] == null || _typeof(val[k]) !== 'object') { - throw new CastError('Object', val[k], path + '.' + k); - } - - val[k] = cast(schema, val[k], options, context); - } - } else if (path === '$where') { - type = _typeof(val); - - if (type !== 'string' && type !== 'function') { - throw new Error('Must have a string or function for $where'); - } - - if (type === 'function') { - obj[path] = val.toString(); - } - - continue; - } else if (path === '$expr') { - val = cast$expr(val, schema); - continue; - } else if (path === '$elemMatch') { - val = cast(schema, val, options, context); - } else if (path === '$text') { - val = castTextSearch(val, path); - } else { - if (!schema) { - // no casting for Mixed types - continue; - } - - schematype = schema.path(path); // Check for embedded discriminator paths - - if (!schematype) { - var split = path.split('.'); - var j = split.length; - - while (j--) { - var pathFirstHalf = split.slice(0, j).join('.'); - var pathLastHalf = split.slice(j).join('.'); - - var _schematype = schema.path(pathFirstHalf); - - var discriminatorKey = _schematype && _schematype.schema && _schematype.schema.options && _schematype.schema.options.discriminatorKey; // gh-6027: if we haven't found the schematype but this path is - // underneath an embedded discriminator and the embedded discriminator - // key is in the query, use the embedded discriminator schema - - if (_schematype != null && (_schematype.schema && _schematype.schema.discriminators) != null && discriminatorKey != null && pathLastHalf !== discriminatorKey) { - var discriminatorVal = get(obj, pathFirstHalf + '.' + discriminatorKey); - - if (discriminatorVal != null) { - schematype = _schematype.schema.discriminators[discriminatorVal].path(pathLastHalf); - } - } - } - } - - if (!schematype) { - // Handle potential embedded array queries - var _split = path.split('.'); - - var _j = _split.length; - - var _pathFirstHalf = void 0; - - var _pathLastHalf = void 0; - - var remainingConds = void 0; // Find the part of the var path that is a path of the Schema - - while (_j--) { - _pathFirstHalf = _split.slice(0, _j).join('.'); - schematype = schema.path(_pathFirstHalf); - - if (schematype) { - break; - } - } // If a substring of the input path resolves to an actual real path... - - - if (schematype) { - // Apply the casting; similar code for $elemMatch in schema/array.js - if (schematype.caster && schematype.caster.schema) { - remainingConds = {}; - _pathLastHalf = _split.slice(_j).join('.'); - remainingConds[_pathLastHalf] = val; - - var ret = cast(schematype.caster.schema, remainingConds, options, context)[_pathLastHalf]; - - if (ret === void 0) { - delete obj[path]; - } else { - obj[path] = ret; - } - } else { - obj[path] = val; - } - - continue; - } - - if (isObject(val)) { - // handle geo schemas that use object notation - // { loc: { long: Number, lat: Number } - var geo = ''; - - if (val.$near) { - geo = '$near'; - } else if (val.$nearSphere) { - geo = '$nearSphere'; - } else if (val.$within) { - geo = '$within'; - } else if (val.$geoIntersects) { - geo = '$geoIntersects'; - } else if (val.$geoWithin) { - geo = '$geoWithin'; - } - - if (geo) { - var numbertype = new Types.Number('__QueryCasting__'); - var value = val[geo]; - - if (val.$maxDistance != null) { - val.$maxDistance = numbertype.castForQueryWrapper({ - val: val.$maxDistance, - context: context - }); - } - - if (val.$minDistance != null) { - val.$minDistance = numbertype.castForQueryWrapper({ - val: val.$minDistance, - context: context - }); - } - - if (geo === '$within') { - var withinType = value.$center || value.$centerSphere || value.$box || value.$polygon; - - if (!withinType) { - throw new Error('Bad $within parameter: ' + JSON.stringify(val)); - } - - value = withinType; - } else if (geo === '$near' && typeof value.type === 'string' && Array.isArray(value.coordinates)) { - // geojson; cast the coordinates - value = value.coordinates; - } else if ((geo === '$near' || geo === '$nearSphere' || geo === '$geoIntersects') && value.$geometry && typeof value.$geometry.type === 'string' && Array.isArray(value.$geometry.coordinates)) { - if (value.$maxDistance != null) { - value.$maxDistance = numbertype.castForQueryWrapper({ - val: value.$maxDistance, - context: context - }); - } - - if (value.$minDistance != null) { - value.$minDistance = numbertype.castForQueryWrapper({ - val: value.$minDistance, - context: context - }); - } - - if (isMongooseObject(value.$geometry)) { - value.$geometry = value.$geometry.toObject({ - transform: false, - virtuals: false - }); - } - - value = value.$geometry.coordinates; - } else if (geo === '$geoWithin') { - if (value.$geometry) { - if (isMongooseObject(value.$geometry)) { - value.$geometry = value.$geometry.toObject({ - virtuals: false - }); - } - - var geoWithinType = value.$geometry.type; - - if (ALLOWED_GEOWITHIN_GEOJSON_TYPES.indexOf(geoWithinType) === -1) { - throw new Error('Invalid geoJSON type for $geoWithin "' + geoWithinType + '", must be "Polygon" or "MultiPolygon"'); - } - - value = value.$geometry.coordinates; - } else { - value = value.$box || value.$polygon || value.$center || value.$centerSphere; - - if (isMongooseObject(value)) { - value = value.toObject({ - virtuals: false - }); - } - } - } - - _cast(value, numbertype, context); - - continue; - } - } - - if (schema.nested[path]) { - continue; - } - - var strict = 'strict' in options ? options.strict : schema.options.strict; - var strictQuery = 'strictQuery' in options ? options.strictQuery : 'strict' in options ? options.strict : 'strict' in schema._userProvidedOptions ? schema._userProvidedOptions.strict : schema.options.strictQuery; - - if (options.upsert && strict) { - if (strict === 'throw') { - throw new StrictModeError(path); - } - - throw new StrictModeError(path, 'Path "' + path + '" is not in ' + 'schema, strict mode is `true`, and upsert is `true`.'); - } - - if (strictQuery === 'throw') { - throw new StrictModeError(path, 'Path "' + path + '" is not in ' + 'schema and strictQuery is \'throw\'.'); - } else if (strictQuery) { - delete obj[path]; - } - } else if (val == null) { - continue; - } else if (getConstructorName(val) === 'Object') { - any$conditionals = Object.keys(val).some(isOperator); - - if (!any$conditionals) { - obj[path] = schematype.castForQueryWrapper({ - val: val, - context: context - }); - } else { - var ks = Object.keys(val); - var $cond = void 0; - var _k = ks.length; - - while (_k--) { - $cond = ks[_k]; - nested = val[$cond]; - - if ($cond === '$not') { - if (nested && schematype) { - _keys = Object.keys(nested); - - if (_keys.length && isOperator(_keys[0])) { - for (var key in nested) { - nested[key] = schematype.castForQueryWrapper({ - $conditional: key, - val: nested[key], - context: context - }); - } - } else { - val[$cond] = schematype.castForQueryWrapper({ - $conditional: $cond, - val: nested, - context: context - }); - } - - continue; - } - } else { - val[$cond] = schematype.castForQueryWrapper({ - $conditional: $cond, - val: nested, - context: context - }); - } - } - } - } else if (Array.isArray(val) && ['Buffer', 'Array'].indexOf(schematype.instance) === -1) { - var casted = []; - var valuesArray = val; - - var _iterator = _createForOfIteratorHelper(valuesArray), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var _val = _step.value; - casted.push(schematype.castForQueryWrapper({ - val: _val, - context: context - })); - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - obj[path] = { - $in: casted - }; - } else { - obj[path] = schematype.castForQueryWrapper({ - val: val, - context: context - }); - } - } - } - - return obj; -}; - -function _cast(val, numbertype, context) { - if (Array.isArray(val)) { - val.forEach(function (item, i) { - if (Array.isArray(item) || isObject(item)) { - return _cast(item, numbertype, context); - } - - val[i] = numbertype.castForQueryWrapper({ - val: item, - context: context - }); - }); - } else { - var nearKeys = Object.keys(val); - var nearLen = nearKeys.length; - - while (nearLen--) { - var nkey = nearKeys[nearLen]; - var item = val[nkey]; - - if (Array.isArray(item) || isObject(item)) { - _cast(item, numbertype, context); - - val[nkey] = item; - } else { - val[nkey] = numbertype.castForQuery({ - val: item, - context: context - }); - } - } - } -} - -/***/ }), - -/***/ 6670: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var CastError = __webpack_require__(1795); -/*! - * Given a value, cast it to a boolean, or throw a `CastError` if the value - * cannot be casted. `null` and `undefined` are considered valid. - * - * @param {Any} value - * @param {String} [path] optional the path to set on the CastError - * @return {Boolean|null|undefined} - * @throws {CastError} if `value` is not one of the allowed values - * @api private - */ - - -module.exports = function castBoolean(value, path) { - if (module.exports.convertToTrue.has(value)) { - return true; - } - - if (module.exports.convertToFalse.has(value)) { - return false; - } - - if (value == null) { - return value; - } - - throw new CastError('boolean', value, path); -}; - -module.exports.convertToTrue = new Set([true, 'true', 1, '1', 'yes']); -module.exports.convertToFalse = new Set([false, 'false', 0, '0', 'no']); - -/***/ }), - -/***/ 195: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var assert = __webpack_require__(9373); - -module.exports = function castDate(value) { - // Support empty string because of empty form values. Originally introduced - // in https://github.com/Automattic/mongoose/commit/efc72a1898fc3c33a319d915b8c5463a22938dfe - if (value == null || value === '') { - return null; - } - - if (value instanceof Date) { - assert.ok(!isNaN(value.valueOf())); - return value; - } - - var date; - assert.ok(typeof value !== 'boolean'); - - if (value instanceof Number || typeof value === 'number') { - date = new Date(value); - } else if (typeof value === 'string' && !isNaN(Number(value)) && (Number(value) >= 275761 || Number(value) < -271820)) { - // string representation of milliseconds take this path - date = new Date(Number(value)); - } else if (typeof value.valueOf === 'function') { - // support for moment.js. This is also the path strings will take because - // strings have a `valueOf()` - date = new Date(value.valueOf()); - } else { - // fallback - date = new Date(value); - } - - if (!isNaN(date.valueOf())) { - return date; - } - - assert.ok(false); -}; - -/***/ }), - -/***/ 6209: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/* provided dependency */ var Buffer = __webpack_require__(365)["Buffer"]; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var Decimal128Type = __webpack_require__(5003); - -var assert = __webpack_require__(9373); - -module.exports = function castDecimal128(value) { - if (value == null) { - return value; - } - - if (_typeof(value) === 'object' && typeof value.$numberDecimal === 'string') { - return Decimal128Type.fromString(value.$numberDecimal); - } - - if (value instanceof Decimal128Type) { - return value; - } - - if (typeof value === 'string') { - return Decimal128Type.fromString(value); - } - - if (Buffer.isBuffer(value)) { - return new Decimal128Type(value); - } - - if (typeof value === 'number') { - return Decimal128Type.fromString(String(value)); - } - - if (typeof value.valueOf === 'function' && typeof value.valueOf() === 'string') { - return Decimal128Type.fromString(value.valueOf()); - } - - assert.ok(false); -}; - -/***/ }), - -/***/ 3065: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var assert = __webpack_require__(9373); -/*! - * Given a value, cast it to a number, or throw an `Error` if the value - * cannot be casted. `null` and `undefined` are considered valid. - * - * @param {Any} value - * @return {Number} - * @throws {Error} if `value` is not one of the allowed values - * @api private - */ - - -module.exports = function castNumber(val) { - if (val == null) { - return val; - } - - if (val === '') { - return null; - } - - if (typeof val === 'string' || typeof val === 'boolean') { - val = Number(val); - } - - assert.ok(!isNaN(val)); - - if (val instanceof Number) { - return val.valueOf(); - } - - if (typeof val === 'number') { - return val; - } - - if (!Array.isArray(val) && typeof val.valueOf === 'function') { - return Number(val.valueOf()); - } - - if (val.toString && !Array.isArray(val) && val.toString() == Number(val)) { - return Number(val); - } - - assert.ok(false); -}; - -/***/ }), - -/***/ 4731: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var isBsonType = __webpack_require__(1563); - -var ObjectId = (__webpack_require__(9906).get)().ObjectId; - -module.exports = function castObjectId(value) { - if (value == null) { - return value; - } - - if (isBsonType(value, 'ObjectID')) { - return value; - } - - if (value._id) { - if (isBsonType(value._id, 'ObjectID')) { - return value._id; - } - - if (value._id.toString instanceof Function) { - return new ObjectId(value._id.toString()); - } - } - - if (value.toString instanceof Function) { - return new ObjectId(value.toString()); - } - - return new ObjectId(value); -}; - -/***/ }), - -/***/ 2417: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var CastError = __webpack_require__(1795); -/*! - * Given a value, cast it to a string, or throw a `CastError` if the value - * cannot be casted. `null` and `undefined` are considered valid. - * - * @param {Any} value - * @param {String} [path] optional the path to set on the CastError - * @return {string|null|undefined} - * @throws {CastError} - * @api private - */ - - -module.exports = function castString(value, path) { - // If null or undefined - if (value == null) { - return value; - } // handle documents being passed - - - if (value._id && typeof value._id === 'string') { - return value._id; - } // Re: gh-647 and gh-3030, we're ok with casting using `toString()` - // **unless** its the default Object.toString, because "[object Object]" - // doesn't really qualify as useful data - - - if (value.toString && value.toString !== Object.prototype.toString && !Array.isArray(value)) { - return value.toString(); - } - - throw new CastError('string', value, path); -}; - -/***/ }), - -/***/ 8727: -/***/ ((module, exports, __webpack_require__) => { - -"use strict"; - -/*! - * Module dependencies. - */ - -function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } - -function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } - -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } - -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var EventEmitter = (__webpack_require__(9620).EventEmitter); - -var InternalCache = __webpack_require__(6379); - -var MongooseError = __webpack_require__(4888); - -var MixedSchema = __webpack_require__(3861); - -var ObjectExpectedError = __webpack_require__(4107); - -var ObjectParameterError = __webpack_require__(900); - -var ParallelValidateError = __webpack_require__(7962); - -var Schema = __webpack_require__(5506); - -var StrictModeError = __webpack_require__(3328); - -var ValidationError = __webpack_require__(122); - -var ValidatorError = __webpack_require__(2037); - -var VirtualType = __webpack_require__(459); - -var $__hasIncludedChildren = __webpack_require__(7427); - -var promiseOrCallback = __webpack_require__(8486); - -var cleanModifiedSubpaths = __webpack_require__(4134); - -var compile = (__webpack_require__(8724)/* .compile */ .M); - -var defineKey = (__webpack_require__(8724)/* .defineKey */ .c); - -var flatten = (__webpack_require__(2829)/* .flatten */ .x); - -var flattenObjectWithDottedPaths = __webpack_require__(207); - -var get = __webpack_require__(9981); - -var getEmbeddedDiscriminatorPath = __webpack_require__(111); - -var getKeysInSchemaOrder = __webpack_require__(37); - -var handleSpreadDoc = __webpack_require__(719); - -var immediate = __webpack_require__(1490); - -var isDefiningProjection = __webpack_require__(2183); - -var isExclusive = __webpack_require__(9098); - -var inspect = (__webpack_require__(161).inspect); - -var internalToObjectOptions = (__webpack_require__(4962)/* .internalToObjectOptions */ .h); - -var markArraySubdocsPopulated = __webpack_require__(5837); - -var mpath = __webpack_require__(3564); - -var queryhelpers = __webpack_require__(2888); - -var utils = __webpack_require__(6872); - -var isPromise = __webpack_require__(5543); - -var clone = utils.clone; -var deepEqual = utils.deepEqual; -var isMongooseObject = utils.isMongooseObject; - -var arrayAtomicsBackupSymbol = (__webpack_require__(8770).arrayAtomicsBackupSymbol); - -var arrayAtomicsSymbol = (__webpack_require__(8770).arrayAtomicsSymbol); - -var documentArrayParent = (__webpack_require__(8770).documentArrayParent); - -var documentIsModified = (__webpack_require__(8770).documentIsModified); - -var documentModifiedPaths = (__webpack_require__(8770).documentModifiedPaths); - -var documentSchemaSymbol = (__webpack_require__(8770).documentSchemaSymbol); - -var getSymbol = (__webpack_require__(8770).getSymbol); - -var populateModelSymbol = (__webpack_require__(8770).populateModelSymbol); - -var scopeSymbol = (__webpack_require__(8770).scopeSymbol); - -var schemaMixedSymbol = (__webpack_require__(8107).schemaMixedSymbol); - -var parentPaths = __webpack_require__(251); - -var DocumentArray; -var MongooseArray; -var Embedded; -var specialProperties = utils.specialProperties; -/** - * The core Mongoose document constructor. You should not call this directly, - * the Mongoose [Model constructor](./api.html#Model) calls this for you. - * - * @param {Object} obj the values to set - * @param {Object} [fields] optional object containing the fields which were selected in the query returning this document and any populated paths data - * @param {Object} [options] various configuration options for the document - * @param {Boolean} [options.defaults=true] if `false`, skip applying default values to this document. - * @inherits NodeJS EventEmitter https://nodejs.org/api/events.html#events_class_events_eventemitter - * @event `init`: Emitted on a document after it has been retrieved from the db and fully hydrated by Mongoose. - * @event `save`: Emitted when the document is successfully saved - * @api private - */ - -function Document(obj, fields, skipId, options) { - if (_typeof(skipId) === 'object' && skipId != null) { - options = skipId; - skipId = options.skipId; - } - - options = Object.assign({}, options); // Support `browserDocument.js` syntax - - if (this.$__schema == null) { - var _schema = utils.isObject(fields) && !fields.instanceOfSchema ? new Schema(fields) : fields; - - this.$__setSchema(_schema); - fields = skipId; - skipId = options; - options = arguments[4] || {}; - } - - this.$__ = new InternalCache(); - this.$isNew = 'isNew' in options ? options.isNew : true; - - if (options.priorDoc != null) { - this.$__.priorDoc = options.priorDoc; - } - - if (skipId) { - this.$__.skipId = skipId; - } - - if (obj != null && _typeof(obj) !== 'object') { - throw new ObjectParameterError(obj, 'obj', 'Document'); - } - - var defaults = true; - - if (options.defaults !== undefined) { - this.$__.defaults = options.defaults; - defaults = options.defaults; - } - - var schema = this.$__schema; - - if (typeof fields === 'boolean' || fields === 'throw') { - this.$__.strictMode = fields; - fields = undefined; - } else { - this.$__.strictMode = schema.options.strict; - - if (fields != null) { - this.$__.selected = fields; - } - } - - var requiredPaths = schema.requiredPaths(true); - - var _iterator = _createForOfIteratorHelper(requiredPaths), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var path = _step.value; - - this.$__.activePaths.require(path); - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - var exclude = null; // determine if this doc is a result of a query with - // excluded fields - - if (utils.isPOJO(fields)) { - exclude = isExclusive(fields); - this.$__.fields = fields; - this.$__.exclude = exclude; - } - - var hasIncludedChildren = exclude === false && fields ? $__hasIncludedChildren(fields) : null; - - if (this._doc == null) { - this.$__buildDoc(obj, fields, skipId, exclude, hasIncludedChildren, false); // By default, defaults get applied **before** setting initial values - // Re: gh-6155 - - if (defaults) { - $__applyDefaults(this, fields, exclude, hasIncludedChildren, true, null); - } - } - - if (obj) { - // Skip set hooks - if (this.$__original_set) { - this.$__original_set(obj, undefined, true, options); - } else { - this.$set(obj, undefined, true, options); - } - - if (obj instanceof Document) { - this.$isNew = obj.$isNew; - } - } // Function defaults get applied **after** setting initial values so they - // see the full doc rather than an empty one, unless they opt out. - // Re: gh-3781, gh-6155 - - - if (options.willInit && defaults) { - if (options.skipDefaults) { - this.$__.skipDefaults = options.skipDefaults; - } - } else if (defaults) { - $__applyDefaults(this, fields, exclude, hasIncludedChildren, false, options.skipDefaults); - } - - if (!this.$__.strictMode && obj) { - var _this = this; - - var keys = Object.keys(this._doc); - keys.forEach(function (key) { - // Avoid methods, virtuals, existing fields, and `$` keys. The latter is to avoid overwriting - // Mongoose internals. - if (!(key in schema.tree) && !(key in schema.methods) && !(key in schema.virtuals) && !key.startsWith('$')) { - defineKey({ - prop: key, - subprops: null, - prototype: _this - }); - } - }); - } - - applyQueue(this); -} - -Object.defineProperty(Document.prototype, 'isNew', { - get: function get() { - return this.$isNew; - }, - set: function set(value) { - this.$isNew = value; - } -}); -Object.defineProperty(Document.prototype, 'errors', { - get: function get() { - return this.$errors; - }, - set: function set(value) { - this.$errors = value; - } -}); -/*! - * Document exposes the NodeJS event emitter API, so you can use - * `on`, `once`, etc. - */ - -utils.each(['on', 'once', 'emit', 'listeners', 'removeListener', 'setMaxListeners', 'removeAllListeners', 'addListener'], function (emitterFn) { - Document.prototype[emitterFn] = function () { - // Delay creating emitter until necessary because emitters take up a lot of memory, - // especially for subdocuments. - if (!this.$__.emitter) { - if (emitterFn === 'emit') { - return; - } - - this.$__.emitter = new EventEmitter(); - this.$__.emitter.setMaxListeners(0); - } - - return this.$__.emitter[emitterFn].apply(this.$__.emitter, arguments); - }; - - Document.prototype["$".concat(emitterFn)] = Document.prototype[emitterFn]; -}); -Document.prototype.constructor = Document; - -for (var i in EventEmitter.prototype) { - Document[i] = EventEmitter.prototype[i]; -} -/** - * The document's internal schema. - * - * @api private - * @property schema - * @memberOf Document - * @instance - */ - - -Document.prototype.$__schema; -/** - * The document's schema. - * - * @api public - * @property schema - * @memberOf Document - * @instance - */ - -Document.prototype.schema; -/** - * Empty object that you can use for storing properties on the document. This - * is handy for passing data to middleware without conflicting with Mongoose - * internals. - * - * #### Example: - * - * schema.pre('save', function() { - * // Mongoose will set `isNew` to `false` if `save()` succeeds - * this.$locals.wasNew = this.isNew; - * }); - * - * schema.post('save', function() { - * // Prints true if `isNew` was set before `save()` - * console.log(this.$locals.wasNew); - * }); - * - * @api public - * @property $locals - * @memberOf Document - * @instance - */ - -Object.defineProperty(Document.prototype, '$locals', { - configurable: false, - enumerable: false, - get: function get() { - if (this.$__.locals == null) { - this.$__.locals = {}; - } - - return this.$__.locals; - }, - set: function set(v) { - this.$__.locals = v; - } -}); -/** - * Boolean flag specifying if the document is new. - * - * @api public - * @property $isNew - * @memberOf Document - * @instance - */ - -Document.prototype.$isNew; -/** - * Boolean flag specifying if the document is new. - * - * @api public - * @property isNew - * @memberOf Document - * @instance - */ - -Document.prototype.isNew; -/** - * Set this property to add additional query filters when Mongoose saves this document and `isNew` is false. - * - * #### Example: - * - * // Make sure `save()` never updates a soft deleted document. - * schema.pre('save', function() { - * this.$where = { isDeleted: false }; - * }); - * - * @api public - * @property $where - * @memberOf Document - * @instance - */ - -Object.defineProperty(Document.prototype, '$where', { - configurable: false, - enumerable: false, - writable: true -}); -/** - * The string version of this documents _id. - * - * #### Note: - * - * This getter exists on all documents by default. The getter can be disabled by setting the `id` [option](/docs/guide.html#id) of its `Schema` to false at construction time. - * - * new Schema({ name: String }, { id: false }); - * - * @api public - * @see Schema options /docs/guide.html#options - * @property id - * @memberOf Document - * @instance - */ - -Document.prototype.id; -/** - * Hash containing current validation $errors. - * - * @api public - * @property $errors - * @memberOf Document - * @instance - */ - -Document.prototype.$errors; -/** - * Hash containing current validation errors. - * - * @api public - * @property errors - * @memberOf Document - * @instance - */ - -Document.prototype.errors; -/** - * A string containing the current operation that Mongoose is executing - * on this document. May be `null`, `'save'`, `'validate'`, or `'remove'`. - * - * #### Example: - * - * const doc = new Model({ name: 'test' }); - * doc.$op; // null - * - * const promise = doc.save(); - * doc.$op; // 'save' - * - * await promise; - * doc.$op; // null - * - * @api public - * @property $op - * @memberOf Document - * @instance - */ - -Object.defineProperty(Document.prototype, '$op', { - get: function get() { - return this.$__.op || null; - }, - set: function set(value) { - this.$__.op = value; - } -}); -/*! - * ignore - */ - -function $__applyDefaults(doc, fields, exclude, hasIncludedChildren, isBeforeSetters, pathsToSkip) { - var paths = Object.keys(doc.$__schema.paths); - var plen = paths.length; - - for (var _i = 0; _i < plen; ++_i) { - var def = void 0; - var curPath = ''; - var p = paths[_i]; - - if (p === '_id' && doc.$__.skipId) { - continue; - } - - var type = doc.$__schema.paths[p]; - var path = type.splitPath(); - var len = path.length; - var included = false; - var doc_ = doc._doc; - - for (var j = 0; j < len; ++j) { - if (doc_ == null) { - break; - } - - var piece = path[j]; - curPath += (!curPath.length ? '' : '.') + piece; - - if (exclude === true) { - if (curPath in fields) { - break; - } - } else if (exclude === false && fields && !included) { - var hasSubpaths = type.$isSingleNested || type.$isMongooseDocumentArray; - - if (curPath in fields || hasSubpaths && hasIncludedChildren != null && hasIncludedChildren[curPath]) { - included = true; - } else if (hasIncludedChildren != null && !hasIncludedChildren[curPath]) { - break; - } - } - - if (j === len - 1) { - if (doc_[piece] !== void 0) { - break; - } - - if (typeof type.defaultValue === 'function') { - if (!type.defaultValue.$runBeforeSetters && isBeforeSetters) { - break; - } - - if (type.defaultValue.$runBeforeSetters && !isBeforeSetters) { - break; - } - } else if (!isBeforeSetters) { - // Non-function defaults should always run **before** setters - continue; - } - - if (pathsToSkip && pathsToSkip[curPath]) { - break; - } - - if (fields && exclude !== null) { - if (exclude === true) { - // apply defaults to all non-excluded fields - if (p in fields) { - continue; - } - - try { - def = type.getDefault(doc, false); - } catch (err) { - doc.invalidate(p, err); - break; - } - - if (typeof def !== 'undefined') { - doc_[piece] = def; - doc.$__.activePaths["default"](p); - } - } else if (included) { - // selected field - try { - def = type.getDefault(doc, false); - } catch (err) { - doc.invalidate(p, err); - break; - } - - if (typeof def !== 'undefined') { - doc_[piece] = def; - doc.$__.activePaths["default"](p); - } - } - } else { - try { - def = type.getDefault(doc, false); - } catch (err) { - doc.invalidate(p, err); - break; - } - - if (typeof def !== 'undefined') { - doc_[piece] = def; - doc.$__.activePaths["default"](p); - } - } - } else { - doc_ = doc_[piece]; - } - } - } -} -/*! - * ignore - */ - - -function $applyDefaultsToNested(val, path, doc) { - if (val == null) { - return; - } - - flattenObjectWithDottedPaths(val); - var paths = Object.keys(doc.$__schema.paths); - var plen = paths.length; - var pathPieces = path.indexOf('.') === -1 ? [path] : path.split('.'); - - for (var _i2 = 0; _i2 < plen; ++_i2) { - var curPath = ''; - var p = paths[_i2]; - - if (!p.startsWith(path + '.')) { - continue; - } - - var type = doc.$__schema.paths[p]; - var pieces = type.splitPath().slice(pathPieces.length); - var len = pieces.length; - - if (type.defaultValue === void 0) { - continue; - } - - var cur = val; - - for (var j = 0; j < len; ++j) { - if (cur == null) { - break; - } - - var piece = pieces[j]; - - if (j === len - 1) { - if (cur[piece] !== void 0) { - break; - } - - try { - var def = type.getDefault(doc, false); - - if (def !== void 0) { - cur[piece] = def; - } - } catch (err) { - doc.invalidate(path + '.' + curPath, err); - break; - } - - break; - } - - curPath += (!curPath.length ? '' : '.') + piece; - cur[piece] = cur[piece] || {}; - cur = cur[piece]; - } - } -} -/** - * Builds the default doc structure - * - * @param {Object} obj - * @param {Object} [fields] - * @param {Boolean} [skipId] - * @api private - * @method $__buildDoc - * @memberOf Document - * @instance - */ - - -Document.prototype.$__buildDoc = function (obj, fields, skipId, exclude, hasIncludedChildren) { - var doc = {}; - var paths = Object.keys(this.$__schema.paths). // Don't build up any paths that are underneath a map, we don't know - // what the keys will be - filter(function (p) { - return !p.includes('$*'); - }); - var plen = paths.length; - var ii = 0; - - for (; ii < plen; ++ii) { - var p = paths[ii]; - - if (p === '_id') { - if (skipId) { - continue; - } - - if (obj && '_id' in obj) { - continue; - } - } - - var path = this.$__schema.paths[p].splitPath(); - var len = path.length; - var last = len - 1; - var curPath = ''; - var doc_ = doc; - var included = false; - - for (var _i3 = 0; _i3 < len; ++_i3) { - var piece = path[_i3]; - - if (!curPath.length) { - curPath = piece; - } else { - curPath += '.' + piece; - } // support excluding intermediary levels - - - if (exclude === true) { - if (curPath in fields) { - break; - } - } else if (exclude === false && fields && !included) { - if (curPath in fields) { - included = true; - } else if (!hasIncludedChildren[curPath]) { - break; - } - } - - if (_i3 < last) { - doc_ = doc_[piece] || (doc_[piece] = {}); - } - } - } - - this._doc = doc; -}; -/*! - * Converts to POJO when you use the document for querying - */ - - -Document.prototype.toBSON = function () { - return this.toObject(internalToObjectOptions); -}; -/** - * Initializes the document without setters or marking anything modified. - * - * Called internally after a document is returned from mongodb. Normally, - * you do **not** need to call this function on your own. - * - * This function triggers `init` [middleware](/docs/middleware.html). - * Note that `init` hooks are [synchronous](/docs/middleware.html#synchronous). - * - * @param {Object} doc document returned by mongo - * @api public - * @memberOf Document - * @instance - */ - - -Document.prototype.init = function (doc, opts, fn) { - if (typeof opts === 'function') { - fn = opts; - opts = null; - } - - this.$__init(doc, opts); - - if (fn) { - fn(null, this); - } - - return this; -}; - -Document.prototype.$init = function () { - return this.constructor.prototype.init.apply(this, arguments); -}; - -Document.prototype.$__init = function (doc, opts) { - this.$isNew = false; - opts = opts || {}; // handle docs with populated paths - // If doc._id is not null or undefined - - if (doc._id != null && opts.populated && opts.populated.length) { - var id = String(doc._id); - - var _iterator2 = _createForOfIteratorHelper(opts.populated), - _step2; - - try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - var item = _step2.value; - - if (item.isVirtual) { - this.$populated(item.path, utils.getValue(item.path, doc), item); - } else { - this.$populated(item.path, item._docs[id], item); - } - - if (item._childDocs == null) { - continue; - } - - var _iterator3 = _createForOfIteratorHelper(item._childDocs), - _step3; - - try { - for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { - var child = _step3.value; - - if (child == null || child.$__ == null) { - continue; - } - - child.$__.parent = this; - } - } catch (err) { - _iterator3.e(err); - } finally { - _iterator3.f(); - } - - item._childDocs = []; - } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); - } - } - - init(this, doc, this._doc, opts); - markArraySubdocsPopulated(this, opts.populated); - this.$emit('init', this); - this.constructor.emit('init', this); - var hasIncludedChildren = this.$__.exclude === false && this.$__.fields ? $__hasIncludedChildren(this.$__.fields) : null; - $__applyDefaults(this, this.$__.fields, this.$__.exclude, hasIncludedChildren, false, this.$__.skipDefaults); - return this; -}; -/*! - * Init helper. - * - * @param {Object} self document instance - * @param {Object} obj raw mongodb doc - * @param {Object} doc object we are initializing - * @api private - */ - - -function init(self, obj, doc, opts, prefix) { - prefix = prefix || ''; - var keys = Object.keys(obj); - var len = keys.length; - var schemaType; - var path; - var i; - var index = 0; - var strict = self.$__.strictMode; - var docSchema = self.$__schema; - - while (index < len) { - _init(index++); - } - - function _init(index) { - i = keys[index]; - path = prefix + i; - schemaType = docSchema.path(path); // Should still work if not a model-level discriminator, but should not be - // necessary. This is *only* to catch the case where we queried using the - // base model and the discriminated model has a projection - - if (docSchema.$isRootDiscriminator && !self.$__isSelected(path)) { - return; - } - - if (!schemaType && utils.isPOJO(obj[i])) { - // assume nested object - if (!doc[i]) { - doc[i] = {}; - - if (!strict && !(i in docSchema.tree) && !(i in docSchema.methods) && !(i in docSchema.virtuals)) { - self[i] = doc[i]; - } - } - - init(self, obj[i], doc[i], opts, path + '.'); - } else if (!schemaType) { - doc[i] = obj[i]; - - if (!strict && !prefix) { - self[i] = obj[i]; - } - } else { - // Retain order when overwriting defaults - if (doc.hasOwnProperty(i) && obj[i] !== void 0) { - delete doc[i]; - } - - if (obj[i] === null) { - doc[i] = schemaType._castNullish(null); - } else if (obj[i] !== undefined) { - var wasPopulated = obj[i].$__ == null ? null : obj[i].$__.wasPopulated; - - if (schemaType && !wasPopulated) { - try { - doc[i] = schemaType.cast(obj[i], self, true); - } catch (e) { - self.invalidate(e.path, new ValidatorError({ - path: e.path, - message: e.message, - type: 'cast', - value: e.value, - reason: e - })); - } - } else { - doc[i] = obj[i]; - } - } // mark as hydrated - - - if (!self.$isModified(path)) { - self.$__.activePaths.init(path); - } - } - } -} -/** - * Sends an update command with this document `_id` as the query selector. - * - * #### Example: - * - * weirdCar.update({$inc: {wheels:1}}, { w: 1 }, callback); - * - * #### Valid options: - * - * - same as in [Model.update](#model_Model.update) - * - * @see Model.update #model_Model.update - * @param {Object} doc - * @param {Object} options - * @param {Function} callback - * @return {Query} - * @api public - * @memberOf Document - * @instance - */ - - -Document.prototype.update = function update() { - var args = Array.prototype.slice.call(arguments); - args.unshift({ - _id: this._id - }); - var query = this.constructor.update.apply(this.constructor, args); - - if (this.$session() != null) { - if (!('session' in query.options)) { - query.options.session = this.$session(); - } - } - - return query; -}; -/** - * Sends an updateOne command with this document `_id` as the query selector. - * - * #### Example: - * - * weirdCar.updateOne({$inc: {wheels:1}}, { w: 1 }, callback); - * - * #### Valid options: - * - * - same as in [Model.updateOne](#model_Model.updateOne) - * - * @see Model.updateOne #model_Model.updateOne - * @param {Object} doc - * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api.html#query_Query-setOptions) - * @param {Object} [options.lean] if truthy, mongoose will return the document as a plain JavaScript object rather than a mongoose document. See [`Query.lean()`](/docs/api.html#query_Query-lean) and the [Mongoose lean tutorial](/docs/tutorials/lean.html). - * @param {Boolean|String} [options.strict] overwrites the schema's [strict mode option](https://mongoosejs.com/docs/guide.html#strict) - * @param {Boolean} [options.timestamps=null] If set to `false` and [schema-level timestamps](/docs/guide.html#timestamps) are enabled, skip timestamps for this update. Note that this allows you to overwrite timestamps. Does nothing if schema-level timestamps are not set. - * @param {Function} callback - * @return {Query} - * @api public - * @memberOf Document - * @instance - */ - - -Document.prototype.updateOne = function updateOne(doc, options, callback) { - var _this2 = this; - - var query = this.constructor.updateOne({ - _id: this._id - }, doc, options); - query.pre(function (cb) { - _this2.constructor._middleware.execPre('updateOne', _this2, [_this2], cb); - }); - query.post(function (cb) { - _this2.constructor._middleware.execPost('updateOne', _this2, [_this2], {}, cb); - }); - - if (this.$session() != null) { - if (!('session' in query.options)) { - query.options.session = this.$session(); - } - } - - if (callback != null) { - return query.exec(callback); - } - - return query; -}; -/** - * Sends a replaceOne command with this document `_id` as the query selector. - * - * #### Valid options: - * - * - same as in [Model.replaceOne](https://mongoosejs.com/docs/api/model.html#model_Model.replaceOne) - * - * @see Model.replaceOne #model_Model.replaceOne - * @param {Object} doc - * @param {Object} options - * @param {Function} callback - * @return {Query} - * @api public - * @memberOf Document - * @instance - */ - - -Document.prototype.replaceOne = function replaceOne() { - var args = Array.prototype.slice.call(arguments); - args.unshift({ - _id: this._id - }); - return this.constructor.replaceOne.apply(this.constructor, args); -}; -/** - * Getter/setter around the session associated with this document. Used to - * automatically set `session` if you `save()` a doc that you got from a - * query with an associated session. - * - * #### Example: - * - * const session = MyModel.startSession(); - * const doc = await MyModel.findOne().session(session); - * doc.$session() === session; // true - * doc.$session(null); - * doc.$session() === null; // true - * - * If this is a top-level document, setting the session propagates to all child - * docs. - * - * @param {ClientSession} [session] overwrite the current session - * @return {ClientSession} - * @method $session - * @api public - * @memberOf Document - */ - - -Document.prototype.$session = function $session(session) { - if (arguments.length === 0) { - if (this.$__.session != null && this.$__.session.hasEnded) { - this.$__.session = null; - return null; - } - - return this.$__.session; - } - - if (session != null && session.hasEnded) { - throw new MongooseError('Cannot set a document\'s session to a session that has ended. Make sure you haven\'t ' + 'called `endSession()` on the session you are passing to `$session()`.'); - } - - if (session == null && this.$__.session == null) { - return; - } - - this.$__.session = session; - - if (!this.$isSubdocument) { - var subdocs = this.$getAllSubdocs(); - - var _iterator4 = _createForOfIteratorHelper(subdocs), - _step4; - - try { - for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { - var child = _step4.value; - child.$session(session); - } - } catch (err) { - _iterator4.e(err); - } finally { - _iterator4.f(); - } - } - - return session; -}; -/** - * Overwrite all values in this document with the values of `obj`, except - * for immutable properties. Behaves similarly to `set()`, except for it - * unsets all properties that aren't in `obj`. - * - * @param {Object} obj the object to overwrite this document with - * @method overwrite - * @name overwrite - * @memberOf Document - * @instance - * @api public - */ - - -Document.prototype.overwrite = function overwrite(obj) { - var keys = Array.from(new Set(Object.keys(this._doc).concat(Object.keys(obj)))); - - for (var _i4 = 0, _keys = keys; _i4 < _keys.length; _i4++) { - var key = _keys[_i4]; - - if (key === '_id') { - continue; - } // Explicitly skip version key - - - if (this.$__schema.options.versionKey && key === this.$__schema.options.versionKey) { - continue; - } - - if (this.$__schema.options.discriminatorKey && key === this.$__schema.options.discriminatorKey) { - continue; - } - - this.$set(key, obj[key]); - } - - return this; -}; -/** - * Alias for `set()`, used internally to avoid conflicts - * - * @param {String|Object} path path or object of key/vals to set - * @param {Any} val the value to set - * @param {Schema|String|Number|Buffer|*} [type] optionally specify a type for "on-the-fly" attributes - * @param {Object} [options] optionally specify options that modify the behavior of the set - * @param {Boolean} [options.merge=false] if true, setting a [nested path](/docs/subdocs.html#subdocuments-versus-nested-paths) will merge existing values rather than overwrite the whole object. So `doc.set('nested', { a: 1, b: 2 })` becomes `doc.set('nested.a', 1); doc.set('nested.b', 2);` - * @method $set - * @name $set - * @memberOf Document - * @instance - * @api public - */ - - -Document.prototype.$set = function $set(path, val, type, options) { - var _this3 = this; - - if (utils.isPOJO(type)) { - options = type; - type = undefined; - } - - var merge = options && options.merge; - var adhoc = type && type !== true; - var constructing = type === true; - var adhocs; - var keys; - var i = 0; - var pathtype; - var key; - var prefix; - var strict = options && 'strict' in options ? options.strict : this.$__.strictMode; - - if (adhoc) { - adhocs = this.$__.adhocPaths || (this.$__.adhocPaths = {}); - adhocs[path] = this.$__schema.interpretAsType(path, type, this.$__schema.options); - } - - if (path == null) { - var _ref = [val, path]; - path = _ref[0]; - val = _ref[1]; - } else if (typeof path !== 'string') { - // new Document({ key: val }) - if (path instanceof Document) { - if (path.$__isNested) { - path = path.toObject(); - } else { - path = path._doc; - } - } - - if (path == null) { - var _ref2 = [val, path]; - path = _ref2[0]; - val = _ref2[1]; - } - - prefix = val ? val + '.' : ''; - keys = getKeysInSchemaOrder(this.$__schema, path); - var len = keys.length; // `_skipMinimizeTopLevel` is because we may have deleted the top-level - // nested key to ensure key order. - - var _skipMinimizeTopLevel = options && options._skipMinimizeTopLevel || false; - - if (len === 0 && _skipMinimizeTopLevel) { - delete options._skipMinimizeTopLevel; - - if (val) { - this.$set(val, {}); - } - - return this; - } - - for (var _i5 = 0; _i5 < len; ++_i5) { - key = keys[_i5]; - var pathName = prefix + key; - pathtype = this.$__schema.pathType(pathName); - var valForKey = path[key]; // On initial set, delete any nested keys if we're going to overwrite - // them to ensure we keep the user's key order. - - if (type === true && !prefix && valForKey != null && pathtype === 'nested' && this._doc[key] != null) { - delete this._doc[key]; // Make sure we set `{}` back even if we minimize re: gh-8565 - - options = Object.assign({}, options, { - _skipMinimizeTopLevel: true - }); - } else { - // Make sure we set `{_skipMinimizeTopLevel: false}` if don't have overwrite: gh-10441 - options = Object.assign({}, options, { - _skipMinimizeTopLevel: false - }); - } - - if (utils.isNonBuiltinObject(valForKey) && pathtype === 'nested') { - $applyDefaultsToNested(path[key], prefix + key, this); - this.$set(prefix + key, path[key], constructing, Object.assign({}, options, { - _skipMarkModified: true - })); - continue; - } else if (strict) { - // Don't overwrite defaults with undefined keys (gh-3981) (gh-9039) - if (constructing && path[key] === void 0 && this.$get(pathName) !== void 0) { - continue; - } - - if (pathtype === 'adhocOrUndefined') { - pathtype = getEmbeddedDiscriminatorPath(this, pathName, { - typeOnly: true - }); - } - - if (pathtype === 'real' || pathtype === 'virtual') { - var p = path[key]; - this.$set(prefix + key, p, constructing, options); - } else if (pathtype === 'nested' && path[key] instanceof Document) { - this.$set(prefix + key, path[key].toObject({ - transform: false - }), constructing, options); - } else if (strict === 'throw') { - if (pathtype === 'nested') { - throw new ObjectExpectedError(key, path[key]); - } else { - throw new StrictModeError(key); - } - } - } else if (path[key] !== void 0) { - this.$set(prefix + key, path[key], constructing, options); - } - } // Ensure all properties are in correct order - - - var orderedDoc = {}; - var orderedKeys = Object.keys(this.$__schema.tree); - - for (var _i6 = 0, _len = orderedKeys.length; _i6 < _len; ++_i6) { - (key = orderedKeys[_i6]) && this._doc.hasOwnProperty(key) && (orderedDoc[key] = undefined); - } - - this._doc = Object.assign(orderedDoc, this._doc); - return this; - } - - var pathType = this.$__schema.pathType(path); - - if (pathType === 'adhocOrUndefined') { - pathType = getEmbeddedDiscriminatorPath(this, path, { - typeOnly: true - }); - } // Assume this is a Mongoose document that was copied into a POJO using - // `Object.assign()` or `{...doc}` - - - val = handleSpreadDoc(val); // if this doc is being constructed we should not trigger getters - - var priorVal = function () { - if (_this3.$__.priorDoc != null) { - return _this3.$__.priorDoc.$__getValue(path); - } - - if (constructing) { - return void 0; - } - - return _this3.$__getValue(path); - }(); - - if (pathType === 'nested' && val) { - if (_typeof(val) === 'object' && val != null) { - if (val.$__ != null) { - val = val.toObject(internalToObjectOptions); - } - - if (val == null) { - this.invalidate(path, new MongooseError.CastError('Object', val, path)); - return this; - } - - var hasInitialVal = this.$__.savedState != null && this.$__.savedState.hasOwnProperty(path); - - if (this.$__.savedState != null && !this.$isNew && !this.$__.savedState.hasOwnProperty(path)) { - var initialVal = this.$__getValue(path); - this.$__.savedState[path] = initialVal; - - var _keys3 = Object.keys(initialVal || {}); - - for (var _i7 = 0, _keys4 = _keys3; _i7 < _keys4.length; _i7++) { - var _key = _keys4[_i7]; - this.$__.savedState[path + '.' + _key] = initialVal[_key]; - } - } - - if (!merge) { - this.$__setValue(path, null); - cleanModifiedSubpaths(this, path); - } else { - return this.$set(val, path, constructing); - } - - var _keys2 = getKeysInSchemaOrder(this.$__schema, val, path); - - this.$__setValue(path, {}); - - var _iterator5 = _createForOfIteratorHelper(_keys2), - _step5; - - try { - for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { - var _key2 = _step5.value; - this.$set(path + '.' + _key2, val[_key2], constructing, options); - } - } catch (err) { - _iterator5.e(err); - } finally { - _iterator5.f(); - } - - if (priorVal != null && utils.deepEqual(hasInitialVal ? this.$__.savedState[path] : priorVal, val)) { - this.unmarkModified(path); - } else { - this.markModified(path); - } - - return this; - } - - this.invalidate(path, new MongooseError.CastError('Object', val, path)); - return this; - } - - var schema; - var parts = path.indexOf('.') === -1 ? [path] : path.split('.'); // Might need to change path for top-level alias - - if (typeof this.$__schema.aliases[parts[0]] === 'string') { - parts[0] = this.$__schema.aliases[parts[0]]; - } - - if (pathType === 'adhocOrUndefined' && strict) { - // check for roots that are Mixed types - var mixed; - - for (i = 0; i < parts.length; ++i) { - var subpath = parts.slice(0, i + 1).join('.'); // If path is underneath a virtual, bypass everything and just set it. - - if (i + 1 < parts.length && this.$__schema.pathType(subpath) === 'virtual') { - mpath.set(path, val, this); - return this; - } - - schema = this.$__schema.path(subpath); - - if (schema == null) { - continue; - } - - if (schema instanceof MixedSchema) { - // allow changes to sub paths of mixed types - mixed = true; - break; - } - } - - if (schema == null) { - // Check for embedded discriminators - schema = getEmbeddedDiscriminatorPath(this, path); - } - - if (!mixed && !schema) { - if (strict === 'throw') { - throw new StrictModeError(path); - } - - return this; - } - } else if (pathType === 'virtual') { - schema = this.$__schema.virtualpath(path); - schema.applySetters(val, this); - return this; - } else { - schema = this.$__path(path); - } // gh-4578, if setting a deeply nested path that doesn't exist yet, create it - - - var cur = this._doc; - var curPath = ''; - - for (i = 0; i < parts.length - 1; ++i) { - cur = cur[parts[i]]; - curPath += (curPath.length !== 0 ? '.' : '') + parts[i]; - - if (!cur) { - this.$set(curPath, {}); // Hack re: gh-5800. If nested field is not selected, it probably exists - // so `MongoServerError: cannot use the part (nested of nested.num) to - // traverse the element ({nested: null})` is not likely. If user gets - // that error, its their fault for now. We should reconsider disallowing - // modifying not selected paths for 6.x - - if (!this.$__isSelected(curPath)) { - this.unmarkModified(curPath); - } - - cur = this.$__getValue(curPath); - } - } - - var pathToMark; // When using the $set operator the path to the field must already exist. - // Else mongodb throws: "LEFT_SUBFIELD only supports Object" - - if (parts.length <= 1) { - pathToMark = path; - } else { - var _len2 = parts.length; - - for (i = 0; i < _len2; ++i) { - var _subpath = parts.slice(0, i + 1).join('.'); - - if (this.$get(_subpath, null, { - getters: false - }) === null) { - pathToMark = _subpath; - break; - } - } - - if (!pathToMark) { - pathToMark = path; - } - } - - if (!schema) { - this.$__set(pathToMark, path, options, constructing, parts, schema, val, priorVal); - - if (pathType === 'nested' && val == null) { - cleanModifiedSubpaths(this, path); - } - - return this; - } // If overwriting a subdocument path, make sure to clear out - // any errors _before_ setting, so new errors that happen - // get persisted. Re: #9080 - - - if (schema.$isSingleNested || schema.$isMongooseArray) { - _markValidSubpaths(this, path); - } - - if (val != null && merge && schema.$isSingleNested) { - if (val instanceof Document) { - val = val.toObject({ - virtuals: false, - transform: false - }); - } - - var _keys5 = Object.keys(val); - - for (var _i8 = 0, _keys6 = _keys5; _i8 < _keys6.length; _i8++) { - var _key3 = _keys6[_i8]; - this.$set(path + '.' + _key3, val[_key3], constructing, options); - } - - return this; - } - - var shouldSet = true; - - try { - // If the user is trying to set a ref path to a document with - // the correct model name, treat it as populated - var refMatches = function () { - if (schema.options == null) { - return false; - } - - if (!(val instanceof Document)) { - return false; - } - - var model = val.constructor; // Check ref - - var ref = schema.options.ref; - - if (ref != null && (ref === model.modelName || ref === model.baseModelName)) { - return true; - } // Check refPath - - - var refPath = schema.options.refPath; - - if (refPath == null) { - return false; - } - - var modelName = val.get(refPath); - return modelName === model.modelName || modelName === model.baseModelName; - }(); - - var didPopulate = false; - - if (refMatches && val instanceof Document && (!val.$__.wasPopulated || utils.deepEqual(val.$__.wasPopulated.value, val._id))) { - var unpopulatedValue = schema && schema.$isSingleNested ? schema.cast(val, this) : val._id; - this.$populated(path, unpopulatedValue, _defineProperty({}, populateModelSymbol, val.constructor)); - val.$__.wasPopulated = { - value: unpopulatedValue - }; - didPopulate = true; - } - - var popOpts; - var typeKey = this.$__schema.options.typeKey; - - if (schema.options && Array.isArray(schema.options[typeKey]) && schema.options[typeKey].length && schema.options[typeKey][0].ref && _isManuallyPopulatedArray(val, schema.options[typeKey][0].ref)) { - popOpts = _defineProperty({}, populateModelSymbol, val[0].constructor); - this.$populated(path, val.map(function (v) { - return v._id; - }), popOpts); - - var _iterator6 = _createForOfIteratorHelper(val), - _step6; - - try { - for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { - var doc = _step6.value; - doc.$__.wasPopulated = { - value: doc._id - }; - } - } catch (err) { - _iterator6.e(err); - } finally { - _iterator6.f(); - } - - didPopulate = true; - } - - if (this.$__schema.singleNestedPaths[path] == null && (!refMatches || !schema.$isSingleNested || !val.$__)) { - // If this path is underneath a single nested schema, we'll call the setter - // later in `$__set()` because we don't take `_doc` when we iterate through - // a single nested doc. That's to make sure we get the correct context. - // Otherwise we would double-call the setter, see gh-7196. - val = schema.applySetters(val, this, false, priorVal, options); - } - - if (Array.isArray(val) && !Array.isArray(schema) && schema.$isMongooseDocumentArray && val.length !== 0 && val[0] != null && val[0].$__ != null && val[0].$__.populated != null) { - var populatedPaths = Object.keys(val[0].$__.populated); - - var _loop = function _loop() { - var populatedPath = _populatedPaths[_i9]; - - _this3.$populated(path + '.' + populatedPath, val.map(function (v) { - return v.$populated(populatedPath); - }), val[0].$__.populated[populatedPath].options); - }; - - for (var _i9 = 0, _populatedPaths = populatedPaths; _i9 < _populatedPaths.length; _i9++) { - _loop(); - } - - didPopulate = true; - } - - if (!didPopulate && this.$__.populated) { - // If this array partially contains populated documents, convert them - // all to ObjectIds re: #8443 - if (Array.isArray(val) && this.$__.populated[path]) { - for (var _i10 = 0; _i10 < val.length; ++_i10) { - if (val[_i10] instanceof Document) { - val.set(_i10, val[_i10]._id, true); - } - } - } - - delete this.$__.populated[path]; - } - - if (val != null && schema.$isSingleNested) { - _checkImmutableSubpaths(val, schema, priorVal); - } - - this.$markValid(path); - } catch (e) { - if (e instanceof MongooseError.StrictModeError && e.isImmutableError) { - this.invalidate(path, e); - } else if (e instanceof MongooseError.CastError) { - this.invalidate(e.path, e); - - if (e.$originalErrorPath) { - this.invalidate(path, new MongooseError.CastError(schema.instance, val, path, e.$originalErrorPath)); - } - } else { - this.invalidate(path, new MongooseError.CastError(schema.instance, val, path, e)); - } - - shouldSet = false; - } - - if (shouldSet) { - var savedState = null; - var savedStatePath = null; - - if (!constructing) { - var _doc = this.$isSubdocument ? this.ownerDocument() : this; - - savedState = _doc.$__.savedState; - savedStatePath = this.$isSubdocument ? this.$__.fullPath + '.' + path : path; - - if (savedState != null) { - var firstDot = savedStatePath.indexOf('.'); - var topLevelPath = firstDot === -1 ? savedStatePath : savedStatePath.slice(0, firstDot); - - if (!savedState.hasOwnProperty(topLevelPath)) { - savedState[topLevelPath] = utils.clone(_doc.$__getValue(topLevelPath)); - } - } - } - - this.$__set(pathToMark, path, options, constructing, parts, schema, val, priorVal); - - if (savedState != null && savedState.hasOwnProperty(savedStatePath) && utils.deepEqual(val, savedState[savedStatePath])) { - this.unmarkModified(path); - } - } - - if (schema.$isSingleNested && (this.isDirectModified(path) || val == null)) { - cleanModifiedSubpaths(this, path); - } - - return this; -}; -/*! - * ignore - */ - - -function _isManuallyPopulatedArray(val, ref) { - if (!Array.isArray(val)) { - return false; - } - - if (val.length === 0) { - return false; - } - - var _iterator7 = _createForOfIteratorHelper(val), - _step7; - - try { - for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) { - var el = _step7.value; - - if (!(el instanceof Document)) { - return false; - } - - var modelName = el.constructor.modelName; - - if (modelName == null) { - return false; - } - - if (el.constructor.modelName != ref && el.constructor.baseModelName != ref) { - return false; - } - } - } catch (err) { - _iterator7.e(err); - } finally { - _iterator7.f(); - } - - return true; -} -/** - * Sets the value of a path, or many paths. - * - * #### Example: - * - * // path, value - * doc.set(path, value) - * - * // object - * doc.set({ - * path : value - * , path2 : { - * path : value - * } - * }) - * - * // on-the-fly cast to number - * doc.set(path, value, Number) - * - * // on-the-fly cast to string - * doc.set(path, value, String) - * - * // changing strict mode behavior - * doc.set(path, value, { strict: false }); - * - * @param {String|Object} path path or object of key/vals to set - * @param {Any} val the value to set - * @param {Schema|String|Number|Buffer|*} [type] optionally specify a type for "on-the-fly" attributes - * @param {Object} [options] optionally specify options that modify the behavior of the set - * @api public - * @method set - * @memberOf Document - * @instance - */ - - -Document.prototype.set = Document.prototype.$set; -/** - * Determine if we should mark this change as modified. - * - * @return {Boolean} - * @api private - * @method $__shouldModify - * @memberOf Document - * @instance - */ - -Document.prototype.$__shouldModify = function (pathToMark, path, options, constructing, parts, schema, val, priorVal) { - if (options && options._skipMarkModified) { - return false; - } - - if (this.$isNew) { - return true; - } // Re: the note about gh-7196, `val` is the raw value without casting or - // setters if the full path is under a single nested subdoc because we don't - // want to double run setters. So don't set it as modified. See gh-7264. - - - if (this.$__schema.singleNestedPaths[path] != null) { - return false; - } - - if (val === void 0 && !this.$__isSelected(path)) { - // when a path is not selected in a query, its initial - // value will be undefined. - return true; - } - - if (val === void 0 && path in this.$__.activePaths.states["default"]) { - // we're just unsetting the default value which was never saved - return false; - } // gh-3992: if setting a populated field to a doc, don't mark modified - // if they have the same _id - - - if (this.$populated(path) && val instanceof Document && deepEqual(val._id, priorVal)) { - return false; - } - - if (!deepEqual(val, priorVal || utils.getValue(path, this))) { - return true; - } - - if (!constructing && val !== null && val !== undefined && path in this.$__.activePaths.states["default"] && deepEqual(val, schema.getDefault(this, constructing))) { - // a path with a default was $unset on the server - // and the user is setting it to the same value again - return true; - } - - return false; -}; -/** - * Handles the actual setting of the value and marking the path modified if appropriate. - * - * @api private - * @method $__set - * @memberOf Document - * @instance - */ - - -Document.prototype.$__set = function (pathToMark, path, options, constructing, parts, schema, val, priorVal) { - Embedded = Embedded || __webpack_require__(1568); - var shouldModify = this.$__shouldModify(pathToMark, path, options, constructing, parts, schema, val, priorVal); - - if (shouldModify) { - this.markModified(pathToMark); // handle directly setting arrays (gh-1126) - - MongooseArray || (MongooseArray = __webpack_require__(1362)); - - if (val && utils.isMongooseArray(val)) { - val._registerAtomic('$set', val); // Update embedded document parent references (gh-5189) - - - if (utils.isMongooseDocumentArray(val)) { - val.forEach(function (item) { - item && item.__parentArray && (item.__parentArray = val); - }); - } - } - } else if (Array.isArray(val) && Array.isArray(priorVal) && utils.isMongooseArray(val) && utils.isMongooseArray(priorVal)) { - val[arrayAtomicsSymbol] = priorVal[arrayAtomicsSymbol]; - val[arrayAtomicsBackupSymbol] = priorVal[arrayAtomicsBackupSymbol]; - - if (utils.isMongooseDocumentArray(val)) { - val.forEach(function (doc) { - doc.isNew = false; - }); - } - } - - var obj = this._doc; - var i = 0; - var l = parts.length; - var cur = ''; - - for (; i < l; i++) { - var next = i + 1; - var last = next === l; - cur += cur ? '.' + parts[i] : parts[i]; - - if (specialProperties.has(parts[i])) { - return; - } - - if (last) { - if (obj instanceof Map) { - obj.set(parts[i], val); - } else { - obj[parts[i]] = val; - } - } else { - if (utils.isPOJO(obj[parts[i]])) { - obj = obj[parts[i]]; - } else if (obj[parts[i]] && obj[parts[i]] instanceof Embedded) { - obj = obj[parts[i]]; - } else if (obj[parts[i]] && !Array.isArray(obj[parts[i]]) && obj[parts[i]].$isSingleNested) { - obj = obj[parts[i]]; - } else if (obj[parts[i]] && Array.isArray(obj[parts[i]])) { - obj = obj[parts[i]]; - } else { - obj[parts[i]] = obj[parts[i]] || {}; - obj = obj[parts[i]]; - } - } - } -}; -/** - * Gets a raw value from a path (no getters) - * - * @param {String} path - * @api private - */ - - -Document.prototype.$__getValue = function (path) { - return utils.getValue(path, this._doc); -}; -/** - * Sets a raw value for a path (no casting, setters, transformations) - * - * @param {String} path - * @param {Object} value - * @api private - */ - - -Document.prototype.$__setValue = function (path, val) { - utils.setValue(path, val, this._doc); - return this; -}; -/** - * Returns the value of a path. - * - * #### Example - * - * // path - * doc.get('age') // 47 - * - * // dynamic casting to a string - * doc.get('age', String) // "47" - * - * @param {String} path - * @param {Schema|String|Number|Buffer|*} [type] optionally specify a type for on-the-fly attributes - * @param {Object} [options] - * @param {Boolean} [options.virtuals=false] Apply virtuals before getting this path - * @param {Boolean} [options.getters=true] If false, skip applying getters and just get the raw value - * @api public - */ - - -Document.prototype.get = function (path, type, options) { - var adhoc; - options = options || {}; - - if (type) { - adhoc = this.$__schema.interpretAsType(path, type, this.$__schema.options); - } - - var schema = this.$__path(path); - - if (schema == null) { - schema = this.$__schema.virtualpath(path); - } - - if (schema instanceof MixedSchema) { - var virtual = this.$__schema.virtualpath(path); - - if (virtual != null) { - schema = virtual; - } - } - - var pieces = path.indexOf('.') === -1 ? [path] : path.split('.'); - var obj = this._doc; - - if (schema instanceof VirtualType) { - return schema.applyGetters(void 0, this); - } // Might need to change path for top-level alias - - - if (typeof this.$__schema.aliases[pieces[0]] === 'string') { - pieces[0] = this.$__schema.aliases[pieces[0]]; - } - - for (var _i11 = 0, l = pieces.length; _i11 < l; _i11++) { - if (obj && obj._doc) { - obj = obj._doc; - } - - if (obj == null) { - obj = void 0; - } else if (obj instanceof Map) { - obj = obj.get(pieces[_i11], { - getters: false - }); - } else if (_i11 === l - 1) { - obj = utils.getValue(pieces[_i11], obj); - } else { - obj = obj[pieces[_i11]]; - } - } - - if (adhoc) { - obj = adhoc.cast(obj); - } - - if (schema != null && options.getters !== false) { - obj = schema.applyGetters(obj, this); - } else if (this.$__schema.nested[path] && options.virtuals) { - // Might need to apply virtuals if this is a nested path - return applyVirtuals(this, utils.clone(obj) || {}, { - path: path - }); - } - - return obj; -}; -/*! - * ignore - */ - - -Document.prototype[getSymbol] = Document.prototype.get; -Document.prototype.$get = Document.prototype.get; -/** - * Returns the schematype for the given `path`. - * - * @param {String} path - * @api private - * @method $__path - * @memberOf Document - * @instance - */ - -Document.prototype.$__path = function (path) { - var adhocs = this.$__.adhocPaths; - var adhocType = adhocs && adhocs.hasOwnProperty(path) ? adhocs[path] : null; - - if (adhocType) { - return adhocType; - } - - return this.$__schema.path(path); -}; -/** - * Marks the path as having pending changes to write to the db. - * - * _Very helpful when using [Mixed](https://mongoosejs.com/docs/schematypes.html#mixed) types._ - * - * #### Example: - * - * doc.mixed.type = 'changed'; - * doc.markModified('mixed.type'); - * doc.save() // changes to mixed.type are now persisted - * - * @param {String} path the path to mark modified - * @param {Document} [scope] the scope to run validators with - * @api public - */ - - -Document.prototype.markModified = function (path, scope) { - this.$__.activePaths.modify(path); - - if (scope != null && !this.$isSubdocument) { - this.$__.pathsToScopes = this.$__pathsToScopes || {}; - this.$__.pathsToScopes[path] = scope; - } -}; -/** - * Clears the modified state on the specified path. - * - * #### Example: - * - * doc.foo = 'bar'; - * doc.unmarkModified('foo'); - * doc.save(); // changes to foo will not be persisted - * - * @param {String} path the path to unmark modified - * @api public - */ - - -Document.prototype.unmarkModified = function (path) { - this.$__.activePaths.init(path); - - if (this.$__.pathsToScopes != null) { - delete this.$__.pathsToScopes[path]; - } -}; -/** - * Don't run validation on this path or persist changes to this path. - * - * #### Example: - * - * doc.foo = null; - * doc.$ignore('foo'); - * doc.save(); // changes to foo will not be persisted and validators won't be run - * - * @memberOf Document - * @instance - * @method $ignore - * @param {String} path the path to ignore - * @api public - */ - - -Document.prototype.$ignore = function (path) { - this.$__.activePaths.ignore(path); -}; -/** - * Returns the list of paths that have been directly modified. A direct - * modified path is a path that you explicitly set, whether via `doc.foo = 'bar'`, - * `Object.assign(doc, { foo: 'bar' })`, or `doc.set('foo', 'bar')`. - * - * A path `a` may be in `modifiedPaths()` but not in `directModifiedPaths()` - * because a child of `a` was directly modified. - * - * #### Example - * const schema = new Schema({ foo: String, nested: { bar: String } }); - * const Model = mongoose.model('Test', schema); - * await Model.create({ foo: 'original', nested: { bar: 'original' } }); - * - * const doc = await Model.findOne(); - * doc.nested.bar = 'modified'; - * doc.directModifiedPaths(); // ['nested.bar'] - * doc.modifiedPaths(); // ['nested', 'nested.bar'] - * - * @return {Array} - * @api public - */ - - -Document.prototype.directModifiedPaths = function () { - return Object.keys(this.$__.activePaths.states.modify); -}; -/** - * Returns true if the given path is nullish or only contains empty objects. - * Useful for determining whether this subdoc will get stripped out by the - * [minimize option](/docs/guide.html#minimize). - * - * #### Example: - * const schema = new Schema({ nested: { foo: String } }); - * const Model = mongoose.model('Test', schema); - * const doc = new Model({}); - * doc.$isEmpty('nested'); // true - * doc.nested.$isEmpty(); // true - * - * doc.nested.foo = 'bar'; - * doc.$isEmpty('nested'); // false - * doc.nested.$isEmpty(); // false - * - * @memberOf Document - * @instance - * @api public - * @method $isEmpty - * @return {Boolean} - */ - - -Document.prototype.$isEmpty = function (path) { - var isEmptyOptions = { - minimize: true, - virtuals: false, - getters: false, - transform: false - }; - - if (arguments.length !== 0) { - var v = this.$get(path); - - if (v == null) { - return true; - } - - if (_typeof(v) !== 'object') { - return false; - } - - if (utils.isPOJO(v)) { - return _isEmpty(v); - } - - return Object.keys(v.toObject(isEmptyOptions)).length === 0; - } - - return Object.keys(this.toObject(isEmptyOptions)).length === 0; -}; - -function _isEmpty(v) { - if (v == null) { - return true; - } - - if (_typeof(v) !== 'object' || Array.isArray(v)) { - return false; - } - - for (var _i12 = 0, _Object$keys = Object.keys(v); _i12 < _Object$keys.length; _i12++) { - var key = _Object$keys[_i12]; - - if (!_isEmpty(v[key])) { - return false; - } - } - - return true; -} -/** - * Returns the list of paths that have been modified. - * - * @param {Object} [options] - * @param {Boolean} [options.includeChildren=false] if true, returns children of modified paths as well. For example, if false, the list of modified paths for `doc.colors = { primary: 'blue' };` will **not** contain `colors.primary`. If true, `modifiedPaths()` will return an array that contains `colors.primary`. - * @return {Array} - * @api public - */ - - -Document.prototype.modifiedPaths = function (options) { - options = options || {}; - var directModifiedPaths = Object.keys(this.$__.activePaths.states.modify); - var result = new Set(); - var i = 0; - var j = 0; - var len = directModifiedPaths.length; - - for (i = 0; i < len; ++i) { - var path = directModifiedPaths[i]; - var parts = parentPaths(path); - var pLen = parts.length; - - for (j = 0; j < pLen; ++j) { - result.add(parts[j]); - } - - if (!options.includeChildren) { - continue; - } - - var ii = 0; - var cur = this.$get(path); - - if (_typeof(cur) === 'object' && cur !== null) { - if (cur._doc) { - cur = cur._doc; - } - - var _len3 = cur.length; - - if (Array.isArray(cur)) { - for (ii = 0; ii < _len3; ++ii) { - var subPath = path + '.' + ii; - - if (!result.has(subPath)) { - result.add(subPath); - - if (cur[ii] != null && cur[ii].$__) { - var modified = cur[ii].modifiedPaths(); - var iii = 0; - var iiiLen = modified.length; - - for (iii = 0; iii < iiiLen; ++iii) { - result.add(subPath + '.' + modified[iii]); - } - } - } - } - } else { - var keys = Object.keys(cur); - var _ii = 0; - var _len4 = keys.length; - - for (_ii = 0; _ii < _len4; ++_ii) { - result.add(path + '.' + keys[_ii]); - } - } - } - } - - return Array.from(result); -}; - -Document.prototype[documentModifiedPaths] = Document.prototype.modifiedPaths; -/** - * Returns true if any of the given paths is modified, else false. If no arguments, returns `true` if any path - * in this document is modified. - * - * If `path` is given, checks if a path or any full path containing `path` as part of its path chain has been modified. - * - * #### Example - * - * doc.set('documents.0.title', 'changed'); - * doc.isModified() // true - * doc.isModified('documents') // true - * doc.isModified('documents.0.title') // true - * doc.isModified('documents otherProp') // true - * doc.isDirectModified('documents') // false - * - * @param {String} [path] optional - * @return {Boolean} - * @api public - */ - -Document.prototype.isModified = function (paths, modifiedPaths) { - if (paths) { - var directModifiedPaths = Object.keys(this.$__.activePaths.states.modify); - - if (directModifiedPaths.length === 0) { - return false; - } - - if (!Array.isArray(paths)) { - paths = paths.indexOf(' ') === -1 ? [paths] : paths.split(' '); - } - - var modified = modifiedPaths || this[documentModifiedPaths](); - var isModifiedChild = paths.some(function (path) { - return !!~modified.indexOf(path); - }); - return isModifiedChild || paths.some(function (path) { - return directModifiedPaths.some(function (mod) { - return mod === path || path.startsWith(mod + '.'); - }); - }); - } - - return this.$__.activePaths.some('modify'); -}; - -Document.prototype.$isModified = Document.prototype.isModified; -Document.prototype[documentIsModified] = Document.prototype.isModified; -/** - * Checks if a path is set to its default. - * - * #### Example - * - * MyModel = mongoose.model('test', { name: { type: String, default: 'Val '} }); - * const m = new MyModel(); - * m.$isDefault('name'); // true - * - * @memberOf Document - * @instance - * @method $isDefault - * @param {String} [path] - * @return {Boolean} - * @api public - */ - -Document.prototype.$isDefault = function (path) { - var _this4 = this; - - if (path == null) { - return this.$__.activePaths.some('default'); - } - - if (typeof path === 'string' && path.indexOf(' ') === -1) { - return this.$__.activePaths.states["default"].hasOwnProperty(path); - } - - var paths = path; - - if (!Array.isArray(paths)) { - paths = paths.split(' '); - } - - return paths.some(function (path) { - return _this4.$__.activePaths.states["default"].hasOwnProperty(path); - }); -}; -/** - * Getter/setter, determines whether the document was removed or not. - * - * #### Example: - * const product = await product.remove(); - * product.$isDeleted(); // true - * product.remove(); // no-op, doesn't send anything to the db - * - * product.$isDeleted(false); - * product.$isDeleted(); // false - * product.remove(); // will execute a remove against the db - * - * - * @param {Boolean} [val] optional, overrides whether mongoose thinks the doc is deleted - * @return {Boolean} whether mongoose thinks this doc is deleted. - * @method $isDeleted - * @memberOf Document - * @instance - * @api public - */ - - -Document.prototype.$isDeleted = function (val) { - if (arguments.length === 0) { - return !!this.$__.isDeleted; - } - - this.$__.isDeleted = !!val; - return this; -}; -/** - * Returns true if `path` was directly set and modified, else false. - * - * #### Example - * - * doc.set('documents.0.title', 'changed'); - * doc.isDirectModified('documents.0.title') // true - * doc.isDirectModified('documents') // false - * - * @param {String|Array} path - * @return {Boolean} - * @api public - */ - - -Document.prototype.isDirectModified = function (path) { - var _this5 = this; - - if (path == null) { - return this.$__.activePaths.some('modify'); - } - - if (typeof path === 'string' && path.indexOf(' ') === -1) { - return this.$__.activePaths.states.modify.hasOwnProperty(path); - } - - var paths = path; - - if (!Array.isArray(paths)) { - paths = paths.split(' '); - } - - return paths.some(function (path) { - return _this5.$__.activePaths.states.modify.hasOwnProperty(path); - }); -}; -/** - * Checks if `path` is in the `init` state, that is, it was set by `Document#init()` and not modified since. - * - * @param {String} path - * @return {Boolean} - * @api public - */ - - -Document.prototype.isInit = function (path) { - var _this6 = this; - - if (path == null) { - return this.$__.activePaths.some('init'); - } - - if (typeof path === 'string' && path.indexOf(' ') === -1) { - return this.$__.activePaths.states.init.hasOwnProperty(path); - } - - var paths = path; - - if (!Array.isArray(paths)) { - paths = paths.split(' '); - } - - return paths.some(function (path) { - return _this6.$__.activePaths.states.init.hasOwnProperty(path); - }); -}; -/** - * Checks if `path` was selected in the source query which initialized this document. - * - * #### Example - * - * const doc = await Thing.findOne().select('name'); - * doc.isSelected('name') // true - * doc.isSelected('age') // false - * - * @param {String|Array} path - * @return {Boolean} - * @api public - */ - - -Document.prototype.isSelected = function isSelected(path) { - var _this7 = this; - - if (this.$__.selected == null) { - return true; - } - - if (!path) { - return false; - } - - if (path === '_id') { - return this.$__.selected._id !== 0; - } - - if (path.indexOf(' ') !== -1) { - path = path.split(' '); - } - - if (Array.isArray(path)) { - return path.some(function (p) { - return _this7.$__isSelected(p); - }); - } - - var paths = Object.keys(this.$__.selected); - var inclusive = null; - - if (paths.length === 1 && paths[0] === '_id') { - // only _id was selected. - return this.$__.selected._id === 0; - } - - for (var _i13 = 0, _paths = paths; _i13 < _paths.length; _i13++) { - var cur = _paths[_i13]; - - if (cur === '_id') { - continue; - } - - if (!isDefiningProjection(this.$__.selected[cur])) { - continue; - } - - inclusive = !!this.$__.selected[cur]; - break; - } - - if (inclusive === null) { - return true; - } - - if (path in this.$__.selected) { - return inclusive; - } - - var pathDot = path + '.'; - - for (var _i14 = 0, _paths2 = paths; _i14 < _paths2.length; _i14++) { - var _cur = _paths2[_i14]; - - if (_cur === '_id') { - continue; - } - - if (_cur.startsWith(pathDot)) { - return inclusive || _cur !== pathDot; - } - - if (pathDot.startsWith(_cur + '.')) { - return inclusive; - } - } - - return !inclusive; -}; - -Document.prototype.$__isSelected = Document.prototype.isSelected; -/** - * Checks if `path` was explicitly selected. If no projection, always returns - * true. - * - * #### Example - * - * Thing.findOne().select('nested.name').exec(function (err, doc) { - * doc.isDirectSelected('nested.name') // true - * doc.isDirectSelected('nested.otherName') // false - * doc.isDirectSelected('nested') // false - * }) - * - * @param {String} path - * @return {Boolean} - * @api public - */ - -Document.prototype.isDirectSelected = function isDirectSelected(path) { - var _this8 = this; - - if (this.$__.selected == null) { - return true; - } - - if (path === '_id') { - return this.$__.selected._id !== 0; - } - - if (path.indexOf(' ') !== -1) { - path = path.split(' '); - } - - if (Array.isArray(path)) { - return path.some(function (p) { - return _this8.isDirectSelected(p); - }); - } - - var paths = Object.keys(this.$__.selected); - var inclusive = null; - - if (paths.length === 1 && paths[0] === '_id') { - // only _id was selected. - return this.$__.selected._id === 0; - } - - for (var _i15 = 0, _paths3 = paths; _i15 < _paths3.length; _i15++) { - var cur = _paths3[_i15]; - - if (cur === '_id') { - continue; - } - - if (!isDefiningProjection(this.$__.selected[cur])) { - continue; - } - - inclusive = !!this.$__.selected[cur]; - break; - } - - if (inclusive === null) { - return true; - } - - if (this.$__.selected.hasOwnProperty(path)) { - return inclusive; - } - - return !inclusive; -}; -/** - * Executes registered validation rules for this document. - * - * #### Note: - * - * This method is called `pre` save and if a validation rule is violated, [save](#model_Model-save) is aborted and the error is returned to your `callback`. - * - * #### Example: - * - * doc.validate(function (err) { - * if (err) handleError(err); - * else // validation passed - * }); - * - * @param {Array|String} [pathsToValidate] list of paths to validate. If set, Mongoose will validate only the modified paths that are in the given list. - * @param {Object} [options] internal options - * @param {Boolean} [options.validateModifiedOnly=false] if `true` mongoose validates only modified paths. - * @param {Array|string} [options.pathsToSkip] list of paths to skip. If set, Mongoose will validate every modified path that is not in this list. - * @param {Function} [callback] optional callback called after validation completes, passing an error if one occurred - * @return {Promise} Promise - * @api public - */ - - -Document.prototype.validate = function (pathsToValidate, options, callback) { - var _this9 = this; - - var parallelValidate; - this.$op = 'validate'; - - if (this.$isSubdocument != null) {// Skip parallel validate check for subdocuments - } else if (this.$__.validating) { - parallelValidate = new ParallelValidateError(this, { - parentStack: options && options.parentStack, - conflictStack: this.$__.validating.stack - }); - } else { - this.$__.validating = new ParallelValidateError(this, { - parentStack: options && options.parentStack - }); - } - - if (arguments.length === 1) { - if (_typeof(arguments[0]) === 'object' && !Array.isArray(arguments[0])) { - options = arguments[0]; - callback = null; - pathsToValidate = null; - } else if (typeof arguments[0] === 'function') { - callback = arguments[0]; - options = null; - pathsToValidate = null; - } - } else if (typeof pathsToValidate === 'function') { - callback = pathsToValidate; - options = null; - pathsToValidate = null; - } else if (typeof options === 'function') { - callback = options; - options = pathsToValidate; - pathsToValidate = null; - } - - if (options && typeof options.pathsToSkip === 'string') { - var isOnePathOnly = options.pathsToSkip.indexOf(' ') === -1; - options.pathsToSkip = isOnePathOnly ? [options.pathsToSkip] : options.pathsToSkip.split(' '); - } - - return promiseOrCallback(callback, function (cb) { - if (parallelValidate != null) { - return cb(parallelValidate); - } - - _this9.$__validate(pathsToValidate, options, function (error) { - _this9.$op = null; - _this9.$__.validating = null; - cb(error); - }); - }, this.constructor.events); -}; - -Document.prototype.$validate = Document.prototype.validate; -/*! - * ignore - */ - -function _evaluateRequiredFunctions(doc) { - var requiredFields = Object.keys(doc.$__.activePaths.states.require); - var i = 0; - var len = requiredFields.length; - - for (i = 0; i < len; ++i) { - var path = requiredFields[i]; - var p = doc.$__schema.path(path); - - if (p != null && typeof p.originalRequiredValue === 'function') { - doc.$__.cachedRequired = doc.$__.cachedRequired || {}; - - try { - doc.$__.cachedRequired[path] = p.originalRequiredValue.call(doc, doc); - } catch (err) { - doc.invalidate(path, err); - } - } - } -} -/*! - * ignore - */ - - -function _getPathsToValidate(doc) { - var skipSchemaValidators = {}; - - _evaluateRequiredFunctions(doc); // only validate required fields when necessary - - - var paths = new Set(Object.keys(doc.$__.activePaths.states.require).filter(function (path) { - if (!doc.$__isSelected(path) && !doc.$isModified(path)) { - return false; - } - - if (doc.$__.cachedRequired != null && path in doc.$__.cachedRequired) { - return doc.$__.cachedRequired[path]; - } - - return true; - })); - Object.keys(doc.$__.activePaths.states.init).forEach(addToPaths); - Object.keys(doc.$__.activePaths.states.modify).forEach(addToPaths); - Object.keys(doc.$__.activePaths.states["default"]).forEach(addToPaths); - - function addToPaths(p) { - paths.add(p); - } - - var subdocs = doc.$getAllSubdocs(); - var modifiedPaths = doc.modifiedPaths(); - - var _iterator8 = _createForOfIteratorHelper(subdocs), - _step8; - - try { - for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) { - var subdoc = _step8.value; - - if (subdoc.$basePath) { - // Remove child paths for now, because we'll be validating the whole - // subdoc - var fullPathToSubdoc = subdoc.$__fullPathWithIndexes(); - - var _iterator13 = _createForOfIteratorHelper(paths), - _step13; - - try { - for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) { - var p = _step13.value; - - if (p == null || p.startsWith(fullPathToSubdoc + '.')) { - paths["delete"](p); - } - } - } catch (err) { - _iterator13.e(err); - } finally { - _iterator13.f(); - } - - if (doc.$isModified(fullPathToSubdoc, modifiedPaths) && !doc.isDirectModified(fullPathToSubdoc) && !doc.$isDefault(fullPathToSubdoc)) { - paths.add(fullPathToSubdoc); - skipSchemaValidators[fullPathToSubdoc] = true; - } - } - } - } catch (err) { - _iterator8.e(err); - } finally { - _iterator8.f(); - } - - var _iterator9 = _createForOfIteratorHelper(paths), - _step9; - - try { - for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) { - var path = _step9.value; - - var _pathType = doc.$__schema.path(path); - - if (!_pathType) { - continue; - } - - if (_pathType.$isMongooseDocumentArray) { - var _iterator14 = _createForOfIteratorHelper(paths), - _step14; - - try { - for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) { - var _p = _step14.value; - - if (_p == null || _p.startsWith(_pathType.path + '.')) { - paths["delete"](_p); - } - } - } catch (err) { - _iterator14.e(err); - } finally { - _iterator14.f(); - } - } // Optimization: if primitive path with no validators, or array of primitives - // with no validators, skip validating this path entirely. - - - if (!_pathType.caster && _pathType.validators.length === 0) { - paths["delete"](path); - } else if (_pathType.$isMongooseArray && !_pathType.$isMongooseDocumentArray && // Skip document arrays... - !_pathType.$embeddedSchemaType.$isMongooseArray && // and arrays of arrays - _pathType.validators.length === 0 && // and arrays with top-level validators - _pathType.$embeddedSchemaType.validators.length === 0) { - paths["delete"](path); - } - } // from here on we're not removing items from paths - // gh-661: if a whole array is modified, make sure to run validation on all - // the children as well - - } catch (err) { - _iterator9.e(err); - } finally { - _iterator9.f(); - } - - var _iterator10 = _createForOfIteratorHelper(paths), - _step10; - - try { - for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) { - var _path2 = _step10.value; - - var _pathType2 = doc.$__schema.path(_path2); - - if (!_pathType2) { - continue; - } - - if (!_pathType2.$isMongooseArray || // To avoid potential performance issues, skip doc arrays whose children - // are not required. `getPositionalPathType()` may be slow, so avoid - // it unless we have a case of #6364 - !Array.isArray(_pathType2) && _pathType2.$isMongooseDocumentArray && !(_pathType2 && _pathType2.schemaOptions && _pathType2.schemaOptions.required)) { - continue; - } // gh-11380: optimization. If the array isn't a document array and there's no validators - // on the array type, there's no need to run validation on the individual array elements. - - - if (_pathType2.$isMongooseArray && !_pathType2.$isMongooseDocumentArray && // Skip document arrays... - !_pathType2.$embeddedSchemaType.$isMongooseArray && // and arrays of arrays - _pathType2.$embeddedSchemaType.validators.length === 0) { - continue; - } - - var val = doc.$__getValue(_path2); - - _pushNestedArrayPaths(val, paths, _path2); - } - } catch (err) { - _iterator10.e(err); - } finally { - _iterator10.f(); - } - - function _pushNestedArrayPaths(val, paths, path) { - if (val != null) { - var numElements = val.length; - - for (var j = 0; j < numElements; ++j) { - if (Array.isArray(val[j])) { - _pushNestedArrayPaths(val[j], paths, path + '.' + j); - } else { - paths.add(path + '.' + j); - } - } - } - } - - var flattenOptions = { - skipArrays: true - }; - - var _iterator11 = _createForOfIteratorHelper(paths), - _step11; - - try { - for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) { - var pathToCheck = _step11.value; - - if (doc.$__schema.nested[pathToCheck]) { - var _v = doc.$__getValue(pathToCheck); - - if (isMongooseObject(_v)) { - _v = _v.toObject({ - transform: false - }); - } - - var flat = flatten(_v, pathToCheck, flattenOptions, doc.$__schema); - Object.keys(flat).forEach(addToPaths); - } - } - } catch (err) { - _iterator11.e(err); - } finally { - _iterator11.f(); - } - - var _iterator12 = _createForOfIteratorHelper(paths), - _step12; - - try { - for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) { - var _path3 = _step12.value; - - // Single nested paths (paths embedded under single nested subdocs) will - // be validated on their own when we call `validate()` on the subdoc itself. - // Re: gh-8468 - if (doc.$__schema.singleNestedPaths.hasOwnProperty(_path3)) { - paths["delete"](_path3); - continue; - } - - var _pathType3 = doc.$__schema.path(_path3); - - if (!_pathType3 || !_pathType3.$isSchemaMap) { - continue; - } - - var _val = doc.$__getValue(_path3); - - if (_val == null) { - continue; - } - - var _iterator15 = _createForOfIteratorHelper(_val.keys()), - _step15; - - try { - for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) { - var key = _step15.value; - paths.add(_path3 + '.' + key); - } - } catch (err) { - _iterator15.e(err); - } finally { - _iterator15.f(); - } - } - } catch (err) { - _iterator12.e(err); - } finally { - _iterator12.f(); - } - - paths = Array.from(paths); - return [paths, skipSchemaValidators]; -} -/*! - * ignore - */ - - -Document.prototype.$__validate = function (pathsToValidate, options, callback) { - var _this10 = this; - - if (typeof pathsToValidate === 'function') { - callback = pathsToValidate; - options = null; - pathsToValidate = null; - } else if (typeof options === 'function') { - callback = options; - options = null; - } - - var hasValidateModifiedOnlyOption = options && _typeof(options) === 'object' && 'validateModifiedOnly' in options; - var pathsToSkip = options && options.pathsToSkip || null; - var shouldValidateModifiedOnly; - - if (hasValidateModifiedOnlyOption) { - shouldValidateModifiedOnly = !!options.validateModifiedOnly; - } else { - shouldValidateModifiedOnly = this.$__schema.options.validateModifiedOnly; - } - - var _this = this; - - var _complete = function _complete() { - var validationError = _this10.$__.validationError; - _this10.$__.validationError = null; - _this10.$__.validating = null; - - if (shouldValidateModifiedOnly && validationError != null) { - // Remove any validation errors that aren't from modified paths - var errors = Object.keys(validationError.errors); - - for (var _i16 = 0, _errors = errors; _i16 < _errors.length; _i16++) { - var errPath = _errors[_i16]; - - if (!_this10.$isModified(errPath)) { - delete validationError.errors[errPath]; - } - } - - if (Object.keys(validationError.errors).length === 0) { - validationError = void 0; - } - } - - _this10.$__.cachedRequired = {}; - - _this10.$emit('validate', _this); - - _this10.constructor.emit('validate', _this); - - if (validationError) { - for (var key in validationError.errors) { - // Make sure cast errors persist - if (!_this10[documentArrayParent] && validationError.errors[key] instanceof MongooseError.CastError) { - _this10.invalidate(key, validationError.errors[key]); - } - } - - return validationError; - } - }; // only validate required fields when necessary - - - var pathDetails = _getPathsToValidate(this); - - var paths = shouldValidateModifiedOnly ? pathDetails[0].filter(function (path) { - return _this10.$isModified(path); - }) : pathDetails[0]; - var skipSchemaValidators = pathDetails[1]; - - if (typeof pathsToValidate === 'string') { - pathsToValidate = pathsToValidate.split(' '); - } - - if (Array.isArray(pathsToValidate)) { - paths = _handlePathsToValidate(paths, pathsToValidate); - } else if (pathsToSkip) { - paths = _handlePathsToSkip(paths, pathsToSkip); - } - - if (paths.length === 0) { - return immediate(function () { - var error = _complete(); - - if (error) { - return _this.$__schema.s.hooks.execPost('validate:error', _this, [_this], { - error: error - }, function (error) { - callback(error); - }); - } - - callback(null, _this); - }); - } - - var validated = {}; - var total = 0; - - var _iterator16 = _createForOfIteratorHelper(paths), - _step16; - - try { - for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) { - var path = _step16.value; - validatePath(path); - } - } catch (err) { - _iterator16.e(err); - } finally { - _iterator16.f(); - } - - function validatePath(path) { - if (path == null || validated[path]) { - return; - } - - validated[path] = true; - total++; - immediate(function () { - var schemaType = _this.$__schema.path(path); - - if (!schemaType) { - return --total || complete(); - } // If user marked as invalid or there was a cast error, don't validate - - - if (!_this.$isValid(path)) { - --total || complete(); - return; - } // If setting a path under a mixed path, avoid using the mixed path validator (gh-10141) - - - if (schemaType[schemaMixedSymbol] != null && path !== schemaType.path) { - return --total || complete(); - } - - var val = _this.$__getValue(path); // If you `populate()` and get back a null value, required validators - // shouldn't fail (gh-8018). We should always fall back to the populated - // value. - - - var pop; - - if (pop = _this.$populated(path)) { - val = pop; - } else if (val != null && val.$__ != null && val.$__.wasPopulated) { - // Array paths, like `somearray.1`, do not show up as populated with `$populated()`, - // so in that case pull out the document's id - val = val._id; - } - - var scope = _this.$__.pathsToScopes != null && path in _this.$__.pathsToScopes ? _this.$__.pathsToScopes[path] : _this; - var doValidateOptions = { - skipSchemaValidators: skipSchemaValidators[path], - path: path, - validateModifiedOnly: shouldValidateModifiedOnly - }; - schemaType.doValidate(val, function (err) { - if (err) { - var isSubdoc = schemaType.$isSingleNested || schemaType.$isArraySubdocument || schemaType.$isMongooseDocumentArray; - - if (isSubdoc && err instanceof ValidationError) { - return --total || complete(); - } - - _this.invalidate(path, err, undefined, true); - } - - --total || complete(); - }, scope, doValidateOptions); - }); - } - - function complete() { - var error = _complete(); - - if (error) { - return _this.$__schema.s.hooks.execPost('validate:error', _this, [_this], { - error: error - }, function (error) { - callback(error); - }); - } - - callback(null, _this); - } -}; -/*! - * ignore - */ - - -function _handlePathsToValidate(paths, pathsToValidate) { - var _pathsToValidate = new Set(pathsToValidate); - - var parentPaths = new Map([]); - - var _iterator17 = _createForOfIteratorHelper(pathsToValidate), - _step17; - - try { - for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) { - var path = _step17.value; - - if (path.indexOf('.') === -1) { - continue; - } - - var pieces = path.split('.'); - var cur = pieces[0]; - - for (var _i17 = 1; _i17 < pieces.length; ++_i17) { - // Since we skip subpaths under single nested subdocs to - // avoid double validation, we need to add back the - // single nested subpath if the user asked for it (gh-8626) - parentPaths.set(cur, path); - cur = cur + '.' + pieces[_i17]; - } - } - } catch (err) { - _iterator17.e(err); - } finally { - _iterator17.f(); - } - - var ret = []; - - var _iterator18 = _createForOfIteratorHelper(paths), - _step18; - - try { - for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) { - var _path4 = _step18.value; - - if (_pathsToValidate.has(_path4)) { - ret.push(_path4); - } else if (parentPaths.has(_path4)) { - ret.push(parentPaths.get(_path4)); - } - } - } catch (err) { - _iterator18.e(err); - } finally { - _iterator18.f(); - } - - return ret; -} -/*! - * ignore - */ - - -function _handlePathsToSkip(paths, pathsToSkip) { - pathsToSkip = new Set(pathsToSkip); - paths = paths.filter(function (p) { - return !pathsToSkip.has(p); - }); - return paths; -} -/** - * Executes registered validation rules (skipping asynchronous validators) for this document. - * - * #### Note: - * - * This method is useful if you need synchronous validation. - * - * #### Example: - * - * const err = doc.validateSync(); - * if (err) { - * handleError(err); - * } else { - * // validation passed - * } - * - * @param {Array|string} pathsToValidate only validate the given paths - * @param {Object} [options] options for validation - * @param {Boolean} [options.validateModifiedOnly=false] If `true`, Mongoose will only validate modified paths, as opposed to modified paths and `required` paths. - * @param {Array|string} [options.pathsToSkip] list of paths to skip. If set, Mongoose will validate every modified path that is not in this list. - * @return {ValidationError|undefined} ValidationError if there are errors during validation, or undefined if there is no error. - * @api public - */ - - -Document.prototype.validateSync = function (pathsToValidate, options) { - var _this11 = this; - - var _this = this; - - if (arguments.length === 1 && _typeof(arguments[0]) === 'object' && !Array.isArray(arguments[0])) { - options = arguments[0]; - pathsToValidate = null; - } - - var hasValidateModifiedOnlyOption = options && _typeof(options) === 'object' && 'validateModifiedOnly' in options; - var shouldValidateModifiedOnly; - - if (hasValidateModifiedOnlyOption) { - shouldValidateModifiedOnly = !!options.validateModifiedOnly; - } else { - shouldValidateModifiedOnly = this.$__schema.options.validateModifiedOnly; - } - - var pathsToSkip = options && options.pathsToSkip; - - if (typeof pathsToValidate === 'string') { - var isOnePathOnly = pathsToValidate.indexOf(' ') === -1; - pathsToValidate = isOnePathOnly ? [pathsToValidate] : pathsToValidate.split(' '); - } else if (typeof pathsToSkip === 'string' && pathsToSkip.indexOf(' ') !== -1) { - pathsToSkip = pathsToSkip.split(' '); - } // only validate required fields when necessary - - - var pathDetails = _getPathsToValidate(this); - - var paths = shouldValidateModifiedOnly ? pathDetails[0].filter(function (path) { - return _this11.$isModified(path); - }) : pathDetails[0]; - var skipSchemaValidators = pathDetails[1]; - - if (Array.isArray(pathsToValidate)) { - paths = _handlePathsToValidate(paths, pathsToValidate); - } else if (Array.isArray(pathsToSkip)) { - paths = _handlePathsToSkip(paths, pathsToSkip); - } - - var validating = {}; - - for (var _i18 = 0, len = paths.length; _i18 < len; ++_i18) { - var path = paths[_i18]; - - if (validating[path]) { - continue; - } - - validating[path] = true; - - var p = _this.$__schema.path(path); - - if (!p) { - continue; - } - - if (!_this.$isValid(path)) { - continue; - } - - var val = _this.$__getValue(path); - - var _err = p.doValidateSync(val, _this, { - skipSchemaValidators: skipSchemaValidators[path], - path: path, - validateModifiedOnly: shouldValidateModifiedOnly - }); - - if (_err) { - var isSubdoc = p.$isSingleNested || p.$isArraySubdocument || p.$isMongooseDocumentArray; - - if (isSubdoc && _err instanceof ValidationError) { - continue; - } - - _this.invalidate(path, _err, undefined, true); - } - } - - var err = _this.$__.validationError; - _this.$__.validationError = undefined; - - _this.$emit('validate', _this); - - _this.constructor.emit('validate', _this); - - if (err) { - for (var key in err.errors) { - // Make sure cast errors persist - if (err.errors[key] instanceof MongooseError.CastError) { - _this.invalidate(key, err.errors[key]); - } - } - } - - return err; -}; -/** - * Marks a path as invalid, causing validation to fail. - * - * The `errorMsg` argument will become the message of the `ValidationError`. - * - * The `value` argument (if passed) will be available through the `ValidationError.value` property. - * - * doc.invalidate('size', 'must be less than 20', 14); - - * doc.validate(function (err) { - * console.log(err) - * // prints - * { message: 'Validation failed', - * name: 'ValidationError', - * errors: - * { size: - * { message: 'must be less than 20', - * name: 'ValidatorError', - * path: 'size', - * type: 'user defined', - * value: 14 } } } - * }) - * - * @param {String} path the field to invalidate. For array elements, use the `array.i.field` syntax, where `i` is the 0-based index in the array. - * @param {String|Error} errorMsg the error which states the reason `path` was invalid - * @param {Object|String|Number|any} value optional invalid value - * @param {String} [kind] optional `kind` property for the error - * @return {ValidationError} the current ValidationError, with all currently invalidated paths - * @api public - */ - - -Document.prototype.invalidate = function (path, err, val, kind) { - if (!this.$__.validationError) { - this.$__.validationError = new ValidationError(this); - } - - if (this.$__.validationError.errors[path]) { - return; - } - - if (!err || typeof err === 'string') { - err = new ValidatorError({ - path: path, - message: err, - type: kind || 'user defined', - value: val - }); - } - - if (this.$__.validationError === err) { - return this.$__.validationError; - } - - this.$__.validationError.addError(path, err); - return this.$__.validationError; -}; -/** - * Marks a path as valid, removing existing validation errors. - * - * @param {String} path the field to mark as valid - * @api public - * @memberOf Document - * @instance - * @method $markValid - */ - - -Document.prototype.$markValid = function (path) { - if (!this.$__.validationError || !this.$__.validationError.errors[path]) { - return; - } - - delete this.$__.validationError.errors[path]; - - if (Object.keys(this.$__.validationError.errors).length === 0) { - this.$__.validationError = null; - } -}; -/*! - * ignore - */ - - -function _markValidSubpaths(doc, path) { - if (!doc.$__.validationError) { - return; - } - - var keys = Object.keys(doc.$__.validationError.errors); - - for (var _i19 = 0, _keys7 = keys; _i19 < _keys7.length; _i19++) { - var key = _keys7[_i19]; - - if (key.startsWith(path + '.')) { - delete doc.$__.validationError.errors[key]; - } - } - - if (Object.keys(doc.$__.validationError.errors).length === 0) { - doc.$__.validationError = null; - } -} -/*! - * ignore - */ - - -function _checkImmutableSubpaths(subdoc, schematype, priorVal) { - var schema = schematype.schema; - - if (schema == null) { - return; - } - - for (var _i20 = 0, _Object$keys2 = Object.keys(schema.paths); _i20 < _Object$keys2.length; _i20++) { - var key = _Object$keys2[_i20]; - var path = schema.paths[key]; - - if (path.$immutableSetter == null) { - continue; - } - - var oldVal = priorVal == null ? void 0 : priorVal.$__getValue(key); // Calling immutableSetter with `oldVal` even though it expects `newVal` - // is intentional. That's because `$immutableSetter` compares its param - // to the current value. - - path.$immutableSetter.call(subdoc, oldVal); - } -} -/** - * Saves this document by inserting a new document into the database if [document.isNew](/docs/api.html#document_Document-isNew) is `true`, - * or sends an [updateOne](/docs/api.html#document_Document-updateOne) operation **only** with the modifications to the database, it does not replace the whole document in the latter case. - * - * #### Example: - * - * product.sold = Date.now(); - * product = await product.save(); - * - * If save is successful, the returned promise will fulfill with the document - * saved. - * - * #### Example: - * - * const newProduct = await product.save(); - * newProduct === product; // true - * - * @param {Object} [options] options optional options - * @param {Session} [options.session=null] the [session](https://docs.mongodb.com/manual/reference/server-sessions/) associated with this save operation. If not specified, defaults to the [document's associated session](api.html#document_Document-$session). - * @param {Object} [options.safe] (DEPRECATED) overrides [schema's safe option](https://mongoosejs.com//docs/guide.html#safe). Use the `w` option instead. - * @param {Boolean} [options.validateBeforeSave] set to false to save without validating. - * @param {Boolean} [options.validateModifiedOnly=false] If `true`, Mongoose will only validate modified paths, as opposed to modified paths and `required` paths. - * @param {Number|String} [options.w] set the [write concern](https://docs.mongodb.com/manual/reference/write-concern/#w-option). Overrides the [schema-level `writeConcern` option](/docs/guide.html#writeConcern) - * @param {Boolean} [options.j] set to true for MongoDB to wait until this `save()` has been [journaled before resolving the returned promise](https://docs.mongodb.com/manual/reference/write-concern/#j-option). Overrides the [schema-level `writeConcern` option](/docs/guide.html#writeConcern) - * @param {Number} [options.wtimeout] sets a [timeout for the write concern](https://docs.mongodb.com/manual/reference/write-concern/#wtimeout). Overrides the [schema-level `writeConcern` option](/docs/guide.html#writeConcern). - * @param {Boolean} [options.checkKeys=true] the MongoDB driver prevents you from saving keys that start with '$' or contain '.' by default. Set this option to `false` to skip that check. See [restrictions on field names](https://docs.mongodb.com/manual/reference/limits/#Restrictions-on-Field-Names) - * @param {Boolean} [options.timestamps=true] if `false` and [timestamps](./guide.html#timestamps) are enabled, skip timestamps for this `save()`. - * @param {Function} [fn] optional callback - * @method save - * @memberOf Document - * @instance - * @throws {DocumentNotFoundError} if this [save updates an existing document](api.html#document_Document-isNew) but the document doesn't exist in the database. For example, you will get this error if the document is [deleted between when you retrieved the document and when you saved it](documents.html#updating). - * @return {Promise|undefined} Returns undefined if used with callback or a Promise otherwise. - * @api public - * @see middleware https://mongoosejs.com/docs/middleware.html - */ - -/** - * Checks if a path is invalid - * - * @param {String|Array} path the field to check - * @method $isValid - * @memberOf Document - * @instance - * @api private - */ - - -Document.prototype.$isValid = function (path) { - var _this12 = this; - - if (this.$__.validationError == null || Object.keys(this.$__.validationError.errors).length === 0) { - return true; - } - - if (path == null) { - return false; - } - - if (path.indexOf(' ') !== -1) { - path = path.split(' '); - } - - if (Array.isArray(path)) { - return path.some(function (p) { - return _this12.$__.validationError.errors[p] == null; - }); - } - - return this.$__.validationError.errors[path] == null; -}; -/** - * Resets the internal modified state of this document. - * - * @api private - * @return {Document} - * @method $__reset - * @memberOf Document - * @instance - */ - - -Document.prototype.$__reset = function reset() { - var _this = this; // Skip for subdocuments - - - var subdocs = this.$parent() === this ? this.$getAllSubdocs() : []; - var resetArrays = new Set(); - - var _iterator19 = _createForOfIteratorHelper(subdocs), - _step19; - - try { - for (_iterator19.s(); !(_step19 = _iterator19.n()).done;) { - var subdoc = _step19.value; - var fullPathWithIndexes = subdoc.$__fullPathWithIndexes(); - - if (this.isModified(fullPathWithIndexes) || isParentInit(fullPathWithIndexes)) { - subdoc.$__reset(); - - if (subdoc.$isDocumentArrayElement) { - if (!resetArrays.has(subdoc.parentArray())) { - var array = subdoc.parentArray(); - this.$__.activePaths.clearPath(fullPathWithIndexes.replace(/\.\d+$/, '').slice(-subdoc.$basePath - 1)); - array[arrayAtomicsBackupSymbol] = array[arrayAtomicsSymbol]; - array[arrayAtomicsSymbol] = {}; - resetArrays.add(array); - } - } else { - if (subdoc.$parent() === this) { - this.$__.activePaths.clearPath(subdoc.$basePath); - } else if (subdoc.$parent() != null && subdoc.$parent().$isSubdocument) { - // If map path underneath subdocument, may end up with a case where - // map path is modified but parent still needs to be reset. See gh-10295 - subdoc.$parent().$__reset(); - } - } - } - } - } catch (err) { - _iterator19.e(err); - } finally { - _iterator19.f(); - } - - function isParentInit(path) { - path = path.indexOf('.') === -1 ? [path] : path.split('.'); - var cur = ''; - - for (var _i21 = 0; _i21 < path.length; ++_i21) { - cur += (cur.length ? '.' : '') + path[_i21]; - - if (_this.$__.activePaths[cur] === 'init') { - return true; - } - } - - return false; - } // clear atomics - - - this.$__dirty().forEach(function (dirt) { - var type = dirt.value; - - if (type && type[arrayAtomicsSymbol]) { - type[arrayAtomicsBackupSymbol] = type[arrayAtomicsSymbol]; - type[arrayAtomicsSymbol] = {}; - } - }); - this.$__.backup = {}; - this.$__.backup.activePaths = { - modify: Object.assign({}, this.$__.activePaths.states.modify), - "default": Object.assign({}, this.$__.activePaths.states["default"]) - }; - this.$__.backup.validationError = this.$__.validationError; - this.$__.backup.errors = this.$errors; // Clear 'dirty' cache - - this.$__.activePaths.clear('modify'); - this.$__.activePaths.clear('default'); - this.$__.validationError = undefined; - this.$errors = undefined; - _this = this; - this.$__schema.requiredPaths().forEach(function (path) { - _this.$__.activePaths.require(path); - }); - return this; -}; -/*! - * ignore - */ - - -Document.prototype.$__undoReset = function $__undoReset() { - if (this.$__.backup == null || this.$__.backup.activePaths == null) { - return; - } - - this.$__.activePaths.states.modify = this.$__.backup.activePaths.modify; - this.$__.activePaths.states["default"] = this.$__.backup.activePaths["default"]; - this.$__.validationError = this.$__.backup.validationError; - this.$errors = this.$__.backup.errors; - - var _iterator20 = _createForOfIteratorHelper(this.$__dirty()), - _step20; - - try { - for (_iterator20.s(); !(_step20 = _iterator20.n()).done;) { - var dirt = _step20.value; - var type = dirt.value; - - if (type && type[arrayAtomicsSymbol] && type[arrayAtomicsBackupSymbol]) { - type[arrayAtomicsSymbol] = type[arrayAtomicsBackupSymbol]; - } - } - } catch (err) { - _iterator20.e(err); - } finally { - _iterator20.f(); - } - - var _iterator21 = _createForOfIteratorHelper(this.$getAllSubdocs()), - _step21; - - try { - for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) { - var subdoc = _step21.value; - subdoc.$__undoReset(); - } - } catch (err) { - _iterator21.e(err); - } finally { - _iterator21.f(); - } -}; -/** - * Returns this documents dirty paths / vals. - * - * @api private - * @method $__dirty - * @memberOf Document - * @instance - */ - - -Document.prototype.$__dirty = function () { - var _this = this; - - var all = this.$__.activePaths.map('modify', function (path) { - return { - path: path, - value: _this.$__getValue(path), - schema: _this.$__path(path) - }; - }); // gh-2558: if we had to set a default and the value is not undefined, - // we have to save as well - - all = all.concat(this.$__.activePaths.map('default', function (path) { - if (path === '_id' || _this.$__getValue(path) == null) { - return; - } - - return { - path: path, - value: _this.$__getValue(path), - schema: _this.$__path(path) - }; - })); - var allPaths = new Map(all.filter(function (el) { - return el != null; - }).map(function (el) { - return [el.path, el.value]; - })); // Ignore "foo.a" if "foo" is dirty already. - - var minimal = []; - all.forEach(function (item) { - if (!item) { - return; - } - - var top = null; - var array = parentPaths(item.path); - - for (var _i22 = 0; _i22 < array.length - 1; _i22++) { - if (allPaths.has(array[_i22])) { - top = allPaths.get(array[_i22]); - break; - } - } - - if (top == null) { - minimal.push(item); - } else if (top != null && top[arrayAtomicsSymbol] != null && top.hasAtomics()) { - // special case for top level MongooseArrays - // the `top` array itself and a sub path of `top` are being set. - // the only way to honor all of both modifications is through a $set - // of entire array. - top[arrayAtomicsSymbol] = {}; - top[arrayAtomicsSymbol].$set = top; - } - }); - return minimal; -}; -/** - * Assigns/compiles `schema` into this documents prototype. - * - * @param {Schema} schema - * @api private - * @method $__setSchema - * @memberOf Document - * @instance - */ - - -Document.prototype.$__setSchema = function (schema) { - compile(schema.tree, this, undefined, schema.options); // Apply default getters if virtual doesn't have any (gh-6262) - - for (var _i23 = 0, _Object$keys3 = Object.keys(schema.virtuals); _i23 < _Object$keys3.length; _i23++) { - var key = _Object$keys3[_i23]; - - schema.virtuals[key]._applyDefaultGetters(); - } - - if (schema.path('schema') == null) { - this.schema = schema; - } - - this.$__schema = schema; - this[documentSchemaSymbol] = schema; -}; -/** - * Get active path that were changed and are arrays - * - * @api private - * @method $__getArrayPathsToValidate - * @memberOf Document - * @instance - */ - - -Document.prototype.$__getArrayPathsToValidate = function () { - DocumentArray || (DocumentArray = __webpack_require__(6077)); // validate all document arrays. - - return this.$__.activePaths.map('init', 'modify', function (i) { - return this.$__getValue(i); - }.bind(this)).filter(function (val) { - return val && Array.isArray(val) && utils.isMongooseDocumentArray(val) && val.length; - }).reduce(function (seed, array) { - return seed.concat(array); - }, []).filter(function (doc) { - return doc; - }); -}; -/** - * Get all subdocs (by bfs) - * - * @api public - * @method $getAllSubdocs - * @memberOf Document - * @instance - */ - - -Document.prototype.$getAllSubdocs = function () { - DocumentArray || (DocumentArray = __webpack_require__(6077)); - Embedded = Embedded || __webpack_require__(1568); - - function docReducer(doc, seed, path) { - var val = doc; - var isNested = false; - - if (path) { - if (doc instanceof Document && doc[documentSchemaSymbol].paths[path]) { - val = doc._doc[path]; - } else if (doc instanceof Document && doc[documentSchemaSymbol].nested[path]) { - val = doc._doc[path]; - isNested = true; - } else { - val = doc[path]; - } - } - - if (val instanceof Embedded) { - seed.push(val); - } else if (val instanceof Map) { - seed = Array.from(val.keys()).reduce(function (seed, path) { - return docReducer(val.get(path), seed, null); - }, seed); - } else if (val && !Array.isArray(val) && val.$isSingleNested) { - seed = Object.keys(val._doc).reduce(function (seed, path) { - return docReducer(val, seed, path); - }, seed); - seed.push(val); - } else if (val && utils.isMongooseDocumentArray(val)) { - val.forEach(function _docReduce(doc) { - if (!doc || !doc._doc) { - return; - } - - seed = Object.keys(doc._doc).reduce(function (seed, path) { - return docReducer(doc._doc, seed, path); - }, seed); - - if (doc instanceof Embedded) { - seed.push(doc); - } - }); - } else if (isNested && val != null) { - for (var _i24 = 0, _Object$keys4 = Object.keys(val); _i24 < _Object$keys4.length; _i24++) { - var _path5 = _Object$keys4[_i24]; - docReducer(val, seed, _path5); - } - } - - return seed; - } - - var subDocs = []; - - for (var _i25 = 0, _Object$keys5 = Object.keys(this._doc); _i25 < _Object$keys5.length; _i25++) { - var path = _Object$keys5[_i25]; - docReducer(this, subDocs, path); - } - - return subDocs; -}; -/*! - * Runs queued functions - */ - - -function applyQueue(doc) { - var q = doc.$__schema && doc.$__schema.callQueue; - - if (!q.length) { - return; - } - - var _iterator22 = _createForOfIteratorHelper(q), - _step22; - - try { - for (_iterator22.s(); !(_step22 = _iterator22.n()).done;) { - var pair = _step22.value; - - if (pair[0] !== 'pre' && pair[0] !== 'post' && pair[0] !== 'on') { - doc[pair[0]].apply(doc, pair[1]); - } - } - } catch (err) { - _iterator22.e(err); - } finally { - _iterator22.f(); - } -} -/*! - * ignore - */ - - -Document.prototype.$__handleReject = function handleReject(err) { - // emit on the Model if listening - if (this.$listeners('error').length) { - this.$emit('error', err); - } else if (this.constructor.listeners && this.constructor.listeners('error').length) { - this.constructor.emit('error', err); - } -}; -/** - * Internal helper for toObject() and toJSON() that doesn't manipulate options - * - * @api private - * @method $toObject - * @memberOf Document - * @instance - */ - - -Document.prototype.$toObject = function (options, json) { - var defaultOptions = { - transform: true, - flattenDecimals: true - }; - var path = json ? 'toJSON' : 'toObject'; - var baseOptions = this.constructor && this.constructor.base && this.constructor.base.options && get(this.constructor.base.options, path) || {}; - var schemaOptions = this.$__schema && this.$__schema.options || {}; // merge base default options with Schema's set default options if available. - // `clone` is necessary here because `utils.options` directly modifies the second input. - - defaultOptions = utils.options(defaultOptions, clone(baseOptions)); - defaultOptions = utils.options(defaultOptions, clone(schemaOptions[path] || {})); // If options do not exist or is not an object, set it to empty object - - options = utils.isPOJO(options) ? _objectSpread({}, options) : {}; - options._calledWithOptions = options._calledWithOptions || _objectSpread({}, options); - - var _minimize; - - if (options._calledWithOptions.minimize != null) { - _minimize = options.minimize; - } else if (defaultOptions.minimize != null) { - _minimize = defaultOptions.minimize; - } else { - _minimize = schemaOptions.minimize; - } - - var flattenMaps; - - if (options._calledWithOptions.flattenMaps != null) { - flattenMaps = options.flattenMaps; - } else if (defaultOptions.flattenMaps != null) { - flattenMaps = defaultOptions.flattenMaps; - } else { - flattenMaps = schemaOptions.flattenMaps; - } // The original options that will be passed to `clone()`. Important because - // `clone()` will recursively call `$toObject()` on embedded docs, so we - // need the original options the user passed in, plus `_isNested` and - // `_parentOptions` for checking whether we need to depopulate. - - - var cloneOptions = Object.assign({}, options, { - _isNested: true, - json: json, - minimize: _minimize, - flattenMaps: flattenMaps, - _seen: options && options._seen || new Map() - }); - - if (utils.hasUserDefinedProperty(options, 'getters')) { - cloneOptions.getters = options.getters; - } - - if (utils.hasUserDefinedProperty(options, 'virtuals')) { - cloneOptions.virtuals = options.virtuals; - } - - var depopulate = options.depopulate || options._parentOptions && options._parentOptions.depopulate || false; // _isNested will only be true if this is not the top level document, we - // should never depopulate the top-level document - - if (depopulate && options._isNested && this.$__.wasPopulated) { - return clone(this.$__.wasPopulated.value || this._id, cloneOptions); - } // merge default options with input options. - - - options = utils.options(defaultOptions, options); - options._isNested = true; - options.json = json; - options.minimize = _minimize; - cloneOptions._parentOptions = options; - cloneOptions._skipSingleNestedGetters = true; - var gettersOptions = Object.assign({}, cloneOptions); - gettersOptions._skipSingleNestedGetters = false; // remember the root transform function - // to save it from being overwritten by sub-transform functions - - var originalTransform = options.transform; - var ret = clone(this._doc, cloneOptions) || {}; - - if (options.getters) { - applyGetters(this, ret, gettersOptions); - - if (options.minimize) { - ret = minimize(ret) || {}; - } - } - - if (options.virtuals || options.getters && options.virtuals !== false) { - applyVirtuals(this, ret, gettersOptions, options); - } - - if (options.versionKey === false && this.$__schema.options.versionKey) { - delete ret[this.$__schema.options.versionKey]; - } - - var transform = options.transform; // In the case where a subdocument has its own transform function, we need to - // check and see if the parent has a transform (options.transform) and if the - // child schema has a transform (this.schema.options.toObject) In this case, - // we need to adjust options.transform to be the child schema's transform and - // not the parent schema's - - if (transform) { - applySchemaTypeTransforms(this, ret); - } - - if (options.useProjection) { - omitDeselectedFields(this, ret); - } - - if (transform === true || schemaOptions.toObject && transform) { - var opts = options.json ? schemaOptions.toJSON : schemaOptions.toObject; - - if (opts) { - transform = typeof options.transform === 'function' ? options.transform : opts.transform; - } - } else { - options.transform = originalTransform; - } - - if (typeof transform === 'function') { - var xformed = transform(this, ret, options); - - if (typeof xformed !== 'undefined') { - ret = xformed; - } - } - - return ret; -}; -/** - * Converts this document into a plain-old JavaScript object ([POJO](https://masteringjs.io/tutorials/fundamentals/pojo)). - * - * Buffers are converted to instances of [mongodb.Binary](https://mongodb.github.com/node-mongodb-native/api-bson-generated/binary.html) for proper storage. - * - * #### Options: - * - * - `getters` apply all getters (path and virtual getters), defaults to false - * - `aliases` apply all aliases if `virtuals=true`, defaults to true - * - `virtuals` apply virtual getters (can override `getters` option), defaults to false - * - `minimize` remove empty objects, defaults to true - * - `transform` a transform function to apply to the resulting document before returning - * - `depopulate` depopulate any populated paths, replacing them with their original refs, defaults to false - * - `versionKey` whether to include the version key, defaults to true - * - `flattenMaps` convert Maps to POJOs. Useful if you want to JSON.stringify() the result of toObject(), defaults to false - * - `useProjection` set to `true` to omit fields that are excluded in this document's projection. Unless you specified a projection, this will omit any field that has `select: false` in the schema. - * - * #### Getters/Virtuals - * - * Example of only applying path getters - * - * doc.toObject({ getters: true, virtuals: false }) - * - * Example of only applying virtual getters - * - * doc.toObject({ virtuals: true }) - * - * Example of applying both path and virtual getters - * - * doc.toObject({ getters: true }) - * - * To apply these options to every document of your schema by default, set your [schemas](#schema_Schema) `toObject` option to the same argument. - * - * schema.set('toObject', { virtuals: true }) - * - * #### Transform - * - * We may need to perform a transformation of the resulting object based on some criteria, say to remove some sensitive information or return a custom object. In this case we set the optional `transform` function. - * - * Transform functions receive three arguments - * - * function (doc, ret, options) {} - * - * - `doc` The mongoose document which is being converted - * - `ret` The plain object representation which has been converted - * - `options` The options in use (either schema options or the options passed inline) - * - * #### Example - * - * // specify the transform schema option - * if (!schema.options.toObject) schema.options.toObject = {}; - * schema.options.toObject.transform = function (doc, ret, options) { - * // remove the _id of every document before returning the result - * delete ret._id; - * return ret; - * } - * - * // without the transformation in the schema - * doc.toObject(); // { _id: 'anId', name: 'Wreck-it Ralph' } - * - * // with the transformation - * doc.toObject(); // { name: 'Wreck-it Ralph' } - * - * With transformations we can do a lot more than remove properties. We can even return completely new customized objects: - * - * if (!schema.options.toObject) schema.options.toObject = {}; - * schema.options.toObject.transform = function (doc, ret, options) { - * return { movie: ret.name } - * } - * - * // without the transformation in the schema - * doc.toObject(); // { _id: 'anId', name: 'Wreck-it Ralph' } - * - * // with the transformation - * doc.toObject(); // { movie: 'Wreck-it Ralph' } - * - * _Note: if a transform function returns `undefined`, the return value will be ignored._ - * - * Transformations may also be applied inline, overridding any transform set in the options: - * - * function xform (doc, ret, options) { - * return { inline: ret.name, custom: true } - * } - * - * // pass the transform as an inline option - * doc.toObject({ transform: xform }); // { inline: 'Wreck-it Ralph', custom: true } - * - * If you want to skip transformations, use `transform: false`: - * - * schema.options.toObject.hide = '_id'; - * schema.options.toObject.transform = function (doc, ret, options) { - * if (options.hide) { - * options.hide.split(' ').forEach(function (prop) { - * delete ret[prop]; - * }); - * } - * return ret; - * } - * - * const doc = new Doc({ _id: 'anId', secret: 47, name: 'Wreck-it Ralph' }); - * doc.toObject(); // { secret: 47, name: 'Wreck-it Ralph' } - * doc.toObject({ hide: 'secret _id', transform: false });// { _id: 'anId', secret: 47, name: 'Wreck-it Ralph' } - * doc.toObject({ hide: 'secret _id', transform: true }); // { name: 'Wreck-it Ralph' } - * - * If you pass a transform in `toObject()` options, Mongoose will apply the transform - * to [subdocuments](/docs/subdocs.html) in addition to the top-level document. - * Similarly, `transform: false` skips transforms for all subdocuments. - * Note that this behavior is different for transforms defined in the schema: - * if you define a transform in `schema.options.toObject.transform`, that transform - * will **not** apply to subdocuments. - * - * const memberSchema = new Schema({ name: String, email: String }); - * const groupSchema = new Schema({ members: [memberSchema], name: String, email }); - * const Group = mongoose.model('Group', groupSchema); - * - * const doc = new Group({ - * name: 'Engineering', - * email: 'dev@mongoosejs.io', - * members: [{ name: 'Val', email: 'val@mongoosejs.io' }] - * }); - * - * // Removes `email` from both top-level document **and** array elements - * // { name: 'Engineering', members: [{ name: 'Val' }] } - * doc.toObject({ transform: (doc, ret) => { delete ret.email; return ret; } }); - * - * Transforms, like all of these options, are also available for `toJSON`. See [this guide to `JSON.stringify()`](https://thecodebarbarian.com/the-80-20-guide-to-json-stringify-in-javascript.html) to learn why `toJSON()` and `toObject()` are separate functions. - * - * See [schema options](/docs/guide.html#toObject) for some more details. - * - * _During save, no custom options are applied to the document before being sent to the database._ - * - * @param {Object} [options] - * @param {Boolean} [options.getters=false] if true, apply all getters, including virtuals - * @param {Boolean} [options.virtuals=false] if true, apply virtuals, including aliases. Use `{ getters: true, virtuals: false }` to just apply getters, not virtuals - * @param {Boolean} [options.aliases=true] if `options.virtuals = true`, you can set `options.aliases = false` to skip applying aliases. This option is a no-op if `options.virtuals = false`. - * @param {Boolean} [options.minimize=true] if true, omit any empty objects from the output - * @param {Function|null} [options.transform=null] if set, mongoose will call this function to allow you to transform the returned object - * @param {Boolean} [options.depopulate=false] if true, replace any conventionally populated paths with the original id in the output. Has no affect on virtual populated paths. - * @param {Boolean} [options.versionKey=true] if false, exclude the version key (`__v` by default) from the output - * @param {Boolean} [options.flattenMaps=false] if true, convert Maps to POJOs. Useful if you want to `JSON.stringify()` the result of `toObject()`. - * @param {Boolean} [options.useProjection=false] - If true, omits fields that are excluded in this document's projection. Unless you specified a projection, this will omit any field that has `select: false` in the schema. - * @return {Object} js object - * @see mongodb.Binary https://mongodb.github.com/node-mongodb-native/api-bson-generated/binary.html - * @api public - * @memberOf Document - * @instance - */ - - -Document.prototype.toObject = function (options) { - return this.$toObject(options); -}; -/*! - * Minimizes an object, removing undefined values and empty objects - * - * @param {Object} object to minimize - * @return {Object} - */ - - -function minimize(obj) { - var keys = Object.keys(obj); - var i = keys.length; - var hasKeys; - var key; - var val; - - while (i--) { - key = keys[i]; - val = obj[key]; - - if (utils.isPOJO(val)) { - obj[key] = minimize(val); - } - - if (undefined === obj[key]) { - delete obj[key]; - continue; - } - - hasKeys = true; - } - - return hasKeys ? obj : undefined; -} -/*! - * Applies virtuals properties to `json`. - */ - - -function applyVirtuals(self, json, options, toObjectOptions) { - var schema = self.$__schema; - var paths = Object.keys(schema.virtuals); - var i = paths.length; - var numPaths = i; - var path; - var assignPath; - var cur = self._doc; - var v; - var aliases = typeof (toObjectOptions && toObjectOptions.aliases) === 'boolean' ? toObjectOptions.aliases : true; - var virtualsToApply = null; - - if (Array.isArray(options.virtuals)) { - virtualsToApply = new Set(options.virtuals); - } else if (options.virtuals && options.virtuals.pathsToSkip) { - virtualsToApply = new Set(paths); - - for (var _i26 = 0; _i26 < options.virtuals.pathsToSkip.length; _i26++) { - if (virtualsToApply.has(options.virtuals.pathsToSkip[_i26])) { - virtualsToApply["delete"](options.virtuals.pathsToSkip[_i26]); - } - } - } - - if (!cur) { - return json; - } - - options = options || {}; - - for (i = 0; i < numPaths; ++i) { - path = paths[i]; - - if (virtualsToApply != null && !virtualsToApply.has(path)) { - continue; - } // Allow skipping aliases with `toObject({ virtuals: true, aliases: false })` - - - if (!aliases && schema.aliases.hasOwnProperty(path)) { - continue; - } // We may be applying virtuals to a nested object, for example if calling - // `doc.nestedProp.toJSON()`. If so, the path we assign to, `assignPath`, - // will be a trailing substring of the `path`. - - - assignPath = path; - - if (options.path != null) { - if (!path.startsWith(options.path + '.')) { - continue; - } - - assignPath = path.substring(options.path.length + 1); - } - - var parts = assignPath.split('.'); - v = clone(self.get(path), options); - - if (v === void 0) { - continue; - } - - var plen = parts.length; - cur = json; - - for (var j = 0; j < plen - 1; ++j) { - cur[parts[j]] = cur[parts[j]] || {}; - cur = cur[parts[j]]; - } - - cur[parts[plen - 1]] = v; - } - - return json; -} -/*! - * Applies virtuals properties to `json`. - * - * @param {Document} self - * @param {Object} json - * @return {Object} `json` - */ - - -function applyGetters(self, json, options) { - var schema = self.$__schema; - var paths = Object.keys(schema.paths); - var i = paths.length; - var path; - var cur = self._doc; - var v; - - if (!cur) { - return json; - } - - while (i--) { - path = paths[i]; - var parts = path.split('.'); - var plen = parts.length; - var last = plen - 1; - var branch = json; - var part = void 0; - cur = self._doc; - - if (!self.$__isSelected(path)) { - continue; - } - - for (var ii = 0; ii < plen; ++ii) { - part = parts[ii]; - v = cur[part]; - - if (ii === last) { - var val = self.$get(path); - branch[part] = clone(val, options); - } else if (v == null) { - if (part in cur) { - branch[part] = v; - } - - break; - } else { - branch = branch[part] || (branch[part] = {}); - } - - cur = v; - } - } - - return json; -} -/*! - * Applies schema type transforms to `json`. - * - * @param {Document} self - * @param {Object} json - * @return {Object} `json` - */ - - -function applySchemaTypeTransforms(self, json) { - var schema = self.$__schema; - var paths = Object.keys(schema.paths || {}); - var cur = self._doc; - - if (!cur) { - return json; - } - - for (var _i27 = 0, _paths4 = paths; _i27 < _paths4.length; _i27++) { - var path = _paths4[_i27]; - var schematype = schema.paths[path]; - - if (typeof schematype.options.transform === 'function') { - var val = self.$get(path); - - if (val === undefined) { - continue; - } - - var transformedValue = schematype.options.transform.call(self, val); - throwErrorIfPromise(path, transformedValue); - utils.setValue(path, transformedValue, json); - } else if (schematype.$embeddedSchemaType != null && typeof schematype.$embeddedSchemaType.options.transform === 'function') { - var _val2 = self.$get(path); - - if (_val2 === undefined) { - continue; - } - - var vals = [].concat(_val2); - var transform = schematype.$embeddedSchemaType.options.transform; - - for (var _i28 = 0; _i28 < vals.length; ++_i28) { - var _transformedValue = transform.call(self, vals[_i28]); - - vals[_i28] = _transformedValue; - throwErrorIfPromise(path, _transformedValue); - } - - json[path] = vals; - } - } - - return json; -} - -function throwErrorIfPromise(path, transformedValue) { - if (isPromise(transformedValue)) { - throw new Error('`transform` function must be synchronous, but the transform on path `' + path + '` returned a promise.'); - } -} -/*! - * ignore - */ - - -function omitDeselectedFields(self, json) { - var schema = self.$__schema; - var paths = Object.keys(schema.paths || {}); - var cur = self._doc; - - if (!cur) { - return json; - } - - var selected = self.$__.selected; - - if (selected === void 0) { - selected = {}; - queryhelpers.applyPaths(selected, schema); - } - - if (selected == null || Object.keys(selected).length === 0) { - return json; - } - - for (var _i29 = 0, _paths5 = paths; _i29 < _paths5.length; _i29++) { - var path = _paths5[_i29]; - - if (selected[path] != null && !selected[path]) { - delete json[path]; - } - } - - return json; -} -/** - * The return value of this method is used in calls to [`JSON.stringify(doc)`](https://thecodebarbarian.com/the-80-20-guide-to-json-stringify-in-javascript#the-tojson-function). - * - * This method accepts the same options as [Document#toObject](#document_Document-toObject). To apply the options to every document of your schema by default, set your [schemas](#schema_Schema) `toJSON` option to the same argument. - * - * schema.set('toJSON', { virtuals: true }); - * - * There is one difference between `toJSON()` and `toObject()` options. - * When you call `toJSON()`, the [`flattenMaps` option](./document.html#document_Document-toObject) defaults to `true`, because `JSON.stringify()` doesn't convert maps to objects by default. - * When you call `toObject()`, the `flattenMaps` option is `false` by default. - * - * See [schema options](/docs/guide.html#toJSON) for more information on setting `toJSON` option defaults. - * - * @param {Object} options - * @param {Boolean} [options.flattenMaps=true] if true, convert Maps to [POJOs](https://masteringjs.io/tutorials/fundamentals/pojo). Useful if you want to `JSON.stringify()` the result. - * @return {Object} - * @see Document#toObject #document_Document-toObject - * @see JSON.stringify() in JavaScript https://thecodebarbarian.com/the-80-20-guide-to-json-stringify-in-javascript.html - * @api public - * @memberOf Document - * @instance - */ - - -Document.prototype.toJSON = function (options) { - return this.$toObject(options, true); -}; - -Document.prototype.ownerDocument = function () { - return this; -}; -/** - * If this document is a subdocument or populated document, returns the document's - * parent. Returns the original document if there is no parent. - * - * @api public - * @method parent - * @memberOf Document - * @instance - */ - - -Document.prototype.parent = function () { - if (this.$isSubdocument || this.$__.wasPopulated) { - return this.$__.parent; - } - - return this; -}; -/** - * Alias for `parent()`. If this document is a subdocument or populated - * document, returns the document's parent. Returns `undefined` otherwise. - * - * @api public - * @method $parent - * @memberOf Document - * @instance - */ - - -Document.prototype.$parent = Document.prototype.parent; -/** - * Helper for console.log - * - * @api public - * @method inspect - * @memberOf Document - * @instance - */ - -Document.prototype.inspect = function (options) { - var isPOJO = utils.isPOJO(options); - var opts; - - if (isPOJO) { - opts = options; - opts.minimize = false; - } - - var ret = this.toObject(opts); - - if (ret == null) { - // If `toObject()` returns null, `this` is still an object, so if `inspect()` - // prints out null this can cause some serious confusion. See gh-7942. - return 'MongooseDocument { ' + ret + ' }'; - } - - return ret; -}; - -if (inspect.custom) { - /*! - * Avoid Node deprecation warning DEP0079 - */ - Document.prototype[inspect.custom] = Document.prototype.inspect; -} -/** - * Helper for console.log - * - * @api public - * @method toString - * @memberOf Document - * @instance - */ - - -Document.prototype.toString = function () { - var ret = this.inspect(); - - if (typeof ret === 'string') { - return ret; - } - - return inspect(ret); -}; -/** - * Returns true if this document is equal to another document. - * - * Documents are considered equal when they have matching `_id`s, unless neither - * document has an `_id`, in which case this function falls back to using - * `deepEqual()`. - * - * @param {Document} doc a document to compare - * @return {Boolean} - * @api public - * @memberOf Document - * @instance - */ - - -Document.prototype.equals = function (doc) { - if (!doc) { - return false; - } - - var tid = this.$__getValue('_id'); - var docid = doc.$__ != null ? doc.$__getValue('_id') : doc; - - if (!tid && !docid) { - return deepEqual(this, doc); - } - - return tid && tid.equals ? tid.equals(docid) : tid === docid; -}; -/** - * Populates paths on an existing document. - * - * #### Example: - * - * await doc.populate([ - * 'stories', - * { path: 'fans', sort: { name: -1 } } - * ]); - * doc.populated('stories'); // Array of ObjectIds - * doc.stories[0].title; // 'Casino Royale' - * doc.populated('fans'); // Array of ObjectIds - * - * await doc.populate('fans', '-email'); - * doc.fans[0].email // not populated - * - * await doc.populate('author fans', '-email'); - * doc.author.email // not populated - * doc.fans[0].email // not populated - * - * @param {String|Object|Array} path either the path to populate or an object specifying all parameters, or either an array of those - * @param {Object|String} [select] Field selection for the population query - * @param {Model} [model] The model you wish to use for population. If not specified, populate will look up the model by the name in the Schema's `ref` field. - * @param {Object} [match] Conditions for the population query - * @param {Object} [options] Options for the population query (sort, etc) - * @param {String} [options.path=null] The path to populate. - * @param {string|PopulateOptions} [options.populate=null] Recursively populate paths in the populated documents. See [deep populate docs](/docs/populate.html#deep-populate). - * @param {boolean} [options.retainNullValues=false] by default, Mongoose removes null and undefined values from populated arrays. Use this option to make `populate()` retain `null` and `undefined` array entries. - * @param {boolean} [options.getters=false] if true, Mongoose will call any getters defined on the `localField`. By default, Mongoose gets the raw value of `localField`. For example, you would need to set this option to `true` if you wanted to [add a `lowercase` getter to your `localField`](/docs/schematypes.html#schematype-options). - * @param {boolean} [options.clone=false] When you do `BlogPost.find().populate('author')`, blog posts with the same author will share 1 copy of an `author` doc. Enable this option to make Mongoose clone populated docs before assigning them. - * @param {Object|Function} [options.match=null] Add an additional filter to the populate query. Can be a filter object containing [MongoDB query syntax](https://docs.mongodb.com/manual/tutorial/query-documents/), or a function that returns a filter object. - * @param {Function} [options.transform=null] Function that Mongoose will call on every populated document that allows you to transform the populated document. - * @param {Object} [options.options=null] Additional options like `limit` and `lean`. - * @param {Function} [callback] Callback - * @see population ./populate.html - * @see Query#select #query_Query-select - * @see Model.populate #model_Model.populate - * @memberOf Document - * @instance - * @return {Promise|null} - * @api public - */ - - -Document.prototype.populate = function populate() { - var pop = {}; - var args = Array.prototype.slice.call(arguments); - var fn; - - if (args.length !== 0) { - if (typeof args[args.length - 1] === 'function') { - fn = args.pop(); - } // use hash to remove duplicate paths - - - var res = utils.populate.apply(null, args); - - var _iterator23 = _createForOfIteratorHelper(res), - _step23; - - try { - for (_iterator23.s(); !(_step23 = _iterator23.n()).done;) { - var populateOptions = _step23.value; - pop[populateOptions.path] = populateOptions; - } - } catch (err) { - _iterator23.e(err); - } finally { - _iterator23.f(); - } - } - - var paths = utils.object.vals(pop); - var topLevelModel = this.constructor; - - if (this.$__isNested) { - topLevelModel = this.$__[scopeSymbol].constructor; - var nestedPath = this.$__.nestedPath; - paths.forEach(function (populateOptions) { - populateOptions.path = nestedPath + '.' + populateOptions.path; - }); - } // Use `$session()` by default if the document has an associated session - // See gh-6754 - - - if (this.$session() != null) { - var session = this.$session(); - paths.forEach(function (path) { - if (path.options == null) { - path.options = { - session: session - }; - return; - } - - if (!('session' in path.options)) { - path.options.session = session; - } - }); - } - - paths.forEach(function (p) { - p._localModel = topLevelModel; - }); - return topLevelModel.populate(this, paths, fn); -}; -/** - * Gets all populated documents associated with this document. - * - * @api public - * @return {Array} array of populated documents. Empty array if there are no populated documents associated with this document. - * @memberOf Document - * @method $getPopulatedDocs - * @instance - */ - - -Document.prototype.$getPopulatedDocs = function $getPopulatedDocs() { - var keys = []; - - if (this.$__.populated != null) { - keys = keys.concat(Object.keys(this.$__.populated)); - } - - var result = []; - - var _iterator24 = _createForOfIteratorHelper(keys), - _step24; - - try { - for (_iterator24.s(); !(_step24 = _iterator24.n()).done;) { - var key = _step24.value; - var value = this.$get(key); - - if (Array.isArray(value)) { - result = result.concat(value); - } else if (value instanceof Document) { - result.push(value); - } - } - } catch (err) { - _iterator24.e(err); - } finally { - _iterator24.f(); - } - - return result; -}; -/** - * Gets _id(s) used during population of the given `path`. - * - * #### Example: - * - * const doc = await Model.findOne().populate('author'); - * - * console.log(doc.author.name); // Dr.Seuss - * console.log(doc.populated('author')); // '5144cf8050f071d979c118a7' - * - * If the path was not populated, returns `undefined`. - * - * @param {String} path - * @return {Array|ObjectId|Number|Buffer|String|undefined} - * @memberOf Document - * @instance - * @api public - */ - - -Document.prototype.populated = function (path, val, options) { - // val and options are internal - if (val == null || val === true) { - if (!this.$__.populated) { - return undefined; - } - - if (typeof path !== 'string') { - return undefined; - } // Map paths can be populated with either `path.$*` or just `path` - - - var _path = path.endsWith('.$*') ? path.replace(/\.\$\*$/, '') : path; - - var v = this.$__.populated[_path]; - - if (v) { - return val === true ? v : v.value; - } - - return undefined; - } - - this.$__.populated || (this.$__.populated = {}); - this.$__.populated[path] = { - value: val, - options: options - }; // If this was a nested populate, make sure each populated doc knows - // about its populated children (gh-7685) - - var pieces = path.split('.'); - - for (var _i30 = 0; _i30 < pieces.length - 1; ++_i30) { - var subpath = pieces.slice(0, _i30 + 1).join('.'); - var subdoc = this.$get(subpath); - - if (subdoc != null && subdoc.$__ != null && this.$populated(subpath)) { - var rest = pieces.slice(_i30 + 1).join('.'); - subdoc.$populated(rest, val, options); // No need to continue because the above recursion should take care of - // marking the rest of the docs as populated - - break; - } - } - - return val; -}; - -Document.prototype.$populated = Document.prototype.populated; -/** - * Throws an error if a given path is not populated - * - * #### Example: - * - * const doc = await Model.findOne().populate('author'); - * - * doc.$assertPopulated('author'); // does not throw - * doc.$assertPopulated('other path'); // throws an error - * - * - * @param {String|Array} path - * @return {Document} this - * @memberOf Document - * @method $assertPopulated - * @instance - * @api public - */ - -Document.prototype.$assertPopulated = function $assertPopulated(paths) { - var _this13 = this; - - if (Array.isArray(paths)) { - paths.forEach(function (path) { - return _this13.$assertPopulated(path); - }); - return this; - } - - if (!this.$populated(paths)) { - throw new MongooseError("Expected path \"".concat(paths, "\" to be populated")); - } - - return this; -}; -/** - * Takes a populated field and returns it to its unpopulated state. - * - * #### Example: - * - * Model.findOne().populate('author').exec(function (err, doc) { - * console.log(doc.author.name); // Dr.Seuss - * console.log(doc.depopulate('author')); - * console.log(doc.author); // '5144cf8050f071d979c118a7' - * }) - * - * If the path was not provided, then all populated fields are returned to their unpopulated state. - * - * @param {String} path - * @return {Document} this - * @see Document.populate #document_Document-populate - * @api public - * @memberOf Document - * @instance - */ - - -Document.prototype.depopulate = function (path) { - if (typeof path === 'string') { - path = path.indexOf(' ') === -1 ? [path] : path.split(' '); - } - - var populatedIds; - var virtualKeys = this.$$populatedVirtuals ? Object.keys(this.$$populatedVirtuals) : []; - var populated = this.$__ && this.$__.populated || {}; - - if (arguments.length === 0) { - // Depopulate all - var _iterator25 = _createForOfIteratorHelper(virtualKeys), - _step25; - - try { - for (_iterator25.s(); !(_step25 = _iterator25.n()).done;) { - var virtualKey = _step25.value; - delete this.$$populatedVirtuals[virtualKey]; - delete this._doc[virtualKey]; - delete populated[virtualKey]; - } - } catch (err) { - _iterator25.e(err); - } finally { - _iterator25.f(); - } - - var keys = Object.keys(populated); - - for (var _i31 = 0, _keys8 = keys; _i31 < _keys8.length; _i31++) { - var key = _keys8[_i31]; - populatedIds = this.$populated(key); - - if (!populatedIds) { - continue; - } - - delete populated[key]; - utils.setValue(key, populatedIds, this._doc); - } - - return this; - } - - var _iterator26 = _createForOfIteratorHelper(path), - _step26; - - try { - for (_iterator26.s(); !(_step26 = _iterator26.n()).done;) { - var singlePath = _step26.value; - populatedIds = this.$populated(singlePath); - delete populated[singlePath]; - - if (virtualKeys.indexOf(singlePath) !== -1) { - delete this.$$populatedVirtuals[singlePath]; - delete this._doc[singlePath]; - } else if (populatedIds) { - utils.setValue(singlePath, populatedIds, this._doc); - } - } - } catch (err) { - _iterator26.e(err); - } finally { - _iterator26.f(); - } - - return this; -}; -/** - * Returns the full path to this document. - * - * @param {String} [path] - * @return {String} - * @api private - * @method $__fullPath - * @memberOf Document - * @instance - */ - - -Document.prototype.$__fullPath = function (path) { - // overridden in SubDocuments - return path || ''; -}; -/** - * Returns the changes that happened to the document - * in the format that will be sent to MongoDB. - * - * #### Example: - * - * const userSchema = new Schema({ - * name: String, - * age: Number, - * country: String - * }); - * const User = mongoose.model('User', userSchema); - * const user = await User.create({ - * name: 'Hafez', - * age: 25, - * country: 'Egypt' - * }); - * - * // returns an empty object, no changes happened yet - * user.getChanges(); // { } - * - * user.country = undefined; - * user.age = 26; - * - * user.getChanges(); // { $set: { age: 26 }, { $unset: { country: 1 } } } - * - * await user.save(); - * - * user.getChanges(); // { } - * - * Modifying the object that `getChanges()` returns does not affect the document's - * change tracking state. Even if you `delete user.getChanges().$set`, Mongoose - * will still send a `$set` to the server. - * - * @return {Object} - * @api public - * @method getChanges - * @memberOf Document - * @instance - */ - - -Document.prototype.getChanges = function () { - var delta = this.$__delta(); - var changes = delta ? delta[1] : {}; - return changes; -}; -/*! - * Module exports. - */ - - -Document.ValidationError = ValidationError; -module.exports = exports = Document; - -/***/ }), - -/***/ 4304: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -/* eslint-env browser */ - -/*! - * Module dependencies. - */ - -var Document = __webpack_require__(8727); - -var BrowserDocument = __webpack_require__(3434); - -var isBrowser = false; -/** - * Returns the Document constructor for the current context - * - * @api private - */ - -module.exports = function () { - if (isBrowser) { - return BrowserDocument; - } - - return Document; -}; -/*! - * ignore - */ - - -module.exports.setBrowser = function (flag) { - isBrowser = flag; -}; - -/***/ }), - -/***/ 9906: -/***/ ((module) => { - -"use strict"; - -/*! - * ignore - */ - -var driver = null; - -module.exports.get = function () { - return driver; -}; - -module.exports.set = function (v) { - driver = v; -}; - -/***/ }), - -/***/ 5427: -/***/ ((module) => { - -"use strict"; -/*! - * ignore - */ - - -module.exports = function () {}; - -/***/ }), - -/***/ 655: -/***/ ((module, exports, __webpack_require__) => { - -"use strict"; -/*! - * Module dependencies. - */ - - -var Binary = (__webpack_require__(3873)/* .Binary */ .Kb); -/*! - * Module exports. - */ - - -module.exports = exports = Binary; - -/***/ }), - -/***/ 4267: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/*! - * ignore - */ - - -module.exports = __webpack_require__(3873).Decimal128; - -/***/ }), - -/***/ 6333: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; -/*! - * Module exports. - */ - - -exports.Binary = __webpack_require__(655); - -exports.Collection = function () { - throw new Error('Cannot create a collection from browser library'); -}; - -exports.getConnection = function () { - return function () { - throw new Error('Cannot create a connection from browser library'); - }; -}; - -exports.Decimal128 = __webpack_require__(4267); -exports.ObjectId = __webpack_require__(7906); -exports.ReadPreference = __webpack_require__(5427); - -/***/ }), - -/***/ 7906: -/***/ ((module, exports, __webpack_require__) => { - -"use strict"; -/*! - * [node-mongodb-native](https://github.com/mongodb/node-mongodb-native) ObjectId - * @constructor NodeMongoDbObjectId - * @see ObjectId - */ - - -var ObjectId = (__webpack_require__(3873)/* .ObjectID */ .t4); -/*! - * Getter for convenience with populate, see gh-6115 - */ - - -Object.defineProperty(ObjectId.prototype, '_id', { - enumerable: false, - configurable: true, - get: function get() { - return this; - } -}); -/*! - * ignore - */ - -module.exports = exports = ObjectId; - -/***/ }), - -/***/ 1795: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -/*! - * Module dependencies. - */ - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -var MongooseError = __webpack_require__(5202); - -var util = __webpack_require__(161); -/** - * Casting Error constructor. - * - * @param {String} type - * @param {String} value - * @inherits MongooseError - * @api private - */ - - -var CastError = /*#__PURE__*/function (_MongooseError) { - _inherits(CastError, _MongooseError); - - var _super = _createSuper(CastError); - - function CastError(type, value, path, reason, schemaType) { - var _this; - - _classCallCheck(this, CastError); - - // If no args, assume we'll `init()` later. - if (arguments.length > 0) { - var stringValue = getStringValue(value); - var valueType = getValueType(value); - var messageFormat = getMessageFormat(schemaType); - var msg = formatMessage(null, type, stringValue, path, messageFormat, valueType, reason); - _this = _super.call(this, msg); - - _this.init(type, value, path, reason, schemaType); - } else { - _this = _super.call(this, formatMessage()); - } - - return _possibleConstructorReturn(_this); - } - - _createClass(CastError, [{ - key: "toJSON", - value: function toJSON() { - return { - stringValue: this.stringValue, - valueType: this.valueType, - kind: this.kind, - value: this.value, - path: this.path, - reason: this.reason, - name: this.name, - message: this.message - }; - } - /*! - * ignore - */ - - }, { - key: "init", - value: function init(type, value, path, reason, schemaType) { - this.stringValue = getStringValue(value); - this.messageFormat = getMessageFormat(schemaType); - this.kind = type; - this.value = value; - this.path = path; - this.reason = reason; - this.valueType = getValueType(value); - } - /*! - * ignore - * @param {Readonly} other - */ - - }, { - key: "copy", - value: function copy(other) { - this.messageFormat = other.messageFormat; - this.stringValue = other.stringValue; - this.kind = other.kind; - this.value = other.value; - this.path = other.path; - this.reason = other.reason; - this.message = other.message; - this.valueType = other.valueType; - } - /*! - * ignore - */ - - }, { - key: "setModel", - value: function setModel(model) { - this.model = model; - this.message = formatMessage(model, this.kind, this.stringValue, this.path, this.messageFormat, this.valueType); - } - }]); - - return CastError; -}(MongooseError); - -Object.defineProperty(CastError.prototype, 'name', { - value: 'CastError' -}); - -function getStringValue(value) { - var stringValue = util.inspect(value); - stringValue = stringValue.replace(/^'|'$/g, '"'); - - if (!stringValue.startsWith('"')) { - stringValue = '"' + stringValue + '"'; - } - - return stringValue; -} - -function getValueType(value) { - if (value == null) { - return '' + value; - } - - var t = _typeof(value); - - if (t !== 'object') { - return t; - } - - if (typeof value.constructor !== 'function') { - return t; - } - - return value.constructor.name; -} - -function getMessageFormat(schemaType) { - var messageFormat = schemaType && schemaType.options && schemaType.options.cast || null; - - if (typeof messageFormat === 'string') { - return messageFormat; - } -} -/*! - * ignore - */ - - -function formatMessage(model, kind, stringValue, path, messageFormat, valueType, reason) { - if (messageFormat != null) { - var ret = messageFormat.replace('{KIND}', kind).replace('{VALUE}', stringValue).replace('{PATH}', path); - - if (model != null) { - ret = ret.replace('{MODEL}', model.modelName); - } - - return ret; - } else { - var valueTypeMsg = valueType ? ' (type ' + valueType + ')' : ''; - - var _ret = 'Cast to ' + kind + ' failed for value ' + stringValue + valueTypeMsg + ' at path "' + path + '"'; - - if (model != null) { - _ret += ' for model "' + model.modelName + '"'; - } - - if (reason != null && typeof reason.constructor === 'function' && reason.constructor.name !== 'AssertionError' && reason.constructor.name !== 'Error') { - _ret += ' because of "' + reason.constructor.name + '"'; - } - - return _ret; - } -} -/*! - * exports - */ - - -module.exports = CastError; - -/***/ }), - -/***/ 6067: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/*! - * Module dependencies. - */ - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -var MongooseError = __webpack_require__(4888); - -var DivergentArrayError = /*#__PURE__*/function (_MongooseError) { - _inherits(DivergentArrayError, _MongooseError); - - var _super = _createSuper(DivergentArrayError); - - /*! - * DivergentArrayError constructor. - * @param {Array} paths - */ - function DivergentArrayError(paths) { - _classCallCheck(this, DivergentArrayError); - - var msg = 'For your own good, using `document.save()` to update an array ' + 'which was selected using an $elemMatch projection OR ' + 'populated using skip, limit, query conditions, or exclusion of ' + 'the _id field when the operation results in a $pop or $set of ' + 'the entire array is not supported. The following ' + 'path(s) would have been modified unsafely:\n' + ' ' + paths.join('\n ') + '\n' + 'Use Model.update() to update these arrays instead.'; // TODO write up a docs page (FAQ) and link to it - - return _super.call(this, msg); - } - - return _createClass(DivergentArrayError); -}(MongooseError); - -Object.defineProperty(DivergentArrayError.prototype, 'name', { - value: 'DivergentArrayError' -}); -/*! - * exports - */ - -module.exports = DivergentArrayError; - -/***/ }), - -/***/ 4888: -/***/ ((module, exports, __webpack_require__) => { - -"use strict"; - -/** - * MongooseError constructor. MongooseError is the base class for all - * Mongoose-specific errors. - * - * #### Example: - * const Model = mongoose.model('Test', new mongoose.Schema({ answer: Number })); - * const doc = new Model({ answer: 'not a number' }); - * const err = doc.validateSync(); - * - * err instanceof mongoose.Error.ValidationError; // true - * - * @constructor Error - * @param {String} msg Error message - * @inherits Error https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error - */ - -var MongooseError = __webpack_require__(5202); -/** - * The name of the error. The name uniquely identifies this Mongoose error. The - * possible values are: - * - * - `MongooseError`: general Mongoose error - * - `CastError`: Mongoose could not convert a value to the type defined in the schema path. May be in a `ValidationError` class' `errors` property. - * - `DisconnectedError`: This [connection](connections.html) timed out in trying to reconnect to MongoDB and will not successfully reconnect to MongoDB unless you explicitly reconnect. - * - `DivergentArrayError`: You attempted to `save()` an array that was modified after you loaded it with a `$elemMatch` or similar projection - * - `MissingSchemaError`: You tried to access a model with [`mongoose.model()`](api.html#mongoose_Mongoose-model) that was not defined - * - `DocumentNotFoundError`: The document you tried to [`save()`](api.html#document_Document-save) was not found - * - `ValidatorError`: error from an individual schema path's validator - * - `ValidationError`: error returned from [`validate()`](api.html#document_Document-validate) or [`validateSync()`](api.html#document_Document-validateSync). Contains zero or more `ValidatorError` instances in `.errors` property. - * - `MissingSchemaError`: You called `mongoose.Document()` without a schema - * - `ObjectExpectedError`: Thrown when you set a nested path to a non-object value with [strict mode set](guide.html#strict). - * - `ObjectParameterError`: Thrown when you pass a non-object value to a function which expects an object as a paramter - * - `OverwriteModelError`: Thrown when you call [`mongoose.model()`](api.html#mongoose_Mongoose-model) to re-define a model that was already defined. - * - `ParallelSaveError`: Thrown when you call [`save()`](api.html#model_Model-save) on a document when the same document instance is already saving. - * - `StrictModeError`: Thrown when you set a path that isn't the schema and [strict mode](guide.html#strict) is set to `throw`. - * - `VersionError`: Thrown when the [document is out of sync](guide.html#versionKey) - * - * @api public - * @property {String} name - * @memberOf Error - * @instance - */ - -/*! - * Module exports. - */ - - -module.exports = exports = MongooseError; -/** - * The default built-in validator error messages. - * - * @see Error.messages #error_messages_MongooseError-messages - * @api public - * @memberOf Error - * @static messages - */ - -MongooseError.messages = __webpack_require__(983); // backward compat - -MongooseError.Messages = MongooseError.messages; -/** - * An instance of this error class will be returned when `save()` fails - * because the underlying - * document was not found. The constructor takes one parameter, the - * conditions that mongoose passed to `update()` when trying to update - * the document. - * - * @api public - * @memberOf Error - * @static DocumentNotFoundError - */ - -MongooseError.DocumentNotFoundError = __webpack_require__(3640); -/** - * An instance of this error class will be returned when mongoose failed to - * cast a value. - * - * @api public - * @memberOf Error - * @static CastError - */ - -MongooseError.CastError = __webpack_require__(1795); -/** - * An instance of this error class will be returned when [validation](/docs/validation.html) failed. - * The `errors` property contains an object whose keys are the paths that failed and whose values are - * instances of CastError or ValidationError. - * - * @api public - * @memberOf Error - * @static ValidationError - */ - -MongooseError.ValidationError = __webpack_require__(122); -/** - * A `ValidationError` has a hash of `errors` that contain individual - * `ValidatorError` instances. - * - * #### Example: - * - * const schema = Schema({ name: { type: String, required: true } }); - * const Model = mongoose.model('Test', schema); - * const doc = new Model({}); - * - * // Top-level error is a ValidationError, **not** a ValidatorError - * const err = doc.validateSync(); - * err instanceof mongoose.Error.ValidationError; // true - * - * // A ValidationError `err` has 0 or more ValidatorErrors keyed by the - * // path in the `err.errors` property. - * err.errors['name'] instanceof mongoose.Error.ValidatorError; - * - * err.errors['name'].kind; // 'required' - * err.errors['name'].path; // 'name' - * err.errors['name'].value; // undefined - * - * Instances of `ValidatorError` have the following properties: - * - * - `kind`: The validator's `type`, like `'required'` or `'regexp'` - * - `path`: The path that failed validation - * - `value`: The value that failed validation - * - * @api public - * @memberOf Error - * @static ValidatorError - */ - -MongooseError.ValidatorError = __webpack_require__(2037); -/** - * An instance of this error class will be returned when you call `save()` after - * the document in the database was changed in a potentially unsafe way. See - * the [`versionKey` option](/docs/guide.html#versionKey) for more information. - * - * @api public - * @memberOf Error - * @static VersionError - */ - -MongooseError.VersionError = __webpack_require__(8809); -/** - * An instance of this error class will be returned when you call `save()` multiple - * times on the same document in parallel. See the [FAQ](/docs/faq.html) for more - * information. - * - * @api public - * @memberOf Error - * @static ParallelSaveError - */ - -MongooseError.ParallelSaveError = __webpack_require__(5007); -/** - * Thrown when a model with the given name was already registered on the connection. - * See [the FAQ about `OverwriteModelError`](/docs/faq.html#overwrite-model-error). - * - * @api public - * @memberOf Error - * @static OverwriteModelError - */ - -MongooseError.OverwriteModelError = __webpack_require__(5676); -/** - * Thrown when you try to access a model that has not been registered yet - * - * @api public - * @memberOf Error - * @static MissingSchemaError - */ - -MongooseError.MissingSchemaError = __webpack_require__(1511); -/** - * Thrown when the MongoDB Node driver can't connect to a valid server - * to send an operation to. - * - * @api public - * @memberOf Error - * @static MongooseServerSelectionError - */ - -MongooseError.MongooseServerSelectionError = __webpack_require__(1870); -/** - * An instance of this error will be returned if you used an array projection - * and then modified the array in an unsafe way. - * - * @api public - * @memberOf Error - * @static DivergentArrayError - */ - -MongooseError.DivergentArrayError = __webpack_require__(6067); -/** - * Thrown when your try to pass values to model contrtuctor that - * were not specified in schema or change immutable properties when - * `strict` mode is `"throw"` - * - * @api public - * @memberOf Error - * @static StrictModeError - */ - -MongooseError.StrictModeError = __webpack_require__(3328); - -/***/ }), - -/***/ 983: -/***/ ((module, exports) => { - -"use strict"; -/** - * The default built-in validator error messages. These may be customized. - * - * // customize within each schema or globally like so - * const mongoose = require('mongoose'); - * mongoose.Error.messages.String.enum = "Your custom message for {PATH}."; - * - * As you might have noticed, error messages support basic templating - * - * - `{PATH}` is replaced with the invalid document path - * - `{VALUE}` is replaced with the invalid value - * - `{TYPE}` is replaced with the validator type such as "regexp", "min", or "user defined" - * - `{MIN}` is replaced with the declared min value for the Number.min validator - * - `{MAX}` is replaced with the declared max value for the Number.max validator - * - * Click the "show code" link below to see all defaults. - * - * @static messages - * @receiver MongooseError - * @api public - */ - - -var msg = module.exports = exports = {}; -msg.DocumentNotFoundError = null; -msg.general = {}; -msg.general["default"] = 'Validator failed for path `{PATH}` with value `{VALUE}`'; -msg.general.required = 'Path `{PATH}` is required.'; -msg.Number = {}; -msg.Number.min = 'Path `{PATH}` ({VALUE}) is less than minimum allowed value ({MIN}).'; -msg.Number.max = 'Path `{PATH}` ({VALUE}) is more than maximum allowed value ({MAX}).'; -msg.Number["enum"] = '`{VALUE}` is not a valid enum value for path `{PATH}`.'; -msg.Date = {}; -msg.Date.min = 'Path `{PATH}` ({VALUE}) is before minimum allowed value ({MIN}).'; -msg.Date.max = 'Path `{PATH}` ({VALUE}) is after maximum allowed value ({MAX}).'; -msg.String = {}; -msg.String["enum"] = '`{VALUE}` is not a valid enum value for path `{PATH}`.'; -msg.String.match = 'Path `{PATH}` is invalid ({VALUE}).'; -msg.String.minlength = 'Path `{PATH}` (`{VALUE}`) is shorter than the minimum allowed length ({MINLENGTH}).'; -msg.String.maxlength = 'Path `{PATH}` (`{VALUE}`) is longer than the maximum allowed length ({MAXLENGTH}).'; - -/***/ }), - -/***/ 1511: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/*! - * Module dependencies. - */ - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -var MongooseError = __webpack_require__(4888); - -var MissingSchemaError = /*#__PURE__*/function (_MongooseError) { - _inherits(MissingSchemaError, _MongooseError); - - var _super = _createSuper(MissingSchemaError); - - /*! - * MissingSchema Error constructor. - * @param {String} name - */ - function MissingSchemaError(name) { - _classCallCheck(this, MissingSchemaError); - - var msg = 'Schema hasn\'t been registered for model "' + name + '".\n' + 'Use mongoose.model(name, schema)'; - return _super.call(this, msg); - } - - return _createClass(MissingSchemaError); -}(MongooseError); - -Object.defineProperty(MissingSchemaError.prototype, 'name', { - value: 'MissingSchemaError' -}); -/*! - * exports - */ - -module.exports = MissingSchemaError; - -/***/ }), - -/***/ 5202: -/***/ ((module) => { - -"use strict"; - -/*! - * ignore - */ - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); } - -function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct.bind(); } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -var MongooseError = /*#__PURE__*/function (_Error) { - _inherits(MongooseError, _Error); - - var _super = _createSuper(MongooseError); - - function MongooseError() { - _classCallCheck(this, MongooseError); - - return _super.apply(this, arguments); - } - - return _createClass(MongooseError); -}( /*#__PURE__*/_wrapNativeSuper(Error)); - -Object.defineProperty(MongooseError.prototype, 'name', { - value: 'MongooseError' -}); -module.exports = MongooseError; - -/***/ }), - -/***/ 3640: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -/*! - * Module dependencies. - */ - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -var MongooseError = __webpack_require__(4888); - -var util = __webpack_require__(161); - -var DocumentNotFoundError = /*#__PURE__*/function (_MongooseError) { - _inherits(DocumentNotFoundError, _MongooseError); - - var _super = _createSuper(DocumentNotFoundError); - - /*! - * OverwriteModel Error constructor. - */ - function DocumentNotFoundError(filter, model, numAffected, result) { - var _this; - - _classCallCheck(this, DocumentNotFoundError); - - var msg; - var messages = MongooseError.messages; - - if (messages.DocumentNotFoundError != null) { - msg = typeof messages.DocumentNotFoundError === 'function' ? messages.DocumentNotFoundError(filter, model) : messages.DocumentNotFoundError; - } else { - msg = 'No document found for query "' + util.inspect(filter) + '" on model "' + model + '"'; - } - - _this = _super.call(this, msg); - _this.result = result; - _this.numAffected = numAffected; - _this.filter = filter; // Backwards compat - - _this.query = filter; - return _this; - } - - return _createClass(DocumentNotFoundError); -}(MongooseError); - -Object.defineProperty(DocumentNotFoundError.prototype, 'name', { - value: 'DocumentNotFoundError' -}); -/*! - * exports - */ - -module.exports = DocumentNotFoundError; - -/***/ }), - -/***/ 4107: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/*! - * Module dependencies. - */ - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -var MongooseError = __webpack_require__(4888); - -var ObjectExpectedError = /*#__PURE__*/function (_MongooseError) { - _inherits(ObjectExpectedError, _MongooseError); - - var _super = _createSuper(ObjectExpectedError); - - /** - * Strict mode error constructor - * - * @param {string} type - * @param {string} value - * @api private - */ - function ObjectExpectedError(path, val) { - var _this; - - _classCallCheck(this, ObjectExpectedError); - - var typeDescription = Array.isArray(val) ? 'array' : 'primitive value'; - _this = _super.call(this, 'Tried to set nested object field `' + path + "` to ".concat(typeDescription, " `") + val + '`'); - _this.path = path; - return _this; - } - - return _createClass(ObjectExpectedError); -}(MongooseError); - -Object.defineProperty(ObjectExpectedError.prototype, 'name', { - value: 'ObjectExpectedError' -}); -module.exports = ObjectExpectedError; - -/***/ }), - -/***/ 900: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/*! - * Module dependencies. - */ - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -var MongooseError = __webpack_require__(4888); - -var ObjectParameterError = /*#__PURE__*/function (_MongooseError) { - _inherits(ObjectParameterError, _MongooseError); - - var _super = _createSuper(ObjectParameterError); - - /** - * Constructor for errors that happen when a parameter that's expected to be - * an object isn't an object - * - * @param {Any} value - * @param {String} paramName - * @param {String} fnName - * @api private - */ - function ObjectParameterError(value, paramName, fnName) { - _classCallCheck(this, ObjectParameterError); - - return _super.call(this, 'Parameter "' + paramName + '" to ' + fnName + '() must be an object, got ' + value.toString()); - } - - return _createClass(ObjectParameterError); -}(MongooseError); - -Object.defineProperty(ObjectParameterError.prototype, 'name', { - value: 'ObjectParameterError' -}); -module.exports = ObjectParameterError; - -/***/ }), - -/***/ 5676: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/*! - * Module dependencies. - */ - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -var MongooseError = __webpack_require__(4888); - -var OverwriteModelError = /*#__PURE__*/function (_MongooseError) { - _inherits(OverwriteModelError, _MongooseError); - - var _super = _createSuper(OverwriteModelError); - - /*! - * OverwriteModel Error constructor. - * @param {String} name - */ - function OverwriteModelError(name) { - _classCallCheck(this, OverwriteModelError); - - return _super.call(this, 'Cannot overwrite `' + name + '` model once compiled.'); - } - - return _createClass(OverwriteModelError); -}(MongooseError); - -Object.defineProperty(OverwriteModelError.prototype, 'name', { - value: 'OverwriteModelError' -}); -/*! - * exports - */ - -module.exports = OverwriteModelError; - -/***/ }), - -/***/ 5007: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -/*! - * Module dependencies. - */ - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -var MongooseError = __webpack_require__(4888); - -var ParallelSaveError = /*#__PURE__*/function (_MongooseError) { - _inherits(ParallelSaveError, _MongooseError); - - var _super = _createSuper(ParallelSaveError); - - /** - * ParallelSave Error constructor. - * - * @param {Document} doc - * @api private - */ - function ParallelSaveError(doc) { - _classCallCheck(this, ParallelSaveError); - - var msg = 'Can\'t save() the same doc multiple times in parallel. Document: '; - return _super.call(this, msg + doc._id); - } - - return _createClass(ParallelSaveError); -}(MongooseError); - -Object.defineProperty(ParallelSaveError.prototype, 'name', { - value: 'ParallelSaveError' -}); -/*! - * exports - */ - -module.exports = ParallelSaveError; - -/***/ }), - -/***/ 7962: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -/*! - * Module dependencies. - */ - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -var MongooseError = __webpack_require__(5202); - -var ParallelValidateError = /*#__PURE__*/function (_MongooseError) { - _inherits(ParallelValidateError, _MongooseError); - - var _super = _createSuper(ParallelValidateError); - - /** - * ParallelValidate Error constructor. - * - * @param {Document} doc - * @api private - */ - function ParallelValidateError(doc) { - _classCallCheck(this, ParallelValidateError); - - var msg = 'Can\'t validate() the same doc multiple times in parallel. Document: '; - return _super.call(this, msg + doc._id); - } - - return _createClass(ParallelValidateError); -}(MongooseError); - -Object.defineProperty(ParallelValidateError.prototype, 'name', { - value: 'ParallelValidateError' -}); -/*! - * exports - */ - -module.exports = ParallelValidateError; - -/***/ }), - -/***/ 1870: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/*! - * Module dependencies. - */ - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -var MongooseError = __webpack_require__(5202); - -var allServersUnknown = __webpack_require__(5285); - -var isAtlas = __webpack_require__(2082); - -var isSSLError = __webpack_require__(3871); -/*! - * ignore - */ - - -var atlasMessage = 'Could not connect to any servers in your MongoDB Atlas cluster. ' + 'One common reason is that you\'re trying to access the database from ' + 'an IP that isn\'t whitelisted. Make sure your current IP address is on your Atlas ' + 'cluster\'s IP whitelist: https://docs.atlas.mongodb.com/security-whitelist/'; -var sslMessage = 'Mongoose is connecting with SSL enabled, but the server is ' + 'not accepting SSL connections. Please ensure that the MongoDB server you are ' + 'connecting to is configured to accept SSL connections. Learn more: ' + 'https://mongoosejs.com/docs/tutorials/ssl.html'; - -var MongooseServerSelectionError = /*#__PURE__*/function (_MongooseError) { - _inherits(MongooseServerSelectionError, _MongooseError); - - var _super = _createSuper(MongooseServerSelectionError); - - function MongooseServerSelectionError() { - _classCallCheck(this, MongooseServerSelectionError); - - return _super.apply(this, arguments); - } - - _createClass(MongooseServerSelectionError, [{ - key: "assimilateError", - value: - /** - * MongooseServerSelectionError constructor - * - * @api private - */ - function assimilateError(err) { - var reason = err.reason; // Special message for a case that is likely due to IP whitelisting issues. - - var isAtlasWhitelistError = isAtlas(reason) && allServersUnknown(reason) && err.message.indexOf('bad auth') === -1 && err.message.indexOf('Authentication failed') === -1; - - if (isAtlasWhitelistError) { - this.message = atlasMessage; - } else if (isSSLError(reason)) { - this.message = sslMessage; - } else { - this.message = err.message; - } - - for (var key in err) { - if (key !== 'name') { - this[key] = err[key]; - } - } - - return this; - } - }]); - - return MongooseServerSelectionError; -}(MongooseError); - -Object.defineProperty(MongooseServerSelectionError.prototype, 'name', { - value: 'MongooseServerSelectionError' -}); -module.exports = MongooseServerSelectionError; - -/***/ }), - -/***/ 3328: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/*! - * Module dependencies. - */ - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -var MongooseError = __webpack_require__(4888); - -var StrictModeError = /*#__PURE__*/function (_MongooseError) { - _inherits(StrictModeError, _MongooseError); - - var _super = _createSuper(StrictModeError); - - /** - * Strict mode error constructor - * - * @param {String} path - * @param {String} [msg] - * @param {Boolean} [immutable] - * @inherits MongooseError - * @api private - */ - function StrictModeError(path, msg, immutable) { - var _this; - - _classCallCheck(this, StrictModeError); - - msg = msg || 'Field `' + path + '` is not in schema and strict ' + 'mode is set to throw.'; - _this = _super.call(this, msg); - _this.isImmutableError = !!immutable; - _this.path = path; - return _this; - } - - return _createClass(StrictModeError); -}(MongooseError); - -Object.defineProperty(StrictModeError.prototype, 'name', { - value: 'StrictModeError' -}); -module.exports = StrictModeError; - -/***/ }), - -/***/ 122: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/*! - * Module requirements - */ - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -var MongooseError = __webpack_require__(5202); - -var getConstructorName = __webpack_require__(1981); - -var util = __webpack_require__(161); - -var ValidationError = /*#__PURE__*/function (_MongooseError) { - _inherits(ValidationError, _MongooseError); - - var _super = _createSuper(ValidationError); - - /** - * Document Validation Error - * - * @api private - * @param {Document} [instance] - * @inherits MongooseError - */ - function ValidationError(instance) { - var _this; - - _classCallCheck(this, ValidationError); - - var _message; - - if (getConstructorName(instance) === 'model') { - _message = instance.constructor.modelName + ' validation failed'; - } else { - _message = 'Validation failed'; - } - - _this = _super.call(this, _message); - _this.errors = {}; - _this._message = _message; - - if (instance) { - instance.$errors = _this.errors; - } - - return _this; - } - /** - * Console.log helper - */ - - - _createClass(ValidationError, [{ - key: "toString", - value: function toString() { - return this.name + ': ' + _generateMessage(this); - } - /*! - * inspect helper - */ - - }, { - key: "inspect", - value: function inspect() { - return Object.assign(new Error(this.message), this); - } - /*! - * add message - */ - - }, { - key: "addError", - value: function addError(path, error) { - this.errors[path] = error; - this.message = this._message + ': ' + _generateMessage(this); - } - }]); - - return ValidationError; -}(MongooseError); - -if (util.inspect.custom) { - /*! - * Avoid Node deprecation warning DEP0079 - */ - ValidationError.prototype[util.inspect.custom] = ValidationError.prototype.inspect; -} -/*! - * Helper for JSON.stringify - * Ensure `name` and `message` show up in toJSON output re: gh-9847 - */ - - -Object.defineProperty(ValidationError.prototype, 'toJSON', { - enumerable: false, - writable: false, - configurable: true, - value: function value() { - return Object.assign({}, this, { - name: this.name, - message: this.message - }); - } -}); -Object.defineProperty(ValidationError.prototype, 'name', { - value: 'ValidationError' -}); -/*! - * ignore - */ - -function _generateMessage(err) { - var keys = Object.keys(err.errors || {}); - var len = keys.length; - var msgs = []; - var key; - - for (var i = 0; i < len; ++i) { - key = keys[i]; - - if (err === err.errors[key]) { - continue; - } - - msgs.push(key + ': ' + err.errors[key].message); - } - - return msgs.join(', '); -} -/*! - * Module exports - */ - - -module.exports = ValidationError; - -/***/ }), - -/***/ 2037: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/*! - * Module dependencies. - */ - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -var MongooseError = __webpack_require__(4888); - -var ValidatorError = /*#__PURE__*/function (_MongooseError) { - _inherits(ValidatorError, _MongooseError); - - var _super = _createSuper(ValidatorError); - - /** - * Schema validator error - * - * @param {Object} properties - * @api private - */ - function ValidatorError(properties) { - var _this; - - _classCallCheck(this, ValidatorError); - - var msg = properties.message; - - if (!msg) { - msg = MongooseError.messages.general["default"]; - } - - var message = formatMessage(msg, properties); - _this = _super.call(this, message); - properties = Object.assign({}, properties, { - message: message - }); - _this.properties = properties; - _this.kind = properties.type; - _this.path = properties.path; - _this.value = properties.value; - _this.reason = properties.reason; - return _this; - } - /*! - * toString helper - * TODO remove? This defaults to `${this.name}: ${this.message}` - */ - - - _createClass(ValidatorError, [{ - key: "toString", - value: function toString() { - return this.message; - } - /*! - * Ensure `name` and `message` show up in toJSON output re: gh-9296 - */ - - }, { - key: "toJSON", - value: function toJSON() { - return Object.assign({ - name: this.name, - message: this.message - }, this); - } - }]); - - return ValidatorError; -}(MongooseError); - -Object.defineProperty(ValidatorError.prototype, 'name', { - value: 'ValidatorError' -}); -/*! - * The object used to define this validator. Not enumerable to hide - * it from `require('util').inspect()` output re: gh-3925 - */ - -Object.defineProperty(ValidatorError.prototype, 'properties', { - enumerable: false, - writable: true, - value: null -}); // Exposed for testing - -ValidatorError.prototype.formatMessage = formatMessage; -/*! - * Formats error messages - */ - -function formatMessage(msg, properties) { - if (typeof msg === 'function') { - return msg(properties); - } - - var propertyNames = Object.keys(properties); - - for (var _i = 0, _propertyNames = propertyNames; _i < _propertyNames.length; _i++) { - var propertyName = _propertyNames[_i]; - - if (propertyName === 'message') { - continue; - } - - msg = msg.replace('{' + propertyName.toUpperCase() + '}', properties[propertyName]); - } - - return msg; -} -/*! - * exports - */ - - -module.exports = ValidatorError; - -/***/ }), - -/***/ 8809: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -/*! - * Module dependencies. - */ - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -var MongooseError = __webpack_require__(4888); - -var VersionError = /*#__PURE__*/function (_MongooseError) { - _inherits(VersionError, _MongooseError); - - var _super = _createSuper(VersionError); - - /** - * Version Error constructor. - * - * @param {Document} doc - * @param {Number} currentVersion - * @param {Array} modifiedPaths - * @api private - */ - function VersionError(doc, currentVersion, modifiedPaths) { - var _this; - - _classCallCheck(this, VersionError); - - var modifiedPathsStr = modifiedPaths.join(', '); - _this = _super.call(this, 'No matching document found for id "' + doc._id + '" version ' + currentVersion + ' modifiedPaths "' + modifiedPathsStr + '"'); - _this.version = currentVersion; - _this.modifiedPaths = modifiedPaths; - return _this; - } - - return _createClass(VersionError); -}(MongooseError); - -Object.defineProperty(VersionError.prototype, 'name', { - value: 'VersionError' -}); -/*! - * exports - */ - -module.exports = VersionError; - -/***/ }), - -/***/ 6069: -/***/ ((module) => { - -"use strict"; - - -module.exports = arrayDepth; - -function arrayDepth(arr) { - if (!Array.isArray(arr)) { - return { - min: 0, - max: 0, - containsNonArrayItem: true - }; - } - - if (arr.length === 0) { - return { - min: 1, - max: 1, - containsNonArrayItem: false - }; - } - - if (arr.length === 1 && !Array.isArray(arr[0])) { - return { - min: 1, - max: 1, - containsNonArrayItem: false - }; - } - - var res = arrayDepth(arr[0]); - - for (var i = 1; i < arr.length; ++i) { - var _res = arrayDepth(arr[i]); - - if (_res.min < res.min) { - res.min = _res.min; - } - - if (_res.max > res.max) { - res.max = _res.max; - } - - res.containsNonArrayItem = res.containsNonArrayItem || _res.containsNonArrayItem; - } - - res.min = res.min + 1; - res.max = res.max + 1; - return res; -} - -/***/ }), - -/***/ 1973: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var Decimal = __webpack_require__(5003); - -var ObjectId = __webpack_require__(6079); - -var specialProperties = __webpack_require__(2862); - -var isMongooseObject = __webpack_require__(6584); - -var getFunctionName = __webpack_require__(6749); - -var isBsonType = __webpack_require__(1563); - -var isObject = __webpack_require__(5721); - -var symbols = __webpack_require__(8770); - -var trustedSymbol = (__webpack_require__(3636).trustedSymbol); - -var utils = __webpack_require__(6872); -/*! - * Object clone with Mongoose natives support. - * - * If options.minimize is true, creates a minimal data object. Empty objects and undefined values will not be cloned. This makes the data payload sent to MongoDB as small as possible. - * - * Functions are never cloned. - * - * @param {Object} obj the object to clone - * @param {Object} options - * @param {Boolean} isArrayChild true if cloning immediately underneath an array. Special case for minimize. - * @return {Object} the cloned object - * @api private - */ - - -function clone(obj, options, isArrayChild) { - if (obj == null) { - return obj; - } - - if (Array.isArray(obj)) { - return cloneArray(utils.isMongooseArray(obj) ? obj.__array : obj, options); - } - - if (isMongooseObject(obj)) { - // Single nested subdocs should apply getters later in `applyGetters()` - // when calling `toObject()`. See gh-7442, gh-8295 - if (options && options._skipSingleNestedGetters && obj.$isSingleNested) { - options = Object.assign({}, options, { - getters: false - }); - } - - var isSingleNested = obj.$isSingleNested; - - if (utils.isPOJO(obj) && obj.$__ != null && obj._doc != null) { - return obj._doc; - } - - var ret; - - if (options && options.json && typeof obj.toJSON === 'function') { - ret = obj.toJSON(options); - } else { - ret = obj.toObject(options); - } - - if (options && options.minimize && isSingleNested && Object.keys(ret).length === 0) { - return undefined; - } - - return ret; - } - - var objConstructor = obj.constructor; - - if (objConstructor) { - switch (getFunctionName(objConstructor)) { - case 'Object': - return cloneObject(obj, options, isArrayChild); - - case 'Date': - return new objConstructor(+obj); - - case 'RegExp': - return cloneRegExp(obj); - - default: - // ignore - break; - } - } - - if (isBsonType(obj, 'ObjectID')) { - return new ObjectId(obj.id); - } - - if (isBsonType(obj, 'Decimal128')) { - if (options && options.flattenDecimals) { - return obj.toJSON(); - } - - return Decimal.fromString(obj.toString()); - } // object created with Object.create(null) - - - if (!objConstructor && isObject(obj)) { - return cloneObject(obj, options, isArrayChild); - } - - if (_typeof(obj) === 'object' && obj[symbols.schemaTypeSymbol]) { - return obj.clone(); - } // If we're cloning this object to go into a MongoDB command, - // and there's a `toBSON()` function, assume this object will be - // stored as a primitive in MongoDB and doesn't need to be cloned. - - - if (options && options.bson && typeof obj.toBSON === 'function') { - return obj; - } - - if (typeof obj.valueOf === 'function') { - return obj.valueOf(); - } - - return cloneObject(obj, options, isArrayChild); -} - -module.exports = clone; -/*! - * ignore - */ - -function cloneObject(obj, options, isArrayChild) { - var minimize = options && options.minimize; - var omitUndefined = options && options.omitUndefined; - var seen = options && options._seen; - var ret = {}; - var hasKeys; - - if (seen && seen.has(obj)) { - return seen.get(obj); - } else if (seen) { - seen.set(obj, ret); - } - - if (trustedSymbol in obj) { - ret[trustedSymbol] = obj[trustedSymbol]; - } - - var i = 0; - var key = ''; - var keys = Object.keys(obj); - var len = keys.length; - - for (i = 0; i < len; ++i) { - if (specialProperties.has(key = keys[i])) { - continue; - } // Don't pass `isArrayChild` down - - - var val = clone(obj[key], options, false); - - if ((minimize === false || omitUndefined) && typeof val === 'undefined') { - delete ret[key]; - } else if (minimize !== true || typeof val !== 'undefined') { - hasKeys || (hasKeys = true); - ret[key] = val; - } - } - - return minimize && !isArrayChild ? hasKeys && ret : ret; -} - -function cloneArray(arr, options) { - var i = 0; - var len = arr.length; - var ret = new Array(len); - - for (i = 0; i < len; ++i) { - ret[i] = clone(arr[i], options, true); - } - - return ret; -} - -function cloneRegExp(regexp) { - var ret = new RegExp(regexp.source, regexp.flags); - - if (ret.lastIndex !== regexp.lastIndex) { - ret.lastIndex = regexp.lastIndex; - } - - return ret; -} - -/***/ }), - -/***/ 2829: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; -var __webpack_unused_export__; -/* provided dependency */ var Buffer = __webpack_require__(365)["Buffer"]; - -/*! - * Module dependencies. - */ - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var Binary = (__webpack_require__(9906).get)().Binary; - -var isBsonType = __webpack_require__(1563); - -var isMongooseObject = __webpack_require__(6584); - -exports.x = flatten; -__webpack_unused_export__ = modifiedPaths; -/*! - * ignore - */ - -function flatten(update, path, options, schema) { - var keys; - - if (update && isMongooseObject(update) && !Buffer.isBuffer(update)) { - keys = Object.keys(update.toObject({ - transform: false, - virtuals: false - }) || {}); - } else { - keys = Object.keys(update || {}); - } - - var numKeys = keys.length; - var result = {}; - path = path ? path + '.' : ''; - - for (var i = 0; i < numKeys; ++i) { - var key = keys[i]; - var val = update[key]; - result[path + key] = val; // Avoid going into mixed paths if schema is specified - - var keySchema = schema && schema.path && schema.path(path + key); - var isNested = schema && schema.nested && schema.nested[path + key]; - if (keySchema && keySchema.instance === 'Mixed') continue; - - if (shouldFlatten(val)) { - if (options && options.skipArrays && Array.isArray(val)) { - continue; - } - - var flat = flatten(val, path + key, options, schema); - - for (var k in flat) { - result[k] = flat[k]; - } - - if (Array.isArray(val)) { - result[path + key] = val; - } - } - - if (isNested) { - var paths = Object.keys(schema.paths); - - for (var _i = 0, _paths = paths; _i < _paths.length; _i++) { - var p = _paths[_i]; - - if (p.startsWith(path + key + '.') && !result.hasOwnProperty(p)) { - result[p] = void 0; - } - } - } - } - - return result; -} -/*! - * ignore - */ - - -function modifiedPaths(update, path, result) { - var keys = Object.keys(update || {}); - var numKeys = keys.length; - result = result || {}; - path = path ? path + '.' : ''; - - for (var i = 0; i < numKeys; ++i) { - var key = keys[i]; - var val = update[key]; - - var _path = path + key; - - result[_path] = true; - - if (!Buffer.isBuffer(val) && isMongooseObject(val)) { - val = val.toObject({ - transform: false, - virtuals: false - }); - } - - if (shouldFlatten(val)) { - modifiedPaths(val, path + key, result); - } - } - - return result; -} -/*! - * ignore - */ - - -function shouldFlatten(val) { - return val && _typeof(val) === 'object' && !(val instanceof Date) && !isBsonType(val, 'ObjectID') && (!Array.isArray(val) || val.length !== 0) && !(val instanceof Buffer) && !isBsonType(val, 'Decimal128') && !(val instanceof Binary); -} - -/***/ }), - -/***/ 2794: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var isBsonType = __webpack_require__(1563); - -module.exports = function areDiscriminatorValuesEqual(a, b) { - if (typeof a === 'string' && typeof b === 'string') { - return a === b; - } - - if (typeof a === 'number' && typeof b === 'number') { - return a === b; - } - - if (isBsonType(a, 'ObjectID') && isBsonType(b, 'ObjectID')) { - return a.toString() === b.toString(); - } - - return false; -}; - -/***/ }), - -/***/ 4531: -/***/ ((module) => { - -"use strict"; - - -module.exports = function checkEmbeddedDiscriminatorKeyProjection(userProjection, path, schema, selected, addedPaths) { - var userProjectedInPath = Object.keys(userProjection).reduce(function (cur, key) { - return cur || key.startsWith(path + '.'); - }, false); - - var _discriminatorKey = path + '.' + schema.options.discriminatorKey; - - if (!userProjectedInPath && addedPaths.length === 1 && addedPaths[0] === _discriminatorKey) { - selected.splice(selected.indexOf(_discriminatorKey), 1); - } -}; - -/***/ }), - -/***/ 8413: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var getDiscriminatorByValue = __webpack_require__(7291); -/*! - * Find the correct constructor, taking into account discriminators - */ - - -module.exports = function getConstructor(Constructor, value) { - var discriminatorKey = Constructor.schema.options.discriminatorKey; - - if (value != null && Constructor.discriminators && value[discriminatorKey] != null) { - if (Constructor.discriminators[value[discriminatorKey]]) { - Constructor = Constructor.discriminators[value[discriminatorKey]]; - } else { - var constructorByValue = getDiscriminatorByValue(Constructor.discriminators, value[discriminatorKey]); - - if (constructorByValue) { - Constructor = constructorByValue; - } - } - } - - return Constructor; -}; - -/***/ }), - -/***/ 7291: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var areDiscriminatorValuesEqual = __webpack_require__(2794); -/*! -* returns discriminator by discriminatorMapping.value -* -* @param {Model} model -* @param {string} value -*/ - - -module.exports = function getDiscriminatorByValue(discriminators, value) { - if (discriminators == null) { - return null; - } - - for (var _i = 0, _Object$keys = Object.keys(discriminators); _i < _Object$keys.length; _i++) { - var name = _Object$keys[_i]; - var it = discriminators[name]; - - if (it.schema && it.schema.discriminatorMapping && areDiscriminatorValuesEqual(it.schema.discriminatorMapping.value, value)) { - return it; - } - } - - return null; -}; - -/***/ }), - -/***/ 2392: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var areDiscriminatorValuesEqual = __webpack_require__(2794); -/*! -* returns discriminator by discriminatorMapping.value -* -* @param {Schema} schema -* @param {string} value -*/ - - -module.exports = function getSchemaDiscriminatorByValue(schema, value) { - if (schema == null || schema.discriminators == null) { - return null; - } - - for (var _i = 0, _Object$keys = Object.keys(schema.discriminators); _i < _Object$keys.length; _i++) { - var key = _Object$keys[_i]; - var discriminatorSchema = schema.discriminators[key]; - - if (discriminatorSchema.discriminatorMapping == null) { - continue; - } - - if (areDiscriminatorValuesEqual(discriminatorSchema.discriminatorMapping.value, value)) { - return discriminatorSchema; - } - } - - return null; -}; - -/***/ }), - -/***/ 4134: -/***/ ((module) => { - -"use strict"; - -/*! - * ignore - */ - -module.exports = function cleanModifiedSubpaths(doc, path, options) { - options = options || {}; - var skipDocArrays = options.skipDocArrays; - var deleted = 0; - - if (!doc) { - return deleted; - } - - for (var _i = 0, _Object$keys = Object.keys(doc.$__.activePaths.states.modify); _i < _Object$keys.length; _i++) { - var modifiedPath = _Object$keys[_i]; - - if (skipDocArrays) { - var schemaType = doc.$__schema.path(modifiedPath); - - if (schemaType && schemaType.$isMongooseDocumentArray) { - continue; - } - } - - if (modifiedPath.startsWith(path + '.')) { - delete doc.$__.activePaths.states.modify[modifiedPath]; - ++deleted; - - if (doc.$isSubdocument) { - var owner = doc.ownerDocument(); - var fullPath = doc.$__fullPath(modifiedPath); - delete owner.$__.activePaths.states.modify[fullPath]; - } - } - } - - return deleted; -}; - -/***/ }), - -/***/ 8724: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - - -var documentSchemaSymbol = (__webpack_require__(8770).documentSchemaSymbol); - -var internalToObjectOptions = (__webpack_require__(4962)/* .internalToObjectOptions */ .h); - -var utils = __webpack_require__(6872); - -var Document; - -var getSymbol = (__webpack_require__(8770).getSymbol); - -var scopeSymbol = (__webpack_require__(8770).scopeSymbol); - -var isPOJO = utils.isPOJO; -/*! - * exports - */ - -exports.M = compile; -exports.c = defineKey; -/*! - * Compiles schemas. - */ - -function compile(tree, proto, prefix, options) { - Document = Document || __webpack_require__(8727); - var typeKey = options.typeKey; - - for (var _i = 0, _Object$keys = Object.keys(tree); _i < _Object$keys.length; _i++) { - var key = _Object$keys[_i]; - var limb = tree[key]; - var hasSubprops = isPOJO(limb) && Object.keys(limb).length > 0 && (!limb[typeKey] || typeKey === 'type' && isPOJO(limb.type) && limb.type.type); - var subprops = hasSubprops ? limb : null; - defineKey({ - prop: key, - subprops: subprops, - prototype: proto, - prefix: prefix, - options: options - }); - } -} -/*! - * Defines the accessor named prop on the incoming prototype. - */ - - -function defineKey(_ref) { - var prop = _ref.prop, - subprops = _ref.subprops, - prototype = _ref.prototype, - prefix = _ref.prefix, - options = _ref.options; - Document = Document || __webpack_require__(8727); - var path = (prefix ? prefix + '.' : '') + prop; - prefix = prefix || ''; - - if (subprops) { - Object.defineProperty(prototype, prop, { - enumerable: true, - configurable: true, - get: function get() { - var _this = this; - - if (!this.$__.getters) { - this.$__.getters = {}; - } - - if (!this.$__.getters[path]) { - var nested = Object.create(Document.prototype, getOwnPropertyDescriptors(this)); // save scope for nested getters/setters - - if (!prefix) { - nested.$__[scopeSymbol] = this; - } - - nested.$__.nestedPath = path; - Object.defineProperty(nested, 'schema', { - enumerable: false, - configurable: true, - writable: false, - value: prototype.schema - }); - Object.defineProperty(nested, '$__schema', { - enumerable: false, - configurable: true, - writable: false, - value: prototype.schema - }); - Object.defineProperty(nested, documentSchemaSymbol, { - enumerable: false, - configurable: true, - writable: false, - value: prototype.schema - }); - Object.defineProperty(nested, 'toObject', { - enumerable: false, - configurable: true, - writable: false, - value: function value() { - return utils.clone(_this.get(path, null, { - virtuals: this && this.schema && this.schema.options && this.schema.options.toObject && this.schema.options.toObject.virtuals || null - })); - } - }); - Object.defineProperty(nested, '$__get', { - enumerable: false, - configurable: true, - writable: false, - value: function value() { - return _this.get(path, null, { - virtuals: this && this.schema && this.schema.options && this.schema.options.toObject && this.schema.options.toObject.virtuals || null - }); - } - }); - Object.defineProperty(nested, 'toJSON', { - enumerable: false, - configurable: true, - writable: false, - value: function value() { - return _this.get(path, null, { - virtuals: this && this.schema && this.schema.options && this.schema.options.toJSON && this.schema.options.toJSON.virtuals || null - }); - } - }); - Object.defineProperty(nested, '$__isNested', { - enumerable: false, - configurable: true, - writable: false, - value: true - }); - - var _isEmptyOptions = Object.freeze({ - minimize: true, - virtuals: false, - getters: false, - transform: false - }); - - Object.defineProperty(nested, '$isEmpty', { - enumerable: false, - configurable: true, - writable: false, - value: function value() { - return Object.keys(this.get(path, null, _isEmptyOptions) || {}).length === 0; - } - }); - Object.defineProperty(nested, '$__parent', { - enumerable: false, - configurable: true, - writable: false, - value: this - }); - compile(subprops, nested, path, options); - this.$__.getters[path] = nested; - } - - return this.$__.getters[path]; - }, - set: function set(v) { - if (v != null && v.$__isNested) { - // Convert top-level to POJO, but leave subdocs hydrated so `$set` - // can handle them. See gh-9293. - v = v.$__get(); - } else if (v instanceof Document && !v.$__isNested) { - v = v.$toObject(internalToObjectOptions); - } - - var doc = this.$__[scopeSymbol] || this; - doc.$set(path, v); - } - }); - } else { - Object.defineProperty(prototype, prop, { - enumerable: true, - configurable: true, - get: function get() { - return this[getSymbol].call(this.$__[scopeSymbol] || this, path); - }, - set: function set(v) { - this.$set.call(this.$__[scopeSymbol] || this, path, v); - } - }); - } -} // gets descriptors for all properties of `object` -// makes all properties non-enumerable to match previous behavior to #2211 - - -function getOwnPropertyDescriptors(object) { - var result = {}; - Object.getOwnPropertyNames(object).forEach(function (key) { - var skip = ['isNew', '$__', '$errors', 'errors', '_doc', '$locals', '$op', '__parentArray', '__index', '$isDocumentArrayElement'].indexOf(key) === -1; - - if (skip) { - return; - } - - result[key] = Object.getOwnPropertyDescriptor(object, key); - result[key].enumerable = false; - }); - return result; -} - -/***/ }), - -/***/ 111: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var get = __webpack_require__(9981); - -var getSchemaDiscriminatorByValue = __webpack_require__(2392); -/*! - * Like `schema.path()`, except with a document, because impossible to - * determine path type without knowing the embedded discriminator key. - */ - - -module.exports = function getEmbeddedDiscriminatorPath(doc, path, options) { - options = options || {}; - var typeOnly = options.typeOnly; - var parts = path.indexOf('.') === -1 ? [path] : path.split('.'); - var schemaType = null; - var type = 'adhocOrUndefined'; - var schema = getSchemaDiscriminatorByValue(doc.schema, doc.get(doc.schema.options.discriminatorKey)) || doc.schema; - - for (var i = 0; i < parts.length; ++i) { - var subpath = parts.slice(0, i + 1).join('.'); - schemaType = schema.path(subpath); - - if (schemaType == null) { - type = 'adhocOrUndefined'; - continue; - } - - if (schemaType.instance === 'Mixed') { - return typeOnly ? 'real' : schemaType; - } - - type = schema.pathType(subpath); - - if ((schemaType.$isSingleNested || schemaType.$isMongooseDocumentArrayElement) && schemaType.schema.discriminators != null) { - var discriminators = schemaType.schema.discriminators; - var discriminatorKey = doc.get(subpath + '.' + get(schemaType, 'schema.options.discriminatorKey')); - - if (discriminatorKey == null || discriminators[discriminatorKey] == null) { - continue; - } - - var rest = parts.slice(i + 1).join('.'); - return getEmbeddedDiscriminatorPath(doc.get(subpath), rest, options); - } - } // Are we getting the whole schema or just the type, 'real', 'nested', etc. - - - return typeOnly ? type : schemaType; -}; - -/***/ }), - -/***/ 719: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } - -function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var utils = __webpack_require__(6872); - -var keysToSkip = new Set(['__index', '__parentArray', '_doc']); -/** - * Using spread operator on a Mongoose document gives you a - * POJO that has a tendency to cause infinite recursion. So - * we use this function on `set()` to prevent that. - */ - -module.exports = function handleSpreadDoc(v, includeExtraKeys) { - if (utils.isPOJO(v) && v.$__ != null && v._doc != null) { - if (includeExtraKeys) { - var extraKeys = {}; - - for (var _i = 0, _Object$keys = Object.keys(v); _i < _Object$keys.length; _i++) { - var key = _Object$keys[_i]; - - if (_typeof(key) === 'symbol') { - continue; - } - - if (key[0] === '$') { - continue; - } - - if (keysToSkip.has(key)) { - continue; - } - - extraKeys[key] = v[key]; - } - - return _objectSpread(_objectSpread({}, v._doc), extraKeys); - } - - return v._doc; - } - - return v; -}; - -/***/ }), - -/***/ 9981: -/***/ ((module) => { - -"use strict"; - -/*! - * Simplified lodash.get to work around the annoying null quirk. See: - * https://github.com/lodash/lodash/issues/3659 - */ - -function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } - -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } - -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - -module.exports = function get(obj, path, def) { - var parts; - var isPathArray = false; - - if (typeof path === 'string') { - if (path.indexOf('.') === -1) { - var _v = getProperty(obj, path); - - if (_v == null) { - return def; - } - - return _v; - } - - parts = path.split('.'); - } else { - isPathArray = true; - parts = path; - - if (parts.length === 1) { - var _v2 = getProperty(obj, parts[0]); - - if (_v2 == null) { - return def; - } - - return _v2; - } - } - - var rest = path; - var cur = obj; - - var _iterator = _createForOfIteratorHelper(parts), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var part = _step.value; - - if (cur == null) { - return def; - } // `lib/cast.js` depends on being able to get dotted paths in updates, - // like `{ $set: { 'a.b': 42 } }` - - - if (!isPathArray && cur[rest] != null) { - return cur[rest]; - } - - cur = getProperty(cur, part); - - if (!isPathArray) { - rest = rest.substr(part.length + 1); - } - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - return cur == null ? def : cur; -}; - -function getProperty(obj, prop) { - if (obj == null) { - return obj; - } - - if (obj instanceof Map) { - return obj.get(prop); - } - - return obj[prop]; -} - -/***/ }), - -/***/ 1981: -/***/ ((module) => { - -"use strict"; - -/*! - * If `val` is an object, returns constructor name, if possible. Otherwise returns undefined. - */ - -module.exports = function getConstructorName(val) { - if (val == null) { - return void 0; - } - - if (typeof val.constructor !== 'function') { - return void 0; - } - - return val.constructor.name; -}; - -/***/ }), - -/***/ 6749: -/***/ ((module) => { - -"use strict"; - - -var functionNameRE = /^function\s*([^\s(]+)/; - -module.exports = function (fn) { - return fn.name || (fn.toString().trim().match(functionNameRE) || [])[1]; -}; - -/***/ }), - -/***/ 1490: -/***/ ((module) => { - -"use strict"; -/*! - * Centralize this so we can more easily work around issues with people - * stubbing out `process.nextTick()` in tests using sinon: - * https://github.com/sinonjs/lolex#automatically-incrementing-mocked-time - * See gh-6074 - */ - - -var nextTick = typeof ({env:{}}) !== 'undefined' && typeof ({env:{}}).nextTick === 'function' ? ({env:{}}).nextTick.bind(({env:{}})) : function (cb) { - return setTimeout(cb, 0); -}; // Fallback for browser build - -module.exports = function immediate(cb) { - return nextTick(cb); -}; - -/***/ }), - -/***/ 1605: -/***/ ((module) => { - -"use strict"; - - -module.exports = function decorateDiscriminatorIndexOptions(schema, indexOptions) { - // If the model is a discriminator and has an index, add a - // partialFilterExpression by default so the index will only apply - // to that discriminator. - var discriminatorName = schema.discriminatorMapping && schema.discriminatorMapping.value; - - if (discriminatorName && !('sparse' in indexOptions)) { - var discriminatorKey = schema.options.discriminatorKey; - indexOptions.partialFilterExpression = indexOptions.partialFilterExpression || {}; - indexOptions.partialFilterExpression[discriminatorKey] = discriminatorName; - } - - return indexOptions; -}; - -/***/ }), - -/***/ 8857: -/***/ ((module) => { - -"use strict"; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return generator._invoke = function (innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; }(innerFn, self, context), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; this._invoke = function (method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); }; } function maybeInvokeDelegate(delegate, context) { var method = delegate.iterator[context.method]; if (undefined === method) { if (context.delegate = null, "throw" === context.method) { if (delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method)) return ContinueSentinel; context.method = "throw", context.arg = new TypeError("The iterator does not provide a 'throw' method"); } return ContinueSentinel; } var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, "constructor", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (object) { var keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; } - -function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - -function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - -var asyncFunctionPrototype = null; // try/catch for Babel compatibility, because Babel preset-env requires -// regenerator-runtime for async/await and we don't want to include that -// for a simple check. - -try { - asyncFunctionPrototype = Object.getPrototypeOf( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { - return _regeneratorRuntime().wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - case "end": - return _context.stop(); - } - } - }, _callee); - }))); -} catch (err) {} - -if (asyncFunctionPrototype == null) { - module.exports = function isAsyncFunction() { - return false; - }; -} else { - module.exports = function isAsyncFunction(v) { - return typeof v === 'function' && Object.getPrototypeOf(v) === asyncFunctionPrototype; - }; -} - -/***/ }), - -/***/ 1563: -/***/ ((module) => { - -"use strict"; - -/*! - * Get the bson type, if it exists - */ - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function isBsonType(obj, typename) { - return _typeof(obj) === 'object' && obj !== null && obj._bsontype === typename; -} - -module.exports = isBsonType; - -/***/ }), - -/***/ 6584: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var isMongooseArray = (__webpack_require__(7339).isMongooseArray); -/*! - * Returns if `v` is a mongoose object that has a `toObject()` method we can use. - * - * This is for compatibility with libs like Date.js which do foolish things to Natives. - * - * @param {any} v - * @api private - */ - - -module.exports = function (v) { - return v != null && (isMongooseArray(v) || // Array or Document Array - v.$__ != null || // Document - v.isMongooseBuffer || // Buffer - v.$isMongooseMap // Map - ); -}; - -/***/ }), - -/***/ 5721: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/* provided dependency */ var Buffer = __webpack_require__(365)["Buffer"]; - -/*! - * Determines if `arg` is an object. - * - * @param {Object|Array|String|Function|RegExp|any} arg - * @api private - * @return {Boolean} - */ - -module.exports = function (arg) { - return Buffer.isBuffer(arg) || Object.prototype.toString.call(arg) === '[object Object]'; -}; - -/***/ }), - -/***/ 5543: -/***/ ((module) => { - -"use strict"; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function isPromise(val) { - return !!val && (_typeof(val) === 'object' || typeof val === 'function') && typeof val.then === 'function'; -} - -module.exports = isPromise; - -/***/ }), - -/***/ 9130: -/***/ ((module) => { - -"use strict"; - -/*! - * Determines if `arg` is a flat object. - * - * @param {Object|Array|String|Function|RegExp|any} arg - * @api private - * @return {Boolean} - */ - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -module.exports = function isSimpleValidator(obj) { - var keys = Object.keys(obj); - var result = true; - - for (var i = 0, len = keys.length; i < len; ++i) { - if (_typeof(obj[keys[i]]) === 'object' && obj[keys[i]] !== null) { - result = false; - break; - } - } - - return result; -}; - -/***/ }), - -/***/ 8859: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var symbols = __webpack_require__(8107); - -var promiseOrCallback = __webpack_require__(8486); -/*! - * ignore - */ - - -module.exports = applyHooks; -/*! - * ignore - */ - -applyHooks.middlewareFunctions = ['deleteOne', 'save', 'validate', 'remove', 'updateOne', 'init']; -/*! - * Register hooks for this model - * - * @param {Model} model - * @param {Schema} schema - */ - -function applyHooks(model, schema, options) { - options = options || {}; - var kareemOptions = { - useErrorHandlers: true, - numCallbackParams: 1, - nullResultByDefault: true, - contextParameter: true - }; - var objToDecorate = options.decorateDoc ? model : model.prototype; - model.$appliedHooks = true; - - for (var _i = 0, _Object$keys = Object.keys(schema.paths); _i < _Object$keys.length; _i++) { - var key = _Object$keys[_i]; - var type = schema.paths[key]; - var childModel = null; - - if (type.$isSingleNested) { - childModel = type.caster; - } else if (type.$isMongooseDocumentArray) { - childModel = type.Constructor; - } else { - continue; - } - - if (childModel.$appliedHooks) { - continue; - } - - applyHooks(childModel, type.schema, options); - - if (childModel.discriminators != null) { - var keys = Object.keys(childModel.discriminators); - - for (var _i2 = 0, _keys = keys; _i2 < _keys.length; _i2++) { - var _key = _keys[_i2]; - applyHooks(childModel.discriminators[_key], childModel.discriminators[_key].schema, options); - } - } - } // Built-in hooks rely on hooking internal functions in order to support - // promises and make it so that `doc.save.toString()` provides meaningful - // information. - - - var middleware = schema.s.hooks.filter(function (hook) { - if (hook.name === 'updateOne' || hook.name === 'deleteOne') { - return !!hook['document']; - } - - if (hook.name === 'remove' || hook.name === 'init') { - return hook['document'] == null || !!hook['document']; - } - - if (hook.query != null || hook.document != null) { - return hook.document !== false; - } - - return true; - }).filter(function (hook) { - // If user has overwritten the method, don't apply built-in middleware - if (schema.methods[hook.name]) { - return !hook.fn[symbols.builtInMiddleware]; - } - - return true; - }); - model._middleware = middleware; - objToDecorate.$__originalValidate = objToDecorate.$__originalValidate || objToDecorate.$__validate; - - for (var _i3 = 0, _arr = ['save', 'validate', 'remove', 'deleteOne']; _i3 < _arr.length; _i3++) { - var method = _arr[_i3]; - var toWrap = method === 'validate' ? '$__originalValidate' : "$__".concat(method); - var wrapped = middleware.createWrapper(method, objToDecorate[toWrap], null, kareemOptions); - objToDecorate["$__".concat(method)] = wrapped; - } - - objToDecorate.$__init = middleware.createWrapperSync('init', objToDecorate.$__init, null, kareemOptions); // Support hooks for custom methods - - var customMethods = Object.keys(schema.methods); - var customMethodOptions = Object.assign({}, kareemOptions, { - // Only use `checkForPromise` for custom methods, because mongoose - // query thunks are not as consistent as I would like about returning - // a nullish value rather than the query. If a query thunk returns - // a query, `checkForPromise` causes infinite recursion - checkForPromise: true - }); - - var _loop = function _loop() { - var method = _customMethods[_i4]; - - if (!middleware.hasHooks(method)) { - // Don't wrap if there are no hooks for the custom method to avoid - // surprises. Also, `createWrapper()` enforces consistent async, - // so wrapping a sync method would break it. - return "continue"; - } - - var originalMethod = objToDecorate[method]; - - objToDecorate[method] = function () { - var _this = this; - - var args = Array.prototype.slice.call(arguments); - var cb = args.slice(-1).pop(); - var argsWithoutCallback = typeof cb === 'function' ? args.slice(0, args.length - 1) : args; - return promiseOrCallback(cb, function (callback) { - return _this["$__".concat(method)].apply(_this, argsWithoutCallback.concat([callback])); - }, model.events); - }; - - objToDecorate["$__".concat(method)] = middleware.createWrapper(method, originalMethod, null, customMethodOptions); - }; - - for (var _i4 = 0, _customMethods = customMethods; _i4 < _customMethods.length; _i4++) { - var _ret = _loop(); - - if (_ret === "continue") continue; - } -} - -/***/ }), - -/***/ 9181: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } - -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } - -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - -var Mixed = __webpack_require__(3861); - -var defineKey = (__webpack_require__(8724)/* .defineKey */ .c); - -var get = __webpack_require__(9981); - -var utils = __webpack_require__(6872); - -var CUSTOMIZABLE_DISCRIMINATOR_OPTIONS = { - toJSON: true, - toObject: true, - _id: true, - id: true -}; -/*! - * ignore - */ - -module.exports = function discriminator(model, name, schema, tiedValue, applyPlugins) { - if (!(schema && schema.instanceOfSchema)) { - throw new Error('You must pass a valid discriminator Schema'); - } - - if (model.schema.discriminatorMapping && !model.schema.discriminatorMapping.isRoot) { - throw new Error('Discriminator "' + name + '" can only be a discriminator of the root model'); - } - - if (applyPlugins) { - var applyPluginsToDiscriminators = get(model.base, 'options.applyPluginsToDiscriminators', false); // Even if `applyPluginsToDiscriminators` isn't set, we should still apply - // global plugins to schemas embedded in the discriminator schema (gh-7370) - - model.base._applyPlugins(schema, { - skipTopLevel: !applyPluginsToDiscriminators - }); - } - - var key = model.schema.options.discriminatorKey; - var existingPath = model.schema.path(key); - - if (existingPath != null) { - if (!utils.hasUserDefinedProperty(existingPath.options, 'select')) { - existingPath.options.select = true; - } - - existingPath.options.$skipDiscriminatorCheck = true; - } else { - var baseSchemaAddition = {}; - baseSchemaAddition[key] = { - "default": void 0, - select: true, - $skipDiscriminatorCheck: true - }; - baseSchemaAddition[key][model.schema.options.typeKey] = String; - model.schema.add(baseSchemaAddition); - defineKey({ - prop: key, - prototype: model.prototype, - options: model.schema.options - }); - } - - if (schema.path(key) && schema.path(key).options.$skipDiscriminatorCheck !== true) { - throw new Error('Discriminator "' + name + '" cannot have field with name "' + key + '"'); - } - - var value = name; - - if (typeof tiedValue === 'string' && tiedValue.length || tiedValue != null) { - value = tiedValue; - } - - function merge(schema, baseSchema) { - // Retain original schema before merging base schema - schema._baseSchema = baseSchema; - - if (baseSchema.paths._id && baseSchema.paths._id.options && !baseSchema.paths._id.options.auto) { - schema.remove('_id'); - } // Find conflicting paths: if something is a path in the base schema - // and a nested path in the child schema, overwrite the base schema path. - // See gh-6076 - - - var baseSchemaPaths = Object.keys(baseSchema.paths); - var conflictingPaths = []; - - for (var _i = 0, _baseSchemaPaths = baseSchemaPaths; _i < _baseSchemaPaths.length; _i++) { - var path = _baseSchemaPaths[_i]; - - if (schema.nested[path]) { - conflictingPaths.push(path); - continue; - } - - if (path.indexOf('.') === -1) { - continue; - } - - var sp = path.split('.').slice(0, -1); - var cur = ''; - - var _iterator = _createForOfIteratorHelper(sp), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var piece = _step.value; - cur += (cur.length ? '.' : '') + piece; - - if (schema.paths[cur] instanceof Mixed || schema.singleNestedPaths[cur] instanceof Mixed) { - conflictingPaths.push(path); - } - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - } - - utils.merge(schema, baseSchema, { - isDiscriminatorSchemaMerge: true, - omit: { - discriminators: true, - base: true, - _applyDiscriminators: true - }, - omitNested: conflictingPaths.reduce(function (cur, path) { - cur['tree.' + path] = true; - return cur; - }, {}) - }); // Clean up conflicting paths _after_ merging re: gh-6076 - - for (var _i2 = 0, _conflictingPaths = conflictingPaths; _i2 < _conflictingPaths.length; _i2++) { - var conflictingPath = _conflictingPaths[_i2]; - delete schema.paths[conflictingPath]; - } // Rebuild schema models because schemas may have been merged re: #7884 - - - schema.childSchemas.forEach(function (obj) { - obj.model.prototype.$__setSchema(obj.schema); - }); - var obj = {}; - obj[key] = { - "default": value, - select: true, - set: function set(newName) { - if (newName === value || Array.isArray(value) && utils.deepEqual(newName, value)) { - return value; - } - - throw new Error('Can\'t set discriminator key "' + key + '"'); - }, - $skipDiscriminatorCheck: true - }; - obj[key][schema.options.typeKey] = existingPath ? existingPath.options[schema.options.typeKey] : String; - schema.add(obj); - schema.discriminatorMapping = { - key: key, - value: value, - isRoot: false - }; - - if (baseSchema.options.collection) { - schema.options.collection = baseSchema.options.collection; - } - - var toJSON = schema.options.toJSON; - var toObject = schema.options.toObject; - var _id = schema.options._id; - var id = schema.options.id; - var keys = Object.keys(schema.options); - schema.options.discriminatorKey = baseSchema.options.discriminatorKey; - - for (var _i3 = 0, _keys = keys; _i3 < _keys.length; _i3++) { - var _key = _keys[_i3]; - - if (!CUSTOMIZABLE_DISCRIMINATOR_OPTIONS[_key]) { - // Special case: compiling a model sets `pluralization = true` by default. Avoid throwing an error - // for that case. See gh-9238 - if (_key === 'pluralization' && schema.options[_key] == true && baseSchema.options[_key] == null) { - continue; - } - - if (!utils.deepEqual(schema.options[_key], baseSchema.options[_key])) { - throw new Error('Can\'t customize discriminator option ' + _key + ' (can only modify ' + Object.keys(CUSTOMIZABLE_DISCRIMINATOR_OPTIONS).join(', ') + ')'); - } - } - } - - schema.options = utils.clone(baseSchema.options); - if (toJSON) schema.options.toJSON = toJSON; - if (toObject) schema.options.toObject = toObject; - - if (typeof _id !== 'undefined') { - schema.options._id = _id; - } - - schema.options.id = id; - schema.s.hooks = model.schema.s.hooks.merge(schema.s.hooks); - schema.plugins = Array.prototype.slice.call(baseSchema.plugins); - schema.callQueue = baseSchema.callQueue.concat(schema.callQueue); - delete schema._requiredpaths; // reset just in case Schema#requiredPaths() was called on either schema - } // merges base schema into new discriminator schema and sets new type field. - - - merge(schema, model.schema); - - if (!model.discriminators) { - model.discriminators = {}; - } - - if (!model.schema.discriminatorMapping) { - model.schema.discriminatorMapping = { - key: key, - value: null, - isRoot: true - }; - } - - if (!model.schema.discriminators) { - model.schema.discriminators = {}; - } - - model.schema.discriminators[name] = schema; - - if (model.discriminators[name] && !schema.options.overwriteModels) { - throw new Error('Discriminator with name "' + name + '" already exists'); - } - - return schema; -}; - -/***/ }), - -/***/ 207: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var MongooseError = __webpack_require__(5202); - -var setDottedPath = __webpack_require__(2736); - -var util = __webpack_require__(161); -/** - * Given an object that may contain dotted paths, flatten the paths out. - * For example: `flattenObjectWithDottedPaths({ a: { 'b.c': 42 } })` => `{ a: { b: { c: 42 } } }` - */ - - -module.exports = function flattenObjectWithDottedPaths(obj) { - if (obj == null || _typeof(obj) !== 'object' || Array.isArray(obj)) { - return; - } // Avoid Mongoose docs - - - if (obj.$__) { - return; - } - - var keys = Object.keys(obj); - - for (var _i = 0, _keys = keys; _i < _keys.length; _i++) { - var key = _keys[_i]; - var val = obj[key]; - - if (key.indexOf('.') !== -1) { - try { - delete obj[key]; - setDottedPath(obj, key, val); - } catch (err) { - if (!(err instanceof TypeError)) { - throw err; - } - - throw new MongooseError("Conflicting dotted paths when setting document path, key: \"".concat(key, "\", value: ").concat(util.inspect(val))); - } - - continue; - } - - flattenObjectWithDottedPaths(obj[key]); - } -}; - -/***/ }), - -/***/ 251: -/***/ ((module) => { - -"use strict"; - - -var dotRE = /\./g; - -module.exports = function parentPaths(path) { - if (path.indexOf('.') === -1) { - return [path]; - } - - var pieces = path.split(dotRE); - var len = pieces.length; - var ret = new Array(len); - var cur = ''; - - for (var i = 0; i < len; ++i) { - cur += cur.length !== 0 ? '.' + pieces[i] : pieces[i]; - ret[i] = cur; - } - - return ret; -}; - -/***/ }), - -/***/ 2736: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } - -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } - -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - -var specialProperties = __webpack_require__(2862); - -module.exports = function setDottedPath(obj, path, val) { - if (path.indexOf('.') === -1) { - if (specialProperties.has(path)) { - return; - } - - obj[path] = val; - return; - } - - var parts = path.split('.'); - var last = parts.pop(); - var cur = obj; - - var _iterator = _createForOfIteratorHelper(parts), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var part = _step.value; - - if (specialProperties.has(part)) { - continue; - } - - if (cur[part] == null) { - cur[part] = {}; - } - - cur = cur[part]; - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - if (!specialProperties.has(last)) { - cur[last] = val; - } -}; - -/***/ }), - -/***/ 5837: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } - -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } - -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - -var utils = __webpack_require__(6872); -/*! - * If populating a path within a document array, make sure each - * subdoc within the array knows its subpaths are populated. - * - * #### Example: - * const doc = await Article.findOne().populate('comments.author'); - * doc.comments[0].populated('author'); // Should be set - */ - - -module.exports = function markArraySubdocsPopulated(doc, populated) { - if (doc._id == null || populated == null || populated.length === 0) { - return; - } - - var id = String(doc._id); - - var _iterator = _createForOfIteratorHelper(populated), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var item = _step.value; - - if (item.isVirtual) { - continue; - } - - var path = item.path; - var pieces = path.split('.'); - - for (var i = 0; i < pieces.length - 1; ++i) { - var subpath = pieces.slice(0, i + 1).join('.'); - var rest = pieces.slice(i + 1).join('.'); - var val = doc.get(subpath); - - if (val == null) { - continue; - } - - if (utils.isMongooseDocumentArray(val)) { - for (var j = 0; j < val.length; ++j) { - val[j].populated(rest, item._docs[id] == null ? void 0 : item._docs[id][j], item); - } - - break; - } - } - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } -}; - -/***/ }), - -/***/ 6870: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var MongooseError = __webpack_require__(5202); - -var util = __webpack_require__(161); - -module.exports = validateRef; - -function validateRef(ref, path) { - if (typeof ref === 'string') { - return; - } - - if (typeof ref === 'function') { - return; - } - - throw new MongooseError('Invalid ref at path "' + path + '". Got ' + util.inspect(ref, { - depth: 0 - })); -} - -/***/ }), - -/***/ 7427: -/***/ ((module) => { - -"use strict"; - -/*! - * Creates an object that precomputes whether a given path has child fields in - * the projection. - * - * #### Example: - * const res = hasIncludedChildren({ 'a.b.c': 0 }); - * res.a; // 1 - * res['a.b']; // 1 - * res['a.b.c']; // 1 - * res['a.c']; // undefined - */ - -module.exports = function hasIncludedChildren(fields) { - var hasIncludedChildren = {}; - var keys = Object.keys(fields); - - for (var _i = 0, _keys = keys; _i < _keys.length; _i++) { - var key = _keys[_i]; - - if (key.indexOf('.') === -1) { - hasIncludedChildren[key] = 1; - continue; - } - - var parts = key.split('.'); - var c = parts[0]; - - for (var i = 0; i < parts.length; ++i) { - hasIncludedChildren[c] = 1; - - if (i + 1 < parts.length) { - c = c + '.' + parts[i + 1]; - } - } - } - - return hasIncludedChildren; -}; - -/***/ }), - -/***/ 2183: -/***/ ((module) => { - -"use strict"; - -/*! - * ignore - */ - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -module.exports = function isDefiningProjection(val) { - if (val == null) { - // `undefined` or `null` become exclusive projections - return true; - } - - if (_typeof(val) === 'object') { - // Only cases where a value does **not** define whether the whole projection - // is inclusive or exclusive are `$meta` and `$slice`. - return !('$meta' in val) && !('$slice' in val); - } - - return true; -}; - -/***/ }), - -/***/ 9098: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var isDefiningProjection = __webpack_require__(2183); -/*! - * ignore - */ - - -module.exports = function isExclusive(projection) { - if (projection == null) { - return null; - } - - var keys = Object.keys(projection); - var ki = keys.length; - var exclude = null; - - if (ki === 1 && keys[0] === '_id') { - exclude = !projection._id; - } else { - while (ki--) { - // Does this projection explicitly define inclusion/exclusion? - // Explicitly avoid `$meta` and `$slice` - var key = keys[ki]; - - if (key !== '_id' && isDefiningProjection(projection[key])) { - exclude = projection[key] != null && _typeof(projection[key]) === 'object' ? isExclusive(projection[key]) : !projection[key]; - break; - } - } - } - - return exclude; -}; - -/***/ }), - -/***/ 8486: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var PromiseProvider = __webpack_require__(6755); - -var immediate = __webpack_require__(1490); - -var emittedSymbol = Symbol('mongoose:emitted'); - -module.exports = function promiseOrCallback(callback, fn, ee, Promise) { - if (typeof callback === 'function') { - return fn(function (error) { - if (error != null) { - if (ee != null && ee.listeners != null && ee.listeners('error').length > 0 && !error[emittedSymbol]) { - error[emittedSymbol] = true; - ee.emit('error', error); - } - - try { - callback(error); - } catch (error) { - return immediate(function () { - throw error; - }); - } - - return; - } - - callback.apply(this, arguments); - }); - } - - Promise = Promise || PromiseProvider.get(); - return new Promise(function (resolve, reject) { - fn(function (error, res) { - if (error != null) { - if (ee != null && ee.listeners != null && ee.listeners('error').length > 0 && !error[emittedSymbol]) { - error[emittedSymbol] = true; - ee.emit('error', error); - } - - return reject(error); - } - - if (arguments.length > 2) { - return resolve(Array.prototype.slice.call(arguments, 1)); - } - - resolve(res); - }); - }); -}; - -/***/ }), - -/***/ 5130: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -/*! - * ignore - */ - -module.exports = applyQueryMiddleware; - -var validOps = __webpack_require__(9853); -/*! - * ignore - */ - - -applyQueryMiddleware.middlewareFunctions = validOps.concat(['validate']); -/*! - * Apply query middleware - * - * @param {Query} query constructor - * @param {Model} model - */ - -function applyQueryMiddleware(Query, model) { - var kareemOptions = { - useErrorHandlers: true, - numCallbackParams: 1, - nullResultByDefault: true - }; - var middleware = model.hooks.filter(function (hook) { - var contexts = _getContexts(hook); - - if (hook.name === 'updateOne') { - return contexts.query == null || !!contexts.query; - } - - if (hook.name === 'deleteOne') { - return !!contexts.query || Object.keys(contexts).length === 0; - } - - if (hook.name === 'validate' || hook.name === 'remove') { - return !!contexts.query; - } - - if (hook.query != null || hook.document != null) { - return !!hook.query; - } - - return true; - }); // `update()` thunk has a different name because `_update` was already taken - - Query.prototype._execUpdate = middleware.createWrapper('update', Query.prototype._execUpdate, null, kareemOptions); // `distinct()` thunk has a different name because `_distinct` was already taken - - Query.prototype.__distinct = middleware.createWrapper('distinct', Query.prototype.__distinct, null, kareemOptions); // `validate()` doesn't have a thunk because it doesn't execute a query. - - Query.prototype.validate = middleware.createWrapper('validate', Query.prototype.validate, null, kareemOptions); - applyQueryMiddleware.middlewareFunctions.filter(function (v) { - return v !== 'update' && v !== 'distinct' && v !== 'validate'; - }).forEach(function (fn) { - Query.prototype["_".concat(fn)] = middleware.createWrapper(fn, Query.prototype["_".concat(fn)], null, kareemOptions); - }); -} - -function _getContexts(hook) { - var ret = {}; - - if (hook.hasOwnProperty('query')) { - ret.query = hook.query; - } - - if (hook.hasOwnProperty('document')) { - ret.document = hook.document; - } - - return ret; -} - -/***/ }), - -/***/ 9739: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var CastError = __webpack_require__(1795); - -var StrictModeError = __webpack_require__(3328); - -var castNumber = __webpack_require__(3065); - -var booleanComparison = new Set(['$and', '$or']); -var comparisonOperator = new Set(['$cmp', '$eq', '$lt', '$lte', '$gt', '$gte']); -var arithmeticOperatorArray = new Set([// avoid casting '$add' or '$subtract', because expressions can be either number or date, -// and we don't have a good way of inferring which arguments should be numbers and which should -// be dates. -'$multiply', '$divide', '$log', '$mod', '$trunc', '$avg', '$max', '$min', '$stdDevPop', '$stdDevSamp', '$sum']); -var arithmeticOperatorNumber = new Set(['$abs', '$exp', '$ceil', '$floor', '$ln', '$log10', '$round', '$sqrt', '$sin', '$cos', '$tan', '$asin', '$acos', '$atan', '$atan2', '$asinh', '$acosh', '$atanh', '$sinh', '$cosh', '$tanh', '$degreesToRadians', '$radiansToDegrees']); -var arrayElementOperators = new Set(['$arrayElemAt', '$first', '$last']); -var dateOperators = new Set(['$year', '$month', '$week', '$dayOfMonth', '$dayOfYear', '$hour', '$minute', '$second', '$isoDayOfWeek', '$isoWeekYear', '$isoWeek', '$millisecond']); -var expressionOperator = new Set(['$not']); - -module.exports = function cast$expr(val, schema, strictQuery) { - if (_typeof(val) !== 'object' || val === null) { - throw new Error('`$expr` must be an object'); - } - - return _castExpression(val, schema, strictQuery); -}; - -function _castExpression(val, schema, strictQuery) { - if (isPath(val)) { - // Assume path - return val; - } - - if (val.$cond != null) { - if (Array.isArray(val.$cond)) { - val.$cond = val.$cond.map(function (expr) { - return _castExpression(expr, schema, strictQuery); - }); - } else { - val.$cond["if"] = _castExpression(val.$cond["if"], schema, strictQuery); - val.$cond.then = _castExpression(val.$cond.then, schema, strictQuery); - val.$cond["else"] = _castExpression(val.$cond["else"], schema, strictQuery); - } - } else if (val.$ifNull != null) { - val.$ifNull.map(function (v) { - return _castExpression(v, schema, strictQuery); - }); - } else if (val.$switch != null) { - val.branches.map(function (v) { - return _castExpression(v, schema, strictQuery); - }); - val["default"] = _castExpression(val["default"], schema, strictQuery); - } - - var keys = Object.keys(val); - - for (var _i = 0, _keys = keys; _i < _keys.length; _i++) { - var key = _keys[_i]; - - if (booleanComparison.has(key)) { - val[key] = val[key].map(function (v) { - return _castExpression(v, schema, strictQuery); - }); - } else if (comparisonOperator.has(key)) { - val[key] = castComparison(val[key], schema, strictQuery); - } else if (arithmeticOperatorArray.has(key)) { - val[key] = castArithmetic(val[key], schema, strictQuery); - } else if (arithmeticOperatorNumber.has(key)) { - val[key] = castNumberOperator(val[key], schema, strictQuery); - } else if (expressionOperator.has(key)) { - val[key] = _castExpression(val[key], schema, strictQuery); - } - } - - if (val.$in) { - val.$in = castIn(val.$in, schema, strictQuery); - } - - if (val.$size) { - val.$size = castNumberOperator(val.$size, schema, strictQuery); - } - - _omitUndefined(val); - - return val; -} - -function _omitUndefined(val) { - var keys = Object.keys(val); - - for (var i = 0, len = keys.length; i < len; ++i) { - val[keys[i]] === void 0 && delete val[keys[i]]; - } -} // { $op: } - - -function castNumberOperator(val) { - if (!isLiteral(val)) { - return val; - } - - try { - return castNumber(val); - } catch (err) { - throw new CastError('Number', val); - } -} - -function castIn(val, schema, strictQuery) { - var path = val[1]; - - if (!isPath(path)) { - return val; - } - - var search = val[0]; - var schematype = schema.path(path.slice(1)); - - if (schematype === null) { - if (strictQuery === false) { - return val; - } else if (strictQuery === 'throw') { - throw new StrictModeError('$in'); - } - - return void 0; - } - - if (!schematype.$isMongooseArray) { - throw new Error('Path must be an array for $in'); - } - - return [schematype.$isMongooseDocumentArray ? schematype.$embeddedSchemaType.cast(search) : schematype.caster.cast(search), path]; -} // { $op: [, ] } - - -function castArithmetic(val) { - if (!Array.isArray(val)) { - if (!isLiteral(val)) { - return val; - } - - try { - return castNumber(val); - } catch (err) { - throw new CastError('Number', val); - } - } - - return val.map(function (v) { - if (!isLiteral(v)) { - return v; - } - - try { - return castNumber(v); - } catch (err) { - throw new CastError('Number', v); - } - }); -} // { $op: [expression, expression] } - - -function castComparison(val, schema, strictQuery) { - if (!Array.isArray(val) || val.length !== 2) { - throw new Error('Comparison operator must be an array of length 2'); - } - - val[0] = _castExpression(val[0], schema, strictQuery); - var lhs = val[0]; - - if (isLiteral(val[1])) { - var path = null; - var schematype = null; - var caster = null; - - if (isPath(lhs)) { - path = lhs.slice(1); - schematype = schema.path(path); - } else if (_typeof(lhs) === 'object' && lhs != null) { - for (var _i2 = 0, _Object$keys = Object.keys(lhs); _i2 < _Object$keys.length; _i2++) { - var key = _Object$keys[_i2]; - - if (dateOperators.has(key) && isPath(lhs[key])) { - path = lhs[key].slice(1) + '.' + key; - caster = castNumber; - } else if (arrayElementOperators.has(key) && isPath(lhs[key])) { - path = lhs[key].slice(1) + '.' + key; - schematype = schema.path(lhs[key].slice(1)); - - if (schematype != null) { - if (schematype.$isMongooseDocumentArray) { - schematype = schematype.$embeddedSchemaType; - } else if (schematype.$isMongooseArray) { - schematype = schematype.caster; - } - } - } - } - } - - var is$literal = _typeof(val[1]) === 'object' && val[1] != null && val[1].$literal != null; - - if (schematype != null) { - if (is$literal) { - val[1] = { - $literal: schematype.cast(val[1].$literal) - }; - } else { - val[1] = schematype.cast(val[1]); - } - } else if (caster != null) { - if (is$literal) { - try { - val[1] = { - $literal: caster(val[1].$literal) - }; - } catch (err) { - throw new CastError(caster.name.replace(/^cast/, ''), val[1], path + '.$literal'); - } - } else { - try { - val[1] = caster(val[1]); - } catch (err) { - throw new CastError(caster.name.replace(/^cast/, ''), val[1], path); - } - } - } else if (path != null && strictQuery === true) { - return void 0; - } else if (path != null && strictQuery === 'throw') { - throw new StrictModeError(path); - } - } else { - val[1] = _castExpression(val[1]); - } - - return val; -} - -function isPath(val) { - return typeof val === 'string' && val[0] === '$'; -} - -function isLiteral(val) { - if (typeof val === 'string' && val[0] === '$') { - return false; - } - - if (_typeof(val) === 'object' && val !== null && Object.keys(val).find(function (key) { - return key[0] === '$'; - })) { - // The `$literal` expression can make an object a literal - // https://docs.mongodb.com/manual/reference/operator/aggregation/literal/#mongodb-expression-exp.-literal - return val.$literal != null; - } - - return true; -} - -/***/ }), - -/***/ 9627: -/***/ ((module) => { - -"use strict"; - - -var specialKeys = new Set(['$ref', '$id', '$db']); - -module.exports = function isOperator(path) { - return path[0] === '$' && !specialKeys.has(path); -}; - -/***/ }), - -/***/ 3636: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var trustedSymbol = Symbol('mongoose#trustedSymbol'); -exports.trustedSymbol = trustedSymbol; - -exports.trusted = function trusted(obj) { - if (obj == null || _typeof(obj) !== 'object') { - return obj; - } - - obj[trustedSymbol] = true; - return obj; -}; - -/***/ }), - -/***/ 9853: -/***/ ((module) => { - -"use strict"; - - -module.exports = Object.freeze([// Read -'count', 'countDocuments', 'distinct', 'estimatedDocumentCount', 'find', 'findOne', // Update -'findOneAndReplace', 'findOneAndUpdate', 'replaceOne', 'update', 'updateMany', 'updateOne', // Delete -'deleteMany', 'deleteOne', 'findOneAndDelete', 'findOneAndRemove', 'remove']); - -/***/ }), - -/***/ 4133: -/***/ ((module) => { - -"use strict"; - - -module.exports = function addAutoId(schema) { - var _obj = { - _id: { - auto: true - } - }; - _obj._id[schema.options.typeKey] = 'ObjectId'; - schema.add(_obj); -}; - -/***/ }), - -/***/ 7658: -/***/ ((module) => { - -"use strict"; - -/** - * For consistency's sake, we replace positional operator `$` and array filters - * `$[]` and `$[foo]` with `0` when looking up schema paths. - */ - -module.exports = function cleanPositionalOperators(path) { - return path.replace(/\.\$(\[[^\]]*\])?(?=\.)/g, '.0').replace(/\.\$(\[[^\]]*\])?$/g, '.0'); -}; - -/***/ }), - -/***/ 5379: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var get = __webpack_require__(9981); - -var helperIsObject = __webpack_require__(5721); - -var decorateDiscriminatorIndexOptions = __webpack_require__(1605); -/*! - * Gather all indexes defined in the schema, including single nested, - * document arrays, and embedded discriminators. - */ - - -module.exports = function getIndexes(schema) { - var indexes = []; - var schemaStack = new WeakMap(); - var indexTypes = schema.constructor.indexTypes; - var indexByName = new Map(); - collectIndexes(schema); - return indexes; - - function collectIndexes(schema, prefix, baseSchema) { - // Ignore infinitely nested schemas, if we've already seen this schema - // along this path there must be a cycle - if (schemaStack.has(schema)) { - return; - } - - schemaStack.set(schema, true); - prefix = prefix || ''; - var keys = Object.keys(schema.paths); - - for (var _i = 0, _keys = keys; _i < _keys.length; _i++) { - var key = _keys[_i]; - var path = schema.paths[key]; - - if (baseSchema != null && baseSchema.paths[key]) { - // If looking at an embedded discriminator schema, don't look at paths - // that the - continue; - } - - if (path.$isMongooseDocumentArray || path.$isSingleNested) { - if (get(path, 'options.excludeIndexes') !== true && get(path, 'schemaOptions.excludeIndexes') !== true && get(path, 'schema.options.excludeIndexes') !== true) { - collectIndexes(path.schema, prefix + key + '.'); - } - - if (path.schema.discriminators != null) { - var discriminators = path.schema.discriminators; - var discriminatorKeys = Object.keys(discriminators); - - for (var _i2 = 0, _discriminatorKeys = discriminatorKeys; _i2 < _discriminatorKeys.length; _i2++) { - var discriminatorKey = _discriminatorKeys[_i2]; - collectIndexes(discriminators[discriminatorKey], prefix + key + '.', path.schema); - } - } // Retained to minimize risk of backwards breaking changes due to - // gh-6113 - - - if (path.$isMongooseDocumentArray) { - continue; - } - } - - var index = path._index || path.caster && path.caster._index; - - if (index !== false && index !== null && index !== undefined) { - var field = {}; - var isObject = helperIsObject(index); - var options = isObject ? index : {}; - var type = typeof index === 'string' ? index : isObject ? index.type : false; - - if (type && indexTypes.indexOf(type) !== -1) { - field[prefix + key] = type; - } else if (options.text) { - field[prefix + key] = 'text'; - delete options.text; - } else { - var isDescendingIndex = Number(index) === -1; - field[prefix + key] = isDescendingIndex ? -1 : 1; - } - - delete options.type; - - if (!('background' in options)) { - options.background = true; - } - - if (schema.options.autoIndex != null) { - options._autoIndex = schema.options.autoIndex; - } - - var indexName = options && options.name; - - if (typeof indexName === 'string') { - if (indexByName.has(indexName)) { - Object.assign(indexByName.get(indexName), field); - } else { - indexes.push([field, options]); - indexByName.set(indexName, field); - } - } else { - indexes.push([field, options]); - indexByName.set(indexName, field); - } - } - } - - schemaStack["delete"](schema); - - if (prefix) { - fixSubIndexPaths(schema, prefix); - } else { - schema._indexes.forEach(function (index) { - var options = index[1]; - - if (!('background' in options)) { - options.background = true; - } - - decorateDiscriminatorIndexOptions(schema, options); - }); - - indexes = indexes.concat(schema._indexes); - } - } - /*! - * Checks for indexes added to subdocs using Schema.index(). - * These indexes need their paths prefixed properly. - * - * schema._indexes = [ [indexObj, options], [indexObj, options] ..] - */ - - - function fixSubIndexPaths(schema, prefix) { - var subindexes = schema._indexes; - var len = subindexes.length; - - for (var i = 0; i < len; ++i) { - var indexObj = subindexes[i][0]; - var indexOptions = subindexes[i][1]; - var keys = Object.keys(indexObj); - var klen = keys.length; - var newindex = {}; // use forward iteration, order matters - - for (var j = 0; j < klen; ++j) { - var key = keys[j]; - newindex[prefix + key] = indexObj[key]; - } - - var newIndexOptions = Object.assign({}, indexOptions); - - if (indexOptions != null && indexOptions.partialFilterExpression != null) { - newIndexOptions.partialFilterExpression = {}; - var partialFilterExpression = indexOptions.partialFilterExpression; - - for (var _i3 = 0, _Object$keys = Object.keys(partialFilterExpression); _i3 < _Object$keys.length; _i3++) { - var _key = _Object$keys[_i3]; - newIndexOptions.partialFilterExpression[prefix + _key] = partialFilterExpression[_key]; - } - } - - indexes.push([newindex, newIndexOptions]); - } - } -}; - -/***/ }), - -/***/ 37: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } - -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } - -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - -var get = __webpack_require__(9981); - -module.exports = function getKeysInSchemaOrder(schema, val, path) { - var schemaKeys = path != null ? Object.keys(get(schema.tree, path, {})) : Object.keys(schema.tree); - var valKeys = new Set(Object.keys(val)); - var keys; - - if (valKeys.size > 1) { - keys = new Set(); - - var _iterator = _createForOfIteratorHelper(schemaKeys), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var key = _step.value; - - if (valKeys.has(key)) { - keys.add(key); - } - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - var _iterator2 = _createForOfIteratorHelper(valKeys), - _step2; - - try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - var _key = _step2.value; - - if (!keys.has(_key)) { - keys.add(_key); - } - } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); - } - - keys = Array.from(keys); - } else { - keys = Array.from(valKeys); - } - - return keys; -}; - -/***/ }), - -/***/ 9691: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var addAutoId = __webpack_require__(4133); - -module.exports = function handleIdOption(schema, options) { - if (options == null || options._id == null) { - return schema; - } - - schema = schema.clone(); - - if (!options._id) { - schema.remove('_id'); - schema.options._id = false; - } else if (!schema.paths['_id']) { - addAutoId(schema); - schema.options._id = true; - } - - return schema; -}; - -/***/ }), - -/***/ 6370: -/***/ ((module) => { - -"use strict"; - - -module.exports = handleTimestampOption; -/*! - * ignore - */ - -function handleTimestampOption(arg, prop) { - if (arg == null) { - return null; - } - - if (typeof arg === 'boolean') { - return prop; - } - - if (typeof arg[prop] === 'boolean') { - return arg[prop] ? prop : null; - } - - if (!(prop in arg)) { - return prop; - } - - return arg[prop]; -} - -/***/ }), - -/***/ 1879: -/***/ ((module) => { - -"use strict"; - -/*! - * ignore - */ - -module.exports = function addIdGetter(schema) { - // ensure the documents receive an id getter unless disabled - var autoIdGetter = !schema.paths['id'] && schema.paths['_id'] && schema.options.id; - - if (!autoIdGetter) { - return schema; - } - - schema.virtual('id').get(idGetter); - return schema; -}; -/*! - * Returns this documents _id cast to a string. - */ - - -function idGetter() { - if (this._id != null) { - return String(this._id); - } - - return null; -} - -/***/ }), - -/***/ 4913: -/***/ ((module) => { - -"use strict"; - - -module.exports = function merge(s1, s2, skipConflictingPaths) { - var paths = Object.keys(s2.tree); - var pathsToAdd = {}; - - for (var _i = 0, _paths = paths; _i < _paths.length; _i++) { - var key = _paths[_i]; - - if (skipConflictingPaths && (s1.paths[key] || s1.nested[key] || s1.singleNestedPaths[key])) { - continue; - } - - pathsToAdd[key] = s2.tree[key]; - } - - s1.add(pathsToAdd); - s1.callQueue = s1.callQueue.concat(s2.callQueue); - s1.method(s2.methods); - s1["static"](s2.statics); - - for (var query in s2.query) { - s1.query[query] = s2.query[query]; - } - - for (var virtual in s2.virtuals) { - s1.virtuals[virtual] = s2.virtuals[virtual].clone(); - } - - s1.s.hooks.merge(s2.s.hooks, false); -}; - -/***/ }), - -/***/ 8828: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var StrictModeError = __webpack_require__(3328); -/*! - * ignore - */ - - -module.exports = function (schematype) { - if (schematype.$immutable) { - schematype.$immutableSetter = createImmutableSetter(schematype.path, schematype.options.immutable); - schematype.set(schematype.$immutableSetter); - } else if (schematype.$immutableSetter) { - schematype.setters = schematype.setters.filter(function (fn) { - return fn !== schematype.$immutableSetter; - }); - delete schematype.$immutableSetter; - } -}; - -function createImmutableSetter(path, immutable) { - return function immutableSetter(v, _priorVal, _doc, options) { - if (this == null || this.$__ == null) { - return v; - } - - if (this.isNew) { - return v; - } - - if (options && options.overwriteImmutable) { - return v; - } - - var _immutable = typeof immutable === 'function' ? immutable.call(this, this) : immutable; - - if (!_immutable) { - return v; - } - - var _value = this.$__.priorDoc != null ? this.$__.priorDoc.$__getValue(path) : this.$__getValue(path); - - if (this.$__.strictMode === 'throw' && v !== _value) { - throw new StrictModeError(path, 'Path `' + path + '` is immutable ' + 'and strict mode is set to throw.', true); - } - - return _value; - }; -} - -/***/ }), - -/***/ 2862: -/***/ ((module) => { - -"use strict"; - - -module.exports = new Set(['__proto__', 'constructor', 'prototype']); - -/***/ }), - -/***/ 8770: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -exports.arrayAtomicsBackupSymbol = Symbol('mongoose#Array#atomicsBackup'); -exports.arrayAtomicsSymbol = Symbol('mongoose#Array#_atomics'); -exports.arrayParentSymbol = Symbol('mongoose#Array#_parent'); -exports.arrayPathSymbol = Symbol('mongoose#Array#_path'); -exports.arraySchemaSymbol = Symbol('mongoose#Array#_schema'); -exports.documentArrayParent = Symbol('mongoose:documentArrayParent'); -exports.documentIsSelected = Symbol('mongoose#Document#isSelected'); -exports.documentIsModified = Symbol('mongoose#Document#isModified'); -exports.documentModifiedPaths = Symbol('mongoose#Document#modifiedPaths'); -exports.documentSchemaSymbol = Symbol('mongoose#Document#schema'); -exports.getSymbol = Symbol('mongoose#Document#get'); -exports.modelSymbol = Symbol('mongoose#Model'); -exports.objectIdSymbol = Symbol('mongoose#ObjectId'); -exports.populateModelSymbol = Symbol('mongoose.PopulateOptions#Model'); -exports.schemaTypeSymbol = Symbol('mongoose#schemaType'); -exports.sessionNewDocuments = Symbol('mongoose:ClientSession#newDocuments'); -exports.scopeSymbol = Symbol('mongoose#Document#scope'); -exports.validatorErrorSymbol = Symbol('mongoose:validatorError'); - -/***/ }), - -/***/ 3767: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -var applyTimestampsToChildren = __webpack_require__(4843); - -var applyTimestampsToUpdate = __webpack_require__(6434); - -var get = __webpack_require__(9981); - -var handleTimestampOption = __webpack_require__(6370); - -var symbols = __webpack_require__(8107); - -module.exports = function setupTimestamps(schema, timestamps) { - var childHasTimestamp = schema.childSchemas.find(withTimestamp); - - function withTimestamp(s) { - var ts = s.schema.options.timestamps; - return !!ts; - } - - if (!timestamps && !childHasTimestamp) { - return; - } - - var createdAt = handleTimestampOption(timestamps, 'createdAt'); - var updatedAt = handleTimestampOption(timestamps, 'updatedAt'); - var currentTime = timestamps != null && timestamps.hasOwnProperty('currentTime') ? timestamps.currentTime : null; - var schemaAdditions = {}; - schema.$timestamps = { - createdAt: createdAt, - updatedAt: updatedAt - }; - - if (updatedAt && !schema.paths[updatedAt]) { - schemaAdditions[updatedAt] = Date; - } - - if (createdAt && !schema.paths[createdAt]) { - var _schemaAdditions$crea; - - var baseImmutableCreatedAt = schema.base.get('timestamps.createdAt.immutable'); - var immutable = baseImmutableCreatedAt != null ? baseImmutableCreatedAt : true; - schemaAdditions[createdAt] = (_schemaAdditions$crea = {}, _defineProperty(_schemaAdditions$crea, schema.options.typeKey || 'type', Date), _defineProperty(_schemaAdditions$crea, "immutable", immutable), _schemaAdditions$crea); - } - - schema.add(schemaAdditions); - schema.pre('save', function (next) { - var timestampOption = get(this, '$__.saveOptions.timestamps'); - - if (timestampOption === false) { - return next(); - } - - var skipUpdatedAt = timestampOption != null && timestampOption.updatedAt === false; - var skipCreatedAt = timestampOption != null && timestampOption.createdAt === false; - var defaultTimestamp = currentTime != null ? currentTime() : this.ownerDocument().constructor.base.now(); - - if (!skipCreatedAt && (this.isNew || this.$isSubdocument) && createdAt && !this.$__getValue(createdAt) && this.$__isSelected(createdAt)) { - this.$set(createdAt, defaultTimestamp, undefined, { - overwriteImmutable: true - }); - } - - if (!skipUpdatedAt && updatedAt && (this.isNew || this.$isModified())) { - var ts = defaultTimestamp; - - if (this.isNew && createdAt != null) { - ts = this.$__getValue(createdAt); - } - - this.$set(updatedAt, ts); - } - - next(); - }); - - schema.methods.initializeTimestamps = function () { - var ts = currentTime != null ? currentTime() : this.constructor.base.now(); - - if (createdAt && !this.get(createdAt)) { - this.$set(createdAt, ts); - } - - if (updatedAt && !this.get(updatedAt)) { - this.$set(updatedAt, ts); - } - - return this; - }; - - _setTimestampsOnUpdate[symbols.builtInMiddleware] = true; - var opts = { - query: true, - model: false - }; - schema.pre('findOneAndReplace', opts, _setTimestampsOnUpdate); - schema.pre('findOneAndUpdate', opts, _setTimestampsOnUpdate); - schema.pre('replaceOne', opts, _setTimestampsOnUpdate); - schema.pre('update', opts, _setTimestampsOnUpdate); - schema.pre('updateOne', opts, _setTimestampsOnUpdate); - schema.pre('updateMany', opts, _setTimestampsOnUpdate); - - function _setTimestampsOnUpdate(next) { - var now = currentTime != null ? currentTime() : this.model.base.now(); // Replacing with null update should still trigger timestamps - - if (this.op === 'findOneAndReplace' && this.getUpdate() == null) { - this.setUpdate({}); - } - - applyTimestampsToUpdate(now, createdAt, updatedAt, this.getUpdate(), this.options, this.schema); - applyTimestampsToChildren(now, this.getUpdate(), this.model.schema); - next(); - } -}; - -/***/ }), - -/***/ 5285: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var getConstructorName = __webpack_require__(1981); - -module.exports = function allServersUnknown(topologyDescription) { - if (getConstructorName(topologyDescription) !== 'TopologyDescription') { - return false; - } - - var servers = Array.from(topologyDescription.servers.values()); - return servers.length > 0 && servers.every(function (server) { - return server.type === 'Unknown'; - }); -}; - -/***/ }), - -/***/ 2082: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var getConstructorName = __webpack_require__(1981); - -module.exports = function isAtlas(topologyDescription) { - if (getConstructorName(topologyDescription) !== 'TopologyDescription') { - return false; - } - - var hostnames = Array.from(topologyDescription.servers.keys()); - - if (hostnames.length === 0) { - return false; - } - - for (var i = 0, il = hostnames.length; i < il; ++i) { - var url = new URL(hostnames[i]); - - if (url.hostname.endsWith('.mongodb.net') === false || url.port !== '27017') { - return false; - } - } - - return true; -}; - -/***/ }), - -/***/ 3871: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var getConstructorName = __webpack_require__(1981); - -var nonSSLMessage = 'Client network socket disconnected before secure TLS ' + 'connection was established'; - -module.exports = function isSSLError(topologyDescription) { - if (getConstructorName(topologyDescription) !== 'TopologyDescription') { - return false; - } - - var descriptions = Array.from(topologyDescription.servers.values()); - return descriptions.length > 0 && descriptions.every(function (descr) { - return descr.error && descr.error.message.indexOf(nonSSLMessage) !== -1; - }); -}; - -/***/ }), - -/***/ 4843: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } - -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } - -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - -var cleanPositionalOperators = __webpack_require__(7658); - -var handleTimestampOption = __webpack_require__(6370); - -module.exports = applyTimestampsToChildren; -/*! - * ignore - */ - -function applyTimestampsToChildren(now, update, schema) { - if (update == null) { - return; - } - - var keys = Object.keys(update); - var hasDollarKey = keys.some(function (key) { - return key[0] === '$'; - }); - - if (hasDollarKey) { - if (update.$push) { - _applyTimestampToUpdateOperator(update.$push); - } - - if (update.$addToSet) { - _applyTimestampToUpdateOperator(update.$addToSet); - } - - if (update.$set != null) { - var _keys = Object.keys(update.$set); - - for (var _i = 0, _keys2 = _keys; _i < _keys2.length; _i++) { - var key = _keys2[_i]; - applyTimestampsToUpdateKey(schema, key, update.$set, now); - } - } - - if (update.$setOnInsert != null) { - var _keys3 = Object.keys(update.$setOnInsert); - - for (var _i2 = 0, _keys4 = _keys3; _i2 < _keys4.length; _i2++) { - var _key = _keys4[_i2]; - applyTimestampsToUpdateKey(schema, _key, update.$setOnInsert, now); - } - } - } - - var updateKeys = Object.keys(update).filter(function (key) { - return key[0] !== '$'; - }); - - var _iterator = _createForOfIteratorHelper(updateKeys), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var _key2 = _step.value; - applyTimestampsToUpdateKey(schema, _key2, update, now); - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - function _applyTimestampToUpdateOperator(op) { - var _loop = function _loop() { - var key = _Object$keys[_i3]; - var $path = schema.path(key.replace(/\.\$\./i, '.').replace(/.\$$/, '')); - - if (op[key] && $path && $path.$isMongooseDocumentArray && $path.schema.options.timestamps) { - var timestamps = $path.schema.options.timestamps; - var createdAt = handleTimestampOption(timestamps, 'createdAt'); - var updatedAt = handleTimestampOption(timestamps, 'updatedAt'); - - if (op[key].$each) { - op[key].$each.forEach(function (subdoc) { - if (updatedAt != null) { - subdoc[updatedAt] = now; - } - - if (createdAt != null) { - subdoc[createdAt] = now; - } - - applyTimestampsToChildren(now, subdoc, $path.schema); - }); - } else { - if (updatedAt != null) { - op[key][updatedAt] = now; - } - - if (createdAt != null) { - op[key][createdAt] = now; - } - - applyTimestampsToChildren(now, op[key], $path.schema); - } - } - }; - - for (var _i3 = 0, _Object$keys = Object.keys(op); _i3 < _Object$keys.length; _i3++) { - _loop(); - } - } -} - -function applyTimestampsToDocumentArray(arr, schematype, now) { - var timestamps = schematype.schema.options.timestamps; - - if (!timestamps) { - return; - } - - var len = arr.length; - var createdAt = handleTimestampOption(timestamps, 'createdAt'); - var updatedAt = handleTimestampOption(timestamps, 'updatedAt'); - - for (var i = 0; i < len; ++i) { - if (updatedAt != null) { - arr[i][updatedAt] = now; - } - - if (createdAt != null) { - arr[i][createdAt] = now; - } - - applyTimestampsToChildren(now, arr[i], schematype.schema); - } -} - -function applyTimestampsToSingleNested(subdoc, schematype, now) { - var timestamps = schematype.schema.options.timestamps; - - if (!timestamps) { - return; - } - - var createdAt = handleTimestampOption(timestamps, 'createdAt'); - var updatedAt = handleTimestampOption(timestamps, 'updatedAt'); - - if (updatedAt != null) { - subdoc[updatedAt] = now; - } - - if (createdAt != null) { - subdoc[createdAt] = now; - } - - applyTimestampsToChildren(now, subdoc, schematype.schema); -} - -function applyTimestampsToUpdateKey(schema, key, update, now) { - // Replace positional operator `$` and array filters `$[]` and `$[.*]` - var keyToSearch = cleanPositionalOperators(key); - var path = schema.path(keyToSearch); - - if (!path) { - return; - } - - var parentSchemaTypes = []; - var pieces = keyToSearch.split('.'); - - for (var i = pieces.length - 1; i > 0; --i) { - var s = schema.path(pieces.slice(0, i).join('.')); - - if (s != null && (s.$isMongooseDocumentArray || s.$isSingleNested)) { - parentSchemaTypes.push({ - parentPath: key.split('.').slice(0, i).join('.'), - parentSchemaType: s - }); - } - } - - if (Array.isArray(update[key]) && path.$isMongooseDocumentArray) { - applyTimestampsToDocumentArray(update[key], path, now); - } else if (update[key] && path.$isSingleNested) { - applyTimestampsToSingleNested(update[key], path, now); - } else if (parentSchemaTypes.length > 0) { - var _iterator2 = _createForOfIteratorHelper(parentSchemaTypes), - _step2; - - try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - var item = _step2.value; - var parentPath = item.parentPath; - var parentSchemaType = item.parentSchemaType; - var timestamps = parentSchemaType.schema.options.timestamps; - var updatedAt = handleTimestampOption(timestamps, 'updatedAt'); - - if (!timestamps || updatedAt == null) { - continue; - } - - if (parentSchemaType.$isSingleNested) { - // Single nested is easy - update[parentPath + '.' + updatedAt] = now; - } else if (parentSchemaType.$isMongooseDocumentArray) { - var childPath = key.substring(parentPath.length + 1); - - if (/^\d+$/.test(childPath)) { - update[parentPath + '.' + childPath][updatedAt] = now; - continue; - } - - var firstDot = childPath.indexOf('.'); - childPath = firstDot !== -1 ? childPath.substring(0, firstDot) : childPath; - update[parentPath + '.' + childPath + '.' + updatedAt] = now; - } - } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); - } - } else if (path.schema != null && path.schema != schema && update[key]) { - var _timestamps = path.schema.options.timestamps; - var createdAt = handleTimestampOption(_timestamps, 'createdAt'); - - var _updatedAt = handleTimestampOption(_timestamps, 'updatedAt'); - - if (!_timestamps) { - return; - } - - if (_updatedAt != null) { - update[key][_updatedAt] = now; - } - - if (createdAt != null) { - update[key][createdAt] = now; - } - } -} - -/***/ }), - -/***/ 6434: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -/*! - * ignore - */ - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -var get = __webpack_require__(9981); - -module.exports = applyTimestampsToUpdate; -/*! - * ignore - */ - -function applyTimestampsToUpdate(now, createdAt, updatedAt, currentUpdate, options) { - var updates = currentUpdate; - var _updates = updates; - var overwrite = get(options, 'overwrite', false); - var timestamps = get(options, 'timestamps', true); // Support skipping timestamps at the query level, see gh-6980 - - if (!timestamps || updates == null) { - return currentUpdate; - } - - var skipCreatedAt = timestamps != null && timestamps.createdAt === false; - var skipUpdatedAt = timestamps != null && timestamps.updatedAt === false; - - if (overwrite) { - if (currentUpdate && currentUpdate.$set) { - currentUpdate = currentUpdate.$set; - updates.$set = {}; - _updates = updates.$set; - } - - if (!skipUpdatedAt && updatedAt && !currentUpdate[updatedAt]) { - _updates[updatedAt] = now; - } - - if (!skipCreatedAt && createdAt && !currentUpdate[createdAt]) { - _updates[createdAt] = now; - } - - return updates; - } - - currentUpdate = currentUpdate || {}; - - if (Array.isArray(updates)) { - // Update with aggregation pipeline - updates.push({ - $set: _defineProperty({}, updatedAt, now) - }); - return updates; - } - - updates.$set = updates.$set || {}; - - if (!skipUpdatedAt && updatedAt && (!currentUpdate.$currentDate || !currentUpdate.$currentDate[updatedAt])) { - var timestampSet = false; - - if (updatedAt.indexOf('.') !== -1) { - var pieces = updatedAt.split('.'); - - for (var i = 1; i < pieces.length; ++i) { - var remnant = pieces.slice(-i).join('.'); - var start = pieces.slice(0, -i).join('.'); - - if (currentUpdate[start] != null) { - currentUpdate[start][remnant] = now; - timestampSet = true; - break; - } else if (currentUpdate.$set && currentUpdate.$set[start]) { - currentUpdate.$set[start][remnant] = now; - timestampSet = true; - break; - } - } - } - - if (!timestampSet) { - updates.$set[updatedAt] = now; - } - - if (updates.hasOwnProperty(updatedAt)) { - delete updates[updatedAt]; - } - } - - if (!skipCreatedAt && createdAt) { - if (currentUpdate[createdAt]) { - delete currentUpdate[createdAt]; - } - - if (currentUpdate.$set && currentUpdate.$set[createdAt]) { - delete currentUpdate.$set[createdAt]; - } - - var _timestampSet = false; - - if (createdAt.indexOf('.') !== -1) { - var _pieces = createdAt.split('.'); - - for (var _i = 1; _i < _pieces.length; ++_i) { - var _remnant = _pieces.slice(-_i).join('.'); - - var _start = _pieces.slice(0, -_i).join('.'); - - if (currentUpdate[_start] != null) { - currentUpdate[_start][_remnant] = now; - _timestampSet = true; - break; - } else if (currentUpdate.$set && currentUpdate.$set[_start]) { - currentUpdate.$set[_start][_remnant] = now; - _timestampSet = true; - break; - } - } - } - - if (!_timestampSet) { - updates.$setOnInsert = updates.$setOnInsert || {}; - updates.$setOnInsert[createdAt] = now; - } - } - - if (Object.keys(updates.$set).length === 0) { - delete updates.$set; - } - - return updates; -} - -/***/ }), - -/***/ 6379: -/***/ ((module, exports, __webpack_require__) => { - -"use strict"; -/*! - * Dependencies - */ - - -var StateMachine = __webpack_require__(489); - -var ActiveRoster = StateMachine.ctor('require', 'modify', 'init', 'default', 'ignore'); -module.exports = exports = InternalCache; - -function InternalCache() { - this.activePaths = new ActiveRoster(); -} - -InternalCache.prototype.fullPath = undefined; -InternalCache.prototype.strictMode = undefined; -InternalCache.prototype.selected = undefined; -InternalCache.prototype.shardval = undefined; -InternalCache.prototype.saveError = undefined; -InternalCache.prototype.validationError = undefined; -InternalCache.prototype.adhocPaths = undefined; -InternalCache.prototype.removing = undefined; -InternalCache.prototype.inserting = undefined; -InternalCache.prototype.saving = undefined; -InternalCache.prototype.version = undefined; -InternalCache.prototype._id = undefined; -InternalCache.prototype.ownerDocument = undefined; -InternalCache.prototype.populate = undefined; // what we want to populate in this doc - -InternalCache.prototype.populated = undefined; // the _ids that have been populated - -/** - * If `false`, this document was not the result of population. - * If `true`, this document is a populated doc underneath another doc - * If an object, this document is a populated doc and the `value` property of the - * object contains the original depopulated value. - */ - -InternalCache.prototype.wasPopulated = false; -InternalCache.prototype.scope = undefined; -InternalCache.prototype.session = null; -InternalCache.prototype.pathsToScopes = null; -InternalCache.prototype.cachedRequired = null; - -/***/ }), - -/***/ 4962: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - -/*! - * ignore - */ - -exports.h = { - transform: false, - virtuals: false, - getters: false, - _skipDepopulateTopLevel: true, - depopulate: true, - flattenDecimals: false, - useProjection: false -}; - -/***/ }), - -/***/ 4034: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var clone = __webpack_require__(1973); - -var PopulateOptions = /*#__PURE__*/_createClass(function PopulateOptions(obj) { - _classCallCheck(this, PopulateOptions); - - this._docs = {}; - this._childDocs = []; - - if (obj == null) { - return; - } - - obj = clone(obj); - Object.assign(this, obj); - - if (_typeof(obj.subPopulate) === 'object') { - this.populate = obj.subPopulate; - } - - if (obj.perDocumentLimit != null && obj.limit != null) { - throw new Error('Can not use `limit` and `perDocumentLimit` at the same time. Path: `' + obj.path + '`.'); - } -}); -/** - * The connection used to look up models by name. If not specified, Mongoose - * will default to using the connection associated with the model in - * `PopulateOptions#model`. - * - * @memberOf PopulateOptions - * @property {Connection} connection - * @api public - */ - - -module.exports = PopulateOptions; - -/***/ }), - -/***/ 4756: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -var SchemaTypeOptions = __webpack_require__(1764); -/** - * The options defined on an Array schematype. - * - * #### Example: - * - * const schema = new Schema({ tags: [String] }); - * schema.path('tags').options; // SchemaArrayOptions instance - * - * @api public - * @inherits SchemaTypeOptions - * @constructor SchemaArrayOptions - */ - - -var SchemaArrayOptions = /*#__PURE__*/function (_SchemaTypeOptions) { - _inherits(SchemaArrayOptions, _SchemaTypeOptions); - - var _super = _createSuper(SchemaArrayOptions); - - function SchemaArrayOptions() { - _classCallCheck(this, SchemaArrayOptions); - - return _super.apply(this, arguments); - } - - return _createClass(SchemaArrayOptions); -}(SchemaTypeOptions); - -var opts = __webpack_require__(3439); -/** - * If this is an array of strings, an array of allowed values for this path. - * Throws an error if this array isn't an array of strings. - * - * @api public - * @property enum - * @memberOf SchemaArrayOptions - * @type Array - * @instance - */ - - -Object.defineProperty(SchemaArrayOptions.prototype, 'enum', opts); -/** - * If set, specifies the type of this array's values. Equivalent to setting - * `type` to an array whose first element is `of`. - * - * #### Example: - * - * // `arr` is an array of numbers. - * new Schema({ arr: [Number] }); - * // Equivalent way to define `arr` as an array of numbers - * new Schema({ arr: { type: Array, of: Number } }); - * - * @api public - * @property of - * @memberOf SchemaArrayOptions - * @type Function|String - * @instance - */ - -Object.defineProperty(SchemaArrayOptions.prototype, 'of', opts); -/*! - * ignore - */ - -module.exports = SchemaArrayOptions; - -/***/ }), - -/***/ 9586: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -var SchemaTypeOptions = __webpack_require__(1764); -/** - * The options defined on a Buffer schematype. - * - * #### Example: - * - * const schema = new Schema({ bitmap: Buffer }); - * schema.path('bitmap').options; // SchemaBufferOptions instance - * - * @api public - * @inherits SchemaTypeOptions - * @constructor SchemaBufferOptions - */ - - -var SchemaBufferOptions = /*#__PURE__*/function (_SchemaTypeOptions) { - _inherits(SchemaBufferOptions, _SchemaTypeOptions); - - var _super = _createSuper(SchemaBufferOptions); - - function SchemaBufferOptions() { - _classCallCheck(this, SchemaBufferOptions); - - return _super.apply(this, arguments); - } - - return _createClass(SchemaBufferOptions); -}(SchemaTypeOptions); - -var opts = __webpack_require__(3439); -/** - * Set the default subtype for this buffer. - * - * @api public - * @property subtype - * @memberOf SchemaBufferOptions - * @type Number - * @instance - */ - - -Object.defineProperty(SchemaBufferOptions.prototype, 'subtype', opts); -/*! - * ignore - */ - -module.exports = SchemaBufferOptions; - -/***/ }), - -/***/ 2869: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -var SchemaTypeOptions = __webpack_require__(1764); -/** - * The options defined on a Date schematype. - * - * #### Example: - * - * const schema = new Schema({ startedAt: Date }); - * schema.path('startedAt').options; // SchemaDateOptions instance - * - * @api public - * @inherits SchemaTypeOptions - * @constructor SchemaDateOptions - */ - - -var SchemaDateOptions = /*#__PURE__*/function (_SchemaTypeOptions) { - _inherits(SchemaDateOptions, _SchemaTypeOptions); - - var _super = _createSuper(SchemaDateOptions); - - function SchemaDateOptions() { - _classCallCheck(this, SchemaDateOptions); - - return _super.apply(this, arguments); - } - - return _createClass(SchemaDateOptions); -}(SchemaTypeOptions); - -var opts = __webpack_require__(3439); -/** - * If set, Mongoose adds a validator that checks that this path is after the - * given `min`. - * - * @api public - * @property min - * @memberOf SchemaDateOptions - * @type Date - * @instance - */ - - -Object.defineProperty(SchemaDateOptions.prototype, 'min', opts); -/** - * If set, Mongoose adds a validator that checks that this path is before the - * given `max`. - * - * @api public - * @property max - * @memberOf SchemaDateOptions - * @type Date - * @instance - */ - -Object.defineProperty(SchemaDateOptions.prototype, 'max', opts); -/** - * If set, Mongoose creates a TTL index on this path. - * - * mongo TTL index `expireAfterSeconds` value will take 'expires' value expressed in seconds. - * - * #### Example: - * - * const schema = new Schema({ "expireAt": { type: Date, expires: 11 } }); - * // if 'expireAt' is set, then document expires at expireAt + 11 seconds - * - * @api public - * @property expires - * @memberOf SchemaDateOptions - * @type Date - * @instance - */ - -Object.defineProperty(SchemaDateOptions.prototype, 'expires', opts); -/*! - * ignore - */ - -module.exports = SchemaDateOptions; - -/***/ }), - -/***/ 887: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -var SchemaTypeOptions = __webpack_require__(1764); -/** - * The options defined on an Document Array schematype. - * - * #### Example: - * - * const schema = new Schema({ users: [{ name: string }] }); - * schema.path('users').options; // SchemaDocumentArrayOptions instance - * - * @api public - * @inherits SchemaTypeOptions - * @constructor SchemaDocumentOptions - */ - - -var SchemaDocumentArrayOptions = /*#__PURE__*/function (_SchemaTypeOptions) { - _inherits(SchemaDocumentArrayOptions, _SchemaTypeOptions); - - var _super = _createSuper(SchemaDocumentArrayOptions); - - function SchemaDocumentArrayOptions() { - _classCallCheck(this, SchemaDocumentArrayOptions); - - return _super.apply(this, arguments); - } - - return _createClass(SchemaDocumentArrayOptions); -}(SchemaTypeOptions); - -var opts = __webpack_require__(3439); -/** - * If `true`, Mongoose will skip building any indexes defined in this array's schema. - * If not set, Mongoose will build all indexes defined in this array's schema. - * - * #### Example: - * - * const childSchema = Schema({ name: { type: String, index: true } }); - * // If `excludeIndexes` is `true`, Mongoose will skip building an index - * // on `arr.name`. Otherwise, Mongoose will build an index on `arr.name`. - * const parentSchema = Schema({ - * arr: { type: [childSchema], excludeIndexes: true } - * }); - * - * @api public - * @property excludeIndexes - * @memberOf SchemaDocumentArrayOptions - * @type Array - * @instance - */ - - -Object.defineProperty(SchemaDocumentArrayOptions.prototype, 'excludeIndexes', opts); -/** - * If set, overwrites the child schema's `_id` option. - * - * #### Example: - * - * const childSchema = Schema({ name: String }); - * const parentSchema = Schema({ - * child: { type: childSchema, _id: false } - * }); - * parentSchema.path('child').schema.options._id; // false - * - * @api public - * @property _id - * @memberOf SchemaDocumentArrayOptions - * @type Array - * @instance - */ - -Object.defineProperty(SchemaDocumentArrayOptions.prototype, '_id', opts); -/*! - * ignore - */ - -module.exports = SchemaDocumentArrayOptions; - -/***/ }), - -/***/ 8227: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -var SchemaTypeOptions = __webpack_require__(1764); -/** - * The options defined on a Map schematype. - * - * #### Example: - * - * const schema = new Schema({ socialMediaHandles: { type: Map, of: String } }); - * schema.path('socialMediaHandles').options; // SchemaMapOptions instance - * - * @api public - * @inherits SchemaTypeOptions - * @constructor SchemaMapOptions - */ - - -var SchemaMapOptions = /*#__PURE__*/function (_SchemaTypeOptions) { - _inherits(SchemaMapOptions, _SchemaTypeOptions); - - var _super = _createSuper(SchemaMapOptions); - - function SchemaMapOptions() { - _classCallCheck(this, SchemaMapOptions); - - return _super.apply(this, arguments); - } - - return _createClass(SchemaMapOptions); -}(SchemaTypeOptions); - -var opts = __webpack_require__(3439); -/** - * If set, specifies the type of this map's values. Mongoose will cast - * this map's values to the given type. - * - * If not set, Mongoose will not cast the map's values. - * - * #### Example: - * - * // Mongoose will cast `socialMediaHandles` values to strings - * const schema = new Schema({ socialMediaHandles: { type: Map, of: String } }); - * schema.path('socialMediaHandles').options.of; // String - * - * @api public - * @property of - * @memberOf SchemaMapOptions - * @type Function|string - * @instance - */ - - -Object.defineProperty(SchemaMapOptions.prototype, 'of', opts); -module.exports = SchemaMapOptions; - -/***/ }), - -/***/ 8491: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -var SchemaTypeOptions = __webpack_require__(1764); -/** - * The options defined on a Number schematype. - * - * #### Example: - * - * const schema = new Schema({ count: Number }); - * schema.path('count').options; // SchemaNumberOptions instance - * - * @api public - * @inherits SchemaTypeOptions - * @constructor SchemaNumberOptions - */ - - -var SchemaNumberOptions = /*#__PURE__*/function (_SchemaTypeOptions) { - _inherits(SchemaNumberOptions, _SchemaTypeOptions); - - var _super = _createSuper(SchemaNumberOptions); - - function SchemaNumberOptions() { - _classCallCheck(this, SchemaNumberOptions); - - return _super.apply(this, arguments); - } - - return _createClass(SchemaNumberOptions); -}(SchemaTypeOptions); - -var opts = __webpack_require__(3439); -/** - * If set, Mongoose adds a validator that checks that this path is at least the - * given `min`. - * - * @api public - * @property min - * @memberOf SchemaNumberOptions - * @type Number - * @instance - */ - - -Object.defineProperty(SchemaNumberOptions.prototype, 'min', opts); -/** - * If set, Mongoose adds a validator that checks that this path is less than the - * given `max`. - * - * @api public - * @property max - * @memberOf SchemaNumberOptions - * @type Number - * @instance - */ - -Object.defineProperty(SchemaNumberOptions.prototype, 'max', opts); -/** - * If set, Mongoose adds a validator that checks that this path is strictly - * equal to one of the given values. - * - * #### Example: - * const schema = new Schema({ - * favoritePrime: { - * type: Number, - * enum: [3, 5, 7] - * } - * }); - * schema.path('favoritePrime').options.enum; // [3, 5, 7] - * - * @api public - * @property enum - * @memberOf SchemaNumberOptions - * @type Array - * @instance - */ - -Object.defineProperty(SchemaNumberOptions.prototype, 'enum', opts); -/** - * Sets default [populate options](/docs/populate.html#query-conditions). - * - * #### Example: - * const schema = new Schema({ - * child: { - * type: Number, - * ref: 'Child', - * populate: { select: 'name' } - * } - * }); - * const Parent = mongoose.model('Parent', schema); - * - * // Automatically adds `.select('name')` - * Parent.findOne().populate('child'); - * - * @api public - * @property populate - * @memberOf SchemaNumberOptions - * @type Object - * @instance - */ - -Object.defineProperty(SchemaNumberOptions.prototype, 'populate', opts); -/*! - * ignore - */ - -module.exports = SchemaNumberOptions; - -/***/ }), - -/***/ 8172: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -var SchemaTypeOptions = __webpack_require__(1764); -/** - * The options defined on an ObjectId schematype. - * - * #### Example: - * - * const schema = new Schema({ testId: mongoose.ObjectId }); - * schema.path('testId').options; // SchemaObjectIdOptions instance - * - * @api public - * @inherits SchemaTypeOptions - * @constructor SchemaObjectIdOptions - */ - - -var SchemaObjectIdOptions = /*#__PURE__*/function (_SchemaTypeOptions) { - _inherits(SchemaObjectIdOptions, _SchemaTypeOptions); - - var _super = _createSuper(SchemaObjectIdOptions); - - function SchemaObjectIdOptions() { - _classCallCheck(this, SchemaObjectIdOptions); - - return _super.apply(this, arguments); - } - - return _createClass(SchemaObjectIdOptions); -}(SchemaTypeOptions); - -var opts = __webpack_require__(3439); -/** - * If truthy, uses Mongoose's default built-in ObjectId path. - * - * @api public - * @property auto - * @memberOf SchemaObjectIdOptions - * @type Boolean - * @instance - */ - - -Object.defineProperty(SchemaObjectIdOptions.prototype, 'auto', opts); -/** - * Sets default [populate options](/docs/populate.html#query-conditions). - * - * #### Example: - * const schema = new Schema({ - * child: { - * type: 'ObjectId', - * ref: 'Child', - * populate: { select: 'name' } - * } - * }); - * const Parent = mongoose.model('Parent', schema); - * - * // Automatically adds `.select('name')` - * Parent.findOne().populate('child'); - * - * @api public - * @property populate - * @memberOf SchemaObjectIdOptions - * @type Object - * @instance - */ - -Object.defineProperty(SchemaObjectIdOptions.prototype, 'populate', opts); -/*! - * ignore - */ - -module.exports = SchemaObjectIdOptions; - -/***/ }), - -/***/ 3209: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -var SchemaTypeOptions = __webpack_require__(1764); -/** - * The options defined on a string schematype. - * - * #### Example: - * - * const schema = new Schema({ name: String }); - * schema.path('name').options; // SchemaStringOptions instance - * - * @api public - * @inherits SchemaTypeOptions - * @constructor SchemaStringOptions - */ - - -var SchemaStringOptions = /*#__PURE__*/function (_SchemaTypeOptions) { - _inherits(SchemaStringOptions, _SchemaTypeOptions); - - var _super = _createSuper(SchemaStringOptions); - - function SchemaStringOptions() { - _classCallCheck(this, SchemaStringOptions); - - return _super.apply(this, arguments); - } - - return _createClass(SchemaStringOptions); -}(SchemaTypeOptions); - -var opts = __webpack_require__(3439); -/** - * Array of allowed values for this path - * - * @api public - * @property enum - * @memberOf SchemaStringOptions - * @type Array - * @instance - */ - - -Object.defineProperty(SchemaStringOptions.prototype, 'enum', opts); -/** - * Attach a validator that succeeds if the data string matches the given regular - * expression, and fails otherwise. - * - * @api public - * @property match - * @memberOf SchemaStringOptions - * @type RegExp - * @instance - */ - -Object.defineProperty(SchemaStringOptions.prototype, 'match', opts); -/** - * If truthy, Mongoose will add a custom setter that lowercases this string - * using JavaScript's built-in `String#toLowerCase()`. - * - * @api public - * @property lowercase - * @memberOf SchemaStringOptions - * @type Boolean - * @instance - */ - -Object.defineProperty(SchemaStringOptions.prototype, 'lowercase', opts); -/** - * If truthy, Mongoose will add a custom setter that removes leading and trailing - * whitespace using [JavaScript's built-in `String#trim()`](https://masteringjs.io/tutorials/fundamentals/trim-string). - * - * @api public - * @property trim - * @memberOf SchemaStringOptions - * @type Boolean - * @instance - */ - -Object.defineProperty(SchemaStringOptions.prototype, 'trim', opts); -/** - * If truthy, Mongoose will add a custom setter that uppercases this string - * using JavaScript's built-in [`String#toUpperCase()`](https://masteringjs.io/tutorials/fundamentals/uppercase). - * - * @api public - * @property uppercase - * @memberOf SchemaStringOptions - * @type Boolean - * @instance - */ - -Object.defineProperty(SchemaStringOptions.prototype, 'uppercase', opts); -/** - * If set, Mongoose will add a custom validator that ensures the given - * string's `length` is at least the given number. - * - * Mongoose supports two different spellings for this option: `minLength` and `minlength`. - * `minLength` is the recommended way to specify this option, but Mongoose also supports - * `minlength` (lowercase "l"). - * - * @api public - * @property minLength - * @memberOf SchemaStringOptions - * @type Number - * @instance - */ - -Object.defineProperty(SchemaStringOptions.prototype, 'minLength', opts); -Object.defineProperty(SchemaStringOptions.prototype, 'minlength', opts); -/** - * If set, Mongoose will add a custom validator that ensures the given - * string's `length` is at most the given number. - * - * Mongoose supports two different spellings for this option: `maxLength` and `maxlength`. - * `maxLength` is the recommended way to specify this option, but Mongoose also supports - * `maxlength` (lowercase "l"). - * - * @api public - * @property maxLength - * @memberOf SchemaStringOptions - * @type Number - * @instance - */ - -Object.defineProperty(SchemaStringOptions.prototype, 'maxLength', opts); -Object.defineProperty(SchemaStringOptions.prototype, 'maxlength', opts); -/** - * Sets default [populate options](/docs/populate.html#query-conditions). - * - * @api public - * @property populate - * @memberOf SchemaStringOptions - * @type Object - * @instance - */ - -Object.defineProperty(SchemaStringOptions.prototype, 'populate', opts); -/*! - * ignore - */ - -module.exports = SchemaStringOptions; - -/***/ }), - -/***/ 5446: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -var SchemaTypeOptions = __webpack_require__(1764); -/** - * The options defined on a single nested schematype. - * - * #### Example: - * - * const schema = Schema({ child: Schema({ name: String }) }); - * schema.path('child').options; // SchemaSubdocumentOptions instance - * - * @api public - * @inherits SchemaTypeOptions - * @constructor SchemaSubdocumentOptions - */ - - -var SchemaSubdocumentOptions = /*#__PURE__*/function (_SchemaTypeOptions) { - _inherits(SchemaSubdocumentOptions, _SchemaTypeOptions); - - var _super = _createSuper(SchemaSubdocumentOptions); - - function SchemaSubdocumentOptions() { - _classCallCheck(this, SchemaSubdocumentOptions); - - return _super.apply(this, arguments); - } - - return _createClass(SchemaSubdocumentOptions); -}(SchemaTypeOptions); - -var opts = __webpack_require__(3439); -/** - * If set, overwrites the child schema's `_id` option. - * - * #### Example: - * - * const childSchema = Schema({ name: String }); - * const parentSchema = Schema({ - * child: { type: childSchema, _id: false } - * }); - * parentSchema.path('child').schema.options._id; // false - * - * @api public - * @property of - * @memberOf SchemaSubdocumentOptions - * @type Function|string - * @instance - */ - - -Object.defineProperty(SchemaSubdocumentOptions.prototype, '_id', opts); -module.exports = SchemaSubdocumentOptions; - -/***/ }), - -/***/ 1764: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var clone = __webpack_require__(1973); -/** - * The options defined on a schematype. - * - * #### Example: - * - * const schema = new Schema({ name: String }); - * schema.path('name').options instanceof mongoose.SchemaTypeOptions; // true - * - * @api public - * @constructor SchemaTypeOptions - */ - - -var SchemaTypeOptions = /*#__PURE__*/_createClass(function SchemaTypeOptions(obj) { - _classCallCheck(this, SchemaTypeOptions); - - if (obj == null) { - return this; - } - - Object.assign(this, clone(obj)); -}); - -var opts = __webpack_require__(3439); -/** - * The type to cast this path to. - * - * @api public - * @property type - * @memberOf SchemaTypeOptions - * @type Function|String|Object - * @instance - */ - - -Object.defineProperty(SchemaTypeOptions.prototype, 'type', opts); -/** - * Function or object describing how to validate this schematype. - * - * @api public - * @property validate - * @memberOf SchemaTypeOptions - * @type Function|Object - * @instance - */ - -Object.defineProperty(SchemaTypeOptions.prototype, 'validate', opts); -/** - * Allows overriding casting logic for this individual path. If a string, the - * given string overwrites Mongoose's default cast error message. - * - * #### Example: - * - * const schema = new Schema({ - * num: { - * type: Number, - * cast: '{VALUE} is not a valid number' - * } - * }); - * - * // Throws 'CastError: "bad" is not a valid number' - * schema.path('num').cast('bad'); - * - * const Model = mongoose.model('Test', schema); - * const doc = new Model({ num: 'fail' }); - * const err = doc.validateSync(); - * - * err.errors['num']; // 'CastError: "fail" is not a valid number' - * - * @api public - * @property cast - * @memberOf SchemaTypeOptions - * @type String - * @instance - */ - -Object.defineProperty(SchemaTypeOptions.prototype, 'cast', opts); -/** - * If true, attach a required validator to this path, which ensures this path - * cannot be set to a nullish value. If a function, Mongoose calls the - * function and only checks for nullish values if the function returns a truthy value. - * - * @api public - * @property required - * @memberOf SchemaTypeOptions - * @type Function|Boolean - * @instance - */ - -Object.defineProperty(SchemaTypeOptions.prototype, 'required', opts); -/** - * The default value for this path. If a function, Mongoose executes the function - * and uses the return value as the default. - * - * @api public - * @property default - * @memberOf SchemaTypeOptions - * @type Function|Any - * @instance - */ - -Object.defineProperty(SchemaTypeOptions.prototype, 'default', opts); -/** - * The model that `populate()` should use if populating this path. - * - * @api public - * @property ref - * @memberOf SchemaTypeOptions - * @type Function|String - * @instance - */ - -Object.defineProperty(SchemaTypeOptions.prototype, 'ref', opts); -/** - * The path in the document that `populate()` should use to find the model - * to use. - * - * @api public - * @property ref - * @memberOf SchemaTypeOptions - * @type Function|String - * @instance - */ - -Object.defineProperty(SchemaTypeOptions.prototype, 'refPath', opts); -/** - * Whether to include or exclude this path by default when loading documents - * using `find()`, `findOne()`, etc. - * - * @api public - * @property select - * @memberOf SchemaTypeOptions - * @type Boolean|Number - * @instance - */ - -Object.defineProperty(SchemaTypeOptions.prototype, 'select', opts); -/** - * If [truthy](https://masteringjs.io/tutorials/fundamentals/truthy), Mongoose will - * build an index on this path when the model is compiled. - * - * @api public - * @property index - * @memberOf SchemaTypeOptions - * @type Boolean|Number|Object - * @instance - */ - -Object.defineProperty(SchemaTypeOptions.prototype, 'index', opts); -/** - * If [truthy](https://masteringjs.io/tutorials/fundamentals/truthy), Mongoose - * will build a unique index on this path when the - * model is compiled. [The `unique` option is **not** a validator](/docs/validation.html#the-unique-option-is-not-a-validator). - * - * @api public - * @property unique - * @memberOf SchemaTypeOptions - * @type Boolean|Number - * @instance - */ - -Object.defineProperty(SchemaTypeOptions.prototype, 'unique', opts); -/** - * If [truthy](https://masteringjs.io/tutorials/fundamentals/truthy), Mongoose will - * disallow changes to this path once the document - * is saved to the database for the first time. Read more about [immutability in Mongoose here](https://thecodebarbarian.com/whats-new-in-mongoose-5-6-immutable-properties.html). - * - * @api public - * @property immutable - * @memberOf SchemaTypeOptions - * @type Function|Boolean - * @instance - */ - -Object.defineProperty(SchemaTypeOptions.prototype, 'immutable', opts); -/** - * If [truthy](https://masteringjs.io/tutorials/fundamentals/truthy), Mongoose will - * build a sparse index on this path. - * - * @api public - * @property sparse - * @memberOf SchemaTypeOptions - * @type Boolean|Number - * @instance - */ - -Object.defineProperty(SchemaTypeOptions.prototype, 'sparse', opts); -/** - * If [truthy](https://masteringjs.io/tutorials/fundamentals/truthy), Mongoose - * will build a text index on this path. - * - * @api public - * @property text - * @memberOf SchemaTypeOptions - * @type Boolean|Number|Object - * @instance - */ - -Object.defineProperty(SchemaTypeOptions.prototype, 'text', opts); -/** - * Define a transform function for this individual schema type. - * Only called when calling `toJSON()` or `toObject()`. - * - * #### Example: - * - * const schema = Schema({ - * myDate: { - * type: Date, - * transform: v => v.getFullYear() - * } - * }); - * const Model = mongoose.model('Test', schema); - * - * const doc = new Model({ myDate: new Date('2019/06/01') }); - * doc.myDate instanceof Date; // true - * - * const res = doc.toObject({ transform: true }); - * res.myDate; // 2019 - * - * @api public - * @property transform - * @memberOf SchemaTypeOptions - * @type Function - * @instance - */ - -Object.defineProperty(SchemaTypeOptions.prototype, 'transform', opts); -module.exports = SchemaTypeOptions; - -/***/ }), - -/***/ 1902: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var opts = __webpack_require__(3439); - -var VirtualOptions = /*#__PURE__*/_createClass(function VirtualOptions(obj) { - _classCallCheck(this, VirtualOptions); - - Object.assign(this, obj); - - if (obj != null && obj.options != null) { - this.options = Object.assign({}, obj.options); - } -}); -/** - * Marks this virtual as a populate virtual, and specifies the model to - * use for populate. - * - * @api public - * @property ref - * @memberOf VirtualOptions - * @type String|Model|Function - * @instance - */ - - -Object.defineProperty(VirtualOptions.prototype, 'ref', opts); -/** - * Marks this virtual as a populate virtual, and specifies the path that - * contains the name of the model to populate - * - * @api public - * @property refPath - * @memberOf VirtualOptions - * @type String|Function - * @instance - */ - -Object.defineProperty(VirtualOptions.prototype, 'refPath', opts); -/** - * The name of the property in the local model to match to `foreignField` - * in the foreign model. - * - * @api public - * @property localField - * @memberOf VirtualOptions - * @type String|Function - * @instance - */ - -Object.defineProperty(VirtualOptions.prototype, 'localField', opts); -/** - * The name of the property in the foreign model to match to `localField` - * in the local model. - * - * @api public - * @property foreignField - * @memberOf VirtualOptions - * @type String|Function - * @instance - */ - -Object.defineProperty(VirtualOptions.prototype, 'foreignField', opts); -/** - * Whether to populate this virtual as a single document (true) or an - * array of documents (false). - * - * @api public - * @property justOne - * @memberOf VirtualOptions - * @type Boolean - * @instance - */ - -Object.defineProperty(VirtualOptions.prototype, 'justOne', opts); -/** - * If true, populate just the number of documents where `localField` - * matches `foreignField`, as opposed to the documents themselves. - * - * If `count` is set, it overrides `justOne`. - * - * @api public - * @property count - * @memberOf VirtualOptions - * @type Boolean - * @instance - */ - -Object.defineProperty(VirtualOptions.prototype, 'count', opts); -/** - * Add an additional filter to populate, in addition to `localField` - * matches `foreignField`. - * - * @api public - * @property match - * @memberOf VirtualOptions - * @type Object|Function - * @instance - */ - -Object.defineProperty(VirtualOptions.prototype, 'match', opts); -/** - * Additional options to pass to the query used to `populate()`: - * - * - `sort` - * - `skip` - * - `limit` - * - * @api public - * @property options - * @memberOf VirtualOptions - * @type Object - * @instance - */ - -Object.defineProperty(VirtualOptions.prototype, 'options', opts); -/** - * If true, add a `skip` to the query used to `populate()`. - * - * @api public - * @property skip - * @memberOf VirtualOptions - * @type Number - * @instance - */ - -Object.defineProperty(VirtualOptions.prototype, 'skip', opts); -/** - * If true, add a `limit` to the query used to `populate()`. - * - * @api public - * @property limit - * @memberOf VirtualOptions - * @type Number - * @instance - */ - -Object.defineProperty(VirtualOptions.prototype, 'limit', opts); -/** - * The `limit` option for `populate()` has [some unfortunate edge cases](/docs/populate.html#query-conditions) - * when working with multiple documents, like `.find().populate()`. The - * `perDocumentLimit` option makes `populate()` execute a separate query - * for each document returned from `find()` to ensure each document - * gets up to `perDocumentLimit` populated docs if possible. - * - * @api public - * @property perDocumentLimit - * @memberOf VirtualOptions - * @type Number - * @instance - */ - -Object.defineProperty(VirtualOptions.prototype, 'perDocumentLimit', opts); -module.exports = VirtualOptions; - -/***/ }), - -/***/ 3439: -/***/ ((module) => { - -"use strict"; - - -module.exports = Object.freeze({ - enumerable: true, - configurable: true, - writable: true, - value: void 0 -}); - -/***/ }), - -/***/ 6755: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/*! - * ignore - */ - - -var assert = __webpack_require__(9373); - -var mquery = __webpack_require__(5417); -/** - * Helper for multiplexing promise implementations - * - * @api private - */ - - -var store = { - _promise: null -}; -/** - * Get the current promise constructor - * - * @api private - */ - -store.get = function () { - return store._promise; -}; -/** - * Set the current promise constructor - * - * @api private - */ - - -store.set = function (lib) { - assert.ok(typeof lib === 'function', "mongoose.Promise must be a function, got ".concat(lib)); - store._promise = lib; - mquery.Promise = lib; -}; -/*! - * Use native promises by default - */ - - -store.set(__webpack_require__.g.Promise); -module.exports = store; - -/***/ }), - -/***/ 2888: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - -/*! - * Module dependencies - */ - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } - -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } - -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - -var checkEmbeddedDiscriminatorKeyProjection = __webpack_require__(4531); - -var get = __webpack_require__(9981); - -var getDiscriminatorByValue = __webpack_require__(7291); - -var isDefiningProjection = __webpack_require__(2183); - -var clone = __webpack_require__(1973); -/*! - * Prepare a set of path options for query population. - * - * @param {Query} query - * @param {Object} options - * @return {Array} - */ - - -exports.preparePopulationOptions = function preparePopulationOptions(query, options) { - var _populate = query.options.populate; - var pop = Object.keys(_populate).reduce(function (vals, key) { - return vals.concat([_populate[key]]); - }, []); // lean options should trickle through all queries - - if (options.lean != null) { - pop.filter(function (p) { - return (p && p.options && p.options.lean) == null; - }).forEach(makeLean(options.lean)); - } - - pop.forEach(function (opts) { - opts._localModel = query.model; - }); - return pop; -}; -/*! - * Prepare a set of path options for query population. This is the MongooseQuery - * version - * - * @param {Query} query - * @param {Object} options - * @return {Array} - */ - - -exports.preparePopulationOptionsMQ = function preparePopulationOptionsMQ(query, options) { - var _populate = query._mongooseOptions.populate; - var pop = Object.keys(_populate).reduce(function (vals, key) { - return vals.concat([_populate[key]]); - }, []); // lean options should trickle through all queries - - if (options.lean != null) { - pop.filter(function (p) { - return (p && p.options && p.options.lean) == null; - }).forEach(makeLean(options.lean)); - } - - var session = query && query.options && query.options.session || null; - - if (session != null) { - pop.forEach(function (path) { - if (path.options == null) { - path.options = { - session: session - }; - return; - } - - if (!('session' in path.options)) { - path.options.session = session; - } - }); - } - - var projection = query._fieldsForExec(); - - pop.forEach(function (p) { - p._queryProjection = projection; - }); - pop.forEach(function (opts) { - opts._localModel = query.model; - }); - return pop; -}; -/*! - * If the document is a mapped discriminator type, it returns a model instance for that type, otherwise, - * it returns an instance of the given model. - * - * @param {Model} model - * @param {Object} doc - * @param {Object} fields - * - * @return {Document} - */ - - -exports.createModel = function createModel(model, doc, fields, userProvidedFields, options) { - model.hooks.execPreSync('createModel', doc); - var discriminatorMapping = model.schema ? model.schema.discriminatorMapping : null; - var key = discriminatorMapping && discriminatorMapping.isRoot ? discriminatorMapping.key : null; - var value = doc[key]; - - if (key && value && model.discriminators) { - var discriminator = model.discriminators[value] || getDiscriminatorByValue(model.discriminators, value); - - if (discriminator) { - var _fields = clone(userProvidedFields); - - exports.applyPaths(_fields, discriminator.schema); - return new discriminator(undefined, _fields, true); - } - } - - var _opts = { - skipId: true, - isNew: false, - willInit: true - }; - - if (options != null && 'defaults' in options) { - _opts.defaults = options.defaults; - } - - return new model(undefined, fields, _opts); -}; -/*! - * ignore - */ - - -exports.createModelAndInit = function createModelAndInit(model, doc, fields, userProvidedFields, options, populatedIds, callback) { - var initOpts = populatedIds ? { - populated: populatedIds - } : undefined; - var casted = exports.createModel(model, doc, fields, userProvidedFields, options); - - try { - casted.$init(doc, initOpts, callback); - } catch (error) { - callback(error, casted); - } -}; -/*! - * ignore - */ - - -exports.applyPaths = function applyPaths(fields, schema) { - // determine if query is selecting or excluding fields - var exclude; - var keys; - var keyIndex; - - if (fields) { - keys = Object.keys(fields); - keyIndex = keys.length; - - while (keyIndex--) { - if (keys[keyIndex][0] === '+') { - continue; - } - - var field = fields[keys[keyIndex]]; // Skip `$meta` and `$slice` - - if (!isDefiningProjection(field)) { - continue; - } - - exclude = !field; - break; - } - } // if selecting, apply default schematype select:true fields - // if excluding, apply schematype select:false fields - - - var selected = []; - var excluded = []; - var stack = []; - analyzeSchema(schema); - - switch (exclude) { - case true: - var _iterator = _createForOfIteratorHelper(excluded), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var fieldName = _step.value; - fields[fieldName] = 0; - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - break; - - case false: - if (schema && schema.paths['_id'] && schema.paths['_id'].options && schema.paths['_id'].options.select === false) { - fields._id = 0; - } - - var _iterator2 = _createForOfIteratorHelper(selected), - _step2; - - try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - var _fieldName = _step2.value; - fields[_fieldName] = fields[_fieldName] || 1; - } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); - } - - break; - - case undefined: - if (fields == null) { - break; - } // Any leftover plus paths must in the schema, so delete them (gh-7017) - - - for (var _i = 0, _Object$keys = Object.keys(fields || {}); _i < _Object$keys.length; _i++) { - var key = _Object$keys[_i]; - - if (key.startsWith('+')) { - delete fields[key]; - } - } // user didn't specify fields, implies returning all fields. - // only need to apply excluded fields and delete any plus paths - - - var _iterator3 = _createForOfIteratorHelper(excluded), - _step3; - - try { - for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { - var _fieldName2 = _step3.value; - - if (fields[_fieldName2] != null) { - // Skip applying default projections to fields with non-defining - // projections, like `$slice` - continue; - } - - fields[_fieldName2] = 0; - } - } catch (err) { - _iterator3.e(err); - } finally { - _iterator3.f(); - } - - break; - } - - function analyzeSchema(schema, prefix) { - prefix || (prefix = ''); // avoid recursion - - if (stack.indexOf(schema) !== -1) { - return []; - } - - stack.push(schema); - var addedPaths = []; - schema.eachPath(function (path, type) { - if (prefix) path = prefix + '.' + path; - - if (type.$isSchemaMap || path.endsWith('.$*')) { - return; - } - - var addedPath = analyzePath(path, type); // arrays - - if (addedPath == null && !Array.isArray(type) && type.$isMongooseArray && !type.$isMongooseDocumentArray) { - addedPath = analyzePath(path, type.caster); - } - - if (addedPath != null) { - addedPaths.push(addedPath); - } // nested schemas - - - if (type.schema) { - var _addedPaths = analyzeSchema(type.schema, path); // Special case: if discriminator key is the only field that would - // be projected in, remove it. - - - if (exclude === false) { - checkEmbeddedDiscriminatorKeyProjection(fields, path, type.schema, selected, _addedPaths); - } - } - }); - stack.pop(); - return addedPaths; - } - - function analyzePath(path, type) { - var plusPath = '+' + path; - var hasPlusPath = fields && plusPath in fields; - - if (hasPlusPath) { - // forced inclusion - delete fields[plusPath]; - } - - if (typeof type.selected !== 'boolean') { - return; - } // If set to 0, we're explicitly excluding the discriminator key. Can't do this for all fields, - // because we have tests that assert that using `-path` to exclude schema-level `select: true` - // fields counts as an exclusive projection. See gh-11546 - - - if (exclude && type.selected && path === schema.options.discriminatorKey && fields[path] != null && !fields[path]) { - delete fields[path]; - return; - } - - if (hasPlusPath) { - // forced inclusion - delete fields[plusPath]; // if there are other fields being included, add this one - // if no other included fields, leave this out (implied inclusion) - - if (exclude === false && keys.length > 1 && !~keys.indexOf(path)) { - fields[path] = 1; - } - - return; - } // check for parent exclusions - - - var pieces = path.split('.'); - var cur = ''; - - for (var i = 0; i < pieces.length; ++i) { - cur += cur.length ? '.' + pieces[i] : pieces[i]; - - if (excluded.indexOf(cur) !== -1) { - return; - } - } // Special case: if user has included a parent path of a discriminator key, - // don't explicitly project in the discriminator key because that will - // project out everything else under the parent path - - - if (!exclude && (type && type.options && type.options.$skipDiscriminatorCheck || false)) { - var _cur = ''; - - for (var _i2 = 0; _i2 < pieces.length; ++_i2) { - _cur += (_cur.length === 0 ? '' : '.') + pieces[_i2]; - var projection = get(fields, _cur, false) || get(fields, _cur + '.$', false); - - if (projection && _typeof(projection) !== 'object') { - return; - } - } - } - - (type.selected ? selected : excluded).push(path); - return path; - } -}; -/*! - * Set each path query option to lean - * - * @param {Object} option - */ - - -function makeLean(val) { - return function (option) { - option.options || (option.options = {}); - - if (val != null && Array.isArray(val.virtuals)) { - val = Object.assign({}, val); - val.virtuals = val.virtuals.filter(function (path) { - return typeof path === 'string' && path.startsWith(option.path + '.'); - }).map(function (path) { - return path.slice(option.path.length + 1); - }); - } - - option.options.lean = val; - }; -} - -/***/ }), - -/***/ 5506: -/***/ ((module, exports, __webpack_require__) => { - -"use strict"; -/* provided dependency */ var Buffer = __webpack_require__(365)["Buffer"]; - -/*! - * Module dependencies. - */ - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } - -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } - -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - -var EventEmitter = (__webpack_require__(9620).EventEmitter); - -var Kareem = __webpack_require__(3138); - -var MongooseError = __webpack_require__(5202); - -var SchemaType = __webpack_require__(4289); - -var SchemaTypeOptions = __webpack_require__(1764); - -var VirtualOptions = __webpack_require__(1902); - -var VirtualType = __webpack_require__(459); - -var addAutoId = __webpack_require__(4133); - -var get = __webpack_require__(9981); - -var getConstructorName = __webpack_require__(1981); - -var getIndexes = __webpack_require__(5379); - -var idGetter = __webpack_require__(1879); - -var merge = __webpack_require__(4913); - -var mpath = __webpack_require__(3564); - -var readPref = (__webpack_require__(9906).get)().ReadPreference; - -var setupTimestamps = __webpack_require__(3767); - -var utils = __webpack_require__(6872); - -var validateRef = __webpack_require__(6870); - -var util = __webpack_require__(161); - -var MongooseTypes; - -var queryHooks = (__webpack_require__(5130).middlewareFunctions); - -var documentHooks = (__webpack_require__(8859).middlewareFunctions); - -var hookNames = queryHooks.concat(documentHooks).reduce(function (s, hook) { - return s.add(hook); -}, new Set()); -var isPOJO = utils.isPOJO; -var id = 0; -/** - * Schema constructor. - * - * #### Example: - * - * const child = new Schema({ name: String }); - * const schema = new Schema({ name: String, age: Number, children: [child] }); - * const Tree = mongoose.model('Tree', schema); - * - * // setting schema options - * new Schema({ name: String }, { _id: false, autoIndex: false }) - * - * #### Options: - * - * - [autoIndex](/docs/guide.html#autoIndex): bool - defaults to null (which means use the connection's autoIndex option) - * - [autoCreate](/docs/guide.html#autoCreate): bool - defaults to null (which means use the connection's autoCreate option) - * - [bufferCommands](/docs/guide.html#bufferCommands): bool - defaults to true - * - [bufferTimeoutMS](/docs/guide.html#bufferTimeoutMS): number - defaults to 10000 (10 seconds). If `bufferCommands` is enabled, the amount of time Mongoose will wait for connectivity to be restablished before erroring out. - * - [capped](/docs/guide.html#capped): bool | number | object - defaults to false - * - [collection](/docs/guide.html#collection): string - no default - * - [discriminatorKey](/docs/guide.html#discriminatorKey): string - defaults to `__t` - * - [id](/docs/guide.html#id): bool - defaults to true - * - [_id](/docs/guide.html#_id): bool - defaults to true - * - [minimize](/docs/guide.html#minimize): bool - controls [document#toObject](#document_Document-toObject) behavior when called manually - defaults to true - * - [read](/docs/guide.html#read): string - * - [writeConcern](/docs/guide.html#writeConcern): object - defaults to null, use to override [the MongoDB server's default write concern settings](https://docs.mongodb.com/manual/reference/write-concern/) - * - [shardKey](/docs/guide.html#shardKey): object - defaults to `null` - * - [strict](/docs/guide.html#strict): bool - defaults to true - * - [strictQuery](/docs/guide.html#strictQuery): bool - defaults to false - * - [toJSON](/docs/guide.html#toJSON) - object - no default - * - [toObject](/docs/guide.html#toObject) - object - no default - * - [typeKey](/docs/guide.html#typeKey) - string - defaults to 'type' - * - [validateBeforeSave](/docs/guide.html#validateBeforeSave) - bool - defaults to `true` - * - [versionKey](/docs/guide.html#versionKey): string or object - defaults to "__v" - * - [optimisticConcurrency](/docs/guide.html#optimisticConcurrency): bool - defaults to false. Set to true to enable [optimistic concurrency](https://thecodebarbarian.com/whats-new-in-mongoose-5-10-optimistic-concurrency.html). - * - [collation](/docs/guide.html#collation): object - defaults to null (which means use no collation) - * - [timeseries](/docs/guide.html#timeseries): object - defaults to null (which means this schema's collection won't be a timeseries collection) - * - [selectPopulatedPaths](/docs/guide.html#selectPopulatedPaths): boolean - defaults to `true` - * - [skipVersioning](/docs/guide.html#skipVersioning): object - paths to exclude from versioning - * - [timestamps](/docs/guide.html#timestamps): object or boolean - defaults to `false`. If true, Mongoose adds `createdAt` and `updatedAt` properties to your schema and manages those properties for you. - * - [pluginTags](/docs/guide.html#pluginTags): array of strings - defaults to `undefined`. If set and plugin called with `tags` option, will only apply that plugin to schemas with a matching tag. - * - * #### Options for Nested Schemas: - * - `excludeIndexes`: bool - defaults to `false`. If `true`, skip building indexes on this schema's paths. - * - * #### Note: - * - * _When nesting schemas, (`children` in the example above), always declare the child schema first before passing it into its parent._ - * - * @param {Object|Schema|Array} [definition] Can be one of: object describing schema paths, or schema to copy, or array of objects and schemas - * @param {Object} [options] - * @inherits NodeJS EventEmitter https://nodejs.org/api/events.html#events_class_events_eventemitter - * @event `init`: Emitted after the schema is compiled into a `Model`. - * @api public - */ - -function Schema(obj, options) { - if (!(this instanceof Schema)) { - return new Schema(obj, options); - } - - this.obj = obj; - this.paths = {}; - this.aliases = {}; - this.subpaths = {}; - this.virtuals = {}; - this.singleNestedPaths = {}; - this.nested = {}; - this.inherits = {}; - this.callQueue = []; - this._indexes = []; - this.methods = options && options.methods || {}; - this.methodOptions = {}; - this.statics = options && options.statics || {}; - this.tree = {}; - this.query = options && options.query || {}; - this.childSchemas = []; - this.plugins = []; // For internal debugging. Do not use this to try to save a schema in MDB. - - this.$id = ++id; - this.mapPaths = []; - this.s = { - hooks: new Kareem() - }; - this.options = this.defaultOptions(options); // build paths - - if (Array.isArray(obj)) { - var _iterator = _createForOfIteratorHelper(obj), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var definition = _step.value; - this.add(definition); - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - } else if (obj) { - this.add(obj); - } // check if _id's value is a subdocument (gh-2276) - - - var _idSubDoc = obj && obj._id && utils.isObject(obj._id); // ensure the documents get an auto _id unless disabled - - - var auto_id = !this.paths['_id'] && this.options._id && !_idSubDoc; - - if (auto_id) { - addAutoId(this); - } - - this.setupTimestamp(this.options.timestamps); -} -/*! - * Create virtual properties with alias field - */ - - -function aliasFields(schema, paths) { - paths = paths || Object.keys(schema.paths); - - var _iterator2 = _createForOfIteratorHelper(paths), - _step2; - - try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - var path = _step2.value; - var options = get(schema.paths[path], 'options'); - - if (options == null) { - continue; - } - - var prop = schema.paths[path].path; - var alias = options.alias; - - if (!alias) { - continue; - } - - if (typeof alias !== 'string') { - throw new Error('Invalid value for alias option on ' + prop + ', got ' + alias); - } - - schema.aliases[alias] = prop; - schema.virtual(alias).get(function (p) { - return function () { - if (typeof this.get === 'function') { - return this.get(p); - } - - return this[p]; - }; - }(prop)).set(function (p) { - return function (v) { - return this.$set(p, v); - }; - }(prop)); - } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); - } -} -/*! - * Inherit from EventEmitter. - */ - - -Schema.prototype = Object.create(EventEmitter.prototype); -Schema.prototype.constructor = Schema; -Schema.prototype.instanceOfSchema = true; -/*! - * ignore - */ - -Object.defineProperty(Schema.prototype, '$schemaType', { - configurable: false, - enumerable: false, - writable: true -}); -/** - * Array of child schemas (from document arrays and single nested subdocs) - * and their corresponding compiled models. Each element of the array is - * an object with 2 properties: `schema` and `model`. - * - * This property is typically only useful for plugin authors and advanced users. - * You do not need to interact with this property at all to use mongoose. - * - * @api public - * @property childSchemas - * @memberOf Schema - * @instance - */ - -Object.defineProperty(Schema.prototype, 'childSchemas', { - configurable: false, - enumerable: true, - writable: true -}); -/** - * Object containing all virtuals defined on this schema. - * The objects' keys are the virtual paths and values are instances of `VirtualType`. - * - * This property is typically only useful for plugin authors and advanced users. - * You do not need to interact with this property at all to use mongoose. - * - * #### Example: - * const schema = new Schema({}); - * schema.virtual('answer').get(() => 42); - * - * console.log(schema.virtuals); // { answer: VirtualType { path: 'answer', ... } } - * console.log(schema.virtuals['answer'].getters[0].call()); // 42 - * - * @api public - * @property virtuals - * @memberOf Schema - * @instance - */ - -Object.defineProperty(Schema.prototype, 'virtuals', { - configurable: false, - enumerable: true, - writable: true -}); -/** - * The original object passed to the schema constructor - * - * #### Example: - * - * const schema = new Schema({ a: String }).add({ b: String }); - * schema.obj; // { a: String } - * - * @api public - * @property obj - * @memberOf Schema - * @instance - */ - -Schema.prototype.obj; -/** - * The paths defined on this schema. The keys are the top-level paths - * in this schema, and the values are instances of the SchemaType class. - * - * #### Example: - * const schema = new Schema({ name: String }, { _id: false }); - * schema.paths; // { name: SchemaString { ... } } - * - * schema.add({ age: Number }); - * schema.paths; // { name: SchemaString { ... }, age: SchemaNumber { ... } } - * - * @api public - * @property paths - * @memberOf Schema - * @instance - */ - -Schema.prototype.paths; -/** - * Schema as a tree - * - * #### Example: - * { - * '_id' : ObjectId - * , 'nested' : { - * 'key' : String - * } - * } - * - * @api private - * @property tree - * @memberOf Schema - * @instance - */ - -Schema.prototype.tree; -/** - * Returns a deep copy of the schema - * - * #### Example: - * - * const schema = new Schema({ name: String }); - * const clone = schema.clone(); - * clone === schema; // false - * clone.path('name'); // SchemaString { ... } - * - * @return {Schema} the cloned schema - * @api public - * @memberOf Schema - * @instance - */ - -Schema.prototype.clone = function () { - var _this2 = this; - - var s = this._clone(); // Bubble up `init` for backwards compat - - - s.on('init', function (v) { - return _this2.emit('init', v); - }); - return s; -}; -/*! - * ignore - */ - - -Schema.prototype._clone = function _clone(Constructor) { - Constructor = Constructor || (this.base == null ? Schema : this.base.Schema); - var s = new Constructor({}, this._userProvidedOptions); - s.base = this.base; - s.obj = this.obj; - s.options = utils.clone(this.options); - s.callQueue = this.callQueue.map(function (f) { - return f; - }); - s.methods = utils.clone(this.methods); - s.methodOptions = utils.clone(this.methodOptions); - s.statics = utils.clone(this.statics); - s.query = utils.clone(this.query); - s.plugins = Array.prototype.slice.call(this.plugins); - s._indexes = utils.clone(this._indexes); - s.s.hooks = this.s.hooks.clone(); - s.tree = utils.clone(this.tree); - s.paths = utils.clone(this.paths); - s.nested = utils.clone(this.nested); - s.subpaths = utils.clone(this.subpaths); - s.singleNestedPaths = utils.clone(this.singleNestedPaths); - s.childSchemas = gatherChildSchemas(s); - s.virtuals = utils.clone(this.virtuals); - s.$globalPluginsApplied = this.$globalPluginsApplied; - s.$isRootDiscriminator = this.$isRootDiscriminator; - s.$implicitlyCreated = this.$implicitlyCreated; - s.$id = ++id; - s.$originalSchemaId = this.$id; - s.mapPaths = [].concat(this.mapPaths); - - if (this.discriminatorMapping != null) { - s.discriminatorMapping = Object.assign({}, this.discriminatorMapping); - } - - if (this.discriminators != null) { - s.discriminators = Object.assign({}, this.discriminators); - } - - if (this._applyDiscriminators != null) { - s._applyDiscriminators = Object.assign({}, this._applyDiscriminators); - } - - s.aliases = Object.assign({}, this.aliases); - return s; -}; -/** - * Returns a new schema that has the picked `paths` from this schema. - * - * This method is analagous to [Lodash's `pick()` function](https://lodash.com/docs/4.17.15#pick) for Mongoose schemas. - * - * #### Example: - * - * const schema = Schema({ name: String, age: Number }); - * // Creates a new schema with the same `name` path as `schema`, - * // but no `age` path. - * const newSchema = schema.pick(['name']); - * - * newSchema.path('name'); // SchemaString { ... } - * newSchema.path('age'); // undefined - * - * @param {Array} paths list of paths to pick - * @param {Object} [options] options to pass to the schema constructor. Defaults to `this.options` if not set. - * @return {Schema} - * @api public - */ - - -Schema.prototype.pick = function (paths, options) { - var newSchema = new Schema({}, options || this.options); - - if (!Array.isArray(paths)) { - throw new MongooseError('Schema#pick() only accepts an array argument, ' + 'got "' + _typeof(paths) + '"'); - } - - var _iterator3 = _createForOfIteratorHelper(paths), - _step3; - - try { - for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { - var path = _step3.value; - - if (this.nested[path]) { - newSchema.add(_defineProperty({}, path, get(this.tree, path))); - } else { - var schematype = this.path(path); - - if (schematype == null) { - throw new MongooseError('Path `' + path + '` is not in the schema'); - } - - newSchema.add(_defineProperty({}, path, schematype)); - } - } - } catch (err) { - _iterator3.e(err); - } finally { - _iterator3.f(); - } - - return newSchema; -}; -/** - * Returns default options for this schema, merged with `options`. - * - * @param {Object} options - * @return {Object} - * @api private - */ - - -Schema.prototype.defaultOptions = function (options) { - this._userProvidedOptions = options == null ? {} : utils.clone(options); - var baseOptions = this.base && this.base.options || {}; - var strict = 'strict' in baseOptions ? baseOptions.strict : true; - options = utils.options({ - strict: strict, - strictQuery: 'strict' in this._userProvidedOptions ? this._userProvidedOptions.strict : 'strictQuery' in baseOptions ? baseOptions.strictQuery : strict, - bufferCommands: true, - capped: false, - // { size, max, autoIndexId } - versionKey: '__v', - optimisticConcurrency: false, - minimize: true, - autoIndex: null, - discriminatorKey: '__t', - shardKey: null, - read: null, - validateBeforeSave: true, - // the following are only applied at construction time - _id: true, - id: true, - typeKey: 'type' - }, utils.clone(options)); - - if (options.read) { - options.read = readPref(options.read); - } - - if (options.versionKey && typeof options.versionKey !== 'string') { - throw new MongooseError('`versionKey` must be falsy or string, got `' + _typeof(options.versionKey) + '`'); - } - - if (options.optimisticConcurrency && !options.versionKey) { - throw new MongooseError('Must set `versionKey` if using `optimisticConcurrency`'); - } - - return options; -}; -/** - * Inherit a Schema by applying a discriminator on an existing Schema. - * - * - * ####Example: - * - * const options = { discriminatorKey: 'kind' }; - * - * const eventSchema = new mongoose.Schema({ time: Date }, options); - * const Event = mongoose.model('Event', eventSchema); - * - * // ClickedLinkEvent is a special type of Event that has - * // a URL. - * const ClickedLinkEvent = Event.discriminator('ClickedLink', - * new mongoose.Schema({ url: String }, options)); - * - * // When you create a generic event, it can't have a URL field... - * const genericEvent = new Event({ time: Date.now(), url: 'google.com' }); - * assert.ok(!genericEvent.url); - * // But a ClickedLinkEvent can - * const clickedEvent = new ClickedLinkEvent({ time: Date.now(), url: 'google.com' }); - * assert.ok(clickedEvent.url); - * - * @param {String} name the name of the discriminator - * @param {Schema} schema the Schema of the discriminated Schema - * @return {Schema} the Schema instance - * @api public - */ - - -Schema.prototype.discriminator = function (name, schema) { - this._applyDiscriminators = Object.assign(this._applyDiscriminators || {}, _defineProperty({}, name, schema)); - return this; -}; -/** - * Adds key path / schema type pairs to this schema. - * - * #### Example: - * - * const ToySchema = new Schema(); - * ToySchema.add({ name: 'string', color: 'string', price: 'number' }); - * - * const TurboManSchema = new Schema(); - * // You can also `add()` another schema and copy over all paths, virtuals, - * // getters, setters, indexes, methods, and statics. - * TurboManSchema.add(ToySchema).add({ year: Number }); - * - * @param {Object|Schema} obj plain object with paths to add, or another schema - * @param {String} [prefix] path to prefix the newly added paths with - * @return {Schema} the Schema instance - * @api public - */ - - -Schema.prototype.add = function add(obj, prefix) { - if (obj instanceof Schema || obj != null && obj.instanceOfSchema) { - merge(this, obj); - return this; - } // Special case: setting top-level `_id` to false should convert to disabling - // the `_id` option. This behavior never worked before 5.4.11 but numerous - // codebases use it (see gh-7516, gh-7512). - - - if (obj._id === false && prefix == null) { - this.options._id = false; - } - - prefix = prefix || ''; // avoid prototype pollution - - if (prefix === '__proto__.' || prefix === 'constructor.' || prefix === 'prototype.') { - return this; - } - - var keys = Object.keys(obj); - var typeKey = this.options.typeKey; - - for (var _i = 0, _keys = keys; _i < _keys.length; _i++) { - var key = _keys[_i]; - var fullPath = prefix + key; - var val = obj[key]; - - if (val == null) { - throw new TypeError('Invalid value for schema path `' + fullPath + '`, got value "' + val + '"'); - } // Retain `_id: false` but don't set it as a path, re: gh-8274. - - - if (key === '_id' && val === false) { - continue; - } - - if (val instanceof VirtualType || (val.constructor && val.constructor.name || null) === 'VirtualType') { - this.virtual(val); - continue; - } - - if (Array.isArray(val) && val.length === 1 && val[0] == null) { - throw new TypeError('Invalid value for schema Array path `' + fullPath + '`, got value "' + val[0] + '"'); - } - - if (!(isPOJO(val) || val instanceof SchemaTypeOptions)) { - // Special-case: Non-options definitely a path so leaf at this node - // Examples: Schema instances, SchemaType instances - if (prefix) { - this.nested[prefix.substring(0, prefix.length - 1)] = true; - } - - this.path(prefix + key, val); - - if (val[0] != null && !val[0].instanceOfSchema && utils.isPOJO(val[0].discriminators)) { - var schemaType = this.path(prefix + key); - - for (var _key in val[0].discriminators) { - schemaType.discriminator(_key, val[0].discriminators[_key]); - } - } else if (val[0] != null && val[0].instanceOfSchema && utils.isPOJO(val[0]._applyDiscriminators)) { - var applyDiscriminators = val[0]._applyDiscriminators || []; - - var _schemaType2 = this.path(prefix + key); - - for (var disc in applyDiscriminators) { - _schemaType2.discriminator(disc, applyDiscriminators[disc]); - } - } else if (val != null && val.instanceOfSchema && utils.isPOJO(val._applyDiscriminators)) { - var _applyDiscriminators = val._applyDiscriminators || []; - - var _schemaType3 = this.path(prefix + key); - - for (var _disc in _applyDiscriminators) { - _schemaType3.discriminator(_disc, _applyDiscriminators[_disc]); - } - } - } else if (Object.keys(val).length < 1) { - // Special-case: {} always interpreted as Mixed path so leaf at this node - if (prefix) { - this.nested[prefix.substring(0, prefix.length - 1)] = true; - } - - this.path(fullPath, val); // mixed type - } else if (!val[typeKey] || typeKey === 'type' && isPOJO(val.type) && val.type.type) { - // Special-case: POJO with no bona-fide type key - interpret as tree of deep paths so recurse - // nested object `{ last: { name: String } }`. Avoid functions with `.type` re: #10807 because - // NestJS sometimes adds `Date.type`. - this.nested[fullPath] = true; - this.add(val, fullPath + '.'); - } else { - // There IS a bona-fide type key that may also be a POJO - var _typeDef = val[typeKey]; - - if (isPOJO(_typeDef) && Object.keys(_typeDef).length > 0) { - // If a POJO is the value of a type key, make it a subdocument - if (prefix) { - this.nested[prefix.substring(0, prefix.length - 1)] = true; - } - - var _schema = new Schema(_typeDef); - - var schemaWrappedPath = Object.assign({}, val, { - type: _schema - }); - this.path(prefix + key, schemaWrappedPath); - } else { - // Either the type is non-POJO or we interpret it as Mixed anyway - if (prefix) { - this.nested[prefix.substring(0, prefix.length - 1)] = true; - } - - this.path(prefix + key, val); - - if (val != null && !val.instanceOfSchema && utils.isPOJO(val.discriminators)) { - var _schemaType4 = this.path(prefix + key); - - for (var _key2 in val.discriminators) { - _schemaType4.discriminator(_key2, val.discriminators[_key2]); - } - } - } - } - } - - var addedKeys = Object.keys(obj).map(function (key) { - return prefix ? prefix + key : key; - }); - aliasFields(this, addedKeys); - return this; -}; -/** - * Remove an index by name or index specification. - * - * removeIndex only removes indexes from your schema object. Does **not** affect the indexes - * in MongoDB. - * - * ####Example: - * - * const ToySchema = new Schema({ name: String, color: String, price: Number }); - * - * // Add a new index on { name, color } - * ToySchema.index({ name: 1, color: 1 }); - * - * // Remove index on { name, color } - * // Keep in mind that order matters! `removeIndex({ color: 1, name: 1 })` won't remove the index - * ToySchema.removeIndex({ name: 1, color: 1 }); - * - * // Add an index with a custom name - * ToySchema.index({ color: 1 }, { name: 'my custom index name' }); - * // Remove index by name - * ToySchema.removeIndex('my custom index name'); - * - * @param {Object|string} index name or index specification - * @return {Schema} the Schema instance - * @api public - */ - - -Schema.prototype.removeIndex = function removeIndex(index) { - if (arguments.length > 1) { - throw new Error('removeIndex() takes only 1 argument'); - } - - if (_typeof(index) !== 'object' && typeof index !== 'string') { - throw new Error('removeIndex() may only take either an object or a string as an argument'); - } - - if (_typeof(index) === 'object') { - for (var i = this._indexes.length - 1; i >= 0; --i) { - if (util.isDeepStrictEqual(this._indexes[i][0], index)) { - this._indexes.splice(i, 1); - } - } - } else { - for (var _i2 = this._indexes.length - 1; _i2 >= 0; --_i2) { - if (this._indexes[_i2][1] != null && this._indexes[_i2][1].name === index) { - this._indexes.splice(_i2, 1); - } - } - } - - return this; -}; -/** - * Remove all indexes from this schema. - * - * clearIndexes only removes indexes from your schema object. Does **not** affect the indexes - * in MongoDB. - * - * ####Example: - * - * const ToySchema = new Schema({ name: String, color: String, price: Number }); - * ToySchema.index({ name: 1 }); - * ToySchema.index({ color: 1 }); - * - * // Remove all indexes on this schema - * ToySchema.clearIndexes(); - * - * ToySchema.indexes(); // [] - * - * @return {Schema} the Schema instance - * @api public - */ - - -Schema.prototype.clearIndexes = function clearIndexes() { - this._indexes.length = 0; - return this; -}; -/** - * Reserved document keys. - * - * Keys in this object are names that are warned in schema declarations - * because they have the potential to break Mongoose/ Mongoose plugins functionality. If you create a schema - * using `new Schema()` with one of these property names, Mongoose will log a warning. - * - * - _posts - * - _pres - * - collection - * - emit - * - errors - * - get - * - init - * - isModified - * - isNew - * - listeners - * - modelName - * - on - * - once - * - populated - * - prototype - * - remove - * - removeListener - * - save - * - schema - * - toObject - * - validate - * - * _NOTE:_ Use of these terms as method names is permitted, but play at your own risk, as they may be existing mongoose document methods you are stomping on. - * - * const schema = new Schema(..); - * schema.methods.init = function () {} // potentially breaking - */ - - -Schema.reserved = Object.create(null); -Schema.prototype.reserved = Schema.reserved; -var reserved = Schema.reserved; // Core object - -reserved['prototype'] = // EventEmitter -reserved.emit = reserved.listeners = reserved.removeListener = // document properties and functions -reserved.collection = reserved.errors = reserved.get = reserved.init = reserved.isModified = reserved.isNew = reserved.populated = reserved.remove = reserved.save = reserved.toObject = reserved.validate = 1; -reserved.collection = 1; -/** - * Gets/sets schema paths. - * - * Sets a path (if arity 2) - * Gets a path (if arity 1) - * - * #### Example - * - * schema.path('name') // returns a SchemaType - * schema.path('name', Number) // changes the schemaType of `name` to Number - * - * @param {String} path - * @param {Object} constructor - * @api public - */ - -Schema.prototype.path = function (path, obj) { - // Convert to '.$' to check subpaths re: gh-6405 - var cleanPath = _pathToPositionalSyntax(path); - - if (obj === undefined) { - var schematype = _getPath(this, path, cleanPath); - - if (schematype != null) { - return schematype; - } // Look for maps - - - var mapPath = getMapPath(this, path); - - if (mapPath != null) { - return mapPath; - } // Look if a parent of this path is mixed - - - schematype = this.hasMixedParent(cleanPath); - - if (schematype != null) { - return schematype; - } // subpaths? - - - return /\.\d+\.?.*$/.test(path) ? getPositionalPath(this, path) : undefined; - } // some path names conflict with document methods - - - var firstPieceOfPath = path.split('.')[0]; - - if (reserved[firstPieceOfPath] && !this.options.supressReservedKeysWarning) { - var errorMessage = "`".concat(firstPieceOfPath, "` is a reserved schema pathname and may break some functionality. ") + 'You are allowed to use it, but use at your own risk. ' + 'To disable this warning pass `supressReservedKeysWarning` as a schema option.'; - utils.warn(errorMessage); - } - - if (_typeof(obj) === 'object' && utils.hasUserDefinedProperty(obj, 'ref')) { - validateRef(obj.ref, path); - } // update the tree - - - var subpaths = path.split(/\./); - var last = subpaths.pop(); - var branch = this.tree; - var fullPath = ''; - - var _iterator4 = _createForOfIteratorHelper(subpaths), - _step4; - - try { - for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { - var sub = _step4.value; - fullPath = fullPath += (fullPath.length > 0 ? '.' : '') + sub; - - if (!branch[sub]) { - this.nested[fullPath] = true; - branch[sub] = {}; - } - - if (_typeof(branch[sub]) !== 'object') { - var msg = 'Cannot set nested path `' + path + '`. ' + 'Parent path `' + fullPath + '` already set to type ' + branch[sub].name + '.'; - throw new Error(msg); - } - - branch = branch[sub]; - } - } catch (err) { - _iterator4.e(err); - } finally { - _iterator4.f(); - } - - branch[last] = utils.clone(obj); - this.paths[path] = this.interpretAsType(path, obj, this.options); - var schemaType = this.paths[path]; - - if (schemaType.$isSchemaMap) { - // Maps can have arbitrary keys, so `$*` is internal shorthand for "any key" - // The '$' is to imply this path should never be stored in MongoDB so we - // can easily build a regexp out of this path, and '*' to imply "any key." - var _mapPath = path + '.$*'; - - this.paths[_mapPath] = schemaType.$__schemaType; - this.mapPaths.push(this.paths[_mapPath]); - } - - if (schemaType.$isSingleNested) { - for (var _i3 = 0, _Object$keys = Object.keys(schemaType.schema.paths); _i3 < _Object$keys.length; _i3++) { - var key = _Object$keys[_i3]; - this.singleNestedPaths[path + '.' + key] = schemaType.schema.paths[key]; - } - - for (var _i4 = 0, _Object$keys2 = Object.keys(schemaType.schema.singleNestedPaths); _i4 < _Object$keys2.length; _i4++) { - var _key3 = _Object$keys2[_i4]; - this.singleNestedPaths[path + '.' + _key3] = schemaType.schema.singleNestedPaths[_key3]; - } - - for (var _i5 = 0, _Object$keys3 = Object.keys(schemaType.schema.subpaths); _i5 < _Object$keys3.length; _i5++) { - var _key4 = _Object$keys3[_i5]; - this.singleNestedPaths[path + '.' + _key4] = schemaType.schema.subpaths[_key4]; - } - - for (var _i6 = 0, _Object$keys4 = Object.keys(schemaType.schema.nested); _i6 < _Object$keys4.length; _i6++) { - var _key5 = _Object$keys4[_i6]; - this.singleNestedPaths[path + '.' + _key5] = 'nested'; - } - - Object.defineProperty(schemaType.schema, 'base', { - configurable: true, - enumerable: false, - writable: false, - value: this.base - }); - schemaType.caster.base = this.base; - this.childSchemas.push({ - schema: schemaType.schema, - model: schemaType.caster - }); - } else if (schemaType.$isMongooseDocumentArray) { - Object.defineProperty(schemaType.schema, 'base', { - configurable: true, - enumerable: false, - writable: false, - value: this.base - }); - schemaType.casterConstructor.base = this.base; - this.childSchemas.push({ - schema: schemaType.schema, - model: schemaType.casterConstructor - }); - } - - if (schemaType.$isMongooseArray && schemaType.caster instanceof SchemaType) { - var arrayPath = path; - var _schemaType = schemaType; - var toAdd = []; - - while (_schemaType.$isMongooseArray) { - arrayPath = arrayPath + '.$'; // Skip arrays of document arrays - - if (_schemaType.$isMongooseDocumentArray) { - _schemaType.$embeddedSchemaType._arrayPath = arrayPath; - _schemaType.$embeddedSchemaType._arrayParentPath = path; - _schemaType = _schemaType.$embeddedSchemaType.clone(); - } else { - _schemaType.caster._arrayPath = arrayPath; - _schemaType.caster._arrayParentPath = path; - _schemaType = _schemaType.caster.clone(); - } - - _schemaType.path = arrayPath; - toAdd.push(_schemaType); - } - - for (var _i7 = 0, _toAdd = toAdd; _i7 < _toAdd.length; _i7++) { - var _schemaType5 = _toAdd[_i7]; - this.subpaths[_schemaType5.path] = _schemaType5; - } - } - - if (schemaType.$isMongooseDocumentArray) { - for (var _i8 = 0, _Object$keys5 = Object.keys(schemaType.schema.paths); _i8 < _Object$keys5.length; _i8++) { - var _key6 = _Object$keys5[_i8]; - var _schemaType6 = schemaType.schema.paths[_key6]; - this.subpaths[path + '.' + _key6] = _schemaType6; - - if (_typeof(_schemaType6) === 'object' && _schemaType6 != null) { - _schemaType6.$isUnderneathDocArray = true; - } - } - - for (var _i9 = 0, _Object$keys6 = Object.keys(schemaType.schema.subpaths); _i9 < _Object$keys6.length; _i9++) { - var _key7 = _Object$keys6[_i9]; - var _schemaType7 = schemaType.schema.subpaths[_key7]; - this.subpaths[path + '.' + _key7] = _schemaType7; - - if (_typeof(_schemaType7) === 'object' && _schemaType7 != null) { - _schemaType7.$isUnderneathDocArray = true; - } - } - - for (var _i10 = 0, _Object$keys7 = Object.keys(schemaType.schema.singleNestedPaths); _i10 < _Object$keys7.length; _i10++) { - var _key8 = _Object$keys7[_i10]; - var _schemaType8 = schemaType.schema.singleNestedPaths[_key8]; - this.subpaths[path + '.' + _key8] = _schemaType8; - - if (_typeof(_schemaType8) === 'object' && _schemaType8 != null) { - _schemaType8.$isUnderneathDocArray = true; - } - } - } - - return this; -}; -/*! - * ignore - */ - - -function gatherChildSchemas(schema) { - var childSchemas = []; - - for (var _i11 = 0, _Object$keys8 = Object.keys(schema.paths); _i11 < _Object$keys8.length; _i11++) { - var path = _Object$keys8[_i11]; - var schematype = schema.paths[path]; - - if (schematype.$isMongooseDocumentArray || schematype.$isSingleNested) { - childSchemas.push({ - schema: schematype.schema, - model: schematype.caster - }); - } - } - - return childSchemas; -} -/*! - * ignore - */ - - -function _getPath(schema, path, cleanPath) { - if (schema.paths.hasOwnProperty(path)) { - return schema.paths[path]; - } - - if (schema.subpaths.hasOwnProperty(cleanPath)) { - return schema.subpaths[cleanPath]; - } - - if (schema.singleNestedPaths.hasOwnProperty(cleanPath) && _typeof(schema.singleNestedPaths[cleanPath]) === 'object') { - return schema.singleNestedPaths[cleanPath]; - } - - return null; -} -/*! - * ignore - */ - - -function _pathToPositionalSyntax(path) { - if (!/\.\d+/.test(path)) { - return path; - } - - return path.replace(/\.\d+\./g, '.$.').replace(/\.\d+$/, '.$'); -} -/*! - * ignore - */ - - -function getMapPath(schema, path) { - if (schema.mapPaths.length === 0) { - return null; - } - - var _iterator5 = _createForOfIteratorHelper(schema.mapPaths), - _step5; - - try { - for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { - var val = _step5.value; - var _path = val.path; - var re = new RegExp('^' + _path.replace(/\.\$\*/g, '\\.[^.]+') + '$'); - - if (re.test(path)) { - return schema.paths[_path]; - } - } - } catch (err) { - _iterator5.e(err); - } finally { - _iterator5.f(); - } - - return null; -} -/** - * The Mongoose instance this schema is associated with - * - * @property base - * @api private - */ - - -Object.defineProperty(Schema.prototype, 'base', { - configurable: true, - enumerable: false, - writable: true, - value: null -}); -/** - * Converts type arguments into Mongoose Types. - * - * @param {String} path - * @param {Object} obj constructor - * @api private - */ - -Schema.prototype.interpretAsType = function (path, obj, options) { - if (obj instanceof SchemaType) { - if (obj.path === path) { - return obj; - } - - var clone = obj.clone(); - clone.path = path; - return clone; - } // If this schema has an associated Mongoose object, use the Mongoose object's - // copy of SchemaTypes re: gh-7158 gh-6933 - - - var MongooseTypes = this.base != null ? this.base.Schema.Types : Schema.Types; - - if (!utils.isPOJO(obj) && !(obj instanceof SchemaTypeOptions)) { - var constructorName = utils.getFunctionName(obj.constructor); - - if (constructorName !== 'Object') { - var oldObj = obj; - obj = {}; - obj[options.typeKey] = oldObj; - } - } // Get the type making sure to allow keys named "type" - // and default to mixed if not specified. - // { type: { type: String, default: 'freshcut' } } - - - var type = obj[options.typeKey] && (obj[options.typeKey] instanceof Function || options.typeKey !== 'type' || !obj.type.type) ? obj[options.typeKey] : {}; - var name; - - if (utils.isPOJO(type) || type === 'mixed') { - return new MongooseTypes.Mixed(path, obj); - } - - if (Array.isArray(type) || type === Array || type === 'array' || type === MongooseTypes.Array) { - // if it was specified through { type } look for `cast` - var cast = type === Array || type === 'array' ? obj.cast || obj.of : type[0]; // new Schema({ path: [new Schema({ ... })] }) - - if (cast && cast.instanceOfSchema) { - if (!(cast instanceof Schema)) { - throw new TypeError('Schema for array path `' + path + '` is from a different copy of the Mongoose module. ' + 'Please make sure you\'re using the same version ' + 'of Mongoose everywhere with `npm list mongoose`. If you are still ' + 'getting this error, please add `new Schema()` around the path: ' + "".concat(path, ": new Schema(...)")); - } - - return new MongooseTypes.DocumentArray(path, cast, obj); - } - - if (cast && cast[options.typeKey] && cast[options.typeKey].instanceOfSchema) { - if (!(cast[options.typeKey] instanceof Schema)) { - throw new TypeError('Schema for array path `' + path + '` is from a different copy of the Mongoose module. ' + 'Please make sure you\'re using the same version ' + 'of Mongoose everywhere with `npm list mongoose`. If you are still ' + 'getting this error, please add `new Schema()` around the path: ' + "".concat(path, ": new Schema(...)")); - } - - return new MongooseTypes.DocumentArray(path, cast[options.typeKey], obj, cast); - } - - if (Array.isArray(cast)) { - return new MongooseTypes.Array(path, this.interpretAsType(path, cast, options), obj); - } // Handle both `new Schema({ arr: [{ subpath: String }] })` and `new Schema({ arr: [{ type: { subpath: string } }] })` - - - var castFromTypeKey = cast != null && cast[options.typeKey] && (options.typeKey !== 'type' || !cast.type.type) ? cast[options.typeKey] : cast; - - if (typeof cast === 'string') { - cast = MongooseTypes[cast.charAt(0).toUpperCase() + cast.substring(1)]; - } else if (utils.isPOJO(castFromTypeKey)) { - if (Object.keys(castFromTypeKey).length) { - // The `minimize` and `typeKey` options propagate to child schemas - // declared inline, like `{ arr: [{ val: { $type: String } }] }`. - // See gh-3560 - var childSchemaOptions = { - minimize: options.minimize - }; - - if (options.typeKey) { - childSchemaOptions.typeKey = options.typeKey; - } // propagate 'strict' option to child schema - - - if (options.hasOwnProperty('strict')) { - childSchemaOptions.strict = options.strict; - } - - if (this._userProvidedOptions.hasOwnProperty('_id')) { - childSchemaOptions._id = this._userProvidedOptions._id; - } else if (Schema.Types.DocumentArray.defaultOptions._id != null) { - childSchemaOptions._id = Schema.Types.DocumentArray.defaultOptions._id; - } - - var childSchema = new Schema(castFromTypeKey, childSchemaOptions); - childSchema.$implicitlyCreated = true; - return new MongooseTypes.DocumentArray(path, childSchema, obj); - } else { - // Special case: empty object becomes mixed - return new MongooseTypes.Array(path, MongooseTypes.Mixed, obj); - } - } - - if (cast) { - type = cast[options.typeKey] && (options.typeKey !== 'type' || !cast.type.type) ? cast[options.typeKey] : cast; - - if (Array.isArray(type)) { - return new MongooseTypes.Array(path, this.interpretAsType(path, type, options), obj); - } - - name = typeof type === 'string' ? type : type.schemaName || utils.getFunctionName(type); // For Jest 26+, see #10296 - - if (name === 'ClockDate') { - name = 'Date'; - } - - if (name === void 0) { - throw new TypeError('Invalid schema configuration: ' + "Could not determine the embedded type for array `".concat(path, "`. ") + 'See https://mongoosejs.com/docs/guide.html#definition for more info on supported schema syntaxes.'); - } - - if (!MongooseTypes.hasOwnProperty(name)) { - throw new TypeError('Invalid schema configuration: ' + "`".concat(name, "` is not a valid type within the array `").concat(path, "`.") + 'See https://bit.ly/mongoose-schematypes for a list of valid schema types.'); - } - } - - return new MongooseTypes.Array(path, cast || MongooseTypes.Mixed, obj, options); - } - - if (type && type.instanceOfSchema) { - return new MongooseTypes.Subdocument(type, path, obj); - } - - if (Buffer.isBuffer(type)) { - name = 'Buffer'; - } else if (typeof type === 'function' || _typeof(type) === 'object') { - name = type.schemaName || utils.getFunctionName(type); - } else { - name = type == null ? '' + type : type.toString(); - } - - if (name) { - name = name.charAt(0).toUpperCase() + name.substring(1); - } // Special case re: gh-7049 because the bson `ObjectID` class' capitalization - // doesn't line up with Mongoose's. - - - if (name === 'ObjectID') { - name = 'ObjectId'; - } // For Jest 26+, see #10296 - - - if (name === 'ClockDate') { - name = 'Date'; - } - - if (name === void 0) { - throw new TypeError("Invalid schema configuration: `".concat(path, "` schematype definition is ") + 'invalid. See ' + 'https://mongoosejs.com/docs/guide.html#definition for more info on supported schema syntaxes.'); - } - - if (MongooseTypes[name] == null) { - throw new TypeError("Invalid schema configuration: `".concat(name, "` is not ") + "a valid type at path `".concat(path, "`. See ") + 'https://bit.ly/mongoose-schematypes for a list of valid schema types.'); - } - - var schemaType = new MongooseTypes[name](path, obj); - - if (schemaType.$isSchemaMap) { - createMapNestedSchemaType(this, schemaType, path, obj, options); - } - - return schemaType; -}; -/*! - * ignore - */ - - -function createMapNestedSchemaType(schema, schemaType, path, obj, options) { - var mapPath = path + '.$*'; - var _mapType = { - type: {} - }; - - if (utils.hasUserDefinedProperty(obj, 'of')) { - var isInlineSchema = utils.isPOJO(obj.of) && Object.keys(obj.of).length > 0 && !utils.hasUserDefinedProperty(obj.of, schema.options.typeKey); - - if (isInlineSchema) { - _mapType = _defineProperty({}, schema.options.typeKey, new Schema(obj.of)); - } else if (utils.isPOJO(obj.of)) { - _mapType = Object.assign({}, obj.of); - } else { - _mapType = _defineProperty({}, schema.options.typeKey, obj.of); - } - - if (_mapType[schema.options.typeKey] && _mapType[schema.options.typeKey].instanceOfSchema) { - var subdocumentSchema = _mapType[schema.options.typeKey]; - subdocumentSchema.eachPath(function (subpath, type) { - if (type.options.select === true || type.options.select === false) { - throw new MongooseError('Cannot use schema-level projections (`select: true` or `select: false`) within maps at path "' + path + '.' + subpath + '"'); - } - }); - } - - if (utils.hasUserDefinedProperty(obj, 'ref')) { - _mapType.ref = obj.ref; - } - } - - schemaType.$__schemaType = schema.interpretAsType(mapPath, _mapType, options); -} -/** - * Iterates the schemas paths similar to Array#forEach. - * - * The callback is passed the pathname and the schemaType instance. - * - * #### Example: - * - * const userSchema = new Schema({ name: String, registeredAt: Date }); - * userSchema.eachPath((pathname, schematype) => { - * // Prints twice: - * // name SchemaString { ... } - * // registeredAt SchemaDate { ... } - * console.log(pathname, schematype); - * }); - * - * @param {Function} fn callback function - * @return {Schema} this - * @api public - */ - - -Schema.prototype.eachPath = function (fn) { - var keys = Object.keys(this.paths); - var len = keys.length; - - for (var i = 0; i < len; ++i) { - fn(keys[i], this.paths[keys[i]]); - } - - return this; -}; -/** - * Returns an Array of path strings that are required by this schema. - * - * #### Example: - * const s = new Schema({ - * name: { type: String, required: true }, - * age: { type: String, required: true }, - * notes: String - * }); - * s.requiredPaths(); // [ 'age', 'name' ] - * - * @api public - * @param {Boolean} invalidate refresh the cache - * @return {Array} - */ - - -Schema.prototype.requiredPaths = function requiredPaths(invalidate) { - if (this._requiredpaths && !invalidate) { - return this._requiredpaths; - } - - var paths = Object.keys(this.paths); - var i = paths.length; - var ret = []; - - while (i--) { - var path = paths[i]; - - if (this.paths[path].isRequired) { - ret.push(path); - } - } - - this._requiredpaths = ret; - return this._requiredpaths; -}; -/** - * Returns indexes from fields and schema-level indexes (cached). - * - * @api private - * @return {Array} - */ - - -Schema.prototype.indexedPaths = function indexedPaths() { - if (this._indexedpaths) { - return this._indexedpaths; - } - - this._indexedpaths = this.indexes(); - return this._indexedpaths; -}; -/** - * Returns the pathType of `path` for this schema. - * - * Given a path, returns whether it is a real, virtual, nested, or ad-hoc/undefined path. - * - * #### Example: - * const s = new Schema({ name: String, nested: { foo: String } }); - * s.virtual('foo').get(() => 42); - * s.pathType('name'); // "real" - * s.pathType('nested'); // "nested" - * s.pathType('foo'); // "virtual" - * s.pathType('fail'); // "adhocOrUndefined" - * - * @param {String} path - * @return {String} - * @api public - */ - - -Schema.prototype.pathType = function (path) { - // Convert to '.$' to check subpaths re: gh-6405 - var cleanPath = _pathToPositionalSyntax(path); - - if (this.paths.hasOwnProperty(path)) { - return 'real'; - } - - if (this.virtuals.hasOwnProperty(path)) { - return 'virtual'; - } - - if (this.nested.hasOwnProperty(path)) { - return 'nested'; - } - - if (this.subpaths.hasOwnProperty(cleanPath) || this.subpaths.hasOwnProperty(path)) { - return 'real'; - } - - var singleNestedPath = this.singleNestedPaths.hasOwnProperty(cleanPath) || this.singleNestedPaths.hasOwnProperty(path); - - if (singleNestedPath) { - return singleNestedPath === 'nested' ? 'nested' : 'real'; - } // Look for maps - - - var mapPath = getMapPath(this, path); - - if (mapPath != null) { - return 'real'; - } - - if (/\.\d+\.|\.\d+$/.test(path)) { - return getPositionalPathType(this, path); - } - - return 'adhocOrUndefined'; -}; -/** - * Returns true iff this path is a child of a mixed schema. - * - * @param {String} path - * @return {Boolean} - * @api private - */ - - -Schema.prototype.hasMixedParent = function (path) { - var subpaths = path.split(/\./g); - path = ''; - - for (var i = 0; i < subpaths.length; ++i) { - path = i > 0 ? path + '.' + subpaths[i] : subpaths[i]; - - if (this.paths.hasOwnProperty(path) && this.paths[path] instanceof MongooseTypes.Mixed) { - return this.paths[path]; - } - } - - return null; -}; -/** - * Setup updatedAt and createdAt timestamps to documents if enabled - * - * @param {Boolean|Object} timestamps timestamps options - * @api private - */ - - -Schema.prototype.setupTimestamp = function (timestamps) { - return setupTimestamps(this, timestamps); -}; -/*! - * ignore. Deprecated re: #6405 - */ - - -function getPositionalPathType(self, path) { - var subpaths = path.split(/\.(\d+)\.|\.(\d+)$/).filter(Boolean); - - if (subpaths.length < 2) { - return self.paths.hasOwnProperty(subpaths[0]) ? self.paths[subpaths[0]] : 'adhocOrUndefined'; - } - - var val = self.path(subpaths[0]); - var isNested = false; - - if (!val) { - return 'adhocOrUndefined'; - } - - var last = subpaths.length - 1; - - for (var i = 1; i < subpaths.length; ++i) { - isNested = false; - var subpath = subpaths[i]; - - if (i === last && val && !/\D/.test(subpath)) { - if (val.$isMongooseDocumentArray) { - val = val.$embeddedSchemaType; - } else if (val instanceof MongooseTypes.Array) { - // StringSchema, NumberSchema, etc - val = val.caster; - } else { - val = undefined; - } - - break; - } // ignore if its just a position segment: path.0.subpath - - - if (!/\D/.test(subpath)) { - // Nested array - if (val instanceof MongooseTypes.Array && i !== last) { - val = val.caster; - } - - continue; - } - - if (!(val && val.schema)) { - val = undefined; - break; - } - - var type = val.schema.pathType(subpath); - isNested = type === 'nested'; - val = val.schema.path(subpath); - } - - self.subpaths[path] = val; - - if (val) { - return 'real'; - } - - if (isNested) { - return 'nested'; - } - - return 'adhocOrUndefined'; -} -/*! - * ignore - */ - - -function getPositionalPath(self, path) { - getPositionalPathType(self, path); - return self.subpaths[path]; -} -/** - * Adds a method call to the queue. - * - * #### Example: - * - * schema.methods.print = function() { console.log(this); }; - * schema.queue('print', []); // Print the doc every one is instantiated - * - * const Model = mongoose.model('Test', schema); - * new Model({ name: 'test' }); // Prints '{"_id": ..., "name": "test" }' - * - * @param {String} name name of the document method to call later - * @param {Array} args arguments to pass to the method - * @api public - */ - - -Schema.prototype.queue = function (name, args) { - this.callQueue.push([name, args]); - return this; -}; -/** - * Defines a pre hook for the model. - * - * #### Example - * - * const toySchema = new Schema({ name: String, created: Date }); - * - * toySchema.pre('save', function(next) { - * if (!this.created) this.created = new Date; - * next(); - * }); - * - * toySchema.pre('validate', function(next) { - * if (this.name !== 'Woody') this.name = 'Woody'; - * next(); - * }); - * - * // Equivalent to calling `pre()` on `find`, `findOne`, `findOneAndUpdate`. - * toySchema.pre(/^find/, function(next) { - * console.log(this.getFilter()); - * }); - * - * // Equivalent to calling `pre()` on `updateOne`, `findOneAndUpdate`. - * toySchema.pre(['updateOne', 'findOneAndUpdate'], function(next) { - * console.log(this.getFilter()); - * }); - * - * toySchema.pre('deleteOne', function() { - * // Runs when you call `Toy.deleteOne()` - * }); - * - * toySchema.pre('deleteOne', { document: true }, function() { - * // Runs when you call `doc.deleteOne()` - * }); - * - * @param {String|RegExp} The method name or regular expression to match method name - * @param {Object} [options] - * @param {Boolean} [options.document] If `name` is a hook for both document and query middleware, set to `true` to run on document middleware. For example, set `options.document` to `true` to apply this hook to `Document#deleteOne()` rather than `Query#deleteOne()`. - * @param {Boolean} [options.query] If `name` is a hook for both document and query middleware, set to `true` to run on query middleware. - * @param {Function} callback - * @api public - */ - - -Schema.prototype.pre = function (name) { - if (name instanceof RegExp) { - var remainingArgs = Array.prototype.slice.call(arguments, 1); - - var _iterator6 = _createForOfIteratorHelper(hookNames), - _step6; - - try { - for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { - var fn = _step6.value; - - if (name.test(fn)) { - this.pre.apply(this, [fn].concat(remainingArgs)); - } - } - } catch (err) { - _iterator6.e(err); - } finally { - _iterator6.f(); - } - - return this; - } - - if (Array.isArray(name)) { - var _remainingArgs = Array.prototype.slice.call(arguments, 1); - - var _iterator7 = _createForOfIteratorHelper(name), - _step7; - - try { - for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) { - var el = _step7.value; - this.pre.apply(this, [el].concat(_remainingArgs)); - } - } catch (err) { - _iterator7.e(err); - } finally { - _iterator7.f(); - } - - return this; - } - - this.s.hooks.pre.apply(this.s.hooks, arguments); - return this; -}; -/** - * Defines a post hook for the document - * - * const schema = new Schema(..); - * schema.post('save', function (doc) { - * console.log('this fired after a document was saved'); - * }); - * - * schema.post('find', function(docs) { - * console.log('this fired after you ran a find query'); - * }); - * - * schema.post(/Many$/, function(res) { - * console.log('this fired after you ran `updateMany()` or `deleteMany()`'); - * }); - * - * const Model = mongoose.model('Model', schema); - * - * const m = new Model(..); - * m.save(function(err) { - * console.log('this fires after the `post` hook'); - * }); - * - * m.find(function(err, docs) { - * console.log('this fires after the post find hook'); - * }); - * - * @param {String|RegExp} The method name or regular expression to match method name - * @param {Object} [options] - * @param {Boolean} [options.document] If `name` is a hook for both document and query middleware, set to `true` to run on document middleware. - * @param {Boolean} [options.query] If `name` is a hook for both document and query middleware, set to `true` to run on query middleware. - * @param {Function} fn callback - * @see middleware https://mongoosejs.com/docs/middleware.html - * @see kareem https://npmjs.org/package/kareem - * @api public - */ - - -Schema.prototype.post = function (name) { - if (name instanceof RegExp) { - var remainingArgs = Array.prototype.slice.call(arguments, 1); - - var _iterator8 = _createForOfIteratorHelper(hookNames), - _step8; - - try { - for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) { - var fn = _step8.value; - - if (name.test(fn)) { - this.post.apply(this, [fn].concat(remainingArgs)); - } - } - } catch (err) { - _iterator8.e(err); - } finally { - _iterator8.f(); - } - - return this; - } - - if (Array.isArray(name)) { - var _remainingArgs2 = Array.prototype.slice.call(arguments, 1); - - var _iterator9 = _createForOfIteratorHelper(name), - _step9; - - try { - for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) { - var el = _step9.value; - this.post.apply(this, [el].concat(_remainingArgs2)); - } - } catch (err) { - _iterator9.e(err); - } finally { - _iterator9.f(); - } - - return this; - } - - this.s.hooks.post.apply(this.s.hooks, arguments); - return this; -}; -/** - * Registers a plugin for this schema. - * - * #### Example: - * - * const s = new Schema({ name: String }); - * s.plugin(schema => console.log(schema.path('name').path)); - * mongoose.model('Test', s); // Prints 'name' - * - * @param {Function} plugin callback - * @param {Object} [opts] - * @see plugins - * @api public - */ - - -Schema.prototype.plugin = function (fn, opts) { - if (typeof fn !== 'function') { - throw new Error('First param to `schema.plugin()` must be a function, ' + 'got "' + _typeof(fn) + '"'); - } - - if (opts && opts.deduplicate) { - var _iterator10 = _createForOfIteratorHelper(this.plugins), - _step10; - - try { - for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) { - var plugin = _step10.value; - - if (plugin.fn === fn) { - return this; - } - } - } catch (err) { - _iterator10.e(err); - } finally { - _iterator10.f(); - } - } - - this.plugins.push({ - fn: fn, - opts: opts - }); - fn(this, opts); - return this; -}; -/** - * Adds an instance method to documents constructed from Models compiled from this schema. - * - * #### Example - * - * const schema = kittySchema = new Schema(..); - * - * schema.method('meow', function () { - * console.log('meeeeeoooooooooooow'); - * }) - * - * const Kitty = mongoose.model('Kitty', schema); - * - * const fizz = new Kitty; - * fizz.meow(); // meeeeeooooooooooooow - * - * If a hash of name/fn pairs is passed as the only argument, each name/fn pair will be added as methods. - * - * schema.method({ - * purr: function () {} - * , scratch: function () {} - * }); - * - * // later - * fizz.purr(); - * fizz.scratch(); - * - * NOTE: `Schema.method()` adds instance methods to the `Schema.methods` object. You can also add instance methods directly to the `Schema.methods` object as seen in the [guide](/docs/guide.html#methods) - * - * @param {String|Object} method name - * @param {Function} [fn] - * @api public - */ - - -Schema.prototype.method = function (name, fn, options) { - if (typeof name !== 'string') { - for (var i in name) { - this.methods[i] = name[i]; - this.methodOptions[i] = utils.clone(options); - } - } else { - this.methods[name] = fn; - this.methodOptions[name] = utils.clone(options); - } - - return this; -}; -/** - * Adds static "class" methods to Models compiled from this schema. - * - * #### Example - * - * const schema = new Schema(..); - * // Equivalent to `schema.statics.findByName = function(name) {}`; - * schema.static('findByName', function(name) { - * return this.find({ name: name }); - * }); - * - * const Drink = mongoose.model('Drink', schema); - * await Drink.findByName('LaCroix'); - * - * If a hash of name/fn pairs is passed as the only argument, each name/fn pair will be added as statics. - * - * @param {String|Object} name - * @param {Function} [fn] - * @api public - * @see Statics /docs/guide.html#statics - */ - - -Schema.prototype["static"] = function (name, fn) { - if (typeof name !== 'string') { - for (var i in name) { - this.statics[i] = name[i]; - } - } else { - this.statics[name] = fn; - } - - return this; -}; -/** - * Defines an index (most likely compound) for this schema. - * - * #### Example - * - * schema.index({ first: 1, last: -1 }) - * - * @param {Object} fields - * @param {Object} [options] Options to pass to [MongoDB driver's `createIndex()` function](https://mongodb.github.io/node-mongodb-native/2.0/api/Collection.html#createIndex) - * @param {String | number} [options.expires=null] Mongoose-specific syntactic sugar, uses [ms](https://www.npmjs.com/package/ms) to convert `expires` option into seconds for the `expireAfterSeconds` in the above link. - * @api public - */ - - -Schema.prototype.index = function (fields, options) { - fields || (fields = {}); - options || (options = {}); - - if (options.expires) { - utils.expires(options); - } - - this._indexes.push([fields, options]); - - return this; -}; -/** - * Sets a schema option. - * - * #### Example - * - * schema.set('strict'); // 'true' by default - * schema.set('strict', false); // Sets 'strict' to false - * schema.set('strict'); // 'false' - * - * @param {String} key option name - * @param {Object} [value] if not passed, the current option value is returned - * @see Schema ./ - * @api public - */ - - -Schema.prototype.set = function (key, value, _tags) { - if (arguments.length === 1) { - return this.options[key]; - } - - switch (key) { - case 'read': - this.options[key] = readPref(value, _tags); - this._userProvidedOptions[key] = this.options[key]; - break; - - case 'timestamps': - this.setupTimestamp(value); - this.options[key] = value; - this._userProvidedOptions[key] = this.options[key]; - break; - - case '_id': - this.options[key] = value; - this._userProvidedOptions[key] = this.options[key]; - - if (value && !this.paths['_id']) { - addAutoId(this); - } else if (!value && this.paths['_id'] != null && this.paths['_id'].auto) { - this.remove('_id'); - } - - break; - - default: - this.options[key] = value; - this._userProvidedOptions[key] = this.options[key]; - break; - } - - return this; -}; -/** - * Gets a schema option. - * - * #### Example: - * - * schema.get('strict'); // true - * schema.set('strict', false); - * schema.get('strict'); // false - * - * @param {String} key option name - * @api public - * @return {Any} the option's value - */ - - -Schema.prototype.get = function (key) { - return this.options[key]; -}; -/** - * The allowed index types - * - * @receiver Schema - * @static indexTypes - * @api public - */ - - -var indexTypes = '2d 2dsphere hashed text'.split(' '); -Object.defineProperty(Schema, 'indexTypes', { - get: function get() { - return indexTypes; - }, - set: function set() { - throw new Error('Cannot overwrite Schema.indexTypes'); - } -}); -/** - * Returns a list of indexes that this schema declares, via `schema.index()` or by `index: true` in a path's options. - * Indexes are expressed as an array `[spec, options]`. - * - * #### Example: - * - * const userSchema = new Schema({ - * email: { type: String, required: true, unique: true }, - * registeredAt: { type: Date, index: true } - * }); - * - * // [ [ { email: 1 }, { unique: true, background: true } ], - * // [ { registeredAt: 1 }, { background: true } ] ] - * userSchema.indexes(); - * - * [Plugins](/docs/plugins.html) can use the return value of this function to modify a schema's indexes. - * For example, the below plugin makes every index unique by default. - * - * function myPlugin(schema) { - * for (const index of schema.indexes()) { - * if (index[1].unique === undefined) { - * index[1].unique = true; - * } - * } - * } - * - * @api public - * @return {Array} list of indexes defined in the schema - */ - -Schema.prototype.indexes = function () { - return getIndexes(this); -}; -/** - * Creates a virtual type with the given name. - * - * @param {String} name - * @param {Object} [options] - * @param {String|Model} [options.ref] model name or model instance. Marks this as a [populate virtual](/docs/populate.html#populate-virtuals). - * @param {String|Function} [options.localField] Required for populate virtuals. See [populate virtual docs](/docs/populate.html#populate-virtuals) for more information. - * @param {String|Function} [options.foreignField] Required for populate virtuals. See [populate virtual docs](/docs/populate.html#populate-virtuals) for more information. - * @param {Boolean|Function} [options.justOne=false] Only works with populate virtuals. If [truthy](https://masteringjs.io/tutorials/fundamentals/truthy), will be a single doc or `null`. Otherwise, the populate virtual will be an array. - * @param {Boolean} [options.count=false] Only works with populate virtuals. If [truthy](https://masteringjs.io/tutorials/fundamentals/truthy), this populate virtual will contain the number of documents rather than the documents themselves when you `populate()`. - * @param {Function|null} [options.get=null] Adds a [getter](/docs/tutorials/getters-setters.html) to this virtual to transform the populated doc. - * @return {VirtualType} - */ - - -Schema.prototype.virtual = function (name, options) { - if (name instanceof VirtualType || getConstructorName(name) === 'VirtualType') { - return this.virtual(name.path, name.options); - } - - options = new VirtualOptions(options); - - if (utils.hasUserDefinedProperty(options, ['ref', 'refPath'])) { - if (options.localField == null) { - throw new Error('Reference virtuals require `localField` option'); - } - - if (options.foreignField == null) { - throw new Error('Reference virtuals require `foreignField` option'); - } - - this.pre('init', function (obj) { - if (mpath.has(name, obj)) { - var _v = mpath.get(name, obj); - - if (!this.$$populatedVirtuals) { - this.$$populatedVirtuals = {}; - } - - if (options.justOne || options.count) { - this.$$populatedVirtuals[name] = Array.isArray(_v) ? _v[0] : _v; - } else { - this.$$populatedVirtuals[name] = Array.isArray(_v) ? _v : _v == null ? [] : [_v]; - } - - mpath.unset(name, obj); - } - }); - var virtual = this.virtual(name); - virtual.options = options; - virtual.set(function (_v) { - if (!this.$$populatedVirtuals) { - this.$$populatedVirtuals = {}; - } - - if (options.justOne || options.count) { - this.$$populatedVirtuals[name] = Array.isArray(_v) ? _v[0] : _v; - - if (_typeof(this.$$populatedVirtuals[name]) !== 'object') { - this.$$populatedVirtuals[name] = options.count ? _v : null; - } - } else { - this.$$populatedVirtuals[name] = Array.isArray(_v) ? _v : _v == null ? [] : [_v]; - this.$$populatedVirtuals[name] = this.$$populatedVirtuals[name].filter(function (doc) { - return doc && _typeof(doc) === 'object'; - }); - } - }); - - if (typeof options.get === 'function') { - virtual.get(options.get); - } // Workaround for gh-8198: if virtual is under document array, make a fake - // virtual. See gh-8210 - - - var _parts = name.split('.'); - - var cur = _parts[0]; - - for (var i = 0; i < _parts.length - 1; ++i) { - if (this.paths[cur] != null && this.paths[cur].$isMongooseDocumentArray) { - var remnant = _parts.slice(i + 1).join('.'); - - this.paths[cur].schema.virtual(remnant, options); - break; - } - - cur += '.' + _parts[i + 1]; - } - - return virtual; - } - - var virtuals = this.virtuals; - var parts = name.split('.'); - - if (this.pathType(name) === 'real') { - throw new Error('Virtual path "' + name + '"' + ' conflicts with a real path in the schema'); - } - - virtuals[name] = parts.reduce(function (mem, part, i) { - mem[part] || (mem[part] = i === parts.length - 1 ? new VirtualType(options, name) : {}); - return mem[part]; - }, this.tree); - return virtuals[name]; -}; -/** - * Returns the virtual type with the given `name`. - * - * @param {String} name - * @return {VirtualType} - */ - - -Schema.prototype.virtualpath = function (name) { - return this.virtuals.hasOwnProperty(name) ? this.virtuals[name] : null; -}; -/** - * Removes the given `path` (or [`paths`]). - * - * #### Example: - * - * const schema = new Schema({ name: String, age: Number }); - * schema.remove('name'); - * schema.path('name'); // Undefined - * schema.path('age'); // SchemaNumber { ... } - * - * @param {String|Array} path - * @return {Schema} the Schema instance - * @api public - */ - - -Schema.prototype.remove = function (path) { - if (typeof path === 'string') { - path = [path]; - } - - if (Array.isArray(path)) { - path.forEach(function (name) { - if (this.path(name) == null && !this.nested[name]) { - return; - } - - if (this.nested[name]) { - var allKeys = Object.keys(this.paths).concat(Object.keys(this.nested)); - - var _iterator11 = _createForOfIteratorHelper(allKeys), - _step11; - - try { - for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) { - var _path2 = _step11.value; - - if (_path2.startsWith(name + '.')) { - delete this.paths[_path2]; - delete this.nested[_path2]; - - _deletePath(this, _path2); - } - } - } catch (err) { - _iterator11.e(err); - } finally { - _iterator11.f(); - } - - delete this.nested[name]; - - _deletePath(this, name); - - return; - } - - delete this.paths[name]; - - _deletePath(this, name); - }, this); - } - - return this; -}; -/*! - * ignore - */ - - -function _deletePath(schema, name) { - var pieces = name.split('.'); - var last = pieces.pop(); - var branch = schema.tree; - - var _iterator12 = _createForOfIteratorHelper(pieces), - _step12; - - try { - for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) { - var piece = _step12.value; - branch = branch[piece]; - } - } catch (err) { - _iterator12.e(err); - } finally { - _iterator12.f(); - } - - delete branch[last]; -} -/** - * Loads an ES6 class into a schema. Maps [setters](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/set) + [getters](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get), [static methods](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/static), - * and [instance methods](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes#Class_body_and_method_definitions) - * to schema [virtuals](/docs/guide.html#virtuals), - * [statics](/docs/guide.html#statics), and - * [methods](/docs/guide.html#methods). - * - * #### Example: - * - * ```javascript - * const md5 = require('md5'); - * const userSchema = new Schema({ email: String }); - * class UserClass { - * // `gravatarImage` becomes a virtual - * get gravatarImage() { - * const hash = md5(this.email.toLowerCase()); - * return `https://www.gravatar.com/avatar/${hash}`; - * } - * - * // `getProfileUrl()` becomes a document method - * getProfileUrl() { - * return `https://mysite.com/${this.email}`; - * } - * - * // `findByEmail()` becomes a static - * static findByEmail(email) { - * return this.findOne({ email }); - * } - * } - * - * // `schema` will now have a `gravatarImage` virtual, a `getProfileUrl()` method, - * // and a `findByEmail()` static - * userSchema.loadClass(UserClass); - * ``` - * - * @param {Function} model - * @param {Boolean} [virtualsOnly] if truthy, only pulls virtuals from the class, not methods or statics - */ - - -Schema.prototype.loadClass = function (model, virtualsOnly) { - if (model === Object.prototype || model === Function.prototype || model.prototype.hasOwnProperty('$isMongooseModelPrototype')) { - return this; - } - - this.loadClass(Object.getPrototypeOf(model), virtualsOnly); // Add static methods - - if (!virtualsOnly) { - Object.getOwnPropertyNames(model).forEach(function (name) { - if (name.match(/^(length|name|prototype|constructor|__proto__)$/)) { - return; - } - - var prop = Object.getOwnPropertyDescriptor(model, name); - - if (prop.hasOwnProperty('value')) { - this["static"](name, prop.value); - } - }, this); - } // Add methods and virtuals - - - Object.getOwnPropertyNames(model.prototype).forEach(function (name) { - if (name.match(/^(constructor)$/)) { - return; - } - - var method = Object.getOwnPropertyDescriptor(model.prototype, name); - - if (!virtualsOnly) { - if (typeof method.value === 'function') { - this.method(name, method.value); - } - } - - if (typeof method.get === 'function') { - if (this.virtuals[name]) { - this.virtuals[name].getters = []; - } - - this.virtual(name).get(method.get); - } - - if (typeof method.set === 'function') { - if (this.virtuals[name]) { - this.virtuals[name].setters = []; - } - - this.virtual(name).set(method.set); - } - }, this); - return this; -}; -/*! - * ignore - */ - - -Schema.prototype._getSchema = function (path) { - var _this = this; - - var pathschema = _this.path(path); - - var resultPath = []; - - if (pathschema) { - pathschema.$fullPath = path; - return pathschema; - } - - function search(parts, schema) { - var p = parts.length + 1; - var foundschema; - var trypath; - - while (p--) { - trypath = parts.slice(0, p).join('.'); - foundschema = schema.path(trypath); - - if (foundschema) { - resultPath.push(trypath); - - if (foundschema.caster) { - // array of Mixed? - if (foundschema.caster instanceof MongooseTypes.Mixed) { - foundschema.caster.$fullPath = resultPath.join('.'); - return foundschema.caster; - } // Now that we found the array, we need to check if there - // are remaining document paths to look up for casting. - // Also we need to handle array.$.path since schema.path - // doesn't work for that. - // If there is no foundschema.schema we are dealing with - // a path like array.$ - - - if (p !== parts.length) { - if (foundschema.schema) { - var ret = void 0; - - if (parts[p] === '$' || isArrayFilter(parts[p])) { - if (p + 1 === parts.length) { - // comments.$ - return foundschema; - } // comments.$.comments.$.title - - - ret = search(parts.slice(p + 1), foundschema.schema); - - if (ret) { - ret.$isUnderneathDocArray = ret.$isUnderneathDocArray || !foundschema.schema.$isSingleNested; - } - - return ret; - } // this is the last path of the selector - - - ret = search(parts.slice(p), foundschema.schema); - - if (ret) { - ret.$isUnderneathDocArray = ret.$isUnderneathDocArray || !foundschema.schema.$isSingleNested; - } - - return ret; - } - } - } else if (foundschema.$isSchemaMap) { - if (p >= parts.length) { - return foundschema; - } // Any path in the map will be an instance of the map's embedded schematype - - - if (p + 1 >= parts.length) { - return foundschema.$__schemaType; - } - - var _ret = search(parts.slice(p + 1), foundschema.$__schemaType.schema); - - return _ret; - } - - foundschema.$fullPath = resultPath.join('.'); - return foundschema; - } - } - } // look for arrays - - - var parts = path.split('.'); - - for (var i = 0; i < parts.length; ++i) { - if (parts[i] === '$' || isArrayFilter(parts[i])) { - // Re: gh-5628, because `schema.path()` doesn't take $ into account. - parts[i] = '0'; - } - } - - return search(parts, _this); -}; -/*! - * ignore - */ - - -Schema.prototype._getPathType = function (path) { - var _this = this; - - var pathschema = _this.path(path); - - if (pathschema) { - return 'real'; - } - - function search(parts, schema) { - var p = parts.length + 1, - foundschema, - trypath; - - while (p--) { - trypath = parts.slice(0, p).join('.'); - foundschema = schema.path(trypath); - - if (foundschema) { - if (foundschema.caster) { - // array of Mixed? - if (foundschema.caster instanceof MongooseTypes.Mixed) { - return { - schema: foundschema, - pathType: 'mixed' - }; - } // Now that we found the array, we need to check if there - // are remaining document paths to look up for casting. - // Also we need to handle array.$.path since schema.path - // doesn't work for that. - // If there is no foundschema.schema we are dealing with - // a path like array.$ - - - if (p !== parts.length && foundschema.schema) { - if (parts[p] === '$' || isArrayFilter(parts[p])) { - if (p === parts.length - 1) { - return { - schema: foundschema, - pathType: 'nested' - }; - } // comments.$.comments.$.title - - - return search(parts.slice(p + 1), foundschema.schema); - } // this is the last path of the selector - - - return search(parts.slice(p), foundschema.schema); - } - - return { - schema: foundschema, - pathType: foundschema.$isSingleNested ? 'nested' : 'array' - }; - } - - return { - schema: foundschema, - pathType: 'real' - }; - } else if (p === parts.length && schema.nested[trypath]) { - return { - schema: schema, - pathType: 'nested' - }; - } - } - - return { - schema: foundschema || schema, - pathType: 'undefined' - }; - } // look for arrays - - - return search(path.split('.'), _this); -}; -/*! - * ignore - */ - - -function isArrayFilter(piece) { - return piece.startsWith('$[') && piece.endsWith(']'); -} -/*! - * Called by `compile()` _right before_ compiling. Good for making any changes to - * the schema that should respect options set by plugins, like `id` - */ - - -Schema.prototype._preCompile = function _preCompile() { - idGetter(this); -}; -/*! - * Module exports. - */ - - -module.exports = exports = Schema; // require down here because of reference issues - -/** - * The various built-in Mongoose Schema Types. - * - * #### Example: - * - * const mongoose = require('mongoose'); - * const ObjectId = mongoose.Schema.Types.ObjectId; - * - * #### Types: - * - * - [String](/docs/schematypes.html#strings) - * - [Number](/docs/schematypes.html#numbers) - * - [Boolean](/docs/schematypes.html#booleans) | Bool - * - [Array](/docs/schematypes.html#arrays) - * - [Buffer](/docs/schematypes.html#buffers) - * - [Date](/docs/schematypes.html#dates) - * - [ObjectId](/docs/schematypes.html#objectids) | Oid - * - [Mixed](/docs/schematypes.html#mixed) - * - * Using this exposed access to the `Mixed` SchemaType, we can use them in our schema. - * - * const Mixed = mongoose.Schema.Types.Mixed; - * new mongoose.Schema({ _user: Mixed }) - * - * @api public - */ - -Schema.Types = MongooseTypes = __webpack_require__(5251); -/*! - * ignore - */ - -exports.ObjectId = MongooseTypes.ObjectId; - -/***/ }), - -/***/ 3617: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -/*! - * Module dependencies. - */ - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var CastError = __webpack_require__(1795); - -var EventEmitter = (__webpack_require__(9620).EventEmitter); - -var ObjectExpectedError = __webpack_require__(4107); - -var SchemaSubdocumentOptions = __webpack_require__(5446); - -var SchemaType = __webpack_require__(4289); - -var $exists = __webpack_require__(8702); - -var castToNumber = (__webpack_require__(1521)/* .castToNumber */ .W); - -var discriminator = __webpack_require__(9181); - -var geospatial = __webpack_require__(5008); - -var getConstructor = __webpack_require__(8413); - -var handleIdOption = __webpack_require__(9691); - -var internalToObjectOptions = (__webpack_require__(4962)/* .internalToObjectOptions */ .h); - -var utils = __webpack_require__(6872); - -var Subdocument; -module.exports = SubdocumentPath; -/** - * Single nested subdocument SchemaType constructor. - * - * @param {Schema} schema - * @param {String} path - * @param {Object} options - * @inherits SchemaType - * @api public - */ - -function SubdocumentPath(schema, path, options) { - var schemaTypeIdOption = SubdocumentPath.defaultOptions && SubdocumentPath.defaultOptions._id; - - if (schemaTypeIdOption != null) { - options = options || {}; - options._id = schemaTypeIdOption; - } - - schema = handleIdOption(schema, options); - this.caster = _createConstructor(schema); - this.caster.path = path; - this.caster.prototype.$basePath = path; - this.schema = schema; - this.$isSingleNested = true; - SchemaType.call(this, path, options, 'Embedded'); -} -/*! - * ignore - */ - - -SubdocumentPath.prototype = Object.create(SchemaType.prototype); -SubdocumentPath.prototype.constructor = SubdocumentPath; -SubdocumentPath.prototype.OptionsConstructor = SchemaSubdocumentOptions; -/*! - * ignore - */ - -function _createConstructor(schema, baseClass) { - // lazy load - Subdocument || (Subdocument = __webpack_require__(2591)); - - var _embedded = function SingleNested(value, path, parent) { - this.$__parent = parent; - Subdocument.apply(this, arguments); - - if (parent == null) { - return; - } - - this.$session(parent.$session()); - }; - - schema._preCompile(); - - var proto = baseClass != null ? baseClass.prototype : Subdocument.prototype; - _embedded.prototype = Object.create(proto); - - _embedded.prototype.$__setSchema(schema); - - _embedded.prototype.constructor = _embedded; - _embedded.schema = schema; - _embedded.$isSingleNested = true; - _embedded.events = new EventEmitter(); - - _embedded.prototype.toBSON = function () { - return this.toObject(internalToObjectOptions); - }; // apply methods - - - for (var i in schema.methods) { - _embedded.prototype[i] = schema.methods[i]; - } // apply statics - - - for (var _i in schema.statics) { - _embedded[_i] = schema.statics[_i]; - } - - for (var _i2 in EventEmitter.prototype) { - _embedded[_i2] = EventEmitter.prototype[_i2]; - } - - return _embedded; -} -/*! - * Special case for when users use a common location schema to represent - * locations for use with $geoWithin. - * https://docs.mongodb.org/manual/reference/operator/query/geoWithin/ - * - * @param {Object} val - * @api private - */ - - -SubdocumentPath.prototype.$conditionalHandlers.$geoWithin = function handle$geoWithin(val) { - return { - $geometry: this.castForQuery(val.$geometry) - }; -}; -/*! - * ignore - */ - - -SubdocumentPath.prototype.$conditionalHandlers.$near = SubdocumentPath.prototype.$conditionalHandlers.$nearSphere = geospatial.cast$near; -SubdocumentPath.prototype.$conditionalHandlers.$within = SubdocumentPath.prototype.$conditionalHandlers.$geoWithin = geospatial.cast$within; -SubdocumentPath.prototype.$conditionalHandlers.$geoIntersects = geospatial.cast$geoIntersects; -SubdocumentPath.prototype.$conditionalHandlers.$minDistance = castToNumber; -SubdocumentPath.prototype.$conditionalHandlers.$maxDistance = castToNumber; -SubdocumentPath.prototype.$conditionalHandlers.$exists = $exists; -/** - * Casts contents - * - * @param {Object} value - * @api private - */ - -SubdocumentPath.prototype.cast = function (val, doc, init, priorVal, options) { - if (val && val.$isSingleNested && val.parent === doc) { - return val; - } - - if (val != null && (_typeof(val) !== 'object' || Array.isArray(val))) { - throw new ObjectExpectedError(this.path, val); - } - - var Constructor = getConstructor(this.caster, val); - var subdoc; // Only pull relevant selected paths and pull out the base path - - var parentSelected = doc && doc.$__ && doc.$__.selected || {}; - var path = this.path; - var selected = Object.keys(parentSelected).reduce(function (obj, key) { - if (key.startsWith(path + '.')) { - obj = obj || {}; - obj[key.substring(path.length + 1)] = parentSelected[key]; - } - - return obj; - }, null); - options = Object.assign({}, options, { - priorDoc: priorVal - }); - - if (init) { - subdoc = new Constructor(void 0, selected, doc); - subdoc.$init(val); - } else { - if (Object.keys(val).length === 0) { - return new Constructor({}, selected, doc, undefined, options); - } - - return new Constructor(val, selected, doc, undefined, options); - } - - return subdoc; -}; -/** - * Casts contents for query - * - * @param {string} [$conditional] optional query operator (like `$eq` or `$in`) - * @param {any} value - * @api private - */ - - -SubdocumentPath.prototype.castForQuery = function ($conditional, val, options) { - var handler; - - if (arguments.length === 2) { - handler = this.$conditionalHandlers[$conditional]; - - if (!handler) { - throw new Error('Can\'t use ' + $conditional); - } - - return handler.call(this, val); - } - - val = $conditional; - - if (val == null) { - return val; - } - - if (this.options.runSetters) { - val = this._applySetters(val); - } - - var Constructor = getConstructor(this.caster, val); - var overrideStrict = options != null && options.strict != null ? options.strict : void 0; - - try { - val = new Constructor(val, overrideStrict); - } catch (error) { - // Make sure we always wrap in a CastError (gh-6803) - if (!(error instanceof CastError)) { - throw new CastError('Embedded', val, this.path, error, this); - } - - throw error; - } - - return val; -}; -/** - * Async validation on this single nested doc. - * - * @api private - */ - - -SubdocumentPath.prototype.doValidate = function (value, fn, scope, options) { - var Constructor = getConstructor(this.caster, value); - - if (value && !(value instanceof Constructor)) { - value = new Constructor(value, null, scope != null && scope.$__ != null ? scope : null); - } - - if (options && options.skipSchemaValidators) { - if (!value) { - return fn(null); - } - - return value.validate(fn); - } - - SchemaType.prototype.doValidate.call(this, value, function (error) { - if (error) { - return fn(error); - } - - if (!value) { - return fn(null); - } - - value.validate(fn); - }, scope, options); -}; -/** - * Synchronously validate this single nested doc - * - * @api private - */ - - -SubdocumentPath.prototype.doValidateSync = function (value, scope, options) { - if (!options || !options.skipSchemaValidators) { - var schemaTypeError = SchemaType.prototype.doValidateSync.call(this, value, scope); - - if (schemaTypeError) { - return schemaTypeError; - } - } - - if (!value) { - return; - } - - return value.validateSync(); -}; -/** - * Adds a discriminator to this single nested subdocument. - * - * #### Example: - * const shapeSchema = Schema({ name: String }, { discriminatorKey: 'kind' }); - * const schema = Schema({ shape: shapeSchema }); - * - * const singleNestedPath = parentSchema.path('shape'); - * singleNestedPath.discriminator('Circle', Schema({ radius: Number })); - * - * @param {String} name - * @param {Schema} schema fields to add to the schema for instances of this sub-class - * @param {Object|string} [options] If string, same as `options.value`. - * @param {String} [options.value] the string stored in the `discriminatorKey` property. If not specified, Mongoose uses the `name` parameter. - * @param {Boolean} [options.clone=true] By default, `discriminator()` clones the given `schema`. Set to `false` to skip cloning. - * @return {Function} the constructor Mongoose will use for creating instances of this discriminator model - * @see discriminators /docs/discriminators.html - * @api public - */ - - -SubdocumentPath.prototype.discriminator = function (name, schema, options) { - options = options || {}; - var value = utils.isPOJO(options) ? options.value : options; - var clone = typeof options.clone === 'boolean' ? options.clone : true; - - if (schema.instanceOfSchema && clone) { - schema = schema.clone(); - } - - schema = discriminator(this.caster, name, schema, value); - this.caster.discriminators[name] = _createConstructor(schema, this.caster); - return this.caster.discriminators[name]; -}; -/** - * Sets a default option for all SubdocumentPath instances. - * - * #### Example: - * - * // Make all numbers have option `min` equal to 0. - * mongoose.Schema.Embedded.set('required', true); - * - * @param {String} option - The option you'd like to set the value for - * @param {*} value - value for option - * @return {undefined} - * @function set - * @static - * @api public - */ - - -SubdocumentPath.defaultOptions = {}; -SubdocumentPath.set = SchemaType.set; -/*! - * ignore - */ - -SubdocumentPath.prototype.clone = function () { - var options = Object.assign({}, this.options); - var schematype = new this.constructor(this.schema, this.path, options); - schematype.validators = this.validators.slice(); - - if (this.requiredValidator !== undefined) { - schematype.requiredValidator = this.requiredValidator; - } - - schematype.caster.discriminators = Object.assign({}, this.caster.discriminators); - return schematype; -}; - -/***/ }), - -/***/ 94: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -/*! - * Module dependencies. - */ - -function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } - -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } - -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var $exists = __webpack_require__(8702); - -var $type = __webpack_require__(3053); - -var MongooseError = __webpack_require__(5202); - -var SchemaArrayOptions = __webpack_require__(4756); - -var SchemaType = __webpack_require__(4289); - -var CastError = SchemaType.CastError; - -var Mixed = __webpack_require__(3861); - -var arrayDepth = __webpack_require__(6069); - -var cast = __webpack_require__(6787); - -var isOperator = __webpack_require__(9627); - -var util = __webpack_require__(161); - -var utils = __webpack_require__(6872); - -var castToNumber = (__webpack_require__(1521)/* .castToNumber */ .W); - -var geospatial = __webpack_require__(5008); - -var getDiscriminatorByValue = __webpack_require__(7291); - -var MongooseArray; -var EmbeddedDoc; -var isNestedArraySymbol = Symbol('mongoose#isNestedArray'); -var emptyOpts = Object.freeze({}); -/** - * Array SchemaType constructor - * - * @param {String} key - * @param {SchemaType} cast - * @param {Object} options - * @param {Object} schemaOptions - * @inherits SchemaType - * @api public - */ - -function SchemaArray(key, cast, options, schemaOptions) { - // lazy load - EmbeddedDoc || (EmbeddedDoc = (__webpack_require__(8941).Embedded)); - var typeKey = 'type'; - - if (schemaOptions && schemaOptions.typeKey) { - typeKey = schemaOptions.typeKey; - } - - this.schemaOptions = schemaOptions; - - if (cast) { - var castOptions = {}; - - if (utils.isPOJO(cast)) { - if (cast[typeKey]) { - // support { type: Woot } - castOptions = utils.clone(cast); // do not alter user arguments - - delete castOptions[typeKey]; - cast = cast[typeKey]; - } else { - cast = Mixed; - } - } - - if (options != null && options.ref != null && castOptions.ref == null) { - castOptions.ref = options.ref; - } - - if (cast === Object) { - cast = Mixed; - } // support { type: 'String' } - - - var name = typeof cast === 'string' ? cast : utils.getFunctionName(cast); - - var Types = __webpack_require__(5251); - - var caster = Types.hasOwnProperty(name) ? Types[name] : cast; - this.casterConstructor = caster; - - if (this.casterConstructor instanceof SchemaArray) { - this.casterConstructor[isNestedArraySymbol] = true; - } - - if (typeof caster === 'function' && !caster.$isArraySubdocument && !caster.$isSchemaMap) { - var path = this.caster instanceof EmbeddedDoc ? null : key; - this.caster = new caster(path, castOptions); - } else { - this.caster = caster; - - if (!(this.caster instanceof EmbeddedDoc)) { - this.caster.path = key; - } - } - - this.$embeddedSchemaType = this.caster; - } - - this.$isMongooseArray = true; - SchemaType.call(this, key, options, 'Array'); - var defaultArr; - var fn; - - if (this.defaultValue != null) { - defaultArr = this.defaultValue; - fn = typeof defaultArr === 'function'; - } - - if (!('defaultValue' in this) || this.defaultValue !== void 0) { - var defaultFn = function defaultFn() { - // Leave it up to `cast()` to convert the array - return fn ? defaultArr.call(this) : defaultArr != null ? [].concat(defaultArr) : []; - }; - - defaultFn.$runBeforeSetters = !fn; - this["default"](defaultFn); - } -} -/** - * This schema type's name, to defend against minifiers that mangle - * function names. - * - * @api public - */ - - -SchemaArray.schemaName = 'Array'; -/** - * Options for all arrays. - * - * - `castNonArrays`: `true` by default. If `false`, Mongoose will throw a CastError when a value isn't an array. If `true`, Mongoose will wrap the provided value in an array before casting. - * - * @static options - * @api public - */ - -SchemaArray.options = { - castNonArrays: true -}; -/*! - * ignore - */ - -SchemaArray.defaultOptions = {}; -/** - * Sets a default option for all Array instances. - * - * #### Example: - * - * // Make all Array instances have `required` of true by default. - * mongoose.Schema.Array.set('required', true); - * - * const User = mongoose.model('User', new Schema({ test: Array })); - * new User({ }).validateSync().errors.test.message; // Path `test` is required. - * - * @param {String} option - The option you'd like to set the value for - * @param {*} value - value for option - * @return {undefined} - * @function set - * @api public - */ - -SchemaArray.set = SchemaType.set; -/*! - * Inherits from SchemaType. - */ - -SchemaArray.prototype = Object.create(SchemaType.prototype); -SchemaArray.prototype.constructor = SchemaArray; -SchemaArray.prototype.OptionsConstructor = SchemaArrayOptions; -/*! - * ignore - */ - -SchemaArray._checkRequired = SchemaType.prototype.checkRequired; -/** - * Override the function the required validator uses to check whether an array - * passes the `required` check. - * - * #### Example: - * - * // Require non-empty array to pass `required` check - * mongoose.Schema.Types.Array.checkRequired(v => Array.isArray(v) && v.length); - * - * const M = mongoose.model({ arr: { type: Array, required: true } }); - * new M({ arr: [] }).validateSync(); // `null`, validation fails! - * - * @param {Function} fn - * @return {Function} - * @function checkRequired - * @api public - */ - -SchemaArray.checkRequired = SchemaType.checkRequired; -/** - * Check if the given value satisfies the `required` validator. - * - * @param {Any} value - * @param {Document} doc - * @return {Boolean} - * @api public - */ - -SchemaArray.prototype.checkRequired = function checkRequired(value, doc) { - if (_typeof(value) === 'object' && SchemaType._isRef(this, value, doc, true)) { - return !!value; - } // `require('util').inherits()` does **not** copy static properties, and - // plugins like mongoose-float use `inherits()` for pre-ES6. - - - var _checkRequired = typeof this.constructor.checkRequired === 'function' ? this.constructor.checkRequired() : SchemaArray.checkRequired(); - - return _checkRequired(value); -}; -/** - * Adds an enum validator if this is an array of strings or numbers. Equivalent to - * `SchemaString.prototype.enum()` or `SchemaNumber.prototype.enum()` - * - * @param {String|Object} [args...] enumeration values - * @return {SchemaArray} this - */ - - -SchemaArray.prototype["enum"] = function () { - var arr = this; - - while (true) { - var instance = arr && arr.caster && arr.caster.instance; - - if (instance === 'Array') { - arr = arr.caster; - continue; - } - - if (instance !== 'String' && instance !== 'Number') { - throw new Error('`enum` can only be set on an array of strings or numbers ' + ', not ' + instance); - } - - break; - } - - var enumArray = arguments; - - if (!Array.isArray(arguments) && utils.isObject(arguments)) { - enumArray = utils.object.vals(enumArray); - } - - arr.caster["enum"].apply(arr.caster, enumArray); - return this; -}; -/** - * Overrides the getters application for the population special-case - * - * @param {Object} value - * @param {Object} scope - * @api private - */ - - -SchemaArray.prototype.applyGetters = function (value, scope) { - if (scope != null && scope.$__ != null && scope.$populated(this.path)) { - // means the object id was populated - return value; - } - - var ret = SchemaType.prototype.applyGetters.call(this, value, scope); - - if (Array.isArray(ret)) { - var rawValue = utils.isMongooseArray(ret) ? ret.__array : ret; - var len = rawValue.length; - - for (var i = 0; i < len; ++i) { - rawValue[i] = this.caster.applyGetters(rawValue[i], scope); - } - } - - return ret; -}; - -SchemaArray.prototype._applySetters = function (value, scope, init, priorVal) { - if (this.casterConstructor.$isMongooseArray && SchemaArray.options.castNonArrays && !this[isNestedArraySymbol]) { - // Check nesting levels and wrap in array if necessary - var depth = 0; - var arr = this; - - while (arr != null && arr.$isMongooseArray && !arr.$isMongooseDocumentArray) { - ++depth; - arr = arr.casterConstructor; - } // No need to wrap empty arrays - - - if (value != null && value.length !== 0) { - var valueDepth = arrayDepth(value); - - if (valueDepth.min === valueDepth.max && valueDepth.max < depth && valueDepth.containsNonArrayItem) { - for (var i = valueDepth.max; i < depth; ++i) { - value = [value]; - } - } - } - } - - return SchemaType.prototype._applySetters.call(this, value, scope, init, priorVal); -}; -/** - * Casts values for set(). - * - * @param {Object} value - * @param {Document} doc document that triggers the casting - * @param {Boolean} init whether this is an initialization cast - * @api private - */ - - -SchemaArray.prototype.cast = function (value, doc, init, prev, options) { - // lazy load - MongooseArray || (MongooseArray = (__webpack_require__(8941).Array)); - var i; - var l; - - if (Array.isArray(value)) { - var len = value.length; - - if (!len && doc) { - var indexes = doc.schema.indexedPaths(); - var arrayPath = this.path; - - for (i = 0, l = indexes.length; i < l; ++i) { - var pathIndex = indexes[i][0][arrayPath]; - - if (pathIndex === '2dsphere' || pathIndex === '2d') { - return; - } - } // Special case: if this index is on the parent of what looks like - // GeoJSON, skip setting the default to empty array re: #1668, #3233 - - - var arrayGeojsonPath = this.path.endsWith('.coordinates') ? this.path.substring(0, this.path.lastIndexOf('.')) : null; - - if (arrayGeojsonPath != null) { - for (i = 0, l = indexes.length; i < l; ++i) { - var _pathIndex = indexes[i][0][arrayGeojsonPath]; - - if (_pathIndex === '2dsphere') { - return; - } - } - } - } - - options = options || emptyOpts; - var rawValue = utils.isMongooseArray(value) ? value.__array : value; - value = MongooseArray(rawValue, options.path || this._arrayPath || this.path, doc, this); - rawValue = value.__array; - - if (init && doc != null && doc.$__ != null && doc.$populated(this.path)) { - return value; - } - - var caster = this.caster; - var isMongooseArray = caster.$isMongooseArray; - - if (caster && this.casterConstructor !== Mixed) { - try { - var _len = rawValue.length; - - for (i = 0; i < _len; i++) { - var opts = {}; // Perf: creating `arrayPath` is expensive for large arrays. - // We only need `arrayPath` if this is a nested array, so - // skip if possible. - - if (isMongooseArray) { - if (options.arrayPath != null) { - opts.arrayPathIndex = i; - } else if (caster._arrayParentPath != null) { - opts.arrayPathIndex = i; - } - } - - rawValue[i] = caster.applySetters(rawValue[i], doc, init, void 0, opts); - } - } catch (e) { - // rethrow - throw new CastError('[' + e.kind + ']', util.inspect(value), this.path + '.' + i, e, this); - } - } - - return value; - } - - if (init || SchemaArray.options.castNonArrays) { - // gh-2442: if we're loading this from the db and its not an array, mark - // the whole array as modified. - if (!!doc && !!init) { - doc.markModified(this.path); - } - - return this.cast([value], doc, init); - } - - throw new CastError('Array', util.inspect(value), this.path, null, this); -}; -/*! - * ignore - */ - - -SchemaArray.prototype._castForPopulate = function _castForPopulate(value, doc) { - // lazy load - MongooseArray || (MongooseArray = (__webpack_require__(8941).Array)); - - if (Array.isArray(value)) { - var i; - var rawValue = value.__array ? value.__array : value; - var len = rawValue.length; - var caster = this.caster; - - if (caster && this.casterConstructor !== Mixed) { - try { - for (i = 0; i < len; i++) { - var opts = {}; // Perf: creating `arrayPath` is expensive for large arrays. - // We only need `arrayPath` if this is a nested array, so - // skip if possible. - - if (caster.$isMongooseArray && caster._arrayParentPath != null) { - opts.arrayPathIndex = i; - } - - rawValue[i] = caster.cast(rawValue[i], doc, false, void 0, opts); - } - } catch (e) { - // rethrow - throw new CastError('[' + e.kind + ']', util.inspect(value), this.path + '.' + i, e, this); - } - } - - return value; - } - - throw new CastError('Array', util.inspect(value), this.path, null, this); -}; - -SchemaArray.prototype.$toObject = SchemaArray.prototype.toObject; -/*! - * Ignore - */ - -SchemaArray.prototype.discriminator = function (name, schema) { - var arr = this; - - while (arr.$isMongooseArray && !arr.$isMongooseDocumentArray) { - arr = arr.casterConstructor; - - if (arr == null || typeof arr === 'function') { - throw new MongooseError('You can only add an embedded discriminator on ' + 'a document array, ' + this.path + ' is a plain array'); - } - } - - return arr.discriminator(name, schema); -}; -/*! - * ignore - */ - - -SchemaArray.prototype.clone = function () { - var options = Object.assign({}, this.options); - var schematype = new this.constructor(this.path, this.caster, options, this.schemaOptions); - schematype.validators = this.validators.slice(); - - if (this.requiredValidator !== undefined) { - schematype.requiredValidator = this.requiredValidator; - } - - return schematype; -}; -/** - * Casts values for queries. - * - * @param {String} $conditional - * @param {any} [value] - * @api private - */ - - -SchemaArray.prototype.castForQuery = function ($conditional, value) { - var _this = this; - - var handler; - var val; - - if (arguments.length === 2) { - handler = this.$conditionalHandlers[$conditional]; - - if (!handler) { - throw new Error('Can\'t use ' + $conditional + ' with Array.'); - } - - val = handler.call(this, value); - } else { - val = $conditional; - var Constructor = this.casterConstructor; - - if (val && Constructor.discriminators && Constructor.schema && Constructor.schema.options && Constructor.schema.options.discriminatorKey) { - if (typeof val[Constructor.schema.options.discriminatorKey] === 'string' && Constructor.discriminators[val[Constructor.schema.options.discriminatorKey]]) { - Constructor = Constructor.discriminators[val[Constructor.schema.options.discriminatorKey]]; - } else { - var constructorByValue = getDiscriminatorByValue(Constructor.discriminators, val[Constructor.schema.options.discriminatorKey]); - - if (constructorByValue) { - Constructor = constructorByValue; - } - } - } - - var proto = this.casterConstructor.prototype; - var method = proto && (proto.castForQuery || proto.cast); - - if (!method && Constructor.castForQuery) { - method = Constructor.castForQuery; - } - - var caster = this.caster; - - if (Array.isArray(val)) { - this.setters.reverse().forEach(function (setter) { - val = setter.call(_this, val, _this); - }); - val = val.map(function (v) { - if (utils.isObject(v) && v.$elemMatch) { - return v; - } - - if (method) { - v = method.call(caster, v); - return v; - } - - if (v != null) { - v = new Constructor(v); - return v; - } - - return v; - }); - } else if (method) { - val = method.call(caster, val); - } else if (val != null) { - val = new Constructor(val); - } - } - - return val; -}; - -function cast$all(val) { - if (!Array.isArray(val)) { - val = [val]; - } - - val = val.map(function (v) { - if (!utils.isObject(v)) { - return v; - } - - if (v.$elemMatch != null) { - return { - $elemMatch: cast(this.casterConstructor.schema, v.$elemMatch) - }; - } - - var o = {}; - o[this.path] = v; - return cast(this.casterConstructor.schema, o)[this.path]; - }, this); - return this.castForQuery(val); -} - -function cast$elemMatch(val) { - var keys = Object.keys(val); - var numKeys = keys.length; - - for (var i = 0; i < numKeys; ++i) { - var key = keys[i]; - var value = val[key]; - - if (isOperator(key) && value != null) { - val[key] = this.castForQuery(key, value); - } - } // Is this an embedded discriminator and is the discriminator key set? - // If so, use the discriminator schema. See gh-7449 - - - var discriminatorKey = this && this.casterConstructor && this.casterConstructor.schema && this.casterConstructor.schema.options && this.casterConstructor.schema.options.discriminatorKey; - var discriminators = this && this.casterConstructor && this.casterConstructor.schema && this.casterConstructor.schema.discriminators || {}; - - if (discriminatorKey != null && val[discriminatorKey] != null && discriminators[val[discriminatorKey]] != null) { - return cast(discriminators[val[discriminatorKey]], val); - } - - return cast(this.casterConstructor.schema, val); -} - -var handle = SchemaArray.prototype.$conditionalHandlers = {}; -handle.$all = cast$all; -handle.$options = String; -handle.$elemMatch = cast$elemMatch; -handle.$geoIntersects = geospatial.cast$geoIntersects; -handle.$or = createLogicalQueryOperatorHandler('$or'); -handle.$and = createLogicalQueryOperatorHandler('$and'); -handle.$nor = createLogicalQueryOperatorHandler('$nor'); - -function createLogicalQueryOperatorHandler(op) { - return function logicalQueryOperatorHandler(val) { - if (!Array.isArray(val)) { - throw new TypeError('conditional ' + op + ' requires an array'); - } - - var ret = []; - - var _iterator = _createForOfIteratorHelper(val), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var obj = _step.value; - ret.push(cast(this.casterConstructor.schema, obj)); - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - return ret; - }; -} - -handle.$near = handle.$nearSphere = geospatial.cast$near; -handle.$within = handle.$geoWithin = geospatial.cast$within; -handle.$size = handle.$minDistance = handle.$maxDistance = castToNumber; -handle.$exists = $exists; -handle.$type = $type; -handle.$eq = handle.$gt = handle.$gte = handle.$lt = handle.$lte = handle.$ne = handle.$not = handle.$regex = SchemaArray.prototype.castForQuery; // `$in` is special because you can also include an empty array in the query -// like `$in: [1, []]`, see gh-5913 - -handle.$nin = SchemaType.prototype.$conditionalHandlers.$nin; -handle.$in = SchemaType.prototype.$conditionalHandlers.$in; -/*! - * Module exports. - */ - -module.exports = SchemaArray; - -/***/ }), - -/***/ 6470: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -/*! - * Module dependencies. - */ - -var CastError = __webpack_require__(1795); - -var SchemaType = __webpack_require__(4289); - -var castBoolean = __webpack_require__(6670); - -var utils = __webpack_require__(6872); -/** - * Boolean SchemaType constructor. - * - * @param {String} path - * @param {Object} options - * @inherits SchemaType - * @api public - */ - - -function SchemaBoolean(path, options) { - SchemaType.call(this, path, options, 'Boolean'); -} -/** - * This schema type's name, to defend against minifiers that mangle - * function names. - * - * @api public - */ - - -SchemaBoolean.schemaName = 'Boolean'; -SchemaBoolean.defaultOptions = {}; -/*! - * Inherits from SchemaType. - */ - -SchemaBoolean.prototype = Object.create(SchemaType.prototype); -SchemaBoolean.prototype.constructor = SchemaBoolean; -/*! - * ignore - */ - -SchemaBoolean._cast = castBoolean; -/** - * Sets a default option for all Boolean instances. - * - * #### Example: - * - * // Make all booleans have `default` of false. - * mongoose.Schema.Boolean.set('default', false); - * - * const Order = mongoose.model('Order', new Schema({ isPaid: Boolean })); - * new Order({ }).isPaid; // false - * - * @param {String} option - The option you'd like to set the value for - * @param {*} value - value for option - * @return {undefined} - * @function set - * @static - * @api public - */ - -SchemaBoolean.set = SchemaType.set; -/** - * Get/set the function used to cast arbitrary values to booleans. - * - * #### Example: - * - * // Make Mongoose cast empty string '' to false. - * const original = mongoose.Schema.Boolean.cast(); - * mongoose.Schema.Boolean.cast(v => { - * if (v === '') { - * return false; - * } - * return original(v); - * }); - * - * // Or disable casting entirely - * mongoose.Schema.Boolean.cast(false); - * - * @param {Function} caster - * @return {Function} - * @function get - * @static - * @api public - */ - -SchemaBoolean.cast = function cast(caster) { - if (arguments.length === 0) { - return this._cast; - } - - if (caster === false) { - caster = this._defaultCaster; - } - - this._cast = caster; - return this._cast; -}; -/*! - * ignore - */ - - -SchemaBoolean._defaultCaster = function (v) { - if (v != null && typeof v !== 'boolean') { - throw new Error(); - } - - return v; -}; -/*! - * ignore - */ - - -SchemaBoolean._checkRequired = function (v) { - return v === true || v === false; -}; -/** - * Override the function the required validator uses to check whether a boolean - * passes the `required` check. - * - * @param {Function} fn - * @return {Function} - * @function checkRequired - * @static - * @api public - */ - - -SchemaBoolean.checkRequired = SchemaType.checkRequired; -/** - * Check if the given value satisfies a required validator. For a boolean - * to satisfy a required validator, it must be strictly equal to true or to - * false. - * - * @param {Any} value - * @return {Boolean} - * @api public - */ - -SchemaBoolean.prototype.checkRequired = function (value) { - return this.constructor._checkRequired(value); -}; -/** - * Configure which values get casted to `true`. - * - * #### Example: - * - * const M = mongoose.model('Test', new Schema({ b: Boolean })); - * new M({ b: 'affirmative' }).b; // undefined - * mongoose.Schema.Boolean.convertToTrue.add('affirmative'); - * new M({ b: 'affirmative' }).b; // true - * - * @property convertToTrue - * @type Set - * @api public - */ - - -Object.defineProperty(SchemaBoolean, 'convertToTrue', { - get: function get() { - return castBoolean.convertToTrue; - }, - set: function set(v) { - castBoolean.convertToTrue = v; - } -}); -/** - * Configure which values get casted to `false`. - * - * #### Example: - * - * const M = mongoose.model('Test', new Schema({ b: Boolean })); - * new M({ b: 'nay' }).b; // undefined - * mongoose.Schema.Types.Boolean.convertToFalse.add('nay'); - * new M({ b: 'nay' }).b; // false - * - * @property convertToFalse - * @type Set - * @api public - */ - -Object.defineProperty(SchemaBoolean, 'convertToFalse', { - get: function get() { - return castBoolean.convertToFalse; - }, - set: function set(v) { - castBoolean.convertToFalse = v; - } -}); -/** - * Casts to boolean - * - * @param {Object} value - * @param {Object} model - this value is optional - * @api private - */ - -SchemaBoolean.prototype.cast = function (value) { - var castBoolean; - - if (typeof this._castFunction === 'function') { - castBoolean = this._castFunction; - } else if (typeof this.constructor.cast === 'function') { - castBoolean = this.constructor.cast(); - } else { - castBoolean = SchemaBoolean.cast(); - } - - try { - return castBoolean(value); - } catch (error) { - throw new CastError('Boolean', value, this.path, error, this); - } -}; - -SchemaBoolean.$conditionalHandlers = utils.options(SchemaType.prototype.$conditionalHandlers, {}); -/** - * Casts contents for queries. - * - * @param {String} $conditional - * @param {any} val - * @api private - */ - -SchemaBoolean.prototype.castForQuery = function ($conditional, val) { - var handler; - - if (arguments.length === 2) { - handler = SchemaBoolean.$conditionalHandlers[$conditional]; - - if (handler) { - return handler.call(this, val); - } - - return this._castForQuery(val); - } - - return this._castForQuery($conditional); -}; -/** - * - * @api private - */ - - -SchemaBoolean.prototype._castNullish = function _castNullish(v) { - if (typeof v === 'undefined') { - return v; - } - - var castBoolean = typeof this.constructor.cast === 'function' ? this.constructor.cast() : SchemaBoolean.cast(); - - if (castBoolean == null) { - return v; - } - - if (castBoolean.convertToFalse instanceof Set && castBoolean.convertToFalse.has(v)) { - return false; - } - - if (castBoolean.convertToTrue instanceof Set && castBoolean.convertToTrue.has(v)) { - return true; - } - - return v; -}; -/*! - * Module exports. - */ - - -module.exports = SchemaBoolean; - -/***/ }), - -/***/ 8800: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/* provided dependency */ var Buffer = __webpack_require__(365)["Buffer"]; -/*! - * Module dependencies. - */ - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var MongooseBuffer = __webpack_require__(4051); - -var SchemaBufferOptions = __webpack_require__(9586); - -var SchemaType = __webpack_require__(4289); - -var handleBitwiseOperator = __webpack_require__(4282); - -var utils = __webpack_require__(6872); - -var Binary = MongooseBuffer.Binary; -var CastError = SchemaType.CastError; -/** - * Buffer SchemaType constructor - * - * @param {String} key - * @param {Object} options - * @inherits SchemaType - * @api public - */ - -function SchemaBuffer(key, options) { - SchemaType.call(this, key, options, 'Buffer'); -} -/** - * This schema type's name, to defend against minifiers that mangle - * function names. - * - * @api public - */ - - -SchemaBuffer.schemaName = 'Buffer'; -SchemaBuffer.defaultOptions = {}; -/*! - * Inherits from SchemaType. - */ - -SchemaBuffer.prototype = Object.create(SchemaType.prototype); -SchemaBuffer.prototype.constructor = SchemaBuffer; -SchemaBuffer.prototype.OptionsConstructor = SchemaBufferOptions; -/*! - * ignore - */ - -SchemaBuffer._checkRequired = function (v) { - return !!(v && v.length); -}; -/** - * Sets a default option for all Buffer instances. - * - * #### Example: - * - * // Make all buffers have `required` of true by default. - * mongoose.Schema.Buffer.set('required', true); - * - * const User = mongoose.model('User', new Schema({ test: Buffer })); - * new User({ }).validateSync().errors.test.message; // Path `test` is required. - * - * @param {String} option - The option you'd like to set the value for - * @param {*} value - value for option - * @return {undefined} - * @function set - * @static - * @api public - */ - - -SchemaBuffer.set = SchemaType.set; -/** - * Override the function the required validator uses to check whether a string - * passes the `required` check. - * - * #### Example: - * - * // Allow empty strings to pass `required` check - * mongoose.Schema.Types.String.checkRequired(v => v != null); - * - * const M = mongoose.model({ buf: { type: Buffer, required: true } }); - * new M({ buf: Buffer.from('') }).validateSync(); // validation passes! - * - * @param {Function} fn - * @return {Function} - * @function checkRequired - * @static - * @api public - */ - -SchemaBuffer.checkRequired = SchemaType.checkRequired; -/** - * Check if the given value satisfies a required validator. To satisfy a - * required validator, a buffer must not be null or undefined and have - * non-zero length. - * - * @param {Any} value - * @param {Document} doc - * @return {Boolean} - * @api public - */ - -SchemaBuffer.prototype.checkRequired = function (value, doc) { - if (SchemaType._isRef(this, value, doc, true)) { - return !!value; - } - - return this.constructor._checkRequired(value); -}; -/** - * Casts contents - * - * @param {Object} value - * @param {Document} doc document that triggers the casting - * @param {Boolean} init - * @api private - */ - - -SchemaBuffer.prototype.cast = function (value, doc, init) { - var ret; - - if (SchemaType._isRef(this, value, doc, init)) { - if (value && value.isMongooseBuffer) { - return value; - } - - if (Buffer.isBuffer(value)) { - if (!value || !value.isMongooseBuffer) { - value = new MongooseBuffer(value, [this.path, doc]); - - if (this.options.subtype != null) { - value._subtype = this.options.subtype; - } - } - - return value; - } - - if (value instanceof Binary) { - ret = new MongooseBuffer(value.value(true), [this.path, doc]); - - if (typeof value.sub_type !== 'number') { - throw new CastError('Buffer', value, this.path, null, this); - } - - ret._subtype = value.sub_type; - return ret; - } - - if (value == null || utils.isNonBuiltinObject(value)) { - return this._castRef(value, doc, init); - } - } // documents - - - if (value && value._id) { - value = value._id; - } - - if (value && value.isMongooseBuffer) { - return value; - } - - if (Buffer.isBuffer(value)) { - if (!value || !value.isMongooseBuffer) { - value = new MongooseBuffer(value, [this.path, doc]); - - if (this.options.subtype != null) { - value._subtype = this.options.subtype; - } - } - - return value; - } - - if (value instanceof Binary) { - ret = new MongooseBuffer(value.value(true), [this.path, doc]); - - if (typeof value.sub_type !== 'number') { - throw new CastError('Buffer', value, this.path, null, this); - } - - ret._subtype = value.sub_type; - return ret; - } - - if (value === null) { - return value; - } - - var type = _typeof(value); - - if (type === 'string' || type === 'number' || Array.isArray(value) || type === 'object' && value.type === 'Buffer' && Array.isArray(value.data) // gh-6863 - ) { - if (type === 'number') { - value = [value]; - } - - ret = new MongooseBuffer(value, [this.path, doc]); - - if (this.options.subtype != null) { - ret._subtype = this.options.subtype; - } - - return ret; - } - - throw new CastError('Buffer', value, this.path, null, this); -}; -/** - * Sets the default [subtype](https://studio3t.com/whats-new/best-practices-uuid-mongodb/) - * for this buffer. You can find a [list of allowed subtypes here](https://api.mongodb.com/python/current/api/bson/binary.html). - * - * #### Example: - * - * const s = new Schema({ uuid: { type: Buffer, subtype: 4 }); - * const M = db.model('M', s); - * const m = new M({ uuid: 'test string' }); - * m.uuid._subtype; // 4 - * - * @param {Number} subtype the default subtype - * @return {SchemaType} this - * @api public - */ - - -SchemaBuffer.prototype.subtype = function (subtype) { - this.options.subtype = subtype; - return this; -}; -/*! - * ignore - */ - - -function handleSingle(val) { - return this.castForQuery(val); -} - -SchemaBuffer.prototype.$conditionalHandlers = utils.options(SchemaType.prototype.$conditionalHandlers, { - $bitsAllClear: handleBitwiseOperator, - $bitsAnyClear: handleBitwiseOperator, - $bitsAllSet: handleBitwiseOperator, - $bitsAnySet: handleBitwiseOperator, - $gt: handleSingle, - $gte: handleSingle, - $lt: handleSingle, - $lte: handleSingle -}); -/** - * Casts contents for queries. - * - * @param {String} $conditional - * @param {any} [value] - * @api private - */ - -SchemaBuffer.prototype.castForQuery = function ($conditional, val) { - var handler; - - if (arguments.length === 2) { - handler = this.$conditionalHandlers[$conditional]; - - if (!handler) { - throw new Error('Can\'t use ' + $conditional + ' with Buffer.'); - } - - return handler.call(this, val); - } - - val = $conditional; - - var casted = this._castForQuery(val); - - return casted ? casted.toObject({ - transform: false, - virtuals: false - }) : casted; -}; -/*! - * Module exports. - */ - - -module.exports = SchemaBuffer; - -/***/ }), - -/***/ 6535: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/*! - * Module requirements. - */ - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var MongooseError = __webpack_require__(4888); - -var SchemaDateOptions = __webpack_require__(2869); - -var SchemaType = __webpack_require__(4289); - -var castDate = __webpack_require__(195); - -var getConstructorName = __webpack_require__(1981); - -var utils = __webpack_require__(6872); - -var CastError = SchemaType.CastError; -/** - * Date SchemaType constructor. - * - * @param {String} key - * @param {Object} options - * @inherits SchemaType - * @api public - */ - -function SchemaDate(key, options) { - SchemaType.call(this, key, options, 'Date'); -} -/** - * This schema type's name, to defend against minifiers that mangle - * function names. - * - * @api public - */ - - -SchemaDate.schemaName = 'Date'; -SchemaDate.defaultOptions = {}; -/*! - * Inherits from SchemaType. - */ - -SchemaDate.prototype = Object.create(SchemaType.prototype); -SchemaDate.prototype.constructor = SchemaDate; -SchemaDate.prototype.OptionsConstructor = SchemaDateOptions; -/*! - * ignore - */ - -SchemaDate._cast = castDate; -/** - * Sets a default option for all Date instances. - * - * #### Example: - * - * // Make all dates have `required` of true by default. - * mongoose.Schema.Date.set('required', true); - * - * const User = mongoose.model('User', new Schema({ test: Date })); - * new User({ }).validateSync().errors.test.message; // Path `test` is required. - * - * @param {String} option - The option you'd like to set the value for - * @param {*} value - value for option - * @return {undefined} - * @function set - * @static - * @api public - */ - -SchemaDate.set = SchemaType.set; -/** - * Get/set the function used to cast arbitrary values to dates. - * - * #### Example: - * - * // Mongoose converts empty string '' into `null` for date types. You - * // can create a custom caster to disable it. - * const original = mongoose.Schema.Types.Date.cast(); - * mongoose.Schema.Types.Date.cast(v => { - * assert.ok(v !== ''); - * return original(v); - * }); - * - * // Or disable casting entirely - * mongoose.Schema.Types.Date.cast(false); - * - * @param {Function} caster - * @return {Function} - * @function get - * @static - * @api public - */ - -SchemaDate.cast = function cast(caster) { - if (arguments.length === 0) { - return this._cast; - } - - if (caster === false) { - caster = this._defaultCaster; - } - - this._cast = caster; - return this._cast; -}; -/*! - * ignore - */ - - -SchemaDate._defaultCaster = function (v) { - if (v != null && !(v instanceof Date)) { - throw new Error(); - } - - return v; -}; -/** - * Declares a TTL index (rounded to the nearest second) for _Date_ types only. - * - * This sets the `expireAfterSeconds` index option available in MongoDB >= 2.1.2. - * This index type is only compatible with Date types. - * - * #### Example: - * - * // expire in 24 hours - * new Schema({ createdAt: { type: Date, expires: 60*60*24 }}); - * - * `expires` utilizes the `ms` module from [guille](https://github.com/guille/) allowing us to use a friendlier syntax: - * - * #### Example: - * - * // expire in 24 hours - * new Schema({ createdAt: { type: Date, expires: '24h' }}); - * - * // expire in 1.5 hours - * new Schema({ createdAt: { type: Date, expires: '1.5h' }}); - * - * // expire in 7 days - * const schema = new Schema({ createdAt: Date }); - * schema.path('createdAt').expires('7d'); - * - * @param {Number|String} when - * @added 3.0.0 - * @return {SchemaType} this - * @api public - */ - - -SchemaDate.prototype.expires = function (when) { - if (getConstructorName(this._index) !== 'Object') { - this._index = {}; - } - - this._index.expires = when; - utils.expires(this._index); - return this; -}; -/*! - * ignore - */ - - -SchemaDate._checkRequired = function (v) { - return v instanceof Date; -}; -/** - * Override the function the required validator uses to check whether a string - * passes the `required` check. - * - * #### Example: - * - * // Allow empty strings to pass `required` check - * mongoose.Schema.Types.String.checkRequired(v => v != null); - * - * const M = mongoose.model({ str: { type: String, required: true } }); - * new M({ str: '' }).validateSync(); // `null`, validation passes! - * - * @param {Function} fn - * @return {Function} - * @function checkRequired - * @static - * @api public - */ - - -SchemaDate.checkRequired = SchemaType.checkRequired; -/** - * Check if the given value satisfies a required validator. To satisfy - * a required validator, the given value must be an instance of `Date`. - * - * @param {Any} value - * @param {Document} doc - * @return {Boolean} - * @api public - */ - -SchemaDate.prototype.checkRequired = function (value, doc) { - if (_typeof(value) === 'object' && SchemaType._isRef(this, value, doc, true)) { - return value != null; - } // `require('util').inherits()` does **not** copy static properties, and - // plugins like mongoose-float use `inherits()` for pre-ES6. - - - var _checkRequired = typeof this.constructor.checkRequired === 'function' ? this.constructor.checkRequired() : SchemaDate.checkRequired(); - - return _checkRequired(value); -}; -/** - * Sets a minimum date validator. - * - * #### Example: - * - * const s = new Schema({ d: { type: Date, min: Date('1970-01-01') }) - * const M = db.model('M', s) - * const m = new M({ d: Date('1969-12-31') }) - * m.save(function (err) { - * console.error(err) // validator error - * m.d = Date('2014-12-08'); - * m.save() // success - * }) - * - * // custom error messages - * // We can also use the special {MIN} token which will be replaced with the invalid value - * const min = [Date('1970-01-01'), 'The value of path `{PATH}` ({VALUE}) is beneath the limit ({MIN}).']; - * const schema = new Schema({ d: { type: Date, min: min }) - * const M = mongoose.model('M', schema); - * const s= new M({ d: Date('1969-12-31') }); - * s.validate(function (err) { - * console.log(String(err)) // ValidationError: The value of path `d` (1969-12-31) is before the limit (1970-01-01). - * }) - * - * @param {Date} value minimum date - * @param {String} [message] optional custom error message - * @return {SchemaType} this - * @see Customized Error Messages #error_messages_MongooseError-messages - * @api public - */ - - -SchemaDate.prototype.min = function (value, message) { - if (this.minValidator) { - this.validators = this.validators.filter(function (v) { - return v.validator !== this.minValidator; - }, this); - } - - if (value) { - var msg = message || MongooseError.messages.Date.min; - - if (typeof msg === 'string') { - msg = msg.replace(/{MIN}/, value === Date.now ? 'Date.now()' : value.toString()); - } - - var _this = this; - - this.validators.push({ - validator: this.minValidator = function (val) { - var _value = value; - - if (typeof value === 'function' && value !== Date.now) { - _value = _value.call(this); - } - - var min = _value === Date.now ? _value() : _this.cast(_value); - return val === null || val.valueOf() >= min.valueOf(); - }, - message: msg, - type: 'min', - min: value - }); - } - - return this; -}; -/** - * Sets a maximum date validator. - * - * #### Example: - * - * const s = new Schema({ d: { type: Date, max: Date('2014-01-01') }) - * const M = db.model('M', s) - * const m = new M({ d: Date('2014-12-08') }) - * m.save(function (err) { - * console.error(err) // validator error - * m.d = Date('2013-12-31'); - * m.save() // success - * }) - * - * // custom error messages - * // We can also use the special {MAX} token which will be replaced with the invalid value - * const max = [Date('2014-01-01'), 'The value of path `{PATH}` ({VALUE}) exceeds the limit ({MAX}).']; - * const schema = new Schema({ d: { type: Date, max: max }) - * const M = mongoose.model('M', schema); - * const s= new M({ d: Date('2014-12-08') }); - * s.validate(function (err) { - * console.log(String(err)) // ValidationError: The value of path `d` (2014-12-08) exceeds the limit (2014-01-01). - * }) - * - * @param {Date} maximum date - * @param {String} [message] optional custom error message - * @return {SchemaType} this - * @see Customized Error Messages #error_messages_MongooseError-messages - * @api public - */ - - -SchemaDate.prototype.max = function (value, message) { - if (this.maxValidator) { - this.validators = this.validators.filter(function (v) { - return v.validator !== this.maxValidator; - }, this); - } - - if (value) { - var msg = message || MongooseError.messages.Date.max; - - if (typeof msg === 'string') { - msg = msg.replace(/{MAX}/, value === Date.now ? 'Date.now()' : value.toString()); - } - - var _this = this; - - this.validators.push({ - validator: this.maxValidator = function (val) { - var _value = value; - - if (typeof _value === 'function' && _value !== Date.now) { - _value = _value.call(this); - } - - var max = _value === Date.now ? _value() : _this.cast(_value); - return val === null || val.valueOf() <= max.valueOf(); - }, - message: msg, - type: 'max', - max: value - }); - } - - return this; -}; -/** - * Casts to date - * - * @param {Object} value to cast - * @api private - */ - - -SchemaDate.prototype.cast = function (value) { - var castDate; - - if (typeof this._castFunction === 'function') { - castDate = this._castFunction; - } else if (typeof this.constructor.cast === 'function') { - castDate = this.constructor.cast(); - } else { - castDate = SchemaDate.cast(); - } - - try { - return castDate(value); - } catch (error) { - throw new CastError('date', value, this.path, error, this); - } -}; -/*! - * Date Query casting. - * - * @api private - */ - - -function handleSingle(val) { - return this.cast(val); -} - -SchemaDate.prototype.$conditionalHandlers = utils.options(SchemaType.prototype.$conditionalHandlers, { - $gt: handleSingle, - $gte: handleSingle, - $lt: handleSingle, - $lte: handleSingle -}); -/** - * Casts contents for queries. - * - * @param {String} $conditional - * @param {any} [value] - * @api private - */ - -SchemaDate.prototype.castForQuery = function ($conditional, val) { - if (arguments.length !== 2) { - return this._castForQuery($conditional); - } - - var handler = this.$conditionalHandlers[$conditional]; - - if (!handler) { - throw new Error('Can\'t use ' + $conditional + ' with Date.'); - } - - return handler.call(this, val); -}; -/*! - * Module exports. - */ - - -module.exports = SchemaDate; - -/***/ }), - -/***/ 6621: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/*! - * Module dependencies. - */ - - -var SchemaType = __webpack_require__(4289); - -var CastError = SchemaType.CastError; - -var castDecimal128 = __webpack_require__(6209); - -var utils = __webpack_require__(6872); - -var isBsonType = __webpack_require__(1563); -/** - * Decimal128 SchemaType constructor. - * - * @param {String} key - * @param {Object} options - * @inherits SchemaType - * @api public - */ - - -function Decimal128(key, options) { - SchemaType.call(this, key, options, 'Decimal128'); -} -/** - * This schema type's name, to defend against minifiers that mangle - * function names. - * - * @api public - */ - - -Decimal128.schemaName = 'Decimal128'; -Decimal128.defaultOptions = {}; -/*! - * Inherits from SchemaType. - */ - -Decimal128.prototype = Object.create(SchemaType.prototype); -Decimal128.prototype.constructor = Decimal128; -/*! - * ignore - */ - -Decimal128._cast = castDecimal128; -/** - * Sets a default option for all Decimal128 instances. - * - * #### Example: - * - * // Make all decimal 128s have `required` of true by default. - * mongoose.Schema.Decimal128.set('required', true); - * - * const User = mongoose.model('User', new Schema({ test: mongoose.Decimal128 })); - * new User({ }).validateSync().errors.test.message; // Path `test` is required. - * - * @param {String} option - The option you'd like to set the value for - * @param {*} value - value for option - * @return {undefined} - * @function set - * @static - * @api public - */ - -Decimal128.set = SchemaType.set; -/** - * Get/set the function used to cast arbitrary values to decimals. - * - * #### Example: - * - * // Make Mongoose only refuse to cast numbers as decimal128 - * const original = mongoose.Schema.Types.Decimal128.cast(); - * mongoose.Decimal128.cast(v => { - * assert.ok(typeof v !== 'number'); - * return original(v); - * }); - * - * // Or disable casting entirely - * mongoose.Decimal128.cast(false); - * - * @param {Function} [caster] - * @return {Function} - * @function get - * @static - * @api public - */ - -Decimal128.cast = function cast(caster) { - if (arguments.length === 0) { - return this._cast; - } - - if (caster === false) { - caster = this._defaultCaster; - } - - this._cast = caster; - return this._cast; -}; -/*! - * ignore - */ - - -Decimal128._defaultCaster = function (v) { - if (v != null && !isBsonType(v, 'Decimal128')) { - throw new Error(); - } - - return v; -}; -/*! - * ignore - */ - - -Decimal128._checkRequired = function (v) { - return isBsonType(v, 'Decimal128'); -}; -/** - * Override the function the required validator uses to check whether a string - * passes the `required` check. - * - * @param {Function} fn - * @return {Function} - * @function checkRequired - * @static - * @api public - */ - - -Decimal128.checkRequired = SchemaType.checkRequired; -/** - * Check if the given value satisfies a required validator. - * - * @param {Any} value - * @param {Document} doc - * @return {Boolean} - * @api public - */ - -Decimal128.prototype.checkRequired = function checkRequired(value, doc) { - if (SchemaType._isRef(this, value, doc, true)) { - return !!value; - } // `require('util').inherits()` does **not** copy static properties, and - // plugins like mongoose-float use `inherits()` for pre-ES6. - - - var _checkRequired = typeof this.constructor.checkRequired === 'function' ? this.constructor.checkRequired() : Decimal128.checkRequired(); - - return _checkRequired(value); -}; -/** - * Casts to Decimal128 - * - * @param {Object} value - * @param {Object} doc - * @param {Boolean} init whether this is an initialization cast - * @api private - */ - - -Decimal128.prototype.cast = function (value, doc, init) { - if (SchemaType._isRef(this, value, doc, init)) { - if (isBsonType(value, 'Decimal128')) { - return value; - } - - return this._castRef(value, doc, init); - } - - var castDecimal128; - - if (typeof this._castFunction === 'function') { - castDecimal128 = this._castFunction; - } else if (typeof this.constructor.cast === 'function') { - castDecimal128 = this.constructor.cast(); - } else { - castDecimal128 = Decimal128.cast(); - } - - try { - return castDecimal128(value); - } catch (error) { - throw new CastError('Decimal128', value, this.path, error, this); - } -}; -/*! - * ignore - */ - - -function handleSingle(val) { - return this.cast(val); -} - -Decimal128.prototype.$conditionalHandlers = utils.options(SchemaType.prototype.$conditionalHandlers, { - $gt: handleSingle, - $gte: handleSingle, - $lt: handleSingle, - $lte: handleSingle -}); -/*! - * Module exports. - */ - -module.exports = Decimal128; - -/***/ }), - -/***/ 4504: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -/*! - * Module dependencies. - */ - -var ArrayType = __webpack_require__(94); - -var CastError = __webpack_require__(1795); - -var EventEmitter = (__webpack_require__(9620).EventEmitter); - -var SchemaDocumentArrayOptions = __webpack_require__(887); - -var SchemaType = __webpack_require__(4289); - -var SubdocumentPath = __webpack_require__(3617); - -var discriminator = __webpack_require__(9181); - -var handleIdOption = __webpack_require__(9691); - -var handleSpreadDoc = __webpack_require__(719); - -var utils = __webpack_require__(6872); - -var getConstructor = __webpack_require__(8413); - -var arrayAtomicsSymbol = (__webpack_require__(8770).arrayAtomicsSymbol); - -var arrayPathSymbol = (__webpack_require__(8770).arrayPathSymbol); - -var documentArrayParent = (__webpack_require__(8770).documentArrayParent); - -var MongooseDocumentArray; -var Subdocument; -/** - * SubdocsArray SchemaType constructor - * - * @param {String} key - * @param {Schema} schema - * @param {Object} options - * @param {Object} schemaOptions - * @inherits SchemaArray - * @api public - */ - -function DocumentArrayPath(key, schema, options, schemaOptions) { - if (schemaOptions != null && schemaOptions._id != null) { - schema = handleIdOption(schema, schemaOptions); - } else if (options != null && options._id != null) { - schema = handleIdOption(schema, options); - } - - var EmbeddedDocument = _createConstructor(schema, options); - - EmbeddedDocument.prototype.$basePath = key; - ArrayType.call(this, key, EmbeddedDocument, options); - this.schema = schema; - this.schemaOptions = schemaOptions || {}; - this.$isMongooseDocumentArray = true; - this.Constructor = EmbeddedDocument; - EmbeddedDocument.base = schema.base; - var fn = this.defaultValue; - - if (!('defaultValue' in this) || fn !== void 0) { - this["default"](function () { - var arr = fn.call(this); - - if (arr != null && !Array.isArray(arr)) { - arr = [arr]; - } // Leave it up to `cast()` to convert this to a documentarray - - - return arr; - }); - } - - var parentSchemaType = this; - this.$embeddedSchemaType = new SchemaType(key + '.$', { - required: this && this.schemaOptions && this.schemaOptions.required || false - }); - - this.$embeddedSchemaType.cast = function (value, doc, init) { - return parentSchemaType.cast(value, doc, init)[0]; - }; - - this.$embeddedSchemaType.doValidate = function (value, fn, scope, options) { - var Constructor = getConstructor(this.caster, value); - - if (value && !(value instanceof Constructor)) { - value = new Constructor(value, scope, null, null, options && options.index != null ? options.index : null); - } - - return SubdocumentPath.prototype.doValidate.call(this, value, fn, scope, options); - }; - - this.$embeddedSchemaType.$isMongooseDocumentArrayElement = true; - this.$embeddedSchemaType.caster = this.Constructor; - this.$embeddedSchemaType.schema = this.schema; -} -/** - * This schema type's name, to defend against minifiers that mangle - * function names. - * - * @api public - */ - - -DocumentArrayPath.schemaName = 'DocumentArray'; -/** - * Options for all document arrays. - * - * - `castNonArrays`: `true` by default. If `false`, Mongoose will throw a CastError when a value isn't an array. If `true`, Mongoose will wrap the provided value in an array before casting. - * - * @api public - */ - -DocumentArrayPath.options = { - castNonArrays: true -}; -/*! - * Inherits from ArrayType. - */ - -DocumentArrayPath.prototype = Object.create(ArrayType.prototype); -DocumentArrayPath.prototype.constructor = DocumentArrayPath; -DocumentArrayPath.prototype.OptionsConstructor = SchemaDocumentArrayOptions; -/*! - * Ignore - */ - -function _createConstructor(schema, options, baseClass) { - Subdocument || (Subdocument = __webpack_require__(1568)); // compile an embedded document for this schema - - function EmbeddedDocument(_value, parentArray) { - Subdocument.apply(this, arguments); - - if (parentArray == null || parentArray.getArrayParent() == null) { - return; - } - - this.$session(parentArray.getArrayParent().$session()); - } - - schema._preCompile(); - - var proto = baseClass != null ? baseClass.prototype : Subdocument.prototype; - EmbeddedDocument.prototype = Object.create(proto); - EmbeddedDocument.prototype.$__setSchema(schema); - EmbeddedDocument.schema = schema; - EmbeddedDocument.prototype.constructor = EmbeddedDocument; - EmbeddedDocument.$isArraySubdocument = true; - EmbeddedDocument.events = new EventEmitter(); // apply methods - - for (var i in schema.methods) { - EmbeddedDocument.prototype[i] = schema.methods[i]; - } // apply statics - - - for (var _i in schema.statics) { - EmbeddedDocument[_i] = schema.statics[_i]; - } - - for (var _i2 in EventEmitter.prototype) { - EmbeddedDocument[_i2] = EventEmitter.prototype[_i2]; - } - - EmbeddedDocument.options = options; - return EmbeddedDocument; -} -/** - * Adds a discriminator to this document array. - * - * #### Example: - * const shapeSchema = Schema({ name: String }, { discriminatorKey: 'kind' }); - * const schema = Schema({ shapes: [shapeSchema] }); - * - * const docArrayPath = parentSchema.path('shapes'); - * docArrayPath.discriminator('Circle', Schema({ radius: Number })); - * - * @param {String} name - * @param {Schema} schema fields to add to the schema for instances of this sub-class - * @param {Object|string} [options] If string, same as `options.value`. - * @param {String} [options.value] the string stored in the `discriminatorKey` property. If not specified, Mongoose uses the `name` parameter. - * @param {Boolean} [options.clone=true] By default, `discriminator()` clones the given `schema`. Set to `false` to skip cloning. - * @see discriminators /docs/discriminators.html - * @return {Function} the constructor Mongoose will use for creating instances of this discriminator model - * @api public - */ - - -DocumentArrayPath.prototype.discriminator = function (name, schema, options) { - if (typeof name === 'function') { - name = utils.getFunctionName(name); - } - - options = options || {}; - var tiedValue = utils.isPOJO(options) ? options.value : options; - var clone = typeof options.clone === 'boolean' ? options.clone : true; - - if (schema.instanceOfSchema && clone) { - schema = schema.clone(); - } - - schema = discriminator(this.casterConstructor, name, schema, tiedValue); - - var EmbeddedDocument = _createConstructor(schema, null, this.casterConstructor); - - EmbeddedDocument.baseCasterConstructor = this.casterConstructor; - - try { - Object.defineProperty(EmbeddedDocument, 'name', { - value: name - }); - } catch (error) {// Ignore error, only happens on old versions of node - } - - this.casterConstructor.discriminators[name] = EmbeddedDocument; - return this.casterConstructor.discriminators[name]; -}; -/** - * Performs local validations first, then validations on each embedded doc - * - * @api private - */ - - -DocumentArrayPath.prototype.doValidate = function (array, fn, scope, options) { - // lazy load - MongooseDocumentArray || (MongooseDocumentArray = __webpack_require__(6077)); - - var _this = this; - - try { - SchemaType.prototype.doValidate.call(this, array, cb, scope); - } catch (err) { - return fn(err); - } - - function cb(err) { - if (err) { - return fn(err); - } - - var count = array && array.length; - var error; - - if (!count) { - return fn(); - } - - if (options && options.updateValidator) { - return fn(); - } - - if (!utils.isMongooseDocumentArray(array)) { - array = new MongooseDocumentArray(array, _this.path, scope); - } // handle sparse arrays, do not use array.forEach which does not - // iterate over sparse elements yet reports array.length including - // them :( - - - function callback(err) { - if (err != null) { - error = err; - } - - --count || fn(error); - } - - for (var i = 0, len = count; i < len; ++i) { - // sidestep sparse entries - var doc = array[i]; - - if (doc == null) { - --count || fn(error); - continue; - } // If you set the array index directly, the doc might not yet be - // a full fledged mongoose subdoc, so make it into one. - - - if (!(doc instanceof Subdocument)) { - var Constructor = getConstructor(_this.casterConstructor, array[i]); - doc = array[i] = new Constructor(doc, array, undefined, undefined, i); - } - - if (options != null && options.validateModifiedOnly && !doc.$isModified()) { - --count || fn(error); - continue; - } - - doc.$__validate(callback); - } - } -}; -/** - * Performs local validations first, then validations on each embedded doc. - * - * #### Note: - * - * This method ignores the asynchronous validators. - * - * @return {MongooseError|undefined} - * @api private - */ - - -DocumentArrayPath.prototype.doValidateSync = function (array, scope, options) { - var schemaTypeError = SchemaType.prototype.doValidateSync.call(this, array, scope); - - if (schemaTypeError != null) { - return schemaTypeError; - } - - var count = array && array.length; - var resultError = null; - - if (!count) { - return; - } // handle sparse arrays, do not use array.forEach which does not - // iterate over sparse elements yet reports array.length including - // them :( - - - for (var i = 0, len = count; i < len; ++i) { - // sidestep sparse entries - var doc = array[i]; - - if (!doc) { - continue; - } // If you set the array index directly, the doc might not yet be - // a full fledged mongoose subdoc, so make it into one. - - - if (!(doc instanceof Subdocument)) { - var Constructor = getConstructor(this.casterConstructor, array[i]); - doc = array[i] = new Constructor(doc, array, undefined, undefined, i); - } - - if (options != null && options.validateModifiedOnly && !doc.$isModified()) { - continue; - } - - var subdocValidateError = doc.validateSync(); - - if (subdocValidateError && resultError == null) { - resultError = subdocValidateError; - } - } - - return resultError; -}; -/*! - * ignore - */ - - -DocumentArrayPath.prototype.getDefault = function (scope) { - var ret = typeof this.defaultValue === 'function' ? this.defaultValue.call(scope) : this.defaultValue; - - if (ret == null) { - return ret; - } // lazy load - - - MongooseDocumentArray || (MongooseDocumentArray = __webpack_require__(6077)); - - if (!Array.isArray(ret)) { - ret = [ret]; - } - - ret = new MongooseDocumentArray(ret, this.path, scope); - - for (var i = 0; i < ret.length; ++i) { - var Constructor = getConstructor(this.casterConstructor, ret[i]); - - var _subdoc = new Constructor({}, ret, undefined, undefined, i); - - _subdoc.$init(ret[i]); - - _subdoc.isNew = true; // Make sure all paths in the subdoc are set to `default` instead - // of `init` since we used `init`. - - Object.assign(_subdoc.$__.activePaths["default"], _subdoc.$__.activePaths.init); - _subdoc.$__.activePaths.init = {}; - ret[i] = _subdoc; - } - - return ret; -}; - -var _toObjectOptions = Object.freeze({ - transform: false, - virtuals: false -}); - -var initDocumentOptions = Object.freeze({ - skipId: true, - willInit: true -}); -/** - * Casts contents - * - * @param {Object} value - * @param {Document} document that triggers the casting - * @api private - */ - -DocumentArrayPath.prototype.cast = function (value, doc, init, prev, options) { - // lazy load - MongooseDocumentArray || (MongooseDocumentArray = __webpack_require__(6077)); // Skip casting if `value` is the same as the previous value, no need to cast. See gh-9266 - - if (value != null && value[arrayPathSymbol] != null && value === prev) { - return value; - } - - var selected; - var subdoc; - options = options || {}; - - if (!Array.isArray(value)) { - if (!init && !DocumentArrayPath.options.castNonArrays) { - throw new CastError('DocumentArray', value, this.path, null, this); - } // gh-2442 mark whole array as modified if we're initializing a doc from - // the db and the path isn't an array in the document - - - if (!!doc && init) { - doc.markModified(this.path); - } - - return this.cast([value], doc, init, prev, options); - } // We need to create a new array, otherwise change tracking will - // update the old doc (gh-4449) - - - if (!options.skipDocumentArrayCast || utils.isMongooseDocumentArray(value)) { - value = new MongooseDocumentArray(value, this.path, doc); - } - - if (prev != null) { - value[arrayAtomicsSymbol] = prev[arrayAtomicsSymbol] || {}; - } - - if (options.arrayPathIndex != null) { - value[arrayPathSymbol] = this.path + '.' + options.arrayPathIndex; - } - - var rawArray = utils.isMongooseDocumentArray(value) ? value.__array : value; - var len = rawArray.length; - - for (var i = 0; i < len; ++i) { - if (!rawArray[i]) { - continue; - } - - var Constructor = getConstructor(this.casterConstructor, rawArray[i]); // Check if the document has a different schema (re gh-3701) - - if (rawArray[i].$__ != null && !(rawArray[i] instanceof Constructor)) { - var spreadDoc = handleSpreadDoc(rawArray[i], true); - - if (rawArray[i] !== spreadDoc) { - rawArray[i] = spreadDoc; - } else { - rawArray[i] = rawArray[i].toObject({ - transform: false, - // Special case: if different model, but same schema, apply virtuals - // re: gh-7898 - virtuals: rawArray[i].schema === Constructor.schema - }); - } - } - - if (rawArray[i] instanceof Subdocument) { - if (rawArray[i][documentArrayParent] !== doc) { - if (init) { - var _subdoc2 = new Constructor(null, value, initDocumentOptions, selected, i); - - rawArray[i] = _subdoc2.$init(rawArray[i]); - } else { - var _subdoc3 = new Constructor(rawArray[i], value, undefined, undefined, i); - - rawArray[i] = _subdoc3; - } - } // Might not have the correct index yet, so ensure it does. - - - if (rawArray[i].__index == null) { - rawArray[i].$setIndex(i); - } - } else if (rawArray[i] != null) { - if (init) { - if (doc) { - selected || (selected = scopePaths(this, doc.$__.selected, init)); - } else { - selected = true; - } - - subdoc = new Constructor(null, value, initDocumentOptions, selected, i); - rawArray[i] = subdoc.$init(rawArray[i]); - } else { - if (prev && typeof prev.id === 'function') { - subdoc = prev.id(rawArray[i]._id); - } - - if (prev && subdoc && utils.deepEqual(subdoc.toObject(_toObjectOptions), rawArray[i])) { - // handle resetting doc with existing id and same data - subdoc.set(rawArray[i]); // if set() is hooked it will have no return value - // see gh-746 - - rawArray[i] = subdoc; - } else { - try { - subdoc = new Constructor(rawArray[i], value, undefined, undefined, i); // if set() is hooked it will have no return value - // see gh-746 - - rawArray[i] = subdoc; - } catch (error) { - throw new CastError('embedded', rawArray[i], value[arrayPathSymbol], error, this); - } - } - } - } - } - - return value; -}; -/*! - * ignore - */ - - -DocumentArrayPath.prototype.clone = function () { - var options = Object.assign({}, this.options); - var schematype = new this.constructor(this.path, this.schema, options, this.schemaOptions); - schematype.validators = this.validators.slice(); - - if (this.requiredValidator !== undefined) { - schematype.requiredValidator = this.requiredValidator; - } - - schematype.Constructor.discriminators = Object.assign({}, this.Constructor.discriminators); - return schematype; -}; -/*! - * ignore - */ - - -DocumentArrayPath.prototype.applyGetters = function (value, scope) { - return SchemaType.prototype.applyGetters.call(this, value, scope); -}; -/*! - * Scopes paths selected in a query to this array. - * Necessary for proper default application of subdocument values. - * - * @param {DocumentArrayPath} array - the array to scope `fields` paths - * @param {Object|undefined} fields - the root fields selected in the query - * @param {Boolean|undefined} init - if we are being created part of a query result - */ - - -function scopePaths(array, fields, init) { - if (!(init && fields)) { - return undefined; - } - - var path = array.path + '.'; - var keys = Object.keys(fields); - var i = keys.length; - var selected = {}; - var hasKeys; - var key; - var sub; - - while (i--) { - key = keys[i]; - - if (key.startsWith(path)) { - sub = key.substring(path.length); - - if (sub === '$') { - continue; - } - - if (sub.startsWith('$.')) { - sub = sub.substring(2); - } - - hasKeys || (hasKeys = true); - selected[sub] = fields[key]; - } - } - - return hasKeys && selected || undefined; -} -/** - * Sets a default option for all DocumentArray instances. - * - * #### Example: - * - * // Make all numbers have option `min` equal to 0. - * mongoose.Schema.DocumentArray.set('_id', false); - * - * @param {String} option - The option you'd like to set the value for - * @param {*} value - value for option - * @return {undefined} - * @function set - * @static - * @api public - */ - - -DocumentArrayPath.defaultOptions = {}; -DocumentArrayPath.set = SchemaType.set; -/*! - * Module exports. - */ - -module.exports = DocumentArrayPath; - -/***/ }), - -/***/ 5251: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; -/*! - * Module exports. - */ - - -exports.String = __webpack_require__(6542); -exports.Number = __webpack_require__(1751); -exports.Boolean = __webpack_require__(6470); -exports.DocumentArray = __webpack_require__(4504); -exports.Subdocument = __webpack_require__(3617); -exports.Array = __webpack_require__(94); -exports.Buffer = __webpack_require__(8800); -exports.Date = __webpack_require__(6535); -exports.ObjectId = __webpack_require__(7116); -exports.Mixed = __webpack_require__(3861); -exports.Decimal128 = exports.Decimal = __webpack_require__(6621); -exports.Map = __webpack_require__(71); // alias - -exports.Oid = exports.ObjectId; -exports.Object = exports.Mixed; -exports.Bool = exports.Boolean; -exports.ObjectID = exports.ObjectId; - -/***/ }), - -/***/ 71: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -/*! - * ignore - */ - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } - -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } - -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } - -function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); } - -function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -var MongooseMap = __webpack_require__(3828); - -var SchemaMapOptions = __webpack_require__(8227); - -var SchemaType = __webpack_require__(4289); -/*! - * ignore - */ - - -var Map = /*#__PURE__*/function (_SchemaType) { - _inherits(Map, _SchemaType); - - var _super = _createSuper(Map); - - function Map(key, options) { - var _this; - - _classCallCheck(this, Map); - - _this = _super.call(this, key, options, 'Map'); - _this.$isSchemaMap = true; - return _this; - } - - _createClass(Map, [{ - key: "set", - value: function set(option, value) { - return SchemaType.set(option, value); - } - }, { - key: "cast", - value: function cast(val, doc, init) { - if (val instanceof MongooseMap) { - return val; - } - - var path = this.path; - - if (init) { - var map = new MongooseMap({}, path, doc, this.$__schemaType); - - if (val instanceof __webpack_require__.g.Map) { - var _iterator = _createForOfIteratorHelper(val.keys()), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var key = _step.value; - - var _val = val.get(key); - - if (_val == null) { - _val = map.$__schemaType._castNullish(_val); - } else { - _val = map.$__schemaType.cast(_val, doc, true, null, { - path: path + '.' + key - }); - } - - map.$init(key, _val); - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - } else { - for (var _i = 0, _Object$keys = Object.keys(val); _i < _Object$keys.length; _i++) { - var _key = _Object$keys[_i]; - var _val2 = val[_key]; - - if (_val2 == null) { - _val2 = map.$__schemaType._castNullish(_val2); - } else { - _val2 = map.$__schemaType.cast(_val2, doc, true, null, { - path: path + '.' + _key - }); - } - - map.$init(_key, _val2); - } - } - - return map; - } - - return new MongooseMap(val, path, doc, this.$__schemaType); - } - }, { - key: "clone", - value: function clone() { - var schematype = _get(_getPrototypeOf(Map.prototype), "clone", this).call(this); - - if (this.$__schemaType != null) { - schematype.$__schemaType = this.$__schemaType.clone(); - } - - return schematype; - } - }]); - - return Map; -}(SchemaType); -/** - * This schema type's name, to defend against minifiers that mangle - * function names. - * - * @api public - */ - - -Map.schemaName = 'Map'; -Map.prototype.OptionsConstructor = SchemaMapOptions; -Map.defaultOptions = {}; -module.exports = Map; - -/***/ }), - -/***/ 3861: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/*! - * Module dependencies. - */ - - -var SchemaType = __webpack_require__(4289); - -var symbols = __webpack_require__(8107); - -var isObject = __webpack_require__(5721); - -var utils = __webpack_require__(6872); -/** - * Mixed SchemaType constructor. - * - * @param {String} path - * @param {Object} options - * @inherits SchemaType - * @api public - */ - - -function Mixed(path, options) { - if (options && options["default"]) { - var def = options["default"]; - - if (Array.isArray(def) && def.length === 0) { - // make sure empty array defaults are handled - options["default"] = Array; - } else if (!options.shared && isObject(def) && Object.keys(def).length === 0) { - // prevent odd "shared" objects between documents - options["default"] = function () { - return {}; - }; - } - } - - SchemaType.call(this, path, options, 'Mixed'); - this[symbols.schemaMixedSymbol] = true; -} -/** - * This schema type's name, to defend against minifiers that mangle - * function names. - * - * @api public - */ - - -Mixed.schemaName = 'Mixed'; -Mixed.defaultOptions = {}; -/*! - * Inherits from SchemaType. - */ - -Mixed.prototype = Object.create(SchemaType.prototype); -Mixed.prototype.constructor = Mixed; -/** - * Attaches a getter for all Mixed paths. - * - * #### Example: - * - * // Hide the 'hidden' path - * mongoose.Schema.Mixed.get(v => Object.assign({}, v, { hidden: null })); - * - * const Model = mongoose.model('Test', new Schema({ test: {} })); - * new Model({ test: { hidden: 'Secret!' } }).test.hidden; // null - * - * @param {Function} getter - * @return {this} - * @function get - * @static - * @api public - */ - -Mixed.get = SchemaType.get; -/** - * Sets a default option for all Mixed instances. - * - * #### Example: - * - * // Make all mixed instances have `required` of true by default. - * mongoose.Schema.Mixed.set('required', true); - * - * const User = mongoose.model('User', new Schema({ test: mongoose.Mixed })); - * new User({ }).validateSync().errors.test.message; // Path `test` is required. - * - * @param {String} option - The option you'd like to set the value for - * @param {*} value - value for option - * @return {undefined} - * @function set - * @static - * @api public - */ - -Mixed.set = SchemaType.set; -/** - * Casts `val` for Mixed. - * - * _this is a no-op_ - * - * @param {Object} value to cast - * @api private - */ - -Mixed.prototype.cast = function (val) { - if (val instanceof Error) { - return utils.errorToPOJO(val); - } - - return val; -}; -/** - * Casts contents for queries. - * - * @param {String} $cond - * @param {any} [val] - * @api private - */ - - -Mixed.prototype.castForQuery = function ($cond, val) { - if (arguments.length === 2) { - return val; - } - - return $cond; -}; -/*! - * Module exports. - */ - - -module.exports = Mixed; - -/***/ }), - -/***/ 1751: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -/*! - * Module requirements. - */ - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var MongooseError = __webpack_require__(4888); - -var SchemaNumberOptions = __webpack_require__(8491); - -var SchemaType = __webpack_require__(4289); - -var castNumber = __webpack_require__(3065); - -var handleBitwiseOperator = __webpack_require__(4282); - -var utils = __webpack_require__(6872); - -var CastError = SchemaType.CastError; -/** - * Number SchemaType constructor. - * - * @param {String} key - * @param {Object} options - * @inherits SchemaType - * @api public - */ - -function SchemaNumber(key, options) { - SchemaType.call(this, key, options, 'Number'); -} -/** - * Attaches a getter for all Number instances. - * - * #### Example: - * - * // Make all numbers round down - * mongoose.Number.get(function(v) { return Math.floor(v); }); - * - * const Model = mongoose.model('Test', new Schema({ test: Number })); - * new Model({ test: 3.14 }).test; // 3 - * - * @param {Function} getter - * @return {this} - * @function get - * @static - * @api public - */ - - -SchemaNumber.get = SchemaType.get; -/** - * Sets a default option for all Number instances. - * - * #### Example: - * - * // Make all numbers have option `min` equal to 0. - * mongoose.Schema.Number.set('min', 0); - * - * const Order = mongoose.model('Order', new Schema({ amount: Number })); - * new Order({ amount: -10 }).validateSync().errors.amount.message; // Path `amount` must be larger than 0. - * - * @param {String} option - The option you'd like to set the value for - * @param {*} value - value for option - * @return {undefined} - * @function set - * @static - * @api public - */ - -SchemaNumber.set = SchemaType.set; -/*! - * ignore - */ - -SchemaNumber._cast = castNumber; -/** - * Get/set the function used to cast arbitrary values to numbers. - * - * #### Example: - * - * // Make Mongoose cast empty strings '' to 0 for paths declared as numbers - * const original = mongoose.Number.cast(); - * mongoose.Number.cast(v => { - * if (v === '') { return 0; } - * return original(v); - * }); - * - * // Or disable casting entirely - * mongoose.Number.cast(false); - * - * @param {Function} caster - * @return {Function} - * @function get - * @static - * @api public - */ - -SchemaNumber.cast = function cast(caster) { - if (arguments.length === 0) { - return this._cast; - } - - if (caster === false) { - caster = this._defaultCaster; - } - - this._cast = caster; - return this._cast; -}; -/*! - * ignore - */ - - -SchemaNumber._defaultCaster = function (v) { - if (typeof v !== 'number') { - throw new Error(); - } - - return v; -}; -/** - * This schema type's name, to defend against minifiers that mangle - * function names. - * - * @api public - */ - - -SchemaNumber.schemaName = 'Number'; -SchemaNumber.defaultOptions = {}; -/*! - * Inherits from SchemaType. - */ - -SchemaNumber.prototype = Object.create(SchemaType.prototype); -SchemaNumber.prototype.constructor = SchemaNumber; -SchemaNumber.prototype.OptionsConstructor = SchemaNumberOptions; -/*! - * ignore - */ - -SchemaNumber._checkRequired = function (v) { - return typeof v === 'number' || v instanceof Number; -}; -/** - * Override the function the required validator uses to check whether a string - * passes the `required` check. - * - * @param {Function} fn - * @return {Function} - * @function checkRequired - * @static - * @api public - */ - - -SchemaNumber.checkRequired = SchemaType.checkRequired; -/** - * Check if the given value satisfies a required validator. - * - * @param {Any} value - * @param {Document} doc - * @return {Boolean} - * @api public - */ - -SchemaNumber.prototype.checkRequired = function checkRequired(value, doc) { - if (_typeof(value) === 'object' && SchemaType._isRef(this, value, doc, true)) { - return value != null; - } // `require('util').inherits()` does **not** copy static properties, and - // plugins like mongoose-float use `inherits()` for pre-ES6. - - - var _checkRequired = typeof this.constructor.checkRequired === 'function' ? this.constructor.checkRequired() : SchemaNumber.checkRequired(); - - return _checkRequired(value); -}; -/** - * Sets a minimum number validator. - * - * #### Example: - * - * const s = new Schema({ n: { type: Number, min: 10 }) - * const M = db.model('M', s) - * const m = new M({ n: 9 }) - * m.save(function (err) { - * console.error(err) // validator error - * m.n = 10; - * m.save() // success - * }) - * - * // custom error messages - * // We can also use the special {MIN} token which will be replaced with the invalid value - * const min = [10, 'The value of path `{PATH}` ({VALUE}) is beneath the limit ({MIN}).']; - * const schema = new Schema({ n: { type: Number, min: min }) - * const M = mongoose.model('Measurement', schema); - * const s= new M({ n: 4 }); - * s.validate(function (err) { - * console.log(String(err)) // ValidationError: The value of path `n` (4) is beneath the limit (10). - * }) - * - * @param {Number} value minimum number - * @param {String} [message] optional custom error message - * @return {SchemaType} this - * @see Customized Error Messages #error_messages_MongooseError-messages - * @api public - */ - - -SchemaNumber.prototype.min = function (value, message) { - if (this.minValidator) { - this.validators = this.validators.filter(function (v) { - return v.validator !== this.minValidator; - }, this); - } - - if (value !== null && value !== undefined) { - var msg = message || MongooseError.messages.Number.min; - msg = msg.replace(/{MIN}/, value); - this.validators.push({ - validator: this.minValidator = function (v) { - return v == null || v >= value; - }, - message: msg, - type: 'min', - min: value - }); - } - - return this; -}; -/** - * Sets a maximum number validator. - * - * #### Example: - * - * const s = new Schema({ n: { type: Number, max: 10 }) - * const M = db.model('M', s) - * const m = new M({ n: 11 }) - * m.save(function (err) { - * console.error(err) // validator error - * m.n = 10; - * m.save() // success - * }) - * - * // custom error messages - * // We can also use the special {MAX} token which will be replaced with the invalid value - * const max = [10, 'The value of path `{PATH}` ({VALUE}) exceeds the limit ({MAX}).']; - * const schema = new Schema({ n: { type: Number, max: max }) - * const M = mongoose.model('Measurement', schema); - * const s= new M({ n: 4 }); - * s.validate(function (err) { - * console.log(String(err)) // ValidationError: The value of path `n` (4) exceeds the limit (10). - * }) - * - * @param {Number} maximum number - * @param {String} [message] optional custom error message - * @return {SchemaType} this - * @see Customized Error Messages #error_messages_MongooseError-messages - * @api public - */ - - -SchemaNumber.prototype.max = function (value, message) { - if (this.maxValidator) { - this.validators = this.validators.filter(function (v) { - return v.validator !== this.maxValidator; - }, this); - } - - if (value !== null && value !== undefined) { - var msg = message || MongooseError.messages.Number.max; - msg = msg.replace(/{MAX}/, value); - this.validators.push({ - validator: this.maxValidator = function (v) { - return v == null || v <= value; - }, - message: msg, - type: 'max', - max: value - }); - } - - return this; -}; -/** - * Sets a enum validator - * - * #### Example: - * - * const s = new Schema({ n: { type: Number, enum: [1, 2, 3] }); - * const M = db.model('M', s); - * - * const m = new M({ n: 4 }); - * await m.save(); // throws validation error - * - * m.n = 3; - * await m.save(); // succeeds - * - * @param {Array} values allowed values - * @param {String} [message] optional custom error message - * @return {SchemaType} this - * @see Customized Error Messages #error_messages_MongooseError-messages - * @api public - */ - - -SchemaNumber.prototype["enum"] = function (values, message) { - if (this.enumValidator) { - this.validators = this.validators.filter(function (v) { - return v.validator !== this.enumValidator; - }, this); - } - - if (!Array.isArray(values)) { - var isObjectSyntax = utils.isPOJO(values) && values.values != null; - - if (isObjectSyntax) { - message = values.message; - values = values.values; - } else if (typeof values === 'number') { - values = Array.prototype.slice.call(arguments); - message = null; - } - - if (utils.isPOJO(values)) { - values = Object.values(values); - } - - message = message || MongooseError.messages.Number["enum"]; - } - - message = message == null ? MongooseError.messages.Number["enum"] : message; - - this.enumValidator = function (v) { - return v == null || values.indexOf(v) !== -1; - }; - - this.validators.push({ - validator: this.enumValidator, - message: message, - type: 'enum', - enumValues: values - }); - return this; -}; -/** - * Casts to number - * - * @param {Object} value value to cast - * @param {Document} doc document that triggers the casting - * @param {Boolean} init - * @api private - */ - - -SchemaNumber.prototype.cast = function (value, doc, init) { - if (typeof value !== 'number' && SchemaType._isRef(this, value, doc, init)) { - if (value == null || utils.isNonBuiltinObject(value)) { - return this._castRef(value, doc, init); - } - } - - var val = value && typeof value._id !== 'undefined' ? value._id : // documents - value; - var castNumber; - - if (typeof this._castFunction === 'function') { - castNumber = this._castFunction; - } else if (typeof this.constructor.cast === 'function') { - castNumber = this.constructor.cast(); - } else { - castNumber = SchemaNumber.cast(); - } - - try { - return castNumber(val); - } catch (err) { - throw new CastError('Number', val, this.path, err, this); - } -}; -/*! - * ignore - */ - - -function handleSingle(val) { - return this.cast(val); -} - -function handleArray(val) { - var _this = this; - - if (!Array.isArray(val)) { - return [this.cast(val)]; - } - - return val.map(function (m) { - return _this.cast(m); - }); -} - -SchemaNumber.prototype.$conditionalHandlers = utils.options(SchemaType.prototype.$conditionalHandlers, { - $bitsAllClear: handleBitwiseOperator, - $bitsAnyClear: handleBitwiseOperator, - $bitsAllSet: handleBitwiseOperator, - $bitsAnySet: handleBitwiseOperator, - $gt: handleSingle, - $gte: handleSingle, - $lt: handleSingle, - $lte: handleSingle, - $mod: handleArray -}); -/** - * Casts contents for queries. - * - * @param {String} $conditional - * @param {any} [value] - * @api private - */ - -SchemaNumber.prototype.castForQuery = function ($conditional, val) { - var handler; - - if (arguments.length === 2) { - handler = this.$conditionalHandlers[$conditional]; - - if (!handler) { - throw new CastError('number', val, this.path, null, this); - } - - return handler.call(this, val); - } - - val = this._castForQuery($conditional); - return val; -}; -/*! - * Module exports. - */ - - -module.exports = SchemaNumber; - -/***/ }), - -/***/ 7116: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/*! - * Module dependencies. - */ - - -var SchemaObjectIdOptions = __webpack_require__(8172); - -var SchemaType = __webpack_require__(4289); - -var castObjectId = __webpack_require__(4731); - -var getConstructorName = __webpack_require__(1981); - -var oid = __webpack_require__(6079); - -var isBsonType = __webpack_require__(1563); - -var utils = __webpack_require__(6872); - -var CastError = SchemaType.CastError; -var Document; -/** - * ObjectId SchemaType constructor. - * - * @param {String} key - * @param {Object} options - * @inherits SchemaType - * @api public - */ - -function ObjectId(key, options) { - var isKeyHexStr = typeof key === 'string' && key.length === 24 && /^[a-f0-9]+$/i.test(key); - var suppressWarning = options && options.suppressWarning; - - if ((isKeyHexStr || typeof key === 'undefined') && !suppressWarning) { - utils.warn('mongoose: To create a new ObjectId please try ' + '`Mongoose.Types.ObjectId` instead of using ' + '`Mongoose.Schema.ObjectId`. Set the `suppressWarning` option if ' + 'you\'re trying to create a hex char path in your schema.'); - } - - SchemaType.call(this, key, options, 'ObjectID'); -} -/** - * This schema type's name, to defend against minifiers that mangle - * function names. - * - * @api public - */ - - -ObjectId.schemaName = 'ObjectId'; -ObjectId.defaultOptions = {}; -/*! - * Inherits from SchemaType. - */ - -ObjectId.prototype = Object.create(SchemaType.prototype); -ObjectId.prototype.constructor = ObjectId; -ObjectId.prototype.OptionsConstructor = SchemaObjectIdOptions; -/** - * Attaches a getter for all ObjectId instances - * - * #### Example: - * - * // Always convert to string when getting an ObjectId - * mongoose.ObjectId.get(v => v.toString()); - * - * const Model = mongoose.model('Test', new Schema({})); - * typeof (new Model({})._id); // 'string' - * - * @param {Function} getter - * @return {this} - * @function get - * @static - * @api public - */ - -ObjectId.get = SchemaType.get; -/** - * Sets a default option for all ObjectId instances. - * - * #### Example: - * - * // Make all object ids have option `required` equal to true. - * mongoose.Schema.ObjectId.set('required', true); - * - * const Order = mongoose.model('Order', new Schema({ userId: ObjectId })); - * new Order({ }).validateSync().errors.userId.message; // Path `userId` is required. - * - * @param {String} option - The option you'd like to set the value for - * @param {*} value - value for option - * @return {undefined} - * @function set - * @static - * @api public - */ - -ObjectId.set = SchemaType.set; -/** - * Adds an auto-generated ObjectId default if turnOn is true. - * @param {Boolean} turnOn auto generated ObjectId defaults - * @api public - * @return {SchemaType} this - */ - -ObjectId.prototype.auto = function (turnOn) { - if (turnOn) { - this["default"](defaultId); - this.set(resetId); - } - - return this; -}; -/*! - * ignore - */ - - -ObjectId._checkRequired = function (v) { - return isBsonType(v, 'ObjectID'); -}; -/*! - * ignore - */ - - -ObjectId._cast = castObjectId; -/** - * Get/set the function used to cast arbitrary values to objectids. - * - * #### Example: - * - * // Make Mongoose only try to cast length 24 strings. By default, any 12 - * // char string is a valid ObjectId. - * const original = mongoose.ObjectId.cast(); - * mongoose.ObjectId.cast(v => { - * assert.ok(typeof v !== 'string' || v.length === 24); - * return original(v); - * }); - * - * // Or disable casting entirely - * mongoose.ObjectId.cast(false); - * - * @param {Function} caster - * @return {Function} - * @function get - * @static - * @api public - */ - -ObjectId.cast = function cast(caster) { - if (arguments.length === 0) { - return this._cast; - } - - if (caster === false) { - caster = this._defaultCaster; - } - - this._cast = caster; - return this._cast; -}; -/*! - * ignore - */ - - -ObjectId._defaultCaster = function (v) { - if (!isBsonType(v, 'ObjectID')) { - throw new Error(v + ' is not an instance of ObjectId'); - } - - return v; -}; -/** - * Override the function the required validator uses to check whether a string - * passes the `required` check. - * - * #### Example: - * - * // Allow empty strings to pass `required` check - * mongoose.Schema.Types.String.checkRequired(v => v != null); - * - * const M = mongoose.model({ str: { type: String, required: true } }); - * new M({ str: '' }).validateSync(); // `null`, validation passes! - * - * @param {Function} fn - * @return {Function} - * @function checkRequired - * @static - * @api public - */ - - -ObjectId.checkRequired = SchemaType.checkRequired; -/** - * Check if the given value satisfies a required validator. - * - * @param {Any} value - * @param {Document} doc - * @return {Boolean} - * @api public - */ - -ObjectId.prototype.checkRequired = function checkRequired(value, doc) { - if (SchemaType._isRef(this, value, doc, true)) { - return !!value; - } // `require('util').inherits()` does **not** copy static properties, and - // plugins like mongoose-float use `inherits()` for pre-ES6. - - - var _checkRequired = typeof this.constructor.checkRequired === 'function' ? this.constructor.checkRequired() : ObjectId.checkRequired(); - - return _checkRequired(value); -}; -/** - * Casts to ObjectId - * - * @param {Object} value - * @param {Object} doc - * @param {Boolean} init whether this is an initialization cast - * @api private - */ - - -ObjectId.prototype.cast = function (value, doc, init) { - if (!isBsonType(value, 'ObjectID') && SchemaType._isRef(this, value, doc, init)) { - // wait! we may need to cast this to a document - if ((getConstructorName(value) || '').toLowerCase() === 'objectid') { - return new oid(value.toHexString()); - } - - if (value == null || utils.isNonBuiltinObject(value)) { - return this._castRef(value, doc, init); - } - } - - var castObjectId; - - if (typeof this._castFunction === 'function') { - castObjectId = this._castFunction; - } else if (typeof this.constructor.cast === 'function') { - castObjectId = this.constructor.cast(); - } else { - castObjectId = ObjectId.cast(); - } - - try { - return castObjectId(value); - } catch (error) { - throw new CastError('ObjectId', value, this.path, error, this); - } -}; -/*! - * ignore - */ - - -function handleSingle(val) { - return this.cast(val); -} - -ObjectId.prototype.$conditionalHandlers = utils.options(SchemaType.prototype.$conditionalHandlers, { - $gt: handleSingle, - $gte: handleSingle, - $lt: handleSingle, - $lte: handleSingle -}); -/*! - * ignore - */ - -function defaultId() { - return new oid(); -} - -defaultId.$runBeforeSetters = true; - -function resetId(v) { - Document || (Document = __webpack_require__(8727)); - - if (this instanceof Document) { - if (v === void 0) { - var _v = new oid(); - - return _v; - } - } - - return v; -} -/*! - * Module exports. - */ - - -module.exports = ObjectId; - -/***/ }), - -/***/ 4282: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/* provided dependency */ var Buffer = __webpack_require__(365)["Buffer"]; -/*! - * Module requirements. - */ - - -var CastError = __webpack_require__(1795); -/*! - * ignore - */ - - -function handleBitwiseOperator(val) { - var _this = this; - - if (Array.isArray(val)) { - return val.map(function (v) { - return _castNumber(_this.path, v); - }); - } else if (Buffer.isBuffer(val)) { - return val; - } // Assume trying to cast to number - - - return _castNumber(_this.path, val); -} -/*! - * ignore - */ - - -function _castNumber(path, num) { - var v = Number(num); - - if (isNaN(v)) { - throw new CastError('number', num, path); - } - - return v; -} - -module.exports = handleBitwiseOperator; - -/***/ }), - -/***/ 8702: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var castBoolean = __webpack_require__(6670); -/*! - * ignore - */ - - -module.exports = function (val) { - var path = this != null ? this.path : null; - return castBoolean(val, path); -}; - -/***/ }), - -/***/ 5008: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; -/*! - * Module requirements. - */ - - -var castArraysOfNumbers = (__webpack_require__(1521)/* .castArraysOfNumbers */ .i); - -var castToNumber = (__webpack_require__(1521)/* .castToNumber */ .W); -/*! - * ignore - */ - - -exports.cast$geoIntersects = cast$geoIntersects; -exports.cast$near = cast$near; -exports.cast$within = cast$within; - -function cast$near(val) { - var SchemaArray = __webpack_require__(94); - - if (Array.isArray(val)) { - castArraysOfNumbers(val, this); - return val; - } - - _castMinMaxDistance(this, val); - - if (val && val.$geometry) { - return cast$geometry(val, this); - } - - if (!Array.isArray(val)) { - throw new TypeError('$near must be either an array or an object ' + 'with a $geometry property'); - } - - return SchemaArray.prototype.castForQuery.call(this, val); -} - -function cast$geometry(val, self) { - switch (val.$geometry.type) { - case 'Polygon': - case 'LineString': - case 'Point': - castArraysOfNumbers(val.$geometry.coordinates, self); - break; - - default: - // ignore unknowns - break; - } - - _castMinMaxDistance(self, val); - - return val; -} - -function cast$within(val) { - var _this = this; - - _castMinMaxDistance(this, val); - - if (val.$box || val.$polygon) { - var type = val.$box ? '$box' : '$polygon'; - val[type].forEach(function (arr) { - if (!Array.isArray(arr)) { - var msg = 'Invalid $within $box argument. ' + 'Expected an array, received ' + arr; - throw new TypeError(msg); - } - - arr.forEach(function (v, i) { - arr[i] = castToNumber.call(_this, v); - }); - }); - } else if (val.$center || val.$centerSphere) { - var _type = val.$center ? '$center' : '$centerSphere'; - - val[_type].forEach(function (item, i) { - if (Array.isArray(item)) { - item.forEach(function (v, j) { - item[j] = castToNumber.call(_this, v); - }); - } else { - val[_type][i] = castToNumber.call(_this, item); - } - }); - } else if (val.$geometry) { - cast$geometry(val, this); - } - - return val; -} - -function cast$geoIntersects(val) { - var geo = val.$geometry; - - if (!geo) { - return; - } - - cast$geometry(val, this); - return val; -} - -function _castMinMaxDistance(self, val) { - if (val.$maxDistance) { - val.$maxDistance = castToNumber.call(self, val.$maxDistance); - } - - if (val.$minDistance) { - val.$minDistance = castToNumber.call(self, val.$minDistance); - } -} - -/***/ }), - -/***/ 1521: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - -/*! - * Module requirements. - */ - -var SchemaNumber = __webpack_require__(1751); -/*! - * @ignore - */ - - -exports.W = castToNumber; -exports.i = castArraysOfNumbers; -/*! - * @ignore - */ - -function castToNumber(val) { - return SchemaNumber.cast()(val); -} - -function castArraysOfNumbers(arr, self) { - arr.forEach(function (v, i) { - if (Array.isArray(v)) { - castArraysOfNumbers(v, self); - } else { - arr[i] = castToNumber.call(self, v); - } - }); -} - -/***/ }), - -/***/ 6495: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var CastError = __webpack_require__(1795); - -var castBoolean = __webpack_require__(6670); - -var castString = __webpack_require__(2417); -/*! - * Casts val to an object suitable for `$text`. Throws an error if the object - * can't be casted. - * - * @param {Any} val value to cast - * @param {String} [path] path to associate with any errors that occured - * @return {Object} casted object - * @see https://docs.mongodb.com/manual/reference/operator/query/text/ - * @api private - */ - - -module.exports = function (val, path) { - if (val == null || _typeof(val) !== 'object') { - throw new CastError('$text', val, path); - } - - if (val.$search != null) { - val.$search = castString(val.$search, path + '.$search'); - } - - if (val.$language != null) { - val.$language = castString(val.$language, path + '.$language'); - } - - if (val.$caseSensitive != null) { - val.$caseSensitive = castBoolean(val.$caseSensitive, path + '.$castSensitive'); - } - - if (val.$diacriticSensitive != null) { - val.$diacriticSensitive = castBoolean(val.$diacriticSensitive, path + '.$diacriticSensitive'); - } - - return val; -}; - -/***/ }), - -/***/ 3053: -/***/ ((module) => { - -"use strict"; - -/*! - * ignore - */ - -module.exports = function (val) { - if (Array.isArray(val)) { - if (!val.every(function (v) { - return typeof v === 'number' || typeof v === 'string'; - })) { - throw new Error('$type array values must be strings or numbers'); - } - - return val; - } - - if (typeof val !== 'number' && typeof val !== 'string') { - throw new Error('$type parameter must be number, string, or array of numbers and strings'); - } - - return val; -}; - -/***/ }), - -/***/ 6542: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -/*! - * Module dependencies. - */ - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } - -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } - -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - -var SchemaType = __webpack_require__(4289); - -var MongooseError = __webpack_require__(4888); - -var SchemaStringOptions = __webpack_require__(3209); - -var castString = __webpack_require__(2417); - -var utils = __webpack_require__(6872); - -var isBsonType = __webpack_require__(1563); - -var CastError = SchemaType.CastError; -/** - * String SchemaType constructor. - * - * @param {String} key - * @param {Object} options - * @inherits SchemaType - * @api public - */ - -function SchemaString(key, options) { - this.enumValues = []; - this.regExp = null; - SchemaType.call(this, key, options, 'String'); -} -/** - * This schema type's name, to defend against minifiers that mangle - * function names. - * - * @api public - */ - - -SchemaString.schemaName = 'String'; -SchemaString.defaultOptions = {}; -/*! - * Inherits from SchemaType. - */ - -SchemaString.prototype = Object.create(SchemaType.prototype); -SchemaString.prototype.constructor = SchemaString; -Object.defineProperty(SchemaString.prototype, 'OptionsConstructor', { - configurable: false, - enumerable: false, - writable: false, - value: SchemaStringOptions -}); -/*! - * ignore - */ - -SchemaString._cast = castString; -/** - * Get/set the function used to cast arbitrary values to strings. - * - * #### Example: - * - * // Throw an error if you pass in an object. Normally, Mongoose allows - * // objects with custom `toString()` functions. - * const original = mongoose.Schema.Types.String.cast(); - * mongoose.Schema.Types.String.cast(v => { - * assert.ok(v == null || typeof v !== 'object'); - * return original(v); - * }); - * - * // Or disable casting entirely - * mongoose.Schema.Types.String.cast(false); - * - * @param {Function} caster - * @return {Function} - * @function get - * @static - * @api public - */ - -SchemaString.cast = function cast(caster) { - if (arguments.length === 0) { - return this._cast; - } - - if (caster === false) { - caster = this._defaultCaster; - } - - this._cast = caster; - return this._cast; -}; -/*! - * ignore - */ - - -SchemaString._defaultCaster = function (v) { - if (v != null && typeof v !== 'string') { - throw new Error(); - } - - return v; -}; -/** - * Attaches a getter for all String instances. - * - * #### Example: - * - * // Make all numbers round down - * mongoose.Schema.String.get(v => v.toLowerCase()); - * - * const Model = mongoose.model('Test', new Schema({ test: String })); - * new Model({ test: 'FOO' }).test; // 'foo' - * - * @param {Function} getter - * @return {this} - * @function get - * @static - * @api public - */ - - -SchemaString.get = SchemaType.get; -/** - * Sets a default option for all String instances. - * - * #### Example: - * - * // Make all strings have option `trim` equal to true. - * mongoose.Schema.String.set('trim', true); - * - * const User = mongoose.model('User', new Schema({ name: String })); - * new User({ name: ' John Doe ' }).name; // 'John Doe' - * - * @param {String} option - The option you'd like to set the value for - * @param {*} value - value for option - * @return {undefined} - * @function set - * @static - * @api public - */ - -SchemaString.set = SchemaType.set; -/*! - * ignore - */ - -SchemaString._checkRequired = function (v) { - return (v instanceof String || typeof v === 'string') && v.length; -}; -/** - * Override the function the required validator uses to check whether a string - * passes the `required` check. - * - * #### Example: - * - * // Allow empty strings to pass `required` check - * mongoose.Schema.Types.String.checkRequired(v => v != null); - * - * const M = mongoose.model({ str: { type: String, required: true } }); - * new M({ str: '' }).validateSync(); // `null`, validation passes! - * - * @param {Function} fn - * @return {Function} - * @function checkRequired - * @static - * @api public - */ - - -SchemaString.checkRequired = SchemaType.checkRequired; -/** - * Adds an enum validator - * - * #### Example: - * - * const states = ['opening', 'open', 'closing', 'closed'] - * const s = new Schema({ state: { type: String, enum: states }}) - * const M = db.model('M', s) - * const m = new M({ state: 'invalid' }) - * m.save(function (err) { - * console.error(String(err)) // ValidationError: `invalid` is not a valid enum value for path `state`. - * m.state = 'open' - * m.save(callback) // success - * }) - * - * // or with custom error messages - * const enum = { - * values: ['opening', 'open', 'closing', 'closed'], - * message: 'enum validator failed for path `{PATH}` with value `{VALUE}`' - * } - * const s = new Schema({ state: { type: String, enum: enum }) - * const M = db.model('M', s) - * const m = new M({ state: 'invalid' }) - * m.save(function (err) { - * console.error(String(err)) // ValidationError: enum validator failed for path `state` with value `invalid` - * m.state = 'open' - * m.save(callback) // success - * }) - * - * @param {String|Object} [args...] enumeration values - * @return {SchemaType} this - * @see Customized Error Messages #error_messages_MongooseError-messages - * @api public - */ - -SchemaString.prototype["enum"] = function () { - if (this.enumValidator) { - this.validators = this.validators.filter(function (v) { - return v.validator !== this.enumValidator; - }, this); - this.enumValidator = false; - } - - if (arguments[0] === void 0 || arguments[0] === false) { - return this; - } - - var values; - var errorMessage; - - if (utils.isObject(arguments[0])) { - if (Array.isArray(arguments[0].values)) { - values = arguments[0].values; - errorMessage = arguments[0].message; - } else { - values = utils.object.vals(arguments[0]); - errorMessage = MongooseError.messages.String["enum"]; - } - } else { - values = arguments; - errorMessage = MongooseError.messages.String["enum"]; - } - - var _iterator = _createForOfIteratorHelper(values), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var value = _step.value; - - if (value !== undefined) { - this.enumValues.push(this.cast(value)); - } - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - var vals = this.enumValues; - - this.enumValidator = function (v) { - return undefined === v || ~vals.indexOf(v); - }; - - this.validators.push({ - validator: this.enumValidator, - message: errorMessage, - type: 'enum', - enumValues: vals - }); - return this; -}; -/** - * Adds a lowercase [setter](https://mongoosejs.com/docs/api.html#schematype_SchemaType-set). - * - * #### Example: - * - * const s = new Schema({ email: { type: String, lowercase: true }}) - * const M = db.model('M', s); - * const m = new M({ email: 'SomeEmail@example.COM' }); - * console.log(m.email) // someemail@example.com - * M.find({ email: 'SomeEmail@example.com' }); // Queries by 'someemail@example.com' - * - * Note that `lowercase` does **not** affect regular expression queries: - * - * #### Example: - * // Still queries for documents whose `email` matches the regular - * // expression /SomeEmail/. Mongoose does **not** convert the RegExp - * // to lowercase. - * M.find({ email: /SomeEmail/ }); - * - * @api public - * @return {SchemaType} this - */ - - -SchemaString.prototype.lowercase = function (shouldApply) { - var _this2 = this; - - if (arguments.length > 0 && !shouldApply) { - return this; - } - - return this.set(function (v) { - if (typeof v !== 'string') { - v = _this2.cast(v); - } - - if (v) { - return v.toLowerCase(); - } - - return v; - }); -}; -/** - * Adds an uppercase [setter](https://mongoosejs.com/docs/api.html#schematype_SchemaType-set). - * - * #### Example: - * - * const s = new Schema({ caps: { type: String, uppercase: true }}) - * const M = db.model('M', s); - * const m = new M({ caps: 'an example' }); - * console.log(m.caps) // AN EXAMPLE - * M.find({ caps: 'an example' }) // Matches documents where caps = 'AN EXAMPLE' - * - * Note that `uppercase` does **not** affect regular expression queries: - * - * #### Example: - * // Mongoose does **not** convert the RegExp to uppercase. - * M.find({ email: /an example/ }); - * - * @api public - * @return {SchemaType} this - */ - - -SchemaString.prototype.uppercase = function (shouldApply) { - var _this3 = this; - - if (arguments.length > 0 && !shouldApply) { - return this; - } - - return this.set(function (v) { - if (typeof v !== 'string') { - v = _this3.cast(v); - } - - if (v) { - return v.toUpperCase(); - } - - return v; - }); -}; -/** - * Adds a trim [setter](https://mongoosejs.com/docs/api.html#schematype_SchemaType-set). - * - * The string value will be [trimmed](https://masteringjs.io/tutorials/fundamentals/trim-string) when set. - * - * #### Example: - * - * const s = new Schema({ name: { type: String, trim: true }}); - * const M = db.model('M', s); - * const string = ' some name '; - * console.log(string.length); // 11 - * const m = new M({ name: string }); - * console.log(m.name.length); // 9 - * - * // Equivalent to `findOne({ name: string.trim() })` - * M.findOne({ name: string }); - * - * Note that `trim` does **not** affect regular expression queries: - * - * #### Example: - * // Mongoose does **not** trim whitespace from the RegExp. - * M.find({ name: / some name / }); - * - * @api public - * @return {SchemaType} this - */ - - -SchemaString.prototype.trim = function (shouldTrim) { - var _this4 = this; - - if (arguments.length > 0 && !shouldTrim) { - return this; - } - - return this.set(function (v) { - if (typeof v !== 'string') { - v = _this4.cast(v); - } - - if (v) { - return v.trim(); - } - - return v; - }); -}; -/** - * Sets a minimum length validator. - * - * #### Example: - * - * const schema = new Schema({ postalCode: { type: String, minlength: 5 }) - * const Address = db.model('Address', schema) - * const address = new Address({ postalCode: '9512' }) - * address.save(function (err) { - * console.error(err) // validator error - * address.postalCode = '95125'; - * address.save() // success - * }) - * - * // custom error messages - * // We can also use the special {MINLENGTH} token which will be replaced with the minimum allowed length - * const minlength = [5, 'The value of path `{PATH}` (`{VALUE}`) is shorter than the minimum allowed length ({MINLENGTH}).']; - * const schema = new Schema({ postalCode: { type: String, minlength: minlength }) - * const Address = mongoose.model('Address', schema); - * const address = new Address({ postalCode: '9512' }); - * address.validate(function (err) { - * console.log(String(err)) // ValidationError: The value of path `postalCode` (`9512`) is shorter than the minimum length (5). - * }) - * - * @param {Number} value minimum string length - * @param {String} [message] optional custom error message - * @return {SchemaType} this - * @see Customized Error Messages #error_messages_MongooseError-messages - * @api public - */ - - -SchemaString.prototype.minlength = function (value, message) { - if (this.minlengthValidator) { - this.validators = this.validators.filter(function (v) { - return v.validator !== this.minlengthValidator; - }, this); - } - - if (value !== null && value !== undefined) { - var msg = message || MongooseError.messages.String.minlength; - msg = msg.replace(/{MINLENGTH}/, value); - this.validators.push({ - validator: this.minlengthValidator = function (v) { - return v === null || v.length >= value; - }, - message: msg, - type: 'minlength', - minlength: value - }); - } - - return this; -}; - -SchemaString.prototype.minLength = SchemaString.prototype.minlength; -/** - * Sets a maximum length validator. - * - * #### Example: - * - * const schema = new Schema({ postalCode: { type: String, maxlength: 9 }) - * const Address = db.model('Address', schema) - * const address = new Address({ postalCode: '9512512345' }) - * address.save(function (err) { - * console.error(err) // validator error - * address.postalCode = '95125'; - * address.save() // success - * }) - * - * // custom error messages - * // We can also use the special {MAXLENGTH} token which will be replaced with the maximum allowed length - * const maxlength = [9, 'The value of path `{PATH}` (`{VALUE}`) exceeds the maximum allowed length ({MAXLENGTH}).']; - * const schema = new Schema({ postalCode: { type: String, maxlength: maxlength }) - * const Address = mongoose.model('Address', schema); - * const address = new Address({ postalCode: '9512512345' }); - * address.validate(function (err) { - * console.log(String(err)) // ValidationError: The value of path `postalCode` (`9512512345`) exceeds the maximum allowed length (9). - * }) - * - * @param {Number} value maximum string length - * @param {String} [message] optional custom error message - * @return {SchemaType} this - * @see Customized Error Messages #error_messages_MongooseError-messages - * @api public - */ - -SchemaString.prototype.maxlength = function (value, message) { - if (this.maxlengthValidator) { - this.validators = this.validators.filter(function (v) { - return v.validator !== this.maxlengthValidator; - }, this); - } - - if (value !== null && value !== undefined) { - var msg = message || MongooseError.messages.String.maxlength; - msg = msg.replace(/{MAXLENGTH}/, value); - this.validators.push({ - validator: this.maxlengthValidator = function (v) { - return v === null || v.length <= value; - }, - message: msg, - type: 'maxlength', - maxlength: value - }); - } - - return this; -}; - -SchemaString.prototype.maxLength = SchemaString.prototype.maxlength; -/** - * Sets a regexp validator. - * - * Any value that does not pass `regExp`.test(val) will fail validation. - * - * #### Example: - * - * const s = new Schema({ name: { type: String, match: /^a/ }}) - * const M = db.model('M', s) - * const m = new M({ name: 'I am invalid' }) - * m.validate(function (err) { - * console.error(String(err)) // "ValidationError: Path `name` is invalid (I am invalid)." - * m.name = 'apples' - * m.validate(function (err) { - * assert.ok(err) // success - * }) - * }) - * - * // using a custom error message - * const match = [ /\.html$/, "That file doesn't end in .html ({VALUE})" ]; - * const s = new Schema({ file: { type: String, match: match }}) - * const M = db.model('M', s); - * const m = new M({ file: 'invalid' }); - * m.validate(function (err) { - * console.log(String(err)) // "ValidationError: That file doesn't end in .html (invalid)" - * }) - * - * Empty strings, `undefined`, and `null` values always pass the match validator. If you require these values, enable the `required` validator also. - * - * const s = new Schema({ name: { type: String, match: /^a/, required: true }}) - * - * @param {RegExp} regExp regular expression to test against - * @param {String} [message] optional custom error message - * @return {SchemaType} this - * @see Customized Error Messages #error_messages_MongooseError-messages - * @api public - */ - -SchemaString.prototype.match = function match(regExp, message) { - // yes, we allow multiple match validators - var msg = message || MongooseError.messages.String.match; - - var matchValidator = function matchValidator(v) { - if (!regExp) { - return false; - } // In case RegExp happens to have `/g` flag set, we need to reset the - // `lastIndex`, otherwise `match` will intermittently fail. - - - regExp.lastIndex = 0; - var ret = v != null && v !== '' ? regExp.test(v) : true; - return ret; - }; - - this.validators.push({ - validator: matchValidator, - message: msg, - type: 'regexp', - regexp: regExp - }); - return this; -}; -/** - * Check if the given value satisfies the `required` validator. The value is - * considered valid if it is a string (that is, not `null` or `undefined`) and - * has positive length. The `required` validator **will** fail for empty - * strings. - * - * @param {Any} value - * @param {Document} doc - * @return {Boolean} - * @api public - */ - - -SchemaString.prototype.checkRequired = function checkRequired(value, doc) { - if (_typeof(value) === 'object' && SchemaType._isRef(this, value, doc, true)) { - return value != null; - } // `require('util').inherits()` does **not** copy static properties, and - // plugins like mongoose-float use `inherits()` for pre-ES6. - - - var _checkRequired = typeof this.constructor.checkRequired === 'function' ? this.constructor.checkRequired() : SchemaString.checkRequired(); - - return _checkRequired(value); -}; -/** - * Casts to String - * - * @api private - */ - - -SchemaString.prototype.cast = function (value, doc, init) { - if (typeof value !== 'string' && SchemaType._isRef(this, value, doc, init)) { - return this._castRef(value, doc, init); - } - - var castString; - - if (typeof this._castFunction === 'function') { - castString = this._castFunction; - } else if (typeof this.constructor.cast === 'function') { - castString = this.constructor.cast(); - } else { - castString = SchemaString.cast(); - } - - try { - return castString(value); - } catch (error) { - throw new CastError('string', value, this.path, null, this); - } -}; -/*! - * ignore - */ - - -function handleSingle(val) { - return this.castForQuery(val); -} -/*! - * ignore - */ - - -function handleArray(val) { - var _this = this; - - if (!Array.isArray(val)) { - return [this.castForQuery(val)]; - } - - return val.map(function (m) { - return _this.castForQuery(m); - }); -} -/*! - * ignore - */ - - -function handleSingleNoSetters(val) { - if (val == null) { - return this._castNullish(val); - } - - return this.cast(val, this); -} - -var $conditionalHandlers = utils.options(SchemaType.prototype.$conditionalHandlers, { - $all: handleArray, - $gt: handleSingle, - $gte: handleSingle, - $lt: handleSingle, - $lte: handleSingle, - $options: handleSingleNoSetters, - $regex: function handle$regex(val) { - if (Object.prototype.toString.call(val) === '[object RegExp]') { - return val; - } - - return handleSingleNoSetters.call(this, val); - }, - $not: handleSingle -}); -Object.defineProperty(SchemaString.prototype, '$conditionalHandlers', { - configurable: false, - enumerable: false, - writable: false, - value: Object.freeze($conditionalHandlers) -}); -/** - * Casts contents for queries. - * - * @param {String} $conditional - * @param {any} [val] - * @api private - */ - -SchemaString.prototype.castForQuery = function ($conditional, val) { - var handler; - - if (arguments.length === 2) { - handler = this.$conditionalHandlers[$conditional]; - - if (!handler) { - throw new Error('Can\'t use ' + $conditional + ' with String.'); - } - - return handler.call(this, val); - } - - val = $conditional; - - if (Object.prototype.toString.call(val) === '[object RegExp]' || isBsonType(val, 'BSONRegExp')) { - return val; - } - - return this._castForQuery(val); -}; -/*! - * Module exports. - */ - - -module.exports = SchemaString; - -/***/ }), - -/***/ 8107: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -exports.schemaMixedSymbol = Symbol["for"]('mongoose:schema_mixed'); -exports.builtInMiddleware = Symbol["for"]('mongoose:built-in-middleware'); - -/***/ }), - -/***/ 4289: -/***/ ((module, exports, __webpack_require__) => { - -"use strict"; -/* provided dependency */ var Buffer = __webpack_require__(365)["Buffer"]; - -/*! - * Module dependencies. - */ - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var MongooseError = __webpack_require__(4888); - -var SchemaTypeOptions = __webpack_require__(1764); - -var $exists = __webpack_require__(8702); - -var $type = __webpack_require__(3053); - -var handleImmutable = __webpack_require__(8828); - -var isAsyncFunction = __webpack_require__(8857); - -var isSimpleValidator = __webpack_require__(9130); - -var immediate = __webpack_require__(1490); - -var schemaTypeSymbol = (__webpack_require__(8770).schemaTypeSymbol); - -var utils = __webpack_require__(6872); - -var validatorErrorSymbol = (__webpack_require__(8770).validatorErrorSymbol); - -var documentIsModified = (__webpack_require__(8770).documentIsModified); - -var populateModelSymbol = (__webpack_require__(8770).populateModelSymbol); - -var CastError = MongooseError.CastError; -var ValidatorError = MongooseError.ValidatorError; -var setOptionsForDefaults = { - _skipMarkModified: true -}; -/** - * SchemaType constructor. Do **not** instantiate `SchemaType` directly. - * Mongoose converts your schema paths into SchemaTypes automatically. - * - * #### Example: - * - * const schema = new Schema({ name: String }); - * schema.path('name') instanceof SchemaType; // true - * - * @param {String} path - * @param {SchemaTypeOptions} [options] See [SchemaTypeOptions docs](/docs/api/schematypeoptions.html) - * @param {String} [instance] - * @api public - */ - -function SchemaType(path, options, instance) { - this[schemaTypeSymbol] = true; - this.path = path; - this.instance = instance; - this.validators = []; - this.getters = this.constructor.hasOwnProperty('getters') ? this.constructor.getters.slice() : []; - this.setters = []; - this.splitPath(); - options = options || {}; - var defaultOptions = this.constructor.defaultOptions || {}; - var defaultOptionsKeys = Object.keys(defaultOptions); - - for (var _i = 0, _defaultOptionsKeys = defaultOptionsKeys; _i < _defaultOptionsKeys.length; _i++) { - var option = _defaultOptionsKeys[_i]; - - if (defaultOptions.hasOwnProperty(option) && !options.hasOwnProperty(option)) { - options[option] = defaultOptions[option]; - } - } - - if (options.select == null) { - delete options.select; - } - - var Options = this.OptionsConstructor || SchemaTypeOptions; - this.options = new Options(options); - this._index = null; - - if (utils.hasUserDefinedProperty(this.options, 'immutable')) { - this.$immutable = this.options.immutable; - handleImmutable(this); - } - - var keys = Object.keys(this.options); - - for (var _i2 = 0, _keys = keys; _i2 < _keys.length; _i2++) { - var prop = _keys[_i2]; - - if (prop === 'cast') { - this.castFunction(this.options[prop]); - continue; - } - - if (utils.hasUserDefinedProperty(this.options, prop) && typeof this[prop] === 'function') { - // { unique: true, index: true } - if (prop === 'index' && this._index) { - if (options.index === false) { - var index = this._index; - - if (_typeof(index) === 'object' && index != null) { - if (index.unique) { - throw new Error('Path "' + this.path + '" may not have `index` ' + 'set to false and `unique` set to true'); - } - - if (index.sparse) { - throw new Error('Path "' + this.path + '" may not have `index` ' + 'set to false and `sparse` set to true'); - } - } - - this._index = false; - } - - continue; - } - - var val = options[prop]; // Special case so we don't screw up array defaults, see gh-5780 - - if (prop === 'default') { - this["default"](val); - continue; - } - - var opts = Array.isArray(val) ? val : [val]; - this[prop].apply(this, opts); - } - } - - Object.defineProperty(this, '$$context', { - enumerable: false, - configurable: false, - writable: true, - value: null - }); -} -/*! - * The class that Mongoose uses internally to instantiate this SchemaType's `options` property. - */ - - -SchemaType.prototype.OptionsConstructor = SchemaTypeOptions; -/** - * The path to this SchemaType in a Schema. - * - * #### Example: - * const schema = new Schema({ name: String }); - * schema.path('name').path; // 'name' - * - * @property path - * @api public - * @memberOf SchemaType - */ - -SchemaType.prototype.path; -/** - * The validators that Mongoose should run to validate properties at this SchemaType's path. - * - * #### Example: - * const schema = new Schema({ name: { type: String, required: true } }); - * schema.path('name').validators.length; // 1, the `required` validator - * - * @property validators - * @api public - * @memberOf SchemaType - */ - -SchemaType.prototype.validators; -/** - * True if this SchemaType has a required validator. False otherwise. - * - * #### Example: - * const schema = new Schema({ name: { type: String, required: true } }); - * schema.path('name').isRequired; // true - * - * schema.path('name').required(false); - * schema.path('name').isRequired; // false - * - * @property isRequired - * @api public - * @memberOf SchemaType - */ - -SchemaType.prototype.validators; -/*! - * ignore - */ - -SchemaType.prototype.splitPath = function () { - if (this._presplitPath != null) { - return this._presplitPath; - } - - if (this.path == null) { - return undefined; - } - - this._presplitPath = this.path.indexOf('.') === -1 ? [this.path] : this.path.split('.'); - return this._presplitPath; -}; -/** - * Get/set the function used to cast arbitrary values to this type. - * - * #### Example: - * - * // Disallow `null` for numbers, and don't try to cast any values to - * // numbers, so even strings like '123' will cause a CastError. - * mongoose.Number.cast(function(v) { - * assert.ok(v === undefined || typeof v === 'number'); - * return v; - * }); - * - * @param {Function|false} caster Function that casts arbitrary values to this type, or throws an error if casting failed - * @return {Function} - * @static - * @receiver SchemaType - * @function cast - * @api public - */ - - -SchemaType.cast = function cast(caster) { - if (arguments.length === 0) { - return this._cast; - } - - if (caster === false) { - caster = function caster(v) { - return v; - }; - } - - this._cast = caster; - return this._cast; -}; -/** - * Get/set the function used to cast arbitrary values to this particular schematype instance. - * Overrides `SchemaType.cast()`. - * - * #### Example: - * - * // Disallow `null` for numbers, and don't try to cast any values to - * // numbers, so even strings like '123' will cause a CastError. - * const number = new mongoose.Number('mypath', {}); - * number.cast(function(v) { - * assert.ok(v === undefined || typeof v === 'number'); - * return v; - * }); - * - * @param {Function|false} caster Function that casts arbitrary values to this type, or throws an error if casting failed - * @return {Function} - * @static - * @receiver SchemaType - * @function cast - * @api public - */ - - -SchemaType.prototype.castFunction = function castFunction(caster) { - if (arguments.length === 0) { - return this._castFunction; - } - - if (caster === false) { - caster = this.constructor._defaultCaster || function (v) { - return v; - }; - } - - this._castFunction = caster; - return this._castFunction; -}; -/** - * The function that Mongoose calls to cast arbitrary values to this SchemaType. - * - * @param {Object} value value to cast - * @param {Document} doc document that triggers the casting - * @param {Boolean} init - * @api public - */ - - -SchemaType.prototype.cast = function cast() { - throw new Error('Base SchemaType class does not implement a `cast()` function'); -}; -/** - * Sets a default option for this schema type. - * - * #### Example: - * - * // Make all strings be trimmed by default - * mongoose.SchemaTypes.String.set('trim', true); - * - * @param {String} option The name of the option you'd like to set (e.g. trim, lowercase, etc...) - * @param {*} value The value of the option you'd like to set. - * @return {void} - * @static - * @receiver SchemaType - * @function set - * @api public - */ - - -SchemaType.set = function set(option, value) { - if (!this.hasOwnProperty('defaultOptions')) { - this.defaultOptions = Object.assign({}, this.defaultOptions); - } - - this.defaultOptions[option] = value; -}; -/** - * Attaches a getter for all instances of this schema type. - * - * #### Example: - * - * // Make all numbers round down - * mongoose.Number.get(function(v) { return Math.floor(v); }); - * - * @param {Function} getter - * @return {this} - * @static - * @receiver SchemaType - * @function get - * @api public - */ - - -SchemaType.get = function (getter) { - this.getters = this.hasOwnProperty('getters') ? this.getters : []; - this.getters.push(getter); -}; -/** - * Sets a default value for this SchemaType. - * - * #### Example: - * - * const schema = new Schema({ n: { type: Number, default: 10 }) - * const M = db.model('M', schema) - * const m = new M; - * console.log(m.n) // 10 - * - * Defaults can be either `functions` which return the value to use as the default or the literal value itself. Either way, the value will be cast based on its schema type before being set during document creation. - * - * #### Example: - * - * // values are cast: - * const schema = new Schema({ aNumber: { type: Number, default: 4.815162342 }}) - * const M = db.model('M', schema) - * const m = new M; - * console.log(m.aNumber) // 4.815162342 - * - * // default unique objects for Mixed types: - * const schema = new Schema({ mixed: Schema.Types.Mixed }); - * schema.path('mixed').default(function () { - * return {}; - * }); - * - * // if we don't use a function to return object literals for Mixed defaults, - * // each document will receive a reference to the same object literal creating - * // a "shared" object instance: - * const schema = new Schema({ mixed: Schema.Types.Mixed }); - * schema.path('mixed').default({}); - * const M = db.model('M', schema); - * const m1 = new M; - * m1.mixed.added = 1; - * console.log(m1.mixed); // { added: 1 } - * const m2 = new M; - * console.log(m2.mixed); // { added: 1 } - * - * @param {Function|any} val the default value - * @return {defaultValue} - * @api public - */ - - -SchemaType.prototype["default"] = function (val) { - if (arguments.length === 1) { - if (val === void 0) { - this.defaultValue = void 0; - return void 0; - } - - if (val != null && val.instanceOfSchema) { - throw new MongooseError('Cannot set default value of path `' + this.path + '` to a mongoose Schema instance.'); - } - - this.defaultValue = val; - return this.defaultValue; - } else if (arguments.length > 1) { - this.defaultValue = Array.prototype.slice.call(arguments); - } - - return this.defaultValue; -}; -/** - * Declares the index options for this schematype. - * - * #### Example: - * - * const s = new Schema({ name: { type: String, index: true }) - * const s = new Schema({ loc: { type: [Number], index: 'hashed' }) - * const s = new Schema({ loc: { type: [Number], index: '2d', sparse: true }) - * const s = new Schema({ loc: { type: [Number], index: { type: '2dsphere', sparse: true }}) - * const s = new Schema({ date: { type: Date, index: { unique: true, expires: '1d' }}) - * s.path('my.path').index(true); - * s.path('my.date').index({ expires: 60 }); - * s.path('my.path').index({ unique: true, sparse: true }); - * - * #### Note: - * - * _Indexes are created [in the background](https://docs.mongodb.com/manual/core/index-creation/#index-creation-background) - * by default. If `background` is set to `false`, MongoDB will not execute any - * read/write operations you send until the index build. - * Specify `background: false` to override Mongoose's default._ - * - * @param {Object|Boolean|String} options - * @return {SchemaType} this - * @api public - */ - - -SchemaType.prototype.index = function (options) { - this._index = options; - utils.expires(this._index); - return this; -}; -/** - * Declares an unique index. - * - * #### Example: - * - * const s = new Schema({ name: { type: String, unique: true }}); - * s.path('name').index({ unique: true }); - * - * _NOTE: violating the constraint returns an `E11000` error from MongoDB when saving, not a Mongoose validation error._ - * - * @param {Boolean} bool - * @return {SchemaType} this - * @api public - */ - - -SchemaType.prototype.unique = function (bool) { - if (this._index === false) { - if (!bool) { - return; - } - - throw new Error('Path "' + this.path + '" may not have `index` set to ' + 'false and `unique` set to true'); - } - - if (!this.options.hasOwnProperty('index') && bool === false) { - return this; - } - - if (this._index == null || this._index === true) { - this._index = {}; - } else if (typeof this._index === 'string') { - this._index = { - type: this._index - }; - } - - this._index.unique = bool; - return this; -}; -/** - * Declares a full text index. - * - * ### Example: - * - * const s = new Schema({name : {type: String, text : true }) - * s.path('name').index({text : true}); - * @param {Boolean} bool - * @return {SchemaType} this - * @api public - */ - - -SchemaType.prototype.text = function (bool) { - if (this._index === false) { - if (!bool) { - return; - } - - throw new Error('Path "' + this.path + '" may not have `index` set to ' + 'false and `text` set to true'); - } - - if (!this.options.hasOwnProperty('index') && bool === false) { - return this; - } - - if (this._index === null || this._index === undefined || typeof this._index === 'boolean') { - this._index = {}; - } else if (typeof this._index === 'string') { - this._index = { - type: this._index - }; - } - - this._index.text = bool; - return this; -}; -/** - * Declares a sparse index. - * - * #### Example: - * - * const s = new Schema({ name: { type: String, sparse: true } }); - * s.path('name').index({ sparse: true }); - * - * @param {Boolean} bool - * @return {SchemaType} this - * @api public - */ - - -SchemaType.prototype.sparse = function (bool) { - if (this._index === false) { - if (!bool) { - return; - } - - throw new Error('Path "' + this.path + '" may not have `index` set to ' + 'false and `sparse` set to true'); - } - - if (!this.options.hasOwnProperty('index') && bool === false) { - return this; - } - - if (this._index == null || typeof this._index === 'boolean') { - this._index = {}; - } else if (typeof this._index === 'string') { - this._index = { - type: this._index - }; - } - - this._index.sparse = bool; - return this; -}; -/** - * Defines this path as immutable. Mongoose prevents you from changing - * immutable paths unless the parent document has [`isNew: true`](/docs/api.html#document_Document-isNew). - * - * #### Example: - * - * const schema = new Schema({ - * name: { type: String, immutable: true }, - * age: Number - * }); - * const Model = mongoose.model('Test', schema); - * - * await Model.create({ name: 'test' }); - * const doc = await Model.findOne(); - * - * doc.isNew; // false - * doc.name = 'new name'; - * doc.name; // 'test', because `name` is immutable - * - * Mongoose also prevents changing immutable properties using `updateOne()` - * and `updateMany()` based on [strict mode](/docs/guide.html#strict). - * - * #### Example: - * - * // Mongoose will strip out the `name` update, because `name` is immutable - * Model.updateOne({}, { $set: { name: 'test2' }, $inc: { age: 1 } }); - * - * // If `strict` is set to 'throw', Mongoose will throw an error if you - * // update `name` - * const err = await Model.updateOne({}, { name: 'test2' }, { strict: 'throw' }). - * then(() => null, err => err); - * err.name; // StrictModeError - * - * // If `strict` is `false`, Mongoose allows updating `name` even though - * // the property is immutable. - * Model.updateOne({}, { name: 'test2' }, { strict: false }); - * - * @param {Boolean} bool - * @return {SchemaType} this - * @see isNew /docs/api.html#document_Document-isNew - * @api public - */ - - -SchemaType.prototype.immutable = function (bool) { - this.$immutable = bool; - handleImmutable(this); - return this; -}; -/** - * Defines a custom function for transforming this path when converting a document to JSON. - * - * Mongoose calls this function with one parameter: the current `value` of the path. Mongoose - * then uses the return value in the JSON output. - * - * #### Example: - * - * const schema = new Schema({ - * date: { type: Date, transform: v => v.getFullYear() } - * }); - * const Model = mongoose.model('Test', schema); - * - * await Model.create({ date: new Date('2016-06-01') }); - * const doc = await Model.findOne(); - * - * doc.date instanceof Date; // true - * - * doc.toJSON().date; // 2016 as a number - * JSON.stringify(doc); // '{"_id":...,"date":2016}' - * - * @param {Function} fn - * @return {SchemaType} this - * @api public - */ - - -SchemaType.prototype.transform = function (fn) { - this.options.transform = fn; - return this; -}; -/** - * Adds a setter to this schematype. - * - * #### Example: - * - * ```javascript - * function capitalize (val) { - * if (typeof val !== 'string') val = ''; - * return val.charAt(0).toUpperCase() + val.substring(1); - * } - * - * // defining within the schema - * const s = new Schema({ name: { type: String, set: capitalize }}); - * - * // or with the SchemaType - * const s = new Schema({ name: String }) - * s.path('name').set(capitalize); - * ``` - * - * Setters allow you to transform the data before it gets to the raw mongodb - * document or query. - * - * Suppose you are implementing user registration for a website. Users provide - * an email and password, which gets saved to mongodb. The email is a string - * that you will want to normalize to lower case, in order to avoid one email - * having more than one account -- e.g., otherwise, avenue@q.com can be registered for 2 accounts via avenue@q.com and AvEnUe@Q.CoM. - * - * You can set up email lower case normalization easily via a Mongoose setter. - * - * ```javascript - * function toLower(v) { - * return v.toLowerCase(); - * } - * - * const UserSchema = new Schema({ - * email: { type: String, set: toLower } - * }); - * - * const User = db.model('User', UserSchema); - * - * const user = new User({email: 'AVENUE@Q.COM'}); - * console.log(user.email); // 'avenue@q.com' - * - * // or - * const user = new User(); - * user.email = 'Avenue@Q.com'; - * console.log(user.email); // 'avenue@q.com' - * User.updateOne({ _id: _id }, { $set: { email: 'AVENUE@Q.COM' } }); // update to 'avenue@q.com' - * ``` - * - * As you can see above, setters allow you to transform the data before it - * stored in MongoDB, or before executing a query. - * - * _NOTE: we could have also just used the built-in `lowercase: true` SchemaType option instead of defining our own function._ - * - * ```javascript - * new Schema({ email: { type: String, lowercase: true }}) - * ``` - * - * Setters are also passed a second argument, the schematype on which the setter was defined. This allows for tailored behavior based on options passed in the schema. - * - * ```javascript - * function inspector (val, priorValue, schematype) { - * if (schematype.options.required) { - * return schematype.path + ' is required'; - * } else { - * return val; - * } - * } - * - * const VirusSchema = new Schema({ - * name: { type: String, required: true, set: inspector }, - * taxonomy: { type: String, set: inspector } - * }) - * - * const Virus = db.model('Virus', VirusSchema); - * const v = new Virus({ name: 'Parvoviridae', taxonomy: 'Parvovirinae' }); - * - * console.log(v.name); // name is required - * console.log(v.taxonomy); // Parvovirinae - * ``` - * - * You can also use setters to modify other properties on the document. If - * you're setting a property `name` on a document, the setter will run with - * `this` as the document. Be careful, in mongoose 5 setters will also run - * when querying by `name` with `this` as the query. - * - * ```javascript - * const nameSchema = new Schema({ name: String, keywords: [String] }); - * nameSchema.path('name').set(function(v) { - * // Need to check if `this` is a document, because in mongoose 5 - * // setters will also run on queries, in which case `this` will be a - * // mongoose query object. - * if (this instanceof Document && v != null) { - * this.keywords = v.split(' '); - * } - * return v; - * }); - * ``` - * - * @param {Function} fn - * @return {SchemaType} this - * @api public - */ - - -SchemaType.prototype.set = function (fn) { - if (typeof fn !== 'function') { - throw new TypeError('A setter must be a function.'); - } - - this.setters.push(fn); - return this; -}; -/** - * Adds a getter to this schematype. - * - * #### Example: - * - * function dob (val) { - * if (!val) return val; - * return (val.getMonth() + 1) + "/" + val.getDate() + "/" + val.getFullYear(); - * } - * - * // defining within the schema - * const s = new Schema({ born: { type: Date, get: dob }) - * - * // or by retreiving its SchemaType - * const s = new Schema({ born: Date }) - * s.path('born').get(dob) - * - * Getters allow you to transform the representation of the data as it travels from the raw mongodb document to the value that you see. - * - * Suppose you are storing credit card numbers and you want to hide everything except the last 4 digits to the mongoose user. You can do so by defining a getter in the following way: - * - * function obfuscate (cc) { - * return '****-****-****-' + cc.slice(cc.length-4, cc.length); - * } - * - * const AccountSchema = new Schema({ - * creditCardNumber: { type: String, get: obfuscate } - * }); - * - * const Account = db.model('Account', AccountSchema); - * - * Account.findById(id, function (err, found) { - * console.log(found.creditCardNumber); // '****-****-****-1234' - * }); - * - * Getters are also passed a second argument, the schematype on which the getter was defined. This allows for tailored behavior based on options passed in the schema. - * - * function inspector (val, priorValue, schematype) { - * if (schematype.options.required) { - * return schematype.path + ' is required'; - * } else { - * return schematype.path + ' is not'; - * } - * } - * - * const VirusSchema = new Schema({ - * name: { type: String, required: true, get: inspector }, - * taxonomy: { type: String, get: inspector } - * }) - * - * const Virus = db.model('Virus', VirusSchema); - * - * Virus.findById(id, function (err, virus) { - * console.log(virus.name); // name is required - * console.log(virus.taxonomy); // taxonomy is not - * }) - * - * @param {Function} fn - * @return {SchemaType} this - * @api public - */ - - -SchemaType.prototype.get = function (fn) { - if (typeof fn !== 'function') { - throw new TypeError('A getter must be a function.'); - } - - this.getters.push(fn); - return this; -}; -/** - * Adds validator(s) for this document path. - * - * Validators always receive the value to validate as their first argument and - * must return `Boolean`. Returning `false` or throwing an error means - * validation failed. - * - * The error message argument is optional. If not passed, the [default generic error message template](#error_messages_MongooseError-messages) will be used. - * - * #### Examples: - * - * // make sure every value is equal to "something" - * function validator (val) { - * return val === 'something'; - * } - * new Schema({ name: { type: String, validate: validator }}); - * - * // with a custom error message - * - * const custom = [validator, 'Uh oh, {PATH} does not equal "something".'] - * new Schema({ name: { type: String, validate: custom }}); - * - * // adding many validators at a time - * - * const many = [ - * { validator: validator, msg: 'uh oh' } - * , { validator: anotherValidator, msg: 'failed' } - * ] - * new Schema({ name: { type: String, validate: many }}); - * - * // or utilizing SchemaType methods directly: - * - * const schema = new Schema({ name: 'string' }); - * schema.path('name').validate(validator, 'validation of `{PATH}` failed with value `{VALUE}`'); - * - * #### Error message templates: - * - * From the examples above, you may have noticed that error messages support - * basic templating. There are a few other template keywords besides `{PATH}` - * and `{VALUE}` too. To find out more, details are available - * [here](#error_messages_MongooseError.messages). - * - * If Mongoose's built-in error message templating isn't enough, Mongoose - * supports setting the `message` property to a function. - * - * schema.path('name').validate({ - * validator: function(v) { return v.length > 5; }, - * // `errors['name']` will be "name must have length 5, got 'foo'" - * message: function(props) { - * return `${props.path} must have length 5, got '${props.value}'`; - * } - * }); - * - * To bypass Mongoose's error messages and just copy the error message that - * the validator throws, do this: - * - * schema.path('name').validate({ - * validator: function() { throw new Error('Oops!'); }, - * // `errors['name']` will be "Oops!" - * message: function(props) { return props.reason.message; } - * }); - * - * #### Asynchronous validation: - * - * Mongoose supports validators that return a promise. A validator that returns - * a promise is called an _async validator_. Async validators run in - * parallel, and `validate()` will wait until all async validators have settled. - * - * schema.path('name').validate({ - * validator: function (value) { - * return new Promise(function (resolve, reject) { - * resolve(false); // validation failed - * }); - * } - * }); - * - * You might use asynchronous validators to retreive other documents from the database to validate against or to meet other I/O bound validation needs. - * - * Validation occurs `pre('save')` or whenever you manually execute [document#validate](#document_Document-validate). - * - * If validation fails during `pre('save')` and no callback was passed to receive the error, an `error` event will be emitted on your Models associated db [connection](#connection_Connection), passing the validation error object along. - * - * const conn = mongoose.createConnection(..); - * conn.on('error', handleError); - * - * const Product = conn.model('Product', yourSchema); - * const dvd = new Product(..); - * dvd.save(); // emits error on the `conn` above - * - * If you want to handle these errors at the Model level, add an `error` - * listener to your Model as shown below. - * - * // registering an error listener on the Model lets us handle errors more locally - * Product.on('error', handleError); - * - * @param {RegExp|Function|Object} obj validator function, or hash describing options - * @param {Function} [obj.validator] validator function. If the validator function returns `undefined` or a truthy value, validation succeeds. If it returns [falsy](https://masteringjs.io/tutorials/fundamentals/falsy) (except `undefined`) or throws an error, validation fails. - * @param {String|Function} [obj.message] optional error message. If function, should return the error message as a string - * @param {Boolean} [obj.propsParameter=false] If true, Mongoose will pass the validator properties object (with the `validator` function, `message`, etc.) as the 2nd arg to the validator function. This is disabled by default because many validators [rely on positional args](https://github.com/chriso/validator.js#validators), so turning this on may cause unpredictable behavior in external validators. - * @param {String|Function} [errorMsg] optional error message. If function, should return the error message as a string - * @param {String} [type] optional validator type - * @return {SchemaType} this - * @api public - */ - - -SchemaType.prototype.validate = function (obj, message, type) { - if (typeof obj === 'function' || obj && utils.getFunctionName(obj.constructor) === 'RegExp') { - var properties; - - if (typeof message === 'function') { - properties = { - validator: obj, - message: message - }; - properties.type = type || 'user defined'; - } else if (message instanceof Object && !type) { - properties = isSimpleValidator(message) ? Object.assign({}, message) : utils.clone(message); - - if (!properties.message) { - properties.message = properties.msg; - } - - properties.validator = obj; - properties.type = properties.type || 'user defined'; - } else { - if (message == null) { - message = MongooseError.messages.general["default"]; - } - - if (!type) { - type = 'user defined'; - } - - properties = { - message: message, - type: type, - validator: obj - }; - } - - this.validators.push(properties); - return this; - } - - var i; - var length; - var arg; - - for (i = 0, length = arguments.length; i < length; i++) { - arg = arguments[i]; - - if (!utils.isPOJO(arg)) { - var msg = 'Invalid validator. Received (' + _typeof(arg) + ') ' + arg + '. See https://mongoosejs.com/docs/api.html#schematype_SchemaType-validate'; - throw new Error(msg); - } - - this.validate(arg.validator, arg); - } - - return this; -}; -/** - * Adds a required validator to this SchemaType. The validator gets added - * to the front of this SchemaType's validators array using `unshift()`. - * - * #### Example: - * - * const s = new Schema({ born: { type: Date, required: true }) - * - * // or with custom error message - * - * const s = new Schema({ born: { type: Date, required: '{PATH} is required!' }) - * - * // or with a function - * - * const s = new Schema({ - * userId: ObjectId, - * username: { - * type: String, - * required: function() { return this.userId != null; } - * } - * }) - * - * // or with a function and a custom message - * const s = new Schema({ - * userId: ObjectId, - * username: { - * type: String, - * required: [ - * function() { return this.userId != null; }, - * 'username is required if id is specified' - * ] - * } - * }) - * - * // or through the path API - * - * s.path('name').required(true); - * - * // with custom error messaging - * - * s.path('name').required(true, 'grrr :( '); - * - * // or make a path conditionally required based on a function - * const isOver18 = function() { return this.age >= 18; }; - * s.path('voterRegistrationId').required(isOver18); - * - * The required validator uses the SchemaType's `checkRequired` function to - * determine whether a given value satisfies the required validator. By default, - * a value satisfies the required validator if `val != null` (that is, if - * the value is not null nor undefined). However, most built-in mongoose schema - * types override the default `checkRequired` function: - * - * @param {Boolean|Function|Object} required enable/disable the validator, or function that returns required boolean, or options object - * @param {Boolean|Function} [options.isRequired] enable/disable the validator, or function that returns required boolean - * @param {Function} [options.ErrorConstructor] custom error constructor. The constructor receives 1 parameter, an object containing the validator properties. - * @param {String} [message] optional custom error message - * @return {SchemaType} this - * @see Customized Error Messages #error_messages_MongooseError-messages - * @see SchemaArray#checkRequired #schema_array_SchemaArray.checkRequired - * @see SchemaBoolean#checkRequired #schema_boolean_SchemaBoolean-checkRequired - * @see SchemaBuffer#checkRequired #schema_buffer_SchemaBuffer.schemaName - * @see SchemaNumber#checkRequired #schema_number_SchemaNumber-min - * @see SchemaObjectId#checkRequired #schema_objectid_ObjectId-auto - * @see SchemaString#checkRequired #schema_string_SchemaString-checkRequired - * @api public - */ - - -SchemaType.prototype.required = function (required, message) { - var customOptions = {}; - - if (arguments.length > 0 && required == null) { - this.validators = this.validators.filter(function (v) { - return v.validator !== this.requiredValidator; - }, this); - this.isRequired = false; - delete this.originalRequiredValue; - return this; - } - - if (_typeof(required) === 'object') { - customOptions = required; - message = customOptions.message || message; - required = required.isRequired; - } - - if (required === false) { - this.validators = this.validators.filter(function (v) { - return v.validator !== this.requiredValidator; - }, this); - this.isRequired = false; - delete this.originalRequiredValue; - return this; - } - - var _this = this; - - this.isRequired = true; - - this.requiredValidator = function (v) { - var cachedRequired = this && this.$__ && this.$__.cachedRequired; // no validation when this path wasn't selected in the query. - - if (cachedRequired != null && !this.$__isSelected(_this.path) && !this[documentIsModified](_this.path)) { - return true; - } // `$cachedRequired` gets set in `_evaluateRequiredFunctions()` so we - // don't call required functions multiple times in one validate call - // See gh-6801 - - - if (cachedRequired != null && _this.path in cachedRequired) { - var res = cachedRequired[_this.path] ? _this.checkRequired(v, this) : true; - delete cachedRequired[_this.path]; - return res; - } else if (typeof required === 'function') { - return required.apply(this) ? _this.checkRequired(v, this) : true; - } - - return _this.checkRequired(v, this); - }; - - this.originalRequiredValue = required; - - if (typeof required === 'string') { - message = required; - required = undefined; - } - - var msg = message || MongooseError.messages.general.required; - this.validators.unshift(Object.assign({}, customOptions, { - validator: this.requiredValidator, - message: msg, - type: 'required' - })); - return this; -}; -/** - * Set the model that this path refers to. This is the option that [populate](https://mongoosejs.com/docs/populate.html) - * looks at to determine the foreign collection it should query. - * - * #### Example: - * const userSchema = new Schema({ name: String }); - * const User = mongoose.model('User', userSchema); - * - * const postSchema = new Schema({ user: mongoose.ObjectId }); - * postSchema.path('user').ref('User'); // Can set ref to a model name - * postSchema.path('user').ref(User); // Or a model class - * postSchema.path('user').ref(() => 'User'); // Or a function that returns the model name - * postSchema.path('user').ref(() => User); // Or a function that returns the model class - * - * // Or you can just declare the `ref` inline in your schema - * const postSchema2 = new Schema({ - * user: { type: mongoose.ObjectId, ref: User } - * }); - * - * @param {String|Model|Function} ref either a model name, a [Model](https://mongoosejs.com/docs/models.html), or a function that returns a model name or model. - * @return {SchemaType} this - * @api public - */ - - -SchemaType.prototype.ref = function (ref) { - this.options.ref = ref; - return this; -}; -/** - * Gets the default value - * - * @param {Object} scope the scope which callback are executed - * @param {Boolean} init - * @api private - */ - - -SchemaType.prototype.getDefault = function (scope, init) { - var ret; - - if (typeof this.defaultValue === 'function') { - if (this.defaultValue === Date.now || this.defaultValue === Array || this.defaultValue.name.toLowerCase() === 'objectid') { - ret = this.defaultValue.call(scope); - } else { - ret = this.defaultValue.call(scope, scope); - } - } else { - ret = this.defaultValue; - } - - if (ret !== null && ret !== undefined) { - if (_typeof(ret) === 'object' && (!this.options || !this.options.shared)) { - ret = utils.clone(ret); - } - - var casted = this.applySetters(ret, scope, init, undefined, setOptionsForDefaults); - - if (casted && !Array.isArray(casted) && casted.$isSingleNested) { - casted.$__parent = scope; - } - - return casted; - } - - return ret; -}; -/*! - * Applies setters without casting - * - * @api private - */ - - -SchemaType.prototype._applySetters = function (value, scope, init, priorVal, options) { - var v = value; - - if (init) { - return v; - } - - var setters = this.setters; - - for (var i = setters.length - 1; i >= 0; i--) { - v = setters[i].call(scope, v, priorVal, this, options); - } - - return v; -}; -/*! - * ignore - */ - - -SchemaType.prototype._castNullish = function _castNullish(v) { - return v; -}; -/** - * Applies setters - * - * @param {Object} value - * @param {Object} scope - * @param {Boolean} init - * @api private - */ - - -SchemaType.prototype.applySetters = function (value, scope, init, priorVal, options) { - var v = this._applySetters(value, scope, init, priorVal, options); - - if (v == null) { - return this._castNullish(v); - } // do not cast until all setters are applied #665 - - - v = this.cast(v, scope, init, priorVal, options); - return v; -}; -/** - * Applies getters to a value - * - * @param {Object} value - * @param {Object} scope - * @api private - */ - - -SchemaType.prototype.applyGetters = function (value, scope) { - var v = value; - var getters = this.getters; - var len = getters.length; - - if (len === 0) { - return v; - } - - for (var i = 0; i < len; ++i) { - v = getters[i].call(scope, v, this); - } - - return v; -}; -/** - * Sets default `select()` behavior for this path. - * - * Set to `true` if this path should always be included in the results, `false` if it should be excluded by default. This setting can be overridden at the query level. - * - * #### Example: - * - * T = db.model('T', new Schema({ x: { type: String, select: true }})); - * T.find(..); // field x will always be selected .. - * // .. unless overridden; - * T.find().select('-x').exec(callback); - * - * @param {Boolean} val - * @return {SchemaType} this - * @api public - */ - - -SchemaType.prototype.select = function select(val) { - this.selected = !!val; - return this; -}; -/** - * Performs a validation of `value` using the validators declared for this SchemaType. - * - * @param {any} value - * @param {Function} callback - * @param {Object} scope - * @api private - */ - - -SchemaType.prototype.doValidate = function (value, fn, scope, options) { - var _this2 = this; - - var err = false; - var path = this.path; // Avoid non-object `validators` - - var validators = this.validators.filter(function (v) { - return _typeof(v) === 'object' && v !== null; - }); - var count = validators.length; - - if (!count) { - return fn(null); - } - - var _loop = function _loop(i, len) { - if (err) { - return "break"; - } - - var v = validators[i]; - var validator = v.validator; - var ok = void 0; - var validatorProperties = isSimpleValidator(v) ? Object.assign({}, v) : utils.clone(v); - validatorProperties.path = options && options.path ? options.path : path; - validatorProperties.value = value; - - if (validator instanceof RegExp) { - validate(validator.test(value), validatorProperties); - return "continue"; - } - - if (typeof validator !== 'function') { - return "continue"; - } - - if (value === undefined && validator !== _this2.requiredValidator) { - validate(true, validatorProperties); - return "continue"; - } - - try { - if (validatorProperties.propsParameter) { - ok = validator.call(scope, value, validatorProperties); - } else { - ok = validator.call(scope, value); - } - } catch (error) { - ok = false; - validatorProperties.reason = error; - - if (error.message) { - validatorProperties.message = error.message; - } - } - - if (ok != null && typeof ok.then === 'function') { - ok.then(function (ok) { - validate(ok, validatorProperties); - }, function (error) { - validatorProperties.reason = error; - validatorProperties.message = error.message; - ok = false; - validate(ok, validatorProperties); - }); - } else { - validate(ok, validatorProperties); - } - }; - - for (var i = 0, len = validators.length; i < len; ++i) { - var _ret = _loop(i, len); - - if (_ret === "break") break; - if (_ret === "continue") continue; - } - - function validate(ok, validatorProperties) { - if (err) { - return; - } - - if (ok === undefined || ok) { - if (--count <= 0) { - immediate(function () { - fn(null); - }); - } - } else { - var ErrorConstructor = validatorProperties.ErrorConstructor || ValidatorError; - err = new ErrorConstructor(validatorProperties); - err[validatorErrorSymbol] = true; - immediate(function () { - fn(err); - }); - } - } -}; - -function _validate(ok, validatorProperties) { - if (ok !== undefined && !ok) { - var ErrorConstructor = validatorProperties.ErrorConstructor || ValidatorError; - var err = new ErrorConstructor(validatorProperties); - err[validatorErrorSymbol] = true; - return err; - } -} -/** - * Performs a validation of `value` using the validators declared for this SchemaType. - * - * #### Note: - * - * This method ignores the asynchronous validators. - * - * @param {any} value - * @param {Object} scope - * @return {MongooseError|undefined} - * @api private - */ - - -SchemaType.prototype.doValidateSync = function (value, scope, options) { - var path = this.path; - var count = this.validators.length; - - if (!count) { - return null; - } - - var validators = this.validators; - - if (value === void 0) { - if (this.validators.length !== 0 && this.validators[0].type === 'required') { - validators = [this.validators[0]]; - } else { - return null; - } - } - - var err = null; - var i = 0; - var len = validators.length; - - for (i = 0; i < len; ++i) { - var v = validators[i]; - - if (v === null || _typeof(v) !== 'object') { - continue; - } - - var validator = v.validator; - var validatorProperties = isSimpleValidator(v) ? Object.assign({}, v) : utils.clone(v); - validatorProperties.path = options && options.path ? options.path : path; - validatorProperties.value = value; - var ok = false; // Skip any explicit async validators. Validators that return a promise - // will still run, but won't trigger any errors. - - if (isAsyncFunction(validator)) { - continue; - } - - if (validator instanceof RegExp) { - err = _validate(validator.test(value), validatorProperties); - continue; - } - - if (typeof validator !== 'function') { - continue; - } - - try { - if (validatorProperties.propsParameter) { - ok = validator.call(scope, value, validatorProperties); - } else { - ok = validator.call(scope, value); - } - } catch (error) { - ok = false; - validatorProperties.reason = error; - } // Skip any validators that return a promise, we can't handle those - // synchronously - - - if (ok != null && typeof ok.then === 'function') { - continue; - } - - err = _validate(ok, validatorProperties); - - if (err) { - break; - } - } - - return err; -}; -/** - * Determines if value is a valid Reference. - * - * @param {SchemaType} self - * @param {Object} value - * @param {Document} doc - * @param {Boolean} init - * @return {Boolean} - * @api private - */ - - -SchemaType._isRef = function (self, value, doc, init) { - // fast path - var ref = init && self.options && (self.options.ref || self.options.refPath); - - if (!ref && doc && doc.$__ != null) { - // checks for - // - this populated with adhoc model and no ref was set in schema OR - // - setting / pushing values after population - var path = doc.$__fullPath(self.path, true); - var owner = doc.ownerDocument(); - ref = path != null && owner.$populated(path) || doc.$populated(self.path); - } - - if (ref) { - if (value == null) { - return true; - } - - if (!Buffer.isBuffer(value) && // buffers are objects too - value._bsontype !== 'Binary' // raw binary value from the db - && utils.isObject(value) // might have deselected _id in population query - ) { - return true; - } - - return init; - } - - return false; -}; -/*! - * ignore - */ - - -SchemaType.prototype._castRef = function _castRef(value, doc, init) { - if (value == null) { - return value; - } - - if (value.$__ != null) { - value.$__.wasPopulated = value.$__.wasPopulated || true; - return value; - } // setting a populated path - - - if (Buffer.isBuffer(value) || !utils.isObject(value)) { - if (init) { - return value; - } - - throw new CastError(this.instance, value, this.path, null, this); - } // Handle the case where user directly sets a populated - // path to a plain object; cast to the Model used in - // the population query. - - - var path = doc.$__fullPath(this.path, true); - var owner = doc.ownerDocument(); - var pop = owner.$populated(path, true); - var ret = value; - - if (!doc.$__.populated || !doc.$__.populated[path] || !doc.$__.populated[path].options || !doc.$__.populated[path].options.options || !doc.$__.populated[path].options.options.lean) { - ret = new pop.options[populateModelSymbol](value); - ret.$__.wasPopulated = true; - } - - return ret; -}; -/*! - * ignore - */ - - -function handleSingle(val) { - return this.castForQuery(val); -} -/*! - * ignore - */ - - -function handleArray(val) { - var _this = this; - - if (!Array.isArray(val)) { - return [this.castForQuery(val)]; - } - - return val.map(function (m) { - return _this.castForQuery(m); - }); -} -/*! - * Just like handleArray, except also allows `[]` because surprisingly - * `$in: [1, []]` works fine - */ - - -function handle$in(val) { - var _this = this; - - if (!Array.isArray(val)) { - return [this.castForQuery(val)]; - } - - return val.map(function (m) { - if (Array.isArray(m) && m.length === 0) { - return m; - } - - return _this.castForQuery(m); - }); -} -/*! - * ignore - */ - - -SchemaType.prototype.$conditionalHandlers = { - $all: handleArray, - $eq: handleSingle, - $in: handle$in, - $ne: handleSingle, - $nin: handle$in, - $exists: $exists, - $type: $type -}; -/*! - * Wraps `castForQuery` to handle context - */ - -SchemaType.prototype.castForQueryWrapper = function (params) { - this.$$context = params.context; - - if ('$conditional' in params) { - var _ret2 = this.castForQuery(params.$conditional, params.val); - - this.$$context = null; - return _ret2; - } - - if (params.$skipQueryCastForUpdate || params.$applySetters) { - var _ret3 = this._castForQuery(params.val); - - this.$$context = null; - return _ret3; - } - - var ret = this.castForQuery(params.val); - this.$$context = null; - return ret; -}; -/** - * Cast the given value with the given optional query operator. - * - * @param {String} [$conditional] query operator, like `$eq` or `$in` - * @param {any} val - * @api private - */ - - -SchemaType.prototype.castForQuery = function ($conditional, val) { - var handler; - - if (arguments.length === 2) { - handler = this.$conditionalHandlers[$conditional]; - - if (!handler) { - throw new Error('Can\'t use ' + $conditional); - } - - return handler.call(this, val); - } - - val = $conditional; - return this._castForQuery(val); -}; -/*! - * Internal switch for runSetters - * - * @api private - */ - - -SchemaType.prototype._castForQuery = function (val) { - return this.applySetters(val, this.$$context); -}; -/** - * Override the function the required validator uses to check whether a value - * passes the `required` check. Override this on the individual SchemaType. - * - * #### Example: - * - * // Use this to allow empty strings to pass the `required` validator - * mongoose.Schema.Types.String.checkRequired(v => typeof v === 'string'); - * - * @param {Function} fn - * @return {Function} - * @static - * @receiver SchemaType - * @function checkRequired - * @api public - */ - - -SchemaType.checkRequired = function (fn) { - if (arguments.length !== 0) { - this._checkRequired = fn; - } - - return this._checkRequired; -}; -/** - * Default check for if this path satisfies the `required` validator. - * - * @param {any} val - * @api private - */ - - -SchemaType.prototype.checkRequired = function (val) { - return val != null; -}; -/*! - * ignore - */ - - -SchemaType.prototype.clone = function () { - var options = Object.assign({}, this.options); - var schematype = new this.constructor(this.path, options, this.instance); - schematype.validators = this.validators.slice(); - if (this.requiredValidator !== undefined) schematype.requiredValidator = this.requiredValidator; - if (this.defaultValue !== undefined) schematype.defaultValue = this.defaultValue; - - if (this.$immutable !== undefined && this.options.immutable === undefined) { - schematype.$immutable = this.$immutable; - handleImmutable(schematype); - } - - if (this._index !== undefined) schematype._index = this._index; - if (this.selected !== undefined) schematype.selected = this.selected; - if (this.isRequired !== undefined) schematype.isRequired = this.isRequired; - if (this.originalRequiredValue !== undefined) schematype.originalRequiredValue = this.originalRequiredValue; - schematype.getters = this.getters.slice(); - schematype.setters = this.setters.slice(); - return schematype; -}; -/*! - * Module exports. - */ - - -module.exports = exports = SchemaType; -exports.CastError = CastError; -exports.ValidatorError = ValidatorError; - -/***/ }), - -/***/ 489: -/***/ ((module, exports, __webpack_require__) => { - -"use strict"; -/*! - * Module dependencies. - */ - - -var utils = __webpack_require__(6872); // eslint-disable-line no-unused-vars - -/*! - * StateMachine represents a minimal `interface` for the - * constructors it builds via StateMachine.ctor(...). - * - * @api private - */ - - -var StateMachine = module.exports = exports = function StateMachine() {}; -/*! - * StateMachine.ctor('state1', 'state2', ...) - * A factory method for subclassing StateMachine. - * The arguments are a list of states. For each state, - * the constructor's prototype gets state transition - * methods named after each state. These transition methods - * place their path argument into the given state. - * - * @param {String} state - * @param {String} [state] - * @return {Function} subclass constructor - * @private - */ - - -StateMachine.ctor = function () { - var states = Array.prototype.slice.call(arguments); - - var ctor = function ctor() { - StateMachine.apply(this, arguments); - this.paths = {}; - this.states = {}; - this.stateNames = states; - var i = states.length, - state; - - while (i--) { - state = states[i]; - this.states[state] = {}; - } - }; - - ctor.prototype = new StateMachine(); - states.forEach(function (state) { - // Changes the `path`'s state to `state`. - ctor.prototype[state] = function (path) { - this._changeState(path, state); - }; - }); - return ctor; -}; -/*! - * This function is wrapped by the state change functions: - * - * - `require(path)` - * - `modify(path)` - * - `init(path)` - * - * @api private - */ - - -StateMachine.prototype._changeState = function _changeState(path, nextState) { - var prevBucket = this.states[this.paths[path]]; - if (prevBucket) delete prevBucket[path]; - this.paths[path] = nextState; - this.states[nextState][path] = true; -}; -/*! - * ignore - */ - - -StateMachine.prototype.clear = function clear(state) { - var keys = Object.keys(this.states[state]); - var i = keys.length; - var path; - - while (i--) { - path = keys[i]; - delete this.states[state][path]; - delete this.paths[path]; - } -}; -/*! - * ignore - */ - - -StateMachine.prototype.clearPath = function clearPath(path) { - var state = this.paths[path]; - - if (!state) { - return; - } - - delete this.paths[path]; - delete this.states[state][path]; -}; -/*! - * Checks to see if at least one path is in the states passed in via `arguments` - * e.g., this.some('required', 'inited') - * - * @param {String} state that we want to check for. - * @private - */ - - -StateMachine.prototype.some = function some() { - var _this = this; - - var what = arguments.length ? arguments : this.stateNames; - return Array.prototype.some.call(what, function (state) { - return Object.keys(_this.states[state]).length; - }); -}; -/*! - * This function builds the functions that get assigned to `forEach` and `map`, - * since both of those methods share a lot of the same logic. - * - * @param {String} iterMethod is either 'forEach' or 'map' - * @return {Function} - * @api private - */ - - -StateMachine.prototype._iter = function _iter(iterMethod) { - return function () { - var states = Array.prototype.slice.call(arguments); - var callback = states.pop(); - if (!states.length) states = this.stateNames; - - var _this = this; - - var paths = states.reduce(function (paths, state) { - return paths.concat(Object.keys(_this.states[state])); - }, []); - return paths[iterMethod](function (path, i, paths) { - return callback(path, i, paths); - }); - }; -}; -/*! - * Iterates over the paths that belong to one of the parameter states. - * - * The function profile can look like: - * this.forEach(state1, fn); // iterates over all paths in state1 - * this.forEach(state1, state2, fn); // iterates over all paths in state1 or state2 - * this.forEach(fn); // iterates over all paths in all states - * - * @param {String} [state] - * @param {String} [state] - * @param {Function} callback - * @private - */ - - -StateMachine.prototype.forEach = function forEach() { - this.forEach = this._iter('forEach'); - return this.forEach.apply(this, arguments); -}; -/*! - * Maps over the paths that belong to one of the parameter states. - * - * The function profile can look like: - * this.forEach(state1, fn); // iterates over all paths in state1 - * this.forEach(state1, state2, fn); // iterates over all paths in state1 or state2 - * this.forEach(fn); // iterates over all paths in all states - * - * @param {String} [state] - * @param {String} [state] - * @param {Function} callback - * @return {Array} - * @private - */ - - -StateMachine.prototype.map = function map() { - this.map = this._iter('map'); - return this.map.apply(this, arguments); -}; - -/***/ }), - -/***/ 1568: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/*! - * Module dependencies. - */ - - -var EventEmitter = (__webpack_require__(9620).EventEmitter); - -var Subdocument = __webpack_require__(2591); - -var utils = __webpack_require__(6872); - -var documentArrayParent = (__webpack_require__(8770).documentArrayParent); -/*! - * A constructor. - * - * @param {Object} obj js object returned from the db - * @param {MongooseDocumentArray} parentArr the parent array of this document - * @param {Boolean} skipId - * @inherits Document - * @api private - */ - - -function ArraySubdocument(obj, parentArr, skipId, fields, index) { - if (utils.isMongooseDocumentArray(parentArr)) { - this.__parentArray = parentArr; - this[documentArrayParent] = parentArr.$parent(); - } else { - this.__parentArray = undefined; - this[documentArrayParent] = undefined; - } - - this.$setIndex(index); - this.$__parent = this[documentArrayParent]; - Subdocument.call(this, obj, fields, this[documentArrayParent], skipId, { - isNew: true - }); -} -/*! - * Inherit from Subdocument - */ - - -ArraySubdocument.prototype = Object.create(Subdocument.prototype); -ArraySubdocument.prototype.constructor = ArraySubdocument; -Object.defineProperty(ArraySubdocument.prototype, '$isSingleNested', { - configurable: false, - writable: false, - value: false -}); -Object.defineProperty(ArraySubdocument.prototype, '$isDocumentArrayElement', { - configurable: false, - writable: false, - value: true -}); - -for (var i in EventEmitter.prototype) { - ArraySubdocument[i] = EventEmitter.prototype[i]; -} -/*! - * ignore - */ - - -ArraySubdocument.prototype.$setIndex = function (index) { - this.__index = index; - - if (this.$__ != null && this.$__.validationError != null) { - var keys = Object.keys(this.$__.validationError.errors); - - for (var _i = 0, _keys = keys; _i < _keys.length; _i++) { - var key = _keys[_i]; - this.invalidate(key, this.$__.validationError.errors[key]); - } - } -}; -/*! - * ignore - */ - - -ArraySubdocument.prototype.populate = function () { - throw new Error('Mongoose does not support calling populate() on nested ' + 'docs. Instead of `doc.arr[0].populate("path")`, use ' + '`doc.populate("arr.0.path")`'); -}; -/*! - * ignore - */ - - -ArraySubdocument.prototype.$__removeFromParent = function () { - var _id = this._doc._id; - - if (!_id) { - throw new Error('For your own good, Mongoose does not know ' + 'how to remove an ArraySubdocument that has no _id'); - } - - this.__parentArray.pull({ - _id: _id - }); -}; -/** - * Returns the full path to this document. If optional `path` is passed, it is appended to the full path. - * - * @param {String} [path] - * @param {Boolean} [skipIndex] Skip adding the array index. For example `arr.foo` instead of `arr.0.foo`. - * @return {String} - * @api private - * @method $__fullPath - * @memberOf ArraySubdocument - * @instance - */ - - -ArraySubdocument.prototype.$__fullPath = function (path, skipIndex) { - if (this.__index == null) { - return null; - } - - if (!this.$__.fullPath) { - this.ownerDocument(); - } - - if (skipIndex) { - return path ? this.$__.fullPath + '.' + path : this.$__.fullPath; - } - - return path ? this.$__.fullPath + '.' + this.__index + '.' + path : this.$__.fullPath + '.' + this.__index; -}; -/*! - * Given a path relative to this document, return the path relative - * to the top-level document. - */ - - -ArraySubdocument.prototype.$__pathRelativeToParent = function (path, skipIndex) { - if (this.__index == null) { - return null; - } - - if (skipIndex) { - return path == null ? this.__parentArray.$path() : this.__parentArray.$path() + '.' + path; - } - - if (path == null) { - return this.__parentArray.$path() + '.' + this.__index; - } - - return this.__parentArray.$path() + '.' + this.__index + '.' + path; -}; -/*! - * Returns this sub-documents parent document. - */ - - -ArraySubdocument.prototype.$parent = function () { - return this[documentArrayParent]; -}; -/** - * Returns this subdocument's parent array. - * - * #### Example: - * - * const Test = mongoose.model('Test', new Schema({ - * docArr: [{ name: String }] - * })); - * const doc = new Test({ docArr: [{ name: 'test subdoc' }] }); - * - * doc.docArr[0].parentArray() === doc.docArr; // true - * - * @api public - * @method parentArray - * @returns DocumentArray - */ - - -ArraySubdocument.prototype.parentArray = function () { - return this.__parentArray; -}; -/*! - * Module exports. - */ - - -module.exports = ArraySubdocument; - -/***/ }), - -/***/ 6077: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -/*! - * Module dependencies. - */ - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -var ArrayMethods = __webpack_require__(8075); - -var DocumentArrayMethods = __webpack_require__(9261); - -var Document = __webpack_require__(8727); - -var arrayAtomicsSymbol = (__webpack_require__(8770).arrayAtomicsSymbol); - -var arrayAtomicsBackupSymbol = (__webpack_require__(8770).arrayAtomicsBackupSymbol); - -var arrayParentSymbol = (__webpack_require__(8770).arrayParentSymbol); - -var arrayPathSymbol = (__webpack_require__(8770).arrayPathSymbol); - -var arraySchemaSymbol = (__webpack_require__(8770).arraySchemaSymbol); - -var _basePush = Array.prototype.push; -var numberRE = /^\d+$/; -/** - * DocumentArray constructor - * - * @param {Array} values - * @param {String} path the path to this array - * @param {Document} doc parent document - * @api private - * @return {MongooseDocumentArray} - * @inherits MongooseArray - * @see https://bit.ly/f6CnZU - */ - -function MongooseDocumentArray(values, path, doc) { - var _internals; - - var __array = []; - var internals = (_internals = {}, _defineProperty(_internals, arrayAtomicsSymbol, {}), _defineProperty(_internals, arrayAtomicsBackupSymbol, void 0), _defineProperty(_internals, arrayPathSymbol, path), _defineProperty(_internals, arraySchemaSymbol, void 0), _defineProperty(_internals, arrayParentSymbol, void 0), _internals); - - if (Array.isArray(values)) { - if (values[arrayPathSymbol] === path && values[arrayParentSymbol] === doc) { - internals[arrayAtomicsSymbol] = Object.assign({}, values[arrayAtomicsSymbol]); - } - - values.forEach(function (v) { - _basePush.call(__array, v); - }); - } - - internals[arrayPathSymbol] = path; - internals.__array = __array; // Because doc comes from the context of another function, doc === global - // can happen if there was a null somewhere up the chain (see #3020 && #3034) - // RB Jun 17, 2015 updated to check for presence of expected paths instead - // to make more proof against unusual node environments - - if (doc && doc instanceof Document) { - internals[arrayParentSymbol] = doc; - internals[arraySchemaSymbol] = doc.schema.path(path); // `schema.path()` doesn't drill into nested arrays properly yet, see - // gh-6398, gh-6602. This is a workaround because nested arrays are - // always plain non-document arrays, so once you get to a document array - // nesting is done. Matryoshka code. - - while (internals[arraySchemaSymbol] != null && internals[arraySchemaSymbol].$isMongooseArray && !internals[arraySchemaSymbol].$isMongooseDocumentArray) { - internals[arraySchemaSymbol] = internals[arraySchemaSymbol].casterConstructor; - } - } - - var proxy = new Proxy(__array, { - get: function get(target, prop) { - if (prop === 'isMongooseArray' || prop === 'isMongooseArrayProxy' || prop === 'isMongooseDocumentArray' || prop === 'isMongooseDocumentArrayProxy') { - return true; - } - - if (internals.hasOwnProperty(prop)) { - return internals[prop]; - } - - if (DocumentArrayMethods.hasOwnProperty(prop)) { - return DocumentArrayMethods[prop]; - } - - if (ArrayMethods.hasOwnProperty(prop)) { - return ArrayMethods[prop]; - } - - return __array[prop]; - }, - set: function set(target, prop, value) { - if (typeof prop === 'string' && numberRE.test(prop)) { - DocumentArrayMethods.set.call(proxy, prop, value, false); - } else if (internals.hasOwnProperty(prop)) { - internals[prop] = value; - } else { - __array[prop] = value; - } - - return true; - } - }); - return proxy; -} -/*! - * Module exports. - */ - - -module.exports = MongooseDocumentArray; - -/***/ }), - -/***/ 1255: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -exports.isMongooseDocumentArray = function (mongooseDocumentArray) { - return Array.isArray(mongooseDocumentArray) && mongooseDocumentArray.isMongooseDocumentArray; -}; - -/***/ }), - -/***/ 9261: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/* provided dependency */ var Buffer = __webpack_require__(365)["Buffer"]; - - -function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } - -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } - -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - -var ArrayMethods = __webpack_require__(8075); - -var Document = __webpack_require__(8727); - -var castObjectId = __webpack_require__(4731); - -var getDiscriminatorByValue = __webpack_require__(7291); - -var internalToObjectOptions = (__webpack_require__(4962)/* .internalToObjectOptions */ .h); - -var utils = __webpack_require__(6872); - -var isBsonType = __webpack_require__(1563); - -var arrayParentSymbol = (__webpack_require__(8770).arrayParentSymbol); - -var arrayPathSymbol = (__webpack_require__(8770).arrayPathSymbol); - -var arraySchemaSymbol = (__webpack_require__(8770).arraySchemaSymbol); - -var documentArrayParent = (__webpack_require__(8770).documentArrayParent); - -var methods = { - /*! - * ignore - */ - toBSON: function toBSON() { - return this.toObject(internalToObjectOptions); - }, - - /*! - * ignore - */ - getArrayParent: function getArrayParent() { - return this[arrayParentSymbol]; - }, - - /** - * Overrides MongooseArray#cast - * - * @method _cast - * @api private - * @receiver MongooseDocumentArray - */ - _cast: function _cast(value, index) { - if (this[arraySchemaSymbol] == null) { - return value; - } - - var Constructor = this[arraySchemaSymbol].casterConstructor; - var isInstance = Constructor.$isMongooseDocumentArray ? utils.isMongooseDocumentArray(value) : value instanceof Constructor; - - if (isInstance || // Hack re: #5001, see #5005 - value && value.constructor && value.constructor.baseCasterConstructor === Constructor) { - if (!(value[documentArrayParent] && value.__parentArray)) { - // value may have been created using array.create() - value[documentArrayParent] = this[arrayParentSymbol]; - value.__parentArray = this; - } - - value.$setIndex(index); - return value; - } - - if (value === undefined || value === null) { - return null; - } // handle cast('string') or cast(ObjectId) etc. - // only objects are permitted so we can safely assume that - // non-objects are to be interpreted as _id - - - if (Buffer.isBuffer(value) || isBsonType(value, 'ObjectID') || !utils.isObject(value)) { - value = { - _id: value - }; - } - - if (value && Constructor.discriminators && Constructor.schema && Constructor.schema.options && Constructor.schema.options.discriminatorKey) { - if (typeof value[Constructor.schema.options.discriminatorKey] === 'string' && Constructor.discriminators[value[Constructor.schema.options.discriminatorKey]]) { - Constructor = Constructor.discriminators[value[Constructor.schema.options.discriminatorKey]]; - } else { - var constructorByValue = getDiscriminatorByValue(Constructor.discriminators, value[Constructor.schema.options.discriminatorKey]); - - if (constructorByValue) { - Constructor = constructorByValue; - } - } - } - - if (Constructor.$isMongooseDocumentArray) { - return Constructor.cast(value, this, undefined, undefined, index); - } - - var ret = new Constructor(value, this, undefined, undefined, index); - ret.isNew = true; - return ret; - }, - - /** - * Searches array items for the first document with a matching _id. - * - * #### Example: - * - * const embeddedDoc = m.array.id(some_id); - * - * @return {EmbeddedDocument|null} the subdocument or null if not found. - * @param {ObjectId|String|Number|Buffer} id - * @TODO cast to the _id based on schema for proper comparison - * @method id - * @api public - * @memberOf MongooseDocumentArray - */ - id: function id(_id2) { - var casted; - var sid; - - var _id; - - try { - casted = castObjectId(_id2).toString(); - } catch (e) { - casted = null; - } - - var _iterator = _createForOfIteratorHelper(this), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var val = _step.value; - - if (!val) { - continue; - } - - _id = val.get('_id'); - - if (_id === null || typeof _id === 'undefined') { - continue; - } else if (_id instanceof Document) { - sid || (sid = String(_id2)); - - if (sid == _id._id) { - return val; - } - } else if (!isBsonType(_id2, 'ObjectID') && !isBsonType(_id, 'ObjectID')) { - if (_id2 == _id || utils.deepEqual(_id2, _id)) { - return val; - } - } else if (casted == _id) { - return val; - } - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - return null; - }, - - /** - * Returns a native js Array of plain js objects - * - * #### Note: - * - * _Each sub-document is converted to a plain object by calling its `#toObject` method._ - * - * @param {Object} [options] optional options to pass to each documents `toObject` method call during conversion - * @return {Array} - * @method toObject - * @api public - * @memberOf MongooseDocumentArray - */ - toObject: function toObject(options) { - // `[].concat` coerces the return value into a vanilla JS array, rather - // than a Mongoose array. - return [].concat(this.map(function (doc) { - if (doc == null) { - return null; - } - - if (typeof doc.toObject !== 'function') { - return doc; - } - - return doc.toObject(options); - })); - }, - $toObject: function $toObject() { - return this.constructor.prototype.toObject.apply(this, arguments); - }, - - /** - * Wraps [`Array#push`](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/push) with proper change tracking. - * - * @param {Object} [args...] - * @api public - * @method push - * @memberOf MongooseDocumentArray - */ - push: function push() { - var ret = ArrayMethods.push.apply(this, arguments); - - _updateParentPopulated(this); - - return ret; - }, - - /** - * Pulls items from the array atomically. - * - * @param {Object} [args...] - * @api public - * @method pull - * @memberOf MongooseDocumentArray - */ - pull: function pull() { - var ret = ArrayMethods.pull.apply(this, arguments); - - _updateParentPopulated(this); - - return ret; - }, - - /*! - * Wraps [`Array#shift`](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/unshift) with proper change tracking. - */ - shift: function shift() { - var ret = ArrayMethods.shift.apply(this, arguments); - - _updateParentPopulated(this); - - return ret; - }, - - /*! - * Wraps [`Array#splice`](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/splice) with proper change tracking and casting. - */ - splice: function splice() { - var ret = ArrayMethods.splice.apply(this, arguments); - - _updateParentPopulated(this); - - return ret; - }, - - /** - * Helper for console.log - * - * @method inspect - * @api public - * @memberOf MongooseDocumentArray - */ - inspect: function inspect() { - return this.toObject(); - }, - - /** - * Creates a subdocument casted to this schema. - * - * This is the same subdocument constructor used for casting. - * - * @param {Object} obj the value to cast to this arrays SubDocument schema - * @method create - * @api public - * @memberOf MongooseDocumentArray - */ - create: function create(obj) { - var Constructor = this[arraySchemaSymbol].casterConstructor; - - if (obj && Constructor.discriminators && Constructor.schema && Constructor.schema.options && Constructor.schema.options.discriminatorKey) { - if (typeof obj[Constructor.schema.options.discriminatorKey] === 'string' && Constructor.discriminators[obj[Constructor.schema.options.discriminatorKey]]) { - Constructor = Constructor.discriminators[obj[Constructor.schema.options.discriminatorKey]]; - } else { - var constructorByValue = getDiscriminatorByValue(Constructor.discriminators, obj[Constructor.schema.options.discriminatorKey]); - - if (constructorByValue) { - Constructor = constructorByValue; - } - } - } - - return new Constructor(obj, this); - }, - - /*! - * ignore - */ - notify: function notify(event) { - var _this = this; - - return function notify(val, _arr) { - _arr = _arr || _this; - var i = _arr.length; - - while (i--) { - if (_arr[i] == null) { - continue; - } - - switch (event) { - // only swap for save event for now, we may change this to all event types later - case 'save': - val = _this[i]; - break; - - default: - // NO-OP - break; - } - - if (utils.isMongooseArray(_arr[i])) { - notify(val, _arr[i]); - } else if (_arr[i]) { - _arr[i].emit(event, val); - } - } - }; - }, - set: function set(i, val, skipModified) { - var arr = this.__array; - - if (skipModified) { - arr[i] = val; - return this; - } - - var value = methods._cast.call(this, val, i); - - methods._markModified.call(this, i); - - arr[i] = value; - return this; - }, - _markModified: function _markModified(elem, embeddedPath) { - var parent = this[arrayParentSymbol]; - var dirtyPath; - - if (parent) { - dirtyPath = this[arrayPathSymbol]; - - if (arguments.length) { - if (embeddedPath != null) { - // an embedded doc bubbled up the change - var index = elem.__index; - dirtyPath = dirtyPath + '.' + index + '.' + embeddedPath; - } else { - // directly set an index - dirtyPath = dirtyPath + '.' + elem; - } - } - - if (dirtyPath != null && dirtyPath.endsWith('.$')) { - return this; - } - - parent.markModified(dirtyPath, arguments.length !== 0 ? elem : parent); - } - - return this; - } -}; -module.exports = methods; -/*! - * If this is a document array, each element may contain single - * populated paths, so we need to modify the top-level document's - * populated cache. See gh-8247, gh-8265. - */ - -function _updateParentPopulated(arr) { - var parent = arr[arrayParentSymbol]; - if (!parent || parent.$__.populated == null) return; - var populatedPaths = Object.keys(parent.$__.populated).filter(function (p) { - return p.startsWith(arr[arrayPathSymbol] + '.'); - }); - - var _iterator2 = _createForOfIteratorHelper(populatedPaths), - _step2; - - try { - var _loop = function _loop() { - var path = _step2.value; - var remnant = path.slice((arr[arrayPathSymbol] + '.').length); - - if (!Array.isArray(parent.$__.populated[path].value)) { - return "continue"; - } - - parent.$__.populated[path].value = arr.map(function (val) { - return val.$populated(remnant); - }); - }; - - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - var _ret = _loop(); - - if (_ret === "continue") continue; - } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); - } -} - -/***/ }), - -/***/ 1362: -/***/ ((module, exports, __webpack_require__) => { - -"use strict"; -/*! - * Module dependencies. - */ - - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -var Document = __webpack_require__(8727); - -var mongooseArrayMethods = __webpack_require__(8075); - -var arrayAtomicsSymbol = (__webpack_require__(8770).arrayAtomicsSymbol); - -var arrayAtomicsBackupSymbol = (__webpack_require__(8770).arrayAtomicsBackupSymbol); - -var arrayParentSymbol = (__webpack_require__(8770).arrayParentSymbol); - -var arrayPathSymbol = (__webpack_require__(8770).arrayPathSymbol); - -var arraySchemaSymbol = (__webpack_require__(8770).arraySchemaSymbol); -/** - * Mongoose Array constructor. - * - * #### Note: - * - * _Values always have to be passed to the constructor to initialize, otherwise `MongooseArray#push` will mark the array as modified._ - * - * @param {Array} values - * @param {String} path - * @param {Document} doc parent document - * @api private - * @inherits Array - * @see https://bit.ly/f6CnZU - */ - - -var _basePush = Array.prototype.push; -var numberRE = /^\d+$/; - -function MongooseArray(values, path, doc, schematype) { - var _internals; - - var __array; - - if (Array.isArray(values)) { - var len = values.length; // Perf optimizations for small arrays: much faster to use `...` than `for` + `push`, - // but large arrays may cause stack overflows. And for arrays of length 0/1, just - // modifying the array is faster. Seems small, but adds up when you have a document - // with thousands of nested arrays. - - if (len === 0) { - __array = new Array(); - } else if (len === 1) { - __array = new Array(1); - __array[0] = values[0]; - } else if (len < 10000) { - __array = new Array(); - - _basePush.apply(__array, values); - } else { - __array = new Array(); - - for (var i = 0; i < len; ++i) { - _basePush.call(__array, values[i]); - } - } - } else { - __array = []; - } - - var internals = (_internals = {}, _defineProperty(_internals, arrayAtomicsSymbol, {}), _defineProperty(_internals, arrayAtomicsBackupSymbol, void 0), _defineProperty(_internals, arrayPathSymbol, path), _defineProperty(_internals, arraySchemaSymbol, schematype), _defineProperty(_internals, arrayParentSymbol, void 0), _defineProperty(_internals, "isMongooseArray", true), _defineProperty(_internals, "isMongooseArrayProxy", true), _defineProperty(_internals, "__array", __array), _internals); - - if (values && values[arrayAtomicsSymbol] != null) { - internals[arrayAtomicsSymbol] = values[arrayAtomicsSymbol]; - } // Because doc comes from the context of another function, doc === global - // can happen if there was a null somewhere up the chain (see #3020) - // RB Jun 17, 2015 updated to check for presence of expected paths instead - // to make more proof against unusual node environments - - - if (doc != null && doc instanceof Document) { - internals[arrayParentSymbol] = doc; - internals[arraySchemaSymbol] = schematype || doc.schema.path(path); - } - - var proxy = new Proxy(__array, { - get: function get(target, prop) { - if (internals.hasOwnProperty(prop)) { - return internals[prop]; - } - - if (mongooseArrayMethods.hasOwnProperty(prop)) { - return mongooseArrayMethods[prop]; - } - - return __array[prop]; - }, - set: function set(target, prop, value) { - if (typeof prop === 'string' && numberRE.test(prop)) { - mongooseArrayMethods.set.call(proxy, prop, value, false); - } else if (internals.hasOwnProperty(prop)) { - internals[prop] = value; - } else { - __array[prop] = value; - } - - return true; - } - }); - return proxy; -} -/*! - * Module exports. - */ - - -module.exports = exports = MongooseArray; - -/***/ }), - -/***/ 7339: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -exports.isMongooseArray = function (mongooseArray) { - return Array.isArray(mongooseArray) && mongooseArray.isMongooseArray; -}; - -/***/ }), - -/***/ 8075: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/* provided dependency */ var Buffer = __webpack_require__(365)["Buffer"]; - - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } - -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } - -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - -var Document = __webpack_require__(8727); - -var ArraySubdocument = __webpack_require__(1568); - -var MongooseError = __webpack_require__(5202); - -var cleanModifiedSubpaths = __webpack_require__(4134); - -var internalToObjectOptions = (__webpack_require__(4962)/* .internalToObjectOptions */ .h); - -var utils = __webpack_require__(6872); - -var isBsonType = __webpack_require__(1563); - -var arrayAtomicsSymbol = (__webpack_require__(8770).arrayAtomicsSymbol); - -var arrayParentSymbol = (__webpack_require__(8770).arrayParentSymbol); - -var arrayPathSymbol = (__webpack_require__(8770).arrayPathSymbol); - -var arraySchemaSymbol = (__webpack_require__(8770).arraySchemaSymbol); - -var populateModelSymbol = (__webpack_require__(8770).populateModelSymbol); - -var slicedSymbol = Symbol('mongoose#Array#sliced'); -var _basePush = Array.prototype.push; -/*! - * ignore - */ - -var methods = { - /** - * Depopulates stored atomic operation values as necessary for direct insertion to MongoDB. - * - * If no atomics exist, we return all array values after conversion. - * - * @return {Array} - * @method $__getAtomics - * @memberOf MongooseArray - * @instance - * @api private - */ - $__getAtomics: function $__getAtomics() { - var ret = []; - var keys = Object.keys(this[arrayAtomicsSymbol] || {}); - var i = keys.length; - var opts = Object.assign({}, internalToObjectOptions, { - _isNested: true - }); - - if (i === 0) { - ret[0] = ['$set', this.toObject(opts)]; - return ret; - } - - while (i--) { - var op = keys[i]; - var val = this[arrayAtomicsSymbol][op]; // the atomic values which are arrays are not MongooseArrays. we - // need to convert their elements as if they were MongooseArrays - // to handle populated arrays versus DocumentArrays properly. - - if (utils.isMongooseObject(val)) { - val = val.toObject(opts); - } else if (Array.isArray(val)) { - val = this.toObject.call(val, opts); - } else if (val != null && Array.isArray(val.$each)) { - val.$each = this.toObject.call(val.$each, opts); - } else if (val != null && typeof val.valueOf === 'function') { - val = val.valueOf(); - } - - if (op === '$addToSet') { - val = { - $each: val - }; - } - - ret.push([op, val]); - } - - return ret; - }, - - /*! - * ignore - */ - $atomics: function $atomics() { - return this[arrayAtomicsSymbol]; - }, - - /*! - * ignore - */ - $parent: function $parent() { - return this[arrayParentSymbol]; - }, - - /*! - * ignore - */ - $path: function $path() { - return this[arrayPathSymbol]; - }, - - /** - * Atomically shifts the array at most one time per document `save()`. - * - * #### Note: - * - * _Calling this multiple times on an array before saving sends the same command as calling it once._ - * _This update is implemented using the MongoDB [$pop](https://www.mongodb.org/display/DOCS/Updating/#Updating-%24pop) method which enforces this restriction._ - * - * doc.array = [1,2,3]; - * - * const shifted = doc.array.$shift(); - * console.log(shifted); // 1 - * console.log(doc.array); // [2,3] - * - * // no affect - * shifted = doc.array.$shift(); - * console.log(doc.array); // [2,3] - * - * doc.save(function (err) { - * if (err) return handleError(err); - * - * // we saved, now $shift works again - * shifted = doc.array.$shift(); - * console.log(shifted ); // 2 - * console.log(doc.array); // [3] - * }) - * - * @api public - * @memberOf MongooseArray - * @instance - * @method $shift - * @see mongodb https://www.mongodb.org/display/DOCS/Updating/#Updating-%24pop - */ - $shift: function $shift() { - this._registerAtomic('$pop', -1); - - this._markModified(); // only allow shifting once - - - if (this._shifted) { - return; - } - - this._shifted = true; - return [].shift.call(this); - }, - - /** - * Pops the array atomically at most one time per document `save()`. - * - * #### NOTE: - * - * _Calling this multiple times on an array before saving sends the same command as calling it once._ - * _This update is implemented using the MongoDB [$pop](https://www.mongodb.org/display/DOCS/Updating/#Updating-%24pop) method which enforces this restriction._ - * - * doc.array = [1,2,3]; - * - * const popped = doc.array.$pop(); - * console.log(popped); // 3 - * console.log(doc.array); // [1,2] - * - * // no affect - * popped = doc.array.$pop(); - * console.log(doc.array); // [1,2] - * - * doc.save(function (err) { - * if (err) return handleError(err); - * - * // we saved, now $pop works again - * popped = doc.array.$pop(); - * console.log(popped); // 2 - * console.log(doc.array); // [1] - * }) - * - * @api public - * @method $pop - * @memberOf MongooseArray - * @instance - * @see mongodb https://www.mongodb.org/display/DOCS/Updating/#Updating-%24pop - * @method $pop - * @memberOf MongooseArray - */ - $pop: function $pop() { - this._registerAtomic('$pop', 1); - - this._markModified(); // only allow popping once - - - if (this._popped) { - return; - } - - this._popped = true; - return [].pop.call(this); - }, - - /*! - * ignore - */ - $schema: function $schema() { - return this[arraySchemaSymbol]; - }, - - /** - * Casts a member based on this arrays schema. - * - * @param {any} value - * @return value the casted value - * @method _cast - * @api private - * @memberOf MongooseArray - */ - _cast: function _cast(value) { - var populated = false; - var Model; - var parent = this[arrayParentSymbol]; - - if (parent) { - populated = parent.$populated(this[arrayPathSymbol], true); - } - - if (populated && value !== null && value !== undefined) { - // cast to the populated Models schema - Model = populated.options[populateModelSymbol]; // only objects are permitted so we can safely assume that - // non-objects are to be interpreted as _id - - if (Buffer.isBuffer(value) || isBsonType(value, 'ObjectID') || !utils.isObject(value)) { - value = { - _id: value - }; - } // gh-2399 - // we should cast model only when it's not a discriminator - - - var isDisc = value.schema && value.schema.discriminatorMapping && value.schema.discriminatorMapping.key !== undefined; - - if (!isDisc) { - value = new Model(value); - } - - return this[arraySchemaSymbol].caster.applySetters(value, parent, true); - } - - return this[arraySchemaSymbol].caster.applySetters(value, parent, false); - }, - - /** - * Internal helper for .map() - * - * @api private - * @return {Number} - * @method _mapCast - * @memberOf MongooseArray - */ - _mapCast: function _mapCast(val, index) { - return this._cast(val, this.length + index); - }, - - /** - * Marks this array as modified. - * - * If it bubbles up from an embedded document change, then it takes the following arguments (otherwise, takes 0 arguments) - * - * @param {ArraySubdocument} subdoc the embedded doc that invoked this method on the Array - * @param {String} embeddedPath the path which changed in the subdoc - * @method _markModified - * @api private - * @memberOf MongooseArray - */ - _markModified: function _markModified(elem) { - var parent = this[arrayParentSymbol]; - var dirtyPath; - - if (parent) { - dirtyPath = this[arrayPathSymbol]; - - if (arguments.length) { - dirtyPath = dirtyPath + '.' + elem; - } - - if (dirtyPath != null && dirtyPath.endsWith('.$')) { - return this; - } - - parent.markModified(dirtyPath, arguments.length !== 0 ? elem : parent); - } - - return this; - }, - - /** - * Register an atomic operation with the parent. - * - * @param {Array} op operation - * @param {any} val - * @method _registerAtomic - * @api private - * @memberOf MongooseArray - */ - _registerAtomic: function _registerAtomic(op, val) { - if (this[slicedSymbol]) { - return; - } - - if (op === '$set') { - // $set takes precedence over all other ops. - // mark entire array modified. - this[arrayAtomicsSymbol] = { - $set: val - }; - cleanModifiedSubpaths(this[arrayParentSymbol], this[arrayPathSymbol]); - - this._markModified(); - - return this; - } - - var atomics = this[arrayAtomicsSymbol]; // reset pop/shift after save - - if (op === '$pop' && !('$pop' in atomics)) { - var _this = this; - - this[arrayParentSymbol].once('save', function () { - _this._popped = _this._shifted = null; - }); - } // check for impossible $atomic combos (Mongo denies more than one - // $atomic op on a single path - - - if (atomics.$set || Object.keys(atomics).length && !(op in atomics)) { - // a different op was previously registered. - // save the entire thing. - this[arrayAtomicsSymbol] = { - $set: this - }; - return this; - } - - var selector; - - if (op === '$pullAll' || op === '$addToSet') { - atomics[op] || (atomics[op] = []); - atomics[op] = atomics[op].concat(val); - } else if (op === '$pullDocs') { - var pullOp = atomics['$pull'] || (atomics['$pull'] = {}); - - if (val[0] instanceof ArraySubdocument) { - selector = pullOp['$or'] || (pullOp['$or'] = []); - Array.prototype.push.apply(selector, val.map(function (v) { - return v.toObject({ - transform: false, - virtuals: false - }); - })); - } else { - selector = pullOp['_id'] || (pullOp['_id'] = { - $in: [] - }); - selector['$in'] = selector['$in'].concat(val); - } - } else if (op === '$push') { - atomics.$push = atomics.$push || { - $each: [] - }; - - if (val != null && utils.hasUserDefinedProperty(val, '$each')) { - atomics.$push = val; - } else { - atomics.$push.$each = atomics.$push.$each.concat(val); - } - } else { - atomics[op] = val; - } - - return this; - }, - - /** - * Adds values to the array if not already present. - * - * #### Example: - * - * console.log(doc.array) // [2,3,4] - * const added = doc.array.addToSet(4,5); - * console.log(doc.array) // [2,3,4,5] - * console.log(added) // [5] - * - * @param {any} [args...] - * @return {Array} the values that were added - * @memberOf MongooseArray - * @api public - * @method addToSet - */ - addToSet: function addToSet() { - _checkManualPopulation(this, arguments); - - var values = [].map.call(arguments, this._mapCast, this); - values = this[arraySchemaSymbol].applySetters(values, this[arrayParentSymbol]); - var added = []; - var type = ''; - - if (values[0] instanceof ArraySubdocument) { - type = 'doc'; - } else if (values[0] instanceof Date) { - type = 'date'; - } - - var rawValues = utils.isMongooseArray(values) ? values.__array : this; - var rawArray = utils.isMongooseArray(this) ? this.__array : this; - rawValues.forEach(function (v) { - var found; - var val = +v; - - switch (type) { - case 'doc': - found = this.some(function (doc) { - return doc.equals(v); - }); - break; - - case 'date': - found = this.some(function (d) { - return +d === val; - }); - break; - - default: - found = ~this.indexOf(v); - } - - if (!found) { - this._markModified(); - - rawArray.push(v); - - this._registerAtomic('$addToSet', v); - - [].push.call(added, v); - } - }, this); - return added; - }, - - /** - * Returns the number of pending atomic operations to send to the db for this array. - * - * @api private - * @return {Number} - * @method hasAtomics - * @memberOf MongooseArray - */ - hasAtomics: function hasAtomics() { - if (!utils.isPOJO(this[arrayAtomicsSymbol])) { - return 0; - } - - return Object.keys(this[arrayAtomicsSymbol]).length; - }, - - /** - * Return whether or not the `obj` is included in the array. - * - * @param {Object} obj the item to check - * @param {Number} fromIndex - * @return {Boolean} - * @api public - * @method includes - * @memberOf MongooseArray - */ - includes: function includes(obj, fromIndex) { - var ret = this.indexOf(obj, fromIndex); - return ret !== -1; - }, - - /** - * Return the index of `obj` or `-1` if not found. - * - * @param {Object} obj the item to look for - * @param {Number} fromIndex - * @return {Number} - * @api public - * @method indexOf - * @memberOf MongooseArray - */ - indexOf: function indexOf(obj, fromIndex) { - if (isBsonType(obj, 'ObjectID')) { - obj = obj.toString(); - } - - fromIndex = fromIndex == null ? 0 : fromIndex; - var len = this.length; - - for (var i = fromIndex; i < len; ++i) { - if (obj == this[i]) { - return i; - } - } - - return -1; - }, - - /** - * Helper for console.log - * - * @api public - * @method inspect - * @memberOf MongooseArray - */ - inspect: function inspect() { - return JSON.stringify(this); - }, - - /** - * Pushes items to the array non-atomically. - * - * #### Note: - * - * _marks the entire array as modified, which if saved, will store it as a `$set` operation, potentially overwritting any changes that happen between when you retrieved the object and when you save it._ - * - * @param {any} [args...] - * @api public - * @method nonAtomicPush - * @memberOf MongooseArray - */ - nonAtomicPush: function nonAtomicPush() { - var values = [].map.call(arguments, this._mapCast, this); - - this._markModified(); - - var ret = [].push.apply(this, values); - - this._registerAtomic('$set', this); - - return ret; - }, - - /** - * Wraps [`Array#pop`](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/pop) with proper change tracking. - * - * #### Note: - * - * _marks the entire array as modified which will pass the entire thing to $set potentially overwriting any changes that happen between when you retrieved the object and when you save it._ - * - * @see MongooseArray#$pop #types_array_MongooseArray-%24pop - * @api public - * @method pop - * @memberOf MongooseArray - */ - pop: function pop() { - this._markModified(); - - var ret = [].pop.call(this); - - this._registerAtomic('$set', this); - - return ret; - }, - - /** - * Pulls items from the array atomically. Equality is determined by casting - * the provided value to an embedded document and comparing using - * [the `Document.equals()` function.](/docs/api.html#document_Document-equals) - * - * #### Examples: - * - * doc.array.pull(ObjectId) - * doc.array.pull({ _id: 'someId' }) - * doc.array.pull(36) - * doc.array.pull('tag 1', 'tag 2') - * - * To remove a document from a subdocument array we may pass an object with a matching `_id`. - * - * doc.subdocs.push({ _id: 4815162342 }) - * doc.subdocs.pull({ _id: 4815162342 }) // removed - * - * Or we may passing the _id directly and let mongoose take care of it. - * - * doc.subdocs.push({ _id: 4815162342 }) - * doc.subdocs.pull(4815162342); // works - * - * The first pull call will result in a atomic operation on the database, if pull is called repeatedly without saving the document, a $set operation is used on the complete array instead, overwriting possible changes that happened on the database in the meantime. - * - * @param {any} [args...] - * @see mongodb https://www.mongodb.org/display/DOCS/Updating/#Updating-%24pull - * @api public - * @method pull - * @memberOf MongooseArray - */ - pull: function pull() { - var values = [].map.call(arguments, this._cast, this); - var cur = this[arrayParentSymbol].get(this[arrayPathSymbol]); - var i = cur.length; - var mem; - - this._markModified(); - - while (i--) { - mem = cur[i]; - - if (mem instanceof Document) { - var some = values.some(function (v) { - return mem.equals(v); - }); - - if (some) { - [].splice.call(cur, i, 1); - } - } else if (~cur.indexOf.call(values, mem)) { - [].splice.call(cur, i, 1); - } - } - - if (values[0] instanceof ArraySubdocument) { - this._registerAtomic('$pullDocs', values.map(function (v) { - return v.$__getValue('_id') || v; - })); - } else { - this._registerAtomic('$pullAll', values); - } // Might have modified child paths and then pulled, like - // `doc.children[1].name = 'test';` followed by - // `doc.children.remove(doc.children[0]);`. In this case we fall back - // to a `$set` on the whole array. See #3511 - - - if (cleanModifiedSubpaths(this[arrayParentSymbol], this[arrayPathSymbol]) > 0) { - this._registerAtomic('$set', this); - } - - return this; - }, - - /** - * Wraps [`Array#push`](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/push) with proper change tracking. - * - * #### Example: - * - * const schema = Schema({ nums: [Number] }); - * const Model = mongoose.model('Test', schema); - * - * const doc = await Model.create({ nums: [3, 4] }); - * doc.nums.push(5); // Add 5 to the end of the array - * await doc.save(); - * - * // You can also pass an object with `$each` as the - * // first parameter to use MongoDB's `$position` - * doc.nums.push({ - * $each: [1, 2], - * $position: 0 - * }); - * doc.nums; // [1, 2, 3, 4, 5] - * - * @param {Object} [args...] - * @api public - * @method push - * @memberOf MongooseArray - */ - push: function push() { - var values = arguments; - var atomic = values; - var isOverwrite = values[0] != null && utils.hasUserDefinedProperty(values[0], '$each'); - var arr = utils.isMongooseArray(this) ? this.__array : this; - - if (isOverwrite) { - atomic = values[0]; - values = values[0].$each; - } - - if (this[arraySchemaSymbol] == null) { - return _basePush.apply(this, values); - } - - _checkManualPopulation(this, values); - - var parent = this[arrayParentSymbol]; - values = [].map.call(values, this._mapCast, this); - values = this[arraySchemaSymbol].applySetters(values, parent, undefined, undefined, { - skipDocumentArrayCast: true - }); - var ret; - var atomics = this[arrayAtomicsSymbol]; - - this._markModified(); - - if (isOverwrite) { - atomic.$each = values; - - if ((atomics.$push && atomics.$push.$each && atomics.$push.$each.length || 0) !== 0 && atomics.$push.$position != atomic.$position) { - throw new MongooseError('Cannot call `Array#push()` multiple times ' + 'with different `$position`'); - } - - if (atomic.$position != null) { - [].splice.apply(arr, [atomic.$position, 0].concat(values)); - ret = this.length; - } else { - ret = [].push.apply(arr, values); - } - } else { - if ((atomics.$push && atomics.$push.$each && atomics.$push.$each.length || 0) !== 0 && atomics.$push.$position != null) { - throw new MongooseError('Cannot call `Array#push()` multiple times ' + 'with different `$position`'); - } - - atomic = values; - ret = [].push.apply(arr, values); - } - - this._registerAtomic('$push', atomic); - - return ret; - }, - - /** - * Alias of [pull](#mongoosearray_MongooseArray-pull) - * - * @see MongooseArray#pull #types_array_MongooseArray-pull - * @see mongodb https://www.mongodb.org/display/DOCS/Updating/#Updating-%24pull - * @api public - * @memberOf MongooseArray - * @instance - * @method remove - */ - remove: function remove() { - return this.pull.apply(this, arguments); - }, - - /** - * Sets the casted `val` at index `i` and marks the array modified. - * - * #### Example: - * - * // given documents based on the following - * const Doc = mongoose.model('Doc', new Schema({ array: [Number] })); - * - * const doc = new Doc({ array: [2,3,4] }) - * - * console.log(doc.array) // [2,3,4] - * - * doc.array.set(1,"5"); - * console.log(doc.array); // [2,5,4] // properly cast to number - * doc.save() // the change is saved - * - * // VS not using array#set - * doc.array[1] = "5"; - * console.log(doc.array); // [2,"5",4] // no casting - * doc.save() // change is not saved - * - * @return {Array} this - * @api public - * @method set - * @memberOf MongooseArray - */ - set: function set(i, val, skipModified) { - var arr = this.__array; - - if (skipModified) { - arr[i] = val; - return this; - } - - var value = methods._cast.call(this, val, i); - - methods._markModified.call(this, i); - - arr[i] = value; - return this; - }, - - /** - * Wraps [`Array#shift`](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/unshift) with proper change tracking. - * - * #### Example: - * - * doc.array = [2,3]; - * const res = doc.array.shift(); - * console.log(res) // 2 - * console.log(doc.array) // [3] - * - * #### Note: - * - * _marks the entire array as modified, which if saved, will store it as a `$set` operation, potentially overwritting any changes that happen between when you retrieved the object and when you save it._ - * - * @api public - * @method shift - * @memberOf MongooseArray - */ - shift: function shift() { - var arr = utils.isMongooseArray(this) ? this.__array : this; - - this._markModified(); - - var ret = [].shift.call(arr); - - this._registerAtomic('$set', this); - - return ret; - }, - - /** - * Wraps [`Array#sort`](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/sort) with proper change tracking. - * - * #### Note: - * - * _marks the entire array as modified, which if saved, will store it as a `$set` operation, potentially overwritting any changes that happen between when you retrieved the object and when you save it._ - * - * @api public - * @method sort - * @memberOf MongooseArray - * @see https://masteringjs.io/tutorials/fundamentals/array-sort - */ - sort: function sort() { - var arr = utils.isMongooseArray(this) ? this.__array : this; - var ret = [].sort.apply(arr, arguments); - - this._registerAtomic('$set', this); - - return ret; - }, - - /** - * Wraps [`Array#splice`](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/splice) with proper change tracking and casting. - * - * #### Note: - * - * _marks the entire array as modified, which if saved, will store it as a `$set` operation, potentially overwritting any changes that happen between when you retrieved the object and when you save it._ - * - * @api public - * @method splice - * @memberOf MongooseArray - * @see https://masteringjs.io/tutorials/fundamentals/array-splice - */ - splice: function splice() { - var ret; - var arr = utils.isMongooseArray(this) ? this.__array : this; - - _checkManualPopulation(this, Array.prototype.slice.call(arguments, 2)); - - if (arguments.length) { - var vals; - - if (this[arraySchemaSymbol] == null) { - vals = arguments; - } else { - vals = []; - - for (var i = 0; i < arguments.length; ++i) { - vals[i] = i < 2 ? arguments[i] : this._cast(arguments[i], arguments[0] + (i - 2)); - } - } - - ret = [].splice.apply(arr, vals); - - this._registerAtomic('$set', this); - } - - return ret; - }, - - /*! - * ignore - */ - toBSON: function toBSON() { - return this.toObject(internalToObjectOptions); - }, - - /** - * Returns a native js Array. - * - * @param {Object} options - * @return {Array} - * @api public - * @method toObject - * @memberOf MongooseArray - */ - toObject: function toObject(options) { - var arr = utils.isMongooseArray(this) ? this.__array : this; - - if (options && options.depopulate) { - options = utils.clone(options); - options._isNested = true; // Ensure return value is a vanilla array, because in Node.js 6+ `map()` - // is smart enough to use the inherited array's constructor. - - return [].concat(arr).map(function (doc) { - return doc instanceof Document ? doc.toObject(options) : doc; - }); - } - - return [].concat(arr); - }, - $toObject: function $toObject() { - return this.constructor.prototype.toObject.apply(this, arguments); - }, - - /** - * Wraps [`Array#unshift`](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/unshift) with proper change tracking. - * - * #### Note: - * - * _marks the entire array as modified, which if saved, will store it as a `$set` operation, potentially overwriting any changes that happen between when you retrieved the object and when you save it._ - * - * @api public - * @method unshift - * @memberOf MongooseArray - */ - unshift: function unshift() { - _checkManualPopulation(this, arguments); - - var values; - - if (this[arraySchemaSymbol] == null) { - values = arguments; - } else { - values = [].map.call(arguments, this._cast, this); - values = this[arraySchemaSymbol].applySetters(values, this[arrayParentSymbol]); - } - - var arr = utils.isMongooseArray(this) ? this.__array : this; - - this._markModified(); - - [].unshift.apply(arr, values); - - this._registerAtomic('$set', this); - - return this.length; - } -}; -/*! - * ignore - */ - -function _isAllSubdocs(docs, ref) { - if (!ref) { - return false; - } - - var _iterator = _createForOfIteratorHelper(docs), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var arg = _step.value; - - if (arg == null) { - return false; - } - - var model = arg.constructor; - - if (!(arg instanceof Document) || model.modelName !== ref && model.baseModelName !== ref) { - return false; - } - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - return true; -} -/*! - * ignore - */ - - -function _checkManualPopulation(arr, docs) { - var ref = arr == null ? null : arr[arraySchemaSymbol] && arr[arraySchemaSymbol].caster && arr[arraySchemaSymbol].caster.options && arr[arraySchemaSymbol].caster.options.ref || null; - - if (arr.length === 0 && docs.length !== 0) { - if (_isAllSubdocs(docs, ref)) { - arr[arrayParentSymbol].$populated(arr[arrayPathSymbol], [], _defineProperty({}, populateModelSymbol, docs[0].constructor)); - } - } -} - -var returnVanillaArrayMethods = ['filter', 'flat', 'flatMap', 'map', 'slice']; - -var _loop = function _loop() { - var method = _returnVanillaArrayMe[_i]; - - if (Array.prototype[method] == null) { - return "continue"; - } - - methods[method] = function () { - var _arr = utils.isMongooseArray(this) ? this.__array : this; - - var arr = [].concat(_arr); - return arr[method].apply(arr, arguments); - }; -}; - -for (var _i = 0, _returnVanillaArrayMe = returnVanillaArrayMethods; _i < _returnVanillaArrayMe.length; _i++) { - var _ret = _loop(); - - if (_ret === "continue") continue; -} - -module.exports = methods; - -/***/ }), - -/***/ 4051: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/* provided dependency */ var Buffer = __webpack_require__(365)["Buffer"]; -/*! - * Module dependencies. - */ - - -var Binary = (__webpack_require__(9906).get)().Binary; - -var utils = __webpack_require__(6872); -/** - * Mongoose Buffer constructor. - * - * Values always have to be passed to the constructor to initialize. - * - * @param {Buffer} value - * @param {String} encode - * @param {Number} offset - * @api private - * @inherits Buffer - * @see https://bit.ly/f6CnZU - */ - - -function MongooseBuffer(value, encode, offset) { - var val = value; - - if (value == null) { - val = 0; - } - - var encoding; - var path; - var doc; - - if (Array.isArray(encode)) { - // internal casting - path = encode[0]; - doc = encode[1]; - } else { - encoding = encode; - } - - var buf; - - if (typeof val === 'number' || val instanceof Number) { - buf = Buffer.alloc(val); - } else { - // string, array or object { type: 'Buffer', data: [...] } - buf = Buffer.from(val, encoding, offset); - } - - utils.decorate(buf, MongooseBuffer.mixin); - buf.isMongooseBuffer = true; // make sure these internal props don't show up in Object.keys() - - buf[MongooseBuffer.pathSymbol] = path; - buf[parentSymbol] = doc; - buf._subtype = 0; - return buf; -} - -var pathSymbol = Symbol["for"]('mongoose#Buffer#_path'); -var parentSymbol = Symbol["for"]('mongoose#Buffer#_parent'); -MongooseBuffer.pathSymbol = pathSymbol; -/*! - * Inherit from Buffer. - */ - -MongooseBuffer.mixin = { - /** - * Default subtype for the Binary representing this Buffer - * - * @api private - * @property _subtype - * @receiver MongooseBuffer - */ - _subtype: undefined, - - /** - * Marks this buffer as modified. - * - * @api private - * @method _markModified - * @receiver MongooseBuffer - */ - _markModified: function _markModified() { - var parent = this[parentSymbol]; - - if (parent) { - parent.markModified(this[MongooseBuffer.pathSymbol]); - } - - return this; - }, - - /** - * Writes the buffer. - * - * @api public - * @method write - * @receiver MongooseBuffer - */ - write: function write() { - var written = Buffer.prototype.write.apply(this, arguments); - - if (written > 0) { - this._markModified(); - } - - return written; - }, - - /** - * Copies the buffer. - * - * #### Note: - * - * `Buffer#copy` does not mark `target` as modified so you must copy from a `MongooseBuffer` for it to work as expected. This is a work around since `copy` modifies the target, not this. - * - * @return {Number} The number of bytes copied. - * @param {Buffer} target - * @method copy - * @receiver MongooseBuffer - */ - copy: function copy(target) { - var ret = Buffer.prototype.copy.apply(this, arguments); - - if (target && target.isMongooseBuffer) { - target._markModified(); - } - - return ret; - } -}; -/*! - * Compile other Buffer methods marking this buffer as modified. - */ - -( // node < 0.5 -'writeUInt8 writeUInt16 writeUInt32 writeInt8 writeInt16 writeInt32 ' + 'writeFloat writeDouble fill ' + 'utf8Write binaryWrite asciiWrite set ' + // node >= 0.5 -'writeUInt16LE writeUInt16BE writeUInt32LE writeUInt32BE ' + 'writeInt16LE writeInt16BE writeInt32LE writeInt32BE ' + 'writeFloatLE writeFloatBE writeDoubleLE writeDoubleBE').split(' ').forEach(function (method) { - if (!Buffer.prototype[method]) { - return; - } - - MongooseBuffer.mixin[method] = function () { - var ret = Buffer.prototype[method].apply(this, arguments); - - this._markModified(); - - return ret; - }; -}); -/** - * Converts this buffer to its Binary type representation. - * - * ####SubTypes: - * - * const bson = require('bson') - * bson.BSON_BINARY_SUBTYPE_DEFAULT - * bson.BSON_BINARY_SUBTYPE_FUNCTION - * bson.BSON_BINARY_SUBTYPE_BYTE_ARRAY - * bson.BSON_BINARY_SUBTYPE_UUID - * bson.BSON_BINARY_SUBTYPE_MD5 - * bson.BSON_BINARY_SUBTYPE_USER_DEFINED - * - * doc.buffer.toObject(bson.BSON_BINARY_SUBTYPE_USER_DEFINED); - * - * @see https://bsonspec.org/#/specification - * @param {Hex} [subtype] - * @return {Binary} - * @api public - * @method toObject - * @receiver MongooseBuffer - */ - -MongooseBuffer.mixin.toObject = function (options) { - var subtype = typeof options === 'number' ? options : this._subtype || 0; - return new Binary(Buffer.from(this), subtype); -}; - -MongooseBuffer.mixin.$toObject = MongooseBuffer.mixin.toObject; -/** - * Converts this buffer for storage in MongoDB, including subtype - * - * @return {Binary} - * @api public - * @method toBSON - * @receiver MongooseBuffer - */ - -MongooseBuffer.mixin.toBSON = function () { - return new Binary(this, this._subtype || 0); -}; -/** - * Determines if this buffer is equals to `other` buffer - * - * @param {Buffer} other - * @return {Boolean} - * @method equals - * @receiver MongooseBuffer - */ - - -MongooseBuffer.mixin.equals = function (other) { - if (!Buffer.isBuffer(other)) { - return false; - } - - if (this.length !== other.length) { - return false; - } - - for (var i = 0; i < this.length; ++i) { - if (this[i] !== other[i]) { - return false; - } - } - - return true; -}; -/** - * Sets the subtype option and marks the buffer modified. - * - * ####SubTypes: - * - * const bson = require('bson') - * bson.BSON_BINARY_SUBTYPE_DEFAULT - * bson.BSON_BINARY_SUBTYPE_FUNCTION - * bson.BSON_BINARY_SUBTYPE_BYTE_ARRAY - * bson.BSON_BINARY_SUBTYPE_UUID - * bson.BSON_BINARY_SUBTYPE_MD5 - * bson.BSON_BINARY_SUBTYPE_USER_DEFINED - * - * doc.buffer.subtype(bson.BSON_BINARY_SUBTYPE_UUID); - * - * @see https://bsonspec.org/#/specification - * @param {Hex} subtype - * @api public - * @method subtype - * @receiver MongooseBuffer - */ - - -MongooseBuffer.mixin.subtype = function (subtype) { - if (typeof subtype !== 'number') { - throw new TypeError('Invalid subtype. Expected a number'); - } - - if (this._subtype !== subtype) { - this._markModified(); - } - - this._subtype = subtype; -}; -/*! - * Module exports. - */ - - -MongooseBuffer.Binary = Binary; -module.exports = MongooseBuffer; - -/***/ }), - -/***/ 5003: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/** - * ObjectId type constructor - * - * #### Example - * - * const id = new mongoose.Types.ObjectId; - * - * @constructor ObjectId - */ - - -module.exports = (__webpack_require__(9906).get)().Decimal128; - -/***/ }), - -/***/ 8941: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; -/*! - * Module exports. - */ - - -exports.Array = __webpack_require__(1362); -exports.Buffer = __webpack_require__(4051); -exports.Document = // @deprecate -exports.Embedded = __webpack_require__(1568); -exports.DocumentArray = __webpack_require__(6077); -exports.Decimal128 = __webpack_require__(5003); -exports.ObjectId = __webpack_require__(6079); -exports.Map = __webpack_require__(3828); -exports.Subdocument = __webpack_require__(2591); - -/***/ }), - -/***/ 3828: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } - -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } - -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } - -function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); } - -function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); } - -function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct.bind(); } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -var Mixed = __webpack_require__(3861); - -var clone = __webpack_require__(1973); - -var deepEqual = (__webpack_require__(6872).deepEqual); - -var getConstructorName = __webpack_require__(1981); - -var handleSpreadDoc = __webpack_require__(719); - -var util = __webpack_require__(161); - -var specialProperties = __webpack_require__(2862); - -var isBsonType = __webpack_require__(1563); - -var populateModelSymbol = (__webpack_require__(8770).populateModelSymbol); -/*! - * ignore - */ - - -var MongooseMap = /*#__PURE__*/function (_Map) { - _inherits(MongooseMap, _Map); - - var _super = _createSuper(MongooseMap); - - function MongooseMap(v, path, doc, schemaType) { - var _this; - - _classCallCheck(this, MongooseMap); - - if (getConstructorName(v) === 'Object') { - v = Object.keys(v).reduce(function (arr, key) { - return arr.concat([[key, v[key]]]); - }, []); - } - - _this = _super.call(this, v); - _this.$__parent = doc != null && doc.$__ != null ? doc : null; - _this.$__path = path; - _this.$__schemaType = schemaType == null ? new Mixed(path) : schemaType; - - _this.$__runDeferred(); - - return _this; - } - - _createClass(MongooseMap, [{ - key: "$init", - value: function $init(key, value) { - checkValidKey(key); - - _get(_getPrototypeOf(MongooseMap.prototype), "set", this).call(this, key, value); - - if (value != null && value.$isSingleNested) { - value.$basePath = this.$__path + '.' + key; - } - } - }, { - key: "$__set", - value: function $__set(key, value) { - _get(_getPrototypeOf(MongooseMap.prototype), "set", this).call(this, key, value); - } - }, { - key: "get", - value: function get(key, options) { - if (isBsonType(key, 'ObjectID')) { - key = key.toString(); - } - - options = options || {}; - - if (options.getters === false) { - return _get(_getPrototypeOf(MongooseMap.prototype), "get", this).call(this, key); - } - - return this.$__schemaType.applyGetters(_get(_getPrototypeOf(MongooseMap.prototype), "get", this).call(this, key), this.$__parent); - } - }, { - key: "set", - value: function set(key, value) { - if (isBsonType(key, 'ObjectID')) { - key = key.toString(); - } - - checkValidKey(key); - value = handleSpreadDoc(value); // Weird, but because you can't assign to `this` before calling `super()` - // you can't get access to `$__schemaType` to cast in the initial call to - // `set()` from the `super()` constructor. - - if (this.$__schemaType == null) { - this.$__deferred = this.$__deferred || []; - this.$__deferred.push({ - key: key, - value: value - }); - return; - } - - var fullPath = this.$__path + '.' + key; - var populated = this.$__parent != null && this.$__parent.$__ ? this.$__parent.$populated(fullPath) || this.$__parent.$populated(this.$__path) : null; - var priorVal = this.get(key); - - if (populated != null) { - if (value.$__ == null) { - value = new populated.options[populateModelSymbol](value); - } - - value.$__.wasPopulated = { - value: populated.value - }; - } else { - try { - value = this.$__schemaType.applySetters(value, this.$__parent, false, this.get(key), { - path: fullPath - }); - } catch (error) { - if (this.$__parent != null && this.$__parent.$__ != null) { - this.$__parent.invalidate(fullPath, error); - return; - } - - throw error; - } - } - - _get(_getPrototypeOf(MongooseMap.prototype), "set", this).call(this, key, value); - - if (value != null && value.$isSingleNested) { - value.$basePath = this.$__path + '.' + key; - } - - var parent = this.$__parent; - - if (parent != null && parent.$__ != null && !deepEqual(value, priorVal)) { - parent.markModified(this.$__path + '.' + key); - } - } - }, { - key: "clear", - value: function clear() { - _get(_getPrototypeOf(MongooseMap.prototype), "clear", this).call(this); - - var parent = this.$__parent; - - if (parent != null) { - parent.markModified(this.$__path); - } - } - }, { - key: "delete", - value: function _delete(key) { - if (isBsonType(key, 'ObjectID')) { - key = key.toString(); - } - - this.set(key, undefined); - - _get(_getPrototypeOf(MongooseMap.prototype), "delete", this).call(this, key); - } - }, { - key: "toBSON", - value: function toBSON() { - return new Map(this); - } - }, { - key: "toObject", - value: function toObject(options) { - if (options && options.flattenMaps) { - var ret = {}; - var keys = this.keys(); - - var _iterator = _createForOfIteratorHelper(keys), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var key = _step.value; - ret[key] = clone(this.get(key), options); - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - return ret; - } - - return new Map(this); - } - }, { - key: "$toObject", - value: function $toObject() { - return this.constructor.prototype.toObject.apply(this, arguments); - } - }, { - key: "toJSON", - value: function toJSON(options) { - if (typeof (options && options.flattenMaps) === 'boolean' ? options.flattenMaps : true) { - var ret = {}; - var keys = this.keys(); - - var _iterator2 = _createForOfIteratorHelper(keys), - _step2; - - try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - var key = _step2.value; - ret[key] = clone(this.get(key), options); - } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); - } - - return ret; - } - - return new Map(this); - } - }, { - key: "inspect", - value: function inspect() { - return new Map(this); - } - }, { - key: "$__runDeferred", - value: function $__runDeferred() { - if (!this.$__deferred) { - return; - } - - var _iterator3 = _createForOfIteratorHelper(this.$__deferred), - _step3; - - try { - for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { - var keyValueObject = _step3.value; - this.set(keyValueObject.key, keyValueObject.value); - } - } catch (err) { - _iterator3.e(err); - } finally { - _iterator3.f(); - } - - this.$__deferred = null; - } - }]); - - return MongooseMap; -}( /*#__PURE__*/_wrapNativeSuper(Map)); - -if (util.inspect.custom) { - Object.defineProperty(MongooseMap.prototype, util.inspect.custom, { - enumerable: false, - writable: false, - configurable: false, - value: MongooseMap.prototype.inspect - }); -} - -Object.defineProperty(MongooseMap.prototype, '$__set', { - enumerable: false, - writable: true, - configurable: false -}); -Object.defineProperty(MongooseMap.prototype, '$__parent', { - enumerable: false, - writable: true, - configurable: false -}); -Object.defineProperty(MongooseMap.prototype, '$__path', { - enumerable: false, - writable: true, - configurable: false -}); -Object.defineProperty(MongooseMap.prototype, '$__schemaType', { - enumerable: false, - writable: true, - configurable: false -}); -Object.defineProperty(MongooseMap.prototype, '$isMongooseMap', { - enumerable: false, - writable: false, - configurable: false, - value: true -}); -Object.defineProperty(MongooseMap.prototype, '$__deferredCalls', { - enumerable: false, - writable: false, - configurable: false, - value: true -}); -/*! - * Since maps are stored as objects under the hood, keys must be strings - * and can't contain any invalid characters - */ - -function checkValidKey(key) { - var keyType = _typeof(key); - - if (keyType !== 'string') { - throw new TypeError("Mongoose maps only support string keys, got ".concat(keyType)); - } - - if (key.startsWith('$')) { - throw new Error("Mongoose maps do not support keys that start with \"$\", got \"".concat(key, "\"")); - } - - if (key.includes('.')) { - throw new Error("Mongoose maps do not support keys that contain \".\", got \"".concat(key, "\"")); - } - - if (specialProperties.has(key)) { - throw new Error("Mongoose maps do not support reserved key name \"".concat(key, "\"")); - } -} - -module.exports = MongooseMap; - -/***/ }), - -/***/ 6079: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/** - * ObjectId type constructor - * - * #### Example - * - * const id = new mongoose.Types.ObjectId; - * - * @constructor ObjectId - */ - - -var ObjectId = (__webpack_require__(9906).get)().ObjectId; - -var objectIdSymbol = (__webpack_require__(8770).objectIdSymbol); -/*! - * Getter for convenience with populate, see gh-6115 - */ - - -Object.defineProperty(ObjectId.prototype, '_id', { - enumerable: false, - configurable: true, - get: function get() { - return this; - } -}); -/*! - * Convenience `valueOf()` to allow comparing ObjectIds using double equals re: gh-7299 - */ - -if (!ObjectId.prototype.hasOwnProperty('valueOf')) { - ObjectId.prototype.valueOf = function objectIdValueOf() { - return this.toString(); - }; -} - -ObjectId.prototype[objectIdSymbol] = true; -module.exports = ObjectId; - -/***/ }), - -/***/ 2591: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var Document = __webpack_require__(8727); - -var immediate = __webpack_require__(1490); - -var internalToObjectOptions = (__webpack_require__(4962)/* .internalToObjectOptions */ .h); - -var promiseOrCallback = __webpack_require__(8486); - -var util = __webpack_require__(161); - -var utils = __webpack_require__(6872); - -module.exports = Subdocument; -/** - * Subdocument constructor. - * - * @inherits Document - * @api private - */ - -function Subdocument(value, fields, parent, skipId, options) { - if (parent != null) { - // If setting a nested path, should copy isNew from parent re: gh-7048 - var parentOptions = { - isNew: parent.isNew - }; - - if ('defaults' in parent.$__) { - parentOptions.defaults = parent.$__.defaults; - } - - options = Object.assign(parentOptions, options); - } - - if (options != null && options.path != null) { - this.$basePath = options.path; - } - - Document.call(this, value, fields, skipId, options); - delete this.$__.priorDoc; -} - -Subdocument.prototype = Object.create(Document.prototype); -Object.defineProperty(Subdocument.prototype, '$isSubdocument', { - configurable: false, - writable: false, - value: true -}); -Object.defineProperty(Subdocument.prototype, '$isSingleNested', { - configurable: false, - writable: false, - value: true -}); -/*! - * ignore - */ - -Subdocument.prototype.toBSON = function () { - return this.toObject(internalToObjectOptions); -}; -/** - * Used as a stub for middleware - * - * #### Note: - * - * _This is a no-op. Does not actually save the doc to the db._ - * - * @param {Function} [fn] - * @return {Promise} resolved Promise - * @api private - */ - - -Subdocument.prototype.save = function (options, fn) { - var _this = this; - - if (typeof options === 'function') { - fn = options; - options = {}; - } - - options = options || {}; - - if (!options.suppressWarning) { - utils.warn('mongoose: calling `save()` on a subdoc does **not** save ' + 'the document to MongoDB, it only runs save middleware. ' + 'Use `subdoc.save({ suppressWarning: true })` to hide this warning ' + 'if you\'re sure this behavior is right for your app.'); - } - - return promiseOrCallback(fn, function (cb) { - _this.$__save(cb); - }); -}; -/*! - * Given a path relative to this document, return the path relative - * to the top-level document. - */ - - -Subdocument.prototype.$__fullPath = function (path) { - if (!this.$__.fullPath) { - this.ownerDocument(); - } - - return path ? this.$__.fullPath + '.' + path : this.$__.fullPath; -}; -/*! - * Given a path relative to this document, return the path relative - * to the top-level document. - */ - - -Subdocument.prototype.$__pathRelativeToParent = function (p) { - if (p == null) { - return this.$basePath; - } - - return [this.$basePath, p].join('.'); -}; -/** - * Used as a stub for middleware - * - * #### Note: - * - * _This is a no-op. Does not actually save the doc to the db._ - * - * @param {Function} [fn] - * @method $__save - * @api private - */ - - -Subdocument.prototype.$__save = function (fn) { - var _this2 = this; - - return immediate(function () { - return fn(null, _this2); - }); -}; -/*! - * ignore - */ - - -Subdocument.prototype.$isValid = function (path) { - var parent = this.$parent(); - var fullPath = this.$__pathRelativeToParent(path); - - if (parent != null && fullPath != null) { - return parent.$isValid(fullPath); - } - - return Document.prototype.$isValid.call(this, path); -}; -/*! - * ignore - */ - - -Subdocument.prototype.markModified = function (path) { - Document.prototype.markModified.call(this, path); - var parent = this.$parent(); - var fullPath = this.$__pathRelativeToParent(path); - - if (parent == null || fullPath == null) { - return; - } - - var myPath = this.$__pathRelativeToParent().replace(/\.$/, ''); - - if (parent.isDirectModified(myPath) || this.isNew) { - return; - } - - this.$__parent.markModified(fullPath, this); -}; -/*! - * ignore - */ - - -Subdocument.prototype.isModified = function (paths, modifiedPaths) { - var _this3 = this; - - var parent = this.$parent(); - - if (parent != null) { - if (Array.isArray(paths) || typeof paths === 'string') { - paths = Array.isArray(paths) ? paths : paths.split(' '); - paths = paths.map(function (p) { - return _this3.$__pathRelativeToParent(p); - }).filter(function (p) { - return p != null; - }); - } else if (!paths) { - paths = this.$__pathRelativeToParent(); - } - - return parent.$isModified(paths, modifiedPaths); - } - - return Document.prototype.isModified.call(this, paths, modifiedPaths); -}; -/** - * Marks a path as valid, removing existing validation errors. - * - * @param {String} path the field to mark as valid - * @api private - * @method $markValid - * @receiver Subdocument - */ - - -Subdocument.prototype.$markValid = function (path) { - Document.prototype.$markValid.call(this, path); - var parent = this.$parent(); - var fullPath = this.$__pathRelativeToParent(path); - - if (parent != null && fullPath != null) { - parent.$markValid(fullPath); - } -}; -/*! - * ignore - */ - - -Subdocument.prototype.invalidate = function (path, err, val) { - Document.prototype.invalidate.call(this, path, err, val); - var parent = this.$parent(); - var fullPath = this.$__pathRelativeToParent(path); - - if (parent != null && fullPath != null) { - parent.invalidate(fullPath, err, val); - } else if (err.kind === 'cast' || err.name === 'CastError' || fullPath == null) { - throw err; - } - - return this.ownerDocument().$__.validationError; -}; -/*! - * ignore - */ - - -Subdocument.prototype.$ignore = function (path) { - Document.prototype.$ignore.call(this, path); - var parent = this.$parent(); - var fullPath = this.$__pathRelativeToParent(path); - - if (parent != null && fullPath != null) { - parent.$ignore(fullPath); - } -}; -/** - * Returns the top level document of this sub-document. - * - * @return {Document} - */ - - -Subdocument.prototype.ownerDocument = function () { - if (this.$__.ownerDocument) { - return this.$__.ownerDocument; - } - - var parent = this; // eslint-disable-line consistent-this - - var paths = []; - var seenDocs = new Set([parent]); - - while (true) { - if (typeof parent.$__pathRelativeToParent !== 'function') { - break; - } - - paths.unshift(parent.$__pathRelativeToParent(void 0, true)); - - var _parent = parent.$parent(); - - if (_parent == null) { - break; - } - - parent = _parent; - - if (seenDocs.has(parent)) { - throw new Error('Infinite subdocument loop: subdoc with _id ' + parent._id + ' is a parent of itself'); - } - - seenDocs.add(parent); - } - - this.$__.fullPath = paths.join('.'); - this.$__.ownerDocument = parent; - return this.$__.ownerDocument; -}; -/*! - * ignore - */ - - -Subdocument.prototype.$__fullPathWithIndexes = function () { - var parent = this; // eslint-disable-line consistent-this - - var paths = []; - var seenDocs = new Set([parent]); - - while (true) { - if (typeof parent.$__pathRelativeToParent !== 'function') { - break; - } - - paths.unshift(parent.$__pathRelativeToParent(void 0, false)); - - var _parent = parent.$parent(); - - if (_parent == null) { - break; - } - - parent = _parent; - - if (seenDocs.has(parent)) { - throw new Error('Infinite subdocument loop: subdoc with _id ' + parent._id + ' is a parent of itself'); - } - - seenDocs.add(parent); - } - - return paths.join('.'); -}; -/** - * Returns this sub-documents parent document. - * - * @api public - */ - - -Subdocument.prototype.parent = function () { - return this.$__parent; -}; -/** - * Returns this sub-documents parent document. - * - * @api public - * @method $parent - */ - - -Subdocument.prototype.$parent = Subdocument.prototype.parent; -/*! - * no-op for hooks - */ - -Subdocument.prototype.$__remove = function (cb) { - if (cb == null) { - return; - } - - return cb(null, this); -}; - -Subdocument.prototype.$__removeFromParent = function () { - this.$__parent.set(this.$basePath, null); -}; -/** - * Null-out this subdoc - * - * @param {Object} [options] - * @param {Function} [callback] optional callback for compatibility with Document.prototype.remove - */ - - -Subdocument.prototype.remove = function (options, callback) { - if (typeof options === 'function') { - callback = options; - options = null; - } - - registerRemoveListener(this); // If removing entire doc, no need to remove subdoc - - if (!options || !options.noop) { - this.$__removeFromParent(); - } - - return this.$__remove(callback); -}; -/*! - * ignore - */ - - -Subdocument.prototype.populate = function () { - throw new Error('Mongoose does not support calling populate() on nested ' + 'docs. Instead of `doc.nested.populate("path")`, use ' + '`doc.populate("nested.path")`'); -}; -/** - * Helper for console.log - * - * @api public - */ - - -Subdocument.prototype.inspect = function () { - return this.toObject({ - transform: false, - virtuals: false, - flattenDecimals: false - }); -}; - -if (util.inspect.custom) { - /*! - * Avoid Node deprecation warning DEP0079 - */ - Subdocument.prototype[util.inspect.custom] = Subdocument.prototype.inspect; -} -/*! - * Registers remove event listeners for triggering - * on subdocuments. - * - * @param {Subdocument} sub - * @api private - */ - - -function registerRemoveListener(sub) { - var owner = sub.ownerDocument(); - - function emitRemove() { - owner.$removeListener('save', emitRemove); - owner.$removeListener('remove', emitRemove); - sub.emit('remove', sub); - sub.constructor.emit('remove', sub); - owner = sub = null; - } - - owner.$on('save', emitRemove); - owner.$on('remove', emitRemove); -} - -/***/ }), - -/***/ 6872: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; -/* provided dependency */ var Buffer = __webpack_require__(365)["Buffer"]; - -/*! - * Module dependencies. - */ - -function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } - -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } - -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var ms = __webpack_require__(2068); - -var mpath = __webpack_require__(3564); - -var ObjectId = __webpack_require__(6079); - -var PopulateOptions = __webpack_require__(4034); - -var clone = __webpack_require__(1973); - -var immediate = __webpack_require__(1490); - -var isObject = __webpack_require__(5721); - -var isMongooseArray = __webpack_require__(7339); - -var isMongooseDocumentArray = __webpack_require__(1255); - -var isBsonType = __webpack_require__(1563); - -var getFunctionName = __webpack_require__(6749); - -var isMongooseObject = __webpack_require__(6584); - -var promiseOrCallback = __webpack_require__(8486); - -var schemaMerge = __webpack_require__(4913); - -var specialProperties = __webpack_require__(2862); - -var _require = __webpack_require__(3636), - trustedSymbol = _require.trustedSymbol; - -var Document; -exports.specialProperties = specialProperties; -exports.isMongooseArray = isMongooseArray.isMongooseArray; -exports.isMongooseDocumentArray = isMongooseDocumentArray.isMongooseDocumentArray; -exports.registerMongooseArray = isMongooseArray.registerMongooseArray; -exports.registerMongooseDocumentArray = isMongooseDocumentArray.registerMongooseDocumentArray; -/*! - * Produces a collection name from model `name`. By default, just returns - * the model name - * - * @param {String} name a model name - * @param {Function} pluralize function that pluralizes the collection name - * @return {String} a collection name - * @api private - */ - -exports.toCollectionName = function (name, pluralize) { - if (name === 'system.profile') { - return name; - } - - if (name === 'system.indexes') { - return name; - } - - if (typeof pluralize === 'function') { - return pluralize(name); - } - - return name; -}; -/*! - * Determines if `a` and `b` are deep equal. - * - * Modified from node/lib/assert.js - * - * @param {any} a a value to compare to `b` - * @param {any} b a value to compare to `a` - * @return {Boolean} - * @api private - */ - - -exports.deepEqual = function deepEqual(a, b) { - if (a === b) { - return true; - } - - if (_typeof(a) !== 'object' || _typeof(b) !== 'object') { - return a === b; - } - - if (a instanceof Date && b instanceof Date) { - return a.getTime() === b.getTime(); - } - - if (isBsonType(a, 'ObjectID') && isBsonType(b, 'ObjectID') || isBsonType(a, 'Decimal128') && isBsonType(b, 'Decimal128')) { - return a.toString() === b.toString(); - } - - if (a instanceof RegExp && b instanceof RegExp) { - return a.source === b.source && a.ignoreCase === b.ignoreCase && a.multiline === b.multiline && a.global === b.global && a.dotAll === b.dotAll && a.unicode === b.unicode && a.sticky === b.sticky && a.hasIndices === b.hasIndices; - } - - if (a == null || b == null) { - return false; - } - - if (a.prototype !== b.prototype) { - return false; - } - - if (a instanceof Map || b instanceof Map) { - if (!(a instanceof Map) || !(b instanceof Map)) { - return false; - } - - return deepEqual(Array.from(a.keys()), Array.from(b.keys())) && deepEqual(Array.from(a.values()), Array.from(b.values())); - } // Handle MongooseNumbers - - - if (a instanceof Number && b instanceof Number) { - return a.valueOf() === b.valueOf(); - } - - if (Buffer.isBuffer(a)) { - return exports.buffer.areEqual(a, b); - } - - if (Array.isArray(a) || Array.isArray(b)) { - if (!Array.isArray(a) || !Array.isArray(b)) { - return false; - } - - var len = a.length; - - if (len !== b.length) { - return false; - } - - for (var i = 0; i < len; ++i) { - if (!deepEqual(a[i], b[i])) { - return false; - } - } - - return true; - } - - if (a.$__ != null) { - a = a._doc; - } else if (isMongooseObject(a)) { - a = a.toObject(); - } - - if (b.$__ != null) { - b = b._doc; - } else if (isMongooseObject(b)) { - b = b.toObject(); - } - - var ka = Object.keys(a); - var kb = Object.keys(b); - var kaLength = ka.length; // having the same number of owned properties (keys incorporates - // hasOwnProperty) - - if (kaLength !== kb.length) { - return false; - } // ~~~cheap key test - - - for (var _i = kaLength - 1; _i >= 0; _i--) { - if (ka[_i] !== kb[_i]) { - return false; - } - } // equivalent values for every corresponding key, and - // ~~~possibly expensive deep test - - - for (var _i2 = 0, _ka = ka; _i2 < _ka.length; _i2++) { - var key = _ka[_i2]; - - if (!deepEqual(a[key], b[key])) { - return false; - } - } - - return true; -}; -/*! - * Get the last element of an array - */ - - -exports.last = function (arr) { - if (arr.length > 0) { - return arr[arr.length - 1]; - } - - return void 0; -}; - -exports.clone = clone; -/*! - * ignore - */ - -exports.promiseOrCallback = promiseOrCallback; -/*! - * ignore - */ - -exports.cloneArrays = function cloneArrays(arr) { - if (!Array.isArray(arr)) { - return arr; - } - - return arr.map(function (el) { - return exports.cloneArrays(el); - }); -}; -/*! - * ignore - */ - - -exports.omit = function omit(obj, keys) { - if (keys == null) { - return Object.assign({}, obj); - } - - if (!Array.isArray(keys)) { - keys = [keys]; - } - - var ret = Object.assign({}, obj); - - var _iterator = _createForOfIteratorHelper(keys), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var key = _step.value; - delete ret[key]; - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - return ret; -}; -/*! - * Shallow copies defaults into options. - * - * @param {Object} defaults - * @param {Object} options - * @return {Object} the merged object - * @api private - */ - - -exports.options = function (defaults, options) { - var keys = Object.keys(defaults); - var i = keys.length; - var k; - options = options || {}; - - while (i--) { - k = keys[i]; - - if (!(k in options)) { - options[k] = defaults[k]; - } - } - - return options; -}; -/*! - * Merges `from` into `to` without overwriting existing properties. - * - * @param {Object} to - * @param {Object} from - * @api private - */ - - -exports.merge = function merge(to, from, options, path) { - options = options || {}; - var keys = Object.keys(from); - var i = 0; - var len = keys.length; - var key; - - if (from[trustedSymbol]) { - to[trustedSymbol] = from[trustedSymbol]; - } - - path = path || ''; - var omitNested = options.omitNested || {}; - - while (i < len) { - key = keys[i++]; - - if (options.omit && options.omit[key]) { - continue; - } - - if (omitNested[path]) { - continue; - } - - if (specialProperties.has(key)) { - continue; - } - - if (to[key] == null) { - to[key] = from[key]; - } else if (exports.isObject(from[key])) { - if (!exports.isObject(to[key])) { - to[key] = {}; - } - - if (from[key] != null) { - // Skip merging schemas if we're creating a discriminator schema and - // base schema has a given path as a single nested but discriminator schema - // has the path as a document array, or vice versa (gh-9534) - if (options.isDiscriminatorSchemaMerge && from[key].$isSingleNested && to[key].$isMongooseDocumentArray || from[key].$isMongooseDocumentArray && to[key].$isSingleNested) { - continue; - } else if (from[key].instanceOfSchema) { - if (to[key].instanceOfSchema) { - schemaMerge(to[key], from[key].clone(), options.isDiscriminatorSchemaMerge); - } else { - to[key] = from[key].clone(); - } - - continue; - } else if (isBsonType(from[key], 'ObjectID')) { - to[key] = new ObjectId(from[key]); - continue; - } - } - - merge(to[key], from[key], options, path ? path + '.' + key : key); - } else if (options.overwrite) { - to[key] = from[key]; - } - } -}; -/*! - * Applies toObject recursively. - * - * @param {Document|Array|Object} obj - * @return {Object} - * @api private - */ - - -exports.toObject = function toObject(obj) { - Document || (Document = __webpack_require__(8727)); - var ret; - - if (obj == null) { - return obj; - } - - if (obj instanceof Document) { - return obj.toObject(); - } - - if (Array.isArray(obj)) { - ret = []; - - var _iterator2 = _createForOfIteratorHelper(obj), - _step2; - - try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - var doc = _step2.value; - ret.push(toObject(doc)); - } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); - } - - return ret; - } - - if (exports.isPOJO(obj)) { - ret = {}; - - if (obj[trustedSymbol]) { - ret[trustedSymbol] = obj[trustedSymbol]; - } - - for (var _i3 = 0, _Object$keys = Object.keys(obj); _i3 < _Object$keys.length; _i3++) { - var k = _Object$keys[_i3]; - - if (specialProperties.has(k)) { - continue; - } - - ret[k] = toObject(obj[k]); - } - - return ret; - } - - return obj; -}; - -exports.isObject = isObject; -/*! - * Determines if `arg` is a plain old JavaScript object (POJO). Specifically, - * `arg` must be an object but not an instance of any special class, like String, - * ObjectId, etc. - * - * `Object.getPrototypeOf()` is part of ES5: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf - * - * @param {Object|Array|String|Function|RegExp|any} arg - * @api private - * @return {Boolean} - */ - -exports.isPOJO = function isPOJO(arg) { - if (arg == null || _typeof(arg) !== 'object') { - return false; - } - - var proto = Object.getPrototypeOf(arg); // Prototype may be null if you used `Object.create(null)` - // Checking `proto`'s constructor is safe because `getPrototypeOf()` - // explicitly crosses the boundary from object data to object metadata - - return !proto || proto.constructor.name === 'Object'; -}; -/*! - * Determines if `arg` is an object that isn't an instance of a built-in value - * class, like Array, Buffer, ObjectId, etc. - */ - - -exports.isNonBuiltinObject = function isNonBuiltinObject(val) { - return _typeof(val) === 'object' && !exports.isNativeObject(val) && !exports.isMongooseType(val) && val != null; -}; -/*! - * Determines if `obj` is a built-in object like an array, date, boolean, - * etc. - */ - - -exports.isNativeObject = function (arg) { - return Array.isArray(arg) || arg instanceof Date || arg instanceof Boolean || arg instanceof Number || arg instanceof String; -}; -/*! - * Determines if `val` is an object that has no own keys - */ - - -exports.isEmptyObject = function (val) { - return val != null && _typeof(val) === 'object' && Object.keys(val).length === 0; -}; -/*! - * Search if `obj` or any POJOs nested underneath `obj` has a property named - * `key` - */ - - -exports.hasKey = function hasKey(obj, key) { - var props = Object.keys(obj); - - for (var _i4 = 0, _props = props; _i4 < _props.length; _i4++) { - var prop = _props[_i4]; - - if (prop === key) { - return true; - } - - if (exports.isPOJO(obj[prop]) && exports.hasKey(obj[prop], key)) { - return true; - } - } - - return false; -}; -/*! - * process.nextTick helper. - * - * Wraps `callback` in a try/catch + nextTick. - * - * node-mongodb-native has a habit of state corruption when an error is immediately thrown from within a collection callback. - * - * @param {Function} callback - * @api private - */ - - -exports.tick = function tick(callback) { - if (typeof callback !== 'function') { - return; - } - - return function () { - try { - callback.apply(this, arguments); - } catch (err) { - // only nextTick on err to get out of - // the event loop and avoid state corruption. - immediate(function () { - throw err; - }); - } - }; -}; -/*! - * Returns true if `v` is an object that can be serialized as a primitive in - * MongoDB - */ - - -exports.isMongooseType = function (v) { - return isBsonType(v, 'ObjectID') || isBsonType(v, 'Decimal128') || v instanceof Buffer; -}; - -exports.isMongooseObject = isMongooseObject; -/*! - * Converts `expires` options of index objects to `expiresAfterSeconds` options for MongoDB. - * - * @param {Object} object - * @api private - */ - -exports.expires = function expires(object) { - if (!(object && object.constructor.name === 'Object')) { - return; - } - - if (!('expires' in object)) { - return; - } - - object.expireAfterSeconds = typeof object.expires !== 'string' ? object.expires : Math.round(ms(object.expires) / 1000); - delete object.expires; -}; -/*! - * populate helper - */ - - -exports.populate = function populate(path, select, model, match, options, subPopulate, justOne, count) { - // might have passed an object specifying all arguments - var obj = null; - - if (arguments.length === 1) { - if (path instanceof PopulateOptions) { - // If reusing old populate docs, avoid reusing `_docs` because that may - // lead to bugs and memory leaks. See gh-11641 - path._docs = []; - path._childDocs = []; - return [path]; - } - - if (Array.isArray(path)) { - var singles = makeSingles(path); - return singles.map(function (o) { - return exports.populate(o)[0]; - }); - } - - if (exports.isObject(path)) { - obj = Object.assign({}, path); - } else { - obj = { - path: path - }; - } - } else if (_typeof(model) === 'object') { - obj = { - path: path, - select: select, - match: model, - options: match - }; - } else { - obj = { - path: path, - select: select, - model: model, - match: match, - options: options, - populate: subPopulate, - justOne: justOne, - count: count - }; - } - - if (typeof obj.path !== 'string') { - throw new TypeError('utils.populate: invalid path. Expected string. Got typeof `' + _typeof(path) + '`'); - } - - return _populateObj(obj); // The order of select/conditions args is opposite Model.find but - // necessary to keep backward compatibility (select could be - // an array, string, or object literal). - - function makeSingles(arr) { - var ret = []; - arr.forEach(function (obj) { - if (/[\s]/.test(obj.path)) { - var paths = obj.path.split(' '); - paths.forEach(function (p) { - var copy = Object.assign({}, obj); - copy.path = p; - ret.push(copy); - }); - } else { - ret.push(obj); - } - }); - return ret; - } -}; - -function _populateObj(obj) { - if (Array.isArray(obj.populate)) { - var _ret = []; - obj.populate.forEach(function (obj) { - if (/[\s]/.test(obj.path)) { - var copy = Object.assign({}, obj); - - var _paths = copy.path.split(' '); - - _paths.forEach(function (p) { - copy.path = p; - - _ret.push(exports.populate(copy)[0]); - }); - } else { - _ret.push(exports.populate(obj)[0]); - } - }); - obj.populate = exports.populate(_ret); - } else if (obj.populate != null && _typeof(obj.populate) === 'object') { - obj.populate = exports.populate(obj.populate); - } - - var ret = []; - var paths = obj.path.split(' '); - - if (obj.options != null) { - obj.options = exports.clone(obj.options); - } - - var _iterator3 = _createForOfIteratorHelper(paths), - _step3; - - try { - for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { - var path = _step3.value; - ret.push(new PopulateOptions(Object.assign({}, obj, { - path: path - }))); - } - } catch (err) { - _iterator3.e(err); - } finally { - _iterator3.f(); - } - - return ret; -} -/*! - * Return the value of `obj` at the given `path`. - * - * @param {String} path - * @param {Object} obj - */ - - -exports.getValue = function (path, obj, map) { - return mpath.get(path, obj, '_doc', map); -}; -/*! - * Sets the value of `obj` at the given `path`. - * - * @param {String} path - * @param {Anything} val - * @param {Object} obj - */ - - -exports.setValue = function (path, val, obj, map, _copying) { - mpath.set(path, val, obj, '_doc', map, _copying); -}; -/*! - * Returns an array of values from object `o`. - * - * @param {Object} o - * @return {Array} - * @private - */ - - -exports.object = {}; - -exports.object.vals = function vals(o) { - var keys = Object.keys(o); - var i = keys.length; - var ret = []; - - while (i--) { - ret.push(o[keys[i]]); - } - - return ret; -}; -/*! - * @see exports.options - */ - - -exports.object.shallowCopy = exports.options; -/*! - * Safer helper for hasOwnProperty checks - * - * @param {Object} obj - * @param {String} prop - */ - -var hop = Object.prototype.hasOwnProperty; - -exports.object.hasOwnProperty = function (obj, prop) { - return hop.call(obj, prop); -}; -/*! - * Determine if `val` is null or undefined - * - * @return {Boolean} - */ - - -exports.isNullOrUndefined = function (val) { - return val === null || val === undefined; -}; -/*! - * ignore - */ - - -exports.array = {}; -/*! - * Flattens an array. - * - * [ 1, [ 2, 3, [4] ]] -> [1,2,3,4] - * - * @param {Array} arr - * @param {Function} [filter] If passed, will be invoked with each item in the array. If `filter` returns a falsy value, the item will not be included in the results. - * @return {Array} - * @private - */ - -exports.array.flatten = function flatten(arr, filter, ret) { - ret || (ret = []); - arr.forEach(function (item) { - if (Array.isArray(item)) { - flatten(item, filter, ret); - } else { - if (!filter || filter(item)) { - ret.push(item); - } - } - }); - return ret; -}; -/*! - * ignore - */ - - -var _hasOwnProperty = Object.prototype.hasOwnProperty; - -exports.hasUserDefinedProperty = function (obj, key) { - if (obj == null) { - return false; - } - - if (Array.isArray(key)) { - var _iterator4 = _createForOfIteratorHelper(key), - _step4; - - try { - for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { - var k = _step4.value; - - if (exports.hasUserDefinedProperty(obj, k)) { - return true; - } - } - } catch (err) { - _iterator4.e(err); - } finally { - _iterator4.f(); - } - - return false; - } - - if (_hasOwnProperty.call(obj, key)) { - return true; - } - - if (_typeof(obj) === 'object' && key in obj) { - var v = obj[key]; - return v !== Object.prototype[key] && v !== Array.prototype[key]; - } - - return false; -}; -/*! - * ignore - */ - - -var MAX_ARRAY_INDEX = Math.pow(2, 32) - 1; - -exports.isArrayIndex = function (val) { - if (typeof val === 'number') { - return val >= 0 && val <= MAX_ARRAY_INDEX; - } - - if (typeof val === 'string') { - if (!/^\d+$/.test(val)) { - return false; - } - - val = +val; - return val >= 0 && val <= MAX_ARRAY_INDEX; - } - - return false; -}; -/*! - * Removes duplicate values from an array - * - * [1, 2, 3, 3, 5] => [1, 2, 3, 5] - * [ ObjectId("550988ba0c19d57f697dc45e"), ObjectId("550988ba0c19d57f697dc45e") ] - * => [ObjectId("550988ba0c19d57f697dc45e")] - * - * @param {Array} arr - * @return {Array} - * @private - */ - - -exports.array.unique = function (arr) { - var primitives = new Set(); - var ids = new Set(); - var ret = []; - - var _iterator5 = _createForOfIteratorHelper(arr), - _step5; - - try { - for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { - var item = _step5.value; - - if (typeof item === 'number' || typeof item === 'string' || item == null) { - if (primitives.has(item)) { - continue; - } - - ret.push(item); - primitives.add(item); - } else if (isBsonType(item, 'ObjectID')) { - if (ids.has(item.toString())) { - continue; - } - - ret.push(item); - ids.add(item.toString()); - } else { - ret.push(item); - } - } - } catch (err) { - _iterator5.e(err); - } finally { - _iterator5.f(); - } - - return ret; -}; -/*! - * Determines if two buffers are equal. - * - * @param {Buffer} a - * @param {Object} b - */ - - -exports.buffer = {}; - -exports.buffer.areEqual = function (a, b) { - if (!Buffer.isBuffer(a)) { - return false; - } - - if (!Buffer.isBuffer(b)) { - return false; - } - - if (a.length !== b.length) { - return false; - } - - for (var i = 0, len = a.length; i < len; ++i) { - if (a[i] !== b[i]) { - return false; - } - } - - return true; -}; - -exports.getFunctionName = getFunctionName; -/*! - * Decorate buffers - */ - -exports.decorate = function (destination, source) { - for (var key in source) { - if (specialProperties.has(key)) { - continue; - } - - destination[key] = source[key]; - } -}; -/** - * merges to with a copy of from - * - * @param {Object} to - * @param {Object} fromObj - * @api private - */ - - -exports.mergeClone = function (to, fromObj) { - if (isMongooseObject(fromObj)) { - fromObj = fromObj.toObject({ - transform: false, - virtuals: false, - depopulate: true, - getters: false, - flattenDecimals: false - }); - } - - var keys = Object.keys(fromObj); - var len = keys.length; - var i = 0; - var key; - - while (i < len) { - key = keys[i++]; - - if (specialProperties.has(key)) { - continue; - } - - if (typeof to[key] === 'undefined') { - to[key] = exports.clone(fromObj[key], { - transform: false, - virtuals: false, - depopulate: true, - getters: false, - flattenDecimals: false - }); - } else { - var val = fromObj[key]; - - if (val != null && val.valueOf && !(val instanceof Date)) { - val = val.valueOf(); - } - - if (exports.isObject(val)) { - var obj = val; - - if (isMongooseObject(val) && !val.isMongooseBuffer) { - obj = obj.toObject({ - transform: false, - virtuals: false, - depopulate: true, - getters: false, - flattenDecimals: false - }); - } - - if (val.isMongooseBuffer) { - obj = Buffer.from(obj); - } - - exports.mergeClone(to[key], obj); - } else { - to[key] = exports.clone(val, { - flattenDecimals: false - }); - } - } - } -}; -/** - * Executes a function on each element of an array (like _.each) - * - * @param {Array} arr - * @param {Function} fn - * @api private - */ - - -exports.each = function (arr, fn) { - var _iterator6 = _createForOfIteratorHelper(arr), - _step6; - - try { - for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { - var item = _step6.value; - fn(item); - } - } catch (err) { - _iterator6.e(err); - } finally { - _iterator6.f(); - } -}; -/*! - * ignore - */ - - -exports.getOption = function (name) { - var sources = Array.prototype.slice.call(arguments, 1); - - var _iterator7 = _createForOfIteratorHelper(sources), - _step7; - - try { - for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) { - var source = _step7.value; - - if (source == null) { - continue; - } - - if (source[name] != null) { - return source[name]; - } - } - } catch (err) { - _iterator7.e(err); - } finally { - _iterator7.f(); - } - - return null; -}; -/*! - * ignore - */ - - -exports.noop = function () {}; - -exports.errorToPOJO = function errorToPOJO(error) { - var isError = error instanceof Error; - - if (!isError) { - throw new Error('`error` must be `instanceof Error`.'); - } - - var ret = {}; - - var _iterator8 = _createForOfIteratorHelper(Object.getOwnPropertyNames(error)), - _step8; - - try { - for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) { - var properyName = _step8.value; - ret[properyName] = error[properyName]; - } - } catch (err) { - _iterator8.e(err); - } finally { - _iterator8.f(); - } - - return ret; -}; -/*! - * ignore - */ - - -exports.warn = function warn(message) { - return ({env:{}}).emitWarning(message, { - code: 'MONGOOSE' - }); -}; - -/***/ }), - -/***/ 459: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } - -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } - -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - -var utils = __webpack_require__(6872); -/** - * VirtualType constructor - * - * This is what mongoose uses to define virtual attributes via `Schema.prototype.virtual`. - * - * #### Example: - * - * const fullname = schema.virtual('fullname'); - * fullname instanceof mongoose.VirtualType // true - * - * @param {Object} options - * @param {string|function} [options.ref] if `ref` is not nullish, this becomes a [populated virtual](/docs/populate.html#populate-virtuals) - * @param {string|function} [options.localField] the local field to populate on if this is a populated virtual. - * @param {string|function} [options.foreignField] the foreign field to populate on if this is a populated virtual. - * @param {boolean} [options.justOne=false] by default, a populated virtual is an array. If you set `justOne`, the populated virtual will be a single doc or `null`. - * @param {boolean} [options.getters=false] if you set this to `true`, Mongoose will call any custom getters you defined on this virtual - * @param {boolean} [options.count=false] if you set this to `true`, `populate()` will set this virtual to the number of populated documents, as opposed to the documents themselves, using [`Query#countDocuments()`](./api.html#query_Query-countDocuments) - * @param {Object|Function} [options.match=null] add an extra match condition to `populate()` - * @param {Number} [options.limit=null] add a default `limit` to the `populate()` query - * @param {Number} [options.skip=null] add a default `skip` to the `populate()` query - * @param {Number} [options.perDocumentLimit=null] For legacy reasons, `limit` with `populate()` may give incorrect results because it only executes a single query for every document being populated. If you set `perDocumentLimit`, Mongoose will ensure correct `limit` per document by executing a separate query for each document to `populate()`. For example, `.find().populate({ path: 'test', perDocumentLimit: 2 })` will execute 2 additional queries if `.find()` returns 2 documents. - * @param {Object} [options.options=null] Additional options like `limit` and `lean`. - * @param {string} name - * @api public - */ - - -function VirtualType(options, name) { - this.path = name; - this.getters = []; - this.setters = []; - this.options = Object.assign({}, options); -} -/** - * If no getters/getters, add a default - * - * @param {Function} fn - * @return {VirtualType} this - * @api private - */ - - -VirtualType.prototype._applyDefaultGetters = function () { - if (this.getters.length > 0 || this.setters.length > 0) { - return; - } - - var path = this.path; - var internalProperty = '$' + path; - this.getters.push(function () { - return this[internalProperty]; - }); - this.setters.push(function (v) { - this[internalProperty] = v; - }); -}; -/*! - * ignore - */ - - -VirtualType.prototype.clone = function () { - var clone = new VirtualType(this.options, this.path); - clone.getters = [].concat(this.getters); - clone.setters = [].concat(this.setters); - return clone; -}; -/** - * Adds a custom getter to this virtual. - * - * Mongoose calls the getter function with the below 3 parameters. - * - * - `value`: the value returned by the previous getter. If there is only one getter, `value` will be `undefined`. - * - `virtual`: the virtual object you called `.get()` on - * - `doc`: the document this virtual is attached to. Equivalent to `this`. - * - * #### Example: - * - * const virtual = schema.virtual('fullname'); - * virtual.get(function(value, virtual, doc) { - * return this.name.first + ' ' + this.name.last; - * }); - * - * @param {Function(Any, VirtualType, Document)} fn - * @return {VirtualType} this - * @api public - */ - - -VirtualType.prototype.get = function (fn) { - this.getters.push(fn); - return this; -}; -/** - * Adds a custom setter to this virtual. - * - * Mongoose calls the setter function with the below 3 parameters. - * - * - `value`: the value being set - * - `virtual`: the virtual object you're calling `.set()` on - * - `doc`: the document this virtual is attached to. Equivalent to `this`. - * - * #### Example: - * - * const virtual = schema.virtual('fullname'); - * virtual.set(function(value, virtual, doc) { - * const parts = value.split(' '); - * this.name.first = parts[0]; - * this.name.last = parts[1]; - * }); - * - * const Model = mongoose.model('Test', schema); - * const doc = new Model(); - * // Calls the setter with `value = 'Jean-Luc Picard'` - * doc.fullname = 'Jean-Luc Picard'; - * doc.name.first; // 'Jean-Luc' - * doc.name.last; // 'Picard' - * - * @param {Function(Any, VirtualType, Document)} fn - * @return {VirtualType} this - * @api public - */ - - -VirtualType.prototype.set = function (fn) { - this.setters.push(fn); - return this; -}; -/** - * Applies getters to `value`. - * - * @param {Object} value - * @param {Document} doc The document this virtual is attached to - * @return {any} the value after applying all getters - * @api public - */ - - -VirtualType.prototype.applyGetters = function (value, doc) { - if (utils.hasUserDefinedProperty(this.options, ['ref', 'refPath']) && doc.$$populatedVirtuals && doc.$$populatedVirtuals.hasOwnProperty(this.path)) { - value = doc.$$populatedVirtuals[this.path]; - } - - var v = value; - - var _iterator = _createForOfIteratorHelper(this.getters), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var getter = _step.value; - v = getter.call(doc, v, this, doc); - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - return v; -}; -/** - * Applies setters to `value`. - * - * @param {Object} value - * @param {Document} doc - * @return {any} the value after applying all setters - * @api public - */ - - -VirtualType.prototype.applySetters = function (value, doc) { - var v = value; - - var _iterator2 = _createForOfIteratorHelper(this.setters), - _step2; - - try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - var setter = _step2.value; - v = setter.call(doc, v, this, doc); - } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); - } - - return v; -}; -/*! - * exports - */ - - -module.exports = VirtualType; - -/***/ }), - -/***/ 7406: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - - -var asn1 = exports; -asn1.bignum = __webpack_require__(6781); -asn1.define = (__webpack_require__(8721).define); -asn1.base = __webpack_require__(6002); -asn1.constants = __webpack_require__(4319); -asn1.decoders = __webpack_require__(4049); -asn1.encoders = __webpack_require__(6860); - -/***/ }), - -/***/ 8721: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - - -var encoders = __webpack_require__(6860); - -var decoders = __webpack_require__(4049); - -var inherits = __webpack_require__(376); - -var api = exports; - -api.define = function define(name, body) { - return new Entity(name, body); -}; - -function Entity(name, body) { - this.name = name; - this.body = body; - this.decoders = {}; - this.encoders = {}; -} - -Entity.prototype._createNamed = function createNamed(Base) { - var name = this.name; - - function Generated(entity) { - this._initNamed(entity, name); - } - - inherits(Generated, Base); - - Generated.prototype._initNamed = function _initNamed(entity, name) { - Base.call(this, entity, name); - }; - - return new Generated(this); -}; - -Entity.prototype._getDecoder = function _getDecoder(enc) { - enc = enc || 'der'; // Lazily create decoder - - if (!this.decoders.hasOwnProperty(enc)) this.decoders[enc] = this._createNamed(decoders[enc]); - return this.decoders[enc]; -}; - -Entity.prototype.decode = function decode(data, enc, options) { - return this._getDecoder(enc).decode(data, options); -}; - -Entity.prototype._getEncoder = function _getEncoder(enc) { - enc = enc || 'der'; // Lazily create encoder - - if (!this.encoders.hasOwnProperty(enc)) this.encoders[enc] = this._createNamed(encoders[enc]); - return this.encoders[enc]; -}; - -Entity.prototype.encode = function encode(data, enc, -/* internal */ -reporter) { - return this._getEncoder(enc).encode(data, reporter); -}; - -/***/ }), - -/***/ 4989: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var inherits = __webpack_require__(376); - -var Reporter = (__webpack_require__(1269)/* .Reporter */ .b); - -var Buffer = (__webpack_require__(8723).Buffer); - -function DecoderBuffer(base, options) { - Reporter.call(this, options); - - if (!Buffer.isBuffer(base)) { - this.error('Input not Buffer'); - return; - } - - this.base = base; - this.offset = 0; - this.length = base.length; -} - -inherits(DecoderBuffer, Reporter); -exports.C = DecoderBuffer; - -DecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) { - if (data instanceof DecoderBuffer) { - return true; - } // Or accept compatible API - - - var isCompatible = _typeof(data) === 'object' && Buffer.isBuffer(data.base) && data.constructor.name === 'DecoderBuffer' && typeof data.offset === 'number' && typeof data.length === 'number' && typeof data.save === 'function' && typeof data.restore === 'function' && typeof data.isEmpty === 'function' && typeof data.readUInt8 === 'function' && typeof data.skip === 'function' && typeof data.raw === 'function'; - return isCompatible; -}; - -DecoderBuffer.prototype.save = function save() { - return { - offset: this.offset, - reporter: Reporter.prototype.save.call(this) - }; -}; - -DecoderBuffer.prototype.restore = function restore(save) { - // Return skipped data - var res = new DecoderBuffer(this.base); - res.offset = save.offset; - res.length = this.offset; - this.offset = save.offset; - Reporter.prototype.restore.call(this, save.reporter); - return res; -}; - -DecoderBuffer.prototype.isEmpty = function isEmpty() { - return this.offset === this.length; -}; - -DecoderBuffer.prototype.readUInt8 = function readUInt8(fail) { - if (this.offset + 1 <= this.length) return this.base.readUInt8(this.offset++, true);else return this.error(fail || 'DecoderBuffer overrun'); -}; - -DecoderBuffer.prototype.skip = function skip(bytes, fail) { - if (!(this.offset + bytes <= this.length)) return this.error(fail || 'DecoderBuffer overrun'); - var res = new DecoderBuffer(this.base); // Share reporter state - - res._reporterState = this._reporterState; - res.offset = this.offset; - res.length = this.offset + bytes; - this.offset += bytes; - return res; -}; - -DecoderBuffer.prototype.raw = function raw(save) { - return this.base.slice(save ? save.offset : this.offset, this.length); -}; - -function EncoderBuffer(value, reporter) { - if (Array.isArray(value)) { - this.length = 0; - this.value = value.map(function (item) { - if (!EncoderBuffer.isEncoderBuffer(item)) item = new EncoderBuffer(item, reporter); - this.length += item.length; - return item; - }, this); - } else if (typeof value === 'number') { - if (!(0 <= value && value <= 0xff)) return reporter.error('non-byte EncoderBuffer value'); - this.value = value; - this.length = 1; - } else if (typeof value === 'string') { - this.value = value; - this.length = Buffer.byteLength(value); - } else if (Buffer.isBuffer(value)) { - this.value = value; - this.length = value.length; - } else { - return reporter.error('Unsupported type: ' + _typeof(value)); - } -} - -exports.R = EncoderBuffer; - -EncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) { - if (data instanceof EncoderBuffer) { - return true; - } // Or accept compatible API - - - var isCompatible = _typeof(data) === 'object' && data.constructor.name === 'EncoderBuffer' && typeof data.length === 'number' && typeof data.join === 'function'; - return isCompatible; -}; - -EncoderBuffer.prototype.join = function join(out, offset) { - if (!out) out = Buffer.alloc(this.length); - if (!offset) offset = 0; - if (this.length === 0) return out; - - if (Array.isArray(this.value)) { - this.value.forEach(function (item) { - item.join(out, offset); - offset += item.length; - }); - } else { - if (typeof this.value === 'number') out[offset] = this.value;else if (typeof this.value === 'string') out.write(this.value, offset);else if (Buffer.isBuffer(this.value)) this.value.copy(out, offset); - offset += this.length; - } - - return out; -}; - -/***/ }), - -/***/ 6002: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - - -var base = exports; -base.Reporter = (__webpack_require__(1269)/* .Reporter */ .b); -base.DecoderBuffer = (__webpack_require__(4989)/* .DecoderBuffer */ .C); -base.EncoderBuffer = (__webpack_require__(4989)/* .EncoderBuffer */ .R); -base.Node = __webpack_require__(3304); - -/***/ }), - -/***/ 3304: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var Reporter = (__webpack_require__(1269)/* .Reporter */ .b); - -var EncoderBuffer = (__webpack_require__(4989)/* .EncoderBuffer */ .R); - -var DecoderBuffer = (__webpack_require__(4989)/* .DecoderBuffer */ .C); - -var assert = __webpack_require__(1130); // Supported tags - - -var tags = ['seq', 'seqof', 'set', 'setof', 'objid', 'bool', 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc', 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str', 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr']; // Public methods list - -var methods = ['key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice', 'any', 'contains'].concat(tags); // Overrided methods list - -var overrided = ['_peekTag', '_decodeTag', '_use', '_decodeStr', '_decodeObjid', '_decodeTime', '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList', '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime', '_encodeNull', '_encodeInt', '_encodeBool']; - -function Node(enc, parent, name) { - var state = {}; - this._baseState = state; - state.name = name; - state.enc = enc; - state.parent = parent || null; - state.children = null; // State - - state.tag = null; - state.args = null; - state.reverseArgs = null; - state.choice = null; - state.optional = false; - state.any = false; - state.obj = false; - state.use = null; - state.useDecoder = null; - state.key = null; - state['default'] = null; - state.explicit = null; - state.implicit = null; - state.contains = null; // Should create new instance on each method - - if (!state.parent) { - state.children = []; - - this._wrap(); - } -} - -module.exports = Node; -var stateProps = ['enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice', 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit', 'implicit', 'contains']; - -Node.prototype.clone = function clone() { - var state = this._baseState; - var cstate = {}; - stateProps.forEach(function (prop) { - cstate[prop] = state[prop]; - }); - var res = new this.constructor(cstate.parent); - res._baseState = cstate; - return res; -}; - -Node.prototype._wrap = function wrap() { - var state = this._baseState; - methods.forEach(function (method) { - this[method] = function _wrappedMethod() { - var clone = new this.constructor(this); - state.children.push(clone); - return clone[method].apply(clone, arguments); - }; - }, this); -}; - -Node.prototype._init = function init(body) { - var state = this._baseState; - assert(state.parent === null); - body.call(this); // Filter children - - state.children = state.children.filter(function (child) { - return child._baseState.parent === this; - }, this); - assert.equal(state.children.length, 1, 'Root node can have only one child'); -}; - -Node.prototype._useArgs = function useArgs(args) { - var state = this._baseState; // Filter children and args - - var children = args.filter(function (arg) { - return arg instanceof this.constructor; - }, this); - args = args.filter(function (arg) { - return !(arg instanceof this.constructor); - }, this); - - if (children.length !== 0) { - assert(state.children === null); - state.children = children; // Replace parent to maintain backward link - - children.forEach(function (child) { - child._baseState.parent = this; - }, this); - } - - if (args.length !== 0) { - assert(state.args === null); - state.args = args; - state.reverseArgs = args.map(function (arg) { - if (_typeof(arg) !== 'object' || arg.constructor !== Object) return arg; - var res = {}; - Object.keys(arg).forEach(function (key) { - if (key == (key | 0)) key |= 0; - var value = arg[key]; - res[value] = key; - }); - return res; - }); - } -}; // -// Overrided methods -// - - -overrided.forEach(function (method) { - Node.prototype[method] = function _overrided() { - var state = this._baseState; - throw new Error(method + ' not implemented for encoding: ' + state.enc); - }; -}); // -// Public methods -// - -tags.forEach(function (tag) { - Node.prototype[tag] = function _tagMethod() { - var state = this._baseState; - var args = Array.prototype.slice.call(arguments); - assert(state.tag === null); - state.tag = tag; - - this._useArgs(args); - - return this; - }; -}); - -Node.prototype.use = function use(item) { - assert(item); - var state = this._baseState; - assert(state.use === null); - state.use = item; - return this; -}; - -Node.prototype.optional = function optional() { - var state = this._baseState; - state.optional = true; - return this; -}; - -Node.prototype.def = function def(val) { - var state = this._baseState; - assert(state['default'] === null); - state['default'] = val; - state.optional = true; - return this; -}; - -Node.prototype.explicit = function explicit(num) { - var state = this._baseState; - assert(state.explicit === null && state.implicit === null); - state.explicit = num; - return this; -}; - -Node.prototype.implicit = function implicit(num) { - var state = this._baseState; - assert(state.explicit === null && state.implicit === null); - state.implicit = num; - return this; -}; - -Node.prototype.obj = function obj() { - var state = this._baseState; - var args = Array.prototype.slice.call(arguments); - state.obj = true; - if (args.length !== 0) this._useArgs(args); - return this; -}; - -Node.prototype.key = function key(newKey) { - var state = this._baseState; - assert(state.key === null); - state.key = newKey; - return this; -}; - -Node.prototype.any = function any() { - var state = this._baseState; - state.any = true; - return this; -}; - -Node.prototype.choice = function choice(obj) { - var state = this._baseState; - assert(state.choice === null); - state.choice = obj; - - this._useArgs(Object.keys(obj).map(function (key) { - return obj[key]; - })); - - return this; -}; - -Node.prototype.contains = function contains(item) { - var state = this._baseState; - assert(state.use === null); - state.contains = item; - return this; -}; // -// Decoding -// - - -Node.prototype._decode = function decode(input, options) { - var state = this._baseState; // Decode root node - - if (state.parent === null) return input.wrapResult(state.children[0]._decode(input, options)); - var result = state['default']; - var present = true; - var prevKey = null; - if (state.key !== null) prevKey = input.enterKey(state.key); // Check if tag is there - - if (state.optional) { - var tag = null; - if (state.explicit !== null) tag = state.explicit;else if (state.implicit !== null) tag = state.implicit;else if (state.tag !== null) tag = state.tag; - - if (tag === null && !state.any) { - // Trial and Error - var save = input.save(); - - try { - if (state.choice === null) this._decodeGeneric(state.tag, input, options);else this._decodeChoice(input, options); - present = true; - } catch (e) { - present = false; - } - - input.restore(save); - } else { - present = this._peekTag(input, tag, state.any); - if (input.isError(present)) return present; - } - } // Push object on stack - - - var prevObj; - if (state.obj && present) prevObj = input.enterObject(); - - if (present) { - // Unwrap explicit values - if (state.explicit !== null) { - var explicit = this._decodeTag(input, state.explicit); - - if (input.isError(explicit)) return explicit; - input = explicit; - } - - var start = input.offset; // Unwrap implicit and normal values - - if (state.use === null && state.choice === null) { - var _save; - - if (state.any) _save = input.save(); - - var body = this._decodeTag(input, state.implicit !== null ? state.implicit : state.tag, state.any); - - if (input.isError(body)) return body; - if (state.any) result = input.raw(_save);else input = body; - } - - if (options && options.track && state.tag !== null) options.track(input.path(), start, input.length, 'tagged'); - if (options && options.track && state.tag !== null) options.track(input.path(), input.offset, input.length, 'content'); // Select proper method for tag - - if (state.any) {// no-op - } else if (state.choice === null) { - result = this._decodeGeneric(state.tag, input, options); - } else { - result = this._decodeChoice(input, options); - } - - if (input.isError(result)) return result; // Decode children - - if (!state.any && state.choice === null && state.children !== null) { - state.children.forEach(function decodeChildren(child) { - // NOTE: We are ignoring errors here, to let parser continue with other - // parts of encoded data - child._decode(input, options); - }); - } // Decode contained/encoded by schema, only in bit or octet strings - - - if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) { - var data = new DecoderBuffer(result); - result = this._getUse(state.contains, input._reporterState.obj)._decode(data, options); - } - } // Pop object - - - if (state.obj && present) result = input.leaveObject(prevObj); // Set key - - if (state.key !== null && (result !== null || present === true)) input.leaveKey(prevKey, state.key, result);else if (prevKey !== null) input.exitKey(prevKey); - return result; -}; - -Node.prototype._decodeGeneric = function decodeGeneric(tag, input, options) { - var state = this._baseState; - if (tag === 'seq' || tag === 'set') return null; - if (tag === 'seqof' || tag === 'setof') return this._decodeList(input, tag, state.args[0], options);else if (/str$/.test(tag)) return this._decodeStr(input, tag, options);else if (tag === 'objid' && state.args) return this._decodeObjid(input, state.args[0], state.args[1], options);else if (tag === 'objid') return this._decodeObjid(input, null, null, options);else if (tag === 'gentime' || tag === 'utctime') return this._decodeTime(input, tag, options);else if (tag === 'null_') return this._decodeNull(input, options);else if (tag === 'bool') return this._decodeBool(input, options);else if (tag === 'objDesc') return this._decodeStr(input, tag, options);else if (tag === 'int' || tag === 'enum') return this._decodeInt(input, state.args && state.args[0], options); - - if (state.use !== null) { - return this._getUse(state.use, input._reporterState.obj)._decode(input, options); - } else { - return input.error('unknown tag: ' + tag); - } -}; - -Node.prototype._getUse = function _getUse(entity, obj) { - var state = this._baseState; // Create altered use decoder if implicit is set - - state.useDecoder = this._use(entity, obj); - assert(state.useDecoder._baseState.parent === null); - state.useDecoder = state.useDecoder._baseState.children[0]; - - if (state.implicit !== state.useDecoder._baseState.implicit) { - state.useDecoder = state.useDecoder.clone(); - state.useDecoder._baseState.implicit = state.implicit; - } - - return state.useDecoder; -}; - -Node.prototype._decodeChoice = function decodeChoice(input, options) { - var state = this._baseState; - var result = null; - var match = false; - Object.keys(state.choice).some(function (key) { - var save = input.save(); - var node = state.choice[key]; - - try { - var value = node._decode(input, options); - - if (input.isError(value)) return false; - result = { - type: key, - value: value - }; - match = true; - } catch (e) { - input.restore(save); - return false; - } - - return true; - }, this); - if (!match) return input.error('Choice not matched'); - return result; -}; // -// Encoding -// - - -Node.prototype._createEncoderBuffer = function createEncoderBuffer(data) { - return new EncoderBuffer(data, this.reporter); -}; - -Node.prototype._encode = function encode(data, reporter, parent) { - var state = this._baseState; - if (state['default'] !== null && state['default'] === data) return; - - var result = this._encodeValue(data, reporter, parent); - - if (result === undefined) return; - if (this._skipDefault(result, reporter, parent)) return; - return result; -}; - -Node.prototype._encodeValue = function encode(data, reporter, parent) { - var state = this._baseState; // Decode root node - - if (state.parent === null) return state.children[0]._encode(data, reporter || new Reporter()); - var result = null; // Set reporter to share it with a child class - - this.reporter = reporter; // Check if data is there - - if (state.optional && data === undefined) { - if (state['default'] !== null) data = state['default'];else return; - } // Encode children first - - - var content = null; - var primitive = false; - - if (state.any) { - // Anything that was given is translated to buffer - result = this._createEncoderBuffer(data); - } else if (state.choice) { - result = this._encodeChoice(data, reporter); - } else if (state.contains) { - content = this._getUse(state.contains, parent)._encode(data, reporter); - primitive = true; - } else if (state.children) { - content = state.children.map(function (child) { - if (child._baseState.tag === 'null_') return child._encode(null, reporter, data); - if (child._baseState.key === null) return reporter.error('Child should have a key'); - var prevKey = reporter.enterKey(child._baseState.key); - if (_typeof(data) !== 'object') return reporter.error('Child expected, but input is not object'); - - var res = child._encode(data[child._baseState.key], reporter, data); - - reporter.leaveKey(prevKey); - return res; - }, this).filter(function (child) { - return child; - }); - content = this._createEncoderBuffer(content); - } else { - if (state.tag === 'seqof' || state.tag === 'setof') { - // TODO(indutny): this should be thrown on DSL level - if (!(state.args && state.args.length === 1)) return reporter.error('Too many args for : ' + state.tag); - if (!Array.isArray(data)) return reporter.error('seqof/setof, but data is not Array'); - var child = this.clone(); - child._baseState.implicit = null; - content = this._createEncoderBuffer(data.map(function (item) { - var state = this._baseState; - return this._getUse(state.args[0], data)._encode(item, reporter); - }, child)); - } else if (state.use !== null) { - result = this._getUse(state.use, parent)._encode(data, reporter); - } else { - content = this._encodePrimitive(state.tag, data); - primitive = true; - } - } // Encode data itself - - - if (!state.any && state.choice === null) { - var tag = state.implicit !== null ? state.implicit : state.tag; - var cls = state.implicit === null ? 'universal' : 'context'; - - if (tag === null) { - if (state.use === null) reporter.error('Tag could be omitted only for .use()'); - } else { - if (state.use === null) result = this._encodeComposite(tag, primitive, cls, content); - } - } // Wrap in explicit - - - if (state.explicit !== null) result = this._encodeComposite(state.explicit, false, 'context', result); - return result; -}; - -Node.prototype._encodeChoice = function encodeChoice(data, reporter) { - var state = this._baseState; - var node = state.choice[data.type]; - - if (!node) { - assert(false, data.type + ' not found in ' + JSON.stringify(Object.keys(state.choice))); - } - - return node._encode(data.value, reporter); -}; - -Node.prototype._encodePrimitive = function encodePrimitive(tag, data) { - var state = this._baseState; - if (/str$/.test(tag)) return this._encodeStr(data, tag);else if (tag === 'objid' && state.args) return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);else if (tag === 'objid') return this._encodeObjid(data, null, null);else if (tag === 'gentime' || tag === 'utctime') return this._encodeTime(data, tag);else if (tag === 'null_') return this._encodeNull();else if (tag === 'int' || tag === 'enum') return this._encodeInt(data, state.args && state.reverseArgs[0]);else if (tag === 'bool') return this._encodeBool(data);else if (tag === 'objDesc') return this._encodeStr(data, tag);else throw new Error('Unsupported tag: ' + tag); -}; - -Node.prototype._isNumstr = function isNumstr(str) { - return /^[0-9 ]*$/.test(str); -}; - -Node.prototype._isPrintstr = function isPrintstr(str) { - return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str); -}; - -/***/ }), - -/***/ 1269: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - - -var inherits = __webpack_require__(376); - -function Reporter(options) { - this._reporterState = { - obj: null, - path: [], - options: options || {}, - errors: [] - }; -} - -exports.b = Reporter; - -Reporter.prototype.isError = function isError(obj) { - return obj instanceof ReporterError; -}; - -Reporter.prototype.save = function save() { - var state = this._reporterState; - return { - obj: state.obj, - pathLen: state.path.length - }; -}; - -Reporter.prototype.restore = function restore(data) { - var state = this._reporterState; - state.obj = data.obj; - state.path = state.path.slice(0, data.pathLen); -}; - -Reporter.prototype.enterKey = function enterKey(key) { - return this._reporterState.path.push(key); -}; - -Reporter.prototype.exitKey = function exitKey(index) { - var state = this._reporterState; - state.path = state.path.slice(0, index - 1); -}; - -Reporter.prototype.leaveKey = function leaveKey(index, key, value) { - var state = this._reporterState; - this.exitKey(index); - if (state.obj !== null) state.obj[key] = value; -}; - -Reporter.prototype.path = function path() { - return this._reporterState.path.join('/'); -}; - -Reporter.prototype.enterObject = function enterObject() { - var state = this._reporterState; - var prev = state.obj; - state.obj = {}; - return prev; -}; - -Reporter.prototype.leaveObject = function leaveObject(prev) { - var state = this._reporterState; - var now = state.obj; - state.obj = prev; - return now; -}; - -Reporter.prototype.error = function error(msg) { - var err; - var state = this._reporterState; - var inherited = msg instanceof ReporterError; - - if (inherited) { - err = msg; - } else { - err = new ReporterError(state.path.map(function (elem) { - return '[' + JSON.stringify(elem) + ']'; - }).join(''), msg.message || msg, msg.stack); - } - - if (!state.options.partial) throw err; - if (!inherited) state.errors.push(err); - return err; -}; - -Reporter.prototype.wrapResult = function wrapResult(result) { - var state = this._reporterState; - if (!state.options.partial) return result; - return { - result: this.isError(result) ? null : result, - errors: state.errors - }; -}; - -function ReporterError(path, msg) { - this.path = path; - this.rethrow(msg); -} - -inherits(ReporterError, Error); - -ReporterError.prototype.rethrow = function rethrow(msg) { - this.message = msg + ' at: ' + (this.path || '(shallow)'); - if (Error.captureStackTrace) Error.captureStackTrace(this, ReporterError); - - if (!this.stack) { - try { - // IE only adds stack when thrown - throw new Error(this.message); - } catch (e) { - this.stack = e.stack; - } - } - - return this; -}; - -/***/ }), - -/***/ 2007: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - // Helper - -function reverse(map) { - var res = {}; - Object.keys(map).forEach(function (key) { - // Convert key to integer if it is stringified - if ((key | 0) == key) key = key | 0; - var value = map[key]; - res[value] = key; - }); - return res; -} - -exports.tagClass = { - 0: 'universal', - 1: 'application', - 2: 'context', - 3: 'private' -}; -exports.tagClassByName = reverse(exports.tagClass); -exports.tag = { - 0x00: 'end', - 0x01: 'bool', - 0x02: 'int', - 0x03: 'bitstr', - 0x04: 'octstr', - 0x05: 'null_', - 0x06: 'objid', - 0x07: 'objDesc', - 0x08: 'external', - 0x09: 'real', - 0x0a: 'enum', - 0x0b: 'embed', - 0x0c: 'utf8str', - 0x0d: 'relativeOid', - 0x10: 'seq', - 0x11: 'set', - 0x12: 'numstr', - 0x13: 'printstr', - 0x14: 't61str', - 0x15: 'videostr', - 0x16: 'ia5str', - 0x17: 'utctime', - 0x18: 'gentime', - 0x19: 'graphstr', - 0x1a: 'iso646str', - 0x1b: 'genstr', - 0x1c: 'unistr', - 0x1d: 'charstr', - 0x1e: 'bmpstr' -}; -exports.tagByName = reverse(exports.tag); - -/***/ }), - -/***/ 4319: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - - -var constants = exports; // Helper - -constants._reverse = function reverse(map) { - var res = {}; - Object.keys(map).forEach(function (key) { - // Convert key to integer if it is stringified - if ((key | 0) == key) key = key | 0; - var value = map[key]; - res[value] = key; - }); - return res; -}; - -constants.der = __webpack_require__(2007); - -/***/ }), - -/***/ 4201: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var inherits = __webpack_require__(376); - -var bignum = __webpack_require__(6781); - -var DecoderBuffer = (__webpack_require__(4989)/* .DecoderBuffer */ .C); - -var Node = __webpack_require__(3304); // Import DER constants - - -var der = __webpack_require__(2007); - -function DERDecoder(entity) { - this.enc = 'der'; - this.name = entity.name; - this.entity = entity; // Construct base tree - - this.tree = new DERNode(); - - this.tree._init(entity.body); -} - -module.exports = DERDecoder; - -DERDecoder.prototype.decode = function decode(data, options) { - if (!DecoderBuffer.isDecoderBuffer(data)) { - data = new DecoderBuffer(data, options); - } - - return this.tree._decode(data, options); -}; // Tree methods - - -function DERNode(parent) { - Node.call(this, 'der', parent); -} - -inherits(DERNode, Node); - -DERNode.prototype._peekTag = function peekTag(buffer, tag, any) { - if (buffer.isEmpty()) return false; - var state = buffer.save(); - var decodedTag = derDecodeTag(buffer, 'Failed to peek tag: "' + tag + '"'); - if (buffer.isError(decodedTag)) return decodedTag; - buffer.restore(state); - return decodedTag.tag === tag || decodedTag.tagStr === tag || decodedTag.tagStr + 'of' === tag || any; -}; - -DERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) { - var decodedTag = derDecodeTag(buffer, 'Failed to decode tag of "' + tag + '"'); - if (buffer.isError(decodedTag)) return decodedTag; - var len = derDecodeLen(buffer, decodedTag.primitive, 'Failed to get length of "' + tag + '"'); // Failure - - if (buffer.isError(len)) return len; - - if (!any && decodedTag.tag !== tag && decodedTag.tagStr !== tag && decodedTag.tagStr + 'of' !== tag) { - return buffer.error('Failed to match tag: "' + tag + '"'); - } - - if (decodedTag.primitive || len !== null) return buffer.skip(len, 'Failed to match body of: "' + tag + '"'); // Indefinite length... find END tag - - var state = buffer.save(); - - var res = this._skipUntilEnd(buffer, 'Failed to skip indefinite length body: "' + this.tag + '"'); - - if (buffer.isError(res)) return res; - len = buffer.offset - state.offset; - buffer.restore(state); - return buffer.skip(len, 'Failed to match body of: "' + tag + '"'); -}; - -DERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) { - for (;;) { - var tag = derDecodeTag(buffer, fail); - if (buffer.isError(tag)) return tag; - var len = derDecodeLen(buffer, tag.primitive, fail); - if (buffer.isError(len)) return len; - var res = void 0; - if (tag.primitive || len !== null) res = buffer.skip(len);else res = this._skipUntilEnd(buffer, fail); // Failure - - if (buffer.isError(res)) return res; - if (tag.tagStr === 'end') break; - } -}; - -DERNode.prototype._decodeList = function decodeList(buffer, tag, decoder, options) { - var result = []; - - while (!buffer.isEmpty()) { - var possibleEnd = this._peekTag(buffer, 'end'); - - if (buffer.isError(possibleEnd)) return possibleEnd; - var res = decoder.decode(buffer, 'der', options); - if (buffer.isError(res) && possibleEnd) break; - result.push(res); - } - - return result; -}; - -DERNode.prototype._decodeStr = function decodeStr(buffer, tag) { - if (tag === 'bitstr') { - var unused = buffer.readUInt8(); - if (buffer.isError(unused)) return unused; - return { - unused: unused, - data: buffer.raw() - }; - } else if (tag === 'bmpstr') { - var raw = buffer.raw(); - if (raw.length % 2 === 1) return buffer.error('Decoding of string type: bmpstr length mismatch'); - var str = ''; - - for (var i = 0; i < raw.length / 2; i++) { - str += String.fromCharCode(raw.readUInt16BE(i * 2)); - } - - return str; - } else if (tag === 'numstr') { - var numstr = buffer.raw().toString('ascii'); - - if (!this._isNumstr(numstr)) { - return buffer.error('Decoding of string type: ' + 'numstr unsupported characters'); - } - - return numstr; - } else if (tag === 'octstr') { - return buffer.raw(); - } else if (tag === 'objDesc') { - return buffer.raw(); - } else if (tag === 'printstr') { - var printstr = buffer.raw().toString('ascii'); - - if (!this._isPrintstr(printstr)) { - return buffer.error('Decoding of string type: ' + 'printstr unsupported characters'); - } - - return printstr; - } else if (/str$/.test(tag)) { - return buffer.raw().toString(); - } else { - return buffer.error('Decoding of string type: ' + tag + ' unsupported'); - } -}; - -DERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) { - var result; - var identifiers = []; - var ident = 0; - var subident = 0; - - while (!buffer.isEmpty()) { - subident = buffer.readUInt8(); - ident <<= 7; - ident |= subident & 0x7f; - - if ((subident & 0x80) === 0) { - identifiers.push(ident); - ident = 0; - } - } - - if (subident & 0x80) identifiers.push(ident); - var first = identifiers[0] / 40 | 0; - var second = identifiers[0] % 40; - if (relative) result = identifiers;else result = [first, second].concat(identifiers.slice(1)); - - if (values) { - var tmp = values[result.join(' ')]; - if (tmp === undefined) tmp = values[result.join('.')]; - if (tmp !== undefined) result = tmp; - } - - return result; -}; - -DERNode.prototype._decodeTime = function decodeTime(buffer, tag) { - var str = buffer.raw().toString(); - var year; - var mon; - var day; - var hour; - var min; - var sec; - - if (tag === 'gentime') { - year = str.slice(0, 4) | 0; - mon = str.slice(4, 6) | 0; - day = str.slice(6, 8) | 0; - hour = str.slice(8, 10) | 0; - min = str.slice(10, 12) | 0; - sec = str.slice(12, 14) | 0; - } else if (tag === 'utctime') { - year = str.slice(0, 2) | 0; - mon = str.slice(2, 4) | 0; - day = str.slice(4, 6) | 0; - hour = str.slice(6, 8) | 0; - min = str.slice(8, 10) | 0; - sec = str.slice(10, 12) | 0; - if (year < 70) year = 2000 + year;else year = 1900 + year; - } else { - return buffer.error('Decoding ' + tag + ' time is not supported yet'); - } - - return Date.UTC(year, mon - 1, day, hour, min, sec, 0); -}; - -DERNode.prototype._decodeNull = function decodeNull() { - return null; -}; - -DERNode.prototype._decodeBool = function decodeBool(buffer) { - var res = buffer.readUInt8(); - if (buffer.isError(res)) return res;else return res !== 0; -}; - -DERNode.prototype._decodeInt = function decodeInt(buffer, values) { - // Bigint, return as it is (assume big endian) - var raw = buffer.raw(); - var res = new bignum(raw); - if (values) res = values[res.toString(10)] || res; - return res; -}; - -DERNode.prototype._use = function use(entity, obj) { - if (typeof entity === 'function') entity = entity(obj); - return entity._getDecoder('der').tree; -}; // Utility methods - - -function derDecodeTag(buf, fail) { - var tag = buf.readUInt8(fail); - if (buf.isError(tag)) return tag; - var cls = der.tagClass[tag >> 6]; - var primitive = (tag & 0x20) === 0; // Multi-octet tag - load - - if ((tag & 0x1f) === 0x1f) { - var oct = tag; - tag = 0; - - while ((oct & 0x80) === 0x80) { - oct = buf.readUInt8(fail); - if (buf.isError(oct)) return oct; - tag <<= 7; - tag |= oct & 0x7f; - } - } else { - tag &= 0x1f; - } - - var tagStr = der.tag[tag]; - return { - cls: cls, - primitive: primitive, - tag: tag, - tagStr: tagStr - }; -} - -function derDecodeLen(buf, primitive, fail) { - var len = buf.readUInt8(fail); - if (buf.isError(len)) return len; // Indefinite form - - if (!primitive && len === 0x80) return null; // Definite form - - if ((len & 0x80) === 0) { - // Short form - return len; - } // Long form - - - var num = len & 0x7f; - if (num > 4) return buf.error('length octect is too long'); - len = 0; - - for (var i = 0; i < num; i++) { - len <<= 8; - var j = buf.readUInt8(fail); - if (buf.isError(j)) return j; - len |= j; - } - - return len; -} - -/***/ }), - -/***/ 4049: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - - -var decoders = exports; -decoders.der = __webpack_require__(4201); -decoders.pem = __webpack_require__(618); - -/***/ }), - -/***/ 618: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var inherits = __webpack_require__(376); - -var Buffer = (__webpack_require__(8723).Buffer); - -var DERDecoder = __webpack_require__(4201); - -function PEMDecoder(entity) { - DERDecoder.call(this, entity); - this.enc = 'pem'; -} - -inherits(PEMDecoder, DERDecoder); -module.exports = PEMDecoder; - -PEMDecoder.prototype.decode = function decode(data, options) { - var lines = data.toString().split(/[\r\n]+/g); - var label = options.label.toUpperCase(); - var re = /^-----(BEGIN|END) ([^-]+)-----$/; - var start = -1; - var end = -1; - - for (var i = 0; i < lines.length; i++) { - var match = lines[i].match(re); - if (match === null) continue; - if (match[2] !== label) continue; - - if (start === -1) { - if (match[1] !== 'BEGIN') break; - start = i; - } else { - if (match[1] !== 'END') break; - end = i; - break; - } - } - - if (start === -1 || end === -1) throw new Error('PEM section not found for: ' + label); - var base64 = lines.slice(start + 1, end).join(''); // Remove excessive symbols - - base64.replace(/[^a-z0-9+/=]+/gi, ''); - var input = Buffer.from(base64, 'base64'); - return DERDecoder.prototype.decode.call(this, input, options); -}; - -/***/ }), - -/***/ 1889: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var inherits = __webpack_require__(376); - -var Buffer = (__webpack_require__(8723).Buffer); - -var Node = __webpack_require__(3304); // Import DER constants - - -var der = __webpack_require__(2007); - -function DEREncoder(entity) { - this.enc = 'der'; - this.name = entity.name; - this.entity = entity; // Construct base tree - - this.tree = new DERNode(); - - this.tree._init(entity.body); -} - -module.exports = DEREncoder; - -DEREncoder.prototype.encode = function encode(data, reporter) { - return this.tree._encode(data, reporter).join(); -}; // Tree methods - - -function DERNode(parent) { - Node.call(this, 'der', parent); -} - -inherits(DERNode, Node); - -DERNode.prototype._encodeComposite = function encodeComposite(tag, primitive, cls, content) { - var encodedTag = encodeTag(tag, primitive, cls, this.reporter); // Short form - - if (content.length < 0x80) { - var _header = Buffer.alloc(2); - - _header[0] = encodedTag; - _header[1] = content.length; - return this._createEncoderBuffer([_header, content]); - } // Long form - // Count octets required to store length - - - var lenOctets = 1; - - for (var i = content.length; i >= 0x100; i >>= 8) { - lenOctets++; - } - - var header = Buffer.alloc(1 + 1 + lenOctets); - header[0] = encodedTag; - header[1] = 0x80 | lenOctets; - - for (var _i = 1 + lenOctets, j = content.length; j > 0; _i--, j >>= 8) { - header[_i] = j & 0xff; - } - - return this._createEncoderBuffer([header, content]); -}; - -DERNode.prototype._encodeStr = function encodeStr(str, tag) { - if (tag === 'bitstr') { - return this._createEncoderBuffer([str.unused | 0, str.data]); - } else if (tag === 'bmpstr') { - var buf = Buffer.alloc(str.length * 2); - - for (var i = 0; i < str.length; i++) { - buf.writeUInt16BE(str.charCodeAt(i), i * 2); - } - - return this._createEncoderBuffer(buf); - } else if (tag === 'numstr') { - if (!this._isNumstr(str)) { - return this.reporter.error('Encoding of string type: numstr supports ' + 'only digits and space'); - } - - return this._createEncoderBuffer(str); - } else if (tag === 'printstr') { - if (!this._isPrintstr(str)) { - return this.reporter.error('Encoding of string type: printstr supports ' + 'only latin upper and lower case letters, ' + 'digits, space, apostrophe, left and rigth ' + 'parenthesis, plus sign, comma, hyphen, ' + 'dot, slash, colon, equal sign, ' + 'question mark'); - } - - return this._createEncoderBuffer(str); - } else if (/str$/.test(tag)) { - return this._createEncoderBuffer(str); - } else if (tag === 'objDesc') { - return this._createEncoderBuffer(str); - } else { - return this.reporter.error('Encoding of string type: ' + tag + ' unsupported'); - } -}; - -DERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) { - if (typeof id === 'string') { - if (!values) return this.reporter.error('string objid given, but no values map found'); - if (!values.hasOwnProperty(id)) return this.reporter.error('objid not found in values map'); - id = values[id].split(/[\s.]+/g); - - for (var i = 0; i < id.length; i++) { - id[i] |= 0; - } - } else if (Array.isArray(id)) { - id = id.slice(); - - for (var _i2 = 0; _i2 < id.length; _i2++) { - id[_i2] |= 0; - } - } - - if (!Array.isArray(id)) { - return this.reporter.error('objid() should be either array or string, ' + 'got: ' + JSON.stringify(id)); - } - - if (!relative) { - if (id[1] >= 40) return this.reporter.error('Second objid identifier OOB'); - id.splice(0, 2, id[0] * 40 + id[1]); - } // Count number of octets - - - var size = 0; - - for (var _i3 = 0; _i3 < id.length; _i3++) { - var ident = id[_i3]; - - for (size++; ident >= 0x80; ident >>= 7) { - size++; - } - } - - var objid = Buffer.alloc(size); - var offset = objid.length - 1; - - for (var _i4 = id.length - 1; _i4 >= 0; _i4--) { - var _ident = id[_i4]; - objid[offset--] = _ident & 0x7f; - - while ((_ident >>= 7) > 0) { - objid[offset--] = 0x80 | _ident & 0x7f; - } - } - - return this._createEncoderBuffer(objid); -}; - -function two(num) { - if (num < 10) return '0' + num;else return num; -} - -DERNode.prototype._encodeTime = function encodeTime(time, tag) { - var str; - var date = new Date(time); - - if (tag === 'gentime') { - str = [two(date.getUTCFullYear()), two(date.getUTCMonth() + 1), two(date.getUTCDate()), two(date.getUTCHours()), two(date.getUTCMinutes()), two(date.getUTCSeconds()), 'Z'].join(''); - } else if (tag === 'utctime') { - str = [two(date.getUTCFullYear() % 100), two(date.getUTCMonth() + 1), two(date.getUTCDate()), two(date.getUTCHours()), two(date.getUTCMinutes()), two(date.getUTCSeconds()), 'Z'].join(''); - } else { - this.reporter.error('Encoding ' + tag + ' time is not supported yet'); - } - - return this._encodeStr(str, 'octstr'); -}; - -DERNode.prototype._encodeNull = function encodeNull() { - return this._createEncoderBuffer(''); -}; - -DERNode.prototype._encodeInt = function encodeInt(num, values) { - if (typeof num === 'string') { - if (!values) return this.reporter.error('String int or enum given, but no values map'); - - if (!values.hasOwnProperty(num)) { - return this.reporter.error('Values map doesn\'t contain: ' + JSON.stringify(num)); - } - - num = values[num]; - } // Bignum, assume big endian - - - if (typeof num !== 'number' && !Buffer.isBuffer(num)) { - var numArray = num.toArray(); - - if (!num.sign && numArray[0] & 0x80) { - numArray.unshift(0); - } - - num = Buffer.from(numArray); - } - - if (Buffer.isBuffer(num)) { - var _size = num.length; - if (num.length === 0) _size++; - - var _out = Buffer.alloc(_size); - - num.copy(_out); - if (num.length === 0) _out[0] = 0; - return this._createEncoderBuffer(_out); - } - - if (num < 0x80) return this._createEncoderBuffer(num); - if (num < 0x100) return this._createEncoderBuffer([0, num]); - var size = 1; - - for (var i = num; i >= 0x100; i >>= 8) { - size++; - } - - var out = new Array(size); - - for (var _i5 = out.length - 1; _i5 >= 0; _i5--) { - out[_i5] = num & 0xff; - num >>= 8; - } - - if (out[0] & 0x80) { - out.unshift(0); - } - - return this._createEncoderBuffer(Buffer.from(out)); -}; - -DERNode.prototype._encodeBool = function encodeBool(value) { - return this._createEncoderBuffer(value ? 0xff : 0); -}; - -DERNode.prototype._use = function use(entity, obj) { - if (typeof entity === 'function') entity = entity(obj); - return entity._getEncoder('der').tree; -}; - -DERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) { - var state = this._baseState; - var i; - if (state['default'] === null) return false; - var data = dataBuffer.join(); - if (state.defaultBuffer === undefined) state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join(); - if (data.length !== state.defaultBuffer.length) return false; - - for (i = 0; i < data.length; i++) { - if (data[i] !== state.defaultBuffer[i]) return false; - } - - return true; -}; // Utility methods - - -function encodeTag(tag, primitive, cls, reporter) { - var res; - if (tag === 'seqof') tag = 'seq';else if (tag === 'setof') tag = 'set'; - if (der.tagByName.hasOwnProperty(tag)) res = der.tagByName[tag];else if (typeof tag === 'number' && (tag | 0) === tag) res = tag;else return reporter.error('Unknown tag: ' + tag); - if (res >= 0x1f) return reporter.error('Multi-octet tag encoding unsupported'); - if (!primitive) res |= 0x20; - res |= der.tagClassByName[cls || 'universal'] << 6; - return res; -} - -/***/ }), - -/***/ 6860: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - - -var encoders = exports; -encoders.der = __webpack_require__(1889); -encoders.pem = __webpack_require__(1610); - -/***/ }), - -/***/ 1610: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var inherits = __webpack_require__(376); - -var DEREncoder = __webpack_require__(1889); - -function PEMEncoder(entity) { - DEREncoder.call(this, entity); - this.enc = 'pem'; -} - -inherits(PEMEncoder, DEREncoder); -module.exports = PEMEncoder; - -PEMEncoder.prototype.encode = function encode(data, options) { - var buf = DEREncoder.prototype.encode.call(this, data); - var p = buf.toString('base64'); - var out = ['-----BEGIN ' + options.label + '-----']; - - for (var i = 0; i < p.length; i += 64) { - out.push(p.slice(i, i + 64)); - } - - out.push('-----END ' + options.label + '-----'); - return out.join('\n'); -}; - -/***/ }), - -/***/ 9373: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Currently in sync with Node.js lib/assert.js -// https://github.com/nodejs/node/commit/2a51ae424a513ec9a6aa3466baa0cc1d55dd4f3b -// Originally from narwhal.js (http://narwhaljs.org) -// Copyright (c) 2009 Thomas Robinson <280north.com> -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the 'Software'), to -// deal in the Software without restriction, including without limitation the -// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -// sell copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -function _typeof2(obj) { "@babel/helpers - typeof"; return _typeof2 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof2(obj); } - -function _typeof(obj) { - if (typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol") { - _typeof = function _typeof(obj) { - return _typeof2(obj); - }; - } else { - _typeof = function _typeof(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj); - }; - } - - return _typeof(obj); -} - -function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } -} - -var _require = __webpack_require__(9978), - _require$codes = _require.codes, - ERR_AMBIGUOUS_ARGUMENT = _require$codes.ERR_AMBIGUOUS_ARGUMENT, - ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, - ERR_INVALID_ARG_VALUE = _require$codes.ERR_INVALID_ARG_VALUE, - ERR_INVALID_RETURN_VALUE = _require$codes.ERR_INVALID_RETURN_VALUE, - ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS; - -var AssertionError = __webpack_require__(1935); - -var _require2 = __webpack_require__(161), - inspect = _require2.inspect; - -var _require$types = (__webpack_require__(161).types), - isPromise = _require$types.isPromise, - isRegExp = _require$types.isRegExp; - -var objectAssign = Object.assign ? Object.assign : (__webpack_require__(8028).assign); -var objectIs = Object.is ? Object.is : __webpack_require__(4710); -var errorCache = new Map(); -var isDeepEqual; -var isDeepStrictEqual; -var parseExpressionAt; -var findNodeAround; -var decoder; - -function lazyLoadComparison() { - var comparison = __webpack_require__(9015); - - isDeepEqual = comparison.isDeepEqual; - isDeepStrictEqual = comparison.isDeepStrictEqual; -} // Escape control characters but not \n and \t to keep the line breaks and -// indentation intact. -// eslint-disable-next-line no-control-regex - - -var escapeSequencesRegExp = /[\x00-\x08\x0b\x0c\x0e-\x1f]/g; -var meta = (/* unused pure expression or super */ null && (["\\u0000", "\\u0001", "\\u0002", "\\u0003", "\\u0004", "\\u0005", "\\u0006", "\\u0007", '\\b', '', '', "\\u000b", '\\f', '', "\\u000e", "\\u000f", "\\u0010", "\\u0011", "\\u0012", "\\u0013", "\\u0014", "\\u0015", "\\u0016", "\\u0017", "\\u0018", "\\u0019", "\\u001a", "\\u001b", "\\u001c", "\\u001d", "\\u001e", "\\u001f"])); - -var escapeFn = function escapeFn(str) { - return meta[str.charCodeAt(0)]; -}; - -var warned = false; // The assert module provides functions that throw -// AssertionError's when particular conditions are not met. The -// assert module must conform to the following interface. - -var assert = module.exports = ok; -var NO_EXCEPTION_SENTINEL = {}; // All of the following functions must throw an AssertionError -// when a corresponding condition is not met, with a message that -// may be undefined if not provided. All assertion methods provide -// both the actual and expected values to the assertion error for -// display purposes. - -function innerFail(obj) { - if (obj.message instanceof Error) throw obj.message; - throw new AssertionError(obj); -} - -function fail(actual, expected, message, operator, stackStartFn) { - var argsLen = arguments.length; - var internalMessage; - - if (argsLen === 0) { - internalMessage = 'Failed'; - } else if (argsLen === 1) { - message = actual; - actual = undefined; - } else { - if (warned === false) { - warned = true; - var warn = ({env:{}}).emitWarning ? ({env:{}}).emitWarning : console.warn.bind(console); - warn('assert.fail() with more than one argument is deprecated. ' + 'Please use assert.strictEqual() instead or only pass a message.', 'DeprecationWarning', 'DEP0094'); - } - - if (argsLen === 2) operator = '!='; - } - - if (message instanceof Error) throw message; - var errArgs = { - actual: actual, - expected: expected, - operator: operator === undefined ? 'fail' : operator, - stackStartFn: stackStartFn || fail - }; - - if (message !== undefined) { - errArgs.message = message; - } - - var err = new AssertionError(errArgs); - - if (internalMessage) { - err.message = internalMessage; - err.generatedMessage = true; - } - - throw err; -} - -assert.fail = fail; // The AssertionError is defined in internal/error. - -assert.AssertionError = AssertionError; - -function innerOk(fn, argLen, value, message) { - if (!value) { - var generatedMessage = false; - - if (argLen === 0) { - generatedMessage = true; - message = 'No value argument passed to `assert.ok()`'; - } else if (message instanceof Error) { - throw message; - } - - var err = new AssertionError({ - actual: value, - expected: true, - message: message, - operator: '==', - stackStartFn: fn - }); - err.generatedMessage = generatedMessage; - throw err; - } -} // Pure assertion tests whether a value is truthy, as determined -// by !!value. - - -function ok() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - innerOk.apply(void 0, [ok, args.length].concat(args)); -} - -assert.ok = ok; // The equality assertion tests shallow, coercive equality with ==. - -/* eslint-disable no-restricted-properties */ - -assert.equal = function equal(actual, expected, message) { - if (arguments.length < 2) { - throw new ERR_MISSING_ARGS('actual', 'expected'); - } // eslint-disable-next-line eqeqeq - - - if (actual != expected) { - innerFail({ - actual: actual, - expected: expected, - message: message, - operator: '==', - stackStartFn: equal - }); - } -}; // The non-equality assertion tests for whether two objects are not -// equal with !=. - - -assert.notEqual = function notEqual(actual, expected, message) { - if (arguments.length < 2) { - throw new ERR_MISSING_ARGS('actual', 'expected'); - } // eslint-disable-next-line eqeqeq - - - if (actual == expected) { - innerFail({ - actual: actual, - expected: expected, - message: message, - operator: '!=', - stackStartFn: notEqual - }); - } -}; // The equivalence assertion tests a deep equality relation. - - -assert.deepEqual = function deepEqual(actual, expected, message) { - if (arguments.length < 2) { - throw new ERR_MISSING_ARGS('actual', 'expected'); - } - - if (isDeepEqual === undefined) lazyLoadComparison(); - - if (!isDeepEqual(actual, expected)) { - innerFail({ - actual: actual, - expected: expected, - message: message, - operator: 'deepEqual', - stackStartFn: deepEqual - }); - } -}; // The non-equivalence assertion tests for any deep inequality. - - -assert.notDeepEqual = function notDeepEqual(actual, expected, message) { - if (arguments.length < 2) { - throw new ERR_MISSING_ARGS('actual', 'expected'); - } - - if (isDeepEqual === undefined) lazyLoadComparison(); - - if (isDeepEqual(actual, expected)) { - innerFail({ - actual: actual, - expected: expected, - message: message, - operator: 'notDeepEqual', - stackStartFn: notDeepEqual - }); - } -}; -/* eslint-enable */ - - -assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) { - if (arguments.length < 2) { - throw new ERR_MISSING_ARGS('actual', 'expected'); - } - - if (isDeepEqual === undefined) lazyLoadComparison(); - - if (!isDeepStrictEqual(actual, expected)) { - innerFail({ - actual: actual, - expected: expected, - message: message, - operator: 'deepStrictEqual', - stackStartFn: deepStrictEqual - }); - } -}; - -assert.notDeepStrictEqual = notDeepStrictEqual; - -function notDeepStrictEqual(actual, expected, message) { - if (arguments.length < 2) { - throw new ERR_MISSING_ARGS('actual', 'expected'); - } - - if (isDeepEqual === undefined) lazyLoadComparison(); - - if (isDeepStrictEqual(actual, expected)) { - innerFail({ - actual: actual, - expected: expected, - message: message, - operator: 'notDeepStrictEqual', - stackStartFn: notDeepStrictEqual - }); - } -} - -assert.strictEqual = function strictEqual(actual, expected, message) { - if (arguments.length < 2) { - throw new ERR_MISSING_ARGS('actual', 'expected'); - } - - if (!objectIs(actual, expected)) { - innerFail({ - actual: actual, - expected: expected, - message: message, - operator: 'strictEqual', - stackStartFn: strictEqual - }); - } -}; - -assert.notStrictEqual = function notStrictEqual(actual, expected, message) { - if (arguments.length < 2) { - throw new ERR_MISSING_ARGS('actual', 'expected'); - } - - if (objectIs(actual, expected)) { - innerFail({ - actual: actual, - expected: expected, - message: message, - operator: 'notStrictEqual', - stackStartFn: notStrictEqual - }); - } -}; - -var Comparison = function Comparison(obj, keys, actual) { - var _this = this; - - _classCallCheck(this, Comparison); - - keys.forEach(function (key) { - if (key in obj) { - if (actual !== undefined && typeof actual[key] === 'string' && isRegExp(obj[key]) && obj[key].test(actual[key])) { - _this[key] = actual[key]; - } else { - _this[key] = obj[key]; - } - } - }); -}; - -function compareExceptionKey(actual, expected, key, message, keys, fn) { - if (!(key in actual) || !isDeepStrictEqual(actual[key], expected[key])) { - if (!message) { - // Create placeholder objects to create a nice output. - var a = new Comparison(actual, keys); - var b = new Comparison(expected, keys, actual); - var err = new AssertionError({ - actual: a, - expected: b, - operator: 'deepStrictEqual', - stackStartFn: fn - }); - err.actual = actual; - err.expected = expected; - err.operator = fn.name; - throw err; - } - - innerFail({ - actual: actual, - expected: expected, - message: message, - operator: fn.name, - stackStartFn: fn - }); - } -} - -function expectedException(actual, expected, msg, fn) { - if (typeof expected !== 'function') { - if (isRegExp(expected)) return expected.test(actual); // assert.doesNotThrow does not accept objects. - - if (arguments.length === 2) { - throw new ERR_INVALID_ARG_TYPE('expected', ['Function', 'RegExp'], expected); - } // Handle primitives properly. - - - if (_typeof(actual) !== 'object' || actual === null) { - var err = new AssertionError({ - actual: actual, - expected: expected, - message: msg, - operator: 'deepStrictEqual', - stackStartFn: fn - }); - err.operator = fn.name; - throw err; - } - - var keys = Object.keys(expected); // Special handle errors to make sure the name and the message are compared - // as well. - - if (expected instanceof Error) { - keys.push('name', 'message'); - } else if (keys.length === 0) { - throw new ERR_INVALID_ARG_VALUE('error', expected, 'may not be an empty object'); - } - - if (isDeepEqual === undefined) lazyLoadComparison(); - keys.forEach(function (key) { - if (typeof actual[key] === 'string' && isRegExp(expected[key]) && expected[key].test(actual[key])) { - return; - } - - compareExceptionKey(actual, expected, key, msg, keys, fn); - }); - return true; - } // Guard instanceof against arrow functions as they don't have a prototype. - - - if (expected.prototype !== undefined && actual instanceof expected) { - return true; - } - - if (Error.isPrototypeOf(expected)) { - return false; - } - - return expected.call({}, actual) === true; -} - -function getActual(fn) { - if (typeof fn !== 'function') { - throw new ERR_INVALID_ARG_TYPE('fn', 'Function', fn); - } - - try { - fn(); - } catch (e) { - return e; - } - - return NO_EXCEPTION_SENTINEL; -} - -function checkIsPromise(obj) { - // Accept native ES6 promises and promises that are implemented in a similar - // way. Do not accept thenables that use a function as `obj` and that have no - // `catch` handler. - // TODO: thenables are checked up until they have the correct methods, - // but according to documentation, the `then` method should receive - // the `fulfill` and `reject` arguments as well or it may be never resolved. - return isPromise(obj) || obj !== null && _typeof(obj) === 'object' && typeof obj.then === 'function' && typeof obj["catch"] === 'function'; -} - -function waitForActual(promiseFn) { - return Promise.resolve().then(function () { - var resultPromise; - - if (typeof promiseFn === 'function') { - // Return a rejected promise if `promiseFn` throws synchronously. - resultPromise = promiseFn(); // Fail in case no promise is returned. - - if (!checkIsPromise(resultPromise)) { - throw new ERR_INVALID_RETURN_VALUE('instance of Promise', 'promiseFn', resultPromise); - } - } else if (checkIsPromise(promiseFn)) { - resultPromise = promiseFn; - } else { - throw new ERR_INVALID_ARG_TYPE('promiseFn', ['Function', 'Promise'], promiseFn); - } - - return Promise.resolve().then(function () { - return resultPromise; - }).then(function () { - return NO_EXCEPTION_SENTINEL; - })["catch"](function (e) { - return e; - }); - }); -} - -function expectsError(stackStartFn, actual, error, message) { - if (typeof error === 'string') { - if (arguments.length === 4) { - throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error); - } - - if (_typeof(actual) === 'object' && actual !== null) { - if (actual.message === error) { - throw new ERR_AMBIGUOUS_ARGUMENT('error/message', "The error message \"".concat(actual.message, "\" is identical to the message.")); - } - } else if (actual === error) { - throw new ERR_AMBIGUOUS_ARGUMENT('error/message', "The error \"".concat(actual, "\" is identical to the message.")); - } - - message = error; - error = undefined; - } else if (error != null && _typeof(error) !== 'object' && typeof error !== 'function') { - throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error); - } - - if (actual === NO_EXCEPTION_SENTINEL) { - var details = ''; - - if (error && error.name) { - details += " (".concat(error.name, ")"); - } - - details += message ? ": ".concat(message) : '.'; - var fnType = stackStartFn.name === 'rejects' ? 'rejection' : 'exception'; - innerFail({ - actual: undefined, - expected: error, - operator: stackStartFn.name, - message: "Missing expected ".concat(fnType).concat(details), - stackStartFn: stackStartFn - }); - } - - if (error && !expectedException(actual, error, message, stackStartFn)) { - throw actual; - } -} - -function expectsNoError(stackStartFn, actual, error, message) { - if (actual === NO_EXCEPTION_SENTINEL) return; - - if (typeof error === 'string') { - message = error; - error = undefined; - } - - if (!error || expectedException(actual, error)) { - var details = message ? ": ".concat(message) : '.'; - var fnType = stackStartFn.name === 'doesNotReject' ? 'rejection' : 'exception'; - innerFail({ - actual: actual, - expected: error, - operator: stackStartFn.name, - message: "Got unwanted ".concat(fnType).concat(details, "\n") + "Actual message: \"".concat(actual && actual.message, "\""), - stackStartFn: stackStartFn - }); - } - - throw actual; -} - -assert["throws"] = function _throws(promiseFn) { - for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { - args[_key2 - 1] = arguments[_key2]; - } - - expectsError.apply(void 0, [_throws, getActual(promiseFn)].concat(args)); -}; - -assert.rejects = function rejects(promiseFn) { - for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { - args[_key3 - 1] = arguments[_key3]; - } - - return waitForActual(promiseFn).then(function (result) { - return expectsError.apply(void 0, [rejects, result].concat(args)); - }); -}; - -assert.doesNotThrow = function doesNotThrow(fn) { - for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) { - args[_key4 - 1] = arguments[_key4]; - } - - expectsNoError.apply(void 0, [doesNotThrow, getActual(fn)].concat(args)); -}; - -assert.doesNotReject = function doesNotReject(fn) { - for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) { - args[_key5 - 1] = arguments[_key5]; - } - - return waitForActual(fn).then(function (result) { - return expectsNoError.apply(void 0, [doesNotReject, result].concat(args)); - }); -}; - -assert.ifError = function ifError(err) { - if (err !== null && err !== undefined) { - var message = 'ifError got unwanted exception: '; - - if (_typeof(err) === 'object' && typeof err.message === 'string') { - if (err.message.length === 0 && err.constructor) { - message += err.constructor.name; - } else { - message += err.message; - } - } else { - message += inspect(err); - } - - var newErr = new AssertionError({ - actual: err, - expected: null, - operator: 'ifError', - message: message, - stackStartFn: ifError - }); // Make sure we actually have a stack trace! - - var origStack = err.stack; - - if (typeof origStack === 'string') { - // This will remove any duplicated frames from the error frames taken - // from within `ifError` and add the original error frames to the newly - // created ones. - var tmp2 = origStack.split('\n'); - tmp2.shift(); // Filter all frames existing in err.stack. - - var tmp1 = newErr.stack.split('\n'); - - for (var i = 0; i < tmp2.length; i++) { - // Find the first occurrence of the frame. - var pos = tmp1.indexOf(tmp2[i]); - - if (pos !== -1) { - // Only keep new frames. - tmp1 = tmp1.slice(0, pos); - break; - } - } - - newErr.stack = "".concat(tmp1.join('\n'), "\n").concat(tmp2.join('\n')); - } - - throw newErr; - } -}; // Expose a strict only variant of assert - - -function strict() { - for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) { - args[_key6] = arguments[_key6]; - } - - innerOk.apply(void 0, [strict, args.length].concat(args)); -} - -assert.strict = objectAssign(strict, assert, { - equal: assert.strictEqual, - deepEqual: assert.deepStrictEqual, - notEqual: assert.notStrictEqual, - notDeepEqual: assert.notDeepStrictEqual -}); -assert.strict.strict = assert.strict; - -/***/ }), - -/***/ 1935: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Currently in sync with Node.js lib/internal/assert/assertion_error.js -// https://github.com/nodejs/node/commit/0817840f775032169ddd70c85ac059f18ffcc81c - - -function _typeof2(obj) { "@babel/helpers - typeof"; return _typeof2 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof2(obj); } - -function _objectSpread(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i] != null ? arguments[i] : {}; - var ownKeys = Object.keys(source); - - if (typeof Object.getOwnPropertySymbols === 'function') { - ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { - return Object.getOwnPropertyDescriptor(source, sym).enumerable; - })); - } - - ownKeys.forEach(function (key) { - _defineProperty(target, key, source[key]); - }); - } - - return target; -} - -function _defineProperty(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - - return obj; -} - -function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } -} - -function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } -} - -function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; -} - -function _possibleConstructorReturn(self, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - - return _assertThisInitialized(self); -} - -function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - - return self; -} - -function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - writable: true, - configurable: true - } - }); - if (superClass) _setPrototypeOf(subClass, superClass); -} - -function _wrapNativeSuper(Class) { - var _cache = typeof Map === "function" ? new Map() : undefined; - - _wrapNativeSuper = function _wrapNativeSuper(Class) { - if (Class === null || !_isNativeFunction(Class)) return Class; - - if (typeof Class !== "function") { - throw new TypeError("Super expression must either be null or a function"); - } - - if (typeof _cache !== "undefined") { - if (_cache.has(Class)) return _cache.get(Class); - - _cache.set(Class, Wrapper); - } - - function Wrapper() { - return _construct(Class, arguments, _getPrototypeOf(this).constructor); - } - - Wrapper.prototype = Object.create(Class.prototype, { - constructor: { - value: Wrapper, - enumerable: false, - writable: true, - configurable: true - } - }); - return _setPrototypeOf(Wrapper, Class); - }; - - return _wrapNativeSuper(Class); -} - -function isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) return false; - if (Reflect.construct.sham) return false; - if (typeof Proxy === "function") return true; - - try { - Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); - return true; - } catch (e) { - return false; - } -} - -function _construct(Parent, args, Class) { - if (isNativeReflectConstruct()) { - _construct = Reflect.construct; - } else { - _construct = function _construct(Parent, args, Class) { - var a = [null]; - a.push.apply(a, args); - var Constructor = Function.bind.apply(Parent, a); - var instance = new Constructor(); - if (Class) _setPrototypeOf(instance, Class.prototype); - return instance; - }; - } - - return _construct.apply(null, arguments); -} - -function _isNativeFunction(fn) { - return Function.toString.call(fn).indexOf("[native code]") !== -1; -} - -function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - - return _setPrototypeOf(o, p); -} - -function _getPrototypeOf(o) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { - return o.__proto__ || Object.getPrototypeOf(o); - }; - return _getPrototypeOf(o); -} - -function _typeof(obj) { - if (typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol") { - _typeof = function _typeof(obj) { - return _typeof2(obj); - }; - } else { - _typeof = function _typeof(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj); - }; - } - - return _typeof(obj); -} - -var _require = __webpack_require__(161), - inspect = _require.inspect; - -var _require2 = __webpack_require__(9978), - ERR_INVALID_ARG_TYPE = _require2.codes.ERR_INVALID_ARG_TYPE; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith - - -function endsWith(str, search, this_len) { - if (this_len === undefined || this_len > str.length) { - this_len = str.length; - } - - return str.substring(this_len - search.length, this_len) === search; -} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat - - -function repeat(str, count) { - count = Math.floor(count); - if (str.length == 0 || count == 0) return ''; - var maxCount = str.length * count; - count = Math.floor(Math.log(count) / Math.log(2)); - - while (count) { - str += str; - count--; - } - - str += str.substring(0, maxCount - str.length); - return str; -} - -var blue = ''; -var green = ''; -var red = ''; -var white = ''; -var kReadableOperator = { - deepStrictEqual: 'Expected values to be strictly deep-equal:', - strictEqual: 'Expected values to be strictly equal:', - strictEqualObject: 'Expected "actual" to be reference-equal to "expected":', - deepEqual: 'Expected values to be loosely deep-equal:', - equal: 'Expected values to be loosely equal:', - notDeepStrictEqual: 'Expected "actual" not to be strictly deep-equal to:', - notStrictEqual: 'Expected "actual" to be strictly unequal to:', - notStrictEqualObject: 'Expected "actual" not to be reference-equal to "expected":', - notDeepEqual: 'Expected "actual" not to be loosely deep-equal to:', - notEqual: 'Expected "actual" to be loosely unequal to:', - notIdentical: 'Values identical but not reference-equal:' -}; // Comparing short primitives should just show === / !== instead of using the -// diff. - -var kMaxShortLength = 10; - -function copyError(source) { - var keys = Object.keys(source); - var target = Object.create(Object.getPrototypeOf(source)); - keys.forEach(function (key) { - target[key] = source[key]; - }); - Object.defineProperty(target, 'message', { - value: source.message - }); - return target; -} - -function inspectValue(val) { - // The util.inspect default values could be changed. This makes sure the - // error messages contain the necessary information nevertheless. - return inspect(val, { - compact: false, - customInspect: false, - depth: 1000, - maxArrayLength: Infinity, - // Assert compares only enumerable properties (with a few exceptions). - showHidden: false, - // Having a long line as error is better than wrapping the line for - // comparison for now. - // TODO(BridgeAR): `breakLength` should be limited as soon as soon as we - // have meta information about the inspected properties (i.e., know where - // in what line the property starts and ends). - breakLength: Infinity, - // Assert does not detect proxies currently. - showProxy: false, - sorted: true, - // Inspect getters as we also check them when comparing entries. - getters: true - }); -} - -function createErrDiff(actual, expected, operator) { - var other = ''; - var res = ''; - var lastPos = 0; - var end = ''; - var skipped = false; - var actualInspected = inspectValue(actual); - var actualLines = actualInspected.split('\n'); - var expectedLines = inspectValue(expected).split('\n'); - var i = 0; - var indicator = ''; // In case both values are objects explicitly mark them as not reference equal - // for the `strictEqual` operator. - - if (operator === 'strictEqual' && _typeof(actual) === 'object' && _typeof(expected) === 'object' && actual !== null && expected !== null) { - operator = 'strictEqualObject'; - } // If "actual" and "expected" fit on a single line and they are not strictly - // equal, check further special handling. - - - if (actualLines.length === 1 && expectedLines.length === 1 && actualLines[0] !== expectedLines[0]) { - var inputLength = actualLines[0].length + expectedLines[0].length; // If the character length of "actual" and "expected" together is less than - // kMaxShortLength and if neither is an object and at least one of them is - // not `zero`, use the strict equal comparison to visualize the output. - - if (inputLength <= kMaxShortLength) { - if ((_typeof(actual) !== 'object' || actual === null) && (_typeof(expected) !== 'object' || expected === null) && (actual !== 0 || expected !== 0)) { - // -0 === +0 - return "".concat(kReadableOperator[operator], "\n\n") + "".concat(actualLines[0], " !== ").concat(expectedLines[0], "\n"); - } - } else if (operator !== 'strictEqualObject') { - // If the stderr is a tty and the input length is lower than the current - // columns per line, add a mismatch indicator below the output. If it is - // not a tty, use a default value of 80 characters. - var maxLength = ({env:{}}).stderr && ({env:{}}).stderr.isTTY ? ({env:{}}).stderr.columns : 80; - - if (inputLength < maxLength) { - while (actualLines[0][i] === expectedLines[0][i]) { - i++; - } // Ignore the first characters. - - - if (i > 2) { - // Add position indicator for the first mismatch in case it is a - // single line and the input length is less than the column length. - indicator = "\n ".concat(repeat(' ', i), "^"); - i = 0; - } - } - } - } // Remove all ending lines that match (this optimizes the output for - // readability by reducing the number of total changed lines). - - - var a = actualLines[actualLines.length - 1]; - var b = expectedLines[expectedLines.length - 1]; - - while (a === b) { - if (i++ < 2) { - end = "\n ".concat(a).concat(end); - } else { - other = a; - } - - actualLines.pop(); - expectedLines.pop(); - if (actualLines.length === 0 || expectedLines.length === 0) break; - a = actualLines[actualLines.length - 1]; - b = expectedLines[expectedLines.length - 1]; - } - - var maxLines = Math.max(actualLines.length, expectedLines.length); // Strict equal with identical objects that are not identical by reference. - // E.g., assert.deepStrictEqual({ a: Symbol() }, { a: Symbol() }) - - if (maxLines === 0) { - // We have to get the result again. The lines were all removed before. - var _actualLines = actualInspected.split('\n'); // Only remove lines in case it makes sense to collapse those. - // TODO: Accept env to always show the full error. - - - if (_actualLines.length > 30) { - _actualLines[26] = "".concat(blue, "...").concat(white); - - while (_actualLines.length > 27) { - _actualLines.pop(); - } - } - - return "".concat(kReadableOperator.notIdentical, "\n\n").concat(_actualLines.join('\n'), "\n"); - } - - if (i > 3) { - end = "\n".concat(blue, "...").concat(white).concat(end); - skipped = true; - } - - if (other !== '') { - end = "\n ".concat(other).concat(end); - other = ''; - } - - var printedLines = 0; - var msg = kReadableOperator[operator] + "\n".concat(green, "+ actual").concat(white, " ").concat(red, "- expected").concat(white); - var skippedMsg = " ".concat(blue, "...").concat(white, " Lines skipped"); - - for (i = 0; i < maxLines; i++) { - // Only extra expected lines exist - var cur = i - lastPos; - - if (actualLines.length < i + 1) { - // If the last diverging line is more than one line above and the - // current line is at least line three, add some of the former lines and - // also add dots to indicate skipped entries. - if (cur > 1 && i > 2) { - if (cur > 4) { - res += "\n".concat(blue, "...").concat(white); - skipped = true; - } else if (cur > 3) { - res += "\n ".concat(expectedLines[i - 2]); - printedLines++; - } - - res += "\n ".concat(expectedLines[i - 1]); - printedLines++; - } // Mark the current line as the last diverging one. - - - lastPos = i; // Add the expected line to the cache. - - other += "\n".concat(red, "-").concat(white, " ").concat(expectedLines[i]); - printedLines++; // Only extra actual lines exist - } else if (expectedLines.length < i + 1) { - // If the last diverging line is more than one line above and the - // current line is at least line three, add some of the former lines and - // also add dots to indicate skipped entries. - if (cur > 1 && i > 2) { - if (cur > 4) { - res += "\n".concat(blue, "...").concat(white); - skipped = true; - } else if (cur > 3) { - res += "\n ".concat(actualLines[i - 2]); - printedLines++; - } - - res += "\n ".concat(actualLines[i - 1]); - printedLines++; - } // Mark the current line as the last diverging one. - - - lastPos = i; // Add the actual line to the result. - - res += "\n".concat(green, "+").concat(white, " ").concat(actualLines[i]); - printedLines++; // Lines diverge - } else { - var expectedLine = expectedLines[i]; - var actualLine = actualLines[i]; // If the lines diverge, specifically check for lines that only diverge by - // a trailing comma. In that case it is actually identical and we should - // mark it as such. - - var divergingLines = actualLine !== expectedLine && (!endsWith(actualLine, ',') || actualLine.slice(0, -1) !== expectedLine); // If the expected line has a trailing comma but is otherwise identical, - // add a comma at the end of the actual line. Otherwise the output could - // look weird as in: - // - // [ - // 1 // No comma at the end! - // + 2 - // ] - // - - if (divergingLines && endsWith(expectedLine, ',') && expectedLine.slice(0, -1) === actualLine) { - divergingLines = false; - actualLine += ','; - } - - if (divergingLines) { - // If the last diverging line is more than one line above and the - // current line is at least line three, add some of the former lines and - // also add dots to indicate skipped entries. - if (cur > 1 && i > 2) { - if (cur > 4) { - res += "\n".concat(blue, "...").concat(white); - skipped = true; - } else if (cur > 3) { - res += "\n ".concat(actualLines[i - 2]); - printedLines++; - } - - res += "\n ".concat(actualLines[i - 1]); - printedLines++; - } // Mark the current line as the last diverging one. - - - lastPos = i; // Add the actual line to the result and cache the expected diverging - // line so consecutive diverging lines show up as +++--- and not +-+-+-. - - res += "\n".concat(green, "+").concat(white, " ").concat(actualLine); - other += "\n".concat(red, "-").concat(white, " ").concat(expectedLine); - printedLines += 2; // Lines are identical - } else { - // Add all cached information to the result before adding other things - // and reset the cache. - res += other; - other = ''; // If the last diverging line is exactly one line above or if it is the - // very first line, add the line to the result. - - if (cur === 1 || i === 0) { - res += "\n ".concat(actualLine); - printedLines++; - } - } - } // Inspected object to big (Show ~20 rows max) - - - if (printedLines > 20 && i < maxLines - 2) { - return "".concat(msg).concat(skippedMsg, "\n").concat(res, "\n").concat(blue, "...").concat(white).concat(other, "\n") + "".concat(blue, "...").concat(white); - } - } - - return "".concat(msg).concat(skipped ? skippedMsg : '', "\n").concat(res).concat(other).concat(end).concat(indicator); -} - -var AssertionError = /*#__PURE__*/function (_Error) { - _inherits(AssertionError, _Error); - - function AssertionError(options) { - var _this; - - _classCallCheck(this, AssertionError); - - if (_typeof(options) !== 'object' || options === null) { - throw new ERR_INVALID_ARG_TYPE('options', 'Object', options); - } - - var message = options.message, - operator = options.operator, - stackStartFn = options.stackStartFn; - var actual = options.actual, - expected = options.expected; - var limit = Error.stackTraceLimit; - Error.stackTraceLimit = 0; - - if (message != null) { - _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, String(message))); - } else { - if (({env:{}}).stderr && ({env:{}}).stderr.isTTY) { - // Reset on each call to make sure we handle dynamically set environment - // variables correct. - if (({env:{}}).stderr && ({env:{}}).stderr.getColorDepth && ({env:{}}).stderr.getColorDepth() !== 1) { - blue = "\x1B[34m"; - green = "\x1B[32m"; - white = "\x1B[39m"; - red = "\x1B[31m"; - } else { - blue = ''; - green = ''; - white = ''; - red = ''; - } - } // Prevent the error stack from being visible by duplicating the error - // in a very close way to the original in case both sides are actually - // instances of Error. - - - if (_typeof(actual) === 'object' && actual !== null && _typeof(expected) === 'object' && expected !== null && 'stack' in actual && actual instanceof Error && 'stack' in expected && expected instanceof Error) { - actual = copyError(actual); - expected = copyError(expected); - } - - if (operator === 'deepStrictEqual' || operator === 'strictEqual') { - _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, createErrDiff(actual, expected, operator))); - } else if (operator === 'notDeepStrictEqual' || operator === 'notStrictEqual') { - // In case the objects are equal but the operator requires unequal, show - // the first object and say A equals B - var base = kReadableOperator[operator]; - var res = inspectValue(actual).split('\n'); // In case "actual" is an object, it should not be reference equal. - - if (operator === 'notStrictEqual' && _typeof(actual) === 'object' && actual !== null) { - base = kReadableOperator.notStrictEqualObject; - } // Only remove lines in case it makes sense to collapse those. - // TODO: Accept env to always show the full error. - - - if (res.length > 30) { - res[26] = "".concat(blue, "...").concat(white); - - while (res.length > 27) { - res.pop(); - } - } // Only print a single input. - - - if (res.length === 1) { - _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, "".concat(base, " ").concat(res[0]))); - } else { - _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, "".concat(base, "\n\n").concat(res.join('\n'), "\n"))); - } - } else { - var _res = inspectValue(actual); - - var other = ''; - var knownOperators = kReadableOperator[operator]; - - if (operator === 'notDeepEqual' || operator === 'notEqual') { - _res = "".concat(kReadableOperator[operator], "\n\n").concat(_res); - - if (_res.length > 1024) { - _res = "".concat(_res.slice(0, 1021), "..."); - } - } else { - other = "".concat(inspectValue(expected)); - - if (_res.length > 512) { - _res = "".concat(_res.slice(0, 509), "..."); - } - - if (other.length > 512) { - other = "".concat(other.slice(0, 509), "..."); - } - - if (operator === 'deepEqual' || operator === 'equal') { - _res = "".concat(knownOperators, "\n\n").concat(_res, "\n\nshould equal\n\n"); - } else { - other = " ".concat(operator, " ").concat(other); - } - } - - _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, "".concat(_res).concat(other))); - } - } - - Error.stackTraceLimit = limit; - _this.generatedMessage = !message; - Object.defineProperty(_assertThisInitialized(_this), 'name', { - value: 'AssertionError [ERR_ASSERTION]', - enumerable: false, - writable: true, - configurable: true - }); - _this.code = 'ERR_ASSERTION'; - _this.actual = actual; - _this.expected = expected; - _this.operator = operator; - - if (Error.captureStackTrace) { - // eslint-disable-next-line no-restricted-syntax - Error.captureStackTrace(_assertThisInitialized(_this), stackStartFn); - } // Create error message including the error code in the name. - - - _this.stack; // Reset the name. - - _this.name = 'AssertionError'; - return _possibleConstructorReturn(_this); - } - - _createClass(AssertionError, [{ - key: "toString", - value: function toString() { - return "".concat(this.name, " [").concat(this.code, "]: ").concat(this.message); - } - }, { - key: inspect.custom, - value: function value(recurseTimes, ctx) { - // This limits the `actual` and `expected` property default inspection to - // the minimum depth. Otherwise those values would be too verbose compared - // to the actual error message which contains a combined view of these two - // input values. - return inspect(this, _objectSpread({}, ctx, { - customInspect: false, - depth: 0 - })); - } - }]); - - return AssertionError; -}(_wrapNativeSuper(Error)); - -module.exports = AssertionError; - -/***/ }), - -/***/ 9978: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Currently in sync with Node.js lib/internal/errors.js -// https://github.com/nodejs/node/commit/3b044962c48fe313905877a96b5d0894a5404f6f - -/* eslint node-core/documented-errors: "error" */ - -/* eslint node-core/alphabetize-errors: "error" */ - -/* eslint node-core/prefer-util-format-errors: "error" */ - // The whole point behind this internal module is to allow Node.js to no -// longer be forced to treat every error message change as a semver-major -// change. The NodeError classes here all expose a `code` property whose -// value statically and permanently identifies the error. While the error -// message may change, the code should not. - -function _typeof2(obj) { "@babel/helpers - typeof"; return _typeof2 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof2(obj); } - -function _typeof(obj) { - if (typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol") { - _typeof = function _typeof(obj) { - return _typeof2(obj); - }; - } else { - _typeof = function _typeof(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj); - }; - } - - return _typeof(obj); -} - -function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } -} - -function _possibleConstructorReturn(self, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - - return _assertThisInitialized(self); -} - -function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - - return self; -} - -function _getPrototypeOf(o) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { - return o.__proto__ || Object.getPrototypeOf(o); - }; - return _getPrototypeOf(o); -} - -function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - writable: true, - configurable: true - } - }); - if (superClass) _setPrototypeOf(subClass, superClass); -} - -function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - - return _setPrototypeOf(o, p); -} - -var codes = {}; // Lazy loaded - -var assert; -var util; - -function createErrorType(code, message, Base) { - if (!Base) { - Base = Error; - } - - function getMessage(arg1, arg2, arg3) { - if (typeof message === 'string') { - return message; - } else { - return message(arg1, arg2, arg3); - } - } - - var NodeError = /*#__PURE__*/function (_Base) { - _inherits(NodeError, _Base); - - function NodeError(arg1, arg2, arg3) { - var _this; - - _classCallCheck(this, NodeError); - - _this = _possibleConstructorReturn(this, _getPrototypeOf(NodeError).call(this, getMessage(arg1, arg2, arg3))); - _this.code = code; - return _this; - } - - return NodeError; - }(Base); - - codes[code] = NodeError; -} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js - - -function oneOf(expected, thing) { - if (Array.isArray(expected)) { - var len = expected.length; - expected = expected.map(function (i) { - return String(i); - }); - - if (len > 2) { - return "one of ".concat(thing, " ").concat(expected.slice(0, len - 1).join(', '), ", or ") + expected[len - 1]; - } else if (len === 2) { - return "one of ".concat(thing, " ").concat(expected[0], " or ").concat(expected[1]); - } else { - return "of ".concat(thing, " ").concat(expected[0]); - } - } else { - return "of ".concat(thing, " ").concat(String(expected)); - } -} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith - - -function startsWith(str, search, pos) { - return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search; -} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith - - -function endsWith(str, search, this_len) { - if (this_len === undefined || this_len > str.length) { - this_len = str.length; - } - - return str.substring(this_len - search.length, this_len) === search; -} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes - - -function includes(str, search, start) { - if (typeof start !== 'number') { - start = 0; - } - - if (start + search.length > str.length) { - return false; - } else { - return str.indexOf(search, start) !== -1; - } -} - -createErrorType('ERR_AMBIGUOUS_ARGUMENT', 'The "%s" argument is ambiguous. %s', TypeError); -createErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) { - if (assert === undefined) assert = __webpack_require__(9373); - assert(typeof name === 'string', "'name' must be a string"); // determiner: 'must be' or 'must not be' - - var determiner; - - if (typeof expected === 'string' && startsWith(expected, 'not ')) { - determiner = 'must not be'; - expected = expected.replace(/^not /, ''); - } else { - determiner = 'must be'; - } - - var msg; - - if (endsWith(name, ' argument')) { - // For cases like 'first argument' - msg = "The ".concat(name, " ").concat(determiner, " ").concat(oneOf(expected, 'type')); - } else { - var type = includes(name, '.') ? 'property' : 'argument'; - msg = "The \"".concat(name, "\" ").concat(type, " ").concat(determiner, " ").concat(oneOf(expected, 'type')); - } // TODO(BridgeAR): Improve the output by showing `null` and similar. - - - msg += ". Received type ".concat(_typeof(actual)); - return msg; -}, TypeError); -createErrorType('ERR_INVALID_ARG_VALUE', function (name, value) { - var reason = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'is invalid'; - if (util === undefined) util = __webpack_require__(161); - var inspected = util.inspect(value); - - if (inspected.length > 128) { - inspected = "".concat(inspected.slice(0, 128), "..."); - } - - return "The argument '".concat(name, "' ").concat(reason, ". Received ").concat(inspected); -}, TypeError, RangeError); -createErrorType('ERR_INVALID_RETURN_VALUE', function (input, name, value) { - var type; - - if (value && value.constructor && value.constructor.name) { - type = "instance of ".concat(value.constructor.name); - } else { - type = "type ".concat(_typeof(value)); - } - - return "Expected ".concat(input, " to be returned from the \"").concat(name, "\"") + " function but got ".concat(type, "."); -}, TypeError); -createErrorType('ERR_MISSING_ARGS', function () { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - if (assert === undefined) assert = __webpack_require__(9373); - assert(args.length > 0, 'At least one arg needs to be specified'); - var msg = 'The '; - var len = args.length; - args = args.map(function (a) { - return "\"".concat(a, "\""); - }); - - switch (len) { - case 1: - msg += "".concat(args[0], " argument"); - break; - - case 2: - msg += "".concat(args[0], " and ").concat(args[1], " arguments"); - break; - - default: - msg += args.slice(0, len - 1).join(', '); - msg += ", and ".concat(args[len - 1], " arguments"); - break; - } - - return "".concat(msg, " must be specified"); -}, TypeError); -module.exports.codes = codes; - -/***/ }), - -/***/ 9015: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Currently in sync with Node.js lib/internal/util/comparisons.js -// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9 - - -function _typeof2(obj) { "@babel/helpers - typeof"; return _typeof2 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof2(obj); } - -function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); -} - -function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance"); -} - -function _iterableToArrayLimit(arr, i) { - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - - return _arr; -} - -function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; -} - -function _typeof(obj) { - if (typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol") { - _typeof = function _typeof(obj) { - return _typeof2(obj); - }; - } else { - _typeof = function _typeof(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj); - }; - } - - return _typeof(obj); -} - -var regexFlagsSupported = /a/g.flags !== undefined; - -var arrayFromSet = function arrayFromSet(set) { - var array = []; - set.forEach(function (value) { - return array.push(value); - }); - return array; -}; - -var arrayFromMap = function arrayFromMap(map) { - var array = []; - map.forEach(function (value, key) { - return array.push([key, value]); - }); - return array; -}; - -var objectIs = Object.is ? Object.is : __webpack_require__(4710); -var objectGetOwnPropertySymbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols : function () { - return []; -}; -var numberIsNaN = Number.isNaN ? Number.isNaN : __webpack_require__(2191); - -function uncurryThis(f) { - return f.call.bind(f); -} - -var hasOwnProperty = uncurryThis(Object.prototype.hasOwnProperty); -var propertyIsEnumerable = uncurryThis(Object.prototype.propertyIsEnumerable); -var objectToString = uncurryThis(Object.prototype.toString); - -var _require$types = (__webpack_require__(161).types), - isAnyArrayBuffer = _require$types.isAnyArrayBuffer, - isArrayBufferView = _require$types.isArrayBufferView, - isDate = _require$types.isDate, - isMap = _require$types.isMap, - isRegExp = _require$types.isRegExp, - isSet = _require$types.isSet, - isNativeError = _require$types.isNativeError, - isBoxedPrimitive = _require$types.isBoxedPrimitive, - isNumberObject = _require$types.isNumberObject, - isStringObject = _require$types.isStringObject, - isBooleanObject = _require$types.isBooleanObject, - isBigIntObject = _require$types.isBigIntObject, - isSymbolObject = _require$types.isSymbolObject, - isFloat32Array = _require$types.isFloat32Array, - isFloat64Array = _require$types.isFloat64Array; - -function isNonIndex(key) { - if (key.length === 0 || key.length > 10) return true; - - for (var i = 0; i < key.length; i++) { - var code = key.charCodeAt(i); - if (code < 48 || code > 57) return true; - } // The maximum size for an array is 2 ** 32 -1. - - - return key.length === 10 && key >= Math.pow(2, 32); -} - -function getOwnNonIndexProperties(value) { - return Object.keys(value).filter(isNonIndex).concat(objectGetOwnPropertySymbols(value).filter(Object.prototype.propertyIsEnumerable.bind(value))); -} // Taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js -// original notice: - -/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */ - - -function compare(a, b) { - if (a === b) { - return 0; - } - - var x = a.length; - var y = b.length; - - for (var i = 0, len = Math.min(x, y); i < len; ++i) { - if (a[i] !== b[i]) { - x = a[i]; - y = b[i]; - break; - } - } - - if (x < y) { - return -1; - } - - if (y < x) { - return 1; - } - - return 0; -} - -var ONLY_ENUMERABLE = undefined; -var kStrict = true; -var kLoose = false; -var kNoIterator = 0; -var kIsArray = 1; -var kIsSet = 2; -var kIsMap = 3; // Check if they have the same source and flags - -function areSimilarRegExps(a, b) { - return regexFlagsSupported ? a.source === b.source && a.flags === b.flags : RegExp.prototype.toString.call(a) === RegExp.prototype.toString.call(b); -} - -function areSimilarFloatArrays(a, b) { - if (a.byteLength !== b.byteLength) { - return false; - } - - for (var offset = 0; offset < a.byteLength; offset++) { - if (a[offset] !== b[offset]) { - return false; - } - } - - return true; -} - -function areSimilarTypedArrays(a, b) { - if (a.byteLength !== b.byteLength) { - return false; - } - - return compare(new Uint8Array(a.buffer, a.byteOffset, a.byteLength), new Uint8Array(b.buffer, b.byteOffset, b.byteLength)) === 0; -} - -function areEqualArrayBuffers(buf1, buf2) { - return buf1.byteLength === buf2.byteLength && compare(new Uint8Array(buf1), new Uint8Array(buf2)) === 0; -} - -function isEqualBoxedPrimitive(val1, val2) { - if (isNumberObject(val1)) { - return isNumberObject(val2) && objectIs(Number.prototype.valueOf.call(val1), Number.prototype.valueOf.call(val2)); - } - - if (isStringObject(val1)) { - return isStringObject(val2) && String.prototype.valueOf.call(val1) === String.prototype.valueOf.call(val2); - } - - if (isBooleanObject(val1)) { - return isBooleanObject(val2) && Boolean.prototype.valueOf.call(val1) === Boolean.prototype.valueOf.call(val2); - } - - if (isBigIntObject(val1)) { - return isBigIntObject(val2) && BigInt.prototype.valueOf.call(val1) === BigInt.prototype.valueOf.call(val2); - } - - return isSymbolObject(val2) && Symbol.prototype.valueOf.call(val1) === Symbol.prototype.valueOf.call(val2); -} // Notes: Type tags are historical [[Class]] properties that can be set by -// FunctionTemplate::SetClassName() in C++ or Symbol.toStringTag in JS -// and retrieved using Object.prototype.toString.call(obj) in JS -// See https://tc39.github.io/ecma262/#sec-object.prototype.tostring -// for a list of tags pre-defined in the spec. -// There are some unspecified tags in the wild too (e.g. typed array tags). -// Since tags can be altered, they only serve fast failures -// -// Typed arrays and buffers are checked by comparing the content in their -// underlying ArrayBuffer. This optimization requires that it's -// reasonable to interpret their underlying memory in the same way, -// which is checked by comparing their type tags. -// (e.g. a Uint8Array and a Uint16Array with the same memory content -// could still be different because they will be interpreted differently). -// -// For strict comparison, objects should have -// a) The same built-in type tags -// b) The same prototypes. - - -function innerDeepEqual(val1, val2, strict, memos) { - // All identical values are equivalent, as determined by ===. - if (val1 === val2) { - if (val1 !== 0) return true; - return strict ? objectIs(val1, val2) : true; - } // Check more closely if val1 and val2 are equal. - - - if (strict) { - if (_typeof(val1) !== 'object') { - return typeof val1 === 'number' && numberIsNaN(val1) && numberIsNaN(val2); - } - - if (_typeof(val2) !== 'object' || val1 === null || val2 === null) { - return false; - } - - if (Object.getPrototypeOf(val1) !== Object.getPrototypeOf(val2)) { - return false; - } - } else { - if (val1 === null || _typeof(val1) !== 'object') { - if (val2 === null || _typeof(val2) !== 'object') { - // eslint-disable-next-line eqeqeq - return val1 == val2; - } - - return false; - } - - if (val2 === null || _typeof(val2) !== 'object') { - return false; - } - } - - var val1Tag = objectToString(val1); - var val2Tag = objectToString(val2); - - if (val1Tag !== val2Tag) { - return false; - } - - if (Array.isArray(val1)) { - // Check for sparse arrays and general fast path - if (val1.length !== val2.length) { - return false; - } - - var keys1 = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE); - var keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE); - - if (keys1.length !== keys2.length) { - return false; - } - - return keyCheck(val1, val2, strict, memos, kIsArray, keys1); - } // [browserify] This triggers on certain types in IE (Map/Set) so we don't - // wan't to early return out of the rest of the checks. However we can check - // if the second value is one of these values and the first isn't. - - - if (val1Tag === '[object Object]') { - // return keyCheck(val1, val2, strict, memos, kNoIterator); - if (!isMap(val1) && isMap(val2) || !isSet(val1) && isSet(val2)) { - return false; - } - } - - if (isDate(val1)) { - if (!isDate(val2) || Date.prototype.getTime.call(val1) !== Date.prototype.getTime.call(val2)) { - return false; - } - } else if (isRegExp(val1)) { - if (!isRegExp(val2) || !areSimilarRegExps(val1, val2)) { - return false; - } - } else if (isNativeError(val1) || val1 instanceof Error) { - // Do not compare the stack as it might differ even though the error itself - // is otherwise identical. - if (val1.message !== val2.message || val1.name !== val2.name) { - return false; - } - } else if (isArrayBufferView(val1)) { - if (!strict && (isFloat32Array(val1) || isFloat64Array(val1))) { - if (!areSimilarFloatArrays(val1, val2)) { - return false; - } - } else if (!areSimilarTypedArrays(val1, val2)) { - return false; - } // Buffer.compare returns true, so val1.length === val2.length. If they both - // only contain numeric keys, we don't need to exam further than checking - // the symbols. - - - var _keys = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE); - - var _keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE); - - if (_keys.length !== _keys2.length) { - return false; - } - - return keyCheck(val1, val2, strict, memos, kNoIterator, _keys); - } else if (isSet(val1)) { - if (!isSet(val2) || val1.size !== val2.size) { - return false; - } - - return keyCheck(val1, val2, strict, memos, kIsSet); - } else if (isMap(val1)) { - if (!isMap(val2) || val1.size !== val2.size) { - return false; - } - - return keyCheck(val1, val2, strict, memos, kIsMap); - } else if (isAnyArrayBuffer(val1)) { - if (!areEqualArrayBuffers(val1, val2)) { - return false; - } - } else if (isBoxedPrimitive(val1) && !isEqualBoxedPrimitive(val1, val2)) { - return false; - } - - return keyCheck(val1, val2, strict, memos, kNoIterator); -} - -function getEnumerables(val, keys) { - return keys.filter(function (k) { - return propertyIsEnumerable(val, k); - }); -} - -function keyCheck(val1, val2, strict, memos, iterationType, aKeys) { - // For all remaining Object pairs, including Array, objects and Maps, - // equivalence is determined by having: - // a) The same number of owned enumerable properties - // b) The same set of keys/indexes (although not necessarily the same order) - // c) Equivalent values for every corresponding key/index - // d) For Sets and Maps, equal contents - // Note: this accounts for both named and indexed properties on Arrays. - if (arguments.length === 5) { - aKeys = Object.keys(val1); - var bKeys = Object.keys(val2); // The pair must have the same number of owned properties. - - if (aKeys.length !== bKeys.length) { - return false; - } - } // Cheap key test - - - var i = 0; - - for (; i < aKeys.length; i++) { - if (!hasOwnProperty(val2, aKeys[i])) { - return false; - } - } - - if (strict && arguments.length === 5) { - var symbolKeysA = objectGetOwnPropertySymbols(val1); - - if (symbolKeysA.length !== 0) { - var count = 0; - - for (i = 0; i < symbolKeysA.length; i++) { - var key = symbolKeysA[i]; - - if (propertyIsEnumerable(val1, key)) { - if (!propertyIsEnumerable(val2, key)) { - return false; - } - - aKeys.push(key); - count++; - } else if (propertyIsEnumerable(val2, key)) { - return false; - } - } - - var symbolKeysB = objectGetOwnPropertySymbols(val2); - - if (symbolKeysA.length !== symbolKeysB.length && getEnumerables(val2, symbolKeysB).length !== count) { - return false; - } - } else { - var _symbolKeysB = objectGetOwnPropertySymbols(val2); - - if (_symbolKeysB.length !== 0 && getEnumerables(val2, _symbolKeysB).length !== 0) { - return false; - } - } - } - - if (aKeys.length === 0 && (iterationType === kNoIterator || iterationType === kIsArray && val1.length === 0 || val1.size === 0)) { - return true; - } // Use memos to handle cycles. - - - if (memos === undefined) { - memos = { - val1: new Map(), - val2: new Map(), - position: 0 - }; - } else { - // We prevent up to two map.has(x) calls by directly retrieving the value - // and checking for undefined. The map can only contain numbers, so it is - // safe to check for undefined only. - var val2MemoA = memos.val1.get(val1); - - if (val2MemoA !== undefined) { - var val2MemoB = memos.val2.get(val2); - - if (val2MemoB !== undefined) { - return val2MemoA === val2MemoB; - } - } - - memos.position++; - } - - memos.val1.set(val1, memos.position); - memos.val2.set(val2, memos.position); - var areEq = objEquiv(val1, val2, strict, aKeys, memos, iterationType); - memos.val1["delete"](val1); - memos.val2["delete"](val2); - return areEq; -} - -function setHasEqualElement(set, val1, strict, memo) { - // Go looking. - var setValues = arrayFromSet(set); - - for (var i = 0; i < setValues.length; i++) { - var val2 = setValues[i]; - - if (innerDeepEqual(val1, val2, strict, memo)) { - // Remove the matching element to make sure we do not check that again. - set["delete"](val2); - return true; - } - } - - return false; -} // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness#Loose_equality_using -// Sadly it is not possible to detect corresponding values properly in case the -// type is a string, number, bigint or boolean. The reason is that those values -// can match lots of different string values (e.g., 1n == '+00001'). - - -function findLooseMatchingPrimitives(prim) { - switch (_typeof(prim)) { - case 'undefined': - return null; - - case 'object': - // Only pass in null as object! - return undefined; - - case 'symbol': - return false; - - case 'string': - prim = +prim; - // Loose equal entries exist only if the string is possible to convert to - // a regular number and not NaN. - // Fall through - - case 'number': - if (numberIsNaN(prim)) { - return false; - } - - } - - return true; -} - -function setMightHaveLoosePrim(a, b, prim) { - var altValue = findLooseMatchingPrimitives(prim); - if (altValue != null) return altValue; - return b.has(altValue) && !a.has(altValue); -} - -function mapMightHaveLoosePrim(a, b, prim, item, memo) { - var altValue = findLooseMatchingPrimitives(prim); - - if (altValue != null) { - return altValue; - } - - var curB = b.get(altValue); - - if (curB === undefined && !b.has(altValue) || !innerDeepEqual(item, curB, false, memo)) { - return false; - } - - return !a.has(altValue) && innerDeepEqual(item, curB, false, memo); -} - -function setEquiv(a, b, strict, memo) { - // This is a lazily initiated Set of entries which have to be compared - // pairwise. - var set = null; - var aValues = arrayFromSet(a); - - for (var i = 0; i < aValues.length; i++) { - var val = aValues[i]; // Note: Checking for the objects first improves the performance for object - // heavy sets but it is a minor slow down for primitives. As they are fast - // to check this improves the worst case scenario instead. - - if (_typeof(val) === 'object' && val !== null) { - if (set === null) { - set = new Set(); - } // If the specified value doesn't exist in the second set its an not null - // object (or non strict only: a not matching primitive) we'll need to go - // hunting for something thats deep-(strict-)equal to it. To make this - // O(n log n) complexity we have to copy these values in a new set first. - - - set.add(val); - } else if (!b.has(val)) { - if (strict) return false; // Fast path to detect missing string, symbol, undefined and null values. - - if (!setMightHaveLoosePrim(a, b, val)) { - return false; - } - - if (set === null) { - set = new Set(); - } - - set.add(val); - } - } - - if (set !== null) { - var bValues = arrayFromSet(b); - - for (var _i = 0; _i < bValues.length; _i++) { - var _val = bValues[_i]; // We have to check if a primitive value is already - // matching and only if it's not, go hunting for it. - - if (_typeof(_val) === 'object' && _val !== null) { - if (!setHasEqualElement(set, _val, strict, memo)) return false; - } else if (!strict && !a.has(_val) && !setHasEqualElement(set, _val, strict, memo)) { - return false; - } - } - - return set.size === 0; - } - - return true; -} - -function mapHasEqualEntry(set, map, key1, item1, strict, memo) { - // To be able to handle cases like: - // Map([[{}, 'a'], [{}, 'b']]) vs Map([[{}, 'b'], [{}, 'a']]) - // ... we need to consider *all* matching keys, not just the first we find. - var setValues = arrayFromSet(set); - - for (var i = 0; i < setValues.length; i++) { - var key2 = setValues[i]; - - if (innerDeepEqual(key1, key2, strict, memo) && innerDeepEqual(item1, map.get(key2), strict, memo)) { - set["delete"](key2); - return true; - } - } - - return false; -} - -function mapEquiv(a, b, strict, memo) { - var set = null; - var aEntries = arrayFromMap(a); - - for (var i = 0; i < aEntries.length; i++) { - var _aEntries$i = _slicedToArray(aEntries[i], 2), - key = _aEntries$i[0], - item1 = _aEntries$i[1]; - - if (_typeof(key) === 'object' && key !== null) { - if (set === null) { - set = new Set(); - } - - set.add(key); - } else { - // By directly retrieving the value we prevent another b.has(key) check in - // almost all possible cases. - var item2 = b.get(key); - - if (item2 === undefined && !b.has(key) || !innerDeepEqual(item1, item2, strict, memo)) { - if (strict) return false; // Fast path to detect missing string, symbol, undefined and null - // keys. - - if (!mapMightHaveLoosePrim(a, b, key, item1, memo)) return false; - - if (set === null) { - set = new Set(); - } - - set.add(key); - } - } - } - - if (set !== null) { - var bEntries = arrayFromMap(b); - - for (var _i2 = 0; _i2 < bEntries.length; _i2++) { - var _bEntries$_i = _slicedToArray(bEntries[_i2], 2), - key = _bEntries$_i[0], - item = _bEntries$_i[1]; - - if (_typeof(key) === 'object' && key !== null) { - if (!mapHasEqualEntry(set, a, key, item, strict, memo)) return false; - } else if (!strict && (!a.has(key) || !innerDeepEqual(a.get(key), item, false, memo)) && !mapHasEqualEntry(set, a, key, item, false, memo)) { - return false; - } - } - - return set.size === 0; - } - - return true; -} - -function objEquiv(a, b, strict, keys, memos, iterationType) { - // Sets and maps don't have their entries accessible via normal object - // properties. - var i = 0; - - if (iterationType === kIsSet) { - if (!setEquiv(a, b, strict, memos)) { - return false; - } - } else if (iterationType === kIsMap) { - if (!mapEquiv(a, b, strict, memos)) { - return false; - } - } else if (iterationType === kIsArray) { - for (; i < a.length; i++) { - if (hasOwnProperty(a, i)) { - if (!hasOwnProperty(b, i) || !innerDeepEqual(a[i], b[i], strict, memos)) { - return false; - } - } else if (hasOwnProperty(b, i)) { - return false; - } else { - // Array is sparse. - var keysA = Object.keys(a); - - for (; i < keysA.length; i++) { - var key = keysA[i]; - - if (!hasOwnProperty(b, key) || !innerDeepEqual(a[key], b[key], strict, memos)) { - return false; - } - } - - if (keysA.length !== Object.keys(b).length) { - return false; - } - - return true; - } - } - } // The pair must have equivalent values for every corresponding key. - // Possibly expensive deep test: - - - for (i = 0; i < keys.length; i++) { - var _key = keys[i]; - - if (!innerDeepEqual(a[_key], b[_key], strict, memos)) { - return false; - } - } - - return true; -} - -function isDeepEqual(val1, val2) { - return innerDeepEqual(val1, val2, kLoose); -} - -function isDeepStrictEqual(val1, val2) { - return innerDeepEqual(val1, val2, kStrict); -} - -module.exports = { - isDeepEqual: isDeepEqual, - isDeepStrictEqual: isDeepStrictEqual -}; - -/***/ }), - -/***/ 7943: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -exports.byteLength = byteLength; -exports.toByteArray = toByteArray; -exports.fromByteArray = fromByteArray; -var lookup = []; -var revLookup = []; -var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array; -var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - -for (var i = 0, len = code.length; i < len; ++i) { - lookup[i] = code[i]; - revLookup[code.charCodeAt(i)] = i; -} // Support decoding URL-safe base64 strings, as Node.js does. -// See: https://en.wikipedia.org/wiki/Base64#URL_applications - - -revLookup['-'.charCodeAt(0)] = 62; -revLookup['_'.charCodeAt(0)] = 63; - -function getLens(b64) { - var len = b64.length; - - if (len % 4 > 0) { - throw new Error('Invalid string. Length must be a multiple of 4'); - } // Trim off extra bytes after placeholder bytes are found - // See: https://github.com/beatgammit/base64-js/issues/42 - - - var validLen = b64.indexOf('='); - if (validLen === -1) validLen = len; - var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4; - return [validLen, placeHoldersLen]; -} // base64 is 4/3 + up to two characters of the original data - - -function byteLength(b64) { - var lens = getLens(b64); - var validLen = lens[0]; - var placeHoldersLen = lens[1]; - return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen; -} - -function _byteLength(b64, validLen, placeHoldersLen) { - return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen; -} - -function toByteArray(b64) { - var tmp; - var lens = getLens(b64); - var validLen = lens[0]; - var placeHoldersLen = lens[1]; - var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)); - var curByte = 0; // if there are placeholders, only get up to the last complete 4 chars - - var len = placeHoldersLen > 0 ? validLen - 4 : validLen; - var i; - - for (i = 0; i < len; i += 4) { - tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)]; - arr[curByte++] = tmp >> 16 & 0xFF; - arr[curByte++] = tmp >> 8 & 0xFF; - arr[curByte++] = tmp & 0xFF; - } - - if (placeHoldersLen === 2) { - tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4; - arr[curByte++] = tmp & 0xFF; - } - - if (placeHoldersLen === 1) { - tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2; - arr[curByte++] = tmp >> 8 & 0xFF; - arr[curByte++] = tmp & 0xFF; - } - - return arr; -} - -function tripletToBase64(num) { - return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]; -} - -function encodeChunk(uint8, start, end) { - var tmp; - var output = []; - - for (var i = start; i < end; i += 3) { - tmp = (uint8[i] << 16 & 0xFF0000) + (uint8[i + 1] << 8 & 0xFF00) + (uint8[i + 2] & 0xFF); - output.push(tripletToBase64(tmp)); - } - - return output.join(''); -} - -function fromByteArray(uint8) { - var tmp; - var len = uint8.length; - var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes - - var parts = []; - var maxChunkLength = 16383; // must be multiple of 3 - // go through the array every three bytes, we'll deal with trailing stuff later - - for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { - parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength)); - } // pad the end with zeros, but make sure to not forget the extra bytes - - - if (extraBytes === 1) { - tmp = uint8[len - 1]; - parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 0x3F] + '=='); - } else if (extraBytes === 2) { - tmp = (uint8[len - 2] << 8) + uint8[len - 1]; - parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 0x3F] + lookup[tmp << 2 & 0x3F] + '='); - } - - return parts.join(''); -} - -/***/ }), - -/***/ 6781: -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - -/* module decorator */ module = __webpack_require__.nmd(module); -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -(function (module, exports) { - 'use strict'; // Utils - - function assert(val, msg) { - if (!val) throw new Error(msg || 'Assertion failed'); - } // Could use `inherits` module, but don't want to move from single file - // architecture yet. - - - function inherits(ctor, superCtor) { - ctor.super_ = superCtor; - - var TempCtor = function TempCtor() {}; - - TempCtor.prototype = superCtor.prototype; - ctor.prototype = new TempCtor(); - ctor.prototype.constructor = ctor; - } // BN - - - function BN(number, base, endian) { - if (BN.isBN(number)) { - return number; - } - - this.negative = 0; - this.words = null; - this.length = 0; // Reduction context - - this.red = null; - - if (number !== null) { - if (base === 'le' || base === 'be') { - endian = base; - base = 10; - } - - this._init(number || 0, base || 10, endian || 'be'); - } - } - - if (_typeof(module) === 'object') { - module.exports = BN; - } else { - exports.BN = BN; - } - - BN.BN = BN; - BN.wordSize = 26; - var Buffer; - - try { - if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') { - Buffer = window.Buffer; - } else { - Buffer = (__webpack_require__(6601).Buffer); - } - } catch (e) {} - - BN.isBN = function isBN(num) { - if (num instanceof BN) { - return true; - } - - return num !== null && _typeof(num) === 'object' && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words); - }; - - BN.max = function max(left, right) { - if (left.cmp(right) > 0) return left; - return right; - }; - - BN.min = function min(left, right) { - if (left.cmp(right) < 0) return left; - return right; - }; - - BN.prototype._init = function init(number, base, endian) { - if (typeof number === 'number') { - return this._initNumber(number, base, endian); - } - - if (_typeof(number) === 'object') { - return this._initArray(number, base, endian); - } - - if (base === 'hex') { - base = 16; - } - - assert(base === (base | 0) && base >= 2 && base <= 36); - number = number.toString().replace(/\s+/g, ''); - var start = 0; - - if (number[0] === '-') { - start++; - this.negative = 1; - } - - if (start < number.length) { - if (base === 16) { - this._parseHex(number, start, endian); - } else { - this._parseBase(number, base, start); - - if (endian === 'le') { - this._initArray(this.toArray(), base, endian); - } - } - } - }; - - BN.prototype._initNumber = function _initNumber(number, base, endian) { - if (number < 0) { - this.negative = 1; - number = -number; - } - - if (number < 0x4000000) { - this.words = [number & 0x3ffffff]; - this.length = 1; - } else if (number < 0x10000000000000) { - this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff]; - this.length = 2; - } else { - assert(number < 0x20000000000000); // 2 ^ 53 (unsafe) - - this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1]; - this.length = 3; - } - - if (endian !== 'le') return; // Reverse the bytes - - this._initArray(this.toArray(), base, endian); - }; - - BN.prototype._initArray = function _initArray(number, base, endian) { - // Perhaps a Uint8Array - assert(typeof number.length === 'number'); - - if (number.length <= 0) { - this.words = [0]; - this.length = 1; - return this; - } - - this.length = Math.ceil(number.length / 3); - this.words = new Array(this.length); - - for (var i = 0; i < this.length; i++) { - this.words[i] = 0; - } - - var j, w; - var off = 0; - - if (endian === 'be') { - for (i = number.length - 1, j = 0; i >= 0; i -= 3) { - w = number[i] | number[i - 1] << 8 | number[i - 2] << 16; - this.words[j] |= w << off & 0x3ffffff; - this.words[j + 1] = w >>> 26 - off & 0x3ffffff; - off += 24; - - if (off >= 26) { - off -= 26; - j++; - } - } - } else if (endian === 'le') { - for (i = 0, j = 0; i < number.length; i += 3) { - w = number[i] | number[i + 1] << 8 | number[i + 2] << 16; - this.words[j] |= w << off & 0x3ffffff; - this.words[j + 1] = w >>> 26 - off & 0x3ffffff; - off += 24; - - if (off >= 26) { - off -= 26; - j++; - } - } - } - - return this._strip(); - }; - - function parseHex4Bits(string, index) { - var c = string.charCodeAt(index); // '0' - '9' - - if (c >= 48 && c <= 57) { - return c - 48; // 'A' - 'F' - } else if (c >= 65 && c <= 70) { - return c - 55; // 'a' - 'f' - } else if (c >= 97 && c <= 102) { - return c - 87; - } else { - assert(false, 'Invalid character in ' + string); - } - } - - function parseHexByte(string, lowerBound, index) { - var r = parseHex4Bits(string, index); - - if (index - 1 >= lowerBound) { - r |= parseHex4Bits(string, index - 1) << 4; - } - - return r; - } - - BN.prototype._parseHex = function _parseHex(number, start, endian) { - // Create possibly bigger array to ensure that it fits the number - this.length = Math.ceil((number.length - start) / 6); - this.words = new Array(this.length); - - for (var i = 0; i < this.length; i++) { - this.words[i] = 0; - } // 24-bits chunks - - - var off = 0; - var j = 0; - var w; - - if (endian === 'be') { - for (i = number.length - 1; i >= start; i -= 2) { - w = parseHexByte(number, start, i) << off; - this.words[j] |= w & 0x3ffffff; - - if (off >= 18) { - off -= 18; - j += 1; - this.words[j] |= w >>> 26; - } else { - off += 8; - } - } - } else { - var parseLength = number.length - start; - - for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) { - w = parseHexByte(number, start, i) << off; - this.words[j] |= w & 0x3ffffff; - - if (off >= 18) { - off -= 18; - j += 1; - this.words[j] |= w >>> 26; - } else { - off += 8; - } - } - } - - this._strip(); - }; - - function parseBase(str, start, end, mul) { - var r = 0; - var b = 0; - var len = Math.min(str.length, end); - - for (var i = start; i < len; i++) { - var c = str.charCodeAt(i) - 48; - r *= mul; // 'a' - - if (c >= 49) { - b = c - 49 + 0xa; // 'A' - } else if (c >= 17) { - b = c - 17 + 0xa; // '0' - '9' - } else { - b = c; - } - - assert(c >= 0 && b < mul, 'Invalid character'); - r += b; - } - - return r; - } - - BN.prototype._parseBase = function _parseBase(number, base, start) { - // Initialize as zero - this.words = [0]; - this.length = 1; // Find length of limb in base - - for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) { - limbLen++; - } - - limbLen--; - limbPow = limbPow / base | 0; - var total = number.length - start; - var mod = total % limbLen; - var end = Math.min(total, total - mod) + start; - var word = 0; - - for (var i = start; i < end; i += limbLen) { - word = parseBase(number, i, i + limbLen, base); - this.imuln(limbPow); - - if (this.words[0] + word < 0x4000000) { - this.words[0] += word; - } else { - this._iaddn(word); - } - } - - if (mod !== 0) { - var pow = 1; - word = parseBase(number, i, number.length, base); - - for (i = 0; i < mod; i++) { - pow *= base; - } - - this.imuln(pow); - - if (this.words[0] + word < 0x4000000) { - this.words[0] += word; - } else { - this._iaddn(word); - } - } - - this._strip(); - }; - - BN.prototype.copy = function copy(dest) { - dest.words = new Array(this.length); - - for (var i = 0; i < this.length; i++) { - dest.words[i] = this.words[i]; - } - - dest.length = this.length; - dest.negative = this.negative; - dest.red = this.red; - }; - - function move(dest, src) { - dest.words = src.words; - dest.length = src.length; - dest.negative = src.negative; - dest.red = src.red; - } - - BN.prototype._move = function _move(dest) { - move(dest, this); - }; - - BN.prototype.clone = function clone() { - var r = new BN(null); - this.copy(r); - return r; - }; - - BN.prototype._expand = function _expand(size) { - while (this.length < size) { - this.words[this.length++] = 0; - } - - return this; - }; // Remove leading `0` from `this` - - - BN.prototype._strip = function strip() { - while (this.length > 1 && this.words[this.length - 1] === 0) { - this.length--; - } - - return this._normSign(); - }; - - BN.prototype._normSign = function _normSign() { - // -0 = 0 - if (this.length === 1 && this.words[0] === 0) { - this.negative = 0; - } - - return this; - }; // Check Symbol.for because not everywhere where Symbol defined - // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility - - - if (typeof Symbol !== 'undefined' && typeof Symbol["for"] === 'function') { - try { - BN.prototype[Symbol["for"]('nodejs.util.inspect.custom')] = inspect; - } catch (e) { - BN.prototype.inspect = inspect; - } - } else { - BN.prototype.inspect = inspect; - } - - function inspect() { - return (this.red ? ''; - } - /* - var zeros = []; - var groupSizes = []; - var groupBases = []; - var s = ''; - var i = -1; - while (++i < BN.wordSize) { - zeros[i] = s; - s += '0'; - } - groupSizes[0] = 0; - groupSizes[1] = 0; - groupBases[0] = 0; - groupBases[1] = 0; - var base = 2 - 1; - while (++base < 36 + 1) { - var groupSize = 0; - var groupBase = 1; - while (groupBase < (1 << BN.wordSize) / base) { - groupBase *= base; - groupSize += 1; - } - groupSizes[base] = groupSize; - groupBases[base] = groupBase; - } - */ - - - var zeros = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000']; - var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5]; - var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176]; - - BN.prototype.toString = function toString(base, padding) { - base = base || 10; - padding = padding | 0 || 1; - var out; - - if (base === 16 || base === 'hex') { - out = ''; - var off = 0; - var carry = 0; - - for (var i = 0; i < this.length; i++) { - var w = this.words[i]; - var word = ((w << off | carry) & 0xffffff).toString(16); - carry = w >>> 24 - off & 0xffffff; - off += 2; - - if (off >= 26) { - off -= 26; - i--; - } - - if (carry !== 0 || i !== this.length - 1) { - out = zeros[6 - word.length] + word + out; - } else { - out = word + out; - } - } - - if (carry !== 0) { - out = carry.toString(16) + out; - } - - while (out.length % padding !== 0) { - out = '0' + out; - } - - if (this.negative !== 0) { - out = '-' + out; - } - - return out; - } - - if (base === (base | 0) && base >= 2 && base <= 36) { - // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base)); - var groupSize = groupSizes[base]; // var groupBase = Math.pow(base, groupSize); - - var groupBase = groupBases[base]; - out = ''; - var c = this.clone(); - c.negative = 0; - - while (!c.isZero()) { - var r = c.modrn(groupBase).toString(base); - c = c.idivn(groupBase); - - if (!c.isZero()) { - out = zeros[groupSize - r.length] + r + out; - } else { - out = r + out; - } - } - - if (this.isZero()) { - out = '0' + out; - } - - while (out.length % padding !== 0) { - out = '0' + out; - } - - if (this.negative !== 0) { - out = '-' + out; - } - - return out; - } - - assert(false, 'Base should be between 2 and 36'); - }; - - BN.prototype.toNumber = function toNumber() { - var ret = this.words[0]; - - if (this.length === 2) { - ret += this.words[1] * 0x4000000; - } else if (this.length === 3 && this.words[2] === 0x01) { - // NOTE: at this stage it is known that the top bit is set - ret += 0x10000000000000 + this.words[1] * 0x4000000; - } else if (this.length > 2) { - assert(false, 'Number can only safely store up to 53 bits'); - } - - return this.negative !== 0 ? -ret : ret; - }; - - BN.prototype.toJSON = function toJSON() { - return this.toString(16, 2); - }; - - if (Buffer) { - BN.prototype.toBuffer = function toBuffer(endian, length) { - return this.toArrayLike(Buffer, endian, length); - }; - } - - BN.prototype.toArray = function toArray(endian, length) { - return this.toArrayLike(Array, endian, length); - }; - - var allocate = function allocate(ArrayType, size) { - if (ArrayType.allocUnsafe) { - return ArrayType.allocUnsafe(size); - } - - return new ArrayType(size); - }; - - BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) { - this._strip(); - - var byteLength = this.byteLength(); - var reqLength = length || Math.max(1, byteLength); - assert(byteLength <= reqLength, 'byte array longer than desired length'); - assert(reqLength > 0, 'Requested array length <= 0'); - var res = allocate(ArrayType, reqLength); - var postfix = endian === 'le' ? 'LE' : 'BE'; - this['_toArrayLike' + postfix](res, byteLength); - return res; - }; - - BN.prototype._toArrayLikeLE = function _toArrayLikeLE(res, byteLength) { - var position = 0; - var carry = 0; - - for (var i = 0, shift = 0; i < this.length; i++) { - var word = this.words[i] << shift | carry; - res[position++] = word & 0xff; - - if (position < res.length) { - res[position++] = word >> 8 & 0xff; - } - - if (position < res.length) { - res[position++] = word >> 16 & 0xff; - } - - if (shift === 6) { - if (position < res.length) { - res[position++] = word >> 24 & 0xff; - } - - carry = 0; - shift = 0; - } else { - carry = word >>> 24; - shift += 2; - } - } - - if (position < res.length) { - res[position++] = carry; - - while (position < res.length) { - res[position++] = 0; - } - } - }; - - BN.prototype._toArrayLikeBE = function _toArrayLikeBE(res, byteLength) { - var position = res.length - 1; - var carry = 0; - - for (var i = 0, shift = 0; i < this.length; i++) { - var word = this.words[i] << shift | carry; - res[position--] = word & 0xff; - - if (position >= 0) { - res[position--] = word >> 8 & 0xff; - } - - if (position >= 0) { - res[position--] = word >> 16 & 0xff; - } - - if (shift === 6) { - if (position >= 0) { - res[position--] = word >> 24 & 0xff; - } - - carry = 0; - shift = 0; - } else { - carry = word >>> 24; - shift += 2; - } - } - - if (position >= 0) { - res[position--] = carry; - - while (position >= 0) { - res[position--] = 0; - } - } - }; - - if (Math.clz32) { - BN.prototype._countBits = function _countBits(w) { - return 32 - Math.clz32(w); - }; - } else { - BN.prototype._countBits = function _countBits(w) { - var t = w; - var r = 0; - - if (t >= 0x1000) { - r += 13; - t >>>= 13; - } - - if (t >= 0x40) { - r += 7; - t >>>= 7; - } - - if (t >= 0x8) { - r += 4; - t >>>= 4; - } - - if (t >= 0x02) { - r += 2; - t >>>= 2; - } - - return r + t; - }; - } - - BN.prototype._zeroBits = function _zeroBits(w) { - // Short-cut - if (w === 0) return 26; - var t = w; - var r = 0; - - if ((t & 0x1fff) === 0) { - r += 13; - t >>>= 13; - } - - if ((t & 0x7f) === 0) { - r += 7; - t >>>= 7; - } - - if ((t & 0xf) === 0) { - r += 4; - t >>>= 4; - } - - if ((t & 0x3) === 0) { - r += 2; - t >>>= 2; - } - - if ((t & 0x1) === 0) { - r++; - } - - return r; - }; // Return number of used bits in a BN - - - BN.prototype.bitLength = function bitLength() { - var w = this.words[this.length - 1]; - - var hi = this._countBits(w); - - return (this.length - 1) * 26 + hi; - }; - - function toBitArray(num) { - var w = new Array(num.bitLength()); - - for (var bit = 0; bit < w.length; bit++) { - var off = bit / 26 | 0; - var wbit = bit % 26; - w[bit] = num.words[off] >>> wbit & 0x01; - } - - return w; - } // Number of trailing zero bits - - - BN.prototype.zeroBits = function zeroBits() { - if (this.isZero()) return 0; - var r = 0; - - for (var i = 0; i < this.length; i++) { - var b = this._zeroBits(this.words[i]); - - r += b; - if (b !== 26) break; - } - - return r; - }; - - BN.prototype.byteLength = function byteLength() { - return Math.ceil(this.bitLength() / 8); - }; - - BN.prototype.toTwos = function toTwos(width) { - if (this.negative !== 0) { - return this.abs().inotn(width).iaddn(1); - } - - return this.clone(); - }; - - BN.prototype.fromTwos = function fromTwos(width) { - if (this.testn(width - 1)) { - return this.notn(width).iaddn(1).ineg(); - } - - return this.clone(); - }; - - BN.prototype.isNeg = function isNeg() { - return this.negative !== 0; - }; // Return negative clone of `this` - - - BN.prototype.neg = function neg() { - return this.clone().ineg(); - }; - - BN.prototype.ineg = function ineg() { - if (!this.isZero()) { - this.negative ^= 1; - } - - return this; - }; // Or `num` with `this` in-place - - - BN.prototype.iuor = function iuor(num) { - while (this.length < num.length) { - this.words[this.length++] = 0; - } - - for (var i = 0; i < num.length; i++) { - this.words[i] = this.words[i] | num.words[i]; - } - - return this._strip(); - }; - - BN.prototype.ior = function ior(num) { - assert((this.negative | num.negative) === 0); - return this.iuor(num); - }; // Or `num` with `this` - - - BN.prototype.or = function or(num) { - if (this.length > num.length) return this.clone().ior(num); - return num.clone().ior(this); - }; - - BN.prototype.uor = function uor(num) { - if (this.length > num.length) return this.clone().iuor(num); - return num.clone().iuor(this); - }; // And `num` with `this` in-place - - - BN.prototype.iuand = function iuand(num) { - // b = min-length(num, this) - var b; - - if (this.length > num.length) { - b = num; - } else { - b = this; - } - - for (var i = 0; i < b.length; i++) { - this.words[i] = this.words[i] & num.words[i]; - } - - this.length = b.length; - return this._strip(); - }; - - BN.prototype.iand = function iand(num) { - assert((this.negative | num.negative) === 0); - return this.iuand(num); - }; // And `num` with `this` - - - BN.prototype.and = function and(num) { - if (this.length > num.length) return this.clone().iand(num); - return num.clone().iand(this); - }; - - BN.prototype.uand = function uand(num) { - if (this.length > num.length) return this.clone().iuand(num); - return num.clone().iuand(this); - }; // Xor `num` with `this` in-place - - - BN.prototype.iuxor = function iuxor(num) { - // a.length > b.length - var a; - var b; - - if (this.length > num.length) { - a = this; - b = num; - } else { - a = num; - b = this; - } - - for (var i = 0; i < b.length; i++) { - this.words[i] = a.words[i] ^ b.words[i]; - } - - if (this !== a) { - for (; i < a.length; i++) { - this.words[i] = a.words[i]; - } - } - - this.length = a.length; - return this._strip(); - }; - - BN.prototype.ixor = function ixor(num) { - assert((this.negative | num.negative) === 0); - return this.iuxor(num); - }; // Xor `num` with `this` - - - BN.prototype.xor = function xor(num) { - if (this.length > num.length) return this.clone().ixor(num); - return num.clone().ixor(this); - }; - - BN.prototype.uxor = function uxor(num) { - if (this.length > num.length) return this.clone().iuxor(num); - return num.clone().iuxor(this); - }; // Not ``this`` with ``width`` bitwidth - - - BN.prototype.inotn = function inotn(width) { - assert(typeof width === 'number' && width >= 0); - var bytesNeeded = Math.ceil(width / 26) | 0; - var bitsLeft = width % 26; // Extend the buffer with leading zeroes - - this._expand(bytesNeeded); - - if (bitsLeft > 0) { - bytesNeeded--; - } // Handle complete words - - - for (var i = 0; i < bytesNeeded; i++) { - this.words[i] = ~this.words[i] & 0x3ffffff; - } // Handle the residue - - - if (bitsLeft > 0) { - this.words[i] = ~this.words[i] & 0x3ffffff >> 26 - bitsLeft; - } // And remove leading zeroes - - - return this._strip(); - }; - - BN.prototype.notn = function notn(width) { - return this.clone().inotn(width); - }; // Set `bit` of `this` - - - BN.prototype.setn = function setn(bit, val) { - assert(typeof bit === 'number' && bit >= 0); - var off = bit / 26 | 0; - var wbit = bit % 26; - - this._expand(off + 1); - - if (val) { - this.words[off] = this.words[off] | 1 << wbit; - } else { - this.words[off] = this.words[off] & ~(1 << wbit); - } - - return this._strip(); - }; // Add `num` to `this` in-place - - - BN.prototype.iadd = function iadd(num) { - var r; // negative + positive - - if (this.negative !== 0 && num.negative === 0) { - this.negative = 0; - r = this.isub(num); - this.negative ^= 1; - return this._normSign(); // positive + negative - } else if (this.negative === 0 && num.negative !== 0) { - num.negative = 0; - r = this.isub(num); - num.negative = 1; - return r._normSign(); - } // a.length > b.length - - - var a, b; - - if (this.length > num.length) { - a = this; - b = num; - } else { - a = num; - b = this; - } - - var carry = 0; - - for (var i = 0; i < b.length; i++) { - r = (a.words[i] | 0) + (b.words[i] | 0) + carry; - this.words[i] = r & 0x3ffffff; - carry = r >>> 26; - } - - for (; carry !== 0 && i < a.length; i++) { - r = (a.words[i] | 0) + carry; - this.words[i] = r & 0x3ffffff; - carry = r >>> 26; - } - - this.length = a.length; - - if (carry !== 0) { - this.words[this.length] = carry; - this.length++; // Copy the rest of the words - } else if (a !== this) { - for (; i < a.length; i++) { - this.words[i] = a.words[i]; - } - } - - return this; - }; // Add `num` to `this` - - - BN.prototype.add = function add(num) { - var res; - - if (num.negative !== 0 && this.negative === 0) { - num.negative = 0; - res = this.sub(num); - num.negative ^= 1; - return res; - } else if (num.negative === 0 && this.negative !== 0) { - this.negative = 0; - res = num.sub(this); - this.negative = 1; - return res; - } - - if (this.length > num.length) return this.clone().iadd(num); - return num.clone().iadd(this); - }; // Subtract `num` from `this` in-place - - - BN.prototype.isub = function isub(num) { - // this - (-num) = this + num - if (num.negative !== 0) { - num.negative = 0; - var r = this.iadd(num); - num.negative = 1; - return r._normSign(); // -this - num = -(this + num) - } else if (this.negative !== 0) { - this.negative = 0; - this.iadd(num); - this.negative = 1; - return this._normSign(); - } // At this point both numbers are positive - - - var cmp = this.cmp(num); // Optimization - zeroify - - if (cmp === 0) { - this.negative = 0; - this.length = 1; - this.words[0] = 0; - return this; - } // a > b - - - var a, b; - - if (cmp > 0) { - a = this; - b = num; - } else { - a = num; - b = this; - } - - var carry = 0; - - for (var i = 0; i < b.length; i++) { - r = (a.words[i] | 0) - (b.words[i] | 0) + carry; - carry = r >> 26; - this.words[i] = r & 0x3ffffff; - } - - for (; carry !== 0 && i < a.length; i++) { - r = (a.words[i] | 0) + carry; - carry = r >> 26; - this.words[i] = r & 0x3ffffff; - } // Copy rest of the words - - - if (carry === 0 && i < a.length && a !== this) { - for (; i < a.length; i++) { - this.words[i] = a.words[i]; - } - } - - this.length = Math.max(this.length, i); - - if (a !== this) { - this.negative = 1; - } - - return this._strip(); - }; // Subtract `num` from `this` - - - BN.prototype.sub = function sub(num) { - return this.clone().isub(num); - }; - - function smallMulTo(self, num, out) { - out.negative = num.negative ^ self.negative; - var len = self.length + num.length | 0; - out.length = len; - len = len - 1 | 0; // Peel one iteration (compiler can't do it, because of code complexity) - - var a = self.words[0] | 0; - var b = num.words[0] | 0; - var r = a * b; - var lo = r & 0x3ffffff; - var carry = r / 0x4000000 | 0; - out.words[0] = lo; - - for (var k = 1; k < len; k++) { - // Sum all words with the same `i + j = k` and accumulate `ncarry`, - // note that ncarry could be >= 0x3ffffff - var ncarry = carry >>> 26; - var rword = carry & 0x3ffffff; - var maxJ = Math.min(k, num.length - 1); - - for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) { - var i = k - j | 0; - a = self.words[i] | 0; - b = num.words[j] | 0; - r = a * b + rword; - ncarry += r / 0x4000000 | 0; - rword = r & 0x3ffffff; - } - - out.words[k] = rword | 0; - carry = ncarry | 0; - } - - if (carry !== 0) { - out.words[k] = carry | 0; - } else { - out.length--; - } - - return out._strip(); - } // TODO(indutny): it may be reasonable to omit it for users who don't need - // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit - // multiplication (like elliptic secp256k1). - - - var comb10MulTo = function comb10MulTo(self, num, out) { - var a = self.words; - var b = num.words; - var o = out.words; - var c = 0; - var lo; - var mid; - var hi; - var a0 = a[0] | 0; - var al0 = a0 & 0x1fff; - var ah0 = a0 >>> 13; - var a1 = a[1] | 0; - var al1 = a1 & 0x1fff; - var ah1 = a1 >>> 13; - var a2 = a[2] | 0; - var al2 = a2 & 0x1fff; - var ah2 = a2 >>> 13; - var a3 = a[3] | 0; - var al3 = a3 & 0x1fff; - var ah3 = a3 >>> 13; - var a4 = a[4] | 0; - var al4 = a4 & 0x1fff; - var ah4 = a4 >>> 13; - var a5 = a[5] | 0; - var al5 = a5 & 0x1fff; - var ah5 = a5 >>> 13; - var a6 = a[6] | 0; - var al6 = a6 & 0x1fff; - var ah6 = a6 >>> 13; - var a7 = a[7] | 0; - var al7 = a7 & 0x1fff; - var ah7 = a7 >>> 13; - var a8 = a[8] | 0; - var al8 = a8 & 0x1fff; - var ah8 = a8 >>> 13; - var a9 = a[9] | 0; - var al9 = a9 & 0x1fff; - var ah9 = a9 >>> 13; - var b0 = b[0] | 0; - var bl0 = b0 & 0x1fff; - var bh0 = b0 >>> 13; - var b1 = b[1] | 0; - var bl1 = b1 & 0x1fff; - var bh1 = b1 >>> 13; - var b2 = b[2] | 0; - var bl2 = b2 & 0x1fff; - var bh2 = b2 >>> 13; - var b3 = b[3] | 0; - var bl3 = b3 & 0x1fff; - var bh3 = b3 >>> 13; - var b4 = b[4] | 0; - var bl4 = b4 & 0x1fff; - var bh4 = b4 >>> 13; - var b5 = b[5] | 0; - var bl5 = b5 & 0x1fff; - var bh5 = b5 >>> 13; - var b6 = b[6] | 0; - var bl6 = b6 & 0x1fff; - var bh6 = b6 >>> 13; - var b7 = b[7] | 0; - var bl7 = b7 & 0x1fff; - var bh7 = b7 >>> 13; - var b8 = b[8] | 0; - var bl8 = b8 & 0x1fff; - var bh8 = b8 >>> 13; - var b9 = b[9] | 0; - var bl9 = b9 & 0x1fff; - var bh9 = b9 >>> 13; - out.negative = self.negative ^ num.negative; - out.length = 19; - /* k = 0 */ - - lo = Math.imul(al0, bl0); - mid = Math.imul(al0, bh0); - mid = mid + Math.imul(ah0, bl0) | 0; - hi = Math.imul(ah0, bh0); - var w0 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; - c = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0; - w0 &= 0x3ffffff; - /* k = 1 */ - - lo = Math.imul(al1, bl0); - mid = Math.imul(al1, bh0); - mid = mid + Math.imul(ah1, bl0) | 0; - hi = Math.imul(ah1, bh0); - lo = lo + Math.imul(al0, bl1) | 0; - mid = mid + Math.imul(al0, bh1) | 0; - mid = mid + Math.imul(ah0, bl1) | 0; - hi = hi + Math.imul(ah0, bh1) | 0; - var w1 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; - c = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0; - w1 &= 0x3ffffff; - /* k = 2 */ - - lo = Math.imul(al2, bl0); - mid = Math.imul(al2, bh0); - mid = mid + Math.imul(ah2, bl0) | 0; - hi = Math.imul(ah2, bh0); - lo = lo + Math.imul(al1, bl1) | 0; - mid = mid + Math.imul(al1, bh1) | 0; - mid = mid + Math.imul(ah1, bl1) | 0; - hi = hi + Math.imul(ah1, bh1) | 0; - lo = lo + Math.imul(al0, bl2) | 0; - mid = mid + Math.imul(al0, bh2) | 0; - mid = mid + Math.imul(ah0, bl2) | 0; - hi = hi + Math.imul(ah0, bh2) | 0; - var w2 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; - c = (hi + (mid >>> 13) | 0) + (w2 >>> 26) | 0; - w2 &= 0x3ffffff; - /* k = 3 */ - - lo = Math.imul(al3, bl0); - mid = Math.imul(al3, bh0); - mid = mid + Math.imul(ah3, bl0) | 0; - hi = Math.imul(ah3, bh0); - lo = lo + Math.imul(al2, bl1) | 0; - mid = mid + Math.imul(al2, bh1) | 0; - mid = mid + Math.imul(ah2, bl1) | 0; - hi = hi + Math.imul(ah2, bh1) | 0; - lo = lo + Math.imul(al1, bl2) | 0; - mid = mid + Math.imul(al1, bh2) | 0; - mid = mid + Math.imul(ah1, bl2) | 0; - hi = hi + Math.imul(ah1, bh2) | 0; - lo = lo + Math.imul(al0, bl3) | 0; - mid = mid + Math.imul(al0, bh3) | 0; - mid = mid + Math.imul(ah0, bl3) | 0; - hi = hi + Math.imul(ah0, bh3) | 0; - var w3 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; - c = (hi + (mid >>> 13) | 0) + (w3 >>> 26) | 0; - w3 &= 0x3ffffff; - /* k = 4 */ - - lo = Math.imul(al4, bl0); - mid = Math.imul(al4, bh0); - mid = mid + Math.imul(ah4, bl0) | 0; - hi = Math.imul(ah4, bh0); - lo = lo + Math.imul(al3, bl1) | 0; - mid = mid + Math.imul(al3, bh1) | 0; - mid = mid + Math.imul(ah3, bl1) | 0; - hi = hi + Math.imul(ah3, bh1) | 0; - lo = lo + Math.imul(al2, bl2) | 0; - mid = mid + Math.imul(al2, bh2) | 0; - mid = mid + Math.imul(ah2, bl2) | 0; - hi = hi + Math.imul(ah2, bh2) | 0; - lo = lo + Math.imul(al1, bl3) | 0; - mid = mid + Math.imul(al1, bh3) | 0; - mid = mid + Math.imul(ah1, bl3) | 0; - hi = hi + Math.imul(ah1, bh3) | 0; - lo = lo + Math.imul(al0, bl4) | 0; - mid = mid + Math.imul(al0, bh4) | 0; - mid = mid + Math.imul(ah0, bl4) | 0; - hi = hi + Math.imul(ah0, bh4) | 0; - var w4 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; - c = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0; - w4 &= 0x3ffffff; - /* k = 5 */ - - lo = Math.imul(al5, bl0); - mid = Math.imul(al5, bh0); - mid = mid + Math.imul(ah5, bl0) | 0; - hi = Math.imul(ah5, bh0); - lo = lo + Math.imul(al4, bl1) | 0; - mid = mid + Math.imul(al4, bh1) | 0; - mid = mid + Math.imul(ah4, bl1) | 0; - hi = hi + Math.imul(ah4, bh1) | 0; - lo = lo + Math.imul(al3, bl2) | 0; - mid = mid + Math.imul(al3, bh2) | 0; - mid = mid + Math.imul(ah3, bl2) | 0; - hi = hi + Math.imul(ah3, bh2) | 0; - lo = lo + Math.imul(al2, bl3) | 0; - mid = mid + Math.imul(al2, bh3) | 0; - mid = mid + Math.imul(ah2, bl3) | 0; - hi = hi + Math.imul(ah2, bh3) | 0; - lo = lo + Math.imul(al1, bl4) | 0; - mid = mid + Math.imul(al1, bh4) | 0; - mid = mid + Math.imul(ah1, bl4) | 0; - hi = hi + Math.imul(ah1, bh4) | 0; - lo = lo + Math.imul(al0, bl5) | 0; - mid = mid + Math.imul(al0, bh5) | 0; - mid = mid + Math.imul(ah0, bl5) | 0; - hi = hi + Math.imul(ah0, bh5) | 0; - var w5 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; - c = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0; - w5 &= 0x3ffffff; - /* k = 6 */ - - lo = Math.imul(al6, bl0); - mid = Math.imul(al6, bh0); - mid = mid + Math.imul(ah6, bl0) | 0; - hi = Math.imul(ah6, bh0); - lo = lo + Math.imul(al5, bl1) | 0; - mid = mid + Math.imul(al5, bh1) | 0; - mid = mid + Math.imul(ah5, bl1) | 0; - hi = hi + Math.imul(ah5, bh1) | 0; - lo = lo + Math.imul(al4, bl2) | 0; - mid = mid + Math.imul(al4, bh2) | 0; - mid = mid + Math.imul(ah4, bl2) | 0; - hi = hi + Math.imul(ah4, bh2) | 0; - lo = lo + Math.imul(al3, bl3) | 0; - mid = mid + Math.imul(al3, bh3) | 0; - mid = mid + Math.imul(ah3, bl3) | 0; - hi = hi + Math.imul(ah3, bh3) | 0; - lo = lo + Math.imul(al2, bl4) | 0; - mid = mid + Math.imul(al2, bh4) | 0; - mid = mid + Math.imul(ah2, bl4) | 0; - hi = hi + Math.imul(ah2, bh4) | 0; - lo = lo + Math.imul(al1, bl5) | 0; - mid = mid + Math.imul(al1, bh5) | 0; - mid = mid + Math.imul(ah1, bl5) | 0; - hi = hi + Math.imul(ah1, bh5) | 0; - lo = lo + Math.imul(al0, bl6) | 0; - mid = mid + Math.imul(al0, bh6) | 0; - mid = mid + Math.imul(ah0, bl6) | 0; - hi = hi + Math.imul(ah0, bh6) | 0; - var w6 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; - c = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0; - w6 &= 0x3ffffff; - /* k = 7 */ - - lo = Math.imul(al7, bl0); - mid = Math.imul(al7, bh0); - mid = mid + Math.imul(ah7, bl0) | 0; - hi = Math.imul(ah7, bh0); - lo = lo + Math.imul(al6, bl1) | 0; - mid = mid + Math.imul(al6, bh1) | 0; - mid = mid + Math.imul(ah6, bl1) | 0; - hi = hi + Math.imul(ah6, bh1) | 0; - lo = lo + Math.imul(al5, bl2) | 0; - mid = mid + Math.imul(al5, bh2) | 0; - mid = mid + Math.imul(ah5, bl2) | 0; - hi = hi + Math.imul(ah5, bh2) | 0; - lo = lo + Math.imul(al4, bl3) | 0; - mid = mid + Math.imul(al4, bh3) | 0; - mid = mid + Math.imul(ah4, bl3) | 0; - hi = hi + Math.imul(ah4, bh3) | 0; - lo = lo + Math.imul(al3, bl4) | 0; - mid = mid + Math.imul(al3, bh4) | 0; - mid = mid + Math.imul(ah3, bl4) | 0; - hi = hi + Math.imul(ah3, bh4) | 0; - lo = lo + Math.imul(al2, bl5) | 0; - mid = mid + Math.imul(al2, bh5) | 0; - mid = mid + Math.imul(ah2, bl5) | 0; - hi = hi + Math.imul(ah2, bh5) | 0; - lo = lo + Math.imul(al1, bl6) | 0; - mid = mid + Math.imul(al1, bh6) | 0; - mid = mid + Math.imul(ah1, bl6) | 0; - hi = hi + Math.imul(ah1, bh6) | 0; - lo = lo + Math.imul(al0, bl7) | 0; - mid = mid + Math.imul(al0, bh7) | 0; - mid = mid + Math.imul(ah0, bl7) | 0; - hi = hi + Math.imul(ah0, bh7) | 0; - var w7 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; - c = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0; - w7 &= 0x3ffffff; - /* k = 8 */ - - lo = Math.imul(al8, bl0); - mid = Math.imul(al8, bh0); - mid = mid + Math.imul(ah8, bl0) | 0; - hi = Math.imul(ah8, bh0); - lo = lo + Math.imul(al7, bl1) | 0; - mid = mid + Math.imul(al7, bh1) | 0; - mid = mid + Math.imul(ah7, bl1) | 0; - hi = hi + Math.imul(ah7, bh1) | 0; - lo = lo + Math.imul(al6, bl2) | 0; - mid = mid + Math.imul(al6, bh2) | 0; - mid = mid + Math.imul(ah6, bl2) | 0; - hi = hi + Math.imul(ah6, bh2) | 0; - lo = lo + Math.imul(al5, bl3) | 0; - mid = mid + Math.imul(al5, bh3) | 0; - mid = mid + Math.imul(ah5, bl3) | 0; - hi = hi + Math.imul(ah5, bh3) | 0; - lo = lo + Math.imul(al4, bl4) | 0; - mid = mid + Math.imul(al4, bh4) | 0; - mid = mid + Math.imul(ah4, bl4) | 0; - hi = hi + Math.imul(ah4, bh4) | 0; - lo = lo + Math.imul(al3, bl5) | 0; - mid = mid + Math.imul(al3, bh5) | 0; - mid = mid + Math.imul(ah3, bl5) | 0; - hi = hi + Math.imul(ah3, bh5) | 0; - lo = lo + Math.imul(al2, bl6) | 0; - mid = mid + Math.imul(al2, bh6) | 0; - mid = mid + Math.imul(ah2, bl6) | 0; - hi = hi + Math.imul(ah2, bh6) | 0; - lo = lo + Math.imul(al1, bl7) | 0; - mid = mid + Math.imul(al1, bh7) | 0; - mid = mid + Math.imul(ah1, bl7) | 0; - hi = hi + Math.imul(ah1, bh7) | 0; - lo = lo + Math.imul(al0, bl8) | 0; - mid = mid + Math.imul(al0, bh8) | 0; - mid = mid + Math.imul(ah0, bl8) | 0; - hi = hi + Math.imul(ah0, bh8) | 0; - var w8 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; - c = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0; - w8 &= 0x3ffffff; - /* k = 9 */ - - lo = Math.imul(al9, bl0); - mid = Math.imul(al9, bh0); - mid = mid + Math.imul(ah9, bl0) | 0; - hi = Math.imul(ah9, bh0); - lo = lo + Math.imul(al8, bl1) | 0; - mid = mid + Math.imul(al8, bh1) | 0; - mid = mid + Math.imul(ah8, bl1) | 0; - hi = hi + Math.imul(ah8, bh1) | 0; - lo = lo + Math.imul(al7, bl2) | 0; - mid = mid + Math.imul(al7, bh2) | 0; - mid = mid + Math.imul(ah7, bl2) | 0; - hi = hi + Math.imul(ah7, bh2) | 0; - lo = lo + Math.imul(al6, bl3) | 0; - mid = mid + Math.imul(al6, bh3) | 0; - mid = mid + Math.imul(ah6, bl3) | 0; - hi = hi + Math.imul(ah6, bh3) | 0; - lo = lo + Math.imul(al5, bl4) | 0; - mid = mid + Math.imul(al5, bh4) | 0; - mid = mid + Math.imul(ah5, bl4) | 0; - hi = hi + Math.imul(ah5, bh4) | 0; - lo = lo + Math.imul(al4, bl5) | 0; - mid = mid + Math.imul(al4, bh5) | 0; - mid = mid + Math.imul(ah4, bl5) | 0; - hi = hi + Math.imul(ah4, bh5) | 0; - lo = lo + Math.imul(al3, bl6) | 0; - mid = mid + Math.imul(al3, bh6) | 0; - mid = mid + Math.imul(ah3, bl6) | 0; - hi = hi + Math.imul(ah3, bh6) | 0; - lo = lo + Math.imul(al2, bl7) | 0; - mid = mid + Math.imul(al2, bh7) | 0; - mid = mid + Math.imul(ah2, bl7) | 0; - hi = hi + Math.imul(ah2, bh7) | 0; - lo = lo + Math.imul(al1, bl8) | 0; - mid = mid + Math.imul(al1, bh8) | 0; - mid = mid + Math.imul(ah1, bl8) | 0; - hi = hi + Math.imul(ah1, bh8) | 0; - lo = lo + Math.imul(al0, bl9) | 0; - mid = mid + Math.imul(al0, bh9) | 0; - mid = mid + Math.imul(ah0, bl9) | 0; - hi = hi + Math.imul(ah0, bh9) | 0; - var w9 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; - c = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0; - w9 &= 0x3ffffff; - /* k = 10 */ - - lo = Math.imul(al9, bl1); - mid = Math.imul(al9, bh1); - mid = mid + Math.imul(ah9, bl1) | 0; - hi = Math.imul(ah9, bh1); - lo = lo + Math.imul(al8, bl2) | 0; - mid = mid + Math.imul(al8, bh2) | 0; - mid = mid + Math.imul(ah8, bl2) | 0; - hi = hi + Math.imul(ah8, bh2) | 0; - lo = lo + Math.imul(al7, bl3) | 0; - mid = mid + Math.imul(al7, bh3) | 0; - mid = mid + Math.imul(ah7, bl3) | 0; - hi = hi + Math.imul(ah7, bh3) | 0; - lo = lo + Math.imul(al6, bl4) | 0; - mid = mid + Math.imul(al6, bh4) | 0; - mid = mid + Math.imul(ah6, bl4) | 0; - hi = hi + Math.imul(ah6, bh4) | 0; - lo = lo + Math.imul(al5, bl5) | 0; - mid = mid + Math.imul(al5, bh5) | 0; - mid = mid + Math.imul(ah5, bl5) | 0; - hi = hi + Math.imul(ah5, bh5) | 0; - lo = lo + Math.imul(al4, bl6) | 0; - mid = mid + Math.imul(al4, bh6) | 0; - mid = mid + Math.imul(ah4, bl6) | 0; - hi = hi + Math.imul(ah4, bh6) | 0; - lo = lo + Math.imul(al3, bl7) | 0; - mid = mid + Math.imul(al3, bh7) | 0; - mid = mid + Math.imul(ah3, bl7) | 0; - hi = hi + Math.imul(ah3, bh7) | 0; - lo = lo + Math.imul(al2, bl8) | 0; - mid = mid + Math.imul(al2, bh8) | 0; - mid = mid + Math.imul(ah2, bl8) | 0; - hi = hi + Math.imul(ah2, bh8) | 0; - lo = lo + Math.imul(al1, bl9) | 0; - mid = mid + Math.imul(al1, bh9) | 0; - mid = mid + Math.imul(ah1, bl9) | 0; - hi = hi + Math.imul(ah1, bh9) | 0; - var w10 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; - c = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0; - w10 &= 0x3ffffff; - /* k = 11 */ - - lo = Math.imul(al9, bl2); - mid = Math.imul(al9, bh2); - mid = mid + Math.imul(ah9, bl2) | 0; - hi = Math.imul(ah9, bh2); - lo = lo + Math.imul(al8, bl3) | 0; - mid = mid + Math.imul(al8, bh3) | 0; - mid = mid + Math.imul(ah8, bl3) | 0; - hi = hi + Math.imul(ah8, bh3) | 0; - lo = lo + Math.imul(al7, bl4) | 0; - mid = mid + Math.imul(al7, bh4) | 0; - mid = mid + Math.imul(ah7, bl4) | 0; - hi = hi + Math.imul(ah7, bh4) | 0; - lo = lo + Math.imul(al6, bl5) | 0; - mid = mid + Math.imul(al6, bh5) | 0; - mid = mid + Math.imul(ah6, bl5) | 0; - hi = hi + Math.imul(ah6, bh5) | 0; - lo = lo + Math.imul(al5, bl6) | 0; - mid = mid + Math.imul(al5, bh6) | 0; - mid = mid + Math.imul(ah5, bl6) | 0; - hi = hi + Math.imul(ah5, bh6) | 0; - lo = lo + Math.imul(al4, bl7) | 0; - mid = mid + Math.imul(al4, bh7) | 0; - mid = mid + Math.imul(ah4, bl7) | 0; - hi = hi + Math.imul(ah4, bh7) | 0; - lo = lo + Math.imul(al3, bl8) | 0; - mid = mid + Math.imul(al3, bh8) | 0; - mid = mid + Math.imul(ah3, bl8) | 0; - hi = hi + Math.imul(ah3, bh8) | 0; - lo = lo + Math.imul(al2, bl9) | 0; - mid = mid + Math.imul(al2, bh9) | 0; - mid = mid + Math.imul(ah2, bl9) | 0; - hi = hi + Math.imul(ah2, bh9) | 0; - var w11 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; - c = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0; - w11 &= 0x3ffffff; - /* k = 12 */ - - lo = Math.imul(al9, bl3); - mid = Math.imul(al9, bh3); - mid = mid + Math.imul(ah9, bl3) | 0; - hi = Math.imul(ah9, bh3); - lo = lo + Math.imul(al8, bl4) | 0; - mid = mid + Math.imul(al8, bh4) | 0; - mid = mid + Math.imul(ah8, bl4) | 0; - hi = hi + Math.imul(ah8, bh4) | 0; - lo = lo + Math.imul(al7, bl5) | 0; - mid = mid + Math.imul(al7, bh5) | 0; - mid = mid + Math.imul(ah7, bl5) | 0; - hi = hi + Math.imul(ah7, bh5) | 0; - lo = lo + Math.imul(al6, bl6) | 0; - mid = mid + Math.imul(al6, bh6) | 0; - mid = mid + Math.imul(ah6, bl6) | 0; - hi = hi + Math.imul(ah6, bh6) | 0; - lo = lo + Math.imul(al5, bl7) | 0; - mid = mid + Math.imul(al5, bh7) | 0; - mid = mid + Math.imul(ah5, bl7) | 0; - hi = hi + Math.imul(ah5, bh7) | 0; - lo = lo + Math.imul(al4, bl8) | 0; - mid = mid + Math.imul(al4, bh8) | 0; - mid = mid + Math.imul(ah4, bl8) | 0; - hi = hi + Math.imul(ah4, bh8) | 0; - lo = lo + Math.imul(al3, bl9) | 0; - mid = mid + Math.imul(al3, bh9) | 0; - mid = mid + Math.imul(ah3, bl9) | 0; - hi = hi + Math.imul(ah3, bh9) | 0; - var w12 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; - c = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0; - w12 &= 0x3ffffff; - /* k = 13 */ - - lo = Math.imul(al9, bl4); - mid = Math.imul(al9, bh4); - mid = mid + Math.imul(ah9, bl4) | 0; - hi = Math.imul(ah9, bh4); - lo = lo + Math.imul(al8, bl5) | 0; - mid = mid + Math.imul(al8, bh5) | 0; - mid = mid + Math.imul(ah8, bl5) | 0; - hi = hi + Math.imul(ah8, bh5) | 0; - lo = lo + Math.imul(al7, bl6) | 0; - mid = mid + Math.imul(al7, bh6) | 0; - mid = mid + Math.imul(ah7, bl6) | 0; - hi = hi + Math.imul(ah7, bh6) | 0; - lo = lo + Math.imul(al6, bl7) | 0; - mid = mid + Math.imul(al6, bh7) | 0; - mid = mid + Math.imul(ah6, bl7) | 0; - hi = hi + Math.imul(ah6, bh7) | 0; - lo = lo + Math.imul(al5, bl8) | 0; - mid = mid + Math.imul(al5, bh8) | 0; - mid = mid + Math.imul(ah5, bl8) | 0; - hi = hi + Math.imul(ah5, bh8) | 0; - lo = lo + Math.imul(al4, bl9) | 0; - mid = mid + Math.imul(al4, bh9) | 0; - mid = mid + Math.imul(ah4, bl9) | 0; - hi = hi + Math.imul(ah4, bh9) | 0; - var w13 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; - c = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0; - w13 &= 0x3ffffff; - /* k = 14 */ - - lo = Math.imul(al9, bl5); - mid = Math.imul(al9, bh5); - mid = mid + Math.imul(ah9, bl5) | 0; - hi = Math.imul(ah9, bh5); - lo = lo + Math.imul(al8, bl6) | 0; - mid = mid + Math.imul(al8, bh6) | 0; - mid = mid + Math.imul(ah8, bl6) | 0; - hi = hi + Math.imul(ah8, bh6) | 0; - lo = lo + Math.imul(al7, bl7) | 0; - mid = mid + Math.imul(al7, bh7) | 0; - mid = mid + Math.imul(ah7, bl7) | 0; - hi = hi + Math.imul(ah7, bh7) | 0; - lo = lo + Math.imul(al6, bl8) | 0; - mid = mid + Math.imul(al6, bh8) | 0; - mid = mid + Math.imul(ah6, bl8) | 0; - hi = hi + Math.imul(ah6, bh8) | 0; - lo = lo + Math.imul(al5, bl9) | 0; - mid = mid + Math.imul(al5, bh9) | 0; - mid = mid + Math.imul(ah5, bl9) | 0; - hi = hi + Math.imul(ah5, bh9) | 0; - var w14 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; - c = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0; - w14 &= 0x3ffffff; - /* k = 15 */ - - lo = Math.imul(al9, bl6); - mid = Math.imul(al9, bh6); - mid = mid + Math.imul(ah9, bl6) | 0; - hi = Math.imul(ah9, bh6); - lo = lo + Math.imul(al8, bl7) | 0; - mid = mid + Math.imul(al8, bh7) | 0; - mid = mid + Math.imul(ah8, bl7) | 0; - hi = hi + Math.imul(ah8, bh7) | 0; - lo = lo + Math.imul(al7, bl8) | 0; - mid = mid + Math.imul(al7, bh8) | 0; - mid = mid + Math.imul(ah7, bl8) | 0; - hi = hi + Math.imul(ah7, bh8) | 0; - lo = lo + Math.imul(al6, bl9) | 0; - mid = mid + Math.imul(al6, bh9) | 0; - mid = mid + Math.imul(ah6, bl9) | 0; - hi = hi + Math.imul(ah6, bh9) | 0; - var w15 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; - c = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0; - w15 &= 0x3ffffff; - /* k = 16 */ - - lo = Math.imul(al9, bl7); - mid = Math.imul(al9, bh7); - mid = mid + Math.imul(ah9, bl7) | 0; - hi = Math.imul(ah9, bh7); - lo = lo + Math.imul(al8, bl8) | 0; - mid = mid + Math.imul(al8, bh8) | 0; - mid = mid + Math.imul(ah8, bl8) | 0; - hi = hi + Math.imul(ah8, bh8) | 0; - lo = lo + Math.imul(al7, bl9) | 0; - mid = mid + Math.imul(al7, bh9) | 0; - mid = mid + Math.imul(ah7, bl9) | 0; - hi = hi + Math.imul(ah7, bh9) | 0; - var w16 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; - c = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0; - w16 &= 0x3ffffff; - /* k = 17 */ - - lo = Math.imul(al9, bl8); - mid = Math.imul(al9, bh8); - mid = mid + Math.imul(ah9, bl8) | 0; - hi = Math.imul(ah9, bh8); - lo = lo + Math.imul(al8, bl9) | 0; - mid = mid + Math.imul(al8, bh9) | 0; - mid = mid + Math.imul(ah8, bl9) | 0; - hi = hi + Math.imul(ah8, bh9) | 0; - var w17 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; - c = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0; - w17 &= 0x3ffffff; - /* k = 18 */ - - lo = Math.imul(al9, bl9); - mid = Math.imul(al9, bh9); - mid = mid + Math.imul(ah9, bl9) | 0; - hi = Math.imul(ah9, bh9); - var w18 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; - c = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0; - w18 &= 0x3ffffff; - o[0] = w0; - o[1] = w1; - o[2] = w2; - o[3] = w3; - o[4] = w4; - o[5] = w5; - o[6] = w6; - o[7] = w7; - o[8] = w8; - o[9] = w9; - o[10] = w10; - o[11] = w11; - o[12] = w12; - o[13] = w13; - o[14] = w14; - o[15] = w15; - o[16] = w16; - o[17] = w17; - o[18] = w18; - - if (c !== 0) { - o[19] = c; - out.length++; - } - - return out; - }; // Polyfill comb - - - if (!Math.imul) { - comb10MulTo = smallMulTo; - } - - function bigMulTo(self, num, out) { - out.negative = num.negative ^ self.negative; - out.length = self.length + num.length; - var carry = 0; - var hncarry = 0; - - for (var k = 0; k < out.length - 1; k++) { - // Sum all words with the same `i + j = k` and accumulate `ncarry`, - // note that ncarry could be >= 0x3ffffff - var ncarry = hncarry; - hncarry = 0; - var rword = carry & 0x3ffffff; - var maxJ = Math.min(k, num.length - 1); - - for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) { - var i = k - j; - var a = self.words[i] | 0; - var b = num.words[j] | 0; - var r = a * b; - var lo = r & 0x3ffffff; - ncarry = ncarry + (r / 0x4000000 | 0) | 0; - lo = lo + rword | 0; - rword = lo & 0x3ffffff; - ncarry = ncarry + (lo >>> 26) | 0; - hncarry += ncarry >>> 26; - ncarry &= 0x3ffffff; - } - - out.words[k] = rword; - carry = ncarry; - ncarry = hncarry; - } - - if (carry !== 0) { - out.words[k] = carry; - } else { - out.length--; - } - - return out._strip(); - } - - function jumboMulTo(self, num, out) { - // Temporary disable, see https://github.com/indutny/bn.js/issues/211 - // var fftm = new FFTM(); - // return fftm.mulp(self, num, out); - return bigMulTo(self, num, out); - } - - BN.prototype.mulTo = function mulTo(num, out) { - var res; - var len = this.length + num.length; - - if (this.length === 10 && num.length === 10) { - res = comb10MulTo(this, num, out); - } else if (len < 63) { - res = smallMulTo(this, num, out); - } else if (len < 1024) { - res = bigMulTo(this, num, out); - } else { - res = jumboMulTo(this, num, out); - } - - return res; - }; // Cooley-Tukey algorithm for FFT - // slightly revisited to rely on looping instead of recursion - - - function FFTM(x, y) { - this.x = x; - this.y = y; - } - - FFTM.prototype.makeRBT = function makeRBT(N) { - var t = new Array(N); - var l = BN.prototype._countBits(N) - 1; - - for (var i = 0; i < N; i++) { - t[i] = this.revBin(i, l, N); - } - - return t; - }; // Returns binary-reversed representation of `x` - - - FFTM.prototype.revBin = function revBin(x, l, N) { - if (x === 0 || x === N - 1) return x; - var rb = 0; - - for (var i = 0; i < l; i++) { - rb |= (x & 1) << l - i - 1; - x >>= 1; - } - - return rb; - }; // Performs "tweedling" phase, therefore 'emulating' - // behaviour of the recursive algorithm - - - FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) { - for (var i = 0; i < N; i++) { - rtws[i] = rws[rbt[i]]; - itws[i] = iws[rbt[i]]; - } - }; - - FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) { - this.permute(rbt, rws, iws, rtws, itws, N); - - for (var s = 1; s < N; s <<= 1) { - var l = s << 1; - var rtwdf = Math.cos(2 * Math.PI / l); - var itwdf = Math.sin(2 * Math.PI / l); - - for (var p = 0; p < N; p += l) { - var rtwdf_ = rtwdf; - var itwdf_ = itwdf; - - for (var j = 0; j < s; j++) { - var re = rtws[p + j]; - var ie = itws[p + j]; - var ro = rtws[p + j + s]; - var io = itws[p + j + s]; - var rx = rtwdf_ * ro - itwdf_ * io; - io = rtwdf_ * io + itwdf_ * ro; - ro = rx; - rtws[p + j] = re + ro; - itws[p + j] = ie + io; - rtws[p + j + s] = re - ro; - itws[p + j + s] = ie - io; - /* jshint maxdepth : false */ - - if (j !== l) { - rx = rtwdf * rtwdf_ - itwdf * itwdf_; - itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_; - rtwdf_ = rx; - } - } - } - } - }; - - FFTM.prototype.guessLen13b = function guessLen13b(n, m) { - var N = Math.max(m, n) | 1; - var odd = N & 1; - var i = 0; - - for (N = N / 2 | 0; N; N = N >>> 1) { - i++; - } - - return 1 << i + 1 + odd; - }; - - FFTM.prototype.conjugate = function conjugate(rws, iws, N) { - if (N <= 1) return; - - for (var i = 0; i < N / 2; i++) { - var t = rws[i]; - rws[i] = rws[N - i - 1]; - rws[N - i - 1] = t; - t = iws[i]; - iws[i] = -iws[N - i - 1]; - iws[N - i - 1] = -t; - } - }; - - FFTM.prototype.normalize13b = function normalize13b(ws, N) { - var carry = 0; - - for (var i = 0; i < N / 2; i++) { - var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + Math.round(ws[2 * i] / N) + carry; - ws[i] = w & 0x3ffffff; - - if (w < 0x4000000) { - carry = 0; - } else { - carry = w / 0x4000000 | 0; - } - } - - return ws; - }; - - FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) { - var carry = 0; - - for (var i = 0; i < len; i++) { - carry = carry + (ws[i] | 0); - rws[2 * i] = carry & 0x1fff; - carry = carry >>> 13; - rws[2 * i + 1] = carry & 0x1fff; - carry = carry >>> 13; - } // Pad with zeroes - - - for (i = 2 * len; i < N; ++i) { - rws[i] = 0; - } - - assert(carry === 0); - assert((carry & ~0x1fff) === 0); - }; - - FFTM.prototype.stub = function stub(N) { - var ph = new Array(N); - - for (var i = 0; i < N; i++) { - ph[i] = 0; - } - - return ph; - }; - - FFTM.prototype.mulp = function mulp(x, y, out) { - var N = 2 * this.guessLen13b(x.length, y.length); - var rbt = this.makeRBT(N); - - var _ = this.stub(N); - - var rws = new Array(N); - var rwst = new Array(N); - var iwst = new Array(N); - var nrws = new Array(N); - var nrwst = new Array(N); - var niwst = new Array(N); - var rmws = out.words; - rmws.length = N; - this.convert13b(x.words, x.length, rws, N); - this.convert13b(y.words, y.length, nrws, N); - this.transform(rws, _, rwst, iwst, N, rbt); - this.transform(nrws, _, nrwst, niwst, N, rbt); - - for (var i = 0; i < N; i++) { - var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i]; - iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i]; - rwst[i] = rx; - } - - this.conjugate(rwst, iwst, N); - this.transform(rwst, iwst, rmws, _, N, rbt); - this.conjugate(rmws, _, N); - this.normalize13b(rmws, N); - out.negative = x.negative ^ y.negative; - out.length = x.length + y.length; - return out._strip(); - }; // Multiply `this` by `num` - - - BN.prototype.mul = function mul(num) { - var out = new BN(null); - out.words = new Array(this.length + num.length); - return this.mulTo(num, out); - }; // Multiply employing FFT - - - BN.prototype.mulf = function mulf(num) { - var out = new BN(null); - out.words = new Array(this.length + num.length); - return jumboMulTo(this, num, out); - }; // In-place Multiplication - - - BN.prototype.imul = function imul(num) { - return this.clone().mulTo(num, this); - }; - - BN.prototype.imuln = function imuln(num) { - var isNegNum = num < 0; - if (isNegNum) num = -num; - assert(typeof num === 'number'); - assert(num < 0x4000000); // Carry - - var carry = 0; - - for (var i = 0; i < this.length; i++) { - var w = (this.words[i] | 0) * num; - var lo = (w & 0x3ffffff) + (carry & 0x3ffffff); - carry >>= 26; - carry += w / 0x4000000 | 0; // NOTE: lo is 27bit maximum - - carry += lo >>> 26; - this.words[i] = lo & 0x3ffffff; - } - - if (carry !== 0) { - this.words[i] = carry; - this.length++; - } - - return isNegNum ? this.ineg() : this; - }; - - BN.prototype.muln = function muln(num) { - return this.clone().imuln(num); - }; // `this` * `this` - - - BN.prototype.sqr = function sqr() { - return this.mul(this); - }; // `this` * `this` in-place - - - BN.prototype.isqr = function isqr() { - return this.imul(this.clone()); - }; // Math.pow(`this`, `num`) - - - BN.prototype.pow = function pow(num) { - var w = toBitArray(num); - if (w.length === 0) return new BN(1); // Skip leading zeroes - - var res = this; - - for (var i = 0; i < w.length; i++, res = res.sqr()) { - if (w[i] !== 0) break; - } - - if (++i < w.length) { - for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) { - if (w[i] === 0) continue; - res = res.mul(q); - } - } - - return res; - }; // Shift-left in-place - - - BN.prototype.iushln = function iushln(bits) { - assert(typeof bits === 'number' && bits >= 0); - var r = bits % 26; - var s = (bits - r) / 26; - var carryMask = 0x3ffffff >>> 26 - r << 26 - r; - var i; - - if (r !== 0) { - var carry = 0; - - for (i = 0; i < this.length; i++) { - var newCarry = this.words[i] & carryMask; - var c = (this.words[i] | 0) - newCarry << r; - this.words[i] = c | carry; - carry = newCarry >>> 26 - r; - } - - if (carry) { - this.words[i] = carry; - this.length++; - } - } - - if (s !== 0) { - for (i = this.length - 1; i >= 0; i--) { - this.words[i + s] = this.words[i]; - } - - for (i = 0; i < s; i++) { - this.words[i] = 0; - } - - this.length += s; - } - - return this._strip(); - }; - - BN.prototype.ishln = function ishln(bits) { - // TODO(indutny): implement me - assert(this.negative === 0); - return this.iushln(bits); - }; // Shift-right in-place - // NOTE: `hint` is a lowest bit before trailing zeroes - // NOTE: if `extended` is present - it will be filled with destroyed bits - - - BN.prototype.iushrn = function iushrn(bits, hint, extended) { - assert(typeof bits === 'number' && bits >= 0); - var h; - - if (hint) { - h = (hint - hint % 26) / 26; - } else { - h = 0; - } - - var r = bits % 26; - var s = Math.min((bits - r) / 26, this.length); - var mask = 0x3ffffff ^ 0x3ffffff >>> r << r; - var maskedWords = extended; - h -= s; - h = Math.max(0, h); // Extended mode, copy masked part - - if (maskedWords) { - for (var i = 0; i < s; i++) { - maskedWords.words[i] = this.words[i]; - } - - maskedWords.length = s; - } - - if (s === 0) {// No-op, we should not move anything at all - } else if (this.length > s) { - this.length -= s; - - for (i = 0; i < this.length; i++) { - this.words[i] = this.words[i + s]; - } - } else { - this.words[0] = 0; - this.length = 1; - } - - var carry = 0; - - for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) { - var word = this.words[i] | 0; - this.words[i] = carry << 26 - r | word >>> r; - carry = word & mask; - } // Push carried bits as a mask - - - if (maskedWords && carry !== 0) { - maskedWords.words[maskedWords.length++] = carry; - } - - if (this.length === 0) { - this.words[0] = 0; - this.length = 1; - } - - return this._strip(); - }; - - BN.prototype.ishrn = function ishrn(bits, hint, extended) { - // TODO(indutny): implement me - assert(this.negative === 0); - return this.iushrn(bits, hint, extended); - }; // Shift-left - - - BN.prototype.shln = function shln(bits) { - return this.clone().ishln(bits); - }; - - BN.prototype.ushln = function ushln(bits) { - return this.clone().iushln(bits); - }; // Shift-right - - - BN.prototype.shrn = function shrn(bits) { - return this.clone().ishrn(bits); - }; - - BN.prototype.ushrn = function ushrn(bits) { - return this.clone().iushrn(bits); - }; // Test if n bit is set - - - BN.prototype.testn = function testn(bit) { - assert(typeof bit === 'number' && bit >= 0); - var r = bit % 26; - var s = (bit - r) / 26; - var q = 1 << r; // Fast case: bit is much higher than all existing words - - if (this.length <= s) return false; // Check bit and return - - var w = this.words[s]; - return !!(w & q); - }; // Return only lowers bits of number (in-place) - - - BN.prototype.imaskn = function imaskn(bits) { - assert(typeof bits === 'number' && bits >= 0); - var r = bits % 26; - var s = (bits - r) / 26; - assert(this.negative === 0, 'imaskn works only with positive numbers'); - - if (this.length <= s) { - return this; - } - - if (r !== 0) { - s++; - } - - this.length = Math.min(s, this.length); - - if (r !== 0) { - var mask = 0x3ffffff ^ 0x3ffffff >>> r << r; - this.words[this.length - 1] &= mask; - } - - return this._strip(); - }; // Return only lowers bits of number - - - BN.prototype.maskn = function maskn(bits) { - return this.clone().imaskn(bits); - }; // Add plain number `num` to `this` - - - BN.prototype.iaddn = function iaddn(num) { - assert(typeof num === 'number'); - assert(num < 0x4000000); - if (num < 0) return this.isubn(-num); // Possible sign change - - if (this.negative !== 0) { - if (this.length === 1 && (this.words[0] | 0) <= num) { - this.words[0] = num - (this.words[0] | 0); - this.negative = 0; - return this; - } - - this.negative = 0; - this.isubn(num); - this.negative = 1; - return this; - } // Add without checks - - - return this._iaddn(num); - }; - - BN.prototype._iaddn = function _iaddn(num) { - this.words[0] += num; // Carry - - for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) { - this.words[i] -= 0x4000000; - - if (i === this.length - 1) { - this.words[i + 1] = 1; - } else { - this.words[i + 1]++; - } - } - - this.length = Math.max(this.length, i + 1); - return this; - }; // Subtract plain number `num` from `this` - - - BN.prototype.isubn = function isubn(num) { - assert(typeof num === 'number'); - assert(num < 0x4000000); - if (num < 0) return this.iaddn(-num); - - if (this.negative !== 0) { - this.negative = 0; - this.iaddn(num); - this.negative = 1; - return this; - } - - this.words[0] -= num; - - if (this.length === 1 && this.words[0] < 0) { - this.words[0] = -this.words[0]; - this.negative = 1; - } else { - // Carry - for (var i = 0; i < this.length && this.words[i] < 0; i++) { - this.words[i] += 0x4000000; - this.words[i + 1] -= 1; - } - } - - return this._strip(); - }; - - BN.prototype.addn = function addn(num) { - return this.clone().iaddn(num); - }; - - BN.prototype.subn = function subn(num) { - return this.clone().isubn(num); - }; - - BN.prototype.iabs = function iabs() { - this.negative = 0; - return this; - }; - - BN.prototype.abs = function abs() { - return this.clone().iabs(); - }; - - BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) { - var len = num.length + shift; - var i; - - this._expand(len); - - var w; - var carry = 0; - - for (i = 0; i < num.length; i++) { - w = (this.words[i + shift] | 0) + carry; - var right = (num.words[i] | 0) * mul; - w -= right & 0x3ffffff; - carry = (w >> 26) - (right / 0x4000000 | 0); - this.words[i + shift] = w & 0x3ffffff; - } - - for (; i < this.length - shift; i++) { - w = (this.words[i + shift] | 0) + carry; - carry = w >> 26; - this.words[i + shift] = w & 0x3ffffff; - } - - if (carry === 0) return this._strip(); // Subtraction overflow - - assert(carry === -1); - carry = 0; - - for (i = 0; i < this.length; i++) { - w = -(this.words[i] | 0) + carry; - carry = w >> 26; - this.words[i] = w & 0x3ffffff; - } - - this.negative = 1; - return this._strip(); - }; - - BN.prototype._wordDiv = function _wordDiv(num, mode) { - var shift = this.length - num.length; - var a = this.clone(); - var b = num; // Normalize - - var bhi = b.words[b.length - 1] | 0; - - var bhiBits = this._countBits(bhi); - - shift = 26 - bhiBits; - - if (shift !== 0) { - b = b.ushln(shift); - a.iushln(shift); - bhi = b.words[b.length - 1] | 0; - } // Initialize quotient - - - var m = a.length - b.length; - var q; - - if (mode !== 'mod') { - q = new BN(null); - q.length = m + 1; - q.words = new Array(q.length); - - for (var i = 0; i < q.length; i++) { - q.words[i] = 0; - } - } - - var diff = a.clone()._ishlnsubmul(b, 1, m); - - if (diff.negative === 0) { - a = diff; - - if (q) { - q.words[m] = 1; - } - } - - for (var j = m - 1; j >= 0; j--) { - var qj = (a.words[b.length + j] | 0) * 0x4000000 + (a.words[b.length + j - 1] | 0); // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max - // (0x7ffffff) - - qj = Math.min(qj / bhi | 0, 0x3ffffff); - - a._ishlnsubmul(b, qj, j); - - while (a.negative !== 0) { - qj--; - a.negative = 0; - - a._ishlnsubmul(b, 1, j); - - if (!a.isZero()) { - a.negative ^= 1; - } - } - - if (q) { - q.words[j] = qj; - } - } - - if (q) { - q._strip(); - } - - a._strip(); // Denormalize - - - if (mode !== 'div' && shift !== 0) { - a.iushrn(shift); - } - - return { - div: q || null, - mod: a - }; - }; // NOTE: 1) `mode` can be set to `mod` to request mod only, - // to `div` to request div only, or be absent to - // request both div & mod - // 2) `positive` is true if unsigned mod is requested - - - BN.prototype.divmod = function divmod(num, mode, positive) { - assert(!num.isZero()); - - if (this.isZero()) { - return { - div: new BN(0), - mod: new BN(0) - }; - } - - var div, mod, res; - - if (this.negative !== 0 && num.negative === 0) { - res = this.neg().divmod(num, mode); - - if (mode !== 'mod') { - div = res.div.neg(); - } - - if (mode !== 'div') { - mod = res.mod.neg(); - - if (positive && mod.negative !== 0) { - mod.iadd(num); - } - } - - return { - div: div, - mod: mod - }; - } - - if (this.negative === 0 && num.negative !== 0) { - res = this.divmod(num.neg(), mode); - - if (mode !== 'mod') { - div = res.div.neg(); - } - - return { - div: div, - mod: res.mod - }; - } - - if ((this.negative & num.negative) !== 0) { - res = this.neg().divmod(num.neg(), mode); - - if (mode !== 'div') { - mod = res.mod.neg(); - - if (positive && mod.negative !== 0) { - mod.isub(num); - } - } - - return { - div: res.div, - mod: mod - }; - } // Both numbers are positive at this point - // Strip both numbers to approximate shift value - - - if (num.length > this.length || this.cmp(num) < 0) { - return { - div: new BN(0), - mod: this - }; - } // Very short reduction - - - if (num.length === 1) { - if (mode === 'div') { - return { - div: this.divn(num.words[0]), - mod: null - }; - } - - if (mode === 'mod') { - return { - div: null, - mod: new BN(this.modrn(num.words[0])) - }; - } - - return { - div: this.divn(num.words[0]), - mod: new BN(this.modrn(num.words[0])) - }; - } - - return this._wordDiv(num, mode); - }; // Find `this` / `num` - - - BN.prototype.div = function div(num) { - return this.divmod(num, 'div', false).div; - }; // Find `this` % `num` - - - BN.prototype.mod = function mod(num) { - return this.divmod(num, 'mod', false).mod; - }; - - BN.prototype.umod = function umod(num) { - return this.divmod(num, 'mod', true).mod; - }; // Find Round(`this` / `num`) - - - BN.prototype.divRound = function divRound(num) { - var dm = this.divmod(num); // Fast case - exact division - - if (dm.mod.isZero()) return dm.div; - var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod; - var half = num.ushrn(1); - var r2 = num.andln(1); - var cmp = mod.cmp(half); // Round down - - if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; // Round up - - return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1); - }; - - BN.prototype.modrn = function modrn(num) { - var isNegNum = num < 0; - if (isNegNum) num = -num; - assert(num <= 0x3ffffff); - var p = (1 << 26) % num; - var acc = 0; - - for (var i = this.length - 1; i >= 0; i--) { - acc = (p * acc + (this.words[i] | 0)) % num; - } - - return isNegNum ? -acc : acc; - }; // WARNING: DEPRECATED - - - BN.prototype.modn = function modn(num) { - return this.modrn(num); - }; // In-place division by number - - - BN.prototype.idivn = function idivn(num) { - var isNegNum = num < 0; - if (isNegNum) num = -num; - assert(num <= 0x3ffffff); - var carry = 0; - - for (var i = this.length - 1; i >= 0; i--) { - var w = (this.words[i] | 0) + carry * 0x4000000; - this.words[i] = w / num | 0; - carry = w % num; - } - - this._strip(); - - return isNegNum ? this.ineg() : this; - }; - - BN.prototype.divn = function divn(num) { - return this.clone().idivn(num); - }; - - BN.prototype.egcd = function egcd(p) { - assert(p.negative === 0); - assert(!p.isZero()); - var x = this; - var y = p.clone(); - - if (x.negative !== 0) { - x = x.umod(p); - } else { - x = x.clone(); - } // A * x + B * y = x - - - var A = new BN(1); - var B = new BN(0); // C * x + D * y = y - - var C = new BN(0); - var D = new BN(1); - var g = 0; - - while (x.isEven() && y.isEven()) { - x.iushrn(1); - y.iushrn(1); - ++g; - } - - var yp = y.clone(); - var xp = x.clone(); - - while (!x.isZero()) { - for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1) { - ; - } - - if (i > 0) { - x.iushrn(i); - - while (i-- > 0) { - if (A.isOdd() || B.isOdd()) { - A.iadd(yp); - B.isub(xp); - } - - A.iushrn(1); - B.iushrn(1); - } - } - - for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) { - ; - } - - if (j > 0) { - y.iushrn(j); - - while (j-- > 0) { - if (C.isOdd() || D.isOdd()) { - C.iadd(yp); - D.isub(xp); - } - - C.iushrn(1); - D.iushrn(1); - } - } - - if (x.cmp(y) >= 0) { - x.isub(y); - A.isub(C); - B.isub(D); - } else { - y.isub(x); - C.isub(A); - D.isub(B); - } - } - - return { - a: C, - b: D, - gcd: y.iushln(g) - }; - }; // This is reduced incarnation of the binary EEA - // above, designated to invert members of the - // _prime_ fields F(p) at a maximal speed - - - BN.prototype._invmp = function _invmp(p) { - assert(p.negative === 0); - assert(!p.isZero()); - var a = this; - var b = p.clone(); - - if (a.negative !== 0) { - a = a.umod(p); - } else { - a = a.clone(); - } - - var x1 = new BN(1); - var x2 = new BN(0); - var delta = b.clone(); - - while (a.cmpn(1) > 0 && b.cmpn(1) > 0) { - for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1) { - ; - } - - if (i > 0) { - a.iushrn(i); - - while (i-- > 0) { - if (x1.isOdd()) { - x1.iadd(delta); - } - - x1.iushrn(1); - } - } - - for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) { - ; - } - - if (j > 0) { - b.iushrn(j); - - while (j-- > 0) { - if (x2.isOdd()) { - x2.iadd(delta); - } - - x2.iushrn(1); - } - } - - if (a.cmp(b) >= 0) { - a.isub(b); - x1.isub(x2); - } else { - b.isub(a); - x2.isub(x1); - } - } - - var res; - - if (a.cmpn(1) === 0) { - res = x1; - } else { - res = x2; - } - - if (res.cmpn(0) < 0) { - res.iadd(p); - } - - return res; - }; - - BN.prototype.gcd = function gcd(num) { - if (this.isZero()) return num.abs(); - if (num.isZero()) return this.abs(); - var a = this.clone(); - var b = num.clone(); - a.negative = 0; - b.negative = 0; // Remove common factor of two - - for (var shift = 0; a.isEven() && b.isEven(); shift++) { - a.iushrn(1); - b.iushrn(1); - } - - do { - while (a.isEven()) { - a.iushrn(1); - } - - while (b.isEven()) { - b.iushrn(1); - } - - var r = a.cmp(b); - - if (r < 0) { - // Swap `a` and `b` to make `a` always bigger than `b` - var t = a; - a = b; - b = t; - } else if (r === 0 || b.cmpn(1) === 0) { - break; - } - - a.isub(b); - } while (true); - - return b.iushln(shift); - }; // Invert number in the field F(num) - - - BN.prototype.invm = function invm(num) { - return this.egcd(num).a.umod(num); - }; - - BN.prototype.isEven = function isEven() { - return (this.words[0] & 1) === 0; - }; - - BN.prototype.isOdd = function isOdd() { - return (this.words[0] & 1) === 1; - }; // And first word and num - - - BN.prototype.andln = function andln(num) { - return this.words[0] & num; - }; // Increment at the bit position in-line - - - BN.prototype.bincn = function bincn(bit) { - assert(typeof bit === 'number'); - var r = bit % 26; - var s = (bit - r) / 26; - var q = 1 << r; // Fast case: bit is much higher than all existing words - - if (this.length <= s) { - this._expand(s + 1); - - this.words[s] |= q; - return this; - } // Add bit and propagate, if needed - - - var carry = q; - - for (var i = s; carry !== 0 && i < this.length; i++) { - var w = this.words[i] | 0; - w += carry; - carry = w >>> 26; - w &= 0x3ffffff; - this.words[i] = w; - } - - if (carry !== 0) { - this.words[i] = carry; - this.length++; - } - - return this; - }; - - BN.prototype.isZero = function isZero() { - return this.length === 1 && this.words[0] === 0; - }; - - BN.prototype.cmpn = function cmpn(num) { - var negative = num < 0; - if (this.negative !== 0 && !negative) return -1; - if (this.negative === 0 && negative) return 1; - - this._strip(); - - var res; - - if (this.length > 1) { - res = 1; - } else { - if (negative) { - num = -num; - } - - assert(num <= 0x3ffffff, 'Number is too big'); - var w = this.words[0] | 0; - res = w === num ? 0 : w < num ? -1 : 1; - } - - if (this.negative !== 0) return -res | 0; - return res; - }; // Compare two numbers and return: - // 1 - if `this` > `num` - // 0 - if `this` == `num` - // -1 - if `this` < `num` - - - BN.prototype.cmp = function cmp(num) { - if (this.negative !== 0 && num.negative === 0) return -1; - if (this.negative === 0 && num.negative !== 0) return 1; - var res = this.ucmp(num); - if (this.negative !== 0) return -res | 0; - return res; - }; // Unsigned comparison - - - BN.prototype.ucmp = function ucmp(num) { - // At this point both numbers have the same sign - if (this.length > num.length) return 1; - if (this.length < num.length) return -1; - var res = 0; - - for (var i = this.length - 1; i >= 0; i--) { - var a = this.words[i] | 0; - var b = num.words[i] | 0; - if (a === b) continue; - - if (a < b) { - res = -1; - } else if (a > b) { - res = 1; - } - - break; - } - - return res; - }; - - BN.prototype.gtn = function gtn(num) { - return this.cmpn(num) === 1; - }; - - BN.prototype.gt = function gt(num) { - return this.cmp(num) === 1; - }; - - BN.prototype.gten = function gten(num) { - return this.cmpn(num) >= 0; - }; - - BN.prototype.gte = function gte(num) { - return this.cmp(num) >= 0; - }; - - BN.prototype.ltn = function ltn(num) { - return this.cmpn(num) === -1; - }; - - BN.prototype.lt = function lt(num) { - return this.cmp(num) === -1; - }; - - BN.prototype.lten = function lten(num) { - return this.cmpn(num) <= 0; - }; - - BN.prototype.lte = function lte(num) { - return this.cmp(num) <= 0; - }; - - BN.prototype.eqn = function eqn(num) { - return this.cmpn(num) === 0; - }; - - BN.prototype.eq = function eq(num) { - return this.cmp(num) === 0; - }; // - // A reduce context, could be using montgomery or something better, depending - // on the `m` itself. - // - - - BN.red = function red(num) { - return new Red(num); - }; - - BN.prototype.toRed = function toRed(ctx) { - assert(!this.red, 'Already a number in reduction context'); - assert(this.negative === 0, 'red works only with positives'); - return ctx.convertTo(this)._forceRed(ctx); - }; - - BN.prototype.fromRed = function fromRed() { - assert(this.red, 'fromRed works only with numbers in reduction context'); - return this.red.convertFrom(this); - }; - - BN.prototype._forceRed = function _forceRed(ctx) { - this.red = ctx; - return this; - }; - - BN.prototype.forceRed = function forceRed(ctx) { - assert(!this.red, 'Already a number in reduction context'); - return this._forceRed(ctx); - }; - - BN.prototype.redAdd = function redAdd(num) { - assert(this.red, 'redAdd works only with red numbers'); - return this.red.add(this, num); - }; - - BN.prototype.redIAdd = function redIAdd(num) { - assert(this.red, 'redIAdd works only with red numbers'); - return this.red.iadd(this, num); - }; - - BN.prototype.redSub = function redSub(num) { - assert(this.red, 'redSub works only with red numbers'); - return this.red.sub(this, num); - }; - - BN.prototype.redISub = function redISub(num) { - assert(this.red, 'redISub works only with red numbers'); - return this.red.isub(this, num); - }; - - BN.prototype.redShl = function redShl(num) { - assert(this.red, 'redShl works only with red numbers'); - return this.red.shl(this, num); - }; - - BN.prototype.redMul = function redMul(num) { - assert(this.red, 'redMul works only with red numbers'); - - this.red._verify2(this, num); - - return this.red.mul(this, num); - }; - - BN.prototype.redIMul = function redIMul(num) { - assert(this.red, 'redMul works only with red numbers'); - - this.red._verify2(this, num); - - return this.red.imul(this, num); - }; - - BN.prototype.redSqr = function redSqr() { - assert(this.red, 'redSqr works only with red numbers'); - - this.red._verify1(this); - - return this.red.sqr(this); - }; - - BN.prototype.redISqr = function redISqr() { - assert(this.red, 'redISqr works only with red numbers'); - - this.red._verify1(this); - - return this.red.isqr(this); - }; // Square root over p - - - BN.prototype.redSqrt = function redSqrt() { - assert(this.red, 'redSqrt works only with red numbers'); - - this.red._verify1(this); - - return this.red.sqrt(this); - }; - - BN.prototype.redInvm = function redInvm() { - assert(this.red, 'redInvm works only with red numbers'); - - this.red._verify1(this); - - return this.red.invm(this); - }; // Return negative clone of `this` % `red modulo` - - - BN.prototype.redNeg = function redNeg() { - assert(this.red, 'redNeg works only with red numbers'); - - this.red._verify1(this); - - return this.red.neg(this); - }; - - BN.prototype.redPow = function redPow(num) { - assert(this.red && !num.red, 'redPow(normalNum)'); - - this.red._verify1(this); - - return this.red.pow(this, num); - }; // Prime numbers with efficient reduction - - - var primes = { - k256: null, - p224: null, - p192: null, - p25519: null - }; // Pseudo-Mersenne prime - - function MPrime(name, p) { - // P = 2 ^ N - K - this.name = name; - this.p = new BN(p, 16); - this.n = this.p.bitLength(); - this.k = new BN(1).iushln(this.n).isub(this.p); - this.tmp = this._tmp(); - } - - MPrime.prototype._tmp = function _tmp() { - var tmp = new BN(null); - tmp.words = new Array(Math.ceil(this.n / 13)); - return tmp; - }; - - MPrime.prototype.ireduce = function ireduce(num) { - // Assumes that `num` is less than `P^2` - // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P) - var r = num; - var rlen; - - do { - this.split(r, this.tmp); - r = this.imulK(r); - r = r.iadd(this.tmp); - rlen = r.bitLength(); - } while (rlen > this.n); - - var cmp = rlen < this.n ? -1 : r.ucmp(this.p); - - if (cmp === 0) { - r.words[0] = 0; - r.length = 1; - } else if (cmp > 0) { - r.isub(this.p); - } else { - if (r.strip !== undefined) { - // r is a BN v4 instance - r.strip(); - } else { - // r is a BN v5 instance - r._strip(); - } - } - - return r; - }; - - MPrime.prototype.split = function split(input, out) { - input.iushrn(this.n, 0, out); - }; - - MPrime.prototype.imulK = function imulK(num) { - return num.imul(this.k); - }; - - function K256() { - MPrime.call(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f'); - } - - inherits(K256, MPrime); - - K256.prototype.split = function split(input, output) { - // 256 = 9 * 26 + 22 - var mask = 0x3fffff; - var outLen = Math.min(input.length, 9); - - for (var i = 0; i < outLen; i++) { - output.words[i] = input.words[i]; - } - - output.length = outLen; - - if (input.length <= 9) { - input.words[0] = 0; - input.length = 1; - return; - } // Shift by 9 limbs - - - var prev = input.words[9]; - output.words[output.length++] = prev & mask; - - for (i = 10; i < input.length; i++) { - var next = input.words[i] | 0; - input.words[i - 10] = (next & mask) << 4 | prev >>> 22; - prev = next; - } - - prev >>>= 22; - input.words[i - 10] = prev; - - if (prev === 0 && input.length > 10) { - input.length -= 10; - } else { - input.length -= 9; - } - }; - - K256.prototype.imulK = function imulK(num) { - // K = 0x1000003d1 = [ 0x40, 0x3d1 ] - num.words[num.length] = 0; - num.words[num.length + 1] = 0; - num.length += 2; // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390 - - var lo = 0; - - for (var i = 0; i < num.length; i++) { - var w = num.words[i] | 0; - lo += w * 0x3d1; - num.words[i] = lo & 0x3ffffff; - lo = w * 0x40 + (lo / 0x4000000 | 0); - } // Fast length reduction - - - if (num.words[num.length - 1] === 0) { - num.length--; - - if (num.words[num.length - 1] === 0) { - num.length--; - } - } - - return num; - }; - - function P224() { - MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001'); - } - - inherits(P224, MPrime); - - function P192() { - MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff'); - } - - inherits(P192, MPrime); - - function P25519() { - // 2 ^ 255 - 19 - MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed'); - } - - inherits(P25519, MPrime); - - P25519.prototype.imulK = function imulK(num) { - // K = 0x13 - var carry = 0; - - for (var i = 0; i < num.length; i++) { - var hi = (num.words[i] | 0) * 0x13 + carry; - var lo = hi & 0x3ffffff; - hi >>>= 26; - num.words[i] = lo; - carry = hi; - } - - if (carry !== 0) { - num.words[num.length++] = carry; - } - - return num; - }; // Exported mostly for testing purposes, use plain name instead - - - BN._prime = function prime(name) { - // Cached version of prime - if (primes[name]) return primes[name]; - var prime; - - if (name === 'k256') { - prime = new K256(); - } else if (name === 'p224') { - prime = new P224(); - } else if (name === 'p192') { - prime = new P192(); - } else if (name === 'p25519') { - prime = new P25519(); - } else { - throw new Error('Unknown prime ' + name); - } - - primes[name] = prime; - return prime; - }; // - // Base reduction engine - // - - - function Red(m) { - if (typeof m === 'string') { - var prime = BN._prime(m); - - this.m = prime.p; - this.prime = prime; - } else { - assert(m.gtn(1), 'modulus must be greater than 1'); - this.m = m; - this.prime = null; - } - } - - Red.prototype._verify1 = function _verify1(a) { - assert(a.negative === 0, 'red works only with positives'); - assert(a.red, 'red works only with red numbers'); - }; - - Red.prototype._verify2 = function _verify2(a, b) { - assert((a.negative | b.negative) === 0, 'red works only with positives'); - assert(a.red && a.red === b.red, 'red works only with red numbers'); - }; - - Red.prototype.imod = function imod(a) { - if (this.prime) return this.prime.ireduce(a)._forceRed(this); - move(a, a.umod(this.m)._forceRed(this)); - return a; - }; - - Red.prototype.neg = function neg(a) { - if (a.isZero()) { - return a.clone(); - } - - return this.m.sub(a)._forceRed(this); - }; - - Red.prototype.add = function add(a, b) { - this._verify2(a, b); - - var res = a.add(b); - - if (res.cmp(this.m) >= 0) { - res.isub(this.m); - } - - return res._forceRed(this); - }; - - Red.prototype.iadd = function iadd(a, b) { - this._verify2(a, b); - - var res = a.iadd(b); - - if (res.cmp(this.m) >= 0) { - res.isub(this.m); - } - - return res; - }; - - Red.prototype.sub = function sub(a, b) { - this._verify2(a, b); - - var res = a.sub(b); - - if (res.cmpn(0) < 0) { - res.iadd(this.m); - } - - return res._forceRed(this); - }; - - Red.prototype.isub = function isub(a, b) { - this._verify2(a, b); - - var res = a.isub(b); - - if (res.cmpn(0) < 0) { - res.iadd(this.m); - } - - return res; - }; - - Red.prototype.shl = function shl(a, num) { - this._verify1(a); - - return this.imod(a.ushln(num)); - }; - - Red.prototype.imul = function imul(a, b) { - this._verify2(a, b); - - return this.imod(a.imul(b)); - }; - - Red.prototype.mul = function mul(a, b) { - this._verify2(a, b); - - return this.imod(a.mul(b)); - }; - - Red.prototype.isqr = function isqr(a) { - return this.imul(a, a.clone()); - }; - - Red.prototype.sqr = function sqr(a) { - return this.mul(a, a); - }; - - Red.prototype.sqrt = function sqrt(a) { - if (a.isZero()) return a.clone(); - var mod3 = this.m.andln(3); - assert(mod3 % 2 === 1); // Fast case - - if (mod3 === 3) { - var pow = this.m.add(new BN(1)).iushrn(2); - return this.pow(a, pow); - } // Tonelli-Shanks algorithm (Totally unoptimized and slow) - // - // Find Q and S, that Q * 2 ^ S = (P - 1) - - - var q = this.m.subn(1); - var s = 0; - - while (!q.isZero() && q.andln(1) === 0) { - s++; - q.iushrn(1); - } - - assert(!q.isZero()); - var one = new BN(1).toRed(this); - var nOne = one.redNeg(); // Find quadratic non-residue - // NOTE: Max is such because of generalized Riemann hypothesis. - - var lpow = this.m.subn(1).iushrn(1); - var z = this.m.bitLength(); - z = new BN(2 * z * z).toRed(this); - - while (this.pow(z, lpow).cmp(nOne) !== 0) { - z.redIAdd(nOne); - } - - var c = this.pow(z, q); - var r = this.pow(a, q.addn(1).iushrn(1)); - var t = this.pow(a, q); - var m = s; - - while (t.cmp(one) !== 0) { - var tmp = t; - - for (var i = 0; tmp.cmp(one) !== 0; i++) { - tmp = tmp.redSqr(); - } - - assert(i < m); - var b = this.pow(c, new BN(1).iushln(m - i - 1)); - r = r.redMul(b); - c = b.redSqr(); - t = t.redMul(c); - m = i; - } - - return r; - }; - - Red.prototype.invm = function invm(a) { - var inv = a._invmp(this.m); - - if (inv.negative !== 0) { - inv.negative = 0; - return this.imod(inv).redNeg(); - } else { - return this.imod(inv); - } - }; - - Red.prototype.pow = function pow(a, num) { - if (num.isZero()) return new BN(1).toRed(this); - if (num.cmpn(1) === 0) return a.clone(); - var windowSize = 4; - var wnd = new Array(1 << windowSize); - wnd[0] = new BN(1).toRed(this); - wnd[1] = a; - - for (var i = 2; i < wnd.length; i++) { - wnd[i] = this.mul(wnd[i - 1], a); - } - - var res = wnd[0]; - var current = 0; - var currentLen = 0; - var start = num.bitLength() % 26; - - if (start === 0) { - start = 26; - } - - for (i = num.length - 1; i >= 0; i--) { - var word = num.words[i]; - - for (var j = start - 1; j >= 0; j--) { - var bit = word >> j & 1; - - if (res !== wnd[0]) { - res = this.sqr(res); - } - - if (bit === 0 && current === 0) { - currentLen = 0; - continue; - } - - current <<= 1; - current |= bit; - currentLen++; - if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue; - res = this.mul(res, wnd[current]); - currentLen = 0; - current = 0; - } - - start = 26; - } - - return res; - }; - - Red.prototype.convertTo = function convertTo(num) { - var r = num.umod(this.m); - return r === num ? r.clone() : r; - }; - - Red.prototype.convertFrom = function convertFrom(num) { - var res = num.clone(); - res.red = null; - return res; - }; // - // Montgomery method engine - // - - - BN.mont = function mont(num) { - return new Mont(num); - }; - - function Mont(m) { - Red.call(this, m); - this.shift = this.m.bitLength(); - - if (this.shift % 26 !== 0) { - this.shift += 26 - this.shift % 26; - } - - this.r = new BN(1).iushln(this.shift); - this.r2 = this.imod(this.r.sqr()); - this.rinv = this.r._invmp(this.m); - this.minv = this.rinv.mul(this.r).isubn(1).div(this.m); - this.minv = this.minv.umod(this.r); - this.minv = this.r.sub(this.minv); - } - - inherits(Mont, Red); - - Mont.prototype.convertTo = function convertTo(num) { - return this.imod(num.ushln(this.shift)); - }; - - Mont.prototype.convertFrom = function convertFrom(num) { - var r = this.imod(num.mul(this.rinv)); - r.red = null; - return r; - }; - - Mont.prototype.imul = function imul(a, b) { - if (a.isZero() || b.isZero()) { - a.words[0] = 0; - a.length = 1; - return a; - } - - var t = a.imul(b); - var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m); - var u = t.isub(c).iushrn(this.shift); - var res = u; - - if (u.cmp(this.m) >= 0) { - res = u.isub(this.m); - } else if (u.cmpn(0) < 0) { - res = u.iadd(this.m); - } - - return res._forceRed(this); - }; - - Mont.prototype.mul = function mul(a, b) { - if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this); - var t = a.mul(b); - var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m); - var u = t.isub(c).iushrn(this.shift); - var res = u; - - if (u.cmp(this.m) >= 0) { - res = u.isub(this.m); - } else if (u.cmpn(0) < 0) { - res = u.iadd(this.m); - } - - return res._forceRed(this); - }; - - Mont.prototype.invm = function invm(a) { - // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R - var res = this.imod(a._invmp(this.m).mul(this.r2)); - return res._forceRed(this); - }; -})( false || module, this); - -/***/ }), - -/***/ 7179: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var r; - -module.exports = function rand(len) { - if (!r) r = new Rand(null); - return r.generate(len); -}; - -function Rand(rand) { - this.rand = rand; -} - -module.exports.Rand = Rand; - -Rand.prototype.generate = function generate(len) { - return this._rand(len); -}; // Emulate crypto API using randy - - -Rand.prototype._rand = function _rand(n) { - if (this.rand.getBytes) return this.rand.getBytes(n); - var res = new Uint8Array(n); - - for (var i = 0; i < res.length; i++) { - res[i] = this.rand.getByte(); - } - - return res; -}; - -if ((typeof self === "undefined" ? "undefined" : _typeof(self)) === 'object') { - if (self.crypto && self.crypto.getRandomValues) { - // Modern browsers - Rand.prototype._rand = function _rand(n) { - var arr = new Uint8Array(n); - self.crypto.getRandomValues(arr); - return arr; - }; - } else if (self.msCrypto && self.msCrypto.getRandomValues) { - // IE - Rand.prototype._rand = function _rand(n) { - var arr = new Uint8Array(n); - self.msCrypto.getRandomValues(arr); - return arr; - }; // Safari's WebWorkers do not have `crypto` - - } else if ((typeof window === "undefined" ? "undefined" : _typeof(window)) === 'object') { - // Old junk - Rand.prototype._rand = function () { - throw new Error('Not implemented yet'); - }; - } -} else { - // Node.js or Web worker with no crypto support - try { - var crypto = __webpack_require__(9214); - - if (typeof crypto.randomBytes !== 'function') throw new Error('Not supported'); - - Rand.prototype._rand = function _rand(n) { - return crypto.randomBytes(n); - }; - } catch (e) {} -} - -/***/ }), - -/***/ 7463: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// based on the aes implimentation in triple sec -// https://github.com/keybase/triplesec -// which is in turn based on the one from crypto-js -// https://code.google.com/p/crypto-js/ -var Buffer = (__webpack_require__(9047).Buffer); - -function asUInt32Array(buf) { - if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf); - var len = buf.length / 4 | 0; - var out = new Array(len); - - for (var i = 0; i < len; i++) { - out[i] = buf.readUInt32BE(i * 4); - } - - return out; -} - -function scrubVec(v) { - for (var i = 0; i < v.length; v++) { - v[i] = 0; - } -} - -function cryptBlock(M, keySchedule, SUB_MIX, SBOX, nRounds) { - var SUB_MIX0 = SUB_MIX[0]; - var SUB_MIX1 = SUB_MIX[1]; - var SUB_MIX2 = SUB_MIX[2]; - var SUB_MIX3 = SUB_MIX[3]; - var s0 = M[0] ^ keySchedule[0]; - var s1 = M[1] ^ keySchedule[1]; - var s2 = M[2] ^ keySchedule[2]; - var s3 = M[3] ^ keySchedule[3]; - var t0, t1, t2, t3; - var ksRow = 4; - - for (var round = 1; round < nRounds; round++) { - t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[s1 >>> 16 & 0xff] ^ SUB_MIX2[s2 >>> 8 & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]; - t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[s2 >>> 16 & 0xff] ^ SUB_MIX2[s3 >>> 8 & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]; - t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[s3 >>> 16 & 0xff] ^ SUB_MIX2[s0 >>> 8 & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]; - t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[s0 >>> 16 & 0xff] ^ SUB_MIX2[s1 >>> 8 & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]; - s0 = t0; - s1 = t1; - s2 = t2; - s3 = t3; - } - - t0 = (SBOX[s0 >>> 24] << 24 | SBOX[s1 >>> 16 & 0xff] << 16 | SBOX[s2 >>> 8 & 0xff] << 8 | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]; - t1 = (SBOX[s1 >>> 24] << 24 | SBOX[s2 >>> 16 & 0xff] << 16 | SBOX[s3 >>> 8 & 0xff] << 8 | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]; - t2 = (SBOX[s2 >>> 24] << 24 | SBOX[s3 >>> 16 & 0xff] << 16 | SBOX[s0 >>> 8 & 0xff] << 8 | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]; - t3 = (SBOX[s3 >>> 24] << 24 | SBOX[s0 >>> 16 & 0xff] << 16 | SBOX[s1 >>> 8 & 0xff] << 8 | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]; - t0 = t0 >>> 0; - t1 = t1 >>> 0; - t2 = t2 >>> 0; - t3 = t3 >>> 0; - return [t0, t1, t2, t3]; -} // AES constants - - -var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]; - -var G = function () { - // Compute double table - var d = new Array(256); - - for (var j = 0; j < 256; j++) { - if (j < 128) { - d[j] = j << 1; - } else { - d[j] = j << 1 ^ 0x11b; - } - } - - var SBOX = []; - var INV_SBOX = []; - var SUB_MIX = [[], [], [], []]; - var INV_SUB_MIX = [[], [], [], []]; // Walk GF(2^8) - - var x = 0; - var xi = 0; - - for (var i = 0; i < 256; ++i) { - // Compute sbox - var sx = xi ^ xi << 1 ^ xi << 2 ^ xi << 3 ^ xi << 4; - sx = sx >>> 8 ^ sx & 0xff ^ 0x63; - SBOX[x] = sx; - INV_SBOX[sx] = x; // Compute multiplication - - var x2 = d[x]; - var x4 = d[x2]; - var x8 = d[x4]; // Compute sub bytes, mix columns tables - - var t = d[sx] * 0x101 ^ sx * 0x1010100; - SUB_MIX[0][x] = t << 24 | t >>> 8; - SUB_MIX[1][x] = t << 16 | t >>> 16; - SUB_MIX[2][x] = t << 8 | t >>> 24; - SUB_MIX[3][x] = t; // Compute inv sub bytes, inv mix columns tables - - t = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100; - INV_SUB_MIX[0][sx] = t << 24 | t >>> 8; - INV_SUB_MIX[1][sx] = t << 16 | t >>> 16; - INV_SUB_MIX[2][sx] = t << 8 | t >>> 24; - INV_SUB_MIX[3][sx] = t; - - if (x === 0) { - x = xi = 1; - } else { - x = x2 ^ d[d[d[x8 ^ x2]]]; - xi ^= d[d[xi]]; - } - } - - return { - SBOX: SBOX, - INV_SBOX: INV_SBOX, - SUB_MIX: SUB_MIX, - INV_SUB_MIX: INV_SUB_MIX - }; -}(); - -function AES(key) { - this._key = asUInt32Array(key); - - this._reset(); -} - -AES.blockSize = 4 * 4; -AES.keySize = 256 / 8; -AES.prototype.blockSize = AES.blockSize; -AES.prototype.keySize = AES.keySize; - -AES.prototype._reset = function () { - var keyWords = this._key; - var keySize = keyWords.length; - var nRounds = keySize + 6; - var ksRows = (nRounds + 1) * 4; - var keySchedule = []; - - for (var k = 0; k < keySize; k++) { - keySchedule[k] = keyWords[k]; - } - - for (k = keySize; k < ksRows; k++) { - var t = keySchedule[k - 1]; - - if (k % keySize === 0) { - t = t << 8 | t >>> 24; - t = G.SBOX[t >>> 24] << 24 | G.SBOX[t >>> 16 & 0xff] << 16 | G.SBOX[t >>> 8 & 0xff] << 8 | G.SBOX[t & 0xff]; - t ^= RCON[k / keySize | 0] << 24; - } else if (keySize > 6 && k % keySize === 4) { - t = G.SBOX[t >>> 24] << 24 | G.SBOX[t >>> 16 & 0xff] << 16 | G.SBOX[t >>> 8 & 0xff] << 8 | G.SBOX[t & 0xff]; - } - - keySchedule[k] = keySchedule[k - keySize] ^ t; - } - - var invKeySchedule = []; - - for (var ik = 0; ik < ksRows; ik++) { - var ksR = ksRows - ik; - var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]; - - if (ik < 4 || ksR <= 4) { - invKeySchedule[ik] = tt; - } else { - invKeySchedule[ik] = G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^ G.INV_SUB_MIX[1][G.SBOX[tt >>> 16 & 0xff]] ^ G.INV_SUB_MIX[2][G.SBOX[tt >>> 8 & 0xff]] ^ G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]; - } - } - - this._nRounds = nRounds; - this._keySchedule = keySchedule; - this._invKeySchedule = invKeySchedule; -}; - -AES.prototype.encryptBlockRaw = function (M) { - M = asUInt32Array(M); - return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds); -}; - -AES.prototype.encryptBlock = function (M) { - var out = this.encryptBlockRaw(M); - var buf = Buffer.allocUnsafe(16); - buf.writeUInt32BE(out[0], 0); - buf.writeUInt32BE(out[1], 4); - buf.writeUInt32BE(out[2], 8); - buf.writeUInt32BE(out[3], 12); - return buf; -}; - -AES.prototype.decryptBlock = function (M) { - M = asUInt32Array(M); // swap - - var m1 = M[1]; - M[1] = M[3]; - M[3] = m1; - var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds); - var buf = Buffer.allocUnsafe(16); - buf.writeUInt32BE(out[0], 0); - buf.writeUInt32BE(out[3], 4); - buf.writeUInt32BE(out[2], 8); - buf.writeUInt32BE(out[1], 12); - return buf; -}; - -AES.prototype.scrub = function () { - scrubVec(this._keySchedule); - scrubVec(this._invKeySchedule); - scrubVec(this._key); -}; - -module.exports.AES = AES; - -/***/ }), - -/***/ 3499: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var aes = __webpack_require__(7463); - -var Buffer = (__webpack_require__(9047).Buffer); - -var Transform = __webpack_require__(8842); - -var inherits = __webpack_require__(376); - -var GHASH = __webpack_require__(1225); - -var xor = __webpack_require__(5176); - -var incr32 = __webpack_require__(4001); - -function xorTest(a, b) { - var out = 0; - if (a.length !== b.length) out++; - var len = Math.min(a.length, b.length); - - for (var i = 0; i < len; ++i) { - out += a[i] ^ b[i]; - } - - return out; -} - -function calcIv(self, iv, ck) { - if (iv.length === 12) { - self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])]); - return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])]); - } - - var ghash = new GHASH(ck); - var len = iv.length; - var toPad = len % 16; - ghash.update(iv); - - if (toPad) { - toPad = 16 - toPad; - ghash.update(Buffer.alloc(toPad, 0)); - } - - ghash.update(Buffer.alloc(8, 0)); - var ivBits = len * 8; - var tail = Buffer.alloc(8); - tail.writeUIntBE(ivBits, 0, 8); - ghash.update(tail); - self._finID = ghash.state; - var out = Buffer.from(self._finID); - incr32(out); - return out; -} - -function StreamCipher(mode, key, iv, decrypt) { - Transform.call(this); - var h = Buffer.alloc(4, 0); - this._cipher = new aes.AES(key); - - var ck = this._cipher.encryptBlock(h); - - this._ghash = new GHASH(ck); - iv = calcIv(this, iv, ck); - this._prev = Buffer.from(iv); - this._cache = Buffer.allocUnsafe(0); - this._secCache = Buffer.allocUnsafe(0); - this._decrypt = decrypt; - this._alen = 0; - this._len = 0; - this._mode = mode; - this._authTag = null; - this._called = false; -} - -inherits(StreamCipher, Transform); - -StreamCipher.prototype._update = function (chunk) { - if (!this._called && this._alen) { - var rump = 16 - this._alen % 16; - - if (rump < 16) { - rump = Buffer.alloc(rump, 0); - - this._ghash.update(rump); - } - } - - this._called = true; - - var out = this._mode.encrypt(this, chunk); - - if (this._decrypt) { - this._ghash.update(chunk); - } else { - this._ghash.update(out); - } - - this._len += chunk.length; - return out; -}; - -StreamCipher.prototype._final = function () { - if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data'); - var tag = xor(this._ghash["final"](this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID)); - if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data'); - this._authTag = tag; - - this._cipher.scrub(); -}; - -StreamCipher.prototype.getAuthTag = function getAuthTag() { - if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state'); - return this._authTag; -}; - -StreamCipher.prototype.setAuthTag = function setAuthTag(tag) { - if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state'); - this._authTag = tag; -}; - -StreamCipher.prototype.setAAD = function setAAD(buf) { - if (this._called) throw new Error('Attempting to set AAD in unsupported state'); - - this._ghash.update(buf); - - this._alen += buf.length; -}; - -module.exports = StreamCipher; - -/***/ }), - -/***/ 4881: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -var ciphers = __webpack_require__(8613); - -var deciphers = __webpack_require__(7909); - -var modes = __webpack_require__(4946); - -function getCiphers() { - return Object.keys(modes); -} - -exports.createCipher = exports.Cipher = ciphers.createCipher; -exports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv; -exports.createDecipher = exports.Decipher = deciphers.createDecipher; -exports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv; -exports.listCiphers = exports.getCiphers = getCiphers; - -/***/ }), - -/***/ 7909: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -var AuthCipher = __webpack_require__(3499); - -var Buffer = (__webpack_require__(9047).Buffer); - -var MODES = __webpack_require__(6572); - -var StreamCipher = __webpack_require__(7188); - -var Transform = __webpack_require__(8842); - -var aes = __webpack_require__(7463); - -var ebtk = __webpack_require__(1248); - -var inherits = __webpack_require__(376); - -function Decipher(mode, key, iv) { - Transform.call(this); - this._cache = new Splitter(); - this._last = void 0; - this._cipher = new aes.AES(key); - this._prev = Buffer.from(iv); - this._mode = mode; - this._autopadding = true; -} - -inherits(Decipher, Transform); - -Decipher.prototype._update = function (data) { - this._cache.add(data); - - var chunk; - var thing; - var out = []; - - while (chunk = this._cache.get(this._autopadding)) { - thing = this._mode.decrypt(this, chunk); - out.push(thing); - } - - return Buffer.concat(out); -}; - -Decipher.prototype._final = function () { - var chunk = this._cache.flush(); - - if (this._autopadding) { - return unpad(this._mode.decrypt(this, chunk)); - } else if (chunk) { - throw new Error('data not multiple of block length'); - } -}; - -Decipher.prototype.setAutoPadding = function (setTo) { - this._autopadding = !!setTo; - return this; -}; - -function Splitter() { - this.cache = Buffer.allocUnsafe(0); -} - -Splitter.prototype.add = function (data) { - this.cache = Buffer.concat([this.cache, data]); -}; - -Splitter.prototype.get = function (autoPadding) { - var out; - - if (autoPadding) { - if (this.cache.length > 16) { - out = this.cache.slice(0, 16); - this.cache = this.cache.slice(16); - return out; - } - } else { - if (this.cache.length >= 16) { - out = this.cache.slice(0, 16); - this.cache = this.cache.slice(16); - return out; - } - } - - return null; -}; - -Splitter.prototype.flush = function () { - if (this.cache.length) return this.cache; -}; - -function unpad(last) { - var padded = last[15]; - - if (padded < 1 || padded > 16) { - throw new Error('unable to decrypt data'); - } - - var i = -1; - - while (++i < padded) { - if (last[i + (16 - padded)] !== padded) { - throw new Error('unable to decrypt data'); - } - } - - if (padded === 16) return; - return last.slice(0, 16 - padded); -} - -function createDecipheriv(suite, password, iv) { - var config = MODES[suite.toLowerCase()]; - if (!config) throw new TypeError('invalid suite type'); - if (typeof iv === 'string') iv = Buffer.from(iv); - if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length); - if (typeof password === 'string') password = Buffer.from(password); - if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length); - - if (config.type === 'stream') { - return new StreamCipher(config.module, password, iv, true); - } else if (config.type === 'auth') { - return new AuthCipher(config.module, password, iv, true); - } - - return new Decipher(config.module, password, iv); -} - -function createDecipher(suite, password) { - var config = MODES[suite.toLowerCase()]; - if (!config) throw new TypeError('invalid suite type'); - var keys = ebtk(password, false, config.key, config.iv); - return createDecipheriv(suite, keys.key, keys.iv); -} - -exports.createDecipher = createDecipher; -exports.createDecipheriv = createDecipheriv; - -/***/ }), - -/***/ 8613: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -var MODES = __webpack_require__(6572); - -var AuthCipher = __webpack_require__(3499); - -var Buffer = (__webpack_require__(9047).Buffer); - -var StreamCipher = __webpack_require__(7188); - -var Transform = __webpack_require__(8842); - -var aes = __webpack_require__(7463); - -var ebtk = __webpack_require__(1248); - -var inherits = __webpack_require__(376); - -function Cipher(mode, key, iv) { - Transform.call(this); - this._cache = new Splitter(); - this._cipher = new aes.AES(key); - this._prev = Buffer.from(iv); - this._mode = mode; - this._autopadding = true; -} - -inherits(Cipher, Transform); - -Cipher.prototype._update = function (data) { - this._cache.add(data); - - var chunk; - var thing; - var out = []; - - while (chunk = this._cache.get()) { - thing = this._mode.encrypt(this, chunk); - out.push(thing); - } - - return Buffer.concat(out); -}; - -var PADDING = Buffer.alloc(16, 0x10); - -Cipher.prototype._final = function () { - var chunk = this._cache.flush(); - - if (this._autopadding) { - chunk = this._mode.encrypt(this, chunk); - - this._cipher.scrub(); - - return chunk; - } - - if (!chunk.equals(PADDING)) { - this._cipher.scrub(); - - throw new Error('data not multiple of block length'); - } -}; - -Cipher.prototype.setAutoPadding = function (setTo) { - this._autopadding = !!setTo; - return this; -}; - -function Splitter() { - this.cache = Buffer.allocUnsafe(0); -} - -Splitter.prototype.add = function (data) { - this.cache = Buffer.concat([this.cache, data]); -}; - -Splitter.prototype.get = function () { - if (this.cache.length > 15) { - var out = this.cache.slice(0, 16); - this.cache = this.cache.slice(16); - return out; - } - - return null; -}; - -Splitter.prototype.flush = function () { - var len = 16 - this.cache.length; - var padBuff = Buffer.allocUnsafe(len); - var i = -1; - - while (++i < len) { - padBuff.writeUInt8(len, i); - } - - return Buffer.concat([this.cache, padBuff]); -}; - -function createCipheriv(suite, password, iv) { - var config = MODES[suite.toLowerCase()]; - if (!config) throw new TypeError('invalid suite type'); - if (typeof password === 'string') password = Buffer.from(password); - if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length); - if (typeof iv === 'string') iv = Buffer.from(iv); - if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length); - - if (config.type === 'stream') { - return new StreamCipher(config.module, password, iv); - } else if (config.type === 'auth') { - return new AuthCipher(config.module, password, iv); - } - - return new Cipher(config.module, password, iv); -} - -function createCipher(suite, password) { - var config = MODES[suite.toLowerCase()]; - if (!config) throw new TypeError('invalid suite type'); - var keys = ebtk(password, false, config.key, config.iv); - return createCipheriv(suite, keys.key, keys.iv); -} - -exports.createCipheriv = createCipheriv; -exports.createCipher = createCipher; - -/***/ }), - -/***/ 1225: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var Buffer = (__webpack_require__(9047).Buffer); - -var ZEROES = Buffer.alloc(16, 0); - -function toArray(buf) { - return [buf.readUInt32BE(0), buf.readUInt32BE(4), buf.readUInt32BE(8), buf.readUInt32BE(12)]; -} - -function fromArray(out) { - var buf = Buffer.allocUnsafe(16); - buf.writeUInt32BE(out[0] >>> 0, 0); - buf.writeUInt32BE(out[1] >>> 0, 4); - buf.writeUInt32BE(out[2] >>> 0, 8); - buf.writeUInt32BE(out[3] >>> 0, 12); - return buf; -} - -function GHASH(key) { - this.h = key; - this.state = Buffer.alloc(16, 0); - this.cache = Buffer.allocUnsafe(0); -} // from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html -// by Juho Vähä-Herttua - - -GHASH.prototype.ghash = function (block) { - var i = -1; - - while (++i < block.length) { - this.state[i] ^= block[i]; - } - - this._multiply(); -}; - -GHASH.prototype._multiply = function () { - var Vi = toArray(this.h); - var Zi = [0, 0, 0, 0]; - var j, xi, lsbVi; - var i = -1; - - while (++i < 128) { - xi = (this.state[~~(i / 8)] & 1 << 7 - i % 8) !== 0; - - if (xi) { - // Z_i+1 = Z_i ^ V_i - Zi[0] ^= Vi[0]; - Zi[1] ^= Vi[1]; - Zi[2] ^= Vi[2]; - Zi[3] ^= Vi[3]; - } // Store the value of LSB(V_i) - - - lsbVi = (Vi[3] & 1) !== 0; // V_i+1 = V_i >> 1 - - for (j = 3; j > 0; j--) { - Vi[j] = Vi[j] >>> 1 | (Vi[j - 1] & 1) << 31; - } - - Vi[0] = Vi[0] >>> 1; // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R - - if (lsbVi) { - Vi[0] = Vi[0] ^ 0xe1 << 24; - } - } - - this.state = fromArray(Zi); -}; - -GHASH.prototype.update = function (buf) { - this.cache = Buffer.concat([this.cache, buf]); - var chunk; - - while (this.cache.length >= 16) { - chunk = this.cache.slice(0, 16); - this.cache = this.cache.slice(16); - this.ghash(chunk); - } -}; - -GHASH.prototype["final"] = function (abl, bl) { - if (this.cache.length) { - this.ghash(Buffer.concat([this.cache, ZEROES], 16)); - } - - this.ghash(fromArray([0, abl, 0, bl])); - return this.state; -}; - -module.exports = GHASH; - -/***/ }), - -/***/ 4001: -/***/ ((module) => { - -function incr32(iv) { - var len = iv.length; - var item; - - while (len--) { - item = iv.readUInt8(len); - - if (item === 255) { - iv.writeUInt8(0, len); - } else { - item++; - iv.writeUInt8(item, len); - break; - } - } -} - -module.exports = incr32; - -/***/ }), - -/***/ 9628: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -var xor = __webpack_require__(5176); - -exports.encrypt = function (self, block) { - var data = xor(block, self._prev); - self._prev = self._cipher.encryptBlock(data); - return self._prev; -}; - -exports.decrypt = function (self, block) { - var pad = self._prev; - self._prev = block; - - var out = self._cipher.decryptBlock(block); - - return xor(out, pad); -}; - -/***/ }), - -/***/ 6674: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -var Buffer = (__webpack_require__(9047).Buffer); - -var xor = __webpack_require__(5176); - -function encryptStart(self, data, decrypt) { - var len = data.length; - var out = xor(data, self._cache); - self._cache = self._cache.slice(len); - self._prev = Buffer.concat([self._prev, decrypt ? data : out]); - return out; -} - -exports.encrypt = function (self, data, decrypt) { - var out = Buffer.allocUnsafe(0); - var len; - - while (data.length) { - if (self._cache.length === 0) { - self._cache = self._cipher.encryptBlock(self._prev); - self._prev = Buffer.allocUnsafe(0); - } - - if (self._cache.length <= data.length) { - len = self._cache.length; - out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)]); - data = data.slice(len); - } else { - out = Buffer.concat([out, encryptStart(self, data, decrypt)]); - break; - } - } - - return out; -}; - -/***/ }), - -/***/ 9971: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -var Buffer = (__webpack_require__(9047).Buffer); - -function encryptByte(self, byteParam, decrypt) { - var pad; - var i = -1; - var len = 8; - var out = 0; - var bit, value; - - while (++i < len) { - pad = self._cipher.encryptBlock(self._prev); - bit = byteParam & 1 << 7 - i ? 0x80 : 0; - value = pad[0] ^ bit; - out += (value & 0x80) >> i % 8; - self._prev = shiftIn(self._prev, decrypt ? bit : value); - } - - return out; -} - -function shiftIn(buffer, value) { - var len = buffer.length; - var i = -1; - var out = Buffer.allocUnsafe(buffer.length); - buffer = Buffer.concat([buffer, Buffer.from([value])]); - - while (++i < len) { - out[i] = buffer[i] << 1 | buffer[i + 1] >> 7; - } - - return out; -} - -exports.encrypt = function (self, chunk, decrypt) { - var len = chunk.length; - var out = Buffer.allocUnsafe(len); - var i = -1; - - while (++i < len) { - out[i] = encryptByte(self, chunk[i], decrypt); - } - - return out; -}; - -/***/ }), - -/***/ 8194: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -var Buffer = (__webpack_require__(9047).Buffer); - -function encryptByte(self, byteParam, decrypt) { - var pad = self._cipher.encryptBlock(self._prev); - - var out = pad[0] ^ byteParam; - self._prev = Buffer.concat([self._prev.slice(1), Buffer.from([decrypt ? byteParam : out])]); - return out; -} - -exports.encrypt = function (self, chunk, decrypt) { - var len = chunk.length; - var out = Buffer.allocUnsafe(len); - var i = -1; - - while (++i < len) { - out[i] = encryptByte(self, chunk[i], decrypt); - } - - return out; -}; - -/***/ }), - -/***/ 8871: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -var xor = __webpack_require__(5176); - -var Buffer = (__webpack_require__(9047).Buffer); - -var incr32 = __webpack_require__(4001); - -function getBlock(self) { - var out = self._cipher.encryptBlockRaw(self._prev); - - incr32(self._prev); - return out; -} - -var blockSize = 16; - -exports.encrypt = function (self, chunk) { - var chunkNum = Math.ceil(chunk.length / blockSize); - var start = self._cache.length; - self._cache = Buffer.concat([self._cache, Buffer.allocUnsafe(chunkNum * blockSize)]); - - for (var i = 0; i < chunkNum; i++) { - var out = getBlock(self); - var offset = start + i * blockSize; - - self._cache.writeUInt32BE(out[0], offset + 0); - - self._cache.writeUInt32BE(out[1], offset + 4); - - self._cache.writeUInt32BE(out[2], offset + 8); - - self._cache.writeUInt32BE(out[3], offset + 12); - } - - var pad = self._cache.slice(0, chunk.length); - - self._cache = self._cache.slice(chunk.length); - return xor(chunk, pad); -}; - -/***/ }), - -/***/ 8972: -/***/ ((__unused_webpack_module, exports) => { - -exports.encrypt = function (self, block) { - return self._cipher.encryptBlock(block); -}; - -exports.decrypt = function (self, block) { - return self._cipher.decryptBlock(block); -}; - -/***/ }), - -/***/ 6572: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var modeModules = { - ECB: __webpack_require__(8972), - CBC: __webpack_require__(9628), - CFB: __webpack_require__(6674), - CFB8: __webpack_require__(8194), - CFB1: __webpack_require__(9971), - OFB: __webpack_require__(2343), - CTR: __webpack_require__(8871), - GCM: __webpack_require__(8871) -}; - -var modes = __webpack_require__(4946); - -for (var key in modes) { - modes[key].module = modeModules[modes[key].mode]; -} - -module.exports = modes; - -/***/ }), - -/***/ 2343: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -/* provided dependency */ var Buffer = __webpack_require__(365)["Buffer"]; -var xor = __webpack_require__(5176); - -function getBlock(self) { - self._prev = self._cipher.encryptBlock(self._prev); - return self._prev; -} - -exports.encrypt = function (self, chunk) { - while (self._cache.length < chunk.length) { - self._cache = Buffer.concat([self._cache, getBlock(self)]); - } - - var pad = self._cache.slice(0, chunk.length); - - self._cache = self._cache.slice(chunk.length); - return xor(chunk, pad); -}; - -/***/ }), - -/***/ 7188: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var aes = __webpack_require__(7463); - -var Buffer = (__webpack_require__(9047).Buffer); - -var Transform = __webpack_require__(8842); - -var inherits = __webpack_require__(376); - -function StreamCipher(mode, key, iv, decrypt) { - Transform.call(this); - this._cipher = new aes.AES(key); - this._prev = Buffer.from(iv); - this._cache = Buffer.allocUnsafe(0); - this._secCache = Buffer.allocUnsafe(0); - this._decrypt = decrypt; - this._mode = mode; -} - -inherits(StreamCipher, Transform); - -StreamCipher.prototype._update = function (chunk) { - return this._mode.encrypt(this, chunk, this._decrypt); -}; - -StreamCipher.prototype._final = function () { - this._cipher.scrub(); -}; - -module.exports = StreamCipher; - -/***/ }), - -/***/ 5972: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -var DES = __webpack_require__(7729); - -var aes = __webpack_require__(4881); - -var aesModes = __webpack_require__(6572); - -var desModes = __webpack_require__(3519); - -var ebtk = __webpack_require__(1248); - -function createCipher(suite, password) { - suite = suite.toLowerCase(); - var keyLen, ivLen; - - if (aesModes[suite]) { - keyLen = aesModes[suite].key; - ivLen = aesModes[suite].iv; - } else if (desModes[suite]) { - keyLen = desModes[suite].key * 8; - ivLen = desModes[suite].iv; - } else { - throw new TypeError('invalid suite type'); - } - - var keys = ebtk(password, false, keyLen, ivLen); - return createCipheriv(suite, keys.key, keys.iv); -} - -function createDecipher(suite, password) { - suite = suite.toLowerCase(); - var keyLen, ivLen; - - if (aesModes[suite]) { - keyLen = aesModes[suite].key; - ivLen = aesModes[suite].iv; - } else if (desModes[suite]) { - keyLen = desModes[suite].key * 8; - ivLen = desModes[suite].iv; - } else { - throw new TypeError('invalid suite type'); - } - - var keys = ebtk(password, false, keyLen, ivLen); - return createDecipheriv(suite, keys.key, keys.iv); -} - -function createCipheriv(suite, key, iv) { - suite = suite.toLowerCase(); - if (aesModes[suite]) return aes.createCipheriv(suite, key, iv); - if (desModes[suite]) return new DES({ - key: key, - iv: iv, - mode: suite - }); - throw new TypeError('invalid suite type'); -} - -function createDecipheriv(suite, key, iv) { - suite = suite.toLowerCase(); - if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv); - if (desModes[suite]) return new DES({ - key: key, - iv: iv, - mode: suite, - decrypt: true - }); - throw new TypeError('invalid suite type'); -} - -function getCiphers() { - return Object.keys(desModes).concat(aes.getCiphers()); -} - -exports.createCipher = exports.Cipher = createCipher; -exports.createCipheriv = exports.Cipheriv = createCipheriv; -exports.createDecipher = exports.Decipher = createDecipher; -exports.createDecipheriv = exports.Decipheriv = createDecipheriv; -exports.listCiphers = exports.getCiphers = getCiphers; - -/***/ }), - -/***/ 7729: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var CipherBase = __webpack_require__(8842); - -var des = __webpack_require__(167); - -var inherits = __webpack_require__(376); - -var Buffer = (__webpack_require__(9047).Buffer); - -var modes = { - 'des-ede3-cbc': des.CBC.instantiate(des.EDE), - 'des-ede3': des.EDE, - 'des-ede-cbc': des.CBC.instantiate(des.EDE), - 'des-ede': des.EDE, - 'des-cbc': des.CBC.instantiate(des.DES), - 'des-ecb': des.DES -}; -modes.des = modes['des-cbc']; -modes.des3 = modes['des-ede3-cbc']; -module.exports = DES; -inherits(DES, CipherBase); - -function DES(opts) { - CipherBase.call(this); - var modeName = opts.mode.toLowerCase(); - var mode = modes[modeName]; - var type; - - if (opts.decrypt) { - type = 'decrypt'; - } else { - type = 'encrypt'; - } - - var key = opts.key; - - if (!Buffer.isBuffer(key)) { - key = Buffer.from(key); - } - - if (modeName === 'des-ede' || modeName === 'des-ede-cbc') { - key = Buffer.concat([key, key.slice(0, 8)]); - } - - var iv = opts.iv; - - if (!Buffer.isBuffer(iv)) { - iv = Buffer.from(iv); - } - - this._des = mode.create({ - key: key, - iv: iv, - type: type - }); -} - -DES.prototype._update = function (data) { - return Buffer.from(this._des.update(data)); -}; - -DES.prototype._final = function () { - return Buffer.from(this._des["final"]()); -}; - -/***/ }), - -/***/ 3519: -/***/ ((__unused_webpack_module, exports) => { - -exports["des-ecb"] = { - key: 8, - iv: 0 -}; -exports["des-cbc"] = exports.des = { - key: 8, - iv: 8 -}; -exports["des-ede3-cbc"] = exports.des3 = { - key: 24, - iv: 8 -}; -exports["des-ede3"] = { - key: 24, - iv: 0 -}; -exports["des-ede-cbc"] = { - key: 16, - iv: 8 -}; -exports["des-ede"] = { - key: 16, - iv: 0 -}; - -/***/ }), - -/***/ 4364: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/* provided dependency */ var Buffer = __webpack_require__(365)["Buffer"]; -var BN = __webpack_require__(6781); - -var randomBytes = __webpack_require__(5760); - -function blind(priv) { - var r = getr(priv); - var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed(); - return { - blinder: blinder, - unblinder: r.invm(priv.modulus) - }; -} - -function getr(priv) { - var len = priv.modulus.byteLength(); - var r; - - do { - r = new BN(randomBytes(len)); - } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2)); - - return r; -} - -function crt(msg, priv) { - var blinds = blind(priv); - var len = priv.modulus.byteLength(); - var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus); - var c1 = blinded.toRed(BN.mont(priv.prime1)); - var c2 = blinded.toRed(BN.mont(priv.prime2)); - var qinv = priv.coefficient; - var p = priv.prime1; - var q = priv.prime2; - var m1 = c1.redPow(priv.exponent1).fromRed(); - var m2 = c2.redPow(priv.exponent2).fromRed(); - var h = m1.isub(m2).imul(qinv).umod(p).imul(q); - return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len); -} - -crt.getr = getr; -module.exports = crt; - -/***/ }), - -/***/ 3363: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -module.exports = __webpack_require__(5207); - -/***/ }), - -/***/ 1022: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var Buffer = (__webpack_require__(3173).Buffer); - -var createHash = __webpack_require__(8339); - -var stream = __webpack_require__(8237); - -var inherits = __webpack_require__(376); - -var sign = __webpack_require__(1437); - -var verify = __webpack_require__(1113); - -var algorithms = __webpack_require__(5207); - -Object.keys(algorithms).forEach(function (key) { - algorithms[key].id = Buffer.from(algorithms[key].id, 'hex'); - algorithms[key.toLowerCase()] = algorithms[key]; -}); - -function Sign(algorithm) { - stream.Writable.call(this); - var data = algorithms[algorithm]; - if (!data) throw new Error('Unknown message digest'); - this._hashType = data.hash; - this._hash = createHash(data.hash); - this._tag = data.id; - this._signType = data.sign; -} - -inherits(Sign, stream.Writable); - -Sign.prototype._write = function _write(data, _, done) { - this._hash.update(data); - - done(); -}; - -Sign.prototype.update = function update(data, enc) { - if (typeof data === 'string') data = Buffer.from(data, enc); - - this._hash.update(data); - - return this; -}; - -Sign.prototype.sign = function signMethod(key, enc) { - this.end(); - - var hash = this._hash.digest(); - - var sig = sign(hash, key, this._hashType, this._signType, this._tag); - return enc ? sig.toString(enc) : sig; -}; - -function Verify(algorithm) { - stream.Writable.call(this); - var data = algorithms[algorithm]; - if (!data) throw new Error('Unknown message digest'); - this._hash = createHash(data.hash); - this._tag = data.id; - this._signType = data.sign; -} - -inherits(Verify, stream.Writable); - -Verify.prototype._write = function _write(data, _, done) { - this._hash.update(data); - - done(); -}; - -Verify.prototype.update = function update(data, enc) { - if (typeof data === 'string') data = Buffer.from(data, enc); - - this._hash.update(data); - - return this; -}; - -Verify.prototype.verify = function verifyMethod(key, sig, enc) { - if (typeof sig === 'string') sig = Buffer.from(sig, enc); - this.end(); - - var hash = this._hash.digest(); - - return verify(sig, hash, key, this._signType, this._tag); -}; - -function createSign(algorithm) { - return new Sign(algorithm); -} - -function createVerify(algorithm) { - return new Verify(algorithm); -} - -module.exports = { - Sign: createSign, - Verify: createVerify, - createSign: createSign, - createVerify: createVerify -}; - -/***/ }), - -/***/ 1437: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js -var Buffer = (__webpack_require__(3173).Buffer); - -var createHmac = __webpack_require__(8736); - -var crt = __webpack_require__(4364); - -var EC = (__webpack_require__(8333).ec); - -var BN = __webpack_require__(6781); - -var parseKeys = __webpack_require__(2914); - -var curves = __webpack_require__(1308); - -function sign(hash, key, hashType, signType, tag) { - var priv = parseKeys(key); - - if (priv.curve) { - // rsa keys can be interpreted as ecdsa ones in openssl - if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type'); - return ecSign(hash, priv); - } else if (priv.type === 'dsa') { - if (signType !== 'dsa') throw new Error('wrong private key type'); - return dsaSign(hash, priv, hashType); - } else { - if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type'); - } - - hash = Buffer.concat([tag, hash]); - var len = priv.modulus.byteLength(); - var pad = [0, 1]; - - while (hash.length + pad.length + 1 < len) { - pad.push(0xff); - } - - pad.push(0x00); - var i = -1; - - while (++i < hash.length) { - pad.push(hash[i]); - } - - var out = crt(pad, priv); - return out; -} - -function ecSign(hash, priv) { - var curveId = curves[priv.curve.join('.')]; - if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.')); - var curve = new EC(curveId); - var key = curve.keyFromPrivate(priv.privateKey); - var out = key.sign(hash); - return Buffer.from(out.toDER()); -} - -function dsaSign(hash, priv, algo) { - var x = priv.params.priv_key; - var p = priv.params.p; - var q = priv.params.q; - var g = priv.params.g; - var r = new BN(0); - var k; - var H = bits2int(hash, q).mod(q); - var s = false; - var kv = getKey(x, q, hash, algo); - - while (s === false) { - k = makeKey(q, kv, algo); - r = makeR(g, k, p, q); - s = k.invm(q).imul(H.add(x.mul(r))).mod(q); - - if (s.cmpn(0) === 0) { - s = false; - r = new BN(0); - } - } - - return toDER(r, s); -} - -function toDER(r, s) { - r = r.toArray(); - s = s.toArray(); // Pad values - - if (r[0] & 0x80) r = [0].concat(r); - if (s[0] & 0x80) s = [0].concat(s); - var total = r.length + s.length + 4; - var res = [0x30, total, 0x02, r.length]; - res = res.concat(r, [0x02, s.length], s); - return Buffer.from(res); -} - -function getKey(x, q, hash, algo) { - x = Buffer.from(x.toArray()); - - if (x.length < q.byteLength()) { - var zeros = Buffer.alloc(q.byteLength() - x.length); - x = Buffer.concat([zeros, x]); - } - - var hlen = hash.length; - var hbits = bits2octets(hash, q); - var v = Buffer.alloc(hlen); - v.fill(1); - var k = Buffer.alloc(hlen); - k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest(); - v = createHmac(algo, k).update(v).digest(); - k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest(); - v = createHmac(algo, k).update(v).digest(); - return { - k: k, - v: v - }; -} - -function bits2int(obits, q) { - var bits = new BN(obits); - var shift = (obits.length << 3) - q.bitLength(); - if (shift > 0) bits.ishrn(shift); - return bits; -} - -function bits2octets(bits, q) { - bits = bits2int(bits, q); - bits = bits.mod(q); - var out = Buffer.from(bits.toArray()); - - if (out.length < q.byteLength()) { - var zeros = Buffer.alloc(q.byteLength() - out.length); - out = Buffer.concat([zeros, out]); - } - - return out; -} - -function makeKey(q, kv, algo) { - var t; - var k; - - do { - t = Buffer.alloc(0); - - while (t.length * 8 < q.bitLength()) { - kv.v = createHmac(algo, kv.k).update(kv.v).digest(); - t = Buffer.concat([t, kv.v]); - } - - k = bits2int(t, q); - kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest(); - kv.v = createHmac(algo, kv.k).update(kv.v).digest(); - } while (k.cmp(q) !== -1); - - return k; -} - -function makeR(g, k, p, q) { - return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q); -} - -module.exports = sign; -module.exports.getKey = getKey; -module.exports.makeKey = makeKey; - -/***/ }), - -/***/ 1113: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js -var Buffer = (__webpack_require__(3173).Buffer); - -var BN = __webpack_require__(6781); - -var EC = (__webpack_require__(8333).ec); - -var parseKeys = __webpack_require__(2914); - -var curves = __webpack_require__(1308); - -function verify(sig, hash, key, signType, tag) { - var pub = parseKeys(key); - - if (pub.type === 'ec') { - // rsa keys can be interpreted as ecdsa ones in openssl - if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type'); - return ecVerify(sig, hash, pub); - } else if (pub.type === 'dsa') { - if (signType !== 'dsa') throw new Error('wrong public key type'); - return dsaVerify(sig, hash, pub); - } else { - if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type'); - } - - hash = Buffer.concat([tag, hash]); - var len = pub.modulus.byteLength(); - var pad = [1]; - var padNum = 0; - - while (hash.length + pad.length + 2 < len) { - pad.push(0xff); - padNum++; - } - - pad.push(0x00); - var i = -1; - - while (++i < hash.length) { - pad.push(hash[i]); - } - - pad = Buffer.from(pad); - var red = BN.mont(pub.modulus); - sig = new BN(sig).toRed(red); - sig = sig.redPow(new BN(pub.publicExponent)); - sig = Buffer.from(sig.fromRed().toArray()); - var out = padNum < 8 ? 1 : 0; - len = Math.min(sig.length, pad.length); - if (sig.length !== pad.length) out = 1; - i = -1; - - while (++i < len) { - out |= sig[i] ^ pad[i]; - } - - return out === 0; -} - -function ecVerify(sig, hash, pub) { - var curveId = curves[pub.data.algorithm.curve.join('.')]; - if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.')); - var curve = new EC(curveId); - var pubkey = pub.data.subjectPrivateKey.data; - return curve.verify(hash, sig, pubkey); -} - -function dsaVerify(sig, hash, pub) { - var p = pub.data.p; - var q = pub.data.q; - var g = pub.data.g; - var y = pub.data.pub_key; - var unpacked = parseKeys.signature.decode(sig, 'der'); - var s = unpacked.s; - var r = unpacked.r; - checkValue(s, q); - checkValue(r, q); - var montp = BN.mont(p); - var w = s.invm(q); - var v = g.toRed(montp).redPow(new BN(hash).mul(w).mod(q)).fromRed().mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed()).mod(p).mod(q); - return v.cmp(r) === 0; -} - -function checkValue(b, q) { - if (b.cmpn(0) <= 0) throw new Error('invalid sig'); - if (b.cmp(q) >= q) throw new Error('invalid sig'); -} - -module.exports = verify; - -/***/ }), - -/***/ 3173: -/***/ ((module, exports, __webpack_require__) => { - -/*! safe-buffer. MIT License. Feross Aboukhadijeh */ - -/* eslint-disable node/no-deprecated-api */ -var buffer = __webpack_require__(365); - -var Buffer = buffer.Buffer; // alternative to using Object.keys for old browsers - -function copyProps(src, dst) { - for (var key in src) { - dst[key] = src[key]; - } -} - -if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { - module.exports = buffer; -} else { - // Copy properties from require('buffer') - copyProps(buffer, exports); - exports.Buffer = SafeBuffer; -} - -function SafeBuffer(arg, encodingOrOffset, length) { - return Buffer(arg, encodingOrOffset, length); -} - -SafeBuffer.prototype = Object.create(Buffer.prototype); // Copy static methods from Buffer - -copyProps(Buffer, SafeBuffer); - -SafeBuffer.from = function (arg, encodingOrOffset, length) { - if (typeof arg === 'number') { - throw new TypeError('Argument must not be a number'); - } - - return Buffer(arg, encodingOrOffset, length); -}; - -SafeBuffer.alloc = function (size, fill, encoding) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number'); - } - - var buf = Buffer(size); - - if (fill !== undefined) { - if (typeof encoding === 'string') { - buf.fill(fill, encoding); - } else { - buf.fill(fill); - } - } else { - buf.fill(0); - } - - return buf; -}; - -SafeBuffer.allocUnsafe = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number'); - } - - return Buffer(size); -}; - -SafeBuffer.allocUnsafeSlow = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number'); - } - - return buffer.SlowBuffer(size); -}; - -/***/ }), - -/***/ 3873: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "Decimal128": () => (/* binding */ _Decimal), -/* harmony export */ "Kb": () => (/* binding */ _Binary), -/* harmony export */ "t4": () => (/* binding */ _ObjectId) -/* harmony export */ }); -/* unused harmony exports BSONError, BSONRegExp, BSONSymbol, BSONTypeError, BSON_BINARY_SUBTYPE_BYTE_ARRAY, BSON_BINARY_SUBTYPE_COLUMN, BSON_BINARY_SUBTYPE_DEFAULT, BSON_BINARY_SUBTYPE_ENCRYPTED, BSON_BINARY_SUBTYPE_FUNCTION, BSON_BINARY_SUBTYPE_MD5, BSON_BINARY_SUBTYPE_USER_DEFINED, BSON_BINARY_SUBTYPE_UUID, BSON_BINARY_SUBTYPE_UUID_NEW, BSON_DATA_ARRAY, BSON_DATA_BINARY, BSON_DATA_BOOLEAN, BSON_DATA_CODE, BSON_DATA_CODE_W_SCOPE, BSON_DATA_DATE, BSON_DATA_DBPOINTER, BSON_DATA_DECIMAL128, BSON_DATA_INT, BSON_DATA_LONG, BSON_DATA_MAX_KEY, BSON_DATA_MIN_KEY, BSON_DATA_NULL, BSON_DATA_NUMBER, BSON_DATA_OBJECT, BSON_DATA_OID, BSON_DATA_REGEXP, BSON_DATA_STRING, BSON_DATA_SYMBOL, BSON_DATA_TIMESTAMP, BSON_DATA_UNDEFINED, BSON_INT32_MAX, BSON_INT32_MIN, BSON_INT64_MAX, BSON_INT64_MIN, Code, DBRef, Double, EJSON, Int32, Long, LongWithoutOverridesClass, Map, MaxKey, MinKey, ObjectId, Timestamp, UUID, calculateObjectSize, deserialize, deserializeStream, serialize, serializeWithBufferAndIndex, setInternalBufferSize */ -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function createCommonjsModule(fn, module) { - return module = { - exports: {} - }, fn(module, module.exports), module.exports; -} - -var byteLength_1 = byteLength; -var toByteArray_1 = toByteArray; -var fromByteArray_1 = fromByteArray; -var lookup = []; -var revLookup = []; -var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array; -var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - -for (var i = 0, len = code.length; i < len; ++i) { - lookup[i] = code[i]; - revLookup[code.charCodeAt(i)] = i; -} // Support decoding URL-safe base64 strings, as Node.js does. -// See: https://en.wikipedia.org/wiki/Base64#URL_applications - - -revLookup['-'.charCodeAt(0)] = 62; -revLookup['_'.charCodeAt(0)] = 63; - -function getLens(b64) { - var len = b64.length; - - if (len % 4 > 0) { - throw new Error('Invalid string. Length must be a multiple of 4'); - } // Trim off extra bytes after placeholder bytes are found - // See: https://github.com/beatgammit/base64-js/issues/42 - - - var validLen = b64.indexOf('='); - if (validLen === -1) validLen = len; - var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4; - return [validLen, placeHoldersLen]; -} // base64 is 4/3 + up to two characters of the original data - - -function byteLength(b64) { - var lens = getLens(b64); - var validLen = lens[0]; - var placeHoldersLen = lens[1]; - return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen; -} - -function _byteLength(b64, validLen, placeHoldersLen) { - return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen; -} - -function toByteArray(b64) { - var tmp; - var lens = getLens(b64); - var validLen = lens[0]; - var placeHoldersLen = lens[1]; - var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)); - var curByte = 0; // if there are placeholders, only get up to the last complete 4 chars - - var len = placeHoldersLen > 0 ? validLen - 4 : validLen; - var i; - - for (i = 0; i < len; i += 4) { - tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)]; - arr[curByte++] = tmp >> 16 & 0xFF; - arr[curByte++] = tmp >> 8 & 0xFF; - arr[curByte++] = tmp & 0xFF; - } - - if (placeHoldersLen === 2) { - tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4; - arr[curByte++] = tmp & 0xFF; - } - - if (placeHoldersLen === 1) { - tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2; - arr[curByte++] = tmp >> 8 & 0xFF; - arr[curByte++] = tmp & 0xFF; - } - - return arr; -} - -function tripletToBase64(num) { - return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]; -} - -function encodeChunk(uint8, start, end) { - var tmp; - var output = []; - - for (var i = start; i < end; i += 3) { - tmp = (uint8[i] << 16 & 0xFF0000) + (uint8[i + 1] << 8 & 0xFF00) + (uint8[i + 2] & 0xFF); - output.push(tripletToBase64(tmp)); - } - - return output.join(''); -} - -function fromByteArray(uint8) { - var tmp; - var len = uint8.length; - var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes - - var parts = []; - var maxChunkLength = 16383; // must be multiple of 3 - // go through the array every three bytes, we'll deal with trailing stuff later - - for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { - parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength)); - } // pad the end with zeros, but make sure to not forget the extra bytes - - - if (extraBytes === 1) { - tmp = uint8[len - 1]; - parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 0x3F] + '=='); - } else if (extraBytes === 2) { - tmp = (uint8[len - 2] << 8) + uint8[len - 1]; - parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 0x3F] + lookup[tmp << 2 & 0x3F] + '='); - } - - return parts.join(''); -} - -var base64Js = { - byteLength: byteLength_1, - toByteArray: toByteArray_1, - fromByteArray: fromByteArray_1 -}; -/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ - -var read = function read(buffer, offset, isLE, mLen, nBytes) { - var e, m; - var eLen = nBytes * 8 - mLen - 1; - var eMax = (1 << eLen) - 1; - var eBias = eMax >> 1; - var nBits = -7; - var i = isLE ? nBytes - 1 : 0; - var d = isLE ? -1 : 1; - var s = buffer[offset + i]; - i += d; - e = s & (1 << -nBits) - 1; - s >>= -nBits; - nBits += eLen; - - for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} - - m = e & (1 << -nBits) - 1; - e >>= -nBits; - nBits += mLen; - - for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} - - if (e === 0) { - e = 1 - eBias; - } else if (e === eMax) { - return m ? NaN : (s ? -1 : 1) * Infinity; - } else { - m = m + Math.pow(2, mLen); - e = e - eBias; - } - - return (s ? -1 : 1) * m * Math.pow(2, e - mLen); -}; - -var write = function write(buffer, value, offset, isLE, mLen, nBytes) { - var e, m, c; - var eLen = nBytes * 8 - mLen - 1; - var eMax = (1 << eLen) - 1; - var eBias = eMax >> 1; - var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0; - var i = isLE ? 0 : nBytes - 1; - var d = isLE ? 1 : -1; - var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0; - value = Math.abs(value); - - if (isNaN(value) || value === Infinity) { - m = isNaN(value) ? 1 : 0; - e = eMax; - } else { - e = Math.floor(Math.log(value) / Math.LN2); - - if (value * (c = Math.pow(2, -e)) < 1) { - e--; - c *= 2; - } - - if (e + eBias >= 1) { - value += rt / c; - } else { - value += rt * Math.pow(2, 1 - eBias); - } - - if (value * c >= 2) { - e++; - c /= 2; - } - - if (e + eBias >= eMax) { - m = 0; - e = eMax; - } else if (e + eBias >= 1) { - m = (value * c - 1) * Math.pow(2, mLen); - e = e + eBias; - } else { - m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); - e = 0; - } - } - - for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} - - e = e << mLen | m; - eLen += mLen; - - for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} - - buffer[offset + i - d] |= s * 128; -}; - -var ieee754 = { - read: read, - write: write -}; -var buffer$1 = createCommonjsModule(function (module, exports) { - var customInspectSymbol = typeof Symbol === 'function' && typeof Symbol['for'] === 'function' ? // eslint-disable-line dot-notation - Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation - : null; - exports.Buffer = Buffer; - exports.SlowBuffer = SlowBuffer; - exports.INSPECT_MAX_BYTES = 50; - var K_MAX_LENGTH = 0x7fffffff; - exports.kMaxLength = K_MAX_LENGTH; - /** - * If `Buffer.TYPED_ARRAY_SUPPORT`: - * === true Use Uint8Array implementation (fastest) - * === false Print warning and recommend using `buffer` v4.x which has an Object - * implementation (most compatible, even IE6) - * - * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, - * Opera 11.6+, iOS 4.2+. - * - * We report that the browser does not support typed arrays if the are not subclassable - * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array` - * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support - * for __proto__ and has a buggy typed array implementation. - */ - - Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport(); - - if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && typeof console.error === 'function') { - console.error('This browser lacks typed array (Uint8Array) support which is required by ' + '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'); - } - - function typedArraySupport() { - // Can typed array instances can be augmented? - try { - var arr = new Uint8Array(1); - var proto = { - foo: function foo() { - return 42; - } - }; - Object.setPrototypeOf(proto, Uint8Array.prototype); - Object.setPrototypeOf(arr, proto); - return arr.foo() === 42; - } catch (e) { - return false; - } - } - - Object.defineProperty(Buffer.prototype, 'parent', { - enumerable: true, - get: function get() { - if (!Buffer.isBuffer(this)) return undefined; - return this.buffer; - } - }); - Object.defineProperty(Buffer.prototype, 'offset', { - enumerable: true, - get: function get() { - if (!Buffer.isBuffer(this)) return undefined; - return this.byteOffset; - } - }); - - function createBuffer(length) { - if (length > K_MAX_LENGTH) { - throw new RangeError('The value "' + length + '" is invalid for option "size"'); - } // Return an augmented `Uint8Array` instance - - - var buf = new Uint8Array(length); - Object.setPrototypeOf(buf, Buffer.prototype); - return buf; - } - /** - * The Buffer constructor returns instances of `Uint8Array` that have their - * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of - * `Uint8Array`, so the returned instances will have all the node `Buffer` methods - * and the `Uint8Array` methods. Square bracket notation works as expected -- it - * returns a single octet. - * - * The `Uint8Array` prototype remains unmodified. - */ - - - function Buffer(arg, encodingOrOffset, length) { - // Common case. - if (typeof arg === 'number') { - if (typeof encodingOrOffset === 'string') { - throw new TypeError('The "string" argument must be of type string. Received type number'); - } - - return allocUnsafe(arg); - } - - return from(arg, encodingOrOffset, length); - } - - Buffer.poolSize = 8192; // not used by this implementation - - function from(value, encodingOrOffset, length) { - if (typeof value === 'string') { - return fromString(value, encodingOrOffset); - } - - if (ArrayBuffer.isView(value)) { - return fromArrayView(value); - } - - if (value == null) { - throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + 'or Array-like Object. Received type ' + babelHelpers["typeof"](value)); - } - - if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) { - return fromArrayBuffer(value, encodingOrOffset, length); - } - - if (typeof SharedArrayBuffer !== 'undefined' && (isInstance(value, SharedArrayBuffer) || value && isInstance(value.buffer, SharedArrayBuffer))) { - return fromArrayBuffer(value, encodingOrOffset, length); - } - - if (typeof value === 'number') { - throw new TypeError('The "value" argument must not be of type number. Received type number'); - } - - var valueOf = value.valueOf && value.valueOf(); - - if (valueOf != null && valueOf !== value) { - return Buffer.from(valueOf, encodingOrOffset, length); - } - - var b = fromObject(value); - if (b) return b; - - if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === 'function') { - return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length); - } - - throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + 'or Array-like Object. Received type ' + babelHelpers["typeof"](value)); - } - /** - * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError - * if value is a number. - * Buffer.from(str[, encoding]) - * Buffer.from(array) - * Buffer.from(buffer) - * Buffer.from(arrayBuffer[, byteOffset[, length]]) - **/ - - - Buffer.from = function (value, encodingOrOffset, length) { - return from(value, encodingOrOffset, length); - }; // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug: - // https://github.com/feross/buffer/pull/148 - - - Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype); - Object.setPrototypeOf(Buffer, Uint8Array); - - function assertSize(size) { - if (typeof size !== 'number') { - throw new TypeError('"size" argument must be of type number'); - } else if (size < 0) { - throw new RangeError('The value "' + size + '" is invalid for option "size"'); - } - } - - function alloc(size, fill, encoding) { - assertSize(size); - - if (size <= 0) { - return createBuffer(size); - } - - if (fill !== undefined) { - // Only pay attention to encoding if it's a string. This - // prevents accidentally sending in a number that would - // be interpreted as a start offset. - return typeof encoding === 'string' ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill); - } - - return createBuffer(size); - } - /** - * Creates a new filled Buffer instance. - * alloc(size[, fill[, encoding]]) - **/ - - - Buffer.alloc = function (size, fill, encoding) { - return alloc(size, fill, encoding); - }; - - function allocUnsafe(size) { - assertSize(size); - return createBuffer(size < 0 ? 0 : checked(size) | 0); - } - /** - * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. - * */ - - - Buffer.allocUnsafe = function (size) { - return allocUnsafe(size); - }; - /** - * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. - */ - - - Buffer.allocUnsafeSlow = function (size) { - return allocUnsafe(size); - }; - - function fromString(string, encoding) { - if (typeof encoding !== 'string' || encoding === '') { - encoding = 'utf8'; - } - - if (!Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding); - } - - var length = byteLength(string, encoding) | 0; - var buf = createBuffer(length); - var actual = buf.write(string, encoding); - - if (actual !== length) { - // Writing a hex string, for example, that contains invalid characters will - // cause everything after the first invalid character to be ignored. (e.g. - // 'abxxcd' will be treated as 'ab') - buf = buf.slice(0, actual); - } - - return buf; - } - - function fromArrayLike(array) { - var length = array.length < 0 ? 0 : checked(array.length) | 0; - var buf = createBuffer(length); - - for (var i = 0; i < length; i += 1) { - buf[i] = array[i] & 255; - } - - return buf; - } - - function fromArrayView(arrayView) { - if (isInstance(arrayView, Uint8Array)) { - var copy = new Uint8Array(arrayView); - return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength); - } - - return fromArrayLike(arrayView); - } - - function fromArrayBuffer(array, byteOffset, length) { - if (byteOffset < 0 || array.byteLength < byteOffset) { - throw new RangeError('"offset" is outside of buffer bounds'); - } - - if (array.byteLength < byteOffset + (length || 0)) { - throw new RangeError('"length" is outside of buffer bounds'); - } - - var buf; - - if (byteOffset === undefined && length === undefined) { - buf = new Uint8Array(array); - } else if (length === undefined) { - buf = new Uint8Array(array, byteOffset); - } else { - buf = new Uint8Array(array, byteOffset, length); - } // Return an augmented `Uint8Array` instance - - - Object.setPrototypeOf(buf, Buffer.prototype); - return buf; - } - - function fromObject(obj) { - if (Buffer.isBuffer(obj)) { - var len = checked(obj.length) | 0; - var buf = createBuffer(len); - - if (buf.length === 0) { - return buf; - } - - obj.copy(buf, 0, 0, len); - return buf; - } - - if (obj.length !== undefined) { - if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) { - return createBuffer(0); - } - - return fromArrayLike(obj); - } - - if (obj.type === 'Buffer' && Array.isArray(obj.data)) { - return fromArrayLike(obj.data); - } - } - - function checked(length) { - // Note: cannot use `length < K_MAX_LENGTH` here because that fails when - // length is NaN (which is otherwise coerced to zero.) - if (length >= K_MAX_LENGTH) { - throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes'); - } - - return length | 0; - } - - function SlowBuffer(length) { - if (+length != length) { - // eslint-disable-line eqeqeq - length = 0; - } - - return Buffer.alloc(+length); - } - - Buffer.isBuffer = function isBuffer(b) { - return b != null && b._isBuffer === true && b !== Buffer.prototype; // so Buffer.isBuffer(Buffer.prototype) will be false - }; - - Buffer.compare = function compare(a, b) { - if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength); - if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength); - - if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { - throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array'); - } - - if (a === b) return 0; - var x = a.length; - var y = b.length; - - for (var i = 0, len = Math.min(x, y); i < len; ++i) { - if (a[i] !== b[i]) { - x = a[i]; - y = b[i]; - break; - } - } - - if (x < y) return -1; - if (y < x) return 1; - return 0; - }; - - Buffer.isEncoding = function isEncoding(encoding) { - switch (String(encoding).toLowerCase()) { - case 'hex': - case 'utf8': - case 'utf-8': - case 'ascii': - case 'latin1': - case 'binary': - case 'base64': - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return true; - - default: - return false; - } - }; - - Buffer.concat = function concat(list, length) { - if (!Array.isArray(list)) { - throw new TypeError('"list" argument must be an Array of Buffers'); - } - - if (list.length === 0) { - return Buffer.alloc(0); - } - - var i; - - if (length === undefined) { - length = 0; - - for (i = 0; i < list.length; ++i) { - length += list[i].length; - } - } - - var buffer = Buffer.allocUnsafe(length); - var pos = 0; - - for (i = 0; i < list.length; ++i) { - var buf = list[i]; - - if (isInstance(buf, Uint8Array)) { - if (pos + buf.length > buffer.length) { - Buffer.from(buf).copy(buffer, pos); - } else { - Uint8Array.prototype.set.call(buffer, buf, pos); - } - } else if (!Buffer.isBuffer(buf)) { - throw new TypeError('"list" argument must be an Array of Buffers'); - } else { - buf.copy(buffer, pos); - } - - pos += buf.length; - } - - return buffer; - }; - - function byteLength(string, encoding) { - if (Buffer.isBuffer(string)) { - return string.length; - } - - if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { - return string.byteLength; - } - - if (typeof string !== 'string') { - throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + 'Received type ' + babelHelpers["typeof"](string)); - } - - var len = string.length; - var mustMatch = arguments.length > 2 && arguments[2] === true; - if (!mustMatch && len === 0) return 0; // Use a for loop to avoid recursion - - var loweredCase = false; - - for (;;) { - switch (encoding) { - case 'ascii': - case 'latin1': - case 'binary': - return len; - - case 'utf8': - case 'utf-8': - return utf8ToBytes(string).length; - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return len * 2; - - case 'hex': - return len >>> 1; - - case 'base64': - return base64ToBytes(string).length; - - default: - if (loweredCase) { - return mustMatch ? -1 : utf8ToBytes(string).length; // assume utf8 - } - - encoding = ('' + encoding).toLowerCase(); - loweredCase = true; - } - } - } - - Buffer.byteLength = byteLength; - - function slowToString(encoding, start, end) { - var loweredCase = false; // No need to verify that "this.length <= MAX_UINT32" since it's a read-only - // property of a typed array. - // This behaves neither like String nor Uint8Array in that we set start/end - // to their upper/lower bounds if the value passed is out of range. - // undefined is handled specially as per ECMA-262 6th Edition, - // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. - - if (start === undefined || start < 0) { - start = 0; - } // Return early if start > this.length. Done here to prevent potential uint32 - // coercion fail below. - - - if (start > this.length) { - return ''; - } - - if (end === undefined || end > this.length) { - end = this.length; - } - - if (end <= 0) { - return ''; - } // Force coercion to uint32. This will also coerce falsey/NaN values to 0. - - - end >>>= 0; - start >>>= 0; - - if (end <= start) { - return ''; - } - - if (!encoding) encoding = 'utf8'; - - while (true) { - switch (encoding) { - case 'hex': - return hexSlice(this, start, end); - - case 'utf8': - case 'utf-8': - return utf8Slice(this, start, end); - - case 'ascii': - return asciiSlice(this, start, end); - - case 'latin1': - case 'binary': - return latin1Slice(this, start, end); - - case 'base64': - return base64Slice(this, start, end); - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return utf16leSlice(this, start, end); - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding); - encoding = (encoding + '').toLowerCase(); - loweredCase = true; - } - } - } // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package) - // to detect a Buffer instance. It's not possible to use `instanceof Buffer` - // reliably in a browserify context because there could be multiple different - // copies of the 'buffer' package in use. This method works even for Buffer - // instances that were created from another copy of the `buffer` package. - // See: https://github.com/feross/buffer/issues/154 - - - Buffer.prototype._isBuffer = true; - - function swap(b, n, m) { - var i = b[n]; - b[n] = b[m]; - b[m] = i; - } - - Buffer.prototype.swap16 = function swap16() { - var len = this.length; - - if (len % 2 !== 0) { - throw new RangeError('Buffer size must be a multiple of 16-bits'); - } - - for (var i = 0; i < len; i += 2) { - swap(this, i, i + 1); - } - - return this; - }; - - Buffer.prototype.swap32 = function swap32() { - var len = this.length; - - if (len % 4 !== 0) { - throw new RangeError('Buffer size must be a multiple of 32-bits'); - } - - for (var i = 0; i < len; i += 4) { - swap(this, i, i + 3); - swap(this, i + 1, i + 2); - } - - return this; - }; - - Buffer.prototype.swap64 = function swap64() { - var len = this.length; - - if (len % 8 !== 0) { - throw new RangeError('Buffer size must be a multiple of 64-bits'); - } - - for (var i = 0; i < len; i += 8) { - swap(this, i, i + 7); - swap(this, i + 1, i + 6); - swap(this, i + 2, i + 5); - swap(this, i + 3, i + 4); - } - - return this; - }; - - Buffer.prototype.toString = function toString() { - var length = this.length; - if (length === 0) return ''; - if (arguments.length === 0) return utf8Slice(this, 0, length); - return slowToString.apply(this, arguments); - }; - - Buffer.prototype.toLocaleString = Buffer.prototype.toString; - - Buffer.prototype.equals = function equals(b) { - if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer'); - if (this === b) return true; - return Buffer.compare(this, b) === 0; - }; - - Buffer.prototype.inspect = function inspect() { - var str = ''; - var max = exports.INSPECT_MAX_BYTES; - str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim(); - if (this.length > max) str += ' ... '; - return ''; - }; - - if (customInspectSymbol) { - Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect; - } - - Buffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) { - if (isInstance(target, Uint8Array)) { - target = Buffer.from(target, target.offset, target.byteLength); - } - - if (!Buffer.isBuffer(target)) { - throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. ' + 'Received type ' + babelHelpers["typeof"](target)); - } - - if (start === undefined) { - start = 0; - } - - if (end === undefined) { - end = target ? target.length : 0; - } - - if (thisStart === undefined) { - thisStart = 0; - } - - if (thisEnd === undefined) { - thisEnd = this.length; - } - - if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { - throw new RangeError('out of range index'); - } - - if (thisStart >= thisEnd && start >= end) { - return 0; - } - - if (thisStart >= thisEnd) { - return -1; - } - - if (start >= end) { - return 1; - } - - start >>>= 0; - end >>>= 0; - thisStart >>>= 0; - thisEnd >>>= 0; - if (this === target) return 0; - var x = thisEnd - thisStart; - var y = end - start; - var len = Math.min(x, y); - var thisCopy = this.slice(thisStart, thisEnd); - var targetCopy = target.slice(start, end); - - for (var i = 0; i < len; ++i) { - if (thisCopy[i] !== targetCopy[i]) { - x = thisCopy[i]; - y = targetCopy[i]; - break; - } - } - - if (x < y) return -1; - if (y < x) return 1; - return 0; - }; // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, - // OR the last index of `val` in `buffer` at offset <= `byteOffset`. - // - // Arguments: - // - buffer - a Buffer to search - // - val - a string, Buffer, or number - // - byteOffset - an index into `buffer`; will be clamped to an int32 - // - encoding - an optional encoding, relevant is val is a string - // - dir - true for indexOf, false for lastIndexOf - - - function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) { - // Empty buffer means no match - if (buffer.length === 0) return -1; // Normalize byteOffset - - if (typeof byteOffset === 'string') { - encoding = byteOffset; - byteOffset = 0; - } else if (byteOffset > 0x7fffffff) { - byteOffset = 0x7fffffff; - } else if (byteOffset < -0x80000000) { - byteOffset = -0x80000000; - } - - byteOffset = +byteOffset; // Coerce to Number. - - if (numberIsNaN(byteOffset)) { - // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer - byteOffset = dir ? 0 : buffer.length - 1; - } // Normalize byteOffset: negative offsets start from the end of the buffer - - - if (byteOffset < 0) byteOffset = buffer.length + byteOffset; - - if (byteOffset >= buffer.length) { - if (dir) return -1;else byteOffset = buffer.length - 1; - } else if (byteOffset < 0) { - if (dir) byteOffset = 0;else return -1; - } // Normalize val - - - if (typeof val === 'string') { - val = Buffer.from(val, encoding); - } // Finally, search either indexOf (if dir is true) or lastIndexOf - - - if (Buffer.isBuffer(val)) { - // Special case: looking for empty string/buffer always fails - if (val.length === 0) { - return -1; - } - - return arrayIndexOf(buffer, val, byteOffset, encoding, dir); - } else if (typeof val === 'number') { - val = val & 0xFF; // Search for a byte value [0-255] - - if (typeof Uint8Array.prototype.indexOf === 'function') { - if (dir) { - return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset); - } else { - return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset); - } - } - - return arrayIndexOf(buffer, [val], byteOffset, encoding, dir); - } - - throw new TypeError('val must be string, number or Buffer'); - } - - function arrayIndexOf(arr, val, byteOffset, encoding, dir) { - var indexSize = 1; - var arrLength = arr.length; - var valLength = val.length; - - if (encoding !== undefined) { - encoding = String(encoding).toLowerCase(); - - if (encoding === 'ucs2' || encoding === 'ucs-2' || encoding === 'utf16le' || encoding === 'utf-16le') { - if (arr.length < 2 || val.length < 2) { - return -1; - } - - indexSize = 2; - arrLength /= 2; - valLength /= 2; - byteOffset /= 2; - } - } - - function read(buf, i) { - if (indexSize === 1) { - return buf[i]; - } else { - return buf.readUInt16BE(i * indexSize); - } - } - - var i; - - if (dir) { - var foundIndex = -1; - - for (i = byteOffset; i < arrLength; i++) { - if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { - if (foundIndex === -1) foundIndex = i; - if (i - foundIndex + 1 === valLength) return foundIndex * indexSize; - } else { - if (foundIndex !== -1) i -= i - foundIndex; - foundIndex = -1; - } - } - } else { - if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength; - - for (i = byteOffset; i >= 0; i--) { - var found = true; - - for (var j = 0; j < valLength; j++) { - if (read(arr, i + j) !== read(val, j)) { - found = false; - break; - } - } - - if (found) return i; - } - } - - return -1; - } - - Buffer.prototype.includes = function includes(val, byteOffset, encoding) { - return this.indexOf(val, byteOffset, encoding) !== -1; - }; - - Buffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, true); - }; - - Buffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, false); - }; - - function hexWrite(buf, string, offset, length) { - offset = Number(offset) || 0; - var remaining = buf.length - offset; - - if (!length) { - length = remaining; - } else { - length = Number(length); - - if (length > remaining) { - length = remaining; - } - } - - var strLen = string.length; - - if (length > strLen / 2) { - length = strLen / 2; - } - - for (var i = 0; i < length; ++i) { - var parsed = parseInt(string.substr(i * 2, 2), 16); - if (numberIsNaN(parsed)) return i; - buf[offset + i] = parsed; - } - - return i; - } - - function utf8Write(buf, string, offset, length) { - return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length); - } - - function asciiWrite(buf, string, offset, length) { - return blitBuffer(asciiToBytes(string), buf, offset, length); - } - - function base64Write(buf, string, offset, length) { - return blitBuffer(base64ToBytes(string), buf, offset, length); - } - - function ucs2Write(buf, string, offset, length) { - return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length); - } - - Buffer.prototype.write = function write(string, offset, length, encoding) { - // Buffer#write(string) - if (offset === undefined) { - encoding = 'utf8'; - length = this.length; - offset = 0; // Buffer#write(string, encoding) - } else if (length === undefined && typeof offset === 'string') { - encoding = offset; - length = this.length; - offset = 0; // Buffer#write(string, offset[, length][, encoding]) - } else if (isFinite(offset)) { - offset = offset >>> 0; - - if (isFinite(length)) { - length = length >>> 0; - if (encoding === undefined) encoding = 'utf8'; - } else { - encoding = length; - length = undefined; - } - } else { - throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported'); - } - - var remaining = this.length - offset; - if (length === undefined || length > remaining) length = remaining; - - if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) { - throw new RangeError('Attempt to write outside buffer bounds'); - } - - if (!encoding) encoding = 'utf8'; - var loweredCase = false; - - for (;;) { - switch (encoding) { - case 'hex': - return hexWrite(this, string, offset, length); - - case 'utf8': - case 'utf-8': - return utf8Write(this, string, offset, length); - - case 'ascii': - case 'latin1': - case 'binary': - return asciiWrite(this, string, offset, length); - - case 'base64': - // Warning: maxLength not taken into account in base64Write - return base64Write(this, string, offset, length); - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return ucs2Write(this, string, offset, length); - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding); - encoding = ('' + encoding).toLowerCase(); - loweredCase = true; - } - } - }; - - Buffer.prototype.toJSON = function toJSON() { - return { - type: 'Buffer', - data: Array.prototype.slice.call(this._arr || this, 0) - }; - }; - - function base64Slice(buf, start, end) { - if (start === 0 && end === buf.length) { - return base64Js.fromByteArray(buf); - } else { - return base64Js.fromByteArray(buf.slice(start, end)); - } - } - - function utf8Slice(buf, start, end) { - end = Math.min(buf.length, end); - var res = []; - var i = start; - - while (i < end) { - var firstByte = buf[i]; - var codePoint = null; - var bytesPerSequence = firstByte > 0xEF ? 4 : firstByte > 0xDF ? 3 : firstByte > 0xBF ? 2 : 1; - - if (i + bytesPerSequence <= end) { - var secondByte, thirdByte, fourthByte, tempCodePoint; - - switch (bytesPerSequence) { - case 1: - if (firstByte < 0x80) { - codePoint = firstByte; - } - - break; - - case 2: - secondByte = buf[i + 1]; - - if ((secondByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0x1F) << 0x6 | secondByte & 0x3F; - - if (tempCodePoint > 0x7F) { - codePoint = tempCodePoint; - } - } - - break; - - case 3: - secondByte = buf[i + 1]; - thirdByte = buf[i + 2]; - - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | thirdByte & 0x3F; - - if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { - codePoint = tempCodePoint; - } - } - - break; - - case 4: - secondByte = buf[i + 1]; - thirdByte = buf[i + 2]; - fourthByte = buf[i + 3]; - - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | fourthByte & 0x3F; - - if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { - codePoint = tempCodePoint; - } - } - - } - } - - if (codePoint === null) { - // we did not generate a valid codePoint so insert a - // replacement char (U+FFFD) and advance only 1 byte - codePoint = 0xFFFD; - bytesPerSequence = 1; - } else if (codePoint > 0xFFFF) { - // encode to utf16 (surrogate pair dance) - codePoint -= 0x10000; - res.push(codePoint >>> 10 & 0x3FF | 0xD800); - codePoint = 0xDC00 | codePoint & 0x3FF; - } - - res.push(codePoint); - i += bytesPerSequence; - } - - return decodeCodePointsArray(res); - } // Based on http://stackoverflow.com/a/22747272/680742, the browser with - // the lowest limit is Chrome, with 0x10000 args. - // We go 1 magnitude less, for safety - - - var MAX_ARGUMENTS_LENGTH = 0x1000; - - function decodeCodePointsArray(codePoints) { - var len = codePoints.length; - - if (len <= MAX_ARGUMENTS_LENGTH) { - return String.fromCharCode.apply(String, codePoints); // avoid extra slice() - } // Decode in chunks to avoid "call stack size exceeded". - - - var res = ''; - var i = 0; - - while (i < len) { - res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)); - } - - return res; - } - - function asciiSlice(buf, start, end) { - var ret = ''; - end = Math.min(buf.length, end); - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i] & 0x7F); - } - - return ret; - } - - function latin1Slice(buf, start, end) { - var ret = ''; - end = Math.min(buf.length, end); - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i]); - } - - return ret; - } - - function hexSlice(buf, start, end) { - var len = buf.length; - if (!start || start < 0) start = 0; - if (!end || end < 0 || end > len) end = len; - var out = ''; - - for (var i = start; i < end; ++i) { - out += hexSliceLookupTable[buf[i]]; - } - - return out; - } - - function utf16leSlice(buf, start, end) { - var bytes = buf.slice(start, end); - var res = ''; // If bytes.length is odd, the last 8 bits must be ignored (same as node.js) - - for (var i = 0; i < bytes.length - 1; i += 2) { - res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256); - } - - return res; - } - - Buffer.prototype.slice = function slice(start, end) { - var len = this.length; - start = ~~start; - end = end === undefined ? len : ~~end; - - if (start < 0) { - start += len; - if (start < 0) start = 0; - } else if (start > len) { - start = len; - } - - if (end < 0) { - end += len; - if (end < 0) end = 0; - } else if (end > len) { - end = len; - } - - if (end < start) end = start; - var newBuf = this.subarray(start, end); // Return an augmented `Uint8Array` instance - - Object.setPrototypeOf(newBuf, Buffer.prototype); - return newBuf; - }; - /* - * Need to make sure that buffer isn't trying to write out of bounds. - */ - - - function checkOffset(offset, ext, length) { - if (offset % 1 !== 0 || offset < 0) throw new RangeError('offset is not uint'); - if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length'); - } - - Buffer.prototype.readUintLE = Buffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) { - offset = offset >>> 0; - byteLength = byteLength >>> 0; - if (!noAssert) checkOffset(offset, byteLength, this.length); - var val = this[offset]; - var mul = 1; - var i = 0; - - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul; - } - - return val; - }; - - Buffer.prototype.readUintBE = Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) { - offset = offset >>> 0; - byteLength = byteLength >>> 0; - - if (!noAssert) { - checkOffset(offset, byteLength, this.length); - } - - var val = this[offset + --byteLength]; - var mul = 1; - - while (byteLength > 0 && (mul *= 0x100)) { - val += this[offset + --byteLength] * mul; - } - - return val; - }; - - Buffer.prototype.readUint8 = Buffer.prototype.readUInt8 = function readUInt8(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 1, this.length); - return this[offset]; - }; - - Buffer.prototype.readUint16LE = Buffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 2, this.length); - return this[offset] | this[offset + 1] << 8; - }; - - Buffer.prototype.readUint16BE = Buffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 2, this.length); - return this[offset] << 8 | this[offset + 1]; - }; - - Buffer.prototype.readUint32LE = Buffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 4, this.length); - return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 0x1000000; - }; - - Buffer.prototype.readUint32BE = Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 4, this.length); - return this[offset] * 0x1000000 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]); - }; - - Buffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) { - offset = offset >>> 0; - byteLength = byteLength >>> 0; - if (!noAssert) checkOffset(offset, byteLength, this.length); - var val = this[offset]; - var mul = 1; - var i = 0; - - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul; - } - - mul *= 0x80; - if (val >= mul) val -= Math.pow(2, 8 * byteLength); - return val; - }; - - Buffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) { - offset = offset >>> 0; - byteLength = byteLength >>> 0; - if (!noAssert) checkOffset(offset, byteLength, this.length); - var i = byteLength; - var mul = 1; - var val = this[offset + --i]; - - while (i > 0 && (mul *= 0x100)) { - val += this[offset + --i] * mul; - } - - mul *= 0x80; - if (val >= mul) val -= Math.pow(2, 8 * byteLength); - return val; - }; - - Buffer.prototype.readInt8 = function readInt8(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 1, this.length); - if (!(this[offset] & 0x80)) return this[offset]; - return (0xff - this[offset] + 1) * -1; - }; - - Buffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 2, this.length); - var val = this[offset] | this[offset + 1] << 8; - return val & 0x8000 ? val | 0xFFFF0000 : val; - }; - - Buffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 2, this.length); - var val = this[offset + 1] | this[offset] << 8; - return val & 0x8000 ? val | 0xFFFF0000 : val; - }; - - Buffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 4, this.length); - return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24; - }; - - Buffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 4, this.length); - return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]; - }; - - Buffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 4, this.length); - return ieee754.read(this, offset, true, 23, 4); - }; - - Buffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 4, this.length); - return ieee754.read(this, offset, false, 23, 4); - }; - - Buffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 8, this.length); - return ieee754.read(this, offset, true, 52, 8); - }; - - Buffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 8, this.length); - return ieee754.read(this, offset, false, 52, 8); - }; - - function checkInt(buf, value, offset, ext, max, min) { - if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance'); - if (value > max || value < min) throw new RangeError('"value" argument is out of bounds'); - if (offset + ext > buf.length) throw new RangeError('Index out of range'); - } - - Buffer.prototype.writeUintLE = Buffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) { - value = +value; - offset = offset >>> 0; - byteLength = byteLength >>> 0; - - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1; - checkInt(this, value, offset, byteLength, maxBytes, 0); - } - - var mul = 1; - var i = 0; - this[offset] = value & 0xFF; - - while (++i < byteLength && (mul *= 0x100)) { - this[offset + i] = value / mul & 0xFF; - } - - return offset + byteLength; - }; - - Buffer.prototype.writeUintBE = Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) { - value = +value; - offset = offset >>> 0; - byteLength = byteLength >>> 0; - - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1; - checkInt(this, value, offset, byteLength, maxBytes, 0); - } - - var i = byteLength - 1; - var mul = 1; - this[offset + i] = value & 0xFF; - - while (--i >= 0 && (mul *= 0x100)) { - this[offset + i] = value / mul & 0xFF; - } - - return offset + byteLength; - }; - - Buffer.prototype.writeUint8 = Buffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0); - this[offset] = value & 0xff; - return offset + 1; - }; - - Buffer.prototype.writeUint16LE = Buffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); - this[offset] = value & 0xff; - this[offset + 1] = value >>> 8; - return offset + 2; - }; - - Buffer.prototype.writeUint16BE = Buffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); - this[offset] = value >>> 8; - this[offset + 1] = value & 0xff; - return offset + 2; - }; - - Buffer.prototype.writeUint32LE = Buffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); - this[offset + 3] = value >>> 24; - this[offset + 2] = value >>> 16; - this[offset + 1] = value >>> 8; - this[offset] = value & 0xff; - return offset + 4; - }; - - Buffer.prototype.writeUint32BE = Buffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); - this[offset] = value >>> 24; - this[offset + 1] = value >>> 16; - this[offset + 2] = value >>> 8; - this[offset + 3] = value & 0xff; - return offset + 4; - }; - - Buffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) { - value = +value; - offset = offset >>> 0; - - if (!noAssert) { - var limit = Math.pow(2, 8 * byteLength - 1); - checkInt(this, value, offset, byteLength, limit - 1, -limit); - } - - var i = 0; - var mul = 1; - var sub = 0; - this[offset] = value & 0xFF; - - while (++i < byteLength && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { - sub = 1; - } - - this[offset + i] = (value / mul >> 0) - sub & 0xFF; - } - - return offset + byteLength; - }; - - Buffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) { - value = +value; - offset = offset >>> 0; - - if (!noAssert) { - var limit = Math.pow(2, 8 * byteLength - 1); - checkInt(this, value, offset, byteLength, limit - 1, -limit); - } - - var i = byteLength - 1; - var mul = 1; - var sub = 0; - this[offset + i] = value & 0xFF; - - while (--i >= 0 && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { - sub = 1; - } - - this[offset + i] = (value / mul >> 0) - sub & 0xFF; - } - - return offset + byteLength; - }; - - Buffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80); - if (value < 0) value = 0xff + value + 1; - this[offset] = value & 0xff; - return offset + 1; - }; - - Buffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); - this[offset] = value & 0xff; - this[offset + 1] = value >>> 8; - return offset + 2; - }; - - Buffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); - this[offset] = value >>> 8; - this[offset + 1] = value & 0xff; - return offset + 2; - }; - - Buffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); - this[offset] = value & 0xff; - this[offset + 1] = value >>> 8; - this[offset + 2] = value >>> 16; - this[offset + 3] = value >>> 24; - return offset + 4; - }; - - Buffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); - if (value < 0) value = 0xffffffff + value + 1; - this[offset] = value >>> 24; - this[offset + 1] = value >>> 16; - this[offset + 2] = value >>> 8; - this[offset + 3] = value & 0xff; - return offset + 4; - }; - - function checkIEEE754(buf, value, offset, ext, max, min) { - if (offset + ext > buf.length) throw new RangeError('Index out of range'); - if (offset < 0) throw new RangeError('Index out of range'); - } - - function writeFloat(buf, value, offset, littleEndian, noAssert) { - value = +value; - offset = offset >>> 0; - - if (!noAssert) { - checkIEEE754(buf, value, offset, 4); - } - - ieee754.write(buf, value, offset, littleEndian, 23, 4); - return offset + 4; - } - - Buffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) { - return writeFloat(this, value, offset, true, noAssert); - }; - - Buffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) { - return writeFloat(this, value, offset, false, noAssert); - }; - - function writeDouble(buf, value, offset, littleEndian, noAssert) { - value = +value; - offset = offset >>> 0; - - if (!noAssert) { - checkIEEE754(buf, value, offset, 8); - } - - ieee754.write(buf, value, offset, littleEndian, 52, 8); - return offset + 8; - } - - Buffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) { - return writeDouble(this, value, offset, true, noAssert); - }; - - Buffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) { - return writeDouble(this, value, offset, false, noAssert); - }; // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) - - - Buffer.prototype.copy = function copy(target, targetStart, start, end) { - if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer'); - if (!start) start = 0; - if (!end && end !== 0) end = this.length; - if (targetStart >= target.length) targetStart = target.length; - if (!targetStart) targetStart = 0; - if (end > 0 && end < start) end = start; // Copy 0 bytes; we're done - - if (end === start) return 0; - if (target.length === 0 || this.length === 0) return 0; // Fatal error conditions - - if (targetStart < 0) { - throw new RangeError('targetStart out of bounds'); - } - - if (start < 0 || start >= this.length) throw new RangeError('Index out of range'); - if (end < 0) throw new RangeError('sourceEnd out of bounds'); // Are we oob? - - if (end > this.length) end = this.length; - - if (target.length - targetStart < end - start) { - end = target.length - targetStart + start; - } - - var len = end - start; - - if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') { - // Use built-in when available, missing from IE11 - this.copyWithin(targetStart, start, end); - } else { - Uint8Array.prototype.set.call(target, this.subarray(start, end), targetStart); - } - - return len; - }; // Usage: - // buffer.fill(number[, offset[, end]]) - // buffer.fill(buffer[, offset[, end]]) - // buffer.fill(string[, offset[, end]][, encoding]) - - - Buffer.prototype.fill = function fill(val, start, end, encoding) { - // Handle string cases: - if (typeof val === 'string') { - if (typeof start === 'string') { - encoding = start; - start = 0; - end = this.length; - } else if (typeof end === 'string') { - encoding = end; - end = this.length; - } - - if (encoding !== undefined && typeof encoding !== 'string') { - throw new TypeError('encoding must be a string'); - } - - if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding); - } - - if (val.length === 1) { - var code = val.charCodeAt(0); - - if (encoding === 'utf8' && code < 128 || encoding === 'latin1') { - // Fast path: If `val` fits into a single byte, use that numeric value. - val = code; - } - } - } else if (typeof val === 'number') { - val = val & 255; - } else if (typeof val === 'boolean') { - val = Number(val); - } // Invalid ranges are not set to a default, so can range check early. - - - if (start < 0 || this.length < start || this.length < end) { - throw new RangeError('Out of range index'); - } - - if (end <= start) { - return this; - } - - start = start >>> 0; - end = end === undefined ? this.length : end >>> 0; - if (!val) val = 0; - var i; - - if (typeof val === 'number') { - for (i = start; i < end; ++i) { - this[i] = val; - } - } else { - var bytes = Buffer.isBuffer(val) ? val : Buffer.from(val, encoding); - var len = bytes.length; - - if (len === 0) { - throw new TypeError('The value "' + val + '" is invalid for argument "value"'); - } - - for (i = 0; i < end - start; ++i) { - this[i + start] = bytes[i % len]; - } - } - - return this; - }; // HELPER FUNCTIONS - // ================ - - - var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g; - - function base64clean(str) { - // Node takes equal signs as end of the Base64 encoding - str = str.split('=')[0]; // Node strips out invalid characters like \n and \t from the string, base64-js does not - - str = str.trim().replace(INVALID_BASE64_RE, ''); // Node converts strings with length < 2 to '' - - if (str.length < 2) return ''; // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not - - while (str.length % 4 !== 0) { - str = str + '='; - } - - return str; - } - - function utf8ToBytes(string, units) { - units = units || Infinity; - var codePoint; - var length = string.length; - var leadSurrogate = null; - var bytes = []; - - for (var i = 0; i < length; ++i) { - codePoint = string.charCodeAt(i); // is surrogate component - - if (codePoint > 0xD7FF && codePoint < 0xE000) { - // last char was a lead - if (!leadSurrogate) { - // no lead yet - if (codePoint > 0xDBFF) { - // unexpected trail - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - continue; - } else if (i + 1 === length) { - // unpaired lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - continue; - } // valid lead - - - leadSurrogate = codePoint; - continue; - } // 2 leads in a row - - - if (codePoint < 0xDC00) { - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - leadSurrogate = codePoint; - continue; - } // valid surrogate pair - - - codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000; - } else if (leadSurrogate) { - // valid bmp char, but last char was a lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - } - - leadSurrogate = null; // encode utf8 - - if (codePoint < 0x80) { - if ((units -= 1) < 0) break; - bytes.push(codePoint); - } else if (codePoint < 0x800) { - if ((units -= 2) < 0) break; - bytes.push(codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80); - } else if (codePoint < 0x10000) { - if ((units -= 3) < 0) break; - bytes.push(codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80); - } else if (codePoint < 0x110000) { - if ((units -= 4) < 0) break; - bytes.push(codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80); - } else { - throw new Error('Invalid code point'); - } - } - - return bytes; - } - - function asciiToBytes(str) { - var byteArray = []; - - for (var i = 0; i < str.length; ++i) { - // Node's code seems to be doing this and not & 0x7F.. - byteArray.push(str.charCodeAt(i) & 0xFF); - } - - return byteArray; - } - - function utf16leToBytes(str, units) { - var c, hi, lo; - var byteArray = []; - - for (var i = 0; i < str.length; ++i) { - if ((units -= 2) < 0) break; - c = str.charCodeAt(i); - hi = c >> 8; - lo = c % 256; - byteArray.push(lo); - byteArray.push(hi); - } - - return byteArray; - } - - function base64ToBytes(str) { - return base64Js.toByteArray(base64clean(str)); - } - - function blitBuffer(src, dst, offset, length) { - for (var i = 0; i < length; ++i) { - if (i + offset >= dst.length || i >= src.length) break; - dst[i + offset] = src[i]; - } - - return i; - } // ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass - // the `instanceof` check but they should be treated as of that type. - // See: https://github.com/feross/buffer/issues/166 - - - function isInstance(obj, type) { - return obj instanceof type || obj != null && obj.constructor != null && obj.constructor.name != null && obj.constructor.name === type.name; - } - - function numberIsNaN(obj) { - // For IE11 support - return obj !== obj; // eslint-disable-line no-self-compare - } // Create lookup table for `toString('hex')` - // See: https://github.com/feross/buffer/issues/219 - - - var hexSliceLookupTable = function () { - var alphabet = '0123456789abcdef'; - var table = new Array(256); - - for (var i = 0; i < 16; ++i) { - var i16 = i * 16; - - for (var j = 0; j < 16; ++j) { - table[i16 + j] = alphabet[i] + alphabet[j]; - } - } - - return table; - }(); -}); -var buffer_1 = buffer$1.Buffer; -buffer$1.SlowBuffer; -buffer$1.INSPECT_MAX_BYTES; -buffer$1.kMaxLength; -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */ - -/* global Reflect, Promise */ - -var _extendStatics = function extendStatics(d, b) { - _extendStatics = Object.setPrototypeOf || { - __proto__: [] - } instanceof Array && function (d, b) { - d.__proto__ = b; - } || function (d, b) { - for (var p in b) { - if (b.hasOwnProperty(p)) d[p] = b[p]; - } - }; - - return _extendStatics(d, b); -}; - -function __extends(d, b) { - _extendStatics(d, b); - - function __() { - this.constructor = d; - } - - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -} - -var _assign = function __assign() { - _assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - - for (var p in s) { - if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - } - - return t; - }; - - return _assign.apply(this, arguments); -}; -/** @public */ - - -var BSONError = -/** @class */ -function (_super) { - __extends(BSONError, _super); - - function BSONError(message) { - var _this = _super.call(this, message) || this; - - Object.setPrototypeOf(_this, BSONError.prototype); - return _this; - } - - Object.defineProperty(BSONError.prototype, "name", { - get: function get() { - return 'BSONError'; - }, - enumerable: false, - configurable: true - }); - return BSONError; -}(Error); -/** @public */ - - -var BSONTypeError = -/** @class */ -function (_super) { - __extends(BSONTypeError, _super); - - function BSONTypeError(message) { - var _this = _super.call(this, message) || this; - - Object.setPrototypeOf(_this, BSONTypeError.prototype); - return _this; - } - - Object.defineProperty(BSONTypeError.prototype, "name", { - get: function get() { - return 'BSONTypeError'; - }, - enumerable: false, - configurable: true - }); - return BSONTypeError; -}(TypeError); - -function checkForMath(potentialGlobal) { - // eslint-disable-next-line eqeqeq - return potentialGlobal && potentialGlobal.Math == Math && potentialGlobal; -} // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 - - -function getGlobal() { - // eslint-disable-next-line no-undef - return checkForMath((typeof globalThis === "undefined" ? "undefined" : _typeof(globalThis)) === 'object' && globalThis) || checkForMath((typeof window === "undefined" ? "undefined" : _typeof(window)) === 'object' && window) || checkForMath((typeof self === "undefined" ? "undefined" : _typeof(self)) === 'object' && self) || checkForMath((typeof __webpack_require__.g === "undefined" ? "undefined" : _typeof(__webpack_require__.g)) === 'object' && __webpack_require__.g) || Function('return this')(); -} -/** - * Normalizes our expected stringified form of a function across versions of node - * @param fn - The function to stringify - */ - - -function normalizedFunctionString(fn) { - return fn.toString().replace('function(', 'function ('); -} - -function isReactNative() { - var g = getGlobal(); - return _typeof(g.navigator) === 'object' && g.navigator.product === 'ReactNative'; -} - -var insecureRandomBytes = function insecureRandomBytes(size) { - var insecureWarning = isReactNative() ? 'BSON: For React Native please polyfill crypto.getRandomValues, e.g. using: https://www.npmjs.com/package/react-native-get-random-values.' : 'BSON: No cryptographic implementation for random bytes present, falling back to a less secure implementation.'; - console.warn(insecureWarning); - var result = buffer_1.alloc(size); - - for (var i = 0; i < size; ++i) { - result[i] = Math.floor(Math.random() * 256); - } - - return result; -}; - -var detectRandomBytes = function detectRandomBytes() { - if (typeof window !== 'undefined') { - // browser crypto implementation(s) - var target_1 = window.crypto || window.msCrypto; // allow for IE11 - - if (target_1 && target_1.getRandomValues) { - return function (size) { - return target_1.getRandomValues(buffer_1.alloc(size)); - }; - } - } - - if (typeof __webpack_require__.g !== 'undefined' && __webpack_require__.g.crypto && __webpack_require__.g.crypto.getRandomValues) { - // allow for RN packages such as https://www.npmjs.com/package/react-native-get-random-values to populate global - return function (size) { - return __webpack_require__.g.crypto.getRandomValues(buffer_1.alloc(size)); - }; - } - - var requiredRandomBytes; - - try { - // eslint-disable-next-line @typescript-eslint/no-var-requires - requiredRandomBytes = (__webpack_require__(462)/* .randomBytes */ .O6); - } catch (e) {// keep the fallback - } // NOTE: in transpiled cases the above require might return null/undefined - - - return requiredRandomBytes || insecureRandomBytes; -}; - -var randomBytes = detectRandomBytes(); - -function isAnyArrayBuffer(value) { - return ['[object ArrayBuffer]', '[object SharedArrayBuffer]'].includes(Object.prototype.toString.call(value)); -} - -function isUint8Array(value) { - return Object.prototype.toString.call(value) === '[object Uint8Array]'; -} - -function isBigInt64Array(value) { - return Object.prototype.toString.call(value) === '[object BigInt64Array]'; -} - -function isBigUInt64Array(value) { - return Object.prototype.toString.call(value) === '[object BigUint64Array]'; -} - -function isRegExp(d) { - return Object.prototype.toString.call(d) === '[object RegExp]'; -} - -function isMap(d) { - return Object.prototype.toString.call(d) === '[object Map]'; -} // To ensure that 0.4 of node works correctly - - -function isDate(d) { - return isObjectLike(d) && Object.prototype.toString.call(d) === '[object Date]'; -} -/** - * @internal - * this is to solve the `'someKey' in x` problem where x is unknown. - * https://github.com/typescript-eslint/typescript-eslint/issues/1071#issuecomment-541955753 - */ - - -function isObjectLike(candidate) { - return _typeof(candidate) === 'object' && candidate !== null; -} - -function deprecate(fn, message) { - var warned = false; - - function deprecated() { - var args = []; - - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - - if (!warned) { - console.warn(message); - warned = true; - } - - return fn.apply(this, args); - } - - return deprecated; -} -/** - * Makes sure that, if a Uint8Array is passed in, it is wrapped in a Buffer. - * - * @param potentialBuffer - The potential buffer - * @returns Buffer the input if potentialBuffer is a buffer, or a buffer that - * wraps a passed in Uint8Array - * @throws BSONTypeError If anything other than a Buffer or Uint8Array is passed in - */ - - -function ensureBuffer(potentialBuffer) { - if (ArrayBuffer.isView(potentialBuffer)) { - return buffer_1.from(potentialBuffer.buffer, potentialBuffer.byteOffset, potentialBuffer.byteLength); - } - - if (isAnyArrayBuffer(potentialBuffer)) { - return buffer_1.from(potentialBuffer); - } - - throw new BSONTypeError('Must use either Buffer or TypedArray'); -} // Validation regex for v4 uuid (validates with or without dashes) - - -var VALIDATION_REGEX = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|[0-9a-f]{12}4[0-9a-f]{3}[89ab][0-9a-f]{15})$/i; - -var uuidValidateString = function uuidValidateString(str) { - return typeof str === 'string' && VALIDATION_REGEX.test(str); -}; - -var uuidHexStringToBuffer = function uuidHexStringToBuffer(hexString) { - if (!uuidValidateString(hexString)) { - throw new BSONTypeError('UUID string representations must be a 32 or 36 character hex string (dashes excluded/included). Format: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" or "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx".'); - } - - var sanitizedHexString = hexString.replace(/-/g, ''); - return buffer_1.from(sanitizedHexString, 'hex'); -}; - -var bufferToUuidHexString = function bufferToUuidHexString(buffer, includeDashes) { - if (includeDashes === void 0) { - includeDashes = true; - } - - return includeDashes ? buffer.toString('hex', 0, 4) + '-' + buffer.toString('hex', 4, 6) + '-' + buffer.toString('hex', 6, 8) + '-' + buffer.toString('hex', 8, 10) + '-' + buffer.toString('hex', 10, 16) : buffer.toString('hex'); -}; - -var BYTE_LENGTH = 16; -var kId$1 = Symbol('id'); -/** - * A class representation of the BSON UUID type. - * @public - */ - -var UUID = -/** @class */ -function () { - /** - * Create an UUID type - * - * @param input - Can be a 32 or 36 character hex string (dashes excluded/included) or a 16 byte binary Buffer. - */ - function UUID(input) { - if (typeof input === 'undefined') { - // The most common use case (blank id, new UUID() instance) - this.id = UUID.generate(); - } else if (input instanceof UUID) { - this[kId$1] = buffer_1.from(input.id); - this.__id = input.__id; - } else if (ArrayBuffer.isView(input) && input.byteLength === BYTE_LENGTH) { - this.id = ensureBuffer(input); - } else if (typeof input === 'string') { - this.id = uuidHexStringToBuffer(input); - } else { - throw new BSONTypeError('Argument passed in UUID constructor must be a UUID, a 16 byte Buffer or a 32/36 character hex string (dashes excluded/included, format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).'); - } - } - - Object.defineProperty(UUID.prototype, "id", { - /** - * The UUID bytes - * @readonly - */ - get: function get() { - return this[kId$1]; - }, - set: function set(value) { - this[kId$1] = value; - - if (UUID.cacheHexString) { - this.__id = bufferToUuidHexString(value); - } - }, - enumerable: false, - configurable: true - }); - /** - * Generate a 16 byte uuid v4 buffer used in UUIDs - */ - - /** - * Returns the UUID id as a 32 or 36 character hex string representation, excluding/including dashes (defaults to 36 character dash separated) - * @param includeDashes - should the string exclude dash-separators. - * */ - - UUID.prototype.toHexString = function (includeDashes) { - if (includeDashes === void 0) { - includeDashes = true; - } - - if (UUID.cacheHexString && this.__id) { - return this.__id; - } - - var uuidHexString = bufferToUuidHexString(this.id, includeDashes); - - if (UUID.cacheHexString) { - this.__id = uuidHexString; - } - - return uuidHexString; - }; - /** - * Converts the id into a 36 character (dashes included) hex string, unless a encoding is specified. - */ - - - UUID.prototype.toString = function (encoding) { - return encoding ? this.id.toString(encoding) : this.toHexString(); - }; - /** - * Converts the id into its JSON string representation. - * A 36 character (dashes included) hex string in the format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx - */ - - - UUID.prototype.toJSON = function () { - return this.toHexString(); - }; - /** - * Compares the equality of this UUID with `otherID`. - * - * @param otherId - UUID instance to compare against. - */ - - - UUID.prototype.equals = function (otherId) { - if (!otherId) { - return false; - } - - if (otherId instanceof UUID) { - return otherId.id.equals(this.id); - } - - try { - return new UUID(otherId).id.equals(this.id); - } catch (_a) { - return false; - } - }; - /** - * Creates a Binary instance from the current UUID. - */ - - - UUID.prototype.toBinary = function () { - return new _Binary(this.id, _Binary.SUBTYPE_UUID); - }; - /** - * Generates a populated buffer containing a v4 uuid - */ - - - UUID.generate = function () { - var bytes = randomBytes(BYTE_LENGTH); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - // Kindly borrowed from https://github.com/uuidjs/uuid/blob/master/src/v4.js - - bytes[6] = bytes[6] & 0x0f | 0x40; - bytes[8] = bytes[8] & 0x3f | 0x80; - return buffer_1.from(bytes); - }; - /** - * Checks if a value is a valid bson UUID - * @param input - UUID, string or Buffer to validate. - */ - - - UUID.isValid = function (input) { - if (!input) { - return false; - } - - if (input instanceof UUID) { - return true; - } - - if (typeof input === 'string') { - return uuidValidateString(input); - } - - if (isUint8Array(input)) { - // check for length & uuid version (https://tools.ietf.org/html/rfc4122#section-4.1.3) - if (input.length !== BYTE_LENGTH) { - return false; - } - - try { - // get this byte as hex: xxxxxxxx-xxxx-XXxx-xxxx-xxxxxxxxxxxx - // check first part as uuid version: xxxxxxxx-xxxx-Xxxx-xxxx-xxxxxxxxxxxx - return parseInt(input[6].toString(16)[0], 10) === _Binary.SUBTYPE_UUID; - } catch (_a) { - return false; - } - } - - return false; - }; - /** - * Creates an UUID from a hex string representation of an UUID. - * @param hexString - 32 or 36 character hex string (dashes excluded/included). - */ - - - UUID.createFromHexString = function (hexString) { - var buffer = uuidHexStringToBuffer(hexString); - return new UUID(buffer); - }; - /** - * Converts to a string representation of this Id. - * - * @returns return the 36 character hex string representation. - * @internal - */ - - - UUID.prototype[Symbol["for"]('nodejs.util.inspect.custom')] = function () { - return this.inspect(); - }; - - UUID.prototype.inspect = function () { - return "new UUID(\"" + this.toHexString() + "\")"; - }; - - return UUID; -}(); - -Object.defineProperty(UUID.prototype, '_bsontype', { - value: 'UUID' -}); -/** - * A class representation of the BSON Binary type. - * @public - * @category BSONType - */ - -var _Binary = -/** @class */ -function () { - /** - * @param buffer - a buffer object containing the binary data. - * @param subType - the option binary type. - */ - function Binary(buffer, subType) { - if (!(this instanceof Binary)) return new Binary(buffer, subType); - - if (!(buffer == null) && !(typeof buffer === 'string') && !ArrayBuffer.isView(buffer) && !(buffer instanceof ArrayBuffer) && !Array.isArray(buffer)) { - throw new BSONTypeError('Binary can only be constructed from string, Buffer, TypedArray, or Array'); - } - - this.sub_type = subType !== null && subType !== void 0 ? subType : Binary.BSON_BINARY_SUBTYPE_DEFAULT; - - if (buffer == null) { - // create an empty binary buffer - this.buffer = buffer_1.alloc(Binary.BUFFER_SIZE); - this.position = 0; - } else { - if (typeof buffer === 'string') { - // string - this.buffer = buffer_1.from(buffer, 'binary'); - } else if (Array.isArray(buffer)) { - // number[] - this.buffer = buffer_1.from(buffer); - } else { - // Buffer | TypedArray | ArrayBuffer - this.buffer = ensureBuffer(buffer); - } - - this.position = this.buffer.byteLength; - } - } - /** - * Updates this binary with byte_value. - * - * @param byteValue - a single byte we wish to write. - */ - - - Binary.prototype.put = function (byteValue) { - // If it's a string and a has more than one character throw an error - if (typeof byteValue === 'string' && byteValue.length !== 1) { - throw new BSONTypeError('only accepts single character String'); - } else if (typeof byteValue !== 'number' && byteValue.length !== 1) throw new BSONTypeError('only accepts single character Uint8Array or Array'); // Decode the byte value once - - - var decodedByte; - - if (typeof byteValue === 'string') { - decodedByte = byteValue.charCodeAt(0); - } else if (typeof byteValue === 'number') { - decodedByte = byteValue; - } else { - decodedByte = byteValue[0]; - } - - if (decodedByte < 0 || decodedByte > 255) { - throw new BSONTypeError('only accepts number in a valid unsigned byte range 0-255'); - } - - if (this.buffer.length > this.position) { - this.buffer[this.position++] = decodedByte; - } else { - var buffer = buffer_1.alloc(Binary.BUFFER_SIZE + this.buffer.length); // Combine the two buffers together - - this.buffer.copy(buffer, 0, 0, this.buffer.length); - this.buffer = buffer; - this.buffer[this.position++] = decodedByte; - } - }; - /** - * Writes a buffer or string to the binary. - * - * @param sequence - a string or buffer to be written to the Binary BSON object. - * @param offset - specify the binary of where to write the content. - */ - - - Binary.prototype.write = function (sequence, offset) { - offset = typeof offset === 'number' ? offset : this.position; // If the buffer is to small let's extend the buffer - - if (this.buffer.length < offset + sequence.length) { - var buffer = buffer_1.alloc(this.buffer.length + sequence.length); - this.buffer.copy(buffer, 0, 0, this.buffer.length); // Assign the new buffer - - this.buffer = buffer; - } - - if (ArrayBuffer.isView(sequence)) { - this.buffer.set(ensureBuffer(sequence), offset); - this.position = offset + sequence.byteLength > this.position ? offset + sequence.length : this.position; - } else if (typeof sequence === 'string') { - this.buffer.write(sequence, offset, sequence.length, 'binary'); - this.position = offset + sequence.length > this.position ? offset + sequence.length : this.position; - } - }; - /** - * Reads **length** bytes starting at **position**. - * - * @param position - read from the given position in the Binary. - * @param length - the number of bytes to read. - */ - - - Binary.prototype.read = function (position, length) { - length = length && length > 0 ? length : this.position; // Let's return the data based on the type we have - - return this.buffer.slice(position, position + length); - }; - /** - * Returns the value of this binary as a string. - * @param asRaw - Will skip converting to a string - * @remarks - * This is handy when calling this function conditionally for some key value pairs and not others - */ - - - Binary.prototype.value = function (asRaw) { - asRaw = !!asRaw; // Optimize to serialize for the situation where the data == size of buffer - - if (asRaw && this.buffer.length === this.position) { - return this.buffer; - } // If it's a node.js buffer object - - - if (asRaw) { - return this.buffer.slice(0, this.position); - } - - return this.buffer.toString('binary', 0, this.position); - }; - /** the length of the binary sequence */ - - - Binary.prototype.length = function () { - return this.position; - }; - - Binary.prototype.toJSON = function () { - return this.buffer.toString('base64'); - }; - - Binary.prototype.toString = function (format) { - return this.buffer.toString(format); - }; - /** @internal */ - - - Binary.prototype.toExtendedJSON = function (options) { - options = options || {}; - var base64String = this.buffer.toString('base64'); - var subType = Number(this.sub_type).toString(16); - - if (options.legacy) { - return { - $binary: base64String, - $type: subType.length === 1 ? '0' + subType : subType - }; - } - - return { - $binary: { - base64: base64String, - subType: subType.length === 1 ? '0' + subType : subType - } - }; - }; - - Binary.prototype.toUUID = function () { - if (this.sub_type === Binary.SUBTYPE_UUID) { - return new UUID(this.buffer.slice(0, this.position)); - } - - throw new BSONError("Binary sub_type \"" + this.sub_type + "\" is not supported for converting to UUID. Only \"" + Binary.SUBTYPE_UUID + "\" is currently supported."); - }; - /** @internal */ - - - Binary.fromExtendedJSON = function (doc, options) { - options = options || {}; - var data; - var type; - - if ('$binary' in doc) { - if (options.legacy && typeof doc.$binary === 'string' && '$type' in doc) { - type = doc.$type ? parseInt(doc.$type, 16) : 0; - data = buffer_1.from(doc.$binary, 'base64'); - } else { - if (typeof doc.$binary !== 'string') { - type = doc.$binary.subType ? parseInt(doc.$binary.subType, 16) : 0; - data = buffer_1.from(doc.$binary.base64, 'base64'); - } - } - } else if ('$uuid' in doc) { - type = 4; - data = uuidHexStringToBuffer(doc.$uuid); - } - - if (!data) { - throw new BSONTypeError("Unexpected Binary Extended JSON format " + JSON.stringify(doc)); - } - - return new Binary(data, type); - }; - /** @internal */ - - - Binary.prototype[Symbol["for"]('nodejs.util.inspect.custom')] = function () { - return this.inspect(); - }; - - Binary.prototype.inspect = function () { - var asBuffer = this.value(true); - return "new Binary(Buffer.from(\"" + asBuffer.toString('hex') + "\", \"hex\"), " + this.sub_type + ")"; - }; - /** - * Binary default subtype - * @internal - */ - - - Binary.BSON_BINARY_SUBTYPE_DEFAULT = 0; - /** Initial buffer default size */ - - Binary.BUFFER_SIZE = 256; - /** Default BSON type */ - - Binary.SUBTYPE_DEFAULT = 0; - /** Function BSON type */ - - Binary.SUBTYPE_FUNCTION = 1; - /** Byte Array BSON type */ - - Binary.SUBTYPE_BYTE_ARRAY = 2; - /** Deprecated UUID BSON type @deprecated Please use SUBTYPE_UUID */ - - Binary.SUBTYPE_UUID_OLD = 3; - /** UUID BSON type */ - - Binary.SUBTYPE_UUID = 4; - /** MD5 BSON type */ - - Binary.SUBTYPE_MD5 = 5; - /** Encrypted BSON type */ - - Binary.SUBTYPE_ENCRYPTED = 6; - /** Column BSON type */ - - Binary.SUBTYPE_COLUMN = 7; - /** User BSON type */ - - Binary.SUBTYPE_USER_DEFINED = 128; - return Binary; -}(); - -Object.defineProperty(_Binary.prototype, '_bsontype', { - value: 'Binary' -}); -/** - * A class representation of the BSON Code type. - * @public - * @category BSONType - */ - -var _Code = -/** @class */ -function () { - /** - * @param code - a string or function. - * @param scope - an optional scope for the function. - */ - function Code(code, scope) { - if (!(this instanceof Code)) return new Code(code, scope); - this.code = code; - this.scope = scope; - } - - Code.prototype.toJSON = function () { - return { - code: this.code, - scope: this.scope - }; - }; - /** @internal */ - - - Code.prototype.toExtendedJSON = function () { - if (this.scope) { - return { - $code: this.code, - $scope: this.scope - }; - } - - return { - $code: this.code - }; - }; - /** @internal */ - - - Code.fromExtendedJSON = function (doc) { - return new Code(doc.$code, doc.$scope); - }; - /** @internal */ - - - Code.prototype[Symbol["for"]('nodejs.util.inspect.custom')] = function () { - return this.inspect(); - }; - - Code.prototype.inspect = function () { - var codeJson = this.toJSON(); - return "new Code(\"" + codeJson.code + "\"" + (codeJson.scope ? ", " + JSON.stringify(codeJson.scope) : '') + ")"; - }; - - return Code; -}(); - -Object.defineProperty(_Code.prototype, '_bsontype', { - value: 'Code' -}); -/** @internal */ - -function isDBRefLike(value) { - return isObjectLike(value) && value.$id != null && typeof value.$ref === 'string' && (value.$db == null || typeof value.$db === 'string'); -} -/** - * A class representation of the BSON DBRef type. - * @public - * @category BSONType - */ - - -var _DBRef = -/** @class */ -function () { - /** - * @param collection - the collection name. - * @param oid - the reference ObjectId. - * @param db - optional db name, if omitted the reference is local to the current db. - */ - function DBRef(collection, oid, db, fields) { - if (!(this instanceof DBRef)) return new DBRef(collection, oid, db, fields); // check if namespace has been provided - - var parts = collection.split('.'); - - if (parts.length === 2) { - db = parts.shift(); // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - - collection = parts.shift(); - } - - this.collection = collection; - this.oid = oid; - this.db = db; - this.fields = fields || {}; - } - - Object.defineProperty(DBRef.prototype, "namespace", { - // Property provided for compatibility with the 1.x parser - // the 1.x parser used a "namespace" property, while 4.x uses "collection" - - /** @internal */ - get: function get() { - return this.collection; - }, - set: function set(value) { - this.collection = value; - }, - enumerable: false, - configurable: true - }); - - DBRef.prototype.toJSON = function () { - var o = Object.assign({ - $ref: this.collection, - $id: this.oid - }, this.fields); - if (this.db != null) o.$db = this.db; - return o; - }; - /** @internal */ - - - DBRef.prototype.toExtendedJSON = function (options) { - options = options || {}; - var o = { - $ref: this.collection, - $id: this.oid - }; - - if (options.legacy) { - return o; - } - - if (this.db) o.$db = this.db; - o = Object.assign(o, this.fields); - return o; - }; - /** @internal */ - - - DBRef.fromExtendedJSON = function (doc) { - var copy = Object.assign({}, doc); - delete copy.$ref; - delete copy.$id; - delete copy.$db; - return new DBRef(doc.$ref, doc.$id, doc.$db, copy); - }; - /** @internal */ - - - DBRef.prototype[Symbol["for"]('nodejs.util.inspect.custom')] = function () { - return this.inspect(); - }; - - DBRef.prototype.inspect = function () { - // NOTE: if OID is an ObjectId class it will just print the oid string. - var oid = this.oid === undefined || this.oid.toString === undefined ? this.oid : this.oid.toString(); - return "new DBRef(\"" + this.namespace + "\", new ObjectId(\"" + oid + "\")" + (this.db ? ", \"" + this.db + "\"" : '') + ")"; - }; - - return DBRef; -}(); - -Object.defineProperty(_DBRef.prototype, '_bsontype', { - value: 'DBRef' -}); -/** - * wasm optimizations, to do native i64 multiplication and divide - */ - -var wasm = undefined; - -try { - wasm = new WebAssembly.Instance(new WebAssembly.Module( // prettier-ignore - new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11])), {}).exports; -} catch (_a) {// no wasm support -} - -var TWO_PWR_16_DBL = 1 << 16; -var TWO_PWR_24_DBL = 1 << 24; -var TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL; -var TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL; -var TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2; -/** A cache of the Long representations of small integer values. */ - -var INT_CACHE = {}; -/** A cache of the Long representations of small unsigned integer values. */ - -var UINT_CACHE = {}; -/** - * A class representing a 64-bit integer - * @public - * @category BSONType - * @remarks - * The internal representation of a long is the two given signed, 32-bit values. - * We use 32-bit pieces because these are the size of integers on which - * Javascript performs bit-operations. For operations like addition and - * multiplication, we split each number into 16 bit pieces, which can easily be - * multiplied within Javascript's floating-point representation without overflow - * or change in sign. - * In the algorithms below, we frequently reduce the negative case to the - * positive case by negating the input(s) and then post-processing the result. - * Note that we must ALWAYS check specially whether those values are MIN_VALUE - * (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as - * a positive number, it overflows back into a negative). Not handling this - * case would often result in infinite recursion. - * Common constant values ZERO, ONE, NEG_ONE, etc. are found as static properties on this class. - */ - -var _Long = -/** @class */ -function () { - /** - * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers. - * See the from* functions below for more convenient ways of constructing Longs. - * - * Acceptable signatures are: - * - Long(low, high, unsigned?) - * - Long(bigint, unsigned?) - * - Long(string, unsigned?) - * - * @param low - The low (signed) 32 bits of the long - * @param high - The high (signed) 32 bits of the long - * @param unsigned - Whether unsigned or not, defaults to signed - */ - function Long(low, high, unsigned) { - if (low === void 0) { - low = 0; - } - - if (!(this instanceof Long)) return new Long(low, high, unsigned); - - if (typeof low === 'bigint') { - Object.assign(this, Long.fromBigInt(low, !!high)); - } else if (typeof low === 'string') { - Object.assign(this, Long.fromString(low, !!high)); - } else { - this.low = low | 0; - this.high = high | 0; - this.unsigned = !!unsigned; - } - - Object.defineProperty(this, '__isLong__', { - value: true, - configurable: false, - writable: false, - enumerable: false - }); - } - /** - * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. - * Each is assumed to use 32 bits. - * @param lowBits - The low 32 bits - * @param highBits - The high 32 bits - * @param unsigned - Whether unsigned or not, defaults to signed - * @returns The corresponding Long value - */ - - - Long.fromBits = function (lowBits, highBits, unsigned) { - return new Long(lowBits, highBits, unsigned); - }; - /** - * Returns a Long representing the given 32 bit integer value. - * @param value - The 32 bit integer in question - * @param unsigned - Whether unsigned or not, defaults to signed - * @returns The corresponding Long value - */ - - - Long.fromInt = function (value, unsigned) { - var obj, cachedObj, cache; - - if (unsigned) { - value >>>= 0; - - if (cache = 0 <= value && value < 256) { - cachedObj = UINT_CACHE[value]; - if (cachedObj) return cachedObj; - } - - obj = Long.fromBits(value, (value | 0) < 0 ? -1 : 0, true); - if (cache) UINT_CACHE[value] = obj; - return obj; - } else { - value |= 0; - - if (cache = -128 <= value && value < 128) { - cachedObj = INT_CACHE[value]; - if (cachedObj) return cachedObj; - } - - obj = Long.fromBits(value, value < 0 ? -1 : 0, false); - if (cache) INT_CACHE[value] = obj; - return obj; - } - }; - /** - * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned. - * @param value - The number in question - * @param unsigned - Whether unsigned or not, defaults to signed - * @returns The corresponding Long value - */ - - - Long.fromNumber = function (value, unsigned) { - if (isNaN(value)) return unsigned ? Long.UZERO : Long.ZERO; - - if (unsigned) { - if (value < 0) return Long.UZERO; - if (value >= TWO_PWR_64_DBL) return Long.MAX_UNSIGNED_VALUE; - } else { - if (value <= -TWO_PWR_63_DBL) return Long.MIN_VALUE; - if (value + 1 >= TWO_PWR_63_DBL) return Long.MAX_VALUE; - } - - if (value < 0) return Long.fromNumber(-value, unsigned).neg(); - return Long.fromBits(value % TWO_PWR_32_DBL | 0, value / TWO_PWR_32_DBL | 0, unsigned); - }; - /** - * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned. - * @param value - The number in question - * @param unsigned - Whether unsigned or not, defaults to signed - * @returns The corresponding Long value - */ - - - Long.fromBigInt = function (value, unsigned) { - return Long.fromString(value.toString(), unsigned); - }; - /** - * Returns a Long representation of the given string, written using the specified radix. - * @param str - The textual representation of the Long - * @param unsigned - Whether unsigned or not, defaults to signed - * @param radix - The radix in which the text is written (2-36), defaults to 10 - * @returns The corresponding Long value - */ - - - Long.fromString = function (str, unsigned, radix) { - if (str.length === 0) throw Error('empty string'); - if (str === 'NaN' || str === 'Infinity' || str === '+Infinity' || str === '-Infinity') return Long.ZERO; - - if (typeof unsigned === 'number') { - // For goog.math.long compatibility - radix = unsigned, unsigned = false; - } else { - unsigned = !!unsigned; - } - - radix = radix || 10; - if (radix < 2 || 36 < radix) throw RangeError('radix'); - var p; - if ((p = str.indexOf('-')) > 0) throw Error('interior hyphen');else if (p === 0) { - return Long.fromString(str.substring(1), unsigned, radix).neg(); - } // Do several (8) digits each time through the loop, so as to - // minimize the calls to the very expensive emulated div. - - var radixToPower = Long.fromNumber(Math.pow(radix, 8)); - var result = Long.ZERO; - - for (var i = 0; i < str.length; i += 8) { - var size = Math.min(8, str.length - i), - value = parseInt(str.substring(i, i + size), radix); - - if (size < 8) { - var power = Long.fromNumber(Math.pow(radix, size)); - result = result.mul(power).add(Long.fromNumber(value)); - } else { - result = result.mul(radixToPower); - result = result.add(Long.fromNumber(value)); - } - } - - result.unsigned = unsigned; - return result; - }; - /** - * Creates a Long from its byte representation. - * @param bytes - Byte representation - * @param unsigned - Whether unsigned or not, defaults to signed - * @param le - Whether little or big endian, defaults to big endian - * @returns The corresponding Long value - */ - - - Long.fromBytes = function (bytes, unsigned, le) { - return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned); - }; - /** - * Creates a Long from its little endian byte representation. - * @param bytes - Little endian byte representation - * @param unsigned - Whether unsigned or not, defaults to signed - * @returns The corresponding Long value - */ - - - Long.fromBytesLE = function (bytes, unsigned) { - return new Long(bytes[0] | bytes[1] << 8 | bytes[2] << 16 | bytes[3] << 24, bytes[4] | bytes[5] << 8 | bytes[6] << 16 | bytes[7] << 24, unsigned); - }; - /** - * Creates a Long from its big endian byte representation. - * @param bytes - Big endian byte representation - * @param unsigned - Whether unsigned or not, defaults to signed - * @returns The corresponding Long value - */ - - - Long.fromBytesBE = function (bytes, unsigned) { - return new Long(bytes[4] << 24 | bytes[5] << 16 | bytes[6] << 8 | bytes[7], bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3], unsigned); - }; - /** - * Tests if the specified object is a Long. - */ - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - - - Long.isLong = function (value) { - return isObjectLike(value) && value['__isLong__'] === true; - }; - /** - * Converts the specified value to a Long. - * @param unsigned - Whether unsigned or not, defaults to signed - */ - - - Long.fromValue = function (val, unsigned) { - if (typeof val === 'number') return Long.fromNumber(val, unsigned); - if (typeof val === 'string') return Long.fromString(val, unsigned); // Throws for non-objects, converts non-instanceof Long: - - return Long.fromBits(val.low, val.high, typeof unsigned === 'boolean' ? unsigned : val.unsigned); - }; - /** Returns the sum of this and the specified Long. */ - - - Long.prototype.add = function (addend) { - if (!Long.isLong(addend)) addend = Long.fromValue(addend); // Divide each number into 4 chunks of 16 bits, and then sum the chunks. - - var a48 = this.high >>> 16; - var a32 = this.high & 0xffff; - var a16 = this.low >>> 16; - var a00 = this.low & 0xffff; - var b48 = addend.high >>> 16; - var b32 = addend.high & 0xffff; - var b16 = addend.low >>> 16; - var b00 = addend.low & 0xffff; - var c48 = 0, - c32 = 0, - c16 = 0, - c00 = 0; - c00 += a00 + b00; - c16 += c00 >>> 16; - c00 &= 0xffff; - c16 += a16 + b16; - c32 += c16 >>> 16; - c16 &= 0xffff; - c32 += a32 + b32; - c48 += c32 >>> 16; - c32 &= 0xffff; - c48 += a48 + b48; - c48 &= 0xffff; - return Long.fromBits(c16 << 16 | c00, c48 << 16 | c32, this.unsigned); - }; - /** - * Returns the sum of this and the specified Long. - * @returns Sum - */ - - - Long.prototype.and = function (other) { - if (!Long.isLong(other)) other = Long.fromValue(other); - return Long.fromBits(this.low & other.low, this.high & other.high, this.unsigned); - }; - /** - * Compares this Long's value with the specified's. - * @returns 0 if they are the same, 1 if the this is greater and -1 if the given one is greater - */ - - - Long.prototype.compare = function (other) { - if (!Long.isLong(other)) other = Long.fromValue(other); - if (this.eq(other)) return 0; - var thisNeg = this.isNegative(), - otherNeg = other.isNegative(); - if (thisNeg && !otherNeg) return -1; - if (!thisNeg && otherNeg) return 1; // At this point the sign bits are the same - - if (!this.unsigned) return this.sub(other).isNegative() ? -1 : 1; // Both are positive if at least one is unsigned - - return other.high >>> 0 > this.high >>> 0 || other.high === this.high && other.low >>> 0 > this.low >>> 0 ? -1 : 1; - }; - /** This is an alias of {@link Long.compare} */ - - - Long.prototype.comp = function (other) { - return this.compare(other); - }; - /** - * Returns this Long divided by the specified. The result is signed if this Long is signed or unsigned if this Long is unsigned. - * @returns Quotient - */ - - - Long.prototype.divide = function (divisor) { - if (!Long.isLong(divisor)) divisor = Long.fromValue(divisor); - if (divisor.isZero()) throw Error('division by zero'); // use wasm support if present - - if (wasm) { - // guard against signed division overflow: the largest - // negative number / -1 would be 1 larger than the largest - // positive number, due to two's complement. - if (!this.unsigned && this.high === -0x80000000 && divisor.low === -1 && divisor.high === -1) { - // be consistent with non-wasm code path - return this; - } - - var low = (this.unsigned ? wasm.div_u : wasm.div_s)(this.low, this.high, divisor.low, divisor.high); - return Long.fromBits(low, wasm.get_high(), this.unsigned); - } - - if (this.isZero()) return this.unsigned ? Long.UZERO : Long.ZERO; - var approx, rem, res; - - if (!this.unsigned) { - // This section is only relevant for signed longs and is derived from the - // closure library as a whole. - if (this.eq(Long.MIN_VALUE)) { - if (divisor.eq(Long.ONE) || divisor.eq(Long.NEG_ONE)) return Long.MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE - else if (divisor.eq(Long.MIN_VALUE)) return Long.ONE;else { - // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|. - var halfThis = this.shr(1); - approx = halfThis.div(divisor).shl(1); - - if (approx.eq(Long.ZERO)) { - return divisor.isNegative() ? Long.ONE : Long.NEG_ONE; - } else { - rem = this.sub(divisor.mul(approx)); - res = approx.add(rem.div(divisor)); - return res; - } - } - } else if (divisor.eq(Long.MIN_VALUE)) return this.unsigned ? Long.UZERO : Long.ZERO; - - if (this.isNegative()) { - if (divisor.isNegative()) return this.neg().div(divisor.neg()); - return this.neg().div(divisor).neg(); - } else if (divisor.isNegative()) return this.div(divisor.neg()).neg(); - - res = Long.ZERO; - } else { - // The algorithm below has not been made for unsigned longs. It's therefore - // required to take special care of the MSB prior to running it. - if (!divisor.unsigned) divisor = divisor.toUnsigned(); - if (divisor.gt(this)) return Long.UZERO; - if (divisor.gt(this.shru(1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true - return Long.UONE; - res = Long.UZERO; - } // Repeat the following until the remainder is less than other: find a - // floating-point that approximates remainder / other *from below*, add this - // into the result, and subtract it from the remainder. It is critical that - // the approximate value is less than or equal to the real value so that the - // remainder never becomes negative. - - - rem = this; - - while (rem.gte(divisor)) { - // Approximate the result of division. This may be a little greater or - // smaller than the actual value. - approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber())); // We will tweak the approximate result by changing it in the 48-th digit or - // the smallest non-fractional digit, whichever is larger. - - var log2 = Math.ceil(Math.log(approx) / Math.LN2); - var delta = log2 <= 48 ? 1 : Math.pow(2, log2 - 48); // Decrease the approximation until it is smaller than the remainder. Note - // that if it is too large, the product overflows and is negative. - - var approxRes = Long.fromNumber(approx); - var approxRem = approxRes.mul(divisor); - - while (approxRem.isNegative() || approxRem.gt(rem)) { - approx -= delta; - approxRes = Long.fromNumber(approx, this.unsigned); - approxRem = approxRes.mul(divisor); - } // We know the answer can't be zero... and actually, zero would cause - // infinite recursion since we would make no progress. - - - if (approxRes.isZero()) approxRes = Long.ONE; - res = res.add(approxRes); - rem = rem.sub(approxRem); - } - - return res; - }; - /**This is an alias of {@link Long.divide} */ - - - Long.prototype.div = function (divisor) { - return this.divide(divisor); - }; - /** - * Tests if this Long's value equals the specified's. - * @param other - Other value - */ - - - Long.prototype.equals = function (other) { - if (!Long.isLong(other)) other = Long.fromValue(other); - if (this.unsigned !== other.unsigned && this.high >>> 31 === 1 && other.high >>> 31 === 1) return false; - return this.high === other.high && this.low === other.low; - }; - /** This is an alias of {@link Long.equals} */ - - - Long.prototype.eq = function (other) { - return this.equals(other); - }; - /** Gets the high 32 bits as a signed integer. */ - - - Long.prototype.getHighBits = function () { - return this.high; - }; - /** Gets the high 32 bits as an unsigned integer. */ - - - Long.prototype.getHighBitsUnsigned = function () { - return this.high >>> 0; - }; - /** Gets the low 32 bits as a signed integer. */ - - - Long.prototype.getLowBits = function () { - return this.low; - }; - /** Gets the low 32 bits as an unsigned integer. */ - - - Long.prototype.getLowBitsUnsigned = function () { - return this.low >>> 0; - }; - /** Gets the number of bits needed to represent the absolute value of this Long. */ - - - Long.prototype.getNumBitsAbs = function () { - if (this.isNegative()) { - // Unsigned Longs are never negative - return this.eq(Long.MIN_VALUE) ? 64 : this.neg().getNumBitsAbs(); - } - - var val = this.high !== 0 ? this.high : this.low; - var bit; - - for (bit = 31; bit > 0; bit--) { - if ((val & 1 << bit) !== 0) break; - } - - return this.high !== 0 ? bit + 33 : bit + 1; - }; - /** Tests if this Long's value is greater than the specified's. */ - - - Long.prototype.greaterThan = function (other) { - return this.comp(other) > 0; - }; - /** This is an alias of {@link Long.greaterThan} */ - - - Long.prototype.gt = function (other) { - return this.greaterThan(other); - }; - /** Tests if this Long's value is greater than or equal the specified's. */ - - - Long.prototype.greaterThanOrEqual = function (other) { - return this.comp(other) >= 0; - }; - /** This is an alias of {@link Long.greaterThanOrEqual} */ - - - Long.prototype.gte = function (other) { - return this.greaterThanOrEqual(other); - }; - /** This is an alias of {@link Long.greaterThanOrEqual} */ - - - Long.prototype.ge = function (other) { - return this.greaterThanOrEqual(other); - }; - /** Tests if this Long's value is even. */ - - - Long.prototype.isEven = function () { - return (this.low & 1) === 0; - }; - /** Tests if this Long's value is negative. */ - - - Long.prototype.isNegative = function () { - return !this.unsigned && this.high < 0; - }; - /** Tests if this Long's value is odd. */ - - - Long.prototype.isOdd = function () { - return (this.low & 1) === 1; - }; - /** Tests if this Long's value is positive. */ - - - Long.prototype.isPositive = function () { - return this.unsigned || this.high >= 0; - }; - /** Tests if this Long's value equals zero. */ - - - Long.prototype.isZero = function () { - return this.high === 0 && this.low === 0; - }; - /** Tests if this Long's value is less than the specified's. */ - - - Long.prototype.lessThan = function (other) { - return this.comp(other) < 0; - }; - /** This is an alias of {@link Long#lessThan}. */ - - - Long.prototype.lt = function (other) { - return this.lessThan(other); - }; - /** Tests if this Long's value is less than or equal the specified's. */ - - - Long.prototype.lessThanOrEqual = function (other) { - return this.comp(other) <= 0; - }; - /** This is an alias of {@link Long.lessThanOrEqual} */ - - - Long.prototype.lte = function (other) { - return this.lessThanOrEqual(other); - }; - /** Returns this Long modulo the specified. */ - - - Long.prototype.modulo = function (divisor) { - if (!Long.isLong(divisor)) divisor = Long.fromValue(divisor); // use wasm support if present - - if (wasm) { - var low = (this.unsigned ? wasm.rem_u : wasm.rem_s)(this.low, this.high, divisor.low, divisor.high); - return Long.fromBits(low, wasm.get_high(), this.unsigned); - } - - return this.sub(this.div(divisor).mul(divisor)); - }; - /** This is an alias of {@link Long.modulo} */ - - - Long.prototype.mod = function (divisor) { - return this.modulo(divisor); - }; - /** This is an alias of {@link Long.modulo} */ - - - Long.prototype.rem = function (divisor) { - return this.modulo(divisor); - }; - /** - * Returns the product of this and the specified Long. - * @param multiplier - Multiplier - * @returns Product - */ - - - Long.prototype.multiply = function (multiplier) { - if (this.isZero()) return Long.ZERO; - if (!Long.isLong(multiplier)) multiplier = Long.fromValue(multiplier); // use wasm support if present - - if (wasm) { - var low = wasm.mul(this.low, this.high, multiplier.low, multiplier.high); - return Long.fromBits(low, wasm.get_high(), this.unsigned); - } - - if (multiplier.isZero()) return Long.ZERO; - if (this.eq(Long.MIN_VALUE)) return multiplier.isOdd() ? Long.MIN_VALUE : Long.ZERO; - if (multiplier.eq(Long.MIN_VALUE)) return this.isOdd() ? Long.MIN_VALUE : Long.ZERO; - - if (this.isNegative()) { - if (multiplier.isNegative()) return this.neg().mul(multiplier.neg());else return this.neg().mul(multiplier).neg(); - } else if (multiplier.isNegative()) return this.mul(multiplier.neg()).neg(); // If both longs are small, use float multiplication - - - if (this.lt(Long.TWO_PWR_24) && multiplier.lt(Long.TWO_PWR_24)) return Long.fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned); // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products. - // We can skip products that would overflow. - - var a48 = this.high >>> 16; - var a32 = this.high & 0xffff; - var a16 = this.low >>> 16; - var a00 = this.low & 0xffff; - var b48 = multiplier.high >>> 16; - var b32 = multiplier.high & 0xffff; - var b16 = multiplier.low >>> 16; - var b00 = multiplier.low & 0xffff; - var c48 = 0, - c32 = 0, - c16 = 0, - c00 = 0; - c00 += a00 * b00; - c16 += c00 >>> 16; - c00 &= 0xffff; - c16 += a16 * b00; - c32 += c16 >>> 16; - c16 &= 0xffff; - c16 += a00 * b16; - c32 += c16 >>> 16; - c16 &= 0xffff; - c32 += a32 * b00; - c48 += c32 >>> 16; - c32 &= 0xffff; - c32 += a16 * b16; - c48 += c32 >>> 16; - c32 &= 0xffff; - c32 += a00 * b32; - c48 += c32 >>> 16; - c32 &= 0xffff; - c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48; - c48 &= 0xffff; - return Long.fromBits(c16 << 16 | c00, c48 << 16 | c32, this.unsigned); - }; - /** This is an alias of {@link Long.multiply} */ - - - Long.prototype.mul = function (multiplier) { - return this.multiply(multiplier); - }; - /** Returns the Negation of this Long's value. */ - - - Long.prototype.negate = function () { - if (!this.unsigned && this.eq(Long.MIN_VALUE)) return Long.MIN_VALUE; - return this.not().add(Long.ONE); - }; - /** This is an alias of {@link Long.negate} */ - - - Long.prototype.neg = function () { - return this.negate(); - }; - /** Returns the bitwise NOT of this Long. */ - - - Long.prototype.not = function () { - return Long.fromBits(~this.low, ~this.high, this.unsigned); - }; - /** Tests if this Long's value differs from the specified's. */ - - - Long.prototype.notEquals = function (other) { - return !this.equals(other); - }; - /** This is an alias of {@link Long.notEquals} */ - - - Long.prototype.neq = function (other) { - return this.notEquals(other); - }; - /** This is an alias of {@link Long.notEquals} */ - - - Long.prototype.ne = function (other) { - return this.notEquals(other); - }; - /** - * Returns the bitwise OR of this Long and the specified. - */ - - - Long.prototype.or = function (other) { - if (!Long.isLong(other)) other = Long.fromValue(other); - return Long.fromBits(this.low | other.low, this.high | other.high, this.unsigned); - }; - /** - * Returns this Long with bits shifted to the left by the given amount. - * @param numBits - Number of bits - * @returns Shifted Long - */ - - - Long.prototype.shiftLeft = function (numBits) { - if (Long.isLong(numBits)) numBits = numBits.toInt(); - if ((numBits &= 63) === 0) return this;else if (numBits < 32) return Long.fromBits(this.low << numBits, this.high << numBits | this.low >>> 32 - numBits, this.unsigned);else return Long.fromBits(0, this.low << numBits - 32, this.unsigned); - }; - /** This is an alias of {@link Long.shiftLeft} */ - - - Long.prototype.shl = function (numBits) { - return this.shiftLeft(numBits); - }; - /** - * Returns this Long with bits arithmetically shifted to the right by the given amount. - * @param numBits - Number of bits - * @returns Shifted Long - */ - - - Long.prototype.shiftRight = function (numBits) { - if (Long.isLong(numBits)) numBits = numBits.toInt(); - if ((numBits &= 63) === 0) return this;else if (numBits < 32) return Long.fromBits(this.low >>> numBits | this.high << 32 - numBits, this.high >> numBits, this.unsigned);else return Long.fromBits(this.high >> numBits - 32, this.high >= 0 ? 0 : -1, this.unsigned); - }; - /** This is an alias of {@link Long.shiftRight} */ - - - Long.prototype.shr = function (numBits) { - return this.shiftRight(numBits); - }; - /** - * Returns this Long with bits logically shifted to the right by the given amount. - * @param numBits - Number of bits - * @returns Shifted Long - */ - - - Long.prototype.shiftRightUnsigned = function (numBits) { - if (Long.isLong(numBits)) numBits = numBits.toInt(); - numBits &= 63; - if (numBits === 0) return this;else { - var high = this.high; - - if (numBits < 32) { - var low = this.low; - return Long.fromBits(low >>> numBits | high << 32 - numBits, high >>> numBits, this.unsigned); - } else if (numBits === 32) return Long.fromBits(high, 0, this.unsigned);else return Long.fromBits(high >>> numBits - 32, 0, this.unsigned); - } - }; - /** This is an alias of {@link Long.shiftRightUnsigned} */ - - - Long.prototype.shr_u = function (numBits) { - return this.shiftRightUnsigned(numBits); - }; - /** This is an alias of {@link Long.shiftRightUnsigned} */ - - - Long.prototype.shru = function (numBits) { - return this.shiftRightUnsigned(numBits); - }; - /** - * Returns the difference of this and the specified Long. - * @param subtrahend - Subtrahend - * @returns Difference - */ - - - Long.prototype.subtract = function (subtrahend) { - if (!Long.isLong(subtrahend)) subtrahend = Long.fromValue(subtrahend); - return this.add(subtrahend.neg()); - }; - /** This is an alias of {@link Long.subtract} */ - - - Long.prototype.sub = function (subtrahend) { - return this.subtract(subtrahend); - }; - /** Converts the Long to a 32 bit integer, assuming it is a 32 bit integer. */ - - - Long.prototype.toInt = function () { - return this.unsigned ? this.low >>> 0 : this.low; - }; - /** Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa). */ - - - Long.prototype.toNumber = function () { - if (this.unsigned) return (this.high >>> 0) * TWO_PWR_32_DBL + (this.low >>> 0); - return this.high * TWO_PWR_32_DBL + (this.low >>> 0); - }; - /** Converts the Long to a BigInt (arbitrary precision). */ - - - Long.prototype.toBigInt = function () { - return BigInt(this.toString()); - }; - /** - * Converts this Long to its byte representation. - * @param le - Whether little or big endian, defaults to big endian - * @returns Byte representation - */ - - - Long.prototype.toBytes = function (le) { - return le ? this.toBytesLE() : this.toBytesBE(); - }; - /** - * Converts this Long to its little endian byte representation. - * @returns Little endian byte representation - */ - - - Long.prototype.toBytesLE = function () { - var hi = this.high, - lo = this.low; - return [lo & 0xff, lo >>> 8 & 0xff, lo >>> 16 & 0xff, lo >>> 24, hi & 0xff, hi >>> 8 & 0xff, hi >>> 16 & 0xff, hi >>> 24]; - }; - /** - * Converts this Long to its big endian byte representation. - * @returns Big endian byte representation - */ - - - Long.prototype.toBytesBE = function () { - var hi = this.high, - lo = this.low; - return [hi >>> 24, hi >>> 16 & 0xff, hi >>> 8 & 0xff, hi & 0xff, lo >>> 24, lo >>> 16 & 0xff, lo >>> 8 & 0xff, lo & 0xff]; - }; - /** - * Converts this Long to signed. - */ - - - Long.prototype.toSigned = function () { - if (!this.unsigned) return this; - return Long.fromBits(this.low, this.high, false); - }; - /** - * Converts the Long to a string written in the specified radix. - * @param radix - Radix (2-36), defaults to 10 - * @throws RangeError If `radix` is out of range - */ - - - Long.prototype.toString = function (radix) { - radix = radix || 10; - if (radix < 2 || 36 < radix) throw RangeError('radix'); - if (this.isZero()) return '0'; - - if (this.isNegative()) { - // Unsigned Longs are never negative - if (this.eq(Long.MIN_VALUE)) { - // We need to change the Long value before it can be negated, so we remove - // the bottom-most digit in this base and then recurse to do the rest. - var radixLong = Long.fromNumber(radix), - div = this.div(radixLong), - rem1 = div.mul(radixLong).sub(this); - return div.toString(radix) + rem1.toInt().toString(radix); - } else return '-' + this.neg().toString(radix); - } // Do several (6) digits each time through the loop, so as to - // minimize the calls to the very expensive emulated div. - - - var radixToPower = Long.fromNumber(Math.pow(radix, 6), this.unsigned); // eslint-disable-next-line @typescript-eslint/no-this-alias - - var rem = this; - var result = ''; // eslint-disable-next-line no-constant-condition - - while (true) { - var remDiv = rem.div(radixToPower); - var intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0; - var digits = intval.toString(radix); - rem = remDiv; - - if (rem.isZero()) { - return digits + result; - } else { - while (digits.length < 6) { - digits = '0' + digits; - } - - result = '' + digits + result; - } - } - }; - /** Converts this Long to unsigned. */ - - - Long.prototype.toUnsigned = function () { - if (this.unsigned) return this; - return Long.fromBits(this.low, this.high, true); - }; - /** Returns the bitwise XOR of this Long and the given one. */ - - - Long.prototype.xor = function (other) { - if (!Long.isLong(other)) other = Long.fromValue(other); - return Long.fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned); - }; - /** This is an alias of {@link Long.isZero} */ - - - Long.prototype.eqz = function () { - return this.isZero(); - }; - /** This is an alias of {@link Long.lessThanOrEqual} */ - - - Long.prototype.le = function (other) { - return this.lessThanOrEqual(other); - }; - /* - **************************************************************** - * BSON SPECIFIC ADDITIONS * - **************************************************************** - */ - - - Long.prototype.toExtendedJSON = function (options) { - if (options && options.relaxed) return this.toNumber(); - return { - $numberLong: this.toString() - }; - }; - - Long.fromExtendedJSON = function (doc, options) { - var result = Long.fromString(doc.$numberLong); - return options && options.relaxed ? result.toNumber() : result; - }; - /** @internal */ - - - Long.prototype[Symbol["for"]('nodejs.util.inspect.custom')] = function () { - return this.inspect(); - }; - - Long.prototype.inspect = function () { - return "new Long(\"" + this.toString() + "\"" + (this.unsigned ? ', true' : '') + ")"; - }; - - Long.TWO_PWR_24 = Long.fromInt(TWO_PWR_24_DBL); - /** Maximum unsigned value. */ - - Long.MAX_UNSIGNED_VALUE = Long.fromBits(0xffffffff | 0, 0xffffffff | 0, true); - /** Signed zero */ - - Long.ZERO = Long.fromInt(0); - /** Unsigned zero. */ - - Long.UZERO = Long.fromInt(0, true); - /** Signed one. */ - - Long.ONE = Long.fromInt(1); - /** Unsigned one. */ - - Long.UONE = Long.fromInt(1, true); - /** Signed negative one. */ - - Long.NEG_ONE = Long.fromInt(-1); - /** Maximum signed value. */ - - Long.MAX_VALUE = Long.fromBits(0xffffffff | 0, 0x7fffffff | 0, false); - /** Minimum signed value. */ - - Long.MIN_VALUE = Long.fromBits(0, 0x80000000 | 0, false); - return Long; -}(); - -Object.defineProperty(_Long.prototype, '__isLong__', { - value: true -}); -Object.defineProperty(_Long.prototype, '_bsontype', { - value: 'Long' -}); -var PARSE_STRING_REGEXP = /^(\+|-)?(\d+|(\d*\.\d*))?(E|e)?([-+])?(\d+)?$/; -var PARSE_INF_REGEXP = /^(\+|-)?(Infinity|inf)$/i; -var PARSE_NAN_REGEXP = /^(\+|-)?NaN$/i; -var EXPONENT_MAX = 6111; -var EXPONENT_MIN = -6176; -var EXPONENT_BIAS = 6176; -var MAX_DIGITS = 34; // Nan value bits as 32 bit values (due to lack of longs) - -var NAN_BUFFER = [0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00].reverse(); // Infinity value bits 32 bit values (due to lack of longs) - -var INF_NEGATIVE_BUFFER = [0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00].reverse(); -var INF_POSITIVE_BUFFER = [0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00].reverse(); -var EXPONENT_REGEX = /^([-+])?(\d+)?$/; // Extract least significant 5 bits - -var COMBINATION_MASK = 0x1f; // Extract least significant 14 bits - -var EXPONENT_MASK = 0x3fff; // Value of combination field for Inf - -var COMBINATION_INFINITY = 30; // Value of combination field for NaN - -var COMBINATION_NAN = 31; // Detect if the value is a digit - -function isDigit(value) { - return !isNaN(parseInt(value, 10)); -} // Divide two uint128 values - - -function divideu128(value) { - var DIVISOR = _Long.fromNumber(1000 * 1000 * 1000); - - var _rem = _Long.fromNumber(0); - - if (!value.parts[0] && !value.parts[1] && !value.parts[2] && !value.parts[3]) { - return { - quotient: value, - rem: _rem - }; - } - - for (var i = 0; i <= 3; i++) { - // Adjust remainder to match value of next dividend - _rem = _rem.shiftLeft(32); // Add the divided to _rem - - _rem = _rem.add(new _Long(value.parts[i], 0)); - value.parts[i] = _rem.div(DIVISOR).low; - _rem = _rem.modulo(DIVISOR); - } - - return { - quotient: value, - rem: _rem - }; -} // Multiply two Long values and return the 128 bit value - - -function multiply64x2(left, right) { - if (!left && !right) { - return { - high: _Long.fromNumber(0), - low: _Long.fromNumber(0) - }; - } - - var leftHigh = left.shiftRightUnsigned(32); - var leftLow = new _Long(left.getLowBits(), 0); - var rightHigh = right.shiftRightUnsigned(32); - var rightLow = new _Long(right.getLowBits(), 0); - var productHigh = leftHigh.multiply(rightHigh); - var productMid = leftHigh.multiply(rightLow); - var productMid2 = leftLow.multiply(rightHigh); - var productLow = leftLow.multiply(rightLow); - productHigh = productHigh.add(productMid.shiftRightUnsigned(32)); - productMid = new _Long(productMid.getLowBits(), 0).add(productMid2).add(productLow.shiftRightUnsigned(32)); - productHigh = productHigh.add(productMid.shiftRightUnsigned(32)); - productLow = productMid.shiftLeft(32).add(new _Long(productLow.getLowBits(), 0)); // Return the 128 bit result - - return { - high: productHigh, - low: productLow - }; -} - -function lessThan(left, right) { - // Make values unsigned - var uhleft = left.high >>> 0; - var uhright = right.high >>> 0; // Compare high bits first - - if (uhleft < uhright) { - return true; - } else if (uhleft === uhright) { - var ulleft = left.low >>> 0; - var ulright = right.low >>> 0; - if (ulleft < ulright) return true; - } - - return false; -} - -function invalidErr(string, message) { - throw new BSONTypeError("\"" + string + "\" is not a valid Decimal128 string - " + message); -} -/** - * A class representation of the BSON Decimal128 type. - * @public - * @category BSONType - */ - - -var _Decimal = -/** @class */ -function () { - /** - * @param bytes - a buffer containing the raw Decimal128 bytes in little endian order, - * or a string representation as returned by .toString() - */ - function Decimal128(bytes) { - if (!(this instanceof Decimal128)) return new Decimal128(bytes); - - if (typeof bytes === 'string') { - this.bytes = Decimal128.fromString(bytes).bytes; - } else if (isUint8Array(bytes)) { - if (bytes.byteLength !== 16) { - throw new BSONTypeError('Decimal128 must take a Buffer of 16 bytes'); - } - - this.bytes = bytes; - } else { - throw new BSONTypeError('Decimal128 must take a Buffer or string'); - } - } - /** - * Create a Decimal128 instance from a string representation - * - * @param representation - a numeric string representation. - */ - - - Decimal128.fromString = function (representation) { - // Parse state tracking - var isNegative = false; - var sawRadix = false; - var foundNonZero = false; // Total number of significant digits (no leading or trailing zero) - - var significantDigits = 0; // Total number of significand digits read - - var nDigitsRead = 0; // Total number of digits (no leading zeros) - - var nDigits = 0; // The number of the digits after radix - - var radixPosition = 0; // The index of the first non-zero in *str* - - var firstNonZero = 0; // Digits Array - - var digits = [0]; // The number of digits in digits - - var nDigitsStored = 0; // Insertion pointer for digits - - var digitsInsert = 0; // The index of the first non-zero digit - - var firstDigit = 0; // The index of the last digit - - var lastDigit = 0; // Exponent - - var exponent = 0; // loop index over array - - var i = 0; // The high 17 digits of the significand - - var significandHigh = new _Long(0, 0); // The low 17 digits of the significand - - var significandLow = new _Long(0, 0); // The biased exponent - - var biasedExponent = 0; // Read index - - var index = 0; // Naively prevent against REDOS attacks. - // TODO: implementing a custom parsing for this, or refactoring the regex would yield - // further gains. - - if (representation.length >= 7000) { - throw new BSONTypeError('' + representation + ' not a valid Decimal128 string'); - } // Results - - - var stringMatch = representation.match(PARSE_STRING_REGEXP); - var infMatch = representation.match(PARSE_INF_REGEXP); - var nanMatch = representation.match(PARSE_NAN_REGEXP); // Validate the string - - if (!stringMatch && !infMatch && !nanMatch || representation.length === 0) { - throw new BSONTypeError('' + representation + ' not a valid Decimal128 string'); - } - - if (stringMatch) { - // full_match = stringMatch[0] - // sign = stringMatch[1] - var unsignedNumber = stringMatch[2]; // stringMatch[3] is undefined if a whole number (ex "1", 12") - // but defined if a number w/ decimal in it (ex "1.0, 12.2") - - var e = stringMatch[4]; - var expSign = stringMatch[5]; - var expNumber = stringMatch[6]; // they provided e, but didn't give an exponent number. for ex "1e" - - if (e && expNumber === undefined) invalidErr(representation, 'missing exponent power'); // they provided e, but didn't give a number before it. for ex "e1" - - if (e && unsignedNumber === undefined) invalidErr(representation, 'missing exponent base'); - - if (e === undefined && (expSign || expNumber)) { - invalidErr(representation, 'missing e before exponent'); - } - } // Get the negative or positive sign - - - if (representation[index] === '+' || representation[index] === '-') { - isNegative = representation[index++] === '-'; - } // Check if user passed Infinity or NaN - - - if (!isDigit(representation[index]) && representation[index] !== '.') { - if (representation[index] === 'i' || representation[index] === 'I') { - return new Decimal128(buffer_1.from(isNegative ? INF_NEGATIVE_BUFFER : INF_POSITIVE_BUFFER)); - } else if (representation[index] === 'N') { - return new Decimal128(buffer_1.from(NAN_BUFFER)); - } - } // Read all the digits - - - while (isDigit(representation[index]) || representation[index] === '.') { - if (representation[index] === '.') { - if (sawRadix) invalidErr(representation, 'contains multiple periods'); - sawRadix = true; - index = index + 1; - continue; - } - - if (nDigitsStored < 34) { - if (representation[index] !== '0' || foundNonZero) { - if (!foundNonZero) { - firstNonZero = nDigitsRead; - } - - foundNonZero = true; // Only store 34 digits - - digits[digitsInsert++] = parseInt(representation[index], 10); - nDigitsStored = nDigitsStored + 1; - } - } - - if (foundNonZero) nDigits = nDigits + 1; - if (sawRadix) radixPosition = radixPosition + 1; - nDigitsRead = nDigitsRead + 1; - index = index + 1; - } - - if (sawRadix && !nDigitsRead) throw new BSONTypeError('' + representation + ' not a valid Decimal128 string'); // Read exponent if exists - - if (representation[index] === 'e' || representation[index] === 'E') { - // Read exponent digits - var match = representation.substr(++index).match(EXPONENT_REGEX); // No digits read - - if (!match || !match[2]) return new Decimal128(buffer_1.from(NAN_BUFFER)); // Get exponent - - exponent = parseInt(match[0], 10); // Adjust the index - - index = index + match[0].length; - } // Return not a number - - - if (representation[index]) return new Decimal128(buffer_1.from(NAN_BUFFER)); // Done reading input - // Find first non-zero digit in digits - - firstDigit = 0; - - if (!nDigitsStored) { - firstDigit = 0; - lastDigit = 0; - digits[0] = 0; - nDigits = 1; - nDigitsStored = 1; - significantDigits = 0; - } else { - lastDigit = nDigitsStored - 1; - significantDigits = nDigits; - - if (significantDigits !== 1) { - while (digits[firstNonZero + significantDigits - 1] === 0) { - significantDigits = significantDigits - 1; - } - } - } // Normalization of exponent - // Correct exponent based on radix position, and shift significand as needed - // to represent user input - // Overflow prevention - - - if (exponent <= radixPosition && radixPosition - exponent > 1 << 14) { - exponent = EXPONENT_MIN; - } else { - exponent = exponent - radixPosition; - } // Attempt to normalize the exponent - - - while (exponent > EXPONENT_MAX) { - // Shift exponent to significand and decrease - lastDigit = lastDigit + 1; - - if (lastDigit - firstDigit > MAX_DIGITS) { - // Check if we have a zero then just hard clamp, otherwise fail - var digitsString = digits.join(''); - - if (digitsString.match(/^0+$/)) { - exponent = EXPONENT_MAX; - break; - } - - invalidErr(representation, 'overflow'); - } - - exponent = exponent - 1; - } - - while (exponent < EXPONENT_MIN || nDigitsStored < nDigits) { - // Shift last digit. can only do this if < significant digits than # stored. - if (lastDigit === 0 && significantDigits < nDigitsStored) { - exponent = EXPONENT_MIN; - significantDigits = 0; - break; - } - - if (nDigitsStored < nDigits) { - // adjust to match digits not stored - nDigits = nDigits - 1; - } else { - // adjust to round - lastDigit = lastDigit - 1; - } - - if (exponent < EXPONENT_MAX) { - exponent = exponent + 1; - } else { - // Check if we have a zero then just hard clamp, otherwise fail - var digitsString = digits.join(''); - - if (digitsString.match(/^0+$/)) { - exponent = EXPONENT_MAX; - break; - } - - invalidErr(representation, 'overflow'); - } - } // Round - // We've normalized the exponent, but might still need to round. - - - if (lastDigit - firstDigit + 1 < significantDigits) { - var endOfString = nDigitsRead; // If we have seen a radix point, 'string' is 1 longer than we have - // documented with ndigits_read, so inc the position of the first nonzero - // digit and the position that digits are read to. - - if (sawRadix) { - firstNonZero = firstNonZero + 1; - endOfString = endOfString + 1; - } // if negative, we need to increment again to account for - sign at start. - - - if (isNegative) { - firstNonZero = firstNonZero + 1; - endOfString = endOfString + 1; - } - - var roundDigit = parseInt(representation[firstNonZero + lastDigit + 1], 10); - var roundBit = 0; - - if (roundDigit >= 5) { - roundBit = 1; - - if (roundDigit === 5) { - roundBit = digits[lastDigit] % 2 === 1 ? 1 : 0; - - for (i = firstNonZero + lastDigit + 2; i < endOfString; i++) { - if (parseInt(representation[i], 10)) { - roundBit = 1; - break; - } - } - } - } - - if (roundBit) { - var dIdx = lastDigit; - - for (; dIdx >= 0; dIdx--) { - if (++digits[dIdx] > 9) { - digits[dIdx] = 0; // overflowed most significant digit - - if (dIdx === 0) { - if (exponent < EXPONENT_MAX) { - exponent = exponent + 1; - digits[dIdx] = 1; - } else { - return new Decimal128(buffer_1.from(isNegative ? INF_NEGATIVE_BUFFER : INF_POSITIVE_BUFFER)); - } - } - } - } - } - } // Encode significand - // The high 17 digits of the significand - - - significandHigh = _Long.fromNumber(0); // The low 17 digits of the significand - - significandLow = _Long.fromNumber(0); // read a zero - - if (significantDigits === 0) { - significandHigh = _Long.fromNumber(0); - significandLow = _Long.fromNumber(0); - } else if (lastDigit - firstDigit < 17) { - var dIdx = firstDigit; - significandLow = _Long.fromNumber(digits[dIdx++]); - significandHigh = new _Long(0, 0); - - for (; dIdx <= lastDigit; dIdx++) { - significandLow = significandLow.multiply(_Long.fromNumber(10)); - significandLow = significandLow.add(_Long.fromNumber(digits[dIdx])); - } - } else { - var dIdx = firstDigit; - significandHigh = _Long.fromNumber(digits[dIdx++]); - - for (; dIdx <= lastDigit - 17; dIdx++) { - significandHigh = significandHigh.multiply(_Long.fromNumber(10)); - significandHigh = significandHigh.add(_Long.fromNumber(digits[dIdx])); - } - - significandLow = _Long.fromNumber(digits[dIdx++]); - - for (; dIdx <= lastDigit; dIdx++) { - significandLow = significandLow.multiply(_Long.fromNumber(10)); - significandLow = significandLow.add(_Long.fromNumber(digits[dIdx])); - } - } - - var significand = multiply64x2(significandHigh, _Long.fromString('100000000000000000')); - significand.low = significand.low.add(significandLow); - - if (lessThan(significand.low, significandLow)) { - significand.high = significand.high.add(_Long.fromNumber(1)); - } // Biased exponent - - - biasedExponent = exponent + EXPONENT_BIAS; - var dec = { - low: _Long.fromNumber(0), - high: _Long.fromNumber(0) - }; // Encode combination, exponent, and significand. - - if (significand.high.shiftRightUnsigned(49).and(_Long.fromNumber(1)).equals(_Long.fromNumber(1))) { - // Encode '11' into bits 1 to 3 - dec.high = dec.high.or(_Long.fromNumber(0x3).shiftLeft(61)); - dec.high = dec.high.or(_Long.fromNumber(biasedExponent).and(_Long.fromNumber(0x3fff).shiftLeft(47))); - dec.high = dec.high.or(significand.high.and(_Long.fromNumber(0x7fffffffffff))); - } else { - dec.high = dec.high.or(_Long.fromNumber(biasedExponent & 0x3fff).shiftLeft(49)); - dec.high = dec.high.or(significand.high.and(_Long.fromNumber(0x1ffffffffffff))); - } - - dec.low = significand.low; // Encode sign - - if (isNegative) { - dec.high = dec.high.or(_Long.fromString('9223372036854775808')); - } // Encode into a buffer - - - var buffer = buffer_1.alloc(16); - index = 0; // Encode the low 64 bits of the decimal - // Encode low bits - - buffer[index++] = dec.low.low & 0xff; - buffer[index++] = dec.low.low >> 8 & 0xff; - buffer[index++] = dec.low.low >> 16 & 0xff; - buffer[index++] = dec.low.low >> 24 & 0xff; // Encode high bits - - buffer[index++] = dec.low.high & 0xff; - buffer[index++] = dec.low.high >> 8 & 0xff; - buffer[index++] = dec.low.high >> 16 & 0xff; - buffer[index++] = dec.low.high >> 24 & 0xff; // Encode the high 64 bits of the decimal - // Encode low bits - - buffer[index++] = dec.high.low & 0xff; - buffer[index++] = dec.high.low >> 8 & 0xff; - buffer[index++] = dec.high.low >> 16 & 0xff; - buffer[index++] = dec.high.low >> 24 & 0xff; // Encode high bits - - buffer[index++] = dec.high.high & 0xff; - buffer[index++] = dec.high.high >> 8 & 0xff; - buffer[index++] = dec.high.high >> 16 & 0xff; - buffer[index++] = dec.high.high >> 24 & 0xff; // Return the new Decimal128 - - return new Decimal128(buffer); - }; - /** Create a string representation of the raw Decimal128 value */ - - - Decimal128.prototype.toString = function () { - // Note: bits in this routine are referred to starting at 0, - // from the sign bit, towards the coefficient. - // decoded biased exponent (14 bits) - var biased_exponent; // the number of significand digits - - var significand_digits = 0; // the base-10 digits in the significand - - var significand = new Array(36); - - for (var i = 0; i < significand.length; i++) { - significand[i] = 0; - } // read pointer into significand - - - var index = 0; // true if the number is zero - - var is_zero = false; // the most significant significand bits (50-46) - - var significand_msb; // temporary storage for significand decoding - - var significand128 = { - parts: [0, 0, 0, 0] - }; // indexing variables - - var j, k; // Output string - - var string = []; // Unpack index - - index = 0; // Buffer reference - - var buffer = this.bytes; // Unpack the low 64bits into a long - // bits 96 - 127 - - var low = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; // bits 64 - 95 - - var midl = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; // Unpack the high 64bits into a long - // bits 32 - 63 - - var midh = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; // bits 0 - 31 - - var high = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; // Unpack index - - index = 0; // Create the state of the decimal - - var dec = { - low: new _Long(low, midl), - high: new _Long(midh, high) - }; - - if (dec.high.lessThan(_Long.ZERO)) { - string.push('-'); - } // Decode combination field and exponent - // bits 1 - 5 - - - var combination = high >> 26 & COMBINATION_MASK; - - if (combination >> 3 === 3) { - // Check for 'special' values - if (combination === COMBINATION_INFINITY) { - return string.join('') + 'Infinity'; - } else if (combination === COMBINATION_NAN) { - return 'NaN'; - } else { - biased_exponent = high >> 15 & EXPONENT_MASK; - significand_msb = 0x08 + (high >> 14 & 0x01); - } - } else { - significand_msb = high >> 14 & 0x07; - biased_exponent = high >> 17 & EXPONENT_MASK; - } // unbiased exponent - - - var exponent = biased_exponent - EXPONENT_BIAS; // Create string of significand digits - // Convert the 114-bit binary number represented by - // (significand_high, significand_low) to at most 34 decimal - // digits through modulo and division. - - significand128.parts[0] = (high & 0x3fff) + ((significand_msb & 0xf) << 14); - significand128.parts[1] = midh; - significand128.parts[2] = midl; - significand128.parts[3] = low; - - if (significand128.parts[0] === 0 && significand128.parts[1] === 0 && significand128.parts[2] === 0 && significand128.parts[3] === 0) { - is_zero = true; - } else { - for (k = 3; k >= 0; k--) { - var least_digits = 0; // Perform the divide - - var result = divideu128(significand128); - significand128 = result.quotient; - least_digits = result.rem.low; // We now have the 9 least significant digits (in base 2). - // Convert and output to string. - - if (!least_digits) continue; - - for (j = 8; j >= 0; j--) { - // significand[k * 9 + j] = Math.round(least_digits % 10); - significand[k * 9 + j] = least_digits % 10; // least_digits = Math.round(least_digits / 10); - - least_digits = Math.floor(least_digits / 10); - } - } - } // Output format options: - // Scientific - [-]d.dddE(+/-)dd or [-]dE(+/-)dd - // Regular - ddd.ddd - - - if (is_zero) { - significand_digits = 1; - significand[index] = 0; - } else { - significand_digits = 36; - - while (!significand[index]) { - significand_digits = significand_digits - 1; - index = index + 1; - } - } // the exponent if scientific notation is used - - - var scientific_exponent = significand_digits - 1 + exponent; // The scientific exponent checks are dictated by the string conversion - // specification and are somewhat arbitrary cutoffs. - // - // We must check exponent > 0, because if this is the case, the number - // has trailing zeros. However, we *cannot* output these trailing zeros, - // because doing so would change the precision of the value, and would - // change stored data if the string converted number is round tripped. - - if (scientific_exponent >= 34 || scientific_exponent <= -7 || exponent > 0) { - // Scientific format - // if there are too many significant digits, we should just be treating numbers - // as + or - 0 and using the non-scientific exponent (this is for the "invalid - // representation should be treated as 0/-0" spec cases in decimal128-1.json) - if (significand_digits > 34) { - string.push("" + 0); - if (exponent > 0) string.push('E+' + exponent);else if (exponent < 0) string.push('E' + exponent); - return string.join(''); - } - - string.push("" + significand[index++]); - significand_digits = significand_digits - 1; - - if (significand_digits) { - string.push('.'); - } - - for (var i = 0; i < significand_digits; i++) { - string.push("" + significand[index++]); - } // Exponent - - - string.push('E'); - - if (scientific_exponent > 0) { - string.push('+' + scientific_exponent); - } else { - string.push("" + scientific_exponent); - } - } else { - // Regular format with no decimal place - if (exponent >= 0) { - for (var i = 0; i < significand_digits; i++) { - string.push("" + significand[index++]); - } - } else { - var radix_position = significand_digits + exponent; // non-zero digits before radix - - if (radix_position > 0) { - for (var i = 0; i < radix_position; i++) { - string.push("" + significand[index++]); - } - } else { - string.push('0'); - } - - string.push('.'); // add leading zeros after radix - - while (radix_position++ < 0) { - string.push('0'); - } - - for (var i = 0; i < significand_digits - Math.max(radix_position - 1, 0); i++) { - string.push("" + significand[index++]); - } - } - } - - return string.join(''); - }; - - Decimal128.prototype.toJSON = function () { - return { - $numberDecimal: this.toString() - }; - }; - /** @internal */ - - - Decimal128.prototype.toExtendedJSON = function () { - return { - $numberDecimal: this.toString() - }; - }; - /** @internal */ - - - Decimal128.fromExtendedJSON = function (doc) { - return Decimal128.fromString(doc.$numberDecimal); - }; - /** @internal */ - - - Decimal128.prototype[Symbol["for"]('nodejs.util.inspect.custom')] = function () { - return this.inspect(); - }; - - Decimal128.prototype.inspect = function () { - return "new Decimal128(\"" + this.toString() + "\")"; - }; - - return Decimal128; -}(); - -Object.defineProperty(_Decimal.prototype, '_bsontype', { - value: 'Decimal128' -}); -/** - * A class representation of the BSON Double type. - * @public - * @category BSONType - */ - -var _Double = -/** @class */ -function () { - /** - * Create a Double type - * - * @param value - the number we want to represent as a double. - */ - function Double(value) { - if (!(this instanceof Double)) return new Double(value); - - if (value instanceof Number) { - value = value.valueOf(); - } - - this.value = +value; - } - /** - * Access the number value. - * - * @returns returns the wrapped double number. - */ - - - Double.prototype.valueOf = function () { - return this.value; - }; - - Double.prototype.toJSON = function () { - return this.value; - }; - - Double.prototype.toString = function (radix) { - return this.value.toString(radix); - }; - /** @internal */ - - - Double.prototype.toExtendedJSON = function (options) { - if (options && (options.legacy || options.relaxed && isFinite(this.value))) { - return this.value; - } // NOTE: JavaScript has +0 and -0, apparently to model limit calculations. If a user - // explicitly provided `-0` then we need to ensure the sign makes it into the output - - - if (Object.is(Math.sign(this.value), -0)) { - return { - $numberDouble: "-" + this.value.toFixed(1) - }; - } - - var $numberDouble; - - if (Number.isInteger(this.value)) { - $numberDouble = this.value.toFixed(1); - - if ($numberDouble.length >= 13) { - $numberDouble = this.value.toExponential(13).toUpperCase(); - } - } else { - $numberDouble = this.value.toString(); - } - - return { - $numberDouble: $numberDouble - }; - }; - /** @internal */ - - - Double.fromExtendedJSON = function (doc, options) { - var doubleValue = parseFloat(doc.$numberDouble); - return options && options.relaxed ? doubleValue : new Double(doubleValue); - }; - /** @internal */ - - - Double.prototype[Symbol["for"]('nodejs.util.inspect.custom')] = function () { - return this.inspect(); - }; - - Double.prototype.inspect = function () { - var eJSON = this.toExtendedJSON(); - return "new Double(" + eJSON.$numberDouble + ")"; - }; - - return Double; -}(); - -Object.defineProperty(_Double.prototype, '_bsontype', { - value: 'Double' -}); -/** - * A class representation of a BSON Int32 type. - * @public - * @category BSONType - */ - -var _Int = -/** @class */ -function () { - /** - * Create an Int32 type - * - * @param value - the number we want to represent as an int32. - */ - function Int32(value) { - if (!(this instanceof Int32)) return new Int32(value); - - if (value instanceof Number) { - value = value.valueOf(); - } - - this.value = +value | 0; - } - /** - * Access the number value. - * - * @returns returns the wrapped int32 number. - */ - - - Int32.prototype.valueOf = function () { - return this.value; - }; - - Int32.prototype.toString = function (radix) { - return this.value.toString(radix); - }; - - Int32.prototype.toJSON = function () { - return this.value; - }; - /** @internal */ - - - Int32.prototype.toExtendedJSON = function (options) { - if (options && (options.relaxed || options.legacy)) return this.value; - return { - $numberInt: this.value.toString() - }; - }; - /** @internal */ - - - Int32.fromExtendedJSON = function (doc, options) { - return options && options.relaxed ? parseInt(doc.$numberInt, 10) : new Int32(doc.$numberInt); - }; - /** @internal */ - - - Int32.prototype[Symbol["for"]('nodejs.util.inspect.custom')] = function () { - return this.inspect(); - }; - - Int32.prototype.inspect = function () { - return "new Int32(" + this.valueOf() + ")"; - }; - - return Int32; -}(); - -Object.defineProperty(_Int.prototype, '_bsontype', { - value: 'Int32' -}); -/** - * A class representation of the BSON MaxKey type. - * @public - * @category BSONType - */ - -var _MaxKey = -/** @class */ -function () { - function MaxKey() { - if (!(this instanceof MaxKey)) return new MaxKey(); - } - /** @internal */ - - - MaxKey.prototype.toExtendedJSON = function () { - return { - $maxKey: 1 - }; - }; - /** @internal */ - - - MaxKey.fromExtendedJSON = function () { - return new MaxKey(); - }; - /** @internal */ - - - MaxKey.prototype[Symbol["for"]('nodejs.util.inspect.custom')] = function () { - return this.inspect(); - }; - - MaxKey.prototype.inspect = function () { - return 'new MaxKey()'; - }; - - return MaxKey; -}(); - -Object.defineProperty(_MaxKey.prototype, '_bsontype', { - value: 'MaxKey' -}); -/** - * A class representation of the BSON MinKey type. - * @public - * @category BSONType - */ - -var _MinKey = -/** @class */ -function () { - function MinKey() { - if (!(this instanceof MinKey)) return new MinKey(); - } - /** @internal */ - - - MinKey.prototype.toExtendedJSON = function () { - return { - $minKey: 1 - }; - }; - /** @internal */ - - - MinKey.fromExtendedJSON = function () { - return new MinKey(); - }; - /** @internal */ - - - MinKey.prototype[Symbol["for"]('nodejs.util.inspect.custom')] = function () { - return this.inspect(); - }; - - MinKey.prototype.inspect = function () { - return 'new MinKey()'; - }; - - return MinKey; -}(); - -Object.defineProperty(_MinKey.prototype, '_bsontype', { - value: 'MinKey' -}); // Regular expression that checks for hex value - -var checkForHexRegExp = new RegExp('^[0-9a-fA-F]{24}$'); // Unique sequence for the current process (initialized on first use) - -var PROCESS_UNIQUE = null; -var kId = Symbol('id'); -/** - * A class representation of the BSON ObjectId type. - * @public - * @category BSONType - */ - -var _ObjectId = -/** @class */ -function () { - /** - * Create an ObjectId type - * - * @param inputId - Can be a 24 character hex string, 12 byte binary Buffer, or a number. - */ - function ObjectId(inputId) { - if (!(this instanceof ObjectId)) return new ObjectId(inputId); // workingId is set based on type of input and whether valid id exists for the input - - var workingId; - - if (_typeof(inputId) === 'object' && inputId && 'id' in inputId) { - if (typeof inputId.id !== 'string' && !ArrayBuffer.isView(inputId.id)) { - throw new BSONTypeError('Argument passed in must have an id that is of type string or Buffer'); - } - - if ('toHexString' in inputId && typeof inputId.toHexString === 'function') { - workingId = buffer_1.from(inputId.toHexString(), 'hex'); - } else { - workingId = inputId.id; - } - } else { - workingId = inputId; - } // the following cases use workingId to construct an ObjectId - - - if (workingId == null || typeof workingId === 'number') { - // The most common use case (blank id, new objectId instance) - // Generate a new id - this[kId] = ObjectId.generate(typeof workingId === 'number' ? workingId : undefined); - } else if (ArrayBuffer.isView(workingId) && workingId.byteLength === 12) { - // If intstanceof matches we can escape calling ensure buffer in Node.js environments - this[kId] = workingId instanceof buffer_1 ? workingId : ensureBuffer(workingId); - } else if (typeof workingId === 'string') { - if (workingId.length === 12) { - var bytes = buffer_1.from(workingId); - - if (bytes.byteLength === 12) { - this[kId] = bytes; - } else { - throw new BSONTypeError('Argument passed in must be a string of 12 bytes'); - } - } else if (workingId.length === 24 && checkForHexRegExp.test(workingId)) { - this[kId] = buffer_1.from(workingId, 'hex'); - } else { - throw new BSONTypeError('Argument passed in must be a string of 12 bytes or a string of 24 hex characters or an integer'); - } - } else { - throw new BSONTypeError('Argument passed in does not match the accepted types'); - } // If we are caching the hex string - - - if (ObjectId.cacheHexString) { - this.__id = this.id.toString('hex'); - } - } - - Object.defineProperty(ObjectId.prototype, "id", { - /** - * The ObjectId bytes - * @readonly - */ - get: function get() { - return this[kId]; - }, - set: function set(value) { - this[kId] = value; - - if (ObjectId.cacheHexString) { - this.__id = value.toString('hex'); - } - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(ObjectId.prototype, "generationTime", { - /** - * The generation time of this ObjectId instance - * @deprecated Please use getTimestamp / createFromTime which returns an int32 epoch - */ - get: function get() { - return this.id.readInt32BE(0); - }, - set: function set(value) { - // Encode time into first 4 bytes - this.id.writeUInt32BE(value, 0); - }, - enumerable: false, - configurable: true - }); - /** Returns the ObjectId id as a 24 character hex string representation */ - - ObjectId.prototype.toHexString = function () { - if (ObjectId.cacheHexString && this.__id) { - return this.__id; - } - - var hexString = this.id.toString('hex'); - - if (ObjectId.cacheHexString && !this.__id) { - this.__id = hexString; - } - - return hexString; - }; - /** - * Update the ObjectId index - * @privateRemarks - * Used in generating new ObjectId's on the driver - * @internal - */ - - - ObjectId.getInc = function () { - return ObjectId.index = (ObjectId.index + 1) % 0xffffff; - }; - /** - * Generate a 12 byte id buffer used in ObjectId's - * - * @param time - pass in a second based timestamp. - */ - - - ObjectId.generate = function (time) { - if ('number' !== typeof time) { - time = Math.floor(Date.now() / 1000); - } - - var inc = ObjectId.getInc(); - var buffer = buffer_1.alloc(12); // 4-byte timestamp - - buffer.writeUInt32BE(time, 0); // set PROCESS_UNIQUE if yet not initialized - - if (PROCESS_UNIQUE === null) { - PROCESS_UNIQUE = randomBytes(5); - } // 5-byte process unique - - - buffer[4] = PROCESS_UNIQUE[0]; - buffer[5] = PROCESS_UNIQUE[1]; - buffer[6] = PROCESS_UNIQUE[2]; - buffer[7] = PROCESS_UNIQUE[3]; - buffer[8] = PROCESS_UNIQUE[4]; // 3-byte counter - - buffer[11] = inc & 0xff; - buffer[10] = inc >> 8 & 0xff; - buffer[9] = inc >> 16 & 0xff; - return buffer; - }; - /** - * Converts the id into a 24 character hex string for printing - * - * @param format - The Buffer toString format parameter. - */ - - - ObjectId.prototype.toString = function (format) { - // Is the id a buffer then use the buffer toString method to return the format - if (format) return this.id.toString(format); - return this.toHexString(); - }; - /** Converts to its JSON the 24 character hex string representation. */ - - - ObjectId.prototype.toJSON = function () { - return this.toHexString(); - }; - /** - * Compares the equality of this ObjectId with `otherID`. - * - * @param otherId - ObjectId instance to compare against. - */ - - - ObjectId.prototype.equals = function (otherId) { - if (otherId === undefined || otherId === null) { - return false; - } - - if (otherId instanceof ObjectId) { - return this[kId][11] === otherId[kId][11] && this[kId].equals(otherId[kId]); - } - - if (typeof otherId === 'string' && ObjectId.isValid(otherId) && otherId.length === 12 && isUint8Array(this.id)) { - return otherId === buffer_1.prototype.toString.call(this.id, 'latin1'); - } - - if (typeof otherId === 'string' && ObjectId.isValid(otherId) && otherId.length === 24) { - return otherId.toLowerCase() === this.toHexString(); - } - - if (typeof otherId === 'string' && ObjectId.isValid(otherId) && otherId.length === 12) { - return buffer_1.from(otherId).equals(this.id); - } - - if (_typeof(otherId) === 'object' && 'toHexString' in otherId && typeof otherId.toHexString === 'function') { - var otherIdString = otherId.toHexString(); - var thisIdString = this.toHexString().toLowerCase(); - return typeof otherIdString === 'string' && otherIdString.toLowerCase() === thisIdString; - } - - return false; - }; - /** Returns the generation date (accurate up to the second) that this ID was generated. */ - - - ObjectId.prototype.getTimestamp = function () { - var timestamp = new Date(); - var time = this.id.readUInt32BE(0); - timestamp.setTime(Math.floor(time) * 1000); - return timestamp; - }; - /** @internal */ - - - ObjectId.createPk = function () { - return new ObjectId(); - }; - /** - * Creates an ObjectId from a second based number, with the rest of the ObjectId zeroed out. Used for comparisons or sorting the ObjectId. - * - * @param time - an integer number representing a number of seconds. - */ - - - ObjectId.createFromTime = function (time) { - var buffer = buffer_1.from([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]); // Encode time into first 4 bytes - - buffer.writeUInt32BE(time, 0); // Return the new objectId - - return new ObjectId(buffer); - }; - /** - * Creates an ObjectId from a hex string representation of an ObjectId. - * - * @param hexString - create a ObjectId from a passed in 24 character hexstring. - */ - - - ObjectId.createFromHexString = function (hexString) { - // Throw an error if it's not a valid setup - if (typeof hexString === 'undefined' || hexString != null && hexString.length !== 24) { - throw new BSONTypeError('Argument passed in must be a single String of 12 bytes or a string of 24 hex characters'); - } - - return new ObjectId(buffer_1.from(hexString, 'hex')); - }; - /** - * Checks if a value is a valid bson ObjectId - * - * @param id - ObjectId instance to validate. - */ - - - ObjectId.isValid = function (id) { - if (id == null) return false; - - try { - new ObjectId(id); - return true; - } catch (_a) { - return false; - } - }; - /** @internal */ - - - ObjectId.prototype.toExtendedJSON = function () { - if (this.toHexString) return { - $oid: this.toHexString() - }; - return { - $oid: this.toString('hex') - }; - }; - /** @internal */ - - - ObjectId.fromExtendedJSON = function (doc) { - return new ObjectId(doc.$oid); - }; - /** - * Converts to a string representation of this Id. - * - * @returns return the 24 character hex string representation. - * @internal - */ - - - ObjectId.prototype[Symbol["for"]('nodejs.util.inspect.custom')] = function () { - return this.inspect(); - }; - - ObjectId.prototype.inspect = function () { - return "new ObjectId(\"" + this.toHexString() + "\")"; - }; - /** @internal */ - - - ObjectId.index = Math.floor(Math.random() * 0xffffff); - return ObjectId; -}(); // Deprecated methods - - -Object.defineProperty(_ObjectId.prototype, 'generate', { - value: deprecate(function (time) { - return _ObjectId.generate(time); - }, 'Please use the static `ObjectId.generate(time)` instead') -}); -Object.defineProperty(_ObjectId.prototype, 'getInc', { - value: deprecate(function () { - return _ObjectId.getInc(); - }, 'Please use the static `ObjectId.getInc()` instead') -}); -Object.defineProperty(_ObjectId.prototype, 'get_inc', { - value: deprecate(function () { - return _ObjectId.getInc(); - }, 'Please use the static `ObjectId.getInc()` instead') -}); -Object.defineProperty(_ObjectId, 'get_inc', { - value: deprecate(function () { - return _ObjectId.getInc(); - }, 'Please use the static `ObjectId.getInc()` instead') -}); -Object.defineProperty(_ObjectId.prototype, '_bsontype', { - value: 'ObjectID' -}); - -function alphabetize(str) { - return str.split('').sort().join(''); -} -/** - * A class representation of the BSON RegExp type. - * @public - * @category BSONType - */ - - -var _BSONRegExp = -/** @class */ -function () { - /** - * @param pattern - The regular expression pattern to match - * @param options - The regular expression options - */ - function BSONRegExp(pattern, options) { - if (!(this instanceof BSONRegExp)) return new BSONRegExp(pattern, options); - this.pattern = pattern; - this.options = alphabetize(options !== null && options !== void 0 ? options : ''); - - if (this.pattern.indexOf('\x00') !== -1) { - throw new BSONError("BSON Regex patterns cannot contain null bytes, found: " + JSON.stringify(this.pattern)); - } - - if (this.options.indexOf('\x00') !== -1) { - throw new BSONError("BSON Regex options cannot contain null bytes, found: " + JSON.stringify(this.options)); - } // Validate options - - - for (var i = 0; i < this.options.length; i++) { - if (!(this.options[i] === 'i' || this.options[i] === 'm' || this.options[i] === 'x' || this.options[i] === 'l' || this.options[i] === 's' || this.options[i] === 'u')) { - throw new BSONError("The regular expression option [" + this.options[i] + "] is not supported"); - } - } - } - - BSONRegExp.parseOptions = function (options) { - return options ? options.split('').sort().join('') : ''; - }; - /** @internal */ - - - BSONRegExp.prototype.toExtendedJSON = function (options) { - options = options || {}; - - if (options.legacy) { - return { - $regex: this.pattern, - $options: this.options - }; - } - - return { - $regularExpression: { - pattern: this.pattern, - options: this.options - } - }; - }; - /** @internal */ - - - BSONRegExp.fromExtendedJSON = function (doc) { - if ('$regex' in doc) { - if (typeof doc.$regex !== 'string') { - // This is for $regex query operators that have extended json values. - if (doc.$regex._bsontype === 'BSONRegExp') { - return doc; - } - } else { - return new BSONRegExp(doc.$regex, BSONRegExp.parseOptions(doc.$options)); - } - } - - if ('$regularExpression' in doc) { - return new BSONRegExp(doc.$regularExpression.pattern, BSONRegExp.parseOptions(doc.$regularExpression.options)); - } - - throw new BSONTypeError("Unexpected BSONRegExp EJSON object form: " + JSON.stringify(doc)); - }; - - return BSONRegExp; -}(); - -Object.defineProperty(_BSONRegExp.prototype, '_bsontype', { - value: 'BSONRegExp' -}); -/** - * A class representation of the BSON Symbol type. - * @public - * @category BSONType - */ - -var BSONSymbol = -/** @class */ -function () { - /** - * @param value - the string representing the symbol. - */ - function BSONSymbol(value) { - if (!(this instanceof BSONSymbol)) return new BSONSymbol(value); - this.value = value; - } - /** Access the wrapped string value. */ - - - BSONSymbol.prototype.valueOf = function () { - return this.value; - }; - - BSONSymbol.prototype.toString = function () { - return this.value; - }; - /** @internal */ - - - BSONSymbol.prototype.inspect = function () { - return "new BSONSymbol(\"" + this.value + "\")"; - }; - - BSONSymbol.prototype.toJSON = function () { - return this.value; - }; - /** @internal */ - - - BSONSymbol.prototype.toExtendedJSON = function () { - return { - $symbol: this.value - }; - }; - /** @internal */ - - - BSONSymbol.fromExtendedJSON = function (doc) { - return new BSONSymbol(doc.$symbol); - }; - /** @internal */ - - - BSONSymbol.prototype[Symbol["for"]('nodejs.util.inspect.custom')] = function () { - return this.inspect(); - }; - - return BSONSymbol; -}(); - -Object.defineProperty(BSONSymbol.prototype, '_bsontype', { - value: 'Symbol' -}); -/** @public */ - -var LongWithoutOverridesClass = _Long; -/** - * @public - * @category BSONType - * */ - -var _Timestamp = -/** @class */ -function (_super) { - __extends(Timestamp, _super); - - function Timestamp(low, high) { - var _this = this; // eslint-disable-next-line @typescript-eslint/ban-ts-comment - ///@ts-expect-error - - - if (!(_this instanceof Timestamp)) return new Timestamp(low, high); - - if (_Long.isLong(low)) { - _this = _super.call(this, low.low, low.high, true) || this; - } else if (isObjectLike(low) && typeof low.t !== 'undefined' && typeof low.i !== 'undefined') { - _this = _super.call(this, low.i, low.t, true) || this; - } else { - _this = _super.call(this, low, high, true) || this; - } - - Object.defineProperty(_this, '_bsontype', { - value: 'Timestamp', - writable: false, - configurable: false, - enumerable: false - }); - return _this; - } - - Timestamp.prototype.toJSON = function () { - return { - $timestamp: this.toString() - }; - }; - /** Returns a Timestamp represented by the given (32-bit) integer value. */ - - - Timestamp.fromInt = function (value) { - return new Timestamp(_Long.fromInt(value, true)); - }; - /** Returns a Timestamp representing the given number value, provided that it is a finite number. Otherwise, zero is returned. */ - - - Timestamp.fromNumber = function (value) { - return new Timestamp(_Long.fromNumber(value, true)); - }; - /** - * Returns a Timestamp for the given high and low bits. Each is assumed to use 32 bits. - * - * @param lowBits - the low 32-bits. - * @param highBits - the high 32-bits. - */ - - - Timestamp.fromBits = function (lowBits, highBits) { - return new Timestamp(lowBits, highBits); - }; - /** - * Returns a Timestamp from the given string, optionally using the given radix. - * - * @param str - the textual representation of the Timestamp. - * @param optRadix - the radix in which the text is written. - */ - - - Timestamp.fromString = function (str, optRadix) { - return new Timestamp(_Long.fromString(str, true, optRadix)); - }; - /** @internal */ - - - Timestamp.prototype.toExtendedJSON = function () { - return { - $timestamp: { - t: this.high >>> 0, - i: this.low >>> 0 - } - }; - }; - /** @internal */ - - - Timestamp.fromExtendedJSON = function (doc) { - return new Timestamp(doc.$timestamp); - }; - /** @internal */ - - - Timestamp.prototype[Symbol["for"]('nodejs.util.inspect.custom')] = function () { - return this.inspect(); - }; - - Timestamp.prototype.inspect = function () { - return "new Timestamp({ t: " + this.getHighBits() + ", i: " + this.getLowBits() + " })"; - }; - - Timestamp.MAX_VALUE = _Long.MAX_UNSIGNED_VALUE; - return Timestamp; -}(LongWithoutOverridesClass); - -function isBSONType(value) { - return isObjectLike(value) && Reflect.has(value, '_bsontype') && typeof value._bsontype === 'string'; -} // INT32 boundaries - - -var BSON_INT32_MAX$1 = 0x7fffffff; -var BSON_INT32_MIN$1 = -0x80000000; // INT64 boundaries - -var BSON_INT64_MAX$1 = 0x7fffffffffffffff; -var BSON_INT64_MIN$1 = -0x8000000000000000; // all the types where we don't need to do any special processing and can just pass the EJSON -//straight to type.fromExtendedJSON - -var keysToCodecs = { - $oid: _ObjectId, - $binary: _Binary, - $uuid: _Binary, - $symbol: BSONSymbol, - $numberInt: _Int, - $numberDecimal: _Decimal, - $numberDouble: _Double, - $numberLong: _Long, - $minKey: _MinKey, - $maxKey: _MaxKey, - $regex: _BSONRegExp, - $regularExpression: _BSONRegExp, - $timestamp: _Timestamp -}; // eslint-disable-next-line @typescript-eslint/no-explicit-any - -function deserializeValue(value, options) { - if (options === void 0) { - options = {}; - } - - if (typeof value === 'number') { - if (options.relaxed || options.legacy) { - return value; - } // if it's an integer, should interpret as smallest BSON integer - // that can represent it exactly. (if out of range, interpret as double.) - - - if (Math.floor(value) === value) { - if (value >= BSON_INT32_MIN$1 && value <= BSON_INT32_MAX$1) return new _Int(value); - if (value >= BSON_INT64_MIN$1 && value <= BSON_INT64_MAX$1) return _Long.fromNumber(value); - } // If the number is a non-integer or out of integer range, should interpret as BSON Double. - - - return new _Double(value); - } // from here on out we're looking for bson types, so bail if its not an object - - - if (value == null || _typeof(value) !== 'object') return value; // upgrade deprecated undefined to null - - if (value.$undefined) return null; - var keys = Object.keys(value).filter(function (k) { - return k.startsWith('$') && value[k] != null; - }); - - for (var i = 0; i < keys.length; i++) { - var c = keysToCodecs[keys[i]]; - if (c) return c.fromExtendedJSON(value, options); - } - - if (value.$date != null) { - var d = value.$date; - var date = new Date(); - - if (options.legacy) { - if (typeof d === 'number') date.setTime(d);else if (typeof d === 'string') date.setTime(Date.parse(d)); - } else { - if (typeof d === 'string') date.setTime(Date.parse(d));else if (_Long.isLong(d)) date.setTime(d.toNumber());else if (typeof d === 'number' && options.relaxed) date.setTime(d); - } - - return date; - } - - if (value.$code != null) { - var copy = Object.assign({}, value); - - if (value.$scope) { - copy.$scope = deserializeValue(value.$scope); - } - - return _Code.fromExtendedJSON(value); - } - - if (isDBRefLike(value) || value.$dbPointer) { - var v = value.$ref ? value : value.$dbPointer; // we run into this in a "degenerate EJSON" case (with $id and $ref order flipped) - // because of the order JSON.parse goes through the document - - if (v instanceof _DBRef) return v; - var dollarKeys = Object.keys(v).filter(function (k) { - return k.startsWith('$'); - }); - var valid_1 = true; - dollarKeys.forEach(function (k) { - if (['$ref', '$id', '$db'].indexOf(k) === -1) valid_1 = false; - }); // only make DBRef if $ keys are all valid - - if (valid_1) return _DBRef.fromExtendedJSON(v); - } - - return value; -} // eslint-disable-next-line @typescript-eslint/no-explicit-any - - -function serializeArray(array, options) { - return array.map(function (v, index) { - options.seenObjects.push({ - propertyName: "index " + index, - obj: null - }); - - try { - return serializeValue(v, options); - } finally { - options.seenObjects.pop(); - } - }); -} - -function getISOString(date) { - var isoStr = date.toISOString(); // we should only show milliseconds in timestamp if they're non-zero - - return date.getUTCMilliseconds() !== 0 ? isoStr : isoStr.slice(0, -5) + 'Z'; -} // eslint-disable-next-line @typescript-eslint/no-explicit-any - - -function serializeValue(value, options) { - if ((_typeof(value) === 'object' || typeof value === 'function') && value !== null) { - var index = options.seenObjects.findIndex(function (entry) { - return entry.obj === value; - }); - - if (index !== -1) { - var props = options.seenObjects.map(function (entry) { - return entry.propertyName; - }); - var leadingPart = props.slice(0, index).map(function (prop) { - return prop + " -> "; - }).join(''); - var alreadySeen = props[index]; - var circularPart = ' -> ' + props.slice(index + 1, props.length - 1).map(function (prop) { - return prop + " -> "; - }).join(''); - var current = props[props.length - 1]; - var leadingSpace = ' '.repeat(leadingPart.length + alreadySeen.length / 2); - var dashes = '-'.repeat(circularPart.length + (alreadySeen.length + current.length) / 2 - 1); - throw new BSONTypeError('Converting circular structure to EJSON:\n' + (" " + leadingPart + alreadySeen + circularPart + current + "\n") + (" " + leadingSpace + "\\" + dashes + "/")); - } - - options.seenObjects[options.seenObjects.length - 1].obj = value; - } - - if (Array.isArray(value)) return serializeArray(value, options); - if (value === undefined) return null; - - if (value instanceof Date || isDate(value)) { - var dateNum = value.getTime(), - // is it in year range 1970-9999? - inRange = dateNum > -1 && dateNum < 253402318800000; - - if (options.legacy) { - return options.relaxed && inRange ? { - $date: value.getTime() - } : { - $date: getISOString(value) - }; - } - - return options.relaxed && inRange ? { - $date: getISOString(value) - } : { - $date: { - $numberLong: value.getTime().toString() - } - }; - } - - if (typeof value === 'number' && (!options.relaxed || !isFinite(value))) { - // it's an integer - if (Math.floor(value) === value) { - var int32Range = value >= BSON_INT32_MIN$1 && value <= BSON_INT32_MAX$1, - int64Range = value >= BSON_INT64_MIN$1 && value <= BSON_INT64_MAX$1; // interpret as being of the smallest BSON integer type that can represent the number exactly - - if (int32Range) return { - $numberInt: value.toString() - }; - if (int64Range) return { - $numberLong: value.toString() - }; - } - - return { - $numberDouble: value.toString() - }; - } - - if (value instanceof RegExp || isRegExp(value)) { - var flags = value.flags; - - if (flags === undefined) { - var match = value.toString().match(/[gimuy]*$/); - - if (match) { - flags = match[0]; - } - } - - var rx = new _BSONRegExp(value.source, flags); - return rx.toExtendedJSON(options); - } - - if (value != null && _typeof(value) === 'object') return serializeDocument(value, options); - return value; -} - -var BSON_TYPE_MAPPINGS = { - Binary: function Binary(o) { - return new _Binary(o.value(), o.sub_type); - }, - Code: function Code(o) { - return new _Code(o.code, o.scope); - }, - DBRef: function DBRef(o) { - return new _DBRef(o.collection || o.namespace, o.oid, o.db, o.fields); - }, - Decimal128: function Decimal128(o) { - return new _Decimal(o.bytes); - }, - Double: function Double(o) { - return new _Double(o.value); - }, - Int32: function Int32(o) { - return new _Int(o.value); - }, - Long: function Long(o) { - return _Long.fromBits( // underscore variants for 1.x backwards compatibility - o.low != null ? o.low : o.low_, o.low != null ? o.high : o.high_, o.low != null ? o.unsigned : o.unsigned_); - }, - MaxKey: function MaxKey() { - return new _MaxKey(); - }, - MinKey: function MinKey() { - return new _MinKey(); - }, - ObjectID: function ObjectID(o) { - return new _ObjectId(o); - }, - ObjectId: function ObjectId(o) { - return new _ObjectId(o); - }, - BSONRegExp: function BSONRegExp(o) { - return new _BSONRegExp(o.pattern, o.options); - }, - Symbol: function Symbol(o) { - return new BSONSymbol(o.value); - }, - Timestamp: function Timestamp(o) { - return _Timestamp.fromBits(o.low, o.high); - } -}; // eslint-disable-next-line @typescript-eslint/no-explicit-any - -function serializeDocument(doc, options) { - if (doc == null || _typeof(doc) !== 'object') throw new BSONError('not an object instance'); - var bsontype = doc._bsontype; - - if (typeof bsontype === 'undefined') { - // It's a regular object. Recursively serialize its property values. - var _doc = {}; - - for (var name in doc) { - options.seenObjects.push({ - propertyName: name, - obj: null - }); - - try { - _doc[name] = serializeValue(doc[name], options); - } finally { - options.seenObjects.pop(); - } - } - - return _doc; - } else if (isBSONType(doc)) { - // the "document" is really just a BSON type object - // eslint-disable-next-line @typescript-eslint/no-explicit-any - var outDoc = doc; - - if (typeof outDoc.toExtendedJSON !== 'function') { - // There's no EJSON serialization function on the object. It's probably an - // object created by a previous version of this library (or another library) - // that's duck-typing objects to look like they were generated by this library). - // Copy the object into this library's version of that type. - var mapper = BSON_TYPE_MAPPINGS[doc._bsontype]; - - if (!mapper) { - throw new BSONTypeError('Unrecognized or invalid _bsontype: ' + doc._bsontype); - } - - outDoc = mapper(outDoc); - } // Two BSON types may have nested objects that may need to be serialized too - - - if (bsontype === 'Code' && outDoc.scope) { - outDoc = new _Code(outDoc.code, serializeValue(outDoc.scope, options)); - } else if (bsontype === 'DBRef' && outDoc.oid) { - outDoc = new _DBRef(serializeValue(outDoc.collection, options), serializeValue(outDoc.oid, options), serializeValue(outDoc.db, options), serializeValue(outDoc.fields, options)); - } - - return outDoc.toExtendedJSON(options); - } else { - throw new BSONError('_bsontype must be a string, but was: ' + _typeof(bsontype)); - } -} -/** - * EJSON parse / stringify API - * @public - */ -// the namespace here is used to emulate `export * as EJSON from '...'` -// which as of now (sept 2020) api-extractor does not support -// eslint-disable-next-line @typescript-eslint/no-namespace - - -var EJSON; - -(function (EJSON) { - /** - * Parse an Extended JSON string, constructing the JavaScript value or object described by that - * string. - * - * @example - * ```js - * const { EJSON } = require('bson'); - * const text = '{ "int32": { "$numberInt": "10" } }'; - * - * // prints { int32: { [String: '10'] _bsontype: 'Int32', value: '10' } } - * console.log(EJSON.parse(text, { relaxed: false })); - * - * // prints { int32: 10 } - * console.log(EJSON.parse(text)); - * ``` - */ - function parse(text, options) { - var finalOptions = Object.assign({}, { - relaxed: true, - legacy: false - }, options); // relaxed implies not strict - - if (typeof finalOptions.relaxed === 'boolean') finalOptions.strict = !finalOptions.relaxed; - if (typeof finalOptions.strict === 'boolean') finalOptions.relaxed = !finalOptions.strict; - return JSON.parse(text, function (key, value) { - if (key.indexOf('\x00') !== -1) { - throw new BSONError("BSON Document field names cannot contain null bytes, found: " + JSON.stringify(key)); - } - - return deserializeValue(value, finalOptions); - }); - } - - EJSON.parse = parse; - /** - * Converts a BSON document to an Extended JSON string, optionally replacing values if a replacer - * function is specified or optionally including only the specified properties if a replacer array - * is specified. - * - * @param value - The value to convert to extended JSON - * @param replacer - A function that alters the behavior of the stringification process, or an array of String and Number objects that serve as a whitelist for selecting/filtering the properties of the value object to be included in the JSON string. If this value is null or not provided, all properties of the object are included in the resulting JSON string - * @param space - A String or Number object that's used to insert white space into the output JSON string for readability purposes. - * @param options - Optional settings - * - * @example - * ```js - * const { EJSON } = require('bson'); - * const Int32 = require('mongodb').Int32; - * const doc = { int32: new Int32(10) }; - * - * // prints '{"int32":{"$numberInt":"10"}}' - * console.log(EJSON.stringify(doc, { relaxed: false })); - * - * // prints '{"int32":10}' - * console.log(EJSON.stringify(doc)); - * ``` - */ - - function stringify(value, // eslint-disable-next-line @typescript-eslint/no-explicit-any - replacer, space, options) { - if (space != null && _typeof(space) === 'object') { - options = space; - space = 0; - } - - if (replacer != null && _typeof(replacer) === 'object' && !Array.isArray(replacer)) { - options = replacer; - replacer = undefined; - space = 0; - } - - var serializeOptions = Object.assign({ - relaxed: true, - legacy: false - }, options, { - seenObjects: [{ - propertyName: '(root)', - obj: null - }] - }); - var doc = serializeValue(value, serializeOptions); - return JSON.stringify(doc, replacer, space); - } - - EJSON.stringify = stringify; - /** - * Serializes an object to an Extended JSON string, and reparse it as a JavaScript object. - * - * @param value - The object to serialize - * @param options - Optional settings passed to the `stringify` function - */ - - function serialize(value, options) { - options = options || {}; - return JSON.parse(stringify(value, options)); - } - - EJSON.serialize = serialize; - /** - * Deserializes an Extended JSON object into a plain JavaScript object with native/BSON types - * - * @param ejson - The Extended JSON object to deserialize - * @param options - Optional settings passed to the parse method - */ - - function deserialize(ejson, options) { - options = options || {}; - return parse(JSON.stringify(ejson), options); - } - - EJSON.deserialize = deserialize; -})(EJSON || (EJSON = {})); -/* eslint-disable @typescript-eslint/no-explicit-any */ - -/** @public */ - - -var bsonMap; -var bsonGlobal = getGlobal(); - -if (bsonGlobal.Map) { - bsonMap = bsonGlobal.Map; -} else { - // We will return a polyfill - bsonMap = - /** @class */ - function () { - function Map(array) { - if (array === void 0) { - array = []; - } - - this._keys = []; - this._values = {}; - - for (var i = 0; i < array.length; i++) { - if (array[i] == null) continue; // skip null and undefined - - var entry = array[i]; - var key = entry[0]; - var value = entry[1]; // Add the key to the list of keys in order - - this._keys.push(key); // Add the key and value to the values dictionary with a point - // to the location in the ordered keys list - - - this._values[key] = { - v: value, - i: this._keys.length - 1 - }; - } - } - - Map.prototype.clear = function () { - this._keys = []; - this._values = {}; - }; - - Map.prototype["delete"] = function (key) { - var value = this._values[key]; - if (value == null) return false; // Delete entry - - delete this._values[key]; // Remove the key from the ordered keys list - - this._keys.splice(value.i, 1); - - return true; - }; - - Map.prototype.entries = function () { - var _this = this; - - var index = 0; - return { - next: function next() { - var key = _this._keys[index++]; - return { - value: key !== undefined ? [key, _this._values[key].v] : undefined, - done: key !== undefined ? false : true - }; - } - }; - }; - - Map.prototype.forEach = function (callback, self) { - self = self || this; - - for (var i = 0; i < this._keys.length; i++) { - var key = this._keys[i]; // Call the forEach callback - - callback.call(self, this._values[key].v, key, self); - } - }; - - Map.prototype.get = function (key) { - return this._values[key] ? this._values[key].v : undefined; - }; - - Map.prototype.has = function (key) { - return this._values[key] != null; - }; - - Map.prototype.keys = function () { - var _this = this; - - var index = 0; - return { - next: function next() { - var key = _this._keys[index++]; - return { - value: key !== undefined ? key : undefined, - done: key !== undefined ? false : true - }; - } - }; - }; - - Map.prototype.set = function (key, value) { - if (this._values[key]) { - this._values[key].v = value; - return this; - } // Add the key to the list of keys in order - - - this._keys.push(key); // Add the key and value to the values dictionary with a point - // to the location in the ordered keys list - - - this._values[key] = { - v: value, - i: this._keys.length - 1 - }; - return this; - }; - - Map.prototype.values = function () { - var _this = this; - - var index = 0; - return { - next: function next() { - var key = _this._keys[index++]; - return { - value: key !== undefined ? _this._values[key].v : undefined, - done: key !== undefined ? false : true - }; - } - }; - }; - - Object.defineProperty(Map.prototype, "size", { - get: function get() { - return this._keys.length; - }, - enumerable: false, - configurable: true - }); - return Map; - }(); -} -/** @internal */ - - -var BSON_INT32_MAX = 0x7fffffff; -/** @internal */ - -var BSON_INT32_MIN = -0x80000000; -/** @internal */ - -var BSON_INT64_MAX = Math.pow(2, 63) - 1; -/** @internal */ - -var BSON_INT64_MIN = -Math.pow(2, 63); -/** - * Any integer up to 2^53 can be precisely represented by a double. - * @internal - */ - -var JS_INT_MAX = Math.pow(2, 53); -/** - * Any integer down to -2^53 can be precisely represented by a double. - * @internal - */ - -var JS_INT_MIN = -Math.pow(2, 53); -/** Number BSON Type @internal */ - -var BSON_DATA_NUMBER = 1; -/** String BSON Type @internal */ - -var BSON_DATA_STRING = 2; -/** Object BSON Type @internal */ - -var BSON_DATA_OBJECT = 3; -/** Array BSON Type @internal */ - -var BSON_DATA_ARRAY = 4; -/** Binary BSON Type @internal */ - -var BSON_DATA_BINARY = 5; -/** Binary BSON Type @internal */ - -var BSON_DATA_UNDEFINED = 6; -/** ObjectId BSON Type @internal */ - -var BSON_DATA_OID = 7; -/** Boolean BSON Type @internal */ - -var BSON_DATA_BOOLEAN = 8; -/** Date BSON Type @internal */ - -var BSON_DATA_DATE = 9; -/** null BSON Type @internal */ - -var BSON_DATA_NULL = 10; -/** RegExp BSON Type @internal */ - -var BSON_DATA_REGEXP = 11; -/** Code BSON Type @internal */ - -var BSON_DATA_DBPOINTER = 12; -/** Code BSON Type @internal */ - -var BSON_DATA_CODE = 13; -/** Symbol BSON Type @internal */ - -var BSON_DATA_SYMBOL = 14; -/** Code with Scope BSON Type @internal */ - -var BSON_DATA_CODE_W_SCOPE = 15; -/** 32 bit Integer BSON Type @internal */ - -var BSON_DATA_INT = 16; -/** Timestamp BSON Type @internal */ - -var BSON_DATA_TIMESTAMP = 17; -/** Long BSON Type @internal */ - -var BSON_DATA_LONG = 18; -/** Decimal128 BSON Type @internal */ - -var BSON_DATA_DECIMAL128 = 19; -/** MinKey BSON Type @internal */ - -var BSON_DATA_MIN_KEY = 0xff; -/** MaxKey BSON Type @internal */ - -var BSON_DATA_MAX_KEY = 0x7f; -/** Binary Default Type @internal */ - -var BSON_BINARY_SUBTYPE_DEFAULT = 0; -/** Binary Function Type @internal */ - -var BSON_BINARY_SUBTYPE_FUNCTION = 1; -/** Binary Byte Array Type @internal */ - -var BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2; -/** Binary Deprecated UUID Type @deprecated Please use BSON_BINARY_SUBTYPE_UUID_NEW @internal */ - -var BSON_BINARY_SUBTYPE_UUID = 3; -/** Binary UUID Type @internal */ - -var BSON_BINARY_SUBTYPE_UUID_NEW = 4; -/** Binary MD5 Type @internal */ - -var BSON_BINARY_SUBTYPE_MD5 = 5; -/** Encrypted BSON type @internal */ - -var BSON_BINARY_SUBTYPE_ENCRYPTED = 6; -/** Column BSON type @internal */ - -var BSON_BINARY_SUBTYPE_COLUMN = 7; -/** Binary User Defined Type @internal */ - -var BSON_BINARY_SUBTYPE_USER_DEFINED = 128; - -function calculateObjectSize$1(object, serializeFunctions, ignoreUndefined) { - var totalLength = 4 + 1; - - if (Array.isArray(object)) { - for (var i = 0; i < object.length; i++) { - totalLength += calculateElement(i.toString(), object[i], serializeFunctions, true, ignoreUndefined); - } - } else { - // If we have toBSON defined, override the current object - if (typeof (object === null || object === void 0 ? void 0 : object.toBSON) === 'function') { - object = object.toBSON(); - } // Calculate size - - - for (var key in object) { - totalLength += calculateElement(key, object[key], serializeFunctions, false, ignoreUndefined); - } - } - - return totalLength; -} -/** @internal */ - - -function calculateElement(name, // eslint-disable-next-line @typescript-eslint/no-explicit-any -value, serializeFunctions, isArray, ignoreUndefined) { - if (serializeFunctions === void 0) { - serializeFunctions = false; - } - - if (isArray === void 0) { - isArray = false; - } - - if (ignoreUndefined === void 0) { - ignoreUndefined = false; - } // If we have toBSON defined, override the current object - - - if (typeof (value === null || value === void 0 ? void 0 : value.toBSON) === 'function') { - value = value.toBSON(); - } - - switch (_typeof(value)) { - case 'string': - return 1 + buffer_1.byteLength(name, 'utf8') + 1 + 4 + buffer_1.byteLength(value, 'utf8') + 1; - - case 'number': - if (Math.floor(value) === value && value >= JS_INT_MIN && value <= JS_INT_MAX) { - if (value >= BSON_INT32_MIN && value <= BSON_INT32_MAX) { - // 32 bit - return (name != null ? buffer_1.byteLength(name, 'utf8') + 1 : 0) + (4 + 1); - } else { - return (name != null ? buffer_1.byteLength(name, 'utf8') + 1 : 0) + (8 + 1); - } - } else { - // 64 bit - return (name != null ? buffer_1.byteLength(name, 'utf8') + 1 : 0) + (8 + 1); - } - - case 'undefined': - if (isArray || !ignoreUndefined) return (name != null ? buffer_1.byteLength(name, 'utf8') + 1 : 0) + 1; - return 0; - - case 'boolean': - return (name != null ? buffer_1.byteLength(name, 'utf8') + 1 : 0) + (1 + 1); - - case 'object': - if (value == null || value['_bsontype'] === 'MinKey' || value['_bsontype'] === 'MaxKey') { - return (name != null ? buffer_1.byteLength(name, 'utf8') + 1 : 0) + 1; - } else if (value['_bsontype'] === 'ObjectId' || value['_bsontype'] === 'ObjectID') { - return (name != null ? buffer_1.byteLength(name, 'utf8') + 1 : 0) + (12 + 1); - } else if (value instanceof Date || isDate(value)) { - return (name != null ? buffer_1.byteLength(name, 'utf8') + 1 : 0) + (8 + 1); - } else if (ArrayBuffer.isView(value) || value instanceof ArrayBuffer || isAnyArrayBuffer(value)) { - return (name != null ? buffer_1.byteLength(name, 'utf8') + 1 : 0) + (1 + 4 + 1) + value.byteLength; - } else if (value['_bsontype'] === 'Long' || value['_bsontype'] === 'Double' || value['_bsontype'] === 'Timestamp') { - return (name != null ? buffer_1.byteLength(name, 'utf8') + 1 : 0) + (8 + 1); - } else if (value['_bsontype'] === 'Decimal128') { - return (name != null ? buffer_1.byteLength(name, 'utf8') + 1 : 0) + (16 + 1); - } else if (value['_bsontype'] === 'Code') { - // Calculate size depending on the availability of a scope - if (value.scope != null && Object.keys(value.scope).length > 0) { - return (name != null ? buffer_1.byteLength(name, 'utf8') + 1 : 0) + 1 + 4 + 4 + buffer_1.byteLength(value.code.toString(), 'utf8') + 1 + calculateObjectSize$1(value.scope, serializeFunctions, ignoreUndefined); - } else { - return (name != null ? buffer_1.byteLength(name, 'utf8') + 1 : 0) + 1 + 4 + buffer_1.byteLength(value.code.toString(), 'utf8') + 1; - } - } else if (value['_bsontype'] === 'Binary') { - // Check what kind of subtype we have - if (value.sub_type === _Binary.SUBTYPE_BYTE_ARRAY) { - return (name != null ? buffer_1.byteLength(name, 'utf8') + 1 : 0) + (value.position + 1 + 4 + 1 + 4); - } else { - return (name != null ? buffer_1.byteLength(name, 'utf8') + 1 : 0) + (value.position + 1 + 4 + 1); - } - } else if (value['_bsontype'] === 'Symbol') { - return (name != null ? buffer_1.byteLength(name, 'utf8') + 1 : 0) + buffer_1.byteLength(value.value, 'utf8') + 4 + 1 + 1; - } else if (value['_bsontype'] === 'DBRef') { - // Set up correct object for serialization - var ordered_values = Object.assign({ - $ref: value.collection, - $id: value.oid - }, value.fields); // Add db reference if it exists - - if (value.db != null) { - ordered_values['$db'] = value.db; - } - - return (name != null ? buffer_1.byteLength(name, 'utf8') + 1 : 0) + 1 + calculateObjectSize$1(ordered_values, serializeFunctions, ignoreUndefined); - } else if (value instanceof RegExp || isRegExp(value)) { - return (name != null ? buffer_1.byteLength(name, 'utf8') + 1 : 0) + 1 + buffer_1.byteLength(value.source, 'utf8') + 1 + (value.global ? 1 : 0) + (value.ignoreCase ? 1 : 0) + (value.multiline ? 1 : 0) + 1; - } else if (value['_bsontype'] === 'BSONRegExp') { - return (name != null ? buffer_1.byteLength(name, 'utf8') + 1 : 0) + 1 + buffer_1.byteLength(value.pattern, 'utf8') + 1 + buffer_1.byteLength(value.options, 'utf8') + 1; - } else { - return (name != null ? buffer_1.byteLength(name, 'utf8') + 1 : 0) + calculateObjectSize$1(value, serializeFunctions, ignoreUndefined) + 1; - } - - case 'function': - // WTF for 0.4.X where typeof /someregexp/ === 'function' - if (value instanceof RegExp || isRegExp(value) || String.call(value) === '[object RegExp]') { - return (name != null ? buffer_1.byteLength(name, 'utf8') + 1 : 0) + 1 + buffer_1.byteLength(value.source, 'utf8') + 1 + (value.global ? 1 : 0) + (value.ignoreCase ? 1 : 0) + (value.multiline ? 1 : 0) + 1; - } else { - if (serializeFunctions && value.scope != null && Object.keys(value.scope).length > 0) { - return (name != null ? buffer_1.byteLength(name, 'utf8') + 1 : 0) + 1 + 4 + 4 + buffer_1.byteLength(normalizedFunctionString(value), 'utf8') + 1 + calculateObjectSize$1(value.scope, serializeFunctions, ignoreUndefined); - } else if (serializeFunctions) { - return (name != null ? buffer_1.byteLength(name, 'utf8') + 1 : 0) + 1 + 4 + buffer_1.byteLength(normalizedFunctionString(value), 'utf8') + 1; - } - } - - } - - return 0; -} - -var FIRST_BIT = 0x80; -var FIRST_TWO_BITS = 0xc0; -var FIRST_THREE_BITS = 0xe0; -var FIRST_FOUR_BITS = 0xf0; -var FIRST_FIVE_BITS = 0xf8; -var TWO_BIT_CHAR = 0xc0; -var THREE_BIT_CHAR = 0xe0; -var FOUR_BIT_CHAR = 0xf0; -var CONTINUING_CHAR = 0x80; -/** - * Determines if the passed in bytes are valid utf8 - * @param bytes - An array of 8-bit bytes. Must be indexable and have length property - * @param start - The index to start validating - * @param end - The index to end validating - */ - -function validateUtf8(bytes, start, end) { - var continuation = 0; - - for (var i = start; i < end; i += 1) { - var _byte = bytes[i]; - - if (continuation) { - if ((_byte & FIRST_TWO_BITS) !== CONTINUING_CHAR) { - return false; - } - - continuation -= 1; - } else if (_byte & FIRST_BIT) { - if ((_byte & FIRST_THREE_BITS) === TWO_BIT_CHAR) { - continuation = 1; - } else if ((_byte & FIRST_FOUR_BITS) === THREE_BIT_CHAR) { - continuation = 2; - } else if ((_byte & FIRST_FIVE_BITS) === FOUR_BIT_CHAR) { - continuation = 3; - } else { - return false; - } - } - } - - return !continuation; -} // Internal long versions - - -var JS_INT_MAX_LONG = _Long.fromNumber(JS_INT_MAX); - -var JS_INT_MIN_LONG = _Long.fromNumber(JS_INT_MIN); - -var functionCache = {}; - -function deserialize$1(buffer, options, isArray) { - options = options == null ? {} : options; - var index = options && options.index ? options.index : 0; // Read the document size - - var size = buffer[index] | buffer[index + 1] << 8 | buffer[index + 2] << 16 | buffer[index + 3] << 24; - - if (size < 5) { - throw new BSONError("bson size must be >= 5, is " + size); - } - - if (options.allowObjectSmallerThanBufferSize && buffer.length < size) { - throw new BSONError("buffer length " + buffer.length + " must be >= bson size " + size); - } - - if (!options.allowObjectSmallerThanBufferSize && buffer.length !== size) { - throw new BSONError("buffer length " + buffer.length + " must === bson size " + size); - } - - if (size + index > buffer.byteLength) { - throw new BSONError("(bson size " + size + " + options.index " + index + " must be <= buffer length " + buffer.byteLength + ")"); - } // Illegal end value - - - if (buffer[index + size - 1] !== 0) { - throw new BSONError("One object, sized correctly, with a spot for an EOO, but the EOO isn't 0x00"); - } // Start deserializtion - - - return deserializeObject(buffer, index, options, isArray); -} - -var allowedDBRefKeys = /^\$ref$|^\$id$|^\$db$/; - -function deserializeObject(buffer, index, options, isArray) { - if (isArray === void 0) { - isArray = false; - } - - var evalFunctions = options['evalFunctions'] == null ? false : options['evalFunctions']; - var cacheFunctions = options['cacheFunctions'] == null ? false : options['cacheFunctions']; - var fieldsAsRaw = options['fieldsAsRaw'] == null ? null : options['fieldsAsRaw']; // Return raw bson buffer instead of parsing it - - var raw = options['raw'] == null ? false : options['raw']; // Return BSONRegExp objects instead of native regular expressions - - var bsonRegExp = typeof options['bsonRegExp'] === 'boolean' ? options['bsonRegExp'] : false; // Controls the promotion of values vs wrapper classes - - var promoteBuffers = options['promoteBuffers'] == null ? false : options['promoteBuffers']; - var promoteLongs = options['promoteLongs'] == null ? true : options['promoteLongs']; - var promoteValues = options['promoteValues'] == null ? true : options['promoteValues']; // Ensures default validation option if none given - - var validation = options.validation == null ? { - utf8: true - } : options.validation; // Shows if global utf-8 validation is enabled or disabled - - var globalUTFValidation = true; // Reflects utf-8 validation setting regardless of global or specific key validation - - var validationSetting; // Set of keys either to enable or disable validation on - - var utf8KeysSet = new Set(); // Check for boolean uniformity and empty validation option - - var utf8ValidatedKeys = validation.utf8; - - if (typeof utf8ValidatedKeys === 'boolean') { - validationSetting = utf8ValidatedKeys; - } else { - globalUTFValidation = false; - var utf8ValidationValues = Object.keys(utf8ValidatedKeys).map(function (key) { - return utf8ValidatedKeys[key]; - }); - - if (utf8ValidationValues.length === 0) { - throw new BSONError('UTF-8 validation setting cannot be empty'); - } - - if (typeof utf8ValidationValues[0] !== 'boolean') { - throw new BSONError('Invalid UTF-8 validation option, must specify boolean values'); - } - - validationSetting = utf8ValidationValues[0]; // Ensures boolean uniformity in utf-8 validation (all true or all false) - - if (!utf8ValidationValues.every(function (item) { - return item === validationSetting; - })) { - throw new BSONError('Invalid UTF-8 validation option - keys must be all true or all false'); - } - } // Add keys to set that will either be validated or not based on validationSetting - - - if (!globalUTFValidation) { - for (var _i = 0, _a = Object.keys(utf8ValidatedKeys); _i < _a.length; _i++) { - var key = _a[_i]; - utf8KeysSet.add(key); - } - } // Set the start index - - - var startIndex = index; // Validate that we have at least 4 bytes of buffer - - if (buffer.length < 5) throw new BSONError('corrupt bson message < 5 bytes long'); // Read the document size - - var size = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; // Ensure buffer is valid size - - if (size < 5 || size > buffer.length) throw new BSONError('corrupt bson message'); // Create holding object - - var object = isArray ? [] : {}; // Used for arrays to skip having to perform utf8 decoding - - var arrayIndex = 0; - var done = false; - var isPossibleDBRef = isArray ? false : null; // While we have more left data left keep parsing - - while (!done) { - // Read the type - var elementType = buffer[index++]; // If we get a zero it's the last byte, exit - - if (elementType === 0) break; // Get the start search index - - var i = index; // Locate the end of the c string - - while (buffer[i] !== 0x00 && i < buffer.length) { - i++; - } // If are at the end of the buffer there is a problem with the document - - - if (i >= buffer.byteLength) throw new BSONError('Bad BSON Document: illegal CString'); // Represents the key - - var name = isArray ? arrayIndex++ : buffer.toString('utf8', index, i); // shouldValidateKey is true if the key should be validated, false otherwise - - var shouldValidateKey = true; - - if (globalUTFValidation || utf8KeysSet.has(name)) { - shouldValidateKey = validationSetting; - } else { - shouldValidateKey = !validationSetting; - } - - if (isPossibleDBRef !== false && name[0] === '$') { - isPossibleDBRef = allowedDBRefKeys.test(name); - } - - var value = void 0; - index = i + 1; - - if (elementType === BSON_DATA_STRING) { - var stringSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - - if (stringSize <= 0 || stringSize > buffer.length - index || buffer[index + stringSize - 1] !== 0) { - throw new BSONError('bad string length in bson'); - } - - value = getValidatedString(buffer, index, index + stringSize - 1, shouldValidateKey); - index = index + stringSize; - } else if (elementType === BSON_DATA_OID) { - var oid = buffer_1.alloc(12); - buffer.copy(oid, 0, index, index + 12); - value = new _ObjectId(oid); - index = index + 12; - } else if (elementType === BSON_DATA_INT && promoteValues === false) { - value = new _Int(buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24); - } else if (elementType === BSON_DATA_INT) { - value = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - } else if (elementType === BSON_DATA_NUMBER && promoteValues === false) { - value = new _Double(buffer.readDoubleLE(index)); - index = index + 8; - } else if (elementType === BSON_DATA_NUMBER) { - value = buffer.readDoubleLE(index); - index = index + 8; - } else if (elementType === BSON_DATA_DATE) { - var lowBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - var highBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - value = new Date(new _Long(lowBits, highBits).toNumber()); - } else if (elementType === BSON_DATA_BOOLEAN) { - if (buffer[index] !== 0 && buffer[index] !== 1) throw new BSONError('illegal boolean type value'); - value = buffer[index++] === 1; - } else if (elementType === BSON_DATA_OBJECT) { - var _index = index; - var objectSize = buffer[index] | buffer[index + 1] << 8 | buffer[index + 2] << 16 | buffer[index + 3] << 24; - if (objectSize <= 0 || objectSize > buffer.length - index) throw new BSONError('bad embedded document length in bson'); // We have a raw value - - if (raw) { - value = buffer.slice(index, index + objectSize); - } else { - var objectOptions = options; - - if (!globalUTFValidation) { - objectOptions = _assign(_assign({}, options), { - validation: { - utf8: shouldValidateKey - } - }); - } - - value = deserializeObject(buffer, _index, objectOptions, false); - } - - index = index + objectSize; - } else if (elementType === BSON_DATA_ARRAY) { - var _index = index; - var objectSize = buffer[index] | buffer[index + 1] << 8 | buffer[index + 2] << 16 | buffer[index + 3] << 24; - var arrayOptions = options; // Stop index - - var stopIndex = index + objectSize; // All elements of array to be returned as raw bson - - if (fieldsAsRaw && fieldsAsRaw[name]) { - arrayOptions = {}; - - for (var n in options) { - arrayOptions[n] = options[n]; - } - - arrayOptions['raw'] = true; - } - - if (!globalUTFValidation) { - arrayOptions = _assign(_assign({}, arrayOptions), { - validation: { - utf8: shouldValidateKey - } - }); - } - - value = deserializeObject(buffer, _index, arrayOptions, true); - index = index + objectSize; - if (buffer[index - 1] !== 0) throw new BSONError('invalid array terminator byte'); - if (index !== stopIndex) throw new BSONError('corrupted array bson'); - } else if (elementType === BSON_DATA_UNDEFINED) { - value = undefined; - } else if (elementType === BSON_DATA_NULL) { - value = null; - } else if (elementType === BSON_DATA_LONG) { - // Unpack the low and high bits - var lowBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - var highBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - - var _long = new _Long(lowBits, highBits); // Promote the long if possible - - - if (promoteLongs && promoteValues === true) { - value = _long.lessThanOrEqual(JS_INT_MAX_LONG) && _long.greaterThanOrEqual(JS_INT_MIN_LONG) ? _long.toNumber() : _long; - } else { - value = _long; - } - } else if (elementType === BSON_DATA_DECIMAL128) { - // Buffer to contain the decimal bytes - var bytes = buffer_1.alloc(16); // Copy the next 16 bytes into the bytes buffer - - buffer.copy(bytes, 0, index, index + 16); // Update index - - index = index + 16; // Assign the new Decimal128 value - - var decimal128 = new _Decimal(bytes); // If we have an alternative mapper use that - - if ('toObject' in decimal128 && typeof decimal128.toObject === 'function') { - value = decimal128.toObject(); - } else { - value = decimal128; - } - } else if (elementType === BSON_DATA_BINARY) { - var binarySize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - var totalBinarySize = binarySize; - var subType = buffer[index++]; // Did we have a negative binary size, throw - - if (binarySize < 0) throw new BSONError('Negative binary type element size found'); // Is the length longer than the document - - if (binarySize > buffer.byteLength) throw new BSONError('Binary type size larger than document size'); // Decode as raw Buffer object if options specifies it - - if (buffer['slice'] != null) { - // If we have subtype 2 skip the 4 bytes for the size - if (subType === _Binary.SUBTYPE_BYTE_ARRAY) { - binarySize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - if (binarySize < 0) throw new BSONError('Negative binary type element size found for subtype 0x02'); - if (binarySize > totalBinarySize - 4) throw new BSONError('Binary type with subtype 0x02 contains too long binary size'); - if (binarySize < totalBinarySize - 4) throw new BSONError('Binary type with subtype 0x02 contains too short binary size'); - } - - if (promoteBuffers && promoteValues) { - value = buffer.slice(index, index + binarySize); - } else { - value = new _Binary(buffer.slice(index, index + binarySize), subType); - } - } else { - var _buffer = buffer_1.alloc(binarySize); // If we have subtype 2 skip the 4 bytes for the size - - - if (subType === _Binary.SUBTYPE_BYTE_ARRAY) { - binarySize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - if (binarySize < 0) throw new BSONError('Negative binary type element size found for subtype 0x02'); - if (binarySize > totalBinarySize - 4) throw new BSONError('Binary type with subtype 0x02 contains too long binary size'); - if (binarySize < totalBinarySize - 4) throw new BSONError('Binary type with subtype 0x02 contains too short binary size'); - } // Copy the data - - - for (i = 0; i < binarySize; i++) { - _buffer[i] = buffer[index + i]; - } - - if (promoteBuffers && promoteValues) { - value = _buffer; - } else { - value = new _Binary(_buffer, subType); - } - } // Update the index - - - index = index + binarySize; - } else if (elementType === BSON_DATA_REGEXP && bsonRegExp === false) { - // Get the start search index - i = index; // Locate the end of the c string - - while (buffer[i] !== 0x00 && i < buffer.length) { - i++; - } // If are at the end of the buffer there is a problem with the document - - - if (i >= buffer.length) throw new BSONError('Bad BSON Document: illegal CString'); // Return the C string - - var source = buffer.toString('utf8', index, i); // Create the regexp - - index = i + 1; // Get the start search index - - i = index; // Locate the end of the c string - - while (buffer[i] !== 0x00 && i < buffer.length) { - i++; - } // If are at the end of the buffer there is a problem with the document - - - if (i >= buffer.length) throw new BSONError('Bad BSON Document: illegal CString'); // Return the C string - - var regExpOptions = buffer.toString('utf8', index, i); - index = i + 1; // For each option add the corresponding one for javascript - - var optionsArray = new Array(regExpOptions.length); // Parse options - - for (i = 0; i < regExpOptions.length; i++) { - switch (regExpOptions[i]) { - case 'm': - optionsArray[i] = 'm'; - break; - - case 's': - optionsArray[i] = 'g'; - break; - - case 'i': - optionsArray[i] = 'i'; - break; - } - } - - value = new RegExp(source, optionsArray.join('')); - } else if (elementType === BSON_DATA_REGEXP && bsonRegExp === true) { - // Get the start search index - i = index; // Locate the end of the c string - - while (buffer[i] !== 0x00 && i < buffer.length) { - i++; - } // If are at the end of the buffer there is a problem with the document - - - if (i >= buffer.length) throw new BSONError('Bad BSON Document: illegal CString'); // Return the C string - - var source = buffer.toString('utf8', index, i); - index = i + 1; // Get the start search index - - i = index; // Locate the end of the c string - - while (buffer[i] !== 0x00 && i < buffer.length) { - i++; - } // If are at the end of the buffer there is a problem with the document - - - if (i >= buffer.length) throw new BSONError('Bad BSON Document: illegal CString'); // Return the C string - - var regExpOptions = buffer.toString('utf8', index, i); - index = i + 1; // Set the object - - value = new _BSONRegExp(source, regExpOptions); - } else if (elementType === BSON_DATA_SYMBOL) { - var stringSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - - if (stringSize <= 0 || stringSize > buffer.length - index || buffer[index + stringSize - 1] !== 0) { - throw new BSONError('bad string length in bson'); - } - - var symbol = getValidatedString(buffer, index, index + stringSize - 1, shouldValidateKey); - value = promoteValues ? symbol : new BSONSymbol(symbol); - index = index + stringSize; - } else if (elementType === BSON_DATA_TIMESTAMP) { - var lowBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - var highBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - value = new _Timestamp(lowBits, highBits); - } else if (elementType === BSON_DATA_MIN_KEY) { - value = new _MinKey(); - } else if (elementType === BSON_DATA_MAX_KEY) { - value = new _MaxKey(); - } else if (elementType === BSON_DATA_CODE) { - var stringSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - - if (stringSize <= 0 || stringSize > buffer.length - index || buffer[index + stringSize - 1] !== 0) { - throw new BSONError('bad string length in bson'); - } - - var functionString = getValidatedString(buffer, index, index + stringSize - 1, shouldValidateKey); // If we are evaluating the functions - - if (evalFunctions) { - // If we have cache enabled let's look for the md5 of the function in the cache - if (cacheFunctions) { - // Got to do this to avoid V8 deoptimizing the call due to finding eval - value = isolateEval(functionString, functionCache, object); - } else { - value = isolateEval(functionString); - } - } else { - value = new _Code(functionString); - } // Update parse index position - - - index = index + stringSize; - } else if (elementType === BSON_DATA_CODE_W_SCOPE) { - var totalSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; // Element cannot be shorter than totalSize + stringSize + documentSize + terminator - - if (totalSize < 4 + 4 + 4 + 1) { - throw new BSONError('code_w_scope total size shorter minimum expected length'); - } // Get the code string size - - - var stringSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; // Check if we have a valid string - - if (stringSize <= 0 || stringSize > buffer.length - index || buffer[index + stringSize - 1] !== 0) { - throw new BSONError('bad string length in bson'); - } // Javascript function - - - var functionString = getValidatedString(buffer, index, index + stringSize - 1, shouldValidateKey); // Update parse index position - - index = index + stringSize; // Parse the element - - var _index = index; // Decode the size of the object document - - var objectSize = buffer[index] | buffer[index + 1] << 8 | buffer[index + 2] << 16 | buffer[index + 3] << 24; // Decode the scope object - - var scopeObject = deserializeObject(buffer, _index, options, false); // Adjust the index - - index = index + objectSize; // Check if field length is too short - - if (totalSize < 4 + 4 + objectSize + stringSize) { - throw new BSONError('code_w_scope total size is too short, truncating scope'); - } // Check if totalSize field is too long - - - if (totalSize > 4 + 4 + objectSize + stringSize) { - throw new BSONError('code_w_scope total size is too long, clips outer document'); - } // If we are evaluating the functions - - - if (evalFunctions) { - // If we have cache enabled let's look for the md5 of the function in the cache - if (cacheFunctions) { - // Got to do this to avoid V8 deoptimizing the call due to finding eval - value = isolateEval(functionString, functionCache, object); - } else { - value = isolateEval(functionString); - } - - value.scope = scopeObject; - } else { - value = new _Code(functionString, scopeObject); - } - } else if (elementType === BSON_DATA_DBPOINTER) { - // Get the code string size - var stringSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; // Check if we have a valid string - - if (stringSize <= 0 || stringSize > buffer.length - index || buffer[index + stringSize - 1] !== 0) throw new BSONError('bad string length in bson'); // Namespace - - if (validation != null && validation.utf8) { - if (!validateUtf8(buffer, index, index + stringSize - 1)) { - throw new BSONError('Invalid UTF-8 string in BSON document'); - } - } - - var namespace = buffer.toString('utf8', index, index + stringSize - 1); // Update parse index position - - index = index + stringSize; // Read the oid - - var oidBuffer = buffer_1.alloc(12); - buffer.copy(oidBuffer, 0, index, index + 12); - var oid = new _ObjectId(oidBuffer); // Update the index - - index = index + 12; // Upgrade to DBRef type - - value = new _DBRef(namespace, oid); - } else { - throw new BSONError('Detected unknown BSON type ' + elementType.toString(16) + ' for fieldname "' + name + '"'); - } - - if (name === '__proto__') { - Object.defineProperty(object, name, { - value: value, - writable: true, - enumerable: true, - configurable: true - }); - } else { - object[name] = value; - } - } // Check if the deserialization was against a valid array/object - - - if (size !== index - startIndex) { - if (isArray) throw new BSONError('corrupt array bson'); - throw new BSONError('corrupt object bson'); - } // if we did not find "$ref", "$id", "$db", or found an extraneous $key, don't make a DBRef - - - if (!isPossibleDBRef) return object; - - if (isDBRefLike(object)) { - var copy = Object.assign({}, object); - delete copy.$ref; - delete copy.$id; - delete copy.$db; - return new _DBRef(object.$ref, object.$id, object.$db, copy); - } - - return object; -} -/** - * Ensure eval is isolated, store the result in functionCache. - * - * @internal - */ - - -function isolateEval(functionString, functionCache, object) { - if (!functionCache) return new Function(functionString); // Check for cache hit, eval if missing and return cached function - - if (functionCache[functionString] == null) { - functionCache[functionString] = new Function(functionString); - } // Set the object - - - return functionCache[functionString].bind(object); -} - -function getValidatedString(buffer, start, end, shouldValidateUtf8) { - var value = buffer.toString('utf8', start, end); // if utf8 validation is on, do the check - - if (shouldValidateUtf8) { - for (var i = 0; i < value.length; i++) { - if (value.charCodeAt(i) === 0xfffd) { - if (!validateUtf8(buffer, start, end)) { - throw new BSONError('Invalid UTF-8 string in BSON document'); - } - - break; - } - } - } - - return value; -} // Copyright (c) 2008, Fair Oaks Labs, Inc. - - -function writeIEEE754(buffer, value, offset, endian, mLen, nBytes) { - var e; - var m; - var c; - var bBE = endian === 'big'; - var eLen = nBytes * 8 - mLen - 1; - var eMax = (1 << eLen) - 1; - var eBias = eMax >> 1; - var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0; - var i = bBE ? nBytes - 1 : 0; - var d = bBE ? -1 : 1; - var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0; - value = Math.abs(value); - - if (isNaN(value) || value === Infinity) { - m = isNaN(value) ? 1 : 0; - e = eMax; - } else { - e = Math.floor(Math.log(value) / Math.LN2); - - if (value * (c = Math.pow(2, -e)) < 1) { - e--; - c *= 2; - } - - if (e + eBias >= 1) { - value += rt / c; - } else { - value += rt * Math.pow(2, 1 - eBias); - } - - if (value * c >= 2) { - e++; - c /= 2; - } - - if (e + eBias >= eMax) { - m = 0; - e = eMax; - } else if (e + eBias >= 1) { - m = (value * c - 1) * Math.pow(2, mLen); - e = e + eBias; - } else { - m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); - e = 0; - } - } - - if (isNaN(value)) m = 0; - - while (mLen >= 8) { - buffer[offset + i] = m & 0xff; - i += d; - m /= 256; - mLen -= 8; - } - - e = e << mLen | m; - if (isNaN(value)) e += 8; - eLen += mLen; - - while (eLen > 0) { - buffer[offset + i] = e & 0xff; - i += d; - e /= 256; - eLen -= 8; - } - - buffer[offset + i - d] |= s * 128; -} - -var regexp = /\x00/; // eslint-disable-line no-control-regex - -var ignoreKeys = new Set(['$db', '$ref', '$id', '$clusterTime']); -/* - * isArray indicates if we are writing to a BSON array (type 0x04) - * which forces the "key" which really an array index as a string to be written as ascii - * This will catch any errors in index as a string generation - */ - -function serializeString(buffer, key, value, index, isArray) { - // Encode String type - buffer[index++] = BSON_DATA_STRING; // Number of written bytes - - var numberOfWrittenBytes = !isArray ? buffer.write(key, index, undefined, 'utf8') : buffer.write(key, index, undefined, 'ascii'); // Encode the name - - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; // Write the string - - var size = buffer.write(value, index + 4, undefined, 'utf8'); // Write the size of the string to buffer - - buffer[index + 3] = size + 1 >> 24 & 0xff; - buffer[index + 2] = size + 1 >> 16 & 0xff; - buffer[index + 1] = size + 1 >> 8 & 0xff; - buffer[index] = size + 1 & 0xff; // Update index - - index = index + 4 + size; // Write zero - - buffer[index++] = 0; - return index; -} - -function serializeNumber(buffer, key, value, index, isArray) { - // We have an integer value - // TODO(NODE-2529): Add support for big int - if (Number.isInteger(value) && value >= BSON_INT32_MIN && value <= BSON_INT32_MAX) { - // If the value fits in 32 bits encode as int32 - // Set int type 32 bits or less - buffer[index++] = BSON_DATA_INT; // Number of written bytes - - var numberOfWrittenBytes = !isArray ? buffer.write(key, index, undefined, 'utf8') : buffer.write(key, index, undefined, 'ascii'); // Encode the name - - index = index + numberOfWrittenBytes; - buffer[index++] = 0; // Write the int value - - buffer[index++] = value & 0xff; - buffer[index++] = value >> 8 & 0xff; - buffer[index++] = value >> 16 & 0xff; - buffer[index++] = value >> 24 & 0xff; - } else { - // Encode as double - buffer[index++] = BSON_DATA_NUMBER; // Number of written bytes - - var numberOfWrittenBytes = !isArray ? buffer.write(key, index, undefined, 'utf8') : buffer.write(key, index, undefined, 'ascii'); // Encode the name - - index = index + numberOfWrittenBytes; - buffer[index++] = 0; // Write float - - writeIEEE754(buffer, value, index, 'little', 52, 8); // Adjust index - - index = index + 8; - } - - return index; -} - -function serializeNull(buffer, key, _, index, isArray) { - // Set long type - buffer[index++] = BSON_DATA_NULL; // Number of written bytes - - var numberOfWrittenBytes = !isArray ? buffer.write(key, index, undefined, 'utf8') : buffer.write(key, index, undefined, 'ascii'); // Encode the name - - index = index + numberOfWrittenBytes; - buffer[index++] = 0; - return index; -} - -function serializeBoolean(buffer, key, value, index, isArray) { - // Write the type - buffer[index++] = BSON_DATA_BOOLEAN; // Number of written bytes - - var numberOfWrittenBytes = !isArray ? buffer.write(key, index, undefined, 'utf8') : buffer.write(key, index, undefined, 'ascii'); // Encode the name - - index = index + numberOfWrittenBytes; - buffer[index++] = 0; // Encode the boolean value - - buffer[index++] = value ? 1 : 0; - return index; -} - -function serializeDate(buffer, key, value, index, isArray) { - // Write the type - buffer[index++] = BSON_DATA_DATE; // Number of written bytes - - var numberOfWrittenBytes = !isArray ? buffer.write(key, index, undefined, 'utf8') : buffer.write(key, index, undefined, 'ascii'); // Encode the name - - index = index + numberOfWrittenBytes; - buffer[index++] = 0; // Write the date - - var dateInMilis = _Long.fromNumber(value.getTime()); - - var lowBits = dateInMilis.getLowBits(); - var highBits = dateInMilis.getHighBits(); // Encode low bits - - buffer[index++] = lowBits & 0xff; - buffer[index++] = lowBits >> 8 & 0xff; - buffer[index++] = lowBits >> 16 & 0xff; - buffer[index++] = lowBits >> 24 & 0xff; // Encode high bits - - buffer[index++] = highBits & 0xff; - buffer[index++] = highBits >> 8 & 0xff; - buffer[index++] = highBits >> 16 & 0xff; - buffer[index++] = highBits >> 24 & 0xff; - return index; -} - -function serializeRegExp(buffer, key, value, index, isArray) { - // Write the type - buffer[index++] = BSON_DATA_REGEXP; // Number of written bytes - - var numberOfWrittenBytes = !isArray ? buffer.write(key, index, undefined, 'utf8') : buffer.write(key, index, undefined, 'ascii'); // Encode the name - - index = index + numberOfWrittenBytes; - buffer[index++] = 0; - - if (value.source && value.source.match(regexp) != null) { - throw Error('value ' + value.source + ' must not contain null bytes'); - } // Adjust the index - - - index = index + buffer.write(value.source, index, undefined, 'utf8'); // Write zero - - buffer[index++] = 0x00; // Write the parameters - - if (value.ignoreCase) buffer[index++] = 0x69; // i - - if (value.global) buffer[index++] = 0x73; // s - - if (value.multiline) buffer[index++] = 0x6d; // m - // Add ending zero - - buffer[index++] = 0x00; - return index; -} - -function serializeBSONRegExp(buffer, key, value, index, isArray) { - // Write the type - buffer[index++] = BSON_DATA_REGEXP; // Number of written bytes - - var numberOfWrittenBytes = !isArray ? buffer.write(key, index, undefined, 'utf8') : buffer.write(key, index, undefined, 'ascii'); // Encode the name - - index = index + numberOfWrittenBytes; - buffer[index++] = 0; // Check the pattern for 0 bytes - - if (value.pattern.match(regexp) != null) { - // The BSON spec doesn't allow keys with null bytes because keys are - // null-terminated. - throw Error('pattern ' + value.pattern + ' must not contain null bytes'); - } // Adjust the index - - - index = index + buffer.write(value.pattern, index, undefined, 'utf8'); // Write zero - - buffer[index++] = 0x00; // Write the options - - index = index + buffer.write(value.options.split('').sort().join(''), index, undefined, 'utf8'); // Add ending zero - - buffer[index++] = 0x00; - return index; -} - -function serializeMinMax(buffer, key, value, index, isArray) { - // Write the type of either min or max key - if (value === null) { - buffer[index++] = BSON_DATA_NULL; - } else if (value._bsontype === 'MinKey') { - buffer[index++] = BSON_DATA_MIN_KEY; - } else { - buffer[index++] = BSON_DATA_MAX_KEY; - } // Number of written bytes - - - var numberOfWrittenBytes = !isArray ? buffer.write(key, index, undefined, 'utf8') : buffer.write(key, index, undefined, 'ascii'); // Encode the name - - index = index + numberOfWrittenBytes; - buffer[index++] = 0; - return index; -} - -function serializeObjectId(buffer, key, value, index, isArray) { - // Write the type - buffer[index++] = BSON_DATA_OID; // Number of written bytes - - var numberOfWrittenBytes = !isArray ? buffer.write(key, index, undefined, 'utf8') : buffer.write(key, index, undefined, 'ascii'); // Encode the name - - index = index + numberOfWrittenBytes; - buffer[index++] = 0; // Write the objectId into the shared buffer - - if (typeof value.id === 'string') { - buffer.write(value.id, index, undefined, 'binary'); - } else if (isUint8Array(value.id)) { - // Use the standard JS methods here because buffer.copy() is buggy with the - // browser polyfill - buffer.set(value.id.subarray(0, 12), index); - } else { - throw new BSONTypeError('object [' + JSON.stringify(value) + '] is not a valid ObjectId'); - } // Adjust index - - - return index + 12; -} - -function serializeBuffer(buffer, key, value, index, isArray) { - // Write the type - buffer[index++] = BSON_DATA_BINARY; // Number of written bytes - - var numberOfWrittenBytes = !isArray ? buffer.write(key, index, undefined, 'utf8') : buffer.write(key, index, undefined, 'ascii'); // Encode the name - - index = index + numberOfWrittenBytes; - buffer[index++] = 0; // Get size of the buffer (current write point) - - var size = value.length; // Write the size of the string to buffer - - buffer[index++] = size & 0xff; - buffer[index++] = size >> 8 & 0xff; - buffer[index++] = size >> 16 & 0xff; - buffer[index++] = size >> 24 & 0xff; // Write the default subtype - - buffer[index++] = BSON_BINARY_SUBTYPE_DEFAULT; // Copy the content form the binary field to the buffer - - buffer.set(ensureBuffer(value), index); // Adjust the index - - index = index + size; - return index; -} - -function serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, isArray, path) { - if (checkKeys === void 0) { - checkKeys = false; - } - - if (depth === void 0) { - depth = 0; - } - - if (serializeFunctions === void 0) { - serializeFunctions = false; - } - - if (ignoreUndefined === void 0) { - ignoreUndefined = true; - } - - if (isArray === void 0) { - isArray = false; - } - - if (path === void 0) { - path = []; - } - - for (var i = 0; i < path.length; i++) { - if (path[i] === value) throw new BSONError('cyclic dependency detected'); - } // Push value to stack - - - path.push(value); // Write the type - - buffer[index++] = Array.isArray(value) ? BSON_DATA_ARRAY : BSON_DATA_OBJECT; // Number of written bytes - - var numberOfWrittenBytes = !isArray ? buffer.write(key, index, undefined, 'utf8') : buffer.write(key, index, undefined, 'ascii'); // Encode the name - - index = index + numberOfWrittenBytes; - buffer[index++] = 0; - var endIndex = serializeInto(buffer, value, checkKeys, index, depth + 1, serializeFunctions, ignoreUndefined, path); // Pop stack - - path.pop(); - return endIndex; -} - -function serializeDecimal128(buffer, key, value, index, isArray) { - buffer[index++] = BSON_DATA_DECIMAL128; // Number of written bytes - - var numberOfWrittenBytes = !isArray ? buffer.write(key, index, undefined, 'utf8') : buffer.write(key, index, undefined, 'ascii'); // Encode the name - - index = index + numberOfWrittenBytes; - buffer[index++] = 0; // Write the data from the value - // Prefer the standard JS methods because their typechecking is not buggy, - // unlike the `buffer` polyfill's. - - buffer.set(value.bytes.subarray(0, 16), index); - return index + 16; -} - -function serializeLong(buffer, key, value, index, isArray) { - // Write the type - buffer[index++] = value._bsontype === 'Long' ? BSON_DATA_LONG : BSON_DATA_TIMESTAMP; // Number of written bytes - - var numberOfWrittenBytes = !isArray ? buffer.write(key, index, undefined, 'utf8') : buffer.write(key, index, undefined, 'ascii'); // Encode the name - - index = index + numberOfWrittenBytes; - buffer[index++] = 0; // Write the date - - var lowBits = value.getLowBits(); - var highBits = value.getHighBits(); // Encode low bits - - buffer[index++] = lowBits & 0xff; - buffer[index++] = lowBits >> 8 & 0xff; - buffer[index++] = lowBits >> 16 & 0xff; - buffer[index++] = lowBits >> 24 & 0xff; // Encode high bits - - buffer[index++] = highBits & 0xff; - buffer[index++] = highBits >> 8 & 0xff; - buffer[index++] = highBits >> 16 & 0xff; - buffer[index++] = highBits >> 24 & 0xff; - return index; -} - -function serializeInt32(buffer, key, value, index, isArray) { - value = value.valueOf(); // Set int type 32 bits or less - - buffer[index++] = BSON_DATA_INT; // Number of written bytes - - var numberOfWrittenBytes = !isArray ? buffer.write(key, index, undefined, 'utf8') : buffer.write(key, index, undefined, 'ascii'); // Encode the name - - index = index + numberOfWrittenBytes; - buffer[index++] = 0; // Write the int value - - buffer[index++] = value & 0xff; - buffer[index++] = value >> 8 & 0xff; - buffer[index++] = value >> 16 & 0xff; - buffer[index++] = value >> 24 & 0xff; - return index; -} - -function serializeDouble(buffer, key, value, index, isArray) { - // Encode as double - buffer[index++] = BSON_DATA_NUMBER; // Number of written bytes - - var numberOfWrittenBytes = !isArray ? buffer.write(key, index, undefined, 'utf8') : buffer.write(key, index, undefined, 'ascii'); // Encode the name - - index = index + numberOfWrittenBytes; - buffer[index++] = 0; // Write float - - writeIEEE754(buffer, value.value, index, 'little', 52, 8); // Adjust index - - index = index + 8; - return index; -} - -function serializeFunction(buffer, key, value, index, _checkKeys, _depth, isArray) { - buffer[index++] = BSON_DATA_CODE; // Number of written bytes - - var numberOfWrittenBytes = !isArray ? buffer.write(key, index, undefined, 'utf8') : buffer.write(key, index, undefined, 'ascii'); // Encode the name - - index = index + numberOfWrittenBytes; - buffer[index++] = 0; // Function string - - var functionString = normalizedFunctionString(value); // Write the string - - var size = buffer.write(functionString, index + 4, undefined, 'utf8') + 1; // Write the size of the string to buffer - - buffer[index] = size & 0xff; - buffer[index + 1] = size >> 8 & 0xff; - buffer[index + 2] = size >> 16 & 0xff; - buffer[index + 3] = size >> 24 & 0xff; // Update index - - index = index + 4 + size - 1; // Write zero - - buffer[index++] = 0; - return index; -} - -function serializeCode(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, isArray) { - if (checkKeys === void 0) { - checkKeys = false; - } - - if (depth === void 0) { - depth = 0; - } - - if (serializeFunctions === void 0) { - serializeFunctions = false; - } - - if (ignoreUndefined === void 0) { - ignoreUndefined = true; - } - - if (isArray === void 0) { - isArray = false; - } - - if (value.scope && _typeof(value.scope) === 'object') { - // Write the type - buffer[index++] = BSON_DATA_CODE_W_SCOPE; // Number of written bytes - - var numberOfWrittenBytes = !isArray ? buffer.write(key, index, undefined, 'utf8') : buffer.write(key, index, undefined, 'ascii'); // Encode the name - - index = index + numberOfWrittenBytes; - buffer[index++] = 0; // Starting index - - var startIndex = index; // Serialize the function - // Get the function string - - var functionString = typeof value.code === 'string' ? value.code : value.code.toString(); // Index adjustment - - index = index + 4; // Write string into buffer - - var codeSize = buffer.write(functionString, index + 4, undefined, 'utf8') + 1; // Write the size of the string to buffer - - buffer[index] = codeSize & 0xff; - buffer[index + 1] = codeSize >> 8 & 0xff; - buffer[index + 2] = codeSize >> 16 & 0xff; - buffer[index + 3] = codeSize >> 24 & 0xff; // Write end 0 - - buffer[index + 4 + codeSize - 1] = 0; // Write the - - index = index + codeSize + 4; // - // Serialize the scope value - - var endIndex = serializeInto(buffer, value.scope, checkKeys, index, depth + 1, serializeFunctions, ignoreUndefined); - index = endIndex - 1; // Writ the total - - var totalSize = endIndex - startIndex; // Write the total size of the object - - buffer[startIndex++] = totalSize & 0xff; - buffer[startIndex++] = totalSize >> 8 & 0xff; - buffer[startIndex++] = totalSize >> 16 & 0xff; - buffer[startIndex++] = totalSize >> 24 & 0xff; // Write trailing zero - - buffer[index++] = 0; - } else { - buffer[index++] = BSON_DATA_CODE; // Number of written bytes - - var numberOfWrittenBytes = !isArray ? buffer.write(key, index, undefined, 'utf8') : buffer.write(key, index, undefined, 'ascii'); // Encode the name - - index = index + numberOfWrittenBytes; - buffer[index++] = 0; // Function string - - var functionString = value.code.toString(); // Write the string - - var size = buffer.write(functionString, index + 4, undefined, 'utf8') + 1; // Write the size of the string to buffer - - buffer[index] = size & 0xff; - buffer[index + 1] = size >> 8 & 0xff; - buffer[index + 2] = size >> 16 & 0xff; - buffer[index + 3] = size >> 24 & 0xff; // Update index - - index = index + 4 + size - 1; // Write zero - - buffer[index++] = 0; - } - - return index; -} - -function serializeBinary(buffer, key, value, index, isArray) { - // Write the type - buffer[index++] = BSON_DATA_BINARY; // Number of written bytes - - var numberOfWrittenBytes = !isArray ? buffer.write(key, index, undefined, 'utf8') : buffer.write(key, index, undefined, 'ascii'); // Encode the name - - index = index + numberOfWrittenBytes; - buffer[index++] = 0; // Extract the buffer - - var data = value.value(true); // Calculate size - - var size = value.position; // Add the deprecated 02 type 4 bytes of size to total - - if (value.sub_type === _Binary.SUBTYPE_BYTE_ARRAY) size = size + 4; // Write the size of the string to buffer - - buffer[index++] = size & 0xff; - buffer[index++] = size >> 8 & 0xff; - buffer[index++] = size >> 16 & 0xff; - buffer[index++] = size >> 24 & 0xff; // Write the subtype to the buffer - - buffer[index++] = value.sub_type; // If we have binary type 2 the 4 first bytes are the size - - if (value.sub_type === _Binary.SUBTYPE_BYTE_ARRAY) { - size = size - 4; - buffer[index++] = size & 0xff; - buffer[index++] = size >> 8 & 0xff; - buffer[index++] = size >> 16 & 0xff; - buffer[index++] = size >> 24 & 0xff; - } // Write the data to the object - - - buffer.set(data, index); // Adjust the index - - index = index + value.position; - return index; -} - -function serializeSymbol(buffer, key, value, index, isArray) { - // Write the type - buffer[index++] = BSON_DATA_SYMBOL; // Number of written bytes - - var numberOfWrittenBytes = !isArray ? buffer.write(key, index, undefined, 'utf8') : buffer.write(key, index, undefined, 'ascii'); // Encode the name - - index = index + numberOfWrittenBytes; - buffer[index++] = 0; // Write the string - - var size = buffer.write(value.value, index + 4, undefined, 'utf8') + 1; // Write the size of the string to buffer - - buffer[index] = size & 0xff; - buffer[index + 1] = size >> 8 & 0xff; - buffer[index + 2] = size >> 16 & 0xff; - buffer[index + 3] = size >> 24 & 0xff; // Update index - - index = index + 4 + size - 1; // Write zero - - buffer[index++] = 0x00; - return index; -} - -function serializeDBRef(buffer, key, value, index, depth, serializeFunctions, isArray) { - // Write the type - buffer[index++] = BSON_DATA_OBJECT; // Number of written bytes - - var numberOfWrittenBytes = !isArray ? buffer.write(key, index, undefined, 'utf8') : buffer.write(key, index, undefined, 'ascii'); // Encode the name - - index = index + numberOfWrittenBytes; - buffer[index++] = 0; - var startIndex = index; - var output = { - $ref: value.collection || value.namespace, - $id: value.oid - }; - - if (value.db != null) { - output.$db = value.db; - } - - output = Object.assign(output, value.fields); - var endIndex = serializeInto(buffer, output, false, index, depth + 1, serializeFunctions); // Calculate object size - - var size = endIndex - startIndex; // Write the size - - buffer[startIndex++] = size & 0xff; - buffer[startIndex++] = size >> 8 & 0xff; - buffer[startIndex++] = size >> 16 & 0xff; - buffer[startIndex++] = size >> 24 & 0xff; // Set index - - return endIndex; -} - -function serializeInto(buffer, object, checkKeys, startingIndex, depth, serializeFunctions, ignoreUndefined, path) { - if (checkKeys === void 0) { - checkKeys = false; - } - - if (startingIndex === void 0) { - startingIndex = 0; - } - - if (depth === void 0) { - depth = 0; - } - - if (serializeFunctions === void 0) { - serializeFunctions = false; - } - - if (ignoreUndefined === void 0) { - ignoreUndefined = true; - } - - if (path === void 0) { - path = []; - } - - startingIndex = startingIndex || 0; - path = path || []; // Push the object to the path - - path.push(object); // Start place to serialize into - - var index = startingIndex + 4; // Special case isArray - - if (Array.isArray(object)) { - // Get object keys - for (var i = 0; i < object.length; i++) { - var key = '' + i; - var value = object[i]; // Is there an override value - - if (typeof (value === null || value === void 0 ? void 0 : value.toBSON) === 'function') { - value = value.toBSON(); - } - - if (typeof value === 'string') { - index = serializeString(buffer, key, value, index, true); - } else if (typeof value === 'number') { - index = serializeNumber(buffer, key, value, index, true); - } else if (typeof value === 'bigint') { - throw new BSONTypeError('Unsupported type BigInt, please use Decimal128'); - } else if (typeof value === 'boolean') { - index = serializeBoolean(buffer, key, value, index, true); - } else if (value instanceof Date || isDate(value)) { - index = serializeDate(buffer, key, value, index, true); - } else if (value === undefined) { - index = serializeNull(buffer, key, value, index, true); - } else if (value === null) { - index = serializeNull(buffer, key, value, index, true); - } else if (value['_bsontype'] === 'ObjectId' || value['_bsontype'] === 'ObjectID') { - index = serializeObjectId(buffer, key, value, index, true); - } else if (isUint8Array(value)) { - index = serializeBuffer(buffer, key, value, index, true); - } else if (value instanceof RegExp || isRegExp(value)) { - index = serializeRegExp(buffer, key, value, index, true); - } else if (_typeof(value) === 'object' && value['_bsontype'] == null) { - index = serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, true, path); - } else if (_typeof(value) === 'object' && isBSONType(value) && value._bsontype === 'Decimal128') { - index = serializeDecimal128(buffer, key, value, index, true); - } else if (value['_bsontype'] === 'Long' || value['_bsontype'] === 'Timestamp') { - index = serializeLong(buffer, key, value, index, true); - } else if (value['_bsontype'] === 'Double') { - index = serializeDouble(buffer, key, value, index, true); - } else if (typeof value === 'function' && serializeFunctions) { - index = serializeFunction(buffer, key, value, index, checkKeys, depth, true); - } else if (value['_bsontype'] === 'Code') { - index = serializeCode(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, true); - } else if (value['_bsontype'] === 'Binary') { - index = serializeBinary(buffer, key, value, index, true); - } else if (value['_bsontype'] === 'Symbol') { - index = serializeSymbol(buffer, key, value, index, true); - } else if (value['_bsontype'] === 'DBRef') { - index = serializeDBRef(buffer, key, value, index, depth, serializeFunctions, true); - } else if (value['_bsontype'] === 'BSONRegExp') { - index = serializeBSONRegExp(buffer, key, value, index, true); - } else if (value['_bsontype'] === 'Int32') { - index = serializeInt32(buffer, key, value, index, true); - } else if (value['_bsontype'] === 'MinKey' || value['_bsontype'] === 'MaxKey') { - index = serializeMinMax(buffer, key, value, index, true); - } else if (typeof value['_bsontype'] !== 'undefined') { - throw new BSONTypeError('Unrecognized or invalid _bsontype: ' + value['_bsontype']); - } - } - } else if (object instanceof bsonMap || isMap(object)) { - var iterator = object.entries(); - var done = false; - - while (!done) { - // Unpack the next entry - var entry = iterator.next(); - done = !!entry.done; // Are we done, then skip and terminate - - if (done) continue; // Get the entry values - - var key = entry.value[0]; - var value = entry.value[1]; // Check the type of the value - - var type = _typeof(value); // Check the key and throw error if it's illegal - - - if (typeof key === 'string' && !ignoreKeys.has(key)) { - if (key.match(regexp) != null) { - // The BSON spec doesn't allow keys with null bytes because keys are - // null-terminated. - throw Error('key ' + key + ' must not contain null bytes'); - } - - if (checkKeys) { - if ('$' === key[0]) { - throw Error('key ' + key + " must not start with '$'"); - } else if (~key.indexOf('.')) { - throw Error('key ' + key + " must not contain '.'"); - } - } - } - - if (type === 'string') { - index = serializeString(buffer, key, value, index); - } else if (type === 'number') { - index = serializeNumber(buffer, key, value, index); - } else if (type === 'bigint' || isBigInt64Array(value) || isBigUInt64Array(value)) { - throw new BSONTypeError('Unsupported type BigInt, please use Decimal128'); - } else if (type === 'boolean') { - index = serializeBoolean(buffer, key, value, index); - } else if (value instanceof Date || isDate(value)) { - index = serializeDate(buffer, key, value, index); - } else if (value === null || value === undefined && ignoreUndefined === false) { - index = serializeNull(buffer, key, value, index); - } else if (value['_bsontype'] === 'ObjectId' || value['_bsontype'] === 'ObjectID') { - index = serializeObjectId(buffer, key, value, index); - } else if (isUint8Array(value)) { - index = serializeBuffer(buffer, key, value, index); - } else if (value instanceof RegExp || isRegExp(value)) { - index = serializeRegExp(buffer, key, value, index); - } else if (type === 'object' && value['_bsontype'] == null) { - index = serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, false, path); - } else if (type === 'object' && value['_bsontype'] === 'Decimal128') { - index = serializeDecimal128(buffer, key, value, index); - } else if (value['_bsontype'] === 'Long' || value['_bsontype'] === 'Timestamp') { - index = serializeLong(buffer, key, value, index); - } else if (value['_bsontype'] === 'Double') { - index = serializeDouble(buffer, key, value, index); - } else if (value['_bsontype'] === 'Code') { - index = serializeCode(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined); - } else if (typeof value === 'function' && serializeFunctions) { - index = serializeFunction(buffer, key, value, index, checkKeys, depth, serializeFunctions); - } else if (value['_bsontype'] === 'Binary') { - index = serializeBinary(buffer, key, value, index); - } else if (value['_bsontype'] === 'Symbol') { - index = serializeSymbol(buffer, key, value, index); - } else if (value['_bsontype'] === 'DBRef') { - index = serializeDBRef(buffer, key, value, index, depth, serializeFunctions); - } else if (value['_bsontype'] === 'BSONRegExp') { - index = serializeBSONRegExp(buffer, key, value, index); - } else if (value['_bsontype'] === 'Int32') { - index = serializeInt32(buffer, key, value, index); - } else if (value['_bsontype'] === 'MinKey' || value['_bsontype'] === 'MaxKey') { - index = serializeMinMax(buffer, key, value, index); - } else if (typeof value['_bsontype'] !== 'undefined') { - throw new BSONTypeError('Unrecognized or invalid _bsontype: ' + value['_bsontype']); - } - } - } else { - if (typeof (object === null || object === void 0 ? void 0 : object.toBSON) === 'function') { - // Provided a custom serialization method - object = object.toBSON(); - - if (object != null && _typeof(object) !== 'object') { - throw new BSONTypeError('toBSON function did not return an object'); - } - } // Iterate over all the keys - - - for (var key in object) { - var value = object[key]; // Is there an override value - - if (typeof (value === null || value === void 0 ? void 0 : value.toBSON) === 'function') { - value = value.toBSON(); - } // Check the type of the value - - - var type = _typeof(value); // Check the key and throw error if it's illegal - - - if (typeof key === 'string' && !ignoreKeys.has(key)) { - if (key.match(regexp) != null) { - // The BSON spec doesn't allow keys with null bytes because keys are - // null-terminated. - throw Error('key ' + key + ' must not contain null bytes'); - } - - if (checkKeys) { - if ('$' === key[0]) { - throw Error('key ' + key + " must not start with '$'"); - } else if (~key.indexOf('.')) { - throw Error('key ' + key + " must not contain '.'"); - } - } - } - - if (type === 'string') { - index = serializeString(buffer, key, value, index); - } else if (type === 'number') { - index = serializeNumber(buffer, key, value, index); - } else if (type === 'bigint') { - throw new BSONTypeError('Unsupported type BigInt, please use Decimal128'); - } else if (type === 'boolean') { - index = serializeBoolean(buffer, key, value, index); - } else if (value instanceof Date || isDate(value)) { - index = serializeDate(buffer, key, value, index); - } else if (value === undefined) { - if (ignoreUndefined === false) index = serializeNull(buffer, key, value, index); - } else if (value === null) { - index = serializeNull(buffer, key, value, index); - } else if (value['_bsontype'] === 'ObjectId' || value['_bsontype'] === 'ObjectID') { - index = serializeObjectId(buffer, key, value, index); - } else if (isUint8Array(value)) { - index = serializeBuffer(buffer, key, value, index); - } else if (value instanceof RegExp || isRegExp(value)) { - index = serializeRegExp(buffer, key, value, index); - } else if (type === 'object' && value['_bsontype'] == null) { - index = serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, false, path); - } else if (type === 'object' && value['_bsontype'] === 'Decimal128') { - index = serializeDecimal128(buffer, key, value, index); - } else if (value['_bsontype'] === 'Long' || value['_bsontype'] === 'Timestamp') { - index = serializeLong(buffer, key, value, index); - } else if (value['_bsontype'] === 'Double') { - index = serializeDouble(buffer, key, value, index); - } else if (value['_bsontype'] === 'Code') { - index = serializeCode(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined); - } else if (typeof value === 'function' && serializeFunctions) { - index = serializeFunction(buffer, key, value, index, checkKeys, depth, serializeFunctions); - } else if (value['_bsontype'] === 'Binary') { - index = serializeBinary(buffer, key, value, index); - } else if (value['_bsontype'] === 'Symbol') { - index = serializeSymbol(buffer, key, value, index); - } else if (value['_bsontype'] === 'DBRef') { - index = serializeDBRef(buffer, key, value, index, depth, serializeFunctions); - } else if (value['_bsontype'] === 'BSONRegExp') { - index = serializeBSONRegExp(buffer, key, value, index); - } else if (value['_bsontype'] === 'Int32') { - index = serializeInt32(buffer, key, value, index); - } else if (value['_bsontype'] === 'MinKey' || value['_bsontype'] === 'MaxKey') { - index = serializeMinMax(buffer, key, value, index); - } else if (typeof value['_bsontype'] !== 'undefined') { - throw new BSONTypeError('Unrecognized or invalid _bsontype: ' + value['_bsontype']); - } - } - } // Remove the path - - - path.pop(); // Final padding byte for object - - buffer[index++] = 0x00; // Final size - - var size = index - startingIndex; // Write the size of the object - - buffer[startingIndex++] = size & 0xff; - buffer[startingIndex++] = size >> 8 & 0xff; - buffer[startingIndex++] = size >> 16 & 0xff; - buffer[startingIndex++] = size >> 24 & 0xff; - return index; -} -/** @internal */ -// Default Max Size - - -var MAXSIZE = 1024 * 1024 * 17; // Current Internal Temporary Serialization Buffer - -var buffer = buffer_1.alloc(MAXSIZE); -/** - * Sets the size of the internal serialization buffer. - * - * @param size - The desired size for the internal serialization buffer - * @public - */ - -function setInternalBufferSize(size) { - // Resize the internal serialization buffer if needed - if (buffer.length < size) { - buffer = buffer_1.alloc(size); - } -} -/** - * Serialize a Javascript object. - * - * @param object - the Javascript object to serialize. - * @returns Buffer object containing the serialized object. - * @public - */ - - -function serialize(object, options) { - if (options === void 0) { - options = {}; - } // Unpack the options - - - var checkKeys = typeof options.checkKeys === 'boolean' ? options.checkKeys : false; - var serializeFunctions = typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false; - var ignoreUndefined = typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : true; - var minInternalBufferSize = typeof options.minInternalBufferSize === 'number' ? options.minInternalBufferSize : MAXSIZE; // Resize the internal serialization buffer if needed - - if (buffer.length < minInternalBufferSize) { - buffer = buffer_1.alloc(minInternalBufferSize); - } // Attempt to serialize - - - var serializationIndex = serializeInto(buffer, object, checkKeys, 0, 0, serializeFunctions, ignoreUndefined, []); // Create the final buffer - - var finishedBuffer = buffer_1.alloc(serializationIndex); // Copy into the finished buffer - - buffer.copy(finishedBuffer, 0, 0, finishedBuffer.length); // Return the buffer - - return finishedBuffer; -} -/** - * Serialize a Javascript object using a predefined Buffer and index into the buffer, - * useful when pre-allocating the space for serialization. - * - * @param object - the Javascript object to serialize. - * @param finalBuffer - the Buffer you pre-allocated to store the serialized BSON object. - * @returns the index pointing to the last written byte in the buffer. - * @public - */ - - -function serializeWithBufferAndIndex(object, finalBuffer, options) { - if (options === void 0) { - options = {}; - } // Unpack the options - - - var checkKeys = typeof options.checkKeys === 'boolean' ? options.checkKeys : false; - var serializeFunctions = typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false; - var ignoreUndefined = typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : true; - var startIndex = typeof options.index === 'number' ? options.index : 0; // Attempt to serialize - - var serializationIndex = serializeInto(buffer, object, checkKeys, 0, 0, serializeFunctions, ignoreUndefined); - buffer.copy(finalBuffer, startIndex, 0, serializationIndex); // Return the index - - return startIndex + serializationIndex - 1; -} -/** - * Deserialize data as BSON. - * - * @param buffer - the buffer containing the serialized set of BSON documents. - * @returns returns the deserialized Javascript Object. - * @public - */ - - -function deserialize(buffer, options) { - if (options === void 0) { - options = {}; - } - - return deserialize$1(buffer instanceof buffer_1 ? buffer : ensureBuffer(buffer), options); -} -/** - * Calculate the bson size for a passed in Javascript object. - * - * @param object - the Javascript object to calculate the BSON byte size for - * @returns size of BSON object in bytes - * @public - */ - - -function calculateObjectSize(object, options) { - if (options === void 0) { - options = {}; - } - - options = options || {}; - var serializeFunctions = typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false; - var ignoreUndefined = typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : true; - return calculateObjectSize$1(object, serializeFunctions, ignoreUndefined); -} -/** - * Deserialize stream data as BSON documents. - * - * @param data - the buffer containing the serialized set of BSON documents. - * @param startIndex - the start index in the data Buffer where the deserialization is to start. - * @param numberOfDocuments - number of documents to deserialize. - * @param documents - an array where to store the deserialized documents. - * @param docStartIndex - the index in the documents array from where to start inserting documents. - * @param options - additional options used for the deserialization. - * @returns next index in the buffer after deserialization **x** numbers of documents. - * @public - */ - - -function deserializeStream(data, startIndex, numberOfDocuments, documents, docStartIndex, options) { - var internalOptions = Object.assign({ - allowObjectSmallerThanBufferSize: true, - index: 0 - }, options); - var bufferData = ensureBuffer(data); - var index = startIndex; // Loop over all documents - - for (var i = 0; i < numberOfDocuments; i++) { - // Find size of the document - var size = bufferData[index] | bufferData[index + 1] << 8 | bufferData[index + 2] << 16 | bufferData[index + 3] << 24; // Update options with index - - internalOptions.index = index; // Parse the document at this point - - documents[docStartIndex + i] = deserialize$1(bufferData, internalOptions); // Adjust index by the document size - - index = index + size; - } // Return object containing end index of parsing and list of documents - - - return index; -} -/** - * BSON default export - * @deprecated Please use named exports - * @privateRemarks - * We want to someday deprecate the default export, - * so none of the new TS types are being exported on the default - * @public - */ - - -var BSON = { - Binary: _Binary, - Code: _Code, - DBRef: _DBRef, - Decimal128: _Decimal, - Double: _Double, - Int32: _Int, - Long: _Long, - UUID: UUID, - Map: bsonMap, - MaxKey: _MaxKey, - MinKey: _MinKey, - ObjectId: _ObjectId, - ObjectID: _ObjectId, - BSONRegExp: _BSONRegExp, - BSONSymbol: BSONSymbol, - Timestamp: _Timestamp, - EJSON: EJSON, - setInternalBufferSize: setInternalBufferSize, - serialize: serialize, - serializeWithBufferAndIndex: serializeWithBufferAndIndex, - deserialize: deserialize, - calculateObjectSize: calculateObjectSize, - deserializeStream: deserializeStream, - BSONError: BSONError, - BSONTypeError: BSONTypeError -}; -/* unused harmony default export */ var __WEBPACK_DEFAULT_EXPORT__ = ((/* unused pure expression or super */ null && (BSON))); - - -/***/ }), - -/***/ 5176: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/* provided dependency */ var Buffer = __webpack_require__(365)["Buffer"]; -module.exports = function xor(a, b) { - var length = Math.min(a.length, b.length); - var buffer = new Buffer(length); - - for (var i = 0; i < length; ++i) { - buffer[i] = a[i] ^ b[i]; - } - - return buffer; -}; - -/***/ }), - -/***/ 365: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; -/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */ - -/* eslint-disable no-proto */ - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var base64 = __webpack_require__(7943); - -var ieee754 = __webpack_require__(8405); - -var customInspectSymbol = typeof Symbol === 'function' && typeof Symbol['for'] === 'function' // eslint-disable-line dot-notation -? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation -: null; -exports.Buffer = Buffer; -exports.SlowBuffer = SlowBuffer; -exports.INSPECT_MAX_BYTES = 50; -var K_MAX_LENGTH = 0x7fffffff; -exports.kMaxLength = K_MAX_LENGTH; -/** - * If `Buffer.TYPED_ARRAY_SUPPORT`: - * === true Use Uint8Array implementation (fastest) - * === false Print warning and recommend using `buffer` v4.x which has an Object - * implementation (most compatible, even IE6) - * - * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, - * Opera 11.6+, iOS 4.2+. - * - * We report that the browser does not support typed arrays if the are not subclassable - * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array` - * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support - * for __proto__ and has a buggy typed array implementation. - */ - -Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport(); - -if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && typeof console.error === 'function') { - console.error('This browser lacks typed array (Uint8Array) support which is required by ' + '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'); -} - -function typedArraySupport() { - // Can typed array instances can be augmented? - try { - var arr = new Uint8Array(1); - var proto = { - foo: function foo() { - return 42; - } - }; - Object.setPrototypeOf(proto, Uint8Array.prototype); - Object.setPrototypeOf(arr, proto); - return arr.foo() === 42; - } catch (e) { - return false; - } -} - -Object.defineProperty(Buffer.prototype, 'parent', { - enumerable: true, - get: function get() { - if (!Buffer.isBuffer(this)) return undefined; - return this.buffer; - } -}); -Object.defineProperty(Buffer.prototype, 'offset', { - enumerable: true, - get: function get() { - if (!Buffer.isBuffer(this)) return undefined; - return this.byteOffset; - } -}); - -function createBuffer(length) { - if (length > K_MAX_LENGTH) { - throw new RangeError('The value "' + length + '" is invalid for option "size"'); - } // Return an augmented `Uint8Array` instance - - - var buf = new Uint8Array(length); - Object.setPrototypeOf(buf, Buffer.prototype); - return buf; -} -/** - * The Buffer constructor returns instances of `Uint8Array` that have their - * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of - * `Uint8Array`, so the returned instances will have all the node `Buffer` methods - * and the `Uint8Array` methods. Square bracket notation works as expected -- it - * returns a single octet. - * - * The `Uint8Array` prototype remains unmodified. - */ - - -function Buffer(arg, encodingOrOffset, length) { - // Common case. - if (typeof arg === 'number') { - if (typeof encodingOrOffset === 'string') { - throw new TypeError('The "string" argument must be of type string. Received type number'); - } - - return allocUnsafe(arg); - } - - return from(arg, encodingOrOffset, length); -} - -Buffer.poolSize = 8192; // not used by this implementation - -function from(value, encodingOrOffset, length) { - if (typeof value === 'string') { - return fromString(value, encodingOrOffset); - } - - if (ArrayBuffer.isView(value)) { - return fromArrayView(value); - } - - if (value == null) { - throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + 'or Array-like Object. Received type ' + _typeof(value)); - } - - if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) { - return fromArrayBuffer(value, encodingOrOffset, length); - } - - if (typeof SharedArrayBuffer !== 'undefined' && (isInstance(value, SharedArrayBuffer) || value && isInstance(value.buffer, SharedArrayBuffer))) { - return fromArrayBuffer(value, encodingOrOffset, length); - } - - if (typeof value === 'number') { - throw new TypeError('The "value" argument must not be of type number. Received type number'); - } - - var valueOf = value.valueOf && value.valueOf(); - - if (valueOf != null && valueOf !== value) { - return Buffer.from(valueOf, encodingOrOffset, length); - } - - var b = fromObject(value); - if (b) return b; - - if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === 'function') { - return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length); - } - - throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + 'or Array-like Object. Received type ' + _typeof(value)); -} -/** - * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError - * if value is a number. - * Buffer.from(str[, encoding]) - * Buffer.from(array) - * Buffer.from(buffer) - * Buffer.from(arrayBuffer[, byteOffset[, length]]) - **/ - - -Buffer.from = function (value, encodingOrOffset, length) { - return from(value, encodingOrOffset, length); -}; // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug: -// https://github.com/feross/buffer/pull/148 - - -Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype); -Object.setPrototypeOf(Buffer, Uint8Array); - -function assertSize(size) { - if (typeof size !== 'number') { - throw new TypeError('"size" argument must be of type number'); - } else if (size < 0) { - throw new RangeError('The value "' + size + '" is invalid for option "size"'); - } -} - -function alloc(size, fill, encoding) { - assertSize(size); - - if (size <= 0) { - return createBuffer(size); - } - - if (fill !== undefined) { - // Only pay attention to encoding if it's a string. This - // prevents accidentally sending in a number that would - // be interpreted as a start offset. - return typeof encoding === 'string' ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill); - } - - return createBuffer(size); -} -/** - * Creates a new filled Buffer instance. - * alloc(size[, fill[, encoding]]) - **/ - - -Buffer.alloc = function (size, fill, encoding) { - return alloc(size, fill, encoding); -}; - -function allocUnsafe(size) { - assertSize(size); - return createBuffer(size < 0 ? 0 : checked(size) | 0); -} -/** - * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. - * */ - - -Buffer.allocUnsafe = function (size) { - return allocUnsafe(size); -}; -/** - * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. - */ - - -Buffer.allocUnsafeSlow = function (size) { - return allocUnsafe(size); -}; - -function fromString(string, encoding) { - if (typeof encoding !== 'string' || encoding === '') { - encoding = 'utf8'; - } - - if (!Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding); - } - - var length = byteLength(string, encoding) | 0; - var buf = createBuffer(length); - var actual = buf.write(string, encoding); - - if (actual !== length) { - // Writing a hex string, for example, that contains invalid characters will - // cause everything after the first invalid character to be ignored. (e.g. - // 'abxxcd' will be treated as 'ab') - buf = buf.slice(0, actual); - } - - return buf; -} - -function fromArrayLike(array) { - var length = array.length < 0 ? 0 : checked(array.length) | 0; - var buf = createBuffer(length); - - for (var i = 0; i < length; i += 1) { - buf[i] = array[i] & 255; - } - - return buf; -} - -function fromArrayView(arrayView) { - if (isInstance(arrayView, Uint8Array)) { - var copy = new Uint8Array(arrayView); - return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength); - } - - return fromArrayLike(arrayView); -} - -function fromArrayBuffer(array, byteOffset, length) { - if (byteOffset < 0 || array.byteLength < byteOffset) { - throw new RangeError('"offset" is outside of buffer bounds'); - } - - if (array.byteLength < byteOffset + (length || 0)) { - throw new RangeError('"length" is outside of buffer bounds'); - } - - var buf; - - if (byteOffset === undefined && length === undefined) { - buf = new Uint8Array(array); - } else if (length === undefined) { - buf = new Uint8Array(array, byteOffset); - } else { - buf = new Uint8Array(array, byteOffset, length); - } // Return an augmented `Uint8Array` instance - - - Object.setPrototypeOf(buf, Buffer.prototype); - return buf; -} - -function fromObject(obj) { - if (Buffer.isBuffer(obj)) { - var len = checked(obj.length) | 0; - var buf = createBuffer(len); - - if (buf.length === 0) { - return buf; - } - - obj.copy(buf, 0, 0, len); - return buf; - } - - if (obj.length !== undefined) { - if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) { - return createBuffer(0); - } - - return fromArrayLike(obj); - } - - if (obj.type === 'Buffer' && Array.isArray(obj.data)) { - return fromArrayLike(obj.data); - } -} - -function checked(length) { - // Note: cannot use `length < K_MAX_LENGTH` here because that fails when - // length is NaN (which is otherwise coerced to zero.) - if (length >= K_MAX_LENGTH) { - throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes'); - } - - return length | 0; -} - -function SlowBuffer(length) { - if (+length != length) { - // eslint-disable-line eqeqeq - length = 0; - } - - return Buffer.alloc(+length); -} - -Buffer.isBuffer = function isBuffer(b) { - return b != null && b._isBuffer === true && b !== Buffer.prototype; // so Buffer.isBuffer(Buffer.prototype) will be false -}; - -Buffer.compare = function compare(a, b) { - if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength); - if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength); - - if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { - throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array'); - } - - if (a === b) return 0; - var x = a.length; - var y = b.length; - - for (var i = 0, len = Math.min(x, y); i < len; ++i) { - if (a[i] !== b[i]) { - x = a[i]; - y = b[i]; - break; - } - } - - if (x < y) return -1; - if (y < x) return 1; - return 0; -}; - -Buffer.isEncoding = function isEncoding(encoding) { - switch (String(encoding).toLowerCase()) { - case 'hex': - case 'utf8': - case 'utf-8': - case 'ascii': - case 'latin1': - case 'binary': - case 'base64': - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return true; - - default: - return false; - } -}; - -Buffer.concat = function concat(list, length) { - if (!Array.isArray(list)) { - throw new TypeError('"list" argument must be an Array of Buffers'); - } - - if (list.length === 0) { - return Buffer.alloc(0); - } - - var i; - - if (length === undefined) { - length = 0; - - for (i = 0; i < list.length; ++i) { - length += list[i].length; - } - } - - var buffer = Buffer.allocUnsafe(length); - var pos = 0; - - for (i = 0; i < list.length; ++i) { - var buf = list[i]; - - if (isInstance(buf, Uint8Array)) { - if (pos + buf.length > buffer.length) { - Buffer.from(buf).copy(buffer, pos); - } else { - Uint8Array.prototype.set.call(buffer, buf, pos); - } - } else if (!Buffer.isBuffer(buf)) { - throw new TypeError('"list" argument must be an Array of Buffers'); - } else { - buf.copy(buffer, pos); - } - - pos += buf.length; - } - - return buffer; -}; - -function byteLength(string, encoding) { - if (Buffer.isBuffer(string)) { - return string.length; - } - - if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { - return string.byteLength; - } - - if (typeof string !== 'string') { - throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + 'Received type ' + _typeof(string)); - } - - var len = string.length; - var mustMatch = arguments.length > 2 && arguments[2] === true; - if (!mustMatch && len === 0) return 0; // Use a for loop to avoid recursion - - var loweredCase = false; - - for (;;) { - switch (encoding) { - case 'ascii': - case 'latin1': - case 'binary': - return len; - - case 'utf8': - case 'utf-8': - return utf8ToBytes(string).length; - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return len * 2; - - case 'hex': - return len >>> 1; - - case 'base64': - return base64ToBytes(string).length; - - default: - if (loweredCase) { - return mustMatch ? -1 : utf8ToBytes(string).length; // assume utf8 - } - - encoding = ('' + encoding).toLowerCase(); - loweredCase = true; - } - } -} - -Buffer.byteLength = byteLength; - -function slowToString(encoding, start, end) { - var loweredCase = false; // No need to verify that "this.length <= MAX_UINT32" since it's a read-only - // property of a typed array. - // This behaves neither like String nor Uint8Array in that we set start/end - // to their upper/lower bounds if the value passed is out of range. - // undefined is handled specially as per ECMA-262 6th Edition, - // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. - - if (start === undefined || start < 0) { - start = 0; - } // Return early if start > this.length. Done here to prevent potential uint32 - // coercion fail below. - - - if (start > this.length) { - return ''; - } - - if (end === undefined || end > this.length) { - end = this.length; - } - - if (end <= 0) { - return ''; - } // Force coercion to uint32. This will also coerce falsey/NaN values to 0. - - - end >>>= 0; - start >>>= 0; - - if (end <= start) { - return ''; - } - - if (!encoding) encoding = 'utf8'; - - while (true) { - switch (encoding) { - case 'hex': - return hexSlice(this, start, end); - - case 'utf8': - case 'utf-8': - return utf8Slice(this, start, end); - - case 'ascii': - return asciiSlice(this, start, end); - - case 'latin1': - case 'binary': - return latin1Slice(this, start, end); - - case 'base64': - return base64Slice(this, start, end); - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return utf16leSlice(this, start, end); - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding); - encoding = (encoding + '').toLowerCase(); - loweredCase = true; - } - } -} // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package) -// to detect a Buffer instance. It's not possible to use `instanceof Buffer` -// reliably in a browserify context because there could be multiple different -// copies of the 'buffer' package in use. This method works even for Buffer -// instances that were created from another copy of the `buffer` package. -// See: https://github.com/feross/buffer/issues/154 - - -Buffer.prototype._isBuffer = true; - -function swap(b, n, m) { - var i = b[n]; - b[n] = b[m]; - b[m] = i; -} - -Buffer.prototype.swap16 = function swap16() { - var len = this.length; - - if (len % 2 !== 0) { - throw new RangeError('Buffer size must be a multiple of 16-bits'); - } - - for (var i = 0; i < len; i += 2) { - swap(this, i, i + 1); - } - - return this; -}; - -Buffer.prototype.swap32 = function swap32() { - var len = this.length; - - if (len % 4 !== 0) { - throw new RangeError('Buffer size must be a multiple of 32-bits'); - } - - for (var i = 0; i < len; i += 4) { - swap(this, i, i + 3); - swap(this, i + 1, i + 2); - } - - return this; -}; - -Buffer.prototype.swap64 = function swap64() { - var len = this.length; - - if (len % 8 !== 0) { - throw new RangeError('Buffer size must be a multiple of 64-bits'); - } - - for (var i = 0; i < len; i += 8) { - swap(this, i, i + 7); - swap(this, i + 1, i + 6); - swap(this, i + 2, i + 5); - swap(this, i + 3, i + 4); - } - - return this; -}; - -Buffer.prototype.toString = function toString() { - var length = this.length; - if (length === 0) return ''; - if (arguments.length === 0) return utf8Slice(this, 0, length); - return slowToString.apply(this, arguments); -}; - -Buffer.prototype.toLocaleString = Buffer.prototype.toString; - -Buffer.prototype.equals = function equals(b) { - if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer'); - if (this === b) return true; - return Buffer.compare(this, b) === 0; -}; - -Buffer.prototype.inspect = function inspect() { - var str = ''; - var max = exports.INSPECT_MAX_BYTES; - str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim(); - if (this.length > max) str += ' ... '; - return ''; -}; - -if (customInspectSymbol) { - Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect; -} - -Buffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) { - if (isInstance(target, Uint8Array)) { - target = Buffer.from(target, target.offset, target.byteLength); - } - - if (!Buffer.isBuffer(target)) { - throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. ' + 'Received type ' + _typeof(target)); - } - - if (start === undefined) { - start = 0; - } - - if (end === undefined) { - end = target ? target.length : 0; - } - - if (thisStart === undefined) { - thisStart = 0; - } - - if (thisEnd === undefined) { - thisEnd = this.length; - } - - if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { - throw new RangeError('out of range index'); - } - - if (thisStart >= thisEnd && start >= end) { - return 0; - } - - if (thisStart >= thisEnd) { - return -1; - } - - if (start >= end) { - return 1; - } - - start >>>= 0; - end >>>= 0; - thisStart >>>= 0; - thisEnd >>>= 0; - if (this === target) return 0; - var x = thisEnd - thisStart; - var y = end - start; - var len = Math.min(x, y); - var thisCopy = this.slice(thisStart, thisEnd); - var targetCopy = target.slice(start, end); - - for (var i = 0; i < len; ++i) { - if (thisCopy[i] !== targetCopy[i]) { - x = thisCopy[i]; - y = targetCopy[i]; - break; - } - } - - if (x < y) return -1; - if (y < x) return 1; - return 0; -}; // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, -// OR the last index of `val` in `buffer` at offset <= `byteOffset`. -// -// Arguments: -// - buffer - a Buffer to search -// - val - a string, Buffer, or number -// - byteOffset - an index into `buffer`; will be clamped to an int32 -// - encoding - an optional encoding, relevant is val is a string -// - dir - true for indexOf, false for lastIndexOf - - -function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) { - // Empty buffer means no match - if (buffer.length === 0) return -1; // Normalize byteOffset - - if (typeof byteOffset === 'string') { - encoding = byteOffset; - byteOffset = 0; - } else if (byteOffset > 0x7fffffff) { - byteOffset = 0x7fffffff; - } else if (byteOffset < -0x80000000) { - byteOffset = -0x80000000; - } - - byteOffset = +byteOffset; // Coerce to Number. - - if (numberIsNaN(byteOffset)) { - // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer - byteOffset = dir ? 0 : buffer.length - 1; - } // Normalize byteOffset: negative offsets start from the end of the buffer - - - if (byteOffset < 0) byteOffset = buffer.length + byteOffset; - - if (byteOffset >= buffer.length) { - if (dir) return -1;else byteOffset = buffer.length - 1; - } else if (byteOffset < 0) { - if (dir) byteOffset = 0;else return -1; - } // Normalize val - - - if (typeof val === 'string') { - val = Buffer.from(val, encoding); - } // Finally, search either indexOf (if dir is true) or lastIndexOf - - - if (Buffer.isBuffer(val)) { - // Special case: looking for empty string/buffer always fails - if (val.length === 0) { - return -1; - } - - return arrayIndexOf(buffer, val, byteOffset, encoding, dir); - } else if (typeof val === 'number') { - val = val & 0xFF; // Search for a byte value [0-255] - - if (typeof Uint8Array.prototype.indexOf === 'function') { - if (dir) { - return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset); - } else { - return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset); - } - } - - return arrayIndexOf(buffer, [val], byteOffset, encoding, dir); - } - - throw new TypeError('val must be string, number or Buffer'); -} - -function arrayIndexOf(arr, val, byteOffset, encoding, dir) { - var indexSize = 1; - var arrLength = arr.length; - var valLength = val.length; - - if (encoding !== undefined) { - encoding = String(encoding).toLowerCase(); - - if (encoding === 'ucs2' || encoding === 'ucs-2' || encoding === 'utf16le' || encoding === 'utf-16le') { - if (arr.length < 2 || val.length < 2) { - return -1; - } - - indexSize = 2; - arrLength /= 2; - valLength /= 2; - byteOffset /= 2; - } - } - - function read(buf, i) { - if (indexSize === 1) { - return buf[i]; - } else { - return buf.readUInt16BE(i * indexSize); - } - } - - var i; - - if (dir) { - var foundIndex = -1; - - for (i = byteOffset; i < arrLength; i++) { - if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { - if (foundIndex === -1) foundIndex = i; - if (i - foundIndex + 1 === valLength) return foundIndex * indexSize; - } else { - if (foundIndex !== -1) i -= i - foundIndex; - foundIndex = -1; - } - } - } else { - if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength; - - for (i = byteOffset; i >= 0; i--) { - var found = true; - - for (var j = 0; j < valLength; j++) { - if (read(arr, i + j) !== read(val, j)) { - found = false; - break; - } - } - - if (found) return i; - } - } - - return -1; -} - -Buffer.prototype.includes = function includes(val, byteOffset, encoding) { - return this.indexOf(val, byteOffset, encoding) !== -1; -}; - -Buffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, true); -}; - -Buffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, false); -}; - -function hexWrite(buf, string, offset, length) { - offset = Number(offset) || 0; - var remaining = buf.length - offset; - - if (!length) { - length = remaining; - } else { - length = Number(length); - - if (length > remaining) { - length = remaining; - } - } - - var strLen = string.length; - - if (length > strLen / 2) { - length = strLen / 2; - } - - for (var i = 0; i < length; ++i) { - var parsed = parseInt(string.substr(i * 2, 2), 16); - if (numberIsNaN(parsed)) return i; - buf[offset + i] = parsed; - } - - return i; -} - -function utf8Write(buf, string, offset, length) { - return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length); -} - -function asciiWrite(buf, string, offset, length) { - return blitBuffer(asciiToBytes(string), buf, offset, length); -} - -function base64Write(buf, string, offset, length) { - return blitBuffer(base64ToBytes(string), buf, offset, length); -} - -function ucs2Write(buf, string, offset, length) { - return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length); -} - -Buffer.prototype.write = function write(string, offset, length, encoding) { - // Buffer#write(string) - if (offset === undefined) { - encoding = 'utf8'; - length = this.length; - offset = 0; // Buffer#write(string, encoding) - } else if (length === undefined && typeof offset === 'string') { - encoding = offset; - length = this.length; - offset = 0; // Buffer#write(string, offset[, length][, encoding]) - } else if (isFinite(offset)) { - offset = offset >>> 0; - - if (isFinite(length)) { - length = length >>> 0; - if (encoding === undefined) encoding = 'utf8'; - } else { - encoding = length; - length = undefined; - } - } else { - throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported'); - } - - var remaining = this.length - offset; - if (length === undefined || length > remaining) length = remaining; - - if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) { - throw new RangeError('Attempt to write outside buffer bounds'); - } - - if (!encoding) encoding = 'utf8'; - var loweredCase = false; - - for (;;) { - switch (encoding) { - case 'hex': - return hexWrite(this, string, offset, length); - - case 'utf8': - case 'utf-8': - return utf8Write(this, string, offset, length); - - case 'ascii': - case 'latin1': - case 'binary': - return asciiWrite(this, string, offset, length); - - case 'base64': - // Warning: maxLength not taken into account in base64Write - return base64Write(this, string, offset, length); - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return ucs2Write(this, string, offset, length); - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding); - encoding = ('' + encoding).toLowerCase(); - loweredCase = true; - } - } -}; - -Buffer.prototype.toJSON = function toJSON() { - return { - type: 'Buffer', - data: Array.prototype.slice.call(this._arr || this, 0) - }; -}; - -function base64Slice(buf, start, end) { - if (start === 0 && end === buf.length) { - return base64.fromByteArray(buf); - } else { - return base64.fromByteArray(buf.slice(start, end)); - } -} - -function utf8Slice(buf, start, end) { - end = Math.min(buf.length, end); - var res = []; - var i = start; - - while (i < end) { - var firstByte = buf[i]; - var codePoint = null; - var bytesPerSequence = firstByte > 0xEF ? 4 : firstByte > 0xDF ? 3 : firstByte > 0xBF ? 2 : 1; - - if (i + bytesPerSequence <= end) { - var secondByte, thirdByte, fourthByte, tempCodePoint; - - switch (bytesPerSequence) { - case 1: - if (firstByte < 0x80) { - codePoint = firstByte; - } - - break; - - case 2: - secondByte = buf[i + 1]; - - if ((secondByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0x1F) << 0x6 | secondByte & 0x3F; - - if (tempCodePoint > 0x7F) { - codePoint = tempCodePoint; - } - } - - break; - - case 3: - secondByte = buf[i + 1]; - thirdByte = buf[i + 2]; - - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | thirdByte & 0x3F; - - if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { - codePoint = tempCodePoint; - } - } - - break; - - case 4: - secondByte = buf[i + 1]; - thirdByte = buf[i + 2]; - fourthByte = buf[i + 3]; - - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | fourthByte & 0x3F; - - if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { - codePoint = tempCodePoint; - } - } - - } - } - - if (codePoint === null) { - // we did not generate a valid codePoint so insert a - // replacement char (U+FFFD) and advance only 1 byte - codePoint = 0xFFFD; - bytesPerSequence = 1; - } else if (codePoint > 0xFFFF) { - // encode to utf16 (surrogate pair dance) - codePoint -= 0x10000; - res.push(codePoint >>> 10 & 0x3FF | 0xD800); - codePoint = 0xDC00 | codePoint & 0x3FF; - } - - res.push(codePoint); - i += bytesPerSequence; - } - - return decodeCodePointsArray(res); -} // Based on http://stackoverflow.com/a/22747272/680742, the browser with -// the lowest limit is Chrome, with 0x10000 args. -// We go 1 magnitude less, for safety - - -var MAX_ARGUMENTS_LENGTH = 0x1000; - -function decodeCodePointsArray(codePoints) { - var len = codePoints.length; - - if (len <= MAX_ARGUMENTS_LENGTH) { - return String.fromCharCode.apply(String, codePoints); // avoid extra slice() - } // Decode in chunks to avoid "call stack size exceeded". - - - var res = ''; - var i = 0; - - while (i < len) { - res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)); - } - - return res; -} - -function asciiSlice(buf, start, end) { - var ret = ''; - end = Math.min(buf.length, end); - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i] & 0x7F); - } - - return ret; -} - -function latin1Slice(buf, start, end) { - var ret = ''; - end = Math.min(buf.length, end); - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i]); - } - - return ret; -} - -function hexSlice(buf, start, end) { - var len = buf.length; - if (!start || start < 0) start = 0; - if (!end || end < 0 || end > len) end = len; - var out = ''; - - for (var i = start; i < end; ++i) { - out += hexSliceLookupTable[buf[i]]; - } - - return out; -} - -function utf16leSlice(buf, start, end) { - var bytes = buf.slice(start, end); - var res = ''; // If bytes.length is odd, the last 8 bits must be ignored (same as node.js) - - for (var i = 0; i < bytes.length - 1; i += 2) { - res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256); - } - - return res; -} - -Buffer.prototype.slice = function slice(start, end) { - var len = this.length; - start = ~~start; - end = end === undefined ? len : ~~end; - - if (start < 0) { - start += len; - if (start < 0) start = 0; - } else if (start > len) { - start = len; - } - - if (end < 0) { - end += len; - if (end < 0) end = 0; - } else if (end > len) { - end = len; - } - - if (end < start) end = start; - var newBuf = this.subarray(start, end); // Return an augmented `Uint8Array` instance - - Object.setPrototypeOf(newBuf, Buffer.prototype); - return newBuf; -}; -/* - * Need to make sure that buffer isn't trying to write out of bounds. - */ - - -function checkOffset(offset, ext, length) { - if (offset % 1 !== 0 || offset < 0) throw new RangeError('offset is not uint'); - if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length'); -} - -Buffer.prototype.readUintLE = Buffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) { - offset = offset >>> 0; - byteLength = byteLength >>> 0; - if (!noAssert) checkOffset(offset, byteLength, this.length); - var val = this[offset]; - var mul = 1; - var i = 0; - - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul; - } - - return val; -}; - -Buffer.prototype.readUintBE = Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) { - offset = offset >>> 0; - byteLength = byteLength >>> 0; - - if (!noAssert) { - checkOffset(offset, byteLength, this.length); - } - - var val = this[offset + --byteLength]; - var mul = 1; - - while (byteLength > 0 && (mul *= 0x100)) { - val += this[offset + --byteLength] * mul; - } - - return val; -}; - -Buffer.prototype.readUint8 = Buffer.prototype.readUInt8 = function readUInt8(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 1, this.length); - return this[offset]; -}; - -Buffer.prototype.readUint16LE = Buffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 2, this.length); - return this[offset] | this[offset + 1] << 8; -}; - -Buffer.prototype.readUint16BE = Buffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 2, this.length); - return this[offset] << 8 | this[offset + 1]; -}; - -Buffer.prototype.readUint32LE = Buffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 4, this.length); - return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 0x1000000; -}; - -Buffer.prototype.readUint32BE = Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 4, this.length); - return this[offset] * 0x1000000 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]); -}; - -Buffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) { - offset = offset >>> 0; - byteLength = byteLength >>> 0; - if (!noAssert) checkOffset(offset, byteLength, this.length); - var val = this[offset]; - var mul = 1; - var i = 0; - - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul; - } - - mul *= 0x80; - if (val >= mul) val -= Math.pow(2, 8 * byteLength); - return val; -}; - -Buffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) { - offset = offset >>> 0; - byteLength = byteLength >>> 0; - if (!noAssert) checkOffset(offset, byteLength, this.length); - var i = byteLength; - var mul = 1; - var val = this[offset + --i]; - - while (i > 0 && (mul *= 0x100)) { - val += this[offset + --i] * mul; - } - - mul *= 0x80; - if (val >= mul) val -= Math.pow(2, 8 * byteLength); - return val; -}; - -Buffer.prototype.readInt8 = function readInt8(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 1, this.length); - if (!(this[offset] & 0x80)) return this[offset]; - return (0xff - this[offset] + 1) * -1; -}; - -Buffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 2, this.length); - var val = this[offset] | this[offset + 1] << 8; - return val & 0x8000 ? val | 0xFFFF0000 : val; -}; - -Buffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 2, this.length); - var val = this[offset + 1] | this[offset] << 8; - return val & 0x8000 ? val | 0xFFFF0000 : val; -}; - -Buffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 4, this.length); - return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24; -}; - -Buffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 4, this.length); - return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]; -}; - -Buffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 4, this.length); - return ieee754.read(this, offset, true, 23, 4); -}; - -Buffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 4, this.length); - return ieee754.read(this, offset, false, 23, 4); -}; - -Buffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 8, this.length); - return ieee754.read(this, offset, true, 52, 8); -}; - -Buffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 8, this.length); - return ieee754.read(this, offset, false, 52, 8); -}; - -function checkInt(buf, value, offset, ext, max, min) { - if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance'); - if (value > max || value < min) throw new RangeError('"value" argument is out of bounds'); - if (offset + ext > buf.length) throw new RangeError('Index out of range'); -} - -Buffer.prototype.writeUintLE = Buffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) { - value = +value; - offset = offset >>> 0; - byteLength = byteLength >>> 0; - - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1; - checkInt(this, value, offset, byteLength, maxBytes, 0); - } - - var mul = 1; - var i = 0; - this[offset] = value & 0xFF; - - while (++i < byteLength && (mul *= 0x100)) { - this[offset + i] = value / mul & 0xFF; - } - - return offset + byteLength; -}; - -Buffer.prototype.writeUintBE = Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) { - value = +value; - offset = offset >>> 0; - byteLength = byteLength >>> 0; - - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1; - checkInt(this, value, offset, byteLength, maxBytes, 0); - } - - var i = byteLength - 1; - var mul = 1; - this[offset + i] = value & 0xFF; - - while (--i >= 0 && (mul *= 0x100)) { - this[offset + i] = value / mul & 0xFF; - } - - return offset + byteLength; -}; - -Buffer.prototype.writeUint8 = Buffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0); - this[offset] = value & 0xff; - return offset + 1; -}; - -Buffer.prototype.writeUint16LE = Buffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); - this[offset] = value & 0xff; - this[offset + 1] = value >>> 8; - return offset + 2; -}; - -Buffer.prototype.writeUint16BE = Buffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); - this[offset] = value >>> 8; - this[offset + 1] = value & 0xff; - return offset + 2; -}; - -Buffer.prototype.writeUint32LE = Buffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); - this[offset + 3] = value >>> 24; - this[offset + 2] = value >>> 16; - this[offset + 1] = value >>> 8; - this[offset] = value & 0xff; - return offset + 4; -}; - -Buffer.prototype.writeUint32BE = Buffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); - this[offset] = value >>> 24; - this[offset + 1] = value >>> 16; - this[offset + 2] = value >>> 8; - this[offset + 3] = value & 0xff; - return offset + 4; -}; - -Buffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) { - value = +value; - offset = offset >>> 0; - - if (!noAssert) { - var limit = Math.pow(2, 8 * byteLength - 1); - checkInt(this, value, offset, byteLength, limit - 1, -limit); - } - - var i = 0; - var mul = 1; - var sub = 0; - this[offset] = value & 0xFF; - - while (++i < byteLength && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { - sub = 1; - } - - this[offset + i] = (value / mul >> 0) - sub & 0xFF; - } - - return offset + byteLength; -}; - -Buffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) { - value = +value; - offset = offset >>> 0; - - if (!noAssert) { - var limit = Math.pow(2, 8 * byteLength - 1); - checkInt(this, value, offset, byteLength, limit - 1, -limit); - } - - var i = byteLength - 1; - var mul = 1; - var sub = 0; - this[offset + i] = value & 0xFF; - - while (--i >= 0 && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { - sub = 1; - } - - this[offset + i] = (value / mul >> 0) - sub & 0xFF; - } - - return offset + byteLength; -}; - -Buffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80); - if (value < 0) value = 0xff + value + 1; - this[offset] = value & 0xff; - return offset + 1; -}; - -Buffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); - this[offset] = value & 0xff; - this[offset + 1] = value >>> 8; - return offset + 2; -}; - -Buffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); - this[offset] = value >>> 8; - this[offset + 1] = value & 0xff; - return offset + 2; -}; - -Buffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); - this[offset] = value & 0xff; - this[offset + 1] = value >>> 8; - this[offset + 2] = value >>> 16; - this[offset + 3] = value >>> 24; - return offset + 4; -}; - -Buffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); - if (value < 0) value = 0xffffffff + value + 1; - this[offset] = value >>> 24; - this[offset + 1] = value >>> 16; - this[offset + 2] = value >>> 8; - this[offset + 3] = value & 0xff; - return offset + 4; -}; - -function checkIEEE754(buf, value, offset, ext, max, min) { - if (offset + ext > buf.length) throw new RangeError('Index out of range'); - if (offset < 0) throw new RangeError('Index out of range'); -} - -function writeFloat(buf, value, offset, littleEndian, noAssert) { - value = +value; - offset = offset >>> 0; - - if (!noAssert) { - checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38); - } - - ieee754.write(buf, value, offset, littleEndian, 23, 4); - return offset + 4; -} - -Buffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) { - return writeFloat(this, value, offset, true, noAssert); -}; - -Buffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) { - return writeFloat(this, value, offset, false, noAssert); -}; - -function writeDouble(buf, value, offset, littleEndian, noAssert) { - value = +value; - offset = offset >>> 0; - - if (!noAssert) { - checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308); - } - - ieee754.write(buf, value, offset, littleEndian, 52, 8); - return offset + 8; -} - -Buffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) { - return writeDouble(this, value, offset, true, noAssert); -}; - -Buffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) { - return writeDouble(this, value, offset, false, noAssert); -}; // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) - - -Buffer.prototype.copy = function copy(target, targetStart, start, end) { - if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer'); - if (!start) start = 0; - if (!end && end !== 0) end = this.length; - if (targetStart >= target.length) targetStart = target.length; - if (!targetStart) targetStart = 0; - if (end > 0 && end < start) end = start; // Copy 0 bytes; we're done - - if (end === start) return 0; - if (target.length === 0 || this.length === 0) return 0; // Fatal error conditions - - if (targetStart < 0) { - throw new RangeError('targetStart out of bounds'); - } - - if (start < 0 || start >= this.length) throw new RangeError('Index out of range'); - if (end < 0) throw new RangeError('sourceEnd out of bounds'); // Are we oob? - - if (end > this.length) end = this.length; - - if (target.length - targetStart < end - start) { - end = target.length - targetStart + start; - } - - var len = end - start; - - if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') { - // Use built-in when available, missing from IE11 - this.copyWithin(targetStart, start, end); - } else { - Uint8Array.prototype.set.call(target, this.subarray(start, end), targetStart); - } - - return len; -}; // Usage: -// buffer.fill(number[, offset[, end]]) -// buffer.fill(buffer[, offset[, end]]) -// buffer.fill(string[, offset[, end]][, encoding]) - - -Buffer.prototype.fill = function fill(val, start, end, encoding) { - // Handle string cases: - if (typeof val === 'string') { - if (typeof start === 'string') { - encoding = start; - start = 0; - end = this.length; - } else if (typeof end === 'string') { - encoding = end; - end = this.length; - } - - if (encoding !== undefined && typeof encoding !== 'string') { - throw new TypeError('encoding must be a string'); - } - - if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding); - } - - if (val.length === 1) { - var code = val.charCodeAt(0); - - if (encoding === 'utf8' && code < 128 || encoding === 'latin1') { - // Fast path: If `val` fits into a single byte, use that numeric value. - val = code; - } - } - } else if (typeof val === 'number') { - val = val & 255; - } else if (typeof val === 'boolean') { - val = Number(val); - } // Invalid ranges are not set to a default, so can range check early. - - - if (start < 0 || this.length < start || this.length < end) { - throw new RangeError('Out of range index'); - } - - if (end <= start) { - return this; - } - - start = start >>> 0; - end = end === undefined ? this.length : end >>> 0; - if (!val) val = 0; - var i; - - if (typeof val === 'number') { - for (i = start; i < end; ++i) { - this[i] = val; - } - } else { - var bytes = Buffer.isBuffer(val) ? val : Buffer.from(val, encoding); - var len = bytes.length; - - if (len === 0) { - throw new TypeError('The value "' + val + '" is invalid for argument "value"'); - } - - for (i = 0; i < end - start; ++i) { - this[i + start] = bytes[i % len]; - } - } - - return this; -}; // HELPER FUNCTIONS -// ================ - - -var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g; - -function base64clean(str) { - // Node takes equal signs as end of the Base64 encoding - str = str.split('=')[0]; // Node strips out invalid characters like \n and \t from the string, base64-js does not - - str = str.trim().replace(INVALID_BASE64_RE, ''); // Node converts strings with length < 2 to '' - - if (str.length < 2) return ''; // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not - - while (str.length % 4 !== 0) { - str = str + '='; - } - - return str; -} - -function utf8ToBytes(string, units) { - units = units || Infinity; - var codePoint; - var length = string.length; - var leadSurrogate = null; - var bytes = []; - - for (var i = 0; i < length; ++i) { - codePoint = string.charCodeAt(i); // is surrogate component - - if (codePoint > 0xD7FF && codePoint < 0xE000) { - // last char was a lead - if (!leadSurrogate) { - // no lead yet - if (codePoint > 0xDBFF) { - // unexpected trail - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - continue; - } else if (i + 1 === length) { - // unpaired lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - continue; - } // valid lead - - - leadSurrogate = codePoint; - continue; - } // 2 leads in a row - - - if (codePoint < 0xDC00) { - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - leadSurrogate = codePoint; - continue; - } // valid surrogate pair - - - codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000; - } else if (leadSurrogate) { - // valid bmp char, but last char was a lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - } - - leadSurrogate = null; // encode utf8 - - if (codePoint < 0x80) { - if ((units -= 1) < 0) break; - bytes.push(codePoint); - } else if (codePoint < 0x800) { - if ((units -= 2) < 0) break; - bytes.push(codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80); - } else if (codePoint < 0x10000) { - if ((units -= 3) < 0) break; - bytes.push(codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80); - } else if (codePoint < 0x110000) { - if ((units -= 4) < 0) break; - bytes.push(codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80); - } else { - throw new Error('Invalid code point'); - } - } - - return bytes; -} - -function asciiToBytes(str) { - var byteArray = []; - - for (var i = 0; i < str.length; ++i) { - // Node's code seems to be doing this and not & 0x7F.. - byteArray.push(str.charCodeAt(i) & 0xFF); - } - - return byteArray; -} - -function utf16leToBytes(str, units) { - var c, hi, lo; - var byteArray = []; - - for (var i = 0; i < str.length; ++i) { - if ((units -= 2) < 0) break; - c = str.charCodeAt(i); - hi = c >> 8; - lo = c % 256; - byteArray.push(lo); - byteArray.push(hi); - } - - return byteArray; -} - -function base64ToBytes(str) { - return base64.toByteArray(base64clean(str)); -} - -function blitBuffer(src, dst, offset, length) { - for (var i = 0; i < length; ++i) { - if (i + offset >= dst.length || i >= src.length) break; - dst[i + offset] = src[i]; - } - - return i; -} // ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass -// the `instanceof` check but they should be treated as of that type. -// See: https://github.com/feross/buffer/issues/166 - - -function isInstance(obj, type) { - return obj instanceof type || obj != null && obj.constructor != null && obj.constructor.name != null && obj.constructor.name === type.name; -} - -function numberIsNaN(obj) { - // For IE11 support - return obj !== obj; // eslint-disable-line no-self-compare -} // Create lookup table for `toString('hex')` -// See: https://github.com/feross/buffer/issues/219 - - -var hexSliceLookupTable = function () { - var alphabet = '0123456789abcdef'; - var table = new Array(256); - - for (var i = 0; i < 16; ++i) { - var i16 = i * 16; - - for (var j = 0; j < 16; ++j) { - table[i16 + j] = alphabet[i] + alphabet[j]; - } - } - - return table; -}(); - -/***/ }), - -/***/ 8780: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var GetIntrinsic = __webpack_require__(6893); - -var callBind = __webpack_require__(3862); - -var $indexOf = callBind(GetIntrinsic('String.prototype.indexOf')); - -module.exports = function callBoundIntrinsic(name, allowMissing) { - var intrinsic = GetIntrinsic(name, !!allowMissing); - - if (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) { - return callBind(intrinsic); - } - - return intrinsic; -}; - -/***/ }), - -/***/ 3862: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var bind = __webpack_require__(5246); - -var GetIntrinsic = __webpack_require__(6893); - -var $apply = GetIntrinsic('%Function.prototype.apply%'); -var $call = GetIntrinsic('%Function.prototype.call%'); -var $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply); -var $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true); -var $defineProperty = GetIntrinsic('%Object.defineProperty%', true); -var $max = GetIntrinsic('%Math.max%'); - -if ($defineProperty) { - try { - $defineProperty({}, 'a', { - value: 1 - }); - } catch (e) { - // IE 8 has a broken defineProperty - $defineProperty = null; - } -} - -module.exports = function callBind(originalFunction) { - var func = $reflectApply(bind, $call, arguments); - - if ($gOPD && $defineProperty) { - var desc = $gOPD(func, 'length'); - - if (desc.configurable) { - // original length, plus the receiver, minus any additional arguments (after the receiver) - $defineProperty(func, 'length', { - value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) - }); - } - } - - return func; -}; - -var applyBind = function applyBind() { - return $reflectApply(bind, $apply, arguments); -}; - -if ($defineProperty) { - $defineProperty(module.exports, 'apply', { - value: applyBind - }); -} else { - module.exports.apply = applyBind; -} - -/***/ }), - -/***/ 8842: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var Buffer = (__webpack_require__(9047).Buffer); - -var Transform = (__webpack_require__(4723).Transform); - -var StringDecoder = (__webpack_require__(113)/* .StringDecoder */ .s); - -var inherits = __webpack_require__(376); - -function CipherBase(hashMode) { - Transform.call(this); - this.hashMode = typeof hashMode === 'string'; - - if (this.hashMode) { - this[hashMode] = this._finalOrDigest; - } else { - this["final"] = this._finalOrDigest; - } - - if (this._final) { - this.__final = this._final; - this._final = null; - } - - this._decoder = null; - this._encoding = null; -} - -inherits(CipherBase, Transform); - -CipherBase.prototype.update = function (data, inputEnc, outputEnc) { - if (typeof data === 'string') { - data = Buffer.from(data, inputEnc); - } - - var outData = this._update(data); - - if (this.hashMode) return this; - - if (outputEnc) { - outData = this._toString(outData, outputEnc); - } - - return outData; -}; - -CipherBase.prototype.setAutoPadding = function () {}; - -CipherBase.prototype.getAuthTag = function () { - throw new Error('trying to get auth tag in unsupported state'); -}; - -CipherBase.prototype.setAuthTag = function () { - throw new Error('trying to set auth tag in unsupported state'); -}; - -CipherBase.prototype.setAAD = function () { - throw new Error('trying to set aad in unsupported state'); -}; - -CipherBase.prototype._transform = function (data, _, next) { - var err; - - try { - if (this.hashMode) { - this._update(data); - } else { - this.push(this._update(data)); - } - } catch (e) { - err = e; - } finally { - next(err); - } -}; - -CipherBase.prototype._flush = function (done) { - var err; - - try { - this.push(this.__final()); - } catch (e) { - err = e; - } - - done(err); -}; - -CipherBase.prototype._finalOrDigest = function (outputEnc) { - var outData = this.__final() || Buffer.alloc(0); - - if (outputEnc) { - outData = this._toString(outData, outputEnc, true); - } - - return outData; -}; - -CipherBase.prototype._toString = function (value, enc, fin) { - if (!this._decoder) { - this._decoder = new StringDecoder(enc); - this._encoding = enc; - } - - if (this._encoding !== enc) throw new Error('can\'t switch encodings'); - - var out = this._decoder.write(value); - - if (fin) { - out += this._decoder.end(); - } - - return out; -}; - -module.exports = CipherBase; - -/***/ }), - -/***/ 4637: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/* provided dependency */ var Buffer = __webpack_require__(365)["Buffer"]; -var elliptic = __webpack_require__(8333); - -var BN = __webpack_require__(6781); - -module.exports = function createECDH(curve) { - return new ECDH(curve); -}; - -var aliases = { - secp256k1: { - name: 'secp256k1', - byteLength: 32 - }, - secp224r1: { - name: 'p224', - byteLength: 28 - }, - prime256v1: { - name: 'p256', - byteLength: 32 - }, - prime192v1: { - name: 'p192', - byteLength: 24 - }, - ed25519: { - name: 'ed25519', - byteLength: 32 - }, - secp384r1: { - name: 'p384', - byteLength: 48 - }, - secp521r1: { - name: 'p521', - byteLength: 66 - } -}; -aliases.p224 = aliases.secp224r1; -aliases.p256 = aliases.secp256r1 = aliases.prime256v1; -aliases.p192 = aliases.secp192r1 = aliases.prime192v1; -aliases.p384 = aliases.secp384r1; -aliases.p521 = aliases.secp521r1; - -function ECDH(curve) { - this.curveType = aliases[curve]; - - if (!this.curveType) { - this.curveType = { - name: curve - }; - } - - this.curve = new elliptic.ec(this.curveType.name); // eslint-disable-line new-cap - - this.keys = void 0; -} - -ECDH.prototype.generateKeys = function (enc, format) { - this.keys = this.curve.genKeyPair(); - return this.getPublicKey(enc, format); -}; - -ECDH.prototype.computeSecret = function (other, inenc, enc) { - inenc = inenc || 'utf8'; - - if (!Buffer.isBuffer(other)) { - other = new Buffer(other, inenc); - } - - var otherPub = this.curve.keyFromPublic(other).getPublic(); - var out = otherPub.mul(this.keys.getPrivate()).getX(); - return formatReturnValue(out, enc, this.curveType.byteLength); -}; - -ECDH.prototype.getPublicKey = function (enc, format) { - var key = this.keys.getPublic(format === 'compressed', true); - - if (format === 'hybrid') { - if (key[key.length - 1] % 2) { - key[0] = 7; - } else { - key[0] = 6; - } - } - - return formatReturnValue(key, enc); -}; - -ECDH.prototype.getPrivateKey = function (enc) { - return formatReturnValue(this.keys.getPrivate(), enc); -}; - -ECDH.prototype.setPublicKey = function (pub, enc) { - enc = enc || 'utf8'; - - if (!Buffer.isBuffer(pub)) { - pub = new Buffer(pub, enc); - } - - this.keys._importPublic(pub); - - return this; -}; - -ECDH.prototype.setPrivateKey = function (priv, enc) { - enc = enc || 'utf8'; - - if (!Buffer.isBuffer(priv)) { - priv = new Buffer(priv, enc); - } - - var _priv = new BN(priv); - - _priv = _priv.toString(16); - this.keys = this.curve.genKeyPair(); - - this.keys._importPrivate(_priv); - - return this; -}; - -function formatReturnValue(bn, enc, len) { - if (!Array.isArray(bn)) { - bn = bn.toArray(); - } - - var buf = new Buffer(bn); - - if (len && buf.length < len) { - var zeros = new Buffer(len - buf.length); - zeros.fill(0); - buf = Buffer.concat([zeros, buf]); - } - - if (!enc) { - return buf; - } else { - return buf.toString(enc); - } -} - -/***/ }), - -/***/ 8339: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var inherits = __webpack_require__(376); - -var MD5 = __webpack_require__(722); - -var RIPEMD160 = __webpack_require__(8100); - -var sha = __webpack_require__(1806); - -var Base = __webpack_require__(8842); - -function Hash(hash) { - Base.call(this, 'digest'); - this._hash = hash; -} - -inherits(Hash, Base); - -Hash.prototype._update = function (data) { - this._hash.update(data); -}; - -Hash.prototype._final = function () { - return this._hash.digest(); -}; - -module.exports = function createHash(alg) { - alg = alg.toLowerCase(); - if (alg === 'md5') return new MD5(); - if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160(); - return new Hash(sha(alg)); -}; - -/***/ }), - -/***/ 3277: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var MD5 = __webpack_require__(722); - -module.exports = function (buffer) { - return new MD5().update(buffer).digest(); -}; - -/***/ }), - -/***/ 8736: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var inherits = __webpack_require__(376); - -var Legacy = __webpack_require__(2912); - -var Base = __webpack_require__(8842); - -var Buffer = (__webpack_require__(9047).Buffer); - -var md5 = __webpack_require__(3277); - -var RIPEMD160 = __webpack_require__(8100); - -var sha = __webpack_require__(1806); - -var ZEROS = Buffer.alloc(128); - -function Hmac(alg, key) { - Base.call(this, 'digest'); - - if (typeof key === 'string') { - key = Buffer.from(key); - } - - var blocksize = alg === 'sha512' || alg === 'sha384' ? 128 : 64; - this._alg = alg; - this._key = key; - - if (key.length > blocksize) { - var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg); - key = hash.update(key).digest(); - } else if (key.length < blocksize) { - key = Buffer.concat([key, ZEROS], blocksize); - } - - var ipad = this._ipad = Buffer.allocUnsafe(blocksize); - var opad = this._opad = Buffer.allocUnsafe(blocksize); - - for (var i = 0; i < blocksize; i++) { - ipad[i] = key[i] ^ 0x36; - opad[i] = key[i] ^ 0x5C; - } - - this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg); - - this._hash.update(ipad); -} - -inherits(Hmac, Base); - -Hmac.prototype._update = function (data) { - this._hash.update(data); -}; - -Hmac.prototype._final = function () { - var h = this._hash.digest(); - - var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg); - return hash.update(this._opad).update(h).digest(); -}; - -module.exports = function createHmac(alg, key) { - alg = alg.toLowerCase(); - - if (alg === 'rmd160' || alg === 'ripemd160') { - return new Hmac('rmd160', key); - } - - if (alg === 'md5') { - return new Legacy(md5, key); - } - - return new Hmac(alg, key); -}; - -/***/ }), - -/***/ 2912: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var inherits = __webpack_require__(376); - -var Buffer = (__webpack_require__(9047).Buffer); - -var Base = __webpack_require__(8842); - -var ZEROS = Buffer.alloc(128); -var blocksize = 64; - -function Hmac(alg, key) { - Base.call(this, 'digest'); - - if (typeof key === 'string') { - key = Buffer.from(key); - } - - this._alg = alg; - this._key = key; - - if (key.length > blocksize) { - key = alg(key); - } else if (key.length < blocksize) { - key = Buffer.concat([key, ZEROS], blocksize); - } - - var ipad = this._ipad = Buffer.allocUnsafe(blocksize); - var opad = this._opad = Buffer.allocUnsafe(blocksize); - - for (var i = 0; i < blocksize; i++) { - ipad[i] = key[i] ^ 0x36; - opad[i] = key[i] ^ 0x5C; - } - - this._hash = [ipad]; -} - -inherits(Hmac, Base); - -Hmac.prototype._update = function (data) { - this._hash.push(data); -}; - -Hmac.prototype._final = function () { - var h = this._alg(Buffer.concat(this._hash)); - - return this._alg(Buffer.concat([this._opad, h])); -}; - -module.exports = Hmac; - -/***/ }), - -/***/ 462: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; -var __webpack_unused_export__; - - -exports.O6 = __webpack_unused_export__ = __webpack_unused_export__ = /* unused reexport */ __webpack_require__(5760); -__webpack_unused_export__ = /* unused reexport */ __webpack_require__(8339); -__webpack_unused_export__ = /* unused reexport */ __webpack_require__(8736); - -var algos = __webpack_require__(3363); - -var algoKeys = Object.keys(algos); -var hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys); - -__webpack_unused_export__ = function () { - return hashes; -}; - -var p = __webpack_require__(9379); - -__webpack_unused_export__ = p.pbkdf2; -__webpack_unused_export__ = p.pbkdf2Sync; - -var aes = __webpack_require__(5972); - -__webpack_unused_export__ = aes.Cipher; -__webpack_unused_export__ = aes.createCipher; -__webpack_unused_export__ = aes.Cipheriv; -__webpack_unused_export__ = aes.createCipheriv; -__webpack_unused_export__ = aes.Decipher; -__webpack_unused_export__ = aes.createDecipher; -__webpack_unused_export__ = aes.Decipheriv; -__webpack_unused_export__ = aes.createDecipheriv; -__webpack_unused_export__ = aes.getCiphers; -__webpack_unused_export__ = aes.listCiphers; - -var dh = __webpack_require__(1822); - -__webpack_unused_export__ = dh.DiffieHellmanGroup; -__webpack_unused_export__ = dh.createDiffieHellmanGroup; -__webpack_unused_export__ = dh.getDiffieHellman; -__webpack_unused_export__ = dh.createDiffieHellman; -__webpack_unused_export__ = dh.DiffieHellman; - -var sign = __webpack_require__(1022); - -__webpack_unused_export__ = sign.createSign; -__webpack_unused_export__ = sign.Sign; -__webpack_unused_export__ = sign.createVerify; -__webpack_unused_export__ = sign.Verify; -/* unused reexport */ __webpack_require__(4637); - -var publicEncrypt = __webpack_require__(2368); - -__webpack_unused_export__ = publicEncrypt.publicEncrypt; -__webpack_unused_export__ = publicEncrypt.privateEncrypt; -__webpack_unused_export__ = publicEncrypt.publicDecrypt; -__webpack_unused_export__ = publicEncrypt.privateDecrypt; // the least I can do is make error messages for the rest of the node.js/crypto api. -// ;[ -// 'createCredentials' -// ].forEach(function (name) { -// exports[name] = function () { -// throw new Error([ -// 'sorry, ' + name + ' is not implemented yet', -// 'we accept pull requests', -// 'https://github.com/crypto-browserify/crypto-browserify' -// ].join('\n')) -// } -// }) - -var rf = __webpack_require__(9301); - -__webpack_unused_export__ = rf.randomFill; -__webpack_unused_export__ = rf.randomFillSync; - -__webpack_unused_export__ = function () { - throw new Error(['sorry, createCredentials is not implemented yet', 'we accept pull requests', 'https://github.com/crypto-browserify/crypto-browserify'].join('\n')); -}; - -__webpack_unused_export__ = { - 'DH_CHECK_P_NOT_SAFE_PRIME': 2, - 'DH_CHECK_P_NOT_PRIME': 1, - 'DH_UNABLE_TO_CHECK_GENERATOR': 4, - 'DH_NOT_SUITABLE_GENERATOR': 8, - 'NPN_ENABLED': 1, - 'ALPN_ENABLED': 1, - 'RSA_PKCS1_PADDING': 1, - 'RSA_SSLV23_PADDING': 2, - 'RSA_NO_PADDING': 3, - 'RSA_PKCS1_OAEP_PADDING': 4, - 'RSA_X931_PADDING': 5, - 'RSA_PKCS1_PSS_PADDING': 6, - 'POINT_CONVERSION_COMPRESSED': 2, - 'POINT_CONVERSION_UNCOMPRESSED': 4, - 'POINT_CONVERSION_HYBRID': 6 -}; - -/***/ }), - -/***/ 5509: -/***/ ((module) => { - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -/** - * Helpers. - */ -var s = 1000; -var m = s * 60; -var h = m * 60; -var d = h * 24; -var w = d * 7; -var y = d * 365.25; -/** - * Parse or format the given `val`. - * - * Options: - * - * - `long` verbose formatting [false] - * - * @param {String|Number} val - * @param {Object} [options] - * @throws {Error} throw an error if val is not a non-empty string or a number - * @return {String|Number} - * @api public - */ - -module.exports = function (val, options) { - options = options || {}; - - var type = _typeof(val); - - if (type === 'string' && val.length > 0) { - return parse(val); - } else if (type === 'number' && isFinite(val)) { - return options["long"] ? fmtLong(val) : fmtShort(val); - } - - throw new Error('val is not a non-empty string or a valid number. val=' + JSON.stringify(val)); -}; -/** - * Parse the given `str` and return milliseconds. - * - * @param {String} str - * @return {Number} - * @api private - */ - - -function parse(str) { - str = String(str); - - if (str.length > 100) { - return; - } - - var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str); - - if (!match) { - return; - } - - var n = parseFloat(match[1]); - var type = (match[2] || 'ms').toLowerCase(); - - switch (type) { - case 'years': - case 'year': - case 'yrs': - case 'yr': - case 'y': - return n * y; - - case 'weeks': - case 'week': - case 'w': - return n * w; - - case 'days': - case 'day': - case 'd': - return n * d; - - case 'hours': - case 'hour': - case 'hrs': - case 'hr': - case 'h': - return n * h; - - case 'minutes': - case 'minute': - case 'mins': - case 'min': - case 'm': - return n * m; - - case 'seconds': - case 'second': - case 'secs': - case 'sec': - case 's': - return n * s; - - case 'milliseconds': - case 'millisecond': - case 'msecs': - case 'msec': - case 'ms': - return n; - - default: - return undefined; - } -} -/** - * Short format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - - -function fmtShort(ms) { - var msAbs = Math.abs(ms); - - if (msAbs >= d) { - return Math.round(ms / d) + 'd'; - } - - if (msAbs >= h) { - return Math.round(ms / h) + 'h'; - } - - if (msAbs >= m) { - return Math.round(ms / m) + 'm'; - } - - if (msAbs >= s) { - return Math.round(ms / s) + 's'; - } - - return ms + 'ms'; -} -/** - * Long format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - - -function fmtLong(ms) { - var msAbs = Math.abs(ms); - - if (msAbs >= d) { - return plural(ms, msAbs, d, 'day'); - } - - if (msAbs >= h) { - return plural(ms, msAbs, h, 'hour'); - } - - if (msAbs >= m) { - return plural(ms, msAbs, m, 'minute'); - } - - if (msAbs >= s) { - return plural(ms, msAbs, s, 'second'); - } - - return ms + ' ms'; -} -/** - * Pluralization helper. - */ - - -function plural(ms, msAbs, n, name) { - var isPlural = msAbs >= n * 1.5; - return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); -} - -/***/ }), - -/***/ 8801: -/***/ ((module, exports, __webpack_require__) => { - -/* eslint-env browser */ - -/** - * This is the web browser implementation of `debug()`. - */ -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; -exports.storage = localstorage(); - -exports.destroy = function () { - var warned = false; - return function () { - if (!warned) { - warned = true; - console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); - } - }; -}(); -/** - * Colors. - */ - - -exports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33']; -/** - * Currently only WebKit-based Web Inspectors, Firefox >= v31, - * and the Firebug extension (any Firefox version) are known - * to support "%c" CSS customizations. - * - * TODO: add a `localStorage` variable to explicitly enable/disable colors - */ -// eslint-disable-next-line complexity - -function useColors() { - // NB: In an Electron preload script, document will be defined but not fully - // initialized. Since we know we're in Chrome, we'll just detect this case - // explicitly - if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { - return true; - } // Internet Explorer and Edge do not support colors. - - - if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { - return false; - } // Is webkit? http://stackoverflow.com/a/16459606/376773 - // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 - - - return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773 - typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31? - // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages - typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker - typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); -} -/** - * Colorize log arguments if enabled. - * - * @api public - */ - - -function formatArgs(args) { - args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff); - - if (!this.useColors) { - return; - } - - var c = 'color: ' + this.color; - args.splice(1, 0, c, 'color: inherit'); // The final "%c" is somewhat tricky, because there could be other - // arguments passed either before or after the %c, so we need to - // figure out the correct index to insert the CSS into - - var index = 0; - var lastC = 0; - args[0].replace(/%[a-zA-Z%]/g, function (match) { - if (match === '%%') { - return; - } - - index++; - - if (match === '%c') { - // We only are interested in the *last* %c - // (the user may have provided their own) - lastC = index; - } - }); - args.splice(lastC, 0, c); -} -/** - * Invokes `console.debug()` when available. - * No-op when `console.debug` is not a "function". - * If `console.debug` is not available, falls back - * to `console.log`. - * - * @api public - */ - - -exports.log = console.debug || console.log || function () {}; -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ - - -function save(namespaces) { - try { - if (namespaces) { - exports.storage.setItem('debug', namespaces); - } else { - exports.storage.removeItem('debug'); - } - } catch (error) {// Swallow - // XXX (@Qix-) should we be logging these? - } -} -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ - - -function load() { - var r; - - try { - r = exports.storage.getItem('debug'); - } catch (error) {// Swallow - // XXX (@Qix-) should we be logging these? - } // If debug isn't set in LS, and we're in Electron, try to load $DEBUG - - - if (!r && typeof ({env:{}}) !== 'undefined' && 'env' in ({env:{}})) { - r = ({env:{}}).env.DEBUG; - } - - return r; -} -/** - * Localstorage attempts to return the localstorage. - * - * This is necessary because safari throws - * when a user disables cookies/localstorage - * and you attempt to access it. - * - * @return {LocalStorage} - * @api private - */ - - -function localstorage() { - try { - // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context - // The Browser also has localStorage in the global context. - return localStorage; - } catch (error) {// Swallow - // XXX (@Qix-) should we be logging these? - } -} - -module.exports = __webpack_require__(5331)(exports); -var formatters = module.exports.formatters; -/** - * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. - */ - -formatters.j = function (v) { - try { - return JSON.stringify(v); - } catch (error) { - return '[UnexpectedJSONParseError]: ' + error.message; - } -}; - -/***/ }), - -/***/ 5331: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } - -function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } - -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } - -function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } - -function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } - -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - -/** - * This is the common logic for both the Node.js and web browser - * implementations of `debug()`. - */ -function setup(env) { - createDebug.debug = createDebug; - createDebug["default"] = createDebug; - createDebug.coerce = coerce; - createDebug.disable = disable; - createDebug.enable = enable; - createDebug.enabled = enabled; - createDebug.humanize = __webpack_require__(5509); - createDebug.destroy = destroy; - Object.keys(env).forEach(function (key) { - createDebug[key] = env[key]; - }); - /** - * The currently active debug mode names, and names to skip. - */ - - createDebug.names = []; - createDebug.skips = []; - /** - * Map of special "%n" handling functions, for the debug "format" argument. - * - * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". - */ - - createDebug.formatters = {}; - /** - * Selects a color for a debug namespace - * @param {String} namespace The namespace string for the debug instance to be colored - * @return {Number|String} An ANSI color code for the given namespace - * @api private - */ - - function selectColor(namespace) { - var hash = 0; - - for (var i = 0; i < namespace.length; i++) { - hash = (hash << 5) - hash + namespace.charCodeAt(i); - hash |= 0; // Convert to 32bit integer - } - - return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; - } - - createDebug.selectColor = selectColor; - /** - * Create a debugger with the given `namespace`. - * - * @param {String} namespace - * @return {Function} - * @api public - */ - - function createDebug(namespace) { - var prevTime; - var enableOverride = null; - var namespacesCache; - var enabledCache; - - function debug() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - // Disabled? - if (!debug.enabled) { - return; - } - - var self = debug; // Set `diff` timestamp - - var curr = Number(new Date()); - var ms = curr - (prevTime || curr); - self.diff = ms; - self.prev = prevTime; - self.curr = curr; - prevTime = curr; - args[0] = createDebug.coerce(args[0]); - - if (typeof args[0] !== 'string') { - // Anything else let's inspect with %O - args.unshift('%O'); - } // Apply any `formatters` transformations - - - var index = 0; - args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) { - // If we encounter an escaped % then don't increase the array index - if (match === '%%') { - return '%'; - } - - index++; - var formatter = createDebug.formatters[format]; - - if (typeof formatter === 'function') { - var val = args[index]; - match = formatter.call(self, val); // Now we need to remove `args[index]` since it's inlined in the `format` - - args.splice(index, 1); - index--; - } - - return match; - }); // Apply env-specific formatting (colors, etc.) - - createDebug.formatArgs.call(self, args); - var logFn = self.log || createDebug.log; - logFn.apply(self, args); - } - - debug.namespace = namespace; - debug.useColors = createDebug.useColors(); - debug.color = createDebug.selectColor(namespace); - debug.extend = extend; - debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release. - - Object.defineProperty(debug, 'enabled', { - enumerable: true, - configurable: false, - get: function get() { - if (enableOverride !== null) { - return enableOverride; - } - - if (namespacesCache !== createDebug.namespaces) { - namespacesCache = createDebug.namespaces; - enabledCache = createDebug.enabled(namespace); - } - - return enabledCache; - }, - set: function set(v) { - enableOverride = v; - } - }); // Env-specific initialization logic for debug instances - - if (typeof createDebug.init === 'function') { - createDebug.init(debug); - } - - return debug; - } - - function extend(namespace, delimiter) { - var newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); - newDebug.log = this.log; - return newDebug; - } - /** - * Enables a debug mode by namespaces. This can include modes - * separated by a colon and wildcards. - * - * @param {String} namespaces - * @api public - */ - - - function enable(namespaces) { - createDebug.save(namespaces); - createDebug.namespaces = namespaces; - createDebug.names = []; - createDebug.skips = []; - var i; - var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); - var len = split.length; - - for (i = 0; i < len; i++) { - if (!split[i]) { - // ignore empty strings - continue; - } - - namespaces = split[i].replace(/\*/g, '.*?'); - - if (namespaces[0] === '-') { - createDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$')); - } else { - createDebug.names.push(new RegExp('^' + namespaces + '$')); - } - } - } - /** - * Disable debug output. - * - * @return {String} namespaces - * @api public - */ - - - function disable() { - var namespaces = [].concat(_toConsumableArray(createDebug.names.map(toNamespace)), _toConsumableArray(createDebug.skips.map(toNamespace).map(function (namespace) { - return '-' + namespace; - }))).join(','); - createDebug.enable(''); - return namespaces; - } - /** - * Returns true if the given mode name is enabled, false otherwise. - * - * @param {String} name - * @return {Boolean} - * @api public - */ - - - function enabled(name) { - if (name[name.length - 1] === '*') { - return true; - } - - var i; - var len; - - for (i = 0, len = createDebug.skips.length; i < len; i++) { - if (createDebug.skips[i].test(name)) { - return false; - } - } - - for (i = 0, len = createDebug.names.length; i < len; i++) { - if (createDebug.names[i].test(name)) { - return true; - } - } - - return false; - } - /** - * Convert regexp to namespace - * - * @param {RegExp} regxep - * @return {String} namespace - * @api private - */ - - - function toNamespace(regexp) { - return regexp.toString().substring(2, regexp.toString().length - 2).replace(/\.\*\?$/, '*'); - } - /** - * Coerce `val`. - * - * @param {Mixed} val - * @return {Mixed} - * @api private - */ - - - function coerce(val) { - if (val instanceof Error) { - return val.stack || val.message; - } - - return val; - } - /** - * XXX DO NOT USE. This is a temporary stub function. - * XXX It WILL be removed in the next major release. - */ - - - function destroy() { - console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); - } - - createDebug.enable(createDebug.load()); - return createDebug; -} - -module.exports = setup; - -/***/ }), - -/***/ 7921: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var keys = __webpack_require__(3818); - -var hasSymbols = typeof Symbol === 'function' && _typeof(Symbol('foo')) === 'symbol'; -var toStr = Object.prototype.toString; -var concat = Array.prototype.concat; -var origDefineProperty = Object.defineProperty; - -var isFunction = function isFunction(fn) { - return typeof fn === 'function' && toStr.call(fn) === '[object Function]'; -}; - -var hasPropertyDescriptors = __webpack_require__(2579)(); - -var supportsDescriptors = origDefineProperty && hasPropertyDescriptors; - -var defineProperty = function defineProperty(object, name, value, predicate) { - if (name in object && (!isFunction(predicate) || !predicate())) { - return; - } - - if (supportsDescriptors) { - origDefineProperty(object, name, { - configurable: true, - enumerable: false, - value: value, - writable: true - }); - } else { - object[name] = value; // eslint-disable-line no-param-reassign - } -}; - -var defineProperties = function defineProperties(object, map) { - var predicates = arguments.length > 2 ? arguments[2] : {}; - var props = keys(map); - - if (hasSymbols) { - props = concat.call(props, Object.getOwnPropertySymbols(map)); - } - - for (var i = 0; i < props.length; i += 1) { - defineProperty(object, props[i], map[props[i]], predicates[props[i]]); - } -}; - -defineProperties.supportsDescriptors = !!supportsDescriptors; -module.exports = defineProperties; - -/***/ }), - -/***/ 167: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - - -exports.utils = __webpack_require__(5061); -exports.Cipher = __webpack_require__(7499); -exports.DES = __webpack_require__(9484); -exports.CBC = __webpack_require__(8254); -exports.EDE = __webpack_require__(5573); - -/***/ }), - -/***/ 8254: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - - -var assert = __webpack_require__(1130); - -var inherits = __webpack_require__(376); - -var proto = {}; - -function CBCState(iv) { - assert.equal(iv.length, 8, 'Invalid IV length'); - this.iv = new Array(8); - - for (var i = 0; i < this.iv.length; i++) { - this.iv[i] = iv[i]; - } -} - -function instantiate(Base) { - function CBC(options) { - Base.call(this, options); - - this._cbcInit(); - } - - inherits(CBC, Base); - var keys = Object.keys(proto); - - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - CBC.prototype[key] = proto[key]; - } - - CBC.create = function create(options) { - return new CBC(options); - }; - - return CBC; -} - -exports.instantiate = instantiate; - -proto._cbcInit = function _cbcInit() { - var state = new CBCState(this.options.iv); - this._cbcState = state; -}; - -proto._update = function _update(inp, inOff, out, outOff) { - var state = this._cbcState; - var superProto = this.constructor.super_.prototype; - var iv = state.iv; - - if (this.type === 'encrypt') { - for (var i = 0; i < this.blockSize; i++) { - iv[i] ^= inp[inOff + i]; - } - - superProto._update.call(this, iv, 0, out, outOff); - - for (var i = 0; i < this.blockSize; i++) { - iv[i] = out[outOff + i]; - } - } else { - superProto._update.call(this, inp, inOff, out, outOff); - - for (var i = 0; i < this.blockSize; i++) { - out[outOff + i] ^= iv[i]; - } - - for (var i = 0; i < this.blockSize; i++) { - iv[i] = inp[inOff + i]; - } - } -}; - -/***/ }), - -/***/ 7499: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var assert = __webpack_require__(1130); - -function Cipher(options) { - this.options = options; - this.type = this.options.type; - this.blockSize = 8; - - this._init(); - - this.buffer = new Array(this.blockSize); - this.bufferOff = 0; -} - -module.exports = Cipher; - -Cipher.prototype._init = function _init() {// Might be overrided -}; - -Cipher.prototype.update = function update(data) { - if (data.length === 0) return []; - if (this.type === 'decrypt') return this._updateDecrypt(data);else return this._updateEncrypt(data); -}; - -Cipher.prototype._buffer = function _buffer(data, off) { - // Append data to buffer - var min = Math.min(this.buffer.length - this.bufferOff, data.length - off); - - for (var i = 0; i < min; i++) { - this.buffer[this.bufferOff + i] = data[off + i]; - } - - this.bufferOff += min; // Shift next - - return min; -}; - -Cipher.prototype._flushBuffer = function _flushBuffer(out, off) { - this._update(this.buffer, 0, out, off); - - this.bufferOff = 0; - return this.blockSize; -}; - -Cipher.prototype._updateEncrypt = function _updateEncrypt(data) { - var inputOff = 0; - var outputOff = 0; - var count = (this.bufferOff + data.length) / this.blockSize | 0; - var out = new Array(count * this.blockSize); - - if (this.bufferOff !== 0) { - inputOff += this._buffer(data, inputOff); - if (this.bufferOff === this.buffer.length) outputOff += this._flushBuffer(out, outputOff); - } // Write blocks - - - var max = data.length - (data.length - inputOff) % this.blockSize; - - for (; inputOff < max; inputOff += this.blockSize) { - this._update(data, inputOff, out, outputOff); - - outputOff += this.blockSize; - } // Queue rest - - - for (; inputOff < data.length; inputOff++, this.bufferOff++) { - this.buffer[this.bufferOff] = data[inputOff]; - } - - return out; -}; - -Cipher.prototype._updateDecrypt = function _updateDecrypt(data) { - var inputOff = 0; - var outputOff = 0; - var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1; - var out = new Array(count * this.blockSize); // TODO(indutny): optimize it, this is far from optimal - - for (; count > 0; count--) { - inputOff += this._buffer(data, inputOff); - outputOff += this._flushBuffer(out, outputOff); - } // Buffer rest of the input - - - inputOff += this._buffer(data, inputOff); - return out; -}; - -Cipher.prototype["final"] = function _final(buffer) { - var first; - if (buffer) first = this.update(buffer); - var last; - if (this.type === 'encrypt') last = this._finalEncrypt();else last = this._finalDecrypt(); - if (first) return first.concat(last);else return last; -}; - -Cipher.prototype._pad = function _pad(buffer, off) { - if (off === 0) return false; - - while (off < buffer.length) { - buffer[off++] = 0; - } - - return true; -}; - -Cipher.prototype._finalEncrypt = function _finalEncrypt() { - if (!this._pad(this.buffer, this.bufferOff)) return []; - var out = new Array(this.blockSize); - - this._update(this.buffer, 0, out, 0); - - return out; -}; - -Cipher.prototype._unpad = function _unpad(buffer) { - return buffer; -}; - -Cipher.prototype._finalDecrypt = function _finalDecrypt() { - assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt'); - var out = new Array(this.blockSize); - - this._flushBuffer(out, 0); - - return this._unpad(out); -}; - -/***/ }), - -/***/ 9484: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var assert = __webpack_require__(1130); - -var inherits = __webpack_require__(376); - -var utils = __webpack_require__(5061); - -var Cipher = __webpack_require__(7499); - -function DESState() { - this.tmp = new Array(2); - this.keys = null; -} - -function DES(options) { - Cipher.call(this, options); - var state = new DESState(); - this._desState = state; - this.deriveKeys(state, options.key); -} - -inherits(DES, Cipher); -module.exports = DES; - -DES.create = function create(options) { - return new DES(options); -}; - -var shiftTable = [1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1]; - -DES.prototype.deriveKeys = function deriveKeys(state, key) { - state.keys = new Array(16 * 2); - assert.equal(key.length, this.blockSize, 'Invalid key length'); - var kL = utils.readUInt32BE(key, 0); - var kR = utils.readUInt32BE(key, 4); - utils.pc1(kL, kR, state.tmp, 0); - kL = state.tmp[0]; - kR = state.tmp[1]; - - for (var i = 0; i < state.keys.length; i += 2) { - var shift = shiftTable[i >>> 1]; - kL = utils.r28shl(kL, shift); - kR = utils.r28shl(kR, shift); - utils.pc2(kL, kR, state.keys, i); - } -}; - -DES.prototype._update = function _update(inp, inOff, out, outOff) { - var state = this._desState; - var l = utils.readUInt32BE(inp, inOff); - var r = utils.readUInt32BE(inp, inOff + 4); // Initial Permutation - - utils.ip(l, r, state.tmp, 0); - l = state.tmp[0]; - r = state.tmp[1]; - if (this.type === 'encrypt') this._encrypt(state, l, r, state.tmp, 0);else this._decrypt(state, l, r, state.tmp, 0); - l = state.tmp[0]; - r = state.tmp[1]; - utils.writeUInt32BE(out, l, outOff); - utils.writeUInt32BE(out, r, outOff + 4); -}; - -DES.prototype._pad = function _pad(buffer, off) { - var value = buffer.length - off; - - for (var i = off; i < buffer.length; i++) { - buffer[i] = value; - } - - return true; -}; - -DES.prototype._unpad = function _unpad(buffer) { - var pad = buffer[buffer.length - 1]; - - for (var i = buffer.length - pad; i < buffer.length; i++) { - assert.equal(buffer[i], pad); - } - - return buffer.slice(0, buffer.length - pad); -}; - -DES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) { - var l = lStart; - var r = rStart; // Apply f() x16 times - - for (var i = 0; i < state.keys.length; i += 2) { - var keyL = state.keys[i]; - var keyR = state.keys[i + 1]; // f(r, k) - - utils.expand(r, state.tmp, 0); - keyL ^= state.tmp[0]; - keyR ^= state.tmp[1]; - var s = utils.substitute(keyL, keyR); - var f = utils.permute(s); - var t = r; - r = (l ^ f) >>> 0; - l = t; - } // Reverse Initial Permutation - - - utils.rip(r, l, out, off); -}; - -DES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) { - var l = rStart; - var r = lStart; // Apply f() x16 times - - for (var i = state.keys.length - 2; i >= 0; i -= 2) { - var keyL = state.keys[i]; - var keyR = state.keys[i + 1]; // f(r, k) - - utils.expand(l, state.tmp, 0); - keyL ^= state.tmp[0]; - keyR ^= state.tmp[1]; - var s = utils.substitute(keyL, keyR); - var f = utils.permute(s); - var t = l; - l = (r ^ f) >>> 0; - r = t; - } // Reverse Initial Permutation - - - utils.rip(l, r, out, off); -}; - -/***/ }), - -/***/ 5573: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var assert = __webpack_require__(1130); - -var inherits = __webpack_require__(376); - -var Cipher = __webpack_require__(7499); - -var DES = __webpack_require__(9484); - -function EDEState(type, key) { - assert.equal(key.length, 24, 'Invalid key length'); - var k1 = key.slice(0, 8); - var k2 = key.slice(8, 16); - var k3 = key.slice(16, 24); - - if (type === 'encrypt') { - this.ciphers = [DES.create({ - type: 'encrypt', - key: k1 - }), DES.create({ - type: 'decrypt', - key: k2 - }), DES.create({ - type: 'encrypt', - key: k3 - })]; - } else { - this.ciphers = [DES.create({ - type: 'decrypt', - key: k3 - }), DES.create({ - type: 'encrypt', - key: k2 - }), DES.create({ - type: 'decrypt', - key: k1 - })]; - } -} - -function EDE(options) { - Cipher.call(this, options); - var state = new EDEState(this.type, this.options.key); - this._edeState = state; -} - -inherits(EDE, Cipher); -module.exports = EDE; - -EDE.create = function create(options) { - return new EDE(options); -}; - -EDE.prototype._update = function _update(inp, inOff, out, outOff) { - var state = this._edeState; - - state.ciphers[0]._update(inp, inOff, out, outOff); - - state.ciphers[1]._update(out, outOff, out, outOff); - - state.ciphers[2]._update(out, outOff, out, outOff); -}; - -EDE.prototype._pad = DES.prototype._pad; -EDE.prototype._unpad = DES.prototype._unpad; - -/***/ }), - -/***/ 5061: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -exports.readUInt32BE = function readUInt32BE(bytes, off) { - var res = bytes[0 + off] << 24 | bytes[1 + off] << 16 | bytes[2 + off] << 8 | bytes[3 + off]; - return res >>> 0; -}; - -exports.writeUInt32BE = function writeUInt32BE(bytes, value, off) { - bytes[0 + off] = value >>> 24; - bytes[1 + off] = value >>> 16 & 0xff; - bytes[2 + off] = value >>> 8 & 0xff; - bytes[3 + off] = value & 0xff; -}; - -exports.ip = function ip(inL, inR, out, off) { - var outL = 0; - var outR = 0; - - for (var i = 6; i >= 0; i -= 2) { - for (var j = 0; j <= 24; j += 8) { - outL <<= 1; - outL |= inR >>> j + i & 1; - } - - for (var j = 0; j <= 24; j += 8) { - outL <<= 1; - outL |= inL >>> j + i & 1; - } - } - - for (var i = 6; i >= 0; i -= 2) { - for (var j = 1; j <= 25; j += 8) { - outR <<= 1; - outR |= inR >>> j + i & 1; - } - - for (var j = 1; j <= 25; j += 8) { - outR <<= 1; - outR |= inL >>> j + i & 1; - } - } - - out[off + 0] = outL >>> 0; - out[off + 1] = outR >>> 0; -}; - -exports.rip = function rip(inL, inR, out, off) { - var outL = 0; - var outR = 0; - - for (var i = 0; i < 4; i++) { - for (var j = 24; j >= 0; j -= 8) { - outL <<= 1; - outL |= inR >>> j + i & 1; - outL <<= 1; - outL |= inL >>> j + i & 1; - } - } - - for (var i = 4; i < 8; i++) { - for (var j = 24; j >= 0; j -= 8) { - outR <<= 1; - outR |= inR >>> j + i & 1; - outR <<= 1; - outR |= inL >>> j + i & 1; - } - } - - out[off + 0] = outL >>> 0; - out[off + 1] = outR >>> 0; -}; - -exports.pc1 = function pc1(inL, inR, out, off) { - var outL = 0; - var outR = 0; // 7, 15, 23, 31, 39, 47, 55, 63 - // 6, 14, 22, 30, 39, 47, 55, 63 - // 5, 13, 21, 29, 39, 47, 55, 63 - // 4, 12, 20, 28 - - for (var i = 7; i >= 5; i--) { - for (var j = 0; j <= 24; j += 8) { - outL <<= 1; - outL |= inR >> j + i & 1; - } - - for (var j = 0; j <= 24; j += 8) { - outL <<= 1; - outL |= inL >> j + i & 1; - } - } - - for (var j = 0; j <= 24; j += 8) { - outL <<= 1; - outL |= inR >> j + i & 1; - } // 1, 9, 17, 25, 33, 41, 49, 57 - // 2, 10, 18, 26, 34, 42, 50, 58 - // 3, 11, 19, 27, 35, 43, 51, 59 - // 36, 44, 52, 60 - - - for (var i = 1; i <= 3; i++) { - for (var j = 0; j <= 24; j += 8) { - outR <<= 1; - outR |= inR >> j + i & 1; - } - - for (var j = 0; j <= 24; j += 8) { - outR <<= 1; - outR |= inL >> j + i & 1; - } - } - - for (var j = 0; j <= 24; j += 8) { - outR <<= 1; - outR |= inL >> j + i & 1; - } - - out[off + 0] = outL >>> 0; - out[off + 1] = outR >>> 0; -}; - -exports.r28shl = function r28shl(num, shift) { - return num << shift & 0xfffffff | num >>> 28 - shift; -}; - -var pc2table = [// inL => outL -14, 11, 17, 4, 27, 23, 25, 0, 13, 22, 7, 18, 5, 9, 16, 24, 2, 20, 12, 21, 1, 8, 15, 26, // inR => outR -15, 4, 25, 19, 9, 1, 26, 16, 5, 11, 23, 8, 12, 7, 17, 0, 22, 3, 10, 14, 6, 20, 27, 24]; - -exports.pc2 = function pc2(inL, inR, out, off) { - var outL = 0; - var outR = 0; - var len = pc2table.length >>> 1; - - for (var i = 0; i < len; i++) { - outL <<= 1; - outL |= inL >>> pc2table[i] & 0x1; - } - - for (var i = len; i < pc2table.length; i++) { - outR <<= 1; - outR |= inR >>> pc2table[i] & 0x1; - } - - out[off + 0] = outL >>> 0; - out[off + 1] = outR >>> 0; -}; - -exports.expand = function expand(r, out, off) { - var outL = 0; - var outR = 0; - outL = (r & 1) << 5 | r >>> 27; - - for (var i = 23; i >= 15; i -= 4) { - outL <<= 6; - outL |= r >>> i & 0x3f; - } - - for (var i = 11; i >= 3; i -= 4) { - outR |= r >>> i & 0x3f; - outR <<= 6; - } - - outR |= (r & 0x1f) << 1 | r >>> 31; - out[off + 0] = outL >>> 0; - out[off + 1] = outR >>> 0; -}; - -var sTable = [14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1, 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8, 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7, 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13, 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14, 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5, 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2, 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9, 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10, 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1, 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7, 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12, 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3, 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9, 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8, 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14, 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1, 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6, 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13, 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3, 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5, 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8, 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10, 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13, 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10, 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6, 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7, 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12, 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4, 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2, 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13, 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11]; - -exports.substitute = function substitute(inL, inR) { - var out = 0; - - for (var i = 0; i < 4; i++) { - var b = inL >>> 18 - i * 6 & 0x3f; - var sb = sTable[i * 0x40 + b]; - out <<= 4; - out |= sb; - } - - for (var i = 0; i < 4; i++) { - var b = inR >>> 18 - i * 6 & 0x3f; - var sb = sTable[4 * 0x40 + i * 0x40 + b]; - out <<= 4; - out |= sb; - } - - return out >>> 0; -}; - -var permuteTable = [16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22, 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7]; - -exports.permute = function permute(num) { - var out = 0; - - for (var i = 0; i < permuteTable.length; i++) { - out <<= 1; - out |= num >>> permuteTable[i] & 0x1; - } - - return out >>> 0; -}; - -exports.padSplit = function padSplit(num, size, group) { - var str = num.toString(2); - - while (str.length < size) { - str = '0' + str; - } - - var out = []; - - for (var i = 0; i < size; i += group) { - out.push(str.slice(i, i + group)); - } - - return out.join(' '); -}; - -/***/ }), - -/***/ 1822: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -/* provided dependency */ var Buffer = __webpack_require__(365)["Buffer"]; -var generatePrime = __webpack_require__(2227); - -var primes = __webpack_require__(9799); - -var DH = __webpack_require__(6951); - -function getDiffieHellman(mod) { - var prime = new Buffer(primes[mod].prime, 'hex'); - var gen = new Buffer(primes[mod].gen, 'hex'); - return new DH(prime, gen); -} - -var ENCODINGS = { - 'binary': true, - 'hex': true, - 'base64': true -}; - -function createDiffieHellman(prime, enc, generator, genc) { - if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) { - return createDiffieHellman(prime, 'binary', enc, generator); - } - - enc = enc || 'binary'; - genc = genc || 'binary'; - generator = generator || new Buffer([2]); - - if (!Buffer.isBuffer(generator)) { - generator = new Buffer(generator, genc); - } - - if (typeof prime === 'number') { - return new DH(generatePrime(prime, generator), generator, true); - } - - if (!Buffer.isBuffer(prime)) { - prime = new Buffer(prime, enc); - } - - return new DH(prime, generator, true); -} - -exports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman; -exports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman; - -/***/ }), - -/***/ 6951: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/* provided dependency */ var Buffer = __webpack_require__(365)["Buffer"]; -var BN = __webpack_require__(6781); - -var MillerRabin = __webpack_require__(9318); - -var millerRabin = new MillerRabin(); -var TWENTYFOUR = new BN(24); -var ELEVEN = new BN(11); -var TEN = new BN(10); -var THREE = new BN(3); -var SEVEN = new BN(7); - -var primes = __webpack_require__(2227); - -var randomBytes = __webpack_require__(5760); - -module.exports = DH; - -function setPublicKey(pub, enc) { - enc = enc || 'utf8'; - - if (!Buffer.isBuffer(pub)) { - pub = new Buffer(pub, enc); - } - - this._pub = new BN(pub); - return this; -} - -function setPrivateKey(priv, enc) { - enc = enc || 'utf8'; - - if (!Buffer.isBuffer(priv)) { - priv = new Buffer(priv, enc); - } - - this._priv = new BN(priv); - return this; -} - -var primeCache = {}; - -function checkPrime(prime, generator) { - var gen = generator.toString('hex'); - var hex = [gen, prime.toString(16)].join('_'); - - if (hex in primeCache) { - return primeCache[hex]; - } - - var error = 0; - - if (prime.isEven() || !primes.simpleSieve || !primes.fermatTest(prime) || !millerRabin.test(prime)) { - //not a prime so +1 - error += 1; - - if (gen === '02' || gen === '05') { - // we'd be able to check the generator - // it would fail so +8 - error += 8; - } else { - //we wouldn't be able to test the generator - // so +4 - error += 4; - } - - primeCache[hex] = error; - return error; - } - - if (!millerRabin.test(prime.shrn(1))) { - //not a safe prime - error += 2; - } - - var rem; - - switch (gen) { - case '02': - if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) { - // unsuidable generator - error += 8; - } - - break; - - case '05': - rem = prime.mod(TEN); - - if (rem.cmp(THREE) && rem.cmp(SEVEN)) { - // prime mod 10 needs to equal 3 or 7 - error += 8; - } - - break; - - default: - error += 4; - } - - primeCache[hex] = error; - return error; -} - -function DH(prime, generator, malleable) { - this.setGenerator(generator); - this.__prime = new BN(prime); - this._prime = BN.mont(this.__prime); - this._primeLen = prime.length; - this._pub = undefined; - this._priv = undefined; - this._primeCode = undefined; - - if (malleable) { - this.setPublicKey = setPublicKey; - this.setPrivateKey = setPrivateKey; - } else { - this._primeCode = 8; - } -} - -Object.defineProperty(DH.prototype, 'verifyError', { - enumerable: true, - get: function get() { - if (typeof this._primeCode !== 'number') { - this._primeCode = checkPrime(this.__prime, this.__gen); - } - - return this._primeCode; - } -}); - -DH.prototype.generateKeys = function () { - if (!this._priv) { - this._priv = new BN(randomBytes(this._primeLen)); - } - - this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed(); - return this.getPublicKey(); -}; - -DH.prototype.computeSecret = function (other) { - other = new BN(other); - other = other.toRed(this._prime); - var secret = other.redPow(this._priv).fromRed(); - var out = new Buffer(secret.toArray()); - var prime = this.getPrime(); - - if (out.length < prime.length) { - var front = new Buffer(prime.length - out.length); - front.fill(0); - out = Buffer.concat([front, out]); - } - - return out; -}; - -DH.prototype.getPublicKey = function getPublicKey(enc) { - return formatReturnValue(this._pub, enc); -}; - -DH.prototype.getPrivateKey = function getPrivateKey(enc) { - return formatReturnValue(this._priv, enc); -}; - -DH.prototype.getPrime = function (enc) { - return formatReturnValue(this.__prime, enc); -}; - -DH.prototype.getGenerator = function (enc) { - return formatReturnValue(this._gen, enc); -}; - -DH.prototype.setGenerator = function (gen, enc) { - enc = enc || 'utf8'; - - if (!Buffer.isBuffer(gen)) { - gen = new Buffer(gen, enc); - } - - this.__gen = gen; - this._gen = new BN(gen); - return this; -}; - -function formatReturnValue(bn, enc) { - var buf = new Buffer(bn.toArray()); - - if (!enc) { - return buf; - } else { - return buf.toString(enc); - } -} - -/***/ }), - -/***/ 2227: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var randomBytes = __webpack_require__(5760); - -module.exports = findPrime; -findPrime.simpleSieve = simpleSieve; -findPrime.fermatTest = fermatTest; - -var BN = __webpack_require__(6781); - -var TWENTYFOUR = new BN(24); - -var MillerRabin = __webpack_require__(9318); - -var millerRabin = new MillerRabin(); -var ONE = new BN(1); -var TWO = new BN(2); -var FIVE = new BN(5); -var SIXTEEN = new BN(16); -var EIGHT = new BN(8); -var TEN = new BN(10); -var THREE = new BN(3); -var SEVEN = new BN(7); -var ELEVEN = new BN(11); -var FOUR = new BN(4); -var TWELVE = new BN(12); -var primes = null; - -function _getPrimes() { - if (primes !== null) return primes; - var limit = 0x100000; - var res = []; - res[0] = 2; - - for (var i = 1, k = 3; k < limit; k += 2) { - var sqrt = Math.ceil(Math.sqrt(k)); - - for (var j = 0; j < i && res[j] <= sqrt; j++) { - if (k % res[j] === 0) break; - } - - if (i !== j && res[j] <= sqrt) continue; - res[i++] = k; - } - - primes = res; - return res; -} - -function simpleSieve(p) { - var primes = _getPrimes(); - - for (var i = 0; i < primes.length; i++) { - if (p.modn(primes[i]) === 0) { - if (p.cmpn(primes[i]) === 0) { - return true; - } else { - return false; - } - } - } - - return true; -} - -function fermatTest(p) { - var red = BN.mont(p); - return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0; -} - -function findPrime(bits, gen) { - if (bits < 16) { - // this is what openssl does - if (gen === 2 || gen === 5) { - return new BN([0x8c, 0x7b]); - } else { - return new BN([0x8c, 0x27]); - } - } - - gen = new BN(gen); - var num, n2; - - while (true) { - num = new BN(randomBytes(Math.ceil(bits / 8))); - - while (num.bitLength() > bits) { - num.ishrn(1); - } - - if (num.isEven()) { - num.iadd(ONE); - } - - if (!num.testn(1)) { - num.iadd(TWO); - } - - if (!gen.cmp(TWO)) { - while (num.mod(TWENTYFOUR).cmp(ELEVEN)) { - num.iadd(FOUR); - } - } else if (!gen.cmp(FIVE)) { - while (num.mod(TEN).cmp(THREE)) { - num.iadd(FOUR); - } - } - - n2 = num.shrn(1); - - if (simpleSieve(n2) && simpleSieve(num) && fermatTest(n2) && fermatTest(num) && millerRabin.test(n2) && millerRabin.test(num)) { - return num; - } - } -} - -/***/ }), - -/***/ 8333: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - - -var elliptic = exports; -elliptic.version = (__webpack_require__(8597)/* .version */ .i8); -elliptic.utils = __webpack_require__(7891); -elliptic.rand = __webpack_require__(7179); -elliptic.curve = __webpack_require__(4720); -elliptic.curves = __webpack_require__(1478); // Protocols - -elliptic.ec = __webpack_require__(5806); -elliptic.eddsa = __webpack_require__(8318); - -/***/ }), - -/***/ 9952: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var BN = __webpack_require__(6781); - -var utils = __webpack_require__(7891); - -var getNAF = utils.getNAF; -var getJSF = utils.getJSF; -var assert = utils.assert; - -function BaseCurve(type, conf) { - this.type = type; - this.p = new BN(conf.p, 16); // Use Montgomery, when there is no fast reduction for the prime - - this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p); // Useful for many curves - - this.zero = new BN(0).toRed(this.red); - this.one = new BN(1).toRed(this.red); - this.two = new BN(2).toRed(this.red); // Curve configuration, optional - - this.n = conf.n && new BN(conf.n, 16); - this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed); // Temporary arrays - - this._wnafT1 = new Array(4); - this._wnafT2 = new Array(4); - this._wnafT3 = new Array(4); - this._wnafT4 = new Array(4); - this._bitLength = this.n ? this.n.bitLength() : 0; // Generalized Greg Maxwell's trick - - var adjustCount = this.n && this.p.div(this.n); - - if (!adjustCount || adjustCount.cmpn(100) > 0) { - this.redN = null; - } else { - this._maxwellTrick = true; - this.redN = this.n.toRed(this.red); - } -} - -module.exports = BaseCurve; - -BaseCurve.prototype.point = function point() { - throw new Error('Not implemented'); -}; - -BaseCurve.prototype.validate = function validate() { - throw new Error('Not implemented'); -}; - -BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) { - assert(p.precomputed); - - var doubles = p._getDoubles(); - - var naf = getNAF(k, 1, this._bitLength); - var I = (1 << doubles.step + 1) - (doubles.step % 2 === 0 ? 2 : 1); - I /= 3; // Translate into more windowed form - - var repr = []; - var j; - var nafW; - - for (j = 0; j < naf.length; j += doubles.step) { - nafW = 0; - - for (var l = j + doubles.step - 1; l >= j; l--) { - nafW = (nafW << 1) + naf[l]; - } - - repr.push(nafW); - } - - var a = this.jpoint(null, null, null); - var b = this.jpoint(null, null, null); - - for (var i = I; i > 0; i--) { - for (j = 0; j < repr.length; j++) { - nafW = repr[j]; - if (nafW === i) b = b.mixedAdd(doubles.points[j]);else if (nafW === -i) b = b.mixedAdd(doubles.points[j].neg()); - } - - a = a.add(b); - } - - return a.toP(); -}; - -BaseCurve.prototype._wnafMul = function _wnafMul(p, k) { - var w = 4; // Precompute window - - var nafPoints = p._getNAFPoints(w); - - w = nafPoints.wnd; - var wnd = nafPoints.points; // Get NAF form - - var naf = getNAF(k, w, this._bitLength); // Add `this`*(N+1) for every w-NAF index - - var acc = this.jpoint(null, null, null); - - for (var i = naf.length - 1; i >= 0; i--) { - // Count zeroes - for (var l = 0; i >= 0 && naf[i] === 0; i--) { - l++; - } - - if (i >= 0) l++; - acc = acc.dblp(l); - if (i < 0) break; - var z = naf[i]; - assert(z !== 0); - - if (p.type === 'affine') { - // J +- P - if (z > 0) acc = acc.mixedAdd(wnd[z - 1 >> 1]);else acc = acc.mixedAdd(wnd[-z - 1 >> 1].neg()); - } else { - // J +- J - if (z > 0) acc = acc.add(wnd[z - 1 >> 1]);else acc = acc.add(wnd[-z - 1 >> 1].neg()); - } - } - - return p.type === 'affine' ? acc.toP() : acc; -}; - -BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW, points, coeffs, len, jacobianResult) { - var wndWidth = this._wnafT1; - var wnd = this._wnafT2; - var naf = this._wnafT3; // Fill all arrays - - var max = 0; - var i; - var j; - var p; - - for (i = 0; i < len; i++) { - p = points[i]; - - var nafPoints = p._getNAFPoints(defW); - - wndWidth[i] = nafPoints.wnd; - wnd[i] = nafPoints.points; - } // Comb small window NAFs - - - for (i = len - 1; i >= 1; i -= 2) { - var a = i - 1; - var b = i; - - if (wndWidth[a] !== 1 || wndWidth[b] !== 1) { - naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength); - naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength); - max = Math.max(naf[a].length, max); - max = Math.max(naf[b].length, max); - continue; - } - - var comb = [points[a], - /* 1 */ - null, - /* 3 */ - null, - /* 5 */ - points[b] - /* 7 */ - ]; // Try to avoid Projective points, if possible - - if (points[a].y.cmp(points[b].y) === 0) { - comb[1] = points[a].add(points[b]); - comb[2] = points[a].toJ().mixedAdd(points[b].neg()); - } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) { - comb[1] = points[a].toJ().mixedAdd(points[b]); - comb[2] = points[a].add(points[b].neg()); - } else { - comb[1] = points[a].toJ().mixedAdd(points[b]); - comb[2] = points[a].toJ().mixedAdd(points[b].neg()); - } - - var index = [-3, - /* -1 -1 */ - -1, - /* -1 0 */ - -5, - /* -1 1 */ - -7, - /* 0 -1 */ - 0, - /* 0 0 */ - 7, - /* 0 1 */ - 5, - /* 1 -1 */ - 1, - /* 1 0 */ - 3 - /* 1 1 */ - ]; - var jsf = getJSF(coeffs[a], coeffs[b]); - max = Math.max(jsf[0].length, max); - naf[a] = new Array(max); - naf[b] = new Array(max); - - for (j = 0; j < max; j++) { - var ja = jsf[0][j] | 0; - var jb = jsf[1][j] | 0; - naf[a][j] = index[(ja + 1) * 3 + (jb + 1)]; - naf[b][j] = 0; - wnd[a] = comb; - } - } - - var acc = this.jpoint(null, null, null); - var tmp = this._wnafT4; - - for (i = max; i >= 0; i--) { - var k = 0; - - while (i >= 0) { - var zero = true; - - for (j = 0; j < len; j++) { - tmp[j] = naf[j][i] | 0; - if (tmp[j] !== 0) zero = false; - } - - if (!zero) break; - k++; - i--; - } - - if (i >= 0) k++; - acc = acc.dblp(k); - if (i < 0) break; - - for (j = 0; j < len; j++) { - var z = tmp[j]; - p; - if (z === 0) continue;else if (z > 0) p = wnd[j][z - 1 >> 1];else if (z < 0) p = wnd[j][-z - 1 >> 1].neg(); - if (p.type === 'affine') acc = acc.mixedAdd(p);else acc = acc.add(p); - } - } // Zeroify references - - - for (i = 0; i < len; i++) { - wnd[i] = null; - } - - if (jacobianResult) return acc;else return acc.toP(); -}; - -function BasePoint(curve, type) { - this.curve = curve; - this.type = type; - this.precomputed = null; -} - -BaseCurve.BasePoint = BasePoint; - -BasePoint.prototype.eq = function - /*other*/ -eq() { - throw new Error('Not implemented'); -}; - -BasePoint.prototype.validate = function validate() { - return this.curve.validate(this); -}; - -BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) { - bytes = utils.toArray(bytes, enc); - var len = this.p.byteLength(); // uncompressed, hybrid-odd, hybrid-even - - if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) && bytes.length - 1 === 2 * len) { - if (bytes[0] === 0x06) assert(bytes[bytes.length - 1] % 2 === 0);else if (bytes[0] === 0x07) assert(bytes[bytes.length - 1] % 2 === 1); - var res = this.point(bytes.slice(1, 1 + len), bytes.slice(1 + len, 1 + 2 * len)); - return res; - } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) && bytes.length - 1 === len) { - return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03); - } - - throw new Error('Unknown point format'); -}; - -BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) { - return this.encode(enc, true); -}; - -BasePoint.prototype._encode = function _encode(compact) { - var len = this.curve.p.byteLength(); - var x = this.getX().toArray('be', len); - if (compact) return [this.getY().isEven() ? 0x02 : 0x03].concat(x); - return [0x04].concat(x, this.getY().toArray('be', len)); -}; - -BasePoint.prototype.encode = function encode(enc, compact) { - return utils.encode(this._encode(compact), enc); -}; - -BasePoint.prototype.precompute = function precompute(power) { - if (this.precomputed) return this; - var precomputed = { - doubles: null, - naf: null, - beta: null - }; - precomputed.naf = this._getNAFPoints(8); - precomputed.doubles = this._getDoubles(4, power); - precomputed.beta = this._getBeta(); - this.precomputed = precomputed; - return this; -}; - -BasePoint.prototype._hasDoubles = function _hasDoubles(k) { - if (!this.precomputed) return false; - var doubles = this.precomputed.doubles; - if (!doubles) return false; - return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step); -}; - -BasePoint.prototype._getDoubles = function _getDoubles(step, power) { - if (this.precomputed && this.precomputed.doubles) return this.precomputed.doubles; - var doubles = [this]; - var acc = this; - - for (var i = 0; i < power; i += step) { - for (var j = 0; j < step; j++) { - acc = acc.dbl(); - } - - doubles.push(acc); - } - - return { - step: step, - points: doubles - }; -}; - -BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) { - if (this.precomputed && this.precomputed.naf) return this.precomputed.naf; - var res = [this]; - var max = (1 << wnd) - 1; - var dbl = max === 1 ? null : this.dbl(); - - for (var i = 1; i < max; i++) { - res[i] = res[i - 1].add(dbl); - } - - return { - wnd: wnd, - points: res - }; -}; - -BasePoint.prototype._getBeta = function _getBeta() { - return null; -}; - -BasePoint.prototype.dblp = function dblp(k) { - var r = this; - - for (var i = 0; i < k; i++) { - r = r.dbl(); - } - - return r; -}; - -/***/ }), - -/***/ 5970: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var utils = __webpack_require__(7891); - -var BN = __webpack_require__(6781); - -var inherits = __webpack_require__(376); - -var Base = __webpack_require__(9952); - -var assert = utils.assert; - -function EdwardsCurve(conf) { - // NOTE: Important as we are creating point in Base.call() - this.twisted = (conf.a | 0) !== 1; - this.mOneA = this.twisted && (conf.a | 0) === -1; - this.extended = this.mOneA; - Base.call(this, 'edwards', conf); - this.a = new BN(conf.a, 16).umod(this.red.m); - this.a = this.a.toRed(this.red); - this.c = new BN(conf.c, 16).toRed(this.red); - this.c2 = this.c.redSqr(); - this.d = new BN(conf.d, 16).toRed(this.red); - this.dd = this.d.redAdd(this.d); - assert(!this.twisted || this.c.fromRed().cmpn(1) === 0); - this.oneC = (conf.c | 0) === 1; -} - -inherits(EdwardsCurve, Base); -module.exports = EdwardsCurve; - -EdwardsCurve.prototype._mulA = function _mulA(num) { - if (this.mOneA) return num.redNeg();else return this.a.redMul(num); -}; - -EdwardsCurve.prototype._mulC = function _mulC(num) { - if (this.oneC) return num;else return this.c.redMul(num); -}; // Just for compatibility with Short curve - - -EdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) { - return this.point(x, y, z, t); -}; - -EdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) { - x = new BN(x, 16); - if (!x.red) x = x.toRed(this.red); - var x2 = x.redSqr(); - var rhs = this.c2.redSub(this.a.redMul(x2)); - var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2)); - var y2 = rhs.redMul(lhs.redInvm()); - var y = y2.redSqrt(); - if (y.redSqr().redSub(y2).cmp(this.zero) !== 0) throw new Error('invalid point'); - var isOdd = y.fromRed().isOdd(); - if (odd && !isOdd || !odd && isOdd) y = y.redNeg(); - return this.point(x, y); -}; - -EdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) { - y = new BN(y, 16); - if (!y.red) y = y.toRed(this.red); // x^2 = (y^2 - c^2) / (c^2 d y^2 - a) - - var y2 = y.redSqr(); - var lhs = y2.redSub(this.c2); - var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a); - var x2 = lhs.redMul(rhs.redInvm()); - - if (x2.cmp(this.zero) === 0) { - if (odd) throw new Error('invalid point');else return this.point(this.zero, y); - } - - var x = x2.redSqrt(); - if (x.redSqr().redSub(x2).cmp(this.zero) !== 0) throw new Error('invalid point'); - if (x.fromRed().isOdd() !== odd) x = x.redNeg(); - return this.point(x, y); -}; - -EdwardsCurve.prototype.validate = function validate(point) { - if (point.isInfinity()) return true; // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2) - - point.normalize(); - var x2 = point.x.redSqr(); - var y2 = point.y.redSqr(); - var lhs = x2.redMul(this.a).redAdd(y2); - var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2))); - return lhs.cmp(rhs) === 0; -}; - -function Point(curve, x, y, z, t) { - Base.BasePoint.call(this, curve, 'projective'); - - if (x === null && y === null && z === null) { - this.x = this.curve.zero; - this.y = this.curve.one; - this.z = this.curve.one; - this.t = this.curve.zero; - this.zOne = true; - } else { - this.x = new BN(x, 16); - this.y = new BN(y, 16); - this.z = z ? new BN(z, 16) : this.curve.one; - this.t = t && new BN(t, 16); - if (!this.x.red) this.x = this.x.toRed(this.curve.red); - if (!this.y.red) this.y = this.y.toRed(this.curve.red); - if (!this.z.red) this.z = this.z.toRed(this.curve.red); - if (this.t && !this.t.red) this.t = this.t.toRed(this.curve.red); - this.zOne = this.z === this.curve.one; // Use extended coordinates - - if (this.curve.extended && !this.t) { - this.t = this.x.redMul(this.y); - if (!this.zOne) this.t = this.t.redMul(this.z.redInvm()); - } - } -} - -inherits(Point, Base.BasePoint); - -EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) { - return Point.fromJSON(this, obj); -}; - -EdwardsCurve.prototype.point = function point(x, y, z, t) { - return new Point(this, x, y, z, t); -}; - -Point.fromJSON = function fromJSON(curve, obj) { - return new Point(curve, obj[0], obj[1], obj[2]); -}; - -Point.prototype.inspect = function inspect() { - if (this.isInfinity()) return ''; - return ''; -}; - -Point.prototype.isInfinity = function isInfinity() { - // XXX This code assumes that zero is always zero in red - return this.x.cmpn(0) === 0 && (this.y.cmp(this.z) === 0 || this.zOne && this.y.cmp(this.curve.c) === 0); -}; - -Point.prototype._extDbl = function _extDbl() { - // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html - // #doubling-dbl-2008-hwcd - // 4M + 4S - // A = X1^2 - var a = this.x.redSqr(); // B = Y1^2 - - var b = this.y.redSqr(); // C = 2 * Z1^2 - - var c = this.z.redSqr(); - c = c.redIAdd(c); // D = a * A - - var d = this.curve._mulA(a); // E = (X1 + Y1)^2 - A - B - - - var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b); // G = D + B - - var g = d.redAdd(b); // F = G - C - - var f = g.redSub(c); // H = D - B - - var h = d.redSub(b); // X3 = E * F - - var nx = e.redMul(f); // Y3 = G * H - - var ny = g.redMul(h); // T3 = E * H - - var nt = e.redMul(h); // Z3 = F * G - - var nz = f.redMul(g); - return this.curve.point(nx, ny, nz, nt); -}; - -Point.prototype._projDbl = function _projDbl() { - // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html - // #doubling-dbl-2008-bbjlp - // #doubling-dbl-2007-bl - // and others - // Generally 3M + 4S or 2M + 4S - // B = (X1 + Y1)^2 - var b = this.x.redAdd(this.y).redSqr(); // C = X1^2 - - var c = this.x.redSqr(); // D = Y1^2 - - var d = this.y.redSqr(); - var nx; - var ny; - var nz; - var e; - var h; - var j; - - if (this.curve.twisted) { - // E = a * C - e = this.curve._mulA(c); // F = E + D - - var f = e.redAdd(d); - - if (this.zOne) { - // X3 = (B - C - D) * (F - 2) - nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two)); // Y3 = F * (E - D) - - ny = f.redMul(e.redSub(d)); // Z3 = F^2 - 2 * F - - nz = f.redSqr().redSub(f).redSub(f); - } else { - // H = Z1^2 - h = this.z.redSqr(); // J = F - 2 * H - - j = f.redSub(h).redISub(h); // X3 = (B-C-D)*J - - nx = b.redSub(c).redISub(d).redMul(j); // Y3 = F * (E - D) - - ny = f.redMul(e.redSub(d)); // Z3 = F * J - - nz = f.redMul(j); - } - } else { - // E = C + D - e = c.redAdd(d); // H = (c * Z1)^2 - - h = this.curve._mulC(this.z).redSqr(); // J = E - 2 * H - - j = e.redSub(h).redSub(h); // X3 = c * (B - E) * J - - nx = this.curve._mulC(b.redISub(e)).redMul(j); // Y3 = c * E * (C - D) - - ny = this.curve._mulC(e).redMul(c.redISub(d)); // Z3 = E * J - - nz = e.redMul(j); - } - - return this.curve.point(nx, ny, nz); -}; - -Point.prototype.dbl = function dbl() { - if (this.isInfinity()) return this; // Double in extended coordinates - - if (this.curve.extended) return this._extDbl();else return this._projDbl(); -}; - -Point.prototype._extAdd = function _extAdd(p) { - // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html - // #addition-add-2008-hwcd-3 - // 8M - // A = (Y1 - X1) * (Y2 - X2) - var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x)); // B = (Y1 + X1) * (Y2 + X2) - - var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x)); // C = T1 * k * T2 - - var c = this.t.redMul(this.curve.dd).redMul(p.t); // D = Z1 * 2 * Z2 - - var d = this.z.redMul(p.z.redAdd(p.z)); // E = B - A - - var e = b.redSub(a); // F = D - C - - var f = d.redSub(c); // G = D + C - - var g = d.redAdd(c); // H = B + A - - var h = b.redAdd(a); // X3 = E * F - - var nx = e.redMul(f); // Y3 = G * H - - var ny = g.redMul(h); // T3 = E * H - - var nt = e.redMul(h); // Z3 = F * G - - var nz = f.redMul(g); - return this.curve.point(nx, ny, nz, nt); -}; - -Point.prototype._projAdd = function _projAdd(p) { - // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html - // #addition-add-2008-bbjlp - // #addition-add-2007-bl - // 10M + 1S - // A = Z1 * Z2 - var a = this.z.redMul(p.z); // B = A^2 - - var b = a.redSqr(); // C = X1 * X2 - - var c = this.x.redMul(p.x); // D = Y1 * Y2 - - var d = this.y.redMul(p.y); // E = d * C * D - - var e = this.curve.d.redMul(c).redMul(d); // F = B - E - - var f = b.redSub(e); // G = B + E - - var g = b.redAdd(e); // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D) - - var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d); - var nx = a.redMul(f).redMul(tmp); - var ny; - var nz; - - if (this.curve.twisted) { - // Y3 = A * G * (D - a * C) - ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c))); // Z3 = F * G - - nz = f.redMul(g); - } else { - // Y3 = A * G * (D - C) - ny = a.redMul(g).redMul(d.redSub(c)); // Z3 = c * F * G - - nz = this.curve._mulC(f).redMul(g); - } - - return this.curve.point(nx, ny, nz); -}; - -Point.prototype.add = function add(p) { - if (this.isInfinity()) return p; - if (p.isInfinity()) return this; - if (this.curve.extended) return this._extAdd(p);else return this._projAdd(p); -}; - -Point.prototype.mul = function mul(k) { - if (this._hasDoubles(k)) return this.curve._fixedNafMul(this, k);else return this.curve._wnafMul(this, k); -}; - -Point.prototype.mulAdd = function mulAdd(k1, p, k2) { - return this.curve._wnafMulAdd(1, [this, p], [k1, k2], 2, false); -}; - -Point.prototype.jmulAdd = function jmulAdd(k1, p, k2) { - return this.curve._wnafMulAdd(1, [this, p], [k1, k2], 2, true); -}; - -Point.prototype.normalize = function normalize() { - if (this.zOne) return this; // Normalize coordinates - - var zi = this.z.redInvm(); - this.x = this.x.redMul(zi); - this.y = this.y.redMul(zi); - if (this.t) this.t = this.t.redMul(zi); - this.z = this.curve.one; - this.zOne = true; - return this; -}; - -Point.prototype.neg = function neg() { - return this.curve.point(this.x.redNeg(), this.y, this.z, this.t && this.t.redNeg()); -}; - -Point.prototype.getX = function getX() { - this.normalize(); - return this.x.fromRed(); -}; - -Point.prototype.getY = function getY() { - this.normalize(); - return this.y.fromRed(); -}; - -Point.prototype.eq = function eq(other) { - return this === other || this.getX().cmp(other.getX()) === 0 && this.getY().cmp(other.getY()) === 0; -}; - -Point.prototype.eqXToP = function eqXToP(x) { - var rx = x.toRed(this.curve.red).redMul(this.z); - if (this.x.cmp(rx) === 0) return true; - var xc = x.clone(); - var t = this.curve.redN.redMul(this.z); - - for (;;) { - xc.iadd(this.curve.n); - if (xc.cmp(this.curve.p) >= 0) return false; - rx.redIAdd(t); - if (this.x.cmp(rx) === 0) return true; - } -}; // Compatibility with BaseCurve - - -Point.prototype.toP = Point.prototype.normalize; -Point.prototype.mixedAdd = Point.prototype.add; - -/***/ }), - -/***/ 4720: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - - -var curve = exports; -curve.base = __webpack_require__(9952); -curve["short"] = __webpack_require__(1585); -curve.mont = __webpack_require__(6773); -curve.edwards = __webpack_require__(5970); - -/***/ }), - -/***/ 6773: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var BN = __webpack_require__(6781); - -var inherits = __webpack_require__(376); - -var Base = __webpack_require__(9952); - -var utils = __webpack_require__(7891); - -function MontCurve(conf) { - Base.call(this, 'mont', conf); - this.a = new BN(conf.a, 16).toRed(this.red); - this.b = new BN(conf.b, 16).toRed(this.red); - this.i4 = new BN(4).toRed(this.red).redInvm(); - this.two = new BN(2).toRed(this.red); - this.a24 = this.i4.redMul(this.a.redAdd(this.two)); -} - -inherits(MontCurve, Base); -module.exports = MontCurve; - -MontCurve.prototype.validate = function validate(point) { - var x = point.normalize().x; - var x2 = x.redSqr(); - var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x); - var y = rhs.redSqrt(); - return y.redSqr().cmp(rhs) === 0; -}; - -function Point(curve, x, z) { - Base.BasePoint.call(this, curve, 'projective'); - - if (x === null && z === null) { - this.x = this.curve.one; - this.z = this.curve.zero; - } else { - this.x = new BN(x, 16); - this.z = new BN(z, 16); - if (!this.x.red) this.x = this.x.toRed(this.curve.red); - if (!this.z.red) this.z = this.z.toRed(this.curve.red); - } -} - -inherits(Point, Base.BasePoint); - -MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) { - return this.point(utils.toArray(bytes, enc), 1); -}; - -MontCurve.prototype.point = function point(x, z) { - return new Point(this, x, z); -}; - -MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) { - return Point.fromJSON(this, obj); -}; - -Point.prototype.precompute = function precompute() {// No-op -}; - -Point.prototype._encode = function _encode() { - return this.getX().toArray('be', this.curve.p.byteLength()); -}; - -Point.fromJSON = function fromJSON(curve, obj) { - return new Point(curve, obj[0], obj[1] || curve.one); -}; - -Point.prototype.inspect = function inspect() { - if (this.isInfinity()) return ''; - return ''; -}; - -Point.prototype.isInfinity = function isInfinity() { - // XXX This code assumes that zero is always zero in red - return this.z.cmpn(0) === 0; -}; - -Point.prototype.dbl = function dbl() { - // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3 - // 2M + 2S + 4A - // A = X1 + Z1 - var a = this.x.redAdd(this.z); // AA = A^2 - - var aa = a.redSqr(); // B = X1 - Z1 - - var b = this.x.redSub(this.z); // BB = B^2 - - var bb = b.redSqr(); // C = AA - BB - - var c = aa.redSub(bb); // X3 = AA * BB - - var nx = aa.redMul(bb); // Z3 = C * (BB + A24 * C) - - var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c))); - return this.curve.point(nx, nz); -}; - -Point.prototype.add = function add() { - throw new Error('Not supported on Montgomery curve'); -}; - -Point.prototype.diffAdd = function diffAdd(p, diff) { - // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3 - // 4M + 2S + 6A - // A = X2 + Z2 - var a = this.x.redAdd(this.z); // B = X2 - Z2 - - var b = this.x.redSub(this.z); // C = X3 + Z3 - - var c = p.x.redAdd(p.z); // D = X3 - Z3 - - var d = p.x.redSub(p.z); // DA = D * A - - var da = d.redMul(a); // CB = C * B - - var cb = c.redMul(b); // X5 = Z1 * (DA + CB)^2 - - var nx = diff.z.redMul(da.redAdd(cb).redSqr()); // Z5 = X1 * (DA - CB)^2 - - var nz = diff.x.redMul(da.redISub(cb).redSqr()); - return this.curve.point(nx, nz); -}; - -Point.prototype.mul = function mul(k) { - var t = k.clone(); - var a = this; // (N / 2) * Q + Q - - var b = this.curve.point(null, null); // (N / 2) * Q - - var c = this; // Q - - for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1)) { - bits.push(t.andln(1)); - } - - for (var i = bits.length - 1; i >= 0; i--) { - if (bits[i] === 0) { - // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q - a = a.diffAdd(b, c); // N * Q = 2 * ((N / 2) * Q + Q)) - - b = b.dbl(); - } else { - // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q) - b = a.diffAdd(b, c); // N * Q + Q = 2 * ((N / 2) * Q + Q) - - a = a.dbl(); - } - } - - return b; -}; - -Point.prototype.mulAdd = function mulAdd() { - throw new Error('Not supported on Montgomery curve'); -}; - -Point.prototype.jumlAdd = function jumlAdd() { - throw new Error('Not supported on Montgomery curve'); -}; - -Point.prototype.eq = function eq(other) { - return this.getX().cmp(other.getX()) === 0; -}; - -Point.prototype.normalize = function normalize() { - this.x = this.x.redMul(this.z.redInvm()); - this.z = this.curve.one; - return this; -}; - -Point.prototype.getX = function getX() { - // Normalize coordinates - this.normalize(); - return this.x.fromRed(); -}; - -/***/ }), - -/***/ 1585: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var utils = __webpack_require__(7891); - -var BN = __webpack_require__(6781); - -var inherits = __webpack_require__(376); - -var Base = __webpack_require__(9952); - -var assert = utils.assert; - -function ShortCurve(conf) { - Base.call(this, 'short', conf); - this.a = new BN(conf.a, 16).toRed(this.red); - this.b = new BN(conf.b, 16).toRed(this.red); - this.tinv = this.two.redInvm(); - this.zeroA = this.a.fromRed().cmpn(0) === 0; - this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0; // If the curve is endomorphic, precalculate beta and lambda - - this.endo = this._getEndomorphism(conf); - this._endoWnafT1 = new Array(4); - this._endoWnafT2 = new Array(4); -} - -inherits(ShortCurve, Base); -module.exports = ShortCurve; - -ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) { - // No efficient endomorphism - if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1) return; // Compute beta and lambda, that lambda * P = (beta * Px; Py) - - var beta; - var lambda; - - if (conf.beta) { - beta = new BN(conf.beta, 16).toRed(this.red); - } else { - var betas = this._getEndoRoots(this.p); // Choose the smallest beta - - - beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1]; - beta = beta.toRed(this.red); - } - - if (conf.lambda) { - lambda = new BN(conf.lambda, 16); - } else { - // Choose the lambda that is matching selected beta - var lambdas = this._getEndoRoots(this.n); - - if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) { - lambda = lambdas[0]; - } else { - lambda = lambdas[1]; - assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0); - } - } // Get basis vectors, used for balanced length-two representation - - - var basis; - - if (conf.basis) { - basis = conf.basis.map(function (vec) { - return { - a: new BN(vec.a, 16), - b: new BN(vec.b, 16) - }; - }); - } else { - basis = this._getEndoBasis(lambda); - } - - return { - beta: beta, - lambda: lambda, - basis: basis - }; -}; - -ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) { - // Find roots of for x^2 + x + 1 in F - // Root = (-1 +- Sqrt(-3)) / 2 - // - var red = num === this.p ? this.red : BN.mont(num); - var tinv = new BN(2).toRed(red).redInvm(); - var ntinv = tinv.redNeg(); - var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv); - var l1 = ntinv.redAdd(s).fromRed(); - var l2 = ntinv.redSub(s).fromRed(); - return [l1, l2]; -}; - -ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) { - // aprxSqrt >= sqrt(this.n) - var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2)); // 3.74 - // Run EGCD, until r(L + 1) < aprxSqrt - - var u = lambda; - var v = this.n.clone(); - var x1 = new BN(1); - var y1 = new BN(0); - var x2 = new BN(0); - var y2 = new BN(1); // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n) - - var a0; - var b0; // First vector - - var a1; - var b1; // Second vector - - var a2; - var b2; - var prevR; - var i = 0; - var r; - var x; - - while (u.cmpn(0) !== 0) { - var q = v.div(u); - r = v.sub(q.mul(u)); - x = x2.sub(q.mul(x1)); - var y = y2.sub(q.mul(y1)); - - if (!a1 && r.cmp(aprxSqrt) < 0) { - a0 = prevR.neg(); - b0 = x1; - a1 = r.neg(); - b1 = x; - } else if (a1 && ++i === 2) { - break; - } - - prevR = r; - v = u; - u = r; - x2 = x1; - x1 = x; - y2 = y1; - y1 = y; - } - - a2 = r.neg(); - b2 = x; - var len1 = a1.sqr().add(b1.sqr()); - var len2 = a2.sqr().add(b2.sqr()); - - if (len2.cmp(len1) >= 0) { - a2 = a0; - b2 = b0; - } // Normalize signs - - - if (a1.negative) { - a1 = a1.neg(); - b1 = b1.neg(); - } - - if (a2.negative) { - a2 = a2.neg(); - b2 = b2.neg(); - } - - return [{ - a: a1, - b: b1 - }, { - a: a2, - b: b2 - }]; -}; - -ShortCurve.prototype._endoSplit = function _endoSplit(k) { - var basis = this.endo.basis; - var v1 = basis[0]; - var v2 = basis[1]; - var c1 = v2.b.mul(k).divRound(this.n); - var c2 = v1.b.neg().mul(k).divRound(this.n); - var p1 = c1.mul(v1.a); - var p2 = c2.mul(v2.a); - var q1 = c1.mul(v1.b); - var q2 = c2.mul(v2.b); // Calculate answer - - var k1 = k.sub(p1).sub(p2); - var k2 = q1.add(q2).neg(); - return { - k1: k1, - k2: k2 - }; -}; - -ShortCurve.prototype.pointFromX = function pointFromX(x, odd) { - x = new BN(x, 16); - if (!x.red) x = x.toRed(this.red); - var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b); - var y = y2.redSqrt(); - if (y.redSqr().redSub(y2).cmp(this.zero) !== 0) throw new Error('invalid point'); // XXX Is there any way to tell if the number is odd without converting it - // to non-red form? - - var isOdd = y.fromRed().isOdd(); - if (odd && !isOdd || !odd && isOdd) y = y.redNeg(); - return this.point(x, y); -}; - -ShortCurve.prototype.validate = function validate(point) { - if (point.inf) return true; - var x = point.x; - var y = point.y; - var ax = this.a.redMul(x); - var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b); - return y.redSqr().redISub(rhs).cmpn(0) === 0; -}; - -ShortCurve.prototype._endoWnafMulAdd = function _endoWnafMulAdd(points, coeffs, jacobianResult) { - var npoints = this._endoWnafT1; - var ncoeffs = this._endoWnafT2; - - for (var i = 0; i < points.length; i++) { - var split = this._endoSplit(coeffs[i]); - - var p = points[i]; - - var beta = p._getBeta(); - - if (split.k1.negative) { - split.k1.ineg(); - p = p.neg(true); - } - - if (split.k2.negative) { - split.k2.ineg(); - beta = beta.neg(true); - } - - npoints[i * 2] = p; - npoints[i * 2 + 1] = beta; - ncoeffs[i * 2] = split.k1; - ncoeffs[i * 2 + 1] = split.k2; - } - - var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult); // Clean-up references to points and coefficients - - - for (var j = 0; j < i * 2; j++) { - npoints[j] = null; - ncoeffs[j] = null; - } - - return res; -}; - -function Point(curve, x, y, isRed) { - Base.BasePoint.call(this, curve, 'affine'); - - if (x === null && y === null) { - this.x = null; - this.y = null; - this.inf = true; - } else { - this.x = new BN(x, 16); - this.y = new BN(y, 16); // Force redgomery representation when loading from JSON - - if (isRed) { - this.x.forceRed(this.curve.red); - this.y.forceRed(this.curve.red); - } - - if (!this.x.red) this.x = this.x.toRed(this.curve.red); - if (!this.y.red) this.y = this.y.toRed(this.curve.red); - this.inf = false; - } -} - -inherits(Point, Base.BasePoint); - -ShortCurve.prototype.point = function point(x, y, isRed) { - return new Point(this, x, y, isRed); -}; - -ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) { - return Point.fromJSON(this, obj, red); -}; - -Point.prototype._getBeta = function _getBeta() { - if (!this.curve.endo) return; - var pre = this.precomputed; - if (pre && pre.beta) return pre.beta; - var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y); - - if (pre) { - var curve = this.curve; - - var endoMul = function endoMul(p) { - return curve.point(p.x.redMul(curve.endo.beta), p.y); - }; - - pre.beta = beta; - beta.precomputed = { - beta: null, - naf: pre.naf && { - wnd: pre.naf.wnd, - points: pre.naf.points.map(endoMul) - }, - doubles: pre.doubles && { - step: pre.doubles.step, - points: pre.doubles.points.map(endoMul) - } - }; - } - - return beta; -}; - -Point.prototype.toJSON = function toJSON() { - if (!this.precomputed) return [this.x, this.y]; - return [this.x, this.y, this.precomputed && { - doubles: this.precomputed.doubles && { - step: this.precomputed.doubles.step, - points: this.precomputed.doubles.points.slice(1) - }, - naf: this.precomputed.naf && { - wnd: this.precomputed.naf.wnd, - points: this.precomputed.naf.points.slice(1) - } - }]; -}; - -Point.fromJSON = function fromJSON(curve, obj, red) { - if (typeof obj === 'string') obj = JSON.parse(obj); - var res = curve.point(obj[0], obj[1], red); - if (!obj[2]) return res; - - function obj2point(obj) { - return curve.point(obj[0], obj[1], red); - } - - var pre = obj[2]; - res.precomputed = { - beta: null, - doubles: pre.doubles && { - step: pre.doubles.step, - points: [res].concat(pre.doubles.points.map(obj2point)) - }, - naf: pre.naf && { - wnd: pre.naf.wnd, - points: [res].concat(pre.naf.points.map(obj2point)) - } - }; - return res; -}; - -Point.prototype.inspect = function inspect() { - if (this.isInfinity()) return ''; - return ''; -}; - -Point.prototype.isInfinity = function isInfinity() { - return this.inf; -}; - -Point.prototype.add = function add(p) { - // O + P = P - if (this.inf) return p; // P + O = P - - if (p.inf) return this; // P + P = 2P - - if (this.eq(p)) return this.dbl(); // P + (-P) = O - - if (this.neg().eq(p)) return this.curve.point(null, null); // P + Q = O - - if (this.x.cmp(p.x) === 0) return this.curve.point(null, null); - var c = this.y.redSub(p.y); - if (c.cmpn(0) !== 0) c = c.redMul(this.x.redSub(p.x).redInvm()); - var nx = c.redSqr().redISub(this.x).redISub(p.x); - var ny = c.redMul(this.x.redSub(nx)).redISub(this.y); - return this.curve.point(nx, ny); -}; - -Point.prototype.dbl = function dbl() { - if (this.inf) return this; // 2P = O - - var ys1 = this.y.redAdd(this.y); - if (ys1.cmpn(0) === 0) return this.curve.point(null, null); - var a = this.curve.a; - var x2 = this.x.redSqr(); - var dyinv = ys1.redInvm(); - var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv); - var nx = c.redSqr().redISub(this.x.redAdd(this.x)); - var ny = c.redMul(this.x.redSub(nx)).redISub(this.y); - return this.curve.point(nx, ny); -}; - -Point.prototype.getX = function getX() { - return this.x.fromRed(); -}; - -Point.prototype.getY = function getY() { - return this.y.fromRed(); -}; - -Point.prototype.mul = function mul(k) { - k = new BN(k, 16); - if (this.isInfinity()) return this;else if (this._hasDoubles(k)) return this.curve._fixedNafMul(this, k);else if (this.curve.endo) return this.curve._endoWnafMulAdd([this], [k]);else return this.curve._wnafMul(this, k); -}; - -Point.prototype.mulAdd = function mulAdd(k1, p2, k2) { - var points = [this, p2]; - var coeffs = [k1, k2]; - if (this.curve.endo) return this.curve._endoWnafMulAdd(points, coeffs);else return this.curve._wnafMulAdd(1, points, coeffs, 2); -}; - -Point.prototype.jmulAdd = function jmulAdd(k1, p2, k2) { - var points = [this, p2]; - var coeffs = [k1, k2]; - if (this.curve.endo) return this.curve._endoWnafMulAdd(points, coeffs, true);else return this.curve._wnafMulAdd(1, points, coeffs, 2, true); -}; - -Point.prototype.eq = function eq(p) { - return this === p || this.inf === p.inf && (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0); -}; - -Point.prototype.neg = function neg(_precompute) { - if (this.inf) return this; - var res = this.curve.point(this.x, this.y.redNeg()); - - if (_precompute && this.precomputed) { - var pre = this.precomputed; - - var negate = function negate(p) { - return p.neg(); - }; - - res.precomputed = { - naf: pre.naf && { - wnd: pre.naf.wnd, - points: pre.naf.points.map(negate) - }, - doubles: pre.doubles && { - step: pre.doubles.step, - points: pre.doubles.points.map(negate) - } - }; - } - - return res; -}; - -Point.prototype.toJ = function toJ() { - if (this.inf) return this.curve.jpoint(null, null, null); - var res = this.curve.jpoint(this.x, this.y, this.curve.one); - return res; -}; - -function JPoint(curve, x, y, z) { - Base.BasePoint.call(this, curve, 'jacobian'); - - if (x === null && y === null && z === null) { - this.x = this.curve.one; - this.y = this.curve.one; - this.z = new BN(0); - } else { - this.x = new BN(x, 16); - this.y = new BN(y, 16); - this.z = new BN(z, 16); - } - - if (!this.x.red) this.x = this.x.toRed(this.curve.red); - if (!this.y.red) this.y = this.y.toRed(this.curve.red); - if (!this.z.red) this.z = this.z.toRed(this.curve.red); - this.zOne = this.z === this.curve.one; -} - -inherits(JPoint, Base.BasePoint); - -ShortCurve.prototype.jpoint = function jpoint(x, y, z) { - return new JPoint(this, x, y, z); -}; - -JPoint.prototype.toP = function toP() { - if (this.isInfinity()) return this.curve.point(null, null); - var zinv = this.z.redInvm(); - var zinv2 = zinv.redSqr(); - var ax = this.x.redMul(zinv2); - var ay = this.y.redMul(zinv2).redMul(zinv); - return this.curve.point(ax, ay); -}; - -JPoint.prototype.neg = function neg() { - return this.curve.jpoint(this.x, this.y.redNeg(), this.z); -}; - -JPoint.prototype.add = function add(p) { - // O + P = P - if (this.isInfinity()) return p; // P + O = P - - if (p.isInfinity()) return this; // 12M + 4S + 7A - - var pz2 = p.z.redSqr(); - var z2 = this.z.redSqr(); - var u1 = this.x.redMul(pz2); - var u2 = p.x.redMul(z2); - var s1 = this.y.redMul(pz2.redMul(p.z)); - var s2 = p.y.redMul(z2.redMul(this.z)); - var h = u1.redSub(u2); - var r = s1.redSub(s2); - - if (h.cmpn(0) === 0) { - if (r.cmpn(0) !== 0) return this.curve.jpoint(null, null, null);else return this.dbl(); - } - - var h2 = h.redSqr(); - var h3 = h2.redMul(h); - var v = u1.redMul(h2); - var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v); - var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3)); - var nz = this.z.redMul(p.z).redMul(h); - return this.curve.jpoint(nx, ny, nz); -}; - -JPoint.prototype.mixedAdd = function mixedAdd(p) { - // O + P = P - if (this.isInfinity()) return p.toJ(); // P + O = P - - if (p.isInfinity()) return this; // 8M + 3S + 7A - - var z2 = this.z.redSqr(); - var u1 = this.x; - var u2 = p.x.redMul(z2); - var s1 = this.y; - var s2 = p.y.redMul(z2).redMul(this.z); - var h = u1.redSub(u2); - var r = s1.redSub(s2); - - if (h.cmpn(0) === 0) { - if (r.cmpn(0) !== 0) return this.curve.jpoint(null, null, null);else return this.dbl(); - } - - var h2 = h.redSqr(); - var h3 = h2.redMul(h); - var v = u1.redMul(h2); - var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v); - var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3)); - var nz = this.z.redMul(h); - return this.curve.jpoint(nx, ny, nz); -}; - -JPoint.prototype.dblp = function dblp(pow) { - if (pow === 0) return this; - if (this.isInfinity()) return this; - if (!pow) return this.dbl(); - var i; - - if (this.curve.zeroA || this.curve.threeA) { - var r = this; - - for (i = 0; i < pow; i++) { - r = r.dbl(); - } - - return r; - } // 1M + 2S + 1A + N * (4S + 5M + 8A) - // N = 1 => 6M + 6S + 9A - - - var a = this.curve.a; - var tinv = this.curve.tinv; - var jx = this.x; - var jy = this.y; - var jz = this.z; - var jz4 = jz.redSqr().redSqr(); // Reuse results - - var jyd = jy.redAdd(jy); - - for (i = 0; i < pow; i++) { - var jx2 = jx.redSqr(); - var jyd2 = jyd.redSqr(); - var jyd4 = jyd2.redSqr(); - var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4)); - var t1 = jx.redMul(jyd2); - var nx = c.redSqr().redISub(t1.redAdd(t1)); - var t2 = t1.redISub(nx); - var dny = c.redMul(t2); - dny = dny.redIAdd(dny).redISub(jyd4); - var nz = jyd.redMul(jz); - if (i + 1 < pow) jz4 = jz4.redMul(jyd4); - jx = nx; - jz = nz; - jyd = dny; - } - - return this.curve.jpoint(jx, jyd.redMul(tinv), jz); -}; - -JPoint.prototype.dbl = function dbl() { - if (this.isInfinity()) return this; - if (this.curve.zeroA) return this._zeroDbl();else if (this.curve.threeA) return this._threeDbl();else return this._dbl(); -}; - -JPoint.prototype._zeroDbl = function _zeroDbl() { - var nx; - var ny; - var nz; // Z = 1 - - if (this.zOne) { - // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html - // #doubling-mdbl-2007-bl - // 1M + 5S + 14A - // XX = X1^2 - var xx = this.x.redSqr(); // YY = Y1^2 - - var yy = this.y.redSqr(); // YYYY = YY^2 - - var yyyy = yy.redSqr(); // S = 2 * ((X1 + YY)^2 - XX - YYYY) - - var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy); - s = s.redIAdd(s); // M = 3 * XX + a; a = 0 - - var m = xx.redAdd(xx).redIAdd(xx); // T = M ^ 2 - 2*S - - var t = m.redSqr().redISub(s).redISub(s); // 8 * YYYY - - var yyyy8 = yyyy.redIAdd(yyyy); - yyyy8 = yyyy8.redIAdd(yyyy8); - yyyy8 = yyyy8.redIAdd(yyyy8); // X3 = T - - nx = t; // Y3 = M * (S - T) - 8 * YYYY - - ny = m.redMul(s.redISub(t)).redISub(yyyy8); // Z3 = 2*Y1 - - nz = this.y.redAdd(this.y); - } else { - // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html - // #doubling-dbl-2009-l - // 2M + 5S + 13A - // A = X1^2 - var a = this.x.redSqr(); // B = Y1^2 - - var b = this.y.redSqr(); // C = B^2 - - var c = b.redSqr(); // D = 2 * ((X1 + B)^2 - A - C) - - var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c); - d = d.redIAdd(d); // E = 3 * A - - var e = a.redAdd(a).redIAdd(a); // F = E^2 - - var f = e.redSqr(); // 8 * C - - var c8 = c.redIAdd(c); - c8 = c8.redIAdd(c8); - c8 = c8.redIAdd(c8); // X3 = F - 2 * D - - nx = f.redISub(d).redISub(d); // Y3 = E * (D - X3) - 8 * C - - ny = e.redMul(d.redISub(nx)).redISub(c8); // Z3 = 2 * Y1 * Z1 - - nz = this.y.redMul(this.z); - nz = nz.redIAdd(nz); - } - - return this.curve.jpoint(nx, ny, nz); -}; - -JPoint.prototype._threeDbl = function _threeDbl() { - var nx; - var ny; - var nz; // Z = 1 - - if (this.zOne) { - // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html - // #doubling-mdbl-2007-bl - // 1M + 5S + 15A - // XX = X1^2 - var xx = this.x.redSqr(); // YY = Y1^2 - - var yy = this.y.redSqr(); // YYYY = YY^2 - - var yyyy = yy.redSqr(); // S = 2 * ((X1 + YY)^2 - XX - YYYY) - - var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy); - s = s.redIAdd(s); // M = 3 * XX + a - - var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a); // T = M^2 - 2 * S - - var t = m.redSqr().redISub(s).redISub(s); // X3 = T - - nx = t; // Y3 = M * (S - T) - 8 * YYYY - - var yyyy8 = yyyy.redIAdd(yyyy); - yyyy8 = yyyy8.redIAdd(yyyy8); - yyyy8 = yyyy8.redIAdd(yyyy8); - ny = m.redMul(s.redISub(t)).redISub(yyyy8); // Z3 = 2 * Y1 - - nz = this.y.redAdd(this.y); - } else { - // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b - // 3M + 5S - // delta = Z1^2 - var delta = this.z.redSqr(); // gamma = Y1^2 - - var gamma = this.y.redSqr(); // beta = X1 * gamma - - var beta = this.x.redMul(gamma); // alpha = 3 * (X1 - delta) * (X1 + delta) - - var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta)); - alpha = alpha.redAdd(alpha).redIAdd(alpha); // X3 = alpha^2 - 8 * beta - - var beta4 = beta.redIAdd(beta); - beta4 = beta4.redIAdd(beta4); - var beta8 = beta4.redAdd(beta4); - nx = alpha.redSqr().redISub(beta8); // Z3 = (Y1 + Z1)^2 - gamma - delta - - nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta); // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2 - - var ggamma8 = gamma.redSqr(); - ggamma8 = ggamma8.redIAdd(ggamma8); - ggamma8 = ggamma8.redIAdd(ggamma8); - ggamma8 = ggamma8.redIAdd(ggamma8); - ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8); - } - - return this.curve.jpoint(nx, ny, nz); -}; - -JPoint.prototype._dbl = function _dbl() { - var a = this.curve.a; // 4M + 6S + 10A - - var jx = this.x; - var jy = this.y; - var jz = this.z; - var jz4 = jz.redSqr().redSqr(); - var jx2 = jx.redSqr(); - var jy2 = jy.redSqr(); - var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4)); - var jxd4 = jx.redAdd(jx); - jxd4 = jxd4.redIAdd(jxd4); - var t1 = jxd4.redMul(jy2); - var nx = c.redSqr().redISub(t1.redAdd(t1)); - var t2 = t1.redISub(nx); - var jyd8 = jy2.redSqr(); - jyd8 = jyd8.redIAdd(jyd8); - jyd8 = jyd8.redIAdd(jyd8); - jyd8 = jyd8.redIAdd(jyd8); - var ny = c.redMul(t2).redISub(jyd8); - var nz = jy.redAdd(jy).redMul(jz); - return this.curve.jpoint(nx, ny, nz); -}; - -JPoint.prototype.trpl = function trpl() { - if (!this.curve.zeroA) return this.dbl().add(this); // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl - // 5M + 10S + ... - // XX = X1^2 - - var xx = this.x.redSqr(); // YY = Y1^2 - - var yy = this.y.redSqr(); // ZZ = Z1^2 - - var zz = this.z.redSqr(); // YYYY = YY^2 - - var yyyy = yy.redSqr(); // M = 3 * XX + a * ZZ2; a = 0 - - var m = xx.redAdd(xx).redIAdd(xx); // MM = M^2 - - var mm = m.redSqr(); // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM - - var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy); - e = e.redIAdd(e); - e = e.redAdd(e).redIAdd(e); - e = e.redISub(mm); // EE = E^2 - - var ee = e.redSqr(); // T = 16*YYYY - - var t = yyyy.redIAdd(yyyy); - t = t.redIAdd(t); - t = t.redIAdd(t); - t = t.redIAdd(t); // U = (M + E)^2 - MM - EE - T - - var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t); // X3 = 4 * (X1 * EE - 4 * YY * U) - - var yyu4 = yy.redMul(u); - yyu4 = yyu4.redIAdd(yyu4); - yyu4 = yyu4.redIAdd(yyu4); - var nx = this.x.redMul(ee).redISub(yyu4); - nx = nx.redIAdd(nx); - nx = nx.redIAdd(nx); // Y3 = 8 * Y1 * (U * (T - U) - E * EE) - - var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee))); - ny = ny.redIAdd(ny); - ny = ny.redIAdd(ny); - ny = ny.redIAdd(ny); // Z3 = (Z1 + E)^2 - ZZ - EE - - var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee); - return this.curve.jpoint(nx, ny, nz); -}; - -JPoint.prototype.mul = function mul(k, kbase) { - k = new BN(k, kbase); - return this.curve._wnafMul(this, k); -}; - -JPoint.prototype.eq = function eq(p) { - if (p.type === 'affine') return this.eq(p.toJ()); - if (this === p) return true; // x1 * z2^2 == x2 * z1^2 - - var z2 = this.z.redSqr(); - var pz2 = p.z.redSqr(); - if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0) return false; // y1 * z2^3 == y2 * z1^3 - - var z3 = z2.redMul(this.z); - var pz3 = pz2.redMul(p.z); - return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0; -}; - -JPoint.prototype.eqXToP = function eqXToP(x) { - var zs = this.z.redSqr(); - var rx = x.toRed(this.curve.red).redMul(zs); - if (this.x.cmp(rx) === 0) return true; - var xc = x.clone(); - var t = this.curve.redN.redMul(zs); - - for (;;) { - xc.iadd(this.curve.n); - if (xc.cmp(this.curve.p) >= 0) return false; - rx.redIAdd(t); - if (this.x.cmp(rx) === 0) return true; - } -}; - -JPoint.prototype.inspect = function inspect() { - if (this.isInfinity()) return ''; - return ''; -}; - -JPoint.prototype.isInfinity = function isInfinity() { - // XXX This code assumes that zero is always zero in red - return this.z.cmpn(0) === 0; -}; - -/***/ }), - -/***/ 1478: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - - -var curves = exports; - -var hash = __webpack_require__(3192); - -var curve = __webpack_require__(4720); - -var utils = __webpack_require__(7891); - -var assert = utils.assert; - -function PresetCurve(options) { - if (options.type === 'short') this.curve = new curve["short"](options);else if (options.type === 'edwards') this.curve = new curve.edwards(options);else this.curve = new curve.mont(options); - this.g = this.curve.g; - this.n = this.curve.n; - this.hash = options.hash; - assert(this.g.validate(), 'Invalid curve'); - assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O'); -} - -curves.PresetCurve = PresetCurve; - -function defineCurve(name, options) { - Object.defineProperty(curves, name, { - configurable: true, - enumerable: true, - get: function get() { - var curve = new PresetCurve(options); - Object.defineProperty(curves, name, { - configurable: true, - enumerable: true, - value: curve - }); - return curve; - } - }); -} - -defineCurve('p192', { - type: 'short', - prime: 'p192', - p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff', - a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc', - b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1', - n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831', - hash: hash.sha256, - gRed: false, - g: ['188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012', '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811'] -}); -defineCurve('p224', { - type: 'short', - prime: 'p224', - p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001', - a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe', - b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4', - n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d', - hash: hash.sha256, - gRed: false, - g: ['b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21', 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34'] -}); -defineCurve('p256', { - type: 'short', - prime: null, - p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff', - a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc', - b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b', - n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551', - hash: hash.sha256, - gRed: false, - g: ['6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296', '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5'] -}); -defineCurve('p384', { - type: 'short', - prime: null, - p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'fffffffe ffffffff 00000000 00000000 ffffffff', - a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'fffffffe ffffffff 00000000 00000000 fffffffc', - b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' + '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef', - n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' + 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973', - hash: hash.sha384, - gRed: false, - g: ['aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' + '5502f25d bf55296c 3a545e38 72760ab7', '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' + '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'] -}); -defineCurve('p521', { - type: 'short', - prime: null, - p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff ffffffff ffffffff ffffffff', - a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff ffffffff ffffffff fffffffc', - b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' + '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' + '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00', - n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' + 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409', - hash: hash.sha512, - gRed: false, - g: ['000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' + '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' + 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66', '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' + '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' + '3fad0761 353c7086 a272c240 88be9476 9fd16650'] -}); -defineCurve('curve25519', { - type: 'mont', - prime: 'p25519', - p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed', - a: '76d06', - b: '1', - n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed', - hash: hash.sha256, - gRed: false, - g: ['9'] -}); -defineCurve('ed25519', { - type: 'edwards', - prime: 'p25519', - p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed', - a: '-1', - c: '1', - // -121665 * (121666^(-1)) (mod P) - d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3', - n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed', - hash: hash.sha256, - gRed: false, - g: ['216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a', // 4/5 - '6666666666666666666666666666666666666666666666666666666666666658'] -}); -var pre; - -try { - pre = __webpack_require__(8948); -} catch (e) { - pre = undefined; -} - -defineCurve('secp256k1', { - type: 'short', - prime: 'k256', - p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f', - a: '0', - b: '7', - n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141', - h: '1', - hash: hash.sha256, - // Precomputed endomorphism - beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee', - lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72', - basis: [{ - a: '3086d221a7d46bcde86c90e49284eb15', - b: '-e4437ed6010e88286f547fa90abfe4c3' - }, { - a: '114ca50f7a8e2f3f657c1108d9d44cfd8', - b: '3086d221a7d46bcde86c90e49284eb15' - }], - gRed: false, - g: ['79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798', '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8', pre] -}); - -/***/ }), - -/***/ 5806: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var BN = __webpack_require__(6781); - -var HmacDRBG = __webpack_require__(9742); - -var utils = __webpack_require__(7891); - -var curves = __webpack_require__(1478); - -var rand = __webpack_require__(7179); - -var assert = utils.assert; - -var KeyPair = __webpack_require__(3598); - -var Signature = __webpack_require__(5206); - -function EC(options) { - if (!(this instanceof EC)) return new EC(options); // Shortcut `elliptic.ec(curve-name)` - - if (typeof options === 'string') { - assert(Object.prototype.hasOwnProperty.call(curves, options), 'Unknown curve ' + options); - options = curves[options]; - } // Shortcut for `elliptic.ec(elliptic.curves.curveName)` - - - if (options instanceof curves.PresetCurve) options = { - curve: options - }; - this.curve = options.curve.curve; - this.n = this.curve.n; - this.nh = this.n.ushrn(1); - this.g = this.curve.g; // Point on curve - - this.g = options.curve.g; - this.g.precompute(options.curve.n.bitLength() + 1); // Hash for function for DRBG - - this.hash = options.hash || options.curve.hash; -} - -module.exports = EC; - -EC.prototype.keyPair = function keyPair(options) { - return new KeyPair(this, options); -}; - -EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) { - return KeyPair.fromPrivate(this, priv, enc); -}; - -EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) { - return KeyPair.fromPublic(this, pub, enc); -}; - -EC.prototype.genKeyPair = function genKeyPair(options) { - if (!options) options = {}; // Instantiate Hmac_DRBG - - var drbg = new HmacDRBG({ - hash: this.hash, - pers: options.pers, - persEnc: options.persEnc || 'utf8', - entropy: options.entropy || rand(this.hash.hmacStrength), - entropyEnc: options.entropy && options.entropyEnc || 'utf8', - nonce: this.n.toArray() - }); - var bytes = this.n.byteLength(); - var ns2 = this.n.sub(new BN(2)); - - for (;;) { - var priv = new BN(drbg.generate(bytes)); - if (priv.cmp(ns2) > 0) continue; - priv.iaddn(1); - return this.keyFromPrivate(priv); - } -}; - -EC.prototype._truncateToN = function _truncateToN(msg, truncOnly) { - var delta = msg.byteLength() * 8 - this.n.bitLength(); - if (delta > 0) msg = msg.ushrn(delta); - if (!truncOnly && msg.cmp(this.n) >= 0) return msg.sub(this.n);else return msg; -}; - -EC.prototype.sign = function sign(msg, key, enc, options) { - if (_typeof(enc) === 'object') { - options = enc; - enc = null; - } - - if (!options) options = {}; - key = this.keyFromPrivate(key, enc); - msg = this._truncateToN(new BN(msg, 16)); // Zero-extend key to provide enough entropy - - var bytes = this.n.byteLength(); - var bkey = key.getPrivate().toArray('be', bytes); // Zero-extend nonce to have the same byte size as N - - var nonce = msg.toArray('be', bytes); // Instantiate Hmac_DRBG - - var drbg = new HmacDRBG({ - hash: this.hash, - entropy: bkey, - nonce: nonce, - pers: options.pers, - persEnc: options.persEnc || 'utf8' - }); // Number of bytes to generate - - var ns1 = this.n.sub(new BN(1)); - - for (var iter = 0;; iter++) { - var k = options.k ? options.k(iter) : new BN(drbg.generate(this.n.byteLength())); - k = this._truncateToN(k, true); - if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0) continue; - var kp = this.g.mul(k); - if (kp.isInfinity()) continue; - var kpX = kp.getX(); - var r = kpX.umod(this.n); - if (r.cmpn(0) === 0) continue; - var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg)); - s = s.umod(this.n); - if (s.cmpn(0) === 0) continue; - var recoveryParam = (kp.getY().isOdd() ? 1 : 0) | (kpX.cmp(r) !== 0 ? 2 : 0); // Use complement of `s`, if it is > `n / 2` - - if (options.canonical && s.cmp(this.nh) > 0) { - s = this.n.sub(s); - recoveryParam ^= 1; - } - - return new Signature({ - r: r, - s: s, - recoveryParam: recoveryParam - }); - } -}; - -EC.prototype.verify = function verify(msg, signature, key, enc) { - msg = this._truncateToN(new BN(msg, 16)); - key = this.keyFromPublic(key, enc); - signature = new Signature(signature, 'hex'); // Perform primitive values validation - - var r = signature.r; - var s = signature.s; - if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0) return false; - if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0) return false; // Validate signature - - var sinv = s.invm(this.n); - var u1 = sinv.mul(msg).umod(this.n); - var u2 = sinv.mul(r).umod(this.n); - var p; - - if (!this.curve._maxwellTrick) { - p = this.g.mulAdd(u1, key.getPublic(), u2); - if (p.isInfinity()) return false; - return p.getX().umod(this.n).cmp(r) === 0; - } // NOTE: Greg Maxwell's trick, inspired by: - // https://git.io/vad3K - - - p = this.g.jmulAdd(u1, key.getPublic(), u2); - if (p.isInfinity()) return false; // Compare `p.x` of Jacobian point with `r`, - // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the - // inverse of `p.z^2` - - return p.eqXToP(r); -}; - -EC.prototype.recoverPubKey = function (msg, signature, j, enc) { - assert((3 & j) === j, 'The recovery param is more than two bits'); - signature = new Signature(signature, enc); - var n = this.n; - var e = new BN(msg); - var r = signature.r; - var s = signature.s; // A set LSB signifies that the y-coordinate is odd - - var isYOdd = j & 1; - var isSecondKey = j >> 1; - if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey) throw new Error('Unable to find sencond key candinate'); // 1.1. Let x = r + jn. - - if (isSecondKey) r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);else r = this.curve.pointFromX(r, isYOdd); - var rInv = signature.r.invm(n); - var s1 = n.sub(e).mul(rInv).umod(n); - var s2 = s.mul(rInv).umod(n); // 1.6.1 Compute Q = r^-1 (sR - eG) - // Q = r^-1 (sR + -eG) - - return this.g.mulAdd(s1, r, s2); -}; - -EC.prototype.getKeyRecoveryParam = function (e, signature, Q, enc) { - signature = new Signature(signature, enc); - if (signature.recoveryParam !== null) return signature.recoveryParam; - - for (var i = 0; i < 4; i++) { - var Qprime; - - try { - Qprime = this.recoverPubKey(e, signature, i); - } catch (e) { - continue; - } - - if (Qprime.eq(Q)) return i; - } - - throw new Error('Unable to find valid recovery factor'); -}; - -/***/ }), - -/***/ 3598: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var BN = __webpack_require__(6781); - -var utils = __webpack_require__(7891); - -var assert = utils.assert; - -function KeyPair(ec, options) { - this.ec = ec; - this.priv = null; - this.pub = null; // KeyPair(ec, { priv: ..., pub: ... }) - - if (options.priv) this._importPrivate(options.priv, options.privEnc); - if (options.pub) this._importPublic(options.pub, options.pubEnc); -} - -module.exports = KeyPair; - -KeyPair.fromPublic = function fromPublic(ec, pub, enc) { - if (pub instanceof KeyPair) return pub; - return new KeyPair(ec, { - pub: pub, - pubEnc: enc - }); -}; - -KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) { - if (priv instanceof KeyPair) return priv; - return new KeyPair(ec, { - priv: priv, - privEnc: enc - }); -}; - -KeyPair.prototype.validate = function validate() { - var pub = this.getPublic(); - if (pub.isInfinity()) return { - result: false, - reason: 'Invalid public key' - }; - if (!pub.validate()) return { - result: false, - reason: 'Public key is not a point' - }; - if (!pub.mul(this.ec.curve.n).isInfinity()) return { - result: false, - reason: 'Public key * N != O' - }; - return { - result: true, - reason: null - }; -}; - -KeyPair.prototype.getPublic = function getPublic(compact, enc) { - // compact is optional argument - if (typeof compact === 'string') { - enc = compact; - compact = null; - } - - if (!this.pub) this.pub = this.ec.g.mul(this.priv); - if (!enc) return this.pub; - return this.pub.encode(enc, compact); -}; - -KeyPair.prototype.getPrivate = function getPrivate(enc) { - if (enc === 'hex') return this.priv.toString(16, 2);else return this.priv; -}; - -KeyPair.prototype._importPrivate = function _importPrivate(key, enc) { - this.priv = new BN(key, enc || 16); // Ensure that the priv won't be bigger than n, otherwise we may fail - // in fixed multiplication method - - this.priv = this.priv.umod(this.ec.curve.n); -}; - -KeyPair.prototype._importPublic = function _importPublic(key, enc) { - if (key.x || key.y) { - // Montgomery points only have an `x` coordinate. - // Weierstrass/Edwards points on the other hand have both `x` and - // `y` coordinates. - if (this.ec.curve.type === 'mont') { - assert(key.x, 'Need x coordinate'); - } else if (this.ec.curve.type === 'short' || this.ec.curve.type === 'edwards') { - assert(key.x && key.y, 'Need both x and y coordinate'); - } - - this.pub = this.ec.curve.point(key.x, key.y); - return; - } - - this.pub = this.ec.curve.decodePoint(key, enc); -}; // ECDH - - -KeyPair.prototype.derive = function derive(pub) { - if (!pub.validate()) { - assert(pub.validate(), 'public point not validated'); - } - - return pub.mul(this.priv).getX(); -}; // ECDSA - - -KeyPair.prototype.sign = function sign(msg, enc, options) { - return this.ec.sign(msg, this, enc, options); -}; - -KeyPair.prototype.verify = function verify(msg, signature) { - return this.ec.verify(msg, signature, this); -}; - -KeyPair.prototype.inspect = function inspect() { - return ''; -}; - -/***/ }), - -/***/ 5206: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var BN = __webpack_require__(6781); - -var utils = __webpack_require__(7891); - -var assert = utils.assert; - -function Signature(options, enc) { - if (options instanceof Signature) return options; - if (this._importDER(options, enc)) return; - assert(options.r && options.s, 'Signature without r or s'); - this.r = new BN(options.r, 16); - this.s = new BN(options.s, 16); - if (options.recoveryParam === undefined) this.recoveryParam = null;else this.recoveryParam = options.recoveryParam; -} - -module.exports = Signature; - -function Position() { - this.place = 0; -} - -function getLength(buf, p) { - var initial = buf[p.place++]; - - if (!(initial & 0x80)) { - return initial; - } - - var octetLen = initial & 0xf; // Indefinite length or overflow - - if (octetLen === 0 || octetLen > 4) { - return false; - } - - var val = 0; - - for (var i = 0, off = p.place; i < octetLen; i++, off++) { - val <<= 8; - val |= buf[off]; - val >>>= 0; - } // Leading zeroes - - - if (val <= 0x7f) { - return false; - } - - p.place = off; - return val; -} - -function rmPadding(buf) { - var i = 0; - var len = buf.length - 1; - - while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) { - i++; - } - - if (i === 0) { - return buf; - } - - return buf.slice(i); -} - -Signature.prototype._importDER = function _importDER(data, enc) { - data = utils.toArray(data, enc); - var p = new Position(); - - if (data[p.place++] !== 0x30) { - return false; - } - - var len = getLength(data, p); - - if (len === false) { - return false; - } - - if (len + p.place !== data.length) { - return false; - } - - if (data[p.place++] !== 0x02) { - return false; - } - - var rlen = getLength(data, p); - - if (rlen === false) { - return false; - } - - var r = data.slice(p.place, rlen + p.place); - p.place += rlen; - - if (data[p.place++] !== 0x02) { - return false; - } - - var slen = getLength(data, p); - - if (slen === false) { - return false; - } - - if (data.length !== slen + p.place) { - return false; - } - - var s = data.slice(p.place, slen + p.place); - - if (r[0] === 0) { - if (r[1] & 0x80) { - r = r.slice(1); - } else { - // Leading zeroes - return false; - } - } - - if (s[0] === 0) { - if (s[1] & 0x80) { - s = s.slice(1); - } else { - // Leading zeroes - return false; - } - } - - this.r = new BN(r); - this.s = new BN(s); - this.recoveryParam = null; - return true; -}; - -function constructLength(arr, len) { - if (len < 0x80) { - arr.push(len); - return; - } - - var octets = 1 + (Math.log(len) / Math.LN2 >>> 3); - arr.push(octets | 0x80); - - while (--octets) { - arr.push(len >>> (octets << 3) & 0xff); - } - - arr.push(len); -} - -Signature.prototype.toDER = function toDER(enc) { - var r = this.r.toArray(); - var s = this.s.toArray(); // Pad values - - if (r[0] & 0x80) r = [0].concat(r); // Pad values - - if (s[0] & 0x80) s = [0].concat(s); - r = rmPadding(r); - s = rmPadding(s); - - while (!s[0] && !(s[1] & 0x80)) { - s = s.slice(1); - } - - var arr = [0x02]; - constructLength(arr, r.length); - arr = arr.concat(r); - arr.push(0x02); - constructLength(arr, s.length); - var backHalf = arr.concat(s); - var res = [0x30]; - constructLength(res, backHalf.length); - res = res.concat(backHalf); - return utils.encode(res, enc); -}; - -/***/ }), - -/***/ 8318: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var hash = __webpack_require__(3192); - -var curves = __webpack_require__(1478); - -var utils = __webpack_require__(7891); - -var assert = utils.assert; -var parseBytes = utils.parseBytes; - -var KeyPair = __webpack_require__(9371); - -var Signature = __webpack_require__(2214); - -function EDDSA(curve) { - assert(curve === 'ed25519', 'only tested with ed25519 so far'); - if (!(this instanceof EDDSA)) return new EDDSA(curve); - curve = curves[curve].curve; - this.curve = curve; - this.g = curve.g; - this.g.precompute(curve.n.bitLength() + 1); - this.pointClass = curve.point().constructor; - this.encodingLength = Math.ceil(curve.n.bitLength() / 8); - this.hash = hash.sha512; -} - -module.exports = EDDSA; -/** -* @param {Array|String} message - message bytes -* @param {Array|String|KeyPair} secret - secret bytes or a keypair -* @returns {Signature} - signature -*/ - -EDDSA.prototype.sign = function sign(message, secret) { - message = parseBytes(message); - var key = this.keyFromSecret(secret); - var r = this.hashInt(key.messagePrefix(), message); - var R = this.g.mul(r); - var Rencoded = this.encodePoint(R); - var s_ = this.hashInt(Rencoded, key.pubBytes(), message).mul(key.priv()); - var S = r.add(s_).umod(this.curve.n); - return this.makeSignature({ - R: R, - S: S, - Rencoded: Rencoded - }); -}; -/** -* @param {Array} message - message bytes -* @param {Array|String|Signature} sig - sig bytes -* @param {Array|String|Point|KeyPair} pub - public key -* @returns {Boolean} - true if public key matches sig of message -*/ - - -EDDSA.prototype.verify = function verify(message, sig, pub) { - message = parseBytes(message); - sig = this.makeSignature(sig); - var key = this.keyFromPublic(pub); - var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message); - var SG = this.g.mul(sig.S()); - var RplusAh = sig.R().add(key.pub().mul(h)); - return RplusAh.eq(SG); -}; - -EDDSA.prototype.hashInt = function hashInt() { - var hash = this.hash(); - - for (var i = 0; i < arguments.length; i++) { - hash.update(arguments[i]); - } - - return utils.intFromLE(hash.digest()).umod(this.curve.n); -}; - -EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) { - return KeyPair.fromPublic(this, pub); -}; - -EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) { - return KeyPair.fromSecret(this, secret); -}; - -EDDSA.prototype.makeSignature = function makeSignature(sig) { - if (sig instanceof Signature) return sig; - return new Signature(this, sig); -}; -/** -* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2 -* -* EDDSA defines methods for encoding and decoding points and integers. These are -* helper convenience methods, that pass along to utility functions implied -* parameters. -* -*/ - - -EDDSA.prototype.encodePoint = function encodePoint(point) { - var enc = point.getY().toArray('le', this.encodingLength); - enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0; - return enc; -}; - -EDDSA.prototype.decodePoint = function decodePoint(bytes) { - bytes = utils.parseBytes(bytes); - var lastIx = bytes.length - 1; - var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80); - var xIsOdd = (bytes[lastIx] & 0x80) !== 0; - var y = utils.intFromLE(normed); - return this.curve.pointFromY(y, xIsOdd); -}; - -EDDSA.prototype.encodeInt = function encodeInt(num) { - return num.toArray('le', this.encodingLength); -}; - -EDDSA.prototype.decodeInt = function decodeInt(bytes) { - return utils.intFromLE(bytes); -}; - -EDDSA.prototype.isPoint = function isPoint(val) { - return val instanceof this.pointClass; -}; - -/***/ }), - -/***/ 9371: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var utils = __webpack_require__(7891); - -var assert = utils.assert; -var parseBytes = utils.parseBytes; -var cachedProperty = utils.cachedProperty; -/** -* @param {EDDSA} eddsa - instance -* @param {Object} params - public/private key parameters -* -* @param {Array} [params.secret] - secret seed bytes -* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms) -* @param {Array} [params.pub] - public key point encoded as bytes -* -*/ - -function KeyPair(eddsa, params) { - this.eddsa = eddsa; - this._secret = parseBytes(params.secret); - if (eddsa.isPoint(params.pub)) this._pub = params.pub;else this._pubBytes = parseBytes(params.pub); -} - -KeyPair.fromPublic = function fromPublic(eddsa, pub) { - if (pub instanceof KeyPair) return pub; - return new KeyPair(eddsa, { - pub: pub - }); -}; - -KeyPair.fromSecret = function fromSecret(eddsa, secret) { - if (secret instanceof KeyPair) return secret; - return new KeyPair(eddsa, { - secret: secret - }); -}; - -KeyPair.prototype.secret = function secret() { - return this._secret; -}; - -cachedProperty(KeyPair, 'pubBytes', function pubBytes() { - return this.eddsa.encodePoint(this.pub()); -}); -cachedProperty(KeyPair, 'pub', function pub() { - if (this._pubBytes) return this.eddsa.decodePoint(this._pubBytes); - return this.eddsa.g.mul(this.priv()); -}); -cachedProperty(KeyPair, 'privBytes', function privBytes() { - var eddsa = this.eddsa; - var hash = this.hash(); - var lastIx = eddsa.encodingLength - 1; - var a = hash.slice(0, eddsa.encodingLength); - a[0] &= 248; - a[lastIx] &= 127; - a[lastIx] |= 64; - return a; -}); -cachedProperty(KeyPair, 'priv', function priv() { - return this.eddsa.decodeInt(this.privBytes()); -}); -cachedProperty(KeyPair, 'hash', function hash() { - return this.eddsa.hash().update(this.secret()).digest(); -}); -cachedProperty(KeyPair, 'messagePrefix', function messagePrefix() { - return this.hash().slice(this.eddsa.encodingLength); -}); - -KeyPair.prototype.sign = function sign(message) { - assert(this._secret, 'KeyPair can only verify'); - return this.eddsa.sign(message, this); -}; - -KeyPair.prototype.verify = function verify(message, sig) { - return this.eddsa.verify(message, sig, this); -}; - -KeyPair.prototype.getSecret = function getSecret(enc) { - assert(this._secret, 'KeyPair is public only'); - return utils.encode(this.secret(), enc); -}; - -KeyPair.prototype.getPublic = function getPublic(enc) { - return utils.encode(this.pubBytes(), enc); -}; - -module.exports = KeyPair; - -/***/ }), - -/***/ 2214: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var BN = __webpack_require__(6781); - -var utils = __webpack_require__(7891); - -var assert = utils.assert; -var cachedProperty = utils.cachedProperty; -var parseBytes = utils.parseBytes; -/** -* @param {EDDSA} eddsa - eddsa instance -* @param {Array|Object} sig - -* @param {Array|Point} [sig.R] - R point as Point or bytes -* @param {Array|bn} [sig.S] - S scalar as bn or bytes -* @param {Array} [sig.Rencoded] - R point encoded -* @param {Array} [sig.Sencoded] - S scalar encoded -*/ - -function Signature(eddsa, sig) { - this.eddsa = eddsa; - if (_typeof(sig) !== 'object') sig = parseBytes(sig); - - if (Array.isArray(sig)) { - sig = { - R: sig.slice(0, eddsa.encodingLength), - S: sig.slice(eddsa.encodingLength) - }; - } - - assert(sig.R && sig.S, 'Signature without R or S'); - if (eddsa.isPoint(sig.R)) this._R = sig.R; - if (sig.S instanceof BN) this._S = sig.S; - this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded; - this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded; -} - -cachedProperty(Signature, 'S', function S() { - return this.eddsa.decodeInt(this.Sencoded()); -}); -cachedProperty(Signature, 'R', function R() { - return this.eddsa.decodePoint(this.Rencoded()); -}); -cachedProperty(Signature, 'Rencoded', function Rencoded() { - return this.eddsa.encodePoint(this.R()); -}); -cachedProperty(Signature, 'Sencoded', function Sencoded() { - return this.eddsa.encodeInt(this.S()); -}); - -Signature.prototype.toBytes = function toBytes() { - return this.Rencoded().concat(this.Sencoded()); -}; - -Signature.prototype.toHex = function toHex() { - return utils.encode(this.toBytes(), 'hex').toUpperCase(); -}; - -module.exports = Signature; - -/***/ }), - -/***/ 8948: -/***/ ((module) => { - -module.exports = { - doubles: { - step: 4, - points: [['e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a', 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'], ['8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508', '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'], ['175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739', 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'], ['363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640', '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'], ['8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c', '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'], ['723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda', '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'], ['eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa', '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'], ['100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0', 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'], ['e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d', '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'], ['feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d', 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'], ['da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1', '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'], ['53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0', '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'], ['8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047', '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'], ['385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862', '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'], ['6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7', '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'], ['3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd', '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'], ['85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83', '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'], ['948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a', '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'], ['6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8', 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'], ['e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d', '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'], ['e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725', '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'], ['213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754', '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'], ['4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c', '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'], ['fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6', '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'], ['76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39', 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'], ['c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891', '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'], ['d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b', 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'], ['b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03', '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'], ['e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d', 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'], ['a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070', '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'], ['90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4', 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'], ['8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da', '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'], ['e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11', '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'], ['8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e', 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'], ['e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41', '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'], ['b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef', '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'], ['d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8', 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'], ['324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d', '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'], ['4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96', '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'], ['9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd', 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'], ['6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5', '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'], ['a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266', '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'], ['7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71', '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'], ['928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac', 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'], ['85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751', '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'], ['ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e', '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'], ['827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241', 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'], ['eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3', 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'], ['e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f', '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'], ['1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19', 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'], ['146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be', 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'], ['fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9', '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'], ['da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2', '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'], ['a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13', '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'], ['174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c', 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'], ['959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba', '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'], ['d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151', 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'], ['64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073', 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'], ['8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458', '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'], ['13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b', '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'], ['bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366', 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'], ['8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa', '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'], ['8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0', '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'], ['dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787', '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'], ['f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e', 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82']] - }, - naf: { - wnd: 7, - points: [['f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9', '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'], ['2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4', 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'], ['5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc', '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'], ['acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe', 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'], ['774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb', 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'], ['f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8', 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'], ['d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e', '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'], ['defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34', '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'], ['2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c', '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'], ['352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5', '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'], ['2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f', '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'], ['9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714', '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'], ['daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729', 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'], ['c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db', '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'], ['6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4', 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'], ['1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5', 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'], ['605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479', '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'], ['62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d', '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'], ['80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f', '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'], ['7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb', 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'], ['d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9', 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'], ['49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963', '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'], ['77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74', '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'], ['f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530', 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'], ['463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b', '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'], ['f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247', 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'], ['caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1', 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'], ['2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120', '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'], ['7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435', '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'], ['754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18', '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'], ['e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8', '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'], ['186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb', '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'], ['df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f', '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'], ['5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143', 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'], ['290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba', 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'], ['af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45', 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'], ['766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a', '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'], ['59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e', 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'], ['f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8', 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'], ['7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c', '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'], ['948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519', 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'], ['7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab', '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'], ['3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca', 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'], ['d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf', '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'], ['1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610', '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'], ['733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4', 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'], ['15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c', 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'], ['a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940', 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'], ['e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980', 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'], ['311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3', '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'], ['34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf', '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'], ['f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63', '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'], ['d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448', 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'], ['32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf', '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'], ['7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5', '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'], ['ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6', '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'], ['16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5', '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'], ['eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99', 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'], ['78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51', 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'], ['494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5', '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'], ['a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5', '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'], ['c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997', '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'], ['841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881', '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'], ['5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5', '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'], ['36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66', 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'], ['336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726', 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'], ['8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede', '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'], ['1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94', '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'], ['85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31', '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'], ['29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51', 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'], ['a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252', 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'], ['4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5', 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'], ['d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b', '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'], ['ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4', '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'], ['af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f', '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'], ['e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889', '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'], ['591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246', 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'], ['11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984', '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'], ['3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a', 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'], ['cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030', 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'], ['c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197', '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'], ['c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593', 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'], ['a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef', '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'], ['347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38', '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'], ['da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a', '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'], ['c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111', '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'], ['4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502', '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'], ['3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea', 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'], ['cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26', '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'], ['b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986', '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'], ['d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e', '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'], ['48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4', '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'], ['dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda', 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'], ['6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859', 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'], ['e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f', 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'], ['eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c', '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'], ['13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942', 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'], ['ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a', '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'], ['b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80', '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'], ['ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d', '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'], ['8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1', 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'], ['52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63', 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'], ['e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352', '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'], ['7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193', 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'], ['5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00', '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'], ['32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58', 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'], ['e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7', 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'], ['8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8', 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'], ['4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e', '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'], ['3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d', 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'], ['674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b', '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'], ['d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f', 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'], ['30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6', '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'], ['be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297', '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'], ['93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a', '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'], ['b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c', 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'], ['d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52', '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'], ['d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb', 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'], ['463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065', 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'], ['7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917', '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'], ['74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9', 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'], ['30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3', '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'], ['9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57', '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'], ['176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66', 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'], ['75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8', '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'], ['809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721', '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'], ['1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180', '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9']] - } -}; - -/***/ }), - -/***/ 7891: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - - -var utils = exports; - -var BN = __webpack_require__(6781); - -var minAssert = __webpack_require__(1130); - -var minUtils = __webpack_require__(5522); - -utils.assert = minAssert; -utils.toArray = minUtils.toArray; -utils.zero2 = minUtils.zero2; -utils.toHex = minUtils.toHex; -utils.encode = minUtils.encode; // Represent num in a w-NAF form - -function getNAF(num, w, bits) { - var naf = new Array(Math.max(num.bitLength(), bits) + 1); - naf.fill(0); - var ws = 1 << w + 1; - var k = num.clone(); - - for (var i = 0; i < naf.length; i++) { - var z; - var mod = k.andln(ws - 1); - - if (k.isOdd()) { - if (mod > (ws >> 1) - 1) z = (ws >> 1) - mod;else z = mod; - k.isubn(z); - } else { - z = 0; - } - - naf[i] = z; - k.iushrn(1); - } - - return naf; -} - -utils.getNAF = getNAF; // Represent k1, k2 in a Joint Sparse Form - -function getJSF(k1, k2) { - var jsf = [[], []]; - k1 = k1.clone(); - k2 = k2.clone(); - var d1 = 0; - var d2 = 0; - var m8; - - while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) { - // First phase - var m14 = k1.andln(3) + d1 & 3; - var m24 = k2.andln(3) + d2 & 3; - if (m14 === 3) m14 = -1; - if (m24 === 3) m24 = -1; - var u1; - - if ((m14 & 1) === 0) { - u1 = 0; - } else { - m8 = k1.andln(7) + d1 & 7; - if ((m8 === 3 || m8 === 5) && m24 === 2) u1 = -m14;else u1 = m14; - } - - jsf[0].push(u1); - var u2; - - if ((m24 & 1) === 0) { - u2 = 0; - } else { - m8 = k2.andln(7) + d2 & 7; - if ((m8 === 3 || m8 === 5) && m14 === 2) u2 = -m24;else u2 = m24; - } - - jsf[1].push(u2); // Second phase - - if (2 * d1 === u1 + 1) d1 = 1 - d1; - if (2 * d2 === u2 + 1) d2 = 1 - d2; - k1.iushrn(1); - k2.iushrn(1); - } - - return jsf; -} - -utils.getJSF = getJSF; - -function cachedProperty(obj, name, computer) { - var key = '_' + name; - - obj.prototype[name] = function cachedProperty() { - return this[key] !== undefined ? this[key] : this[key] = computer.call(this); - }; -} - -utils.cachedProperty = cachedProperty; - -function parseBytes(bytes) { - return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') : bytes; -} - -utils.parseBytes = parseBytes; - -function intFromLE(bytes) { - return new BN(bytes, 'hex', 'le'); -} - -utils.intFromLE = intFromLE; - -/***/ }), - -/***/ 8028: -/***/ ((module) => { - -"use strict"; -/** - * Code refactored from Mozilla Developer Network: - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign - */ - - -function assign(target, firstSource) { - if (target === undefined || target === null) { - throw new TypeError('Cannot convert first argument to object'); - } - - var to = Object(target); - - for (var i = 1; i < arguments.length; i++) { - var nextSource = arguments[i]; - - if (nextSource === undefined || nextSource === null) { - continue; - } - - var keysArray = Object.keys(Object(nextSource)); - - for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) { - var nextKey = keysArray[nextIndex]; - var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); - - if (desc !== undefined && desc.enumerable) { - to[nextKey] = nextSource[nextKey]; - } - } - } - - return to; -} - -function polyfill() { - if (!Object.assign) { - Object.defineProperty(Object, 'assign', { - enumerable: false, - configurable: true, - writable: true, - value: assign - }); - } -} - -module.exports = { - assign: assign, - polyfill: polyfill -}; - -/***/ }), - -/***/ 9620: -/***/ ((module) => { - -"use strict"; -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var R = (typeof Reflect === "undefined" ? "undefined" : _typeof(Reflect)) === 'object' ? Reflect : null; -var ReflectApply = R && typeof R.apply === 'function' ? R.apply : function ReflectApply(target, receiver, args) { - return Function.prototype.apply.call(target, receiver, args); -}; -var ReflectOwnKeys; - -if (R && typeof R.ownKeys === 'function') { - ReflectOwnKeys = R.ownKeys; -} else if (Object.getOwnPropertySymbols) { - ReflectOwnKeys = function ReflectOwnKeys(target) { - return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target)); - }; -} else { - ReflectOwnKeys = function ReflectOwnKeys(target) { - return Object.getOwnPropertyNames(target); - }; -} - -function ProcessEmitWarning(warning) { - if (console && console.warn) console.warn(warning); -} - -var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) { - return value !== value; -}; - -function EventEmitter() { - EventEmitter.init.call(this); -} - -module.exports = EventEmitter; -module.exports.once = once; // Backwards-compat with node 0.10.x - -EventEmitter.EventEmitter = EventEmitter; -EventEmitter.prototype._events = undefined; -EventEmitter.prototype._eventsCount = 0; -EventEmitter.prototype._maxListeners = undefined; // By default EventEmitters will print a warning if more than 10 listeners are -// added to it. This is a useful default which helps finding memory leaks. - -var defaultMaxListeners = 10; - -function checkListener(listener) { - if (typeof listener !== 'function') { - throw new TypeError('The "listener" argument must be of type Function. Received type ' + _typeof(listener)); - } -} - -Object.defineProperty(EventEmitter, 'defaultMaxListeners', { - enumerable: true, - get: function get() { - return defaultMaxListeners; - }, - set: function set(arg) { - if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) { - throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + '.'); - } - - defaultMaxListeners = arg; - } -}); - -EventEmitter.init = function () { - if (this._events === undefined || this._events === Object.getPrototypeOf(this)._events) { - this._events = Object.create(null); - this._eventsCount = 0; - } - - this._maxListeners = this._maxListeners || undefined; -}; // Obviously not all Emitters should be limited to 10. This function allows -// that to be increased. Set to zero for unlimited. - - -EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) { - if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) { - throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + '.'); - } - - this._maxListeners = n; - return this; -}; - -function _getMaxListeners(that) { - if (that._maxListeners === undefined) return EventEmitter.defaultMaxListeners; - return that._maxListeners; -} - -EventEmitter.prototype.getMaxListeners = function getMaxListeners() { - return _getMaxListeners(this); -}; - -EventEmitter.prototype.emit = function emit(type) { - var args = []; - - for (var i = 1; i < arguments.length; i++) { - args.push(arguments[i]); - } - - var doError = type === 'error'; - var events = this._events; - if (events !== undefined) doError = doError && events.error === undefined;else if (!doError) return false; // If there is no 'error' event listener then throw. - - if (doError) { - var er; - if (args.length > 0) er = args[0]; - - if (er instanceof Error) { - // Note: The comments on the `throw` lines are intentional, they show - // up in Node's output if this results in an unhandled exception. - throw er; // Unhandled 'error' event - } // At least give some kind of context to the user - - - var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : '')); - err.context = er; - throw err; // Unhandled 'error' event - } - - var handler = events[type]; - if (handler === undefined) return false; - - if (typeof handler === 'function') { - ReflectApply(handler, this, args); - } else { - var len = handler.length; - var listeners = arrayClone(handler, len); - - for (var i = 0; i < len; ++i) { - ReflectApply(listeners[i], this, args); - } - } - - return true; -}; - -function _addListener(target, type, listener, prepend) { - var m; - var events; - var existing; - checkListener(listener); - events = target._events; - - if (events === undefined) { - events = target._events = Object.create(null); - target._eventsCount = 0; - } else { - // To avoid recursion in the case that type === "newListener"! Before - // adding it to the listeners, first emit "newListener". - if (events.newListener !== undefined) { - target.emit('newListener', type, listener.listener ? listener.listener : listener); // Re-assign `events` because a newListener handler could have caused the - // this._events to be assigned to a new object - - events = target._events; - } - - existing = events[type]; - } - - if (existing === undefined) { - // Optimize the case of one listener. Don't need the extra array object. - existing = events[type] = listener; - ++target._eventsCount; - } else { - if (typeof existing === 'function') { - // Adding the second element, need to change to array. - existing = events[type] = prepend ? [listener, existing] : [existing, listener]; // If we've already got an array, just append. - } else if (prepend) { - existing.unshift(listener); - } else { - existing.push(listener); - } // Check for listener leak - - - m = _getMaxListeners(target); - - if (m > 0 && existing.length > m && !existing.warned) { - existing.warned = true; // No error code for this since it is a Warning - // eslint-disable-next-line no-restricted-syntax - - var w = new Error('Possible EventEmitter memory leak detected. ' + existing.length + ' ' + String(type) + ' listeners ' + 'added. Use emitter.setMaxListeners() to ' + 'increase limit'); - w.name = 'MaxListenersExceededWarning'; - w.emitter = target; - w.type = type; - w.count = existing.length; - ProcessEmitWarning(w); - } - } - - return target; -} - -EventEmitter.prototype.addListener = function addListener(type, listener) { - return _addListener(this, type, listener, false); -}; - -EventEmitter.prototype.on = EventEmitter.prototype.addListener; - -EventEmitter.prototype.prependListener = function prependListener(type, listener) { - return _addListener(this, type, listener, true); -}; - -function onceWrapper() { - if (!this.fired) { - this.target.removeListener(this.type, this.wrapFn); - this.fired = true; - if (arguments.length === 0) return this.listener.call(this.target); - return this.listener.apply(this.target, arguments); - } -} - -function _onceWrap(target, type, listener) { - var state = { - fired: false, - wrapFn: undefined, - target: target, - type: type, - listener: listener - }; - var wrapped = onceWrapper.bind(state); - wrapped.listener = listener; - state.wrapFn = wrapped; - return wrapped; -} - -EventEmitter.prototype.once = function once(type, listener) { - checkListener(listener); - this.on(type, _onceWrap(this, type, listener)); - return this; -}; - -EventEmitter.prototype.prependOnceListener = function prependOnceListener(type, listener) { - checkListener(listener); - this.prependListener(type, _onceWrap(this, type, listener)); - return this; -}; // Emits a 'removeListener' event if and only if the listener was removed. - - -EventEmitter.prototype.removeListener = function removeListener(type, listener) { - var list, events, position, i, originalListener; - checkListener(listener); - events = this._events; - if (events === undefined) return this; - list = events[type]; - if (list === undefined) return this; - - if (list === listener || list.listener === listener) { - if (--this._eventsCount === 0) this._events = Object.create(null);else { - delete events[type]; - if (events.removeListener) this.emit('removeListener', type, list.listener || listener); - } - } else if (typeof list !== 'function') { - position = -1; - - for (i = list.length - 1; i >= 0; i--) { - if (list[i] === listener || list[i].listener === listener) { - originalListener = list[i].listener; - position = i; - break; - } - } - - if (position < 0) return this; - if (position === 0) list.shift();else { - spliceOne(list, position); - } - if (list.length === 1) events[type] = list[0]; - if (events.removeListener !== undefined) this.emit('removeListener', type, originalListener || listener); - } - - return this; -}; - -EventEmitter.prototype.off = EventEmitter.prototype.removeListener; - -EventEmitter.prototype.removeAllListeners = function removeAllListeners(type) { - var listeners, events, i; - events = this._events; - if (events === undefined) return this; // not listening for removeListener, no need to emit - - if (events.removeListener === undefined) { - if (arguments.length === 0) { - this._events = Object.create(null); - this._eventsCount = 0; - } else if (events[type] !== undefined) { - if (--this._eventsCount === 0) this._events = Object.create(null);else delete events[type]; - } - - return this; - } // emit removeListener for all listeners on all events - - - if (arguments.length === 0) { - var keys = Object.keys(events); - var key; - - for (i = 0; i < keys.length; ++i) { - key = keys[i]; - if (key === 'removeListener') continue; - this.removeAllListeners(key); - } - - this.removeAllListeners('removeListener'); - this._events = Object.create(null); - this._eventsCount = 0; - return this; - } - - listeners = events[type]; - - if (typeof listeners === 'function') { - this.removeListener(type, listeners); - } else if (listeners !== undefined) { - // LIFO order - for (i = listeners.length - 1; i >= 0; i--) { - this.removeListener(type, listeners[i]); - } - } - - return this; -}; - -function _listeners(target, type, unwrap) { - var events = target._events; - if (events === undefined) return []; - var evlistener = events[type]; - if (evlistener === undefined) return []; - if (typeof evlistener === 'function') return unwrap ? [evlistener.listener || evlistener] : [evlistener]; - return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); -} - -EventEmitter.prototype.listeners = function listeners(type) { - return _listeners(this, type, true); -}; - -EventEmitter.prototype.rawListeners = function rawListeners(type) { - return _listeners(this, type, false); -}; - -EventEmitter.listenerCount = function (emitter, type) { - if (typeof emitter.listenerCount === 'function') { - return emitter.listenerCount(type); - } else { - return listenerCount.call(emitter, type); - } -}; - -EventEmitter.prototype.listenerCount = listenerCount; - -function listenerCount(type) { - var events = this._events; - - if (events !== undefined) { - var evlistener = events[type]; - - if (typeof evlistener === 'function') { - return 1; - } else if (evlistener !== undefined) { - return evlistener.length; - } - } - - return 0; -} - -EventEmitter.prototype.eventNames = function eventNames() { - return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : []; -}; - -function arrayClone(arr, n) { - var copy = new Array(n); - - for (var i = 0; i < n; ++i) { - copy[i] = arr[i]; - } - - return copy; -} - -function spliceOne(list, index) { - for (; index + 1 < list.length; index++) { - list[index] = list[index + 1]; - } - - list.pop(); -} - -function unwrapListeners(arr) { - var ret = new Array(arr.length); - - for (var i = 0; i < ret.length; ++i) { - ret[i] = arr[i].listener || arr[i]; - } - - return ret; -} - -function once(emitter, name) { - return new Promise(function (resolve, reject) { - function errorListener(err) { - emitter.removeListener(name, resolver); - reject(err); - } - - function resolver() { - if (typeof emitter.removeListener === 'function') { - emitter.removeListener('error', errorListener); - } - - resolve([].slice.call(arguments)); - } - - ; - eventTargetAgnosticAddListener(emitter, name, resolver, { - once: true - }); - - if (name !== 'error') { - addErrorHandlerIfEventEmitter(emitter, errorListener, { - once: true - }); - } - }); -} - -function addErrorHandlerIfEventEmitter(emitter, handler, flags) { - if (typeof emitter.on === 'function') { - eventTargetAgnosticAddListener(emitter, 'error', handler, flags); - } -} - -function eventTargetAgnosticAddListener(emitter, name, listener, flags) { - if (typeof emitter.on === 'function') { - if (flags.once) { - emitter.once(name, listener); - } else { - emitter.on(name, listener); - } - } else if (typeof emitter.addEventListener === 'function') { - // EventTarget does not have `error` event semantics like Node - // EventEmitters, we do not listen for `error` events here. - emitter.addEventListener(name, function wrapListener(arg) { - // IE does not have builtin `{ once: true }` support so we - // have to do it manually. - if (flags.once) { - emitter.removeEventListener(name, wrapListener); - } - - listener(arg); - }); - } else { - throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + _typeof(emitter)); - } -} - -/***/ }), - -/***/ 1248: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var Buffer = (__webpack_require__(9047).Buffer); - -var MD5 = __webpack_require__(722); -/* eslint-disable camelcase */ - - -function EVP_BytesToKey(password, salt, keyBits, ivLen) { - if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary'); - - if (salt) { - if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary'); - if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length'); - } - - var keyLen = keyBits / 8; - var key = Buffer.alloc(keyLen); - var iv = Buffer.alloc(ivLen || 0); - var tmp = Buffer.alloc(0); - - while (keyLen > 0 || ivLen > 0) { - var hash = new MD5(); - hash.update(tmp); - hash.update(password); - if (salt) hash.update(salt); - tmp = hash.digest(); - var used = 0; - - if (keyLen > 0) { - var keyStart = key.length - keyLen; - used = Math.min(keyLen, tmp.length); - tmp.copy(key, keyStart, 0, used); - keyLen -= used; - } - - if (used < tmp.length && ivLen > 0) { - var ivStart = iv.length - ivLen; - var length = Math.min(ivLen, tmp.length - used); - tmp.copy(iv, ivStart, used, used + length); - ivLen -= length; - } - } - - tmp.fill(0); - return { - key: key, - iv: iv - }; -} - -module.exports = EVP_BytesToKey; - -/***/ }), - -/***/ 5337: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var isCallable = __webpack_require__(8625); - -var toStr = Object.prototype.toString; -var hasOwnProperty = Object.prototype.hasOwnProperty; - -var forEachArray = function forEachArray(array, iterator, receiver) { - for (var i = 0, len = array.length; i < len; i++) { - if (hasOwnProperty.call(array, i)) { - if (receiver == null) { - iterator(array[i], i, array); - } else { - iterator.call(receiver, array[i], i, array); - } - } - } -}; - -var forEachString = function forEachString(string, iterator, receiver) { - for (var i = 0, len = string.length; i < len; i++) { - // no such thing as a sparse string. - if (receiver == null) { - iterator(string.charAt(i), i, string); - } else { - iterator.call(receiver, string.charAt(i), i, string); - } - } -}; - -var forEachObject = function forEachObject(object, iterator, receiver) { - for (var k in object) { - if (hasOwnProperty.call(object, k)) { - if (receiver == null) { - iterator(object[k], k, object); - } else { - iterator.call(receiver, object[k], k, object); - } - } - } -}; - -var forEach = function forEach(list, iterator, thisArg) { - if (!isCallable(iterator)) { - throw new TypeError('iterator must be a function'); - } - - var receiver; - - if (arguments.length >= 3) { - receiver = thisArg; - } - - if (toStr.call(list) === '[object Array]') { - forEachArray(list, iterator, receiver); - } else if (typeof list === 'string') { - forEachString(list, iterator, receiver); - } else { - forEachObject(list, iterator, receiver); - } -}; - -module.exports = forEach; - -/***/ }), - -/***/ 5929: -/***/ ((module) => { - -"use strict"; - -/* eslint no-invalid-this: 1 */ - -var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible '; -var slice = Array.prototype.slice; -var toStr = Object.prototype.toString; -var funcType = '[object Function]'; - -module.exports = function bind(that) { - var target = this; - - if (typeof target !== 'function' || toStr.call(target) !== funcType) { - throw new TypeError(ERROR_MESSAGE + target); - } - - var args = slice.call(arguments, 1); - var bound; - - var binder = function binder() { - if (this instanceof bound) { - var result = target.apply(this, args.concat(slice.call(arguments))); - - if (Object(result) === result) { - return result; - } - - return this; - } else { - return target.apply(that, args.concat(slice.call(arguments))); - } - }; - - var boundLength = Math.max(0, target.length - args.length); - var boundArgs = []; - - for (var i = 0; i < boundLength; i++) { - boundArgs.push('$' + i); - } - - bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder); - - if (target.prototype) { - var Empty = function Empty() {}; - - Empty.prototype = target.prototype; - bound.prototype = new Empty(); - Empty.prototype = null; - } - - return bound; -}; - -/***/ }), - -/***/ 5246: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var implementation = __webpack_require__(5929); - -module.exports = Function.prototype.bind || implementation; - -/***/ }), - -/***/ 6893: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var undefined; -var $SyntaxError = SyntaxError; -var $Function = Function; -var $TypeError = TypeError; // eslint-disable-next-line consistent-return - -var getEvalledConstructor = function getEvalledConstructor(expressionSyntax) { - try { - return $Function('"use strict"; return (' + expressionSyntax + ').constructor;')(); - } catch (e) {} -}; - -var $gOPD = Object.getOwnPropertyDescriptor; - -if ($gOPD) { - try { - $gOPD({}, ''); - } catch (e) { - $gOPD = null; // this is IE 8, which has a broken gOPD - } -} - -var throwTypeError = function throwTypeError() { - throw new $TypeError(); -}; - -var ThrowTypeError = $gOPD ? function () { - try { - // eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties - arguments.callee; // IE 8 does not throw here - - return throwTypeError; - } catch (calleeThrows) { - try { - // IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '') - return $gOPD(arguments, 'callee').get; - } catch (gOPDthrows) { - return throwTypeError; - } - } -}() : throwTypeError; - -var hasSymbols = __webpack_require__(5990)(); - -var getProto = Object.getPrototypeOf || function (x) { - return x.__proto__; -}; // eslint-disable-line no-proto - - -var needsEval = {}; -var TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array); -var INTRINSICS = { - '%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError, - '%Array%': Array, - '%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer, - '%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined, - '%AsyncFromSyncIteratorPrototype%': undefined, - '%AsyncFunction%': needsEval, - '%AsyncGenerator%': needsEval, - '%AsyncGeneratorFunction%': needsEval, - '%AsyncIteratorPrototype%': needsEval, - '%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics, - '%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt, - '%Boolean%': Boolean, - '%DataView%': typeof DataView === 'undefined' ? undefined : DataView, - '%Date%': Date, - '%decodeURI%': decodeURI, - '%decodeURIComponent%': decodeURIComponent, - '%encodeURI%': encodeURI, - '%encodeURIComponent%': encodeURIComponent, - '%Error%': Error, - '%eval%': eval, - // eslint-disable-line no-eval - '%EvalError%': EvalError, - '%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array, - '%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array, - '%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry, - '%Function%': $Function, - '%GeneratorFunction%': needsEval, - '%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array, - '%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array, - '%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array, - '%isFinite%': isFinite, - '%isNaN%': isNaN, - '%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined, - '%JSON%': (typeof JSON === "undefined" ? "undefined" : _typeof(JSON)) === 'object' ? JSON : undefined, - '%Map%': typeof Map === 'undefined' ? undefined : Map, - '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()), - '%Math%': Math, - '%Number%': Number, - '%Object%': Object, - '%parseFloat%': parseFloat, - '%parseInt%': parseInt, - '%Promise%': typeof Promise === 'undefined' ? undefined : Promise, - '%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy, - '%RangeError%': RangeError, - '%ReferenceError%': ReferenceError, - '%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect, - '%RegExp%': RegExp, - '%Set%': typeof Set === 'undefined' ? undefined : Set, - '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()), - '%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer, - '%String%': String, - '%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined, - '%Symbol%': hasSymbols ? Symbol : undefined, - '%SyntaxError%': $SyntaxError, - '%ThrowTypeError%': ThrowTypeError, - '%TypedArray%': TypedArray, - '%TypeError%': $TypeError, - '%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array, - '%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray, - '%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array, - '%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array, - '%URIError%': URIError, - '%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap, - '%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef, - '%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet -}; - -var doEval = function doEval(name) { - var value; - - if (name === '%AsyncFunction%') { - value = getEvalledConstructor('async function () {}'); - } else if (name === '%GeneratorFunction%') { - value = getEvalledConstructor('function* () {}'); - } else if (name === '%AsyncGeneratorFunction%') { - value = getEvalledConstructor('async function* () {}'); - } else if (name === '%AsyncGenerator%') { - var fn = doEval('%AsyncGeneratorFunction%'); - - if (fn) { - value = fn.prototype; - } - } else if (name === '%AsyncIteratorPrototype%') { - var gen = doEval('%AsyncGenerator%'); - - if (gen) { - value = getProto(gen.prototype); - } - } - - INTRINSICS[name] = value; - return value; -}; - -var LEGACY_ALIASES = { - '%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'], - '%ArrayPrototype%': ['Array', 'prototype'], - '%ArrayProto_entries%': ['Array', 'prototype', 'entries'], - '%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'], - '%ArrayProto_keys%': ['Array', 'prototype', 'keys'], - '%ArrayProto_values%': ['Array', 'prototype', 'values'], - '%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'], - '%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'], - '%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'], - '%BooleanPrototype%': ['Boolean', 'prototype'], - '%DataViewPrototype%': ['DataView', 'prototype'], - '%DatePrototype%': ['Date', 'prototype'], - '%ErrorPrototype%': ['Error', 'prototype'], - '%EvalErrorPrototype%': ['EvalError', 'prototype'], - '%Float32ArrayPrototype%': ['Float32Array', 'prototype'], - '%Float64ArrayPrototype%': ['Float64Array', 'prototype'], - '%FunctionPrototype%': ['Function', 'prototype'], - '%Generator%': ['GeneratorFunction', 'prototype'], - '%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'], - '%Int8ArrayPrototype%': ['Int8Array', 'prototype'], - '%Int16ArrayPrototype%': ['Int16Array', 'prototype'], - '%Int32ArrayPrototype%': ['Int32Array', 'prototype'], - '%JSONParse%': ['JSON', 'parse'], - '%JSONStringify%': ['JSON', 'stringify'], - '%MapPrototype%': ['Map', 'prototype'], - '%NumberPrototype%': ['Number', 'prototype'], - '%ObjectPrototype%': ['Object', 'prototype'], - '%ObjProto_toString%': ['Object', 'prototype', 'toString'], - '%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'], - '%PromisePrototype%': ['Promise', 'prototype'], - '%PromiseProto_then%': ['Promise', 'prototype', 'then'], - '%Promise_all%': ['Promise', 'all'], - '%Promise_reject%': ['Promise', 'reject'], - '%Promise_resolve%': ['Promise', 'resolve'], - '%RangeErrorPrototype%': ['RangeError', 'prototype'], - '%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'], - '%RegExpPrototype%': ['RegExp', 'prototype'], - '%SetPrototype%': ['Set', 'prototype'], - '%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'], - '%StringPrototype%': ['String', 'prototype'], - '%SymbolPrototype%': ['Symbol', 'prototype'], - '%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'], - '%TypedArrayPrototype%': ['TypedArray', 'prototype'], - '%TypeErrorPrototype%': ['TypeError', 'prototype'], - '%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'], - '%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'], - '%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'], - '%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'], - '%URIErrorPrototype%': ['URIError', 'prototype'], - '%WeakMapPrototype%': ['WeakMap', 'prototype'], - '%WeakSetPrototype%': ['WeakSet', 'prototype'] -}; - -var bind = __webpack_require__(5246); - -var hasOwn = __webpack_require__(7751); - -var $concat = bind.call(Function.call, Array.prototype.concat); -var $spliceApply = bind.call(Function.apply, Array.prototype.splice); -var $replace = bind.call(Function.call, String.prototype.replace); -var $strSlice = bind.call(Function.call, String.prototype.slice); -var $exec = bind.call(Function.call, RegExp.prototype.exec); -/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */ - -var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g; -var reEscapeChar = /\\(\\)?/g; -/** Used to match backslashes in property paths. */ - -var stringToPath = function stringToPath(string) { - var first = $strSlice(string, 0, 1); - var last = $strSlice(string, -1); - - if (first === '%' && last !== '%') { - throw new $SyntaxError('invalid intrinsic syntax, expected closing `%`'); - } else if (last === '%' && first !== '%') { - throw new $SyntaxError('invalid intrinsic syntax, expected opening `%`'); - } - - var result = []; - $replace(string, rePropName, function (match, number, quote, subString) { - result[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match; - }); - return result; -}; -/* end adaptation */ - - -var getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) { - var intrinsicName = name; - var alias; - - if (hasOwn(LEGACY_ALIASES, intrinsicName)) { - alias = LEGACY_ALIASES[intrinsicName]; - intrinsicName = '%' + alias[0] + '%'; - } - - if (hasOwn(INTRINSICS, intrinsicName)) { - var value = INTRINSICS[intrinsicName]; - - if (value === needsEval) { - value = doEval(intrinsicName); - } - - if (typeof value === 'undefined' && !allowMissing) { - throw new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!'); - } - - return { - alias: alias, - name: intrinsicName, - value: value - }; - } - - throw new $SyntaxError('intrinsic ' + name + ' does not exist!'); -}; - -module.exports = function GetIntrinsic(name, allowMissing) { - if (typeof name !== 'string' || name.length === 0) { - throw new $TypeError('intrinsic name must be a non-empty string'); - } - - if (arguments.length > 1 && typeof allowMissing !== 'boolean') { - throw new $TypeError('"allowMissing" argument must be a boolean'); - } - - if ($exec(/^%?[^%]*%?$/g, name) === null) { - throw new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name'); - } - - var parts = stringToPath(name); - var intrinsicBaseName = parts.length > 0 ? parts[0] : ''; - var intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing); - var intrinsicRealName = intrinsic.name; - var value = intrinsic.value; - var skipFurtherCaching = false; - var alias = intrinsic.alias; - - if (alias) { - intrinsicBaseName = alias[0]; - $spliceApply(parts, $concat([0, 1], alias)); - } - - for (var i = 1, isOwn = true; i < parts.length; i += 1) { - var part = parts[i]; - var first = $strSlice(part, 0, 1); - var last = $strSlice(part, -1); - - if ((first === '"' || first === "'" || first === '`' || last === '"' || last === "'" || last === '`') && first !== last) { - throw new $SyntaxError('property names with quotes must have matching quotes'); - } - - if (part === 'constructor' || !isOwn) { - skipFurtherCaching = true; - } - - intrinsicBaseName += '.' + part; - intrinsicRealName = '%' + intrinsicBaseName + '%'; - - if (hasOwn(INTRINSICS, intrinsicRealName)) { - value = INTRINSICS[intrinsicRealName]; - } else if (value != null) { - if (!(part in value)) { - if (!allowMissing) { - throw new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.'); - } - - return void undefined; - } - - if ($gOPD && i + 1 >= parts.length) { - var desc = $gOPD(value, part); - isOwn = !!desc; // By convention, when a data property is converted to an accessor - // property to emulate a data property that does not suffer from - // the override mistake, that accessor's getter is marked with - // an `originalValue` property. Here, when we detect this, we - // uphold the illusion by pretending to see that original data - // property, i.e., returning the value rather than the getter - // itself. - - if (isOwn && 'get' in desc && !('originalValue' in desc.get)) { - value = desc.get; - } else { - value = value[part]; - } - } else { - isOwn = hasOwn(value, part); - value = value[part]; - } - - if (isOwn && !skipFurtherCaching) { - INTRINSICS[intrinsicRealName] = value; - } - } - } - - return value; -}; - -/***/ }), - -/***/ 2579: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var GetIntrinsic = __webpack_require__(6893); - -var $defineProperty = GetIntrinsic('%Object.defineProperty%', true); - -var hasPropertyDescriptors = function hasPropertyDescriptors() { - if ($defineProperty) { - try { - $defineProperty({}, 'a', { - value: 1 - }); - return true; - } catch (e) { - // IE 8 has a broken defineProperty - return false; - } - } - - return false; -}; - -hasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() { - // node v0.6 has a bug where array lengths can be Set but not Defined - if (!hasPropertyDescriptors()) { - return null; - } - - try { - return $defineProperty([], 'length', { - value: 1 - }).length !== 1; - } catch (e) { - // In Firefox 4-22, defining length on an array throws an exception. - return true; - } -}; - -module.exports = hasPropertyDescriptors; - -/***/ }), - -/***/ 5990: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var origSymbol = typeof Symbol !== 'undefined' && Symbol; - -var hasSymbolSham = __webpack_require__(3031); - -module.exports = function hasNativeSymbols() { - if (typeof origSymbol !== 'function') { - return false; - } - - if (typeof Symbol !== 'function') { - return false; - } - - if (_typeof(origSymbol('foo')) !== 'symbol') { - return false; - } - - if (_typeof(Symbol('bar')) !== 'symbol') { - return false; - } - - return hasSymbolSham(); -}; - -/***/ }), - -/***/ 3031: -/***/ ((module) => { - -"use strict"; - -/* eslint complexity: [2, 18], max-statements: [2, 33] */ - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -module.exports = function hasSymbols() { - if (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { - return false; - } - - if (_typeof(Symbol.iterator) === 'symbol') { - return true; - } - - var obj = {}; - var sym = Symbol('test'); - var symObj = Object(sym); - - if (typeof sym === 'string') { - return false; - } - - if (Object.prototype.toString.call(sym) !== '[object Symbol]') { - return false; - } - - if (Object.prototype.toString.call(symObj) !== '[object Symbol]') { - return false; - } // temp disabled per https://github.com/ljharb/object.assign/issues/17 - // if (sym instanceof Symbol) { return false; } - // temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4 - // if (!(symObj instanceof Symbol)) { return false; } - // if (typeof Symbol.prototype.toString !== 'function') { return false; } - // if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; } - - - var symVal = 42; - obj[sym] = symVal; - - for (sym in obj) { - return false; - } // eslint-disable-line no-restricted-syntax, no-unreachable-loop - - - if (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { - return false; - } - - if (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { - return false; - } - - var syms = Object.getOwnPropertySymbols(obj); - - if (syms.length !== 1 || syms[0] !== sym) { - return false; - } - - if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { - return false; - } - - if (typeof Object.getOwnPropertyDescriptor === 'function') { - var descriptor = Object.getOwnPropertyDescriptor(obj, sym); - - if (descriptor.value !== symVal || descriptor.enumerable !== true) { - return false; - } - } - - return true; -}; - -/***/ }), - -/***/ 5994: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var hasSymbols = __webpack_require__(3031); - -module.exports = function hasToStringTagShams() { - return hasSymbols() && !!Symbol.toStringTag; -}; - -/***/ }), - -/***/ 7751: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var bind = __webpack_require__(5246); - -module.exports = bind.call(Function.call, Object.prototype.hasOwnProperty); - -/***/ }), - -/***/ 5125: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var Buffer = (__webpack_require__(1066).Buffer); - -var Transform = (__webpack_require__(8237).Transform); - -var inherits = __webpack_require__(376); - -function throwIfNotStringOrBuffer(val, prefix) { - if (!Buffer.isBuffer(val) && typeof val !== 'string') { - throw new TypeError(prefix + ' must be a string or a buffer'); - } -} - -function HashBase(blockSize) { - Transform.call(this); - this._block = Buffer.allocUnsafe(blockSize); - this._blockSize = blockSize; - this._blockOffset = 0; - this._length = [0, 0, 0, 0]; - this._finalized = false; -} - -inherits(HashBase, Transform); - -HashBase.prototype._transform = function (chunk, encoding, callback) { - var error = null; - - try { - this.update(chunk, encoding); - } catch (err) { - error = err; - } - - callback(error); -}; - -HashBase.prototype._flush = function (callback) { - var error = null; - - try { - this.push(this.digest()); - } catch (err) { - error = err; - } - - callback(error); -}; - -HashBase.prototype.update = function (data, encoding) { - throwIfNotStringOrBuffer(data, 'Data'); - if (this._finalized) throw new Error('Digest already called'); - if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding); // consume data - - var block = this._block; - var offset = 0; - - while (this._blockOffset + data.length - offset >= this._blockSize) { - for (var i = this._blockOffset; i < this._blockSize;) { - block[i++] = data[offset++]; - } - - this._update(); - - this._blockOffset = 0; - } - - while (offset < data.length) { - block[this._blockOffset++] = data[offset++]; - } // update length - - - for (var j = 0, carry = data.length * 8; carry > 0; ++j) { - this._length[j] += carry; - carry = this._length[j] / 0x0100000000 | 0; - if (carry > 0) this._length[j] -= 0x0100000000 * carry; - } - - return this; -}; - -HashBase.prototype._update = function () { - throw new Error('_update is not implemented'); -}; - -HashBase.prototype.digest = function (encoding) { - if (this._finalized) throw new Error('Digest already called'); - this._finalized = true; - - var digest = this._digest(); - - if (encoding !== undefined) digest = digest.toString(encoding); // reset state - - this._block.fill(0); - - this._blockOffset = 0; - - for (var i = 0; i < 4; ++i) { - this._length[i] = 0; - } - - return digest; -}; - -HashBase.prototype._digest = function () { - throw new Error('_digest is not implemented'); -}; - -module.exports = HashBase; - -/***/ }), - -/***/ 1066: -/***/ ((module, exports, __webpack_require__) => { - -/*! safe-buffer. MIT License. Feross Aboukhadijeh */ - -/* eslint-disable node/no-deprecated-api */ -var buffer = __webpack_require__(365); - -var Buffer = buffer.Buffer; // alternative to using Object.keys for old browsers - -function copyProps(src, dst) { - for (var key in src) { - dst[key] = src[key]; - } -} - -if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { - module.exports = buffer; -} else { - // Copy properties from require('buffer') - copyProps(buffer, exports); - exports.Buffer = SafeBuffer; -} - -function SafeBuffer(arg, encodingOrOffset, length) { - return Buffer(arg, encodingOrOffset, length); -} - -SafeBuffer.prototype = Object.create(Buffer.prototype); // Copy static methods from Buffer - -copyProps(Buffer, SafeBuffer); - -SafeBuffer.from = function (arg, encodingOrOffset, length) { - if (typeof arg === 'number') { - throw new TypeError('Argument must not be a number'); - } - - return Buffer(arg, encodingOrOffset, length); -}; - -SafeBuffer.alloc = function (size, fill, encoding) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number'); - } - - var buf = Buffer(size); - - if (fill !== undefined) { - if (typeof encoding === 'string') { - buf.fill(fill, encoding); - } else { - buf.fill(fill); - } - } else { - buf.fill(0); - } - - return buf; -}; - -SafeBuffer.allocUnsafe = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number'); - } - - return Buffer(size); -}; - -SafeBuffer.allocUnsafeSlow = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number'); - } - - return buffer.SlowBuffer(size); -}; - -/***/ }), - -/***/ 3192: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -var hash = exports; -hash.utils = __webpack_require__(8244); -hash.common = __webpack_require__(5386); -hash.sha = __webpack_require__(2507); -hash.ripemd = __webpack_require__(9993); -hash.hmac = __webpack_require__(8534); // Proxy hash functions to the main object - -hash.sha1 = hash.sha.sha1; -hash.sha256 = hash.sha.sha256; -hash.sha224 = hash.sha.sha224; -hash.sha384 = hash.sha.sha384; -hash.sha512 = hash.sha.sha512; -hash.ripemd160 = hash.ripemd.ripemd160; - -/***/ }), - -/***/ 5386: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - - -var utils = __webpack_require__(8244); - -var assert = __webpack_require__(1130); - -function BlockHash() { - this.pending = null; - this.pendingTotal = 0; - this.blockSize = this.constructor.blockSize; - this.outSize = this.constructor.outSize; - this.hmacStrength = this.constructor.hmacStrength; - this.padLength = this.constructor.padLength / 8; - this.endian = 'big'; - this._delta8 = this.blockSize / 8; - this._delta32 = this.blockSize / 32; -} - -exports.BlockHash = BlockHash; - -BlockHash.prototype.update = function update(msg, enc) { - // Convert message to array, pad it, and join into 32bit blocks - msg = utils.toArray(msg, enc); - if (!this.pending) this.pending = msg;else this.pending = this.pending.concat(msg); - this.pendingTotal += msg.length; // Enough data, try updating - - if (this.pending.length >= this._delta8) { - msg = this.pending; // Process pending data in blocks - - var r = msg.length % this._delta8; - this.pending = msg.slice(msg.length - r, msg.length); - if (this.pending.length === 0) this.pending = null; - msg = utils.join32(msg, 0, msg.length - r, this.endian); - - for (var i = 0; i < msg.length; i += this._delta32) { - this._update(msg, i, i + this._delta32); - } - } - - return this; -}; - -BlockHash.prototype.digest = function digest(enc) { - this.update(this._pad()); - assert(this.pending === null); - return this._digest(enc); -}; - -BlockHash.prototype._pad = function pad() { - var len = this.pendingTotal; - var bytes = this._delta8; - var k = bytes - (len + this.padLength) % bytes; - var res = new Array(k + this.padLength); - res[0] = 0x80; - - for (var i = 1; i < k; i++) { - res[i] = 0; - } // Append length - - - len <<= 3; - - if (this.endian === 'big') { - for (var t = 8; t < this.padLength; t++) { - res[i++] = 0; - } - - res[i++] = 0; - res[i++] = 0; - res[i++] = 0; - res[i++] = 0; - res[i++] = len >>> 24 & 0xff; - res[i++] = len >>> 16 & 0xff; - res[i++] = len >>> 8 & 0xff; - res[i++] = len & 0xff; - } else { - res[i++] = len & 0xff; - res[i++] = len >>> 8 & 0xff; - res[i++] = len >>> 16 & 0xff; - res[i++] = len >>> 24 & 0xff; - res[i++] = 0; - res[i++] = 0; - res[i++] = 0; - res[i++] = 0; - - for (t = 8; t < this.padLength; t++) { - res[i++] = 0; - } - } - - return res; -}; - -/***/ }), - -/***/ 8534: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var utils = __webpack_require__(8244); - -var assert = __webpack_require__(1130); - -function Hmac(hash, key, enc) { - if (!(this instanceof Hmac)) return new Hmac(hash, key, enc); - this.Hash = hash; - this.blockSize = hash.blockSize / 8; - this.outSize = hash.outSize / 8; - this.inner = null; - this.outer = null; - - this._init(utils.toArray(key, enc)); -} - -module.exports = Hmac; - -Hmac.prototype._init = function init(key) { - // Shorten key, if needed - if (key.length > this.blockSize) key = new this.Hash().update(key).digest(); - assert(key.length <= this.blockSize); // Add padding to key - - for (var i = key.length; i < this.blockSize; i++) { - key.push(0); - } - - for (i = 0; i < key.length; i++) { - key[i] ^= 0x36; - } - - this.inner = new this.Hash().update(key); // 0x36 ^ 0x5c = 0x6a - - for (i = 0; i < key.length; i++) { - key[i] ^= 0x6a; - } - - this.outer = new this.Hash().update(key); -}; - -Hmac.prototype.update = function update(msg, enc) { - this.inner.update(msg, enc); - return this; -}; - -Hmac.prototype.digest = function digest(enc) { - this.outer.update(this.inner.digest()); - return this.outer.digest(enc); -}; - -/***/ }), - -/***/ 9993: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - - -var utils = __webpack_require__(8244); - -var common = __webpack_require__(5386); - -var rotl32 = utils.rotl32; -var sum32 = utils.sum32; -var sum32_3 = utils.sum32_3; -var sum32_4 = utils.sum32_4; -var BlockHash = common.BlockHash; - -function RIPEMD160() { - if (!(this instanceof RIPEMD160)) return new RIPEMD160(); - BlockHash.call(this); - this.h = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0]; - this.endian = 'little'; -} - -utils.inherits(RIPEMD160, BlockHash); -exports.ripemd160 = RIPEMD160; -RIPEMD160.blockSize = 512; -RIPEMD160.outSize = 160; -RIPEMD160.hmacStrength = 192; -RIPEMD160.padLength = 64; - -RIPEMD160.prototype._update = function update(msg, start) { - var A = this.h[0]; - var B = this.h[1]; - var C = this.h[2]; - var D = this.h[3]; - var E = this.h[4]; - var Ah = A; - var Bh = B; - var Ch = C; - var Dh = D; - var Eh = E; - - for (var j = 0; j < 80; j++) { - var T = sum32(rotl32(sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)), s[j]), E); - A = E; - E = D; - D = rotl32(C, 10); - C = B; - B = T; - T = sum32(rotl32(sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)), sh[j]), Eh); - Ah = Eh; - Eh = Dh; - Dh = rotl32(Ch, 10); - Ch = Bh; - Bh = T; - } - - T = sum32_3(this.h[1], C, Dh); - this.h[1] = sum32_3(this.h[2], D, Eh); - this.h[2] = sum32_3(this.h[3], E, Ah); - this.h[3] = sum32_3(this.h[4], A, Bh); - this.h[4] = sum32_3(this.h[0], B, Ch); - this.h[0] = T; -}; - -RIPEMD160.prototype._digest = function digest(enc) { - if (enc === 'hex') return utils.toHex32(this.h, 'little');else return utils.split32(this.h, 'little'); -}; - -function f(j, x, y, z) { - if (j <= 15) return x ^ y ^ z;else if (j <= 31) return x & y | ~x & z;else if (j <= 47) return (x | ~y) ^ z;else if (j <= 63) return x & z | y & ~z;else return x ^ (y | ~z); -} - -function K(j) { - if (j <= 15) return 0x00000000;else if (j <= 31) return 0x5a827999;else if (j <= 47) return 0x6ed9eba1;else if (j <= 63) return 0x8f1bbcdc;else return 0xa953fd4e; -} - -function Kh(j) { - if (j <= 15) return 0x50a28be6;else if (j <= 31) return 0x5c4dd124;else if (j <= 47) return 0x6d703ef3;else if (j <= 63) return 0x7a6d76e9;else return 0x00000000; -} - -var r = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]; -var rh = [5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]; -var s = [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]; -var sh = [8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]; - -/***/ }), - -/***/ 2507: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - - -exports.sha1 = __webpack_require__(9382); -exports.sha224 = __webpack_require__(5123); -exports.sha256 = __webpack_require__(4032); -exports.sha384 = __webpack_require__(1364); -exports.sha512 = __webpack_require__(2161); - -/***/ }), - -/***/ 9382: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var utils = __webpack_require__(8244); - -var common = __webpack_require__(5386); - -var shaCommon = __webpack_require__(8355); - -var rotl32 = utils.rotl32; -var sum32 = utils.sum32; -var sum32_5 = utils.sum32_5; -var ft_1 = shaCommon.ft_1; -var BlockHash = common.BlockHash; -var sha1_K = [0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xCA62C1D6]; - -function SHA1() { - if (!(this instanceof SHA1)) return new SHA1(); - BlockHash.call(this); - this.h = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0]; - this.W = new Array(80); -} - -utils.inherits(SHA1, BlockHash); -module.exports = SHA1; -SHA1.blockSize = 512; -SHA1.outSize = 160; -SHA1.hmacStrength = 80; -SHA1.padLength = 64; - -SHA1.prototype._update = function _update(msg, start) { - var W = this.W; - - for (var i = 0; i < 16; i++) { - W[i] = msg[start + i]; - } - - for (; i < W.length; i++) { - W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1); - } - - var a = this.h[0]; - var b = this.h[1]; - var c = this.h[2]; - var d = this.h[3]; - var e = this.h[4]; - - for (i = 0; i < W.length; i++) { - var s = ~~(i / 20); - var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]); - e = d; - d = c; - c = rotl32(b, 30); - b = a; - a = t; - } - - this.h[0] = sum32(this.h[0], a); - this.h[1] = sum32(this.h[1], b); - this.h[2] = sum32(this.h[2], c); - this.h[3] = sum32(this.h[3], d); - this.h[4] = sum32(this.h[4], e); -}; - -SHA1.prototype._digest = function digest(enc) { - if (enc === 'hex') return utils.toHex32(this.h, 'big');else return utils.split32(this.h, 'big'); -}; - -/***/ }), - -/***/ 5123: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var utils = __webpack_require__(8244); - -var SHA256 = __webpack_require__(4032); - -function SHA224() { - if (!(this instanceof SHA224)) return new SHA224(); - SHA256.call(this); - this.h = [0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4]; -} - -utils.inherits(SHA224, SHA256); -module.exports = SHA224; -SHA224.blockSize = 512; -SHA224.outSize = 224; -SHA224.hmacStrength = 192; -SHA224.padLength = 64; - -SHA224.prototype._digest = function digest(enc) { - // Just truncate output - if (enc === 'hex') return utils.toHex32(this.h.slice(0, 7), 'big');else return utils.split32(this.h.slice(0, 7), 'big'); -}; - -/***/ }), - -/***/ 4032: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var utils = __webpack_require__(8244); - -var common = __webpack_require__(5386); - -var shaCommon = __webpack_require__(8355); - -var assert = __webpack_require__(1130); - -var sum32 = utils.sum32; -var sum32_4 = utils.sum32_4; -var sum32_5 = utils.sum32_5; -var ch32 = shaCommon.ch32; -var maj32 = shaCommon.maj32; -var s0_256 = shaCommon.s0_256; -var s1_256 = shaCommon.s1_256; -var g0_256 = shaCommon.g0_256; -var g1_256 = shaCommon.g1_256; -var BlockHash = common.BlockHash; -var sha256_K = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2]; - -function SHA256() { - if (!(this instanceof SHA256)) return new SHA256(); - BlockHash.call(this); - this.h = [0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19]; - this.k = sha256_K; - this.W = new Array(64); -} - -utils.inherits(SHA256, BlockHash); -module.exports = SHA256; -SHA256.blockSize = 512; -SHA256.outSize = 256; -SHA256.hmacStrength = 192; -SHA256.padLength = 64; - -SHA256.prototype._update = function _update(msg, start) { - var W = this.W; - - for (var i = 0; i < 16; i++) { - W[i] = msg[start + i]; - } - - for (; i < W.length; i++) { - W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]); - } - - var a = this.h[0]; - var b = this.h[1]; - var c = this.h[2]; - var d = this.h[3]; - var e = this.h[4]; - var f = this.h[5]; - var g = this.h[6]; - var h = this.h[7]; - assert(this.k.length === W.length); - - for (i = 0; i < W.length; i++) { - var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]); - var T2 = sum32(s0_256(a), maj32(a, b, c)); - h = g; - g = f; - f = e; - e = sum32(d, T1); - d = c; - c = b; - b = a; - a = sum32(T1, T2); - } - - this.h[0] = sum32(this.h[0], a); - this.h[1] = sum32(this.h[1], b); - this.h[2] = sum32(this.h[2], c); - this.h[3] = sum32(this.h[3], d); - this.h[4] = sum32(this.h[4], e); - this.h[5] = sum32(this.h[5], f); - this.h[6] = sum32(this.h[6], g); - this.h[7] = sum32(this.h[7], h); -}; - -SHA256.prototype._digest = function digest(enc) { - if (enc === 'hex') return utils.toHex32(this.h, 'big');else return utils.split32(this.h, 'big'); -}; - -/***/ }), - -/***/ 1364: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var utils = __webpack_require__(8244); - -var SHA512 = __webpack_require__(2161); - -function SHA384() { - if (!(this instanceof SHA384)) return new SHA384(); - SHA512.call(this); - this.h = [0xcbbb9d5d, 0xc1059ed8, 0x629a292a, 0x367cd507, 0x9159015a, 0x3070dd17, 0x152fecd8, 0xf70e5939, 0x67332667, 0xffc00b31, 0x8eb44a87, 0x68581511, 0xdb0c2e0d, 0x64f98fa7, 0x47b5481d, 0xbefa4fa4]; -} - -utils.inherits(SHA384, SHA512); -module.exports = SHA384; -SHA384.blockSize = 1024; -SHA384.outSize = 384; -SHA384.hmacStrength = 192; -SHA384.padLength = 128; - -SHA384.prototype._digest = function digest(enc) { - if (enc === 'hex') return utils.toHex32(this.h.slice(0, 12), 'big');else return utils.split32(this.h.slice(0, 12), 'big'); -}; - -/***/ }), - -/***/ 2161: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var utils = __webpack_require__(8244); - -var common = __webpack_require__(5386); - -var assert = __webpack_require__(1130); - -var rotr64_hi = utils.rotr64_hi; -var rotr64_lo = utils.rotr64_lo; -var shr64_hi = utils.shr64_hi; -var shr64_lo = utils.shr64_lo; -var sum64 = utils.sum64; -var sum64_hi = utils.sum64_hi; -var sum64_lo = utils.sum64_lo; -var sum64_4_hi = utils.sum64_4_hi; -var sum64_4_lo = utils.sum64_4_lo; -var sum64_5_hi = utils.sum64_5_hi; -var sum64_5_lo = utils.sum64_5_lo; -var BlockHash = common.BlockHash; -var sha512_K = [0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817]; - -function SHA512() { - if (!(this instanceof SHA512)) return new SHA512(); - BlockHash.call(this); - this.h = [0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1, 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179]; - this.k = sha512_K; - this.W = new Array(160); -} - -utils.inherits(SHA512, BlockHash); -module.exports = SHA512; -SHA512.blockSize = 1024; -SHA512.outSize = 512; -SHA512.hmacStrength = 192; -SHA512.padLength = 128; - -SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) { - var W = this.W; // 32 x 32bit words - - for (var i = 0; i < 32; i++) { - W[i] = msg[start + i]; - } - - for (; i < W.length; i += 2) { - var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2 - - var c0_lo = g1_512_lo(W[i - 4], W[i - 3]); - var c1_hi = W[i - 14]; // i - 7 - - var c1_lo = W[i - 13]; - var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15 - - var c2_lo = g0_512_lo(W[i - 30], W[i - 29]); - var c3_hi = W[i - 32]; // i - 16 - - var c3_lo = W[i - 31]; - W[i] = sum64_4_hi(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo); - W[i + 1] = sum64_4_lo(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo); - } -}; - -SHA512.prototype._update = function _update(msg, start) { - this._prepareBlock(msg, start); - - var W = this.W; - var ah = this.h[0]; - var al = this.h[1]; - var bh = this.h[2]; - var bl = this.h[3]; - var ch = this.h[4]; - var cl = this.h[5]; - var dh = this.h[6]; - var dl = this.h[7]; - var eh = this.h[8]; - var el = this.h[9]; - var fh = this.h[10]; - var fl = this.h[11]; - var gh = this.h[12]; - var gl = this.h[13]; - var hh = this.h[14]; - var hl = this.h[15]; - assert(this.k.length === W.length); - - for (var i = 0; i < W.length; i += 2) { - var c0_hi = hh; - var c0_lo = hl; - var c1_hi = s1_512_hi(eh, el); - var c1_lo = s1_512_lo(eh, el); - var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl); - var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl); - var c3_hi = this.k[i]; - var c3_lo = this.k[i + 1]; - var c4_hi = W[i]; - var c4_lo = W[i + 1]; - var T1_hi = sum64_5_hi(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo, c4_hi, c4_lo); - var T1_lo = sum64_5_lo(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo, c4_hi, c4_lo); - c0_hi = s0_512_hi(ah, al); - c0_lo = s0_512_lo(ah, al); - c1_hi = maj64_hi(ah, al, bh, bl, ch, cl); - c1_lo = maj64_lo(ah, al, bh, bl, ch, cl); - var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo); - var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo); - hh = gh; - hl = gl; - gh = fh; - gl = fl; - fh = eh; - fl = el; - eh = sum64_hi(dh, dl, T1_hi, T1_lo); - el = sum64_lo(dl, dl, T1_hi, T1_lo); - dh = ch; - dl = cl; - ch = bh; - cl = bl; - bh = ah; - bl = al; - ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo); - al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo); - } - - sum64(this.h, 0, ah, al); - sum64(this.h, 2, bh, bl); - sum64(this.h, 4, ch, cl); - sum64(this.h, 6, dh, dl); - sum64(this.h, 8, eh, el); - sum64(this.h, 10, fh, fl); - sum64(this.h, 12, gh, gl); - sum64(this.h, 14, hh, hl); -}; - -SHA512.prototype._digest = function digest(enc) { - if (enc === 'hex') return utils.toHex32(this.h, 'big');else return utils.split32(this.h, 'big'); -}; - -function ch64_hi(xh, xl, yh, yl, zh) { - var r = xh & yh ^ ~xh & zh; - if (r < 0) r += 0x100000000; - return r; -} - -function ch64_lo(xh, xl, yh, yl, zh, zl) { - var r = xl & yl ^ ~xl & zl; - if (r < 0) r += 0x100000000; - return r; -} - -function maj64_hi(xh, xl, yh, yl, zh) { - var r = xh & yh ^ xh & zh ^ yh & zh; - if (r < 0) r += 0x100000000; - return r; -} - -function maj64_lo(xh, xl, yh, yl, zh, zl) { - var r = xl & yl ^ xl & zl ^ yl & zl; - if (r < 0) r += 0x100000000; - return r; -} - -function s0_512_hi(xh, xl) { - var c0_hi = rotr64_hi(xh, xl, 28); - var c1_hi = rotr64_hi(xl, xh, 2); // 34 - - var c2_hi = rotr64_hi(xl, xh, 7); // 39 - - var r = c0_hi ^ c1_hi ^ c2_hi; - if (r < 0) r += 0x100000000; - return r; -} - -function s0_512_lo(xh, xl) { - var c0_lo = rotr64_lo(xh, xl, 28); - var c1_lo = rotr64_lo(xl, xh, 2); // 34 - - var c2_lo = rotr64_lo(xl, xh, 7); // 39 - - var r = c0_lo ^ c1_lo ^ c2_lo; - if (r < 0) r += 0x100000000; - return r; -} - -function s1_512_hi(xh, xl) { - var c0_hi = rotr64_hi(xh, xl, 14); - var c1_hi = rotr64_hi(xh, xl, 18); - var c2_hi = rotr64_hi(xl, xh, 9); // 41 - - var r = c0_hi ^ c1_hi ^ c2_hi; - if (r < 0) r += 0x100000000; - return r; -} - -function s1_512_lo(xh, xl) { - var c0_lo = rotr64_lo(xh, xl, 14); - var c1_lo = rotr64_lo(xh, xl, 18); - var c2_lo = rotr64_lo(xl, xh, 9); // 41 - - var r = c0_lo ^ c1_lo ^ c2_lo; - if (r < 0) r += 0x100000000; - return r; -} - -function g0_512_hi(xh, xl) { - var c0_hi = rotr64_hi(xh, xl, 1); - var c1_hi = rotr64_hi(xh, xl, 8); - var c2_hi = shr64_hi(xh, xl, 7); - var r = c0_hi ^ c1_hi ^ c2_hi; - if (r < 0) r += 0x100000000; - return r; -} - -function g0_512_lo(xh, xl) { - var c0_lo = rotr64_lo(xh, xl, 1); - var c1_lo = rotr64_lo(xh, xl, 8); - var c2_lo = shr64_lo(xh, xl, 7); - var r = c0_lo ^ c1_lo ^ c2_lo; - if (r < 0) r += 0x100000000; - return r; -} - -function g1_512_hi(xh, xl) { - var c0_hi = rotr64_hi(xh, xl, 19); - var c1_hi = rotr64_hi(xl, xh, 29); // 61 - - var c2_hi = shr64_hi(xh, xl, 6); - var r = c0_hi ^ c1_hi ^ c2_hi; - if (r < 0) r += 0x100000000; - return r; -} - -function g1_512_lo(xh, xl) { - var c0_lo = rotr64_lo(xh, xl, 19); - var c1_lo = rotr64_lo(xl, xh, 29); // 61 - - var c2_lo = shr64_lo(xh, xl, 6); - var r = c0_lo ^ c1_lo ^ c2_lo; - if (r < 0) r += 0x100000000; - return r; -} - -/***/ }), - -/***/ 8355: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - - -var utils = __webpack_require__(8244); - -var rotr32 = utils.rotr32; - -function ft_1(s, x, y, z) { - if (s === 0) return ch32(x, y, z); - if (s === 1 || s === 3) return p32(x, y, z); - if (s === 2) return maj32(x, y, z); -} - -exports.ft_1 = ft_1; - -function ch32(x, y, z) { - return x & y ^ ~x & z; -} - -exports.ch32 = ch32; - -function maj32(x, y, z) { - return x & y ^ x & z ^ y & z; -} - -exports.maj32 = maj32; - -function p32(x, y, z) { - return x ^ y ^ z; -} - -exports.p32 = p32; - -function s0_256(x) { - return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22); -} - -exports.s0_256 = s0_256; - -function s1_256(x) { - return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25); -} - -exports.s1_256 = s1_256; - -function g0_256(x) { - return rotr32(x, 7) ^ rotr32(x, 18) ^ x >>> 3; -} - -exports.g0_256 = g0_256; - -function g1_256(x) { - return rotr32(x, 17) ^ rotr32(x, 19) ^ x >>> 10; -} - -exports.g1_256 = g1_256; - -/***/ }), - -/***/ 8244: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - - -var assert = __webpack_require__(1130); - -var inherits = __webpack_require__(376); - -exports.inherits = inherits; - -function isSurrogatePair(msg, i) { - if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) { - return false; - } - - if (i < 0 || i + 1 >= msg.length) { - return false; - } - - return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00; -} - -function toArray(msg, enc) { - if (Array.isArray(msg)) return msg.slice(); - if (!msg) return []; - var res = []; - - if (typeof msg === 'string') { - if (!enc) { - // Inspired by stringToUtf8ByteArray() in closure-library by Google - // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143 - // Apache License 2.0 - // https://github.com/google/closure-library/blob/master/LICENSE - var p = 0; - - for (var i = 0; i < msg.length; i++) { - var c = msg.charCodeAt(i); - - if (c < 128) { - res[p++] = c; - } else if (c < 2048) { - res[p++] = c >> 6 | 192; - res[p++] = c & 63 | 128; - } else if (isSurrogatePair(msg, i)) { - c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF); - res[p++] = c >> 18 | 240; - res[p++] = c >> 12 & 63 | 128; - res[p++] = c >> 6 & 63 | 128; - res[p++] = c & 63 | 128; - } else { - res[p++] = c >> 12 | 224; - res[p++] = c >> 6 & 63 | 128; - res[p++] = c & 63 | 128; - } - } - } else if (enc === 'hex') { - msg = msg.replace(/[^a-z0-9]+/ig, ''); - if (msg.length % 2 !== 0) msg = '0' + msg; - - for (i = 0; i < msg.length; i += 2) { - res.push(parseInt(msg[i] + msg[i + 1], 16)); - } - } - } else { - for (i = 0; i < msg.length; i++) { - res[i] = msg[i] | 0; - } - } - - return res; -} - -exports.toArray = toArray; - -function toHex(msg) { - var res = ''; - - for (var i = 0; i < msg.length; i++) { - res += zero2(msg[i].toString(16)); - } - - return res; -} - -exports.toHex = toHex; - -function htonl(w) { - var res = w >>> 24 | w >>> 8 & 0xff00 | w << 8 & 0xff0000 | (w & 0xff) << 24; - return res >>> 0; -} - -exports.htonl = htonl; - -function toHex32(msg, endian) { - var res = ''; - - for (var i = 0; i < msg.length; i++) { - var w = msg[i]; - if (endian === 'little') w = htonl(w); - res += zero8(w.toString(16)); - } - - return res; -} - -exports.toHex32 = toHex32; - -function zero2(word) { - if (word.length === 1) return '0' + word;else return word; -} - -exports.zero2 = zero2; - -function zero8(word) { - if (word.length === 7) return '0' + word;else if (word.length === 6) return '00' + word;else if (word.length === 5) return '000' + word;else if (word.length === 4) return '0000' + word;else if (word.length === 3) return '00000' + word;else if (word.length === 2) return '000000' + word;else if (word.length === 1) return '0000000' + word;else return word; -} - -exports.zero8 = zero8; - -function join32(msg, start, end, endian) { - var len = end - start; - assert(len % 4 === 0); - var res = new Array(len / 4); - - for (var i = 0, k = start; i < res.length; i++, k += 4) { - var w; - if (endian === 'big') w = msg[k] << 24 | msg[k + 1] << 16 | msg[k + 2] << 8 | msg[k + 3];else w = msg[k + 3] << 24 | msg[k + 2] << 16 | msg[k + 1] << 8 | msg[k]; - res[i] = w >>> 0; - } - - return res; -} - -exports.join32 = join32; - -function split32(msg, endian) { - var res = new Array(msg.length * 4); - - for (var i = 0, k = 0; i < msg.length; i++, k += 4) { - var m = msg[i]; - - if (endian === 'big') { - res[k] = m >>> 24; - res[k + 1] = m >>> 16 & 0xff; - res[k + 2] = m >>> 8 & 0xff; - res[k + 3] = m & 0xff; - } else { - res[k + 3] = m >>> 24; - res[k + 2] = m >>> 16 & 0xff; - res[k + 1] = m >>> 8 & 0xff; - res[k] = m & 0xff; - } - } - - return res; -} - -exports.split32 = split32; - -function rotr32(w, b) { - return w >>> b | w << 32 - b; -} - -exports.rotr32 = rotr32; - -function rotl32(w, b) { - return w << b | w >>> 32 - b; -} - -exports.rotl32 = rotl32; - -function sum32(a, b) { - return a + b >>> 0; -} - -exports.sum32 = sum32; - -function sum32_3(a, b, c) { - return a + b + c >>> 0; -} - -exports.sum32_3 = sum32_3; - -function sum32_4(a, b, c, d) { - return a + b + c + d >>> 0; -} - -exports.sum32_4 = sum32_4; - -function sum32_5(a, b, c, d, e) { - return a + b + c + d + e >>> 0; -} - -exports.sum32_5 = sum32_5; - -function sum64(buf, pos, ah, al) { - var bh = buf[pos]; - var bl = buf[pos + 1]; - var lo = al + bl >>> 0; - var hi = (lo < al ? 1 : 0) + ah + bh; - buf[pos] = hi >>> 0; - buf[pos + 1] = lo; -} - -exports.sum64 = sum64; - -function sum64_hi(ah, al, bh, bl) { - var lo = al + bl >>> 0; - var hi = (lo < al ? 1 : 0) + ah + bh; - return hi >>> 0; -} - -exports.sum64_hi = sum64_hi; - -function sum64_lo(ah, al, bh, bl) { - var lo = al + bl; - return lo >>> 0; -} - -exports.sum64_lo = sum64_lo; - -function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) { - var carry = 0; - var lo = al; - lo = lo + bl >>> 0; - carry += lo < al ? 1 : 0; - lo = lo + cl >>> 0; - carry += lo < cl ? 1 : 0; - lo = lo + dl >>> 0; - carry += lo < dl ? 1 : 0; - var hi = ah + bh + ch + dh + carry; - return hi >>> 0; -} - -exports.sum64_4_hi = sum64_4_hi; - -function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) { - var lo = al + bl + cl + dl; - return lo >>> 0; -} - -exports.sum64_4_lo = sum64_4_lo; - -function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) { - var carry = 0; - var lo = al; - lo = lo + bl >>> 0; - carry += lo < al ? 1 : 0; - lo = lo + cl >>> 0; - carry += lo < cl ? 1 : 0; - lo = lo + dl >>> 0; - carry += lo < dl ? 1 : 0; - lo = lo + el >>> 0; - carry += lo < el ? 1 : 0; - var hi = ah + bh + ch + dh + eh + carry; - return hi >>> 0; -} - -exports.sum64_5_hi = sum64_5_hi; - -function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) { - var lo = al + bl + cl + dl + el; - return lo >>> 0; -} - -exports.sum64_5_lo = sum64_5_lo; - -function rotr64_hi(ah, al, num) { - var r = al << 32 - num | ah >>> num; - return r >>> 0; -} - -exports.rotr64_hi = rotr64_hi; - -function rotr64_lo(ah, al, num) { - var r = ah << 32 - num | al >>> num; - return r >>> 0; -} - -exports.rotr64_lo = rotr64_lo; - -function shr64_hi(ah, al, num) { - return ah >>> num; -} - -exports.shr64_hi = shr64_hi; - -function shr64_lo(ah, al, num) { - var r = ah << 32 - num | al >>> num; - return r >>> 0; -} - -exports.shr64_lo = shr64_lo; - -/***/ }), - -/***/ 9742: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var hash = __webpack_require__(3192); - -var utils = __webpack_require__(5522); - -var assert = __webpack_require__(1130); - -function HmacDRBG(options) { - if (!(this instanceof HmacDRBG)) return new HmacDRBG(options); - this.hash = options.hash; - this.predResist = !!options.predResist; - this.outLen = this.hash.outSize; - this.minEntropy = options.minEntropy || this.hash.hmacStrength; - this._reseed = null; - this.reseedInterval = null; - this.K = null; - this.V = null; - var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex'); - var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex'); - var pers = utils.toArray(options.pers, options.persEnc || 'hex'); - assert(entropy.length >= this.minEntropy / 8, 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits'); - - this._init(entropy, nonce, pers); -} - -module.exports = HmacDRBG; - -HmacDRBG.prototype._init = function init(entropy, nonce, pers) { - var seed = entropy.concat(nonce).concat(pers); - this.K = new Array(this.outLen / 8); - this.V = new Array(this.outLen / 8); - - for (var i = 0; i < this.V.length; i++) { - this.K[i] = 0x00; - this.V[i] = 0x01; - } - - this._update(seed); - - this._reseed = 1; - this.reseedInterval = 0x1000000000000; // 2^48 -}; - -HmacDRBG.prototype._hmac = function hmac() { - return new hash.hmac(this.hash, this.K); -}; - -HmacDRBG.prototype._update = function update(seed) { - var kmac = this._hmac().update(this.V).update([0x00]); - - if (seed) kmac = kmac.update(seed); - this.K = kmac.digest(); - this.V = this._hmac().update(this.V).digest(); - if (!seed) return; - this.K = this._hmac().update(this.V).update([0x01]).update(seed).digest(); - this.V = this._hmac().update(this.V).digest(); -}; - -HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) { - // Optional entropy enc - if (typeof entropyEnc !== 'string') { - addEnc = add; - add = entropyEnc; - entropyEnc = null; - } - - entropy = utils.toArray(entropy, entropyEnc); - add = utils.toArray(add, addEnc); - assert(entropy.length >= this.minEntropy / 8, 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits'); - - this._update(entropy.concat(add || [])); - - this._reseed = 1; -}; - -HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) { - if (this._reseed > this.reseedInterval) throw new Error('Reseed is required'); // Optional encoding - - if (typeof enc !== 'string') { - addEnc = add; - add = enc; - enc = null; - } // Optional additional data - - - if (add) { - add = utils.toArray(add, addEnc || 'hex'); - - this._update(add); - } - - var temp = []; - - while (temp.length < len) { - this.V = this._hmac().update(this.V).digest(); - temp = temp.concat(this.V); - } - - var res = temp.slice(0, len); - - this._update(add); - - this._reseed++; - return utils.encode(res, enc); -}; - -/***/ }), - -/***/ 8405: -/***/ ((__unused_webpack_module, exports) => { - -/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ -exports.read = function (buffer, offset, isLE, mLen, nBytes) { - var e, m; - var eLen = nBytes * 8 - mLen - 1; - var eMax = (1 << eLen) - 1; - var eBias = eMax >> 1; - var nBits = -7; - var i = isLE ? nBytes - 1 : 0; - var d = isLE ? -1 : 1; - var s = buffer[offset + i]; - i += d; - e = s & (1 << -nBits) - 1; - s >>= -nBits; - nBits += eLen; - - for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} - - m = e & (1 << -nBits) - 1; - e >>= -nBits; - nBits += mLen; - - for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} - - if (e === 0) { - e = 1 - eBias; - } else if (e === eMax) { - return m ? NaN : (s ? -1 : 1) * Infinity; - } else { - m = m + Math.pow(2, mLen); - e = e - eBias; - } - - return (s ? -1 : 1) * m * Math.pow(2, e - mLen); -}; - -exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { - var e, m, c; - var eLen = nBytes * 8 - mLen - 1; - var eMax = (1 << eLen) - 1; - var eBias = eMax >> 1; - var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0; - var i = isLE ? 0 : nBytes - 1; - var d = isLE ? 1 : -1; - var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0; - value = Math.abs(value); - - if (isNaN(value) || value === Infinity) { - m = isNaN(value) ? 1 : 0; - e = eMax; - } else { - e = Math.floor(Math.log(value) / Math.LN2); - - if (value * (c = Math.pow(2, -e)) < 1) { - e--; - c *= 2; - } - - if (e + eBias >= 1) { - value += rt / c; - } else { - value += rt * Math.pow(2, 1 - eBias); - } - - if (value * c >= 2) { - e++; - c /= 2; - } - - if (e + eBias >= eMax) { - m = 0; - e = eMax; - } else if (e + eBias >= 1) { - m = (value * c - 1) * Math.pow(2, mLen); - e = e + eBias; - } else { - m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); - e = 0; - } - } - - for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} - - e = e << mLen | m; - eLen += mLen; - - for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} - - buffer[offset + i - d] |= s * 128; -}; - -/***/ }), - -/***/ 376: -/***/ ((module) => { - -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - if (superCtor) { - ctor.super_ = superCtor; - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - } - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - if (superCtor) { - ctor.super_ = superCtor; - - var TempCtor = function TempCtor() {}; - - TempCtor.prototype = superCtor.prototype; - ctor.prototype = new TempCtor(); - ctor.prototype.constructor = ctor; - } - }; -} - -/***/ }), - -/***/ 2755: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var hasToStringTag = __webpack_require__(5994)(); - -var callBound = __webpack_require__(8780); - -var $toString = callBound('Object.prototype.toString'); - -var isStandardArguments = function isArguments(value) { - if (hasToStringTag && value && _typeof(value) === 'object' && Symbol.toStringTag in value) { - return false; - } - - return $toString(value) === '[object Arguments]'; -}; - -var isLegacyArguments = function isArguments(value) { - if (isStandardArguments(value)) { - return true; - } - - return value !== null && _typeof(value) === 'object' && typeof value.length === 'number' && value.length >= 0 && $toString(value) !== '[object Array]' && $toString(value.callee) === '[object Function]'; -}; - -var supportsStandardArguments = function () { - return isStandardArguments(arguments); -}(); - -isStandardArguments.isLegacyArguments = isLegacyArguments; // for tests - -module.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments; - -/***/ }), - -/***/ 8625: -/***/ ((module) => { - -"use strict"; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var fnToStr = Function.prototype.toString; -var reflectApply = (typeof Reflect === "undefined" ? "undefined" : _typeof(Reflect)) === 'object' && Reflect !== null && Reflect.apply; -var badArrayLike; -var isCallableMarker; - -if (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') { - try { - badArrayLike = Object.defineProperty({}, 'length', { - get: function get() { - throw isCallableMarker; - } - }); - isCallableMarker = {}; // eslint-disable-next-line no-throw-literal - - reflectApply(function () { - throw 42; - }, null, badArrayLike); - } catch (_) { - if (_ !== isCallableMarker) { - reflectApply = null; - } - } -} else { - reflectApply = null; -} - -var constructorRegex = /^\s*class\b/; - -var isES6ClassFn = function isES6ClassFunction(value) { - try { - var fnStr = fnToStr.call(value); - return constructorRegex.test(fnStr); - } catch (e) { - return false; // not a function - } -}; - -var tryFunctionObject = function tryFunctionToStr(value) { - try { - if (isES6ClassFn(value)) { - return false; - } - - fnToStr.call(value); - return true; - } catch (e) { - return false; - } -}; - -var toStr = Object.prototype.toString; -var fnClass = '[object Function]'; -var genClass = '[object GeneratorFunction]'; -var hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag` - -/* globals document: false */ - -var documentDotAll = (typeof document === "undefined" ? "undefined" : _typeof(document)) === 'object' && typeof document.all === 'undefined' && document.all !== undefined ? document.all : {}; -module.exports = reflectApply ? function isCallable(value) { - if (value === documentDotAll) { - return true; - } - - if (!value) { - return false; - } - - if (typeof value !== 'function' && _typeof(value) !== 'object') { - return false; - } - - if (typeof value === 'function' && !value.prototype) { - return true; - } - - try { - reflectApply(value, null, badArrayLike); - } catch (e) { - if (e !== isCallableMarker) { - return false; - } - } - - return !isES6ClassFn(value); -} : function isCallable(value) { - if (value === documentDotAll) { - return true; - } - - if (!value) { - return false; - } - - if (typeof value !== 'function' && _typeof(value) !== 'object') { - return false; - } - - if (typeof value === 'function' && !value.prototype) { - return true; - } - - if (hasToStringTag) { - return tryFunctionObject(value); - } - - if (isES6ClassFn(value)) { - return false; - } - - var strClass = toStr.call(value); - return strClass === fnClass || strClass === genClass; -}; - -/***/ }), - -/***/ 6738: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var toStr = Object.prototype.toString; -var fnToStr = Function.prototype.toString; -var isFnRegex = /^\s*(?:function)?\*/; - -var hasToStringTag = __webpack_require__(5994)(); - -var getProto = Object.getPrototypeOf; - -var getGeneratorFunc = function getGeneratorFunc() { - // eslint-disable-line consistent-return - if (!hasToStringTag) { - return false; - } - - try { - return Function('return function*() {}')(); - } catch (e) {} -}; - -var GeneratorFunction; - -module.exports = function isGeneratorFunction(fn) { - if (typeof fn !== 'function') { - return false; - } - - if (isFnRegex.test(fnToStr.call(fn))) { - return true; - } - - if (!hasToStringTag) { - var str = toStr.call(fn); - return str === '[object GeneratorFunction]'; - } - - if (!getProto) { - return false; - } - - if (typeof GeneratorFunction === 'undefined') { - var generatorFunc = getGeneratorFunc(); - GeneratorFunction = generatorFunc ? getProto(generatorFunc) : false; - } - - return getProto(fn) === GeneratorFunction; -}; - -/***/ }), - -/***/ 2703: -/***/ ((module) => { - -"use strict"; - -/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */ - -module.exports = function isNaN(value) { - return value !== value; -}; - -/***/ }), - -/***/ 2191: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var callBind = __webpack_require__(3862); - -var define = __webpack_require__(7921); - -var implementation = __webpack_require__(2703); - -var getPolyfill = __webpack_require__(4828); - -var shim = __webpack_require__(2568); - -var polyfill = callBind(getPolyfill(), Number); -/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */ - -define(polyfill, { - getPolyfill: getPolyfill, - implementation: implementation, - shim: shim -}); -module.exports = polyfill; - -/***/ }), - -/***/ 4828: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var implementation = __webpack_require__(2703); - -module.exports = function getPolyfill() { - if (Number.isNaN && Number.isNaN(NaN) && !Number.isNaN('a')) { - return Number.isNaN; - } - - return implementation; -}; - -/***/ }), - -/***/ 2568: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var define = __webpack_require__(7921); - -var getPolyfill = __webpack_require__(4828); -/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */ - - -module.exports = function shimNumberIsNaN() { - var polyfill = getPolyfill(); - define(Number, { - isNaN: polyfill - }, { - isNaN: function testIsNaN() { - return Number.isNaN !== polyfill; - } - }); - return polyfill; -}; - -/***/ }), - -/***/ 7913: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var forEach = __webpack_require__(5337); - -var availableTypedArrays = __webpack_require__(6461); - -var callBound = __webpack_require__(8780); - -var $toString = callBound('Object.prototype.toString'); - -var hasToStringTag = __webpack_require__(5994)(); - -var g = typeof globalThis === 'undefined' ? __webpack_require__.g : globalThis; -var typedArrays = availableTypedArrays(); - -var $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) { - for (var i = 0; i < array.length; i += 1) { - if (array[i] === value) { - return i; - } - } - - return -1; -}; - -var $slice = callBound('String.prototype.slice'); -var toStrTags = {}; - -var gOPD = __webpack_require__(3999); - -var getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof'); - -if (hasToStringTag && gOPD && getPrototypeOf) { - forEach(typedArrays, function (typedArray) { - var arr = new g[typedArray](); - - if (Symbol.toStringTag in arr) { - var proto = getPrototypeOf(arr); - var descriptor = gOPD(proto, Symbol.toStringTag); - - if (!descriptor) { - var superProto = getPrototypeOf(proto); - descriptor = gOPD(superProto, Symbol.toStringTag); - } - - toStrTags[typedArray] = descriptor.get; - } - }); -} - -var tryTypedArrays = function tryAllTypedArrays(value) { - var anyTrue = false; - forEach(toStrTags, function (getter, typedArray) { - if (!anyTrue) { - try { - anyTrue = getter.call(value) === typedArray; - } catch (e) { - /**/ - } - } - }); - return anyTrue; -}; - -module.exports = function isTypedArray(value) { - if (!value || _typeof(value) !== 'object') { - return false; - } - - if (!hasToStringTag || !(Symbol.toStringTag in value)) { - var tag = $slice($toString(value), 8, -1); - return $indexOf(typedArrays, tag) > -1; - } - - if (!gOPD) { - return false; - } - - return tryTypedArrays(value); -}; - -/***/ }), - -/***/ 3138: -/***/ ((module) => { - -"use strict"; - - -function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } - -function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } - -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } - -function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } - -function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } - -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - -function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct.bind(); } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function Kareem() { - this._pres = new Map(); - this._posts = new Map(); -} - -Kareem.skipWrappedFunction = function skipWrappedFunction() { - if (!(this instanceof Kareem.skipWrappedFunction)) { - return _construct(Kareem.skipWrappedFunction, Array.prototype.slice.call(arguments)); - } - - this.args = Array.prototype.slice.call(arguments); -}; - -Kareem.overwriteResult = function overwriteResult() { - if (!(this instanceof Kareem.overwriteResult)) { - return _construct(Kareem.overwriteResult, Array.prototype.slice.call(arguments)); - } - - this.args = Array.prototype.slice.call(arguments); -}; - -Kareem.prototype.execPre = function (name, context, args, callback) { - if (arguments.length === 3) { - callback = args; - args = []; - } - - var pres = this._pres.get(name) || []; - var numPres = pres.length; - var numAsyncPres = pres.numAsync || 0; - var currentPre = 0; - var asyncPresLeft = numAsyncPres; - var done = false; - var $args = args; - var shouldSkipWrappedFunction = null; - - if (!numPres) { - return nextTick(function () { - callback(null); - }); - } - - var next = function next() { - if (currentPre >= numPres) { - return; - } - - var pre = pres[currentPre]; - - if (pre.isAsync) { - var args = [decorateNextFn(_next), decorateNextFn(function (error) { - if (error) { - if (done) { - return; - } - - if (error instanceof Kareem.skipWrappedFunction) { - shouldSkipWrappedFunction = error; - } else { - done = true; - return callback(error); - } - } - - if (--asyncPresLeft === 0 && currentPre >= numPres) { - return callback(shouldSkipWrappedFunction); - } - })]; - callMiddlewareFunction(pre.fn, context, args, args[0]); - } else if (pre.fn.length > 0) { - var args = [decorateNextFn(_next)]; - - var _args = arguments.length >= 2 ? arguments : [null].concat($args); - - for (var i = 1; i < _args.length; ++i) { - args.push(_args[i]); - } - - callMiddlewareFunction(pre.fn, context, args, args[0]); - } else { - var maybePromiseLike = null; - - try { - maybePromiseLike = pre.fn.call(context); - } catch (err) { - if (err != null) { - return callback(err); - } - } - - if (isPromiseLike(maybePromiseLike)) { - maybePromiseLike.then(function () { - return _next(); - }, function (err) { - return _next(err); - }); - } else { - if (++currentPre >= numPres) { - if (asyncPresLeft > 0) { - // Leave parallel hooks to run - return; - } else { - return nextTick(function () { - callback(shouldSkipWrappedFunction); - }); - } - } - - next(); - } - } - }; - - next.apply(null, [null].concat(args)); - - function _next(error) { - if (error) { - if (done) { - return; - } - - if (error instanceof Kareem.skipWrappedFunction) { - shouldSkipWrappedFunction = error; - } else { - done = true; - return callback(error); - } - } - - if (++currentPre >= numPres) { - if (asyncPresLeft > 0) { - // Leave parallel hooks to run - return; - } else { - return callback(shouldSkipWrappedFunction); - } - } - - next.apply(context, arguments); - } -}; - -Kareem.prototype.execPreSync = function (name, context, args) { - var pres = this._pres.get(name) || []; - var numPres = pres.length; - - for (var i = 0; i < numPres; ++i) { - pres[i].fn.apply(context, args || []); - } -}; - -Kareem.prototype.execPost = function (name, context, args, options, callback) { - if (arguments.length < 5) { - callback = options; - options = null; - } - - var posts = this._posts.get(name) || []; - var numPosts = posts.length; - var currentPost = 0; - var firstError = null; - - if (options && options.error) { - firstError = options.error; - } - - if (!numPosts) { - return nextTick(function () { - callback.apply(null, [firstError].concat(args)); - }); - } - - var next = function next() { - var post = posts[currentPost].fn; - var numArgs = 0; - var argLength = args.length; - var newArgs = []; - - for (var i = 0; i < argLength; ++i) { - numArgs += args[i] && args[i]._kareemIgnore ? 0 : 1; - - if (!args[i] || !args[i]._kareemIgnore) { - newArgs.push(args[i]); - } - } - - if (firstError) { - if (post.length === numArgs + 2) { - var _cb = decorateNextFn(function (error) { - if (error) { - if (error instanceof Kareem.overwriteResult) { - args = error.args; - - if (++currentPost >= numPosts) { - return callback.call(null, firstError); - } - - return next(); - } - - firstError = error; - } - - if (++currentPost >= numPosts) { - return callback.call(null, firstError); - } - - next(); - }); - - callMiddlewareFunction(post, context, [firstError].concat(newArgs).concat([_cb]), _cb); - } else { - if (++currentPost >= numPosts) { - return callback.call(null, firstError); - } - - next(); - } - } else { - var _cb2 = decorateNextFn(function (error) { - if (error) { - if (error instanceof Kareem.overwriteResult) { - args = error.args; - - if (++currentPost >= numPosts) { - return callback.apply(null, [null].concat(args)); - } - - return next(); - } - - firstError = error; - return next(); - } - - if (++currentPost >= numPosts) { - return callback.apply(null, [null].concat(args)); - } - - next(); - }); - - if (post.length === numArgs + 2) { - // Skip error handlers if no error - if (++currentPost >= numPosts) { - return callback.apply(null, [null].concat(args)); - } - - return next(); - } - - if (post.length === numArgs + 1) { - callMiddlewareFunction(post, context, newArgs.concat([_cb2]), _cb2); - } else { - var error; - var maybePromiseLike; - - try { - maybePromiseLike = post.apply(context, newArgs); - } catch (err) { - error = err; - firstError = err; - } - - if (isPromiseLike(maybePromiseLike)) { - return maybePromiseLike.then(function (res) { - _cb2(res instanceof Kareem.overwriteResult ? res : null); - }, function (err) { - return _cb2(err); - }); - } - - if (maybePromiseLike instanceof Kareem.overwriteResult) { - args = maybePromiseLike.args; - } - - if (++currentPost >= numPosts) { - return callback.apply(null, [error].concat(args)); - } - - next(); - } - } - }; - - next(); -}; - -Kareem.prototype.execPostSync = function (name, context, args) { - var posts = this._posts.get(name) || []; - var numPosts = posts.length; - - for (var i = 0; i < numPosts; ++i) { - var res = posts[i].fn.apply(context, args || []); - - if (res instanceof Kareem.overwriteResult) { - args = res.args; - } - } - - return args; -}; - -Kareem.prototype.createWrapperSync = function (name, fn) { - var kareem = this; - return function syncWrapper() { - kareem.execPreSync(name, this, arguments); - var toReturn = fn.apply(this, arguments); - var result = kareem.execPostSync(name, this, [toReturn]); - return result[0]; - }; -}; - -function _handleWrapError(instance, error, name, context, args, options, callback) { - if (options.useErrorHandlers) { - return instance.execPost(name, context, args, { - error: error - }, function (error) { - return typeof callback === 'function' && callback(error); - }); - } else { - return typeof callback === 'function' && callback(error); - } -} - -Kareem.prototype.wrap = function (name, fn, context, args, options) { - var lastArg = args.length > 0 ? args[args.length - 1] : null; - var argsWithoutCb = Array.from(args); - typeof lastArg === 'function' && argsWithoutCb.pop(); - - var _this = this; - - options = options || {}; - var checkForPromise = options.checkForPromise; - this.execPre(name, context, args, function (error) { - if (error && !(error instanceof Kareem.skipWrappedFunction)) { - var numCallbackParams = options.numCallbackParams || 0; - var errorArgs = options.contextParameter ? [context] : []; - - for (var i = errorArgs.length; i < numCallbackParams; ++i) { - errorArgs.push(null); - } - - return _handleWrapError(_this, error, name, context, errorArgs, options, lastArg); - } - - var numParameters = fn.length; - var ret; - - if (error instanceof Kareem.skipWrappedFunction) { - ret = error.args[0]; - return _cb.apply(void 0, [null].concat(_toConsumableArray(error.args))); - } else { - try { - ret = fn.apply(context, argsWithoutCb.concat(_cb)); - } catch (err) { - return _cb(err); - } - } - - if (checkForPromise) { - if (isPromiseLike(ret)) { - // Thenable, use it - return ret.then(function (res) { - return _cb(null, res); - }, function (err) { - return _cb(err); - }); - } // If `fn()` doesn't have a callback argument and doesn't return a - // promise, assume it is sync - - - if (numParameters < argsWithoutCb.length + 1) { - return _cb(null, ret); - } - } - - function _cb() { - var argsWithoutError = Array.from(arguments); - argsWithoutError.shift(); - - if (options.nullResultByDefault && argsWithoutError.length === 0) { - argsWithoutError.push(null); - } - - if (arguments[0]) { - // Assume error - return _handleWrapError(_this, arguments[0], name, context, argsWithoutError, options, lastArg); - } else { - _this.execPost(name, context, argsWithoutError, function () { - if (lastArg === null) { - return; - } - - arguments[0] ? lastArg(arguments[0]) : lastArg.apply(context, arguments); - }); - } - } - }); -}; - -Kareem.prototype.filter = function (fn) { - var _this2 = this; - - var clone = this.clone(); - var pres = Array.from(clone._pres.keys()); - - var _loop = function _loop() { - var name = _pres[_i]; - - var hooks = _this2._pres.get(name).map(function (h) { - return Object.assign({}, h, { - name: name - }); - }).filter(fn); - - if (hooks.length === 0) { - clone._pres["delete"](name); - - return "continue"; - } - - hooks.numAsync = hooks.filter(function (h) { - return h.isAsync; - }).length; - - clone._pres.set(name, hooks); - }; - - for (var _i = 0, _pres = pres; _i < _pres.length; _i++) { - var _ret = _loop(); - - if (_ret === "continue") continue; - } - - var posts = Array.from(clone._posts.keys()); - - var _loop2 = function _loop2() { - var name = _posts[_i2]; - - var hooks = _this2._posts.get(name).map(function (h) { - return Object.assign({}, h, { - name: name - }); - }).filter(fn); - - if (hooks.length === 0) { - clone._posts["delete"](name); - - return "continue"; - } - - clone._posts.set(name, hooks); - }; - - for (var _i2 = 0, _posts = posts; _i2 < _posts.length; _i2++) { - var _ret2 = _loop2(); - - if (_ret2 === "continue") continue; - } - - return clone; -}; - -Kareem.prototype.hasHooks = function (name) { - return this._pres.has(name) || this._posts.has(name); -}; - -Kareem.prototype.createWrapper = function (name, fn, context, options) { - var _this = this; - - if (!this.hasHooks(name)) { - // Fast path: if there's no hooks for this function, just return the - // function wrapped in a nextTick() - return function () { - var _arguments = arguments, - _this3 = this; - - nextTick(function () { - return fn.apply(_this3, _arguments); - }); - }; - } - - return function () { - var _context = context || this; - - _this.wrap(name, fn, _context, Array.from(arguments), options); - }; -}; - -Kareem.prototype.pre = function (name, isAsync, fn, error, unshift) { - var options = {}; - - if (_typeof(isAsync) === 'object' && isAsync !== null) { - options = isAsync; - isAsync = options.isAsync; - } else if (typeof arguments[1] !== 'boolean') { - fn = isAsync; - isAsync = false; - } - - var pres = this._pres.get(name) || []; - - this._pres.set(name, pres); - - if (isAsync) { - pres.numAsync = pres.numAsync || 0; - ++pres.numAsync; - } - - if (typeof fn !== 'function') { - throw new Error('pre() requires a function, got "' + _typeof(fn) + '"'); - } - - if (unshift) { - pres.unshift(Object.assign({}, options, { - fn: fn, - isAsync: isAsync - })); - } else { - pres.push(Object.assign({}, options, { - fn: fn, - isAsync: isAsync - })); - } - - return this; -}; - -Kareem.prototype.post = function (name, options, fn, unshift) { - var hooks = this._posts.get(name) || []; - - if (typeof options === 'function') { - unshift = !!fn; - fn = options; - options = {}; - } - - if (typeof fn !== 'function') { - throw new Error('post() requires a function, got "' + _typeof(fn) + '"'); - } - - if (unshift) { - hooks.unshift(Object.assign({}, options, { - fn: fn - })); - } else { - hooks.push(Object.assign({}, options, { - fn: fn - })); - } - - this._posts.set(name, hooks); - - return this; -}; - -Kareem.prototype.clone = function () { - var n = new Kareem(); - - var _iterator = _createForOfIteratorHelper(this._pres.keys()), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var key = _step.value; - - var clone = this._pres.get(key).slice(); - - clone.numAsync = this._pres.get(key).numAsync; - - n._pres.set(key, clone); - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - var _iterator2 = _createForOfIteratorHelper(this._posts.keys()), - _step2; - - try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - var _key = _step2.value; - - n._posts.set(_key, this._posts.get(_key).slice()); - } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); - } - - return n; -}; - -Kareem.prototype.merge = function (other, clone) { - clone = arguments.length === 1 ? true : clone; - var ret = clone ? this.clone() : this; - - var _iterator3 = _createForOfIteratorHelper(other._pres.keys()), - _step3; - - try { - var _loop3 = function _loop3() { - var key = _step3.value; - var sourcePres = ret._pres.get(key) || []; - - var deduplicated = other._pres.get(key). // Deduplicate based on `fn` - filter(function (p) { - return sourcePres.map(function (_p) { - return _p.fn; - }).indexOf(p.fn) === -1; - }); - - var combined = sourcePres.concat(deduplicated); - combined.numAsync = sourcePres.numAsync || 0; - combined.numAsync += deduplicated.filter(function (p) { - return p.isAsync; - }).length; - - ret._pres.set(key, combined); - }; - - for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { - _loop3(); - } - } catch (err) { - _iterator3.e(err); - } finally { - _iterator3.f(); - } - - var _iterator4 = _createForOfIteratorHelper(other._posts.keys()), - _step4; - - try { - var _loop4 = function _loop4() { - var key = _step4.value; - var sourcePosts = ret._posts.get(key) || []; - - var deduplicated = other._posts.get(key).filter(function (p) { - return sourcePosts.indexOf(p) === -1; - }); - - ret._posts.set(key, sourcePosts.concat(deduplicated)); - }; - - for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { - _loop4(); - } - } catch (err) { - _iterator4.e(err); - } finally { - _iterator4.f(); - } - - return ret; -}; - -function callMiddlewareFunction(fn, context, args, next) { - var maybePromiseLike; - - try { - maybePromiseLike = fn.apply(context, args); - } catch (error) { - return next(error); - } - - if (isPromiseLike(maybePromiseLike)) { - maybePromiseLike.then(function () { - return next(); - }, function (err) { - return next(err); - }); - } -} - -function isPromiseLike(v) { - return _typeof(v) === 'object' && v !== null && typeof v.then === 'function'; -} - -function decorateNextFn(fn) { - var called = false; - - var _this = this; - - return function () { - var _arguments2 = arguments; - - // Ensure this function can only be called once - if (called) { - return; - } - - called = true; // Make sure to clear the stack so try/catch doesn't catch errors - // in subsequent middleware - - return nextTick(function () { - return fn.apply(_this, _arguments2); - }); - }; -} - -var nextTick = (typeof ({env:{}}) === "undefined" ? "undefined" : _typeof(({env:{}}))) === 'object' && ({env:{}}) !== null && ({env:{}}).nextTick || function nextTick(cb) { - setTimeout(cb, 0); -}; - -module.exports = Kareem; - -/***/ }), - -/***/ 722: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var inherits = __webpack_require__(376); - -var HashBase = __webpack_require__(5125); - -var Buffer = (__webpack_require__(9047).Buffer); - -var ARRAY16 = new Array(16); - -function MD5() { - HashBase.call(this, 64); // state - - this._a = 0x67452301; - this._b = 0xefcdab89; - this._c = 0x98badcfe; - this._d = 0x10325476; -} - -inherits(MD5, HashBase); - -MD5.prototype._update = function () { - var M = ARRAY16; - - for (var i = 0; i < 16; ++i) { - M[i] = this._block.readInt32LE(i * 4); - } - - var a = this._a; - var b = this._b; - var c = this._c; - var d = this._d; - a = fnF(a, b, c, d, M[0], 0xd76aa478, 7); - d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12); - c = fnF(c, d, a, b, M[2], 0x242070db, 17); - b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22); - a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7); - d = fnF(d, a, b, c, M[5], 0x4787c62a, 12); - c = fnF(c, d, a, b, M[6], 0xa8304613, 17); - b = fnF(b, c, d, a, M[7], 0xfd469501, 22); - a = fnF(a, b, c, d, M[8], 0x698098d8, 7); - d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12); - c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17); - b = fnF(b, c, d, a, M[11], 0x895cd7be, 22); - a = fnF(a, b, c, d, M[12], 0x6b901122, 7); - d = fnF(d, a, b, c, M[13], 0xfd987193, 12); - c = fnF(c, d, a, b, M[14], 0xa679438e, 17); - b = fnF(b, c, d, a, M[15], 0x49b40821, 22); - a = fnG(a, b, c, d, M[1], 0xf61e2562, 5); - d = fnG(d, a, b, c, M[6], 0xc040b340, 9); - c = fnG(c, d, a, b, M[11], 0x265e5a51, 14); - b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20); - a = fnG(a, b, c, d, M[5], 0xd62f105d, 5); - d = fnG(d, a, b, c, M[10], 0x02441453, 9); - c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14); - b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20); - a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5); - d = fnG(d, a, b, c, M[14], 0xc33707d6, 9); - c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14); - b = fnG(b, c, d, a, M[8], 0x455a14ed, 20); - a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5); - d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9); - c = fnG(c, d, a, b, M[7], 0x676f02d9, 14); - b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20); - a = fnH(a, b, c, d, M[5], 0xfffa3942, 4); - d = fnH(d, a, b, c, M[8], 0x8771f681, 11); - c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16); - b = fnH(b, c, d, a, M[14], 0xfde5380c, 23); - a = fnH(a, b, c, d, M[1], 0xa4beea44, 4); - d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11); - c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16); - b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23); - a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4); - d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11); - c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16); - b = fnH(b, c, d, a, M[6], 0x04881d05, 23); - a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4); - d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11); - c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16); - b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23); - a = fnI(a, b, c, d, M[0], 0xf4292244, 6); - d = fnI(d, a, b, c, M[7], 0x432aff97, 10); - c = fnI(c, d, a, b, M[14], 0xab9423a7, 15); - b = fnI(b, c, d, a, M[5], 0xfc93a039, 21); - a = fnI(a, b, c, d, M[12], 0x655b59c3, 6); - d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10); - c = fnI(c, d, a, b, M[10], 0xffeff47d, 15); - b = fnI(b, c, d, a, M[1], 0x85845dd1, 21); - a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6); - d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10); - c = fnI(c, d, a, b, M[6], 0xa3014314, 15); - b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21); - a = fnI(a, b, c, d, M[4], 0xf7537e82, 6); - d = fnI(d, a, b, c, M[11], 0xbd3af235, 10); - c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15); - b = fnI(b, c, d, a, M[9], 0xeb86d391, 21); - this._a = this._a + a | 0; - this._b = this._b + b | 0; - this._c = this._c + c | 0; - this._d = this._d + d | 0; -}; - -MD5.prototype._digest = function () { - // create padding and handle blocks - this._block[this._blockOffset++] = 0x80; - - if (this._blockOffset > 56) { - this._block.fill(0, this._blockOffset, 64); - - this._update(); - - this._blockOffset = 0; - } - - this._block.fill(0, this._blockOffset, 56); - - this._block.writeUInt32LE(this._length[0], 56); - - this._block.writeUInt32LE(this._length[1], 60); - - this._update(); // produce result - - - var buffer = Buffer.allocUnsafe(16); - buffer.writeInt32LE(this._a, 0); - buffer.writeInt32LE(this._b, 4); - buffer.writeInt32LE(this._c, 8); - buffer.writeInt32LE(this._d, 12); - return buffer; -}; - -function rotl(x, n) { - return x << n | x >>> 32 - n; -} - -function fnF(a, b, c, d, m, k, s) { - return rotl(a + (b & c | ~b & d) + m + k | 0, s) + b | 0; -} - -function fnG(a, b, c, d, m, k, s) { - return rotl(a + (b & d | c & ~d) + m + k | 0, s) + b | 0; -} - -function fnH(a, b, c, d, m, k, s) { - return rotl(a + (b ^ c ^ d) + m + k | 0, s) + b | 0; -} - -function fnI(a, b, c, d, m, k, s) { - return rotl(a + (c ^ (b | ~d)) + m + k | 0, s) + b | 0; -} - -module.exports = MD5; - -/***/ }), - -/***/ 9318: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var bn = __webpack_require__(6781); - -var brorand = __webpack_require__(7179); - -function MillerRabin(rand) { - this.rand = rand || new brorand.Rand(); -} - -module.exports = MillerRabin; - -MillerRabin.create = function create(rand) { - return new MillerRabin(rand); -}; - -MillerRabin.prototype._randbelow = function _randbelow(n) { - var len = n.bitLength(); - var min_bytes = Math.ceil(len / 8); // Generage random bytes until a number less than n is found. - // This ensures that 0..n-1 have an equal probability of being selected. - - do { - var a = new bn(this.rand.generate(min_bytes)); - } while (a.cmp(n) >= 0); - - return a; -}; - -MillerRabin.prototype._randrange = function _randrange(start, stop) { - // Generate a random number greater than or equal to start and less than stop. - var size = stop.sub(start); - return start.add(this._randbelow(size)); -}; - -MillerRabin.prototype.test = function test(n, k, cb) { - var len = n.bitLength(); - var red = bn.mont(n); - var rone = new bn(1).toRed(red); - if (!k) k = Math.max(1, len / 48 | 0); // Find d and s, (n - 1) = (2 ^ s) * d; - - var n1 = n.subn(1); - - for (var s = 0; !n1.testn(s); s++) {} - - var d = n.shrn(s); - var rn1 = n1.toRed(red); - var prime = true; - - for (; k > 0; k--) { - var a = this._randrange(new bn(2), n1); - - if (cb) cb(a); - var x = a.toRed(red).redPow(d); - if (x.cmp(rone) === 0 || x.cmp(rn1) === 0) continue; - - for (var i = 1; i < s; i++) { - x = x.redSqr(); - if (x.cmp(rone) === 0) return false; - if (x.cmp(rn1) === 0) break; - } - - if (i === s) return false; - } - - return prime; -}; - -MillerRabin.prototype.getDivisor = function getDivisor(n, k) { - var len = n.bitLength(); - var red = bn.mont(n); - var rone = new bn(1).toRed(red); - if (!k) k = Math.max(1, len / 48 | 0); // Find d and s, (n - 1) = (2 ^ s) * d; - - var n1 = n.subn(1); - - for (var s = 0; !n1.testn(s); s++) {} - - var d = n.shrn(s); - var rn1 = n1.toRed(red); - - for (; k > 0; k--) { - var a = this._randrange(new bn(2), n1); - - var g = n.gcd(a); - if (g.cmpn(1) !== 0) return g; - var x = a.toRed(red).redPow(d); - if (x.cmp(rone) === 0 || x.cmp(rn1) === 0) continue; - - for (var i = 1; i < s; i++) { - x = x.redSqr(); - if (x.cmp(rone) === 0) return x.fromRed().subn(1).gcd(n); - if (x.cmp(rn1) === 0) break; - } - - if (i === s) { - x = x.redSqr(); - return x.fromRed().subn(1).gcd(n); - } - } - - return false; -}; - -/***/ }), - -/***/ 1130: -/***/ ((module) => { - -module.exports = assert; - -function assert(val, msg) { - if (!val) throw new Error(msg || 'Assertion failed'); -} - -assert.equal = function assertEqual(l, r, msg) { - if (l != r) throw new Error(msg || 'Assertion failed: ' + l + ' != ' + r); -}; - -/***/ }), - -/***/ 5522: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -var utils = exports; - -function toArray(msg, enc) { - if (Array.isArray(msg)) return msg.slice(); - if (!msg) return []; - var res = []; - - if (typeof msg !== 'string') { - for (var i = 0; i < msg.length; i++) { - res[i] = msg[i] | 0; - } - - return res; - } - - if (enc === 'hex') { - msg = msg.replace(/[^a-z0-9]+/ig, ''); - if (msg.length % 2 !== 0) msg = '0' + msg; - - for (var i = 0; i < msg.length; i += 2) { - res.push(parseInt(msg[i] + msg[i + 1], 16)); - } - } else { - for (var i = 0; i < msg.length; i++) { - var c = msg.charCodeAt(i); - var hi = c >> 8; - var lo = c & 0xff; - if (hi) res.push(hi, lo);else res.push(lo); - } - } - - return res; -} - -utils.toArray = toArray; - -function zero2(word) { - if (word.length === 1) return '0' + word;else return word; -} - -utils.zero2 = zero2; - -function toHex(msg) { - var res = ''; - - for (var i = 0; i < msg.length; i++) { - res += zero2(msg[i].toString(16)); - } - - return res; -} - -utils.toHex = toHex; - -utils.encode = function encode(arr, enc) { - if (enc === 'hex') return toHex(arr);else return arr; -}; - -/***/ }), - -/***/ 3564: -/***/ ((module, exports, __webpack_require__) => { - -"use strict"; - - -module.exports = exports = __webpack_require__(8424); - -/***/ }), - -/***/ 8424: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -/* eslint strict:off */ - -/* eslint no-var: off */ - -/* eslint no-redeclare: off */ -var stringToParts = __webpack_require__(7355); // These properties are special and can open client libraries to security -// issues - - -var ignoreProperties = ['__proto__', 'constructor', 'prototype']; -/** - * Returns the value of object `o` at the given `path`. - * - * ####Example: - * - * var obj = { - * comments: [ - * { title: 'exciting!', _doc: { title: 'great!' }} - * , { title: 'number dos' } - * ] - * } - * - * mpath.get('comments.0.title', o) // 'exciting!' - * mpath.get('comments.0.title', o, '_doc') // 'great!' - * mpath.get('comments.title', o) // ['exciting!', 'number dos'] - * - * // summary - * mpath.get(path, o) - * mpath.get(path, o, special) - * mpath.get(path, o, map) - * mpath.get(path, o, special, map) - * - * @param {String} path - * @param {Object} o - * @param {String} [special] When this property name is present on any object in the path, walking will continue on the value of this property. - * @param {Function} [map] Optional function which receives each individual found value. The value returned from `map` is used in the original values place. - */ - -exports.get = function (path, o, special, map) { - var lookup; - - if ('function' == typeof special) { - if (special.length < 2) { - map = special; - special = undefined; - } else { - lookup = special; - special = undefined; - } - } - - map || (map = K); - var parts = 'string' == typeof path ? stringToParts(path) : path; - - if (!Array.isArray(parts)) { - throw new TypeError('Invalid `path`. Must be either string or array'); - } - - var obj = o, - part; - - for (var i = 0; i < parts.length; ++i) { - part = parts[i]; - - if (typeof parts[i] !== 'string' && typeof parts[i] !== 'number') { - throw new TypeError('Each segment of path to `get()` must be a string or number, got ' + _typeof(parts[i])); - } - - if (Array.isArray(obj) && !/^\d+$/.test(part)) { - // reading a property from the array items - var paths = parts.slice(i); // Need to `concat()` to avoid `map()` calling a constructor of an array - // subclass - - return [].concat(obj).map(function (item) { - return item ? exports.get(paths, item, special || lookup, map) : map(undefined); - }); - } - - if (lookup) { - obj = lookup(obj, part); - } else { - var _from = special && obj[special] ? obj[special] : obj; - - obj = _from instanceof Map ? _from.get(part) : _from[part]; - } - - if (!obj) return map(obj); - } - - return map(obj); -}; -/** - * Returns true if `in` returns true for every piece of the path - * - * @param {String} path - * @param {Object} o - */ - - -exports.has = function (path, o) { - var parts = typeof path === 'string' ? stringToParts(path) : path; - - if (!Array.isArray(parts)) { - throw new TypeError('Invalid `path`. Must be either string or array'); - } - - var len = parts.length; - var cur = o; - - for (var i = 0; i < len; ++i) { - if (typeof parts[i] !== 'string' && typeof parts[i] !== 'number') { - throw new TypeError('Each segment of path to `has()` must be a string or number, got ' + _typeof(parts[i])); - } - - if (cur == null || _typeof(cur) !== 'object' || !(parts[i] in cur)) { - return false; - } - - cur = cur[parts[i]]; - } - - return true; -}; -/** - * Deletes the last piece of `path` - * - * @param {String} path - * @param {Object} o - */ - - -exports.unset = function (path, o) { - var parts = typeof path === 'string' ? stringToParts(path) : path; - - if (!Array.isArray(parts)) { - throw new TypeError('Invalid `path`. Must be either string or array'); - } - - var len = parts.length; - var cur = o; - - for (var i = 0; i < len; ++i) { - if (cur == null || _typeof(cur) !== 'object' || !(parts[i] in cur)) { - return false; - } - - if (typeof parts[i] !== 'string' && typeof parts[i] !== 'number') { - throw new TypeError('Each segment of path to `unset()` must be a string or number, got ' + _typeof(parts[i])); - } // Disallow any updates to __proto__ or special properties. - - - if (ignoreProperties.indexOf(parts[i]) !== -1) { - return false; - } - - if (i === len - 1) { - delete cur[parts[i]]; - return true; - } - - cur = cur instanceof Map ? cur.get(parts[i]) : cur[parts[i]]; - } - - return true; -}; -/** - * Sets the `val` at the given `path` of object `o`. - * - * @param {String} path - * @param {Anything} val - * @param {Object} o - * @param {String} [special] When this property name is present on any object in the path, walking will continue on the value of this property. - * @param {Function} [map] Optional function which is passed each individual value before setting it. The value returned from `map` is used in the original values place. - */ - - -exports.set = function (path, val, o, special, map, _copying) { - var lookup; - - if ('function' == typeof special) { - if (special.length < 2) { - map = special; - special = undefined; - } else { - lookup = special; - special = undefined; - } - } - - map || (map = K); - var parts = 'string' == typeof path ? stringToParts(path) : path; - - if (!Array.isArray(parts)) { - throw new TypeError('Invalid `path`. Must be either string or array'); - } - - if (null == o) return; - - for (var i = 0; i < parts.length; ++i) { - if (typeof parts[i] !== 'string' && typeof parts[i] !== 'number') { - throw new TypeError('Each segment of path to `set()` must be a string or number, got ' + _typeof(parts[i])); - } // Silently ignore any updates to `__proto__`, these are potentially - // dangerous if using mpath with unsanitized data. - - - if (ignoreProperties.indexOf(parts[i]) !== -1) { - return; - } - } // the existance of $ in a path tells us if the user desires - // the copying of an array instead of setting each value of - // the array to the one by one to matching positions of the - // current array. Unless the user explicitly opted out by passing - // false, see Automattic/mongoose#6273 - - - var copy = _copying || /\$/.test(path) && _copying !== false, - obj = o, - part; - - for (var i = 0, len = parts.length - 1; i < len; ++i) { - part = parts[i]; - - if ('$' == part) { - if (i == len - 1) { - break; - } else { - continue; - } - } - - if (Array.isArray(obj) && !/^\d+$/.test(part)) { - var paths = parts.slice(i); - - if (!copy && Array.isArray(val)) { - for (var j = 0; j < obj.length && j < val.length; ++j) { - // assignment of single values of array - exports.set(paths, val[j], obj[j], special || lookup, map, copy); - } - } else { - for (var j = 0; j < obj.length; ++j) { - // assignment of entire value - exports.set(paths, val, obj[j], special || lookup, map, copy); - } - } - - return; - } - - if (lookup) { - obj = lookup(obj, part); - } else { - var _to = special && obj[special] ? obj[special] : obj; - - obj = _to instanceof Map ? _to.get(part) : _to[part]; - } - - if (!obj) return; - } // process the last property of the path - - - part = parts[len]; // use the special property if exists - - if (special && obj[special]) { - obj = obj[special]; - } // set the value on the last branch - - - if (Array.isArray(obj) && !/^\d+$/.test(part)) { - if (!copy && Array.isArray(val)) { - _setArray(obj, val, part, lookup, special, map); - } else { - for (var j = 0; j < obj.length; ++j) { - var item = obj[j]; - - if (item) { - if (lookup) { - lookup(item, part, map(val)); - } else { - if (item[special]) item = item[special]; - item[part] = map(val); - } - } - } - } - } else { - if (lookup) { - lookup(obj, part, map(val)); - } else if (obj instanceof Map) { - obj.set(part, map(val)); - } else { - obj[part] = map(val); - } - } -}; -/*! - * Split a string path into components delimited by '.' or - * '[\d+]' - * - * #### Example: - * stringToParts('foo[0].bar.1'); // ['foo', '0', 'bar', '1'] - */ - - -exports.stringToParts = stringToParts; -/*! - * Recursively set nested arrays - */ - -function _setArray(obj, val, part, lookup, special, map) { - for (var item, j = 0; j < obj.length && j < val.length; ++j) { - item = obj[j]; - - if (Array.isArray(item) && Array.isArray(val[j])) { - _setArray(item, val[j], part, lookup, special, map); - } else if (item) { - if (lookup) { - lookup(item, part, map(val[j])); - } else { - if (item[special]) item = item[special]; - item[part] = map(val[j]); - } - } - } -} -/*! - * Returns the value passed to it. - */ - - -function K(v) { - return v; -} - -/***/ }), - -/***/ 7355: -/***/ ((module) => { - -"use strict"; - - -module.exports = function stringToParts(str) { - var result = []; - var curPropertyName = ''; - var state = 'DEFAULT'; - - for (var i = 0; i < str.length; ++i) { - // Fall back to treating as property name rather than bracket notation if - // square brackets contains something other than a number. - if (state === 'IN_SQUARE_BRACKETS' && !/\d/.test(str[i]) && str[i] !== ']') { - state = 'DEFAULT'; - curPropertyName = result[result.length - 1] + '[' + curPropertyName; - result.splice(result.length - 1, 1); - } - - if (str[i] === '[') { - if (state !== 'IMMEDIATELY_AFTER_SQUARE_BRACKETS') { - result.push(curPropertyName); - curPropertyName = ''; - } - - state = 'IN_SQUARE_BRACKETS'; - } else if (str[i] === ']') { - if (state === 'IN_SQUARE_BRACKETS') { - state = 'IMMEDIATELY_AFTER_SQUARE_BRACKETS'; - result.push(curPropertyName); - curPropertyName = ''; - } else { - state = 'DEFAULT'; - curPropertyName += str[i]; - } - } else if (str[i] === '.') { - if (state !== 'IMMEDIATELY_AFTER_SQUARE_BRACKETS') { - result.push(curPropertyName); - curPropertyName = ''; - } - - state = 'DEFAULT'; - } else { - curPropertyName += str[i]; - } - } - - if (state !== 'IMMEDIATELY_AFTER_SQUARE_BRACKETS') { - result.push(curPropertyName); - } - - return result; -}; - -/***/ }), - -/***/ 3231: -/***/ ((module, exports) => { - -"use strict"; - -/** - * methods a collection must implement - */ - -var methods = ['find', 'findOne', 'update', 'updateMany', 'updateOne', 'replaceOne', 'remove', 'count', 'distinct', 'findOneAndDelete', 'findOneAndUpdate', 'aggregate', 'findCursor', 'deleteOne', 'deleteMany']; -/** - * Collection base class from which implementations inherit - */ - -function Collection() {} - -for (var i = 0, len = methods.length; i < len; ++i) { - var method = methods[i]; - Collection.prototype[method] = notImplemented(method); -} - -module.exports = exports = Collection; -Collection.methods = methods; -/** - * creates a function which throws an implementation error - */ - -function notImplemented(method) { - return function () { - throw new Error('collection.' + method + ' not implemented'); - }; -} - -/***/ }), - -/***/ 8514: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var env = __webpack_require__(3669); - -if ('unknown' == env.type) { - throw new Error('Unknown environment'); -} - -module.exports = env.isNode ? __webpack_require__(1186) : env.isMongo ? __webpack_require__(3231) : __webpack_require__(3231); - -/***/ }), - -/***/ 1186: -/***/ ((module, exports, __webpack_require__) => { - -"use strict"; - -/** - * Module dependencies - */ - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -var Collection = __webpack_require__(3231); - -var NodeCollection = /*#__PURE__*/function (_Collection) { - _inherits(NodeCollection, _Collection); - - var _super = _createSuper(NodeCollection); - - function NodeCollection(col) { - var _this; - - _classCallCheck(this, NodeCollection); - - _this = _super.call(this); - _this.collection = col; - _this.collectionName = col.collectionName; - return _this; - } - /** - * find(match, options, function(err, docs)) - */ - - - _createClass(NodeCollection, [{ - key: "find", - value: function find(match, options, cb) { - var cursor = this.collection.find(match, options); - - try { - cursor.toArray(cb); - } catch (error) { - cb(error); - } - } - /** - * findOne(match, options, function(err, doc)) - */ - - }, { - key: "findOne", - value: function findOne(match, options, cb) { - this.collection.findOne(match, options, cb); - } - /** - * count(match, options, function(err, count)) - */ - - }, { - key: "count", - value: function count(match, options, cb) { - this.collection.count(match, options, cb); - } - /** - * distinct(prop, match, options, function(err, count)) - */ - - }, { - key: "distinct", - value: function distinct(prop, match, options, cb) { - this.collection.distinct(prop, match, options, cb); - } - /** - * update(match, update, options, function(err[, result])) - */ - - }, { - key: "update", - value: function update(match, _update, options, cb) { - this.collection.update(match, _update, options, cb); - } - /** - * update(match, update, options, function(err[, result])) - */ - - }, { - key: "updateMany", - value: function updateMany(match, update, options, cb) { - this.collection.updateMany(match, update, options, cb); - } - /** - * update(match, update, options, function(err[, result])) - */ - - }, { - key: "updateOne", - value: function updateOne(match, update, options, cb) { - this.collection.updateOne(match, update, options, cb); - } - /** - * replaceOne(match, update, options, function(err[, result])) - */ - - }, { - key: "replaceOne", - value: function replaceOne(match, update, options, cb) { - this.collection.replaceOne(match, update, options, cb); - } - /** - * deleteOne(match, options, function(err[, result]) - */ - - }, { - key: "deleteOne", - value: function deleteOne(match, options, cb) { - this.collection.deleteOne(match, options, cb); - } - /** - * deleteMany(match, options, function(err[, result]) - */ - - }, { - key: "deleteMany", - value: function deleteMany(match, options, cb) { - this.collection.deleteMany(match, options, cb); - } - /** - * remove(match, options, function(err[, result]) - */ - - }, { - key: "remove", - value: function remove(match, options, cb) { - this.collection.remove(match, options, cb); - } - /** - * findOneAndDelete(match, options, function(err[, result]) - */ - - }, { - key: "findOneAndDelete", - value: function findOneAndDelete(match, options, cb) { - this.collection.findOneAndDelete(match, options, cb); - } - /** - * findOneAndUpdate(match, update, options, function(err[, result]) - */ - - }, { - key: "findOneAndUpdate", - value: function findOneAndUpdate(match, update, options, cb) { - this.collection.findOneAndUpdate(match, update, options, cb); - } - /** - * var cursor = findCursor(match, options) - */ - - }, { - key: "findCursor", - value: function findCursor(match, options) { - return this.collection.find(match, options); - } - /** - * aggregation(operators..., function(err, doc)) - * TODO - */ - - }]); - - return NodeCollection; -}(Collection); -/** - * Expose - */ - - -module.exports = exports = NodeCollection; - -/***/ }), - -/***/ 3669: -/***/ ((module, exports, __webpack_require__) => { - -"use strict"; -/* module decorator */ module = __webpack_require__.nmd(module); -/* provided dependency */ var Buffer = __webpack_require__(365)["Buffer"]; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -exports.isNode = 'undefined' != typeof ({env:{}}) && 'object' == ( false ? 0 : _typeof(module)) && 'object' == (typeof __webpack_require__.g === "undefined" ? "undefined" : _typeof(__webpack_require__.g)) && 'function' == typeof Buffer && ({env:{}}).argv; -exports.isMongo = !exports.isNode && 'function' == typeof printjson && 'function' == typeof ObjectId && 'function' == typeof rs && 'function' == typeof sh; -exports.isBrowser = !exports.isNode && !exports.isMongo && 'undefined' != typeof window; -exports.type = exports.isNode ? 'node' : exports.isMongo ? 'mongo' : exports.isBrowser ? 'browser' : 'unknown'; - -/***/ }), - -/***/ 5417: -/***/ ((module, exports, __webpack_require__) => { - -"use strict"; - -/** - * Dependencies - */ - -function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } - -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } - -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var assert = __webpack_require__(9373); - -var util = __webpack_require__(161); - -var utils = __webpack_require__(728); - -var debug = __webpack_require__(8801)('mquery'); -/** - * Query constructor used for building queries. - * - * ####Example: - * - * var query = new Query({ name: 'mquery' }); - * query.setOptions({ collection: moduleCollection }) - * query.where('age').gte(21).exec(callback); - * - * @param {Object} [criteria] - * @param {Object} [options] - * @api public - */ - - -function Query(criteria, options) { - if (!(this instanceof Query)) return new Query(criteria, options); - var proto = this.constructor.prototype; - this.op = proto.op || undefined; - this.options = Object.assign({}, proto.options); - this._conditions = proto._conditions ? utils.clone(proto._conditions) : {}; - this._fields = proto._fields ? utils.clone(proto._fields) : undefined; - this._update = proto._update ? utils.clone(proto._update) : undefined; - this._path = proto._path || undefined; - this._distinct = proto._distinct || undefined; - this._collection = proto._collection || undefined; - this._traceFunction = proto._traceFunction || undefined; - - if (options) { - this.setOptions(options); - } - - if (criteria) { - if (criteria.find && criteria.remove && criteria.update) { - // quack quack! - this.collection(criteria); - } else { - this.find(criteria); - } - } -} -/** - * This is a parameter that the user can set which determines if mquery - * uses $within or $geoWithin for queries. It defaults to true which - * means $geoWithin will be used. If using MongoDB < 2.4 you should - * set this to false. - * - * @api public - * @property use$geoWithin - */ - - -var $withinCmd = '$geoWithin'; -Object.defineProperty(Query, 'use$geoWithin', { - get: function get() { - return $withinCmd == '$geoWithin'; - }, - set: function set(v) { - if (true === v) { - // mongodb >= 2.4 - $withinCmd = '$geoWithin'; - } else { - $withinCmd = '$within'; - } - } -}); -/** - * Converts this query to a constructor function with all arguments and options retained. - * - * ####Example - * - * // Create a query that will read documents with a "video" category from - * // `aCollection` on the primary node in the replica-set unless it is down, - * // in which case we'll read from a secondary node. - * var query = mquery({ category: 'video' }) - * query.setOptions({ collection: aCollection, read: 'primaryPreferred' }); - * - * // create a constructor based off these settings - * var Video = query.toConstructor(); - * - * // Video is now a subclass of mquery() and works the same way but with the - * // default query parameters and options set. - * - * // run a query with the previous settings but filter for movies with names - * // that start with "Life". - * Video().where({ name: /^Life/ }).exec(cb); - * - * @return {Query} new Query - * @api public - */ - -Query.prototype.toConstructor = function toConstructor() { - function CustomQuery(criteria, options) { - if (!(this instanceof CustomQuery)) return new CustomQuery(criteria, options); - Query.call(this, criteria, options); - } - - utils.inherits(CustomQuery, Query); // set inherited defaults - - var p = CustomQuery.prototype; - p.options = {}; - p.setOptions(this.options); - p.op = this.op; - p._conditions = utils.clone(this._conditions); - p._fields = utils.clone(this._fields); - p._update = utils.clone(this._update); - p._path = this._path; - p._distinct = this._distinct; - p._collection = this._collection; - p._traceFunction = this._traceFunction; - return CustomQuery; -}; -/** - * Sets query options. - * - * ####Options: - * - * - [tailable](http://www.mongodb.org/display/DOCS/Tailable+Cursors) * - * - [sort](http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%7B%7Bsort(\)%7D%7D) * - * - [limit](http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%7B%7Blimit%28%29%7D%7D) * - * - [skip](http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%7B%7Bskip%28%29%7D%7D) * - * - [maxScan](http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24maxScan) * - * - [maxTime](http://docs.mongodb.org/manual/reference/operator/meta/maxTimeMS/#op._S_maxTimeMS) * - * - [batchSize](http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%7B%7BbatchSize%28%29%7D%7D) * - * - [comment](http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24comment) * - * - [snapshot](http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%7B%7Bsnapshot%28%29%7D%7D) * - * - [hint](http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24hint) * - * - [slaveOk](http://docs.mongodb.org/manual/applications/replication/#read-preference) * - * - [safe](http://www.mongodb.org/display/DOCS/getLastError+Command) - * - collection the collection to query against - * - * _* denotes a query helper method is also available_ - * - * @param {Object} options - * @api public - */ - - -Query.prototype.setOptions = function (options) { - if (!(options && utils.isObject(options))) return this; // set arbitrary options - - var methods = utils.keys(options); - var method; - - for (var i = 0; i < methods.length; ++i) { - method = methods[i]; // use methods if exist (safer option manipulation) - - if ('function' == typeof this[method]) { - var args = Array.isArray(options[method]) ? options[method] : [options[method]]; - this[method].apply(this, args); - } else { - this.options[method] = options[method]; - } - } - - return this; -}; -/** - * Sets this Querys collection. - * - * @param {Collection} coll - * @return {Query} this - */ - - -Query.prototype.collection = function collection(coll) { - this._collection = new Query.Collection(coll); - return this; -}; -/** - * Adds a collation to this op (MongoDB 3.4 and up) - * - * ####Example - * - * query.find().collation({ locale: "en_US", strength: 1 }) - * - * @param {Object} value - * @return {Query} this - * @see MongoDB docs https://docs.mongodb.com/manual/reference/method/cursor.collation/#cursor.collation - * @api public - */ - - -Query.prototype.collation = function (value) { - this.options.collation = value; - return this; -}; -/** - * Specifies a `$where` condition - * - * Use `$where` when you need to select documents using a JavaScript expression. - * - * ####Example - * - * query.$where('this.comments.length > 10 || this.name.length > 5') - * - * query.$where(function () { - * return this.comments.length > 10 || this.name.length > 5; - * }) - * - * @param {String|Function} js javascript string or function - * @return {Query} this - * @memberOf Query - * @method $where - * @api public - */ - - -Query.prototype.$where = function (js) { - this._conditions.$where = js; - return this; -}; -/** - * Specifies a `path` for use with chaining. - * - * ####Example - * - * // instead of writing: - * User.find({age: {$gte: 21, $lte: 65}}, callback); - * - * // we can instead write: - * User.where('age').gte(21).lte(65); - * - * // passing query conditions is permitted - * User.find().where({ name: 'vonderful' }) - * - * // chaining - * User - * .where('age').gte(21).lte(65) - * .where('name', /^vonderful/i) - * .where('friends').slice(10) - * .exec(callback) - * - * @param {String} [path] - * @param {Object} [val] - * @return {Query} this - * @api public - */ - - -Query.prototype.where = function () { - if (!arguments.length) return this; - if (!this.op) this.op = 'find'; - - var type = _typeof(arguments[0]); - - if ('string' == type) { - this._path = arguments[0]; - - if (2 === arguments.length) { - this._conditions[this._path] = arguments[1]; - } - - return this; - } - - if ('object' == type && !Array.isArray(arguments[0])) { - return this.merge(arguments[0]); - } - - throw new TypeError('path must be a string or object'); -}; -/** - * Specifies the complementary comparison value for paths specified with `where()` - * - * ####Example - * - * User.where('age').equals(49); - * - * // is the same as - * - * User.where('age', 49); - * - * @param {Object} val - * @return {Query} this - * @api public - */ - - -Query.prototype.equals = function equals(val) { - this._ensurePath('equals'); - - var path = this._path; - this._conditions[path] = val; - return this; -}; -/** - * Specifies the complementary comparison value for paths specified with `where()` - * This is alias of `equals` - * - * ####Example - * - * User.where('age').eq(49); - * - * // is the same as - * - * User.shere('age').equals(49); - * - * // is the same as - * - * User.where('age', 49); - * - * @param {Object} val - * @return {Query} this - * @api public - */ - - -Query.prototype.eq = function eq(val) { - this._ensurePath('eq'); - - var path = this._path; - this._conditions[path] = val; - return this; -}; -/** - * Specifies arguments for an `$or` condition. - * - * ####Example - * - * query.or([{ color: 'red' }, { status: 'emergency' }]) - * - * @param {Array} array array of conditions - * @return {Query} this - * @api public - */ - - -Query.prototype.or = function or(array) { - var or = this._conditions.$or || (this._conditions.$or = []); - if (!Array.isArray(array)) array = [array]; - or.push.apply(or, array); - return this; -}; -/** - * Specifies arguments for a `$nor` condition. - * - * ####Example - * - * query.nor([{ color: 'green' }, { status: 'ok' }]) - * - * @param {Array} array array of conditions - * @return {Query} this - * @api public - */ - - -Query.prototype.nor = function nor(array) { - var nor = this._conditions.$nor || (this._conditions.$nor = []); - if (!Array.isArray(array)) array = [array]; - nor.push.apply(nor, array); - return this; -}; -/** - * Specifies arguments for a `$and` condition. - * - * ####Example - * - * query.and([{ color: 'green' }, { status: 'ok' }]) - * - * @see $and http://docs.mongodb.org/manual/reference/operator/and/ - * @param {Array} array array of conditions - * @return {Query} this - * @api public - */ - - -Query.prototype.and = function and(array) { - var and = this._conditions.$and || (this._conditions.$and = []); - if (!Array.isArray(array)) array = [array]; - and.push.apply(and, array); - return this; -}; -/** - * Specifies a $gt query condition. - * - * When called with one argument, the most recent path passed to `where()` is used. - * - * ####Example - * - * Thing.find().where('age').gt(21) - * - * // or - * Thing.find().gt('age', 21) - * - * @method gt - * @memberOf Query - * @param {String} [path] - * @param {Number} val - * @api public - */ - -/** - * Specifies a $gte query condition. - * - * When called with one argument, the most recent path passed to `where()` is used. - * - * @method gte - * @memberOf Query - * @param {String} [path] - * @param {Number} val - * @api public - */ - -/** - * Specifies a $lt query condition. - * - * When called with one argument, the most recent path passed to `where()` is used. - * - * @method lt - * @memberOf Query - * @param {String} [path] - * @param {Number} val - * @api public - */ - -/** - * Specifies a $lte query condition. - * - * When called with one argument, the most recent path passed to `where()` is used. - * - * @method lte - * @memberOf Query - * @param {String} [path] - * @param {Number} val - * @api public - */ - -/** - * Specifies a $ne query condition. - * - * When called with one argument, the most recent path passed to `where()` is used. - * - * @method ne - * @memberOf Query - * @param {String} [path] - * @param {Number} val - * @api public - */ - -/** - * Specifies an $in query condition. - * - * When called with one argument, the most recent path passed to `where()` is used. - * - * @method in - * @memberOf Query - * @param {String} [path] - * @param {Number} val - * @api public - */ - -/** - * Specifies an $nin query condition. - * - * When called with one argument, the most recent path passed to `where()` is used. - * - * @method nin - * @memberOf Query - * @param {String} [path] - * @param {Number} val - * @api public - */ - -/** - * Specifies an $all query condition. - * - * When called with one argument, the most recent path passed to `where()` is used. - * - * @method all - * @memberOf Query - * @param {String} [path] - * @param {Number} val - * @api public - */ - -/** - * Specifies a $size query condition. - * - * When called with one argument, the most recent path passed to `where()` is used. - * - * @method size - * @memberOf Query - * @param {String} [path] - * @param {Number} val - * @api public - */ - -/** - * Specifies a $regex query condition. - * - * When called with one argument, the most recent path passed to `where()` is used. - * - * @method regex - * @memberOf Query - * @param {String} [path] - * @param {String|RegExp} val - * @api public - */ - -/** - * Specifies a $maxDistance query condition. - * - * When called with one argument, the most recent path passed to `where()` is used. - * - * @method maxDistance - * @memberOf Query - * @param {String} [path] - * @param {Number} val - * @api public - */ - -/*! - * gt, gte, lt, lte, ne, in, nin, all, regex, size, maxDistance - * - * Thing.where('type').nin(array) - */ - - -'gt gte lt lte ne in nin all regex size maxDistance minDistance'.split(' ').forEach(function ($conditional) { - Query.prototype[$conditional] = function () { - var path, val; - - if (1 === arguments.length) { - this._ensurePath($conditional); - - val = arguments[0]; - path = this._path; - } else { - val = arguments[1]; - path = arguments[0]; - } - - var conds = this._conditions[path] === null || _typeof(this._conditions[path]) === 'object' ? this._conditions[path] : this._conditions[path] = {}; - conds['$' + $conditional] = val; - return this; - }; -}); -/** - * Specifies a `$mod` condition - * - * @param {String} [path] - * @param {Number} val - * @return {Query} this - * @api public - */ - -Query.prototype.mod = function () { - var val, path; - - if (1 === arguments.length) { - this._ensurePath('mod'); - - val = arguments[0]; - path = this._path; - } else if (2 === arguments.length && !Array.isArray(arguments[1])) { - this._ensurePath('mod'); - - val = [arguments[0], arguments[1]]; - path = this._path; - } else if (3 === arguments.length) { - val = [arguments[1], arguments[2]]; - path = arguments[0]; - } else { - val = arguments[1]; - path = arguments[0]; - } - - var conds = this._conditions[path] || (this._conditions[path] = {}); - conds.$mod = val; - return this; -}; -/** - * Specifies an `$exists` condition - * - * ####Example - * - * // { name: { $exists: true }} - * Thing.where('name').exists() - * Thing.where('name').exists(true) - * Thing.find().exists('name') - * - * // { name: { $exists: false }} - * Thing.where('name').exists(false); - * Thing.find().exists('name', false); - * - * @param {String} [path] - * @param {Number} val - * @return {Query} this - * @api public - */ - - -Query.prototype.exists = function () { - var path, val; - - if (0 === arguments.length) { - this._ensurePath('exists'); - - path = this._path; - val = true; - } else if (1 === arguments.length) { - if ('boolean' === typeof arguments[0]) { - this._ensurePath('exists'); - - path = this._path; - val = arguments[0]; - } else { - path = arguments[0]; - val = true; - } - } else if (2 === arguments.length) { - path = arguments[0]; - val = arguments[1]; - } - - var conds = this._conditions[path] || (this._conditions[path] = {}); - conds.$exists = val; - return this; -}; -/** - * Specifies an `$elemMatch` condition - * - * ####Example - * - * query.elemMatch('comment', { author: 'autobot', votes: {$gte: 5}}) - * - * query.where('comment').elemMatch({ author: 'autobot', votes: {$gte: 5}}) - * - * query.elemMatch('comment', function (elem) { - * elem.where('author').equals('autobot'); - * elem.where('votes').gte(5); - * }) - * - * query.where('comment').elemMatch(function (elem) { - * elem.where({ author: 'autobot' }); - * elem.where('votes').gte(5); - * }) - * - * @param {String|Object|Function} path - * @param {Object|Function} criteria - * @return {Query} this - * @api public - */ - - -Query.prototype.elemMatch = function () { - if (null == arguments[0]) throw new TypeError('Invalid argument'); - var fn, path, criteria; - - if ('function' === typeof arguments[0]) { - this._ensurePath('elemMatch'); - - path = this._path; - fn = arguments[0]; - } else if (utils.isObject(arguments[0])) { - this._ensurePath('elemMatch'); - - path = this._path; - criteria = arguments[0]; - } else if ('function' === typeof arguments[1]) { - path = arguments[0]; - fn = arguments[1]; - } else if (arguments[1] && utils.isObject(arguments[1])) { - path = arguments[0]; - criteria = arguments[1]; - } else { - throw new TypeError('Invalid argument'); - } - - if (fn) { - criteria = new Query(); - fn(criteria); - criteria = criteria._conditions; - } - - var conds = this._conditions[path] || (this._conditions[path] = {}); - conds.$elemMatch = criteria; - return this; -}; // Spatial queries - -/** - * Sugar for geo-spatial queries. - * - * ####Example - * - * query.within().box() - * query.within().circle() - * query.within().geometry() - * - * query.where('loc').within({ center: [50,50], radius: 10, unique: true, spherical: true }); - * query.where('loc').within({ box: [[40.73, -73.9], [40.7, -73.988]] }); - * query.where('loc').within({ polygon: [[],[],[],[]] }); - * - * query.where('loc').within([], [], []) // polygon - * query.where('loc').within([], []) // box - * query.where('loc').within({ type: 'LineString', coordinates: [...] }); // geometry - * - * ####NOTE: - * - * Must be used after `where()`. - * - * @memberOf Query - * @return {Query} this - * @api public - */ - - -Query.prototype.within = function within() { - // opinionated, must be used after where - this._ensurePath('within'); - - this._geoComparison = $withinCmd; - - if (0 === arguments.length) { - return this; - } - - if (2 === arguments.length) { - return this.box.apply(this, arguments); - } else if (2 < arguments.length) { - return this.polygon.apply(this, arguments); - } - - var area = arguments[0]; - if (!area) throw new TypeError('Invalid argument'); - if (area.center) return this.circle(area); - if (area.box) return this.box.apply(this, area.box); - if (area.polygon) return this.polygon.apply(this, area.polygon); - if (area.type && area.coordinates) return this.geometry(area); - throw new TypeError('Invalid argument'); -}; -/** - * Specifies a $box condition - * - * ####Example - * - * var lowerLeft = [40.73083, -73.99756] - * var upperRight= [40.741404, -73.988135] - * - * query.where('loc').within().box(lowerLeft, upperRight) - * query.box('loc', lowerLeft, upperRight ) - * - * @see http://www.mongodb.org/display/DOCS/Geospatial+Indexing - * @see Query#within #query_Query-within - * @param {String} path - * @param {Object} val - * @return {Query} this - * @api public - */ - - -Query.prototype.box = function () { - var path, box; - - if (3 === arguments.length) { - // box('loc', [], []) - path = arguments[0]; - box = [arguments[1], arguments[2]]; - } else if (2 === arguments.length) { - // box([], []) - this._ensurePath('box'); - - path = this._path; - box = [arguments[0], arguments[1]]; - } else { - throw new TypeError('Invalid argument'); - } - - var conds = this._conditions[path] || (this._conditions[path] = {}); - conds[this._geoComparison || $withinCmd] = { - $box: box - }; - return this; -}; -/** - * Specifies a $polygon condition - * - * ####Example - * - * query.where('loc').within().polygon([10,20], [13, 25], [7,15]) - * query.polygon('loc', [10,20], [13, 25], [7,15]) - * - * @param {String|Array} [path] - * @param {Array|Object} [val] - * @return {Query} this - * @see http://www.mongodb.org/display/DOCS/Geospatial+Indexing - * @api public - */ - - -Query.prototype.polygon = function () { - var val, path; - - if ('string' == typeof arguments[0]) { - // polygon('loc', [],[],[]) - val = Array.from(arguments); - path = val.shift(); - } else { - // polygon([],[],[]) - this._ensurePath('polygon'); - - path = this._path; - val = Array.from(arguments); - } - - var conds = this._conditions[path] || (this._conditions[path] = {}); - conds[this._geoComparison || $withinCmd] = { - $polygon: val - }; - return this; -}; -/** - * Specifies a $center or $centerSphere condition. - * - * ####Example - * - * var area = { center: [50, 50], radius: 10, unique: true } - * query.where('loc').within().circle(area) - * query.center('loc', area); - * - * // for spherical calculations - * var area = { center: [50, 50], radius: 10, unique: true, spherical: true } - * query.where('loc').within().circle(area) - * query.center('loc', area); - * - * @param {String} [path] - * @param {Object} area - * @return {Query} this - * @see http://www.mongodb.org/display/DOCS/Geospatial+Indexing - * @api public - */ - - -Query.prototype.circle = function () { - var path, val; - - if (1 === arguments.length) { - this._ensurePath('circle'); - - path = this._path; - val = arguments[0]; - } else if (2 === arguments.length) { - path = arguments[0]; - val = arguments[1]; - } else { - throw new TypeError('Invalid argument'); - } - - if (!('radius' in val && val.center)) throw new Error('center and radius are required'); - var conds = this._conditions[path] || (this._conditions[path] = {}); - var type = val.spherical ? '$centerSphere' : '$center'; - var wKey = this._geoComparison || $withinCmd; - conds[wKey] = {}; - conds[wKey][type] = [val.center, val.radius]; - if ('unique' in val) conds[wKey].$uniqueDocs = !!val.unique; - return this; -}; -/** - * Specifies a `$near` or `$nearSphere` condition - * - * These operators return documents sorted by distance. - * - * ####Example - * - * query.where('loc').near({ center: [10, 10] }); - * query.where('loc').near({ center: [10, 10], maxDistance: 5 }); - * query.where('loc').near({ center: [10, 10], maxDistance: 5, spherical: true }); - * query.near('loc', { center: [10, 10], maxDistance: 5 }); - * query.near({ center: { type: 'Point', coordinates: [..] }}) - * query.near().geometry({ type: 'Point', coordinates: [..] }) - * - * @param {String} [path] - * @param {Object} val - * @return {Query} this - * @see http://www.mongodb.org/display/DOCS/Geospatial+Indexing - * @api public - */ - - -Query.prototype.near = function near() { - var path, val; - this._geoComparison = '$near'; - - if (0 === arguments.length) { - return this; - } else if (1 === arguments.length) { - this._ensurePath('near'); - - path = this._path; - val = arguments[0]; - } else if (2 === arguments.length) { - path = arguments[0]; - val = arguments[1]; - } else { - throw new TypeError('Invalid argument'); - } - - if (!val.center) { - throw new Error('center is required'); - } - - var conds = this._conditions[path] || (this._conditions[path] = {}); - var type = val.spherical ? '$nearSphere' : '$near'; // center could be a GeoJSON object or an Array - - if (Array.isArray(val.center)) { - conds[type] = val.center; - var radius = 'maxDistance' in val ? val.maxDistance : null; - - if (null != radius) { - conds.$maxDistance = radius; - } - - if (null != val.minDistance) { - conds.$minDistance = val.minDistance; - } - } else { - // GeoJSON? - if (val.center.type != 'Point' || !Array.isArray(val.center.coordinates)) { - throw new Error(util.format('Invalid GeoJSON specified for %s', type)); - } - - conds[type] = { - $geometry: val.center - }; // MongoDB 2.6 insists on maxDistance being in $near / $nearSphere - - if ('maxDistance' in val) { - conds[type]['$maxDistance'] = val.maxDistance; - } - - if ('minDistance' in val) { - conds[type]['$minDistance'] = val.minDistance; - } - } - - return this; -}; -/** - * Declares an intersects query for `geometry()`. - * - * ####Example - * - * query.where('path').intersects().geometry({ - * type: 'LineString' - * , coordinates: [[180.0, 11.0], [180, 9.0]] - * }) - * - * query.where('path').intersects({ - * type: 'LineString' - * , coordinates: [[180.0, 11.0], [180, 9.0]] - * }) - * - * @param {Object} [arg] - * @return {Query} this - * @api public - */ - - -Query.prototype.intersects = function intersects() { - // opinionated, must be used after where - this._ensurePath('intersects'); - - this._geoComparison = '$geoIntersects'; - - if (0 === arguments.length) { - return this; - } - - var area = arguments[0]; - if (null != area && area.type && area.coordinates) return this.geometry(area); - throw new TypeError('Invalid argument'); -}; -/** - * Specifies a `$geometry` condition - * - * ####Example - * - * var polyA = [[[ 10, 20 ], [ 10, 40 ], [ 30, 40 ], [ 30, 20 ]]] - * query.where('loc').within().geometry({ type: 'Polygon', coordinates: polyA }) - * - * // or - * var polyB = [[ 0, 0 ], [ 1, 1 ]] - * query.where('loc').within().geometry({ type: 'LineString', coordinates: polyB }) - * - * // or - * var polyC = [ 0, 0 ] - * query.where('loc').within().geometry({ type: 'Point', coordinates: polyC }) - * - * // or - * query.where('loc').intersects().geometry({ type: 'Point', coordinates: polyC }) - * - * ####NOTE: - * - * `geometry()` **must** come after either `intersects()` or `within()`. - * - * The `object` argument must contain `type` and `coordinates` properties. - * - type {String} - * - coordinates {Array} - * - * The most recent path passed to `where()` is used. - * - * @param {Object} object Must contain a `type` property which is a String and a `coordinates` property which is an Array. See the examples. - * @return {Query} this - * @see http://docs.mongodb.org/manual/release-notes/2.4/#new-geospatial-indexes-with-geojson-and-improved-spherical-geometry - * @see http://www.mongodb.org/display/DOCS/Geospatial+Indexing - * @see $geometry http://docs.mongodb.org/manual/reference/operator/geometry/ - * @api public - */ - - -Query.prototype.geometry = function geometry() { - if (!('$within' == this._geoComparison || '$geoWithin' == this._geoComparison || '$near' == this._geoComparison || '$geoIntersects' == this._geoComparison)) { - throw new Error('geometry() must come after `within()`, `intersects()`, or `near()'); - } - - var val, path; - - if (1 === arguments.length) { - this._ensurePath('geometry'); - - path = this._path; - val = arguments[0]; - } else { - throw new TypeError('Invalid argument'); - } - - if (!(val.type && Array.isArray(val.coordinates))) { - throw new TypeError('Invalid argument'); - } - - var conds = this._conditions[path] || (this._conditions[path] = {}); - conds[this._geoComparison] = { - $geometry: val - }; - return this; -}; // end spatial - -/** - * Specifies which document fields to include or exclude - * - * ####String syntax - * - * When passing a string, prefixing a path with `-` will flag that path as excluded. When a path does not have the `-` prefix, it is included. - * - * ####Example - * - * // include a and b, exclude c - * query.select('a b -c'); - * - * // or you may use object notation, useful when - * // you have keys already prefixed with a "-" - * query.select({a: 1, b: 1, c: 0}); - * - * ####Note - * - * Cannot be used with `distinct()` - * - * @param {Object|String} arg - * @return {Query} this - * @see SchemaType - * @api public - */ - - -Query.prototype.select = function select() { - var arg = arguments[0]; - if (!arg) return this; - - if (arguments.length !== 1) { - throw new Error('Invalid select: select only takes 1 argument'); - } - - this._validate('select'); - - var fields = this._fields || (this._fields = {}); - - var type = _typeof(arg); - - var i, len; - - if (('string' == type || utils.isArgumentsObject(arg)) && 'number' == typeof arg.length || Array.isArray(arg)) { - if ('string' == type) arg = arg.split(/\s+/); - - for (i = 0, len = arg.length; i < len; ++i) { - var field = arg[i]; - if (!field) continue; - var include = '-' == field[0] ? 0 : 1; - if (include === 0) field = field.substring(1); - fields[field] = include; - } - - return this; - } - - if (utils.isObject(arg)) { - var keys = utils.keys(arg); - - for (i = 0; i < keys.length; ++i) { - fields[keys[i]] = arg[keys[i]]; - } - - return this; - } - - throw new TypeError('Invalid select() argument. Must be string or object.'); -}; -/** - * Specifies a $slice condition for a `path` - * - * ####Example - * - * query.slice('comments', 5) - * query.slice('comments', -5) - * query.slice('comments', [10, 5]) - * query.where('comments').slice(5) - * query.where('comments').slice([-10, 5]) - * - * @param {String} [path] - * @param {Number} val number/range of elements to slice - * @return {Query} this - * @see mongodb http://www.mongodb.org/display/DOCS/Retrieving+a+Subset+of+Fields#RetrievingaSubsetofFields-RetrievingaSubrangeofArrayElements - * @api public - */ - - -Query.prototype.slice = function () { - if (0 === arguments.length) return this; - - this._validate('slice'); - - var path, val; - - if (1 === arguments.length) { - var arg = arguments[0]; - - if (_typeof(arg) === 'object' && !Array.isArray(arg)) { - var keys = Object.keys(arg); - var numKeys = keys.length; - - for (var i = 0; i < numKeys; ++i) { - this.slice(keys[i], arg[keys[i]]); - } - - return this; - } - - this._ensurePath('slice'); - - path = this._path; - val = arguments[0]; - } else if (2 === arguments.length) { - if ('number' === typeof arguments[0]) { - this._ensurePath('slice'); - - path = this._path; - val = [arguments[0], arguments[1]]; - } else { - path = arguments[0]; - val = arguments[1]; - } - } else if (3 === arguments.length) { - path = arguments[0]; - val = [arguments[1], arguments[2]]; - } - - var myFields = this._fields || (this._fields = {}); - myFields[path] = { - $slice: val - }; - return this; -}; -/** - * Sets the sort order - * - * If an object is passed, values allowed are 'asc', 'desc', 'ascending', 'descending', 1, and -1. - * - * If a string is passed, it must be a space delimited list of path names. The sort order of each path is ascending unless the path name is prefixed with `-` which will be treated as descending. - * - * ####Example - * - * // these are equivalent - * query.sort({ field: 'asc', test: -1 }); - * query.sort('field -test'); - * query.sort([['field', 1], ['test', -1]]); - * - * ####Note - * - * - The array syntax `.sort([['field', 1], ['test', -1]])` can only be used with [mongodb driver >= 2.0.46](https://github.com/mongodb/node-mongodb-native/blob/2.1/HISTORY.md#2046-2015-10-15). - * - Cannot be used with `distinct()` - * - * @param {Object|String|Array} arg - * @return {Query} this - * @api public - */ - - -Query.prototype.sort = function (arg) { - if (!arg) return this; - var i, len, field; - - this._validate('sort'); - - var type = _typeof(arg); // .sort([['field', 1], ['test', -1]]) - - - if (Array.isArray(arg)) { - len = arg.length; - - for (i = 0; i < arg.length; ++i) { - if (!Array.isArray(arg[i])) { - throw new Error('Invalid sort() argument, must be array of arrays'); - } - - _pushArr(this.options, arg[i][0], arg[i][1]); - } - - return this; - } // .sort('field -test') - - - if (1 === arguments.length && 'string' == type) { - arg = arg.split(/\s+/); - len = arg.length; - - for (i = 0; i < len; ++i) { - field = arg[i]; - if (!field) continue; - var ascend = '-' == field[0] ? -1 : 1; - if (ascend === -1) field = field.substring(1); - push(this.options, field, ascend); - } - - return this; - } // .sort({ field: 1, test: -1 }) - - - if (utils.isObject(arg)) { - var keys = utils.keys(arg); - - for (i = 0; i < keys.length; ++i) { - field = keys[i]; - push(this.options, field, arg[field]); - } - - return this; - } - - if (typeof Map !== 'undefined' && arg instanceof Map) { - _pushMap(this.options, arg); - - return this; - } - - throw new TypeError('Invalid sort() argument. Must be a string, object, or array.'); -}; -/*! - * @ignore - */ - - -var _validSortValue = { - 1: 1, - '-1': -1, - asc: 1, - ascending: 1, - desc: -1, - descending: -1 -}; - -function push(opts, field, value) { - if (Array.isArray(opts.sort)) { - throw new TypeError('Can\'t mix sort syntaxes. Use either array or object:' + '\n- `.sort([[\'field\', 1], [\'test\', -1]])`' + '\n- `.sort({ field: 1, test: -1 })`'); - } - - var s; - - if (value && value.$meta) { - s = opts.sort || (opts.sort = {}); - s[field] = { - $meta: value.$meta - }; - return; - } - - s = opts.sort || (opts.sort = {}); - var val = String(value || 1).toLowerCase(); - val = _validSortValue[val]; - if (!val) throw new TypeError('Invalid sort value: { ' + field + ': ' + value + ' }'); - s[field] = val; -} - -function _pushArr(opts, field, value) { - opts.sort = opts.sort || []; - - if (!Array.isArray(opts.sort)) { - throw new TypeError('Can\'t mix sort syntaxes. Use either array or object:' + '\n- `.sort([[\'field\', 1], [\'test\', -1]])`' + '\n- `.sort({ field: 1, test: -1 })`'); - } - - var val = String(value || 1).toLowerCase(); - val = _validSortValue[val]; - if (!val) throw new TypeError('Invalid sort value: [ ' + field + ', ' + value + ' ]'); - opts.sort.push([field, val]); -} - -function _pushMap(opts, map) { - opts.sort = opts.sort || new Map(); - - if (!(opts.sort instanceof Map)) { - throw new TypeError('Can\'t mix sort syntaxes. Use either array or ' + 'object or map consistently'); - } - - map.forEach(function (value, key) { - var val = String(value || 1).toLowerCase(); - val = _validSortValue[val]; - if (!val) throw new TypeError('Invalid sort value: < ' + key + ': ' + value + ' >'); - opts.sort.set(key, val); - }); -} -/** - * Specifies the limit option. - * - * ####Example - * - * query.limit(20) - * - * ####Note - * - * Cannot be used with `distinct()` - * - * @method limit - * @memberOf Query - * @param {Number} val - * @see mongodb http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%7B%7Blimit%28%29%7D%7D - * @api public - */ - -/** - * Specifies the skip option. - * - * ####Example - * - * query.skip(100).limit(20) - * - * ####Note - * - * Cannot be used with `distinct()` - * - * @method skip - * @memberOf Query - * @param {Number} val - * @see mongodb http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%7B%7Bskip%28%29%7D%7D - * @api public - */ - -/** - * Specifies the maxScan option. - * - * ####Example - * - * query.maxScan(100) - * - * ####Note - * - * Cannot be used with `distinct()` - * - * @method maxScan - * @memberOf Query - * @param {Number} val - * @see mongodb http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24maxScan - * @api public - */ - -/** - * Specifies the batchSize option. - * - * ####Example - * - * query.batchSize(100) - * - * ####Note - * - * Cannot be used with `distinct()` - * - * @method batchSize - * @memberOf Query - * @param {Number} val - * @see mongodb http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%7B%7BbatchSize%28%29%7D%7D - * @api public - */ - -/** - * Specifies the `comment` option. - * - * ####Example - * - * query.comment('login query') - * - * ####Note - * - * Cannot be used with `distinct()` - * - * @method comment - * @memberOf Query - * @param {Number} val - * @see mongodb http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24comment - * @api public - */ - -/*! - * limit, skip, maxScan, batchSize, comment - * - * Sets these associated options. - * - * query.comment('feed query'); - */ - - -['limit', 'skip', 'maxScan', 'batchSize', 'comment'].forEach(function (method) { - Query.prototype[method] = function (v) { - this._validate(method); - - this.options[method] = v; - return this; - }; -}); -/** - * Specifies the maxTimeMS option. - * - * ####Example - * - * query.maxTime(100) - * query.maxTimeMS(100) - * - * @method maxTime - * @memberOf Query - * @param {Number} ms - * @see mongodb http://docs.mongodb.org/manual/reference/operator/meta/maxTimeMS/#op._S_maxTimeMS - * @api public - */ - -Query.prototype.maxTime = Query.prototype.maxTimeMS = function (ms) { - this._validate('maxTime'); - - this.options.maxTimeMS = ms; - return this; -}; -/** - * Specifies this query as a `snapshot` query. - * - * ####Example - * - * mquery().snapshot() // true - * mquery().snapshot(true) - * mquery().snapshot(false) - * - * ####Note - * - * Cannot be used with `distinct()` - * - * @see mongodb http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%7B%7Bsnapshot%28%29%7D%7D - * @return {Query} this - * @api public - */ - - -Query.prototype.snapshot = function () { - this._validate('snapshot'); - - this.options.snapshot = arguments.length ? !!arguments[0] : true; - return this; -}; -/** - * Sets query hints. - * - * ####Example - * - * query.hint({ indexA: 1, indexB: -1}); - * query.hint('indexA_1_indexB_1'); - * - * ####Note - * - * Cannot be used with `distinct()` - * - * @param {Object|string} val a hint object or the index name - * @return {Query} this - * @see mongodb http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24hint - * @api public - */ - - -Query.prototype.hint = function () { - if (0 === arguments.length) return this; - - this._validate('hint'); - - var arg = arguments[0]; - - if (utils.isObject(arg)) { - var hint = this.options.hint || (this.options.hint = {}); // must keep object keys in order so don't use Object.keys() - - for (var k in arg) { - hint[k] = arg[k]; - } - - return this; - } - - if (typeof arg === 'string') { - this.options.hint = arg; - return this; - } - - throw new TypeError('Invalid hint. ' + arg); -}; -/** - * Requests acknowledgement that this operation has been persisted to MongoDB's - * on-disk journal. - * This option is only valid for operations that write to the database: - * - * - `deleteOne()` - * - `deleteMany()` - * - `findOneAndDelete()` - * - `findOneAndUpdate()` - * - `remove()` - * - `update()` - * - `updateOne()` - * - `updateMany()` - * - * Defaults to the `j` value if it is specified in writeConcern options - * - * ####Example: - * - * mquery().w(2).j(true).wtimeout(2000); - * - * @method j - * @memberOf Query - * @instance - * @param {boolean} val - * @see mongodb https://docs.mongodb.com/manual/reference/write-concern/#j-option - * @return {Query} this - * @api public - */ - - -Query.prototype.j = function j(val) { - this.options.j = val; - return this; -}; -/** - * Sets the slaveOk option. _Deprecated_ in MongoDB 2.2 in favor of read preferences. - * - * ####Example: - * - * query.slaveOk() // true - * query.slaveOk(true) - * query.slaveOk(false) - * - * @deprecated use read() preferences instead if on mongodb >= 2.2 - * @param {Boolean} v defaults to true - * @see mongodb http://docs.mongodb.org/manual/applications/replication/#read-preference - * @see read() - * @return {Query} this - * @api public - */ - - -Query.prototype.slaveOk = function (v) { - this.options.slaveOk = arguments.length ? !!v : true; - return this; -}; -/** - * Sets the readPreference option for the query. - * - * ####Example: - * - * new Query().read('primary') - * new Query().read('p') // same as primary - * - * new Query().read('primaryPreferred') - * new Query().read('pp') // same as primaryPreferred - * - * new Query().read('secondary') - * new Query().read('s') // same as secondary - * - * new Query().read('secondaryPreferred') - * new Query().read('sp') // same as secondaryPreferred - * - * new Query().read('nearest') - * new Query().read('n') // same as nearest - * - * // you can also use mongodb.ReadPreference class to also specify tags - * new Query().read(mongodb.ReadPreference('secondary', [{ dc:'sf', s: 1 },{ dc:'ma', s: 2 }])) - * - * new Query().setReadPreference('primary') // alias of .read() - * - * ####Preferences: - * - * primary - (default) Read from primary only. Operations will produce an error if primary is unavailable. Cannot be combined with tags. - * secondary Read from secondary if available, otherwise error. - * primaryPreferred Read from primary if available, otherwise a secondary. - * secondaryPreferred Read from a secondary if available, otherwise read from the primary. - * nearest All operations read from among the nearest candidates, but unlike other modes, this option will include both the primary and all secondaries in the random selection. - * - * Aliases - * - * p primary - * pp primaryPreferred - * s secondary - * sp secondaryPreferred - * n nearest - * - * Read more about how to use read preferences [here](http://docs.mongodb.org/manual/applications/replication/#read-preference) and [here](http://mongodb.github.com/node-mongodb-native/driver-articles/anintroductionto1_1and2_2.html#read-preferences). - * - * @param {String|ReadPreference} pref one of the listed preference options or their aliases - * @see mongodb http://docs.mongodb.org/manual/applications/replication/#read-preference - * @see driver http://mongodb.github.com/node-mongodb-native/driver-articles/anintroductionto1_1and2_2.html#read-preferences - * @return {Query} this - * @api public - */ - - -Query.prototype.read = Query.prototype.setReadPreference = function (pref) { - if (arguments.length > 1 && !Query.prototype.read.deprecationWarningIssued) { - console.error('Deprecation warning: \'tags\' argument is not supported anymore in Query.read() method. Please use mongodb.ReadPreference object instead.'); - Query.prototype.read.deprecationWarningIssued = true; - } - - this.options.readPreference = utils.readPref(pref); - return this; -}; -/** - * Sets the readConcern option for the query. - * - * ####Example: - * - * new Query().readConcern('local') - * new Query().readConcern('l') // same as local - * - * new Query().readConcern('available') - * new Query().readConcern('a') // same as available - * - * new Query().readConcern('majority') - * new Query().readConcern('m') // same as majority - * - * new Query().readConcern('linearizable') - * new Query().readConcern('lz') // same as linearizable - * - * new Query().readConcern('snapshot') - * new Query().readConcern('s') // same as snapshot - * - * new Query().r('s') // r is alias of readConcern - * - * - * ####Read Concern Level: - * - * local MongoDB 3.2+ The query returns from the instance with no guarantee guarantee that the data has been written to a majority of the replica set members (i.e. may be rolled back). - * available MongoDB 3.6+ The query returns from the instance with no guarantee guarantee that the data has been written to a majority of the replica set members (i.e. may be rolled back). - * majority MongoDB 3.2+ The query returns the data that has been acknowledged by a majority of the replica set members. The documents returned by the read operation are durable, even in the event of failure. - * linearizable MongoDB 3.4+ The query returns data that reflects all successful majority-acknowledged writes that completed prior to the start of the read operation. The query may wait for concurrently executing writes to propagate to a majority of replica set members before returning results. - * snapshot MongoDB 4.0+ Only available for operations within multi-document transactions. Upon transaction commit with write concern "majority", the transaction operations are guaranteed to have read from a snapshot of majority-committed data. - - - * - * - * Aliases - * - * l local - * a available - * m majority - * lz linearizable - * s snapshot - * - * Read more about how to use read concern [here](https://docs.mongodb.com/manual/reference/read-concern/). - * - * @param {String} level one of the listed read concern level or their aliases - * @see mongodb https://docs.mongodb.com/manual/reference/read-concern/ - * @return {Query} this - * @api public - */ - - -Query.prototype.readConcern = Query.prototype.r = function (level) { - this.options.readConcern = utils.readConcern(level); - return this; -}; -/** - * Sets tailable option. - * - * ####Example - * - * query.tailable() <== true - * query.tailable(true) - * query.tailable(false) - * - * ####Note - * - * Cannot be used with `distinct()` - * - * @param {Boolean} v defaults to true - * @see mongodb http://www.mongodb.org/display/DOCS/Tailable+Cursors - * @api public - */ - - -Query.prototype.tailable = function () { - this._validate('tailable'); - - this.options.tailable = arguments.length ? !!arguments[0] : true; - return this; -}; -/** - * Sets the specified number of `mongod` servers, or tag set of `mongod` servers, - * that must acknowledge this write before this write is considered successful. - * This option is only valid for operations that write to the database: - * - * - `deleteOne()` - * - `deleteMany()` - * - `findOneAndDelete()` - * - `findOneAndUpdate()` - * - `remove()` - * - `update()` - * - `updateOne()` - * - `updateMany()` - * - * Defaults to the `w` value if it is specified in writeConcern options - * - * ####Example: - * - * mquery().writeConcern(0) - * mquery().writeConcern(1) - * mquery().writeConcern({ w: 1, j: true, wtimeout: 2000 }) - * mquery().writeConcern('majority') - * mquery().writeConcern('m') // same as majority - * mquery().writeConcern('tagSetName') // if the tag set is 'm', use .writeConcern({ w: 'm' }) instead - * mquery().w(1) // w is alias of writeConcern - * - * @method writeConcern - * @memberOf Query - * @instance - * @param {String|number|object} concern 0 for fire-and-forget, 1 for acknowledged by one server, 'majority' for majority of the replica set, or [any of the more advanced options](https://docs.mongodb.com/manual/reference/write-concern/#w-option). - * @see mongodb https://docs.mongodb.com/manual/reference/write-concern/#w-option - * @return {Query} this - * @api public - */ - - -Query.prototype.writeConcern = Query.prototype.w = function writeConcern(concern) { - if ('object' === _typeof(concern)) { - if ('undefined' !== typeof concern.j) this.options.j = concern.j; - if ('undefined' !== typeof concern.w) this.options.w = concern.w; - if ('undefined' !== typeof concern.wtimeout) this.options.wtimeout = concern.wtimeout; - } else { - this.options.w = 'm' === concern ? 'majority' : concern; - } - - return this; -}; -/** - * Specifies a time limit, in milliseconds, for the write concern. - * If `ms > 1`, it is maximum amount of time to wait for this write - * to propagate through the replica set before this operation fails. - * The default is `0`, which means no timeout. - * - * This option is only valid for operations that write to the database: - * - * - `deleteOne()` - * - `deleteMany()` - * - `findOneAndDelete()` - * - `findOneAndUpdate()` - * - `remove()` - * - `update()` - * - `updateOne()` - * - `updateMany()` - * - * Defaults to `wtimeout` value if it is specified in writeConcern - * - * ####Example: - * - * mquery().w(2).j(true).wtimeout(2000) - * - * @method wtimeout - * @memberOf Query - * @instance - * @param {number} ms number of milliseconds to wait - * @see mongodb https://docs.mongodb.com/manual/reference/write-concern/#wtimeout - * @return {Query} this - * @api public - */ - - -Query.prototype.wtimeout = Query.prototype.wTimeout = function wtimeout(ms) { - this.options.wtimeout = ms; - return this; -}; -/** - * Merges another Query or conditions object into this one. - * - * When a Query is passed, conditions, field selection and options are merged. - * - * @param {Query|Object} source - * @return {Query} this - */ - - -Query.prototype.merge = function (source) { - if (!source) return this; - if (!Query.canMerge(source)) throw new TypeError('Invalid argument. Expected instanceof mquery or plain object'); - - if (source instanceof Query) { - // if source has a feature, apply it to ourselves - if (source._conditions) { - utils.merge(this._conditions, source._conditions); - } - - if (source._fields) { - this._fields || (this._fields = {}); - utils.merge(this._fields, source._fields); - } - - if (source.options) { - this.options || (this.options = {}); - utils.merge(this.options, source.options); - } - - if (source._update) { - this._update || (this._update = {}); - utils.mergeClone(this._update, source._update); - } - - if (source._distinct) { - this._distinct = source._distinct; - } - - return this; - } // plain object - - - utils.merge(this._conditions, source); - return this; -}; -/** - * Finds documents. - * - * Passing a `callback` executes the query. - * - * ####Example - * - * query.find() - * query.find(callback) - * query.find({ name: 'Burning Lights' }, callback) - * - * @param {Object} [criteria] mongodb selector - * @param {Function} [callback] - * @return {Query} this - * @api public - */ - - -Query.prototype.find = function (criteria, callback) { - this.op = 'find'; - - if ('function' === typeof criteria) { - callback = criteria; - criteria = undefined; - } else if (Query.canMerge(criteria)) { - this.merge(criteria); - } - - if (!callback) return this; - var conds = this._conditions; - - var options = this._optionsForExec(); - - if (this.$useProjection) { - options.projection = this._fieldsForExec(); - } else { - options.fields = this._fieldsForExec(); - } - - debug('find', this._collection.collectionName, conds, options); - callback = this._wrapCallback('find', callback, { - conditions: conds, - options: options - }); - - this._collection.find(conds, options, utils.tick(callback)); - - return this; -}; -/** - * Returns the query cursor - * - * ####Examples - * - * query.find().cursor(); - * query.cursor({ name: 'Burning Lights' }); - * - * @param {Object} [criteria] mongodb selector - * @return {Object} cursor - * @api public - */ - - -Query.prototype.cursor = function cursor(criteria) { - if (this.op) { - if (this.op !== 'find') { - throw new TypeError('.cursor only support .find method'); - } - } else { - this.find(criteria); - } - - var conds = this._conditions; - - var options = this._optionsForExec(); - - if (this.$useProjection) { - options.projection = this._fieldsForExec(); - } else { - options.fields = this._fieldsForExec(); - } - - debug('findCursor', this._collection.collectionName, conds, options); - return this._collection.findCursor(conds, options); -}; -/** - * Executes the query as a findOne() operation. - * - * Passing a `callback` executes the query. - * - * ####Example - * - * query.findOne().where('name', /^Burning/); - * - * query.findOne({ name: /^Burning/ }) - * - * query.findOne({ name: /^Burning/ }, callback); // executes - * - * query.findOne(function (err, doc) { - * if (err) return handleError(err); - * if (doc) { - * // doc may be null if no document matched - * - * } - * }); - * - * @param {Object|Query} [criteria] mongodb selector - * @param {Function} [callback] - * @return {Query} this - * @api public - */ - - -Query.prototype.findOne = function (criteria, callback) { - this.op = 'findOne'; - - if ('function' === typeof criteria) { - callback = criteria; - criteria = undefined; - } else if (Query.canMerge(criteria)) { - this.merge(criteria); - } - - if (!callback) return this; - var conds = this._conditions; - - var options = this._optionsForExec(); - - if (this.$useProjection) { - options.projection = this._fieldsForExec(); - } else { - options.fields = this._fieldsForExec(); - } - - debug('findOne', this._collection.collectionName, conds, options); - callback = this._wrapCallback('findOne', callback, { - conditions: conds, - options: options - }); - - this._collection.findOne(conds, options, utils.tick(callback)); - - return this; -}; -/** - * Exectues the query as a count() operation. - * - * Passing a `callback` executes the query. - * - * ####Example - * - * query.count().where('color', 'black').exec(callback); - * - * query.count({ color: 'black' }).count(callback) - * - * query.count({ color: 'black' }, callback) - * - * query.where('color', 'black').count(function (err, count) { - * if (err) return handleError(err); - * console.log('there are %d kittens', count); - * }) - * - * @param {Object} [criteria] mongodb selector - * @param {Function} [callback] - * @return {Query} this - * @see mongodb http://www.mongodb.org/display/DOCS/Aggregation#Aggregation-Count - * @api public - */ - - -Query.prototype.count = function (criteria, callback) { - this.op = 'count'; - - this._validate(); - - if ('function' === typeof criteria) { - callback = criteria; - criteria = undefined; - } else if (Query.canMerge(criteria)) { - this.merge(criteria); - } - - if (!callback) return this; - - var conds = this._conditions, - options = this._optionsForExec(); - - debug('count', this._collection.collectionName, conds, options); - callback = this._wrapCallback('count', callback, { - conditions: conds, - options: options - }); - - this._collection.count(conds, options, utils.tick(callback)); - - return this; -}; -/** - * Declares or executes a distinct() operation. - * - * Passing a `callback` executes the query. - * - * ####Example - * - * distinct(criteria, field, fn) - * distinct(criteria, field) - * distinct(field, fn) - * distinct(field) - * distinct(fn) - * distinct() - * - * @param {Object|Query} [criteria] - * @param {String} [field] - * @param {Function} [callback] - * @return {Query} this - * @see mongodb http://www.mongodb.org/display/DOCS/Aggregation#Aggregation-Distinct - * @api public - */ - - -Query.prototype.distinct = function (criteria, field, callback) { - this.op = 'distinct'; - - this._validate(); - - if (!callback) { - switch (_typeof(field)) { - case 'function': - callback = field; - - if ('string' == typeof criteria) { - field = criteria; - criteria = undefined; - } - - break; - - case 'undefined': - case 'string': - break; - - default: - throw new TypeError('Invalid `field` argument. Must be string or function'); - } - - switch (_typeof(criteria)) { - case 'function': - callback = criteria; - criteria = field = undefined; - break; - - case 'string': - field = criteria; - criteria = undefined; - break; - } - } - - if ('string' == typeof field) { - this._distinct = field; - } - - if (Query.canMerge(criteria)) { - this.merge(criteria); - } - - if (!callback) { - return this; - } - - if (!this._distinct) { - throw new Error('No value for `distinct` has been declared'); - } - - var conds = this._conditions, - options = this._optionsForExec(); - - debug('distinct', this._collection.collectionName, conds, options); - callback = this._wrapCallback('distinct', callback, { - conditions: conds, - options: options - }); - - this._collection.distinct(this._distinct, conds, options, utils.tick(callback)); - - return this; -}; -/** - * Declare and/or execute this query as an update() operation. By default, - * `update()` only modifies the _first_ document that matches `criteria`. - * - * _All paths passed that are not $atomic operations will become $set ops._ - * - * ####Example - * - * mquery({ _id: id }).update({ title: 'words' }, ...) - * - * becomes - * - * collection.update({ _id: id }, { $set: { title: 'words' }}, ...) - * - * ####Note - * - * Passing an empty object `{}` as the doc will result in a no-op unless the `overwrite` option is passed. Without the `overwrite` option set, the update operation will be ignored and the callback executed without sending the command to MongoDB so as to prevent accidently overwritting documents in the collection. - * - * ####Note - * - * The operation is only executed when a callback is passed. To force execution without a callback (which would be an unsafe write), we must first call update() and then execute it by using the `exec()` method. - * - * var q = mquery(collection).where({ _id: id }); - * q.update({ $set: { name: 'bob' }}).update(); // not executed - * - * var q = mquery(collection).where({ _id: id }); - * q.update({ $set: { name: 'bob' }}).exec(); // executed as unsafe - * - * // keys that are not $atomic ops become $set. - * // this executes the same command as the previous example. - * q.update({ name: 'bob' }).where({ _id: id }).exec(); - * - * var q = mquery(collection).update(); // not executed - * - * // overwriting with empty docs - * var q.where({ _id: id }).setOptions({ overwrite: true }) - * q.update({ }, callback); // executes - * - * // multi update with overwrite to empty doc - * var q = mquery(collection).where({ _id: id }); - * q.setOptions({ multi: true, overwrite: true }) - * q.update({ }); - * q.update(callback); // executed - * - * // multi updates - * mquery() - * .collection(coll) - * .update({ name: /^match/ }, { $set: { arr: [] }}, { multi: true }, callback) - * // more multi updates - * mquery({ }) - * .collection(coll) - * .setOptions({ multi: true }) - * .update({ $set: { arr: [] }}, callback) - * - * // single update by default - * mquery({ email: 'address@example.com' }) - * .collection(coll) - * .update({ $inc: { counter: 1 }}, callback) - * - * // summary - * update(criteria, doc, opts, cb) // executes - * update(criteria, doc, opts) - * update(criteria, doc, cb) // executes - * update(criteria, doc) - * update(doc, cb) // executes - * update(doc) - * update(cb) // executes - * update(true) // executes (unsafe write) - * update() - * - * @param {Object} [criteria] - * @param {Object} [doc] the update command - * @param {Object} [options] - * @param {Function} [callback] - * @return {Query} this - * @api public - */ - - -Query.prototype.update = function update(criteria, doc, options, callback) { - var force; - - switch (arguments.length) { - case 3: - if ('function' == typeof options) { - callback = options; - options = undefined; - } - - break; - - case 2: - if ('function' == typeof doc) { - callback = doc; - doc = criteria; - criteria = undefined; - } - - break; - - case 1: - switch (_typeof(criteria)) { - case 'function': - callback = criteria; - criteria = options = doc = undefined; - break; - - case 'boolean': - // execution with no callback (unsafe write) - force = criteria; - criteria = undefined; - break; - - default: - doc = criteria; - criteria = options = undefined; - break; - } - - } - - return _update(this, 'update', criteria, doc, options, force, callback); -}; -/** - * Declare and/or execute this query as an `updateMany()` operation. Identical - * to `update()` except `updateMany()` will update _all_ documents that match - * `criteria`, rather than just the first one. - * - * _All paths passed that are not $atomic operations will become $set ops._ - * - * ####Example - * - * // Update every document whose `title` contains 'test' - * mquery().updateMany({ title: /test/ }, { year: 2017 }) - * - * @param {Object} [criteria] - * @param {Object} [doc] the update command - * @param {Object} [options] - * @param {Function} [callback] - * @return {Query} this - * @api public - */ - - -Query.prototype.updateMany = function updateMany(criteria, doc, options, callback) { - var force; - - switch (arguments.length) { - case 3: - if ('function' == typeof options) { - callback = options; - options = undefined; - } - - break; - - case 2: - if ('function' == typeof doc) { - callback = doc; - doc = criteria; - criteria = undefined; - } - - break; - - case 1: - switch (_typeof(criteria)) { - case 'function': - callback = criteria; - criteria = options = doc = undefined; - break; - - case 'boolean': - // execution with no callback (unsafe write) - force = criteria; - criteria = undefined; - break; - - default: - doc = criteria; - criteria = options = undefined; - break; - } - - } - - return _update(this, 'updateMany', criteria, doc, options, force, callback); -}; -/** - * Declare and/or execute this query as an `updateOne()` operation. Identical - * to `update()` except `updateOne()` will _always_ update just one document, - * regardless of the `multi` option. - * - * _All paths passed that are not $atomic operations will become $set ops._ - * - * ####Example - * - * // Update the first document whose `title` contains 'test' - * mquery().updateMany({ title: /test/ }, { year: 2017 }) - * - * @param {Object} [criteria] - * @param {Object} [doc] the update command - * @param {Object} [options] - * @param {Function} [callback] - * @return {Query} this - * @api public - */ - - -Query.prototype.updateOne = function updateOne(criteria, doc, options, callback) { - var force; - - switch (arguments.length) { - case 3: - if ('function' == typeof options) { - callback = options; - options = undefined; - } - - break; - - case 2: - if ('function' == typeof doc) { - callback = doc; - doc = criteria; - criteria = undefined; - } - - break; - - case 1: - switch (_typeof(criteria)) { - case 'function': - callback = criteria; - criteria = options = doc = undefined; - break; - - case 'boolean': - // execution with no callback (unsafe write) - force = criteria; - criteria = undefined; - break; - - default: - doc = criteria; - criteria = options = undefined; - break; - } - - } - - return _update(this, 'updateOne', criteria, doc, options, force, callback); -}; -/** - * Declare and/or execute this query as an `replaceOne()` operation. Similar - * to `updateOne()`, except `replaceOne()` is not allowed to use atomic - * modifiers (`$set`, `$push`, etc.). Calling `replaceOne()` will always - * replace the existing doc. - * - * ####Example - * - * // Replace the document with `_id` 1 with `{ _id: 1, year: 2017 }` - * mquery().replaceOne({ _id: 1 }, { year: 2017 }) - * - * @param {Object} [criteria] - * @param {Object} [doc] the update command - * @param {Object} [options] - * @param {Function} [callback] - * @return {Query} this - * @api public - */ - - -Query.prototype.replaceOne = function replaceOne(criteria, doc, options, callback) { - var force; - - switch (arguments.length) { - case 3: - if ('function' == typeof options) { - callback = options; - options = undefined; - } - - break; - - case 2: - if ('function' == typeof doc) { - callback = doc; - doc = criteria; - criteria = undefined; - } - - break; - - case 1: - switch (_typeof(criteria)) { - case 'function': - callback = criteria; - criteria = options = doc = undefined; - break; - - case 'boolean': - // execution with no callback (unsafe write) - force = criteria; - criteria = undefined; - break; - - default: - doc = criteria; - criteria = options = undefined; - break; - } - - } - - this.setOptions({ - overwrite: true - }); - return _update(this, 'replaceOne', criteria, doc, options, force, callback); -}; -/*! - * Internal helper for update, updateMany, updateOne - */ - - -function _update(query, op, criteria, doc, options, force, callback) { - query.op = op; - - if (Query.canMerge(criteria)) { - query.merge(criteria); - } - - if (doc) { - query._mergeUpdate(doc); - } - - if (utils.isObject(options)) { - // { overwrite: true } - query.setOptions(options); - } // we are done if we don't have callback and they are - // not forcing an unsafe write. - - - if (!(force || callback)) { - return query; - } - - if (!query._update || !query.options.overwrite && 0 === utils.keys(query._update).length) { - callback && utils.soon(callback.bind(null, null, 0)); - return query; - } - - options = query._optionsForExec(); - if (!callback) options.safe = false; - criteria = query._conditions; - doc = query._updateForExec(); - debug('update', query._collection.collectionName, criteria, doc, options); - callback = query._wrapCallback(op, callback, { - conditions: criteria, - doc: doc, - options: options - }); - - query._collection[op](criteria, doc, options, utils.tick(callback)); - - return query; -} -/** - * Declare and/or execute this query as a remove() operation. - * - * ####Example - * - * mquery(collection).remove({ artist: 'Anne Murray' }, callback) - * - * ####Note - * - * The operation is only executed when a callback is passed. To force execution without a callback (which would be an unsafe write), we must first call remove() and then execute it by using the `exec()` method. - * - * // not executed - * var query = mquery(collection).remove({ name: 'Anne Murray' }) - * - * // executed - * mquery(collection).remove({ name: 'Anne Murray' }, callback) - * mquery(collection).remove({ name: 'Anne Murray' }).remove(callback) - * - * // executed without a callback (unsafe write) - * query.exec() - * - * // summary - * query.remove(conds, fn); // executes - * query.remove(conds) - * query.remove(fn) // executes - * query.remove() - * - * @param {Object|Query} [criteria] mongodb selector - * @param {Function} [callback] - * @return {Query} this - * @api public - */ - - -Query.prototype.remove = function (criteria, callback) { - this.op = 'remove'; - var force; - - if ('function' === typeof criteria) { - callback = criteria; - criteria = undefined; - } else if (Query.canMerge(criteria)) { - this.merge(criteria); - } else if (true === criteria) { - force = criteria; - criteria = undefined; - } - - if (!(force || callback)) return this; - - var options = this._optionsForExec(); - - if (!callback) options.safe = false; - var conds = this._conditions; - debug('remove', this._collection.collectionName, conds, options); - callback = this._wrapCallback('remove', callback, { - conditions: conds, - options: options - }); - - this._collection.remove(conds, options, utils.tick(callback)); - - return this; -}; -/** - * Declare and/or execute this query as a `deleteOne()` operation. Behaves like - * `remove()`, except for ignores the `justOne` option and always deletes at - * most one document. - * - * ####Example - * - * mquery(collection).deleteOne({ artist: 'Anne Murray' }, callback) - * - * @param {Object|Query} [criteria] mongodb selector - * @param {Function} [callback] - * @return {Query} this - * @api public - */ - - -Query.prototype.deleteOne = function (criteria, callback) { - this.op = 'deleteOne'; - var force; - - if ('function' === typeof criteria) { - callback = criteria; - criteria = undefined; - } else if (Query.canMerge(criteria)) { - this.merge(criteria); - } else if (true === criteria) { - force = criteria; - criteria = undefined; - } - - if (!(force || callback)) return this; - - var options = this._optionsForExec(); - - if (!callback) options.safe = false; - delete options.justOne; - var conds = this._conditions; - debug('deleteOne', this._collection.collectionName, conds, options); - callback = this._wrapCallback('deleteOne', callback, { - conditions: conds, - options: options - }); - - this._collection.deleteOne(conds, options, utils.tick(callback)); - - return this; -}; -/** - * Declare and/or execute this query as a `deleteMany()` operation. Behaves like - * `remove()`, except for ignores the `justOne` option and always deletes - * _every_ document that matches `criteria`. - * - * ####Example - * - * mquery(collection).deleteMany({ artist: 'Anne Murray' }, callback) - * - * @param {Object|Query} [criteria] mongodb selector - * @param {Function} [callback] - * @return {Query} this - * @api public - */ - - -Query.prototype.deleteMany = function (criteria, callback) { - this.op = 'deleteMany'; - var force; - - if ('function' === typeof criteria) { - callback = criteria; - criteria = undefined; - } else if (Query.canMerge(criteria)) { - this.merge(criteria); - } else if (true === criteria) { - force = criteria; - criteria = undefined; - } - - if (!(force || callback)) return this; - - var options = this._optionsForExec(); - - if (!callback) options.safe = false; - delete options.justOne; - var conds = this._conditions; - debug('deleteOne', this._collection.collectionName, conds, options); - callback = this._wrapCallback('deleteOne', callback, { - conditions: conds, - options: options - }); - - this._collection.deleteMany(conds, options, utils.tick(callback)); - - return this; -}; -/** - * Issues a mongodb [findAndModify](http://www.mongodb.org/display/DOCS/findAndModify+Command) update command. - * - * Finds a matching document, updates it according to the `update` arg, passing any `options`, and returns the found document (if any) to the callback. The query executes immediately if `callback` is passed. - * - * ####Available options - * - * - `new`: bool - true to return the modified document rather than the original. defaults to true - * - `upsert`: bool - creates the object if it doesn't exist. defaults to false. - * - `sort`: if multiple docs are found by the conditions, sets the sort order to choose which doc to update - * - * ####Examples - * - * query.findOneAndUpdate(conditions, update, options, callback) // executes - * query.findOneAndUpdate(conditions, update, options) // returns Query - * query.findOneAndUpdate(conditions, update, callback) // executes - * query.findOneAndUpdate(conditions, update) // returns Query - * query.findOneAndUpdate(update, callback) // returns Query - * query.findOneAndUpdate(update) // returns Query - * query.findOneAndUpdate(callback) // executes - * query.findOneAndUpdate() // returns Query - * - * @param {Object|Query} [query] - * @param {Object} [doc] - * @param {Object} [options] - * @param {Function} [callback] - * @see mongodb http://www.mongodb.org/display/DOCS/findAndModify+Command - * @return {Query} this - * @api public - */ - - -Query.prototype.findOneAndUpdate = function (criteria, doc, options, callback) { - this.op = 'findOneAndUpdate'; - - this._validate(); - - switch (arguments.length) { - case 3: - if ('function' == typeof options) { - callback = options; - options = {}; - } - - break; - - case 2: - if ('function' == typeof doc) { - callback = doc; - doc = criteria; - criteria = undefined; - } - - options = undefined; - break; - - case 1: - if ('function' == typeof criteria) { - callback = criteria; - criteria = options = doc = undefined; - } else { - doc = criteria; - criteria = options = undefined; - } - - } - - if (Query.canMerge(criteria)) { - this.merge(criteria); - } // apply doc - - - if (doc) { - this._mergeUpdate(doc); - } - - options && this.setOptions(options); - if (!callback) return this; - var conds = this._conditions; - - var update = this._updateForExec(); - - options = this._optionsForExec(); - return this._collection.findOneAndUpdate(conds, update, options, utils.tick(callback)); -}; -/** - * Issues a mongodb [findAndModify](http://www.mongodb.org/display/DOCS/findAndModify+Command) remove command. - * - * Finds a matching document, removes it, passing the found document (if any) to the callback. Executes immediately if `callback` is passed. - * - * ####Available options - * - * - `sort`: if multiple docs are found by the conditions, sets the sort order to choose which doc to update - * - * ####Examples - * - * A.where().findOneAndRemove(conditions, options, callback) // executes - * A.where().findOneAndRemove(conditions, options) // return Query - * A.where().findOneAndRemove(conditions, callback) // executes - * A.where().findOneAndRemove(conditions) // returns Query - * A.where().findOneAndRemove(callback) // executes - * A.where().findOneAndRemove() // returns Query - * A.where().findOneAndDelete() // alias of .findOneAndRemove() - * - * @param {Object} [conditions] - * @param {Object} [options] - * @param {Function} [callback] - * @return {Query} this - * @see mongodb http://www.mongodb.org/display/DOCS/findAndModify+Command - * @api public - */ - - -Query.prototype.findOneAndRemove = Query.prototype.findOneAndDelete = function (conditions, options, callback) { - this.op = 'findOneAndRemove'; - - this._validate(); - - if ('function' == typeof options) { - callback = options; - options = undefined; - } else if ('function' == typeof conditions) { - callback = conditions; - conditions = undefined; - } // apply conditions - - - if (Query.canMerge(conditions)) { - this.merge(conditions); - } // apply options - - - options && this.setOptions(options); - if (!callback) return this; - options = this._optionsForExec(); - var conds = this._conditions; - return this._collection.findOneAndDelete(conds, options, utils.tick(callback)); -}; -/** - * Wrap callback to add tracing - * - * @param {Function} callback - * @param {Object} [queryInfo] - * @api private - */ - - -Query.prototype._wrapCallback = function (method, callback, queryInfo) { - var traceFunction = this._traceFunction || Query.traceFunction; - - if (traceFunction) { - queryInfo.collectionName = this._collection.collectionName; - var traceCallback = traceFunction && traceFunction.call(null, method, queryInfo, this); - var startTime = new Date().getTime(); - return function wrapperCallback(err, result) { - if (traceCallback) { - var millis = new Date().getTime() - startTime; - traceCallback.call(null, err, result, millis); - } - - if (callback) { - callback.apply(null, arguments); - } - }; - } - - return callback; -}; -/** - * Add trace function that gets called when the query is executed. - * The function will be called with (method, queryInfo, query) and - * should return a callback function which will be called - * with (err, result, millis) when the query is complete. - * - * queryInfo is an object containing: { - * collectionName: , - * conditions: , - * options: , - * doc: [document to update, if applicable] - * } - * - * NOTE: Does not trace stream queries. - * - * @param {Function} traceFunction - * @return {Query} this - * @api public - */ - - -Query.prototype.setTraceFunction = function (traceFunction) { - this._traceFunction = traceFunction; - return this; -}; -/** - * Executes the query - * - * ####Examples - * - * query.exec(); - * query.exec(callback); - * query.exec('update'); - * query.exec('find', callback); - * - * @param {String|Function} [operation] - * @param {Function} [callback] - * @api public - */ - - -Query.prototype.exec = function exec(op, callback) { - switch (_typeof(op)) { - case 'function': - callback = op; - op = null; - break; - - case 'string': - this.op = op; - break; - } - - assert.ok(this.op, 'Missing query type: (find, update, etc)'); - - if ('update' == this.op || 'remove' == this.op) { - callback || (callback = true); - } - - var _this = this; - - if ('function' == typeof callback) { - this[this.op](callback); - } else { - return new Query.Promise(function (success, error) { - _this[_this.op](function (err, val) { - if (err) error(err);else success(val); - success = error = null; - }); - }); - } -}; -/** - * Returns a thunk which when called runs this.exec() - * - * The thunk receives a callback function which will be - * passed to `this.exec()` - * - * @return {Function} - * @api public - */ - - -Query.prototype.thunk = function () { - var _this = this; - - return function (cb) { - _this.exec(cb); - }; -}; -/** - * Executes the query returning a `Promise` which will be - * resolved with either the doc(s) or rejected with the error. - * - * @param {Function} [resolve] - * @param {Function} [reject] - * @return {Promise} - * @api public - */ - - -Query.prototype.then = function (resolve, reject) { - var _this = this; - - var promise = new Query.Promise(function (success, error) { - _this.exec(function (err, val) { - if (err) error(err);else success(val); - success = error = null; - }); - }); - return promise.then(resolve, reject); -}; -/** - * Returns a cursor for the given `find` query. - * - * @throws Error if operation is not a find - * @returns {Cursor} MongoDB driver cursor - */ - - -Query.prototype.cursor = function () { - if ('find' != this.op) throw new Error('cursor() is only available for find'); - var conds = this._conditions; - - var options = this._optionsForExec(); - - if (this.$useProjection) { - options.projection = this._fieldsForExec(); - } else { - options.fields = this._fieldsForExec(); - } - - debug('cursor', this._collection.collectionName, conds, options); - return this._collection.findCursor(conds, options); -}; -/** - * Determines if field selection has been made. - * - * @return {Boolean} - * @api public - */ - - -Query.prototype.selected = function selected() { - return !!(this._fields && Object.keys(this._fields).length > 0); -}; -/** - * Determines if inclusive field selection has been made. - * - * query.selectedInclusively() // false - * query.select('name') - * query.selectedInclusively() // true - * query.selectedExlusively() // false - * - * @returns {Boolean} - */ - - -Query.prototype.selectedInclusively = function selectedInclusively() { - if (!this._fields) return false; - var keys = Object.keys(this._fields); - if (0 === keys.length) return false; - - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - if (0 === this._fields[key]) return false; - - if (this._fields[key] && _typeof(this._fields[key]) === 'object' && this._fields[key].$meta) { - return false; - } - } - - return true; -}; -/** - * Determines if exclusive field selection has been made. - * - * query.selectedExlusively() // false - * query.select('-name') - * query.selectedExlusively() // true - * query.selectedInclusively() // false - * - * @returns {Boolean} - */ - - -Query.prototype.selectedExclusively = function selectedExclusively() { - if (!this._fields) return false; - var keys = Object.keys(this._fields); - if (0 === keys.length) return false; - - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - if (0 === this._fields[key]) return true; - } - - return false; -}; -/** - * Merges `doc` with the current update object. - * - * @param {Object} doc - */ - - -Query.prototype._mergeUpdate = function (doc) { - if (!this._update) this._update = {}; - - if (doc instanceof Query) { - if (doc._update) { - utils.mergeClone(this._update, doc._update); - } - } else { - utils.mergeClone(this._update, doc); - } -}; -/** - * Returns default options. - * - * @return {Object} - * @api private - */ - - -Query.prototype._optionsForExec = function () { - var options = utils.clone(this.options); - return options; -}; -/** - * Returns fields selection for this query. - * - * @return {Object} - * @api private - */ - - -Query.prototype._fieldsForExec = function () { - return utils.clone(this._fields); -}; -/** - * Return an update document with corrected $set operations. - * - * @api private - */ - - -Query.prototype._updateForExec = function () { - var update = utils.clone(this._update); - var ops = utils.keys(update); - var ret = {}; - - var _iterator = _createForOfIteratorHelper(ops), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var op = _step.value; - - if (this.options.overwrite) { - ret[op] = update[op]; - continue; - } - - if ('$' !== op[0]) { - // fix up $set sugar - if (!ret.$set) { - if (update.$set) { - ret.$set = update.$set; - } else { - ret.$set = {}; - } - } - - ret.$set[op] = update[op]; - if (!~ops.indexOf('$set')) ops.push('$set'); - } else if ('$set' === op) { - if (!ret.$set) { - ret[op] = update[op]; - } - } else { - ret[op] = update[op]; - } - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - this._compiledUpdate = ret; - return ret; -}; -/** - * Make sure _path is set. - * - * @parmam {String} method - */ - - -Query.prototype._ensurePath = function (method) { - if (!this._path) { - var msg = method + '() must be used after where() ' + 'when called with these arguments'; - throw new Error(msg); - } -}; -/*! - * Permissions - */ - - -Query.permissions = __webpack_require__(6477); - -Query._isPermitted = function (a, b) { - var denied = Query.permissions[b]; - if (!denied) return true; - return true !== denied[a]; -}; - -Query.prototype._validate = function (action) { - var fail; - var validator; - - if (undefined === action) { - validator = Query.permissions[this.op]; - if ('function' != typeof validator) return true; - fail = validator(this); - } else if (!Query._isPermitted(action, this.op)) { - fail = action; - } - - if (fail) { - throw new Error(fail + ' cannot be used with ' + this.op); - } -}; -/** - * Determines if `conds` can be merged using `mquery().merge()` - * - * @param {Object} conds - * @return {Boolean} - */ - - -Query.canMerge = function (conds) { - return conds instanceof Query || utils.isObject(conds); -}; -/** - * Set a trace function that will get called whenever a - * query is executed. - * - * See `setTraceFunction()` for details. - * - * @param {Object} conds - * @return {Boolean} - */ - - -Query.setGlobalTraceFunction = function (traceFunction) { - Query.traceFunction = traceFunction; -}; -/*! - * Exports. - */ - - -Query.utils = utils; -Query.env = __webpack_require__(3669); -Query.Collection = __webpack_require__(8514); -Query.BaseCollection = __webpack_require__(3231); -Query.Promise = Promise; -module.exports = exports = Query; // TODO -// test utils - -/***/ }), - -/***/ 6477: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -var denied = exports; - -denied.distinct = function (self) { - if (self._fields && Object.keys(self._fields).length > 0) { - return 'field selection and slice'; - } - - var keys = Object.keys(denied.distinct); - var err; - keys.every(function (option) { - if (self.options[option]) { - err = option; - return false; - } - - return true; - }); - return err; -}; - -denied.distinct.select = denied.distinct.slice = denied.distinct.sort = denied.distinct.limit = denied.distinct.skip = denied.distinct.batchSize = denied.distinct.maxScan = denied.distinct.snapshot = denied.distinct.hint = denied.distinct.tailable = true; // aggregation integration - -denied.findOneAndUpdate = denied.findOneAndRemove = function (self) { - var keys = Object.keys(denied.findOneAndUpdate); - var err; - keys.every(function (option) { - if (self.options[option]) { - err = option; - return false; - } - - return true; - }); - return err; -}; - -denied.findOneAndUpdate.limit = denied.findOneAndUpdate.skip = denied.findOneAndUpdate.batchSize = denied.findOneAndUpdate.maxScan = denied.findOneAndUpdate.snapshot = denied.findOneAndUpdate.tailable = true; - -denied.count = function (self) { - if (self._fields && Object.keys(self._fields).length > 0) { - return 'field selection and slice'; - } - - var keys = Object.keys(denied.count); - var err; - keys.every(function (option) { - if (self.options[option]) { - err = option; - return false; - } - - return true; - }); - return err; -}; - -denied.count.slice = denied.count.batchSize = denied.count.maxScan = denied.count.snapshot = denied.count.tailable = true; - -/***/ }), - -/***/ 728: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; -/* provided dependency */ var Buffer = __webpack_require__(365)["Buffer"]; - -/*! - * Module dependencies. - */ - -var specialProperties = ['__proto__', 'constructor', 'prototype']; -/** - * Clones objects - * - * @param {Object} obj the object to clone - * @param {Object} options - * @return {Object} the cloned object - * @api private - */ - -var clone = exports.clone = function clone(obj, options) { - if (obj === undefined || obj === null) return obj; - if (Array.isArray(obj)) return exports.cloneArray(obj, options); - - if (obj.constructor) { - if (/ObjectI[dD]$/.test(obj.constructor.name)) { - return 'function' == typeof obj.clone ? obj.clone() : new obj.constructor(obj.id); - } - - if (obj.constructor.name === 'ReadPreference') { - return new obj.constructor(obj.mode, clone(obj.tags, options)); - } - - if ('Binary' == obj._bsontype && obj.buffer && obj.value) { - return 'function' == typeof obj.clone ? obj.clone() : new obj.constructor(obj.value(true), obj.sub_type); - } - - if ('Date' === obj.constructor.name || 'Function' === obj.constructor.name) return new obj.constructor(+obj); - if ('RegExp' === obj.constructor.name) return new RegExp(obj); - if ('Buffer' === obj.constructor.name) return Buffer.from(obj); - } - - if (isObject(obj)) return exports.cloneObject(obj, options); - if (obj.valueOf) return obj.valueOf(); -}; -/*! - * ignore - */ - - -exports.cloneObject = function cloneObject(obj, options) { - var minimize = options && options.minimize, - ret = {}, - keys = Object.keys(obj), - len = keys.length; - var hasKeys = false, - val, - k = '', - i = 0; - - for (i = 0; i < len; ++i) { - k = keys[i]; // Not technically prototype pollution because this wouldn't merge properties - // onto `Object.prototype`, but avoid properties like __proto__ as a precaution. - - if (specialProperties.indexOf(k) !== -1) { - continue; - } - - val = clone(obj[k], options); - - if (!minimize || 'undefined' !== typeof val) { - hasKeys || (hasKeys = true); - ret[k] = val; - } - } - - return minimize ? hasKeys && ret : ret; -}; - -exports.cloneArray = function cloneArray(arr, options) { - var ret = [], - l = arr.length; - var i = 0; - - for (; i < l; i++) { - ret.push(clone(arr[i], options)); - } - - return ret; -}; -/** - * process.nextTick helper. - * - * Wraps the given `callback` in a try/catch. If an error is - * caught it will be thrown on nextTick. - * - * node-mongodb-native had a habit of state corruption when - * an error was immediately thrown from within a collection - * method (find, update, etc) callback. - * - * @param {Function} [callback] - * @api private - */ - - -exports.tick = function tick(callback) { - if ('function' !== typeof callback) return; - return function () { - // callbacks should always be fired on the next - // turn of the event loop. A side benefit is - // errors thrown from executing the callback - // will not cause drivers state to be corrupted - // which has historically been a problem. - var args = arguments; - soon(function () { - callback.apply(this, args); - }); - }; -}; -/** - * Merges `from` into `to` without overwriting existing properties. - * - * @param {Object} to - * @param {Object} from - * @api private - */ - - -exports.merge = function merge(to, from) { - var keys = Object.keys(from); - - for (var _i = 0, _keys = keys; _i < _keys.length; _i++) { - var key = _keys[_i]; - - if (specialProperties.indexOf(key) !== -1) { - continue; - } - - if ('undefined' === typeof to[key]) { - to[key] = from[key]; - } else { - if (exports.isObject(from[key])) { - merge(to[key], from[key]); - } else { - to[key] = from[key]; - } - } - } -}; -/** - * Same as merge but clones the assigned values. - * - * @param {Object} to - * @param {Object} from - * @api private - */ - - -exports.mergeClone = function mergeClone(to, from) { - var keys = Object.keys(from); - - for (var _i2 = 0, _keys2 = keys; _i2 < _keys2.length; _i2++) { - var key = _keys2[_i2]; - - if (specialProperties.indexOf(key) !== -1) { - continue; - } - - if ('undefined' === typeof to[key]) { - to[key] = clone(from[key]); - } else { - if (exports.isObject(from[key])) { - mergeClone(to[key], from[key]); - } else { - to[key] = clone(from[key]); - } - } - } -}; -/** - * Read pref helper (mongo 2.2 drivers support this) - * - * Allows using aliases instead of full preference names: - * - * p primary - * pp primaryPreferred - * s secondary - * sp secondaryPreferred - * n nearest - * - * @param {String} pref - */ - - -exports.readPref = function readPref(pref) { - switch (pref) { - case 'p': - pref = 'primary'; - break; - - case 'pp': - pref = 'primaryPreferred'; - break; - - case 's': - pref = 'secondary'; - break; - - case 'sp': - pref = 'secondaryPreferred'; - break; - - case 'n': - pref = 'nearest'; - break; - } - - return pref; -}; -/** - * Read Concern helper (mongo 3.2 drivers support this) - * - * Allows using string to specify read concern level: - * - * local 3.2+ - * available 3.6+ - * majority 3.2+ - * linearizable 3.4+ - * snapshot 4.0+ - * - * @param {String|Object} concern - */ - - -exports.readConcern = function readConcern(concern) { - if ('string' === typeof concern) { - switch (concern) { - case 'l': - concern = 'local'; - break; - - case 'a': - concern = 'available'; - break; - - case 'm': - concern = 'majority'; - break; - - case 'lz': - concern = 'linearizable'; - break; - - case 's': - concern = 'snapshot'; - break; - } - - concern = { - level: concern - }; - } - - return concern; -}; -/** - * Object.prototype.toString.call helper - */ - - -var _toString = Object.prototype.toString; - -exports.toString = function (arg) { - return _toString.call(arg); -}; -/** - * Determines if `arg` is an object. - * - * @param {Object|Array|String|Function|RegExp|any} arg - * @return {Boolean} - */ - - -var isObject = exports.isObject = function (arg) { - return '[object Object]' == exports.toString(arg); -}; -/** - * Object.keys helper - */ - - -exports.keys = Object.keys; -/** - * Basic Object.create polyfill. - * Only one argument is supported. - * - * Based on https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/create - */ - -exports.create = 'function' == typeof Object.create ? Object.create : create; - -function create(proto) { - if (arguments.length > 1) { - throw new Error('Adding properties is not supported'); - } - - function F() {} - - F.prototype = proto; - return new F(); -} -/** - * inheritance - */ - - -exports.inherits = function (ctor, superCtor) { - ctor.prototype = exports.create(superCtor.prototype); - ctor.prototype.constructor = ctor; -}; -/** - * nextTick helper - * compat with node 0.10 which behaves differently than previous versions - */ - - -var soon = exports.soon = 'function' == typeof setImmediate ? setImmediate : ({env:{}}).nextTick; -/** - * Check if this object is an arguments object - * - * @param {Any} v - * @return {Boolean} - */ - -exports.isArgumentsObject = function (v) { - return Object.prototype.toString.call(v) === '[object Arguments]'; -}; - -/***/ }), - -/***/ 2068: -/***/ ((module) => { - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -/** - * Helpers. - */ -var s = 1000; -var m = s * 60; -var h = m * 60; -var d = h * 24; -var w = d * 7; -var y = d * 365.25; -/** - * Parse or format the given `val`. - * - * Options: - * - * - `long` verbose formatting [false] - * - * @param {String|Number} val - * @param {Object} [options] - * @throws {Error} throw an error if val is not a non-empty string or a number - * @return {String|Number} - * @api public - */ - -module.exports = function (val, options) { - options = options || {}; - - var type = _typeof(val); - - if (type === 'string' && val.length > 0) { - return parse(val); - } else if (type === 'number' && isFinite(val)) { - return options["long"] ? fmtLong(val) : fmtShort(val); - } - - throw new Error('val is not a non-empty string or a valid number. val=' + JSON.stringify(val)); -}; -/** - * Parse the given `str` and return milliseconds. - * - * @param {String} str - * @return {Number} - * @api private - */ - - -function parse(str) { - str = String(str); - - if (str.length > 100) { - return; - } - - var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str); - - if (!match) { - return; - } - - var n = parseFloat(match[1]); - var type = (match[2] || 'ms').toLowerCase(); - - switch (type) { - case 'years': - case 'year': - case 'yrs': - case 'yr': - case 'y': - return n * y; - - case 'weeks': - case 'week': - case 'w': - return n * w; - - case 'days': - case 'day': - case 'd': - return n * d; - - case 'hours': - case 'hour': - case 'hrs': - case 'hr': - case 'h': - return n * h; - - case 'minutes': - case 'minute': - case 'mins': - case 'min': - case 'm': - return n * m; - - case 'seconds': - case 'second': - case 'secs': - case 'sec': - case 's': - return n * s; - - case 'milliseconds': - case 'millisecond': - case 'msecs': - case 'msec': - case 'ms': - return n; - - default: - return undefined; - } -} -/** - * Short format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - - -function fmtShort(ms) { - var msAbs = Math.abs(ms); - - if (msAbs >= d) { - return Math.round(ms / d) + 'd'; - } - - if (msAbs >= h) { - return Math.round(ms / h) + 'h'; - } - - if (msAbs >= m) { - return Math.round(ms / m) + 'm'; - } - - if (msAbs >= s) { - return Math.round(ms / s) + 's'; - } - - return ms + 'ms'; -} -/** - * Long format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - - -function fmtLong(ms) { - var msAbs = Math.abs(ms); - - if (msAbs >= d) { - return plural(ms, msAbs, d, 'day'); - } - - if (msAbs >= h) { - return plural(ms, msAbs, h, 'hour'); - } - - if (msAbs >= m) { - return plural(ms, msAbs, m, 'minute'); - } - - if (msAbs >= s) { - return plural(ms, msAbs, s, 'second'); - } - - return ms + ' ms'; -} -/** - * Pluralization helper. - */ - - -function plural(ms, msAbs, n, name) { - var isPlural = msAbs >= n * 1.5; - return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); -} - -/***/ }), - -/***/ 692: -/***/ ((module) => { - -"use strict"; - - -var numberIsNaN = function numberIsNaN(value) { - return value !== value; -}; - -module.exports = function is(a, b) { - if (a === 0 && b === 0) { - return 1 / a === 1 / b; - } - - if (a === b) { - return true; - } - - if (numberIsNaN(a) && numberIsNaN(b)) { - return true; - } - - return false; -}; - -/***/ }), - -/***/ 4710: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var define = __webpack_require__(7921); - -var callBind = __webpack_require__(3862); - -var implementation = __webpack_require__(692); - -var getPolyfill = __webpack_require__(9292); - -var shim = __webpack_require__(9228); - -var polyfill = callBind(getPolyfill(), Object); -define(polyfill, { - getPolyfill: getPolyfill, - implementation: implementation, - shim: shim -}); -module.exports = polyfill; - -/***/ }), - -/***/ 9292: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var implementation = __webpack_require__(692); - -module.exports = function getPolyfill() { - return typeof Object.is === 'function' ? Object.is : implementation; -}; - -/***/ }), - -/***/ 9228: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var getPolyfill = __webpack_require__(9292); - -var define = __webpack_require__(7921); - -module.exports = function shimObjectIs() { - var polyfill = getPolyfill(); - define(Object, { - is: polyfill - }, { - is: function testObjectIs() { - return Object.is !== polyfill; - } - }); - return polyfill; -}; - -/***/ }), - -/***/ 6164: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var keysShim; - -if (!Object.keys) { - // modified from https://github.com/es-shims/es5-shim - var has = Object.prototype.hasOwnProperty; - var toStr = Object.prototype.toString; - - var isArgs = __webpack_require__(5184); // eslint-disable-line global-require - - - var isEnumerable = Object.prototype.propertyIsEnumerable; - var hasDontEnumBug = !isEnumerable.call({ - toString: null - }, 'toString'); - var hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype'); - var dontEnums = ['toString', 'toLocaleString', 'valueOf', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'constructor']; - - var equalsConstructorPrototype = function equalsConstructorPrototype(o) { - var ctor = o.constructor; - return ctor && ctor.prototype === o; - }; - - var excludedKeys = { - $applicationCache: true, - $console: true, - $external: true, - $frame: true, - $frameElement: true, - $frames: true, - $innerHeight: true, - $innerWidth: true, - $onmozfullscreenchange: true, - $onmozfullscreenerror: true, - $outerHeight: true, - $outerWidth: true, - $pageXOffset: true, - $pageYOffset: true, - $parent: true, - $scrollLeft: true, - $scrollTop: true, - $scrollX: true, - $scrollY: true, - $self: true, - $webkitIndexedDB: true, - $webkitStorageInfo: true, - $window: true - }; - - var hasAutomationEqualityBug = function () { - /* global window */ - if (typeof window === 'undefined') { - return false; - } - - for (var k in window) { - try { - if (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && _typeof(window[k]) === 'object') { - try { - equalsConstructorPrototype(window[k]); - } catch (e) { - return true; - } - } - } catch (e) { - return true; - } - } - - return false; - }(); - - var equalsConstructorPrototypeIfNotBuggy = function equalsConstructorPrototypeIfNotBuggy(o) { - /* global window */ - if (typeof window === 'undefined' || !hasAutomationEqualityBug) { - return equalsConstructorPrototype(o); - } - - try { - return equalsConstructorPrototype(o); - } catch (e) { - return false; - } - }; - - keysShim = function keys(object) { - var isObject = object !== null && _typeof(object) === 'object'; - var isFunction = toStr.call(object) === '[object Function]'; - var isArguments = isArgs(object); - var isString = isObject && toStr.call(object) === '[object String]'; - var theKeys = []; - - if (!isObject && !isFunction && !isArguments) { - throw new TypeError('Object.keys called on a non-object'); - } - - var skipProto = hasProtoEnumBug && isFunction; - - if (isString && object.length > 0 && !has.call(object, 0)) { - for (var i = 0; i < object.length; ++i) { - theKeys.push(String(i)); - } - } - - if (isArguments && object.length > 0) { - for (var j = 0; j < object.length; ++j) { - theKeys.push(String(j)); - } - } else { - for (var name in object) { - if (!(skipProto && name === 'prototype') && has.call(object, name)) { - theKeys.push(String(name)); - } - } - } - - if (hasDontEnumBug) { - var skipConstructor = equalsConstructorPrototypeIfNotBuggy(object); - - for (var k = 0; k < dontEnums.length; ++k) { - if (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) { - theKeys.push(dontEnums[k]); - } - } - } - - return theKeys; - }; -} - -module.exports = keysShim; - -/***/ }), - -/***/ 3818: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var slice = Array.prototype.slice; - -var isArgs = __webpack_require__(5184); - -var origKeys = Object.keys; -var keysShim = origKeys ? function keys(o) { - return origKeys(o); -} : __webpack_require__(6164); -var originalKeys = Object.keys; - -keysShim.shim = function shimObjectKeys() { - if (Object.keys) { - var keysWorksWithArguments = function () { - // Safari 5.0 bug - var args = Object.keys(arguments); - return args && args.length === arguments.length; - }(1, 2); - - if (!keysWorksWithArguments) { - Object.keys = function keys(object) { - // eslint-disable-line func-name-matching - if (isArgs(object)) { - return originalKeys(slice.call(object)); - } - - return originalKeys(object); - }; - } - } else { - Object.keys = keysShim; - } - - return Object.keys || keysShim; -}; - -module.exports = keysShim; - -/***/ }), - -/***/ 5184: -/***/ ((module) => { - -"use strict"; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var toStr = Object.prototype.toString; - -module.exports = function isArguments(value) { - var str = toStr.call(value); - var isArgs = str === '[object Arguments]'; - - if (!isArgs) { - isArgs = str !== '[object Array]' && value !== null && _typeof(value) === 'object' && typeof value.length === 'number' && value.length >= 0 && toStr.call(value.callee) === '[object Function]'; - } - - return isArgs; -}; - -/***/ }), - -/***/ 7061: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; -// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js -// Fedor, you are amazing. - - -var asn1 = __webpack_require__(7406); - -exports.certificate = __webpack_require__(458); -var RSAPrivateKey = asn1.define('RSAPrivateKey', function () { - this.seq().obj(this.key('version')["int"](), this.key('modulus')["int"](), this.key('publicExponent')["int"](), this.key('privateExponent')["int"](), this.key('prime1')["int"](), this.key('prime2')["int"](), this.key('exponent1')["int"](), this.key('exponent2')["int"](), this.key('coefficient')["int"]()); -}); -exports.RSAPrivateKey = RSAPrivateKey; -var RSAPublicKey = asn1.define('RSAPublicKey', function () { - this.seq().obj(this.key('modulus')["int"](), this.key('publicExponent')["int"]()); -}); -exports.RSAPublicKey = RSAPublicKey; -var PublicKey = asn1.define('SubjectPublicKeyInfo', function () { - this.seq().obj(this.key('algorithm').use(AlgorithmIdentifier), this.key('subjectPublicKey').bitstr()); -}); -exports.PublicKey = PublicKey; -var AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () { - this.seq().obj(this.key('algorithm').objid(), this.key('none').null_().optional(), this.key('curve').objid().optional(), this.key('params').seq().obj(this.key('p')["int"](), this.key('q')["int"](), this.key('g')["int"]()).optional()); -}); -var PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () { - this.seq().obj(this.key('version')["int"](), this.key('algorithm').use(AlgorithmIdentifier), this.key('subjectPrivateKey').octstr()); -}); -exports.PrivateKey = PrivateKeyInfo; -var EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () { - this.seq().obj(this.key('algorithm').seq().obj(this.key('id').objid(), this.key('decrypt').seq().obj(this.key('kde').seq().obj(this.key('id').objid(), this.key('kdeparams').seq().obj(this.key('salt').octstr(), this.key('iters')["int"]())), this.key('cipher').seq().obj(this.key('algo').objid(), this.key('iv').octstr()))), this.key('subjectPrivateKey').octstr()); -}); -exports.EncryptedPrivateKey = EncryptedPrivateKeyInfo; -var DSAPrivateKey = asn1.define('DSAPrivateKey', function () { - this.seq().obj(this.key('version')["int"](), this.key('p')["int"](), this.key('q')["int"](), this.key('g')["int"](), this.key('pub_key')["int"](), this.key('priv_key')["int"]()); -}); -exports.DSAPrivateKey = DSAPrivateKey; -exports.DSAparam = asn1.define('DSAparam', function () { - this["int"](); -}); -var ECPrivateKey = asn1.define('ECPrivateKey', function () { - this.seq().obj(this.key('version')["int"](), this.key('privateKey').octstr(), this.key('parameters').optional().explicit(0).use(ECParameters), this.key('publicKey').optional().explicit(1).bitstr()); -}); -exports.ECPrivateKey = ECPrivateKey; -var ECParameters = asn1.define('ECParameters', function () { - this.choice({ - namedCurve: this.objid() - }); -}); -exports.signature = asn1.define('signature', function () { - this.seq().obj(this.key('r')["int"](), this.key('s')["int"]()); -}); - -/***/ }), - -/***/ 458: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js -// thanks to @Rantanen - - -var asn = __webpack_require__(7406); - -var Time = asn.define('Time', function () { - this.choice({ - utcTime: this.utctime(), - generalTime: this.gentime() - }); -}); -var AttributeTypeValue = asn.define('AttributeTypeValue', function () { - this.seq().obj(this.key('type').objid(), this.key('value').any()); -}); -var AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () { - this.seq().obj(this.key('algorithm').objid(), this.key('parameters').optional(), this.key('curve').objid().optional()); -}); -var SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () { - this.seq().obj(this.key('algorithm').use(AlgorithmIdentifier), this.key('subjectPublicKey').bitstr()); -}); -var RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () { - this.setof(AttributeTypeValue); -}); -var RDNSequence = asn.define('RDNSequence', function () { - this.seqof(RelativeDistinguishedName); -}); -var Name = asn.define('Name', function () { - this.choice({ - rdnSequence: this.use(RDNSequence) - }); -}); -var Validity = asn.define('Validity', function () { - this.seq().obj(this.key('notBefore').use(Time), this.key('notAfter').use(Time)); -}); -var Extension = asn.define('Extension', function () { - this.seq().obj(this.key('extnID').objid(), this.key('critical').bool().def(false), this.key('extnValue').octstr()); -}); -var TBSCertificate = asn.define('TBSCertificate', function () { - this.seq().obj(this.key('version').explicit(0)["int"]().optional(), this.key('serialNumber')["int"](), this.key('signature').use(AlgorithmIdentifier), this.key('issuer').use(Name), this.key('validity').use(Validity), this.key('subject').use(Name), this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo), this.key('issuerUniqueID').implicit(1).bitstr().optional(), this.key('subjectUniqueID').implicit(2).bitstr().optional(), this.key('extensions').explicit(3).seqof(Extension).optional()); -}); -var X509Certificate = asn.define('X509Certificate', function () { - this.seq().obj(this.key('tbsCertificate').use(TBSCertificate), this.key('signatureAlgorithm').use(AlgorithmIdentifier), this.key('signatureValue').bitstr()); -}); -module.exports = X509Certificate; - -/***/ }), - -/***/ 1120: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// adapted from https://github.com/apatil/pemstrip -var findProc = /Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r+/=]+)[\n\r]+/m; -var startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m; -var fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r+/=]+)-----END \1-----$/m; - -var evp = __webpack_require__(1248); - -var ciphers = __webpack_require__(4881); - -var Buffer = (__webpack_require__(9047).Buffer); - -module.exports = function (okey, password) { - var key = okey.toString(); - var match = key.match(findProc); - var decrypted; - - if (!match) { - var match2 = key.match(fullRegex); - decrypted = Buffer.from(match2[2].replace(/[\r\n]/g, ''), 'base64'); - } else { - var suite = 'aes' + match[1]; - var iv = Buffer.from(match[2], 'hex'); - var cipherText = Buffer.from(match[3].replace(/[\r\n]/g, ''), 'base64'); - var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key; - var out = []; - var cipher = ciphers.createDecipheriv(suite, cipherKey, iv); - out.push(cipher.update(cipherText)); - out.push(cipher["final"]()); - decrypted = Buffer.concat(out); - } - - var tag = key.match(startRegex)[1]; - return { - tag: tag, - data: decrypted - }; -}; - -/***/ }), - -/***/ 2914: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var asn1 = __webpack_require__(7061); - -var aesid = __webpack_require__(2562); - -var fixProc = __webpack_require__(1120); - -var ciphers = __webpack_require__(4881); - -var compat = __webpack_require__(9379); - -var Buffer = (__webpack_require__(9047).Buffer); - -module.exports = parseKeys; - -function parseKeys(buffer) { - var password; - - if (_typeof(buffer) === 'object' && !Buffer.isBuffer(buffer)) { - password = buffer.passphrase; - buffer = buffer.key; - } - - if (typeof buffer === 'string') { - buffer = Buffer.from(buffer); - } - - var stripped = fixProc(buffer, password); - var type = stripped.tag; - var data = stripped.data; - var subtype, ndata; - - switch (type) { - case 'CERTIFICATE': - ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo; - // falls through - - case 'PUBLIC KEY': - if (!ndata) { - ndata = asn1.PublicKey.decode(data, 'der'); - } - - subtype = ndata.algorithm.algorithm.join('.'); - - switch (subtype) { - case '1.2.840.113549.1.1.1': - return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der'); - - case '1.2.840.10045.2.1': - ndata.subjectPrivateKey = ndata.subjectPublicKey; - return { - type: 'ec', - data: ndata - }; - - case '1.2.840.10040.4.1': - ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der'); - return { - type: 'dsa', - data: ndata.algorithm.params - }; - - default: - throw new Error('unknown key id ' + subtype); - } - - // throw new Error('unknown key type ' + type) - - case 'ENCRYPTED PRIVATE KEY': - data = asn1.EncryptedPrivateKey.decode(data, 'der'); - data = decrypt(data, password); - // falls through - - case 'PRIVATE KEY': - ndata = asn1.PrivateKey.decode(data, 'der'); - subtype = ndata.algorithm.algorithm.join('.'); - - switch (subtype) { - case '1.2.840.113549.1.1.1': - return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der'); - - case '1.2.840.10045.2.1': - return { - curve: ndata.algorithm.curve, - privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey - }; - - case '1.2.840.10040.4.1': - ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der'); - return { - type: 'dsa', - params: ndata.algorithm.params - }; - - default: - throw new Error('unknown key id ' + subtype); - } - - // throw new Error('unknown key type ' + type) - - case 'RSA PUBLIC KEY': - return asn1.RSAPublicKey.decode(data, 'der'); - - case 'RSA PRIVATE KEY': - return asn1.RSAPrivateKey.decode(data, 'der'); - - case 'DSA PRIVATE KEY': - return { - type: 'dsa', - params: asn1.DSAPrivateKey.decode(data, 'der') - }; - - case 'EC PRIVATE KEY': - data = asn1.ECPrivateKey.decode(data, 'der'); - return { - curve: data.parameters.value, - privateKey: data.privateKey - }; - - default: - throw new Error('unknown key type ' + type); - } -} - -parseKeys.signature = asn1.signature; - -function decrypt(data, password) { - var salt = data.algorithm.decrypt.kde.kdeparams.salt; - var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10); - var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]; - var iv = data.algorithm.decrypt.cipher.iv; - var cipherText = data.subjectPrivateKey; - var keylen = parseInt(algo.split('-')[1], 10) / 8; - var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1'); - var cipher = ciphers.createDecipheriv(algo, key, iv); - var out = []; - out.push(cipher.update(cipherText)); - out.push(cipher["final"]()); - return Buffer.concat(out); -} - -/***/ }), - -/***/ 9379: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -exports.pbkdf2 = __webpack_require__(8099); -exports.pbkdf2Sync = __webpack_require__(3180); - -/***/ }), - -/***/ 8099: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var Buffer = (__webpack_require__(9047).Buffer); - -var checkParameters = __webpack_require__(2042); - -var defaultEncoding = __webpack_require__(8994); - -var sync = __webpack_require__(3180); - -var toBuffer = __webpack_require__(7238); - -var ZERO_BUF; -var subtle = __webpack_require__.g.crypto && __webpack_require__.g.crypto.subtle; -var toBrowser = { - sha: 'SHA-1', - 'sha-1': 'SHA-1', - sha1: 'SHA-1', - sha256: 'SHA-256', - 'sha-256': 'SHA-256', - sha384: 'SHA-384', - 'sha-384': 'SHA-384', - 'sha-512': 'SHA-512', - sha512: 'SHA-512' -}; -var checks = []; - -function checkNative(algo) { - if (__webpack_require__.g.process && !__webpack_require__.g.process.browser) { - return Promise.resolve(false); - } - - if (!subtle || !subtle.importKey || !subtle.deriveBits) { - return Promise.resolve(false); - } - - if (checks[algo] !== undefined) { - return checks[algo]; - } - - ZERO_BUF = ZERO_BUF || Buffer.alloc(8); - var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo).then(function () { - return true; - })["catch"](function () { - return false; - }); - checks[algo] = prom; - return prom; -} - -var nextTick; - -function getNextTick() { - if (nextTick) { - return nextTick; - } - - if (__webpack_require__.g.process && __webpack_require__.g.process.nextTick) { - nextTick = __webpack_require__.g.process.nextTick; - } else if (__webpack_require__.g.queueMicrotask) { - nextTick = __webpack_require__.g.queueMicrotask; - } else if (__webpack_require__.g.setImmediate) { - nextTick = __webpack_require__.g.setImmediate; - } else { - nextTick = __webpack_require__.g.setTimeout; - } - - return nextTick; -} - -function browserPbkdf2(password, salt, iterations, length, algo) { - return subtle.importKey('raw', password, { - name: 'PBKDF2' - }, false, ['deriveBits']).then(function (key) { - return subtle.deriveBits({ - name: 'PBKDF2', - salt: salt, - iterations: iterations, - hash: { - name: algo - } - }, key, length << 3); - }).then(function (res) { - return Buffer.from(res); - }); -} - -function resolvePromise(promise, callback) { - promise.then(function (out) { - getNextTick()(function () { - callback(null, out); - }); - }, function (e) { - getNextTick()(function () { - callback(e); - }); - }); -} - -module.exports = function (password, salt, iterations, keylen, digest, callback) { - if (typeof digest === 'function') { - callback = digest; - digest = undefined; - } - - digest = digest || 'sha1'; - var algo = toBrowser[digest.toLowerCase()]; - - if (!algo || typeof __webpack_require__.g.Promise !== 'function') { - getNextTick()(function () { - var out; - - try { - out = sync(password, salt, iterations, keylen, digest); - } catch (e) { - return callback(e); - } - - callback(null, out); - }); - return; - } - - checkParameters(iterations, keylen); - password = toBuffer(password, defaultEncoding, 'Password'); - salt = toBuffer(salt, defaultEncoding, 'Salt'); - if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2'); - resolvePromise(checkNative(algo).then(function (resp) { - if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo); - return sync(password, salt, iterations, keylen, digest); - }), callback); -}; - -/***/ }), - -/***/ 8994: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var defaultEncoding; -/* istanbul ignore next */ - -if (__webpack_require__.g.process && __webpack_require__.g.process.browser) { - defaultEncoding = 'utf-8'; -} else if (__webpack_require__.g.process && __webpack_require__.g.process.version) { - var pVersionMajor = parseInt(({env:{}}).version.split('.')[0].slice(1), 10); - defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'; -} else { - defaultEncoding = 'utf-8'; -} - -module.exports = defaultEncoding; - -/***/ }), - -/***/ 2042: -/***/ ((module) => { - -var MAX_ALLOC = Math.pow(2, 30) - 1; // default in iojs - -module.exports = function (iterations, keylen) { - if (typeof iterations !== 'number') { - throw new TypeError('Iterations not a number'); - } - - if (iterations < 0) { - throw new TypeError('Bad iterations'); - } - - if (typeof keylen !== 'number') { - throw new TypeError('Key length not a number'); - } - - if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { - /* eslint no-self-compare: 0 */ - throw new TypeError('Bad key length'); - } -}; - -/***/ }), - -/***/ 3180: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var md5 = __webpack_require__(3277); - -var RIPEMD160 = __webpack_require__(8100); - -var sha = __webpack_require__(1806); - -var Buffer = (__webpack_require__(9047).Buffer); - -var checkParameters = __webpack_require__(2042); - -var defaultEncoding = __webpack_require__(8994); - -var toBuffer = __webpack_require__(7238); - -var ZEROS = Buffer.alloc(128); -var sizes = { - md5: 16, - sha1: 20, - sha224: 28, - sha256: 32, - sha384: 48, - sha512: 64, - rmd160: 20, - ripemd160: 20 -}; - -function Hmac(alg, key, saltLen) { - var hash = getDigest(alg); - var blocksize = alg === 'sha512' || alg === 'sha384' ? 128 : 64; - - if (key.length > blocksize) { - key = hash(key); - } else if (key.length < blocksize) { - key = Buffer.concat([key, ZEROS], blocksize); - } - - var ipad = Buffer.allocUnsafe(blocksize + sizes[alg]); - var opad = Buffer.allocUnsafe(blocksize + sizes[alg]); - - for (var i = 0; i < blocksize; i++) { - ipad[i] = key[i] ^ 0x36; - opad[i] = key[i] ^ 0x5C; - } - - var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4); - ipad.copy(ipad1, 0, 0, blocksize); - this.ipad1 = ipad1; - this.ipad2 = ipad; - this.opad = opad; - this.alg = alg; - this.blocksize = blocksize; - this.hash = hash; - this.size = sizes[alg]; -} - -Hmac.prototype.run = function (data, ipad) { - data.copy(ipad, this.blocksize); - var h = this.hash(ipad); - h.copy(this.opad, this.blocksize); - return this.hash(this.opad); -}; - -function getDigest(alg) { - function shaFunc(data) { - return sha(alg).update(data).digest(); - } - - function rmd160Func(data) { - return new RIPEMD160().update(data).digest(); - } - - if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func; - if (alg === 'md5') return md5; - return shaFunc; -} - -function pbkdf2(password, salt, iterations, keylen, digest) { - checkParameters(iterations, keylen); - password = toBuffer(password, defaultEncoding, 'Password'); - salt = toBuffer(salt, defaultEncoding, 'Salt'); - digest = digest || 'sha1'; - var hmac = new Hmac(digest, password, salt.length); - var DK = Buffer.allocUnsafe(keylen); - var block1 = Buffer.allocUnsafe(salt.length + 4); - salt.copy(block1, 0, 0, salt.length); - var destPos = 0; - var hLen = sizes[digest]; - var l = Math.ceil(keylen / hLen); - - for (var i = 1; i <= l; i++) { - block1.writeUInt32BE(i, salt.length); - var T = hmac.run(block1, hmac.ipad1); - var U = T; - - for (var j = 1; j < iterations; j++) { - U = hmac.run(U, hmac.ipad2); - - for (var k = 0; k < hLen; k++) { - T[k] ^= U[k]; - } - } - - T.copy(DK, destPos); - destPos += hLen; - } - - return DK; -} - -module.exports = pbkdf2; - -/***/ }), - -/***/ 7238: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var Buffer = (__webpack_require__(9047).Buffer); - -module.exports = function (thing, encoding, name) { - if (Buffer.isBuffer(thing)) { - return thing; - } else if (typeof thing === 'string') { - return Buffer.from(thing, encoding); - } else if (ArrayBuffer.isView(thing)) { - return Buffer.from(thing.buffer); - } else { - throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView'); - } -}; - -/***/ }), - -/***/ 2368: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -exports.publicEncrypt = __webpack_require__(2385); -exports.privateDecrypt = __webpack_require__(8752); - -exports.privateEncrypt = function privateEncrypt(key, buf) { - return exports.publicEncrypt(key, buf, true); -}; - -exports.publicDecrypt = function publicDecrypt(key, buf) { - return exports.privateDecrypt(key, buf, true); -}; - -/***/ }), - -/***/ 4075: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var createHash = __webpack_require__(8339); - -var Buffer = (__webpack_require__(9047).Buffer); - -module.exports = function (seed, len) { - var t = Buffer.alloc(0); - var i = 0; - var c; - - while (t.length < len) { - c = i2ops(i++); - t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()]); - } - - return t.slice(0, len); -}; - -function i2ops(c) { - var out = Buffer.allocUnsafe(4); - out.writeUInt32BE(c, 0); - return out; -} - -/***/ }), - -/***/ 8752: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var parseKeys = __webpack_require__(2914); - -var mgf = __webpack_require__(4075); - -var xor = __webpack_require__(782); - -var BN = __webpack_require__(6781); - -var crt = __webpack_require__(4364); - -var createHash = __webpack_require__(8339); - -var withPublic = __webpack_require__(1675); - -var Buffer = (__webpack_require__(9047).Buffer); - -module.exports = function privateDecrypt(privateKey, enc, reverse) { - var padding; - - if (privateKey.padding) { - padding = privateKey.padding; - } else if (reverse) { - padding = 1; - } else { - padding = 4; - } - - var key = parseKeys(privateKey); - var k = key.modulus.byteLength(); - - if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) { - throw new Error('decryption error'); - } - - var msg; - - if (reverse) { - msg = withPublic(new BN(enc), key); - } else { - msg = crt(enc, key); - } - - var zBuffer = Buffer.alloc(k - msg.length); - msg = Buffer.concat([zBuffer, msg], k); - - if (padding === 4) { - return oaep(key, msg); - } else if (padding === 1) { - return pkcs1(key, msg, reverse); - } else if (padding === 3) { - return msg; - } else { - throw new Error('unknown padding'); - } -}; - -function oaep(key, msg) { - var k = key.modulus.byteLength(); - var iHash = createHash('sha1').update(Buffer.alloc(0)).digest(); - var hLen = iHash.length; - - if (msg[0] !== 0) { - throw new Error('decryption error'); - } - - var maskedSeed = msg.slice(1, hLen + 1); - var maskedDb = msg.slice(hLen + 1); - var seed = xor(maskedSeed, mgf(maskedDb, hLen)); - var db = xor(maskedDb, mgf(seed, k - hLen - 1)); - - if (compare(iHash, db.slice(0, hLen))) { - throw new Error('decryption error'); - } - - var i = hLen; - - while (db[i] === 0) { - i++; - } - - if (db[i++] !== 1) { - throw new Error('decryption error'); - } - - return db.slice(i); -} - -function pkcs1(key, msg, reverse) { - var p1 = msg.slice(0, 2); - var i = 2; - var status = 0; - - while (msg[i++] !== 0) { - if (i >= msg.length) { - status++; - break; - } - } - - var ps = msg.slice(2, i - 1); - - if (p1.toString('hex') !== '0002' && !reverse || p1.toString('hex') !== '0001' && reverse) { - status++; - } - - if (ps.length < 8) { - status++; - } - - if (status) { - throw new Error('decryption error'); - } - - return msg.slice(i); -} - -function compare(a, b) { - a = Buffer.from(a); - b = Buffer.from(b); - var dif = 0; - var len = a.length; - - if (a.length !== b.length) { - dif++; - len = Math.min(a.length, b.length); - } - - var i = -1; - - while (++i < len) { - dif += a[i] ^ b[i]; - } - - return dif; -} - -/***/ }), - -/***/ 2385: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var parseKeys = __webpack_require__(2914); - -var randomBytes = __webpack_require__(5760); - -var createHash = __webpack_require__(8339); - -var mgf = __webpack_require__(4075); - -var xor = __webpack_require__(782); - -var BN = __webpack_require__(6781); - -var withPublic = __webpack_require__(1675); - -var crt = __webpack_require__(4364); - -var Buffer = (__webpack_require__(9047).Buffer); - -module.exports = function publicEncrypt(publicKey, msg, reverse) { - var padding; - - if (publicKey.padding) { - padding = publicKey.padding; - } else if (reverse) { - padding = 1; - } else { - padding = 4; - } - - var key = parseKeys(publicKey); - var paddedMsg; - - if (padding === 4) { - paddedMsg = oaep(key, msg); - } else if (padding === 1) { - paddedMsg = pkcs1(key, msg, reverse); - } else if (padding === 3) { - paddedMsg = new BN(msg); - - if (paddedMsg.cmp(key.modulus) >= 0) { - throw new Error('data too long for modulus'); - } - } else { - throw new Error('unknown padding'); - } - - if (reverse) { - return crt(paddedMsg, key); - } else { - return withPublic(paddedMsg, key); - } -}; - -function oaep(key, msg) { - var k = key.modulus.byteLength(); - var mLen = msg.length; - var iHash = createHash('sha1').update(Buffer.alloc(0)).digest(); - var hLen = iHash.length; - var hLen2 = 2 * hLen; - - if (mLen > k - hLen2 - 2) { - throw new Error('message too long'); - } - - var ps = Buffer.alloc(k - mLen - hLen2 - 2); - var dblen = k - hLen - 1; - var seed = randomBytes(hLen); - var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen)); - var maskedSeed = xor(seed, mgf(maskedDb, hLen)); - return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k)); -} - -function pkcs1(key, msg, reverse) { - var mLen = msg.length; - var k = key.modulus.byteLength(); - - if (mLen > k - 11) { - throw new Error('message too long'); - } - - var ps; - - if (reverse) { - ps = Buffer.alloc(k - mLen - 3, 0xff); - } else { - ps = nonZero(k - mLen - 3); - } - - return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k)); -} - -function nonZero(len) { - var out = Buffer.allocUnsafe(len); - var i = 0; - var cache = randomBytes(len * 2); - var cur = 0; - var num; - - while (i < len) { - if (cur === cache.length) { - cache = randomBytes(len * 2); - cur = 0; - } - - num = cache[cur++]; - - if (num) { - out[i++] = num; - } - } - - return out; -} - -/***/ }), - -/***/ 1675: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var BN = __webpack_require__(6781); - -var Buffer = (__webpack_require__(9047).Buffer); - -function withPublic(paddedMsg, key) { - return Buffer.from(paddedMsg.toRed(BN.mont(key.modulus)).redPow(new BN(key.publicExponent)).fromRed().toArray()); -} - -module.exports = withPublic; - -/***/ }), - -/***/ 782: -/***/ ((module) => { - -module.exports = function xor(a, b) { - var len = a.length; - var i = -1; - - while (++i < len) { - a[i] ^= b[i]; - } - - return a; -}; - -/***/ }), - -/***/ 5760: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - // limit of Crypto.getRandomValues() -// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues - -var MAX_BYTES = 65536; // Node supports requesting up to this number of bytes -// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48 - -var MAX_UINT32 = 4294967295; - -function oldBrowser() { - throw new Error('Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11'); -} - -var Buffer = (__webpack_require__(9047).Buffer); - -var crypto = __webpack_require__.g.crypto || __webpack_require__.g.msCrypto; - -if (crypto && crypto.getRandomValues) { - module.exports = randomBytes; -} else { - module.exports = oldBrowser; -} - -function randomBytes(size, cb) { - // phantomjs needs to throw - if (size > MAX_UINT32) throw new RangeError('requested too many random bytes'); - var bytes = Buffer.allocUnsafe(size); - - if (size > 0) { - // getRandomValues fails on IE if size == 0 - if (size > MAX_BYTES) { - // this is the max bytes crypto.getRandomValues - // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues - for (var generated = 0; generated < size; generated += MAX_BYTES) { - // buffer.slice automatically checks if the end is past the end of - // the buffer so we don't have to here - crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES)); - } - } else { - crypto.getRandomValues(bytes); - } - } - - if (typeof cb === 'function') { - return ({env:{}}).nextTick(function () { - cb(null, bytes); - }); - } - - return bytes; -} - -/***/ }), - -/***/ 9301: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - - -function oldBrowser() { - throw new Error('secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11'); -} - -var safeBuffer = __webpack_require__(9047); - -var randombytes = __webpack_require__(5760); - -var Buffer = safeBuffer.Buffer; -var kBufferMaxLength = safeBuffer.kMaxLength; -var crypto = __webpack_require__.g.crypto || __webpack_require__.g.msCrypto; -var kMaxUint32 = Math.pow(2, 32) - 1; - -function assertOffset(offset, length) { - if (typeof offset !== 'number' || offset !== offset) { - // eslint-disable-line no-self-compare - throw new TypeError('offset must be a number'); - } - - if (offset > kMaxUint32 || offset < 0) { - throw new TypeError('offset must be a uint32'); - } - - if (offset > kBufferMaxLength || offset > length) { - throw new RangeError('offset out of range'); - } -} - -function assertSize(size, offset, length) { - if (typeof size !== 'number' || size !== size) { - // eslint-disable-line no-self-compare - throw new TypeError('size must be a number'); - } - - if (size > kMaxUint32 || size < 0) { - throw new TypeError('size must be a uint32'); - } - - if (size + offset > length || size > kBufferMaxLength) { - throw new RangeError('buffer too small'); - } -} - -if (crypto && crypto.getRandomValues || !({env:{}}).browser) { - exports.randomFill = randomFill; - exports.randomFillSync = randomFillSync; -} else { - exports.randomFill = oldBrowser; - exports.randomFillSync = oldBrowser; -} - -function randomFill(buf, offset, size, cb) { - if (!Buffer.isBuffer(buf) && !(buf instanceof __webpack_require__.g.Uint8Array)) { - throw new TypeError('"buf" argument must be a Buffer or Uint8Array'); - } - - if (typeof offset === 'function') { - cb = offset; - offset = 0; - size = buf.length; - } else if (typeof size === 'function') { - cb = size; - size = buf.length - offset; - } else if (typeof cb !== 'function') { - throw new TypeError('"cb" argument must be a function'); - } - - assertOffset(offset, buf.length); - assertSize(size, offset, buf.length); - return actualFill(buf, offset, size, cb); -} - -function actualFill(buf, offset, size, cb) { - if (({env:{}}).browser) { - var ourBuf = buf.buffer; - var uint = new Uint8Array(ourBuf, offset, size); - crypto.getRandomValues(uint); - - if (cb) { - ({env:{}}).nextTick(function () { - cb(null, buf); - }); - return; - } - - return buf; - } - - if (cb) { - randombytes(size, function (err, bytes) { - if (err) { - return cb(err); - } - - bytes.copy(buf, offset); - cb(null, buf); - }); - return; - } - - var bytes = randombytes(size); - bytes.copy(buf, offset); - return buf; -} - -function randomFillSync(buf, offset, size) { - if (typeof offset === 'undefined') { - offset = 0; - } - - if (!Buffer.isBuffer(buf) && !(buf instanceof __webpack_require__.g.Uint8Array)) { - throw new TypeError('"buf" argument must be a Buffer or Uint8Array'); - } - - assertOffset(offset, buf.length); - if (size === undefined) size = buf.length - offset; - assertSize(size, offset, buf.length); - return actualFill(buf, offset, size); -} - -/***/ }), - -/***/ 5613: -/***/ ((module) => { - -"use strict"; - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -function _inheritsLoose(subClass, superClass) { - subClass.prototype = Object.create(superClass.prototype); - subClass.prototype.constructor = subClass; - subClass.__proto__ = superClass; -} - -var codes = {}; - -function createErrorType(code, message, Base) { - if (!Base) { - Base = Error; - } - - function getMessage(arg1, arg2, arg3) { - if (typeof message === 'string') { - return message; - } else { - return message(arg1, arg2, arg3); - } - } - - var NodeError = /*#__PURE__*/function (_Base) { - _inheritsLoose(NodeError, _Base); - - function NodeError(arg1, arg2, arg3) { - return _Base.call(this, getMessage(arg1, arg2, arg3)) || this; - } - - return NodeError; - }(Base); - - NodeError.prototype.name = Base.name; - NodeError.prototype.code = code; - codes[code] = NodeError; -} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js - - -function oneOf(expected, thing) { - if (Array.isArray(expected)) { - var len = expected.length; - expected = expected.map(function (i) { - return String(i); - }); - - if (len > 2) { - return "one of ".concat(thing, " ").concat(expected.slice(0, len - 1).join(', '), ", or ") + expected[len - 1]; - } else if (len === 2) { - return "one of ".concat(thing, " ").concat(expected[0], " or ").concat(expected[1]); - } else { - return "of ".concat(thing, " ").concat(expected[0]); - } - } else { - return "of ".concat(thing, " ").concat(String(expected)); - } -} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith - - -function startsWith(str, search, pos) { - return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search; -} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith - - -function endsWith(str, search, this_len) { - if (this_len === undefined || this_len > str.length) { - this_len = str.length; - } - - return str.substring(this_len - search.length, this_len) === search; -} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes - - -function includes(str, search, start) { - if (typeof start !== 'number') { - start = 0; - } - - if (start + search.length > str.length) { - return false; - } else { - return str.indexOf(search, start) !== -1; - } -} - -createErrorType('ERR_INVALID_OPT_VALUE', function (name, value) { - return 'The value "' + value + '" is invalid for option "' + name + '"'; -}, TypeError); -createErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) { - // determiner: 'must be' or 'must not be' - var determiner; - - if (typeof expected === 'string' && startsWith(expected, 'not ')) { - determiner = 'must not be'; - expected = expected.replace(/^not /, ''); - } else { - determiner = 'must be'; - } - - var msg; - - if (endsWith(name, ' argument')) { - // For cases like 'first argument' - msg = "The ".concat(name, " ").concat(determiner, " ").concat(oneOf(expected, 'type')); - } else { - var type = includes(name, '.') ? 'property' : 'argument'; - msg = "The \"".concat(name, "\" ").concat(type, " ").concat(determiner, " ").concat(oneOf(expected, 'type')); - } - - msg += ". Received type ".concat(_typeof(actual)); - return msg; -}, TypeError); -createErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF'); -createErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) { - return 'The ' + name + ' method is not implemented'; -}); -createErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close'); -createErrorType('ERR_STREAM_DESTROYED', function (name) { - return 'Cannot call ' + name + ' after a stream was destroyed'; -}); -createErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times'); -createErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable'); -createErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end'); -createErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError); -createErrorType('ERR_UNKNOWN_ENCODING', function (arg) { - return 'Unknown encoding: ' + arg; -}, TypeError); -createErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event'); -module.exports.q = codes; - -/***/ }), - -/***/ 4611: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. -// a duplex stream is just a stream that is both readable and writable. -// Since JS doesn't have multiple prototypal inheritance, this class -// prototypally inherits from Readable, and then parasitically from -// Writable. - -/**/ - -var objectKeys = Object.keys || function (obj) { - var keys = []; - - for (var key in obj) { - keys.push(key); - } - - return keys; -}; -/**/ - - -module.exports = Duplex; - -var Readable = __webpack_require__(6751); - -var Writable = __webpack_require__(679); - -__webpack_require__(376)(Duplex, Readable); - -{ - // Allow the keys array to be GC'ed. - var keys = objectKeys(Writable.prototype); - - for (var v = 0; v < keys.length; v++) { - var method = keys[v]; - if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; - } -} - -function Duplex(options) { - if (!(this instanceof Duplex)) return new Duplex(options); - Readable.call(this, options); - Writable.call(this, options); - this.allowHalfOpen = true; - - if (options) { - if (options.readable === false) this.readable = false; - if (options.writable === false) this.writable = false; - - if (options.allowHalfOpen === false) { - this.allowHalfOpen = false; - this.once('end', onend); - } - } -} - -Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._writableState.highWaterMark; - } -}); -Object.defineProperty(Duplex.prototype, 'writableBuffer', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._writableState && this._writableState.getBuffer(); - } -}); -Object.defineProperty(Duplex.prototype, 'writableLength', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._writableState.length; - } -}); // the no-half-open enforcer - -function onend() { - // If the writable side ended, then we're ok. - if (this._writableState.ended) return; // no more data can be written. - // But allow more writes to happen in this tick. - - ({env:{}}).nextTick(onEndNT, this); -} - -function onEndNT(self) { - self.end(); -} - -Object.defineProperty(Duplex.prototype, 'destroyed', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - if (this._readableState === undefined || this._writableState === undefined) { - return false; - } - - return this._readableState.destroyed && this._writableState.destroyed; - }, - set: function set(value) { - // we ignore the value if the stream - // has not been initialized yet - if (this._readableState === undefined || this._writableState === undefined) { - return; - } // backward compatibility, the user is explicitly - // managing destroyed - - - this._readableState.destroyed = value; - this._writableState.destroyed = value; - } -}); - -/***/ }), - -/***/ 3684: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. -// a passthrough stream. -// basically just the most minimal sort of Transform stream. -// Every written chunk gets output as-is. - - -module.exports = PassThrough; - -var Transform = __webpack_require__(4951); - -__webpack_require__(376)(PassThrough, Transform); - -function PassThrough(options) { - if (!(this instanceof PassThrough)) return new PassThrough(options); - Transform.call(this, options); -} - -PassThrough.prototype._transform = function (chunk, encoding, cb) { - cb(null, chunk); -}; - -/***/ }), - -/***/ 6751: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - - -module.exports = Readable; -/**/ - -var Duplex; -/**/ - -Readable.ReadableState = ReadableState; -/**/ - -var EE = (__webpack_require__(9620).EventEmitter); - -var EElistenerCount = function EElistenerCount(emitter, type) { - return emitter.listeners(type).length; -}; -/**/ - -/**/ - - -var Stream = __webpack_require__(6054); -/**/ - - -var Buffer = (__webpack_require__(365).Buffer); - -var OurUint8Array = __webpack_require__.g.Uint8Array || function () {}; - -function _uint8ArrayToBuffer(chunk) { - return Buffer.from(chunk); -} - -function _isUint8Array(obj) { - return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; -} -/**/ - - -var debugUtil = __webpack_require__(4616); - -var debug; - -if (debugUtil && debugUtil.debuglog) { - debug = debugUtil.debuglog('stream'); -} else { - debug = function debug() {}; -} -/**/ - - -var BufferList = __webpack_require__(1843); - -var destroyImpl = __webpack_require__(4798); - -var _require = __webpack_require__(6876), - getHighWaterMark = _require.getHighWaterMark; - -var _require$codes = (__webpack_require__(5613)/* .codes */ .q), - ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, - ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF, - ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, - ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance. - - -var StringDecoder; -var createReadableStreamAsyncIterator; -var from; - -__webpack_require__(376)(Readable, Stream); - -var errorOrDestroy = destroyImpl.errorOrDestroy; -var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; - -function prependListener(emitter, event, fn) { - // Sadly this is not cacheable as some libraries bundle their own - // event emitter implementation with them. - if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any - // userland ones. NEVER DO THIS. This is here only because this code needs - // to continue to work with older versions of Node.js that do not include - // the prependListener() method. The goal is to eventually remove this hack. - - if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; -} - -function ReadableState(options, stream, isDuplex) { - Duplex = Duplex || __webpack_require__(4611); - options = options || {}; // Duplex streams are both readable and writable, but share - // the same options object. - // However, some cases require setting options to different - // values for the readable and the writable sides of the duplex stream. - // These options can be provided separately as readableXXX and writableXXX. - - if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away - - this.objectMode = !!options.objectMode; - if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" - - this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the - // linked list can remove elements from the beginning faster than - // array.shift() - - this.buffer = new BufferList(); - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = null; - this.ended = false; - this.endEmitted = false; - this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted - // immediately, or on a later tick. We set this to true at first, because - // any actions that shouldn't happen until "later" should generally also - // not happen before the first read call. - - this.sync = true; // whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. - - this.needReadable = false; - this.emittedReadable = false; - this.readableListening = false; - this.resumeScheduled = false; - this.paused = true; // Should close be emitted on destroy. Defaults to true. - - this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish') - - this.autoDestroy = !!options.autoDestroy; // has it been destroyed - - this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - - this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s - - this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled - - this.readingMore = false; - this.decoder = null; - this.encoding = null; - - if (options.encoding) { - if (!StringDecoder) StringDecoder = (__webpack_require__(113)/* .StringDecoder */ .s); - this.decoder = new StringDecoder(options.encoding); - this.encoding = options.encoding; - } -} - -function Readable(options) { - Duplex = Duplex || __webpack_require__(4611); - if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside - // the ReadableState constructor, at least with V8 6.5 - - var isDuplex = this instanceof Duplex; - this._readableState = new ReadableState(options, this, isDuplex); // legacy - - this.readable = true; - - if (options) { - if (typeof options.read === 'function') this._read = options.read; - if (typeof options.destroy === 'function') this._destroy = options.destroy; - } - - Stream.call(this); -} - -Object.defineProperty(Readable.prototype, 'destroyed', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - if (this._readableState === undefined) { - return false; - } - - return this._readableState.destroyed; - }, - set: function set(value) { - // we ignore the value if the stream - // has not been initialized yet - if (!this._readableState) { - return; - } // backward compatibility, the user is explicitly - // managing destroyed - - - this._readableState.destroyed = value; - } -}); -Readable.prototype.destroy = destroyImpl.destroy; -Readable.prototype._undestroy = destroyImpl.undestroy; - -Readable.prototype._destroy = function (err, cb) { - cb(err); -}; // Manually shove something into the read() buffer. -// This returns true if the highWaterMark has not been hit yet, -// similar to how Writable.write() returns true if you should -// write() some more. - - -Readable.prototype.push = function (chunk, encoding) { - var state = this._readableState; - var skipChunkCheck; - - if (!state.objectMode) { - if (typeof chunk === 'string') { - encoding = encoding || state.defaultEncoding; - - if (encoding !== state.encoding) { - chunk = Buffer.from(chunk, encoding); - encoding = ''; - } - - skipChunkCheck = true; - } - } else { - skipChunkCheck = true; - } - - return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); -}; // Unshift should *always* be something directly out of read() - - -Readable.prototype.unshift = function (chunk) { - return readableAddChunk(this, chunk, null, true, false); -}; - -function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { - debug('readableAddChunk', chunk); - var state = stream._readableState; - - if (chunk === null) { - state.reading = false; - onEofChunk(stream, state); - } else { - var er; - if (!skipChunkCheck) er = chunkInvalid(state, chunk); - - if (er) { - errorOrDestroy(stream, er); - } else if (state.objectMode || chunk && chunk.length > 0) { - if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { - chunk = _uint8ArrayToBuffer(chunk); - } - - if (addToFront) { - if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true); - } else if (state.ended) { - errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF()); - } else if (state.destroyed) { - return false; - } else { - state.reading = false; - - if (state.decoder && !encoding) { - chunk = state.decoder.write(chunk); - if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); - } else { - addChunk(stream, state, chunk, false); - } - } - } else if (!addToFront) { - state.reading = false; - maybeReadMore(stream, state); - } - } // We can push more data if we are below the highWaterMark. - // Also, if we have no data yet, we can stand some more bytes. - // This is to work around cases where hwm=0, such as the repl. - - - return !state.ended && (state.length < state.highWaterMark || state.length === 0); -} - -function addChunk(stream, state, chunk, addToFront) { - if (state.flowing && state.length === 0 && !state.sync) { - state.awaitDrain = 0; - stream.emit('data', chunk); - } else { - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); - if (state.needReadable) emitReadable(stream); - } - - maybeReadMore(stream, state); -} - -function chunkInvalid(state, chunk) { - var er; - - if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { - er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk); - } - - return er; -} - -Readable.prototype.isPaused = function () { - return this._readableState.flowing === false; -}; // backwards compatibility. - - -Readable.prototype.setEncoding = function (enc) { - if (!StringDecoder) StringDecoder = (__webpack_require__(113)/* .StringDecoder */ .s); - var decoder = new StringDecoder(enc); - this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8 - - this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers: - - var p = this._readableState.buffer.head; - var content = ''; - - while (p !== null) { - content += decoder.write(p.data); - p = p.next; - } - - this._readableState.buffer.clear(); - - if (content !== '') this._readableState.buffer.push(content); - this._readableState.length = content.length; - return this; -}; // Don't raise the hwm > 1GB - - -var MAX_HWM = 0x40000000; - -function computeNewHighWaterMark(n) { - if (n >= MAX_HWM) { - // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE. - n = MAX_HWM; - } else { - // Get the next highest power of 2 to prevent increasing hwm excessively in - // tiny amounts - n--; - n |= n >>> 1; - n |= n >>> 2; - n |= n >>> 4; - n |= n >>> 8; - n |= n >>> 16; - n++; - } - - return n; -} // This function is designed to be inlinable, so please take care when making -// changes to the function body. - - -function howMuchToRead(n, state) { - if (n <= 0 || state.length === 0 && state.ended) return 0; - if (state.objectMode) return 1; - - if (n !== n) { - // Only flow one buffer at a time - if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; - } // If we're asking for more than the current hwm, then raise the hwm. - - - if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); - if (n <= state.length) return n; // Don't have enough - - if (!state.ended) { - state.needReadable = true; - return 0; - } - - return state.length; -} // you can override either this method, or the async _read(n) below. - - -Readable.prototype.read = function (n) { - debug('read', n); - n = parseInt(n, 10); - var state = this._readableState; - var nOrig = n; - if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - - if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) { - debug('read: emitReadable', state.length, state.ended); - if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); - return null; - } - - n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up. - - if (n === 0 && state.ended) { - if (state.length === 0) endReadable(this); - return null; - } // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. - // if we need a readable event, then we need to do some reading. - - - var doRead = state.needReadable; - debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some - - if (state.length === 0 || state.length - n < state.highWaterMark) { - doRead = true; - debug('length less than watermark', doRead); - } // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. - - - if (state.ended || state.reading) { - doRead = false; - debug('reading or ended', doRead); - } else if (doRead) { - debug('do read'); - state.reading = true; - state.sync = true; // if the length is currently zero, then we *need* a readable event. - - if (state.length === 0) state.needReadable = true; // call internal read method - - this._read(state.highWaterMark); - - state.sync = false; // If _read pushed data synchronously, then `reading` will be false, - // and we need to re-evaluate how much data we can return to the user. - - if (!state.reading) n = howMuchToRead(nOrig, state); - } - - var ret; - if (n > 0) ret = fromList(n, state);else ret = null; - - if (ret === null) { - state.needReadable = state.length <= state.highWaterMark; - n = 0; - } else { - state.length -= n; - state.awaitDrain = 0; - } - - if (state.length === 0) { - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick. - - if (nOrig !== n && state.ended) endReadable(this); - } - - if (ret !== null) this.emit('data', ret); - return ret; -}; - -function onEofChunk(stream, state) { - debug('onEofChunk'); - if (state.ended) return; - - if (state.decoder) { - var chunk = state.decoder.end(); - - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; - } - } - - state.ended = true; - - if (state.sync) { - // if we are sync, wait until next tick to emit the data. - // Otherwise we risk emitting data in the flow() - // the readable code triggers during a read() call - emitReadable(stream); - } else { - // emit 'readable' now to make sure it gets picked up. - state.needReadable = false; - - if (!state.emittedReadable) { - state.emittedReadable = true; - emitReadable_(stream); - } - } -} // Don't emit readable right away in sync mode, because this can trigger -// another read() call => stack overflow. This way, it might trigger -// a nextTick recursion warning, but that's not so bad. - - -function emitReadable(stream) { - var state = stream._readableState; - debug('emitReadable', state.needReadable, state.emittedReadable); - state.needReadable = false; - - if (!state.emittedReadable) { - debug('emitReadable', state.flowing); - state.emittedReadable = true; - ({env:{}}).nextTick(emitReadable_, stream); - } -} - -function emitReadable_(stream) { - var state = stream._readableState; - debug('emitReadable_', state.destroyed, state.length, state.ended); - - if (!state.destroyed && (state.length || state.ended)) { - stream.emit('readable'); - state.emittedReadable = false; - } // The stream needs another readable event if - // 1. It is not flowing, as the flow mechanism will take - // care of it. - // 2. It is not ended. - // 3. It is below the highWaterMark, so we can schedule - // another readable later. - - - state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark; - flow(stream); -} // at this point, the user has presumably seen the 'readable' event, -// and called read() to consume some data. that may have triggered -// in turn another _read(n) call, in which case reading = true if -// it's in progress. -// However, if we're not ended, or reading, and the length < hwm, -// then go ahead and try to read some more preemptively. - - -function maybeReadMore(stream, state) { - if (!state.readingMore) { - state.readingMore = true; - ({env:{}}).nextTick(maybeReadMore_, stream, state); - } -} - -function maybeReadMore_(stream, state) { - // Attempt to read more data if we should. - // - // The conditions for reading more data are (one of): - // - Not enough data buffered (state.length < state.highWaterMark). The loop - // is responsible for filling the buffer with enough data if such data - // is available. If highWaterMark is 0 and we are not in the flowing mode - // we should _not_ attempt to buffer any extra data. We'll get more data - // when the stream consumer calls read() instead. - // - No data in the buffer, and the stream is in flowing mode. In this mode - // the loop below is responsible for ensuring read() is called. Failing to - // call read here would abort the flow and there's no other mechanism for - // continuing the flow if the stream consumer has just subscribed to the - // 'data' event. - // - // In addition to the above conditions to keep reading data, the following - // conditions prevent the data from being read: - // - The stream has ended (state.ended). - // - There is already a pending 'read' operation (state.reading). This is a - // case where the the stream has called the implementation defined _read() - // method, but they are processing the call asynchronously and have _not_ - // called push() with new data. In this case we skip performing more - // read()s. The execution ends in this method again after the _read() ends - // up calling push() with more data. - while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) { - var len = state.length; - debug('maybeReadMore read 0'); - stream.read(0); - if (len === state.length) // didn't get any data, stop spinning. - break; - } - - state.readingMore = false; -} // abstract method. to be overridden in specific implementation classes. -// call cb(er, data) where data is <= n in length. -// for virtual (non-string, non-buffer) streams, "length" is somewhat -// arbitrary, and perhaps not very meaningful. - - -Readable.prototype._read = function (n) { - errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()')); -}; - -Readable.prototype.pipe = function (dest, pipeOpts) { - var src = this; - var state = this._readableState; - - switch (state.pipesCount) { - case 0: - state.pipes = dest; - break; - - case 1: - state.pipes = [state.pipes, dest]; - break; - - default: - state.pipes.push(dest); - break; - } - - state.pipesCount += 1; - debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); - var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== ({env:{}}).stdout && dest !== ({env:{}}).stderr; - var endFn = doEnd ? onend : unpipe; - if (state.endEmitted) ({env:{}}).nextTick(endFn);else src.once('end', endFn); - dest.on('unpipe', onunpipe); - - function onunpipe(readable, unpipeInfo) { - debug('onunpipe'); - - if (readable === src) { - if (unpipeInfo && unpipeInfo.hasUnpiped === false) { - unpipeInfo.hasUnpiped = true; - cleanup(); - } - } - } - - function onend() { - debug('onend'); - dest.end(); - } // when the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. - - - var ondrain = pipeOnDrain(src); - dest.on('drain', ondrain); - var cleanedUp = false; - - function cleanup() { - debug('cleanup'); // cleanup event handlers once the pipe is broken - - dest.removeListener('close', onclose); - dest.removeListener('finish', onfinish); - dest.removeListener('drain', ondrain); - dest.removeListener('error', onerror); - dest.removeListener('unpipe', onunpipe); - src.removeListener('end', onend); - src.removeListener('end', unpipe); - src.removeListener('data', ondata); - cleanedUp = true; // if the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. - - if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); - } - - src.on('data', ondata); - - function ondata(chunk) { - debug('ondata'); - var ret = dest.write(chunk); - debug('dest.write', ret); - - if (ret === false) { - // If the user unpiped during `dest.write()`, it is possible - // to get stuck in a permanently paused state if that write - // also returned false. - // => Check whether `dest` is still a piping destination. - if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { - debug('false write response, pause', state.awaitDrain); - state.awaitDrain++; - } - - src.pause(); - } - } // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - - - function onerror(er) { - debug('onerror', er); - unpipe(); - dest.removeListener('error', onerror); - if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er); - } // Make sure our error handler is attached before userland ones. - - - prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once. - - function onclose() { - dest.removeListener('finish', onfinish); - unpipe(); - } - - dest.once('close', onclose); - - function onfinish() { - debug('onfinish'); - dest.removeListener('close', onclose); - unpipe(); - } - - dest.once('finish', onfinish); - - function unpipe() { - debug('unpipe'); - src.unpipe(dest); - } // tell the dest that it's being piped to - - - dest.emit('pipe', src); // start the flow if it hasn't been started already. - - if (!state.flowing) { - debug('pipe resume'); - src.resume(); - } - - return dest; -}; - -function pipeOnDrain(src) { - return function pipeOnDrainFunctionResult() { - var state = src._readableState; - debug('pipeOnDrain', state.awaitDrain); - if (state.awaitDrain) state.awaitDrain--; - - if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { - state.flowing = true; - flow(src); - } - }; -} - -Readable.prototype.unpipe = function (dest) { - var state = this._readableState; - var unpipeInfo = { - hasUnpiped: false - }; // if we're not piping anywhere, then do nothing. - - if (state.pipesCount === 0) return this; // just one destination. most common case. - - if (state.pipesCount === 1) { - // passed in one, but it's not the right one. - if (dest && dest !== state.pipes) return this; - if (!dest) dest = state.pipes; // got a match. - - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - if (dest) dest.emit('unpipe', this, unpipeInfo); - return this; - } // slow case. multiple pipe destinations. - - - if (!dest) { - // remove all. - var dests = state.pipes; - var len = state.pipesCount; - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - - for (var i = 0; i < len; i++) { - dests[i].emit('unpipe', this, { - hasUnpiped: false - }); - } - - return this; - } // try to find the right one. - - - var index = indexOf(state.pipes, dest); - if (index === -1) return this; - state.pipes.splice(index, 1); - state.pipesCount -= 1; - if (state.pipesCount === 1) state.pipes = state.pipes[0]; - dest.emit('unpipe', this, unpipeInfo); - return this; -}; // set up data events if they are asked for -// Ensure readable listeners eventually get something - - -Readable.prototype.on = function (ev, fn) { - var res = Stream.prototype.on.call(this, ev, fn); - var state = this._readableState; - - if (ev === 'data') { - // update readableListening so that resume() may be a no-op - // a few lines down. This is needed to support once('readable'). - state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused - - if (state.flowing !== false) this.resume(); - } else if (ev === 'readable') { - if (!state.endEmitted && !state.readableListening) { - state.readableListening = state.needReadable = true; - state.flowing = false; - state.emittedReadable = false; - debug('on readable', state.length, state.reading); - - if (state.length) { - emitReadable(this); - } else if (!state.reading) { - ({env:{}}).nextTick(nReadingNextTick, this); - } - } - } - - return res; -}; - -Readable.prototype.addListener = Readable.prototype.on; - -Readable.prototype.removeListener = function (ev, fn) { - var res = Stream.prototype.removeListener.call(this, ev, fn); - - if (ev === 'readable') { - // We need to check if there is someone still listening to - // readable and reset the state. However this needs to happen - // after readable has been emitted but before I/O (nextTick) to - // support once('readable', fn) cycles. This means that calling - // resume within the same tick will have no - // effect. - ({env:{}}).nextTick(updateReadableListening, this); - } - - return res; -}; - -Readable.prototype.removeAllListeners = function (ev) { - var res = Stream.prototype.removeAllListeners.apply(this, arguments); - - if (ev === 'readable' || ev === undefined) { - // We need to check if there is someone still listening to - // readable and reset the state. However this needs to happen - // after readable has been emitted but before I/O (nextTick) to - // support once('readable', fn) cycles. This means that calling - // resume within the same tick will have no - // effect. - ({env:{}}).nextTick(updateReadableListening, this); - } - - return res; -}; - -function updateReadableListening(self) { - var state = self._readableState; - state.readableListening = self.listenerCount('readable') > 0; - - if (state.resumeScheduled && !state.paused) { - // flowing needs to be set to true now, otherwise - // the upcoming resume will not flow. - state.flowing = true; // crude way to check if we should resume - } else if (self.listenerCount('data') > 0) { - self.resume(); - } -} - -function nReadingNextTick(self) { - debug('readable nexttick read 0'); - self.read(0); -} // pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. - - -Readable.prototype.resume = function () { - var state = this._readableState; - - if (!state.flowing) { - debug('resume'); // we flow only if there is no one listening - // for readable, but we still have to call - // resume() - - state.flowing = !state.readableListening; - resume(this, state); - } - - state.paused = false; - return this; -}; - -function resume(stream, state) { - if (!state.resumeScheduled) { - state.resumeScheduled = true; - ({env:{}}).nextTick(resume_, stream, state); - } -} - -function resume_(stream, state) { - debug('resume', state.reading); - - if (!state.reading) { - stream.read(0); - } - - state.resumeScheduled = false; - stream.emit('resume'); - flow(stream); - if (state.flowing && !state.reading) stream.read(0); -} - -Readable.prototype.pause = function () { - debug('call pause flowing=%j', this._readableState.flowing); - - if (this._readableState.flowing !== false) { - debug('pause'); - this._readableState.flowing = false; - this.emit('pause'); - } - - this._readableState.paused = true; - return this; -}; - -function flow(stream) { - var state = stream._readableState; - debug('flow', state.flowing); - - while (state.flowing && stream.read() !== null) { - ; - } -} // wrap an old-style stream as the async data source. -// This is *not* part of the readable stream interface. -// It is an ugly unfortunate mess of history. - - -Readable.prototype.wrap = function (stream) { - var _this = this; - - var state = this._readableState; - var paused = false; - stream.on('end', function () { - debug('wrapped end'); - - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) _this.push(chunk); - } - - _this.push(null); - }); - stream.on('data', function (chunk) { - debug('wrapped data'); - if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode - - if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; - - var ret = _this.push(chunk); - - if (!ret) { - paused = true; - stream.pause(); - } - }); // proxy all the other methods. - // important when wrapping filters and duplexes. - - for (var i in stream) { - if (this[i] === undefined && typeof stream[i] === 'function') { - this[i] = function methodWrap(method) { - return function methodWrapReturnFunction() { - return stream[method].apply(stream, arguments); - }; - }(i); - } - } // proxy certain important events. - - - for (var n = 0; n < kProxyEvents.length; n++) { - stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); - } // when we try to consume some more bytes, simply unpause the - // underlying stream. - - - this._read = function (n) { - debug('wrapped _read', n); - - if (paused) { - paused = false; - stream.resume(); - } - }; - - return this; -}; - -if (typeof Symbol === 'function') { - Readable.prototype[Symbol.asyncIterator] = function () { - if (createReadableStreamAsyncIterator === undefined) { - createReadableStreamAsyncIterator = __webpack_require__(7673); - } - - return createReadableStreamAsyncIterator(this); - }; -} - -Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._readableState.highWaterMark; - } -}); -Object.defineProperty(Readable.prototype, 'readableBuffer', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._readableState && this._readableState.buffer; - } -}); -Object.defineProperty(Readable.prototype, 'readableFlowing', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._readableState.flowing; - }, - set: function set(state) { - if (this._readableState) { - this._readableState.flowing = state; - } - } -}); // exposed for testing purposes only. - -Readable._fromList = fromList; -Object.defineProperty(Readable.prototype, 'readableLength', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._readableState.length; - } -}); // Pluck off n bytes from an array of buffers. -// Length is the combined lengths of all the buffers in the list. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. - -function fromList(n, state) { - // nothing buffered - if (state.length === 0) return null; - var ret; - if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { - // read it all, truncate the list - if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length); - state.buffer.clear(); - } else { - // read part of list - ret = state.buffer.consume(n, state.decoder); - } - return ret; -} - -function endReadable(stream) { - var state = stream._readableState; - debug('endReadable', state.endEmitted); - - if (!state.endEmitted) { - state.ended = true; - ({env:{}}).nextTick(endReadableNT, state, stream); - } -} - -function endReadableNT(state, stream) { - debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift. - - if (!state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.readable = false; - stream.emit('end'); - - if (state.autoDestroy) { - // In case of duplex streams we need a way to detect - // if the writable side is ready for autoDestroy as well - var wState = stream._writableState; - - if (!wState || wState.autoDestroy && wState.finished) { - stream.destroy(); - } - } - } -} - -if (typeof Symbol === 'function') { - Readable.from = function (iterable, opts) { - if (from === undefined) { - from = __webpack_require__(3799); - } - - return from(Readable, iterable, opts); - }; -} - -function indexOf(xs, x) { - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) return i; - } - - return -1; -} - -/***/ }), - -/***/ 4951: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. -// a transform stream is a readable/writable stream where you do -// something with the data. Sometimes it's called a "filter", -// but that's not a great name for it, since that implies a thing where -// some bits pass through, and others are simply ignored. (That would -// be a valid example of a transform, of course.) -// -// While the output is causally related to the input, it's not a -// necessarily symmetric or synchronous transformation. For example, -// a zlib stream might take multiple plain-text writes(), and then -// emit a single compressed chunk some time in the future. -// -// Here's how this works: -// -// The Transform stream has all the aspects of the readable and writable -// stream classes. When you write(chunk), that calls _write(chunk,cb) -// internally, and returns false if there's a lot of pending writes -// buffered up. When you call read(), that calls _read(n) until -// there's enough pending readable data buffered up. -// -// In a transform stream, the written data is placed in a buffer. When -// _read(n) is called, it transforms the queued up data, calling the -// buffered _write cb's as it consumes chunks. If consuming a single -// written chunk would result in multiple output chunks, then the first -// outputted bit calls the readcb, and subsequent chunks just go into -// the read buffer, and will cause it to emit 'readable' if necessary. -// -// This way, back-pressure is actually determined by the reading side, -// since _read has to be called to start processing a new chunk. However, -// a pathological inflate type of transform can cause excessive buffering -// here. For example, imagine a stream where every byte of input is -// interpreted as an integer from 0-255, and then results in that many -// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in -// 1kb of data being output. In this case, you could write a very small -// amount of input, and end up with a very large amount of output. In -// such a pathological inflating mechanism, there'd be no way to tell -// the system to stop doing the transform. A single 4MB write could -// cause the system to run out of memory. -// -// However, even in such a pathological case, only a single written chunk -// would be consumed, and then the rest would wait (un-transformed) until -// the results of the previous transformed chunk were consumed. - - -module.exports = Transform; - -var _require$codes = (__webpack_require__(5613)/* .codes */ .q), - ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, - ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, - ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING, - ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0; - -var Duplex = __webpack_require__(4611); - -__webpack_require__(376)(Transform, Duplex); - -function afterTransform(er, data) { - var ts = this._transformState; - ts.transforming = false; - var cb = ts.writecb; - - if (cb === null) { - return this.emit('error', new ERR_MULTIPLE_CALLBACK()); - } - - ts.writechunk = null; - ts.writecb = null; - if (data != null) // single equals check for both `null` and `undefined` - this.push(data); - cb(er); - var rs = this._readableState; - rs.reading = false; - - if (rs.needReadable || rs.length < rs.highWaterMark) { - this._read(rs.highWaterMark); - } -} - -function Transform(options) { - if (!(this instanceof Transform)) return new Transform(options); - Duplex.call(this, options); - this._transformState = { - afterTransform: afterTransform.bind(this), - needTransform: false, - transforming: false, - writecb: null, - writechunk: null, - writeencoding: null - }; // start out asking for a readable event once data is transformed. - - this._readableState.needReadable = true; // we have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. - - this._readableState.sync = false; - - if (options) { - if (typeof options.transform === 'function') this._transform = options.transform; - if (typeof options.flush === 'function') this._flush = options.flush; - } // When the writable side finishes, then flush out anything remaining. - - - this.on('prefinish', prefinish); -} - -function prefinish() { - var _this = this; - - if (typeof this._flush === 'function' && !this._readableState.destroyed) { - this._flush(function (er, data) { - done(_this, er, data); - }); - } else { - done(this, null, null); - } -} - -Transform.prototype.push = function (chunk, encoding) { - this._transformState.needTransform = false; - return Duplex.prototype.push.call(this, chunk, encoding); -}; // This is the part where you do stuff! -// override this function in implementation classes. -// 'chunk' is an input chunk. -// -// Call `push(newChunk)` to pass along transformed output -// to the readable side. You may call 'push' zero or more times. -// -// Call `cb(err)` when you are done with this chunk. If you pass -// an error, then that'll put the hurt on the whole operation. If you -// never call cb(), then you'll never get another chunk. - - -Transform.prototype._transform = function (chunk, encoding, cb) { - cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()')); -}; - -Transform.prototype._write = function (chunk, encoding, cb) { - var ts = this._transformState; - ts.writecb = cb; - ts.writechunk = chunk; - ts.writeencoding = encoding; - - if (!ts.transforming) { - var rs = this._readableState; - if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); - } -}; // Doesn't matter what the args are here. -// _transform does all the work. -// That we got here means that the readable side wants more data. - - -Transform.prototype._read = function (n) { - var ts = this._transformState; - - if (ts.writechunk !== null && !ts.transforming) { - ts.transforming = true; - - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); - } else { - // mark that we need a transform, so that any data that comes in - // will get processed, now that we've asked for it. - ts.needTransform = true; - } -}; - -Transform.prototype._destroy = function (err, cb) { - Duplex.prototype._destroy.call(this, err, function (err2) { - cb(err2); - }); -}; - -function done(stream, er, data) { - if (er) return stream.emit('error', er); - if (data != null) // single equals check for both `null` and `undefined` - stream.push(data); // TODO(BridgeAR): Write a test for these two error cases - // if there's nothing in the write buffer, then that means - // that nothing more will ever be provided - - if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0(); - if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING(); - return stream.push(null); -} - -/***/ }), - -/***/ 679: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. -// A bit simpler than readable streams. -// Implement an async ._write(chunk, encoding, cb), and it'll handle all -// the drain event emission and buffering. - - -module.exports = Writable; -/* */ - -function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; - this.next = null; -} // It seems a linked list but it is not -// there will be only 2 of these for each stream - - -function CorkedRequest(state) { - var _this = this; - - this.next = null; - this.entry = null; - - this.finish = function () { - onCorkedFinish(_this, state); - }; -} -/* */ - -/**/ - - -var Duplex; -/**/ - -Writable.WritableState = WritableState; -/**/ - -var internalUtil = { - deprecate: __webpack_require__(8016) -}; -/**/ - -/**/ - -var Stream = __webpack_require__(6054); -/**/ - - -var Buffer = (__webpack_require__(365).Buffer); - -var OurUint8Array = __webpack_require__.g.Uint8Array || function () {}; - -function _uint8ArrayToBuffer(chunk) { - return Buffer.from(chunk); -} - -function _isUint8Array(obj) { - return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; -} - -var destroyImpl = __webpack_require__(4798); - -var _require = __webpack_require__(6876), - getHighWaterMark = _require.getHighWaterMark; - -var _require$codes = (__webpack_require__(5613)/* .codes */ .q), - ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, - ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, - ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, - ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE, - ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED, - ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES, - ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END, - ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING; - -var errorOrDestroy = destroyImpl.errorOrDestroy; - -__webpack_require__(376)(Writable, Stream); - -function nop() {} - -function WritableState(options, stream, isDuplex) { - Duplex = Duplex || __webpack_require__(4611); - options = options || {}; // Duplex streams are both readable and writable, but share - // the same options object. - // However, some cases require setting options to different - // values for the readable and the writable sides of the duplex stream, - // e.g. options.readableObjectMode vs. options.writableObjectMode, etc. - - if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream - // contains buffers or objects. - - this.objectMode = !!options.objectMode; - if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write() - - this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called - - this.finalCalled = false; // drain event flag. - - this.needDrain = false; // at the start of calling end() - - this.ending = false; // when end() has been called, and returned - - this.ended = false; // when 'finish' is emitted - - this.finished = false; // has it been destroyed - - this.destroyed = false; // should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. - - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - - this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. - - this.length = 0; // a flag to see when we're in the middle of a write. - - this.writing = false; // when true all writes will be buffered until .uncork() call - - this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - - this.sync = true; // a flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. - - this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb) - - this.onwrite = function (er) { - onwrite(stream, er); - }; // the callback that the user supplies to write(chunk,encoding,cb) - - - this.writecb = null; // the amount that is being written when _write is called. - - this.writelen = 0; - this.bufferedRequest = null; - this.lastBufferedRequest = null; // number of pending user-supplied write callbacks - // this must be 0 before 'finish' can be emitted - - this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs - // This is relevant for synchronous Transform streams - - this.prefinished = false; // True if the error was already emitted and should not be thrown again - - this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true. - - this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end') - - this.autoDestroy = !!options.autoDestroy; // count buffered requests - - this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always - // one allocated and free to use, and we maintain at most two - - this.corkedRequestsFree = new CorkedRequest(this); -} - -WritableState.prototype.getBuffer = function getBuffer() { - var current = this.bufferedRequest; - var out = []; - - while (current) { - out.push(current); - current = current.next; - } - - return out; -}; - -(function () { - try { - Object.defineProperty(WritableState.prototype, 'buffer', { - get: internalUtil.deprecate(function writableStateBufferGetter() { - return this.getBuffer(); - }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') - }); - } catch (_) {} -})(); // Test _writableState for inheritance to account for Duplex streams, -// whose prototype chain only points to Readable. - - -var realHasInstance; - -if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { - realHasInstance = Function.prototype[Symbol.hasInstance]; - Object.defineProperty(Writable, Symbol.hasInstance, { - value: function value(object) { - if (realHasInstance.call(this, object)) return true; - if (this !== Writable) return false; - return object && object._writableState instanceof WritableState; - } - }); -} else { - realHasInstance = function realHasInstance(object) { - return object instanceof this; - }; -} - -function Writable(options) { - Duplex = Duplex || __webpack_require__(4611); // Writable ctor is applied to Duplexes, too. - // `realHasInstance` is necessary because using plain `instanceof` - // would return false, as no `_writableState` property is attached. - // Trying to use the custom `instanceof` for Writable here will also break the - // Node.js LazyTransform implementation, which has a non-trivial getter for - // `_writableState` that would lead to infinite recursion. - // Checking for a Stream.Duplex instance is faster here instead of inside - // the WritableState constructor, at least with V8 6.5 - - var isDuplex = this instanceof Duplex; - if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options); - this._writableState = new WritableState(options, this, isDuplex); // legacy. - - this.writable = true; - - if (options) { - if (typeof options.write === 'function') this._write = options.write; - if (typeof options.writev === 'function') this._writev = options.writev; - if (typeof options.destroy === 'function') this._destroy = options.destroy; - if (typeof options["final"] === 'function') this._final = options["final"]; - } - - Stream.call(this); -} // Otherwise people can pipe Writable streams, which is just wrong. - - -Writable.prototype.pipe = function () { - errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE()); -}; - -function writeAfterEnd(stream, cb) { - var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb - - errorOrDestroy(stream, er); - ({env:{}}).nextTick(cb, er); -} // Checks that a user-supplied chunk is valid, especially for the particular -// mode the stream is in. Currently this means that `null` is never accepted -// and undefined/non-string values are only allowed in object mode. - - -function validChunk(stream, state, chunk, cb) { - var er; - - if (chunk === null) { - er = new ERR_STREAM_NULL_VALUES(); - } else if (typeof chunk !== 'string' && !state.objectMode) { - er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk); - } - - if (er) { - errorOrDestroy(stream, er); - ({env:{}}).nextTick(cb, er); - return false; - } - - return true; -} - -Writable.prototype.write = function (chunk, encoding, cb) { - var state = this._writableState; - var ret = false; - - var isBuf = !state.objectMode && _isUint8Array(chunk); - - if (isBuf && !Buffer.isBuffer(chunk)) { - chunk = _uint8ArrayToBuffer(chunk); - } - - if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; - if (typeof cb !== 'function') cb = nop; - if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { - state.pendingcb++; - ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); - } - return ret; -}; - -Writable.prototype.cork = function () { - this._writableState.corked++; -}; - -Writable.prototype.uncork = function () { - var state = this._writableState; - - if (state.corked) { - state.corked--; - if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); - } -}; - -Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { - // node::ParseEncoding() requires lower case. - if (typeof encoding === 'string') encoding = encoding.toLowerCase(); - if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding); - this._writableState.defaultEncoding = encoding; - return this; -}; - -Object.defineProperty(Writable.prototype, 'writableBuffer', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._writableState && this._writableState.getBuffer(); - } -}); - -function decodeChunk(state, chunk, encoding) { - if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { - chunk = Buffer.from(chunk, encoding); - } - - return chunk; -} - -Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._writableState.highWaterMark; - } -}); // if we're already writing something, then just put this -// in the queue, and wait our turn. Otherwise, call _write -// If we return false, then we need a drain event, so set that flag. - -function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { - if (!isBuf) { - var newChunk = decodeChunk(state, chunk, encoding); - - if (chunk !== newChunk) { - isBuf = true; - encoding = 'buffer'; - chunk = newChunk; - } - } - - var len = state.objectMode ? 1 : chunk.length; - state.length += len; - var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false. - - if (!ret) state.needDrain = true; - - if (state.writing || state.corked) { - var last = state.lastBufferedRequest; - state.lastBufferedRequest = { - chunk: chunk, - encoding: encoding, - isBuf: isBuf, - callback: cb, - next: null - }; - - if (last) { - last.next = state.lastBufferedRequest; - } else { - state.bufferedRequest = state.lastBufferedRequest; - } - - state.bufferedRequestCount += 1; - } else { - doWrite(stream, state, false, len, chunk, encoding, cb); - } - - return ret; -} - -function doWrite(stream, state, writev, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); - state.sync = false; -} - -function onwriteError(stream, state, sync, er, cb) { - --state.pendingcb; - - if (sync) { - // defer the callback if we are being called synchronously - // to avoid piling up things on the stack - ({env:{}}).nextTick(cb, er); // this can emit finish, and it will always happen - // after error - - ({env:{}}).nextTick(finishMaybe, stream, state); - stream._writableState.errorEmitted = true; - errorOrDestroy(stream, er); - } else { - // the caller expect this to happen before if - // it is async - cb(er); - stream._writableState.errorEmitted = true; - errorOrDestroy(stream, er); // this can emit finish, but finish must - // always follow error - - finishMaybe(stream, state); - } -} - -function onwriteStateUpdate(state) { - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; -} - -function onwrite(stream, er) { - var state = stream._writableState; - var sync = state.sync; - var cb = state.writecb; - if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK(); - onwriteStateUpdate(state); - if (er) onwriteError(stream, state, sync, er, cb);else { - // Check if we're actually ready to finish, but don't emit yet - var finished = needFinish(state) || stream.destroyed; - - if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { - clearBuffer(stream, state); - } - - if (sync) { - ({env:{}}).nextTick(afterWrite, stream, state, finished, cb); - } else { - afterWrite(stream, state, finished, cb); - } - } -} - -function afterWrite(stream, state, finished, cb) { - if (!finished) onwriteDrain(stream, state); - state.pendingcb--; - cb(); - finishMaybe(stream, state); -} // Must force callback to be called on nextTick, so that we don't -// emit 'drain' before the write() consumer gets the 'false' return -// value, and has a chance to attach a 'drain' listener. - - -function onwriteDrain(stream, state) { - if (state.length === 0 && state.needDrain) { - state.needDrain = false; - stream.emit('drain'); - } -} // if there's something in the buffer waiting, then process it - - -function clearBuffer(stream, state) { - state.bufferProcessing = true; - var entry = state.bufferedRequest; - - if (stream._writev && entry && entry.next) { - // Fast case, write everything using _writev() - var l = state.bufferedRequestCount; - var buffer = new Array(l); - var holder = state.corkedRequestsFree; - holder.entry = entry; - var count = 0; - var allBuffers = true; - - while (entry) { - buffer[count] = entry; - if (!entry.isBuf) allBuffers = false; - entry = entry.next; - count += 1; - } - - buffer.allBuffers = allBuffers; - doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time - // as the hot path ends with doWrite - - state.pendingcb++; - state.lastBufferedRequest = null; - - if (holder.next) { - state.corkedRequestsFree = holder.next; - holder.next = null; - } else { - state.corkedRequestsFree = new CorkedRequest(state); - } - - state.bufferedRequestCount = 0; - } else { - // Slow case, write chunks one-by-one - while (entry) { - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; - doWrite(stream, state, false, len, chunk, encoding, cb); - entry = entry.next; - state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then - // it means that we need to wait until it does. - // also, that means that the chunk and cb are currently - // being processed, so move the buffer counter past them. - - if (state.writing) { - break; - } - } - - if (entry === null) state.lastBufferedRequest = null; - } - - state.bufferedRequest = entry; - state.bufferProcessing = false; -} - -Writable.prototype._write = function (chunk, encoding, cb) { - cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()')); -}; - -Writable.prototype._writev = null; - -Writable.prototype.end = function (chunk, encoding, cb) { - var state = this._writableState; - - if (typeof chunk === 'function') { - cb = chunk; - chunk = null; - encoding = null; - } else if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks - - if (state.corked) { - state.corked = 1; - this.uncork(); - } // ignore unnecessary end() calls. - - - if (!state.ending) endWritable(this, state, cb); - return this; -}; - -Object.defineProperty(Writable.prototype, 'writableLength', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._writableState.length; - } -}); - -function needFinish(state) { - return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; -} - -function callFinal(stream, state) { - stream._final(function (err) { - state.pendingcb--; - - if (err) { - errorOrDestroy(stream, err); - } - - state.prefinished = true; - stream.emit('prefinish'); - finishMaybe(stream, state); - }); -} - -function prefinish(stream, state) { - if (!state.prefinished && !state.finalCalled) { - if (typeof stream._final === 'function' && !state.destroyed) { - state.pendingcb++; - state.finalCalled = true; - ({env:{}}).nextTick(callFinal, stream, state); - } else { - state.prefinished = true; - stream.emit('prefinish'); - } - } -} - -function finishMaybe(stream, state) { - var need = needFinish(state); - - if (need) { - prefinish(stream, state); - - if (state.pendingcb === 0) { - state.finished = true; - stream.emit('finish'); - - if (state.autoDestroy) { - // In case of duplex streams we need a way to detect - // if the readable side is ready for autoDestroy as well - var rState = stream._readableState; - - if (!rState || rState.autoDestroy && rState.endEmitted) { - stream.destroy(); - } - } - } - } - - return need; -} - -function endWritable(stream, state, cb) { - state.ending = true; - finishMaybe(stream, state); - - if (cb) { - if (state.finished) ({env:{}}).nextTick(cb);else stream.once('finish', cb); - } - - state.ended = true; - stream.writable = false; -} - -function onCorkedFinish(corkReq, state, err) { - var entry = corkReq.entry; - corkReq.entry = null; - - while (entry) { - var cb = entry.callback; - state.pendingcb--; - cb(err); - entry = entry.next; - } // reuse the free corkReq. - - - state.corkedRequestsFree.next = corkReq; -} - -Object.defineProperty(Writable.prototype, 'destroyed', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - if (this._writableState === undefined) { - return false; - } - - return this._writableState.destroyed; - }, - set: function set(value) { - // we ignore the value if the stream - // has not been initialized yet - if (!this._writableState) { - return; - } // backward compatibility, the user is explicitly - // managing destroyed - - - this._writableState.destroyed = value; - } -}); -Writable.prototype.destroy = destroyImpl.destroy; -Writable.prototype._undestroy = destroyImpl.undestroy; - -Writable.prototype._destroy = function (err, cb) { - cb(err); -}; - -/***/ }), - -/***/ 7673: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var _Object$setPrototypeO; - -function _defineProperty(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - - return obj; -} - -var finished = __webpack_require__(8820); - -var kLastResolve = Symbol('lastResolve'); -var kLastReject = Symbol('lastReject'); -var kError = Symbol('error'); -var kEnded = Symbol('ended'); -var kLastPromise = Symbol('lastPromise'); -var kHandlePromise = Symbol('handlePromise'); -var kStream = Symbol('stream'); - -function createIterResult(value, done) { - return { - value: value, - done: done - }; -} - -function readAndResolve(iter) { - var resolve = iter[kLastResolve]; - - if (resolve !== null) { - var data = iter[kStream].read(); // we defer if data is null - // we can be expecting either 'end' or - // 'error' - - if (data !== null) { - iter[kLastPromise] = null; - iter[kLastResolve] = null; - iter[kLastReject] = null; - resolve(createIterResult(data, false)); - } - } -} - -function onReadable(iter) { - // we wait for the next tick, because it might - // emit an error with process.nextTick - ({env:{}}).nextTick(readAndResolve, iter); -} - -function wrapForNext(lastPromise, iter) { - return function (resolve, reject) { - lastPromise.then(function () { - if (iter[kEnded]) { - resolve(createIterResult(undefined, true)); - return; - } - - iter[kHandlePromise](resolve, reject); - }, reject); - }; -} - -var AsyncIteratorPrototype = Object.getPrototypeOf(function () {}); -var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = { - get stream() { - return this[kStream]; - }, - - next: function next() { - var _this = this; // if we have detected an error in the meanwhile - // reject straight away - - - var error = this[kError]; - - if (error !== null) { - return Promise.reject(error); - } - - if (this[kEnded]) { - return Promise.resolve(createIterResult(undefined, true)); - } - - if (this[kStream].destroyed) { - // We need to defer via nextTick because if .destroy(err) is - // called, the error will be emitted via nextTick, and - // we cannot guarantee that there is no error lingering around - // waiting to be emitted. - return new Promise(function (resolve, reject) { - ({env:{}}).nextTick(function () { - if (_this[kError]) { - reject(_this[kError]); - } else { - resolve(createIterResult(undefined, true)); - } - }); - }); - } // if we have multiple next() calls - // we will wait for the previous Promise to finish - // this logic is optimized to support for await loops, - // where next() is only called once at a time - - - var lastPromise = this[kLastPromise]; - var promise; - - if (lastPromise) { - promise = new Promise(wrapForNext(lastPromise, this)); - } else { - // fast path needed to support multiple this.push() - // without triggering the next() queue - var data = this[kStream].read(); - - if (data !== null) { - return Promise.resolve(createIterResult(data, false)); - } - - promise = new Promise(this[kHandlePromise]); - } - - this[kLastPromise] = promise; - return promise; - } -}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () { - return this; -}), _defineProperty(_Object$setPrototypeO, "return", function _return() { - var _this2 = this; // destroy(err, cb) is a private API - // we can guarantee we have that here, because we control the - // Readable class this is attached to - - - return new Promise(function (resolve, reject) { - _this2[kStream].destroy(null, function (err) { - if (err) { - reject(err); - return; - } - - resolve(createIterResult(undefined, true)); - }); - }); -}), _Object$setPrototypeO), AsyncIteratorPrototype); - -var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) { - var _Object$create; - - var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, { - value: stream, - writable: true - }), _defineProperty(_Object$create, kLastResolve, { - value: null, - writable: true - }), _defineProperty(_Object$create, kLastReject, { - value: null, - writable: true - }), _defineProperty(_Object$create, kError, { - value: null, - writable: true - }), _defineProperty(_Object$create, kEnded, { - value: stream._readableState.endEmitted, - writable: true - }), _defineProperty(_Object$create, kHandlePromise, { - value: function value(resolve, reject) { - var data = iterator[kStream].read(); - - if (data) { - iterator[kLastPromise] = null; - iterator[kLastResolve] = null; - iterator[kLastReject] = null; - resolve(createIterResult(data, false)); - } else { - iterator[kLastResolve] = resolve; - iterator[kLastReject] = reject; - } - }, - writable: true - }), _Object$create)); - iterator[kLastPromise] = null; - finished(stream, function (err) { - if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') { - var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise - // returned by next() and store the error - - if (reject !== null) { - iterator[kLastPromise] = null; - iterator[kLastResolve] = null; - iterator[kLastReject] = null; - reject(err); - } - - iterator[kError] = err; - return; - } - - var resolve = iterator[kLastResolve]; - - if (resolve !== null) { - iterator[kLastPromise] = null; - iterator[kLastResolve] = null; - iterator[kLastReject] = null; - resolve(createIterResult(undefined, true)); - } - - iterator[kEnded] = true; - }); - stream.on('readable', onReadable.bind(null, iterator)); - return iterator; -}; - -module.exports = createReadableStreamAsyncIterator; - -/***/ }), - -/***/ 1843: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -function ownKeys(object, enumerableOnly) { - var keys = Object.keys(object); - - if (Object.getOwnPropertySymbols) { - var symbols = Object.getOwnPropertySymbols(object); - if (enumerableOnly) symbols = symbols.filter(function (sym) { - return Object.getOwnPropertyDescriptor(object, sym).enumerable; - }); - keys.push.apply(keys, symbols); - } - - return keys; -} - -function _objectSpread(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i] != null ? arguments[i] : {}; - - if (i % 2) { - ownKeys(Object(source), true).forEach(function (key) { - _defineProperty(target, key, source[key]); - }); - } else if (Object.getOwnPropertyDescriptors) { - Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); - } else { - ownKeys(Object(source)).forEach(function (key) { - Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); - }); - } - } - - return target; -} - -function _defineProperty(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - - return obj; -} - -function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } -} - -function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } -} - -function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; -} - -var _require = __webpack_require__(365), - Buffer = _require.Buffer; - -var _require2 = __webpack_require__(2361), - inspect = _require2.inspect; - -var custom = inspect && inspect.custom || 'inspect'; - -function copyBuffer(src, target, offset) { - Buffer.prototype.copy.call(src, target, offset); -} - -module.exports = /*#__PURE__*/function () { - function BufferList() { - _classCallCheck(this, BufferList); - - this.head = null; - this.tail = null; - this.length = 0; - } - - _createClass(BufferList, [{ - key: "push", - value: function push(v) { - var entry = { - data: v, - next: null - }; - if (this.length > 0) this.tail.next = entry;else this.head = entry; - this.tail = entry; - ++this.length; - } - }, { - key: "unshift", - value: function unshift(v) { - var entry = { - data: v, - next: this.head - }; - if (this.length === 0) this.tail = entry; - this.head = entry; - ++this.length; - } - }, { - key: "shift", - value: function shift() { - if (this.length === 0) return; - var ret = this.head.data; - if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; - --this.length; - return ret; - } - }, { - key: "clear", - value: function clear() { - this.head = this.tail = null; - this.length = 0; - } - }, { - key: "join", - value: function join(s) { - if (this.length === 0) return ''; - var p = this.head; - var ret = '' + p.data; - - while (p = p.next) { - ret += s + p.data; - } - - return ret; - } - }, { - key: "concat", - value: function concat(n) { - if (this.length === 0) return Buffer.alloc(0); - var ret = Buffer.allocUnsafe(n >>> 0); - var p = this.head; - var i = 0; - - while (p) { - copyBuffer(p.data, ret, i); - i += p.data.length; - p = p.next; - } - - return ret; - } // Consumes a specified amount of bytes or characters from the buffered data. - - }, { - key: "consume", - value: function consume(n, hasStrings) { - var ret; - - if (n < this.head.data.length) { - // `slice` is the same for buffers and strings. - ret = this.head.data.slice(0, n); - this.head.data = this.head.data.slice(n); - } else if (n === this.head.data.length) { - // First chunk is a perfect match. - ret = this.shift(); - } else { - // Result spans more than one buffer. - ret = hasStrings ? this._getString(n) : this._getBuffer(n); - } - - return ret; - } - }, { - key: "first", - value: function first() { - return this.head.data; - } // Consumes a specified amount of characters from the buffered data. - - }, { - key: "_getString", - value: function _getString(n) { - var p = this.head; - var c = 1; - var ret = p.data; - n -= ret.length; - - while (p = p.next) { - var str = p.data; - var nb = n > str.length ? str.length : n; - if (nb === str.length) ret += str;else ret += str.slice(0, n); - n -= nb; - - if (n === 0) { - if (nb === str.length) { - ++c; - if (p.next) this.head = p.next;else this.head = this.tail = null; - } else { - this.head = p; - p.data = str.slice(nb); - } - - break; - } - - ++c; - } - - this.length -= c; - return ret; - } // Consumes a specified amount of bytes from the buffered data. - - }, { - key: "_getBuffer", - value: function _getBuffer(n) { - var ret = Buffer.allocUnsafe(n); - var p = this.head; - var c = 1; - p.data.copy(ret); - n -= p.data.length; - - while (p = p.next) { - var buf = p.data; - var nb = n > buf.length ? buf.length : n; - buf.copy(ret, ret.length - n, 0, nb); - n -= nb; - - if (n === 0) { - if (nb === buf.length) { - ++c; - if (p.next) this.head = p.next;else this.head = this.tail = null; - } else { - this.head = p; - p.data = buf.slice(nb); - } - - break; - } - - ++c; - } - - this.length -= c; - return ret; - } // Make sure the linked list only shows the minimal necessary information. - - }, { - key: custom, - value: function value(_, options) { - return inspect(this, _objectSpread({}, options, { - // Only inspect one level. - depth: 0, - // It should not recurse. - customInspect: false - })); - } - }]); - - return BufferList; -}(); - -/***/ }), - -/***/ 4798: -/***/ ((module) => { - -"use strict"; - // undocumented cb() API, needed for core, not for public API - -function destroy(err, cb) { - var _this = this; - - var readableDestroyed = this._readableState && this._readableState.destroyed; - var writableDestroyed = this._writableState && this._writableState.destroyed; - - if (readableDestroyed || writableDestroyed) { - if (cb) { - cb(err); - } else if (err) { - if (!this._writableState) { - ({env:{}}).nextTick(emitErrorNT, this, err); - } else if (!this._writableState.errorEmitted) { - this._writableState.errorEmitted = true; - ({env:{}}).nextTick(emitErrorNT, this, err); - } - } - - return this; - } // we set destroyed to true before firing error callbacks in order - // to make it re-entrance safe in case destroy() is called within callbacks - - - if (this._readableState) { - this._readableState.destroyed = true; - } // if this is a duplex stream mark the writable part as destroyed as well - - - if (this._writableState) { - this._writableState.destroyed = true; - } - - this._destroy(err || null, function (err) { - if (!cb && err) { - if (!_this._writableState) { - ({env:{}}).nextTick(emitErrorAndCloseNT, _this, err); - } else if (!_this._writableState.errorEmitted) { - _this._writableState.errorEmitted = true; - ({env:{}}).nextTick(emitErrorAndCloseNT, _this, err); - } else { - ({env:{}}).nextTick(emitCloseNT, _this); - } - } else if (cb) { - ({env:{}}).nextTick(emitCloseNT, _this); - cb(err); - } else { - ({env:{}}).nextTick(emitCloseNT, _this); - } - }); - - return this; -} - -function emitErrorAndCloseNT(self, err) { - emitErrorNT(self, err); - emitCloseNT(self); -} - -function emitCloseNT(self) { - if (self._writableState && !self._writableState.emitClose) return; - if (self._readableState && !self._readableState.emitClose) return; - self.emit('close'); -} - -function undestroy() { - if (this._readableState) { - this._readableState.destroyed = false; - this._readableState.reading = false; - this._readableState.ended = false; - this._readableState.endEmitted = false; - } - - if (this._writableState) { - this._writableState.destroyed = false; - this._writableState.ended = false; - this._writableState.ending = false; - this._writableState.finalCalled = false; - this._writableState.prefinished = false; - this._writableState.finished = false; - this._writableState.errorEmitted = false; - } -} - -function emitErrorNT(self, err) { - self.emit('error', err); -} - -function errorOrDestroy(stream, err) { - // We have tests that rely on errors being emitted - // in the same tick, so changing this is semver major. - // For now when you opt-in to autoDestroy we allow - // the error to be emitted nextTick. In a future - // semver major update we should change the default to this. - var rState = stream._readableState; - var wState = stream._writableState; - if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err); -} - -module.exports = { - destroy: destroy, - undestroy: undestroy, - errorOrDestroy: errorOrDestroy -}; - -/***/ }), - -/***/ 8820: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Ported from https://github.com/mafintosh/end-of-stream with -// permission from the author, Mathias Buus (@mafintosh). - - -var ERR_STREAM_PREMATURE_CLOSE = (__webpack_require__(5613)/* .codes.ERR_STREAM_PREMATURE_CLOSE */ .q.ERR_STREAM_PREMATURE_CLOSE); - -function once(callback) { - var called = false; - return function () { - if (called) return; - called = true; - - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - callback.apply(this, args); - }; -} - -function noop() {} - -function isRequest(stream) { - return stream.setHeader && typeof stream.abort === 'function'; -} - -function eos(stream, opts, callback) { - if (typeof opts === 'function') return eos(stream, null, opts); - if (!opts) opts = {}; - callback = once(callback || noop); - var readable = opts.readable || opts.readable !== false && stream.readable; - var writable = opts.writable || opts.writable !== false && stream.writable; - - var onlegacyfinish = function onlegacyfinish() { - if (!stream.writable) onfinish(); - }; - - var writableEnded = stream._writableState && stream._writableState.finished; - - var onfinish = function onfinish() { - writable = false; - writableEnded = true; - if (!readable) callback.call(stream); - }; - - var readableEnded = stream._readableState && stream._readableState.endEmitted; - - var onend = function onend() { - readable = false; - readableEnded = true; - if (!writable) callback.call(stream); - }; - - var onerror = function onerror(err) { - callback.call(stream, err); - }; - - var onclose = function onclose() { - var err; - - if (readable && !readableEnded) { - if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); - return callback.call(stream, err); - } - - if (writable && !writableEnded) { - if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); - return callback.call(stream, err); - } - }; - - var onrequest = function onrequest() { - stream.req.on('finish', onfinish); - }; - - if (isRequest(stream)) { - stream.on('complete', onfinish); - stream.on('abort', onclose); - if (stream.req) onrequest();else stream.on('request', onrequest); - } else if (writable && !stream._writableState) { - // legacy streams - stream.on('end', onlegacyfinish); - stream.on('close', onlegacyfinish); - } - - stream.on('end', onend); - stream.on('finish', onfinish); - if (opts.error !== false) stream.on('error', onerror); - stream.on('close', onclose); - return function () { - stream.removeListener('complete', onfinish); - stream.removeListener('abort', onclose); - stream.removeListener('request', onrequest); - if (stream.req) stream.req.removeListener('finish', onfinish); - stream.removeListener('end', onlegacyfinish); - stream.removeListener('close', onlegacyfinish); - stream.removeListener('finish', onfinish); - stream.removeListener('end', onend); - stream.removeListener('error', onerror); - stream.removeListener('close', onclose); - }; -} - -module.exports = eos; - -/***/ }), - -/***/ 3799: -/***/ ((module) => { - -module.exports = function () { - throw new Error('Readable.from is not available in the browser'); -}; - -/***/ }), - -/***/ 8751: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Ported from https://github.com/mafintosh/pump with -// permission from the author, Mathias Buus (@mafintosh). - - -var eos; - -function once(callback) { - var called = false; - return function () { - if (called) return; - called = true; - callback.apply(void 0, arguments); - }; -} - -var _require$codes = (__webpack_require__(5613)/* .codes */ .q), - ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS, - ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED; - -function noop(err) { - // Rethrow the error if it exists to avoid swallowing it - if (err) throw err; -} - -function isRequest(stream) { - return stream.setHeader && typeof stream.abort === 'function'; -} - -function destroyer(stream, reading, writing, callback) { - callback = once(callback); - var closed = false; - stream.on('close', function () { - closed = true; - }); - if (eos === undefined) eos = __webpack_require__(8820); - eos(stream, { - readable: reading, - writable: writing - }, function (err) { - if (err) return callback(err); - closed = true; - callback(); - }); - var destroyed = false; - return function (err) { - if (closed) return; - if (destroyed) return; - destroyed = true; // request.destroy just do .end - .abort is what we want - - if (isRequest(stream)) return stream.abort(); - if (typeof stream.destroy === 'function') return stream.destroy(); - callback(err || new ERR_STREAM_DESTROYED('pipe')); - }; -} - -function call(fn) { - fn(); -} - -function pipe(from, to) { - return from.pipe(to); -} - -function popCallback(streams) { - if (!streams.length) return noop; - if (typeof streams[streams.length - 1] !== 'function') return noop; - return streams.pop(); -} - -function pipeline() { - for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) { - streams[_key] = arguments[_key]; - } - - var callback = popCallback(streams); - if (Array.isArray(streams[0])) streams = streams[0]; - - if (streams.length < 2) { - throw new ERR_MISSING_ARGS('streams'); - } - - var error; - var destroys = streams.map(function (stream, i) { - var reading = i < streams.length - 1; - var writing = i > 0; - return destroyer(stream, reading, writing, function (err) { - if (!error) error = err; - if (err) destroys.forEach(call); - if (reading) return; - destroys.forEach(call); - callback(error); - }); - }); - return streams.reduce(pipe); -} - -module.exports = pipeline; - -/***/ }), - -/***/ 6876: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var ERR_INVALID_OPT_VALUE = (__webpack_require__(5613)/* .codes.ERR_INVALID_OPT_VALUE */ .q.ERR_INVALID_OPT_VALUE); - -function highWaterMarkFrom(options, isDuplex, duplexKey) { - return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null; -} - -function getHighWaterMark(state, options, duplexKey, isDuplex) { - var hwm = highWaterMarkFrom(options, isDuplex, duplexKey); - - if (hwm != null) { - if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) { - var name = isDuplex ? duplexKey : 'highWaterMark'; - throw new ERR_INVALID_OPT_VALUE(name, hwm); - } - - return Math.floor(hwm); - } // Default value - - - return state.objectMode ? 16 : 16 * 1024; -} - -module.exports = { - getHighWaterMark: getHighWaterMark -}; - -/***/ }), - -/***/ 6054: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -module.exports = __webpack_require__(9620).EventEmitter; - -/***/ }), - -/***/ 8237: -/***/ ((module, exports, __webpack_require__) => { - -exports = module.exports = __webpack_require__(6751); -exports.Stream = exports; -exports.Readable = exports; -exports.Writable = __webpack_require__(679); -exports.Duplex = __webpack_require__(4611); -exports.Transform = __webpack_require__(4951); -exports.PassThrough = __webpack_require__(3684); -exports.finished = __webpack_require__(8820); -exports.pipeline = __webpack_require__(8751); - -/***/ }), - -/***/ 8100: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var Buffer = (__webpack_require__(365).Buffer); - -var inherits = __webpack_require__(376); - -var HashBase = __webpack_require__(5125); - -var ARRAY16 = new Array(16); -var zl = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]; -var zr = [5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]; -var sl = [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]; -var sr = [8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]; -var hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]; -var hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]; - -function RIPEMD160() { - HashBase.call(this, 64); // state - - this._a = 0x67452301; - this._b = 0xefcdab89; - this._c = 0x98badcfe; - this._d = 0x10325476; - this._e = 0xc3d2e1f0; -} - -inherits(RIPEMD160, HashBase); - -RIPEMD160.prototype._update = function () { - var words = ARRAY16; - - for (var j = 0; j < 16; ++j) { - words[j] = this._block.readInt32LE(j * 4); - } - - var al = this._a | 0; - var bl = this._b | 0; - var cl = this._c | 0; - var dl = this._d | 0; - var el = this._e | 0; - var ar = this._a | 0; - var br = this._b | 0; - var cr = this._c | 0; - var dr = this._d | 0; - var er = this._e | 0; // computation - - for (var i = 0; i < 80; i += 1) { - var tl; - var tr; - - if (i < 16) { - tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i]); - tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i]); - } else if (i < 32) { - tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i]); - tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i]); - } else if (i < 48) { - tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i]); - tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i]); - } else if (i < 64) { - tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i]); - tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i]); - } else { - // if (i<80) { - tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i]); - tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i]); - } - - al = el; - el = dl; - dl = rotl(cl, 10); - cl = bl; - bl = tl; - ar = er; - er = dr; - dr = rotl(cr, 10); - cr = br; - br = tr; - } // update state - - - var t = this._b + cl + dr | 0; - this._b = this._c + dl + er | 0; - this._c = this._d + el + ar | 0; - this._d = this._e + al + br | 0; - this._e = this._a + bl + cr | 0; - this._a = t; -}; - -RIPEMD160.prototype._digest = function () { - // create padding and handle blocks - this._block[this._blockOffset++] = 0x80; - - if (this._blockOffset > 56) { - this._block.fill(0, this._blockOffset, 64); - - this._update(); - - this._blockOffset = 0; - } - - this._block.fill(0, this._blockOffset, 56); - - this._block.writeUInt32LE(this._length[0], 56); - - this._block.writeUInt32LE(this._length[1], 60); - - this._update(); // produce result - - - var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20); - buffer.writeInt32LE(this._a, 0); - buffer.writeInt32LE(this._b, 4); - buffer.writeInt32LE(this._c, 8); - buffer.writeInt32LE(this._d, 12); - buffer.writeInt32LE(this._e, 16); - return buffer; -}; - -function rotl(x, n) { - return x << n | x >>> 32 - n; -} - -function fn1(a, b, c, d, e, m, k, s) { - return rotl(a + (b ^ c ^ d) + m + k | 0, s) + e | 0; -} - -function fn2(a, b, c, d, e, m, k, s) { - return rotl(a + (b & c | ~b & d) + m + k | 0, s) + e | 0; -} - -function fn3(a, b, c, d, e, m, k, s) { - return rotl(a + ((b | ~c) ^ d) + m + k | 0, s) + e | 0; -} - -function fn4(a, b, c, d, e, m, k, s) { - return rotl(a + (b & d | c & ~d) + m + k | 0, s) + e | 0; -} - -function fn5(a, b, c, d, e, m, k, s) { - return rotl(a + (b ^ (c | ~d)) + m + k | 0, s) + e | 0; -} - -module.exports = RIPEMD160; - -/***/ }), - -/***/ 9047: -/***/ ((module, exports, __webpack_require__) => { - -/* eslint-disable node/no-deprecated-api */ -var buffer = __webpack_require__(365); - -var Buffer = buffer.Buffer; // alternative to using Object.keys for old browsers - -function copyProps(src, dst) { - for (var key in src) { - dst[key] = src[key]; - } -} - -if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { - module.exports = buffer; -} else { - // Copy properties from require('buffer') - copyProps(buffer, exports); - exports.Buffer = SafeBuffer; -} - -function SafeBuffer(arg, encodingOrOffset, length) { - return Buffer(arg, encodingOrOffset, length); -} // Copy static methods from Buffer - - -copyProps(Buffer, SafeBuffer); - -SafeBuffer.from = function (arg, encodingOrOffset, length) { - if (typeof arg === 'number') { - throw new TypeError('Argument must not be a number'); - } - - return Buffer(arg, encodingOrOffset, length); -}; - -SafeBuffer.alloc = function (size, fill, encoding) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number'); - } - - var buf = Buffer(size); - - if (fill !== undefined) { - if (typeof encoding === 'string') { - buf.fill(fill, encoding); - } else { - buf.fill(fill); - } - } else { - buf.fill(0); - } - - return buf; -}; - -SafeBuffer.allocUnsafe = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number'); - } - - return Buffer(size); -}; - -SafeBuffer.allocUnsafeSlow = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number'); - } - - return buffer.SlowBuffer(size); -}; - -/***/ }), - -/***/ 8723: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/* eslint-disable node/no-deprecated-api */ - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var buffer = __webpack_require__(365); - -var Buffer = buffer.Buffer; -var safer = {}; -var key; - -for (key in buffer) { - if (!buffer.hasOwnProperty(key)) continue; - if (key === 'SlowBuffer' || key === 'Buffer') continue; - safer[key] = buffer[key]; -} - -var Safer = safer.Buffer = {}; - -for (key in Buffer) { - if (!Buffer.hasOwnProperty(key)) continue; - if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue; - Safer[key] = Buffer[key]; -} - -safer.Buffer.prototype = Buffer.prototype; - -if (!Safer.from || Safer.from === Uint8Array.from) { - Safer.from = function (value, encodingOrOffset, length) { - if (typeof value === 'number') { - throw new TypeError('The "value" argument must not be of type number. Received type ' + _typeof(value)); - } - - if (value && typeof value.length === 'undefined') { - throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + _typeof(value)); - } - - return Buffer(value, encodingOrOffset, length); - }; -} - -if (!Safer.alloc) { - Safer.alloc = function (size, fill, encoding) { - if (typeof size !== 'number') { - throw new TypeError('The "size" argument must be of type number. Received type ' + _typeof(size)); - } - - if (size < 0 || size >= 2 * (1 << 30)) { - throw new RangeError('The value "' + size + '" is invalid for option "size"'); - } - - var buf = Buffer(size); - - if (!fill || fill.length === 0) { - buf.fill(0); - } else if (typeof encoding === 'string') { - buf.fill(fill, encoding); - } else { - buf.fill(fill); - } - - return buf; - }; -} - -if (!safer.kStringMaxLength) { - try { - safer.kStringMaxLength = ({env:{}}).binding('buffer').kStringMaxLength; - } catch (e) {// we can't determine kStringMaxLength in environments where process.binding - // is unsupported, so let's not set it - } -} - -if (!safer.constants) { - safer.constants = { - MAX_LENGTH: safer.kMaxLength - }; - - if (safer.kStringMaxLength) { - safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength; - } -} - -module.exports = safer; - -/***/ }), - -/***/ 2159: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var Buffer = (__webpack_require__(9047).Buffer); // prototype class for hash functions - - -function Hash(blockSize, finalSize) { - this._block = Buffer.alloc(blockSize); - this._finalSize = finalSize; - this._blockSize = blockSize; - this._len = 0; -} - -Hash.prototype.update = function (data, enc) { - if (typeof data === 'string') { - enc = enc || 'utf8'; - data = Buffer.from(data, enc); - } - - var block = this._block; - var blockSize = this._blockSize; - var length = data.length; - var accum = this._len; - - for (var offset = 0; offset < length;) { - var assigned = accum % blockSize; - var remainder = Math.min(length - offset, blockSize - assigned); - - for (var i = 0; i < remainder; i++) { - block[assigned + i] = data[offset + i]; - } - - accum += remainder; - offset += remainder; - - if (accum % blockSize === 0) { - this._update(block); - } - } - - this._len += length; - return this; -}; - -Hash.prototype.digest = function (enc) { - var rem = this._len % this._blockSize; - this._block[rem] = 0x80; // zero (rem + 1) trailing bits, where (rem + 1) is the smallest - // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize - - this._block.fill(0, rem + 1); - - if (rem >= this._finalSize) { - this._update(this._block); - - this._block.fill(0); - } - - var bits = this._len * 8; // uint32 - - if (bits <= 0xffffffff) { - this._block.writeUInt32BE(bits, this._blockSize - 4); // uint64 - - } else { - var lowBits = (bits & 0xffffffff) >>> 0; - var highBits = (bits - lowBits) / 0x100000000; - - this._block.writeUInt32BE(highBits, this._blockSize - 8); - - this._block.writeUInt32BE(lowBits, this._blockSize - 4); - } - - this._update(this._block); - - var hash = this._hash(); - - return enc ? hash.toString(enc) : hash; -}; - -Hash.prototype._update = function () { - throw new Error('_update must be implemented by subclass'); -}; - -module.exports = Hash; - -/***/ }), - -/***/ 1806: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var exports = module.exports = function SHA(algorithm) { - algorithm = algorithm.toLowerCase(); - var Algorithm = exports[algorithm]; - if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)'); - return new Algorithm(); -}; - -exports.sha = __webpack_require__(9675); -exports.sha1 = __webpack_require__(2950); -exports.sha224 = __webpack_require__(8881); -exports.sha256 = __webpack_require__(9642); -exports.sha384 = __webpack_require__(8220); -exports.sha512 = __webpack_require__(6859); - -/***/ }), - -/***/ 9675: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/* - * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined - * in FIPS PUB 180-1 - * This source code is derived from sha1.js of the same repository. - * The difference between SHA-0 and SHA-1 is just a bitwise rotate left - * operation was added. - */ -var inherits = __webpack_require__(376); - -var Hash = __webpack_require__(2159); - -var Buffer = (__webpack_require__(9047).Buffer); - -var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0]; -var W = new Array(80); - -function Sha() { - this.init(); - this._w = W; - Hash.call(this, 64, 56); -} - -inherits(Sha, Hash); - -Sha.prototype.init = function () { - this._a = 0x67452301; - this._b = 0xefcdab89; - this._c = 0x98badcfe; - this._d = 0x10325476; - this._e = 0xc3d2e1f0; - return this; -}; - -function rotl5(num) { - return num << 5 | num >>> 27; -} - -function rotl30(num) { - return num << 30 | num >>> 2; -} - -function ft(s, b, c, d) { - if (s === 0) return b & c | ~b & d; - if (s === 2) return b & c | b & d | c & d; - return b ^ c ^ d; -} - -Sha.prototype._update = function (M) { - var W = this._w; - var a = this._a | 0; - var b = this._b | 0; - var c = this._c | 0; - var d = this._d | 0; - var e = this._e | 0; - - for (var i = 0; i < 16; ++i) { - W[i] = M.readInt32BE(i * 4); - } - - for (; i < 80; ++i) { - W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]; - } - - for (var j = 0; j < 80; ++j) { - var s = ~~(j / 20); - var t = rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s] | 0; - e = d; - d = c; - c = rotl30(b); - b = a; - a = t; - } - - this._a = a + this._a | 0; - this._b = b + this._b | 0; - this._c = c + this._c | 0; - this._d = d + this._d | 0; - this._e = e + this._e | 0; -}; - -Sha.prototype._hash = function () { - var H = Buffer.allocUnsafe(20); - H.writeInt32BE(this._a | 0, 0); - H.writeInt32BE(this._b | 0, 4); - H.writeInt32BE(this._c | 0, 8); - H.writeInt32BE(this._d | 0, 12); - H.writeInt32BE(this._e | 0, 16); - return H; -}; - -module.exports = Sha; - -/***/ }), - -/***/ 2950: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/* - * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined - * in FIPS PUB 180-1 - * Version 2.1a Copyright Paul Johnston 2000 - 2002. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * Distributed under the BSD License - * See http://pajhome.org.uk/crypt/md5 for details. - */ -var inherits = __webpack_require__(376); - -var Hash = __webpack_require__(2159); - -var Buffer = (__webpack_require__(9047).Buffer); - -var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0]; -var W = new Array(80); - -function Sha1() { - this.init(); - this._w = W; - Hash.call(this, 64, 56); -} - -inherits(Sha1, Hash); - -Sha1.prototype.init = function () { - this._a = 0x67452301; - this._b = 0xefcdab89; - this._c = 0x98badcfe; - this._d = 0x10325476; - this._e = 0xc3d2e1f0; - return this; -}; - -function rotl1(num) { - return num << 1 | num >>> 31; -} - -function rotl5(num) { - return num << 5 | num >>> 27; -} - -function rotl30(num) { - return num << 30 | num >>> 2; -} - -function ft(s, b, c, d) { - if (s === 0) return b & c | ~b & d; - if (s === 2) return b & c | b & d | c & d; - return b ^ c ^ d; -} - -Sha1.prototype._update = function (M) { - var W = this._w; - var a = this._a | 0; - var b = this._b | 0; - var c = this._c | 0; - var d = this._d | 0; - var e = this._e | 0; - - for (var i = 0; i < 16; ++i) { - W[i] = M.readInt32BE(i * 4); - } - - for (; i < 80; ++i) { - W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]); - } - - for (var j = 0; j < 80; ++j) { - var s = ~~(j / 20); - var t = rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s] | 0; - e = d; - d = c; - c = rotl30(b); - b = a; - a = t; - } - - this._a = a + this._a | 0; - this._b = b + this._b | 0; - this._c = c + this._c | 0; - this._d = d + this._d | 0; - this._e = e + this._e | 0; -}; - -Sha1.prototype._hash = function () { - var H = Buffer.allocUnsafe(20); - H.writeInt32BE(this._a | 0, 0); - H.writeInt32BE(this._b | 0, 4); - H.writeInt32BE(this._c | 0, 8); - H.writeInt32BE(this._d | 0, 12); - H.writeInt32BE(this._e | 0, 16); - return H; -}; - -module.exports = Sha1; - -/***/ }), - -/***/ 8881: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/** - * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined - * in FIPS 180-2 - * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * - */ -var inherits = __webpack_require__(376); - -var Sha256 = __webpack_require__(9642); - -var Hash = __webpack_require__(2159); - -var Buffer = (__webpack_require__(9047).Buffer); - -var W = new Array(64); - -function Sha224() { - this.init(); - this._w = W; // new Array(64) - - Hash.call(this, 64, 56); -} - -inherits(Sha224, Sha256); - -Sha224.prototype.init = function () { - this._a = 0xc1059ed8; - this._b = 0x367cd507; - this._c = 0x3070dd17; - this._d = 0xf70e5939; - this._e = 0xffc00b31; - this._f = 0x68581511; - this._g = 0x64f98fa7; - this._h = 0xbefa4fa4; - return this; -}; - -Sha224.prototype._hash = function () { - var H = Buffer.allocUnsafe(28); - H.writeInt32BE(this._a, 0); - H.writeInt32BE(this._b, 4); - H.writeInt32BE(this._c, 8); - H.writeInt32BE(this._d, 12); - H.writeInt32BE(this._e, 16); - H.writeInt32BE(this._f, 20); - H.writeInt32BE(this._g, 24); - return H; -}; - -module.exports = Sha224; - -/***/ }), - -/***/ 9642: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/** - * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined - * in FIPS 180-2 - * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * - */ -var inherits = __webpack_require__(376); - -var Hash = __webpack_require__(2159); - -var Buffer = (__webpack_require__(9047).Buffer); - -var K = [0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC, 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967, 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3, 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2]; -var W = new Array(64); - -function Sha256() { - this.init(); - this._w = W; // new Array(64) - - Hash.call(this, 64, 56); -} - -inherits(Sha256, Hash); - -Sha256.prototype.init = function () { - this._a = 0x6a09e667; - this._b = 0xbb67ae85; - this._c = 0x3c6ef372; - this._d = 0xa54ff53a; - this._e = 0x510e527f; - this._f = 0x9b05688c; - this._g = 0x1f83d9ab; - this._h = 0x5be0cd19; - return this; -}; - -function ch(x, y, z) { - return z ^ x & (y ^ z); -} - -function maj(x, y, z) { - return x & y | z & (x | y); -} - -function sigma0(x) { - return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10); -} - -function sigma1(x) { - return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7); -} - -function gamma0(x) { - return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ x >>> 3; -} - -function gamma1(x) { - return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ x >>> 10; -} - -Sha256.prototype._update = function (M) { - var W = this._w; - var a = this._a | 0; - var b = this._b | 0; - var c = this._c | 0; - var d = this._d | 0; - var e = this._e | 0; - var f = this._f | 0; - var g = this._g | 0; - var h = this._h | 0; - - for (var i = 0; i < 16; ++i) { - W[i] = M.readInt32BE(i * 4); - } - - for (; i < 64; ++i) { - W[i] = gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16] | 0; - } - - for (var j = 0; j < 64; ++j) { - var T1 = h + sigma1(e) + ch(e, f, g) + K[j] + W[j] | 0; - var T2 = sigma0(a) + maj(a, b, c) | 0; - h = g; - g = f; - f = e; - e = d + T1 | 0; - d = c; - c = b; - b = a; - a = T1 + T2 | 0; - } - - this._a = a + this._a | 0; - this._b = b + this._b | 0; - this._c = c + this._c | 0; - this._d = d + this._d | 0; - this._e = e + this._e | 0; - this._f = f + this._f | 0; - this._g = g + this._g | 0; - this._h = h + this._h | 0; -}; - -Sha256.prototype._hash = function () { - var H = Buffer.allocUnsafe(32); - H.writeInt32BE(this._a, 0); - H.writeInt32BE(this._b, 4); - H.writeInt32BE(this._c, 8); - H.writeInt32BE(this._d, 12); - H.writeInt32BE(this._e, 16); - H.writeInt32BE(this._f, 20); - H.writeInt32BE(this._g, 24); - H.writeInt32BE(this._h, 28); - return H; -}; - -module.exports = Sha256; - -/***/ }), - -/***/ 8220: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var inherits = __webpack_require__(376); - -var SHA512 = __webpack_require__(6859); - -var Hash = __webpack_require__(2159); - -var Buffer = (__webpack_require__(9047).Buffer); - -var W = new Array(160); - -function Sha384() { - this.init(); - this._w = W; - Hash.call(this, 128, 112); -} - -inherits(Sha384, SHA512); - -Sha384.prototype.init = function () { - this._ah = 0xcbbb9d5d; - this._bh = 0x629a292a; - this._ch = 0x9159015a; - this._dh = 0x152fecd8; - this._eh = 0x67332667; - this._fh = 0x8eb44a87; - this._gh = 0xdb0c2e0d; - this._hh = 0x47b5481d; - this._al = 0xc1059ed8; - this._bl = 0x367cd507; - this._cl = 0x3070dd17; - this._dl = 0xf70e5939; - this._el = 0xffc00b31; - this._fl = 0x68581511; - this._gl = 0x64f98fa7; - this._hl = 0xbefa4fa4; - return this; -}; - -Sha384.prototype._hash = function () { - var H = Buffer.allocUnsafe(48); - - function writeInt64BE(h, l, offset) { - H.writeInt32BE(h, offset); - H.writeInt32BE(l, offset + 4); - } - - writeInt64BE(this._ah, this._al, 0); - writeInt64BE(this._bh, this._bl, 8); - writeInt64BE(this._ch, this._cl, 16); - writeInt64BE(this._dh, this._dl, 24); - writeInt64BE(this._eh, this._el, 32); - writeInt64BE(this._fh, this._fl, 40); - return H; -}; - -module.exports = Sha384; - -/***/ }), - -/***/ 6859: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var inherits = __webpack_require__(376); - -var Hash = __webpack_require__(2159); - -var Buffer = (__webpack_require__(9047).Buffer); - -var K = [0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817]; -var W = new Array(160); - -function Sha512() { - this.init(); - this._w = W; - Hash.call(this, 128, 112); -} - -inherits(Sha512, Hash); - -Sha512.prototype.init = function () { - this._ah = 0x6a09e667; - this._bh = 0xbb67ae85; - this._ch = 0x3c6ef372; - this._dh = 0xa54ff53a; - this._eh = 0x510e527f; - this._fh = 0x9b05688c; - this._gh = 0x1f83d9ab; - this._hh = 0x5be0cd19; - this._al = 0xf3bcc908; - this._bl = 0x84caa73b; - this._cl = 0xfe94f82b; - this._dl = 0x5f1d36f1; - this._el = 0xade682d1; - this._fl = 0x2b3e6c1f; - this._gl = 0xfb41bd6b; - this._hl = 0x137e2179; - return this; -}; - -function Ch(x, y, z) { - return z ^ x & (y ^ z); -} - -function maj(x, y, z) { - return x & y | z & (x | y); -} - -function sigma0(x, xl) { - return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25); -} - -function sigma1(x, xl) { - return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23); -} - -function Gamma0(x, xl) { - return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ x >>> 7; -} - -function Gamma0l(x, xl) { - return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25); -} - -function Gamma1(x, xl) { - return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ x >>> 6; -} - -function Gamma1l(x, xl) { - return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26); -} - -function getCarry(a, b) { - return a >>> 0 < b >>> 0 ? 1 : 0; -} - -Sha512.prototype._update = function (M) { - var W = this._w; - var ah = this._ah | 0; - var bh = this._bh | 0; - var ch = this._ch | 0; - var dh = this._dh | 0; - var eh = this._eh | 0; - var fh = this._fh | 0; - var gh = this._gh | 0; - var hh = this._hh | 0; - var al = this._al | 0; - var bl = this._bl | 0; - var cl = this._cl | 0; - var dl = this._dl | 0; - var el = this._el | 0; - var fl = this._fl | 0; - var gl = this._gl | 0; - var hl = this._hl | 0; - - for (var i = 0; i < 32; i += 2) { - W[i] = M.readInt32BE(i * 4); - W[i + 1] = M.readInt32BE(i * 4 + 4); - } - - for (; i < 160; i += 2) { - var xh = W[i - 15 * 2]; - var xl = W[i - 15 * 2 + 1]; - var gamma0 = Gamma0(xh, xl); - var gamma0l = Gamma0l(xl, xh); - xh = W[i - 2 * 2]; - xl = W[i - 2 * 2 + 1]; - var gamma1 = Gamma1(xh, xl); - var gamma1l = Gamma1l(xl, xh); // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16] - - var Wi7h = W[i - 7 * 2]; - var Wi7l = W[i - 7 * 2 + 1]; - var Wi16h = W[i - 16 * 2]; - var Wi16l = W[i - 16 * 2 + 1]; - var Wil = gamma0l + Wi7l | 0; - var Wih = gamma0 + Wi7h + getCarry(Wil, gamma0l) | 0; - Wil = Wil + gamma1l | 0; - Wih = Wih + gamma1 + getCarry(Wil, gamma1l) | 0; - Wil = Wil + Wi16l | 0; - Wih = Wih + Wi16h + getCarry(Wil, Wi16l) | 0; - W[i] = Wih; - W[i + 1] = Wil; - } - - for (var j = 0; j < 160; j += 2) { - Wih = W[j]; - Wil = W[j + 1]; - var majh = maj(ah, bh, ch); - var majl = maj(al, bl, cl); - var sigma0h = sigma0(ah, al); - var sigma0l = sigma0(al, ah); - var sigma1h = sigma1(eh, el); - var sigma1l = sigma1(el, eh); // t1 = h + sigma1 + ch + K[j] + W[j] - - var Kih = K[j]; - var Kil = K[j + 1]; - var chh = Ch(eh, fh, gh); - var chl = Ch(el, fl, gl); - var t1l = hl + sigma1l | 0; - var t1h = hh + sigma1h + getCarry(t1l, hl) | 0; - t1l = t1l + chl | 0; - t1h = t1h + chh + getCarry(t1l, chl) | 0; - t1l = t1l + Kil | 0; - t1h = t1h + Kih + getCarry(t1l, Kil) | 0; - t1l = t1l + Wil | 0; - t1h = t1h + Wih + getCarry(t1l, Wil) | 0; // t2 = sigma0 + maj - - var t2l = sigma0l + majl | 0; - var t2h = sigma0h + majh + getCarry(t2l, sigma0l) | 0; - hh = gh; - hl = gl; - gh = fh; - gl = fl; - fh = eh; - fl = el; - el = dl + t1l | 0; - eh = dh + t1h + getCarry(el, dl) | 0; - dh = ch; - dl = cl; - ch = bh; - cl = bl; - bh = ah; - bl = al; - al = t1l + t2l | 0; - ah = t1h + t2h + getCarry(al, t1l) | 0; - } - - this._al = this._al + al | 0; - this._bl = this._bl + bl | 0; - this._cl = this._cl + cl | 0; - this._dl = this._dl + dl | 0; - this._el = this._el + el | 0; - this._fl = this._fl + fl | 0; - this._gl = this._gl + gl | 0; - this._hl = this._hl + hl | 0; - this._ah = this._ah + ah + getCarry(this._al, al) | 0; - this._bh = this._bh + bh + getCarry(this._bl, bl) | 0; - this._ch = this._ch + ch + getCarry(this._cl, cl) | 0; - this._dh = this._dh + dh + getCarry(this._dl, dl) | 0; - this._eh = this._eh + eh + getCarry(this._el, el) | 0; - this._fh = this._fh + fh + getCarry(this._fl, fl) | 0; - this._gh = this._gh + gh + getCarry(this._gl, gl) | 0; - this._hh = this._hh + hh + getCarry(this._hl, hl) | 0; -}; - -Sha512.prototype._hash = function () { - var H = Buffer.allocUnsafe(64); - - function writeInt64BE(h, l, offset) { - H.writeInt32BE(h, offset); - H.writeInt32BE(l, offset + 4); - } - - writeInt64BE(this._ah, this._al, 0); - writeInt64BE(this._bh, this._bl, 8); - writeInt64BE(this._ch, this._cl, 16); - writeInt64BE(this._dh, this._dl, 24); - writeInt64BE(this._eh, this._el, 32); - writeInt64BE(this._fh, this._fl, 40); - writeInt64BE(this._gh, this._gl, 48); - writeInt64BE(this._hh, this._hl, 56); - return H; -}; - -module.exports = Sha512; - -/***/ }), - -/***/ 4723: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. -module.exports = Stream; - -var EE = (__webpack_require__(9620).EventEmitter); - -var inherits = __webpack_require__(376); - -inherits(Stream, EE); -Stream.Readable = __webpack_require__(6751); -Stream.Writable = __webpack_require__(679); -Stream.Duplex = __webpack_require__(4611); -Stream.Transform = __webpack_require__(4951); -Stream.PassThrough = __webpack_require__(3684); -Stream.finished = __webpack_require__(8820); -Stream.pipeline = __webpack_require__(8751); // Backwards-compat with node 0.4.x - -Stream.Stream = Stream; // old-style streams. Note that the pipe method (the only relevant -// part of this class) is overridden in the Readable class. - -function Stream() { - EE.call(this); -} - -Stream.prototype.pipe = function (dest, options) { - var source = this; - - function ondata(chunk) { - if (dest.writable) { - if (false === dest.write(chunk) && source.pause) { - source.pause(); - } - } - } - - source.on('data', ondata); - - function ondrain() { - if (source.readable && source.resume) { - source.resume(); - } - } - - dest.on('drain', ondrain); // If the 'end' option is not supplied, dest.end() will be called when - // source gets the 'end' or 'close' events. Only dest.end() once. - - if (!dest._isStdio && (!options || options.end !== false)) { - source.on('end', onend); - source.on('close', onclose); - } - - var didOnEnd = false; - - function onend() { - if (didOnEnd) return; - didOnEnd = true; - dest.end(); - } - - function onclose() { - if (didOnEnd) return; - didOnEnd = true; - if (typeof dest.destroy === 'function') dest.destroy(); - } // don't leave dangling pipes when there are errors. - - - function onerror(er) { - cleanup(); - - if (EE.listenerCount(this, 'error') === 0) { - throw er; // Unhandled stream error in pipe. - } - } - - source.on('error', onerror); - dest.on('error', onerror); // remove all the event listeners that were added. - - function cleanup() { - source.removeListener('data', ondata); - dest.removeListener('drain', ondrain); - source.removeListener('end', onend); - source.removeListener('close', onclose); - source.removeListener('error', onerror); - dest.removeListener('error', onerror); - source.removeListener('end', cleanup); - source.removeListener('close', cleanup); - dest.removeListener('close', cleanup); - } - - source.on('end', cleanup); - source.on('close', cleanup); - dest.on('close', cleanup); - dest.emit('pipe', source); // Allow for unix-like usage: A.pipe(B).pipe(C) - - return dest; -}; - -/***/ }), - -/***/ 113: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -/**/ - -var Buffer = (__webpack_require__(4368).Buffer); -/**/ - - -var isEncoding = Buffer.isEncoding || function (encoding) { - encoding = '' + encoding; - - switch (encoding && encoding.toLowerCase()) { - case 'hex': - case 'utf8': - case 'utf-8': - case 'ascii': - case 'binary': - case 'base64': - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - case 'raw': - return true; - - default: - return false; - } -}; - -function _normalizeEncoding(enc) { - if (!enc) return 'utf8'; - var retried; - - while (true) { - switch (enc) { - case 'utf8': - case 'utf-8': - return 'utf8'; - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return 'utf16le'; - - case 'latin1': - case 'binary': - return 'latin1'; - - case 'base64': - case 'ascii': - case 'hex': - return enc; - - default: - if (retried) return; // undefined - - enc = ('' + enc).toLowerCase(); - retried = true; - } - } -} - -; // Do not cache `Buffer.isEncoding` when checking encoding names as some -// modules monkey-patch it to support additional encodings - -function normalizeEncoding(enc) { - var nenc = _normalizeEncoding(enc); - - if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); - return nenc || enc; -} // StringDecoder provides an interface for efficiently splitting a series of -// buffers into a series of JS strings without breaking apart multi-byte -// characters. - - -exports.s = StringDecoder; - -function StringDecoder(encoding) { - this.encoding = normalizeEncoding(encoding); - var nb; - - switch (this.encoding) { - case 'utf16le': - this.text = utf16Text; - this.end = utf16End; - nb = 4; - break; - - case 'utf8': - this.fillLast = utf8FillLast; - nb = 4; - break; - - case 'base64': - this.text = base64Text; - this.end = base64End; - nb = 3; - break; - - default: - this.write = simpleWrite; - this.end = simpleEnd; - return; - } - - this.lastNeed = 0; - this.lastTotal = 0; - this.lastChar = Buffer.allocUnsafe(nb); -} - -StringDecoder.prototype.write = function (buf) { - if (buf.length === 0) return ''; - var r; - var i; - - if (this.lastNeed) { - r = this.fillLast(buf); - if (r === undefined) return ''; - i = this.lastNeed; - this.lastNeed = 0; - } else { - i = 0; - } - - if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); - return r || ''; -}; - -StringDecoder.prototype.end = utf8End; // Returns only complete characters in a Buffer - -StringDecoder.prototype.text = utf8Text; // Attempts to complete a partial non-UTF-8 character using bytes from a Buffer - -StringDecoder.prototype.fillLast = function (buf) { - if (this.lastNeed <= buf.length) { - buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); - return this.lastChar.toString(this.encoding, 0, this.lastTotal); - } - - buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); - this.lastNeed -= buf.length; -}; // Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a -// continuation byte. If an invalid byte is detected, -2 is returned. - - -function utf8CheckByte(_byte) { - if (_byte <= 0x7F) return 0;else if (_byte >> 5 === 0x06) return 2;else if (_byte >> 4 === 0x0E) return 3;else if (_byte >> 3 === 0x1E) return 4; - return _byte >> 6 === 0x02 ? -1 : -2; -} // Checks at most 3 bytes at the end of a Buffer in order to detect an -// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) -// needed to complete the UTF-8 character (if applicable) are returned. - - -function utf8CheckIncomplete(self, buf, i) { - var j = buf.length - 1; - if (j < i) return 0; - var nb = utf8CheckByte(buf[j]); - - if (nb >= 0) { - if (nb > 0) self.lastNeed = nb - 1; - return nb; - } - - if (--j < i || nb === -2) return 0; - nb = utf8CheckByte(buf[j]); - - if (nb >= 0) { - if (nb > 0) self.lastNeed = nb - 2; - return nb; - } - - if (--j < i || nb === -2) return 0; - nb = utf8CheckByte(buf[j]); - - if (nb >= 0) { - if (nb > 0) { - if (nb === 2) nb = 0;else self.lastNeed = nb - 3; - } - - return nb; - } - - return 0; -} // Validates as many continuation bytes for a multi-byte UTF-8 character as -// needed or are available. If we see a non-continuation byte where we expect -// one, we "replace" the validated continuation bytes we've seen so far with -// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding -// behavior. The continuation byte check is included three times in the case -// where all of the continuation bytes for a character exist in the same buffer. -// It is also done this way as a slight performance increase instead of using a -// loop. - - -function utf8CheckExtraBytes(self, buf, p) { - if ((buf[0] & 0xC0) !== 0x80) { - self.lastNeed = 0; - return "\uFFFD"; - } - - if (self.lastNeed > 1 && buf.length > 1) { - if ((buf[1] & 0xC0) !== 0x80) { - self.lastNeed = 1; - return "\uFFFD"; - } - - if (self.lastNeed > 2 && buf.length > 2) { - if ((buf[2] & 0xC0) !== 0x80) { - self.lastNeed = 2; - return "\uFFFD"; - } - } - } -} // Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. - - -function utf8FillLast(buf) { - var p = this.lastTotal - this.lastNeed; - var r = utf8CheckExtraBytes(this, buf, p); - if (r !== undefined) return r; - - if (this.lastNeed <= buf.length) { - buf.copy(this.lastChar, p, 0, this.lastNeed); - return this.lastChar.toString(this.encoding, 0, this.lastTotal); - } - - buf.copy(this.lastChar, p, 0, buf.length); - this.lastNeed -= buf.length; -} // Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a -// partial character, the character's bytes are buffered until the required -// number of bytes are available. - - -function utf8Text(buf, i) { - var total = utf8CheckIncomplete(this, buf, i); - if (!this.lastNeed) return buf.toString('utf8', i); - this.lastTotal = total; - var end = buf.length - (total - this.lastNeed); - buf.copy(this.lastChar, 0, end); - return buf.toString('utf8', i, end); -} // For UTF-8, a replacement character is added when ending on a partial -// character. - - -function utf8End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) return r + "\uFFFD"; - return r; -} // UTF-16LE typically needs two bytes per character, but even if we have an even -// number of bytes available, we need to check if we end on a leading/high -// surrogate. In that case, we need to wait for the next two bytes in order to -// decode the last character properly. - - -function utf16Text(buf, i) { - if ((buf.length - i) % 2 === 0) { - var r = buf.toString('utf16le', i); - - if (r) { - var c = r.charCodeAt(r.length - 1); - - if (c >= 0xD800 && c <= 0xDBFF) { - this.lastNeed = 2; - this.lastTotal = 4; - this.lastChar[0] = buf[buf.length - 2]; - this.lastChar[1] = buf[buf.length - 1]; - return r.slice(0, -1); - } - } - - return r; - } - - this.lastNeed = 1; - this.lastTotal = 2; - this.lastChar[0] = buf[buf.length - 1]; - return buf.toString('utf16le', i, buf.length - 1); -} // For UTF-16LE we do not explicitly append special replacement characters if we -// end on a partial character, we simply let v8 handle that. - - -function utf16End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - - if (this.lastNeed) { - var end = this.lastTotal - this.lastNeed; - return r + this.lastChar.toString('utf16le', 0, end); - } - - return r; -} - -function base64Text(buf, i) { - var n = (buf.length - i) % 3; - if (n === 0) return buf.toString('base64', i); - this.lastNeed = 3 - n; - this.lastTotal = 3; - - if (n === 1) { - this.lastChar[0] = buf[buf.length - 1]; - } else { - this.lastChar[0] = buf[buf.length - 2]; - this.lastChar[1] = buf[buf.length - 1]; - } - - return buf.toString('base64', i, buf.length - n); -} - -function base64End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); - return r; -} // Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) - - -function simpleWrite(buf) { - return buf.toString(this.encoding); -} - -function simpleEnd(buf) { - return buf && buf.length ? this.write(buf) : ''; -} - -/***/ }), - -/***/ 4368: -/***/ ((module, exports, __webpack_require__) => { - -/*! safe-buffer. MIT License. Feross Aboukhadijeh */ - -/* eslint-disable node/no-deprecated-api */ -var buffer = __webpack_require__(365); - -var Buffer = buffer.Buffer; // alternative to using Object.keys for old browsers - -function copyProps(src, dst) { - for (var key in src) { - dst[key] = src[key]; - } -} - -if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { - module.exports = buffer; -} else { - // Copy properties from require('buffer') - copyProps(buffer, exports); - exports.Buffer = SafeBuffer; -} - -function SafeBuffer(arg, encodingOrOffset, length) { - return Buffer(arg, encodingOrOffset, length); -} - -SafeBuffer.prototype = Object.create(Buffer.prototype); // Copy static methods from Buffer - -copyProps(Buffer, SafeBuffer); - -SafeBuffer.from = function (arg, encodingOrOffset, length) { - if (typeof arg === 'number') { - throw new TypeError('Argument must not be a number'); - } - - return Buffer(arg, encodingOrOffset, length); -}; - -SafeBuffer.alloc = function (size, fill, encoding) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number'); - } - - var buf = Buffer(size); - - if (fill !== undefined) { - if (typeof encoding === 'string') { - buf.fill(fill, encoding); - } else { - buf.fill(fill); - } - } else { - buf.fill(0); - } - - return buf; -}; - -SafeBuffer.allocUnsafe = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number'); - } - - return Buffer(size); -}; - -SafeBuffer.allocUnsafeSlow = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number'); - } - - return buffer.SlowBuffer(size); -}; - -/***/ }), - -/***/ 8016: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/** - * Module exports. - */ -module.exports = deprecate; -/** - * Mark that a method should not be used. - * Returns a modified function which warns once by default. - * - * If `localStorage.noDeprecation = true` is set, then it is a no-op. - * - * If `localStorage.throwDeprecation = true` is set, then deprecated functions - * will throw an Error when invoked. - * - * If `localStorage.traceDeprecation = true` is set, then deprecated functions - * will invoke `console.trace()` instead of `console.error()`. - * - * @param {Function} fn - the function to deprecate - * @param {String} msg - the string to print to the console when `fn` is invoked - * @returns {Function} a new "deprecated" version of `fn` - * @api public - */ - -function deprecate(fn, msg) { - if (config('noDeprecation')) { - return fn; - } - - var warned = false; - - function deprecated() { - if (!warned) { - if (config('throwDeprecation')) { - throw new Error(msg); - } else if (config('traceDeprecation')) { - console.trace(msg); - } else { - console.warn(msg); - } - - warned = true; - } - - return fn.apply(this, arguments); - } - - return deprecated; -} -/** - * Checks `localStorage` for boolean values for the given `name`. - * - * @param {String} name - * @returns {Boolean} - * @api private - */ - - -function config(name) { - // accessing global.localStorage can trigger a DOMException in sandboxed iframes - try { - if (!__webpack_require__.g.localStorage) return false; - } catch (_) { - return false; - } - - var val = __webpack_require__.g.localStorage[name]; - if (null == val) return false; - return String(val).toLowerCase() === 'true'; -} - -/***/ }), - -/***/ 8538: -/***/ ((module) => { - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -module.exports = function isBuffer(arg) { - return arg && _typeof(arg) === 'object' && typeof arg.copy === 'function' && typeof arg.fill === 'function' && typeof arg.readUInt8 === 'function'; -}; - -/***/ }), - -/***/ 9957: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; -// Currently in sync with Node.js lib/internal/util/types.js -// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9 - - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -var isArgumentsObject = __webpack_require__(2755); - -var isGeneratorFunction = __webpack_require__(6738); - -var whichTypedArray = __webpack_require__(1482); - -var isTypedArray = __webpack_require__(7913); - -function uncurryThis(f) { - return f.call.bind(f); -} - -var BigIntSupported = typeof BigInt !== 'undefined'; -var SymbolSupported = typeof Symbol !== 'undefined'; -var ObjectToString = uncurryThis(Object.prototype.toString); -var numberValue = uncurryThis(Number.prototype.valueOf); -var stringValue = uncurryThis(String.prototype.valueOf); -var booleanValue = uncurryThis(Boolean.prototype.valueOf); - -if (BigIntSupported) { - var bigIntValue = uncurryThis(BigInt.prototype.valueOf); -} - -if (SymbolSupported) { - var symbolValue = uncurryThis(Symbol.prototype.valueOf); -} - -function checkBoxedPrimitive(value, prototypeValueOf) { - if (_typeof(value) !== 'object') { - return false; - } - - try { - prototypeValueOf(value); - return true; - } catch (e) { - return false; - } -} - -exports.isArgumentsObject = isArgumentsObject; -exports.isGeneratorFunction = isGeneratorFunction; -exports.isTypedArray = isTypedArray; // Taken from here and modified for better browser support -// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js - -function isPromise(input) { - return typeof Promise !== 'undefined' && input instanceof Promise || input !== null && _typeof(input) === 'object' && typeof input.then === 'function' && typeof input["catch"] === 'function'; -} - -exports.isPromise = isPromise; - -function isArrayBufferView(value) { - if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) { - return ArrayBuffer.isView(value); - } - - return isTypedArray(value) || isDataView(value); -} - -exports.isArrayBufferView = isArrayBufferView; - -function isUint8Array(value) { - return whichTypedArray(value) === 'Uint8Array'; -} - -exports.isUint8Array = isUint8Array; - -function isUint8ClampedArray(value) { - return whichTypedArray(value) === 'Uint8ClampedArray'; -} - -exports.isUint8ClampedArray = isUint8ClampedArray; - -function isUint16Array(value) { - return whichTypedArray(value) === 'Uint16Array'; -} - -exports.isUint16Array = isUint16Array; - -function isUint32Array(value) { - return whichTypedArray(value) === 'Uint32Array'; -} - -exports.isUint32Array = isUint32Array; - -function isInt8Array(value) { - return whichTypedArray(value) === 'Int8Array'; -} - -exports.isInt8Array = isInt8Array; - -function isInt16Array(value) { - return whichTypedArray(value) === 'Int16Array'; -} - -exports.isInt16Array = isInt16Array; - -function isInt32Array(value) { - return whichTypedArray(value) === 'Int32Array'; -} - -exports.isInt32Array = isInt32Array; - -function isFloat32Array(value) { - return whichTypedArray(value) === 'Float32Array'; -} - -exports.isFloat32Array = isFloat32Array; - -function isFloat64Array(value) { - return whichTypedArray(value) === 'Float64Array'; -} - -exports.isFloat64Array = isFloat64Array; - -function isBigInt64Array(value) { - return whichTypedArray(value) === 'BigInt64Array'; -} - -exports.isBigInt64Array = isBigInt64Array; - -function isBigUint64Array(value) { - return whichTypedArray(value) === 'BigUint64Array'; -} - -exports.isBigUint64Array = isBigUint64Array; - -function isMapToString(value) { - return ObjectToString(value) === '[object Map]'; -} - -isMapToString.working = typeof Map !== 'undefined' && isMapToString(new Map()); - -function isMap(value) { - if (typeof Map === 'undefined') { - return false; - } - - return isMapToString.working ? isMapToString(value) : value instanceof Map; -} - -exports.isMap = isMap; - -function isSetToString(value) { - return ObjectToString(value) === '[object Set]'; -} - -isSetToString.working = typeof Set !== 'undefined' && isSetToString(new Set()); - -function isSet(value) { - if (typeof Set === 'undefined') { - return false; - } - - return isSetToString.working ? isSetToString(value) : value instanceof Set; -} - -exports.isSet = isSet; - -function isWeakMapToString(value) { - return ObjectToString(value) === '[object WeakMap]'; -} - -isWeakMapToString.working = typeof WeakMap !== 'undefined' && isWeakMapToString(new WeakMap()); - -function isWeakMap(value) { - if (typeof WeakMap === 'undefined') { - return false; - } - - return isWeakMapToString.working ? isWeakMapToString(value) : value instanceof WeakMap; -} - -exports.isWeakMap = isWeakMap; - -function isWeakSetToString(value) { - return ObjectToString(value) === '[object WeakSet]'; -} - -isWeakSetToString.working = typeof WeakSet !== 'undefined' && isWeakSetToString(new WeakSet()); - -function isWeakSet(value) { - return isWeakSetToString(value); -} - -exports.isWeakSet = isWeakSet; - -function isArrayBufferToString(value) { - return ObjectToString(value) === '[object ArrayBuffer]'; -} - -isArrayBufferToString.working = typeof ArrayBuffer !== 'undefined' && isArrayBufferToString(new ArrayBuffer()); - -function isArrayBuffer(value) { - if (typeof ArrayBuffer === 'undefined') { - return false; - } - - return isArrayBufferToString.working ? isArrayBufferToString(value) : value instanceof ArrayBuffer; -} - -exports.isArrayBuffer = isArrayBuffer; - -function isDataViewToString(value) { - return ObjectToString(value) === '[object DataView]'; -} - -isDataViewToString.working = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined' && isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1)); - -function isDataView(value) { - if (typeof DataView === 'undefined') { - return false; - } - - return isDataViewToString.working ? isDataViewToString(value) : value instanceof DataView; -} - -exports.isDataView = isDataView; // Store a copy of SharedArrayBuffer in case it's deleted elsewhere - -var SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined; - -function isSharedArrayBufferToString(value) { - return ObjectToString(value) === '[object SharedArrayBuffer]'; -} - -function isSharedArrayBuffer(value) { - if (typeof SharedArrayBufferCopy === 'undefined') { - return false; - } - - if (typeof isSharedArrayBufferToString.working === 'undefined') { - isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy()); - } - - return isSharedArrayBufferToString.working ? isSharedArrayBufferToString(value) : value instanceof SharedArrayBufferCopy; -} - -exports.isSharedArrayBuffer = isSharedArrayBuffer; - -function isAsyncFunction(value) { - return ObjectToString(value) === '[object AsyncFunction]'; -} - -exports.isAsyncFunction = isAsyncFunction; - -function isMapIterator(value) { - return ObjectToString(value) === '[object Map Iterator]'; -} - -exports.isMapIterator = isMapIterator; - -function isSetIterator(value) { - return ObjectToString(value) === '[object Set Iterator]'; -} - -exports.isSetIterator = isSetIterator; - -function isGeneratorObject(value) { - return ObjectToString(value) === '[object Generator]'; -} - -exports.isGeneratorObject = isGeneratorObject; - -function isWebAssemblyCompiledModule(value) { - return ObjectToString(value) === '[object WebAssembly.Module]'; -} - -exports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule; - -function isNumberObject(value) { - return checkBoxedPrimitive(value, numberValue); -} - -exports.isNumberObject = isNumberObject; - -function isStringObject(value) { - return checkBoxedPrimitive(value, stringValue); -} - -exports.isStringObject = isStringObject; - -function isBooleanObject(value) { - return checkBoxedPrimitive(value, booleanValue); -} - -exports.isBooleanObject = isBooleanObject; - -function isBigIntObject(value) { - return BigIntSupported && checkBoxedPrimitive(value, bigIntValue); -} - -exports.isBigIntObject = isBigIntObject; - -function isSymbolObject(value) { - return SymbolSupported && checkBoxedPrimitive(value, symbolValue); -} - -exports.isSymbolObject = isSymbolObject; - -function isBoxedPrimitive(value) { - return isNumberObject(value) || isStringObject(value) || isBooleanObject(value) || isBigIntObject(value) || isSymbolObject(value); -} - -exports.isBoxedPrimitive = isBoxedPrimitive; - -function isAnyArrayBuffer(value) { - return typeof Uint8Array !== 'undefined' && (isArrayBuffer(value) || isSharedArrayBuffer(value)); -} - -exports.isAnyArrayBuffer = isAnyArrayBuffer; -['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function (method) { - Object.defineProperty(exports, method, { - enumerable: false, - value: function value() { - throw new Error(method + ' is not supported in userland'); - } - }); -}); - -/***/ }), - -/***/ 161: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. -var getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors || function getOwnPropertyDescriptors(obj) { - var keys = Object.keys(obj); - var descriptors = {}; - - for (var i = 0; i < keys.length; i++) { - descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]); - } - - return descriptors; -}; - -var formatRegExp = /%[sdj%]/g; - -exports.format = function (f) { - if (!isString(f)) { - var objects = []; - - for (var i = 0; i < arguments.length; i++) { - objects.push(inspect(arguments[i])); - } - - return objects.join(' '); - } - - var i = 1; - var args = arguments; - var len = args.length; - var str = String(f).replace(formatRegExp, function (x) { - if (x === '%%') return '%'; - if (i >= len) return x; - - switch (x) { - case '%s': - return String(args[i++]); - - case '%d': - return Number(args[i++]); - - case '%j': - try { - return JSON.stringify(args[i++]); - } catch (_) { - return '[Circular]'; - } - - default: - return x; - } - }); - - for (var x = args[i]; i < len; x = args[++i]) { - if (isNull(x) || !isObject(x)) { - str += ' ' + x; - } else { - str += ' ' + inspect(x); - } - } - - return str; -}; // Mark that a method should not be used. -// Returns a modified function which warns once by default. -// If --no-deprecation is set, then it is a no-op. - - -exports.deprecate = function (fn, msg) { - if (typeof ({env:{}}) !== 'undefined' && ({env:{}}).noDeprecation === true) { - return fn; - } // Allow for deprecating things in the process of starting up. - - - if (typeof ({env:{}}) === 'undefined') { - return function () { - return exports.deprecate(fn, msg).apply(this, arguments); - }; - } - - var warned = false; - - function deprecated() { - if (!warned) { - if (({env:{}}).throwDeprecation) { - throw new Error(msg); - } else if (({env:{}}).traceDeprecation) { - console.trace(msg); - } else { - console.error(msg); - } - - warned = true; - } - - return fn.apply(this, arguments); - } - - return deprecated; -}; - -var debugs = {}; -var debugEnvRegex = /^$/; - -if (({env:{}}).env.NODE_DEBUG) { - var debugEnv = ({env:{}}).env.NODE_DEBUG; - debugEnv = debugEnv.replace(/[|\\{}()[\]^$+?.]/g, '\\$&').replace(/\*/g, '.*').replace(/,/g, '$|^').toUpperCase(); - debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i'); -} - -exports.debuglog = function (set) { - set = set.toUpperCase(); - - if (!debugs[set]) { - if (debugEnvRegex.test(set)) { - var pid = ({env:{}}).pid; - - debugs[set] = function () { - var msg = exports.format.apply(exports, arguments); - console.error('%s %d: %s', set, pid, msg); - }; - } else { - debugs[set] = function () {}; - } - } - - return debugs[set]; -}; -/** - * Echos the value of a value. Trys to print the value out - * in the best way possible given the different types. - * - * @param {Object} obj The object to print out. - * @param {Object} opts Optional options object that alters the output. - */ - -/* legacy: obj, showHidden, depth, colors*/ - - -function inspect(obj, opts) { - // default options - var ctx = { - seen: [], - stylize: stylizeNoColor - }; // legacy... - - if (arguments.length >= 3) ctx.depth = arguments[2]; - if (arguments.length >= 4) ctx.colors = arguments[3]; - - if (isBoolean(opts)) { - // legacy... - ctx.showHidden = opts; - } else if (opts) { - // got an "options" object - exports._extend(ctx, opts); - } // set default options - - - if (isUndefined(ctx.showHidden)) ctx.showHidden = false; - if (isUndefined(ctx.depth)) ctx.depth = 2; - if (isUndefined(ctx.colors)) ctx.colors = false; - if (isUndefined(ctx.customInspect)) ctx.customInspect = true; - if (ctx.colors) ctx.stylize = stylizeWithColor; - return formatValue(ctx, obj, ctx.depth); -} - -exports.inspect = inspect; // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics - -inspect.colors = { - 'bold': [1, 22], - 'italic': [3, 23], - 'underline': [4, 24], - 'inverse': [7, 27], - 'white': [37, 39], - 'grey': [90, 39], - 'black': [30, 39], - 'blue': [34, 39], - 'cyan': [36, 39], - 'green': [32, 39], - 'magenta': [35, 39], - 'red': [31, 39], - 'yellow': [33, 39] -}; // Don't use 'blue' not visible on cmd.exe - -inspect.styles = { - 'special': 'cyan', - 'number': 'yellow', - 'boolean': 'yellow', - 'undefined': 'grey', - 'null': 'bold', - 'string': 'green', - 'date': 'magenta', - // "name": intentionally not styling - 'regexp': 'red' -}; - -function stylizeWithColor(str, styleType) { - var style = inspect.styles[styleType]; - - if (style) { - return "\x1B[" + inspect.colors[style][0] + 'm' + str + "\x1B[" + inspect.colors[style][1] + 'm'; - } else { - return str; - } -} - -function stylizeNoColor(str, styleType) { - return str; -} - -function arrayToHash(array) { - var hash = {}; - array.forEach(function (val, idx) { - hash[val] = true; - }); - return hash; -} - -function formatValue(ctx, value, recurseTimes) { - // Provide a hook for user-specified inspect functions. - // Check that value is an object with an inspect function on it - if (ctx.customInspect && value && isFunction(value.inspect) && // Filter out the util module, it's inspect function is special - value.inspect !== exports.inspect && // Also filter out any prototype objects using the circular check. - !(value.constructor && value.constructor.prototype === value)) { - var ret = value.inspect(recurseTimes, ctx); - - if (!isString(ret)) { - ret = formatValue(ctx, ret, recurseTimes); - } - - return ret; - } // Primitive types cannot have properties - - - var primitive = formatPrimitive(ctx, value); - - if (primitive) { - return primitive; - } // Look up the keys of the object. - - - var keys = Object.keys(value); - var visibleKeys = arrayToHash(keys); - - if (ctx.showHidden) { - keys = Object.getOwnPropertyNames(value); - } // IE doesn't make error fields non-enumerable - // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx - - - if (isError(value) && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { - return formatError(value); - } // Some type of object without properties can be shortcutted. - - - if (keys.length === 0) { - if (isFunction(value)) { - var name = value.name ? ': ' + value.name : ''; - return ctx.stylize('[Function' + name + ']', 'special'); - } - - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); - } - - if (isDate(value)) { - return ctx.stylize(Date.prototype.toString.call(value), 'date'); - } - - if (isError(value)) { - return formatError(value); - } - } - - var base = '', - array = false, - braces = ['{', '}']; // Make Array say that they are Array - - if (isArray(value)) { - array = true; - braces = ['[', ']']; - } // Make functions say that they are functions - - - if (isFunction(value)) { - var n = value.name ? ': ' + value.name : ''; - base = ' [Function' + n + ']'; - } // Make RegExps say that they are RegExps - - - if (isRegExp(value)) { - base = ' ' + RegExp.prototype.toString.call(value); - } // Make dates with properties first say the date - - - if (isDate(value)) { - base = ' ' + Date.prototype.toUTCString.call(value); - } // Make error with message first say the error - - - if (isError(value)) { - base = ' ' + formatError(value); - } - - if (keys.length === 0 && (!array || value.length == 0)) { - return braces[0] + base + braces[1]; - } - - if (recurseTimes < 0) { - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); - } else { - return ctx.stylize('[Object]', 'special'); - } - } - - ctx.seen.push(value); - var output; - - if (array) { - output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); - } else { - output = keys.map(function (key) { - return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); - }); - } - - ctx.seen.pop(); - return reduceToSingleString(output, base, braces); -} - -function formatPrimitive(ctx, value) { - if (isUndefined(value)) return ctx.stylize('undefined', 'undefined'); - - if (isString(value)) { - var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '').replace(/'/g, "\\'").replace(/\\"/g, '"') + '\''; - return ctx.stylize(simple, 'string'); - } - - if (isNumber(value)) return ctx.stylize('' + value, 'number'); - if (isBoolean(value)) return ctx.stylize('' + value, 'boolean'); // For some reason typeof null is "object", so special case here. - - if (isNull(value)) return ctx.stylize('null', 'null'); -} - -function formatError(value) { - return '[' + Error.prototype.toString.call(value) + ']'; -} - -function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { - var output = []; - - for (var i = 0, l = value.length; i < l; ++i) { - if (hasOwnProperty(value, String(i))) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, String(i), true)); - } else { - output.push(''); - } - } - - keys.forEach(function (key) { - if (!key.match(/^\d+$/)) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, key, true)); - } - }); - return output; -} - -function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { - var name, str, desc; - desc = Object.getOwnPropertyDescriptor(value, key) || { - value: value[key] - }; - - if (desc.get) { - if (desc.set) { - str = ctx.stylize('[Getter/Setter]', 'special'); - } else { - str = ctx.stylize('[Getter]', 'special'); - } - } else { - if (desc.set) { - str = ctx.stylize('[Setter]', 'special'); - } - } - - if (!hasOwnProperty(visibleKeys, key)) { - name = '[' + key + ']'; - } - - if (!str) { - if (ctx.seen.indexOf(desc.value) < 0) { - if (isNull(recurseTimes)) { - str = formatValue(ctx, desc.value, null); - } else { - str = formatValue(ctx, desc.value, recurseTimes - 1); - } - - if (str.indexOf('\n') > -1) { - if (array) { - str = str.split('\n').map(function (line) { - return ' ' + line; - }).join('\n').substr(2); - } else { - str = '\n' + str.split('\n').map(function (line) { - return ' ' + line; - }).join('\n'); - } - } - } else { - str = ctx.stylize('[Circular]', 'special'); - } - } - - if (isUndefined(name)) { - if (array && key.match(/^\d+$/)) { - return str; - } - - name = JSON.stringify('' + key); - - if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { - name = name.substr(1, name.length - 2); - name = ctx.stylize(name, 'name'); - } else { - name = name.replace(/'/g, "\\'").replace(/\\"/g, '"').replace(/(^"|"$)/g, "'"); - name = ctx.stylize(name, 'string'); - } - } - - return name + ': ' + str; -} - -function reduceToSingleString(output, base, braces) { - var numLinesEst = 0; - var length = output.reduce(function (prev, cur) { - numLinesEst++; - if (cur.indexOf('\n') >= 0) numLinesEst++; - return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; - }, 0); - - if (length > 60) { - return braces[0] + (base === '' ? '' : base + '\n ') + ' ' + output.join(',\n ') + ' ' + braces[1]; - } - - return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; -} // NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. - - -exports.types = __webpack_require__(9957); - -function isArray(ar) { - return Array.isArray(ar); -} - -exports.isArray = isArray; - -function isBoolean(arg) { - return typeof arg === 'boolean'; -} - -exports.isBoolean = isBoolean; - -function isNull(arg) { - return arg === null; -} - -exports.isNull = isNull; - -function isNullOrUndefined(arg) { - return arg == null; -} - -exports.isNullOrUndefined = isNullOrUndefined; - -function isNumber(arg) { - return typeof arg === 'number'; -} - -exports.isNumber = isNumber; - -function isString(arg) { - return typeof arg === 'string'; -} - -exports.isString = isString; - -function isSymbol(arg) { - return _typeof(arg) === 'symbol'; -} - -exports.isSymbol = isSymbol; - -function isUndefined(arg) { - return arg === void 0; -} - -exports.isUndefined = isUndefined; - -function isRegExp(re) { - return isObject(re) && objectToString(re) === '[object RegExp]'; -} - -exports.isRegExp = isRegExp; -exports.types.isRegExp = isRegExp; - -function isObject(arg) { - return _typeof(arg) === 'object' && arg !== null; -} - -exports.isObject = isObject; - -function isDate(d) { - return isObject(d) && objectToString(d) === '[object Date]'; -} - -exports.isDate = isDate; -exports.types.isDate = isDate; - -function isError(e) { - return isObject(e) && (objectToString(e) === '[object Error]' || e instanceof Error); -} - -exports.isError = isError; -exports.types.isNativeError = isError; - -function isFunction(arg) { - return typeof arg === 'function'; -} - -exports.isFunction = isFunction; - -function isPrimitive(arg) { - return arg === null || typeof arg === 'boolean' || typeof arg === 'number' || typeof arg === 'string' || _typeof(arg) === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; -} - -exports.isPrimitive = isPrimitive; -exports.isBuffer = __webpack_require__(8538); - -function objectToString(o) { - return Object.prototype.toString.call(o); -} - -function pad(n) { - return n < 10 ? '0' + n.toString(10) : n.toString(10); -} - -var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; // 26 Feb 16:19:34 - -function timestamp() { - var d = new Date(); - var time = [pad(d.getHours()), pad(d.getMinutes()), pad(d.getSeconds())].join(':'); - return [d.getDate(), months[d.getMonth()], time].join(' '); -} // log is just a thin wrapper to console.log that prepends a timestamp - - -exports.log = function () { - console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); -}; -/** - * Inherit the prototype methods from one constructor into another. - * - * The Function.prototype.inherits from lang.js rewritten as a standalone - * function (not on Function.prototype). NOTE: If this file is to be loaded - * during bootstrapping this function needs to be rewritten using some native - * functions as prototype setup using normal JavaScript does not work as - * expected during bootstrapping (see mirror.js in r114903). - * - * @param {function} ctor Constructor function which needs to inherit the - * prototype. - * @param {function} superCtor Constructor function to inherit prototype from. - */ - - -exports.inherits = __webpack_require__(376); - -exports._extend = function (origin, add) { - // Don't do anything if add isn't an object - if (!add || !isObject(add)) return origin; - var keys = Object.keys(add); - var i = keys.length; - - while (i--) { - origin[keys[i]] = add[keys[i]]; - } - - return origin; -}; - -function hasOwnProperty(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); -} - -var kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined; - -exports.promisify = function promisify(original) { - if (typeof original !== 'function') throw new TypeError('The "original" argument must be of type Function'); - - if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) { - var fn = original[kCustomPromisifiedSymbol]; - - if (typeof fn !== 'function') { - throw new TypeError('The "util.promisify.custom" argument must be of type Function'); - } - - Object.defineProperty(fn, kCustomPromisifiedSymbol, { - value: fn, - enumerable: false, - writable: false, - configurable: true - }); - return fn; - } - - function fn() { - var promiseResolve, promiseReject; - var promise = new Promise(function (resolve, reject) { - promiseResolve = resolve; - promiseReject = reject; - }); - var args = []; - - for (var i = 0; i < arguments.length; i++) { - args.push(arguments[i]); - } - - args.push(function (err, value) { - if (err) { - promiseReject(err); - } else { - promiseResolve(value); - } - }); - - try { - original.apply(this, args); - } catch (err) { - promiseReject(err); - } - - return promise; - } - - Object.setPrototypeOf(fn, Object.getPrototypeOf(original)); - if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, { - value: fn, - enumerable: false, - writable: false, - configurable: true - }); - return Object.defineProperties(fn, getOwnPropertyDescriptors(original)); -}; - -exports.promisify.custom = kCustomPromisifiedSymbol; - -function callbackifyOnRejected(reason, cb) { - // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M). - // Because `null` is a special error value in callbacks which means "no error - // occurred", we error-wrap so the callback consumer can distinguish between - // "the promise rejected with null" or "the promise fulfilled with undefined". - if (!reason) { - var newReason = new Error('Promise was rejected with a falsy value'); - newReason.reason = reason; - reason = newReason; - } - - return cb(reason); -} - -function callbackify(original) { - if (typeof original !== 'function') { - throw new TypeError('The "original" argument must be of type Function'); - } // We DO NOT return the promise as it gives the user a false sense that - // the promise is actually somehow related to the callback's execution - // and that the callback throwing will reject the promise. - - - function callbackified() { - var args = []; - - for (var i = 0; i < arguments.length; i++) { - args.push(arguments[i]); - } - - var maybeCb = args.pop(); - - if (typeof maybeCb !== 'function') { - throw new TypeError('The last argument must be of type Function'); - } - - var self = this; - - var cb = function cb() { - return maybeCb.apply(self, arguments); - }; // In true node style we process the callback on `nextTick` with all the - // implications (stack, `uncaughtException`, `async_hooks`) - - - original.apply(this, args).then(function (ret) { - ({env:{}}).nextTick(cb.bind(null, null, ret)); - }, function (rej) { - ({env:{}}).nextTick(callbackifyOnRejected.bind(null, rej, cb)); - }); - } - - Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original)); - Object.defineProperties(callbackified, getOwnPropertyDescriptors(original)); - return callbackified; -} - -exports.callbackify = callbackify; - -/***/ }), - -/***/ 1482: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var forEach = __webpack_require__(5337); - -var availableTypedArrays = __webpack_require__(6461); - -var callBound = __webpack_require__(8780); - -var $toString = callBound('Object.prototype.toString'); - -var hasToStringTag = __webpack_require__(5994)(); - -var g = typeof globalThis === 'undefined' ? __webpack_require__.g : globalThis; -var typedArrays = availableTypedArrays(); -var $slice = callBound('String.prototype.slice'); -var toStrTags = {}; - -var gOPD = __webpack_require__(3999); - -var getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof'); - -if (hasToStringTag && gOPD && getPrototypeOf) { - forEach(typedArrays, function (typedArray) { - if (typeof g[typedArray] === 'function') { - var arr = new g[typedArray](); - - if (Symbol.toStringTag in arr) { - var proto = getPrototypeOf(arr); - var descriptor = gOPD(proto, Symbol.toStringTag); - - if (!descriptor) { - var superProto = getPrototypeOf(proto); - descriptor = gOPD(superProto, Symbol.toStringTag); - } - - toStrTags[typedArray] = descriptor.get; - } - } - }); -} - -var tryTypedArrays = function tryAllTypedArrays(value) { - var foundName = false; - forEach(toStrTags, function (getter, typedArray) { - if (!foundName) { - try { - var name = getter.call(value); - - if (name === typedArray) { - foundName = name; - } - } catch (e) {} - } - }); - return foundName; -}; - -var isTypedArray = __webpack_require__(7913); - -module.exports = function whichTypedArray(value) { - if (!isTypedArray(value)) { - return false; - } - - if (!hasToStringTag || !(Symbol.toStringTag in value)) { - return $slice($toString(value), 8, -1); - } - - return tryTypedArrays(value); -}; - -/***/ }), - -/***/ 6601: -/***/ (() => { - -/* (ignored) */ - -/***/ }), - -/***/ 9214: -/***/ (() => { - -/* (ignored) */ - -/***/ }), - -/***/ 2361: -/***/ (() => { - -/* (ignored) */ - -/***/ }), - -/***/ 4616: -/***/ (() => { - -/* (ignored) */ - -/***/ }), - -/***/ 6461: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var possibleNames = ['BigInt64Array', 'BigUint64Array', 'Float32Array', 'Float64Array', 'Int16Array', 'Int32Array', 'Int8Array', 'Uint16Array', 'Uint32Array', 'Uint8Array', 'Uint8ClampedArray']; -var g = typeof globalThis === 'undefined' ? __webpack_require__.g : globalThis; - -module.exports = function availableTypedArrays() { - var out = []; - - for (var i = 0; i < possibleNames.length; i++) { - if (typeof g[possibleNames[i]] === 'function') { - out[out.length] = possibleNames[i]; - } - } - - return out; -}; - -/***/ }), - -/***/ 3999: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var GetIntrinsic = __webpack_require__(6893); - -var $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true); - -if ($gOPD) { - try { - $gOPD([], 'length'); - } catch (e) { - // IE 8 has a broken gOPD - $gOPD = null; - } -} - -module.exports = $gOPD; - -/***/ }), - -/***/ 4946: -/***/ ((module) => { - -"use strict"; -module.exports = JSON.parse('{"aes-128-ecb":{"cipher":"AES","key":128,"iv":0,"mode":"ECB","type":"block"},"aes-192-ecb":{"cipher":"AES","key":192,"iv":0,"mode":"ECB","type":"block"},"aes-256-ecb":{"cipher":"AES","key":256,"iv":0,"mode":"ECB","type":"block"},"aes-128-cbc":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes-192-cbc":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes-256-cbc":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes128":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes192":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes256":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes-128-cfb":{"cipher":"AES","key":128,"iv":16,"mode":"CFB","type":"stream"},"aes-192-cfb":{"cipher":"AES","key":192,"iv":16,"mode":"CFB","type":"stream"},"aes-256-cfb":{"cipher":"AES","key":256,"iv":16,"mode":"CFB","type":"stream"},"aes-128-cfb8":{"cipher":"AES","key":128,"iv":16,"mode":"CFB8","type":"stream"},"aes-192-cfb8":{"cipher":"AES","key":192,"iv":16,"mode":"CFB8","type":"stream"},"aes-256-cfb8":{"cipher":"AES","key":256,"iv":16,"mode":"CFB8","type":"stream"},"aes-128-cfb1":{"cipher":"AES","key":128,"iv":16,"mode":"CFB1","type":"stream"},"aes-192-cfb1":{"cipher":"AES","key":192,"iv":16,"mode":"CFB1","type":"stream"},"aes-256-cfb1":{"cipher":"AES","key":256,"iv":16,"mode":"CFB1","type":"stream"},"aes-128-ofb":{"cipher":"AES","key":128,"iv":16,"mode":"OFB","type":"stream"},"aes-192-ofb":{"cipher":"AES","key":192,"iv":16,"mode":"OFB","type":"stream"},"aes-256-ofb":{"cipher":"AES","key":256,"iv":16,"mode":"OFB","type":"stream"},"aes-128-ctr":{"cipher":"AES","key":128,"iv":16,"mode":"CTR","type":"stream"},"aes-192-ctr":{"cipher":"AES","key":192,"iv":16,"mode":"CTR","type":"stream"},"aes-256-ctr":{"cipher":"AES","key":256,"iv":16,"mode":"CTR","type":"stream"},"aes-128-gcm":{"cipher":"AES","key":128,"iv":12,"mode":"GCM","type":"auth"},"aes-192-gcm":{"cipher":"AES","key":192,"iv":12,"mode":"GCM","type":"auth"},"aes-256-gcm":{"cipher":"AES","key":256,"iv":12,"mode":"GCM","type":"auth"}}'); - -/***/ }), - -/***/ 5207: -/***/ ((module) => { - -"use strict"; -module.exports = JSON.parse('{"sha224WithRSAEncryption":{"sign":"rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"RSA-SHA224":{"sign":"ecdsa/rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"sha256WithRSAEncryption":{"sign":"rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"RSA-SHA256":{"sign":"ecdsa/rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"sha384WithRSAEncryption":{"sign":"rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"RSA-SHA384":{"sign":"ecdsa/rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"sha512WithRSAEncryption":{"sign":"rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA512":{"sign":"ecdsa/rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA1":{"sign":"rsa","hash":"sha1","id":"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{"sign":"ecdsa","hash":"sha1","id":""},"sha256":{"sign":"ecdsa","hash":"sha256","id":""},"sha224":{"sign":"ecdsa","hash":"sha224","id":""},"sha384":{"sign":"ecdsa","hash":"sha384","id":""},"sha512":{"sign":"ecdsa","hash":"sha512","id":""},"DSA-SHA":{"sign":"dsa","hash":"sha1","id":""},"DSA-SHA1":{"sign":"dsa","hash":"sha1","id":""},"DSA":{"sign":"dsa","hash":"sha1","id":""},"DSA-WITH-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-WITH-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-WITH-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-WITH-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-RIPEMD160":{"sign":"dsa","hash":"rmd160","id":""},"ripemd160WithRSA":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"RSA-RIPEMD160":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"md5WithRSAEncryption":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"},"RSA-MD5":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"}}'); - -/***/ }), - -/***/ 1308: -/***/ ((module) => { - -"use strict"; -module.exports = JSON.parse('{"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"}'); - -/***/ }), - -/***/ 9799: -/***/ ((module) => { - -"use strict"; -module.exports = JSON.parse('{"modp1":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},"modp2":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},"modp5":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},"modp14":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},"modp15":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},"modp16":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},"modp17":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},"modp18":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}'); - -/***/ }), - -/***/ 8597: -/***/ ((module) => { - -"use strict"; -module.exports = {"i8":"6.5.4"}; - -/***/ }), - -/***/ 2562: -/***/ ((module) => { - -"use strict"; -module.exports = JSON.parse('{"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}'); - -/***/ }) - -/******/ }); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ // Check if module is in cache -/******/ var cachedModule = __webpack_module_cache__[moduleId]; -/******/ if (cachedModule !== undefined) { -/******/ return cachedModule.exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = __webpack_module_cache__[moduleId] = { -/******/ id: moduleId, -/******/ loaded: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.loaded = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/************************************************************************/ -/******/ /* webpack/runtime/define property getters */ -/******/ (() => { -/******/ // define getter functions for harmony exports -/******/ __webpack_require__.d = (exports, definition) => { -/******/ for(var key in definition) { -/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { -/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); -/******/ } -/******/ } -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/global */ -/******/ (() => { -/******/ __webpack_require__.g = (function() { -/******/ if (typeof globalThis === 'object') return globalThis; -/******/ try { -/******/ return this || new Function('return this')(); -/******/ } catch (e) { -/******/ if (typeof window === 'object') return window; -/******/ } -/******/ })(); -/******/ })(); -/******/ -/******/ /* webpack/runtime/hasOwnProperty shorthand */ -/******/ (() => { -/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) -/******/ })(); -/******/ -/******/ /* webpack/runtime/node module decorator */ -/******/ (() => { -/******/ __webpack_require__.nmd = (module) => { -/******/ module.paths = []; -/******/ if (!module.children) module.children = []; -/******/ return module; -/******/ }; -/******/ })(); -/******/ -/************************************************************************/ -/******/ -/******/ // startup -/******/ // Load entry module and return exports -/******/ // This entry module used 'module' so it can't be inlined -/******/ var __webpack_exports__ = __webpack_require__(5507); -/******/ -/******/ return __webpack_exports__; -/******/ })() -; -}); \ No newline at end of file +/*! For license information please see browser.umd.js.LICENSE.txt */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.mongoose=e():t.mongoose=e()}("undefined"!=typeof self?self:this,()=>(()=>{var t={5507:(t,e,r)=>{"use strict";t.exports=r(1735)},1735:(t,e,r)=>{"use strict";var n=r(365).lW;function o(t){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o(t)}function i(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(i=function(){return!!t})()}function s(t){return s=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},s(t)}function a(t,e){return a=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},a(t,e)}r(9906).set(r(6333));var u=r(4304),c=r(6755);u.setBrowser(!0),Object.defineProperty(e,"Promise",{get:function(){return c.get()},set:function(t){c.set(t)}}),e.PromiseProvider=c,e.Error=r(4888),e.Schema=r(5506),e.Types=r(8941),e.VirtualType=r(459),e.SchemaType=r(4289),e.utils=r(6872),e.Document=u(),e.model=function(t,r){var n=function(t){function e(t,n){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e,r){return e=s(e),function(t,e){if(e&&("object"==o(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,i()?Reflect.construct(e,r||[],s(t).constructor):e.apply(t,r))}(this,e,[t,r,n])}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&a(t,e)}(e,t),n=e,Object.defineProperty(n,"prototype",{writable:!1}),n;var n}(e.Document);return n.modelName=t,n},"undefined"!=typeof window&&(window.mongoose=t.exports,window.Buffer=n)},3434:(t,e,r)=>{"use strict";var n=r(8727),o=r(9620).EventEmitter,i=r(4888),s=r(5506),a=r(6079),u=i.ValidationError,c=r(8859),f=r(5721);function l(t,e,r,o,u){if(!(this instanceof l))return new l(t,e,r,o,u);if(f(e)&&!e.instanceOfSchema&&(e=new s(e)),e=this.schema||e,!this.schema&&e.options._id&&void 0===(t=t||{})._id&&(t._id=new a),!e)throw new i.MissingSchemaError;for(var p in this.$__setSchema(e),n.call(this,t,r,o,u),c(this,e,{decorateDoc:!0}),e.methods)this[p]=e.methods[p];for(var h in e.statics)this[h]=e.statics[h]}l.prototype=Object.create(n.prototype),l.prototype.constructor=l,l.events=new o,l.$emitter=new o,["on","once","emit","listeners","removeListener","setMaxListeners","removeAllListeners","addListener"].forEach(function(t){l[t]=function(){return l.$emitter[t].apply(l.$emitter,arguments)}}),l.ValidationError=u,t.exports=l},6787:(t,e,r)=>{"use strict";function n(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return o(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,s=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw s}}}}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r=0;M--){if(null==P[M]||"object"!==i(P[M]))throw new s("Object",P[M],A+"."+M);var T=Object.keys(P[M]).length;P[M]=t(e,P[M],o,O),0===Object.keys(P[M]).length&&0!==T&&P.splice(M,1)}0===P.length&&delete r[A]}else{if("$where"===A){if("string"!==(E=i(P))&&"function"!==E)throw new Error("Must have a string or function for $where");"function"===E&&(r[A]=P.toString());continue}if("$expr"===A){P=c(P,e);continue}if("$elemMatch"===A)P=t(e,P,o,O);else if("$text"===A)P=l(P,A);else if("$comment"!==A||e.paths.hasOwnProperty("$comment")){if(!e)continue;if(!(S=e.path(A)))for(var N=A.split("."),I=N.length;I--;){var D=N.slice(0,I).join("."),R=N.slice(I).join("."),C=e.path(D),B=C&&C.schema&&C.schema.options&&C.schema.options.discriminatorKey;if(null!=C&&null!=(C.schema&&C.schema.discriminators)&&null!=B&&R!==B){var U=p(r,D+"."+B);null!=U&&(S=C.schema.discriminators[U].path(R))}}if(S){if(null==P)continue;if("Object"===h(P))if(Object.keys(P).some(d))for(var F=Object.keys(P),q=void 0,L=F.length;L--;)if(j=P[q=F[L]],"$not"===q){if(j&&S){if(($=Object.keys(j)).length&&d($[0]))for(var V in j)j[V]=S.castForQueryWrapper({$conditional:V,val:j[V],context:O});else P[q]=S.castForQueryWrapper({$conditional:q,val:j,context:O});continue}}else P[q]=S.castForQueryWrapper({$conditional:q,val:j,context:O});else r[A]=S.castForQueryWrapper({val:P,context:O});else if(Array.isArray(P)&&-1===["Buffer","Array"].indexOf(S.instance)){var W,J=[],H=n(P);try{for(H.s();!(W=H.n()).done;){var K=W.value;J.push(S.castForQueryWrapper({val:K,context:O}))}}catch(t){H.e(t)}finally{H.f()}r[A]={$in:J}}else r[A]=S.castForQueryWrapper({val:P,context:O})}else{for(var z=A.split("."),Q=z.length,G=void 0,Y=void 0,Z=void 0;Q--&&(G=z.slice(0,Q).join("."),!(S=e.path(G))););if(S){if(S.caster&&S.caster.schema){(Z={})[Y=z.slice(Q).join(".")]=P;var X=t(S.caster.schema,Z,o,O)[Y];void 0===X?delete r[A]:r[A]=X}else r[A]=P;continue}if(v(P)){var tt="";if(P.$near?tt="$near":P.$nearSphere?tt="$nearSphere":P.$within?tt="$within":P.$geoIntersects?tt="$geoIntersects":P.$geoWithin&&(tt="$geoWithin"),tt){var et=new u.Number("__QueryCasting__"),rt=P[tt];if(null!=P.$maxDistance&&(P.$maxDistance=et.castForQueryWrapper({val:P.$maxDistance,context:O})),null!=P.$minDistance&&(P.$minDistance=et.castForQueryWrapper({val:P.$minDistance,context:O})),"$within"===tt){var nt=rt.$center||rt.$centerSphere||rt.$box||rt.$polygon;if(!nt)throw new Error("Bad $within parameter: "+JSON.stringify(P));rt=nt}else if("$near"===tt&&"string"==typeof rt.type&&Array.isArray(rt.coordinates))rt=rt.coordinates;else if(("$near"===tt||"$nearSphere"===tt||"$geoIntersects"===tt)&&rt.$geometry&&"string"==typeof rt.$geometry.type&&Array.isArray(rt.$geometry.coordinates))null!=rt.$maxDistance&&(rt.$maxDistance=et.castForQueryWrapper({val:rt.$maxDistance,context:O})),null!=rt.$minDistance&&(rt.$minDistance=et.castForQueryWrapper({val:rt.$minDistance,context:O})),b(rt.$geometry)&&(rt.$geometry=rt.$geometry.toObject({transform:!1,virtuals:!1})),rt=rt.$geometry.coordinates;else if("$geoWithin"===tt)if(rt.$geometry){b(rt.$geometry)&&(rt.$geometry=rt.$geometry.toObject({virtuals:!1}));var ot=rt.$geometry.type;if(-1===g.indexOf(ot))throw new Error('Invalid geoJSON type for $geoWithin "'+ot+'", must be "Polygon" or "MultiPolygon"');rt=rt.$geometry.coordinates}else rt=rt.$box||rt.$polygon||rt.$center||rt.$centerSphere,b(rt)&&(rt=rt.toObject({virtuals:!1}));_(rt,et,O);continue}}if(e.nested[A])continue;var it="strict"in o?o.strict:e.options.strict,st=w(o,e._userProvidedOptions,e.options,O);if(o.upsert&&it){if("throw"===it)throw new a(A);throw new a(A,'Path "'+A+'" is not in schema, strict mode is `true`, and upsert is `true`.')}if("throw"===st)throw new a(A,'Path "'+A+"\" is not in schema and strictQuery is 'throw'.");st&&delete r[A]}}else P=f(P,A),r[A]=P}return r}},6670:(t,e,r)=>{"use strict";var n=r(1795);t.exports=function(e,r){if(t.exports.convertToTrue.has(e))return!0;if(t.exports.convertToFalse.has(e))return!1;if(null==e)return e;throw new n("boolean",e,r)},t.exports.convertToTrue=new Set([!0,"true",1,"1","yes"]),t.exports.convertToFalse=new Set([!1,"false",0,"0","no"])},195:(t,e,r)=>{"use strict";var n=r(9373);t.exports=function(t){return null==t||""===t?null:t instanceof Date?(n.ok(!isNaN(t.valueOf())),t):(n.ok("boolean"!=typeof t),e=t instanceof Number||"number"==typeof t?new Date(t):"string"==typeof t&&!isNaN(Number(t))&&(Number(t)>=275761||Number(t)<-271820)?new Date(Number(t)):"function"==typeof t.valueOf?new Date(t.valueOf()):new Date(t),isNaN(e.valueOf())?void n.ok(!1):e);var e}},6209:(t,e,r)=>{"use strict";var n=r(365).lW;function o(t){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o(t)}var i=r(5003),s=r(9373);t.exports=function(t){return null==t?t:"object"===o(t)&&"string"==typeof t.$numberDecimal?i.fromString(t.$numberDecimal):t instanceof i?t:"string"==typeof t?i.fromString(t):n.isBuffer(t)?new i(t):"number"==typeof t?i.fromString(String(t)):"function"==typeof t.valueOf&&"string"==typeof t.valueOf()?i.fromString(t.valueOf()):void s.ok(!1)}},3065:(t,e,r)=>{"use strict";var n=r(9373);t.exports=function(t){return null==t?t:""===t?null:("string"!=typeof t&&"boolean"!=typeof t||(t=Number(t)),n.ok(!isNaN(t)),t instanceof Number?t.valueOf():"number"==typeof t?t:Array.isArray(t)||"function"!=typeof t.valueOf?t.toString&&!Array.isArray(t)&&t.toString()==Number(t)?Number(t):void n.ok(!1):Number(t.valueOf()))}},4731:(t,e,r)=>{"use strict";var n=r(1563),o=r(9906).get().ObjectId;t.exports=function(t){if(null==t)return t;if(n(t,"ObjectID"))return t;if(t._id){if(n(t._id,"ObjectID"))return t._id;if(t._id.toString instanceof Function)return new o(t._id.toString())}return t.toString instanceof Function?new o(t.toString()):new o(t)}},2417:(t,e,r)=>{"use strict";var n=r(1795);t.exports=function(t,e){if(null==t)return t;if(t._id&&"string"==typeof t._id)return t._id;if(t.toString&&t.toString!==Object.prototype.toString&&!Array.isArray(t))return t.toString();throw new n("string",t,e)}},8727:(t,e,r)=>{"use strict";function n(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function o(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return s=t.done,t},e:function(t){u=!0,i=t},f:function(){try{s||null==r.return||r.return()}finally{if(u)throw i}}}}function a(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r0&&(p=R(e),this.$__.selected=e,this.$__.exclude=p);var y=!1===p&&e?$(e):null;if(null==this._doc&&(this.$__buildDoc(t,e,r,p,y,!1),i&&j(this,e,p,y,!0,null)),t&&(this.$__original_set?this.$__original_set(t,void 0,!0,n):this.$set(t,void 0,!0,n),t instanceof it&&(this.$isNew=t.$isNew)),n.willInit&&i?n.skipDefaults&&(this.$__.skipDefaults=n.skipDefaults):i&&j(this,e,p,y,!1,n.skipDefaults),!this.$__.strictMode&&t){var d=this;Object.keys(this._doc).forEach(function(t){t in a.tree||t in a.methods||t in a.virtuals||t.startsWith("$")||P({prop:t,subprops:null,prototype:d})})}!function(t){var e=t.$__schema&&t.$__schema.callQueue;if(e.length){var r,n=s(e);try{for(n.s();!(r=n.n()).done;){var o=r.value;"pre"!==o[0]&&"post"!==o[0]&&"on"!==o[0]&&t[o[0]].apply(t,o[1])}}catch(t){n.e(t)}finally{n.f()}}}(this)}for(var st in it.prototype.$isMongooseDocumentPrototype=!0,Object.defineProperty(it.prototype,"isNew",{get:function(){return this.$isNew},set:function(t){this.$isNew=t}}),Object.defineProperty(it.prototype,"errors",{get:function(){return this.$errors},set:function(t){this.$errors=t}}),it.prototype.$isNew=!0,L.each(["on","once","emit","listeners","removeListener","setMaxListeners","removeAllListeners","addListener"],function(t){it.prototype[t]=function(){if(!this.$__.emitter){if("emit"===t)return;this.$__.emitter=new p,this.$__.emitter.setMaxListeners(0)}return this.$__.emitter[t].apply(this.$__.emitter,arguments)},it.prototype["$".concat(t)]=it.prototype[t]}),it.prototype.constructor=it,p.prototype)it[st]=p.prototype[st];function at(t,e,r){if(null!=t)for(var n=Object.keys(r.$__schema.paths),o=n.length,i=-1===e.indexOf(".")?[e]:e.split("."),s=0;s1&&this.$set(e),!this.$populated(t))throw new y('Expected path "'.concat(t,'" to be populated'));return this},it.prototype.depopulate=function(t){var e;"string"==typeof t&&(t=-1===t.indexOf(" ")?[t]:t.split(" "));var r=this.$$populatedVirtuals?Object.keys(this.$$populatedVirtuals):[],n=this.$__&&this.$__.populated||{};if(0===arguments.length){var o,i=s(r);try{for(i.s();!(o=i.n()).done;){var a=o.value;delete this.$$populatedVirtuals[a],delete this._doc[a],delete n[a]}}catch(t){i.e(t)}finally{i.f()}for(var u=0,c=Object.keys(n);u{"use strict";var n=r(8727),o=r(3434),i=!1;t.exports=function(){return i?o:n},t.exports.setBrowser=function(t){i=t}},9906:t=>{"use strict";var e=null;t.exports.get=function(){return e},t.exports.set=function(t){e=t}},5427:t=>{"use strict";t.exports=function(){}},655:(t,e,r)=>{"use strict";var n=r(3873).Kb;t.exports=n},4267:(t,e,r)=>{"use strict";t.exports=r(3873).Decimal128},6333:(t,e,r)=>{"use strict";e.Binary=r(655),e.Collection=function(){throw new Error("Cannot create a collection from browser library")},e.getConnection=function(){return function(){throw new Error("Cannot create a connection from browser library")}},e.Decimal128=r(4267),e.ObjectId=r(7906),e.ReadPreference=r(5427)},7906:(t,e,r)=>{"use strict";var n=r(3873).t4;Object.defineProperty(n.prototype,"_id",{enumerable:!1,configurable:!0,get:function(){return this}}),t.exports=n},1795:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(t,e){for(var r=0;r0){var c=y(r),f=d(r);(u=s(this,e,[v(null,t,c,n,m(i),f,o)])).init(t,r,n,o,i)}else u=s(this,e,[v()]);return a(u)}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&f(t,e)}(e,t),r=e,(n=[{key:"toJSON",value:function(){return{stringValue:this.stringValue,valueType:this.valueType,kind:this.kind,value:this.value,path:this.path,reason:this.reason,name:this.name,message:this.message}}},{key:"init",value:function(t,e,r,n,o){this.stringValue=y(e),this.messageFormat=m(o),this.kind=t,this.value=e,this.path=r,this.reason=n,this.valueType=d(e)}},{key:"copy",value:function(t){this.messageFormat=t.messageFormat,this.stringValue=t.stringValue,this.kind=t.kind,this.value=t.value,this.path=t.path,this.reason=t.reason,this.message=t.message,this.valueType=t.valueType}},{key:"setModel",value:function(t){this.model=t,this.message=v(t,this.kind,this.stringValue,this.path,this.messageFormat,this.valueType)}}])&&o(r.prototype,n),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n}(l);function y(t){var e=p.inspect(t);return(e=e.replace(/^'|'$/g,'"')).startsWith('"')||(e='"'+e+'"'),e}function d(t){if(null==t)return""+t;var e=n(t);return"object"!==e||"function"!=typeof t.constructor?e:t.constructor.name}function m(t){var e=t&&t.options&&t.options.cast||null;if("string"==typeof e)return e}function v(t,e,r,n,o,i,s){if(null!=o){var a=o.replace("{KIND}",e).replace("{VALUE}",r).replace("{PATH}",n);return null!=t&&(a=a.replace("{MODEL}",t.modelName)),a}var u="Cast to "+e+" failed for value "+r+(i?" (type "+i+")":"")+' at path "'+n+'"';return null!=t&&(u+=' for model "'+t.modelName+'"'),null!=s&&"function"==typeof s.constructor&&"AssertionError"!==s.constructor.name&&"Error"!==s.constructor.name&&(u+=' because of "'+s.constructor.name+'"'),u}Object.defineProperty(h.prototype,"name",{value:"CastError"}),t.exports=h},6067:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(o=function(){return!!t})()}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}function s(t,e){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},s(t,e)}var a=function(t){function e(t){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e,r){return e=i(e),function(t,e){if(e&&("object"==n(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,o()?Reflect.construct(e,r||[],i(t).constructor):e.apply(t,r))}(this,e,["For your own good, using `document.save()` to update an array which was selected using an $elemMatch projection OR populated using skip, limit, query conditions, or exclusion of the _id field when the operation results in a $pop or $set of the entire array is not supported. The following path(s) would have been modified unsafely:\n "+t.join("\n ")+"\nUse Model.update() to update these arrays instead."])}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&s(t,e)}(e,t),r=e,Object.defineProperty(r,"prototype",{writable:!1}),r;var r}(r(4888));Object.defineProperty(a.prototype,"name",{value:"DivergentArrayError"}),t.exports=a},4888:(t,e,r)=>{"use strict";var n=r(5202);t.exports=n,n.messages=r(983),n.Messages=n.messages,n.DocumentNotFoundError=r(3640),n.CastError=r(1795),n.ValidationError=r(122),n.ValidatorError=r(2037),n.VersionError=r(8809),n.ParallelSaveError=r(5007),n.OverwriteModelError=r(5676),n.MissingSchemaError=r(1511),n.MongooseServerSelectionError=r(1870),n.DivergentArrayError=r(6067),n.StrictModeError=r(3328),n.StrictPopulateError=r(4001)},983:(t,e)=>{"use strict";var r=t.exports={};r.DocumentNotFoundError=null,r.general={},r.general.default="Validator failed for path `{PATH}` with value `{VALUE}`",r.general.required="Path `{PATH}` is required.",r.Number={},r.Number.min="Path `{PATH}` ({VALUE}) is less than minimum allowed value ({MIN}).",r.Number.max="Path `{PATH}` ({VALUE}) is more than maximum allowed value ({MAX}).",r.Number.enum="`{VALUE}` is not a valid enum value for path `{PATH}`.",r.Date={},r.Date.min="Path `{PATH}` ({VALUE}) is before minimum allowed value ({MIN}).",r.Date.max="Path `{PATH}` ({VALUE}) is after maximum allowed value ({MAX}).",r.String={},r.String.enum="`{VALUE}` is not a valid enum value for path `{PATH}`.",r.String.match="Path `{PATH}` is invalid ({VALUE}).",r.String.minlength="Path `{PATH}` (`{VALUE}`) is shorter than the minimum allowed length ({MINLENGTH}).",r.String.maxlength="Path `{PATH}` (`{VALUE}`) is longer than the maximum allowed length ({MAXLENGTH})."},1511:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(o=function(){return!!t})()}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}function s(t,e){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},s(t,e)}var a=function(t){function e(t){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e,r){return e=i(e),function(t,e){if(e&&("object"==n(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,o()?Reflect.construct(e,r||[],i(t).constructor):e.apply(t,r))}(this,e,["Schema hasn't been registered for model \""+t+'".\nUse mongoose.model(name, schema)'])}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&s(t,e)}(e,t),r=e,Object.defineProperty(r,"prototype",{writable:!1}),r;var r}(r(4888));Object.defineProperty(a.prototype,"name",{value:"MissingSchemaError"}),t.exports=a},5202:t=>{"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}function r(t){var e="function"==typeof Map?new Map:void 0;return r=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,r)}function r(){return function(t,e,r){if(n())return Reflect.construct.apply(null,arguments);var i=[null];i.push.apply(i,e);var s=new(t.bind.apply(t,i));return r&&o(s,r.prototype),s}(t,arguments,i(this).constructor)}return r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),o(r,t)},r(t)}function n(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(n=function(){return!!t})()}function o(t,e){return o=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},o(t,e)}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}var s=function(t){function r(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,r),function(t,r,o){return r=i(r),function(t,r){if(r&&("object"==e(r)||"function"==typeof r))return r;if(void 0!==r)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,n()?Reflect.construct(r,o||[],i(t).constructor):r.apply(t,o))}(this,r,arguments)}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&o(t,e)}(r,t),s=r,Object.defineProperty(s,"prototype",{writable:!1}),s;var s}(r(Error));Object.defineProperty(s.prototype,"name",{value:"MongooseError"}),t.exports=s},3640:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(o=function(){return!!t})()}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}function s(t,e){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},s(t,e)}var a=r(4888),u=r(8751),c=function(t){function e(t,r,s,c){var f;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var l=a.messages;return(f=function(t,e,r){return e=i(e),function(t,e){if(e&&("object"==n(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,o()?Reflect.construct(e,r||[],i(t).constructor):e.apply(t,r))}(this,e,[null!=l.DocumentNotFoundError?"function"==typeof l.DocumentNotFoundError?l.DocumentNotFoundError(t,r):l.DocumentNotFoundError:'No document found for query "'+u.inspect(t)+'" on model "'+r+'"'])).result=c,f.numAffected=s,f.filter=t,f.query=t,f}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&s(t,e)}(e,t),r=e,Object.defineProperty(r,"prototype",{writable:!1}),r;var r}(a);Object.defineProperty(c.prototype,"name",{value:"DocumentNotFoundError"}),t.exports=c},4107:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(o=function(){return!!t})()}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}function s(t,e){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},s(t,e)}var a=function(t){function e(t,r){var s;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var a=Array.isArray(r)?"array":"primitive value";return(s=function(t,e,r){return e=i(e),function(t,e){if(e&&("object"==n(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,o()?Reflect.construct(e,r||[],i(t).constructor):e.apply(t,r))}(this,e,["Tried to set nested object field `"+t+"` to ".concat(a," `")+r+"`"])).path=t,s}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&s(t,e)}(e,t),r=e,Object.defineProperty(r,"prototype",{writable:!1}),r;var r}(r(4888));Object.defineProperty(a.prototype,"name",{value:"ObjectExpectedError"}),t.exports=a},900:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(o=function(){return!!t})()}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}function s(t,e){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},s(t,e)}var a=function(t){function e(t,r,s){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e,r){return e=i(e),function(t,e){if(e&&("object"==n(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,o()?Reflect.construct(e,r||[],i(t).constructor):e.apply(t,r))}(this,e,['Parameter "'+r+'" to '+s+'() must be an object, got "'+t.toString()+'" (type '+n(t)+")"])}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&s(t,e)}(e,t),r=e,Object.defineProperty(r,"prototype",{writable:!1}),r;var r}(r(4888));Object.defineProperty(a.prototype,"name",{value:"ObjectParameterError"}),t.exports=a},5676:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(o=function(){return!!t})()}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}function s(t,e){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},s(t,e)}var a=function(t){function e(t){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e,r){return e=i(e),function(t,e){if(e&&("object"==n(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,o()?Reflect.construct(e,r||[],i(t).constructor):e.apply(t,r))}(this,e,["Cannot overwrite `"+t+"` model once compiled."])}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&s(t,e)}(e,t),r=e,Object.defineProperty(r,"prototype",{writable:!1}),r;var r}(r(4888));Object.defineProperty(a.prototype,"name",{value:"OverwriteModelError"}),t.exports=a},5007:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(o=function(){return!!t})()}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}function s(t,e){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},s(t,e)}var a=function(t){function e(t){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e,r){return e=i(e),function(t,e){if(e&&("object"==n(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,o()?Reflect.construct(e,r||[],i(t).constructor):e.apply(t,r))}(this,e,["Can't save() the same doc multiple times in parallel. Document: "+t._id])}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&s(t,e)}(e,t),r=e,Object.defineProperty(r,"prototype",{writable:!1}),r;var r}(r(4888));Object.defineProperty(a.prototype,"name",{value:"ParallelSaveError"}),t.exports=a},7962:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(o=function(){return!!t})()}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}function s(t,e){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},s(t,e)}var a=function(t){function e(t){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e,r){return e=i(e),function(t,e){if(e&&("object"==n(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,o()?Reflect.construct(e,r||[],i(t).constructor):e.apply(t,r))}(this,e,["Can't validate() the same doc multiple times in parallel. Document: "+t._id])}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&s(t,e)}(e,t),r=e,Object.defineProperty(r,"prototype",{writable:!1}),r;var r}(r(5202));Object.defineProperty(a.prototype,"name",{value:"ParallelValidateError"}),t.exports=a},1870:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(t,e){for(var r=0;r{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(o=function(){return!!t})()}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}function s(t,e){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},s(t,e)}var a=function(t){function e(t,r,s){var a;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),(a=function(t,e,r){return e=i(e),function(t,e){if(e&&("object"==n(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,o()?Reflect.construct(e,r||[],i(t).constructor):e.apply(t,r))}(this,e,[r=r||"Field `"+t+"` is not in schema and strict mode is set to throw."])).isImmutableError=!!s,a.path=t,a}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&s(t,e)}(e,t),r=e,Object.defineProperty(r,"prototype",{writable:!1}),r;var r}(r(4888));Object.defineProperty(a.prototype,"name",{value:"StrictModeError"}),t.exports=a},4001:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(o=function(){return!!t})()}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}function s(t,e){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},s(t,e)}var a=function(t){function e(t,r){var s;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),(s=function(t,e,r){return e=i(e),function(t,e){if(e&&("object"==n(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,o()?Reflect.construct(e,r||[],i(t).constructor):e.apply(t,r))}(this,e,[r=r||"Cannot populate path `"+t+"` because it is not in your schema. Set the `strictPopulate` option to false to override."])).path=t,s}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&s(t,e)}(e,t),r=e,Object.defineProperty(r,"prototype",{writable:!1}),r;var r}(r(4888));Object.defineProperty(a.prototype,"name",{value:"StrictPopulateError"}),t.exports=a},122:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(t,e){for(var r=0;r{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(t,e){for(var r=0;r{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(o=function(){return!!t})()}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}function s(t,e){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},s(t,e)}var a=function(t){function e(t,r,s){var a;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var u=s.join(", ");return(a=function(t,e,r){return e=i(e),function(t,e){if(e&&("object"==n(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,o()?Reflect.construct(e,r||[],i(t).constructor):e.apply(t,r))}(this,e,['No matching document found for id "'+t._id+'" version '+r+' modifiedPaths "'+u+'"'])).version=r,a.modifiedPaths=s,a}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&s(t,e)}(e,t),r=e,Object.defineProperty(r,"prototype",{writable:!1}),r;var r}(r(4888));Object.defineProperty(a.prototype,"name",{value:"VersionError"}),t.exports=a},6069:t=>{"use strict";t.exports=function t(e){if(!Array.isArray(e))return{min:0,max:0,containsNonArrayItem:!0};if(0===e.length)return{min:1,max:1,containsNonArrayItem:!1};if(1===e.length&&!Array.isArray(e[0]))return{min:1,max:1,containsNonArrayItem:!1};for(var r=t(e[0]),n=1;nr.max&&(r.max=o.max),r.containsNonArrayItem=r.containsNonArrayItem||o.containsNonArrayItem}return r.min=r.min+1,r.max=r.max+1,r}},1973:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}var o=r(5003),i=r(6079),s=r(2862),a=r(6584),u=r(6749),c=r(1563),f=r(5721),l=r(8770),p=r(3636).trustedSymbol,h=r(6872);function y(t,e,r){if(null==t)return t;if(Array.isArray(t))return function(t,e){var r=0,n=t.length,o=new Array(n);for(r=0;r{"use strict";var n=r(365).lW;function o(t){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o(t)}var i=r(9906).get().Binary,s=r(1563),a=r(6584);r(4888),r(8751);function u(t){return t&&"object"===o(t)&&!(t instanceof Date)&&!s(t,"ObjectID")&&(!Array.isArray(t)||0!==t.length)&&!(t instanceof n)&&!s(t,"Decimal128")&&!(t instanceof i)}e.x=function t(e,r,o,i){var s,c=(s=e&&a(e)&&!n.isBuffer(e)?Object.keys(e.toObject({transform:!1,virtuals:!1})||{}):Object.keys(e||{})).length,f={};r=r?r+".":"";for(var l=0;l{"use strict";var n=r(1563);t.exports=function(t,e){return"string"==typeof t&&"string"==typeof e||"number"==typeof t&&"number"==typeof e?t===e:!(!n(t,"ObjectID")||!n(e,"ObjectID"))&&t.toString()===e.toString()}},4531:t=>{"use strict";t.exports=function(t,e,r,n,o){var i=Object.keys(t).reduce(function(t,r){return t||r.startsWith(e+".")},!1),s=e+"."+r.options.discriminatorKey;i||1!==o.length||o[0]!==s||n.splice(n.indexOf(s),1)}},8413:(t,e,r)=>{"use strict";var n=r(7291);t.exports=function(t,e){var r=t.schema.options.discriminatorKey;if(null!=e&&t.discriminators&&null!=e[r])if(t.discriminators[e[r]])t=t.discriminators[e[r]];else{var o=n(t.discriminators,e[r]);o&&(t=o)}return t}},7291:(t,e,r)=>{"use strict";var n=r(2794);t.exports=function(t,e){if(null==t)return null;for(var r=0,o=Object.keys(t);r{"use strict";var n=r(2794);t.exports=function(t,e){if(null==t||null==t.discriminators)return null;for(var r=0,o=Object.keys(t.discriminators);r{"use strict";var n=r(4913),o=r(2862),i=r(1563),s=r(6079),a=r(5721);t.exports=function t(e,r,u){var c,f=Object.keys(r),l=0,p=f.length;for(u=u||"";l{"use strict";var n=r(3087);function o(t,e){t.$__.activePaths.default(e),t.$isSubdocument&&t.$isSingleNested&&null!=t.$parent()&&t.$parent().$__.activePaths.default(t.$__pathRelativeToParent(e))}t.exports=function(t,e,r,i,s,a){for(var u=Object.keys(t.$__schema.paths),c=u.length,f=0;f{"use strict";t.exports=function(t,e,r){var n=(r=r||{}).skipDocArrays,o=0;if(!t)return o;for(var i=0,s=Object.keys(t.$__.activePaths.getStatePaths("modify"));i{"use strict";var n,o=r(8770).documentSchemaSymbol,i=r(4962).h,s=r(6872),a=r(8770).getSymbol,u=r(8770).scopeSymbol,c=s.isPOJO;e.M=p,e.c=h;var f=Object.freeze({minimize:!0,virtuals:!1,getters:!1,transform:!1}),l=Object.freeze({noDottedPath:!0});function p(t,e,o,i){n=n||r(8727);for(var s=i.typeKey,a=0,u=Object.keys(t);a0&&(!l[s]||"type"===s&&c(l.type)&&l.type.type)?l:null,prototype:e,prefix:o,options:i})}}function h(t){var e=t.prop,c=t.subprops,h=t.prototype,y=t.prefix,d=t.options;n=n||r(8727);var m=(y?y+".":"")+e,v=(y=y||"")?Object.freeze({}):l;c?Object.defineProperty(h,e,{enumerable:!0,configurable:!0,get:function(){var t,e,r=this;if(this.$__.getters||(this.$__.getters={}),!this.$__.getters[m]){var i=Object.create(n.prototype,(t=this,e={},Object.getOwnPropertyNames(t).forEach(function(r){-1===["isNew","$__","$errors","errors","_doc","$locals","$op","__parentArray","__index","$isDocumentArrayElement"].indexOf(r)||(e[r]=Object.getOwnPropertyDescriptor(t,r),e[r].enumerable=!1)}),e));y||(i.$__[u]=this),i.$__.nestedPath=m,Object.defineProperty(i,"schema",{enumerable:!1,configurable:!0,writable:!1,value:h.schema}),Object.defineProperty(i,"$__schema",{enumerable:!1,configurable:!0,writable:!1,value:h.schema}),Object.defineProperty(i,o,{enumerable:!1,configurable:!0,writable:!1,value:h.schema}),Object.defineProperty(i,"toObject",{enumerable:!1,configurable:!0,writable:!1,value:function(){return s.clone(r.get(m,null,{virtuals:this&&this.schema&&this.schema.options&&this.schema.options.toObject&&this.schema.options.toObject.virtuals||null}))}}),Object.defineProperty(i,"$__get",{enumerable:!1,configurable:!0,writable:!1,value:function(){return r.get(m,null,{virtuals:this&&this.schema&&this.schema.options&&this.schema.options.toObject&&this.schema.options.toObject.virtuals||null})}}),Object.defineProperty(i,"toJSON",{enumerable:!1,configurable:!0,writable:!1,value:function(){return r.get(m,null,{virtuals:this&&this.schema&&this.schema.options&&this.schema.options.toJSON&&this.schema.options.toJSON.virtuals||null})}}),Object.defineProperty(i,"$__isNested",{enumerable:!1,configurable:!0,writable:!1,value:!0}),Object.defineProperty(i,"$isEmpty",{enumerable:!1,configurable:!0,writable:!1,value:function(){return 0===Object.keys(this.get(m,null,f)||{}).length}}),Object.defineProperty(i,"$__parent",{enumerable:!1,configurable:!0,writable:!1,value:this}),p(c,i,m,d),this.$__.getters[m]=i}return this.$__.getters[m]},set:function(t){null!=t&&t.$__isNested?t=t.$__get():t instanceof n&&!t.$__isNested&&(t=t.$toObject(i)),(this.$__[u]||this).$set(m,t)}}):Object.defineProperty(h,e,{enumerable:!0,configurable:!0,get:function(){return this[a].call(this.$__[u]||this,m,null,v)},set:function(t){this.$set.call(this.$__[u]||this,m,t)}})}},111:(t,e,r)=>{"use strict";var n=r(9981),o=r(2392);t.exports=function t(e,r,i){for(var s=(i=i||{}).typeOnly,a=-1===r.indexOf(".")?[r]:r.split("."),u=null,c="adhocOrUndefined",f=o(e.schema,e.get(e.schema.options.discriminatorKey))||e.schema,l=0;l{"use strict";function n(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function o(t){for(var e=1;e{"use strict";function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r=t.length?{done:!0}:{done:!1,value:t[o++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,u=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){u=!0,s=t},f:function(){try{a||null==n.return||n.return()}finally{if(u)throw s}}}}(t);try{for(a.s();!(o=a.n()).done;)r(o.value,function(t){if(null==s)return null!=t?n(s=t):--i<=0?n():void 0})}catch(s){a.e(s)}finally{a.f()}}},198:t=>{"use strict";t.exports=function(t){for(var e,r=Object.keys(t.errors||{}),n=r.length,o=[],i=0;i{"use strict";function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r=t.length?{done:!0}:{done:!1,value:t[o++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,u=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){u=!0,s=t},f:function(){try{a||null==n.return||n.return()}finally{if(u)throw s}}}}(i);try{for(p.s();!(c=p.n()).done;){var h=c.value;if(null==l)return o;if(!s&&null!=l[f])return l[f];l=r(l,h),s||(f=f.substr(h.length+1))}}catch(t){p.e(t)}finally{p.f()}return null==l?o:l}},1981:t=>{"use strict";t.exports=function(t){if(null!=t&&"function"==typeof t.constructor)return t.constructor.name}},6749:t=>{"use strict";var e=/^function\s*([^\s(]+)/;t.exports=function(t){return t.name||(t.toString().trim().match(e)||[])[1]}},1490:t=>{"use strict";var e="function"==typeof{env:{}}.nextTick?{env:{}}.nextTick.bind({env:{}}):function(t){return setTimeout(t,0)};t.exports=function(t){return e(t)}},1605:t=>{"use strict";t.exports=function(t,e){var r=t.discriminatorMapping&&t.discriminatorMapping.value;if(r&&!("sparse"in e)){var n=t.options.discriminatorKey;e.partialFilterExpression=e.partialFilterExpression||{},e.partialFilterExpression[n]=r}return e}},8857:t=>{"use strict";t.exports=function(t){return"function"==typeof t&&t.constructor&&"AsyncFunction"===t.constructor.name}},1563:t=>{"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}t.exports=function(t,r){return"object"===e(t)&&null!==t&&t._bsontype===r}},6584:(t,e,r)=>{"use strict";var n=r(7339).isMongooseArray;t.exports=function(t){return null!=t&&(n(t)||null!=t.$__||t.isMongooseBuffer||t.$isMongooseMap)}},5721:(t,e,r)=>{"use strict";var n=r(365).lW;t.exports=function(t){return n.isBuffer(t)||"[object Object]"===Object.prototype.toString.call(t)}},5543:t=>{"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}t.exports=function(t){return!!t&&("object"===e(t)||"function"==typeof t)&&"function"==typeof t.then}},9130:t=>{"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}t.exports=function(t){for(var r=Object.keys(t),n=!0,o=0,i=r.length;o{"use strict";var n=r(8107),o=r(8486);t.exports=s,s.middlewareFunctions=["deleteOne","save","validate","remove","updateOne","init"];var i=new Set(s.middlewareFunctions.flatMap(function(t){return[t,"$__".concat(t)]}));function s(t,e,r){var a={useErrorHandlers:!0,numCallbackParams:1,nullResultByDefault:!0,contextParameter:!0},u=(r=r||{}).decorateDoc?t:t.prototype;t.$appliedHooks=!0;for(var c=0,f=Object.keys(e.paths);c{"use strict";function n(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return o(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,s=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw s}}}}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r{"use strict";var e=/\./g;t.exports=function(t){if(-1===t.indexOf("."))return[t];for(var r=t.split(e),n=r.length,o=new Array(n),i="",s=0;s{"use strict";function n(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r=t.length?{done:!0}:{done:!1,value:t[o++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,s=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw s}}}}(e);try{for(s.s();!(r=s.n()).done;){var a=r.value;if(!a.isVirtual)for(var u=a.path.split("."),c=0;c{"use strict";var n=r(5202),o=r(8751);t.exports=function(t,e){if("string"!=typeof t&&"function"!=typeof t)throw new n('Invalid ref at path "'+e+'". Got '+o.inspect(t,{depth:0}))}},7427:t=>{"use strict";t.exports=function(t){for(var e={},r=0,n=Object.keys(t);r{"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}t.exports=function(t){return null==t||"object"!==e(t)||!("$meta"in t)&&!("$slice"in t)}},9098:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}var o=r(2183);t.exports=function t(e){if(null==e)return null;var r=Object.keys(e),i=r.length,s=null;if(1===i&&"_id"===r[0])s=!e._id;else for(;i--;){var a=r[i];if("_id"!==a&&o(e[a])){s=null!=e[a]&&"object"===n(e[a])?t(e[a]):!e[a];break}}return s}},3087:t=>{"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}t.exports=function(t){return null!=t&&"object"===e(t)&&null==t.$slice&&null==t.$elemMatch&&null==t.$meta&&null==t.$}},8486:(t,e,r)=>{"use strict";var n=r(6755),o=r(1490),i=Symbol("mongoose:emitted");t.exports=function(t,e,r,s){if("function"==typeof t)try{return e(function(e){if(null==e)t.apply(this,arguments);else{null!=r&&null!=r.listeners&&r.listeners("error").length>0&&!e[i]&&(e[i]=!0,r.emit("error",e));try{t(e)}catch(e){return o(function(){throw e})}}})}catch(e){return null!=r&&null!=r.listeners&&r.listeners("error").length>0&&!e[i]&&(e[i]=!0,r.emit("error",e)),t(e)}return new(s=s||n.get())(function(t,n){e(function(e,o){return null!=e?(null!=r&&null!=r.listeners&&r.listeners("error").length>0&&!e[i]&&(e[i]=!0,r.emit("error",e)),n(e)):arguments.length>2?t(Array.prototype.slice.call(arguments,1)):void t(o)})})}},5130:(t,e,r)=>{"use strict";t.exports=o;var n=r(9853);function o(t,e){var r={useErrorHandlers:!0,numCallbackParams:1,nullResultByDefault:!0},n=e.hooks.filter(function(t){var e=function(t){var e={};return t.hasOwnProperty("query")&&(e.query=t.query),t.hasOwnProperty("document")&&(e.document=t.document),e}(t);return"updateOne"===t.name?null==e.query||!!e.query:"deleteOne"===t.name?!!e.query||0===Object.keys(e).length:"validate"===t.name||"remove"===t.name?!!e.query:null==t.query&&null==t.document||!!t.query});t.prototype._execUpdate=n.createWrapper("update",t.prototype._execUpdate,null,r),t.prototype.__distinct=n.createWrapper("distinct",t.prototype.__distinct,null,r),t.prototype.validate=n.createWrapper("validate",t.prototype.validate,null,r),o.middlewareFunctions.filter(function(t){return"update"!==t&&"distinct"!==t&&"validate"!==t}).forEach(function(e){t.prototype["_".concat(e)]=n.createWrapper(e,t.prototype["_".concat(e)],null,r)})}o.middlewareFunctions=n.concat(["validate"])},9739:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}var o=r(1795),i=r(3328),s=r(3065),a=new Set(["$and","$or"]),u=new Set(["$cmp","$eq","$lt","$lte","$gt","$gte"]),c=new Set(["$multiply","$divide","$log","$mod","$trunc","$avg","$max","$min","$stdDevPop","$stdDevSamp","$sum"]),f=new Set(["$abs","$exp","$ceil","$floor","$ln","$log10","$round","$sqrt","$sin","$cos","$tan","$asin","$acos","$atan","$atan2","$asinh","$acosh","$atanh","$sinh","$cosh","$tanh","$degreesToRadians","$radiansToDegrees"]),l=new Set(["$arrayElemAt","$first","$last"]),p=new Set(["$year","$month","$week","$dayOfMonth","$dayOfYear","$hour","$minute","$second","$isoDayOfWeek","$isoWeekYear","$isoWeek","$millisecond"]),h=new Set(["$not"]);function y(t,e,r){if(b(t)||null===t)return t;null!=t.$cond?Array.isArray(t.$cond)?t.$cond=t.$cond.map(function(t){return y(t,e,r)}):(t.$cond.if=y(t.$cond.if,e,r),t.$cond.then=y(t.$cond.then,e,r),t.$cond.else=y(t.$cond.else,e,r)):null!=t.$ifNull?t.$ifNull.map(function(t){return y(t,e,r)}):null!=t.$switch&&(t.branches.map(function(t){return y(t,e,r)}),t.default=y(t.default,e,r));for(var n=0,o=Object.keys(t);n{"use strict";var e=new Set(["$ref","$id","$db"]);t.exports=function(t){return"$"===t[0]&&!e.has(t)}},3636:(t,e)=>{"use strict";function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}var n=Symbol("mongoose#trustedSymbol");e.trustedSymbol=n,e.trusted=function(t){return null==t||"object"!==r(t)&&"function"!=typeof t||(t[n]=!0),t}},9853:t=>{"use strict";t.exports=Object.freeze(["count","countDocuments","distinct","estimatedDocumentCount","find","findOne","findOneAndReplace","findOneAndUpdate","replaceOne","update","updateMany","updateOne","deleteMany","deleteOne","findOneAndDelete","findOneAndRemove","remove"])},4133:t=>{"use strict";t.exports=function(t){var e={_id:{auto:!0}};e._id[t.options.typeKey]="ObjectId",t.add(e)}},6956:(t,e,r)=>{"use strict";var n=r(4292);t.exports=function(t){for(var e=0,r=Object.values(n);e{"use strict";t.exports=function(t){return t.replace(/\.\$(\[[^\]]*\])?(?=\.)/g,".0").replace(/\.\$(\[[^\]]*\])?$/g,".0")}},5379:(t,e,r)=>{"use strict";var n=r(9981),o=r(5721),i=r(1605);t.exports=function(t){var e=[],r=new WeakMap,s=t.constructor.indexTypes,a=new Map;return function t(u,c,f){if(!r.has(u)){r.set(u,!0),c=c||"";for(var l=0,p=Object.keys(u.paths);l{"use strict";function n(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return o(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,s=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw s}}}}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r1){o=new Set;var u,c=n(s);try{for(c.s();!(u=c.n()).done;){var f=u.value;a.has(f)&&o.add(f)}}catch(t){c.e(t)}finally{c.f()}var l,p=n(a);try{for(p.s();!(l=p.n()).done;){var h=l.value;o.has(h)||o.add(h)}}catch(t){p.e(t)}finally{p.f()}o=Array.from(o)}else o=Array.from(a);return o}},9691:(t,e,r)=>{"use strict";var n=r(4133);t.exports=function(t,e){return null==e||null==e._id||(t=t.clone(),e._id?t.paths._id||(n(t),t.options._id=!0):(t.remove("_id"),t.options._id=!1)),t}},6370:t=>{"use strict";t.exports=function(t,e){return null==t?null:"boolean"==typeof t?e:"boolean"==typeof t[e]?t[e]?e:null:e in t?t[e]:e}},1879:t=>{"use strict";function e(){return null!=this._id?String(this._id):null}t.exports=function(t){return!t.paths.id&&t.paths._id&&t.options.id?(t.virtual("id").get(e),t):t}},4913:t=>{"use strict";t.exports=function(t,e,r){for(var n={},o=0,i=Object.keys(e.tree);o{"use strict";var n=r(3328);t.exports=function(t){var e,r;t.$immutable?(t.$immutableSetter=(e=t.path,r=t.options.immutable,function(t,o,i,s){if(null==this||null==this.$__)return t;if(this.isNew)return t;if(s&&s.overwriteImmutable)return t;if(!("function"==typeof r?r.call(this,this):r))return t;var a=null!=this.$__.priorDoc?this.$__.priorDoc.$__getValue(e):this.$__getValue(e);if("throw"===this.$__.strictMode&&t!==a)throw new n(e,"Path `"+e+"` is immutable and strict mode is set to throw.",!0);return a}),t.set(t.$immutableSetter)):t.$immutableSetter&&(t.setters=t.setters.filter(function(e){return e!==t.$immutableSetter}),delete t.$immutableSetter)}},2862:t=>{"use strict";t.exports=new Set(["__proto__","constructor","prototype"])},8770:(t,e)=>{"use strict";e.arrayAtomicsBackupSymbol=Symbol("mongoose#Array#atomicsBackup"),e.arrayAtomicsSymbol=Symbol("mongoose#Array#_atomics"),e.arrayParentSymbol=Symbol("mongoose#Array#_parent"),e.arrayPathSymbol=Symbol("mongoose#Array#_path"),e.arraySchemaSymbol=Symbol("mongoose#Array#_schema"),e.documentArrayParent=Symbol("mongoose:documentArrayParent"),e.documentIsSelected=Symbol("mongoose#Document#isSelected"),e.documentIsModified=Symbol("mongoose#Document#isModified"),e.documentModifiedPaths=Symbol("mongoose#Document#modifiedPaths"),e.documentSchemaSymbol=Symbol("mongoose#Document#schema"),e.getSymbol=Symbol("mongoose#Document#get"),e.modelSymbol=Symbol("mongoose#Model"),e.objectIdSymbol=Symbol("mongoose#ObjectId"),e.populateModelSymbol=Symbol("mongoose.PopulateOptions#Model"),e.schemaTypeSymbol=Symbol("mongoose#schemaType"),e.sessionNewDocuments=Symbol("mongoose:ClientSession#newDocuments"),e.scopeSymbol=Symbol("mongoose#Document#scope"),e.validatorErrorSymbol=Symbol("mongoose:validatorError")},4922:t=>{"use strict";t.exports=function(t,e,r,n,o){var i=null!=e&&!1===e.updatedAt,s=null!=e&&!1===e.createdAt,a=null!=r?r():t.ownerDocument().constructor.base.now();if(!s&&(t.isNew||t.$isSubdocument)&&n&&!t.$__getValue(n)&&t.$__isSelected(n)&&t.$set(n,a,void 0,{overwriteImmutable:!0}),!i&&o&&(t.isNew||t.$isModified())){var u=a;t.isNew&&null!=n&&(u=t.$__getValue(n)),t.$set(o,u)}}},3767:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,s=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw s}}}}(this.$getAllSubdocs());try{for(r.s();!(e=r.n()).done;){var i=e.value;i.initializeTimestamps&&i.initializeTimestamps()}}catch(t){r.e(t)}finally{r.f()}return this},b[l.builtInMiddleware]=!0;var v={query:!0,model:!1};t.pre("findOneAndReplace",v,b),t.pre("findOneAndUpdate",v,b),t.pre("replaceOne",v,b),t.pre("update",v,b),t.pre("updateOne",v,b),t.pre("updateMany",v,b)}function b(t){var e=null!=h?h():this.model.base.now();"findOneAndReplace"===this.op&&null==this.getUpdate()&&this.setUpdate({}),a(e,n,p,this.getUpdate(),this.options,this.schema),s(e,this.getUpdate(),this.model.schema),t()}}},5285:(t,e,r)=>{"use strict";var n=r(1981);t.exports=function(t){if("TopologyDescription"!==n(t))return!1;var e=Array.from(t.servers.values());return e.length>0&&e.every(function(t){return"Unknown"===t.type})}},2082:(t,e,r)=>{"use strict";function n(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r=t.length?{done:!0}:{done:!1,value:t[o++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,s=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw s}}}}(t.servers.values());try{for(r.s();!(e=r.n()).done;){var i=e.value;if(!1===i.host.endsWith(".mongodb.net")||27017!==i.port)return!1}}catch(t){r.e(t)}finally{r.f()}return!0}},3871:(t,e,r)=>{"use strict";var n=r(1981);t.exports=function(t){if("TopologyDescription"!==n(t))return!1;var e=Array.from(t.servers.values());return e.length>0&&e.every(function(t){return t.error&&-1!==t.error.message.indexOf("Client network socket disconnected before secure TLS connection was established")})}},4843:(t,e,r)=>{"use strict";function n(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return o(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,s=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw s}}}}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r0;--p){var h=t.path(l.slice(0,p).join("."));null!=h&&(h.$isMongooseDocumentArray||h.$isSingleNested)&&f.push({parentPath:e.split(".").slice(0,p).join("."),parentSchemaType:h})}if(Array.isArray(r[e])&&c.$isMongooseDocumentArray)!function(t,e,r){var n=e.schema.options.timestamps,o=t.length;if(n)for(var i=s(n,"createdAt"),u=s(n,"updatedAt"),c=0;c0){var y,d=n(f);try{for(d.s();!(y=d.n()).done;){var m=y.value,v=m.parentPath,b=m.parentSchemaType,g=b.schema.options.timestamps,_=s(g,"updatedAt");if(g&&null!=_)if(b.$isSingleNested)r[v+"."+_]=o;else if(b.$isMongooseDocumentArray){var w=e.substring(v.length+1);if(/^\d+$/.test(w)){r[v+"."+w][_]=o;continue}var O=w.indexOf(".");r[v+"."+(w=-1!==O?w.substring(0,O):w)+"."+_]=o}}}catch(t){d.e(t)}finally{d.f()}}else if(null!=c.schema&&c.schema!=t&&r[e]){var $=c.schema.options.timestamps,S=s($,"createdAt"),j=s($,"updatedAt");if(!$)return;null!=j&&(r[e][j]=o),null!=S&&(r[e][S]=o)}}}t.exports=a},6434:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}var o=r(9981);t.exports=function(t,e,r,i,s){var a=i,u=a,c=o(s,"overwrite",!1),f=o(s,"timestamps",!0);if(!f||null==a)return i;var l,p,h,y=null!=f&&!1===f.createdAt,d=null!=f&&!1===f.updatedAt;if(c)return i&&i.$set&&(i=i.$set,a.$set={},u=a.$set),d||!r||i[r]||(u[r]=t),y||!e||i[e]||(u[e]=t),a;if(i=i||{},Array.isArray(a))return a.push({$set:(l={},p=r,h=t,(p=function(t){var e=function(t){if("object"!=n(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=n(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==n(e)?e:e+""}(p))in l?Object.defineProperty(l,p,{value:h,enumerable:!0,configurable:!0,writable:!0}):l[p]=h,l)}),a;if(a.$set=a.$set||{},!d&&r&&(!i.$currentDate||!i.$currentDate[r])){var m=!1;if(-1!==r.indexOf("."))for(var v=r.split("."),b=1;b{"use strict";var n=r(489).ctor("require","modify","init","default","ignore");function o(){this.activePaths=new n}t.exports=o,o.prototype.strictMode=!0,o.prototype.fullPath=void 0,o.prototype.selected=void 0,o.prototype.shardval=void 0,o.prototype.saveError=void 0,o.prototype.validationError=void 0,o.prototype.adhocPaths=void 0,o.prototype.removing=void 0,o.prototype.inserting=void 0,o.prototype.saving=void 0,o.prototype.version=void 0,o.prototype._id=void 0,o.prototype.ownerDocument=void 0,o.prototype.populate=void 0,o.prototype.populated=void 0,o.prototype.primitiveAtomics=void 0,o.prototype.wasPopulated=!1,o.prototype.scope=void 0,o.prototype.session=null,o.prototype.pathsToScopes=null,o.prototype.cachedRequired=null},4962:(t,e)=>{"use strict";e.h={transform:!1,virtuals:!1,getters:!1,_skipDepopulateTopLevel:!0,depopulate:!0,flattenDecimals:!1,useProjection:!1}},4034:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(t,e){for(var r=0;r{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(o=function(){return!!t})()}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}function s(t,e){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},s(t,e)}var a=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e,r){return e=i(e),function(t,e){if(e&&("object"==n(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,o()?Reflect.construct(e,r||[],i(t).constructor):e.apply(t,r))}(this,e,arguments)}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&s(t,e)}(e,t),r=e,Object.defineProperty(r,"prototype",{writable:!1}),r;var r}(r(4364)),u=r(3439);Object.defineProperty(a.prototype,"enum",u),Object.defineProperty(a.prototype,"of",u),Object.defineProperty(a.prototype,"castNonArrays",u),t.exports=a},9586:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(o=function(){return!!t})()}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}function s(t,e){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},s(t,e)}var a=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e,r){return e=i(e),function(t,e){if(e&&("object"==n(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,o()?Reflect.construct(e,r||[],i(t).constructor):e.apply(t,r))}(this,e,arguments)}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&s(t,e)}(e,t),r=e,Object.defineProperty(r,"prototype",{writable:!1}),r;var r}(r(4364)),u=r(3439);Object.defineProperty(a.prototype,"subtype",u),t.exports=a},2869:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(o=function(){return!!t})()}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}function s(t,e){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},s(t,e)}var a=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e,r){return e=i(e),function(t,e){if(e&&("object"==n(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,o()?Reflect.construct(e,r||[],i(t).constructor):e.apply(t,r))}(this,e,arguments)}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&s(t,e)}(e,t),r=e,Object.defineProperty(r,"prototype",{writable:!1}),r;var r}(r(4364)),u=r(3439);Object.defineProperty(a.prototype,"min",u),Object.defineProperty(a.prototype,"max",u),Object.defineProperty(a.prototype,"expires",u),t.exports=a},887:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(o=function(){return!!t})()}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}function s(t,e){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},s(t,e)}var a=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e,r){return e=i(e),function(t,e){if(e&&("object"==n(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,o()?Reflect.construct(e,r||[],i(t).constructor):e.apply(t,r))}(this,e,arguments)}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&s(t,e)}(e,t),r=e,Object.defineProperty(r,"prototype",{writable:!1}),r;var r}(r(4364)),u=r(3439);Object.defineProperty(a.prototype,"excludeIndexes",u),Object.defineProperty(a.prototype,"_id",u),t.exports=a},8227:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(o=function(){return!!t})()}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}function s(t,e){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},s(t,e)}var a=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e,r){return e=i(e),function(t,e){if(e&&("object"==n(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,o()?Reflect.construct(e,r||[],i(t).constructor):e.apply(t,r))}(this,e,arguments)}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&s(t,e)}(e,t),r=e,Object.defineProperty(r,"prototype",{writable:!1}),r;var r}(r(4364)),u=r(3439);Object.defineProperty(a.prototype,"of",u),t.exports=a},8491:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(o=function(){return!!t})()}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}function s(t,e){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},s(t,e)}var a=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e,r){return e=i(e),function(t,e){if(e&&("object"==n(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,o()?Reflect.construct(e,r||[],i(t).constructor):e.apply(t,r))}(this,e,arguments)}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&s(t,e)}(e,t),r=e,Object.defineProperty(r,"prototype",{writable:!1}),r;var r}(r(4364)),u=r(3439);Object.defineProperty(a.prototype,"min",u),Object.defineProperty(a.prototype,"max",u),Object.defineProperty(a.prototype,"enum",u),Object.defineProperty(a.prototype,"populate",u),t.exports=a},8172:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(o=function(){return!!t})()}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}function s(t,e){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},s(t,e)}var a=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e,r){return e=i(e),function(t,e){if(e&&("object"==n(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,o()?Reflect.construct(e,r||[],i(t).constructor):e.apply(t,r))}(this,e,arguments)}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&s(t,e)}(e,t),r=e,Object.defineProperty(r,"prototype",{writable:!1}),r;var r}(r(4364)),u=r(3439);Object.defineProperty(a.prototype,"auto",u),Object.defineProperty(a.prototype,"populate",u),t.exports=a},3209:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(o=function(){return!!t})()}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}function s(t,e){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},s(t,e)}var a=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e,r){return e=i(e),function(t,e){if(e&&("object"==n(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,o()?Reflect.construct(e,r||[],i(t).constructor):e.apply(t,r))}(this,e,arguments)}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&s(t,e)}(e,t),r=e,Object.defineProperty(r,"prototype",{writable:!1}),r;var r}(r(4364)),u=r(3439);Object.defineProperty(a.prototype,"enum",u),Object.defineProperty(a.prototype,"match",u),Object.defineProperty(a.prototype,"lowercase",u),Object.defineProperty(a.prototype,"trim",u),Object.defineProperty(a.prototype,"uppercase",u),Object.defineProperty(a.prototype,"minLength",u),Object.defineProperty(a.prototype,"minlength",u),Object.defineProperty(a.prototype,"maxLength",u),Object.defineProperty(a.prototype,"maxlength",u),Object.defineProperty(a.prototype,"populate",u),t.exports=a},5446:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(o=function(){return!!t})()}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}function s(t,e){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},s(t,e)}var a=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e,r){return e=i(e),function(t,e){if(e&&("object"==n(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,o()?Reflect.construct(e,r||[],i(t).constructor):e.apply(t,r))}(this,e,arguments)}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&s(t,e)}(e,t),r=e,Object.defineProperty(r,"prototype",{writable:!1}),r;var r}(r(4364)),u=r(3439);Object.defineProperty(a.prototype,"_id",u),t.exports=a},4364:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(t,e){for(var r=0;r{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(t,e){for(var r=0;r{"use strict";t.exports=Object.freeze({enumerable:!0,configurable:!0,writable:!0,value:void 0})},4292:(t,e,r)=>{"use strict";e.removeSubdocs=r(4393),e.saveSubdocs=r(535),e.sharding=r(7472),e.trackTransaction=r(442),e.validateBeforeSave=r(9888)},4393:(t,e,r)=>{"use strict";var n=r(9449);t.exports=function(t){t.s.hooks.pre("remove",!1,function(t){if(this.$isSubdocument)t();else{var e=this,r=this.$getAllSubdocs();n(r,function(t,e){t.$__remove(e)},function(r){if(r)return e.$__schema.s.hooks.execPost("remove:error",e,[e],{error:r},function(e){t(e)});t()})}},null,!0)}},535:(t,e,r)=>{"use strict";var n=r(9449);t.exports=function(t){var e=!0;t.s.hooks.pre("save",!1,function(t){if(this.$isSubdocument)t();else{var e=this,r=this.$getAllSubdocs();r.length?n(r,function(t,e){t.$__schema.s.hooks.execPre("save",t,function(t){e(t)})},function(r){if(r)return e.$__schema.s.hooks.execPost("save:error",e,[e],{error:r},function(e){t(e)});t()}):t()}},null,e),t.s.hooks.post("save",function(t,e){if(this.$isSubdocument)e();else{var r=this,o=this.$getAllSubdocs();o.length?n(o,function(t,e){t.$__schema.s.hooks.execPost("save",t,[t],function(t){e(t)})},function(t){if(t)return r.$__schema.s.hooks.execPost("save:error",r,[r],{error:t},function(t){e(t)});e()}):e()}},null,e)}},7472:(t,e,r)=>{"use strict";var n=r(8770).objectIdSymbol,o=r(6872);function i(){var t,e;if(this.$__.shardval){e=(t=Object.keys(this.$__.shardval)).length,this.$where=this.$where||{};for(var r=0;r{"use strict";function n(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return o(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,s=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw s}}}}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r{"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}t.exports=function(t){t.pre("save",!1,function(t,r){var n=this;if(this.$isSubdocument)return t();if(r&&"object"===e(r)&&"validateBeforeSave"in r?r.validateBeforeSave:this.$__schema.options.validateBeforeSave){var o=r&&"object"===e(r)&&"validateModifiedOnly"in r?{validateModifiedOnly:r.validateModifiedOnly}:null;this.$validate(o,function(e){return n.$__schema.s.hooks.execPost("save:error",n,[n],{error:e},function(e){n.$op="save",t(e)})})}else t()},null,!0)}},6755:(t,e,r)=>{"use strict";var n=r(9373),o=r(5417),i={_promise:null,get:function(){return i._promise},set:function(t){n.ok("function"==typeof t,"mongoose.Promise must be a function, got ".concat(t)),i._promise=t,o.Promise=t}};i.set(r.g.Promise),t.exports=i},2888:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return i(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,s=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw s}}}}function i(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r1)){r=!f;break}}var l=[],p=[],h=[];switch(function e(n,o){if(o||(o=""),-1!==h.indexOf(n))return[];h.push(n);var i=[];return n.eachPath(function(n,a){if(o&&(n=o+"."+n),a.$isSchemaMap||n.endsWith(".$*")){var u=t&&"+"+n in t;a.options&&!1===a.options.select&&!u&&p.push(n)}else{var c=A(n,a);if(null!=c||Array.isArray(a)||!a.$isMongooseArray||a.$isMongooseDocumentArray||(c=A(n,a.caster)),null!=c&&i.push(c),a.schema){var f=e(a.schema,n);!1===r&&s(t,n,a.schema,l,f)}}}),h.pop(),i}(e),r){case!0:var y,d=o(p);try{for(d.s();!(y=d.n()).done;){var m=y.value;t[m]=0}}catch(t){d.e(t)}finally{d.f()}break;case!1:e&&e.paths._id&&e.paths._id.options&&!1===e.paths._id.options.select&&(t._id=0);var v,b=o(l);try{for(b.s();!(v=b.n()).done;){var g=v.value;t[g]=t[g]||1}}catch(t){b.e(t)}finally{b.f()}break;case void 0:if(null==t)break;for(var _=0,w=Object.keys(t||{});_1&&!~i.indexOf(o)&&(t[o]=1));for(var f=o.split("."),h="",y=0;y{"use strict";var n=r(365).lW;function o(t,e,r){return(e=function(t){var e=function(t){if("object"!=i(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=i(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==i(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function i(t){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function s(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=a(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return s=t.done,t},e:function(t){u=!0,i=t},f:function(){try{s||null==r.return||r.return()}finally{if(u)throw i}}}}function a(t,e){if(t){if("string"==typeof t)return u(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?u(t,e):void 0}}function u(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r0){e&&(this.nested[e.substring(0,e.length-1)]=!0);var l=new D(f),p=Object.assign({},c,{type:l});this.path(e+s,p)}else if(e&&(this.nested[e.substring(0,e.length-1)]=!0),this.path(e+s,c),null!=c&&!c.instanceOfSchema&&A.isPOJO(c.discriminators)){var h=this.path(e+s);for(var d in c.discriminators)h.discriminator(d,c.discriminators[d])}}else if(e&&(this.nested[e.substring(0,e.length-1)]=!0),this.path(e+s,c),null!=c[0]&&!c[0].instanceOfSchema&&A.isPOJO(c[0].discriminators)){var v=this.path(e+s);for(var b in c[0].discriminators)v.discriminator(b,c[0].discriminators[b])}else if(null!=c[0]&&c[0].instanceOfSchema&&A.isPOJO(c[0]._applyDiscriminators)){var g=c[0]._applyDiscriminators||[],_=this.path(e+s);for(var w in g)_.discriminator(w,g[w])}else if(null!=c&&c.instanceOfSchema&&A.isPOJO(c._applyDiscriminators)){var $=c._applyDiscriminators||[],S=this.path(e+s);for(var j in $)S.discriminator(j,$[j])}}}}var E=Object.fromEntries(Object.entries(t).map(function(t){var r,n,o=(r=t,n=1,function(t){if(Array.isArray(t))return t}(r)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,s,a=[],u=!0,c=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=i.call(r)).done)&&(a.push(n.value),a.length!==e);u=!0);}catch(t){c=!0,o=t}finally{try{if(!u&&null!=r.return&&(s=r.return(),Object(s)!==s))return}finally{if(c)throw o}}return a}}(r,n)||a(r,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];return[e+o,null]}));return R(this,E),this},D.prototype.alias=function(t,e){return R(this,o({},t,e)),this},D.prototype.removeIndex=function(t){if(arguments.length>1)throw new Error("removeIndex() takes only 1 argument");if("object"!==i(t)&&"string"!=typeof t)throw new Error("removeIndex() may only take either an object or a string as an argument");if("object"===i(t))for(var e=this._indexes.length-1;e>=0;--e)P.isDeepStrictEqual(this._indexes[e][0],t)&&this._indexes.splice(e,1);else for(var r=this._indexes.length-1;r>=0;--r)null!=this._indexes[r][1]&&this._indexes[r][1].name===t&&this._indexes.splice(r,1);return this},D.prototype.clearIndexes=function(){return this._indexes.length=0,this},D.reserved=Object.create(null),D.prototype.reserved=D.reserved;var C=D.reserved;function B(t){return/\.\d+/.test(t)?t.replace(/\.\d+\./g,".$.").replace(/\.\d+$/,".$"):t}function U(t,e){if(0===t.mapPaths.length)return null;var r,n=s(t.mapPaths);try{for(n.s();!(r=n.n()).done;){var o=r.value.path;if(new RegExp("^"+o.replace(/\.\$\*/g,"\\.[^.]+")+"$").test(e))return t.paths[o]}}catch(t){n.e(t)}finally{n.f()}return null}function F(t,e){var r=e.split(/\.(\d+)\.|\.(\d+)$/).filter(Boolean);if(r.length<2)return t.paths.hasOwnProperty(r[0])?t.paths[r[0]]:"adhocOrUndefined";var n=t.path(r[0]),o=!1;if(!n)return"adhocOrUndefined";for(var i=r.length-1,s=1;s0?".":"")+m,p[m]||(this.nested[y]=!0,p[m]={}),"object"!==i(p[m])){var v="Cannot set nested path `"+t+"`. Parent path `"+y+"` already set to type "+p[m].name+".";throw new Error(v)}p=p[m]}}catch(t){d.e(t)}finally{d.f()}p[l]=A.clone(e),this.paths[t]=this.interpretAsType(t,e,this.options);var b=this.paths[t];if(b.$isSchemaMap){var g=t+".$*";this.paths[g]=b.$__schemaType,this.mapPaths.push(this.paths[g])}if(b.$isSingleNested){for(var _=0,w=Object.keys(b.schema.paths);_0&&!A.hasUserDefinedProperty(n.of,t.options.typeKey)?o({},t.options.typeKey,new D(n.of)):A.isPOJO(n.of)?Object.assign({},n.of):o({},t.options.typeKey,n.of))[t.options.typeKey]&&a[t.options.typeKey].instanceOfSchema&&a[t.options.typeKey].eachPath(function(t,e){if(!0===e.options.select||!1===e.options.select)throw new p('Cannot use schema-level projections (`select: true` or `select: false`) within maps at path "'+r+"."+t+'"')}),A.hasUserDefinedProperty(n,"ref")&&(a.ref=n.ref)),e.$__schemaType=t.interpretAsType(s,a,i)}(this,_,t,e,s),_},D.prototype.eachPath=function(t){for(var e=Object.keys(this.paths),r=e.length,n=0;n0?t+"."+e[r]:e[r],this.paths.hasOwnProperty(t)&&this.paths[t]instanceof c.Mixed)return this.paths[t];return null},D.prototype.setupTimestamp=function(t){return j(this,t)},D.prototype.queue=function(t,e){return this.callQueue.push([t,e]),this},D.prototype.pre=function(t){if(t instanceof RegExp){var e,r=Array.prototype.slice.call(arguments,1),n=s(T);try{for(n.s();!(e=n.n()).done;){var o=e.value;t.test(o)&&this.pre.apply(this,[o].concat(r))}}catch(t){n.e(t)}finally{n.f()}return this}if(Array.isArray(t)){var i,a=Array.prototype.slice.call(arguments,1),u=s(t);try{for(u.s();!(i=u.n()).done;){var c=i.value;this.pre.apply(this,[c].concat(a))}}catch(t){u.e(t)}finally{u.f()}return this}return this.s.hooks.pre.apply(this.s.hooks,arguments),this},D.prototype.post=function(t){if(t instanceof RegExp){var e,r=Array.prototype.slice.call(arguments,1),n=s(T);try{for(n.s();!(e=n.n()).done;){var o=e.value;t.test(o)&&this.post.apply(this,[o].concat(r))}}catch(t){n.e(t)}finally{n.f()}return this}if(Array.isArray(t)){var i,a=Array.prototype.slice.call(arguments,1),u=s(t);try{for(u.s();!(i=u.n()).done;){var c=i.value;this.post.apply(this,[c].concat(a))}}catch(t){u.e(t)}finally{u.f()}return this}return this.s.hooks.post.apply(this.s.hooks,arguments),this},D.prototype.plugin=function(t,e){if("function"!=typeof t)throw new Error('First param to `schema.plugin()` must be a function, got "'+i(t)+'"');if(e&&e.deduplicate){var r,n=s(this.plugins);try{for(n.s();!(r=n.n()).done;)if(r.value.fn===t)return this}catch(t){n.e(t)}finally{n.f()}}return this.plugins.push({fn:t,opts:e}),t(this,e),this},D.prototype.method=function(t,e,r){if("string"!=typeof t)for(var n in t)this.methods[n]=t[n],this.methodOptions[n]=A.clone(r);else this.methods[t]=e,this.methodOptions[t]=A.clone(r);return this},D.prototype.static=function(t,e){if("string"!=typeof t)for(var r in t)this.statics[r]=t[r];else this.statics[t]=e;return this},D.prototype.index=function(t,e){return t||(t={}),e||(e={}),e.expires&&A.expires(e),this._indexes.push([t,e]),this},D.prototype.set=function(t,e,r){if(1===arguments.length)return this.options[t];switch(t){case"read":this.options[t]=S(e,r),this._userProvidedOptions[t]=this.options[t];break;case"timestamps":this.setupTimestamp(e),this.options[t]=e,this._userProvidedOptions[t]=this.options[t];break;case"_id":this.options[t]=e,this._userProvidedOptions[t]=this.options[t],e&&!this.paths._id?v(this):!e&&null!=this.paths._id&&this.paths._id.auto&&this.remove("_id");break;default:this.options[t]=e,this._userProvidedOptions[t]=this.options[t]}return this},D.prototype.get=function(t){return this.options[t]};var q="2d 2dsphere hashed text".split(" ");function L(t,e){var r,n=e.split("."),o=n.pop(),i=t.tree,a=s(n);try{for(a.s();!(r=a.n()).done;)i=i[r.value]}catch(t){a.e(t)}finally{a.f()}delete i[o]}function V(t){return t.startsWith("$[")&&t.endsWith("]")}Object.defineProperty(D,"indexTypes",{get:function(){return q},set:function(){throw new Error("Cannot overwrite Schema.indexTypes")}}),D.prototype.indexes=function(){return _(this)},D.prototype.virtual=function(t,e){if(t instanceof m||"VirtualType"===g(t))return this.virtual(t.path,t.options);if(e=new d(e),A.hasUserDefinedProperty(e,["ref","refPath"])){if(null==e.localField)throw new Error("Reference virtuals require `localField` option");if(null==e.foreignField)throw new Error("Reference virtuals require `foreignField` option");this.pre("init",function(r){if($.has(t,r)){var n=$.get(t,r);this.$$populatedVirtuals||(this.$$populatedVirtuals={}),e.justOne||e.count?this.$$populatedVirtuals[t]=Array.isArray(n)?n[0]:n:this.$$populatedVirtuals[t]=Array.isArray(n)?n:null==n?[]:[n],$.unset(t,r)}});var r=this.virtual(t);r.options=e,r.set(function(r){this.$$populatedVirtuals||(this.$$populatedVirtuals={}),e.justOne||e.count?(this.$$populatedVirtuals[t]=Array.isArray(r)?r[0]:r,"object"!==i(this.$$populatedVirtuals[t])&&(this.$$populatedVirtuals[t]=e.count?r:null)):(this.$$populatedVirtuals[t]=Array.isArray(r)?r:null==r?[]:[r],this.$$populatedVirtuals[t]=this.$$populatedVirtuals[t].filter(function(t){return t&&"object"===i(t)}))}),"function"==typeof e.get&&r.get(e.get);for(var n=t.split("."),o=n[0],s=0;s=e.length)return o;if(s+1>=e.length)return o.$__schemaType;if(o.$__schemaType instanceof c.Mixed)return o.$__schemaType;if(null!=o.$__schemaType.schema)return t(e.slice(s+1),o.$__schemaType.schema)}return o.$fullPath=r.join("."),o}}(n,this)},D.prototype._getPathType=function(t){return this.path(t)?"real":function t(e,r){for(var n,o,i=e.length+1;i--;){if(o=e.slice(0,i).join("."),n=r.path(o))return n.caster?n.caster instanceof c.Mixed?{schema:n,pathType:"mixed"}:i!==e.length&&n.schema?"$"===e[i]||V(e[i])?i===e.length-1?{schema:n,pathType:"nested"}:t(e.slice(i+1),n.schema):t(e.slice(i),n.schema):{schema:n,pathType:n.$isSingleNested?"nested":"array"}:{schema:n,pathType:"real"};if(i===e.length&&r.nested[o])return{schema:r,pathType:"nested"}}return{schema:n||r,pathType:"undefined"}}(t.split("."),this)},D.prototype._preCompile=function(){w(this)},t.exports=e=D,D.Types=c=r(5251),e.ObjectId=c.ObjectId},8997:(t,e,r)=>{"use strict";var n=r(5202),o=r(4289),i=r(3617),s=r(8413);function a(t,e){if(this.$parentSchemaType=e&&e.$parentSchemaType,!this.$parentSchemaType)throw new n("Cannot create DocumentArrayElement schematype without a parent");delete e.$parentSchemaType,o.call(this,t,e,"DocumentArrayElement"),this.$isMongooseDocumentArrayElement=!0}a.schemaName="DocumentArrayElement",a.defaultOptions={},a.prototype=Object.create(o.prototype),a.prototype.constructor=a,a.prototype.cast=function(){var t;return(t=this.$parentSchemaType).cast.apply(t,arguments)[0]},a.prototype.doValidate=function(t,e,r,n){var o=s(this.caster,t);return!t||t instanceof o||(t=new o(t,r,null,null,n&&null!=n.index?n.index:null)),i.prototype.doValidate.call(this,t,e,r,n)},a.prototype.clone=function(){this.options.$parentSchemaType=this.$parentSchemaType;var t=o.prototype.clone.apply(this,arguments);return delete this.options.$parentSchemaType,t.caster=this.caster,t.schema=this.schema,t},t.exports=a},3617:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}var o,i=r(1795),s=r(9620).EventEmitter,a=r(4107),u=r(5446),c=r(4289),f=r(2874),l=r(8702),p=r(1521).W,h=r(9181),y=r(5008),d=r(8413),m=r(9691),v=r(4962).h,b=r(9098),g=r(6872);function _(t,e,r){var n=_.defaultOptions&&_.defaultOptions._id;null!=n&&((r=r||{})._id=n),t=m(t,r),this.caster=w(t),this.caster.path=e,this.caster.prototype.$basePath=e,this.schema=t,this.$isSingleNested=!0,this.base=t.base,c.call(this,e,r,"Embedded")}function w(t,e){o||(o=r(2591));var n=function(t,e,r){this.$__parent=r,o.apply(this,arguments),null!=r&&this.$session(r.$session())};t._preCompile();var i=null!=e?e.prototype:o.prototype;for(var a in(n.prototype=Object.create(i)).$__setSchema(t),n.prototype.constructor=n,n.schema=t,n.$isSingleNested=!0,n.events=new s,n.prototype.toBSON=function(){return this.toObject(v)},t.methods)n.prototype[a]=t.methods[a];for(var u in t.statics)n[u]=t.statics[u];for(var c in s.prototype)n[c]=s.prototype[c];return n}t.exports=_,_.prototype=Object.create(c.prototype),_.prototype.constructor=_,_.prototype.OptionsConstructor=u,_.prototype.$conditionalHandlers.$geoWithin=function(t){return{$geometry:this.castForQuery(t.$geometry)}},_.prototype.$conditionalHandlers.$near=_.prototype.$conditionalHandlers.$nearSphere=y.cast$near,_.prototype.$conditionalHandlers.$within=_.prototype.$conditionalHandlers.$geoWithin=y.cast$within,_.prototype.$conditionalHandlers.$geoIntersects=y.cast$geoIntersects,_.prototype.$conditionalHandlers.$minDistance=p,_.prototype.$conditionalHandlers.$maxDistance=p,_.prototype.$conditionalHandlers.$exists=l,_.prototype.cast=function(t,e,r,o,i){if(t&&t.$isSingleNested&&t.parent===e)return t;if(null!=t&&("object"!==n(t)||Array.isArray(t)))throw new a(this.path,t);var s,u=d(this.caster,t),c=e&&e.$__&&e.$__.selected,l=this.path,p=null==c?null:Object.keys(c).reduce(function(t,e){return e.startsWith(l+".")&&((t=t||{})[e.substring(l.length+1)]=c[e]),t},null);if(!r)return i=Object.assign({},i,{priorDoc:o}),0===Object.keys(t).length?new u({},p,e,void 0,i):new u(t,p,e,void 0,i);delete(s=new u(void 0,p,e,!1,{defaults:!1})).$__.defaults,s.$init(t);var h=b(p);return f(s,p,h),s},_.prototype.castForQuery=function(t,e,r){var n;if(2===arguments.length){if(!(n=this.$conditionalHandlers[t]))throw new Error("Can't use "+t);return n.call(this,e)}if(null==(e=t))return e;this.options.runSetters&&(e=this._applySetters(e));var o=d(this.caster,e),s=null!=r&&null!=r.strict?r.strict:void 0;try{e=new o(e,s)}catch(t){if(!(t instanceof i))throw new i("Embedded",e,this.path,t,this);throw t}return e},_.prototype.doValidate=function(t,e,r,n){var o=d(this.caster,t);if(!t||t instanceof o||(t=new o(t,null,null!=r&&null!=r.$__?r:null)),n&&n.skipSchemaValidators)return t?t.validate(e):e(null);c.prototype.doValidate.call(this,t,function(r){return r?e(r):t?void t.validate(e):e(null)},r,n)},_.prototype.doValidateSync=function(t,e,r){if(!r||!r.skipSchemaValidators){var n=c.prototype.doValidateSync.call(this,t,e);if(n)return n}if(t)return t.validateSync()},_.prototype.discriminator=function(t,e,r){r=r||{};var n=g.isPOJO(r)?r.value:r,o="boolean"!=typeof r.clone||r.clone;return e.instanceOfSchema&&o&&(e=e.clone()),e=h(this.caster,t,e,n),this.caster.discriminators[t]=w(e,this.caster),this.caster.discriminators[t]},_.defaultOptions={},_.set=c.set,_.prototype.toJSON=function(){return{path:this.path,options:this.options}},_.prototype.clone=function(){var t=Object.assign({},this.options),e=new this.constructor(this.schema,this.path,t);return e.validators=this.validators.slice(),void 0!==this.requiredValidator&&(e.requiredValidator=this.requiredValidator),e.caster.discriminators=Object.assign({},this.caster.discriminators),e}},94:(t,e,r)=>{"use strict";function n(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r=t.length?{done:!0}:{done:!1,value:t[o++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,s=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw s}}}}(e);try{for(i.s();!(r=i.n()).done;){var s=r.value;o.push(d(this.casterConstructor.schema,s,null,this&&this.$$context))}}catch(t){i.e(t)}finally{i.f()}return o}}j.$all=function(t){var e=this;return Array.isArray(t)||(t=[t]),t=t.map(function(t){if(!b.isObject(t))return t;if(null!=t.$elemMatch)return{$elemMatch:d(e.casterConstructor.schema,t.$elemMatch,null,e&&e.$$context)};var r={};return r[e.path]=t,d(e.casterConstructor.schema,r,null,e&&e.$$context)[e.path]},this),this.castForQuery(t)},j.$options=String,j.$elemMatch=function(t){for(var e=Object.keys(t),r=e.length,n=0;n{"use strict";var n=r(1795),o=r(4289),i=r(6670),s=r(6872);function a(t,e){o.call(this,t,e,"Boolean")}a.schemaName="Boolean",a.defaultOptions={},a.prototype=Object.create(o.prototype),a.prototype.constructor=a,a._cast=i,a.set=o.set,a.cast=function(t){return 0===arguments.length||(!1===t&&(t=this._defaultCaster),this._cast=t),this._cast},a._defaultCaster=function(t){if(null!=t&&"boolean"!=typeof t)throw new Error;return t},a._checkRequired=function(t){return!0===t||!1===t},a.checkRequired=o.checkRequired,a.prototype.checkRequired=function(t){return this.constructor._checkRequired(t)},Object.defineProperty(a,"convertToTrue",{get:function(){return i.convertToTrue},set:function(t){i.convertToTrue=t}}),Object.defineProperty(a,"convertToFalse",{get:function(){return i.convertToFalse},set:function(t){i.convertToFalse=t}}),a.prototype.cast=function(t){var e;e="function"==typeof this._castFunction?this._castFunction:"function"==typeof this.constructor.cast?this.constructor.cast():a.cast();try{return e(t)}catch(e){throw new n("Boolean",t,this.path,e,this)}},a.$conditionalHandlers=s.options(o.prototype.$conditionalHandlers,{}),a.prototype.castForQuery=function(t,e){var r;return 2===arguments.length?(r=a.$conditionalHandlers[t])?r.call(this,e):this._castForQuery(e):this._castForQuery(t)},a.prototype._castNullish=function(t){if(void 0===t)return t;var e="function"==typeof this.constructor.cast?this.constructor.cast():a.cast();return null==e?t:!(e.convertToFalse instanceof Set&&e.convertToFalse.has(t))&&(!!(e.convertToTrue instanceof Set&&e.convertToTrue.has(t))||t)},t.exports=a},8800:(t,e,r)=>{"use strict";var n=r(365).lW;function o(t){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o(t)}var i=r(4051),s=r(9586),a=r(4289),u=r(4282),c=r(6872),f=i.Binary,l=a.CastError;function p(t,e){a.call(this,t,e,"Buffer")}function h(t){return this.castForQuery(t)}p.schemaName="Buffer",p.defaultOptions={},p.prototype=Object.create(a.prototype),p.prototype.constructor=p,p.prototype.OptionsConstructor=s,p._checkRequired=function(t){return!(!t||!t.length)},p.set=a.set,p.checkRequired=a.checkRequired,p.prototype.checkRequired=function(t,e){return a._isRef(this,t,e,!0)?!!t:this.constructor._checkRequired(t)},p.prototype.cast=function(t,e,r){var s;if(a._isRef(this,t,e,r)){if(t&&t.isMongooseBuffer)return t;if(n.isBuffer(t))return t&&t.isMongooseBuffer||(t=new i(t,[this.path,e]),null!=this.options.subtype&&(t._subtype=this.options.subtype)),t;if(t instanceof f){if(s=new i(t.value(!0),[this.path,e]),"number"!=typeof t.sub_type)throw new l("Buffer",t,this.path,null,this);return s._subtype=t.sub_type,s}if(null==t||c.isNonBuiltinObject(t))return this._castRef(t,e,r)}if(t&&t._id&&(t=t._id),t&&t.isMongooseBuffer)return t;if(n.isBuffer(t))return t&&t.isMongooseBuffer||(t=new i(t,[this.path,e]),null!=this.options.subtype&&(t._subtype=this.options.subtype)),t;if(t instanceof f){if(s=new i(t.value(!0),[this.path,e]),"number"!=typeof t.sub_type)throw new l("Buffer",t,this.path,null,this);return s._subtype=t.sub_type,s}if(null===t)return t;var u=o(t);if("string"===u||"number"===u||Array.isArray(t)||"object"===u&&"Buffer"===t.type&&Array.isArray(t.data))return"number"===u&&(t=[t]),s=new i(t,[this.path,e]),null!=this.options.subtype&&(s._subtype=this.options.subtype),s;throw new l("Buffer",t,this.path,null,this)},p.prototype.subtype=function(t){return this.options.subtype=t,this},p.prototype.$conditionalHandlers=c.options(a.prototype.$conditionalHandlers,{$bitsAllClear:u,$bitsAnyClear:u,$bitsAllSet:u,$bitsAnySet:u,$gt:h,$gte:h,$lt:h,$lte:h}),p.prototype.castForQuery=function(t,e){var r;if(2===arguments.length){if(!(r=this.$conditionalHandlers[t]))throw new Error("Can't use "+t+" with Buffer.");return r.call(this,e)}e=t;var n=this._castForQuery(e);return n?n.toObject({transform:!1,virtuals:!1}):n},t.exports=p},6535:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}var o=r(4888),i=r(2869),s=r(4289),a=r(195),u=r(1981),c=r(6872),f=s.CastError;function l(t,e){s.call(this,t,e,"Date")}function p(t){return this.cast(t)}l.schemaName="Date",l.defaultOptions={},l.prototype=Object.create(s.prototype),l.prototype.constructor=l,l.prototype.OptionsConstructor=i,l._cast=a,l.set=s.set,l.cast=function(t){return 0===arguments.length||(!1===t&&(t=this._defaultCaster),this._cast=t),this._cast},l._defaultCaster=function(t){if(null!=t&&!(t instanceof Date))throw new Error;return t},l.prototype.expires=function(t){return"Object"!==u(this._index)&&(this._index={}),this._index.expires=t,c.expires(this._index),this},l._checkRequired=function(t){return t instanceof Date},l.checkRequired=s.checkRequired,l.prototype.checkRequired=function(t,e){return"object"===n(t)&&s._isRef(this,t,e,!0)?null!=t:("function"==typeof this.constructor.checkRequired?this.constructor.checkRequired():l.checkRequired())(t)},l.prototype.min=function(t,e){if(this.minValidator&&(this.validators=this.validators.filter(function(t){return t.validator!==this.minValidator},this)),t){var r=e||o.messages.Date.min;"string"==typeof r&&(r=r.replace(/{MIN}/,t===Date.now?"Date.now()":t.toString()));var n=this;this.validators.push({validator:this.minValidator=function(e){var r=t;"function"==typeof t&&t!==Date.now&&(r=r.call(this));var o=r===Date.now?r():n.cast(r);return null===e||e.valueOf()>=o.valueOf()},message:r,type:"min",min:t})}return this},l.prototype.max=function(t,e){if(this.maxValidator&&(this.validators=this.validators.filter(function(t){return t.validator!==this.maxValidator},this)),t){var r=e||o.messages.Date.max;"string"==typeof r&&(r=r.replace(/{MAX}/,t===Date.now?"Date.now()":t.toString()));var n=this;this.validators.push({validator:this.maxValidator=function(e){var r=t;"function"==typeof r&&r!==Date.now&&(r=r.call(this));var o=r===Date.now?r():n.cast(r);return null===e||e.valueOf()<=o.valueOf()},message:r,type:"max",max:t})}return this},l.prototype.cast=function(t){var e;e="function"==typeof this._castFunction?this._castFunction:"function"==typeof this.constructor.cast?this.constructor.cast():l.cast();try{return e(t)}catch(e){throw new f("date",t,this.path,e,this)}},l.prototype.$conditionalHandlers=c.options(s.prototype.$conditionalHandlers,{$gt:p,$gte:p,$lt:p,$lte:p}),l.prototype.castForQuery=function(t,e){if(2!==arguments.length)return this._castForQuery(t);var r=this.$conditionalHandlers[t];if(!r)throw new Error("Can't use "+t+" with Date.");return r.call(this,e)},t.exports=l},6621:(t,e,r)=>{"use strict";var n=r(4289),o=n.CastError,i=r(6209),s=r(6872),a=r(1563);function u(t,e){n.call(this,t,e,"Decimal128")}function c(t){return this.cast(t)}u.schemaName="Decimal128",u.defaultOptions={},u.prototype=Object.create(n.prototype),u.prototype.constructor=u,u._cast=i,u.set=n.set,u.cast=function(t){return 0===arguments.length||(!1===t&&(t=this._defaultCaster),this._cast=t),this._cast},u._defaultCaster=function(t){if(null!=t&&!a(t,"Decimal128"))throw new Error;return t},u._checkRequired=function(t){return a(t,"Decimal128")},u.checkRequired=n.checkRequired,u.prototype.checkRequired=function(t,e){return n._isRef(this,t,e,!0)?!!t:("function"==typeof this.constructor.checkRequired?this.constructor.checkRequired():u.checkRequired())(t)},u.prototype.cast=function(t,e,r){if(n._isRef(this,t,e,r))return a(t,"Decimal128")?t:this._castRef(t,e,r);var i;i="function"==typeof this._castFunction?this._castFunction:"function"==typeof this.constructor.cast?this.constructor.cast():u.cast();try{return i(t)}catch(e){throw new o("Decimal128",t,this.path,e,this)}},u.prototype.$conditionalHandlers=s.options(n.prototype.$conditionalHandlers,{$gt:c,$gte:c,$lt:c,$lte:c}),t.exports=u},4504:(t,e,r)=>{"use strict";var n,o,i=r(94),s=r(1795),a=r(8997),u=r(9620).EventEmitter,c=r(887),f=r(4289),l=r(9181),p=r(9691),h=r(719),y=r(6872),d=r(8413),m=r(8770).arrayAtomicsSymbol,v=r(8770).arrayPathSymbol,b=r(8770).documentArrayParent;function g(t,e,r,n){var o=g.defaultOptions&&g.defaultOptions._id;null!=o&&((n=n||{})._id=o),null!=n&&null!=n._id?e=p(e,n):null!=r&&null!=r._id&&(e=p(e,r));var s=_(e,r);s.prototype.$basePath=t,i.call(this,t,s,r),this.schema=e,this.schemaOptions=n||{},this.$isMongooseDocumentArray=!0,this.Constructor=s,s.base=e.base;var u=this.defaultValue;"defaultValue"in this&&void 0===u||this.default(function(){var t=u.call(this);return null==t||Array.isArray(t)||(t=[t]),t}),this.$embeddedSchemaType=new a(t+".$",{required:this&&this.schemaOptions&&this.schemaOptions.required||!1,$parentSchemaType:this}),this.$embeddedSchemaType.caster=this.Constructor,this.$embeddedSchemaType.schema=this.schema}function _(t,e,n){function i(){o.apply(this,arguments),null!=this.__parentArray&&null!=this.__parentArray.getArrayParent()&&this.$session(this.__parentArray.getArrayParent().$session())}o||(o=r(1568)),t._preCompile();var s=null!=n?n.prototype:o.prototype;for(var a in i.prototype=Object.create(s),i.prototype.$__setSchema(t),i.schema=t,i.prototype.constructor=i,i.$isArraySubdocument=!0,i.events=new u,i.base=t.base,t.methods)i.prototype[a]=t.methods[a];for(var c in t.statics)i[c]=t.statics[c];for(var f in u.prototype)i[f]=u.prototype[f];return i.options=e,i}g.schemaName="DocumentArray",g.options={castNonArrays:!0},g.prototype=Object.create(i.prototype),g.prototype.constructor=g,g.prototype.OptionsConstructor=c,g.prototype.discriminator=function(t,e,r){"function"==typeof t&&(t=y.getFunctionName(t)),r=r||{};var n=y.isPOJO(r)?r.value:r,o="boolean"!=typeof r.clone||r.clone;e.instanceOfSchema&&o&&(e=e.clone());var i=_(e=l(this.casterConstructor,t,e,n),null,this.casterConstructor);i.baseCasterConstructor=this.casterConstructor;try{Object.defineProperty(i,"name",{value:t})}catch(t){}return this.casterConstructor.discriminators[t]=i,this.casterConstructor.discriminators[t]},g.prototype.doValidate=function(t,e,i,s){n||(n=r(6077));var a=this;try{f.prototype.doValidate.call(this,t,function(r){if(r)return e(r);var u,c=t&&t.length;if(!c)return e();if(s&&s.updateValidator)return e();function f(t){null!=t&&(u=t),--c||e(u)}y.isMongooseDocumentArray(t)||(t=new n(t,a.path,i));for(var l=0,p=c;l{"use strict";e.String=r(6542),e.Number=r(1751),e.Boolean=r(6470),e.DocumentArray=r(4504),e.Subdocument=r(3617),e.Array=r(94),e.Buffer=r(8800),e.Date=r(6535),e.ObjectId=r(7116),e.Mixed=r(3861),e.Decimal128=e.Decimal=r(6621),e.Map=r(71),e.UUID=r(2729),e.Oid=e.ObjectId,e.Object=e.Mixed,e.Bool=e.Boolean,e.ObjectID=e.ObjectId},71:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,s=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw s}}}}(t.keys());try{for(u.s();!(a=u.n()).done;){var c=a.value,f=t.get(c);f=null==f?s.$__schemaType._castNullish(f):s.$__schemaType.cast(f,e,!0,null,{path:i+"."+c}),s.$init(c,f)}}catch(t){u.e(t)}finally{u.f()}}else for(var p=0,h=Object.keys(t);p{"use strict";var n=r(4289),o=r(8107),i=r(5721),s=r(6872);function a(t,e){if(e&&e.default){var r=e.default;Array.isArray(r)&&0===r.length?e.default=Array:!e.shared&&i(r)&&0===Object.keys(r).length&&(e.default=function(){return{}})}n.call(this,t,e,"Mixed"),this[o.schemaMixedSymbol]=!0}a.schemaName="Mixed",a.defaultOptions={},a.prototype=Object.create(n.prototype),a.prototype.constructor=a,a.get=n.get,a.set=n.set,a.prototype.cast=function(t){return t instanceof Error?s.errorToPOJO(t):t},a.prototype.castForQuery=function(t,e){return 2===arguments.length?e:t},t.exports=a},1751:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}var o=r(4888),i=r(8491),s=r(4289),a=r(3065),u=r(4282),c=r(6872),f=s.CastError;function l(t,e){s.call(this,t,e,"Number")}function p(t){return this.cast(t)}l.get=s.get,l.set=s.set,l._cast=a,l.cast=function(t){return 0===arguments.length||(!1===t&&(t=this._defaultCaster),this._cast=t),this._cast},l._defaultCaster=function(t){if("number"!=typeof t)throw new Error;return t},l.schemaName="Number",l.defaultOptions={},l.prototype=Object.create(s.prototype),l.prototype.constructor=l,l.prototype.OptionsConstructor=i,l._checkRequired=function(t){return"number"==typeof t||t instanceof Number},l.checkRequired=s.checkRequired,l.prototype.checkRequired=function(t,e){return"object"===n(t)&&s._isRef(this,t,e,!0)?null!=t:("function"==typeof this.constructor.checkRequired?this.constructor.checkRequired():l.checkRequired())(t)},l.prototype.min=function(t,e){if(this.minValidator&&(this.validators=this.validators.filter(function(t){return t.validator!==this.minValidator},this)),null!=t){var r=e||o.messages.Number.min;r=r.replace(/{MIN}/,t),this.validators.push({validator:this.minValidator=function(e){return null==e||e>=t},message:r,type:"min",min:t})}return this},l.prototype.max=function(t,e){if(this.maxValidator&&(this.validators=this.validators.filter(function(t){return t.validator!==this.maxValidator},this)),null!=t){var r=e||o.messages.Number.max;r=r.replace(/{MAX}/,t),this.validators.push({validator:this.maxValidator=function(e){return null==e||e<=t},message:r,type:"max",max:t})}return this},l.prototype.enum=function(t,e){return this.enumValidator&&(this.validators=this.validators.filter(function(t){return t.validator!==this.enumValidator},this)),Array.isArray(t)||(c.isPOJO(t)&&null!=t.values?(e=t.message,t=t.values):"number"==typeof t&&(t=Array.prototype.slice.call(arguments),e=null),c.isPOJO(t)&&(t=Object.values(t)),e=e||o.messages.Number.enum),e=null==e?o.messages.Number.enum:e,this.enumValidator=function(e){return null==e||-1!==t.indexOf(e)},this.validators.push({validator:this.enumValidator,message:e,type:"enum",enumValues:t}),this},l.prototype.cast=function(t,e,r){if("number"!=typeof t&&s._isRef(this,t,e,r)&&(null==t||c.isNonBuiltinObject(t)))return this._castRef(t,e,r);var n,o=t&&void 0!==t._id?t._id:t;n="function"==typeof this._castFunction?this._castFunction:"function"==typeof this.constructor.cast?this.constructor.cast():l.cast();try{return n(o)}catch(t){throw new f("Number",o,this.path,t,this)}},l.prototype.$conditionalHandlers=c.options(s.prototype.$conditionalHandlers,{$bitsAllClear:u,$bitsAnyClear:u,$bitsAllSet:u,$bitsAnySet:u,$gt:p,$gte:p,$lt:p,$lte:p,$mod:function(t){var e=this;return Array.isArray(t)?t.map(function(t){return e.cast(t)}):[this.cast(t)]}}),l.prototype.castForQuery=function(t,e){var r;if(2===arguments.length){if(!(r=this.$conditionalHandlers[t]))throw new f("number",e,this.path,null,this);return r.call(this,e)}return this._castForQuery(t)},t.exports=l},7116:(t,e,r)=>{"use strict";var n,o=r(8172),i=r(4289),s=r(4731),a=r(1981),u=r(6079),c=r(1563),f=r(6872),l=i.CastError;function p(t,e){var r="string"==typeof t&&24===t.length&&/^[a-f0-9]+$/i.test(t),n=e&&e.suppressWarning;!r&&void 0!==t||n||f.warn("mongoose: To create a new ObjectId please try `Mongoose.Types.ObjectId` instead of using `Mongoose.Schema.ObjectId`. Set the `suppressWarning` option if you're trying to create a hex char path in your schema."),i.call(this,t,e,"ObjectID")}function h(t){return this.cast(t)}function y(){return new u}function d(t){return n||(n=r(8727)),this instanceof n&&void 0===t?new u:t}p.schemaName="ObjectId",p.defaultOptions={},p.prototype=Object.create(i.prototype),p.prototype.constructor=p,p.prototype.OptionsConstructor=o,p.get=i.get,p.set=i.set,p.prototype.auto=function(t){return t&&(this.default(y),this.set(d)),this},p._checkRequired=function(t){return c(t,"ObjectID")},p._cast=s,p.cast=function(t){return 0===arguments.length||(!1===t&&(t=this._defaultCaster),this._cast=t),this._cast},p._defaultCaster=function(t){if(!c(t,"ObjectID"))throw new Error(t+" is not an instance of ObjectId");return t},p.checkRequired=i.checkRequired,p.prototype.checkRequired=function(t,e){return i._isRef(this,t,e,!0)?!!t:("function"==typeof this.constructor.checkRequired?this.constructor.checkRequired():p.checkRequired())(t)},p.prototype.cast=function(t,e,r){if(!c(t,"ObjectID")&&i._isRef(this,t,e,r)){if("objectid"===(a(t)||"").toLowerCase())return new u(t.toHexString());if(null==t||f.isNonBuiltinObject(t))return this._castRef(t,e,r)}var n;n="function"==typeof this._castFunction?this._castFunction:"function"==typeof this.constructor.cast?this.constructor.cast():p.cast();try{return n(t)}catch(e){throw new l("ObjectId",t,this.path,e,this)}},p.prototype.$conditionalHandlers=f.options(i.prototype.$conditionalHandlers,{$gt:h,$gte:h,$lt:h,$lte:h}),y.$runBeforeSetters=!0,t.exports=p},4282:(t,e,r)=>{"use strict";var n=r(365).lW,o=r(1795);function i(t,e){var r=Number(e);if(isNaN(r))throw new o("number",e,t);return r}t.exports=function(t){var e=this;return Array.isArray(t)?t.map(function(t){return i(e.path,t)}):n.isBuffer(t)?t:i(e.path,t)}},8702:(t,e,r)=>{"use strict";var n=r(6670);t.exports=function(t){var e=null!=this?this.path:null;return n(t,e)}},5008:(t,e,r)=>{"use strict";var n=r(1521).i,o=r(1521).W;function i(t,e){switch(t.$geometry.type){case"Polygon":case"LineString":case"Point":n(t.$geometry.coordinates,e)}return s(e,t),t}function s(t,e){e.$maxDistance&&(e.$maxDistance=o.call(t,e.$maxDistance)),e.$minDistance&&(e.$minDistance=o.call(t,e.$minDistance))}e.cast$geoIntersects=function(t){if(t.$geometry)return i(t,this),t},e.cast$near=function(t){var e=r(94);if(Array.isArray(t))return n(t,this),t;if(s(this,t),t&&t.$geometry)return i(t,this);if(!Array.isArray(t))throw new TypeError("$near must be either an array or an object with a $geometry property");return e.prototype.castForQuery.call(this,t)},e.cast$within=function(t){var e=this;if(s(this,t),t.$box||t.$polygon){var r=t.$box?"$box":"$polygon";t[r].forEach(function(t){if(!Array.isArray(t))throw new TypeError("Invalid $within $box argument. Expected an array, received "+t);t.forEach(function(r,n){t[n]=o.call(e,r)})})}else if(t.$center||t.$centerSphere){var n=t.$center?"$center":"$centerSphere";t[n].forEach(function(r,i){Array.isArray(r)?r.forEach(function(t,n){r[n]=o.call(e,t)}):t[n][i]=o.call(e,r)})}else t.$geometry&&i(t,this);return t}},1521:(t,e,r)=>{"use strict";var n=r(1751);function o(t){return n.cast()(t)}e.W=o,e.i=function t(e,r){e.forEach(function(n,i){Array.isArray(n)?t(n,r):e[i]=o.call(r,n)})}},6495:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}var o=r(1795),i=r(6670),s=r(2417);t.exports=function(t,e){if(null==t||"object"!==n(t))throw new o("$text",t,e);return null!=t.$search&&(t.$search=s(t.$search,e+".$search")),null!=t.$language&&(t.$language=s(t.$language,e+".$language")),null!=t.$caseSensitive&&(t.$caseSensitive=i(t.$caseSensitive,e+".$castSensitive")),null!=t.$diacriticSensitive&&(t.$diacriticSensitive=i(t.$diacriticSensitive,e+".$diacriticSensitive")),t}},3053:t=>{"use strict";t.exports=function(t){if(Array.isArray(t)){if(!t.every(function(t){return"number"==typeof t||"string"==typeof t}))throw new Error("$type array values must be strings or numbers");return t}if("number"!=typeof t&&"string"!=typeof t)throw new Error("$type parameter must be number, string, or array of numbers and strings");return t}},6542:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,s=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw s}}}}(t);try{for(n.s();!(r=n.n()).done;){var i=r.value;void 0!==i&&this.enumValues.push(this.cast(i))}}catch(t){n.e(t)}finally{n.f()}var a=this.enumValues;return this.enumValidator=function(t){return void 0===t||~a.indexOf(t)},this.validators.push({validator:this.enumValidator,message:e,type:"enum",enumValues:a}),this},p.prototype.lowercase=function(t){var e=this;return arguments.length>0&&!t?this:this.set(function(t){return"string"!=typeof t&&(t=e.cast(t)),t?t.toLowerCase():t})},p.prototype.uppercase=function(t){var e=this;return arguments.length>0&&!t?this:this.set(function(t){return"string"!=typeof t&&(t=e.cast(t)),t?t.toUpperCase():t})},p.prototype.trim=function(t){var e=this;return arguments.length>0&&!t?this:this.set(function(t){return"string"!=typeof t&&(t=e.cast(t)),t?t.trim():t})},p.prototype.minlength=function(t,e){if(this.minlengthValidator&&(this.validators=this.validators.filter(function(t){return t.validator!==this.minlengthValidator},this)),null!=t){var r=e||s.messages.String.minlength;r=r.replace(/{MINLENGTH}/,t),this.validators.push({validator:this.minlengthValidator=function(e){return null===e||e.length>=t},message:r,type:"minlength",minlength:t})}return this},p.prototype.minLength=p.prototype.minlength,p.prototype.maxlength=function(t,e){if(this.maxlengthValidator&&(this.validators=this.validators.filter(function(t){return t.validator!==this.maxlengthValidator},this)),null!=t){var r=e||s.messages.String.maxlength;r=r.replace(/{MAXLENGTH}/,t),this.validators.push({validator:this.maxlengthValidator=function(e){return null===e||e.length<=t},message:r,type:"maxlength",maxlength:t})}return this},p.prototype.maxLength=p.prototype.maxlength,p.prototype.match=function(t,e){var r=e||s.messages.String.match;return this.validators.push({validator:function(e){return!!t&&(t.lastIndex=0,null==e||""===e||t.test(e))},message:r,type:"regexp",regexp:t}),this},p.prototype.checkRequired=function(t,e){return"object"===n(t)&&i._isRef(this,t,e,!0)?null!=t:("function"==typeof this.constructor.checkRequired?this.constructor.checkRequired():p.checkRequired())(t)},p.prototype.cast=function(t,e,r){if("string"!=typeof t&&i._isRef(this,t,e,r))return this._castRef(t,e,r);var n;n="function"==typeof this._castFunction?this._castFunction:"function"==typeof this.constructor.cast?this.constructor.cast():p.cast();try{return n(t)}catch(e){throw new l("string",t,this.path,null,this)}};var d=c.options(i.prototype.$conditionalHandlers,{$all:function(t){var e=this;return Array.isArray(t)?t.map(function(t){return e.castForQuery(t)}):[this.castForQuery(t)]},$gt:h,$gte:h,$lt:h,$lte:h,$options:y,$regex:function(t){return"[object RegExp]"===Object.prototype.toString.call(t)?t:y.call(this,t)},$not:h});Object.defineProperty(p.prototype,"$conditionalHandlers",{configurable:!1,enumerable:!1,writable:!1,value:Object.freeze(d)}),p.prototype.castForQuery=function(t,e){var r;if(2===arguments.length){if(!(r=this.$conditionalHandlers[t]))throw new Error("Can't use "+t+" with String.");return r.call(this,e)}return e=t,"[object RegExp]"===Object.prototype.toString.call(e)||f(e,"BSONRegExp")?e:this._castForQuery(e)},t.exports=p},8107:(t,e)=>{"use strict";e.schemaMixedSymbol=Symbol.for("mongoose:schema_mixed"),e.builtInMiddleware=Symbol.for("mongoose:built-in-middleware")},2729:(t,e,r)=>{"use strict";var n=r(365).lW,o=r(4051),i=r(4289),s=i.CastError,a=r(6872),u=r(4282),c=/[0-9a-f]{8}-[0-9a-f]{4}-[0-9][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i,f=o.Binary;function l(t){"string"!=typeof t&&(t="");var e,r=null!=(e=t.replace(/[{}-]/g,""))&&n.from(e,"hex"),i=new o(r);return i._subtype=4,i}function p(t){var e,r;return"string"!=typeof t&&null!=t?(e=null!=(r=t)&&r.toString("hex")).substring(0,8)+"-"+e.substring(8,12)+"-"+e.substring(12,16)+"-"+e.substring(16,20)+"-"+e.substring(20,32):t}function h(t,e){i.call(this,t,e,"UUID"),this.getters.push(function(t){return null!=t&&null!=t.$__?t:p(t)})}function y(t){return this.cast(t)}function d(t){var e=this;return t.map(function(t){return e.cast(t)})}h.schemaName="UUID",h.defaultOptions={},h.prototype=Object.create(i.prototype),h.prototype.constructor=h,h._cast=function(t){if(null==t)return t;function e(t){var e=new o(t);return e._subtype=4,e}if("string"==typeof t){if(c.test(t))return l(t);throw new s(h.schemaName,t,this.path)}if(n.isBuffer(t))return e(t);if(t instanceof f)return e(t.value(!0));if(t.toString&&t.toString!==Object.prototype.toString&&c.test(t.toString()))return l(t.toString());throw new s(h.schemaName,t,this.path)},h.set=i.set,h.cast=function(t){return 0===arguments.length||(!1===t&&(t=this._defaultCaster),this._cast=t),this._cast},h._checkRequired=function(t){return null!=t},h.checkRequired=i.checkRequired,h.prototype.checkRequired=function(t){return n.isBuffer(t)&&(t=p(t)),null!=t&&c.test(t)},h.prototype.cast=function(t,e,r){if(a.isNonBuiltinObject(t)&&i._isRef(this,t,e,r))return this._castRef(t,e,r);var n;n="function"==typeof this._castFunction?this._castFunction:"function"==typeof this.constructor.cast?this.constructor.cast():h.cast();try{return n(t)}catch(e){throw new s(h.schemaName,t,this.path,e,this)}},h.prototype.$conditionalHandlers=a.options(i.prototype.$conditionalHandlers,{$bitsAllClear:u,$bitsAnyClear:u,$bitsAllSet:u,$bitsAnySet:u,$all:d,$gt:y,$gte:y,$in:d,$lt:y,$lte:y,$ne:y,$nin:d}),h.prototype.castForQuery=function(t,e){var r;if(2===arguments.length){if(!(r=this.$conditionalHandlers[t]))throw new Error("Can't use "+t+" with UUID.");return r.call(this,e)}return this.cast(t)},t.exports=h},4289:(t,e,r)=>{"use strict";var n=r(365).lW;function o(t){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o(t)}var i=r(4888),s=r(4364),a=r(8702),u=r(3053),c=r(8828),f=r(8857),l=r(9130),p=r(1490),h=r(8770).schemaTypeSymbol,y=r(6872),d=r(8770).validatorErrorSymbol,m=r(8770).documentIsModified,v=r(8770).populateModelSymbol,b=i.CastError,g=i.ValidatorError,_={_skipMarkModified:!0};function w(t,e,r){this[h]=!0,this.path=t,this.instance=r,this.validators=[],this.getters=this.constructor.hasOwnProperty("getters")?this.constructor.getters.slice():[],this.setters=[],this.splitPath(),e=e||{};for(var n=this.constructor.defaultOptions||{},i=0,a=Object.keys(n);i1&&(this.defaultValue=Array.prototype.slice.call(arguments)),this.defaultValue},w.prototype.index=function(t){return this._index=t,y.expires(this._index),this},w.prototype.unique=function(t){if(!1===this._index){if(!t)return;throw new Error('Path "'+this.path+'" may not have `index` set to false and `unique` set to true')}return this.options.hasOwnProperty("index")||!1!==t?(null==this._index||!0===this._index?this._index={}:"string"==typeof this._index&&(this._index={type:this._index}),this._index.unique=t,this):this},w.prototype.text=function(t){if(!1===this._index){if(!t)return this;throw new Error('Path "'+this.path+'" may not have `index` set to false and `text` set to true')}return this.options.hasOwnProperty("index")||!1!==t?(null===this._index||void 0===this._index||"boolean"==typeof this._index?this._index={}:"string"==typeof this._index&&(this._index={type:this._index}),this._index.text=t,this):this},w.prototype.sparse=function(t){if(!1===this._index){if(!t)return this;throw new Error('Path "'+this.path+'" may not have `index` set to false and `sparse` set to true')}return this.options.hasOwnProperty("index")||!1!==t?(null==this._index||"boolean"==typeof this._index?this._index={}:"string"==typeof this._index&&(this._index={type:this._index}),this._index.sparse=t,this):this},w.prototype.immutable=function(t){return this.$immutable=t,c(this),this},w.prototype.transform=function(t){return this.options.transform=t,this},w.prototype.set=function(t){if("function"!=typeof t)throw new TypeError("A setter must be a function.");return this.setters.push(t),this},w.prototype.get=function(t){if("function"!=typeof t)throw new TypeError("A getter must be a function.");return this.getters.push(t),this},w.prototype.validate=function(t,e,r){var n,s,a,u;if("function"==typeof t||t&&"RegExp"===y.getFunctionName(t.constructor))return"function"==typeof e?(n={validator:t,message:e}).type=r||"user defined":e instanceof Object&&!r?((n=l(e)?Object.assign({},e):y.clone(e)).message||(n.message=n.msg),n.validator=t,n.type=n.type||"user defined"):(null==e&&(e=i.messages.general.default),r||(r="user defined"),n={message:e,type:r,validator:t}),this.validators.push(n),this;for(s=0,a=arguments.length;s0&&null==t)return this.validators=this.validators.filter(function(t){return t.validator!==this.requiredValidator},this),this.isRequired=!1,delete this.originalRequiredValue,this;if("object"===o(t)&&(e=(r=t).message||e,t=t.isRequired),!1===t)return this.validators=this.validators.filter(function(t){return t.validator!==this.requiredValidator},this),this.isRequired=!1,delete this.originalRequiredValue,this;var n=this;this.isRequired=!0,this.requiredValidator=function(e){var r=this&&this.$__&&this.$__.cachedRequired;if(null!=r&&!this.$__isSelected(n.path)&&!this[m](n.path))return!0;if(null!=r&&n.path in r){var o=!r[n.path]||n.checkRequired(e,this);return delete r[n.path],o}return"function"==typeof t&&!t.apply(this)||n.checkRequired(e,this)},this.originalRequiredValue=t,"string"==typeof t&&(e=t,t=void 0);var s=e||i.messages.general.required;return this.validators.unshift(Object.assign({},r,{validator:this.requiredValidator,message:s,type:"required"})),this},w.prototype.ref=function(t){return this.options.ref=t,this},w.prototype.getDefault=function(t,e,r){var n;if(null!=(n="function"==typeof this.defaultValue?this.defaultValue===Date.now||this.defaultValue===Array||"objectid"===this.defaultValue.name.toLowerCase()?this.defaultValue.call(t):this.defaultValue.call(t,t):this.defaultValue)){if("object"!==o(n)||this.options&&this.options.shared||(n=y.clone(n)),r&&r.skipCast)return this._applySetters(n,t);var i=this.applySetters(n,t,e,void 0,_);return i&&!Array.isArray(i)&&i.$isSingleNested&&(i.$__parent=t),i}return n},w.prototype._applySetters=function(t,e,r,n,o){var i=t;if(r)return i;for(var s=this.setters,a=s.length-1;a>=0;a--)i=s[a].call(e,i,n,this,o);return i},w.prototype._castNullish=function(t){return t},w.prototype.applySetters=function(t,e,r,n,o){var i=this._applySetters(t,e,r,n,o);return null==i?this._castNullish(i):i=this.cast(i,e,r,n,o)},w.prototype.applyGetters=function(t,e){var r=t,n=this.getters,o=n.length;if(0===o)return r;for(var i=0;i{"use strict";r(6872);var n=t.exports=function(){};n.ctor=function(){var t=Array.prototype.slice.call(arguments),e=function(){n.apply(this,arguments),this.paths={},this.states={}};return(e.prototype=new n).stateNames=t,t.forEach(function(t){e.prototype[t]=function(e){this._changeState(e,t)}}),e},n.prototype._changeState=function(t,e){var r=this.states[this.paths[t]];r&&delete r[t],this.paths[t]=e,this.states[e]=this.states[e]||{},this.states[e][t]=!0},n.prototype.clear=function(t){if(null!=this.states[t])for(var e,r=Object.keys(this.states[t]),n=r.length;n--;)e=r[n],delete this.states[t][e],delete this.paths[e]},n.prototype.clearPath=function(t){var e=this.paths[t];e&&(delete this.paths[t],delete this.states[e][t])},n.prototype.getStatePaths=function(t){return null!=this.states[t]?this.states[t]:{}},n.prototype.some=function(){var t=this,e=arguments.length?arguments:this.stateNames;return Array.prototype.some.call(e,function(e){return null!=t.states[e]&&Object.keys(t.states[e]).length})},n.prototype._iter=function(t){return function(){var e=Array.prototype.slice.call(arguments),r=e.pop();e.length||(e=this.stateNames);var n=this;return e.reduce(function(t,e){return null==n.states[e]?t:t.concat(Object.keys(n.states[e]))},[])[t](function(t,e,n){return r(t,e,n)})}},n.prototype.forEach=function(){return this.forEach=this._iter("forEach"),this.forEach.apply(this,arguments)},n.prototype.map=function(){return this.map=this._iter("map"),this.map.apply(this,arguments)}},1568:(t,e,r)=>{"use strict";var n=r(9620).EventEmitter,o=r(2591),i=r(6872),s=r(8770).documentArrayParent;function a(t,e,r,n,a){i.isMongooseDocumentArray(e)?(this.__parentArray=e,this[s]=e.$parent()):(this.__parentArray=void 0,this[s]=void 0),this.$setIndex(a),this.$__parent=this[s],o.call(this,t,n,this[s],r,{isNew:!0})}for(var u in a.prototype=Object.create(o.prototype),a.prototype.constructor=a,Object.defineProperty(a.prototype,"$isSingleNested",{configurable:!1,writable:!1,value:!1}),Object.defineProperty(a.prototype,"$isDocumentArrayElement",{configurable:!1,writable:!1,value:!0}),n.prototype)a[u]=n.prototype[u];a.prototype.$setIndex=function(t){if(this.__index=t,null!=this.$__&&null!=this.$__.validationError)for(var e=0,r=Object.keys(this.$__.validationError.errors);e{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(t,e,r){return(e=function(t){var e=function(t){if("object"!=n(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=n(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==n(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var i=r(8075),s=r(9261),a=r(8727),u=r(8770).arrayAtomicsSymbol,c=r(8770).arrayAtomicsBackupSymbol,f=r(8770).arrayParentSymbol,l=r(8770).arrayPathSymbol,p=r(8770).arraySchemaSymbol,h=Array.prototype.push,y=/^\d+$/;t.exports=function(t,e,r){var n=[],d=o(o(o(o(o({},u,{}),c,void 0),l,e),p,void 0),f,void 0);if(Array.isArray(t)&&(t[l]===e&&t[f]===r&&(d[u]=Object.assign({},t[u])),t.forEach(function(t){h.call(n,t)})),d[l]=e,d.__array=n,r&&r instanceof a)for(d[f]=r,d[p]=r.$__schema.path(e);null!=d[p]&&d[p].$isMongooseArray&&!d[p].$isMongooseDocumentArray;)d[p]=d[p].casterConstructor;var m=new Proxy(n,{get:function(t,e){return"isMongooseArray"===e||"isMongooseArrayProxy"===e||"isMongooseDocumentArray"===e||"isMongooseDocumentArrayProxy"===e||(d.hasOwnProperty(e)?d[e]:s.hasOwnProperty(e)?s[e]:i.hasOwnProperty(e)?i[e]:n[e])},set:function(t,e,r){return"string"==typeof e&&y.test(e)?s.set.call(m,e,r,!1):d.hasOwnProperty(e)?d[e]=r:n[e]=r,!0}});return m}},1255:(t,e)=>{"use strict";e.isMongooseDocumentArray=function(t){return Array.isArray(t)&&t.isMongooseDocumentArray}},9261:(t,e,r)=>{"use strict";var n=r(365).lW;function o(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return i(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,s=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw s}}}}function i(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(t,e,r){return(e=function(t){var e=function(t){if("object"!=n(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=n(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==n(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var i=r(8727),s=r(8075),a=r(8770).arrayAtomicsSymbol,u=r(8770).arrayAtomicsBackupSymbol,c=r(8770).arrayParentSymbol,f=r(8770).arrayPathSymbol,l=r(8770).arraySchemaSymbol,p=Array.prototype.push,h=/^\d+$/;t.exports=function(t,e,r,n){var y;if(Array.isArray(t)){var d=t.length;if(0===d)y=new Array;else if(1===d)(y=new Array(1))[0]=t[0];else if(d<1e4)y=new Array,p.apply(y,t);else{y=new Array;for(var m=0;m{"use strict";e.isMongooseArray=function(t){return Array.isArray(t)&&t.isMongooseArray}},8075:(t,e,r)=>{"use strict";var n=r(365).lW;function o(t){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o(t)}function i(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r0&&this._registerAtomic("$set",this),this},push:function(){var t=arguments,e=t,r=null!=t[0]&&l.hasUserDefinedProperty(t[0],"$each"),n=l.isMongooseArray(this)?this.__array:this;if(r&&(e=t[0],t=t[0].$each),null==this[m])return g.apply(this,t);O(this,t);var o,i=this[y];t=[].map.call(t,this._mapCast,this),t=this[m].applySetters(t,i,void 0,void 0,{skipDocumentArrayCast:!0});var s=this[h];return this._markModified(),r?(e.$each=t,0!==(s.$push&&s.$push.$each&&s.$push.$each.length||0)&&s.$push.$position!=e.$position?(null!=e.$position?([].splice.apply(n,[e.$position,0].concat(t)),o=n.length):o=[].push.apply(n,t),this._registerAtomic("$set",this)):null!=e.$position?([].splice.apply(n,[e.$position,0].concat(t)),o=this.length):o=[].push.apply(n,t)):(e=t,o=[].push.apply(n,t)),this._registerAtomic("$push",e),o},remove:function(){return this.pull.apply(this,arguments)},set:function(t,e,r){var n=this.__array;if(r)return n[t]=e,this;var o=_._cast.call(this,e,t);return _._markModified.call(this,t),n[t]=o,this},shift:function(){var t=l.isMongooseArray(this)?this.__array:this;this._markModified();var e=[].shift.call(t);return this._registerAtomic("$set",this),e},sort:function(){var t=l.isMongooseArray(this)?this.__array:this,e=[].sort.apply(t,arguments);return this._registerAtomic("$set",this),e},splice:function(){var t,e=l.isMongooseArray(this)?this.__array:this;if(this._markModified(),O(this,Array.prototype.slice.call(arguments,2)),arguments.length){var r;if(null==this[m])r=arguments;else{r=[];for(var n=0;n=e.length||null!=t&&"object"===o(t)&&(w(t[e[0]],e,r+1),null!=t[e[0]]&&"object"===o(t[e[0]])&&0===Object.keys(t[e[0]]).length&&delete t[e[0]])}function O(t,e){var r,n,a,u=null==t?null:t[m]&&t[m].caster&&t[m].caster.options&&t[m].caster.options.ref||null;0===t.length&&0!==e.length&&function(t,e){if(!e)return!1;var r,n=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return i(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,s=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw s}}}}(t);try{for(n.s();!(r=n.n()).done;){var o=r.value;if(null==o)return!1;var a=o.constructor;if(!(o instanceof s)||a.modelName!==e&&a.baseModelName!==e)return!1}}catch(t){n.e(t)}finally{n.f()}return!0}(e,u)&&t[y].$populated(t[d],[],(r={},n=v,a=e[0].constructor,(n=function(t){var e=function(t){if("object"!=o(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=o(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==o(e)?e:e+""}(n))in r?Object.defineProperty(r,n,{value:a,enumerable:!0,configurable:!0,writable:!0}):r[n]=a,r))}for(var $=function(){var t=j[S];if(null==Array.prototype[t])return 1;_[t]=function(){var e=l.isMongooseArray(this)?this.__array:this,r=[].concat(e);return r[t].apply(r,arguments)}},S=0,j=["filter","flat","flatMap","map","slice"];S{"use strict";var n=r(365).lW,o=r(9906).get().Binary,i=r(6872);function s(t,e,r){var o,a,c,f,l=t;return null==t&&(l=0),Array.isArray(e)?(a=e[0],c=e[1]):o=e,f="number"==typeof l||l instanceof Number?n.alloc(l):n.from(l,o,r),i.decorate(f,s.mixin),f.isMongooseBuffer=!0,f[s.pathSymbol]=a,f[u]=c,f._subtype=0,f}var a=Symbol.for("mongoose#Buffer#_path"),u=Symbol.for("mongoose#Buffer#_parent");s.pathSymbol=a,s.mixin={_subtype:void 0,_markModified:function(){var t=this[u];return t&&t.markModified(this[s.pathSymbol]),this},write:function(){var t=n.prototype.write.apply(this,arguments);return t>0&&this._markModified(),t},copy:function(t){var e=n.prototype.copy.apply(this,arguments);return t&&t.isMongooseBuffer&&t._markModified(),e}},i.each(["writeUInt8","writeUInt16","writeUInt32","writeInt8","writeInt16","writeInt32","writeFloat","writeDouble","fill","utf8Write","binaryWrite","asciiWrite","set","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE"],function(t){n.prototype[t]&&(s.mixin[t]=function(){var e=n.prototype[t].apply(this,arguments);return this._markModified(),e})}),s.mixin.toObject=function(t){var e="number"==typeof t?t:this._subtype||0;return new o(n.from(this),e)},s.mixin.$toObject=s.mixin.toObject,s.mixin.toBSON=function(){return new o(this,this._subtype||0)},s.mixin.equals=function(t){if(!n.isBuffer(t))return!1;if(this.length!==t.length)return!1;for(var e=0;e{"use strict";t.exports=r(9906).get().Decimal128},8941:(t,e,r)=>{"use strict";e.Array=r(1362),e.Buffer=r(4051),e.Document=e.Embedded=r(1568),e.DocumentArray=r(6077),e.Decimal128=r(5003),e.ObjectId=r(6079),e.Map=r(3828),e.Subdocument=r(2591)},3828:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return i(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,s=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw s}}}}function i(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r{"use strict";var n=r(9906).get().ObjectId,o=r(8770).objectIdSymbol;Object.defineProperty(n.prototype,"_id",{enumerable:!1,configurable:!0,get:function(){return this}}),n.prototype.hasOwnProperty("valueOf")||(n.prototype.valueOf=function(){return this.toString()}),n.prototype[o]=!0,t.exports=n},2591:(t,e,r)=>{"use strict";var n=r(8727),o=r(1490),i=r(4962).h,s=r(8486),a=r(8751),u=r(6872);function c(t,e,r,o,i){if(null!=r){var s={isNew:r.isNew};"defaults"in r.$__&&(s.defaults=r.$__.defaults),i=Object.assign(s,i)}null!=i&&null!=i.path&&(this.$basePath=i.path),n.call(this,t,e,o,i),delete this.$__.priorDoc}t.exports=c,c.prototype=Object.create(n.prototype),Object.defineProperty(c.prototype,"$isSubdocument",{configurable:!1,writable:!1,value:!0}),Object.defineProperty(c.prototype,"$isSingleNested",{configurable:!1,writable:!1,value:!0}),c.prototype.toBSON=function(){return this.toObject(i)},c.prototype.save=function(t,e){var r=this;return"function"==typeof t&&(e=t,t={}),(t=t||{}).suppressWarning||u.warn("mongoose: calling `save()` on a subdoc does **not** save the document to MongoDB, it only runs save middleware. Use `subdoc.save({ suppressWarning: true })` to hide this warning if you're sure this behavior is right for your app."),s(e,function(t){r.$__save(t)})},c.prototype.$__fullPath=function(t){return this.$__.fullPath||this.ownerDocument(),t?this.$__.fullPath+"."+t:this.$__.fullPath},c.prototype.$__pathRelativeToParent=function(t){return null==t?this.$basePath:[this.$basePath,t].join(".")},c.prototype.$__save=function(t){var e=this;return o(function(){return t(null,e)})},c.prototype.$isValid=function(t){var e=this.$parent(),r=this.$__pathRelativeToParent(t);return null!=e&&null!=r?e.$isValid(r):n.prototype.$isValid.call(this,t)},c.prototype.markModified=function(t){n.prototype.markModified.call(this,t);var e=this.$parent(),r=this.$__pathRelativeToParent(t);if(null!=e&&null!=r){var o=this.$__pathRelativeToParent().replace(/\.$/,"");e.isDirectModified(o)||this.isNew||this.$__parent.markModified(r,this)}},c.prototype.isModified=function(t,e,r){var o=this,i=this.$parent();return null!=i?(Array.isArray(t)||"string"==typeof t?t=(t=Array.isArray(t)?t:t.split(" ")).map(function(t){return o.$__pathRelativeToParent(t)}).filter(function(t){return null!=t}):t||(t=this.$__pathRelativeToParent()),i.$isModified(t,e,r)):n.prototype.isModified.call(this,t,e,r)},c.prototype.$markValid=function(t){n.prototype.$markValid.call(this,t);var e=this.$parent(),r=this.$__pathRelativeToParent(t);null!=e&&null!=r&&e.$markValid(r)},c.prototype.invalidate=function(t,e,r){n.prototype.invalidate.call(this,t,e,r);var o=this.$parent(),i=this.$__pathRelativeToParent(t);if(null!=o&&null!=i)o.invalidate(i,e,r);else if("cast"===e.kind||"CastError"===e.name||null==i)throw e;return this.ownerDocument().$__.validationError},c.prototype.$ignore=function(t){n.prototype.$ignore.call(this,t);var e=this.$parent(),r=this.$__pathRelativeToParent(t);null!=e&&null!=r&&e.$ignore(r)},c.prototype.ownerDocument=function(){if(this.$__.ownerDocument)return this.$__.ownerDocument;for(var t=this,e=[],r=new Set([t]);"function"==typeof t.$__pathRelativeToParent;){e.unshift(t.$__pathRelativeToParent(void 0,!0));var n=t.$parent();if(null==n)break;if(t=n,r.has(t))throw new Error("Infinite subdocument loop: subdoc with _id "+t._id+" is a parent of itself");r.add(t)}return this.$__.fullPath=e.join("."),this.$__.ownerDocument=t,this.$__.ownerDocument},c.prototype.$__fullPathWithIndexes=function(){for(var t=this,e=[],r=new Set([t]);"function"==typeof t.$__pathRelativeToParent;){e.unshift(t.$__pathRelativeToParent(void 0,!1));var n=t.$parent();if(null==n)break;if(t=n,r.has(t))throw new Error("Infinite subdocument loop: subdoc with _id "+t._id+" is a parent of itself");r.add(t)}return e.join(".")},c.prototype.parent=function(){return this.$__parent},c.prototype.$parent=c.prototype.parent,c.prototype.$__remove=function(t){if(null!=t)return t(null,this)},c.prototype.$__removeFromParent=function(){this.$__parent.set(this.$basePath,null)},c.prototype.remove=function(t,e){return"function"==typeof t&&(e=t,t=null),function(t){var e=t.ownerDocument();function r(){e.$removeListener("save",r),e.$removeListener("remove",r),t.emit("remove",t),t.constructor.emit("remove",t),e=t=null}e.$on("save",r),e.$on("remove",r)}(this),t&&t.noop||this.$__removeFromParent(),this.$__remove(e)},c.prototype.populate=function(){throw new Error('Mongoose does not support calling populate() on nested docs. Instead of `doc.nested.populate("path")`, use `doc.populate("nested.path")`')},c.prototype.inspect=function(){return this.toObject({transform:!1,virtuals:!1,flattenDecimals:!1})},a.inspect.custom&&(c.prototype[a.inspect.custom]=c.prototype.inspect)},6872:(t,e,r)=>{"use strict";var n=r(365).lW;function o(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return i(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,s=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw s}}}}function i(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r=0;l--)if(u[l]!==c[l])return!1;for(var p=0,h=u;p0)return t[t.length-1]},e.clone=h,e.promiseOrCallback=w,e.cloneArrays=function(t){return Array.isArray(t)?t.map(function(t){return e.cloneArrays(t)}):t},e.omit=function(t,e){if(null==e)return Object.assign({},t);Array.isArray(e)||(e=[e]);var r,n=Object.assign({},t),i=o(e);try{for(i.s();!(r=i.n()).done;)delete n[r.value]}catch(t){i.e(t)}finally{i.f()}return n},e.options=function(t,e){var r,n=Object.keys(t),o=n.length;for(e=e||{};o--;)(r=n[o])in e||(e[r]=t[r]);return e},e.merge=function t(r,n,o,i){o=o||{};var s,a=Object.keys(n),u=0,c=a.length;n[S]&&(r[S]=n[S]),i=i||"";for(var f=o.omitNested||{};u=0&&t<=E:"string"==typeof t&&!!/^\d+$/.test(t)&&(t=+t)>=0&&t<=E},e.array.unique=function(t){var e,r=new Set,n=new Set,i=[],s=o(t);try{for(s.s();!(e=s.n()).done;){var a=e.value;if("number"==typeof a||"string"==typeof a||null==a){if(r.has(a))continue;i.push(a),r.add(a)}else if(b(a,"ObjectID")){if(n.has(a.toString()))continue;i.push(a),n.add(a.toString())}else i.push(a)}}catch(t){s.e(t)}finally{s.f()}return i},e.buffer={},e.buffer.areEqual=function(t,e){if(!n.isBuffer(t))return!1;if(!n.isBuffer(e))return!1;if(t.length!==e.length)return!1;for(var r=0,o=t.length;r{"use strict";function n(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return o(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,s=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw s}}}}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r0||this.setters.length>0)){var t="$"+this.path;this.getters.push(function(){return this.$locals[t]}),this.setters.push(function(e){this.$locals[t]=e})}},s.prototype.clone=function(){var t=new s(this.options,this.path);return t.getters=[].concat(this.getters),t.setters=[].concat(this.setters),t},s.prototype.get=function(t){return this.getters.push(t),this},s.prototype.set=function(t){return this.setters.push(t),this},s.prototype.applyGetters=function(t,e){i.hasUserDefinedProperty(this.options,["ref","refPath"])&&e.$$populatedVirtuals&&e.$$populatedVirtuals.hasOwnProperty(this.path)&&(t=e.$$populatedVirtuals[this.path]);var r,o=t,s=n(this.getters);try{for(s.s();!(r=s.n()).done;)o=r.value.call(e,o,this,e)}catch(t){s.e(t)}finally{s.f()}return o},s.prototype.applySetters=function(t,e){var r,o=t,i=n(this.setters);try{for(i.s();!(r=i.n()).done;)o=r.value.call(e,o,this,e)}catch(t){i.e(t)}finally{i.f()}return o},t.exports=s},9373:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(t){return o="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(t){return n(t)}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":n(t)},o(t)}var i,s,a=r(9978).codes,u=a.ERR_AMBIGUOUS_ARGUMENT,c=a.ERR_INVALID_ARG_TYPE,f=a.ERR_INVALID_ARG_VALUE,l=a.ERR_INVALID_RETURN_VALUE,p=a.ERR_MISSING_ARGS,h=r(1935),y=r(8751).inspect,d=r(8751).types,m=d.isPromise,v=d.isRegExp,b=Object.assign?Object.assign:r(8028).assign,g=Object.is?Object.is:r(4710);function _(){var t=r(9015);i=t.isDeepEqual,s=t.isDeepStrictEqual}new Map;var w=!1,O=t.exports=A,$={};function S(t){if(t.message instanceof Error)throw t.message;throw new h(t)}function j(t,e,r,n){if(!r){var o=!1;if(0===e)o=!0,n="No value argument passed to `assert.ok()`";else if(n instanceof Error)throw n;var i=new h({actual:r,expected:!0,message:n,operator:"==",stackStartFn:t});throw i.generatedMessage=o,i}}function A(){for(var t=arguments.length,e=new Array(t),r=0;r1?r-1:0),o=1;o1?r-1:0),o=1;o1?r-1:0),o=1;o1?r-1:0),o=1;o{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function i(t,e){for(var r=0;rt.length)&&(r=t.length),t.substring(r-e.length,r)===e}var m="",v="",b="",g="",_={deepStrictEqual:"Expected values to be strictly deep-equal:",strictEqual:"Expected values to be strictly equal:",strictEqualObject:'Expected "actual" to be reference-equal to "expected":',deepEqual:"Expected values to be loosely deep-equal:",equal:"Expected values to be loosely equal:",notDeepStrictEqual:'Expected "actual" not to be strictly deep-equal to:',notStrictEqual:'Expected "actual" to be strictly unequal to:',notStrictEqualObject:'Expected "actual" not to be reference-equal to "expected":',notDeepEqual:'Expected "actual" not to be loosely deep-equal to:',notEqual:'Expected "actual" to be loosely unequal to:',notIdentical:"Values identical but not reference-equal:"};function w(t){var e=Object.keys(t),r=Object.create(Object.getPrototypeOf(t));return e.forEach(function(e){r[e]=t[e]}),Object.defineProperty(r,"message",{value:t.message}),r}function O(t){return h(t,{compact:!1,customInspect:!1,depth:1e3,maxArrayLength:1/0,showHidden:!1,breakLength:1/0,showProxy:!1,sorted:!0,getters:!0})}var $=function(t){function e(t){var r;if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),"object"!==p(t)||null===t)throw new y("options","Object",t);var n=t.message,o=t.operator,i=t.stackStartFn,u=t.actual,c=t.expected,f=Error.stackTraceLimit;if(Error.stackTraceLimit=0,null!=n)r=s(this,l(e).call(this,String(n)));else if({env:{}}.stderr&&{env:{}}.stderr.isTTY&&({env:{}}.stderr&&{env:{}}.stderr.getColorDepth&&1!=={env:{}}.stderr.getColorDepth()?(m="",v="",g="",b=""):(m="",v="",g="",b="")),"object"===p(u)&&null!==u&&"object"===p(c)&&null!==c&&"stack"in u&&u instanceof Error&&"stack"in c&&c instanceof Error&&(u=w(u),c=w(c)),"deepStrictEqual"===o||"strictEqual"===o)r=s(this,l(e).call(this,function(t,e,r){var n="",o="",i=0,s="",a=!1,u=O(t),c=u.split("\n"),f=O(e).split("\n"),l=0,h="";if("strictEqual"===r&&"object"===p(t)&&"object"===p(e)&&null!==t&&null!==e&&(r="strictEqualObject"),1===c.length&&1===f.length&&c[0]!==f[0]){var y=c[0].length+f[0].length;if(y<=10){if(!("object"===p(t)&&null!==t||"object"===p(e)&&null!==e||0===t&&0===e))return"".concat(_[r],"\n\n")+"".concat(c[0]," !== ").concat(f[0],"\n")}else if("strictEqualObject"!==r&&y<({env:{}}.stderr&&{env:{}}.stderr.isTTY?{env:{}}.stderr.columns:80)){for(;c[0][l]===f[0][l];)l++;l>2&&(h="\n ".concat(function(t,e){if(e=Math.floor(e),0==t.length||0==e)return"";var r=t.length*e;for(e=Math.floor(Math.log(e)/Math.log(2));e;)t+=t,e--;return t+t.substring(0,r-t.length)}(" ",l),"^"),l=0)}}for(var w=c[c.length-1],$=f[f.length-1];w===$&&(l++<2?s="\n ".concat(w).concat(s):n=w,c.pop(),f.pop(),0!==c.length&&0!==f.length);)w=c[c.length-1],$=f[f.length-1];var S=Math.max(c.length,f.length);if(0===S){var j=u.split("\n");if(j.length>30)for(j[26]="".concat(m,"...").concat(g);j.length>27;)j.pop();return"".concat(_.notIdentical,"\n\n").concat(j.join("\n"),"\n")}l>3&&(s="\n".concat(m,"...").concat(g).concat(s),a=!0),""!==n&&(s="\n ".concat(n).concat(s),n="");var A=0,E=_[r]+"\n".concat(v,"+ actual").concat(g," ").concat(b,"- expected").concat(g),P=" ".concat(m,"...").concat(g," Lines skipped");for(l=0;l1&&l>2&&(x>4?(o+="\n".concat(m,"...").concat(g),a=!0):x>3&&(o+="\n ".concat(f[l-2]),A++),o+="\n ".concat(f[l-1]),A++),i=l,n+="\n".concat(b,"-").concat(g," ").concat(f[l]),A++;else if(f.length1&&l>2&&(x>4?(o+="\n".concat(m,"...").concat(g),a=!0):x>3&&(o+="\n ".concat(c[l-2]),A++),o+="\n ".concat(c[l-1]),A++),i=l,o+="\n".concat(v,"+").concat(g," ").concat(c[l]),A++;else{var k=f[l],M=c[l],T=M!==k&&(!d(M,",")||M.slice(0,-1)!==k);T&&d(k,",")&&k.slice(0,-1)===M&&(T=!1,M+=","),T?(x>1&&l>2&&(x>4?(o+="\n".concat(m,"...").concat(g),a=!0):x>3&&(o+="\n ".concat(c[l-2]),A++),o+="\n ".concat(c[l-1]),A++),i=l,o+="\n".concat(v,"+").concat(g," ").concat(M),n+="\n".concat(b,"-").concat(g," ").concat(k),A+=2):(o+=n,n="",1!==x&&0!==l||(o+="\n ".concat(M),A++))}if(A>20&&l30)for($[26]="".concat(m,"...").concat(g);$.length>27;)$.pop();r=1===$.length?s(this,l(e).call(this,"".concat(h," ").concat($[0]))):s(this,l(e).call(this,"".concat(h,"\n\n").concat($.join("\n"),"\n")))}else{var S=O(u),j="",A=_[o];"notDeepEqual"===o||"notEqual"===o?(S="".concat(_[o],"\n\n").concat(S)).length>1024&&(S="".concat(S.slice(0,1021),"...")):(j="".concat(O(c)),S.length>512&&(S="".concat(S.slice(0,509),"...")),j.length>512&&(j="".concat(j.slice(0,509),"...")),"deepEqual"===o||"equal"===o?S="".concat(A,"\n\n").concat(S,"\n\nshould equal\n\n"):j=" ".concat(o," ").concat(j)),r=s(this,l(e).call(this,"".concat(S).concat(j)))}return Error.stackTraceLimit=f,r.generatedMessage=!n,Object.defineProperty(a(r),"name",{value:"AssertionError [ERR_ASSERTION]",enumerable:!1,writable:!0,configurable:!0}),r.code="ERR_ASSERTION",r.actual=u,r.expected=c,r.operator=o,Error.captureStackTrace&&Error.captureStackTrace(a(r),i),r.stack,r.name="AssertionError",s(r)}var r,n;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&f(t,e)}(e,t),r=e,n=[{key:"toString",value:function(){return"".concat(this.name," [").concat(this.code,"]: ").concat(this.message)}},{key:h.custom,value:function(t,e){return h(this,function(t){for(var e=1;e{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(t){return o="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(t){return n(t)}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":n(t)},o(t)}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}function s(t,e){return s=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},s(t,e)}var a,u,c={};function f(t,e,r){r||(r=Error);var n=function(r){function n(r,s,a){var u;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),u=function(t,e){return!e||"object"!==o(e)&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}(this,i(n).call(this,function(t,r,n){return"string"==typeof e?e:e(t,r,n)}(r,s,a))),u.code=t,u}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&s(t,e)}(n,r),n}(r);c[t]=n}function l(t,e){if(Array.isArray(t)){var r=t.length;return t=t.map(function(t){return String(t)}),r>2?"one of ".concat(e," ").concat(t.slice(0,r-1).join(", "),", or ")+t[r-1]:2===r?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}return"of ".concat(e," ").concat(String(t))}f("ERR_AMBIGUOUS_ARGUMENT",'The "%s" argument is ambiguous. %s',TypeError),f("ERR_INVALID_ARG_TYPE",function(t,e,n){var i,s,u,c,f;if(void 0===a&&(a=r(9373)),a("string"==typeof t,"'name' must be a string"),"string"==typeof e&&(s="not ",e.substr(0,4)===s)?(i="must not be",e=e.replace(/^not /,"")):i="must be",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-9,r)===e}(t," argument"))u="The ".concat(t," ").concat(i," ").concat(l(e,"type"));else{var p=("number"!=typeof f&&(f=0),f+1>(c=t).length||-1===c.indexOf(".",f)?"argument":"property");u='The "'.concat(t,'" ').concat(p," ").concat(i," ").concat(l(e,"type"))}return u+". Received type ".concat(o(n))},TypeError),f("ERR_INVALID_ARG_VALUE",function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"is invalid";void 0===u&&(u=r(8751));var o=u.inspect(e);return o.length>128&&(o="".concat(o.slice(0,128),"...")),"The argument '".concat(t,"' ").concat(n,". Received ").concat(o)},TypeError,RangeError),f("ERR_INVALID_RETURN_VALUE",function(t,e,r){var n;return n=r&&r.constructor&&r.constructor.name?"instance of ".concat(r.constructor.name):"type ".concat(o(r)),"Expected ".concat(t,' to be returned from the "').concat(e,'"')+" function but got ".concat(n,".")},TypeError),f("ERR_MISSING_ARGS",function(){for(var t=arguments.length,e=new Array(t),n=0;n0,"At least one arg needs to be specified");var o="The ",i=e.length;switch(e=e.map(function(t){return'"'.concat(t,'"')}),i){case 1:o+="".concat(e[0]," argument");break;case 2:o+="".concat(e[0]," and ").concat(e[1]," arguments");break;default:o+=e.slice(0,i-1).join(", "),o+=", and ".concat(e[i-1]," arguments")}return"".concat(o," must be specified")},TypeError),t.exports.codes=c},9015:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=[],n=!0,o=!1,i=void 0;try{for(var s,a=t[Symbol.iterator]();!(n=(s=a.next()).done)&&(r.push(s.value),!e||r.length!==e);n=!0);}catch(t){o=!0,i=t}finally{try{n||null==a.return||a.return()}finally{if(o)throw i}}return r}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function i(t){return i="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(t){return n(t)}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":n(t)},i(t)}var s=void 0!==/a/g.flags,a=function(t){var e=[];return t.forEach(function(t){return e.push(t)}),e},u=function(t){var e=[];return t.forEach(function(t,r){return e.push([r,t])}),e},c=Object.is?Object.is:r(4710),f=Object.getOwnPropertySymbols?Object.getOwnPropertySymbols:function(){return[]},l=Number.isNaN?Number.isNaN:r(2191);function p(t){return t.call.bind(t)}var h=p(Object.prototype.hasOwnProperty),y=p(Object.prototype.propertyIsEnumerable),d=p(Object.prototype.toString),m=r(8751).types,v=m.isAnyArrayBuffer,b=m.isArrayBufferView,g=m.isDate,_=m.isMap,w=m.isRegExp,O=m.isSet,$=m.isNativeError,S=m.isBoxedPrimitive,j=m.isNumberObject,A=m.isStringObject,E=m.isBooleanObject,P=m.isBigIntObject,x=m.isSymbolObject,k=m.isFloat32Array,M=m.isFloat64Array;function T(t){if(0===t.length||t.length>10)return!0;for(var e=0;e57)return!0}return 10===t.length&&t>=Math.pow(2,32)}function N(t){return Object.keys(t).filter(T).concat(f(t).filter(Object.prototype.propertyIsEnumerable.bind(t)))}function I(t,e){if(t===e)return 0;for(var r=t.length,n=e.length,o=0,i=Math.min(r,n);o{"use strict";e.byteLength=function(t){var e=a(t),r=e[0],n=e[1];return 3*(r+n)/4-n},e.toByteArray=function(t){var e,r,i=a(t),s=i[0],u=i[1],c=new o(function(t,e,r){return 3*(e+r)/4-r}(0,s,u)),f=0,l=u>0?s-4:s;for(r=0;r>16&255,c[f++]=e>>8&255,c[f++]=255&e;return 2===u&&(e=n[t.charCodeAt(r)]<<2|n[t.charCodeAt(r+1)]>>4,c[f++]=255&e),1===u&&(e=n[t.charCodeAt(r)]<<10|n[t.charCodeAt(r+1)]<<4|n[t.charCodeAt(r+2)]>>2,c[f++]=e>>8&255,c[f++]=255&e),c},e.fromByteArray=function(t){for(var e,n=t.length,o=n%3,i=[],s=16383,a=0,u=n-o;au?u:a+s));return 1===o?(e=t[n-1],i.push(r[e>>2]+r[e<<4&63]+"==")):2===o&&(e=(t[n-2]<<8)+t[n-1],i.push(r[e>>10]+r[e>>4&63]+r[e<<2&63]+"=")),i.join("")};for(var r=[],n=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0;s<64;++s)r[s]=i[s],n[i.charCodeAt(s)]=s;function a(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function u(t){return r[t>>18&63]+r[t>>12&63]+r[t>>6&63]+r[63&t]}function c(t,e,r){for(var n,o=[],i=e;i{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}r.d(e,{Decimal128:()=>it,Kb:()=>R,hb:()=>C,t4:()=>ht});for(var o=[],i=[],s="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",u=0;u<64;++u)o[u]=a[u],i[a.charCodeAt(u)]=u;function c(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function f(t){return o[t>>18&63]+o[t>>12&63]+o[t>>6&63]+o[63&t]}function l(t,e,r){for(var n,o=[],i=e;i0?o-4:o;for(r=0;r>16&255,u[f++]=e>>8&255,u[f++]=255&e;return 2===a&&(e=i[t.charCodeAt(r)]<<2|i[t.charCodeAt(r+1)]>>4,u[f++]=255&e),1===a&&(e=i[t.charCodeAt(r)]<<10|i[t.charCodeAt(r+1)]<<4|i[t.charCodeAt(r+2)]>>2,u[f++]=e>>8&255,u[f++]=255&e),u},h=function(t){for(var e,r=t.length,n=r%3,i=[],s=16383,a=0,u=r-n;au?u:a+s));return 1===n?(e=t[r-1],i.push(o[e>>2]+o[e<<4&63]+"==")):2===n&&(e=(t[r-2]<<8)+t[r-1],i.push(o[e>>10]+o[e>>4&63]+o[e<<2&63]+"=")),i.join("")},y=function(t,e,r,n,o){var i,s,a=8*o-n-1,u=(1<>1,f=-7,l=r?o-1:0,p=r?-1:1,h=t[e+l];for(l+=p,i=h&(1<<-f)-1,h>>=-f,f+=a;f>0;i=256*i+t[e+l],l+=p,f-=8);for(s=i&(1<<-f)-1,i>>=-f,f+=n;f>0;s=256*s+t[e+l],l+=p,f-=8);if(0===i)i=1-c;else{if(i===u)return s?NaN:1/0*(h?-1:1);s+=Math.pow(2,n),i-=c}return(h?-1:1)*s*Math.pow(2,i-n)},d=function(t,e,r,n,o,i){var s,a,u,c=8*i-o-1,f=(1<>1,p=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,h=n?0:i-1,y=n?1:-1,d=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=f):(s=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-s))<1&&(s--,u*=2),(e+=s+l>=1?p/u:p*Math.pow(2,1-l))*u>=2&&(s++,u/=2),s+l>=f?(a=0,s=f):s+l>=1?(a=(e*u-1)*Math.pow(2,o),s+=l):(a=e*Math.pow(2,l-1)*Math.pow(2,o),s=0));o>=8;t[r+h]=255&a,h+=y,a/=256,o-=8);for(s=s<0;t[r+h]=255&s,h+=y,s/=256,c-=8);t[r+h-y]|=128*d},m=function(t,e){return function(t,e){var r="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=i,e.SlowBuffer=function(t){return+t!=t&&(t=0),i.alloc(+t)},e.INSPECT_MAX_BYTES=50;var n=2147483647;function o(t){if(t>n)throw new RangeError('The value "'+t+'" is invalid for option "size"');var e=new Uint8Array(t);return Object.setPrototypeOf(e,i.prototype),e}function i(t,e,r){if("number"==typeof t){if("string"==typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return u(t)}return s(t,e,r)}function s(t,e,r){if("string"==typeof t)return function(t,e){if("string"==typeof e&&""!==e||(e="utf8"),!i.isEncoding(e))throw new TypeError("Unknown encoding: "+e);var r=0|m(t,e),n=o(r),s=n.write(t,e);return s!==r&&(n=n.slice(0,s)),n}(t,e);if(ArrayBuffer.isView(t))return function(t){if(L(t,Uint8Array)){var e=new Uint8Array(t);return f(e.buffer,e.byteOffset,e.byteLength)}return c(t)}(t);if(null==t)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+babelHelpers.typeof(t));if(L(t,ArrayBuffer)||t&&L(t.buffer,ArrayBuffer))return f(t,e,r);if("undefined"!=typeof SharedArrayBuffer&&(L(t,SharedArrayBuffer)||t&&L(t.buffer,SharedArrayBuffer)))return f(t,e,r);if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');var n=t.valueOf&&t.valueOf();if(null!=n&&n!==t)return i.from(n,e,r);var s=function(t){if(i.isBuffer(t)){var e=0|l(t.length),r=o(e);return 0===r.length||t.copy(r,0,0,e),r}return void 0!==t.length?"number"!=typeof t.length||V(t.length)?o(0):c(t):"Buffer"===t.type&&Array.isArray(t.data)?c(t.data):void 0}(t);if(s)return s;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return i.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+babelHelpers.typeof(t))}function a(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function u(t){return a(t),o(t<0?0:0|l(t))}function c(t){for(var e=t.length<0?0:0|l(t.length),r=o(e),n=0;n=n)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+n.toString(16)+" bytes");return 0|t}function m(t,e){if(i.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||L(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+babelHelpers.typeof(t));var r=t.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;for(var o=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return U(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return F(t).length;default:if(o)return n?-1:U(t).length;e=(""+e).toLowerCase(),o=!0}}function v(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return M(this,e,r);case"utf8":case"utf-8":return E(this,e,r);case"ascii":return x(this,e,r);case"latin1":case"binary":return k(this,e,r);case"base64":return A(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return T(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function b(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function g(t,e,r,n,o){if(0===t.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),V(r=+r)&&(r=o?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(o)return-1;r=t.length-1}else if(r<0){if(!o)return-1;r=0}if("string"==typeof e&&(e=i.from(e,n)),i.isBuffer(e))return 0===e.length?-1:_(t,e,r,n,o);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):_(t,[e],r,n,o);throw new TypeError("val must be string, number or Buffer")}function _(t,e,r,n,o){var i,s=1,a=t.length,u=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;s=2,a/=2,u/=2,r/=2}function c(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(o){var f=-1;for(i=r;ia&&(r=a-u),i=r;i>=0;i--){for(var l=!0,p=0;po&&(n=o):n=o;var i=e.length;n>i/2&&(n=i/2);for(var s=0;s>8,o=r%256,i.push(o),i.push(n);return i}(e,t.length-r),t,r,n)}function A(t,e,r){return 0===e&&r===t.length?h(t):h(t.slice(e,r))}function E(t,e,r){r=Math.min(t.length,r);for(var n=[],o=e;o239?4:c>223?3:c>191?2:1;if(o+l<=r)switch(l){case 1:c<128&&(f=c);break;case 2:128==(192&(i=t[o+1]))&&(u=(31&c)<<6|63&i)>127&&(f=u);break;case 3:i=t[o+1],s=t[o+2],128==(192&i)&&128==(192&s)&&(u=(15&c)<<12|(63&i)<<6|63&s)>2047&&(u<55296||u>57343)&&(f=u);break;case 4:i=t[o+1],s=t[o+2],a=t[o+3],128==(192&i)&&128==(192&s)&&128==(192&a)&&(u=(15&c)<<18|(63&i)<<12|(63&s)<<6|63&a)>65535&&u<1114112&&(f=u)}null===f?(f=65533,l=1):f>65535&&(f-=65536,n.push(f>>>10&1023|55296),f=56320|1023&f),n.push(f),o+=l}return function(t){var e=t.length;if(e<=P)return String.fromCharCode.apply(String,t);for(var r="",n=0;nn.length?i.from(s).copy(n,o):Uint8Array.prototype.set.call(n,s,o);else{if(!i.isBuffer(s))throw new TypeError('"list" argument must be an Array of Buffers');s.copy(n,o)}o+=s.length}return n},i.byteLength=m,i.prototype._isBuffer=!0,i.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;er&&(t+=" ... "),""},r&&(i.prototype[r]=i.prototype.inspect),i.prototype.compare=function(t,e,r,n,o){if(L(t,Uint8Array)&&(t=i.from(t,t.offset,t.byteLength)),!i.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+babelHelpers.typeof(t));if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===o&&(o=this.length),e<0||r>t.length||n<0||o>this.length)throw new RangeError("out of range index");if(n>=o&&e>=r)return 0;if(n>=o)return-1;if(e>=r)return 1;if(this===t)return 0;for(var s=(o>>>=0)-(n>>>=0),a=(r>>>=0)-(e>>>=0),u=Math.min(s,a),c=this.slice(n,o),f=t.slice(e,r),l=0;l>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var o=this.length-e;if((void 0===r||r>o)&&(r=o),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var i=!1;;)switch(n){case"hex":return w(this,t,e,r);case"utf8":case"utf-8":return O(this,t,e,r);case"ascii":case"latin1":case"binary":return $(this,t,e,r);case"base64":return S(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return j(this,t,e,r);default:if(i)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),i=!0}},i.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var P=4096;function x(t,e,r){var n="";r=Math.min(t.length,r);for(var o=e;on)&&(r=n);for(var o="",i=e;ir)throw new RangeError("Trying to access beyond buffer length")}function I(t,e,r,n,o,s){if(!i.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>o||et.length)throw new RangeError("Index out of range")}function D(t,e,r,n,o,i){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function R(t,e,r,n,o){return e=+e,r>>>=0,o||D(t,0,r,4),d(t,e,r,n,23,4),r+4}function C(t,e,r,n,o){return e=+e,r>>>=0,o||D(t,0,r,8),d(t,e,r,n,52,8),r+8}i.prototype.slice=function(t,e){var r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e>>=0,e>>>=0,r||N(t,e,this.length);for(var n=this[t],o=1,i=0;++i>>=0,e>>>=0,r||N(t,e,this.length);for(var n=this[t+--e],o=1;e>0&&(o*=256);)n+=this[t+--e]*o;return n},i.prototype.readUint8=i.prototype.readUInt8=function(t,e){return t>>>=0,e||N(t,1,this.length),this[t]},i.prototype.readUint16LE=i.prototype.readUInt16LE=function(t,e){return t>>>=0,e||N(t,2,this.length),this[t]|this[t+1]<<8},i.prototype.readUint16BE=i.prototype.readUInt16BE=function(t,e){return t>>>=0,e||N(t,2,this.length),this[t]<<8|this[t+1]},i.prototype.readUint32LE=i.prototype.readUInt32LE=function(t,e){return t>>>=0,e||N(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},i.prototype.readUint32BE=i.prototype.readUInt32BE=function(t,e){return t>>>=0,e||N(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},i.prototype.readIntLE=function(t,e,r){t>>>=0,e>>>=0,r||N(t,e,this.length);for(var n=this[t],o=1,i=0;++i=(o*=128)&&(n-=Math.pow(2,8*e)),n},i.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||N(t,e,this.length);for(var n=e,o=1,i=this[t+--n];n>0&&(o*=256);)i+=this[t+--n]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*e)),i},i.prototype.readInt8=function(t,e){return t>>>=0,e||N(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},i.prototype.readInt16LE=function(t,e){t>>>=0,e||N(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},i.prototype.readInt16BE=function(t,e){t>>>=0,e||N(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},i.prototype.readInt32LE=function(t,e){return t>>>=0,e||N(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},i.prototype.readInt32BE=function(t,e){return t>>>=0,e||N(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},i.prototype.readFloatLE=function(t,e){return t>>>=0,e||N(t,4,this.length),y(this,t,!0,23,4)},i.prototype.readFloatBE=function(t,e){return t>>>=0,e||N(t,4,this.length),y(this,t,!1,23,4)},i.prototype.readDoubleLE=function(t,e){return t>>>=0,e||N(t,8,this.length),y(this,t,!0,52,8)},i.prototype.readDoubleBE=function(t,e){return t>>>=0,e||N(t,8,this.length),y(this,t,!1,52,8)},i.prototype.writeUintLE=i.prototype.writeUIntLE=function(t,e,r,n){t=+t,e>>>=0,r>>>=0,n||I(this,t,e,r,Math.pow(2,8*r)-1,0);var o=1,i=0;for(this[e]=255&t;++i>>=0,r>>>=0,n||I(this,t,e,r,Math.pow(2,8*r)-1,0);var o=r-1,i=1;for(this[e+o]=255&t;--o>=0&&(i*=256);)this[e+o]=t/i&255;return e+r},i.prototype.writeUint8=i.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||I(this,t,e,1,255,0),this[e]=255&t,e+1},i.prototype.writeUint16LE=i.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||I(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},i.prototype.writeUint16BE=i.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||I(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},i.prototype.writeUint32LE=i.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||I(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},i.prototype.writeUint32BE=i.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||I(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},i.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var o=Math.pow(2,8*r-1);I(this,t,e,r,o-1,-o)}var i=0,s=1,a=0;for(this[e]=255&t;++i>>=0,!n){var o=Math.pow(2,8*r-1);I(this,t,e,r,o-1,-o)}var i=r-1,s=1,a=0;for(this[e+i]=255&t;--i>=0&&(s*=256);)t<0&&0===a&&0!==this[e+i+1]&&(a=1),this[e+i]=(t/s|0)-a&255;return e+r},i.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||I(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},i.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||I(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},i.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||I(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},i.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||I(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},i.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||I(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},i.prototype.writeFloatLE=function(t,e,r){return R(this,t,e,!0,r)},i.prototype.writeFloatBE=function(t,e,r){return R(this,t,e,!1,r)},i.prototype.writeDoubleLE=function(t,e,r){return C(this,t,e,!0,r)},i.prototype.writeDoubleBE=function(t,e,r){return C(this,t,e,!1,r)},i.prototype.copy=function(t,e,r,n){if(!i.isBuffer(t))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(s=e;s55295&&r<57344){if(!o){if(r>56319){(e-=3)>-1&&i.push(239,191,189);continue}if(s+1===n){(e-=3)>-1&&i.push(239,191,189);continue}o=r;continue}if(r<56320){(e-=3)>-1&&i.push(239,191,189),o=r;continue}r=65536+(o-55296<<10|r-56320)}else o&&(e-=3)>-1&&i.push(239,191,189);if(o=null,r<128){if((e-=1)<0)break;i.push(r)}else if(r<2048){if((e-=2)<0)break;i.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;i.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;i.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return i}function F(t){return p(function(t){if((t=(t=t.split("=")[0]).trim().replace(B,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function q(t,e,r,n){for(var o=0;o=e.length||o>=t.length);++o)e[o+r]=t[o];return o}function L(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function V(t){return t!=t}var W=function(){for(var t="0123456789abcdef",e=new Array(256),r=0;r<16;++r)for(var n=16*r,o=0;o<16;++o)e[n+o]=t[r]+t[o];return e}()}(e={exports:{}},e.exports),e.exports}(),v=m.Buffer;m.SlowBuffer,m.INSPECT_MAX_BYTES,m.kMaxLength;var b=function(t,e){return b=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])},b(t,e)};function g(t,e){function r(){this.constructor=t}b(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}var _=function(t){function e(r){var n=t.call(this,r)||this;return Object.setPrototypeOf(n,e.prototype),n}return g(e,t),Object.defineProperty(e.prototype,"name",{get:function(){return"BSONError"},enumerable:!1,configurable:!0}),e}(Error),w=function(t){function e(r){var n=t.call(this,r)||this;return Object.setPrototypeOf(n,e.prototype),n}return g(e,t),Object.defineProperty(e.prototype,"name",{get:function(){return"BSONTypeError"},enumerable:!1,configurable:!0}),e}(TypeError);function O(t){return t&&t.Math==Math&&t}function $(){return O("object"===("undefined"==typeof globalThis?"undefined":n(globalThis))&&globalThis)||O("object"===("undefined"==typeof window?"undefined":n(window))&&window)||O("object"===("undefined"==typeof self?"undefined":n(self))&&self)||O("object"===(void 0===r.g?"undefined":n(r.g))&&r.g)||Function("return this")()}var S=function(t){var e,r="object"===n((e=$()).navigator)&&"ReactNative"===e.navigator.product?"BSON: For React Native please polyfill crypto.getRandomValues, e.g. using: https://www.npmjs.com/package/react-native-get-random-values.":"BSON: No cryptographic implementation for random bytes present, falling back to a less secure implementation.";console.warn(r);for(var o=v.alloc(t),i=0;i");this.sub_type=null!=r?r:t.BSON_BINARY_SUBTYPE_DEFAULT,null==e?(this.buffer=v.alloc(t.BUFFER_SIZE),this.position=0):("string"==typeof e?this.buffer=v.from(e,"binary"):Array.isArray(e)?this.buffer=v.from(e):this.buffer=x(e),this.position=this.buffer.byteLength)}return t.prototype.put=function(e){if("string"==typeof e&&1!==e.length)throw new w("only accepts single character String");if("number"!=typeof e&&1!==e.length)throw new w("only accepts single character Uint8Array or Array");var r;if((r="string"==typeof e?e.charCodeAt(0):"number"==typeof e?e:e[0])<0||r>255)throw new w("only accepts number in a valid unsigned byte range 0-255");if(this.buffer.length>this.position)this.buffer[this.position++]=r;else{var n=v.alloc(t.BUFFER_SIZE+this.buffer.length);this.buffer.copy(n,0,0,this.buffer.length),this.buffer=n,this.buffer[this.position++]=r}},t.prototype.write=function(t,e){if(e="number"==typeof e?e:this.position,this.buffer.lengththis.position?e+t.length:this.position):"string"==typeof t&&(this.buffer.write(t,e,t.length,"binary"),this.position=e+t.length>this.position?e+t.length:this.position)},t.prototype.read=function(t,e){return e=e&&e>0?e:this.position,this.buffer.slice(t,t+e)},t.prototype.value=function(t){return(t=!!t)&&this.buffer.length===this.position?this.buffer:t?this.buffer.slice(0,this.position):this.buffer.toString("binary",0,this.position)},t.prototype.length=function(){return this.position},t.prototype.toJSON=function(){return this.buffer.toString("base64")},t.prototype.toString=function(t){return this.buffer.toString(t)},t.prototype.toExtendedJSON=function(t){t=t||{};var e=this.buffer.toString("base64"),r=Number(this.sub_type).toString(16);return t.legacy?{$binary:e,$type:1===r.length?"0"+r:r}:{$binary:{base64:e,subType:1===r.length?"0"+r:r}}},t.prototype.toUUID=function(){if(this.sub_type===t.SUBTYPE_UUID)return new C(this.buffer.slice(0,this.position));throw new _('Binary sub_type "'.concat(this.sub_type,'" is not supported for converting to UUID. Only "').concat(t.SUBTYPE_UUID,'" is currently supported.'))},t.fromExtendedJSON=function(e,r){var n,o;if(r=r||{},"$binary"in e?r.legacy&&"string"==typeof e.$binary&&"$type"in e?(o=e.$type?parseInt(e.$type,16):0,n=v.from(e.$binary,"base64")):"string"!=typeof e.$binary&&(o=e.$binary.subType?parseInt(e.$binary.subType,16):0,n=v.from(e.$binary.base64,"base64")):"$uuid"in e&&(o=4,n=T(e.$uuid)),!n)throw new w("Unexpected Binary Extended JSON format ".concat(JSON.stringify(e)));return 4===o?new C(n):new t(n,o)},t.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},t.prototype.inspect=function(){var t=this.value(!0);return'new Binary(Buffer.from("'.concat(t.toString("hex"),'", "hex"), ').concat(this.sub_type,")")},t.BSON_BINARY_SUBTYPE_DEFAULT=0,t.BUFFER_SIZE=256,t.SUBTYPE_DEFAULT=0,t.SUBTYPE_FUNCTION=1,t.SUBTYPE_BYTE_ARRAY=2,t.SUBTYPE_UUID_OLD=3,t.SUBTYPE_UUID=4,t.SUBTYPE_MD5=5,t.SUBTYPE_ENCRYPTED=6,t.SUBTYPE_COLUMN=7,t.SUBTYPE_USER_DEFINED=128,t}();Object.defineProperty(R.prototype,"_bsontype",{value:"Binary"});var C=function(t){function e(r){var n,o,i=this;if(null==r)n=e.generate();else if(r instanceof e)n=v.from(r.buffer),o=r.__id;else if(ArrayBuffer.isView(r)&&16===r.byteLength)n=x(r);else{if("string"!=typeof r)throw new w("Argument passed in UUID constructor must be a UUID, a 16 byte Buffer or a 32/36 character hex string (dashes excluded/included, format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).");n=T(r)}return(i=t.call(this,n,4)||this).__id=o,i}return g(e,t),Object.defineProperty(e.prototype,"id",{get:function(){return this.buffer},set:function(t){this.buffer=t,e.cacheHexString&&(this.__id=N(t))},enumerable:!1,configurable:!0}),e.prototype.toHexString=function(t){if(void 0===t&&(t=!0),e.cacheHexString&&this.__id)return this.__id;var r=N(this.id,t);return e.cacheHexString&&(this.__id=r),r},e.prototype.toString=function(t){return t?this.id.toString(t):this.toHexString()},e.prototype.toJSON=function(){return this.toHexString()},e.prototype.equals=function(t){if(!t)return!1;if(t instanceof e)return t.id.equals(this.id);try{return new e(t).id.equals(this.id)}catch(t){return!1}},e.prototype.toBinary=function(){return new R(this.id,R.SUBTYPE_UUID)},e.generate=function(){var t=j(16);return t[6]=15&t[6]|64,t[8]=63&t[8]|128,v.from(t)},e.isValid=function(t){return!!t&&(t instanceof e||("string"==typeof t?M(t):!(!A(t)||16!==t.length||64!=(240&t[6])||128&~t[8])))},e.createFromHexString=function(t){return new e(T(t))},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e.prototype.inspect=function(){return'new UUID("'.concat(this.toHexString(),'")')},e}(R),B=function(){function t(e,r){if(!(this instanceof t))return new t(e,r);this.code=e,this.scope=r}return t.prototype.toJSON=function(){return{code:this.code,scope:this.scope}},t.prototype.toExtendedJSON=function(){return this.scope?{$code:this.code,$scope:this.scope}:{$code:this.code}},t.fromExtendedJSON=function(e){return new t(e.$code,e.$scope)},t.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},t.prototype.inspect=function(){var t=this.toJSON();return'new Code("'.concat(String(t.code),'"').concat(t.scope?", ".concat(JSON.stringify(t.scope)):"",")")},t}();Object.defineProperty(B.prototype,"_bsontype",{value:"Code"});var U=function(){function t(e,r,n,o){if(!(this instanceof t))return new t(e,r,n,o);var i=e.split(".");2===i.length&&(n=i.shift(),e=i.shift()),this.collection=e,this.oid=r,this.db=n,this.fields=o||{}}return Object.defineProperty(t.prototype,"namespace",{get:function(){return this.collection},set:function(t){this.collection=t},enumerable:!1,configurable:!0}),t.prototype.toJSON=function(){var t=Object.assign({$ref:this.collection,$id:this.oid},this.fields);return null!=this.db&&(t.$db=this.db),t},t.prototype.toExtendedJSON=function(t){t=t||{};var e={$ref:this.collection,$id:this.oid};return t.legacy?e:(this.db&&(e.$db=this.db),e=Object.assign(e,this.fields))},t.fromExtendedJSON=function(e){var r=Object.assign({},e);return delete r.$ref,delete r.$id,delete r.$db,new t(e.$ref,e.$id,e.$db,r)},t.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},t.prototype.inspect=function(){var t=void 0===this.oid||void 0===this.oid.toString?this.oid:this.oid.toString();return'new DBRef("'.concat(this.namespace,'", new ObjectId("').concat(String(t),'")').concat(this.db?', "'.concat(this.db,'"'):"",")")},t}();Object.defineProperty(U.prototype,"_bsontype",{value:"DBRef"});var F=void 0;try{F=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(t){}var q=4294967296,L=0x10000000000000000,V=L/2,W={},J={},H=function(){function t(e,r,n){if(void 0===e&&(e=0),!(this instanceof t))return new t(e,r,n);"bigint"==typeof e?Object.assign(this,t.fromBigInt(e,!!r)):"string"==typeof e?Object.assign(this,t.fromString(e,!!r)):(this.low=0|e,this.high=0|r,this.unsigned=!!n),Object.defineProperty(this,"__isLong__",{value:!0,configurable:!1,writable:!1,enumerable:!1})}return t.fromBits=function(e,r,n){return new t(e,r,n)},t.fromInt=function(e,r){var n,o,i;return r?(i=0<=(e>>>=0)&&e<256)&&(o=J[e])?o:(n=t.fromBits(e,(0|e)<0?-1:0,!0),i&&(J[e]=n),n):(i=-128<=(e|=0)&&e<128)&&(o=W[e])?o:(n=t.fromBits(e,e<0?-1:0,!1),i&&(W[e]=n),n)},t.fromNumber=function(e,r){if(isNaN(e))return r?t.UZERO:t.ZERO;if(r){if(e<0)return t.UZERO;if(e>=L)return t.MAX_UNSIGNED_VALUE}else{if(e<=-V)return t.MIN_VALUE;if(e+1>=V)return t.MAX_VALUE}return e<0?t.fromNumber(-e,r).neg():t.fromBits(e%q|0,e/q|0,r)},t.fromBigInt=function(e,r){return t.fromString(e.toString(),r)},t.fromString=function(e,r,n){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return t.ZERO;if("number"==typeof r?(n=r,r=!1):r=!!r,(n=n||10)<2||360)throw Error("interior hyphen");if(0===o)return t.fromString(e.substring(1),r,n).neg();for(var i=t.fromNumber(Math.pow(n,8)),s=t.ZERO,a=0;a>>16,n=65535&this.high,o=this.low>>>16,i=65535&this.low,s=e.high>>>16,a=65535&e.high,u=e.low>>>16,c=0,f=0,l=0,p=0;return l+=(p+=i+(65535&e.low))>>>16,p&=65535,f+=(l+=o+u)>>>16,l&=65535,c+=(f+=n+a)>>>16,f&=65535,c+=r+s,c&=65535,t.fromBits(l<<16|p,c<<16|f,this.unsigned)},t.prototype.and=function(e){return t.isLong(e)||(e=t.fromValue(e)),t.fromBits(this.low&e.low,this.high&e.high,this.unsigned)},t.prototype.compare=function(e){if(t.isLong(e)||(e=t.fromValue(e)),this.eq(e))return 0;var r=this.isNegative(),n=e.isNegative();return r&&!n?-1:!r&&n?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},t.prototype.comp=function(t){return this.compare(t)},t.prototype.divide=function(e){if(t.isLong(e)||(e=t.fromValue(e)),e.isZero())throw Error("division by zero");if(F){if(!this.unsigned&&-2147483648===this.high&&-1===e.low&&-1===e.high)return this;var r=(this.unsigned?F.div_u:F.div_s)(this.low,this.high,e.low,e.high);return t.fromBits(r,F.get_high(),this.unsigned)}if(this.isZero())return this.unsigned?t.UZERO:t.ZERO;var n,o,i;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return t.UZERO;if(e.gt(this.shru(1)))return t.UONE;i=t.UZERO}else{if(this.eq(t.MIN_VALUE))return e.eq(t.ONE)||e.eq(t.NEG_ONE)?t.MIN_VALUE:e.eq(t.MIN_VALUE)?t.ONE:(n=this.shr(1).div(e).shl(1)).eq(t.ZERO)?e.isNegative()?t.ONE:t.NEG_ONE:(o=this.sub(e.mul(n)),i=n.add(o.div(e)));if(e.eq(t.MIN_VALUE))return this.unsigned?t.UZERO:t.ZERO;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();i=t.ZERO}for(o=this;o.gte(e);){n=Math.max(1,Math.floor(o.toNumber()/e.toNumber()));for(var s=Math.ceil(Math.log(n)/Math.LN2),a=s<=48?1:Math.pow(2,s-48),u=t.fromNumber(n),c=u.mul(e);c.isNegative()||c.gt(o);)n-=a,c=(u=t.fromNumber(n,this.unsigned)).mul(e);u.isZero()&&(u=t.ONE),i=i.add(u),o=o.sub(c)}return i},t.prototype.div=function(t){return this.divide(t)},t.prototype.equals=function(e){return t.isLong(e)||(e=t.fromValue(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&this.high===e.high&&this.low===e.low},t.prototype.eq=function(t){return this.equals(t)},t.prototype.getHighBits=function(){return this.high},t.prototype.getHighBitsUnsigned=function(){return this.high>>>0},t.prototype.getLowBits=function(){return this.low},t.prototype.getLowBitsUnsigned=function(){return this.low>>>0},t.prototype.getNumBitsAbs=function(){if(this.isNegative())return this.eq(t.MIN_VALUE)?64:this.neg().getNumBitsAbs();var e,r=0!==this.high?this.high:this.low;for(e=31;e>0&&!(r&1<0},t.prototype.gt=function(t){return this.greaterThan(t)},t.prototype.greaterThanOrEqual=function(t){return this.comp(t)>=0},t.prototype.gte=function(t){return this.greaterThanOrEqual(t)},t.prototype.ge=function(t){return this.greaterThanOrEqual(t)},t.prototype.isEven=function(){return!(1&this.low)},t.prototype.isNegative=function(){return!this.unsigned&&this.high<0},t.prototype.isOdd=function(){return!(1&~this.low)},t.prototype.isPositive=function(){return this.unsigned||this.high>=0},t.prototype.isZero=function(){return 0===this.high&&0===this.low},t.prototype.lessThan=function(t){return this.comp(t)<0},t.prototype.lt=function(t){return this.lessThan(t)},t.prototype.lessThanOrEqual=function(t){return this.comp(t)<=0},t.prototype.lte=function(t){return this.lessThanOrEqual(t)},t.prototype.modulo=function(e){if(t.isLong(e)||(e=t.fromValue(e)),F){var r=(this.unsigned?F.rem_u:F.rem_s)(this.low,this.high,e.low,e.high);return t.fromBits(r,F.get_high(),this.unsigned)}return this.sub(this.div(e).mul(e))},t.prototype.mod=function(t){return this.modulo(t)},t.prototype.rem=function(t){return this.modulo(t)},t.prototype.multiply=function(e){if(this.isZero())return t.ZERO;if(t.isLong(e)||(e=t.fromValue(e)),F){var r=F.mul(this.low,this.high,e.low,e.high);return t.fromBits(r,F.get_high(),this.unsigned)}if(e.isZero())return t.ZERO;if(this.eq(t.MIN_VALUE))return e.isOdd()?t.MIN_VALUE:t.ZERO;if(e.eq(t.MIN_VALUE))return this.isOdd()?t.MIN_VALUE:t.ZERO;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(t.TWO_PWR_24)&&e.lt(t.TWO_PWR_24))return t.fromNumber(this.toNumber()*e.toNumber(),this.unsigned);var n=this.high>>>16,o=65535&this.high,i=this.low>>>16,s=65535&this.low,a=e.high>>>16,u=65535&e.high,c=e.low>>>16,f=65535&e.low,l=0,p=0,h=0,y=0;return h+=(y+=s*f)>>>16,y&=65535,p+=(h+=i*f)>>>16,h&=65535,p+=(h+=s*c)>>>16,h&=65535,l+=(p+=o*f)>>>16,p&=65535,l+=(p+=i*c)>>>16,p&=65535,l+=(p+=s*u)>>>16,p&=65535,l+=n*f+o*c+i*u+s*a,l&=65535,t.fromBits(h<<16|y,l<<16|p,this.unsigned)},t.prototype.mul=function(t){return this.multiply(t)},t.prototype.negate=function(){return!this.unsigned&&this.eq(t.MIN_VALUE)?t.MIN_VALUE:this.not().add(t.ONE)},t.prototype.neg=function(){return this.negate()},t.prototype.not=function(){return t.fromBits(~this.low,~this.high,this.unsigned)},t.prototype.notEquals=function(t){return!this.equals(t)},t.prototype.neq=function(t){return this.notEquals(t)},t.prototype.ne=function(t){return this.notEquals(t)},t.prototype.or=function(e){return t.isLong(e)||(e=t.fromValue(e)),t.fromBits(this.low|e.low,this.high|e.high,this.unsigned)},t.prototype.shiftLeft=function(e){return t.isLong(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?t.fromBits(this.low<>>32-e,this.unsigned):t.fromBits(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):t.fromBits(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},t.prototype.shr=function(t){return this.shiftRight(t)},t.prototype.shiftRightUnsigned=function(e){if(t.isLong(e)&&(e=e.toInt()),0==(e&=63))return this;var r=this.high;if(e<32){var n=this.low;return t.fromBits(n>>>e|r<<32-e,r>>>e,this.unsigned)}return 32===e?t.fromBits(r,0,this.unsigned):t.fromBits(r>>>e-32,0,this.unsigned)},t.prototype.shr_u=function(t){return this.shiftRightUnsigned(t)},t.prototype.shru=function(t){return this.shiftRightUnsigned(t)},t.prototype.subtract=function(e){return t.isLong(e)||(e=t.fromValue(e)),this.add(e.neg())},t.prototype.sub=function(t){return this.subtract(t)},t.prototype.toInt=function(){return this.unsigned?this.low>>>0:this.low},t.prototype.toNumber=function(){return this.unsigned?(this.high>>>0)*q+(this.low>>>0):this.high*q+(this.low>>>0)},t.prototype.toBigInt=function(){return BigInt(this.toString())},t.prototype.toBytes=function(t){return t?this.toBytesLE():this.toBytesBE()},t.prototype.toBytesLE=function(){var t=this.high,e=this.low;return[255&e,e>>>8&255,e>>>16&255,e>>>24,255&t,t>>>8&255,t>>>16&255,t>>>24]},t.prototype.toBytesBE=function(){var t=this.high,e=this.low;return[t>>>24,t>>>16&255,t>>>8&255,255&t,e>>>24,e>>>16&255,e>>>8&255,255&e]},t.prototype.toSigned=function(){return this.unsigned?t.fromBits(this.low,this.high,!1):this},t.prototype.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((s=u).isZero())return c+a;for(;c.length<6;)c="0"+c;a=""+c+a}},t.prototype.toUnsigned=function(){return this.unsigned?this:t.fromBits(this.low,this.high,!0)},t.prototype.xor=function(e){return t.isLong(e)||(e=t.fromValue(e)),t.fromBits(this.low^e.low,this.high^e.high,this.unsigned)},t.prototype.eqz=function(){return this.isZero()},t.prototype.le=function(t){return this.lessThanOrEqual(t)},t.prototype.toExtendedJSON=function(t){return t&&t.relaxed?this.toNumber():{$numberLong:this.toString()}},t.fromExtendedJSON=function(e,r){var n=t.fromString(e.$numberLong);return r&&r.relaxed?n.toNumber():n},t.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},t.prototype.inspect=function(){return'new Long("'.concat(this.toString(),'"').concat(this.unsigned?", true":"",")")},t.TWO_PWR_24=t.fromInt(16777216),t.MAX_UNSIGNED_VALUE=t.fromBits(-1,-1,!0),t.ZERO=t.fromInt(0),t.UZERO=t.fromInt(0,!0),t.ONE=t.fromInt(1),t.UONE=t.fromInt(1,!0),t.NEG_ONE=t.fromInt(-1),t.MAX_VALUE=t.fromBits(-1,2147483647,!1),t.MIN_VALUE=t.fromBits(0,-2147483648,!1),t}();Object.defineProperty(H.prototype,"__isLong__",{value:!0}),Object.defineProperty(H.prototype,"_bsontype",{value:"Long"});var K=/^(\+|-)?(\d+|(\d*\.\d*))?(E|e)?([-+])?(\d+)?$/,z=/^(\+|-)?(Infinity|inf)$/i,Q=/^(\+|-)?NaN$/i,G=6111,Y=-6176,Z=[124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0].reverse(),X=[248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0].reverse(),tt=[120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0].reverse(),et=/^([-+])?(\d+)?$/;function rt(t){return!isNaN(parseInt(t,10))}function nt(t){var e=H.fromNumber(1e9),r=H.fromNumber(0);if(!(t.parts[0]||t.parts[1]||t.parts[2]||t.parts[3]))return{quotient:t,rem:r};for(var n=0;n<=3;n++)r=(r=r.shiftLeft(32)).add(new H(t.parts[n],0)),t.parts[n]=r.div(e).low,r=r.modulo(e);return{quotient:t,rem:r}}function ot(t,e){throw new w('"'.concat(t,'" is not a valid Decimal128 string - ').concat(e))}var it=function(){function t(e){if(!(this instanceof t))return new t(e);if("string"==typeof e)this.bytes=t.fromString(e).bytes;else{if(!A(e))throw new w("Decimal128 must take a Buffer or string");if(16!==e.byteLength)throw new w("Decimal128 must take a Buffer of 16 bytes");this.bytes=e}}return t.fromString=function(e){var r,n=!1,o=!1,i=!1,s=0,a=0,u=0,c=0,f=0,l=[0],p=0,h=0,y=0,d=0,m=0,b=0,g=new H(0,0),_=new H(0,0),O=0;if(e.length>=7e3)throw new w(e+" not a valid Decimal128 string");var $=e.match(K),S=e.match(z),j=e.match(Q);if(!$&&!S&&!j||0===e.length)throw new w(e+" not a valid Decimal128 string");if($){var A=$[2],E=$[4],P=$[5],x=$[6];E&&void 0===x&&ot(e,"missing exponent power"),E&&void 0===A&&ot(e,"missing exponent base"),void 0===E&&(P||x)&&ot(e,"missing e before exponent")}if("+"!==e[O]&&"-"!==e[O]||(n="-"===e[O++]),!rt(e[O])&&"."!==e[O]){if("i"===e[O]||"I"===e[O])return new t(v.from(n?X:tt));if("N"===e[O])return new t(v.from(Z))}for(;rt(e[O])||"."===e[O];)"."!==e[O]?(p<34&&("0"!==e[O]||i)&&(i||(f=a),i=!0,l[h++]=parseInt(e[O],10),p+=1),i&&(u+=1),o&&(c+=1),a+=1,O+=1):(o&&ot(e,"contains multiple periods"),o=!0,O+=1);if(o&&!a)throw new w(e+" not a valid Decimal128 string");if("e"===e[O]||"E"===e[O]){var k=e.substr(++O).match(et);if(!k||!k[2])return new t(v.from(Z));m=parseInt(k[0],10),O+=k[0].length}if(e[O])return new t(v.from(Z));if(y=0,p){if(d=p-1,1!==(s=u))for(;0===l[f+s-1];)s-=1}else y=0,d=0,l[0]=0,u=1,p=1,s=0;for(m<=c&&c-m>16384?m=Y:m-=c;m>G;){if((d+=1)-y>34){if(l.join("").match(/^0+$/)){m=G;break}ot(e,"overflow")}m-=1}for(;m=5&&(N=1,5===T))for(N=l[d]%2==1?1:0,b=f+d+2;b=0;I--)if(++l[I]>9&&(l[I]=0,0===I)){if(!(m>>0)<(B=R.high>>>0)||C===B&&D.low>>>0>>0)&&(U.high=U.high.add(H.fromNumber(1))),r=m+6176;var F={low:H.fromNumber(0),high:H.fromNumber(0)};U.high.shiftRightUnsigned(49).and(H.fromNumber(1)).equals(H.fromNumber(1))?(F.high=F.high.or(H.fromNumber(3).shiftLeft(61)),F.high=F.high.or(H.fromNumber(r).and(H.fromNumber(16383).shiftLeft(47))),F.high=F.high.or(U.high.and(H.fromNumber(0x7fffffffffff)))):(F.high=F.high.or(H.fromNumber(16383&r).shiftLeft(49)),F.high=F.high.or(U.high.and(H.fromNumber(562949953421311)))),F.low=U.low,n&&(F.high=F.high.or(H.fromString("9223372036854775808")));var q=v.alloc(16);return O=0,q[O++]=255&F.low.low,q[O++]=F.low.low>>8&255,q[O++]=F.low.low>>16&255,q[O++]=F.low.low>>24&255,q[O++]=255&F.low.high,q[O++]=F.low.high>>8&255,q[O++]=F.low.high>>16&255,q[O++]=F.low.high>>24&255,q[O++]=255&F.high.low,q[O++]=F.high.low>>8&255,q[O++]=F.high.low>>16&255,q[O++]=F.high.low>>24&255,q[O++]=255&F.high.high,q[O++]=F.high.high>>8&255,q[O++]=F.high.high>>16&255,q[O++]=F.high.high>>24&255,new t(q)},t.prototype.toString=function(){for(var t,e=0,r=new Array(36),n=0;n>26&31;if(m>>3==3){if(30===m)return f.join("")+"Infinity";if(31===m)return"NaN";t=d>>15&16383,o=8+(d>>14&1)}else o=d>>14&7,t=d>>17&16383;var v=t-6176;if(c.parts[0]=(16383&d)+((15&o)<<14),c.parts[1]=y,c.parts[2]=h,c.parts[3]=p,0===c.parts[0]&&0===c.parts[1]&&0===c.parts[2]&&0===c.parts[3])u=!0;else for(s=3;s>=0;s--){var b=0,g=nt(c);if(c=g.quotient,b=g.rem.low)for(i=8;i>=0;i--)r[9*s+i]=b%10,b=Math.floor(b/10)}if(u)e=1,r[a]=0;else for(e=36;!r[a];)e-=1,a+=1;var _=e-1+v;if(_>=34||_<=-7||v>0){if(e>34)return f.push("".concat(0)),v>0?f.push("E+".concat(v)):v<0&&f.push("E".concat(v)),f.join("");for(f.push("".concat(r[a++])),(e-=1)&&f.push("."),n=0;n0?f.push("+".concat(_)):f.push("".concat(_))}else if(v>=0)for(n=0;n0)for(n=0;n>8&255,n[9]=r>>16&255,n},t.prototype.toString=function(t){return t?this.id.toString(t):this.toHexString()},t.prototype.toJSON=function(){return this.toHexString()},t.prototype.equals=function(e){if(null==e)return!1;if(e instanceof t)return this[pt][11]===e[pt][11]&&this[pt].equals(e[pt]);if("string"==typeof e&&t.isValid(e)&&12===e.length&&A(this.id))return e===v.prototype.toString.call(this.id,"latin1");if("string"==typeof e&&t.isValid(e)&&24===e.length)return e.toLowerCase()===this.toHexString();if("string"==typeof e&&t.isValid(e)&&12===e.length)return v.from(e).equals(this.id);if("object"===n(e)&&"toHexString"in e&&"function"==typeof e.toHexString){var r=e.toHexString(),o=this.toHexString().toLowerCase();return"string"==typeof r&&r.toLowerCase()===o}return!1},t.prototype.getTimestamp=function(){var t=new Date,e=this.id.readUInt32BE(0);return t.setTime(1e3*Math.floor(e)),t},t.createPk=function(){return new t},t.createFromTime=function(e){var r=v.from([0,0,0,0,0,0,0,0,0,0,0,0]);return r.writeUInt32BE(e,0),new t(r)},t.createFromHexString=function(e){if(void 0===e||null!=e&&24!==e.length)throw new w("Argument passed in must be a single String of 12 bytes or a string of 24 hex characters");return new t(v.from(e,"hex"))},t.isValid=function(e){if(null==e)return!1;try{return new t(e),!0}catch(t){return!1}},t.prototype.toExtendedJSON=function(){return this.toHexString?{$oid:this.toHexString()}:{$oid:this.toString("hex")}},t.fromExtendedJSON=function(e){return new t(e.$oid)},t.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},t.prototype.inspect=function(){return'new ObjectId("'.concat(this.toHexString(),'")')},t.index=Math.floor(16777215*Math.random()),t}();Object.defineProperty(ht.prototype,"generate",{value:P(function(t){return ht.generate(t)},"Please use the static `ObjectId.generate(time)` instead")}),Object.defineProperty(ht.prototype,"getInc",{value:P(function(){return ht.getInc()},"Please use the static `ObjectId.getInc()` instead")}),Object.defineProperty(ht.prototype,"get_inc",{value:P(function(){return ht.getInc()},"Please use the static `ObjectId.getInc()` instead")}),Object.defineProperty(ht,"get_inc",{value:P(function(){return ht.getInc()},"Please use the static `ObjectId.getInc()` instead")}),Object.defineProperty(ht.prototype,"_bsontype",{value:"ObjectID"});var yt=function(){function t(e,r){if(!(this instanceof t))return new t(e,r);if(this.pattern=e,this.options=(null!=r?r:"").split("").sort().join(""),-1!==this.pattern.indexOf("\0"))throw new _("BSON Regex patterns cannot contain null bytes, found: ".concat(JSON.stringify(this.pattern)));if(-1!==this.options.indexOf("\0"))throw new _("BSON Regex options cannot contain null bytes, found: ".concat(JSON.stringify(this.options)));for(var n=0;n>>0,i:this.low>>>0}}},e.fromExtendedJSON=function(t){return new e(t.$timestamp)},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e.prototype.inspect=function(){return"new Timestamp({ t: ".concat(this.getHighBits(),", i: ").concat(this.getLowBits()," })")},e.MAX_VALUE=H.MAX_UNSIGNED_VALUE,e}(H);var vt=2147483647,bt=-2147483648,gt=0x8000000000000000,_t=-0x8000000000000000,wt={$oid:ht,$binary:R,$uuid:R,$symbol:dt,$numberInt:at,$numberDecimal:it,$numberDouble:st,$numberLong:H,$minKey:ct,$maxKey:ut,$regex:yt,$regularExpression:yt,$timestamp:mt};function Ot(t,e){if(void 0===e&&(e={}),"number"==typeof t){if(e.relaxed||e.legacy)return t;if(Math.floor(t)===t){if(t>=bt&&t<=vt)return new at(t);if(t>=_t&&t<=gt)return H.fromNumber(t)}return new st(t)}if(null==t||"object"!==n(t))return t;if(t.$undefined)return null;for(var r=Object.keys(t).filter(function(e){return e.startsWith("$")&&null!=t[e]}),o=0;o ")}).join(""),s=o[r],a=" -> "+o.slice(r+1,o.length-1).map(function(t){return"".concat(t," -> ")}).join(""),u=o[o.length-1],c=" ".repeat(i.length+s.length/2),f="-".repeat(a.length+(s.length+u.length)/2-1);throw new w("Converting circular structure to EJSON:\n"+" ".concat(i).concat(s).concat(a).concat(u,"\n")+" ".concat(c,"\\").concat(f,"/"))}e.seenObjects[e.seenObjects.length-1].obj=t}if(Array.isArray(t))return function(t,e){return t.map(function(t,r){e.seenObjects.push({propertyName:"index ".concat(r),obj:null});try{return St(t,e)}finally{e.seenObjects.pop()}})}(t,e);if(void 0===t)return null;if(t instanceof Date||E(h=t)&&"[object Date]"===Object.prototype.toString.call(h)){var l=t.getTime(),p=l>-1&&l<2534023188e5;return e.legacy?e.relaxed&&p?{$date:t.getTime()}:{$date:$t(t)}:e.relaxed&&p?{$date:$t(t)}:{$date:{$numberLong:t.getTime().toString()}}}var h;if(!("number"!=typeof t||e.relaxed&&isFinite(t))){if(Math.floor(t)===t){var y=t>=_t&&t<=gt;if(t>=bt&&t<=vt)return{$numberInt:t.toString()};if(y)return{$numberLong:t.toString()}}return{$numberDouble:t.toString()}}if(t instanceof RegExp||function(t){return"[object RegExp]"===Object.prototype.toString.call(t)}(t)){var d=t.flags;if(void 0===d){var m=t.toString().match(/[gimuy]*$/);m&&(d=m[0])}return new yt(t.source,d).toExtendedJSON(e)}return null!=t&&"object"===n(t)?function(t,e){if(null==t||"object"!==n(t))throw new _("not an object instance");var r=t._bsontype;if(void 0===r){var o={};for(var i in t){e.seenObjects.push({propertyName:i,obj:null});try{var s=St(t[i],e);"__proto__"===i?Object.defineProperty(o,i,{value:s,writable:!0,enumerable:!0,configurable:!0}):o[i]=s}finally{e.seenObjects.pop()}}return o}if(function(t){return E(t)&&Reflect.has(t,"_bsontype")&&"string"==typeof t._bsontype}(t)){var a=t;if("function"!=typeof a.toExtendedJSON){var u=At[t._bsontype];if(!u)throw new w("Unrecognized or invalid _bsontype: "+t._bsontype);a=u(a)}return"Code"===r&&a.scope?a=new B(a.code,St(a.scope,e)):"DBRef"===r&&a.oid&&(a=new U(St(a.collection,e),St(a.oid,e),St(a.db,e),St(a.fields,e))),a.toExtendedJSON(e)}throw new _("_bsontype must be a string, but was: "+n(r))}(t,e):t}var jt,At={Binary:function(t){return new R(t.value(),t.sub_type)},Code:function(t){return new B(t.code,t.scope)},DBRef:function(t){return new U(t.collection||t.namespace,t.oid,t.db,t.fields)},Decimal128:function(t){return new it(t.bytes)},Double:function(t){return new st(t.value)},Int32:function(t){return new at(t.value)},Long:function(t){return H.fromBits(null!=t.low?t.low:t.low_,null!=t.low?t.high:t.high_,null!=t.low?t.unsigned:t.unsigned_)},MaxKey:function(){return new ut},MinKey:function(){return new ct},ObjectID:function(t){return new ht(t)},ObjectId:function(t){return new ht(t)},BSONRegExp:function(t){return new yt(t.pattern,t.options)},Symbol:function(t){return new dt(t.value)},Timestamp:function(t){return mt.fromBits(t.low,t.high)}};!function(t){function e(t,e){var r=Object.assign({},{relaxed:!0,legacy:!1},e);return"boolean"==typeof r.relaxed&&(r.strict=!r.relaxed),"boolean"==typeof r.strict&&(r.relaxed=!r.strict),JSON.parse(t,function(t,e){if(-1!==t.indexOf("\0"))throw new _("BSON Document field names cannot contain null bytes, found: ".concat(JSON.stringify(t)));return Ot(e,r)})}function r(t,e,r,o){null!=r&&"object"===n(r)&&(o=r,r=0),null==e||"object"!==n(e)||Array.isArray(e)||(o=e,e=void 0,r=0);var i=St(t,Object.assign({relaxed:!0,legacy:!1},o,{seenObjects:[{propertyName:"(root)",obj:null}]}));return JSON.stringify(i,e,r)}t.parse=e,t.stringify=r,t.serialize=function(t,e){return e=e||{},JSON.parse(r(t,e))},t.deserialize=function(t,r){return r=r||{},e(JSON.stringify(t),r)}}(jt||(jt={}));var Et=$();Et.Map?Et.Map:function(){function t(t){void 0===t&&(t=[]),this._keys=[],this._values={};for(var e=0;e{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}var o=r(7943),i=r(8405),s="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e.lW=c,e.h2=50;var a=2147483647;function u(t){if(t>a)throw new RangeError('The value "'+t+'" is invalid for option "size"');var e=new Uint8Array(t);return Object.setPrototypeOf(e,c.prototype),e}function c(t,e,r){if("number"==typeof t){if("string"==typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return p(t)}return f(t,e,r)}function f(t,e,r){if("string"==typeof t)return function(t,e){if("string"==typeof e&&""!==e||(e="utf8"),!c.isEncoding(e))throw new TypeError("Unknown encoding: "+e);var r=0|m(t,e),n=u(r),o=n.write(t,e);return o!==r&&(n=n.slice(0,o)),n}(t,e);if(ArrayBuffer.isView(t))return function(t){if(L(t,Uint8Array)){var e=new Uint8Array(t);return y(e.buffer,e.byteOffset,e.byteLength)}return h(t)}(t);if(null==t)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+n(t));if(L(t,ArrayBuffer)||t&&L(t.buffer,ArrayBuffer))return y(t,e,r);if("undefined"!=typeof SharedArrayBuffer&&(L(t,SharedArrayBuffer)||t&&L(t.buffer,SharedArrayBuffer)))return y(t,e,r);if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');var o=t.valueOf&&t.valueOf();if(null!=o&&o!==t)return c.from(o,e,r);var i=function(t){if(c.isBuffer(t)){var e=0|d(t.length),r=u(e);return 0===r.length||t.copy(r,0,0,e),r}return void 0!==t.length?"number"!=typeof t.length||V(t.length)?u(0):h(t):"Buffer"===t.type&&Array.isArray(t.data)?h(t.data):void 0}(t);if(i)return i;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return c.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+n(t))}function l(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function p(t){return l(t),u(t<0?0:0|d(t))}function h(t){for(var e=t.length<0?0:0|d(t.length),r=u(e),n=0;n=a)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a.toString(16)+" bytes");return 0|t}function m(t,e){if(c.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||L(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+n(t));var r=t.length,o=arguments.length>2&&!0===arguments[2];if(!o&&0===r)return 0;for(var i=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return U(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return F(t).length;default:if(i)return o?-1:U(t).length;e=(""+e).toLowerCase(),i=!0}}function v(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return M(this,e,r);case"utf8":case"utf-8":return E(this,e,r);case"ascii":return x(this,e,r);case"latin1":case"binary":return k(this,e,r);case"base64":return A(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return T(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function b(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function g(t,e,r,n,o){if(0===t.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),V(r=+r)&&(r=o?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(o)return-1;r=t.length-1}else if(r<0){if(!o)return-1;r=0}if("string"==typeof e&&(e=c.from(e,n)),c.isBuffer(e))return 0===e.length?-1:_(t,e,r,n,o);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):_(t,[e],r,n,o);throw new TypeError("val must be string, number or Buffer")}function _(t,e,r,n,o){var i,s=1,a=t.length,u=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;s=2,a/=2,u/=2,r/=2}function c(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(o){var f=-1;for(i=r;ia&&(r=a-u),i=r;i>=0;i--){for(var l=!0,p=0;po&&(n=o):n=o;var i=e.length;n>i/2&&(n=i/2);for(var s=0;s>8,o=r%256,i.push(o),i.push(n);return i}(e,t.length-r),t,r,n)}function A(t,e,r){return 0===e&&r===t.length?o.fromByteArray(t):o.fromByteArray(t.slice(e,r))}function E(t,e,r){r=Math.min(t.length,r);for(var n=[],o=e;o239?4:c>223?3:c>191?2:1;if(o+l<=r)switch(l){case 1:c<128&&(f=c);break;case 2:128==(192&(i=t[o+1]))&&(u=(31&c)<<6|63&i)>127&&(f=u);break;case 3:i=t[o+1],s=t[o+2],128==(192&i)&&128==(192&s)&&(u=(15&c)<<12|(63&i)<<6|63&s)>2047&&(u<55296||u>57343)&&(f=u);break;case 4:i=t[o+1],s=t[o+2],a=t[o+3],128==(192&i)&&128==(192&s)&&128==(192&a)&&(u=(15&c)<<18|(63&i)<<12|(63&s)<<6|63&a)>65535&&u<1114112&&(f=u)}null===f?(f=65533,l=1):f>65535&&(f-=65536,n.push(f>>>10&1023|55296),f=56320|1023&f),n.push(f),o+=l}return function(t){var e=t.length;if(e<=P)return String.fromCharCode.apply(String,t);for(var r="",n=0;nn.length?c.from(i).copy(n,o):Uint8Array.prototype.set.call(n,i,o);else{if(!c.isBuffer(i))throw new TypeError('"list" argument must be an Array of Buffers');i.copy(n,o)}o+=i.length}return n},c.byteLength=m,c.prototype._isBuffer=!0,c.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;er&&(t+=" ... "),""},s&&(c.prototype[s]=c.prototype.inspect),c.prototype.compare=function(t,e,r,o,i){if(L(t,Uint8Array)&&(t=c.from(t,t.offset,t.byteLength)),!c.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+n(t));if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===o&&(o=0),void 0===i&&(i=this.length),e<0||r>t.length||o<0||i>this.length)throw new RangeError("out of range index");if(o>=i&&e>=r)return 0;if(o>=i)return-1;if(e>=r)return 1;if(this===t)return 0;for(var s=(i>>>=0)-(o>>>=0),a=(r>>>=0)-(e>>>=0),u=Math.min(s,a),f=this.slice(o,i),l=t.slice(e,r),p=0;p>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var o=this.length-e;if((void 0===r||r>o)&&(r=o),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var i=!1;;)switch(n){case"hex":return w(this,t,e,r);case"utf8":case"utf-8":return O(this,t,e,r);case"ascii":case"latin1":case"binary":return $(this,t,e,r);case"base64":return S(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return j(this,t,e,r);default:if(i)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),i=!0}},c.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var P=4096;function x(t,e,r){var n="";r=Math.min(t.length,r);for(var o=e;on)&&(r=n);for(var o="",i=e;ir)throw new RangeError("Trying to access beyond buffer length")}function I(t,e,r,n,o,i){if(!c.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>o||et.length)throw new RangeError("Index out of range")}function D(t,e,r,n,o,i){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function R(t,e,r,n,o){return e=+e,r>>>=0,o||D(t,0,r,4),i.write(t,e,r,n,23,4),r+4}function C(t,e,r,n,o){return e=+e,r>>>=0,o||D(t,0,r,8),i.write(t,e,r,n,52,8),r+8}c.prototype.slice=function(t,e){var r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e>>=0,e>>>=0,r||N(t,e,this.length);for(var n=this[t],o=1,i=0;++i>>=0,e>>>=0,r||N(t,e,this.length);for(var n=this[t+--e],o=1;e>0&&(o*=256);)n+=this[t+--e]*o;return n},c.prototype.readUint8=c.prototype.readUInt8=function(t,e){return t>>>=0,e||N(t,1,this.length),this[t]},c.prototype.readUint16LE=c.prototype.readUInt16LE=function(t,e){return t>>>=0,e||N(t,2,this.length),this[t]|this[t+1]<<8},c.prototype.readUint16BE=c.prototype.readUInt16BE=function(t,e){return t>>>=0,e||N(t,2,this.length),this[t]<<8|this[t+1]},c.prototype.readUint32LE=c.prototype.readUInt32LE=function(t,e){return t>>>=0,e||N(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},c.prototype.readUint32BE=c.prototype.readUInt32BE=function(t,e){return t>>>=0,e||N(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},c.prototype.readIntLE=function(t,e,r){t>>>=0,e>>>=0,r||N(t,e,this.length);for(var n=this[t],o=1,i=0;++i=(o*=128)&&(n-=Math.pow(2,8*e)),n},c.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||N(t,e,this.length);for(var n=e,o=1,i=this[t+--n];n>0&&(o*=256);)i+=this[t+--n]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*e)),i},c.prototype.readInt8=function(t,e){return t>>>=0,e||N(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},c.prototype.readInt16LE=function(t,e){t>>>=0,e||N(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},c.prototype.readInt16BE=function(t,e){t>>>=0,e||N(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},c.prototype.readInt32LE=function(t,e){return t>>>=0,e||N(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},c.prototype.readInt32BE=function(t,e){return t>>>=0,e||N(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},c.prototype.readFloatLE=function(t,e){return t>>>=0,e||N(t,4,this.length),i.read(this,t,!0,23,4)},c.prototype.readFloatBE=function(t,e){return t>>>=0,e||N(t,4,this.length),i.read(this,t,!1,23,4)},c.prototype.readDoubleLE=function(t,e){return t>>>=0,e||N(t,8,this.length),i.read(this,t,!0,52,8)},c.prototype.readDoubleBE=function(t,e){return t>>>=0,e||N(t,8,this.length),i.read(this,t,!1,52,8)},c.prototype.writeUintLE=c.prototype.writeUIntLE=function(t,e,r,n){t=+t,e>>>=0,r>>>=0,n||I(this,t,e,r,Math.pow(2,8*r)-1,0);var o=1,i=0;for(this[e]=255&t;++i>>=0,r>>>=0,n||I(this,t,e,r,Math.pow(2,8*r)-1,0);var o=r-1,i=1;for(this[e+o]=255&t;--o>=0&&(i*=256);)this[e+o]=t/i&255;return e+r},c.prototype.writeUint8=c.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||I(this,t,e,1,255,0),this[e]=255&t,e+1},c.prototype.writeUint16LE=c.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||I(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},c.prototype.writeUint16BE=c.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||I(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},c.prototype.writeUint32LE=c.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||I(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},c.prototype.writeUint32BE=c.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||I(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},c.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var o=Math.pow(2,8*r-1);I(this,t,e,r,o-1,-o)}var i=0,s=1,a=0;for(this[e]=255&t;++i>>=0,!n){var o=Math.pow(2,8*r-1);I(this,t,e,r,o-1,-o)}var i=r-1,s=1,a=0;for(this[e+i]=255&t;--i>=0&&(s*=256);)t<0&&0===a&&0!==this[e+i+1]&&(a=1),this[e+i]=(t/s|0)-a&255;return e+r},c.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||I(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},c.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||I(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},c.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||I(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},c.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||I(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},c.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||I(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},c.prototype.writeFloatLE=function(t,e,r){return R(this,t,e,!0,r)},c.prototype.writeFloatBE=function(t,e,r){return R(this,t,e,!1,r)},c.prototype.writeDoubleLE=function(t,e,r){return C(this,t,e,!0,r)},c.prototype.writeDoubleBE=function(t,e,r){return C(this,t,e,!1,r)},c.prototype.copy=function(t,e,r,n){if(!c.isBuffer(t))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(i=e;i55295&&r<57344){if(!o){if(r>56319){(e-=3)>-1&&i.push(239,191,189);continue}if(s+1===n){(e-=3)>-1&&i.push(239,191,189);continue}o=r;continue}if(r<56320){(e-=3)>-1&&i.push(239,191,189),o=r;continue}r=65536+(o-55296<<10|r-56320)}else o&&(e-=3)>-1&&i.push(239,191,189);if(o=null,r<128){if((e-=1)<0)break;i.push(r)}else if(r<2048){if((e-=2)<0)break;i.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;i.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;i.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return i}function F(t){return o.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(B,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function q(t,e,r,n){for(var o=0;o=e.length||o>=t.length);++o)e[o+r]=t[o];return o}function L(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function V(t){return t!=t}var W=function(){for(var t="0123456789abcdef",e=new Array(256),r=0;r<16;++r)for(var n=16*r,o=0;o<16;++o)e[n+o]=t[r]+t[o];return e}()},5326:(t,e,r)=>{"use strict";var n=r(5246),o=r(1919),i=r(4341),s=r(4817);t.exports=s||n.call(i,o)},9278:(t,e,r)=>{"use strict";var n=r(5246),o=r(1919),i=r(5326);t.exports=function(){return i(n,o,arguments)}},1919:t=>{"use strict";t.exports=Function.prototype.apply},4341:t=>{"use strict";t.exports=Function.prototype.call},6751:(t,e,r)=>{"use strict";var n=r(5246),o=r(4820),i=r(4341),s=r(5326);t.exports=function(t){if(t.length<1||"function"!=typeof t[0])throw new o("a function is required");return s(n,i,t)}},4817:t=>{"use strict";t.exports="undefined"!=typeof Reflect&&Reflect&&Reflect.apply},3862:(t,e,r)=>{"use strict";var n=r(2637),o=r(7385),i=r(6751),s=r(9278);t.exports=function(t){var e=i(arguments),r=t.length-(arguments.length-1);return n(e,1+(r>0?r:0),!0)},o?o(t.exports,"apply",{value:s}):t.exports.apply=s},4609:(t,e,r)=>{"use strict";var n=r(6893),o=r(6751),i=o([n("%String.prototype.indexOf%")]);t.exports=function(t,e){var r=n(t,!!e);return"function"==typeof r&&i(t,".prototype.")>-1?o([r]):r}},8801:(t,e,r)=>{var n;e.formatArgs=function(e){if(e[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+e[0]+(this.useColors?"%c ":" ")+"+"+t.exports.humanize(this.diff),this.useColors){var r="color: "+this.color;e.splice(1,0,r,"color: inherit");var n=0,o=0;e[0].replace(/%[a-zA-Z%]/g,function(t){"%%"!==t&&(n++,"%c"===t&&(o=n))}),e.splice(o,0,r)}},e.save=function(t){try{t?e.storage.setItem("debug",t):e.storage.removeItem("debug")}catch(t){}},e.load=function(){var t;try{t=e.storage.getItem("debug")||e.storage.getItem("DEBUG")}catch(t){}return!t&&"env"in{env:{}}&&(t={}.DEBUG),t},e.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&(t=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(t[1],10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/));var t},e.storage=function(){try{return localStorage}catch(t){}}(),e.destroy=(n=!1,function(){n||(n=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}),e.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],e.log=console.debug||console.log||function(){},t.exports=r(5331)(e),t.exports.formatters.j=function(t){try{return JSON.stringify(t)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}},5331:(t,e,r)=>{function n(t){return function(t){if(Array.isArray(t))return s(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||i(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=i(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,s=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw s}}}}function i(t,e){if(t){if("string"==typeof t)return s(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?s(t,e):void 0}}function s(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}var o=r(7385),i=r(5710),s=r(4820),a=r(1554);t.exports=function(t,e,r){if(!t||"object"!==n(t)&&"function"!=typeof t)throw new s("`obj` must be an object or a function`");if("string"!=typeof e&&"symbol"!==n(e))throw new s("`property` must be a string or a symbol`");if(arguments.length>3&&"boolean"!=typeof arguments[3]&&null!==arguments[3])throw new s("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&"boolean"!=typeof arguments[4]&&null!==arguments[4])throw new s("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&"boolean"!=typeof arguments[5]&&null!==arguments[5])throw new s("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&"boolean"!=typeof arguments[6])throw new s("`loose`, if provided, must be a boolean");var u=arguments.length>3?arguments[3]:null,c=arguments.length>4?arguments[4]:null,f=arguments.length>5?arguments[5]:null,l=arguments.length>6&&arguments[6],p=!!a&&a(t,e);if(o)o(t,e,{configurable:null===f&&p?p.configurable:!f,enumerable:null===u&&p?p.enumerable:!u,value:r,writable:null===c&&p?p.writable:!c});else{if(!l&&(u||c||f))throw new i("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.");t[e]=r}}},7921:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}var o=r(3818),i="function"==typeof Symbol&&"symbol"===n(Symbol("foo")),s=Object.prototype.toString,a=Array.prototype.concat,u=r(3793),c=r(2579)(),f=function(t,e,r,n){if(e in t)if(!0===n){if(t[e]===r)return}else if("function"!=typeof(o=n)||"[object Function]"!==s.call(o)||!n())return;var o;c?u(t,e,r,!0):u(t,e,r)},l=function(t,e){var r=arguments.length>2?arguments[2]:{},n=o(e);i&&(n=a.call(n,Object.getOwnPropertySymbols(e)));for(var s=0;s{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}var o,i=r(6751),s=r(1554);try{o=[].__proto__===Array.prototype}catch(t){if(!t||"object"!==n(t)||!("code"in t)||"ERR_PROTO_ACCESS"!==t.code)throw t}var a=!!o&&s&&s(Object.prototype,"__proto__"),u=Object,c=u.getPrototypeOf;t.exports=a&&"function"==typeof a.get?i([a.get]):"function"==typeof c&&function(t){return c(null==t?t:u(t))}},7385:t=>{"use strict";var e=Object.defineProperty||!1;if(e)try{e({},"a",{value:1})}catch(t){e=!1}t.exports=e},5885:t=>{"use strict";t.exports=EvalError},2378:t=>{"use strict";t.exports=Error},5114:t=>{"use strict";t.exports=RangeError},4191:t=>{"use strict";t.exports=ReferenceError},5710:t=>{"use strict";t.exports=SyntaxError},4820:t=>{"use strict";t.exports=TypeError},5999:t=>{"use strict";t.exports=URIError},2244:t=>{"use strict";t.exports=Object},8028:t=>{"use strict";function e(t,e){if(null==t)throw new TypeError("Cannot convert first argument to object");for(var r=Object(t),n=1;n{"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}var r,n="object"===("undefined"==typeof Reflect?"undefined":e(Reflect))?Reflect:null,o=n&&"function"==typeof n.apply?n.apply:function(t,e,r){return Function.prototype.apply.call(t,e,r)};r=n&&"function"==typeof n.ownKeys?n.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var i=Number.isNaN||function(t){return t!=t};function s(){s.init.call(this)}t.exports=s,t.exports.once=function(t,e){return new Promise(function(r,n){function o(r){t.removeListener(e,i),n(r)}function i(){"function"==typeof t.removeListener&&t.removeListener("error",o),r([].slice.call(arguments))}m(t,e,i,{once:!0}),"error"!==e&&function(t,e){"function"==typeof t.on&&m(t,"error",e,{once:!0})}(t,o)})},s.EventEmitter=s,s.prototype._events=void 0,s.prototype._eventsCount=0,s.prototype._maxListeners=void 0;var a=10;function u(t){if("function"!=typeof t)throw new TypeError('The "listener" argument must be of type Function. Received type '+e(t))}function c(t){return void 0===t._maxListeners?s.defaultMaxListeners:t._maxListeners}function f(t,e,r,n){var o,i,s,a;if(u(r),void 0===(i=t._events)?(i=t._events=Object.create(null),t._eventsCount=0):(void 0!==i.newListener&&(t.emit("newListener",e,r.listener?r.listener:r),i=t._events),s=i[e]),void 0===s)s=i[e]=r,++t._eventsCount;else if("function"==typeof s?s=i[e]=n?[r,s]:[s,r]:n?s.unshift(r):s.push(r),(o=c(t))>0&&s.length>o&&!s.warned){s.warned=!0;var f=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");f.name="MaxListenersExceededWarning",f.emitter=t,f.type=e,f.count=s.length,a=f,console&&console.warn&&console.warn(a)}return t}function l(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function p(t,e,r){var n={fired:!1,wrapFn:void 0,target:t,type:e,listener:r},o=l.bind(n);return o.listener=r,n.wrapFn=o,o}function h(t,e,r){var n=t._events;if(void 0===n)return[];var o=n[e];return void 0===o?[]:"function"==typeof o?r?[o.listener||o]:[o]:r?function(t){for(var e=new Array(t.length),r=0;r0&&(s=e[0]),s instanceof Error)throw s;var a=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw a.context=s,a}var u=i[t];if(void 0===u)return!1;if("function"==typeof u)o(u,this,e);else{var c=u.length,f=d(u,c);for(r=0;r=0;i--)if(r[i]===e||r[i].listener===e){s=r[i].listener,o=i;break}if(o<0)return this;0===o?r.shift():function(t,e){for(;e+1=0;n--)this.removeListener(t,e[n]);return this},s.prototype.listeners=function(t){return h(this,t,!0)},s.prototype.rawListeners=function(t){return h(this,t,!1)},s.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):y.call(t,e)},s.prototype.listenerCount=y,s.prototype.eventNames=function(){return this._eventsCount>0?r(this._events):[]}},5337:(t,e,r)=>{"use strict";var n=r(8625),o=Object.prototype.toString,i=Object.prototype.hasOwnProperty;t.exports=function(t,e,r){if(!n(e))throw new TypeError("iterator must be a function");var s,a;arguments.length>=3&&(s=r),a=t,"[object Array]"===o.call(a)?function(t,e,r){for(var n=0,o=t.length;n{"use strict";var e=Object.prototype.toString,r=Math.max,n=function(t,e){for(var r=[],n=0;n{"use strict";var n=r(5929);t.exports=Function.prototype.bind||n},7856:t=>{"use strict";function e(){var t,n,o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",s=o.toStringTag||"@@toStringTag";function a(e,o,i,s){var a=o&&o.prototype instanceof c?o:c,f=Object.create(a.prototype);return r(f,"_invoke",function(e,r,o){var i,s,a,c=0,f=o||[],l=!1,p={p:0,n:0,v:t,a:h,f:h.bind(t,4),d:function(e,r){return i=e,s=0,a=t,p.n=r,u}};function h(e,r){for(s=e,a=r,n=0;!l&&c&&!o&&n3?(o=y===r)&&(a=i[(s=i[4])?5:(s=3,3)],i[4]=i[5]=t):i[0]<=h&&((o=e<2&&hr||r>y)&&(i[4]=e,i[5]=r,p.n=y,s=0))}if(o||e>1)return u;throw l=!0,r}return function(o,f,y){if(c>1)throw TypeError("Generator is already running");for(l&&1===f&&h(f,y),s=f,a=y;(n=s<2?t:a)||!l;){i||(s?s<3?(s>1&&(p.n=-1),h(s,a)):p.n=a:p.v=a);try{if(c=2,i){if(s||(o="next"),n=i[o]){if(!(n=n.call(i,a)))throw TypeError("iterator result is not an object");if(!n.done)return n;a=n.value,s<2&&(s=0)}else 1===s&&(n=i.return)&&n.call(i),s<2&&(a=TypeError("The iterator does not provide a '"+o+"' method"),s=1);i=t}else if((n=(l=p.n<0)?a:e.call(r,p))!==u)break}catch(e){i=t,s=1,a=e}finally{c=1}}return{value:n,done:l}}}(e,i,s),!0),f}var u={};function c(){}function f(){}function l(){}n=Object.getPrototypeOf;var p=[][i]?n(n([][i]())):(r(n={},i,function(){return this}),n),h=l.prototype=c.prototype=Object.create(p);function y(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,l):(t.__proto__=l,r(t,s,"GeneratorFunction")),t.prototype=Object.create(h),t}return f.prototype=l,r(h,"constructor",l),r(l,"constructor",f),f.displayName="GeneratorFunction",r(l,s,"GeneratorFunction"),r(h),r(h,s,"Generator"),r(h,i,function(){return this}),r(h,"toString",function(){return"[object Generator]"}),(e=function(){return{w:a,m:y}})()}function r(t,e,n,o){var i=Object.defineProperty;try{i({},"",{})}catch(t){i=0}r=function(t,e,n,o){function s(e,n){r(t,e,function(t){return this._invoke(e,n,t)})}e?i?i(t,e,{value:n,enumerable:!o,configurable:!o,writable:!o}):t[e]=n:(s("next",0),s("throw",1),s("return",2))},r(t,e,n,o)}var n=e().m(function t(){return e().w(function(t){for(;;)if(0===t.n)return t.a(2)},t)}).constructor;t.exports=function(){return n}},6893:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}var o,i=r(2244),s=r(2378),a=r(5885),u=r(5114),c=r(4191),f=r(5710),l=r(4820),p=r(5999),h=r(3646),y=r(8002),d=r(7803),m=r(4207),v=r(707),b=r(6396),g=r(4335),_=Function,w=function(t){try{return _('"use strict"; return ('+t+").constructor;")()}catch(t){}},O=r(1554),$=r(7385),S=function(){throw new l},j=O?function(){try{return S}catch(t){try{return O(arguments,"callee").get}catch(t){return S}}}():S,A=r(5990)(),E=r(2460),P=r(3316),x=r(8717),k=r(1919),M=r(4341),T={},N="undefined"!=typeof Uint8Array&&E?E(Uint8Array):o,I={__proto__:null,"%AggregateError%":"undefined"==typeof AggregateError?o:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?o:ArrayBuffer,"%ArrayIteratorPrototype%":A&&E?E([][Symbol.iterator]()):o,"%AsyncFromSyncIteratorPrototype%":o,"%AsyncFunction%":T,"%AsyncGenerator%":T,"%AsyncGeneratorFunction%":T,"%AsyncIteratorPrototype%":T,"%Atomics%":"undefined"==typeof Atomics?o:Atomics,"%BigInt%":"undefined"==typeof BigInt?o:BigInt,"%BigInt64Array%":"undefined"==typeof BigInt64Array?o:BigInt64Array,"%BigUint64Array%":"undefined"==typeof BigUint64Array?o:BigUint64Array,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?o:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":s,"%eval%":eval,"%EvalError%":a,"%Float16Array%":"undefined"==typeof Float16Array?o:Float16Array,"%Float32Array%":"undefined"==typeof Float32Array?o:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?o:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?o:FinalizationRegistry,"%Function%":_,"%GeneratorFunction%":T,"%Int8Array%":"undefined"==typeof Int8Array?o:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?o:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?o:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":A&&E?E(E([][Symbol.iterator]())):o,"%JSON%":"object"===("undefined"==typeof JSON?"undefined":n(JSON))?JSON:o,"%Map%":"undefined"==typeof Map?o:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&A&&E?E((new Map)[Symbol.iterator]()):o,"%Math%":Math,"%Number%":Number,"%Object%":i,"%Object.getOwnPropertyDescriptor%":O,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?o:Promise,"%Proxy%":"undefined"==typeof Proxy?o:Proxy,"%RangeError%":u,"%ReferenceError%":c,"%Reflect%":"undefined"==typeof Reflect?o:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?o:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&A&&E?E((new Set)[Symbol.iterator]()):o,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?o:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":A&&E?E(""[Symbol.iterator]()):o,"%Symbol%":A?Symbol:o,"%SyntaxError%":f,"%ThrowTypeError%":j,"%TypedArray%":N,"%TypeError%":l,"%Uint8Array%":"undefined"==typeof Uint8Array?o:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?o:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?o:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?o:Uint32Array,"%URIError%":p,"%WeakMap%":"undefined"==typeof WeakMap?o:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?o:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?o:WeakSet,"%Function.prototype.call%":M,"%Function.prototype.apply%":k,"%Object.defineProperty%":$,"%Object.getPrototypeOf%":P,"%Math.abs%":h,"%Math.floor%":y,"%Math.max%":d,"%Math.min%":m,"%Math.pow%":v,"%Math.round%":b,"%Math.sign%":g,"%Reflect.getPrototypeOf%":x};if(E)try{null.error}catch(t){var D=E(E(t));I["%Error.prototype%"]=D}var R=function t(e){var r;if("%AsyncFunction%"===e)r=w("async function () {}");else if("%GeneratorFunction%"===e)r=w("function* () {}");else if("%AsyncGeneratorFunction%"===e)r=w("async function* () {}");else if("%AsyncGenerator%"===e){var n=t("%AsyncGeneratorFunction%");n&&(r=n.prototype)}else if("%AsyncIteratorPrototype%"===e){var o=t("%AsyncGenerator%");o&&E&&(r=E(o.prototype))}return I[e]=r,r},C={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},B=r(5246),U=r(9021),F=B.call(M,Array.prototype.concat),q=B.call(k,Array.prototype.splice),L=B.call(M,String.prototype.replace),V=B.call(M,String.prototype.slice),W=B.call(M,RegExp.prototype.exec),J=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,H=/\\(\\)?/g,K=function(t,e){var r,n=t;if(U(C,n)&&(n="%"+(r=C[n])[0]+"%"),U(I,n)){var o=I[n];if(o===T&&(o=R(n)),void 0===o&&!e)throw new l("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:r,name:n,value:o}}throw new f("intrinsic "+t+" does not exist!")};t.exports=function(t,e){if("string"!=typeof t||0===t.length)throw new l("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof e)throw new l('"allowMissing" argument must be a boolean');if(null===W(/^%?[^%]*%?$/,t))throw new f("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var r=function(t){var e=V(t,0,1),r=V(t,-1);if("%"===e&&"%"!==r)throw new f("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==e)throw new f("invalid intrinsic syntax, expected opening `%`");var n=[];return L(t,J,function(t,e,r,o){n[n.length]=r?L(o,H,"$1"):e||t}),n}(t),n=r.length>0?r[0]:"",o=K("%"+n+"%",e),i=o.name,s=o.value,a=!1,u=o.alias;u&&(n=u[0],q(r,F([0,1],u)));for(var c=1,p=!0;c=r.length){var m=O(s,h);s=(p=!!m)&&"get"in m&&!("originalValue"in m.get)?m.get:s[h]}else p=U(s,h),s=s[h];p&&!a&&(I[i]=s)}}return s}},3316:(t,e,r)=>{"use strict";var n=r(2244);t.exports=n.getPrototypeOf||null},8717:t=>{"use strict";t.exports="undefined"!=typeof Reflect&&Reflect.getPrototypeOf||null},2460:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}var o=r(8717),i=r(3316),s=r(9200);t.exports=o?function(t){return o(t)}:i?function(t){if(!t||"object"!==n(t)&&"function"!=typeof t)throw new TypeError("getProto: not an object");return i(t)}:s?function(t){return s(t)}:null},5466:t=>{"use strict";t.exports=Object.getOwnPropertyDescriptor},1554:(t,e,r)=>{"use strict";var n=r(5466);if(n)try{n([],"length")}catch(t){n=null}t.exports=n},2579:(t,e,r)=>{"use strict";var n=r(7385),o=function(){return!!n};o.hasArrayLengthDefineBug=function(){if(!n)return null;try{return 1!==n([],"length",{value:1}).length}catch(t){return!0}},t.exports=o},5990:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}var o="undefined"!=typeof Symbol&&Symbol,i=r(3031);t.exports=function(){return"function"==typeof o&&"function"==typeof Symbol&&"symbol"===n(o("foo"))&&"symbol"===n(Symbol("bar"))&&i()}},3031:t=>{"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}t.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"===e(Symbol.iterator))return!0;var t={},r=Symbol("test"),n=Object(r);if("string"==typeof r)return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;if("[object Symbol]"!==Object.prototype.toString.call(n))return!1;for(var o in t[r]=42,t)return!1;if("function"==typeof Object.keys&&0!==Object.keys(t).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(t).length)return!1;var i=Object.getOwnPropertySymbols(t);if(1!==i.length||i[0]!==r)return!1;if(!Object.prototype.propertyIsEnumerable.call(t,r))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var s=Object.getOwnPropertyDescriptor(t,r);if(42!==s.value||!0!==s.enumerable)return!1}return!0}},5994:(t,e,r)=>{"use strict";var n=r(3031);t.exports=function(){return n()&&!!Symbol.toStringTag}},9021:(t,e,r)=>{"use strict";var n=Function.prototype.call,o=Object.prototype.hasOwnProperty,i=r(5246);t.exports=i.call(n,o)},8405:(t,e)=>{e.read=function(t,e,r,n,o){var i,s,a=8*o-n-1,u=(1<>1,f=-7,l=r?o-1:0,p=r?-1:1,h=t[e+l];for(l+=p,i=h&(1<<-f)-1,h>>=-f,f+=a;f>0;i=256*i+t[e+l],l+=p,f-=8);for(s=i&(1<<-f)-1,i>>=-f,f+=n;f>0;s=256*s+t[e+l],l+=p,f-=8);if(0===i)i=1-c;else{if(i===u)return s?NaN:1/0*(h?-1:1);s+=Math.pow(2,n),i-=c}return(h?-1:1)*s*Math.pow(2,i-n)},e.write=function(t,e,r,n,o,i){var s,a,u,c=8*i-o-1,f=(1<>1,p=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,h=n?0:i-1,y=n?1:-1,d=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=f):(s=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-s))<1&&(s--,u*=2),(e+=s+l>=1?p/u:p*Math.pow(2,1-l))*u>=2&&(s++,u/=2),s+l>=f?(a=0,s=f):s+l>=1?(a=(e*u-1)*Math.pow(2,o),s+=l):(a=e*Math.pow(2,l-1)*Math.pow(2,o),s=0));o>=8;t[r+h]=255&a,h+=y,a/=256,o-=8);for(s=s<0;t[r+h]=255&s,h+=y,s/=256,c-=8);t[r+h-y]|=128*d}},376:t=>{"function"==typeof Object.create?t.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}},2755:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}var o=r(5994)(),i=r(4609)("Object.prototype.toString"),s=function(t){return!(o&&t&&"object"===n(t)&&Symbol.toStringTag in t)&&"[object Arguments]"===i(t)},a=function(t){return!!s(t)||null!==t&&"object"===n(t)&&"length"in t&&"number"==typeof t.length&&t.length>=0&&"[object Array]"!==i(t)&&"callee"in t&&"[object Function]"===i(t.callee)},u=function(){return s(arguments)}();s.isLegacyArguments=a,t.exports=u?s:a},8625:t=>{"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}var r,n,o=Function.prototype.toString,i="object"===("undefined"==typeof Reflect?"undefined":e(Reflect))&&null!==Reflect&&Reflect.apply;if("function"==typeof i&&"function"==typeof Object.defineProperty)try{r=Object.defineProperty({},"length",{get:function(){throw n}}),n={},i(function(){throw 42},null,r)}catch(t){t!==n&&(i=null)}else i=null;var s=/^\s*class\b/,a=function(t){try{var e=o.call(t);return s.test(e)}catch(t){return!1}},u=function(t){try{return!a(t)&&(o.call(t),!0)}catch(t){return!1}},c=Object.prototype.toString,f="function"==typeof Symbol&&!!Symbol.toStringTag,l=!(0 in[,]),p=function(){return!1};if("object"===("undefined"==typeof document?"undefined":e(document))){var h=document.all;c.call(h)===c.call(document.all)&&(p=function(t){if((l||!t)&&(void 0===t||"object"===e(t)))try{var r=c.call(t);return("[object HTMLAllCollection]"===r||"[object HTML document.all class]"===r||"[object HTMLCollection]"===r||"[object Object]"===r)&&null==t("")}catch(t){}return!1})}t.exports=i?function(t){if(p(t))return!0;if(!t)return!1;if("function"!=typeof t&&"object"!==e(t))return!1;try{i(t,null,r)}catch(t){if(t!==n)return!1}return!a(t)&&u(t)}:function(t){if(p(t))return!0;if(!t)return!1;if("function"!=typeof t&&"object"!==e(t))return!1;if(f)return u(t);if(a(t))return!1;var r=c.call(t);return!("[object Function]"!==r&&"[object GeneratorFunction]"!==r&&!/^\[object HTML/.test(r))&&u(t)}},6738:(t,e,r)=>{"use strict";var n=r(4609),o=r(8894)(/^\s*(?:function)?\*/),i=r(5994)(),s=r(2460),a=n("Object.prototype.toString"),u=n("Function.prototype.toString"),c=r(7856);t.exports=function(t){if("function"!=typeof t)return!1;if(o(u(t)))return!0;if(!i)return"[object GeneratorFunction]"===a(t);if(!s)return!1;var e=c();return e&&s(t)===e.prototype}},2703:t=>{"use strict";t.exports=function(t){return t!=t}},2191:(t,e,r)=>{"use strict";var n=r(3862),o=r(7921),i=r(2703),s=r(4828),a=r(2568),u=n(s(),Number);o(u,{getPolyfill:s,implementation:i,shim:a}),t.exports=u},4828:(t,e,r)=>{"use strict";var n=r(2703);t.exports=function(){return Number.isNaN&&Number.isNaN(NaN)&&!Number.isNaN("a")?Number.isNaN:n}},2568:(t,e,r)=>{"use strict";var n=r(7921),o=r(4828);t.exports=function(){var t=o();return n(Number,{isNaN:t},{isNaN:function(){return Number.isNaN!==t}}),t}},2975:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}var o,i=r(4609),s=r(5994)(),a=r(9021),u=r(1554);if(s){var c=i("RegExp.prototype.exec"),f={},l=function(){throw f},p={toString:l,valueOf:l};"symbol"===n(Symbol.toPrimitive)&&(p[Symbol.toPrimitive]=l),o=function(t){if(!t||"object"!==n(t))return!1;var e=u(t,"lastIndex");if(!e||!a(e,"value"))return!1;try{c(t,p)}catch(t){return t===f}}}else{var h=i("Object.prototype.toString");o=function(t){return!(!t||"object"!==n(t)&&"function"!=typeof t)&&"[object RegExp]"===h(t)}}t.exports=o},7913:(t,e,r)=>{"use strict";var n=r(1482);t.exports=function(t){return!!n(t)}},3138:t=>{"use strict";function e(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=n(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var o=0,i=function(){};return{s:i,n:function(){return o>=t.length?{done:!0}:{done:!1,value:t[o++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,s=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw s}}}}function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function n(t,e){if(t){if("string"==typeof t)return o(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(t,e):void 0}}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r=i)){var t=o[a];if(t.isAsync){var r=[p(b),p(function(t){if(t){if(y)return;if(!(t instanceof u.skipWrappedFunction))return y=!0,n(t);m=t}if(0===--c&&a>=i)return n(m)})];f(t.fn,e,r,r[0])}else if(t.fn.length>0){for(var s=[p(b)],g=arguments.length>=2?arguments:[null].concat(d),_=1;_=i)return c>0?void 0:h(function(){n(m)});v()}}}}function b(t){if(t){if(y)return;if(!(t instanceof u.skipWrappedFunction))return y=!0,n(t);m=t}if(++a>=i)return c>0?void 0:n(m);v.apply(e,arguments)}v.apply(null,[null].concat(r))},u.prototype.execPreSync=function(t,e,r){for(var n=this._pres.get(t)||[],o=n.length,i=0;i=s?o.call(null,c):t();c=e}if(++a>=s)return o.call(null,c);t()});f(n,e,[c].concat(m).concat([b]),b)}else{if(++a>=s)return o.call(null,c);t()}else{var g=p(function(e){return e?e instanceof u.overwriteResult?(r=e.args,++a>=s?o.apply(null,[null].concat(r)):t()):(c=e,t()):++a>=s?o.apply(null,[null].concat(r)):void t()});if(y(i[a],h))return++a>=s?o.apply(null,[null].concat(r)):t();if(n.length===h+1)f(n,e,m.concat([g]),g);else{var _,w;try{w=n.apply(e,m)}catch(t){_=t,c=t}if(l(w))return w.then(function(t){g(t instanceof u.overwriteResult?t:null)},function(t){return g(t)});if(w instanceof u.overwriteResult&&(r=w.args),++a>=s)return o.apply(null,[_].concat(r));t()}}}()},u.prototype.execPostSync=function(t,e,r){for(var n=this._posts.get(t)||[],o=n.length,i=0;i0?i[i.length-1]:null,f=Array.from(i);"function"==typeof a&&f.pop();var p=this,h=(s=s||{}).checkForPromise;this.execPre(t,r,i,function(i){if(i&&!(i instanceof u.skipWrappedFunction)){for(var y=s.numCallbackParams||0,d=s.contextParameter?[r]:[],m=d.length;m{"use strict";t.exports=Math.abs},8002:t=>{"use strict";t.exports=Math.floor},8654:t=>{"use strict";t.exports=Number.isNaN||function(t){return t!=t}},7803:t=>{"use strict";t.exports=Math.max},4207:t=>{"use strict";t.exports=Math.min},707:t=>{"use strict";t.exports=Math.pow},6396:t=>{"use strict";t.exports=Math.round},4335:(t,e,r)=>{"use strict";var n=r(8654);t.exports=function(t){return n(t)||0===t?t:t<0?-1:1}},3564:(t,e,r)=>{"use strict";t.exports=r(8424)},8424:(t,e,r)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}var o=r(7355),i=["__proto__","constructor","prototype"];function s(t,e,r,n,o,i){for(var a,u=0;u{"use strict";t.exports=function(t){for(var e=[],r="",n="DEFAULT",o=0;o{"use strict";var r=["find","findOne","update","updateMany","updateOne","replaceOne","remove","count","distinct","findOneAndDelete","findOneAndUpdate","aggregate","findCursor","deleteOne","deleteMany"];function n(){}for(var o=0,i=r.length;o{"use strict";var n=r(3669);if("unknown"==n.type)throw new Error("Unknown environment");t.exports=n.isNode?r(1186):(n.isMongo,r(3231))},1186:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(t,e){for(var r=0;r{"use strict";t=r.nmd(t);var n=r(365).lW;function o(t){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o(t)}e.isNode="object"==o(t)&&"object"==(void 0===r.g?"undefined":o(r.g))&&"function"==typeof n&&{env:{}}.argv,e.isMongo=!e.isNode&&"function"==typeof printjson&&"function"==typeof ObjectId&&"function"==typeof rs&&"function"==typeof sh,e.isBrowser=!e.isNode&&!e.isMongo&&"undefined"!=typeof window,e.type=e.isNode?"node":e.isMongo?"mongo":e.isBrowser?"browser":"unknown"},5417:(t,e,r)=>{"use strict";function n(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r");t.sort.set(r,n)})}(this.options,t),this;throw new TypeError("Invalid sort() argument. Must be a string, object, or array.")};var l={1:1,"-1":-1,asc:1,ascending:1,desc:-1,descending:-1};function p(t,e,r){if(Array.isArray(t.sort))throw new TypeError("Can't mix sort syntaxes. Use either array or object:\n- `.sort([['field', 1], ['test', -1]])`\n- `.sort({ field: 1, test: -1 })`");var n;if(r&&r.$meta)(n=t.sort||(t.sort={}))[e]={$meta:r.$meta};else{n=t.sort||(t.sort={});var o=String(r||1).toLowerCase();if(!(o=l[o]))throw new TypeError("Invalid sort value: { "+e+": "+r+" }");n[e]=o}}function h(t,e,r){if(t.sort=t.sort||[],!Array.isArray(t.sort))throw new TypeError("Can't mix sort syntaxes. Use either array or object:\n- `.sort([['field', 1], ['test', -1]])`\n- `.sort({ field: 1, test: -1 })`");var n=String(r||1).toLowerCase();if(!(n=l[n]))throw new TypeError("Invalid sort value: [ "+e+", "+r+" ]");t.sort.push([e,n])}function y(t,e,r,n,o,i,s){return t.op=e,c.canMerge(r)&&t.merge(r),n&&t._mergeUpdate(n),a.isObject(o)&&t.setOptions(o),i||s?!t._update||!t.options.overwrite&&0===a.keys(t._update).length?(s&&a.soon(s.bind(null,null,0)),t):(o=t._optionsForExec(),s||(o.safe=!1),r=t._conditions,n=t._updateForExec(),u("update",t._collection.collectionName,r,n,o),s=t._wrapCallback(e,s,{conditions:r,doc:n,options:o}),t._collection[e](r,n,o,a.tick(s)),t):t}["limit","skip","maxScan","batchSize","comment"].forEach(function(t){c.prototype[t]=function(e){return this._validate(t),this.options[t]=e,this}}),c.prototype.maxTime=c.prototype.maxTimeMS=function(t){return this._validate("maxTime"),this.options.maxTimeMS=t,this},c.prototype.snapshot=function(){return this._validate("snapshot"),this.options.snapshot=!arguments.length||!!arguments[0],this},c.prototype.hint=function(){if(0===arguments.length)return this;this._validate("hint");var t=arguments[0];if(a.isObject(t)){var e=this.options.hint||(this.options.hint={});for(var r in t)e[r]=t[r];return this}if("string"==typeof t)return this.options.hint=t,this;throw new TypeError("Invalid hint. "+t)},c.prototype.j=function(t){return this.options.j=t,this},c.prototype.slaveOk=function(t){return this.options.slaveOk=!arguments.length||!!t,this},c.prototype.read=c.prototype.setReadPreference=function(t){return arguments.length>1&&!c.prototype.read.deprecationWarningIssued&&(console.error("Deprecation warning: 'tags' argument is not supported anymore in Query.read() method. Please use mongodb.ReadPreference object instead."),c.prototype.read.deprecationWarningIssued=!0),this.options.readPreference=a.readPref(t),this},c.prototype.readConcern=c.prototype.r=function(t){return this.options.readConcern=a.readConcern(t),this},c.prototype.tailable=function(){return this._validate("tailable"),this.options.tailable=!arguments.length||!!arguments[0],this},c.prototype.writeConcern=c.prototype.w=function(t){return"object"===o(t)?(void 0!==t.j&&(this.options.j=t.j),void 0!==t.w&&(this.options.w=t.w),void 0!==t.wtimeout&&(this.options.wtimeout=t.wtimeout)):this.options.w="m"===t?"majority":t,this},c.prototype.wtimeout=c.prototype.wTimeout=function(t){return this.options.wtimeout=t,this},c.prototype.merge=function(t){if(!t)return this;if(!c.canMerge(t))throw new TypeError("Invalid argument. Expected instanceof mquery or plain object");return t instanceof c?(t._conditions&&a.merge(this._conditions,t._conditions),t._fields&&(this._fields||(this._fields={}),a.merge(this._fields,t._fields)),t.options&&(this.options||(this.options={}),a.merge(this.options,t.options)),t._update&&(this._update||(this._update={}),a.mergeClone(this._update,t._update)),t._distinct&&(this._distinct=t._distinct),this):(a.merge(this._conditions,t),this)},c.prototype.find=function(t,e){if(this.op="find","function"==typeof t?(e=t,t=void 0):c.canMerge(t)&&this.merge(t),!e)return this;var r=this._conditions,n=this._optionsForExec();return this.$useProjection?n.projection=this._fieldsForExec():n.fields=this._fieldsForExec(),u("find",this._collection.collectionName,r,n),e=this._wrapCallback("find",e,{conditions:r,options:n}),this._collection.find(r,n,a.tick(e)),this},c.prototype.cursor=function(t){if(this.op){if("find"!==this.op)throw new TypeError(".cursor only support .find method")}else this.find(t);var e=this._conditions,r=this._optionsForExec();return this.$useProjection?r.projection=this._fieldsForExec():r.fields=this._fieldsForExec(),u("findCursor",this._collection.collectionName,e,r),this._collection.findCursor(e,r)},c.prototype.findOne=function(t,e){if(this.op="findOne","function"==typeof t?(e=t,t=void 0):c.canMerge(t)&&this.merge(t),!e)return this;var r=this._conditions,n=this._optionsForExec();return this.$useProjection?n.projection=this._fieldsForExec():n.fields=this._fieldsForExec(),u("findOne",this._collection.collectionName,r,n),e=this._wrapCallback("findOne",e,{conditions:r,options:n}),this._collection.findOne(r,n,a.tick(e)),this},c.prototype.count=function(t,e){if(this.op="count",this._validate(),"function"==typeof t?(e=t,t=void 0):c.canMerge(t)&&this.merge(t),!e)return this;var r=this._conditions,n=this._optionsForExec();return u("count",this._collection.collectionName,r,n),e=this._wrapCallback("count",e,{conditions:r,options:n}),this._collection.count(r,n,a.tick(e)),this},c.prototype.distinct=function(t,e,r){if(this.op="distinct",this._validate(),!r){switch(o(e)){case"function":r=e,"string"==typeof t&&(e=t,t=void 0);break;case"undefined":case"string":break;default:throw new TypeError("Invalid `field` argument. Must be string or function")}switch(o(t)){case"function":r=t,t=e=void 0;break;case"string":e=t,t=void 0}}if("string"==typeof e&&(this._distinct=e),c.canMerge(t)&&this.merge(t),!r)return this;if(!this._distinct)throw new Error("No value for `distinct` has been declared");var n=this._conditions,i=this._optionsForExec();return u("distinct",this._collection.collectionName,n,i),r=this._wrapCallback("distinct",r,{conditions:n,options:i}),this._collection.distinct(this._distinct,n,i,a.tick(r)),this},c.prototype.update=function(t,e,r,n){var i;switch(arguments.length){case 3:"function"==typeof r&&(n=r,r=void 0);break;case 2:"function"==typeof e&&(n=e,e=t,t=void 0);break;case 1:switch(o(t)){case"function":n=t,t=r=e=void 0;break;case"boolean":i=t,t=void 0;break;default:e=t,t=r=void 0}}return y(this,"update",t,e,r,i,n)},c.prototype.updateMany=function(t,e,r,n){var i;switch(arguments.length){case 3:"function"==typeof r&&(n=r,r=void 0);break;case 2:"function"==typeof e&&(n=e,e=t,t=void 0);break;case 1:switch(o(t)){case"function":n=t,t=r=e=void 0;break;case"boolean":i=t,t=void 0;break;default:e=t,t=r=void 0}}return y(this,"updateMany",t,e,r,i,n)},c.prototype.updateOne=function(t,e,r,n){var i;switch(arguments.length){case 3:"function"==typeof r&&(n=r,r=void 0);break;case 2:"function"==typeof e&&(n=e,e=t,t=void 0);break;case 1:switch(o(t)){case"function":n=t,t=r=e=void 0;break;case"boolean":i=t,t=void 0;break;default:e=t,t=r=void 0}}return y(this,"updateOne",t,e,r,i,n)},c.prototype.replaceOne=function(t,e,r,n){var i;switch(arguments.length){case 3:"function"==typeof r&&(n=r,r=void 0);break;case 2:"function"==typeof e&&(n=e,e=t,t=void 0);break;case 1:switch(o(t)){case"function":n=t,t=r=e=void 0;break;case"boolean":i=t,t=void 0;break;default:e=t,t=r=void 0}}return this.setOptions({overwrite:!0}),y(this,"replaceOne",t,e,r,i,n)},c.prototype.remove=function(t,e){var r;if(this.op="remove","function"==typeof t?(e=t,t=void 0):c.canMerge(t)?this.merge(t):!0===t&&(r=t,t=void 0),!r&&!e)return this;var n=this._optionsForExec();e||(n.safe=!1);var o=this._conditions;return u("remove",this._collection.collectionName,o,n),e=this._wrapCallback("remove",e,{conditions:o,options:n}),this._collection.remove(o,n,a.tick(e)),this},c.prototype.deleteOne=function(t,e){var r;if(this.op="deleteOne","function"==typeof t?(e=t,t=void 0):c.canMerge(t)?this.merge(t):!0===t&&(r=t,t=void 0),!r&&!e)return this;var n=this._optionsForExec();e||(n.safe=!1),delete n.justOne;var o=this._conditions;return u("deleteOne",this._collection.collectionName,o,n),e=this._wrapCallback("deleteOne",e,{conditions:o,options:n}),this._collection.deleteOne(o,n,a.tick(e)),this},c.prototype.deleteMany=function(t,e){var r;if(this.op="deleteMany","function"==typeof t?(e=t,t=void 0):c.canMerge(t)?this.merge(t):!0===t&&(r=t,t=void 0),!r&&!e)return this;var n=this._optionsForExec();e||(n.safe=!1),delete n.justOne;var o=this._conditions;return u("deleteOne",this._collection.collectionName,o,n),e=this._wrapCallback("deleteOne",e,{conditions:o,options:n}),this._collection.deleteMany(o,n,a.tick(e)),this},c.prototype.findOneAndUpdate=function(t,e,r,n){switch(this.op="findOneAndUpdate",this._validate(),arguments.length){case 3:"function"==typeof r&&(n=r,r={});break;case 2:"function"==typeof e&&(n=e,e=t,t=void 0),r=void 0;break;case 1:"function"==typeof t?(n=t,t=r=e=void 0):(e=t,t=r=void 0)}if(c.canMerge(t)&&this.merge(t),e&&this._mergeUpdate(e),r&&this.setOptions(r),!n)return this;var o=this._conditions,i=this._updateForExec();return r=this._optionsForExec(),this._collection.findOneAndUpdate(o,i,r,a.tick(n))},c.prototype.findOneAndRemove=c.prototype.findOneAndDelete=function(t,e,r){if(this.op="findOneAndRemove",this._validate(),"function"==typeof e?(r=e,e=void 0):"function"==typeof t&&(r=t,t=void 0),c.canMerge(t)&&this.merge(t),e&&this.setOptions(e),!r)return this;e=this._optionsForExec();var n=this._conditions;return this._collection.findOneAndDelete(n,e,a.tick(r))},c.prototype._wrapCallback=function(t,e,r){var n=this._traceFunction||c.traceFunction;if(n){r.collectionName=this._collection.collectionName;var o=n&&n.call(null,t,r,this),i=(new Date).getTime();return function(t,r){if(o){var n=(new Date).getTime()-i;o.call(null,t,r,n)}e&&e.apply(null,arguments)}}return e},c.prototype.setTraceFunction=function(t){return this._traceFunction=t,this},c.prototype.exec=function(t,e){switch(o(t)){case"function":e=t,t=null;break;case"string":this.op=t}i.ok(this.op,"Missing query type: (find, update, etc)"),"update"!=this.op&&"remove"!=this.op||e||(e=!0);var r=this;if("function"!=typeof e)return new c.Promise(function(t,e){r[r.op](function(r,n){r?e(r):t(n),t=e=null})});this[this.op](e)},c.prototype.thunk=function(){var t=this;return function(e){t.exec(e)}},c.prototype.then=function(t,e){var r=this;return new c.Promise(function(t,e){r.exec(function(r,n){r?e(r):t(n),t=e=null})}).then(t,e)},c.prototype.cursor=function(){if("find"!=this.op)throw new Error("cursor() is only available for find");var t=this._conditions,e=this._optionsForExec();return this.$useProjection?e.projection=this._fieldsForExec():e.fields=this._fieldsForExec(),u("cursor",this._collection.collectionName,t,e),this._collection.findCursor(t,e)},c.prototype.selected=function(){return!!(this._fields&&Object.keys(this._fields).length>0)},c.prototype.selectedInclusively=function(){if(!this._fields)return!1;var t=Object.keys(this._fields);if(0===t.length)return!1;for(var e=0;e=t.length?{done:!0}:{done:!1,value:t[o++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,s=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw s}}}}(r);try{for(i.s();!(t=i.n()).done;){var s=t.value;this.options.overwrite?o[s]=e[s]:"$"!==s[0]?(o.$set||(e.$set?o.$set=e.$set:o.$set={}),o.$set[s]=e[s],~r.indexOf("$set")||r.push("$set")):"$set"===s&&o.$set||(o[s]=e[s])}}catch(t){i.e(t)}finally{i.f()}return this._compiledUpdate=o,o},c.prototype._ensurePath=function(t){if(!this._path)throw new Error(t+"() must be used after where() when called with these arguments")},c.permissions=r(6477),c._isPermitted=function(t,e){var r=c.permissions[e];return!r||!0!==r[t]},c.prototype._validate=function(t){var e,r;if(void 0===t){if("function"!=typeof(r=c.permissions[this.op]))return!0;e=r(this)}else c._isPermitted(t,this.op)||(e=t);if(e)throw new Error(e+" cannot be used with "+this.op)},c.canMerge=function(t){return t instanceof c||a.isObject(t)},c.setGlobalTraceFunction=function(t){c.traceFunction=t},c.utils=a,c.env=r(3669),c.Collection=r(8514),c.BaseCollection=r(3231),c.Promise=Promise,t.exports=c},6477:(t,e)=>{"use strict";var r=e;r.distinct=function(t){return t._fields&&Object.keys(t._fields).length>0?"field selection and slice":(Object.keys(r.distinct).every(function(r){return!t.options[r]||(e=r,!1)}),e);var e},r.distinct.select=r.distinct.slice=r.distinct.sort=r.distinct.limit=r.distinct.skip=r.distinct.batchSize=r.distinct.maxScan=r.distinct.snapshot=r.distinct.hint=r.distinct.tailable=!0,r.findOneAndUpdate=r.findOneAndRemove=function(t){var e;return Object.keys(r.findOneAndUpdate).every(function(r){return!t.options[r]||(e=r,!1)}),e},r.findOneAndUpdate.limit=r.findOneAndUpdate.skip=r.findOneAndUpdate.batchSize=r.findOneAndUpdate.maxScan=r.findOneAndUpdate.snapshot=r.findOneAndUpdate.tailable=!0,r.count=function(t){return t._fields&&Object.keys(t._fields).length>0?"field selection and slice":(Object.keys(r.count).every(function(r){return!t.options[r]||(e=r,!1)}),e);var e},r.count.slice=r.count.batchSize=r.count.maxScan=r.count.snapshot=r.count.tailable=!0},728:(t,e,r)=>{"use strict";var n=r(365).lW,o=["__proto__","constructor","prototype"],i=e.clone=function t(r,o){if(null==r)return r;if(Array.isArray(r))return e.cloneArray(r,o);if(r.constructor){if(/ObjectI[dD]$/.test(r.constructor.name))return"function"==typeof r.clone?r.clone():new r.constructor(r.id);if("ReadPreference"===r.constructor.name)return new r.constructor(r.mode,t(r.tags,o));if("Binary"==r._bsontype&&r.buffer&&r.value)return"function"==typeof r.clone?r.clone():new r.constructor(r.value(!0),r.sub_type);if("Date"===r.constructor.name||"Function"===r.constructor.name)return new r.constructor(+r);if("RegExp"===r.constructor.name)return new RegExp(r);if("Buffer"===r.constructor.name)return n.from(r)}return a(r)?e.cloneObject(r,o):r.valueOf?r.valueOf():void 0};e.cloneObject=function(t,e){var r,n=e&&e.minimize,s={},a=Object.keys(t),u=a.length,c=!1,f="",l=0;for(l=0;l1)throw new Error("Adding properties is not supported");function e(){}return e.prototype=t,new e},e.inherits=function(t,r){t.prototype=e.create(r.prototype),t.prototype.constructor=t};var u=e.soon="function"==typeof setImmediate?setImmediate:{env:{}}.nextTick;e.isArgumentsObject=function(t){return"[object Arguments]"===Object.prototype.toString.call(t)}},2068:t=>{function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}var r=1e3,n=60*r,o=60*n,i=24*o,s=7*i;function a(t,e,r,n){var o=e>=1.5*r;return Math.round(t/r)+" "+n+(o?"s":"")}t.exports=function(t,u){u=u||{};var c,f,l=e(t);if("string"===l&&t.length>0)return function(t){if(!((t=String(t)).length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(e){var a=parseFloat(e[1]);switch((e[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*a;case"weeks":case"week":case"w":return a*s;case"days":case"day":case"d":return a*i;case"hours":case"hour":case"hrs":case"hr":case"h":return a*o;case"minutes":case"minute":case"mins":case"min":case"m":return a*n;case"seconds":case"second":case"secs":case"sec":case"s":return a*r;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return a;default:return}}}}(t);if("number"===l&&isFinite(t))return u.long?(c=t,(f=Math.abs(c))>=i?a(c,f,i,"day"):f>=o?a(c,f,o,"hour"):f>=n?a(c,f,n,"minute"):f>=r?a(c,f,r,"second"):c+" ms"):function(t){var e=Math.abs(t);return e>=i?Math.round(t/i)+"d":e>=o?Math.round(t/o)+"h":e>=n?Math.round(t/n)+"m":e>=r?Math.round(t/r)+"s":t+"ms"}(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))}},2507:t=>{"use strict";var e=function(t){return t!=t};t.exports=function(t,r){return 0===t&&0===r?1/t==1/r:t===r||!(!e(t)||!e(r))}},4710:(t,e,r)=>{"use strict";var n=r(7921),o=r(3862),i=r(2507),s=r(9292),a=r(9228),u=o(s(),Object);n(u,{getPolyfill:s,implementation:i,shim:a}),t.exports=u},9292:(t,e,r)=>{"use strict";var n=r(2507);t.exports=function(){return"function"==typeof Object.is?Object.is:n}},9228:(t,e,r)=>{"use strict";var n=r(9292),o=r(7921);t.exports=function(){var t=n();return o(Object,{is:t},{is:function(){return Object.is!==t}}),t}},6164:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}var o;if(!Object.keys){var i=Object.prototype.hasOwnProperty,s=Object.prototype.toString,a=r(5184),u=Object.prototype.propertyIsEnumerable,c=!u.call({toString:null},"toString"),f=u.call(function(){},"prototype"),l=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],p=function(t){var e=t.constructor;return e&&e.prototype===t},h={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},y=function(){if("undefined"==typeof window)return!1;for(var t in window)try{if(!h["$"+t]&&i.call(window,t)&&null!==window[t]&&"object"===n(window[t]))try{p(window[t])}catch(t){return!0}}catch(t){return!0}return!1}();o=function(t){var e=null!==t&&"object"===n(t),r="[object Function]"===s.call(t),o=a(t),u=e&&"[object String]"===s.call(t),h=[];if(!e&&!r&&!o)throw new TypeError("Object.keys called on a non-object");var d=f&&r;if(u&&t.length>0&&!i.call(t,0))for(var m=0;m0)for(var v=0;v{"use strict";var n=Array.prototype.slice,o=r(5184),i=Object.keys,s=i?function(t){return i(t)}:r(6164),a=Object.keys;s.shim=function(){if(Object.keys){var t=function(){var t=Object.keys(arguments);return t&&t.length===arguments.length}(1,2);t||(Object.keys=function(t){return o(t)?a(n.call(t)):a(t)})}else Object.keys=s;return Object.keys||s},t.exports=s},5184:t=>{"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}var r=Object.prototype.toString;t.exports=function(t){var n=r.call(t),o="[object Arguments]"===n;return o||(o="[object Array]"!==n&&null!==t&&"object"===e(t)&&"number"==typeof t.length&&t.length>=0&&"[object Function]"===r.call(t.callee)),o}},7373:t=>{"use strict";t.exports=["Float16Array","Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array"]},8894:(t,e,r)=>{"use strict";var n=r(4609),o=r(2975),i=n("RegExp.prototype.exec"),s=r(4820);t.exports=function(t){if(!o(t))throw new s("`regex` must be a RegExp");return function(e){return null!==i(t,e)}}},2637:(t,e,r)=>{"use strict";var n=r(6893),o=r(3793),i=r(2579)(),s=r(1554),a=r(4820),u=n("%Math.floor%");t.exports=function(t,e){if("function"!=typeof t)throw new a("`fn` is not a function");if("number"!=typeof e||e<0||e>4294967295||u(e)!==e)throw new a("`length` must be a positive 32-bit integer");var r=arguments.length>2&&!!arguments[2],n=!0,c=!0;if("length"in t&&s){var f=s(t,"length");f&&!f.configurable&&(n=!1),f&&!f.writable&&(c=!1)}return(n||c||!r)&&(i?o(t,"length",e,!0,!0):o(t,"length",e)),t}},8538:t=>{function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}t.exports=function(t){return t&&"object"===e(t)&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}},9957:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}var o=r(2755),i=r(6738),s=r(1482),a=r(7913);function u(t){return t.call.bind(t)}var c="undefined"!=typeof BigInt,f="undefined"!=typeof Symbol,l=u(Object.prototype.toString),p=u(Number.prototype.valueOf),h=u(String.prototype.valueOf),y=u(Boolean.prototype.valueOf);if(c)var d=u(BigInt.prototype.valueOf);if(f)var m=u(Symbol.prototype.valueOf);function v(t,e){if("object"!==n(t))return!1;try{return e(t),!0}catch(t){return!1}}function b(t){return"[object Map]"===l(t)}function g(t){return"[object Set]"===l(t)}function _(t){return"[object WeakMap]"===l(t)}function w(t){return"[object WeakSet]"===l(t)}function O(t){return"[object ArrayBuffer]"===l(t)}function $(t){return"undefined"!=typeof ArrayBuffer&&(O.working?O(t):t instanceof ArrayBuffer)}function S(t){return"[object DataView]"===l(t)}function j(t){return"undefined"!=typeof DataView&&(S.working?S(t):t instanceof DataView)}e.isArgumentsObject=o,e.isGeneratorFunction=i,e.isTypedArray=a,e.isPromise=function(t){return"undefined"!=typeof Promise&&t instanceof Promise||null!==t&&"object"===n(t)&&"function"==typeof t.then&&"function"==typeof t.catch},e.isArrayBufferView=function(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):a(t)||j(t)},e.isUint8Array=function(t){return"Uint8Array"===s(t)},e.isUint8ClampedArray=function(t){return"Uint8ClampedArray"===s(t)},e.isUint16Array=function(t){return"Uint16Array"===s(t)},e.isUint32Array=function(t){return"Uint32Array"===s(t)},e.isInt8Array=function(t){return"Int8Array"===s(t)},e.isInt16Array=function(t){return"Int16Array"===s(t)},e.isInt32Array=function(t){return"Int32Array"===s(t)},e.isFloat32Array=function(t){return"Float32Array"===s(t)},e.isFloat64Array=function(t){return"Float64Array"===s(t)},e.isBigInt64Array=function(t){return"BigInt64Array"===s(t)},e.isBigUint64Array=function(t){return"BigUint64Array"===s(t)},b.working="undefined"!=typeof Map&&b(new Map),e.isMap=function(t){return"undefined"!=typeof Map&&(b.working?b(t):t instanceof Map)},g.working="undefined"!=typeof Set&&g(new Set),e.isSet=function(t){return"undefined"!=typeof Set&&(g.working?g(t):t instanceof Set)},_.working="undefined"!=typeof WeakMap&&_(new WeakMap),e.isWeakMap=function(t){return"undefined"!=typeof WeakMap&&(_.working?_(t):t instanceof WeakMap)},w.working="undefined"!=typeof WeakSet&&w(new WeakSet),e.isWeakSet=function(t){return w(t)},O.working="undefined"!=typeof ArrayBuffer&&O(new ArrayBuffer),e.isArrayBuffer=$,S.working="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView&&S(new DataView(new ArrayBuffer(1),0,1)),e.isDataView=j;var A="undefined"!=typeof SharedArrayBuffer?SharedArrayBuffer:void 0;function E(t){return"[object SharedArrayBuffer]"===l(t)}function P(t){return void 0!==A&&(void 0===E.working&&(E.working=E(new A)),E.working?E(t):t instanceof A)}function x(t){return v(t,p)}function k(t){return v(t,h)}function M(t){return v(t,y)}function T(t){return c&&v(t,d)}function N(t){return f&&v(t,m)}e.isSharedArrayBuffer=P,e.isAsyncFunction=function(t){return"[object AsyncFunction]"===l(t)},e.isMapIterator=function(t){return"[object Map Iterator]"===l(t)},e.isSetIterator=function(t){return"[object Set Iterator]"===l(t)},e.isGeneratorObject=function(t){return"[object Generator]"===l(t)},e.isWebAssemblyCompiledModule=function(t){return"[object WebAssembly.Module]"===l(t)},e.isNumberObject=x,e.isStringObject=k,e.isBooleanObject=M,e.isBigIntObject=T,e.isSymbolObject=N,e.isBoxedPrimitive=function(t){return x(t)||k(t)||M(t)||T(t)||N(t)},e.isAnyArrayBuffer=function(t){return"undefined"!=typeof Uint8Array&&($(t)||P(t))},["isProxy","isExternal","isModuleNamespaceObject"].forEach(function(t){Object.defineProperty(e,t,{enumerable:!1,value:function(){throw new Error(t+" is not supported in userland")}})})},8751:(t,e,r)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}var o=Object.getOwnPropertyDescriptors||function(t){for(var e=Object.keys(t),r={},n=0;n=o)return t;switch(t){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(t){return"[Circular]"}default:return t}}),a=n[r];r=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),m(r)?n.showHidden=r:r&&e._extend(n,r),_(n.showHidden)&&(n.showHidden=!1),_(n.depth)&&(n.depth=2),_(n.colors)&&(n.colors=!1),_(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=f),p(n,t,n.depth)}function f(t,e){var r=c.styles[e];return r?"["+c.colors[r][0]+"m"+t+"["+c.colors[r][1]+"m":t}function l(t,e){return t}function p(t,r,n){if(t.customInspect&&r&&j(r.inspect)&&r.inspect!==e.inspect&&(!r.constructor||r.constructor.prototype!==r)){var o=r.inspect(n,t);return g(o)||(o=p(t,o,n)),o}var i=function(t,e){if(_(e))return t.stylize("undefined","undefined");if(g(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}return b(e)?t.stylize(""+e,"number"):m(e)?t.stylize(""+e,"boolean"):v(e)?t.stylize("null","null"):void 0}(t,r);if(i)return i;var s=Object.keys(r),a=function(t){var e={};return t.forEach(function(t,r){e[t]=!0}),e}(s);if(t.showHidden&&(s=Object.getOwnPropertyNames(r)),S(r)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return h(r);if(0===s.length){if(j(r)){var u=r.name?": "+r.name:"";return t.stylize("[Function"+u+"]","special")}if(w(r))return t.stylize(RegExp.prototype.toString.call(r),"regexp");if($(r))return t.stylize(Date.prototype.toString.call(r),"date");if(S(r))return h(r)}var c,f="",l=!1,O=["{","}"];return d(r)&&(l=!0,O=["[","]"]),j(r)&&(f=" [Function"+(r.name?": "+r.name:"")+"]"),w(r)&&(f=" "+RegExp.prototype.toString.call(r)),$(r)&&(f=" "+Date.prototype.toUTCString.call(r)),S(r)&&(f=" "+h(r)),0!==s.length||l&&0!=r.length?n<0?w(r)?t.stylize(RegExp.prototype.toString.call(r),"regexp"):t.stylize("[Object]","special"):(t.seen.push(r),c=l?function(t,e,r,n,o){for(var i=[],s=0,a=e.length;s60?r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+r[1]:r[0]+e+" "+t.join(", ")+" "+r[1]}(c,f,O)):O[0]+f+O[1]}function h(t){return"["+Error.prototype.toString.call(t)+"]"}function y(t,e,r,n,o,i){var s,a,u;if((u=Object.getOwnPropertyDescriptor(e,o)||{value:e[o]}).get?a=u.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):u.set&&(a=t.stylize("[Setter]","special")),x(n,o)||(s="["+o+"]"),a||(t.seen.indexOf(u.value)<0?(a=v(r)?p(t,u.value,null):p(t,u.value,r-1)).indexOf("\n")>-1&&(a=i?a.split("\n").map(function(t){return" "+t}).join("\n").slice(2):"\n"+a.split("\n").map(function(t){return" "+t}).join("\n")):a=t.stylize("[Circular]","special")),_(s)){if(i&&o.match(/^\d+$/))return a;(s=JSON.stringify(""+o)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.slice(1,-1),s=t.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=t.stylize(s,"string"))}return s+": "+a}function d(t){return Array.isArray(t)}function m(t){return"boolean"==typeof t}function v(t){return null===t}function b(t){return"number"==typeof t}function g(t){return"string"==typeof t}function _(t){return void 0===t}function w(t){return O(t)&&"[object RegExp]"===A(t)}function O(t){return"object"===n(t)&&null!==t}function $(t){return O(t)&&"[object Date]"===A(t)}function S(t){return O(t)&&("[object Error]"===A(t)||t instanceof Error)}function j(t){return"function"==typeof t}function A(t){return Object.prototype.toString.call(t)}function E(t){return t<10?"0"+t.toString(10):t.toString(10)}e.debuglog=function(t){if(t=t.toUpperCase(),!s[t])if(a.test(t)){var r={env:{}}.pid;s[t]=function(){var n=e.format.apply(e,arguments);console.error("%s %d: %s",t,r,n)}}else s[t]=function(){};return s[t]},e.inspect=c,c.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},c.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.types=r(9957),e.isArray=d,e.isBoolean=m,e.isNull=v,e.isNullOrUndefined=function(t){return null==t},e.isNumber=b,e.isString=g,e.isSymbol=function(t){return"symbol"===n(t)},e.isUndefined=_,e.isRegExp=w,e.types.isRegExp=w,e.isObject=O,e.isDate=$,e.types.isDate=$,e.isError=S,e.types.isNativeError=S,e.isFunction=j,e.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"===n(t)||void 0===t},e.isBuffer=r(8538);var P=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function x(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.log=function(){var t,r;console.log("%s - %s",(r=[E((t=new Date).getHours()),E(t.getMinutes()),E(t.getSeconds())].join(":"),[t.getDate(),P[t.getMonth()],r].join(" ")),e.format.apply(e,arguments))},e.inherits=r(376),e._extend=function(t,e){if(!e||!O(e))return t;for(var r=Object.keys(e),n=r.length;n--;)t[r[n]]=e[r[n]];return t};var k="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function M(t,e){if(!t){var r=new Error("Promise was rejected with a falsy value");r.reason=t,t=r}return e(t)}e.promisify=function(t){if("function"!=typeof t)throw new TypeError('The "original" argument must be of type Function');if(k&&t[k]){var e;if("function"!=typeof(e=t[k]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(e,k,{value:e,enumerable:!1,writable:!1,configurable:!0}),e}function e(){for(var e,r,n=new Promise(function(t,n){e=t,r=n}),o=[],i=0;i{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}var o=r(5337),i=r(6461),s=r(3862),a=r(4609),u=r(1554),c=r(2460),f=a("Object.prototype.toString"),l=r(5994)(),p="undefined"==typeof globalThis?r.g:globalThis,h=i(),y=a("String.prototype.slice"),d=a("Array.prototype.indexOf",!0)||function(t,e){for(var r=0;r-1?e:"Object"===e&&function(t){var e=!1;return o(m,function(r,n){if(!e)try{r(t),e=y(n,1)}catch(t){}}),e}(t)}return u?function(t){var e=!1;return o(m,function(r,n){if(!e)try{"$"+r(t)===n&&(e=y(n,1))}catch(t){}}),e}(t):null}},6461:(t,e,r)=>{"use strict";var n=r(7373),o="undefined"==typeof globalThis?r.g:globalThis;t.exports=function(){for(var t=[],e=0;e{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),r(5507)})()); \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/mongoose/index.js b/food-ordering-app/server/node_modules/mongoose/index.js index 1abb17725..7320766f0 100644 --- a/food-ordering-app/server/node_modules/mongoose/index.js +++ b/food-ordering-app/server/node_modules/mongoose/index.js @@ -1,4 +1,3 @@ - /** * Export lib/mongoose * @@ -11,3 +10,54 @@ const mongoose = require('./lib/'); module.exports = mongoose; module.exports.default = mongoose; module.exports.mongoose = mongoose; + +// Re-export for ESM support +module.exports.cast = mongoose.cast; +module.exports.STATES = mongoose.STATES; +module.exports.setDriver = mongoose.setDriver; +module.exports.set = mongoose.set; +module.exports.get = mongoose.get; +module.exports.createConnection = mongoose.createConnection; +module.exports.connect = mongoose.connect; +module.exports.disconnect = mongoose.disconnect; +module.exports.startSession = mongoose.startSession; +module.exports.pluralize = mongoose.pluralize; +module.exports.model = mongoose.model; +module.exports.deleteModel = mongoose.deleteModel; +module.exports.modelNames = mongoose.modelNames; +module.exports.plugin = mongoose.plugin; +module.exports.connections = mongoose.connections; +module.exports.version = mongoose.version; +module.exports.Mongoose = mongoose.Mongoose; +module.exports.Schema = mongoose.Schema; +module.exports.SchemaType = mongoose.SchemaType; +module.exports.SchemaTypes = mongoose.SchemaTypes; +module.exports.VirtualType = mongoose.VirtualType; +module.exports.Types = mongoose.Types; +module.exports.Query = mongoose.Query; +module.exports.Promise = mongoose.Promise; +module.exports.Model = mongoose.Model; +module.exports.Document = mongoose.Document; +module.exports.ObjectId = mongoose.ObjectId; +module.exports.isValidObjectId = mongoose.isValidObjectId; +module.exports.isObjectIdOrHexString = mongoose.isObjectIdOrHexString; +module.exports.syncIndexes = mongoose.syncIndexes; +module.exports.Decimal128 = mongoose.Decimal128; +module.exports.Mixed = mongoose.Mixed; +module.exports.Date = mongoose.Date; +module.exports.Number = mongoose.Number; +module.exports.Error = mongoose.Error; +module.exports.now = mongoose.now; +module.exports.CastError = mongoose.CastError; +module.exports.SchemaTypeOptions = mongoose.SchemaTypeOptions; +module.exports.mongo = mongoose.mongo; +module.exports.mquery = mongoose.mquery; +module.exports.sanitizeFilter = mongoose.sanitizeFilter; +module.exports.trusted = mongoose.trusted; +module.exports.skipMiddlewareFunction = mongoose.skipMiddlewareFunction; +module.exports.overwriteMiddlewareResult = mongoose.overwriteMiddlewareResult; + +// The following properties are not exported using ESM because `setDriver()` can mutate these +// module.exports.connection = mongoose.connection; +// module.exports.Collection = mongoose.Collection; +// module.exports.Connection = mongoose.Connection; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/aggregate.js b/food-ordering-app/server/node_modules/mongoose/lib/aggregate.js index 781981010..36f81c281 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/aggregate.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/aggregate.js @@ -19,7 +19,7 @@ const validRedactStringValues = new Set(['$$DESCEND', '$$PRUNE', '$$KEEP']); /** * Aggregate constructor used for building aggregation pipelines. Do not - * instantiate this class directly, use [Model.aggregate()](/docs/api.html#model_Model.aggregate) instead. + * instantiate this class directly, use [Model.aggregate()](/docs/api/model.html#model_Model-aggregate) instead. * * #### Example: * @@ -38,14 +38,12 @@ const validRedactStringValues = new Set(['$$DESCEND', '$$PRUNE', '$$KEEP']); * - The documents returned are plain javascript objects, not mongoose documents (since any shape of document can be returned). * - Mongoose does **not** cast pipeline stages. The below will **not** work unless `_id` is a string in the database * - * ```javascript - * new Aggregate([{ $match: { _id: '00000000000000000000000a' } }]); - * // Do this instead to cast to an ObjectId - * new Aggregate([{ $match: { _id: new mongoose.Types.ObjectId('00000000000000000000000a') } }]); - * ``` + * new Aggregate([{ $match: { _id: '00000000000000000000000a' } }]); + * // Do this instead to cast to an ObjectId + * new Aggregate([{ $match: { _id: new mongoose.Types.ObjectId('00000000000000000000000a') } }]); * - * @see MongoDB https://docs.mongodb.org/manual/applications/aggregation/ - * @see driver https://mongodb.github.com/node-mongodb-native/api-generated/collection.html#aggregate + * @see MongoDB https://www.mongodb.com/docs/manual/applications/aggregation/ + * @see driver https://mongodb.github.io/node-mongodb-native/4.9/classes/Collection.html#aggregate * @param {Array} [pipeline] aggregation pipeline as an array of objects * @param {Model} [model] the model to use with this aggregate. * @api public @@ -62,23 +60,23 @@ function Aggregate(pipeline, model) { } /** - * Contains options passed down to the [aggregate command](https://docs.mongodb.com/manual/reference/command/aggregate/). + * Contains options passed down to the [aggregate command](https://www.mongodb.com/docs/manual/reference/command/aggregate/). * Supported options are: * - * - [`allowDiskUse`](./api.html#aggregate_Aggregate-allowDiskUse) + * - [`allowDiskUse`](#aggregate_Aggregate-allowDiskUse) * - `bypassDocumentValidation` - * - [`collation`](./api.html#aggregate_Aggregate-collation) + * - [`collation`](#aggregate_Aggregate-collation) * - `comment` - * - [`cursor`](./api.html#aggregate_Aggregate-cursor) - * - [`explain`](./api.html#aggregate_Aggregate-explain) + * - [`cursor`](#aggregate_Aggregate-cursor) + * - [`explain`](#aggregate_Aggregate-explain) * - `fieldsAsRaw` - * - hint - * - let + * - [`hint`](#aggregate_Aggregate-hint) + * - `let` * - `maxTimeMS` * - `raw` - * - `readConcern` + * - [`readConcern`](#aggregate_Aggregate-readConcern) * - `readPreference` - * - [`session`](./api.html#aggregate_Aggregate-session) + * - [`session`](#aggregate_Aggregate-session) * - `writeConcern` * * @property options @@ -92,6 +90,7 @@ Aggregate.prototype.options; * Get/set the model that this aggregation will execute on. * * #### Example: + * * const aggregate = MyModel.aggregate([{ $match: { answer: 42 } }]); * aggregate.model() === MyModel; // true * @@ -99,7 +98,7 @@ Aggregate.prototype.options; * aggregate.model(SomeOtherModel); * aggregate.model() === SomeOtherModel; // true * - * @param {Model} [model] set the model associated with this aggregate. + * @param {Model} [model] Set the model associated with this aggregate. If not provided, returns the already stored model. * @return {Model} * @api public */ @@ -112,11 +111,11 @@ Aggregate.prototype.model = function(model) { this._model = model; if (model.schema != null) { if (this.options.readPreference == null && - model.schema.options.read != null) { + model.schema.options.read != null) { this.options.readPreference = model.schema.options.read; } if (this.options.collation == null && - model.schema.options.collation != null) { + model.schema.options.collation != null) { this.options.collation = model.schema.options.collation; } } @@ -127,7 +126,7 @@ Aggregate.prototype.model = function(model) { /** * Appends new operators to this aggregate pipeline * - * #### Examples: + * #### Example: * * aggregate.append({ $project: { field: 1 }}, { $limit: 2 }); * @@ -135,7 +134,7 @@ Aggregate.prototype.model = function(model) { * const pipeline = [{ $match: { daw: 'Logic Audio X' }} ]; * aggregate.append(pipeline); * - * @param {Object} ops operator(s) to append + * @param {...Object|Object[]} ops operator(s) to append. Can either be a spread of objects or a single parameter of a object array. * @return {Aggregate} * @api public */ @@ -158,8 +157,8 @@ Aggregate.prototype.append = function() { * Appends a new $addFields operator to this aggregate pipeline. * Requires MongoDB v3.4+ to work * - * #### Examples: - * + * #### Example: + * * // adding new fields based on existing fields * aggregate.addFields({ * newField: '$b.nested' @@ -173,7 +172,7 @@ Aggregate.prototype.append = function() { * aggregate.addFields({ salary_k: { $divide: [ "$salary", 1000 ] } }); * * @param {Object} arg field specification - * @see $addFields https://docs.mongodb.com/manual/reference/operator/aggregation/addFields/ + * @see $addFields https://www.mongodb.com/docs/manual/reference/operator/aggregation/addFields/ * @return {Aggregate} * @api public */ @@ -189,7 +188,7 @@ Aggregate.prototype.addFields = function(arg) { * * Mongoose query [selection syntax](#query_Query-select) is also supported. * - * #### Examples: + * #### Example: * * // include a, include b, exclude _id * aggregate.project("a b -_id"); @@ -211,7 +210,7 @@ Aggregate.prototype.addFields = function(arg) { * aggregate.project({ salary_k: { $divide: [ "$salary", 1000 ] } }); * * @param {Object|String} arg field specification - * @see projection https://docs.mongodb.org/manual/reference/aggregation/project/ + * @see projection https://www.mongodb.com/docs/manual/reference/aggregation/project/ * @return {Aggregate} * @api public */ @@ -244,11 +243,11 @@ Aggregate.prototype.project = function(arg) { /** * Appends a new custom $group operator to this aggregate pipeline. * - * #### Examples: + * #### Example: * * aggregate.group({ _id: "$department" }); * - * @see $group https://docs.mongodb.org/manual/reference/aggregation/group/ + * @see $group https://www.mongodb.com/docs/manual/reference/aggregation/group/ * @method group * @memberOf Aggregate * @instance @@ -260,11 +259,11 @@ Aggregate.prototype.project = function(arg) { /** * Appends a new custom $match operator to this aggregate pipeline. * - * #### Examples: + * #### Example: * * aggregate.match({ department: { $in: [ "sales", "engineering" ] } }); * - * @see $match https://docs.mongodb.org/manual/reference/aggregation/match/ + * @see $match https://www.mongodb.com/docs/manual/reference/aggregation/match/ * @method match * @memberOf Aggregate * @instance @@ -276,11 +275,11 @@ Aggregate.prototype.project = function(arg) { /** * Appends a new $skip operator to this aggregate pipeline. * - * #### Examples: + * #### Example: * * aggregate.skip(10); * - * @see $skip https://docs.mongodb.org/manual/reference/aggregation/skip/ + * @see $skip https://www.mongodb.com/docs/manual/reference/aggregation/skip/ * @method skip * @memberOf Aggregate * @instance @@ -292,11 +291,11 @@ Aggregate.prototype.project = function(arg) { /** * Appends a new $limit operator to this aggregate pipeline. * - * #### Examples: + * #### Example: * * aggregate.limit(10); * - * @see $limit https://docs.mongodb.org/manual/reference/aggregation/limit/ + * @see $limit https://www.mongodb.com/docs/manual/reference/aggregation/limit/ * @method limit * @memberOf Aggregate * @instance @@ -305,6 +304,52 @@ Aggregate.prototype.project = function(arg) { * @api public */ + +/** + * Appends a new $densify operator to this aggregate pipeline. + * + * #### Example: + * + * aggregate.densify({ + * field: 'timestamp', + * range: { + * step: 1, + * unit: 'hour', + * bounds: [new Date('2021-05-18T00:00:00.000Z'), new Date('2021-05-18T08:00:00.000Z')] + * } + * }); + * + * @see $densify https://www.mongodb.com/docs/manual/reference/operator/aggregation/densify/ + * @method densify + * @memberOf Aggregate + * @instance + * @param {Object} arg $densify operator contents + * @return {Aggregate} + * @api public + */ + +/** + * Appends a new $fill operator to this aggregate pipeline. + * + * #### Example: + * + * aggregate.fill({ + * output: { + * bootsSold: { value: 0 }, + * sandalsSold: { value: 0 }, + * sneakersSold: { value: 0 } + * } + * }); + * + * @see $fill https://www.mongodb.com/docs/manual/reference/operator/aggregation/fill/ + * @method fill + * @memberOf Aggregate + * @instance + * @param {Object} arg $fill operator contents + * @return {Aggregate} + * @api public + */ + /** * Appends a new $geoNear operator to this aggregate pipeline. * @@ -312,19 +357,18 @@ Aggregate.prototype.project = function(arg) { * * **MUST** be used as the first operator in the pipeline. * - * #### Examples: + * #### Example: * * aggregate.near({ - * near: [40.724, -73.997], + * near: { type: 'Point', coordinates: [40.724, -73.997] }, * distanceField: "dist.calculated", // required * maxDistance: 0.008, * query: { type: "public" }, * includeLocs: "dist.location", - * uniqueDocs: true, - * num: 5 + * spherical: true, * }); * - * @see $geoNear https://docs.mongodb.org/manual/reference/aggregation/geoNear/ + * @see $geoNear https://www.mongodb.com/docs/manual/reference/aggregation/geoNear/ * @method near * @memberOf Aggregate * @instance @@ -343,7 +387,7 @@ Aggregate.prototype.near = function(arg) { * define methods */ -'group match skip limit out'.split(' ').forEach(function($operator) { +'group match skip limit out densify fill'.split(' ').forEach(function($operator) { Aggregate.prototype[$operator] = function(arg) { const op = {}; op['$' + $operator] = arg; @@ -357,14 +401,14 @@ Aggregate.prototype.near = function(arg) { * Note that the `$unwind` operator requires the path name to start with '$'. * Mongoose will prepend '$' if the specified field doesn't start '$'. * - * #### Examples: + * #### Example: * * aggregate.unwind("tags"); * aggregate.unwind("a", "b", "c"); * aggregate.unwind({ path: '$tags', preserveNullAndEmptyArrays: true }); * - * @see $unwind https://docs.mongodb.org/manual/reference/aggregation/unwind/ - * @param {String|Object} fields the field(s) to unwind, either as field names or as [objects with options](https://docs.mongodb.com/manual/reference/operator/aggregation/unwind/#document-operand-with-options). If passing a string, prefixing the field name with '$' is optional. If passing an object, `path` must start with '$'. + * @see $unwind https://www.mongodb.com/docs/manual/reference/aggregation/unwind/ + * @param {String|Object|String[]|Object[]} fields the field(s) to unwind, either as field names or as [objects with options](https://www.mongodb.com/docs/manual/reference/operator/aggregation/unwind/#document-operand-with-options). If passing a string, prefixing the field name with '$' is optional. If passing an object, `path` must start with '$'. * @return {Aggregate} * @api public */ @@ -396,13 +440,13 @@ Aggregate.prototype.unwind = function() { * If you are passing in a string Mongoose will prepend '$' if the specified field doesn't start '$'. * If you are passing in an object the strings in your expression will not be altered. * - * #### Examples: + * #### Example: * * aggregate.replaceRoot("user"); * * aggregate.replaceRoot({ x: { $concat: ['$this', '$that'] } }); * - * @see $replaceRoot https://docs.mongodb.org/manual/reference/operator/aggregation/replaceRoot + * @see $replaceRoot https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceRoot * @param {String|Object} newRoot the field or document which will become the new root document * @return {Aggregate} * @api public @@ -427,11 +471,11 @@ Aggregate.prototype.replaceRoot = function(newRoot) { /** * Appends a new $count operator to this aggregate pipeline. * - * #### Examples: + * #### Example: * * aggregate.count("userCount"); * - * @see $count https://docs.mongodb.org/manual/reference/operator/aggregation/count + * @see $count https://www.mongodb.com/docs/manual/reference/operator/aggregation/count * @param {String} fieldName The name of the output field which has the count as its value. It must be a non-empty string, must not start with $ and must not contain the . character. * @return {Aggregate} * @api public @@ -448,12 +492,12 @@ Aggregate.prototype.count = function(fieldName) { * Note that the `$sortByCount` operator requires the new root to start with '$'. * Mongoose will prepend '$' if the specified field name doesn't start with '$'. * - * #### Examples: + * #### Example: * * aggregate.sortByCount('users'); * aggregate.sortByCount({ $mergeObjects: [ "$employee", "$business" ] }) * - * @see $sortByCount https://docs.mongodb.com/manual/reference/operator/aggregation/sortByCount/ + * @see $sortByCount https://www.mongodb.com/docs/manual/reference/operator/aggregation/sortByCount/ * @param {Object|String} arg * @return {Aggregate} this * @api public @@ -475,11 +519,11 @@ Aggregate.prototype.sortByCount = function(arg) { /** * Appends new custom $lookup operator to this aggregate pipeline. * - * #### Examples: + * #### Example: * * aggregate.lookup({ from: 'users', localField: 'userId', foreignField: '_id', as: 'users' }); * - * @see $lookup https://docs.mongodb.org/manual/reference/operator/aggregation/lookup/#pipe._S_lookup + * @see $lookup https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/#pipe._S_lookup * @param {Object} options to $lookup as described in the above link * @return {Aggregate} * @api public @@ -494,11 +538,12 @@ Aggregate.prototype.lookup = function(options) { * * Note that graphLookup can only consume at most 100MB of memory, and does not allow disk use even if `{ allowDiskUse: true }` is specified. * - * #### Examples: + * #### Example: + * * // Suppose we have a collection of courses, where a document might look like `{ _id: 0, name: 'Calculus', prerequisite: 'Trigonometry'}` and `{ _id: 0, name: 'Trigonometry', prerequisite: 'Algebra' }` * aggregate.graphLookup({ from: 'courses', startWith: '$prerequisite', connectFromField: 'prerequisite', connectToField: 'name', as: 'prerequisites', maxDepth: 3 }) // this will recursively search the 'courses' collection up to 3 prerequisites * - * @see $graphLookup https://docs.mongodb.com/manual/reference/operator/aggregation/graphLookup/#pipe._S_graphLookup + * @see $graphLookup https://www.mongodb.com/docs/manual/reference/operator/aggregation/graphLookup/#pipe._S_graphLookup * @param {Object} options to $graphLookup as described in the above link * @return {Aggregate} * @api public @@ -527,11 +572,11 @@ Aggregate.prototype.graphLookup = function(options) { /** * Appends new custom $sample operator to this aggregate pipeline. * - * #### Examples: + * #### Example: * * aggregate.sample(3); // Add a pipeline that picks 3 random documents * - * @see $sample https://docs.mongodb.org/manual/reference/operator/aggregation/sample/#pipe._S_sample + * @see $sample https://www.mongodb.com/docs/manual/reference/operator/aggregation/sample/#pipe._S_sample * @param {Number} size number of random documents to pick * @return {Aggregate} * @api public @@ -548,13 +593,13 @@ Aggregate.prototype.sample = function(size) { * * If a string is passed, it must be a space delimited list of path names. The sort order of each path is ascending unless the path name is prefixed with `-` which will be treated as descending. * - * #### Examples: + * #### Example: * * // these are equivalent * aggregate.sort({ field: 'asc', test: -1 }); * aggregate.sort('field -test'); * - * @see $sort https://docs.mongodb.org/manual/reference/aggregation/sort/ + * @see $sort https://www.mongodb.com/docs/manual/reference/aggregation/sort/ * @param {Object|String} arg * @return {Aggregate} this * @api public @@ -596,13 +641,14 @@ Aggregate.prototype.sort = function(arg) { /** * Appends new $unionWith operator to this aggregate pipeline. * - * #### Examples: + * #### Example: * * aggregate.unionWith({ coll: 'users', pipeline: [ { $match: { _id: 1 } } ] }); * - * @see $unionWith https://docs.mongodb.com/manual/reference/operator/aggregation/unionWith + * @see $unionWith https://www.mongodb.com/docs/manual/reference/operator/aggregation/unionWith * @param {Object} options to $unionWith query as described in the above link - * @return {Aggregate}* @api public + * @return {Aggregate} + * @api public */ Aggregate.prototype.unionWith = function(options) { @@ -617,12 +663,11 @@ Aggregate.prototype.unionWith = function(options) { * * await Model.aggregate(pipeline).read('primaryPreferred'); * - * @param {String} pref one of the listed preference options or their aliases - * @param {Array} [tags] optional tags for this query + * @param {String|ReadPreference} pref one of the listed preference options or their aliases + * @param {Array} [tags] optional tags for this query. DEPRECATED * @return {Aggregate} this * @api public - * @see mongodb https://docs.mongodb.org/manual/applications/replication/#read-preference - * @see driver https://mongodb.github.com/node-mongodb-native/driver-articles/anintroductionto1_1and2_2.html#read-preferences + * @see mongodb https://www.mongodb.com/docs/manual/applications/replication/#read-preference */ Aggregate.prototype.read = function(pref, tags) { @@ -638,7 +683,7 @@ Aggregate.prototype.read = function(pref, tags) { * await Model.aggregate(pipeline).readConcern('majority'); * * @param {String} level one of the listed read concern level or their aliases - * @see mongodb https://docs.mongodb.com/manual/reference/read-concern/ + * @see mongodb https://www.mongodb.com/docs/manual/reference/read-concern/ * @return {Aggregate} this * @api public */ @@ -671,14 +716,14 @@ Aggregate.prototype.readConcern = function(level) { * @param {String|Object} [thenExpr] true case for the condition * @param {String|Object} [elseExpr] false case for the condition * @return {Aggregate} this - * @see $redact https://docs.mongodb.com/manual/reference/operator/aggregation/redact/ + * @see $redact https://www.mongodb.com/docs/manual/reference/operator/aggregation/redact/ * @api public */ Aggregate.prototype.redact = function(expression, thenExpr, elseExpr) { if (arguments.length === 3) { if ((typeof thenExpr === 'string' && !validRedactStringValues.has(thenExpr)) || - (typeof elseExpr === 'string' && !validRedactStringValues.has(elseExpr))) { + (typeof elseExpr === 'string' && !validRedactStringValues.has(elseExpr))) { throw new Error('If thenExpr or elseExpr is string, it must be either $$DESCEND, $$PRUNE or $$KEEP'); } @@ -703,9 +748,9 @@ Aggregate.prototype.redact = function(expression, thenExpr, elseExpr) { * * Model.aggregate(..).explain(callback) * - * @param {String} verbosity - * @param {Function} callback - * @return {Promise} + * @param {String} [verbosity] + * @param {Function} [callback] The callback function to call, if not specified, will return a Promise instead. + * @return {Promise} Returns a promise if no "callback" is given */ Aggregate.prototype.explain = function(verbosity, callback) { @@ -765,14 +810,15 @@ Aggregate.prototype.explain = function(verbosity, callback) { }; /** - * Sets the allowDiskUse option for the aggregation query (ignored for < 2.6.0) + * Sets the allowDiskUse option for the aggregation query * * #### Example: * * await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true); * * @param {Boolean} value Should tell server it can use hard drive to store data during aggregation. - * @see mongodb https://docs.mongodb.org/manual/reference/command/aggregate/ + * @return {Aggregate} this + * @see mongodb https://www.mongodb.com/docs/manual/reference/command/aggregate/ */ Aggregate.prototype.allowDiskUse = function(value) { @@ -781,14 +827,15 @@ Aggregate.prototype.allowDiskUse = function(value) { }; /** - * Sets the hint option for the aggregation query (ignored for < 3.6.0) + * Sets the hint option for the aggregation query * * #### Example: * * Model.aggregate(..).hint({ qty: 1, category: 1 }).exec(callback) * * @param {Object|String} value a hint object or the index name - * @see mongodb https://docs.mongodb.org/manual/reference/command/aggregate/ + * @return {Aggregate} this + * @see mongodb https://www.mongodb.com/docs/manual/reference/command/aggregate/ */ Aggregate.prototype.hint = function(value) { @@ -805,7 +852,8 @@ Aggregate.prototype.hint = function(value) { * await Model.aggregate(..).session(session); * * @param {ClientSession} session - * @see mongodb https://docs.mongodb.org/manual/reference/command/aggregate/ + * @return {Aggregate} this + * @see mongodb https://www.mongodb.com/docs/manual/reference/command/aggregate/ */ Aggregate.prototype.session = function(session) { @@ -826,11 +874,11 @@ Aggregate.prototype.session = function(session) { * agg.options; // `{ allowDiskUse: true }` * * @param {Object} options keys to merge into current options - * @param [options.maxTimeMS] number limits the time this aggregation will run, see [MongoDB docs on `maxTimeMS`](https://docs.mongodb.com/manual/reference/operator/meta/maxTimeMS/) - * @param [options.allowDiskUse] boolean if true, the MongoDB server will use the hard drive to store data during this aggregation - * @param [options.collation] object see [`Aggregate.prototype.collation()`](./docs/api.html#aggregate_Aggregate-collation) - * @param [options.session] ClientSession see [`Aggregate.prototype.session()`](./docs/api.html#aggregate_Aggregate-session) - * @see mongodb https://docs.mongodb.org/manual/reference/command/aggregate/ + * @param {Number} [options.maxTimeMS] number limits the time this aggregation will run, see [MongoDB docs on `maxTimeMS`](https://www.mongodb.com/docs/manual/reference/operator/meta/maxTimeMS/) + * @param {Boolean} [options.allowDiskUse] boolean if true, the MongoDB server will use the hard drive to store data during this aggregation + * @param {Object} [options.collation] object see [`Aggregate.prototype.collation()`](#aggregate_Aggregate-collation) + * @param {ClientSession} [options.session] ClientSession see [`Aggregate.prototype.session()`](#aggregate_Aggregate-session) + * @see mongodb https://www.mongodb.com/docs/manual/reference/command/aggregate/ * @return {Aggregate} this * @api public */ @@ -855,11 +903,11 @@ Aggregate.prototype.option = function(value) { * }); * * @param {Object} options - * @param {Number} options.batchSize set the cursor batch size + * @param {Number} [options.batchSize] set the cursor batch size * @param {Boolean} [options.useMongooseAggCursor] use experimental mongoose-specific aggregation cursor (for `eachAsync()` and other query cursor semantics) * @return {AggregationCursor} cursor representing this aggregation * @api public - * @see mongodb https://mongodb.github.io/node-mongodb-native/2.0/api/AggregationCursor.html + * @see mongodb https://mongodb.github.io/node-mongodb-native/4.9/classes/AggregationCursor.html */ Aggregate.prototype.cursor = function(options) { @@ -877,7 +925,7 @@ Aggregate.prototype.cursor = function(options) { * @param {Object} collation options * @return {Aggregate} this * @api public - * @see mongodb https://mongodb.github.io/node-mongodb-native/2.2/api/Collection.html#aggregate + * @see mongodb https://mongodb.github.io/node-mongodb-native/4.9/interfaces/CollationOptions.html */ Aggregate.prototype.collation = function(collation) { @@ -899,7 +947,7 @@ Aggregate.prototype.collation = function(collation) { * * @param {Object} facet options * @return {Aggregate} this - * @see $facet https://docs.mongodb.com/v3.4/reference/operator/aggregation/facet/ + * @see $facet https://www.mongodb.com/docs/manual/reference/operator/aggregation/facet/ * @api public */ @@ -908,7 +956,7 @@ Aggregate.prototype.facet = function(options) { }; /** - * Helper for [Atlas Text Search](https://docs.atlas.mongodb.com/reference/atlas-search/tutorial/)'s + * Helper for [Atlas Text Search](https://www.mongodb.com/docs/atlas/atlas-search/tutorial/)'s * `$search` stage. * * #### Example: @@ -925,7 +973,7 @@ Aggregate.prototype.facet = function(options) { * * @param {Object} $search options * @return {Aggregate} this - * @see $search https://docs.atlas.mongodb.com/reference/atlas-search/tutorial/ + * @see $search https://www.mongodb.com/docs/atlas/atlas-search/tutorial/ * @api public */ @@ -940,11 +988,10 @@ Aggregate.prototype.search = function(options) { * * MyModel.aggregate().match({ test: 1 }).pipeline(); // [{ $match: { test: 1 } }] * - * @return {Array} + * @return {Array} The current pipeline similar to the operation that will be executed * @api public */ - Aggregate.prototype.pipeline = function() { return this._pipeline; }; @@ -957,12 +1004,10 @@ Aggregate.prototype.pipeline = function() { * aggregate.exec(callback); * * // Because a promise is returned, the `callback` is optional. - * const promise = aggregate.exec(); - * promise.then(..); + * const result = await aggregate.exec(); * - * @see Promise #promise_Promise * @param {Function} [callback] - * @return {Promise} + * @return {Promise} Returns a Promise if no "callback" is given. * @api public */ @@ -1018,13 +1063,13 @@ Aggregate.prototype.exec = function(callback) { }; /** - * Provides promise for aggregate. + * Provides a Promise-like `then` function, which will call `.exec` without a callback + * Compatible with `await`. * * #### Example: * * Model.aggregate(..).then(successCallback, errorCallback); * - * @see Promise #promise_Promise * @param {Function} [resolve] successCallback * @param {Function} [reject] errorCallback * @return {Promise} @@ -1037,6 +1082,7 @@ Aggregate.prototype.then = function(resolve, reject) { * Executes the query returning a `Promise` which will be * resolved with either the doc(s) or rejected with the error. * Like [`.then()`](#query_Query-then), but only takes a rejection handler. + * Compatible with `await`. * * @param {Function} [reject] * @return {Promise} @@ -1048,7 +1094,7 @@ Aggregate.prototype.catch = function(reject) { }; /** - * Returns an asyncIterator for use with [`for/await/of` loops](https://thecodebarbarian.com/getting-started-with-async-iterators-in-node-js + * Returns an asyncIterator for use with [`for/await/of` loops](https://thecodebarbarian.com/getting-started-with-async-iterators-in-node-js) * You do not need to call this function explicitly, the JavaScript runtime * will call it for you. * @@ -1066,7 +1112,7 @@ Aggregate.prototype.catch = function(reject) { * `Symbol.asyncIterator` is undefined, that means your Node.js version does not * support async iterators. * - * @method Symbol.asyncIterator + * @method [Symbol.asyncIterator] * @memberOf Aggregate * @instance * @api public @@ -1074,9 +1120,7 @@ Aggregate.prototype.catch = function(reject) { if (Symbol.asyncIterator != null) { Aggregate.prototype[Symbol.asyncIterator] = function() { - return this.cursor({ useMongooseAggCursor: true }). - transformNull(). - _transformForAsyncIterator(); + return this.cursor({ useMongooseAggCursor: true }).transformNull()._transformForAsyncIterator(); }; } @@ -1102,12 +1146,13 @@ function isOperator(obj) { return k.length === 1 && k[0][0] === '$'; } -/*! +/** * Adds the appropriate `$match` pipeline step to the top of an aggregate's * pipeline, should it's model is a non-root discriminator type. This is * analogous to the `prepareDiscriminatorCriteria` function in `lib/query.js`. * * @param {Aggregate} aggregate Aggregate to prepare + * @api private */ Aggregate._prepareDiscriminatorPipeline = prepareDiscriminatorPipeline; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/browser.js b/food-ordering-app/server/node_modules/mongoose/lib/browser.js index 7b4aa518f..12664eb03 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/browser.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/browser.js @@ -72,7 +72,7 @@ exports.Schema = require('./schema'); * - [Buffer](/docs/schematypes.html#buffers) * - [Embedded](/docs/schematypes.html#schemas) * - [DocumentArray](/docs/api/documentarraypath.html) - * - [Decimal128](/docs/api.html#mongoose_Mongoose-Decimal128) + * - [Decimal128](/docs/api/mongoose.html#mongoose_Mongoose-Decimal128) * - [ObjectId](/docs/schematypes.html#objectids) * - [Map](/docs/schematypes.html#maps) * - [Subdocument](/docs/schematypes.html#schemas) @@ -103,7 +103,7 @@ exports.VirtualType = require('./virtualtype'); * _Alias of mongoose.Schema.Types for backwards compatibility._ * * @property SchemaTypes - * @see Schema.SchemaTypes #schema_Schema.Types + * @see Schema.SchemaTypes #schema_Schema-Types * @api public */ diff --git a/food-ordering-app/server/node_modules/mongoose/lib/browserDocument.js b/food-ordering-app/server/node_modules/mongoose/lib/browserDocument.js index eacc2e1e6..bf9b22a0b 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/browserDocument.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/browserDocument.js @@ -20,7 +20,7 @@ const isObject = require('./helpers/isObject'); * @param {Object} schema * @param {Object} [fields] optional object containing the fields which were selected in the query returning this document and any populated paths data * @param {Boolean} [skipId] bool, should we auto create an ObjectId _id - * @inherits NodeJS EventEmitter https://nodejs.org/api/events.html#events_class_events_eventemitter + * @inherits NodeJS EventEmitter https://nodejs.org/api/events.html#class-eventemitter * @event `init`: Emitted on a document after it has was retrieved from the db and fully hydrated by Mongoose. * @event `save`: Emitted when the document is successfully saved * @api private diff --git a/food-ordering-app/server/node_modules/mongoose/lib/cast.js b/food-ordering-app/server/node_modules/mongoose/lib/cast.js index 967b3cb7b..690c412a7 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/cast.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/cast.js @@ -8,6 +8,7 @@ const CastError = require('./error/cast'); const StrictModeError = require('./error/strict'); const Types = require('./schema/index'); const cast$expr = require('./helpers/query/cast$expr'); +const castString = require('./cast/string'); const castTextSearch = require('./schema/operators/text'); const get = require('./helpers/get'); const getConstructorName = require('./helpers/getConstructorName'); @@ -24,8 +25,11 @@ const ALLOWED_GEOWITHIN_GEOJSON_TYPES = ['Polygon', 'MultiPolygon']; * * @param {Schema} schema * @param {Object} obj Object to cast - * @param {Object} options the query options - * @param {Query} context passed to setters + * @param {Object} [options] the query options + * @param {Boolean|"throw"} [options.strict] Wheter to enable all strict options + * @param {Boolean|"throw"} [options.strictQuery] Enable strict Queries + * @param {Boolean} [options.upsert] + * @param {Query} [context] passed to setters * @api private */ module.exports = function cast(schema, obj, options, context) { @@ -61,11 +65,21 @@ module.exports = function cast(schema, obj, options, context) { if (!Array.isArray(val)) { throw new CastError('Array', val, path); } - for (let k = 0; k < val.length; ++k) { + for (let k = val.length - 1; k >= 0; k--) { if (val[k] == null || typeof val[k] !== 'object') { throw new CastError('Object', val[k], path + '.' + k); } + + const beforeCastKeysLength = Object.keys(val[k]).length; val[k] = cast(schema, val[k], options, context); + if (Object.keys(val[k]).length === 0 && beforeCastKeysLength !== 0) { + val.splice(k, 1); + } + } + + // delete empty: {$or: []} -> {} + if (val.length === 0) { + delete obj[path]; } } else if (path === '$where') { type = typeof val; @@ -86,6 +100,9 @@ module.exports = function cast(schema, obj, options, context) { val = cast(schema, val, options, context); } else if (path === '$text') { val = castTextSearch(val, path); + } else if (path === '$comment' && !schema.paths.hasOwnProperty('$comment')) { + val = castString(val, path); + obj[path] = val; } else { if (!schema) { // no casting for Mixed types @@ -261,12 +278,7 @@ module.exports = function cast(schema, obj, options, context) { } const strict = 'strict' in options ? options.strict : schema.options.strict; - const strictQuery = 'strictQuery' in options ? - options.strictQuery : - 'strict' in options ? - options.strict : - 'strict' in schema._userProvidedOptions ? schema._userProvidedOptions.strict : - schema.options.strictQuery; + const strictQuery = getStrictQuery(options, schema._userProvidedOptions, schema.options, context); if (options.upsert && strict) { if (strict === 'throw') { throw new StrictModeError(path); @@ -375,3 +387,32 @@ function _cast(val, numbertype, context) { } } } + +function getStrictQuery(queryOptions, schemaUserProvidedOptions, schemaOptions, context) { + if ('strictQuery' in queryOptions) { + return queryOptions.strictQuery; + } + if ('strict' in queryOptions) { + return queryOptions.strict; + } + if ('strictQuery' in schemaUserProvidedOptions) { + return schemaUserProvidedOptions.strictQuery; + } + if ('strict' in schemaUserProvidedOptions) { + return schemaUserProvidedOptions.strict; + } + const mongooseOptions = context && + context.mongooseCollection && + context.mongooseCollection.conn && + context.mongooseCollection.conn.base && + context.mongooseCollection.conn.base.options; + if (mongooseOptions) { + if ('strictQuery' in mongooseOptions) { + return mongooseOptions.strictQuery; + } + if ('strict' in mongooseOptions) { + return mongooseOptions.strict; + } + } + return schemaOptions.strictQuery; +} diff --git a/food-ordering-app/server/node_modules/mongoose/lib/cast/boolean.js b/food-ordering-app/server/node_modules/mongoose/lib/cast/boolean.js index 92551d41e..aaa1fb066 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/cast/boolean.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/cast/boolean.js @@ -2,7 +2,7 @@ const CastError = require('../error/cast'); -/*! +/** * Given a value, cast it to a boolean, or throw a `CastError` if the value * cannot be casted. `null` and `undefined` are considered valid. * diff --git a/food-ordering-app/server/node_modules/mongoose/lib/cast/number.js b/food-ordering-app/server/node_modules/mongoose/lib/cast/number.js index c96782a38..cf0362de1 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/cast/number.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/cast/number.js @@ -2,7 +2,7 @@ const assert = require('assert'); -/*! +/** * Given a value, cast it to a number, or throw an `Error` if the value * cannot be casted. `null` and `undefined` are considered valid. * diff --git a/food-ordering-app/server/node_modules/mongoose/lib/cast/string.js b/food-ordering-app/server/node_modules/mongoose/lib/cast/string.js index 4d89f8e2b..aabb822c5 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/cast/string.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/cast/string.js @@ -2,7 +2,7 @@ const CastError = require('../error/cast'); -/*! +/** * Given a value, cast it to a string, or throw a `CastError` if the value * cannot be casted. `null` and `undefined` are considered valid. * diff --git a/food-ordering-app/server/node_modules/mongoose/lib/collection.js b/food-ordering-app/server/node_modules/mongoose/lib/collection.js index 9a78615bd..35633a6e2 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/collection.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/collection.js @@ -15,7 +15,7 @@ const immediate = require('./helpers/immediate'); * * @param {String} name name of the collection * @param {Connection} conn A MongooseConnection instance - * @param {Object} opts optional collection options + * @param {Object} [opts] optional collection options * @api public */ diff --git a/food-ordering-app/server/node_modules/mongoose/lib/connection.js b/food-ordering-app/server/node_modules/mongoose/lib/connection.js index 61d325a9d..1b6fcbae4 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/connection.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/connection.js @@ -26,7 +26,7 @@ const processConnectionOptions = require('./helpers/processConnectionOptions'); const arrayAtomicsSymbol = require('./helpers/symbols').arrayAtomicsSymbol; const sessionNewDocuments = require('./helpers/symbols').sessionNewDocuments; -/*! +/** * A list of authentication mechanisms that don't require a password for authentication. * This is used by the authMechanismDoesNotRequirePassword method. * @@ -42,7 +42,7 @@ const noPasswordAuthMechanisms = [ * For practical reasons, a Connection equals a Db. * * @param {Mongoose} base a mongoose instance - * @inherits NodeJS EventEmitter https://nodejs.org/api/events.html#events_class_events_eventemitter + * @inherits NodeJS EventEmitter https://nodejs.org/api/events.html#class-eventemitter * @event `connecting`: Emitted when `connection.openUri()` is executed on this connection. * @event `connected`: Emitted when this connection successfully connects to the db. May be emitted _multiple_ times in `reconnected` scenarios. * @event `open`: Emitted after we `connected` and `onOpen` is executed on all of this connection's models. @@ -72,7 +72,7 @@ function Connection(base) { if (typeof base === 'undefined' || !base.connections.length) { this.id = 0; } else { - this.id = base.connections.length; + this.id = base.nextConnectionId; } this._queue = []; } @@ -81,7 +81,7 @@ function Connection(base) { * Inherit from EventEmitter */ -Connection.prototype.__proto__ = EventEmitter.prototype; +Object.setPrototypeOf(Connection.prototype, EventEmitter.prototype); /** * Connection ready state @@ -154,7 +154,8 @@ Connection.prototype.get = function(key) { * * Supported options include: * - * - `maxTimeMS`: Set [`maxTimeMS`](/docs/api.html#query_Query-maxTimeMS) for all queries on this connection. + * - `maxTimeMS`: Set [`maxTimeMS`](/docs/api/query.html#query_Query-maxTimeMS) for all queries on this connection. + * - 'debug': If `true`, prints the operations mongoose sends to MongoDB to the console. If a writable stream is passed, it will log to that stream, without colorization. If a callback function is passed, it will receive the collection name, the method name, then all arugments passed to the method. For example, if you wanted to replicate the default logging, you could output from the callback `Mongoose: ${collectionName}.${methodName}(${methodArgs.join(', ')})`. * * #### Example: * @@ -195,7 +196,7 @@ Connection.prototype.collections; * * #### Example: * - * mongoose.createConnection('mongodb://localhost:27017/mydb').name; // "mydb" + * mongoose.createConnection('mongodb://127.0.0.1:27017/mydb').name; // "mydb" * * @property name * @memberOf Connection @@ -252,7 +253,7 @@ Connection.prototype.id; * * #### Example: * - * const db = mongoose.createConnection('mongodb://localhost:27017/mydb'); + * const db = mongoose.createConnection('mongodb://127.0.0.1:27017/mydb'); * db.plugin(() => console.log('Applied')); * db.plugins.length; // 1 * @@ -276,7 +277,7 @@ Object.defineProperty(Connection.prototype, 'plugins', { * * #### Example: * - * mongoose.createConnection('mongodb://localhost:27017/mydb').host; // "localhost" + * mongoose.createConnection('mongodb://127.0.0.1:27017/mydb').host; // "127.0.0.1" * * @property host * @memberOf Connection @@ -296,7 +297,7 @@ Object.defineProperty(Connection.prototype, 'host', { * * #### Example: * - * mongoose.createConnection('mongodb://localhost:27017/mydb').port; // 27017 + * mongoose.createConnection('mongodb://127.0.0.1:27017/mydb').port; // 27017 * * @property port * @memberOf Connection @@ -315,7 +316,7 @@ Object.defineProperty(Connection.prototype, 'port', { * * #### Example: * - * mongoose.createConnection('mongodb://val:psw@localhost:27017/mydb').user; // "val" + * mongoose.createConnection('mongodb://val:psw@127.0.0.1:27017/mydb').user; // "val" * * @property user * @memberOf Connection @@ -334,7 +335,7 @@ Object.defineProperty(Connection.prototype, 'user', { * * #### Example: * - * mongoose.createConnection('mongodb://val:psw@localhost:27017/mydb').pass; // "psw" + * mongoose.createConnection('mongodb://val:psw@127.0.0.1:27017/mydb').pass; // "psw" * * @property pass * @memberOf Connection @@ -384,16 +385,16 @@ Connection.prototype.config; /** * Helper for `createCollection()`. Will explicitly create the given collection - * with specified options. Used to create [capped collections](https://docs.mongodb.com/manual/core/capped-collections/) - * and [views](https://docs.mongodb.com/manual/core/views/) from mongoose. + * with specified options. Used to create [capped collections](https://www.mongodb.com/docs/manual/core/capped-collections/) + * and [views](https://www.mongodb.com/docs/manual/core/views/) from mongoose. * - * Options are passed down without modification to the [MongoDB driver's `createCollection()` function](https://mongodb.github.io/node-mongodb-native/2.2/api/Db.html#createCollection) + * Options are passed down without modification to the [MongoDB driver's `createCollection()` function](https://mongodb.github.io/node-mongodb-native/4.9/classes/Db.html#createCollection) * * @method createCollection * @param {string} collection The collection to create - * @param {Object} [options] see [MongoDB driver docs](https://mongodb.github.io/node-mongodb-native/2.2/api/Db.html#createCollection) + * @param {Object} [options] see [MongoDB driver docs](https://mongodb.github.io/node-mongodb-native/4.9/classes/Db.html#createCollection) * @param {Function} [callback] - * @return {Promise} + * @return {Promise} Returns a Promise if no `callback` is given. * @api public */ @@ -406,8 +407,8 @@ Connection.prototype.createCollection = _wrapConnHelper(function createCollectio }); /** - * _Requires MongoDB >= 3.6.0._ Starts a [MongoDB session](https://docs.mongodb.com/manual/release-notes/3.6/#client-sessions) - * for benefits like causal consistency, [retryable writes](https://docs.mongodb.com/manual/core/retryable-writes/), + * _Requires MongoDB >= 3.6.0._ Starts a [MongoDB session](https://www.mongodb.com/docs/manual/release-notes/3.6/#client-sessions) + * for benefits like causal consistency, [retryable writes](https://www.mongodb.com/docs/manual/core/retryable-writes/), * and [transactions](https://thecodebarbarian.com/a-node-js-perspective-on-mongodb-4-transactions.html). * * #### Example: @@ -423,7 +424,7 @@ Connection.prototype.createCollection = _wrapConnHelper(function createCollectio * * * @method startSession - * @param {Object} [options] see the [mongodb driver options](https://mongodb.github.io/node-mongodb-native/3.0/api/MongoClient.html#startSession) + * @param {Object} [options] see the [mongodb driver options](https://mongodb.github.io/node-mongodb-native/4.9/classes/MongoClient.html#startSession) * @param {Boolean} [options.causalConsistency=true] set to false to disable causal consistency * @param {Function} [callback] * @return {Promise} promise that resolves to a MongoDB driver `ClientSession` @@ -445,7 +446,7 @@ Connection.prototype.startSession = _wrapConnHelper(function startSession(option * async function executes successfully and attempt to retry if * there was a retriable error. * - * Calls the MongoDB driver's [`session.withTransaction()`](https://mongodb.github.io/node-mongodb-native/3.5/api/ClientSession.html#withTransaction), + * Calls the MongoDB driver's [`session.withTransaction()`](https://mongodb.github.io/node-mongodb-native/4.9/classes/ClientSession.html#withTransaction), * but also handles resetting Mongoose document state as shown below. * * #### Example: @@ -491,6 +492,9 @@ Connection.prototype.transaction = function transaction(fn, options) { doc.set(doc.schema.options.versionKey, state.versionKey); } + if (state.modifiedPaths.length > 0 && doc.$__.activePaths.states.modify == null) { + doc.$__.activePaths.states.modify = {}; + } for (const path of state.modifiedPaths) { doc.$__.activePaths.paths[path] = 'modify'; doc.$__.activePaths.states.modify[path] = true; @@ -521,7 +525,7 @@ Connection.prototype.transaction = function transaction(fn, options) { * @method dropCollection * @param {string} collection The collection to delete * @param {Function} [callback] - * @return {Promise} + * @return {Promise} Returns a Promise if no `callback` is given. * @api public */ @@ -535,13 +539,13 @@ Connection.prototype.dropCollection = _wrapConnHelper(function dropCollection(co * * #### Example: * - * const conn = mongoose.createConnection('mongodb://localhost:27017/mydb'); + * const conn = mongoose.createConnection('mongodb://127.0.0.1:27017/mydb'); * // Deletes the entire 'mydb' database * await conn.dropDatabase(); * * @method dropDatabase * @param {Function} [callback] - * @return {Promise} + * @return {Promise} Returns a Promise if no `callback` is given. * @api public */ @@ -550,8 +554,8 @@ Connection.prototype.dropDatabase = _wrapConnHelper(function dropDatabase(cb) { // init-ed. It is sufficiently common to call `dropDatabase()` after // `mongoose.connect()` but before creating models that we want to // support this. See gh-6796 - for (const name of Object.keys(this.models)) { - delete this.models[name].$init; + for (const model of Object.values(this.models)) { + delete model.$init; } this.db.dropDatabase(cb); }); @@ -608,6 +612,8 @@ Connection.prototype._shouldBufferCommands = function _shouldBufferCommands() { * * @param {Error} err * @param {Function} callback optional + * @emits "error" Emits the `error` event with the given `err`, unless a callback is specified + * @returns {Promise|null} Returns a rejected Promise if no `callback` is given. * @api private */ @@ -651,7 +657,7 @@ Connection.prototype.onOpen = function() { * Opens the connection with a URI using `MongoClient.connect()`. * * @param {String} uri The URI to connect with. - * @param {Object} [options] Passed on to https://mongodb.github.io/node-mongodb-native/2.2/api/MongoClient.html#connect + * @param {Object} [options] Passed on to [`MongoClient.connect`](https://mongodb.github.io/node-mongodb-native/4.9/classes/MongoClient.html#connect-1) * @param {Boolean} [options.bufferCommands=true] Mongoose specific option. Set to false to [disable buffering](https://mongoosejs.com/docs/faq.html#callback_never_executes) on all models associated with this connection. * @param {Number} [options.bufferTimeoutMS=10000] Mongoose specific option. If `bufferCommands` is true, Mongoose will throw an error after `bufferTimeoutMS` if the operation is still buffered. * @param {String} [options.dbName] The name of the database we want to use. If not provided, use database name from connection string. @@ -662,13 +668,13 @@ Connection.prototype.onOpen = function() { * @param {Number} [options.serverSelectionTimeoutMS] If `useUnifiedTopology = true`, the MongoDB driver will try to find a server to send any given operation to, and keep retrying for `serverSelectionTimeoutMS` milliseconds before erroring out. If not set, the MongoDB driver defaults to using `30000` (30 seconds). * @param {Number} [options.heartbeatFrequencyMS] If `useUnifiedTopology = true`, the MongoDB driver sends a heartbeat every `heartbeatFrequencyMS` to check on the status of the connection. A heartbeat is subject to `serverSelectionTimeoutMS`, so the MongoDB driver will retry failed heartbeats for up to 30 seconds by default. Mongoose only emits a `'disconnected'` event after a heartbeat has failed, so you may want to decrease this setting to reduce the time between when your server goes down and when Mongoose emits `'disconnected'`. We recommend you do **not** set this setting below 1000, too many heartbeats can lead to performance degradation. * @param {Boolean} [options.autoIndex=true] Mongoose-specific option. Set to false to disable automatic index creation for all models associated with this connection. - * @param {Class} [options.promiseLibrary] Sets the [underlying driver's promise library](https://mongodb.github.io/node-mongodb-native/3.1/api/MongoClient.html). + * @param {Class} [options.promiseLibrary] Sets the [underlying driver's promise library](https://mongodb.github.io/node-mongodb-native/4.9/interfaces/MongoClientOptions.html#promiseLibrary). * @param {Number} [options.connectTimeoutMS=30000] How long the MongoDB driver will wait before killing a socket due to inactivity _during initial connection_. Defaults to 30000. This option is passed transparently to [Node.js' `socket#setTimeout()` function](https://nodejs.org/api/net.html#net_socket_settimeout_timeout_callback). * @param {Number} [options.socketTimeoutMS=30000] How long the MongoDB driver will wait before killing a socket due to inactivity _after initial connection_. A socket may be inactive because of either no activity or a long-running operation. This is set to `30000` by default, you should set this to 2-3x your longest running operation if you expect some of your database operations to run longer than 20 seconds. This option is passed to [Node.js `socket#setTimeout()` function](https://nodejs.org/api/net.html#net_socket_settimeout_timeout_callback) after the MongoDB driver successfully completes. * @param {Number} [options.family=0] Passed transparently to [Node.js' `dns.lookup()`](https://nodejs.org/api/dns.html#dns_dns_lookup_hostname_options_callback) function. May be either `0, `4`, or `6`. `4` means use IPv4 only, `6` means use IPv6 only, `0` means try both. * @param {Boolean} [options.autoCreate=false] Set to `true` to make Mongoose automatically call `createCollection()` on every model created on this connection. * @param {Function} [callback] - * @returns {Connection} this + * @returns {Promise} Returns a Promise if no `callback` is given. * @api public */ @@ -838,6 +844,11 @@ Connection.prototype.openUri = function(uri, options, callback) { ); } + for (const model of Object.values(this.models)) { + // Errors handled internally, so safe to ignore error + model.init(function $modelInitNoop() {}); + } + return this.$initialConnection; }; @@ -913,6 +924,14 @@ function _setClient(conn, client, options, dbName) { } } +/** + * Destory the connection (not just a alias of [`.close`](#connection_Connection-close)) + * + * @param {Boolean} [force] + * @param {Function} [callback] + * @returns {Promise} Returns a Promise if no `callback` is given. + */ + Connection.prototype.destroy = function(force, callback) { if (typeof force === 'function') { callback = force; @@ -935,7 +954,7 @@ Connection.prototype.destroy = function(force, callback) { * * @param {Boolean} [force] optional * @param {Function} [callback] optional - * @return {Promise} + * @return {Promise} Returns a Promise if no `callback` is given. * @api public */ @@ -951,6 +970,13 @@ Connection.prototype.close = function(force, callback) { this.$wasForceClosed = !!force; } + for (const model of Object.values(this.models)) { + // If manually disconnecting, make sure to clear each model's `$init` + // promise, so Mongoose knows to re-run `init()` in case the + // connection is re-opened. See gh-12047. + delete model.$init; + } + return promiseOrCallback(callback, cb => { this._close(force, false, cb); }); @@ -961,7 +987,8 @@ Connection.prototype.close = function(force, callback) { * * @param {Boolean} force * @param {Boolean} destroy - * @param {Function} callback + * @param {Function} [callback] + * @returns {Connection} this * @api private */ Connection.prototype._close = function(force, destroy, callback) { @@ -1026,6 +1053,16 @@ Connection.prototype._close = function(force, destroy, callback) { return this; }; +/** + * Abstract method that drivers must implement. + * + * @api private + */ + +Connection.prototype.doClose = function() { + throw new Error('Connection#doClose unimplemented by driver'); +}; + /** * Called when the connection closes * @@ -1081,7 +1118,8 @@ Connection.prototype.collection = function(name, options) { * Equivalent to calling `.plugin(fn)` on each schema you create. * * #### Example: - * const db = mongoose.createConnection('mongodb://localhost:27017/mydb'); + * + * const db = mongoose.createConnection('mongodb://127.0.0.1:27017/mydb'); * db.plugin(() => console.log('Applied')); * db.plugins.length; // 1 * @@ -1090,7 +1128,7 @@ Connection.prototype.collection = function(name, options) { * @param {Function} fn plugin callback * @param {Object} [opts] optional options * @return {Connection} this - * @see plugins ./plugins.html + * @see plugins /docs/plugins.html * @api public */ @@ -1108,7 +1146,7 @@ Connection.prototype.plugin = function(fn, opts) { * const Ticket = db.model('Ticket', new Schema(..)); * const Venue = db.model('Venue'); * - * _When no `collection` argument is passed, Mongoose produces a collection name by passing the model `name` to the [utils.toCollectionName](#utils_exports.toCollectionName) method. This method pluralizes the name. If you don't like this behavior, either pass a collection name or set your schemas collection name option._ + * _When no `collection` argument is passed, Mongoose produces a collection name by passing the model `name` to the [utils.toCollectionName](#utils_exports-toCollectionName) method. This method pluralizes the name. If you don't like this behavior, either pass a collection name or set your schemas collection name option._ * * #### Example: * @@ -1203,6 +1241,14 @@ Connection.prototype.model = function(name, schema, collection, options) { return sub; } + if (arguments.length === 1) { + model = this.models[name]; + if (!model) { + throw new MongooseError.MissingSchemaError(name); + } + return model; + } + if (!model) { throw new MongooseError.MissingSchemaError(name); } @@ -1274,7 +1320,7 @@ Connection.prototype.deleteModel = function(name) { /** * Watches the entire underlying database for changes. Similar to - * [`Model.watch()`](/docs/api/model.html#model_Model.watch). + * [`Model.watch()`](/docs/api/model.html#model_Model-watch). * * This function does **not** trigger any middleware. In particular, it * does **not** trigger aggregate middleware. @@ -1297,7 +1343,7 @@ Connection.prototype.deleteModel = function(name) { * * @api public * @param {Array} [pipeline] - * @param {Object} [options] passed without changes to [the MongoDB driver's `Db#watch()` function](https://mongodb.github.io/node-mongodb-native/3.4/api/Db.html#watch) + * @param {Object} [options] passed without changes to [the MongoDB driver's `Db#watch()` function](https://mongodb.github.io/node-mongodb-native/4.9/classes/Db.html#watch) * @return {ChangeStream} mongoose-specific change stream wrapper, inherits from EventEmitter */ @@ -1330,7 +1376,8 @@ Connection.prototype.watch = function(pipeline, options) { * to connect. * * #### Example: - * const conn = await mongoose.createConnection('mongodb://localhost:27017/test'). + * + * const conn = await mongoose.createConnection('mongodb://127.0.0.1:27017/test'). * asPromise(); * conn.readyState; // 1, means Mongoose is connected * @@ -1345,7 +1392,7 @@ Connection.prototype.asPromise = function asPromise() { /** * Returns an array of model names created on this connection. * @api public - * @return {Array} + * @return {String[]} */ Connection.prototype.modelNames = function() { @@ -1353,9 +1400,10 @@ Connection.prototype.modelNames = function() { }; /** - * @brief Returns if the connection requires authentication after it is opened. Generally if a + * Returns if the connection requires authentication after it is opened. Generally if a * username and password are both provided than authentication is needed, but in some cases a * password is not required. + * * @api private * @return {Boolean} true if the connection should be authenticated after it is opened, otherwise false. */ @@ -1365,8 +1413,9 @@ Connection.prototype.shouldAuthenticate = function() { }; /** - * @brief Returns a boolean value that specifies if the current authentication mechanism needs a + * Returns a boolean value that specifies if the current authentication mechanism needs a * password to authenticate according to the auth objects passed into the openUri methods. + * * @api private * @return {Boolean} true if the authentication mechanism specified in the options object requires * a password, otherwise false. @@ -1379,10 +1428,11 @@ Connection.prototype.authMechanismDoesNotRequirePassword = function() { }; /** - * @brief Returns a boolean value that specifies if the provided objects object provides enough + * Returns a boolean value that specifies if the provided objects object provides enough * data to authenticate with. Generally this is true if the username and password are both specified * but in some authentication methods, a password is not required for authentication so only a username * is required. + * * @param {Object} [options] the options object passed into the openUri methods. * @api private * @return {Boolean} true if the provided options object provides enough data to authenticate with, @@ -1395,11 +1445,12 @@ Connection.prototype.optionsProvideAuthenticationData = function(options) { }; /** - * Returns the [MongoDB driver `MongoClient`](https://mongodb.github.io/node-mongodb-native/3.5/api/MongoClient.html) instance + * Returns the [MongoDB driver `MongoClient`](https://mongodb.github.io/node-mongodb-native/4.9/classes/MongoClient.html) instance * that this connection uses to talk to MongoDB. * * #### Example: - * const conn = await mongoose.createConnection('mongodb://localhost:27017/test'). + * + * const conn = await mongoose.createConnection('mongodb://127.0.0.1:27017/test'). * asPromise(); * * conn.getClient(); // MongoClient { ... } @@ -1413,12 +1464,13 @@ Connection.prototype.getClient = function getClient() { }; /** - * Set the [MongoDB driver `MongoClient`](https://mongodb.github.io/node-mongodb-native/3.5/api/MongoClient.html) instance + * Set the [MongoDB driver `MongoClient`](https://mongodb.github.io/node-mongodb-native/4.9/classes/MongoClient.html) instance * that this connection uses to talk to MongoDB. This is useful if you already have a MongoClient instance, and want to * reuse it. * * #### Example: - * const client = await mongodb.MongoClient.connect('mongodb://localhost:27017/test'); + * + * const client = await mongodb.MongoClient.connect('mongodb://127.0.0.1:27017/test'); * * const conn = mongoose.createConnection().setClient(client); * @@ -1426,6 +1478,7 @@ Connection.prototype.getClient = function getClient() { * conn.readyState; // 1, means 'CONNECTED' * * @api public + * @param {MongClient} client The Client to set to be used. * @return {Connection} this */ @@ -1443,16 +1496,20 @@ Connection.prototype.setClient = function setClient(client) { this._connectionString = client.s.url; _setClient(this, client, {}, client.s.options.dbName); + for (const model of Object.values(this.models)) { + // Errors handled internally, so safe to ignore error + model.init(function $modelInitNoop() {}); + } + return this; }; /** - * * Syncs all the indexes for the models registered with this connection. * - * @param {Object} options - * @param {Boolean} options.continueOnError `false` by default. If set to `true`, mongoose will not throw an error if one model syncing failed, and will return an object where the keys are the names of the models, and the values are the results/errors for each model. - * @return {Promise} Returns a Promise, when the Promise resolves the value is a list of the dropped indexes. + * @param {Object} [options] + * @param {Boolean} [options.continueOnError] `false` by default. If set to `true`, mongoose will not throw an error if one model syncing failed, and will return an object where the keys are the names of the models, and the values are the results/errors for each model. + * @return {Promise} Returns a Promise, when the Promise resolves the value is a list of the dropped indexes. */ Connection.prototype.syncIndexes = async function syncIndexes(options = {}) { const result = {}; @@ -1488,6 +1545,17 @@ Connection.prototype.syncIndexes = async function syncIndexes(options = {}) { * * Returns a new connection object, with the new db. * + * #### Example: + * + * // Connect to `initialdb` first + * const conn = await mongoose.createConnection('mongodb://127.0.0.1:27017/initialdb').asPromise(); + * + * // Creates an un-cached connection to `mydb` + * const db = conn.useDb('mydb'); + * // Creates a cached connection to `mydb2`. All calls to `conn.useDb('mydb2', { useCache: true })` will return the same + * // connection instance as opposed to creating a new connection instance + * const db2 = conn.useDb('mydb2', { useCache: true }); + * * @method useDb * @memberOf Connection * @param {String} name The database name diff --git a/food-ordering-app/server/node_modules/mongoose/lib/cursor/AggregationCursor.js b/food-ordering-app/server/node_modules/mongoose/lib/cursor/AggregationCursor.js index 587dbffde..05b68b62a 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/cursor/AggregationCursor.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/cursor/AggregationCursor.js @@ -23,10 +23,10 @@ const util = require('util'); * but **not** the model's post aggregate hooks. * * Unless you're an advanced user, do **not** instantiate this class directly. - * Use [`Aggregate#cursor()`](/docs/api.html#aggregate_Aggregate-cursor) instead. + * Use [`Aggregate#cursor()`](/docs/api/aggregate.html#aggregate_Aggregate-cursor) instead. * * @param {Aggregate} agg - * @inherits Readable + * @inherits Readable https://nodejs.org/api/stream.html#class-streamreadable * @event `cursor`: Emitted when the cursor is created * @event `error`: Emitted when an error occurred * @event `data`: Emitted when the stream is flowing and the next doc is ready @@ -71,8 +71,12 @@ function _init(model, c, agg) { } } -/*! +/** * Necessary to satisfy the Readable API + * @method _read + * @memberOf AggregationCursor + * @instance + * @api private */ AggregationCursor.prototype._read = function() { @@ -147,8 +151,12 @@ Object.defineProperty(AggregationCursor.prototype, 'map', { writable: true }); -/*! +/** * Marks this cursor as errored + * @method _markError + * @instance + * @memberOf AggregationCursor + * @api private */ AggregationCursor.prototype._markError = function(error) { @@ -165,7 +173,7 @@ AggregationCursor.prototype._markError = function(error) { * @api public * @method close * @emits close - * @see MongoDB driver cursor#close https://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#close + * @see AggregationCursor.close https://mongodb.github.io/node-mongodb-native/4.9/classes/AggregationCursor.html#close */ AggregationCursor.prototype.close = function(callback) { @@ -223,7 +231,7 @@ AggregationCursor.prototype.eachAsync = function(fn, opts, callback) { }; /** - * Returns an asyncIterator for use with [`for/await/of` loops](https://thecodebarbarian.com/getting-started-with-async-iterators-in-node-js + * Returns an asyncIterator for use with [`for/await/of` loops](https://thecodebarbarian.com/getting-started-with-async-iterators-in-node-js) * You do not need to call this function explicitly, the JavaScript runtime * will call it for you. * @@ -249,7 +257,7 @@ AggregationCursor.prototype.eachAsync = function(fn, opts, callback) { * `Symbol.asyncIterator` is undefined, that means your Node.js version does not * support async iterators. * - * @method Symbol.asyncIterator + * @method [Symbol.asyncIterator] * @memberOf AggregationCursor * @instance * @api public @@ -293,7 +301,7 @@ function _transformForAsyncIterator(doc) { } /** - * Adds a [cursor flag](https://mongodb.github.io/node-mongodb-native/2.2/api/Cursor.html#addCursorFlag). + * Adds a [cursor flag](https://mongodb.github.io/node-mongodb-native/4.9/classes/AggregationCursor.html#addCursorFlag). * Useful for setting the `noCursorTimeout` and `tailable` flags. * * @param {String} flag @@ -324,9 +332,12 @@ function _waitForCursor(ctx, cb) { }); } -/*! +/** * Get the next doc from the underlying cursor and mongooseify it * (populate, etc.) + * @param {Any} ctx + * @param {Function} cb + * @api private */ function _next(ctx, cb) { diff --git a/food-ordering-app/server/node_modules/mongoose/lib/cursor/ChangeStream.js b/food-ordering-app/server/node_modules/mongoose/lib/cursor/ChangeStream.js index 15dbcadcb..6cee9f8b3 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/cursor/ChangeStream.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/cursor/ChangeStream.js @@ -20,6 +20,13 @@ class ChangeStream extends EventEmitter { this.pipeline = pipeline; this.options = options; + if (options && options.hydrate && !options.model) { + throw new Error( + 'Cannot create change stream with `hydrate: true` ' + + 'unless calling `Model.watch()`' + ); + } + // This wrapper is necessary because of buffering. changeStreamThunk((err, driverChangeStream) => { if (err != null) { @@ -46,7 +53,18 @@ class ChangeStream extends EventEmitter { }); ['close', 'change', 'end', 'error'].forEach(ev => { - this.driverChangeStream.on(ev, data => this.emit(ev, data)); + this.driverChangeStream.on(ev, data => { + // Sometimes Node driver still polls after close, so + // avoid any uncaught exceptions due to closed change streams + // See tests for gh-7022 + if (ev === 'error' && this.closed) { + return; + } + if (data != null && data.fullDocument != null && this.options && this.options.hydrate) { + data.fullDocument = this.options.model.hydrate(data.fullDocument); + } + this.emit(ev, data); + }); }); }); @@ -57,8 +75,17 @@ class ChangeStream extends EventEmitter { this.closed = true; }); - ['close', 'change', 'end', 'error'].forEach(ev => { + ['close', 'change', 'end', 'error', 'resumeTokenChanged'].forEach(ev => { this.driverChangeStream.on(ev, data => { + // Sometimes Node driver still polls after close, so + // avoid any uncaught exceptions due to closed change streams + // See tests for gh-7022 + if (ev === 'error' && this.closed) { + return; + } + if (data != null && data.fullDocument != null && this.options && this.options.hydrate) { + data.fullDocument = this.options.model.hydrate(data.fullDocument); + } this.emit(ev, data); }); }); @@ -69,6 +96,32 @@ class ChangeStream extends EventEmitter { } next(cb) { + if (this.options && this.options.hydrate) { + if (cb != null) { + const originalCb = cb; + cb = (err, data) => { + if (err != null) { + return originalCb(err); + } + if (data.fullDocument != null) { + data.fullDocument = this.options.model.hydrate(data.fullDocument); + } + return originalCb(null, data); + }; + } + + let maybePromise = this.driverChangeStream.next(cb); + if (maybePromise && typeof maybePromise.then === 'function') { + maybePromise = maybePromise.then(data => { + if (data.fullDocument != null) { + data.fullDocument = this.options.model.hydrate(data.fullDocument); + } + return data; + }); + } + return maybePromise; + } + return this.driverChangeStream.next(cb); } diff --git a/food-ordering-app/server/node_modules/mongoose/lib/cursor/QueryCursor.js b/food-ordering-app/server/node_modules/mongoose/lib/cursor/QueryCursor.js index baa7710b1..96fbc80dd 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/cursor/QueryCursor.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/cursor/QueryCursor.js @@ -21,11 +21,11 @@ const util = require('util'); * from MongoDB, and the model's post `find` hooks after loading each document. * * Unless you're an advanced user, do **not** instantiate this class directly. - * Use [`Query#cursor()`](/docs/api.html#query_Query-cursor) instead. + * Use [`Query#cursor()`](/docs/api/query.html#query_Query-cursor) instead. * * @param {Query} query * @param {Object} options query options passed to `.find()` - * @inherits Readable + * @inherits Readable https://nodejs.org/api/stream.html#class-streamreadable * @event `cursor`: Emitted when the cursor is created * @event `error`: Emitted when an error occurred * @event `data`: Emitted when the stream is flowing and the next doc is ready @@ -66,6 +66,7 @@ function QueryCursor(query, options) { // Max out the number of documents we'll populate in parallel at 5000. this.options._populateBatchSize = Math.min(this.options.batchSize, 5000); } + Object.assign(this.options, query._optionsForExec()); model.collection.find(query._conditions, this.options, (err, cursor) => { if (err != null) { _this._markError(err); @@ -85,8 +86,12 @@ function QueryCursor(query, options) { util.inherits(QueryCursor, Readable); -/*! +/** * Necessary to satisfy the Readable API + * @method _read + * @memberOf QueryCursor + * @instance + * @api private */ QueryCursor.prototype._read = function() { @@ -152,8 +157,12 @@ Object.defineProperty(QueryCursor.prototype, 'map', { writable: true }); -/*! +/** * Marks this cursor as errored + * @method _markError + * @memberOf QueryCursor + * @instance + * @api private */ QueryCursor.prototype._markError = function(error) { @@ -170,7 +179,7 @@ QueryCursor.prototype._markError = function(error) { * @api public * @method close * @emits close - * @see MongoDB driver cursor#close https://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#close + * @see AggregationCursor.close https://mongodb.github.io/node-mongodb-native/4.9/classes/AggregationCursor.html#close */ QueryCursor.prototype.close = function(callback) { @@ -186,6 +195,24 @@ QueryCursor.prototype.close = function(callback) { }, this.model.events); }; +/** + * Rewind this cursor to its uninitialized state. Any options that are present on the cursor will + * remain in effect. Iterating this cursor will cause new queries to be sent to the server, even + * if the resultant data has already been retrieved by this cursor. + * + * @return {AggregationCursor} this + * @api public + * @method rewind + */ + +QueryCursor.prototype.rewind = function() { + const _this = this; + _waitForCursor(this, function() { + _this.cursor.rewind(); + }); + return this; +}; + /** * Get the next document from this cursor. Will return `null` when there are * no documents left. @@ -255,7 +282,7 @@ QueryCursor.prototype.eachAsync = function(fn, opts, callback) { QueryCursor.prototype.options; /** - * Adds a [cursor flag](https://mongodb.github.io/node-mongodb-native/2.2/api/Cursor.html#addCursorFlag). + * Adds a [cursor flag](https://mongodb.github.io/node-mongodb-native/4.9/classes/FindCursor.html#addCursorFlag). * Useful for setting the `noCursorTimeout` and `tailable` flags. * * @param {String} flag @@ -320,7 +347,7 @@ QueryCursor.prototype._transformForAsyncIterator = function() { * `Symbol.asyncIterator` is undefined, that means your Node.js version does not * support async iterators. * - * @method Symbol.asyncIterator + * @method [Symbol.asyncIterator] * @memberOf QueryCursor * @instance * @api public @@ -340,9 +367,12 @@ function _transformForAsyncIterator(doc) { return doc == null ? { done: true } : { value: doc, done: false }; } -/*! +/** * Get the next doc from the underlying cursor and mongooseify it * (populate, etc.) + * @param {Any} ctx + * @param {Function} cb + * @api private */ function _next(ctx, cb) { diff --git a/food-ordering-app/server/node_modules/mongoose/lib/document.js b/food-ordering-app/server/node_modules/mongoose/lib/document.js index 72c12c754..1e9cec2e8 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/document.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/document.js @@ -15,14 +15,13 @@ const Schema = require('./schema'); const StrictModeError = require('./error/strict'); const ValidationError = require('./error/validation'); const ValidatorError = require('./error/validator'); -const VirtualType = require('./virtualtype'); const $__hasIncludedChildren = require('./helpers/projection/hasIncludedChildren'); const promiseOrCallback = require('./helpers/promiseOrCallback'); +const applyDefaults = require('./helpers/document/applyDefaults'); const cleanModifiedSubpaths = require('./helpers/document/cleanModifiedSubpaths'); const compile = require('./helpers/document/compile').compile; const defineKey = require('./helpers/document/compile').defineKey; const flatten = require('./helpers/common').flatten; -const flattenObjectWithDottedPaths = require('./helpers/path/flattenObjectWithDottedPaths'); const get = require('./helpers/get'); const getEmbeddedDiscriminatorPath = require('./helpers/document/getEmbeddedDiscriminatorPath'); const getKeysInSchemaOrder = require('./helpers/schema/getKeysInSchemaOrder'); @@ -62,13 +61,13 @@ const specialProperties = utils.specialProperties; /** * The core Mongoose document constructor. You should not call this directly, - * the Mongoose [Model constructor](./api.html#Model) calls this for you. + * the Mongoose [Model constructor](./api/model.html#Model) calls this for you. * * @param {Object} obj the values to set * @param {Object} [fields] optional object containing the fields which were selected in the query returning this document and any populated paths data * @param {Object} [options] various configuration options for the document * @param {Boolean} [options.defaults=true] if `false`, skip applying default values to this document. - * @inherits NodeJS EventEmitter https://nodejs.org/api/events.html#events_class_events_eventemitter + * @inherits NodeJS EventEmitter https://nodejs.org/api/events.html#class-eventemitter * @event `init`: Emitted on a document after it has been retrieved from the db and fully hydrated by Mongoose. * @event `save`: Emitted when the document is successfully saved * @api private @@ -93,7 +92,11 @@ function Document(obj, fields, skipId, options) { } this.$__ = new InternalCache(); - this.$isNew = 'isNew' in options ? options.isNew : true; + + // Avoid setting `isNew` to `true`, because it is `true` by default + if (options.isNew != null && options.isNew !== true) { + this.$isNew = options.isNew; + } if (options.priorDoc != null) { this.$__.priorDoc = options.priorDoc; @@ -116,13 +119,12 @@ function Document(obj, fields, skipId, options) { const schema = this.$__schema; if (typeof fields === 'boolean' || fields === 'throw') { - this.$__.strictMode = fields; + if (fields !== true) { + this.$__.strictMode = fields; + } fields = undefined; - } else { + } else if (schema.options.strict !== true) { this.$__.strictMode = schema.options.strict; - if (fields != null) { - this.$__.selected = fields; - } } const requiredPaths = schema.requiredPaths(true); @@ -134,9 +136,9 @@ function Document(obj, fields, skipId, options) { // determine if this doc is a result of a query with // excluded fields - if (utils.isPOJO(fields)) { + if (utils.isPOJO(fields) && Object.keys(fields).length > 0) { exclude = isExclusive(fields); - this.$__.fields = fields; + this.$__.selected = fields; this.$__.exclude = exclude; } @@ -150,7 +152,7 @@ function Document(obj, fields, skipId, options) { // By default, defaults get applied **before** setting initial values // Re: gh-6155 if (defaults) { - $__applyDefaults(this, fields, exclude, hasIncludedChildren, true, null); + applyDefaults(this, fields, exclude, hasIncludedChildren, true, null); } } if (obj) { @@ -174,7 +176,7 @@ function Document(obj, fields, skipId, options) { this.$__.skipDefaults = options.skipDefaults; } } else if (defaults) { - $__applyDefaults(this, fields, exclude, hasIncludedChildren, false, options.skipDefaults); + applyDefaults(this, fields, exclude, hasIncludedChildren, false, options.skipDefaults); } if (!this.$__.strictMode && obj) { @@ -193,6 +195,59 @@ function Document(obj, fields, skipId, options) { applyQueue(this); } +Document.prototype.$isMongooseDocumentPrototype = true; + +/** + * Boolean flag specifying if the document is new. If you create a document + * using `new`, this document will be considered "new". `$isNew` is how + * Mongoose determines whether `save()` should use `insertOne()` to create + * a new document or `updateOne()` to update an existing document. + * + * #### Example: + * + * const user = new User({ name: 'John Smith' }); + * user.$isNew; // true + * + * await user.save(); // Sends an `insertOne` to MongoDB + * + * On the other hand, if you load an existing document from the database + * using `findOne()` or another [query operation](/docs/queries.html), + * `$isNew` will be false. + * + * #### Example: + * + * const user = await User.findOne({ name: 'John Smith' }); + * user.$isNew; // false + * + * Mongoose sets `$isNew` to `false` immediately after `save()` succeeds. + * That means Mongoose sets `$isNew` to false **before** `post('save')` hooks run. + * In `post('save')` hooks, `$isNew` will be `false` if `save()` succeeded. + * + * #### Example: + * + * userSchema.post('save', function() { + * this.$isNew; // false + * }); + * await User.create({ name: 'John Smith' }); + * + * For subdocuments, `$isNew` is true if either the parent has `$isNew` set, + * or if you create a new subdocument. + * + * #### Example: + * + * // Assume `Group` has a document array `users` + * const group = await Group.findOne(); + * group.users[0].$isNew; // false + * + * group.users.push({ name: 'John Smith' }); + * group.users[1].$isNew; // true + * + * @api public + * @property $isNew + * @memberOf Document + * @instance + */ + Object.defineProperty(Document.prototype, 'isNew', { get: function() { return this.$isNew; @@ -202,6 +257,15 @@ Object.defineProperty(Document.prototype, 'isNew', { } }); +/** + * Hash containing current validation errors. + * + * @api public + * @property errors + * @memberOf Document + * @instance + */ + Object.defineProperty(Document.prototype, 'errors', { get: function() { return this.$errors; @@ -210,6 +274,13 @@ Object.defineProperty(Document.prototype, 'errors', { this.$errors = value; } }); + +/*! + * ignore + */ + +Document.prototype.$isNew = true; + /*! * Document exposes the NodeJS event emitter API, so you can use * `on`, `once`, etc. @@ -298,52 +369,13 @@ Object.defineProperty(Document.prototype, '$locals', { } }); - -/** - * Boolean flag specifying if the document is new. If you create a document - * using `new`, this document will be considered "new". `$isNew` is how - * Mongoose determines whether `save()` should use `insertOne()` to create - * a new document or `updateOne()` to update an existing document. - * - * #### Example: - * const user = new User({ name: 'John Smith' }); - * user.$isNew; // true - * - * await user.save(); // Sends an `insertOne` to MongoDB - * - * On the other hand, if you load an existing document from the database - * using `findOne()` or another [query operation](/docs/queries.html), - * `$isNew` will be false. - * - * #### Example: - * const user = await User.findOne({ name: 'John Smith' }); - * user.$isNew; // false - * - * For subdocuments, `$isNew` is true if either the parent has `$isNew` set, - * or if you create a new subdocument. - * - * #### Example: - * // Assume `Group` has a document array `users` - * const group = await Group.findOne(); - * group.users[0].$isNew; // false - * - * group.users.push({ name: 'John Smith' }); - * group.users[1].$isNew; // true - * - * @api public - * @property $isNew - * @memberOf Document - * @instance - */ - -Document.prototype.$isNew; - /** * Legacy alias for `$isNew`. * * @api public * @property isNew * @memberOf Document + * @see $isNew #document_Document-$isNew * @instance */ @@ -400,17 +432,6 @@ Document.prototype.id; Document.prototype.$errors; -/** - * Hash containing current validation errors. - * - * @api public - * @property errors - * @memberOf Document - * @instance - */ - -Document.prototype.errors; - /** * A string containing the current operation that Mongoose is executing * on this document. May be `null`, `'save'`, `'validate'`, or `'remove'`. @@ -441,122 +462,6 @@ Object.defineProperty(Document.prototype, '$op', { } }); -/*! - * ignore - */ - -function $__applyDefaults(doc, fields, exclude, hasIncludedChildren, isBeforeSetters, pathsToSkip) { - const paths = Object.keys(doc.$__schema.paths); - const plen = paths.length; - - for (let i = 0; i < plen; ++i) { - let def; - let curPath = ''; - const p = paths[i]; - - if (p === '_id' && doc.$__.skipId) { - continue; - } - - const type = doc.$__schema.paths[p]; - const path = type.splitPath(); - const len = path.length; - let included = false; - let doc_ = doc._doc; - for (let j = 0; j < len; ++j) { - if (doc_ == null) { - break; - } - - const piece = path[j]; - curPath += (!curPath.length ? '' : '.') + piece; - - if (exclude === true) { - if (curPath in fields) { - break; - } - } else if (exclude === false && fields && !included) { - const hasSubpaths = type.$isSingleNested || type.$isMongooseDocumentArray; - if (curPath in fields || (hasSubpaths && hasIncludedChildren != null && hasIncludedChildren[curPath])) { - included = true; - } else if (hasIncludedChildren != null && !hasIncludedChildren[curPath]) { - break; - } - } - - if (j === len - 1) { - if (doc_[piece] !== void 0) { - break; - } - - if (typeof type.defaultValue === 'function') { - if (!type.defaultValue.$runBeforeSetters && isBeforeSetters) { - break; - } - if (type.defaultValue.$runBeforeSetters && !isBeforeSetters) { - break; - } - } else if (!isBeforeSetters) { - // Non-function defaults should always run **before** setters - continue; - } - - if (pathsToSkip && pathsToSkip[curPath]) { - break; - } - - if (fields && exclude !== null) { - if (exclude === true) { - // apply defaults to all non-excluded fields - if (p in fields) { - continue; - } - - try { - def = type.getDefault(doc, false); - } catch (err) { - doc.invalidate(p, err); - break; - } - - if (typeof def !== 'undefined') { - doc_[piece] = def; - doc.$__.activePaths.default(p); - } - } else if (included) { - // selected field - try { - def = type.getDefault(doc, false); - } catch (err) { - doc.invalidate(p, err); - break; - } - - if (typeof def !== 'undefined') { - doc_[piece] = def; - doc.$__.activePaths.default(p); - } - } - } else { - try { - def = type.getDefault(doc, false); - } catch (err) { - doc.invalidate(p, err); - break; - } - - if (typeof def !== 'undefined') { - doc_[piece] = def; - doc.$__.activePaths.default(p); - } - } - } else { - doc_ = doc_[piece]; - } - } - } -} - /*! * ignore */ @@ -566,8 +471,6 @@ function $applyDefaultsToNested(val, path, doc) { return; } - flattenObjectWithDottedPaths(val); - const paths = Object.keys(doc.$__schema.paths); const plen = paths.length; @@ -630,6 +533,8 @@ function $applyDefaultsToNested(val, path, doc) { * @param {Object} obj * @param {Object} [fields] * @param {Boolean} [skipId] + * @param {Boolean} [exclude] + * @param {Object} [hasIncludedChildren] * @api private * @method $__buildDoc * @memberOf Document @@ -714,6 +619,8 @@ Document.prototype.toBSON = function() { * Note that `init` hooks are [synchronous](/docs/middleware.html#synchronous). * * @param {Object} doc document returned by mongo + * @param {Object} [opts] + * @param {Function} [fn] * @api public * @memberOf Document * @instance @@ -734,10 +641,25 @@ Document.prototype.init = function(doc, opts, fn) { return this; }; +/** + * Alias for [`.init`](#document_Document-init) + * + * @api public + */ + Document.prototype.$init = function() { return this.constructor.prototype.init.apply(this, arguments); }; +/** + * Internal "init" function + * + * @param {Document} doc + * @param {Object} [opts] + * @returns {Document} this + * @api private + */ + Document.prototype.$__init = function(doc, opts) { this.$isNew = false; opts = opts || {}; @@ -773,26 +695,33 @@ Document.prototype.$__init = function(doc, opts) { this.$emit('init', this); this.constructor.emit('init', this); - const hasIncludedChildren = this.$__.exclude === false && this.$__.fields ? - $__hasIncludedChildren(this.$__.fields) : + const hasIncludedChildren = this.$__.exclude === false && this.$__.selected ? + $__hasIncludedChildren(this.$__.selected) : null; - $__applyDefaults(this, this.$__.fields, this.$__.exclude, hasIncludedChildren, false, this.$__.skipDefaults); + + applyDefaults(this, this.$__.selected, this.$__.exclude, hasIncludedChildren, false, this.$__.skipDefaults); return this; }; -/*! +/** * Init helper. * * @param {Object} self document instance * @param {Object} obj raw mongodb doc * @param {Object} doc object we are initializing + * @param {Object} [opts] Optional Options + * @param {Boolean} [opts.setters] Call `applySetters` instead of `cast` + * @param {String} [prefix] Prefix to add to each path * @api private */ function init(self, obj, doc, opts, prefix) { prefix = prefix || ''; + if (obj.$__ != null) { + obj = obj._doc; + } const keys = Object.keys(obj); const len = keys.length; let schemaType; @@ -808,7 +737,11 @@ function init(self, obj, doc, opts, prefix) { function _init(index) { i = keys[index]; - path = prefix + i; + // avoid prototype pollution + if (i === '__proto__' || i === 'constructor') { + return; + } + path = prefix ? prefix + i : i; schemaType = docSchema.path(path); // Should still work if not a model-level discriminator, but should not be @@ -818,7 +751,8 @@ function init(self, obj, doc, opts, prefix) { return; } - if (!schemaType && utils.isPOJO(obj[i])) { + const value = obj[i]; + if (!schemaType && utils.isPOJO(value)) { // assume nested object if (!doc[i]) { doc[i] = {}; @@ -826,25 +760,31 @@ function init(self, obj, doc, opts, prefix) { self[i] = doc[i]; } } - init(self, obj[i], doc[i], opts, path + '.'); + init(self, value, doc[i], opts, path + '.'); } else if (!schemaType) { - doc[i] = obj[i]; + doc[i] = value; if (!strict && !prefix) { - self[i] = obj[i]; + self[i] = value; } } else { // Retain order when overwriting defaults - if (doc.hasOwnProperty(i) && obj[i] !== void 0) { + if (doc.hasOwnProperty(i) && value !== void 0) { delete doc[i]; } - if (obj[i] === null) { + if (value === null) { doc[i] = schemaType._castNullish(null); - } else if (obj[i] !== undefined) { - const wasPopulated = obj[i].$__ == null ? null : obj[i].$__.wasPopulated; + } else if (value !== undefined) { + const wasPopulated = value.$__ == null ? null : value.$__.wasPopulated; if (schemaType && !wasPopulated) { try { - doc[i] = schemaType.cast(obj[i], self, true); + if (opts && opts.setters) { + // Call applySetters with `init = false` because otherwise setters are a noop + const overrideInit = false; + doc[i] = schemaType.applySetters(value, self, overrideInit); + } else { + doc[i] = schemaType.cast(value, self, true); + } } catch (e) { self.invalidate(e.path, new ValidatorError({ path: e.path, @@ -855,7 +795,7 @@ function init(self, obj, doc, opts, prefix) { })); } } else { - doc[i] = obj[i]; + doc[i] = value; } } // mark as hydrated @@ -871,17 +811,17 @@ function init(self, obj, doc, opts, prefix) { * * #### Example: * - * weirdCar.update({$inc: {wheels:1}}, { w: 1 }, callback); + * weirdCar.update({ $inc: { wheels:1 } }, { w: 1 }, callback); * * #### Valid options: * - * - same as in [Model.update](#model_Model.update) + * - same as in [Model.update](#model_Model-update) * - * @see Model.update #model_Model.update - * @param {Object} doc - * @param {Object} options - * @param {Function} callback - * @return {Query} + * @see Model.update #model_Model-update + * @param {...Object} ops + * @param {Object} [options] + * @param {Function} [callback] + * @return {Query} this * @api public * @memberOf Document * @instance @@ -910,15 +850,15 @@ Document.prototype.update = function update() { * * #### Valid options: * - * - same as in [Model.updateOne](#model_Model.updateOne) + * - same as in [Model.updateOne](#model_Model-updateOne) * - * @see Model.updateOne #model_Model.updateOne + * @see Model.updateOne #model_Model-updateOne * @param {Object} doc - * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api.html#query_Query-setOptions) - * @param {Object} [options.lean] if truthy, mongoose will return the document as a plain JavaScript object rather than a mongoose document. See [`Query.lean()`](/docs/api.html#query_Query-lean) and the [Mongoose lean tutorial](/docs/tutorials/lean.html). + * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api/query.html#query_Query-setOptions) + * @param {Object} [options.lean] if truthy, mongoose will return the document as a plain JavaScript object rather than a mongoose document. See [`Query.lean()`](/docs/api/query.html#query_Query-lean) and the [Mongoose lean tutorial](/docs/tutorials/lean.html). * @param {Boolean|String} [options.strict] overwrites the schema's [strict mode option](https://mongoosejs.com/docs/guide.html#strict) * @param {Boolean} [options.timestamps=null] If set to `false` and [schema-level timestamps](/docs/guide.html#timestamps) are enabled, skip timestamps for this update. Note that this allows you to overwrite timestamps. Does nothing if schema-level timestamps are not set. - * @param {Function} callback + * @param {Function} [callback] * @return {Query} * @api public * @memberOf Document @@ -927,11 +867,12 @@ Document.prototype.update = function update() { Document.prototype.updateOne = function updateOne(doc, options, callback) { const query = this.constructor.updateOne({ _id: this._id }, doc, options); - query.pre(cb => { - this.constructor._middleware.execPre('updateOne', this, [this], cb); + const self = this; + query.pre(function queryPreUpdateOne(cb) { + self.constructor._middleware.execPre('updateOne', self, [self], cb); }); - query.post(cb => { - this.constructor._middleware.execPost('updateOne', this, [this], {}, cb); + query.post(function queryPostUpdateOne(cb) { + self.constructor._middleware.execPost('updateOne', self, [self], {}, cb); }); if (this.$session() != null) { @@ -952,12 +893,12 @@ Document.prototype.updateOne = function updateOne(doc, options, callback) { * * #### Valid options: * - * - same as in [Model.replaceOne](https://mongoosejs.com/docs/api/model.html#model_Model.replaceOne) + * - same as in [Model.replaceOne](https://mongoosejs.com/docs/api/model.html#model_Model-replaceOne) * - * @see Model.replaceOne #model_Model.replaceOne + * @see Model.replaceOne #model_Model-replaceOne * @param {Object} doc - * @param {Object} options - * @param {Function} callback + * @param {Object} [options] + * @param {Function} [callback] * @return {Query} * @api public * @memberOf Document @@ -1023,6 +964,48 @@ Document.prototype.$session = function $session(session) { return session; }; +/** + * Getter/setter around whether this document will apply timestamps by + * default when using `save()` and `bulkSave()`. + * + * #### Example: + * + * const TestModel = mongoose.model('Test', new Schema({ name: String }, { timestamps: true })); + * const doc = new TestModel({ name: 'John Smith' }); + * + * doc.$timestamps(); // true + * + * doc.$timestamps(false); + * await doc.save(); // Does **not** apply timestamps + * + * @param {Boolean} [value] overwrite the current session + * @return {Document|boolean|undefined} When used as a getter (no argument), a boolean will be returned indicating the timestamps option state or if unset "undefined" will be used, otherwise will return "this" + * @method $timestamps + * @api public + * @memberOf Document + */ + +Document.prototype.$timestamps = function $timestamps(value) { + if (arguments.length === 0) { + if (this.$__.timestamps != null) { + return this.$__.timestamps; + } + + if (this.$__schema) { + return this.$__schema.options.timestamps; + } + + return undefined; + } + + const currentValue = this.$timestamps(); + if (value !== currentValue) { + this.$__.timestamps = value; + } + + return this; +}; + /** * Overwrite all values in this document with the values of `obj`, except * for immutable properties. Behaves similarly to `set()`, except for it @@ -1030,10 +1013,10 @@ Document.prototype.$session = function $session(session) { * * @param {Object} obj the object to overwrite this document with * @method overwrite - * @name overwrite * @memberOf Document * @instance * @api public + * @return {Document} this */ Document.prototype.overwrite = function overwrite(obj) { @@ -1064,8 +1047,8 @@ Document.prototype.overwrite = function overwrite(obj) { * @param {Schema|String|Number|Buffer|*} [type] optionally specify a type for "on-the-fly" attributes * @param {Object} [options] optionally specify options that modify the behavior of the set * @param {Boolean} [options.merge=false] if true, setting a [nested path](/docs/subdocs.html#subdocuments-versus-nested-paths) will merge existing values rather than overwrite the whole object. So `doc.set('nested', { a: 1, b: 2 })` becomes `doc.set('nested.a', 1); doc.set('nested.b', 2);` + * @return {Document} this * @method $set - * @name $set * @memberOf Document * @instance * @api public @@ -1104,7 +1087,11 @@ Document.prototype.$set = function $set(path, val, type, options) { if (path.$__isNested) { path = path.toObject(); } else { - path = path._doc; + // This ternary is to support gh-7898 (copying virtuals if same schema) + // while not breaking gh-10819, which for some reason breaks if we use toObject() + path = path.$__schema === this.$__schema + ? applyVirtuals(path, { ...path._doc }) + : path._doc; } } if (path == null) { @@ -1127,9 +1114,11 @@ Document.prototype.$set = function $set(path, val, type, options) { return this; } + options = Object.assign({}, options, { _skipMinimizeTopLevel: false }); + for (let i = 0; i < len; ++i) { key = keys[i]; - const pathName = prefix + key; + const pathName = prefix ? prefix + key : key; pathtype = this.$__schema.pathType(pathName); const valForKey = path[key]; @@ -1141,20 +1130,15 @@ Document.prototype.$set = function $set(path, val, type, options) { pathtype === 'nested' && this._doc[key] != null) { delete this._doc[key]; - // Make sure we set `{}` back even if we minimize re: gh-8565 - options = Object.assign({}, options, { _skipMinimizeTopLevel: true }); - } else { - // Make sure we set `{_skipMinimizeTopLevel: false}` if don't have overwrite: gh-10441 - options = Object.assign({}, options, { _skipMinimizeTopLevel: false }); } if (utils.isNonBuiltinObject(valForKey) && pathtype === 'nested') { - $applyDefaultsToNested(path[key], prefix + key, this); - this.$set(prefix + key, path[key], constructing, Object.assign({}, options, { _skipMarkModified: true })); + this.$set(pathName, valForKey, constructing, Object.assign({}, options, { _skipMarkModified: true })); + $applyDefaultsToNested(this.$get(pathName), pathName, this); continue; } else if (strict) { // Don't overwrite defaults with undefined keys (gh-3981) (gh-9039) - if (constructing && path[key] === void 0 && + if (constructing && valForKey === void 0 && this.$get(pathName) !== void 0) { continue; } @@ -1164,20 +1148,21 @@ Document.prototype.$set = function $set(path, val, type, options) { } if (pathtype === 'real' || pathtype === 'virtual') { - const p = path[key]; - this.$set(prefix + key, p, constructing, options); - } else if (pathtype === 'nested' && path[key] instanceof Document) { - this.$set(prefix + key, - path[key].toObject({ transform: false }), constructing, options); + this.$set(pathName, valForKey, constructing, options); + } else if (pathtype === 'nested' && valForKey instanceof Document) { + this.$set(pathName, + valForKey.toObject({ transform: false }), constructing, options); } else if (strict === 'throw') { if (pathtype === 'nested') { - throw new ObjectExpectedError(key, path[key]); + throw new ObjectExpectedError(key, valForKey); } else { throw new StrictModeError(key); } + } else if (pathtype === 'nested' && valForKey == null) { + this.$set(pathName, valForKey, constructing, options); } - } else if (path[key] !== void 0) { - this.$set(prefix + key, path[key], constructing, options); + } else if (valForKey !== void 0) { + this.$set(pathName, valForKey, constructing, options); } } @@ -1223,6 +1208,7 @@ Document.prototype.$set = function $set(path, val, type, options) { this.invalidate(path, new MongooseError.CastError('Object', val, path)); return this; } + const wasModified = this.$isModified(path); const hasInitialVal = this.$__.savedState != null && this.$__.savedState.hasOwnProperty(path); if (this.$__.savedState != null && !this.$isNew && !this.$__.savedState.hasOwnProperty(path)) { const initialVal = this.$__getValue(path); @@ -1238,16 +1224,18 @@ Document.prototype.$set = function $set(path, val, type, options) { this.$__setValue(path, null); cleanModifiedSubpaths(this, path); } else { - return this.$set(val, path, constructing); + return this.$set(val, path, constructing, options); } const keys = getKeysInSchemaOrder(this.$__schema, val, path); this.$__setValue(path, {}); for (const key of keys) { - this.$set(path + '.' + key, val[key], constructing, options); + this.$set(path + '.' + key, val[key], constructing, { ...options, _skipMarkModified: true }); } - if (priorVal != null && utils.deepEqual(hasInitialVal ? this.$__.savedState[path] : priorVal, val)) { + if (priorVal != null && + (!wasModified || hasInitialVal) && + utils.deepEqual(hasInitialVal ? this.$__.savedState[path] : priorVal, val)) { this.unmarkModified(path); } else { this.markModified(path); @@ -1501,13 +1489,7 @@ Document.prototype.$set = function $set(path, val, type, options) { const doc = this.$isSubdocument ? this.ownerDocument() : this; savedState = doc.$__.savedState; savedStatePath = this.$isSubdocument ? this.$__.fullPath + '.' + path : path; - if (savedState != null) { - const firstDot = savedStatePath.indexOf('.'); - const topLevelPath = firstDot === -1 ? savedStatePath : savedStatePath.slice(0, firstDot); - if (!savedState.hasOwnProperty(topLevelPath)) { - savedState[topLevelPath] = utils.clone(doc.$__getValue(topLevelPath)); - } - } + doc.$__saveInitialState(savedStatePath); } this.$__set(pathToMark, path, options, constructing, parts, schema, val, priorVal); @@ -1554,6 +1536,7 @@ function _isManuallyPopulatedArray(val, ref) { /** * Sets the value of a path, or many paths. + * Alias for [`.$set`](#document_Document-$set). * * #### Example: * @@ -1581,6 +1564,7 @@ function _isManuallyPopulatedArray(val, ref) { * @param {Any} val the value to set * @param {Schema|String|Number|Buffer|*} [type] optionally specify a type for "on-the-fly" attributes * @param {Object} [options] optionally specify options that modify the behavior of the set + * @return {Document} this * @api public * @method set * @memberOf Document @@ -1592,6 +1576,14 @@ Document.prototype.set = Document.prototype.$set; /** * Determine if we should mark this change as modified. * + * @param {never} pathToMark UNUSED + * @param {String|Symbol} path + * @param {Object} options + * @param {Any} constructing + * @param {never} parts UNUSED + * @param {Schema} schema + * @param {Any} val + * @param {Any} priorVal * @return {Boolean} * @api private * @method $__shouldModify @@ -1606,6 +1598,10 @@ Document.prototype.$__shouldModify = function(pathToMark, path, options, constru if (this.$isNew) { return true; } + // Is path already modified? If so, always modify. We may unmark modified later. + if (path in this.$__.activePaths.getStatePaths('modify')) { + return true; + } // Re: the note about gh-7196, `val` is the raw value without casting or // setters if the full path is under a single nested subdoc because we don't @@ -1620,7 +1616,7 @@ Document.prototype.$__shouldModify = function(pathToMark, path, options, constru return true; } - if (val === void 0 && path in this.$__.activePaths.states.default) { + if (val === void 0 && path in this.$__.activePaths.getStatePaths('default')) { // we're just unsetting the default value which was never saved return false; } @@ -1633,14 +1629,14 @@ Document.prototype.$__shouldModify = function(pathToMark, path, options, constru return false; } - if (!deepEqual(val, priorVal || utils.getValue(path, this))) { + if (!deepEqual(val, priorVal !== undefined ? priorVal : utils.getValue(path, this))) { return true; } if (!constructing && val !== null && val !== undefined && - path in this.$__.activePaths.states.default && + path in this.$__.activePaths.getStatePaths('default') && deepEqual(val, schema.getDefault(this, constructing))) { // a path with a default was $unset on the server // and the user is setting it to the same value again @@ -1652,6 +1648,14 @@ Document.prototype.$__shouldModify = function(pathToMark, path, options, constru /** * Handles the actual setting of the value and marking the path modified if appropriate. * + * @param {String} pathToMark + * @param {String|Symbol} path + * @param {Object} options + * @param {Any} constructing + * @param {Array} parts + * @param {Schema} schema + * @param {Any} val + * @param {Any} priorVal * @api private * @method $__set * @memberOf Document @@ -1665,6 +1669,12 @@ Document.prototype.$__set = function(pathToMark, path, options, constructing, pa schema, val, priorVal); if (shouldModify) { + if (this.$__.primitiveAtomics && this.$__.primitiveAtomics[path]) { + delete this.$__.primitiveAtomics[path]; + if (Object.keys(this.$__.primitiveAtomics).length === 0) { + delete this.$__.primitiveAtomics; + } + } this.markModified(pathToMark); // handle directly setting arrays (gh-1126) @@ -1683,7 +1693,11 @@ Document.prototype.$__set = function(pathToMark, path, options, constructing, pa val[arrayAtomicsSymbol] = priorVal[arrayAtomicsSymbol]; val[arrayAtomicsBackupSymbol] = priorVal[arrayAtomicsBackupSymbol]; if (utils.isMongooseDocumentArray(val)) { - val.forEach(doc => { doc.isNew = false; }); + val.forEach(doc => { + if (doc) { + doc.isNew = false; + } + }); } } @@ -1727,6 +1741,7 @@ Document.prototype.$__set = function(pathToMark, path, options, constructing, pa * Gets a raw value from a path (no getters) * * @param {String} path + * @return {Any} Returns the value from the given `path`. * @api private */ @@ -1734,11 +1749,86 @@ Document.prototype.$__getValue = function(path) { return utils.getValue(path, this._doc); }; +/** + * Increments the numeric value at `path` by the given `val`. + * When you call `save()` on this document, Mongoose will send a + * [`$inc`](https://www.mongodb.com/docs/manual/reference/operator/update/inc/) + * as opposed to a `$set`. + * + * #### Example: + * + * const schema = new Schema({ counter: Number }); + * const Test = db.model('Test', schema); + * + * const doc = await Test.create({ counter: 0 }); + * doc.$inc('counter', 2); + * await doc.save(); // Sends a `{ $inc: { counter: 2 } }` to MongoDB + * doc.counter; // 2 + * + * doc.counter += 2; + * await doc.save(); // Sends a `{ $set: { counter: 2 } }` to MongoDB + * + * @param {String|Array} path path or paths to update + * @param {Number} val increment `path` by this value + * @return {Document} this + */ + +Document.prototype.$inc = function $inc(path, val) { + if (val == null) { + val = 1; + } + + if (Array.isArray(path)) { + path.forEach((p) => this.$inc(p, val)); + return this; + } + + const schemaType = this.$__path(path); + if (schemaType == null) { + if (this.$__.strictMode === 'throw') { + throw new StrictModeError(path); + } else if (this.$__.strictMode === true) { + return this; + } + } else if (schemaType.instance !== 'Number') { + this.invalidate(path, new MongooseError.CastError(schemaType.instance, val, path)); + return this; + } + + const currentValue = this.$__getValue(path) || 0; + let shouldSet = false; + let valToSet = null; + let valToInc = val; + + try { + val = schemaType.cast(val); + valToSet = schemaType.applySetters(currentValue + val, this); + valToInc = valToSet - currentValue; + shouldSet = true; + } catch (err) { + this.invalidate(path, new MongooseError.CastError('number', val, path, err)); + } + + if (shouldSet) { + this.$__.primitiveAtomics = this.$__.primitiveAtomics || {}; + if (this.$__.primitiveAtomics[path] == null) { + this.$__.primitiveAtomics[path] = { $inc: valToInc }; + } else { + this.$__.primitiveAtomics[path].$inc += valToInc; + } + this.markModified(path); + this.$__setValue(path, valToSet); + } + + return this; +}; + /** * Sets a raw value for a path (no casting, setters, transformations) * * @param {String} path * @param {Object} value + * @return {Document} this * @api private */ @@ -1763,33 +1853,53 @@ Document.prototype.$__setValue = function(path, val) { * @param {Object} [options] * @param {Boolean} [options.virtuals=false] Apply virtuals before getting this path * @param {Boolean} [options.getters=true] If false, skip applying getters and just get the raw value + * @return {Any} * @api public */ Document.prototype.get = function(path, type, options) { let adhoc; - options = options || {}; + if (options == null) { + options = {}; + } if (type) { adhoc = this.$__schema.interpretAsType(path, type, this.$__schema.options); } + const noDottedPath = options.noDottedPath; - let schema = this.$__path(path); + // Fast path if we know we're just accessing top-level path on the document: + // just get the schema path, avoid `$__path()` because that does string manipulation + let schema = noDottedPath ? this.$__schema.paths[path] : this.$__path(path); if (schema == null) { schema = this.$__schema.virtualpath(path); + + if (schema != null) { + return schema.applyGetters(void 0, this); + } } - if (schema instanceof MixedSchema) { + + if (noDottedPath) { + let obj = this._doc[path]; + if (adhoc) { + obj = adhoc.cast(obj); + } + if (schema != null && options.getters !== false) { + return schema.applyGetters(obj, this); + } + return obj; + } + + if (schema != null && schema.instance === 'Mixed') { const virtual = this.$__schema.virtualpath(path); if (virtual != null) { schema = virtual; } } - const pieces = path.indexOf('.') === -1 ? [path] : path.split('.'); - let obj = this._doc; - if (schema instanceof VirtualType) { - return schema.applyGetters(void 0, this); - } + const hasDot = path.indexOf('.') !== -1; + let obj = this._doc; + const pieces = hasDot ? path.split('.') : [path]; // Might need to change path for top-level alias if (typeof this.$__schema.aliases[pieces[0]] === 'string') { pieces[0] = this.$__schema.aliases[pieces[0]]; @@ -1831,10 +1941,12 @@ Document.prototype.get = function(path, type, options) { Document.prototype[getSymbol] = Document.prototype.get; Document.prototype.$get = Document.prototype.get; + /** * Returns the schematype for the given `path`. * * @param {String} path + * @return {SchemaPath} * @api private * @method $__path * @memberOf Document @@ -1868,6 +1980,8 @@ Document.prototype.$__path = function(path) { */ Document.prototype.markModified = function(path, scope) { + this.$__saveInitialState(path); + this.$__.activePaths.modify(path); if (scope != null && !this.$isSubdocument) { this.$__.pathsToScopes = this.$__pathsToScopes || {}; @@ -1875,6 +1989,22 @@ Document.prototype.markModified = function(path, scope) { } }; +/*! + * ignore + */ + +Document.prototype.$__saveInitialState = function $__saveInitialState(path) { + const savedState = this.$__.savedState; + const savedStatePath = path; + if (savedState != null) { + const firstDot = savedStatePath.indexOf('.'); + const topLevelPath = firstDot === -1 ? savedStatePath : savedStatePath.slice(0, firstDot); + if (!savedState.hasOwnProperty(topLevelPath)) { + savedState[topLevelPath] = utils.clone(this.$__getValue(topLevelPath)); + } + } +}; + /** * Clears the modified state on the specified path. * @@ -1924,6 +2054,7 @@ Document.prototype.$ignore = function(path) { * because a child of `a` was directly modified. * * #### Example: + * * const schema = new Schema({ foo: String, nested: { bar: String } }); * const Model = mongoose.model('Test', schema); * await Model.create({ foo: 'original', nested: { bar: 'original' } }); @@ -1933,12 +2064,12 @@ Document.prototype.$ignore = function(path) { * doc.directModifiedPaths(); // ['nested.bar'] * doc.modifiedPaths(); // ['nested', 'nested.bar'] * - * @return {Array} + * @return {String[]} * @api public */ Document.prototype.directModifiedPaths = function() { - return Object.keys(this.$__.activePaths.states.modify); + return Object.keys(this.$__.activePaths.getStatePaths('modify')); }; /** @@ -1947,6 +2078,7 @@ Document.prototype.directModifiedPaths = function() { * [minimize option](/docs/guide.html#minimize). * * #### Example: + * * const schema = new Schema({ nested: { foo: String } }); * const Model = mongoose.model('Test', schema); * const doc = new Model({}); @@ -1957,6 +2089,7 @@ Document.prototype.directModifiedPaths = function() { * doc.$isEmpty('nested'); // false * doc.nested.$isEmpty(); // false * + * @param {String} [path] * @memberOf Document * @instance * @api public @@ -1989,6 +2122,10 @@ Document.prototype.$isEmpty = function(path) { return Object.keys(this.toObject(isEmptyOptions)).length === 0; }; +/*! + * ignore + */ + function _isEmpty(v) { if (v == null) { return true; @@ -2009,14 +2146,14 @@ function _isEmpty(v) { * * @param {Object} [options] * @param {Boolean} [options.includeChildren=false] if true, returns children of modified paths as well. For example, if false, the list of modified paths for `doc.colors = { primary: 'blue' };` will **not** contain `colors.primary`. If true, `modifiedPaths()` will return an array that contains `colors.primary`. - * @return {Array} + * @return {String[]} * @api public */ Document.prototype.modifiedPaths = function(options) { options = options || {}; - const directModifiedPaths = Object.keys(this.$__.activePaths.states.modify); + const directModifiedPaths = Object.keys(this.$__.activePaths.getStatePaths('modify')); const result = new Set(); let i = 0; @@ -2089,25 +2226,45 @@ Document.prototype[documentModifiedPaths] = Document.prototype.modifiedPaths; * doc.isDirectModified('documents') // false * * @param {String} [path] optional + * @param {Object} [options] + * @param {Boolean} [options.ignoreAtomics=false] If true, doesn't return true if path is underneath an array that was modified with atomic operations like `push()` * @return {Boolean} * @api public */ -Document.prototype.isModified = function(paths, modifiedPaths) { +Document.prototype.isModified = function(paths, options, modifiedPaths) { if (paths) { - const directModifiedPaths = Object.keys(this.$__.activePaths.states.modify); - if (directModifiedPaths.length === 0) { + const ignoreAtomics = options && options.ignoreAtomics; + const directModifiedPathsObj = this.$__.activePaths.states.modify; + if (directModifiedPathsObj == null) { return false; } - if (!Array.isArray(paths)) { + if (typeof paths === 'string') { paths = paths.indexOf(' ') === -1 ? [paths] : paths.split(' '); } + + for (const path of paths) { + if (directModifiedPathsObj[path] != null) { + return true; + } + } + const modified = modifiedPaths || this[documentModifiedPaths](); const isModifiedChild = paths.some(function(path) { return !!~modified.indexOf(path); }); + let directModifiedPaths = Object.keys(directModifiedPathsObj); + if (ignoreAtomics) { + directModifiedPaths = directModifiedPaths.filter(path => { + const value = this.$__getValue(path); + if (value != null && value[arrayAtomicsSymbol] != null && value[arrayAtomicsSymbol].$set === undefined) { + return false; + } + return true; + }); + } return isModifiedChild || paths.some(function(path) { return directModifiedPaths.some(function(mod) { return mod === path || path.startsWith(mod + '.'); @@ -2118,6 +2275,14 @@ Document.prototype.isModified = function(paths, modifiedPaths) { return this.$__.activePaths.some('modify'); }; +/** + * Alias of [`.isModified`](#document_Document-isModified) + * + * @method $isModified + * @memberOf Document + * @api public + */ + Document.prototype.$isModified = Document.prototype.isModified; Document.prototype[documentIsModified] = Document.prototype.isModified; @@ -2145,7 +2310,7 @@ Document.prototype.$isDefault = function(path) { } if (typeof path === 'string' && path.indexOf(' ') === -1) { - return this.$__.activePaths.states.default.hasOwnProperty(path); + return this.$__.activePaths.getStatePaths('default').hasOwnProperty(path); } let paths = path; @@ -2153,13 +2318,14 @@ Document.prototype.$isDefault = function(path) { paths = paths.split(' '); } - return paths.some(path => this.$__.activePaths.states.default.hasOwnProperty(path)); + return paths.some(path => this.$__.activePaths.getStatePaths('default').hasOwnProperty(path)); }; /** * Getter/setter, determines whether the document was removed or not. * * #### Example: + * * const product = await product.remove(); * product.$isDeleted(); // true * product.remove(); // no-op, doesn't send anything to the db @@ -2170,7 +2336,7 @@ Document.prototype.$isDefault = function(path) { * * * @param {Boolean} [val] optional, overrides whether mongoose thinks the doc is deleted - * @return {Boolean} whether mongoose thinks this doc is deleted. + * @return {Boolean|Document} whether mongoose thinks this doc is deleted. * @method $isDeleted * @memberOf Document * @instance @@ -2195,7 +2361,7 @@ Document.prototype.$isDeleted = function(val) { * doc.isDirectModified('documents.0.title') // true * doc.isDirectModified('documents') // false * - * @param {String|String[]} path + * @param {String|String[]} [path] * @return {Boolean} * @api public */ @@ -2206,7 +2372,7 @@ Document.prototype.isDirectModified = function(path) { } if (typeof path === 'string' && path.indexOf(' ') === -1) { - return this.$__.activePaths.states.modify.hasOwnProperty(path); + return this.$__.activePaths.getStatePaths('modify').hasOwnProperty(path); } let paths = path; @@ -2214,13 +2380,13 @@ Document.prototype.isDirectModified = function(path) { paths = paths.split(' '); } - return paths.some(path => this.$__.activePaths.states.modify.hasOwnProperty(path)); + return paths.some(path => this.$__.activePaths.getStatePaths('modify').hasOwnProperty(path)); }; /** * Checks if `path` is in the `init` state, that is, it was set by `Document#init()` and not modified since. * - * @param {String} path + * @param {String} [path] * @return {Boolean} * @api public */ @@ -2231,7 +2397,7 @@ Document.prototype.isInit = function(path) { } if (typeof path === 'string' && path.indexOf(' ') === -1) { - return this.$__.activePaths.states.init.hasOwnProperty(path); + return this.$__.activePaths.getStatePaths('init').hasOwnProperty(path); } let paths = path; @@ -2239,7 +2405,7 @@ Document.prototype.isInit = function(path) { paths = paths.split(' '); } - return paths.some(path => this.$__.activePaths.states.init.hasOwnProperty(path)); + return paths.some(path => this.$__.activePaths.getStatePaths('init').hasOwnProperty(path)); }; /** @@ -2404,7 +2570,7 @@ Document.prototype.isDirectSelected = function isDirectSelected(path) { * @param {Boolean} [options.validateModifiedOnly=false] if `true` mongoose validates only modified paths. * @param {Array|string} [options.pathsToSkip] list of paths to skip. If set, Mongoose will validate every modified path that is not in this list. * @param {Function} [callback] optional callback called after validation completes, passing an error if one occurred - * @return {Promise} Promise + * @return {Promise} Returns a Promise if no `callback` is given. * @api public */ @@ -2460,6 +2626,14 @@ Document.prototype.validate = function(pathsToValidate, options, callback) { }, this.constructor.events); }; +/** + * Alias of [`.validate`](#document_Document-validate) + * + * @method $validate + * @memberOf Document + * @api public + */ + Document.prototype.$validate = Document.prototype.validate; /*! @@ -2467,7 +2641,7 @@ Document.prototype.$validate = Document.prototype.validate; */ function _evaluateRequiredFunctions(doc) { - const requiredFields = Object.keys(doc.$__.activePaths.states.require); + const requiredFields = Object.keys(doc.$__.activePaths.getStatePaths('require')); let i = 0; const len = requiredFields.length; for (i = 0; i < len; ++i) { @@ -2491,11 +2665,11 @@ function _evaluateRequiredFunctions(doc) { */ function _getPathsToValidate(doc) { - const skipSchemaValidators = {}; + const doValidateOptions = {}; _evaluateRequiredFunctions(doc); // only validate required fields when necessary - let paths = new Set(Object.keys(doc.$__.activePaths.states.require).filter(function(path) { + let paths = new Set(Object.keys(doc.$__.activePaths.getStatePaths('require')).filter(function(path) { if (!doc.$__isSelected(path) && !doc.$isModified(path)) { return false; } @@ -2505,31 +2679,40 @@ function _getPathsToValidate(doc) { return true; })); - Object.keys(doc.$__.activePaths.states.init).forEach(addToPaths); - Object.keys(doc.$__.activePaths.states.modify).forEach(addToPaths); - Object.keys(doc.$__.activePaths.states.default).forEach(addToPaths); + Object.keys(doc.$__.activePaths.getStatePaths('init')).forEach(addToPaths); + Object.keys(doc.$__.activePaths.getStatePaths('modify')).forEach(addToPaths); + Object.keys(doc.$__.activePaths.getStatePaths('default')).forEach(addToPaths); function addToPaths(p) { paths.add(p); } const subdocs = doc.$getAllSubdocs(); const modifiedPaths = doc.modifiedPaths(); for (const subdoc of subdocs) { if (subdoc.$basePath) { - // Remove child paths for now, because we'll be validating the whole - // subdoc const fullPathToSubdoc = subdoc.$__fullPathWithIndexes(); - for (const p of paths) { - if (p == null || p.startsWith(fullPathToSubdoc + '.')) { - paths.delete(p); - } + // Remove child paths for now, because we'll be validating the whole + // subdoc. + // The following is a faster take on looping through every path in `paths` + // and checking if the path starts with `fullPathToSubdoc` re: gh-13191 + for (const modifiedPath of subdoc.modifiedPaths()) { + paths.delete(fullPathToSubdoc + '.' + modifiedPath); } - if (doc.$isModified(fullPathToSubdoc, modifiedPaths) && + if (doc.$isModified(fullPathToSubdoc, null, modifiedPaths) && !doc.isDirectModified(fullPathToSubdoc) && !doc.$isDefault(fullPathToSubdoc)) { paths.add(fullPathToSubdoc); + if (doc.$__.pathsToScopes == null) { + doc.$__.pathsToScopes = {}; + } + doc.$__.pathsToScopes[fullPathToSubdoc] = subdoc.$isDocumentArrayElement ? + subdoc.__parentArray : + subdoc.$parent(); - skipSchemaValidators[fullPathToSubdoc] = true; + doValidateOptions[fullPathToSubdoc] = { skipSchemaValidators: true }; + if (subdoc.$isDocumentArrayElement && subdoc.__index != null) { + doValidateOptions[fullPathToSubdoc].index = subdoc.__index; + } } } } @@ -2642,7 +2825,7 @@ function _getPathsToValidate(doc) { } paths = Array.from(paths); - return [paths, skipSchemaValidators]; + return [paths, doValidateOptions]; } /*! @@ -2713,7 +2896,7 @@ Document.prototype.$__validate = function(pathsToValidate, options, callback) { let paths = shouldValidateModifiedOnly ? pathDetails[0].filter((path) => this.$isModified(path)) : pathDetails[0]; - const skipSchemaValidators = pathDetails[1]; + const doValidateOptionsByPath = pathDetails[1]; if (typeof pathsToValidate === 'string') { pathsToValidate = pathsToValidate.split(' '); } @@ -2786,7 +2969,7 @@ Document.prototype.$__validate = function(pathsToValidate, options, callback) { _this; const doValidateOptions = { - skipSchemaValidators: skipSchemaValidators[path], + ...doValidateOptionsByPath[path], path: path, validateModifiedOnly: shouldValidateModifiedOnly }; @@ -2794,8 +2977,8 @@ Document.prototype.$__validate = function(pathsToValidate, options, callback) { schemaType.doValidate(val, function(err) { if (err) { const isSubdoc = schemaType.$isSingleNested || - schemaType.$isArraySubdocument || - schemaType.$isMongooseDocumentArray; + schemaType.$isArraySubdocument || + schemaType.$isMongooseDocumentArray; if (isSubdoc && err instanceof ValidationError) { return --total || complete(); } @@ -2854,6 +3037,7 @@ function _handlePathsToValidate(paths, pathsToValidate) { /*! * ignore */ + function _handlePathsToSkip(paths, pathsToSkip) { pathsToSkip = new Set(pathsToSkip); paths = paths.filter(p => !pathsToSkip.has(p)); @@ -2876,7 +3060,7 @@ function _handlePathsToSkip(paths, pathsToSkip) { * // validation passed * } * - * @param {Array|string} pathsToValidate only validate the given paths + * @param {Array|string} [pathsToValidate] only validate the given paths * @param {Object} [options] options for validation * @param {Boolean} [options.validateModifiedOnly=false] If `true`, Mongoose will only validate modified paths, as opposed to modified paths and `required` paths. * @param {Array|string} [options.pathsToSkip] list of paths to skip. If set, Mongoose will validate every modified path that is not in this list. @@ -2985,7 +3169,7 @@ Document.prototype.validateSync = function(pathsToValidate, options) { * The `value` argument (if passed) will be available through the `ValidationError.value` property. * * doc.invalidate('size', 'must be less than 20', 14); - + * * doc.validate(function (err) { * console.log(err) * // prints @@ -3001,8 +3185,8 @@ Document.prototype.validateSync = function(pathsToValidate, options) { * }) * * @param {String} path the field to invalidate. For array elements, use the `array.i.field` syntax, where `i` is the 0-based index in the array. - * @param {String|Error} errorMsg the error which states the reason `path` was invalid - * @param {Object|String|Number|any} value optional invalid value + * @param {String|Error} err the error which states the reason `path` was invalid + * @param {Object|String|Number|any} val optional invalid value * @param {String} [kind] optional `kind` property for the error * @return {ValidationError} the current ValidationError, with all currently invalidated paths * @api public @@ -3099,8 +3283,8 @@ function _checkImmutableSubpaths(subdoc, schematype, priorVal) { } /** - * Saves this document by inserting a new document into the database if [document.isNew](/docs/api.html#document_Document-isNew) is `true`, - * or sends an [updateOne](/docs/api.html#document_Document-updateOne) operation **only** with the modifications to the database, it does not replace the whole document in the latter case. + * Saves this document by inserting a new document into the database if [document.isNew](#document_Document-isNew) is `true`, + * or sends an [updateOne](#document_Document-updateOne) operation **only** with the modifications to the database, it does not replace the whole document in the latter case. * * #### Example: * @@ -3116,20 +3300,20 @@ function _checkImmutableSubpaths(subdoc, schematype, priorVal) { * newProduct === product; // true * * @param {Object} [options] options optional options - * @param {Session} [options.session=null] the [session](https://docs.mongodb.com/manual/reference/server-sessions/) associated with this save operation. If not specified, defaults to the [document's associated session](api.html#document_Document-$session). + * @param {Session} [options.session=null] the [session](https://www.mongodb.com/docs/manual/reference/server-sessions/) associated with this save operation. If not specified, defaults to the [document's associated session](#document_Document-$session). * @param {Object} [options.safe] (DEPRECATED) overrides [schema's safe option](https://mongoosejs.com//docs/guide.html#safe). Use the `w` option instead. * @param {Boolean} [options.validateBeforeSave] set to false to save without validating. * @param {Boolean} [options.validateModifiedOnly=false] If `true`, Mongoose will only validate modified paths, as opposed to modified paths and `required` paths. - * @param {Number|String} [options.w] set the [write concern](https://docs.mongodb.com/manual/reference/write-concern/#w-option). Overrides the [schema-level `writeConcern` option](/docs/guide.html#writeConcern) - * @param {Boolean} [options.j] set to true for MongoDB to wait until this `save()` has been [journaled before resolving the returned promise](https://docs.mongodb.com/manual/reference/write-concern/#j-option). Overrides the [schema-level `writeConcern` option](/docs/guide.html#writeConcern) - * @param {Number} [options.wtimeout] sets a [timeout for the write concern](https://docs.mongodb.com/manual/reference/write-concern/#wtimeout). Overrides the [schema-level `writeConcern` option](/docs/guide.html#writeConcern). - * @param {Boolean} [options.checkKeys=true] the MongoDB driver prevents you from saving keys that start with '$' or contain '.' by default. Set this option to `false` to skip that check. See [restrictions on field names](https://docs.mongodb.com/manual/reference/limits/#Restrictions-on-Field-Names) - * @param {Boolean} [options.timestamps=true] if `false` and [timestamps](./guide.html#timestamps) are enabled, skip timestamps for this `save()`. + * @param {Number|String} [options.w] set the [write concern](https://www.mongodb.com/docs/manual/reference/write-concern/#w-option). Overrides the [schema-level `writeConcern` option](/docs/guide.html#writeConcern) + * @param {Boolean} [options.j] set to true for MongoDB to wait until this `save()` has been [journaled before resolving the returned promise](https://www.mongodb.com/docs/manual/reference/write-concern/#j-option). Overrides the [schema-level `writeConcern` option](/docs/guide.html#writeConcern) + * @param {Number} [options.wtimeout] sets a [timeout for the write concern](https://www.mongodb.com/docs/manual/reference/write-concern/#wtimeout). Overrides the [schema-level `writeConcern` option](/docs/guide.html#writeConcern). + * @param {Boolean} [options.checkKeys=true] the MongoDB driver prevents you from saving keys that start with '$' or contain '.' by default. Set this option to `false` to skip that check. See [restrictions on field names](https://www.mongodb.com/docs/manual/reference/limits/#Restrictions-on-Field-Names) + * @param {Boolean} [options.timestamps=true] if `false` and [timestamps](/docs/guide.html#timestamps) are enabled, skip timestamps for this `save()`. * @param {Function} [fn] optional callback * @method save * @memberOf Document * @instance - * @throws {DocumentNotFoundError} if this [save updates an existing document](api.html#document_Document-isNew) but the document doesn't exist in the database. For example, you will get this error if the document is [deleted between when you retrieved the document and when you saved it](documents.html#updating). + * @throws {DocumentNotFoundError} if this [save updates an existing document](#document_Document-isNew) but the document doesn't exist in the database. For example, you will get this error if the document is [deleted between when you retrieved the document and when you saved it](documents.html#updating). * @return {Promise|undefined} Returns undefined if used with callback or a Promise otherwise. * @api public * @see middleware https://mongoosejs.com/docs/middleware.html @@ -3138,7 +3322,7 @@ function _checkImmutableSubpaths(subdoc, schematype, priorVal) { /** * Checks if a path is invalid * - * @param {String|String[]} path the field to check + * @param {String|String[]} [path] the field to check. If unset will always return "false" * @method $isValid * @memberOf Document * @instance @@ -3167,7 +3351,7 @@ Document.prototype.$isValid = function(path) { * Resets the internal modified state of this document. * * @api private - * @return {Document} + * @return {Document} this * @method $__reset * @memberOf Document * @instance @@ -3193,12 +3377,13 @@ Document.prototype.$__reset = function reset() { resetArrays.add(array); } } else { - if (subdoc.$parent() === this) { + const parent = subdoc.$parent(); + if (parent === this) { this.$__.activePaths.clearPath(subdoc.$basePath); - } else if (subdoc.$parent() != null && subdoc.$parent().$isSubdocument) { + } else if (parent != null && parent.$isSubdocument) { // If map path underneath subdocument, may end up with a case where // map path is modified but parent still needs to be reset. See gh-10295 - subdoc.$parent().$__reset(); + parent.$__reset(); } } } @@ -3229,8 +3414,8 @@ Document.prototype.$__reset = function reset() { this.$__.backup = {}; this.$__.backup.activePaths = { - modify: Object.assign({}, this.$__.activePaths.states.modify), - default: Object.assign({}, this.$__.activePaths.states.default) + modify: Object.assign({}, this.$__.activePaths.getStatePaths('modify')), + default: Object.assign({}, this.$__.activePaths.getStatePaths('default')) }; this.$__.backup.validationError = this.$__.validationError; this.$__.backup.errors = this.$errors; @@ -3279,6 +3464,7 @@ Document.prototype.$__undoReset = function $__undoReset() { /** * Returns this documents dirty paths / vals. * + * @return {Array} * @api private * @method $__dirty * @memberOf Document @@ -3294,6 +3480,7 @@ Document.prototype.$__dirty = function() { schema: _this.$__path(path) }; }); + // gh-2558: if we had to set a default and the value is not undefined, // we have to save as well all = all.concat(this.$__.activePaths.map('default', function(path) { @@ -3369,6 +3556,7 @@ Document.prototype.$__setSchema = function(schema) { /** * Get active path that were changed and are arrays * + * @return {Array} * @api private * @method $__getArrayPathsToValidate * @memberOf Document @@ -3397,6 +3585,7 @@ Document.prototype.$__getArrayPathsToValidate = function() { /** * Get all subdocs (by bfs) * + * @return {Array} * @api public * @method $getAllSubdocs * @memberOf Document @@ -3492,6 +3681,7 @@ Document.prototype.$__handleReject = function handleReject(err) { /** * Internal helper for toObject() and toJSON() that doesn't manipulate options * + * @return {Object} * @api private * @method $toObject * @memberOf Document @@ -3571,10 +3761,10 @@ Document.prototype.$toObject = function(options, json) { options.minimize = _minimize; cloneOptions._parentOptions = options; - cloneOptions._skipSingleNestedGetters = true; + cloneOptions._skipSingleNestedGetters = false; const gettersOptions = Object.assign({}, cloneOptions); - gettersOptions._skipSingleNestedGetters = false; + gettersOptions._skipSingleNestedGetters = true; // remember the root transform function // to save it from being overwritten by sub-transform functions @@ -3636,19 +3826,7 @@ Document.prototype.$toObject = function(options, json) { /** * Converts this document into a plain-old JavaScript object ([POJO](https://masteringjs.io/tutorials/fundamentals/pojo)). * - * Buffers are converted to instances of [mongodb.Binary](https://mongodb.github.com/node-mongodb-native/api-bson-generated/binary.html) for proper storage. - * - * #### Options: - * - * - `getters` apply all getters (path and virtual getters), defaults to false - * - `aliases` apply all aliases if `virtuals=true`, defaults to true - * - `virtuals` apply virtual getters (can override `getters` option), defaults to false - * - `minimize` remove empty objects, defaults to true - * - `transform` a transform function to apply to the resulting document before returning - * - `depopulate` depopulate any populated paths, replacing them with their original refs, defaults to false - * - `versionKey` whether to include the version key, defaults to true - * - `flattenMaps` convert Maps to POJOs. Useful if you want to JSON.stringify() the result of toObject(), defaults to false - * - `useProjection` set to `true` to omit fields that are excluded in this document's projection. Unless you specified a projection, this will omit any field that has `select: false` in the schema. + * Buffers are converted to instances of [mongodb.Binary](https://mongodb.github.io/node-mongodb-native/4.9/classes/Binary.html) for proper storage. * * #### Getters/Virtuals * @@ -3774,8 +3952,8 @@ Document.prototype.$toObject = function(options, json) { * @param {Boolean} [options.versionKey=true] if false, exclude the version key (`__v` by default) from the output * @param {Boolean} [options.flattenMaps=false] if true, convert Maps to POJOs. Useful if you want to `JSON.stringify()` the result of `toObject()`. * @param {Boolean} [options.useProjection=false] - If true, omits fields that are excluded in this document's projection. Unless you specified a projection, this will omit any field that has `select: false` in the schema. - * @return {Object} js object - * @see mongodb.Binary https://mongodb.github.com/node-mongodb-native/api-bson-generated/binary.html + * @return {Object} js object (not a POJO) + * @see mongodb.Binary https://mongodb.github.io/node-mongodb-native/4.9/classes/Binary.html * @api public * @memberOf Document * @instance @@ -3785,11 +3963,12 @@ Document.prototype.toObject = function(options) { return this.$toObject(options); }; -/*! +/** * Minimizes an object, removing undefined values and empty objects * * @param {Object} object to minimize * @return {Object} + * @api private */ function minimize(obj) { @@ -3837,11 +4016,11 @@ function applyVirtuals(self, json, options, toObjectOptions) { ? toObjectOptions.aliases : true; + options = options || {}; let virtualsToApply = null; if (Array.isArray(options.virtuals)) { virtualsToApply = new Set(options.virtuals); - } - else if (options.virtuals && options.virtuals.pathsToSkip) { + } else if (options.virtuals && options.virtuals.pathsToSkip) { virtualsToApply = new Set(paths); for (let i = 0; i < options.virtuals.pathsToSkip.length; i++) { if (virtualsToApply.has(options.virtuals.pathsToSkip[i])) { @@ -3854,7 +4033,6 @@ function applyVirtuals(self, json, options, toObjectOptions) { return json; } - options = options || {}; for (i = 0; i < numPaths; ++i) { path = paths[i]; @@ -3895,12 +4073,14 @@ function applyVirtuals(self, json, options, toObjectOptions) { } -/*! +/** * Applies virtuals properties to `json`. * * @param {Document} self * @param {Object} json + * @param {Object} [options] * @return {Object} `json` + * @api private */ function applyGetters(self, json, options) { @@ -3919,6 +4099,7 @@ function applyGetters(self, json, options) { path = paths[i]; const parts = path.split('.'); + const plen = parts.length; const last = plen - 1; let branch = json; @@ -3932,7 +4113,12 @@ function applyGetters(self, json, options) { for (let ii = 0; ii < plen; ++ii) { part = parts[ii]; v = cur[part]; - if (ii === last) { + // If we've reached a non-object part of the branch, continuing would + // cause "Cannot create property 'foo' on string 'bar'" error. + // Necessary for mongoose-intl plugin re: gh-14446 + if (branch != null && typeof branch !== 'object') { + break; + } else if (ii === last) { const val = self.$get(path); branch[part] = clone(val, options); } else if (v == null) { @@ -3950,12 +4136,13 @@ function applyGetters(self, json, options) { return json; } -/*! +/** * Applies schema type transforms to `json`. * * @param {Document} self * @param {Object} json * @return {Object} `json` + * @api private */ function applySchemaTypeTransforms(self, json) { @@ -4072,6 +4259,7 @@ Document.prototype.ownerDocument = function() { * If this document is a subdocument or populated document, returns the document's * parent. Returns the original document if there is no parent. * + * @return {Document} * @api public * @method parent * @memberOf Document @@ -4086,9 +4274,10 @@ Document.prototype.parent = function() { }; /** - * Alias for `parent()`. If this document is a subdocument or populated + * Alias for [`parent()`](#document_Document-parent). If this document is a subdocument or populated * document, returns the document's parent. Returns `undefined` otherwise. * + * @return {Document} * @api public * @method $parent * @memberOf Document @@ -4100,6 +4289,7 @@ Document.prototype.$parent = Document.prototype.parent; /** * Helper for console.log * + * @return {String} * @api public * @method inspect * @memberOf Document @@ -4125,16 +4315,14 @@ Document.prototype.inspect = function(options) { }; if (inspect.custom) { - /*! - * Avoid Node deprecation warning DEP0079 - */ - + // Avoid Node deprecation warning DEP0079 Document.prototype[inspect.custom] = Document.prototype.inspect; } /** * Helper for console.log * + * @return {String} * @api public * @method toString * @memberOf Document @@ -4156,7 +4344,7 @@ Document.prototype.toString = function() { * document has an `_id`, in which case this function falls back to using * `deepEqual()`. * - * @param {Document} doc a document to compare + * @param {Document} [doc] a document to compare. If falsy, will always return "false". * @return {Boolean} * @api public * @memberOf Document @@ -4183,6 +4371,7 @@ Document.prototype.equals = function(doc) { * * #### Example: * + * // Given a document, `populate()` lets you pull in referenced docs * await doc.populate([ * 'stories', * { path: 'fans', sort: { name: -1 } } @@ -4191,12 +4380,15 @@ Document.prototype.equals = function(doc) { * doc.stories[0].title; // 'Casino Royale' * doc.populated('fans'); // Array of ObjectIds * - * await doc.populate('fans', '-email'); - * doc.fans[0].email // not populated + * // If the referenced doc has been deleted, `populate()` will + * // remove that entry from the array. + * await Story.delete({ title: 'Casino Royale' }); + * await doc.populate('stories'); // Empty array * - * await doc.populate('author fans', '-email'); - * doc.author.email // not populated - * doc.fans[0].email // not populated + * // You can also pass additional query options to `populate()`, + * // like projections: + * await doc.populate('fans', '-email'); + * doc.fans[0].email // undefined because of 2nd param `select` * * @param {String|Object|Array} path either the path to populate or an object specifying all parameters, or either an array of those * @param {Object|String} [select] Field selection for the population query @@ -4208,16 +4400,16 @@ Document.prototype.equals = function(doc) { * @param {boolean} [options.retainNullValues=false] by default, Mongoose removes null and undefined values from populated arrays. Use this option to make `populate()` retain `null` and `undefined` array entries. * @param {boolean} [options.getters=false] if true, Mongoose will call any getters defined on the `localField`. By default, Mongoose gets the raw value of `localField`. For example, you would need to set this option to `true` if you wanted to [add a `lowercase` getter to your `localField`](/docs/schematypes.html#schematype-options). * @param {boolean} [options.clone=false] When you do `BlogPost.find().populate('author')`, blog posts with the same author will share 1 copy of an `author` doc. Enable this option to make Mongoose clone populated docs before assigning them. - * @param {Object|Function} [options.match=null] Add an additional filter to the populate query. Can be a filter object containing [MongoDB query syntax](https://docs.mongodb.com/manual/tutorial/query-documents/), or a function that returns a filter object. + * @param {Object|Function} [options.match=null] Add an additional filter to the populate query. Can be a filter object containing [MongoDB query syntax](https://www.mongodb.com/docs/manual/tutorial/query-documents/), or a function that returns a filter object. * @param {Function} [options.transform=null] Function that Mongoose will call on every populated document that allows you to transform the populated document. * @param {Object} [options.options=null] Additional options like `limit` and `lean`. * @param {Function} [callback] Callback - * @see population ./populate.html + * @see population /docs/populate.html * @see Query#select #query_Query-select - * @see Model.populate #model_Model.populate + * @see Model.populate #model_Model-populate * @memberOf Document * @instance - * @return {Promise|null} + * @return {Promise|null} Returns a Promise if no `callback` is given. * @api public */ @@ -4274,7 +4466,7 @@ Document.prototype.populate = function populate() { * Gets all populated documents associated with this document. * * @api public - * @return {Array} array of populated documents. Empty array if there are no populated documents associated with this document. + * @return {Document[]} array of populated documents. Empty array if there are no populated documents associated with this document. * @memberOf Document * @method $getPopulatedDocs * @instance @@ -4310,6 +4502,8 @@ Document.prototype.$getPopulatedDocs = function $getPopulatedDocs() { * If the path was not populated, returns `undefined`. * * @param {String} path + * @param {Any} [val] + * @param {Object} [options] * @return {Array|ObjectId|Number|Buffer|String|undefined} * @memberOf Document * @instance @@ -4357,6 +4551,14 @@ Document.prototype.populated = function(path, val, options) { return val; }; +/** + * Alias of [`.populated`](#document_Document-populated). + * + * @method $populated + * @memberOf Document + * @api public + */ + Document.prototype.$populated = Document.prototype.populated; /** @@ -4369,8 +4571,13 @@ Document.prototype.$populated = Document.prototype.populated; * doc.$assertPopulated('author'); // does not throw * doc.$assertPopulated('other path'); // throws an error * + * // Manually populate and assert in one call. The following does + * // `doc.$set({ likes })` before asserting. + * doc.$assertPopulated('likes', { likes }); * - * @param {String|String[]} path + * + * @param {String|String[]} path path or array of paths to check. `$assertPopulated` throws if any of the given paths is not populated. + * @param {Object} [values] optional values to `$set()`. Convenient if you want to manually populate a path and assert that the path was populated in 1 call. * @return {Document} this * @memberOf Document * @method $assertPopulated @@ -4378,14 +4585,18 @@ Document.prototype.$populated = Document.prototype.populated; * @api public */ -Document.prototype.$assertPopulated = function $assertPopulated(paths) { - if (Array.isArray(paths)) { - paths.forEach(path => this.$assertPopulated(path)); +Document.prototype.$assertPopulated = function $assertPopulated(path, values) { + if (Array.isArray(path)) { + path.forEach(p => this.$assertPopulated(p, values)); return this; } - if (!this.$populated(paths)) { - throw new MongooseError(`Expected path "${paths}" to be populated`); + if (arguments.length > 1) { + this.$set(values); + } + + if (!this.$populated(path)) { + throw new MongooseError(`Expected path "${path}" to be populated`); } return this; @@ -4404,7 +4615,7 @@ Document.prototype.$assertPopulated = function $assertPopulated(paths) { * * If the path was not provided, then all populated fields are returned to their unpopulated state. * - * @param {String} path + * @param {String|String[]} [path] Specific Path to depopulate. If unset, will depopulate all paths on the Document. Or multiple space-delimited paths. * @return {Document} this * @see Document.populate #document_Document-populate * @api public @@ -4520,6 +4731,38 @@ Document.prototype.getChanges = function() { return changes; }; +/** + * Returns a copy of this document with a deep clone of `_doc` and `$__`. + * + * @return {Document} a copy of this document + * @api public + * @method $clone + * @memberOf Document + * @instance + */ + +Document.prototype.$clone = function() { + const Model = this.constructor; + const clonedDoc = new Model(); + clonedDoc.$isNew = this.$isNew; + if (this._doc) { + clonedDoc._doc = clone(this._doc); + } + if (this.$__) { + const Cache = this.$__.constructor; + const clonedCache = new Cache(); + for (const key of Object.getOwnPropertyNames(this.$__)) { + if (key === 'activePaths') { + continue; + } + clonedCache[key] = clone(this.$__[key]); + } + Object.assign(clonedCache.activePaths, clone({ ...this.$__.activePaths })); + clonedDoc.$__ = clonedCache; + } + return clonedDoc; +}; + /*! * Module exports. */ diff --git a/food-ordering-app/server/node_modules/mongoose/lib/drivers/browser/objectid.js b/food-ordering-app/server/node_modules/mongoose/lib/drivers/browser/objectid.js index b1e603d71..d847afe3b 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/drivers/browser/objectid.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/drivers/browser/objectid.js @@ -9,8 +9,9 @@ const ObjectId = require('bson').ObjectID; -/*! +/** * Getter for convenience with populate, see gh-6115 + * @api private */ Object.defineProperty(ObjectId.prototype, '_id', { diff --git a/food-ordering-app/server/node_modules/mongoose/lib/drivers/node-mongodb-native/ReadPreference.js b/food-ordering-app/server/node_modules/mongoose/lib/drivers/node-mongodb-native/ReadPreference.js index 024ee181a..bb999ebd6 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/drivers/node-mongodb-native/ReadPreference.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/drivers/node-mongodb-native/ReadPreference.js @@ -7,7 +7,7 @@ const mongodb = require('mongodb'); const ReadPref = mongodb.ReadPreference; -/*! +/** * Converts arguments to ReadPrefs the driver * can understand. * diff --git a/food-ordering-app/server/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js b/food-ordering-app/server/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js index b390fa1f3..8f8745425 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js @@ -17,7 +17,7 @@ const util = require('util'); * * All methods methods from the [node-mongodb-native](https://github.com/mongodb/node-mongodb-native) driver are copied and wrapped in queue management. * - * @inherits Collection + * @inherits Collection https://mongodb.github.io/node-mongodb-native/4.9/classes/Collection.html * @api private */ @@ -34,7 +34,7 @@ function NativeCollection(name, conn, options) { * Inherit from abstract Collection. */ -NativeCollection.prototype.__proto__ = MongooseCollection.prototype; +Object.setPrototypeOf(NativeCollection.prototype, MongooseCollection.prototype); /** * Called when the connection opens. @@ -43,11 +43,9 @@ NativeCollection.prototype.__proto__ = MongooseCollection.prototype; */ NativeCollection.prototype.onOpen = function() { - const _this = this; - - _this.collection = _this.conn.db.collection(_this.name); - MongooseCollection.prototype.onOpen.call(_this); - return _this.collection; + this.collection = this.conn.db.collection(this.name); + MongooseCollection.prototype.onOpen.call(this); + return this.collection; }; /** @@ -60,26 +58,52 @@ NativeCollection.prototype.onClose = function(force) { MongooseCollection.prototype.onClose.call(this, force); }; +/** + * Helper to get the collection, in case `this.collection` isn't set yet. + * May happen if `bufferCommands` is false and created the model when + * Mongoose was disconnected. + * + * @api private + */ + +NativeCollection.prototype._getCollection = function _getCollection() { + if (this.collection) { + return this.collection; + } + if (this.conn.db != null) { + this.collection = this.conn.db.collection(this.name); + return this.collection; + } + return null; +}; + /*! * ignore */ const syncCollectionMethods = { watch: true, find: true, aggregate: true }; -/*! +/** * Copy the collection methods and make them subject to queues + * @param {Number|String} I + * @api private */ function iter(i) { NativeCollection.prototype[i] = function() { - const collection = this.collection; + const collection = this._getCollection(); const args = Array.from(arguments); const _this = this; - const debug = _this && + const globalDebug = _this && _this.conn && _this.conn.base && _this.conn.base.options && _this.conn.base.options.debug; + const connectionDebug = _this && + _this.conn && + _this.conn.options && + _this.conn.options.debug; + const debug = connectionDebug == null ? globalDebug : connectionDebug; const lastArg = arguments[arguments.length - 1]; const opId = new ObjectId(); @@ -114,10 +138,23 @@ function iter(i) { let _args = args; let promise = null; let timeout = null; - if (syncCollectionMethods[i]) { - this.addQueue(() => { - lastArg.call(this, null, this[i].apply(this, _args.slice(0, _args.length - 1))); - }, []); + if (syncCollectionMethods[i] && typeof lastArg === 'function') { + this.addQueue(i, _args); + callback = lastArg; + } else if (syncCollectionMethods[i]) { + promise = new this.Promise((resolve, reject) => { + callback = function collectionOperationCallback(err, res) { + if (timeout != null) { + clearTimeout(timeout); + } + if (err != null) { + return reject(err); + } + resolve(res); + }; + _args = args.concat([callback]); + this.addQueue(i, _args); + }); } else if (typeof lastArg === 'function') { callback = function collectionOperationCallback() { if (timeout != null) { @@ -174,8 +211,14 @@ function iter(i) { if (debug) { if (typeof debug === 'function') { + let argsToAdd = null; + if (typeof args[args.length - 1] == 'function') { + argsToAdd = args.slice(0, args.length - 1); + } else { + argsToAdd = args; + } debug.apply(_this, - [_this.name, i].concat(args.slice(0, args.length - 1))); + [_this.name, i].concat(argsToAdd)); } else if (debug instanceof stream.Writable) { this.$printToStream(_this.name, i, args, debug); } else { @@ -296,8 +339,10 @@ NativeCollection.prototype.$format = function(arg, color, shell) { return format(arg, false, color, shell); }; -/*! +/** * Debug print helper + * @param {Any} representation + * @api private */ function inspectable(representation) { diff --git a/food-ordering-app/server/node_modules/mongoose/lib/drivers/node-mongodb-native/connection.js b/food-ordering-app/server/node_modules/mongoose/lib/drivers/node-mongodb-native/connection.js index 1adad7cd8..5c6976d92 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/drivers/node-mongodb-native/connection.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/drivers/node-mongodb-native/connection.js @@ -32,7 +32,7 @@ NativeConnection.STATES = STATES; * Inherits from Connection. */ -NativeConnection.prototype.__proto__ = MongooseConnection.prototype; +Object.setPrototypeOf(NativeConnection.prototype, MongooseConnection.prototype); /** * Switches to a different database using the same connection pool. diff --git a/food-ordering-app/server/node_modules/mongoose/lib/error/browserMissingSchema.js b/food-ordering-app/server/node_modules/mongoose/lib/error/browserMissingSchema.js index fe492d53c..3f271499d 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/error/browserMissingSchema.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/error/browserMissingSchema.js @@ -8,7 +8,7 @@ const MongooseError = require('./'); class MissingSchemaError extends MongooseError { - /*! + /** * MissingSchema Error constructor. */ constructor() { diff --git a/food-ordering-app/server/node_modules/mongoose/lib/error/bulkWriteError.js b/food-ordering-app/server/node_modules/mongoose/lib/error/bulkWriteError.js new file mode 100644 index 000000000..1711b03b5 --- /dev/null +++ b/food-ordering-app/server/node_modules/mongoose/lib/error/bulkWriteError.js @@ -0,0 +1,41 @@ +/*! + * Module dependencies. + */ + +'use strict'; + +const MongooseError = require('./'); + + +/** + * If `bulkWrite()` or `insertMany()` has validation errors, but + * all valid operations succeed, and 'throwOnValidationError' is true, + * Mongoose will throw this error. + * + * @api private + */ + +class MongooseBulkWriteError extends MongooseError { + constructor(validationErrors, results, rawResult, operation) { + let preview = validationErrors.map(e => e.message).join(', '); + if (preview.length > 200) { + preview = preview.slice(0, 200) + '...'; + } + super(`${operation} failed with ${validationErrors.length} Mongoose validation errors: ${preview}`); + + this.validationErrors = validationErrors; + this.results = results; + this.rawResult = rawResult; + this.operation = operation; + } +} + +Object.defineProperty(MongooseBulkWriteError.prototype, 'name', { + value: 'MongooseBulkWriteError' +}); + +/*! + * exports + */ + +module.exports = MongooseBulkWriteError; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/error/cast.js b/food-ordering-app/server/node_modules/mongoose/lib/error/cast.js index d3eb0ec32..c42e82166 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/error/cast.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/error/cast.js @@ -56,9 +56,10 @@ class CastError extends MongooseError { this.valueType = getValueType(value); } - /*! + /** * ignore * @param {Readonly} other + * @api private */ copy(other) { this.messageFormat = other.messageFormat; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/error/divergentArray.js b/food-ordering-app/server/node_modules/mongoose/lib/error/divergentArray.js index ed86caf17..7a8d1da5d 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/error/divergentArray.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/error/divergentArray.js @@ -8,9 +8,10 @@ const MongooseError = require('./'); class DivergentArrayError extends MongooseError { - /*! + /** * DivergentArrayError constructor. * @param {Array} paths + * @api private */ constructor(paths) { const msg = 'For your own good, using `document.save()` to update an array ' diff --git a/food-ordering-app/server/node_modules/mongoose/lib/error/index.js b/food-ordering-app/server/node_modules/mongoose/lib/error/index.js index 51d19fa5b..d2a93849f 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/error/index.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/error/index.js @@ -5,6 +5,7 @@ * Mongoose-specific errors. * * #### Example: + * * const Model = mongoose.model('Test', new mongoose.Schema({ answer: Number })); * const doc = new Model({ answer: 'not a number' }); * const err = doc.validateSync(); @@ -24,19 +25,19 @@ const MongooseError = require('./mongooseError'); * * - `MongooseError`: general Mongoose error * - `CastError`: Mongoose could not convert a value to the type defined in the schema path. May be in a `ValidationError` class' `errors` property. - * - `DisconnectedError`: This [connection](connections.html) timed out in trying to reconnect to MongoDB and will not successfully reconnect to MongoDB unless you explicitly reconnect. + * - `DisconnectedError`: This [connection](/docs/connections.html) timed out in trying to reconnect to MongoDB and will not successfully reconnect to MongoDB unless you explicitly reconnect. * - `DivergentArrayError`: You attempted to `save()` an array that was modified after you loaded it with a `$elemMatch` or similar projection - * - `MissingSchemaError`: You tried to access a model with [`mongoose.model()`](api.html#mongoose_Mongoose-model) that was not defined - * - `DocumentNotFoundError`: The document you tried to [`save()`](api.html#document_Document-save) was not found + * - `MissingSchemaError`: You tried to access a model with [`mongoose.model()`](mongoose.html#mongoose_Mongoose-model) that was not defined + * - `DocumentNotFoundError`: The document you tried to [`save()`](document.html#document_Document-save) was not found * - `ValidatorError`: error from an individual schema path's validator - * - `ValidationError`: error returned from [`validate()`](api.html#document_Document-validate) or [`validateSync()`](api.html#document_Document-validateSync). Contains zero or more `ValidatorError` instances in `.errors` property. + * - `ValidationError`: error returned from [`validate()`](document.html#document_Document-validate) or [`validateSync()`](document.html#document_Document-validateSync). Contains zero or more `ValidatorError` instances in `.errors` property. * - `MissingSchemaError`: You called `mongoose.Document()` without a schema - * - `ObjectExpectedError`: Thrown when you set a nested path to a non-object value with [strict mode set](guide.html#strict). + * - `ObjectExpectedError`: Thrown when you set a nested path to a non-object value with [strict mode set](/docs/guide.html#strict). * - `ObjectParameterError`: Thrown when you pass a non-object value to a function which expects an object as a paramter - * - `OverwriteModelError`: Thrown when you call [`mongoose.model()`](api.html#mongoose_Mongoose-model) to re-define a model that was already defined. - * - `ParallelSaveError`: Thrown when you call [`save()`](api.html#model_Model-save) on a document when the same document instance is already saving. - * - `StrictModeError`: Thrown when you set a path that isn't the schema and [strict mode](guide.html#strict) is set to `throw`. - * - `VersionError`: Thrown when the [document is out of sync](guide.html#versionKey) + * - `OverwriteModelError`: Thrown when you call [`mongoose.model()`](mongoose.html#mongoose_Mongoose-model) to re-define a model that was already defined. + * - `ParallelSaveError`: Thrown when you call [`save()`](model.html#model_Model-save) on a document when the same document instance is already saving. + * - `StrictModeError`: Thrown when you set a path that isn't the schema and [strict mode](/docs/guide.html#strict) is set to `throw`. + * - `VersionError`: Thrown when the [document is out of sync](/docs/guide.html#versionKey) * * @api public * @property {String} name @@ -204,7 +205,7 @@ MongooseError.MongooseServerSelectionError = require('./serverSelection'); MongooseError.DivergentArrayError = require('./divergentArray'); /** - * Thrown when your try to pass values to model contrtuctor that + * Thrown when your try to pass values to model constructor that * were not specified in schema or change immutable properties when * `strict` mode is `"throw"` * @@ -214,3 +215,14 @@ MongooseError.DivergentArrayError = require('./divergentArray'); */ MongooseError.StrictModeError = require('./strict'); + +/** + * An instance of this error class will be returned when mongoose failed to + * populate with a path that is not existing. + * + * @api public + * @memberOf Error + * @static + */ + +MongooseError.StrictPopulateError = require('./strictPopulate'); diff --git a/food-ordering-app/server/node_modules/mongoose/lib/error/missingSchema.js b/food-ordering-app/server/node_modules/mongoose/lib/error/missingSchema.js index ca306b7e6..50c81054a 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/error/missingSchema.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/error/missingSchema.js @@ -8,9 +8,10 @@ const MongooseError = require('./'); class MissingSchemaError extends MongooseError { - /*! + /** * MissingSchema Error constructor. * @param {String} name + * @api private */ constructor(name) { const msg = 'Schema hasn\'t been registered for model "' + name + '".\n' diff --git a/food-ordering-app/server/node_modules/mongoose/lib/error/notFound.js b/food-ordering-app/server/node_modules/mongoose/lib/error/notFound.js index 0e8386b8a..e1064bb89 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/error/notFound.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/error/notFound.js @@ -8,8 +8,9 @@ const MongooseError = require('./'); const util = require('util'); class DocumentNotFoundError extends MongooseError { - /*! + /** * OverwriteModel Error constructor. + * @api private */ constructor(filter, model, numAffected, result) { let msg; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/error/objectParameter.js b/food-ordering-app/server/node_modules/mongoose/lib/error/objectParameter.js index 5881a481a..295582e24 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/error/objectParameter.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/error/objectParameter.js @@ -18,7 +18,7 @@ class ObjectParameterError extends MongooseError { */ constructor(value, paramName, fnName) { super('Parameter "' + paramName + '" to ' + fnName + - '() must be an object, got ' + value.toString()); + '() must be an object, got "' + value.toString() + '" (type ' + typeof value + ')'); } } diff --git a/food-ordering-app/server/node_modules/mongoose/lib/error/overwriteModel.js b/food-ordering-app/server/node_modules/mongoose/lib/error/overwriteModel.js index d509e1955..1ff180b04 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/error/overwriteModel.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/error/overwriteModel.js @@ -9,9 +9,10 @@ const MongooseError = require('./'); class OverwriteModelError extends MongooseError { - /*! + /** * OverwriteModel Error constructor. * @param {String} name + * @api private */ constructor(name) { super('Cannot overwrite `' + name + '` model once compiled.'); diff --git a/food-ordering-app/server/node_modules/mongoose/lib/error/serverSelection.js b/food-ordering-app/server/node_modules/mongoose/lib/error/serverSelection.js index 162e2fceb..743eb96a3 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/error/serverSelection.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/error/serverSelection.js @@ -16,7 +16,7 @@ const isSSLError = require('../helpers/topology/isSSLError'); const atlasMessage = 'Could not connect to any servers in your MongoDB Atlas cluster. ' + 'One common reason is that you\'re trying to access the database from ' + 'an IP that isn\'t whitelisted. Make sure your current IP address is on your Atlas ' + - 'cluster\'s IP whitelist: https://docs.atlas.mongodb.com/security-whitelist/'; + 'cluster\'s IP whitelist: https://www.mongodb.com/docs/atlas/security-whitelist/'; const sslMessage = 'Mongoose is connecting with SSL enabled, but the server is ' + 'not accepting SSL connections. Please ensure that the MongoDB server you are ' + diff --git a/food-ordering-app/server/node_modules/mongoose/lib/error/setOptionError.js b/food-ordering-app/server/node_modules/mongoose/lib/error/setOptionError.js new file mode 100644 index 000000000..b38a0d302 --- /dev/null +++ b/food-ordering-app/server/node_modules/mongoose/lib/error/setOptionError.js @@ -0,0 +1,101 @@ +/*! + * Module requirements + */ + +'use strict'; + +const MongooseError = require('./mongooseError'); +const util = require('util'); +const combinePathErrors = require('../helpers/error/combinePathErrors'); + +class SetOptionError extends MongooseError { + /** + * Mongoose.set Error + * + * @api private + * @inherits MongooseError + */ + constructor() { + super(''); + + this.errors = {}; + } + + /** + * Console.log helper + */ + toString() { + return combinePathErrors(this); + } + + /** + * inspect helper + * @api private + */ + inspect() { + return Object.assign(new Error(this.message), this); + } + + /** + * add message + * @param {String} key + * @param {String|Error} error + * @api private + */ + addError(key, error) { + if (error instanceof SetOptionError) { + const { errors } = error; + for (const optionKey of Object.keys(errors)) { + this.addError(optionKey, errors[optionKey]); + } + + return; + } + + this.errors[key] = error; + this.message = combinePathErrors(this); + } +} + + +if (util.inspect.custom) { + // Avoid Node deprecation warning DEP0079 + SetOptionError.prototype[util.inspect.custom] = SetOptionError.prototype.inspect; +} + +/** + * Helper for JSON.stringify + * Ensure `name` and `message` show up in toJSON output re: gh-9847 + * @api private + */ +Object.defineProperty(SetOptionError.prototype, 'toJSON', { + enumerable: false, + writable: false, + configurable: true, + value: function() { + return Object.assign({}, this, { name: this.name, message: this.message }); + } +}); + + +Object.defineProperty(SetOptionError.prototype, 'name', { + value: 'SetOptionError' +}); + +class SetOptionInnerError extends MongooseError { + /** + * Error for the "errors" array in "SetOptionError" with consistent message + * @param {String} key + */ + constructor(key) { + super(`"${key}" is not a valid option to set`); + } +} + +SetOptionError.SetOptionInnerError = SetOptionInnerError; + +/*! + * Module exports + */ + +module.exports = SetOptionError; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/error/strictPopulate.js b/food-ordering-app/server/node_modules/mongoose/lib/error/strictPopulate.js new file mode 100644 index 000000000..f7addfa52 --- /dev/null +++ b/food-ordering-app/server/node_modules/mongoose/lib/error/strictPopulate.js @@ -0,0 +1,29 @@ +/*! + * Module dependencies. + */ + +'use strict'; + +const MongooseError = require('./'); + +class StrictPopulateError extends MongooseError { + /** + * Strict mode error constructor + * + * @param {String} path + * @param {String} [msg] + * @inherits MongooseError + * @api private + */ + constructor(path, msg) { + msg = msg || 'Cannot populate path `' + path + '` because it is not in your schema. ' + 'Set the `strictPopulate` option to false to override.'; + super(msg); + this.path = path; + } +} + +Object.defineProperty(StrictPopulateError.prototype, 'name', { + value: 'StrictPopulateError' +}); + +module.exports = StrictPopulateError; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/error/validation.js b/food-ordering-app/server/node_modules/mongoose/lib/error/validation.js index 5ca993a34..5e222e980 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/error/validation.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/error/validation.js @@ -7,6 +7,7 @@ const MongooseError = require('./mongooseError'); const getConstructorName = require('../helpers/getConstructorName'); const util = require('util'); +const combinePathErrors = require('../helpers/error/combinePathErrors'); class ValidationError extends MongooseError { /** @@ -38,37 +39,48 @@ class ValidationError extends MongooseError { * Console.log helper */ toString() { - return this.name + ': ' + _generateMessage(this); + return this.name + ': ' + combinePathErrors(this); } - /*! + /** * inspect helper + * @api private */ inspect() { return Object.assign(new Error(this.message), this); } - /*! + /** * add message + * @param {String} path + * @param {String|Error} error + * @api private */ addError(path, error) { + if (error instanceof ValidationError) { + const { errors } = error; + for (const errorPath of Object.keys(errors)) { + this.addError(`${path}.${errorPath}`, errors[errorPath]); + } + + return; + } + this.errors[path] = error; - this.message = this._message + ': ' + _generateMessage(this); + this.message = this._message + ': ' + combinePathErrors(this); } } if (util.inspect.custom) { - /*! - * Avoid Node deprecation warning DEP0079 - */ - + // Avoid Node deprecation warning DEP0079 ValidationError.prototype[util.inspect.custom] = ValidationError.prototype.inspect; } -/*! +/** * Helper for JSON.stringify * Ensure `name` and `message` show up in toJSON output re: gh-9847 + * @api private */ Object.defineProperty(ValidationError.prototype, 'toJSON', { enumerable: false, @@ -84,27 +96,6 @@ Object.defineProperty(ValidationError.prototype, 'name', { value: 'ValidationError' }); -/*! - * ignore - */ - -function _generateMessage(err) { - const keys = Object.keys(err.errors || {}); - const len = keys.length; - const msgs = []; - let key; - - for (let i = 0; i < len; ++i) { - key = keys[i]; - if (err === err.errors[key]) { - continue; - } - msgs.push(key + ': ' + err.errors[key].message); - } - - return msgs.join(', '); -} - /*! * Module exports */ diff --git a/food-ordering-app/server/node_modules/mongoose/lib/error/validator.js b/food-ordering-app/server/node_modules/mongoose/lib/error/validator.js index f880e2b58..4ca7316d7 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/error/validator.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/error/validator.js @@ -12,15 +12,16 @@ class ValidatorError extends MongooseError { * Schema validator error * * @param {Object} properties + * @param {Document} doc * @api private */ - constructor(properties) { + constructor(properties, doc) { let msg = properties.message; if (!msg) { msg = MongooseError.messages.general.default; } - const message = formatMessage(msg, properties); + const message = formatMessage(msg, properties, doc); super(message); properties = Object.assign({}, properties, { message: message }); @@ -31,16 +32,18 @@ class ValidatorError extends MongooseError { this.reason = properties.reason; } - /*! + /** * toString helper * TODO remove? This defaults to `${this.name}: ${this.message}` + * @api private */ toString() { return this.message; } - /*! + /** * Ensure `name` and `message` show up in toJSON output re: gh-9296 + * @api private */ toJSON() { @@ -53,9 +56,10 @@ Object.defineProperty(ValidatorError.prototype, 'name', { value: 'ValidatorError' }); -/*! +/** * The object used to define this validator. Not enumerable to hide * it from `require('util').inspect()` output re: gh-3925 + * @api private */ Object.defineProperty(ValidatorError.prototype, 'properties', { @@ -67,13 +71,14 @@ Object.defineProperty(ValidatorError.prototype, 'properties', { // Exposed for testing ValidatorError.prototype.formatMessage = formatMessage; -/*! +/** * Formats error messages + * @api private */ -function formatMessage(msg, properties) { +function formatMessage(msg, properties, doc) { if (typeof msg === 'function') { - return msg(properties); + return msg(properties, doc); } const propertyNames = Object.keys(properties); diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/aggregate/prepareDiscriminatorPipeline.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/aggregate/prepareDiscriminatorPipeline.js index d06e8d70d..f720cfb6c 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/aggregate/prepareDiscriminatorPipeline.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/aggregate/prepareDiscriminatorPipeline.js @@ -12,7 +12,9 @@ module.exports = function prepareDiscriminatorPipeline(pipeline, schema, prefix) // If the first pipeline stage is a match and it doesn't specify a `__t` // key, add the discriminator key to it. This allows for potential // aggregation query optimizations not to be disturbed by this feature. - if (originalPipeline[0] != null && originalPipeline[0].$match && !originalPipeline[0].$match[filterKey]) { + if (originalPipeline[0] != null && + originalPipeline[0].$match && + (originalPipeline[0].$match[filterKey] === undefined || originalPipeline[0].$match[filterKey] === discriminatorValue)) { originalPipeline[0].$match[filterKey] = discriminatorValue; // `originalPipeline` is a ref, so there's no need for // aggregate._pipeline = originalPipeline diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/clone.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/clone.js index 379a74abe..f7ee5d8d2 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/clone.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/clone.js @@ -12,7 +12,7 @@ const trustedSymbol = require('./query/trusted').trustedSymbol; const utils = require('../utils'); -/*! +/** * Object clone with Mongoose natives support. * * If options.minimize is true, creates a minimal data object. Empty objects and undefined values will not be cloned. This makes the data payload sent to MongoDB as small as possible. diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/common.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/common.js index c1433ce47..ec7524da4 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/common.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/common.js @@ -7,6 +7,8 @@ const Binary = require('../driver').get().Binary; const isBsonType = require('./isBsonType'); const isMongooseObject = require('./isMongooseObject'); +const MongooseError = require('../error'); +const util = require('util'); exports.flatten = flatten; exports.modifiedPaths = modifiedPaths; @@ -67,7 +69,25 @@ function flatten(update, path, options, schema) { * ignore */ -function modifiedPaths(update, path, result) { +function modifiedPaths(update, path, result, recursion = null) { + if (update == null || typeof update !== 'object') { + return; + } + + if (recursion == null) { + recursion = { + raw: { update, path }, + trace: new WeakSet() + }; + } + + if (recursion.trace.has(update)) { + throw new MongooseError(`a circular reference in the update value, updateValue: +${util.inspect(recursion.raw.update, { showHidden: false, depth: 1 })} +updatePath: '${recursion.raw.path}'`); + } + recursion.trace.add(update); + const keys = Object.keys(update || {}); const numKeys = keys.length; result = result || {}; @@ -83,9 +103,10 @@ function modifiedPaths(update, path, result) { val = val.toObject({ transform: false, virtuals: false }); } if (shouldFlatten(val)) { - modifiedPaths(val, path + key, result); + modifiedPaths(val, path + key, result, recursion); } } + recursion.trace.delete(update); return result; } @@ -96,11 +117,11 @@ function modifiedPaths(update, path, result) { function shouldFlatten(val) { return val && - typeof val === 'object' && - !(val instanceof Date) && - !isBsonType(val, 'ObjectID') && - (!Array.isArray(val) || val.length !== 0) && - !(val instanceof Buffer) && - !isBsonType(val, 'Decimal128') && - !(val instanceof Binary); + typeof val === 'object' && + !(val instanceof Date) && + !isBsonType(val, 'ObjectID') && + (!Array.isArray(val) || val.length !== 0) && + !(val instanceof Buffer) && + !isBsonType(val, 'Decimal128') && + !(val instanceof Binary); } diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/cursor/eachAsync.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/cursor/eachAsync.js index 384575073..e3f6f8a24 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/cursor/eachAsync.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/cursor/eachAsync.js @@ -16,6 +16,9 @@ const promiseOrCallback = require('../promiseOrCallback'); * @param {Function} next the thunk to call to get the next document * @param {Function} fn * @param {Object} options + * @param {Number} [options.batchSize=null] if set, Mongoose will call `fn` with an array of at most `batchSize` documents, instead of a single document + * @param {Number} [options.parallel=1] maximum number of `fn` calls that Mongoose will run in parallel + * @param {AbortSignal} [options.signal] allow cancelling this eachAsync(). Once the abort signal is fired, `eachAsync()` will immediately fulfill the returned promise (or call the callback) and not fetch any more documents. * @param {Function} [callback] executed when all docs have been processed * @return {Promise} * @api public @@ -25,11 +28,25 @@ const promiseOrCallback = require('../promiseOrCallback'); module.exports = function eachAsync(next, fn, options, callback) { const parallel = options.parallel || 1; const batchSize = options.batchSize; + const signal = options.signal; const continueOnError = options.continueOnError; const aggregatedErrors = []; const enqueue = asyncQueue(); + let aborted = false; + return promiseOrCallback(callback, cb => { + if (signal != null) { + if (signal.aborted) { + return cb(null); + } + + signal.addEventListener('abort', () => { + aborted = true; + return cb(null); + }, { once: true }); + } + if (batchSize != null) { if (typeof batchSize !== 'number') { throw new TypeError('batchSize must be a number'); @@ -44,93 +61,106 @@ module.exports = function eachAsync(next, fn, options, callback) { }); function iterate(finalCallback) { - let drained = false; let handleResultsInProgress = 0; let currentDocumentIndex = 0; - let documentsBatch = []; let error = null; for (let i = 0; i < parallel; ++i) { - enqueue(fetch); + enqueue(createFetch()); } - function fetch(done) { - if (drained || error) { - return done(); - } + function createFetch() { + let documentsBatch = []; + let drained = false; + + return fetch; - next(function(err, doc) { - if (drained || error != null) { + function fetch(done) { + if (drained || aborted) { + return done(); + } else if (error) { return done(); } - if (err != null) { - if (continueOnError) { - aggregatedErrors.push(err); - } else { - error = err; - finalCallback(err); + + next(function(err, doc) { + if (error != null) { return done(); } - } - if (doc == null) { - drained = true; - if (handleResultsInProgress <= 0) { - const finalErr = continueOnError ? - createEachAsyncMultiError(aggregatedErrors) : - error; - - finalCallback(finalErr); - } else if (batchSize && documentsBatch.length) { - handleNextResult(documentsBatch, currentDocumentIndex++, handleNextResultCallBack); + if (err != null) { + if (err.name === 'MongoCursorExhaustedError') { + // We may end up calling `next()` multiple times on an exhausted + // cursor, which leads to an error. In case cursor is exhausted, + // just treat it as if the cursor returned no document, which is + // how a cursor indicates it is exhausted. + doc = null; + } else if (continueOnError) { + aggregatedErrors.push(err); + } else { + error = err; + finalCallback(err); + return done(); + } + } + if (doc == null) { + drained = true; + if (handleResultsInProgress <= 0) { + const finalErr = continueOnError ? + createEachAsyncMultiError(aggregatedErrors) : + error; + + finalCallback(finalErr); + } else if (batchSize && documentsBatch.length) { + handleNextResult(documentsBatch, currentDocumentIndex++, handleNextResultCallBack); + } + return done(); } - return done(); - } - ++handleResultsInProgress; + ++handleResultsInProgress; - // Kick off the subsequent `next()` before handling the result, but - // make sure we know that we still have a result to handle re: #8422 - immediate(() => done()); + // Kick off the subsequent `next()` before handling the result, but + // make sure we know that we still have a result to handle re: #8422 + immediate(() => done()); - if (batchSize) { - documentsBatch.push(doc); - } + if (batchSize) { + documentsBatch.push(doc); + } - // If the current documents size is less than the provided patch size don't process the documents yet - if (batchSize && documentsBatch.length !== batchSize) { - immediate(() => enqueue(fetch)); - return; - } + // If the current documents size is less than the provided batch size don't process the documents yet + if (batchSize && documentsBatch.length !== batchSize) { + immediate(() => enqueue(fetch)); + return; + } - const docsToProcess = batchSize ? documentsBatch : doc; + const docsToProcess = batchSize ? documentsBatch : doc; - function handleNextResultCallBack(err) { - if (batchSize) { - handleResultsInProgress -= documentsBatch.length; - documentsBatch = []; - } else { - --handleResultsInProgress; - } - if (err != null) { - if (continueOnError) { - aggregatedErrors.push(err); + function handleNextResultCallBack(err) { + if (batchSize) { + handleResultsInProgress -= documentsBatch.length; + documentsBatch = []; } else { - error = err; - return finalCallback(err); + --handleResultsInProgress; + } + if (err != null) { + if (continueOnError) { + aggregatedErrors.push(err); + } else { + error = err; + return finalCallback(err); + } + } + if ((drained || aborted) && handleResultsInProgress <= 0) { + const finalErr = continueOnError ? + createEachAsyncMultiError(aggregatedErrors) : + error; + return finalCallback(finalErr); } - } - if (drained && handleResultsInProgress <= 0) { - const finalErr = continueOnError ? - createEachAsyncMultiError(aggregatedErrors) : - error; - return finalCallback(finalErr); - } - immediate(() => enqueue(fetch)); - } + immediate(() => enqueue(fetch)); + } - handleNextResult(docsToProcess, currentDocumentIndex++, handleNextResultCallBack); - }); + handleNextResult(docsToProcess, currentDocumentIndex++, handleNextResultCallBack); + }); + } } } diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/discriminator/getConstructor.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/discriminator/getConstructor.js index ed35b16b3..7a821c5c9 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/discriminator/getConstructor.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/discriminator/getConstructor.js @@ -2,8 +2,9 @@ const getDiscriminatorByValue = require('./getDiscriminatorByValue'); -/*! +/** * Find the correct constructor, taking into account discriminators + * @api private */ module.exports = function getConstructor(Constructor, value) { diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/discriminator/getDiscriminatorByValue.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/discriminator/getDiscriminatorByValue.js index b2fa010da..af7605b39 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/discriminator/getDiscriminatorByValue.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/discriminator/getDiscriminatorByValue.js @@ -2,12 +2,13 @@ const areDiscriminatorValuesEqual = require('./areDiscriminatorValuesEqual'); -/*! -* returns discriminator by discriminatorMapping.value -* -* @param {Model} model -* @param {string} value -*/ +/** + * returns discriminator by discriminatorMapping.value + * + * @param {Object} discriminators + * @param {string} value + * @api private + */ module.exports = function getDiscriminatorByValue(discriminators, value) { if (discriminators == null) { diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/discriminator/getSchemaDiscriminatorByValue.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/discriminator/getSchemaDiscriminatorByValue.js index d4858ef18..a04e17c1b 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/discriminator/getSchemaDiscriminatorByValue.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/discriminator/getSchemaDiscriminatorByValue.js @@ -2,12 +2,13 @@ const areDiscriminatorValuesEqual = require('./areDiscriminatorValuesEqual'); -/*! -* returns discriminator by discriminatorMapping.value -* -* @param {Schema} schema -* @param {string} value -*/ +/** + * returns discriminator by discriminatorMapping.value + * + * @param {Schema} schema + * @param {string} value + * @api private + */ module.exports = function getSchemaDiscriminatorByValue(schema, value) { if (schema == null || schema.discriminators == null) { diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/discriminator/mergeDiscriminatorSchema.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/discriminator/mergeDiscriminatorSchema.js new file mode 100644 index 000000000..bbe4503f1 --- /dev/null +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/discriminator/mergeDiscriminatorSchema.js @@ -0,0 +1,64 @@ +'use strict'; +const schemaMerge = require('../schema/merge'); +const specialProperties = require('../../helpers/specialProperties'); +const isBsonType = require('../../helpers/isBsonType'); +const ObjectId = require('../../types/objectid'); +const isObject = require('../../helpers/isObject'); +/** + * Merges `from` into `to` without overwriting existing properties. + * + * @param {Object} to + * @param {Object} from + * @param {String} [path] + * @api private + */ + +module.exports = function mergeDiscriminatorSchema(to, from, path) { + const keys = Object.keys(from); + let i = 0; + const len = keys.length; + let key; + + path = path || ''; + + while (i < len) { + key = keys[i++]; + if (key === 'discriminators' || key === 'base' || key === '_applyDiscriminators') { + continue; + } + if (path === 'tree' && from != null && from.instanceOfSchema) { + continue; + } + if (specialProperties.has(key)) { + continue; + } + if (to[key] == null) { + to[key] = from[key]; + } else if (isObject(from[key])) { + if (!isObject(to[key])) { + to[key] = {}; + } + if (from[key] != null) { + // Skip merging schemas if we're creating a discriminator schema and + // base schema has a given path as a single nested but discriminator schema + // has the path as a document array, or vice versa (gh-9534) + if ((from[key].$isSingleNested && to[key].$isMongooseDocumentArray) || + (from[key].$isMongooseDocumentArray && to[key].$isSingleNested) || + (from[key].$isMongooseDocumentArrayElement && to[key].$isMongooseDocumentArrayElement)) { + continue; + } else if (from[key].instanceOfSchema) { + if (to[key].instanceOfSchema) { + schemaMerge(to[key], from[key].clone(), true); + } else { + to[key] = from[key].clone(); + } + continue; + } else if (isBsonType(from[key], 'ObjectID')) { + to[key] = new ObjectId(from[key]); + continue; + } + } + mergeDiscriminatorSchema(to[key], from[key], path ? path + '.' + key : key); + } + } +}; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/document/applyDefaults.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/document/applyDefaults.js new file mode 100644 index 000000000..631d5151e --- /dev/null +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/document/applyDefaults.js @@ -0,0 +1,128 @@ +'use strict'; + +const isNestedProjection = require('../projection/isNestedProjection'); + +module.exports = function applyDefaults(doc, fields, exclude, hasIncludedChildren, isBeforeSetters, pathsToSkip) { + const paths = Object.keys(doc.$__schema.paths); + const plen = paths.length; + + for (let i = 0; i < plen; ++i) { + let def; + let curPath = ''; + const p = paths[i]; + + if (p === '_id' && doc.$__.skipId) { + continue; + } + + const type = doc.$__schema.paths[p]; + const path = type.splitPath(); + const len = path.length; + let included = false; + let doc_ = doc._doc; + for (let j = 0; j < len; ++j) { + if (doc_ == null) { + break; + } + + const piece = path[j]; + curPath += (!curPath.length ? '' : '.') + piece; + + if (exclude === true) { + if (curPath in fields) { + break; + } + } else if (exclude === false && fields && !included) { + const hasSubpaths = type.$isSingleNested || type.$isMongooseDocumentArray; + if ((curPath in fields && !isNestedProjection(fields[curPath])) || (j === len - 1 && hasSubpaths && hasIncludedChildren != null && hasIncludedChildren[curPath])) { + included = true; + } else if (hasIncludedChildren != null && !hasIncludedChildren[curPath]) { + break; + } + } + + if (j === len - 1) { + if (doc_[piece] !== void 0) { + break; + } + + if (isBeforeSetters != null) { + if (typeof type.defaultValue === 'function') { + if (!type.defaultValue.$runBeforeSetters && isBeforeSetters) { + break; + } + if (type.defaultValue.$runBeforeSetters && !isBeforeSetters) { + break; + } + } else if (!isBeforeSetters) { + // Non-function defaults should always run **before** setters + continue; + } + } + + if (pathsToSkip && pathsToSkip[curPath]) { + break; + } + + if (fields && exclude !== null) { + if (exclude === true) { + // apply defaults to all non-excluded fields + if (p in fields) { + continue; + } + + try { + def = type.getDefault(doc, false); + } catch (err) { + doc.invalidate(p, err); + break; + } + + if (typeof def !== 'undefined') { + doc_[piece] = def; + applyChangeTracking(doc, p); + } + } else if (included) { + // selected field + try { + def = type.getDefault(doc, false); + } catch (err) { + doc.invalidate(p, err); + break; + } + + if (typeof def !== 'undefined') { + doc_[piece] = def; + applyChangeTracking(doc, p); + } + } + } else { + try { + def = type.getDefault(doc, false); + } catch (err) { + doc.invalidate(p, err); + break; + } + + if (typeof def !== 'undefined') { + doc_[piece] = def; + applyChangeTracking(doc, p); + } + } + } else { + doc_ = doc_[piece]; + } + } + } +}; + +/*! + * ignore + */ + +function applyChangeTracking(doc, fullPath) { + doc.$__.activePaths.default(fullPath); + if (doc.$isSubdocument && doc.$isSingleNested && doc.$parent() != null) { + doc.$parent().$__.activePaths.default(doc.$__pathRelativeToParent(fullPath)); + } +} diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/document/cleanModifiedSubpaths.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/document/cleanModifiedSubpaths.js index 29bd18c3a..43c225e4f 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/document/cleanModifiedSubpaths.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/document/cleanModifiedSubpaths.js @@ -13,7 +13,7 @@ module.exports = function cleanModifiedSubpaths(doc, path, options) { return deleted; } - for (const modifiedPath of Object.keys(doc.$__.activePaths.states.modify)) { + for (const modifiedPath of Object.keys(doc.$__.activePaths.getStatePaths('modify'))) { if (skipDocArrays) { const schemaType = doc.$__schema.path(modifiedPath); if (schemaType && schemaType.$isMongooseDocumentArray) { @@ -21,13 +21,13 @@ module.exports = function cleanModifiedSubpaths(doc, path, options) { } } if (modifiedPath.startsWith(path + '.')) { - delete doc.$__.activePaths.states.modify[modifiedPath]; + doc.$__.activePaths.clearPath(modifiedPath); ++deleted; if (doc.$isSubdocument) { const owner = doc.ownerDocument(); const fullPath = doc.$__fullPath(modifiedPath); - delete owner.$__.activePaths.states.modify[fullPath]; + owner.$__.activePaths.clearPath(fullPath); } } } diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/document/compile.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/document/compile.js index 80a0de0b0..248211bdb 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/document/compile.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/document/compile.js @@ -17,8 +17,24 @@ const isPOJO = utils.isPOJO; exports.compile = compile; exports.defineKey = defineKey; -/*! +const _isEmptyOptions = Object.freeze({ + minimize: true, + virtuals: false, + getters: false, + transform: false +}); + +const noDottedPathGetOptions = Object.freeze({ + noDottedPath: true +}); + +/** * Compiles schemas. + * @param {Object} tree + * @param {Any} proto + * @param {String} prefix + * @param {Object} options + * @api private */ function compile(tree, proto, prefix, options) { @@ -37,14 +53,22 @@ function compile(tree, proto, prefix, options) { } } -/*! +/** * Defines the accessor named prop on the incoming prototype. + * @param {Object} options + * @param {String} options.prop + * @param {Boolean} options.subprops + * @param {Any} options.prototype + * @param {String} [options.prefix] + * @param {Object} options.options + * @api private */ function defineKey({ prop, subprops, prototype, prefix, options }) { Document = Document || require('../../document'); const path = (prefix ? prefix + '.' : '') + prop; prefix = prefix || ''; + const useGetOptions = prefix ? Object.freeze({}) : noDottedPathGetOptions; if (subprops) { Object.defineProperty(prototype, prop, { @@ -130,12 +154,6 @@ function defineKey({ prop, subprops, prototype, prefix, options }) { value: true }); - const _isEmptyOptions = Object.freeze({ - minimize: true, - virtuals: false, - getters: false, - transform: false - }); Object.defineProperty(nested, '$isEmpty', { enumerable: false, configurable: true, @@ -175,7 +193,12 @@ function defineKey({ prop, subprops, prototype, prefix, options }) { enumerable: true, configurable: true, get: function() { - return this[getSymbol].call(this.$__[scopeSymbol] || this, path); + return this[getSymbol].call( + this.$__[scopeSymbol] || this, + path, + null, + useGetOptions + ); }, set: function(v) { this.$set.call(this.$__[scopeSymbol] || this, path, v); diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/document/getEmbeddedDiscriminatorPath.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/document/getEmbeddedDiscriminatorPath.js index 3f4d22a21..ecbedabc3 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/document/getEmbeddedDiscriminatorPath.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/document/getEmbeddedDiscriminatorPath.js @@ -3,9 +3,13 @@ const get = require('../get'); const getSchemaDiscriminatorByValue = require('../discriminator/getSchemaDiscriminatorByValue'); -/*! +/** * Like `schema.path()`, except with a document, because impossible to * determine path type without knowing the embedded discriminator key. + * @param {Document} doc + * @param {String} path + * @param {Object} [options] + * @api private */ module.exports = function getEmbeddedDiscriminatorPath(doc, path, options) { diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/error/combinePathErrors.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/error/combinePathErrors.js new file mode 100644 index 000000000..841dbc0aa --- /dev/null +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/error/combinePathErrors.js @@ -0,0 +1,22 @@ +'use strict'; + +/*! + * ignore + */ + +module.exports = function combinePathErrors(err) { + const keys = Object.keys(err.errors || {}); + const len = keys.length; + const msgs = []; + let key; + + for (let i = 0; i < len; ++i) { + key = keys[i]; + if (err === err.errors[key]) { + continue; + } + msgs.push(key + ': ' + err.errors[key].message); + } + + return msgs.join(', '); +}; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/firstKey.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/firstKey.js new file mode 100644 index 000000000..4495d2a88 --- /dev/null +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/firstKey.js @@ -0,0 +1,8 @@ +'use strict'; + +module.exports = function firstKey(obj) { + if (obj == null) { + return null; + } + return Object.keys(obj)[0]; +}; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/get.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/get.js index e23fc1a6c..08c2b849f 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/get.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/get.js @@ -1,8 +1,9 @@ 'use strict'; -/*! +/** * Simplified lodash.get to work around the annoying null quirk. See: * https://github.com/lodash/lodash/issues/3659 + * @api private */ module.exports = function get(obj, path, def) { diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/getConstructorName.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/getConstructorName.js index 10be6b4b4..5ebe7bb02 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/getConstructorName.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/getConstructorName.js @@ -1,7 +1,8 @@ 'use strict'; -/*! +/** * If `val` is an object, returns constructor name, if possible. Otherwise returns undefined. + * @api private */ module.exports = function getConstructorName(val) { diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/indexes/isIndexEqual.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/indexes/isIndexEqual.js index 12e5c3d08..735041236 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/indexes/isIndexEqual.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/indexes/isIndexEqual.js @@ -6,13 +6,13 @@ const utils = require('../../utils'); * Given a Mongoose index definition (key + options objects) and a MongoDB server * index definition, determine if the two indexes are equal. * - * @param {Object} key the Mongoose index spec + * @param {Object} schemaIndexKeysObject the Mongoose index spec * @param {Object} options the Mongoose index definition's options * @param {Object} dbIndex the index in MongoDB as returned by `listIndexes()` * @api private */ -module.exports = function isIndexEqual(key, options, dbIndex) { +module.exports = function isIndexEqual(schemaIndexKeysObject, options, dbIndex) { // Special case: text indexes have a special format in the db. For example, // `{ name: 'text' }` becomes: // { @@ -30,11 +30,11 @@ module.exports = function isIndexEqual(key, options, dbIndex) { delete dbIndex.key._fts; delete dbIndex.key._ftsx; const weights = { ...dbIndex.weights, ...dbIndex.key }; - if (Object.keys(weights).length !== Object.keys(key).length) { + if (Object.keys(weights).length !== Object.keys(schemaIndexKeysObject).length) { return false; } for (const prop of Object.keys(weights)) { - if (!(prop in key)) { + if (!(prop in schemaIndexKeysObject)) { return false; } const weight = weights[prop]; @@ -78,7 +78,7 @@ module.exports = function isIndexEqual(key, options, dbIndex) { } } - const schemaIndexKeys = Object.keys(key); + const schemaIndexKeys = Object.keys(schemaIndexKeysObject); const dbIndexKeys = Object.keys(dbIndex.key); if (schemaIndexKeys.length !== dbIndexKeys.length) { return false; @@ -87,7 +87,7 @@ module.exports = function isIndexEqual(key, options, dbIndex) { if (schemaIndexKeys[i] !== dbIndexKeys[i]) { return false; } - if (!utils.deepEqual(key[schemaIndexKeys[i]], dbIndex.key[dbIndexKeys[i]])) { + if (!utils.deepEqual(schemaIndexKeysObject[schemaIndexKeys[i]], dbIndex.key[dbIndexKeys[i]])) { return false; } } diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/isAsyncFunction.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/isAsyncFunction.js index 998705304..679590e58 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/isAsyncFunction.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/isAsyncFunction.js @@ -1,22 +1,9 @@ 'use strict'; -let asyncFunctionPrototype = null; -// try/catch for Babel compatibility, because Babel preset-env requires -// regenerator-runtime for async/await and we don't want to include that -// for a simple check. -try { - asyncFunctionPrototype = Object.getPrototypeOf(async function() {}); -} catch (err) {} - -if (asyncFunctionPrototype == null) { - module.exports = function isAsyncFunction() { - return false; - }; -} else { - module.exports = function isAsyncFunction(v) { - return ( - typeof v === 'function' && - Object.getPrototypeOf(v) === asyncFunctionPrototype - ); - }; -} +module.exports = function isAsyncFunction(v) { + return ( + typeof v === 'function' && + v.constructor && + v.constructor.name === 'AsyncFunction' + ); +}; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/isBsonType.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/isBsonType.js index 54791cd02..f75fd4016 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/isBsonType.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/isBsonType.js @@ -1,7 +1,8 @@ 'use strict'; -/*! +/** * Get the bson type, if it exists + * @api private */ function isBsonType(obj, typename) { diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/isMongooseObject.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/isMongooseObject.js index b7157c91f..736d0ecd7 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/isMongooseObject.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/isMongooseObject.js @@ -1,12 +1,12 @@ 'use strict'; const isMongooseArray = require('../types/array/isMongooseArray').isMongooseArray; -/*! +/** * Returns if `v` is a mongoose object that has a `toObject()` method we can use. * * This is for compatibility with libs like Date.js which do foolish things to Natives. * - * @param {any} v + * @param {Any} v * @api private */ diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/isObject.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/isObject.js index cb6f5369a..21900dede 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/isObject.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/isObject.js @@ -1,6 +1,6 @@ 'use strict'; -/*! +/** * Determines if `arg` is an object. * * @param {Object|Array|String|Function|RegExp|any} arg diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/isSimpleValidator.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/isSimpleValidator.js index dad6c31d6..92c934682 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/isSimpleValidator.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/isSimpleValidator.js @@ -1,6 +1,6 @@ 'use strict'; -/*! +/** * Determines if `arg` is a flat object. * * @param {Object|Array|String|Function|RegExp|any} arg diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/model/applyDefaultsToPOJO.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/model/applyDefaultsToPOJO.js new file mode 100644 index 000000000..4aca295cd --- /dev/null +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/model/applyDefaultsToPOJO.js @@ -0,0 +1,52 @@ +'use strict'; + +module.exports = function applyDefaultsToPOJO(doc, schema) { + const paths = Object.keys(schema.paths); + const plen = paths.length; + + for (let i = 0; i < plen; ++i) { + let curPath = ''; + const p = paths[i]; + + const type = schema.paths[p]; + const path = type.splitPath(); + const len = path.length; + let doc_ = doc; + for (let j = 0; j < len; ++j) { + if (doc_ == null) { + break; + } + + const piece = path[j]; + curPath += (!curPath.length ? '' : '.') + piece; + + if (j === len - 1) { + if (typeof doc_[piece] !== 'undefined') { + if (type.$isSingleNested) { + applyDefaultsToPOJO(doc_[piece], type.caster.schema); + } else if (type.$isMongooseDocumentArray && Array.isArray(doc_[piece])) { + doc_[piece].forEach(el => applyDefaultsToPOJO(el, type.schema)); + } + + break; + } + + const def = type.getDefault(doc, false, { skipCast: true }); + if (typeof def !== 'undefined') { + doc_[piece] = def; + + if (type.$isSingleNested) { + applyDefaultsToPOJO(def, type.caster.schema); + } else if (type.$isMongooseDocumentArray && Array.isArray(def)) { + def.forEach(el => applyDefaultsToPOJO(el, type.schema)); + } + } + } else { + if (doc_[piece] == null) { + doc_[piece] = {}; + } + doc_ = doc_[piece]; + } + } + } +}; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/model/applyHooks.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/model/applyHooks.js index bce1a24ff..7ed7895d4 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/model/applyHooks.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/model/applyHooks.js @@ -23,10 +23,18 @@ applyHooks.middlewareFunctions = [ ]; /*! + * ignore + */ + +const alreadyHookedFunctions = new Set(applyHooks.middlewareFunctions.flatMap(fn => ([fn, `$__${fn}`]))); + +/** * Register hooks for this model * * @param {Model} model * @param {Schema} schema + * @param {Object} options + * @api private */ function applyHooks(model, schema, options) { @@ -115,6 +123,9 @@ function applyHooks(model, schema, options) { checkForPromise: true }); for (const method of customMethods) { + if (alreadyHookedFunctions.has(method)) { + continue; + } if (!middleware.hasHooks(method)) { // Don't wrap if there are no hooks for the custom method to avoid // surprises. Also, `createWrapper()` enforces consistent async, diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/model/applyMethods.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/model/applyMethods.js index bd3718da3..e864bb1f1 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/model/applyMethods.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/model/applyMethods.js @@ -3,14 +3,17 @@ const get = require('../get'); const utils = require('../../utils'); -/*! +/** * Register methods for this model * * @param {Model} model * @param {Schema} schema + * @api private */ module.exports = function applyMethods(model, schema) { + const Model = require('../../model'); + function apply(method, schema) { Object.defineProperty(model.prototype, method, { get: function() { @@ -29,6 +32,16 @@ module.exports = function applyMethods(model, schema) { throw new Error('You have a method and a property in your schema both ' + 'named "' + method + '"'); } + + // Avoid making custom methods if user sets a method to itself, e.g. + // `schema.method(save, Document.prototype.save)`. Can happen when + // calling `loadClass()` with a class that `extends Document`. See gh-12254 + if (typeof fn === 'function' && + Model.prototype[method] === fn) { + delete schema.methods[method]; + continue; + } + if (schema.reserved[method] && !get(schema, `methodOptions.${method}.suppressWarning`, false)) { utils.warn(`mongoose: the method name "${method}" is used by mongoose ` + diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/model/applyStatics.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/model/applyStatics.js index 3b9501e04..d94d91c7c 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/model/applyStatics.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/model/applyStatics.js @@ -1,9 +1,10 @@ 'use strict'; -/*! +/** * Register statics for this model * @param {Model} model * @param {Schema} schema + * @api private */ module.exports = function applyStatics(model, schema) { for (const i in schema.statics) { diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/model/castBulkWrite.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/model/castBulkWrite.js index 5b882b6d5..b58f166d0 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/model/castBulkWrite.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/model/castBulkWrite.js @@ -7,9 +7,13 @@ const cast = require('../../cast'); const castUpdate = require('../query/castUpdate'); const setDefaultsOnInsert = require('../setDefaultsOnInsert'); -/*! +/** * Given a model and a bulkWrite op, return a thunk that handles casting and * validating the individual op. + * @param {Model} originalModel + * @param {Object} op + * @param {Object} [options] + * @api private */ module.exports = function castBulkWrite(originalModel, op, options) { @@ -20,7 +24,7 @@ module.exports = function castBulkWrite(originalModel, op, options) { const model = decideModelByObject(originalModel, op['insertOne']['document']); const doc = new model(op['insertOne']['document']); - if (model.schema.options.timestamps) { + if (model.schema.options.timestamps && options.timestamps !== false) { doc.initializeTimestamps(); } if (options.session != null) { @@ -222,8 +226,9 @@ function _addDiscriminatorToObject(schema, obj) { } } -/*! +/** * gets discriminator model if discriminator key is present in object + * @api private */ function decideModelByObject(model, object) { diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/model/discriminator.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/model/discriminator.js index 75a6a26e8..0c843df10 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/model/discriminator.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/model/discriminator.js @@ -1,26 +1,32 @@ 'use strict'; const Mixed = require('../../schema/mixed'); +const applyBuiltinPlugins = require('../schema/applyBuiltinPlugins'); const defineKey = require('../document/compile').defineKey; const get = require('../get'); const utils = require('../../utils'); +const mergeDiscriminatorSchema = require('../../helpers/discriminator/mergeDiscriminatorSchema'); const CUSTOMIZABLE_DISCRIMINATOR_OPTIONS = { toJSON: true, toObject: true, _id: true, - id: true + id: true, + virtuals: true, + methods: true }; /*! * ignore */ -module.exports = function discriminator(model, name, schema, tiedValue, applyPlugins) { +module.exports = function discriminator(model, name, schema, tiedValue, applyPlugins, mergeHooks) { if (!(schema && schema.instanceOfSchema)) { throw new Error('You must pass a valid discriminator Schema'); } + mergeHooks = mergeHooks == null ? true : mergeHooks; + if (model.schema.discriminatorMapping && !model.schema.discriminatorMapping.isRoot) { throw new Error('Discriminator "' + name + @@ -29,12 +35,14 @@ module.exports = function discriminator(model, name, schema, tiedValue, applyPlu if (applyPlugins) { const applyPluginsToDiscriminators = get(model.base, - 'options.applyPluginsToDiscriminators', false); + 'options.applyPluginsToDiscriminators', false) || !mergeHooks; // Even if `applyPluginsToDiscriminators` isn't set, we should still apply // global plugins to schemas embedded in the discriminator schema (gh-7370) model.base._applyPlugins(schema, { skipTopLevel: !applyPluginsToDiscriminators }); + } else if (!mergeHooks) { + applyBuiltinPlugins(schema); } const key = model.schema.options.discriminatorKey; @@ -106,8 +114,7 @@ module.exports = function discriminator(model, name, schema, tiedValue, applyPlu } } - utils.merge(schema, baseSchema, { - isDiscriminatorSchemaMerge: true, + mergeDiscriminatorSchema(schema, baseSchema, { omit: { discriminators: true, base: true, _applyDiscriminators: true }, omitNested: conflictingPaths.reduce((cur, path) => { cur['tree.' + path] = true; @@ -177,9 +184,12 @@ module.exports = function discriminator(model, name, schema, tiedValue, applyPlu schema.options._id = _id; } schema.options.id = id; - schema.s.hooks = model.schema.s.hooks.merge(schema.s.hooks); - - schema.plugins = Array.prototype.slice.call(baseSchema.plugins); + if (mergeHooks) { + schema.s.hooks = model.schema.s.hooks.merge(schema.s.hooks); + } + if (applyPlugins) { + schema.plugins = Array.prototype.slice.call(baseSchema.plugins); + } schema.callQueue = baseSchema.callQueue.concat(schema.callQueue); delete schema._requiredpaths; // reset just in case Schema#requiredPaths() was called on either schema } diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/model/pushNestedArrayPaths.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/model/pushNestedArrayPaths.js new file mode 100644 index 000000000..7f234faa2 --- /dev/null +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/model/pushNestedArrayPaths.js @@ -0,0 +1,15 @@ +'use strict'; + +module.exports = function pushNestedArrayPaths(paths, nestedArray, path) { + if (nestedArray == null) { + return; + } + + for (let i = 0; i < nestedArray.length; ++i) { + if (Array.isArray(nestedArray[i])) { + pushNestedArrayPaths(paths, nestedArray[i], path + '.' + i); + } else { + paths.push(path + '.' + i); + } + } +}; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/path/flattenObjectWithDottedPaths.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/path/flattenObjectWithDottedPaths.js deleted file mode 100644 index 419eb7e0d..000000000 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/path/flattenObjectWithDottedPaths.js +++ /dev/null @@ -1,38 +0,0 @@ -'use strict'; - -const MongooseError = require('../../error/mongooseError'); -const setDottedPath = require('../path/setDottedPath'); -const util = require('util'); - -/** - * Given an object that may contain dotted paths, flatten the paths out. - * For example: `flattenObjectWithDottedPaths({ a: { 'b.c': 42 } })` => `{ a: { b: { c: 42 } } }` - */ - -module.exports = function flattenObjectWithDottedPaths(obj) { - if (obj == null || typeof obj !== 'object' || Array.isArray(obj)) { - return; - } - // Avoid Mongoose docs - if (obj.$__) { - return; - } - const keys = Object.keys(obj); - for (const key of keys) { - const val = obj[key]; - if (key.indexOf('.') !== -1) { - try { - delete obj[key]; - setDottedPath(obj, key, val); - } catch (err) { - if (!(err instanceof TypeError)) { - throw err; - } - throw new MongooseError(`Conflicting dotted paths when setting document path, key: "${key}", value: ${util.inspect(val)}`); - } - continue; - } - - flattenObjectWithDottedPaths(obj[key]); - } -}; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/pluralize.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/pluralize.js index 7403bbe69..657c87f03 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/pluralize.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/pluralize.js @@ -71,7 +71,7 @@ exports.uncountables = [ ]; const uncountables = exports.uncountables; -/*! +/** * Pluralize function. * * @author TJ Holowaychuk (extracted from _ext.js_) diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/populate/assignRawDocsToIdStructure.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/populate/assignRawDocsToIdStructure.js index 6b4551973..e04b601ba 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/populate/assignRawDocsToIdStructure.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/populate/assignRawDocsToIdStructure.js @@ -6,7 +6,9 @@ const utils = require('../../utils'); module.exports = assignRawDocsToIdStructure; -/*! +const kHasArray = Symbol('assignRawDocsToIdStructure.hasArray'); + +/** * Assign `vals` returned by mongo query to the `rawIds` * structure returned from utils.getVals() honoring * query sort order if specified by user. @@ -21,8 +23,10 @@ module.exports = assignRawDocsToIdStructure; * else documents are put back in original order of array if found in results * * @param {Array} rawIds - * @param {Array} vals - * @param {Boolean} sort + * @param {Array} resultDocs + * @param {Array} resultOrder + * @param {Object} options + * @param {Boolean} recursed * @api private */ @@ -41,6 +45,17 @@ function assignRawDocsToIdStructure(rawIds, resultDocs, resultOrder, options, re let i = 0; const len = rawIds.length; + + if (sorting && recursed && options[kHasArray] === undefined) { + options[kHasArray] = false; + for (const key in resultOrder) { + if (Array.isArray(resultOrder[key])) { + options[kHasArray] = true; + break; + } + } + } + for (i = 0; i < len; ++i) { id = rawIds[i]; @@ -51,7 +66,7 @@ function assignRawDocsToIdStructure(rawIds, resultDocs, resultOrder, options, re continue; } - if (id === null && !sorting) { + if (id === null && sorting === false) { // keep nulls for findOne unless sorting, which always // removes them (backward compat) newOrder.push(id); @@ -59,7 +74,6 @@ function assignRawDocsToIdStructure(rawIds, resultDocs, resultOrder, options, re } sid = String(id); - doc = resultDocs[sid]; // If user wants separate copies of same doc, use this option if (options.clone && doc != null) { @@ -76,7 +90,8 @@ function assignRawDocsToIdStructure(rawIds, resultDocs, resultOrder, options, re if (doc) { if (sorting) { const _resultOrder = resultOrder[sid]; - if (Array.isArray(_resultOrder) && Array.isArray(doc) && _resultOrder.length === doc.length) { + if (options[kHasArray]) { + // If result arrays, rely on the MongoDB server response for ordering newOrder.push(doc); } else { newOrder[_resultOrder] = doc; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/populate/assignVals.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/populate/assignVals.js index 6e3e4a502..babdf6771 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/populate/assignVals.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/populate/assignVals.js @@ -52,6 +52,11 @@ module.exports = function assignVals(o) { const _allIds = o.allIds[i]; + if (o.path.endsWith('.$*')) { + // Skip maps re: gh-12494 + return valueFilter(val, options, populateOptions, _allIds); + } + if (o.justOne === true && Array.isArray(val)) { // Might be an embedded discriminator (re: gh-9244) with multiple models, so make sure to pick the right // model before assigning. @@ -212,7 +217,7 @@ function numDocs(v) { return v == null ? 0 : 1; } -/*! +/** * 1) Apply backwards compatible find/findOne behavior to sub documents * * find logic: @@ -228,11 +233,17 @@ function numDocs(v) { * background: * _ids are left in the query even when user excludes them so * that population mapping can occur. + * @param {Any} val + * @param {Object} assignmentOpts + * @param {Object} populateOptions + * @param {Function} [populateOptions.transform] + * @param {Boolean} allIds + * @api private */ function valueFilter(val, assignmentOpts, populateOptions, allIds) { const userSpecifiedTransform = typeof populateOptions.transform === 'function'; - const transform = userSpecifiedTransform ? populateOptions.transform : noop; + const transform = userSpecifiedTransform ? populateOptions.transform : v => v; if (Array.isArray(val)) { // find logic const ret = []; @@ -242,6 +253,8 @@ function valueFilter(val, assignmentOpts, populateOptions, allIds) { const _allIds = Array.isArray(allIds) ? allIds[i] : allIds; if (!isPopulatedObject(subdoc) && (!populateOptions.retainNullValues || subdoc != null) && !userSpecifiedTransform) { continue; + } else if (!populateOptions.retainNullValues && subdoc == null) { + continue; } else if (userSpecifiedTransform) { subdoc = transform(isPopulatedObject(subdoc) ? subdoc : null, _allIds); } @@ -288,8 +301,11 @@ function valueFilter(val, assignmentOpts, populateOptions, allIds) { return val == null ? transform(val, allIds) : transform(null, allIds); } -/*! +/** * Remove _id from `subdoc` if user specified "lean" query option + * @param {Document} subdoc + * @param {Object} assignmentOpts + * @api private */ function maybeRemoveId(subdoc, assignmentOpts) { @@ -302,9 +318,11 @@ function maybeRemoveId(subdoc, assignmentOpts) { } } -/*! +/** * Determine if `obj` is something we can set a populated path to. Can be a * document, a lean document, or an array/map that contains docs. + * @param {Any} obj + * @api private */ function isPopulatedObject(obj) { @@ -317,7 +335,3 @@ function isPopulatedObject(obj) { obj.$__ != null || leanPopulateMap.has(obj); } - -function noop(v) { - return v; -} diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/populate/createPopulateQueryFilter.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/populate/createPopulateQueryFilter.js index b93d1ada3..acfeee62a 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/populate/createPopulateQueryFilter.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/populate/createPopulateQueryFilter.js @@ -3,6 +3,7 @@ const SkipPopulateValue = require('./SkipPopulateValue'); const parentPaths = require('../path/parentPaths'); const { trusted } = require('../query/trusted'); +const hasDollarKeys = require('../query/hasDollarKeys'); module.exports = function createPopulateQueryFilter(ids, _match, _foreignField, model, skipInvalidIds) { const match = _formatMatch(_match); @@ -13,6 +14,11 @@ module.exports = function createPopulateQueryFilter(ids, _match, _foreignField, if (foreignField !== '_id' || !match['_id']) { ids = _filterInvalidIds(ids, foreignSchemaType, skipInvalidIds); match[foreignField] = trusted({ $in: ids }); + } else if (foreignField === '_id' && match['_id']) { + const userSpecifiedMatch = hasDollarKeys(match[foreignField]) ? + match[foreignField] : + { $eq: match[foreignField] }; + match[foreignField] = { ...trusted({ $in: ids }), ...userSpecifiedMatch }; } const _parentPaths = parentPaths(foreignField); @@ -37,6 +43,11 @@ module.exports = function createPopulateQueryFilter(ids, _match, _foreignField, const foreignSchemaType = model.schema.path(foreignField); ids = _filterInvalidIds(ids, foreignSchemaType, skipInvalidIds); $or.push({ [foreignField]: { $in: ids } }); + } else if (foreignField === '_id' && match['_id']) { + const userSpecifiedMatch = hasDollarKeys(match[foreignField]) ? + match[foreignField] : + { $eq: match[foreignField] }; + match[foreignField] = { ...trusted({ $in: ids }), ...userSpecifiedMatch }; } } } @@ -44,9 +55,13 @@ module.exports = function createPopulateQueryFilter(ids, _match, _foreignField, return match; }; -/*! +/** * Optionally filter out invalid ids that don't conform to foreign field's schema * to avoid cast errors (gh-7706) + * @param {Array} ids + * @param {SchemaType} foreignSchemaType + * @param {Boolean} [skipInvalidIds] + * @api private */ function _filterInvalidIds(ids, foreignSchemaType, skipInvalidIds) { @@ -64,9 +79,11 @@ function _filterInvalidIds(ids, foreignSchemaType, skipInvalidIds) { }); } -/*! +/** * Format `mod.match` given that it may be an array that we need to $or if * the client has multiple docs with match functions + * @param {Array|Any} match + * @api private */ function _formatMatch(match) { diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/populate/getModelsMapForPopulate.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/populate/getModelsMapForPopulate.js index 7e926d55f..d95b4b4aa 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/populate/getModelsMapForPopulate.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/populate/getModelsMapForPopulate.js @@ -15,6 +15,7 @@ const utils = require('../../utils'); const modelSymbol = require('../symbols').modelSymbol; const populateModelSymbol = require('../symbols').populateModelSymbol; const schemaMixedSymbol = require('../../schema/symbols').schemaMixedSymbol; +const StrictPopulate = require('../../error/strictPopulate'); module.exports = function getModelsMapForPopulate(model, docs, options) { let doc; @@ -44,9 +45,7 @@ module.exports = function getModelsMapForPopulate(model, docs, options) { allSchemaTypes = Array.isArray(allSchemaTypes) ? allSchemaTypes : [allSchemaTypes].filter(v => v != null); if (allSchemaTypes.length === 0 && options.strictPopulate !== false && options._localModel != null) { - return new MongooseError('Cannot populate path `' + (options._fullPath || options.path) + - '` because it is not in your schema. Set the `strictPopulate` option ' + - 'to false to override.'); + return new StrictPopulate(options._fullPath || options.path); } for (let i = 0; i < len; i++) { @@ -183,6 +182,7 @@ module.exports = function getModelsMapForPopulate(model, docs, options) { if (hasMatchFunction) { match = match.call(doc, doc); } + throwOn$where(match); data.match = match; data.hasMatchFunction = hasMatchFunction; data.isRefPath = isRefPath; @@ -208,6 +208,7 @@ module.exports = function getModelsMapForPopulate(model, docs, options) { let isRefPath = false; let justOne = null; + const originalSchema = schema; if (schema && schema.instance === 'Array') { schema = schema.caster; } @@ -278,7 +279,9 @@ module.exports = function getModelsMapForPopulate(model, docs, options) { schemaForCurrentDoc = schema; } - if (schemaForCurrentDoc != null) { + if (originalSchema && originalSchema.path.endsWith('.$*')) { + justOne = !originalSchema.$isMongooseArray && !originalSchema._arrayPath; + } else if (schemaForCurrentDoc != null) { justOne = !schemaForCurrentDoc.$isMongooseArray && !schemaForCurrentDoc._arrayPath; } @@ -363,7 +366,9 @@ function _virtualPopulate(model, docs, options, _virtualRes) { let localField; const virtualPrefix = _virtualRes.nestedSchemaPath ? _virtualRes.nestedSchemaPath + '.' : ''; - if (typeof virtual.options.localField === 'function') { + if (typeof options.localField === 'string') { + localField = options.localField; + } else if (typeof virtual.options.localField === 'function') { localField = virtualPrefix + virtual.options.localField.call(doc, doc); } else if (Array.isArray(virtual.options.localField)) { localField = virtual.options.localField.map(field => virtualPrefix + field); @@ -451,12 +456,13 @@ function _virtualPopulate(model, docs, options, _virtualRes) { localField = localField[0]; foreignField = foreignField[0]; } - data.localField = localField; data.foreignField = foreignField; data.match = match; data.hasMatchFunction = hasMatchFunction; + throwOn$where(match); + // Get local fields const ret = _getLocalFieldValues(doc, localField, model, options, virtual); @@ -527,7 +533,6 @@ function addModelNamesToMap(model, map, available, modelNames, options, data, re const currentOptions = { model: Model }; - if (data.isVirtual && get(data.virtual, 'options.options')) { currentOptions.options = utils.clone(data.virtual.options.options); } else if (schemaOptions != null) { @@ -538,7 +543,6 @@ function addModelNamesToMap(model, map, available, modelNames, options, data, re // Used internally for checking what model was used to populate this // path. options[populateModelSymbol] = Model; - available[modelName] = { model: Model, options: currentOptions, @@ -625,11 +629,13 @@ function _getLocalFieldValues(doc, localField, model, options, virtual, schema) } } -/*! +/** * Retrieve the _id of `val` if a Document or Array of Documents. * * @param {Array|Document|Any} val + * @param {Schema} schema * @return {Array|Document|Any} + * @api private */ function convertTo_id(val, schema) { @@ -727,3 +733,24 @@ function _findRefPathForDiscriminators(doc, modelSchema, data, options, normaliz return modelNames; } + +/** + * Throw an error if there are any $where keys + */ + +function throwOn$where(match) { + if (match == null) { + return; + } + if (typeof match !== 'object') { + return; + } + for (const key of Object.keys(match)) { + if (key === '$where') { + throw new MongooseError('Cannot use $where filter with populate() match'); + } + if (match[key] != null && typeof match[key] === 'object') { + throwOn$where(match[key]); + } + } +} diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/populate/getSchemaTypes.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/populate/getSchemaTypes.js index 76c428653..0534f0152 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/populate/getSchemaTypes.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/populate/getSchemaTypes.js @@ -12,15 +12,17 @@ const mpath = require('mpath'); const populateModelSymbol = require('../symbols').populateModelSymbol; -/*! +/** * Given a model and its schema, find all possible schema types for `path`, * including searching through discriminators. If `doc` is specified, will * use the doc's values for discriminator keys when searching, otherwise * will search all discriminators. * + * @param {Model} model * @param {Schema} schema * @param {Object} doc POJO * @param {string} path + * @api private */ module.exports = function getSchemaTypes(model, schema, doc, path) { @@ -171,6 +173,8 @@ module.exports = function getSchemaTypes(model, schema, doc, path) { } } } + } else if (foundschema.$isSchemaMap && foundschema.$__schemaType instanceof Mixed) { + return foundschema.$__schemaType; } const fullPath = nestedPath.concat([trypath]).join('.'); diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/populate/markArraySubdocsPopulated.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/populate/markArraySubdocsPopulated.js index c6f870a0d..28b19a198 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/populate/markArraySubdocsPopulated.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/populate/markArraySubdocsPopulated.js @@ -2,13 +2,18 @@ const utils = require('../../utils'); -/*! +/** * If populating a path within a document array, make sure each * subdoc within the array knows its subpaths are populated. * * #### Example: + * * const doc = await Article.findOne().populate('comments.author'); * doc.comments[0].populated('author'); // Should be set + * + * @param {Document} doc + * @param {Object} [populated] + * @api private */ module.exports = function markArraySubdocsPopulated(doc, populated) { diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/printJestWarning.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/printJestWarning.js index 7cef461ad..00ba2d50c 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/printJestWarning.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/printJestWarning.js @@ -2,16 +2,20 @@ const utils = require('../utils'); -if (typeof jest !== 'undefined' && typeof window !== 'undefined') { - utils.warn('Mongoose: looks like you\'re trying to test a Mongoose app ' + - 'with Jest\'s default jsdom test environment. Please make sure you read ' + - 'Mongoose\'s docs on configuring Jest to test Node.js apps: ' + - 'https://mongoosejs.com/docs/jest.html'); -} +if (typeof jest !== 'undefined' && !process.env.SUPPRESS_JEST_WARNINGS) { + if (typeof window !== 'undefined') { + utils.warn('Mongoose: looks like you\'re trying to test a Mongoose app ' + + 'with Jest\'s default jsdom test environment. Please make sure you read ' + + 'Mongoose\'s docs on configuring Jest to test Node.js apps: ' + + 'https://mongoosejs.com/docs/jest.html. Set the SUPPRESS_JEST_WARNINGS to true ' + + 'to hide this warning.'); + } -if (typeof jest !== 'undefined' && process.nextTick.toString().indexOf('nextTick') === -1) { - utils.warn('Mongoose: looks like you\'re trying to test a Mongoose app ' + - 'with Jest\'s mock timers enabled. Please make sure you read ' + - 'Mongoose\'s docs on configuring Jest to test Node.js apps: ' + - 'https://mongoosejs.com/docs/jest.html'); + if (setTimeout.clock != null && typeof setTimeout.clock.Date === 'function') { + utils.warn('Mongoose: looks like you\'re trying to test a Mongoose app ' + + 'with Jest\'s mock timers enabled. Please make sure you read ' + + 'Mongoose\'s docs on configuring Jest to test Node.js apps: ' + + 'https://mongoosejs.com/docs/jest.html. Set the SUPPRESS_JEST_WARNINGS to true ' + + 'to hide this warning.'); + } } diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/printStrictQueryWarning.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/printStrictQueryWarning.js new file mode 100644 index 000000000..3cf4fdf43 --- /dev/null +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/printStrictQueryWarning.js @@ -0,0 +1,11 @@ +'use strict'; + +const util = require('util'); + +module.exports = util.deprecate( + function() { }, + 'Mongoose: the `strictQuery` option will be switched back to `false` by default ' + + 'in Mongoose 7. Use `mongoose.set(\'strictQuery\', false);` if you want to prepare ' + + 'for this change. Or use `mongoose.set(\'strictQuery\', true);` to suppress this warning.', + 'MONGOOSE' +); diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/processConnectionOptions.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/processConnectionOptions.js index a9d862b10..1dbb767eb 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/processConnectionOptions.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/processConnectionOptions.js @@ -9,11 +9,12 @@ function processConnectionOptions(uri, options) { ? opts.readPreference : getUriReadPreference(uri); + const clonedOpts = clone(opts); const resolvedOpts = (readPreference && readPreference !== 'primary' && readPreference !== 'primaryPreferred') - ? resolveOptsConflicts(readPreference, opts) - : opts; + ? resolveOptsConflicts(readPreference, clonedOpts) + : clonedOpts; - return clone(resolvedOpts); + return resolvedOpts; } function resolveOptsConflicts(pref, opts) { diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/projection/hasIncludedChildren.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/projection/hasIncludedChildren.js index f9876f7d6..50afc5adf 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/projection/hasIncludedChildren.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/projection/hasIncludedChildren.js @@ -1,15 +1,19 @@ 'use strict'; -/*! +/** * Creates an object that precomputes whether a given path has child fields in * the projection. * * #### Example: + * * const res = hasIncludedChildren({ 'a.b.c': 0 }); * res.a; // 1 * res['a.b']; // 1 * res['a.b.c']; // 1 * res['a.c']; // undefined + * + * @param {Object} fields + * @api private */ module.exports = function hasIncludedChildren(fields) { @@ -17,6 +21,7 @@ module.exports = function hasIncludedChildren(fields) { const keys = Object.keys(fields); for (const key of keys) { + if (key.indexOf('.') === -1) { hasIncludedChildren[key] = 1; continue; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/projection/isNestedProjection.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/projection/isNestedProjection.js new file mode 100644 index 000000000..f53d9cddf --- /dev/null +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/projection/isNestedProjection.js @@ -0,0 +1,8 @@ +'use strict'; + +module.exports = function isNestedProjection(val) { + if (val == null || typeof val !== 'object') { + return false; + } + return val.$slice == null && val.$elemMatch == null && val.$meta == null && val.$ == null; +}; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/projection/isPathExcluded.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/projection/isPathExcluded.js index fc2592cda..e8f126b22 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/projection/isPathExcluded.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/projection/isPathExcluded.js @@ -2,15 +2,20 @@ const isDefiningProjection = require('./isDefiningProjection'); -/*! +/** * Determines if `path` is excluded by `projection` * * @param {Object} projection - * @param {string} path + * @param {String} path * @return {Boolean} + * @api private */ module.exports = function isPathExcluded(projection, path) { + if (projection == null) { + return false; + } + if (path === '_id') { return projection._id === 0; } diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/projection/isSubpath.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/projection/isSubpath.js index 4e870e9df..bec82f83d 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/projection/isSubpath.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/projection/isSubpath.js @@ -1,11 +1,12 @@ 'use strict'; -/*! +/** * Determines if `path2` is a subpath of or equal to `path1` * * @param {string} path1 * @param {string} path2 * @return {Boolean} + * @api private */ module.exports = function isSubpath(path1, path2) { diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/promiseOrCallback.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/promiseOrCallback.js index 69ba38530..4282a6ce4 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/promiseOrCallback.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/promiseOrCallback.js @@ -7,23 +7,32 @@ const emittedSymbol = Symbol('mongoose:emitted'); module.exports = function promiseOrCallback(callback, fn, ee, Promise) { if (typeof callback === 'function') { - return fn(function(error) { - if (error != null) { - if (ee != null && ee.listeners != null && ee.listeners('error').length > 0 && !error[emittedSymbol]) { - error[emittedSymbol] = true; - ee.emit('error', error); + try { + return fn(function(error) { + if (error != null) { + if (ee != null && ee.listeners != null && ee.listeners('error').length > 0 && !error[emittedSymbol]) { + error[emittedSymbol] = true; + ee.emit('error', error); + } + try { + callback(error); + } catch (error) { + return immediate(() => { + throw error; + }); + } + return; } - try { - callback(error); - } catch (error) { - return immediate(() => { - throw error; - }); - } - return; + callback.apply(this, arguments); + }); + } catch (error) { + if (ee != null && ee.listeners != null && ee.listeners('error').length > 0 && !error[emittedSymbol]) { + error[emittedSymbol] = true; + ee.emit('error', error); } - callback.apply(this, arguments); - }); + + return callback(error); + } } Promise = Promise || PromiseProvider.get(); diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/query/applyQueryMiddleware.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/query/applyQueryMiddleware.js index bbbd2b2a7..692d69cee 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/query/applyQueryMiddleware.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/query/applyQueryMiddleware.js @@ -16,11 +16,12 @@ applyQueryMiddleware.middlewareFunctions = validOps.concat([ 'validate' ]); -/*! +/** * Apply query middleware * - * @param {Query} query constructor + * @param {Query} Query constructor * @param {Model} model + * @api private */ function applyQueryMiddleware(Query, model) { diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/query/cast$expr.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/query/cast$expr.js index 677e77f65..dd4102d80 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/query/cast$expr.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/query/cast$expr.js @@ -77,8 +77,8 @@ module.exports = function cast$expr(val, schema, strictQuery) { }; function _castExpression(val, schema, strictQuery) { - if (isPath(val)) { - // Assume path + // Preserve the value if it represents a path or if it's null + if (isPath(val) || val === null) { return val; } @@ -275,7 +275,7 @@ function isLiteral(val) { } if (typeof val === 'object' && val !== null && Object.keys(val).find(key => key[0] === '$')) { // The `$literal` expression can make an object a literal - // https://docs.mongodb.com/manual/reference/operator/aggregation/literal/#mongodb-expression-exp.-literal + // https://www.mongodb.com/docs/manual/reference/operator/aggregation/literal/#mongodb-expression-exp.-literal return val.$literal != null; } return true; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/query/castUpdate.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/query/castUpdate.js index 03566460a..e9c12c3eb 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/query/castUpdate.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/query/castUpdate.js @@ -14,16 +14,17 @@ const schemaMixedSymbol = require('../../schema/symbols').schemaMixedSymbol; const setDottedPath = require('../path/setDottedPath'); const utils = require('../../utils'); -/*! +/** * Casts an update op based on the given schema * * @param {Schema} schema * @param {Object} obj - * @param {Object} options + * @param {Object} [options] * @param {Boolean} [options.overwrite] defaults to false * @param {Boolean|String} [options.strict] defaults to true * @param {Query} context passed to setters * @return {Boolean} true iff the update is non-empty + * @api private */ module.exports = function castUpdate(schema, obj, options, context, filter) { if (obj == null) { @@ -42,11 +43,6 @@ module.exports = function castUpdate(schema, obj, options, context, filter) { return obj; } - if (schema.options.strict === 'throw' && obj.hasOwnProperty(schema.options.discriminatorKey)) { - throw new StrictModeError(schema.options.discriminatorKey); - } else if (!options.overwriteDiscriminatorKey) { - delete obj[schema.options.discriminatorKey]; - } if (options.upsert && !options.overwrite) { moveImmutableProperties(schema, obj, context); } @@ -150,16 +146,17 @@ function castPipelineOperator(op, val) { throw new MongooseError('Invalid update pipeline operator: "' + op + '"'); } -/*! +/** * Walk each path of obj and cast its values * according to its schema. * * @param {Schema} schema * @param {Object} obj part of a query * @param {String} op the atomic operator ($pull, $set, etc) - * @param {Object} options + * @param {Object} [options] * @param {Boolean|String} [options.strict] * @param {Query} context + * @param {Object} filter * @param {String} pref path prefix (internal only) * @return {Bool} true if this path has keys to update * @api private @@ -194,10 +191,16 @@ function walkUpdatePath(schema, obj, op, options, context, filter, pref) { } } - if (schema.discriminatorMapping != null && key === schema.options.discriminatorKey && !options.overwriteDiscriminatorKey) { + const discriminatorKey = (prefix ? prefix + key : key); + if ( + schema.discriminatorMapping != null && + discriminatorKey === schema.options.discriminatorKey && + schema.discriminatorMapping.value !== obj[key] && + !options.overwriteDiscriminatorKey + ) { if (strictMode === 'throw') { - const err = new Error('Can\'t modify discriminator key "' + key + '" on discriminator model'); - aggregatedError = _appendError(err, context, key, aggregatedError); + const err = new Error('Can\'t modify discriminator key "' + discriminatorKey + '" on discriminator model'); + aggregatedError = _appendError(err, context, discriminatorKey, aggregatedError); continue; } else if (strictMode) { delete obj[key]; @@ -407,9 +410,10 @@ function _appendError(error, query, key, aggregatedError) { return aggregatedError; } -/*! +/** * These operators should be cast to numbers instead * of their path schema type. + * @api private */ const numberOps = { @@ -417,17 +421,19 @@ const numberOps = { $inc: 1 }; -/*! +/** * These ops require no casting because the RHS doesn't do anything. + * @api private */ const noCastOps = { $unset: 1 }; -/*! +/** * These operators require casting docs * to real Documents for Update operations. + * @api private */ const castOps = { @@ -446,7 +452,7 @@ const overwriteOps = { $setOnInsert: 1 }; -/*! +/** * Casts `val` according to `schema` and atomic `op`. * * @param {SchemaType} schema @@ -454,6 +460,7 @@ const overwriteOps = { * @param {String} op the atomic operator ($pull, $set, etc) * @param {String} $conditional * @param {Query} context + * @param {String} path * @api private */ diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/query/completeMany.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/query/completeMany.js index b52da432a..4ba8c2b08 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/query/completeMany.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/query/completeMany.js @@ -5,7 +5,7 @@ const immediate = require('../immediate'); module.exports = completeMany; -/*! +/** * Given a model and an array of docs, hydrates all the docs to be instances * of the model. Used to initialize docs returned from the db from `find()` * @@ -13,10 +13,11 @@ module.exports = completeMany; * @param {Array} docs * @param {Object} fields the projection used, including `select` from schemas * @param {Object} userProvidedFields the user-specified projection - * @param {Object} opts + * @param {Object} [opts] * @param {Array} [opts.populated] * @param {ClientSession} [opts.session] * @param {Function} callback + * @api private */ function completeMany(model, docs, fields, userProvidedFields, opts, callback) { diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/query/getEmbeddedDiscriminatorPath.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/query/getEmbeddedDiscriminatorPath.js index 2f3f39d97..f376916b5 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/query/getEmbeddedDiscriminatorPath.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/query/getEmbeddedDiscriminatorPath.js @@ -5,9 +5,15 @@ const get = require('../get'); const getDiscriminatorByValue = require('../discriminator/getDiscriminatorByValue'); const updatedPathsByArrayFilter = require('../update/updatedPathsByArrayFilter'); -/*! +/** * Like `schema.path()`, except with a document, because impossible to * determine path type without knowing the embedded discriminator key. + * @param {Schema} schema + * @param {Object} [update] + * @param {Object} [filter] + * @param {String} path + * @param {Object} [options] + * @api private */ module.exports = function getEmbeddedDiscriminatorPath(schema, update, filter, path, options) { diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/query/sanitizeFilter.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/query/sanitizeFilter.js index 1147df369..493e64549 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/query/sanitizeFilter.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/query/sanitizeFilter.js @@ -1,5 +1,6 @@ 'use strict'; +const MongooseError = require('../../error/mongooseError'); const hasDollarKeys = require('./hasDollarKeys'); const { trustedSymbol } = require('./trusted'); @@ -17,12 +18,14 @@ module.exports = function sanitizeFilter(filter) { const filterKeys = Object.keys(filter); for (const key of filterKeys) { const value = filter[key]; - if (value != null && value[trustedSymbol]) { + if (value && value[trustedSymbol]) { continue; } - if (key === '$and' || key === '$or') { + if (key === '$and' || key === '$or' || key === '$nor') { sanitizeFilter(value); continue; + } else if (key === '$jsonSchema' || key === '$where' || key === '$expr' || key === '$text') { + throw new MongooseError(key + ' is not allowed with sanitizeFilter'); } if (hasDollarKeys(value)) { diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/query/trusted.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/query/trusted.js index 1e460eb50..87a2cfa9d 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/query/trusted.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/query/trusted.js @@ -5,7 +5,7 @@ const trustedSymbol = Symbol('mongoose#trustedSymbol'); exports.trustedSymbol = trustedSymbol; exports.trusted = function trusted(obj) { - if (obj == null || typeof obj !== 'object') { + if (obj == null || (typeof obj !== 'object' && typeof obj !== 'function')) { return obj; } obj[trustedSymbol] = true; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/query/wrapThunk.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/query/wrapThunk.js index 2c4d3d8a2..cf5506b16 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/query/wrapThunk.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/query/wrapThunk.js @@ -2,13 +2,15 @@ const MongooseError = require('../../error/mongooseError'); -/*! +/** * A query thunk is the function responsible for sending the query to MongoDB, * like `Query#_findOne()` or `Query#_execUpdate()`. The `Query#exec()` function * calls a thunk. The term "thunk" here is the traditional Node.js definition: * a function that takes exactly 1 parameter, a callback. * * This function defines common behavior for all query thunks. + * @param {Function} fn + * @api private */ module.exports = function wrapThunk(fn) { @@ -19,10 +21,10 @@ module.exports = function wrapThunk(fn) { str = str.slice(0, 60) + '...'; } const err = new MongooseError('Query was already executed: ' + str); - err.originalStack = this._executionStack.stack; + err.originalStack = this._executionStack; return cb(err); } - this._executionStack = new Error(); + this._executionStack = new Error().stack; fn.call(this, cb); }; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/schema/applyBuiltinPlugins.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/schema/applyBuiltinPlugins.js new file mode 100644 index 000000000..8bd7319cb --- /dev/null +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/schema/applyBuiltinPlugins.js @@ -0,0 +1,12 @@ +'use strict'; + +const builtinPlugins = require('../../plugins'); + +module.exports = function applyBuiltinPlugins(schema) { + for (const plugin of Object.values(builtinPlugins)) { + plugin(schema, { deduplicate: true }); + } + schema.plugins = Object.values(builtinPlugins). + map(fn => ({ fn, opts: { deduplicate: true } })). + concat(schema.plugins); +}; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/schema/getIndexes.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/schema/getIndexes.js index 7433b8dcf..28e0a3e6f 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/schema/getIndexes.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/schema/getIndexes.js @@ -4,9 +4,11 @@ const get = require('../get'); const helperIsObject = require('../isObject'); const decorateDiscriminatorIndexOptions = require('../indexes/decorateDiscriminatorIndexOptions'); -/*! +/** * Gather all indexes defined in the schema, including single nested, * document arrays, and embedded discriminators. + * @param {Schema} schema + * @api private */ module.exports = function getIndexes(schema) { @@ -120,11 +122,14 @@ module.exports = function getIndexes(schema) { } } - /*! + /** * Checks for indexes added to subdocs using Schema.index(). * These indexes need their paths prefixed properly. * * schema._indexes = [ [indexObj, options], [indexObj, options] ..] + * @param {Schema} schema + * @param {String} prefix + * @api private */ function fixSubIndexPaths(schema, prefix) { diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/schema/getPath.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/schema/getPath.js index 9571e866f..b88106954 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/schema/getPath.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/schema/getPath.js @@ -1,18 +1,18 @@ 'use strict'; -/*! +const numberRE = /^\d+$/; + +/** * Behaves like `Schema#path()`, except for it also digs into arrays without * needing to put `.0.`, so `getPath(schema, 'docArr.elProp')` works. + * @api private */ -const numberRE = /^\d+$/; - module.exports = function getPath(schema, path) { let schematype = schema.path(path); if (schematype != null) { return schematype; } - const pieces = path.split('.'); let cur = ''; let isArray = false; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/schema/idGetter.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/schema/idGetter.js index 5a0741773..31ea2ec86 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/schema/idGetter.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/schema/idGetter.js @@ -18,8 +18,9 @@ module.exports = function addIdGetter(schema) { return schema; }; -/*! +/** * Returns this documents _id cast to a string. + * @api private */ function idGetter() { diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/schema/merge.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/schema/merge.js index edc5175ee..55ed82466 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/schema/merge.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/schema/merge.js @@ -23,5 +23,6 @@ module.exports = function merge(s1, s2, skipConflictingPaths) { s1.virtuals[virtual] = s2.virtuals[virtual].clone(); } + s1._indexes = s1._indexes.concat(s2._indexes || []); s1.s.hooks.merge(s2.s.hooks, false); }; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/setDefaultsOnInsert.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/setDefaultsOnInsert.js index 50aec3950..a94a5b35f 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/setDefaultsOnInsert.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/setDefaultsOnInsert.js @@ -105,6 +105,8 @@ function isModified(modified, path) { if (modified[path]) { return true; } + + // Is any parent path of `path` modified? const sp = path.split('.'); let cur = sp[0]; for (let i = 1; i < sp.length; ++i) { @@ -113,5 +115,18 @@ function isModified(modified, path) { } cur += '.' + sp[i]; } + + // Is any child of `path` modified? + const modifiedKeys = Object.keys(modified); + if (modifiedKeys.length) { + const parentPath = path + '.'; + + for (const modifiedPath of modifiedKeys) { + if (modifiedPath.slice(0, path.length + 1) === parentPath) { + return true; + } + } + } + return false; } diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/timestamps/setDocumentTimestamps.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/timestamps/setDocumentTimestamps.js new file mode 100644 index 000000000..c1b6d5fc2 --- /dev/null +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/timestamps/setDocumentTimestamps.js @@ -0,0 +1,26 @@ +'use strict'; + +module.exports = function setDocumentTimestamps(doc, timestampOption, currentTime, createdAt, updatedAt) { + const skipUpdatedAt = timestampOption != null && timestampOption.updatedAt === false; + const skipCreatedAt = timestampOption != null && timestampOption.createdAt === false; + + const defaultTimestamp = currentTime != null ? + currentTime() : + doc.ownerDocument().constructor.base.now(); + + if (!skipCreatedAt && + (doc.isNew || doc.$isSubdocument) && + createdAt && + !doc.$__getValue(createdAt) && + doc.$__isSelected(createdAt)) { + doc.$set(createdAt, defaultTimestamp, undefined, { overwriteImmutable: true }); + } + + if (!skipUpdatedAt && updatedAt && (doc.isNew || doc.$isModified())) { + let ts = defaultTimestamp; + if (doc.isNew && createdAt != null) { + ts = doc.$__getValue(createdAt); + } + doc.$set(updatedAt, ts); + } +}; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/timestamps/setupTimestamps.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/timestamps/setupTimestamps.js index c254365ac..ed44e7d93 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/timestamps/setupTimestamps.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/timestamps/setupTimestamps.js @@ -4,6 +4,7 @@ const applyTimestampsToChildren = require('../update/applyTimestampsToChildren') const applyTimestampsToUpdate = require('../update/applyTimestampsToUpdate'); const get = require('../get'); const handleTimestampOption = require('../schema/handleTimestampOption'); +const setDocumentTimestamps = require('./setDocumentTimestamps'); const symbols = require('../../schema/symbols'); module.exports = function setupTimestamps(schema, timestamps) { @@ -26,42 +27,25 @@ module.exports = function setupTimestamps(schema, timestamps) { schema.$timestamps = { createdAt: createdAt, updatedAt: updatedAt }; - if (updatedAt && !schema.paths[updatedAt]) { - schemaAdditions[updatedAt] = Date; - } - if (createdAt && !schema.paths[createdAt]) { - const baseImmutableCreatedAt = schema.base.get('timestamps.createdAt.immutable'); + const baseImmutableCreatedAt = schema.base != null ? schema.base.get('timestamps.createdAt.immutable') : null; const immutable = baseImmutableCreatedAt != null ? baseImmutableCreatedAt : true; schemaAdditions[createdAt] = { [schema.options.typeKey || 'type']: Date, immutable }; } + if (updatedAt && !schema.paths[updatedAt]) { + schemaAdditions[updatedAt] = Date; + } + schema.add(schemaAdditions); - schema.pre('save', function(next) { + schema.pre('save', function timestampsPreSave(next) { const timestampOption = get(this, '$__.saveOptions.timestamps'); if (timestampOption === false) { return next(); } - const skipUpdatedAt = timestampOption != null && timestampOption.updatedAt === false; - const skipCreatedAt = timestampOption != null && timestampOption.createdAt === false; - - const defaultTimestamp = currentTime != null ? - currentTime() : - this.ownerDocument().constructor.base.now(); - - if (!skipCreatedAt && (this.isNew || this.$isSubdocument) && createdAt && !this.$__getValue(createdAt) && this.$__isSelected(createdAt)) { - this.$set(createdAt, defaultTimestamp, undefined, { overwriteImmutable: true }); - } - - if (!skipUpdatedAt && updatedAt && (this.isNew || this.$isModified())) { - let ts = defaultTimestamp; - if (this.isNew && createdAt != null) { - ts = this.$__getValue(createdAt); - } - this.$set(updatedAt, ts); - } + setDocumentTimestamps(this, timestampOption, currentTime, createdAt, updatedAt); next(); }); @@ -76,6 +60,18 @@ module.exports = function setupTimestamps(schema, timestamps) { if (updatedAt && !this.get(updatedAt)) { this.$set(updatedAt, ts); } + + if (this.$isSubdocument) { + return this; + } + + const subdocs = this.$getAllSubdocs(); + for (const subdoc of subdocs) { + if (subdoc.initializeTimestamps) { + subdoc.initializeTimestamps(); + } + } + return this; }; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/topology/isAtlas.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/topology/isAtlas.js index 42ed211fa..445a8b49c 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/topology/isAtlas.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/topology/isAtlas.js @@ -2,25 +2,30 @@ const getConstructorName = require('../getConstructorName'); +/** + * @typedef { import('mongodb').TopologyDescription } TopologyDescription + */ + +/** + * Checks if topologyDescription contains servers connected to an atlas instance + * + * @param {TopologyDescription} topologyDescription + * @returns {boolean} + */ module.exports = function isAtlas(topologyDescription) { if (getConstructorName(topologyDescription) !== 'TopologyDescription') { return false; } - const hostnames = Array.from(topologyDescription.servers.keys()); - - if (hostnames.length === 0) { + if (topologyDescription.servers.size === 0) { return false; } - for (let i = 0, il = hostnames.length; i < il; ++i) { - const url = new URL(hostnames[i]); - if ( - url.hostname.endsWith('.mongodb.net') === false || - url.port !== '27017' - ) { + for (const server of topologyDescription.servers.values()) { + if (server.host.endsWith('.mongodb.net') === false || server.port !== 27017) { return false; } } + return true; }; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/update/applyTimestampsToChildren.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/update/applyTimestampsToChildren.js index 67f1b0c38..5b8e7deb5 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/update/applyTimestampsToChildren.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/update/applyTimestampsToChildren.js @@ -82,12 +82,15 @@ function applyTimestampsToChildren(now, update, schema) { function applyTimestampsToDocumentArray(arr, schematype, now) { const timestamps = schematype.schema.options.timestamps; + const len = arr.length; + if (!timestamps) { + for (let i = 0; i < len; ++i) { + applyTimestampsToChildren(now, arr[i], schematype.schema); + } return; } - const len = arr.length; - const createdAt = handleTimestampOption(timestamps, 'createdAt'); const updatedAt = handleTimestampOption(timestamps, 'updatedAt'); for (let i = 0; i < len; ++i) { @@ -105,6 +108,7 @@ function applyTimestampsToDocumentArray(arr, schematype, now) { function applyTimestampsToSingleNested(subdoc, schematype, now) { const timestamps = schematype.schema.options.timestamps; if (!timestamps) { + applyTimestampsToChildren(now, subdoc, schematype.schema); return; } diff --git a/food-ordering-app/server/node_modules/mongoose/lib/helpers/update/castArrayFilters.js b/food-ordering-app/server/node_modules/mongoose/lib/helpers/update/castArrayFilters.js index 76ce94b03..163e33be1 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/helpers/update/castArrayFilters.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/helpers/update/castArrayFilters.js @@ -37,14 +37,36 @@ function _castArrayFilters(arrayFilters, schema, strictQuery, updatedPathsByFilt if (filter == null) { throw new Error(`Got null array filter in ${arrayFilters}`); } - for (const key of Object.keys(filter)) { - if (key === '$and' || key === '$or') { + const keys = Object.keys(filter).filter(key => filter[key] != null); + if (keys.length === 0) { + continue; + } + + const firstKey = keys[0]; + if (firstKey === '$and' || firstKey === '$or') { + for (const key of keys) { _castArrayFilters(filter[key], schema, strictQuery, updatedPathsByFilter, query); - continue; - } - if (filter[key] == null) { - continue; } + continue; + } + const dot = firstKey.indexOf('.'); + const filterWildcardPath = dot === -1 ? firstKey : firstKey.substring(0, dot); + if (updatedPathsByFilter[filterWildcardPath] == null) { + continue; + } + const baseFilterPath = cleanPositionalOperators( + updatedPathsByFilter[filterWildcardPath] + ); + + const baseSchematype = getPath(schema, baseFilterPath); + let filterBaseSchema = baseSchematype != null ? baseSchematype.schema : null; + if (filterBaseSchema != null && + filterBaseSchema.discriminators != null && + filter[filterWildcardPath + '.' + filterBaseSchema.options.discriminatorKey]) { + filterBaseSchema = filterBaseSchema.discriminators[filter[filterWildcardPath + '.' + filterBaseSchema.options.discriminatorKey]] || filterBaseSchema; + } + + for (const key of keys) { if (updatedPathsByFilter[key] === null) { continue; } @@ -52,21 +74,25 @@ function _castArrayFilters(arrayFilters, schema, strictQuery, updatedPathsByFilt continue; } const dot = key.indexOf('.'); - let filterPath = dot === -1 ? - updatedPathsByFilter[key] + '.0' : - updatedPathsByFilter[key.substring(0, dot)] + '.0' + key.substring(dot); - if (filterPath == null) { - throw new Error(`Filter path not found for ${key}`); + + let filterPathRelativeToBase = dot === -1 ? null : key.substring(dot); + let schematype; + if (filterPathRelativeToBase == null || filterBaseSchema == null) { + schematype = baseSchematype; + } else { + // If there are multiple array filters in the path being updated, make sure + // to replace them so we can get the schema path. + filterPathRelativeToBase = cleanPositionalOperators(filterPathRelativeToBase); + schematype = getPath(filterBaseSchema, filterPathRelativeToBase); } - // If there are multiple array filters in the path being updated, make sure - // to replace them so we can get the schema path. - filterPath = cleanPositionalOperators(filterPath); - const schematype = getPath(schema, filterPath); if (schematype == null) { if (!strictQuery) { return; } + const filterPath = filterPathRelativeToBase == null ? + baseFilterPath + '.0' : + baseFilterPath + '.0' + filterPathRelativeToBase; // For now, treat `strictQuery = true` and `strictQuery = 'throw'` as // equivalent for casting array filters. `strictQuery = true` doesn't // quite work in this context because we never want to silently strip out diff --git a/food-ordering-app/server/node_modules/mongoose/lib/index.js b/food-ordering-app/server/node_modules/mongoose/lib/index.js index 69bd2de28..94b8082ff 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/index.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/index.js @@ -19,24 +19,22 @@ const Types = require('./types'); const Query = require('./query'); const Model = require('./model'); const applyPlugins = require('./helpers/schema/applyPlugins'); +const builtinPlugins = require('./plugins'); const driver = require('./driver'); const promiseOrCallback = require('./helpers/promiseOrCallback'); const legacyPluralize = require('./helpers/pluralize'); const utils = require('./utils'); const pkg = require('../package.json'); const cast = require('./cast'); -const removeSubdocs = require('./plugins/removeSubdocs'); -const saveSubdocs = require('./plugins/saveSubdocs'); -const trackTransaction = require('./plugins/trackTransaction'); -const validateBeforeSave = require('./plugins/validateBeforeSave'); const Aggregate = require('./aggregate'); const PromiseProvider = require('./promise_provider'); -const shardingPlugin = require('./plugins/sharding'); +const printStrictQueryWarning = require('./helpers/printStrictQueryWarning'); const trusted = require('./helpers/query/trusted').trusted; const sanitizeFilter = require('./helpers/query/sanitizeFilter'); const isBsonType = require('./helpers/isBsonType'); const MongooseError = require('./error/mongooseError'); +const SetOptionError = require('./error/setOptionError'); const defaultMongooseSymbol = Symbol.for('mongoose:default'); @@ -51,6 +49,7 @@ const objectIdHexRegexp = /^[0-9A-Fa-f]{24}$/; * Most apps will only use this one instance. * * #### Example: + * * const mongoose = require('mongoose'); * mongoose instanceof mongoose.Mongoose; // true * @@ -62,6 +61,7 @@ const objectIdHexRegexp = /^[0-9A-Fa-f]{24}$/; */ function Mongoose(options) { this.connections = []; + this.nextConnectionId = 0; this.models = {}; this.events = new EventEmitter(); this.__driver = driver.get(); @@ -71,8 +71,11 @@ function Mongoose(options) { autoIndex: true, autoCreate: true }, options); - const conn = this.createConnection(); // default connection - conn.models = this.models; + const createInitialConnection = utils.getOption('createInitialConnection', this.options); + if (createInitialConnection == null || createInitialConnection) { + const conn = this.createConnection(); // default connection + conn.models = this.models; + } if (this.options.pluralization) { this._pluralize = legacyPluralize; @@ -105,15 +108,10 @@ function Mongoose(options) { configurable: false, enumerable: true, writable: false, - value: [ - [saveSubdocs, { deduplicate: true }], - [validateBeforeSave, { deduplicate: true }], - [shardingPlugin, { deduplicate: true }], - [removeSubdocs, { deduplicate: true }], - [trackTransaction, { deduplicate: true }] - ] + value: Object.values(builtinPlugins).map(plugin => ([plugin, { deduplicate: true }])) }); } + Mongoose.prototype.cast = cast; /** * Expose connection states for user-land @@ -180,6 +178,9 @@ Mongoose.prototype.setDriver = function setDriver(driver) { /** * Sets mongoose options * + * `key` can be used a object to set multiple options at once. + * If a error gets thrown for one option, other options will still be evaluated. + * * #### Example: * * mongoose.set('test', value) // sets the 'test' option to `value` @@ -188,60 +189,94 @@ Mongoose.prototype.setDriver = function setDriver(driver) { * * mongoose.set('debug', function(collectionName, methodName, ...methodArgs) {}); // use custom function to log collection methods + arguments * - * Currently supported options are: - * - 'applyPluginsToChildSchemas': `true` by default. Set to false to skip applying global plugins to child schemas - * - 'applyPluginsToDiscriminators': `false` by default. Set to true to apply global plugins to discriminator schemas. This typically isn't necessary because plugins are applied to the base schema and discriminators copy all middleware, methods, statics, and properties from the base schema. - * - 'autoCreate': Set to `true` to make Mongoose call [`Model.createCollection()`](/docs/api/model.html#model_Model.createCollection) automatically when you create a model with `mongoose.model()` or `conn.model()`. This is useful for testing transactions, change streams, and other features that require the collection to exist. - * - 'autoIndex': `true` by default. Set to false to disable automatic index creation for all models associated with this Mongoose instance. - * - 'debug': If `true`, prints the operations mongoose sends to MongoDB to the console. If a writable stream is passed, it will log to that stream, without colorization. If a callback function is passed, it will receive the collection name, the method name, then all arguments passed to the method. For example, if you wanted to replicate the default logging, you could output from the callback `Mongoose: ${collectionName}.${methodName}(${methodArgs.join(', ')})`. - * - 'returnOriginal': If `false`, changes the default `returnOriginal` option to `findOneAndUpdate()`, `findByIdAndUpdate`, and `findOneAndReplace()` to false. This is equivalent to setting the `new` option to `true` for `findOneAndX()` calls by default. Read our [`findOneAndUpdate()` tutorial](/docs/tutorials/findoneandupdate.html) for more information. - * - 'bufferCommands': enable/disable mongoose's buffering mechanism for all connections and models - * - 'cloneSchemas': `false` by default. Set to `true` to `clone()` all schemas before compiling into a model. - * - 'debug': If `true`, prints the operations mongoose sends to MongoDB to the console. If a writable stream is passed, it will log to that stream, without colorization. If a callback function is passed, it will receive the collection name, the method name, then all arugments passed to the method. For example, if you wanted to replicate the default logging, you could output from the callback `Mongoose: ${collectionName}.${methodName}(${methodArgs.join(', ')})`. - * - 'timestamps.createdAt.immutable': `true` by default. If `false`, it will change the `createdAt` field to be [`immutable: false`](https://mongoosejs.com/docs/api/schematype.html#schematype_SchemaType-immutable) which means you can update the `createdAt` - * - 'maxTimeMS': If set, attaches [maxTimeMS](https://docs.mongodb.com/manual/reference/operator/meta/maxTimeMS/) to every query - * - 'objectIdGetter': `true` by default. Mongoose adds a getter to MongoDB ObjectId's called `_id` that returns `this` for convenience with populate. Set this to false to remove the getter. - * - 'overwriteModels': Set to `true` to default to overwriting models with the same name when calling `mongoose.model()`, as opposed to throwing an `OverwriteModelError`. - * - 'returnOriginal': If `false`, changes the default `returnOriginal` option to `findOneAndUpdate()`, `findByIdAndUpdate`, and `findOneAndReplace()` to false. This is equivalent to setting the `new` option to `true` for `findOneAndX()` calls by default. Read our [`findOneAndUpdate()` tutorial](/docs/tutorials/findoneandupdate.html) for more information. - * - 'runValidators': `false` by default. Set to true to enable [update validators](/docs/validation.html#update-validators) for all validators by default. - * - 'selectPopulatedPaths': `true` by default. Set to false to opt out of Mongoose adding all fields that you `populate()` to your `select()`. The schema-level option `selectPopulatedPaths` overwrites this one. - * - 'strict': `true` by default, may be `false`, `true`, or `'throw'`. Sets the default strict mode for schemas. - * - 'strictQuery': same value as 'strict' by default (`true`), may be `false`, `true`, or `'throw'`. Sets the default [strictQuery](/docs/guide.html#strictQuery) mode for schemas. - * - 'toJSON': `{ transform: true, flattenDecimals: true }` by default. Overwrites default objects to [`toJSON()`](/docs/api.html#document_Document-toJSON), for determining how Mongoose documents get serialized by `JSON.stringify()` - * - 'toObject': `{ transform: true, flattenDecimals: true }` by default. Overwrites default objects to [`toObject()`](/docs/api.html#document_Document-toObject) + * mongoose.set({ debug: true, autoIndex: false }); // set multiple options at once * - * @param {String} key - * @param {String|Function|Boolean} value + * Currently supported options are: + * - `allowDiskUse`: Set to `true` to set `allowDiskUse` to true to all aggregation operations by default. + * - `applyPluginsToChildSchemas`: `true` by default. Set to false to skip applying global plugins to child schemas + * - `applyPluginsToDiscriminators`: `false` by default. Set to true to apply global plugins to discriminator schemas. This typically isn't necessary because plugins are applied to the base schema and discriminators copy all middleware, methods, statics, and properties from the base schema. + * - `autoCreate`: Set to `true` to make Mongoose call [`Model.createCollection()`](/docs/api/model.html#model_Model-createCollection) automatically when you create a model with `mongoose.model()` or `conn.model()`. This is useful for testing transactions, change streams, and other features that require the collection to exist. + * - `autoIndex`: `true` by default. Set to false to disable automatic index creation for all models associated with this Mongoose instance. + * - `bufferCommands`: enable/disable mongoose's buffering mechanism for all connections and models + * - `bufferTimeoutMS`: If bufferCommands is on, this option sets the maximum amount of time Mongoose buffering will wait before throwing an error. If not specified, Mongoose will use 10000 (10 seconds). + * - `cloneSchemas`: `false` by default. Set to `true` to `clone()` all schemas before compiling into a model. + * - `debug`: If `true`, prints the operations mongoose sends to MongoDB to the console. If a writable stream is passed, it will log to that stream, without colorization. If a callback function is passed, it will receive the collection name, the method name, then all arguments passed to the method. For example, if you wanted to replicate the default logging, you could output from the callback `Mongoose: ${collectionName}.${methodName}(${methodArgs.join(', ')})`. + * - `id`: If `true`, adds a `id` virtual to all schemas unless overwritten on a per-schema basis. + * - `timestamps.createdAt.immutable`: `true` by default. If `false`, it will change the `createdAt` field to be [`immutable: false`](https://mongoosejs.com/docs/api/schematype.html#schematype_SchemaType-immutable) which means you can update the `createdAt` + * - `maxTimeMS`: If set, attaches [maxTimeMS](https://www.mongodb.com/docs/manual/reference/operator/meta/maxTimeMS/) to every query + * - `objectIdGetter`: `true` by default. Mongoose adds a getter to MongoDB ObjectId's called `_id` that returns `this` for convenience with populate. Set this to false to remove the getter. + * - `overwriteModels`: Set to `true` to default to overwriting models with the same name when calling `mongoose.model()`, as opposed to throwing an `OverwriteModelError`. + * - `returnOriginal`: If `false`, changes the default `returnOriginal` option to `findOneAndUpdate()`, `findByIdAndUpdate`, and `findOneAndReplace()` to false. This is equivalent to setting the `new` option to `true` for `findOneAndX()` calls by default. Read our [`findOneAndUpdate()` tutorial](/docs/tutorials/findoneandupdate.html) for more information. + * - `runValidators`: `false` by default. Set to true to enable [update validators](/docs/validation.html#update-validators) for all validators by default. + * - `sanitizeFilter`: `false` by default. Set to true to enable the [sanitization of the query filters](/docs/api/mongoose.html#mongoose_Mongoose-sanitizeFilter) against query selector injection attacks by wrapping any nested objects that have a property whose name starts with `$` in a `$eq`. + * - `selectPopulatedPaths`: `true` by default. Set to false to opt out of Mongoose adding all fields that you `populate()` to your `select()`. The schema-level option `selectPopulatedPaths` overwrites this one. + * - `strict`: `true` by default, may be `false`, `true`, or `'throw'`. Sets the default strict mode for schemas. + * - `strictQuery`: same value as 'strict' by default (`true`), may be `false`, `true`, or `'throw'`. Sets the default [strictQuery](/docs/guide.html#strictQuery) mode for schemas. The default value will be switched back to `false` in Mongoose 7, use `mongoose.set('strictQuery', false);` if you want to prepare for the change. + * - `toJSON`: `{ transform: true, flattenDecimals: true }` by default. Overwrites default objects to [`toJSON()`](/docs/api/document.html#document_Document-toJSON), for determining how Mongoose documents get serialized by `JSON.stringify()` + * - `toObject`: `{ transform: true, flattenDecimals: true }` by default. Overwrites default objects to [`toObject()`](/docs/api/document.html#document_Document-toObject) + * + * @param {String|Object} key The name of the option or a object of multiple key-value pairs + * @param {String|Function|Boolean} value The value of the option, unused if "key" is a object + * @returns {Mongoose} The used Mongoose instnace * @api public */ Mongoose.prototype.set = function(key, value) { const _mongoose = this instanceof Mongoose ? this : mongoose; - if (VALID_OPTIONS.indexOf(key) === -1) { - throw new Error(`\`${key}\` is an invalid option.`); - } + if (arguments.length === 1 && typeof key !== 'object') { + if (VALID_OPTIONS.indexOf(key) === -1) { + const error = new SetOptionError(); + error.addError(key, new SetOptionError.SetOptionInnerError(key)); + throw error; + } - if (arguments.length === 1) { return _mongoose.options[key]; } - _mongoose.options[key] = value; + let options = {}; - if (key === 'objectIdGetter') { - if (value) { - Object.defineProperty(mongoose.Types.ObjectId.prototype, '_id', { - enumerable: false, - configurable: true, - get: function() { - return this; - } - }); - } else { - delete mongoose.Types.ObjectId.prototype._id; + if (arguments.length === 2) { + options = { [key]: value }; + } + + if (arguments.length === 1 && typeof key === 'object') { + options = key; + } + + // array for errors to collect all errors for all key-value pairs, like ".validate" + let error = undefined; + + for (const [optionKey, optionValue] of Object.entries(options)) { + if (VALID_OPTIONS.indexOf(optionKey) === -1) { + if (!error) { + error = new SetOptionError(); + } + error.addError(optionKey, new SetOptionError.SetOptionInnerError(optionKey)); + continue; + } + + _mongoose.options[optionKey] = optionValue; + + if (optionKey === 'objectIdGetter') { + if (optionValue) { + Object.defineProperty(mongoose.Types.ObjectId.prototype, '_id', { + enumerable: false, + configurable: true, + get: function() { + return this; + } + }); + } else { + delete mongoose.Types.ObjectId.prototype._id; + } } } + if (error) { + throw error; + } + return _mongoose; }; @@ -270,41 +305,37 @@ Mongoose.prototype.get = Mongoose.prototype.set; * #### Example: * * // with mongodb:// URI - * db = mongoose.createConnection('mongodb://user:pass@localhost:port/database'); + * db = mongoose.createConnection('mongodb://user:pass@127.0.0.1:port/database'); * * // and options * const opts = { db: { native_parser: true }} - * db = mongoose.createConnection('mongodb://user:pass@localhost:port/database', opts); + * db = mongoose.createConnection('mongodb://user:pass@127.0.0.1:port/database', opts); * * // replica sets - * db = mongoose.createConnection('mongodb://user:pass@localhost:port,anotherhost:port,yetanother:port/database'); + * db = mongoose.createConnection('mongodb://user:pass@127.0.0.1:port,anotherhost:port,yetanother:port/database'); * * // and options * const opts = { replset: { strategy: 'ping', rs_name: 'testSet' }} - * db = mongoose.createConnection('mongodb://user:pass@localhost:port,anotherhost:port,yetanother:port/database', opts); - * - * // and options - * const opts = { server: { auto_reconnect: false }, user: 'username', pass: 'mypassword' } - * db = mongoose.createConnection('localhost', 'database', port, opts) + * db = mongoose.createConnection('mongodb://user:pass@127.0.0.1:port,anotherhost:port,yetanother:port/database', opts); * * // initialize now, connect later * db = mongoose.createConnection(); - * db.openUri('localhost', 'database', port, [opts]); + * db.openUri('127.0.0.1', 'database', port, [opts]); * - * @param {String} [uri] a mongodb:// URI - * @param {Object} [options] passed down to the [MongoDB driver's `connect()` function](https://mongodb.github.io/node-mongodb-native/3.0/api/MongoClient.html), except for 4 mongoose-specific options explained below. + * @param {String} uri mongodb URI to connect to + * @param {Object} [options] passed down to the [MongoDB driver's `connect()` function](https://mongodb.github.io/node-mongodb-native/4.9/interfaces/MongoClientOptions.html), except for 4 mongoose-specific options explained below. * @param {Boolean} [options.bufferCommands=true] Mongoose specific option. Set to false to [disable buffering](https://mongoosejs.com/docs/faq.html#callback_never_executes) on all models associated with this connection. * @param {String} [options.dbName] The name of the database you want to use. If not provided, Mongoose uses the database name from connection string. * @param {String} [options.user] username for authentication, equivalent to `options.auth.user`. Maintained for backwards compatibility. * @param {String} [options.pass] password for authentication, equivalent to `options.auth.password`. Maintained for backwards compatibility. * @param {Boolean} [options.autoIndex=true] Mongoose-specific option. Set to false to disable automatic index creation for all models associated with this connection. - * @param {Class} [options.promiseLibrary] Sets the [underlying driver's promise library](https://mongodb.github.io/node-mongodb-native/3.1/api/MongoClient.html). + * @param {Class} [options.promiseLibrary] Sets the [underlying driver's promise library](https://mongodb.github.io/node-mongodb-native/4.9/interfaces/MongoClientOptions.html#promiseLibrary). * @param {Number} [options.maxPoolSize=5] The maximum number of sockets the MongoDB driver will keep open for this connection. Keep in mind that MongoDB only allows one operation per socket at a time, so you may want to increase this if you find you have a few slow queries that are blocking faster queries from proceeding. See [Slow Trains in MongoDB and Node.js](https://thecodebarbarian.com/slow-trains-in-mongodb-and-nodejs). * @param {Number} [options.minPoolSize=1] The minimum number of sockets the MongoDB driver will keep open for this connection. Keep in mind that MongoDB only allows one operation per socket at a time, so you may want to increase this if you find you have a few slow queries that are blocking faster queries from proceeding. See [Slow Trains in MongoDB and Node.js](https://thecodebarbarian.com/slow-trains-in-mongodb-and-nodejs). * @param {Number} [options.connectTimeoutMS=30000] How long the MongoDB driver will wait before killing a socket due to inactivity _during initial connection_. Defaults to 30000. This option is passed transparently to [Node.js' `socket#setTimeout()` function](https://nodejs.org/api/net.html#net_socket_settimeout_timeout_callback). * @param {Number} [options.socketTimeoutMS=30000] How long the MongoDB driver will wait before killing a socket due to inactivity _after initial connection_. A socket may be inactive because of either no activity or a long-running operation. This is set to `30000` by default, you should set this to 2-3x your longest running operation if you expect some of your database operations to run longer than 20 seconds. This option is passed to [Node.js `socket#setTimeout()` function](https://nodejs.org/api/net.html#net_socket_settimeout_timeout_callback) after the MongoDB driver successfully completes. * @param {Number} [options.family=0] Passed transparently to [Node.js' `dns.lookup()`](https://nodejs.org/api/dns.html#dns_dns_lookup_hostname_options_callback) function. May be either `0`, `4`, or `6`. `4` means use IPv4 only, `6` means use IPv6 only, `0` means try both. - * @return {Connection} the created Connection object. Connections are not thenable, so you can't do `await mongoose.createConnection()`. To await use mongoose.createConnection(uri).asPromise() instead. + * @return {Connection} the created Connection object. Connections are not thenable, so you can't do `await mongoose.createConnection()`. To await use `mongoose.createConnection(uri).asPromise()` instead. * @api public */ @@ -318,6 +349,7 @@ Mongoose.prototype.createConnection = function(uri, options, callback) { options = null; } _mongoose.connections.push(conn); + _mongoose.nextConnectionId++; _mongoose.events.emit('createConnection', conn); if (arguments.length > 0) { @@ -332,10 +364,10 @@ Mongoose.prototype.createConnection = function(uri, options, callback) { * * #### Example: * - * mongoose.connect('mongodb://user:pass@localhost:port/database'); + * mongoose.connect('mongodb://user:pass@127.0.0.1:port/database'); * * // replica sets - * const uri = 'mongodb://user:pass@localhost:port,anotherhost:port,yetanother:port/mydatabase'; + * const uri = 'mongodb://user:pass@127.0.0.1:port,anotherhost:port,yetanother:port/mydatabase'; * mongoose.connect(uri); * * // with options @@ -347,8 +379,8 @@ Mongoose.prototype.createConnection = function(uri, options, callback) { * // if error is truthy, the initial connection failed. * }) * - * @param {String} uri(s) - * @param {Object} [options] passed down to the [MongoDB driver's `connect()` function](https://mongodb.github.io/node-mongodb-native/3.0/api/MongoClient.html), except for 4 mongoose-specific options explained below. + * @param {String} uri mongodb URI to connect to + * @param {Object} [options] passed down to the [MongoDB driver's `connect()` function](https://mongodb.github.io/node-mongodb-native/4.9/interfaces/MongoClientOptions.html), except for 4 mongoose-specific options explained below. * @param {Boolean} [options.bufferCommands=true] Mongoose specific option. Set to false to [disable buffering](https://mongoosejs.com/docs/faq.html#callback_never_executes) on all models associated with this connection. * @param {Number} [options.bufferTimeoutMS=10000] Mongoose specific option. If `bufferCommands` is true, Mongoose will throw an error after `bufferTimeoutMS` if the operation is still buffered. * @param {String} [options.dbName] The name of the database we want to use. If not provided, use database name from connection string. @@ -359,13 +391,13 @@ Mongoose.prototype.createConnection = function(uri, options, callback) { * @param {Number} [options.serverSelectionTimeoutMS] If `useUnifiedTopology = true`, the MongoDB driver will try to find a server to send any given operation to, and keep retrying for `serverSelectionTimeoutMS` milliseconds before erroring out. If not set, the MongoDB driver defaults to using `30000` (30 seconds). * @param {Number} [options.heartbeatFrequencyMS] If `useUnifiedTopology = true`, the MongoDB driver sends a heartbeat every `heartbeatFrequencyMS` to check on the status of the connection. A heartbeat is subject to `serverSelectionTimeoutMS`, so the MongoDB driver will retry failed heartbeats for up to 30 seconds by default. Mongoose only emits a `'disconnected'` event after a heartbeat has failed, so you may want to decrease this setting to reduce the time between when your server goes down and when Mongoose emits `'disconnected'`. We recommend you do **not** set this setting below 1000, too many heartbeats can lead to performance degradation. * @param {Boolean} [options.autoIndex=true] Mongoose-specific option. Set to false to disable automatic index creation for all models associated with this connection. - * @param {Class} [options.promiseLibrary] Sets the [underlying driver's promise library](https://mongodb.github.io/node-mongodb-native/3.1/api/MongoClient.html). + * @param {Class} [options.promiseLibrary] Sets the [underlying driver's promise library](https://mongodb.github.io/node-mongodb-native/4.9/interfaces/MongoClientOptions.html#promiseLibrary). * @param {Number} [options.connectTimeoutMS=30000] How long the MongoDB driver will wait before killing a socket due to inactivity _during initial connection_. Defaults to 30000. This option is passed transparently to [Node.js' `socket#setTimeout()` function](https://nodejs.org/api/net.html#net_socket_settimeout_timeout_callback). * @param {Number} [options.socketTimeoutMS=30000] How long the MongoDB driver will wait before killing a socket due to inactivity _after initial connection_. A socket may be inactive because of either no activity or a long-running operation. This is set to `30000` by default, you should set this to 2-3x your longest running operation if you expect some of your database operations to run longer than 20 seconds. This option is passed to [Node.js `socket#setTimeout()` function](https://nodejs.org/api/net.html#net_socket_settimeout_timeout_callback) after the MongoDB driver successfully completes. * @param {Number} [options.family=0] Passed transparently to [Node.js' `dns.lookup()`](https://nodejs.org/api/dns.html#dns_dns_lookup_hostname_options_callback) function. May be either `0`, `4`, or `6`. `4` means use IPv4 only, `6` means use IPv6 only, `0` means try both. * @param {Boolean} [options.autoCreate=false] Set to `true` to make Mongoose automatically call `createCollection()` on every model created on this connection. * @param {Function} [callback] - * @see Mongoose#createConnection #index_Mongoose-createConnection + * @see Mongoose#createConnection /docs/api/mongoose.html#mongoose_Mongoose-createConnection * @api public * @return {Promise} resolves to `this` if connection succeeded */ @@ -374,6 +406,10 @@ Mongoose.prototype.connect = function(uri, options, callback) { const _mongoose = this instanceof Mongoose ? this : mongoose; const conn = _mongoose.connection; + if (_mongoose.options.strictQuery === undefined) { + printStrictQueryWarning(); + } + return _mongoose._promiseOrCallback(callback, cb => { conn.openUri(uri, options, err => { if (err != null) { @@ -414,15 +450,15 @@ Mongoose.prototype.disconnect = function(callback) { }; /** - * _Requires MongoDB >= 3.6.0._ Starts a [MongoDB session](https://docs.mongodb.com/manual/release-notes/3.6/#client-sessions) - * for benefits like causal consistency, [retryable writes](https://docs.mongodb.com/manual/core/retryable-writes/), + * _Requires MongoDB >= 3.6.0._ Starts a [MongoDB session](https://www.mongodb.com/docs/manual/release-notes/3.6/#client-sessions) + * for benefits like causal consistency, [retryable writes](https://www.mongodb.com/docs/manual/core/retryable-writes/), * and [transactions](https://thecodebarbarian.com/a-node-js-perspective-on-mongodb-4-transactions.html). * * Calling `mongoose.startSession()` is equivalent to calling `mongoose.connection.startSession()`. * Sessions are scoped to a connection, so calling `mongoose.startSession()` - * starts a session on the [default mongoose connection](/docs/api.html#mongoose_Mongoose-connection). + * starts a session on the [default mongoose connection](/docs/api/mongoose.html#mongoose_Mongoose-connection). * - * @param {Object} [options] see the [mongodb driver options](https://mongodb.github.io/node-mongodb-native/3.0/api/MongoClient.html#startSession) + * @param {Object} [options] see the [mongodb driver options](https://mongodb.github.io/node-mongodb-native/4.9/classes/MongoClient.html#startSession) * @param {Boolean} [options.causalConsistency=true] set to false to disable causal consistency * @param {Function} [callback] * @return {Promise} promise that resolves to a MongoDB driver `ClientSession` @@ -512,6 +548,14 @@ Mongoose.prototype.model = function(name, schema, collection, options) { schema = false; } + if (arguments.length === 1) { + const model = _mongoose.models[name]; + if (!model) { + throw new MongooseError.MissingSchemaError(name); + } + return model; + } + if (utils.isObject(schema) && !(schema instanceof Schema)) { schema = new Schema(schema); } @@ -674,7 +718,9 @@ Mongoose.prototype._applyPlugins = function(schema, options) { options = options || {}; options.applyPluginsToDiscriminators = _mongoose.options && _mongoose.options.applyPluginsToDiscriminators || false; - options.applyPluginsToChildSchemas = typeof (_mongoose.options && _mongoose.options.applyPluginsToDiscriminators) === 'boolean' ? _mongoose.options.applyPluginsToDiscriminators : true; + options.applyPluginsToChildSchemas = typeof (_mongoose.options && _mongoose.options.applyPluginsToChildSchemas) === 'boolean' ? + _mongoose.options.applyPluginsToChildSchemas : + true; applyPlugins(schema, _mongoose.plugins, options, '$globalPluginsApplied'); }; @@ -686,7 +732,7 @@ Mongoose.prototype._applyPlugins = function(schema, options) { * @param {Function} fn plugin callback * @param {Object} [opts] optional options * @return {Mongoose} this - * @see plugins ./plugins.html + * @see plugins /docs/plugins.html * @api public */ @@ -728,7 +774,7 @@ Mongoose.prototype.__defineSetter__('connection', function(v) { }); /** - * An array containing all [connections](connections.html) associated with this + * An array containing all [connections](connection.html) associated with this * Mongoose instance. By default, there is 1 connection. Calling * [`createConnection()`](#mongoose_Mongoose-createConnection) adds a connection * to this array. @@ -739,7 +785,7 @@ Mongoose.prototype.__defineSetter__('connection', function(v) { * mongoose.connections.length; // 1, just the default connection * mongoose.connections[0] === mongoose.connection; // true * - * mongoose.createConnection('mongodb://localhost:27017/test'); + * mongoose.createConnection('mongodb://127.0.0.1:27017/test'); * mongoose.connections.length; // 2 * * @memberOf Mongoose @@ -750,6 +796,27 @@ Mongoose.prototype.__defineSetter__('connection', function(v) { Mongoose.prototype.connections; +/** + * An integer containing the value of the next connection id. Calling + * [`createConnection()`](#mongoose_Mongoose-createConnection) increments + * this value. + * + * #### Example: + * + * const mongoose = require('mongoose'); + * mongoose.createConnection(); // id `0`, `nextConnectionId` becomes `1` + * mongoose.createConnection(); // id `1`, `nextConnectionId` becomes `2` + * mongoose.connections[0].destroy() // Removes connection with id `0` + * mongoose.createConnection(); // id `2`, `nextConnectionId` becomes `3` + * + * @memberOf Mongoose + * @instance + * @property {Number} nextConnectionId + * @api private + */ + +Mongoose.prototype.nextConnectionId; + /** * The Mongoose Aggregate constructor * @@ -860,7 +927,7 @@ Mongoose.prototype.SchemaType = SchemaType; * _Alias of mongoose.Schema.Types for backwards compatibility._ * * @property SchemaTypes - * @see Schema.SchemaTypes #schema_Schema.Types + * @see Schema.SchemaTypes /docs/schematypes.html * @api public */ @@ -889,7 +956,7 @@ Mongoose.prototype.VirtualType = VirtualType; * - [Buffer](/docs/schematypes.html#buffers) * - [Embedded](/docs/schematypes.html#schemas) * - [DocumentArray](/docs/api/documentarraypath.html) - * - [Decimal128](/docs/api.html#mongoose_Mongoose-Decimal128) + * - [Decimal128](/docs/api/mongoose.html#mongoose_Mongoose-Decimal128) * - [ObjectId](/docs/schematypes.html#objectids) * - [Map](/docs/schematypes.html#maps) * - [Subdocument](/docs/schematypes.html#schemas) @@ -951,7 +1018,7 @@ Mongoose.prototype.PromiseProvider = PromiseProvider; Mongoose.prototype.Model = Model; /** - * The Mongoose [Document](/docs/api.html#Document) constructor. + * The Mongoose [Document](/docs/api/document.html#Document) constructor. * * @method Document * @api public @@ -972,7 +1039,7 @@ Mongoose.prototype.DocumentProvider = require('./document_provider'); /** * The Mongoose ObjectId [SchemaType](/docs/schematypes.html). Used for * declaring paths in your schema that should be - * [MongoDB ObjectIds](https://docs.mongodb.com/manual/reference/method/ObjectId/). + * [MongoDB ObjectIds](https://www.mongodb.com/docs/manual/reference/method/ObjectId/). * Do not use this to create a new ObjectId instance, use `mongoose.Types.ObjectId` * instead. * @@ -1260,10 +1327,10 @@ Mongoose.prototype.skipMiddlewareFunction = Kareem.skipWrappedFunction; Mongoose.prototype.overwriteMiddlewareResult = Kareem.overwriteResult; -/*! +/** * The exports object is an instance of Mongoose. * - * @api public + * @api private */ const mongoose = module.exports = exports = new Mongoose({ diff --git a/food-ordering-app/server/node_modules/mongoose/lib/internal.js b/food-ordering-app/server/node_modules/mongoose/lib/internal.js index a31714825..c4445c254 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/internal.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/internal.js @@ -13,8 +13,9 @@ function InternalCache() { this.activePaths = new ActiveRoster(); } +InternalCache.prototype.strictMode = true; + InternalCache.prototype.fullPath = undefined; -InternalCache.prototype.strictMode = undefined; InternalCache.prototype.selected = undefined; InternalCache.prototype.shardval = undefined; InternalCache.prototype.saveError = undefined; @@ -28,6 +29,7 @@ InternalCache.prototype._id = undefined; InternalCache.prototype.ownerDocument = undefined; InternalCache.prototype.populate = undefined; // what we want to populate in this doc InternalCache.prototype.populated = undefined;// the _ids that have been populated +InternalCache.prototype.primitiveAtomics = undefined; /** * If `false`, this document was not the result of population. diff --git a/food-ordering-app/server/node_modules/mongoose/lib/model.js b/food-ordering-app/server/node_modules/mongoose/lib/model.js index c084f016d..b758e27c5 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/model.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/model.js @@ -10,6 +10,7 @@ const Document = require('./document'); const DocumentNotFoundError = require('./error/notFound'); const DivergentArrayError = require('./error/divergentArray'); const EventEmitter = require('events').EventEmitter; +const MongooseBulkWriteError = require('./error/bulkWriteError'); const MongooseBuffer = require('./types/buffer'); const MongooseError = require('./error/index'); const OverwriteModelError = require('./error/overwriteModel'); @@ -22,6 +23,8 @@ const ServerSelectionError = require('./error/serverSelection'); const ValidationError = require('./error/validation'); const VersionError = require('./error/version'); const ParallelSaveError = require('./error/parallelSave'); +const applyDefaultsHelper = require('./helpers/document/applyDefaults'); +const applyDefaultsToPOJO = require('./helpers/model/applyDefaultsToPOJO'); const applyQueryMiddleware = require('./helpers/query/applyQueryMiddleware'); const applyHooks = require('./helpers/model/applyHooks'); const applyMethods = require('./helpers/model/applyMethods'); @@ -34,7 +37,9 @@ const assignVals = require('./helpers/populate/assignVals'); const castBulkWrite = require('./helpers/model/castBulkWrite'); const createPopulateQueryFilter = require('./helpers/populate/createPopulateQueryFilter'); const getDefaultBulkwriteResult = require('./helpers/getDefaultBulkwriteResult'); +const getSchemaDiscriminatorByValue = require('./helpers/discriminator/getSchemaDiscriminatorByValue'); const discriminator = require('./helpers/model/discriminator'); +const firstKey = require('./helpers/firstKey'); const each = require('./helpers/each'); const get = require('./helpers/get'); const getConstructorName = require('./helpers/getConstructorName'); @@ -48,14 +53,18 @@ const { getRelatedDBIndexes, getRelatedSchemaIndexes } = require('./helpers/indexes/getRelatedIndexes'); +const isPathExcluded = require('./helpers/projection/isPathExcluded'); const decorateDiscriminatorIndexOptions = require('./helpers/indexes/decorateDiscriminatorIndexOptions'); const isPathSelectedInclusive = require('./helpers/projection/isPathSelectedInclusive'); const leanPopulateMap = require('./helpers/populate/leanPopulateMap'); const modifiedPaths = require('./helpers/update/modifiedPaths'); const parallelLimit = require('./helpers/parallelLimit'); +const parentPaths = require('./helpers/path/parentPaths'); const prepareDiscriminatorPipeline = require('./helpers/aggregate/prepareDiscriminatorPipeline'); +const pushNestedArrayPaths = require('./helpers/model/pushNestedArrayPaths'); const removeDeselectedForeignField = require('./helpers/populate/removeDeselectedForeignField'); const setDottedPath = require('./helpers/path/setDottedPath'); +const STATES = require('./connectionstate'); const util = require('util'); const utils = require('./utils'); @@ -75,12 +84,12 @@ const saveToObjectOptions = Object.assign({}, internalToObjectOptions, { /** * A Model is a class that's your primary tool for interacting with MongoDB. - * An instance of a Model is called a [Document](./api.html#Document). + * An instance of a Model is called a [Document](/docs/api/document.html#Document). * * In Mongoose, the term "Model" refers to subclasses of the `mongoose.Model` * class. You should not use the `mongoose.Model` class directly. The - * [`mongoose.model()`](./api.html#mongoose_Mongoose-model) and - * [`connection.model()`](./api.html#connection_Connection-model) functions + * [`mongoose.model()`](/docs/api/mongoose.html#mongoose_Mongoose-model) and + * [`connection.model()`](/docs/api/connection.html#connection_Connection-model) functions * create subclasses of `mongoose.Model` as shown below. * * #### Example: @@ -96,7 +105,7 @@ const saveToObjectOptions = Object.assign({}, internalToObjectOptions, { * const userFromDb = await UserModel.findOne({ name: 'Foo' }); * * @param {Object} doc values for initial set - * @param [fields] optional object containing the fields that were selected in the query which returned this document. You do **not** need to set this parameter to ensure Mongoose handles your [query projection](./api.html#query_Query-select). + * @param {Object} [fields] optional object containing the fields that were selected in the query which returned this document. You do **not** need to set this parameter to ensure Mongoose handles your [query projection](/docs/api/query.html#query_Query-select). * @param {Boolean} [skipId=false] optional boolean. If true, mongoose doesn't add an `_id` field to the document. * @inherits Document https://mongoosejs.com/docs/api/document.html * @event `error`: If listening to this event, 'error' is emitted when a document was saved without passing a callback and an `error` occurred. If not listening, the event bubbles to the connection used to create this Model. @@ -115,14 +124,15 @@ function Model(doc, fields, skipId) { Document.call(this, doc, fields, skipId); } -/*! +/** * Inherits from Document. * * All Model.prototype features are available on * top level (non-sub) documents. + * @api private */ -Model.prototype.__proto__ = Document.prototype; +Object.setPrototypeOf(Model.prototype, Document.prototype); Model.prototype.$isMongooseModelPrototype = true; /** @@ -210,6 +220,7 @@ Model.prototype.baseModelName; * await MyModel.findOne({ _id: 'Not a valid ObjectId' }).catch(noop); * * @api public + * @property events * @fires error whenever any query or model function errors * @memberOf Model * @static @@ -217,7 +228,7 @@ Model.prototype.baseModelName; Model.events; -/*! +/** * Compiled middleware for this model. Set in `applyHooks()`. * * @api private @@ -274,8 +285,10 @@ Model.prototype.$__handleSave = function(options, callback) { if ('checkKeys' in options) { saveOptions.checkKeys = options.checkKeys; } - if (!saveOptions.hasOwnProperty('session')) { - saveOptions.session = this.$session(); + + const session = this.$session(); + if (!saveOptions.hasOwnProperty('session') && session != null) { + saveOptions.session = session; } if (this.$isNew) { @@ -451,8 +464,8 @@ function generateVersionError(doc, modifiedPaths) { } /** - * Saves this document by inserting a new document into the database if [document.isNew](/docs/api.html#document_Document-isNew) is `true`, - * or sends an [updateOne](/docs/api.html#document_Document-updateOne) operation with just the modified paths if `isNew` is `false`. + * Saves this document by inserting a new document into the database if [document.isNew](/docs/api/document.html#document_Document-isNew) is `true`, + * or sends an [updateOne](/docs/api/document.html#document_Document-updateOne) operation with just the modified paths if `isNew` is `false`. * * #### Example: * @@ -468,17 +481,17 @@ function generateVersionError(doc, modifiedPaths) { * newProduct === product; // true * * @param {Object} [options] options optional options - * @param {Session} [options.session=null] the [session](https://docs.mongodb.com/manual/reference/server-sessions/) associated with this save operation. If not specified, defaults to the [document's associated session](api.html#document_Document-$session). + * @param {Session} [options.session=null] the [session](https://www.mongodb.com/docs/manual/reference/server-sessions/) associated with this save operation. If not specified, defaults to the [document's associated session](/docs/api/document.html#document_Document-$session). * @param {Object} [options.safe] (DEPRECATED) overrides [schema's safe option](https://mongoosejs.com//docs/guide.html#safe). Use the `w` option instead. * @param {Boolean} [options.validateBeforeSave] set to false to save without validating. * @param {Boolean} [options.validateModifiedOnly=false] if `true`, Mongoose will only validate modified paths, as opposed to modified paths and `required` paths. - * @param {Number|String} [options.w] set the [write concern](https://docs.mongodb.com/manual/reference/write-concern/#w-option). Overrides the [schema-level `writeConcern` option](/docs/guide.html#writeConcern) - * @param {Boolean} [options.j] set to true for MongoDB to wait until this `save()` has been [journaled before resolving the returned promise](https://docs.mongodb.com/manual/reference/write-concern/#j-option). Overrides the [schema-level `writeConcern` option](/docs/guide.html#writeConcern) - * @param {Number} [options.wtimeout] sets a [timeout for the write concern](https://docs.mongodb.com/manual/reference/write-concern/#wtimeout). Overrides the [schema-level `writeConcern` option](/docs/guide.html#writeConcern). - * @param {Boolean} [options.checkKeys=true] the MongoDB driver prevents you from saving keys that start with '$' or contain '.' by default. Set this option to `false` to skip that check. See [restrictions on field names](https://docs.mongodb.com/manual/reference/limits/#Restrictions-on-Field-Names) - * @param {Boolean} [options.timestamps=true] if `false` and [timestamps](./guide.html#timestamps) are enabled, skip timestamps for this `save()`. + * @param {Number|String} [options.w] set the [write concern](https://www.mongodb.com/docs/manual/reference/write-concern/#w-option). Overrides the [schema-level `writeConcern` option](/docs/guide.html#writeConcern) + * @param {Boolean} [options.j] set to true for MongoDB to wait until this `save()` has been [journaled before resolving the returned promise](https://www.mongodb.com/docs/manual/reference/write-concern/#j-option). Overrides the [schema-level `writeConcern` option](/docs/guide.html#writeConcern) + * @param {Number} [options.wtimeout] sets a [timeout for the write concern](https://www.mongodb.com/docs/manual/reference/write-concern/#wtimeout). Overrides the [schema-level `writeConcern` option](/docs/guide.html#writeConcern). + * @param {Boolean} [options.checkKeys=true] the MongoDB driver prevents you from saving keys that start with '$' or contain '.' by default. Set this option to `false` to skip that check. See [restrictions on field names](https://www.mongodb.com/docs/manual/reference/limits/#Restrictions-on-Field-Names) + * @param {Boolean} [options.timestamps=true] if `false` and [timestamps](/docs/guide.html#timestamps) are enabled, skip timestamps for this `save()`. * @param {Function} [fn] optional callback - * @throws {DocumentNotFoundError} if this [save updates an existing document](api.html#document_Document-isNew) but the document doesn't exist in the database. For example, you will get this error if the document is [deleted between when you retrieved the document and when you saved it](documents.html#updating). + * @throws {DocumentNotFoundError} if this [save updates an existing document](/docs/api/document.html#document_Document-isNew) but the document doesn't exist in the database. For example, you will get this error if the document is [deleted between when you retrieved the document and when you saved it](documents.html#updating). * @return {Promise|undefined} Returns undefined if used with callback or a Promise otherwise. * @api public * @see middleware https://mongoosejs.com/docs/middleware.html @@ -503,6 +516,9 @@ Model.prototype.save = function(options, fn) { if (options.hasOwnProperty('session')) { this.$session(options.session); } + if (this.$__.timestamps != null) { + options.timestamps = this.$__.timestamps; + } this.$__.$versionError = generateVersionError(this, this.modifiedPaths()); fn = this.constructor.$handleCallbackError(fn); @@ -533,12 +549,13 @@ Model.prototype.save = function(options, fn) { Model.prototype.$save = Model.prototype.save; -/*! +/** * Determines whether versioning should be skipped for the given path * * @param {Document} self * @param {String} path * @return {Boolean} true if versioning should be skipped for the given path + * @api private */ function shouldSkipVersioning(self, path) { const skipVersioning = self.$__schema.options.skipVersioning; @@ -550,16 +567,17 @@ function shouldSkipVersioning(self, path) { return skipVersioning[path]; } -/*! +/** * Apply the operation to the delta (update) clause as * well as track versioning for our where clause. * * @param {Document} self - * @param {Object} where + * @param {Object} where Unused * @param {Object} delta * @param {Object} data * @param {Mixed} val - * @param {String} [operation] + * @param {String} [op] + * @api private */ function operand(self, where, delta, data, val, op) { @@ -588,6 +606,7 @@ function operand(self, where, delta, data, val, op) { case '$pullAll': case '$push': case '$addToSet': + case '$inc': break; default: // nothing to do @@ -617,7 +636,7 @@ function operand(self, where, delta, data, val, op) { } } -/*! +/** * Compiles an update and where clause for a `val` with _atomics. * * @param {Document} self @@ -625,6 +644,7 @@ function operand(self, where, delta, data, val, op) { * @param {Object} delta * @param {Object} data * @param {Array} value + * @api private */ function handleAtomics(self, where, delta, data, value) { @@ -750,6 +770,19 @@ Model.prototype.$__delta = function() { } } + // If this path is set to default, and either this path or one of + // its parents is excluded, don't treat this path as dirty. + if (this.$isDefault(data.path) && this.$__.selected) { + if (data.path.indexOf('.') === -1 && isPathExcluded(this.$__.selected, data.path)) { + continue; + } + + const pathsToCheck = parentPaths(data.path); + if (pathsToCheck.find(path => isPathExcluded(this.$__.isSelected, path))) { + continue; + } + } + if (divergent.length) continue; if (value === undefined) { operand(this, where, delta, data, 1, '$unset'); @@ -763,15 +796,21 @@ Model.prototype.$__delta = function() { value = value.toObject(); operand(this, where, delta, data, value); } else { - value = utils.clone(value, { - depopulate: true, - transform: false, - virtuals: false, - getters: false, - omitUndefined: true, - _isNested: true - }); - operand(this, where, delta, data, value); + if (this.$__.primitiveAtomics && this.$__.primitiveAtomics[data.path] != null) { + const val = this.$__.primitiveAtomics[data.path]; + const op = firstKey(val); + operand(this, where, delta, data, val[op], op); + } else { + value = utils.clone(value, { + depopulate: true, + transform: false, + virtuals: false, + getters: false, + omitUndefined: true, + _isNested: true + }); + operand(this, where, delta, data, value); + } } } @@ -782,17 +821,24 @@ Model.prototype.$__delta = function() { if (this.$__.version) { this.$__version(where, delta); } + + if (Object.keys(delta).length === 0) { + return [where, null]; + } + return [where, delta]; }; -/*! +/** * Determine if array was populated with some form of filter and is now * being updated in a manner which could overwrite data unintentionally. * * @see https://github.com/Automattic/mongoose/issues/1334 * @param {Document} doc * @param {String} path + * @param {Any} array * @return {String|undefined} + * @api private */ function checkDivergentArray(doc, path, array) { @@ -888,26 +934,30 @@ Model.prototype.$__version = function(where, delta) { } }; +/*! + * ignore + */ + +function increment() { + this.$__.version = VERSION_ALL; + return this; +} + /** * Signal that we desire an increment of this documents version. * * #### Example: * - * Model.findById(id, function (err, doc) { - * doc.increment(); - * doc.save(function (err) { .. }) - * }) + * const doc = await Model.findById(id); + * doc.increment(); + * await doc.save(); * * @see versionKeys https://mongoosejs.com/docs/guide.html#versionKey * @memberOf Model + * @method increment * @api public */ -function increment() { - this.$__.version = VERSION_ALL; - return this; -} - Model.prototype.increment = increment; /** @@ -937,25 +987,15 @@ Model.prototype.$__where = function _where(where) { * Removes this document from the db. * * #### Example: - * product.remove(function (err, product) { - * if (err) return handleError(err); - * Product.findById(product._id, function (err, product) { - * console.log(product) // null - * }) - * }) * - * - * As an extra measure of flow control, remove will return a Promise (bound to `fn` if passed) so it could be chained, or hooked to receive errors - * - * #### Example: - * product.remove().then(function (product) { - * ... - * }).catch(function (err) { - * assert.ok(err) - * }) + * const product = await product.remove().catch(function (err) { + * assert.ok(err); + * }); + * const foundProduct = await Product.findById(product._id); + * console.log(foundProduct) // null * * @param {Object} [options] - * @param {Session} [options.session=null] the [session](https://docs.mongodb.com/manual/reference/server-sessions/) associated with this operation. If not specified, defaults to the [document's associated session](api.html#document_Document-$session). + * @param {Session} [options.session=null] the [session](https://www.mongodb.com/docs/manual/reference/server-sessions/) associated with this operation. If not specified, defaults to the [document's associated session](/docs/api/document.html#document_Document-$session). * @param {function(err,product)} [fn] optional callback * @return {Promise} Promise * @api public @@ -984,8 +1024,14 @@ Model.prototype.remove = function remove(options, fn) { }, this.constructor.events); }; -/*! +/** * Alias for remove + * + * @method $remove + * @memberOf Model + * @instance + * @api public + * @see Model.remove #model_Model-remove */ Model.prototype.$remove = Model.prototype.remove; @@ -995,6 +1041,7 @@ Model.prototype.delete = Model.prototype.remove; * Removes this document from the db. Equivalent to `.remove()`. * * #### Example: + * * product = await product.deleteOne(); * await Product.findById(product._id); // null * @@ -1104,6 +1151,7 @@ Model.prototype.$model = function $model(name) { * `MyModel.findOne({ answer: 42 }).select({ _id: 1 }).lean()` * * #### Example: + * * await Character.deleteMany({}); * await Character.create({ name: 'Jean-Luc Picard' }); * @@ -1115,7 +1163,7 @@ Model.prototype.$model = function $model(name) { * - `findOne()` * * @param {Object} filter - * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api.html#query_Query-setOptions) + * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api/query.html#query_Query-setOptions) * @param {Function} [callback] callback * @return {Query} */ @@ -1171,12 +1219,13 @@ Model.exists = function exists(filter, options, callback) { * @param {String} [options.value] the string stored in the `discriminatorKey` property. If not specified, Mongoose uses the `name` parameter. * @param {Boolean} [options.clone=true] By default, `discriminator()` clones the given `schema`. Set to `false` to skip cloning. * @param {Boolean} [options.overwriteModels=false] by default, Mongoose does not allow you to define a discriminator with the same name as another discriminator. Set this to allow overwriting discriminators with the same name. + * @param {Boolean} [options.mergeHooks=true] By default, Mongoose merges the base schema's hooks with the discriminator schema's hooks. Set this option to `false` to make Mongoose use the discriminator schema's hooks instead. + * @param {Boolean} [options.mergePlugins=true] By default, Mongoose merges the base schema's plugins with the discriminator schema's plugins. Set this option to `false` to make Mongoose use the discriminator schema's plugins instead. * @return {Model} The newly created discriminator model * @api public */ Model.discriminator = function(name, schema, options) { - let model; if (typeof name === 'function') { model = name; @@ -1189,6 +1238,7 @@ Model.discriminator = function(name, schema, options) { options = options || {}; const value = utils.isPOJO(options) ? options.value : options; const clone = typeof options.clone === 'boolean' ? options.clone : true; + const mergePlugins = typeof options.mergePlugins === 'boolean' ? options.mergePlugins : true; _checkContext(this, 'discriminator'); @@ -1199,7 +1249,7 @@ Model.discriminator = function(name, schema, options) { schema = schema.clone(); } - schema = discriminator(this, name, schema, value, true); + schema = discriminator(this, name, schema, value, mergePlugins, options.mergeHooks); if (this.db.models[name] && !schema.options.overwriteModels) { throw new OverwriteModelError(name); } @@ -1210,7 +1260,7 @@ Model.discriminator = function(name, schema, options) { model = this.db.model(model || name, schema, this.$__collection.name); this.discriminators[name] = model; const d = this.discriminators[name]; - d.prototype.__proto__ = this.prototype; + Object.setPrototypeOf(d.prototype, this.prototype); Object.defineProperty(d, 'baseModelName', { value: this.modelName, configurable: true, @@ -1232,8 +1282,9 @@ Model.discriminator = function(name, schema, options) { return d; }; -/*! +/** * Make sure `this` is a model + * @api private */ function _checkContext(ctx, fnName) { @@ -1261,28 +1312,27 @@ for (const i in EventEmitter.prototype) { } /** - * This function is responsible for building [indexes](https://docs.mongodb.com/manual/indexes/), + * This function is responsible for building [indexes](https://www.mongodb.com/docs/manual/indexes/), * unless [`autoIndex`](https://mongoosejs.com/docs/guide.html#autoIndex) is turned off. * * Mongoose calls this function automatically when a model is created using - * [`mongoose.model()`](/docs/api.html#mongoose_Mongoose-model) or - * [`connection.model()`](/docs/api.html#connection_Connection-model), so you - * don't need to call it. This function is also idempotent, so you may call it - * to get back a promise that will resolve when your indexes are finished - * building as an alternative to [`MyModel.on('index')`](/docs/guide.html#indexes) + * [`mongoose.model()`](/docs/api/mongoose.html#mongoose_Mongoose-model) or + * [`connection.model()`](/docs/api/connection.html#connection_Connection-model), so you + * don't need to call `init()` to trigger index builds. + * + * However, you _may_ need to call `init()` to get back a promise that will resolve when your indexes are finished. + * Calling `await Model.init()` is helpful if you need to wait for indexes to build before continuing. + * For example, if you want to wait for unique indexes to build before continuing with a test case. * * #### Example: * - * const eventSchema = new Schema({ thing: { type: 'string', unique: true }}) + * const eventSchema = new Schema({ thing: { type: 'string', unique: true } }) * // This calls `Event.init()` implicitly, so you don't need to call * // `Event.init()` on your own. * const Event = mongoose.model('Event', eventSchema); * - * Event.init().then(function(Event) { - * // You can also use `Event.on('index')` if you prefer event emitters - * // over promises. - * console.log('Indexes are done building!'); - * }); + * await Event.init(); + * console.log('Indexes are done building!'); * * @api public * @param {Function} [callback] @@ -1303,17 +1353,30 @@ Model.init = function init(callback) { } const Promise = PromiseProvider.get(); - const autoIndex = utils.getOption('autoIndex', - this.schema.options, this.db.config, this.db.base.options); - const autoCreate = utils.getOption('autoCreate', - this.schema.options, this.db.config, this.db.base.options); - - const _ensureIndexes = autoIndex ? - cb => this.ensureIndexes({ _automatic: true }, cb) : - cb => cb(); - const _createCollection = autoCreate ? - cb => this.createCollection({}, cb) : - cb => cb(); + + const model = this; + const _ensureIndexes = function(cb) { + const autoIndex = utils.getOption('autoIndex', + model.schema.options, model.db.config, model.db.base.options); + if (autoIndex) model.ensureIndexes({ _automatic: true }, cb); + else cb(); + }; + const _createCollection = function(cb) { + const conn = model.db; + + if ((conn.readyState === STATES.connecting || conn.readyState === STATES.disconnected) && conn._shouldBufferCommands()) { + conn._queue.push({ fn: _createCollection, ctx: conn, args: [cb] }); + } else { + try { + const autoCreate = utils.getOption('autoCreate', + model.schema.options, model.db.config, model.db.base.options); + if (autoCreate) model.createCollection({}, cb); + else cb(); + } catch (err) { + return cb(err); + } + } + }; this.$init = new Promise((resolve, reject) => { _createCollection(error => { @@ -1352,7 +1415,7 @@ Model.init = function init(callback) { * created. Use this method to create the collection explicitly. * * Note 1: You may need to call this before starting a transaction - * See https://docs.mongodb.com/manual/core/transactions/#transactions-and-operations + * See https://www.mongodb.com/docs/manual/core/transactions/#transactions-and-operations * * Note 2: You don't have to call this if your schema contains index or unique field. * In that case, just use `Model.init()` @@ -1367,7 +1430,7 @@ Model.init = function init(callback) { * }); * * @api public - * @param {Object} [options] see [MongoDB driver docs](https://mongodb.github.io/node-mongodb-native/3.1/api/Db.html#createCollection) + * @param {Object} [options] see [MongoDB driver docs](https://mongodb.github.io/node-mongodb-native/4.9/classes/Db.html#createCollection) * @param {Function} [callback] * @returns {Promise} */ @@ -1461,26 +1524,32 @@ Model.createCollection = function createCollection(options, callback) { Model.syncIndexes = function syncIndexes(options, callback) { _checkContext(this, 'syncIndexes'); - callback = this.$handleCallbackError(callback); - - return this.db.base._promiseOrCallback(callback, cb => { - cb = this.$wrapCallback(cb); + const model = this; + callback = model.$handleCallbackError(callback); - this.createCollection(err => { + return model.db.base._promiseOrCallback(callback, cb => { + cb = model.$wrapCallback(cb); + model.createCollection(err => { if (err != null && (err.name !== 'MongoServerError' || err.code !== 48)) { return cb(err); } - this.cleanIndexes((err, dropped) => { + model.diffIndexes(err, (err, diffIndexesResult) => { if (err != null) { return cb(err); } - this.createIndexes(options, err => { + model.cleanIndexes({ ...options, toDrop: diffIndexesResult.toDrop }, (err, dropped) => { if (err != null) { return cb(err); } - cb(null, dropped); + model.createIndexes({ ...options, toCreate: diffIndexesResult.toCreate }, err => { + if (err != null) { + return cb(err); + } + cb(null, dropped); + }); }); }); + }); }, this.events); }; @@ -1491,7 +1560,7 @@ Model.syncIndexes = function syncIndexes(options, callback) { * Model.syncIndexes(). * * @param {Object} [options] - * @param {Function} callback optional callback + * @param {Function} [callback] optional callback * @returns {Promise} which contains an object, {toDrop, toCreate}, which * are indexes that would be dropped in MongoDB and indexes that would be created in MongoDB. */ @@ -1501,63 +1570,86 @@ Model.diffIndexes = function diffIndexes(options, callback) { callback = options; options = null; } - const toDrop = []; - const toCreate = []; - callback = this.$handleCallbackError(callback); - return this.db.base._promiseOrCallback(callback, cb => { - cb = this.$wrapCallback(cb); - this.listIndexes((err, dbIndexes) => { + + const model = this; + + callback = model.$handleCallbackError(callback); + + return model.db.base._promiseOrCallback(callback, cb => { + cb = model.$wrapCallback(cb); + model.listIndexes((err, dbIndexes) => { if (dbIndexes === undefined) { dbIndexes = []; } - dbIndexes = getRelatedDBIndexes(this, dbIndexes); - const schemaIndexes = getRelatedSchemaIndexes(this, this.schema.indexes()); + dbIndexes = getRelatedDBIndexes(model, dbIndexes); - for (const dbIndex of dbIndexes) { - let found = false; - // Never try to drop `_id` index, MongoDB server doesn't allow it - if (isDefaultIdIndex(dbIndex)) { - continue; - } + const schema = model.schema; + const schemaIndexes = getRelatedSchemaIndexes(model, schema.indexes()); - for (const [schemaIndexKeysObject, schemaIndexOptions] of schemaIndexes) { - const options = decorateDiscriminatorIndexOptions(this.schema, utils.clone(schemaIndexOptions)); - applySchemaCollation(schemaIndexKeysObject, options, this.schema.options); + const toDrop = getIndexesToDrop(schema, schemaIndexes, dbIndexes); + const toCreate = getIndexesToCreate(schema, schemaIndexes, dbIndexes, toDrop); - if (isIndexEqual(schemaIndexKeysObject, options, dbIndex)) { - found = true; - } - } - - if (!found) { - toDrop.push(dbIndex.name); - } - } - // Iterate through the indexes created on the schema and - // compare against the indexes in mongodb. - if (!options || options.toCreate !== false) { - for (const schemaIndex of schemaIndexes) { - let found = false; - const key = schemaIndex[0]; - const options = decorateDiscriminatorIndexOptions(this.schema, utils.clone(schemaIndex[1])); - for (const index of dbIndexes) { - if (isDefaultIdIndex(index)) { - continue; - } - if (isIndexEqual(key, options, index)) { - found = true; - } - } - if (!found) { - toCreate.push(key); - } - } - } cb(null, { toDrop, toCreate }); }); }); }; +function getIndexesToCreate(schema, schemaIndexes, dbIndexes, toDrop) { + const toCreate = []; + + for (const [schemaIndexKeysObject, schemaIndexOptions] of schemaIndexes) { + let found = false; + + const options = decorateDiscriminatorIndexOptions(schema, utils.clone(schemaIndexOptions)); + + for (const index of dbIndexes) { + if (isDefaultIdIndex(index)) { + continue; + } + if ( + isIndexEqual(schemaIndexKeysObject, options, index) && + !toDrop.includes(index.name) + ) { + found = true; + break; + } + } + + if (!found) { + toCreate.push(schemaIndexKeysObject); + } + } + + return toCreate; +} + +function getIndexesToDrop(schema, schemaIndexes, dbIndexes) { + const toDrop = []; + + for (const dbIndex of dbIndexes) { + let found = false; + // Never try to drop `_id` index, MongoDB server doesn't allow it + if (isDefaultIdIndex(dbIndex)) { + continue; + } + + for (const [schemaIndexKeysObject, schemaIndexOptions] of schemaIndexes) { + const options = decorateDiscriminatorIndexOptions(schema, utils.clone(schemaIndexOptions)); + applySchemaCollation(schemaIndexKeysObject, options, schema.options); + + if (isIndexEqual(schemaIndexKeysObject, options, dbIndex)) { + found = true; + break; + } + } + + if (!found) { + toDrop.push(dbIndex.name); + } + } + + return toDrop; +} /** * Deletes all indexes that aren't defined in this model's schema. Used by * `syncIndexes()`. @@ -1569,46 +1661,56 @@ Model.diffIndexes = function diffIndexes(options, callback) { * @api public */ -Model.cleanIndexes = function cleanIndexes(callback) { +Model.cleanIndexes = function cleanIndexes(options, callback) { _checkContext(this, 'cleanIndexes'); + const model = this; - callback = this.$handleCallbackError(callback); + if (typeof options === 'function') { + callback = options; + options = null; + } - return this.db.base._promiseOrCallback(callback, cb => { - const collection = this.$__collection; + callback = model.$handleCallbackError(callback); + + return model.db.base._promiseOrCallback(callback, cb => { + const collection = model.$__collection; - this.diffIndexes({ toCreate: false }, (err, res) => { + if (Array.isArray(options && options.toDrop)) { + _dropIndexes(options.toDrop, collection, cb); + return; + } + return model.diffIndexes((err, res) => { if (err != null) { return cb(err); } const toDrop = res.toDrop; - - if (toDrop.length === 0) { - return cb(null, []); - } - - dropIndexes(toDrop, cb); + _dropIndexes(toDrop, collection, cb); }); - function dropIndexes(toDrop, cb) { - let remaining = toDrop.length; - let error = false; - toDrop.forEach(indexName => { - collection.dropIndex(indexName, err => { - if (err != null) { - error = true; - return cb(err); - } - if (!error) { - --remaining || cb(null, toDrop); - } - }); - }); - } }); }; +function _dropIndexes(toDrop, collection, cb) { + if (toDrop.length === 0) { + return cb(null, []); + } + + let remaining = toDrop.length; + let error = false; + toDrop.forEach(indexName => { + collection.dropIndex(indexName, err => { + if (err != null) { + error = true; + return cb(err); + } + if (!error) { + --remaining || cb(null, toDrop); + } + }); + }); +} + /** * Lists the indexes currently defined in MongoDB. This may or may not be * the same as the indexes defined in your schema depending on whether you @@ -1655,7 +1757,7 @@ Model.listIndexes = function init(callback) { * * #### Example: * - * const eventSchema = new Schema({ thing: { type: 'string', unique: true }}) + * const eventSchema = new Schema({ thing: { type: 'string', unique: true } }) * const Event = mongoose.model('Event', eventSchema); * * Event.on('index', function (err) { @@ -1693,7 +1795,7 @@ Model.ensureIndexes = function ensureIndexes(options, callback) { }; /** - * Similar to `ensureIndexes()`, except for it uses the [`createIndex`](https://mongodb.github.io/node-mongodb-native/2.2/api/Collection.html#createIndex) + * Similar to `ensureIndexes()`, except for it uses the [`createIndex`](https://mongodb.github.io/node-mongodb-native/4.9/classes/Db.html#createIndex) * function. * * @param {Object} [options] internal options @@ -1709,11 +1811,13 @@ Model.createIndexes = function createIndexes(options, callback) { callback = options; options = {}; } + callback = this.$handleCallbackError(callback); options = options || {}; - options.createIndex = true; + return this.ensureIndexes(options, callback); }; + /*! * ignore */ @@ -1803,6 +1907,12 @@ function _ensureIndexes(model, options, callback) { indexOptions.background = options.background; } + if ('toCreate' in options) { + if (options.toCreate.length === 0) { + return done(); + } + } + model.collection.createIndex(indexFields, indexOptions, utils.tick(function(err, name) { indexSingleDone(err, indexFields, indexOptions, name); if (err) { @@ -1829,17 +1939,18 @@ function _ensureIndexes(model, options, callback) { Model.schema; -/*! +/** * Connection instance the model uses. * * @property db + * @static * @api public * @memberOf Model */ Model.db; -/*! +/** * Collection the model uses. * * @property collection @@ -1890,6 +2001,7 @@ Model.discriminators; * .exec(function(err, characters) {}) * * #### Note: + * * Only translate arguments of object type anything else is returned raw * * @param {Object} fields fields/conditions that may contain aliased keys @@ -1992,7 +2104,7 @@ Model.translateAliases = function translateAliases(fields) { * @deprecated * @param {Object} conditions * @param {Object} [options] - * @param {Session} [options.session=null] the [session](https://docs.mongodb.com/manual/reference/server-sessions/) associated with this operation. + * @param {Session} [options.session=null] the [session](https://www.mongodb.com/docs/manual/reference/server-sessions/) associated with this operation. * @param {Function} [callback] * @return {Query} * @api public @@ -2035,7 +2147,7 @@ Model.remove = function remove(conditions, options, callback) { * [middleware docs](/docs/middleware.html#naming) to learn more. * * @param {Object} conditions - * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api.html#query_Query-setOptions) + * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api/query.html#query_Query-setOptions) * @param {Function} [callback] * @return {Query} * @api public @@ -2078,7 +2190,7 @@ Model.deleteOne = function deleteOne(conditions, options, callback) { * [middleware docs](/docs/middleware.html#naming) to learn more. * * @param {Object} conditions - * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api.html#query_Query-setOptions) + * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api/query.html#query_Query-setOptions) * @param {Function} [callback] * @return {Query} * @api public @@ -2111,7 +2223,7 @@ Model.deleteMany = function deleteMany(conditions, options, callback) { * See our [query casting tutorial](/docs/tutorials/query_casting.html) for * more information on how Mongoose casts `filter`. * - * #### Examples: + * #### Example: * * // find all documents * await MyModel.find({}); @@ -2129,8 +2241,8 @@ Model.deleteMany = function deleteMany(conditions, options, callback) { * await MyModel.find({ name: /john/i }, null, { skip: 10 }).exec(); * * @param {Object|ObjectId} filter - * @param {Object|String|String[]} [projection] optional fields to return, see [`Query.prototype.select()`](https://mongoosejs.com/docs/api.html#query_Query-select) - * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api.html#query_Query-setOptions) + * @param {Object|String|String[]} [projection] optional fields to return, see [`Query.prototype.select()`](https://mongoosejs.com/docs/api/query.html#query_Query-select) + * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api/query.html#query_Query-setOptions) * @param {Function} [callback] * @return {Query} * @see field selection #query_Query-select @@ -2193,7 +2305,7 @@ Model.find = function find(conditions, projection, options, callback) { * * @param {Any} id value of `_id` to query by * @param {Object|String|String[]} [projection] optional fields to return, see [`Query.prototype.select()`](#query_Query-select) - * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api.html#query_Query-setOptions) + * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api/query.html#query_Query-setOptions) * @param {Function} [callback] * @return {Query} * @see field selection #query_Query-select @@ -2236,7 +2348,7 @@ Model.findById = function findById(id, projection, options, callback) { * * @param {Object} [conditions] * @param {Object|String|String[]} [projection] optional fields to return, see [`Query.prototype.select()`](#query_Query-select) - * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api.html#query_Query-setOptions) + * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api/query.html#query_Query-setOptions) * @param {Function} [callback] * @return {Query} * @see field selection #query_Query-select @@ -2304,18 +2416,18 @@ Model.estimatedDocumentCount = function estimatedDocumentCount(options, callback * }); * * If you want to count all documents in a large collection, - * use the [`estimatedDocumentCount()` function](/docs/api.html#model_Model.estimatedDocumentCount) + * use the [`estimatedDocumentCount()` function](#model_Model-estimatedDocumentCount) * instead. If you call `countDocuments({})`, MongoDB will always execute * a full collection scan and **not** use any indexes. * * The `countDocuments()` function is similar to `count()`, but there are a - * [few operators that `countDocuments()` does not support](https://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#countDocuments). + * [few operators that `countDocuments()` does not support](https://mongodb.github.io/node-mongodb-native/4.9/classes/Collection.html#countDocuments). * Below are the operators that `count()` supports but `countDocuments()` does not, * and the suggested replacement: * - * - `$where`: [`$expr`](https://docs.mongodb.com/manual/reference/operator/query/expr/) - * - `$near`: [`$geoWithin`](https://docs.mongodb.com/manual/reference/operator/query/geoWithin/) with [`$center`](https://docs.mongodb.com/manual/reference/operator/query/center/#op._S_center) - * - `$nearSphere`: [`$geoWithin`](https://docs.mongodb.com/manual/reference/operator/query/geoWithin/) with [`$centerSphere`](https://docs.mongodb.com/manual/reference/operator/query/centerSphere/#op._S_centerSphere) + * - `$where`: [`$expr`](https://www.mongodb.com/docs/manual/reference/operator/query/expr/) + * - `$near`: [`$geoWithin`](https://www.mongodb.com/docs/manual/reference/operator/query/geoWithin/) with [`$center`](https://www.mongodb.com/docs/manual/reference/operator/query/center/#op._S_center) + * - `$nearSphere`: [`$geoWithin`](https://www.mongodb.com/docs/manual/reference/operator/query/geoWithin/) with [`$centerSphere`](https://www.mongodb.com/docs/manual/reference/operator/query/centerSphere/#op._S_centerSphere) * * @param {Object} filter * @param {Function} [callback] @@ -2349,8 +2461,8 @@ Model.countDocuments = function countDocuments(conditions, options, callback) { * Counts number of documents that match `filter` in a database collection. * * This method is deprecated. If you want to count the number of documents in - * a collection, e.g. `count({})`, use the [`estimatedDocumentCount()` function](/docs/api.html#model_Model.estimatedDocumentCount) - * instead. Otherwise, use the [`countDocuments()`](/docs/api.html#model_Model.countDocuments) function instead. + * a collection, e.g. `count({})`, use the [`estimatedDocumentCount()` function](#model_Model-estimatedDocumentCount) + * instead. Otherwise, use the [`countDocuments()`](#model_Model-countDocuments) function instead. * * #### Example: * @@ -2386,7 +2498,7 @@ Model.count = function count(conditions, callback) { * * #### Example: * - * Link.distinct('url', { clicks: {$gt: 100}}, function (err, result) { + * Link.distinct('url', { clicks: { $gt: 100 } }, function (err, result) { * if (err) return handleError(err); * * assert(Array.isArray(result)); @@ -2422,7 +2534,7 @@ Model.distinct = function distinct(field, conditions, callback) { * * For example, instead of writing: * - * User.find({age: {$gte: 21, $lte: 65}}, callback); + * User.find({ age: { $gte: 21, $lte: 65 } }, callback); * * we can instead write: * @@ -2476,20 +2588,7 @@ Model.$where = function $where() { * * Finds a matching document, updates it according to the `update` arg, passing any `options`, and returns the found document (if any) to the callback. The query executes if `callback` is passed else a Query object is returned. * - * #### Options: - * - * - `new`: bool - if true, return the modified document rather than the original. defaults to false (changed in 4.0) - * - `upsert`: bool - creates the object if it doesn't exist. defaults to false. - * - `overwrite`: bool - if true, replace the entire document. - * - `fields`: {Object|String} - Field selection. Equivalent to `.select(fields).findOneAndUpdate()` - * - `maxTimeMS`: puts a time limit on the query - requires mongodb >= 2.6.0 - * - `sort`: if multiple docs are found by the conditions, sets the sort order to choose which doc to update - * - `runValidators`: if true, runs [update validators](/docs/validation.html#update-validators) on this command. Update validators validate the update operation against the model's schema. - * - `setDefaultsOnInsert`: `true` by default. If `setDefaultsOnInsert` and `upsert` are true, mongoose will apply the [defaults](https://mongoosejs.com/docs/defaults.html) specified in the model's schema if a new document is created. - * - `rawResult`: if true, returns the [raw result from the MongoDB driver](https://mongodb.github.io/node-mongodb-native/4.3/interfaces/ModifyResult.html) - * - `strict`: overwrites the schema's [strict mode option](https://mongoosejs.com/docs/guide.html#strict) for this update - * - * #### Examples: + * #### Example: * * A.findOneAndUpdate(conditions, update, options, callback) // executes * A.findOneAndUpdate(conditions, update, options) // returns Query @@ -2510,6 +2609,7 @@ Model.$where = function $where() { * Model.findOneAndUpdate(query, { $set: { name: 'jason bourne' }}, options, callback) * * This helps prevent accidentally overwriting your document with `{ name: 'jason bourne' }`. + * To prevent this behaviour, see the `overwrite` option * * #### Note: * @@ -2525,19 +2625,26 @@ Model.$where = function $where() { * * @param {Object} [conditions] * @param {Object} [update] - * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api.html#query_Query-setOptions) + * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api/query.html#query_Query-setOptions) * @param {String} [options.returnDocument='before'] Has two possible values, `'before'` and `'after'`. By default, it will return the document before the update was applied. - * @param {Object} [options.lean] if truthy, mongoose will return the document as a plain JavaScript object rather than a mongoose document. See [`Query.lean()`](/docs/api.html#query_Query-lean) and [the Mongoose lean tutorial](/docs/tutorials/lean.html). + * @param {Object} [options.lean] if truthy, mongoose will return the document as a plain JavaScript object rather than a mongoose document. See [`Query.lean()`](/docs/api/query.html#query_Query-lean) and [the Mongoose lean tutorial](/docs/tutorials/lean.html). * @param {ClientSession} [options.session=null] The session associated with this query. See [transactions docs](/docs/transactions.html). * @param {Boolean|String} [options.strict] overwrites the schema's [strict mode option](https://mongoosejs.com/docs/guide.html#strict) * @param {Boolean} [options.timestamps=null] If set to `false` and [schema-level timestamps](/docs/guide.html#timestamps) are enabled, skip timestamps for this update. Note that this allows you to overwrite timestamps. Does nothing if schema-level timestamps are not set. - * @param {Boolean} [options.overwrite=false] By default, if you don't include any [update operators](https://docs.mongodb.com/manual/reference/operator/update/) in `update`, Mongoose will wrap `update` in `$set` for you. This prevents you from accidentally overwriting the document. This option tells Mongoose to skip adding `$set`. An alternative to this would be using [Model.findOneAndReplace(conditions, update, options, callback)](https://mongoosejs.com/docs/api/model.html#model_Model.findOneAndReplace). + * @param {Boolean} [options.overwrite=false] By default, if you don't include any [update operators](https://www.mongodb.com/docs/manual/reference/operator/update/) in `update`, Mongoose will wrap `update` in `$set` for you. This prevents you from accidentally overwriting the document. This option tells Mongoose to skip adding `$set`. An alternative to this would be using [Model.findOneAndReplace(conditions, update, options, callback)](#model_Model-findOneAndReplace). * @param {Boolean} [options.upsert=false] if true, and no documents found, insert a new document * @param {Object|String|String[]} [options.projection=null] optional fields to return, see [`Query.prototype.select()`](#query_Query-select) + * @param {Boolean} [options.new=false] if true, return the modified document rather than the original + * @param {Object|String} [options.fields] Field selection. Equivalent to `.select(fields).findOneAndUpdate()` + * @param {Number} [options.maxTimeMS] puts a time limit on the query - requires mongodb >= 2.6.0 + * @param {Object|String} [options.sort] if multiple docs are found by the conditions, sets the sort order to choose which doc to update. + * @param {Boolean} [options.runValidators] if true, runs [update validators](/docs/validation.html#update-validators) on this command. Update validators validate the update operation against the model's schema + * @param {Boolean} [options.setDefaultsOnInsert=true] If `setDefaultsOnInsert` and `upsert` are true, mongoose will apply the [defaults](https://mongoosejs.com/docs/defaults.html) specified in the model's schema if a new document is created + * @param {Boolean} [options.rawResult] if true, returns the [raw result from the MongoDB driver](https://mongodb.github.io/node-mongodb-native/4.9/interfaces/ModifyResult.html) * @param {Function} [callback] * @return {Query} * @see Tutorial /docs/tutorials/findoneandupdate.html - * @see mongodb https://www.mongodb.org/display/DOCS/findAndModify+Command + * @see mongodb https://www.mongodb.com/docs/manual/reference/command/findAndModify/ * @api public */ @@ -2580,8 +2687,9 @@ Model.findOneAndUpdate = function(conditions, update, options, callback) { return mq.findOneAndUpdate(conditions, update, options, callback); }; -/*! +/** * Decorate the update with a version key, if necessary + * @api private */ function _decorateUpdateWithVersionKey(update, options, versionKey) { @@ -2614,18 +2722,7 @@ function _decorateUpdateWithVersionKey(update, options, versionKey) { * * - `findOneAndUpdate()` * - * #### Options: - * - * - `new`: bool - true to return the modified document rather than the original. defaults to false - * - `upsert`: bool - creates the object if it doesn't exist. defaults to false. - * - `runValidators`: if true, runs [update validators](/docs/validation.html#update-validators) on this command. Update validators validate the update operation against the model's schema. - * - `setDefaultsOnInsert`: `true` by default. If `setDefaultsOnInsert` and `upsert` are true, mongoose will apply the [defaults](https://mongoosejs.com/docs/defaults.html) specified in the model's schema if a new document is created. - * - `sort`: if multiple docs are found by the conditions, sets the sort order to choose which doc to update - * - `select`: sets the document fields to return - * - `rawResult`: if true, returns the [raw result from the MongoDB driver](https://mongodb.github.io/node-mongodb-native/4.3/interfaces/ModifyResult.html) - * - `strict`: overwrites the schema's [strict mode option](https://mongoosejs.com/docs/guide.html#strict) for this update - * - * #### Examples: + * #### Example: * * A.findByIdAndUpdate(id, update, options, callback) // executes * A.findByIdAndUpdate(id, update, options) // returns Query @@ -2645,6 +2742,7 @@ function _decorateUpdateWithVersionKey(update, options, versionKey) { * Model.findByIdAndUpdate(id, { $set: { name: 'jason bourne' }}, options, callback) * * This helps prevent accidentally overwriting your document with `{ name: 'jason bourne' }`. + * To prevent this behaviour, see the `overwrite` option * * #### Note: * @@ -2654,25 +2752,30 @@ function _decorateUpdateWithVersionKey(update, options, versionKey) { * If you need full-fledged validation, use the traditional approach of first * retrieving the document. * - * Model.findById(id, function (err, doc) { - * if (err) .. - * doc.name = 'jason bourne'; - * doc.save(callback); - * }); + * const doc = await Model.findById(id) + * doc.name = 'jason bourne'; + * await doc.save(); * * @param {Object|Number|String} id value of `_id` to query by * @param {Object} [update] - * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api.html#query_Query-setOptions) + * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api/query.html#query_Query-setOptions) * @param {String} [options.returnDocument='before'] Has two possible values, `'before'` and `'after'`. By default, it will return the document before the update was applied. - * @param {Object} [options.lean] if truthy, mongoose will return the document as a plain JavaScript object rather than a mongoose document. See [`Query.lean()`](/docs/api.html#query_Query-lean) and [the Mongoose lean tutorial](/docs/tutorials/lean.html). + * @param {Object} [options.lean] if truthy, mongoose will return the document as a plain JavaScript object rather than a mongoose document. See [`Query.lean()`](/docs/api/query.html#query_Query-lean) and [the Mongoose lean tutorial](/docs/tutorials/lean.html). * @param {ClientSession} [options.session=null] The session associated with this query. See [transactions docs](/docs/transactions.html). * @param {Boolean|String} [options.strict] overwrites the schema's [strict mode option](https://mongoosejs.com/docs/guide.html#strict) * @param {Boolean} [options.timestamps=null] If set to `false` and [schema-level timestamps](/docs/guide.html#timestamps) are enabled, skip timestamps for this update. Note that this allows you to overwrite timestamps. Does nothing if schema-level timestamps are not set. - * @param {Boolean} [options.overwrite=false] By default, if you don't include any [update operators](https://docs.mongodb.com/manual/reference/operator/update/) in `update`, Mongoose will wrap `update` in `$set` for you. This prevents you from accidentally overwriting the document. This option tells Mongoose to skip adding `$set`. An alternative to this would be using [Model.findOneAndReplace({ _id: id }, update, options, callback)](https://mongoosejs.com/docs/api/model.html#model_Model.findOneAndReplace). + * @param {Boolean} [options.overwrite=false] By default, if you don't include any [update operators](https://www.mongodb.com/docs/manual/reference/operator/update/) in `update`, Mongoose will wrap `update` in `$set` for you. This prevents you from accidentally overwriting the document. This option tells Mongoose to skip adding `$set`. An alternative to this would be using [Model.findOneAndReplace({ _id: id }, update, options, callback)](#model_Model-findOneAndReplace). + * @param {Object|String} [options.sort] if multiple docs are found by the conditions, sets the sort order to choose which doc to update. + * @param {Boolean} [options.runValidators] if true, runs [update validators](/docs/validation.html#update-validators) on this command. Update validators validate the update operation against the model's schema + * @param {Boolean} [options.setDefaultsOnInsert=true] If `setDefaultsOnInsert` and `upsert` are true, mongoose will apply the [defaults](https://mongoosejs.com/docs/defaults.html) specified in the model's schema if a new document is created + * @param {Boolean} [options.rawResult] if true, returns the [raw result from the MongoDB driver](https://mongodb.github.io/node-mongodb-native/4.9/interfaces/ModifyResult.html) + * @param {Boolean} [options.upsert=false] if true, and no documents found, insert a new document + * @param {Boolean} [options.new=false] if true, return the modified document rather than the original + * @param {Object|String} [options.select] sets the document fields to return. * @param {Function} [callback] * @return {Query} - * @see Model.findOneAndUpdate #model_Model.findOneAndUpdate - * @see mongodb https://www.mongodb.org/display/DOCS/findAndModify+Command + * @see Model.findOneAndUpdate #model_Model-findOneAndUpdate + * @see mongodb https://www.mongodb.com/docs/manual/reference/command/findAndModify/ * @api public */ @@ -2712,21 +2815,12 @@ Model.findByIdAndUpdate = function(id, update, options, callback) { * - `findOneAndDelete()` * * This function differs slightly from `Model.findOneAndRemove()` in that - * `findOneAndRemove()` becomes a [MongoDB `findAndModify()` command](https://docs.mongodb.com/manual/reference/method/db.collection.findAndModify/), + * `findOneAndRemove()` becomes a [MongoDB `findAndModify()` command](https://www.mongodb.com/docs/manual/reference/method/db.collection.findAndModify/), * as opposed to a `findOneAndDelete()` command. For most mongoose use cases, * this distinction is purely pedantic. You should use `findOneAndDelete()` * unless you have a good reason not to. * - * #### Options: - * - * - `sort`: if multiple docs are found by the conditions, sets the sort order to choose which doc to update - * - `maxTimeMS`: puts a time limit on the query - requires mongodb >= 2.6.0 - * - `select`: sets the document fields to return, ex. `{ projection: { _id: 0 } }` - * - `projection`: equivalent to `select` - * - `rawResult`: if true, returns the [raw result from the MongoDB driver](https://mongodb.github.io/node-mongodb-native/4.3/interfaces/ModifyResult.html) - * - `strict`: overwrites the schema's [strict mode option](https://mongoosejs.com/docs/guide.html#strict) for this update - * - * #### Examples: + * #### Example: * * A.findOneAndDelete(conditions, options, callback) // executes * A.findOneAndDelete(conditions, options) // return Query @@ -2740,17 +2834,19 @@ Model.findByIdAndUpdate = function(id, update, options, callback) { * If you need full-fledged validation, use the traditional approach of first * retrieving the document. * - * Model.findById(id, function (err, doc) { - * if (err) .. - * doc.name = 'jason bourne'; - * doc.save(callback); - * }); + * const doc = await Model.findById(id) + * doc.name = 'jason bourne'; + * await doc.save(); * * @param {Object} conditions - * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api.html#query_Query-setOptions) + * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api/query.html#query_Query-setOptions) * @param {Boolean|String} [options.strict] overwrites the schema's [strict mode option](https://mongoosejs.com/docs/guide.html#strict) * @param {Object|String|String[]} [options.projection=null] optional fields to return, see [`Query.prototype.select()`](#query_Query-select) * @param {ClientSession} [options.session=null] The session associated with this query. See [transactions docs](/docs/transactions.html). + * @param {Boolean} [options.rawResult] if true, returns the [raw result from the MongoDB driver](https://mongodb.github.io/node-mongodb-native/4.9/interfaces/ModifyResult.html) + * @param {Object|String} [options.sort] if multiple docs are found by the conditions, sets the sort order to choose which doc to update. + * @param {Object|String} [options.select] sets the document fields to return. + * @param {Number} [options.maxTimeMS] puts a time limit on the query - requires mongodb >= 2.6.0 * @param {Function} [callback] * @return {Query} * @api public @@ -2795,12 +2891,12 @@ Model.findOneAndDelete = function(conditions, options, callback) { * - `findOneAndDelete()` * * @param {Object|Number|String} id value of `_id` to query by - * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api.html#query_Query-setOptions) + * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api/query.html#query_Query-setOptions) * @param {Boolean|String} [options.strict] overwrites the schema's [strict mode option](https://mongoosejs.com/docs/guide.html#strict) * @param {Function} [callback] * @return {Query} - * @see Model.findOneAndRemove #model_Model.findOneAndRemove - * @see mongodb https://www.mongodb.org/display/DOCS/findAndModify+Command + * @see Model.findOneAndRemove #model_Model-findOneAndRemove + * @see mongodb https://www.mongodb.com/docs/manual/reference/command/findAndModify/ */ Model.findByIdAndDelete = function(id, options, callback) { @@ -2830,16 +2926,7 @@ Model.findByIdAndDelete = function(id, options, callback) { * * - `findOneAndReplace()` * - * #### Options: - * - * - `sort`: if multiple docs are found by the conditions, sets the sort order to choose which doc to update - * - `maxTimeMS`: puts a time limit on the query - requires mongodb >= 2.6.0 - * - `select`: sets the document fields to return - * - `projection`: like select, it determines which fields to return, ex. `{ projection: { _id: 0 } }` - * - `rawResult`: if true, returns the [raw result from the MongoDB driver](https://mongodb.github.io/node-mongodb-native/4.3/interfaces/ModifyResult.html) - * - `strict`: overwrites the schema's [strict mode option](https://mongoosejs.com/docs/guide.html#strict) for this update - * - * #### Examples: + * #### Example: * * A.findOneAndReplace(filter, replacement, options, callback) // executes * A.findOneAndReplace(filter, replacement, options) // return Query @@ -2849,13 +2936,17 @@ Model.findByIdAndDelete = function(id, options, callback) { * * @param {Object} filter Replace the first document that matches this filter * @param {Object} [replacement] Replace with this document - * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api.html#query_Query-setOptions) + * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api/query.html#query_Query-setOptions) * @param {String} [options.returnDocument='before'] Has two possible values, `'before'` and `'after'`. By default, it will return the document before the update was applied. - * @param {Object} [options.lean] if truthy, mongoose will return the document as a plain JavaScript object rather than a mongoose document. See [`Query.lean()`](/docs/api.html#query_Query-lean) and [the Mongoose lean tutorial](/docs/tutorials/lean.html). + * @param {Object} [options.lean] if truthy, mongoose will return the document as a plain JavaScript object rather than a mongoose document. See [`Query.lean()`](/docs/api/query.html#query_Query-lean) and [the Mongoose lean tutorial](/docs/tutorials/lean.html). * @param {ClientSession} [options.session=null] The session associated with this query. See [transactions docs](/docs/transactions.html). * @param {Boolean|String} [options.strict] overwrites the schema's [strict mode option](https://mongoosejs.com/docs/guide.html#strict) * @param {Boolean} [options.timestamps=null] If set to `false` and [schema-level timestamps](/docs/guide.html#timestamps) are enabled, skip timestamps for this update. Note that this allows you to overwrite timestamps. Does nothing if schema-level timestamps are not set. * @param {Object|String|String[]} [options.projection=null] optional fields to return, see [`Query.prototype.select()`](#query_Query-select) + * @param {Object|String} [options.sort] if multiple docs are found by the conditions, sets the sort order to choose which doc to update. + * @param {Boolean} [options.rawResult] if true, returns the [raw result from the MongoDB driver](https://mongodb.github.io/node-mongodb-native/4.9/interfaces/ModifyResult.html) + * @param {Object|String} [options.select] sets the document fields to return. + * @param {Number} [options.maxTimeMS] puts a time limit on the query - requires mongodb >= 2.6.0 * @param {Function} [callback] * @return {Query} * @api public @@ -2909,16 +3000,7 @@ Model.findOneAndReplace = function(filter, replacement, options, callback) { * * - `findOneAndRemove()` * - * #### Options: - * - * - `sort`: if multiple docs are found by the conditions, sets the sort order to choose which doc to update - * - `maxTimeMS`: puts a time limit on the query - requires mongodb >= 2.6.0 - * - `select`: sets the document fields to return - * - `projection`: like select, it determines which fields to return, ex. `{ projection: { _id: 0 } }` - * - `rawResult`: if true, returns the [raw result from the MongoDB driver](https://mongodb.github.io/node-mongodb-native/4.3/interfaces/ModifyResult.html) - * - `strict`: overwrites the schema's [strict mode option](https://mongoosejs.com/docs/guide.html#strict) for this update - * - * #### Examples: + * #### Example: * * A.findOneAndRemove(conditions, options, callback) // executes * A.findOneAndRemove(conditions, options) // return Query @@ -2932,20 +3014,22 @@ Model.findOneAndReplace = function(filter, replacement, options, callback) { * If you need full-fledged validation, use the traditional approach of first * retrieving the document. * - * Model.findById(id, function (err, doc) { - * if (err) .. - * doc.name = 'jason bourne'; - * doc.save(callback); - * }); + * const doc = await Model.findById(id); + * doc.name = 'jason bourne'; + * await doc.save(); * * @param {Object} conditions - * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api.html#query_Query-setOptions) + * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api/query.html#query_Query-setOptions) * @param {ClientSession} [options.session=null] The session associated with this query. See [transactions docs](/docs/transactions.html). * @param {Boolean|String} [options.strict] overwrites the schema's [strict mode option](https://mongoosejs.com/docs/guide.html#strict) * @param {Object|String|String[]} [options.projection=null] optional fields to return, see [`Query.prototype.select()`](#query_Query-select) + * @param {Object|String} [options.sort] if multiple docs are found by the conditions, sets the sort order to choose which doc to update. + * @param {Boolean} [options.rawResult] if true, returns the [raw result from the MongoDB driver](https://mongodb.github.io/node-mongodb-native/4.9/interfaces/ModifyResult.html) + * @param {Object|String} [options.select] sets the document fields to return. + * @param {Number} [options.maxTimeMS] puts a time limit on the query - requires mongodb >= 2.6.0 * @param {Function} [callback] * @return {Query} - * @see mongodb https://www.mongodb.org/display/DOCS/findAndModify+Command + * @see mongodb https://www.mongodb.com/docs/manual/reference/command/findAndModify/ * @api public */ @@ -2989,14 +3073,7 @@ Model.findOneAndRemove = function(conditions, options, callback) { * * - `findOneAndRemove()` * - * #### Options: - * - * - `sort`: if multiple docs are found by the conditions, sets the sort order to choose which doc to update - * - `select`: sets the document fields to return - * - `rawResult`: if true, returns the [raw result from the MongoDB driver](https://mongodb.github.io/node-mongodb-native/4.3/interfaces/ModifyResult.html) - * - `strict`: overwrites the schema's [strict mode option](https://mongoosejs.com/docs/guide.html#strict) for this update - * - * #### Examples: + * #### Example: * * A.findByIdAndRemove(id, options, callback) // executes * A.findByIdAndRemove(id, options) // return Query @@ -3005,14 +3082,17 @@ Model.findOneAndRemove = function(conditions, options, callback) { * A.findByIdAndRemove() // returns Query * * @param {Object|Number|String} id value of `_id` to query by - * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api.html#query_Query-setOptions) + * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api/query.html#query_Query-setOptions) * @param {Boolean|String} [options.strict] overwrites the schema's [strict mode option](https://mongoosejs.com/docs/guide.html#strict) * @param {ClientSession} [options.session=null] The session associated with this query. See [transactions docs](/docs/transactions.html). * @param {Object|String|String[]} [options.projection=null] optional fields to return, see [`Query.prototype.select()`](#query_Query-select) + * @param {Object|String} [options.sort] if multiple docs are found by the conditions, sets the sort order to choose which doc to update. + * @param {Boolean} [options.rawResult] if true, returns the [raw result from the MongoDB driver](https://mongodb.github.io/node-mongodb-native/4.9/interfaces/ModifyResult.html) + * @param {Object|String} [options.select] sets the document fields to return. * @param {Function} [callback] * @return {Query} - * @see Model.findOneAndRemove #model_Model.findOneAndRemove - * @see mongodb https://www.mongodb.org/display/DOCS/findAndModify+Command + * @see Model.findOneAndRemove #model_Model-findOneAndRemove + * @see mongodb https://www.mongodb.com/docs/manual/reference/command/findAndModify/ */ Model.findByIdAndRemove = function(id, options, callback) { @@ -3053,7 +3133,7 @@ Model.findByIdAndRemove = function(id, options, callback) { * await Character.create([{ name: 'Jean-Luc Picard' }], { session }); * * @param {Array|Object} docs Documents to insert, as a spread or array - * @param {Object} [options] Options passed down to `save()`. To specify `options`, `docs` **must** be an array, not a spread. + * @param {Object} [options] Options passed down to `save()`. To specify `options`, `docs` **must** be an array, not a spread. See [Model.save](#model_Model-save) for available options. * @param {Function} [callback] callback * @return {Promise} * @api public @@ -3091,7 +3171,7 @@ Model.create = function create(doc, options, callback) { // to use a spread to specify options, see gh-7535 utils.warn('WARNING: to pass a `session` to `Model.create()` in ' + 'Mongoose, you **must** pass an array as the first argument. See: ' + - 'https://mongoosejs.com/docs/api.html#model_Model.create'); + 'https://mongoosejs.com/docs/api/model.html#model_Model-create'); } } @@ -3146,10 +3226,9 @@ Model.create = function create(doc, options, callback) { } const _done = (error, res) => { const savedDocs = []; - const len = res.length; - for (let i = 0; i < len; ++i) { - if (res[i].doc) { - savedDocs.push(res[i].doc); + for (const val of res) { + if (val.doc) { + savedDocs.push(val.doc); } } @@ -3179,7 +3258,7 @@ Model.create = function create(doc, options, callback) { /** * _Requires a replica set running MongoDB >= 3.6.0._ Watches the * underlying collection for changes using - * [MongoDB change streams](https://docs.mongodb.com/manual/changeStreams/). + * [MongoDB change streams](https://www.mongodb.com/docs/manual/changeStreams/). * * This function does **not** trigger any middleware. In particular, it * does **not** trigger aggregate middleware. @@ -3203,7 +3282,8 @@ Model.create = function create(doc, options, callback) { * await doc.remove(); * * @param {Array} [pipeline] - * @param {Object} [options] see the [mongodb driver options](https://mongodb.github.io/node-mongodb-native/3.0/api/Collection.html#watch) + * @param {Object} [options] see the [mongodb driver options](https://mongodb.github.io/node-mongodb-native/4.9/classes/Collection.html#watch) + * @param {Boolean} [options.hydrate=false] if true and `fullDocument: 'updateLookup'` is set, Mongoose will automatically hydrate `fullDocument` into a fully fledged Mongoose document * @return {ChangeStream} mongoose-specific change stream wrapper, inherits from EventEmitter * @api public */ @@ -3228,12 +3308,15 @@ Model.watch = function(pipeline, options) { } }; + options = options || {}; + options.model = this; + return new ChangeStream(changeStreamThunk, pipeline, options); }; /** - * _Requires MongoDB >= 3.6.0._ Starts a [MongoDB session](https://docs.mongodb.com/manual/release-notes/3.6/#client-sessions) - * for benefits like causal consistency, [retryable writes](https://docs.mongodb.com/manual/core/retryable-writes/), + * _Requires MongoDB >= 3.6.0._ Starts a [MongoDB session](https://www.mongodb.com/docs/manual/release-notes/3.6/#client-sessions) + * for benefits like causal consistency, [retryable writes](https://www.mongodb.com/docs/manual/core/retryable-writes/), * and [transactions](https://thecodebarbarian.com/a-node-js-perspective-on-mongodb-4-transactions.html). * * Calling `MyModel.startSession()` is equivalent to calling `MyModel.db.startSession()`. @@ -3251,7 +3334,7 @@ Model.watch = function(pipeline, options) { * // secondary that is experiencing replication lag. * doc = await Person.findOne({ name: 'Ned Stark' }, null, { session, readPreference: 'secondary' }); * - * @param {Object} [options] see the [mongodb driver options](https://mongodb.github.io/node-mongodb-native/3.0/api/MongoClient.html#startSession) + * @param {Object} [options] see the [mongodb driver options](https://mongodb.github.io/node-mongodb-native/4.9/classes/MongoClient.html#startSession) * @param {Boolean} [options.causalConsistency=true] set to false to disable causal consistency * @param {Function} [callback] * @return {Promise} promise that resolves to a MongoDB driver `ClientSession` @@ -3273,7 +3356,7 @@ Model.startSession = function() { * Mongoose always validates each document **before** sending `insertMany` * to MongoDB. So if one document has a validation error, no documents will * be saved, unless you set - * [the `ordered` option to false](https://docs.mongodb.com/manual/reference/method/db.collection.insertMany/#error-handling). + * [the `ordered` option to false](https://www.mongodb.com/docs/manual/reference/method/db.collection.insertMany/#error-handling). * * This function does **not** trigger save middleware. * @@ -3287,12 +3370,13 @@ Model.startSession = function() { * Movies.insertMany(arr, function(error, docs) {}); * * @param {Array|Object|*} doc(s) - * @param {Object} [options] see the [mongodb driver options](https://mongodb.github.io/node-mongodb-native/2.2/api/Collection.html#insertMany) + * @param {Object} [options] see the [mongodb driver options](https://mongodb.github.io/node-mongodb-native/4.9/classes/Collection.html#insertMany) * @param {Boolean} [options.ordered=true] if true, will fail fast on the first error encountered. If false, will insert all the documents it can and report errors later. An `insertMany()` with `ordered = false` is called an "unordered" `insertMany()`. - * @param {Boolean} [options.rawResult=false] if false, the returned promise resolves to the documents that passed mongoose document validation. If `true`, will return the [raw result from the MongoDB driver](https://mongodb.github.io/node-mongodb-native/2.2/api/Collection.html#~insertWriteOpCallback) with a `mongoose` property that contains `validationErrors` if this is an unordered `insertMany`. - * @param {Boolean} [options.lean=false] if `true`, skips hydrating and validating the documents. This option is useful if you need the extra performance, but Mongoose won't validate the documents before inserting. + * @param {Boolean} [options.rawResult=false] if false, the returned promise resolves to the documents that passed mongoose document validation. If `true`, will return the [raw result from the MongoDB driver](https://mongodb.github.io/node-mongodb-native/4.9/interfaces/InsertManyResult.html) with a `mongoose` property that contains `validationErrors` and `results` if this is an unordered `insertMany`. + * @param {Boolean} [options.lean=false] if `true`, skips hydrating the documents. This means Mongoose will **not** cast or validate any of the documents passed to `insertMany()`. This option is useful if you need the extra performance, but comes with data integrity risk. Consider using with [`castObject()`](#model_Model-castObject). * @param {Number} [options.limit=null] this limits the number of documents being processed (validation/casting) by mongoose in parallel, this does **NOT** send the documents in batches to MongoDB. Use this option if you're processing a large number of documents and your app is running out of memory. * @param {String|Object|Array} [options.populate=null] populates the result documents. This option is a no-op if `rawResult` is set. + * @param {Boolean} [options.throwOnValidationError=false] If true and `ordered: false`, throw an error if one of the operations failed validation, but all valid operations completed successfully. * @param {Function} [callback] callback * @return {Promise} resolving to the raw result from the MongoDB driver if `options.rawResult` was `true`, or the documents that passed validation, otherwise * @api public @@ -3310,8 +3394,16 @@ Model.insertMany = function(arr, options, callback) { }, this.events); }; -/*! +/** * ignore + * + * @param {Array} arr + * @param {Object} options + * @param {Function} callback + * @api private + * @memberOf Model + * @method $__insertMany + * @static */ Model.$__insertMany = function(arr, options, callback) { @@ -3329,6 +3421,7 @@ Model.$__insertMany = function(arr, options, callback) { const limit = options.limit || 1000; const rawResult = !!options.rawResult; const ordered = typeof options.ordered === 'boolean' ? options.ordered : true; + const throwOnValidationError = typeof options.throwOnValidationError === 'boolean' ? options.throwOnValidationError : false; const lean = !!options.lean; if (!Array.isArray(arr)) { @@ -3336,8 +3429,17 @@ Model.$__insertMany = function(arr, options, callback) { } const validationErrors = []; - const toExecute = arr.map(doc => + const validationErrorsToOriginalOrder = new Map(); + const results = ordered ? null : new Array(arr.length); + const toExecute = arr.map((doc, index) => callback => { + // If option `lean` is set to true bypass validation and hydration + if (lean) { + // we have to execute callback at the nextTick to be compatible + // with parallelLimit, as `results` variable has TDZ issue if we + // execute the callback synchronously + return immediate(() => callback(null, doc)); + } if (!(doc instanceof _this)) { try { doc = new _this(doc); @@ -3348,13 +3450,6 @@ Model.$__insertMany = function(arr, options, callback) { if (options.session != null) { doc.$session(options.session); } - // If option `lean` is set to true bypass validation - if (lean) { - // we have to execute callback at the nextTick to be compatible - // with parallelLimit, as `results` variable has TDZ issue if we - // execute the callback synchronously - return immediate(() => callback(null, doc)); - } doc.$validate({ __noPromise: true }, function(error) { if (error) { // Option `ordered` signals that insert should be continued after reaching @@ -3362,6 +3457,8 @@ Model.$__insertMany = function(arr, options, callback) { // failed. It's up to the next function to filter out all failed models if (ordered === false) { validationErrors.push(error); + validationErrorsToOriginalOrder.set(error, index); + results[index] = error; return callback(null, null); } return callback(error); @@ -3375,14 +3472,46 @@ Model.$__insertMany = function(arr, options, callback) { callback(error, null); return; } + + const originalDocIndex = new Map(); + const validDocIndexToOriginalIndex = new Map(); + for (let i = 0; i < docs.length; ++i) { + originalDocIndex.set(docs[i], i); + } + // We filter all failed pre-validations by removing nulls const docAttributes = docs.filter(function(doc) { return doc != null; }); + for (let i = 0; i < docAttributes.length; ++i) { + validDocIndexToOriginalIndex.set(i, originalDocIndex.get(docAttributes[i])); + } + + // Make sure validation errors are in the same order as the + // original documents, so if both doc1 and doc2 both fail validation, + // `Model.insertMany([doc1, doc2])` will always have doc1's validation + // error before doc2's. Re: gh-12791. + if (validationErrors.length > 0) { + validationErrors.sort((err1, err2) => { + return validationErrorsToOriginalOrder.get(err1) - validationErrorsToOriginalOrder.get(err2); + }); + } + // Quickly escape while there aren't any valid docAttributes if (docAttributes.length === 0) { + if (throwOnValidationError) { + return callback(new MongooseBulkWriteError( + validationErrors, + results, + null, + 'insertMany' + )); + } if (rawResult) { const res = { + acknowledged: true, + insertedCount: 0, + insertedIds: {}, mongoose: { validationErrors: validationErrors } @@ -3392,11 +3521,12 @@ Model.$__insertMany = function(arr, options, callback) { callback(null, []); return; } - const docObjects = docAttributes.map(function(doc) { + const docObjects = lean ? docAttributes : docAttributes.map(function(doc) { if (doc.$__schema.options.versionKey) { doc[doc.$__schema.options.versionKey] = 0; } - if (doc.initializeTimestamps) { + const shouldSetTimestamps = (!options || options.timestamps !== false) && doc.initializeTimestamps && (!doc.$__ || doc.$__.timestamps !== false); + if (shouldSetTimestamps) { return doc.initializeTimestamps().toObject(internalToObjectOptions); } return doc.toObject(internalToObjectOptions); @@ -3414,6 +3544,27 @@ Model.$__insertMany = function(arr, options, callback) { // `insertedDocs` is a Mongoose-specific property const erroredIndexes = new Set((error && error.writeErrors || []).map(err => err.index)); + for (let i = 0; i < error.writeErrors.length; ++i) { + const originalIndex = validDocIndexToOriginalIndex.get(error.writeErrors[i].index); + error.writeErrors[i] = { + ...error.writeErrors[i], + index: originalIndex + }; + if (!ordered) { + results[originalIndex] = error.writeErrors[i]; + } + } + + if (!ordered) { + for (let i = 0; i < results.length; ++i) { + if (results[i] === void 0) { + results[i] = docs[i]; + } + } + + error.results = results; + } + let firstErroredIndex = -1; error.insertedDocs = docAttributes. filter((doc, i) => { @@ -3432,26 +3583,59 @@ Model.$__insertMany = function(arr, options, callback) { return !isErrored; }). map(function setIsNewForInsertedDoc(doc) { + if (lean) { + return doc; + } doc.$__reset(); _setIsNew(doc, false); return doc; }); + if (rawResult && ordered === false) { + error.mongoose = { + validationErrors: validationErrors, + results: results + }; + } + callback(error, null); return; } - for (const attribute of docAttributes) { - attribute.$__reset(); - _setIsNew(attribute, false); + if (!lean) { + for (const attribute of docAttributes) { + attribute.$__reset(); + _setIsNew(attribute, false); + } + } + + if (ordered === false && throwOnValidationError && validationErrors.length > 0) { + for (let i = 0; i < results.length; ++i) { + if (results[i] === void 0) { + results[i] = docs[i]; + } + } + return callback(new MongooseBulkWriteError( + validationErrors, + results, + res, + 'insertMany' + )); } if (rawResult) { if (ordered === false) { + for (let i = 0; i < results.length; ++i) { + if (results[i] === void 0) { + results[i] = docs[i]; + } + } + // Decorate with mongoose validation errors in case of unordered, // because then still do `insertMany()` res.mongoose = { - validationErrors: validationErrors + validationErrors: validationErrors, + results: results }; } return callback(null, res); @@ -3500,7 +3684,7 @@ function _setIsNew(doc, val) { * * This function does **not** trigger any middleware, neither `save()`, nor `update()`. * If you need to trigger - * `save()` middleware for every document use [`create()`](https://mongoosejs.com/docs/api.html#model_Model.create) instead. + * `save()` middleware for every document use [`create()`](#model_Model-create) instead. * * #### Example: * @@ -3532,7 +3716,7 @@ function _setIsNew(doc, val) { * console.log(res.insertedCount, res.modifiedCount, res.deletedCount); * }); * - * The [supported operations](https://docs.mongodb.com/manual/reference/method/db.collection.bulkWrite/#db.collection.bulkWrite) are: + * The [supported operations](https://www.mongodb.com/docs/manual/reference/method/db.collection.bulkWrite/#db.collection.bulkWrite) are: * * - `insertOne` * - `updateOne` @@ -3543,34 +3727,35 @@ function _setIsNew(doc, val) { * * @param {Array} ops * @param {Object} [ops.insertOne.document] The document to insert - * @param {Object} [opts.updateOne.filter] Update the first document that matches this filter - * @param {Object} [opts.updateOne.update] An object containing [update operators](https://docs.mongodb.com/manual/reference/operator/update/) - * @param {Boolean} [opts.updateOne.upsert=false] If true, insert a doc if none match - * @param {Boolean} [opts.updateOne.timestamps=true] If false, do not apply [timestamps](https://mongoosejs.com/docs/guide.html#timestamps) to the operation - * @param {Object} [opts.updateOne.collation] The [MongoDB collation](https://thecodebarbarian.com/a-nodejs-perspective-on-mongodb-34-collations) to use - * @param {Array} [opts.updateOne.arrayFilters] The [array filters](https://thecodebarbarian.com/a-nodejs-perspective-on-mongodb-36-array-filters.html) used in `update` - * @param {Object} [opts.updateMany.filter] Update all the documents that match this filter - * @param {Object} [opts.updateMany.update] An object containing [update operators](https://docs.mongodb.com/manual/reference/operator/update/) - * @param {Boolean} [opts.updateMany.upsert=false] If true, insert a doc if no documents match `filter` - * @param {Boolean} [opts.updateMany.timestamps=true] If false, do not apply [timestamps](https://mongoosejs.com/docs/guide.html#timestamps) to the operation - * @param {Object} [opts.updateMany.collation] The [MongoDB collation](https://thecodebarbarian.com/a-nodejs-perspective-on-mongodb-34-collations) to use - * @param {Array} [opts.updateMany.arrayFilters] The [array filters](https://thecodebarbarian.com/a-nodejs-perspective-on-mongodb-36-array-filters.html) used in `update` - * @param {Object} [opts.deleteOne.filter] Delete the first document that matches this filter - * @param {Object} [opts.deleteMany.filter] Delete all documents that match this filter - * @param {Object} [opts.replaceOne.filter] Replace the first document that matches this filter - * @param {Object} [opts.replaceOne.replacement] The replacement document - * @param {Boolean} [opts.replaceOne.upsert=false] If true, insert a doc if no documents match `filter` + * @param {Object} [ops.updateOne.filter] Update the first document that matches this filter + * @param {Object} [ops.updateOne.update] An object containing [update operators](https://www.mongodb.com/docs/manual/reference/operator/update/) + * @param {Boolean} [ops.updateOne.upsert=false] If true, insert a doc if none match + * @param {Boolean} [ops.updateOne.timestamps=true] If false, do not apply [timestamps](https://mongoosejs.com/docs/guide.html#timestamps) to the operation + * @param {Object} [ops.updateOne.collation] The [MongoDB collation](https://thecodebarbarian.com/a-nodejs-perspective-on-mongodb-34-collations) to use + * @param {Array} [ops.updateOne.arrayFilters] The [array filters](https://thecodebarbarian.com/a-nodejs-perspective-on-mongodb-36-array-filters.html) used in `update` + * @param {Object} [ops.updateMany.filter] Update all the documents that match this filter + * @param {Object} [ops.updateMany.update] An object containing [update operators](https://www.mongodb.com/docs/manual/reference/operator/update/) + * @param {Boolean} [ops.updateMany.upsert=false] If true, insert a doc if no documents match `filter` + * @param {Boolean} [ops.updateMany.timestamps=true] If false, do not apply [timestamps](https://mongoosejs.com/docs/guide.html#timestamps) to the operation + * @param {Object} [ops.updateMany.collation] The [MongoDB collation](https://thecodebarbarian.com/a-nodejs-perspective-on-mongodb-34-collations) to use + * @param {Array} [ops.updateMany.arrayFilters] The [array filters](https://thecodebarbarian.com/a-nodejs-perspective-on-mongodb-36-array-filters.html) used in `update` + * @param {Object} [ops.deleteOne.filter] Delete the first document that matches this filter + * @param {Object} [ops.deleteMany.filter] Delete all documents that match this filter + * @param {Object} [ops.replaceOne.filter] Replace the first document that matches this filter + * @param {Object} [ops.replaceOne.replacement] The replacement document + * @param {Boolean} [ops.replaceOne.upsert=false] If true, insert a doc if no documents match `filter` * @param {Object} [options] * @param {Boolean} [options.ordered=true] If true, execute writes in order and stop at the first error. If false, execute writes in parallel and continue until all writes have either succeeded or errored. * @param {ClientSession} [options.session=null] The session associated with this bulk write. See [transactions docs](/docs/transactions.html). - * @param {String|number} [options.w=1] The [write concern](https://docs.mongodb.com/manual/reference/write-concern/). See [`Query#w()`](/docs/api.html#query_Query-w) for more information. - * @param {number} [options.wtimeout=null] The [write concern timeout](https://docs.mongodb.com/manual/reference/write-concern/#wtimeout). - * @param {Boolean} [options.j=true] If false, disable [journal acknowledgement](https://docs.mongodb.com/manual/reference/write-concern/#j-option) + * @param {String|number} [options.w=1] The [write concern](https://www.mongodb.com/docs/manual/reference/write-concern/). See [`Query#w()`](/docs/api/query.html#query_Query-w) for more information. + * @param {number} [options.wtimeout=null] The [write concern timeout](https://www.mongodb.com/docs/manual/reference/write-concern/#wtimeout). + * @param {Boolean} [options.j=true] If false, disable [journal acknowledgement](https://www.mongodb.com/docs/manual/reference/write-concern/#j-option) * @param {Boolean} [options.skipValidation=false] Set to true to skip Mongoose schema validation on bulk write operations. Mongoose currently runs validation on `insertOne` and `replaceOne` operations by default. - * @param {Boolean} [options.bypassDocumentValidation=false] If true, disable [MongoDB server-side schema validation](https://docs.mongodb.com/manual/core/schema-validation/) for all writes in this bulk. + * @param {Boolean} [options.bypassDocumentValidation=false] If true, disable [MongoDB server-side schema validation](https://www.mongodb.com/docs/manual/core/schema-validation/) for all writes in this bulk. * @param {Boolean} [options.strict=null] Overwrites the [`strict` option](/docs/guide.html#strict) on schema. If false, allows filtering and writing fields not defined in the schema for all writes in this bulk. + * @param {Boolean} [options.throwOnValidationError=false] If true and `ordered: false`, throw an error if one of the operations failed validation, but all valid operations completed successfully. * @param {Function} [callback] callback `function(error, bulkWriteOpResult) {}` - * @return {Promise} resolves to a [`BulkWriteOpResult`](https://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#~BulkWriteOpResult) if the operation succeeds + * @return {Promise} resolves to a [`BulkWriteOpResult`](https://mongodb.github.io/node-mongodb-native/4.9/classes/BulkWriteResult.html) if the operation succeeds * @api public */ @@ -3582,29 +3767,110 @@ Model.bulkWrite = function(ops, options, callback) { options = null; } options = options || {}; + const ordered = options.ordered == null ? true : options.ordered; const validations = ops.map(op => castBulkWrite(this, op, options)); callback = this.$handleCallbackError(callback); return this.db.base._promiseOrCallback(callback, cb => { cb = this.$wrapCallback(cb); - each(validations, (fn, cb) => fn(cb), error => { - if (error) { - return cb(error); + if (ordered) { + each(validations, (fn, cb) => fn(cb), error => { + if (error) { + return cb(error); + } + + if (ops.length === 0) { + return cb(null, getDefaultBulkwriteResult()); + } + + try { + this.$__collection.bulkWrite(ops, options, (error, res) => { + if (error) { + return cb(error); + } + + cb(null, res); + }); + } catch (err) { + return cb(err); + } + }); + + return; + } + + let remaining = validations.length; + let validOps = []; + let validationErrors = []; + const results = []; + if (remaining === 0) { + completeUnorderedValidation.call(this); + } else { + for (let i = 0; i < validations.length; ++i) { + validations[i]((err) => { + if (err == null) { + validOps.push(i); + } else { + validationErrors.push({ index: i, error: err }); + results[i] = err; + } + if (--remaining <= 0) { + completeUnorderedValidation.call(this); + } + }); } + } - if (ops.length === 0) { + validationErrors = validationErrors. + sort((v1, v2) => v1.index - v2.index). + map(v => v.error); + + function completeUnorderedValidation() { + const validOpIndexes = validOps; + validOps = validOps.sort().map(index => ops[index]); + + if (validOps.length === 0) { + if ('throwOnValidationError' in options && options.throwOnValidationError && validationErrors.length > 0) { + return cb(new MongooseBulkWriteError( + validationErrors.map(err => err.error), + results, + getDefaultBulkwriteResult(), + 'bulkWrite' + )); + } return cb(null, getDefaultBulkwriteResult()); } - this.$__collection.bulkWrite(ops, options, (error, res) => { + this.$__collection.bulkWrite(validOps, options, (error, res) => { + for (let i = 0; i < validOpIndexes.length; ++i) { + results[validOpIndexes[i]] = null; + } if (error) { + if (validationErrors.length > 0) { + error.mongoose = error.mongoose || {}; + error.mongoose.validationErrors = validationErrors; + } + return cb(error); } + if (validationErrors.length > 0) { + if ('throwOnValidationError' in options && options.throwOnValidationError) { + return cb(new MongooseBulkWriteError( + validationErrors, + results, + res, + 'bulkWrite' + )); + } + res.mongoose = res.mongoose || {}; + res.mongoose.validationErrors = validationErrors; + } + cb(null, res); }); - }); + } }, this.events); }; @@ -3616,41 +3882,57 @@ Model.bulkWrite = function(ops, options, callback) { * * @param {Array} documents * @param {Object} [options] options passed to the underlying `bulkWrite()` + * @param {Boolean} [options.timestamps] defaults to `null`, when set to false, mongoose will not add/update timestamps to the documents. * @param {ClientSession} [options.session=null] The session associated with this bulk write. See [transactions docs](/docs/transactions.html). - * @param {String|number} [options.w=1] The [write concern](https://docs.mongodb.com/manual/reference/write-concern/). See [`Query#w()`](/docs/api.html#query_Query-w) for more information. - * @param {number} [options.wtimeout=null] The [write concern timeout](https://docs.mongodb.com/manual/reference/write-concern/#wtimeout). - * @param {Boolean} [options.j=true] If false, disable [journal acknowledgement](https://docs.mongodb.com/manual/reference/write-concern/#j-option) + * @param {String|number} [options.w=1] The [write concern](https://www.mongodb.com/docs/manual/reference/write-concern/). See [`Query#w()`](/docs/api/query.html#query_Query-w) for more information. + * @param {number} [options.wtimeout=null] The [write concern timeout](https://www.mongodb.com/docs/manual/reference/write-concern/#wtimeout). + * @param {Boolean} [options.j=true] If false, disable [journal acknowledgement](https://www.mongodb.com/docs/manual/reference/write-concern/#j-option) * */ -Model.bulkSave = function(documents, options) { - const preSavePromises = documents.map(buildPreSavePromise); - - const writeOperations = this.buildBulkWriteOperations(documents, { skipValidation: true }); - - let bulkWriteResultPromise; - return Promise.all(preSavePromises) - .then(() => bulkWriteResultPromise = this.bulkWrite(writeOperations, options)) - .then(() => documents.map(buildSuccessfulWriteHandlerPromise)) - .then(() => bulkWriteResultPromise) - .catch((err) => { - if (!(err && err.writeErrors && err.writeErrors.length)) { - throw err; +Model.bulkSave = async function(documents, options) { + options = options || {}; + + const writeOperations = this.buildBulkWriteOperations(documents, { skipValidation: true, timestamps: options.timestamps }); + + if (options.timestamps != null) { + for (const document of documents) { + document.$__.saveOptions = document.$__.saveOptions || {}; + document.$__.saveOptions.timestamps = options.timestamps; + } + } else { + for (const document of documents) { + if (document.$__.timestamps != null) { + document.$__.saveOptions = document.$__.saveOptions || {}; + document.$__.saveOptions.timestamps = document.$__.timestamps; } - return Promise.all( - documents.map((document) => { - const documentError = err.writeErrors.find(writeError => { - const writeErrorDocumentId = writeError.err.op._id || writeError.err.op.q._id; - return writeErrorDocumentId.toString() === document._id.toString(); - }); + } + } - if (documentError == null) { - return buildSuccessfulWriteHandlerPromise(document); - } - }) - ).then(() => { - throw err; + await Promise.all(documents.map(buildPreSavePromise)); + + const { bulkWriteResult, bulkWriteError } = await this.bulkWrite(writeOperations, options).then( + (res) => ({ bulkWriteResult: res, bulkWriteError: null }), + (err) => ({ bulkWriteResult: null, bulkWriteError: err }) + ); + + await Promise.all( + documents.map(async(document) => { + const documentError = bulkWriteError && bulkWriteError.writeErrors.find(writeError => { + const writeErrorDocumentId = writeError.err.op._id || writeError.err.op.q._id; + return writeErrorDocumentId.toString() === document._id.toString(); }); - }); + + if (documentError == null) { + await handleSuccessfulWrite(document); + } + }) + ); + + if (bulkWriteError && bulkWriteError.writeErrors && bulkWriteError.writeErrors.length) { + throw bulkWriteError; + } + + return bulkWriteResult; }; function buildPreSavePromise(document) { @@ -3665,34 +3947,157 @@ function buildPreSavePromise(document) { }); } -function buildSuccessfulWriteHandlerPromise(document) { +function handleSuccessfulWrite(document) { return new Promise((resolve, reject) => { - handleSuccessfulWrite(document, resolve, reject); + if (document.$isNew) { + _setIsNew(document, false); + } + + document.$__reset(); + document.schema.s.hooks.execPost('save', document, [document], {}, (err) => { + if (err) { + reject(err); + return; + } + resolve(); + }); + }); } -function handleSuccessfulWrite(document, resolve, reject) { - if (document.$isNew) { - _setIsNew(document, false); +/** + * Apply defaults to the given document or POJO. + * + * @param {Object|Document} obj object or document to apply defaults on + * @returns {Object|Document} + * @api public + */ + +Model.applyDefaults = function applyDefaults(doc) { + if (doc.$__ != null) { + applyDefaultsHelper(doc, doc.$__.fields, doc.$__.exclude); + + for (const subdoc of doc.$getAllSubdocs()) { + applyDefaults(subdoc, subdoc.$__.fields, subdoc.$__.exclude); + } + + return doc; } - document.$__reset(); - document.schema.s.hooks.execPost('save', document, {}, (err) => { - if (err) { - reject(err); - return; + applyDefaultsToPOJO(doc, this.schema); + + return doc; +}; + +/** + * Cast the given POJO to the model's schema + * + * #### Example: + * + * const Test = mongoose.model('Test', Schema({ num: Number })); + * + * const obj = Test.castObject({ num: '42' }); + * obj.num; // 42 as a number + * + * Test.castObject({ num: 'not a number' }); // Throws a ValidationError + * + * @param {Object} obj object or document to cast + * @param {Object} options options passed to castObject + * @param {Boolean} options.ignoreCastErrors If set to `true` will not throw a ValidationError and only return values that were successfully cast. + * @returns {Object} POJO casted to the model's schema + * @throws {ValidationError} if casting failed for at least one path + * @api public + */ + +Model.castObject = function castObject(obj, options) { + options = options || {}; + const ret = {}; + + const schema = this.schema; + const paths = Object.keys(schema.paths); + + for (const path of paths) { + const schemaType = schema.path(path); + if (!schemaType || !schemaType.$isMongooseArray) { + continue; + } + + const val = get(obj, path); + pushNestedArrayPaths(paths, val, path); + } + + let error = null; + + for (const path of paths) { + const schemaType = schema.path(path); + if (schemaType == null) { + continue; + } + + let val = get(obj, path, void 0); + + if (val == null) { + continue; } - resolve(); - }); -} + + const pieces = path.indexOf('.') === -1 ? [path] : path.split('.'); + let cur = ret; + for (let i = 0; i < pieces.length - 1; ++i) { + if (cur[pieces[i]] == null) { + cur[pieces[i]] = isNaN(pieces[i + 1]) ? {} : []; + } + cur = cur[pieces[i]]; + } + + if (schemaType.$isMongooseDocumentArray) { + continue; + } + if (schemaType.$isSingleNested || schemaType.$isMongooseDocumentArrayElement) { + try { + val = Model.castObject.call(schemaType.caster, val); + } catch (err) { + if (!options.ignoreCastErrors) { + error = error || new ValidationError(); + error.addError(path, err); + } + continue; + } + + cur[pieces[pieces.length - 1]] = val; + continue; + } + + try { + val = schemaType.cast(val); + cur[pieces[pieces.length - 1]] = val; + } catch (err) { + if (!options.ignoreCastErrors) { + error = error || new ValidationError(); + error.addError(path, err); + } + + continue; + } + } + + if (error != null) { + throw error; + } + + return ret; +}; /** + * Build bulk write operations for `bulkSave()`. * * @param {Array} documents The array of documents to build write operations of * @param {Object} options * @param {Boolean} options.skipValidation defaults to `false`, when set to true, building the write operations will bypass validating the documents. + * @param {Boolean} options.timestamps defaults to `null`, when set to false, mongoose will not add/update timestamps to the documents. * @return {Array} Returns a array of all Promises the function executes to be awaited. + * @api private */ + Model.buildBulkWriteOperations = function buildBulkWriteOperations(documents, options) { if (!Array.isArray(documents)) { throw new Error(`bulkSave expects an array of documents to be passed, received \`${documents}\` instead`); @@ -3713,9 +4118,9 @@ Model.buildBulkWriteOperations = function buildBulkWriteOperations(documents, op const isANewDocument = document.isNew; if (isANewDocument) { - accumulator.push({ - insertOne: { document } - }); + const writeOperation = { insertOne: { document } }; + utils.injectTimestampsOption(writeOperation.insertOne, options.timestamps); + accumulator.push(writeOperation); return accumulator; } @@ -3730,13 +4135,9 @@ Model.buildBulkWriteOperations = function buildBulkWriteOperations(documents, op _applyCustomWhere(document, where); document.$__version(where, delta); - - accumulator.push({ - updateOne: { - filter: where, - update: changes - } - }); + const writeOperation = { updateOne: { filter: where, update: changes } }; + utils.injectTimestampsOption(writeOperation.updateOne, options.timestamps); + accumulator.push(writeOperation); return accumulator; } @@ -3755,6 +4156,7 @@ Model.buildBulkWriteOperations = function buildBulkWriteOperations(documents, op } }; + /** * Shortcut for creating a new Document from existing raw data, pre-saved in the DB. * The document returned has no paths marked as modified initially. @@ -3766,11 +4168,13 @@ Model.buildBulkWriteOperations = function buildBulkWriteOperations(documents, op * * @param {Object} obj * @param {Object|String|String[]} [projection] optional projection containing which fields should be selected for this document + * @param {Object} [options] optional options + * @param {Boolean} [options.setters=false] if true, apply schema setters when hydrating * @return {Document} document instance * @api public */ -Model.hydrate = function(obj, projection) { +Model.hydrate = function(obj, projection, options) { _checkContext(this, 'hydrate'); if (projection != null) { @@ -3781,7 +4185,7 @@ Model.hydrate = function(obj, projection) { } const document = require('./queryhelpers').createModel(this, obj, projection); - document.$init(obj); + document.$init(obj, options); return document; }; @@ -3794,7 +4198,7 @@ Model.hydrate = function(obj, projection) { * * This method is deprecated. See [Deprecation Warnings](../deprecations.html#update) for details. * - * #### Examples: + * #### Example: * * MyModel.update({ age: { $gt: 18 } }, { oldEnough: true }, fn); * @@ -3808,10 +4212,10 @@ Model.hydrate = function(obj, projection) { * * - `strict` (boolean): overrides the [schema-level `strict` option](/docs/guide.html#strict) for this update * - `upsert` (boolean): whether to create the doc if it doesn't match (false) - * - `writeConcern` (object): sets the [write concern](https://docs.mongodb.com/manual/reference/write-concern/) for replica sets. Overrides the [schema-level write concern](/docs/guide.html#writeConcern) + * - `writeConcern` (object): sets the [write concern](https://www.mongodb.com/docs/manual/reference/write-concern/) for replica sets. Overrides the [schema-level write concern](/docs/guide.html#writeConcern) * - `multi` (boolean): whether multiple documents should be updated (false) * - `runValidators`: if true, runs [update validators](/docs/validation.html#update-validators) on this command. Update validators validate the update operation against the model's schema. - * - `setDefaultsOnInsert` (boolean): if this and `upsert` are true, mongoose will apply the [defaults](https://mongoosejs.com/docs/defaults.html) specified in the model's schema if a new document is created. This option only works on MongoDB >= 2.4 because it relies on [MongoDB's `$setOnInsert` operator](https://docs.mongodb.org/v2.4/reference/operator/update/setOnInsert/). + * - `setDefaultsOnInsert` (boolean): if this and `upsert` are true, mongoose will apply the [defaults](https://mongoosejs.com/docs/defaults.html) specified in the model's schema if a new document is created. This option only works on MongoDB >= 2.4 because it relies on [MongoDB's `$setOnInsert` operator](https://www.mongodb.com/docs/manual/reference/operator/update/setOnInsert/). * - `timestamps` (boolean): If set to `false` and [schema-level timestamps](/docs/guide.html#timestamps) are enabled, skip timestamps for this update. Does nothing if schema-level timestamps are not set. * - `overwrite` (boolean): disables update-only mode, allowing you to overwrite the doc (false) * @@ -3843,23 +4247,22 @@ Model.hydrate = function(obj, projection) { * * @deprecated * @see strict https://mongoosejs.com/docs/guide.html#strict - * @see response https://docs.mongodb.org/v2.6/reference/command/update/#output + * @see response https://mongodb.github.io/node-mongodb-native/4.9/classes/Collection.html#update * @param {Object} filter * @param {Object} doc - * @param {Object} [options] optional see [`Query.prototype.setOptions()`](/docs/api.html#query_Query-setOptions) + * @param {Object} [options] optional see [`Query.prototype.setOptions()`](/docs/api/query.html#query_Query-setOptions) * @param {Boolean|String} [options.strict] overwrites the schema's [strict mode option](/docs/guide.html#strict) * @param {Boolean} [options.upsert=false] if true, and no documents found, insert a new document - * @param {Object} [options.writeConcern=null] sets the [write concern](https://docs.mongodb.com/manual/reference/write-concern/) for replica sets. Overrides the [schema-level write concern](/docs/guide.html#writeConcern) + * @param {Object} [options.writeConcern=null] sets the [write concern](https://www.mongodb.com/docs/manual/reference/write-concern/) for replica sets. Overrides the [schema-level write concern](/docs/guide.html#writeConcern) * @param {Boolean} [options.multi=false] whether multiple documents should be updated or just the first one that matches `filter`. * @param {Boolean} [options.runValidators=false] if true, runs [update validators](/docs/validation.html#update-validators) on this command. Update validators validate the update operation against the model's schema. * @param {Boolean} [options.setDefaultsOnInsert=false] `true` by default. If `setDefaultsOnInsert` and `upsert` are true, mongoose will apply the [defaults](https://mongoosejs.com/docs/defaults.html) specified in the model's schema if a new document is created. * @param {Boolean} [options.timestamps=null] If set to `false` and [schema-level timestamps](/docs/guide.html#timestamps) are enabled, skip timestamps for this update. Does nothing if schema-level timestamps are not set. - * @param {Boolean} [options.overwrite=false] By default, if you don't include any [update operators](https://docs.mongodb.com/manual/reference/operator/update/) in `doc`, Mongoose will wrap `doc` in `$set` for you. This prevents you from accidentally overwriting the document. This option tells Mongoose to skip adding `$set`. - * @param {Function} [callback] params are (error, [updateWriteOpResult](https://mongodb.github.io/node-mongodb-native/3.6/api/Collection.html#~updateWriteOpResult)) - * @param {Function} [callback] + * @param {Boolean} [options.overwrite=false] By default, if you don't include any [update operators](https://www.mongodb.com/docs/manual/reference/operator/update/) in `doc`, Mongoose will wrap `doc` in `$set` for you. This prevents you from accidentally overwriting the document. This option tells Mongoose to skip adding `$set`. + * @param {Function} [callback] params are (error, [updateWriteOpResult](https://mongodb.github.io/node-mongodb-native/4.9/interfaces/UpdateResult.html)) * @return {Query} - * @see MongoDB docs https://docs.mongodb.com/manual/reference/command/update/#update-command-output - * @see writeOpResult https://mongodb.github.io/node-mongodb-native/3.6/api/Collection.html#~updateWriteOpResult + * @see MongoDB docs https://www.mongodb.com/docs/manual/reference/command/update/#update-command-output + * @see UpdateResult https://mongodb.github.io/node-mongodb-native/4.9/interfaces/UpdateResult.html * @see Query docs https://mongoosejs.com/docs/queries.html * @api public */ @@ -3879,6 +4282,7 @@ Model.update = function update(conditions, doc, options, callback) { * and `post('updateMany')` instead. * * #### Example: + * * const res = await Person.updateMany({ name: /Stark$/ }, { isDeleted: true }); * res.matchedCount; // Number of documents matched * res.modifiedCount; // Number of documents modified @@ -3892,16 +4296,16 @@ Model.update = function update(conditions, doc, options, callback) { * * @param {Object} filter * @param {Object|Array} update - * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api.html#query_Query-setOptions) + * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api/query.html#query_Query-setOptions) * @param {Boolean|String} [options.strict] overwrites the schema's [strict mode option](https://mongoosejs.com/docs/guide.html#strict) * @param {Boolean} [options.upsert=false] if true, and no documents found, insert a new document - * @param {Object} [options.writeConcern=null] sets the [write concern](https://docs.mongodb.com/manual/reference/write-concern/) for replica sets. Overrides the [schema-level write concern](/docs/guide.html#writeConcern) + * @param {Object} [options.writeConcern=null] sets the [write concern](https://www.mongodb.com/docs/manual/reference/write-concern/) for replica sets. Overrides the [schema-level write concern](/docs/guide.html#writeConcern) * @param {Boolean} [options.timestamps=null] If set to `false` and [schema-level timestamps](/docs/guide.html#timestamps) are enabled, skip timestamps for this update. Does nothing if schema-level timestamps are not set. * @param {Function} [callback] `function(error, res) {}` where `res` has 5 properties: `modifiedCount`, `matchedCount`, `acknowledged`, `upsertedId`, and `upsertedCount`. * @return {Query} * @see Query docs https://mongoosejs.com/docs/queries.html - * @see MongoDB docs https://docs.mongodb.com/manual/reference/command/update/#update-command-output - * @see writeOpResult https://mongodb.github.io/node-mongodb-native/2.2/api/Collection.html#~WriteOpResult + * @see MongoDB docs https://www.mongodb.com/docs/manual/reference/command/update/#update-command-output + * @see UpdateResult https://mongodb.github.io/node-mongodb-native/4.9/interfaces/UpdateResult.html * @api public */ @@ -3919,6 +4323,7 @@ Model.updateMany = function updateMany(conditions, doc, options, callback) { * - Use `replaceOne()` if you want to overwrite an entire document rather than using atomic operators like `$set`. * * #### Example: + * * const res = await Person.updateOne({ name: 'Jean-Luc Picard' }, { ship: 'USS Enterprise' }); * res.matchedCount; // Number of documents matched * res.modifiedCount; // Number of documents modified @@ -3932,16 +4337,16 @@ Model.updateMany = function updateMany(conditions, doc, options, callback) { * * @param {Object} filter * @param {Object|Array} update - * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api.html#query_Query-setOptions) + * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api/query.html#query_Query-setOptions) * @param {Boolean|String} [options.strict] overwrites the schema's [strict mode option](https://mongoosejs.com/docs/guide.html#strict) * @param {Boolean} [options.upsert=false] if true, and no documents found, insert a new document - * @param {Object} [options.writeConcern=null] sets the [write concern](https://docs.mongodb.com/manual/reference/write-concern/) for replica sets. Overrides the [schema-level write concern](/docs/guide.html#writeConcern) + * @param {Object} [options.writeConcern=null] sets the [write concern](https://www.mongodb.com/docs/manual/reference/write-concern/) for replica sets. Overrides the [schema-level write concern](/docs/guide.html#writeConcern) * @param {Boolean} [options.timestamps=null] If set to `false` and [schema-level timestamps](/docs/guide.html#timestamps) are enabled, skip timestamps for this update. Note that this allows you to overwrite timestamps. Does nothing if schema-level timestamps are not set. * @param {Function} [callback] params are (error, writeOpResult) * @return {Query} * @see Query docs https://mongoosejs.com/docs/queries.html - * @see MongoDB docs https://docs.mongodb.com/manual/reference/command/update/#update-command-output - * @see writeOpResult https://mongodb.github.io/node-mongodb-native/2.2/api/Collection.html#~WriteOpResult + * @see MongoDB docs https://www.mongodb.com/docs/manual/reference/command/update/#update-command-output + * @see UpdateResult https://mongodb.github.io/node-mongodb-native/4.9/interfaces/UpdateResult.html * @api public */ @@ -3956,6 +4361,7 @@ Model.updateOne = function updateOne(conditions, doc, options, callback) { * given document (no atomic operators like `$set`). * * #### Example: + * * const res = await Person.replaceOne({ _id: 24601 }, { name: 'Jean Valjean' }); * res.matchedCount; // Number of documents matched * res.modifiedCount; // Number of documents modified @@ -3969,15 +4375,15 @@ Model.updateOne = function updateOne(conditions, doc, options, callback) { * * @param {Object} filter * @param {Object} doc - * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api.html#query_Query-setOptions) + * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api/query.html#query_Query-setOptions) * @param {Boolean|String} [options.strict] overwrites the schema's [strict mode option](https://mongoosejs.com/docs/guide.html#strict) * @param {Boolean} [options.upsert=false] if true, and no documents found, insert a new document - * @param {Object} [options.writeConcern=null] sets the [write concern](https://docs.mongodb.com/manual/reference/write-concern/) for replica sets. Overrides the [schema-level write concern](/docs/guide.html#writeConcern) + * @param {Object} [options.writeConcern=null] sets the [write concern](https://www.mongodb.com/docs/manual/reference/write-concern/) for replica sets. Overrides the [schema-level write concern](/docs/guide.html#writeConcern) * @param {Boolean} [options.timestamps=null] If set to `false` and [schema-level timestamps](/docs/guide.html#timestamps) are enabled, skip timestamps for this update. Does nothing if schema-level timestamps are not set. * @param {Function} [callback] `function(error, res) {}` where `res` has 3 properties: `n`, `nModified`, `ok`. * @return {Query} * @see Query docs https://mongoosejs.com/docs/queries.html - * @see writeOpResult https://mongodb.github.io/node-mongodb-native/2.2/api/Collection.html#~WriteOpResult + * @see UpdateResult https://mongodb.github.io/node-mongodb-native/4.9/interfaces/UpdateResult.html * @return {Query} * @api public */ @@ -3993,9 +4399,10 @@ Model.replaceOne = function replaceOne(conditions, doc, options, callback) { return _update(this, 'replaceOne', conditions, doc, options, callback); }; -/*! +/** * Common code for `updateOne()`, `updateMany()`, `replaceOne()`, and `update()` * because they need to do the same thing + * @api private */ function _update(model, op, conditions, doc, options, callback) { @@ -4022,54 +4429,34 @@ function _update(model, op, conditions, doc, options, callback) { /** * Executes a mapReduce command. * - * `o` is an object specifying all mapReduce options as well as the map and reduce functions. All options are delegated to the driver implementation. See [node-mongodb-native mapReduce() documentation](https://mongodb.github.io/node-mongodb-native/api-generated/collection.html#mapreduce) for more detail about options. + * `opts` is an object specifying all mapReduce options as well as the map and reduce functions. All options are delegated to the driver implementation. See [node-mongodb-native mapReduce() documentation](https://mongodb.github.io/node-mongodb-native/4.9/classes/Collection.html#mapReduce) for more detail about options. * * This function does not trigger any middleware. * * #### Example: * - * const o = {}; + * const opts = {}; * // `map()` and `reduce()` are run on the MongoDB server, not Node.js, * // these functions are converted to strings - * o.map = function () { emit(this.name, 1) }; - * o.reduce = function (k, vals) { return vals.length }; - * User.mapReduce(o, function (err, results) { + * opts.map = function () { emit(this.name, 1) }; + * opts.reduce = function (k, vals) { return vals.length }; + * User.mapReduce(opts, function (err, results) { * console.log(results) * }) * - * #### Other options: - * - * - `query` {Object} query filter object. - * - `sort` {Object} sort input objects using this key - * - `limit` {Number} max number of documents - * - `keeptemp` {Boolean, default:false} keep temporary data - * - `finalize` {Function} finalize function - * - `scope` {Object} scope variables exposed to map/reduce/finalize during execution - * - `jsMode` {Boolean, default:false} it is possible to make the execution stay in JS. Provided in MongoDB > 2.0.X - * - `verbose` {Boolean, default:false} provide statistics on job execution time. - * - `readPreference` {String} - * - `out*` {Object, default: {inline:1}} sets the output target for the map reduce job. - * - * #### * out options: - * - * - `{inline:1}` the results are returned in an array - * - `{replace: 'collectionName'}` add the results to collectionName: the results replace the collection - * - `{reduce: 'collectionName'}` add the results to collectionName: if dups are detected, uses the reducer / finalize functions - * - `{merge: 'collectionName'}` add the results to collectionName: if dups exist the new docs overwrite the old - * - * If `options.out` is set to `replace`, `merge`, or `reduce`, a Model instance is returned that can be used for further querying. Queries run against this model are all executed with the [`lean` option](/docs/tutorials/lean.html); meaning only the js object is returned and no Mongoose magic is applied (getters, setters, etc). + * If `opts.out` is set to `replace`, `merge`, or `reduce`, a Model instance is returned that can be used for further querying. Queries run against this model are all executed with the [`lean` option](/docs/tutorials/lean.html); meaning only the js object is returned and no Mongoose magic is applied (getters, setters, etc). * * #### Example: * - * const o = {}; + * const opts = {}; * // You can also define `map()` and `reduce()` as strings if your * // linter complains about `emit()` not being defined - * o.map = 'function () { emit(this.name, 1) }'; - * o.reduce = 'function (k, vals) { return vals.length }'; - * o.out = { replace: 'createdCollectionNameForResults' } - * o.verbose = true; + * opts.map = 'function () { emit(this.name, 1) }'; + * opts.reduce = 'function (k, vals) { return vals.length }'; + * opts.out = { replace: 'createdCollectionNameForResults' } + * opts.verbose = true; * - * User.mapReduce(o, function (err, model, stats) { + * User.mapReduce(opts, function (err, model, stats) { * console.log('map reduce took %d ms', stats.processtime) * model.find().where('value').gt(10).exec(function (err, docs) { * console.log(docs); @@ -4078,8 +4465,8 @@ function _update(model, op, conditions, doc, options, callback) { * * // `mapReduce()` returns a promise. However, ES6 promises can only * // resolve to exactly one value, - * o.resolveToObject = true; - * const promise = User.mapReduce(o); + * opts.resolveToObject = true; + * const promise = User.mapReduce(opts); * promise.then(function (res) { * const model = res.model; * const stats = res.stats; @@ -4089,14 +4476,28 @@ function _update(model, op, conditions, doc, options, callback) { * console.log(docs); * }).then(null, handleError).end() * - * @param {Object} o an object specifying map-reduce options + * @param {Object} opts an object specifying map-reduce options + * @param {Boolean} [opts.verbose=false] provide statistics on job execution time + * @param {ReadPreference|String} [opts.readPreference] a read-preference string or a read-preference instance + * @param {Boolean} [opts.jsMode=false] it is possible to make the execution stay in JS. Provided in MongoDB > 2.0.X + * @param {Object} [opts.scope] scope variables exposed to map/reduce/finalize during execution + * @param {Function} [opts.finalize] finalize function + * @param {Boolean} [opts.keeptemp=false] keep temporary data + * @param {Number} [opts.limit] max number of documents + * @param {Object} [opts.sort] sort input objects using this key + * @param {Object} [opts.query] query filter object + * @param {Object} [opts.out] sets the output target for the map reduce job + * @param {Number} [opts.out.inline=1] the results are returned in an array + * @param {String} [opts.out.replace] add the results to collectionName: the results replace the collection + * @param {String} [opts.out.reduce] add the results to collectionName: if dups are detected, uses the reducer / finalize functions + * @param {String} [opts.out.merge] add the results to collectionName: if dups exist the new docs overwrite the old * @param {Function} [callback] optional callback - * @see https://www.mongodb.org/display/DOCS/MapReduce + * @see MongoDB MapReduce https://www.mongodb.com/docs/manual/core/map-reduce/ * @return {Promise} * @api public */ -Model.mapReduce = function mapReduce(o, callback) { +Model.mapReduce = function mapReduce(opts, callback) { _checkContext(this, 'mapReduce'); callback = this.$handleCallbackError(callback); @@ -4109,20 +4510,20 @@ Model.mapReduce = function mapReduce(o, callback) { Model.mapReduce.schema = new Schema({}, opts); } - if (!o.out) o.out = { inline: 1 }; - if (o.verbose !== false) o.verbose = true; + if (!opts.out) opts.out = { inline: 1 }; + if (opts.verbose !== false) opts.verbose = true; - o.map = String(o.map); - o.reduce = String(o.reduce); + opts.map = String(opts.map); + opts.reduce = String(opts.reduce); - if (o.query) { - let q = new this.Query(o.query); + if (opts.query) { + let q = new this.Query(opts.query); q.cast(this); - o.query = q._conditions; + opts.query = q._conditions; q = undefined; } - this.$__collection.mapReduce(null, null, o, (err, res) => { + this.$__collection.mapReduce(null, null, opts, (err, res) => { if (err) { return cb(err); } @@ -4144,7 +4545,7 @@ Model.mapReduce = function mapReduce(o, callback) { }; /** - * Performs [aggregations](https://docs.mongodb.org/manual/applications/aggregation/) on the models collection. + * Performs [aggregations](https://www.mongodb.com/docs/manual/applications/aggregation/) on the models collection. * * If a `callback` is passed, the `aggregate` is executed and a `Promise` is returned. If a callback is not passed, the `aggregate` itself is returned. * @@ -4178,10 +4579,10 @@ Model.mapReduce = function mapReduce(o, callback) { * * - [Mongoose `Aggregate`](/docs/api/aggregate.html) * - [An Introduction to Mongoose Aggregate](https://masteringjs.io/tutorials/mongoose/aggregate) - * - [MongoDB Aggregation docs](https://docs.mongodb.org/manual/applications/aggregation/) + * - [MongoDB Aggregation docs](https://www.mongodb.com/docs/manual/applications/aggregation/) * * @see Aggregate #aggregate_Aggregate - * @see MongoDB https://docs.mongodb.org/manual/applications/aggregation/ + * @see MongoDB https://www.mongodb.com/docs/manual/applications/aggregation/ * @param {Array} [pipeline] aggregation pipeline as an array of objects * @param {Object} [options] aggregation options * @param {Function} [callback] @@ -4260,7 +4661,11 @@ Model.validate = function validate(obj, pathsToValidate, context, callback) { } return this.db.base._promiseOrCallback(callback, cb => { - const schema = this.schema; + let schema = this.schema; + const discriminatorKey = schema.options.discriminatorKey; + if (schema.discriminators != null && obj != null && obj[discriminatorKey] != null) { + schema = getSchemaDiscriminatorByValue(schema, obj[discriminatorKey]) || schema; + } let paths = Object.keys(schema.paths); if (pathsToValidate != null) { @@ -4287,7 +4692,7 @@ Model.validate = function validate(obj, pathsToValidate, context, callback) { } const val = get(obj, path); - pushNestedArrayPaths(val, path); + pushNestedArrayPaths(paths, val, path); } let remaining = paths.length; @@ -4300,7 +4705,7 @@ Model.validate = function validate(obj, pathsToValidate, context, callback) { continue; } - const pieces = path.split('.'); + const pieces = path.indexOf('.') === -1 ? [path] : path.split('.'); let cur = obj; for (let i = 0; i < pieces.length - 1; ++i) { cur = cur[pieces[i]]; @@ -4324,32 +4729,12 @@ Model.validate = function validate(obj, pathsToValidate, context, callback) { schemaType.doValidate(val, err => { if (err) { error = error || new ValidationError(); - if (err instanceof ValidationError) { - for (const _err of Object.keys(err.errors)) { - error.addError(`${path}.${err.errors[_err].path}`, _err); - } - } else { - error.addError(err.path, err); - } + error.addError(path, err); } _checkDone(); }, context, { path: path }); } - function pushNestedArrayPaths(nestedArray, path) { - if (nestedArray == null) { - return; - } - - for (let i = 0; i < nestedArray.length; ++i) { - if (Array.isArray(nestedArray[i])) { - pushNestedArrayPaths(nestedArray[i], path + '.' + i); - } else { - paths.push(path + '.' + i); - } - } - } - function _checkDone() { if (--remaining <= 0) { return cb(error); @@ -4371,10 +4756,10 @@ Model.validate = function validate(obj, pathsToValidate, context, callback) { * - match: optional query conditions to match * - model: optional name of the model to use for population * - options: optional query options like sort, limit, etc - * - justOne: optional boolean, if true Mongoose will always set `path` to an array. Inferred from schema by default. + * - justOne: optional boolean, if true Mongoose will always set `path` to a document, or `null` if no document was found. If false, Mongoose will always set `path` to an array, which will be empty if no documents are found. Inferred from schema by default. * - strictPopulate: optional boolean, set to `false` to allow populating paths that aren't in the schema. * - * #### Examples: + * #### Example: * * const Dog = mongoose.model('Dog', new Schema({ name: String, breed: String })); * const Person = mongoose.model('Person', new Schema({ @@ -4403,7 +4788,7 @@ Model.validate = function validate(obj, pathsToValidate, context, callback) { * @param {boolean} [options.retainNullValues=false] By default, Mongoose removes null and undefined values from populated arrays. Use this option to make `populate()` retain `null` and `undefined` array entries. * @param {boolean} [options.getters=false] If true, Mongoose will call any getters defined on the `localField`. By default, Mongoose gets the raw value of `localField`. For example, you would need to set this option to `true` if you wanted to [add a `lowercase` getter to your `localField`](/docs/schematypes.html#schematype-options). * @param {boolean} [options.clone=false] When you do `BlogPost.find().populate('author')`, blog posts with the same author will share 1 copy of an `author` doc. Enable this option to make Mongoose clone populated docs before assigning them. - * @param {Object|Function} [options.match=null] Add an additional filter to the populate query. Can be a filter object containing [MongoDB query syntax](https://docs.mongodb.com/manual/tutorial/query-documents/), or a function that returns a filter object. + * @param {Object|Function} [options.match=null] Add an additional filter to the populate query. Can be a filter object containing [MongoDB query syntax](https://www.mongodb.com/docs/manual/tutorial/query-documents/), or a function that returns a filter object. * @param {Boolean} [options.skipInvalidIds=false] By default, Mongoose throws a cast error if `localField` and `foreignField` schemas don't line up. If you enable this option, Mongoose will instead filter out any `localField` properties that cannot be casted to `foreignField`'s schema type. * @param {Number} [options.perDocumentLimit=null] For legacy reasons, `limit` with `populate()` may give incorrect results because it only executes a single query for every document being populated. If you set `perDocumentLimit`, Mongoose will ensure correct `limit` per document by executing a separate query for each document to `populate()`. For example, `.find().populate({ path: 'test', perDocumentLimit: 2 })` will execute 2 additional queries if `.find()` returns 2 documents. * @param {Boolean} [options.strictPopulate=true] Set to false to allow populating paths that aren't defined in the given model's schema. @@ -4421,7 +4806,6 @@ Model.populate = function(docs, paths, callback) { // normalized paths paths = utils.populate(paths); - // data that should persist across subPopulate calls const cache = {}; @@ -4432,13 +4816,14 @@ Model.populate = function(docs, paths, callback) { }, this.events); }; -/*! +/** * Populate helper * * @param {Model} model the model to use * @param {Document|Array} docs Either a single document or array of documents to populate. * @param {Object} paths - * @param {Function} [cb(err,doc)] Optional callback, executed upon completion. Receives `err` and the `doc(s)`. + * @param {never} cache Unused + * @param {Function} [callback] Optional callback, executed upon completion. Receives `err` and the `doc(s)`. * @return {Function} * @api private */ @@ -4491,12 +4876,12 @@ function populate(model, docs, options, callback) { } const modelsMap = getModelsMapForPopulate(model, docs, populateOptions); + if (modelsMap instanceof MongooseError) { return immediate(function() { callback(modelsMap); }); } - const len = modelsMap.length; let vals = []; @@ -4521,6 +4906,17 @@ function populate(model, docs, options, callback) { mod.options.options.sort || void 0; assignmentOpts.excludeId = excludeIdReg.test(select) || (select && select._id === 0); + // Lean transform may delete `_id`, which would cause assignment + // to fail. So delay running lean transform until _after_ + // `_assign()` + if (mod.options && + mod.options.options && + mod.options.options.lean && + mod.options.options.lean.transform) { + mod.options.options._leanTransform = mod.options.options.lean.transform; + mod.options.options.lean = true; + } + if (ids.length === 0 || ids.every(utils.isNullOrUndefined)) { // Ensure that we set to 0 or empty array even // if we don't actually execute a query to make sure there's a value @@ -4531,8 +4927,11 @@ function populate(model, docs, options, callback) { } hasOne = true; + if (typeof populateOptions.foreignField === 'string') { + mod.foreignField.clear(); + mod.foreignField.add(populateOptions.foreignField); + } const match = createPopulateQueryFilter(ids, mod.match, mod.foreignField, mod.model, mod.options.skipInvalidIds); - if (assignmentOpts.excludeId) { // override the exclusion from the query so we can use the _id // for document matching during assignment. we'll delete the @@ -4589,12 +4988,24 @@ function populate(model, docs, options, callback) { for (const val of vals) { mod.options._childDocs.push(val); } - _assign(model, vals, mod, assignmentOpts); + try { + _assign(model, vals, mod, assignmentOpts); + } catch (err) { + return callback(err); + } } for (const arr of params) { removeDeselectedForeignField(arr[0].foreignField, arr[0].options, vals); } + for (const arr of params) { + const mod = arr[0]; + if (mod.options && mod.options.options && mod.options.options._leanTransform) { + for (const doc of vals) { + mod.options.options._leanTransform(doc); + } + } + } callback(); } } @@ -4604,7 +5015,7 @@ function populate(model, docs, options, callback) { */ function _execPopulateQuery(mod, match, select, assignmentOpts, callback) { - const subPopulate = utils.clone(mod.options.populate); + let subPopulate = utils.clone(mod.options.populate); const queryOptions = Object.assign({ skip: mod.options.skip, limit: mod.options.limit, @@ -4621,7 +5032,6 @@ function _execPopulateQuery(mod, match, select, assignmentOpts, callback) { } else if (queryOptions.limit != null) { queryOptions.limit = queryOptions.limit * mod.ids.length; } - const query = mod.model.find(match, select, queryOptions); // If we're doing virtual populate and projection is inclusive and foreign // field is not selected, automatically select it because mongoose needs it. @@ -4649,6 +5059,8 @@ function _execPopulateQuery(mod, match, select, assignmentOpts, callback) { if (mod.model.baseModelName != null) { if (Array.isArray(subPopulate)) { subPopulate.forEach(pop => { pop.strictPopulate = false; }); + } else if (typeof subPopulate === 'string') { + subPopulate = { path: subPopulate, strictPopulate: false }; } else { subPopulate.strictPopulate = false; } @@ -4676,6 +5088,7 @@ function _execPopulateQuery(mod, match, select, assignmentOpts, callback) { } callback(null, docs); }); + } /*! @@ -4706,7 +5119,6 @@ function _assign(model, vals, mod, assignmentOpts) { if (val == null) { continue; } - for (const foreignField of mod.foreignField) { _val = utils.getValue(foreignField, val); if (Array.isArray(_val)) { @@ -4760,7 +5172,7 @@ function _assign(model, vals, mod, assignmentOpts) { } // flag each as result of population if (!lean) { - val.$__.wasPopulated = val.$__.wasPopulated || true; + val.$__.wasPopulated = val.$__.wasPopulated || { value: _val }; } } } @@ -4788,7 +5200,7 @@ function _assign(model, vals, mod, assignmentOpts) { }); } -/*! +/** * Compiler utility. * * @param {String|Function} name model name or class extending Model @@ -4796,6 +5208,7 @@ function _assign(model, vals, mod, assignmentOpts) { * @param {String} collectionName * @param {Connection} connection * @param {Mongoose} base mongoose instance + * @api private */ Model.compile = function compile(name, schema, collectionName, connection, base) { @@ -4844,8 +5257,8 @@ Model.compile = function compile(name, schema, collectionName, connection, base) model.modelName = name; if (!(model.prototype instanceof Model)) { - model.__proto__ = Model; - model.prototype.__proto__ = Model.prototype; + Object.setPrototypeOf(model, Model); + Object.setPrototypeOf(model.prototype, Model.prototype); } model.model = function model(name) { return this.db.model(name); @@ -4896,19 +5309,21 @@ Model.compile = function compile(name, schema, collectionName, connection, base) model.Query = function() { Query.apply(this, arguments); }; - model.Query.prototype = Object.create(Query.prototype); + Object.setPrototypeOf(model.Query.prototype, Query.prototype); model.Query.base = Query.base; + model.Query.prototype.constructor = Query; applyQueryMiddleware(model.Query, model); applyQueryMethods(model, schema.query); return model; }; -/*! +/** * Register custom query methods for this model * * @param {Model} model * @param {Schema} schema + * @api private */ function applyQueryMethods(model, methods) { @@ -4917,13 +5332,17 @@ function applyQueryMethods(model, methods) { } } -/*! +/** * Subclass this model with `conn`, `schema`, and `collection` settings. * * @param {Connection} conn * @param {Schema} [schema] * @param {String} [collection] * @return {Model} + * @api private + * @memberOf Model + * @static + * @method __subclass */ Model.__subclass = function subclass(conn, schema, collection) { @@ -4937,8 +5356,8 @@ Model.__subclass = function subclass(conn, schema, collection) { _this.call(this, doc, fields, skipId); }; - Model.__proto__ = _this; - Model.prototype.__proto__ = _this.prototype; + Object.setPrototypeOf(Model, _this); + Object.setPrototypeOf(Model.prototype, _this.prototype); Model.db = conn; Model.prototype.db = conn; Model.prototype[modelDbSymbol] = conn; @@ -5000,8 +5419,14 @@ Model.$handleCallbackError = function(callback) { }; }; -/*! +/** * ignore + * + * @param {Function} callback + * @api private + * @method $wrapCallback + * @memberOf Model + * @static */ Model.$wrapCallback = function(callback) { @@ -5038,10 +5463,7 @@ Model.inspect = function() { }; if (util.inspect.custom) { - /*! - * Avoid Node deprecation warning DEP0079 - */ - + // Avoid Node deprecation warning DEP0079 Model[util.inspect.custom] = Model.inspect; } diff --git a/food-ordering-app/server/node_modules/mongoose/lib/options/SchemaArrayOptions.js b/food-ordering-app/server/node_modules/mongoose/lib/options/SchemaArrayOptions.js index 9ea87f3e3..54ad4f090 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/options/SchemaArrayOptions.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/options/SchemaArrayOptions.js @@ -52,6 +52,25 @@ Object.defineProperty(SchemaArrayOptions.prototype, 'enum', opts); Object.defineProperty(SchemaArrayOptions.prototype, 'of', opts); +/** + * If set to `false`, will always deactivate casting non-array values to arrays. + * If set to `true`, will cast non-array values to arrays if `init` and `SchemaArray.options.castNonArrays` are also `true` + * + * #### Example: + * + * const Model = db.model('Test', new Schema({ x1: { castNonArrays: false, type: [String] } })); + * const doc = new Model({ x1: "some non-array value" }); + * await doc.validate(); // Errors with "CastError" + * + * @api public + * @property castNonArrays + * @memberOf SchemaArrayOptions + * @type {Boolean} + * @instance + */ + +Object.defineProperty(SchemaArrayOptions.prototype, 'castNonArrays', opts); + /*! * ignore */ diff --git a/food-ordering-app/server/node_modules/mongoose/lib/options/SchemaNumberOptions.js b/food-ordering-app/server/node_modules/mongoose/lib/options/SchemaNumberOptions.js index b052a29ba..bd91da01b 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/options/SchemaNumberOptions.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/options/SchemaNumberOptions.js @@ -50,6 +50,7 @@ Object.defineProperty(SchemaNumberOptions.prototype, 'max', opts); * equal to one of the given values. * * #### Example: + * * const schema = new Schema({ * favoritePrime: { * type: Number, @@ -71,6 +72,7 @@ Object.defineProperty(SchemaNumberOptions.prototype, 'enum', opts); * Sets default [populate options](/docs/populate.html#query-conditions). * * #### Example: + * * const schema = new Schema({ * child: { * type: Number, diff --git a/food-ordering-app/server/node_modules/mongoose/lib/options/SchemaObjectIdOptions.js b/food-ordering-app/server/node_modules/mongoose/lib/options/SchemaObjectIdOptions.js index fde52adbe..37048e92c 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/options/SchemaObjectIdOptions.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/options/SchemaObjectIdOptions.js @@ -35,6 +35,7 @@ Object.defineProperty(SchemaObjectIdOptions.prototype, 'auto', opts); * Sets default [populate options](/docs/populate.html#query-conditions). * * #### Example: + * * const schema = new Schema({ * child: { * type: 'ObjectId', diff --git a/food-ordering-app/server/node_modules/mongoose/lib/plugins/clearValidating.js b/food-ordering-app/server/node_modules/mongoose/lib/plugins/clearValidating.js deleted file mode 100644 index cdd5f3f09..000000000 --- a/food-ordering-app/server/node_modules/mongoose/lib/plugins/clearValidating.js +++ /dev/null @@ -1,28 +0,0 @@ -'use strict'; - -/*! - * ignore - */ - -module.exports = function(schema) { - // `this.$__.validating` tracks whether there are multiple validations running - // in parallel. We need to clear `this.$__.validating` before post hooks for gh-8597 - const unshift = true; - schema.s.hooks.post('validate', false, function() { - if (this.$isSubdocument) { - return; - } - - this.$__.validating = null; - }, unshift); - - schema.s.hooks.post('validate', false, function(error, res, next) { - if (this.$isSubdocument) { - next(); - return; - } - - this.$__.validating = null; - next(); - }, unshift); -}; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/plugins/index.js b/food-ordering-app/server/node_modules/mongoose/lib/plugins/index.js new file mode 100644 index 000000000..69fa6ad28 --- /dev/null +++ b/food-ordering-app/server/node_modules/mongoose/lib/plugins/index.js @@ -0,0 +1,7 @@ +'use strict'; + +exports.removeSubdocs = require('./removeSubdocs'); +exports.saveSubdocs = require('./saveSubdocs'); +exports.sharding = require('./sharding'); +exports.trackTransaction = require('./trackTransaction'); +exports.validateBeforeSave = require('./validateBeforeSave'); diff --git a/food-ordering-app/server/node_modules/mongoose/lib/plugins/removeSubdocs.js b/food-ordering-app/server/node_modules/mongoose/lib/plugins/removeSubdocs.js index dde46d8f1..e320f782a 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/plugins/removeSubdocs.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/plugins/removeSubdocs.js @@ -6,9 +6,9 @@ const each = require('../helpers/each'); * ignore */ -module.exports = function(schema) { +module.exports = function removeSubdocs(schema) { const unshift = true; - schema.s.hooks.pre('remove', false, function(next) { + schema.s.hooks.pre('remove', false, function removeSubDocsPreRemove(next) { if (this.$isSubdocument) { next(); return; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/plugins/saveSubdocs.js b/food-ordering-app/server/node_modules/mongoose/lib/plugins/saveSubdocs.js index 66ecba763..758acbbfe 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/plugins/saveSubdocs.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/plugins/saveSubdocs.js @@ -6,9 +6,9 @@ const each = require('../helpers/each'); * ignore */ -module.exports = function(schema) { +module.exports = function saveSubdocs(schema) { const unshift = true; - schema.s.hooks.pre('save', false, function(next) { + schema.s.hooks.pre('save', false, function saveSubdocsPreSave(next) { if (this.$isSubdocument) { next(); return; @@ -36,7 +36,7 @@ module.exports = function(schema) { }); }, null, unshift); - schema.s.hooks.post('save', function(doc, next) { + schema.s.hooks.post('save', function saveSubdocsPostSave(doc, next) { if (this.$isSubdocument) { next(); return; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/plugins/sharding.js b/food-ordering-app/server/node_modules/mongoose/lib/plugins/sharding.js index 020ec06c6..7d905f31c 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/plugins/sharding.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/plugins/sharding.js @@ -8,19 +8,19 @@ const utils = require('../utils'); */ module.exports = function shardingPlugin(schema) { - schema.post('init', function() { + schema.post('init', function shardingPluginPostInit() { storeShard.call(this); return this; }); - schema.pre('save', function(next) { + schema.pre('save', function shardingPluginPreSave(next) { applyWhere.call(this); next(); }); - schema.pre('remove', function(next) { + schema.pre('remove', function shardingPluginPreRemove(next) { applyWhere.call(this); next(); }); - schema.post('save', function() { + schema.post('save', function shardingPluginPostSave() { storeShard.call(this); }); }; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/plugins/trackTransaction.js b/food-ordering-app/server/node_modules/mongoose/lib/plugins/trackTransaction.js index e0887d65c..1a409a026 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/plugins/trackTransaction.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/plugins/trackTransaction.js @@ -5,7 +5,7 @@ const sessionNewDocuments = require('../helpers/symbols').sessionNewDocuments; const utils = require('../utils'); module.exports = function trackTransaction(schema) { - schema.pre('save', function() { + schema.pre('save', function trackTransactionPreSave() { const session = this.$session(); if (session == null) { return; @@ -23,14 +23,14 @@ module.exports = function trackTransaction(schema) { initialState.versionKey = this.get(this.$__schema.options.versionKey); } - initialState.modifiedPaths = new Set(Object.keys(this.$__.activePaths.states.modify)); + initialState.modifiedPaths = new Set(Object.keys(this.$__.activePaths.getStatePaths('modify'))); initialState.atomics = _getAtomics(this); session[sessionNewDocuments].set(this, initialState); } else { const state = session[sessionNewDocuments].get(this); - for (const path of Object.keys(this.$__.activePaths.states.modify)) { + for (const path of Object.keys(this.$__.activePaths.getStatePaths('modify'))) { state.modifiedPaths.add(path); } state.atomics = _getAtomics(this, state.atomics); diff --git a/food-ordering-app/server/node_modules/mongoose/lib/plugins/validateBeforeSave.js b/food-ordering-app/server/node_modules/mongoose/lib/plugins/validateBeforeSave.js index fd058a552..7ebdf4b99 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/plugins/validateBeforeSave.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/plugins/validateBeforeSave.js @@ -4,7 +4,7 @@ * ignore */ -module.exports = function(schema) { +module.exports = function validateBeforeSave(schema) { const unshift = true; schema.pre('save', false, function validateBeforeSave(next, options) { const _this = this; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/query.js b/food-ordering-app/server/node_modules/mongoose/lib/query.js index 1bfed85a2..4dc900f4f 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/query.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/query.js @@ -70,7 +70,7 @@ const queryOptionMethods = new Set([ /** * Query constructor used for building queries. You do not need * to instantiate a `Query` directly. Instead use Model functions like - * [`Model.find()`](/docs/api.html#find_find). + * [`Model.find()`](/docs/api/model.html#model_Model-find). * * #### Example: * @@ -166,7 +166,7 @@ Query.base = mquery.prototype; * * MongoDB 2.4 deprecated the use of `$within`, replacing it with `$geoWithin`. Mongoose uses `$geoWithin` by default (which is 100% backward compatible with `$within`). If you are running an older version of MongoDB, set this flag to `false` so your `within()` queries continue to work. * - * @see https://docs.mongodb.org/manual/reference/operator/geoWithin/ + * @see geoWithin https://www.mongodb.com/docs/manual/reference/operator/geoWithin/ * @default true * @property use$geoWithin * @memberOf Query @@ -262,6 +262,7 @@ Query.prototype.toConstructor = function toConstructor() { * Make a copy of this query so you can re-execute it. * * #### Example: + * * const q = Book.findOne({ title: 'Casino Royale' }); * await q.exec(); * await q.exec(); // Throws an error because you can't execute a query twice @@ -279,7 +280,7 @@ Query.prototype.clone = function clone() { const model = this.model; const collection = this.mongooseCollection; - const q = new this.constructor({}, {}, model, collection); + const q = new this.model.Query({}, {}, model, collection); // Need to handle `sort()` separately because entries-style `sort()` syntax // `sort([['prop1', 1]])` confuses mquery into losing the outer nested array. @@ -322,9 +323,9 @@ Query.prototype.clone = function clone() { * #### Note: * * Only use `$where` when you have a condition that cannot be met using other MongoDB operators like `$lt`. - * **Be sure to read about all of [its caveats](https://docs.mongodb.org/manual/reference/operator/where/) before using.** + * **Be sure to read about all of [its caveats](https://www.mongodb.com/docs/manual/reference/operator/where/) before using.** * - * @see $where https://docs.mongodb.org/manual/reference/operator/where/ + * @see $where https://www.mongodb.com/docs/manual/reference/operator/where/ * @method $where * @param {String|Function} js javascript string or function * @return {Query} this @@ -369,20 +370,36 @@ Query.prototype.clone = function clone() { * * #### Example: * - * query.slice('comments', 5); - * query.slice('comments', -5); - * query.slice('comments', [10, 5]); - * query.where('comments').slice(5); - * query.where('comments').slice([-10, 5]); + * query.slice('comments', 5); // Returns the first 5 comments + * query.slice('comments', -5); // Returns the last 5 comments + * query.slice('comments', [10, 5]); // Returns the first 5 comments after the 10-th + * query.where('comments').slice(5); // Returns the first 5 comments + * query.where('comments').slice([-10, 5]); // Returns the first 5 comments after the 10-th to last + * + * **Note:** If the absolute value of the number of elements to be sliced is greater than the number of elements in the array, all array elements will be returned. + * + * // Given `arr`: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + * query.slice('arr', 20); // Returns [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + * query.slice('arr', -20); // Returns [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + * + * **Note:** If the number of elements to skip is positive and greater than the number of elements in the array, an empty array will be returned. + * + * // Given `arr`: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + * query.slice('arr', [20, 5]); // Returns [] + * + * **Note:** If the number of elements to skip is negative and its absolute value is greater than the number of elements in the array, the starting position is the start of the array. + * + * // Given `arr`: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + * query.slice('arr', [-20, 5]); // Returns [1, 2, 3, 4, 5] * * @method slice * @memberOf Query * @instance * @param {String} [path] - * @param {Number} val number/range of elements to slice + * @param {Number|Array} val number of elements to slice or array with number of elements to skip and number of elements to slice * @return {Query} this - * @see mongodb https://www.mongodb.org/display/DOCS/Retrieving+a+Subset+of+Fields#RetrievingaSubsetofFields-RetrievingaSubrangeofArrayElements - * @see $slice https://docs.mongodb.org/manual/reference/projection/slice/#prj._S_slice + * @see mongodb https://www.mongodb.com/docs/manual/tutorial/query-documents/#projection + * @see $slice https://www.mongodb.com/docs/manual/reference/projection/slice/#prj._S_slice * @api public */ @@ -468,7 +485,7 @@ Query.prototype._validateOp = function() { * * query.or([{ color: 'red' }, { status: 'emergency' }]); * - * @see $or https://docs.mongodb.org/manual/reference/operator/or/ + * @see $or https://www.mongodb.com/docs/manual/reference/operator/or/ * @method or * @memberOf Query * @instance @@ -484,7 +501,7 @@ Query.prototype._validateOp = function() { * * query.nor([{ color: 'green' }, { status: 'ok' }]); * - * @see $nor https://docs.mongodb.org/manual/reference/operator/nor/ + * @see $nor https://www.mongodb.com/docs/manual/reference/operator/nor/ * @method nor * @memberOf Query * @instance @@ -503,7 +520,7 @@ Query.prototype._validateOp = function() { * @method and * @memberOf Query * @instance - * @see $and https://docs.mongodb.org/manual/reference/operator/and/ + * @see $and https://www.mongodb.com/docs/manual/reference/operator/and/ * @param {Array} array array of conditions * @return {Query} this * @api public @@ -526,7 +543,7 @@ Query.prototype._validateOp = function() { * @instance * @param {String} [path] * @param {Number} val - * @see $gt https://docs.mongodb.org/manual/reference/operator/gt/ + * @see $gt https://www.mongodb.com/docs/manual/reference/operator/gt/ * @api public */ @@ -540,7 +557,7 @@ Query.prototype._validateOp = function() { * @instance * @param {String} [path] * @param {Number} val - * @see $gte https://docs.mongodb.org/manual/reference/operator/gte/ + * @see $gte https://www.mongodb.com/docs/manual/reference/operator/gte/ * @api public */ @@ -554,7 +571,7 @@ Query.prototype._validateOp = function() { * @instance * @param {String} [path] * @param {Number} val - * @see $lt https://docs.mongodb.org/manual/reference/operator/lt/ + * @see $lt https://www.mongodb.com/docs/manual/reference/operator/lt/ * @api public */ @@ -564,7 +581,7 @@ Query.prototype._validateOp = function() { * When called with one argument, the most recent path passed to `where()` is used. * * @method lte - * @see $lte https://docs.mongodb.org/manual/reference/operator/lte/ + * @see $lte https://www.mongodb.com/docs/manual/reference/operator/lte/ * @memberOf Query * @instance * @param {String} [path] @@ -577,7 +594,7 @@ Query.prototype._validateOp = function() { * * When called with one argument, the most recent path passed to `where()` is used. * - * @see $ne https://docs.mongodb.org/manual/reference/operator/ne/ + * @see $ne https://www.mongodb.com/docs/manual/reference/operator/ne/ * @method ne * @memberOf Query * @instance @@ -591,7 +608,7 @@ Query.prototype._validateOp = function() { * * When called with one argument, the most recent path passed to `where()` is used. * - * @see $in https://docs.mongodb.org/manual/reference/operator/in/ + * @see $in https://www.mongodb.com/docs/manual/reference/operator/in/ * @method in * @memberOf Query * @instance @@ -605,7 +622,7 @@ Query.prototype._validateOp = function() { * * When called with one argument, the most recent path passed to `where()` is used. * - * @see $nin https://docs.mongodb.org/manual/reference/operator/nin/ + * @see $nin https://www.mongodb.com/docs/manual/reference/operator/nin/ * @method nin * @memberOf Query * @instance @@ -625,7 +642,7 @@ Query.prototype._validateOp = function() { * // Equivalent: * MyModel.find().all('pets', ['dog', 'cat', 'ferret']); * - * @see $all https://docs.mongodb.org/manual/reference/operator/all/ + * @see $all https://www.mongodb.com/docs/manual/reference/operator/all/ * @method all * @memberOf Query * @instance @@ -645,7 +662,7 @@ Query.prototype._validateOp = function() { * assert(Array.isArray(docs)); * console.log('documents with 0 tags', docs); * - * @see $size https://docs.mongodb.org/manual/reference/operator/size/ + * @see $size https://www.mongodb.com/docs/manual/reference/operator/size/ * @method size * @memberOf Query * @instance @@ -659,7 +676,7 @@ Query.prototype._validateOp = function() { * * When called with one argument, the most recent path passed to `where()` is used. * - * @see $regex https://docs.mongodb.org/manual/reference/operator/regex/ + * @see $regex https://www.mongodb.com/docs/manual/reference/operator/regex/ * @method regex * @memberOf Query * @instance @@ -673,7 +690,7 @@ Query.prototype._validateOp = function() { * * When called with one argument, the most recent path passed to `where()` is used. * - * @see $maxDistance https://docs.mongodb.org/manual/reference/operator/maxDistance/ + * @see $maxDistance https://www.mongodb.com/docs/manual/reference/operator/maxDistance/ * @method maxDistance * @memberOf Query * @instance @@ -700,7 +717,7 @@ Query.prototype._validateOp = function() { * @param {String} [path] * @param {Array} val must be of length 2, first element is `divisor`, 2nd element is `remainder`. * @return {Query} this - * @see $mod https://docs.mongodb.org/manual/reference/operator/mod/ + * @see $mod https://www.mongodb.com/docs/manual/reference/operator/mod/ * @api public */ @@ -749,7 +766,7 @@ Query.prototype.mod = function() { * @param {String} [path] * @param {Boolean} val * @return {Query} this - * @see $exists https://docs.mongodb.org/manual/reference/operator/exists/ + * @see $exists https://www.mongodb.com/docs/manual/reference/operator/exists/ * @api public */ @@ -778,7 +795,7 @@ Query.prototype.mod = function() { * @param {String|Object|Function} path * @param {Object|Function} filter * @return {Query} this - * @see $elemMatch https://docs.mongodb.org/manual/reference/operator/elemMatch/ + * @see $elemMatch https://www.mongodb.com/docs/manual/reference/operator/elemMatch/ * @api public */ @@ -810,11 +827,11 @@ Query.prototype.mod = function() { * In Mongoose 3.7, `within` changed from a getter to a function. If you need the old syntax, use [this](https://github.com/ebensing/mongoose-within). * * @method within - * @see $polygon https://docs.mongodb.org/manual/reference/operator/polygon/ - * @see $box https://docs.mongodb.org/manual/reference/operator/box/ - * @see $geometry https://docs.mongodb.org/manual/reference/operator/geometry/ - * @see $center https://docs.mongodb.org/manual/reference/operator/center/ - * @see $centerSphere https://docs.mongodb.org/manual/reference/operator/centerSphere/ + * @see $polygon https://www.mongodb.com/docs/manual/reference/operator/polygon/ + * @see $box https://www.mongodb.com/docs/manual/reference/operator/box/ + * @see $geometry https://www.mongodb.com/docs/manual/reference/operator/geometry/ + * @see $center https://www.mongodb.com/docs/manual/reference/operator/center/ + * @see $centerSphere https://www.mongodb.com/docs/manual/reference/operator/centerSphere/ * @memberOf Query * @instance * @return {Query} this @@ -869,7 +886,7 @@ Query.prototype.limit = function limit(v) { * @memberOf Query * @instance * @param {Number} val - * @see cursor.skip https://docs.mongodb.org/manual/reference/method/cursor.skip/ + * @see cursor.skip https://www.mongodb.com/docs/manual/reference/method/cursor.skip/ * @api public */ @@ -903,7 +920,7 @@ Query.prototype.skip = function skip(v) { * @memberOf Query * @instance * @param {Number} val - * @see maxScan https://docs.mongodb.org/manual/reference/operator/maxScan/ + * @see maxScan https://www.mongodb.com/docs/v4.0/reference/method/cursor.maxScan/ * @api public */ @@ -922,7 +939,7 @@ Query.prototype.skip = function skip(v) { * @memberOf Query * @instance * @param {Number} val - * @see batchSize https://docs.mongodb.org/manual/reference/method/cursor.batchSize/ + * @see batchSize https://www.mongodb.com/docs/manual/reference/method/cursor.batchSize/ * @api public */ @@ -941,7 +958,7 @@ Query.prototype.skip = function skip(v) { * @memberOf Query * @instance * @param {String} val - * @see comment https://docs.mongodb.org/manual/reference/operator/comment/ + * @see comment https://www.mongodb.com/docs/manual/reference/operator/comment/ * @api public */ @@ -961,7 +978,6 @@ Query.prototype.skip = function skip(v) { * @method snapshot * @memberOf Query * @instance - * @see snapshot https://docs.mongodb.org/manual/reference/operator/snapshot/ * @return {Query} this * @api public */ @@ -982,7 +998,7 @@ Query.prototype.skip = function skip(v) { * @instance * @param {Object} val a hint object * @return {Query} this - * @see $hint https://docs.mongodb.org/manual/reference/operator/hint/ + * @see $hint https://www.mongodb.com/docs/manual/reference/operator/hint/ * @api public */ @@ -1030,11 +1046,11 @@ Query.prototype.projection = function(arg) { /** * Specifies which document fields to include or exclude (also known as the query "projection") * - * When using string syntax, prefixing a path with `-` will flag that path as excluded. When a path does not have the `-` prefix, it is included. Lastly, if a path is prefixed with `+`, it forces inclusion of the path, which is useful for paths excluded at the [schema level](/docs/api.html#schematype_SchemaType-select). + * When using string syntax, prefixing a path with `-` will flag that path as excluded. When a path does not have the `-` prefix, it is included. Lastly, if a path is prefixed with `+`, it forces inclusion of the path, which is useful for paths excluded at the [schema level](/docs/api/schematype.html#schematype_SchemaType-select). * * A projection _must_ be either inclusive or exclusive. In other words, you must * either list the fields to include (which excludes all others), or list the fields - * to exclude (which implies all other fields are included). The [`_id` field is the only exception because MongoDB includes it by default](https://docs.mongodb.com/manual/tutorial/project-fields-from-query-results/#suppress-id-field). + * to exclude (which implies all other fields are included). The [`_id` field is the only exception because MongoDB includes it by default](https://www.mongodb.com/docs/manual/tutorial/project-fields-from-query-results/#suppress-id-field). * * #### Example: * @@ -1071,7 +1087,7 @@ Query.prototype.projection = function(arg) { * @instance * @param {Object|String|String[]} arg * @return {Query} this - * @see SchemaType + * @see SchemaType /docs/api/schematype.html * @api public */ @@ -1190,15 +1206,14 @@ Query.prototype.select = function select() { * // read from secondaries with matching tags * new Query().read('s', [{ dc:'sf', s: 1 },{ dc:'ma', s: 2 }]) * - * Read more about how to use read preferences [here](https://docs.mongodb.org/manual/applications/replication/#read-preference) and [here](https://mongodb.github.com/node-mongodb-native/driver-articles/anintroductionto1_1and2_2.html#read-preferences). + * Read more about how to use read preferences [here](https://www.mongodb.com/docs/manual/applications/replication/#read-preference). * * @method read * @memberOf Query * @instance * @param {String} pref one of the listed preference options or aliases * @param {Array} [tags] optional tags for this query - * @see mongodb https://docs.mongodb.org/manual/applications/replication/#read-preference - * @see driver https://mongodb.github.com/node-mongodb-native/driver-articles/anintroductionto1_1and2_2.html#read-preferences + * @see mongodb https://www.mongodb.com/docs/manual/applications/replication/#read-preference * @return {Query} this * @api public */ @@ -1210,8 +1225,13 @@ Query.prototype.read = function read(pref, tags) { return this; }; -/*! - * ignore +/** + * Overwrite default `.toString` to make logging more useful + * + * @memberOf Query + * @instance + * @method toString + * @api private */ Query.prototype.toString = function toString() { @@ -1243,7 +1263,7 @@ Query.prototype.toString = function toString() { }; /** - * Sets the [MongoDB session](https://docs.mongodb.com/manual/reference/server-sessions/) + * Sets the [MongoDB session](https://www.mongodb.com/docs/manual/reference/server-sessions/) * associated with this query. Sessions are how you mark a query as part of a * [transaction](/docs/transactions.html). * @@ -1258,8 +1278,8 @@ Query.prototype.toString = function toString() { * @memberOf Query * @instance * @param {ClientSession} [session] from `await conn.startSession()` - * @see Connection.prototype.startSession() /docs/api.html#connection_Connection-startSession - * @see mongoose.startSession() /docs/api.html#mongoose_Mongoose-startSession + * @see Connection.prototype.startSession() /docs/api/connection.html#connection_Connection-startSession + * @see mongoose.startSession() /docs/api/mongoose.html#mongoose_Mongoose-startSession * @return {Query} this * @api public */ @@ -1277,7 +1297,7 @@ Query.prototype.session = function session(v) { * * - `w`: Sets the specified number of `mongod` servers, or tag set of `mongod` servers, that must acknowledge this write before this write is considered successful. * - `j`: Boolean, set to `true` to request acknowledgement that this operation has been persisted to MongoDB's on-disk journal. - * - `wtimeout`: If [`w > 1`](/docs/api.html#query_Query-w), the maximum amount of time to wait for this write to propagate through the replica set before this operation fails. The default is `0`, which means no timeout. + * - `wtimeout`: If [`w > 1`](#query_Query-w), the maximum amount of time to wait for this write to propagate through the replica set before this operation fails. The default is `0`, which means no timeout. * * This option is only valid for operations that write to the database: * @@ -1305,7 +1325,7 @@ Query.prototype.session = function session(v) { * @memberOf Query * @instance * @param {Object} writeConcern the write concern value to set - * @see mongodb https://mongodb.github.io/node-mongodb-native/3.1/api/global.html#WriteConcern + * @see WriteConcernSettings https://mongodb.github.io/node-mongodb-native/4.9/interfaces/WriteConcernSettings.html * @return {Query} this * @api public */ @@ -1347,8 +1367,8 @@ Query.prototype.writeConcern = function writeConcern(val) { * @method w * @memberOf Query * @instance - * @param {String|number} val 0 for fire-and-forget, 1 for acknowledged by one server, 'majority' for majority of the replica set, or [any of the more advanced options](https://docs.mongodb.com/manual/reference/write-concern/#w-option). - * @see mongodb https://docs.mongodb.com/manual/reference/write-concern/#w-option + * @param {String|number} val 0 for fire-and-forget, 1 for acknowledged by one server, 'majority' for majority of the replica set, or [any of the more advanced options](https://www.mongodb.com/docs/manual/reference/write-concern/#w-option). + * @see mongodb https://www.mongodb.com/docs/manual/reference/write-concern/#w-option * @return {Query} this * @api public */ @@ -1390,7 +1410,7 @@ Query.prototype.w = function w(val) { * @memberOf Query * @instance * @param {boolean} val - * @see mongodb https://docs.mongodb.com/manual/reference/write-concern/#j-option + * @see mongodb https://www.mongodb.com/docs/manual/reference/write-concern/#j-option * @return {Query} this * @api public */ @@ -1408,7 +1428,7 @@ Query.prototype.j = function j(val) { }; /** - * If [`w > 1`](/docs/api.html#query_Query-w), the maximum amount of time to + * If [`w > 1`](#query_Query-w), the maximum amount of time to * wait for this write to propagate through the replica set before this * operation fails. The default is `0`, which means no timeout. * @@ -1440,7 +1460,7 @@ Query.prototype.j = function j(val) { * @memberOf Query * @instance * @param {number} ms number of milliseconds to wait - * @see mongodb https://docs.mongodb.com/manual/reference/write-concern/#wtimeout + * @see mongodb https://www.mongodb.com/docs/manual/reference/write-concern/#wtimeout * @return {Query} this * @api public */ @@ -1498,12 +1518,12 @@ Query.prototype.wtimeout = function wtimeout(ms) { * s snapshot * ``` * - * Read more about how to use read concern [here](https://docs.mongodb.com/manual/reference/read-concern/). + * Read more about how to use read concern [here](https://www.mongodb.com/docs/manual/reference/read-concern/). * * @memberOf Query * @method readConcern * @param {String} level one of the listed read concern level or their aliases - * @see mongodb https://docs.mongodb.com/manual/reference/read-concern/ + * @see mongodb https://www.mongodb.com/docs/manual/reference/read-concern/ * @return {Query} this * @api public */ @@ -1533,35 +1553,35 @@ Query.prototype.getOptions = function() { * * The following options are only for `find()`: * - * - [tailable](https://www.mongodb.org/display/DOCS/Tailable+Cursors) - * - [sort](https://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%7B%7Bsort(\)%7D%7D) - * - [limit](https://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%7B%7Blimit%28%29%7D%7D) - * - [skip](https://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%7B%7Bskip%28%29%7D%7D) - * - [allowDiskUse](https://docs.mongodb.com/manual/reference/method/cursor.allowDiskUse/) - * - [batchSize](https://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%7B%7BbatchSize%28%29%7D%7D) - * - [readPreference](https://docs.mongodb.org/manual/applications/replication/#read-preference) - * - [hint](https://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24hint) - * - [comment](https://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24comment) - * - [snapshot](https://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%7B%7Bsnapshot%28%29%7D%7D) - * - [maxscan](https://docs.mongodb.org/v3.2/reference/operator/meta/maxScan/#metaOp._S_maxScan) + * - [tailable](https://www.mongodb.com/docs/manual/core/tailable-cursors/) + * - [sort](https://www.mongodb.com/docs/manual/reference/method/cursor.sort/) + * - [limit](https://www.mongodb.com/docs/manual/reference/method/cursor.limit/) + * - [skip](https://www.mongodb.com/docs/manual/reference/method/cursor.skip/) + * - [allowDiskUse](https://www.mongodb.com/docs/manual/reference/method/cursor.allowDiskUse/) + * - [batchSize](https://www.mongodb.com/docs/manual/reference/method/cursor.batchSize/) + * - [readPreference](https://www.mongodb.com/docs/manual/applications/replication/#read-preference) + * - [hint](https://www.mongodb.com/docs/manual/reference/method/cursor.hint/) + * - [comment](https://www.mongodb.com/docs/manual/reference/method/cursor.comment/) + * - snapshot + * - [maxscan](https://www.mongodb.com/docs/v4.0/reference/method/cursor.maxScan/) * * The following options are only for write operations: `update()`, `updateOne()`, `updateMany()`, `replaceOne()`, `findOneAndUpdate()`, and `findByIdAndUpdate()`: * - * - [upsert](https://docs.mongodb.com/manual/reference/method/db.collection.update/) - * - [writeConcern](https://docs.mongodb.com/manual/reference/method/db.collection.update/) + * - [upsert](https://www.mongodb.com/docs/manual/reference/method/db.collection.update/) + * - [writeConcern](https://www.mongodb.com/docs/manual/reference/method/db.collection.update/) * - [timestamps](https://mongoosejs.com/docs/guide.html#timestamps): If `timestamps` is set in the schema, set this option to `false` to skip timestamps for that particular update. Has no effect if `timestamps` is not enabled in the schema options. * - overwriteDiscriminatorKey: allow setting the discriminator key in the update. Will use the correct discriminator schema if the update changes the discriminator key. * * The following options are only for `find()`, `findOne()`, `findById()`, `findOneAndUpdate()`, and `findByIdAndUpdate()`: * - * - [lean](./api.html#query_Query-lean) + * - [lean](#query_Query-lean) * - [populate](/docs/populate.html) - * - [projection](/docs/api/query.html#query_Query-projection) + * - [projection](#query_Query-projection) * - sanitizeProjection * * The following options are only for all operations **except** `update()`, `updateOne()`, `updateMany()`, `remove()`, `deleteOne()`, and `deleteMany()`: * - * - [maxTimeMS](https://docs.mongodb.com/manual/reference/operator/meta/maxTimeMS/) + * - [maxTimeMS](https://www.mongodb.com/docs/manual/reference/operator/meta/maxTimeMS/) * * The following options are for `findOneAndUpdate()` and `findOneAndRemove()` * @@ -1570,9 +1590,9 @@ Query.prototype.getOptions = function() { * The following options are for all operations: * * - [strict](/docs/guide.html#strict) - * - [collation](https://docs.mongodb.com/manual/reference/collation/) - * - [session](https://docs.mongodb.com/manual/reference/server-sessions/) - * - [explain](https://docs.mongodb.com/manual/reference/method/cursor.explain/) + * - [collation](https://www.mongodb.com/docs/manual/reference/collation/) + * - [session](https://www.mongodb.com/docs/manual/reference/server-sessions/) + * - [explain](https://www.mongodb.com/docs/manual/reference/method/cursor.explain/) * * @param {Object} options * @return {Query} this @@ -1598,6 +1618,8 @@ Query.prototype.setOptions = function(options, overwrite) { throw new Error('Options must be an object, got "' + options + '"'); } + options = Object.assign({}, options); + if (Array.isArray(options.populate)) { const populate = options.populate; delete options.populate; @@ -1632,6 +1654,9 @@ Query.prototype.setOptions = function(options, overwrite) { this._mongooseOptions.defaults = options.defaults; // deleting options.defaults will cause 7287 to fail } + if (options.lean == null && this.schema && 'lean' in this.schema.options) { + this._mongooseOptions.lean = this.schema.options.lean; + } if (typeof options.limit === 'string') { try { @@ -1664,7 +1689,7 @@ Query.prototype.setOptions = function(options, overwrite) { }; /** - * Sets the [`explain` option](https://docs.mongodb.com/manual/reference/method/cursor.explain/), + * Sets the [`explain` option](https://www.mongodb.com/docs/manual/reference/method/cursor.explain/), * which makes this query return detailed execution stats instead of the actual * query result. This method is useful for determining what index your queries * use. @@ -1694,7 +1719,7 @@ Query.prototype.explain = function(verbose) { }; /** - * Sets the [`allowDiskUse` option](https://docs.mongodb.com/manual/reference/method/cursor.allowDiskUse/), + * Sets the [`allowDiskUse` option](https://www.mongodb.com/docs/manual/reference/method/cursor.allowDiskUse/), * which allows the MongoDB server to use more than 100 MB for this query's `sort()`. This option can * let you work around `QueryExceededMemoryLimitNoDiskUseAllowed` errors from the MongoDB server. * @@ -1726,7 +1751,7 @@ Query.prototype.allowDiskUse = function(v) { }; /** - * Sets the [maxTimeMS](https://docs.mongodb.com/manual/reference/method/cursor.maxTimeMS/) + * Sets the [maxTimeMS](https://www.mongodb.com/docs/manual/reference/method/cursor.maxTimeMS/) * option. This will tell the MongoDB server to abort if the query or write op * has been running for more than `ms` milliseconds. * @@ -1851,6 +1876,12 @@ Query.prototype.setUpdate = function(val) { */ Query.prototype._fieldsForExec = function() { + if (this._fields == null) { + return null; + } + if (Object.keys(this._fields).length === 0) { + return null; + } return utils.clone(this._fields); }; @@ -1971,6 +2002,16 @@ Query.prototype._optionsForExec = function(model) { delete options.wtimeout; } } + + this._applyPaths(); + if (this._fields != null) { + this._fields = this._castFields(this._fields); + const projection = this._fieldsForExec(); + if (projection != null) { + options.projection = projection; + } + } + return options; }; @@ -1978,7 +2019,7 @@ Query.prototype._optionsForExec = function(model) { * Sets the lean option. * * Documents returned from queries with the `lean` option enabled are plain - * javascript objects, not [Mongoose Documents](/api/document.html). They have no + * javascript objects, not [Mongoose Documents](/docs/api/document.html). They have no * `save` method, getters/setters, virtuals, or other Mongoose features. * * #### Example: @@ -2038,6 +2079,9 @@ Query.prototype.set = function(path, val) { } this._update = this._update || {}; + if (path in this._update) { + delete this._update[path]; + } this._update.$set = this._update.$set || {}; this._update.$set[path] = val; return this; @@ -2097,6 +2141,7 @@ Query.prototype.get = function get(path) { * custom errors. * * #### Example: + * * const TestSchema = new Schema({ num: Number }); * const TestModel = db.model('Test', TestSchema); * TestModel.find({ num: 'not a number' }).error(new Error('woops')).exec(function(error) { @@ -2117,8 +2162,12 @@ Query.prototype.error = function error(err) { return this; }; -/*! +/** * ignore + * @method _unsetCastError + * @instance + * @memberOf Query + * @api private */ Query.prototype._unsetCastError = function _unsetCastError() { @@ -2132,11 +2181,11 @@ Query.prototype._unsetCastError = function _unsetCastError() { * Getter/setter around the current mongoose-specific options for this query * Below are the current Mongoose-specific options. * - * - `populate`: an array representing what paths will be populated. Should have one entry for each call to [`Query.prototype.populate()`](/docs/api.html#query_Query-populate) - * - `lean`: if truthy, Mongoose will not [hydrate](/docs/api.html#model_Model.hydrate) any documents that are returned from this query. See [`Query.prototype.lean()`](/docs/api.html#query_Query-lean) for more information. + * - `populate`: an array representing what paths will be populated. Should have one entry for each call to [`Query.prototype.populate()`](#query_Query-populate) + * - `lean`: if truthy, Mongoose will not [hydrate](/docs/api/model.html#model_Model-hydrate) any documents that are returned from this query. See [`Query.prototype.lean()`](#query_Query-lean) for more information. * - `strict`: controls how Mongoose handles keys that aren't in the schema for updates. This option is `true` by default, which means Mongoose will silently strip any paths in the update that aren't in the schema. See the [`strict` mode docs](/docs/guide.html#strict) for more information. * - `strictQuery`: controls how Mongoose handles keys that aren't in the schema for the query `filter`. This option is `false` by default for backwards compatibility, which means Mongoose will allow `Model.find({ foo: 'bar' })` even if `foo` is not in the schema. See the [`strictQuery` docs](/docs/guide.html#strictQuery) for more information. - * - `nearSphere`: use `$nearSphere` instead of `near()`. See the [`Query.prototype.nearSphere()` docs](/docs/api.html#query_Query-nearSphere) + * - `nearSphere`: use `$nearSphere` instead of `near()`. See the [`Query.prototype.nearSphere()` docs](#query_Query-nearSphere) * * Mongoose maintains a separate object for internal options because * Mongoose sends `Query.prototype.options` to the MongoDB server, and the @@ -2154,8 +2203,12 @@ Query.prototype.mongooseOptions = function(v) { return this._mongooseOptions; }; -/*! +/** * ignore + * @method _castConditions + * @memberOf Query + * @api private + * @instance */ Query.prototype._castConditions = function() { @@ -2209,10 +2262,6 @@ Query.prototype._find = wrapThunk(function(callback) { callback = _wrapThunkCallback(this, callback); - this._applyPaths(); - this._fields = this._castFields(this._fields); - - const fields = this._fieldsForExec(); const mongooseOptions = this._mongooseOptions; const _this = this; const userProvidedFields = _this._userProvidedFields || {}; @@ -2227,6 +2276,10 @@ Query.prototype._find = wrapThunk(function(callback) { lean: mongooseOptions.lean || null }); + const options = this._optionsForExec(); + const filter = this._conditions; + const fields = options.projection; + const cb = (err, docs) => { if (err) { return callback(err); @@ -2268,9 +2321,6 @@ Query.prototype._find = wrapThunk(function(callback) { }); }; - const options = this._optionsForExec(); - options.projection = this._fieldsForExec(); - const filter = this._conditions; this._collection.collection.find(filter, options, (err, cursor) => { if (err != null) { @@ -2292,7 +2342,7 @@ Query.prototype._find = wrapThunk(function(callback) { * Find all documents that match `selector`. The result will be an array of documents. * * If there are too many documents in the result to fit in memory, use - * [`Query.prototype.cursor()`](api.html#query_Query-cursor) + * [`Query.prototype.cursor()`](#query_Query-cursor) * * #### Example: * @@ -2380,6 +2430,10 @@ Query.prototype.merge = function(source) { utils.merge(this._mongooseOptions, source._mongooseOptions); + return this; + } else if (this.model != null && source instanceof this.model.base.Types.ObjectId) { + utils.merge(this._conditions, { _id: source }, opts); + return this; } @@ -2394,7 +2448,7 @@ Query.prototype.merge = function(source) { * * @param {Object} value * @return {Query} this - * @see MongoDB docs https://docs.mongodb.com/manual/reference/method/cursor.collation/#cursor.collation + * @see MongoDB docs https://www.mongodb.com/docs/manual/reference/method/cursor.collation/#cursor.collation * @api public */ @@ -2467,7 +2521,7 @@ Query.prototype._completeOne = function(doc, res, callback) { * Thunk around findOne() * * @param {Function} [callback] - * @see findOne https://docs.mongodb.org/manual/reference/method/db.collection.findOne/ + * @see findOne https://www.mongodb.com/docs/manual/reference/method/db.collection.findOne/ * @api private */ @@ -2479,13 +2533,13 @@ Query.prototype._findOne = wrapThunk(function(callback) { return null; } - this._applyPaths(); - this._fields = this._castFields(this._fields); applyGlobalMaxTimeMS(this.options, this.model); applyGlobalDiskUse(this.options, this.model); - // don't pass in the conditions because we already merged them in - Query.base.findOne.call(this, {}, (err, doc) => { + const conds = this._conditions; + const options = this._optionsForExec(); + + this._collection.findOne(conds, options, (err, doc) => { if (err) { callback(err); return null; @@ -2521,10 +2575,10 @@ Query.prototype._findOne = wrapThunk(function(callback) { * * @param {Object} [filter] mongodb selector * @param {Object} [projection] optional fields to return - * @param {Object} [options] see [`setOptions()`](https://mongoosejs.com/docs/api.html#query_Query-setOptions) + * @param {Object} [options] see [`setOptions()`](#query_Query-setOptions) * @param {Function} [callback] optional params are (error, document) * @return {Query} this - * @see findOne https://docs.mongodb.org/manual/reference/method/db.collection.findOne/ + * @see findOne https://www.mongodb.com/docs/manual/reference/method/db.collection.findOne/ * @see Query.select #query_Query-select * @api public */ @@ -2579,7 +2633,7 @@ Query.prototype.findOne = function(conditions, projection, options, callback) { * Thunk around count() * * @param {Function} [callback] - * @see count https://docs.mongodb.org/manual/reference/method/db.collection.count/ + * @see count https://www.mongodb.com/docs/manual/reference/method/db.collection.count/ * @api private */ @@ -2607,7 +2661,7 @@ Query.prototype._count = wrapThunk(function(callback) { * Thunk around countDocuments() * * @param {Function} [callback] - * @see countDocuments https://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#countDocuments + * @see countDocuments https://mongodb.github.io/node-mongodb-native/4.9/classes/Collection.html#countDocuments * @api private */ @@ -2635,7 +2689,7 @@ Query.prototype._countDocuments = wrapThunk(function(callback) { * Thunk around estimatedDocumentCount() * * @param {Function} [callback] - * @see estimatedDocumentCount https://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#estimatedDocumentCount + * @see estimatedDocumentCount https://mongodb.github.io/node-mongodb-native/4.9/classes/Collection.html#estimatedDocumentCount * @api private */ @@ -2653,8 +2707,8 @@ Query.prototype._estimatedDocumentCount = wrapThunk(function(callback) { * Specifies this query as a `count` query. * * This method is deprecated. If you want to count the number of documents in - * a collection, e.g. `count({})`, use the [`estimatedDocumentCount()` function](/docs/api.html#query_Query-estimatedDocumentCount) - * instead. Otherwise, use the [`countDocuments()`](/docs/api.html#query_Query-countDocuments) function instead. + * a collection, e.g. `count({})`, use the [`estimatedDocumentCount()` function](#query_Query-estimatedDocumentCount) + * instead. Otherwise, use the [`countDocuments()`](#query_Query-countDocuments) function instead. * * Passing a `callback` executes the query. * @@ -2679,7 +2733,7 @@ Query.prototype._estimatedDocumentCount = wrapThunk(function(callback) { * @param {Object} [filter] count documents that match this object * @param {Function} [callback] optional params are (error, count) * @return {Query} this - * @see count https://docs.mongodb.org/manual/reference/method/db.collection.count/ + * @see count https://www.mongodb.com/docs/manual/reference/method/db.collection.count/ * @api public */ @@ -2723,10 +2777,10 @@ Query.prototype.count = function(filter, callback) { * * await Model.find().estimatedDocumentCount(); * - * @param {Object} [options] passed transparently to the [MongoDB driver](https://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#estimatedDocumentCount) + * @param {Object} [options] passed transparently to the [MongoDB driver](https://mongodb.github.io/node-mongodb-native/4.9/interfaces/EstimatedDocumentCountOptions.html) * @param {Function} [callback] optional params are (error, count) * @return {Query} this - * @see estimatedDocumentCount https://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#estimatedDocumentCount + * @see estimatedDocumentCount https://mongodb.github.io/node-mongodb-native/4.9/classes/Collection.html#estimatedDocumentCount * @api public */ @@ -2756,7 +2810,7 @@ Query.prototype.estimatedDocumentCount = function(options, callback) { * except it always does a full collection scan when passed an empty filter `{}`. * * There are also minor differences in how `countDocuments()` handles - * [`$where` and a couple geospatial operators](https://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#countDocuments). + * [`$where` and a couple geospatial operators](https://mongodb.github.io/node-mongodb-native/4.9/classes/Collection.html#countDocuments). * versus `count()`. * * Passing a `callback` executes the query. @@ -2779,19 +2833,19 @@ Query.prototype.estimatedDocumentCount = function(options, callback) { * }); * * The `countDocuments()` function is similar to `count()`, but there are a - * [few operators that `countDocuments()` does not support](https://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#countDocuments). + * [few operators that `countDocuments()` does not support](https://mongodb.github.io/node-mongodb-native/4.9/classes/Collection.html#countDocuments). * Below are the operators that `count()` supports but `countDocuments()` does not, * and the suggested replacement: * - * - `$where`: [`$expr`](https://docs.mongodb.com/manual/reference/operator/query/expr/) - * - `$near`: [`$geoWithin`](https://docs.mongodb.com/manual/reference/operator/query/geoWithin/) with [`$center`](https://docs.mongodb.com/manual/reference/operator/query/center/#op._S_center) - * - `$nearSphere`: [`$geoWithin`](https://docs.mongodb.com/manual/reference/operator/query/geoWithin/) with [`$centerSphere`](https://docs.mongodb.com/manual/reference/operator/query/centerSphere/#op._S_centerSphere) + * - `$where`: [`$expr`](https://www.mongodb.com/docs/manual/reference/operator/query/expr/) + * - `$near`: [`$geoWithin`](https://www.mongodb.com/docs/manual/reference/operator/query/geoWithin/) with [`$center`](https://www.mongodb.com/docs/manual/reference/operator/query/center/#op._S_center) + * - `$nearSphere`: [`$geoWithin`](https://www.mongodb.com/docs/manual/reference/operator/query/geoWithin/) with [`$centerSphere`](https://www.mongodb.com/docs/manual/reference/operator/query/centerSphere/#op._S_centerSphere) * * @param {Object} [filter] mongodb selector * @param {Object} [options] * @param {Function} [callback] optional params are (error, count) * @return {Query} this - * @see countDocuments https://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#countDocuments + * @see countDocuments https://mongodb.github.io/node-mongodb-native/4.9/classes/Collection.html#countDocuments * @api public */ @@ -2831,7 +2885,7 @@ Query.prototype.countDocuments = function(conditions, options, callback) { * Thunk around distinct() * * @param {Function} [callback] - * @see distinct https://docs.mongodb.org/manual/reference/method/db.collection.distinct/ + * @see distinct https://www.mongodb.com/docs/manual/reference/method/db.collection.distinct/ * @api private */ @@ -2873,7 +2927,7 @@ Query.prototype.__distinct = wrapThunk(function __distinct(callback) { * @param {Object|Query} [filter] * @param {Function} [callback] optional params are (error, arr) * @return {Query} this - * @see distinct https://docs.mongodb.org/manual/reference/method/db.collection.distinct/ + * @see distinct https://www.mongodb.com/docs/manual/reference/method/db.collection.distinct/ * @api public */ @@ -2929,13 +2983,16 @@ Query.prototype.distinct = function(field, conditions, callback) { * // equivalent * query.sort('field -test'); * + * // also possible is to use a array with array key-value pairs + * query.sort([['field', 'asc']]); + * * #### Note: * * Cannot be used with `distinct()` * - * @param {Object|String} arg + * @param {Object|String|Array>} arg * @return {Query} this - * @see cursor.sort https://docs.mongodb.org/manual/reference/method/cursor.sort/ + * @see cursor.sort https://www.mongodb.com/docs/manual/reference/method/cursor.sort/ * @api public */ @@ -2958,7 +3015,7 @@ Query.prototype.sort = function(arg) { * * Character.remove({ name: /Stark/ }, callback); * - * This function calls the MongoDB driver's [`Collection#remove()` function](https://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#remove). + * This function calls the MongoDB driver's [`Collection#remove()` function](https://mongodb.github.io/node-mongodb-native/4.9/classes/Collection.html#remove). * The returned [promise](https://mongoosejs.com/docs/queries.html) resolves to an * object that contains 3 properties: * @@ -2974,7 +3031,7 @@ Query.prototype.sort = function(arg) { * * #### Note: * - * Calling `remove()` creates a [Mongoose query](./queries.html), and a query + * Calling `remove()` creates a [Mongoose query](/docs/queries.html), and a query * does not execute until you either pass a callback, call [`Query#then()`](#query_Query-then), * or call [`Query#exec()`](#query_Query-exec). * @@ -2992,8 +3049,8 @@ Query.prototype.sort = function(arg) { * @param {Function} [callback] optional params are (error, mongooseDeleteResult) * @return {Query} this * @deprecated - * @see deleteWriteOpResult https://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#~deleteWriteOpResult - * @see MongoDB driver remove https://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#remove + * @see DeleteResult https://mongodb.github.io/node-mongodb-native/4.9/interfaces/DeleteResult.html + * @see remove https://mongodb.github.io/node-mongodb-native/4.9/classes/Collection.html#remove * @api public */ @@ -3022,8 +3079,13 @@ Query.prototype.remove = function(filter, callback) { return this; }; -/*! +/** * ignore + * @param {Function} callback + * @method _remove + * @memberOf Query + * @instance + * @api private */ Query.prototype._remove = wrapThunk(function(callback) { @@ -3053,7 +3115,7 @@ Query.prototype._remove = wrapThunk(function(callback) { * // Using callbacks: * Character.deleteOne({ name: 'Eddard Stark' }, callback); * - * This function calls the MongoDB driver's [`Collection#deleteOne()` function](https://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#deleteOne). + * This function calls the MongoDB driver's [`Collection#deleteOne()` function](https://mongodb.github.io/node-mongodb-native/4.9/classes/Collection.html#deleteOne). * The returned [promise](https://mongoosejs.com/docs/queries.html) resolves to an * object that contains 3 properties: * @@ -3068,11 +3130,11 @@ Query.prototype._remove = wrapThunk(function(callback) { * res.deletedCount; * * @param {Object|Query} [filter] mongodb selector - * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api.html#query_Query-setOptions) + * @param {Object} [options] optional see [`Query.prototype.setOptions()`](#query_Query-setOptions) * @param {Function} [callback] optional params are (error, mongooseDeleteResult) * @return {Query} this - * @see deleteWriteOpResult https://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#~deleteWriteOpResult - * @see MongoDB Driver deleteOne https://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#deleteOne + * @see DeleteResult https://mongodb.github.io/node-mongodb-native/4.9/interfaces/DeleteResult.html + * @see deleteOne https://mongodb.github.io/node-mongodb-native/4.9/classes/Collection.html#deleteOne * @api public */ @@ -3108,8 +3170,13 @@ Query.prototype.deleteOne = function(filter, options, callback) { return this; }; -/*! +/** * Internal thunk for `deleteOne()` + * @param {Function} callback + * @method _deleteOne + * @instance + * @memberOf Query + * @api private */ Query.prototype._deleteOne = wrapThunk(function(callback) { @@ -3139,7 +3206,7 @@ Query.prototype._deleteOne = wrapThunk(function(callback) { * // Using callbacks: * Character.deleteMany({ name: /Stark/, age: { $gte: 18 } }, callback); * - * This function calls the MongoDB driver's [`Collection#deleteMany()` function](https://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#deleteMany). + * This function calls the MongoDB driver's [`Collection#deleteMany()` function](https://mongodb.github.io/node-mongodb-native/4.9/classes/Collection.html#deleteMany). * The returned [promise](https://mongoosejs.com/docs/queries.html) resolves to an * object that contains 3 properties: * @@ -3154,11 +3221,11 @@ Query.prototype._deleteOne = wrapThunk(function(callback) { * res.deletedCount; * * @param {Object|Query} [filter] mongodb selector - * @param {Object} [options] optional see [`Query.prototype.setOptions()`](https://mongoosejs.com/docs/api.html#query_Query-setOptions) + * @param {Object} [options] optional see [`Query.prototype.setOptions()`](#query_Query-setOptions) * @param {Function} [callback] optional params are (error, mongooseDeleteResult) * @return {Query} this - * @see deleteWriteOpResult https://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#~deleteWriteOpResult - * @see MongoDB Driver deleteMany https://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#deleteMany + * @see DeleteResult https://mongodb.github.io/node-mongodb-native/4.9/interfaces/DeleteResult.html + * @see deleteMany https://mongodb.github.io/node-mongodb-native/4.9/classes/Collection.html#deleteMany * @api public */ @@ -3194,8 +3261,13 @@ Query.prototype.deleteMany = function(filter, options, callback) { return this; }; -/*! +/** * Internal thunk around `deleteMany()` + * @param {Function} callback + * @method _deleteMany + * @instance + * @memberOf Query + * @api private */ Query.prototype._deleteMany = wrapThunk(function(callback) { @@ -3211,7 +3283,7 @@ Query.prototype._deleteMany = wrapThunk(function(callback) { return Query.base.deleteMany.call(this, callback); }); -/*! +/** * hydrates a document * * @param {Model} model @@ -3221,6 +3293,7 @@ Query.prototype._deleteMany = wrapThunk(function(callback) { * @param {Query} self * @param {Array} [pop] array of paths used in population * @param {Function} callback + * @api private */ function completeOne(model, doc, res, options, fields, userProvidedFields, pop, callback) { @@ -3255,8 +3328,10 @@ function completeOne(model, doc, res, options, fields, userProvidedFields, pop, } } -/*! +/** * If the model is a discriminator type and not root, then add the key & value to the criteria. + * @param {Query} query + * @api private */ function prepareDiscriminatorCriteria(query) { @@ -3272,7 +3347,7 @@ function prepareDiscriminatorCriteria(query) { } /** - * Issues a mongodb [findAndModify](https://www.mongodb.org/display/DOCS/findAndModify+Command) update command. + * Issues a mongodb [findAndModify](https://www.mongodb.com/docs/manual/reference/command/findAndModify/) update command. * * Finds a matching document, updates it according to the `update` arg, passing any `options`, and returns the found * document (if any) to the callback. The query executes if @@ -3291,15 +3366,16 @@ function prepareDiscriminatorCriteria(query) { * - `maxTimeMS`: puts a time limit on the query - requires mongodb >= 2.6.0 * - `runValidators`: if true, runs [update validators](/docs/validation.html#update-validators) on this command. Update validators validate the update operation against the model's schema. * - `setDefaultsOnInsert`: `true` by default. If `setDefaultsOnInsert` and `upsert` are true, mongoose will apply the [defaults](https://mongoosejs.com/docs/defaults.html) specified in the model's schema if a new document is created. - * - `rawResult`: if true, returns the [raw result from the MongoDB driver](https://mongodb.github.io/node-mongodb-native/4.3/interfaces/ModifyResult.html) + * - `rawResult`: if true, returns the [raw result from the MongoDB driver](https://mongodb.github.io/node-mongodb-native/4.9/interfaces/ModifyResult.html) * * #### Callback Signature + * * function(error, doc) { * // error: any errors that occurred * // doc: the document before updates are applied if `new: false`, or after updates if `new = true` * } * - * #### Examples: + * #### Example: * * query.findOneAndUpdate(conditions, update, options, callback) // executes * query.findOneAndUpdate(conditions, update, options) // returns Query @@ -3316,25 +3392,26 @@ function prepareDiscriminatorCriteria(query) { * @param {Object|Query} [filter] * @param {Object} [doc] * @param {Object} [options] - * @param {Boolean} [options.rawResult] if true, returns the [raw result from the MongoDB driver](https://mongodb.github.io/node-mongodb-native/4.3/interfaces/ModifyResult.html) + * @param {Boolean} [options.rawResult] if true, returns the [raw result from the MongoDB driver](https://mongodb.github.io/node-mongodb-native/4.9/interfaces/ModifyResult.html) * @param {Boolean|String} [options.strict] overwrites the schema's [strict mode option](https://mongoosejs.com/docs/guide.html#strict) * @param {ClientSession} [options.session=null] The session associated with this query. See [transactions docs](/docs/transactions.html). * @param {Boolean} [options.multipleCastError] by default, mongoose only returns the first error that occurred in casting the query. Turn on this option to aggregate all the cast errors. * @param {Boolean} [options.new=false] By default, `findOneAndUpdate()` returns the document as it was **before** `update` was applied. If you set `new: true`, `findOneAndUpdate()` will instead give you the object after `update` was applied. - * @param {Object} [options.lean] if truthy, mongoose will return the document as a plain JavaScript object rather than a mongoose document. See [`Query.lean()`](/docs/api.html#query_Query-lean) and [the Mongoose lean tutorial](/docs/tutorials/lean.html). + * @param {Object} [options.lean] if truthy, mongoose will return the document as a plain JavaScript object rather than a mongoose document. See [`Query.lean()`](#query_Query-lean) and [the Mongoose lean tutorial](/docs/tutorials/lean.html). * @param {ClientSession} [options.session=null] The session associated with this query. See [transactions docs](/docs/transactions.html). * @param {Boolean|String} [options.strict] overwrites the schema's [strict mode option](https://mongoosejs.com/docs/guide.html#strict) * @param {Boolean} [options.timestamps=null] If set to `false` and [schema-level timestamps](/docs/guide.html#timestamps) are enabled, skip timestamps for this update. Note that this allows you to overwrite timestamps. Does nothing if schema-level timestamps are not set. * @param {Boolean} [options.returnOriginal=null] An alias for the `new` option. `returnOriginal: false` is equivalent to `new: true`. * @param {Function} [callback] optional params are (error, doc), _unless_ `rawResult` is used, in which case params are (error, writeOpResult) * @see Tutorial /docs/tutorials/findoneandupdate.html - * @see mongodb https://www.mongodb.org/display/DOCS/findAndModify+Command - * @see writeOpResult https://mongodb.github.io/node-mongodb-native/2.2/api/Collection.html#~WriteOpResult + * @see findAndModify command https://www.mongodb.com/docs/manual/reference/command/findAndModify/ + * @see ModifyResult https://mongodb.github.io/node-mongodb-native/4.9/interfaces/ModifyResult.html + * @see findOneAndUpdate https://mongodb.github.io/node-mongodb-native/4.9/classes/Collection.html#findOneAndUpdate * @return {Query} this * @api public */ -Query.prototype.findOneAndUpdate = function(criteria, doc, options, callback) { +Query.prototype.findOneAndUpdate = function(filter, doc, options, callback) { this.op = 'findOneAndUpdate'; this._validateOp(); this._validate(); @@ -3349,23 +3426,27 @@ Query.prototype.findOneAndUpdate = function(criteria, doc, options, callback) { case 2: if (typeof doc === 'function') { callback = doc; - doc = criteria; - criteria = undefined; + doc = filter; + filter = undefined; } options = undefined; break; case 1: - if (typeof criteria === 'function') { - callback = criteria; - criteria = options = doc = undefined; + if (typeof filter === 'function') { + callback = filter; + filter = options = doc = undefined; } else { - doc = criteria; - criteria = options = undefined; + doc = filter; + filter = options = undefined; } } - if (mquery.canMerge(criteria)) { - this.merge(criteria); + if (mquery.canMerge(filter)) { + this.merge(filter); + } else if (filter != null) { + this.error( + new ObjectParameterError(filter, 'filter', 'findOneAndUpdate') + ); } // apply doc @@ -3404,10 +3485,12 @@ Query.prototype.findOneAndUpdate = function(criteria, doc, options, callback) { return this; }; -/*! +/** * Thunk around findOneAndUpdate() * * @param {Function} [callback] + * @method _findOneAndUpdate + * @memberOf Query * @api private */ @@ -3420,7 +3503,7 @@ Query.prototype._findOneAndUpdate = wrapThunk(function(callback) { }); /** - * Issues a mongodb [findAndModify](https://www.mongodb.org/display/DOCS/findAndModify+Command) remove command. + * Issues a mongodb [findAndModify](https://www.mongodb.com/docs/manual/reference/command/findAndModify/) remove command. * * Finds a matching document, removes it, passing the found document (if any) to * the callback. Executes if `callback` is passed. @@ -3433,15 +3516,16 @@ Query.prototype._findOneAndUpdate = wrapThunk(function(callback) { * * - `sort`: if multiple docs are found by the conditions, sets the sort order to choose which doc to update * - `maxTimeMS`: puts a time limit on the query - requires mongodb >= 2.6.0 - * - `rawResult`: if true, resolves to the [raw result from the MongoDB driver](https://mongodb.github.io/node-mongodb-native/4.3/interfaces/ModifyResult.html) + * - `rawResult`: if true, resolves to the [raw result from the MongoDB driver](https://mongodb.github.io/node-mongodb-native/4.9/interfaces/ModifyResult.html) * * #### Callback Signature + * * function(error, doc) { * // error: any errors that occurred * // doc: the document before updates are applied if `new: false`, or after updates if `new = true` * } * - * #### Examples: + * #### Example: * * A.where().findOneAndRemove(conditions, options, callback) // executes * A.where().findOneAndRemove(conditions, options) // return Query @@ -3455,12 +3539,12 @@ Query.prototype._findOneAndUpdate = wrapThunk(function(callback) { * @instance * @param {Object} [conditions] * @param {Object} [options] - * @param {Boolean} [options.rawResult] if true, returns the [raw result from the MongoDB driver](https://mongodb.github.io/node-mongodb-native/4.3/interfaces/ModifyResult.html) + * @param {Boolean} [options.rawResult] if true, returns the [raw result from the MongoDB driver](https://mongodb.github.io/node-mongodb-native/4.9/interfaces/ModifyResult.html) * @param {ClientSession} [options.session=null] The session associated with this query. See [transactions docs](/docs/transactions.html). * @param {Boolean|String} [options.strict] overwrites the schema's [strict mode option](https://mongoosejs.com/docs/guide.html#strict) * @param {Function} [callback] optional params are (error, document) * @return {Query} this - * @see mongodb https://www.mongodb.org/display/DOCS/findAndModify+Command + * @see findAndModify command https://www.mongodb.com/docs/manual/reference/command/findAndModify/ * @api public */ @@ -3501,7 +3585,7 @@ Query.prototype.findOneAndRemove = function(conditions, options, callback) { }; /** - * Issues a MongoDB [findOneAndDelete](https://docs.mongodb.com/manual/reference/method/db.collection.findOneAndDelete/) command. + * Issues a MongoDB [findOneAndDelete](https://www.mongodb.com/docs/manual/reference/method/db.collection.findOneAndDelete/) command. * * Finds a matching document, removes it, and passes the found document (if any) * to the callback. Executes if `callback` is passed. @@ -3511,7 +3595,7 @@ Query.prototype.findOneAndRemove = function(conditions, options, callback) { * - `findOneAndDelete()` * * This function differs slightly from `Model.findOneAndRemove()` in that - * `findOneAndRemove()` becomes a [MongoDB `findAndModify()` command](https://docs.mongodb.com/manual/reference/method/db.collection.findAndModify/), + * `findOneAndRemove()` becomes a [MongoDB `findAndModify()` command](https://www.mongodb.com/docs/manual/reference/method/db.collection.findAndModify/), * as opposed to a `findOneAndDelete()` command. For most mongoose use cases, * this distinction is purely pedantic. You should use `findOneAndDelete()` * unless you have a good reason not to. @@ -3520,15 +3604,16 @@ Query.prototype.findOneAndRemove = function(conditions, options, callback) { * * - `sort`: if multiple docs are found by the conditions, sets the sort order to choose which doc to update * - `maxTimeMS`: puts a time limit on the query - requires mongodb >= 2.6.0 - * - `rawResult`: if true, resolves to the [raw result from the MongoDB driver](https://mongodb.github.io/node-mongodb-native/4.3/interfaces/ModifyResult.html) + * - `rawResult`: if true, resolves to the [raw result from the MongoDB driver](https://mongodb.github.io/node-mongodb-native/4.9/interfaces/ModifyResult.html) * * #### Callback Signature + * * function(error, doc) { * // error: any errors that occurred * // doc: the document before updates are applied if `new: false`, or after updates if `new = true` * } * - * #### Examples: + * #### Example: * * A.where().findOneAndDelete(conditions, options, callback) // executes * A.where().findOneAndDelete(conditions, options) // return Query @@ -3539,18 +3624,18 @@ Query.prototype.findOneAndRemove = function(conditions, options, callback) { * * @method findOneAndDelete * @memberOf Query - * @param {Object} [conditions] + * @param {Object} [filter] * @param {Object} [options] - * @param {Boolean} [options.rawResult] if true, returns the [raw result from the MongoDB driver](https://mongodb.github.io/node-mongodb-native/4.3/interfaces/ModifyResult.html) + * @param {Boolean} [options.rawResult] if true, returns the [raw result from the MongoDB driver](https://mongodb.github.io/node-mongodb-native/4.9/interfaces/ModifyResult.html) * @param {ClientSession} [options.session=null] The session associated with this query. See [transactions docs](/docs/transactions.html). * @param {Boolean|String} [options.strict] overwrites the schema's [strict mode option](https://mongoosejs.com/docs/guide.html#strict) * @param {Function} [callback] optional params are (error, document) * @return {Query} this - * @see mongodb https://www.mongodb.org/display/DOCS/findAndModify+Command + * @see findAndModify command https://www.mongodb.com/docs/manual/reference/command/findAndModify/ * @api public */ -Query.prototype.findOneAndDelete = function(conditions, options, callback) { +Query.prototype.findOneAndDelete = function(filter, options, callback) { this.op = 'findOneAndDelete'; this._validateOp(); this._validate(); @@ -3563,16 +3648,20 @@ Query.prototype.findOneAndDelete = function(conditions, options, callback) { } break; case 1: - if (typeof conditions === 'function') { - callback = conditions; - conditions = undefined; + if (typeof filter === 'function') { + callback = filter; + filter = undefined; options = undefined; } break; } - if (mquery.canMerge(conditions)) { - this.merge(conditions); + if (mquery.canMerge(filter)) { + this.merge(filter); + } else if (filter != null) { + this.error( + new ObjectParameterError(filter, 'filter', 'findOneAndDelete') + ); } options && this.setOptions(options); @@ -3586,11 +3675,13 @@ Query.prototype.findOneAndDelete = function(conditions, options, callback) { return this; }; -/*! +/** * Thunk around findOneAndDelete() * * @param {Function} [callback] * @return {Query} this + * @method _findOneAndDelete + * @memberOf Query * @api private */ Query.prototype._findOneAndDelete = wrapThunk(function(callback) { @@ -3626,7 +3717,7 @@ Query.prototype._findOneAndDelete = wrapThunk(function(callback) { }); /** - * Issues a MongoDB [findOneAndReplace](https://docs.mongodb.com/manual/reference/method/db.collection.findOneAndReplace/) command. + * Issues a MongoDB [findOneAndReplace](https://www.mongodb.com/docs/manual/reference/method/db.collection.findOneAndReplace/) command. * * Finds a matching document, removes it, and passes the found document (if any) * to the callback. Executes if `callback` is passed. @@ -3639,15 +3730,16 @@ Query.prototype._findOneAndDelete = wrapThunk(function(callback) { * * - `sort`: if multiple docs are found by the conditions, sets the sort order to choose which doc to update * - `maxTimeMS`: puts a time limit on the query - requires mongodb >= 2.6.0 - * - `rawResult`: if true, resolves to the [raw result from the MongoDB driver](https://mongodb.github.io/node-mongodb-native/4.3/interfaces/ModifyResult.html) + * - `rawResult`: if true, resolves to the [raw result from the MongoDB driver](https://mongodb.github.io/node-mongodb-native/4.9/interfaces/ModifyResult.html) * * #### Callback Signature + * * function(error, doc) { * // error: any errors that occurred * // doc: the document before updates are applied if `new: false`, or after updates if `new = true` * } * - * #### Examples: + * #### Example: * * A.where().findOneAndReplace(filter, replacement, options, callback); // executes * A.where().findOneAndReplace(filter, replacement, options); // return Query @@ -3661,11 +3753,11 @@ Query.prototype._findOneAndDelete = wrapThunk(function(callback) { * @param {Object} [filter] * @param {Object} [replacement] * @param {Object} [options] - * @param {Boolean} [options.rawResult] if true, returns the [raw result from the MongoDB driver](https://mongodb.github.io/node-mongodb-native/4.3/interfaces/ModifyResult.html) + * @param {Boolean} [options.rawResult] if true, returns the [raw result from the MongoDB driver](https://mongodb.github.io/node-mongodb-native/4.9/interfaces/ModifyResult.html) * @param {ClientSession} [options.session=null] The session associated with this query. See [transactions docs](/docs/transactions.html). * @param {Boolean|String} [options.strict] overwrites the schema's [strict mode option](https://mongoosejs.com/docs/guide.html#strict) * @param {Boolean} [options.new=false] By default, `findOneAndUpdate()` returns the document as it was **before** `update` was applied. If you set `new: true`, `findOneAndUpdate()` will instead give you the object after `update` was applied. - * @param {Object} [options.lean] if truthy, mongoose will return the document as a plain JavaScript object rather than a mongoose document. See [`Query.lean()`](/docs/api.html#query_Query-lean) and [the Mongoose lean tutorial](/docs/tutorials/lean.html). + * @param {Object} [options.lean] if truthy, mongoose will return the document as a plain JavaScript object rather than a mongoose document. See [`Query.lean()`](#query_Query-lean) and [the Mongoose lean tutorial](/docs/tutorials/lean.html). * @param {ClientSession} [options.session=null] The session associated with this query. See [transactions docs](/docs/transactions.html). * @param {Boolean|String} [options.strict] overwrites the schema's [strict mode option](https://mongoosejs.com/docs/guide.html#strict) * @param {Boolean} [options.timestamps=null] If set to `false` and [schema-level timestamps](/docs/guide.html#timestamps) are enabled, skip timestamps for this update. Note that this allows you to overwrite timestamps. Does nothing if schema-level timestamps are not set. @@ -3705,6 +3797,10 @@ Query.prototype.findOneAndReplace = function(filter, replacement, options, callb if (mquery.canMerge(filter)) { this.merge(filter); + } else if (filter != null) { + this.error( + new ObjectParameterError(filter, 'filter', 'findOneAndReplace') + ); } if (replacement != null) { @@ -3736,11 +3832,14 @@ Query.prototype.findOneAndReplace = function(filter, replacement, options, callb return this; }; -/*! +/** * Thunk around findOneAndReplace() * * @param {Function} [callback] * @return {Query} this + * @method _findOneAndReplace + * @instance + * @memberOf Query * @api private */ Query.prototype._findOneAndReplace = wrapThunk(function(callback) { @@ -3753,17 +3852,6 @@ Query.prototype._findOneAndReplace = wrapThunk(function(callback) { const filter = this._conditions; const options = this._optionsForExec(); convertNewToReturnDocument(options); - let fields = null; - - this._applyPaths(); - if (this._fields != null) { - options.projection = this._castFields(utils.clone(this._fields)); - fields = options.projection; - if (fields instanceof Error) { - callback(fields); - return null; - } - } const runValidators = _getOption(this, 'runValidators', false); if (runValidators === false) { @@ -3813,9 +3901,10 @@ Query.prototype._findOneAndReplace = wrapThunk(function(callback) { }); }); -/*! +/** * Support the `new` option as an alternative to `returnOriginal` for backwards * compat. + * @api private */ function convertNewToReturnDocument(options) { @@ -3833,11 +3922,14 @@ function convertNewToReturnDocument(options) { } } -/*! +/** * Thunk around findOneAndRemove() * * @param {Function} [callback] * @return {Query} this + * @method _findOneAndRemove + * @memberOf Query + * @instance * @api private */ Query.prototype._findOneAndRemove = wrapThunk(function(callback) { @@ -3849,8 +3941,12 @@ Query.prototype._findOneAndRemove = wrapThunk(function(callback) { this._findAndModify('remove', callback); }); -/*! +/** * Get options from query opts, falling back to the base mongoose object. + * @param {Query} query + * @param {Object} option + * @param {Any} def + * @api private */ function _getOption(query, option, def) { @@ -3865,11 +3961,14 @@ function _getOption(query, option, def) { return def; } -/*! +/** * Override mquery.prototype._findAndModify to provide casting etc. * * @param {String} type either "remove" or "update" * @param {Function} callback + * @method _findAndModify + * @memberOf Query + * @instance * @api private */ @@ -3881,7 +3980,6 @@ Query.prototype._findAndModify = function(type, callback) { const model = this.model; const schema = model.schema; const _this = this; - let fields; const castedQuery = castQuery(this); if (castedQuery instanceof Error) { @@ -3952,16 +4050,6 @@ Query.prototype._findAndModify = function(type, callback) { } } - this._applyPaths(); - - if (this._fields) { - fields = utils.clone(this._fields); - opts.projection = this._castFields(fields); - if (opts.projection instanceof Error) { - return callback(opts.projection); - } - } - if (opts.sort) convertSortToArray(opts); const cb = function(err, doc, res) { @@ -4019,7 +4107,9 @@ Query.prototype._findAndModify = function(type, callback) { */ function _completeOneLean(schema, doc, path, res, opts, callback) { - if (opts.lean && opts.lean.transform) { + if (opts.lean && typeof opts.lean.transform === 'function') { + opts.lean.transform(doc); + for (let i = 0; i < schema.childSchemas.length; i++) { const childPath = path ? path + '.' + schema.childSchemas[i].model.path : schema.childSchemas[i].model.path; const _schema = schema.childSchemas[i].schema; @@ -4053,7 +4143,11 @@ function _completeOneLean(schema, doc, path, res, opts, callback) { */ function _completeManyLean(schema, docs, path, opts, callback) { - if (opts.lean && opts.lean.transform) { + if (opts.lean && typeof opts.lean.transform === 'function') { + for (const doc of docs) { + opts.lean.transform(doc); + } + for (let i = 0; i < schema.childSchemas.length; i++) { const childPath = path ? path + '.' + schema.childSchemas[i].model.path : schema.childSchemas[i].model.path; const _schema = schema.childSchemas[i].schema; @@ -4074,11 +4168,14 @@ function _completeManyLean(schema, docs, path, opts, callback) { } return callback(null, docs); } -/*! +/** * Override mquery.prototype._mergeUpdate to handle mongoose objects in * updates. * * @param {Object} doc + * @method _mergeUpdate + * @memberOf Query + * @instance * @api private */ @@ -4110,9 +4207,12 @@ Query.prototype._mergeUpdate = function(doc) { } }; -/*! +/** * The mongodb driver 1.3.23 only supports the nested array sort * syntax. We must convert it or sorting findAndModify will not work. + * @param {Object} opts + * @param {Array|Object} opts.sort + * @api private */ function convertSortToArray(opts) { @@ -4209,13 +4309,17 @@ function _updateThunk(op, callback) { return null; } -/*! +/** * Mongoose calls this function internally to validate the query if * `runValidators` is set * * @param {Object} castedDoc the update, after casting * @param {Object} options the options from `_optionsForExec()` + * @param {Boolean} isOverwriting * @param {Function} callback + * @method validate + * @memberOf Query + * @instance * @api private */ @@ -4235,44 +4339,56 @@ Query.prototype.validate = function validate(castedDoc, options, isOverwriting, }); }; -/*! +/** * Internal thunk for .update() * * @param {Function} callback - * @see Model.update #model_Model.update + * @see Model.update #model_Model-update + * @method _execUpdate + * @memberOf Query + * @instance * @api private */ Query.prototype._execUpdate = wrapThunk(function(callback) { return _updateThunk.call(this, 'update', callback); }); -/*! +/** * Internal thunk for .updateMany() * * @param {Function} callback - * @see Model.update #model_Model.update + * @see Model.update #model_Model-update + * @method _updateMany + * @memberOf Query + * @instance * @api private */ Query.prototype._updateMany = wrapThunk(function(callback) { return _updateThunk.call(this, 'updateMany', callback); }); -/*! +/** * Internal thunk for .updateOne() * * @param {Function} callback - * @see Model.update #model_Model.update + * @see Model.update #model_Model-update + * @method _updateOne + * @memberOf Query + * @instance * @api private */ Query.prototype._updateOne = wrapThunk(function(callback) { return _updateThunk.call(this, 'updateOne', callback); }); -/*! +/** * Internal thunk for .replaceOne() * * @param {Function} callback - * @see Model.replaceOne #model_Model.replaceOne + * @see Model.replaceOne #model_Model-replaceOne + * @method _replaceOne + * @memberOf Query + * @instance * @api private */ Query.prototype._replaceOne = wrapThunk(function(callback) { @@ -4282,7 +4398,7 @@ Query.prototype._replaceOne = wrapThunk(function(callback) { /** * Declare and/or execute this query as an update() operation. * - * _All paths passed that are not [atomic](https://docs.mongodb.com/manual/tutorial/model-data-for-atomic-operations/#pattern) operations will become `$set` ops._ + * _All paths passed that are not [atomic](https://www.mongodb.com/docs/manual/tutorial/model-data-for-atomic-operations/#pattern) operations will become `$set` ops._ * * This function triggers the following middleware. * @@ -4320,7 +4436,7 @@ Query.prototype._replaceOne = wrapThunk(function(callback) { * * q.update({ $set: { name: 'bob' }}).exec(); // executed * - * // keys that are not [atomic](https://docs.mongodb.com/manual/tutorial/model-data-for-atomic-operations/#pattern) ops become `$set`. + * // keys that are not [atomic](https://www.mongodb.com/docs/manual/tutorial/model-data-for-atomic-operations/#pattern) ops become `$set`. * // this executes the same command as the previous example. * q.update({ name: 'bob' }).exec(); * @@ -4358,15 +4474,15 @@ Query.prototype._replaceOne = wrapThunk(function(callback) { * @param {Boolean} [options.multipleCastError] by default, mongoose only returns the first error that occurred in casting the query. Turn on this option to aggregate all the cast errors. * @param {Boolean|String} [options.strict] overwrites the schema's [strict mode option](https://mongoosejs.com/docs/guide.html#strict) * @param {Boolean} [options.upsert=false] if true, and no documents found, insert a new document - * @param {Object} [options.writeConcern=null] sets the [write concern](https://docs.mongodb.com/manual/reference/write-concern/) for replica sets. Overrides the [schema-level write concern](/docs/guide.html#writeConcern) + * @param {Object} [options.writeConcern=null] sets the [write concern](https://www.mongodb.com/docs/manual/reference/write-concern/) for replica sets. Overrides the [schema-level write concern](/docs/guide.html#writeConcern) * @param {Boolean} [options.timestamps=null] If set to `false` and [schema-level timestamps](/docs/guide.html#timestamps) are enabled, skip timestamps for this update. Does nothing if schema-level timestamps are not set. * @param {Function} [callback] params are (error, writeOpResult) * @return {Query} this - * @see Model.update #model_Model.update + * @see Model.update #model_Model-update * @see Query docs https://mongoosejs.com/docs/queries.html - * @see update https://docs.mongodb.org/manual/reference/method/db.collection.update/ - * @see writeOpResult https://mongodb.github.io/node-mongodb-native/2.2/api/Collection.html#~WriteOpResult - * @see MongoDB docs https://docs.mongodb.com/manual/reference/command/update/#update-command-output + * @see update https://www.mongodb.com/docs/manual/reference/method/db.collection.update/ + * @see UpdateResult https://mongodb.github.io/node-mongodb-native/4.9/interfaces/UpdateResult.html + * @see MongoDB docs https://www.mongodb.com/docs/manual/reference/command/update/#update-command-output * @api public */ @@ -4408,6 +4524,7 @@ Query.prototype.update = function(conditions, doc, options, callback) { * and `post('updateMany')` instead. * * #### Example: + * * const res = await Person.updateMany({ name: /Stark$/ }, { isDeleted: true }); * res.n; // Number of documents matched * res.nModified; // Number of documents modified @@ -4422,15 +4539,15 @@ Query.prototype.update = function(conditions, doc, options, callback) { * @param {Boolean} [options.multipleCastError] by default, mongoose only returns the first error that occurred in casting the query. Turn on this option to aggregate all the cast errors. * @param {Boolean|String} [options.strict] overwrites the schema's [strict mode option](https://mongoosejs.com/docs/guide.html#strict) * @param {Boolean} [options.upsert=false] if true, and no documents found, insert a new document - * @param {Object} [options.writeConcern=null] sets the [write concern](https://docs.mongodb.com/manual/reference/write-concern/) for replica sets. Overrides the [schema-level write concern](/docs/guide.html#writeConcern) + * @param {Object} [options.writeConcern=null] sets the [write concern](https://www.mongodb.com/docs/manual/reference/write-concern/) for replica sets. Overrides the [schema-level write concern](/docs/guide.html#writeConcern) * @param {Boolean} [options.timestamps=null] If set to `false` and [schema-level timestamps](/docs/guide.html#timestamps) are enabled, skip timestamps for this update. Does nothing if schema-level timestamps are not set. * @param {Function} [callback] params are (error, writeOpResult) * @return {Query} this - * @see Model.update #model_Model.update + * @see Model.update #model_Model-update * @see Query docs https://mongoosejs.com/docs/queries.html - * @see update https://docs.mongodb.org/manual/reference/method/db.collection.update/ - * @see writeOpResult https://mongodb.github.io/node-mongodb-native/2.2/api/Collection.html#~WriteOpResult - * @see MongoDB docs https://docs.mongodb.com/manual/reference/command/update/#update-command-output + * @see update https://www.mongodb.com/docs/manual/reference/method/db.collection.update/ + * @see UpdateResult https://mongodb.github.io/node-mongodb-native/4.9/interfaces/UpdateResult.html + * @see MongoDB docs https://www.mongodb.com/docs/manual/reference/command/update/#update-command-output * @api public */ @@ -4467,15 +4584,19 @@ Query.prototype.updateMany = function(conditions, doc, options, callback) { * `update()`, except it does not support the `multi` option. * * - MongoDB will update _only_ the first document that matches `filter` regardless of the value of the `multi` option. - * - Use `replaceOne()` if you want to overwrite an entire document rather than using [atomic](https://docs.mongodb.com/manual/tutorial/model-data-for-atomic-operations/#pattern) operators like `$set`. + * - Use `replaceOne()` if you want to overwrite an entire document rather than using [atomic](https://www.mongodb.com/docs/manual/tutorial/model-data-for-atomic-operations/#pattern) operators like `$set`. * * **Note** updateOne will _not_ fire update middleware. Use `pre('updateOne')` * and `post('updateOne')` instead. * * #### Example: + * * const res = await Person.updateOne({ name: 'Jean-Luc Picard' }, { ship: 'USS Enterprise' }); - * res.n; // Number of documents matched - * res.nModified; // Number of documents modified + * res.acknowledged; // Indicates if this write result was acknowledged. If not, then all other members of this result will be undefined. + * res.matchedCount; // Number of documents that matched the filter + * res.modifiedCount; // Number of documents that were modified + * res.upsertedCount; // Number of documents that were upserted + * res.upsertedId; // Identifier of the inserted document (if an upsert took place) * * This function triggers the following middleware. * @@ -4487,15 +4608,15 @@ Query.prototype.updateMany = function(conditions, doc, options, callback) { * @param {Boolean} [options.multipleCastError] by default, mongoose only returns the first error that occurred in casting the query. Turn on this option to aggregate all the cast errors. * @param {Boolean|String} [options.strict] overwrites the schema's [strict mode option](https://mongoosejs.com/docs/guide.html#strict) * @param {Boolean} [options.upsert=false] if true, and no documents found, insert a new document - * @param {Object} [options.writeConcern=null] sets the [write concern](https://docs.mongodb.com/manual/reference/write-concern/) for replica sets. Overrides the [schema-level write concern](/docs/guide.html#writeConcern) + * @param {Object} [options.writeConcern=null] sets the [write concern](https://www.mongodb.com/docs/manual/reference/write-concern/) for replica sets. Overrides the [schema-level write concern](/docs/guide.html#writeConcern) * @param {Boolean} [options.timestamps=null] If set to `false` and [schema-level timestamps](/docs/guide.html#timestamps) are enabled, skip timestamps for this update. Note that this allows you to overwrite timestamps. Does nothing if schema-level timestamps are not set. * @param {Function} [callback] params are (error, writeOpResult) * @return {Query} this - * @see Model.update #model_Model.update + * @see Model.update #model_Model-update * @see Query docs https://mongoosejs.com/docs/queries.html - * @see update https://docs.mongodb.org/manual/reference/method/db.collection.update/ - * @see writeOpResult https://mongodb.github.io/node-mongodb-native/2.2/api/Collection.html#~WriteOpResult - * @see MongoDB docs https://docs.mongodb.com/manual/reference/command/update/#update-command-output + * @see update https://www.mongodb.com/docs/manual/reference/method/db.collection.update/ + * @see UpdateResult https://mongodb.github.io/node-mongodb-native/4.9/interfaces/UpdateResult.html + * @see MongoDB docs https://www.mongodb.com/docs/manual/reference/command/update/#update-command-output * @api public */ @@ -4530,15 +4651,19 @@ Query.prototype.updateOne = function(conditions, doc, options, callback) { /** * Declare and/or execute this query as a replaceOne() operation. Same as * `update()`, except MongoDB will replace the existing document and will - * not accept any [atomic](https://docs.mongodb.com/manual/tutorial/model-data-for-atomic-operations/#pattern) operators (`$set`, etc.) + * not accept any [atomic](https://www.mongodb.com/docs/manual/tutorial/model-data-for-atomic-operations/#pattern) operators (`$set`, etc.) * * **Note** replaceOne will _not_ fire update middleware. Use `pre('replaceOne')` * and `post('replaceOne')` instead. * * #### Example: + * * const res = await Person.replaceOne({ _id: 24601 }, { name: 'Jean Valjean' }); - * res.n; // Number of documents matched - * res.nModified; // Number of documents modified + * res.acknowledged; // Indicates if this write result was acknowledged. If not, then all other members of this result will be undefined. + * res.matchedCount; // Number of documents that matched the filter + * res.modifiedCount; // Number of documents that were modified + * res.upsertedCount; // Number of documents that were upserted + * res.upsertedId; // Identifier of the inserted document (if an upsert took place) * * This function triggers the following middleware. * @@ -4550,15 +4675,15 @@ Query.prototype.updateOne = function(conditions, doc, options, callback) { * @param {Boolean} [options.multipleCastError] by default, mongoose only returns the first error that occurred in casting the query. Turn on this option to aggregate all the cast errors. * @param {Boolean|String} [options.strict] overwrites the schema's [strict mode option](https://mongoosejs.com/docs/guide.html#strict) * @param {Boolean} [options.upsert=false] if true, and no documents found, insert a new document - * @param {Object} [options.writeConcern=null] sets the [write concern](https://docs.mongodb.com/manual/reference/write-concern/) for replica sets. Overrides the [schema-level write concern](/docs/guide.html#writeConcern) + * @param {Object} [options.writeConcern=null] sets the [write concern](https://www.mongodb.com/docs/manual/reference/write-concern/) for replica sets. Overrides the [schema-level write concern](/docs/guide.html#writeConcern) * @param {Boolean} [options.timestamps=null] If set to `false` and [schema-level timestamps](/docs/guide.html#timestamps) are enabled, skip timestamps for this update. Does nothing if schema-level timestamps are not set. * @param {Function} [callback] params are (error, writeOpResult) * @return {Query} this - * @see Model.update #model_Model.update + * @see Model.update #model_Model-update * @see Query docs https://mongoosejs.com/docs/queries.html - * @see update https://docs.mongodb.org/manual/reference/method/db.collection.update/ - * @see writeOpResult https://mongodb.github.io/node-mongodb-native/2.2/api/Collection.html#~WriteOpResult - * @see MongoDB docs https://docs.mongodb.com/manual/reference/command/update/#update-command-output + * @see update https://www.mongodb.com/docs/manual/reference/method/db.collection.update/ + * @see UpdateResult https://mongodb.github.io/node-mongodb-native/4.9/interfaces/UpdateResult.html + * @see MongoDB docs https://www.mongodb.com/docs/manual/reference/command/update/#update-command-output * @api public */ @@ -4591,8 +4716,15 @@ Query.prototype.replaceOne = function(conditions, doc, options, callback) { return _update(this, 'replaceOne', conditions, doc, options, callback); }; -/*! +/** * Internal helper for update, updateMany, updateOne, replaceOne + * @param {Query} query + * @param {String} op + * @param {Object} filter + * @param {Document} [doc] + * @param {Object} [options] + * @param {Function} callback + * @api private */ function _update(query, op, filter, doc, options, callback) { @@ -4740,8 +4872,11 @@ Query.prototype.orFail = function(err) { return this; }; -/*! +/** * Get the error to throw for `orFail()` + * @param {Error|undefined} err + * @param {Query} query + * @api private */ function _orFailError(err, query) { @@ -4759,7 +4894,7 @@ function _orFailError(err, query) { /** * Executes the query * - * #### Examples: + * #### Example: * * const promise = query.exec(); * const promise = query.exec('update'); @@ -4775,6 +4910,12 @@ function _orFailError(err, query) { Query.prototype.exec = function exec(op, callback) { const _this = this; + if (this.options && this.options.sort) { + const keys = Object.keys(this.options.sort); + if (keys.includes('')) { + throw new Error('Invalid field "" passed to sort()'); + } + } // Ensure that `exec()` is the first thing that shows up in // the stack when cast errors happen. const castError = new CastError(); @@ -4947,11 +5088,15 @@ Query.prototype.post = function(fn) { return this; }; -/*! +/** * Casts obj for an update command. * * @param {Object} obj + * @param {Boolean} overwrite * @return {Object} obj after casting its values + * @method _castUpdate + * @memberOf Query + * @instance * @api private */ @@ -4963,7 +5108,9 @@ Query.prototype._castUpdate = function _castUpdate(obj, overwrite) { if (this._mongooseOptions.overwriteDiscriminatorKey && obj[discriminatorKey] != null && baseSchema.discriminators) { - const _schema = baseSchema.discriminators[obj[discriminatorKey]]; + const _schema = Object.values(baseSchema.discriminators).find( + discriminator => discriminator.discriminatorMapping.value === obj[discriminatorKey] + ); if (_schema != null) { schema = _schema; } @@ -4995,7 +5142,7 @@ Query.prototype._castUpdate = function _castUpdate(obj, overwrite) { }, this, this._conditions); }; -/*! +/** * castQuery * @api private */ @@ -5050,12 +5197,12 @@ function castQuery(query) { * @param {boolean} [options.retainNullValues=false] by default, Mongoose removes null and undefined values from populated arrays. Use this option to make `populate()` retain `null` and `undefined` array entries. * @param {boolean} [options.getters=false] if true, Mongoose will call any getters defined on the `localField`. By default, Mongoose gets the raw value of `localField`. For example, you would need to set this option to `true` if you wanted to [add a `lowercase` getter to your `localField`](/docs/schematypes.html#schematype-options). * @param {boolean} [options.clone=false] When you do `BlogPost.find().populate('author')`, blog posts with the same author will share 1 copy of an `author` doc. Enable this option to make Mongoose clone populated docs before assigning them. - * @param {Object|Function} [options.match=null] Add an additional filter to the populate query. Can be a filter object containing [MongoDB query syntax](https://docs.mongodb.com/manual/tutorial/query-documents/), or a function that returns a filter object. + * @param {Object|Function} [options.match=null] Add an additional filter to the populate query. Can be a filter object containing [MongoDB query syntax](https://www.mongodb.com/docs/manual/tutorial/query-documents/), or a function that returns a filter object. * @param {Function} [options.transform=null] Function that Mongoose will call on every populated document that allows you to transform the populated document. * @param {Object} [options.options=null] Additional options like `limit` and `lean`. - * @see population ./populate.html + * @see population /docs/populate.html * @see Query#select #query_Query-select - * @see Model.populate #model_Model.populate + * @see Model.populate #model_Model-populate * @return {Query} this * @api public */ @@ -5119,6 +5266,7 @@ Query.prototype.populate = function() { * Gets a list of paths to be populated by this query * * #### Example: + * * bookSchema.pre('findOne', function() { * let keys = this.getPopulatedPaths(); // ['author'] * }); @@ -5126,6 +5274,7 @@ Query.prototype.populate = function() { * Book.findOne({}).populate('author'); * * #### Example: + * * // Deep populate * const q = L1.find().populate({ * path: 'level2', @@ -5216,7 +5365,7 @@ Query.prototype.cast = function(model, obj) { * * @param {Object} fields * @see https://github.com/Automattic/mongoose/issues/1091 - * @see https://docs.mongodb.org/manual/reference/projection/elemMatch/ + * @see https://www.mongodb.com/docs/manual/reference/projection/elemMatch/ * @api private */ @@ -5269,6 +5418,9 @@ Query.prototype._castFields = function _castFields(fields) { */ Query.prototype._applyPaths = function applyPaths() { + if (!this.model) { + return; + } this._fields = this._fields || {}; helpers.applyPaths(this._fields, this.model.schema); @@ -5287,7 +5439,7 @@ Query.prototype._applyPaths = function applyPaths() { }; /** - * Returns a wrapper around a [mongodb driver cursor](https://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html). + * Returns a wrapper around a [mongodb driver cursor](https://mongodb.github.io/node-mongodb-native/4.9/classes/FindCursor.html). * A QueryCursor exposes a Streams3 interface, as well as a `.next()` function. * * The `.cursor()` function triggers pre find hooks, but **not** post find hooks. @@ -5322,21 +5474,16 @@ Query.prototype._applyPaths = function applyPaths() { * * @return {QueryCursor} * @param {Object} [options] - * @see QueryCursor + * @see QueryCursor /docs/api/querycursor.html * @api public */ Query.prototype.cursor = function cursor(opts) { - this._applyPaths(); - this._fields = this._castFields(this._fields); - this.setOptions({ projection: this._fieldsForExec() }); if (opts) { this.setOptions(opts); } - const options = Object.assign({}, this._optionsForExec(), { - projection: this.projection() - }); + const options = this._optionsForExec(); try { this.cast(this.model); } catch (err) { @@ -5380,7 +5527,7 @@ Query.prototype.maxscan = Query.base.maxScan; * @param {Object} [opts] options to set * @param {Boolean} [opts.awaitData] false by default. Set to true to keep the cursor open even if there's no data. * @param {Number} [opts.maxAwaitTimeMS] the maximum amount of time for the server to wait on new documents to satisfy a tailable cursor query. Requires `tailable` and `awaitData` to be true - * @see tailable https://docs.mongodb.org/manual/tutorial/create-tailable-cursor/ + * @see tailable https://www.mongodb.com/docs/manual/tutorial/create-tailable-cursor/ * @api public */ @@ -5438,8 +5585,8 @@ Query.prototype.tailable = function(val, opts) { * @instance * @param {Object} [arg] * @return {Query} this - * @see $geometry https://docs.mongodb.org/manual/reference/operator/geometry/ - * @see geoIntersects https://docs.mongodb.org/manual/reference/operator/geoIntersects/ + * @see $geometry https://www.mongodb.com/docs/manual/reference/operator/geometry/ + * @see geoIntersects https://www.mongodb.com/docs/manual/reference/operator/geoIntersects/ * @api public */ @@ -5477,9 +5624,9 @@ Query.prototype.tailable = function(val, opts) { * @instance * @param {Object} object Must contain a `type` property which is a String and a `coordinates` property which is an Array. See the examples. * @return {Query} this - * @see $geometry https://docs.mongodb.org/manual/reference/operator/geometry/ - * @see https://docs.mongodb.org/manual/release-notes/2.4/#new-geospatial-indexes-with-geojson-and-improved-spherical-geometry - * @see https://www.mongodb.org/display/DOCS/Geospatial+Indexing + * @see $geometry https://www.mongodb.com/docs/manual/reference/operator/geometry/ + * @see Geospatial Support Enhancements https://www.mongodb.com/docs/manual/release-notes/2.4/#geospatial-support-enhancements + * @see MongoDB Geospatial Indexing https://www.mongodb.com/docs/manual/core/geospatial-indexes/ * @api public */ @@ -5501,14 +5648,14 @@ Query.prototype.tailable = function(val, opts) { * @param {String} [path] * @param {Object} val * @return {Query} this - * @see $near https://docs.mongodb.org/manual/reference/operator/near/ - * @see $nearSphere https://docs.mongodb.org/manual/reference/operator/nearSphere/ - * @see $maxDistance https://docs.mongodb.org/manual/reference/operator/maxDistance/ - * @see https://www.mongodb.org/display/DOCS/Geospatial+Indexing + * @see $near https://www.mongodb.com/docs/manual/reference/operator/near/ + * @see $nearSphere https://www.mongodb.com/docs/manual/reference/operator/nearSphere/ + * @see $maxDistance https://www.mongodb.com/docs/manual/reference/operator/maxDistance/ + * @see MongoDB Geospatial Indexing https://www.mongodb.com/docs/manual/core/geospatial-indexes/ * @api public */ -/*! +/** * Overwriting mquery is needed to support a couple different near() forms found in older * versions of mongoose * near([1,1]) @@ -5516,6 +5663,11 @@ Query.prototype.tailable = function(val, opts) { * near(field, [1,2]) * near(field, 1, 2) * In addition to all of the normal forms supported by mquery + * + * @method near + * @memberOf Query + * @instance + * @api private */ Query.prototype.near = function() { @@ -5583,9 +5735,9 @@ Query.prototype.near = function() { * * @deprecated * @see near() #query_Query-near - * @see $near https://docs.mongodb.org/manual/reference/operator/near/ - * @see $nearSphere https://docs.mongodb.org/manual/reference/operator/nearSphere/ - * @see $maxDistance https://docs.mongodb.org/manual/reference/operator/maxDistance/ + * @see $near https://www.mongodb.com/docs/manual/reference/operator/near/ + * @see $nearSphere https://www.mongodb.com/docs/manual/reference/operator/nearSphere/ + * @see $maxDistance https://www.mongodb.com/docs/manual/reference/operator/maxDistance/ */ Query.prototype.nearSphere = function() { @@ -5613,7 +5765,7 @@ Query.prototype.nearSphere = function() { * `Symbol.asyncIterator` is undefined, that means your Node.js version does not * support async iterators. * - * @method Symbol.asyncIterator + * @method [Symbol.asyncIterator] * @memberOf Query * @instance * @api public @@ -5639,8 +5791,8 @@ if (Symbol.asyncIterator != null) { * @param {String|Array} [path] * @param {Array|Object} [coordinatePairs...] * @return {Query} this - * @see $polygon https://docs.mongodb.org/manual/reference/operator/polygon/ - * @see https://www.mongodb.org/display/DOCS/Geospatial+Indexing + * @see $polygon https://www.mongodb.com/docs/manual/reference/operator/polygon/ + * @see MongoDB Geospatial Indexing https://www.mongodb.com/docs/manual/core/geospatial-indexes/ * @api public */ @@ -5658,19 +5810,24 @@ if (Symbol.asyncIterator != null) { * @method box * @memberOf Query * @instance - * @see $box https://docs.mongodb.org/manual/reference/operator/box/ + * @see $box https://www.mongodb.com/docs/manual/reference/operator/box/ * @see within() Query#within #query_Query-within - * @see https://www.mongodb.org/display/DOCS/Geospatial+Indexing + * @see MongoDB Geospatial Indexing https://www.mongodb.com/docs/manual/core/geospatial-indexes/ * @param {Object|Array} val1 Lower Left Coordinates OR a object of lower-left(ll) and upper-right(ur) Coordinates * @param {Array} [val2] Upper Right Coordinates * @return {Query} this * @api public */ -/*! +/** * this is needed to support the mongoose syntax of: * box(field, { ll : [x,y], ur : [x2,y2] }) * box({ ll : [x,y], ur : [x2,y2] }) + * + * @method box + * @memberOf Query + * @instance + * @api private */ Query.prototype.box = function(ll, ur) { @@ -5703,10 +5860,10 @@ Query.prototype.box = function(ll, ur) { * @param {String} [path] * @param {Object} area * @return {Query} this - * @see $center https://docs.mongodb.org/manual/reference/operator/center/ - * @see $centerSphere https://docs.mongodb.org/manual/reference/operator/centerSphere/ - * @see $geoWithin https://docs.mongodb.org/manual/reference/operator/geoWithin/ - * @see https://www.mongodb.org/display/DOCS/Geospatial+Indexing + * @see $center https://www.mongodb.com/docs/manual/reference/operator/center/ + * @see $centerSphere https://www.mongodb.com/docs/manual/reference/operator/centerSphere/ + * @see $geoWithin https://www.mongodb.com/docs/manual/reference/operator/geoWithin/ + * @see MongoDB Geospatial Indexing https://www.mongodb.com/docs/manual/core/geospatial-indexes/ * @api public */ @@ -5738,8 +5895,8 @@ Query.prototype.center = Query.base.circle; * @param {String} [path] * @param {Object} val * @return {Query} this - * @see https://www.mongodb.org/display/DOCS/Geospatial+Indexing - * @see $centerSphere https://docs.mongodb.org/manual/reference/operator/centerSphere/ + * @see MongoDB Geospatial Indexing https://www.mongodb.com/docs/manual/core/geospatial-indexes/ + * @see $centerSphere https://www.mongodb.com/docs/manual/reference/operator/centerSphere/ * @api public */ diff --git a/food-ordering-app/server/node_modules/mongoose/lib/queryhelpers.js b/food-ordering-app/server/node_modules/mongoose/lib/queryhelpers.js index ef75cda36..6948715a0 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/queryhelpers.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/queryhelpers.js @@ -12,7 +12,7 @@ const getDiscriminatorByValue = const isDefiningProjection = require('./helpers/projection/isDefiningProjection'); const clone = require('./helpers/clone'); -/*! +/** * Prepare a set of path options for query population. * * @param {Query} query @@ -38,7 +38,7 @@ exports.preparePopulationOptions = function preparePopulationOptions(query, opti return pop; }; -/*! +/** * Prepare a set of path options for query population. This is the MongooseQuery * version * @@ -82,7 +82,7 @@ exports.preparePopulationOptionsMQ = function preparePopulationOptionsMQ(query, return pop; }; -/*! +/** * If the document is a mapped discriminator type, it returns a model instance for that type, otherwise, * it returns an instance of the given model. * @@ -163,6 +163,11 @@ exports.applyPaths = function applyPaths(fields, schema) { if (!isDefiningProjection(field)) { continue; } + // `_id: 1, name: 0` is a mixed inclusive/exclusive projection in + // MongoDB 4.0 and earlier, but not in later versions. + if (keys[keyIndex] === '_id' && keys.length > 1) { + continue; + } exclude = !field; break; } @@ -232,6 +237,11 @@ exports.applyPaths = function applyPaths(fields, schema) { schema.eachPath(function(path, type) { if (prefix) path = prefix + '.' + path; if (type.$isSchemaMap || path.endsWith('.$*')) { + const plusPath = '+' + path; + const hasPlusPath = fields && plusPath in fields; + if (type.options && type.options.select === false && !hasPlusPath) { + excluded.push(path); + } return; } let addedPath = analyzePath(path, type); @@ -321,7 +331,7 @@ exports.applyPaths = function applyPaths(fields, schema) { } }; -/*! +/** * Set each path query option to lean * * @param {Object} option diff --git a/food-ordering-app/server/node_modules/mongoose/lib/schema.js b/food-ordering-app/server/node_modules/mongoose/lib/schema.js index 781ccdbbc..dc0ebbd50 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/schema.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/schema.js @@ -24,6 +24,8 @@ const utils = require('./utils'); const validateRef = require('./helpers/populate/validateRef'); const util = require('util'); +const hasNumericSubpathRegex = /\.\d+(\.|$)/; + let MongooseTypes; const queryHooks = require('./helpers/query/applyQueryMiddleware'). @@ -61,7 +63,7 @@ let id = 0; * - [_id](/docs/guide.html#_id): bool - defaults to true * - [minimize](/docs/guide.html#minimize): bool - controls [document#toObject](#document_Document-toObject) behavior when called manually - defaults to true * - [read](/docs/guide.html#read): string - * - [writeConcern](/docs/guide.html#writeConcern): object - defaults to null, use to override [the MongoDB server's default write concern settings](https://docs.mongodb.com/manual/reference/write-concern/) + * - [writeConcern](/docs/guide.html#writeConcern): object - defaults to null, use to override [the MongoDB server's default write concern settings](https://www.mongodb.com/docs/manual/reference/write-concern/) * - [shardKey](/docs/guide.html#shardKey): object - defaults to `null` * - [strict](/docs/guide.html#strict): bool - defaults to true * - [strictQuery](/docs/guide.html#strictQuery): bool - defaults to false @@ -88,7 +90,7 @@ let id = 0; * * @param {Object|Schema|Array} [definition] Can be one of: object describing schema paths, or schema to copy, or array of objects and schemas * @param {Object} [options] - * @inherits NodeJS EventEmitter https://nodejs.org/api/events.html#events_class_events_eventemitter + * @inherits NodeJS EventEmitter https://nodejs.org/api/events.html#class-eventemitter * @event `init`: Emitted after the schema is compiled into a `Model`. * @api public */ @@ -133,6 +135,24 @@ function Schema(obj, options) { this.add(obj); } + // build virtual paths + if (options && options.virtuals) { + const virtuals = options.virtuals; + const pathNames = Object.keys(virtuals); + for (const pathName of pathNames) { + const pathOptions = virtuals[pathName].options ? virtuals[pathName].options : undefined; + const virtual = this.virtual(pathName, pathOptions); + + if (virtuals[pathName].get) { + virtual.get(virtuals[pathName].get); + } + + if (virtuals[pathName].set) { + virtual.set(virtuals[pathName].set); + } + } + } + // check if _id's value is a subdocument (gh-2276) const _idSubDoc = obj && obj._id && utils.isObject(obj._id); @@ -147,21 +167,54 @@ function Schema(obj, options) { this.setupTimestamp(this.options.timestamps); } -/*! +/** * Create virtual properties with alias field + * @api private */ function aliasFields(schema, paths) { - paths = paths || Object.keys(schema.paths); - for (const path of paths) { - const options = get(schema.paths[path], 'options'); - if (options == null) { + for (const path of Object.keys(paths)) { + let alias = null; + if (paths[path] != null) { + alias = paths[path]; + } else { + const options = get(schema.paths[path], 'options'); + if (options == null) { + continue; + } + + alias = options.alias; + } + + if (!alias) { continue; } const prop = schema.paths[path].path; - const alias = options.alias; + if (Array.isArray(alias)) { + for (const a of alias) { + if (typeof a !== 'string') { + throw new Error('Invalid value for alias option on ' + prop + ', got ' + a); + } + + schema.aliases[a] = prop; + + schema. + virtual(a). + get((function(p) { + return function() { + if (typeof this.get === 'function') { + return this.get(p); + } + return this[p]; + }; + })(prop)). + set((function(p) { + return function(v) { + return this.$set(p, v); + }; + })(prop)); + } - if (!alias) { continue; } @@ -358,7 +411,25 @@ Schema.prototype._clone = function _clone(Constructor) { s.paths = utils.clone(this.paths); s.nested = utils.clone(this.nested); s.subpaths = utils.clone(this.subpaths); - s.singleNestedPaths = utils.clone(this.singleNestedPaths); + for (const schemaType of Object.values(s.paths)) { + if (schemaType.$isSingleNested) { + const path = schemaType.path; + for (const key of Object.keys(schemaType.schema.paths)) { + s.singleNestedPaths[path + '.' + key] = schemaType.schema.paths[key]; + } + for (const key of Object.keys(schemaType.schema.singleNestedPaths)) { + s.singleNestedPaths[path + '.' + key] = + schemaType.schema.singleNestedPaths[key]; + } + for (const key of Object.keys(schemaType.schema.subpaths)) { + s.singleNestedPaths[path + '.' + key] = + schemaType.schema.subpaths[key]; + } + for (const key of Object.keys(schemaType.schema.nested)) { + s.singleNestedPaths[path + '.' + key] = 'nested'; + } + } + } s.childSchemas = gatherChildSchemas(s); s.virtuals = utils.clone(this.virtuals); @@ -427,6 +498,48 @@ Schema.prototype.pick = function(paths, options) { return newSchema; }; +/** + * Returns a new schema that has the `paths` from the original schema, minus the omitted ones. + * + * This method is analagous to [Lodash's `omit()` function](https://lodash.com/docs/#omit) for Mongoose schemas. + * + * #### Example: + * + * const schema = Schema({ name: String, age: Number }); + * // Creates a new schema omitting the `age` path + * const newSchema = schema.omit(['age']); + * + * newSchema.path('name'); // SchemaString { ... } + * newSchema.path('age'); // undefined + * + * @param {String[]} paths List of Paths to omit for the new Schema + * @param {Object} [options] Options to pass to the new Schema Constructor (same as `new Schema(.., Options)`). Defaults to `this.options` if not set. + * @return {Schema} + * @api public + */ + +Schema.prototype.omit = function(paths, options) { + const newSchema = new Schema(this, options || this.options); + if (!Array.isArray(paths)) { + throw new MongooseError( + 'Schema#omit() only accepts an array argument, ' + + 'got "' + + typeof paths + + '"' + ); + } + + newSchema.remove(paths); + + for (const nested in newSchema.singleNestedPaths) { + if (paths.includes(nested)) { + delete newSchema.singleNestedPaths[nested]; + } + } + + return newSchema; +}; + /** * Returns default options for this schema, merged with `options`. * @@ -438,8 +551,8 @@ Schema.prototype.pick = function(paths, options) { Schema.prototype.defaultOptions = function(options) { this._userProvidedOptions = options == null ? {} : utils.clone(options); const baseOptions = this.base && this.base.options || {}; - const strict = 'strict' in baseOptions ? baseOptions.strict : true; + const id = 'id' in baseOptions ? baseOptions.id : true; options = utils.options({ strict: strict, strictQuery: 'strict' in this._userProvidedOptions ? @@ -458,7 +571,7 @@ Schema.prototype.defaultOptions = function(options) { validateBeforeSave: true, // the following are only applied at construction time _id: true, - id: true, + id: id, typeKey: 'type' }, utils.clone(options)); @@ -483,29 +596,24 @@ Schema.prototype.defaultOptions = function(options) { * * #### Example: * - * const options = { discriminatorKey: 'kind' }; + * const eventSchema = new mongoose.Schema({ timestamp: Date }, { discriminatorKey: 'kind' }); + * + * const clickedEventSchema = new mongoose.Schema({ element: String }, { discriminatorKey: 'kind' }); + * const ClickedModel = eventSchema.discriminator('clicked', clickedEventSchema); * - * const eventSchema = new mongoose.Schema({ time: Date }, options); * const Event = mongoose.model('Event', eventSchema); * - * // ClickedLinkEvent is a special type of Event that has - * // a URL. - * const ClickedLinkEvent = Event.discriminator('ClickedLink', - * new mongoose.Schema({ url: String }, options)); + * Event.discriminators['clicked']; // Model { clicked } * - * // When you create a generic event, it can't have a URL field... - * const genericEvent = new Event({ time: Date.now(), url: 'google.com' }); - * assert.ok(!genericEvent.url); - * // But a ClickedLinkEvent can - * const clickedEvent = new ClickedLinkEvent({ time: Date.now(), url: 'google.com' }); - * assert.ok(clickedEvent.url); + * const doc = await Event.create({ kind: 'clicked', element: '#hero' }); + * doc.element; // '#hero' + * doc instanceof ClickedModel; // true * * @param {String} name the name of the discriminator - * @param {Schema} schema the Schema of the discriminated Schema + * @param {Schema} schema the discriminated Schema * @return {Schema} the Schema instance * @api public */ - Schema.prototype.discriminator = function(name, schema) { this._applyDiscriminators = Object.assign(this._applyDiscriminators || {}, { [name]: schema }); @@ -554,6 +662,10 @@ Schema.prototype.add = function add(obj, prefix) { const keys = Object.keys(obj); const typeKey = this.options.typeKey; for (const key of keys) { + if (utils.specialProperties.has(key)) { + continue; + } + const fullPath = prefix + key; const val = obj[key]; @@ -640,9 +752,44 @@ Schema.prototype.add = function add(obj, prefix) { } } - const addedKeys = Object.keys(obj). - map(key => prefix ? prefix + key : key); - aliasFields(this, addedKeys); + const aliasObj = Object.fromEntries( + Object.entries(obj).map(([key]) => ([prefix + key, null])) + ); + aliasFields(this, aliasObj); + return this; +}; + +/** + * Add an alias for `path`. This means getting or setting the `alias` + * is equivalent to getting or setting the `path`. + * + * #### Example: + * + * const toySchema = new Schema({ n: String }); + * + * // Make 'name' an alias for 'n' + * toySchema.alias('n', 'name'); + * + * const Toy = mongoose.model('Toy', toySchema); + * const turboMan = new Toy({ n: 'Turbo Man' }); + * + * turboMan.name; // 'Turbo Man' + * turboMan.n; // 'Turbo Man' + * + * turboMan.name = 'Turbo Man Action Figure'; + * turboMan.n; // 'Turbo Man Action Figure' + * + * await turboMan.save(); // Saves { _id: ..., n: 'Turbo Man Action Figure' } + * + * + * @param {String} path real path to alias + * @param {String|String[]} alias the path(s) to use as an alias for `path` + * @return {Schema} the Schema instance + * @api public + */ + +Schema.prototype.alias = function alias(path, alias) { + aliasFields(this, { [path]: alias }); return this; }; @@ -807,9 +954,12 @@ reserved.collection = 1; */ Schema.prototype.path = function(path, obj) { - // Convert to '.$' to check subpaths re: gh-6405 - const cleanPath = _pathToPositionalSyntax(path); if (obj === undefined) { + if (this.paths[path] != null) { + return this.paths[path]; + } + // Convert to '.$' to check subpaths re: gh-6405 + const cleanPath = _pathToPositionalSyntax(path); let schematype = _getPath(this, path, cleanPath); if (schematype != null) { return schematype; @@ -828,7 +978,7 @@ Schema.prototype.path = function(path, obj) { } // subpaths? - return /\.\d+\.?.*$/.test(path) + return hasNumericSubpathRegex.test(path) ? getPositionalPath(this, path) : undefined; } @@ -854,6 +1004,9 @@ Schema.prototype.path = function(path, obj) { let fullPath = ''; for (const sub of subpaths) { + if (utils.specialProperties.has(sub)) { + throw new Error('Cannot set special property `' + sub + '` on a schema'); + } fullPath = fullPath += (fullPath.length > 0 ? '.' : '') + sub; if (!branch[sub]) { this.nested[fullPath] = true; @@ -1084,6 +1237,7 @@ Schema.prototype.interpretAsType = function(path, obj, options) { // If this schema has an associated Mongoose object, use the Mongoose object's // copy of SchemaTypes re: gh-7158 gh-6933 const MongooseTypes = this.base != null ? this.base.Schema.Types : Schema.Types; + const Types = this.base != null ? this.base.Types : require('./types'); if (!utils.isPOJO(obj) && !(obj instanceof SchemaTypeOptions)) { const constructorName = utils.getFunctionName(obj.constructor); @@ -1161,6 +1315,9 @@ Schema.prototype.interpretAsType = function(path, obj, options) { if (options.hasOwnProperty('strict')) { childSchemaOptions.strict = options.strict; } + if (options.hasOwnProperty('strictQuery')) { + childSchemaOptions.strictQuery = options.strictQuery; + } if (this._userProvidedOptions.hasOwnProperty('_id')) { childSchemaOptions._id = this._userProvidedOptions._id; @@ -1218,6 +1375,10 @@ Schema.prototype.interpretAsType = function(path, obj, options) { name = 'Buffer'; } else if (typeof type === 'function' || typeof type === 'object') { name = type.schemaName || utils.getFunctionName(type); + } else if (type === Types.ObjectId) { + name = 'ObjectId'; + } else if (type === Types.Decimal128) { + name = 'Decimal128'; } else { name = type == null ? '' + type : type.toString(); } @@ -1378,6 +1539,7 @@ Schema.prototype.indexedPaths = function indexedPaths() { * Given a path, returns whether it is a real, virtual, nested, or ad-hoc/undefined path. * * #### Example: + * * const s = new Schema({ name: String, nested: { foo: String } }); * s.virtual('foo').get(() => 42); * s.pathType('name'); // "real" @@ -1391,9 +1553,6 @@ Schema.prototype.indexedPaths = function indexedPaths() { */ Schema.prototype.pathType = function(path) { - // Convert to '.$' to check subpaths re: gh-6405 - const cleanPath = _pathToPositionalSyntax(path); - if (this.paths.hasOwnProperty(path)) { return 'real'; } @@ -1403,6 +1562,10 @@ Schema.prototype.pathType = function(path) { if (this.nested.hasOwnProperty(path)) { return 'nested'; } + + // Convert to '.$' to check subpaths re: gh-6405 + const cleanPath = _pathToPositionalSyntax(path); + if (this.subpaths.hasOwnProperty(cleanPath) || this.subpaths.hasOwnProperty(path)) { return 'real'; } @@ -1456,8 +1619,11 @@ Schema.prototype.setupTimestamp = function(timestamps) { return setupTimestamps(this, timestamps); }; -/*! +/** * ignore. Deprecated re: #6405 + * @param {Any} self + * @param {String} path + * @api private */ function getPositionalPathType(self, path) { @@ -1691,7 +1857,8 @@ Schema.prototype.post = function(name) { * * @param {Function} plugin The Plugin's callback * @param {Object} [opts] Options to pass to the plugin - * @see plugins + * @param {Boolean} [opts.deduplicate=false] If true, ignore duplicate plugins (same `fn` argument using `===`) + * @see plugins /docs/plugins.html * @api public */ @@ -1814,8 +1981,9 @@ Schema.prototype.static = function(name, fn) { * schema.index({ first: 1, last: -1 }) * * @param {Object} fields The Fields to index, with the order, available values: `1 | -1 | '2d' | '2dsphere' | 'geoHaystack' | 'hashed' | 'text'` - * @param {Object} [options] Options to pass to [MongoDB driver's `createIndex()` function](https://mongodb.github.io/node-mongodb-native/2.0/api/Collection.html#createIndex) + * @param {Object} [options] Options to pass to [MongoDB driver's `createIndex()` function](https://mongodb.github.io/node-mongodb-native/4.9/classes/Collection.html#createIndex) * @param {String | number} [options.expires=null] Mongoose-specific syntactic sugar, uses [ms](https://www.npmjs.com/package/ms) to convert `expires` option into seconds for the `expireAfterSeconds` in the above link. + * @param {String} [options.language_override=null] Tells mongodb to use the specified field instead of `language` for parsing text indexes. * @api public */ @@ -1842,7 +2010,7 @@ Schema.prototype.index = function(fields, options) { * * @param {String} key The name of the option to set the value to * @param {Object} [value] The value to set the option to, if not passed, the option will be reset to default - * @see Schema ./ + * @see Schema #schema_Schema * @api public */ @@ -1970,7 +2138,6 @@ Schema.prototype.virtual = function(name, options) { if (name instanceof VirtualType || getConstructorName(name) === 'VirtualType') { return this.virtual(name.path, name.options); } - options = new VirtualOptions(options); if (utils.hasUserDefinedProperty(options, ['ref', 'refPath'])) { @@ -1982,7 +2149,7 @@ Schema.prototype.virtual = function(name, options) { throw new Error('Reference virtuals require `foreignField` option'); } - this.pre('init', function(obj) { + this.pre('init', function virtualPreInit(obj) { if (mpath.has(name, obj)) { const _v = mpath.get(name, obj); if (!this.$$populatedVirtuals) { @@ -2150,6 +2317,38 @@ function _deletePath(schema, name) { delete branch[last]; } +/** + * Removes the given virtual or virtuals from the schema. + * + * @param {String|Array} path The virutal path(s) to remove. + * @returns {Schema} the Schema instance, or a mongoose error if the virtual does not exist. + * @api public + */ + +Schema.prototype.removeVirtual = function(path) { + if (typeof path === 'string') { + path = [path]; + } + if (Array.isArray(path)) { + for (const virtual of path) { + if (this.virtuals[virtual] == null) { + throw new MongooseError(`Attempting to remove virtual "${virtual}" that does not exist.`); + } + } + + for (const virtual of path) { + delete this.paths[virtual]; + delete this.virtuals[virtual]; + if (virtual.indexOf('.') !== -1) { + mpath.unset(virtual, this.tree); + } else { + delete this.tree[virtual]; + } + } + } + return this; +}; + /** * Loads an ES6 class into a schema. Maps [setters](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/set) + [getters](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get), [static methods](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/static), * and [instance methods](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes#Class_body_and_method_definitions) @@ -2189,9 +2388,11 @@ function _deletePath(schema, name) { * @param {Boolean} [virtualsOnly] if truthy, only pulls virtuals from the class, not methods or statics */ Schema.prototype.loadClass = function(model, virtualsOnly) { + // Stop copying when hit certain base classes if (model === Object.prototype || model === Function.prototype || - model.prototype.hasOwnProperty('$isMongooseModelPrototype')) { + model.prototype.hasOwnProperty('$isMongooseModelPrototype') || + model.prototype.hasOwnProperty('$isMongooseDocumentPrototype')) { return this; } @@ -2309,8 +2510,15 @@ Schema.prototype._getSchema = function(path) { if (p + 1 >= parts.length) { return foundschema.$__schemaType; } - const ret = search(parts.slice(p + 1), foundschema.$__schemaType.schema); - return ret; + + if (foundschema.$__schemaType instanceof MongooseTypes.Mixed) { + return foundschema.$__schemaType; + } + if (foundschema.$__schemaType.schema != null) { + // Map of docs + const ret = search(parts.slice(p + 1), foundschema.$__schemaType.schema); + return ret; + } } foundschema.$fullPath = resultPath.join('.'); @@ -2400,9 +2608,13 @@ function isArrayFilter(piece) { return piece.startsWith('$[') && piece.endsWith(']'); } -/*! +/** * Called by `compile()` _right before_ compiling. Good for making any changes to * the schema that should respect options set by plugins, like `id` + * @method _preCompile + * @memberOf Schema + * @instance + * @api private */ Schema.prototype._preCompile = function _preCompile() { diff --git a/food-ordering-app/server/node_modules/mongoose/lib/schema/DocumentArrayElement.js b/food-ordering-app/server/node_modules/mongoose/lib/schema/DocumentArrayElement.js new file mode 100644 index 000000000..a2fb9a44a --- /dev/null +++ b/food-ordering-app/server/node_modules/mongoose/lib/schema/DocumentArrayElement.js @@ -0,0 +1,100 @@ +/*! + * Module dependencies. + */ + +'use strict'; + +const MongooseError = require('../error/mongooseError'); +const SchemaType = require('../schematype'); +const SubdocumentPath = require('./SubdocumentPath'); +const getConstructor = require('../helpers/discriminator/getConstructor'); + +/** + * DocumentArrayElement SchemaType constructor. + * + * @param {String} path + * @param {Object} options + * @inherits SchemaType + * @api public + */ + +function DocumentArrayElement(path, options) { + this.$parentSchemaType = options && options.$parentSchemaType; + if (!this.$parentSchemaType) { + throw new MongooseError('Cannot create DocumentArrayElement schematype without a parent'); + } + delete options.$parentSchemaType; + + SchemaType.call(this, path, options, 'DocumentArrayElement'); + + this.$isMongooseDocumentArrayElement = true; +} + +/** + * This schema type's name, to defend against minifiers that mangle + * function names. + * + * @api public + */ +DocumentArrayElement.schemaName = 'DocumentArrayElement'; + +DocumentArrayElement.defaultOptions = {}; + +/*! + * Inherits from SchemaType. + */ +DocumentArrayElement.prototype = Object.create(SchemaType.prototype); +DocumentArrayElement.prototype.constructor = DocumentArrayElement; + +/** + * Casts `val` for DocumentArrayElement. + * + * @param {Object} value to cast + * @api private + */ + +DocumentArrayElement.prototype.cast = function(...args) { + return this.$parentSchemaType.cast(...args)[0]; +}; + +/** + * Casts contents for queries. + * + * @param {String} $cond + * @param {any} [val] + * @api private + */ + +DocumentArrayElement.prototype.doValidate = function(value, fn, scope, options) { + const Constructor = getConstructor(this.caster, value); + + if (value && !(value instanceof Constructor)) { + value = new Constructor(value, scope, null, null, options && options.index != null ? options.index : null); + } + + return SubdocumentPath.prototype.doValidate.call(this, value, fn, scope, options); +}; + +/** + * Clone the current SchemaType + * + * @return {DocumentArrayElement} The cloned instance + * @api private + */ + +DocumentArrayElement.prototype.clone = function() { + this.options.$parentSchemaType = this.$parentSchemaType; + const ret = SchemaType.prototype.clone.apply(this, arguments); + delete this.options.$parentSchemaType; + + ret.caster = this.caster; + ret.schema = this.schema; + + return ret; +}; + +/*! + * Module exports. + */ + +module.exports = DocumentArrayElement; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/schema/SubdocumentPath.js b/food-ordering-app/server/node_modules/mongoose/lib/schema/SubdocumentPath.js index 748abd8e9..9486a3022 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/schema/SubdocumentPath.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/schema/SubdocumentPath.js @@ -9,6 +9,7 @@ const EventEmitter = require('events').EventEmitter; const ObjectExpectedError = require('../error/objectExpected'); const SchemaSubdocumentOptions = require('../options/SchemaSubdocumentOptions'); const SchemaType = require('../schematype'); +const applyDefaults = require('../helpers/document/applyDefaults'); const $exists = require('./operators/exists'); const castToNumber = require('./operators/helpers').castToNumber; const discriminator = require('../helpers/model/discriminator'); @@ -16,6 +17,7 @@ const geospatial = require('./operators/geospatial'); const getConstructor = require('../helpers/discriminator/getConstructor'); const handleIdOption = require('../helpers/schema/handleIdOption'); const internalToObjectOptions = require('../options').internalToObjectOptions; +const isExclusive = require('../helpers/projection/isExclusive'); const utils = require('../utils'); let Subdocument; @@ -47,6 +49,7 @@ function SubdocumentPath(schema, path, options) { this.caster.prototype.$basePath = path; this.schema = schema; this.$isSingleNested = true; + this.base = schema.base; SchemaType.call(this, path, options, 'Embedded'); } @@ -106,10 +109,10 @@ function _createConstructor(schema, baseClass) { return _embedded; } -/*! +/** * Special case for when users use a common location schema to represent * locations for use with $geoWithin. - * https://docs.mongodb.org/manual/reference/operator/query/geoWithin/ + * https://www.mongodb.com/docs/manual/reference/operator/query/geoWithin/ * * @param {Object} val * @api private @@ -158,20 +161,23 @@ SubdocumentPath.prototype.cast = function(val, doc, init, priorVal, options) { let subdoc; // Only pull relevant selected paths and pull out the base path - const parentSelected = doc && doc.$__ && doc.$__.selected || {}; + const parentSelected = doc && doc.$__ && doc.$__.selected; const path = this.path; - const selected = Object.keys(parentSelected).reduce((obj, key) => { + const selected = parentSelected == null ? null : Object.keys(parentSelected).reduce((obj, key) => { if (key.startsWith(path + '.')) { obj = obj || {}; obj[key.substring(path.length + 1)] = parentSelected[key]; } return obj; }, null); - options = Object.assign({}, options, { priorDoc: priorVal }); if (init) { - subdoc = new Constructor(void 0, selected, doc); + subdoc = new Constructor(void 0, selected, doc, false, { defaults: false }); + delete subdoc.$__.defaults; subdoc.$init(val); + const exclude = isExclusive(selected); + applyDefaults(subdoc, selected, exclude); } else { + options = Object.assign({}, options, { priorDoc: priorVal }); if (Object.keys(val).length === 0) { return new Constructor({}, selected, doc, undefined, options); } @@ -280,6 +286,7 @@ SubdocumentPath.prototype.doValidateSync = function(value, scope, options) { * Adds a discriminator to this single nested subdocument. * * #### Example: + * * const shapeSchema = Schema({ name: String }, { discriminatorKey: 'kind' }); * const schema = Schema({ shape: shapeSchema }); * @@ -338,6 +345,14 @@ SubdocumentPath.defaultOptions = {}; SubdocumentPath.set = SchemaType.set; +/*! + * ignore + */ + +SubdocumentPath.prototype.toJSON = function toJSON() { + return { path: this.path, options: this.options }; +}; + /*! * ignore */ diff --git a/food-ordering-app/server/node_modules/mongoose/lib/schema/array.js b/food-ordering-app/server/node_modules/mongoose/lib/schema/array.js index 33218d3a0..ce5fc61cf 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/schema/array.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/schema/array.js @@ -229,7 +229,7 @@ SchemaArray.prototype.checkRequired = function checkRequired(value, doc) { * Adds an enum validator if this is an array of strings or numbers. Equivalent to * `SchemaString.prototype.enum()` or `SchemaNumber.prototype.enum()` * - * @param {String|Object} [args...] enumeration values + * @param {...String|Object} [args] enumeration values * @return {SchemaArray} this */ @@ -393,7 +393,8 @@ SchemaArray.prototype.cast = function(value, doc, init, prev, options) { return value; } - if (init || SchemaArray.options.castNonArrays) { + const castNonArraysOption = this.options.castNonArrays != null ? this.options.castNonArrays : SchemaArray.options.castNonArrays; + if (init || castNonArraysOption) { // gh-2442: if we're loading this from the db and its not an array, mark // the whole array as modified. if (!!doc && !!init) { @@ -447,10 +448,10 @@ SchemaArray.prototype._castForPopulate = function _castForPopulate(value, doc) { SchemaArray.prototype.$toObject = SchemaArray.prototype.toObject; /*! - * Ignore + * ignore */ -SchemaArray.prototype.discriminator = function(name, schema) { +SchemaArray.prototype.discriminator = function(...args) { let arr = this; while (arr.$isMongooseArray && !arr.$isMongooseDocumentArray) { arr = arr.casterConstructor; @@ -459,7 +460,7 @@ SchemaArray.prototype.discriminator = function(name, schema) { 'a document array, ' + this.path + ' is a plain array'); } } - return arr.discriminator(name, schema); + return arr.discriminator(...args); }; /*! @@ -556,17 +557,17 @@ function cast$all(val) { val = [val]; } - val = val.map(function(v) { + val = val.map((v) => { if (!utils.isObject(v)) { return v; } if (v.$elemMatch != null) { - return { $elemMatch: cast(this.casterConstructor.schema, v.$elemMatch) }; + return { $elemMatch: cast(this.casterConstructor.schema, v.$elemMatch, null, this && this.$$context) }; } const o = {}; o[this.path] = v; - return cast(this.casterConstructor.schema, o)[this.path]; + return cast(this.casterConstructor.schema, o, null, this && this.$$context)[this.path]; }, this); return this.castForQuery(val); @@ -597,10 +598,10 @@ function cast$elemMatch(val) { if (discriminatorKey != null && val[discriminatorKey] != null && discriminators[val[discriminatorKey]] != null) { - return cast(discriminators[val[discriminatorKey]], val); + return cast(discriminators[val[discriminatorKey]], val, null, this && this.$$context); } - return cast(this.casterConstructor.schema, val); + return cast(this.casterConstructor.schema, val, null, this && this.$$context); } const handle = SchemaArray.prototype.$conditionalHandlers = {}; @@ -621,7 +622,7 @@ function createLogicalQueryOperatorHandler(op) { const ret = []; for (const obj of val) { - ret.push(cast(this.casterConstructor.schema, obj)); + ret.push(cast(this.casterConstructor.schema, obj, null, this && this.$$context)); } return ret; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/schema/date.js b/food-ordering-app/server/node_modules/mongoose/lib/schema/date.js index 4edc76421..feafe4709 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/schema/date.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/schema/date.js @@ -355,9 +355,10 @@ SchemaDate.prototype.cast = function(value) { } }; -/*! +/** * Date Query casting. * + * @param {Any} val * @api private */ diff --git a/food-ordering-app/server/node_modules/mongoose/lib/schema/documentarray.js b/food-ordering-app/server/node_modules/mongoose/lib/schema/documentarray.js index ea35736cc..eb63ad759 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/schema/documentarray.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/schema/documentarray.js @@ -6,11 +6,11 @@ const ArrayType = require('./array'); const CastError = require('../error/cast'); +const DocumentArrayElement = require('./DocumentArrayElement'); const EventEmitter = require('events').EventEmitter; const SchemaDocumentArrayOptions = require('../options/SchemaDocumentArrayOptions'); const SchemaType = require('../schematype'); -const SubdocumentPath = require('./SubdocumentPath'); const discriminator = require('../helpers/model/discriminator'); const handleIdOption = require('../helpers/schema/handleIdOption'); const handleSpreadDoc = require('../helpers/document/handleSpreadDoc'); @@ -36,6 +36,13 @@ let Subdocument; */ function DocumentArrayPath(key, schema, options, schemaOptions) { + const schemaTypeIdOption = DocumentArrayPath.defaultOptions && + DocumentArrayPath.defaultOptions._id; + if (schemaTypeIdOption != null) { + schemaOptions = schemaOptions || {}; + schemaOptions._id = schemaTypeIdOption; + } + if (schemaOptions != null && schemaOptions._id != null) { schema = handleIdOption(schema, schemaOptions); } else if (options != null && options._id != null) { @@ -67,25 +74,14 @@ function DocumentArrayPath(key, schema, options, schemaOptions) { }); } - const parentSchemaType = this; - this.$embeddedSchemaType = new SchemaType(key + '.$', { + const $parentSchemaType = this; + this.$embeddedSchemaType = new DocumentArrayElement(key + '.$', { required: this && this.schemaOptions && - this.schemaOptions.required || false + this.schemaOptions.required || false, + $parentSchemaType }); - this.$embeddedSchemaType.cast = function(value, doc, init) { - return parentSchemaType.cast(value, doc, init)[0]; - }; - this.$embeddedSchemaType.doValidate = function(value, fn, scope, options) { - const Constructor = getConstructor(this.caster, value); - - if (value && !(value instanceof Constructor)) { - value = new Constructor(value, scope, null, null, options && options.index != null ? options.index : null); - } - return SubdocumentPath.prototype.doValidate.call(this, value, fn, scope, options); - }; - this.$embeddedSchemaType.$isMongooseDocumentArrayElement = true; this.$embeddedSchemaType.caster = this.Constructor; this.$embeddedSchemaType.schema = this.schema; } @@ -116,19 +112,19 @@ DocumentArrayPath.prototype.constructor = DocumentArrayPath; DocumentArrayPath.prototype.OptionsConstructor = SchemaDocumentArrayOptions; /*! - * Ignore + * ignore */ function _createConstructor(schema, options, baseClass) { Subdocument || (Subdocument = require('../types/ArraySubdocument')); // compile an embedded document for this schema - function EmbeddedDocument(_value, parentArray) { + function EmbeddedDocument() { Subdocument.apply(this, arguments); - if (parentArray == null || parentArray.getArrayParent() == null) { + if (this.__parentArray == null || this.__parentArray.getArrayParent() == null) { return; } - this.$session(parentArray.getArrayParent().$session()); + this.$session(this.__parentArray.getArrayParent().$session()); } schema._preCompile(); @@ -140,6 +136,7 @@ function _createConstructor(schema, options, baseClass) { EmbeddedDocument.prototype.constructor = EmbeddedDocument; EmbeddedDocument.$isArraySubdocument = true; EmbeddedDocument.events = new EventEmitter(); + EmbeddedDocument.base = schema.base; // apply methods for (const i in schema.methods) { @@ -164,6 +161,7 @@ function _createConstructor(schema, options, baseClass) { * Adds a discriminator to this document array. * * #### Example: + * * const shapeSchema = Schema({ name: String }, { discriminatorKey: 'kind' }); * const schema = Schema({ shapes: [shapeSchema] }); * @@ -342,7 +340,7 @@ DocumentArrayPath.prototype.doValidateSync = function(array, scope, options) { * ignore */ -DocumentArrayPath.prototype.getDefault = function(scope) { +DocumentArrayPath.prototype.getDefault = function(scope, init, options) { let ret = typeof this.defaultValue === 'function' ? this.defaultValue.call(scope) : this.defaultValue; @@ -351,6 +349,10 @@ DocumentArrayPath.prototype.getDefault = function(scope) { return ret; } + if (options && options.skipCast) { + return ret; + } + // lazy load MongooseDocumentArray || (MongooseDocumentArray = require('../types/DocumentArray')); @@ -379,7 +381,7 @@ DocumentArrayPath.prototype.getDefault = function(scope) { }; const _toObjectOptions = Object.freeze({ transform: false, virtuals: false }); -const initDocumentOptions = Object.freeze({ skipId: true, willInit: true }); +const initDocumentOptions = Object.freeze({ skipId: false, willInit: true }); /** * Casts contents @@ -403,6 +405,8 @@ DocumentArrayPath.prototype.cast = function(value, doc, init, prev, options) { options = options || {}; + const path = options.path || this.path; + if (!Array.isArray(value)) { if (!init && !DocumentArrayPath.options.castNonArrays) { throw new CastError('DocumentArray', value, this.path, null, this); @@ -410,7 +414,7 @@ DocumentArrayPath.prototype.cast = function(value, doc, init, prev, options) { // gh-2442 mark whole array as modified if we're initializing a doc from // the db and the path isn't an array in the document if (!!doc && init) { - doc.markModified(this.path); + doc.markModified(path); } return this.cast([value], doc, init, prev, options); } @@ -418,7 +422,7 @@ DocumentArrayPath.prototype.cast = function(value, doc, init, prev, options) { // We need to create a new array, otherwise change tracking will // update the old doc (gh-4449) if (!options.skipDocumentArrayCast || utils.isMongooseDocumentArray(value)) { - value = new MongooseDocumentArray(value, this.path, doc); + value = new MongooseDocumentArray(value, path, doc); } if (prev != null) { @@ -426,7 +430,7 @@ DocumentArrayPath.prototype.cast = function(value, doc, init, prev, options) { } if (options.arrayPathIndex != null) { - value[arrayPathSymbol] = this.path + '.' + options.arrayPathIndex; + value[arrayPathSymbol] = path + '.' + options.arrayPathIndex; } const rawArray = utils.isMongooseDocumentArray(value) ? value.__array : value; @@ -439,19 +443,9 @@ DocumentArrayPath.prototype.cast = function(value, doc, init, prev, options) { const Constructor = getConstructor(this.casterConstructor, rawArray[i]); - // Check if the document has a different schema (re gh-3701) - if (rawArray[i].$__ != null && !(rawArray[i] instanceof Constructor)) { - const spreadDoc = handleSpreadDoc(rawArray[i], true); - if (rawArray[i] !== spreadDoc) { - rawArray[i] = spreadDoc; - } else { - rawArray[i] = rawArray[i].toObject({ - transform: false, - // Special case: if different model, but same schema, apply virtuals - // re: gh-7898 - virtuals: rawArray[i].schema === Constructor.schema - }); - } + const spreadDoc = handleSpreadDoc(rawArray[i], true); + if (rawArray[i] !== spreadDoc) { + rawArray[i] = spreadDoc; } if (rawArray[i] instanceof Subdocument) { @@ -532,13 +526,14 @@ DocumentArrayPath.prototype.applyGetters = function(value, scope) { return SchemaType.prototype.applyGetters.call(this, value, scope); }; -/*! +/** * Scopes paths selected in a query to this array. * Necessary for proper default application of subdocument values. * * @param {DocumentArrayPath} array the array to scope `fields` paths * @param {Object|undefined} fields the root fields selected in the query * @param {Boolean|undefined} init if we are being created part of a query result + * @api private */ function scopePaths(array, fields, init) { diff --git a/food-ordering-app/server/node_modules/mongoose/lib/schema/index.js b/food-ordering-app/server/node_modules/mongoose/lib/schema/index.js index 999bef7c6..f3eb9851e 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/schema/index.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/schema/index.js @@ -29,6 +29,8 @@ exports.Decimal128 = exports.Decimal = require('./decimal128'); exports.Map = require('./map'); +exports.UUID = require('./uuid'); + // alias exports.Oid = exports.ObjectId; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/schema/operators/helpers.js b/food-ordering-app/server/node_modules/mongoose/lib/schema/operators/helpers.js index a17951cd7..4690ca3c5 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/schema/operators/helpers.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/schema/operators/helpers.js @@ -7,14 +7,14 @@ const SchemaNumber = require('../number'); /*! - * @ignore + * ignore */ exports.castToNumber = castToNumber; exports.castArraysOfNumbers = castArraysOfNumbers; /*! - * @ignore + * ignore */ function castToNumber(val) { diff --git a/food-ordering-app/server/node_modules/mongoose/lib/schema/operators/text.js b/food-ordering-app/server/node_modules/mongoose/lib/schema/operators/text.js index 4b959168d..79be4ff7c 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/schema/operators/text.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/schema/operators/text.js @@ -4,18 +4,18 @@ const CastError = require('../../error/cast'); const castBoolean = require('../../cast/boolean'); const castString = require('../../cast/string'); -/*! +/** * Casts val to an object suitable for `$text`. Throws an error if the object * can't be casted. * * @param {Any} val value to cast * @param {String} [path] path to associate with any errors that occured * @return {Object} casted object - * @see https://docs.mongodb.com/manual/reference/operator/query/text/ + * @see https://www.mongodb.com/docs/manual/reference/operator/query/text/ * @api private */ -module.exports = function(val, path) { +module.exports = function castTextSearch(val, path) { if (val == null || typeof val !== 'object') { throw new CastError('$text', val, path); } diff --git a/food-ordering-app/server/node_modules/mongoose/lib/schema/string.js b/food-ordering-app/server/node_modules/mongoose/lib/schema/string.js index 3febba9c5..d58d4797f 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/schema/string.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/schema/string.js @@ -199,7 +199,7 @@ SchemaString.checkRequired = SchemaType.checkRequired; * m.save(callback) // success * }) * - * @param {String|Object} [args...] enumeration values + * @param {...String|Object} [args] enumeration values * @return {SchemaType} this * @see Customized Error Messages #error_messages_MongooseError-messages * @api public @@ -254,7 +254,7 @@ SchemaString.prototype.enum = function() { }; /** - * Adds a lowercase [setter](https://mongoosejs.com/docs/api.html#schematype_SchemaType-set). + * Adds a lowercase [setter](https://mongoosejs.com/docs/api/schematype.html#schematype_SchemaType-set). * * #### Example: * @@ -267,6 +267,7 @@ SchemaString.prototype.enum = function() { * Note that `lowercase` does **not** affect regular expression queries: * * #### Example: + * * // Still queries for documents whose `email` matches the regular * // expression /SomeEmail/. Mongoose does **not** convert the RegExp * // to lowercase. @@ -292,7 +293,7 @@ SchemaString.prototype.lowercase = function(shouldApply) { }; /** - * Adds an uppercase [setter](https://mongoosejs.com/docs/api.html#schematype_SchemaType-set). + * Adds an uppercase [setter](https://mongoosejs.com/docs/api/schematype.html#schematype_SchemaType-set). * * #### Example: * @@ -305,6 +306,7 @@ SchemaString.prototype.lowercase = function(shouldApply) { * Note that `uppercase` does **not** affect regular expression queries: * * #### Example: + * * // Mongoose does **not** convert the RegExp to uppercase. * M.find({ email: /an example/ }); * @@ -328,7 +330,7 @@ SchemaString.prototype.uppercase = function(shouldApply) { }; /** - * Adds a trim [setter](https://mongoosejs.com/docs/api.html#schematype_SchemaType-set). + * Adds a trim [setter](https://mongoosejs.com/docs/api/schematype.html#schematype_SchemaType-set). * * The string value will be [trimmed](https://masteringjs.io/tutorials/fundamentals/trim-string) when set. * @@ -347,6 +349,7 @@ SchemaString.prototype.uppercase = function(shouldApply) { * Note that `trim` does **not** affect regular expression queries: * * #### Example: + * * // Mongoose does **not** trim whitespace from the RegExp. * M.find({ name: / some name / }); * diff --git a/food-ordering-app/server/node_modules/mongoose/lib/schema/uuid.js b/food-ordering-app/server/node_modules/mongoose/lib/schema/uuid.js new file mode 100644 index 000000000..839c27dfa --- /dev/null +++ b/food-ordering-app/server/node_modules/mongoose/lib/schema/uuid.js @@ -0,0 +1,334 @@ +/*! + * Module dependencies. + */ + +'use strict'; + +const MongooseBuffer = require('../types/buffer'); +const SchemaType = require('../schematype'); +const CastError = SchemaType.CastError; +const utils = require('../utils'); +const handleBitwiseOperator = require('./operators/bitwise'); + +const UUID_FORMAT = /[0-9a-f]{8}-[0-9a-f]{4}-[0-9][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i; +const Binary = MongooseBuffer.Binary; + +/** + * Helper function to convert the input hex-string to a buffer + * @param {String} hex The hex string to convert + * @returns {Buffer} The hex as buffer + * @api private + */ + +function hex2buffer(hex) { + // use buffer built-in function to convert from hex-string to buffer + const buff = hex != null && Buffer.from(hex, 'hex'); + return buff; +} + +/** + * Helper function to convert the buffer input to a string + * @param {Buffer} buf The buffer to convert to a hex-string + * @returns {String} The buffer as a hex-string + * @api private + */ + +function binary2hex(buf) { + // use buffer built-in function to convert from buffer to hex-string + const hex = buf != null && buf.toString('hex'); + return hex; +} + +/** + * Convert a String to Binary + * @param {String} uuidStr The value to process + * @returns {MongooseBuffer} The binary to store + * @api private + */ + +function stringToBinary(uuidStr) { + // Protect against undefined & throwing err + if (typeof uuidStr !== 'string') uuidStr = ''; + const hex = uuidStr.replace(/[{}-]/g, ''); // remove extra characters + const bytes = hex2buffer(hex); + const buff = new MongooseBuffer(bytes); + buff._subtype = 4; + + return buff; +} + +/** + * Convert binary to a uuid string + * @param {Buffer|Binary|String} uuidBin The value to process + * @returns {String} The completed uuid-string + * @api private + */ +function binaryToString(uuidBin) { + // i(hasezoey) dont quite know why, but "uuidBin" may sometimes also be the already processed string + let hex; + if (typeof uuidBin !== 'string' && uuidBin != null) { + hex = binary2hex(uuidBin); + const uuidStr = hex.substring(0, 8) + '-' + hex.substring(8, 8 + 4) + '-' + hex.substring(12, 12 + 4) + '-' + hex.substring(16, 16 + 4) + '-' + hex.substring(20, 20 + 12); + return uuidStr; + } + return uuidBin; +} + +/** + * UUIDv1 SchemaType constructor. + * + * @param {String} key + * @param {Object} options + * @inherits SchemaType + * @api public + */ + +function SchemaUUID(key, options) { + SchemaType.call(this, key, options, 'UUID'); + this.getters.push(function(value) { + // For populated + if (value != null && value.$__ != null) { + return value; + } + return binaryToString(value); + }); +} + +/** + * This schema type's name, to defend against minifiers that mangle + * function names. + * + * @api public + */ +SchemaUUID.schemaName = 'UUID'; + +SchemaUUID.defaultOptions = {}; + +/*! + * Inherits from SchemaType. + */ +SchemaUUID.prototype = Object.create(SchemaType.prototype); +SchemaUUID.prototype.constructor = SchemaUUID; + +/*! + * ignore + */ + +SchemaUUID._cast = function(value) { + if (value == null) { + return value; + } + + function newBuffer(initbuff) { + const buff = new MongooseBuffer(initbuff); + buff._subtype = 4; + return buff; + } + + if (typeof value === 'string') { + if (UUID_FORMAT.test(value)) { + return stringToBinary(value); + } else { + throw new CastError(SchemaUUID.schemaName, value, this.path); + } + } + + if (Buffer.isBuffer(value)) { + return newBuffer(value); + } + + if (value instanceof Binary) { + return newBuffer(value.value(true)); + } + + // Re: gh-647 and gh-3030, we're ok with casting using `toString()` + // **unless** its the default Object.toString, because "[object Object]" + // doesn't really qualify as useful data + if (value.toString && value.toString !== Object.prototype.toString) { + if (UUID_FORMAT.test(value.toString())) { + return stringToBinary(value.toString()); + } + } + + throw new CastError(SchemaUUID.schemaName, value, this.path); +}; + +/** + * Sets a default option for all UUID instances. + * + * #### Example: + * + * // Make all UUIDs have `required` of true by default. + * mongoose.Schema.UUID.set('required', true); + * + * const User = mongoose.model('User', new Schema({ test: mongoose.UUID })); + * new User({ }).validateSync().errors.test.message; // Path `test` is required. + * + * @param {String} option The option you'd like to set the value for + * @param {Any} value value for option + * @return {undefined} + * @function set + * @static + * @api public + */ + +SchemaUUID.set = SchemaType.set; + +/** + * Get/set the function used to cast arbitrary values to UUIDs. + * + * #### Example: + * + * // Make Mongoose refuse to cast UUIDs with 0 length + * const original = mongoose.Schema.Types.UUID.cast(); + * mongoose.UUID.cast(v => { + * assert.ok(typeof v === "string" && v.length > 0); + * return original(v); + * }); + * + * // Or disable casting entirely + * mongoose.UUID.cast(false); + * + * @param {Function} [caster] + * @return {Function} + * @function get + * @static + * @api public + */ + +SchemaUUID.cast = function cast(caster) { + if (arguments.length === 0) { + return this._cast; + } + if (caster === false) { + caster = this._defaultCaster; + } + this._cast = caster; + + return this._cast; +}; + +/*! + * ignore + */ + +SchemaUUID._checkRequired = v => v != null; + +/** + * Override the function the required validator uses to check whether a string + * passes the `required` check. + * + * @param {Function} fn + * @return {Function} + * @function checkRequired + * @static + * @api public + */ + +SchemaUUID.checkRequired = SchemaType.checkRequired; + +/** + * Check if the given value satisfies a required validator. + * + * @param {Any} value + * @return {Boolean} + * @api public + */ + +SchemaUUID.prototype.checkRequired = function checkRequired(value) { + if (Buffer.isBuffer(value)) { + value = binaryToString(value); + } + return value != null && UUID_FORMAT.test(value); +}; + +/** + * Casts to UUID + * + * @param {Object} value + * @param {Object} doc + * @param {Boolean} init whether this is an initialization cast + * @api private + */ + +SchemaUUID.prototype.cast = function(value, doc, init) { + if (utils.isNonBuiltinObject(value) && + SchemaType._isRef(this, value, doc, init)) { + return this._castRef(value, doc, init); + } + + let castFn; + if (typeof this._castFunction === 'function') { + castFn = this._castFunction; + } else if (typeof this.constructor.cast === 'function') { + castFn = this.constructor.cast(); + } else { + castFn = SchemaUUID.cast(); + } + + try { + return castFn(value); + } catch (error) { + throw new CastError(SchemaUUID.schemaName, value, this.path, error, this); + } +}; + +/*! + * ignore + */ + +function handleSingle(val) { + return this.cast(val); +} + +/*! + * ignore + */ + +function handleArray(val) { + return val.map((m) => { + return this.cast(m); + }); +} + +SchemaUUID.prototype.$conditionalHandlers = +utils.options(SchemaType.prototype.$conditionalHandlers, { + $bitsAllClear: handleBitwiseOperator, + $bitsAnyClear: handleBitwiseOperator, + $bitsAllSet: handleBitwiseOperator, + $bitsAnySet: handleBitwiseOperator, + $all: handleArray, + $gt: handleSingle, + $gte: handleSingle, + $in: handleArray, + $lt: handleSingle, + $lte: handleSingle, + $ne: handleSingle, + $nin: handleArray +}); + +/** + * Casts contents for queries. + * + * @param {String} $conditional + * @param {any} val + * @api private + */ + +SchemaUUID.prototype.castForQuery = function($conditional, val) { + let handler; + if (arguments.length === 2) { + handler = this.$conditionalHandlers[$conditional]; + if (!handler) + throw new Error('Can\'t use ' + $conditional + ' with UUID.'); + return handler.call(this, val); + } else { + return this.cast($conditional); + } +}; + +/*! + * Module exports. + */ + +module.exports = SchemaUUID; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/schematype.js b/food-ordering-app/server/node_modules/mongoose/lib/schematype.js index 832aa15c4..ebd5dbc3c 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/schematype.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/schematype.js @@ -56,7 +56,7 @@ function SchemaType(path, options, instance) { const defaultOptionsKeys = Object.keys(defaultOptions); for (const option of defaultOptionsKeys) { - if (defaultOptions.hasOwnProperty(option) && !options.hasOwnProperty(option)) { + if (defaultOptions.hasOwnProperty(option) && !Object.prototype.hasOwnProperty.call(options, option)) { options[option] = defaultOptions[option]; } } @@ -124,8 +124,11 @@ function SchemaType(path, options, instance) { }); } -/*! +/** * The class that Mongoose uses internally to instantiate this SchemaType's `options` property. + * @memberOf SchemaType + * @instance + * @api private */ SchemaType.prototype.OptionsConstructor = SchemaTypeOptions; @@ -134,6 +137,7 @@ SchemaType.prototype.OptionsConstructor = SchemaTypeOptions; * The path to this SchemaType in a Schema. * * #### Example: + * * const schema = new Schema({ name: String }); * schema.path('name').path; // 'name' * @@ -148,6 +152,7 @@ SchemaType.prototype.path; * The validators that Mongoose should run to validate properties at this SchemaType's path. * * #### Example: + * * const schema = new Schema({ name: { type: String, required: true } }); * schema.path('name').validators.length; // 1, the `required` validator * @@ -162,6 +167,7 @@ SchemaType.prototype.validators; * True if this SchemaType has a required validator. False otherwise. * * #### Example: + * * const schema = new Schema({ name: { type: String, required: true } }); * schema.path('name').isRequired; // true * @@ -173,10 +179,13 @@ SchemaType.prototype.validators; * @memberOf SchemaType */ -SchemaType.prototype.validators; +SchemaType.prototype.isRequired; -/*! - * ignore +/** + * Split the current dottet path into segments + * + * @return {String[]|undefined} + * @api private */ SchemaType.prototype.splitPath = function() { @@ -351,8 +360,8 @@ SchemaType.get = function(getter) { * const m2 = new M; * console.log(m2.mixed); // { added: 1 } * - * @param {Function|any} val the default value - * @return {defaultValue} + * @param {Function|any} val The default value to set + * @return {Any|undefined} Returns the set default value. * @api public */ @@ -393,7 +402,7 @@ SchemaType.prototype.default = function(val) { * * #### Note: * - * _Indexes are created [in the background](https://docs.mongodb.com/manual/core/index-creation/#index-creation-background) + * _Indexes are created [in the background](https://www.mongodb.com/docs/manual/core/index-creation/#index-creation-background) * by default. If `background` is set to `false`, MongoDB will not execute any * read/write operations you send until the index build. * Specify `background: false` to override Mongoose's default._ @@ -414,7 +423,7 @@ SchemaType.prototype.index = function(options) { * * #### Example: * - * const s = new Schema({ name: { type: String, unique: true }}); + * const s = new Schema({ name: { type: String, unique: true } }); * s.path('name').index({ unique: true }); * * _NOTE: violating the constraint returns an `E11000` error from MongoDB when saving, not a Mongoose validation error._ @@ -452,8 +461,9 @@ SchemaType.prototype.unique = function(bool) { * * ### Example: * - * const s = new Schema({name : {type: String, text : true }) - * s.path('name').index({text : true}); + * const s = new Schema({ name : { type: String, text : true } }) + * s.path('name').index({ text : true }); + * * @param {Boolean} bool * @return {SchemaType} this * @api public @@ -462,7 +472,7 @@ SchemaType.prototype.unique = function(bool) { SchemaType.prototype.text = function(bool) { if (this._index === false) { if (!bool) { - return; + return this; } throw new Error('Path "' + this.path + '" may not have `index` set to ' + 'false and `text` set to true'); @@ -499,7 +509,7 @@ SchemaType.prototype.text = function(bool) { SchemaType.prototype.sparse = function(bool) { if (this._index === false) { if (!bool) { - return; + return this; } throw new Error('Path "' + this.path + '" may not have `index` set to ' + 'false and `sparse` set to true'); @@ -521,7 +531,7 @@ SchemaType.prototype.sparse = function(bool) { /** * Defines this path as immutable. Mongoose prevents you from changing - * immutable paths unless the parent document has [`isNew: true`](/docs/api.html#document_Document-isNew). + * immutable paths unless the parent document has [`isNew: true`](/docs/api/document.html#document_Document-isNew). * * #### Example: * @@ -558,7 +568,7 @@ SchemaType.prototype.sparse = function(bool) { * * @param {Boolean} bool * @return {SchemaType} this - * @see isNew /docs/api.html#document_Document-isNew + * @see isNew /docs/api/document.html#document_Document-isNew * @api public */ @@ -606,19 +616,17 @@ SchemaType.prototype.transform = function(fn) { * * #### Example: * - * ```javascript - * function capitalize (val) { - * if (typeof val !== 'string') val = ''; - * return val.charAt(0).toUpperCase() + val.substring(1); - * } + * function capitalize (val) { + * if (typeof val !== 'string') val = ''; + * return val.charAt(0).toUpperCase() + val.substring(1); + * } * - * // defining within the schema - * const s = new Schema({ name: { type: String, set: capitalize }}); + * // defining within the schema + * const s = new Schema({ name: { type: String, set: capitalize }}); * - * // or with the SchemaType - * const s = new Schema({ name: String }) - * s.path('name').set(capitalize); - * ``` + * // or with the SchemaType + * const s = new Schema({ name: String }) + * s.path('name').set(capitalize); * * Setters allow you to transform the data before it gets to the raw mongodb * document or query. @@ -630,76 +638,68 @@ SchemaType.prototype.transform = function(fn) { * * You can set up email lower case normalization easily via a Mongoose setter. * - * ```javascript - * function toLower(v) { - * return v.toLowerCase(); - * } + * function toLower(v) { + * return v.toLowerCase(); + * } * - * const UserSchema = new Schema({ - * email: { type: String, set: toLower } - * }); + * const UserSchema = new Schema({ + * email: { type: String, set: toLower } + * }); * - * const User = db.model('User', UserSchema); + * const User = db.model('User', UserSchema); * - * const user = new User({email: 'AVENUE@Q.COM'}); - * console.log(user.email); // 'avenue@q.com' + * const user = new User({email: 'AVENUE@Q.COM'}); + * console.log(user.email); // 'avenue@q.com' * - * // or - * const user = new User(); - * user.email = 'Avenue@Q.com'; - * console.log(user.email); // 'avenue@q.com' - * User.updateOne({ _id: _id }, { $set: { email: 'AVENUE@Q.COM' } }); // update to 'avenue@q.com' - * ``` + * // or + * const user = new User(); + * user.email = 'Avenue@Q.com'; + * console.log(user.email); // 'avenue@q.com' + * User.updateOne({ _id: _id }, { $set: { email: 'AVENUE@Q.COM' } }); // update to 'avenue@q.com' * * As you can see above, setters allow you to transform the data before it * stored in MongoDB, or before executing a query. * * _NOTE: we could have also just used the built-in `lowercase: true` SchemaType option instead of defining our own function._ * - * ```javascript - * new Schema({ email: { type: String, lowercase: true }}) - * ``` + * new Schema({ email: { type: String, lowercase: true }}) * * Setters are also passed a second argument, the schematype on which the setter was defined. This allows for tailored behavior based on options passed in the schema. * - * ```javascript - * function inspector (val, priorValue, schematype) { - * if (schematype.options.required) { - * return schematype.path + ' is required'; - * } else { - * return val; - * } - * } + * function inspector (val, priorValue, schematype) { + * if (schematype.options.required) { + * return schematype.path + ' is required'; + * } else { + * return val; + * } + * } * - * const VirusSchema = new Schema({ - * name: { type: String, required: true, set: inspector }, - * taxonomy: { type: String, set: inspector } - * }) + * const VirusSchema = new Schema({ + * name: { type: String, required: true, set: inspector }, + * taxonomy: { type: String, set: inspector } + * }) * - * const Virus = db.model('Virus', VirusSchema); - * const v = new Virus({ name: 'Parvoviridae', taxonomy: 'Parvovirinae' }); + * const Virus = db.model('Virus', VirusSchema); + * const v = new Virus({ name: 'Parvoviridae', taxonomy: 'Parvovirinae' }); * - * console.log(v.name); // name is required - * console.log(v.taxonomy); // Parvovirinae - * ``` + * console.log(v.name); // name is required + * console.log(v.taxonomy); // Parvovirinae * * You can also use setters to modify other properties on the document. If * you're setting a property `name` on a document, the setter will run with * `this` as the document. Be careful, in mongoose 5 setters will also run * when querying by `name` with `this` as the query. * - * ```javascript - * const nameSchema = new Schema({ name: String, keywords: [String] }); - * nameSchema.path('name').set(function(v) { - * // Need to check if `this` is a document, because in mongoose 5 - * // setters will also run on queries, in which case `this` will be a - * // mongoose query object. - * if (this instanceof Document && v != null) { - * this.keywords = v.split(' '); - * } - * return v; - * }); - * ``` + * const nameSchema = new Schema({ name: String, keywords: [String] }); + * nameSchema.path('name').set(function(v) { + * // Need to check if `this` is a document, because in mongoose 5 + * // setters will also run on queries, in which case `this` will be a + * // mongoose query object. + * if (this instanceof Document && v != null) { + * this.keywords = v.split(' '); + * } + * return v; + * }); * * @param {Function} fn * @return {SchemaType} this @@ -793,7 +793,7 @@ SchemaType.prototype.get = function(fn) { * * The error message argument is optional. If not passed, the [default generic error message template](#error_messages_MongooseError-messages) will be used. * - * #### Examples: + * #### Example: * * // make sure every value is equal to "something" * function validator (val) { @@ -824,7 +824,7 @@ SchemaType.prototype.get = function(fn) { * From the examples above, you may have noticed that error messages support * basic templating. There are a few other template keywords besides `{PATH}` * and `{VALUE}` too. To find out more, details are available - * [here](#error_messages_MongooseError.messages). + * [here](#error_messages_MongooseError-messages). * * If Mongoose's built-in error message templating isn't enough, Mongoose * supports setting the `message` property to a function. @@ -925,7 +925,7 @@ SchemaType.prototype.validate = function(obj, message, type) { if (!utils.isPOJO(arg)) { const msg = 'Invalid validator. Received (' + typeof arg + ') ' + arg - + '. See https://mongoosejs.com/docs/api.html#schematype_SchemaType-validate'; + + '. See https://mongoosejs.com/docs/api/schematype.html#schematype_SchemaType-validate'; throw new Error(msg); } @@ -993,9 +993,9 @@ SchemaType.prototype.validate = function(obj, message, type) { * @param {String} [message] optional custom error message * @return {SchemaType} this * @see Customized Error Messages #error_messages_MongooseError-messages - * @see SchemaArray#checkRequired #schema_array_SchemaArray.checkRequired + * @see SchemaArray#checkRequired #schema_array_SchemaArray-checkRequired * @see SchemaBoolean#checkRequired #schema_boolean_SchemaBoolean-checkRequired - * @see SchemaBuffer#checkRequired #schema_buffer_SchemaBuffer.schemaName + * @see SchemaBuffer#checkRequired #schema_buffer_SchemaBuffer-schemaName * @see SchemaNumber#checkRequired #schema_number_SchemaNumber-min * @see SchemaObjectId#checkRequired #schema_objectid_ObjectId-auto * @see SchemaString#checkRequired #schema_string_SchemaString-checkRequired @@ -1079,6 +1079,7 @@ SchemaType.prototype.required = function(required, message) { * looks at to determine the foreign collection it should query. * * #### Example: + * * const userSchema = new Schema({ name: String }); * const User = mongoose.model('User', userSchema); * @@ -1108,10 +1109,11 @@ SchemaType.prototype.ref = function(ref) { * * @param {Object} scope the scope which callback are executed * @param {Boolean} init + * @return {Any} The Stored default value. * @api private */ -SchemaType.prototype.getDefault = function(scope, init) { +SchemaType.prototype.getDefault = function(scope, init, options) { let ret; if (typeof this.defaultValue === 'function') { if ( @@ -1132,6 +1134,10 @@ SchemaType.prototype.getDefault = function(scope, init) { ret = utils.clone(ret); } + if (options && options.skipCast) { + return this._applySetters(ret, scope); + } + const casted = this.applySetters(ret, scope, init, undefined, setOptionsForDefaults); if (casted && !Array.isArray(casted) && casted.$isSingleNested) { casted.$__parent = scope; @@ -1141,9 +1147,15 @@ SchemaType.prototype.getDefault = function(scope, init) { return ret; }; -/*! +/** * Applies setters without casting * + * @param {Any} value + * @param {Any} scope + * @param {Boolean} init + * @param {Any} priorVal + * @param {Object} [options] + * @instance * @api private */ @@ -1175,6 +1187,7 @@ SchemaType.prototype._castNullish = function _castNullish(v) { * @param {Object} value * @param {Object} scope * @param {Boolean} init + * @return {Any} * @api private */ @@ -1195,6 +1208,7 @@ SchemaType.prototype.applySetters = function(value, scope, init, priorVal, optio * * @param {Object} value * @param {Object} scope + * @return {Any} * @api private */ @@ -1239,9 +1253,12 @@ SchemaType.prototype.select = function select(val) { /** * Performs a validation of `value` using the validators declared for this SchemaType. * - * @param {any} value + * @param {Any} value * @param {Function} callback * @param {Object} scope + * @param {Object} [options] + * @param {String} [options.path] + * @return {Any} If no validators, returns the output from calling `fn`, otherwise no return * @api public */ @@ -1270,10 +1287,11 @@ SchemaType.prototype.doValidate = function(value, fn, scope, options) { const validatorProperties = isSimpleValidator(v) ? Object.assign({}, v) : utils.clone(v); validatorProperties.path = options && options.path ? options.path : path; + validatorProperties.fullPath = this.$fullPath; validatorProperties.value = value; if (validator instanceof RegExp) { - validate(validator.test(value), validatorProperties); + validate(validator.test(value), validatorProperties, scope); continue; } @@ -1282,7 +1300,7 @@ SchemaType.prototype.doValidate = function(value, fn, scope, options) { } if (value === undefined && validator !== this.requiredValidator) { - validate(true, validatorProperties); + validate(true, validatorProperties, scope); continue; } @@ -1302,19 +1320,19 @@ SchemaType.prototype.doValidate = function(value, fn, scope, options) { if (ok != null && typeof ok.then === 'function') { ok.then( - function(ok) { validate(ok, validatorProperties); }, + function(ok) { validate(ok, validatorProperties, scope); }, function(error) { validatorProperties.reason = error; validatorProperties.message = error.message; ok = false; - validate(ok, validatorProperties); + validate(ok, validatorProperties, scope); }); } else { - validate(ok, validatorProperties); + validate(ok, validatorProperties, scope); } } - function validate(ok, validatorProperties) { + function validate(ok, validatorProperties, scope) { if (err) { return; } @@ -1326,7 +1344,7 @@ SchemaType.prototype.doValidate = function(value, fn, scope, options) { } } else { const ErrorConstructor = validatorProperties.ErrorConstructor || ValidatorError; - err = new ErrorConstructor(validatorProperties); + err = new ErrorConstructor(validatorProperties, scope); err[validatorErrorSymbol] = true; immediate(function() { fn(err); @@ -1352,9 +1370,11 @@ function _validate(ok, validatorProperties) { * * This method ignores the asynchronous validators. * - * @param {any} value + * @param {Any} value * @param {Object} scope - * @return {MongooseError|undefined} + * @param {Object} [options] + * @param {Object} [options.path] + * @return {MongooseError|null} * @api private */ @@ -1389,6 +1409,7 @@ SchemaType.prototype.doValidateSync = function(value, scope, options) { const validator = v.validator; const validatorProperties = isSimpleValidator(v) ? Object.assign({}, v) : utils.clone(v); validatorProperties.path = options && options.path ? options.path : path; + validatorProperties.fullPath = this.$fullPath; validatorProperties.value = value; let ok = false; @@ -1484,7 +1505,7 @@ SchemaType.prototype._castRef = function _castRef(value, doc, init) { } if (value.$__ != null) { - value.$__.wasPopulated = value.$__.wasPopulated || true; + value.$__.wasPopulated = value.$__.wasPopulated || { value: value._id }; return value; } @@ -1502,6 +1523,7 @@ SchemaType.prototype._castRef = function _castRef(value, doc, init) { const path = doc.$__fullPath(this.path, true); const owner = doc.ownerDocument(); const pop = owner.$populated(path, true); + let ret = value; if (!doc.$__.populated || !doc.$__.populated[path] || @@ -1509,7 +1531,7 @@ SchemaType.prototype._castRef = function _castRef(value, doc, init) { !doc.$__.populated[path].options.options || !doc.$__.populated[path].options.options.lean) { ret = new pop.options[populateModelSymbol](value); - ret.$__.wasPopulated = true; + ret.$__.wasPopulated = { value: ret._id }; } return ret; @@ -1537,9 +1559,10 @@ function handleArray(val) { }); } -/*! +/** * Just like handleArray, except also allows `[]` because surprisingly * `$in: [1, []]` works fine + * @api private */ function handle$in(val) { @@ -1569,8 +1592,11 @@ SchemaType.prototype.$conditionalHandlers = { $type: $type }; -/*! +/** * Wraps `castForQuery` to handle context + * @param {Object} params + * @instance + * @api private */ SchemaType.prototype.castForQueryWrapper = function(params) { @@ -1595,7 +1621,8 @@ SchemaType.prototype.castForQueryWrapper = function(params) { * Cast the given value with the given optional query operator. * * @param {String} [$conditional] query operator, like `$eq` or `$in` - * @param {any} val + * @param {Any} val + * @return {Any} * @api private */ @@ -1612,9 +1639,11 @@ SchemaType.prototype.castForQuery = function($conditional, val) { return this._castForQuery(val); }; -/*! +/** * Internal switch for runSetters * + * @param {Any} val + * @return {Any} * @api private */ @@ -1623,6 +1652,7 @@ SchemaType.prototype._castForQuery = function(val) { }; /** + * Set & Get the `checkRequired` function * Override the function the required validator uses to check whether a value * passes the `required` check. Override this on the individual SchemaType. * @@ -1631,8 +1661,8 @@ SchemaType.prototype._castForQuery = function(val) { * // Use this to allow empty strings to pass the `required` validator * mongoose.Schema.Types.String.checkRequired(v => typeof v === 'string'); * - * @param {Function} fn - * @return {Function} + * @param {Function} [fn] If set, will overwrite the current set function + * @return {Function} The input `fn` or the already set function * @static * @memberOf SchemaType * @function checkRequired @@ -1650,7 +1680,8 @@ SchemaType.checkRequired = function(fn) { /** * Default check for if this path satisfies the `required` validator. * - * @param {any} val + * @param {Any} val + * @return {Boolean} `true` when the value is not `null`, `false` otherwise * @api private */ @@ -1658,8 +1689,11 @@ SchemaType.prototype.checkRequired = function(val) { return val != null; }; -/*! - * ignore +/** + * Clone the current SchemaType + * + * @return {SchemaType} The cloned SchemaType instance + * @api private */ SchemaType.prototype.clone = function() { diff --git a/food-ordering-app/server/node_modules/mongoose/lib/statemachine.js b/food-ordering-app/server/node_modules/mongoose/lib/statemachine.js index 43da62812..70b1beca6 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/statemachine.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/statemachine.js @@ -7,7 +7,7 @@ const utils = require('./utils'); // eslint-disable-line no-unused-vars -/*! +/** * StateMachine represents a minimal `interface` for the * constructors it builds via StateMachine.ctor(...). * @@ -17,7 +17,7 @@ const utils = require('./utils'); // eslint-disable-line no-unused-vars const StateMachine = module.exports = exports = function StateMachine() { }; -/*! +/** * StateMachine.ctor('state1', 'state2', ...) * A factory method for subclassing StateMachine. * The arguments are a list of states. For each state, @@ -28,7 +28,7 @@ const StateMachine = module.exports = exports = function StateMachine() { * @param {String} state * @param {String} [state] * @return {Function} subclass constructor - * @private + * @api private */ StateMachine.ctor = function() { @@ -38,19 +38,12 @@ StateMachine.ctor = function() { StateMachine.apply(this, arguments); this.paths = {}; this.states = {}; - this.stateNames = states; - - let i = states.length, - state; - - while (i--) { - state = states[i]; - this.states[state] = {}; - } }; ctor.prototype = new StateMachine(); + ctor.prototype.stateNames = states; + states.forEach(function(state) { // Changes the `path`'s state to `state`. ctor.prototype[state] = function(path) { @@ -61,7 +54,7 @@ StateMachine.ctor = function() { return ctor; }; -/*! +/** * This function is wrapped by the state change functions: * * - `require(path)` @@ -76,6 +69,7 @@ StateMachine.prototype._changeState = function _changeState(path, nextState) { if (prevBucket) delete prevBucket[path]; this.paths[path] = nextState; + this.states[nextState] = this.states[nextState] || {}; this.states[nextState][path] = true; }; @@ -84,6 +78,9 @@ StateMachine.prototype._changeState = function _changeState(path, nextState) { */ StateMachine.prototype.clear = function clear(state) { + if (this.states[state] == null) { + return; + } const keys = Object.keys(this.states[state]); let i = keys.length; let path; @@ -108,23 +105,38 @@ StateMachine.prototype.clearPath = function clearPath(path) { delete this.states[state][path]; }; -/*! +/** + * Gets the paths for the given state, or empty object `{}` if none. + * @api private + */ + +StateMachine.prototype.getStatePaths = function getStatePaths(state) { + if (this.states[state] != null) { + return this.states[state]; + } + return {}; +}; + +/** * Checks to see if at least one path is in the states passed in via `arguments` * e.g., this.some('required', 'inited') * * @param {String} state that we want to check for. - * @private + * @api private */ StateMachine.prototype.some = function some() { const _this = this; const what = arguments.length ? arguments : this.stateNames; return Array.prototype.some.call(what, function(state) { + if (_this.states[state] == null) { + return false; + } return Object.keys(_this.states[state]).length; }); }; -/*! +/** * This function builds the functions that get assigned to `forEach` and `map`, * since both of those methods share a lot of the same logic. * @@ -143,6 +155,9 @@ StateMachine.prototype._iter = function _iter(iterMethod) { const _this = this; const paths = states.reduce(function(paths, state) { + if (_this.states[state] == null) { + return paths; + } return paths.concat(Object.keys(_this.states[state])); }, []); @@ -152,7 +167,7 @@ StateMachine.prototype._iter = function _iter(iterMethod) { }; }; -/*! +/** * Iterates over the paths that belong to one of the parameter states. * * The function profile can look like: @@ -163,7 +178,7 @@ StateMachine.prototype._iter = function _iter(iterMethod) { * @param {String} [state] * @param {String} [state] * @param {Function} callback - * @private + * @api private */ StateMachine.prototype.forEach = function forEach() { @@ -171,7 +186,7 @@ StateMachine.prototype.forEach = function forEach() { return this.forEach.apply(this, arguments); }; -/*! +/** * Maps over the paths that belong to one of the parameter states. * * The function profile can look like: @@ -183,7 +198,7 @@ StateMachine.prototype.forEach = function forEach() { * @param {String} [state] * @param {Function} callback * @return {Array} - * @private + * @api private */ StateMachine.prototype.map = function map() { diff --git a/food-ordering-app/server/node_modules/mongoose/lib/types/ArraySubdocument.js b/food-ordering-app/server/node_modules/mongoose/lib/types/ArraySubdocument.js index b5118c9c9..af0bdd0d4 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/types/ArraySubdocument.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/types/ArraySubdocument.js @@ -10,12 +10,14 @@ const utils = require('../utils'); const documentArrayParent = require('../helpers/symbols').documentArrayParent; -/*! +/** * A constructor. * * @param {Object} obj js object returned from the db * @param {MongooseDocumentArray} parentArr the parent array of this document * @param {Boolean} skipId + * @param {Object} fields + * @param {Number} index * @inherits Document * @api private */ @@ -125,13 +127,17 @@ ArraySubdocument.prototype.$__fullPath = function(path, skipIndex) { this.$__.fullPath + '.' + this.__index; }; -/*! +/** * Given a path relative to this document, return the path relative * to the top-level document. + * @method $__pathRelativeToParent + * @memberOf ArraySubdocument + * @instance + * @api private */ ArraySubdocument.prototype.$__pathRelativeToParent = function(path, skipIndex) { - if (this.__index == null) { + if (this.__index == null || (!this.__parentArray || !this.__parentArray.$path)) { return null; } if (skipIndex) { @@ -143,8 +149,12 @@ ArraySubdocument.prototype.$__pathRelativeToParent = function(path, skipIndex) { return this.__parentArray.$path() + '.' + this.__index + '.' + path; }; -/*! +/** * Returns this sub-documents parent document. + * @method $parent + * @memberOf ArraySubdocument + * @instance + * @api public */ ArraySubdocument.prototype.$parent = function() { diff --git a/food-ordering-app/server/node_modules/mongoose/lib/types/DocumentArray/index.js b/food-ordering-app/server/node_modules/mongoose/lib/types/DocumentArray/index.js index 4730a311a..4877f1a30 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/types/DocumentArray/index.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/types/DocumentArray/index.js @@ -57,7 +57,7 @@ function MongooseDocumentArray(values, path, doc) { // to make more proof against unusual node environments if (doc && doc instanceof Document) { internals[arrayParentSymbol] = doc; - internals[arraySchemaSymbol] = doc.schema.path(path); + internals[arraySchemaSymbol] = doc.$__schema.path(path); // `schema.path()` doesn't drill into nested arrays properly yet, see // gh-6398, gh-6602. This is a workaround because nested arrays are diff --git a/food-ordering-app/server/node_modules/mongoose/lib/types/DocumentArray/methods/index.js b/food-ordering-app/server/node_modules/mongoose/lib/types/DocumentArray/methods/index.js index 66c55678a..4175901d3 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/types/DocumentArray/methods/index.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/types/DocumentArray/methods/index.js @@ -181,7 +181,7 @@ const methods = { /** * Wraps [`Array#push`](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/push) with proper change tracking. * - * @param {Object} [args...] + * @param {...Object} [args] * @api public * @method push * @memberOf MongooseDocumentArray @@ -198,7 +198,7 @@ const methods = { /** * Pulls items from the array atomically. * - * @param {Object} [args...] + * @param {...Object} [args] * @api public * @method pull * @memberOf MongooseDocumentArray @@ -212,8 +212,9 @@ const methods = { return ret; }, - /*! + /** * Wraps [`Array#shift`](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/unshift) with proper change tracking. + * @api private */ shift() { @@ -224,8 +225,9 @@ const methods = { return ret; }, - /*! + /** * Wraps [`Array#splice`](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/splice) with proper change tracking and casting. + * @api private */ splice() { @@ -355,10 +357,12 @@ const methods = { module.exports = methods; -/*! +/** * If this is a document array, each element may contain single * populated paths, so we need to modify the top-level document's * populated cache. See gh-8247, gh-8265. + * @param {Array} arr + * @api private */ function _updateParentPopulated(arr) { diff --git a/food-ordering-app/server/node_modules/mongoose/lib/types/array/index.js b/food-ordering-app/server/node_modules/mongoose/lib/types/array/index.js index 74a03fab4..41e8399be 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/types/array/index.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/types/array/index.js @@ -24,7 +24,7 @@ const arraySchemaSymbol = require('../../helpers/symbols').arraySchemaSymbol; * @param {String} path * @param {Document} doc parent document * @api private - * @inherits Array + * @inherits Array https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array * @see https://bit.ly/f6CnZU */ const _basePush = Array.prototype.push; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/types/array/methods/index.js b/food-ordering-app/server/node_modules/mongoose/lib/types/array/methods/index.js index 9de796d8a..45c88a9b2 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/types/array/methods/index.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/types/array/methods/index.js @@ -2,9 +2,9 @@ const Document = require('../../../document'); const ArraySubdocument = require('../../ArraySubdocument'); -const MongooseError = require('../../../error/mongooseError'); const cleanModifiedSubpaths = require('../../../helpers/document/cleanModifiedSubpaths'); const internalToObjectOptions = require('../../../options').internalToObjectOptions; +const mpath = require('mpath'); const utils = require('../../../utils'); const isBsonType = require('../../../helpers/isBsonType'); @@ -136,12 +136,13 @@ const methods = { this._markModified(); // only allow shifting once - if (this._shifted) { + const __array = this.__array; + if (__array._shifted) { return; } - this._shifted = true; + __array._shifted = true; - return [].shift.call(this); + return [].shift.call(__array); }, /** @@ -341,8 +342,23 @@ const methods = { const pullOp = atomics['$pull'] || (atomics['$pull'] = {}); if (val[0] instanceof ArraySubdocument) { selector = pullOp['$or'] || (pullOp['$or'] = []); - Array.prototype.push.apply(selector, val.map(function(v) { - return v.toObject({ transform: false, virtuals: false }); + Array.prototype.push.apply(selector, val.map(v => { + return v.toObject({ + transform: (doc, ret) => { + if (v == null || v.$__ == null) { + return ret; + } + + Object.keys(v.$__.activePaths.getStatePaths('default')).forEach(path => { + mpath.unset(path, ret); + + _minimizePath(ret, path); + }); + + return ret; + }, + virtuals: false + }); })); } else { selector = pullOp['_id'] || (pullOp['_id'] = { $in: [] }); @@ -372,7 +388,7 @@ const methods = { * console.log(doc.array) // [2,3,4,5] * console.log(added) // [5] * - * @param {any} [args...] + * @param {...any} [args] * @return {Array} the values that were added * @memberOf MongooseArray * @api public @@ -502,7 +518,7 @@ const methods = { * * _marks the entire array as modified, which if saved, will store it as a `$set` operation, potentially overwritting any changes that happen between when you retrieved the object and when you save it._ * - * @param {any} [args...] + * @param {...any} [args] * @api public * @method nonAtomicPush * @memberOf MongooseArray @@ -539,9 +555,9 @@ const methods = { /** * Pulls items from the array atomically. Equality is determined by casting * the provided value to an embedded document and comparing using - * [the `Document.equals()` function.](/docs/api.html#document_Document-equals) + * [the `Document.equals()` function.](/docs/api/document.html#document_Document-equals) * - * #### Examples: + * #### Example: * * doc.array.pull(ObjectId) * doc.array.pull({ _id: 'someId' }) @@ -560,7 +576,7 @@ const methods = { * * The first pull call will result in a atomic operation on the database, if pull is called repeatedly without saving the document, a $set operation is used on the complete array instead, overwriting possible changes that happened on the database in the meantime. * - * @param {any} [args...] + * @param {...any} [args] * @see mongodb https://www.mongodb.org/display/DOCS/Updating/#Updating-%24pull * @api public * @method pull @@ -590,7 +606,11 @@ const methods = { if (values[0] instanceof ArraySubdocument) { this._registerAtomic('$pullDocs', values.map(function(v) { - return v.$__getValue('_id') || v; + const _id = v.$__getValue('_id'); + if (_id === undefined || v.$isDefault('_id')) { + return v; + } + return _id; })); } else { this._registerAtomic('$pullAll', values); @@ -628,7 +648,7 @@ const methods = { * }); * doc.nums; // [1, 2, 3, 4, 5] * - * @param {Object} [args...] + * @param {...Object} [args] * @api public * @method push * @memberOf MongooseArray @@ -663,22 +683,21 @@ const methods = { if ((atomics.$push && atomics.$push.$each && atomics.$push.$each.length || 0) !== 0 && atomics.$push.$position != atomic.$position) { - throw new MongooseError('Cannot call `Array#push()` multiple times ' + - 'with different `$position`'); - } + if (atomic.$position != null) { + [].splice.apply(arr, [atomic.$position, 0].concat(values)); + ret = arr.length; + } else { + ret = [].push.apply(arr, values); + } - if (atomic.$position != null) { + this._registerAtomic('$set', this); + } else if (atomic.$position != null) { [].splice.apply(arr, [atomic.$position, 0].concat(values)); ret = this.length; } else { ret = [].push.apply(arr, values); } } else { - if ((atomics.$push && atomics.$push.$each && atomics.$push.$each.length || 0) !== 0 && - atomics.$push.$position != null) { - throw new MongooseError('Cannot call `Array#push()` multiple times ' + - 'with different `$position`'); - } atomic = values; ret = [].push.apply(arr, values); } @@ -805,6 +824,7 @@ const methods = { let ret; const arr = utils.isMongooseArray(this) ? this.__array : this; + this._markModified(); _checkManualPopulation(this, Array.prototype.slice.call(arguments, 2)); if (arguments.length) { @@ -919,6 +939,40 @@ function _isAllSubdocs(docs, ref) { return true; } +/*! + * Minimize _just_ empty objects along the path chain specified + * by `parts`, ignoring all other paths. Useful in cases where + * you want to minimize after unsetting a path. + * + * #### Example: + * + * const obj = { foo: { bar: { baz: {} } }, a: {} }; + * _minimizePath(obj, 'foo.bar.baz'); + * obj; // { a: {} } + */ + +function _minimizePath(obj, parts, i) { + if (typeof parts === 'string') { + if (parts.indexOf('.') === -1) { + return; + } + + parts = mpath.stringToParts(parts); + } + i = i || 0; + if (i >= parts.length) { + return; + } + if (obj == null || typeof obj !== 'object') { + return; + } + + _minimizePath(obj[parts[0]], parts, i + 1); + if (obj[parts[0]] != null && typeof obj[parts[0]] === 'object' && Object.keys(obj[parts[0]]).length === 0) { + delete obj[parts[0]]; + } +} + /*! * ignore */ diff --git a/food-ordering-app/server/node_modules/mongoose/lib/types/buffer.js b/food-ordering-app/server/node_modules/mongoose/lib/types/buffer.js index f2d51794d..2af81a5c1 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/types/buffer.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/types/buffer.js @@ -16,7 +16,7 @@ const utils = require('../utils'); * @param {String} encode * @param {Number} offset * @api private - * @inherits Buffer + * @inherits Buffer https://nodejs.org/api/buffer.html * @see https://bit.ly/f6CnZU */ @@ -142,30 +142,32 @@ MongooseBuffer.mixin = { * Compile other Buffer methods marking this buffer as modified. */ -( -// node < 0.5 - ('writeUInt8 writeUInt16 writeUInt32 writeInt8 writeInt16 writeInt32 ' + - 'writeFloat writeDouble fill ' + - 'utf8Write binaryWrite asciiWrite set ' + - - // node >= 0.5 - 'writeUInt16LE writeUInt16BE writeUInt32LE writeUInt32BE ' + - 'writeInt16LE writeInt16BE writeInt32LE writeInt32BE ' + 'writeFloatLE writeFloatBE writeDoubleLE writeDoubleBE') -).split(' ').forEach(function(method) { - if (!Buffer.prototype[method]) { - return; - } - MongooseBuffer.mixin[method] = function() { - const ret = Buffer.prototype[method].apply(this, arguments); - this._markModified(); - return ret; - }; -}); +utils.each( + [ + // node < 0.5 + 'writeUInt8', 'writeUInt16', 'writeUInt32', 'writeInt8', 'writeInt16', 'writeInt32', + 'writeFloat', 'writeDouble', 'fill', + 'utf8Write', 'binaryWrite', 'asciiWrite', 'set', + + // node >= 0.5 + 'writeUInt16LE', 'writeUInt16BE', 'writeUInt32LE', 'writeUInt32BE', + 'writeInt16LE', 'writeInt16BE', 'writeInt32LE', 'writeInt32BE', 'writeFloatLE', 'writeFloatBE', 'writeDoubleLE', 'writeDoubleBE'] + , function(method) { + if (!Buffer.prototype[method]) { + return; + } + MongooseBuffer.mixin[method] = function() { + const ret = Buffer.prototype[method].apply(this, arguments); + this._markModified(); + return ret; + }; + }); /** * Converts this buffer to its Binary type representation. * * #### SubTypes: + * * const bson = require('bson') * bson.BSON_BINARY_SUBTYPE_DEFAULT * bson.BSON_BINARY_SUBTYPE_FUNCTION @@ -175,7 +177,7 @@ MongooseBuffer.mixin = { * bson.BSON_BINARY_SUBTYPE_USER_DEFINED * doc.buffer.toObject(bson.BSON_BINARY_SUBTYPE_USER_DEFINED); * - * @see https://bsonspec.org/#/specification + * @see bsonspec https://bsonspec.org/#/specification * @param {Hex} [subtype] * @return {Binary} * @api public @@ -247,7 +249,7 @@ MongooseBuffer.mixin.equals = function(other) { * * doc.buffer.subtype(bson.BSON_BINARY_SUBTYPE_UUID); * - * @see https://bsonspec.org/#/specification + * @see bsonspec https://bsonspec.org/#/specification * @param {Hex} subtype * @api public * @method subtype diff --git a/food-ordering-app/server/node_modules/mongoose/lib/types/map.js b/food-ordering-app/server/node_modules/mongoose/lib/types/map.js index 4cea656c2..c6510d49b 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/types/map.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/types/map.js @@ -1,6 +1,7 @@ 'use strict'; const Mixed = require('../schema/mixed'); +const MongooseError = require('../error/mongooseError'); const clone = require('../helpers/clone'); const deepEqual = require('../utils').deepEqual; const getConstructorName = require('../helpers/getConstructorName'); @@ -68,6 +69,7 @@ class MongooseMap extends Map { * ObjectIds as keys. * * #### Example: + * * doc.myMap.set('test', 42); // works * doc.myMap.set({ obj: 42 }, 42); // Throws "Mongoose maps only support string keys" * @@ -94,24 +96,51 @@ class MongooseMap extends Map { return; } - const fullPath = this.$__path + '.' + key; - const populated = this.$__parent != null && this.$__parent.$__ ? - this.$__parent.$populated(fullPath) || this.$__parent.$populated(this.$__path) : + let _fullPath; + const parent = this.$__parent; + const populated = parent != null && parent.$__ && parent.$__.populated ? + parent.$populated(fullPath.call(this), true) || parent.$populated(this.$__path, true) : null; const priorVal = this.get(key); if (populated != null) { - if (value.$__ == null) { - value = new populated.options[populateModelSymbol](value); + if (this.$__schemaType.$isSingleNested) { + throw new MongooseError( + 'Cannot manually populate single nested subdoc underneath Map ' + + `at path "${this.$__path}". Try using an array instead of a Map.` + ); + } + if (Array.isArray(value) && this.$__schemaType.$isMongooseArray) { + value = value.map(v => { + if (v.$__ == null) { + v = new populated.options[populateModelSymbol](v); + } + // Doesn't support single nested "in-place" populate + v.$__.wasPopulated = { value: v._id }; + return v; + }); + } else { + if (value.$__ == null) { + value = new populated.options[populateModelSymbol](value); + } + // Doesn't support single nested "in-place" populate + value.$__.wasPopulated = { value: value._id }; } - value.$__.wasPopulated = { value: populated.value }; } else { try { - value = this.$__schemaType. - applySetters(value, this.$__parent, false, this.get(key), { path: fullPath }); + const options = this.$__schemaType.$isMongooseDocumentArray || this.$__schemaType.$isSingleNested ? + { path: fullPath.call(this) } : + null; + value = this.$__schemaType.applySetters( + value, + this.$__parent, + false, + this.get(key), + options + ); } catch (error) { if (this.$__parent != null && this.$__parent.$__ != null) { - this.$__parent.invalidate(fullPath, error); + this.$__parent.invalidate(fullPath.call(this), error); return; } throw error; @@ -120,13 +149,18 @@ class MongooseMap extends Map { super.set(key, value); - if (value != null && value.$isSingleNested) { - value.$basePath = this.$__path + '.' + key; + if (parent != null && parent.$__ != null && !deepEqual(value, priorVal)) { + parent.markModified(fullPath.call(this)); } - const parent = this.$__parent; - if (parent != null && parent.$__ != null && !deepEqual(value, priorVal)) { - parent.markModified(this.$__path + '.' + key); + // Delay calculating full path unless absolutely necessary, because string + // concatenation is a bottleneck re: #13171 + function fullPath() { + if (_fullPath) { + return _fullPath; + } + _fullPath = this.$__path + '.' + key; + return _fullPath; } } @@ -160,7 +194,7 @@ class MongooseMap extends Map { } this.set(key, undefined); - super.delete(key); + return super.delete(key); } /** @@ -197,6 +231,7 @@ class MongooseMap extends Map { * the `flattenMaps` option to convert this map to a POJO instead. * * #### Example: + * * doc.myMap.toJSON() instanceof Map; // true * doc.myMap.toJSON({ flattenMaps: true }) instanceof Map; // false * @@ -293,9 +328,11 @@ Object.defineProperty(MongooseMap.prototype, '$__deferredCalls', { value: true }); -/*! +/** * Since maps are stored as objects under the hood, keys must be strings * and can't contain any invalid characters + * @param {String} key + * @api private */ function checkValidKey(key) { diff --git a/food-ordering-app/server/node_modules/mongoose/lib/types/objectid.js b/food-ordering-app/server/node_modules/mongoose/lib/types/objectid.js index ab73119cb..63c3bd05c 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/types/objectid.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/types/objectid.js @@ -13,8 +13,9 @@ const ObjectId = require('../driver').get().ObjectId; const objectIdSymbol = require('../helpers/symbols').objectIdSymbol; -/*! +/** * Getter for convenience with populate, see gh-6115 + * @api private */ Object.defineProperty(ObjectId.prototype, '_id', { @@ -29,7 +30,6 @@ Object.defineProperty(ObjectId.prototype, '_id', { * Convenience `valueOf()` to allow comparing ObjectIds using double equals re: gh-7299 */ - if (!ObjectId.prototype.hasOwnProperty('valueOf')) { ObjectId.prototype.valueOf = function objectIdValueOf() { return this.toString(); diff --git a/food-ordering-app/server/node_modules/mongoose/lib/types/subdocument.js b/food-ordering-app/server/node_modules/mongoose/lib/types/subdocument.js index 197f08622..48a7fc712 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/types/subdocument.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/types/subdocument.js @@ -86,9 +86,15 @@ Subdocument.prototype.save = function(options, fn) { }); }; -/*! +/** * Given a path relative to this document, return the path relative * to the top-level document. + * @param {String} path + * @method $__fullPath + * @memberOf Subdocument + * @instance + * @returns {String} + * @api private */ Subdocument.prototype.$__fullPath = function(path) { @@ -101,9 +107,15 @@ Subdocument.prototype.$__fullPath = function(path) { this.$__.fullPath; }; -/*! +/** * Given a path relative to this document, return the path relative * to the top-level document. + * @param {String} p + * @returns {String} + * @method $__pathRelativeToParent + * @memberOf Subdocument + * @instance + * @api private */ Subdocument.prototype.$__pathRelativeToParent = function(p) { @@ -166,7 +178,7 @@ Subdocument.prototype.markModified = function(path) { * ignore */ -Subdocument.prototype.isModified = function(paths, modifiedPaths) { +Subdocument.prototype.isModified = function(paths, options, modifiedPaths) { const parent = this.$parent(); if (parent != null) { if (Array.isArray(paths) || typeof paths === 'string') { @@ -176,10 +188,10 @@ Subdocument.prototype.isModified = function(paths, modifiedPaths) { paths = this.$__pathRelativeToParent(); } - return parent.$isModified(paths, modifiedPaths); + return parent.$isModified(paths, options, modifiedPaths); } - return Document.prototype.isModified.call(this, paths, modifiedPaths); + return Document.prototype.isModified.call(this, paths, options, modifiedPaths); }; /** @@ -317,8 +329,13 @@ Subdocument.prototype.parent = function() { Subdocument.prototype.$parent = Subdocument.prototype.parent; -/*! +/** * no-op for hooks + * @param {Function} cb + * @method $__remove + * @memberOf Subdocument + * @instance + * @api private */ Subdocument.prototype.$__remove = function(cb) { @@ -328,6 +345,14 @@ Subdocument.prototype.$__remove = function(cb) { return cb(null, this); }; +/** + * ignore + * @method $__removeFromParent + * @memberOf Subdocument + * @instance + * @api private + */ + Subdocument.prototype.$__removeFromParent = function() { this.$__parent.set(this.$basePath, null); }; @@ -379,14 +404,11 @@ Subdocument.prototype.inspect = function() { }; if (util.inspect.custom) { - /*! - * Avoid Node deprecation warning DEP0079 - */ - + // Avoid Node deprecation warning DEP0079 Subdocument.prototype[util.inspect.custom] = Subdocument.prototype.inspect; } -/*! +/** * Registers remove event listeners for triggering * on subdocuments. * diff --git a/food-ordering-app/server/node_modules/mongoose/lib/utils.js b/food-ordering-app/server/node_modules/mongoose/lib/utils.js index 50058acdc..923dc7002 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/utils.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/utils.js @@ -4,6 +4,7 @@ * Module dependencies. */ +const UUID = require('bson').UUID; const ms = require('ms'); const mpath = require('mpath'); const ObjectId = require('./types/objectid'); @@ -30,7 +31,7 @@ exports.isMongooseDocumentArray = isMongooseDocumentArray.isMongooseDocumentArra exports.registerMongooseArray = isMongooseArray.registerMongooseArray; exports.registerMongooseDocumentArray = isMongooseDocumentArray.registerMongooseDocumentArray; -/*! +/** * Produces a collection name from model `name`. By default, just returns * the model name * @@ -53,7 +54,7 @@ exports.toCollectionName = function(name, pluralize) { return name; }; -/*! +/** * Determines if `a` and `b` are deep equal. * * Modified from node/lib/assert.js @@ -174,8 +175,9 @@ exports.deepEqual = function deepEqual(a, b) { return true; }; -/*! +/** * Get the last element of an array + * @param {Array} arr */ exports.last = function(arr) { @@ -225,11 +227,11 @@ exports.omit = function omit(obj, keys) { }; -/*! +/** * Shallow copies defaults into options. * * @param {Object} defaults - * @param {Object} options + * @param {Object} [options] * @return {Object} the merged object * @api private */ @@ -251,11 +253,13 @@ exports.options = function(defaults, options) { return options; }; -/*! +/** * Merges `from` into `to` without overwriting existing properties. * * @param {Object} to * @param {Object} from + * @param {Object} [options] + * @param {String} [path] * @api private */ @@ -318,7 +322,7 @@ exports.merge = function merge(to, from, options, path) { } }; -/*! +/** * Applies toObject recursively. * * @param {Document|Array|Object} obj @@ -370,7 +374,7 @@ exports.toObject = function toObject(obj) { exports.isObject = isObject; -/*! +/** * Determines if `arg` is a plain old JavaScript object (POJO). Specifically, * `arg` must be an object but not an instance of any special class, like String, * ObjectId, etc. @@ -393,21 +397,24 @@ exports.isPOJO = function isPOJO(arg) { return !proto || proto.constructor.name === 'Object'; }; -/*! +/** * Determines if `arg` is an object that isn't an instance of a built-in value * class, like Array, Buffer, ObjectId, etc. + * @param {Any} val */ exports.isNonBuiltinObject = function isNonBuiltinObject(val) { return typeof val === 'object' && !exports.isNativeObject(val) && !exports.isMongooseType(val) && + !(val instanceof UUID) && val != null; }; -/*! +/** * Determines if `obj` is a built-in object like an array, date, boolean, * etc. + * @param {Any} arg */ exports.isNativeObject = function(arg) { @@ -418,8 +425,9 @@ exports.isNativeObject = function(arg) { arg instanceof String; }; -/*! +/** * Determines if `val` is an object that has no own keys + * @param {Any} val */ exports.isEmptyObject = function(val) { @@ -428,9 +436,11 @@ exports.isEmptyObject = function(val) { Object.keys(val).length === 0; }; -/*! +/** * Search if `obj` or any POJOs nested underneath `obj` has a property named * `key` + * @param {Object} obj + * @param {String} key */ exports.hasKey = function hasKey(obj, key) { @@ -446,7 +456,7 @@ exports.hasKey = function hasKey(obj, key) { return false; }; -/*! +/** * process.nextTick helper. * * Wraps `callback` in a try/catch + nextTick. @@ -474,9 +484,10 @@ exports.tick = function tick(callback) { }; }; -/*! +/** * Returns true if `v` is an object that can be serialized as a primitive in * MongoDB + * @param {Any} v */ exports.isMongooseType = function(v) { @@ -485,7 +496,7 @@ exports.isMongooseType = function(v) { exports.isMongooseObject = isMongooseObject; -/*! +/** * Converts `expires` options of index objects to `expiresAfterSeconds` options for MongoDB. * * @param {Object} object @@ -506,8 +517,16 @@ exports.expires = function expires(object) { delete object.expires; }; -/*! +/** * populate helper + * @param {String} path + * @param {String} select + * @param {Model} model + * @param {Object} match + * @param {Object} options + * @param {Any} subPopulate + * @param {Boolean} justOne + * @param {Boolean} count */ exports.populate = function populate(path, select, model, match, options, subPopulate, justOne, count) { @@ -613,35 +632,38 @@ function _populateObj(obj) { return ret; } -/*! +/** * Return the value of `obj` at the given `path`. * * @param {String} path * @param {Object} obj + * @param {Any} map */ exports.getValue = function(path, obj, map) { return mpath.get(path, obj, '_doc', map); }; -/*! +/** * Sets the value of `obj` at the given `path`. * * @param {String} path * @param {Anything} val * @param {Object} obj + * @param {Any} map + * @param {Any} _copying */ exports.setValue = function(path, val, obj, map, _copying) { mpath.set(path, val, obj, '_doc', map, _copying); }; -/*! +/** * Returns an array of values from object `o`. * * @param {Object} o * @return {Array} - * @private + * @api private */ exports.object = {}; @@ -657,27 +679,29 @@ exports.object.vals = function vals(o) { return ret; }; -/*! +/** * @see exports.options */ exports.object.shallowCopy = exports.options; -/*! +const hop = Object.prototype.hasOwnProperty; + +/** * Safer helper for hasOwnProperty checks * * @param {Object} obj * @param {String} prop */ -const hop = Object.prototype.hasOwnProperty; exports.object.hasOwnProperty = function(obj, prop) { return hop.call(obj, prop); }; -/*! +/** * Determine if `val` is null or undefined * + * @param {Any} val * @return {Boolean} */ @@ -691,15 +715,16 @@ exports.isNullOrUndefined = function(val) { exports.array = {}; -/*! +/** * Flattens an array. * * [ 1, [ 2, 3, [4] ]] -> [1,2,3,4] * * @param {Array} arr * @param {Function} [filter] If passed, will be invoked with each item in the array. If `filter` returns a falsy value, the item will not be included in the results. + * @param {Array} ret * @return {Array} - * @private + * @api private */ exports.array.flatten = function flatten(arr, filter, ret) { @@ -770,7 +795,7 @@ exports.isArrayIndex = function(val) { return false; }; -/*! +/** * Removes duplicate values from an array * * [1, 2, 3, 3, 5] => [1, 2, 3, 5] @@ -779,7 +804,7 @@ exports.isArrayIndex = function(val) { * * @param {Array} arr * @return {Array} - * @private + * @api private */ exports.array.unique = function(arr) { @@ -808,14 +833,15 @@ exports.array.unique = function(arr) { return ret; }; -/*! +exports.buffer = {}; + +/** * Determines if two buffers are equal. * * @param {Buffer} a * @param {Object} b */ -exports.buffer = {}; exports.buffer.areEqual = function(a, b) { if (!Buffer.isBuffer(a)) { return false; @@ -835,8 +861,11 @@ exports.buffer.areEqual = function(a, b) { }; exports.getFunctionName = getFunctionName; -/*! + +/** * Decorate buffers + * @param {Object} destination + * @param {Object} source */ exports.decorate = function(destination, source) { @@ -972,3 +1001,11 @@ exports.errorToPOJO = function errorToPOJO(error) { exports.warn = function warn(message) { return process.emitWarning(message, { code: 'MONGOOSE' }); }; + + +exports.injectTimestampsOption = function injectTimestampsOption(writeOperation, timestampsOption) { + if (timestampsOption == null) { + return; + } + writeOperation.timestamps = timestampsOption; +}; diff --git a/food-ordering-app/server/node_modules/mongoose/lib/validoptions.js b/food-ordering-app/server/node_modules/mongoose/lib/validoptions.js index 0f7b697c4..a42e552c7 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/validoptions.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/validoptions.js @@ -15,6 +15,7 @@ const VALID_OPTIONS = Object.freeze([ 'bufferTimeoutMS', 'cloneSchemas', 'debug', + 'id', 'timestamps.createdAt.immutable', 'maxTimeMS', 'objectIdGetter', diff --git a/food-ordering-app/server/node_modules/mongoose/lib/virtualtype.js b/food-ordering-app/server/node_modules/mongoose/lib/virtualtype.js index bf458154b..6efa01c09 100644 --- a/food-ordering-app/server/node_modules/mongoose/lib/virtualtype.js +++ b/food-ordering-app/server/node_modules/mongoose/lib/virtualtype.js @@ -13,18 +13,18 @@ const utils = require('./utils'); * fullname instanceof mongoose.VirtualType // true * * @param {Object} options - * @param {string|function} [options.ref] if `ref` is not nullish, this becomes a [populated virtual](/docs/populate.html#populate-virtuals) - * @param {string|function} [options.localField] the local field to populate on if this is a populated virtual. - * @param {string|function} [options.foreignField] the foreign field to populate on if this is a populated virtual. - * @param {boolean} [options.justOne=false] by default, a populated virtual is an array. If you set `justOne`, the populated virtual will be a single doc or `null`. - * @param {boolean} [options.getters=false] if you set this to `true`, Mongoose will call any custom getters you defined on this virtual - * @param {boolean} [options.count=false] if you set this to `true`, `populate()` will set this virtual to the number of populated documents, as opposed to the documents themselves, using [`Query#countDocuments()`](./api.html#query_Query-countDocuments) + * @param {String|Function} [options.ref] if `ref` is not nullish, this becomes a [populated virtual](/docs/populate.html#populate-virtuals) + * @param {String|Function} [options.localField] the local field to populate on if this is a populated virtual. + * @param {String|Function} [options.foreignField] the foreign field to populate on if this is a populated virtual. + * @param {Boolean} [options.justOne=false] by default, a populated virtual is an array. If you set `justOne`, the populated virtual will be a single doc or `null`. + * @param {Boolean} [options.getters=false] if you set this to `true`, Mongoose will call any custom getters you defined on this virtual + * @param {Boolean} [options.count=false] if you set this to `true`, `populate()` will set this virtual to the number of populated documents, as opposed to the documents themselves, using [`Query#countDocuments()`](/docs/api/query.html#query_Query-countDocuments) * @param {Object|Function} [options.match=null] add an extra match condition to `populate()` * @param {Number} [options.limit=null] add a default `limit` to the `populate()` query * @param {Number} [options.skip=null] add a default `skip` to the `populate()` query * @param {Number} [options.perDocumentLimit=null] For legacy reasons, `limit` with `populate()` may give incorrect results because it only executes a single query for every document being populated. If you set `perDocumentLimit`, Mongoose will ensure correct `limit` per document by executing a separate query for each document to `populate()`. For example, `.find().populate({ path: 'test', perDocumentLimit: 2 })` will execute 2 additional queries if `.find()` returns 2 documents. * @param {Object} [options.options=null] Additional options like `limit` and `lean`. - * @param {string} name + * @param {String} name * @api public */ @@ -36,10 +36,8 @@ function VirtualType(options, name) { } /** - * If no getters/getters, add a default + * If no getters/setters, add a default * - * @param {Function} fn - * @return {VirtualType} this * @api private */ @@ -51,10 +49,10 @@ VirtualType.prototype._applyDefaultGetters = function() { const path = this.path; const internalProperty = '$' + path; this.getters.push(function() { - return this[internalProperty]; + return this.$locals[internalProperty]; }); this.setters.push(function(v) { - this[internalProperty] = v; + this.$locals[internalProperty] = v; }); }; @@ -85,7 +83,7 @@ VirtualType.prototype.clone = function() { * return this.name.first + ' ' + this.name.last; * }); * - * @param {function} fn + * @param {Function} fn * @return {VirtualType} this * @api public */ @@ -120,7 +118,7 @@ VirtualType.prototype.get = function(fn) { * doc.name.first; // 'Jean-Luc' * doc.name.last; // 'Picard' * - * @param {function} fn + * @param {Function} fn * @return {VirtualType} this * @api public */ @@ -135,7 +133,7 @@ VirtualType.prototype.set = function(fn) { * * @param {Object} value * @param {Document} doc The document this virtual is attached to - * @return {any} the value after applying all getters + * @return {Any} the value after applying all getters * @api public */ @@ -158,7 +156,7 @@ VirtualType.prototype.applyGetters = function(value, doc) { * * @param {Object} value * @param {Document} doc - * @return {any} the value after applying all setters + * @return {Any} the value after applying all setters * @api public */ diff --git a/food-ordering-app/server/node_modules/mongoose/package.json b/food-ordering-app/server/node_modules/mongoose/package.json index 0df7fc92e..f6f1bc345 100644 --- a/food-ordering-app/server/node_modules/mongoose/package.json +++ b/food-ordering-app/server/node_modules/mongoose/package.json @@ -1,7 +1,7 @@ { "name": "mongoose", "description": "Mongoose MongoDB ODM", - "version": "6.4.4", + "version": "6.13.9", "author": "Guillermo Rauch ", "keywords": [ "mongodb", @@ -19,52 +19,58 @@ ], "license": "MIT", "dependencies": { - "bson": "^4.6.2", - "kareem": "2.4.1", - "mongodb": "4.7.0", + "bson": "^4.7.2", + "kareem": "2.5.1", + "mongodb": "4.17.2", "mpath": "0.9.0", "mquery": "4.0.3", "ms": "2.1.3", - "sift": "16.0.0" + "sift": "16.0.1" }, "devDependencies": { - "@babel/core": "7.18.6", - "@typescript-eslint/eslint-plugin": "5.30.3", - "@typescript-eslint/parser": "5.30.3", - "acquit": "1.2.1", - "acquit-ignore": "0.2.0", + "@babel/core": "7.20.12", + "@babel/preset-env": "7.20.2", + "@sinonjs/fake-timers": "11.2.2", + "@typescript-eslint/eslint-plugin": "5.50.0", + "@typescript-eslint/parser": "5.50.0", + "acquit": "1.3.0", + "acquit-ignore": "0.2.1", "acquit-require": "0.1.1", "assert-browserify": "2.0.0", - "axios": "0.27.2", + "axios": "1.1.3", "babel-loader": "8.2.5", "benchmark": "2.1.4", "bluebird": "3.7.2", + "broken-link-checker": "^0.7.8", "buffer": "^5.6.0", "cheerio": "1.0.0-rc.12", "crypto-browserify": "3.12.0", - "dox": "0.9.1", - "eslint": "8.19.0", + "dotenv": "16.0.3", + "dox": "1.0.0", + "eslint": "8.33.0", + "eslint-plugin-markdown": "^3.0.0", "eslint-plugin-mocha-no-only": "1.1.1", - "highlight.js": "11.5.1", + "express": "^4.18.1", + "fs-extra": "~11.1.1", + "highlight.js": "11.7.0", "lodash.isequal": "4.5.0", "lodash.isequalwith": "4.4.0", - "marked": "4.0.17", - "mkdirp": "^1.0.4", - "mocha": "10.0.0", + "marked": "4.2.12", + "mkdirp": "^2.1.3", + "mocha": "10.2.0", "moment": "2.x", - "mongodb-memory-server": "8.7.2", + "mongodb-memory-server": "8.11.4", "ncp": "^2.0.0", "nyc": "15.1.0", "pug": "3.0.2", "q": "1.5.1", - "serve-handler": "6.1.3", - "sinon": "14.0.0", + "sinon": "15.0.1", "stream-browserify": "3.0.0", - "ts-benchmark": "^1.0.2", - "tsd": "0.20.0", - "typescript": "4.7.4", - "uuid": "8.3.2", - "webpack": "5.73.0" + "tmp": "0.2.1", + "tsd": "0.25.0", + "typescript": "4.9.5", + "uuid": "9.0.0", + "webpack": "5.75.0" }, "directories": { "lib": "./lib/mongoose" @@ -72,34 +78,44 @@ "scripts": { "docs:clean": "npm run docs:clean:stable", "docs:clean:stable": "rimraf index.html && rimraf -rf ./docs/*.html && rimraf -rf ./docs/api && rimraf -rf ./docs/tutorials/*.html && rimraf -rf ./docs/typescript/*.html && rimraf -rf ./docs/*.html && rimraf -rf ./docs/source/_docs && rimraf -rf ./tmp", - "docs:clean:legacy": "rimraf index.html && rimraf -rf ./docs/5.x && rimraf -rf ./docs/source/_docs && rimraf -rf ./tmp", - "docs:copy:tmp": "mkdirp ./tmp/docs/css && mkdirp ./tmp/docs/js && mkdirp ./tmp/docs/images && mkdirp ./tmp/docs/tutorials && mkdirp ./tmp/docs/typescript && ncp ./docs/css ./tmp/docs/css --filter=.css$ && ncp ./docs/js ./tmp/docs/js --filter=.js$ && ncp ./docs/images ./tmp/docs/images && ncp ./docs/tutorials ./tmp/docs/tutorials && ncp ./docs/typescript ./tmp/docs/typescript && cp index.html ./tmp", - "docs:copy:tmp:legacy": "rimraf ./docs/5.x && ncp ./tmp ./docs/5.x", + "docs:clean:5x": "rimraf index.html && rimraf -rf ./docs/5.x && rimraf -rf ./docs/source/_docs && rimraf -rf ./tmp", + "docs:clean:6x": "rimraf index.html && rimraf -rf ./docs/6.x && rimraf -rf ./docs/source/_docs && rimraf -rf ./tmp", + "docs:copy:tmp": "mkdirp ./tmp/docs/css && mkdirp ./tmp/docs/js && mkdirp ./tmp/docs/images && mkdirp ./tmp/docs/tutorials && mkdirp ./tmp/docs/typescript && mkdirp ./tmp/docs/api && ncp ./docs/css ./tmp/docs/css --filter=.css$ && ncp ./docs/js ./tmp/docs/js --filter=.js$ && ncp ./docs/images ./tmp/docs/images && ncp ./docs/tutorials ./tmp/docs/tutorials && ncp ./docs/typescript ./tmp/docs/typescript && ncp ./docs/api ./tmp/docs/api && cp index.html ./tmp && cp docs/*.html ./tmp/docs/", + "docs:copy:tmp:5x": "rimraf ./docs/5.x && ncp ./tmp ./docs/5.x", + "docs:move:6x:tmp": "mv ./docs/6.x ./tmp", + "docs:copy:tmp:6x": "rimraf ./docs/6.x && ncp ./tmp ./docs/6.x", "docs:checkout:gh-pages": "git checkout gh-pages", - "docs:checkout:legacy": "git checkout 5.x", - "docs:generate": "node website.js", - "docs:generate:search": "node docs/search.js", + "docs:checkout:5x": "git checkout 5.x", + "docs:checkout:6x": "git checkout 6.x", + "docs:generate": "node ./scripts/website.js", + "docs:generate:search": "node ./scripts/generateSearch.js", + "docs:generate:sponsorData": "node ./scripts/loadSponsorData.js", "docs:merge:stable": "git merge master", - "docs:merge:legacy": "git merge 5.x", + "docs:merge:5x": "git merge 5.x", + "docs:merge:6x": "git merge 6.x", "docs:test": "npm run docs:generate && npm run docs:generate:search", - "docs:view": "node website.js && node static.js", + "docs:view": "node ./scripts/static.js", "docs:prepare:publish:stable": "npm run docs:checkout:gh-pages && npm run docs:merge:stable && npm run docs:clean:stable && npm run docs:generate && npm run docs:generate:search", - "docs:prepare:publish:legacy": "npm run docs:checkout:legacy && npm run docs:merge:legacy && npm run docs:clean:stable && npm run docs:generate && npm run docs:copy:tmp && docs:checkout:gh-pages && docs:copy:tmp:legacy", + "docs:prepare:publish:5x": "npm run docs:checkout:5x && npm run docs:merge:5x && npm run docs:clean:stable && npm run docs:generate && npm run docs:copy:tmp && npm run docs:checkout:gh-pages && npm run docs:copy:tmp:5x", + "docs:prepare:publish:6x": "npm run docs:checkout:6x && npm run docs:merge:6x && npm run docs:clean:stable && env DOCS_DEPLOY=true npm run docs:generate && npm run docs:move:6x:tmp && npm run docs:checkout:gh-pages && npm run docs:copy:tmp:6x", + "docs:check-links": "blc http://127.0.0.1:8089 -ro", "lint": "eslint .", "lint-js": "eslint . --ext .js", "lint-ts": "eslint . --ext .ts", - "build-browser": "node build-browser.js", + "lint-md": "eslint . --ext .md", + "build-browser": "(rm ./dist/* || true) && node ./scripts/build-browser.js", "prepublishOnly": "npm run build-browser", "release": "git pull && git push origin master --tags && npm publish", - "release-legacy": "git pull origin 5.x && git push origin 5.x --tags && npm publish --tag legacy", + "release-5x": "git pull origin 5.x && git push origin 5.x && git push origin 5.x --tags && npm publish --tag 5x", + "release-6x": "git pull origin 6.x && git push origin 6.x && git push origin 6.x --tags && npm publish --tag 6x", "mongo": "node ./tools/repl.js", "test": "mocha --exit ./test/*.test.js", + "test-deno": "deno run --allow-env --allow-read --allow-net --allow-run --allow-sys --allow-write ./test/deno.js", "test-rs": "START_REPLICA_SET=1 mocha --timeout 30000 --exit ./test/*.test.js", "test-tsd": "node ./test/types/check-types-filename && tsd", "tdd": "mocha ./test/*.test.js --inspect --watch --recursive --watch-files ./**/*.{js,ts}", "test-coverage": "nyc --reporter=html --reporter=text npm test", - "ts-benchmark": "node ./benchmarks/typescript.js", - "ts-benchmark-watch": "ts-benchmark -p ./benchmarks/typescript/simple -w ./types -i -s -f 17 18 29 32 -b master" + "ts-benchmark": "cd ./benchmarks/typescript/simple && npm install && npm run benchmark | node ../../../scripts/tsc-diagnostics-check" }, "main": "./index.js", "types": "./types/index.d.ts", diff --git a/food-ordering-app/server/node_modules/mongoose/build-browser.js b/food-ordering-app/server/node_modules/mongoose/scripts/build-browser.js similarity index 88% rename from food-ordering-app/server/node_modules/mongoose/build-browser.js rename to food-ordering-app/server/node_modules/mongoose/scripts/build-browser.js index 6f4aa1681..f6f0680f9 100644 --- a/food-ordering-app/server/node_modules/mongoose/build-browser.js +++ b/food-ordering-app/server/node_modules/mongoose/scripts/build-browser.js @@ -1,6 +1,6 @@ 'use strict'; -const config = require('./webpack.config.js'); +const config = require('../webpack.config.js'); const webpack = require('webpack'); const compiler = webpack(config); diff --git a/food-ordering-app/server/node_modules/mongoose/scripts/create-tarball.js b/food-ordering-app/server/node_modules/mongoose/scripts/create-tarball.js new file mode 100644 index 000000000..f93d22969 --- /dev/null +++ b/food-ordering-app/server/node_modules/mongoose/scripts/create-tarball.js @@ -0,0 +1,7 @@ +'use strict'; + +const { execSync } = require('child_process'); +const { name, version } = require('../package.json'); + +execSync('npm pack'); +execSync(`mv ${name}-${version}.tgz ${name}.tgz`); diff --git a/food-ordering-app/server/node_modules/mongoose/scripts/generateSearch.js b/food-ordering-app/server/node_modules/mongoose/scripts/generateSearch.js new file mode 100644 index 000000000..56103488f --- /dev/null +++ b/food-ordering-app/server/node_modules/mongoose/scripts/generateSearch.js @@ -0,0 +1,154 @@ +'use strict'; + +const config = require('../.config'); +const cheerio = require('cheerio'); +const docsFilemap = require('../docs/source'); +const fs = require('fs'); +const pug = require('pug'); +const mongoose = require('../'); +let { version } = require('../package.json'); + +const { marked: markdown } = require('marked'); +const highlight = require('highlight.js'); +markdown.setOptions({ + highlight: function(code) { + return highlight.highlight(code, { language: 'JavaScript' }).value; + } +}); + +// 5.13.5 -> 5.x, 6.8.2 -> 6.x, etc. +version = version.slice(0, version.indexOf('.')) + '.x'; + +const contentSchema = new mongoose.Schema({ + title: { type: String, required: true }, + body: { type: String, required: true }, + url: { type: String, required: true }, + version: { type: String, required: true, default: version }, + versionNumber: { type: Number, required: true, default: version.replace(/\.x$/, '') } +}); +contentSchema.index({ title: 'text', body: 'text' }); +const Content = mongoose.model('Content', contentSchema, 'Content'); + +const contents = []; + +for (const [filename, file] of Object.entries(docsFilemap.fileMap)) { + if (file.api) { + for (const prop of file.props) { + const content = new Content({ + title: `API: ${prop.name}`, + body: prop.description, + url: `${filename.replace(/^docs/, '')}#${prop.anchorId}` + }); + const err = content.validateSync(); + if (err != null) { + console.error(content); + throw err; + } + contents.push(content); + } + } else if (file.markdown) { + let text = fs.readFileSync(filename, 'utf8'); + text = markdown.parse(text); + + const content = new Content({ + title: file.title, + body: text, + url: filename.replace('.md', '.html').replace(/^docs/, '') + }); + + content.validateSync(); + + const $ = cheerio.load(text); + + contents.push(content); + + // Break up individual h3's into separate content for more fine grained search + $('h3').each((index, el) => { + el = $(el); + const title = el.text(); + const html = el.nextUntil('h3').html(); + const content = new Content({ + title: `${file.title}: ${title}`, + body: html, + url: `${filename.replace('.md', '.html').replace(/^docs/, '')}#${el.prop('id')}` + }); + + content.validateSync(); + contents.push(content); + }); + } else if (file.guide) { + let text = fs.readFileSync(filename, 'utf8'); + text = text.substr(text.indexOf('block content') + 'block content\n'.length); + text = pug.render(`div\n${text}`, { filters: { markdown }, filename }); + + const content = new Content({ + title: file.title, + body: text, + url: filename.replace('.pug', '.html').replace(/^docs/, '') + }); + + content.validateSync(); + + const $ = cheerio.load(text); + + contents.push(content); + + // Break up individual h3's into separate content for more fine grained search + $('h3').each((index, el) => { + el = $(el); + const title = el.text(); + const html = el.nextUntil('h3').html(); + const content = new Content({ + title: `${file.title}: ${title}`, + body: html, + url: `${filename.replace('.pug', '.html').replace(/^docs/, '')}#${el.prop('id')}` + }); + + content.validateSync(); + contents.push(content); + }); + } +} + +run().catch(async error => { + console.error(error.stack); + + // ensure the script exists in case of error + await mongoose.disconnect(); +}); + +async function run() { + if (!config || !config.uri) { + console.error('No Config or config.URI given, please create a .config.js file with those values'); + process.exit(-1); + } + + await mongoose.connect(config.uri, { dbName: 'mongoose', serverSelectionTimeoutMS: 5000 }); + + // wait for the index to be created + await Content.init(); + + await Content.deleteMany({ version }); + for (const content of contents) { + if (version === '7.x') { + let url = content.url.startsWith('/') ? content.url : `/${content.url}`; + if (!url.startsWith('/docs')) { + url = '/docs' + url; + } + content.url = url; + } else { + const url = content.url.startsWith('/') ? content.url : `/${content.url}`; + content.url = `/docs/${version}/docs${url}`; + } + await content.save(); + } + + const results = await Content. + find({ $text: { $search: 'validate' }, version }, { score: { $meta: 'textScore' } }). + sort({ score: { $meta: 'textScore' } }). + limit(10); + + console.log(results.map(res => res.url)); + + process.exit(0); +} diff --git a/food-ordering-app/server/node_modules/mongoose/scripts/tsc-diagnostics-check.js b/food-ordering-app/server/node_modules/mongoose/scripts/tsc-diagnostics-check.js new file mode 100644 index 000000000..f90e581af --- /dev/null +++ b/food-ordering-app/server/node_modules/mongoose/scripts/tsc-diagnostics-check.js @@ -0,0 +1,15 @@ +'use strict'; + +const fs = require('fs'); + +const stdin = fs.readFileSync(0).toString('utf8'); +const maxInstantiations = isNaN(process.argv[2]) ? 110000 : parseInt(process.argv[2], 10); + +console.log(stdin); + +const numInstantiations = parseInt(stdin.match(/Instantiations:\s+(\d+)/)[1], 10); +if (numInstantiations > maxInstantiations) { + throw new Error(`Instantiations ${numInstantiations} > max ${maxInstantiations}`); +} + +process.exit(0); diff --git a/food-ordering-app/server/node_modules/mongoose/startmdb.mjs b/food-ordering-app/server/node_modules/mongoose/startmdb.mjs new file mode 100644 index 000000000..7c84c47b5 --- /dev/null +++ b/food-ordering-app/server/node_modules/mongoose/startmdb.mjs @@ -0,0 +1,19 @@ +import { MongoMemoryReplSet } from 'mongodb-memory-server'; + +const replSet = await MongoMemoryReplSet.create({ + binary: { + systemBinary: '/home/v/libs/mongodb-linux-x86_64-enterprise-ubuntu2404-8.2.0/bin/mongod' + }, + instanceOpts: [ + { + port: 27017 + } + ], + replSet: { + storageEngine: 'inMemory', + count: 1 + } +}); + +const uri = replSet.getUri(); +console.log(uri); diff --git a/food-ordering-app/server/node_modules/mongoose/tools/auth.js b/food-ordering-app/server/node_modules/mongoose/tools/auth.js index 2fddafaf7..22730c532 100644 --- a/food-ordering-app/server/node_modules/mongoose/tools/auth.js +++ b/food-ordering-app/server/node_modules/mongoose/tools/auth.js @@ -21,11 +21,11 @@ async function run() { // Start process await server.start(); - const db = await mongodb.MongoClient.connect('mongodb://localhost:27017/admin'); + const db = await mongodb.MongoClient.connect('mongodb://127.0.0.1:27017/admin'); await db.addUser('passwordIsTaco', 'taco', { roles: ['dbOwner'] }); console.log('done'); -} \ No newline at end of file +} diff --git a/food-ordering-app/server/node_modules/mongoose/tools/sharded.js b/food-ordering-app/server/node_modules/mongoose/tools/sharded.js index 39aeed3d5..96ad95c6c 100644 --- a/food-ordering-app/server/node_modules/mongoose/tools/sharded.js +++ b/food-ordering-app/server/node_modules/mongoose/tools/sharded.js @@ -17,18 +17,18 @@ async function run() { await topology.addShard([{ options: { - bind_ip: 'localhost', port: 31000, dbpath: '/data/db/31000', shardsvr: null + bind_ip: '127.0.0.1', port: 31000, dbpath: '/data/db/31000', shardsvr: null } }], { replSet: 'rs1' }); await topology.addConfigurationServers([{ options: { - bind_ip: 'localhost', port: 35000, dbpath: '/data/db/35000' + bind_ip: '127.0.0.1', port: 35000, dbpath: '/data/db/35000' } }], { replSet: 'rs0' }); await topology.addProxies([{ - bind_ip: 'localhost', port: 51000, configdb: 'localhost:35000' + bind_ip: '127.0.0.1', port: 51000, configdb: '127.0.0.1:35000' }], { binary: 'mongos' }); @@ -43,4 +43,4 @@ async function run() { await topology.enableSharding('test'); console.log('done'); -} \ No newline at end of file +} diff --git a/food-ordering-app/server/node_modules/mongoose/types/aggregate.d.ts b/food-ordering-app/server/node_modules/mongoose/types/aggregate.d.ts index be5237e70..71f869a27 100644 --- a/food-ordering-app/server/node_modules/mongoose/types/aggregate.d.ts +++ b/food-ordering-app/server/node_modules/mongoose/types/aggregate.d.ts @@ -4,76 +4,17 @@ declare module 'mongoose' { /** Extract generic type from Aggregate class */ type AggregateExtract

= P extends Aggregate ? T : never; - interface AggregateOptions extends - SessionOption { - /** - * If true, the MongoDB server will use the hard drive to store data during this aggregation. - */ - allowDiskUse?: boolean; - /** - * Applicable only if you specify the $out or $merge aggregation stages. - * - * Enables db.collection.aggregate() to bypass document validation during the operation. This lets you insert documents that do not meet the validation requirements. - */ - bypassDocumentValidation?: boolean; - /** - * The BSON-serializer will check if keys are valid - */ - collation?: mongodb.CollationOptions; - /** - * Users can specify an arbitrary string to help trace the operation through the database profiler, currentOp, and logs. - */ - comment?: string; - /** - * Specifies the initial batch size for the cursor. The value of the cursor field is a document with the field batchSize. - */ - cursor?: { batchSize?: number; }; - /** - * Specifies to return the information on the processing of the pipeline. See Return Information on Aggregation Pipeline Operation for an example. - * - * Not available in multi-document transactions. - */ - explain?: mongodb.ExplainVerbosityLike; - /** - * The index to use for the aggregation. The index is on the initial collection/view against which the aggregation is run. - */ - hint?: string | AnyObject; - /** - * Specifies a document with a list of variables. This allows you to improve command readability by separating the variables from the query text. - */ - let?: AnyObject; - /** - * Specifies a time limit in milliseconds for processing operations on a cursor. If you do not specify a value for maxTimeMS, operations will not time out. A value of 0 explicitly specifies the default unbounded behavior. - * - * @see https://docs.mongodb.com/manual/reference/operator/meta/maxTimeMS/ - */ - maxTimeMS?: number; - /** - * Return BSON filled buffers from operations. - */ - raw?: boolean; - /** - * Specifies the read concern. - */ - readConcern?: mongodb.ReadConcernLike; - /** - * The preferred read preference. - */ - readPreference?: mongodb.ReadPreferenceLike; - /** - * Specifies the write concern. - */ - writeConcern?: mongodb.WriteConcern; + interface AggregateOptions extends Omit, SessionOption { [key: string]: any; } - class Aggregate implements SessionOperation { + class Aggregate implements SessionOperation { /** - * Returns an asyncIterator for use with [`for/await/of` loops](https://thecodebarbarian.com/getting-started-with-async-iterators-in-node-js + * Returns an asyncIterator for use with [`for/await/of` loops](https://thecodebarbarian.com/getting-started-with-async-iterators-in-node-js) * You do not need to call this function explicitly, the JavaScript runtime * will call it for you. */ - [Symbol.asyncIterator](): AsyncIterableIterator>; + [Symbol.asyncIterator](): AsyncIterableIterator>; options: AggregateOptions; @@ -91,7 +32,7 @@ declare module 'mongoose' { */ addFields(arg: PipelineStage.AddFields['$addFields']): this; - /** Sets the allowDiskUse option for the aggregation query (ignored for < 2.6.0) */ + /** Sets the allowDiskUse option for the aggregation query */ allowDiskUse(value: boolean): this; /** Appends new operators to this aggregate pipeline */ @@ -102,7 +43,7 @@ declare module 'mongoose' { * resolved with either the doc(s) or rejected with the error. * Like [`.then()`](#query_Query-then), but only takes a rejection handler. */ - catch: Promise['catch']; + catch: Promise['catch']; /** Set the collation. */ collation(options: mongodb.CollationOptions): this; @@ -110,14 +51,18 @@ declare module 'mongoose' { /** Appends a new $count operator to this aggregate pipeline. */ count(fieldName: PipelineStage.Count['$count']): this; + /** Appends a new $densify operator to this aggregate pipeline */ + densify(arg: PipelineStage.Densify['$densify']): this; + /** - * Sets the cursor option for the aggregation query (ignored for < 2.6.0). + * Sets the cursor option for the aggregation query */ cursor(options?: Record): Cursor; + /** Executes the aggregate pipeline on the currently bound Model. */ - exec(callback: Callback): void; - exec(): Promise; + exec(callback: Callback): void; + exec(): Promise; /** Execute the aggregation with explain */ explain(verbosity: mongodb.ExplainVerbosityLike, callback: Callback): void; @@ -128,13 +73,16 @@ declare module 'mongoose' { /** Combines multiple aggregation pipelines. */ facet(options: PipelineStage.Facet['$facet']): this; + /** Appends a new $fill operator to this aggregate pipeline */ + fill(arg: PipelineStage.Fill['$fill']): this; + /** Appends new custom $graphLookup operator(s) to this aggregate pipeline, performing a recursive search on a collection. */ graphLookup(options: PipelineStage.GraphLookup['$graphLookup']): this; /** Appends new custom $group operator to this aggregate pipeline. */ group(arg: PipelineStage.Group['$group']): this; - /** Sets the hint option for the aggregation query (ignored for < 3.6.0) */ + /** Sets the hint option for the aggregation query */ hint(value: Record | string): this; /** @@ -159,10 +107,12 @@ declare module 'mongoose' { model(model: Model): this; /** - * Append a new $near operator to this aggregation pipeline - * @param arg $near operator contents + * Returns the current model bound to this aggregate object */ - near(arg: { near?: number[]; distanceField: string; maxDistance?: number; query?: Record; includeLocs?: string; num?: number; uniqueDocs?: boolean }): this; + model(): Model; + + /** Appends a new $geoNear operator to this aggregate pipeline. */ + near(arg: PipelineStage.GeoNear['$geoNear']): this; /** Returns the current pipeline */ pipeline(): PipelineStage[]; @@ -183,7 +133,7 @@ declare module 'mongoose' { replaceRoot(newRoot: PipelineStage.ReplaceRoot['$replaceRoot']['newRoot'] | string): this; /** - * Helper for [Atlas Text Search](https://docs.atlas.mongodb.com/reference/atlas-search/tutorial/)'s + * Helper for [Atlas Text Search](https://www.mongodb.com/docs/atlas/atlas-search/tutorial/)'s * `$search` stage. */ search(options: PipelineStage.Search['$search']): this; @@ -207,7 +157,7 @@ declare module 'mongoose' { sort(arg: string | Record | PipelineStage.Sort['$sort']): this; /** Provides promise for aggregate. */ - then: Promise['then']; + then: Promise['then']; /** * Appends a new $sortByCount operator to this aggregate pipeline. Accepts either a string field name diff --git a/food-ordering-app/server/node_modules/mongoose/types/augmentations.d.ts b/food-ordering-app/server/node_modules/mongoose/types/augmentations.d.ts new file mode 100644 index 000000000..82aca589f --- /dev/null +++ b/food-ordering-app/server/node_modules/mongoose/types/augmentations.d.ts @@ -0,0 +1,9 @@ +// this import is required so that types get merged instead of completely overwritten +import 'bson'; + +declare module 'bson' { + interface ObjectId { + /** Mongoose automatically adds a conveniency "_id" getter on the base ObjectId class */ + _id: this; + } +} diff --git a/food-ordering-app/server/node_modules/mongoose/types/collection.d.ts b/food-ordering-app/server/node_modules/mongoose/types/collection.d.ts index e46a2bb10..14a09ba37 100644 --- a/food-ordering-app/server/node_modules/mongoose/types/collection.d.ts +++ b/food-ordering-app/server/node_modules/mongoose/types/collection.d.ts @@ -3,7 +3,6 @@ declare module 'mongoose' { /* * section collection.js - * http://mongoosejs.com/docs/api.html#collection-js */ interface CollectionBase extends mongodb.Collection { /* @@ -24,7 +23,6 @@ declare module 'mongoose' { /* * section drivers/node-mongodb-native/collection.js - * http://mongoosejs.com/docs/api.html#drivers-node-mongodb-native-collection-js */ interface Collection extends CollectionBase { /** diff --git a/food-ordering-app/server/node_modules/mongoose/types/connection.d.ts b/food-ordering-app/server/node_modules/mongoose/types/connection.d.ts index ac8594e5f..8f68276e7 100644 --- a/food-ordering-app/server/node_modules/mongoose/types/connection.d.ts +++ b/food-ordering-app/server/node_modules/mongoose/types/connection.d.ts @@ -85,8 +85,8 @@ declare module 'mongoose' { /** * Helper for `createCollection()`. Will explicitly create the given collection - * with specified options. Used to create [capped collections](https://docs.mongodb.com/manual/core/capped-collections/) - * and [views](https://docs.mongodb.com/manual/core/views/) from mongoose. + * with specified options. Used to create [capped collections](https://www.mongodb.com/docs/manual/core/capped-collections/) + * and [views](https://www.mongodb.com/docs/manual/core/views/) from mongoose. */ createCollection(name: string, options: mongodb.CreateCollectionOptions, callback: Callback>): void; createCollection(name: string, callback: Callback>): void; @@ -117,7 +117,7 @@ declare module 'mongoose' { get(key: string): any; /** - * Returns the [MongoDB driver `MongoClient`](http://mongodb.github.io/node-mongodb-native/3.5/api/MongoClient.html) instance + * Returns the [MongoDB driver `MongoClient`](https://mongodb.github.io/node-mongodb-native/4.9/classes/MongoClient.html) instance * that this connection uses to talk to MongoDB. */ getClient(): mongodb.MongoClient; @@ -142,13 +142,19 @@ declare module 'mongoose' { readonly models: Readonly<{ [index: string]: Model }>; /** Defines or retrieves a model. */ + model( + name: string, + schema?: TSchema, + collection?: string, + options?: CompileModelOptions + ): Model, ObtainSchemaGeneric, ObtainSchemaGeneric, {}, TSchema> & ObtainSchemaGeneric; model( name: string, - schema?: Schema, + schema?: Schema, collection?: string, options?: CompileModelOptions ): U; - model(name: string, schema?: Schema, collection?: string, options?: CompileModelOptions): Model; + model(name: string, schema?: Schema | Schema, collection?: string, options?: CompileModelOptions): Model; /** Returns an array of model names created on this connection. */ modelNames(): Array; @@ -191,15 +197,15 @@ declare module 'mongoose' { set(key: string, value: any): any; /** - * Set the [MongoDB driver `MongoClient`](http://mongodb.github.io/node-mongodb-native/3.5/api/MongoClient.html) instance + * Set the [MongoDB driver `MongoClient`](https://mongodb.github.io/node-mongodb-native/4.9/classes/MongoClient.html) instance * that this connection uses to talk to MongoDB. This is useful if you already have a MongoClient instance, and want to * reuse it. */ setClient(client: mongodb.MongoClient): this; /** - * _Requires MongoDB >= 3.6.0._ Starts a [MongoDB session](https://docs.mongodb.com/manual/release-notes/3.6/#client-sessions) - * for benefits like causal consistency, [retryable writes](https://docs.mongodb.com/manual/core/retryable-writes/), + * _Requires MongoDB >= 3.6.0._ Starts a [MongoDB session](https://www.mongodb.com/docs/manual/release-notes/3.6/#client-sessions) + * for benefits like causal consistency, [retryable writes](https://www.mongodb.com/docs/manual/core/retryable-writes/), * and [transactions](http://thecodebarbarian.com/a-node-js-perspective-on-mongodb-4-transactions.html). */ startSession(options: ClientSessionOptions | undefined | null, callback: Callback): void; @@ -229,7 +235,7 @@ declare module 'mongoose' { /** The username specified in the URI */ readonly user: string; - /** Watches the entire underlying database for changes. Similar to [`Model.watch()`](/docs/api/model.html#model_Model.watch). */ + /** Watches the entire underlying database for changes. Similar to [`Model.watch()`](/docs/api/model.html#model_Model-watch). */ watch(pipeline?: Array, options?: mongodb.ChangeStreamOptions): mongodb.ChangeStream; } diff --git a/food-ordering-app/server/node_modules/mongoose/types/cursor.d.ts b/food-ordering-app/server/node_modules/mongoose/types/cursor.d.ts index 9042818e4..77b4eb28c 100644 --- a/food-ordering-app/server/node_modules/mongoose/types/cursor.d.ts +++ b/food-ordering-app/server/node_modules/mongoose/types/cursor.d.ts @@ -14,7 +14,7 @@ declare module 'mongoose' { [Symbol.asyncIterator](): AsyncIterableIterator; /** - * Adds a [cursor flag](http://mongodb.github.io/node-mongodb-native/2.2/api/Cursor.html#addCursorFlag). + * Adds a [cursor flag](https://mongodb.github.io/node-mongodb-native/4.9/classes/FindCursor.html#addCursorFlag). * Useful for setting the `noCursorTimeout` and `tailable` flags. */ addCursorFlag(flag: CursorFlag, value: boolean): this; @@ -26,16 +26,23 @@ declare module 'mongoose' { close(callback: CallbackWithoutResult): void; close(): Promise; + /** + * Rewind this cursor to its uninitialized state. Any options that are present on the cursor will + * remain in effect. Iterating this cursor will cause new queries to be sent to the server, even + * if the resultant data has already been retrieved by this cursor. + */ + rewind(): this; + /** * Execute `fn` for every document(s) in the cursor. If batchSize is provided * `fn` will be executed for each batch of documents. If `fn` returns a promise, * will wait for the promise to resolve before iterating on to the next one. * Returns a promise that resolves when done. */ - eachAsync(fn: (doc: DocType[]) => any, options: EachAsyncOptions & { batchSize: number }, callback: CallbackWithoutResult): void; - eachAsync(fn: (doc: DocType) => any, options: EachAsyncOptions, callback: CallbackWithoutResult): void; - eachAsync(fn: (doc: DocType[]) => any, options: EachAsyncOptions & { batchSize: number }): Promise; - eachAsync(fn: (doc: DocType) => any, options?: EachAsyncOptions): Promise; + eachAsync(fn: (doc: DocType[], index: number) => any, options: EachAsyncOptions & { batchSize: number }, callback: CallbackWithoutResult): void; + eachAsync(fn: (doc: DocType, index: number) => any, options: EachAsyncOptions, callback: CallbackWithoutResult): void; + eachAsync(fn: (doc: DocType[], index: number) => any, options: EachAsyncOptions & { batchSize: number }): Promise; + eachAsync(fn: (doc: DocType, index: number) => any, options?: EachAsyncOptions): Promise; /** * Registers a transform function which subsequently maps documents retrieved diff --git a/food-ordering-app/server/node_modules/mongoose/types/document.d.ts b/food-ordering-app/server/node_modules/mongoose/types/document.d.ts index adf170cc4..3a831ea01 100644 --- a/food-ordering-app/server/node_modules/mongoose/types/document.d.ts +++ b/food-ordering-app/server/node_modules/mongoose/types/document.d.ts @@ -26,7 +26,10 @@ declare module 'mongoose' { __v?: any; /** Assert that a given path or paths is populated. Throws an error if not populated. */ - $assertPopulated(paths: string | string[]): Omit & Paths; + $assertPopulated(path: string | string[], values?: Partial): Omit & Paths; + + /** Returns a deep clone of this document */ + $clone(): this; /* Get all subdocs (by bfs) */ $getAllSubdocs(): Document[]; @@ -43,6 +46,13 @@ declare module 'mongoose' { /** Returns an array of all populated documents associated with the query */ $getPopulatedDocs(): Document[]; + /** + * Increments the numeric value at `path` by the given `val`. + * When you call `save()` on this document, Mongoose will send a + * `$inc` as opposed to a `$set`. + */ + $inc(path: string | string[], val?: number): this; + /** * Returns true if the given path is nullish or only contains empty objects. * Useful for determining whether this subdoc will get stripped out by the @@ -157,7 +167,7 @@ declare module 'mongoose' { invalidate(path: string, errorMsg: string | NativeError, value?: any, kind?: string): NativeError | null; /** Returns true if `path` was directly set and modified, else false. */ - isDirectModified(path: string): boolean; + isDirectModified(path: string | Array): boolean; /** Checks if `path` was explicitly selected. If no projection, always returns true. */ isDirectSelected(path: string): boolean; @@ -169,7 +179,7 @@ declare module 'mongoose' { * Returns true if any of the given paths are modified, else false. If no arguments, returns `true` if any path * in this document is modified. */ - isModified(path?: string | Array): boolean; + isModified(path?: string | Array, options?: { ignoreAtomics?: boolean } | null): boolean; /** Boolean flag specifying if the document is new. */ isNew: boolean; @@ -183,9 +193,6 @@ declare module 'mongoose' { /** Returns the list of paths that have been modified. */ modifiedPaths(options?: { includeChildren?: boolean }): Array; - /** The name of the model */ - modelName: string; - /** * Overwrite all values in this document with the values of `obj`, except * for immutable properties. Behaves similarly to `set()`, except for it @@ -216,7 +223,7 @@ declare module 'mongoose' { /** Sends a replaceOne command with this document `_id` as the query selector. */ replaceOne(replacement?: AnyObject, options?: QueryOptions | null, callback?: Callback): Query; - /** Saves this document by inserting a new document into the database if [document.isNew](/docs/api.html#document_Document-isNew) is `true`, or sends an [updateOne](/docs/api.html#document_Document-updateOne) operation with just the modified paths if `isNew` is `false`. */ + /** Saves this document by inserting a new document into the database if [document.isNew](/docs/api/document.html#document_Document-isNew) is `true`, or sends an [updateOne](/docs/api/document.html#document_Document-updateOne) operation with just the modified paths if `isNew` is `false`. */ save(options: SaveOptions, callback: Callback): void; save(callback: Callback): void; save(options?: SaveOptions): Promise; diff --git a/food-ordering-app/server/node_modules/mongoose/types/error.d.ts b/food-ordering-app/server/node_modules/mongoose/types/error.d.ts index cab55c2b9..3dd82c506 100644 --- a/food-ordering-app/server/node_modules/mongoose/types/error.d.ts +++ b/food-ordering-app/server/node_modules/mongoose/types/error.d.ts @@ -129,5 +129,10 @@ declare module 'mongoose' { constructor(doc: Document, currentVersion: number, modifiedPaths: Array); } + + export class StrictPopulateError extends MongooseError { + name: 'StrictPopulateError'; + path: string; + } } } diff --git a/food-ordering-app/server/node_modules/mongoose/types/expressions.d.ts b/food-ordering-app/server/node_modules/mongoose/types/expressions.d.ts index 10ee0bf15..d278322c3 100644 --- a/food-ordering-app/server/node_modules/mongoose/types/expressions.d.ts +++ b/food-ordering-app/server/node_modules/mongoose/types/expressions.d.ts @@ -1,7 +1,7 @@ declare module 'mongoose' { /** - * [Expressions reference](https://docs.mongodb.com/manual/meta/aggregation-quick-reference/#expressions) + * [Expressions reference](https://www.mongodb.com/docs/manual/meta/aggregation-quick-reference/#expressions) */ type AggregationVariables = SpecialPathVariables | @@ -21,7 +21,7 @@ declare module 'mongoose' { /** * Returns the absolute value of a number. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/abs/#mongodb-expression-exp.-abs + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/abs/#mongodb-expression-exp.-abs */ $abs: Path | ArithmeticExpressionOperator; } @@ -30,7 +30,7 @@ declare module 'mongoose' { /** * Adds numbers to return the sum, or adds numbers and a date to return a new date. If adding numbers and a date, treats the numbers as milliseconds. Accepts any number of argument expressions, but at most, one expression can resolve to a date. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/add/#mongodb-expression-exp.-add + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/add/#mongodb-expression-exp.-add */ $add: Expression[]; } @@ -39,7 +39,7 @@ declare module 'mongoose' { /** * Returns the smallest integer greater than or equal to the specified number. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/ceil/#mongodb-expression-exp.-ceil + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/ceil/#mongodb-expression-exp.-ceil */ $ceil: NumberExpression; } @@ -48,7 +48,7 @@ declare module 'mongoose' { /** * Returns the result of dividing the first number by the second. Accepts two argument expressions. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/divide/#mongodb-expression-exp.-divide + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/divide/#mongodb-expression-exp.-divide */ $divide: NumberExpression[]; } @@ -57,7 +57,7 @@ declare module 'mongoose' { /** * Raises e to the specified exponent. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/exp/#mongodb-expression-exp.-exp + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/exp/#mongodb-expression-exp.-exp */ $exp: NumberExpression; } @@ -66,7 +66,7 @@ declare module 'mongoose' { /** * Returns the largest integer less than or equal to the specified number. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/floor/#mongodb-expression-exp.-floor + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/floor/#mongodb-expression-exp.-floor */ $floor: NumberExpression; } @@ -75,7 +75,7 @@ declare module 'mongoose' { /** * Calculates the natural log of a number. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/ln/#mongodb-expression-exp.-ln + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/ln/#mongodb-expression-exp.-ln */ $ln: NumberExpression; } @@ -84,7 +84,7 @@ declare module 'mongoose' { /** * Calculates the log of a number in the specified base. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/log/#mongodb-expression-exp.-log + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/log/#mongodb-expression-exp.-log */ $log: [NumberExpression, NumberExpression]; } @@ -93,7 +93,7 @@ declare module 'mongoose' { /** * Calculates the log base 10 of a number. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/log10/#mongodb-expression-exp.-log10 + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/log10/#mongodb-expression-exp.-log10 */ $log10: NumberExpression; } @@ -102,7 +102,7 @@ declare module 'mongoose' { /** * Returns the remainder of the first number divided by the second. Accepts two argument expressions. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/mod/#mongodb-expression-exp.-mod + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/mod/#mongodb-expression-exp.-mod */ $mod: [NumberExpression, NumberExpression]; } @@ -110,7 +110,7 @@ declare module 'mongoose' { /** * Multiplies numbers to return the product. Accepts any number of argument expressions. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/multiply/#mongodb-expression-exp.-multiply + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/multiply/#mongodb-expression-exp.-multiply */ $multiply: NumberExpression[]; } @@ -119,7 +119,7 @@ declare module 'mongoose' { /** * Raises a number to the specified exponent. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/pow/#mongodb-expression-exp.-pow + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/pow/#mongodb-expression-exp.-pow */ $pow: [NumberExpression, NumberExpression]; } @@ -128,7 +128,7 @@ declare module 'mongoose' { /** * Rounds a number to to a whole integer or to a specified decimal place. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/round/#mongodb-expression-exp.-round + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/round/#mongodb-expression-exp.-round */ $round: [NumberExpression, NumberExpression?]; } @@ -137,7 +137,7 @@ declare module 'mongoose' { /** * Calculates the square root. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/sqrt/#mongodb-expression-exp.-sqrt + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/sqrt/#mongodb-expression-exp.-sqrt */ $sqrt: NumberExpression; } @@ -146,7 +146,7 @@ declare module 'mongoose' { /** * Returns the result of subtracting the second value from the first. If the two values are numbers, return the difference. If the two values are dates, return the difference in milliseconds. If the two values are a date and a number in milliseconds, return the resulting date. Accepts two argument expressions. If the two values are a date and a number, specify the date argument first as it is not meaningful to subtract a date from a number. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/subtract/#mongodb-expression-exp.-subtract + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/subtract/#mongodb-expression-exp.-subtract */ $subtract: (NumberExpression | DateExpression)[]; } @@ -155,7 +155,7 @@ declare module 'mongoose' { /** * Truncates a number to a whole integer or to a specified decimal place. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/trunc/#mongodb-expression-exp.-trunc + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/trunc/#mongodb-expression-exp.-trunc */ $trunc: [NumberExpression, NumberExpression?]; } @@ -164,7 +164,7 @@ declare module 'mongoose' { /** * Returns the sine of a value that is measured in radians. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/sin/#mongodb-expression-exp.-sin + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/sin/#mongodb-expression-exp.-sin */ $sin: NumberExpression; } @@ -174,7 +174,7 @@ declare module 'mongoose' { * Returns the cosine of a value that is measured in radians. * * @version 4.2 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/cos/#mongodb-expression-exp.-cos + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/cos/#mongodb-expression-exp.-cos */ $cos: NumberExpression; } @@ -184,7 +184,7 @@ declare module 'mongoose' { * Returns the tangent of a value that is measured in radians. * * @version 4.2 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/tan/#mongodb-expression-exp.-tan + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/tan/#mongodb-expression-exp.-tan */ $tan: NumberExpression; } @@ -194,7 +194,7 @@ declare module 'mongoose' { * Returns the inverse sin (arc sine) of a value in radians. * * @version 4.2 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/asin/#mongodb-expression-exp.-asin + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/asin/#mongodb-expression-exp.-asin */ $asin: NumberExpression; } @@ -204,7 +204,7 @@ declare module 'mongoose' { * Returns the inverse cosine (arc cosine) of a value in radians. * * @version 4.2 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/acos/#mongodb-expression-exp.-acos + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/acos/#mongodb-expression-exp.-acos */ $acos: NumberExpression; } @@ -214,7 +214,7 @@ declare module 'mongoose' { * Returns the inverse tangent (arc tangent) of a value in radians. * * @version 4.2 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/atan/#mongodb-expression-exp.-atan + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/atan/#mongodb-expression-exp.-atan */ $atan: NumberExpression; } @@ -224,7 +224,7 @@ declare module 'mongoose' { * Returns the inverse tangent (arc tangent) of y / x in radians, where y and x are the first and second values passed to the expression respectively. * * @version 4.2 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/atan2/#mongodb-expression-exp.-atan2 + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/atan2/#mongodb-expression-exp.-atan2 */ $atan2: NumberExpression; } @@ -234,7 +234,7 @@ declare module 'mongoose' { * Returns the inverse hyperbolic sine (hyperbolic arc sine) of a value in radians. * * @version 4.2 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/asinh/#mongodb-expression-exp.-asinh + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/asinh/#mongodb-expression-exp.-asinh */ $asinh: NumberExpression; } @@ -244,7 +244,7 @@ declare module 'mongoose' { * Returns the inverse hyperbolic cosine (hyperbolic arc cosine) of a value in radians. * * @version 4.2 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/acosh/#mongodb-expression-exp.-acosh + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/acosh/#mongodb-expression-exp.-acosh */ $acosh: NumberExpression; } @@ -255,7 +255,7 @@ declare module 'mongoose' { * Returns the inverse hyperbolic tangent (hyperbolic arc tangent) of a value in radians. * * @version 4.2 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/atanh/#mongodb-expression-exp.-atanh + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/atanh/#mongodb-expression-exp.-atanh */ $atanh: NumberExpression; } @@ -265,7 +265,7 @@ declare module 'mongoose' { * Returns the hyperbolic sine of a value that is measured in radians. * * @version 4.2 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/sinh/#mongodb-expression-exp.-sinh + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/sinh/#mongodb-expression-exp.-sinh */ $sinh: NumberExpression; } @@ -275,7 +275,7 @@ declare module 'mongoose' { * Returns the hyperbolic cosine of a value that is measured in radians. * * @version 4.2 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/cosh/#mongodb-expression-exp.-cosh + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/cosh/#mongodb-expression-exp.-cosh */ $cosh: NumberExpression; } @@ -285,7 +285,7 @@ declare module 'mongoose' { * Returns the hyperbolic tangent of a value that is measured in radians. * * @version 4.2 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/tanh/#mongodb-expression-exp.-tanh + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/tanh/#mongodb-expression-exp.-tanh */ $tanh: NumberExpression; } @@ -295,7 +295,7 @@ declare module 'mongoose' { * Converts a value from degrees to radians. * * @version 4.2 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/degreesToRadians/#mongodb-expression-exp.-degreesToRadians + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/degreesToRadians/#mongodb-expression-exp.-degreesToRadians */ $degreesToRadians: NumberExpression; } @@ -305,7 +305,7 @@ declare module 'mongoose' { * Converts a value from radians to degrees. * * @version 4.2 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/radiansToDegrees/#mongodb-expression-exp.-radiansToDegrees + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/radiansToDegrees/#mongodb-expression-exp.-radiansToDegrees */ $radiansToDegrees: NumberExpression; } @@ -314,7 +314,7 @@ declare module 'mongoose' { /** * Access available per-document metadata related to the aggregation operation. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/meta/#mongodb-expression-exp.-meta + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/meta/#mongodb-expression-exp.-meta */ $meta: 'textScore' | 'indexKey'; } @@ -324,7 +324,7 @@ declare module 'mongoose' { * Adds a number of time units to a date object. * * @version 5.0.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/dateAdd/#mongodb-expression-exp.-dateAdd + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateAdd/#mongodb-expression-exp.-dateAdd */ $dateAdd: { /** @@ -360,7 +360,7 @@ declare module 'mongoose' { * Returns the difference between two dates. * * @version 5.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/dateDiff/#mongodb-expression-exp.-dateDiff + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateDiff/#mongodb-expression-exp.-dateDiff */ $dateDiff: { /** @@ -408,7 +408,7 @@ declare module 'mongoose' { * Constructs a BSON Date object given the date's constituent parts. * * @version 3.6 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/dateFromParts/#mongodb-expression-exp.-dateFromParts + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateFromParts/#mongodb-expression-exp.-dateFromParts */ $dateFromParts: { /** @@ -517,7 +517,7 @@ declare module 'mongoose' { * Converts a date/time string to a date object. * * @version 3.6 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/dateFromString/#mongodb-expression-exp.-dateFromString + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateFromString/#mongodb-expression-exp.-dateFromString */ $dateFromString: { dateString: StringExpression; @@ -554,7 +554,7 @@ declare module 'mongoose' { * Subtracts a number of time units from a date object. * * @version 5.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/dateSubtract/#mongodb-expression-exp.-dateSubtract + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateSubtract/#mongodb-expression-exp.-dateSubtract */ $dateSubtract: { /** @@ -592,7 +592,7 @@ declare module 'mongoose' { * Returns a document containing the constituent parts of a date. * * @version 3.6 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/dateToParts/#mongodb-expression-exp.-dateToParts + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateToParts/#mongodb-expression-exp.-dateToParts */ $dateToParts: { /** @@ -617,7 +617,7 @@ declare module 'mongoose' { * Returns the date as a formatted string. * * @version 3.6 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/dateToString/#mongodb-expression-exp.-dateToString + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateToString/#mongodb-expression-exp.-dateToString */ $dateToString: { /** @@ -654,7 +654,7 @@ declare module 'mongoose' { * Truncates a date. * * @version 5.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/dateTrunc/#mongodb-expression-exp.-dateTrunc + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateTrunc/#mongodb-expression-exp.-dateTrunc */ $dateTrunc: { /** @@ -704,7 +704,7 @@ declare module 'mongoose' { /** * Returns the day of the month for a date as a number between 1 and 31. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/dayOfMonth/#mongodb-expression-exp.-dayOfMonth + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfMonth/#mongodb-expression-exp.-dayOfMonth */ $dayOfMonth: DateExpression | { /** @@ -722,7 +722,7 @@ declare module 'mongoose' { /** * Returns the day of the week for a date as a number between 1 (Sunday) and 7 (Saturday). * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/dayOfWeek/#mongodb-expression-exp.-dayOfWeek + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfWeek/#mongodb-expression-exp.-dayOfWeek */ $dayOfWeek: DateExpression | { /** @@ -740,7 +740,7 @@ declare module 'mongoose' { /** * Returns the day of the year for a date as a number between 1 and 366 (leap year). * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/dayOfYear/#mongodb-expression-exp.-dayOfYear + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfYear/#mongodb-expression-exp.-dayOfYear */ $dayOfYear: DateExpression | { /** @@ -758,7 +758,7 @@ declare module 'mongoose' { /** * Returns the hour for a date as a number between 0 and 23. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/hour/#mongodb-expression-exp.-hour + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/hour/#mongodb-expression-exp.-hour */ $hour: DateExpression | { /** @@ -777,7 +777,7 @@ declare module 'mongoose' { * Returns the weekday number in ISO 8601 format, ranging from 1 (for Monday) to 7 (for Sunday). * * @version 3.4 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/isoDayOfWeek/#mongodb-expression-exp.-isoDayOfWeek + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoDayOfWeek/#mongodb-expression-exp.-isoDayOfWeek */ $isoDayOfWeek: DateExpression | { /** @@ -796,7 +796,7 @@ declare module 'mongoose' { * Returns the week number in ISO 8601 format, ranging from 1 to 53. Week numbers start at 1 with the week (Monday through Sunday) that contains the year's first Thursday. * * @version 3.4 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/isoWeek/#mongodb-expression-exp.-isoWeek + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoWeek/#mongodb-expression-exp.-isoWeek */ $isoWeek: DateExpression | { /** @@ -815,7 +815,7 @@ declare module 'mongoose' { * Returns the year number in ISO 8601 format. The year starts with the Monday of week 1 (ISO 8601) and ends with the Sunday of the last week (ISO 8601). * * @version 3.4 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/isoWeekYear/#mongodb-expression-exp.-isoWeekYear + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoWeekYear/#mongodb-expression-exp.-isoWeekYear */ $isoWeekYear: DateExpression | { /** @@ -833,7 +833,7 @@ declare module 'mongoose' { /** * Returns the milliseconds of a date as a number between 0 and 999. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/millisecond/#mongodb-expression-exp.-millisecond + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/millisecond/#mongodb-expression-exp.-millisecond */ $millisecond: DateExpression | { /** @@ -851,7 +851,7 @@ declare module 'mongoose' { /** * Returns the minute for a date as a number between 0 and 59. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/minute/#mongodb-expression-exp.-minute + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/minute/#mongodb-expression-exp.-minute */ $minute: DateExpression | { /** @@ -869,7 +869,7 @@ declare module 'mongoose' { /** * Returns the month for a date as a number between 1 (January) and 12 (December). * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/month/#mongodb-expression-exp.-month + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/month/#mongodb-expression-exp.-month */ $month: DateExpression | { /** @@ -887,7 +887,7 @@ declare module 'mongoose' { /** * Returns the seconds for a date as a number between 0 and 60 (leap seconds). * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/second/#mongodb-expression-exp.-second + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/second/#mongodb-expression-exp.-second */ $second: DateExpression | { /** @@ -906,7 +906,7 @@ declare module 'mongoose' { * Converts value to a Date. * * @version 4.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/toDate/#mongodb-expression-exp.-toDate + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDate/#mongodb-expression-exp.-toDate */ $toDate: Expression; } @@ -915,7 +915,7 @@ declare module 'mongoose' { /** * Returns the week number for a date as a number between 0 (the partial week that precedes the first Sunday of the year) and 53 (leap year). * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/week/#mongodb-expression-exp.-week + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/week/#mongodb-expression-exp.-week */ $week: DateExpression | { /** @@ -933,7 +933,7 @@ declare module 'mongoose' { /** * Returns the year for a date as a number (e.g. 2014). * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/year/#mongodb-expression-exp.-year + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/year/#mongodb-expression-exp.-year */ $year: DateExpression | { /** @@ -951,7 +951,7 @@ declare module 'mongoose' { /** * Returns true only when all its expressions evaluate to true. Accepts any number of argument expressions. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/and/#mongodb-expression-exp.-and + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/and/#mongodb-expression-exp.-and */ $and: (Expression | Record)[]; } @@ -960,7 +960,7 @@ declare module 'mongoose' { /** * Returns the boolean value that is the opposite of its argument expression. Accepts a single argument expression. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/not/#mongodb-expression-exp.-not + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/not/#mongodb-expression-exp.-not */ $not: [Expression]; } @@ -969,7 +969,7 @@ declare module 'mongoose' { /** * Returns true when any of its expressions evaluates to true. Accepts any number of argument expressions. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/or/#mongodb-expression-exp.-or + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/or/#mongodb-expression-exp.-or */ $or: (Expression | Record)[]; } @@ -978,7 +978,7 @@ declare module 'mongoose' { /** * Returns 0 if the two values are equivalent, 1 if the first value is greater than the second, and -1 if the first value is less than the second. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/cmp/#mongodb-expression-exp.-cmp + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/cmp/#mongodb-expression-exp.-cmp */ $cmp: [Record | Expression, Record | Expression]; } @@ -987,7 +987,7 @@ declare module 'mongoose' { /** * Returns true if the values are equivalent. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/eq/#mongodb-expression-exp.-eq + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/eq/#mongodb-expression-exp.-eq */ $eq: AnyExpression | [AnyExpression, AnyExpression]; } @@ -996,7 +996,7 @@ declare module 'mongoose' { /** * Returns true if the first value is greater than the second. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/gt/#mongodb-expression-exp.-gt + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/gt/#mongodb-expression-exp.-gt */ $gt: NumberExpression | [NumberExpression, NumberExpression]; } @@ -1005,7 +1005,7 @@ declare module 'mongoose' { /** * Returns true if the first value is greater than or equal to the second. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/gte/#mongodb-expression-exp.-gte + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/gte/#mongodb-expression-exp.-gte */ $gte: NumberExpression | [NumberExpression, NumberExpression]; } @@ -1014,7 +1014,7 @@ declare module 'mongoose' { /** * Returns true if the first value is less than the second. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/lt/#mongodb-expression-exp.-lt + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/lt/#mongodb-expression-exp.-lt */ $lt: NumberExpression | [NumberExpression, NumberExpression]; } @@ -1023,7 +1023,7 @@ declare module 'mongoose' { /** * Returns true if the first value is less than or equal to the second. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/lte/#mongodb-expression-exp.-lte + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/lte/#mongodb-expression-exp.-lte */ $lte: NumberExpression | [NumberExpression, NumberExpression]; } @@ -1032,7 +1032,7 @@ declare module 'mongoose' { /** * Returns true if the values are not equivalent. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/ne/#mongodb-expression-exp.-ne + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/ne/#mongodb-expression-exp.-ne */ $ne: Expression | [Expression, Expression | NullExpression] | null; } @@ -1041,7 +1041,7 @@ declare module 'mongoose' { /** * A ternary operator that evaluates one expression, and depending on the result, returns the value of one of the other two expressions. Accepts either three expressions in an ordered list or three named parameters. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/cond/#mongodb-expression-exp.-cond + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/cond/#mongodb-expression-exp.-cond */ $cond: { if: Expression, then: AnyExpression, else: AnyExpression } | [BooleanExpression, AnyExpression, AnyExpression]; } @@ -1050,7 +1050,7 @@ declare module 'mongoose' { /** * Returns either the non-null result of the first expression or the result of the second expression if the first expression results in a null result. Null result encompasses instances of undefined values or missing fields. Accepts two expressions as arguments. The result of the second expression can be null. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/ifNull/#mongodb-expression-exp.-ifNull + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/ifNull/#mongodb-expression-exp.-ifNull */ $ifNull: Expression[]; } @@ -1059,7 +1059,7 @@ declare module 'mongoose' { /** * Evaluates a series of case expressions. When it finds an expression which evaluates to true, $switch executes a specified expression and breaks out of the control flow. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/switch/#mongodb-expression-exp.-switch + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/switch/#mongodb-expression-exp.-switch */ $switch: { /** @@ -1067,13 +1067,13 @@ declare module 'mongoose' { * - $case * - $then */ - $branches: { $case: Expression, then: Expression }[]; + branches: { case: Expression, then: Expression }[]; /** * The path to take if no branch case expression evaluates to true. * * Although optional, if default is unspecified and no branch case evaluates to true, $switch returns an error. */ - $default: Expression; + default: Expression; }; } @@ -1082,7 +1082,7 @@ declare module 'mongoose' { * Returns the element at the specified array index. * * @version 3.2 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/arrayElemAt/#mongodb-expression-exp.-arrayElemAt + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/arrayElemAt/#mongodb-expression-exp.-arrayElemAt */ $arrayElemAt: [ArrayExpression, NumberExpression]; } @@ -1092,7 +1092,7 @@ declare module 'mongoose' { * Converts an array of key value pairs to a document. * * @version 3.4.4 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/arrayToObject/#mongodb-expression-exp.-arrayToObject + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/arrayToObject/#mongodb-expression-exp.-arrayToObject */ $arrayToObject: ArrayExpression; } @@ -1102,9 +1102,9 @@ declare module 'mongoose' { * Concatenates arrays to return the concatenated array. * * @version 3.2 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/concatArrays/#mongodb-expression-exp.-concatArrays + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/concatArrays/#mongodb-expression-exp.-concatArrays */ - $concatArrays: ArrayExpression[]; + $concatArrays: Expression[]; } export interface Filter { @@ -1112,7 +1112,7 @@ declare module 'mongoose' { * Selects a subset of the array to return an array with only the elements that match the filter condition. * * @version 3.2 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/filter/#mongodb-expression-exp.-filter + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/filter/#mongodb-expression-exp.-filter */ $filter: { /** @@ -1127,6 +1127,16 @@ declare module 'mongoose' { * An expression that resolves to a boolean value used to determine if an element should be included in the output array. The expression references each element of the input array individually with the variable name specified in as. */ cond: BooleanExpression; + /** + * A number expression that restricts the number of matching array elements that $filter returns. You cannot specify a limit less than 1. The matching array elements are returned in the order they appear in the input array. + * + * If the specified limit is greater than the number of matching array elements, $filter returns all matching array elements. + * If the limit is null, $filter returns all matching array elements. + * + * @version 5.2 + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/filter/#using-the-limit-field + */ + limit?: NumberExpression; } } @@ -1135,17 +1145,32 @@ declare module 'mongoose' { * Returns the first array element. Distinct from $first accumulator. * * @version 5.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/first/#mongodb-expression-exp.-first + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/first/#mongodb-expression-exp.-first */ $first: Expression; } + export interface FirstN { + /** + * $firstN can be used as an aggregation accumulator or array operator. + * As an aggregation accumulator, it returns an aggregation of the first n elements within a group. + * As an array operator, it returns the specified number of elements from the beginning of an array. + * + * @version 5.2 + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/firstN/#mongodb-expression-exp.-first + */ + $firstN: { + input: Expression + n: Expression, + }; + } + export interface In { /** * Returns a boolean indicating whether a specified value is in an array. * * @version 3.4 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/in/#mongodb-expression-exp.-in + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/in/#mongodb-expression-exp.-in */ $in: [Expression, ArrayExpression]; } @@ -1155,7 +1180,7 @@ declare module 'mongoose' { * Searches an array for an occurrence of a specified value and returns the array index of the first occurrence. If the substring is not found, returns -1. * * @version 3.4 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/indexOfArray/#mongodb-expression-exp.-indexOfArray + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfArray/#mongodb-expression-exp.-indexOfArray */ $indexOfArray: [ArrayExpression, Expression] | [ArrayExpression, Expression, NumberExpression] | [ArrayExpression, Expression, NumberExpression, NumberExpression]; } @@ -1165,7 +1190,7 @@ declare module 'mongoose' { * Determines if the operand is an array. Returns a boolean. * * @version 3.2 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/isArray/#mongodb-expression-exp.-isArray + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/isArray/#mongodb-expression-exp.-isArray */ $isArray: [Expression]; } @@ -1175,16 +1200,51 @@ declare module 'mongoose' { * Returns the last array element. Distinct from $last accumulator. * * @version 5.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/last/#mongodb-expression-exp.-last + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/last/#mongodb-expression-exp.-last */ $last: Expression; } + export interface LastN { + /** + * $lastN can be used as an aggregation accumulator or array operator. + * As an aggregation accumulator, it an aggregation of the last n elements within a group. + * As an array operator, it returns the specified number of elements from the end of an array. + * + * @version 5.2 + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/lastN/#mongodb-group-grp.-lastN + */ + $lastN: { + input: Expression + n: Expression, + }; + } + + export interface LinearFill { + /** + * Fills null and missing fields in a window using linear interpolation based on surrounding field values. + * + * @version 5.3 + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/linearFill + */ + $linearFill: Expression + } + + export interface Locf { + /** + * Last observation carried forward. Sets values for null and missing fields in a window to the last non-null value for the field. + * + * @version 5.2 + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/locf + */ + $locf: Expression + } + export interface Map { /** * Applies a subexpression to each element of an array and returns the array of resulting values in order. Accepts named parameters. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/map/#mongodb-expression-exp.-map + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/map/#mongodb-expression-exp.-map */ $map: { /** @@ -1207,7 +1267,7 @@ declare module 'mongoose' { * Converts a document to an array of documents representing key-value pairs. * * @version 3.4.4 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/objectToArray/#mongodb-expression-exp.-objectToArray + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/objectToArray/#mongodb-expression-exp.-objectToArray */ $objectToArray: ObjectExpression; } @@ -1216,7 +1276,7 @@ declare module 'mongoose' { /** * Outputs an array containing a sequence of integers according to user-defined inputs. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/range/#mongodb-expression-exp.-range + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/range/#mongodb-expression-exp.-range */ $range: [NumberExpression, NumberExpression] | [NumberExpression, NumberExpression, NumberExpression]; } @@ -1226,7 +1286,7 @@ declare module 'mongoose' { * Applies an expression to each element in an array and combines them into a single value. * * @version 3.4 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/reduce/#mongodb-expression-exp.-reduce + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/reduce/#mongodb-expression-exp.-reduce */ $reduce: { /** @@ -1257,7 +1317,7 @@ declare module 'mongoose' { * Returns an array with the elements in reverse order. * * @version 3.4 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/reverseArray/#mongodb-expression-exp.-reverseArray + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/reverseArray/#mongodb-expression-exp.-reverseArray */ $reverseArray: ArrayExpression; } @@ -1266,7 +1326,7 @@ declare module 'mongoose' { /** * Returns the number of elements in the array. Accepts a single expression as argument. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/size/#mongodb-expression-exp.-size + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/size/#mongodb-expression-exp.-size */ $size: ArrayExpression; } @@ -1276,7 +1336,7 @@ declare module 'mongoose' { * Returns a subset of an array. * * @version 3.2 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/slice/#mongodb-expression-exp.-slice + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/slice/#mongodb-expression-exp.-slice */ $slice: [ArrayExpression, NumberExpression] | [ArrayExpression, NumberExpression, NumberExpression]; } @@ -1286,7 +1346,7 @@ declare module 'mongoose' { * Merge two arrays together. * * @version 3.4 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/zip/#mongodb-expression-exp.-zip + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/zip/#mongodb-expression-exp.-zip */ $zip: { /** @@ -1318,7 +1378,7 @@ declare module 'mongoose' { /** * Concatenates any number of strings. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/concat/#mongodb-expression-exp.-concat + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/concat/#mongodb-expression-exp.-concat */ $concat: StringExpression[]; } @@ -1328,7 +1388,7 @@ declare module 'mongoose' { * Searches a string for an occurrence of a substring and returns the UTF-8 byte index of the first occurrence. If the substring is not found, returns -1. * * @version 3.4 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/indexOfBytes/#mongodb-expression-exp.-indexOfBytes + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfBytes/#mongodb-expression-exp.-indexOfBytes */ $indexOfBytes: [StringExpression, StringExpression] | [StringExpression, StringExpression, NumberExpression] | [StringExpression, StringExpression, NumberExpression, NumberExpression]; } @@ -1338,7 +1398,7 @@ declare module 'mongoose' { * Searches a string for an occurrence of a substring and returns the UTF-8 code point index of the first occurrence. If the substring is not found, returns -1 * * @version 3.4 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/indexOfCP/#mongodb-expression-exp.-indexOfCP + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfCP/#mongodb-expression-exp.-indexOfCP */ $indexOfCP: [StringExpression, StringExpression] | [StringExpression, StringExpression, NumberExpression] | [StringExpression, StringExpression, NumberExpression, NumberExpression]; } @@ -1348,7 +1408,7 @@ declare module 'mongoose' { * Removes whitespace or the specified characters from the beginning of a string. * * @version 4.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/ltrim/#mongodb-expression-exp.-ltrim + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/ltrim/#mongodb-expression-exp.-ltrim */ $ltrim: { /** @@ -1371,7 +1431,7 @@ declare module 'mongoose' { * Applies a regular expression (regex) to a string and returns information on the first matched substring. * * @version 4.2 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/regexFind/#mongodb-expression-exp.-regexFind + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexFind/#mongodb-expression-exp.-regexFind */ $regexFind: { /** @@ -1418,7 +1478,7 @@ declare module 'mongoose' { * Applies a regular expression (regex) to a string and returns information on the all matched substrings. * * @version 4.2 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/regexFindAll/#mongodb-expression-exp.-regexFindAll + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexFindAll/#mongodb-expression-exp.-regexFindAll */ $regexFindAll: { /** @@ -1465,7 +1525,7 @@ declare module 'mongoose' { * Applies a regular expression (regex) to a string and returns a boolean that indicates if a match is found or not. * * @version 4.2 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/regexMatch/#mongodb-expression-exp.-regexMatch + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexMatch/#mongodb-expression-exp.-regexMatch */ $regexMatch: { /** @@ -1512,7 +1572,7 @@ declare module 'mongoose' { * Replaces the first instance of a matched string in a given input. * * @version 4.4 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/replaceOne/#mongodb-expression-exp.-replaceOne + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceOne/#mongodb-expression-exp.-replaceOne */ $replaceOne: { /** @@ -1535,7 +1595,7 @@ declare module 'mongoose' { * Replaces all instances of a matched string in a given input. * * @version 4.4 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/replaceAll/#mongodb-expression-exp.-replaceAll + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceAll/#mongodb-expression-exp.-replaceAll */ $replaceAll: { /** @@ -1558,7 +1618,7 @@ declare module 'mongoose' { * Removes whitespace or the specified characters from the end of a string. * * @version 4.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/rtrim/#mongodb-expression-exp.-rtrim + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/rtrim/#mongodb-expression-exp.-rtrim */ $rtrim: { /** @@ -1581,7 +1641,7 @@ declare module 'mongoose' { * Splits a string into substrings based on a delimiter. Returns an array of substrings. If the delimiter is not found within the string, returns an array containing the original string. * * @version 3.4 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/split/#mongodb-expression-exp.-split + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/split/#mongodb-expression-exp.-split */ $split: [StringExpression, StringExpression]; } @@ -1591,7 +1651,7 @@ declare module 'mongoose' { * Returns the number of UTF-8 encoded bytes in a string. * * @version 3.4 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/strLenBytes/#mongodb-expression-exp.-strLenBytes + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/strLenBytes/#mongodb-expression-exp.-strLenBytes */ $strLenBytes: StringExpression; } @@ -1601,7 +1661,7 @@ declare module 'mongoose' { * Returns the number of UTF-8 code points in a string. * * @version 3.4 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/strLenCP/#mongodb-expression-exp.-strLenCP + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/strLenCP/#mongodb-expression-exp.-strLenCP */ $strLenCP: StringExpression; } @@ -1610,7 +1670,7 @@ declare module 'mongoose' { /** * Performs case-insensitive string comparison and returns: 0 if two strings are equivalent, 1 if the first string is greater than the second, and -1 if the first string is less than the second. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/strcasecmp/#mongodb-expression-exp.-strcasecmp + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/strcasecmp/#mongodb-expression-exp.-strcasecmp */ $strcasecmp: [StringExpression, StringExpression]; } @@ -1621,7 +1681,7 @@ declare module 'mongoose' { * * @deprecated 3.4 * @alias {Expression.SubstrBytes} - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/substr/#mongodb-expression-exp.-substr + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/substr/#mongodb-expression-exp.-substr */ $substr: [StringExpression, number, number]; } @@ -1631,7 +1691,7 @@ declare module 'mongoose' { * Returns the substring of a string. Starts with the character at the specified UTF-8 byte index (zero-based) in the string and continues for the specified number of bytes. * * @version 3.4 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/substrBytes/#mongodb-expression-exp.-substrBytes + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/substrBytes/#mongodb-expression-exp.-substrBytes */ $substrBytes: [StringExpression, number, number]; } @@ -1641,7 +1701,7 @@ declare module 'mongoose' { * Returns the substring of a string. Starts with the character at the specified UTF-8 code point (CP) index (zero-based) in the string and continues for the number of code points specified. * * @version 3.4 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/substrCP/#mongodb-expression-exp.-substrCP + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/substrCP/#mongodb-expression-exp.-substrCP */ $substrCP: [StringExpression, number, number]; } @@ -1650,7 +1710,7 @@ declare module 'mongoose' { /** * Converts a string to lowercase. Accepts a single argument expression. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/toLower/#mongodb-expression-exp.-toLower + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/toLower/#mongodb-expression-exp.-toLower */ $toLower: StringExpression; } @@ -1660,7 +1720,7 @@ declare module 'mongoose' { * Converts value to a string. * * @version 4.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/toString/#mongodb-expression-exp.-toString + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/toString/#mongodb-expression-exp.-toString */ $toString: Expression; } @@ -1670,7 +1730,7 @@ declare module 'mongoose' { * Removes whitespace or the specified characters from the beginning and end of a string. * * @version 4.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/trim/#mongodb-expression-exp.-trim + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/trim/#mongodb-expression-exp.-trim */ $trim: { /** @@ -1692,7 +1752,7 @@ declare module 'mongoose' { /** * Converts a string to uppercase. Accepts a single argument expression. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/toUpper/#mongodb-expression-exp.-toUpper + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/toUpper/#mongodb-expression-exp.-toUpper */ $toUpper: StringExpression; } @@ -1703,7 +1763,7 @@ declare module 'mongoose' { * Returns a value without parsing. Use for values that the aggregation pipeline may interpret as an * expression. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/literal/#mongodb-expression-exp.-literal + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/literal/#mongodb-expression-exp.-literal */ $literal: any; } @@ -1715,7 +1775,7 @@ declare module 'mongoose' { * the value of the field from $$CURRENT. * * @version 4.4.2 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/getField/#mongodb-expression-exp.-getField + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/getField/#mongodb-expression-exp.-getField */ $getField: { /** @@ -1738,7 +1798,7 @@ declare module 'mongoose' { * Returns a random float between 0 and 1 each time it is called. * * @version 4.4.2 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/rand/#mongodb-expression-exp.-rand + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/rand/#mongodb-expression-exp.-rand */ $rand: Record; } @@ -1750,7 +1810,7 @@ declare module 'mongoose' { * rate expressed as a percentage of the total number of documents. * * @version 4.4.2 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/sampleRate/#mongodb-expression-exp.-sampleRate + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/sampleRate/#mongodb-expression-exp.-sampleRate */ $sampleRate: number; } @@ -1761,7 +1821,7 @@ declare module 'mongoose' { * Combines multiple documents into a single document. * * @version 3.6 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/mergeObjects/#mongodb-expression-exp.-mergeObjects + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/mergeObjects/#mongodb-expression-exp.-mergeObjects */ $mergeObjects: ObjectExpression | ObjectExpression[] | ArrayExpression; } @@ -1772,7 +1832,7 @@ declare module 'mongoose' { * Adds, updates, or removes a specified field in a document. * * @version 5.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/setField/#mongodb-expression-exp.-setField + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/setField/#mongodb-expression-exp.-setField */ $setField: { /** @@ -1798,7 +1858,7 @@ declare module 'mongoose' { * Removes a specified field in a document. * * @version 5.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/unsetField/#mongodb-expression-exp.-unsetField + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/unsetField/#mongodb-expression-exp.-unsetField */ $unsetField: { /** @@ -1820,7 +1880,7 @@ declare module 'mongoose' { * Binds variables for use in the specified expression, and returns the result of the expression. * * @version 5.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/let/#mongodb-expression-exp.-let + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/let/#mongodb-expression-exp.-let */ $let: { /** @@ -1840,7 +1900,7 @@ declare module 'mongoose' { * Evaluates an array as a set and returns true if no element in the array is false. Otherwise, returns false. An * empty array returns true. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/allElementsTrue/#mongodb-expression-exp.-allElementsTrue + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/allElementsTrue/#mongodb-expression-exp.-allElementsTrue */ $allElementsTrue: ArrayExpression; } @@ -1850,7 +1910,7 @@ declare module 'mongoose' { * Evaluates an array as a set and returns true if any of the elements are true and false otherwise. An empty * array returns false. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/anyElementsTrue/#mongodb-expression-exp.-anyElementsTrue + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/anyElementsTrue/#mongodb-expression-exp.-anyElementsTrue */ $anyElementTrue: ArrayExpression; } @@ -1860,7 +1920,7 @@ declare module 'mongoose' { * Takes two sets and returns an array containing the elements that only exist in the first set; i.e. performs a * relative complement of the second set relative to the first. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/setDifference/#mongodb-expression-exp.-setDifference + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/setDifference/#mongodb-expression-exp.-setDifference */ $setDifference: [ArrayExpression, ArrayExpression]; } @@ -1869,7 +1929,7 @@ declare module 'mongoose' { /** * Compares two or more arrays and returns true if they have the same distinct elements and false otherwise. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/setEquals/#mongodb-expression-exp.-setEquals + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/setEquals/#mongodb-expression-exp.-setEquals */ $setEquals: ArrayExpression[]; } @@ -1878,7 +1938,7 @@ declare module 'mongoose' { /** * Takes two or more arrays and returns an array that contains the elements that appear in every input array. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/setIntersection/#mongodb-expression-exp.-setIntersection + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/setIntersection/#mongodb-expression-exp.-setIntersection */ $setIntersection: ArrayExpression[]; } @@ -1888,7 +1948,7 @@ declare module 'mongoose' { * Takes two arrays and returns true when the first array is a subset of the second, including when the first * array equals the second array, and false otherwise. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/setIsSubset/#mongodb-expression-exp.-setIsSubset + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/setIsSubset/#mongodb-expression-exp.-setIsSubset */ $setIsSubset: [ArrayExpression, ArrayExpression]; } @@ -1897,7 +1957,7 @@ declare module 'mongoose' { /** * Takes two or more arrays and returns an array containing the elements that appear in any input array. * - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/setUnion/#mongodb-expression-exp.-setUnion + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/setUnion/#mongodb-expression-exp.-setUnion */ $setUnion: ArrayExpression[]; } @@ -1910,7 +1970,7 @@ declare module 'mongoose' { * also $function. * * @version 4.4 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/accumulator/#mongodb-expression-exp.-accumulator + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/accumulator/#mongodb-expression-exp.-accumulator */ $accumulator: { /** @@ -1955,7 +2015,7 @@ declare module 'mongoose' { * Returns an array of all unique values that results from applying an expression to each document in a group. * * @version 5.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/addToSet/#mongodb-expression-exp.-addToSet + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/addToSet/#mongodb-expression-exp.-addToSet */ $addToSet: Expression | Record; } @@ -1965,19 +2025,47 @@ declare module 'mongoose' { * Returns the average value of the numeric values. $avg ignores non-numeric values. * * @version 5.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/avg/#mongodb-expression-exp.-avg + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/avg/#mongodb-expression-exp.-avg */ $avg: Expression; } + export interface Bottom { + /** + * Returns the bottom element within a group according to the specified sort order. + * + * @version 5.2 + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/bottom/#mongodb-group-grp.-bottom + */ + $bottom: { + sortBy: AnyObject, + output: Expression + }; + } + + export interface BottomN { + /** + * Returns an aggregation of the bottom n elements within a group, according to the specified sort order. + * If the group contains fewer than n elements, $bottomN returns all elements in the group. + * + * @version 5.2 + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/bottomN/#mongodb-group-grp.-bottomN + */ + $bottomN: { + n: Expression, + sortBy: AnyObject, + output: Expression + }; + } + export interface Count { /** * Returns the number of documents in a group. * * @version 5.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/count/#mongodb-expression-exp.-count + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/count/#mongodb-expression-exp.-count */ - $count: Record; + $count: Record | Path; } export interface CovariancePop { @@ -1986,7 +2074,7 @@ declare module 'mongoose' { * $setWindowFields stage window. * * @version 5.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/covariancePop/#mongodb-expression-exp.-covariancePop + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/covariancePop/#mongodb-expression-exp.-covariancePop */ $covariancePop: [NumberExpression, NumberExpression]; } @@ -1997,7 +2085,7 @@ declare module 'mongoose' { * $setWindowFields stage window. * * @version 5.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/covarianceSamp/#mongodb-expression-exp.-covarianceSamp + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/covarianceSamp/#mongodb-expression-exp.-covarianceSamp */ $covarianceSamp: [NumberExpression, NumberExpression]; } @@ -2008,7 +2096,7 @@ declare module 'mongoose' { * partition. * * @version 5.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/denseRank/#mongodb-expression-exp.-denseRank + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/denseRank/#mongodb-expression-exp.-denseRank */ $denseRank: Record; } @@ -2018,7 +2106,7 @@ declare module 'mongoose' { * Returns the average rate of change within the specified window, which is calculated using the: * * @version 5.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/derivative/#mongodb-expression-exp.-derivative + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/derivative/#mongodb-expression-exp.-derivative */ $derivative: { /** @@ -2037,7 +2125,7 @@ declare module 'mongoose' { * Returns the position of a document (known as the document number) in the $setWindowFields stage partition. * * @version 5.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/documentNumber/#mongodb-expression-exp.-documentNumber + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/documentNumber/#mongodb-expression-exp.-documentNumber */ $documentNumber: Record; } @@ -2048,7 +2136,7 @@ declare module 'mongoose' { * the $setWindowFields stage. * * @version 5.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/expMovingAvg/#mongodb-expression-exp.-expMovingAvg + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/expMovingAvg/#mongodb-expression-exp.-expMovingAvg */ $expMovingAvg: { /** @@ -2102,7 +2190,7 @@ declare module 'mongoose' { * set of adjacent documents form a trapezoid using the: * * @version 5.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/integral/#mongodb-expression-exp.-integral + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/integral/#mongodb-expression-exp.-integral */ $integral: { /** @@ -2123,28 +2211,56 @@ declare module 'mongoose' { * values of different types. * * @version 5.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/max/#mongodb-expression-exp.-max + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/max/#mongodb-expression-exp.-max */ $max: Expression | Expression[]; } + export interface MaxN { + /** + * Returns an aggregation of the maxmimum value n elements within a group. + * If the group contains fewer than n elements, $maxN returns all elements in the group. + * + * @version 5.2 + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/maxN/#mongodb-group-grp.-maxN + */ + $maxN: { + input: Expression + n: Expression, + }; + } + export interface Min { /** * Returns the minimum value. $min compares both value and type, using the specified BSON comparison order for * values of different types. * * @version 5.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/min/#mongodb-expression-exp.-min + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/min/#mongodb-expression-exp.-min */ $min: Expression | Expression[]; } + export interface MinN { + /** + * Returns an aggregation of the minimum value n elements within a group. + * If the group contains fewer than n elements, $minN returns all elements in the group. + * + * @version 5.2 + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/minN/#mongodb-group-grp.-minN + */ + $minN: { + input: Expression + n: Expression, + }; + } + export interface Push { /** * Returns an array of all values that result from applying an expression to documents. * * @version 5.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/push/#mongodb-expression-exp.-push + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/push/#mongodb-expression-exp.-push */ $push: Expression | Record; } @@ -2155,7 +2271,7 @@ declare module 'mongoose' { * partition. * * @version 5.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/rank/#mongodb-expression-exp.-rank + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/rank/#mongodb-expression-exp.-rank */ $rank: Record; } @@ -2166,7 +2282,7 @@ declare module 'mongoose' { * document in the $setWindowFields stage partition. * * @version 5.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/shift/#mongodb-expression-exp.-shift + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/shift/#mongodb-expression-exp.-shift */ $shift: { /** @@ -2192,7 +2308,7 @@ declare module 'mongoose' { * ignores non-numeric values. * * @version 5.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/stdDevPop/#mongodb-expression-exp.-stdDevPop + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevPop/#mongodb-expression-exp.-stdDevPop */ $stdDevPop: Expression; } @@ -2203,7 +2319,7 @@ declare module 'mongoose' { * population of data from which to generalize about the population. $stdDevSamp ignores non-numeric values. * * @version 5.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/stdDevSamp/#mongodb-expression-exp.-stdDevSamp + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevSamp/#mongodb-expression-exp.-stdDevSamp */ $stdDevSamp: Expression; } @@ -2213,7 +2329,7 @@ declare module 'mongoose' { * Calculates and returns the collective sum of numeric values. $sum ignores non-numeric values. * * @version 5.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/sum/#mongodb-expression-exp.-sum + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/sum/#mongodb-expression-exp.-sum */ $sum: number | Expression | Expression[]; } @@ -2227,7 +2343,7 @@ declare module 'mongoose' { * - Long * * @version 4.4 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/convert/#mongodb-expression-exp.-convert + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/convert/#mongodb-expression-exp.-convert */ $convert: { input: Expression; @@ -2246,7 +2362,7 @@ declare module 'mongoose' { * - Long * * @version 4.4 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/isNumber/#mongodb-expression-exp.-isNumber + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/isNumber/#mongodb-expression-exp.-isNumber */ $isNumber: Expression; } @@ -2256,7 +2372,7 @@ declare module 'mongoose' { * Converts a value to a boolean. * * @version 4.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/toBool/#mongodb-expression-exp.-toBool + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/toBool/#mongodb-expression-exp.-toBool */ $toBool: Expression; } @@ -2267,7 +2383,7 @@ declare module 'mongoose' { * is null or missing, $toDecimal returns null. * * @version 4.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/toDecimal/#mongodb-expression-exp.-toDecimal + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDecimal/#mongodb-expression-exp.-toDecimal */ $toDecimal: Expression; } @@ -2278,7 +2394,7 @@ declare module 'mongoose' { * null or missing, $toDouble returns null. * * @version 4.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/toDouble/#mongodb-expression-exp.-toDouble + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDouble/#mongodb-expression-exp.-toDouble */ $toDouble: Expression; } @@ -2289,7 +2405,7 @@ declare module 'mongoose' { * missing, $toLong returns null. * * @version 4.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/toInt/#mongodb-expression-exp.-toInt + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/toInt/#mongodb-expression-exp.-toInt */ $toInt: Expression; } @@ -2300,7 +2416,7 @@ declare module 'mongoose' { * missing, $toLong returns null. * * @version 4.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/toLong/#mongodb-expression-exp.-toLong + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/toLong/#mongodb-expression-exp.-toLong */ $toLong: Expression; } @@ -2311,7 +2427,7 @@ declare module 'mongoose' { * value is null or missing, $toObjectId returns null. * * @version 4.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/toObjectId/#mongodb-expression-exp.-toObjectId + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/toObjectId/#mongodb-expression-exp.-toObjectId */ $toObjectId: Expression; } @@ -2337,7 +2453,7 @@ declare module 'mongoose' { * null or missing, $toString returns null. * * @version 4.0 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/toString/#mongodb-expression-exp.-toString + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/toString/#mongodb-expression-exp.-toString */ $toString: Expression; } @@ -2347,7 +2463,7 @@ declare module 'mongoose' { * Returns a string that specifies the BSON type of the argument. * * @version 3.4 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/type/#mongodb-expression-exp.-type + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/type/#mongodb-expression-exp.-type */ $type: Expression; } @@ -2357,7 +2473,7 @@ declare module 'mongoose' { * Returns the size of a given string or binary data value's content in bytes. * * @version 4.4 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/binarySize/#mongodb-expression-exp.-binarySize + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/binarySize/#mongodb-expression-exp.-binarySize */ $binarySize: NullExpression | StringExpression | BinaryExpression; } @@ -2368,7 +2484,7 @@ declare module 'mongoose' { * $bsonSize as an alternative to the Object.bsonSize() method. * * @version 4.4 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/bsonSize/#mongodb-expression-exp.-bsonSize + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/bsonSize/#mongodb-expression-exp.-bsonSize */ $bsonSize: NullExpression | ObjectExpression; } @@ -2378,7 +2494,7 @@ declare module 'mongoose' { * Defines a custom aggregation function or expression in JavaScript. * * @version 4.4 - * @see https://docs.mongodb.com/manual/reference/operator/aggregation/function/#mongodb-expression-exp.-function + * @see https://www.mongodb.com/docs/manual/reference/operator/aggregation/function/#mongodb-expression-exp.-function */ $function: { /** @@ -2448,7 +2564,8 @@ declare module 'mongoose' { BinaryExpression | FunctionExpression | ObjectIdExpression | - ConditionalExpressionOperator; + ConditionalExpressionOperator | + any; export type ObjectIdExpression = TypeExpressionOperatorReturningObjectId; @@ -2574,6 +2691,8 @@ declare module 'mongoose' { export type ArrayExpressionOperatorReturningArray = Expression.ConcatArrays | Expression.Filter | + Expression.FirstN | + Expression.LastN | Expression.Map | Expression.ObjectToArray | Expression.Range | @@ -2732,10 +2851,16 @@ declare module 'mongoose' { Expression.DocumentNumber | Expression.ExpMovingAvg | Expression.First | + Expression.FirstN | Expression.Integral | Expression.Last | + Expression.LastN | + Expression.LinearFill | + Expression.Locf | Expression.Max | + Expression.MaxN | Expression.Min | + Expression.MinN | Expression.Push | Expression.Rank | Expression.Shift | @@ -2750,6 +2875,10 @@ declare module 'mongoose' { export type WindowOperatorReturningArray = Expression.AddToSet | + Expression.FirstN | + Expression.LastN | + Expression.MaxN | + Expression.MinN | Expression.Push; export type WindowOperatorReturningNumber = @@ -2825,16 +2954,24 @@ declare module 'mongoose' { Expression.Accumulator | Expression.AddToSet | Expression.Avg | + Expression.Bottom | + Expression.BottomN | Expression.Count | Expression.First | + Expression.FirstN | Expression.Last | + Expression.LastN | Expression.Max | + Expression.MaxN | Expression.MergeObjects | Expression.Min | + Expression.MinN | Expression.Push | Expression.StdDevPop | Expression.StdDevSamp | - Expression.Sum; + Expression.Sum | + Expression.Top | + Expression.TopN; export type tzExpression = UTCOffset | StringExpressionOperatorReturningBoolean | string; diff --git a/food-ordering-app/server/node_modules/mongoose/types/index.d.ts b/food-ordering-app/server/node_modules/mongoose/types/index.d.ts index 00252c43d..8a12e688a 100644 --- a/food-ordering-app/server/node_modules/mongoose/types/index.d.ts +++ b/food-ordering-app/server/node_modules/mongoose/types/index.d.ts @@ -21,6 +21,8 @@ /// /// /// +/// +/// declare class NativeDate extends global.Date { } @@ -57,24 +59,39 @@ declare module 'mongoose' { */ export function deleteModel(name: string | RegExp): Mongoose; + /** + * Sanitizes query filters against query selector injection attacks by wrapping + * any nested objects that have a property whose name starts with `$` in a `$eq`. + */ + export function sanitizeFilter(filter: FilterQuery): FilterQuery; + /** Gets mongoose options */ export function get(key: K): MongooseOptions[K]; /* ! ignore */ - export type CompileModelOptions = { overwriteModels?: boolean, connection?: Connection }; + export type CompileModelOptions = { + overwriteModels?: boolean, + connection?: Connection + }; export function model( name: string, schema?: TSchema, collection?: string, options?: CompileModelOptions - ): Model, ObtainSchemaGeneric, ObtainSchemaGeneric, {}, TSchema> & ObtainSchemaGeneric; + ): Model< + InferSchemaType, + ObtainSchemaGeneric, + ObtainSchemaGeneric, + ObtainSchemaGeneric, + TSchema + > & ObtainSchemaGeneric; export function model(name: string, schema?: Schema | Schema, collection?: string, options?: CompileModelOptions): Model; export function model( name: string, - schema?: Schema, + schema?: Schema, collection?: string, options?: CompileModelOptions ): U; @@ -99,6 +116,7 @@ declare module 'mongoose' { /** Sets mongoose options */ export function set(key: K, value: MongooseOptions[K]): Mongoose; + export function set(options: { [K in keyof MongooseOptions]: MongooseOptions[K] }): Mongoose; /** The Mongoose version */ export const version: string; @@ -109,16 +127,18 @@ declare module 'mongoose' { } export type Require_id = T extends { _id?: infer U } - ? U extends any - ? (T & { _id: Types.ObjectId }) - : T & Required<{ _id: U }> + ? IfAny> : T & { _id: Types.ObjectId }; - export type RequireOnlyTypedId = T extends { _id?: infer U; } - ? Required<{ _id: U }> - : { _id: Types.ObjectId }; + export type HydratedDocument = DocType extends Document ? + Require_id : + Document & MergeType, TVirtuals & TMethodsAndOverrides>; - export type HydratedDocument = DocType extends Document ? Require_id : (Document & Require_id & TVirtuals & TMethodsAndOverrides); + export type HydratedDocumentFromSchema = HydratedDocument< + InferSchemaType, + ObtainSchemaGeneric, + ObtainSchemaGeneric + >; export interface TagSet { [k: string]: string; @@ -152,25 +172,46 @@ declare module 'mongoose' { : M : M; - export type DiscriminatorSchema = T extends Schema - ? Schema & T1, DiscriminatorModel, T3 | TInstanceMethods, T4 | TQueryHelpers, T5 | TVirtuals> - : Schema; + export type DiscriminatorSchema = + DisSchema extends Schema + ? Schema & DisSchemaEDocType, DiscriminatorModel, DisSchemaInstanceMethods | TInstanceMethods, DisSchemaQueryhelpers | TQueryHelpers, DisSchemaVirtuals | TVirtuals, DisSchemaStatics & TStaticMethods> + : Schema; type QueryResultType = T extends Query ? ResultType : never; - export class Schema, TInstanceMethods = {}, TQueryHelpers = {}, TVirtuals = any, + type PluginFunction< + DocType, + M, + TInstanceMethods, + TQueryHelpers, + TVirtuals, + TStaticMethods> = (schema: Schema, opts?: any) => void; + + export class Schema< + EnforcedDocType = any, + M = Model, + TInstanceMethods = {}, + TQueryHelpers = {}, + TVirtuals = {}, TStaticMethods = {}, - TPathTypeKey extends TypeKeyBaseType = DefaultTypeKey, - DocType extends ObtainDocumentType = ObtainDocumentType> + TSchemaOptions extends ResolveSchemaOptions = DefaultSchemaOptions, + DocType extends ApplySchemaOptions, TSchemaOptions> = ApplySchemaOptions, TSchemaOptions>, + > extends events.EventEmitter { /** * Create a new schema */ - constructor(definition?: SchemaDefinition> | DocType, options?: SchemaOptions, TInstanceMethods, TQueryHelpers, TStaticMethods>); + constructor(definition?: SchemaDefinition> | DocType, options?: SchemaOptions, TInstanceMethods, TQueryHelpers, TStaticMethods, TVirtuals> | TSchemaOptions); /** Adds key path / schema type pairs to this schema. */ add(obj: SchemaDefinition> | Schema, prefix?: string): this; + /** + * Add an alias for `path`. This means getting or setting the `alias` + * is equivalent to getting or setting the `path`. + */ + alias(path: string, alias: string | string[]): this; + /** * Array of child schemas (from document arrays and single nested subdocs) * and their corresponding compiled models. Each element of the array is @@ -184,7 +225,7 @@ declare module 'mongoose' { /** Returns a copy of this schema */ clone(): T; - discriminator(name: string, schema: T): DiscriminatorSchema; + discriminator(name: string, schema: DisSchema): this; /** Returns a new schema that has the picked `paths` from this schema. */ pick(paths: string[], options?: SchemaOptions): T; @@ -227,8 +268,8 @@ declare module 'mongoose' { obj: SchemaDefinition>; /** Gets/sets schema paths. */ + path>>(path: string): ResultType; path(path: pathGeneric): SchemaType; - path(path: string): ResultType; path(path: string, constructor: any): this; /** Lists all paths and their type in the schema. */ @@ -240,35 +281,49 @@ declare module 'mongoose' { pathType(path: string): string; /** Registers a plugin for this schema. */ - plugin(fn: (schema: Schema, opts?: any) => void, opts?: any): this; + plugin, POptions extends Parameters[1] = Parameters[1]>(fn: PFunc, opts?: POptions): this; /** Defines a post hook for the model. */ + post>(method: MongooseQueryMiddleware | MongooseQueryMiddleware[] | RegExp, options: SchemaPostOptions & { errorHandler: true }, fn: ErrorHandlingMiddlewareWithOption): this; + post>(method: MongooseDocumentMiddleware | MongooseDocumentMiddleware[] | RegExp, options: SchemaPostOptions & { errorHandler: true }, fn: ErrorHandlingMiddlewareWithOption): this; + post>(method: 'aggregate' | RegExp, options: SchemaPostOptions & { errorHandler: true }, fn: ErrorHandlingMiddlewareWithOption>): this; + post(method: 'insertMany' | RegExp, options: SchemaPostOptions & { errorHandler: true }, fn: ErrorHandlingMiddlewareWithOption): this; + + post>(method: MongooseQueryMiddleware | MongooseQueryMiddleware[] | RegExp, fn: PostMiddlewareFunction>): this; + post>(method: MongooseQueryMiddleware | MongooseQueryMiddleware[] | RegExp, options: SchemaPostOptions, fn: PostMiddlewareFunction>): this; post>(method: MongooseDocumentMiddleware | MongooseDocumentMiddleware[] | RegExp, fn: PostMiddlewareFunction): this; post>(method: MongooseDocumentMiddleware | MongooseDocumentMiddleware[] | RegExp, options: SchemaPostOptions, fn: PostMiddlewareFunction): this; - post>(method: MongooseQueryMiddleware | MongooseQueryMiddleware[] | string | RegExp, fn: PostMiddlewareFunction>): this; - post>(method: MongooseQueryMiddleware | MongooseQueryMiddleware[] | string | RegExp, options: SchemaPostOptions, fn: PostMiddlewareFunction>): this; post>(method: 'aggregate' | RegExp, fn: PostMiddlewareFunction>>): this; post>(method: 'aggregate' | RegExp, options: SchemaPostOptions, fn: PostMiddlewareFunction>>): this; post(method: 'insertMany' | RegExp, fn: PostMiddlewareFunction): this; post(method: 'insertMany' | RegExp, options: SchemaPostOptions, fn: PostMiddlewareFunction): this; + post>(method: MongooseQueryMiddleware | MongooseQueryMiddleware[] | RegExp, fn: ErrorHandlingMiddlewareFunction): this; + post>(method: MongooseQueryMiddleware | MongooseQueryMiddleware[] | RegExp, options: SchemaPostOptions, fn: ErrorHandlingMiddlewareFunction): this; post>(method: MongooseDocumentMiddleware | MongooseDocumentMiddleware[] | RegExp, fn: ErrorHandlingMiddlewareFunction): this; post>(method: MongooseDocumentMiddleware | MongooseDocumentMiddleware[] | RegExp, options: SchemaPostOptions, fn: ErrorHandlingMiddlewareFunction): this; - post>(method: MongooseQueryMiddleware | MongooseQueryMiddleware[] | string | RegExp, fn: ErrorHandlingMiddlewareFunction): this; - post>(method: MongooseQueryMiddleware | MongooseQueryMiddleware[] | string | RegExp, options: SchemaPostOptions, fn: ErrorHandlingMiddlewareFunction): this; post>(method: 'aggregate' | RegExp, fn: ErrorHandlingMiddlewareFunction>): this; post>(method: 'aggregate' | RegExp, options: SchemaPostOptions, fn: ErrorHandlingMiddlewareFunction>): this; post(method: 'insertMany' | RegExp, fn: ErrorHandlingMiddlewareFunction): this; post(method: 'insertMany' | RegExp, options: SchemaPostOptions, fn: ErrorHandlingMiddlewareFunction): this; /** Defines a pre hook for the model. */ + pre>( + method: DocumentOrQueryMiddleware | DocumentOrQueryMiddleware[], + options: SchemaPreOptions & { document: true; query: false; }, + fn: PreMiddlewareFunction + ): this; + pre>( + method: DocumentOrQueryMiddleware | DocumentOrQueryMiddleware[], + options: SchemaPreOptions & { document: false; query: true; }, + fn: PreMiddlewareFunction + ): this; pre>(method: 'save', fn: PreSaveMiddlewareFunction): this; pre>(method: 'save', options: SchemaPreOptions, fn: PreSaveMiddlewareFunction): this; + pre>(method: MongooseQueryMiddleware | MongooseQueryMiddleware[] | RegExp, fn: PreMiddlewareFunction): this; + pre>(method: MongooseQueryMiddleware | MongooseQueryMiddleware[] | RegExp, options: SchemaPreOptions, fn: PreMiddlewareFunction): this; pre>(method: MongooseDocumentMiddleware | MongooseDocumentMiddleware[] | RegExp, fn: PreMiddlewareFunction): this; pre>(method: MongooseDocumentMiddleware | MongooseDocumentMiddleware[] | RegExp, options: SchemaPreOptions, fn: PreMiddlewareFunction): this; - pre>(method: MongooseDocumentMiddleware | MongooseDocumentMiddleware[] | RegExp, options: SchemaPreOptions, fn: PreMiddlewareFunction): this; - pre>(method: MongooseQueryMiddleware | MongooseQueryMiddleware[] | string | RegExp, fn: PreMiddlewareFunction): this; - pre>(method: MongooseQueryMiddleware | MongooseQueryMiddleware[] | string | RegExp, options: SchemaPreOptions, fn: PreMiddlewareFunction): this; pre>(method: 'aggregate' | RegExp, fn: PreMiddlewareFunction): this; pre>(method: 'aggregate' | RegExp, options: SchemaPreOptions, fn: PreMiddlewareFunction): this; pre(method: 'insertMany' | RegExp, fn: (this: T, next: (err?: CallbackError) => void, docs: any | Array) => void | Promise): this; @@ -293,15 +348,16 @@ declare module 'mongoose' { set(key: K, value: SchemaOptions[K], _tags?: any): this; /** Adds static "class" methods to Models compiled from this schema. */ + static(name: K, fn: TStaticMethods[K]): this; + static(obj: { [F in keyof TStaticMethods]: TStaticMethods[F] } & { [name: string]: (this: M, ...args: any[]) => any }): this; static(name: string, fn: (this: M, ...args: any[]) => any): this; - static(obj: { [name: string]: (this: M, ...args: any[]) => any }): this; /** Object of currently defined statics on this schema. */ - statics: { [name: string]: (this: M, ...args: any[]) => any }; + statics: { [F in keyof TStaticMethods]: TStaticMethods[F] } & { [name: string]: (this: M, ...args: any[]) => any }; /** Creates a virtual type with the given name. */ - virtual>( - name: string, + virtual>( + name: keyof TVirtuals | string, options?: VirtualTypeOptions ): VirtualType; @@ -370,7 +426,7 @@ declare module 'mongoose' { /** If `ref` is not nullish, this becomes a populated virtual. */ ref?: string | Function; - /** The local field to populate on if this is a populated virtual. */ + /** The local field to populate on if this is a populated virtual. */ localField?: string | ((this: HydratedDocType, doc: HydratedDocType) => string); /** The foreign field to populate on if this is a populated virtual. */ @@ -440,7 +496,7 @@ declare module 'mongoose' { export type SortOrder = -1 | 1 | 'asc' | 'ascending' | 'desc' | 'descending'; type _UpdateQuery = { - /** @see https://docs.mongodb.com/manual/reference/operator/update-field/ */ + /** @see https://www.mongodb.com/docs/manual/reference/operator/update-field/ */ $currentDate?: AnyKeys & AnyObject; $inc?: AnyKeys & AnyObject; $min?: AnyKeys & AnyObject; @@ -451,15 +507,20 @@ declare module 'mongoose' { $setOnInsert?: AnyKeys & AnyObject; $unset?: AnyKeys & AnyObject; - /** @see https://docs.mongodb.com/manual/reference/operator/update-array/ */ - $addToSet?: mongodb.SetFields; + /** @see https://www.mongodb.com/docs/manual/reference/operator/update-array/ */ + $addToSet?: AnyKeys & AnyObject; $pop?: AnyKeys & AnyObject; - $pull?: mongodb.PullOperator; - $push?: mongodb.PushOperator; - $pullAll?: mongodb.PullAllOperator; - - /** @see https://docs.mongodb.com/manual/reference/operator/update-bitwise/ */ - $bit?: Record; + $pull?: AnyKeys & AnyObject; + $push?: AnyKeys & AnyObject; + $pullAll?: AnyKeys & AnyObject; + + /** @see https://www.mongodb.com/docs/manual/reference/operator/update-bitwise/ */ + // Needs to be `AnyKeys` for now, because anything stricter makes us incompatible + // with the MongoDB Node driver's `UpdateFilter` interface (see gh-12595, gh-11911) + // and using the Node driver's `$bit` definition breaks because their `OnlyFieldsOfType` + // interface breaks on Mongoose Document class due to circular references. + // Re-evaluate this when we drop `extends Document` support in document interfaces. + $bit?: AnyKeys; }; export type UpdateWithAggregationPipeline = UpdateAggregationStage[]; @@ -470,13 +531,6 @@ declare module 'mongoose' { { $replaceRoot: any } | { $replaceWith: any }; - export type __UpdateDefProperty = - [Extract] extends [never] ? T : - T | string; - export type _UpdateQueryDef = { - [K in keyof T]?: __UpdateDefProperty; - }; - /** * Update query command to perform on the document * @example @@ -484,7 +538,7 @@ declare module 'mongoose' { * { age: 30 } * ``` */ - export type UpdateQuery = _UpdateQuery<_UpdateQueryDef> & AnyObject; + export type UpdateQuery = _UpdateQuery & AnyObject; export type DocumentDefinition = { [K in keyof Omit>]: @@ -504,24 +558,14 @@ declare module 'mongoose' { export type actualPrimitives = string | boolean | number | bigint | symbol | null | undefined; export type TreatAsPrimitives = actualPrimitives | NativeDate | RegExp | symbol | Error | BigInt | Types.ObjectId; - // This will -- when possible -- extract the original type of the subdocument in question - type LeanSubdocument = T extends (Types.Subdocument['_id']> & infer U) ? LeanDocument : Omit, '$isSingleNested' | 'ownerDocument' | 'parent'>; - export type LeanType = 0 extends (1 & T) ? T : // any T extends TreatAsPrimitives ? T : // primitives - T extends Types.Subdocument ? LeanSubdocument : // subdocs - LeanDocument; // Documents and everything else + T extends Types.ArraySubdocument ? Omit, 'parentArray' | 'ownerDocument' | 'parent'> : + T extends Types.Subdocument ? Omit, '$isSingleNested' | 'ownerDocument' | 'parent'> : + LeanDocument; // Documents and everything else - // Used only when collapsing lean arrays for ts performance reasons: - type LeanTypeOrArray = T extends unknown[] ? LeanArray : LeanType; - - export type LeanArray = - // By checking if it extends Types.Array we can get the original base type before collapsing down, - // rather than trying to manually remove the old types. This matches both Array and DocumentArray - T extends Types.Array ? LeanTypeOrArray[] : - // If it isn't a custom mongoose type we fall back to "do our best" - T extends unknown[][] ? LeanArray[] : LeanType[]; + export type LeanArray = T extends unknown[][] ? LeanArray[] : LeanType[]; export type _LeanDocument = { [K in keyof T]: LeanDocumentElement; @@ -531,17 +575,12 @@ declare module 'mongoose' { // This way, the conditional type is distributive over union types. // This is required for PopulatedDoc. export type LeanDocumentElement = - 0 extends (1 & T) ? T :// any - T extends unknown[] ? LeanArray : // Array - T extends Document ? LeanDocument : // Subdocument - T; + T extends unknown[] ? LeanArray : // Array + T extends Document ? LeanDocument : // Subdocument + T; export type SchemaDefinitionType = T extends Document ? Omit> : T; - // Helpers to simplify checks - type IfAny = 0 extends (1 & IFTYPE) ? THENTYPE : IFTYPE; - type IfUnknown = unknown extends IFTYPE ? THENTYPE : IFTYPE; - // tests for these two types are located in test/types/lean.test.ts export type DocTypeFromUnion = T extends (Document & infer U) ? [U] extends [Document & infer U] ? IfUnknown, false> : false : false; @@ -569,8 +608,7 @@ declare module 'mongoose' { * Plain old JavaScript object documents (POJO). * @see https://mongoosejs.com/docs/tutorials/lean.html */ - export type LeanDocument = BaseDocumentType extends Document ? _LeanDocument> : - Omit<_LeanDocument, Exclude | '$isSingleNested'>; + export type LeanDocument = Omit<_LeanDocument, Exclude | '$isSingleNested'>; export type LeanDocumentOrArray = 0 extends (1 & T) ? T : T extends unknown[] ? LeanDocument[] : diff --git a/food-ordering-app/server/node_modules/mongoose/types/indexes.d.ts b/food-ordering-app/server/node_modules/mongoose/types/indexes.d.ts index fc3a51b09..4a3adf02a 100644 --- a/food-ordering-app/server/node_modules/mongoose/types/indexes.d.ts +++ b/food-ordering-app/server/node_modules/mongoose/types/indexes.d.ts @@ -12,7 +12,7 @@ declare module 'mongoose' { interface IndexManager { /** - * Similar to `ensureIndexes()`, except for it uses the [`createIndex`](http://mongodb.github.io/node-mongodb-native/2.2/api/Collection.html#createIndex) + * Similar to `ensureIndexes()`, except for it uses the [`createIndex`](https://mongodb.github.io/node-mongodb-native/4.9/classes/Collection.html#createIndex) * function. */ createIndexes(options: mongodb.CreateIndexesOptions, callback: CallbackWithoutResult): void; @@ -51,8 +51,8 @@ declare module 'mongoose' { * the model's schema except the `_id` index, and build any indexes that * are in your schema but not in MongoDB. */ - syncIndexes(options: mongodb.CreateIndexesOptions | null, callback: Callback>): void; - syncIndexes(options?: mongodb.CreateIndexesOptions): Promise>; + syncIndexes(options: SyncIndexesOptions | null, callback: Callback>): void; + syncIndexes(options?: SyncIndexesOptions): Promise>; } interface IndexesDiff { @@ -62,7 +62,7 @@ declare module 'mongoose' { toDrop: Array } - type IndexDirection = 1 | -1 | '2d' | '2dsphere' | 'geoHaystack' | 'hashed' | 'text'; + type IndexDirection = 1 | -1 | '2d' | '2dsphere' | 'geoHaystack' | 'hashed' | 'text' | 'ascending' | 'asc' | 'descending' | 'desc'; type IndexDefinition = Record; interface SyncIndexesOptions extends mongodb.CreateIndexesOptions { diff --git a/food-ordering-app/server/node_modules/mongoose/types/inferschematype.d.ts b/food-ordering-app/server/node_modules/mongoose/types/inferschematype.d.ts index ce94e6221..e8f00d244 100644 --- a/food-ordering-app/server/node_modules/mongoose/types/inferschematype.d.ts +++ b/food-ordering-app/server/node_modules/mongoose/types/inferschematype.d.ts @@ -1,4 +1,20 @@ -import { Schema, InferSchemaType, SchemaType, SchemaTypeOptions, TypeKeyBaseType, Types, NumberSchemaDefinition, StringSchemaDefinition, BooleanSchemaDefinition, DateSchemaDefinition } from 'mongoose'; +import { + Schema, + InferSchemaType, + SchemaType, + SchemaTypeOptions, + TypeKeyBaseType, + Types, + NumberSchemaDefinition, + StringSchemaDefinition, + BooleanSchemaDefinition, + DateSchemaDefinition, + ObtainDocumentType, + DefaultTypeKey, + ObjectIdSchemaDefinition, + IfEquals, + DefaultSchemaOptions +} from 'mongoose'; declare module 'mongoose' { /** @@ -8,85 +24,91 @@ declare module 'mongoose' { * @param {EnforcedDocType} EnforcedDocType A generic type enforced by user "provided before schema constructor". * @param {TypeKey} TypeKey A generic of literal string type."Refers to the property used for path type definition". */ - type ObtainDocumentType = + type ObtainDocumentType = DefaultSchemaOptions> = IsItRecordAndNotAny extends true ? EnforcedDocType : { - [K in keyof (RequiredPaths & - OptionalPaths)]: ObtainDocumentPathType; + [K in keyof (RequiredPaths & + OptionalPaths)]: ObtainDocumentPathType; }; /** * @summary Obtains document schema type from Schema instance. - * @param {SchemaType} SchemaType A generic of schema type instance. + * @param {Schema} TSchema `typeof` a schema instance. * @example * const userSchema = new Schema({userName:String}); * type UserType = InferSchemaType; * // result * type UserType = {userName?: string} */ - type InferSchemaType = ObtainSchemaGeneric ; + type InferSchemaType = IfAny>; /** * @summary Obtains schema Generic type by using generic alias. * @param {TSchema} TSchema A generic of schema type instance. * @param {alias} alias Targeted generic alias. */ - type ObtainSchemaGeneric = - TSchema extends Schema - ? { - EnforcedDocType: EnforcedDocType; - M: M; - TInstanceMethods: TInstanceMethods; - TQueryHelpers: TQueryHelpers; - TVirtuals: TVirtuals; - TStaticMethods: TStaticMethods; - TPathTypeKey: TPathTypeKey; - DocType: DocType; - }[alias] - : unknown; + type ObtainSchemaGeneric = + TSchema extends Schema + ? { + EnforcedDocType: EnforcedDocType; + M: M; + TInstanceMethods: TInstanceMethods; + TQueryHelpers: TQueryHelpers; + TVirtuals: TVirtuals; + TStaticMethods: TStaticMethods; + TSchemaOptions: TSchemaOptions; + DocType: DocType; + }[alias] + : unknown; + + // Without Omit, this gives us a "Type parameter 'TSchemaOptions' has a circular constraint." + type ResolveSchemaOptions = Omit, 'fakepropertyname'>; + + type ApplySchemaOptions = ResolveTimestamps; + + type ResolveTimestamps = O extends { timestamps: true } + // For some reason, TypeScript sets all the document properties to unknown + // if we use methods, statics, or virtuals. So avoid inferring timestamps + // if any of these are set for now. See gh-12807 + ? O extends { methods: any } | { statics: any } | { virtuals: any } + ? T + : { createdAt: NativeDate; updatedAt: NativeDate; } & T + : T; } -/** - * @summary Checks if a type is "Record" or "any". - * @description It Helps to check if user has provided schema type "EnforcedDocType" - * @param {T} T A generic type to be checked. - * @returns true if {@link T} is Record OR false if {@link T} is of any type. - */ -type IsItRecordAndNotAny = IfEquals ? true : false>; -/** - * @summary Checks if two types are identical. - * @param {T} T The first type to be compared with {@link U}. - * @param {U} U The seconde type to be compared with {@link T}. - * @param {Y} Y A type to be returned if {@link T} & {@link U} are identical. - * @param {N} N A type to be returned if {@link T} & {@link U} are not identical. - */ -type IfEquals = - (() => G extends T ? 1 : 0) extends - (() => G extends U ? 1 : 0) ? Y : N; +type IsPathDefaultUndefined = PathType extends { default: undefined } ? + true : + PathType extends { default: (...args: any[]) => undefined } ? + true : + false; /** * @summary Checks if a document path is required or optional. * @param {P} P Document path. * @param {TypeKey} TypeKey A generic of literal string type."Refers to the property used for path type definition". */ -type IsPathRequired = +type IsPathRequired = P extends { required: true | [true, string | undefined] } | ArrayConstructor | any[] ? true - : P extends (Record) - ? P extends { default: undefined } + : P extends { required: boolean } + ? P extends { required: false } ? false : true - : P extends (Record) - ? P extends { default: ResolvePathType } - ? true - : false - : false; + : P extends (Record) + ? IsPathDefaultUndefined

extends true + ? false + : true + : P extends (Record) + ? P extends { default: any } + ? IfEquals + : false + : false; /** * @summary Path base type defined by using TypeKey * @description It helps to check if a path is defined by TypeKey OR not. * @param {TypeKey} TypeKey A literal string refers to path type property key. */ -type PathWithTypePropertyBaseType = { [k in TypeKey]: any }; +type PathWithTypePropertyBaseType = { [k in TypeKey]: any }; /** * @summary A Utility to obtain schema's required path keys. @@ -94,7 +116,7 @@ type PathWithTypePropertyBaseType = { [k in Typ * @param {TypeKey} TypeKey A generic of literal string type."Refers to the property used for path type definition". * @returns required paths keys of document definition. */ -type RequiredPathKeys = { +type RequiredPathKeys = { [K in keyof T]: IsPathRequired extends true ? IfEquals : never; }[keyof T]; @@ -104,7 +126,7 @@ type RequiredPathKeys = { * @param {TypeKey} TypeKey A generic of literal string type."Refers to the property used for path type definition". * @returns a record contains required paths with the corresponding type. */ -type RequiredPaths = { +type RequiredPaths = { [K in RequiredPathKeys]: T[K]; }; @@ -114,7 +136,7 @@ type RequiredPaths = { * @param {TypeKey} TypeKey A generic of literal string type."Refers to the property used for path type definition". * @returns optional paths keys of document definition. */ -type OptionalPathKeys = { +type OptionalPathKeys = { [K in keyof T]: IsPathRequired extends true ? never : K; }[keyof T]; @@ -124,50 +146,83 @@ type OptionalPathKeys = { * @param {TypeKey} TypeKey A generic of literal string type."Refers to the property used for path type definition". * @returns a record contains optional paths with the corresponding type. */ -type OptionalPaths = { +type OptionalPaths = { [K in OptionalPathKeys]?: T[K]; }; /** * @summary Obtains schema Path type. - * @description Obtains Path type by calling {@link ResolvePathType} OR by calling {@link InferSchemaType} if path of schema type. + * @description Obtains Path type by separating path type from other options and calling {@link ResolvePathType} * @param {PathValueType} PathValueType Document definition path type. * @param {TypeKey} TypeKey A generic refers to document definition. */ -type ObtainDocumentPathType = PathValueType extends Schema - ? InferSchemaType - : ResolvePathType< - PathValueType extends PathWithTypePropertyBaseType ? PathValueType[TypeKey] : PathValueType, - PathValueType extends PathWithTypePropertyBaseType ? Omit : {} - >; +type ObtainDocumentPathType = ResolvePathType< +PathValueType extends PathWithTypePropertyBaseType ? PathValueType[TypeKey] : PathValueType, +PathValueType extends PathWithTypePropertyBaseType ? Omit : {}, +TypeKey +>; /** * @param {T} T A generic refers to string path enums. * @returns Path enum values type as literal strings or string. */ -type PathEnumOrString['enum']> = T extends (infer E)[] ? E : T extends { values: any } ? PathEnumOrString : string; +type PathEnumOrString['enum']> = T extends ReadonlyArray ? E : T extends { values: any } ? PathEnumOrString : string; /** * @summary Resolve path type by returning the corresponding type. * @param {PathValueType} PathValueType Document definition path type. * @param {Options} Options Document definition path options except path type. - * @returns Number, "Number" or "number" will be resolved to string type. + * @param {TypeKey} TypeKey A generic of literal string type."Refers to the property used for path type definition". + * @returns Number, "Number" or "number" will be resolved to number type. */ -type ResolvePathType = {}> = +type ResolvePathType = {}, TypeKey extends string = DefaultSchemaOptions['typeKey']> = PathValueType extends Schema ? InferSchemaType : - PathValueType extends (infer Item)[] ? IfEquals>[] : - PathValueType extends StringSchemaDefinition ? PathEnumOrString : - PathValueType extends NumberSchemaDefinition ? number : - PathValueType extends DateSchemaDefinition ? Date : - PathValueType extends typeof Buffer | 'buffer' | 'Buffer' | typeof Schema.Types.Buffer ? Buffer : - PathValueType extends BooleanSchemaDefinition ? boolean : - PathValueType extends 'objectId' | 'ObjectId' | typeof Schema.Types.ObjectId ? Types.ObjectId : - PathValueType extends 'decimal128' | 'Decimal128' | typeof Schema.Types.Decimal128 ? Types.Decimal128 : - PathValueType extends MapConstructor ? Map> : - PathValueType extends ArrayConstructor ? any[] : - PathValueType extends typeof Schema.Types.Mixed ? any: - IfEquals extends true ? any: - IfEquals extends true ? any: - PathValueType extends typeof SchemaType ? PathValueType['prototype'] : - PathValueType extends {} ? PathValueType : - unknown; + PathValueType extends (infer Item)[] ? + IfEquals> : + Item extends Record? + Item[TypeKey] extends Function | String ? + // If Item has a type key that's a string or a callable, it must be a scalar, + // so we can directly obtain its path type. + ObtainDocumentPathType[] : + // If the type key isn't callable, then this is an array of objects, in which case + // we need to call ObtainDocumentType to correctly infer its type. + ObtainDocumentType[]: + ObtainDocumentPathType[] + >: + PathValueType extends ReadonlyArray ? + IfEquals> : + Item extends Record ? + Item[TypeKey] extends Function | String ? + ObtainDocumentPathType[] : + ObtainDocumentType[]: + ObtainDocumentPathType[] + >: + PathValueType extends StringSchemaDefinition ? PathEnumOrString : + IfEquals extends true ? PathEnumOrString : + IfEquals extends true ? PathEnumOrString : + PathValueType extends NumberSchemaDefinition ? Options['enum'] extends ReadonlyArray ? Options['enum'][number] : number : + IfEquals extends true ? number : + PathValueType extends DateSchemaDefinition ? Date : + IfEquals extends true ? Date : + PathValueType extends typeof Buffer | 'buffer' | 'Buffer' | typeof Schema.Types.Buffer ? Buffer : + PathValueType extends BooleanSchemaDefinition ? boolean : + IfEquals extends true ? boolean : + PathValueType extends ObjectIdSchemaDefinition ? Types.ObjectId : + IfEquals extends true ? Types.ObjectId : + IfEquals extends true ? Types.ObjectId : + PathValueType extends 'decimal128' | 'Decimal128' | typeof Schema.Types.Decimal128 ? Types.Decimal128 : + IfEquals extends true ? Types.Decimal128 : + IfEquals extends true ? Types.Decimal128 : + PathValueType extends 'uuid' | 'UUID' | typeof Schema.Types.UUID ? Buffer : + IfEquals extends true ? Buffer : + PathValueType extends MapConstructor ? Map> : + PathValueType extends ArrayConstructor ? any[] : + PathValueType extends typeof Schema.Types.Mixed ? any: + IfEquals extends true ? any: + IfEquals extends true ? any: + PathValueType extends typeof SchemaType ? PathValueType['prototype'] : + PathValueType extends Record ? ObtainDocumentType : + unknown; diff --git a/food-ordering-app/server/node_modules/mongoose/types/middlewares.d.ts b/food-ordering-app/server/node_modules/mongoose/types/middlewares.d.ts index aa7c9aa50..270524f55 100644 --- a/food-ordering-app/server/node_modules/mongoose/types/middlewares.d.ts +++ b/food-ordering-app/server/node_modules/mongoose/types/middlewares.d.ts @@ -1,9 +1,26 @@ declare module 'mongoose' { type MongooseDocumentMiddleware = 'validate' | 'save' | 'remove' | 'updateOne' | 'deleteOne' | 'init'; - type MongooseQueryMiddleware = 'count' | 'deleteMany' | 'deleteOne' | 'distinct' | 'find' | 'findOne' | 'findOneAndDelete' | 'findOneAndRemove' | 'findOneAndUpdate' | 'remove' | 'update' | 'updateOne' | 'updateMany'; + type MongooseQueryMiddleware = 'count' | 'estimatedDocumentCount' | 'countDocuments' | 'deleteMany' | 'deleteOne' | 'distinct' | 'find' | 'findOne' | 'findOneAndDelete' | 'findOneAndRemove' | 'findOneAndReplace' | 'findOneAndUpdate' | 'remove' | 'replaceOne' | 'update' | 'updateOne' | 'updateMany'; + type DocumentOrQueryMiddleware = 'updateOne' | 'deleteOne' | 'remove'; - type MiddlewareOptions = { document?: boolean, query?: boolean }; + type MiddlewareOptions = { + /** + * Enable this Hook for the Document Methods + * @default true + */ + document?: boolean, + /** + * Enable this Hook for the Query Methods + * @default true + */ + query?: boolean, + /** + * Explicitly set this function to be a Error handler instead of based on how many arguments are used + * @default false + */ + errorHandler?: boolean + }; type SchemaPreOptions = MiddlewareOptions; type SchemaPostOptions = MiddlewareOptions; @@ -11,4 +28,5 @@ declare module 'mongoose' { type PreSaveMiddlewareFunction = (this: ThisType, next: CallbackWithoutResultAndOptionalError, opts: SaveOptions) => void | Promise; type PostMiddlewareFunction = (this: ThisType, res: ResType, next: CallbackWithoutResultAndOptionalError) => void | Promise; type ErrorHandlingMiddlewareFunction = (this: ThisType, err: NativeError, res: ResType, next: CallbackWithoutResultAndOptionalError) => void; + type ErrorHandlingMiddlewareWithOption = (this: ThisType, err: NativeError, res: ResType | null, next: CallbackWithoutResultAndOptionalError) => void | Promise; } diff --git a/food-ordering-app/server/node_modules/mongoose/types/models.d.ts b/food-ordering-app/server/node_modules/mongoose/types/models.d.ts index d4a6f1a17..f1cf0a57b 100644 --- a/food-ordering-app/server/node_modules/mongoose/types/models.d.ts +++ b/food-ordering-app/server/node_modules/mongoose/types/models.d.ts @@ -1,14 +1,25 @@ declare module 'mongoose' { import mongodb = require('mongodb'); + export interface DiscriminatorOptions { + value?: string | number | ObjectId; + clone?: boolean; + overwriteModels?: boolean; + mergeHooks?: boolean; + mergePlugins?: boolean; + } + export interface AcceptsDiscriminator { /** Adds a discriminator type. */ - discriminator(name: string | number, schema: Schema, value?: string | number | ObjectId): Model; - discriminator(name: string | number, schema: Schema, value?: string | number | ObjectId): U; + discriminator(name: string | number, schema: Schema, value?: string | number | ObjectId | DiscriminatorOptions): Model; + discriminator(name: string | number, schema: Schema, value?: string | number | ObjectId | DiscriminatorOptions): U; } interface MongooseBulkWriteOptions { skipValidation?: boolean; + strict?: boolean; + timestamps?: boolean | 'throw'; + throwOnValidationError?: boolean; } interface InsertManyOptions extends @@ -18,6 +29,7 @@ declare module 'mongoose' { rawResult?: boolean; ordered?: boolean; lean?: boolean; + throwOnValidationError?: boolean; } type InsertManyResult = mongodb.InsertManyResult & { @@ -113,43 +125,62 @@ declare module 'mongoose' { wtimeout?: number; } + interface RemoveOptions extends SessionOption, Omit {} + const Model: Model; interface Model extends NodeJS.EventEmitter, AcceptsDiscriminator, IndexManager, SessionStarter { - new (doc?: DocType, fields?: any | null, options?: boolean | AnyObject): HydratedDocument & ObtainSchemaGeneric; - - aggregate(pipeline?: PipelineStage[], options?: mongodb.AggregateOptions, callback?: Callback): Aggregate>; + new (doc?: DocType, fields?: any | null, options?: boolean | AnyObject): HydratedDocument< + T, + TMethodsAndOverrides, + IfEquals< + TVirtuals, + {}, + ObtainSchemaGeneric, + TVirtuals + > + > & ObtainSchemaGeneric; + + aggregate(pipeline?: PipelineStage[], options?: AggregateOptions, callback?: Callback): Aggregate>; aggregate(pipeline: PipelineStage[], callback?: Callback): Aggregate>; /** Base Mongoose instance the model uses. */ base: Mongoose; /** - * If this is a discriminator model, `baseModelName` is the name of - * the base model. - */ + * If this is a discriminator model, `baseModelName` is the name of + * the base model. + */ baseModelName: string | undefined; + /* Cast the given POJO to the model's schema */ + castObject(obj: AnyObject, options?: { ignoreCastErrors?: boolean }): T; + /** - * Sends multiple `insertOne`, `updateOne`, `updateMany`, `replaceOne`, - * `deleteOne`, and/or `deleteMany` operations to the MongoDB server in one - * command. This is faster than sending multiple independent operations (e.g. - * if you use `create()`) because with `bulkWrite()` there is only one network - * round trip to the MongoDB server. - */ - bulkWrite(writes: Array, options: mongodb.BulkWriteOptions & MongooseBulkWriteOptions, callback: Callback): void; - bulkWrite(writes: Array, callback: Callback): void; - bulkWrite(writes: Array, options?: mongodb.BulkWriteOptions & MongooseBulkWriteOptions): Promise; + * Sends multiple `insertOne`, `updateOne`, `updateMany`, `replaceOne`, + * `deleteOne`, and/or `deleteMany` operations to the MongoDB server in one + * command. This is faster than sending multiple independent operations (e.g. + * if you use `create()`) because with `bulkWrite()` there is only one network + * round trip to the MongoDB server. + */ + bulkWrite( + writes: Array>, + options: mongodb.BulkWriteOptions & MongooseBulkWriteOptions & { ordered: false } + ): Promise; + bulkWrite( + writes: Array>, + options?: mongodb.BulkWriteOptions & MongooseBulkWriteOptions + ): Promise; /** - * Sends multiple `save()` calls in a single `bulkWrite()`. This is faster than - * sending multiple `save()` calls because with `bulkSave()` there is only one - * network round trip to the MongoDB server. - */ - bulkSave(documents: Array, options?: mongodb.BulkWriteOptions): Promise; + * Sends multiple `save()` calls in a single `bulkWrite()`. This is faster than + * sending multiple `save()` calls because with `bulkSave()` there is only one + * network round trip to the MongoDB server. + */ + bulkSave(documents: Array, options?: mongodb.BulkWriteOptions & { timestamps?: boolean }): Promise; /** Collection the model uses. */ collection: Collection; @@ -163,17 +194,18 @@ declare module 'mongoose' { countDocuments(callback?: Callback): QueryWithHelpers, TQueryHelpers, T>; /** Creates a new document or documents */ - create>(docs: Array, options?: SaveOptions): Promise[]>; - create>(docs: Array, callback: Callback[]>): void; - create>(doc: DocContents | T): Promise>; - create>(...docs: Array): Promise[]>; - create>(doc: T | DocContents, callback: Callback>): void; + create>(docs: Array, options?: SaveOptions): Promise[]>; + create>(docs: Array, options?: SaveOptions, callback?: Callback>>): Promise[]>; + create>(docs: Array, callback: Callback>>): void; + create>(doc: DocContents): Promise>; + create>(...docs: Array): Promise[]>; + create>(doc: DocContents, callback: Callback>): void; /** - * Create the collection for this model. By default, if no indexes are specified, - * mongoose will not create the collection for the model until any documents are - * created. Use this method to create the collection explicitly. - */ + * Create the collection for this model. By default, if no indexes are specified, + * mongoose will not create the collection for the model until any documents are + * created. Use this method to create the collection explicitly. + */ createCollection(options: mongodb.CreateCollectionOptions & Pick | null, callback: Callback>): void; createCollection(callback: Callback>): void; createCollection(options?: mongodb.CreateCollectionOptions & Pick): Promise>; @@ -182,34 +214,34 @@ declare module 'mongoose' { db: Connection; /** - * Deletes all of the documents that match `conditions` from the collection. - * Behaves like `remove()`, but deletes all documents that match `conditions` - * regardless of the `single` option. - */ + * Deletes all of the documents that match `conditions` from the collection. + * Behaves like `remove()`, but deletes all documents that match `conditions` + * regardless of the `single` option. + */ deleteMany(filter?: FilterQuery, options?: QueryOptions, callback?: CallbackWithoutResult): QueryWithHelpers, TQueryHelpers, T>; deleteMany(filter: FilterQuery, callback: CallbackWithoutResult): QueryWithHelpers, TQueryHelpers, T>; deleteMany(callback: CallbackWithoutResult): QueryWithHelpers, TQueryHelpers, T>; /** - * Deletes the first document that matches `conditions` from the collection. - * Behaves like `remove()`, but deletes at most one document regardless of the - * `single` option. - */ + * Deletes the first document that matches `conditions` from the collection. + * Behaves like `remove()`, but deletes at most one document regardless of the + * `single` option. + */ deleteOne(filter?: FilterQuery, options?: QueryOptions, callback?: CallbackWithoutResult): QueryWithHelpers, TQueryHelpers, T>; deleteOne(filter: FilterQuery, callback: CallbackWithoutResult): QueryWithHelpers, TQueryHelpers, T>; deleteOne(callback: CallbackWithoutResult): QueryWithHelpers, TQueryHelpers, T>; /** - * Event emitter that reports any errors that occurred. Useful for global error - * handling. - */ + * Event emitter that reports any errors that occurred. Useful for global error + * handling. + */ events: NodeJS.EventEmitter; /** - * Finds a single document by its _id field. `findById(id)` is almost* - * equivalent to `findOne({ _id: id })`. If you want to query by a document's - * `_id`, use `findById()` instead of `findOne()`. - */ + * Finds a single document by its _id field. `findById(id)` is almost* + * equivalent to `findOne({ _id: id })`. If you want to query by a document's + * `_id`, use `findById()` instead of `findOne()`. + */ findById>( id: any, projection?: ProjectionType | null, @@ -240,55 +272,75 @@ declare module 'mongoose' { ): QueryWithHelpers; /** - * Shortcut for creating a new Document from existing raw data, pre-saved in the DB. - * The document returned has no paths marked as modified initially. - */ - hydrate(obj: any): HydratedDocument; + * Shortcut for creating a new Document from existing raw data, pre-saved in the DB. + * The document returned has no paths marked as modified initially. + */ + hydrate(obj: any, projection?: AnyObject, options?: { setters?: boolean }): HydratedDocument; /** - * This function is responsible for building [indexes](https://docs.mongodb.com/manual/indexes/), - * unless [`autoIndex`](http://mongoosejs.com/docs/guide.html#autoIndex) is turned off. - * Mongoose calls this function automatically when a model is created using - * [`mongoose.model()`](/docs/api.html#mongoose_Mongoose-model) or - * [`connection.model()`](/docs/api.html#connection_Connection-model), so you - * don't need to call it. - */ + * This function is responsible for building [indexes](https://www.mongodb.com/docs/manual/indexes/), + * unless [`autoIndex`](http://mongoosejs.com/docs/guide.html#autoIndex) is turned off. + * Mongoose calls this function automatically when a model is created using + * [`mongoose.model()`](/docs/api/mongoose.html#mongoose_Mongoose-model) or + * [`connection.model()`](/docs/api/connection.html#connection_Connection-model), so you + * don't need to call it. + */ init(callback?: CallbackWithoutResult): Promise>; /** Inserts one or more new documents as a single `insertMany` call to the MongoDB server. */ - insertMany(docs: Array, options: InsertManyOptions & { lean: true; }, callback: Callback, RequireOnlyTypedId>>>): void; + insertMany(docs: Array, options: InsertManyOptions & { lean: true; }, callback: Callback, Require_id>>>): void; insertMany(docs: Array, options: InsertManyOptions & { rawResult: true; }, callback: Callback>): void; - insertMany(docs: Array, callback: Callback, RequireOnlyTypedId>, TMethodsAndOverrides, TVirtuals>>>): void; - insertMany(doc: DocContents, options: InsertManyOptions & { lean: true; }, callback: Callback, RequireOnlyTypedId>>>): void; + insertMany(docs: Array, callback: Callback, Require_id>, TMethodsAndOverrides, TVirtuals>>>): void; + insertMany(doc: DocContents, options: InsertManyOptions & { lean: true; }, callback: Callback, Require_id>>>): void; insertMany(doc: DocContents, options: InsertManyOptions & { rawResult: true; }, callback: Callback>): void; - insertMany(doc: DocContents, options: InsertManyOptions & { lean?: false | undefined }, callback: Callback, RequireOnlyTypedId>, TMethodsAndOverrides, TVirtuals>>>): void; - insertMany(doc: DocContents, callback: Callback, RequireOnlyTypedId>, TMethodsAndOverrides, TVirtuals>>>): void; - - insertMany(docs: Array, options: InsertManyOptions & { lean: true; }): Promise, RequireOnlyTypedId>>>; + insertMany(doc: DocContents, options: InsertManyOptions & { lean?: false | undefined }, callback: Callback, Require_id>, TMethodsAndOverrides, TVirtuals>>>): void; + insertMany(doc: DocContents, callback: Callback, Require_id>, TMethodsAndOverrides, TVirtuals>>>): void; + + insertMany(docs: Array, options: InsertManyOptions & { lean: true; }): Promise, Require_id>>>; + insertMany( + doc: DocContents, + options: InsertManyOptions & { ordered: false; rawResult: true; } + ): Promise & { + mongoose: { + validationErrors: Error[]; + results: Array, Require_id>, TMethodsAndOverrides, TVirtuals>> + } + }>; insertMany(docs: Array, options: InsertManyOptions & { rawResult: true; }): Promise>; - insertMany(docs: Array): Promise, RequireOnlyTypedId>, TMethodsAndOverrides, TVirtuals>>>; - insertMany(doc: DocContents, options: InsertManyOptions & { lean: true; }): Promise, RequireOnlyTypedId>>>; + insertMany(docs: Array): Promise, Require_id>, TMethodsAndOverrides, TVirtuals>>>; + insertMany(doc: DocContents, options: InsertManyOptions & { lean: true; }): Promise, Require_id>>>; insertMany(doc: DocContents, options: InsertManyOptions & { rawResult: true; }): Promise>; - insertMany(doc: DocContents, options: InsertManyOptions): Promise, RequireOnlyTypedId>, TMethodsAndOverrides, TVirtuals>>>; - insertMany(doc: DocContents): Promise, RequireOnlyTypedId>, TMethodsAndOverrides, TVirtuals>>>; + insertMany(doc: DocContents, options: InsertManyOptions): Promise, Require_id>, TMethodsAndOverrides, TVirtuals>>>; + insertMany(doc: DocContents): Promise, Require_id>, TMethodsAndOverrides, TVirtuals>>>; /** The name of the model */ modelName: string; /** Populates document references. */ - populate(docs: Array, options: PopulateOptions | Array | string, - callback?: Callback<(HydratedDocument)[]>): Promise>>; - populate(doc: any, options: PopulateOptions | Array | string, - callback?: Callback>): Promise>; - + populate( + docs: Array, + options: PopulateOptions | Array | string + ): Promise>>; + populate( + doc: any, + options: PopulateOptions | Array | string, + ): Promise>; + populate( + docs: Array, + options: PopulateOptions | Array | string + ): Promise, Paths>[]>; + populate( + doc: AnyObject, + options: PopulateOptions | Array | string + ): Promise, Paths>>; /** Casts and validates the given object against this model's schema, passing the given `context` to custom validators. */ validate(callback?: CallbackWithoutResult): Promise; validate(optional: any, callback?: CallbackWithoutResult): Promise; validate(optional: any, pathsToValidate: PathsToValidate, callback?: CallbackWithoutResult): Promise; - /** Watches the underlying collection for changes using [MongoDB change streams](https://docs.mongodb.com/manual/changeStreams/). */ - watch(pipeline?: Array>, options?: mongodb.ChangeStreamOptions): mongodb.ChangeStream; + /** Watches the underlying collection for changes using [MongoDB change streams](https://www.mongodb.com/docs/manual/changeStreams/). */ + watch(pipeline?: Array>, options?: mongodb.ChangeStreamOptions & { hydrate?: boolean }): mongodb.ChangeStream; /** Adds a `$where` clause to this query */ $where(argument: string | Function): QueryWithHelpers>, HydratedDocument, TQueryHelpers, T>; @@ -306,11 +358,11 @@ declare module 'mongoose' { estimatedDocumentCount(options?: QueryOptions, callback?: Callback): QueryWithHelpers, TQueryHelpers, T>; /** - * Returns a document with its `_id` if at least one document exists in the database that matches - * the given `filter`, and `null` otherwise. - */ - exists(filter: FilterQuery, callback: Callback, '_id'> | null>): QueryWithHelpers, '_id'> | null, HydratedDocument, TQueryHelpers, T>; - exists(filter: FilterQuery): QueryWithHelpers, '_id'> | null, HydratedDocument, TQueryHelpers, T>; + * Returns a document with its `_id` if at least one document exists in the database that matches + * the given `filter`, and `null` otherwise. + */ + exists(filter: FilterQuery, callback: Callback<{ _id: InferId } | null>): QueryWithHelpers, '_id'> | null, HydratedDocument, TQueryHelpers, T>; + exists(filter: FilterQuery): QueryWithHelpers<{ _id: InferId } | null, HydratedDocument, TQueryHelpers, T>; /** Creates a `find` query: gets a list of documents that match `filter`. */ find>( @@ -388,6 +440,7 @@ declare module 'mongoose' { ): Promise; remove>(filter?: any, callback?: CallbackWithoutResult): QueryWithHelpers; + remove>(filter?: any, options?: RemoveOptions, callback?: CallbackWithoutResult): QueryWithHelpers; /** Creates a `replaceOne` query: finds the first document that matches `filter` and replaces it with `replacement`. */ replaceOne>( @@ -395,7 +448,7 @@ declare module 'mongoose' { replacement?: T | AnyObject, options?: QueryOptions | null, callback?: Callback - ): QueryWithHelpers; + ): QueryWithHelpers; /** Schema the model uses. */ schema: Schema; diff --git a/food-ordering-app/server/node_modules/mongoose/types/mongooseoptions.d.ts b/food-ordering-app/server/node_modules/mongoose/types/mongooseoptions.d.ts index dabae7e53..054f85e76 100644 --- a/food-ordering-app/server/node_modules/mongoose/types/mongooseoptions.d.ts +++ b/food-ordering-app/server/node_modules/mongoose/types/mongooseoptions.d.ts @@ -63,6 +63,13 @@ declare module 'mongoose' { */ cloneSchemas?: boolean; + /** + * Set to `false` to disable the creation of the initial default connection. + * + * @default true + */ + createInitialConnection?: boolean; + /** * If `true`, prints the operations mongoose sends to MongoDB to the console. * If a writable stream is passed, it will log to that stream, without colorization. @@ -79,6 +86,12 @@ declare module 'mongoose' { | stream.Writable | ((collectionName: string, methodName: string, ...methodArgs: any[]) => void); + /** + * If `true`, adds a `id` virtual to all schemas unless overwritten on a per-schema basis. + * @defaultValue true + */ + id?: boolean; + /** * If `false`, it will change the `createdAt` field to be [`immutable: false`](https://mongoosejs.com/docs/api/schematype.html#schematype_SchemaType-immutable) * which means you can update the `createdAt`. @@ -87,7 +100,7 @@ declare module 'mongoose' { */ 'timestamps.createdAt.immutable'?: boolean - /** If set, attaches [maxTimeMS](https://docs.mongodb.com/manual/reference/operator/meta/maxTimeMS/) to every query */ + /** If set, attaches [maxTimeMS](https://www.mongodb.com/docs/manual/reference/operator/meta/maxTimeMS/) to every query */ maxTimeMS?: number; /** diff --git a/food-ordering-app/server/node_modules/mongoose/types/pipelinestage.d.ts b/food-ordering-app/server/node_modules/mongoose/types/pipelinestage.d.ts index a9dfb4659..41b0f863b 100644 --- a/food-ordering-app/server/node_modules/mongoose/types/pipelinestage.d.ts +++ b/food-ordering-app/server/node_modules/mongoose/types/pipelinestage.d.ts @@ -1,6 +1,6 @@ declare module 'mongoose' { /** - * [Stages reference](https://docs.mongodb.com/manual/reference/operator/aggregation-pipeline/#aggregation-pipeline-stages) + * [Stages reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation-pipeline/#aggregation-pipeline-stages) */ export type PipelineStage = | PipelineStage.AddFields @@ -8,7 +8,9 @@ declare module 'mongoose' { | PipelineStage.BucketAuto | PipelineStage.CollStats | PipelineStage.Count + | PipelineStage.Densify | PipelineStage.Facet + | PipelineStage.Fill | PipelineStage.GeoNear | PipelineStage.GraphLookup | PipelineStage.Group @@ -37,12 +39,12 @@ declare module 'mongoose' { export namespace PipelineStage { export interface AddFields { - /** [`$addFields` reference](https://docs.mongodb.com/manual/reference/operator/aggregation/addFields/) */ + /** [`$addFields` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/addFields/) */ $addFields: Record } export interface Bucket { - /** [`$bucket` reference](https://docs.mongodb.com/manual/reference/operator/aggregation/bucket/) */ + /** [`$bucket` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/bucket/) */ $bucket: { groupBy: Expression; boundaries: any[]; @@ -52,7 +54,7 @@ declare module 'mongoose' { } export interface BucketAuto { - /** [`$bucketAuto` reference](https://docs.mongodb.com/manual/reference/operator/aggregation/bucketAuto/) */ + /** [`$bucketAuto` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/bucketAuto/) */ $bucketAuto: { groupBy: Expression | Record; buckets: number; @@ -62,7 +64,7 @@ declare module 'mongoose' { } export interface CollStats { - /** [`$collStats` reference](https://docs.mongodb.com/manual/reference/operator/aggregation/collStats/) */ + /** [`$collStats` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/collStats/) */ $collStats: { latencyStats?: { histograms?: boolean }; storageStats?: { scale?: number }; @@ -72,19 +74,42 @@ declare module 'mongoose' { } export interface Count { - /** [`$count` reference](https://docs.mongodb.com/manual/reference/operator/aggregation/count/) */ + /** [`$count` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/count/) */ $count: string; } + export interface Densify{ + /** [`$densify` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/densify/) */ + $densify: { + field: string, + partitionByFields?: string[], + range: { + step: number, + unit?: 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year', + bounds: number[] | globalThis.Date[] | 'full' | 'partition' + } + } + } + + export interface Fill { + /** [`$fill` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/fill/) */ + $fill: { + partitionBy?: Expression, + partitionByFields?: string[], + sortBy?: Record, + output: Record + } + } + export interface Facet { - /** [`$facet` reference](https://docs.mongodb.com/manual/reference/operator/aggregation/facet/) */ + /** [`$facet` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/facet/) */ $facet: Record; } export type FacetPipelineStage = Exclude; export interface GeoNear { - /** [`$geoNear` reference](https://docs.mongodb.com/manual/reference/operator/aggregation/geoNear/) */ + /** [`$geoNear` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/geoNear/) */ $geoNear: { near: { type: 'Point'; coordinates: [number, number] } | [number, number]; distanceField: string; @@ -95,12 +120,16 @@ declare module 'mongoose' { minDistance?: number; query?: AnyObject; spherical?: boolean; - uniqueDocs?: boolean; + /** + * Deprecated. Use only with MondoDB below 4.2 (removed in 4.2) + * @deprecated + */ + num?: number; } } export interface GraphLookup { - /** [`$graphLookup` reference](https://docs.mongodb.com/manual/reference/operator/aggregation/graphLookup/) */ + /** [`$graphLookup` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/graphLookup/) */ $graphLookup: { from: string; startWith: any @@ -114,44 +143,44 @@ declare module 'mongoose' { } export interface Group { - /** [`$group` reference](https://docs.mongodb.com/manual/reference/operator/aggregation/group) */ + /** [`$group` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/group) */ $group: { _id: any } | { [key: string]: AccumulatorOperator } } export interface IndexStats { - /** [`$indexStats` reference](https://docs.mongodb.com/manual/reference/operator/aggregation/indexStats/) */ + /** [`$indexStats` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexStats/) */ $indexStats: Record; } export interface Limit { - /** [`$limit` reference](https://docs.mongodb.com/manual/reference/operator/aggregation/limit/) */ + /** [`$limit` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/limit/) */ $limit: number } export interface ListSessions { - /** [`$listSessions` reference](https://docs.mongodb.com/manual/reference/operator/aggregation/listSessions/) */ + /** [`$listSessions` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSessions/) */ $listSessions: { users?: { user: string; db: string }[] } | { allUsers?: true } } export interface Lookup { - /** [`$lookup` reference](https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/) */ + /** [`$lookup` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/) */ $lookup: { from: string as: string localField?: string foreignField?: string let?: Record - pipeline?: Exclude[] + pipeline?: Exclude[] } } export interface Match { - /** [`$match` reference](https://docs.mongodb.com/manual/reference/operator/aggregation/match/) */ + /** [`$match` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/match/) */ $match: FilterQuery; } export interface Merge { - /** [`$merge` reference](https://docs.mongodb.com/manual/reference/operator/aggregation/merge/) */ + /** [`$merge` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/merge/) */ $merge: { into: string | { db: string; coll: string } on?: string | string[] @@ -162,42 +191,42 @@ declare module 'mongoose' { } export interface Out { - /** [`$out` reference](https://docs.mongodb.com/manual/reference/operator/aggregation/out/) */ + /** [`$out` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/out/) */ $out: string | { db: string; coll: string } } export interface PlanCacheStats { - /** [`$planCacheStats` reference](https://docs.mongodb.com/manual/reference/operator/aggregation/planCacheStats/) */ + /** [`$planCacheStats` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/planCacheStats/) */ $planCacheStats: Record } export interface Project { - /** [`$project` reference](https://docs.mongodb.com/manual/reference/operator/aggregation/project/) */ + /** [`$project` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/project/) */ $project: { [field: string]: AnyExpression | Expression | Project['$project'] } } export interface Redact { - /** [`$redact` reference](https://docs.mongodb.com/manual/reference/operator/aggregation/redact/) */ + /** [`$redact` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/redact/) */ $redact: Expression; } export interface ReplaceRoot { - /** [`$replaceRoot` reference](https://docs.mongodb.com/manual/reference/operator/aggregation/replaceRoot/) */ + /** [`$replaceRoot` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceRoot/) */ $replaceRoot: { newRoot: AnyExpression } } export interface ReplaceWith { - /** [`$replaceWith` reference](https://docs.mongodb.com/manual/reference/operator/aggregation/replaceWith/) */ - $replaceWith: ObjectExpressionOperator; + /** [`$replaceWith` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceWith/) */ + $replaceWith: ObjectExpressionOperator | { [field: string]: Expression } | `$${string}`; } export interface Sample { - /** [`$sample` reference](https://docs.mongodb.com/manual/reference/operator/aggregation/sample/) */ + /** [`$sample` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/sample/) */ $sample: { size: number } } export interface Search { - /** [`$search` reference](https://docs.atlas.mongodb.com/reference/atlas-search/query-syntax/) */ + /** [`$search` reference](https://www.mongodb.com/docs/atlas/atlas-search/query-syntax/) */ $search: { index?: string; highlight?: { @@ -211,12 +240,12 @@ declare module 'mongoose' { } export interface Set { - /** [`$set` reference](https://docs.mongodb.com/manual/reference/operator/aggregation/set/) */ + /** [`$set` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/set/) */ $set: Record } export interface SetWindowFields { - /** [`$setWindowFields` reference](https://docs.mongodb.com/manual/reference/operator/aggregation/setWindowFields/) */ + /** [`$setWindowFields` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/setWindowFields/) */ $setWindowFields: { partitionBy?: any sortBy?: Record @@ -234,34 +263,34 @@ declare module 'mongoose' { } export interface Skip { - /** [`$skip` reference](https://docs.mongodb.com/manual/reference/operator/aggregation/skip/) */ + /** [`$skip` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/skip/) */ $skip: number } export interface Sort { - /** [`$sort` reference](https://docs.mongodb.com/manual/reference/operator/aggregation/sort/) */ + /** [`$sort` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/sort/) */ $sort: Record } export interface SortByCount { - /** [`$sortByCount` reference](https://docs.mongodb.com/manual/reference/operator/aggregation/sortByCount/) */ + /** [`$sortByCount` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/sortByCount/) */ $sortByCount: Expression; } export interface UnionWith { - /** [`$unionWith` reference](https://docs.mongodb.com/manual/reference/operator/aggregation/unionWith/) */ + /** [`$unionWith` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/unionWith/) */ $unionWith: | string | { coll: string; pipeline?: Exclude[] } } export interface Unset { - /** [`$unset` reference](https://docs.mongodb.com/manual/reference/operator/aggregation/unset/) */ + /** [`$unset` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/unset/) */ $unset: string | string[] } export interface Unwind { - /** [`$unwind` reference](https://docs.mongodb.com/manual/reference/operator/aggregation/unwind/) */ + /** [`$unwind` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/unwind/) */ $unwind: string | { path: string; includeArrayIndex?: string; preserveNullAndEmptyArrays?: boolean } } } diff --git a/food-ordering-app/server/node_modules/mongoose/types/populate.d.ts b/food-ordering-app/server/node_modules/mongoose/types/populate.d.ts index 3d53cea14..0db038014 100644 --- a/food-ordering-app/server/node_modules/mongoose/types/populate.d.ts +++ b/food-ordering-app/server/node_modules/mongoose/types/populate.d.ts @@ -3,38 +3,43 @@ declare module 'mongoose' { /** * Reference another Model */ - type PopulatedDoc< - PopulatedType, - RawId extends RefType = (PopulatedType extends { _id?: RefType; } ? NonNullable : Types.ObjectId) | undefined - > = PopulatedType | RawId; + type PopulatedDoc< + PopulatedType, + RawId extends RefType = (PopulatedType extends { _id?: RefType; } ? NonNullable : Types.ObjectId) | undefined + > = PopulatedType | RawId; - interface PopulateOptions { - /** space delimited path(s) to populate */ - path: string; - /** fields to select */ - select?: any; - /** query conditions to match */ - match?: any; - /** optional model to use for population */ - model?: string | Model; - /** optional query options like sort, limit, etc */ - options?: QueryOptions; - /** correct limit on populated array */ - perDocumentLimit?: number; - /** optional boolean, set to `false` to allow populating paths that aren't in the schema */ - strictPopulate?: boolean; - /** deep populate */ - populate?: string | PopulateOptions | (string | PopulateOptions)[]; - /** - * If true Mongoose will always set `path` to an array, if false Mongoose will - * always set `path` to a document. Inferred from schema by default. + interface PopulateOptions { + /** space delimited path(s) to populate */ + path: string; + /** fields to select */ + select?: any; + /** query conditions to match */ + match?: any; + /** optional model to use for population */ + model?: string | Model; + /** optional query options like sort, limit, etc */ + options?: QueryOptions; + /** correct limit on populated array */ + perDocumentLimit?: number; + /** optional boolean, set to `false` to allow populating paths that aren't in the schema */ + strictPopulate?: boolean; + /** deep populate */ + populate?: string | PopulateOptions | (string | PopulateOptions)[]; + /** + * If true Mongoose will always set `path` to a document, or `null` if no document was found. + * If false Mongoose will always set `path` to an array, which will be empty if no documents are found. + * Inferred from schema by default. */ - justOne?: boolean; - /** transform function to call on every populated doc */ - transform?: (doc: any, id: any) => any; - } + justOne?: boolean; + /** transform function to call on every populated doc */ + transform?: (doc: any, id: any) => any; + /** Overwrite the schema-level local field to populate on if this is a populated virtual. */ + localField?: string; + /** Overwrite the schema-level foreign field to populate on if this is a populated virtual. */ + foreignField?: string; + } - interface PopulateOption { - populate?: string | string[] | PopulateOptions | PopulateOptions[]; - } + interface PopulateOption { + populate?: string | string[] | PopulateOptions | PopulateOptions[]; + } } diff --git a/food-ordering-app/server/node_modules/mongoose/types/query.d.ts b/food-ordering-app/server/node_modules/mongoose/types/query.d.ts index 899ce9b29..ff3553697 100644 --- a/food-ordering-app/server/node_modules/mongoose/types/query.d.ts +++ b/food-ordering-app/server/node_modules/mongoose/types/query.d.ts @@ -68,22 +68,22 @@ declare module 'mongoose' { }; type RootQuerySelector = { - /** @see https://docs.mongodb.com/manual/reference/operator/query/and/#op._S_and */ + /** @see https://www.mongodb.com/docs/manual/reference/operator/query/and/#op._S_and */ $and?: Array>; - /** @see https://docs.mongodb.com/manual/reference/operator/query/nor/#op._S_nor */ + /** @see https://www.mongodb.com/docs/manual/reference/operator/query/nor/#op._S_nor */ $nor?: Array>; - /** @see https://docs.mongodb.com/manual/reference/operator/query/or/#op._S_or */ + /** @see https://www.mongodb.com/docs/manual/reference/operator/query/or/#op._S_or */ $or?: Array>; - /** @see https://docs.mongodb.com/manual/reference/operator/query/text */ + /** @see https://www.mongodb.com/docs/manual/reference/operator/query/text */ $text?: { $search: string; $language?: string; $caseSensitive?: boolean; $diacriticSensitive?: boolean; }; - /** @see https://docs.mongodb.com/manual/reference/operator/query/where/#op._S_where */ + /** @see https://www.mongodb.com/docs/manual/reference/operator/query/where/#op._S_where */ $where?: string | Function; - /** @see https://docs.mongodb.com/manual/reference/operator/query/comment/#op._S_comment */ + /** @see https://www.mongodb.com/docs/manual/reference/operator/query/comment/#op._S_comment */ $comment?: string; // we could not find a proper TypeScript generic to support nested queries e.g. 'user.friends.name' // this will mark all unrecognized properties as any (including nested queries) @@ -136,7 +136,7 @@ declare module 'mongoose' { /** * Another alias for the `new` option. `returnOriginal` is deprecated so this should be used. */ - returnDocument?: string; + returnDocument?: 'before' | 'after'; runValidators?: boolean; /* Set to `true` to automatically sanitize potentially unsafe user-generated query projections */ sanitizeProjection?: boolean; @@ -173,7 +173,7 @@ declare module 'mongoose' { _mongooseOptions: MongooseQueryOptions; /** - * Returns a wrapper around a [mongodb driver cursor](http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html). + * Returns a wrapper around a [mongodb driver cursor](https://mongodb.github.io/node-mongodb-native/4.9/classes/FindCursor.html). * A QueryCursor exposes a Streams3 interface, as well as a `.next()` function. * This is equivalent to calling `.cursor()` with no arguments. */ @@ -244,7 +244,7 @@ declare module 'mongoose' { countDocuments(callback?: Callback): QueryWithHelpers; /** - * Returns a wrapper around a [mongodb driver cursor](http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html). + * Returns a wrapper around a [mongodb driver cursor](https://mongodb.github.io/node-mongodb-native/4.9/classes/FindCursor.html). * A QueryCursor exposes a Streams3 interface, as well as a `.next()` function. */ cursor(options?: QueryOptions): Cursor>; @@ -271,7 +271,7 @@ declare module 'mongoose' { distinct(field: string, filter?: FilterQuery, callback?: Callback): QueryWithHelpers, DocType, THelpers, RawDocType>; /** Specifies a `$elemMatch` query condition. When called with one argument, the most recent path passed to `where()` is used. */ - elemMatch>(path: K, val: FilterQuery[K]['$elemMatch']): this; + elemMatch(path: K, val: any): this; elemMatch(val: Function | any): this; /** @@ -288,11 +288,11 @@ declare module 'mongoose' { estimatedDocumentCount(options?: QueryOptions, callback?: Callback): QueryWithHelpers; /** Specifies a `$exists` query condition. When called with one argument, the most recent path passed to `where()` is used. */ - exists>(path: K, val: FilterQuery[K]['$exists']): this; + exists(path: K, val: boolean): this; exists(val: boolean): this; /** - * Sets the [`explain` option](https://docs.mongodb.com/manual/reference/method/cursor.explain/), + * Sets the [`explain` option](https://www.mongodb.com/docs/manual/reference/method/cursor.explain/), * which makes this query return detailed execution stats instead of the actual * query result. This method is useful for determining what index your queries * use. @@ -368,6 +368,23 @@ declare module 'mongoose' { callback?: (err: CallbackError, doc: DocType | null, res: ModifyResult) => void ): QueryWithHelpers; + /** Declares the query a findById operation. When executed, the document with the given `_id` is passed to the callback. */ + findById( + id: mongodb.ObjectId | any, + projection?: ProjectionType | null, + options?: QueryOptions | null, + callback?: Callback + ): QueryWithHelpers; + findById( + id: mongodb.ObjectId | any, + projection?: ProjectionType | null, + callback?: Callback + ): QueryWithHelpers; + findById( + id: mongodb.ObjectId | any, + callback?: Callback + ): QueryWithHelpers; + /** Creates a `findByIdAndDelete` query, filtering by the given `_id`. */ findByIdAndDelete(id?: mongodb.ObjectId | any, options?: QueryOptions | null, callback?: (err: CallbackError, doc: DocType | null, res: any) => void): QueryWithHelpers; @@ -403,18 +420,18 @@ declare module 'mongoose' { getUpdate(): UpdateQuery | UpdateWithAggregationPipeline | null; /** Specifies a `$gt` query condition. When called with one argument, the most recent path passed to `where()` is used. */ - gt>(path: K, val: FilterQuery[K]['$gt']): this; + gt(path: K, val: any): this; gt(val: number): this; /** Specifies a `$gte` query condition. When called with one argument, the most recent path passed to `where()` is used. */ - gte>(path: K, val: FilterQuery[K]['$gte']): this; + gte(path: K, val: any): this; gte(val: number): this; /** Sets query hints. */ hint(val: any): this; /** Specifies an `$in` query condition. When called with one argument, the most recent path passed to `where()` is used. */ - in>(path: K, val: FilterQuery[K]['$in']): this; + in(path: K, val: any[]): this; in(val: Array): this; /** Declares an intersects query for `geometry()`. */ @@ -430,11 +447,11 @@ declare module 'mongoose' { limit(val: number): this; /** Specifies a `$lt` query condition. When called with one argument, the most recent path passed to `where()` is used. */ - lt>(path: K, val: FilterQuery[K]['$lt']): this; + lt(path: K, val: any): this; lt(val: number): this; /** Specifies a `$lte` query condition. When called with one argument, the most recent path passed to `where()` is used. */ - lte>(path: K, val: FilterQuery[K]['$lte']): this; + lte(path: K, val: any): this; lte(val: number): this; /** @@ -451,7 +468,7 @@ declare module 'mongoose' { maxScan(val: number): this; /** - * Sets the [maxTimeMS](https://docs.mongodb.com/manual/reference/method/cursor.maxTimeMS/) + * Sets the [maxTimeMS](https://www.mongodb.com/docs/manual/reference/method/cursor.maxTimeMS/) * option. This will tell the MongoDB server to abort if the query or write op * has been running for more than `ms` milliseconds. */ @@ -461,7 +478,7 @@ declare module 'mongoose' { merge(source: Query | FilterQuery): this; /** Specifies a `$mod` condition, filters documents for documents whose `path` property is a number that is equal to `remainder` modulo `divisor`. */ - mod>(path: K, val: FilterQuery[K]['$mod']): this; + mod(path: K, val: number): this; mod(val: Array): this; /** The model this query was created from */ @@ -474,15 +491,15 @@ declare module 'mongoose' { mongooseOptions(val?: MongooseQueryOptions): MongooseQueryOptions; /** Specifies a `$ne` query condition. When called with one argument, the most recent path passed to `where()` is used. */ - ne>(path: K, val: FilterQuery[K]['$ne']): this; + ne(path: K, val: any): this; ne(val: any): this; /** Specifies a `$near` or `$nearSphere` condition */ - near>(path: K, val: FilterQuery[K]['$near']): this; + near(path: K, val: any): this; near(val: any): this; /** Specifies an `$nin` query condition. When called with one argument, the most recent path passed to `where()` is used. */ - nin>(path: K, val: FilterQuery[K]['$nin']): this; + nin(path: K, val: any[]): this; nin(val: Array): this; /** Specifies arguments for an `$nor` condition. */ @@ -518,7 +535,7 @@ declare module 'mongoose' { readConcern(level: string): this; /** Specifies a `$regex` query condition. When called with one argument, the most recent path passed to `where()` is used. */ - regex>(path: K, val: FilterQuery[K]['$regex']): this; + regex(path: K, val: RegExp): this; regex(val: string | RegExp): this; /** @@ -531,7 +548,7 @@ declare module 'mongoose' { /** * Declare and/or execute this query as a replaceOne() operation. Same as * `update()`, except MongoDB will replace the existing document and will - * not accept any [atomic](https://docs.mongodb.com/manual/tutorial/model-data-for-atomic-operations/#pattern) operators (`$set`, etc.) + * not accept any [atomic](https://www.mongodb.com/docs/manual/tutorial/model-data-for-atomic-operations/#pattern) operators (`$set`, etc.) */ replaceOne(filter?: FilterQuery, replacement?: DocType | AnyObject, options?: QueryOptions | null, callback?: Callback): QueryWithHelpers; @@ -548,7 +565,7 @@ declare module 'mongoose' { selectedInclusively(): boolean; /** - * Sets the [MongoDB session](https://docs.mongodb.com/manual/reference/server-sessions/) + * Sets the [MongoDB session](https://www.mongodb.com/docs/manual/reference/server-sessions/) * associated with this query. Sessions are how you mark a query as part of a * [transaction](/docs/transactions.html). */ @@ -570,7 +587,7 @@ declare module 'mongoose' { setUpdate(update: UpdateQuery | UpdateWithAggregationPipeline): void; /** Specifies an `$size` query condition. When called with one argument, the most recent path passed to `where()` is used. */ - size>(path: K, val: FilterQuery[K]['$size']): this; + size(path: K, val: number): this; size(val: number): this; /** Specifies the number of documents to skip. */ @@ -584,7 +601,7 @@ declare module 'mongoose' { snapshot(val?: boolean): this; /** Sets the sort order. If an object is passed, values allowed are `asc`, `desc`, `ascending`, `descending`, `1`, and `-1`. */ - sort(arg?: string | { [key: string]: SortOrder | { $meta: 'textScore' } } | undefined | null): this; + sort(arg?: string | { [key: string]: SortOrder | { $meta: 'textScore' } } | [string, SortOrder][] | undefined | null): this; /** Sets the tailable option (for use with capped collections). */ tailable(bool?: boolean, opts?: { @@ -599,7 +616,7 @@ declare module 'mongoose' { then: Promise['then']; /** Converts this query to a customized, reusable query constructor with all arguments and options retained. */ - toConstructor(): new (...args: any[]) => QueryWithHelpers; + toConstructor(): RetType; /** Declare and/or execute this query as an update() operation. */ update(filter?: FilterQuery, update?: UpdateQuery | UpdateWithAggregationPipeline, options?: QueryOptions | null, callback?: Callback): QueryWithHelpers; @@ -633,7 +650,7 @@ declare module 'mongoose' { within(val?: any): this; /** - * If [`w > 1`](/docs/api.html#query_Query-w), the maximum amount of time to + * If [`w > 1`](/docs/api/query.html#query_Query-w), the maximum amount of time to * wait for this write to propagate through the replica set before this * operation fails. The default is `0`, which means no timeout. */ diff --git a/food-ordering-app/server/node_modules/mongoose/types/schemaoptions.d.ts b/food-ordering-app/server/node_modules/mongoose/types/schemaoptions.d.ts index 8e978bcac..edcc09d76 100644 --- a/food-ordering-app/server/node_modules/mongoose/types/schemaoptions.d.ts +++ b/food-ordering-app/server/node_modules/mongoose/types/schemaoptions.d.ts @@ -10,7 +10,7 @@ declare module 'mongoose' { type TypeKeyBaseType = string; type DefaultTypeKey = 'type'; - interface SchemaOptions { + interface SchemaOptions { /** * By default, Mongoose's init() function creates all the indexes defined in your model's schema by * calling Model.createIndexes() after you successfully connect to MongoDB. If you want to disable @@ -139,7 +139,7 @@ declare module 'mongoose' { * type declaration. However, for applications like geoJSON, the 'type' property is important. If you want to * control which key mongoose uses to find type declarations, set the 'typeKey' schema option. */ - typeKey?: PathTypeKey; + typeKey?: string; /** * By default, documents are automatically validated before they are saved to the database. This is to @@ -191,16 +191,41 @@ declare module 'mongoose' { /** * Model Statics methods. */ - statics?: Record, ...args: any) => unknown> | StaticMethods, + statics?: Record, ...args: any) => unknown> | TStaticMethods, /** * Document instance methods. */ - methods?: Record, ...args: any) => unknown> | InstanceMethods, + methods?: Record, ...args: any) => unknown> | TInstanceMethods, /** - * Query helper functions + * Query helper functions. */ - query?: Record>(this: T, ...args: any) => T> | QueryHelpers, + query?: Record>>(this: T, ...args: any) => T> | QueryHelpers, + + /** + * Set whether to cast non-array values to arrays. + * @default true + */ + castNonArrays?: boolean; + + /** + * Virtual paths. + */ + virtuals?: SchemaOptionsVirtualsPropertyType, + + /** + * Set to `true` to default to overwriting models with the same name when calling `mongoose.model()`, as opposed to throwing an `OverwriteModelError`. + * @default false + */ + overwriteModels?: boolean; + } + + interface DefaultSchemaOptions { + typeKey: 'type'; + id: true; + _id: true; + timestamps: false; + versionKey: '__v' } } diff --git a/food-ordering-app/server/node_modules/mongoose/types/schematypes.d.ts b/food-ordering-app/server/node_modules/mongoose/types/schematypes.d.ts index 78ebd5ff5..cb1635a19 100644 --- a/food-ordering-app/server/node_modules/mongoose/types/schematypes.d.ts +++ b/food-ordering-app/server/node_modules/mongoose/types/schematypes.d.ts @@ -28,7 +28,7 @@ declare module 'mongoose' { /** * The Mongoose ObjectId [SchemaType](/docs/schematypes.html). Used for * declaring paths in your schema that should be - * [MongoDB ObjectIds](https://docs.mongodb.com/manual/reference/method/ObjectId/). + * [MongoDB ObjectIds](https://www.mongodb.com/docs/manual/reference/method/ObjectId/). * Do not use this to create a new ObjectId instance, use `mongoose.Types.ObjectId` * instead. */ @@ -57,7 +57,7 @@ declare module 'mongoose' { T | typeof SchemaType | Schema | SchemaDefinition | Function | AnyArray; /** Defines a virtual with the given name that gets/sets this path. */ - alias?: string; + alias?: string | string[]; /** Function or object describing how to validate this schematype. See [validation docs](https://mongoosejs.com/docs/validation.html). */ validate?: SchemaValidator | AnyArray>; @@ -100,7 +100,7 @@ declare module 'mongoose' { * If [truthy](https://masteringjs.io/tutorials/fundamentals/truthy), Mongoose will * build an index on this path when the model is compiled. */ - index?: boolean | number | IndexOptions | '2d' | '2dsphere' | 'hashed' | 'text'; + index?: boolean | IndexDirection | IndexOptions; /** * If [truthy](https://masteringjs.io/tutorials/fundamentals/truthy), Mongoose @@ -188,7 +188,11 @@ declare module 'mongoose' { [other: string]: any; } - class SchemaType { + interface Validator { + message?: string; type?: string; validator?: Function + } + + class SchemaType { /** SchemaType constructor */ constructor(path: string, options?: AnyObject, instance?: string); @@ -217,7 +221,7 @@ declare module 'mongoose' { /** * Defines this path as immutable. Mongoose prevents you from changing - * immutable paths unless the parent document has [`isNew: true`](/docs/api.html#document_Document-isNew). + * immutable paths unless the parent document has [`isNew: true`](/docs/api/document.html#document_Document-isNew). */ immutable(bool: boolean): this; @@ -270,10 +274,13 @@ declare module 'mongoose' { unique(bool: boolean): this; /** The validators that Mongoose should run to validate properties at this SchemaType's path. */ - validators: { message?: string; type?: string; validator?: Function }[]; + validators: Validator[]; /** Adds validator(s) for this document path. */ - validate(obj: RegExp | Function | any, errorMsg?: string, type?: string): this; + validate(obj: RegExp | ((this: DocType, value: any, validatorProperties?: Validator) => any), errorMsg?: string, type?: string): this; + + /** Default options for this SchemaType */ + defaultOptions?: Record; } namespace Schema { @@ -290,6 +297,9 @@ declare module 'mongoose' { /** The schematype embedded in this array */ caster?: SchemaType; + /** Default options for this SchemaType */ + defaultOptions: Record; + /** * Adds an enum validator if this is an array of strings or numbers. Equivalent to * `SchemaString.prototype.enum()` or `SchemaNumber.prototype.enum()` @@ -306,6 +316,9 @@ declare module 'mongoose' { /** Configure which values get casted to `false`. */ static convertToFalse: Set; + + /** Default options for this SchemaType */ + defaultOptions: Record; } class Buffer extends SchemaType { @@ -317,6 +330,9 @@ declare module 'mongoose' { * for this buffer. You can find a [list of allowed subtypes here](http://api.mongodb.com/python/current/api/bson/binary.html). */ subtype(subtype: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 128): this; + + /** Default options for this SchemaType */ + defaultOptions: Record; } class Date extends SchemaType { @@ -331,11 +347,17 @@ declare module 'mongoose' { /** Sets a minimum date validator. */ min(value: NativeDate, message: string): this; + + /** Default options for this SchemaType */ + defaultOptions: Record; } class Decimal128 extends SchemaType { /** This schema type's name, to defend against minifiers that mangle function names. */ static schemaName: 'Decimal128'; + + /** Default options for this SchemaType */ + defaultOptions: Record; } class DocumentArray extends SchemaType implements AcceptsDiscriminator { @@ -352,16 +374,25 @@ declare module 'mongoose' { /** The constructor used for subdocuments in this array */ caster?: typeof Types.Subdocument; + + /** Default options for this SchemaType */ + defaultOptions: Record; } class Map extends SchemaType { /** This schema type's name, to defend against minifiers that mangle function names. */ static schemaName: 'Map'; + + /** Default options for this SchemaType */ + defaultOptions: Record; } class Mixed extends SchemaType { /** This schema type's name, to defend against minifiers that mangle function names. */ static schemaName: 'Mixed'; + + /** Default options for this SchemaType */ + defaultOptions: Record; } class Number extends SchemaType { @@ -376,6 +407,9 @@ declare module 'mongoose' { /** Sets a minimum number validator. */ min(value: number, message: string): this; + + /** Default options for this SchemaType */ + defaultOptions: Record; } class ObjectId extends SchemaType { @@ -384,6 +418,9 @@ declare module 'mongoose' { /** Adds an auto-generated ObjectId default if turnOn is true. */ auto(turnOn: boolean): this; + + /** Default options for this SchemaType */ + defaultOptions: Record; } class Subdocument extends SchemaType implements AcceptsDiscriminator { @@ -393,6 +430,9 @@ declare module 'mongoose' { /** The document's schema */ schema: Schema; + /** Default options for this SchemaType */ + defaultOptions: Record; + discriminator(name: string | number, schema: Schema, value?: string): U; discriminator(name: string | number, schema: Schema, value?: string): Model; } @@ -404,7 +444,7 @@ declare module 'mongoose' { /** Adds an enum validator */ enum(vals: string[] | any): this; - /** Adds a lowercase [setter](http://mongoosejs.com/docs/api.html#schematype_SchemaType-set). */ + /** Adds a lowercase [setter](http://mongoosejs.com/docs/api/schematype.html#schematype_SchemaType-set). */ lowercase(shouldApply?: boolean): this; /** Sets a regexp validator. */ @@ -416,11 +456,22 @@ declare module 'mongoose' { /** Sets a minimum length validator. */ minlength(value: number, message: string): this; - /** Adds a trim [setter](http://mongoosejs.com/docs/api.html#schematype_SchemaType-set). */ + /** Adds a trim [setter](http://mongoosejs.com/docs/api/schematype.html#schematype_SchemaType-set). */ trim(shouldTrim?: boolean): this; - /** Adds an uppercase [setter](http://mongoosejs.com/docs/api.html#schematype_SchemaType-set). */ + /** Adds an uppercase [setter](http://mongoosejs.com/docs/api/schematype.html#schematype_SchemaType-set). */ uppercase(shouldApply?: boolean): this; + + /** Default options for this SchemaType */ + defaultOptions: Record; + } + + class UUID extends SchemaType { + /** This schema type's name, to defend against minifiers that mangle function names. */ + static schemaName: 'UUID'; + + /** Default options for this SchemaType */ + defaultOptions: Record; } } } diff --git a/food-ordering-app/server/node_modules/mongoose/types/session.d.ts b/food-ordering-app/server/node_modules/mongoose/types/session.d.ts index 19339ea96..a968b8289 100644 --- a/food-ordering-app/server/node_modules/mongoose/types/session.d.ts +++ b/food-ordering-app/server/node_modules/mongoose/types/session.d.ts @@ -5,8 +5,8 @@ declare module 'mongoose' { type ClientSession = mongodb.ClientSession; /** - * _Requires MongoDB >= 3.6.0._ Starts a [MongoDB session](https://docs.mongodb.com/manual/release-notes/3.6/#client-sessions) - * for benefits like causal consistency, [retryable writes](https://docs.mongodb.com/manual/core/retryable-writes/), + * _Requires MongoDB >= 3.6.0._ Starts a [MongoDB session](https://www.mongodb.com/docs/manual/release-notes/3.6/#client-sessions) + * for benefits like causal consistency, [retryable writes](https://www.mongodb.com/docs/manual/core/retryable-writes/), * and [transactions](http://thecodebarbarian.com/a-node-js-perspective-on-mongodb-4-transactions.html). */ function startSession(options: ClientSessionOptions | undefined | null, callback: Callback): void; @@ -21,8 +21,8 @@ declare module 'mongoose' { interface SessionStarter { /** - * Starts a [MongoDB session](https://docs.mongodb.com/manual/release-notes/3.6/#client-sessions) - * for benefits like causal consistency, [retryable writes](https://docs.mongodb.com/manual/core/retryable-writes/), + * Starts a [MongoDB session](https://www.mongodb.com/docs/manual/release-notes/3.6/#client-sessions) + * for benefits like causal consistency, [retryable writes](https://www.mongodb.com/docs/manual/core/retryable-writes/), * and [transactions](http://thecodebarbarian.com/a-node-js-perspective-on-mongodb-4-transactions.html). */ startSession(options: ClientSessionOptions | undefined | null, callback: Callback): void; diff --git a/food-ordering-app/server/node_modules/mongoose/types/types.d.ts b/food-ordering-app/server/node_modules/mongoose/types/types.d.ts index 74f9d82c2..75a918c75 100644 --- a/food-ordering-app/server/node_modules/mongoose/types/types.d.ts +++ b/food-ordering-app/server/node_modules/mongoose/types/types.d.ts @@ -26,7 +26,7 @@ declare module 'mongoose' { /** * Pulls items from the array atomically. Equality is determined by casting * the provided value to an embedded document and comparing using - * [the `Document.equals()` function.](./api.html#document_Document-equals) + * [the `Document.equals()` function.](./api/document.html#document_Document-equals) */ pull(...args: any[]): this; @@ -80,7 +80,7 @@ declare module 'mongoose' { } class ObjectId extends mongodb.ObjectId { - _id: this; + } class Subdocument extends Document { diff --git a/food-ordering-app/server/node_modules/mongoose/types/utility.d.ts b/food-ordering-app/server/node_modules/mongoose/types/utility.d.ts index 79bb6ad83..69fe73a7b 100644 --- a/food-ordering-app/server/node_modules/mongoose/types/utility.d.ts +++ b/food-ordering-app/server/node_modules/mongoose/types/utility.d.ts @@ -1,4 +1,6 @@ declare module 'mongoose' { + type IfAny = 0 extends (1 & IFTYPE) ? THENTYPE : ELSETYPE; + type IfUnknown = unknown extends IFTYPE ? THENTYPE : IFTYPE; type Unpacked = T extends (infer U)[] ? U : @@ -19,4 +21,23 @@ declare module 'mongoose' { */ type FlatRecord = { [K in keyof T]: T[K] }; + /** + * @summary Checks if a type is "Record" or "any". + * @description It Helps to check if user has provided schema type "EnforcedDocType" + * @param {T} T A generic type to be checked. + * @returns true if {@link T} is Record OR false if {@link T} is of any type. + */ +type IsItRecordAndNotAny = IfEquals ? true : false>; + +/** + * @summary Checks if two types are identical. + * @param {T} T The first type to be compared with {@link U}. + * @param {U} U The seconde type to be compared with {@link T}. + * @param {Y} Y A type to be returned if {@link T} & {@link U} are identical. + * @param {N} N A type to be returned if {@link T} & {@link U} are not identical. + */ +type IfEquals = + (() => G extends T ? 1 : 0) extends + (() => G extends U ? 1 : 0) ? Y : N; + } diff --git a/food-ordering-app/server/node_modules/mongoose/types/validation.d.ts b/food-ordering-app/server/node_modules/mongoose/types/validation.d.ts index 3e6d0671a..693261250 100644 --- a/food-ordering-app/server/node_modules/mongoose/types/validation.d.ts +++ b/food-ordering-app/server/node_modules/mongoose/types/validation.d.ts @@ -4,6 +4,7 @@ declare module 'mongoose' { interface ValidatorProps { path: string; + fullPath: string; value: any; } @@ -12,7 +13,7 @@ declare module 'mongoose' { } interface ValidateFn { - (value: T): boolean; + (value: T, props?: ValidatorProps & Record): boolean; } interface LegacyAsyncValidateFn { @@ -20,7 +21,7 @@ declare module 'mongoose' { } interface AsyncValidateFn { - (value: any): Promise; + (value: T, props?: ValidatorProps & Record): Promise; } interface ValidateOpts { @@ -28,5 +29,6 @@ declare module 'mongoose' { message?: string | ValidatorMessageFn; type?: string; validator: ValidateFn | LegacyAsyncValidateFn | AsyncValidateFn; + propsParameter?: boolean; } } diff --git a/food-ordering-app/server/node_modules/mongoose/types/virtuals.d.ts b/food-ordering-app/server/node_modules/mongoose/types/virtuals.d.ts new file mode 100644 index 000000000..2ec48a496 --- /dev/null +++ b/food-ordering-app/server/node_modules/mongoose/types/virtuals.d.ts @@ -0,0 +1,14 @@ +declare module 'mongoose' { + type VirtualPathFunctions = { + get?: TVirtualPathFN; + set?: TVirtualPathFN; + options?: VirtualTypeOptions, DocType>; + }; + + type TVirtualPathFN = + >(this: Document & DocType, value: PathType, virtual: VirtualType, doc: Document & DocType) => TReturn; + + type SchemaOptionsVirtualsPropertyType, TInstanceMethods = {}> = { + [K in keyof VirtualPaths]: VirtualPathFunctions extends true ? DocType : any, VirtualPaths[K], TInstanceMethods> + }; +} diff --git a/food-ordering-app/server/node_modules/object-inspect/CHANGELOG.md b/food-ordering-app/server/node_modules/object-inspect/CHANGELOG.md index 36d195819..bdf900274 100644 --- a/food-ordering-app/server/node_modules/object-inspect/CHANGELOG.md +++ b/food-ordering-app/server/node_modules/object-inspect/CHANGELOG.md @@ -5,6 +5,70 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [v1.13.4](https://github.com/inspect-js/object-inspect/compare/v1.13.3...v1.13.4) - 2025-02-04 + +### Commits + +- [Fix] avoid being fooled by a `Symbol.toStringTag` [`fa5870d`](https://github.com/inspect-js/object-inspect/commit/fa5870da468a525d2f20193700f70752f506cbf7) +- [Tests] fix tests in node v6.0 - v6.4 [`2abfe1b`](https://github.com/inspect-js/object-inspect/commit/2abfe1bc3c69f9293c07c5cd65a9d7d87a628b84) +- [Dev Deps] update `es-value-fixtures`, `for-each`, `has-symbols` [`3edfb01`](https://github.com/inspect-js/object-inspect/commit/3edfb01cc8cce220fba0dfdfe2dc8bc955758cdd) + +## [v1.13.3](https://github.com/inspect-js/object-inspect/compare/v1.13.2...v1.13.3) - 2024-11-09 + +### Commits + +- [actions] split out node 10-20, and 20+ [`44395a8`](https://github.com/inspect-js/object-inspect/commit/44395a8fc1deda6718a5e125e86b9ffcaa1c7580) +- [Fix] `quoteStyle`: properly escape only the containing quotes [`5137f8f`](https://github.com/inspect-js/object-inspect/commit/5137f8f7bea69a7fc671bb683fd35f244f38fc52) +- [Refactor] clean up `quoteStyle` code [`450680c`](https://github.com/inspect-js/object-inspect/commit/450680cd50de4e689ee3b8e1d6db3a1bcf3fc18c) +- [Tests] add `quoteStyle` escaping tests [`e997c59`](https://github.com/inspect-js/object-inspect/commit/e997c595aeaea84fd98ca35d7e1c3b5ab3ae26e0) +- [Dev Deps] update `auto-changelog`, `es-value-fixtures`, `tape` [`d5a469c`](https://github.com/inspect-js/object-inspect/commit/d5a469c99ec07ccaeafc36ac4b36a93285086d48) +- [Tests] replace `aud` with `npm audit` [`fb7815f`](https://github.com/inspect-js/object-inspect/commit/fb7815f9b72cae277a04f65bbb0543f85b88be62) +- [Dev Deps] update `mock-property` [`11c817b`](https://github.com/inspect-js/object-inspect/commit/11c817bf10392aa017755962ba6bc89d731359ee) + +## [v1.13.2](https://github.com/inspect-js/object-inspect/compare/v1.13.1...v1.13.2) - 2024-06-21 + +### Commits + +- [readme] update badges [`8a51e6b`](https://github.com/inspect-js/object-inspect/commit/8a51e6bedaf389ec40cc4659e9df53e8543d176e) +- [Dev Deps] update `@ljharb/eslint-config`, `tape` [`ef05f58`](https://github.com/inspect-js/object-inspect/commit/ef05f58c9761a41416ab907299bf0fa79517014b) +- [Dev Deps] update `error-cause`, `has-tostringtag`, `tape` [`c0c6c26`](https://github.com/inspect-js/object-inspect/commit/c0c6c26c44cee6671f7c5d43d2b91d27c5c00d90) +- [Fix] Don't throw when `global` is not defined [`d4d0965`](https://github.com/inspect-js/object-inspect/commit/d4d096570f7dbd0e03266a96de11d05eb7b63e0f) +- [meta] add missing `engines.node` [`17a352a`](https://github.com/inspect-js/object-inspect/commit/17a352af6fe1ba6b70a19081674231eb1a50c940) +- [Dev Deps] update `globalthis` [`9c08884`](https://github.com/inspect-js/object-inspect/commit/9c08884aa662a149e2f11403f413927736b97da7) +- [Dev Deps] update `error-cause` [`6af352d`](https://github.com/inspect-js/object-inspect/commit/6af352d7c3929a4cc4c55768c27bf547a5e900f4) +- [Dev Deps] update `npmignore` [`94e617d`](https://github.com/inspect-js/object-inspect/commit/94e617d38831722562fa73dff4c895746861d267) +- [Dev Deps] update `mock-property` [`2ac24d7`](https://github.com/inspect-js/object-inspect/commit/2ac24d7e58cd388ad093c33249e413e05bbfd6c3) +- [Dev Deps] update `tape` [`46125e5`](https://github.com/inspect-js/object-inspect/commit/46125e58f1d1dcfb170ed3d1ea69da550ea8d77b) + +## [v1.13.1](https://github.com/inspect-js/object-inspect/compare/v1.13.0...v1.13.1) - 2023-10-19 + +### Commits + +- [Fix] in IE 8, global can !== window despite them being prototypes of each other [`30d0859`](https://github.com/inspect-js/object-inspect/commit/30d0859dc4606cf75c2410edcd5d5c6355f8d372) + +## [v1.13.0](https://github.com/inspect-js/object-inspect/compare/v1.12.3...v1.13.0) - 2023-10-14 + +### Commits + +- [New] add special handling for the global object [`431bab2`](https://github.com/inspect-js/object-inspect/commit/431bab21a490ee51d35395966a504501e8c685da) +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`fd4f619`](https://github.com/inspect-js/object-inspect/commit/fd4f6193562b4b0e95dcf5c0201b4e8cbbc4f58d) +- [Dev Deps] update `mock-property`, `tape` [`b453f6c`](https://github.com/inspect-js/object-inspect/commit/b453f6ceeebf8a1b738a1029754092e0367a4134) +- [Dev Deps] update `error-cause` [`e8ffc57`](https://github.com/inspect-js/object-inspect/commit/e8ffc577d73b92bb6a4b00c44f14e3319e374888) +- [Dev Deps] update `tape` [`054b8b9`](https://github.com/inspect-js/object-inspect/commit/054b8b9b98633284cf989e582450ebfbbe53503c) +- [Dev Deps] temporarily remove `aud` due to breaking change in transitive deps [`2476845`](https://github.com/inspect-js/object-inspect/commit/2476845e0678dd290c541c81cd3dec8420782c52) +- [Dev Deps] pin `glob`, since v10.3.8+ requires a broken `jackspeak` [`383fa5e`](https://github.com/inspect-js/object-inspect/commit/383fa5eebc0afd705cc778a4b49d8e26452e49a8) +- [Dev Deps] pin `jackspeak` since 2.1.2+ depends on npm aliases, which kill the install process in npm < 6 [`68c244c`](https://github.com/inspect-js/object-inspect/commit/68c244c5174cdd877e5dcb8ee90aa3f44b2f25be) + +## [v1.12.3](https://github.com/inspect-js/object-inspect/compare/v1.12.2...v1.12.3) - 2023-01-12 + +### Commits + +- [Fix] in eg FF 24, collections lack forEach [`75fc226`](https://github.com/inspect-js/object-inspect/commit/75fc22673c82d45f28322b1946bb0eb41b672b7f) +- [actions] update rebase action to use reusable workflow [`250a277`](https://github.com/inspect-js/object-inspect/commit/250a277a095e9dacc029ab8454dcfc15de549dcd) +- [Dev Deps] update `aud`, `es-value-fixtures`, `tape` [`66a19b3`](https://github.com/inspect-js/object-inspect/commit/66a19b3209ccc3c5ef4b34c3cb0160e65d1ce9d5) +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `error-cause` [`c43d332`](https://github.com/inspect-js/object-inspect/commit/c43d3324b48384a16fd3dc444e5fc589d785bef3) +- [Tests] add `@pkgjs/support` to `postlint` [`e2618d2`](https://github.com/inspect-js/object-inspect/commit/e2618d22a7a3fa361b6629b53c1752fddc9c4d80) + ## [v1.12.2](https://github.com/inspect-js/object-inspect/compare/v1.12.1...v1.12.2) - 2022-05-26 ### Commits diff --git a/food-ordering-app/server/node_modules/object-inspect/index.js b/food-ordering-app/server/node_modules/object-inspect/index.js index 7ab98a688..a4b2d4cd8 100644 --- a/food-ordering-app/server/node_modules/object-inspect/index.js +++ b/food-ordering-app/server/node_modules/object-inspect/index.js @@ -69,10 +69,21 @@ var utilInspect = require('./util.inspect'); var inspectCustom = utilInspect.custom; var inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null; +var quotes = { + __proto__: null, + 'double': '"', + single: "'" +}; +var quoteREs = { + __proto__: null, + 'double': /(["\\])/g, + single: /(['\\])/g +}; + module.exports = function inspect_(obj, options, depth, seen) { var opts = options || {}; - if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) { + if (has(opts, 'quoteStyle') && !has(quotes, opts.quoteStyle)) { throw new TypeError('option "quoteStyle" must be "single" or "double"'); } if ( @@ -202,16 +213,20 @@ module.exports = function inspect_(obj, options, depth, seen) { } if (isMap(obj)) { var mapParts = []; - mapForEach.call(obj, function (value, key) { - mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj)); - }); + if (mapForEach) { + mapForEach.call(obj, function (value, key) { + mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj)); + }); + } return collectionOf('Map', mapSize.call(obj), mapParts, indent); } if (isSet(obj)) { var setParts = []; - setForEach.call(obj, function (value) { - setParts.push(inspect(value, obj)); - }); + if (setForEach) { + setForEach.call(obj, function (value) { + setParts.push(inspect(value, obj)); + }); + } return collectionOf('Set', setSize.call(obj), setParts, indent); } if (isWeakMap(obj)) { @@ -235,6 +250,17 @@ module.exports = function inspect_(obj, options, depth, seen) { if (isString(obj)) { return markBoxed(inspect(String(obj))); } + // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other + /* eslint-env browser */ + if (typeof window !== 'undefined' && obj === window) { + return '{ [object Window] }'; + } + if ( + (typeof globalThis !== 'undefined' && obj === globalThis) + || (typeof global !== 'undefined' && obj === global) + ) { + return '{ [object globalThis] }'; + } if (!isDate(obj) && !isRegExp(obj)) { var ys = arrObjKeys(obj, inspect); var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object; @@ -252,7 +278,8 @@ module.exports = function inspect_(obj, options, depth, seen) { }; function wrapQuotes(s, defaultStyle, opts) { - var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '"' : "'"; + var style = opts.quoteStyle || defaultStyle; + var quoteChar = quotes[style]; return quoteChar + s + quoteChar; } @@ -260,13 +287,16 @@ function quote(s) { return $replace.call(String(s), /"/g, '"'); } -function isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } -function isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } -function isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } -function isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } -function isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } -function isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } -function isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } +function canTrustToString(obj) { + return !toStringTag || !(typeof obj === 'object' && (toStringTag in obj || typeof obj[toStringTag] !== 'undefined')); +} +function isArray(obj) { return toStr(obj) === '[object Array]' && canTrustToString(obj); } +function isDate(obj) { return toStr(obj) === '[object Date]' && canTrustToString(obj); } +function isRegExp(obj) { return toStr(obj) === '[object RegExp]' && canTrustToString(obj); } +function isError(obj) { return toStr(obj) === '[object Error]' && canTrustToString(obj); } +function isString(obj) { return toStr(obj) === '[object String]' && canTrustToString(obj); } +function isNumber(obj) { return toStr(obj) === '[object Number]' && canTrustToString(obj); } +function isBoolean(obj) { return toStr(obj) === '[object Boolean]' && canTrustToString(obj); } // Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives function isSymbol(obj) { @@ -410,8 +440,10 @@ function inspectString(str, opts) { var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : ''); return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer; } + var quoteRE = quoteREs[opts.quoteStyle || 'single']; + quoteRE.lastIndex = 0; // eslint-disable-next-line no-control-regex - var s = $replace.call($replace.call(str, /(['\\])/g, '\\$1'), /[\x00-\x1f]/g, lowbyte); + var s = $replace.call($replace.call(str, quoteRE, '\\$1'), /[\x00-\x1f]/g, lowbyte); return wrapQuotes(s, 'single', opts); } diff --git a/food-ordering-app/server/node_modules/object-inspect/package.json b/food-ordering-app/server/node_modules/object-inspect/package.json index 7e0b87c79..9fd97ff75 100644 --- a/food-ordering-app/server/node_modules/object-inspect/package.json +++ b/food-ordering-app/server/node_modules/object-inspect/package.json @@ -1,38 +1,46 @@ { "name": "object-inspect", - "version": "1.12.2", + "version": "1.13.4", "description": "string representations of objects in node and the browser", "main": "index.js", "sideEffects": false, "devDependencies": { - "@ljharb/eslint-config": "^21.0.0", - "aud": "^2.0.0", - "auto-changelog": "^2.4.0", + "@ljharb/eslint-config": "^21.1.1", + "@pkgjs/support": "^0.0.6", + "auto-changelog": "^2.5.0", "core-js": "^2.6.12", - "error-cause": "^1.0.4", - "es-value-fixtures": "^1.4.1", + "error-cause": "^1.0.8", + "es-value-fixtures": "^1.7.1", "eslint": "=8.8.0", - "for-each": "^0.3.3", + "for-each": "^0.3.4", "functions-have-names": "^1.2.3", - "has-tostringtag": "^1.0.0", + "glob": "=10.3.7", + "globalthis": "^1.0.4", + "has-symbols": "^1.1.0", + "has-tostringtag": "^1.0.2", + "in-publish": "^2.0.1", + "jackspeak": "=2.1.1", "make-arrow-function": "^1.2.0", - "mock-property": "^1.0.0", - "npmignore": "^0.3.0", + "mock-property": "^1.1.0", + "npmignore": "^0.3.1", "nyc": "^10.3.2", "safe-publish-latest": "^2.0.0", + "safer-buffer": "^2.1.2", + "semver": "^6.3.1", "string.prototype.repeat": "^1.0.0", - "tape": "^5.5.3" + "tape": "^5.9.0" }, "scripts": { "prepack": "npmignore --auto --commentLines=autogenerated", "prepublish": "not-in-publish || npm run prepublishOnly", "prepublishOnly": "safe-publish-latest", "pretest": "npm run lint", - "lint": "eslint .", + "lint": "eslint --ext=js,mjs .", + "postlint": "npx @pkgjs/support validate", "test": "npm run tests-only && npm run test:corejs", "tests-only": "nyc tape 'test/*.js'", "test:corejs": "nyc tape test-core-js.js 'test/*.js'", - "posttest": "npx aud --production", + "posttest": "npx npm@'>=10.2' audit --production", "version": "auto-changelog && git add CHANGELOG.md", "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" }, @@ -90,5 +98,8 @@ "./test-core-js.js" ] }, - "support": true + "support": true, + "engines": { + "node": ">= 0.4" + } } diff --git a/food-ordering-app/server/node_modules/object-inspect/readme.markdown b/food-ordering-app/server/node_modules/object-inspect/readme.markdown index 9ff6bec36..f91617df3 100644 --- a/food-ordering-app/server/node_modules/object-inspect/readme.markdown +++ b/food-ordering-app/server/node_modules/object-inspect/readme.markdown @@ -1,15 +1,13 @@ -# object-inspect [![Version Badge][2]][1] +# object-inspect [![Version Badge][npm-version-svg]][package-url] string representations of objects in node and the browser [![github actions][actions-image]][actions-url] [![coverage][codecov-image]][codecov-url] -[![dependency status][5]][6] -[![dev dependency status][7]][8] [![License][license-image]][license-url] [![Downloads][downloads-image]][downloads-url] -[![npm badge][11]][1] +[![npm badge][npm-badge-png]][package-url] # example @@ -69,13 +67,13 @@ npm install object-inspect MIT -[1]: https://npmjs.org/package/object-inspect -[2]: https://versionbadg.es/inspect-js/object-inspect.svg -[5]: https://david-dm.org/inspect-js/object-inspect.svg -[6]: https://david-dm.org/inspect-js/object-inspect -[7]: https://david-dm.org/inspect-js/object-inspect/dev-status.svg -[8]: https://david-dm.org/inspect-js/object-inspect#info=devDependencies -[11]: https://nodei.co/npm/object-inspect.png?downloads=true&stars=true +[package-url]: https://npmjs.org/package/object-inspect +[npm-version-svg]: https://versionbadg.es/inspect-js/object-inspect.svg +[deps-svg]: https://david-dm.org/inspect-js/object-inspect.svg +[deps-url]: https://david-dm.org/inspect-js/object-inspect +[dev-deps-svg]: https://david-dm.org/inspect-js/object-inspect/dev-status.svg +[dev-deps-url]: https://david-dm.org/inspect-js/object-inspect#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/object-inspect.png?downloads=true&stars=true [license-image]: https://img.shields.io/npm/l/object-inspect.svg [license-url]: LICENSE [downloads-image]: https://img.shields.io/npm/dm/object-inspect.svg diff --git a/food-ordering-app/server/node_modules/object-inspect/test/global.js b/food-ordering-app/server/node_modules/object-inspect/test/global.js new file mode 100644 index 000000000..c57216aeb --- /dev/null +++ b/food-ordering-app/server/node_modules/object-inspect/test/global.js @@ -0,0 +1,17 @@ +'use strict'; + +var inspect = require('../'); + +var test = require('tape'); +var globalThis = require('globalthis')(); + +test('global object', function (t) { + /* eslint-env browser */ + var expected = typeof window === 'undefined' ? 'globalThis' : 'Window'; + t.equal( + inspect([globalThis]), + '[ { [object ' + expected + '] } ]' + ); + + t.end(); +}); diff --git a/food-ordering-app/server/node_modules/object-inspect/test/quoteStyle.js b/food-ordering-app/server/node_modules/object-inspect/test/quoteStyle.js index ae4d734bf..da23e630c 100644 --- a/food-ordering-app/server/node_modules/object-inspect/test/quoteStyle.js +++ b/food-ordering-app/server/node_modules/object-inspect/test/quoteStyle.js @@ -13,5 +13,14 @@ test('quoteStyle option', function (t) { t['throws'](function () { inspect(null, { quoteStyle: NaN }); }, 'NaN is not a valid value'); t['throws'](function () { inspect(null, { quoteStyle: function () {} }); }, 'a function is not a valid value'); + t.equal(inspect('"', { quoteStyle: 'single' }), '\'"\'', 'double quote, quoteStyle: "single"'); + t.equal(inspect('"', { quoteStyle: 'double' }), '"\\""', 'double quote, quoteStyle: "double"'); + + t.equal(inspect('\'', { quoteStyle: 'single' }), '\'\\\'\'', 'single quote, quoteStyle: "single"'); + t.equal(inspect('\'', { quoteStyle: 'double' }), '"\'"', 'single quote, quoteStyle: "double"'); + + t.equal(inspect('`', { quoteStyle: 'single' }), '\'`\'', 'backtick, quoteStyle: "single"'); + t.equal(inspect('`', { quoteStyle: 'double' }), '"`"', 'backtick, quoteStyle: "double"'); + t.end(); }); diff --git a/food-ordering-app/server/node_modules/object-inspect/test/values.js b/food-ordering-app/server/node_modules/object-inspect/test/values.js index 4832b9fe9..15986cd0e 100644 --- a/food-ordering-app/server/node_modules/object-inspect/test/values.js +++ b/food-ordering-app/server/node_modules/object-inspect/test/values.js @@ -5,6 +5,8 @@ var test = require('tape'); var mockProperty = require('mock-property'); var hasSymbols = require('has-symbols/shams')(); var hasToStringTag = require('has-tostringtag/shams')(); +var forEach = require('for-each'); +var semver = require('semver'); test('values', function (t) { t.plan(1); @@ -209,3 +211,51 @@ test('RegExps', function (t) { t.end(); }); + +test('Proxies', { skip: typeof Proxy !== 'function' || !hasToStringTag }, function (t) { + var target = { proxy: true }; + var fake = new Proxy(target, { has: function () { return false; } }); + + // needed to work around a weird difference in node v6.0 - v6.4 where non-present properties are not logged + var isNode60 = semver.satisfies(process.version, '6.0 - 6.4'); + + forEach([ + 'Boolean', + 'Number', + 'String', + 'Symbol', + 'Date' + ], function (tag) { + target[Symbol.toStringTag] = tag; + + t.equal( + inspect(fake), + '{ ' + (isNode60 ? '' : 'proxy: true, ') + '[Symbol(Symbol.toStringTag)]: \'' + tag + '\' }', + 'Proxy for + ' + tag + ' shows as the target, which has no slots' + ); + }); + + t.end(); +}); + +test('fakers', { skip: !hasToStringTag }, function (t) { + var target = { proxy: false }; + + forEach([ + 'Boolean', + 'Number', + 'String', + 'Symbol', + 'Date' + ], function (tag) { + target[Symbol.toStringTag] = tag; + + t.equal( + inspect(target), + '{ proxy: false, [Symbol(Symbol.toStringTag)]: \'' + tag + '\' }', + 'Object pretending to be ' + tag + ' does not trick us' + ); + }); + + t.end(); +}); diff --git a/food-ordering-app/server/node_modules/path-expression-matcher/LICENSE b/food-ordering-app/server/node_modules/path-expression-matcher/LICENSE new file mode 100644 index 000000000..c13f99117 --- /dev/null +++ b/food-ordering-app/server/node_modules/path-expression-matcher/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/food-ordering-app/server/node_modules/path-expression-matcher/README.md b/food-ordering-app/server/node_modules/path-expression-matcher/README.md new file mode 100644 index 000000000..4af53aa32 --- /dev/null +++ b/food-ordering-app/server/node_modules/path-expression-matcher/README.md @@ -0,0 +1,635 @@ +# path-expression-matcher + +Efficient path tracking and pattern matching for XML, JSON, YAML or any other parsers. + +## 🎯 Purpose + +`path-expression-matcher` provides two core classes for tracking and matching paths: + +- **`Expression`**: Parses and stores pattern expressions (e.g., `"root.users.user[id]"`) +- **`Matcher`**: Tracks current path during parsing and matches against expressions + +Compatible with [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) and similar tools. + +## 📦 Installation + +```bash +npm install path-expression-matcher +``` + +## 🚀 Quick Start + +```javascript +import { Expression, Matcher } from 'path-expression-matcher'; + +// Create expression (parse once, reuse many times) +const expr = new Expression("root.users.user"); + +// Create matcher (tracks current path) +const matcher = new Matcher(); + +matcher.push("root"); +matcher.push("users"); +matcher.push("user", { id: "123" }); + +// Match current path against expression +if (matcher.matches(expr)) { + console.log("Match found!"); + console.log("Current path:", matcher.toString()); // "root.users.user" +} + +// Namespace support +const nsExpr = new Expression("soap::Envelope.soap::Body..ns::UserId"); +matcher.push("Envelope", null, "soap"); +matcher.push("Body", null, "soap"); +matcher.push("UserId", null, "ns"); +console.log(matcher.toString()); // "soap:Envelope.soap:Body.ns:UserId" +``` + +## 📖 Pattern Syntax + +### Basic Paths + +```javascript +"root.users.user" // Exact path match +"*.users.user" // Wildcard: any parent +"root.*.user" // Wildcard: any middle +"root.users.*" // Wildcard: any child +``` + +### Deep Wildcard + +```javascript +"..user" // user anywhere in tree +"root..user" // user anywhere under root +"..users..user" // users somewhere, then user below it +``` + +### Attribute Matching + +```javascript +"user[id]" // user with "id" attribute +"user[type=admin]" // user with type="admin" (current node only) +"root[lang]..user" // user under root that has "lang" attribute +``` + +### Position Selectors + +```javascript +"user:first" // First user (counter=0) +"user:nth(2)" // Third user (counter=2, zero-based) +"user:odd" // Odd-numbered users (counter=1,3,5...) +"user:even" // Even-numbered users (counter=0,2,4...) +"root.users.user:first" // First user under users +``` + +**Note:** Position selectors use the **counter** (occurrence count of the tag name), not the position (child index). For example, in ``, the second `` has position=2 but counter=1. + +### Namespaces + +```javascript +"ns::user" // user with namespace "ns" +"soap::Envelope" // Envelope with namespace "soap" +"ns::user[id]" // user with namespace "ns" and "id" attribute +"ns::user:first" // First user with namespace "ns" +"*::user" // user with any namespace +"..ns::item" // item with namespace "ns" anywhere in tree +"soap::Envelope.soap::Body" // Nested namespaced elements +"ns::first" // Tag named "first" with namespace "ns" (NO ambiguity!) +``` + +**Namespace syntax:** +- Use **double colon (::)** for namespace: `ns::tag` +- Use **single colon (:)** for position: `tag:first` +- Combined: `ns::tag:first` (namespace + tag + position) + +**Namespace matching rules:** +- Pattern `ns::user` matches only nodes with namespace "ns" and tag "user" +- Pattern `user` (no namespace) matches nodes with tag "user" regardless of namespace +- Pattern `*::user` matches tag "user" with any namespace (wildcard namespace) +- Namespaces are tracked separately for counter/position (e.g., `ns1::item` and `ns2::item` have independent counters) + +### Wildcard Differences + +**Single wildcard (`*`)** - Matches exactly ONE level: +- `"*.fix1"` matches `root.fix1` (2 levels) ✅ +- `"*.fix1"` does NOT match `root.another.fix1` (3 levels) ❌ +- Path depth MUST equal pattern depth + +**Deep wildcard (`..`)** - Matches ZERO or MORE levels: +- `"..fix1"` matches `root.fix1` ✅ +- `"..fix1"` matches `root.another.fix1` ✅ +- `"..fix1"` matches `a.b.c.d.fix1` ✅ +- Works at any depth + +### Combined Patterns + +```javascript +"..user[id]:first" // First user with id, anywhere +"root..user[type=admin]" // Admin user under root +"ns::user[id]:first" // First namespaced user with id +"soap::Envelope..ns::UserId" // UserId with namespace ns under SOAP envelope +``` + +## 🔧 API Reference + +### Expression + +#### Constructor + +```javascript +new Expression(pattern, options) +``` + +**Parameters:** +- `pattern` (string): Pattern to parse +- `options.separator` (string): Path separator (default: `'.'`) + +**Example:** +```javascript +const expr1 = new Expression("root.users.user"); +const expr2 = new Expression("root/users/user", { separator: '/' }); +``` + +#### Methods + +- `hasDeepWildcard()` → boolean +- `hasAttributeCondition()` → boolean +- `hasPositionSelector()` → boolean +- `toString()` → string + +### Matcher + +#### Constructor + +```javascript +new Matcher(options) +``` + +**Parameters:** +- `options.separator` (string): Default path separator (default: `'.'`) + +#### Path Tracking Methods + +##### `push(tagName, attrValues, namespace)` + +Add a tag to the current path. Position and counter are automatically calculated. + +**Parameters:** +- `tagName` (string): Tag name +- `attrValues` (object, optional): Attribute key-value pairs (current node only) +- `namespace` (string, optional): Namespace for the tag + +**Example:** +```javascript +matcher.push("user", { id: "123", type: "admin" }); +matcher.push("item"); // No attributes +matcher.push("Envelope", null, "soap"); // With namespace +matcher.push("Body", { version: "1.1" }, "soap"); // With both +``` + +**Position vs Counter:** +- **Position**: The child index in the parent (0, 1, 2, 3...) +- **Counter**: How many times this tag name appeared at this level (0, 1, 2...) + +Example: +```xml + + + + + +``` + +##### `pop()` + +Remove the last tag from the path. + +```javascript +matcher.pop(); +``` + +##### `updateCurrent(attrValues)` + +Update current node's attributes (useful when attributes are parsed after push). + +```javascript +matcher.push("user"); // Don't know values yet +// ... parse attributes ... +matcher.updateCurrent({ id: "123" }); +``` + +##### `reset()` + +Clear the entire path. + +```javascript +matcher.reset(); +``` + +#### Query Methods + +##### `matches(expression)` + +Check if current path matches an Expression. + +```javascript +const expr = new Expression("root.users.user"); +if (matcher.matches(expr)) { + // Current path matches +} +``` + +##### `getCurrentTag()` + +Get current tag name. + +```javascript +const tag = matcher.getCurrentTag(); // "user" +``` + +##### `getCurrentNamespace()` + +Get current namespace. + +```javascript +const ns = matcher.getCurrentNamespace(); // "soap" or undefined +``` + +##### `getAttrValue(attrName)` + +Get attribute value of current node. + +```javascript +const id = matcher.getAttrValue("id"); // "123" +``` + +##### `hasAttr(attrName)` + +Check if current node has an attribute. + +```javascript +if (matcher.hasAttr("id")) { + // Current node has "id" attribute +} +``` + +##### `getPosition()` + +Get sibling position of current node (child index in parent). + +```javascript +const position = matcher.getPosition(); // 0, 1, 2, ... +``` + +##### `getCounter()` + +Get repeat counter of current node (occurrence count of this tag name). + +```javascript +const counter = matcher.getCounter(); // 0, 1, 2, ... +``` + +##### `getIndex()` (deprecated) + +Alias for `getPosition()`. Use `getPosition()` or `getCounter()` instead for clarity. + +```javascript +const index = matcher.getIndex(); // Same as getPosition() +``` + +##### `getDepth()` + +Get current path depth. + +```javascript +const depth = matcher.getDepth(); // 3 for "root.users.user" +``` + +##### `toString(separator?, includeNamespace?)` + +Get path as string. + +**Parameters:** +- `separator` (string, optional): Path separator (uses default if not provided) +- `includeNamespace` (boolean, optional): Whether to include namespaces (default: true) + +```javascript +const path = matcher.toString(); // "root.ns:user.item" +const path2 = matcher.toString('/'); // "root/ns:user/item" +const path3 = matcher.toString('.', false); // "root.user.item" (no namespaces) +``` + +##### `toArray()` + +Get path as array. + +```javascript +const arr = matcher.toArray(); // ["root", "users", "user"] +``` + +#### State Management + +##### `snapshot()` + +Create a snapshot of current state. + +```javascript +const snapshot = matcher.snapshot(); +``` + +##### `restore(snapshot)` + +Restore from a snapshot. + +```javascript +matcher.restore(snapshot); +``` + +## 💡 Usage Examples + +### Example 1: XML Parser with stopNodes + +```javascript +import { XMLParser } from 'fast-xml-parser'; +import { Expression, Matcher } from 'path-expression-matcher'; + +class MyParser { + constructor() { + this.matcher = new Matcher(); + + // Pre-compile stop node patterns + this.stopNodeExpressions = [ + new Expression("html.body.script"), + new Expression("html.body.style"), + new Expression("..svg"), + ]; + } + + parseTag(tagName, attrs) { + this.matcher.push(tagName, attrs); + + // Check if this is a stop node + for (const expr of this.stopNodeExpressions) { + if (this.matcher.matches(expr)) { + // Don't parse children, read as raw text + return this.readRawContent(); + } + } + + // Continue normal parsing + this.parseChildren(); + + this.matcher.pop(); + } +} +``` + +### Example 2: Conditional Processing + +```javascript +const matcher = new Matcher(); +const userExpr = new Expression("..user[type=admin]"); +const firstItemExpr = new Expression("..item:first"); + +function processTag(tagName, value, attrs) { + matcher.push(tagName, attrs); + + if (matcher.matches(userExpr)) { + value = enhanceAdminUser(value); + } + + if (matcher.matches(firstItemExpr)) { + value = markAsFirst(value); + } + + matcher.pop(); + return value; +} +``` + +### Example 3: Path-based Filtering + +```javascript +const patterns = [ + new Expression("data.users.user"), + new Expression("data.posts.post"), + new Expression("..comment[approved=true]"), +]; + +function shouldInclude(matcher) { + return patterns.some(expr => matcher.matches(expr)); +} +``` + +### Example 4: Custom Separator + +```javascript +const matcher = new Matcher({ separator: '/' }); +const expr = new Expression("root/config/database", { separator: '/' }); + +matcher.push("root"); +matcher.push("config"); +matcher.push("database"); + +console.log(matcher.toString()); // "root/config/database" +console.log(matcher.matches(expr)); // true +``` + +### Example 5: Attribute Checking + +```javascript +const matcher = new Matcher(); +matcher.push("root"); +matcher.push("user", { id: "123", type: "admin", status: "active" }); + +// Check attribute existence (current node only) +console.log(matcher.hasAttr("id")); // true +console.log(matcher.hasAttr("email")); // false + +// Get attribute value (current node only) +console.log(matcher.getAttrValue("type")); // "admin" + +// Match by attribute +const expr1 = new Expression("user[id]"); +console.log(matcher.matches(expr1)); // true + +const expr2 = new Expression("user[type=admin]"); +console.log(matcher.matches(expr2)); // true +``` + +### Example 6: Position vs Counter + +```javascript +const matcher = new Matcher(); +matcher.push("root"); + +// Mixed tags at same level +matcher.push("item"); // position=0, counter=0 (first item) +matcher.pop(); + +matcher.push("div"); // position=1, counter=0 (first div) +matcher.pop(); + +matcher.push("item"); // position=2, counter=1 (second item) + +console.log(matcher.getPosition()); // 2 (third child overall) +console.log(matcher.getCounter()); // 1 (second "item" specifically) + +// :first uses counter, not position +const expr = new Expression("root.item:first"); +console.log(matcher.matches(expr)); // false (counter=1, not 0) +``` + +### Example 7: Namespace Support (XML/SOAP) + +```javascript +const matcher = new Matcher(); +const soapExpr = new Expression("soap::Envelope.soap::Body..ns::UserId"); + +// Parse SOAP document +matcher.push("Envelope", { xmlns: "..." }, "soap"); +matcher.push("Body", null, "soap"); +matcher.push("GetUserRequest", null, "ns"); +matcher.push("UserId", null, "ns"); + +// Match namespaced pattern +if (matcher.matches(soapExpr)) { + console.log("Found UserId in SOAP body"); + console.log(matcher.toString()); // "soap:Envelope.soap:Body.ns:GetUserRequest.ns:UserId" +} + +// Namespace-specific counters +matcher.reset(); +matcher.push("root"); +matcher.push("item", null, "ns1"); // ns1::item counter=0 +matcher.pop(); +matcher.push("item", null, "ns2"); // ns2::item counter=0 (different namespace) +matcher.pop(); +matcher.push("item", null, "ns1"); // ns1::item counter=1 + +const firstNs1Item = new Expression("root.ns1::item:first"); +console.log(matcher.matches(firstNs1Item)); // false (counter=1) + +const secondNs1Item = new Expression("root.ns1::item:nth(1)"); +console.log(matcher.matches(secondNs1Item)); // true + +// NO AMBIGUITY: Tags named after position keywords +matcher.reset(); +matcher.push("root"); +matcher.push("first", null, "ns"); // Tag named "first" with namespace + +const expr = new Expression("root.ns::first"); +console.log(matcher.matches(expr)); // true - matches namespace "ns", tag "first" +``` + +## 🏗️ Architecture + +### Data Storage Strategy + +**Ancestor nodes:** Store only tag name, position, and counter (minimal memory) +**Current node:** Store tag name, position, counter, and attribute values + +This design minimizes memory usage: +- No attribute names stored (derived from values object when needed) +- Attribute values only for current node, not ancestors +- Attribute checking for ancestors is not supported (acceptable trade-off) +- For 1M nodes with 3 attributes each, saves ~50MB vs storing attribute names + +### Matching Strategy + +Matching is performed **bottom-to-top** (from current node toward root): +1. Start at current node +2. Match segments from pattern end to start +3. Attribute checking only works for current node (ancestors have no attribute data) +4. Position selectors use **counter** (occurrence count), not position (child index) + +### Performance + +- **Expression parsing:** One-time cost when Expression is created +- **Expression analysis:** Cached (hasDeepWildcard, hasAttributeCondition, hasPositionSelector) +- **Path tracking:** O(1) for push/pop operations +- **Pattern matching:** O(n*m) where n = path depth, m = pattern segments +- **Memory per ancestor node:** ~40-60 bytes (tag, position, counter only) +- **Memory per current node:** ~80-120 bytes (adds attribute values) + +## 🎓 Design Patterns + +### Pre-compile Patterns (Recommended) + +```javascript +// ✅ GOOD: Parse once, reuse many times +const expr = new Expression("..user[id]"); + +for (let i = 0; i < 1000; i++) { + if (matcher.matches(expr)) { + // ... + } +} +``` + +```javascript +// ❌ BAD: Parse on every iteration +for (let i = 0; i < 1000; i++) { + if (matcher.matches(new Expression("..user[id]"))) { + // ... + } +} +``` + +### Batch Pattern Checking + +```javascript +// For multiple patterns, check all at once +const patterns = [ + new Expression("..user"), + new Expression("..post"), + new Expression("..comment"), +]; + +function matchesAny(matcher, patterns) { + return patterns.some(expr => matcher.matches(expr)); +} +``` + +## 🔗 Integration with fast-xml-parser + +**Basic integration:** + +```javascript +import { XMLParser } from 'fast-xml-parser'; +import { Expression, Matcher } from 'path-expression-matcher'; + +const parser = new XMLParser({ + // Custom options using path-expression-matcher + stopNodes: ["script", "style"].map(tag => new Expression(`..${tag}`)), + + tagValueProcessor: (tagName, value, jPath, hasAttrs, isLeaf, matcher) => { + // matcher is available in callbacks + if (matcher.matches(new Expression("..user[type=admin]"))) { + return enhanceValue(value); + } + return value; + } +}); +``` + +## 🧪 Testing + +```bash +npm test +``` + +All 77 tests covering: +- Pattern parsing (exact, wildcards, attributes, position) +- Path tracking (push, pop, update) +- Pattern matching (all combinations) +- Edge cases and error conditions + +## 📄 License + +MIT + +## 🤝 Contributing + +Issues and PRs welcome! This package is designed to be used by XML/JSON parsers like fast-xml-parser. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/path-expression-matcher/lib/pem.cjs b/food-ordering-app/server/node_modules/path-expression-matcher/lib/pem.cjs new file mode 100644 index 000000000..189e599f0 --- /dev/null +++ b/food-ordering-app/server/node_modules/path-expression-matcher/lib/pem.cjs @@ -0,0 +1 @@ +(()=>{"use strict";var t={d:(e,s)=>{for(var i in s)t.o(s,i)&&!t.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:s[i]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{Expression:()=>s,Matcher:()=>i,default:()=>n});class s{constructor(t,e={}){this.pattern=t,this.separator=e.separator||".",this.segments=this._parse(t),this._hasDeepWildcard=this.segments.some(t=>"deep-wildcard"===t.type),this._hasAttributeCondition=this.segments.some(t=>void 0!==t.attrName),this._hasPositionSelector=this.segments.some(t=>void 0!==t.position)}_parse(t){const e=[];let s=0,i="";for(;s0&&(this.path[this.path.length-1].values=void 0);const i=this.path.length;this.siblingStacks[i]||(this.siblingStacks[i]=new Map);const n=this.siblingStacks[i],r=s?`${s}:${t}`:t,a=n.get(r)||0;let h=0;for(const t of n.values())h+=t;n.set(r,a+1);const o={tag:t,position:h,counter:a};null!=s&&(o.namespace=s),null!=e&&(o.values=e),this.path.push(o)}pop(){if(0===this.path.length)return;const t=this.path.pop();return this.siblingStacks.length>this.path.length+1&&(this.siblingStacks.length=this.path.length+1),t}updateCurrent(t){if(this.path.length>0){const e=this.path[this.path.length-1];null!=t&&(e.values=t)}}getCurrentTag(){return this.path.length>0?this.path[this.path.length-1].tag:void 0}getCurrentNamespace(){return this.path.length>0?this.path[this.path.length-1].namespace:void 0}getAttrValue(t){if(0===this.path.length)return;const e=this.path[this.path.length-1];return e.values?.[t]}hasAttr(t){if(0===this.path.length)return!1;const e=this.path[this.path.length-1];return void 0!==e.values&&t in e.values}getPosition(){return 0===this.path.length?-1:this.path[this.path.length-1].position??0}getCounter(){return 0===this.path.length?-1:this.path[this.path.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this.path.length}toString(t,e=!0){const s=t||this.separator;return this.path.map(t=>e&&t.namespace?`${t.namespace}:${t.tag}`:t.tag).join(s)}toArray(){return this.path.map(t=>t.tag)}reset(){this.path=[],this.siblingStacks=[]}matches(t){const e=t.segments;return 0!==e.length&&(t.hasDeepWildcard()?this._matchWithDeepWildcard(e):this._matchSimple(e))}_matchSimple(t){if(this.path.length!==t.length)return!1;for(let e=0;e=0&&e>=0;){const i=t[s];if("deep-wildcard"===i.type){if(s--,s<0)return!0;const i=t[s];let n=!1;for(let t=e;t>=0;t--){const r=t===this.path.length-1;if(this._matchSegment(i,this.path[t],r)){e=t-1,s--,n=!0;break}}if(!n)return!1}else{const t=e===this.path.length-1;if(!this._matchSegment(i,this.path[e],t))return!1;e--,s--}}return s<0}_matchSegment(t,e,s){if("*"!==t.tag&&t.tag!==e.tag)return!1;if(void 0!==t.namespace&&"*"!==t.namespace&&t.namespace!==e.namespace)return!1;if(void 0!==t.attrName){if(!s)return!1;if(!e.values||!(t.attrName in e.values))return!1;if(void 0!==t.attrValue){const s=e.values[t.attrName];if(String(s)!==String(t.attrValue))return!1}}if(void 0!==t.position){if(!s)return!1;const i=e.counter??0;if("first"===t.position&&0!==i)return!1;if("odd"===t.position&&i%2!=1)return!1;if("even"===t.position&&i%2!=0)return!1;if("nth"===t.position&&i!==t.positionValue)return!1}return!0}snapshot(){return{path:this.path.map(t=>({...t})),siblingStacks:this.siblingStacks.map(t=>new Map(t))}}restore(t){this.path=t.path.map(t=>({...t})),this.siblingStacks=t.siblingStacks.map(t=>new Map(t))}}const n={Expression:s,Matcher:i};module.exports=e})(); \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/path-expression-matcher/lib/pem.d.cts b/food-ordering-app/server/node_modules/path-expression-matcher/lib/pem.d.cts new file mode 100644 index 000000000..37455e877 --- /dev/null +++ b/food-ordering-app/server/node_modules/path-expression-matcher/lib/pem.d.cts @@ -0,0 +1,335 @@ +/** + * TypeScript definitions for path-expression-matcher (CommonJS) + */ + +/** + * Options for creating an Expression + */ +declare interface ExpressionOptions { + /** + * Path separator character + * @default '.' + */ + separator?: string; +} + +/** + * Parsed segment from an expression pattern + */ +declare interface Segment { + /** + * Type of segment + */ + type: 'tag' | 'deep-wildcard'; + + /** + * Tag name (e.g., "user", "*" for wildcard) + * Only present when type is 'tag' + */ + tag?: string; + + /** + * Namespace prefix (e.g., "ns" in "ns::user") + * Only present when namespace is specified + */ + namespace?: string; + + /** + * Attribute name to match (e.g., "id" in "user[id]") + * Only present when attribute condition exists + */ + attrName?: string; + + /** + * Attribute value to match (e.g., "123" in "user[id=123]") + * Only present when attribute value is specified + */ + attrValue?: string; + + /** + * Position selector type + * Only present when position selector exists + */ + position?: 'first' | 'last' | 'odd' | 'even' | 'nth'; + + /** + * Numeric value for nth() selector + * Only present when position is 'nth' + */ + positionValue?: number; +} + +/** + * Expression - Parses and stores a tag pattern expression + * + * Patterns are parsed once and stored in an optimized structure for fast matching. + * + * @example + * ```javascript + * const { Expression } = require('path-expression-matcher'); + * const expr = new Expression("root.users.user"); + * const expr2 = new Expression("..user[id]:first"); + * ``` + */ +declare class Expression { + /** + * Original pattern string + */ + readonly pattern: string; + + /** + * Path separator character + */ + readonly separator: string; + + /** + * Parsed segments + */ + readonly segments: Segment[]; + + /** + * Create a new Expression + * @param pattern - Pattern string (e.g., "root.users.user", "..user[id]") + * @param options - Configuration options + */ + constructor(pattern: string, options?: ExpressionOptions); + + /** + * Get the number of segments + */ + get length(): number; + + /** + * Check if expression contains deep wildcard (..) + */ + hasDeepWildcard(): boolean; + + /** + * Check if expression has attribute conditions + */ + hasAttributeCondition(): boolean; + + /** + * Check if expression has position selectors + */ + hasPositionSelector(): boolean; + + /** + * Get string representation + */ + toString(): string; +} + +/** + * Options for creating a Matcher + */ +declare interface MatcherOptions { + /** + * Default path separator + * @default '.' + */ + separator?: string; +} + +/** + * Internal node structure in the path stack + */ +declare interface PathNode { + /** + * Tag name + */ + tag: string; + + /** + * Namespace (if present) + */ + namespace?: string; + + /** + * Position in sibling list (child index in parent) + */ + position: number; + + /** + * Counter (occurrence count of this tag name) + */ + counter: number; + + /** + * Attribute key-value pairs + * Only present for the current (last) node in path + */ + values?: Record; +} + +/** + * Snapshot of matcher state + */ +declare interface MatcherSnapshot { + /** + * Copy of the path stack + */ + path: PathNode[]; + + /** + * Copy of sibling tracking maps + */ + siblingStacks: Map[]; +} + +/** + * Matcher - Tracks current path in XML/JSON tree and matches against Expressions + * + * The matcher maintains a stack of nodes representing the current path from root to + * current tag. It only stores attribute values for the current (top) node to minimize + * memory usage. + * + * @example + * ```javascript + * const { Matcher } = require('path-expression-matcher'); + * const matcher = new Matcher(); + * matcher.push("root", {}); + * matcher.push("users", {}); + * matcher.push("user", { id: "123", type: "admin" }); + * ``` + */ +declare class Matcher { + /** + * Default path separator + */ + readonly separator: string; + + /** + * Current path stack + */ + readonly path: PathNode[]; + + /** + * Create a new Matcher + * @param options - Configuration options + */ + constructor(options?: MatcherOptions); + + /** + * Push a new tag onto the path + * @param tagName - Name of the tag + * @param attrValues - Attribute key-value pairs for current node (optional) + * @param namespace - Namespace for the tag (optional) + */ + push(tagName: string, attrValues?: Record | null, namespace?: string | null): void; + + /** + * Pop the last tag from the path + * @returns The popped node or undefined if path is empty + */ + pop(): PathNode | undefined; + + /** + * Update current node's attribute values + * Useful when attributes are parsed after push + * @param attrValues - Attribute values + */ + updateCurrent(attrValues: Record): void; + + /** + * Get current tag name + * @returns Current tag name or undefined if path is empty + */ + getCurrentTag(): string | undefined; + + /** + * Get current namespace + * @returns Current namespace or undefined if not present or path is empty + */ + getCurrentNamespace(): string | undefined; + + /** + * Get current node's attribute value + * @param attrName - Attribute name + * @returns Attribute value or undefined + */ + getAttrValue(attrName: string): any; + + /** + * Check if current node has an attribute + * @param attrName - Attribute name + */ + hasAttr(attrName: string): boolean; + + /** + * Get current node's sibling position (child index in parent) + * @returns Position index or -1 if path is empty + */ + getPosition(): number; + + /** + * Get current node's repeat counter (occurrence count of this tag name) + * @returns Counter value or -1 if path is empty + */ + getCounter(): number; + + /** + * Get current node's sibling index (alias for getPosition for backward compatibility) + * @returns Index or -1 if path is empty + * @deprecated Use getPosition() or getCounter() instead + */ + getIndex(): number; + + /** + * Get current path depth + * @returns Number of nodes in the path + */ + getDepth(): number; + + /** + * Get path as string + * @param separator - Optional separator (uses default if not provided) + * @param includeNamespace - Whether to include namespace in output + * @returns Path string (e.g., "root.users.user" or "ns:root.ns:users.user") + */ + toString(separator?: string, includeNamespace?: boolean): string; + + /** + * Get path as array of tag names + * @returns Array of tag names + */ + toArray(): string[]; + + /** + * Reset the path to empty + */ + reset(): void; + + /** + * Match current path against an Expression + * @param expression - The expression to match against + * @returns True if current path matches the expression + */ + matches(expression: Expression): boolean; + + /** + * Create a snapshot of current state + * @returns State snapshot that can be restored later + */ + snapshot(): MatcherSnapshot; + + /** + * Restore state from snapshot + * @param snapshot - State snapshot from previous snapshot() call + */ + restore(snapshot: MatcherSnapshot): void; +} + +declare namespace pathExpressionMatcher { + export { + Expression, + Matcher, + ExpressionOptions, + MatcherOptions, + Segment, + PathNode, + MatcherSnapshot, + }; +} + +export = pathExpressionMatcher; diff --git a/food-ordering-app/server/node_modules/path-expression-matcher/lib/pem.min.js b/food-ordering-app/server/node_modules/path-expression-matcher/lib/pem.min.js new file mode 100644 index 000000000..30dc591f3 --- /dev/null +++ b/food-ordering-app/server/node_modules/path-expression-matcher/lib/pem.min.js @@ -0,0 +1,2 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.pem=e():t.pem=e()}(this,()=>(()=>{"use strict";var t={d:(e,s)=>{for(var i in s)t.o(s,i)&&!t.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:s[i]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{Expression:()=>s,Matcher:()=>i,default:()=>n});class s{constructor(t,e={}){this.pattern=t,this.separator=e.separator||".",this.segments=this._parse(t),this._hasDeepWildcard=this.segments.some(t=>"deep-wildcard"===t.type),this._hasAttributeCondition=this.segments.some(t=>void 0!==t.attrName),this._hasPositionSelector=this.segments.some(t=>void 0!==t.position)}_parse(t){const e=[];let s=0,i="";for(;s0&&(this.path[this.path.length-1].values=void 0);const i=this.path.length;this.siblingStacks[i]||(this.siblingStacks[i]=new Map);const n=this.siblingStacks[i],r=s?`${s}:${t}`:t,a=n.get(r)||0;let h=0;for(const t of n.values())h+=t;n.set(r,a+1);const o={tag:t,position:h,counter:a};null!=s&&(o.namespace=s),null!=e&&(o.values=e),this.path.push(o)}pop(){if(0===this.path.length)return;const t=this.path.pop();return this.siblingStacks.length>this.path.length+1&&(this.siblingStacks.length=this.path.length+1),t}updateCurrent(t){if(this.path.length>0){const e=this.path[this.path.length-1];null!=t&&(e.values=t)}}getCurrentTag(){return this.path.length>0?this.path[this.path.length-1].tag:void 0}getCurrentNamespace(){return this.path.length>0?this.path[this.path.length-1].namespace:void 0}getAttrValue(t){if(0===this.path.length)return;const e=this.path[this.path.length-1];return e.values?.[t]}hasAttr(t){if(0===this.path.length)return!1;const e=this.path[this.path.length-1];return void 0!==e.values&&t in e.values}getPosition(){return 0===this.path.length?-1:this.path[this.path.length-1].position??0}getCounter(){return 0===this.path.length?-1:this.path[this.path.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this.path.length}toString(t,e=!0){const s=t||this.separator;return this.path.map(t=>e&&t.namespace?`${t.namespace}:${t.tag}`:t.tag).join(s)}toArray(){return this.path.map(t=>t.tag)}reset(){this.path=[],this.siblingStacks=[]}matches(t){const e=t.segments;return 0!==e.length&&(t.hasDeepWildcard()?this._matchWithDeepWildcard(e):this._matchSimple(e))}_matchSimple(t){if(this.path.length!==t.length)return!1;for(let e=0;e=0&&e>=0;){const i=t[s];if("deep-wildcard"===i.type){if(s--,s<0)return!0;const i=t[s];let n=!1;for(let t=e;t>=0;t--){const r=t===this.path.length-1;if(this._matchSegment(i,this.path[t],r)){e=t-1,s--,n=!0;break}}if(!n)return!1}else{const t=e===this.path.length-1;if(!this._matchSegment(i,this.path[e],t))return!1;e--,s--}}return s<0}_matchSegment(t,e,s){if("*"!==t.tag&&t.tag!==e.tag)return!1;if(void 0!==t.namespace&&"*"!==t.namespace&&t.namespace!==e.namespace)return!1;if(void 0!==t.attrName){if(!s)return!1;if(!e.values||!(t.attrName in e.values))return!1;if(void 0!==t.attrValue){const s=e.values[t.attrName];if(String(s)!==String(t.attrValue))return!1}}if(void 0!==t.position){if(!s)return!1;const i=e.counter??0;if("first"===t.position&&0!==i)return!1;if("odd"===t.position&&i%2!=1)return!1;if("even"===t.position&&i%2!=0)return!1;if("nth"===t.position&&i!==t.positionValue)return!1}return!0}snapshot(){return{path:this.path.map(t=>({...t})),siblingStacks:this.siblingStacks.map(t=>new Map(t))}}restore(t){this.path=t.path.map(t=>({...t})),this.siblingStacks=t.siblingStacks.map(t=>new Map(t))}}const n={Expression:s,Matcher:i};return e})()); +//# sourceMappingURL=pem.min.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/path-expression-matcher/lib/pem.min.js.map b/food-ordering-app/server/node_modules/path-expression-matcher/lib/pem.min.js.map new file mode 100644 index 000000000..52cffd535 --- /dev/null +++ b/food-ordering-app/server/node_modules/path-expression-matcher/lib/pem.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"./lib/pem.min.js","mappings":"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","sources":["webpack://pem/webpack/universalModuleDefinition","webpack://pem/webpack/bootstrap","webpack://pem/webpack/runtime/define property getters","webpack://pem/webpack/runtime/hasOwnProperty shorthand","webpack://pem/webpack/runtime/make namespace object","webpack://pem/./src/Expression.js","webpack://pem/./src/Matcher.js","webpack://pem/./src/index.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pem\"] = factory();\n\telse\n\t\troot[\"pem\"] = factory();\n})(this, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * Expression - Parses and stores a tag pattern expression\n * \n * Patterns are parsed once and stored in an optimized structure for fast matching.\n * \n * @example\n * const expr = new Expression(\"root.users.user\");\n * const expr2 = new Expression(\"..user[id]:first\");\n * const expr3 = new Expression(\"root/users/user\", { separator: '/' });\n */\nexport default class Expression {\n /**\n * Create a new Expression\n * @param {string} pattern - Pattern string (e.g., \"root.users.user\", \"..user[id]\")\n * @param {Object} options - Configuration options\n * @param {string} options.separator - Path separator (default: '.')\n */\n constructor(pattern, options = {}) {\n this.pattern = pattern;\n this.separator = options.separator || '.';\n this.segments = this._parse(pattern);\n\n // Cache expensive checks for performance (O(1) instead of O(n))\n this._hasDeepWildcard = this.segments.some(seg => seg.type === 'deep-wildcard');\n this._hasAttributeCondition = this.segments.some(seg => seg.attrName !== undefined);\n this._hasPositionSelector = this.segments.some(seg => seg.position !== undefined);\n }\n\n /**\n * Parse pattern string into segments\n * @private\n * @param {string} pattern - Pattern to parse\n * @returns {Array} Array of segment objects\n */\n _parse(pattern) {\n const segments = [];\n\n // Split by separator but handle \"..\" specially\n let i = 0;\n let currentPart = '';\n\n while (i < pattern.length) {\n if (pattern[i] === this.separator) {\n // Check if next char is also separator (deep wildcard)\n if (i + 1 < pattern.length && pattern[i + 1] === this.separator) {\n // Flush current part if any\n if (currentPart.trim()) {\n segments.push(this._parseSegment(currentPart.trim()));\n currentPart = '';\n }\n // Add deep wildcard\n segments.push({ type: 'deep-wildcard' });\n i += 2; // Skip both separators\n } else {\n // Regular separator\n if (currentPart.trim()) {\n segments.push(this._parseSegment(currentPart.trim()));\n }\n currentPart = '';\n i++;\n }\n } else {\n currentPart += pattern[i];\n i++;\n }\n }\n\n // Flush remaining part\n if (currentPart.trim()) {\n segments.push(this._parseSegment(currentPart.trim()));\n }\n\n return segments;\n }\n\n /**\n * Parse a single segment\n * @private\n * @param {string} part - Segment string (e.g., \"user\", \"ns::user\", \"user[id]\", \"ns::user:first\")\n * @returns {Object} Segment object\n */\n _parseSegment(part) {\n const segment = { type: 'tag' };\n\n // NEW NAMESPACE SYNTAX (v2.0):\n // ============================\n // Namespace uses DOUBLE colon (::)\n // Position uses SINGLE colon (:)\n // \n // Examples:\n // \"user\" → tag\n // \"user:first\" → tag + position\n // \"user[id]\" → tag + attribute\n // \"user[id]:first\" → tag + attribute + position\n // \"ns::user\" → namespace + tag\n // \"ns::user:first\" → namespace + tag + position\n // \"ns::user[id]\" → namespace + tag + attribute\n // \"ns::user[id]:first\" → namespace + tag + attribute + position\n // \"ns::first\" → namespace + tag named \"first\" (NO ambiguity!)\n //\n // This eliminates all ambiguity:\n // :: = namespace separator\n // : = position selector\n // [] = attributes\n\n // Step 1: Extract brackets [attr] or [attr=value]\n let bracketContent = null;\n let withoutBrackets = part;\n\n const bracketMatch = part.match(/^([^\\[]+)(\\[[^\\]]*\\])(.*)$/);\n if (bracketMatch) {\n withoutBrackets = bracketMatch[1] + bracketMatch[3];\n if (bracketMatch[2]) {\n const content = bracketMatch[2].slice(1, -1);\n if (content) {\n bracketContent = content;\n }\n }\n }\n\n // Step 2: Check for namespace (double colon ::)\n let namespace = undefined;\n let tagAndPosition = withoutBrackets;\n\n if (withoutBrackets.includes('::')) {\n const nsIndex = withoutBrackets.indexOf('::');\n namespace = withoutBrackets.substring(0, nsIndex).trim();\n tagAndPosition = withoutBrackets.substring(nsIndex + 2).trim(); // Skip ::\n\n if (!namespace) {\n throw new Error(`Invalid namespace in pattern: ${part}`);\n }\n }\n\n // Step 3: Parse tag and position (single colon :)\n let tag = undefined;\n let positionMatch = null;\n\n if (tagAndPosition.includes(':')) {\n const colonIndex = tagAndPosition.lastIndexOf(':'); // Use last colon for position\n const tagPart = tagAndPosition.substring(0, colonIndex).trim();\n const posPart = tagAndPosition.substring(colonIndex + 1).trim();\n\n // Verify position is a valid keyword\n const isPositionKeyword = ['first', 'last', 'odd', 'even'].includes(posPart) ||\n /^nth\\(\\d+\\)$/.test(posPart);\n\n if (isPositionKeyword) {\n tag = tagPart;\n positionMatch = posPart;\n } else {\n // Not a valid position keyword, treat whole thing as tag\n tag = tagAndPosition;\n }\n } else {\n tag = tagAndPosition;\n }\n\n if (!tag) {\n throw new Error(`Invalid segment pattern: ${part}`);\n }\n\n segment.tag = tag;\n if (namespace) {\n segment.namespace = namespace;\n }\n\n // Step 4: Parse attributes\n if (bracketContent) {\n if (bracketContent.includes('=')) {\n const eqIndex = bracketContent.indexOf('=');\n segment.attrName = bracketContent.substring(0, eqIndex).trim();\n segment.attrValue = bracketContent.substring(eqIndex + 1).trim();\n } else {\n segment.attrName = bracketContent.trim();\n }\n }\n\n // Step 5: Parse position selector\n if (positionMatch) {\n const nthMatch = positionMatch.match(/^nth\\((\\d+)\\)$/);\n if (nthMatch) {\n segment.position = 'nth';\n segment.positionValue = parseInt(nthMatch[1], 10);\n } else {\n segment.position = positionMatch;\n }\n }\n\n return segment;\n }\n\n /**\n * Get the number of segments\n * @returns {number}\n */\n get length() {\n return this.segments.length;\n }\n\n /**\n * Check if expression contains deep wildcard\n * @returns {boolean}\n */\n hasDeepWildcard() {\n return this._hasDeepWildcard;\n }\n\n /**\n * Check if expression has attribute conditions\n * @returns {boolean}\n */\n hasAttributeCondition() {\n return this._hasAttributeCondition;\n }\n\n /**\n * Check if expression has position selectors\n * @returns {boolean}\n */\n hasPositionSelector() {\n return this._hasPositionSelector;\n }\n\n /**\n * Get string representation\n * @returns {string}\n */\n toString() {\n return this.pattern;\n }\n}","/**\n * Matcher - Tracks current path in XML/JSON tree and matches against Expressions\n * \n * The matcher maintains a stack of nodes representing the current path from root to\n * current tag. It only stores attribute values for the current (top) node to minimize\n * memory usage. Sibling tracking is used to auto-calculate position and counter.\n * \n * @example\n * const matcher = new Matcher();\n * matcher.push(\"root\", {});\n * matcher.push(\"users\", {});\n * matcher.push(\"user\", { id: \"123\", type: \"admin\" });\n * \n * const expr = new Expression(\"root.users.user\");\n * matcher.matches(expr); // true\n */\nexport default class Matcher {\n /**\n * Create a new Matcher\n * @param {Object} options - Configuration options\n * @param {string} options.separator - Default path separator (default: '.')\n */\n constructor(options = {}) {\n this.separator = options.separator || '.';\n this.path = [];\n this.siblingStacks = [];\n // Each path node: { tag: string, values: object, position: number, counter: number }\n // values only present for current (last) node\n // Each siblingStacks entry: Map tracking occurrences at each level\n }\n\n /**\n * Push a new tag onto the path\n * @param {string} tagName - Name of the tag\n * @param {Object} attrValues - Attribute key-value pairs for current node (optional)\n * @param {string} namespace - Namespace for the tag (optional)\n */\n push(tagName, attrValues = null, namespace = null) {\n // Remove values from previous current node (now becoming ancestor)\n if (this.path.length > 0) {\n const prev = this.path[this.path.length - 1];\n prev.values = undefined;\n }\n\n // Get or create sibling tracking for current level\n const currentLevel = this.path.length;\n if (!this.siblingStacks[currentLevel]) {\n this.siblingStacks[currentLevel] = new Map();\n }\n\n const siblings = this.siblingStacks[currentLevel];\n\n // Create a unique key for sibling tracking that includes namespace\n const siblingKey = namespace ? `${namespace}:${tagName}` : tagName;\n\n // Calculate counter (how many times this tag appeared at this level)\n const counter = siblings.get(siblingKey) || 0;\n\n // Calculate position (total children at this level so far)\n let position = 0;\n for (const count of siblings.values()) {\n position += count;\n }\n\n // Update sibling count for this tag\n siblings.set(siblingKey, counter + 1);\n\n // Create new node\n const node = {\n tag: tagName,\n position: position,\n counter: counter\n };\n\n // Store namespace if provided\n if (namespace !== null && namespace !== undefined) {\n node.namespace = namespace;\n }\n\n // Store values only for current node\n if (attrValues !== null && attrValues !== undefined) {\n node.values = attrValues;\n }\n\n this.path.push(node);\n }\n\n /**\n * Pop the last tag from the path\n * @returns {Object|undefined} The popped node\n */\n pop() {\n if (this.path.length === 0) {\n return undefined;\n }\n\n const node = this.path.pop();\n\n // Clean up sibling tracking for levels deeper than current\n // After pop, path.length is the new depth\n // We need to clean up siblingStacks[path.length + 1] and beyond\n if (this.siblingStacks.length > this.path.length + 1) {\n this.siblingStacks.length = this.path.length + 1;\n }\n\n return node;\n }\n\n /**\n * Update current node's attribute values\n * Useful when attributes are parsed after push\n * @param {Object} attrValues - Attribute values\n */\n updateCurrent(attrValues) {\n if (this.path.length > 0) {\n const current = this.path[this.path.length - 1];\n if (attrValues !== null && attrValues !== undefined) {\n current.values = attrValues;\n }\n }\n }\n\n /**\n * Get current tag name\n * @returns {string|undefined}\n */\n getCurrentTag() {\n return this.path.length > 0 ? this.path[this.path.length - 1].tag : undefined;\n }\n\n /**\n * Get current namespace\n * @returns {string|undefined}\n */\n getCurrentNamespace() {\n return this.path.length > 0 ? this.path[this.path.length - 1].namespace : undefined;\n }\n\n /**\n * Get current node's attribute value\n * @param {string} attrName - Attribute name\n * @returns {*} Attribute value or undefined\n */\n getAttrValue(attrName) {\n if (this.path.length === 0) return undefined;\n const current = this.path[this.path.length - 1];\n return current.values?.[attrName];\n }\n\n /**\n * Check if current node has an attribute\n * @param {string} attrName - Attribute name\n * @returns {boolean}\n */\n hasAttr(attrName) {\n if (this.path.length === 0) return false;\n const current = this.path[this.path.length - 1];\n return current.values !== undefined && attrName in current.values;\n }\n\n /**\n * Get current node's sibling position (child index in parent)\n * @returns {number}\n */\n getPosition() {\n if (this.path.length === 0) return -1;\n return this.path[this.path.length - 1].position ?? 0;\n }\n\n /**\n * Get current node's repeat counter (occurrence count of this tag name)\n * @returns {number}\n */\n getCounter() {\n if (this.path.length === 0) return -1;\n return this.path[this.path.length - 1].counter ?? 0;\n }\n\n /**\n * Get current node's sibling index (alias for getPosition for backward compatibility)\n * @returns {number}\n * @deprecated Use getPosition() or getCounter() instead\n */\n getIndex() {\n return this.getPosition();\n }\n\n /**\n * Get current path depth\n * @returns {number}\n */\n getDepth() {\n return this.path.length;\n }\n\n /**\n * Get path as string\n * @param {string} separator - Optional separator (uses default if not provided)\n * @param {boolean} includeNamespace - Whether to include namespace in output (default: true)\n * @returns {string}\n */\n toString(separator, includeNamespace = true) {\n const sep = separator || this.separator;\n return this.path.map(n => {\n if (includeNamespace && n.namespace) {\n return `${n.namespace}:${n.tag}`;\n }\n return n.tag;\n }).join(sep);\n }\n\n /**\n * Get path as array of tag names\n * @returns {string[]}\n */\n toArray() {\n return this.path.map(n => n.tag);\n }\n\n /**\n * Reset the path to empty\n */\n reset() {\n this.path = [];\n this.siblingStacks = [];\n }\n\n /**\n * Match current path against an Expression\n * @param {Expression} expression - The expression to match against\n * @returns {boolean} True if current path matches the expression\n */\n matches(expression) {\n const segments = expression.segments;\n\n if (segments.length === 0) {\n return false;\n }\n\n // Handle deep wildcard patterns\n if (expression.hasDeepWildcard()) {\n return this._matchWithDeepWildcard(segments);\n }\n\n // Simple path matching (no deep wildcards)\n return this._matchSimple(segments);\n }\n\n /**\n * Match simple path (no deep wildcards)\n * @private\n */\n _matchSimple(segments) {\n // Path must be same length as segments\n if (this.path.length !== segments.length) {\n return false;\n }\n\n // Match each segment bottom-to-top\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const node = this.path[i];\n const isCurrentNode = (i === this.path.length - 1);\n\n if (!this._matchSegment(segment, node, isCurrentNode)) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Match path with deep wildcards\n * @private\n */\n _matchWithDeepWildcard(segments) {\n let pathIdx = this.path.length - 1; // Start from current node (bottom)\n let segIdx = segments.length - 1; // Start from last segment\n\n while (segIdx >= 0 && pathIdx >= 0) {\n const segment = segments[segIdx];\n\n if (segment.type === 'deep-wildcard') {\n // \"..\" matches zero or more levels\n segIdx--;\n\n if (segIdx < 0) {\n // Pattern ends with \"..\", always matches\n return true;\n }\n\n // Find where next segment matches in the path\n const nextSeg = segments[segIdx];\n let found = false;\n\n for (let i = pathIdx; i >= 0; i--) {\n const isCurrentNode = (i === this.path.length - 1);\n if (this._matchSegment(nextSeg, this.path[i], isCurrentNode)) {\n pathIdx = i - 1;\n segIdx--;\n found = true;\n break;\n }\n }\n\n if (!found) {\n return false;\n }\n } else {\n // Regular segment\n const isCurrentNode = (pathIdx === this.path.length - 1);\n if (!this._matchSegment(segment, this.path[pathIdx], isCurrentNode)) {\n return false;\n }\n pathIdx--;\n segIdx--;\n }\n }\n\n // All segments must be consumed\n return segIdx < 0;\n }\n\n /**\n * Match a single segment against a node\n * @private\n * @param {Object} segment - Segment from Expression\n * @param {Object} node - Node from path\n * @param {boolean} isCurrentNode - Whether this is the current (last) node\n * @returns {boolean}\n */\n _matchSegment(segment, node, isCurrentNode) {\n // Match tag name (* is wildcard)\n if (segment.tag !== '*' && segment.tag !== node.tag) {\n return false;\n }\n\n // Match namespace if specified in segment\n if (segment.namespace !== undefined) {\n // Segment has namespace - node must match it\n if (segment.namespace !== '*' && segment.namespace !== node.namespace) {\n return false;\n }\n }\n // If segment has no namespace, it matches nodes with or without namespace\n\n // Match attribute name (check if node has this attribute)\n // Can only check for current node since ancestors don't have values\n if (segment.attrName !== undefined) {\n if (!isCurrentNode) {\n // Can't check attributes for ancestor nodes (values not stored)\n return false;\n }\n\n if (!node.values || !(segment.attrName in node.values)) {\n return false;\n }\n\n // Match attribute value (only possible for current node)\n if (segment.attrValue !== undefined) {\n const actualValue = node.values[segment.attrName];\n // Both should be strings\n if (String(actualValue) !== String(segment.attrValue)) {\n return false;\n }\n }\n }\n\n // Match position (only for current node)\n if (segment.position !== undefined) {\n if (!isCurrentNode) {\n // Can't check position for ancestor nodes\n return false;\n }\n\n const counter = node.counter ?? 0;\n\n if (segment.position === 'first' && counter !== 0) {\n return false;\n } else if (segment.position === 'odd' && counter % 2 !== 1) {\n return false;\n } else if (segment.position === 'even' && counter % 2 !== 0) {\n return false;\n } else if (segment.position === 'nth') {\n if (counter !== segment.positionValue) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Create a snapshot of current state\n * @returns {Object} State snapshot\n */\n snapshot() {\n return {\n path: this.path.map(node => ({ ...node })),\n siblingStacks: this.siblingStacks.map(map => new Map(map))\n };\n }\n\n /**\n * Restore state from snapshot\n * @param {Object} snapshot - State snapshot\n */\n restore(snapshot) {\n this.path = snapshot.path.map(node => ({ ...node }));\n this.siblingStacks = snapshot.siblingStacks.map(map => new Map(map));\n }\n}","/**\n * fast-xml-tagger - XML/JSON path matching library\n * \n * Provides efficient path tracking and pattern matching for XML/JSON parsers.\n * \n * @example\n * import { Expression, Matcher } from 'fast-xml-tagger';\n * \n * // Create expression (parse once)\n * const expr = new Expression(\"root.users.user[id]\");\n * \n * // Create matcher (track path)\n * const matcher = new Matcher();\n * matcher.push(\"root\", [], {}, 0);\n * matcher.push(\"users\", [], {}, 0);\n * matcher.push(\"user\", [\"id\", \"type\"], { id: \"123\", type: \"admin\" }, 0);\n * \n * // Match\n * if (matcher.matches(expr)) {\n * console.log(\"Match found!\");\n * }\n */\n\nimport Expression from './Expression.js';\nimport Matcher from './Matcher.js';\n\nexport { Expression, Matcher };\nexport default { Expression, Matcher };\n"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","Expression","constructor","pattern","options","separator","segments","_parse","_hasDeepWildcard","some","seg","type","_hasAttributeCondition","undefined","attrName","_hasPositionSelector","position","i","currentPart","length","trim","push","_parseSegment","part","segment","bracketContent","withoutBrackets","bracketMatch","match","content","slice","namespace","tag","tagAndPosition","includes","nsIndex","indexOf","substring","Error","positionMatch","colonIndex","lastIndexOf","tagPart","posPart","test","eqIndex","attrValue","nthMatch","positionValue","parseInt","hasDeepWildcard","hasAttributeCondition","hasPositionSelector","toString","Matcher","path","siblingStacks","tagName","attrValues","values","currentLevel","Map","siblings","siblingKey","counter","count","set","node","pop","updateCurrent","current","getCurrentTag","getCurrentNamespace","getAttrValue","hasAttr","getPosition","getCounter","getIndex","getDepth","includeNamespace","sep","map","n","join","toArray","reset","matches","expression","_matchWithDeepWildcard","_matchSimple","isCurrentNode","_matchSegment","pathIdx","segIdx","nextSeg","found","actualValue","String","snapshot","restore"],"sourceRoot":""} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/path-expression-matcher/package.json b/food-ordering-app/server/node_modules/path-expression-matcher/package.json new file mode 100644 index 000000000..f6c838945 --- /dev/null +++ b/food-ordering-app/server/node_modules/path-expression-matcher/package.json @@ -0,0 +1,78 @@ +{ + "name": "path-expression-matcher", + "version": "1.1.3", + "description": "Efficient path tracking and pattern matching for XML/JSON parsers", + "main": "./lib/pem.cjs", + "type": "module", + "sideEffects": false, + "module": "./src/index.js", + "types": "./src/index.d.ts", + "exports": { + ".": { + "import": { + "types": "./src/index.d.ts", + "default": "./src/index.js" + }, + "require": { + "types": "./lib/pem.d.cts", + "default": "./lib/pem.cjs" + } + } + }, + "scripts": { + "test": "c8 --reporter=lcov --reporter=text node test/namespace_test.js && c8 --reporter=lcov --reporter=text node test/test.js", + "bundle": "webpack --config webpack.cjs.config.js" + }, + "keywords": [ + "xml", + "json", + "yaml", + "path", + "matcher", + "pattern", + "xpath", + "selector", + "parser", + "fast-xml-parser", + "fast-xml-builder" + ], + "author": "Amit Gupta (https://solothought.com)", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/NaturalIntelligence/path-expression-matcher" + }, + "bugs": { + "url": "https://github.com/NaturalIntelligence/path-expression-matcher/issues" + }, + "homepage": "https://github.com/NaturalIntelligence/path-expression-matcher#readme", + "engines": { + "node": ">=14.0.0" + }, + "files": [ + "lib", + "src/", + "README.md", + "LICENSE" + ], + "devDependencies": { + "@babel/core": "^7.13.10", + "@babel/plugin-transform-runtime": "^7.13.10", + "@babel/preset-env": "^7.13.10", + "@babel/register": "^7.13.8", + "@types/node": "20", + "babel-loader": "^8.2.2", + "c8": "^10.1.3", + "eslint": "^8.3.0", + "prettier": "^3.5.1", + "typescript": "5", + "webpack": "^5.64.4", + "webpack-cli": "^4.9.1" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ] +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/path-expression-matcher/src/Expression.js b/food-ordering-app/server/node_modules/path-expression-matcher/src/Expression.js new file mode 100644 index 000000000..6cf24d54f --- /dev/null +++ b/food-ordering-app/server/node_modules/path-expression-matcher/src/Expression.js @@ -0,0 +1,232 @@ +/** + * Expression - Parses and stores a tag pattern expression + * + * Patterns are parsed once and stored in an optimized structure for fast matching. + * + * @example + * const expr = new Expression("root.users.user"); + * const expr2 = new Expression("..user[id]:first"); + * const expr3 = new Expression("root/users/user", { separator: '/' }); + */ +export default class Expression { + /** + * Create a new Expression + * @param {string} pattern - Pattern string (e.g., "root.users.user", "..user[id]") + * @param {Object} options - Configuration options + * @param {string} options.separator - Path separator (default: '.') + */ + constructor(pattern, options = {}) { + this.pattern = pattern; + this.separator = options.separator || '.'; + this.segments = this._parse(pattern); + + // Cache expensive checks for performance (O(1) instead of O(n)) + this._hasDeepWildcard = this.segments.some(seg => seg.type === 'deep-wildcard'); + this._hasAttributeCondition = this.segments.some(seg => seg.attrName !== undefined); + this._hasPositionSelector = this.segments.some(seg => seg.position !== undefined); + } + + /** + * Parse pattern string into segments + * @private + * @param {string} pattern - Pattern to parse + * @returns {Array} Array of segment objects + */ + _parse(pattern) { + const segments = []; + + // Split by separator but handle ".." specially + let i = 0; + let currentPart = ''; + + while (i < pattern.length) { + if (pattern[i] === this.separator) { + // Check if next char is also separator (deep wildcard) + if (i + 1 < pattern.length && pattern[i + 1] === this.separator) { + // Flush current part if any + if (currentPart.trim()) { + segments.push(this._parseSegment(currentPart.trim())); + currentPart = ''; + } + // Add deep wildcard + segments.push({ type: 'deep-wildcard' }); + i += 2; // Skip both separators + } else { + // Regular separator + if (currentPart.trim()) { + segments.push(this._parseSegment(currentPart.trim())); + } + currentPart = ''; + i++; + } + } else { + currentPart += pattern[i]; + i++; + } + } + + // Flush remaining part + if (currentPart.trim()) { + segments.push(this._parseSegment(currentPart.trim())); + } + + return segments; + } + + /** + * Parse a single segment + * @private + * @param {string} part - Segment string (e.g., "user", "ns::user", "user[id]", "ns::user:first") + * @returns {Object} Segment object + */ + _parseSegment(part) { + const segment = { type: 'tag' }; + + // NEW NAMESPACE SYNTAX (v2.0): + // ============================ + // Namespace uses DOUBLE colon (::) + // Position uses SINGLE colon (:) + // + // Examples: + // "user" → tag + // "user:first" → tag + position + // "user[id]" → tag + attribute + // "user[id]:first" → tag + attribute + position + // "ns::user" → namespace + tag + // "ns::user:first" → namespace + tag + position + // "ns::user[id]" → namespace + tag + attribute + // "ns::user[id]:first" → namespace + tag + attribute + position + // "ns::first" → namespace + tag named "first" (NO ambiguity!) + // + // This eliminates all ambiguity: + // :: = namespace separator + // : = position selector + // [] = attributes + + // Step 1: Extract brackets [attr] or [attr=value] + let bracketContent = null; + let withoutBrackets = part; + + const bracketMatch = part.match(/^([^\[]+)(\[[^\]]*\])(.*)$/); + if (bracketMatch) { + withoutBrackets = bracketMatch[1] + bracketMatch[3]; + if (bracketMatch[2]) { + const content = bracketMatch[2].slice(1, -1); + if (content) { + bracketContent = content; + } + } + } + + // Step 2: Check for namespace (double colon ::) + let namespace = undefined; + let tagAndPosition = withoutBrackets; + + if (withoutBrackets.includes('::')) { + const nsIndex = withoutBrackets.indexOf('::'); + namespace = withoutBrackets.substring(0, nsIndex).trim(); + tagAndPosition = withoutBrackets.substring(nsIndex + 2).trim(); // Skip :: + + if (!namespace) { + throw new Error(`Invalid namespace in pattern: ${part}`); + } + } + + // Step 3: Parse tag and position (single colon :) + let tag = undefined; + let positionMatch = null; + + if (tagAndPosition.includes(':')) { + const colonIndex = tagAndPosition.lastIndexOf(':'); // Use last colon for position + const tagPart = tagAndPosition.substring(0, colonIndex).trim(); + const posPart = tagAndPosition.substring(colonIndex + 1).trim(); + + // Verify position is a valid keyword + const isPositionKeyword = ['first', 'last', 'odd', 'even'].includes(posPart) || + /^nth\(\d+\)$/.test(posPart); + + if (isPositionKeyword) { + tag = tagPart; + positionMatch = posPart; + } else { + // Not a valid position keyword, treat whole thing as tag + tag = tagAndPosition; + } + } else { + tag = tagAndPosition; + } + + if (!tag) { + throw new Error(`Invalid segment pattern: ${part}`); + } + + segment.tag = tag; + if (namespace) { + segment.namespace = namespace; + } + + // Step 4: Parse attributes + if (bracketContent) { + if (bracketContent.includes('=')) { + const eqIndex = bracketContent.indexOf('='); + segment.attrName = bracketContent.substring(0, eqIndex).trim(); + segment.attrValue = bracketContent.substring(eqIndex + 1).trim(); + } else { + segment.attrName = bracketContent.trim(); + } + } + + // Step 5: Parse position selector + if (positionMatch) { + const nthMatch = positionMatch.match(/^nth\((\d+)\)$/); + if (nthMatch) { + segment.position = 'nth'; + segment.positionValue = parseInt(nthMatch[1], 10); + } else { + segment.position = positionMatch; + } + } + + return segment; + } + + /** + * Get the number of segments + * @returns {number} + */ + get length() { + return this.segments.length; + } + + /** + * Check if expression contains deep wildcard + * @returns {boolean} + */ + hasDeepWildcard() { + return this._hasDeepWildcard; + } + + /** + * Check if expression has attribute conditions + * @returns {boolean} + */ + hasAttributeCondition() { + return this._hasAttributeCondition; + } + + /** + * Check if expression has position selectors + * @returns {boolean} + */ + hasPositionSelector() { + return this._hasPositionSelector; + } + + /** + * Get string representation + * @returns {string} + */ + toString() { + return this.pattern; + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/path-expression-matcher/src/Matcher.js b/food-ordering-app/server/node_modules/path-expression-matcher/src/Matcher.js new file mode 100644 index 000000000..d3df66f8e --- /dev/null +++ b/food-ordering-app/server/node_modules/path-expression-matcher/src/Matcher.js @@ -0,0 +1,414 @@ +/** + * Matcher - Tracks current path in XML/JSON tree and matches against Expressions + * + * The matcher maintains a stack of nodes representing the current path from root to + * current tag. It only stores attribute values for the current (top) node to minimize + * memory usage. Sibling tracking is used to auto-calculate position and counter. + * + * @example + * const matcher = new Matcher(); + * matcher.push("root", {}); + * matcher.push("users", {}); + * matcher.push("user", { id: "123", type: "admin" }); + * + * const expr = new Expression("root.users.user"); + * matcher.matches(expr); // true + */ +export default class Matcher { + /** + * Create a new Matcher + * @param {Object} options - Configuration options + * @param {string} options.separator - Default path separator (default: '.') + */ + constructor(options = {}) { + this.separator = options.separator || '.'; + this.path = []; + this.siblingStacks = []; + // Each path node: { tag: string, values: object, position: number, counter: number } + // values only present for current (last) node + // Each siblingStacks entry: Map tracking occurrences at each level + } + + /** + * Push a new tag onto the path + * @param {string} tagName - Name of the tag + * @param {Object} attrValues - Attribute key-value pairs for current node (optional) + * @param {string} namespace - Namespace for the tag (optional) + */ + push(tagName, attrValues = null, namespace = null) { + // Remove values from previous current node (now becoming ancestor) + if (this.path.length > 0) { + const prev = this.path[this.path.length - 1]; + prev.values = undefined; + } + + // Get or create sibling tracking for current level + const currentLevel = this.path.length; + if (!this.siblingStacks[currentLevel]) { + this.siblingStacks[currentLevel] = new Map(); + } + + const siblings = this.siblingStacks[currentLevel]; + + // Create a unique key for sibling tracking that includes namespace + const siblingKey = namespace ? `${namespace}:${tagName}` : tagName; + + // Calculate counter (how many times this tag appeared at this level) + const counter = siblings.get(siblingKey) || 0; + + // Calculate position (total children at this level so far) + let position = 0; + for (const count of siblings.values()) { + position += count; + } + + // Update sibling count for this tag + siblings.set(siblingKey, counter + 1); + + // Create new node + const node = { + tag: tagName, + position: position, + counter: counter + }; + + // Store namespace if provided + if (namespace !== null && namespace !== undefined) { + node.namespace = namespace; + } + + // Store values only for current node + if (attrValues !== null && attrValues !== undefined) { + node.values = attrValues; + } + + this.path.push(node); + } + + /** + * Pop the last tag from the path + * @returns {Object|undefined} The popped node + */ + pop() { + if (this.path.length === 0) { + return undefined; + } + + const node = this.path.pop(); + + // Clean up sibling tracking for levels deeper than current + // After pop, path.length is the new depth + // We need to clean up siblingStacks[path.length + 1] and beyond + if (this.siblingStacks.length > this.path.length + 1) { + this.siblingStacks.length = this.path.length + 1; + } + + return node; + } + + /** + * Update current node's attribute values + * Useful when attributes are parsed after push + * @param {Object} attrValues - Attribute values + */ + updateCurrent(attrValues) { + if (this.path.length > 0) { + const current = this.path[this.path.length - 1]; + if (attrValues !== null && attrValues !== undefined) { + current.values = attrValues; + } + } + } + + /** + * Get current tag name + * @returns {string|undefined} + */ + getCurrentTag() { + return this.path.length > 0 ? this.path[this.path.length - 1].tag : undefined; + } + + /** + * Get current namespace + * @returns {string|undefined} + */ + getCurrentNamespace() { + return this.path.length > 0 ? this.path[this.path.length - 1].namespace : undefined; + } + + /** + * Get current node's attribute value + * @param {string} attrName - Attribute name + * @returns {*} Attribute value or undefined + */ + getAttrValue(attrName) { + if (this.path.length === 0) return undefined; + const current = this.path[this.path.length - 1]; + return current.values?.[attrName]; + } + + /** + * Check if current node has an attribute + * @param {string} attrName - Attribute name + * @returns {boolean} + */ + hasAttr(attrName) { + if (this.path.length === 0) return false; + const current = this.path[this.path.length - 1]; + return current.values !== undefined && attrName in current.values; + } + + /** + * Get current node's sibling position (child index in parent) + * @returns {number} + */ + getPosition() { + if (this.path.length === 0) return -1; + return this.path[this.path.length - 1].position ?? 0; + } + + /** + * Get current node's repeat counter (occurrence count of this tag name) + * @returns {number} + */ + getCounter() { + if (this.path.length === 0) return -1; + return this.path[this.path.length - 1].counter ?? 0; + } + + /** + * Get current node's sibling index (alias for getPosition for backward compatibility) + * @returns {number} + * @deprecated Use getPosition() or getCounter() instead + */ + getIndex() { + return this.getPosition(); + } + + /** + * Get current path depth + * @returns {number} + */ + getDepth() { + return this.path.length; + } + + /** + * Get path as string + * @param {string} separator - Optional separator (uses default if not provided) + * @param {boolean} includeNamespace - Whether to include namespace in output (default: true) + * @returns {string} + */ + toString(separator, includeNamespace = true) { + const sep = separator || this.separator; + return this.path.map(n => { + if (includeNamespace && n.namespace) { + return `${n.namespace}:${n.tag}`; + } + return n.tag; + }).join(sep); + } + + /** + * Get path as array of tag names + * @returns {string[]} + */ + toArray() { + return this.path.map(n => n.tag); + } + + /** + * Reset the path to empty + */ + reset() { + this.path = []; + this.siblingStacks = []; + } + + /** + * Match current path against an Expression + * @param {Expression} expression - The expression to match against + * @returns {boolean} True if current path matches the expression + */ + matches(expression) { + const segments = expression.segments; + + if (segments.length === 0) { + return false; + } + + // Handle deep wildcard patterns + if (expression.hasDeepWildcard()) { + return this._matchWithDeepWildcard(segments); + } + + // Simple path matching (no deep wildcards) + return this._matchSimple(segments); + } + + /** + * Match simple path (no deep wildcards) + * @private + */ + _matchSimple(segments) { + // Path must be same length as segments + if (this.path.length !== segments.length) { + return false; + } + + // Match each segment bottom-to-top + for (let i = 0; i < segments.length; i++) { + const segment = segments[i]; + const node = this.path[i]; + const isCurrentNode = (i === this.path.length - 1); + + if (!this._matchSegment(segment, node, isCurrentNode)) { + return false; + } + } + + return true; + } + + /** + * Match path with deep wildcards + * @private + */ + _matchWithDeepWildcard(segments) { + let pathIdx = this.path.length - 1; // Start from current node (bottom) + let segIdx = segments.length - 1; // Start from last segment + + while (segIdx >= 0 && pathIdx >= 0) { + const segment = segments[segIdx]; + + if (segment.type === 'deep-wildcard') { + // ".." matches zero or more levels + segIdx--; + + if (segIdx < 0) { + // Pattern ends with "..", always matches + return true; + } + + // Find where next segment matches in the path + const nextSeg = segments[segIdx]; + let found = false; + + for (let i = pathIdx; i >= 0; i--) { + const isCurrentNode = (i === this.path.length - 1); + if (this._matchSegment(nextSeg, this.path[i], isCurrentNode)) { + pathIdx = i - 1; + segIdx--; + found = true; + break; + } + } + + if (!found) { + return false; + } + } else { + // Regular segment + const isCurrentNode = (pathIdx === this.path.length - 1); + if (!this._matchSegment(segment, this.path[pathIdx], isCurrentNode)) { + return false; + } + pathIdx--; + segIdx--; + } + } + + // All segments must be consumed + return segIdx < 0; + } + + /** + * Match a single segment against a node + * @private + * @param {Object} segment - Segment from Expression + * @param {Object} node - Node from path + * @param {boolean} isCurrentNode - Whether this is the current (last) node + * @returns {boolean} + */ + _matchSegment(segment, node, isCurrentNode) { + // Match tag name (* is wildcard) + if (segment.tag !== '*' && segment.tag !== node.tag) { + return false; + } + + // Match namespace if specified in segment + if (segment.namespace !== undefined) { + // Segment has namespace - node must match it + if (segment.namespace !== '*' && segment.namespace !== node.namespace) { + return false; + } + } + // If segment has no namespace, it matches nodes with or without namespace + + // Match attribute name (check if node has this attribute) + // Can only check for current node since ancestors don't have values + if (segment.attrName !== undefined) { + if (!isCurrentNode) { + // Can't check attributes for ancestor nodes (values not stored) + return false; + } + + if (!node.values || !(segment.attrName in node.values)) { + return false; + } + + // Match attribute value (only possible for current node) + if (segment.attrValue !== undefined) { + const actualValue = node.values[segment.attrName]; + // Both should be strings + if (String(actualValue) !== String(segment.attrValue)) { + return false; + } + } + } + + // Match position (only for current node) + if (segment.position !== undefined) { + if (!isCurrentNode) { + // Can't check position for ancestor nodes + return false; + } + + const counter = node.counter ?? 0; + + if (segment.position === 'first' && counter !== 0) { + return false; + } else if (segment.position === 'odd' && counter % 2 !== 1) { + return false; + } else if (segment.position === 'even' && counter % 2 !== 0) { + return false; + } else if (segment.position === 'nth') { + if (counter !== segment.positionValue) { + return false; + } + } + } + + return true; + } + + /** + * Create a snapshot of current state + * @returns {Object} State snapshot + */ + snapshot() { + return { + path: this.path.map(node => ({ ...node })), + siblingStacks: this.siblingStacks.map(map => new Map(map)) + }; + } + + /** + * Restore state from snapshot + * @param {Object} snapshot - State snapshot + */ + restore(snapshot) { + this.path = snapshot.path.map(node => ({ ...node })); + this.siblingStacks = snapshot.siblingStacks.map(map => new Map(map)); + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/path-expression-matcher/src/index.d.ts b/food-ordering-app/server/node_modules/path-expression-matcher/src/index.d.ts new file mode 100644 index 000000000..a30f056b6 --- /dev/null +++ b/food-ordering-app/server/node_modules/path-expression-matcher/src/index.d.ts @@ -0,0 +1,366 @@ +/** + * TypeScript definitions for path-expression-matcher + * + * Provides efficient path tracking and pattern matching for XML/JSON parsers. + */ + +/** + * Options for creating an Expression + */ +export interface ExpressionOptions { + /** + * Path separator character + * @default '.' + */ + separator?: string; +} + +/** + * Parsed segment from an expression pattern + */ +export interface Segment { + /** + * Type of segment + */ + type: 'tag' | 'deep-wildcard'; + + /** + * Tag name (e.g., "user", "*" for wildcard) + * Only present when type is 'tag' + */ + tag?: string; + + /** + * Namespace prefix (e.g., "ns" in "ns::user") + * Only present when namespace is specified + */ + namespace?: string; + + /** + * Attribute name to match (e.g., "id" in "user[id]") + * Only present when attribute condition exists + */ + attrName?: string; + + /** + * Attribute value to match (e.g., "123" in "user[id=123]") + * Only present when attribute value is specified + */ + attrValue?: string; + + /** + * Position selector type + * Only present when position selector exists + */ + position?: 'first' | 'last' | 'odd' | 'even' | 'nth'; + + /** + * Numeric value for nth() selector + * Only present when position is 'nth' + */ + positionValue?: number; +} + +/** + * Expression - Parses and stores a tag pattern expression + * + * Patterns are parsed once and stored in an optimized structure for fast matching. + * + * @example + * ```typescript + * const expr = new Expression("root.users.user"); + * const expr2 = new Expression("..user[id]:first"); + * const expr3 = new Expression("root/users/user", { separator: '/' }); + * ``` + * + * Pattern Syntax: + * - `root.users.user` - Match exact path + * - `..user` - Match "user" at any depth (deep wildcard) + * - `user[id]` - Match user tag with "id" attribute + * - `user[id=123]` - Match user tag where id="123" + * - `user:first` - Match first occurrence of user tag + * - `ns::user` - Match user tag with namespace "ns" + * - `ns::user[id]:first` - Combine namespace, attribute, and position + */ +export class Expression { + /** + * Original pattern string + */ + readonly pattern: string; + + /** + * Path separator character + */ + readonly separator: string; + + /** + * Parsed segments + */ + readonly segments: Segment[]; + + /** + * Create a new Expression + * @param pattern - Pattern string (e.g., "root.users.user", "..user[id]") + * @param options - Configuration options + */ + constructor(pattern: string, options?: ExpressionOptions); + + /** + * Get the number of segments + */ + get length(): number; + + /** + * Check if expression contains deep wildcard (..) + */ + hasDeepWildcard(): boolean; + + /** + * Check if expression has attribute conditions + */ + hasAttributeCondition(): boolean; + + /** + * Check if expression has position selectors + */ + hasPositionSelector(): boolean; + + /** + * Get string representation + */ + toString(): string; +} + +/** + * Options for creating a Matcher + */ +export interface MatcherOptions { + /** + * Default path separator + * @default '.' + */ + separator?: string; +} + +/** + * Internal node structure in the path stack + */ +export interface PathNode { + /** + * Tag name + */ + tag: string; + + /** + * Namespace (if present) + */ + namespace?: string; + + /** + * Position in sibling list (child index in parent) + */ + position: number; + + /** + * Counter (occurrence count of this tag name) + */ + counter: number; + + /** + * Attribute key-value pairs + * Only present for the current (last) node in path + */ + values?: Record; +} + +/** + * Snapshot of matcher state + */ +export interface MatcherSnapshot { + /** + * Copy of the path stack + */ + path: PathNode[]; + + /** + * Copy of sibling tracking maps + */ + siblingStacks: Map[]; +} + +/** + * Matcher - Tracks current path in XML/JSON tree and matches against Expressions + * + * The matcher maintains a stack of nodes representing the current path from root to + * current tag. It only stores attribute values for the current (top) node to minimize + * memory usage. + * + * @example + * ```typescript + * const matcher = new Matcher(); + * matcher.push("root", {}); + * matcher.push("users", {}); + * matcher.push("user", { id: "123", type: "admin" }); + * + * const expr = new Expression("root.users.user"); + * matcher.matches(expr); // true + * + * matcher.pop(); + * matcher.matches(expr); // false + * ``` + */ +export class Matcher { + /** + * Default path separator + */ + readonly separator: string; + + /** + * Current path stack + */ + readonly path: PathNode[]; + + /** + * Create a new Matcher + * @param options - Configuration options + */ + constructor(options?: MatcherOptions); + + /** + * Push a new tag onto the path + * @param tagName - Name of the tag + * @param attrValues - Attribute key-value pairs for current node (optional) + * @param namespace - Namespace for the tag (optional) + * + * @example + * ```typescript + * matcher.push("user", { id: "123", type: "admin" }); + * matcher.push("user", { id: "456" }, "ns"); + * matcher.push("container", null); + * ``` + */ + push(tagName: string, attrValues?: Record | null, namespace?: string | null): void; + + /** + * Pop the last tag from the path + * @returns The popped node or undefined if path is empty + */ + pop(): PathNode | undefined; + + /** + * Update current node's attribute values + * Useful when attributes are parsed after push + * @param attrValues - Attribute values + */ + updateCurrent(attrValues: Record): void; + + /** + * Get current tag name + * @returns Current tag name or undefined if path is empty + */ + getCurrentTag(): string | undefined; + + /** + * Get current namespace + * @returns Current namespace or undefined if not present or path is empty + */ + getCurrentNamespace(): string | undefined; + + /** + * Get current node's attribute value + * @param attrName - Attribute name + * @returns Attribute value or undefined + */ + getAttrValue(attrName: string): any; + + /** + * Check if current node has an attribute + * @param attrName - Attribute name + */ + hasAttr(attrName: string): boolean; + + /** + * Get current node's sibling position (child index in parent) + * @returns Position index or -1 if path is empty + */ + getPosition(): number; + + /** + * Get current node's repeat counter (occurrence count of this tag name) + * @returns Counter value or -1 if path is empty + */ + getCounter(): number; + + /** + * Get current node's sibling index (alias for getPosition for backward compatibility) + * @returns Index or -1 if path is empty + * @deprecated Use getPosition() or getCounter() instead + */ + getIndex(): number; + + /** + * Get current path depth + * @returns Number of nodes in the path + */ + getDepth(): number; + + /** + * Get path as string + * @param separator - Optional separator (uses default if not provided) + * @param includeNamespace - Whether to include namespace in output + * @returns Path string (e.g., "root.users.user" or "ns:root.ns:users.user") + */ + toString(separator?: string, includeNamespace?: boolean): string; + + /** + * Get path as array of tag names + * @returns Array of tag names + */ + toArray(): string[]; + + /** + * Reset the path to empty + */ + reset(): void; + + /** + * Match current path against an Expression + * @param expression - The expression to match against + * @returns True if current path matches the expression + * + * @example + * ```typescript + * const expr = new Expression("root.users.user[id]"); + * const matcher = new Matcher(); + * + * matcher.push("root"); + * matcher.push("users"); + * matcher.push("user", { id: "123" }); + * + * matcher.matches(expr); // true + * ``` + */ + matches(expression: Expression): boolean; + + /** + * Create a snapshot of current state + * @returns State snapshot that can be restored later + */ + snapshot(): MatcherSnapshot; + + /** + * Restore state from snapshot + * @param snapshot - State snapshot from previous snapshot() call + */ + restore(snapshot: MatcherSnapshot): void; +} + +/** + * Default export containing both Expression and Matcher + */ +declare const _default: { + Expression: typeof Expression; + Matcher: typeof Matcher; +}; + +export default _default; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/path-expression-matcher/src/index.js b/food-ordering-app/server/node_modules/path-expression-matcher/src/index.js new file mode 100644 index 000000000..630262d33 --- /dev/null +++ b/food-ordering-app/server/node_modules/path-expression-matcher/src/index.js @@ -0,0 +1,28 @@ +/** + * fast-xml-tagger - XML/JSON path matching library + * + * Provides efficient path tracking and pattern matching for XML/JSON parsers. + * + * @example + * import { Expression, Matcher } from 'fast-xml-tagger'; + * + * // Create expression (parse once) + * const expr = new Expression("root.users.user[id]"); + * + * // Create matcher (track path) + * const matcher = new Matcher(); + * matcher.push("root", [], {}, 0); + * matcher.push("users", [], {}, 0); + * matcher.push("user", ["id", "type"], { id: "123", type: "admin" }, 0); + * + * // Match + * if (matcher.matches(expr)) { + * console.log("Match found!"); + * } + */ + +import Expression from './Expression.js'; +import Matcher from './Matcher.js'; + +export { Expression, Matcher }; +export default { Expression, Matcher }; diff --git a/food-ordering-app/server/node_modules/path-to-regexp/History.md b/food-ordering-app/server/node_modules/path-to-regexp/History.md deleted file mode 100644 index 7f6587846..000000000 --- a/food-ordering-app/server/node_modules/path-to-regexp/History.md +++ /dev/null @@ -1,36 +0,0 @@ -0.1.7 / 2015-07-28 -================== - - * Fixed regression with escaped round brackets and matching groups. - -0.1.6 / 2015-06-19 -================== - - * Replace `index` feature by outputting all parameters, unnamed and named. - -0.1.5 / 2015-05-08 -================== - - * Add an index property for position in match result. - -0.1.4 / 2015-03-05 -================== - - * Add license information - -0.1.3 / 2014-07-06 -================== - - * Better array support - * Improved support for trailing slash in non-ending mode - -0.1.0 / 2014-03-06 -================== - - * add options.end - -0.0.2 / 2013-02-10 -================== - - * Update to match current express - * add .license property to component.json diff --git a/food-ordering-app/server/node_modules/path-to-regexp/index.js b/food-ordering-app/server/node_modules/path-to-regexp/index.js index 500d1dad0..95d2f4bba 100644 --- a/food-ordering-app/server/node_modules/path-to-regexp/index.js +++ b/food-ordering-app/server/node_modules/path-to-regexp/index.js @@ -1,13 +1,13 @@ /** - * Expose `pathtoRegexp`. + * Expose `pathToRegexp`. */ -module.exports = pathtoRegexp; +module.exports = pathToRegexp; /** * Match matching groups in a regular expression. */ -var MATCHING_GROUP_REGEXP = /\((?!\?)/g; +var MATCHING_GROUP_REGEXP = /\\.|\((?:\?<(.*?)>)?(?!\?)/g; /** * Normalize the given path string, @@ -25,22 +25,27 @@ var MATCHING_GROUP_REGEXP = /\((?!\?)/g; * @api private */ -function pathtoRegexp(path, keys, options) { +function pathToRegexp(path, keys, options) { options = options || {}; keys = keys || []; var strict = options.strict; var end = options.end !== false; var flags = options.sensitive ? '' : 'i'; + var lookahead = options.lookahead !== false; var extraOffset = 0; var keysOffset = keys.length; var i = 0; var name = 0; + var pos = 0; + var backtrack = ''; var m; if (path instanceof RegExp) { while (m = MATCHING_GROUP_REGEXP.exec(path.source)) { + if (m[0][0] === '\\') continue; + keys.push({ - name: name++, + name: m[1] || name++, optional: false, offset: m.index }); @@ -54,20 +59,57 @@ function pathtoRegexp(path, keys, options) { // the same keys and options instance into every generation to get // consistent matching groups before we join the sources together. path = path.map(function (value) { - return pathtoRegexp(value, keys, options).source; + return pathToRegexp(value, keys, options).source; }); - return new RegExp('(?:' + path.join('|') + ')', flags); + return new RegExp(path.join('|'), flags); + } + + if (typeof path !== 'string') { + throw new TypeError('path must be a string, array of strings, or regular expression'); } - path = ('^' + path + (strict ? '' : path[path.length - 1] === '/' ? '?' : '/?')) - .replace(/\/\(/g, '/(?:') - .replace(/([\/\.])/g, '\\$1') - .replace(/(\\\/)?(\\\.)?:(\w+)(\(.*?\))?(\*)?(\?)?/g, function (match, slash, format, key, capture, star, optional, offset) { + path = path.replace( + /\\.|(\/)?(\.)?:(\w+)(\(.*?\))?(\*)?(\?)?|[.*]|\/\(/g, + function (match, slash, format, key, capture, star, optional, offset) { + if (match[0] === '\\') { + backtrack += match; + pos += 2; + return match; + } + + if (match === '.') { + backtrack += '\\.'; + extraOffset += 1; + pos += 1; + return '\\.'; + } + + if (slash || format) { + backtrack = ''; + } else { + backtrack += path.slice(pos, offset); + } + + pos = offset + match.length; + + if (match === '*') { + extraOffset += 3; + return '(.*)'; + } + + if (match === '/(') { + backtrack += '/'; + extraOffset += 2; + return '/(?:'; + } + slash = slash || ''; - format = format || ''; - capture = capture || '([^\\/' + format + ']+?)'; + format = format ? '\\.' : ''; optional = optional || ''; + capture = capture ? + capture.replace(/\\.|\*/, function (m) { return m === '*' ? '(.*)' : m; }) : + (backtrack ? '((?:(?!/|' + backtrack + ').)+?)' : '([^/' + format + ']+?)'); keys.push({ name: key, @@ -75,41 +117,20 @@ function pathtoRegexp(path, keys, options) { offset: offset + extraOffset }); - var result = '' - + (optional ? '' : slash) - + '(?:' - + format + (optional ? slash : '') + capture - + (star ? '((?:[\\/' + format + '].+?)?)' : '') + var result = '(?:' + + format + slash + capture + + (star ? '((?:[/' + format + '].+?)?)' : '') + ')' + optional; extraOffset += result.length - match.length; return result; - }) - .replace(/\*/g, function (star, index) { - var len = keys.length - - while (len-- > keysOffset && keys[len].offset > index) { - keys[len].offset += 3; // Replacement length minus asterisk length. - } - - return '(.*)'; }); // This is a workaround for handling unnamed matching groups. while (m = MATCHING_GROUP_REGEXP.exec(path)) { - var escapeCount = 0; - var index = m.index; - - while (path.charAt(--index) === '\\') { - escapeCount++; - } - - // It's possible to escape the bracket. - if (escapeCount % 2 === 1) { - continue; - } + if (m[0][0] === '\\') continue; if (keysOffset + i === keys.length || keys[keysOffset + i].offset > m.index) { keys.splice(keysOffset + i, 0, { @@ -122,8 +143,14 @@ function pathtoRegexp(path, keys, options) { i++; } + path += strict ? '' : path[path.length - 1] === '/' ? '?' : '/?'; + // If the path is non-ending, match until the end or a slash. - path += (end ? '$' : (path[path.length - 1] === '/' ? '' : '(?=\\/|$)')); + if (end) { + path += '$'; + } else if (path[path.length - 1] !== '/') { + path += lookahead ? '(?=/|$)' : '(?:/|$)'; + } - return new RegExp(path, flags); + return new RegExp('^' + path, flags); }; diff --git a/food-ordering-app/server/node_modules/path-to-regexp/package.json b/food-ordering-app/server/node_modules/path-to-regexp/package.json index d4e51b574..23b4b6a3b 100644 --- a/food-ordering-app/server/node_modules/path-to-regexp/package.json +++ b/food-ordering-app/server/node_modules/path-to-regexp/package.json @@ -1,7 +1,7 @@ { "name": "path-to-regexp", "description": "Express style path to RegExp utility", - "version": "0.1.7", + "version": "0.1.12", "files": [ "index.js", "LICENSE" @@ -21,7 +21,7 @@ "license": "MIT", "repository": { "type": "git", - "url": "https://github.com/component/path-to-regexp.git" + "url": "https://github.com/pillarjs/path-to-regexp.git" }, "devDependencies": { "mocha": "^1.17.1", diff --git a/food-ordering-app/server/node_modules/punycode/README.md b/food-ordering-app/server/node_modules/punycode/README.md index ee2f9d633..f611016b0 100644 --- a/food-ordering-app/server/node_modules/punycode/README.md +++ b/food-ordering-app/server/node_modules/punycode/README.md @@ -1,4 +1,4 @@ -# Punycode.js [![Build status](https://travis-ci.org/bestiejs/punycode.js.svg?branch=master)](https://travis-ci.org/bestiejs/punycode.js) [![Code coverage status](http://img.shields.io/codecov/c/github/bestiejs/punycode.js.svg)](https://codecov.io/gh/bestiejs/punycode.js) [![Dependency status](https://gemnasium.com/bestiejs/punycode.js.svg)](https://gemnasium.com/bestiejs/punycode.js) +# Punycode.js [![punycode on npm](https://img.shields.io/npm/v/punycode)](https://www.npmjs.com/package/punycode) [![](https://data.jsdelivr.com/v1/package/npm/punycode/badge)](https://www.jsdelivr.com/package/npm/punycode) Punycode.js is a robust Punycode converter that fully complies to [RFC 3492](https://tools.ietf.org/html/rfc3492) and [RFC 5891](https://tools.ietf.org/html/rfc5891). @@ -12,7 +12,7 @@ This JavaScript library is the result of comparing, optimizing and documenting d This project was [bundled](https://github.com/joyent/node/blob/master/lib/punycode.js) with Node.js from [v0.6.2+](https://github.com/joyent/node/compare/975f1930b1...61e796decc) until [v7](https://github.com/nodejs/node/pull/7941) (soft-deprecated). -The current version supports recent versions of Node.js only. It provides a CommonJS module and an ES6 module. For the old version that offers the same functionality with broader support, including Rhino, Ringo, Narwhal, and web browsers, see [v1.4.1](https://github.com/bestiejs/punycode.js/releases/tag/v1.4.1). +This project provides a CommonJS module that uses ES2015+ features and JavaScript module, which work in modern Node.js versions and browsers. For the old Punycode.js version that offers the same functionality in a UMD build with support for older pre-ES2015 runtimes, including Rhino, Ringo, and Narwhal, see [v1.4.1](https://github.com/mathiasbynens/punycode.js/releases/tag/v1.4.1). ## Installation @@ -24,8 +24,12 @@ npm install punycode --save In [Node.js](https://nodejs.org/): +> ⚠️ Note that userland modules don't hide core modules. +> For example, `require('punycode')` still imports the deprecated core module even if you executed `npm install punycode`. +> Use `require('punycode/')` to import userland modules rather than core modules. + ```js -const punycode = require('punycode'); +const punycode = require('punycode/'); ``` ## API @@ -111,6 +115,28 @@ punycode.ucs2.encode([0x1D306]); A string representing the current Punycode.js version number. +## For maintainers + +### How to publish a new release + +1. On the `main` branch, bump the version number in `package.json`: + + ```sh + npm version patch -m 'Release v%s' + ``` + + Instead of `patch`, use `minor` or `major` [as needed](https://semver.org/). + + Note that this produces a Git commit + tag. + +1. Push the release commit and tag: + + ```sh + git push && git push --tags + ``` + + Our CI then automatically publishes the new release to npm, under both the [`punycode`](https://www.npmjs.com/package/punycode) and [`punycode.js`](https://www.npmjs.com/package/punycode.js) names. + ## Author | [![twitter/mathias](https://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias "Follow @mathias on Twitter") | diff --git a/food-ordering-app/server/node_modules/punycode/package.json b/food-ordering-app/server/node_modules/punycode/package.json index 9202ccf8c..b8b76fc76 100644 --- a/food-ordering-app/server/node_modules/punycode/package.json +++ b/food-ordering-app/server/node_modules/punycode/package.json @@ -1,6 +1,6 @@ { "name": "punycode", - "version": "2.1.1", + "version": "2.3.1", "description": "A robust Punycode converter that fully complies to RFC 3492 and RFC 5891, and works on nearly all JavaScript platforms.", "homepage": "https://mths.be/punycode", "main": "punycode.js", @@ -31,9 +31,9 @@ ], "repository": { "type": "git", - "url": "https://github.com/bestiejs/punycode.js.git" + "url": "https://github.com/mathiasbynens/punycode.js.git" }, - "bugs": "https://github.com/bestiejs/punycode.js/issues", + "bugs": "https://github.com/mathiasbynens/punycode.js/issues", "files": [ "LICENSE-MIT.txt", "punycode.js", @@ -41,12 +41,12 @@ ], "scripts": { "test": "mocha tests", - "prepublish": "node scripts/prepublish.js" + "build": "node scripts/prepublish.js" }, "devDependencies": { - "codecov": "^1.0.1", - "istanbul": "^0.4.1", - "mocha": "^2.5.3" + "codecov": "^3.8.3", + "nyc": "^15.1.0", + "mocha": "^10.2.0" }, "jspm": { "map": { diff --git a/food-ordering-app/server/node_modules/punycode/punycode.es6.js b/food-ordering-app/server/node_modules/punycode/punycode.es6.js index 4610bc9eb..dadece25b 100644 --- a/food-ordering-app/server/node_modules/punycode/punycode.es6.js +++ b/food-ordering-app/server/node_modules/punycode/punycode.es6.js @@ -15,7 +15,7 @@ const delimiter = '-'; // '\x2D' /** Regular expressions */ const regexPunycode = /^xn--/; -const regexNonASCII = /[^\0-\x7E]/; // non-ASCII chars +const regexNonASCII = /[^\0-\x7F]/; // Note: U+007F DEL is excluded too. const regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g; // RFC 3490 separators /** Error messages */ @@ -50,11 +50,11 @@ function error(type) { * item. * @returns {Array} A new array of values returned by the callback function. */ -function map(array, fn) { +function map(array, callback) { const result = []; let length = array.length; while (length--) { - result[length] = fn(array[length]); + result[length] = callback(array[length]); } return result; } @@ -66,22 +66,22 @@ function map(array, fn) { * @param {String} domain The domain name or email address. * @param {Function} callback The function that gets called for every * character. - * @returns {Array} A new string of characters returned by the callback + * @returns {String} A new string of characters returned by the callback * function. */ -function mapDomain(string, fn) { - const parts = string.split('@'); +function mapDomain(domain, callback) { + const parts = domain.split('@'); let result = ''; if (parts.length > 1) { // In email addresses, only the domain name should be punycoded. Leave // the local part (i.e. everything up to `@`) intact. result = parts[0] + '@'; - string = parts[1]; + domain = parts[1]; } // Avoid `split(regex)` for IE8 compatibility. See #17. - string = string.replace(regexSeparators, '\x2E'); - const labels = string.split('.'); - const encoded = map(labels, fn).join('.'); + domain = domain.replace(regexSeparators, '\x2E'); + const labels = domain.split('.'); + const encoded = map(labels, callback).join('.'); return result + encoded; } @@ -130,7 +130,7 @@ function ucs2decode(string) { * @param {Array} codePoints The array of numeric code points. * @returns {String} The new Unicode string (UCS-2). */ -const ucs2encode = array => String.fromCodePoint(...array); +const ucs2encode = codePoints => String.fromCodePoint(...codePoints); /** * Converts a basic code point into a digit/integer. @@ -142,13 +142,13 @@ const ucs2encode = array => String.fromCodePoint(...array); * the code point does not represent a value. */ const basicToDigit = function(codePoint) { - if (codePoint - 0x30 < 0x0A) { - return codePoint - 0x16; + if (codePoint >= 0x30 && codePoint < 0x3A) { + return 26 + (codePoint - 0x30); } - if (codePoint - 0x41 < 0x1A) { + if (codePoint >= 0x41 && codePoint < 0x5B) { return codePoint - 0x41; } - if (codePoint - 0x61 < 0x1A) { + if (codePoint >= 0x61 && codePoint < 0x7B) { return codePoint - 0x61; } return base; @@ -228,7 +228,7 @@ const decode = function(input) { // which gets added to `i`. The overflow checking is easier // if we increase `i` as we go, then subtract off its starting // value at the end to obtain `delta`. - let oldi = i; + const oldi = i; for (let w = 1, k = base; /* no condition */; k += base) { if (index >= inputLength) { @@ -237,7 +237,10 @@ const decode = function(input) { const digit = basicToDigit(input.charCodeAt(index++)); - if (digit >= base || digit > floor((maxInt - i) / w)) { + if (digit >= base) { + error('invalid-input'); + } + if (digit > floor((maxInt - i) / w)) { error('overflow'); } @@ -291,7 +294,7 @@ const encode = function(input) { input = ucs2decode(input); // Cache the length. - let inputLength = input.length; + const inputLength = input.length; // Initialize the state. let n = initialN; @@ -305,7 +308,7 @@ const encode = function(input) { } } - let basicLength = output.length; + const basicLength = output.length; let handledCPCount = basicLength; // `handledCPCount` is the number of code points that have been handled; @@ -342,7 +345,7 @@ const encode = function(input) { if (currentValue < n && ++delta > maxInt) { error('overflow'); } - if (currentValue == n) { + if (currentValue === n) { // Represent delta as a generalized variable-length integer. let q = delta; for (let k = base; /* no condition */; k += base) { @@ -359,7 +362,7 @@ const encode = function(input) { } output.push(stringFromCharCode(digitToBasic(q, 0))); - bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); + bias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength); delta = 0; ++handledCPCount; } @@ -419,7 +422,7 @@ const punycode = { * @memberOf punycode * @type String */ - 'version': '2.1.0', + 'version': '2.3.1', /** * An object of methods to convert from JavaScript's internal character * representation (UCS-2) to Unicode code points, and back. diff --git a/food-ordering-app/server/node_modules/punycode/punycode.js b/food-ordering-app/server/node_modules/punycode/punycode.js index ea61fd0d3..a1ef25192 100644 --- a/food-ordering-app/server/node_modules/punycode/punycode.js +++ b/food-ordering-app/server/node_modules/punycode/punycode.js @@ -15,7 +15,7 @@ const delimiter = '-'; // '\x2D' /** Regular expressions */ const regexPunycode = /^xn--/; -const regexNonASCII = /[^\0-\x7E]/; // non-ASCII chars +const regexNonASCII = /[^\0-\x7F]/; // Note: U+007F DEL is excluded too. const regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g; // RFC 3490 separators /** Error messages */ @@ -50,11 +50,11 @@ function error(type) { * item. * @returns {Array} A new array of values returned by the callback function. */ -function map(array, fn) { +function map(array, callback) { const result = []; let length = array.length; while (length--) { - result[length] = fn(array[length]); + result[length] = callback(array[length]); } return result; } @@ -66,22 +66,22 @@ function map(array, fn) { * @param {String} domain The domain name or email address. * @param {Function} callback The function that gets called for every * character. - * @returns {Array} A new string of characters returned by the callback + * @returns {String} A new string of characters returned by the callback * function. */ -function mapDomain(string, fn) { - const parts = string.split('@'); +function mapDomain(domain, callback) { + const parts = domain.split('@'); let result = ''; if (parts.length > 1) { // In email addresses, only the domain name should be punycoded. Leave // the local part (i.e. everything up to `@`) intact. result = parts[0] + '@'; - string = parts[1]; + domain = parts[1]; } // Avoid `split(regex)` for IE8 compatibility. See #17. - string = string.replace(regexSeparators, '\x2E'); - const labels = string.split('.'); - const encoded = map(labels, fn).join('.'); + domain = domain.replace(regexSeparators, '\x2E'); + const labels = domain.split('.'); + const encoded = map(labels, callback).join('.'); return result + encoded; } @@ -130,7 +130,7 @@ function ucs2decode(string) { * @param {Array} codePoints The array of numeric code points. * @returns {String} The new Unicode string (UCS-2). */ -const ucs2encode = array => String.fromCodePoint(...array); +const ucs2encode = codePoints => String.fromCodePoint(...codePoints); /** * Converts a basic code point into a digit/integer. @@ -142,13 +142,13 @@ const ucs2encode = array => String.fromCodePoint(...array); * the code point does not represent a value. */ const basicToDigit = function(codePoint) { - if (codePoint - 0x30 < 0x0A) { - return codePoint - 0x16; + if (codePoint >= 0x30 && codePoint < 0x3A) { + return 26 + (codePoint - 0x30); } - if (codePoint - 0x41 < 0x1A) { + if (codePoint >= 0x41 && codePoint < 0x5B) { return codePoint - 0x41; } - if (codePoint - 0x61 < 0x1A) { + if (codePoint >= 0x61 && codePoint < 0x7B) { return codePoint - 0x61; } return base; @@ -228,7 +228,7 @@ const decode = function(input) { // which gets added to `i`. The overflow checking is easier // if we increase `i` as we go, then subtract off its starting // value at the end to obtain `delta`. - let oldi = i; + const oldi = i; for (let w = 1, k = base; /* no condition */; k += base) { if (index >= inputLength) { @@ -237,7 +237,10 @@ const decode = function(input) { const digit = basicToDigit(input.charCodeAt(index++)); - if (digit >= base || digit > floor((maxInt - i) / w)) { + if (digit >= base) { + error('invalid-input'); + } + if (digit > floor((maxInt - i) / w)) { error('overflow'); } @@ -291,7 +294,7 @@ const encode = function(input) { input = ucs2decode(input); // Cache the length. - let inputLength = input.length; + const inputLength = input.length; // Initialize the state. let n = initialN; @@ -305,7 +308,7 @@ const encode = function(input) { } } - let basicLength = output.length; + const basicLength = output.length; let handledCPCount = basicLength; // `handledCPCount` is the number of code points that have been handled; @@ -342,7 +345,7 @@ const encode = function(input) { if (currentValue < n && ++delta > maxInt) { error('overflow'); } - if (currentValue == n) { + if (currentValue === n) { // Represent delta as a generalized variable-length integer. let q = delta; for (let k = base; /* no condition */; k += base) { @@ -359,7 +362,7 @@ const encode = function(input) { } output.push(stringFromCharCode(digitToBasic(q, 0))); - bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); + bias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength); delta = 0; ++handledCPCount; } @@ -419,7 +422,7 @@ const punycode = { * @memberOf punycode * @type String */ - 'version': '2.1.0', + 'version': '2.3.1', /** * An object of methods to convert from JavaScript's internal character * representation (UCS-2) to Unicode code points, and back. diff --git a/food-ordering-app/server/node_modules/qs/.editorconfig b/food-ordering-app/server/node_modules/qs/.editorconfig index 0ea91d995..dd5a8d84e 100644 --- a/food-ordering-app/server/node_modules/qs/.editorconfig +++ b/food-ordering-app/server/node_modules/qs/.editorconfig @@ -7,7 +7,7 @@ end_of_line = lf charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true -max_line_length = 160 +max_line_length = 180 quote_type = single [test/*] @@ -38,3 +38,9 @@ indent_size = off indent_style = off indent = off max_line_length = off + +[.nycrc] +indent_style = tab + +[tea.yaml] +indent_size = 2 diff --git a/food-ordering-app/server/node_modules/qs/.eslintrc b/food-ordering-app/server/node_modules/qs/.eslintrc deleted file mode 100644 index 6884760ee..000000000 --- a/food-ordering-app/server/node_modules/qs/.eslintrc +++ /dev/null @@ -1,38 +0,0 @@ -{ - "root": true, - - "extends": "@ljharb", - - "ignorePatterns": [ - "dist/", - ], - - "rules": { - "complexity": 0, - "consistent-return": 1, - "func-name-matching": 0, - "id-length": [2, { "min": 1, "max": 25, "properties": "never" }], - "indent": [2, 4], - "max-lines-per-function": [2, { "max": 150 }], - "max-params": [2, 15], - "max-statements": [2, 52], - "multiline-comment-style": 0, - "no-continue": 1, - "no-magic-numbers": 0, - "no-restricted-syntax": [2, "BreakStatement", "DebuggerStatement", "ForInStatement", "LabeledStatement", "WithStatement"], - }, - - "overrides": [ - { - "files": "test/**", - "rules": { - "function-paren-newline": 0, - "max-lines-per-function": 0, - "max-statements": 0, - "no-buffer-constructor": 0, - "no-extend-native": 0, - "no-throw-literal": 0, - } - } - ] -} diff --git a/food-ordering-app/server/node_modules/qs/.github/SECURITY.md b/food-ordering-app/server/node_modules/qs/.github/SECURITY.md new file mode 100644 index 000000000..b499cb686 --- /dev/null +++ b/food-ordering-app/server/node_modules/qs/.github/SECURITY.md @@ -0,0 +1,11 @@ +# Security + +Please file a private vulnerability report via GitHub, email [@ljharb](https://github.com/ljharb), or see https://tidelift.com/security if you have a potential security vulnerability to report. + +## Incident Response Plan + +Please see our [Incident Response Plan](https://github.com/ljharb/.github/blob/main/INCIDENT_RESPONSE_PLAN.md). + +## Threat Model + +Please see [THREAT_MODEL.md](./THREAT_MODEL.md). diff --git a/food-ordering-app/server/node_modules/qs/.github/THREAT_MODEL.md b/food-ordering-app/server/node_modules/qs/.github/THREAT_MODEL.md new file mode 100644 index 000000000..7e6fef1a5 --- /dev/null +++ b/food-ordering-app/server/node_modules/qs/.github/THREAT_MODEL.md @@ -0,0 +1,78 @@ +## Threat Model for qs (querystring parsing library) + +### 1. Library Overview + +- **Library Name:** qs +- **Brief Description:** A JavaScript library for parsing and stringifying URL query strings, supporting nested objects and arrays. It is widely used in Node.js and web applications for processing query parameters[2][6][8]. +- **Key Public APIs/Functions:** `qs.parse()`, `qs.stringify()` + +### 2. Define Scope + +This threat model focuses on the core parsing and stringifying functionality, specifically the handling of nested objects and arrays, option validation, and cycle management in stringification. + +### 3. Conceptual System Diagram + +``` +Caller Application → qs.parse(input, options) → Parsing Engine → Output Object + │ + └→ Options Handling + +Caller Application → qs.stringify(obj, options) → Stringifying Engine → Output String + │ + └→ Options Handling + └→ Cycle Tracking +``` + +**Trust Boundaries:** +- **Input string (parse):** May come from untrusted sources (e.g., user input, network requests) +- **Input object (stringify):** May contain cycles, which can lead to infinite loops during stringification +- **Options:** Provided by the caller +- **Cycle Tracking:** Used only during stringification to detect and handle circular references + +### 4. Identify Assets + +- **Integrity of parsed output:** Prevent malicious manipulation of the output object structure, especially ensuring builtins/globals are not modified as a result of parse[3][4][8]. +- **Confidentiality of processed data:** Avoid leaking sensitive information through errors or output. +- **Availability/performance for host application:** Prevent crashes or resource exhaustion in the consuming application. +- **Security of host application:** Prevent the library from being a vector for attacks (e.g., prototype pollution, DoS). +- **Reputation of library:** Maintain trust by avoiding supply chain attacks and vulnerabilities[1]. + +### 5. Identify Threats + +| Component / API / Interaction | S | T | R | I | D | E | +|---------------------------------------|----|----|----|----|----|----| +| Public API Call (`parse`) | – | ✓ | – | ✓ | ✓ | ✓ | +| Public API Call (`stringify`) | – | ✓ | – | ✓ | ✓ | – | +| Options Handling | ✓ | ✓ | – | ✓ | – | ✓ | +| Dependency Interaction | – | – | – | – | ✓ | – | + +**Key Threats:** +- **Tampering:** Malicious input can, if not prevented, alter parsed output (e.g., prototype pollution via `__proto__`, modification of builtins/globals)[3][4][8]. +- **Information Disclosure:** Error messages may expose internal details or sensitive data. +- **Denial of Service:** Large or malformed input can exhaust memory or CPU. +- **Elevation of Privilege:** Prototype pollution can lead to unintended privilege escalation in the host application[3][4][8]. + +### 6. Mitigation/Countermeasures + +| Threat Identified | Proposed Mitigation | +|---------------------------------------------------|---------------------| +| Tampering (malicious input, prototype pollution) | Strict input validation; keep `allowPrototypes: false` by default; use `plainObjects` for output; ensure builtins/globals are never modified by parse[4][8]. | +| Information Disclosure (error messages) | Generic error messages without stack traces or internal paths. | +| Denial of Service (memory/CPU exhaustion) | Enforce `arrayLimit` and `parameterLimit` with safe defaults; enable `throwOnLimitExceeded`; limit nesting depth[7]. | +| Elevation of Privilege (prototype pollution) | Keep `allowPrototypes: false`; validate options against allowlist; use `plainObjects` to avoid prototype pollution[4][8]. | + +### 7. Risk Ranking + +- **High:** Denial of Service via array parsing or malformed input (historical vulnerability) +- **Medium:** Prototype pollution via options or input (if `allowPrototypes` enabled) +- **Low:** Information disclosure in errors + +### 8. Next Steps & Review + +1. **Audit option validation logic.** +2. **Add depth limiting to nested parsing and stringification.** +3. **Implement fuzz testing for parser and stringifier edge cases.** +4. **Regularly review dependencies for vulnerabilities.** +5. **Keep documentation and threat model up to date.** +6. **Ensure builtins/globals are never modified as a result of parse.** +7. **Support round-trip consistency between parse and stringify as a non-security goal, with the right options[5][9].** diff --git a/food-ordering-app/server/node_modules/qs/CHANGELOG.md b/food-ordering-app/server/node_modules/qs/CHANGELOG.md index c6b29155e..0d304ea49 100644 --- a/food-ordering-app/server/node_modules/qs/CHANGELOG.md +++ b/food-ordering-app/server/node_modules/qs/CHANGELOG.md @@ -1,3 +1,113 @@ +## **6.14.2** +- [Fix] `parse`: mark overflow objects for indexed notation exceeding `arrayLimit` (#546) +- [Fix] `arrayLimit` means max count, not max index, in `combine`/`merge`/`parseArrayValue` +- [Fix] `parse`: throw on `arrayLimit` exceeded with indexed notation when `throwOnLimitExceeded` is true (#529) +- [Fix] `parse`: enforce `arrayLimit` on `comma`-parsed values +- [Fix] `parse`: fix error message to reflect arrayLimit as max index; remove extraneous comments (#545) +- [Robustness] avoid `.push`, use `void` +- [readme] document that `addQueryPrefix` does not add `?` to empty output (#418) +- [readme] clarify `parseArrays` and `arrayLimit` documentation (#543) +- [readme] replace runkit CI badge with shields.io check-runs badge +- [meta] fix changelog typo (`arrayLength` → `arrayLimit`) +- [actions] fix rebase workflow permissions + +## **6.14.1** +- [Fix] ensure `arrayLimit` applies to `[]` notation as well +- [Fix] `parse`: when a custom decoder returns `null` for a key, ignore that key +- [Refactor] `parse`: extract key segment splitting helper +- [meta] add threat model +- [actions] add workflow permissions +- [Tests] `stringify`: increase coverage +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `npmignore`, `es-value-fixtures`, `for-each`, `object-inspect` + +## **6.14.0** +- [New] `parse`: add `throwOnParameterLimitExceeded` option (#517) +- [Refactor] `parse`: use `utils.combine` more +- [patch] `parse`: add explicit `throwOnLimitExceeded` default +- [actions] use shared action; re-add finishers +- [meta] Fix changelog formatting bug +- [Deps] update `side-channel` +- [Dev Deps] update `es-value-fixtures`, `has-bigints`, `has-proto`, `has-symbols` +- [Tests] increase coverage + +## **6.13.1** +- [Fix] `stringify`: avoid a crash when a `filter` key is `null` +- [Fix] `utils.merge`: functions should not be stringified into keys +- [Fix] `parse`: avoid a crash with interpretNumericEntities: true, comma: true, and iso charset +- [Fix] `stringify`: ensure a non-string `filter` does not crash +- [Refactor] use `__proto__` syntax instead of `Object.create` for null objects +- [Refactor] misc cleanup +- [Tests] `utils.merge`: add some coverage +- [Tests] fix a test case +- [actions] split out node 10-20, and 20+ +- [Dev Deps] update `es-value-fixtures`, `mock-property`, `object-inspect`, `tape` + +## **6.13.0** +- [New] `parse`: add `strictDepth` option (#511) +- [Tests] use `npm audit` instead of `aud` + +## **6.12.3** +- [Fix] `parse`: properly account for `strictNullHandling` when `allowEmptyArrays` +- [meta] fix changelog indentation + +## **6.12.2** +- [Fix] `parse`: parse encoded square brackets (#506) +- [readme] add CII best practices badge + +## **6.12.1** +- [Fix] `parse`: Disable `decodeDotInKeys` by default to restore previous behavior (#501) +- [Performance] `utils`: Optimize performance under large data volumes, reduce memory usage, and speed up processing (#502) +- [Refactor] `utils`: use `+=` +- [Tests] increase coverage + +## **6.12.0** + +- [New] `parse`/`stringify`: add `decodeDotInKeys`/`encodeDotKeys` options (#488) +- [New] `parse`: add `duplicates` option +- [New] `parse`/`stringify`: add `allowEmptyArrays` option to allow [] in object values (#487) +- [Refactor] `parse`/`stringify`: move allowDots config logic to its own variable +- [Refactor] `stringify`: move option-handling code into `normalizeStringifyOptions` +- [readme] update readme, add logos (#484) +- [readme] `stringify`: clarify default `arrayFormat` behavior +- [readme] fix line wrapping +- [readme] remove dead badges +- [Deps] update `side-channel` +- [meta] make the dist build 50% smaller +- [meta] add `sideEffects` flag +- [meta] run build in prepack, not prepublish +- [Tests] `parse`: remove useless tests; add coverage +- [Tests] `stringify`: increase coverage +- [Tests] use `mock-property` +- [Tests] `stringify`: improve coverage +- [Dev Deps] update `@ljharb/eslint-config `, `aud`, `has-override-mistake`, `has-property-descriptors`, `mock-property`, `npmignore`, `object-inspect`, `tape` +- [Dev Deps] pin `glob`, since v10.3.8+ requires a broken `jackspeak` +- [Dev Deps] pin `jackspeak` since 2.1.2+ depends on npm aliases, which kill the install process in npm < 6 + +## **6.11.2** +- [Fix] `parse`: Fix parsing when the global Object prototype is frozen (#473) +- [Tests] add passing test cases with empty keys (#473) + +## **6.11.1** +- [Fix] `stringify`: encode comma values more consistently (#463) +- [readme] add usage of `filter` option for injecting custom serialization, i.e. of custom types (#447) +- [meta] remove extraneous code backticks (#457) +- [meta] fix changelog markdown +- [actions] update checkout action +- [actions] restrict action permissions +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `object-inspect`, `tape` + +## **6.11.0** +- [New] [Fix] `stringify`: revert 0e903c0; add `commaRoundTrip` option (#442) +- [readme] fix version badge + +## **6.10.5** +- [Fix] `stringify`: with `arrayFormat: comma`, properly include an explicit `[]` on a single-item array (#434) + +## **6.10.4** +- [Fix] `stringify`: with `arrayFormat: comma`, include an explicit `[]` on a single-item array (#441) +- [meta] use `npmignore` to autogenerate an npmignore file +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `has-symbol`, `object-inspect`, `tape` + ## **6.10.3** - [Fix] `parse`: ignore `__proto__` keys (#428) - [Robustness] `stringify`: avoid relying on a global `undefined` (#427) @@ -27,6 +137,18 @@ - [Tests] use `ljharb/actions/node/install` instead of `ljharb/actions/node/run` - [Tests] Revert "[meta] ignore eclint transitive audit warning" +## **6.9.7** +- [Fix] `parse`: ignore `__proto__` keys (#428) +- [Fix] `stringify`: avoid encoding arrayformat comma when `encodeValuesOnly = true` (#424) +- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) +- [readme] remove travis badge; add github actions/codecov badges; update URLs +- [Docs] add note and links for coercing primitive values (#408) +- [Tests] clean up stringify tests slightly +- [meta] fix README.md (#399) +- Revert "[meta] ignore eclint transitive audit warning" +- [actions] backport actions from main +- [Dev Deps] backport updates from main + ## **6.9.6** - [Fix] restore `dist` dir; mistakenly removed in d4f6c32 @@ -75,6 +197,19 @@ - [Tests] up to `node` `v12.10`, `v11.15`, `v10.16`, `v8.16` - [Tests] `Buffer.from` in node v5.0-v5.9 and v4.0-v4.4 requires a TypedArray +## **6.8.3** +- [Fix] `parse`: ignore `__proto__` keys (#428) +- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) +- [Fix] `stringify`: avoid encoding arrayformat comma when `encodeValuesOnly = true` (#424) +- [readme] remove travis badge; add github actions/codecov badges; update URLs +- [Tests] clean up stringify tests slightly +- [Docs] add note and links for coercing primitive values (#408) +- [meta] fix README.md (#399) +- [actions] backport actions from main +- [Dev Deps] backport updates from main +- [Refactor] `stringify`: reduce branching +- [meta] do not publish workflow files + ## **6.8.2** - [Fix] proper comma parsing of URL-encoded commas (#361) - [Fix] parses comma delimited array while having percent-encoded comma treated as normal text (#336) @@ -106,6 +241,19 @@ - [meta] add FUNDING.yml - [meta] Clean up license text so it’s properly detected as BSD-3-Clause +## **6.7.3** +- [Fix] `parse`: ignore `__proto__` keys (#428) +- [Fix] `stringify`: avoid encoding arrayformat comma when `encodeValuesOnly = true` (#424) +- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) +- [readme] remove travis badge; add github actions/codecov badges; update URLs +- [Docs] add note and links for coercing primitive values (#408) +- [meta] fix README.md (#399) +- [meta] do not publish workflow files +- [actions] backport actions from main +- [Dev Deps] backport updates from main +- [Tests] use `nyc` for coverage +- [Tests] clean up stringify tests slightly + ## **6.7.2** - [Fix] proper comma parsing of URL-encoded commas (#361) - [Fix] parses comma delimited array while having percent-encoded comma treated as normal text (#336) @@ -144,6 +292,32 @@ - [Tests] fix Buffer tests to work in node < 4.5 and node < 5.10 - [Tests] temporarily allow coverage to fail +## **6.6.1** +- [Fix] `parse`: ignore `__proto__` keys (#428) +- [Fix] fix for an impossible situation: when the formatter is called with a non-string value +- [Fix] `utils.merge`: avoid a crash with a null target and an array source +- [Fix] `utils.merge`: avoid a crash with a null target and a truthy non-array source +- [Fix] correctly parse nested arrays +- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) +- [Robustness] `stringify`: cache `Object.prototype.hasOwnProperty` +- [Refactor] `formats`: tiny bit of cleanup. +- [Refactor] `utils`: `isBuffer`: small tweak; add tests +- [Refactor]: `stringify`/`utils`: cache `Array.isArray` +- [Refactor] `utils`: reduce observable [[Get]]s +- [Refactor] use cached `Array.isArray` +- [Refactor] `parse`/`stringify`: make a function to normalize the options +- [readme] remove travis badge; add github actions/codecov badges; update URLs +- [Docs] Clarify the need for "arrayLimit" option +- [meta] fix README.md (#399) +- [meta] do not publish workflow files +- [meta] Clean up license text so it’s properly detected as BSD-3-Clause +- [meta] add FUNDING.yml +- [meta] Fixes typo in CHANGELOG.md +- [actions] backport actions from main +- [Tests] fix Buffer tests to work in node < 4.5 and node < 5.10 +- [Tests] always use `String(x)` over `x.toString()` +- [Dev Deps] backport from main + ## **6.6.0** - [New] Add support for iso-8859-1, utf8 "sentinel" and numeric entities (#268) - [New] move two-value combine to a `utils` function (#189) @@ -160,6 +334,30 @@ - [Dev Deps] update `browserify`, `eslint`, `@ljharb/eslint-config`, `iconv-lite`, `safe-publish-latest`, `tape` - [Tests] up to `node` `v10.10`, `v9.11`, `v8.12`, `v6.14`, `v4.9`; pin included builds to LTS +## **6.5.3** +- [Fix] `parse`: ignore `__proto__` keys (#428) +- [Fix] `utils.merge`: avoid a crash with a null target and a truthy non-array source +- [Fix] correctly parse nested arrays +- [Fix] `stringify`: fix a crash with `strictNullHandling` and a custom `filter`/`serializeDate` (#279) +- [Fix] `utils`: `merge`: fix crash when `source` is a truthy primitive & no options are provided +- [Fix] when `parseArrays` is false, properly handle keys ending in `[]` +- [Fix] fix for an impossible situation: when the formatter is called with a non-string value +- [Fix] `utils.merge`: avoid a crash with a null target and an array source +- [Refactor] `utils`: reduce observable [[Get]]s +- [Refactor] use cached `Array.isArray` +- [Refactor] `stringify`: Avoid arr = arr.concat(...), push to the existing instance (#269) +- [Refactor] `parse`: only need to reassign the var once +- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) +- [readme] remove travis badge; add github actions/codecov badges; update URLs +- [Docs] Clean up license text so it’s properly detected as BSD-3-Clause +- [Docs] Clarify the need for "arrayLimit" option +- [meta] fix README.md (#399) +- [meta] add FUNDING.yml +- [actions] backport actions from main +- [Tests] always use `String(x)` over `x.toString()` +- [Tests] remove nonexistent tape option +- [Dev Deps] backport from main + ## **6.5.2** - [Fix] use `safer-buffer` instead of `Buffer` constructor - [Refactor] utils: `module.exports` one thing, instead of mutating `exports` (#230) @@ -186,6 +384,27 @@ - [Tests] up to `node` `v8.1`, `v7.10`, `v6.11`; npm v4.6 breaks on node < v1; npm v5+ breaks on node < v4 - [Tests] add `editorconfig-tools` +## **6.4.1** +- [Fix] `parse`: ignore `__proto__` keys (#428) +- [Fix] fix for an impossible situation: when the formatter is called with a non-string value +- [Fix] use `safer-buffer` instead of `Buffer` constructor +- [Fix] `utils.merge`: avoid a crash with a null target and an array source +- [Fix] `utils.merge`: avoid a crash with a null target and a truthy non-array source +- [Fix] `stringify`: fix a crash with `strictNullHandling` and a custom `filter`/`serializeDate` (#279) +- [Fix] `utils`: `merge`: fix crash when `source` is a truthy primitive & no options are provided +- [Fix] when `parseArrays` is false, properly handle keys ending in `[]` +- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) +- [Refactor] use cached `Array.isArray` +- [Refactor] `stringify`: Avoid arr = arr.concat(...), push to the existing instance (#269) +- [readme] remove travis badge; add github actions/codecov badges; update URLs +- [Docs] Clarify the need for "arrayLimit" option +- [meta] fix README.md (#399) +- [meta] Clean up license text so it’s properly detected as BSD-3-Clause +- [meta] add FUNDING.yml +- [actions] backport actions from main +- [Tests] remove nonexistent tape option +- [Dev Deps] backport from main + ## **6.4.0** - [New] `qs.stringify`: add `encodeValuesOnly` option - [Fix] follow `allowPrototypes` option during merge (#201, #201) @@ -195,6 +414,26 @@ - [Tests] up to `node` `v7.7`, `v6.10`,` v4.8`; disable osx builds since they block linux builds - [eslint] reduce warnings +## **6.3.3** +- [Fix] `parse`: ignore `__proto__` keys (#428) +- [Fix] fix for an impossible situation: when the formatter is called with a non-string value +- [Fix] `utils.merge`: avoid a crash with a null target and an array source +- [Fix] `utils.merge`: avoid a crash with a null target and a truthy non-array source +- [Fix] `stringify`: fix a crash with `strictNullHandling` and a custom `filter`/`serializeDate` (#279) +- [Fix] `utils`: `merge`: fix crash when `source` is a truthy primitive & no options are provided +- [Fix] when `parseArrays` is false, properly handle keys ending in `[]` +- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) +- [Refactor] use cached `Array.isArray` +- [Refactor] `stringify`: Avoid arr = arr.concat(...), push to the existing instance (#269) +- [Docs] Clarify the need for "arrayLimit" option +- [meta] fix README.md (#399) +- [meta] Clean up license text so it’s properly detected as BSD-3-Clause +- [meta] add FUNDING.yml +- [actions] backport actions from main +- [Tests] use `safer-buffer` instead of `Buffer` constructor +- [Tests] remove nonexistent tape option +- [Dev Deps] backport from main + ## **6.3.2** - [Fix] follow `allowPrototypes` option during merge (#201, #200) - [Dev Deps] update `eslint` @@ -228,6 +467,23 @@ - [Tests] skip Object.create tests when null objects are not available - [Tests] Turn on eslint for test files (#175) +## **6.2.4** +- [Fix] `parse`: ignore `__proto__` keys (#428) +- [Fix] `utils.merge`: avoid a crash with a null target and an array source +- [Fix] `utils.merge`: avoid a crash with a null target and a truthy non-array source +- [Fix] `utils`: `merge`: fix crash when `source` is a truthy primitive & no options are provided +- [Fix] when `parseArrays` is false, properly handle keys ending in `[]` +- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) +- [Refactor] use cached `Array.isArray` +- [Docs] Clarify the need for "arrayLimit" option +- [meta] fix README.md (#399) +- [meta] Clean up license text so it’s properly detected as BSD-3-Clause +- [meta] add FUNDING.yml +- [actions] backport actions from main +- [Tests] use `safer-buffer` instead of `Buffer` constructor +- [Tests] remove nonexistent tape option +- [Dev Deps] backport from main + ## **6.2.3** - [Fix] follow `allowPrototypes` option during merge (#201, #200) - [Fix] chmod a-x @@ -249,7 +505,7 @@ - [New] add "encoder" and "decoder" options, for custom param encoding/decoding (#160) - [Fix] fix compacting of nested sparse arrays (#150) -## **6.1.2 +## **6.1.2** - [Fix] follow `allowPrototypes` option during merge (#201, #200) - [Fix] chmod a-x - [Fix] support keys starting with brackets (#202, #200) diff --git a/food-ordering-app/server/node_modules/qs/README.md b/food-ordering-app/server/node_modules/qs/README.md index 012638043..5c3773939 100644 --- a/food-ordering-app/server/node_modules/qs/README.md +++ b/food-ordering-app/server/node_modules/qs/README.md @@ -1,11 +1,14 @@ -# qs [![Version Badge][2]][1] +

+ qs +

+ +# qs [![Version Badge][npm-version-svg]][package-url] [![github actions][actions-image]][actions-url] [![coverage][codecov-image]][codecov-url] -[![dependency status][deps-svg]][deps-url] -[![dev dependency status][dev-deps-svg]][dev-deps-url] [![License][license-image]][license-url] [![Downloads][downloads-image]][downloads-url] +[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/9058/badge)](https://bestpractices.coreinfrastructure.org/projects/9058) [![npm badge][npm-badge-png]][package-url] @@ -46,14 +49,16 @@ assert.deepEqual(qs.parse('foo[bar]=baz'), { }); ``` -When using the `plainObjects` option the parsed value is returned as a null object, created via `Object.create(null)` and as such you should be aware that prototype methods will not exist on it and a user may set those names to whatever value they like: +When using the `plainObjects` option the parsed value is returned as a null object, created via `{ __proto__: null }` and as such you should be aware that prototype methods will not exist on it and a user may set those names to whatever value they like: ```javascript var nullObject = qs.parse('a[hasOwnProperty]=b', { plainObjects: true }); assert.deepEqual(nullObject, { a: { hasOwnProperty: 'b' } }); ``` -By default parameters that would overwrite properties on the object prototype are ignored, if you wish to keep the data from those fields either use `plainObjects` as mentioned above, or set `allowPrototypes` to `true` which will allow user input to overwrite those properties. *WARNING* It is generally a bad idea to enable this option as it can cause problems when attempting to use the properties that have been overwritten. Always be careful with this option. +By default parameters that would overwrite properties on the object prototype are ignored, if you wish to keep the data from those fields either use `plainObjects` as mentioned above, or set `allowPrototypes` to `true` which will allow user input to overwrite those properties. +*WARNING* It is generally a bad idea to enable this option as it can cause problems when attempting to use the properties that have been overwritten. +Always be careful with this option. ```javascript var protoObject = qs.parse('a[hasOwnProperty]=b', { allowPrototypes: true }); @@ -80,8 +85,8 @@ assert.deepEqual(qs.parse('foo[bar][baz]=foobarbaz'), { }); ``` -By default, when nesting objects **qs** will only parse up to 5 children deep. This means if you attempt to parse a string like -`'a[b][c][d][e][f][g][h][i]=j'` your resulting object will be: +By default, when nesting objects **qs** will only parse up to 5 children deep. +This means if you attempt to parse a string like `'a[b][c][d][e][f][g][h][i]=j'` your resulting object will be: ```javascript var expected = { @@ -110,7 +115,18 @@ var deep = qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1 }); assert.deepEqual(deep, { a: { b: { '[c][d][e][f][g][h][i]': 'j' } } }); ``` -The depth limit helps mitigate abuse when **qs** is used to parse user input, and it is recommended to keep it a reasonably small number. +You can configure **qs** to throw an error when parsing nested input beyond this depth using the `strictDepth` option (defaulted to false): + +```javascript +try { + qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1, strictDepth: true }); +} catch (err) { + assert(err instanceof RangeError); + assert.strictEqual(err.message, 'Input depth exceeded depth option of 1 and strictDepth is true'); +} +``` + +The depth limit helps mitigate abuse when **qs** is used to parse user input, and it is recommended to keep it a reasonably small number. The strictDepth option adds a layer of protection by throwing an error when the limit is exceeded, allowing you to catch and handle such cases. For similar reasons, by default **qs** will only parse up to 1000 parameters. This can be overridden by passing a `parameterLimit` option: @@ -119,6 +135,18 @@ var limited = qs.parse('a=b&c=d', { parameterLimit: 1 }); assert.deepEqual(limited, { a: 'b' }); ``` +If you want an error to be thrown whenever the a limit is exceeded (eg, `parameterLimit`, `arrayLimit`), set the `throwOnLimitExceeded` option to `true`. This option will generate a descriptive error if the query string exceeds a configured limit. +```javascript +try { + qs.parse('a=1&b=2&c=3&d=4', { parameterLimit: 3, throwOnLimitExceeded: true }); +} catch (err) { + assert(err instanceof Error); + assert.strictEqual(err.message, 'Parameter limit exceeded. Only 3 parameters allowed.'); +} +``` + +When `throwOnLimitExceeded` is set to `false` (default), **qs** will parse up to the specified `parameterLimit` and ignore the rest without throwing an error. + To bypass the leading question mark, use `ignoreQueryPrefix`: ```javascript @@ -147,32 +175,44 @@ var withDots = qs.parse('a.b=c', { allowDots: true }); assert.deepEqual(withDots, { a: { b: 'c' } }); ``` -If you have to deal with legacy browsers or services, there's -also support for decoding percent-encoded octets as iso-8859-1: +Option `decodeDotInKeys` can be used to decode dots in keys +Note: it implies `allowDots`, so `parse` will error if you set `decodeDotInKeys` to `true`, and `allowDots` to `false`. + +```javascript +var withDots = qs.parse('name%252Eobj.first=John&name%252Eobj.last=Doe', { decodeDotInKeys: true }); +assert.deepEqual(withDots, { 'name.obj': { first: 'John', last: 'Doe' }}); +``` + +Option `allowEmptyArrays` can be used to allowing empty array values in object +```javascript +var withEmptyArrays = qs.parse('foo[]&bar=baz', { allowEmptyArrays: true }); +assert.deepEqual(withEmptyArrays, { foo: [], bar: 'baz' }); +``` + +Option `duplicates` can be used to change the behavior when duplicate keys are encountered +```javascript +assert.deepEqual(qs.parse('foo=bar&foo=baz'), { foo: ['bar', 'baz'] }); +assert.deepEqual(qs.parse('foo=bar&foo=baz', { duplicates: 'combine' }), { foo: ['bar', 'baz'] }); +assert.deepEqual(qs.parse('foo=bar&foo=baz', { duplicates: 'first' }), { foo: 'bar' }); +assert.deepEqual(qs.parse('foo=bar&foo=baz', { duplicates: 'last' }), { foo: 'baz' }); +``` + +If you have to deal with legacy browsers or services, there's also support for decoding percent-encoded octets as iso-8859-1: ```javascript var oldCharset = qs.parse('a=%A7', { charset: 'iso-8859-1' }); assert.deepEqual(oldCharset, { a: '§' }); ``` -Some services add an initial `utf8=✓` value to forms so that old -Internet Explorer versions are more likely to submit the form as -utf-8. Additionally, the server can check the value against wrong -encodings of the checkmark character and detect that a query string -or `application/x-www-form-urlencoded` body was *not* sent as -utf-8, eg. if the form had an `accept-charset` parameter or the -containing page had a different character set. +Some services add an initial `utf8=✓` value to forms so that old Internet Explorer versions are more likely to submit the form as utf-8. +Additionally, the server can check the value against wrong encodings of the checkmark character and detect that a query string or `application/x-www-form-urlencoded` body was *not* sent as utf-8, eg. if the form had an `accept-charset` parameter or the containing page had a different character set. **qs** supports this mechanism via the `charsetSentinel` option. -If specified, the `utf8` parameter will be omitted from the -returned object. It will be used to switch to `iso-8859-1`/`utf-8` -mode depending on how the checkmark is encoded. +If specified, the `utf8` parameter will be omitted from the returned object. +It will be used to switch to `iso-8859-1`/`utf-8` mode depending on how the checkmark is encoded. -**Important**: When you specify both the `charset` option and the -`charsetSentinel` option, the `charset` will be overridden when -the request contains a `utf8` parameter from which the actual -charset can be deduced. In that sense the `charset` will behave -as the default charset rather than the authoritative charset. +**Important**: When you specify both the `charset` option and the `charsetSentinel` option, the `charset` will be overridden when the request contains a `utf8` parameter from which the actual charset can be deduced. +In that sense the `charset` will behave as the default charset rather than the authoritative charset. ```javascript var detectedAsUtf8 = qs.parse('utf8=%E2%9C%93&a=%C3%B8', { @@ -189,8 +229,7 @@ var detectedAsIso8859_1 = qs.parse('utf8=%26%2310003%3B&a=%F8', { assert.deepEqual(detectedAsIso8859_1, { a: 'ø' }); ``` -If you want to decode the `&#...;` syntax to the actual character, -you can specify the `interpretNumericEntities` option as well: +If you want to decode the `&#...;` syntax to the actual character, you can specify the `interpretNumericEntities` option as well: ```javascript var detectedAsIso8859_1 = qs.parse('a=%26%239786%3B', { @@ -200,8 +239,7 @@ var detectedAsIso8859_1 = qs.parse('a=%26%239786%3B', { assert.deepEqual(detectedAsIso8859_1, { a: '☺' }); ``` -It also works when the charset has been detected in `charsetSentinel` -mode. +It also works when the charset has been detected in `charsetSentinel` mode. ### Parsing Arrays @@ -219,9 +257,8 @@ var withIndexes = qs.parse('a[1]=c&a[0]=b'); assert.deepEqual(withIndexes, { a: ['b', 'c'] }); ``` -Note that the only difference between an index in an array and a key in an object is that the value between the brackets must be a number -to create an array. When creating arrays with specific indices, **qs** will compact a sparse array to only the existing values preserving -their order: +Note that the only difference between an index in an array and a key in an object is that the value between the brackets must be a number to create an array. +When creating arrays with specific indices, **qs** will compact a sparse array to only the existing values preserving their order: ```javascript var noSparse = qs.parse('a[1]=b&a[15]=c'); @@ -245,8 +282,9 @@ var withIndexedEmptyString = qs.parse('a[0]=b&a[1]=&a[2]=c'); assert.deepEqual(withIndexedEmptyString, { a: ['b', '', 'c'] }); ``` -**qs** will also limit specifying indices in an array to a maximum index of `20`. Any array members with an index of greater than `20` will -instead be converted to an object with the index as the key. This is needed to handle cases when someone sent, for example, `a[999999999]` and it will take significant time to iterate over this huge array. +**qs** will also limit arrays to a maximum of `20` elements. +Any array members with an index of `20` or greater will instead be converted to an object with the index as the key. +This is needed to handle cases when someone sent, for example, `a[999999999]` and it will take significant time to iterate over this huge array. ```javascript var withMaxIndex = qs.parse('a[100]=b'); @@ -260,7 +298,20 @@ var withArrayLimit = qs.parse('a[1]=b', { arrayLimit: 0 }); assert.deepEqual(withArrayLimit, { a: { '1': 'b' } }); ``` -To disable array parsing entirely, set `parseArrays` to `false`. +If you want to throw an error whenever the array limit is exceeded, set the `throwOnLimitExceeded` option to `true`. This option will generate a descriptive error if the query string exceeds a configured limit. +```javascript +try { + qs.parse('a[1]=b', { arrayLimit: 0, throwOnLimitExceeded: true }); +} catch (err) { + assert(err instanceof Error); + assert.strictEqual(err.message, 'Array limit exceeded. Only 0 elements allowed in an array.'); +} +``` + +When `throwOnLimitExceeded` is set to `false` (default), **qs** will parse up to the specified `arrayLimit` and if the limit is exceeded, the array will instead be converted to an object with the index as the key + +To prevent array syntax (`a[]`, `a[0]`) from being parsed as arrays, set `parseArrays` to `false`. +Note that duplicate keys (e.g. `a=b&a=c`) may still produce arrays when `duplicates` is `'combine'` (the default). ```javascript var noParsingArrays = qs.parse('a[]=b', { parseArrays: false }); @@ -290,7 +341,8 @@ assert.deepEqual(arraysOfObjects, { a: ['b', 'c'] }) ### Parsing primitive/scalar values (numbers, booleans, null, etc) -By default, all values are parsed as strings. This behavior will not change and is explained in [issue #91](https://github.com/ljharb/qs/issues/91). +By default, all values are parsed as strings. +This behavior will not change and is explained in [issue #91](https://github.com/ljharb/qs/issues/91). ```javascript var primitiveValues = qs.parse('a=15&b=true&c=null'); @@ -373,16 +425,17 @@ var decoded = qs.parse('x=z', { decoder: function (str, defaultDecoder, charset, }}) ``` -Examples beyond this point will be shown as though the output is not URI encoded for clarity. Please note that the return values in these cases *will* be URI encoded during real usage. +Examples beyond this point will be shown as though the output is not URI encoded for clarity. +Please note that the return values in these cases *will* be URI encoded during real usage. -When arrays are stringified, by default they are given explicit indices: +When arrays are stringified, they follow the `arrayFormat` option, which defaults to `indices`: ```javascript qs.stringify({ a: ['b', 'c', 'd'] }); // 'a[0]=b&a[1]=c&a[2]=d' ``` -You may override this by setting the `indices` option to `false`: +You may override this by setting the `indices` option to `false`, or to be more explicit, the `arrayFormat` option to `repeat`: ```javascript qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false }); @@ -402,6 +455,8 @@ qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'comma' }) // 'a=b,c' ``` +Note: when using `arrayFormat` set to `'comma'`, you can also pass the `commaRoundTrip` option set to `true` or `false`, to append `[]` on single-item arrays, so that they can round trip through a parse. + When objects are stringified, by default they use bracket notation: ```javascript @@ -416,6 +471,20 @@ qs.stringify({ a: { b: { c: 'd', e: 'f' } } }, { allowDots: true }); // 'a.b.c=d&a.b.e=f' ``` +You may encode the dot notation in the keys of object with option `encodeDotInKeys` by setting it to `true`: +Note: it implies `allowDots`, so `stringify` will error if you set `decodeDotInKeys` to `true`, and `allowDots` to `false`. +Caveat: when `encodeValuesOnly` is `true` as well as `encodeDotInKeys`, only dots in keys and nothing else will be encoded. +```javascript +qs.stringify({ "name.obj": { "first": "John", "last": "Doe" } }, { allowDots: true, encodeDotInKeys: true }) +// 'name%252Eobj.first=John&name%252Eobj.last=Doe' +``` + +You may allow empty array values by setting the `allowEmptyArrays` option to `true`: +```javascript +qs.stringify({ foo: [], bar: 'baz' }, { allowEmptyArrays: true }); +// 'foo[]&bar=baz' +``` + Empty strings and null values will omit the value, but the equals sign (=) remains in place: ```javascript @@ -444,6 +513,12 @@ The query string may optionally be prepended with a question mark: assert.equal(qs.stringify({ a: 'b', c: 'd' }, { addQueryPrefix: true }), '?a=b&c=d'); ``` +Note that when the output is an empty string, the prefix will not be added: + +```javascript +assert.equal(qs.stringify({}, { addQueryPrefix: true }), ''); +``` + The delimiter may be overridden with stringify as well: ```javascript @@ -471,8 +546,8 @@ assert.equal(qs.stringify({ a: 'c', z: 'y', b : 'f' }, { sort: alphabeticalSort ``` Finally, you can use the `filter` option to restrict which keys will be included in the stringified output. -If you pass a function, it will be called for each key to obtain the replacement value. Otherwise, if you -pass an array, it will be used to select properties and array indices for stringification: +If you pass a function, it will be called for each key to obtain the replacement value. +Otherwise, if you pass an array, it will be used to select properties and array indices for stringification: ```javascript function filterFunc(prefix, value) { @@ -496,6 +571,44 @@ qs.stringify({ a: ['b', 'c', 'd'], e: 'f' }, { filter: ['a', 0, 2] }); // 'a[0]=b&a[2]=d' ``` +You could also use `filter` to inject custom serialization for user defined types. +Consider you're working with some api that expects query strings of the format for ranges: + +``` +https://domain.com/endpoint?range=30...70 +``` + +For which you model as: + +```javascript +class Range { + constructor(from, to) { + this.from = from; + this.to = to; + } +} +``` + +You could _inject_ a custom serializer to handle values of this type: + +```javascript +qs.stringify( + { + range: new Range(30, 70), + }, + { + filter: (prefix, value) => { + if (value instanceof Range) { + return `${value.from}...${value.to}`; + } + // serialize the usual way + return value; + }, + } +); +// range=30...70 +``` + ### Handling of `null` values By default, `null` values are treated like empty strings: @@ -505,7 +618,8 @@ var withNull = qs.stringify({ a: null, b: '' }); assert.equal(withNull, 'a=&b='); ``` -Parsing does not distinguish between parameters with and without equal signs. Both are converted to empty strings. +Parsing does not distinguish between parameters with and without equal signs. +Both are converted to empty strings. ```javascript var equalsInsensitive = qs.parse('a&b='); @@ -534,25 +648,21 @@ var nullsSkipped = qs.stringify({ a: 'b', c: null}, { skipNulls: true }); assert.equal(nullsSkipped, 'a=b'); ``` -If you're communicating with legacy systems, you can switch to `iso-8859-1` -using the `charset` option: +If you're communicating with legacy systems, you can switch to `iso-8859-1` using the `charset` option: ```javascript var iso = qs.stringify({ æ: 'æ' }, { charset: 'iso-8859-1' }); assert.equal(iso, '%E6=%E6'); ``` -Characters that don't exist in `iso-8859-1` will be converted to numeric -entities, similar to what browsers do: +Characters that don't exist in `iso-8859-1` will be converted to numeric entities, similar to what browsers do: ```javascript var numeric = qs.stringify({ a: '☺' }, { charset: 'iso-8859-1' }); assert.equal(numeric, 'a=%26%239786%3B'); ``` -You can use the `charsetSentinel` option to announce the character by -including an `utf8=✓` parameter with the proper encoding if the checkmark, -similar to what Ruby on Rails and others do when submitting forms. +You can use the `charsetSentinel` option to announce the character by including an `utf8=✓` parameter with the proper encoding if the checkmark, similar to what Ruby on Rails and others do when submitting forms. ```javascript var sentinel = qs.stringify({ a: '☺' }, { charsetSentinel: true }); @@ -564,8 +674,7 @@ assert.equal(isoSentinel, 'utf8=%26%2310003%3B&a=%E6'); ### Dealing with special character sets -By default the encoding and decoding of characters is done in `utf-8`, -and `iso-8859-1` support is also built in via the `charset` parameter. +By default the encoding and decoding of characters is done in `utf-8`, and `iso-8859-1` support is also built in via the `charset` parameter. If you wish to encode querystrings to a different character set (i.e. [Shift JIS](https://en.wikipedia.org/wiki/Shift_JIS)) you can use the @@ -604,7 +713,9 @@ Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/se Available as part of the Tidelift Subscription -The maintainers of qs and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/npm-qs?utm_source=npm-qs&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) +The maintainers of qs and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. +Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. +[Learn more.](https://tidelift.com/subscription/pkg/npm-qs?utm_source=npm-qs&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) [package-url]: https://npmjs.org/package/qs [npm-version-svg]: https://versionbadg.es/ljharb/qs.svg @@ -619,5 +730,11 @@ The maintainers of qs and thousands of other packages are working with Tidelift [downloads-url]: https://npm-stat.com/charts.html?package=qs [codecov-image]: https://codecov.io/gh/ljharb/qs/branch/main/graphs/badge.svg [codecov-url]: https://app.codecov.io/gh/ljharb/qs/ -[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/qs +[actions-image]: https://img.shields.io/github/check-runs/ljharb/qs/main [actions-url]: https://github.com/ljharb/qs/actions + +## Acknowledgements + +qs logo by [NUMI](https://github.com/numi-hq/open-design): + +[NUMI Logo](https://numi.tech/?ref=qs) diff --git a/food-ordering-app/server/node_modules/qs/dist/qs.js b/food-ordering-app/server/node_modules/qs/dist/qs.js index 94baf8ff7..d5eb51937 100644 --- a/food-ordering-app/server/node_modules/qs/dist/qs.js +++ b/food-ordering-app/server/node_modules/qs/dist/qs.js @@ -1,2044 +1,141 @@ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Qs = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i -1) { - return val.split(','); - } - - return val; -}; - -// This is what browsers will submit when the ✓ character occurs in an -// application/x-www-form-urlencoded body and the encoding of the page containing -// the form is iso-8859-1, or when the submitted form has an accept-charset -// attribute of iso-8859-1. Presumably also with other charsets that do not contain -// the ✓ character, such as us-ascii. -var isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓') - -// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded. -var charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓') - -var parseValues = function parseQueryStringValues(str, options) { - var obj = {}; - var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str; - var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit; - var parts = cleanStr.split(options.delimiter, limit); - var skipIndex = -1; // Keep track of where the utf8 sentinel was found - var i; - - var charset = options.charset; - if (options.charsetSentinel) { - for (i = 0; i < parts.length; ++i) { - if (parts[i].indexOf('utf8=') === 0) { - if (parts[i] === charsetSentinel) { - charset = 'utf-8'; - } else if (parts[i] === isoSentinel) { - charset = 'iso-8859-1'; - } - skipIndex = i; - i = parts.length; // The eslint settings do not allow break; - } - } - } - - for (i = 0; i < parts.length; ++i) { - if (i === skipIndex) { - continue; - } - var part = parts[i]; - - var bracketEqualsPos = part.indexOf(']='); - var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1; - - var key, val; - if (pos === -1) { - key = options.decoder(part, defaults.decoder, charset, 'key'); - val = options.strictNullHandling ? null : ''; - } else { - key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key'); - val = utils.maybeMap( - parseArrayValue(part.slice(pos + 1), options), - function (encodedVal) { - return options.decoder(encodedVal, defaults.decoder, charset, 'value'); - } - ); - } - - if (val && options.interpretNumericEntities && charset === 'iso-8859-1') { - val = interpretNumericEntities(val); - } - - if (part.indexOf('[]=') > -1) { - val = isArray(val) ? [val] : val; - } - - if (has.call(obj, key)) { - obj[key] = utils.combine(obj[key], val); - } else { - obj[key] = val; - } - } - - return obj; -}; - -var parseObject = function (chain, val, options, valuesParsed) { - var leaf = valuesParsed ? val : parseArrayValue(val, options); - - for (var i = chain.length - 1; i >= 0; --i) { - var obj; - var root = chain[i]; - - if (root === '[]' && options.parseArrays) { - obj = [].concat(leaf); - } else { - obj = options.plainObjects ? Object.create(null) : {}; - var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root; - var index = parseInt(cleanRoot, 10); - if (!options.parseArrays && cleanRoot === '') { - obj = { 0: leaf }; - } else if ( - !isNaN(index) - && root !== cleanRoot - && String(index) === cleanRoot - && index >= 0 - && (options.parseArrays && index <= options.arrayLimit) - ) { - obj = []; - obj[index] = leaf; - } else if (cleanRoot !== '__proto__') { - obj[cleanRoot] = leaf; - } - } - - leaf = obj; - } - - return leaf; -}; - -var parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) { - if (!givenKey) { - return; - } - - // Transform dot notation to bracket notation - var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, '[$1]') : givenKey; - - // The regex chunks - - var brackets = /(\[[^[\]]*])/; - var child = /(\[[^[\]]*])/g; - - // Get the parent - - var segment = options.depth > 0 && brackets.exec(key); - var parent = segment ? key.slice(0, segment.index) : key; - - // Stash the parent if it exists - - var keys = []; - if (parent) { - // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties - if (!options.plainObjects && has.call(Object.prototype, parent)) { - if (!options.allowPrototypes) { - return; - } - } - - keys.push(parent); - } - - // Loop through children appending to the array until we hit depth - - var i = 0; - while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) { - i += 1; - if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) { - if (!options.allowPrototypes) { - return; - } - } - keys.push(segment[1]); - } - - // If there's a remainder, just add whatever is left - - if (segment) { - keys.push('[' + key.slice(segment.index) + ']'); - } - - return parseObject(keys, val, options, valuesParsed); -}; - -var normalizeParseOptions = function normalizeParseOptions(opts) { - if (!opts) { - return defaults; - } - - if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') { - throw new TypeError('Decoder has to be a function.'); - } - - if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') { - throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined'); - } - var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset; - - return { - allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots, - allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes, - allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse, - arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit, - charset: charset, - charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel, - comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma, - decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder, - delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter, - // eslint-disable-next-line no-implicit-coercion, no-extra-parens - depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth, - ignoreQueryPrefix: opts.ignoreQueryPrefix === true, - interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities, - parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit, - parseArrays: opts.parseArrays !== false, - plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects, - strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling - }; -}; - -module.exports = function (str, opts) { - var options = normalizeParseOptions(opts); - - if (str === '' || str === null || typeof str === 'undefined') { - return options.plainObjects ? Object.create(null) : {}; - } - - var tempObj = typeof str === 'string' ? parseValues(str, options) : str; - var obj = options.plainObjects ? Object.create(null) : {}; - - // Iterate over the keys and setup the new object - - var keys = Object.keys(tempObj); - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string'); - obj = utils.merge(obj, newObj, options); - } - - if (options.allowSparse === true) { - return obj; - } - - return utils.compact(obj); -}; - -},{"./utils":5}],4:[function(require,module,exports){ -'use strict'; - -var getSideChannel = require('side-channel'); -var utils = require('./utils'); -var formats = require('./formats'); -var has = Object.prototype.hasOwnProperty; - -var arrayPrefixGenerators = { - brackets: function brackets(prefix) { - return prefix + '[]'; - }, - comma: 'comma', - indices: function indices(prefix, key) { - return prefix + '[' + key + ']'; - }, - repeat: function repeat(prefix) { - return prefix; - } -}; - -var isArray = Array.isArray; -var split = String.prototype.split; -var push = Array.prototype.push; -var pushToArray = function (arr, valueOrArray) { - push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]); -}; - -var toISO = Date.prototype.toISOString; - -var defaultFormat = formats['default']; -var defaults = { - addQueryPrefix: false, - allowDots: false, - charset: 'utf-8', - charsetSentinel: false, - delimiter: '&', - encode: true, - encoder: utils.encode, - encodeValuesOnly: false, - format: defaultFormat, - formatter: formats.formatters[defaultFormat], - // deprecated - indices: false, - serializeDate: function serializeDate(date) { - return toISO.call(date); - }, - skipNulls: false, - strictNullHandling: false -}; - -var isNonNullishPrimitive = function isNonNullishPrimitive(v) { - return typeof v === 'string' - || typeof v === 'number' - || typeof v === 'boolean' - || typeof v === 'symbol' - || typeof v === 'bigint'; -}; - -var sentinel = {}; - -var stringify = function stringify( - object, - prefix, - generateArrayPrefix, - strictNullHandling, - skipNulls, - encoder, - filter, - sort, - allowDots, - serializeDate, - format, - formatter, - encodeValuesOnly, - charset, - sideChannel -) { - var obj = object; - - var tmpSc = sideChannel; - var step = 0; - var findFlag = false; - while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) { - // Where object last appeared in the ref tree - var pos = tmpSc.get(object); - step += 1; - if (typeof pos !== 'undefined') { - if (pos === step) { - throw new RangeError('Cyclic object value'); - } else { - findFlag = true; // Break while - } - } - if (typeof tmpSc.get(sentinel) === 'undefined') { - step = 0; - } - } - - if (typeof filter === 'function') { - obj = filter(prefix, obj); - } else if (obj instanceof Date) { - obj = serializeDate(obj); - } else if (generateArrayPrefix === 'comma' && isArray(obj)) { - obj = utils.maybeMap(obj, function (value) { - if (value instanceof Date) { - return serializeDate(value); - } - return value; - }); - } - - if (obj === null) { - if (strictNullHandling) { - return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix; - } - - obj = ''; - } - - if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) { - if (encoder) { - var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format); - if (generateArrayPrefix === 'comma' && encodeValuesOnly) { - var valuesArray = split.call(String(obj), ','); - var valuesJoined = ''; - for (var i = 0; i < valuesArray.length; ++i) { - valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset, 'value', format)); - } - return [formatter(keyValue) + '=' + valuesJoined]; - } - return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))]; - } - return [formatter(prefix) + '=' + formatter(String(obj))]; - } - - var values = []; - - if (typeof obj === 'undefined') { - return values; - } - - var objKeys; - if (generateArrayPrefix === 'comma' && isArray(obj)) { - // we need to join elements in - objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }]; - } else if (isArray(filter)) { - objKeys = filter; - } else { - var keys = Object.keys(obj); - objKeys = sort ? keys.sort(sort) : keys; - } - - for (var j = 0; j < objKeys.length; ++j) { - var key = objKeys[j]; - var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key]; - - if (skipNulls && value === null) { - continue; - } - - var keyPrefix = isArray(obj) - ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(prefix, key) : prefix - : prefix + (allowDots ? '.' + key : '[' + key + ']'); - - sideChannel.set(object, step); - var valueSideChannel = getSideChannel(); - valueSideChannel.set(sentinel, sideChannel); - pushToArray(values, stringify( - value, - keyPrefix, - generateArrayPrefix, - strictNullHandling, - skipNulls, - encoder, - filter, - sort, - allowDots, - serializeDate, - format, - formatter, - encodeValuesOnly, - charset, - valueSideChannel - )); - } - - return values; -}; - -var normalizeStringifyOptions = function normalizeStringifyOptions(opts) { - if (!opts) { - return defaults; - } - - if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') { - throw new TypeError('Encoder has to be a function.'); - } - - var charset = opts.charset || defaults.charset; - if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') { - throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined'); - } - - var format = formats['default']; - if (typeof opts.format !== 'undefined') { - if (!has.call(formats.formatters, opts.format)) { - throw new TypeError('Unknown format option provided.'); - } - format = opts.format; - } - var formatter = formats.formatters[format]; - - var filter = defaults.filter; - if (typeof opts.filter === 'function' || isArray(opts.filter)) { - filter = opts.filter; - } - - return { - addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix, - allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots, - charset: charset, - charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel, - delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter, - encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode, - encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder, - encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly, - filter: filter, - format: format, - formatter: formatter, - serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate, - skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls, - sort: typeof opts.sort === 'function' ? opts.sort : null, - strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling - }; -}; - -module.exports = function (object, opts) { - var obj = object; - var options = normalizeStringifyOptions(opts); - - var objKeys; - var filter; - - if (typeof options.filter === 'function') { - filter = options.filter; - obj = filter('', obj); - } else if (isArray(options.filter)) { - filter = options.filter; - objKeys = filter; - } - - var keys = []; - - if (typeof obj !== 'object' || obj === null) { - return ''; - } - - var arrayFormat; - if (opts && opts.arrayFormat in arrayPrefixGenerators) { - arrayFormat = opts.arrayFormat; - } else if (opts && 'indices' in opts) { - arrayFormat = opts.indices ? 'indices' : 'repeat'; - } else { - arrayFormat = 'indices'; - } - - var generateArrayPrefix = arrayPrefixGenerators[arrayFormat]; - - if (!objKeys) { - objKeys = Object.keys(obj); - } - - if (options.sort) { - objKeys.sort(options.sort); - } - - var sideChannel = getSideChannel(); - for (var i = 0; i < objKeys.length; ++i) { - var key = objKeys[i]; - - if (options.skipNulls && obj[key] === null) { - continue; - } - pushToArray(keys, stringify( - obj[key], - key, - generateArrayPrefix, - options.strictNullHandling, - options.skipNulls, - options.encode ? options.encoder : null, - options.filter, - options.sort, - options.allowDots, - options.serializeDate, - options.format, - options.formatter, - options.encodeValuesOnly, - options.charset, - sideChannel - )); - } - - var joined = keys.join(options.delimiter); - var prefix = options.addQueryPrefix === true ? '?' : ''; - - if (options.charsetSentinel) { - if (options.charset === 'iso-8859-1') { - // encodeURIComponent('✓'), the "numeric entity" representation of a checkmark - prefix += 'utf8=%26%2310003%3B&'; - } else { - // encodeURIComponent('✓') - prefix += 'utf8=%E2%9C%93&'; - } - } - - return joined.length > 0 ? prefix + joined : ''; -}; - -},{"./formats":1,"./utils":5,"side-channel":16}],5:[function(require,module,exports){ -'use strict'; - -var formats = require('./formats'); - -var has = Object.prototype.hasOwnProperty; -var isArray = Array.isArray; - -var hexTable = (function () { - var array = []; - for (var i = 0; i < 256; ++i) { - array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase()); - } - - return array; -}()); - -var compactQueue = function compactQueue(queue) { - while (queue.length > 1) { - var item = queue.pop(); - var obj = item.obj[item.prop]; - - if (isArray(obj)) { - var compacted = []; - - for (var j = 0; j < obj.length; ++j) { - if (typeof obj[j] !== 'undefined') { - compacted.push(obj[j]); - } - } - - item.obj[item.prop] = compacted; - } - } -}; - -var arrayToObject = function arrayToObject(source, options) { - var obj = options && options.plainObjects ? Object.create(null) : {}; - for (var i = 0; i < source.length; ++i) { - if (typeof source[i] !== 'undefined') { - obj[i] = source[i]; - } - } - - return obj; -}; - -var merge = function merge(target, source, options) { - /* eslint no-param-reassign: 0 */ - if (!source) { - return target; - } +"use strict";var stringify=require(4),parse=require(3),formats=require(1);module.exports={formats:formats,parse:parse,stringify:stringify}; - if (typeof source !== 'object') { - if (isArray(target)) { - target.push(source); - } else if (target && typeof target === 'object') { - if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) { - target[source] = true; - } - } else { - return [target, source]; - } +},{"1":1,"3":3,"4":4}],3:[function(require,module,exports){ +"use strict";var utils=require(5),has=Object.prototype.hasOwnProperty,isArray=Array.isArray,defaults={allowDots:!1,allowEmptyArrays:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decodeDotInKeys:!1,decoder:utils.decode,delimiter:"&",depth:5,duplicates:"combine",ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictDepth:!1,strictNullHandling:!1,throwOnLimitExceeded:!1},interpretNumericEntities=function(e){return e.replace(/&#(\d+);/g,function(e,t){return String.fromCharCode(parseInt(t,10))})},parseArrayValue=function(e,t,r){if(e&&"string"==typeof e&&t.comma&&e.indexOf(",")>-1)return e.split(",");if(t.throwOnLimitExceeded&&r>=t.arrayLimit)throw new RangeError("Array limit exceeded. Only "+t.arrayLimit+" element"+(1===t.arrayLimit?"":"s")+" allowed in an array.");return e},isoSentinel="utf8=%26%2310003%3B",charsetSentinel="utf8=%E2%9C%93",parseValues=function parseQueryStringValues(e,t){var r={__proto__:null},i=t.ignoreQueryPrefix?e.replace(/^\?/,""):e;i=i.replace(/%5B/gi,"[").replace(/%5D/gi,"]");var a=t.parameterLimit===1/0?void 0:t.parameterLimit,o=i.split(t.delimiter,t.throwOnLimitExceeded?a+1:a);if(t.throwOnLimitExceeded&&o.length>a)throw new RangeError("Parameter limit exceeded. Only "+a+" parameter"+(1===a?"":"s")+" allowed.");var l,n=-1,s=t.charset;if(t.charsetSentinel)for(l=0;l-1&&(p=isArray(p)?[p]:p),t.comma&&isArray(p)&&p.length>t.arrayLimit){if(t.throwOnLimitExceeded)throw new RangeError("Array limit exceeded. Only "+t.arrayLimit+" element"+(1===t.arrayLimit?"":"s")+" allowed in an array.");p=utils.combine([],p,t.arrayLimit,t.plainObjects)}if(null!==d){var f=has.call(r,d);f&&"combine"===t.duplicates?r[d]=utils.combine(r[d],p,t.arrayLimit,t.plainObjects):f&&"last"!==t.duplicates||(r[d]=p)}}return r},parseObject=function(e,t,r,i){var a=0;if(e.length>0&&"[]"===e[e.length-1]){var o=e.slice(0,-1).join("");a=Array.isArray(t)&&t[o]?t[o].length:0}for(var l=i?t:parseArrayValue(t,r,a),n=e.length-1;n>=0;--n){var s,d=e[n];if("[]"===d&&r.parseArrays)s=utils.isOverflow(l)?l:r.allowEmptyArrays&&(""===l||r.strictNullHandling&&null===l)?[]:utils.combine([],l,r.arrayLimit,r.plainObjects);else{s=r.plainObjects?{__proto__:null}:{};var p="["===d.charAt(0)&&"]"===d.charAt(d.length-1)?d.slice(1,-1):d,c=r.decodeDotInKeys?p.replace(/%2E/g,"."):p,u=parseInt(c,10),y=!isNaN(u)&&d!==c&&String(u)===c&&u>=0&&r.parseArrays;if(r.parseArrays||""!==c)if(y&&u0?g.join(",")||null:void 0}];else if(isArray(f))S=f;else{var N=Object.keys(g);S=u?N.sort(u):N}var T=l?String(r).replace(/\./g,"%2E"):String(r),O=o&&isArray(g)&&1===g.length?T+"[]":T;if(a&&isArray(g)&&0===g.length)return O+"[]";for(var k=0;k0?c+y:""}; - if (!target || typeof target !== 'object') { - return [target].concat(source); - } +},{"1":1,"46":46,"5":5}],5:[function(require,module,exports){ +"use strict";var formats=require(1),getSideChannel=require(46),has=Object.prototype.hasOwnProperty,isArray=Array.isArray,overflowChannel=getSideChannel(),markOverflow=function markOverflow(e,r){return overflowChannel.set(e,r),e},isOverflow=function isOverflow(e){return overflowChannel.has(e)},getMaxIndex=function getMaxIndex(e){return overflowChannel.get(e)},setMaxIndex=function setMaxIndex(e,r){overflowChannel.set(e,r)},hexTable=function(){for(var e=[],r=0;r<256;++r)e[e.length]="%"+((r<16?"0":"")+r.toString(16)).toUpperCase();return e}(),compactQueue=function compactQueue(e){for(;e.length>1;){var r=e.pop(),t=r.obj[r.prop];if(isArray(t)){for(var n=[],o=0;ot.arrayLimit)return markOverflow(arrayToObject(e.concat(r),t),n);e[n]=r}else{if(!e||"object"!=typeof e)return[e,r];if(isOverflow(e)){var o=getMaxIndex(e)+1;e[o]=r,setMaxIndex(e,o)}else(t&&(t.plainObjects||t.allowPrototypes)||!has.call(Object.prototype,r))&&(e[r]=!0)}return e}if(!e||"object"!=typeof e){if(isOverflow(r)){for(var a=Object.keys(r),i=t&&t.plainObjects?{__proto__:null,0:e}:{0:e},c=0;ct.arrayLimit?markOverflow(arrayToObject(l,t),l.length-1):l}var f=e;return isArray(e)&&!isArray(r)&&(f=arrayToObject(e,t)),isArray(e)&&isArray(r)?(r.forEach(function(r,n){if(has.call(e,n)){var o=e[n];o&&"object"==typeof o&&r&&"object"==typeof r?e[n]=merge(o,r,t):e[e.length]=r}else e[n]=r}),e):Object.keys(r).reduce(function(e,n){var o=r[n];if(has.call(e,n)?e[n]=merge(e[n],o,t):e[n]=o,isOverflow(r)&&!isOverflow(e)&&markOverflow(e,getMaxIndex(r)),isOverflow(e)){var a=parseInt(n,10);String(a)===n&&a>=0&&a>getMaxIndex(e)&&setMaxIndex(e,a)}return e},f)},assign=function assignSingleSource(e,r){return Object.keys(r).reduce(function(e,t){return e[t]=r[t],e},e)},decode=function(e,r,t){var n=e.replace(/\+/g," ");if("iso-8859-1"===t)return n.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(n)}catch(e){return n}},limit=1024,encode=function encode(e,r,t,n,o){if(0===e.length)return e;var a=e;if("symbol"==typeof e?a=Symbol.prototype.toString.call(e):"string"!=typeof e&&(a=String(e)),"iso-8859-1"===t)return escape(a).replace(/%u[0-9a-f]{4}/gi,function(e){return"%26%23"+parseInt(e.slice(2),16)+"%3B"});for(var i="",c=0;c=limit?a.slice(c,c+limit):a,f=[],s=0;s=48&&u<=57||u>=65&&u<=90||u>=97&&u<=122||o===formats.RFC1738&&(40===u||41===u)?f[f.length]=l.charAt(s):u<128?f[f.length]=hexTable[u]:u<2048?f[f.length]=hexTable[192|u>>6]+hexTable[128|63&u]:u<55296||u>=57344?f[f.length]=hexTable[224|u>>12]+hexTable[128|u>>6&63]+hexTable[128|63&u]:(s+=1,u=65536+((1023&u)<<10|1023&l.charCodeAt(s)),f[f.length]=hexTable[240|u>>18]+hexTable[128|u>>12&63]+hexTable[128|u>>6&63]+hexTable[128|63&u])}i+=f.join("")}return i},compact=function compact(e){for(var r=[{obj:{o:e},prop:"o"}],t=[],n=0;nt?markOverflow(arrayToObject(a,{plainObjects:n}),a.length-1):a},maybeMap=function maybeMap(e,r){if(isArray(e)){for(var t=[],n=0;n= 0x30 && c <= 0x39) // 0-9 - || (c >= 0x41 && c <= 0x5A) // a-z - || (c >= 0x61 && c <= 0x7A) // A-Z - || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( ) - ) { - out += string.charAt(i); - continue; - } - - if (c < 0x80) { - out = out + hexTable[c]; - continue; - } - - if (c < 0x800) { - out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]); - continue; - } - - if (c < 0xD800 || c >= 0xE000) { - out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]); - continue; - } - - i += 1; - c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF)); - /* eslint operator-linebreak: [2, "before"] */ - out += hexTable[0xF0 | (c >> 18)] - + hexTable[0x80 | ((c >> 12) & 0x3F)] - + hexTable[0x80 | ((c >> 6) & 0x3F)] - + hexTable[0x80 | (c & 0x3F)]; - } - - return out; -}; - -var compact = function compact(value) { - var queue = [{ obj: { o: value }, prop: 'o' }]; - var refs = []; - - for (var i = 0; i < queue.length; ++i) { - var item = queue[i]; - var obj = item.obj[item.prop]; - - var keys = Object.keys(obj); - for (var j = 0; j < keys.length; ++j) { - var key = keys[j]; - var val = obj[key]; - if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) { - queue.push({ obj: obj, prop: key }); - refs.push(val); - } - } - } - - compactQueue(queue); - - return value; -}; - -var isRegExp = function isRegExp(obj) { - return Object.prototype.toString.call(obj) === '[object RegExp]'; -}; - -var isBuffer = function isBuffer(obj) { - if (!obj || typeof obj !== 'object') { - return false; - } - - return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj)); -}; - -var combine = function combine(a, b) { - return [].concat(a, b); -}; - -var maybeMap = function maybeMap(val, fn) { - if (isArray(val)) { - var mapped = []; - for (var i = 0; i < val.length; i += 1) { - mapped.push(fn(val[i])); - } - return mapped; - } - return fn(val); -}; - -module.exports = { - arrayToObject: arrayToObject, - assign: assign, - combine: combine, - compact: compact, - decode: decode, - encode: encode, - isBuffer: isBuffer, - isRegExp: isRegExp, - maybeMap: maybeMap, - merge: merge -}; - -},{"./formats":1}],6:[function(require,module,exports){ +},{"20":20,"42":42,"43":43,"44":44,"45":45}],6:[function(require,module,exports){ },{}],7:[function(require,module,exports){ -'use strict'; - -var GetIntrinsic = require('get-intrinsic'); +"use strict";var bind=require(24),$apply=require(8),$call=require(9),$reflectApply=require(11);module.exports=$reflectApply||bind.call($call,$apply); -var callBind = require('./'); +},{"11":11,"24":24,"8":8,"9":9}],9:[function(require,module,exports){ +"use strict";module.exports=Function.prototype.call; -var $indexOf = callBind(GetIntrinsic('String.prototype.indexOf')); +},{}],8:[function(require,module,exports){ +"use strict";module.exports=Function.prototype.apply; -module.exports = function callBoundIntrinsic(name, allowMissing) { - var intrinsic = GetIntrinsic(name, !!allowMissing); - if (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) { - return callBind(intrinsic); - } - return intrinsic; -}; +},{}],24:[function(require,module,exports){ +"use strict";var implementation=require(23);module.exports=Function.prototype.bind||implementation; -},{"./":8,"get-intrinsic":11}],8:[function(require,module,exports){ -'use strict'; - -var bind = require('function-bind'); -var GetIntrinsic = require('get-intrinsic'); - -var $apply = GetIntrinsic('%Function.prototype.apply%'); -var $call = GetIntrinsic('%Function.prototype.call%'); -var $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply); - -var $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true); -var $defineProperty = GetIntrinsic('%Object.defineProperty%', true); -var $max = GetIntrinsic('%Math.max%'); - -if ($defineProperty) { - try { - $defineProperty({}, 'a', { value: 1 }); - } catch (e) { - // IE 8 has a broken defineProperty - $defineProperty = null; - } -} - -module.exports = function callBind(originalFunction) { - var func = $reflectApply(bind, $call, arguments); - if ($gOPD && $defineProperty) { - var desc = $gOPD(func, 'length'); - if (desc.configurable) { - // original length, plus the receiver, minus any additional arguments (after the receiver) - $defineProperty( - func, - 'length', - { value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) } - ); - } - } - return func; -}; - -var applyBind = function applyBind() { - return $reflectApply(bind, $apply, arguments); -}; - -if ($defineProperty) { - $defineProperty(module.exports, 'apply', { value: applyBind }); -} else { - module.exports.apply = applyBind; -} - -},{"function-bind":10,"get-intrinsic":11}],9:[function(require,module,exports){ -'use strict'; - -/* eslint no-invalid-this: 1 */ - -var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible '; -var slice = Array.prototype.slice; -var toStr = Object.prototype.toString; -var funcType = '[object Function]'; - -module.exports = function bind(that) { - var target = this; - if (typeof target !== 'function' || toStr.call(target) !== funcType) { - throw new TypeError(ERROR_MESSAGE + target); - } - var args = slice.call(arguments, 1); - - var bound; - var binder = function () { - if (this instanceof bound) { - var result = target.apply( - this, - args.concat(slice.call(arguments)) - ); - if (Object(result) === result) { - return result; - } - return this; - } else { - return target.apply( - that, - args.concat(slice.call(arguments)) - ); - } - }; - - var boundLength = Math.max(0, target.length - args.length); - var boundArgs = []; - for (var i = 0; i < boundLength; i++) { - boundArgs.push('$' + i); - } - - bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder); - - if (target.prototype) { - var Empty = function Empty() {}; - Empty.prototype = target.prototype; - bound.prototype = new Empty(); - Empty.prototype = null; - } - - return bound; -}; +},{"23":23}],11:[function(require,module,exports){ +"use strict";module.exports="undefined"!=typeof Reflect&&Reflect&&Reflect.apply; },{}],10:[function(require,module,exports){ -'use strict'; - -var implementation = require('./implementation'); - -module.exports = Function.prototype.bind || implementation; - -},{"./implementation":9}],11:[function(require,module,exports){ -'use strict'; - -var undefined; - -var $SyntaxError = SyntaxError; -var $Function = Function; -var $TypeError = TypeError; - -// eslint-disable-next-line consistent-return -var getEvalledConstructor = function (expressionSyntax) { - try { - return $Function('"use strict"; return (' + expressionSyntax + ').constructor;')(); - } catch (e) {} -}; - -var $gOPD = Object.getOwnPropertyDescriptor; -if ($gOPD) { - try { - $gOPD({}, ''); - } catch (e) { - $gOPD = null; // this is IE 8, which has a broken gOPD - } -} - -var throwTypeError = function () { - throw new $TypeError(); -}; -var ThrowTypeError = $gOPD - ? (function () { - try { - // eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties - arguments.callee; // IE 8 does not throw here - return throwTypeError; - } catch (calleeThrows) { - try { - // IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '') - return $gOPD(arguments, 'callee').get; - } catch (gOPDthrows) { - return throwTypeError; - } - } - }()) - : throwTypeError; - -var hasSymbols = require('has-symbols')(); - -var getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto - -var needsEval = {}; - -var TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array); - -var INTRINSICS = { - '%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError, - '%Array%': Array, - '%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer, - '%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined, - '%AsyncFromSyncIteratorPrototype%': undefined, - '%AsyncFunction%': needsEval, - '%AsyncGenerator%': needsEval, - '%AsyncGeneratorFunction%': needsEval, - '%AsyncIteratorPrototype%': needsEval, - '%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics, - '%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt, - '%Boolean%': Boolean, - '%DataView%': typeof DataView === 'undefined' ? undefined : DataView, - '%Date%': Date, - '%decodeURI%': decodeURI, - '%decodeURIComponent%': decodeURIComponent, - '%encodeURI%': encodeURI, - '%encodeURIComponent%': encodeURIComponent, - '%Error%': Error, - '%eval%': eval, // eslint-disable-line no-eval - '%EvalError%': EvalError, - '%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array, - '%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array, - '%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry, - '%Function%': $Function, - '%GeneratorFunction%': needsEval, - '%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array, - '%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array, - '%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array, - '%isFinite%': isFinite, - '%isNaN%': isNaN, - '%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined, - '%JSON%': typeof JSON === 'object' ? JSON : undefined, - '%Map%': typeof Map === 'undefined' ? undefined : Map, - '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()), - '%Math%': Math, - '%Number%': Number, - '%Object%': Object, - '%parseFloat%': parseFloat, - '%parseInt%': parseInt, - '%Promise%': typeof Promise === 'undefined' ? undefined : Promise, - '%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy, - '%RangeError%': RangeError, - '%ReferenceError%': ReferenceError, - '%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect, - '%RegExp%': RegExp, - '%Set%': typeof Set === 'undefined' ? undefined : Set, - '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()), - '%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer, - '%String%': String, - '%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined, - '%Symbol%': hasSymbols ? Symbol : undefined, - '%SyntaxError%': $SyntaxError, - '%ThrowTypeError%': ThrowTypeError, - '%TypedArray%': TypedArray, - '%TypeError%': $TypeError, - '%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array, - '%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray, - '%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array, - '%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array, - '%URIError%': URIError, - '%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap, - '%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef, - '%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet -}; - -var doEval = function doEval(name) { - var value; - if (name === '%AsyncFunction%') { - value = getEvalledConstructor('async function () {}'); - } else if (name === '%GeneratorFunction%') { - value = getEvalledConstructor('function* () {}'); - } else if (name === '%AsyncGeneratorFunction%') { - value = getEvalledConstructor('async function* () {}'); - } else if (name === '%AsyncGenerator%') { - var fn = doEval('%AsyncGeneratorFunction%'); - if (fn) { - value = fn.prototype; - } - } else if (name === '%AsyncIteratorPrototype%') { - var gen = doEval('%AsyncGenerator%'); - if (gen) { - value = getProto(gen.prototype); - } - } - - INTRINSICS[name] = value; - - return value; -}; - -var LEGACY_ALIASES = { - '%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'], - '%ArrayPrototype%': ['Array', 'prototype'], - '%ArrayProto_entries%': ['Array', 'prototype', 'entries'], - '%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'], - '%ArrayProto_keys%': ['Array', 'prototype', 'keys'], - '%ArrayProto_values%': ['Array', 'prototype', 'values'], - '%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'], - '%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'], - '%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'], - '%BooleanPrototype%': ['Boolean', 'prototype'], - '%DataViewPrototype%': ['DataView', 'prototype'], - '%DatePrototype%': ['Date', 'prototype'], - '%ErrorPrototype%': ['Error', 'prototype'], - '%EvalErrorPrototype%': ['EvalError', 'prototype'], - '%Float32ArrayPrototype%': ['Float32Array', 'prototype'], - '%Float64ArrayPrototype%': ['Float64Array', 'prototype'], - '%FunctionPrototype%': ['Function', 'prototype'], - '%Generator%': ['GeneratorFunction', 'prototype'], - '%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'], - '%Int8ArrayPrototype%': ['Int8Array', 'prototype'], - '%Int16ArrayPrototype%': ['Int16Array', 'prototype'], - '%Int32ArrayPrototype%': ['Int32Array', 'prototype'], - '%JSONParse%': ['JSON', 'parse'], - '%JSONStringify%': ['JSON', 'stringify'], - '%MapPrototype%': ['Map', 'prototype'], - '%NumberPrototype%': ['Number', 'prototype'], - '%ObjectPrototype%': ['Object', 'prototype'], - '%ObjProto_toString%': ['Object', 'prototype', 'toString'], - '%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'], - '%PromisePrototype%': ['Promise', 'prototype'], - '%PromiseProto_then%': ['Promise', 'prototype', 'then'], - '%Promise_all%': ['Promise', 'all'], - '%Promise_reject%': ['Promise', 'reject'], - '%Promise_resolve%': ['Promise', 'resolve'], - '%RangeErrorPrototype%': ['RangeError', 'prototype'], - '%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'], - '%RegExpPrototype%': ['RegExp', 'prototype'], - '%SetPrototype%': ['Set', 'prototype'], - '%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'], - '%StringPrototype%': ['String', 'prototype'], - '%SymbolPrototype%': ['Symbol', 'prototype'], - '%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'], - '%TypedArrayPrototype%': ['TypedArray', 'prototype'], - '%TypeErrorPrototype%': ['TypeError', 'prototype'], - '%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'], - '%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'], - '%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'], - '%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'], - '%URIErrorPrototype%': ['URIError', 'prototype'], - '%WeakMapPrototype%': ['WeakMap', 'prototype'], - '%WeakSetPrototype%': ['WeakSet', 'prototype'] -}; - -var bind = require('function-bind'); -var hasOwn = require('has'); -var $concat = bind.call(Function.call, Array.prototype.concat); -var $spliceApply = bind.call(Function.apply, Array.prototype.splice); -var $replace = bind.call(Function.call, String.prototype.replace); -var $strSlice = bind.call(Function.call, String.prototype.slice); - -/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */ -var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g; -var reEscapeChar = /\\(\\)?/g; /** Used to match backslashes in property paths. */ -var stringToPath = function stringToPath(string) { - var first = $strSlice(string, 0, 1); - var last = $strSlice(string, -1); - if (first === '%' && last !== '%') { - throw new $SyntaxError('invalid intrinsic syntax, expected closing `%`'); - } else if (last === '%' && first !== '%') { - throw new $SyntaxError('invalid intrinsic syntax, expected opening `%`'); - } - var result = []; - $replace(string, rePropName, function (match, number, quote, subString) { - result[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match; - }); - return result; -}; -/* end adaptation */ - -var getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) { - var intrinsicName = name; - var alias; - if (hasOwn(LEGACY_ALIASES, intrinsicName)) { - alias = LEGACY_ALIASES[intrinsicName]; - intrinsicName = '%' + alias[0] + '%'; - } - - if (hasOwn(INTRINSICS, intrinsicName)) { - var value = INTRINSICS[intrinsicName]; - if (value === needsEval) { - value = doEval(intrinsicName); - } - if (typeof value === 'undefined' && !allowMissing) { - throw new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!'); - } - - return { - alias: alias, - name: intrinsicName, - value: value - }; - } - - throw new $SyntaxError('intrinsic ' + name + ' does not exist!'); -}; - -module.exports = function GetIntrinsic(name, allowMissing) { - if (typeof name !== 'string' || name.length === 0) { - throw new $TypeError('intrinsic name must be a non-empty string'); - } - if (arguments.length > 1 && typeof allowMissing !== 'boolean') { - throw new $TypeError('"allowMissing" argument must be a boolean'); - } - - var parts = stringToPath(name); - var intrinsicBaseName = parts.length > 0 ? parts[0] : ''; - - var intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing); - var intrinsicRealName = intrinsic.name; - var value = intrinsic.value; - var skipFurtherCaching = false; - - var alias = intrinsic.alias; - if (alias) { - intrinsicBaseName = alias[0]; - $spliceApply(parts, $concat([0, 1], alias)); - } - - for (var i = 1, isOwn = true; i < parts.length; i += 1) { - var part = parts[i]; - var first = $strSlice(part, 0, 1); - var last = $strSlice(part, -1); - if ( - ( - (first === '"' || first === "'" || first === '`') - || (last === '"' || last === "'" || last === '`') - ) - && first !== last - ) { - throw new $SyntaxError('property names with quotes must have matching quotes'); - } - if (part === 'constructor' || !isOwn) { - skipFurtherCaching = true; - } - - intrinsicBaseName += '.' + part; - intrinsicRealName = '%' + intrinsicBaseName + '%'; - - if (hasOwn(INTRINSICS, intrinsicRealName)) { - value = INTRINSICS[intrinsicRealName]; - } else if (value != null) { - if (!(part in value)) { - if (!allowMissing) { - throw new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.'); - } - return void undefined; - } - if ($gOPD && (i + 1) >= parts.length) { - var desc = $gOPD(value, part); - isOwn = !!desc; - - // By convention, when a data property is converted to an accessor - // property to emulate a data property that does not suffer from - // the override mistake, that accessor's getter is marked with - // an `originalValue` property. Here, when we detect this, we - // uphold the illusion by pretending to see that original data - // property, i.e., returning the value rather than the getter - // itself. - if (isOwn && 'get' in desc && !('originalValue' in desc.get)) { - value = desc.get; - } else { - value = value[part]; - } - } else { - isOwn = hasOwn(value, part); - value = value[part]; - } - - if (isOwn && !skipFurtherCaching) { - INTRINSICS[intrinsicRealName] = value; - } - } - } - return value; -}; - -},{"function-bind":10,"has":14,"has-symbols":12}],12:[function(require,module,exports){ -'use strict'; - -var origSymbol = typeof Symbol !== 'undefined' && Symbol; -var hasSymbolSham = require('./shams'); - -module.exports = function hasNativeSymbols() { - if (typeof origSymbol !== 'function') { return false; } - if (typeof Symbol !== 'function') { return false; } - if (typeof origSymbol('foo') !== 'symbol') { return false; } - if (typeof Symbol('bar') !== 'symbol') { return false; } - - return hasSymbolSham(); -}; - -},{"./shams":13}],13:[function(require,module,exports){ -'use strict'; - -/* eslint complexity: [2, 18], max-statements: [2, 33] */ -module.exports = function hasSymbols() { - if (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; } - if (typeof Symbol.iterator === 'symbol') { return true; } - - var obj = {}; - var sym = Symbol('test'); - var symObj = Object(sym); - if (typeof sym === 'string') { return false; } - - if (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; } - if (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; } - - // temp disabled per https://github.com/ljharb/object.assign/issues/17 - // if (sym instanceof Symbol) { return false; } - // temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4 - // if (!(symObj instanceof Symbol)) { return false; } - - // if (typeof Symbol.prototype.toString !== 'function') { return false; } - // if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; } - - var symVal = 42; - obj[sym] = symVal; - for (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop - if (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; } - - if (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; } - - var syms = Object.getOwnPropertySymbols(obj); - if (syms.length !== 1 || syms[0] !== sym) { return false; } - - if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; } - - if (typeof Object.getOwnPropertyDescriptor === 'function') { - var descriptor = Object.getOwnPropertyDescriptor(obj, sym); - if (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; } - } - - return true; -}; - -},{}],14:[function(require,module,exports){ -'use strict'; - -var bind = require('function-bind'); - -module.exports = bind.call(Function.call, Object.prototype.hasOwnProperty); - -},{"function-bind":10}],15:[function(require,module,exports){ -var hasMap = typeof Map === 'function' && Map.prototype; -var mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null; -var mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null; -var mapForEach = hasMap && Map.prototype.forEach; -var hasSet = typeof Set === 'function' && Set.prototype; -var setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null; -var setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null; -var setForEach = hasSet && Set.prototype.forEach; -var hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype; -var weakMapHas = hasWeakMap ? WeakMap.prototype.has : null; -var hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype; -var weakSetHas = hasWeakSet ? WeakSet.prototype.has : null; -var hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype; -var weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null; -var booleanValueOf = Boolean.prototype.valueOf; -var objectToString = Object.prototype.toString; -var functionToString = Function.prototype.toString; -var $match = String.prototype.match; -var $slice = String.prototype.slice; -var $replace = String.prototype.replace; -var $toUpperCase = String.prototype.toUpperCase; -var $toLowerCase = String.prototype.toLowerCase; -var $test = RegExp.prototype.test; -var $concat = Array.prototype.concat; -var $join = Array.prototype.join; -var $arrSlice = Array.prototype.slice; -var $floor = Math.floor; -var bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null; -var gOPS = Object.getOwnPropertySymbols; -var symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null; -var hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object'; -// ie, `has-tostringtag/shams -var toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol') - ? Symbol.toStringTag - : null; -var isEnumerable = Object.prototype.propertyIsEnumerable; - -var gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || ( - [].__proto__ === Array.prototype // eslint-disable-line no-proto - ? function (O) { - return O.__proto__; // eslint-disable-line no-proto - } - : null -); - -function addNumericSeparator(num, str) { - if ( - num === Infinity - || num === -Infinity - || num !== num - || (num && num > -1000 && num < 1000) - || $test.call(/e/, str) - ) { - return str; - } - var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g; - if (typeof num === 'number') { - var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num) - if (int !== num) { - var intStr = String(int); - var dec = $slice.call(str, intStr.length + 1); - return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, ''); - } - } - return $replace.call(str, sepRegex, '$&_'); -} - -var inspectCustom = require('./util.inspect').custom; -var inspectSymbol = inspectCustom && isSymbol(inspectCustom) ? inspectCustom : null; - -module.exports = function inspect_(obj, options, depth, seen) { - var opts = options || {}; - - if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) { - throw new TypeError('option "quoteStyle" must be "single" or "double"'); - } - if ( - has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number' - ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity - : opts.maxStringLength !== null - ) - ) { - throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`'); - } - var customInspect = has(opts, 'customInspect') ? opts.customInspect : true; - if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') { - throw new TypeError('option "customInspect", if provided, must be `true`, `false`, or `\'symbol\'`'); - } - - if ( - has(opts, 'indent') - && opts.indent !== null - && opts.indent !== '\t' - && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0) - ) { - throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`'); - } - if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') { - throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`'); - } - var numericSeparator = opts.numericSeparator; - - if (typeof obj === 'undefined') { - return 'undefined'; - } - if (obj === null) { - return 'null'; - } - if (typeof obj === 'boolean') { - return obj ? 'true' : 'false'; - } - - if (typeof obj === 'string') { - return inspectString(obj, opts); - } - if (typeof obj === 'number') { - if (obj === 0) { - return Infinity / obj > 0 ? '0' : '-0'; - } - var str = String(obj); - return numericSeparator ? addNumericSeparator(obj, str) : str; - } - if (typeof obj === 'bigint') { - var bigIntStr = String(obj) + 'n'; - return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr; - } - - var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth; - if (typeof depth === 'undefined') { depth = 0; } - if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') { - return isArray(obj) ? '[Array]' : '[Object]'; - } - - var indent = getIndent(opts, depth); - - if (typeof seen === 'undefined') { - seen = []; - } else if (indexOf(seen, obj) >= 0) { - return '[Circular]'; - } - - function inspect(value, from, noIndent) { - if (from) { - seen = $arrSlice.call(seen); - seen.push(from); - } - if (noIndent) { - var newOpts = { - depth: opts.depth - }; - if (has(opts, 'quoteStyle')) { - newOpts.quoteStyle = opts.quoteStyle; - } - return inspect_(value, newOpts, depth + 1, seen); - } - return inspect_(value, opts, depth + 1, seen); - } +"use strict";var bind=require(24),$TypeError=require(20),$call=require(9),$actualApply=require(7);module.exports=function callBindBasic(r){if(r.length<1||"function"!=typeof r[0])throw new $TypeError("a function is required");return $actualApply(bind,$call,r)}; - if (typeof obj === 'function') { - var name = nameOf(obj); - var keys = arrObjKeys(obj, inspect); - return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : ''); - } - if (isSymbol(obj)) { - var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\(.*\))_[^)]*$/, '$1') : symToString.call(obj); - return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString; - } - if (isElement(obj)) { - var s = '<' + $toLowerCase.call(String(obj.nodeName)); - var attrs = obj.attributes || []; - for (var i = 0; i < attrs.length; i++) { - s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts); - } - s += '>'; - if (obj.childNodes && obj.childNodes.length) { s += '...'; } - s += ''; - return s; - } - if (isArray(obj)) { - if (obj.length === 0) { return '[]'; } - var xs = arrObjKeys(obj, inspect); - if (indent && !singleLineValues(xs)) { - return '[' + indentedJoin(xs, indent) + ']'; - } - return '[ ' + $join.call(xs, ', ') + ' ]'; - } - if (isError(obj)) { - var parts = arrObjKeys(obj, inspect); - if ('cause' in obj && !isEnumerable.call(obj, 'cause')) { - return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }'; - } - if (parts.length === 0) { return '[' + String(obj) + ']'; } - return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }'; - } - if (typeof obj === 'object' && customInspect) { - if (inspectSymbol && typeof obj[inspectSymbol] === 'function') { - return obj[inspectSymbol](); - } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') { - return obj.inspect(); - } - } - if (isMap(obj)) { - var mapParts = []; - mapForEach.call(obj, function (value, key) { - mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj)); - }); - return collectionOf('Map', mapSize.call(obj), mapParts, indent); - } - if (isSet(obj)) { - var setParts = []; - setForEach.call(obj, function (value) { - setParts.push(inspect(value, obj)); - }); - return collectionOf('Set', setSize.call(obj), setParts, indent); - } - if (isWeakMap(obj)) { - return weakCollectionOf('WeakMap'); - } - if (isWeakSet(obj)) { - return weakCollectionOf('WeakSet'); - } - if (isWeakRef(obj)) { - return weakCollectionOf('WeakRef'); - } - if (isNumber(obj)) { - return markBoxed(inspect(Number(obj))); - } - if (isBigInt(obj)) { - return markBoxed(inspect(bigIntValueOf.call(obj))); - } - if (isBoolean(obj)) { - return markBoxed(booleanValueOf.call(obj)); - } - if (isString(obj)) { - return markBoxed(inspect(String(obj))); - } - if (!isDate(obj) && !isRegExp(obj)) { - var ys = arrObjKeys(obj, inspect); - var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object; - var protoTag = obj instanceof Object ? '' : 'null prototype'; - var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : ''; - var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : ''; - var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : ''); - if (ys.length === 0) { return tag + '{}'; } - if (indent) { - return tag + '{' + indentedJoin(ys, indent) + '}'; - } - return tag + '{ ' + $join.call(ys, ', ') + ' }'; - } - return String(obj); -}; +},{"20":20,"24":24,"7":7,"9":9}],20:[function(require,module,exports){ +"use strict";module.exports=TypeError; -function wrapQuotes(s, defaultStyle, opts) { - var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '"' : "'"; - return quoteChar + s + quoteChar; -} +},{}],12:[function(require,module,exports){ +"use strict";var GetIntrinsic=require(25),callBindBasic=require(10),$indexOf=callBindBasic([GetIntrinsic("%String.prototype.indexOf%")]);module.exports=function callBoundIntrinsic(i,n){var t=GetIntrinsic(i,!!n);return"function"==typeof t&&$indexOf(i,".prototype.")>-1?callBindBasic([t]):t}; -function quote(s) { - return $replace.call(String(s), /"/g, '"'); -} +},{"10":10,"25":25}],25:[function(require,module,exports){ +"use strict";var undefined,$Object=require(22),$Error=require(16),$EvalError=require(15),$RangeError=require(17),$ReferenceError=require(18),$SyntaxError=require(19),$TypeError=require(20),$URIError=require(21),abs=require(34),floor=require(35),max=require(37),min=require(38),pow=require(39),round=require(40),sign=require(41),$Function=Function,getEvalledConstructor=function(r){try{return $Function('"use strict"; return ('+r+").constructor;")()}catch(r){}},$gOPD=require(30),$defineProperty=require(14),throwTypeError=function(){throw new $TypeError},ThrowTypeError=$gOPD?function(){try{return throwTypeError}catch(r){try{return $gOPD(arguments,"callee").get}catch(r){return throwTypeError}}}():throwTypeError,hasSymbols=require(31)(),getProto=require(28),$ObjectGPO=require(26),$ReflectGPO=require(27),$apply=require(8),$call=require(9),needsEval={},TypedArray="undefined"!=typeof Uint8Array&&getProto?getProto(Uint8Array):undefined,INTRINSICS={__proto__:null,"%AggregateError%":"undefined"==typeof AggregateError?undefined:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?undefined:ArrayBuffer,"%ArrayIteratorPrototype%":hasSymbols&&getProto?getProto([][Symbol.iterator]()):undefined,"%AsyncFromSyncIteratorPrototype%":undefined,"%AsyncFunction%":needsEval,"%AsyncGenerator%":needsEval,"%AsyncGeneratorFunction%":needsEval,"%AsyncIteratorPrototype%":needsEval,"%Atomics%":"undefined"==typeof Atomics?undefined:Atomics,"%BigInt%":"undefined"==typeof BigInt?undefined:BigInt,"%BigInt64Array%":"undefined"==typeof BigInt64Array?undefined:BigInt64Array,"%BigUint64Array%":"undefined"==typeof BigUint64Array?undefined:BigUint64Array,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?undefined:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":$Error,"%eval%":eval,"%EvalError%":$EvalError,"%Float16Array%":"undefined"==typeof Float16Array?undefined:Float16Array,"%Float32Array%":"undefined"==typeof Float32Array?undefined:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?undefined:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?undefined:FinalizationRegistry,"%Function%":$Function,"%GeneratorFunction%":needsEval,"%Int8Array%":"undefined"==typeof Int8Array?undefined:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?undefined:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?undefined:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":hasSymbols&&getProto?getProto(getProto([][Symbol.iterator]())):undefined,"%JSON%":"object"==typeof JSON?JSON:undefined,"%Map%":"undefined"==typeof Map?undefined:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&hasSymbols&&getProto?getProto((new Map)[Symbol.iterator]()):undefined,"%Math%":Math,"%Number%":Number,"%Object%":$Object,"%Object.getOwnPropertyDescriptor%":$gOPD,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?undefined:Promise,"%Proxy%":"undefined"==typeof Proxy?undefined:Proxy,"%RangeError%":$RangeError,"%ReferenceError%":$ReferenceError,"%Reflect%":"undefined"==typeof Reflect?undefined:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?undefined:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&hasSymbols&&getProto?getProto((new Set)[Symbol.iterator]()):undefined,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?undefined:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":hasSymbols&&getProto?getProto(""[Symbol.iterator]()):undefined,"%Symbol%":hasSymbols?Symbol:undefined,"%SyntaxError%":$SyntaxError,"%ThrowTypeError%":ThrowTypeError,"%TypedArray%":TypedArray,"%TypeError%":$TypeError,"%Uint8Array%":"undefined"==typeof Uint8Array?undefined:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?undefined:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?undefined:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?undefined:Uint32Array,"%URIError%":$URIError,"%WeakMap%":"undefined"==typeof WeakMap?undefined:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?undefined:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?undefined:WeakSet,"%Function.prototype.call%":$call,"%Function.prototype.apply%":$apply,"%Object.defineProperty%":$defineProperty,"%Object.getPrototypeOf%":$ObjectGPO,"%Math.abs%":abs,"%Math.floor%":floor,"%Math.max%":max,"%Math.min%":min,"%Math.pow%":pow,"%Math.round%":round,"%Math.sign%":sign,"%Reflect.getPrototypeOf%":$ReflectGPO};if(getProto)try{null.error}catch(r){var errorProto=getProto(getProto(r));INTRINSICS["%Error.prototype%"]=errorProto}var doEval=function doEval(r){var e;if("%AsyncFunction%"===r)e=getEvalledConstructor("async function () {}");else if("%GeneratorFunction%"===r)e=getEvalledConstructor("function* () {}");else if("%AsyncGeneratorFunction%"===r)e=getEvalledConstructor("async function* () {}");else if("%AsyncGenerator%"===r){var t=doEval("%AsyncGeneratorFunction%");t&&(e=t.prototype)}else if("%AsyncIteratorPrototype%"===r){var o=doEval("%AsyncGenerator%");o&&getProto&&(e=getProto(o.prototype))}return INTRINSICS[r]=e,e},LEGACY_ALIASES={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},bind=require(24),hasOwn=require(33),$concat=bind.call($call,Array.prototype.concat),$spliceApply=bind.call($apply,Array.prototype.splice),$replace=bind.call($call,String.prototype.replace),$strSlice=bind.call($call,String.prototype.slice),$exec=bind.call($call,RegExp.prototype.exec),rePropName=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,reEscapeChar=/\\(\\)?/g,stringToPath=function stringToPath(r){var e=$strSlice(r,0,1),t=$strSlice(r,-1);if("%"===e&&"%"!==t)throw new $SyntaxError("invalid intrinsic syntax, expected closing `%`");if("%"===t&&"%"!==e)throw new $SyntaxError("invalid intrinsic syntax, expected opening `%`");var o=[];return $replace(r,rePropName,function(r,e,t,n){o[o.length]=t?$replace(n,reEscapeChar,"$1"):e||r}),o},getBaseIntrinsic=function getBaseIntrinsic(r,e){var t,o=r;if(hasOwn(LEGACY_ALIASES,o)&&(o="%"+(t=LEGACY_ALIASES[o])[0]+"%"),hasOwn(INTRINSICS,o)){var n=INTRINSICS[o];if(n===needsEval&&(n=doEval(o)),void 0===n&&!e)throw new $TypeError("intrinsic "+r+" exists, but is not available. Please file an issue!");return{alias:t,name:o,value:n}}throw new $SyntaxError("intrinsic "+r+" does not exist!")};module.exports=function GetIntrinsic(r,e){if("string"!=typeof r||0===r.length)throw new $TypeError("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof e)throw new $TypeError('"allowMissing" argument must be a boolean');if(null===$exec(/^%?[^%]*%?$/,r))throw new $SyntaxError("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var t=stringToPath(r),o=t.length>0?t[0]:"",n=getBaseIntrinsic("%"+o+"%",e),a=n.name,i=n.value,y=!1,p=n.alias;p&&(o=p[0],$spliceApply(t,$concat([0,1],p)));for(var d=1,s=!0;d=t.length){var c=$gOPD(i,f);i=(s=!!c)&&"get"in c&&!("originalValue"in c.get)?c.get:i[f]}else s=hasOwn(i,f),i=i[f];s&&!y&&(INTRINSICS[a]=i)}}return i}; -function isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } -function isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } -function isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } -function isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } -function isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } -function isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } -function isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } +},{"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"24":24,"26":26,"27":27,"28":28,"30":30,"31":31,"33":33,"34":34,"35":35,"37":37,"38":38,"39":39,"40":40,"41":41,"8":8,"9":9}],13:[function(require,module,exports){ +"use strict";var hasProtoAccessor,callBind=require(10),gOPD=require(30);try{hasProtoAccessor=[].__proto__===Array.prototype}catch(t){if(!t||"object"!=typeof t||!("code"in t)||"ERR_PROTO_ACCESS"!==t.code)throw t}var desc=!!hasProtoAccessor&&gOPD&&gOPD(Object.prototype,"__proto__"),$Object=Object,$getPrototypeOf=$Object.getPrototypeOf;module.exports=desc&&"function"==typeof desc.get?callBind([desc.get]):"function"==typeof $getPrototypeOf&&function getDunder(t){return $getPrototypeOf(null==t?t:$Object(t))}; -// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives -function isSymbol(obj) { - if (hasShammedSymbols) { - return obj && typeof obj === 'object' && obj instanceof Symbol; - } - if (typeof obj === 'symbol') { - return true; - } - if (!obj || typeof obj !== 'object' || !symToString) { - return false; - } - try { - symToString.call(obj); - return true; - } catch (e) {} - return false; -} +},{"10":10,"30":30}],30:[function(require,module,exports){ +"use strict";var $gOPD=require(29);if($gOPD)try{$gOPD([],"length")}catch(g){$gOPD=null}module.exports=$gOPD; -function isBigInt(obj) { - if (!obj || typeof obj !== 'object' || !bigIntValueOf) { - return false; - } - try { - bigIntValueOf.call(obj); - return true; - } catch (e) {} - return false; -} +},{"29":29}],14:[function(require,module,exports){ +"use strict";var $defineProperty=Object.defineProperty||!1;if($defineProperty)try{$defineProperty({},"a",{value:1})}catch(e){$defineProperty=!1}module.exports=$defineProperty; -var hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; }; -function has(obj, key) { - return hasOwn.call(obj, key); -} +},{}],15:[function(require,module,exports){ +"use strict";module.exports=EvalError; -function toStr(obj) { - return objectToString.call(obj); -} +},{}],16:[function(require,module,exports){ +"use strict";module.exports=Error; -function nameOf(f) { - if (f.name) { return f.name; } - var m = $match.call(functionToString.call(f), /^function\s*([\w$]+)/); - if (m) { return m[1]; } - return null; -} +},{}],17:[function(require,module,exports){ +"use strict";module.exports=RangeError; -function indexOf(xs, x) { - if (xs.indexOf) { return xs.indexOf(x); } - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) { return i; } - } - return -1; -} +},{}],18:[function(require,module,exports){ +"use strict";module.exports=ReferenceError; -function isMap(x) { - if (!mapSize || !x || typeof x !== 'object') { - return false; - } - try { - mapSize.call(x); - try { - setSize.call(x); - } catch (s) { - return true; - } - return x instanceof Map; // core-js workaround, pre-v2.5.0 - } catch (e) {} - return false; -} +},{}],19:[function(require,module,exports){ +"use strict";module.exports=SyntaxError; -function isWeakMap(x) { - if (!weakMapHas || !x || typeof x !== 'object') { - return false; - } - try { - weakMapHas.call(x, weakMapHas); - try { - weakSetHas.call(x, weakSetHas); - } catch (s) { - return true; - } - return x instanceof WeakMap; // core-js workaround, pre-v2.5.0 - } catch (e) {} - return false; -} +},{}],21:[function(require,module,exports){ +"use strict";module.exports=URIError; -function isWeakRef(x) { - if (!weakRefDeref || !x || typeof x !== 'object') { - return false; - } - try { - weakRefDeref.call(x); - return true; - } catch (e) {} - return false; -} +},{}],22:[function(require,module,exports){ +"use strict";module.exports=Object; -function isSet(x) { - if (!setSize || !x || typeof x !== 'object') { - return false; - } - try { - setSize.call(x); - try { - mapSize.call(x); - } catch (m) { - return true; - } - return x instanceof Set; // core-js workaround, pre-v2.5.0 - } catch (e) {} - return false; -} +},{}],23:[function(require,module,exports){ +"use strict";var ERROR_MESSAGE="Function.prototype.bind called on incompatible ",toStr=Object.prototype.toString,max=Math.max,funcType="[object Function]",concatty=function concatty(t,n){for(var r=[],o=0;o opts.maxStringLength) { - var remaining = str.length - opts.maxStringLength; - var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : ''); - return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer; - } - // eslint-disable-next-line no-control-regex - var s = $replace.call($replace.call(str, /(['\\])/g, '\\$1'), /[\x00-\x1f]/g, lowbyte); - return wrapQuotes(s, 'single', opts); -} +},{}],34:[function(require,module,exports){ +"use strict";module.exports=Math.abs; -function lowbyte(c) { - var n = c.charCodeAt(0); - var x = { - 8: 'b', - 9: 't', - 10: 'n', - 12: 'f', - 13: 'r' - }[n]; - if (x) { return '\\' + x; } - return '\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16)); -} +},{}],38:[function(require,module,exports){ +"use strict";module.exports=Math.min; -function markBoxed(str) { - return 'Object(' + str + ')'; -} +},{}],35:[function(require,module,exports){ +"use strict";module.exports=Math.floor; -function weakCollectionOf(type) { - return type + ' { ? }'; -} +},{}],40:[function(require,module,exports){ +"use strict";module.exports=Math.round; -function collectionOf(type, size, entries, indent) { - var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', '); - return type + ' (' + size + ') {' + joinedEntries + '}'; -} +},{}],27:[function(require,module,exports){ +"use strict";module.exports="undefined"!=typeof Reflect&&Reflect.getPrototypeOf||null; -function singleLineValues(xs) { - for (var i = 0; i < xs.length; i++) { - if (indexOf(xs[i], '\n') >= 0) { - return false; - } - } - return true; -} +},{}],26:[function(require,module,exports){ +"use strict";var $Object=require(22);module.exports=$Object.getPrototypeOf||null; -function getIndent(opts, depth) { - var baseIndent; - if (opts.indent === '\t') { - baseIndent = '\t'; - } else if (typeof opts.indent === 'number' && opts.indent > 0) { - baseIndent = $join.call(Array(opts.indent + 1), ' '); - } else { - return null; - } - return { - base: baseIndent, - prev: $join.call(Array(depth + 1), baseIndent) - }; -} +},{"22":22}],41:[function(require,module,exports){ +"use strict";var $isNaN=require(36);module.exports=function sign(i){return $isNaN(i)||0===i?i:i<0?-1:1}; -function indentedJoin(xs, indent) { - if (xs.length === 0) { return ''; } - var lineJoiner = '\n' + indent.prev + indent.base; - return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\n' + indent.prev; -} +},{"36":36}],33:[function(require,module,exports){ +"use strict";var call=Function.prototype.call,$hasOwn=Object.prototype.hasOwnProperty,bind=require(24);module.exports=bind.call(call,$hasOwn); -function arrObjKeys(obj, inspect) { - var isArr = isArray(obj); - var xs = []; - if (isArr) { - xs.length = obj.length; - for (var i = 0; i < obj.length; i++) { - xs[i] = has(obj, i) ? inspect(obj[i], obj) : ''; - } - } - var syms = typeof gOPS === 'function' ? gOPS(obj) : []; - var symMap; - if (hasShammedSymbols) { - symMap = {}; - for (var k = 0; k < syms.length; k++) { - symMap['$' + syms[k]] = syms[k]; - } - } +},{"24":24}],31:[function(require,module,exports){ +"use strict";var origSymbol="undefined"!=typeof Symbol&&Symbol,hasSymbolSham=require(32);module.exports=function hasNativeSymbols(){return"function"==typeof origSymbol&&"function"==typeof Symbol&&"symbol"==typeof origSymbol("foo")&&"symbol"==typeof Symbol("bar")&&hasSymbolSham()}; - for (var key in obj) { // eslint-disable-line no-restricted-syntax - if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue - if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue - if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) { - // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section - continue; // eslint-disable-line no-restricted-syntax, no-continue - } else if ($test.call(/[^\w$]/, key)) { - xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj)); - } else { - xs.push(key + ': ' + inspect(obj[key], obj)); - } - } - if (typeof gOPS === 'function') { - for (var j = 0; j < syms.length; j++) { - if (isEnumerable.call(obj, syms[j])) { - xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj)); - } - } - } - return xs; -} +},{"32":32}],28:[function(require,module,exports){ +"use strict";var reflectGetProto=require(27),originalGetProto=require(26),getDunderProto=require(13);module.exports=reflectGetProto?function getProto(t){return reflectGetProto(t)}:originalGetProto?function getProto(t){if(!t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("getProto: not an object");return originalGetProto(t)}:getDunderProto?function getProto(t){return getDunderProto(t)}:null; -},{"./util.inspect":6}],16:[function(require,module,exports){ -'use strict'; +},{"13":13,"26":26,"27":27}],29:[function(require,module,exports){ +"use strict";module.exports=Object.getOwnPropertyDescriptor; -var GetIntrinsic = require('get-intrinsic'); -var callBound = require('call-bind/callBound'); -var inspect = require('object-inspect'); +},{}],32:[function(require,module,exports){ +"use strict";module.exports=function hasSymbols(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var t={},e=Symbol("test"),r=Object(e);if("string"==typeof e)return!1;if("[object Symbol]"!==Object.prototype.toString.call(e))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(var o in t[e]=42,t)return!1;if("function"==typeof Object.keys&&0!==Object.keys(t).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(t).length)return!1;var n=Object.getOwnPropertySymbols(t);if(1!==n.length||n[0]!==e)return!1;if(!Object.prototype.propertyIsEnumerable.call(t,e))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var y=Object.getOwnPropertyDescriptor(t,e);if(42!==y.value||!0!==y.enumerable)return!1}return!0}; -var $TypeError = GetIntrinsic('%TypeError%'); -var $WeakMap = GetIntrinsic('%WeakMap%', true); -var $Map = GetIntrinsic('%Map%', true); +},{}],36:[function(require,module,exports){ +"use strict";module.exports=Number.isNaN||function isNaN(e){return e!=e}; -var $weakMapGet = callBound('WeakMap.prototype.get', true); -var $weakMapSet = callBound('WeakMap.prototype.set', true); -var $weakMapHas = callBound('WeakMap.prototype.has', true); -var $mapGet = callBound('Map.prototype.get', true); -var $mapSet = callBound('Map.prototype.set', true); -var $mapHas = callBound('Map.prototype.has', true); +},{}],42:[function(require,module,exports){ +(function (global){(function (){ +var hasMap="function"==typeof Map&&Map.prototype,mapSizeDescriptor=Object.getOwnPropertyDescriptor&&hasMap?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,mapSize=hasMap&&mapSizeDescriptor&&"function"==typeof mapSizeDescriptor.get?mapSizeDescriptor.get:null,mapForEach=hasMap&&Map.prototype.forEach,hasSet="function"==typeof Set&&Set.prototype,setSizeDescriptor=Object.getOwnPropertyDescriptor&&hasSet?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,setSize=hasSet&&setSizeDescriptor&&"function"==typeof setSizeDescriptor.get?setSizeDescriptor.get:null,setForEach=hasSet&&Set.prototype.forEach,hasWeakMap="function"==typeof WeakMap&&WeakMap.prototype,weakMapHas=hasWeakMap?WeakMap.prototype.has:null,hasWeakSet="function"==typeof WeakSet&&WeakSet.prototype,weakSetHas=hasWeakSet?WeakSet.prototype.has:null,hasWeakRef="function"==typeof WeakRef&&WeakRef.prototype,weakRefDeref=hasWeakRef?WeakRef.prototype.deref:null,booleanValueOf=Boolean.prototype.valueOf,objectToString=Object.prototype.toString,functionToString=Function.prototype.toString,$match=String.prototype.match,$slice=String.prototype.slice,$replace=String.prototype.replace,$toUpperCase=String.prototype.toUpperCase,$toLowerCase=String.prototype.toLowerCase,$test=RegExp.prototype.test,$concat=Array.prototype.concat,$join=Array.prototype.join,$arrSlice=Array.prototype.slice,$floor=Math.floor,bigIntValueOf="function"==typeof BigInt?BigInt.prototype.valueOf:null,gOPS=Object.getOwnPropertySymbols,symToString="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,hasShammedSymbols="function"==typeof Symbol&&"object"==typeof Symbol.iterator,toStringTag="function"==typeof Symbol&&Symbol.toStringTag&&(Symbol.toStringTag,1)?Symbol.toStringTag:null,isEnumerable=Object.prototype.propertyIsEnumerable,gPO=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(t){return t.__proto__}:null);function addNumericSeparator(t,e){if(t===1/0||t===-1/0||t!=t||t&&t>-1e3&&t<1e3||$test.call(/e/,e))return e;var r=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof t){var n=t<0?-$floor(-t):$floor(t);if(n!==t){var o=String(n),i=$slice.call(e,o.length+1);return $replace.call(o,r,"$&_")+"."+$replace.call($replace.call(i,/([0-9]{3})/g,"$&_"),/_$/,"")}}return $replace.call(e,r,"$&_")}var utilInspect=require(6),inspectCustom=utilInspect.custom,inspectSymbol=isSymbol(inspectCustom)?inspectCustom:null,quotes={__proto__:null,double:'"',single:"'"},quoteREs={__proto__:null,double:/(["\\])/g,single:/(['\\])/g};function wrapQuotes(t,e,r){var n=r.quoteStyle||e,o=quotes[n];return o+t+o}function quote(t){return $replace.call(String(t),/"/g,""")}function canTrustToString(t){return!toStringTag||!("object"==typeof t&&(toStringTag in t||void 0!==t[toStringTag]))}function isArray(t){return"[object Array]"===toStr(t)&&canTrustToString(t)}function isDate(t){return"[object Date]"===toStr(t)&&canTrustToString(t)}function isRegExp(t){return"[object RegExp]"===toStr(t)&&canTrustToString(t)}function isError(t){return"[object Error]"===toStr(t)&&canTrustToString(t)}function isString(t){return"[object String]"===toStr(t)&&canTrustToString(t)}function isNumber(t){return"[object Number]"===toStr(t)&&canTrustToString(t)}function isBoolean(t){return"[object Boolean]"===toStr(t)&&canTrustToString(t)}function isSymbol(t){if(hasShammedSymbols)return t&&"object"==typeof t&&t instanceof Symbol;if("symbol"==typeof t)return!0;if(!t||"object"!=typeof t||!symToString)return!1;try{return symToString.call(t),!0}catch(t){}return!1}function isBigInt(t){if(!t||"object"!=typeof t||!bigIntValueOf)return!1;try{return bigIntValueOf.call(t),!0}catch(t){}return!1}module.exports=function inspect_(t,e,r,n){var o=e||{};if(has(o,"quoteStyle")&&!has(quotes,o.quoteStyle))throw new TypeError('option "quoteStyle" must be "single" or "double"');if(has(o,"maxStringLength")&&("number"==typeof o.maxStringLength?o.maxStringLength<0&&o.maxStringLength!==1/0:null!==o.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var i=!has(o,"customInspect")||o.customInspect;if("boolean"!=typeof i&&"symbol"!==i)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(has(o,"indent")&&null!==o.indent&&"\t"!==o.indent&&!(parseInt(o.indent,10)===o.indent&&o.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(has(o,"numericSeparator")&&"boolean"!=typeof o.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var a=o.numericSeparator;if(void 0===t)return"undefined";if(null===t)return"null";if("boolean"==typeof t)return t?"true":"false";if("string"==typeof t)return inspectString(t,o);if("number"==typeof t){if(0===t)return 1/0/t>0?"0":"-0";var c=String(t);return a?addNumericSeparator(t,c):c}if("bigint"==typeof t){var l=String(t)+"n";return a?addNumericSeparator(t,l):l}var u=void 0===o.depth?5:o.depth;if(void 0===r&&(r=0),r>=u&&u>0&&"object"==typeof t)return isArray(t)?"[Array]":"[Object]";var p=getIndent(o,r);if(void 0===n)n=[];else if(indexOf(n,t)>=0)return"[Circular]";function inspect(t,e,i){if(e&&(n=$arrSlice.call(n)).push(e),i){var a={depth:o.depth};return has(o,"quoteStyle")&&(a.quoteStyle=o.quoteStyle),inspect_(t,a,r+1,n)}return inspect_(t,o,r+1,n)}if("function"==typeof t&&!isRegExp(t)){var s=nameOf(t),f=arrObjKeys(t,inspect);return"[Function"+(s?": "+s:" (anonymous)")+"]"+(f.length>0?" { "+$join.call(f,", ")+" }":"")}if(isSymbol(t)){var y=hasShammedSymbols?$replace.call(String(t),/^(Symbol\(.*\))_[^)]*$/,"$1"):symToString.call(t);return"object"!=typeof t||hasShammedSymbols?y:markBoxed(y)}if(isElement(t)){for(var S="<"+$toLowerCase.call(String(t.nodeName)),g=t.attributes||[],m=0;m"}if(isArray(t)){if(0===t.length)return"[]";var b=arrObjKeys(t,inspect);return p&&!singleLineValues(b)?"["+indentedJoin(b,p)+"]":"[ "+$join.call(b,", ")+" ]"}if(isError(t)){var h=arrObjKeys(t,inspect);return"cause"in Error.prototype||!("cause"in t)||isEnumerable.call(t,"cause")?0===h.length?"["+String(t)+"]":"{ ["+String(t)+"] "+$join.call(h,", ")+" }":"{ ["+String(t)+"] "+$join.call($concat.call("[cause]: "+inspect(t.cause),h),", ")+" }"}if("object"==typeof t&&i){if(inspectSymbol&&"function"==typeof t[inspectSymbol]&&utilInspect)return utilInspect(t,{depth:u-r});if("symbol"!==i&&"function"==typeof t.inspect)return t.inspect()}if(isMap(t)){var d=[];return mapForEach&&mapForEach.call(t,function(e,r){d.push(inspect(r,t,!0)+" => "+inspect(e,t))}),collectionOf("Map",mapSize.call(t),d,p)}if(isSet(t)){var O=[];return setForEach&&setForEach.call(t,function(e){O.push(inspect(e,t))}),collectionOf("Set",setSize.call(t),O,p)}if(isWeakMap(t))return weakCollectionOf("WeakMap");if(isWeakSet(t))return weakCollectionOf("WeakSet");if(isWeakRef(t))return weakCollectionOf("WeakRef");if(isNumber(t))return markBoxed(inspect(Number(t)));if(isBigInt(t))return markBoxed(inspect(bigIntValueOf.call(t)));if(isBoolean(t))return markBoxed(booleanValueOf.call(t));if(isString(t))return markBoxed(inspect(String(t)));if("undefined"!=typeof window&&t===window)return"{ [object Window] }";if("undefined"!=typeof globalThis&&t===globalThis||"undefined"!=typeof global&&t===global)return"{ [object globalThis] }";if(!isDate(t)&&!isRegExp(t)){var j=arrObjKeys(t,inspect),w=gPO?gPO(t)===Object.prototype:t instanceof Object||t.constructor===Object,$=t instanceof Object?"":"null prototype",v=!w&&toStringTag&&Object(t)===t&&toStringTag in t?$slice.call(toStr(t),8,-1):$?"Object":"",k=(w||"function"!=typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(v||$?"["+$join.call($concat.call([],v||[],$||[]),": ")+"] ":"");return 0===j.length?k+"{}":p?k+"{"+indentedJoin(j,p)+"}":k+"{ "+$join.call(j,", ")+" }"}return String(t)};var hasOwn=Object.prototype.hasOwnProperty||function(t){return t in this};function has(t,e){return hasOwn.call(t,e)}function toStr(t){return objectToString.call(t)}function nameOf(t){if(t.name)return t.name;var e=$match.call(functionToString.call(t),/^function\s*([\w$]+)/);return e?e[1]:null}function indexOf(t,e){if(t.indexOf)return t.indexOf(e);for(var r=0,n=t.length;re.maxStringLength){var r=t.length-e.maxStringLength,n="... "+r+" more character"+(r>1?"s":"");return inspectString($slice.call(t,0,e.maxStringLength),e)+n}var o=quoteREs[e.quoteStyle||"single"];return o.lastIndex=0,wrapQuotes($replace.call($replace.call(t,o,"\\$1"),/[\x00-\x1f]/g,lowbyte),"single",e)}function lowbyte(t){var e=t.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return r?"\\"+r:"\\x"+(e<16?"0":"")+$toUpperCase.call(e.toString(16))}function markBoxed(t){return"Object("+t+")"}function weakCollectionOf(t){return t+" { ? }"}function collectionOf(t,e,r,n){return t+" ("+e+") {"+(n?indentedJoin(r,n):$join.call(r,", "))+"}"}function singleLineValues(t){for(var e=0;e=0)return!1;return!0}function getIndent(t,e){var r;if("\t"===t.indent)r="\t";else{if(!("number"==typeof t.indent&&t.indent>0))return null;r=$join.call(Array(t.indent+1)," ")}return{base:r,prev:$join.call(Array(e+1),r)}}function indentedJoin(t,e){if(0===t.length)return"";var r="\n"+e.prev+e.base;return r+$join.call(t,","+r)+"\n"+e.prev}function arrObjKeys(t,e){var r=isArray(t),n=[];if(r){n.length=t.length;for(var o=0;o -1) { return val.split(','); } + if (options.throwOnLimitExceeded && currentArrayLength >= options.arrayLimit) { + throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.'); + } + return val; }; @@ -49,10 +58,21 @@ var isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓') var charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓') var parseValues = function parseQueryStringValues(str, options) { - var obj = {}; + var obj = { __proto__: null }; + var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str; - var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit; - var parts = cleanStr.split(options.delimiter, limit); + cleanStr = cleanStr.replace(/%5B/gi, '[').replace(/%5D/gi, ']'); + + var limit = options.parameterLimit === Infinity ? void undefined : options.parameterLimit; + var parts = cleanStr.split( + options.delimiter, + options.throwOnLimitExceeded ? limit + 1 : limit + ); + + if (options.throwOnLimitExceeded && parts.length > limit) { + throw new RangeError('Parameter limit exceeded. Only ' + limit + ' parameter' + (limit === 1 ? '' : 's') + ' allowed.'); + } + var skipIndex = -1; // Keep track of where the utf8 sentinel was found var i; @@ -80,32 +100,55 @@ var parseValues = function parseQueryStringValues(str, options) { var bracketEqualsPos = part.indexOf(']='); var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1; - var key, val; + var key; + var val; if (pos === -1) { key = options.decoder(part, defaults.decoder, charset, 'key'); val = options.strictNullHandling ? null : ''; } else { key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key'); - val = utils.maybeMap( - parseArrayValue(part.slice(pos + 1), options), - function (encodedVal) { - return options.decoder(encodedVal, defaults.decoder, charset, 'value'); - } - ); + + if (key !== null) { + val = utils.maybeMap( + parseArrayValue( + part.slice(pos + 1), + options, + isArray(obj[key]) ? obj[key].length : 0 + ), + function (encodedVal) { + return options.decoder(encodedVal, defaults.decoder, charset, 'value'); + } + ); + } } if (val && options.interpretNumericEntities && charset === 'iso-8859-1') { - val = interpretNumericEntities(val); + val = interpretNumericEntities(String(val)); } if (part.indexOf('[]=') > -1) { val = isArray(val) ? [val] : val; } - if (has.call(obj, key)) { - obj[key] = utils.combine(obj[key], val); - } else { - obj[key] = val; + if (options.comma && isArray(val) && val.length > options.arrayLimit) { + if (options.throwOnLimitExceeded) { + throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.'); + } + val = utils.combine([], val, options.arrayLimit, options.plainObjects); + } + + if (key !== null) { + var existing = has.call(obj, key); + if (existing && options.duplicates === 'combine') { + obj[key] = utils.combine( + obj[key], + val, + options.arrayLimit, + options.plainObjects + ); + } else if (!existing || options.duplicates === 'last') { + obj[key] = val; + } } } @@ -113,31 +156,54 @@ var parseValues = function parseQueryStringValues(str, options) { }; var parseObject = function (chain, val, options, valuesParsed) { - var leaf = valuesParsed ? val : parseArrayValue(val, options); + var currentArrayLength = 0; + if (chain.length > 0 && chain[chain.length - 1] === '[]') { + var parentKey = chain.slice(0, -1).join(''); + currentArrayLength = Array.isArray(val) && val[parentKey] ? val[parentKey].length : 0; + } + + var leaf = valuesParsed ? val : parseArrayValue(val, options, currentArrayLength); for (var i = chain.length - 1; i >= 0; --i) { var obj; var root = chain[i]; if (root === '[]' && options.parseArrays) { - obj = [].concat(leaf); + if (utils.isOverflow(leaf)) { + // leaf is already an overflow object, preserve it + obj = leaf; + } else { + obj = options.allowEmptyArrays && (leaf === '' || (options.strictNullHandling && leaf === null)) + ? [] + : utils.combine( + [], + leaf, + options.arrayLimit, + options.plainObjects + ); + } } else { - obj = options.plainObjects ? Object.create(null) : {}; + obj = options.plainObjects ? { __proto__: null } : {}; var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root; - var index = parseInt(cleanRoot, 10); - if (!options.parseArrays && cleanRoot === '') { - obj = { 0: leaf }; - } else if ( - !isNaN(index) - && root !== cleanRoot - && String(index) === cleanRoot + var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot; + var index = parseInt(decodedRoot, 10); + var isValidArrayIndex = !isNaN(index) + && root !== decodedRoot + && String(index) === decodedRoot && index >= 0 - && (options.parseArrays && index <= options.arrayLimit) - ) { + && options.parseArrays; + if (!options.parseArrays && decodedRoot === '') { + obj = { 0: leaf }; + } else if (isValidArrayIndex && index < options.arrayLimit) { obj = []; obj[index] = leaf; - } else if (cleanRoot !== '__proto__') { - obj[cleanRoot] = leaf; + } else if (isValidArrayIndex && options.throwOnLimitExceeded) { + throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.'); + } else if (isValidArrayIndex) { + obj[index] = leaf; + utils.markOverflow(obj, index); + } else if (decodedRoot !== '__proto__') { + obj[decodedRoot] = leaf; } } @@ -147,55 +213,71 @@ var parseObject = function (chain, val, options, valuesParsed) { return leaf; }; -var parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) { - if (!givenKey) { - return; - } - - // Transform dot notation to bracket notation +var splitKeyIntoSegments = function splitKeyIntoSegments(givenKey, options) { var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, '[$1]') : givenKey; - // The regex chunks + if (options.depth <= 0) { + if (!options.plainObjects && has.call(Object.prototype, key)) { + if (!options.allowPrototypes) { + return; + } + } + + return [key]; + } var brackets = /(\[[^[\]]*])/; var child = /(\[[^[\]]*])/g; - // Get the parent - - var segment = options.depth > 0 && brackets.exec(key); + var segment = brackets.exec(key); var parent = segment ? key.slice(0, segment.index) : key; - // Stash the parent if it exists - var keys = []; + if (parent) { - // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties if (!options.plainObjects && has.call(Object.prototype, parent)) { if (!options.allowPrototypes) { return; } } - keys.push(parent); + keys[keys.length] = parent; } - // Loop through children appending to the array until we hit depth - var i = 0; - while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) { + while ((segment = child.exec(key)) !== null && i < options.depth) { i += 1; - if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) { + + var segmentContent = segment[1].slice(1, -1); + if (!options.plainObjects && has.call(Object.prototype, segmentContent)) { if (!options.allowPrototypes) { return; } } - keys.push(segment[1]); - } - // If there's a remainder, just add whatever is left + keys[keys.length] = segment[1]; + } if (segment) { - keys.push('[' + key.slice(segment.index) + ']'); + if (options.strictDepth === true) { + throw new RangeError('Input depth exceeded depth option of ' + options.depth + ' and strictDepth is true'); + } + + keys[keys.length] = '[' + key.slice(segment.index) + ']'; + } + + return keys; +}; + +var parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) { + if (!givenKey) { + return; + } + + var keys = splitKeyIntoSegments(givenKey, options); + + if (!keys) { + return; } return parseObject(keys, val, options, valuesParsed); @@ -206,33 +288,59 @@ var normalizeParseOptions = function normalizeParseOptions(opts) { return defaults; } - if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') { + if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') { + throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided'); + } + + if (typeof opts.decodeDotInKeys !== 'undefined' && typeof opts.decodeDotInKeys !== 'boolean') { + throw new TypeError('`decodeDotInKeys` option can only be `true` or `false`, when provided'); + } + + if (opts.decoder !== null && typeof opts.decoder !== 'undefined' && typeof opts.decoder !== 'function') { throw new TypeError('Decoder has to be a function.'); } if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') { throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined'); } + + if (typeof opts.throwOnLimitExceeded !== 'undefined' && typeof opts.throwOnLimitExceeded !== 'boolean') { + throw new TypeError('`throwOnLimitExceeded` option must be a boolean'); + } + var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset; + var duplicates = typeof opts.duplicates === 'undefined' ? defaults.duplicates : opts.duplicates; + + if (duplicates !== 'combine' && duplicates !== 'first' && duplicates !== 'last') { + throw new TypeError('The duplicates option must be either combine, first, or last'); + } + + var allowDots = typeof opts.allowDots === 'undefined' ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots; + return { - allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots, + allowDots: allowDots, + allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays, allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes, allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse, arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit, charset: charset, charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel, comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma, + decodeDotInKeys: typeof opts.decodeDotInKeys === 'boolean' ? opts.decodeDotInKeys : defaults.decodeDotInKeys, decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder, delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter, // eslint-disable-next-line no-implicit-coercion, no-extra-parens depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth, + duplicates: duplicates, ignoreQueryPrefix: opts.ignoreQueryPrefix === true, interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities, parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit, parseArrays: opts.parseArrays !== false, plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects, - strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling + strictDepth: typeof opts.strictDepth === 'boolean' ? !!opts.strictDepth : defaults.strictDepth, + strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling, + throwOnLimitExceeded: typeof opts.throwOnLimitExceeded === 'boolean' ? opts.throwOnLimitExceeded : false }; }; @@ -240,11 +348,11 @@ module.exports = function (str, opts) { var options = normalizeParseOptions(opts); if (str === '' || str === null || typeof str === 'undefined') { - return options.plainObjects ? Object.create(null) : {}; + return options.plainObjects ? { __proto__: null } : {}; } var tempObj = typeof str === 'string' ? parseValues(str, options) : str; - var obj = options.plainObjects ? Object.create(null) : {}; + var obj = options.plainObjects ? { __proto__: null } : {}; // Iterate over the keys and setup the new object diff --git a/food-ordering-app/server/node_modules/qs/lib/stringify.js b/food-ordering-app/server/node_modules/qs/lib/stringify.js index 47ea4b15d..2666eaf9c 100644 --- a/food-ordering-app/server/node_modules/qs/lib/stringify.js +++ b/food-ordering-app/server/node_modules/qs/lib/stringify.js @@ -19,7 +19,6 @@ var arrayPrefixGenerators = { }; var isArray = Array.isArray; -var split = String.prototype.split; var push = Array.prototype.push; var pushToArray = function (arr, valueOrArray) { push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]); @@ -31,12 +30,17 @@ var defaultFormat = formats['default']; var defaults = { addQueryPrefix: false, allowDots: false, + allowEmptyArrays: false, + arrayFormat: 'indices', charset: 'utf-8', charsetSentinel: false, + commaRoundTrip: false, delimiter: '&', encode: true, + encodeDotInKeys: false, encoder: utils.encode, encodeValuesOnly: false, + filter: void undefined, format: defaultFormat, formatter: formats.formatters[defaultFormat], // deprecated @@ -62,8 +66,11 @@ var stringify = function stringify( object, prefix, generateArrayPrefix, + commaRoundTrip, + allowEmptyArrays, strictNullHandling, skipNulls, + encodeDotInKeys, encoder, filter, sort, @@ -120,14 +127,6 @@ var stringify = function stringify( if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) { if (encoder) { var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format); - if (generateArrayPrefix === 'comma' && encodeValuesOnly) { - var valuesArray = split.call(String(obj), ','); - var valuesJoined = ''; - for (var i = 0; i < valuesArray.length; ++i) { - valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset, 'value', format)); - } - return [formatter(keyValue) + '=' + valuesJoined]; - } return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))]; } return [formatter(prefix) + '=' + formatter(String(obj))]; @@ -142,6 +141,9 @@ var stringify = function stringify( var objKeys; if (generateArrayPrefix === 'comma' && isArray(obj)) { // we need to join elements in + if (encodeValuesOnly && encoder) { + obj = utils.maybeMap(obj, encoder); + } objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }]; } else if (isArray(filter)) { objKeys = filter; @@ -150,17 +152,28 @@ var stringify = function stringify( objKeys = sort ? keys.sort(sort) : keys; } + var encodedPrefix = encodeDotInKeys ? String(prefix).replace(/\./g, '%2E') : String(prefix); + + var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix; + + if (allowEmptyArrays && isArray(obj) && obj.length === 0) { + return adjustedPrefix + '[]'; + } + for (var j = 0; j < objKeys.length; ++j) { var key = objKeys[j]; - var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key]; + var value = typeof key === 'object' && key && typeof key.value !== 'undefined' + ? key.value + : obj[key]; if (skipNulls && value === null) { continue; } + var encodedKey = allowDots && encodeDotInKeys ? String(key).replace(/\./g, '%2E') : String(key); var keyPrefix = isArray(obj) - ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(prefix, key) : prefix - : prefix + (allowDots ? '.' + key : '[' + key + ']'); + ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix + : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']'); sideChannel.set(object, step); var valueSideChannel = getSideChannel(); @@ -169,9 +182,12 @@ var stringify = function stringify( value, keyPrefix, generateArrayPrefix, + commaRoundTrip, + allowEmptyArrays, strictNullHandling, skipNulls, - encoder, + encodeDotInKeys, + generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder, filter, sort, allowDots, @@ -192,6 +208,14 @@ var normalizeStringifyOptions = function normalizeStringifyOptions(opts) { return defaults; } + if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') { + throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided'); + } + + if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') { + throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided'); + } + if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') { throw new TypeError('Encoder has to be a function.'); } @@ -215,13 +239,32 @@ var normalizeStringifyOptions = function normalizeStringifyOptions(opts) { filter = opts.filter; } + var arrayFormat; + if (opts.arrayFormat in arrayPrefixGenerators) { + arrayFormat = opts.arrayFormat; + } else if ('indices' in opts) { + arrayFormat = opts.indices ? 'indices' : 'repeat'; + } else { + arrayFormat = defaults.arrayFormat; + } + + if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') { + throw new TypeError('`commaRoundTrip` must be a boolean, or absent'); + } + + var allowDots = typeof opts.allowDots === 'undefined' ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots; + return { addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix, - allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots, + allowDots: allowDots, + allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays, + arrayFormat: arrayFormat, charset: charset, charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel, + commaRoundTrip: !!opts.commaRoundTrip, delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter, encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode, + encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys, encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder, encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly, filter: filter, @@ -255,16 +298,8 @@ module.exports = function (object, opts) { return ''; } - var arrayFormat; - if (opts && opts.arrayFormat in arrayPrefixGenerators) { - arrayFormat = opts.arrayFormat; - } else if (opts && 'indices' in opts) { - arrayFormat = opts.indices ? 'indices' : 'repeat'; - } else { - arrayFormat = 'indices'; - } - - var generateArrayPrefix = arrayPrefixGenerators[arrayFormat]; + var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat]; + var commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip; if (!objKeys) { objKeys = Object.keys(obj); @@ -277,16 +312,20 @@ module.exports = function (object, opts) { var sideChannel = getSideChannel(); for (var i = 0; i < objKeys.length; ++i) { var key = objKeys[i]; + var value = obj[key]; - if (options.skipNulls && obj[key] === null) { + if (options.skipNulls && value === null) { continue; } pushToArray(keys, stringify( - obj[key], + value, key, generateArrayPrefix, + commaRoundTrip, + options.allowEmptyArrays, options.strictNullHandling, options.skipNulls, + options.encodeDotInKeys, options.encode ? options.encoder : null, options.filter, options.sort, diff --git a/food-ordering-app/server/node_modules/qs/lib/utils.js b/food-ordering-app/server/node_modules/qs/lib/utils.js index 1e5453811..8e10e394d 100644 --- a/food-ordering-app/server/node_modules/qs/lib/utils.js +++ b/food-ordering-app/server/node_modules/qs/lib/utils.js @@ -1,14 +1,36 @@ 'use strict'; var formats = require('./formats'); +var getSideChannel = require('side-channel'); var has = Object.prototype.hasOwnProperty; var isArray = Array.isArray; +// Track objects created from arrayLimit overflow using side-channel +// Stores the current max numeric index for O(1) lookup +var overflowChannel = getSideChannel(); + +var markOverflow = function markOverflow(obj, maxIndex) { + overflowChannel.set(obj, maxIndex); + return obj; +}; + +var isOverflow = function isOverflow(obj) { + return overflowChannel.has(obj); +}; + +var getMaxIndex = function getMaxIndex(obj) { + return overflowChannel.get(obj); +}; + +var setMaxIndex = function setMaxIndex(obj, maxIndex) { + overflowChannel.set(obj, maxIndex); +}; + var hexTable = (function () { var array = []; for (var i = 0; i < 256; ++i) { - array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase()); + array[array.length] = '%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase(); } return array; @@ -24,7 +46,7 @@ var compactQueue = function compactQueue(queue) { for (var j = 0; j < obj.length; ++j) { if (typeof obj[j] !== 'undefined') { - compacted.push(obj[j]); + compacted[compacted.length] = obj[j]; } } @@ -34,7 +56,7 @@ var compactQueue = function compactQueue(queue) { }; var arrayToObject = function arrayToObject(source, options) { - var obj = options && options.plainObjects ? Object.create(null) : {}; + var obj = options && options.plainObjects ? { __proto__: null } : {}; for (var i = 0; i < source.length; ++i) { if (typeof source[i] !== 'undefined') { obj[i] = source[i]; @@ -50,11 +72,23 @@ var merge = function merge(target, source, options) { return target; } - if (typeof source !== 'object') { + if (typeof source !== 'object' && typeof source !== 'function') { if (isArray(target)) { - target.push(source); + var nextIndex = target.length; + if (options && typeof options.arrayLimit === 'number' && nextIndex > options.arrayLimit) { + return markOverflow(arrayToObject(target.concat(source), options), nextIndex); + } + target[nextIndex] = source; } else if (target && typeof target === 'object') { - if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) { + if (isOverflow(target)) { + // Add at next numeric index for overflow objects + var newIndex = getMaxIndex(target) + 1; + target[newIndex] = source; + setMaxIndex(target, newIndex); + } else if ( + (options && (options.plainObjects || options.allowPrototypes)) + || !has.call(Object.prototype, source) + ) { target[source] = true; } } else { @@ -65,7 +99,23 @@ var merge = function merge(target, source, options) { } if (!target || typeof target !== 'object') { - return [target].concat(source); + if (isOverflow(source)) { + // Create new object with target at 0, source values shifted by 1 + var sourceKeys = Object.keys(source); + var result = options && options.plainObjects + ? { __proto__: null, 0: target } + : { 0: target }; + for (var m = 0; m < sourceKeys.length; m++) { + var oldKey = parseInt(sourceKeys[m], 10); + result[oldKey + 1] = source[sourceKeys[m]]; + } + return markOverflow(result, getMaxIndex(source) + 1); + } + var combined = [target].concat(source); + if (options && typeof options.arrayLimit === 'number' && combined.length > options.arrayLimit) { + return markOverflow(arrayToObject(combined, options), combined.length - 1); + } + return combined; } var mergeTarget = target; @@ -80,7 +130,7 @@ var merge = function merge(target, source, options) { if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') { target[i] = merge(targetItem, item, options); } else { - target.push(item); + target[target.length] = item; } } else { target[i] = item; @@ -97,6 +147,17 @@ var merge = function merge(target, source, options) { } else { acc[key] = value; } + + if (isOverflow(source) && !isOverflow(acc)) { + markOverflow(acc, getMaxIndex(source)); + } + if (isOverflow(acc)) { + var keyNum = parseInt(key, 10); + if (String(keyNum) === key && keyNum >= 0 && keyNum > getMaxIndex(acc)) { + setMaxIndex(acc, keyNum); + } + } + return acc; }, mergeTarget); }; @@ -108,7 +169,7 @@ var assign = function assignSingleSource(target, source) { }, target); }; -var decode = function (str, decoder, charset) { +var decode = function (str, defaultDecoder, charset) { var strWithoutPlus = str.replace(/\+/g, ' '); if (charset === 'iso-8859-1') { // unescape never throws, no try...catch needed: @@ -122,6 +183,10 @@ var decode = function (str, decoder, charset) { } }; +var limit = 1024; + +/* eslint operator-linebreak: [2, "before"] */ + var encode = function encode(str, defaultEncoder, charset, kind, format) { // This code was originally written by Brian White (mscdex) for the io.js core querystring library. // It has been adapted here for stricter adherence to RFC 3986 @@ -143,45 +208,54 @@ var encode = function encode(str, defaultEncoder, charset, kind, format) { } var out = ''; - for (var i = 0; i < string.length; ++i) { - var c = string.charCodeAt(i); - - if ( - c === 0x2D // - - || c === 0x2E // . - || c === 0x5F // _ - || c === 0x7E // ~ - || (c >= 0x30 && c <= 0x39) // 0-9 - || (c >= 0x41 && c <= 0x5A) // a-z - || (c >= 0x61 && c <= 0x7A) // A-Z - || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( ) - ) { - out += string.charAt(i); - continue; - } + for (var j = 0; j < string.length; j += limit) { + var segment = string.length >= limit ? string.slice(j, j + limit) : string; + var arr = []; + + for (var i = 0; i < segment.length; ++i) { + var c = segment.charCodeAt(i); + if ( + c === 0x2D // - + || c === 0x2E // . + || c === 0x5F // _ + || c === 0x7E // ~ + || (c >= 0x30 && c <= 0x39) // 0-9 + || (c >= 0x41 && c <= 0x5A) // a-z + || (c >= 0x61 && c <= 0x7A) // A-Z + || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( ) + ) { + arr[arr.length] = segment.charAt(i); + continue; + } - if (c < 0x80) { - out = out + hexTable[c]; - continue; - } + if (c < 0x80) { + arr[arr.length] = hexTable[c]; + continue; + } - if (c < 0x800) { - out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]); - continue; - } + if (c < 0x800) { + arr[arr.length] = hexTable[0xC0 | (c >> 6)] + + hexTable[0x80 | (c & 0x3F)]; + continue; + } + + if (c < 0xD800 || c >= 0xE000) { + arr[arr.length] = hexTable[0xE0 | (c >> 12)] + + hexTable[0x80 | ((c >> 6) & 0x3F)] + + hexTable[0x80 | (c & 0x3F)]; + continue; + } - if (c < 0xD800 || c >= 0xE000) { - out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]); - continue; + i += 1; + c = 0x10000 + (((c & 0x3FF) << 10) | (segment.charCodeAt(i) & 0x3FF)); + + arr[arr.length] = hexTable[0xF0 | (c >> 18)] + + hexTable[0x80 | ((c >> 12) & 0x3F)] + + hexTable[0x80 | ((c >> 6) & 0x3F)] + + hexTable[0x80 | (c & 0x3F)]; } - i += 1; - c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF)); - /* eslint operator-linebreak: [2, "before"] */ - out += hexTable[0xF0 | (c >> 18)] - + hexTable[0x80 | ((c >> 12) & 0x3F)] - + hexTable[0x80 | ((c >> 6) & 0x3F)] - + hexTable[0x80 | (c & 0x3F)]; + out += arr.join(''); } return out; @@ -200,8 +274,8 @@ var compact = function compact(value) { var key = keys[j]; var val = obj[key]; if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) { - queue.push({ obj: obj, prop: key }); - refs.push(val); + queue[queue.length] = { obj: obj, prop: key }; + refs[refs.length] = val; } } } @@ -223,15 +297,27 @@ var isBuffer = function isBuffer(obj) { return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj)); }; -var combine = function combine(a, b) { - return [].concat(a, b); +var combine = function combine(a, b, arrayLimit, plainObjects) { + // If 'a' is already an overflow object, add to it + if (isOverflow(a)) { + var newIndex = getMaxIndex(a) + 1; + a[newIndex] = b; + setMaxIndex(a, newIndex); + return a; + } + + var result = [].concat(a, b); + if (result.length > arrayLimit) { + return markOverflow(arrayToObject(result, { plainObjects: plainObjects }), result.length - 1); + } + return result; }; var maybeMap = function maybeMap(val, fn) { if (isArray(val)) { var mapped = []; for (var i = 0; i < val.length; i += 1) { - mapped.push(fn(val[i])); + mapped[mapped.length] = fn(val[i]); } return mapped; } @@ -246,7 +332,9 @@ module.exports = { decode: decode, encode: encode, isBuffer: isBuffer, + isOverflow: isOverflow, isRegExp: isRegExp, + markOverflow: markOverflow, maybeMap: maybeMap, merge: merge }; diff --git a/food-ordering-app/server/node_modules/qs/package.json b/food-ordering-app/server/node_modules/qs/package.json index 845e20a2c..cb5cfbe02 100644 --- a/food-ordering-app/server/node_modules/qs/package.json +++ b/food-ordering-app/server/node_modules/qs/package.json @@ -2,7 +2,7 @@ "name": "qs", "description": "A querystring parser that supports nesting and arrays, with a depth limit", "homepage": "https://github.com/ljharb/qs", - "version": "6.10.3", + "version": "6.14.2", "repository": { "type": "git", "url": "https://github.com/ljharb/qs.git" @@ -11,6 +11,7 @@ "url": "https://github.com/sponsors/ljharb" }, "main": "lib/index.js", + "sideEffects": false, "contributors": [ { "name": "Jordan Harband", @@ -30,44 +31,64 @@ "node": ">=0.6" }, "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.1.0" }, "devDependencies": { - "@ljharb/eslint-config": "^20.1.0", - "aud": "^1.1.5", + "@browserify/envify": "^6.0.0", + "@browserify/uglifyify": "^6.0.0", + "@ljharb/eslint-config": "^22.1.3", "browserify": "^16.5.2", + "bundle-collapser": "^1.4.0", + "common-shakeify": "~1.0.0", "eclint": "^2.8.1", - "eslint": "^8.6.0", + "es-value-fixtures": "^1.7.1", + "eslint": "^9.39.2", "evalmd": "^0.0.19", - "for-each": "^0.3.3", - "has-symbols": "^1.0.2", + "for-each": "^0.3.5", + "glob": "=10.3.7", + "has-bigints": "^1.1.0", + "has-override-mistake": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", "iconv-lite": "^0.5.1", "in-publish": "^2.0.1", + "jackspeak": "=2.1.1", + "jiti": "^0.0.0", "mkdirp": "^0.5.5", + "mock-property": "^1.1.0", + "module-deps": "^6.2.3", + "npmignore": "^0.3.5", "nyc": "^10.3.2", - "object-inspect": "^1.12.0", + "object-inspect": "^1.13.4", "qs-iconv": "^1.0.4", "safe-publish-latest": "^2.0.0", "safer-buffer": "^2.1.2", - "tape": "^5.4.0" + "tape": "^5.9.0", + "unassertify": "^3.0.1" }, "scripts": { - "prepublishOnly": "safe-publish-latest && npm run dist", + "prepack": "npmignore --auto --commentLines=autogenerated && npm run dist", + "prepublishOnly": "safe-publish-latest", "prepublish": "not-in-publish || npm run prepublishOnly", "pretest": "npm run --silent readme && npm run --silent lint", "test": "npm run tests-only", "tests-only": "nyc tape 'test/**/*.js'", - "posttest": "aud --production", + "posttest": "npx npm@'>=10.2' audit --production", "readme": "evalmd README.md", - "postlint": "eclint check * lib/* test/* !dist/*", + "postlint": "eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git' | grep -v dist/)", "lint": "eslint .", - "dist": "mkdirp dist && browserify --standalone Qs lib/index.js > dist/qs.js" + "dist": "mkdirp dist && browserify --standalone Qs -g unassertify -g @browserify/envify -g [@browserify/uglifyify --mangle.keep_fnames --compress.keep_fnames --format.indent_level=1 --compress.arrows=false --compress.passes=4 --compress.typeofs=false] -p common-shakeify -p bundle-collapser/plugin lib/index.js > dist/qs.js" }, "license": "BSD-3-Clause", - "greenkeeper": { + "publishConfig": { "ignore": [ - "iconv-lite", - "mkdirp" + "!dist/*", + "bower.json", + "component.json", + ".github/workflows", + "logos", + "tea.yaml" ] } } diff --git a/food-ordering-app/server/node_modules/qs/test/empty-keys-cases.js b/food-ordering-app/server/node_modules/qs/test/empty-keys-cases.js new file mode 100644 index 000000000..2b1190ef5 --- /dev/null +++ b/food-ordering-app/server/node_modules/qs/test/empty-keys-cases.js @@ -0,0 +1,267 @@ +'use strict'; + +module.exports = { + emptyTestCases: [ + { + input: '&', + withEmptyKeys: {}, + stringifyOutput: { + brackets: '', + indices: '', + repeat: '' + }, + noEmptyKeys: {} + }, + { + input: '&&', + withEmptyKeys: {}, + stringifyOutput: { + brackets: '', + indices: '', + repeat: '' + }, + noEmptyKeys: {} + }, + { + input: '&=', + withEmptyKeys: { '': '' }, + stringifyOutput: { + brackets: '=', + indices: '=', + repeat: '=' + }, + noEmptyKeys: {} + }, + { + input: '&=&', + withEmptyKeys: { '': '' }, + stringifyOutput: { + brackets: '=', + indices: '=', + repeat: '=' + }, + noEmptyKeys: {} + }, + { + input: '&=&=', + withEmptyKeys: { '': ['', ''] }, + stringifyOutput: { + brackets: '[]=&[]=', + indices: '[0]=&[1]=', + repeat: '=&=' + }, + noEmptyKeys: {} + }, + { + input: '&=&=&', + withEmptyKeys: { '': ['', ''] }, + stringifyOutput: { + brackets: '[]=&[]=', + indices: '[0]=&[1]=', + repeat: '=&=' + }, + noEmptyKeys: {} + }, + { + input: '=', + withEmptyKeys: { '': '' }, + noEmptyKeys: {}, + stringifyOutput: { + brackets: '=', + indices: '=', + repeat: '=' + } + }, + { + input: '=&', + withEmptyKeys: { '': '' }, + stringifyOutput: { + brackets: '=', + indices: '=', + repeat: '=' + }, + noEmptyKeys: {} + }, + { + input: '=&&&', + withEmptyKeys: { '': '' }, + stringifyOutput: { + brackets: '=', + indices: '=', + repeat: '=' + }, + noEmptyKeys: {} + }, + { + input: '=&=&=&', + withEmptyKeys: { '': ['', '', ''] }, + stringifyOutput: { + brackets: '[]=&[]=&[]=', + indices: '[0]=&[1]=&[2]=', + repeat: '=&=&=' + }, + noEmptyKeys: {} + }, + { + input: '=&a[]=b&a[1]=c', + withEmptyKeys: { '': '', a: ['b', 'c'] }, + stringifyOutput: { + brackets: '=&a[]=b&a[]=c', + indices: '=&a[0]=b&a[1]=c', + repeat: '=&a=b&a=c' + }, + noEmptyKeys: { a: ['b', 'c'] } + }, + { + input: '=a', + withEmptyKeys: { '': 'a' }, + noEmptyKeys: {}, + stringifyOutput: { + brackets: '=a', + indices: '=a', + repeat: '=a' + } + }, + { + input: 'a==a', + withEmptyKeys: { a: '=a' }, + noEmptyKeys: { a: '=a' }, + stringifyOutput: { + brackets: 'a==a', + indices: 'a==a', + repeat: 'a==a' + } + }, + { + input: '=&a[]=b', + withEmptyKeys: { '': '', a: ['b'] }, + stringifyOutput: { + brackets: '=&a[]=b', + indices: '=&a[0]=b', + repeat: '=&a=b' + }, + noEmptyKeys: { a: ['b'] } + }, + { + input: '=&a[]=b&a[]=c&a[2]=d', + withEmptyKeys: { '': '', a: ['b', 'c', 'd'] }, + stringifyOutput: { + brackets: '=&a[]=b&a[]=c&a[]=d', + indices: '=&a[0]=b&a[1]=c&a[2]=d', + repeat: '=&a=b&a=c&a=d' + }, + noEmptyKeys: { a: ['b', 'c', 'd'] } + }, + { + input: '=a&=b', + withEmptyKeys: { '': ['a', 'b'] }, + stringifyOutput: { + brackets: '[]=a&[]=b', + indices: '[0]=a&[1]=b', + repeat: '=a&=b' + }, + noEmptyKeys: {} + }, + { + input: '=a&foo=b', + withEmptyKeys: { '': 'a', foo: 'b' }, + noEmptyKeys: { foo: 'b' }, + stringifyOutput: { + brackets: '=a&foo=b', + indices: '=a&foo=b', + repeat: '=a&foo=b' + } + }, + { + input: 'a[]=b&a=c&=', + withEmptyKeys: { '': '', a: ['b', 'c'] }, + stringifyOutput: { + brackets: '=&a[]=b&a[]=c', + indices: '=&a[0]=b&a[1]=c', + repeat: '=&a=b&a=c' + }, + noEmptyKeys: { a: ['b', 'c'] } + }, + { + input: 'a[]=b&a=c&=', + withEmptyKeys: { '': '', a: ['b', 'c'] }, + stringifyOutput: { + brackets: '=&a[]=b&a[]=c', + indices: '=&a[0]=b&a[1]=c', + repeat: '=&a=b&a=c' + }, + noEmptyKeys: { a: ['b', 'c'] } + }, + { + input: 'a[0]=b&a=c&=', + withEmptyKeys: { '': '', a: ['b', 'c'] }, + stringifyOutput: { + brackets: '=&a[]=b&a[]=c', + indices: '=&a[0]=b&a[1]=c', + repeat: '=&a=b&a=c' + }, + noEmptyKeys: { a: ['b', 'c'] } + }, + { + input: 'a=b&a[]=c&=', + withEmptyKeys: { '': '', a: ['b', 'c'] }, + stringifyOutput: { + brackets: '=&a[]=b&a[]=c', + indices: '=&a[0]=b&a[1]=c', + repeat: '=&a=b&a=c' + }, + noEmptyKeys: { a: ['b', 'c'] } + }, + { + input: 'a=b&a[0]=c&=', + withEmptyKeys: { '': '', a: ['b', 'c'] }, + stringifyOutput: { + brackets: '=&a[]=b&a[]=c', + indices: '=&a[0]=b&a[1]=c', + repeat: '=&a=b&a=c' + }, + noEmptyKeys: { a: ['b', 'c'] } + }, + { + input: '[]=a&[]=b& []=1', + withEmptyKeys: { '': ['a', 'b'], ' ': ['1'] }, + stringifyOutput: { + brackets: '[]=a&[]=b& []=1', + indices: '[0]=a&[1]=b& [0]=1', + repeat: '=a&=b& =1' + }, + noEmptyKeys: { 0: 'a', 1: 'b', ' ': ['1'] } + }, + { + input: '[0]=a&[1]=b&a[0]=1&a[1]=2', + withEmptyKeys: { '': ['a', 'b'], a: ['1', '2'] }, + noEmptyKeys: { 0: 'a', 1: 'b', a: ['1', '2'] }, + stringifyOutput: { + brackets: '[]=a&[]=b&a[]=1&a[]=2', + indices: '[0]=a&[1]=b&a[0]=1&a[1]=2', + repeat: '=a&=b&a=1&a=2' + } + }, + { + input: '[deep]=a&[deep]=2', + withEmptyKeys: { '': { deep: ['a', '2'] } + }, + stringifyOutput: { + brackets: '[deep][]=a&[deep][]=2', + indices: '[deep][0]=a&[deep][1]=2', + repeat: '[deep]=a&[deep]=2' + }, + noEmptyKeys: { deep: ['a', '2'] } + }, + { + input: '%5B0%5D=a&%5B1%5D=b', + withEmptyKeys: { '': ['a', 'b'] }, + stringifyOutput: { + brackets: '[]=a&[]=b', + indices: '[0]=a&[1]=b', + repeat: '=a&=b' + }, + noEmptyKeys: { 0: 'a', 1: 'b' } + } + ] +}; diff --git a/food-ordering-app/server/node_modules/qs/test/parse.js b/food-ordering-app/server/node_modules/qs/test/parse.js index 7d61023e9..6234fefaa 100644 --- a/food-ordering-app/server/node_modules/qs/test/parse.js +++ b/food-ordering-app/server/node_modules/qs/test/parse.js @@ -1,10 +1,18 @@ 'use strict'; var test = require('tape'); -var qs = require('../'); -var utils = require('../lib/utils'); +var hasPropertyDescriptors = require('has-property-descriptors')(); var iconv = require('iconv-lite'); +var mockProperty = require('mock-property'); +var hasOverrideMistake = require('has-override-mistake')(); var SaferBuffer = require('safer-buffer').Buffer; +var v = require('es-value-fixtures'); +var inspect = require('object-inspect'); +var emptyTestCases = require('./empty-keys-cases').emptyTestCases; +var hasProto = require('has-proto')(); + +var qs = require('../'); +var utils = require('../lib/utils'); test('parse()', function (t) { t.test('parses a simple string', function (st) { @@ -32,41 +40,156 @@ test('parse()', function (t) { st.end(); }); - t.test('arrayFormat: brackets allows only explicit arrays', function (st) { - st.deepEqual(qs.parse('a[]=b&a[]=c', { arrayFormat: 'brackets' }), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a[0]=b&a[1]=c', { arrayFormat: 'brackets' }), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a=b,c', { arrayFormat: 'brackets' }), { a: 'b,c' }); - st.deepEqual(qs.parse('a=b&a=c', { arrayFormat: 'brackets' }), { a: ['b', 'c'] }); + t.test('comma: false', function (st) { + st.deepEqual(qs.parse('a[]=b&a[]=c'), { a: ['b', 'c'] }); + st.deepEqual(qs.parse('a[0]=b&a[1]=c'), { a: ['b', 'c'] }); + st.deepEqual(qs.parse('a=b,c'), { a: 'b,c' }); + st.deepEqual(qs.parse('a=b&a=c'), { a: ['b', 'c'] }); st.end(); }); - t.test('arrayFormat: indices allows only indexed arrays', function (st) { - st.deepEqual(qs.parse('a[]=b&a[]=c', { arrayFormat: 'indices' }), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a[0]=b&a[1]=c', { arrayFormat: 'indices' }), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a=b,c', { arrayFormat: 'indices' }), { a: 'b,c' }); - st.deepEqual(qs.parse('a=b&a=c', { arrayFormat: 'indices' }), { a: ['b', 'c'] }); + t.test('comma: true', function (st) { + st.deepEqual(qs.parse('a[]=b&a[]=c', { comma: true }), { a: ['b', 'c'] }); + st.deepEqual(qs.parse('a[0]=b&a[1]=c', { comma: true }), { a: ['b', 'c'] }); + st.deepEqual(qs.parse('a=b,c', { comma: true }), { a: ['b', 'c'] }); + st.deepEqual(qs.parse('a=b&a=c', { comma: true }), { a: ['b', 'c'] }); st.end(); }); - t.test('arrayFormat: comma allows only comma-separated arrays', function (st) { - st.deepEqual(qs.parse('a[]=b&a[]=c', { arrayFormat: 'comma' }), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a[0]=b&a[1]=c', { arrayFormat: 'comma' }), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a=b,c', { arrayFormat: 'comma' }), { a: 'b,c' }); - st.deepEqual(qs.parse('a=b&a=c', { arrayFormat: 'comma' }), { a: ['b', 'c'] }); + t.test('allows enabling dot notation', function (st) { + st.deepEqual(qs.parse('a.b=c'), { 'a.b': 'c' }); + st.deepEqual(qs.parse('a.b=c', { allowDots: true }), { a: { b: 'c' } }); + st.end(); }); - t.test('arrayFormat: repeat allows only repeated values', function (st) { - st.deepEqual(qs.parse('a[]=b&a[]=c', { arrayFormat: 'repeat' }), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a[0]=b&a[1]=c', { arrayFormat: 'repeat' }), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a=b,c', { arrayFormat: 'repeat' }), { a: 'b,c' }); - st.deepEqual(qs.parse('a=b&a=c', { arrayFormat: 'repeat' }), { a: ['b', 'c'] }); + t.test('decode dot keys correctly', function (st) { + st.deepEqual( + qs.parse('name%252Eobj.first=John&name%252Eobj.last=Doe', { allowDots: false, decodeDotInKeys: false }), + { 'name%2Eobj.first': 'John', 'name%2Eobj.last': 'Doe' }, + 'with allowDots false and decodeDotInKeys false' + ); + st.deepEqual( + qs.parse('name.obj.first=John&name.obj.last=Doe', { allowDots: true, decodeDotInKeys: false }), + { name: { obj: { first: 'John', last: 'Doe' } } }, + 'with allowDots false and decodeDotInKeys false' + ); + st.deepEqual( + qs.parse('name%252Eobj.first=John&name%252Eobj.last=Doe', { allowDots: true, decodeDotInKeys: false }), + { 'name%2Eobj': { first: 'John', last: 'Doe' } }, + 'with allowDots true and decodeDotInKeys false' + ); + st.deepEqual( + qs.parse('name%252Eobj.first=John&name%252Eobj.last=Doe', { allowDots: true, decodeDotInKeys: true }), + { 'name.obj': { first: 'John', last: 'Doe' } }, + 'with allowDots true and decodeDotInKeys true' + ); + + st.deepEqual( + qs.parse( + 'name%252Eobj%252Esubobject.first%252Egodly%252Ename=John&name%252Eobj%252Esubobject.last=Doe', + { allowDots: false, decodeDotInKeys: false } + ), + { 'name%2Eobj%2Esubobject.first%2Egodly%2Ename': 'John', 'name%2Eobj%2Esubobject.last': 'Doe' }, + 'with allowDots false and decodeDotInKeys false' + ); + st.deepEqual( + qs.parse( + 'name.obj.subobject.first.godly.name=John&name.obj.subobject.last=Doe', + { allowDots: true, decodeDotInKeys: false } + ), + { name: { obj: { subobject: { first: { godly: { name: 'John' } }, last: 'Doe' } } } }, + 'with allowDots true and decodeDotInKeys false' + ); + st.deepEqual( + qs.parse( + 'name%252Eobj%252Esubobject.first%252Egodly%252Ename=John&name%252Eobj%252Esubobject.last=Doe', + { allowDots: true, decodeDotInKeys: true } + ), + { 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } }, + 'with allowDots true and decodeDotInKeys true' + ); + st.deepEqual( + qs.parse('name%252Eobj.first=John&name%252Eobj.last=Doe'), + { 'name%2Eobj.first': 'John', 'name%2Eobj.last': 'Doe' }, + 'with allowDots and decodeDotInKeys undefined' + ); + st.end(); }); - t.test('allows enabling dot notation', function (st) { - st.deepEqual(qs.parse('a.b=c'), { 'a.b': 'c' }); - st.deepEqual(qs.parse('a.b=c', { allowDots: true }), { a: { b: 'c' } }); + t.test('decodes dot in key of object, and allow enabling dot notation when decodeDotInKeys is set to true and allowDots is undefined', function (st) { + st.deepEqual( + qs.parse( + 'name%252Eobj%252Esubobject.first%252Egodly%252Ename=John&name%252Eobj%252Esubobject.last=Doe', + { decodeDotInKeys: true } + ), + { 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } }, + 'with allowDots undefined and decodeDotInKeys true' + ); + + st.end(); + }); + + t.test('throws when decodeDotInKeys is not of type boolean', function (st) { + st['throws']( + function () { qs.parse('foo[]&bar=baz', { decodeDotInKeys: 'foobar' }); }, + TypeError + ); + + st['throws']( + function () { qs.parse('foo[]&bar=baz', { decodeDotInKeys: 0 }); }, + TypeError + ); + st['throws']( + function () { qs.parse('foo[]&bar=baz', { decodeDotInKeys: NaN }); }, + TypeError + ); + + st['throws']( + function () { qs.parse('foo[]&bar=baz', { decodeDotInKeys: null }); }, + TypeError + ); + + st.end(); + }); + + t.test('allows empty arrays in obj values', function (st) { + st.deepEqual(qs.parse('foo[]&bar=baz', { allowEmptyArrays: true }), { foo: [], bar: 'baz' }); + st.deepEqual(qs.parse('foo[]&bar=baz', { allowEmptyArrays: false }), { foo: [''], bar: 'baz' }); + + st.end(); + }); + + t.test('throws when allowEmptyArrays is not of type boolean', function (st) { + st['throws']( + function () { qs.parse('foo[]&bar=baz', { allowEmptyArrays: 'foobar' }); }, + TypeError + ); + + st['throws']( + function () { qs.parse('foo[]&bar=baz', { allowEmptyArrays: 0 }); }, + TypeError + ); + st['throws']( + function () { qs.parse('foo[]&bar=baz', { allowEmptyArrays: NaN }); }, + TypeError + ); + + st['throws']( + function () { qs.parse('foo[]&bar=baz', { allowEmptyArrays: null }); }, + TypeError + ); + + st.end(); + }); + + t.test('allowEmptyArrays + strictNullHandling', function (st) { + st.deepEqual( + qs.parse('testEmptyArray[]', { strictNullHandling: true, allowEmptyArrays: true }), + { testEmptyArray: [] } + ); + st.end(); }); @@ -112,11 +235,11 @@ test('parse()', function (t) { st.deepEqual(qs.parse('a=b&a[0]=c'), { a: ['b', 'c'] }); st.deepEqual(qs.parse('a[1]=b&a=c', { arrayLimit: 20 }), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a[]=b&a=c', { arrayLimit: 0 }), { a: ['b', 'c'] }); + st.deepEqual(qs.parse('a[]=b&a=c', { arrayLimit: 0 }), { a: { 0: 'b', 1: 'c' } }); st.deepEqual(qs.parse('a[]=b&a=c'), { a: ['b', 'c'] }); st.deepEqual(qs.parse('a=b&a[1]=c', { arrayLimit: 20 }), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a=b&a[]=c', { arrayLimit: 0 }), { a: ['b', 'c'] }); + st.deepEqual(qs.parse('a=b&a[]=c', { arrayLimit: 0 }), { a: { 0: 'b', 1: 'c' } }); st.deepEqual(qs.parse('a=b&a[]=c'), { a: ['b', 'c'] }); st.end(); @@ -138,8 +261,11 @@ test('parse()', function (t) { }); t.test('limits specific array indices to arrayLimit', function (st) { - st.deepEqual(qs.parse('a[20]=a', { arrayLimit: 20 }), { a: ['a'] }); - st.deepEqual(qs.parse('a[21]=a', { arrayLimit: 20 }), { a: { 21: 'a' } }); + st.deepEqual(qs.parse('a[19]=a', { arrayLimit: 20 }), { a: ['a'] }); + st.deepEqual(qs.parse('a[20]=a', { arrayLimit: 20 }), { a: { 20: 'a' } }); + + st.deepEqual(qs.parse('a[19]=a'), { a: ['a'] }); + st.deepEqual(qs.parse('a[20]=a'), { a: { 20: 'a' } }); st.end(); }); @@ -238,7 +364,7 @@ test('parse()', function (t) { ); st.deepEqual( qs.parse('a[]=b&a[]&a[]=c&a[]=', { strictNullHandling: true, arrayLimit: 0 }), - { a: ['b', null, 'c', ''] }, + { a: { 0: 'b', 1: null, 2: 'c', 3: '' } }, 'with arrayLimit 0 + array brackets: null then empty string works' ); @@ -249,7 +375,7 @@ test('parse()', function (t) { ); st.deepEqual( qs.parse('a[]=b&a[]=&a[]=c&a[]', { strictNullHandling: true, arrayLimit: 0 }), - { a: ['b', '', 'c', null] }, + { a: { 0: 'b', 1: '', 2: 'c', 3: null } }, 'with arrayLimit 0 + array brackets: empty string then null works' ); @@ -318,15 +444,15 @@ test('parse()', function (t) { st.end(); }); - t.test('should not throw when a native prototype has an enumerable property', function (st) { - Object.prototype.crash = ''; - Array.prototype.crash = ''; + t.test('does not throw when a native prototype has an enumerable property', function (st) { + st.intercept(Object.prototype, 'crash', { value: '' }); + st.intercept(Array.prototype, 'crash', { value: '' }); + st.doesNotThrow(qs.parse.bind(null, 'a=b')); st.deepEqual(qs.parse('a=b'), { a: 'b' }); st.doesNotThrow(qs.parse.bind(null, 'a[][b]=c')); st.deepEqual(qs.parse('a[][b]=c'), { a: [{ b: 'c' }] }); - delete Object.prototype.crash; - delete Array.prototype.crash; + st.end(); }); @@ -357,8 +483,14 @@ test('parse()', function (t) { t.test('allows overriding array limit', function (st) { st.deepEqual(qs.parse('a[0]=b', { arrayLimit: -1 }), { a: { 0: 'b' } }); + st.deepEqual(qs.parse('a[0]=b', { arrayLimit: 0 }), { a: { 0: 'b' } }); + st.deepEqual(qs.parse('a[-1]=b', { arrayLimit: -1 }), { a: { '-1': 'b' } }); + st.deepEqual(qs.parse('a[-1]=b', { arrayLimit: 0 }), { a: { '-1': 'b' } }); + + st.deepEqual(qs.parse('a[0]=b&a[1]=c', { arrayLimit: -1 }), { a: { 0: 'b', 1: 'c' } }); st.deepEqual(qs.parse('a[0]=b&a[1]=c', { arrayLimit: 0 }), { a: { 0: 'b', 1: 'c' } }); + st.end(); }); @@ -378,6 +510,7 @@ test('parse()', function (t) { st.deepEqual(qs.parse('?foo=bar', { ignoreQueryPrefix: true }), { foo: 'bar' }); st.deepEqual(qs.parse('foo=bar', { ignoreQueryPrefix: true }), { foo: 'bar' }); st.deepEqual(qs.parse('?foo=bar', { ignoreQueryPrefix: false }), { '?foo': 'bar' }); + st.end(); }); @@ -406,6 +539,16 @@ test('parse()', function (t) { st.deepEqual(qs.parse('foo=', { comma: true }), { foo: '' }); st.deepEqual(qs.parse('foo', { comma: true }), { foo: '' }); st.deepEqual(qs.parse('foo', { comma: true, strictNullHandling: true }), { foo: null }); + + // test cases inversed from from stringify tests + st.deepEqual(qs.parse('a[0]=c'), { a: ['c'] }); + st.deepEqual(qs.parse('a[]=c'), { a: ['c'] }); + st.deepEqual(qs.parse('a[]=c', { comma: true }), { a: ['c'] }); + + st.deepEqual(qs.parse('a[0]=c&a[1]=d'), { a: ['c', 'd'] }); + st.deepEqual(qs.parse('a[]=c&a[]=d'), { a: ['c', 'd'] }); + st.deepEqual(qs.parse('a=c,d', { comma: true }), { a: ['c', 'd'] }); + st.end(); }); @@ -438,6 +581,15 @@ test('parse()', function (t) { st.end(); }); + t.test('parses url-encoded brackets holds array of arrays when having two parts of strings with comma as array divider', function (st) { + st.deepEqual(qs.parse('foo%5B%5D=1,2,3&foo%5B%5D=4,5,6', { comma: true }), { foo: [['1', '2', '3'], ['4', '5', '6']] }); + st.deepEqual(qs.parse('foo%5B%5D=1,2,3&foo%5B%5D=', { comma: true }), { foo: [['1', '2', '3'], ''] }); + st.deepEqual(qs.parse('foo%5B%5D=1,2,3&foo%5B%5D=,', { comma: true }), { foo: [['1', '2', '3'], ['', '']] }); + st.deepEqual(qs.parse('foo%5B%5D=1,2,3&foo%5B%5D=a', { comma: true }), { foo: [['1', '2', '3'], 'a'] }); + + st.end(); + }); + t.test('parses comma delimited array while having percent-encoded comma treated as normal text', function (st) { st.deepEqual(qs.parse('foo=a%2Cb', { comma: true }), { foo: 'a,b' }); st.deepEqual(qs.parse('foo=a%2C%20b,d', { comma: true }), { foo: ['a, b', 'd'] }); @@ -485,10 +637,12 @@ test('parse()', function (t) { }); t.test('does not blow up when Buffer global is missing', function (st) { - var tempBuffer = global.Buffer; - delete global.Buffer; + var restore = mockProperty(global, 'Buffer', { 'delete': true }); + var result = qs.parse('a=b&c=d'); - global.Buffer = tempBuffer; + + restore(); + st.deepEqual(result, { a: 'b', c: 'd' }); st.end(); }); @@ -538,9 +692,8 @@ test('parse()', function (t) { st.end(); }); - t.test('parses null objects correctly', { skip: !Object.create }, function (st) { - var a = Object.create(null); - a.b = 'c'; + t.test('parses null objects correctly', { skip: !hasProto }, function (st) { + var a = { __proto__: null, b: 'c' }; st.deepEqual(qs.parse(a), { b: 'c' }); var result = qs.parse({ a: a }); @@ -587,6 +740,34 @@ test('parse()', function (t) { st.end(); }); + t.test('does not crash when the global Object prototype is frozen', { skip: !hasPropertyDescriptors || !hasOverrideMistake }, function (st) { + // We can't actually freeze the global Object prototype as that will interfere with other tests, and once an object is frozen, it + // can't be unfrozen. Instead, we add a new non-writable property to simulate this. + st.teardown(mockProperty(Object.prototype, 'frozenProp', { value: 'foo', nonWritable: true, nonEnumerable: true })); + + st['throws']( + function () { + var obj = {}; + obj.frozenProp = 'bar'; + }, + // node < 6 has a different error message + /^TypeError: Cannot assign to read only property 'frozenProp' of (?:object '#'|#)/, + 'regular assignment of an inherited non-writable property throws' + ); + + var parsed; + st.doesNotThrow( + function () { + parsed = qs.parse('frozenProp', { allowPrototypes: false }); + }, + 'parsing a nonwritable Object.prototype property does not throw' + ); + + st.deepEqual(parsed, {}, 'bare "frozenProp" results in {}'); + + st.end(); + }); + t.test('params starting with a closing bracket', function (st) { st.deepEqual(qs.parse(']=toString'), { ']': 'toString' }); st.deepEqual(qs.parse(']]=toString'), { ']]': 'toString' }); @@ -689,17 +870,25 @@ test('parse()', function (t) { st.end(); }); - t.test('can return null objects', { skip: !Object.create }, function (st) { - var expected = Object.create(null); - expected.a = Object.create(null); - expected.a.b = 'c'; - expected.a.hasOwnProperty = 'd'; + t.test('can return null objects', { skip: !hasProto }, function (st) { + var expected = { + __proto__: null, + a: { + __proto__: null, + b: 'c', + hasOwnProperty: 'd' + } + }; st.deepEqual(qs.parse('a[b]=c&a[hasOwnProperty]=d', { plainObjects: true }), expected); - st.deepEqual(qs.parse(null, { plainObjects: true }), Object.create(null)); - var expectedArray = Object.create(null); - expectedArray.a = Object.create(null); - expectedArray.a[0] = 'b'; - expectedArray.a.c = 'd'; + st.deepEqual(qs.parse(null, { plainObjects: true }), { __proto__: null }); + var expectedArray = { + __proto__: null, + a: { + __proto__: null, + 0: 'b', + c: 'd' + } + }; st.deepEqual(qs.parse('a[]=b&a[c]=d', { plainObjects: true }), expectedArray); st.end(); }); @@ -776,7 +965,7 @@ test('parse()', function (t) { st.end(); }); - t.test('should ignore an utf8 sentinel with an unknown value', function (st) { + t.test('ignores an utf8 sentinel with an unknown value', function (st) { st.deepEqual(qs.parse('utf8=foo&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true, charset: 'utf-8' }), { ø: 'ø' }); st.end(); }); @@ -807,6 +996,20 @@ test('parse()', function (t) { st.end(); }); + t.test('handles a custom decoder returning `null`, with a string key of `null`', function (st) { + st.deepEqual( + qs.parse('null=1&ToNull=2', { + decoder: function (str, defaultDecoder, charset) { + return str === 'ToNull' ? null : defaultDecoder(str, defaultDecoder, charset); + } + }), + { 'null': '1' }, + '"null" key is not overridden by `null` decoder result' + ); + + st.end(); + }); + t.test('does not interpret numeric entities in iso-8859-1 when `interpretNumericEntities` is absent', function (st) { st.deepEqual(qs.parse('foo=' + urlEncodedNumSmiley, { charset: 'iso-8859-1' }), { foo: '☺' }); st.end(); @@ -817,6 +1020,15 @@ test('parse()', function (t) { st.end(); }); + t.test('interpretNumericEntities with comma:true and iso charset does not crash', function (st) { + st.deepEqual( + qs.parse('b&a[]=1,' + urlEncodedNumSmiley, { comma: true, charset: 'iso-8859-1', interpretNumericEntities: true }), + { b: '', a: ['1,☺'] } + ); + + st.end(); + }); + t.test('does not interpret %uXXXX syntax in iso-8859-1 mode', function (st) { st.deepEqual(qs.parse('%u263A=%u263A', { charset: 'iso-8859-1' }), { '%u263A': '%u263A' }); st.end(); @@ -837,5 +1049,464 @@ test('parse()', function (t) { st.end(); }); + t.test('parameter limit tests', function (st) { + st.test('does not throw error when within parameter limit', function (sst) { + var result = qs.parse('a=1&b=2&c=3', { parameterLimit: 5, throwOnLimitExceeded: true }); + sst.deepEqual(result, { a: '1', b: '2', c: '3' }, 'parses without errors'); + sst.end(); + }); + + st.test('throws error when throwOnLimitExceeded is present but not boolean', function (sst) { + sst['throws']( + function () { + qs.parse('a=1&b=2&c=3&d=4&e=5&f=6', { parameterLimit: 3, throwOnLimitExceeded: 'true' }); + }, + new TypeError('`throwOnLimitExceeded` option must be a boolean'), + 'throws error when throwOnLimitExceeded is present and not boolean' + ); + sst.end(); + }); + + st.test('throws error when parameter limit exceeded', function (sst) { + sst['throws']( + function () { + qs.parse('a=1&b=2&c=3&d=4&e=5&f=6', { parameterLimit: 3, throwOnLimitExceeded: true }); + }, + new RangeError('Parameter limit exceeded. Only 3 parameters allowed.'), + 'throws error when parameter limit is exceeded' + ); + sst.end(); + }); + + st.test('silently truncates when throwOnLimitExceeded is not given', function (sst) { + var result = qs.parse('a=1&b=2&c=3&d=4&e=5', { parameterLimit: 3 }); + sst.deepEqual(result, { a: '1', b: '2', c: '3' }, 'parses and truncates silently'); + sst.end(); + }); + + st.test('silently truncates when parameter limit exceeded without error', function (sst) { + var result = qs.parse('a=1&b=2&c=3&d=4&e=5', { parameterLimit: 3, throwOnLimitExceeded: false }); + sst.deepEqual(result, { a: '1', b: '2', c: '3' }, 'parses and truncates silently'); + sst.end(); + }); + + st.test('allows unlimited parameters when parameterLimit set to Infinity', function (sst) { + var result = qs.parse('a=1&b=2&c=3&d=4&e=5&f=6', { parameterLimit: Infinity }); + sst.deepEqual(result, { a: '1', b: '2', c: '3', d: '4', e: '5', f: '6' }, 'parses all parameters without truncation'); + sst.end(); + }); + + st.end(); + }); + + t.test('array limit tests', function (st) { + st.test('does not throw error when array is within limit', function (sst) { + var result = qs.parse('a[]=1&a[]=2&a[]=3', { arrayLimit: 5, throwOnLimitExceeded: true }); + sst.deepEqual(result, { a: ['1', '2', '3'] }, 'parses array without errors'); + sst.end(); + }); + + st.test('throws error when throwOnLimitExceeded is present but not boolean for array limit', function (sst) { + sst['throws']( + function () { + qs.parse('a[]=1&a[]=2&a[]=3&a[]=4', { arrayLimit: 3, throwOnLimitExceeded: 'true' }); + }, + new TypeError('`throwOnLimitExceeded` option must be a boolean'), + 'throws error when throwOnLimitExceeded is present and not boolean for array limit' + ); + sst.end(); + }); + + st.test('throws error when array limit exceeded', function (sst) { + // 4 elements exceeds limit of 3 + sst['throws']( + function () { + qs.parse('a[]=1&a[]=2&a[]=3&a[]=4', { arrayLimit: 3, throwOnLimitExceeded: true }); + }, + new RangeError('Array limit exceeded. Only 3 elements allowed in an array.'), + 'throws error when array limit is exceeded' + ); + sst.end(); + }); + + st.test('does not throw when at limit', function (sst) { + // 3 elements = limit of 3, should not throw + var result = qs.parse('a[]=1&a[]=2&a[]=3', { arrayLimit: 3, throwOnLimitExceeded: true }); + sst.ok(Array.isArray(result.a), 'result is an array'); + sst.deepEqual(result.a, ['1', '2', '3'], 'all values present'); + sst.end(); + }); + + st.test('converts array to object if length is greater than limit', function (sst) { + var result = qs.parse('a[1]=1&a[2]=2&a[3]=3&a[4]=4&a[5]=5&a[6]=6', { arrayLimit: 5 }); + + sst.deepEqual(result, { a: { 1: '1', 2: '2', 3: '3', 4: '4', 5: '5', 6: '6' } }, 'parses into object if array length is greater than limit'); + sst.end(); + }); + + st.test('throws error when indexed notation exceeds arrayLimit with throwOnLimitExceeded', function (sst) { + sst['throws']( + function () { + qs.parse('a[1001]=b', { arrayLimit: 1000, throwOnLimitExceeded: true }); + }, + new RangeError('Array limit exceeded. Only 1000 elements allowed in an array.'), + 'throws error for a single index exceeding arrayLimit' + ); + + sst['throws']( + function () { + qs.parse('a[0]=1&a[1]=2&a[2]=3&a[10]=4', { arrayLimit: 6, throwOnLimitExceeded: true, allowSparse: true }); + }, + new RangeError('Array limit exceeded. Only 6 elements allowed in an array.'), + 'throws error when a sparse index exceeds arrayLimit' + ); + + sst.end(); + }); + + st.test('does not throw for indexed notation within arrayLimit with throwOnLimitExceeded', function (sst) { + var result = qs.parse('a[4]=b', { arrayLimit: 5, throwOnLimitExceeded: true, allowSparse: true }); + sst.ok(Array.isArray(result.a), 'result is an array'); + sst.equal(result.a.length, 5, 'array has correct length'); + sst.equal(result.a[4], 'b', 'value at index 4 is correct'); + sst.end(); + }); + + st.test('silently converts to object for indexed notation exceeding arrayLimit without throwOnLimitExceeded', function (sst) { + var result = qs.parse('a[1001]=b', { arrayLimit: 1000 }); + sst.deepEqual(result, { a: { 1001: 'b' } }, 'converts to object without throwing'); + sst.end(); + }); + + st.end(); + }); + + t.end(); +}); + +test('parses empty keys', function (t) { + emptyTestCases.forEach(function (testCase) { + t.test('skips empty string key with ' + testCase.input, function (st) { + st.deepEqual(qs.parse(testCase.input), testCase.noEmptyKeys); + + st.end(); + }); + }); +}); + +test('`duplicates` option', function (t) { + v.nonStrings.concat('not a valid option').forEach(function (invalidOption) { + if (typeof invalidOption !== 'undefined') { + t['throws']( + function () { qs.parse('', { duplicates: invalidOption }); }, + TypeError, + 'throws on invalid option: ' + inspect(invalidOption) + ); + } + }); + + t.deepEqual( + qs.parse('foo=bar&foo=baz'), + { foo: ['bar', 'baz'] }, + 'duplicates: default, combine' + ); + + t.deepEqual( + qs.parse('foo=bar&foo=baz', { duplicates: 'combine' }), + { foo: ['bar', 'baz'] }, + 'duplicates: combine' + ); + + t.deepEqual( + qs.parse('foo=bar&foo=baz', { duplicates: 'first' }), + { foo: 'bar' }, + 'duplicates: first' + ); + + t.deepEqual( + qs.parse('foo=bar&foo=baz', { duplicates: 'last' }), + { foo: 'baz' }, + 'duplicates: last' + ); + + t.end(); +}); + +test('qs strictDepth option - throw cases', function (t) { + t.test('throws an exception when depth exceeds the limit with strictDepth: true', function (st) { + st['throws']( + function () { + qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1, strictDepth: true }); + }, + RangeError, + 'throws RangeError' + ); + st.end(); + }); + + t.test('throws an exception for multiple nested arrays with strictDepth: true', function (st) { + st['throws']( + function () { + qs.parse('a[0][1][2][3][4]=b', { depth: 3, strictDepth: true }); + }, + RangeError, + 'throws RangeError' + ); + st.end(); + }); + + t.test('throws an exception for nested objects and arrays with strictDepth: true', function (st) { + st['throws']( + function () { + qs.parse('a[b][c][0][d][e]=f', { depth: 3, strictDepth: true }); + }, + RangeError, + 'throws RangeError' + ); + st.end(); + }); + + t.test('throws an exception for different types of values with strictDepth: true', function (st) { + st['throws']( + function () { + qs.parse('a[b][c][d][e]=true&a[b][c][d][f]=42', { depth: 3, strictDepth: true }); + }, + RangeError, + 'throws RangeError' + ); + st.end(); + }); + +}); + +test('qs strictDepth option - non-throw cases', function (t) { + t.test('when depth is 0 and strictDepth true, do not throw', function (st) { + st.doesNotThrow( + function () { + qs.parse('a[b][c][d][e]=true&a[b][c][d][f]=42', { depth: 0, strictDepth: true }); + }, + RangeError, + 'does not throw RangeError' + ); + st.end(); + }); + + t.test('parses successfully when depth is within the limit with strictDepth: true', function (st) { + st.doesNotThrow( + function () { + var result = qs.parse('a[b]=c', { depth: 1, strictDepth: true }); + st.deepEqual(result, { a: { b: 'c' } }, 'parses correctly'); + } + ); + st.end(); + }); + + t.test('does not throw an exception when depth exceeds the limit with strictDepth: false', function (st) { + st.doesNotThrow( + function () { + var result = qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1 }); + st.deepEqual(result, { a: { b: { '[c][d][e][f][g][h][i]': 'j' } } }, 'parses with depth limit'); + } + ); + st.end(); + }); + + t.test('parses successfully when depth is within the limit with strictDepth: false', function (st) { + st.doesNotThrow( + function () { + var result = qs.parse('a[b]=c', { depth: 1 }); + st.deepEqual(result, { a: { b: 'c' } }, 'parses correctly'); + } + ); + st.end(); + }); + + t.test('does not throw when depth is exactly at the limit with strictDepth: true', function (st) { + st.doesNotThrow( + function () { + var result = qs.parse('a[b][c]=d', { depth: 2, strictDepth: true }); + st.deepEqual(result, { a: { b: { c: 'd' } } }, 'parses correctly'); + } + ); + st.end(); + }); +}); + +test('DOS', function (t) { + var arr = []; + for (var i = 0; i < 105; i++) { + arr[arr.length] = 'x'; + } + var attack = 'a[]=' + arr.join('&a[]='); + var result = qs.parse(attack, { arrayLimit: 100 }); + + t.notOk(Array.isArray(result.a), 'arrayLimit is respected: result is an object, not an array'); + t.equal(Object.keys(result.a).length, 105, 'all values are preserved'); + + t.end(); +}); + +test('arrayLimit boundary conditions', function (t) { + // arrayLimit is the max number of elements allowed in an array + t.test('exactly at the limit stays as array', function (st) { + // 3 elements = limit of 3 + var result = qs.parse('a[]=1&a[]=2&a[]=3', { arrayLimit: 3 }); + st.ok(Array.isArray(result.a), 'result is an array when count equals limit'); + st.deepEqual(result.a, ['1', '2', '3'], 'all values present'); + st.end(); + }); + + t.test('one over the limit converts to object', function (st) { + // 4 elements exceeds limit of 3 + var result = qs.parse('a[]=1&a[]=2&a[]=3&a[]=4', { arrayLimit: 3 }); + st.notOk(Array.isArray(result.a), 'result is not an array when over limit'); + st.deepEqual(result.a, { 0: '1', 1: '2', 2: '3', 3: '4' }, 'all values preserved as object'); + st.end(); + }); + + t.test('arrayLimit 1 with one value', function (st) { + // 1 element = limit of 1 + var result = qs.parse('a[]=1', { arrayLimit: 1 }); + st.ok(Array.isArray(result.a), 'result is an array when count equals limit'); + st.deepEqual(result.a, ['1'], 'value preserved as array'); + st.end(); + }); + + t.test('arrayLimit 1 with two values converts to object', function (st) { + // 2 elements exceeds limit of 1 + var result = qs.parse('a[]=1&a[]=2', { arrayLimit: 1 }); + st.notOk(Array.isArray(result.a), 'result is not an array'); + st.deepEqual(result.a, { 0: '1', 1: '2' }, 'all values preserved as object'); + st.end(); + }); + + t.end(); +}); + +test('comma + arrayLimit', function (t) { + t.test('comma-separated values within arrayLimit stay as array', function (st) { + var result = qs.parse('a=1,2,3', { comma: true, arrayLimit: 5 }); + st.ok(Array.isArray(result.a), 'result is an array'); + st.deepEqual(result.a, ['1', '2', '3'], 'all values present'); + st.end(); + }); + + t.test('comma-separated values exceeding arrayLimit convert to object', function (st) { + var result = qs.parse('a=1,2,3,4', { comma: true, arrayLimit: 3 }); + st.notOk(Array.isArray(result.a), 'result is not an array when over limit'); + st.deepEqual(result.a, { 0: '1', 1: '2', 2: '3', 3: '4' }, 'all values preserved as object'); + st.end(); + }); + + t.test('comma-separated values exceeding arrayLimit with throwOnLimitExceeded throws', function (st) { + st['throws']( + function () { + qs.parse('a=1,2,3,4', { comma: true, arrayLimit: 3, throwOnLimitExceeded: true }); + }, + new RangeError('Array limit exceeded. Only 3 elements allowed in an array.'), + 'throws error when comma-split exceeds array limit' + ); + st.end(); + }); + + t.test('comma-separated values at exactly arrayLimit stay as array', function (st) { + var result = qs.parse('a=1,2,3', { comma: true, arrayLimit: 3 }); + st.ok(Array.isArray(result.a), 'result is an array when exactly at limit'); + st.deepEqual(result.a, ['1', '2', '3'], 'all values present'); + st.end(); + }); + + t.end(); +}); + +test('mixed array and object notation', function (t) { + t.test('array brackets with object key - under limit', function (st) { + st.deepEqual( + qs.parse('a[]=b&a[c]=d'), + { a: { 0: 'b', c: 'd' } }, + 'mixing [] and [key] converts to object' + ); + st.end(); + }); + + t.test('array index with object key - under limit', function (st) { + st.deepEqual( + qs.parse('a[0]=b&a[c]=d'), + { a: { 0: 'b', c: 'd' } }, + 'mixing [0] and [key] produces object' + ); + st.end(); + }); + + t.test('plain value with array brackets - under limit', function (st) { + st.deepEqual( + qs.parse('a=b&a[]=c', { arrayLimit: 20 }), + { a: ['b', 'c'] }, + 'plain value combined with [] stays as array under limit' + ); + st.end(); + }); + + t.test('array brackets with plain value - under limit', function (st) { + st.deepEqual( + qs.parse('a[]=b&a=c', { arrayLimit: 20 }), + { a: ['b', 'c'] }, + '[] combined with plain value stays as array under limit' + ); + st.end(); + }); + + t.test('plain value with array index - under limit', function (st) { + st.deepEqual( + qs.parse('a=b&a[0]=c', { arrayLimit: 20 }), + { a: ['b', 'c'] }, + 'plain value combined with [0] stays as array under limit' + ); + st.end(); + }); + + t.test('multiple plain values with duplicates combine', function (st) { + st.deepEqual( + qs.parse('a=b&a=c&a=d', { arrayLimit: 20 }), + { a: ['b', 'c', 'd'] }, + 'duplicate plain keys combine into array' + ); + st.end(); + }); + + t.test('multiple plain values exceeding limit', function (st) { + // 3 elements (indices 0-2), max index 2 > limit 1 + st.deepEqual( + qs.parse('a=b&a=c&a=d', { arrayLimit: 1 }), + { a: { 0: 'b', 1: 'c', 2: 'd' } }, + 'duplicate plain keys convert to object when exceeding limit' + ); + st.end(); + }); + + t.test('mixed notation produces consistent results when arrayLimit is exceeded', function (st) { + var expected = { a: { 0: 'b', 1: 'c', 2: 'd' } }; + + st.deepEqual( + qs.parse('a[]=b&a[1]=c&a=d', { arrayLimit: -1 }), + expected, + 'arrayLimit -1' + ); + + st.deepEqual( + qs.parse('a[]=b&a[1]=c&a=d', { arrayLimit: 0 }), + expected, + 'arrayLimit 0' + ); + + st.deepEqual( + qs.parse('a[]=b&a[1]=c&a=d', { arrayLimit: 1 }), + expected, + 'arrayLimit 1' + ); + + st.end(); + }); + t.end(); }); diff --git a/food-ordering-app/server/node_modules/qs/test/stringify.js b/food-ordering-app/server/node_modules/qs/test/stringify.js index a3800aac2..4d776947c 100644 --- a/food-ordering-app/server/node_modules/qs/test/stringify.js +++ b/food-ordering-app/server/node_modules/qs/test/stringify.js @@ -6,7 +6,10 @@ var utils = require('../lib/utils'); var iconv = require('iconv-lite'); var SaferBuffer = require('safer-buffer').Buffer; var hasSymbols = require('has-symbols'); -var hasBigInt = typeof BigInt === 'function'; +var mockProperty = require('mock-property'); +var emptyTestCases = require('./empty-keys-cases').emptyTestCases; +var hasProto = require('has-proto')(); +var hasBigInt = require('has-bigints')(); test('stringify()', function (t) { t.test('stringifies a querystring object', function (st) { @@ -63,6 +66,138 @@ test('stringify()', function (t) { st.end(); }); + t.test('encodes dot in key of object when encodeDotInKeys and allowDots is provided', function (st) { + st.equal( + qs.stringify( + { 'name.obj': { first: 'John', last: 'Doe' } }, + { allowDots: false, encodeDotInKeys: false } + ), + 'name.obj%5Bfirst%5D=John&name.obj%5Blast%5D=Doe', + 'with allowDots false and encodeDotInKeys false' + ); + st.equal( + qs.stringify( + { 'name.obj': { first: 'John', last: 'Doe' } }, + { allowDots: true, encodeDotInKeys: false } + ), + 'name.obj.first=John&name.obj.last=Doe', + 'with allowDots true and encodeDotInKeys false' + ); + st.equal( + qs.stringify( + { 'name.obj': { first: 'John', last: 'Doe' } }, + { allowDots: false, encodeDotInKeys: true } + ), + 'name%252Eobj%5Bfirst%5D=John&name%252Eobj%5Blast%5D=Doe', + 'with allowDots false and encodeDotInKeys true' + ); + st.equal( + qs.stringify( + { 'name.obj': { first: 'John', last: 'Doe' } }, + { allowDots: true, encodeDotInKeys: true } + ), + 'name%252Eobj.first=John&name%252Eobj.last=Doe', + 'with allowDots true and encodeDotInKeys true' + ); + + st.equal( + qs.stringify( + { 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } }, + { allowDots: false, encodeDotInKeys: false } + ), + 'name.obj.subobject%5Bfirst.godly.name%5D=John&name.obj.subobject%5Blast%5D=Doe', + 'with allowDots false and encodeDotInKeys false' + ); + st.equal( + qs.stringify( + { 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } }, + { allowDots: true, encodeDotInKeys: false } + ), + 'name.obj.subobject.first.godly.name=John&name.obj.subobject.last=Doe', + 'with allowDots false and encodeDotInKeys false' + ); + st.equal( + qs.stringify( + { 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } }, + { allowDots: false, encodeDotInKeys: true } + ), + 'name%252Eobj%252Esubobject%5Bfirst.godly.name%5D=John&name%252Eobj%252Esubobject%5Blast%5D=Doe', + 'with allowDots false and encodeDotInKeys true' + ); + st.equal( + qs.stringify( + { 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } }, + { allowDots: true, encodeDotInKeys: true } + ), + 'name%252Eobj%252Esubobject.first%252Egodly%252Ename=John&name%252Eobj%252Esubobject.last=Doe', + 'with allowDots true and encodeDotInKeys true' + ); + + st.end(); + }); + + t.test('should encode dot in key of object, and automatically set allowDots to `true` when encodeDotInKeys is true and allowDots in undefined', function (st) { + st.equal( + qs.stringify( + { 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } }, + { encodeDotInKeys: true } + ), + 'name%252Eobj%252Esubobject.first%252Egodly%252Ename=John&name%252Eobj%252Esubobject.last=Doe', + 'with allowDots undefined and encodeDotInKeys true' + ); + st.end(); + }); + + t.test('should encode dot in key of object when encodeDotInKeys and allowDots is provided, and nothing else when encodeValuesOnly is provided', function (st) { + st.equal( + qs.stringify({ 'name.obj': { first: 'John', last: 'Doe' } }, { + encodeDotInKeys: true, allowDots: true, encodeValuesOnly: true + }), + 'name%2Eobj.first=John&name%2Eobj.last=Doe' + ); + + st.equal( + qs.stringify({ 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } }, { allowDots: true, encodeDotInKeys: true, encodeValuesOnly: true }), + 'name%2Eobj%2Esubobject.first%2Egodly%2Ename=John&name%2Eobj%2Esubobject.last=Doe' + ); + + st.end(); + }); + + t.test('throws when `commaRoundTrip` is not a boolean', function (st) { + st['throws']( + function () { qs.stringify({}, { commaRoundTrip: 'not a boolean' }); }, + TypeError, + 'throws when `commaRoundTrip` is not a boolean' + ); + + st.end(); + }); + + t.test('throws when `encodeDotInKeys` is not a boolean', function (st) { + st['throws']( + function () { qs.stringify({ a: [], b: 'zz' }, { encodeDotInKeys: 'foobar' }); }, + TypeError + ); + + st['throws']( + function () { qs.stringify({ a: [], b: 'zz' }, { encodeDotInKeys: 0 }); }, + TypeError + ); + + st['throws']( + function () { qs.stringify({ a: [], b: 'zz' }, { encodeDotInKeys: NaN }); }, + TypeError + ); + + st['throws']( + function () { qs.stringify({ a: [], b: 'zz' }, { encodeDotInKeys: null }); }, + TypeError + ); + + st.end(); + }); + t.test('adds query prefix', function (st) { st.equal(qs.stringify({ a: 'b' }, { addQueryPrefix: true }), '?a=b'); st.end(); @@ -86,7 +221,7 @@ test('stringify()', function (t) { st.end(); }); - t.test('stringifies a nested object with dots notation', function (st) { + t.test('`allowDots` option: stringifies a nested object with dots notation', function (st) { st.equal(qs.stringify({ a: { b: 'c' } }, { allowDots: true }), 'a.b=c'); st.equal(qs.stringify({ a: { b: { c: { d: 'e' } } } }, { allowDots: true }), 'a.b.c.d=e'); st.end(); @@ -108,6 +243,11 @@ test('stringify()', function (t) { 'a=b%2Cc%2Cd', 'comma => comma' ); + st.equal( + qs.stringify({ a: ['b', 'c', 'd'] }, { arrayFormat: 'comma', commaRoundTrip: true }), + 'a=b%2Cc%2Cd', + 'comma round trip => comma' + ); st.equal( qs.stringify({ a: ['b', 'c', 'd'] }), 'a%5B0%5D=b&a%5B1%5D=c&a%5B2%5D=d', @@ -116,18 +256,118 @@ test('stringify()', function (t) { st.end(); }); - t.test('omits nulls when asked', function (st) { - st.equal(qs.stringify({ a: 'b', c: null }, { skipNulls: true }), 'a=b'); - st.end(); - }); + t.test('`skipNulls` option', function (st) { + st.equal( + qs.stringify({ a: 'b', c: null }, { skipNulls: true }), + 'a=b', + 'omits nulls when asked' + ); + + st.equal( + qs.stringify({ a: { b: 'c', d: null } }, { skipNulls: true }), + 'a%5Bb%5D=c', + 'omits nested nulls when asked' + ); - t.test('omits nested nulls when asked', function (st) { - st.equal(qs.stringify({ a: { b: 'c', d: null } }, { skipNulls: true }), 'a%5Bb%5D=c'); st.end(); }); t.test('omits array indices when asked', function (st) { st.equal(qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false }), 'a=b&a=c&a=d'); + + st.end(); + }); + + t.test('omits object key/value pair when value is empty array', function (st) { + st.equal(qs.stringify({ a: [], b: 'zz' }), 'b=zz'); + + st.end(); + }); + + t.test('should not omit object key/value pair when value is empty array and when asked', function (st) { + st.equal(qs.stringify({ a: [], b: 'zz' }), 'b=zz'); + st.equal(qs.stringify({ a: [], b: 'zz' }, { allowEmptyArrays: false }), 'b=zz'); + st.equal(qs.stringify({ a: [], b: 'zz' }, { allowEmptyArrays: true }), 'a[]&b=zz'); + + st.end(); + }); + + t.test('should throw when allowEmptyArrays is not of type boolean', function (st) { + st['throws']( + function () { qs.stringify({ a: [], b: 'zz' }, { allowEmptyArrays: 'foobar' }); }, + TypeError + ); + + st['throws']( + function () { qs.stringify({ a: [], b: 'zz' }, { allowEmptyArrays: 0 }); }, + TypeError + ); + + st['throws']( + function () { qs.stringify({ a: [], b: 'zz' }, { allowEmptyArrays: NaN }); }, + TypeError + ); + + st['throws']( + function () { qs.stringify({ a: [], b: 'zz' }, { allowEmptyArrays: null }); }, + TypeError + ); + + st.end(); + }); + + t.test('allowEmptyArrays + strictNullHandling', function (st) { + st.equal( + qs.stringify( + { testEmptyArray: [] }, + { strictNullHandling: true, allowEmptyArrays: true } + ), + 'testEmptyArray[]' + ); + + st.end(); + }); + + t.test('stringifies an array value with one item vs multiple items', function (st) { + st.test('non-array item', function (s2t) { + s2t.equal(qs.stringify({ a: 'c' }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a=c'); + s2t.equal(qs.stringify({ a: 'c' }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a=c'); + s2t.equal(qs.stringify({ a: 'c' }, { encodeValuesOnly: true, arrayFormat: 'comma' }), 'a=c'); + s2t.equal(qs.stringify({ a: 'c' }, { encodeValuesOnly: true }), 'a=c'); + + s2t.end(); + }); + + st.test('array with a single item', function (s2t) { + s2t.equal(qs.stringify({ a: ['c'] }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[0]=c'); + s2t.equal(qs.stringify({ a: ['c'] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[]=c'); + s2t.equal(qs.stringify({ a: ['c'] }, { encodeValuesOnly: true, arrayFormat: 'comma' }), 'a=c'); + s2t.equal(qs.stringify({ a: ['c'] }, { encodeValuesOnly: true, arrayFormat: 'comma', commaRoundTrip: true }), 'a[]=c'); // so it parses back as an array + s2t.equal(qs.stringify({ a: ['c'] }, { encodeValuesOnly: true }), 'a[0]=c'); + + s2t.end(); + }); + + st.test('array with multiple items', function (s2t) { + s2t.equal(qs.stringify({ a: ['c', 'd'] }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[0]=c&a[1]=d'); + s2t.equal(qs.stringify({ a: ['c', 'd'] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[]=c&a[]=d'); + s2t.equal(qs.stringify({ a: ['c', 'd'] }, { encodeValuesOnly: true, arrayFormat: 'comma' }), 'a=c,d'); + s2t.equal(qs.stringify({ a: ['c', 'd'] }, { encodeValuesOnly: true, arrayFormat: 'comma', commaRoundTrip: true }), 'a=c,d'); + s2t.equal(qs.stringify({ a: ['c', 'd'] }, { encodeValuesOnly: true }), 'a[0]=c&a[1]=d'); + + s2t.end(); + }); + + st.test('array with multiple items with a comma inside', function (s2t) { + s2t.equal(qs.stringify({ a: ['c,d', 'e'] }, { encodeValuesOnly: true, arrayFormat: 'comma' }), 'a=c%2Cd,e'); + s2t.equal(qs.stringify({ a: ['c,d', 'e'] }, { arrayFormat: 'comma' }), 'a=c%2Cd%2Ce'); + + s2t.equal(qs.stringify({ a: ['c,d', 'e'] }, { encodeValuesOnly: true, arrayFormat: 'comma', commaRoundTrip: true }), 'a=c%2Cd,e'); + s2t.equal(qs.stringify({ a: ['c,d', 'e'] }, { arrayFormat: 'comma', commaRoundTrip: true }), 'a=c%2Cd%2Ce'); + + s2t.end(); + }); + st.end(); }); @@ -139,6 +379,44 @@ test('stringify()', function (t) { st.end(); }); + t.test('stringifies comma and empty array values', function (st) { + st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: false, arrayFormat: 'indices' }), 'a[0]=,&a[1]=&a[2]=c,d%'); + st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: false, arrayFormat: 'brackets' }), 'a[]=,&a[]=&a[]=c,d%'); + st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: false, arrayFormat: 'comma' }), 'a=,,,c,d%'); + st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: false, arrayFormat: 'repeat' }), 'a=,&a=&a=c,d%'); + + st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: true, encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[0]=%2C&a[1]=&a[2]=c%2Cd%25'); + st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: true, encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[]=%2C&a[]=&a[]=c%2Cd%25'); + st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: true, encodeValuesOnly: true, arrayFormat: 'comma' }), 'a=%2C,,c%2Cd%25'); + st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: true, encodeValuesOnly: true, arrayFormat: 'repeat' }), 'a=%2C&a=&a=c%2Cd%25'); + + st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: true, encodeValuesOnly: false, arrayFormat: 'indices' }), 'a%5B0%5D=%2C&a%5B1%5D=&a%5B2%5D=c%2Cd%25'); + st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: true, encodeValuesOnly: false, arrayFormat: 'brackets' }), 'a%5B%5D=%2C&a%5B%5D=&a%5B%5D=c%2Cd%25'); + st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: true, encodeValuesOnly: false, arrayFormat: 'comma' }), 'a=%2C%2C%2Cc%2Cd%25'); + st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: true, encodeValuesOnly: false, arrayFormat: 'repeat' }), 'a=%2C&a=&a=c%2Cd%25'); + + st.end(); + }); + + t.test('stringifies comma and empty non-array values', function (st) { + st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: false, arrayFormat: 'indices' }), 'a=,&b=&c=c,d%'); + st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: false, arrayFormat: 'brackets' }), 'a=,&b=&c=c,d%'); + st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: false, arrayFormat: 'comma' }), 'a=,&b=&c=c,d%'); + st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: false, arrayFormat: 'repeat' }), 'a=,&b=&c=c,d%'); + + st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: true, encodeValuesOnly: true, arrayFormat: 'indices' }), 'a=%2C&b=&c=c%2Cd%25'); + st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: true, encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a=%2C&b=&c=c%2Cd%25'); + st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: true, encodeValuesOnly: true, arrayFormat: 'comma' }), 'a=%2C&b=&c=c%2Cd%25'); + st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: true, encodeValuesOnly: true, arrayFormat: 'repeat' }), 'a=%2C&b=&c=c%2Cd%25'); + + st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: true, encodeValuesOnly: false, arrayFormat: 'indices' }), 'a=%2C&b=&c=c%2Cd%25'); + st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: true, encodeValuesOnly: false, arrayFormat: 'brackets' }), 'a=%2C&b=&c=c%2Cd%25'); + st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: true, encodeValuesOnly: false, arrayFormat: 'comma' }), 'a=%2C&b=&c=c%2Cd%25'); + st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: true, encodeValuesOnly: false, arrayFormat: 'repeat' }), 'a=%2C&b=&c=c%2Cd%25'); + + st.end(); + }); + t.test('stringifies a nested array value with dots notation', function (st) { st.equal( qs.stringify( @@ -177,36 +455,44 @@ test('stringify()', function (t) { t.test('stringifies an object inside an array', function (st) { st.equal( - qs.stringify({ a: [{ b: 'c' }] }, { arrayFormat: 'indices' }), - 'a%5B0%5D%5Bb%5D=c', // a[0][b]=c - 'indices => brackets' + qs.stringify({ a: [{ b: 'c' }] }, { arrayFormat: 'indices', encodeValuesOnly: true }), + 'a[0][b]=c', + 'indices => indices' + ); + st.equal( + qs.stringify({ a: [{ b: 'c' }] }, { arrayFormat: 'repeat', encodeValuesOnly: true }), + 'a[b]=c', + 'repeat => repeat' ); st.equal( - qs.stringify({ a: [{ b: 'c' }] }, { arrayFormat: 'brackets' }), - 'a%5B%5D%5Bb%5D=c', // a[][b]=c + qs.stringify({ a: [{ b: 'c' }] }, { arrayFormat: 'brackets', encodeValuesOnly: true }), + 'a[][b]=c', 'brackets => brackets' ); st.equal( - qs.stringify({ a: [{ b: 'c' }] }), - 'a%5B0%5D%5Bb%5D=c', + qs.stringify({ a: [{ b: 'c' }] }, { encodeValuesOnly: true }), + 'a[0][b]=c', 'default => indices' ); st.equal( - qs.stringify({ a: [{ b: { c: [1] } }] }, { arrayFormat: 'indices' }), - 'a%5B0%5D%5Bb%5D%5Bc%5D%5B0%5D=1', + qs.stringify({ a: [{ b: { c: [1] } }] }, { arrayFormat: 'indices', encodeValuesOnly: true }), + 'a[0][b][c][0]=1', 'indices => indices' ); - st.equal( - qs.stringify({ a: [{ b: { c: [1] } }] }, { arrayFormat: 'brackets' }), - 'a%5B%5D%5Bb%5D%5Bc%5D%5B%5D=1', + qs.stringify({ a: [{ b: { c: [1] } }] }, { arrayFormat: 'repeat', encodeValuesOnly: true }), + 'a[b][c]=1', + 'repeat => repeat' + ); + st.equal( + qs.stringify({ a: [{ b: { c: [1] } }] }, { arrayFormat: 'brackets', encodeValuesOnly: true }), + 'a[][b][c][]=1', 'brackets => brackets' ); - st.equal( - qs.stringify({ a: [{ b: { c: [1] } }] }), - 'a%5B0%5D%5Bb%5D%5Bc%5D%5B0%5D=1', + qs.stringify({ a: [{ b: { c: [1] } }] }, { encodeValuesOnly: true }), + 'a[0][b][c][0]=1', 'default => indices' ); @@ -308,17 +594,17 @@ test('stringify()', function (t) { st.end(); }); - t.test('uses indices notation for arrays when no arrayFormat=indices', function (st) { + t.test('uses indices notation for arrays when arrayFormat=indices', function (st) { st.equal(qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' }), 'a%5B0%5D=b&a%5B1%5D=c'); st.end(); }); - t.test('uses repeat notation for arrays when no arrayFormat=repeat', function (st) { + t.test('uses repeat notation for arrays when arrayFormat=repeat', function (st) { st.equal(qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' }), 'a=b&a=c'); st.end(); }); - t.test('uses brackets notation for arrays when no arrayFormat=brackets', function (st) { + t.test('uses brackets notation for arrays when arrayFormat=brackets', function (st) { st.equal(qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' }), 'a%5B%5D=b&a%5B%5D=c'); st.end(); }); @@ -349,11 +635,13 @@ test('stringify()', function (t) { st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'brackets' }), 'b[]=&c=c'); st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'repeat' }), 'b=&c=c'); st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'comma' }), 'b=&c=c'); + st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'comma', commaRoundTrip: true }), 'b[]=&c=c'); // with strictNullHandling st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'indices', strictNullHandling: true }), 'b[0]&c=c'); st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'brackets', strictNullHandling: true }), 'b[]&c=c'); st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'repeat', strictNullHandling: true }), 'b&c=c'); st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'comma', strictNullHandling: true }), 'b&c=c'); + st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'comma', strictNullHandling: true, commaRoundTrip: true }), 'b[]&c=c'); // with skipNulls st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'indices', skipNulls: true }), 'c=c'); st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'brackets', skipNulls: true }), 'c=c'); @@ -363,10 +651,8 @@ test('stringify()', function (t) { st.end(); }); - t.test('stringifies a null object', { skip: !Object.create }, function (st) { - var obj = Object.create(null); - obj.a = 'b'; - st.equal(qs.stringify(obj), 'a=b'); + t.test('stringifies a null object', { skip: !hasProto }, function (st) { + st.equal(qs.stringify({ __proto__: null, a: 'b' }), 'a=b'); st.end(); }); @@ -378,11 +664,8 @@ test('stringify()', function (t) { st.end(); }); - t.test('stringifies an object with a null object as a child', { skip: !Object.create }, function (st) { - var obj = { a: Object.create(null) }; - - obj.a.b = 'c'; - st.equal(qs.stringify(obj), 'a%5Bb%5D=c'); + t.test('stringifies an object with a null object as a child', { skip: !hasProto }, function (st) { + st.equal(qs.stringify({ a: { __proto__: null, b: 'c' } }), 'a%5Bb%5D=c'); st.end(); }); @@ -413,10 +696,11 @@ test('stringify()', function (t) { }); t.test('skips properties that are part of the object prototype', function (st) { - Object.prototype.crash = 'test'; + st.intercept(Object.prototype, 'crash', { value: 'test' }); + st.equal(qs.stringify({ a: 'b' }), 'a=b'); st.equal(qs.stringify({ a: { b: 'c' } }), 'a%5Bb%5D=c'); - delete Object.prototype.crash; + st.end(); }); @@ -440,10 +724,12 @@ test('stringify()', function (t) { }); t.test('does not blow up when Buffer global is missing', function (st) { - var tempBuffer = global.Buffer; - delete global.Buffer; + var restore = mockProperty(global, 'Buffer', { 'delete': true }); + var result = qs.stringify({ a: 'b', c: 'd' }); - global.Buffer = tempBuffer; + + restore(); + st.equal(result, 'a=b&c=d'); st.end(); }); @@ -492,9 +778,17 @@ test('stringify()', function (t) { }; st.equal( - qs.stringify({ filters: { $and: [p1, p2] } }, { encodeValuesOnly: true }), + qs.stringify({ filters: { $and: [p1, p2] } }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'filters[$and][0][function]=gte&filters[$and][0][arguments][0][function]=hour_of_day&filters[$and][0][arguments][1]=0&filters[$and][1][function]=lte&filters[$and][1][arguments][0][function]=hour_of_day&filters[$and][1][arguments][1]=23' ); + st.equal( + qs.stringify({ filters: { $and: [p1, p2] } }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), + 'filters[$and][][function]=gte&filters[$and][][arguments][][function]=hour_of_day&filters[$and][][arguments][]=0&filters[$and][][function]=lte&filters[$and][][arguments][][function]=hour_of_day&filters[$and][][arguments][]=23' + ); + st.equal( + qs.stringify({ filters: { $and: [p1, p2] } }, { encodeValuesOnly: true, arrayFormat: 'repeat' }), + 'filters[$and][function]=gte&filters[$and][arguments][function]=hour_of_day&filters[$and][arguments]=0&filters[$and][function]=lte&filters[$and][arguments][function]=hour_of_day&filters[$and][arguments]=23' + ); st.end(); }); @@ -607,13 +901,28 @@ test('stringify()', function (t) { st.end(); }); + t.test('receives the default encoder as a second argument', function (st) { + st.plan(8); + + qs.stringify({ a: 1, b: new Date(), c: true, d: [1] }, { + encoder: function (str) { + st.match(typeof str, /^(?:string|number|boolean)$/); + return ''; + } + }); + + st.end(); + }); + t.test('receives the default encoder as a second argument', function (st) { st.plan(2); + qs.stringify({ a: 1 }, { encoder: function (str, defaultEncoder) { st.equal(defaultEncoder, utils.encode); } }); + st.end(); }); @@ -684,6 +993,18 @@ test('stringify()', function (t) { 'a=' + date.getTime(), 'works with arrayFormat comma' ); + st.equal( + qs.stringify( + { a: [date] }, + { + serializeDate: function (d) { return d.getTime(); }, + arrayFormat: 'comma', + commaRoundTrip: true + } + ), + 'a%5B%5D=' + date.getTime(), + 'works with arrayFormat comma' + ); st.end(); }); @@ -714,16 +1035,14 @@ test('stringify()', function (t) { }); t.test('Edge cases and unknown formats', function (st) { - ['UFO1234', false, 1234, null, {}, []].forEach( - function (format) { - st['throws']( - function () { - qs.stringify({ a: 'b c' }, { format: format }); - }, - new TypeError('Unknown format option provided.') - ); - } - ); + ['UFO1234', false, 1234, null, {}, []].forEach(function (format) { + st['throws']( + function () { + qs.stringify({ a: 'b c' }, { format: format }); + }, + new TypeError('Unknown format option provided.') + ); + }); st.end(); }); @@ -731,16 +1050,53 @@ test('stringify()', function (t) { st.equal( qs.stringify( { a: 'b', c: ['d', 'e=f'], f: [['g'], ['h']] }, - { encodeValuesOnly: true } + { encodeValuesOnly: true, arrayFormat: 'indices' } + ), + 'a=b&c[0]=d&c[1]=e%3Df&f[0][0]=g&f[1][0]=h', + 'encodeValuesOnly + indices' + ); + st.equal( + qs.stringify( + { a: 'b', c: ['d', 'e=f'], f: [['g'], ['h']] }, + { encodeValuesOnly: true, arrayFormat: 'brackets' } + ), + 'a=b&c[]=d&c[]=e%3Df&f[][]=g&f[][]=h', + 'encodeValuesOnly + brackets' + ); + st.equal( + qs.stringify( + { a: 'b', c: ['d', 'e=f'], f: [['g'], ['h']] }, + { encodeValuesOnly: true, arrayFormat: 'repeat' } + ), + 'a=b&c=d&c=e%3Df&f=g&f=h', + 'encodeValuesOnly + repeat' + ); + + st.equal( + qs.stringify( + { a: 'b', c: ['d', 'e'], f: [['g'], ['h']] }, + { arrayFormat: 'indices' } + ), + 'a=b&c%5B0%5D=d&c%5B1%5D=e&f%5B0%5D%5B0%5D=g&f%5B1%5D%5B0%5D=h', + 'no encodeValuesOnly + indices' + ); + st.equal( + qs.stringify( + { a: 'b', c: ['d', 'e'], f: [['g'], ['h']] }, + { arrayFormat: 'brackets' } ), - 'a=b&c[0]=d&c[1]=e%3Df&f[0][0]=g&f[1][0]=h' + 'a=b&c%5B%5D=d&c%5B%5D=e&f%5B%5D%5B%5D=g&f%5B%5D%5B%5D=h', + 'no encodeValuesOnly + brackets' ); st.equal( qs.stringify( - { a: 'b', c: ['d', 'e'], f: [['g'], ['h']] } + { a: 'b', c: ['d', 'e'], f: [['g'], ['h']] }, + { arrayFormat: 'repeat' } ), - 'a=b&c%5B0%5D=d&c%5B1%5D=e&f%5B0%5D%5B0%5D=g&f%5B1%5D%5B0%5D=h' + 'a=b&c=d&c=e&f=g&f=h', + 'no encodeValuesOnly + repeat' ); + st.end(); }); @@ -777,13 +1133,19 @@ test('stringify()', function (t) { st.end(); }); - t.test('adds the right sentinel when instructed to and the charset is utf-8', function (st) { - st.equal(qs.stringify({ a: 'æ' }, { charsetSentinel: true, charset: 'utf-8' }), 'utf8=%E2%9C%93&a=%C3%A6'); - st.end(); - }); + t.test('`charsetSentinel` option', function (st) { + st.equal( + qs.stringify({ a: 'æ' }, { charsetSentinel: true, charset: 'utf-8' }), + 'utf8=%E2%9C%93&a=%C3%A6', + 'adds the right sentinel when instructed to and the charset is utf-8' + ); + + st.equal( + qs.stringify({ a: 'æ' }, { charsetSentinel: true, charset: 'iso-8859-1' }), + 'utf8=%26%2310003%3B&a=%E6', + 'adds the right sentinel when instructed to and the charset is iso-8859-1' + ); - t.test('adds the right sentinel when instructed to and the charset is iso-8859-1', function (st) { - st.equal(qs.stringify({ a: 'æ' }, { charsetSentinel: true, charset: 'iso-8859-1' }), 'utf8=%26%2310003%3B&a=%E6'); st.end(); }); @@ -834,13 +1196,15 @@ test('stringify()', function (t) { var withArray = { a: { b: [{ c: 'd', e: 'f' }] } }; st.equal(qs.stringify(obj, { encode: false }), 'a[b][c]=d&a[b][e]=f', 'no array, no arrayFormat'); - st.equal(qs.stringify(obj, { encode: false, arrayFormat: 'bracket' }), 'a[b][c]=d&a[b][e]=f', 'no array, bracket'); + st.equal(qs.stringify(obj, { encode: false, arrayFormat: 'brackets' }), 'a[b][c]=d&a[b][e]=f', 'no array, bracket'); st.equal(qs.stringify(obj, { encode: false, arrayFormat: 'indices' }), 'a[b][c]=d&a[b][e]=f', 'no array, indices'); + st.equal(qs.stringify(obj, { encode: false, arrayFormat: 'repeat' }), 'a[b][c]=d&a[b][e]=f', 'no array, repeat'); st.equal(qs.stringify(obj, { encode: false, arrayFormat: 'comma' }), 'a[b][c]=d&a[b][e]=f', 'no array, comma'); st.equal(qs.stringify(withArray, { encode: false }), 'a[b][0][c]=d&a[b][0][e]=f', 'array, no arrayFormat'); - st.equal(qs.stringify(withArray, { encode: false, arrayFormat: 'bracket' }), 'a[b][0][c]=d&a[b][0][e]=f', 'array, bracket'); + st.equal(qs.stringify(withArray, { encode: false, arrayFormat: 'brackets' }), 'a[b][][c]=d&a[b][][e]=f', 'array, bracket'); st.equal(qs.stringify(withArray, { encode: false, arrayFormat: 'indices' }), 'a[b][0][c]=d&a[b][0][e]=f', 'array, indices'); + st.equal(qs.stringify(withArray, { encode: false, arrayFormat: 'repeat' }), 'a[b][c]=d&a[b][e]=f', 'array, repeat'); st.equal( qs.stringify(withArray, { encode: false, arrayFormat: 'comma' }), '???', @@ -853,13 +1217,94 @@ test('stringify()', function (t) { t.test('stringifies sparse arrays', function (st) { /* eslint no-sparse-arrays: 0 */ - st.equal(qs.stringify({ a: [, '2', , , '1'] }, { encodeValuesOnly: true }), 'a[1]=2&a[4]=1'); - st.equal(qs.stringify({ a: [, { b: [, , { c: '1' }] }] }, { encodeValuesOnly: true }), 'a[1][b][2][c]=1'); - st.equal(qs.stringify({ a: [, [, , [, , , { c: '1' }]]] }, { encodeValuesOnly: true }), 'a[1][2][3][c]=1'); - st.equal(qs.stringify({ a: [, [, , [, , , { c: [, '1'] }]]] }, { encodeValuesOnly: true }), 'a[1][2][3][c][1]=1'); + st.equal(qs.stringify({ a: [, '2', , , '1'] }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[1]=2&a[4]=1'); + st.equal(qs.stringify({ a: [, '2', , , '1'] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[]=2&a[]=1'); + st.equal(qs.stringify({ a: [, '2', , , '1'] }, { encodeValuesOnly: true, arrayFormat: 'repeat' }), 'a=2&a=1'); + + st.equal(qs.stringify({ a: [, { b: [, , { c: '1' }] }] }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[1][b][2][c]=1'); + st.equal(qs.stringify({ a: [, { b: [, , { c: '1' }] }] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[][b][][c]=1'); + st.equal(qs.stringify({ a: [, { b: [, , { c: '1' }] }] }, { encodeValuesOnly: true, arrayFormat: 'repeat' }), 'a[b][c]=1'); + + st.equal(qs.stringify({ a: [, [, , [, , , { c: '1' }]]] }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[1][2][3][c]=1'); + st.equal(qs.stringify({ a: [, [, , [, , , { c: '1' }]]] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[][][][c]=1'); + st.equal(qs.stringify({ a: [, [, , [, , , { c: '1' }]]] }, { encodeValuesOnly: true, arrayFormat: 'repeat' }), 'a[c]=1'); + + st.equal(qs.stringify({ a: [, [, , [, , , { c: [, '1'] }]]] }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[1][2][3][c][1]=1'); + st.equal(qs.stringify({ a: [, [, , [, , , { c: [, '1'] }]]] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[][][][c][]=1'); + st.equal(qs.stringify({ a: [, [, , [, , , { c: [, '1'] }]]] }, { encodeValuesOnly: true, arrayFormat: 'repeat' }), 'a[c]=1'); + + st.end(); + }); + + t.test('encodes a very long string', function (st) { + var chars = []; + var expected = []; + for (var i = 0; i < 5e3; i++) { + chars.push(' ' + i); + + expected.push('%20' + i); + } + + var obj = { + foo: chars.join('') + }; + + st.equal( + qs.stringify(obj, { arrayFormat: 'brackets', charset: 'utf-8' }), + 'foo=' + expected.join('') + ); st.end(); }); t.end(); }); + +test('stringifies empty keys', function (t) { + emptyTestCases.forEach(function (testCase) { + t.test('stringifies an object with empty string key with ' + testCase.input, function (st) { + st.deepEqual( + qs.stringify(testCase.withEmptyKeys, { encode: false, arrayFormat: 'indices' }), + testCase.stringifyOutput.indices, + 'test case: ' + testCase.input + ', indices' + ); + st.deepEqual( + qs.stringify(testCase.withEmptyKeys, { encode: false, arrayFormat: 'brackets' }), + testCase.stringifyOutput.brackets, + 'test case: ' + testCase.input + ', brackets' + ); + st.deepEqual( + qs.stringify(testCase.withEmptyKeys, { encode: false, arrayFormat: 'repeat' }), + testCase.stringifyOutput.repeat, + 'test case: ' + testCase.input + ', repeat' + ); + + st.end(); + }); + }); + + t.test('edge case with object/arrays', function (st) { + st.deepEqual(qs.stringify({ '': { '': [2, 3] } }, { encode: false }), '[][0]=2&[][1]=3'); + st.deepEqual(qs.stringify({ '': { '': [2, 3], a: 2 } }, { encode: false }), '[][0]=2&[][1]=3&[a]=2'); + st.deepEqual(qs.stringify({ '': { '': [2, 3] } }, { encode: false, arrayFormat: 'indices' }), '[][0]=2&[][1]=3'); + st.deepEqual(qs.stringify({ '': { '': [2, 3], a: 2 } }, { encode: false, arrayFormat: 'indices' }), '[][0]=2&[][1]=3&[a]=2'); + + st.end(); + }); + + t.test('stringifies non-string keys', function (st) { + var S = Object('abc'); + S.toString = function () { + return 'd'; + }; + var actual = qs.stringify({ a: 'b', 'false': {}, 1e+22: 'c', d: 'e' }, { + filter: ['a', false, null, 10000000000000000000000, S], + allowDots: true, + encodeDotInKeys: true + }); + + st.equal(actual, 'a=b&1e%2B22=c&d=e', 'stringifies correctly'); + + st.end(); + }); +}); diff --git a/food-ordering-app/server/node_modules/qs/test/utils.js b/food-ordering-app/server/node_modules/qs/test/utils.js index aa84dfdc6..65baea72c 100644 --- a/food-ordering-app/server/node_modules/qs/test/utils.js +++ b/food-ordering-app/server/node_modules/qs/test/utils.js @@ -4,6 +4,8 @@ var test = require('tape'); var inspect = require('object-inspect'); var SaferBuffer = require('safer-buffer').Buffer; var forEach = require('for-each'); +var v = require('es-value-fixtures'); + var utils = require('../lib/utils'); test('merge()', function (t) { @@ -28,6 +30,20 @@ test('merge()', function (t) { var noOptionsNonObjectSource = utils.merge({ foo: 'baz' }, 'bar'); t.deepEqual(noOptionsNonObjectSource, { foo: 'baz', bar: true }); + var func = function f() {}; + t.deepEqual( + utils.merge(func, { foo: 'bar' }), + [func, { foo: 'bar' }], + 'functions can not be merged into' + ); + + func.bar = 'baz'; + t.deepEqual( + utils.merge({ foo: 'bar' }, func), + { foo: 'bar', bar: 'baz' }, + 'functions can be merge sources' + ); + t.test( 'avoids invoking array setters unnecessarily', { skip: typeof Object.defineProperty !== 'function' }, @@ -52,6 +68,62 @@ test('merge()', function (t) { } ); + t.test('with overflow objects (from arrayLimit)', function (st) { + // arrayLimit is max index, so with limit 0, max index 0 is allowed (1 element) + // To create overflow, need 2+ elements with limit 0, or 3+ with limit 1, etc. + st.test('merges primitive into overflow object at next index', function (s2t) { + // Create an overflow object via combine: 3 elements (indices 0-2) with limit 0 + var overflow = utils.combine(['a', 'b'], 'c', 0, false); + s2t.ok(utils.isOverflow(overflow), 'overflow object is marked'); + var merged = utils.merge(overflow, 'd'); + s2t.deepEqual(merged, { 0: 'a', 1: 'b', 2: 'c', 3: 'd' }, 'adds primitive at next numeric index'); + s2t.end(); + }); + + st.test('merges primitive into regular object with numeric keys normally', function (s2t) { + var obj = { 0: 'a', 1: 'b' }; + s2t.notOk(utils.isOverflow(obj), 'plain object is not marked as overflow'); + var merged = utils.merge(obj, 'c'); + s2t.deepEqual(merged, { 0: 'a', 1: 'b', c: true }, 'adds primitive as key (not at next index)'); + s2t.end(); + }); + + st.test('merges primitive into object with non-numeric keys normally', function (s2t) { + var obj = { foo: 'bar' }; + var merged = utils.merge(obj, 'baz'); + s2t.deepEqual(merged, { foo: 'bar', baz: true }, 'adds primitive as key with value true'); + s2t.end(); + }); + + st.test('merges overflow object into primitive', function (s2t) { + // Create an overflow object via combine: 2 elements (indices 0-1) with limit 0 + var overflow = utils.combine(['a'], 'b', 0, false); + s2t.ok(utils.isOverflow(overflow), 'overflow object is marked'); + var merged = utils.merge('c', overflow); + s2t.ok(utils.isOverflow(merged), 'result is also marked as overflow'); + s2t.deepEqual(merged, { 0: 'c', 1: 'a', 2: 'b' }, 'creates object with primitive at 0, source values shifted'); + s2t.end(); + }); + + st.test('merges overflow object with multiple values into primitive', function (s2t) { + // Create an overflow object via combine: 3 elements (indices 0-2) with limit 0 + var overflow = utils.combine(['b', 'c'], 'd', 0, false); + s2t.ok(utils.isOverflow(overflow), 'overflow object is marked'); + var merged = utils.merge('a', overflow); + s2t.deepEqual(merged, { 0: 'a', 1: 'b', 2: 'c', 3: 'd' }, 'shifts all source indices by 1'); + s2t.end(); + }); + + st.test('merges regular object into primitive as array', function (s2t) { + var obj = { foo: 'bar' }; + var merged = utils.merge('a', obj); + s2t.deepEqual(merged, ['a', { foo: 'bar' }], 'creates array with primitive and object'); + s2t.end(); + }); + + st.end(); + }); + t.end(); }); @@ -116,6 +188,183 @@ test('combine()', function (t) { st.end(); }); + t.test('with arrayLimit', function (st) { + st.test('under the limit', function (s2t) { + var combined = utils.combine(['a', 'b'], 'c', 10, false); + s2t.deepEqual(combined, ['a', 'b', 'c'], 'returns array when under limit'); + s2t.ok(Array.isArray(combined), 'result is an array'); + s2t.end(); + }); + + st.test('exactly at the limit stays as array', function (s2t) { + var combined = utils.combine(['a', 'b'], 'c', 3, false); + s2t.deepEqual(combined, ['a', 'b', 'c'], 'stays as array when count equals limit'); + s2t.ok(Array.isArray(combined), 'result is an array'); + s2t.end(); + }); + + st.test('over the limit', function (s2t) { + var combined = utils.combine(['a', 'b', 'c'], 'd', 3, false); + s2t.deepEqual(combined, { 0: 'a', 1: 'b', 2: 'c', 3: 'd' }, 'converts to object when over limit'); + s2t.notOk(Array.isArray(combined), 'result is not an array'); + s2t.end(); + }); + + st.test('with arrayLimit 1', function (s2t) { + var combined = utils.combine([], 'a', 1, false); + s2t.deepEqual(combined, ['a'], 'stays as array when count equals limit'); + s2t.ok(Array.isArray(combined), 'result is an array'); + s2t.end(); + }); + + st.test('with arrayLimit 0 converts single element to object', function (s2t) { + var combined = utils.combine([], 'a', 0, false); + s2t.deepEqual(combined, { 0: 'a' }, 'converts to object when count exceeds limit'); + s2t.notOk(Array.isArray(combined), 'result is not an array'); + s2t.end(); + }); + + st.test('with arrayLimit 0 and two elements converts to object', function (s2t) { + var combined = utils.combine(['a'], 'b', 0, false); + s2t.deepEqual(combined, { 0: 'a', 1: 'b' }, 'converts to object when count exceeds limit'); + s2t.notOk(Array.isArray(combined), 'result is not an array'); + s2t.end(); + }); + + st.test('with plainObjects option', function (s2t) { + var combined = utils.combine(['a', 'b'], 'c', 1, true); + var expected = { __proto__: null, 0: 'a', 1: 'b', 2: 'c' }; + s2t.deepEqual(combined, expected, 'converts to object with null prototype'); + s2t.equal(Object.getPrototypeOf(combined), null, 'result has null prototype when plainObjects is true'); + s2t.end(); + }); + + st.end(); + }); + + t.test('with existing overflow object', function (st) { + st.test('adds to existing overflow object at next index', function (s2t) { + // Create overflow object first via combine: 3 elements (indices 0-2) with limit 0 + var overflow = utils.combine(['a', 'b'], 'c', 0, false); + s2t.ok(utils.isOverflow(overflow), 'initial object is marked as overflow'); + + var combined = utils.combine(overflow, 'd', 10, false); + s2t.equal(combined, overflow, 'returns the same object (mutated)'); + s2t.deepEqual(combined, { 0: 'a', 1: 'b', 2: 'c', 3: 'd' }, 'adds value at next numeric index'); + s2t.end(); + }); + + st.test('does not treat plain object with numeric keys as overflow', function (s2t) { + var plainObj = { 0: 'a', 1: 'b' }; + s2t.notOk(utils.isOverflow(plainObj), 'plain object is not marked as overflow'); + + // combine treats this as a regular value, not an overflow object to append to + var combined = utils.combine(plainObj, 'c', 10, false); + s2t.deepEqual(combined, [{ 0: 'a', 1: 'b' }, 'c'], 'concatenates as regular values'); + s2t.end(); + }); + + st.end(); + }); + + t.end(); +}); + +test('decode', function (t) { + t.equal( + utils.decode('a+b'), + 'a b', + 'decodes + to space' + ); + + t.equal( + utils.decode('name%2Eobj'), + 'name.obj', + 'decodes a string' + ); + t.equal( + utils.decode('name%2Eobj%2Efoo', null, 'iso-8859-1'), + 'name.obj.foo', + 'decodes a string in iso-8859-1' + ); + + t.end(); +}); + +test('encode', function (t) { + forEach(v.nullPrimitives, function (nullish) { + t['throws']( + function () { utils.encode(nullish); }, + TypeError, + inspect(nullish) + ' is not a string' + ); + }); + + t.equal(utils.encode(''), '', 'empty string returns itself'); + t.deepEqual(utils.encode([]), [], 'empty array returns itself'); + t.deepEqual(utils.encode({ length: 0 }), { length: 0 }, 'empty arraylike returns itself'); + + t.test('symbols', { skip: !v.hasSymbols }, function (st) { + st.equal(utils.encode(Symbol('x')), 'Symbol%28x%29', 'symbol is encoded'); + + st.end(); + }); + + t.equal( + utils.encode('(abc)'), + '%28abc%29', + 'encodes parentheses' + ); + t.equal( + utils.encode({ toString: function () { return '(abc)'; } }), + '%28abc%29', + 'toStrings and encodes parentheses' + ); + + t.equal( + utils.encode('abc 123 💩', null, 'iso-8859-1'), + 'abc%20123%20%26%2355357%3B%26%2356489%3B', + 'encodes in iso-8859-1' + ); + + var longString = ''; + var expectedString = ''; + for (var i = 0; i < 1500; i++) { + longString += ' '; + expectedString += '%20'; + } + + t.equal( + utils.encode(longString), + expectedString, + 'encodes a long string' + ); + + t.equal( + utils.encode('\x28\x29'), + '%28%29', + 'encodes parens normally' + ); + t.equal( + utils.encode('\x28\x29', null, null, null, 'RFC1738'), + '()', + 'does not encode parens in RFC1738' + ); + + // todo RFC1738 format + + t.equal( + utils.encode('Āက豈'), + '%C4%80%E1%80%80%EF%A4%80', + 'encodes multibyte chars' + ); + + t.equal( + utils.encode('\uD83D \uDCA9'), + '%F0%9F%90%A0%F0%BA%90%80', + 'encodes lone surrogates' + ); + t.end(); }); @@ -134,3 +383,15 @@ test('isBuffer()', function (t) { t.equal(utils.isBuffer(buffer), true, 'real Buffer instance is a buffer'); t.end(); }); + +test('isRegExp()', function (t) { + t.equal(utils.isRegExp(/a/g), true, 'RegExp is a RegExp'); + t.equal(utils.isRegExp(new RegExp('a', 'g')), true, 'new RegExp is a RegExp'); + t.equal(utils.isRegExp(new Date()), false, 'Date is not a RegExp'); + + forEach(v.primitives, function (primitive) { + t.equal(utils.isRegExp(primitive), false, inspect(primitive) + ' is not a RegExp'); + }); + + t.end(); +}); diff --git a/food-ordering-app/server/node_modules/raw-body/HISTORY.md b/food-ordering-app/server/node_modules/raw-body/HISTORY.md deleted file mode 100644 index 0b6b83739..000000000 --- a/food-ordering-app/server/node_modules/raw-body/HISTORY.md +++ /dev/null @@ -1,303 +0,0 @@ -2.5.1 / 2022-02-28 -================== - - * Fix error on early async hooks implementations - -2.5.0 / 2022-02-21 -================== - - * Prevent loss of async hooks context - * Prevent hanging when stream is not readable - * deps: http-errors@2.0.0 - - deps: depd@2.0.0 - - deps: statuses@2.0.1 - -2.4.3 / 2022-02-14 -================== - - * deps: bytes@3.1.2 - -2.4.2 / 2021-11-16 -================== - - * deps: bytes@3.1.1 - * deps: http-errors@1.8.1 - - deps: setprototypeof@1.2.0 - - deps: toidentifier@1.0.1 - -2.4.1 / 2019-06-25 -================== - - * deps: http-errors@1.7.3 - - deps: inherits@2.0.4 - -2.4.0 / 2019-04-17 -================== - - * deps: bytes@3.1.0 - - Add petabyte (`pb`) support - * deps: http-errors@1.7.2 - - Set constructor name when possible - - deps: setprototypeof@1.1.1 - - deps: statuses@'>= 1.5.0 < 2' - * deps: iconv-lite@0.4.24 - - Added encoding MIK - -2.3.3 / 2018-05-08 -================== - - * deps: http-errors@1.6.3 - - deps: depd@~1.1.2 - - deps: setprototypeof@1.1.0 - - deps: statuses@'>= 1.3.1 < 2' - * deps: iconv-lite@0.4.23 - - Fix loading encoding with year appended - - Fix deprecation warnings on Node.js 10+ - -2.3.2 / 2017-09-09 -================== - - * deps: iconv-lite@0.4.19 - - Fix ISO-8859-1 regression - - Update Windows-1255 - -2.3.1 / 2017-09-07 -================== - - * deps: bytes@3.0.0 - * deps: http-errors@1.6.2 - - deps: depd@1.1.1 - * perf: skip buffer decoding on overage chunk - -2.3.0 / 2017-08-04 -================== - - * Add TypeScript definitions - * Use `http-errors` for standard emitted errors - * deps: bytes@2.5.0 - * deps: iconv-lite@0.4.18 - - Add support for React Native - - Add a warning if not loaded as utf-8 - - Fix CESU-8 decoding in Node.js 8 - - Improve speed of ISO-8859-1 encoding - -2.2.0 / 2017-01-02 -================== - - * deps: iconv-lite@0.4.15 - - Added encoding MS-31J - - Added encoding MS-932 - - Added encoding MS-936 - - Added encoding MS-949 - - Added encoding MS-950 - - Fix GBK/GB18030 handling of Euro character - -2.1.7 / 2016-06-19 -================== - - * deps: bytes@2.4.0 - * perf: remove double-cleanup on happy path - -2.1.6 / 2016-03-07 -================== - - * deps: bytes@2.3.0 - - Drop partial bytes on all parsed units - - Fix parsing byte string that looks like hex - -2.1.5 / 2015-11-30 -================== - - * deps: bytes@2.2.0 - * deps: iconv-lite@0.4.13 - -2.1.4 / 2015-09-27 -================== - - * Fix masking critical errors from `iconv-lite` - * deps: iconv-lite@0.4.12 - - Fix CESU-8 decoding in Node.js 4.x - -2.1.3 / 2015-09-12 -================== - - * Fix sync callback when attaching data listener causes sync read - - Node.js 0.10 compatibility issue - -2.1.2 / 2015-07-05 -================== - - * Fix error stack traces to skip `makeError` - * deps: iconv-lite@0.4.11 - - Add encoding CESU-8 - -2.1.1 / 2015-06-14 -================== - - * Use `unpipe` module for unpiping requests - -2.1.0 / 2015-05-28 -================== - - * deps: iconv-lite@0.4.10 - - Improved UTF-16 endianness detection - - Leading BOM is now removed when decoding - - The encoding UTF-16 without BOM now defaults to UTF-16LE when detection fails - -2.0.2 / 2015-05-21 -================== - - * deps: bytes@2.1.0 - - Slight optimizations - -2.0.1 / 2015-05-10 -================== - - * Fix a false-positive when unpiping in Node.js 0.8 - -2.0.0 / 2015-05-08 -================== - - * Return a promise without callback instead of thunk - * deps: bytes@2.0.1 - - units no longer case sensitive when parsing - -1.3.4 / 2015-04-15 -================== - - * Fix hanging callback if request aborts during read - * deps: iconv-lite@0.4.8 - - Add encoding alias UNICODE-1-1-UTF-7 - -1.3.3 / 2015-02-08 -================== - - * deps: iconv-lite@0.4.7 - - Gracefully support enumerables on `Object.prototype` - -1.3.2 / 2015-01-20 -================== - - * deps: iconv-lite@0.4.6 - - Fix rare aliases of single-byte encodings - -1.3.1 / 2014-11-21 -================== - - * deps: iconv-lite@0.4.5 - - Fix Windows-31J and X-SJIS encoding support - -1.3.0 / 2014-07-20 -================== - - * Fully unpipe the stream on error - - Fixes `Cannot switch to old mode now` error on Node.js 0.10+ - -1.2.3 / 2014-07-20 -================== - - * deps: iconv-lite@0.4.4 - - Added encoding UTF-7 - -1.2.2 / 2014-06-19 -================== - - * Send invalid encoding error to callback - -1.2.1 / 2014-06-15 -================== - - * deps: iconv-lite@0.4.3 - - Added encodings UTF-16BE and UTF-16 with BOM - -1.2.0 / 2014-06-13 -================== - - * Passing string as `options` interpreted as encoding - * Support all encodings from `iconv-lite` - -1.1.7 / 2014-06-12 -================== - - * use `string_decoder` module from npm - -1.1.6 / 2014-05-27 -================== - - * check encoding for old streams1 - * support node.js < 0.10.6 - -1.1.5 / 2014-05-14 -================== - - * bump bytes - -1.1.4 / 2014-04-19 -================== - - * allow true as an option - * bump bytes - -1.1.3 / 2014-03-02 -================== - - * fix case when length=null - -1.1.2 / 2013-12-01 -================== - - * be less strict on state.encoding check - -1.1.1 / 2013-11-27 -================== - - * add engines - -1.1.0 / 2013-11-27 -================== - - * add err.statusCode and err.type - * allow for encoding option to be true - * pause the stream instead of dumping on error - * throw if the stream's encoding is set - -1.0.1 / 2013-11-19 -================== - - * dont support streams1, throw if dev set encoding - -1.0.0 / 2013-11-17 -================== - - * rename `expected` option to `length` - -0.2.0 / 2013-11-15 -================== - - * republish - -0.1.1 / 2013-11-15 -================== - - * use bytes - -0.1.0 / 2013-11-11 -================== - - * generator support - -0.0.3 / 2013-10-10 -================== - - * update repo - -0.0.2 / 2013-09-14 -================== - - * dump stream on bad headers - * listen to events after defining received and buffers - -0.0.1 / 2013-09-14 -================== - - * Initial release diff --git a/food-ordering-app/server/node_modules/raw-body/README.md b/food-ordering-app/server/node_modules/raw-body/README.md index 695c66073..d9b36d611 100644 --- a/food-ordering-app/server/node_modules/raw-body/README.md +++ b/food-ordering-app/server/node_modules/raw-body/README.md @@ -219,5 +219,5 @@ server.listen(3000); [coveralls-url]: https://coveralls.io/r/stream-utils/raw-body?branch=master [downloads-image]: https://img.shields.io/npm/dm/raw-body.svg [downloads-url]: https://npmjs.org/package/raw-body -[github-actions-ci-image]: https://img.shields.io/github/workflow/status/stream-utils/raw-body/ci/master?label=ci +[github-actions-ci-image]: https://img.shields.io/github/actions/workflow/status/stream-utils/raw-body/ci.yml?branch=master&label=ci [github-actions-ci-url]: https://github.com/jshttp/stream-utils/raw-body?query=workflow%3Aci diff --git a/food-ordering-app/server/node_modules/raw-body/SECURITY.md b/food-ordering-app/server/node_modules/raw-body/SECURITY.md deleted file mode 100644 index 2421efc4b..000000000 --- a/food-ordering-app/server/node_modules/raw-body/SECURITY.md +++ /dev/null @@ -1,24 +0,0 @@ -# Security Policies and Procedures - -## Reporting a Bug - -The `raw-body` team and community take all security bugs seriously. Thank you -for improving the security of Express. We appreciate your efforts and -responsible disclosure and will make every effort to acknowledge your -contributions. - -Report security bugs by emailing the current owners of `raw-body`. This information -can be found in the npm registry using the command `npm owner ls raw-body`. -If unsure or unable to get the information from the above, open an issue -in the [project issue tracker](https://github.com/stream-utils/raw-body/issues) -asking for the current contact information. - -To ensure the timely response to your report, please ensure that the entirety -of the report is contained within the email body and not solely behind a web -link or an attachment. - -At least one owner will acknowledge your email within 48 hours, and will send a -more detailed response within 48 hours indicating the next steps in handling -your report. After the initial reply to your report, the owners will -endeavor to keep you informed of the progress towards a fix and full -announcement, and may ask for additional information or guidance. diff --git a/food-ordering-app/server/node_modules/raw-body/index.js b/food-ordering-app/server/node_modules/raw-body/index.js index a8f537f38..9cdcd1221 100644 --- a/food-ordering-app/server/node_modules/raw-body/index.js +++ b/food-ordering-app/server/node_modules/raw-body/index.js @@ -69,6 +69,13 @@ function getRawBody (stream, options, callback) { var done = callback var opts = options || {} + // light validation + if (stream === undefined) { + throw new TypeError('argument stream is required') + } else if (typeof stream !== 'object' || stream === null || typeof stream.on !== 'function') { + throw new TypeError('argument stream must be a stream') + } + if (options === true || typeof options === 'string') { // short cut for encoding opts = { diff --git a/food-ordering-app/server/node_modules/raw-body/package.json b/food-ordering-app/server/node_modules/raw-body/package.json index 50fc90ad4..d8120afa4 100644 --- a/food-ordering-app/server/node_modules/raw-body/package.json +++ b/food-ordering-app/server/node_modules/raw-body/package.json @@ -1,7 +1,7 @@ { "name": "raw-body", "description": "Get and validate the raw body of a readable stream.", - "version": "2.5.1", + "version": "2.5.3", "author": "Jonathan Ong (http://jongleberry.com)", "contributors": [ "Douglas Christopher Wilson ", @@ -10,21 +10,21 @@ "license": "MIT", "repository": "stream-utils/raw-body", "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" }, "devDependencies": { "bluebird": "3.7.2", - "eslint": "7.32.0", - "eslint-config-standard": "14.1.1", - "eslint-plugin-import": "2.25.4", - "eslint-plugin-markdown": "2.2.1", + "eslint": "8.34.0", + "eslint-config-standard": "15.0.1", + "eslint-plugin-import": "2.27.5", + "eslint-plugin-markdown": "3.0.0", "eslint-plugin-node": "11.1.0", - "eslint-plugin-promise": "5.2.0", + "eslint-plugin-promise": "6.1.1", "eslint-plugin-standard": "4.1.0", - "mocha": "9.2.1", + "mocha": "10.2.0", "nyc": "15.1.0", "readable-stream": "2.3.7", "safe-buffer": "5.2.1" @@ -33,10 +33,8 @@ "node": ">= 0.8" }, "files": [ - "HISTORY.md", "LICENSE", "README.md", - "SECURITY.md", "index.d.ts", "index.js" ], diff --git a/food-ordering-app/server/node_modules/saslprep/.editorconfig b/food-ordering-app/server/node_modules/saslprep/.editorconfig deleted file mode 100644 index d1d8a4176..000000000 --- a/food-ordering-app/server/node_modules/saslprep/.editorconfig +++ /dev/null @@ -1,10 +0,0 @@ -# http://editorconfig.org -root = true - -[*] -indent_style = space -indent_size = 2 -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true diff --git a/food-ordering-app/server/node_modules/saslprep/.gitattributes b/food-ordering-app/server/node_modules/saslprep/.gitattributes deleted file mode 100644 index 3ba45360c..000000000 --- a/food-ordering-app/server/node_modules/saslprep/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -*.mem binary diff --git a/food-ordering-app/server/node_modules/saslprep/.travis.yml b/food-ordering-app/server/node_modules/saslprep/.travis.yml deleted file mode 100644 index 0bca82653..000000000 --- a/food-ordering-app/server/node_modules/saslprep/.travis.yml +++ /dev/null @@ -1,10 +0,0 @@ -sudo: false -language: node_js -node_js: - - "6" - - "8" - - "10" - - "12" - -before_install: -- npm install -g npm@6 diff --git a/food-ordering-app/server/node_modules/saslprep/CHANGELOG.md b/food-ordering-app/server/node_modules/saslprep/CHANGELOG.md deleted file mode 100644 index 779807877..000000000 --- a/food-ordering-app/server/node_modules/saslprep/CHANGELOG.md +++ /dev/null @@ -1,19 +0,0 @@ -# Change Log -All notable changes to the "saslprep" package will be documented in this file. - -## [1.0.3] - 2019-05-01 - -- Correctly get code points >U+FFFF ([#5](https://github.com/reklatsmasters/saslprep/pull/5)) -- Fix perfomance downgrades from [#5](https://github.com/reklatsmasters/saslprep/pull/5). - -## [1.0.2] - 2018-09-13 - -- Reduced initialization time ([#3](https://github.com/reklatsmasters/saslprep/issues/3)) - -## [1.0.1] - 2018-06-20 - -- Reduced stack overhead of range creation ([#2](https://github.com/reklatsmasters/saslprep/pull/2)) - -## [1.0.0] - 2017-06-21 - -- First release diff --git a/food-ordering-app/server/node_modules/saslprep/code-points.mem b/food-ordering-app/server/node_modules/saslprep/code-points.mem deleted file mode 100644 index 4781b0668..000000000 Binary files a/food-ordering-app/server/node_modules/saslprep/code-points.mem and /dev/null differ diff --git a/food-ordering-app/server/node_modules/saslprep/generate-code-points.js b/food-ordering-app/server/node_modules/saslprep/generate-code-points.js deleted file mode 100644 index c5162ca7a..000000000 --- a/food-ordering-app/server/node_modules/saslprep/generate-code-points.js +++ /dev/null @@ -1,51 +0,0 @@ -'use strict'; - -const bitfield = require('sparse-bitfield'); -const codePoints = require('./lib/code-points'); - -const unassigned_code_points = bitfield(); -const commonly_mapped_to_nothing = bitfield(); -const non_ascii_space_characters = bitfield(); -const prohibited_characters = bitfield(); -const bidirectional_r_al = bitfield(); -const bidirectional_l = bitfield(); - -/** - * Iterare over code points and - * convert it into an buffer. - * @param {bitfield} bits - * @param {Array} src - * @returns {Buffer} - */ -function traverse(bits, src) { - for (const code of src.keys()) { - bits.set(code, true); - } - - const buffer = bits.toBuffer(); - return Buffer.concat([createSize(buffer), buffer]); -} - -/** - * @param {Buffer} buffer - * @returns {Buffer} - */ -function createSize(buffer) { - const buf = Buffer.alloc(4); - buf.writeUInt32BE(buffer.length); - - return buf; -} - -const memory = []; - -memory.push( - traverse(unassigned_code_points, codePoints.unassigned_code_points), - traverse(commonly_mapped_to_nothing, codePoints.commonly_mapped_to_nothing), - traverse(non_ascii_space_characters, codePoints.non_ASCII_space_characters), - traverse(prohibited_characters, codePoints.prohibited_characters), - traverse(bidirectional_r_al, codePoints.bidirectional_r_al), - traverse(bidirectional_l, codePoints.bidirectional_l) -); - -process.stdout.write(Buffer.concat(memory)); diff --git a/food-ordering-app/server/node_modules/saslprep/index.js b/food-ordering-app/server/node_modules/saslprep/index.js deleted file mode 100644 index 21bb0fed3..000000000 --- a/food-ordering-app/server/node_modules/saslprep/index.js +++ /dev/null @@ -1,157 +0,0 @@ -'use strict'; - -const { - unassigned_code_points, - commonly_mapped_to_nothing, - non_ASCII_space_characters, - prohibited_characters, - bidirectional_r_al, - bidirectional_l, -} = require('./lib/memory-code-points'); - -module.exports = saslprep; - -// 2.1. Mapping - -/** - * non-ASCII space characters [StringPrep, C.1.2] that can be - * mapped to SPACE (U+0020) - */ -const mapping2space = non_ASCII_space_characters; - -/** - * the "commonly mapped to nothing" characters [StringPrep, B.1] - * that can be mapped to nothing. - */ -const mapping2nothing = commonly_mapped_to_nothing; - -// utils -const getCodePoint = character => character.codePointAt(0); -const first = x => x[0]; -const last = x => x[x.length - 1]; - -/** - * Convert provided string into an array of Unicode Code Points. - * Based on https://stackoverflow.com/a/21409165/1556249 - * and https://www.npmjs.com/package/code-point-at. - * @param {string} input - * @returns {number[]} - */ -function toCodePoints(input) { - const codepoints = []; - const size = input.length; - - for (let i = 0; i < size; i += 1) { - const before = input.charCodeAt(i); - - if (before >= 0xd800 && before <= 0xdbff && size > i + 1) { - const next = input.charCodeAt(i + 1); - - if (next >= 0xdc00 && next <= 0xdfff) { - codepoints.push((before - 0xd800) * 0x400 + next - 0xdc00 + 0x10000); - i += 1; - continue; - } - } - - codepoints.push(before); - } - - return codepoints; -} - -/** - * SASLprep. - * @param {string} input - * @param {Object} opts - * @param {boolean} opts.allowUnassigned - * @returns {string} - */ -function saslprep(input, opts = {}) { - if (typeof input !== 'string') { - throw new TypeError('Expected string.'); - } - - if (input.length === 0) { - return ''; - } - - // 1. Map - const mapped_input = toCodePoints(input) - // 1.1 mapping to space - .map(character => (mapping2space.get(character) ? 0x20 : character)) - // 1.2 mapping to nothing - .filter(character => !mapping2nothing.get(character)); - - // 2. Normalize - const normalized_input = String.fromCodePoint - .apply(null, mapped_input) - .normalize('NFKC'); - - const normalized_map = toCodePoints(normalized_input); - - // 3. Prohibit - const hasProhibited = normalized_map.some(character => - prohibited_characters.get(character) - ); - - if (hasProhibited) { - throw new Error( - 'Prohibited character, see https://tools.ietf.org/html/rfc4013#section-2.3' - ); - } - - // Unassigned Code Points - if (opts.allowUnassigned !== true) { - const hasUnassigned = normalized_map.some(character => - unassigned_code_points.get(character) - ); - - if (hasUnassigned) { - throw new Error( - 'Unassigned code point, see https://tools.ietf.org/html/rfc4013#section-2.5' - ); - } - } - - // 4. check bidi - - const hasBidiRAL = normalized_map.some(character => - bidirectional_r_al.get(character) - ); - - const hasBidiL = normalized_map.some(character => - bidirectional_l.get(character) - ); - - // 4.1 If a string contains any RandALCat character, the string MUST NOT - // contain any LCat character. - if (hasBidiRAL && hasBidiL) { - throw new Error( - 'String must not contain RandALCat and LCat at the same time,' + - ' see https://tools.ietf.org/html/rfc3454#section-6' - ); - } - - /** - * 4.2 If a string contains any RandALCat character, a RandALCat - * character MUST be the first character of the string, and a - * RandALCat character MUST be the last character of the string. - */ - - const isFirstBidiRAL = bidirectional_r_al.get( - getCodePoint(first(normalized_input)) - ); - const isLastBidiRAL = bidirectional_r_al.get( - getCodePoint(last(normalized_input)) - ); - - if (hasBidiRAL && !(isFirstBidiRAL && isLastBidiRAL)) { - throw new Error( - 'Bidirectional RandALCat character must be the first and the last' + - ' character of the string, see https://tools.ietf.org/html/rfc3454#section-6' - ); - } - - return normalized_input; -} diff --git a/food-ordering-app/server/node_modules/saslprep/lib/code-points.js b/food-ordering-app/server/node_modules/saslprep/lib/code-points.js deleted file mode 100644 index 222182c83..000000000 --- a/food-ordering-app/server/node_modules/saslprep/lib/code-points.js +++ /dev/null @@ -1,996 +0,0 @@ -'use strict'; - -const { range } = require('./util'); - -/** - * A.1 Unassigned code points in Unicode 3.2 - * @link https://tools.ietf.org/html/rfc3454#appendix-A.1 - */ -const unassigned_code_points = new Set([ - 0x0221, - ...range(0x0234, 0x024f), - ...range(0x02ae, 0x02af), - ...range(0x02ef, 0x02ff), - ...range(0x0350, 0x035f), - ...range(0x0370, 0x0373), - ...range(0x0376, 0x0379), - ...range(0x037b, 0x037d), - ...range(0x037f, 0x0383), - 0x038b, - 0x038d, - 0x03a2, - 0x03cf, - ...range(0x03f7, 0x03ff), - 0x0487, - 0x04cf, - ...range(0x04f6, 0x04f7), - ...range(0x04fa, 0x04ff), - ...range(0x0510, 0x0530), - ...range(0x0557, 0x0558), - 0x0560, - 0x0588, - ...range(0x058b, 0x0590), - 0x05a2, - 0x05ba, - ...range(0x05c5, 0x05cf), - ...range(0x05eb, 0x05ef), - ...range(0x05f5, 0x060b), - ...range(0x060d, 0x061a), - ...range(0x061c, 0x061e), - 0x0620, - ...range(0x063b, 0x063f), - ...range(0x0656, 0x065f), - ...range(0x06ee, 0x06ef), - 0x06ff, - 0x070e, - ...range(0x072d, 0x072f), - ...range(0x074b, 0x077f), - ...range(0x07b2, 0x0900), - 0x0904, - ...range(0x093a, 0x093b), - ...range(0x094e, 0x094f), - ...range(0x0955, 0x0957), - ...range(0x0971, 0x0980), - 0x0984, - ...range(0x098d, 0x098e), - ...range(0x0991, 0x0992), - 0x09a9, - 0x09b1, - ...range(0x09b3, 0x09b5), - ...range(0x09ba, 0x09bb), - 0x09bd, - ...range(0x09c5, 0x09c6), - ...range(0x09c9, 0x09ca), - ...range(0x09ce, 0x09d6), - ...range(0x09d8, 0x09db), - 0x09de, - ...range(0x09e4, 0x09e5), - ...range(0x09fb, 0x0a01), - ...range(0x0a03, 0x0a04), - ...range(0x0a0b, 0x0a0e), - ...range(0x0a11, 0x0a12), - 0x0a29, - 0x0a31, - 0x0a34, - 0x0a37, - ...range(0x0a3a, 0x0a3b), - 0x0a3d, - ...range(0x0a43, 0x0a46), - ...range(0x0a49, 0x0a4a), - ...range(0x0a4e, 0x0a58), - 0x0a5d, - ...range(0x0a5f, 0x0a65), - ...range(0x0a75, 0x0a80), - 0x0a84, - 0x0a8c, - 0x0a8e, - 0x0a92, - 0x0aa9, - 0x0ab1, - 0x0ab4, - ...range(0x0aba, 0x0abb), - 0x0ac6, - 0x0aca, - ...range(0x0ace, 0x0acf), - ...range(0x0ad1, 0x0adf), - ...range(0x0ae1, 0x0ae5), - ...range(0x0af0, 0x0b00), - 0x0b04, - ...range(0x0b0d, 0x0b0e), - ...range(0x0b11, 0x0b12), - 0x0b29, - 0x0b31, - ...range(0x0b34, 0x0b35), - ...range(0x0b3a, 0x0b3b), - ...range(0x0b44, 0x0b46), - ...range(0x0b49, 0x0b4a), - ...range(0x0b4e, 0x0b55), - ...range(0x0b58, 0x0b5b), - 0x0b5e, - ...range(0x0b62, 0x0b65), - ...range(0x0b71, 0x0b81), - 0x0b84, - ...range(0x0b8b, 0x0b8d), - 0x0b91, - ...range(0x0b96, 0x0b98), - 0x0b9b, - 0x0b9d, - ...range(0x0ba0, 0x0ba2), - ...range(0x0ba5, 0x0ba7), - ...range(0x0bab, 0x0bad), - 0x0bb6, - ...range(0x0bba, 0x0bbd), - ...range(0x0bc3, 0x0bc5), - 0x0bc9, - ...range(0x0bce, 0x0bd6), - ...range(0x0bd8, 0x0be6), - ...range(0x0bf3, 0x0c00), - 0x0c04, - 0x0c0d, - 0x0c11, - 0x0c29, - 0x0c34, - ...range(0x0c3a, 0x0c3d), - 0x0c45, - 0x0c49, - ...range(0x0c4e, 0x0c54), - ...range(0x0c57, 0x0c5f), - ...range(0x0c62, 0x0c65), - ...range(0x0c70, 0x0c81), - 0x0c84, - 0x0c8d, - 0x0c91, - 0x0ca9, - 0x0cb4, - ...range(0x0cba, 0x0cbd), - 0x0cc5, - 0x0cc9, - ...range(0x0cce, 0x0cd4), - ...range(0x0cd7, 0x0cdd), - 0x0cdf, - ...range(0x0ce2, 0x0ce5), - ...range(0x0cf0, 0x0d01), - 0x0d04, - 0x0d0d, - 0x0d11, - 0x0d29, - ...range(0x0d3a, 0x0d3d), - ...range(0x0d44, 0x0d45), - 0x0d49, - ...range(0x0d4e, 0x0d56), - ...range(0x0d58, 0x0d5f), - ...range(0x0d62, 0x0d65), - ...range(0x0d70, 0x0d81), - 0x0d84, - ...range(0x0d97, 0x0d99), - 0x0db2, - 0x0dbc, - ...range(0x0dbe, 0x0dbf), - ...range(0x0dc7, 0x0dc9), - ...range(0x0dcb, 0x0dce), - 0x0dd5, - 0x0dd7, - ...range(0x0de0, 0x0df1), - ...range(0x0df5, 0x0e00), - ...range(0x0e3b, 0x0e3e), - ...range(0x0e5c, 0x0e80), - 0x0e83, - ...range(0x0e85, 0x0e86), - 0x0e89, - ...range(0x0e8b, 0x0e8c), - ...range(0x0e8e, 0x0e93), - 0x0e98, - 0x0ea0, - 0x0ea4, - 0x0ea6, - ...range(0x0ea8, 0x0ea9), - 0x0eac, - 0x0eba, - ...range(0x0ebe, 0x0ebf), - 0x0ec5, - 0x0ec7, - ...range(0x0ece, 0x0ecf), - ...range(0x0eda, 0x0edb), - ...range(0x0ede, 0x0eff), - 0x0f48, - ...range(0x0f6b, 0x0f70), - ...range(0x0f8c, 0x0f8f), - 0x0f98, - 0x0fbd, - ...range(0x0fcd, 0x0fce), - ...range(0x0fd0, 0x0fff), - 0x1022, - 0x1028, - 0x102b, - ...range(0x1033, 0x1035), - ...range(0x103a, 0x103f), - ...range(0x105a, 0x109f), - ...range(0x10c6, 0x10cf), - ...range(0x10f9, 0x10fa), - ...range(0x10fc, 0x10ff), - ...range(0x115a, 0x115e), - ...range(0x11a3, 0x11a7), - ...range(0x11fa, 0x11ff), - 0x1207, - 0x1247, - 0x1249, - ...range(0x124e, 0x124f), - 0x1257, - 0x1259, - ...range(0x125e, 0x125f), - 0x1287, - 0x1289, - ...range(0x128e, 0x128f), - 0x12af, - 0x12b1, - ...range(0x12b6, 0x12b7), - 0x12bf, - 0x12c1, - ...range(0x12c6, 0x12c7), - 0x12cf, - 0x12d7, - 0x12ef, - 0x130f, - 0x1311, - ...range(0x1316, 0x1317), - 0x131f, - 0x1347, - ...range(0x135b, 0x1360), - ...range(0x137d, 0x139f), - ...range(0x13f5, 0x1400), - ...range(0x1677, 0x167f), - ...range(0x169d, 0x169f), - ...range(0x16f1, 0x16ff), - 0x170d, - ...range(0x1715, 0x171f), - ...range(0x1737, 0x173f), - ...range(0x1754, 0x175f), - 0x176d, - 0x1771, - ...range(0x1774, 0x177f), - ...range(0x17dd, 0x17df), - ...range(0x17ea, 0x17ff), - 0x180f, - ...range(0x181a, 0x181f), - ...range(0x1878, 0x187f), - ...range(0x18aa, 0x1dff), - ...range(0x1e9c, 0x1e9f), - ...range(0x1efa, 0x1eff), - ...range(0x1f16, 0x1f17), - ...range(0x1f1e, 0x1f1f), - ...range(0x1f46, 0x1f47), - ...range(0x1f4e, 0x1f4f), - 0x1f58, - 0x1f5a, - 0x1f5c, - 0x1f5e, - ...range(0x1f7e, 0x1f7f), - 0x1fb5, - 0x1fc5, - ...range(0x1fd4, 0x1fd5), - 0x1fdc, - ...range(0x1ff0, 0x1ff1), - 0x1ff5, - 0x1fff, - ...range(0x2053, 0x2056), - ...range(0x2058, 0x205e), - ...range(0x2064, 0x2069), - ...range(0x2072, 0x2073), - ...range(0x208f, 0x209f), - ...range(0x20b2, 0x20cf), - ...range(0x20eb, 0x20ff), - ...range(0x213b, 0x213c), - ...range(0x214c, 0x2152), - ...range(0x2184, 0x218f), - ...range(0x23cf, 0x23ff), - ...range(0x2427, 0x243f), - ...range(0x244b, 0x245f), - 0x24ff, - ...range(0x2614, 0x2615), - 0x2618, - ...range(0x267e, 0x267f), - ...range(0x268a, 0x2700), - 0x2705, - ...range(0x270a, 0x270b), - 0x2728, - 0x274c, - 0x274e, - ...range(0x2753, 0x2755), - 0x2757, - ...range(0x275f, 0x2760), - ...range(0x2795, 0x2797), - 0x27b0, - ...range(0x27bf, 0x27cf), - ...range(0x27ec, 0x27ef), - ...range(0x2b00, 0x2e7f), - 0x2e9a, - ...range(0x2ef4, 0x2eff), - ...range(0x2fd6, 0x2fef), - ...range(0x2ffc, 0x2fff), - 0x3040, - ...range(0x3097, 0x3098), - ...range(0x3100, 0x3104), - ...range(0x312d, 0x3130), - 0x318f, - ...range(0x31b8, 0x31ef), - ...range(0x321d, 0x321f), - ...range(0x3244, 0x3250), - ...range(0x327c, 0x327e), - ...range(0x32cc, 0x32cf), - 0x32ff, - ...range(0x3377, 0x337a), - ...range(0x33de, 0x33df), - 0x33ff, - ...range(0x4db6, 0x4dff), - ...range(0x9fa6, 0x9fff), - ...range(0xa48d, 0xa48f), - ...range(0xa4c7, 0xabff), - ...range(0xd7a4, 0xd7ff), - ...range(0xfa2e, 0xfa2f), - ...range(0xfa6b, 0xfaff), - ...range(0xfb07, 0xfb12), - ...range(0xfb18, 0xfb1c), - 0xfb37, - 0xfb3d, - 0xfb3f, - 0xfb42, - 0xfb45, - ...range(0xfbb2, 0xfbd2), - ...range(0xfd40, 0xfd4f), - ...range(0xfd90, 0xfd91), - ...range(0xfdc8, 0xfdcf), - ...range(0xfdfd, 0xfdff), - ...range(0xfe10, 0xfe1f), - ...range(0xfe24, 0xfe2f), - ...range(0xfe47, 0xfe48), - 0xfe53, - 0xfe67, - ...range(0xfe6c, 0xfe6f), - 0xfe75, - ...range(0xfefd, 0xfefe), - 0xff00, - ...range(0xffbf, 0xffc1), - ...range(0xffc8, 0xffc9), - ...range(0xffd0, 0xffd1), - ...range(0xffd8, 0xffd9), - ...range(0xffdd, 0xffdf), - 0xffe7, - ...range(0xffef, 0xfff8), - ...range(0x10000, 0x102ff), - 0x1031f, - ...range(0x10324, 0x1032f), - ...range(0x1034b, 0x103ff), - ...range(0x10426, 0x10427), - ...range(0x1044e, 0x1cfff), - ...range(0x1d0f6, 0x1d0ff), - ...range(0x1d127, 0x1d129), - ...range(0x1d1de, 0x1d3ff), - 0x1d455, - 0x1d49d, - ...range(0x1d4a0, 0x1d4a1), - ...range(0x1d4a3, 0x1d4a4), - ...range(0x1d4a7, 0x1d4a8), - 0x1d4ad, - 0x1d4ba, - 0x1d4bc, - 0x1d4c1, - 0x1d4c4, - 0x1d506, - ...range(0x1d50b, 0x1d50c), - 0x1d515, - 0x1d51d, - 0x1d53a, - 0x1d53f, - 0x1d545, - ...range(0x1d547, 0x1d549), - 0x1d551, - ...range(0x1d6a4, 0x1d6a7), - ...range(0x1d7ca, 0x1d7cd), - ...range(0x1d800, 0x1fffd), - ...range(0x2a6d7, 0x2f7ff), - ...range(0x2fa1e, 0x2fffd), - ...range(0x30000, 0x3fffd), - ...range(0x40000, 0x4fffd), - ...range(0x50000, 0x5fffd), - ...range(0x60000, 0x6fffd), - ...range(0x70000, 0x7fffd), - ...range(0x80000, 0x8fffd), - ...range(0x90000, 0x9fffd), - ...range(0xa0000, 0xafffd), - ...range(0xb0000, 0xbfffd), - ...range(0xc0000, 0xcfffd), - ...range(0xd0000, 0xdfffd), - 0xe0000, - ...range(0xe0002, 0xe001f), - ...range(0xe0080, 0xefffd), -]); - -/** - * B.1 Commonly mapped to nothing - * @link https://tools.ietf.org/html/rfc3454#appendix-B.1 - */ -const commonly_mapped_to_nothing = new Set([ - 0x00ad, - 0x034f, - 0x1806, - 0x180b, - 0x180c, - 0x180d, - 0x200b, - 0x200c, - 0x200d, - 0x2060, - 0xfe00, - 0xfe01, - 0xfe02, - 0xfe03, - 0xfe04, - 0xfe05, - 0xfe06, - 0xfe07, - 0xfe08, - 0xfe09, - 0xfe0a, - 0xfe0b, - 0xfe0c, - 0xfe0d, - 0xfe0e, - 0xfe0f, - 0xfeff, -]); - -/** - * C.1.2 Non-ASCII space characters - * @link https://tools.ietf.org/html/rfc3454#appendix-C.1.2 - */ -const non_ASCII_space_characters = new Set([ - 0x00a0 /* NO-BREAK SPACE */, - 0x1680 /* OGHAM SPACE MARK */, - 0x2000 /* EN QUAD */, - 0x2001 /* EM QUAD */, - 0x2002 /* EN SPACE */, - 0x2003 /* EM SPACE */, - 0x2004 /* THREE-PER-EM SPACE */, - 0x2005 /* FOUR-PER-EM SPACE */, - 0x2006 /* SIX-PER-EM SPACE */, - 0x2007 /* FIGURE SPACE */, - 0x2008 /* PUNCTUATION SPACE */, - 0x2009 /* THIN SPACE */, - 0x200a /* HAIR SPACE */, - 0x200b /* ZERO WIDTH SPACE */, - 0x202f /* NARROW NO-BREAK SPACE */, - 0x205f /* MEDIUM MATHEMATICAL SPACE */, - 0x3000 /* IDEOGRAPHIC SPACE */, -]); - -/** - * 2.3. Prohibited Output - * @type {Set} - */ -const prohibited_characters = new Set([ - ...non_ASCII_space_characters, - - /** - * C.2.1 ASCII control characters - * @link https://tools.ietf.org/html/rfc3454#appendix-C.2.1 - */ - ...range(0, 0x001f) /* [CONTROL CHARACTERS] */, - 0x007f /* DELETE */, - - /** - * C.2.2 Non-ASCII control characters - * @link https://tools.ietf.org/html/rfc3454#appendix-C.2.2 - */ - ...range(0x0080, 0x009f) /* [CONTROL CHARACTERS] */, - 0x06dd /* ARABIC END OF AYAH */, - 0x070f /* SYRIAC ABBREVIATION MARK */, - 0x180e /* MONGOLIAN VOWEL SEPARATOR */, - 0x200c /* ZERO WIDTH NON-JOINER */, - 0x200d /* ZERO WIDTH JOINER */, - 0x2028 /* LINE SEPARATOR */, - 0x2029 /* PARAGRAPH SEPARATOR */, - 0x2060 /* WORD JOINER */, - 0x2061 /* FUNCTION APPLICATION */, - 0x2062 /* INVISIBLE TIMES */, - 0x2063 /* INVISIBLE SEPARATOR */, - ...range(0x206a, 0x206f) /* [CONTROL CHARACTERS] */, - 0xfeff /* ZERO WIDTH NO-BREAK SPACE */, - ...range(0xfff9, 0xfffc) /* [CONTROL CHARACTERS] */, - ...range(0x1d173, 0x1d17a) /* [MUSICAL CONTROL CHARACTERS] */, - - /** - * C.3 Private use - * @link https://tools.ietf.org/html/rfc3454#appendix-C.3 - */ - ...range(0xe000, 0xf8ff) /* [PRIVATE USE, PLANE 0] */, - ...range(0xf0000, 0xffffd) /* [PRIVATE USE, PLANE 15] */, - ...range(0x100000, 0x10fffd) /* [PRIVATE USE, PLANE 16] */, - - /** - * C.4 Non-character code points - * @link https://tools.ietf.org/html/rfc3454#appendix-C.4 - */ - ...range(0xfdd0, 0xfdef) /* [NONCHARACTER CODE POINTS] */, - ...range(0xfffe, 0xffff) /* [NONCHARACTER CODE POINTS] */, - ...range(0x1fffe, 0x1ffff) /* [NONCHARACTER CODE POINTS] */, - ...range(0x2fffe, 0x2ffff) /* [NONCHARACTER CODE POINTS] */, - ...range(0x3fffe, 0x3ffff) /* [NONCHARACTER CODE POINTS] */, - ...range(0x4fffe, 0x4ffff) /* [NONCHARACTER CODE POINTS] */, - ...range(0x5fffe, 0x5ffff) /* [NONCHARACTER CODE POINTS] */, - ...range(0x6fffe, 0x6ffff) /* [NONCHARACTER CODE POINTS] */, - ...range(0x7fffe, 0x7ffff) /* [NONCHARACTER CODE POINTS] */, - ...range(0x8fffe, 0x8ffff) /* [NONCHARACTER CODE POINTS] */, - ...range(0x9fffe, 0x9ffff) /* [NONCHARACTER CODE POINTS] */, - ...range(0xafffe, 0xaffff) /* [NONCHARACTER CODE POINTS] */, - ...range(0xbfffe, 0xbffff) /* [NONCHARACTER CODE POINTS] */, - ...range(0xcfffe, 0xcffff) /* [NONCHARACTER CODE POINTS] */, - ...range(0xdfffe, 0xdffff) /* [NONCHARACTER CODE POINTS] */, - ...range(0xefffe, 0xeffff) /* [NONCHARACTER CODE POINTS] */, - ...range(0x10fffe, 0x10ffff) /* [NONCHARACTER CODE POINTS] */, - - /** - * C.5 Surrogate codes - * @link https://tools.ietf.org/html/rfc3454#appendix-C.5 - */ - ...range(0xd800, 0xdfff), - - /** - * C.6 Inappropriate for plain text - * @link https://tools.ietf.org/html/rfc3454#appendix-C.6 - */ - 0xfff9 /* INTERLINEAR ANNOTATION ANCHOR */, - 0xfffa /* INTERLINEAR ANNOTATION SEPARATOR */, - 0xfffb /* INTERLINEAR ANNOTATION TERMINATOR */, - 0xfffc /* OBJECT REPLACEMENT CHARACTER */, - 0xfffd /* REPLACEMENT CHARACTER */, - - /** - * C.7 Inappropriate for canonical representation - * @link https://tools.ietf.org/html/rfc3454#appendix-C.7 - */ - ...range(0x2ff0, 0x2ffb) /* [IDEOGRAPHIC DESCRIPTION CHARACTERS] */, - - /** - * C.8 Change display properties or are deprecated - * @link https://tools.ietf.org/html/rfc3454#appendix-C.8 - */ - 0x0340 /* COMBINING GRAVE TONE MARK */, - 0x0341 /* COMBINING ACUTE TONE MARK */, - 0x200e /* LEFT-TO-RIGHT MARK */, - 0x200f /* RIGHT-TO-LEFT MARK */, - 0x202a /* LEFT-TO-RIGHT EMBEDDING */, - 0x202b /* RIGHT-TO-LEFT EMBEDDING */, - 0x202c /* POP DIRECTIONAL FORMATTING */, - 0x202d /* LEFT-TO-RIGHT OVERRIDE */, - 0x202e /* RIGHT-TO-LEFT OVERRIDE */, - 0x206a /* INHIBIT SYMMETRIC SWAPPING */, - 0x206b /* ACTIVATE SYMMETRIC SWAPPING */, - 0x206c /* INHIBIT ARABIC FORM SHAPING */, - 0x206d /* ACTIVATE ARABIC FORM SHAPING */, - 0x206e /* NATIONAL DIGIT SHAPES */, - 0x206f /* NOMINAL DIGIT SHAPES */, - - /** - * C.9 Tagging characters - * @link https://tools.ietf.org/html/rfc3454#appendix-C.9 - */ - 0xe0001 /* LANGUAGE TAG */, - ...range(0xe0020, 0xe007f) /* [TAGGING CHARACTERS] */, -]); - -/** - * D.1 Characters with bidirectional property "R" or "AL" - * @link https://tools.ietf.org/html/rfc3454#appendix-D.1 - */ -const bidirectional_r_al = new Set([ - 0x05be, - 0x05c0, - 0x05c3, - ...range(0x05d0, 0x05ea), - ...range(0x05f0, 0x05f4), - 0x061b, - 0x061f, - ...range(0x0621, 0x063a), - ...range(0x0640, 0x064a), - ...range(0x066d, 0x066f), - ...range(0x0671, 0x06d5), - 0x06dd, - ...range(0x06e5, 0x06e6), - ...range(0x06fa, 0x06fe), - ...range(0x0700, 0x070d), - 0x0710, - ...range(0x0712, 0x072c), - ...range(0x0780, 0x07a5), - 0x07b1, - 0x200f, - 0xfb1d, - ...range(0xfb1f, 0xfb28), - ...range(0xfb2a, 0xfb36), - ...range(0xfb38, 0xfb3c), - 0xfb3e, - ...range(0xfb40, 0xfb41), - ...range(0xfb43, 0xfb44), - ...range(0xfb46, 0xfbb1), - ...range(0xfbd3, 0xfd3d), - ...range(0xfd50, 0xfd8f), - ...range(0xfd92, 0xfdc7), - ...range(0xfdf0, 0xfdfc), - ...range(0xfe70, 0xfe74), - ...range(0xfe76, 0xfefc), -]); - -/** - * D.2 Characters with bidirectional property "L" - * @link https://tools.ietf.org/html/rfc3454#appendix-D.2 - */ -const bidirectional_l = new Set([ - ...range(0x0041, 0x005a), - ...range(0x0061, 0x007a), - 0x00aa, - 0x00b5, - 0x00ba, - ...range(0x00c0, 0x00d6), - ...range(0x00d8, 0x00f6), - ...range(0x00f8, 0x0220), - ...range(0x0222, 0x0233), - ...range(0x0250, 0x02ad), - ...range(0x02b0, 0x02b8), - ...range(0x02bb, 0x02c1), - ...range(0x02d0, 0x02d1), - ...range(0x02e0, 0x02e4), - 0x02ee, - 0x037a, - 0x0386, - ...range(0x0388, 0x038a), - 0x038c, - ...range(0x038e, 0x03a1), - ...range(0x03a3, 0x03ce), - ...range(0x03d0, 0x03f5), - ...range(0x0400, 0x0482), - ...range(0x048a, 0x04ce), - ...range(0x04d0, 0x04f5), - ...range(0x04f8, 0x04f9), - ...range(0x0500, 0x050f), - ...range(0x0531, 0x0556), - ...range(0x0559, 0x055f), - ...range(0x0561, 0x0587), - 0x0589, - 0x0903, - ...range(0x0905, 0x0939), - ...range(0x093d, 0x0940), - ...range(0x0949, 0x094c), - 0x0950, - ...range(0x0958, 0x0961), - ...range(0x0964, 0x0970), - ...range(0x0982, 0x0983), - ...range(0x0985, 0x098c), - ...range(0x098f, 0x0990), - ...range(0x0993, 0x09a8), - ...range(0x09aa, 0x09b0), - 0x09b2, - ...range(0x09b6, 0x09b9), - ...range(0x09be, 0x09c0), - ...range(0x09c7, 0x09c8), - ...range(0x09cb, 0x09cc), - 0x09d7, - ...range(0x09dc, 0x09dd), - ...range(0x09df, 0x09e1), - ...range(0x09e6, 0x09f1), - ...range(0x09f4, 0x09fa), - ...range(0x0a05, 0x0a0a), - ...range(0x0a0f, 0x0a10), - ...range(0x0a13, 0x0a28), - ...range(0x0a2a, 0x0a30), - ...range(0x0a32, 0x0a33), - ...range(0x0a35, 0x0a36), - ...range(0x0a38, 0x0a39), - ...range(0x0a3e, 0x0a40), - ...range(0x0a59, 0x0a5c), - 0x0a5e, - ...range(0x0a66, 0x0a6f), - ...range(0x0a72, 0x0a74), - 0x0a83, - ...range(0x0a85, 0x0a8b), - 0x0a8d, - ...range(0x0a8f, 0x0a91), - ...range(0x0a93, 0x0aa8), - ...range(0x0aaa, 0x0ab0), - ...range(0x0ab2, 0x0ab3), - ...range(0x0ab5, 0x0ab9), - ...range(0x0abd, 0x0ac0), - 0x0ac9, - ...range(0x0acb, 0x0acc), - 0x0ad0, - 0x0ae0, - ...range(0x0ae6, 0x0aef), - ...range(0x0b02, 0x0b03), - ...range(0x0b05, 0x0b0c), - ...range(0x0b0f, 0x0b10), - ...range(0x0b13, 0x0b28), - ...range(0x0b2a, 0x0b30), - ...range(0x0b32, 0x0b33), - ...range(0x0b36, 0x0b39), - ...range(0x0b3d, 0x0b3e), - 0x0b40, - ...range(0x0b47, 0x0b48), - ...range(0x0b4b, 0x0b4c), - 0x0b57, - ...range(0x0b5c, 0x0b5d), - ...range(0x0b5f, 0x0b61), - ...range(0x0b66, 0x0b70), - 0x0b83, - ...range(0x0b85, 0x0b8a), - ...range(0x0b8e, 0x0b90), - ...range(0x0b92, 0x0b95), - ...range(0x0b99, 0x0b9a), - 0x0b9c, - ...range(0x0b9e, 0x0b9f), - ...range(0x0ba3, 0x0ba4), - ...range(0x0ba8, 0x0baa), - ...range(0x0bae, 0x0bb5), - ...range(0x0bb7, 0x0bb9), - ...range(0x0bbe, 0x0bbf), - ...range(0x0bc1, 0x0bc2), - ...range(0x0bc6, 0x0bc8), - ...range(0x0bca, 0x0bcc), - 0x0bd7, - ...range(0x0be7, 0x0bf2), - ...range(0x0c01, 0x0c03), - ...range(0x0c05, 0x0c0c), - ...range(0x0c0e, 0x0c10), - ...range(0x0c12, 0x0c28), - ...range(0x0c2a, 0x0c33), - ...range(0x0c35, 0x0c39), - ...range(0x0c41, 0x0c44), - ...range(0x0c60, 0x0c61), - ...range(0x0c66, 0x0c6f), - ...range(0x0c82, 0x0c83), - ...range(0x0c85, 0x0c8c), - ...range(0x0c8e, 0x0c90), - ...range(0x0c92, 0x0ca8), - ...range(0x0caa, 0x0cb3), - ...range(0x0cb5, 0x0cb9), - 0x0cbe, - ...range(0x0cc0, 0x0cc4), - ...range(0x0cc7, 0x0cc8), - ...range(0x0cca, 0x0ccb), - ...range(0x0cd5, 0x0cd6), - 0x0cde, - ...range(0x0ce0, 0x0ce1), - ...range(0x0ce6, 0x0cef), - ...range(0x0d02, 0x0d03), - ...range(0x0d05, 0x0d0c), - ...range(0x0d0e, 0x0d10), - ...range(0x0d12, 0x0d28), - ...range(0x0d2a, 0x0d39), - ...range(0x0d3e, 0x0d40), - ...range(0x0d46, 0x0d48), - ...range(0x0d4a, 0x0d4c), - 0x0d57, - ...range(0x0d60, 0x0d61), - ...range(0x0d66, 0x0d6f), - ...range(0x0d82, 0x0d83), - ...range(0x0d85, 0x0d96), - ...range(0x0d9a, 0x0db1), - ...range(0x0db3, 0x0dbb), - 0x0dbd, - ...range(0x0dc0, 0x0dc6), - ...range(0x0dcf, 0x0dd1), - ...range(0x0dd8, 0x0ddf), - ...range(0x0df2, 0x0df4), - ...range(0x0e01, 0x0e30), - ...range(0x0e32, 0x0e33), - ...range(0x0e40, 0x0e46), - ...range(0x0e4f, 0x0e5b), - ...range(0x0e81, 0x0e82), - 0x0e84, - ...range(0x0e87, 0x0e88), - 0x0e8a, - 0x0e8d, - ...range(0x0e94, 0x0e97), - ...range(0x0e99, 0x0e9f), - ...range(0x0ea1, 0x0ea3), - 0x0ea5, - 0x0ea7, - ...range(0x0eaa, 0x0eab), - ...range(0x0ead, 0x0eb0), - ...range(0x0eb2, 0x0eb3), - 0x0ebd, - ...range(0x0ec0, 0x0ec4), - 0x0ec6, - ...range(0x0ed0, 0x0ed9), - ...range(0x0edc, 0x0edd), - ...range(0x0f00, 0x0f17), - ...range(0x0f1a, 0x0f34), - 0x0f36, - 0x0f38, - ...range(0x0f3e, 0x0f47), - ...range(0x0f49, 0x0f6a), - 0x0f7f, - 0x0f85, - ...range(0x0f88, 0x0f8b), - ...range(0x0fbe, 0x0fc5), - ...range(0x0fc7, 0x0fcc), - 0x0fcf, - ...range(0x1000, 0x1021), - ...range(0x1023, 0x1027), - ...range(0x1029, 0x102a), - 0x102c, - 0x1031, - 0x1038, - ...range(0x1040, 0x1057), - ...range(0x10a0, 0x10c5), - ...range(0x10d0, 0x10f8), - 0x10fb, - ...range(0x1100, 0x1159), - ...range(0x115f, 0x11a2), - ...range(0x11a8, 0x11f9), - ...range(0x1200, 0x1206), - ...range(0x1208, 0x1246), - 0x1248, - ...range(0x124a, 0x124d), - ...range(0x1250, 0x1256), - 0x1258, - ...range(0x125a, 0x125d), - ...range(0x1260, 0x1286), - 0x1288, - ...range(0x128a, 0x128d), - ...range(0x1290, 0x12ae), - 0x12b0, - ...range(0x12b2, 0x12b5), - ...range(0x12b8, 0x12be), - 0x12c0, - ...range(0x12c2, 0x12c5), - ...range(0x12c8, 0x12ce), - ...range(0x12d0, 0x12d6), - ...range(0x12d8, 0x12ee), - ...range(0x12f0, 0x130e), - 0x1310, - ...range(0x1312, 0x1315), - ...range(0x1318, 0x131e), - ...range(0x1320, 0x1346), - ...range(0x1348, 0x135a), - ...range(0x1361, 0x137c), - ...range(0x13a0, 0x13f4), - ...range(0x1401, 0x1676), - ...range(0x1681, 0x169a), - ...range(0x16a0, 0x16f0), - ...range(0x1700, 0x170c), - ...range(0x170e, 0x1711), - ...range(0x1720, 0x1731), - ...range(0x1735, 0x1736), - ...range(0x1740, 0x1751), - ...range(0x1760, 0x176c), - ...range(0x176e, 0x1770), - ...range(0x1780, 0x17b6), - ...range(0x17be, 0x17c5), - ...range(0x17c7, 0x17c8), - ...range(0x17d4, 0x17da), - 0x17dc, - ...range(0x17e0, 0x17e9), - ...range(0x1810, 0x1819), - ...range(0x1820, 0x1877), - ...range(0x1880, 0x18a8), - ...range(0x1e00, 0x1e9b), - ...range(0x1ea0, 0x1ef9), - ...range(0x1f00, 0x1f15), - ...range(0x1f18, 0x1f1d), - ...range(0x1f20, 0x1f45), - ...range(0x1f48, 0x1f4d), - ...range(0x1f50, 0x1f57), - 0x1f59, - 0x1f5b, - 0x1f5d, - ...range(0x1f5f, 0x1f7d), - ...range(0x1f80, 0x1fb4), - ...range(0x1fb6, 0x1fbc), - 0x1fbe, - ...range(0x1fc2, 0x1fc4), - ...range(0x1fc6, 0x1fcc), - ...range(0x1fd0, 0x1fd3), - ...range(0x1fd6, 0x1fdb), - ...range(0x1fe0, 0x1fec), - ...range(0x1ff2, 0x1ff4), - ...range(0x1ff6, 0x1ffc), - 0x200e, - 0x2071, - 0x207f, - 0x2102, - 0x2107, - ...range(0x210a, 0x2113), - 0x2115, - ...range(0x2119, 0x211d), - 0x2124, - 0x2126, - 0x2128, - ...range(0x212a, 0x212d), - ...range(0x212f, 0x2131), - ...range(0x2133, 0x2139), - ...range(0x213d, 0x213f), - ...range(0x2145, 0x2149), - ...range(0x2160, 0x2183), - ...range(0x2336, 0x237a), - 0x2395, - ...range(0x249c, 0x24e9), - ...range(0x3005, 0x3007), - ...range(0x3021, 0x3029), - ...range(0x3031, 0x3035), - ...range(0x3038, 0x303c), - ...range(0x3041, 0x3096), - ...range(0x309d, 0x309f), - ...range(0x30a1, 0x30fa), - ...range(0x30fc, 0x30ff), - ...range(0x3105, 0x312c), - ...range(0x3131, 0x318e), - ...range(0x3190, 0x31b7), - ...range(0x31f0, 0x321c), - ...range(0x3220, 0x3243), - ...range(0x3260, 0x327b), - ...range(0x327f, 0x32b0), - ...range(0x32c0, 0x32cb), - ...range(0x32d0, 0x32fe), - ...range(0x3300, 0x3376), - ...range(0x337b, 0x33dd), - ...range(0x33e0, 0x33fe), - ...range(0x3400, 0x4db5), - ...range(0x4e00, 0x9fa5), - ...range(0xa000, 0xa48c), - ...range(0xac00, 0xd7a3), - ...range(0xd800, 0xfa2d), - ...range(0xfa30, 0xfa6a), - ...range(0xfb00, 0xfb06), - ...range(0xfb13, 0xfb17), - ...range(0xff21, 0xff3a), - ...range(0xff41, 0xff5a), - ...range(0xff66, 0xffbe), - ...range(0xffc2, 0xffc7), - ...range(0xffca, 0xffcf), - ...range(0xffd2, 0xffd7), - ...range(0xffda, 0xffdc), - ...range(0x10300, 0x1031e), - ...range(0x10320, 0x10323), - ...range(0x10330, 0x1034a), - ...range(0x10400, 0x10425), - ...range(0x10428, 0x1044d), - ...range(0x1d000, 0x1d0f5), - ...range(0x1d100, 0x1d126), - ...range(0x1d12a, 0x1d166), - ...range(0x1d16a, 0x1d172), - ...range(0x1d183, 0x1d184), - ...range(0x1d18c, 0x1d1a9), - ...range(0x1d1ae, 0x1d1dd), - ...range(0x1d400, 0x1d454), - ...range(0x1d456, 0x1d49c), - ...range(0x1d49e, 0x1d49f), - 0x1d4a2, - ...range(0x1d4a5, 0x1d4a6), - ...range(0x1d4a9, 0x1d4ac), - ...range(0x1d4ae, 0x1d4b9), - 0x1d4bb, - ...range(0x1d4bd, 0x1d4c0), - ...range(0x1d4c2, 0x1d4c3), - ...range(0x1d4c5, 0x1d505), - ...range(0x1d507, 0x1d50a), - ...range(0x1d50d, 0x1d514), - ...range(0x1d516, 0x1d51c), - ...range(0x1d51e, 0x1d539), - ...range(0x1d53b, 0x1d53e), - ...range(0x1d540, 0x1d544), - 0x1d546, - ...range(0x1d54a, 0x1d550), - ...range(0x1d552, 0x1d6a3), - ...range(0x1d6a8, 0x1d7c9), - ...range(0x20000, 0x2a6d6), - ...range(0x2f800, 0x2fa1d), - ...range(0xf0000, 0xffffd), - ...range(0x100000, 0x10fffd), -]); - -module.exports = { - unassigned_code_points, - commonly_mapped_to_nothing, - non_ASCII_space_characters, - prohibited_characters, - bidirectional_r_al, - bidirectional_l, -}; diff --git a/food-ordering-app/server/node_modules/saslprep/lib/memory-code-points.js b/food-ordering-app/server/node_modules/saslprep/lib/memory-code-points.js deleted file mode 100644 index cb0289c87..000000000 --- a/food-ordering-app/server/node_modules/saslprep/lib/memory-code-points.js +++ /dev/null @@ -1,39 +0,0 @@ -'use strict'; - -const fs = require('fs'); -const path = require('path'); -const bitfield = require('sparse-bitfield'); - -/* eslint-disable-next-line security/detect-non-literal-fs-filename */ -const memory = fs.readFileSync(path.resolve(__dirname, '../code-points.mem')); -let offset = 0; - -/** - * Loads each code points sequence from buffer. - * @returns {bitfield} - */ -function read() { - const size = memory.readUInt32BE(offset); - offset += 4; - - const codepoints = memory.slice(offset, offset + size); - offset += size; - - return bitfield({ buffer: codepoints }); -} - -const unassigned_code_points = read(); -const commonly_mapped_to_nothing = read(); -const non_ASCII_space_characters = read(); -const prohibited_characters = read(); -const bidirectional_r_al = read(); -const bidirectional_l = read(); - -module.exports = { - unassigned_code_points, - commonly_mapped_to_nothing, - non_ASCII_space_characters, - prohibited_characters, - bidirectional_r_al, - bidirectional_l, -}; diff --git a/food-ordering-app/server/node_modules/saslprep/lib/util.js b/food-ordering-app/server/node_modules/saslprep/lib/util.js deleted file mode 100644 index 506bdc992..000000000 --- a/food-ordering-app/server/node_modules/saslprep/lib/util.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict'; - -/** - * Create an array of numbers. - * @param {number} from - * @param {number} to - * @returns {number[]} - */ -function range(from, to) { - // TODO: make this inlined. - const list = new Array(to - from + 1); - - for (let i = 0; i < list.length; i += 1) { - list[i] = from + i; - } - return list; -} - -module.exports = { - range, -}; diff --git a/food-ordering-app/server/node_modules/saslprep/package.json b/food-ordering-app/server/node_modules/saslprep/package.json deleted file mode 100644 index 23c35627b..000000000 --- a/food-ordering-app/server/node_modules/saslprep/package.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "name": "saslprep", - "version": "1.0.3", - "description": "SASLprep: Stringprep Profile for User Names and Passwords, rfc4013.", - "main": "index.js", - "scripts": { - "test": "npm run lint && npm run unit-test", - "lint": "npx eslint --quiet .", - "unit-test": "npx jest", - "gen-code-points": "node generate-code-points.js > code-points.mem" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/reklatsmasters/saslprep.git" - }, - "keywords": [ - "sasl", - "saslprep", - "stringprep", - "rfc4013", - "4013" - ], - "author": "Dmitry Tsvettsikh ", - "license": "MIT", - "bugs": { - "url": "https://github.com/reklatsmasters/saslprep/issues" - }, - "engines": { - "node": ">=6" - }, - "homepage": "https://github.com/reklatsmasters/saslprep#readme", - "devDependencies": { - "@nodertc/eslint-config": "^0.2.1", - "eslint": "^5.16.0", - "jest": "^23.6.0", - "prettier": "^1.14.3" - }, - "dependencies": { - "sparse-bitfield": "^3.0.3" - }, - "eslintConfig": { - "extends": "@nodertc", - "rules": { - "camelcase": "off", - "no-continue": "off" - }, - "overrides": [ - { - "files": [ - "test/*.js" - ], - "env": { - "jest": true - }, - "rules": { - "require-jsdoc": "off" - } - } - ] - }, - "jest": { - "modulePaths": [ - "" - ], - "testMatch": [ - "**/test/*.js" - ], - "testPathIgnorePatterns": [ - "/node_modules/" - ] - } -} diff --git a/food-ordering-app/server/node_modules/saslprep/readme.md b/food-ordering-app/server/node_modules/saslprep/readme.md deleted file mode 100644 index 8ff3d70d7..000000000 --- a/food-ordering-app/server/node_modules/saslprep/readme.md +++ /dev/null @@ -1,31 +0,0 @@ -# saslprep -[![Build Status](https://travis-ci.org/reklatsmasters/saslprep.svg?branch=master)](https://travis-ci.org/reklatsmasters/saslprep) -[![npm](https://img.shields.io/npm/v/saslprep.svg)](https://npmjs.org/package/saslprep) -[![node](https://img.shields.io/node/v/saslprep.svg)](https://npmjs.org/package/saslprep) -[![license](https://img.shields.io/npm/l/saslprep.svg)](https://npmjs.org/package/saslprep) -[![downloads](https://img.shields.io/npm/dm/saslprep.svg)](https://npmjs.org/package/saslprep) - -Stringprep Profile for User Names and Passwords, [rfc4013](https://tools.ietf.org/html/rfc4013) - -### Usage - -```js -const saslprep = require('saslprep') - -saslprep('password\u00AD') // password -saslprep('password\u0007') // Error: prohibited character -``` - -### API - -##### `saslprep(input: String, opts: Options): String` - -Normalize user name or password. - -##### `Options.allowUnassigned: bool` - -A special behavior for unassigned code points, see https://tools.ietf.org/html/rfc4013#section-2.5. Disabled by default. - -## License - -MIT, 2017-2019 (c) Dmitriy Tsvettsikh diff --git a/food-ordering-app/server/node_modules/saslprep/test/index.js b/food-ordering-app/server/node_modules/saslprep/test/index.js deleted file mode 100644 index 80c71af5e..000000000 --- a/food-ordering-app/server/node_modules/saslprep/test/index.js +++ /dev/null @@ -1,76 +0,0 @@ -'use strict'; - -const saslprep = require('..'); - -const chr = String.fromCodePoint; - -test('should work with liatin letters', () => { - const str = 'user'; - expect(saslprep(str)).toEqual(str); -}); - -test('should work be case preserved', () => { - const str = 'USER'; - expect(saslprep(str)).toEqual(str); -}); - -test('should work with high code points (> U+FFFF)', () => { - const str = '\uD83D\uDE00'; - expect(saslprep(str, { allowUnassigned: true })).toEqual(str); -}); - -test('should remove `mapped to nothing` characters', () => { - expect(saslprep('I\u00ADX')).toEqual('IX'); -}); - -test('should replace `Non-ASCII space characters` with space', () => { - expect(saslprep('a\u00A0b')).toEqual('a\u0020b'); -}); - -test('should normalize as NFKC', () => { - expect(saslprep('\u00AA')).toEqual('a'); - expect(saslprep('\u2168')).toEqual('IX'); -}); - -test('should throws when prohibited characters', () => { - // C.2.1 ASCII control characters - expect(() => saslprep('a\u007Fb')).toThrow(); - - // C.2.2 Non-ASCII control characters - expect(() => saslprep('a\u06DDb')).toThrow(); - - // C.3 Private use - expect(() => saslprep('a\uE000b')).toThrow(); - - // C.4 Non-character code points - expect(() => saslprep(`a${chr(0x1fffe)}b`)).toThrow(); - - // C.5 Surrogate codes - expect(() => saslprep('a\uD800b')).toThrow(); - - // C.6 Inappropriate for plain text - expect(() => saslprep('a\uFFF9b')).toThrow(); - - // C.7 Inappropriate for canonical representation - expect(() => saslprep('a\u2FF0b')).toThrow(); - - // C.8 Change display properties or are deprecated - expect(() => saslprep('a\u200Eb')).toThrow(); - - // C.9 Tagging characters - expect(() => saslprep(`a${chr(0xe0001)}b`)).toThrow(); -}); - -test('should not containt RandALCat and LCat bidi', () => { - expect(() => saslprep('a\u06DD\u00AAb')).toThrow(); -}); - -test('RandALCat should be first and last', () => { - expect(() => saslprep('\u0627\u0031\u0628')).not.toThrow(); - expect(() => saslprep('\u0627\u0031')).toThrow(); -}); - -test('should handle unassigned code points', () => { - expect(() => saslprep('a\u0487')).toThrow(); - expect(() => saslprep('a\u0487', { allowUnassigned: true })).not.toThrow(); -}); diff --git a/food-ordering-app/server/node_modules/saslprep/test/util.js b/food-ordering-app/server/node_modules/saslprep/test/util.js deleted file mode 100644 index 355db3f85..000000000 --- a/food-ordering-app/server/node_modules/saslprep/test/util.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -const { setFlagsFromString } = require('v8'); -const { range } = require('../lib/util'); - -// 984 by default. -setFlagsFromString('--stack_size=500'); - -test('should work', () => { - const list = range(1, 3); - expect(list).toEqual([1, 2, 3]); -}); - -test('should work for large ranges', () => { - expect(() => range(1, 1e6)).not.toThrow(); -}); diff --git a/food-ordering-app/server/node_modules/send/HISTORY.md b/food-ordering-app/server/node_modules/send/HISTORY.md index a73977494..13789bab8 100644 --- a/food-ordering-app/server/node_modules/send/HISTORY.md +++ b/food-ordering-app/server/node_modules/send/HISTORY.md @@ -1,3 +1,20 @@ +0.19.2 / 2025-12-15 +=================== + +* deps: use tilde notation for dependencies +* deps: http-errors@~2.0.1 +* deps: statuses@~2.0.2 + +0.19.1 / 2024-10-09 +=================== + +* deps: encodeurl@~2.0.0 + +0.19.0 / 2024-09-10 +=================== + +* Remove link renderization in html while redirecting + 0.18.0 / 2022-03-23 =================== @@ -480,37 +497,37 @@ * update range-parser and fresh -0.1.4 / 2013-08-11 +0.1.4 / 2013-08-11 ================== * update fresh -0.1.3 / 2013-07-08 +0.1.3 / 2013-07-08 ================== * Revert "Fix fd leak" -0.1.2 / 2013-07-03 +0.1.2 / 2013-07-03 ================== * Fix fd leak -0.1.0 / 2012-08-25 +0.1.0 / 2012-08-25 ================== * add options parameter to send() that is passed to fs.createReadStream() [kanongil] -0.0.4 / 2012-08-16 +0.0.4 / 2012-08-16 ================== * allow custom "Accept-Ranges" definition -0.0.3 / 2012-07-16 +0.0.3 / 2012-07-16 ================== * fix normalization of the root directory. Closes #3 -0.0.2 / 2012-07-09 +0.0.2 / 2012-07-09 ================== * add passing of req explicitly for now (YUCK) diff --git a/food-ordering-app/server/node_modules/send/index.js b/food-ordering-app/server/node_modules/send/index.js index 89afd7e58..768f8ca60 100644 --- a/food-ordering-app/server/node_modules/send/index.js +++ b/food-ordering-app/server/node_modules/send/index.js @@ -482,8 +482,7 @@ SendStream.prototype.redirect = function redirect (path) { } var loc = encodeUrl(collapseLeadingSlashes(this.path + '/')) - var doc = createHtmlDocument('Redirecting', 'Redirecting to ' + - escapeHtml(loc) + '') + var doc = createHtmlDocument('Redirecting', 'Redirecting to ' + escapeHtml(loc)) // redirect res.statusCode = 301 diff --git a/food-ordering-app/server/node_modules/send/package.json b/food-ordering-app/server/node_modules/send/package.json index 7f269d515..2d2b805a0 100644 --- a/food-ordering-app/server/node_modules/send/package.json +++ b/food-ordering-app/server/node_modules/send/package.json @@ -1,7 +1,7 @@ { "name": "send", "description": "Better streaming static file server with Range and conditional-GET support", - "version": "0.18.0", + "version": "0.19.2", "author": "TJ Holowaychuk ", "contributors": [ "Douglas Christopher Wilson ", @@ -19,16 +19,16 @@ "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", "mime": "1.6.0", "ms": "2.1.3", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "range-parser": "~1.2.1", - "statuses": "2.0.1" + "statuses": "~2.0.2" }, "devDependencies": { "after": "0.8.2", diff --git a/food-ordering-app/server/node_modules/serve-static/HISTORY.md b/food-ordering-app/server/node_modules/serve-static/HISTORY.md index 6b5845635..991966968 100644 --- a/food-ordering-app/server/node_modules/serve-static/HISTORY.md +++ b/food-ordering-app/server/node_modules/serve-static/HISTORY.md @@ -1,3 +1,25 @@ +1.16.3 / 2024-12-15 +=================== + +* deps: send@~0.19.1 + - deps: encodeurl@~2.0.0 + +1.16.2 / 2024-09-11 +=================== + +* deps: encodeurl@~2.0.0 + +1.16.1 / 2024-09-11 +=================== + +* deps: send@0.19.0 + +1.16.0 / 2024-09-10 +=================== + +* Remove link renderization in html while redirecting + + 1.15.0 / 2022-03-24 =================== diff --git a/food-ordering-app/server/node_modules/serve-static/index.js b/food-ordering-app/server/node_modules/serve-static/index.js index b7d3984c4..3f3e64e9e 100644 --- a/food-ordering-app/server/node_modules/serve-static/index.js +++ b/food-ordering-app/server/node_modules/serve-static/index.js @@ -195,8 +195,7 @@ function createRedirectDirectoryListener () { // reformat the URL var loc = encodeUrl(url.format(originalUrl)) - var doc = createHtmlDocument('Redirecting', 'Redirecting to ' + - escapeHtml(loc) + '') + var doc = createHtmlDocument('Redirecting', 'Redirecting to ' + escapeHtml(loc)) // send redirect response res.statusCode = 301 diff --git a/food-ordering-app/server/node_modules/serve-static/package.json b/food-ordering-app/server/node_modules/serve-static/package.json index 9d935f5d8..b268e48ed 100644 --- a/food-ordering-app/server/node_modules/serve-static/package.json +++ b/food-ordering-app/server/node_modules/serve-static/package.json @@ -1,15 +1,15 @@ { "name": "serve-static", "description": "Serve static files", - "version": "1.15.0", + "version": "1.16.3", "author": "Douglas Christopher Wilson ", "license": "MIT", "repository": "expressjs/serve-static", "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "~0.19.1" }, "devDependencies": { "eslint": "7.32.0", diff --git a/food-ordering-app/server/node_modules/side-channel-list/.editorconfig b/food-ordering-app/server/node_modules/side-channel-list/.editorconfig new file mode 100644 index 000000000..72e0ebaa7 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-list/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +indent_style = tab +indent_size = 2 +trim_trailing_whitespace = true diff --git a/food-ordering-app/server/node_modules/side-channel-list/.eslintrc b/food-ordering-app/server/node_modules/side-channel-list/.eslintrc new file mode 100644 index 000000000..93978e7d5 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-list/.eslintrc @@ -0,0 +1,11 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "max-lines-per-function": 0, + "multiline-comment-style": 1, + "new-cap": [2, { "capIsNewExceptions": ["GetIntrinsic"] }], + }, +} diff --git a/food-ordering-app/server/node_modules/side-channel-list/.github/FUNDING.yml b/food-ordering-app/server/node_modules/side-channel-list/.github/FUNDING.yml new file mode 100644 index 000000000..eaff73503 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-list/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/side-channel-list +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/food-ordering-app/server/node_modules/side-channel-list/.nycrc b/food-ordering-app/server/node_modules/side-channel-list/.nycrc new file mode 100644 index 000000000..1826526e0 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-list/.nycrc @@ -0,0 +1,13 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "lines": 86, + "statements": 85.93, + "functions": 82.43, + "branches": 76.06, + "exclude": [ + "coverage", + "test" + ] +} diff --git a/food-ordering-app/server/node_modules/side-channel-list/CHANGELOG.md b/food-ordering-app/server/node_modules/side-channel-list/CHANGELOG.md new file mode 100644 index 000000000..2ec51b769 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-list/CHANGELOG.md @@ -0,0 +1,15 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## v1.0.0 - 2024-12-10 + +### Commits + +- Initial implementation, tests, readme, types [`5d6baee`](https://github.com/ljharb/side-channel-list/commit/5d6baee5c9054a1238007f5a1dfc109a7a816251) +- Initial commit [`3ae784c`](https://github.com/ljharb/side-channel-list/commit/3ae784c63a47895fbaeed2a91ab54a8029a7a100) +- npm init [`07055a4`](https://github.com/ljharb/side-channel-list/commit/07055a4d139895565b199dba5fe2479c1a1b9e28) +- Only apps should have lockfiles [`9573058`](https://github.com/ljharb/side-channel-list/commit/9573058a47494e2d68f8c6c77b5d7fbe441949c1) diff --git a/food-ordering-app/server/node_modules/side-channel-list/LICENSE b/food-ordering-app/server/node_modules/side-channel-list/LICENSE new file mode 100644 index 000000000..f82f38963 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-list/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/food-ordering-app/server/node_modules/side-channel-list/README.md b/food-ordering-app/server/node_modules/side-channel-list/README.md new file mode 100644 index 000000000..d9c7a1373 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-list/README.md @@ -0,0 +1,62 @@ +# side-channel-list [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +Store information about any JS value in a side channel, using a linked list. + +Warning: this implementation will leak memory until you `delete` the `key`. +Use [`side-channel`](https://npmjs.com/side-channel) for the best available strategy. + +## Getting started + +```sh +npm install --save side-channel-list +``` + +## Usage/Examples + +```js +const assert = require('assert'); +const getSideChannelList = require('side-channel-list'); + +const channel = getSideChannelList(); + +const key = {}; +assert.equal(channel.has(key), false); +assert.throws(() => channel.assert(key), TypeError); + +channel.set(key, 42); + +channel.assert(key); // does not throw +assert.equal(channel.has(key), true); +assert.equal(channel.get(key), 42); + +channel.delete(key); +assert.equal(channel.has(key), false); +assert.throws(() => channel.assert(key), TypeError); +``` + +## Tests + +Clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.org/package/side-channel-list +[npm-version-svg]: https://versionbadg.es/ljharb/side-channel-list.svg +[deps-svg]: https://david-dm.org/ljharb/side-channel-list.svg +[deps-url]: https://david-dm.org/ljharb/side-channel-list +[dev-deps-svg]: https://david-dm.org/ljharb/side-channel-list/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/side-channel-list#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/side-channel-list.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/side-channel-list.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/side-channel-list.svg +[downloads-url]: https://npm-stat.com/charts.html?package=side-channel-list +[codecov-image]: https://codecov.io/gh/ljharb/side-channel-list/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/side-channel-list/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/side-channel-list +[actions-url]: https://github.com/ljharb/side-channel-list/actions diff --git a/food-ordering-app/server/node_modules/side-channel-list/index.d.ts b/food-ordering-app/server/node_modules/side-channel-list/index.d.ts new file mode 100644 index 000000000..c9cabc843 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-list/index.d.ts @@ -0,0 +1,13 @@ +declare namespace getSideChannelList { + type Channel = { + assert: (key: K) => void; + has: (key: K) => boolean; + get: (key: K) => V | undefined; + set: (key: K, value: V) => void; + delete: (key: K) => boolean; + }; +} + +declare function getSideChannelList(): getSideChannelList.Channel; + +export = getSideChannelList; diff --git a/food-ordering-app/server/node_modules/side-channel-list/index.js b/food-ordering-app/server/node_modules/side-channel-list/index.js new file mode 100644 index 000000000..8d6f98ca1 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-list/index.js @@ -0,0 +1,113 @@ +'use strict'; + +var inspect = require('object-inspect'); + +var $TypeError = require('es-errors/type'); + +/* +* This function traverses the list returning the node corresponding to the given key. +* +* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list. +* By doing so, all the recently used nodes can be accessed relatively quickly. +*/ +/** @type {import('./list.d.ts').listGetNode} */ +// eslint-disable-next-line consistent-return +var listGetNode = function (list, key, isDelete) { + /** @type {typeof list | NonNullable<(typeof list)['next']>} */ + var prev = list; + /** @type {(typeof list)['next']} */ + var curr; + // eslint-disable-next-line eqeqeq + for (; (curr = prev.next) != null; prev = curr) { + if (curr.key === key) { + prev.next = curr.next; + if (!isDelete) { + // eslint-disable-next-line no-extra-parens + curr.next = /** @type {NonNullable} */ (list.next); + list.next = curr; // eslint-disable-line no-param-reassign + } + return curr; + } + } +}; + +/** @type {import('./list.d.ts').listGet} */ +var listGet = function (objects, key) { + if (!objects) { + return void undefined; + } + var node = listGetNode(objects, key); + return node && node.value; +}; +/** @type {import('./list.d.ts').listSet} */ +var listSet = function (objects, key, value) { + var node = listGetNode(objects, key); + if (node) { + node.value = value; + } else { + // Prepend the new node to the beginning of the list + objects.next = /** @type {import('./list.d.ts').ListNode} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens + key: key, + next: objects.next, + value: value + }); + } +}; +/** @type {import('./list.d.ts').listHas} */ +var listHas = function (objects, key) { + if (!objects) { + return false; + } + return !!listGetNode(objects, key); +}; +/** @type {import('./list.d.ts').listDelete} */ +// eslint-disable-next-line consistent-return +var listDelete = function (objects, key) { + if (objects) { + return listGetNode(objects, key, true); + } +}; + +/** @type {import('.')} */ +module.exports = function getSideChannelList() { + /** @typedef {ReturnType} Channel */ + /** @typedef {Parameters[0]} K */ + /** @typedef {Parameters[1]} V */ + + /** @type {import('./list.d.ts').RootNode | undefined} */ var $o; + + /** @type {Channel} */ + var channel = { + assert: function (key) { + if (!channel.has(key)) { + throw new $TypeError('Side channel does not contain ' + inspect(key)); + } + }, + 'delete': function (key) { + var root = $o && $o.next; + var deletedNode = listDelete($o, key); + if (deletedNode && root && root === deletedNode) { + $o = void undefined; + } + return !!deletedNode; + }, + get: function (key) { + return listGet($o, key); + }, + has: function (key) { + return listHas($o, key); + }, + set: function (key, value) { + if (!$o) { + // Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head + $o = { + next: void undefined + }; + } + // eslint-disable-next-line no-extra-parens + listSet(/** @type {NonNullable} */ ($o), key, value); + } + }; + // @ts-expect-error TODO: figure out why this is erroring + return channel; +}; diff --git a/food-ordering-app/server/node_modules/side-channel-list/list.d.ts b/food-ordering-app/server/node_modules/side-channel-list/list.d.ts new file mode 100644 index 000000000..2c759e253 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-list/list.d.ts @@ -0,0 +1,14 @@ +type ListNode = { + key: K; + next: undefined | ListNode; + value: T; +}; +type RootNode = { + next: undefined | ListNode; +}; + +export function listGetNode(list: RootNode, key: ListNode['key'], isDelete?: boolean): ListNode | undefined; +export function listGet(objects: undefined | RootNode, key: ListNode['key']): T | undefined; +export function listSet(objects: RootNode, key: ListNode['key'], value: T): void; +export function listHas(objects: undefined | RootNode, key: ListNode['key']): boolean; +export function listDelete(objects: undefined | RootNode, key: ListNode['key']): ListNode | undefined; diff --git a/food-ordering-app/server/node_modules/side-channel-list/package.json b/food-ordering-app/server/node_modules/side-channel-list/package.json new file mode 100644 index 000000000..ba0f5c581 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-list/package.json @@ -0,0 +1,77 @@ +{ + "name": "side-channel-list", + "version": "1.0.0", + "description": "Store information about any JS value in a side channel, using a linked list", + "main": "index.js", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "types": "./index.d.ts", + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prelint": "evalmd README.md && eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git')", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p . && attw -P", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>= 10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/side-channel-list.git" + }, + "keywords": [], + "author": "Jordan Harband ", + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/side-channel-list/issues" + }, + "homepage": "https://github.com/ljharb/side-channel-list#readme", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.1", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.2", + "@types/object-inspect": "^1.13.0", + "@types/tape": "^5.6.5", + "auto-changelog": "^2.5.0", + "eclint": "^2.8.1", + "encoding": "^0.1.13", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/food-ordering-app/server/node_modules/side-channel-list/test/index.js b/food-ordering-app/server/node_modules/side-channel-list/test/index.js new file mode 100644 index 000000000..3ad436879 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-list/test/index.js @@ -0,0 +1,104 @@ +'use strict'; + +var test = require('tape'); + +var getSideChannelList = require('../'); + +test('getSideChannelList', function (t) { + t.test('export', function (st) { + st.equal(typeof getSideChannelList, 'function', 'is a function'); + + st.equal(getSideChannelList.length, 0, 'takes no arguments'); + + var channel = getSideChannelList(); + st.ok(channel, 'is truthy'); + st.equal(typeof channel, 'object', 'is an object'); + st.end(); + }); + + t.test('assert', function (st) { + var channel = getSideChannelList(); + st['throws']( + function () { channel.assert({}); }, + TypeError, + 'nonexistent value throws' + ); + + var o = {}; + channel.set(o, 'data'); + st.doesNotThrow(function () { channel.assert(o); }, 'existent value noops'); + + st.end(); + }); + + t.test('has', function (st) { + var channel = getSideChannelList(); + /** @type {unknown[]} */ var o = []; + + st.equal(channel.has(o), false, 'nonexistent value yields false'); + + channel.set(o, 'foo'); + st.equal(channel.has(o), true, 'existent value yields true'); + + st.equal(channel.has('abc'), false, 'non object value non existent yields false'); + + channel.set('abc', 'foo'); + st.equal(channel.has('abc'), true, 'non object value that exists yields true'); + + st.end(); + }); + + t.test('get', function (st) { + var channel = getSideChannelList(); + var o = {}; + st.equal(channel.get(o), undefined, 'nonexistent value yields undefined'); + + var data = {}; + channel.set(o, data); + st.equal(channel.get(o), data, '"get" yields data set by "set"'); + + st.end(); + }); + + t.test('set', function (st) { + var channel = getSideChannelList(); + var o = function () {}; + st.equal(channel.get(o), undefined, 'value not set'); + + channel.set(o, 42); + st.equal(channel.get(o), 42, 'value was set'); + + channel.set(o, Infinity); + st.equal(channel.get(o), Infinity, 'value was set again'); + + var o2 = {}; + channel.set(o2, 17); + st.equal(channel.get(o), Infinity, 'o is not modified'); + st.equal(channel.get(o2), 17, 'o2 is set'); + + channel.set(o, 14); + st.equal(channel.get(o), 14, 'o is modified'); + st.equal(channel.get(o2), 17, 'o2 is not modified'); + + st.end(); + }); + + t.test('delete', function (st) { + var channel = getSideChannelList(); + var o = {}; + st.equal(channel['delete']({}), false, 'nonexistent value yields false'); + + channel.set(o, 42); + st.equal(channel.has(o), true, 'value is set'); + + st.equal(channel['delete']({}), false, 'nonexistent value still yields false'); + + st.equal(channel['delete'](o), true, 'deleted value yields true'); + + st.equal(channel.has(o), false, 'value is no longer set'); + + st.end(); + }); + + t.end(); +}); diff --git a/food-ordering-app/server/node_modules/side-channel-list/tsconfig.json b/food-ordering-app/server/node_modules/side-channel-list/tsconfig.json new file mode 100644 index 000000000..d9a6668c3 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-list/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "es2021", + }, + "exclude": [ + "coverage", + ], +} diff --git a/food-ordering-app/server/node_modules/side-channel-map/.editorconfig b/food-ordering-app/server/node_modules/side-channel-map/.editorconfig new file mode 100644 index 000000000..72e0ebaa7 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-map/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +indent_style = tab +indent_size = 2 +trim_trailing_whitespace = true diff --git a/food-ordering-app/server/node_modules/side-channel-map/.eslintrc b/food-ordering-app/server/node_modules/side-channel-map/.eslintrc new file mode 100644 index 000000000..93978e7d5 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-map/.eslintrc @@ -0,0 +1,11 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "max-lines-per-function": 0, + "multiline-comment-style": 1, + "new-cap": [2, { "capIsNewExceptions": ["GetIntrinsic"] }], + }, +} diff --git a/food-ordering-app/server/node_modules/side-channel-map/.github/FUNDING.yml b/food-ordering-app/server/node_modules/side-channel-map/.github/FUNDING.yml new file mode 100644 index 000000000..f2891bd62 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-map/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/side-channel-map +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/food-ordering-app/server/node_modules/side-channel-map/.nycrc b/food-ordering-app/server/node_modules/side-channel-map/.nycrc new file mode 100644 index 000000000..1826526e0 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-map/.nycrc @@ -0,0 +1,13 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "lines": 86, + "statements": 85.93, + "functions": 82.43, + "branches": 76.06, + "exclude": [ + "coverage", + "test" + ] +} diff --git a/food-ordering-app/server/node_modules/side-channel-map/CHANGELOG.md b/food-ordering-app/server/node_modules/side-channel-map/CHANGELOG.md new file mode 100644 index 000000000..b6ccea906 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-map/CHANGELOG.md @@ -0,0 +1,22 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.0.1](https://github.com/ljharb/side-channel-map/compare/v1.0.0...v1.0.1) - 2024-12-10 + +### Commits + +- [Deps] update `call-bound` [`6d05aaa`](https://github.com/ljharb/side-channel-map/commit/6d05aaa4ce5f2be4e7825df433d650696f0ba40f) +- [types] fix generics ordering [`11c0184`](https://github.com/ljharb/side-channel-map/commit/11c0184132ac11fdc16857e12682e148e5e9ee74) + +## v1.0.0 - 2024-12-10 + +### Commits + +- Initial implementation, tests, readme, types [`ad877b4`](https://github.com/ljharb/side-channel-map/commit/ad877b42926d46d63fff76a2bd01d2b4a01959a9) +- Initial commit [`28f8879`](https://github.com/ljharb/side-channel-map/commit/28f8879c512abe8fcf9b6a4dc7754a0287e5eba4) +- npm init [`2c9604e`](https://github.com/ljharb/side-channel-map/commit/2c9604e5aa40223e425ea7cea78f8a07697504bd) +- Only apps should have lockfiles [`5e7ba9c`](https://github.com/ljharb/side-channel-map/commit/5e7ba9cffe3ef42095815adc8ac1255b49bbadf5) diff --git a/food-ordering-app/server/node_modules/side-channel-map/LICENSE b/food-ordering-app/server/node_modules/side-channel-map/LICENSE new file mode 100644 index 000000000..f82f38963 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-map/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/food-ordering-app/server/node_modules/side-channel-map/README.md b/food-ordering-app/server/node_modules/side-channel-map/README.md new file mode 100644 index 000000000..8fa6f77f0 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-map/README.md @@ -0,0 +1,62 @@ +# side-channel-map [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +Store information about any JS value in a side channel, using a Map. + +Warning: if the `key` is an object, this implementation will leak memory until you `delete` it. +Use [`side-channel`](https://npmjs.com/side-channel) for the best available strategy. + +## Getting started + +```sh +npm install --save side-channel-map +``` + +## Usage/Examples + +```js +const assert = require('assert'); +const getSideChannelMap = require('side-channel-map'); + +const channel = getSideChannelMap(); + +const key = {}; +assert.equal(channel.has(key), false); +assert.throws(() => channel.assert(key), TypeError); + +channel.set(key, 42); + +channel.assert(key); // does not throw +assert.equal(channel.has(key), true); +assert.equal(channel.get(key), 42); + +channel.delete(key); +assert.equal(channel.has(key), false); +assert.throws(() => channel.assert(key), TypeError); +``` + +## Tests + +Clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.org/package/side-channel-map +[npm-version-svg]: https://versionbadg.es/ljharb/side-channel-map.svg +[deps-svg]: https://david-dm.org/ljharb/side-channel-map.svg +[deps-url]: https://david-dm.org/ljharb/side-channel-map +[dev-deps-svg]: https://david-dm.org/ljharb/side-channel-map/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/side-channel-map#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/side-channel-map.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/side-channel-map.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/side-channel-map.svg +[downloads-url]: https://npm-stat.com/charts.html?package=side-channel-map +[codecov-image]: https://codecov.io/gh/ljharb/side-channel-map/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/side-channel-map/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/side-channel-map +[actions-url]: https://github.com/ljharb/side-channel-map/actions diff --git a/food-ordering-app/server/node_modules/side-channel-map/index.d.ts b/food-ordering-app/server/node_modules/side-channel-map/index.d.ts new file mode 100644 index 000000000..de33e899e --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-map/index.d.ts @@ -0,0 +1,15 @@ +declare namespace getSideChannelMap { + type Channel = { + assert: (key: K) => void; + has: (key: K) => boolean; + get: (key: K) => V | undefined; + set: (key: K, value: V) => void; + delete: (key: K) => boolean; + }; +} + +declare function getSideChannelMap(): getSideChannelMap.Channel; + +declare const x: false | typeof getSideChannelMap; + +export = x; diff --git a/food-ordering-app/server/node_modules/side-channel-map/index.js b/food-ordering-app/server/node_modules/side-channel-map/index.js new file mode 100644 index 000000000..e111100bf --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-map/index.js @@ -0,0 +1,68 @@ +'use strict'; + +var GetIntrinsic = require('get-intrinsic'); +var callBound = require('call-bound'); +var inspect = require('object-inspect'); + +var $TypeError = require('es-errors/type'); +var $Map = GetIntrinsic('%Map%', true); + +/** @type {(thisArg: Map, key: K) => V} */ +var $mapGet = callBound('Map.prototype.get', true); +/** @type {(thisArg: Map, key: K, value: V) => void} */ +var $mapSet = callBound('Map.prototype.set', true); +/** @type {(thisArg: Map, key: K) => boolean} */ +var $mapHas = callBound('Map.prototype.has', true); +/** @type {(thisArg: Map, key: K) => boolean} */ +var $mapDelete = callBound('Map.prototype.delete', true); +/** @type {(thisArg: Map) => number} */ +var $mapSize = callBound('Map.prototype.size', true); + +/** @type {import('.')} */ +module.exports = !!$Map && /** @type {Exclude} */ function getSideChannelMap() { + /** @typedef {ReturnType} Channel */ + /** @typedef {Parameters[0]} K */ + /** @typedef {Parameters[1]} V */ + + /** @type {Map | undefined} */ var $m; + + /** @type {Channel} */ + var channel = { + assert: function (key) { + if (!channel.has(key)) { + throw new $TypeError('Side channel does not contain ' + inspect(key)); + } + }, + 'delete': function (key) { + if ($m) { + var result = $mapDelete($m, key); + if ($mapSize($m) === 0) { + $m = void undefined; + } + return result; + } + return false; + }, + get: function (key) { // eslint-disable-line consistent-return + if ($m) { + return $mapGet($m, key); + } + }, + has: function (key) { + if ($m) { + return $mapHas($m, key); + } + return false; + }, + set: function (key, value) { + if (!$m) { + // @ts-expect-error TS can't handle narrowing a variable inside a closure + $m = new $Map(); + } + $mapSet($m, key, value); + } + }; + + // @ts-expect-error TODO: figure out why TS is erroring here + return channel; +}; diff --git a/food-ordering-app/server/node_modules/side-channel-map/package.json b/food-ordering-app/server/node_modules/side-channel-map/package.json new file mode 100644 index 000000000..18e808059 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-map/package.json @@ -0,0 +1,80 @@ +{ + "name": "side-channel-map", + "version": "1.0.1", + "description": "Store information about any JS value in a side channel, using a Map", + "main": "index.js", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "types": "./index.d.ts", + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prelint": "evalmd README.md && eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git')", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p . && attw -P", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>= 10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/side-channel-map.git" + }, + "keywords": [], + "author": "Jordan Harband ", + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/side-channel-map/issues" + }, + "homepage": "https://github.com/ljharb/side-channel-map#readme", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.1", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.2", + "@types/get-intrinsic": "^1.2.3", + "@types/object-inspect": "^1.13.0", + "@types/tape": "^5.6.5", + "auto-changelog": "^2.5.0", + "eclint": "^2.8.1", + "encoding": "^0.1.13", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/food-ordering-app/server/node_modules/side-channel-map/test/index.js b/food-ordering-app/server/node_modules/side-channel-map/test/index.js new file mode 100644 index 000000000..17433239e --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-map/test/index.js @@ -0,0 +1,114 @@ +'use strict'; + +var test = require('tape'); + +var getSideChannelMap = require('../'); + +test('getSideChannelMap', { skip: typeof Map !== 'function' }, function (t) { + var getSideChannel = getSideChannelMap || function () { + throw new EvalError('should never happen'); + }; + + t.test('export', function (st) { + st.equal(typeof getSideChannel, 'function', 'is a function'); + + st.equal(getSideChannel.length, 0, 'takes no arguments'); + + var channel = getSideChannel(); + st.ok(channel, 'is truthy'); + st.equal(typeof channel, 'object', 'is an object'); + st.end(); + }); + + t.test('assert', function (st) { + var channel = getSideChannel(); + st['throws']( + function () { channel.assert({}); }, + TypeError, + 'nonexistent value throws' + ); + + var o = {}; + channel.set(o, 'data'); + st.doesNotThrow(function () { channel.assert(o); }, 'existent value noops'); + + st.end(); + }); + + t.test('has', function (st) { + var channel = getSideChannel(); + /** @type {unknown[]} */ var o = []; + + st.equal(channel.has(o), false, 'nonexistent value yields false'); + + channel.set(o, 'foo'); + st.equal(channel.has(o), true, 'existent value yields true'); + + st.equal(channel.has('abc'), false, 'non object value non existent yields false'); + + channel.set('abc', 'foo'); + st.equal(channel.has('abc'), true, 'non object value that exists yields true'); + + st.end(); + }); + + t.test('get', function (st) { + var channel = getSideChannel(); + var o = {}; + st.equal(channel.get(o), undefined, 'nonexistent value yields undefined'); + + var data = {}; + channel.set(o, data); + st.equal(channel.get(o), data, '"get" yields data set by "set"'); + + st.end(); + }); + + t.test('set', function (st) { + var channel = getSideChannel(); + var o = function () {}; + st.equal(channel.get(o), undefined, 'value not set'); + + channel.set(o, 42); + st.equal(channel.get(o), 42, 'value was set'); + + channel.set(o, Infinity); + st.equal(channel.get(o), Infinity, 'value was set again'); + + var o2 = {}; + channel.set(o2, 17); + st.equal(channel.get(o), Infinity, 'o is not modified'); + st.equal(channel.get(o2), 17, 'o2 is set'); + + channel.set(o, 14); + st.equal(channel.get(o), 14, 'o is modified'); + st.equal(channel.get(o2), 17, 'o2 is not modified'); + + st.end(); + }); + + t.test('delete', function (st) { + var channel = getSideChannel(); + var o = {}; + st.equal(channel['delete']({}), false, 'nonexistent value yields false'); + + channel.set(o, 42); + st.equal(channel.has(o), true, 'value is set'); + + st.equal(channel['delete']({}), false, 'nonexistent value still yields false'); + + st.equal(channel['delete'](o), true, 'deleted value yields true'); + + st.equal(channel.has(o), false, 'value is no longer set'); + + st.end(); + }); + + t.end(); +}); + +test('getSideChannelMap, no Maps', { skip: typeof Map === 'function' }, function (t) { + t.equal(getSideChannelMap, false, 'is false'); + + t.end(); +}); diff --git a/food-ordering-app/server/node_modules/side-channel-map/tsconfig.json b/food-ordering-app/server/node_modules/side-channel-map/tsconfig.json new file mode 100644 index 000000000..d9a6668c3 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-map/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "es2021", + }, + "exclude": [ + "coverage", + ], +} diff --git a/food-ordering-app/server/node_modules/side-channel-weakmap/.editorconfig b/food-ordering-app/server/node_modules/side-channel-weakmap/.editorconfig new file mode 100644 index 000000000..72e0ebaa7 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-weakmap/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +indent_style = tab +indent_size = 2 +trim_trailing_whitespace = true diff --git a/food-ordering-app/server/node_modules/side-channel-weakmap/.eslintrc b/food-ordering-app/server/node_modules/side-channel-weakmap/.eslintrc new file mode 100644 index 000000000..9b13ad8ba --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-weakmap/.eslintrc @@ -0,0 +1,12 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "id-length": 0, + "max-lines-per-function": 0, + "multiline-comment-style": 1, + "new-cap": [2, { "capIsNewExceptions": ["GetIntrinsic"] }], + }, +} diff --git a/food-ordering-app/server/node_modules/side-channel-weakmap/.github/FUNDING.yml b/food-ordering-app/server/node_modules/side-channel-weakmap/.github/FUNDING.yml new file mode 100644 index 000000000..2ae71cdb9 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-weakmap/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/side-channel-weakmap +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/food-ordering-app/server/node_modules/side-channel-weakmap/.nycrc b/food-ordering-app/server/node_modules/side-channel-weakmap/.nycrc new file mode 100644 index 000000000..1826526e0 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-weakmap/.nycrc @@ -0,0 +1,13 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "lines": 86, + "statements": 85.93, + "functions": 82.43, + "branches": 76.06, + "exclude": [ + "coverage", + "test" + ] +} diff --git a/food-ordering-app/server/node_modules/side-channel-weakmap/CHANGELOG.md b/food-ordering-app/server/node_modules/side-channel-weakmap/CHANGELOG.md new file mode 100644 index 000000000..aba7ab041 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-weakmap/CHANGELOG.md @@ -0,0 +1,28 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.0.2](https://github.com/ljharb/side-channel-weakmap/compare/v1.0.1...v1.0.2) - 2024-12-10 + +### Commits + +- [types] fix generics ordering [`1b62e94`](https://github.com/ljharb/side-channel-weakmap/commit/1b62e94a2ad6ed30b640ba73c4a2535836c67289) + +## [v1.0.1](https://github.com/ljharb/side-channel-weakmap/compare/v1.0.0...v1.0.1) - 2024-12-10 + +### Commits + +- [types] fix generics ordering [`08a4a5d`](https://github.com/ljharb/side-channel-weakmap/commit/08a4a5dbffedc3ebc79f1aaaf5a3dd6d2196dc1b) +- [Deps] update `side-channel-map` [`b53fe44`](https://github.com/ljharb/side-channel-weakmap/commit/b53fe447dfdd3a9aebedfd015b384eac17fce916) + +## v1.0.0 - 2024-12-10 + +### Commits + +- Initial implementation, tests, readme, types [`53c0fa4`](https://github.com/ljharb/side-channel-weakmap/commit/53c0fa4788435a006f58b9d7b43cb65989ecee49) +- Initial commit [`a157947`](https://github.com/ljharb/side-channel-weakmap/commit/a157947f26fcaf2c4a941d3a044e76bf67343532) +- npm init [`54dfc55`](https://github.com/ljharb/side-channel-weakmap/commit/54dfc55bafb16265910d5aad4e743c43aee5bbbb) +- Only apps should have lockfiles [`0ddd6c7`](https://github.com/ljharb/side-channel-weakmap/commit/0ddd6c7b07fe8ee04d67b2e9f7255af7ce62c07d) diff --git a/food-ordering-app/server/node_modules/side-channel-weakmap/LICENSE b/food-ordering-app/server/node_modules/side-channel-weakmap/LICENSE new file mode 100644 index 000000000..3900dd7e2 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-weakmap/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/food-ordering-app/server/node_modules/side-channel-weakmap/README.md b/food-ordering-app/server/node_modules/side-channel-weakmap/README.md new file mode 100644 index 000000000..856ee3643 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-weakmap/README.md @@ -0,0 +1,62 @@ +# side-channel-weakmap [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +Store information about any JS value in a side channel. Uses WeakMap if available. + +Warning: this implementation will leak memory until you `delete` the `key`. +Use [`side-channel`](https://npmjs.com/side-channel) for the best available strategy. + +## Getting started + +```sh +npm install --save side-channel-weakmap +``` + +## Usage/Examples + +```js +const assert = require('assert'); +const getSideChannelList = require('side-channel-weakmap'); + +const channel = getSideChannelList(); + +const key = {}; +assert.equal(channel.has(key), false); +assert.throws(() => channel.assert(key), TypeError); + +channel.set(key, 42); + +channel.assert(key); // does not throw +assert.equal(channel.has(key), true); +assert.equal(channel.get(key), 42); + +channel.delete(key); +assert.equal(channel.has(key), false); +assert.throws(() => channel.assert(key), TypeError); +``` + +## Tests + +Clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.org/package/side-channel-weakmap +[npm-version-svg]: https://versionbadg.es/ljharb/side-channel-weakmap.svg +[deps-svg]: https://david-dm.org/ljharb/side-channel-weakmap.svg +[deps-url]: https://david-dm.org/ljharb/side-channel-weakmap +[dev-deps-svg]: https://david-dm.org/ljharb/side-channel-weakmap/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/side-channel-weakmap#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/side-channel-weakmap.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/side-channel-weakmap.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/side-channel-weakmap.svg +[downloads-url]: https://npm-stat.com/charts.html?package=side-channel-weakmap +[codecov-image]: https://codecov.io/gh/ljharb/side-channel-weakmap/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/side-channel-weakmap/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/side-channel-weakmap +[actions-url]: https://github.com/ljharb/side-channel-weakmap/actions diff --git a/food-ordering-app/server/node_modules/side-channel-weakmap/index.d.ts b/food-ordering-app/server/node_modules/side-channel-weakmap/index.d.ts new file mode 100644 index 000000000..ce1bc2a4a --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-weakmap/index.d.ts @@ -0,0 +1,15 @@ +declare namespace getSideChannelWeakMap { + type Channel = { + assert: (key: K) => void; + has: (key: K) => boolean; + get: (key: K) => V | undefined; + set: (key: K, value: V) => void; + delete: (key: K) => boolean; + } +} + +declare function getSideChannelWeakMap(): getSideChannelWeakMap.Channel; + +declare const x: false | typeof getSideChannelWeakMap; + +export = x; diff --git a/food-ordering-app/server/node_modules/side-channel-weakmap/index.js b/food-ordering-app/server/node_modules/side-channel-weakmap/index.js new file mode 100644 index 000000000..e5b8183d9 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-weakmap/index.js @@ -0,0 +1,84 @@ +'use strict'; + +var GetIntrinsic = require('get-intrinsic'); +var callBound = require('call-bound'); +var inspect = require('object-inspect'); +var getSideChannelMap = require('side-channel-map'); + +var $TypeError = require('es-errors/type'); +var $WeakMap = GetIntrinsic('%WeakMap%', true); + +/** @type {(thisArg: WeakMap, key: K) => V} */ +var $weakMapGet = callBound('WeakMap.prototype.get', true); +/** @type {(thisArg: WeakMap, key: K, value: V) => void} */ +var $weakMapSet = callBound('WeakMap.prototype.set', true); +/** @type {(thisArg: WeakMap, key: K) => boolean} */ +var $weakMapHas = callBound('WeakMap.prototype.has', true); +/** @type {(thisArg: WeakMap, key: K) => boolean} */ +var $weakMapDelete = callBound('WeakMap.prototype.delete', true); + +/** @type {import('.')} */ +module.exports = $WeakMap + ? /** @type {Exclude} */ function getSideChannelWeakMap() { + /** @typedef {ReturnType} Channel */ + /** @typedef {Parameters[0]} K */ + /** @typedef {Parameters[1]} V */ + + /** @type {WeakMap | undefined} */ var $wm; + /** @type {Channel | undefined} */ var $m; + + /** @type {Channel} */ + var channel = { + assert: function (key) { + if (!channel.has(key)) { + throw new $TypeError('Side channel does not contain ' + inspect(key)); + } + }, + 'delete': function (key) { + if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { + if ($wm) { + return $weakMapDelete($wm, key); + } + } else if (getSideChannelMap) { + if ($m) { + return $m['delete'](key); + } + } + return false; + }, + get: function (key) { + if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { + if ($wm) { + return $weakMapGet($wm, key); + } + } + return $m && $m.get(key); + }, + has: function (key) { + if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { + if ($wm) { + return $weakMapHas($wm, key); + } + } + return !!$m && $m.has(key); + }, + set: function (key, value) { + if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { + if (!$wm) { + $wm = new $WeakMap(); + } + $weakMapSet($wm, key, value); + } else if (getSideChannelMap) { + if (!$m) { + $m = getSideChannelMap(); + } + // eslint-disable-next-line no-extra-parens + /** @type {NonNullable} */ ($m).set(key, value); + } + } + }; + + // @ts-expect-error TODO: figure out why this is erroring + return channel; + } + : getSideChannelMap; diff --git a/food-ordering-app/server/node_modules/side-channel-weakmap/package.json b/food-ordering-app/server/node_modules/side-channel-weakmap/package.json new file mode 100644 index 000000000..9ef658333 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-weakmap/package.json @@ -0,0 +1,87 @@ +{ + "name": "side-channel-weakmap", + "version": "1.0.2", + "description": "Store information about any JS value in a side channel. Uses WeakMap if available.", + "main": "index.js", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "types": "./index.d.ts", + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prelint": "eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git')", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p . && attw -P", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>=10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/side-channel-weakmap.git" + }, + "keywords": [ + "weakmap", + "map", + "side", + "channel", + "metadata" + ], + "author": "Jordan Harband ", + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/side-channel-weakmap/issues" + }, + "homepage": "https://github.com/ljharb/side-channel-weakmap#readme", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.1", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.2", + "@types/call-bind": "^1.0.5", + "@types/get-intrinsic": "^1.2.3", + "@types/object-inspect": "^1.13.0", + "@types/tape": "^5.6.5", + "auto-changelog": "^2.5.0", + "eclint": "^2.8.1", + "encoding": "^0.1.13", + "eslint": "=8.8.0", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/food-ordering-app/server/node_modules/side-channel-weakmap/test/index.js b/food-ordering-app/server/node_modules/side-channel-weakmap/test/index.js new file mode 100644 index 000000000..a01248b57 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-weakmap/test/index.js @@ -0,0 +1,114 @@ +'use strict'; + +var test = require('tape'); + +var getSideChannelWeakMap = require('../'); + +test('getSideChannelMap', { skip: typeof WeakMap !== 'function' && typeof Map !== 'function' }, function (t) { + var getSideChannel = getSideChannelWeakMap || function () { + throw new EvalError('should never happen'); + }; + + t.test('export', function (st) { + st.equal(typeof getSideChannel, 'function', 'is a function'); + + st.equal(getSideChannel.length, 0, 'takes no arguments'); + + var channel = getSideChannel(); + st.ok(channel, 'is truthy'); + st.equal(typeof channel, 'object', 'is an object'); + st.end(); + }); + + t.test('assert', function (st) { + var channel = getSideChannel(); + st['throws']( + function () { channel.assert({}); }, + TypeError, + 'nonexistent value throws' + ); + + var o = {}; + channel.set(o, 'data'); + st.doesNotThrow(function () { channel.assert(o); }, 'existent value noops'); + + st.end(); + }); + + t.test('has', function (st) { + var channel = getSideChannel(); + /** @type {unknown[]} */ var o = []; + + st.equal(channel.has(o), false, 'nonexistent value yields false'); + + channel.set(o, 'foo'); + st.equal(channel.has(o), true, 'existent value yields true'); + + st.equal(channel.has('abc'), false, 'non object value non existent yields false'); + + channel.set('abc', 'foo'); + st.equal(channel.has('abc'), true, 'non object value that exists yields true'); + + st.end(); + }); + + t.test('get', function (st) { + var channel = getSideChannel(); + var o = {}; + st.equal(channel.get(o), undefined, 'nonexistent value yields undefined'); + + var data = {}; + channel.set(o, data); + st.equal(channel.get(o), data, '"get" yields data set by "set"'); + + st.end(); + }); + + t.test('set', function (st) { + var channel = getSideChannel(); + var o = function () {}; + st.equal(channel.get(o), undefined, 'value not set'); + + channel.set(o, 42); + st.equal(channel.get(o), 42, 'value was set'); + + channel.set(o, Infinity); + st.equal(channel.get(o), Infinity, 'value was set again'); + + var o2 = {}; + channel.set(o2, 17); + st.equal(channel.get(o), Infinity, 'o is not modified'); + st.equal(channel.get(o2), 17, 'o2 is set'); + + channel.set(o, 14); + st.equal(channel.get(o), 14, 'o is modified'); + st.equal(channel.get(o2), 17, 'o2 is not modified'); + + st.end(); + }); + + t.test('delete', function (st) { + var channel = getSideChannel(); + var o = {}; + st.equal(channel['delete']({}), false, 'nonexistent value yields false'); + + channel.set(o, 42); + st.equal(channel.has(o), true, 'value is set'); + + st.equal(channel['delete']({}), false, 'nonexistent value still yields false'); + + st.equal(channel['delete'](o), true, 'deleted value yields true'); + + st.equal(channel.has(o), false, 'value is no longer set'); + + st.end(); + }); + + t.end(); +}); + +test('getSideChannelMap, no WeakMaps and/or Maps', { skip: typeof WeakMap === 'function' || typeof Map === 'function' }, function (t) { + t.equal(getSideChannelWeakMap, false, 'is false'); + + t.end(); +}); diff --git a/food-ordering-app/server/node_modules/side-channel-weakmap/tsconfig.json b/food-ordering-app/server/node_modules/side-channel-weakmap/tsconfig.json new file mode 100644 index 000000000..d9a6668c3 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel-weakmap/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "es2021", + }, + "exclude": [ + "coverage", + ], +} diff --git a/food-ordering-app/server/node_modules/side-channel/.editorconfig b/food-ordering-app/server/node_modules/side-channel/.editorconfig new file mode 100644 index 000000000..72e0ebaa7 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +indent_style = tab +indent_size = 2 +trim_trailing_whitespace = true diff --git a/food-ordering-app/server/node_modules/side-channel/.eslintignore b/food-ordering-app/server/node_modules/side-channel/.eslintignore deleted file mode 100644 index 404abb221..000000000 --- a/food-ordering-app/server/node_modules/side-channel/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -coverage/ diff --git a/food-ordering-app/server/node_modules/side-channel/.eslintrc b/food-ordering-app/server/node_modules/side-channel/.eslintrc index 850ac1fa8..9b13ad8ba 100644 --- a/food-ordering-app/server/node_modules/side-channel/.eslintrc +++ b/food-ordering-app/server/node_modules/side-channel/.eslintrc @@ -4,8 +4,9 @@ "extends": "@ljharb", "rules": { + "id-length": 0, "max-lines-per-function": 0, - "max-params": 0, + "multiline-comment-style": 1, "new-cap": [2, { "capIsNewExceptions": ["GetIntrinsic"] }], }, } diff --git a/food-ordering-app/server/node_modules/side-channel/CHANGELOG.md b/food-ordering-app/server/node_modules/side-channel/CHANGELOG.md index a3d161fac..58e378c72 100644 --- a/food-ordering-app/server/node_modules/side-channel/CHANGELOG.md +++ b/food-ordering-app/server/node_modules/side-channel/CHANGELOG.md @@ -5,6 +5,51 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [v1.1.0](https://github.com/ljharb/side-channel/compare/v1.0.6...v1.1.0) - 2024-12-11 + +### Commits + +- [Refactor] extract implementations to `side-channel-weakmap`, `side-channel-map`, `side-channel-list` [`ada5955`](https://github.com/ljharb/side-channel/commit/ada595549a5c4c6c853756d598846b180941c6da) +- [New] add `channel.delete` [`c01d2d3`](https://github.com/ljharb/side-channel/commit/c01d2d3fd51dbb1ce6da72ad7916e61bd6172aad) +- [types] improve types [`0c54356`](https://github.com/ljharb/side-channel/commit/0c5435651417df41b8cc1a5f7cdce8bffae68cde) +- [readme] add content [`be24868`](https://github.com/ljharb/side-channel/commit/be248682ac294b0e22c883092c45985aa91c490a) +- [actions] split out node 10-20, and 20+ [`c4488e2`](https://github.com/ljharb/side-channel/commit/c4488e241ef3d49a19fe266ac830a2e644305911) +- [types] use shared tsconfig [`0e0d57c`](https://github.com/ljharb/side-channel/commit/0e0d57c2ff17c7b45c6cbd43ebcf553edc9e3adc) +- [Dev Deps] update `@ljharb/eslint-config`, `@ljharb/tsconfig`, `@types/get-intrinsic`, `@types/object-inspect`, `@types/tape`, `auto-changelog`, `tape` [`fb4f622`](https://github.com/ljharb/side-channel/commit/fb4f622e64a99a1e40b6e5cd7691674a9dc429e4) +- [Deps] update `call-bind`, `get-intrinsic`, `object-inspect` [`b78336b`](https://github.com/ljharb/side-channel/commit/b78336b886172d1b457d414ac9e28de8c5fecc78) +- [Tests] replace `aud` with `npm audit` [`ee3ab46`](https://github.com/ljharb/side-channel/commit/ee3ab4690d954311c35115651bcfd45edd205aa1) +- [Dev Deps] add missing peer dep [`c03e21a`](https://github.com/ljharb/side-channel/commit/c03e21a7def3b67cdc15ae22316884fefcb2f6a8) + +## [v1.0.6](https://github.com/ljharb/side-channel/compare/v1.0.5...v1.0.6) - 2024-02-29 + +### Commits + +- add types [`9beef66`](https://github.com/ljharb/side-channel/commit/9beef6643e6d717ea57bedabf86448123a7dd9e9) +- [meta] simplify `exports` [`4334cf9`](https://github.com/ljharb/side-channel/commit/4334cf9df654151504c383b62a2f9ebdc8d9d5ac) +- [Deps] update `call-bind` [`d6043c4`](https://github.com/ljharb/side-channel/commit/d6043c4d8f4d7be9037dd0f0419c7a2e0e39ec6a) +- [Dev Deps] update `tape` [`6aca376`](https://github.com/ljharb/side-channel/commit/6aca3761868dc8cd5ff7fd9799bf6b95e09a6eb0) + +## [v1.0.5](https://github.com/ljharb/side-channel/compare/v1.0.4...v1.0.5) - 2024-02-06 + +### Commits + +- [actions] reuse common workflows [`3d2e1ff`](https://github.com/ljharb/side-channel/commit/3d2e1ffd16dd6eaaf3e40ff57951f840d2d63c04) +- [meta] use `npmignore` to autogenerate an npmignore file [`04296ea`](https://github.com/ljharb/side-channel/commit/04296ea17d1544b0a5d20fd5bfb31aa4f6513eb9) +- [meta] add `.editorconfig`; add `eclint` [`130f0a6`](https://github.com/ljharb/side-channel/commit/130f0a6adbc04d385c7456a601d38344dce3d6a9) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `safe-publish-latest`, `tape` [`d480c2f`](https://github.com/ljharb/side-channel/commit/d480c2fbe757489ae9b4275491ffbcc3ac4725e9) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `tape` [`ecbe70e`](https://github.com/ljharb/side-channel/commit/ecbe70e53a418234081a77971fec1fdfae20c841) +- [actions] update rebase action [`75240b9`](https://github.com/ljharb/side-channel/commit/75240b9963b816e8846400d2287cb68f88c7fba7) +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `npmignore`, `tape` [`ae8d281`](https://github.com/ljharb/side-channel/commit/ae8d281572430099109870fd9430d2ca3f320b8d) +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`7125b88`](https://github.com/ljharb/side-channel/commit/7125b885fd0eacad4fee9b073b72d14065ece278) +- [Deps] update `call-bind`, `get-intrinsic`, `object-inspect` [`82577c9`](https://github.com/ljharb/side-channel/commit/82577c9796304519139a570f82a317211b5f3b86) +- [Deps] update `call-bind`, `get-intrinsic`, `object-inspect` [`550aadf`](https://github.com/ljharb/side-channel/commit/550aadf20475a6081fd70304cc54f77259a5c8a8) +- [Tests] increase coverage [`5130877`](https://github.com/ljharb/side-channel/commit/5130877a7b27c862e64e6d1c12a178b28808859d) +- [Deps] update `get-intrinsic`, `object-inspect` [`ba0194c`](https://github.com/ljharb/side-channel/commit/ba0194c505b1a8a0427be14cadd5b8a46d4d01b8) +- [meta] add missing `engines.node` [`985fd24`](https://github.com/ljharb/side-channel/commit/985fd249663cb06617a693a94fe08cad12f5cb70) +- [Refactor] use `es-errors`, so things that only need those do not need `get-intrinsic` [`40227a8`](https://github.com/ljharb/side-channel/commit/40227a87b01709ad2c0eebf87eb4223a800099b9) +- [Deps] update `get-intrinsic` [`a989b40`](https://github.com/ljharb/side-channel/commit/a989b4024958737ae7be9fbffdeff2078f33a0fd) +- [Deps] update `object-inspect` [`aec42d2`](https://github.com/ljharb/side-channel/commit/aec42d2ec541a31aaa02475692c87d489237d9a3) + ## [v1.0.4](https://github.com/ljharb/side-channel/compare/v1.0.3...v1.0.4) - 2020-12-29 ### Commits diff --git a/food-ordering-app/server/node_modules/side-channel/README.md b/food-ordering-app/server/node_modules/side-channel/README.md index 7fa4f0680..cc7e10358 100644 --- a/food-ordering-app/server/node_modules/side-channel/README.md +++ b/food-ordering-app/server/node_modules/side-channel/README.md @@ -1,2 +1,61 @@ -# side-channel +# side-channel [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + Store information about any JS value in a side channel. Uses WeakMap if available. + +Warning: in an environment that lacks `WeakMap`, this implementation will leak memory until you `delete` the `key`. + +## Getting started + +```sh +npm install --save side-channel +``` + +## Usage/Examples + +```js +const assert = require('assert'); +const getSideChannel = require('side-channel'); + +const channel = getSideChannel(); + +const key = {}; +assert.equal(channel.has(key), false); +assert.throws(() => channel.assert(key), TypeError); + +channel.set(key, 42); + +channel.assert(key); // does not throw +assert.equal(channel.has(key), true); +assert.equal(channel.get(key), 42); + +channel.delete(key); +assert.equal(channel.has(key), false); +assert.throws(() => channel.assert(key), TypeError); +``` + +## Tests + +Clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.org/package/side-channel +[npm-version-svg]: https://versionbadg.es/ljharb/side-channel.svg +[deps-svg]: https://david-dm.org/ljharb/side-channel.svg +[deps-url]: https://david-dm.org/ljharb/side-channel +[dev-deps-svg]: https://david-dm.org/ljharb/side-channel/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/side-channel#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/side-channel.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/side-channel.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/side-channel.svg +[downloads-url]: https://npm-stat.com/charts.html?package=side-channel +[codecov-image]: https://codecov.io/gh/ljharb/side-channel/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/side-channel/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/side-channel +[actions-url]: https://github.com/ljharb/side-channel/actions diff --git a/food-ordering-app/server/node_modules/side-channel/index.d.ts b/food-ordering-app/server/node_modules/side-channel/index.d.ts new file mode 100644 index 000000000..18c63171c --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel/index.d.ts @@ -0,0 +1,14 @@ +import getSideChannelList from 'side-channel-list'; +import getSideChannelMap from 'side-channel-map'; +import getSideChannelWeakMap from 'side-channel-weakmap'; + +declare namespace getSideChannel { + type Channel = + | getSideChannelList.Channel + | ReturnType, false>> + | ReturnType, false>>; +} + +declare function getSideChannel(): getSideChannel.Channel; + +export = getSideChannel; diff --git a/food-ordering-app/server/node_modules/side-channel/index.js b/food-ordering-app/server/node_modules/side-channel/index.js index f1c48264f..a8a9b0559 100644 --- a/food-ordering-app/server/node_modules/side-channel/index.js +++ b/food-ordering-app/server/node_modules/side-channel/index.js @@ -1,124 +1,43 @@ 'use strict'; -var GetIntrinsic = require('get-intrinsic'); -var callBound = require('call-bind/callBound'); +var $TypeError = require('es-errors/type'); var inspect = require('object-inspect'); +var getSideChannelList = require('side-channel-list'); +var getSideChannelMap = require('side-channel-map'); +var getSideChannelWeakMap = require('side-channel-weakmap'); -var $TypeError = GetIntrinsic('%TypeError%'); -var $WeakMap = GetIntrinsic('%WeakMap%', true); -var $Map = GetIntrinsic('%Map%', true); +var makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList; -var $weakMapGet = callBound('WeakMap.prototype.get', true); -var $weakMapSet = callBound('WeakMap.prototype.set', true); -var $weakMapHas = callBound('WeakMap.prototype.has', true); -var $mapGet = callBound('Map.prototype.get', true); -var $mapSet = callBound('Map.prototype.set', true); -var $mapHas = callBound('Map.prototype.has', true); - -/* - * This function traverses the list returning the node corresponding to the - * given key. - * - * That node is also moved to the head of the list, so that if it's accessed - * again we don't need to traverse the whole list. By doing so, all the recently - * used nodes can be accessed relatively quickly. - */ -var listGetNode = function (list, key) { // eslint-disable-line consistent-return - for (var prev = list, curr; (curr = prev.next) !== null; prev = curr) { - if (curr.key === key) { - prev.next = curr.next; - curr.next = list.next; - list.next = curr; // eslint-disable-line no-param-reassign - return curr; - } - } -}; +/** @type {import('.')} */ +module.exports = function getSideChannel() { + /** @typedef {ReturnType} Channel */ -var listGet = function (objects, key) { - var node = listGetNode(objects, key); - return node && node.value; -}; -var listSet = function (objects, key, value) { - var node = listGetNode(objects, key); - if (node) { - node.value = value; - } else { - // Prepend the new node to the beginning of the list - objects.next = { // eslint-disable-line no-param-reassign - key: key, - next: objects.next, - value: value - }; - } -}; -var listHas = function (objects, key) { - return !!listGetNode(objects, key); -}; + /** @type {Channel | undefined} */ var $channelData; -module.exports = function getSideChannel() { - var $wm; - var $m; - var $o; + /** @type {Channel} */ var channel = { assert: function (key) { if (!channel.has(key)) { throw new $TypeError('Side channel does not contain ' + inspect(key)); } }, - get: function (key) { // eslint-disable-line consistent-return - if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { - if ($wm) { - return $weakMapGet($wm, key); - } - } else if ($Map) { - if ($m) { - return $mapGet($m, key); - } - } else { - if ($o) { // eslint-disable-line no-lonely-if - return listGet($o, key); - } - } + 'delete': function (key) { + return !!$channelData && $channelData['delete'](key); + }, + get: function (key) { + return $channelData && $channelData.get(key); }, has: function (key) { - if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { - if ($wm) { - return $weakMapHas($wm, key); - } - } else if ($Map) { - if ($m) { - return $mapHas($m, key); - } - } else { - if ($o) { // eslint-disable-line no-lonely-if - return listHas($o, key); - } - } - return false; + return !!$channelData && $channelData.has(key); }, set: function (key, value) { - if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { - if (!$wm) { - $wm = new $WeakMap(); - } - $weakMapSet($wm, key, value); - } else if ($Map) { - if (!$m) { - $m = new $Map(); - } - $mapSet($m, key, value); - } else { - if (!$o) { - /* - * Initialize the linked list as an empty node, so that we don't have - * to special-case handling of the first node: we can always refer to - * it as (previous node).next, instead of something like (list).head - */ - $o = { key: {}, next: null }; - } - listSet($o, key, value); + if (!$channelData) { + $channelData = makeChannel(); } + + $channelData.set(key, value); } }; + // @ts-expect-error TODO: figure out why this is erroring return channel; }; diff --git a/food-ordering-app/server/node_modules/side-channel/package.json b/food-ordering-app/server/node_modules/side-channel/package.json index a3e33f661..30fa42cd8 100644 --- a/food-ordering-app/server/node_modules/side-channel/package.json +++ b/food-ordering-app/server/node_modules/side-channel/package.json @@ -1,24 +1,24 @@ { "name": "side-channel", - "version": "1.0.4", + "version": "1.1.0", "description": "Store information about any JS value in a side channel. Uses WeakMap if available.", "main": "index.js", "exports": { - "./package.json": "./package.json", - ".": [ - { - "default": "./index.js" - }, - "./index.js" - ] + ".": "./index.js", + "./package.json": "./package.json" }, + "types": "./index.d.ts", "scripts": { - "prepublish": "safe-publish-latest", - "lint": "eslint .", + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prelint": "eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git')", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p . && attw -P", "pretest": "npm run lint", "tests-only": "nyc tape 'test/**/*.js'", "test": "npm run tests-only", - "posttest": "npx aud --production", + "posttest": "npx npm@'>=10.2' audit --production", "version": "auto-changelog && git add CHANGELOG.md", "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" }, @@ -42,19 +42,29 @@ "url": "https://github.com/ljharb/side-channel/issues" }, "homepage": "https://github.com/ljharb/side-channel#readme", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, "devDependencies": { - "@ljharb/eslint-config": "^17.3.0", - "aud": "^1.1.3", - "auto-changelog": "^2.2.1", - "eslint": "^7.16.0", + "@arethetypeswrong/cli": "^0.17.1", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.2", + "@types/object-inspect": "^1.13.0", + "@types/tape": "^5.6.5", + "auto-changelog": "^2.5.0", + "eclint": "^2.8.1", + "encoding": "^0.1.13", + "eslint": "=8.8.0", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", "nyc": "^10.3.2", - "safe-publish-latest": "^1.1.4", - "tape": "^5.0.1" - }, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" }, "auto-changelog": { "output": "CHANGELOG.md", @@ -63,5 +73,13 @@ "commitLimit": false, "backfillLimit": false, "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" } } diff --git a/food-ordering-app/server/node_modules/side-channel/test/index.js b/food-ordering-app/server/node_modules/side-channel/test/index.js index 3b92ef7eb..bd1e7c2a2 100644 --- a/food-ordering-app/server/node_modules/side-channel/test/index.js +++ b/food-ordering-app/server/node_modules/side-channel/test/index.js @@ -4,75 +4,101 @@ var test = require('tape'); var getSideChannel = require('../'); -test('export', function (t) { - t.equal(typeof getSideChannel, 'function', 'is a function'); - t.equal(getSideChannel.length, 0, 'takes no arguments'); +test('getSideChannel', function (t) { + t.test('export', function (st) { + st.equal(typeof getSideChannel, 'function', 'is a function'); - var channel = getSideChannel(); - t.ok(channel, 'is truthy'); - t.equal(typeof channel, 'object', 'is an object'); + st.equal(getSideChannel.length, 0, 'takes no arguments'); - t.end(); -}); + var channel = getSideChannel(); + st.ok(channel, 'is truthy'); + st.equal(typeof channel, 'object', 'is an object'); + st.end(); + }); -test('assert', function (t) { - var channel = getSideChannel(); - t['throws']( - function () { channel.assert({}); }, - TypeError, - 'nonexistent value throws' - ); + t.test('assert', function (st) { + var channel = getSideChannel(); + st['throws']( + function () { channel.assert({}); }, + TypeError, + 'nonexistent value throws' + ); - var o = {}; - channel.set(o, 'data'); - t.doesNotThrow(function () { channel.assert(o); }, 'existent value noops'); + var o = {}; + channel.set(o, 'data'); + st.doesNotThrow(function () { channel.assert(o); }, 'existent value noops'); - t.end(); -}); + st.end(); + }); -test('has', function (t) { - var channel = getSideChannel(); - var o = []; + t.test('has', function (st) { + var channel = getSideChannel(); + /** @type {unknown[]} */ var o = []; - t.equal(channel.has(o), false, 'nonexistent value yields false'); + st.equal(channel.has(o), false, 'nonexistent value yields false'); - channel.set(o, 'foo'); - t.equal(channel.has(o), true, 'existent value yields true'); + channel.set(o, 'foo'); + st.equal(channel.has(o), true, 'existent value yields true'); - t.end(); -}); + st.equal(channel.has('abc'), false, 'non object value non existent yields false'); -test('get', function (t) { - var channel = getSideChannel(); - var o = {}; - t.equal(channel.get(o), undefined, 'nonexistent value yields undefined'); + channel.set('abc', 'foo'); + st.equal(channel.has('abc'), true, 'non object value that exists yields true'); - var data = {}; - channel.set(o, data); - t.equal(channel.get(o), data, '"get" yields data set by "set"'); + st.end(); + }); - t.end(); -}); + t.test('get', function (st) { + var channel = getSideChannel(); + var o = {}; + st.equal(channel.get(o), undefined, 'nonexistent value yields undefined'); + + var data = {}; + channel.set(o, data); + st.equal(channel.get(o), data, '"get" yields data set by "set"'); + + st.end(); + }); + + t.test('set', function (st) { + var channel = getSideChannel(); + var o = function () {}; + st.equal(channel.get(o), undefined, 'value not set'); + + channel.set(o, 42); + st.equal(channel.get(o), 42, 'value was set'); + + channel.set(o, Infinity); + st.equal(channel.get(o), Infinity, 'value was set again'); + + var o2 = {}; + channel.set(o2, 17); + st.equal(channel.get(o), Infinity, 'o is not modified'); + st.equal(channel.get(o2), 17, 'o2 is set'); + + channel.set(o, 14); + st.equal(channel.get(o), 14, 'o is modified'); + st.equal(channel.get(o2), 17, 'o2 is not modified'); + + st.end(); + }); + + t.test('delete', function (st) { + var channel = getSideChannel(); + var o = {}; + st.equal(channel['delete']({}), false, 'nonexistent value yields false'); -test('set', function (t) { - var channel = getSideChannel(); - var o = function () {}; - t.equal(channel.get(o), undefined, 'value not set'); + channel.set(o, 42); + st.equal(channel.has(o), true, 'value is set'); - channel.set(o, 42); - t.equal(channel.get(o), 42, 'value was set'); + st.equal(channel['delete']({}), false, 'nonexistent value still yields false'); - channel.set(o, Infinity); - t.equal(channel.get(o), Infinity, 'value was set again'); + st.equal(channel['delete'](o), true, 'deleted value yields true'); - var o2 = {}; - channel.set(o2, 17); - t.equal(channel.get(o), Infinity, 'o is not modified'); - t.equal(channel.get(o2), 17, 'o2 is set'); + st.equal(channel.has(o), false, 'value is no longer set'); - channel.set(o, 14); - t.equal(channel.get(o), 14, 'o is modified'); - t.equal(channel.get(o2), 17, 'o2 is not modified'); + st.end(); + }); t.end(); }); diff --git a/food-ordering-app/server/node_modules/side-channel/tsconfig.json b/food-ordering-app/server/node_modules/side-channel/tsconfig.json new file mode 100644 index 000000000..d9a6668c3 --- /dev/null +++ b/food-ordering-app/server/node_modules/side-channel/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "es2021", + }, + "exclude": [ + "coverage", + ], +} diff --git a/food-ordering-app/server/node_modules/sift/es/index.js.map b/food-ordering-app/server/node_modules/sift/es/index.js.map index 1a19f9b9e..8fba984a1 100644 --- a/food-ordering-app/server/node_modules/sift/es/index.js.map +++ b/food-ordering-app/server/node_modules/sift/es/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["../src/utils.ts","../src/core.ts","../src/operations.ts","../src/index.ts"],"sourcesContent":[null,null,null,null],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["../src/utils.ts","../src/core.ts","../src/operations.ts","../src/index.ts"],"sourcesContent":[null,null,null,null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/sift/es5m/index.js.map b/food-ordering-app/server/node_modules/sift/es5m/index.js.map index 1fdf01c5d..86ba6e178 100644 --- a/food-ordering-app/server/node_modules/sift/es5m/index.js.map +++ b/food-ordering-app/server/node_modules/sift/es5m/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["../node_modules/tslib/tslib.es6.js","../src/utils.ts","../src/core.ts","../src/operations.ts","../src/index.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n",null,null,null,null],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["../node_modules/tslib/tslib.es6.js","../src/utils.ts","../src/core.ts","../src/operations.ts","../src/index.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n",null,null,null,null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/sift/lib/core.d.ts b/food-ordering-app/server/node_modules/sift/lib/core.d.ts index 367510691..46897faff 100644 --- a/food-ordering-app/server/node_modules/sift/lib/core.d.ts +++ b/food-ordering-app/server/node_modules/sift/lib/core.d.ts @@ -11,7 +11,7 @@ export interface NamedOperation { name: string; } export declare type OperationCreator = (params: any, parentQuery: any, options: Options, name: string) => Operation; -declare type BasicValueQuery = { +export declare type BasicValueQuery = { $eq?: TValue; $ne?: TValue; $lt?: TValue; @@ -33,17 +33,18 @@ declare type BasicValueQuery = { $nor?: NestedQuery[]; $and?: NestedQuery[]; }; -declare type ArrayValueQuery = { +export declare type ArrayValueQuery = { $elemMatch?: Query; } & BasicValueQuery; declare type Unpacked = T extends (infer U)[] ? U : T; -declare type ValueQuery = TValue extends Array ? ArrayValueQuery> : BasicValueQuery; +export declare type ValueQuery = TValue extends Array ? ArrayValueQuery> : BasicValueQuery; declare type NotObject = string | number | Date | boolean | Array; -declare type ShapeQuery = TItemSchema extends NotObject ? {} : { +export declare type ShapeQuery = TItemSchema extends NotObject ? {} : { [k in keyof TItemSchema]?: TItemSchema[k] | ValueQuery; }; -declare type NestedQuery = ValueQuery & ShapeQuery; +export declare type NestedQuery = ValueQuery & ShapeQuery; export declare type Query = TItemSchema | RegExp | NestedQuery; +export declare type QueryOperators = keyof ValueQuery; export declare abstract class BaseOperation implements Operation { readonly params: TParams; readonly owneryQuery: any; diff --git a/food-ordering-app/server/node_modules/sift/lib/index.d.ts b/food-ordering-app/server/node_modules/sift/lib/index.d.ts index 66fc25b1c..277650a66 100644 --- a/food-ordering-app/server/node_modules/sift/lib/index.d.ts +++ b/food-ordering-app/server/node_modules/sift/lib/index.d.ts @@ -1,6 +1,6 @@ -import { Query, Options, createQueryTester, EqualsOperation, createQueryOperation, createEqualsOperation, createOperationTester } from "./core"; +import { Query, QueryOperators, BasicValueQuery, ArrayValueQuery, ValueQuery, NestedQuery, ShapeQuery, Options, createQueryTester, EqualsOperation, createQueryOperation, createEqualsOperation, createOperationTester } from "./core"; declare const createDefaultQueryOperation: (query: Query, ownerQuery: any, { compare, operations }?: Partial) => import("./core").QueryOperation; declare const createDefaultQueryTester: (query: Query, options?: Partial) => (item: unknown, key?: import("./utils").Key, owner?: any) => boolean; -export { Query, EqualsOperation, createQueryTester, createOperationTester, createDefaultQueryOperation, createEqualsOperation, createQueryOperation }; +export { Query, QueryOperators, BasicValueQuery, ArrayValueQuery, ValueQuery, NestedQuery, ShapeQuery, EqualsOperation, createQueryTester, createOperationTester, createDefaultQueryOperation, createEqualsOperation, createQueryOperation }; export * from "./operations"; export default createDefaultQueryTester; diff --git a/food-ordering-app/server/node_modules/sift/lib/index.js.map b/food-ordering-app/server/node_modules/sift/lib/index.js.map index d8f5fa943..d146091f4 100644 --- a/food-ordering-app/server/node_modules/sift/lib/index.js.map +++ b/food-ordering-app/server/node_modules/sift/lib/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["../node_modules/tslib/tslib.es6.js","../src/utils.ts","../src/core.ts","../src/operations.ts","../src/index.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n",null,null,null,null],"names":[],"mappings":";;;;;;IAAA;IACA;AACA;IACA;IACA;AACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;AACA;IACA,IAAI,aAAa,GAAG,SAAS,CAAC,EAAE,CAAC,EAAE;IACnC,IAAI,aAAa,GAAG,MAAM,CAAC,cAAc;IACzC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;IACpF,QAAQ,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1G,IAAI,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC;AACF;IACO,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;IAChC,IAAI,IAAI,OAAO,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,IAAI;IAC7C,QAAQ,MAAM,IAAI,SAAS,CAAC,sBAAsB,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,+BAA+B,CAAC,CAAC;IAClG,IAAI,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxB,IAAI,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;IAC3C,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACzF;;IC3BO,IAAM,WAAW,GAAG,UAAQ,IAAI;QACrC,IAAM,UAAU,GAAG,UAAU,GAAG,IAAI,GAAG,GAAG,CAAC;QAC3C,OAAO,UAAS,KAAK;YACnB,OAAO,YAAY,CAAC,KAAK,CAAC,KAAK,UAAU,CAAC;SAC3C,CAAC;IACJ,CAAC,CAAC;IAEF,IAAM,YAAY,GAAG,UAAA,KAAK,IAAI,OAAA,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAA,CAAC;IAE7D,IAAM,UAAU,GAAG,UAAC,KAAU;QACnC,IAAI,KAAK,YAAY,IAAI,EAAE;YACzB,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC;SACxB;aAAM,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;YACzB,OAAO,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;SAC9B;aAAM,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE;YACtD,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;SACvB;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEK,IAAM,OAAO,GAAG,WAAW,CAAa,OAAO,CAAC,CAAC;IACjD,IAAM,QAAQ,GAAG,WAAW,CAAS,QAAQ,CAAC,CAAC;IAC/C,IAAM,UAAU,GAAG,WAAW,CAAW,UAAU,CAAC,CAAC;IACrD,IAAM,eAAe,GAAG,UAAA,KAAK;QAClC,QACE,KAAK;aACJ,KAAK,CAAC,WAAW,KAAK,MAAM;gBAC3B,KAAK,CAAC,WAAW,KAAK,KAAK;gBAC3B,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,qCAAqC;gBACtE,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,oCAAoC,CAAC;YACxE,CAAC,KAAK,CAAC,MAAM,EACb;IACJ,CAAC,CAAC;IAEK,IAAM,MAAM,GAAG,UAAC,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE;YACvB,OAAO,IAAI,CAAC;SACb;QACD,IAAI,CAAC,KAAK,CAAC,EAAE;YACX,OAAO,IAAI,CAAC;SACb;QAED,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YAC3E,OAAO,KAAK,CAAC;SACd;QAED,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE;YACd,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE;gBACzB,OAAO,KAAK,CAAC;aACd;YACD,KAAS,IAAA,CAAC,GAAG,CAAC,EAAI,QAAM,GAAK,CAAC,OAAN,EAAQ,CAAC,GAAG,QAAM,EAAE,CAAC,EAAE,EAAE;gBAC/C,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;aACvC;YACD,OAAO,IAAI,CAAC;SACb;aAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE;YACtB,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;gBACnD,OAAO,KAAK,CAAC;aACd;YACD,KAAK,IAAM,GAAG,IAAI,CAAC,EAAE;gBACnB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;aAC3C;YACD,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACf,CAAC;;ICYD;;;;IAKA,IAAM,iBAAiB,GAAG,UACxB,IAAS,EACT,OAAc,EACd,IAAY,EACZ,KAAa,EACb,GAAQ,EACR,KAAU;QAEV,IAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;;;QAIlC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE;YAC9C,KAAS,IAAA,CAAC,GAAG,CAAC,EAAI,QAAM,GAAK,IAAI,OAAT,EAAW,CAAC,GAAG,QAAM,EAAE,CAAC,EAAE,EAAE;;;gBAGlD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE;oBAC9D,OAAO,KAAK,CAAC;iBACd;aACF;SACF;QAED,IAAI,KAAK,KAAK,OAAO,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE;YAC5C,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC;SAC5C;QAED,OAAO,iBAAiB,CACtB,IAAI,CAAC,UAAU,CAAC,EAChB,OAAO,EACP,IAAI,EACJ,KAAK,GAAG,CAAC,EACT,UAAU,EACV,IAAI,CACL,CAAC;IACJ,CAAC,CAAC;IAEF;QAKE,uBACW,MAAe,EACf,WAAgB,EAChB,OAAgB,EAChB,IAAa;YAHb,WAAM,GAAN,MAAM,CAAS;YACf,gBAAW,GAAX,WAAW,CAAK;YAChB,YAAO,GAAP,OAAO,CAAS;YAChB,SAAI,GAAJ,IAAI,CAAS;YAEtB,IAAI,CAAC,IAAI,EAAE,CAAC;SACb;QACS,4BAAI,GAAd,eAAmB;QACnB,6BAAK,GAAL;YACE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;YAClB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;SACnB;QAEH,oBAAC;IAAD,CAAC,IAAA;IAED;QAAsC,kCAAkB;QAItD,wBACE,MAAW,EACX,WAAgB,EAChB,OAAgB,EACA,QAA0B;YAJ5C,YAME,kBAAM,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,SACpC;YAHiB,cAAQ,GAAR,QAAQ,CAAkB;;SAG3C;;;QAKD,8BAAK,GAAL;YACE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;YAClB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;YAClB,KAAS,IAAA,CAAC,GAAG,CAAC,EAAI,QAAM,GAAK,IAAI,CAAC,QAAQ,OAAlB,EAAoB,CAAC,GAAG,QAAM,EAAE,CAAC,EAAE,EAAE;gBAC3D,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;aAC1B;SACF;;;QAOS,qCAAY,GAAtB,UAAuB,IAAS,EAAE,GAAQ,EAAE,KAAU,EAAE,IAAa;YACnE,IAAI,IAAI,GAAG,IAAI,CAAC;YAChB,IAAI,IAAI,GAAG,IAAI,CAAC;YAChB,KAAS,IAAA,CAAC,GAAG,CAAC,EAAI,QAAM,GAAK,IAAI,CAAC,QAAQ,OAAlB,EAAoB,CAAC,GAAG,QAAM,EAAE,CAAC,EAAE,EAAE;gBAC3D,IAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACxC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;oBACxB,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;iBAC7C;gBACD,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;oBACxB,IAAI,GAAG,KAAK,CAAC;iBACd;gBACD,IAAI,cAAc,CAAC,IAAI,EAAE;oBACvB,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;wBACxB,MAAM;qBACP;iBACF;qBAAM;oBACL,IAAI,GAAG,KAAK,CAAC;iBACd;aACF;YACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;SAClB;QACH,qBAAC;IAAD,CAnDA,CAAsC,aAAa,GAmDlD;IAED;QAAkD,uCAAc;QAG9D,6BACE,MAAW,EACX,WAAgB,EAChB,OAAgB,EAChB,QAA0B,EACjB,IAAY;YALvB,YAOE,kBAAM,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,SAC9C;YAHU,UAAI,GAAJ,IAAI,CAAQ;;SAGtB;QACH,0BAAC;IAAD,CAZA,CAAkD,cAAc,GAY/D;IAED;QAA2C,kCAAc;QAAzD;YAAA,qEAQC;YAPU,YAAM,GAAG,IAAI,CAAC;;SAOxB;;;QAHC,6BAAI,GAAJ,UAAK,IAAW,EAAE,GAAQ,EAAE,MAAW,EAAE,IAAa;YACpD,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;SAC5C;QACH,qBAAC;IAAD,CARA,CAA2C,cAAc,GAQxD;IAED;QAAqC,mCAAc;QAEjD,yBACW,OAAc,EACvB,MAAW,EACX,WAAgB,EAChB,OAAgB,EAChB,QAA0B;YAL5B,YAOE,kBAAM,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,SAC9C;YAPU,aAAO,GAAP,OAAO,CAAO;YAFhB,YAAM,GAAG,IAAI,CAAC;;;YA2Bf,sBAAgB,GAAG,UACzB,KAAU,EACV,GAAQ,EACR,KAAU,EACV,IAAa;gBAEb,KAAI,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBAC3C,OAAO,CAAC,KAAI,CAAC,IAAI,CAAC;aACnB,CAAC;;SA1BD;;;QAID,8BAAI,GAAJ,UAAK,IAAS,EAAE,GAAQ,EAAE,MAAW;YACnC,iBAAiB,CACf,IAAI,EACJ,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,gBAAgB,EACrB,CAAC,EACD,GAAG,EACH,MAAM,CACP,CAAC;SACH;QAcH,sBAAC;IAAD,CArCA,CAAqC,cAAc,GAqClD;IAEM,IAAM,YAAY,GAAG,UAAC,CAAC,EAAE,OAAmB;QACjD,IAAI,CAAC,YAAY,QAAQ,EAAE;YACzB,OAAO,CAAC,CAAC;SACV;QACD,IAAI,CAAC,YAAY,MAAM,EAAE;YACvB,OAAO,UAAA,CAAC;gBACN,IAAM,MAAM,GAAG,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClD,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;gBAChB,OAAO,MAAM,CAAC;aACf,CAAC;SACH;QACD,IAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAClC,OAAO,UAAA,CAAC,IAAI,OAAA,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,GAAA,CAAC;IAClD,CAAC,CAAC;;QAE2C,mCAAqB;QAAlE;YAAA,qEAcC;YAbU,YAAM,GAAG,IAAI,CAAC;;SAaxB;QAXC,8BAAI,GAAJ;YACE,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;SAC9D;QACD,8BAAI,GAAJ,UAAK,IAAI,EAAE,GAAQ,EAAE,MAAW;YAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;gBACxD,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE;oBACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;oBACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;iBAClB;aACF;SACF;QACH,sBAAC;IAAD,CAdA,CAA6C,aAAa,GAczD;QAEY,qBAAqB,GAAG,UACnC,MAAW,EACX,WAAgB,EAChB,OAAgB,IACb,OAAA,IAAI,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,IAAC;IAEvD;QAA2C,iCAAqB;QAAhE;YAAA,qEAMC;YALU,YAAM,GAAG,IAAI,CAAC;;SAKxB;QAJC,4BAAI,GAAJ;YACE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;SACnB;QACH,oBAAC;IAAD,CANA,CAA2C,aAAa,GAMvD;IAEM,IAAM,yBAAyB,GAAG,UACvC,wBAA+C,IAC5C,OAAA,UAAC,MAAW,EAAE,WAAgB,EAAE,OAAgB,EAAE,IAAY;QACjE,IAAI,MAAM,IAAI,IAAI,EAAE;YAClB,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;SAC9D;QAED,OAAO,wBAAwB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACtE,CAAC,GAAA,CAAC;IAEK,IAAM,kBAAkB,GAAG,UAAC,YAA6B;QAC9D,OAAA,yBAAyB,CACvB,UAAC,MAAW,EAAE,WAAuB,EAAE,OAAgB,EAAE,IAAY;YACnE,IAAM,YAAY,GAAG,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;YAClC,OAAO,IAAI,eAAe,CACxB,UAAA,CAAC;gBACC,OAAO,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;aACzD,EACD,WAAW,EACX,OAAO,EACP,IAAI,CACL,CAAC;SACH,CACF;IAbD,CAaC,CAAC;IASJ,IAAM,oBAAoB,GAAG,UAC3B,IAAY,EACZ,MAAW,EACX,WAAgB,EAChB,OAAgB;QAEhB,IAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,gBAAgB,EAAE;YACrB,yBAAyB,CAAC,IAAI,CAAC,CAAC;SACjC;QACD,OAAO,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC9D,CAAC,CAAC;IAEF,IAAM,yBAAyB,GAAG,UAAC,IAAY;QAC7C,MAAM,IAAI,KAAK,CAAC,4BAA0B,IAAM,CAAC,CAAC;IACpD,CAAC,CAAC;IAEK,IAAM,iBAAiB,GAAG,UAAC,KAAU,EAAE,OAAgB;QAC5D,KAAK,IAAM,GAAG,IAAI,KAAK,EAAE;YACvB,IAAI,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;gBACjE,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IACF,IAAM,qBAAqB,GAAG,UAC5B,OAAc,EACd,WAAgB,EAChB,SAAiB,EACjB,WAAgB,EAChB,OAAgB;QAEhB,IAAI,iBAAiB,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE;YACrC,IAAA,KAAqC,qBAAqB,CAC9D,WAAW,EACX,SAAS,EACT,OAAO,CACR,EAJM,cAAc,QAAA,EAAE,gBAAgB,QAItC,CAAC;YACF,IAAI,gBAAgB,CAAC,MAAM,EAAE;gBAC3B,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAC;aACH;YACD,OAAO,IAAI,eAAe,CACxB,OAAO,EACP,WAAW,EACX,WAAW,EACX,OAAO,EACP,cAAc,CACf,CAAC;SACH;QACD,OAAO,IAAI,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE;YACrE,IAAI,eAAe,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC;SACvD,CAAC,CAAC;IACL,CAAC,CAAC;QAEW,oBAAoB,GAAG,UAClC,KAAqB,EACrB,WAAuB,EACvB,EAA8C;QAD9C,4BAAA,EAAA,kBAAuB;YACvB,qBAA4C,EAAE,KAAA,EAA5C,OAAO,aAAA,EAAE,UAAU,gBAAA;QAErB,IAAM,OAAO,GAAG;YACd,OAAO,EAAE,OAAO,IAAI,MAAM;YAC1B,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,IAAI,EAAE,CAAC;SAChD,CAAC;QAEI,IAAA,KAAqC,qBAAqB,CAC9D,KAAK,EACL,IAAI,EACJ,OAAO,CACR,EAJM,cAAc,QAAA,EAAE,gBAAgB,QAItC,CAAC;QAEF,IAAM,GAAG,GAAG,EAAE,CAAC;QAEf,IAAI,cAAc,CAAC,MAAM,EAAE;YACzB,GAAG,CAAC,IAAI,CACN,IAAI,eAAe,CAAC,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,CAAC,CACrE,CAAC;SACH;QAED,GAAG,CAAC,IAAI,OAAR,GAAG,EAAS,gBAAgB,EAAE;QAE9B,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;YACpB,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;SACf;QACD,OAAO,IAAI,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAC9D,EAAE;IAEF,IAAM,qBAAqB,GAAG,UAC5B,KAAU,EACV,SAAiB,EACjB,OAAgB;QAEhB,IAAM,cAAc,GAAG,EAAE,CAAC;QAC1B,IAAM,gBAAgB,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;YAC3B,cAAc,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;YAChE,OAAO,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;SAC3C;QACD,KAAK,IAAM,GAAG,IAAI,KAAK,EAAE;YACvB,IAAI,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;gBAC1C,IAAM,EAAE,GAAG,oBAAoB,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;gBAEjE,IAAI,EAAE,EAAE;oBACN,IAAI,CAAC,EAAE,CAAC,MAAM,IAAI,SAAS,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;wBAC7D,MAAM,IAAI,KAAK,CACb,sBAAoB,GAAG,yCAAsC,CAC9D,CAAC;qBACH;iBACF;;gBAGD,IAAI,EAAE,IAAI,IAAI,EAAE;oBACd,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;iBACzB;aACF;iBAAM,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBAChC,yBAAyB,CAAC,GAAG,CAAC,CAAC;aAChC;iBAAM;gBACL,gBAAgB,CAAC,IAAI,CACnB,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CACvE,CAAC;aACH;SACF;QAED,OAAO,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;IAC5C,CAAC,CAAC;QAEW,qBAAqB,GAAG,UAAQ,SAA2B,IAAK,OAAA,UAC3E,IAAW,EACX,GAAS,EACT,KAAW;QAEX,SAAS,CAAC,KAAK,EAAE,CAAC;QAClB,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QACjC,OAAO,SAAS,CAAC,IAAI,CAAC;IACxB,CAAC,IAAC;QAEW,iBAAiB,GAAG,UAC/B,KAAqB,EACrB,OAA8B;QAA9B,wBAAA,EAAA,YAA8B;QAE9B,OAAO,qBAAqB,CAC1B,oBAAoB,CAAiB,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAC3D,CAAC;IACJ;;IC7cA;QAAkB,uBAAkB;QAApC;YAAA,qEAgBC;YAfU,YAAM,GAAG,IAAI,CAAC;;SAexB;QAbC,kBAAI,GAAJ;YACE,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;SAC9D;QACD,mBAAK,GAAL;YACE,iBAAM,KAAK,WAAE,CAAC;YACd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;SAClB;QACD,kBAAI,GAAJ,UAAK,IAAS;YACZ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBACjB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;aACnB;SACF;QACH,UAAC;IAAD,CAhBA,CAAkB,aAAa,GAgB9B;IACD;IACA;QAAyB,8BAAyB;QAAlD;YAAA,qEAkCC;YAjCU,YAAM,GAAG,IAAI,CAAC;;SAiCxB;QA/BC,yBAAI,GAAJ;YACE,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE;gBACnD,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;aACnE;YACD,IAAI,CAAC,eAAe,GAAG,oBAAoB,CACzC,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,OAAO,CACb,CAAC;SACH;QACD,0BAAK,GAAL;YACE,iBAAM,KAAK,WAAE,CAAC;YACd,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;SAC9B;QACD,yBAAI,GAAJ,UAAK,IAAS;YACZ,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE;gBACjB,KAAS,IAAA,CAAC,GAAG,CAAC,EAAI,QAAM,GAAK,IAAI,OAAT,EAAW,CAAC,GAAG,QAAM,EAAE,CAAC,EAAE,EAAE;;;oBAGlD,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;oBAE7B,IAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;oBACtB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;oBACjD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;iBACpD;gBACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;aAClB;iBAAM;gBACL,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;gBAClB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;aACnB;SACF;QACH,iBAAC;IAAD,CAlCA,CAAyB,aAAa,GAkCrC;IAED;QAAmB,wBAAyB;QAA5C;YAAA,qEAmBC;YAlBU,YAAM,GAAG,IAAI,CAAC;;SAkBxB;QAhBC,mBAAI,GAAJ;YACE,IAAI,CAAC,eAAe,GAAG,oBAAoB,CACzC,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,OAAO,CACb,CAAC;SACH;QACD,oBAAK,GAAL;YACE,iBAAM,KAAK,WAAE,CAAC;YACd,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;SAC9B;QACD,mBAAI,GAAJ,UAAK,IAAS,EAAE,GAAQ,EAAE,KAAU,EAAE,IAAa;YACjD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAClD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;YACtC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;SACxC;QACH,WAAC;IAAD,CAnBA,CAAmB,aAAa,GAmB/B;;QAE0B,yBAAkB;QAA7C;YAAA,qEAaC;YAZU,YAAM,GAAG,IAAI,CAAC;;SAYxB;QAXC,oBAAI,GAAJ,eAAS;QACT,oBAAI,GAAJ,UAAK,IAAI;YACP,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;gBAChD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;aAClB;;;;;SAKF;QACH,YAAC;IAAD,CAbA,CAA2B,aAAa,GAavC;IAED,IAAM,mBAAmB,GAAG,UAAC,MAAa;QACxC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;SAC3D;IACH,CAAC,CAAC;IAEF;QAAkB,uBAAkB;QAApC;YAAA,qEAgCC;YA/BU,YAAM,GAAG,KAAK,CAAC;;SA+BzB;QA7BC,kBAAI,GAAJ;YAAA,iBAKC;YAJC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAA,EAAE;gBAC5B,OAAA,oBAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,KAAI,CAAC,OAAO,CAAC;aAAA,CAC7C,CAAC;SACH;QACD,mBAAK,GAAL;YACE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;YAClB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;YAClB,KAAS,IAAA,CAAC,GAAG,CAAC,EAAI,QAAM,GAAK,IAAI,CAAC,IAAI,OAAd,EAAgB,CAAC,GAAG,QAAM,EAAE,CAAC,EAAE,EAAE;gBACvD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;aACtB;SACF;QACD,kBAAI,GAAJ,UAAK,IAAS,EAAE,GAAQ,EAAE,KAAU;YAClC,IAAI,IAAI,GAAG,KAAK,CAAC;YACjB,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,KAAS,IAAA,CAAC,GAAG,CAAC,EAAI,QAAM,GAAK,IAAI,CAAC,IAAI,OAAd,EAAgB,CAAC,GAAG,QAAM,EAAE,CAAC,EAAE,EAAE;gBACvD,IAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACxB,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC1B,IAAI,EAAE,CAAC,IAAI,EAAE;oBACX,IAAI,GAAG,IAAI,CAAC;oBACZ,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC;oBAClB,MAAM;iBACP;aACF;YAED,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;YACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;SAClB;QACH,UAAC;IAAD,CAhCA,CAAkB,aAAa,GAgC9B;IAED;QAAmB,wBAAG;QAAtB;YAAA,qEAMC;YALU,YAAM,GAAG,KAAK,CAAC;;SAKzB;QAJC,mBAAI,GAAJ,UAAK,IAAS,EAAE,GAAQ,EAAE,KAAU;YAClC,iBAAM,IAAI,YAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YAC7B,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;SACxB;QACH,WAAC;IAAD,CANA,CAAmB,GAAG,GAMrB;IAED;QAAkB,uBAAkB;QAApC;YAAA,qEA0BC;YAzBU,YAAM,GAAG,IAAI,CAAC;;SAyBxB;QAvBC,kBAAI,GAAJ;YAAA,iBAOC;YANC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAA,KAAK;gBACnC,IAAI,iBAAiB,CAAC,KAAK,EAAE,KAAI,CAAC,OAAO,CAAC,EAAE;oBAC1C,MAAM,IAAI,KAAK,CAAC,yBAAuB,KAAI,CAAC,IAAI,CAAC,WAAW,EAAI,CAAC,CAAC;iBACnE;gBACD,OAAO,YAAY,CAAC,KAAK,EAAE,KAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;aAClD,CAAC,CAAC;SACJ;QACD,kBAAI,GAAJ,UAAK,IAAS,EAAE,GAAQ,EAAE,KAAU;YAClC,IAAI,IAAI,GAAG,KAAK,CAAC;YACjB,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,KAAS,IAAA,CAAC,GAAG,CAAC,EAAI,QAAM,GAAK,IAAI,CAAC,QAAQ,OAAlB,EAAoB,CAAC,GAAG,QAAM,EAAE,CAAC,EAAE,EAAE;gBAC3D,IAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC9B,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE;oBACd,IAAI,GAAG,IAAI,CAAC;oBACZ,OAAO,GAAG,IAAI,CAAC;oBACf,MAAM;iBACP;aACF;YAED,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;YACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;SAClB;QACH,UAAC;IAAD,CA1BA,CAAkB,aAAa,GA0B9B;IAED;QAAmB,wBAAkB;QAGnC,cAAY,MAAW,EAAE,UAAe,EAAE,OAAgB,EAAE,IAAY;YAAxE,YACE,kBAAM,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,SAEzC;YALQ,YAAM,GAAG,IAAI,CAAC;YAIrB,KAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;;SACvD;QACD,mBAAI,GAAJ,UAAK,IAAS,EAAE,GAAQ,EAAE,KAAU,EAAE,IAAa;YACjD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YAEhC,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;gBAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;oBACjB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;oBAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;iBAClB;qBAAM,IAAI,GAAG,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;oBAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;oBACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;iBAClB;aACF;iBAAM;gBACL,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;aAClB;SACF;QACD,oBAAK,GAAL;YACE,iBAAM,KAAK,WAAE,CAAC;YACd,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;SAClB;QACH,WAAC;IAAD,CA3BA,CAAmB,aAAa,GA2B/B;IAED;QAAsB,2BAAsB;QAA5C;YAAA,qEAQC;YAPU,YAAM,GAAG,IAAI,CAAC;;SAOxB;QANC,sBAAI,GAAJ,UAAK,IAAS,EAAE,GAAQ,EAAE,KAAU;YAClC,IAAI,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE;gBAC7C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;aAClB;SACF;QACH,cAAC;IAAD,CARA,CAAsB,aAAa,GAQlC;IAED;QAAmB,wBAAmB;QAEpC,cACE,MAAoB,EACpB,WAAuB,EACvB,OAAgB,EAChB,IAAY;YAJd,YAME,kBACE,MAAM,EACN,WAAW,EACX,OAAO,EACP,MAAM,CAAC,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,GAAA,CAAC,EACtE,IAAI,CACL,SAGF;YAhBQ,YAAM,GAAG,KAAK,CAAC;YAetB,mBAAmB,CAAC,MAAM,CAAC,CAAC;;SAC7B;QACD,mBAAI,GAAJ,UAAK,IAAS,EAAE,GAAQ,EAAE,KAAU,EAAE,IAAa;YACjD,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;SAC3C;QACH,WAAC;IAAD,CArBA,CAAmB,mBAAmB,GAqBrC;IAED;QAAmB,wBAAmB;QAEpC,cACE,MAAoB,EACpB,WAAuB,EACvB,OAAgB,EAChB,IAAY;YAJd,YAME,kBACE,MAAM,EACN,WAAW,EACX,OAAO,EACP,MAAM,CAAC,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,GAAA,CAAC,EACtE,IAAI,CACL,SACF;YAdQ,YAAM,GAAG,IAAI,CAAC;;SActB;QACD,mBAAI,GAAJ,UAAK,IAAS,EAAE,GAAQ,EAAE,KAAU,EAAE,IAAa;YACjD,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;SAC3C;QACH,WAAC;IAAD,CAnBA,CAAmB,mBAAmB,GAmBrC;QAEY,GAAG,GAAG,UAAC,MAAW,EAAE,WAAuB,EAAE,OAAgB;QACxE,OAAA,IAAI,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC;IAAjD,EAAkD;QACvC,GAAG,GAAG,UACjB,MAAW,EACX,WAAuB,EACvB,OAAgB,EAChB,IAAY,IACT,OAAA,IAAI,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,IAAC;QACpC,GAAG,GAAG,UACjB,MAAoB,EACpB,WAAuB,EACvB,OAAgB,EAChB,IAAY,IACT,OAAA,IAAI,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,IAAC;QACpC,IAAI,GAAG,UAClB,MAAoB,EACpB,WAAuB,EACvB,OAAgB,EAChB,IAAY,IACT,OAAA,IAAI,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,IAAC;QACrC,UAAU,GAAG,UACxB,MAAW,EACX,WAAuB,EACvB,OAAgB,EAChB,IAAY,IACT,OAAA,IAAI,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,IAAC;QAC3C,IAAI,GAAG,UAClB,MAAW,EACX,WAAuB,EACvB,OAAgB,EAChB,IAAY,IACT,OAAA,IAAI,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,IAAC;QACrC,GAAG,GAAG,UACjB,MAAW,EACX,WAAuB,EACvB,OAAgB,EAChB,IAAY;QAEZ,OAAO,IAAI,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACrD,EAAE;QAEW,GAAG,GAAG,kBAAkB,CAAC,UAAA,MAAM,IAAI,OAAA,UAAA,CAAC,IAAI,OAAA,CAAC,GAAG,MAAM,GAAA,GAAA,EAAE;QACpD,IAAI,GAAG,kBAAkB,CAAC,UAAA,MAAM,IAAI,OAAA,UAAA,CAAC,IAAI,OAAA,CAAC,IAAI,MAAM,GAAA,GAAA,EAAE;QACtD,GAAG,GAAG,kBAAkB,CAAC,UAAA,MAAM,IAAI,OAAA,UAAA,CAAC,IAAI,OAAA,CAAC,GAAG,MAAM,GAAA,GAAA,EAAE;QACpD,IAAI,GAAG,kBAAkB,CAAC,UAAA,MAAM,IAAI,OAAA,UAAA,CAAC,IAAI,OAAA,CAAC,IAAI,MAAM,GAAA,GAAA,EAAE;QACtD,IAAI,GAAG,UAClB,EAA4B,EAC5B,WAAuB,EACvB,OAAgB;YAFf,GAAG,QAAA,EAAE,WAAW,QAAA;QAIjB,OAAA,IAAI,eAAe,CACjB,UAAA,CAAC,IAAI,OAAA,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,WAAW,GAAA,EACxC,WAAW,EACX,OAAO,CACR;IAJD,EAIE;QACS,OAAO,GAAG,UACrB,MAAe,EACf,WAAuB,EACvB,OAAgB,EAChB,IAAY,IACT,OAAA,IAAI,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,IAAC;QACxC,MAAM,GAAG,UACpB,OAAe,EACf,WAAuB,EACvB,OAAgB;QAEhB,OAAA,IAAI,eAAe,CACjB,IAAI,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,EACzC,WAAW,EACX,OAAO,CACR;IAJD,EAIE;QACS,IAAI,GAAG,UAClB,MAAW,EACX,WAAuB,EACvB,OAAgB,EAChB,IAAY,IACT,OAAA,IAAI,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,IAAC;IAElD,IAAM,WAAW,GAAG;QAClB,MAAM,EAAE,UAAA,CAAC,IAAI,OAAA,OAAO,CAAC,KAAK,QAAQ,GAAA;QAClC,MAAM,EAAE,UAAA,CAAC,IAAI,OAAA,OAAO,CAAC,KAAK,QAAQ,GAAA;QAClC,IAAI,EAAE,UAAA,CAAC,IAAI,OAAA,OAAO,CAAC,KAAK,SAAS,GAAA;QACjC,KAAK,EAAE,UAAA,CAAC,IAAI,OAAA,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAA;QAC5B,IAAI,EAAE,UAAA,CAAC,IAAI,OAAA,CAAC,KAAK,IAAI,GAAA;QACrB,SAAS,EAAE,UAAA,CAAC,IAAI,OAAA,CAAC,YAAY,IAAI,GAAA;KAClC,CAAC;QAEW,KAAK,GAAG,UACnB,KAAwB,EACxB,WAAuB,EACvB,OAAgB;QAEhB,OAAA,IAAI,eAAe,CACjB,UAAA,CAAC;YACC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;gBAC7B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;oBACvB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;iBAC9C;gBAED,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;aAC9B;YAED,OAAO,CAAC,IAAI,IAAI,GAAG,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,WAAW,KAAK,KAAK,GAAG,KAAK,CAAC;SAC1E,EACD,WAAW,EACX,OAAO,CACR;IAdD,EAcE;QACS,IAAI,GAAG,UAClB,MAAoB,EACpB,UAAsB,EACtB,OAAgB,EAChB,IAAY,IACT,OAAA,IAAI,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,IAAC;QAEpC,IAAI,GAAG,UAClB,MAAoB,EACpB,UAAsB,EACtB,OAAgB,EAChB,IAAY,IACT,OAAA,IAAI,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,IAAC;QACpC,KAAK,GAAG,UACnB,MAAc,EACd,UAAsB,EACtB,OAAgB,IACb,OAAA,IAAI,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,IAAC;QACxC,QAAQ,GAAG,cAAM,OAAA,IAAI,IAAC;QACtB,MAAM,GAAG,UACpB,MAAyB,EACzB,UAAsB,EACtB,OAAgB;QAEhB,IAAI,IAAI,CAAC;QAET,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE;YACtB,IAAI,GAAG,MAAM,CAAC;SACf;aAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE;YACnC,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC,CAAC;SAChD;aAAM;YACL,MAAM,IAAI,KAAK,CACb,oEAAkE,CACnE,CAAC;SACH;QAED,OAAO,IAAI,eAAe,CAAC,UAAA,CAAC,IAAI,OAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAA,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACxE;;;;;;;;;;;;;;;;;;;;;;;;;;;;QC/YM,2BAA2B,GAAG,UAClC,KAAqB,EACrB,UAAe,EACf,EAA8C;YAA9C,qBAA4C,EAAE,KAAA,EAA5C,OAAO,aAAA,EAAE,UAAU,gBAAA;QAErB,OAAO,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE;YAC7C,OAAO,SAAA;YACP,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,iBAAiB,EAAE,UAAU,IAAI,EAAE,CAAC;SACnE,CAAC,CAAC;IACL,EAAE;QAEI,wBAAwB,GAAG,UAC/B,KAAqB,EACrB,OAA8B;QAA9B,wBAAA,EAAA,YAA8B;QAE9B,IAAM,EAAE,GAAG,2BAA2B,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7D,OAAO,qBAAqB,CAAC,EAAE,CAAC,CAAC;IACnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["../node_modules/tslib/tslib.es6.js","../src/utils.ts","../src/core.ts","../src/operations.ts","../src/index.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n",null,null,null,null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/sift/package.json b/food-ordering-app/server/node_modules/sift/package.json index d6ed64aec..0f8803dbe 100644 --- a/food-ordering-app/server/node_modules/sift/package.json +++ b/food-ordering-app/server/node_modules/sift/package.json @@ -1,7 +1,7 @@ { "name": "sift", "description": "MongoDB query filtering in JavaScript", - "version": "16.0.0", + "version": "16.0.1", "repository": "crcn/sift.js", "sideEffects": false, "author": { diff --git a/food-ordering-app/server/node_modules/sift/sift.csp.min.js.map b/food-ordering-app/server/node_modules/sift/sift.csp.min.js.map index 38c22323b..b753d65e4 100644 --- a/food-ordering-app/server/node_modules/sift/sift.csp.min.js.map +++ b/food-ordering-app/server/node_modules/sift/sift.csp.min.js.map @@ -1 +1 @@ -{"version":3,"file":"sift.csp.min.js","sources":["node_modules/tslib/tslib.es6.js","src/utils.ts","src/core.ts","src/operations.ts","src/index.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n",null,null,null,null],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"sift.csp.min.js","sources":["node_modules/tslib/tslib.es6.js","src/utils.ts","src/core.ts","src/operations.ts","src/index.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n",null,null,null,null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/sift/sift.min.js.map b/food-ordering-app/server/node_modules/sift/sift.min.js.map index e83ea06d4..78d7db923 100644 --- a/food-ordering-app/server/node_modules/sift/sift.min.js.map +++ b/food-ordering-app/server/node_modules/sift/sift.min.js.map @@ -1 +1 @@ -{"version":3,"file":"sift.min.js","sources":["node_modules/tslib/tslib.es6.js","src/utils.ts","src/core.ts","src/operations.ts","src/index.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n",null,null,null,null],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","typeChecker","type","typeString","value","getClassName","toString","comparable","Date","getTime","isArray","map","toJSON","isObject","isFunction","equals","a","length","i","length_1","keys","key","walkKeyPathValues","item","keyPath","next","depth","owner","currentKey","isNaN","Number","params","owneryQuery","options","name","init","BaseOperation","done","keep","children","_super","_this","GroupOperation","length_2","reset","root","length_3","childOperation","QueryOperation","parent","childrenNext","NestedOperation","_nextNestedValue","createTester","compare","Function","RegExp","result","test","lastIndex","comparableA","EqualsOperation","_test","NopeOperation","numericalOperation","createNumericalOperation","typeofParams","createNamedOperation","parentQuery","operationCreator","operations","throwUnsupportedOperation","Error","containsOperation","query","charAt","createNestedOperation","nestedQuery","parentKey","_a","createQueryOperations","selfOperations","createQueryOperation","_b","assign","_c","nestedOperations","ops","push","op","propop","split","createOperationTester","operation","$Ne","$ElemMatch","_queryOperation","child","$Not","$Size","assertGroupNotEmpty","values","$Or","_ops","success","$Nor","$In","_testers","toLowerCase","length_4","ownerQuery","_in","$Nin","$Exists","$And","NamedGroupOperation","$All","$eq","$ne","$or","$nor","$elemMatch","$nin","$in","$lt","$lte","$gt","$gte","$mod","mod","equalsValue","$exists","$regex","pattern","$options","$not","typeAliases","number","v","string","bool","array","null","timestamp","$type","clazz","$and","$all","$size","$where","process","env","CSP_ENABLED","bind","createDefaultQueryOperation","defaultOperations"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"sift.min.js","sources":["node_modules/tslib/tslib.es6.js","src/utils.ts","src/core.ts","src/operations.ts","src/index.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n",null,null,null,null],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","typeChecker","type","typeString","value","getClassName","toString","comparable","Date","getTime","isArray","map","toJSON","isObject","isFunction","equals","a","length","i","length_1","keys","key","walkKeyPathValues","item","keyPath","next","depth","owner","currentKey","isNaN","Number","params","owneryQuery","options","name","init","BaseOperation","done","keep","children","_super","_this","GroupOperation","length_2","reset","root","length_3","childOperation","QueryOperation","parent","childrenNext","NestedOperation","_nextNestedValue","createTester","compare","Function","RegExp","result","test","lastIndex","comparableA","EqualsOperation","_test","NopeOperation","numericalOperation","createNumericalOperation","typeofParams","createNamedOperation","parentQuery","operationCreator","operations","throwUnsupportedOperation","Error","containsOperation","query","charAt","createNestedOperation","nestedQuery","parentKey","_a","createQueryOperations","selfOperations","createQueryOperation","_b","assign","_c","nestedOperations","ops","push","op","propop","split","createOperationTester","operation","$Ne","$ElemMatch","_queryOperation","child","$Not","$Size","assertGroupNotEmpty","values","$Or","_ops","success","$Nor","$In","_testers","toLowerCase","length_4","ownerQuery","_in","$Nin","$Exists","$And","NamedGroupOperation","$All","$eq","$ne","$or","$nor","$elemMatch","$nin","$in","$lt","$lte","$gt","$gte","$mod","mod","equalsValue","$exists","$regex","pattern","$options","$not","typeAliases","number","v","string","bool","array","null","timestamp","$type","clazz","$and","$all","$size","$where","process","env","CSP_ENABLED","bind","createDefaultQueryOperation","defaultOperations"],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/sift/src/core.d.ts b/food-ordering-app/server/node_modules/sift/src/core.d.ts index 330c04b3a..5c44c26c8 100644 --- a/food-ordering-app/server/node_modules/sift/src/core.d.ts +++ b/food-ordering-app/server/node_modules/sift/src/core.d.ts @@ -4,14 +4,14 @@ export interface Operation { readonly done: boolean; propop: boolean; reset(): any; - next(item: TItem, key?: Key, owner?: any): any; + next(item: TItem, key?: Key, owner?: any, root?: boolean): any; } -export declare type Tester = (item: any, key?: Key, owner?: any) => boolean; +export declare type Tester = (item: any, key?: Key, owner?: any, root?: boolean) => boolean; export interface NamedOperation { name: string; } export declare type OperationCreator = (params: any, parentQuery: any, options: Options, name: string) => Operation; -declare type BasicValueQuery = { +export declare type BasicValueQuery = { $eq?: TValue; $ne?: TValue; $lt?: TValue; @@ -33,33 +33,30 @@ declare type BasicValueQuery = { $nor?: NestedQuery[]; $and?: NestedQuery[]; }; -declare type ArrayValueQuery = { +export declare type ArrayValueQuery = { $elemMatch?: Query; } & BasicValueQuery; declare type Unpacked = T extends (infer U)[] ? U : T; -declare type ValueQuery = TValue extends Array ? ArrayValueQuery> : BasicValueQuery; +export declare type ValueQuery = TValue extends Array ? ArrayValueQuery> : BasicValueQuery; declare type NotObject = string | number | Date | boolean | Array; -declare type ShapeQuery = TItemSchema extends NotObject ? {} : { +export declare type ShapeQuery = TItemSchema extends NotObject ? {} : { [k in keyof TItemSchema]?: TItemSchema[k] | ValueQuery; }; -declare type NestedQuery = ValueQuery & ShapeQuery; +export declare type NestedQuery = ValueQuery & ShapeQuery; export declare type Query = TItemSchema | RegExp | NestedQuery; -declare abstract class BaseOperation implements Operation { +export declare type QueryOperators = keyof ValueQuery; +export declare abstract class BaseOperation implements Operation { readonly params: TParams; readonly owneryQuery: any; readonly options: Options; + readonly name?: string; keep: boolean; done: boolean; abstract propop: boolean; - constructor(params: TParams, owneryQuery: any, options: Options); + constructor(params: TParams, owneryQuery: any, options: Options, name?: string); protected init(): void; reset(): void; - abstract next(item: any, key: Key, parent: any): any; -} -export declare abstract class NamedBaseOperation extends BaseOperation implements NamedOperation { - readonly name: string; - abstract propop: boolean; - constructor(params: TParams, owneryQuery: any, options: Options, name: string); + abstract next(item: any, key: Key, parent: any, root: boolean): any; } declare abstract class GroupOperation extends BaseOperation { readonly children: Operation[]; @@ -69,10 +66,10 @@ declare abstract class GroupOperation extends BaseOperation { /** */ reset(): void; - abstract next(item: any, key: Key, owner: any): any; + abstract next(item: any, key: Key, owner: any, root: boolean): any; /** */ - protected childrenNext(item: any, key: Key, owner: any): void; + protected childrenNext(item: any, key: Key, owner: any, root: boolean): void; } export declare abstract class NamedGroupOperation extends GroupOperation implements NamedOperation { readonly name: string; @@ -83,7 +80,7 @@ export declare class QueryOperation extends GroupOperation { readonly propop = true; /** */ - next(item: TItem, key: Key, parent: any): void; + next(item: TItem, key: Key, parent: any, root: boolean): void; } export declare class NestedOperation extends GroupOperation { readonly keyPath: Key[]; @@ -108,8 +105,8 @@ export declare class NopeOperation extends BaseOperation { readonly propop = true; next(): void; } -export declare const numericalOperationCreator: (createNumericalOperation: OperationCreator) => (params: any, owneryQuery: any, options: Options, name: string) => Operation; -export declare const numericalOperation: (createTester: (any: any) => Tester) => (params: any, owneryQuery: any, options: Options, name: string) => Operation; +export declare const numericalOperationCreator: (createNumericalOperation: OperationCreator) => (params: any, owneryQuery: any, options: Options, name: string) => Operation | NopeOperation; +export declare const numericalOperation: (createTester: (any: any) => Tester) => (params: any, owneryQuery: any, options: Options, name: string) => Operation | NopeOperation; export declare type Options = { operations: { [identifier: string]: OperationCreator; diff --git a/food-ordering-app/server/node_modules/sift/src/core.js b/food-ordering-app/server/node_modules/sift/src/core.js index 5a0a28f31..a2ebcd843 100644 --- a/food-ordering-app/server/node_modules/sift/src/core.js +++ b/food-ordering-app/server/node_modules/sift/src/core.js @@ -1,6 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.createQueryTester = exports.createOperationTester = exports.createQueryOperation = exports.containsOperation = exports.numericalOperation = exports.numericalOperationCreator = exports.NopeOperation = exports.createEqualsOperation = exports.EqualsOperation = exports.createTester = exports.NestedOperation = exports.QueryOperation = exports.NamedGroupOperation = exports.NamedBaseOperation = void 0; +exports.createQueryTester = exports.createOperationTester = exports.createQueryOperation = exports.containsOperation = exports.numericalOperation = exports.numericalOperationCreator = exports.NopeOperation = exports.createEqualsOperation = exports.EqualsOperation = exports.createTester = exports.NestedOperation = exports.QueryOperation = exports.NamedGroupOperation = exports.BaseOperation = void 0; const utils_1 = require("./utils"); /** * Walks through each value given the context - used for nested operations. E.g: @@ -10,7 +10,7 @@ const walkKeyPathValues = (item, keyPath, next, depth, key, owner) => { const currentKey = keyPath[depth]; // if array, then try matching. Might fall through for cases like: // { $eq: [1, 2, 3] }, [ 1, 2, 3 ]. - if (utils_1.isArray(item) && isNaN(Number(currentKey))) { + if ((0, utils_1.isArray)(item) && isNaN(Number(currentKey))) { for (let i = 0, { length } = item; i < length; i++) { // if FALSE is returned, then terminate walker. For operations, this simply // means that the search critera was met. @@ -20,15 +20,16 @@ const walkKeyPathValues = (item, keyPath, next, depth, key, owner) => { } } if (depth === keyPath.length || item == null) { - return next(item, key, owner); + return next(item, key, owner, depth === 0); } return walkKeyPathValues(item[currentKey], keyPath, next, depth + 1, currentKey, item); }; class BaseOperation { - constructor(params, owneryQuery, options) { + constructor(params, owneryQuery, options, name) { this.params = params; this.owneryQuery = owneryQuery; this.options = options; + this.name = name; this.init(); } init() { } @@ -37,13 +38,7 @@ class BaseOperation { this.keep = false; } } -class NamedBaseOperation extends BaseOperation { - constructor(params, owneryQuery, options, name) { - super(params, owneryQuery, options); - this.name = name; - } -} -exports.NamedBaseOperation = NamedBaseOperation; +exports.BaseOperation = BaseOperation; class GroupOperation extends BaseOperation { constructor(params, owneryQuery, options, children) { super(params, owneryQuery, options); @@ -60,12 +55,14 @@ class GroupOperation extends BaseOperation { } /** */ - childrenNext(item, key, owner) { + childrenNext(item, key, owner, root) { let done = true; let keep = true; for (let i = 0, { length } = this.children; i < length; i++) { const childOperation = this.children[i]; - childOperation.next(item, key, owner); + if (!childOperation.done) { + childOperation.next(item, key, owner, root); + } if (!childOperation.keep) { keep = false; } @@ -96,8 +93,8 @@ class QueryOperation extends GroupOperation { } /** */ - next(item, key, parent) { - this.childrenNext(item, key, parent); + next(item, key, parent, root) { + this.childrenNext(item, key, parent, root); } } exports.QueryOperation = QueryOperation; @@ -108,8 +105,8 @@ class NestedOperation extends GroupOperation { this.propop = true; /** */ - this._nextNestedValue = (value, key, owner) => { - this.childrenNext(value, key, owner); + this._nextNestedValue = (value, key, owner, root) => { + this.childrenNext(value, key, owner, root); return !this.done; }; } @@ -131,8 +128,8 @@ const createTester = (a, compare) => { return result; }; } - const comparableA = utils_1.comparable(a); - return b => compare(comparableA, utils_1.comparable(b)); + const comparableA = (0, utils_1.comparable)(a); + return b => compare(comparableA, (0, utils_1.comparable)(b)); }; exports.createTester = createTester; class EqualsOperation extends BaseOperation { @@ -141,7 +138,7 @@ class EqualsOperation extends BaseOperation { this.propop = true; } init() { - this._test = exports.createTester(this.params, this.options.compare); + this._test = (0, exports.createTester)(this.params, this.options.compare); } next(item, key, parent) { if (!Array.isArray(parent) || parent.hasOwnProperty(key)) { @@ -168,17 +165,17 @@ class NopeOperation extends BaseOperation { exports.NopeOperation = NopeOperation; const numericalOperationCreator = (createNumericalOperation) => (params, owneryQuery, options, name) => { if (params == null) { - return new NopeOperation(params, owneryQuery, options); + return new NopeOperation(params, owneryQuery, options, name); } return createNumericalOperation(params, owneryQuery, options, name); }; exports.numericalOperationCreator = numericalOperationCreator; -const numericalOperation = (createTester) => exports.numericalOperationCreator((params, owneryQuery, options) => { - const typeofParams = typeof utils_1.comparable(params); +const numericalOperation = (createTester) => (0, exports.numericalOperationCreator)((params, owneryQuery, options, name) => { + const typeofParams = typeof (0, utils_1.comparable)(params); const test = createTester(params); return new EqualsOperation(b => { - return typeof utils_1.comparable(b) === typeofParams && test(b); - }, owneryQuery, options); + return typeof (0, utils_1.comparable)(b) === typeofParams && test(b); + }, owneryQuery, options, name); }); exports.numericalOperation = numericalOperation; const createNamedOperation = (name, params, parentQuery, options) => { @@ -200,7 +197,7 @@ const containsOperation = (query, options) => { }; exports.containsOperation = containsOperation; const createNestedOperation = (keyPath, nestedQuery, parentKey, owneryQuery, options) => { - if (exports.containsOperation(nestedQuery, options)) { + if ((0, exports.containsOperation)(nestedQuery, options)) { const [selfOperations, nestedOperations] = createQueryOperations(nestedQuery, parentKey, options); if (nestedOperations.length) { throw new Error(`Property queries must contain only operations, or exact objects.`); @@ -231,7 +228,7 @@ exports.createQueryOperation = createQueryOperation; const createQueryOperations = (query, parentKey, options) => { const selfOperations = []; const nestedOperations = []; - if (!utils_1.isVanillaObject(query)) { + if (!(0, utils_1.isVanillaObject)(query)) { selfOperations.push(new EqualsOperation(query, query, options)); return [selfOperations, nestedOperations]; } @@ -264,7 +261,7 @@ const createOperationTester = (operation) => (item, key, owner) => { }; exports.createOperationTester = createOperationTester; const createQueryTester = (query, options = {}) => { - return exports.createOperationTester(exports.createQueryOperation(query, null, options)); + return (0, exports.createOperationTester)((0, exports.createQueryOperation)(query, null, options)); }; exports.createQueryTester = createQueryTester; //# sourceMappingURL=core.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/sift/src/core.js.map b/food-ordering-app/server/node_modules/sift/src/core.js.map index 42d5429a5..9f82bb180 100644 --- a/food-ordering-app/server/node_modules/sift/src/core.js.map +++ b/food-ordering-app/server/node_modules/sift/src/core.js.map @@ -1 +1 @@ -{"version":3,"file":"core.js","sourceRoot":"","sources":["core.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"core.js","sourceRoot":"","sources":["core.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/sift/src/core.ts b/food-ordering-app/server/node_modules/sift/src/core.ts index 25c61f2eb..fc68e8659 100644 --- a/food-ordering-app/server/node_modules/sift/src/core.ts +++ b/food-ordering-app/server/node_modules/sift/src/core.ts @@ -33,7 +33,7 @@ export type OperationCreator = ( name: string ) => Operation; -type BasicValueQuery = { +export type BasicValueQuery = { $eq?: TValue; $ne?: TValue; $lt?: TValue; @@ -56,27 +56,29 @@ type BasicValueQuery = { $and?: NestedQuery[]; }; -type ArrayValueQuery = { +export type ArrayValueQuery = { $elemMatch?: Query; } & BasicValueQuery; type Unpacked = T extends (infer U)[] ? U : T; -type ValueQuery = TValue extends Array +export type ValueQuery = TValue extends Array ? ArrayValueQuery> : BasicValueQuery; type NotObject = string | number | Date | boolean | Array; -type ShapeQuery = TItemSchema extends NotObject +export type ShapeQuery = TItemSchema extends NotObject ? {} : { [k in keyof TItemSchema]?: TItemSchema[k] | ValueQuery }; -type NestedQuery = ValueQuery & +export type NestedQuery = ValueQuery & ShapeQuery; export type Query = | TItemSchema | RegExp | NestedQuery; +export type QueryOperators = keyof ValueQuery; + /** * Walks through each value given the context - used for nested operations. E.g: * { "person.address": { $eq: "blarg" }} diff --git a/food-ordering-app/server/node_modules/sift/src/index.d.ts b/food-ordering-app/server/node_modules/sift/src/index.d.ts index 66fc25b1c..277650a66 100644 --- a/food-ordering-app/server/node_modules/sift/src/index.d.ts +++ b/food-ordering-app/server/node_modules/sift/src/index.d.ts @@ -1,6 +1,6 @@ -import { Query, Options, createQueryTester, EqualsOperation, createQueryOperation, createEqualsOperation, createOperationTester } from "./core"; +import { Query, QueryOperators, BasicValueQuery, ArrayValueQuery, ValueQuery, NestedQuery, ShapeQuery, Options, createQueryTester, EqualsOperation, createQueryOperation, createEqualsOperation, createOperationTester } from "./core"; declare const createDefaultQueryOperation: (query: Query, ownerQuery: any, { compare, operations }?: Partial) => import("./core").QueryOperation; declare const createDefaultQueryTester: (query: Query, options?: Partial) => (item: unknown, key?: import("./utils").Key, owner?: any) => boolean; -export { Query, EqualsOperation, createQueryTester, createOperationTester, createDefaultQueryOperation, createEqualsOperation, createQueryOperation }; +export { Query, QueryOperators, BasicValueQuery, ArrayValueQuery, ValueQuery, NestedQuery, ShapeQuery, EqualsOperation, createQueryTester, createOperationTester, createDefaultQueryOperation, createEqualsOperation, createQueryOperation }; export * from "./operations"; export default createDefaultQueryTester; diff --git a/food-ordering-app/server/node_modules/sift/src/index.js b/food-ordering-app/server/node_modules/sift/src/index.js index 2468a1922..41707f927 100644 --- a/food-ordering-app/server/node_modules/sift/src/index.js +++ b/food-ordering-app/server/node_modules/sift/src/index.js @@ -1,7 +1,11 @@ "use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; @@ -19,16 +23,15 @@ Object.defineProperty(exports, "createQueryOperation", { enumerable: true, get: Object.defineProperty(exports, "createEqualsOperation", { enumerable: true, get: function () { return core_1.createEqualsOperation; } }); Object.defineProperty(exports, "createOperationTester", { enumerable: true, get: function () { return core_1.createOperationTester; } }); const createDefaultQueryOperation = (query, ownerQuery, { compare, operations } = {}) => { - return core_1.createQueryOperation(query, ownerQuery, { + return (0, core_1.createQueryOperation)(query, ownerQuery, { compare, operations: Object.assign({}, defaultOperations, operations || {}) }); }; exports.createDefaultQueryOperation = createDefaultQueryOperation; const createDefaultQueryTester = (query, options = {}) => { - console.log("Q", query); const op = createDefaultQueryOperation(query, null, options); - return core_1.createOperationTester(op); + return (0, core_1.createOperationTester)(op); }; __exportStar(require("./operations"), exports); exports.default = createDefaultQueryTester; diff --git a/food-ordering-app/server/node_modules/sift/src/index.js.map b/food-ordering-app/server/node_modules/sift/src/index.js.map index 51123b3e4..4dfb36ec0 100644 --- a/food-ordering-app/server/node_modules/sift/src/index.js.map +++ b/food-ordering-app/server/node_modules/sift/src/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,kDAAkD;AAClD,iCAQgB;AAyBd,kGA9BA,wBAAiB,OA8BA;AADjB,gGA5BA,sBAAe,OA4BA;AAKf,qGAhCA,2BAAoB,OAgCA;AADpB,sGA9BA,4BAAqB,OA8BA;AAFrB,sGA3BA,4BAAqB,OA2BA;AAxBvB,MAAM,2BAA2B,GAAG,CAClC,KAAqB,EACrB,UAAe,EACf,EAAE,OAAO,EAAE,UAAU,KAAuB,EAAE,EAC9C,EAAE;IACF,OAAO,2BAAoB,CAAC,KAAK,EAAE,UAAU,EAAE;QAC7C,OAAO;QACP,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,iBAAiB,EAAE,UAAU,IAAI,EAAE,CAAC;KACnE,CAAC,CAAC;AACL,CAAC,CAAC;AAgBA,kEAA2B;AAd7B,MAAM,wBAAwB,GAAG,CAC/B,KAAqB,EACrB,UAA4B,EAAE,EAC9B,EAAE;IACF,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACxB,MAAM,EAAE,GAAG,2BAA2B,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7D,OAAO,4BAAqB,CAAC,EAAE,CAAC,CAAC;AACnC,CAAC,CAAC;AAWF,+CAA6B;AAE7B,kBAAe,wBAAwB,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,kDAAkD;AAClD,iCAcgB;AA8Bd,kGAnCA,wBAAiB,OAmCA;AADjB,gGAjCA,sBAAe,OAiCA;AAKf,qGArCA,2BAAoB,OAqCA;AADpB,sGAnCA,4BAAqB,OAmCA;AAFrB,sGAhCA,4BAAqB,OAgCA;AA7BvB,MAAM,2BAA2B,GAAG,CAClC,KAAqB,EACrB,UAAe,EACf,EAAE,OAAO,EAAE,UAAU,KAAuB,EAAE,EAC9C,EAAE;IACF,OAAO,IAAA,2BAAoB,EAAC,KAAK,EAAE,UAAU,EAAE;QAC7C,OAAO;QACP,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,iBAAiB,EAAE,UAAU,IAAI,EAAE,CAAC;KACnE,CAAC,CAAC;AACL,CAAC,CAAC;AAqBA,kEAA2B;AAnB7B,MAAM,wBAAwB,GAAG,CAC/B,KAAqB,EACrB,UAA4B,EAAE,EAC9B,EAAE;IACF,MAAM,EAAE,GAAG,2BAA2B,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7D,OAAO,IAAA,4BAAqB,EAAC,EAAE,CAAC,CAAC;AACnC,CAAC,CAAC;AAiBF,+CAA6B;AAE7B,kBAAe,wBAAwB,CAAC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/sift/src/index.ts b/food-ordering-app/server/node_modules/sift/src/index.ts index e577a17b8..82cd00437 100644 --- a/food-ordering-app/server/node_modules/sift/src/index.ts +++ b/food-ordering-app/server/node_modules/sift/src/index.ts @@ -1,6 +1,12 @@ import * as defaultOperations from "./operations"; import { Query, + QueryOperators, + BasicValueQuery, + ArrayValueQuery, + ValueQuery, + NestedQuery, + ShapeQuery, Options, createQueryTester, EqualsOperation, @@ -30,6 +36,12 @@ const createDefaultQueryTester = ( export { Query, + QueryOperators, + BasicValueQuery, + ArrayValueQuery, + ValueQuery, + NestedQuery, + ShapeQuery, EqualsOperation, createQueryTester, createOperationTester, diff --git a/food-ordering-app/server/node_modules/sift/src/operations.d.ts b/food-ordering-app/server/node_modules/sift/src/operations.d.ts index d16758095..e00cb5369 100644 --- a/food-ordering-app/server/node_modules/sift/src/operations.d.ts +++ b/food-ordering-app/server/node_modules/sift/src/operations.d.ts @@ -1,32 +1,32 @@ -import { NamedBaseOperation, EqualsOperation, Options, Operation, Query, NamedGroupOperation } from "./core"; +import { BaseOperation, EqualsOperation, Options, Operation, Query, NamedGroupOperation } from "./core"; import { Key } from "./utils"; -declare class $Ne extends NamedBaseOperation { +declare class $Ne extends BaseOperation { readonly propop = true; private _test; init(): void; reset(): void; next(item: any): void; } -declare class $ElemMatch extends NamedBaseOperation> { +declare class $ElemMatch extends BaseOperation> { readonly propop = true; private _queryOperation; init(): void; reset(): void; next(item: any): void; } -declare class $Not extends NamedBaseOperation> { +declare class $Not extends BaseOperation> { readonly propop = true; private _queryOperation; init(): void; reset(): void; - next(item: any, key: Key, owner: any): void; + next(item: any, key: Key, owner: any, root: boolean): void; } -export declare class $Size extends NamedBaseOperation { +export declare class $Size extends BaseOperation { readonly propop = true; init(): void; next(item: any): void; } -declare class $Or extends NamedBaseOperation { +declare class $Or extends BaseOperation { readonly propop = false; private _ops; init(): void; @@ -37,29 +37,32 @@ declare class $Nor extends $Or { readonly propop = false; next(item: any, key: Key, owner: any): void; } -declare class $In extends NamedBaseOperation { +declare class $In extends BaseOperation { readonly propop = true; private _testers; init(): void; next(item: any, key: Key, owner: any): void; } -declare class $Nin extends $In { +declare class $Nin extends BaseOperation { readonly propop = true; - next(item: any, key: Key, owner: any): void; + private _in; + constructor(params: any, ownerQuery: any, options: Options, name: string); + next(item: any, key: Key, owner: any, root: boolean): void; + reset(): void; } -declare class $Exists extends NamedBaseOperation { +declare class $Exists extends BaseOperation { readonly propop = true; next(item: any, key: Key, owner: any): void; } declare class $And extends NamedGroupOperation { readonly propop = false; constructor(params: Query[], owneryQuery: Query, options: Options, name: string); - next(item: any, key: Key, owner: any): void; + next(item: any, key: Key, owner: any, root: boolean): void; } declare class $All extends NamedGroupOperation { readonly propop = true; constructor(params: Query[], owneryQuery: Query, options: Options, name: string); - next(item: any, key: Key, owner: any): void; + next(item: any, key: Key, owner: any, root: boolean): void; } export declare const $eq: (params: any, owneryQuery: Query, options: Options) => EqualsOperation; export declare const $ne: (params: any, owneryQuery: Query, options: Options, name: string) => $Ne; @@ -68,10 +71,10 @@ export declare const $nor: (params: Query[], owneryQuery: Query, optio export declare const $elemMatch: (params: any, owneryQuery: Query, options: Options, name: string) => $ElemMatch; export declare const $nin: (params: any, owneryQuery: Query, options: Options, name: string) => $Nin; export declare const $in: (params: any, owneryQuery: Query, options: Options, name: string) => $In; -export declare const $lt: (params: any, owneryQuery: any, options: Options, name: string) => Operation; -export declare const $lte: (params: any, owneryQuery: any, options: Options, name: string) => Operation; -export declare const $gt: (params: any, owneryQuery: any, options: Options, name: string) => Operation; -export declare const $gte: (params: any, owneryQuery: any, options: Options, name: string) => Operation; +export declare const $lt: (params: any, owneryQuery: any, options: Options, name: string) => Operation | import("./core").NopeOperation; +export declare const $lte: (params: any, owneryQuery: any, options: Options, name: string) => Operation | import("./core").NopeOperation; +export declare const $gt: (params: any, owneryQuery: any, options: Options, name: string) => Operation | import("./core").NopeOperation; +export declare const $gte: (params: any, owneryQuery: any, options: Options, name: string) => Operation | import("./core").NopeOperation; export declare const $mod: ([mod, equalsValue]: number[], owneryQuery: Query, options: Options) => EqualsOperation<(b: any) => boolean>; export declare const $exists: (params: boolean, owneryQuery: Query, options: Options, name: string) => $Exists; export declare const $regex: (pattern: string, owneryQuery: Query, options: Options) => EqualsOperation; diff --git a/food-ordering-app/server/node_modules/sift/src/operations.js b/food-ordering-app/server/node_modules/sift/src/operations.js index 967778243..3b8aa24ea 100644 --- a/food-ordering-app/server/node_modules/sift/src/operations.js +++ b/food-ordering-app/server/node_modules/sift/src/operations.js @@ -3,13 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.$where = exports.$options = exports.$size = exports.$all = exports.$and = exports.$type = exports.$not = exports.$regex = exports.$exists = exports.$mod = exports.$gte = exports.$gt = exports.$lte = exports.$lt = exports.$in = exports.$nin = exports.$elemMatch = exports.$nor = exports.$or = exports.$ne = exports.$eq = exports.$Size = void 0; const core_1 = require("./core"); const utils_1 = require("./utils"); -class $Ne extends core_1.NamedBaseOperation { +class $Ne extends core_1.BaseOperation { constructor() { super(...arguments); this.propop = true; } init() { - this._test = core_1.createTester(this.params, this.options.compare); + this._test = (0, core_1.createTester)(this.params, this.options.compare); } reset() { super.reset(); @@ -23,7 +23,7 @@ class $Ne extends core_1.NamedBaseOperation { } } // https://docs.mongodb.com/manual/reference/operator/query/elemMatch/ -class $ElemMatch extends core_1.NamedBaseOperation { +class $ElemMatch extends core_1.BaseOperation { constructor() { super(...arguments); this.propop = true; @@ -32,20 +32,20 @@ class $ElemMatch extends core_1.NamedBaseOperation { if (!this.params || typeof this.params !== "object") { throw new Error(`Malformed query. $elemMatch must by an object.`); } - this._queryOperation = core_1.createQueryOperation(this.params, this.owneryQuery, this.options); + this._queryOperation = (0, core_1.createQueryOperation)(this.params, this.owneryQuery, this.options); } reset() { super.reset(); this._queryOperation.reset(); } next(item) { - if (utils_1.isArray(item)) { + if ((0, utils_1.isArray)(item)) { for (let i = 0, { length } = item; i < length; i++) { // reset query operation since item being tested needs to pass _all_ query // operations for it to be a success this._queryOperation.reset(); const child = item[i]; - this._queryOperation.next(child, i, item); + this._queryOperation.next(child, i, item, false); this.keep = this.keep || this._queryOperation.keep; } this.done = true; @@ -56,31 +56,32 @@ class $ElemMatch extends core_1.NamedBaseOperation { } } } -class $Not extends core_1.NamedBaseOperation { +class $Not extends core_1.BaseOperation { constructor() { super(...arguments); this.propop = true; } init() { - this._queryOperation = core_1.createQueryOperation(this.params, this.owneryQuery, this.options); + this._queryOperation = (0, core_1.createQueryOperation)(this.params, this.owneryQuery, this.options); } reset() { + super.reset(); this._queryOperation.reset(); } - next(item, key, owner) { - this._queryOperation.next(item, key, owner); + next(item, key, owner, root) { + this._queryOperation.next(item, key, owner, root); this.done = this._queryOperation.done; this.keep = !this._queryOperation.keep; } } -class $Size extends core_1.NamedBaseOperation { +class $Size extends core_1.BaseOperation { constructor() { super(...arguments); this.propop = true; } init() { } next(item) { - if (utils_1.isArray(item) && item.length === this.params) { + if ((0, utils_1.isArray)(item) && item.length === this.params) { this.done = true; this.keep = true; } @@ -96,14 +97,14 @@ const assertGroupNotEmpty = (values) => { throw new Error(`$and/$or/$nor must be a nonempty array`); } }; -class $Or extends core_1.NamedBaseOperation { +class $Or extends core_1.BaseOperation { constructor() { super(...arguments); this.propop = false; } init() { assertGroupNotEmpty(this.params); - this._ops = this.params.map(op => core_1.createQueryOperation(op, null, this.options)); + this._ops = this.params.map(op => (0, core_1.createQueryOperation)(op, null, this.options)); } reset() { this.done = false; @@ -138,17 +139,17 @@ class $Nor extends $Or { this.keep = !this.keep; } } -class $In extends core_1.NamedBaseOperation { +class $In extends core_1.BaseOperation { constructor() { super(...arguments); this.propop = true; } init() { this._testers = this.params.map(value => { - if (core_1.containsOperation(value, this.options)) { - throw new Error(`cannot nest $ under ${this.constructor.name.toLowerCase()}`); + if ((0, core_1.containsOperation)(value, this.options)) { + throw new Error(`cannot nest $ under ${this.name.toLowerCase()}`); } - return core_1.createTester(value, this.options.compare); + return (0, core_1.createTester)(value, this.options.compare); }); } next(item, key, owner) { @@ -166,17 +167,35 @@ class $In extends core_1.NamedBaseOperation { this.done = done; } } -class $Nin extends $In { - constructor() { - super(...arguments); +class $Nin extends core_1.BaseOperation { + constructor(params, ownerQuery, options, name) { + super(params, ownerQuery, options, name); this.propop = true; + this._in = new $In(params, ownerQuery, options, name); + } + next(item, key, owner, root) { + this._in.next(item, key, owner); + if ((0, utils_1.isArray)(owner) && !root) { + if (this._in.keep) { + this.keep = false; + this.done = true; + } + else if (key == owner.length - 1) { + this.keep = true; + this.done = true; + } + } + else { + this.keep = !this._in.keep; + this.done = true; + } } - next(item, key, owner) { - super.next(item, key, owner); - this.keep = !this.keep; + reset() { + super.reset(); + this._in.reset(); } } -class $Exists extends core_1.NamedBaseOperation { +class $Exists extends core_1.BaseOperation { constructor() { super(...arguments); this.propop = true; @@ -190,21 +209,21 @@ class $Exists extends core_1.NamedBaseOperation { } class $And extends core_1.NamedGroupOperation { constructor(params, owneryQuery, options, name) { - super(params, owneryQuery, options, params.map(query => core_1.createQueryOperation(query, owneryQuery, options)), name); + super(params, owneryQuery, options, params.map(query => (0, core_1.createQueryOperation)(query, owneryQuery, options)), name); this.propop = false; assertGroupNotEmpty(params); } - next(item, key, owner) { - this.childrenNext(item, key, owner); + next(item, key, owner, root) { + this.childrenNext(item, key, owner, root); } } class $All extends core_1.NamedGroupOperation { constructor(params, owneryQuery, options, name) { - super(params, owneryQuery, options, params.map(query => core_1.createQueryOperation(query, owneryQuery, options)), name); + super(params, owneryQuery, options, params.map(query => (0, core_1.createQueryOperation)(query, owneryQuery, options)), name); this.propop = true; } - next(item, key, owner) { - this.childrenNext(item, key, owner); + next(item, key, owner, root) { + this.childrenNext(item, key, owner, root); } } const $eq = (params, owneryQuery, options) => new core_1.EqualsOperation(params, owneryQuery, options); @@ -219,13 +238,15 @@ const $elemMatch = (params, owneryQuery, options, name) => new $ElemMatch(params exports.$elemMatch = $elemMatch; const $nin = (params, owneryQuery, options, name) => new $Nin(params, owneryQuery, options, name); exports.$nin = $nin; -const $in = (params, owneryQuery, options, name) => new $In(params, owneryQuery, options, name); +const $in = (params, owneryQuery, options, name) => { + return new $In(params, owneryQuery, options, name); +}; exports.$in = $in; -exports.$lt = core_1.numericalOperation(params => b => b < params); -exports.$lte = core_1.numericalOperation(params => b => b <= params); -exports.$gt = core_1.numericalOperation(params => b => b > params); -exports.$gte = core_1.numericalOperation(params => b => b >= params); -const $mod = ([mod, equalsValue], owneryQuery, options) => new core_1.EqualsOperation(b => utils_1.comparable(b) % mod === equalsValue, owneryQuery, options); +exports.$lt = (0, core_1.numericalOperation)(params => b => b < params); +exports.$lte = (0, core_1.numericalOperation)(params => b => b <= params); +exports.$gt = (0, core_1.numericalOperation)(params => b => b > params); +exports.$gte = (0, core_1.numericalOperation)(params => b => b >= params); +const $mod = ([mod, equalsValue], owneryQuery, options) => new core_1.EqualsOperation(b => (0, utils_1.comparable)(b) % mod === equalsValue, owneryQuery, options); exports.$mod = $mod; const $exists = (params, owneryQuery, options, name) => new $Exists(params, owneryQuery, options, name); exports.$exists = $exists; @@ -261,7 +282,7 @@ const $options = () => null; exports.$options = $options; const $where = (params, ownerQuery, options) => { let test; - if (utils_1.isFunction(params)) { + if ((0, utils_1.isFunction)(params)) { test = params; } else if (!process.env.CSP_ENABLED) { diff --git a/food-ordering-app/server/node_modules/sift/src/operations.js.map b/food-ordering-app/server/node_modules/sift/src/operations.js.map index ada5a9558..7ef20cc81 100644 --- a/food-ordering-app/server/node_modules/sift/src/operations.js.map +++ b/food-ordering-app/server/node_modules/sift/src/operations.js.map @@ -1 +1 @@ -{"version":3,"file":"operations.js","sourceRoot":"","sources":["operations.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"operations.js","sourceRoot":"","sources":["operations.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/sift/src/utils.js b/food-ordering-app/server/node_modules/sift/src/utils.js index 682fc1acf..0992f4c8c 100644 --- a/food-ordering-app/server/node_modules/sift/src/utils.js +++ b/food-ordering-app/server/node_modules/sift/src/utils.js @@ -13,7 +13,7 @@ const comparable = (value) => { if (value instanceof Date) { return value.getTime(); } - else if (exports.isArray(value)) { + else if ((0, exports.isArray)(value)) { return value.map(exports.comparable); } else if (value && typeof value.toJSON === "function") { @@ -22,9 +22,9 @@ const comparable = (value) => { return value; }; exports.comparable = comparable; -exports.isArray = exports.typeChecker("Array"); -exports.isObject = exports.typeChecker("Object"); -exports.isFunction = exports.typeChecker("Function"); +exports.isArray = (0, exports.typeChecker)("Array"); +exports.isObject = (0, exports.typeChecker)("Object"); +exports.isFunction = (0, exports.typeChecker)("Function"); const isVanillaObject = value => { return (value && (value.constructor === Object || @@ -44,22 +44,22 @@ const equals = (a, b) => { if (Object.prototype.toString.call(a) !== Object.prototype.toString.call(b)) { return false; } - if (exports.isArray(a)) { + if ((0, exports.isArray)(a)) { if (a.length !== b.length) { return false; } for (let i = 0, { length } = a; i < length; i++) { - if (!exports.equals(a[i], b[i])) + if (!(0, exports.equals)(a[i], b[i])) return false; } return true; } - else if (exports.isObject(a)) { + else if ((0, exports.isObject)(a)) { if (Object.keys(a).length !== Object.keys(b).length) { return false; } for (const key in a) { - if (!exports.equals(a[key], b[key])) + if (!(0, exports.equals)(a[key], b[key])) return false; } return true; diff --git a/food-ordering-app/server/node_modules/sift/src/utils.js.map b/food-ordering-app/server/node_modules/sift/src/utils.js.map index 696e78eee..a2d4c1085 100644 --- a/food-ordering-app/server/node_modules/sift/src/utils.js.map +++ b/food-ordering-app/server/node_modules/sift/src/utils.js.map @@ -1 +1 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["utils.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"utils.js","sourceRoot":"","sources":["utils.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/simple-update-notifier/node_modules/.bin/semver b/food-ordering-app/server/node_modules/simple-update-notifier/node_modules/.bin/semver index 5aaadf42c..97c53279f 120000 --- a/food-ordering-app/server/node_modules/simple-update-notifier/node_modules/.bin/semver +++ b/food-ordering-app/server/node_modules/simple-update-notifier/node_modules/.bin/semver @@ -1 +1,16 @@ -../semver/bin/semver.js \ No newline at end of file +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../semver/bin/semver.js" "$@" +else + exec node "$basedir/../semver/bin/semver.js" "$@" +fi diff --git a/food-ordering-app/server/node_modules/simple-update-notifier/node_modules/.bin/semver.cmd b/food-ordering-app/server/node_modules/simple-update-notifier/node_modules/.bin/semver.cmd new file mode 100644 index 000000000..9913fa9d0 --- /dev/null +++ b/food-ordering-app/server/node_modules/simple-update-notifier/node_modules/.bin/semver.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\semver\bin\semver.js" %* diff --git a/food-ordering-app/server/node_modules/simple-update-notifier/node_modules/.bin/semver.ps1 b/food-ordering-app/server/node_modules/simple-update-notifier/node_modules/.bin/semver.ps1 new file mode 100644 index 000000000..314717ad4 --- /dev/null +++ b/food-ordering-app/server/node_modules/simple-update-notifier/node_modules/.bin/semver.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../semver/bin/semver.js" $args + } else { + & "$basedir/node$exe" "$basedir/../semver/bin/semver.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../semver/bin/semver.js" $args + } else { + & "node$exe" "$basedir/../semver/bin/semver.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/food-ordering-app/server/node_modules/socks/.eslintrc.cjs b/food-ordering-app/server/node_modules/socks/.eslintrc.cjs new file mode 100644 index 000000000..cc5d089e6 --- /dev/null +++ b/food-ordering-app/server/node_modules/socks/.eslintrc.cjs @@ -0,0 +1,11 @@ +module.exports = { + root: true, + parser: '@typescript-eslint/parser', + plugins: [ + '@typescript-eslint', + ], + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + ], +}; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/socks/.travis.yml b/food-ordering-app/server/node_modules/socks/.travis.yml deleted file mode 100644 index 2c6099bcd..000000000 --- a/food-ordering-app/server/node_modules/socks/.travis.yml +++ /dev/null @@ -1,11 +0,0 @@ -language: node_js -node_js: - - 10 - - 12 - - 14 - - stable - -before_install: - - npm add -g typescript prettier tslint coveralls - -script: "npm run build && npm run coveralls" \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/socks/README.md b/food-ordering-app/server/node_modules/socks/README.md index 67ecdcb29..4045852a4 100644 --- a/food-ordering-app/server/node_modules/socks/README.md +++ b/food-ordering-app/server/node_modules/socks/README.md @@ -2,6 +2,8 @@ Fully featured SOCKS proxy client supporting SOCKSv4, SOCKSv4a, and SOCKSv5. Includes Bind and Associate functionality. +> Looking for Node.js agent? Check [node-socks-proxy-agent](https://github.com/TooTallNate/node-socks-proxy-agent). + ### Features * Supports SOCKS v4, v4a, v5, and v5h protocols. @@ -344,7 +346,7 @@ udpSocket.on('message', (message, rinfo) => { */ }); -let client = new SocksClient(associateOptions); +let client = new SocksClient(options); // When the UDP relay is established, this event is fired and includes the UDP relay port to send data to on the proxy server. client.on('established', info => { @@ -359,7 +361,7 @@ client.on('established', info => { // Send 'hello' to 165.227.108.231:4444 const packet = SocksClient.createUDPFrame({ remoteHost: { host: '165.227.108.231', port: 4444 }, - data: Buffer.from(line) + data: Buffer.from('hello') }); udpSocket.send(packet, info.remoteHost.port, info.remoteHost.host); }); diff --git a/food-ordering-app/server/node_modules/socks/build/client/socksclient.js b/food-ordering-app/server/node_modules/socks/build/client/socksclient.js index 40a82a532..09b1f5576 100644 --- a/food-ordering-app/server/node_modules/socks/build/client/socksclient.js +++ b/food-ordering-app/server/node_modules/socks/build/client/socksclient.js @@ -12,13 +12,13 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.SocksClientError = exports.SocksClient = void 0; const events_1 = require("events"); const net = require("net"); -const ip = require("ip"); const smart_buffer_1 = require("smart-buffer"); const constants_1 = require("../common/constants"); const helpers_1 = require("../common/helpers"); const receivebuffer_1 = require("../common/receivebuffer"); const util_1 = require("../common/util"); Object.defineProperty(exports, "SocksClientError", { enumerable: true, get: function () { return util_1.SocksClientError; } }); +const ip_address_1 = require("ip-address"); class SocksClient extends events_1.EventEmitter { constructor(options) { super(); @@ -45,6 +45,7 @@ class SocksClient extends events_1.EventEmitter { catch (err) { if (typeof callback === 'function') { callback(err); + // eslint-disable-next-line @typescript-eslint/no-explicit-any return resolve(err); // Resolves pending promise (prevents memory leaks). } else { @@ -68,6 +69,7 @@ class SocksClient extends events_1.EventEmitter { client.removeAllListeners(); if (typeof callback === 'function') { callback(err); + // eslint-disable-next-line @typescript-eslint/no-explicit-any resolve(err); // Resolves pending promise (prevents memory leaks). } else { @@ -86,6 +88,7 @@ class SocksClient extends events_1.EventEmitter { * @returns { Promise } */ static createConnectionChain(options, callback) { + // eslint-disable-next-line no-async-promise-executor return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { // Validate SocksClientChainOptions try { @@ -94,19 +97,19 @@ class SocksClient extends events_1.EventEmitter { catch (err) { if (typeof callback === 'function') { callback(err); + // eslint-disable-next-line @typescript-eslint/no-explicit-any return resolve(err); // Resolves pending promise (prevents memory leaks). } else { return reject(err); } } - let sock; // Shuffle proxies if (options.randomizeChain) { (0, util_1.shuffleArray)(options.proxies); } try { - // tslint:disable-next-line:no-increment-decrement + let sock; for (let i = 0; i < options.proxies.length; i++) { const nextProxy = options.proxies[i]; // If we've reached the last proxy in the chain, the destination is the actual destination, otherwise it's the next proxy. @@ -122,12 +125,10 @@ class SocksClient extends events_1.EventEmitter { command: 'connect', proxy: nextProxy, destination: nextDestination, - // Initial connection ignores this as sock is undefined. Subsequent connections re-use the first proxy socket to form a chain. + existing_socket: sock, }); // If sock is undefined, assign it here. - if (!sock) { - sock = result.socket; - } + sock = sock || result.socket; } if (typeof callback === 'function') { callback(null, { socket: sock }); @@ -140,6 +141,7 @@ class SocksClient extends events_1.EventEmitter { catch (err) { if (typeof callback === 'function') { callback(err); + // eslint-disable-next-line @typescript-eslint/no-explicit-any resolve(err); // Resolves pending promise (prevents memory leaks). } else { @@ -159,11 +161,11 @@ class SocksClient extends events_1.EventEmitter { // IPv4/IPv6/Hostname if (net.isIPv4(options.remoteHost.host)) { buff.writeUInt8(constants_1.Socks5HostType.IPv4); - buff.writeUInt32BE(ip.toLong(options.remoteHost.host)); + buff.writeUInt32BE((0, helpers_1.ipv4ToInt32)(options.remoteHost.host)); } else if (net.isIPv6(options.remoteHost.host)) { buff.writeUInt8(constants_1.Socks5HostType.IPv6); - buff.writeBuffer(ip.toBuffer(options.remoteHost.host)); + buff.writeBuffer((0, helpers_1.ipToBuffer)(options.remoteHost.host)); } else { buff.writeUInt8(constants_1.Socks5HostType.Hostname); @@ -187,10 +189,10 @@ class SocksClient extends events_1.EventEmitter { const hostType = buff.readUInt8(); let remoteHost; if (hostType === constants_1.Socks5HostType.IPv4) { - remoteHost = ip.fromLong(buff.readUInt32BE()); + remoteHost = (0, helpers_1.int32ToIpv4)(buff.readUInt32BE()); } else if (hostType === constants_1.Socks5HostType.IPv6) { - remoteHost = ip.toString(buff.readBuffer(16)); + remoteHost = ip_address_1.Address6.fromByteArray(Array.from(buff.readBuffer(16))).canonicalForm(); } else { remoteHost = buff.readString(buff.readUInt8()); @@ -399,7 +401,7 @@ class SocksClient extends events_1.EventEmitter { buff.writeUInt16BE(this.options.destination.port); // Socks 4 (IPv4) if (net.isIPv4(this.options.destination.host)) { - buff.writeBuffer(ip.toBuffer(this.options.destination.host)); + buff.writeBuffer((0, helpers_1.ipToBuffer)(this.options.destination.host)); buff.writeStringNT(userId); // Socks 4a (hostname) } @@ -431,7 +433,7 @@ class SocksClient extends events_1.EventEmitter { buff.readOffset = 2; const remoteHost = { port: buff.readUInt16BE(), - host: ip.fromLong(buff.readUInt32BE()), + host: (0, helpers_1.int32ToIpv4)(buff.readUInt32BE()), }; // If host is 0.0.0.0, set to proxy host. if (remoteHost.host === '0.0.0.0') { @@ -462,7 +464,7 @@ class SocksClient extends events_1.EventEmitter { buff.readOffset = 2; const remoteHost = { port: buff.readUInt16BE(), - host: ip.fromLong(buff.readUInt32BE()), + host: (0, helpers_1.int32ToIpv4)(buff.readUInt32BE()), }; this.setState(constants_1.SocksClientState.Established); this.removeInternalSocketHandlers(); @@ -608,11 +610,11 @@ class SocksClient extends events_1.EventEmitter { // ipv4, ipv6, domain? if (net.isIPv4(this.options.destination.host)) { buff.writeUInt8(constants_1.Socks5HostType.IPv4); - buff.writeBuffer(ip.toBuffer(this.options.destination.host)); + buff.writeBuffer((0, helpers_1.ipToBuffer)(this.options.destination.host)); } else if (net.isIPv6(this.options.destination.host)) { buff.writeUInt8(constants_1.Socks5HostType.IPv6); - buff.writeBuffer(ip.toBuffer(this.options.destination.host)); + buff.writeBuffer((0, helpers_1.ipToBuffer)(this.options.destination.host)); } else { buff.writeUInt8(constants_1.Socks5HostType.Hostname); @@ -650,7 +652,7 @@ class SocksClient extends events_1.EventEmitter { } buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(4)); remoteHost = { - host: ip.fromLong(buff.readUInt32BE()), + host: (0, helpers_1.int32ToIpv4)(buff.readUInt32BE()), port: buff.readUInt16BE(), }; // If given host is 0.0.0.0, assume remote proxy ip instead. @@ -683,7 +685,7 @@ class SocksClient extends events_1.EventEmitter { } buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(4)); remoteHost = { - host: ip.toString(buff.readBuffer(16)), + host: ip_address_1.Address6.fromByteArray(Array.from(buff.readBuffer(16))).canonicalForm(), port: buff.readUInt16BE(), }; } @@ -741,7 +743,7 @@ class SocksClient extends events_1.EventEmitter { } buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(4)); remoteHost = { - host: ip.fromLong(buff.readUInt32BE()), + host: (0, helpers_1.int32ToIpv4)(buff.readUInt32BE()), port: buff.readUInt16BE(), }; // If given host is 0.0.0.0, assume remote proxy ip instead. @@ -774,7 +776,7 @@ class SocksClient extends events_1.EventEmitter { } buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(4)); remoteHost = { - host: ip.toString(buff.readBuffer(16)), + host: ip_address_1.Address6.fromByteArray(Array.from(buff.readBuffer(16))).canonicalForm(), port: buff.readUInt16BE(), }; } diff --git a/food-ordering-app/server/node_modules/socks/build/client/socksclient.js.map b/food-ordering-app/server/node_modules/socks/build/client/socksclient.js.map index 15d0b565a..0cae2aad2 100644 --- a/food-ordering-app/server/node_modules/socks/build/client/socksclient.js.map +++ b/food-ordering-app/server/node_modules/socks/build/client/socksclient.js.map @@ -1 +1 @@ -{"version":3,"file":"socksclient.js","sourceRoot":"","sources":["../../src/client/socksclient.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"socksclient.js","sourceRoot":"","sources":["../../src/client/socksclient.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/socks/build/common/constants.js b/food-ordering-app/server/node_modules/socks/build/common/constants.js index 3c9ff90ac..aaf16418f 100644 --- a/food-ordering-app/server/node_modules/socks/build/common/constants.js +++ b/food-ordering-app/server/node_modules/socks/build/common/constants.js @@ -38,10 +38,10 @@ const SOCKS_INCOMING_PACKET_SIZES = { Socks5InitialHandshakeResponse: 2, Socks5UserPassAuthenticationResponse: 2, // Command response + incoming connection (bind) - Socks5ResponseHeader: 5, - Socks5ResponseIPv4: 10, - Socks5ResponseIPv6: 22, - Socks5ResponseHostname: (hostNameLength) => hostNameLength + 7, + Socks5ResponseHeader: 5, // We need at least 5 to read the hostname length, then we wait for the address+port information. + Socks5ResponseIPv4: 10, // 4 header + 4 ip + 2 port + Socks5ResponseIPv6: 22, // 4 header + 16 ip + 2 port + Socks5ResponseHostname: (hostNameLength) => hostNameLength + 7, // 4 header + 1 host length + host + 2 port // Command response + incoming connection (bind) Socks4Response: 8, // 2 header + 2 port + 4 ip }; @@ -51,23 +51,20 @@ var SocksCommand; SocksCommand[SocksCommand["connect"] = 1] = "connect"; SocksCommand[SocksCommand["bind"] = 2] = "bind"; SocksCommand[SocksCommand["associate"] = 3] = "associate"; -})(SocksCommand || (SocksCommand = {})); -exports.SocksCommand = SocksCommand; +})(SocksCommand || (exports.SocksCommand = SocksCommand = {})); var Socks4Response; (function (Socks4Response) { Socks4Response[Socks4Response["Granted"] = 90] = "Granted"; Socks4Response[Socks4Response["Failed"] = 91] = "Failed"; Socks4Response[Socks4Response["Rejected"] = 92] = "Rejected"; Socks4Response[Socks4Response["RejectedIdent"] = 93] = "RejectedIdent"; -})(Socks4Response || (Socks4Response = {})); -exports.Socks4Response = Socks4Response; +})(Socks4Response || (exports.Socks4Response = Socks4Response = {})); var Socks5Auth; (function (Socks5Auth) { Socks5Auth[Socks5Auth["NoAuth"] = 0] = "NoAuth"; Socks5Auth[Socks5Auth["GSSApi"] = 1] = "GSSApi"; Socks5Auth[Socks5Auth["UserPass"] = 2] = "UserPass"; -})(Socks5Auth || (Socks5Auth = {})); -exports.Socks5Auth = Socks5Auth; +})(Socks5Auth || (exports.Socks5Auth = Socks5Auth = {})); const SOCKS5_CUSTOM_AUTH_START = 0x80; exports.SOCKS5_CUSTOM_AUTH_START = SOCKS5_CUSTOM_AUTH_START; const SOCKS5_CUSTOM_AUTH_END = 0xfe; @@ -85,15 +82,13 @@ var Socks5Response; Socks5Response[Socks5Response["TTLExpired"] = 6] = "TTLExpired"; Socks5Response[Socks5Response["CommandNotSupported"] = 7] = "CommandNotSupported"; Socks5Response[Socks5Response["AddressNotSupported"] = 8] = "AddressNotSupported"; -})(Socks5Response || (Socks5Response = {})); -exports.Socks5Response = Socks5Response; +})(Socks5Response || (exports.Socks5Response = Socks5Response = {})); var Socks5HostType; (function (Socks5HostType) { Socks5HostType[Socks5HostType["IPv4"] = 1] = "IPv4"; Socks5HostType[Socks5HostType["Hostname"] = 3] = "Hostname"; Socks5HostType[Socks5HostType["IPv6"] = 4] = "IPv6"; -})(Socks5HostType || (Socks5HostType = {})); -exports.Socks5HostType = Socks5HostType; +})(Socks5HostType || (exports.Socks5HostType = Socks5HostType = {})); var SocksClientState; (function (SocksClientState) { SocksClientState[SocksClientState["Created"] = 0] = "Created"; @@ -109,6 +104,5 @@ var SocksClientState; SocksClientState[SocksClientState["Established"] = 10] = "Established"; SocksClientState[SocksClientState["Disconnected"] = 11] = "Disconnected"; SocksClientState[SocksClientState["Error"] = 99] = "Error"; -})(SocksClientState || (SocksClientState = {})); -exports.SocksClientState = SocksClientState; +})(SocksClientState || (exports.SocksClientState = SocksClientState = {})); //# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/socks/build/common/constants.js.map b/food-ordering-app/server/node_modules/socks/build/common/constants.js.map index c1e070dea..969af8348 100644 --- a/food-ordering-app/server/node_modules/socks/build/common/constants.js.map +++ b/food-ordering-app/server/node_modules/socks/build/common/constants.js.map @@ -1 +1 @@ -{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/common/constants.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/common/constants.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/socks/build/common/helpers.js b/food-ordering-app/server/node_modules/socks/build/common/helpers.js index f84db8f67..f0fcaf043 100644 --- a/food-ordering-app/server/node_modules/socks/build/common/helpers.js +++ b/food-ordering-app/server/node_modules/socks/build/common/helpers.js @@ -1,9 +1,11 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.validateSocksClientChainOptions = exports.validateSocksClientOptions = void 0; +exports.ipToBuffer = exports.int32ToIpv4 = exports.ipv4ToInt32 = exports.validateSocksClientChainOptions = exports.validateSocksClientOptions = void 0; const util_1 = require("./util"); const constants_1 = require("./constants"); const stream = require("stream"); +const ip_address_1 = require("ip-address"); +const net = require("net"); /** * Validates the provided SocksClientOptions * @param options { SocksClientOptions } @@ -102,6 +104,7 @@ function validateCustomProxyAuth(proxy, options) { function isValidSocksRemoteHost(remoteHost) { return (remoteHost && typeof remoteHost.host === 'string' && + Buffer.byteLength(remoteHost.host) < 256 && typeof remoteHost.port === 'number' && remoteHost.port >= 0 && remoteHost.port <= 65535); @@ -125,4 +128,40 @@ function isValidSocksProxy(proxy) { function isValidTimeoutValue(value) { return typeof value === 'number' && value > 0; } +function ipv4ToInt32(ip) { + const address = new ip_address_1.Address4(ip); + // Convert the IPv4 address parts to an integer + return address.toArray().reduce((acc, part) => (acc << 8) + part, 0) >>> 0; +} +exports.ipv4ToInt32 = ipv4ToInt32; +function int32ToIpv4(int32) { + // Extract each byte (octet) from the 32-bit integer + const octet1 = (int32 >>> 24) & 0xff; + const octet2 = (int32 >>> 16) & 0xff; + const octet3 = (int32 >>> 8) & 0xff; + const octet4 = int32 & 0xff; + // Combine the octets into a string in IPv4 format + return [octet1, octet2, octet3, octet4].join('.'); +} +exports.int32ToIpv4 = int32ToIpv4; +function ipToBuffer(ip) { + if (net.isIPv4(ip)) { + // Handle IPv4 addresses + const address = new ip_address_1.Address4(ip); + return Buffer.from(address.toArray()); + } + else if (net.isIPv6(ip)) { + // Handle IPv6 addresses + const address = new ip_address_1.Address6(ip); + return Buffer.from(address + .canonicalForm() + .split(':') + .map((segment) => segment.padStart(4, '0')) + .join(''), 'hex'); + } + else { + throw new Error('Invalid IP address format'); + } +} +exports.ipToBuffer = ipToBuffer; //# sourceMappingURL=helpers.js.map \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/socks/build/common/helpers.js.map b/food-ordering-app/server/node_modules/socks/build/common/helpers.js.map index dae124861..830152f5c 100644 --- a/food-ordering-app/server/node_modules/socks/build/common/helpers.js.map +++ b/food-ordering-app/server/node_modules/socks/build/common/helpers.js.map @@ -1 +1 @@ -{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/common/helpers.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/common/helpers.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/socks/build/common/receivebuffer.js.map b/food-ordering-app/server/node_modules/socks/build/common/receivebuffer.js.map index 144edb0b9..ad86c8c81 100644 --- a/food-ordering-app/server/node_modules/socks/build/common/receivebuffer.js.map +++ b/food-ordering-app/server/node_modules/socks/build/common/receivebuffer.js.map @@ -1 +1 @@ -{"version":3,"file":"receivebuffer.js","sourceRoot":"","sources":["../../src/common/receivebuffer.ts"],"names":[],"mappings":";;;AAAA,MAAM,aAAa;IAKjB,YAAY,OAAe,IAAI;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YAC1B,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;SACH;QAED,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACnD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;YACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAC9B,IAAI,CAAC,GAAG,CACN,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EACtC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CACjC,CACF,CAAC;YACF,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACvB;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,CAAC,MAAc;QACjB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;YACxB,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;SACH;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,GAAG,CAAC,MAAc;QAChB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;YACxB,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;SACH;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC;QAEtB,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAEO,sCAAa"} \ No newline at end of file +{"version":3,"file":"receivebuffer.js","sourceRoot":"","sources":["../../src/common/receivebuffer.ts"],"names":[],"mappings":";;;AAAA,MAAM,aAAa;IAKjB,YAAY,IAAI,GAAG,IAAI;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;YACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAC9B,IAAI,CAAC,GAAG,CACN,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EACtC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CACjC,CACF,CAAC;YACF,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,CAAC,MAAc;QACjB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,GAAG,CAAC,MAAc;QAChB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC;QAEtB,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAEO,sCAAa"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/socks/build/common/util.js b/food-ordering-app/server/node_modules/socks/build/common/util.js index 283314a0d..f66b72e43 100644 --- a/food-ordering-app/server/node_modules/socks/build/common/util.js +++ b/food-ordering-app/server/node_modules/socks/build/common/util.js @@ -16,7 +16,6 @@ exports.SocksClientError = SocksClientError; * @param array The array to shuffle. */ function shuffleArray(array) { - // tslint:disable-next-line:no-increment-decrement for (let i = array.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [array[i], array[j]] = [array[j], array[i]]; diff --git a/food-ordering-app/server/node_modules/socks/build/common/util.js.map b/food-ordering-app/server/node_modules/socks/build/common/util.js.map index 8d94a2ace..21281b235 100644 --- a/food-ordering-app/server/node_modules/socks/build/common/util.js.map +++ b/food-ordering-app/server/node_modules/socks/build/common/util.js.map @@ -1 +1 @@ -{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/common/util.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACH,MAAM,gBAAiB,SAAQ,KAAK;IAClC,YACE,OAAe,EACR,OAAqD;QAE5D,KAAK,CAAC,OAAO,CAAC,CAAC;QAFR,YAAO,GAAP,OAAO,CAA8C;IAG9D,CAAC;CACF;AAwBuB,4CAAgB;AAtBxC;;;GAGG;AACH,SAAS,YAAY,CAAC,KAAY;IAChC,kDAAkD;IAClD,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACzC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KAC7C;AACH,CAAC;AAYyC,oCAAY"} \ No newline at end of file +{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/common/util.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACH,MAAM,gBAAiB,SAAQ,KAAK;IAClC,YACE,OAAe,EACR,OAAqD;QAE5D,KAAK,CAAC,OAAO,CAAC,CAAC;QAFR,YAAO,GAAP,OAAO,CAA8C;IAG9D,CAAC;CACF;AAaO,4CAAgB;AAXxB;;;GAGG;AACH,SAAS,YAAY,CAAC,KAAgB;IACpC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAEyB,oCAAY"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/socks/build/index.js b/food-ordering-app/server/node_modules/socks/build/index.js index 17b6f42df..05fbb1d94 100644 --- a/food-ordering-app/server/node_modules/socks/build/index.js +++ b/food-ordering-app/server/node_modules/socks/build/index.js @@ -1,7 +1,11 @@ "use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; diff --git a/food-ordering-app/server/node_modules/socks/build/index.js.map b/food-ordering-app/server/node_modules/socks/build/index.js.map index ff654a08e..0e2bcb27b 100644 --- a/food-ordering-app/server/node_modules/socks/build/index.js.map +++ b/food-ordering-app/server/node_modules/socks/build/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uDAAqC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC"} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/socks/package.json b/food-ordering-app/server/node_modules/socks/package.json index 61c3f1dcf..a7a2a2019 100644 --- a/food-ordering-app/server/node_modules/socks/package.json +++ b/food-ordering-app/server/node_modules/socks/package.json @@ -1,7 +1,7 @@ { "name": "socks", "private": false, - "version": "2.6.2", + "version": "2.8.7", "description": "Fully featured SOCKS proxy client supporting SOCKSv4, SOCKSv4a, and SOCKSv5. Includes Bind and Associate functionality.", "main": "build/index.js", "typings": "typings/index.d.ts", @@ -23,7 +23,7 @@ "socks5" ], "engines": { - "node": ">= 10.13.0", + "node": ">= 10.0.0", "npm": ">= 3.0.0" }, "author": "Josh Glazebrook", @@ -33,51 +33,26 @@ "license": "MIT", "readmeFilename": "README.md", "devDependencies": { - "@types/ip": "1.1.0", - "@types/mocha": "^9.1.0", - "@types/node": "^17.0.15", - "coveralls": "^3.1.1", - "mocha": "^9.2.0", - "nyc": "15.1.0", - "prettier": "^2.5.1", - "socks5-server": "^0.1.1", - "ts-node": "^10.4.0", - "typescript": "^4.5.5" + "@types/mocha": "^10.0.6", + "@types/node": "^20.11.17", + "@typescript-eslint/eslint-plugin": "^6.21.0", + "@typescript-eslint/parser": "^6.21.0", + "eslint": "^8.20.0", + "mocha": "^10.0.0", + "prettier": "^3.2.5", + "ts-node": "^10.9.1", + "typescript": "^5.3.3" }, "dependencies": { - "ip": "^1.1.5", + "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" }, "scripts": { "prepublish": "npm install -g typescript && npm run build", "test": "NODE_ENV=test mocha --recursive --require ts-node/register test/**/*.ts", "prettier": "prettier --write ./src/**/*.ts --config .prettierrc.yaml", - "coverage": "NODE_ENV=test nyc npm test", - "coveralls": "NODE_ENV=test nyc npm test && nyc report --reporter=text-lcov | coveralls", - "lint": "tslint --project tsconfig.json 'src/**/*.ts'", - "build": "rm -rf build typings && prettier --write ./src/**/*.ts --config .prettierrc.yaml && tsc -p ." - }, - "nyc": { - "extension": [ - ".ts", - ".tsx" - ], - "include": [ - "src/*.ts", - "src/**/*.ts" - ], - "exclude": [ - "**.*.d.ts", - "node_modules", - "typings" - ], - "require": [ - "ts-node/register" - ], - "reporter": [ - "json", - "html" - ], - "all": true + "lint": "eslint 'src/**/*.ts'", + "build": "rm -rf build typings && prettier --write ./src/**/*.ts --config .prettierrc.yaml && tsc -p .", + "build-raw": "rm -rf build typings && tsc -p ." } } diff --git a/food-ordering-app/server/node_modules/socks/typings/client/socksclient.d.ts b/food-ordering-app/server/node_modules/socks/typings/client/socksclient.d.ts index d8ce1b965..b886d9571 100644 --- a/food-ordering-app/server/node_modules/socks/typings/client/socksclient.d.ts +++ b/food-ordering-app/server/node_modules/socks/typings/client/socksclient.d.ts @@ -1,4 +1,6 @@ /// +/// +/// import { EventEmitter } from 'events'; import { SocksClientOptions, SocksClientChainOptions, SocksRemoteHost, SocksProxy, SocksClientBoundEvent, SocksClientEstablishedEvent, SocksUDPFrameDetails } from '../common/constants'; import { SocksClientError } from '../common/util'; @@ -7,11 +9,11 @@ declare interface SocksClient { on(event: 'error', listener: (err: SocksClientError) => void): this; on(event: 'bound', listener: (info: SocksClientBoundEvent) => void): this; on(event: 'established', listener: (info: SocksClientEstablishedEvent) => void): this; - once(event: string, listener: (...args: any[]) => void): this; + once(event: string, listener: (...args: unknown[]) => void): this; once(event: 'error', listener: (err: SocksClientError) => void): this; once(event: 'bound', listener: (info: SocksClientBoundEvent) => void): this; once(event: 'established', listener: (info: SocksClientEstablishedEvent) => void): this; - emit(event: string | symbol, ...args: any[]): boolean; + emit(event: string | symbol, ...args: unknown[]): boolean; emit(event: 'error', err: SocksClientError): boolean; emit(event: 'bound', info: SocksClientBoundEvent): boolean; emit(event: 'established', info: SocksClientEstablishedEvent): boolean; @@ -36,7 +38,7 @@ declare class SocksClient extends EventEmitter implements SocksClient { * @param callback { Function } An optional callback function. * @returns { Promise } */ - static createConnection(options: SocksClientOptions, callback?: Function): Promise; + static createConnection(options: SocksClientOptions, callback?: (error: Error | null, info?: SocksClientEstablishedEvent) => void): Promise; /** * Creates a new SOCKS connection chain to a destination host through 2 or more SOCKS proxies. * @@ -46,7 +48,7 @@ declare class SocksClient extends EventEmitter implements SocksClient { * @param callback { Function } An optional callback function. * @returns { Promise } */ - static createConnectionChain(options: SocksClientChainOptions, callback?: Function): Promise; + static createConnectionChain(options: SocksClientChainOptions, callback?: (error: Error | null, socket?: SocksClientEstablishedEvent) => void): Promise; /** * Creates a SOCKS UDP Frame. * @param options diff --git a/food-ordering-app/server/node_modules/socks/typings/common/constants.d.ts b/food-ordering-app/server/node_modules/socks/typings/common/constants.d.ts index 664795cb1..475dee35c 100644 --- a/food-ordering-app/server/node_modules/socks/typings/common/constants.d.ts +++ b/food-ordering-app/server/node_modules/socks/typings/common/constants.d.ts @@ -1,9 +1,10 @@ /// +/// +/// import { Duplex } from 'stream'; import { Socket, SocketConnectOpts } from 'net'; -import { RequireOnlyOne } from './util'; declare const DEFAULT_TIMEOUT = 30000; -declare type SocksProxyType = 4 | 5; +type SocksProxyType = 4 | 5; declare const ERRORS: { InvalidSocksCommand: string; InvalidSocksCommandForOperation: string; @@ -42,7 +43,7 @@ declare const SOCKS_INCOMING_PACKET_SIZES: { Socks5ResponseHostname: (hostNameLength: number) => number; Socks4Response: number; }; -declare type SocksCommandOption = 'connect' | 'bind' | 'associate'; +type SocksCommandOption = 'connect' | 'bind' | 'associate'; declare enum SocksCommand { connect = 1, bind = 2, @@ -96,7 +97,7 @@ declare enum SocksClientState { /** * Represents a SocksProxy */ -declare type SocksProxy = RequireOnlyOne<{ +interface SocksProxy { ipaddress?: string; host?: string; port: number; @@ -107,7 +108,7 @@ declare type SocksProxy = RequireOnlyOne<{ custom_auth_request_handler?: () => Promise; custom_auth_response_size?: number; custom_auth_response_handler?: (data: Buffer) => Promise; -}, 'host' | 'ipaddress'>; +} /** * Represents a remote host */ @@ -141,7 +142,7 @@ interface SocksClientEstablishedEvent { socket: Socket; remoteHost?: SocksRemoteHost; } -declare type SocksClientBoundEvent = SocksClientEstablishedEvent; +type SocksClientBoundEvent = SocksClientEstablishedEvent; interface SocksUDPFrameDetails { frameNumber?: number; remoteHost: SocksRemoteHost; diff --git a/food-ordering-app/server/node_modules/socks/typings/common/helpers.d.ts b/food-ordering-app/server/node_modules/socks/typings/common/helpers.d.ts index 8c3a10697..5bad9fe11 100644 --- a/food-ordering-app/server/node_modules/socks/typings/common/helpers.d.ts +++ b/food-ordering-app/server/node_modules/socks/typings/common/helpers.d.ts @@ -1,3 +1,4 @@ +/// import { SocksClientOptions, SocksClientChainOptions } from '../client/socksclient'; /** * Validates the provided SocksClientOptions @@ -11,3 +12,6 @@ declare function validateSocksClientOptions(options: SocksClientOptions, accepte */ declare function validateSocksClientChainOptions(options: SocksClientChainOptions): void; export { validateSocksClientOptions, validateSocksClientChainOptions }; +export declare function ipv4ToInt32(ip: string): number; +export declare function int32ToIpv4(int32: number): string; +export declare function ipToBuffer(ip: string): Buffer; diff --git a/food-ordering-app/server/node_modules/socks/typings/common/util.d.ts b/food-ordering-app/server/node_modules/socks/typings/common/util.d.ts index 29c539ada..861202627 100644 --- a/food-ordering-app/server/node_modules/socks/typings/common/util.d.ts +++ b/food-ordering-app/server/node_modules/socks/typings/common/util.d.ts @@ -10,8 +10,5 @@ declare class SocksClientError extends Error { * Shuffles a given array. * @param array The array to shuffle. */ -declare function shuffleArray(array: any[]): void; -declare type RequireOnlyOne = Pick> & { - [K in Keys]?: Required> & Partial, undefined>>; -}[Keys]; -export { RequireOnlyOne, SocksClientError, shuffleArray }; +declare function shuffleArray(array: unknown[]): void; +export { SocksClientError, shuffleArray }; diff --git a/food-ordering-app/server/node_modules/statuses/HISTORY.md b/food-ordering-app/server/node_modules/statuses/HISTORY.md index fa4556ef2..dc549b821 100644 --- a/food-ordering-app/server/node_modules/statuses/HISTORY.md +++ b/food-ordering-app/server/node_modules/statuses/HISTORY.md @@ -1,3 +1,8 @@ +2.0.2 / 2025-06-06 +================== + + * Migrate to `String.prototype.slice()` + 2.0.1 / 2021-01-03 ================== diff --git a/food-ordering-app/server/node_modules/statuses/README.md b/food-ordering-app/server/node_modules/statuses/README.md index 57967e6e6..89d542f6a 100644 --- a/food-ordering-app/server/node_modules/statuses/README.md +++ b/food-ordering-app/server/node_modules/statuses/README.md @@ -5,6 +5,7 @@ [![Node.js Version][node-version-image]][node-version-url] [![Build Status][ci-image]][ci-url] [![Test Coverage][coveralls-image]][coveralls-url] +[![OpenSSF Scorecard Badge][ossf-scorecard-badge]][ossf-scorecard-visualizer] HTTP status utility for node. @@ -134,3 +135,5 @@ status.retry[503] // => true [npm-downloads-image]: https://badgen.net/npm/dm/statuses [npm-url]: https://npmjs.org/package/statuses [npm-version-image]: https://badgen.net/npm/v/statuses +[ossf-scorecard-badge]: https://api.securityscorecards.dev/projects/github.com/jshttp/statuses/badge +[ossf-scorecard-visualizer]: https://kooltheba.github.io/openssf-scorecard-api-visualizer/#/projects/github.com/jshttp/statuses diff --git a/food-ordering-app/server/node_modules/statuses/package.json b/food-ordering-app/server/node_modules/statuses/package.json index 8c3e719b5..b5d016edd 100644 --- a/food-ordering-app/server/node_modules/statuses/package.json +++ b/food-ordering-app/server/node_modules/statuses/package.json @@ -1,7 +1,7 @@ { "name": "statuses", "description": "HTTP status utility", - "version": "2.0.1", + "version": "2.0.2", "contributors": [ "Douglas Christopher Wilson ", "Jonathan Ong (http://jongleberry.com)" @@ -20,17 +20,17 @@ "LICENSE" ], "devDependencies": { - "csv-parse": "4.14.2", - "eslint": "7.17.0", + "csv-parse": "4.16.3", + "eslint": "7.19.0", "eslint-config-standard": "14.1.1", - "eslint-plugin-import": "2.22.1", + "eslint-plugin-import": "2.31.0", "eslint-plugin-markdown": "1.0.2", "eslint-plugin-node": "11.1.0", - "eslint-plugin-promise": "4.2.1", + "eslint-plugin-promise": "4.3.1", "eslint-plugin-standard": "4.1.0", - "mocha": "8.2.1", + "mocha": "8.4.0", "nyc": "15.1.0", - "raw-body": "2.4.1", + "raw-body": "2.5.2", "stream-to-array": "2.3.0" }, "engines": { diff --git a/food-ordering-app/server/node_modules/stripe/CHANGELOG.md b/food-ordering-app/server/node_modules/stripe/CHANGELOG.md index b033eceb7..292005541 100644 --- a/food-ordering-app/server/node_modules/stripe/CHANGELOG.md +++ b/food-ordering-app/server/node_modules/stripe/CHANGELOG.md @@ -1,5 +1,36 @@ # Changelog +## 9.16.0 - 2022-07-26 +* [#1492](https://github.com/stripe/stripe-node/pull/1492) API Updates + * Add support for new value `exempted` on enums `Charge.payment_method_details.card.three_d_secure.result` and `SetupAttempt.payment_method_details.card.three_d_secure.result` + * Add support for `customer_balance` on `Checkout.Session.payment_method_options` and `CheckoutSessionCreateParams.payment_method_options` + * Add support for new value `customer_balance` on enum `CheckoutSessionCreateParams.payment_method_types[]` + * Add support for new values `en-CA` and `fr-CA` on enums `OrderCreateParams.payment.settings.payment_method_options.klarna.preferred_locale`, `OrderUpdateParams.payment.settings.payment_method_options.klarna.preferred_locale`, `PaymentIntentConfirmParams.payment_method_options.klarna.preferred_locale`, `PaymentIntentCreateParams.payment_method_options.klarna.preferred_locale`, and `PaymentIntentUpdateParams.payment_method_options.klarna.preferred_locale` + +## 9.15.0 - 2022-07-25 +* [#1486](https://github.com/stripe/stripe-node/pull/1486) API Updates + * Add support for `installments` on `Checkout.Session.payment_method_options.card`, `CheckoutSessionCreateParams.payment_method_options.card`, `Invoice.payment_settings.payment_method_options.card`, `InvoiceCreateParams.payment_settings.payment_method_options.card`, and `InvoiceUpdateParams.payment_settings.payment_method_options.card` + * Add support for `default_currency` and `invoice_credit_balance` on `Customer` + * Add support for `currency` on `InvoiceCreateParams` + * Add support for `default_mandate` on `Invoice.payment_settings`, `InvoiceCreateParams.payment_settings`, and `InvoiceUpdateParams.payment_settings` + * Add support for `mandate` on `InvoicePayParams` + * Add support for `product_data` on `OrderCreateParams.line_items[]` and `OrderUpdateParams.line_items[]` + + +## 9.14.0 - 2022-07-18 +* [#1477](https://github.com/stripe/stripe-node/pull/1477) API Updates + * Add support for `blik_payments` on `Account.capabilities`, `AccountCreateParams.capabilities`, and `AccountUpdateParams.capabilities` + * Add support for `blik` on `Charge.payment_method_details`, `Mandate.payment_method_details`, `PaymentIntent.payment_method_options`, `PaymentIntentConfirmParams.payment_method_data`, `PaymentIntentConfirmParams.payment_method_options`, `PaymentIntentCreateParams.payment_method_data`, `PaymentIntentCreateParams.payment_method_options`, `PaymentIntentUpdateParams.payment_method_data`, `PaymentIntentUpdateParams.payment_method_options`, `PaymentMethodCreateParams`, `PaymentMethodUpdateParams`, `PaymentMethod`, `SetupAttempt.payment_method_details`, `SetupIntent.payment_method_options`, `SetupIntentConfirmParams.payment_method_data`, `SetupIntentConfirmParams.payment_method_options`, `SetupIntentCreateParams.payment_method_data`, `SetupIntentCreateParams.payment_method_options`, `SetupIntentUpdateParams.payment_method_data`, and `SetupIntentUpdateParams.payment_method_options` + * Change type of `Checkout.Session.consent_collection.promotions`, `CheckoutSessionCreateParams.consent_collection.promotions`, `PaymentLink.consent_collection.promotions`, and `PaymentLinkCreateParams.consent_collection.promotions` from `literal('auto')` to `enum('auto'|'none')` + * Add support for new value `blik` on enum `CheckoutSessionCreateParams.payment_method_types[]` + * Add support for new value `blik` on enums `CustomerListPaymentMethodsParams.type` and `PaymentMethodListParams.type` + * Add support for new value `blik` on enums `PaymentIntentConfirmParams.payment_method_data.type`, `PaymentIntentCreateParams.payment_method_data.type`, `PaymentIntentUpdateParams.payment_method_data.type`, `SetupIntentConfirmParams.payment_method_data.type`, `SetupIntentCreateParams.payment_method_data.type`, and `SetupIntentUpdateParams.payment_method_data.type` + * Add support for new value `blik` on enums `PaymentLink.payment_method_types[]`, `PaymentLinkCreateParams.payment_method_types[]`, and `PaymentLinkUpdateParams.payment_method_types[]` + * Add support for new value `blik` on enum `PaymentMethodCreateParams.type` + * Add support for new value `blik` on enum `PaymentMethod.type` +* [#1476](https://github.com/stripe/stripe-node/pull/1476) fix: Include trailing slash when passing empty query parameters. +* [#1475](https://github.com/stripe/stripe-node/pull/1475) Move @types/node to devDependencies + ## 9.13.0 - 2022-07-12 * [#1473](https://github.com/stripe/stripe-node/pull/1473) API Updates * Add support for `customer_details` on `CheckoutSessionListParams` diff --git a/food-ordering-app/server/node_modules/stripe/VERSION b/food-ordering-app/server/node_modules/stripe/VERSION index 69c3ec653..fb9e7ba20 100644 --- a/food-ordering-app/server/node_modules/stripe/VERSION +++ b/food-ordering-app/server/node_modules/stripe/VERSION @@ -1 +1 @@ -9.13.0 +9.16.0 diff --git a/food-ordering-app/server/node_modules/stripe/lib/StripeResource.js b/food-ordering-app/server/node_modules/stripe/lib/StripeResource.js index cf80b2842..f56bb9bc7 100644 --- a/food-ordering-app/server/node_modules/stripe/lib/StripeResource.js +++ b/food-ordering-app/server/node_modules/stripe/lib/StripeResource.js @@ -69,18 +69,34 @@ StripeResource.prototype = { validateRequest: null, createFullPath(commandPath, urlData) { - return this._joinUrlParts([ - this.basePath(urlData), - this.path(urlData), - typeof commandPath == 'function' ? commandPath(urlData) : commandPath, - ]); + const urlParts = [this.basePath(urlData), this.path(urlData)]; + + if (typeof commandPath === 'function') { + const computedCommandPath = commandPath(urlData); + // If we have no actual command path, we just omit it to avoid adding a + // trailing slash. This is important for top-level listing requests, which + // do not have a command path. + if (computedCommandPath) { + urlParts.push(computedCommandPath); + } + } else { + urlParts.push(commandPath); + } + + return this._joinUrlParts(urlParts); }, // Creates a relative resource path with symbols left in (unlike // createFullPath which takes some data to replace them with). For example it // might produce: /invoices/{id} createResourcePathWithSymbols(pathWithSymbols) { - return `/${this._joinUrlParts([this.resourcePath, pathWithSymbols || ''])}`; + // If there is no path beyond the resource path, we want to produce just + // / rather than //. + if (pathWithSymbols) { + return `/${this._joinUrlParts([this.resourcePath, pathWithSymbols])}`; + } else { + return `/${this.resourcePath}`; + } }, _joinUrlParts(parts) { @@ -88,11 +104,7 @@ StripeResource.prototype = { // path.join, which would do this as well. Unfortunately we need to do this // as the functions for creating paths are technically part of the public // interface and so we need to preserve backwards compatibility. - const path = parts.join('/').replace(/\/{2,}/g, '/'); - - // If the path ends with a /, we preserve the behavior of path.join and - // strip off the trailing / (eg. /v1/customers/ -> /v1/customers). - return path.endsWith('/') ? path.slice(0, -1) : path; + return parts.join('/').replace(/\/{2,}/g, '/'); }, // DEPRECATED: Here for backcompat in case users relied on this. diff --git a/food-ordering-app/server/node_modules/stripe/lib/makeRequest.js b/food-ordering-app/server/node_modules/stripe/lib/makeRequest.js index f7844e6a2..7ea0737b7 100644 --- a/food-ordering-app/server/node_modules/stripe/lib/makeRequest.js +++ b/food-ordering-app/server/node_modules/stripe/lib/makeRequest.js @@ -52,6 +52,7 @@ function getRequestOpts(self, requestArgs, spec, overrideData) { const requestPath = isUsingFullPath ? commandPath(urlData) : self.createFullPath(commandPath, urlData); + const headers = Object.assign(options.headers, spec.headers); if (spec.validator) { diff --git a/food-ordering-app/server/node_modules/stripe/lib/resources/Subscriptions.js b/food-ordering-app/server/node_modules/stripe/lib/resources/Subscriptions.js index e75753410..bd0dc644c 100644 --- a/food-ordering-app/server/node_modules/stripe/lib/resources/Subscriptions.js +++ b/food-ordering-app/server/node_modules/stripe/lib/resources/Subscriptions.js @@ -29,6 +29,11 @@ module.exports = StripeResource.extend({ methodType: 'list', }), + cancel: stripeMethod({ + method: 'DELETE', + path: '/{subscriptionExposedId}', + }), + del: stripeMethod({ method: 'DELETE', path: '/{subscriptionExposedId}', diff --git a/food-ordering-app/server/node_modules/stripe/package.json b/food-ordering-app/server/node_modules/stripe/package.json index aafa39393..fea8f9e86 100644 --- a/food-ordering-app/server/node_modules/stripe/package.json +++ b/food-ordering-app/server/node_modules/stripe/package.json @@ -1,6 +1,6 @@ { "name": "stripe", - "version": "9.13.0", + "version": "9.16.0", "description": "Stripe API wrapper", "keywords": [ "stripe", diff --git a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Accounts.d.ts b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Accounts.d.ts index 4334c9f63..fc902d151 100644 --- a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Accounts.d.ts +++ b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Accounts.d.ts @@ -191,6 +191,11 @@ declare module 'stripe' { */ bank_transfer_payments?: Capabilities.BankTransferPayments; + /** + * The status of the blik payments capability of the account, or whether the account can directly process blik charges. + */ + blik_payments?: Capabilities.BlikPayments; + /** * The status of the boleto payments capability of the account, or whether the account can directly process boleto charges. */ @@ -332,6 +337,8 @@ declare module 'stripe' { type BankTransferPayments = 'active' | 'inactive' | 'pending'; + type BlikPayments = 'active' | 'inactive' | 'pending'; + type BoletoPayments = 'active' | 'inactive' | 'pending'; type CardIssuing = 'active' | 'inactive' | 'pending'; @@ -1299,6 +1306,11 @@ declare module 'stripe' { */ bank_transfer_payments?: Capabilities.BankTransferPayments; + /** + * The blik_payments capability. + */ + blik_payments?: Capabilities.BlikPayments; + /** * The boleto_payments capability. */ @@ -1475,6 +1487,13 @@ declare module 'stripe' { requested?: boolean; } + interface BlikPayments { + /** + * Passing true requests the capability for the account, if it is not already requested. A requested capability may not immediately become active. Any requirements to activate the capability are returned in the `requirements` arrays. + */ + requested?: boolean; + } + interface BoletoPayments { /** * Passing true requests the capability for the account, if it is not already requested. A requested capability may not immediately become active. Any requirements to activate the capability are returned in the `requirements` arrays. @@ -1894,7 +1913,7 @@ declare module 'stripe' { interface ExternalAccount { /** - * The type of external account. + * The type of external account. Should be bank_account. */ object: string; @@ -2520,6 +2539,11 @@ declare module 'stripe' { */ bank_transfer_payments?: Capabilities.BankTransferPayments; + /** + * The blik_payments capability. + */ + blik_payments?: Capabilities.BlikPayments; + /** * The boleto_payments capability. */ @@ -2696,6 +2720,13 @@ declare module 'stripe' { requested?: boolean; } + interface BlikPayments { + /** + * Passing true requests the capability for the account, if it is not already requested. A requested capability may not immediately become active. Any requirements to activate the capability are returned in the `requirements` arrays. + */ + requested?: boolean; + } + interface BoletoPayments { /** * Passing true requests the capability for the account, if it is not already requested. A requested capability may not immediately become active. Any requirements to activate the capability are returned in the `requirements` arrays. diff --git a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Charges.d.ts b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Charges.d.ts index 2682e7581..226b2d000 100644 --- a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Charges.d.ts +++ b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Charges.d.ts @@ -405,6 +405,8 @@ declare module 'stripe' { bancontact?: PaymentMethodDetails.Bancontact; + blik?: PaymentMethodDetails.Blik; + boleto?: PaymentMethodDetails.Boleto; card?: PaymentMethodDetails.Card; @@ -672,6 +674,8 @@ declare module 'stripe' { type PreferredLanguage = 'de' | 'en' | 'fr' | 'nl'; } + interface Blik {} + interface Boleto { /** * The tax ID of the customer (CPF for individuals consumers or CNPJ for businesses consumers) @@ -845,6 +849,7 @@ declare module 'stripe' { type Result = | 'attempt_acknowledged' | 'authenticated' + | 'exempted' | 'failed' | 'not_supported' | 'processing_error'; @@ -1457,7 +1462,7 @@ declare module 'stripe' { /** * Preferred language of the Klarna authorization page that the customer is redirected to. - * Can be one of `de-AT`, `en-AT`, `nl-BE`, `fr-BE`, `en-BE`, `de-DE`, `en-DE`, `da-DK`, `en-DK`, `es-ES`, `en-ES`, `fi-FI`, `sv-FI`, `en-FI`, `en-GB`, `en-IE`, `it-IT`, `en-IT`, `nl-NL`, `en-NL`, `nb-NO`, `en-NO`, `sv-SE`, `en-SE`, `en-US`, `es-US`, `fr-FR`, `en-FR`, `en-AU`, or `en-NZ` + * Can be one of `de-AT`, `en-AT`, `nl-BE`, `fr-BE`, `en-BE`, `de-DE`, `en-DE`, `da-DK`, `en-DK`, `es-ES`, `en-ES`, `fi-FI`, `sv-FI`, `en-FI`, `en-GB`, `en-IE`, `it-IT`, `en-IT`, `nl-NL`, `en-NL`, `nb-NO`, `en-NO`, `sv-SE`, `en-SE`, `en-US`, `es-US`, `fr-FR`, `en-FR`, `en-AU`, `en-NZ`, `en-CA`, or `fr-CA` */ preferred_locale: string | null; } diff --git a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Checkout/Sessions.d.ts b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Checkout/Sessions.d.ts index 2c7e7fc4a..74386467b 100644 --- a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Checkout/Sessions.d.ts +++ b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Checkout/Sessions.d.ts @@ -296,7 +296,11 @@ declare module 'stripe' { * Session will determine whether to display an option to opt into promotional communication * from the merchant depending on the customer's locale. Only available to US merchants. */ - promotions: 'auto' | null; + promotions: ConsentCollection.Promotions | null; + } + + namespace ConsentCollection { + type Promotions = 'auto' | 'none'; } type CustomerCreation = 'always' | 'if_required'; @@ -465,6 +469,8 @@ declare module 'stripe' { card?: PaymentMethodOptions.Card; + customer_balance?: PaymentMethodOptions.CustomerBalance; + eps?: PaymentMethodOptions.Eps; fpx?: PaymentMethodOptions.Fpx; @@ -648,6 +654,8 @@ declare module 'stripe' { } interface Card { + installments?: Card.Installments; + /** * Indicates that you intend to make future payments with this PaymentIntent's payment method. * @@ -669,9 +677,80 @@ declare module 'stripe' { } namespace Card { + interface Installments { + /** + * Indicates if installments are enabled + */ + enabled?: boolean; + } + type SetupFutureUsage = 'none' | 'off_session' | 'on_session'; } + interface CustomerBalance { + bank_transfer?: CustomerBalance.BankTransfer; + + /** + * The funding method type to be used when there are not enough funds in the customer balance. Permitted values include: `bank_transfer`. + */ + funding_type: 'bank_transfer' | null; + + /** + * Indicates that you intend to make future payments with this PaymentIntent's payment method. + * + * Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes. + * + * When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication). + */ + setup_future_usage?: 'none'; + } + + namespace CustomerBalance { + interface BankTransfer { + eu_bank_transfer?: BankTransfer.EuBankTransfer; + + /** + * List of address types that should be returned in the financial_addresses response. If not specified, all valid types will be returned. + * + * Permitted values include: `sort_code`, `zengin`, `iban`, or `spei`. + */ + requested_address_types?: Array< + BankTransfer.RequestedAddressType + >; + + /** + * The bank transfer type that this PaymentIntent is allowed to use for funding Permitted values include: `eu_bank_transfer`, `gb_bank_transfer`, `jp_bank_transfer`, or `mx_bank_transfer`. + */ + type: BankTransfer.Type | null; + } + + namespace BankTransfer { + interface EuBankTransfer { + /** + * The desired country code of the bank account information. Permitted values include: `DE`, `ES`, `FR`, `IE`, or `NL`. + */ + country: EuBankTransfer.Country; + } + + namespace EuBankTransfer { + type Country = 'DE' | 'ES' | 'FR' | 'IE' | 'NL'; + } + + type RequestedAddressType = + | 'iban' + | 'sepa' + | 'sort_code' + | 'spei' + | 'zengin'; + + type Type = + | 'eu_bank_transfer' + | 'gb_bank_transfer' + | 'jp_bank_transfer' + | 'mx_bank_transfer'; + } + } + interface Eps { /** * Indicates that you intend to make future payments with this PaymentIntent's payment method. @@ -1341,7 +1420,7 @@ declare module 'stripe' { expand?: Array; /** - * The Epoch time in seconds at which the Checkout Session will expire. It can be anywhere from 1 to 24 hours after Checkout Session creation. By default, this value is 24 hours from creation. + * The Epoch time in seconds at which the Checkout Session will expire. It can be anywhere from 30 minutes to 24 hours after Checkout Session creation. By default, this value is 24 hours from creation. */ expires_at?: number; @@ -1479,7 +1558,11 @@ declare module 'stripe' { * Session will determine whether to display an option to opt into promotional communication * from the merchant depending on the customer's locale. Only available to US merchants. */ - promotions?: 'auto'; + promotions?: ConsentCollection.Promotions; + } + + namespace ConsentCollection { + type Promotions = 'auto' | 'none'; } type CustomerCreation = 'always' | 'if_required'; @@ -1909,6 +1992,11 @@ declare module 'stripe' { */ card?: PaymentMethodOptions.Card; + /** + * contains details about the Customer Balance payment method options. + */ + customer_balance?: PaymentMethodOptions.CustomerBalance; + /** * contains details about the EPS payment method options. */ @@ -2143,6 +2231,11 @@ declare module 'stripe' { } interface Card { + /** + * Installment options for card payments + */ + installments?: Card.Installments; + /** * Indicates that you intend to make future payments with this PaymentIntent's payment method. * @@ -2164,9 +2257,107 @@ declare module 'stripe' { } namespace Card { + interface Installments { + /** + * Setting to true enables installments for this PaymentIntent. + * This will cause the response to contain a list of available installment plans. + * Setting to false will prevent any selected plan from applying to a charge. + */ + enabled?: boolean; + + /** + * The selected installment plan to use for this payment attempt. + * This parameter can only be provided during confirmation. + */ + plan?: Stripe.Emptyable; + } + + namespace Installments { + interface Plan { + /** + * For `fixed_count` installment plans, this is the number of installment payments your customer will make to their credit card. + */ + count: number; + + /** + * For `fixed_count` installment plans, this is the interval between installment payments your customer will make to their credit card. + * One of `month`. + */ + interval: 'month'; + + /** + * Type of installment plan, one of `fixed_count`. + */ + type: 'fixed_count'; + } + } + type SetupFutureUsage = 'off_session' | 'on_session'; } + interface CustomerBalance { + /** + * Configuration for the bank transfer funding type, if the `funding_type` is set to `bank_transfer`. + */ + bank_transfer?: CustomerBalance.BankTransfer; + + /** + * The funding method type to be used when there are not enough funds in the customer balance. Permitted values include: `bank_transfer`. + */ + funding_type?: 'bank_transfer'; + + /** + * Indicates that you intend to make future payments with this PaymentIntent's payment method. + * + * Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes. + * + * When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication). + */ + setup_future_usage?: 'none'; + } + + namespace CustomerBalance { + interface BankTransfer { + eu_bank_transfer?: BankTransfer.EuBankTransfer; + + /** + * List of address types that should be returned in the financial_addresses response. If not specified, all valid types will be returned. + * + * Permitted values include: `sort_code`, `zengin`, `iban`, or `spei`. + */ + requested_address_types?: Array< + BankTransfer.RequestedAddressType + >; + + /** + * The list of bank transfer types that this PaymentIntent is allowed to use for funding. Permitted values include: `us_bank_account`, `eu_bank_account`, `id_bank_account`, `gb_bank_account`, `jp_bank_account`, `mx_bank_account`, `eu_bank_transfer`, `gb_bank_transfer`, `id_bank_transfer`, `jp_bank_transfer`, `mx_bank_transfer`, or `us_bank_transfer`. + */ + type: BankTransfer.Type; + } + + namespace BankTransfer { + interface EuBankTransfer { + /** + * The desired country code of the bank account information. Permitted values include: `DE`, `ES`, `FR`, `IE`, or `NL`. + */ + country: string; + } + + type RequestedAddressType = + | 'iban' + | 'sepa' + | 'sort_code' + | 'spei' + | 'zengin'; + + type Type = + | 'eu_bank_transfer' + | 'gb_bank_transfer' + | 'jp_bank_transfer' + | 'mx_bank_transfer'; + } + } + interface Eps { /** * Indicates that you intend to make future payments with this PaymentIntent's payment method. @@ -2399,8 +2590,10 @@ declare module 'stripe' { | 'au_becs_debit' | 'bacs_debit' | 'bancontact' + | 'blik' | 'boleto' | 'card' + | 'customer_balance' | 'eps' | 'fpx' | 'giropay' diff --git a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Customers.d.ts b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Customers.d.ts index 936a734ed..72a6054d0 100644 --- a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Customers.d.ts +++ b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Customers.d.ts @@ -41,6 +41,11 @@ declare module 'stripe' { */ currency: string | null; + /** + * The default three-letter [ISO code for the currency](https://stripe.com/docs/currencies) that the customer will be charged in for billing purposes. + */ + default_currency?: string | null; + /** * ID of the default payment source for the customer. * @@ -72,6 +77,13 @@ declare module 'stripe' { */ email: string | null; + /** + * The current multi-currency balances, if any, being stored on the customer.If positive in a currency, the customer has a credit to apply to their next invoice denominated in that currency.If negative, the customer has an amount owed that will be added to their next invoice denominated in that currency. These balances do not refer to any unpaid invoices.They solely track amounts that have yet to be successfully applied to any invoice. A balance in a particular currency is only applied to any invoice as an invoice in that currency is finalized. + */ + invoice_credit_balance?: { + [key: string]: number; + }; + /** * The prefix for the customer used to generate unique invoice numbers. */ @@ -872,6 +884,7 @@ declare module 'stripe' { | 'au_becs_debit' | 'bacs_debit' | 'bancontact' + | 'blik' | 'boleto' | 'card' | 'card_present' diff --git a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Invoices.d.ts b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Invoices.d.ts index 72f6815b7..d51385afa 100644 --- a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Invoices.d.ts +++ b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Invoices.d.ts @@ -609,6 +609,11 @@ declare module 'stripe' { } interface PaymentSettings { + /** + * ID of the mandate to be used for this invoice. It must correspond to the payment method used to pay the invoice, including the invoice's default_payment_method or default_source, if set. + */ + default_mandate: string | null; + /** * Payment-method-specific configuration to provide to the invoice's PaymentIntent. */ @@ -690,6 +695,8 @@ declare module 'stripe' { } interface Card { + installments?: Card.Installments; + /** * We strongly recommend that you rely on our SCA Engine to automatically prompt your customers for authentication based on risk level and [other requirements](https://stripe.com/docs/strong-customer-authentication). However, if you wish to request 3D Secure based on logic from your own fraud engine, provide this option. Read our guide on [manually requesting 3D Secure](https://stripe.com/docs/payments/3d-secure#manual-three-ds) for more information on how this configuration interacts with Radar and our SCA Engine. */ @@ -697,6 +704,13 @@ declare module 'stripe' { } namespace Card { + interface Installments { + /** + * Whether Installments are enabled for this Invoice. + */ + enabled: boolean | null; + } + type RequestThreeDSecure = 'any' | 'automatic'; } @@ -936,6 +950,11 @@ declare module 'stripe' { */ collection_method?: InvoiceCreateParams.CollectionMethod; + /** + * The currency to create this invoice in. Defaults to that of `customer` if not specified. + */ + currency?: string; + /** * A list of up to 4 custom fields to be displayed on the invoice. */ @@ -1069,6 +1088,11 @@ declare module 'stripe' { } interface PaymentSettings { + /** + * ID of the mandate to be used for this invoice. It must correspond to the payment method used to pay the invoice, including the invoice's default_payment_method or default_source, if set. + */ + default_mandate?: string; + /** * Payment-method-specific configuration to provide to the invoice's PaymentIntent. */ @@ -1159,6 +1183,13 @@ declare module 'stripe' { } interface Card { + /** + * Installment configuration for payments attempted on this invoice (Mexico Only). + * + * For more information, see the [installments integration guide](https://stripe.com/docs/payments/installments). + */ + installments?: Card.Installments; + /** * We strongly recommend that you rely on our SCA Engine to automatically prompt your customers for authentication based on risk level and [other requirements](https://stripe.com/docs/strong-customer-authentication). However, if you wish to request 3D Secure based on logic from your own fraud engine, provide this option. Read our guide on [manually requesting 3D Secure](https://stripe.com/docs/payments/3d-secure#manual-three-ds) for more information on how this configuration interacts with Radar and our SCA Engine. */ @@ -1166,6 +1197,39 @@ declare module 'stripe' { } namespace Card { + interface Installments { + /** + * Setting to true enables installments for this invoice. + * Setting to false will prevent any selected plan from applying to a payment. + */ + enabled?: boolean; + + /** + * The selected installment plan to use for this invoice. + */ + plan?: Stripe.Emptyable; + } + + namespace Installments { + interface Plan { + /** + * For `fixed_count` installment plans, this is the number of installment payments your customer will make to their credit card. + */ + count: number; + + /** + * For `fixed_count` installment plans, this is the interval between installment payments your customer will make to their credit card. + * One of `month`. + */ + interval: 'month'; + + /** + * Type of installment plan, one of `fixed_count`. + */ + type: 'fixed_count'; + } + } + type RequestThreeDSecure = 'any' | 'automatic'; } @@ -1445,6 +1509,11 @@ declare module 'stripe' { } interface PaymentSettings { + /** + * ID of the mandate to be used for this invoice. It must correspond to the payment method used to pay the invoice, including the invoice's default_payment_method or default_source, if set. + */ + default_mandate?: string; + /** * Payment-method-specific configuration to provide to the invoice's PaymentIntent. */ @@ -1535,6 +1604,13 @@ declare module 'stripe' { } interface Card { + /** + * Installment configuration for payments attempted on this invoice (Mexico Only). + * + * For more information, see the [installments integration guide](https://stripe.com/docs/payments/installments). + */ + installments?: Card.Installments; + /** * We strongly recommend that you rely on our SCA Engine to automatically prompt your customers for authentication based on risk level and [other requirements](https://stripe.com/docs/strong-customer-authentication). However, if you wish to request 3D Secure based on logic from your own fraud engine, provide this option. Read our guide on [manually requesting 3D Secure](https://stripe.com/docs/payments/3d-secure#manual-three-ds) for more information on how this configuration interacts with Radar and our SCA Engine. */ @@ -1542,6 +1618,39 @@ declare module 'stripe' { } namespace Card { + interface Installments { + /** + * Setting to true enables installments for this invoice. + * Setting to false will prevent any selected plan from applying to a payment. + */ + enabled?: boolean; + + /** + * The selected installment plan to use for this invoice. + */ + plan?: Stripe.Emptyable; + } + + namespace Installments { + interface Plan { + /** + * For `fixed_count` installment plans, this is the number of installment payments your customer will make to their credit card. + */ + count: number; + + /** + * For `fixed_count` installment plans, this is the interval between installment payments your customer will make to their credit card. + * One of `month`. + */ + interval: 'month'; + + /** + * Type of installment plan, one of `fixed_count`. + */ + type: 'fixed_count'; + } + } + type RequestThreeDSecure = 'any' | 'automatic'; } @@ -1736,6 +1845,11 @@ declare module 'stripe' { */ forgive?: boolean; + /** + * ID of the mandate to be used for this invoice. It must correspond to the payment method used to pay the invoice, including the payment_method param or the invoice's default_payment_method or default_source, if set. + */ + mandate?: string; + /** * Indicates if a customer is on or off-session while an invoice payment is attempted. Defaults to `true` (off-session). */ diff --git a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Issuing/Cards.d.ts b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Issuing/Cards.d.ts index c937dfe53..3255b004c 100644 --- a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Issuing/Cards.d.ts +++ b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Issuing/Cards.d.ts @@ -40,7 +40,7 @@ declare module 'stripe' { created: number; /** - * Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies). + * Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Supported currencies are `usd` in the US, `eur` in the EU, and `gbp` in the UK. */ currency: string; diff --git a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Issuing/Disputes.d.ts b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Issuing/Disputes.d.ts index 342b5f756..a5ff68650 100644 --- a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Issuing/Disputes.d.ts +++ b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Issuing/Disputes.d.ts @@ -18,7 +18,7 @@ declare module 'stripe' { object: 'issuing.dispute'; /** - * Disputed amount. Usually the amount of the `transaction`, but can differ (usually because of currency fluctuation). + * Disputed amount in the card's currency and in the [smallest currency unit](https://stripe.com/docs/currencies#zero-decimal). Usually the amount of the `transaction`, but can differ (usually because of currency fluctuation). */ amount: number; diff --git a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Mandates.d.ts b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Mandates.d.ts index a6ad83a9d..445a75371 100644 --- a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Mandates.d.ts +++ b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Mandates.d.ts @@ -89,6 +89,8 @@ declare module 'stripe' { bacs_debit?: PaymentMethodDetails.BacsDebit; + blik?: PaymentMethodDetails.Blik; + card?: PaymentMethodDetails.Card; link?: PaymentMethodDetails.Link; @@ -162,6 +164,50 @@ declare module 'stripe' { type NetworkStatus = 'accepted' | 'pending' | 'refused' | 'revoked'; } + interface Blik { + /** + * Date at which the mandate expires. + */ + expires_after: number | null; + + off_session?: Blik.OffSession; + + /** + * Type of the mandate. + */ + type: Blik.Type | null; + } + + namespace Blik { + interface OffSession { + /** + * Amount of each recurring payment. + */ + amount: number | null; + + /** + * Currency of each recurring payment. + */ + currency: string | null; + + /** + * Frequency interval of each recurring payment. + */ + interval: OffSession.Interval | null; + + /** + * Frequency indicator of each recurring payment. + */ + interval_count: number | null; + } + + namespace OffSession { + type Interval = 'day' | 'month' | 'week' | 'year'; + } + + type Type = 'off_session' | 'on_session'; + } + interface Card {} interface Link {} diff --git a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Orders.d.ts b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Orders.d.ts index 0c50c5f89..7ea8745bc 100644 --- a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Orders.d.ts +++ b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Orders.d.ts @@ -1030,20 +1030,37 @@ declare module 'stripe' { discounts?: Stripe.Emptyable>; /** - * The ID of the price object. One of `product` (with default price) or `price` or `price_data` is required. + * The ID of a [Price](https://stripe.com/docs/api/prices) to add to the Order. + * + * The `price` parameter is an alternative to using the `product` parameter. If each of your products are sold at a single price, you can set `Product.default_price` and then pass the `product` parameter when creating a line item. If your products are sold at several possible prices, use the `price` parameter to explicitly specify which one to use. */ price?: string; /** - * Data used to generate a new [Price](https://stripe.com/docs/api/prices) object inline. One of `product` (with default price) or `price` or `price_data` is required. + * Data used to generate a new Price object inline. + * + * The `price_data` parameter is an alternative to using the `product` or `price` parameters. If you create products upfront and configure a `Product.default_price`, pass the `product` parameter when creating a line item. If you prefer not to define products upfront, or if you charge variable prices, pass the `price_data` parameter to describe the price for this line item. + * + * Each time you pass `price_data` we create a Price for the product. This Price is hidden in both the Dashboard and API lists and cannot be reused. */ price_data?: LineItem.PriceData; /** - * The product of the line item. The product must have a default price specified. One of `product` (with default price) or `price` or `price_data` is required. + * The ID of a [Product](https://stripe.com/docs/api/products) to add to the Order. + * + * The product must have a `default_price` specified. Otherwise, specify the price by passing the `price` or `price_data` parameter. */ product?: string; + /** + * Defines a Product inline and adds it to the Order. + * + * `product_data` is an alternative to the `product` parameter. If you created a Product upfront, use the `product` parameter to refer to the existing Product. But if you prefer not to create Products upfront, pass the `product_data` parameter to define a Product inline as part of configuring the Order. + * + * `product_data` automatically creates a Product, just as if you had manually created the Product. If a Product with the same ID already exists, then `product_data` re-uses it to avoid duplicates. + */ + product_data?: LineItem.ProductData; + /** * The quantity of the line item. */ @@ -1075,7 +1092,9 @@ declare module 'stripe' { currency?: string; /** - * The ID of the product that this price will belong to. + * ID of the product this price belongs to. + * + * Use this to implement a variable-pricing model in your integration. This is required if `product_data` is not specifed. */ product?: string; @@ -1098,6 +1117,79 @@ declare module 'stripe' { namespace PriceData { type TaxBehavior = 'exclusive' | 'inclusive' | 'unspecified'; } + + interface ProductData { + /** + * The product's description, meant to be displayable to the customer. Use this field to optionally store a long form explanation of the product being sold for your own rendering purposes. + */ + description?: string; + + /** + * A unique identifier for this product. + * + * `product_data` automatically creates a Product with this ID. If a Product with the same ID already exists, then `product_data` re-uses it to avoid duplicates. If any of the fields in the existing Product are different from the values in `product_data`, `product_data` updates the existing Product with the new information. So set `product_data[id]` to the same string every time you sell the same product, but don't re-use the same string for different products. + */ + id: string; + + /** + * A list of up to 8 URLs of images for this product, meant to be displayable to the customer. + */ + images?: Stripe.Emptyable>; + + /** + * Set of [key-value pairs](https://stripe.com/docs/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to `metadata`. + */ + metadata?: Stripe.Emptyable; + + /** + * The product's name, meant to be displayable to the customer. + */ + name: string; + + /** + * The dimensions of this product for shipping purposes. + */ + package_dimensions?: Stripe.Emptyable; + + /** + * Whether this product is shipped (i.e., physical goods). + */ + shippable?: boolean; + + /** + * A [tax code](https://stripe.com/docs/tax/tax-categories) ID. + */ + tax_code?: string; + + /** + * A URL of a publicly-accessible webpage for this product. + */ + url?: Stripe.Emptyable; + } + + namespace ProductData { + interface PackageDimensions { + /** + * Height, in inches. Maximum precision is 2 decimal places. + */ + height: number; + + /** + * Length, in inches. Maximum precision is 2 decimal places. + */ + length: number; + + /** + * Weight, in ounces. Maximum precision is 2 decimal places. + */ + weight: number; + + /** + * Width, in inches. Maximum precision is 2 decimal places. + */ + width: number; + } + } } interface Payment { @@ -1497,6 +1589,7 @@ declare module 'stripe' { | 'en-AT' | 'en-AU' | 'en-BE' + | 'en-CA' | 'en-DE' | 'en-DK' | 'en-ES' @@ -1514,6 +1607,7 @@ declare module 'stripe' { | 'es-US' | 'fi-FI' | 'fr-BE' + | 'fr-CA' | 'fr-FR' | 'it-IT' | 'nb-NO' @@ -2099,20 +2193,37 @@ declare module 'stripe' { id?: string; /** - * The ID of the price object. One of `product` (with default price) or `price` or `price_data` is required. + * The ID of a [Price](https://stripe.com/docs/api/prices) to add to the Order. + * + * The `price` parameter is an alternative to using the `product` parameter. If each of your products are sold at a single price, you can set `Product.default_price` and then pass the `product` parameter when creating a line item. If your products are sold at several possible prices, use the `price` parameter to explicitly specify which one to use. */ price?: string; /** - * Data used to generate a new [Price](https://stripe.com/docs/api/prices) object inline. One of `product` (with default price) or `price` or `price_data` is required. + * Data used to generate a new Price object inline. + * + * The `price_data` parameter is an alternative to using the `product` or `price` parameters. If you create products upfront and configure a `Product.default_price`, pass the `product` parameter when creating a line item. If you prefer not to define products upfront, or if you charge variable prices, pass the `price_data` parameter to describe the price for this line item. + * + * Each time you pass `price_data` we create a Price for the product. This Price is hidden in both the Dashboard and API lists and cannot be reused. */ price_data?: LineItem.PriceData; /** - * The product of the line item. The product must have a default price specified. One of `product` (with default price) or `price` or `price_data` is required. + * The ID of a [Product](https://stripe.com/docs/api/products) to add to the Order. + * + * The product must have a `default_price` specified. Otherwise, specify the price by passing the `price` or `price_data` parameter. */ product?: string; + /** + * Defines a Product inline and adds it to the Order. + * + * `product_data` is an alternative to the `product` parameter. If you created a Product upfront, use the `product` parameter to refer to the existing Product. But if you prefer not to create Products upfront, pass the `product_data` parameter to define a Product inline as part of configuring the Order. + * + * `product_data` automatically creates a Product, just as if you had manually created the Product. If a Product with the same ID already exists, then `product_data` re-uses it to avoid duplicates. + */ + product_data?: LineItem.ProductData; + /** * The quantity of the line item. */ @@ -2144,7 +2255,9 @@ declare module 'stripe' { currency?: string; /** - * The ID of the product that this price will belong to. + * ID of the product this price belongs to. + * + * Use this to implement a variable-pricing model in your integration. This is required if `product_data` is not specifed. */ product?: string; @@ -2167,6 +2280,79 @@ declare module 'stripe' { namespace PriceData { type TaxBehavior = 'exclusive' | 'inclusive' | 'unspecified'; } + + interface ProductData { + /** + * The product's description, meant to be displayable to the customer. Use this field to optionally store a long form explanation of the product being sold for your own rendering purposes. + */ + description?: string; + + /** + * A unique identifier for this product. + * + * `product_data` automatically creates a Product with this ID. If a Product with the same ID already exists, then `product_data` re-uses it to avoid duplicates. If any of the fields in the existing Product are different from the values in `product_data`, `product_data` updates the existing Product with the new information. So set `product_data[id]` to the same string every time you sell the same product, but don't re-use the same string for different products. + */ + id: string; + + /** + * A list of up to 8 URLs of images for this product, meant to be displayable to the customer. + */ + images?: Stripe.Emptyable>; + + /** + * Set of [key-value pairs](https://stripe.com/docs/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to `metadata`. + */ + metadata?: Stripe.Emptyable; + + /** + * The product's name, meant to be displayable to the customer. + */ + name: string; + + /** + * The dimensions of this product for shipping purposes. + */ + package_dimensions?: Stripe.Emptyable; + + /** + * Whether this product is shipped (i.e., physical goods). + */ + shippable?: boolean; + + /** + * A [tax code](https://stripe.com/docs/tax/tax-categories) ID. + */ + tax_code?: string; + + /** + * A URL of a publicly-accessible webpage for this product. + */ + url?: Stripe.Emptyable; + } + + namespace ProductData { + interface PackageDimensions { + /** + * Height, in inches. Maximum precision is 2 decimal places. + */ + height: number; + + /** + * Length, in inches. Maximum precision is 2 decimal places. + */ + length: number; + + /** + * Weight, in ounces. Maximum precision is 2 decimal places. + */ + weight: number; + + /** + * Width, in inches. Maximum precision is 2 decimal places. + */ + width: number; + } + } } interface Payment { @@ -2570,6 +2756,7 @@ declare module 'stripe' { | 'en-AT' | 'en-AU' | 'en-BE' + | 'en-CA' | 'en-DE' | 'en-DK' | 'en-ES' @@ -2587,6 +2774,7 @@ declare module 'stripe' { | 'es-US' | 'fi-FI' | 'fr-BE' + | 'fr-CA' | 'fr-FR' | 'it-IT' | 'nb-NO' diff --git a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/PaymentIntents.d.ts b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/PaymentIntents.d.ts index e03fb4681..10a23335e 100644 --- a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/PaymentIntents.d.ts +++ b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/PaymentIntents.d.ts @@ -441,7 +441,7 @@ declare module 'stripe' { charge_attempt_at: number | null; /** - * For payments greater than INR 5000, the customer must provide explicit approval of the payment with their bank. For payments of lower amount, no customer action is required. + * For payments greater than INR 15000, the customer must provide explicit approval of the payment with their bank. For payments of lower amount, no customer action is required. */ customer_approval_required: boolean | null; } @@ -880,6 +880,8 @@ declare module 'stripe' { bancontact?: PaymentMethodOptions.Bancontact; + blik?: PaymentMethodOptions.Blik; + boleto?: PaymentMethodOptions.Boleto; card?: PaymentMethodOptions.Card; @@ -1081,6 +1083,8 @@ declare module 'stripe' { type SetupFutureUsage = 'none' | 'off_session'; } + interface Blik {} + interface Boleto { /** * The number of calendar days before a Boleto voucher expires. For example, if you create a Boleto voucher on Monday and you set expires_after_days to 2, the Boleto voucher will expire on Wednesday at 23:59 America/Sao_Paulo time. @@ -1671,7 +1675,7 @@ declare module 'stripe' { namespace Card { interface CustomerNotification { /** - * Whether customer approval has been requested for this payment. For payments greater than INR 5000 or mandate amount, the customer must provide explicit approval of the payment with their bank. + * Whether customer approval has been requested for this payment. For payments greater than INR 15000 or mandate amount, the customer must provide explicit approval of the payment with their bank. */ approval_requested: boolean | null; @@ -1999,6 +2003,11 @@ declare module 'stripe' { */ billing_details?: PaymentMethodData.BillingDetails; + /** + * If this is a `blik` PaymentMethod, this hash contains details about the BLIK payment method. + */ + blik?: PaymentMethodData.Blik; + /** * If this is a `boleto` PaymentMethod, this hash contains details about the Boleto payment method. */ @@ -2188,6 +2197,8 @@ declare module 'stripe' { } } + interface Blik {} + interface Boleto { /** * The tax ID of the customer (CPF for individual consumers or CNPJ for businesses consumers) @@ -2409,6 +2420,7 @@ declare module 'stripe' { | 'au_becs_debit' | 'bacs_debit' | 'bancontact' + | 'blik' | 'boleto' | 'customer_balance' | 'eps' @@ -2502,6 +2514,11 @@ declare module 'stripe' { */ bancontact?: Stripe.Emptyable; + /** + * If this is a `blik` PaymentMethod, this sub-hash contains details about the BLIK payment method options. + */ + blik?: Stripe.Emptyable; + /** * If this is a `boleto` PaymentMethod, this sub-hash contains details about the Boleto payment method options. */ @@ -2795,6 +2812,13 @@ declare module 'stripe' { type SetupFutureUsage = 'none' | 'off_session'; } + interface Blik { + /** + * The 6-digit BLIK code that a customer has generated using their banking application. Can only be set on confirmation. + */ + code?: string; + } + interface Boleto { /** * The number of calendar days before a Boleto voucher expires. For example, if you create a Boleto voucher on Monday and you set expires_after_days to 2, the Boleto invoice will expire on Wednesday at 23:59 America/Sao_Paulo time. @@ -3170,6 +3194,7 @@ declare module 'stripe' { | 'en-AT' | 'en-AU' | 'en-BE' + | 'en-CA' | 'en-DE' | 'en-DK' | 'en-ES' @@ -3187,6 +3212,7 @@ declare module 'stripe' { | 'es-US' | 'fi-FI' | 'fr-BE' + | 'fr-CA' | 'fr-FR' | 'it-IT' | 'nb-NO' @@ -3701,6 +3727,11 @@ declare module 'stripe' { */ billing_details?: PaymentMethodData.BillingDetails; + /** + * If this is a `blik` PaymentMethod, this hash contains details about the BLIK payment method. + */ + blik?: PaymentMethodData.Blik; + /** * If this is a `boleto` PaymentMethod, this hash contains details about the Boleto payment method. */ @@ -3890,6 +3921,8 @@ declare module 'stripe' { } } + interface Blik {} + interface Boleto { /** * The tax ID of the customer (CPF for individual consumers or CNPJ for businesses consumers) @@ -4111,6 +4144,7 @@ declare module 'stripe' { | 'au_becs_debit' | 'bacs_debit' | 'bancontact' + | 'blik' | 'boleto' | 'customer_balance' | 'eps' @@ -4204,6 +4238,11 @@ declare module 'stripe' { */ bancontact?: Stripe.Emptyable; + /** + * If this is a `blik` PaymentMethod, this sub-hash contains details about the BLIK payment method options. + */ + blik?: Stripe.Emptyable; + /** * If this is a `boleto` PaymentMethod, this sub-hash contains details about the Boleto payment method options. */ @@ -4497,6 +4536,13 @@ declare module 'stripe' { type SetupFutureUsage = 'none' | 'off_session'; } + interface Blik { + /** + * The 6-digit BLIK code that a customer has generated using their banking application. Can only be set on confirmation. + */ + code?: string; + } + interface Boleto { /** * The number of calendar days before a Boleto voucher expires. For example, if you create a Boleto voucher on Monday and you set expires_after_days to 2, the Boleto invoice will expire on Wednesday at 23:59 America/Sao_Paulo time. @@ -4872,6 +4918,7 @@ declare module 'stripe' { | 'en-AT' | 'en-AU' | 'en-BE' + | 'en-CA' | 'en-DE' | 'en-DK' | 'en-ES' @@ -4889,6 +4936,7 @@ declare module 'stripe' { | 'es-US' | 'fi-FI' | 'fr-BE' + | 'fr-CA' | 'fr-FR' | 'it-IT' | 'nb-NO' @@ -5538,6 +5586,11 @@ declare module 'stripe' { */ billing_details?: PaymentMethodData.BillingDetails; + /** + * If this is a `blik` PaymentMethod, this hash contains details about the BLIK payment method. + */ + blik?: PaymentMethodData.Blik; + /** * If this is a `boleto` PaymentMethod, this hash contains details about the Boleto payment method. */ @@ -5727,6 +5780,8 @@ declare module 'stripe' { } } + interface Blik {} + interface Boleto { /** * The tax ID of the customer (CPF for individual consumers or CNPJ for businesses consumers) @@ -5948,6 +6003,7 @@ declare module 'stripe' { | 'au_becs_debit' | 'bacs_debit' | 'bancontact' + | 'blik' | 'boleto' | 'customer_balance' | 'eps' @@ -6041,6 +6097,11 @@ declare module 'stripe' { */ bancontact?: Stripe.Emptyable; + /** + * If this is a `blik` PaymentMethod, this sub-hash contains details about the BLIK payment method options. + */ + blik?: Stripe.Emptyable; + /** * If this is a `boleto` PaymentMethod, this sub-hash contains details about the Boleto payment method options. */ @@ -6334,6 +6395,13 @@ declare module 'stripe' { type SetupFutureUsage = 'none' | 'off_session'; } + interface Blik { + /** + * The 6-digit BLIK code that a customer has generated using their banking application. Can only be set on confirmation. + */ + code?: string; + } + interface Boleto { /** * The number of calendar days before a Boleto voucher expires. For example, if you create a Boleto voucher on Monday and you set expires_after_days to 2, the Boleto invoice will expire on Wednesday at 23:59 America/Sao_Paulo time. @@ -6709,6 +6777,7 @@ declare module 'stripe' { | 'en-AT' | 'en-AU' | 'en-BE' + | 'en-CA' | 'en-DE' | 'en-DK' | 'en-ES' @@ -6726,6 +6795,7 @@ declare module 'stripe' { | 'es-US' | 'fi-FI' | 'fr-BE' + | 'fr-CA' | 'fr-FR' | 'it-IT' | 'nb-NO' @@ -7194,8 +7264,6 @@ declare module 'stripe' { /** * Manually reconcile the remaining amount for a customer_balance PaymentIntent. - * - * This can be used when the cash balance for [a customer in manual reconciliation mode](docs/payments/customer-balance/reconciliation#cash-manual-reconciliation) received funds. */ applyCustomerBalance( id: string, diff --git a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/PaymentLinks.d.ts b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/PaymentLinks.d.ts index 0150b7fed..5a850b029 100644 --- a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/PaymentLinks.d.ts +++ b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/PaymentLinks.d.ts @@ -163,7 +163,11 @@ declare module 'stripe' { /** * If set to `auto`, enables the collection of customer consent for promotional communications. */ - promotions: 'auto' | null; + promotions: ConsentCollection.Promotions | null; + } + + namespace ConsentCollection { + type Promotions = 'auto' | 'none'; } type CustomerCreation = 'always' | 'if_required'; @@ -193,6 +197,7 @@ declare module 'stripe' { | 'au_becs_debit' | 'bacs_debit' | 'bancontact' + | 'blik' | 'boleto' | 'card' | 'eps' @@ -672,7 +677,11 @@ declare module 'stripe' { * Session will determine whether to display an option to opt into promotional communication * from the merchant depending on the customer's locale. Only available to US merchants. */ - promotions?: 'auto'; + promotions?: ConsentCollection.Promotions; + } + + namespace ConsentCollection { + type Promotions = 'auto' | 'none'; } type CustomerCreation = 'always' | 'if_required'; @@ -748,6 +757,7 @@ declare module 'stripe' { | 'au_becs_debit' | 'bacs_debit' | 'bancontact' + | 'blik' | 'boleto' | 'card' | 'eps' @@ -1219,6 +1229,7 @@ declare module 'stripe' { | 'au_becs_debit' | 'bacs_debit' | 'bancontact' + | 'blik' | 'boleto' | 'card' | 'eps' diff --git a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/PaymentMethods.d.ts b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/PaymentMethods.d.ts index f6e28bc87..e917965d5 100644 --- a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/PaymentMethods.d.ts +++ b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/PaymentMethods.d.ts @@ -32,6 +32,8 @@ declare module 'stripe' { billing_details: PaymentMethod.BillingDetails; + blik?: PaymentMethod.Blik; + boleto?: PaymentMethod.Boleto; card?: PaymentMethod.Card; @@ -197,6 +199,8 @@ declare module 'stripe' { phone: string | null; } + interface Blik {} + interface Boleto { /** * Uniquely identifies the customer tax id (CNPJ or CPF) @@ -683,6 +687,7 @@ declare module 'stripe' { | 'au_becs_debit' | 'bacs_debit' | 'bancontact' + | 'blik' | 'boleto' | 'card' | 'card_present' @@ -813,6 +818,11 @@ declare module 'stripe' { */ billing_details?: PaymentMethodCreateParams.BillingDetails; + /** + * If this is a `blik` PaymentMethod, this hash contains details about the BLIK payment method. + */ + blik?: PaymentMethodCreateParams.Blik; + /** * If this is a `boleto` PaymentMethod, this hash contains details about the Boleto payment method. */ @@ -1022,6 +1032,8 @@ declare module 'stripe' { } } + interface Blik {} + interface Boleto { /** * The tax ID of the customer (CPF for individual consumers or CNPJ for businesses consumers) @@ -1269,6 +1281,7 @@ declare module 'stripe' { | 'au_becs_debit' | 'bacs_debit' | 'bancontact' + | 'blik' | 'boleto' | 'card' | 'customer_balance' @@ -1358,6 +1371,11 @@ declare module 'stripe' { */ billing_details?: PaymentMethodUpdateParams.BillingDetails; + /** + * This is a legacy parameter that will be removed in the future. It is a hash that does not accept any keys. + */ + blik?: PaymentMethodUpdateParams.Blik; + /** * If this is a `card` PaymentMethod, this hash contains the user's card details. */ @@ -1426,6 +1444,8 @@ declare module 'stripe' { } } + interface Blik {} + interface Card { /** * Two-digit number representing the card's expiration month. @@ -1480,6 +1500,7 @@ declare module 'stripe' { | 'au_becs_debit' | 'bacs_debit' | 'bancontact' + | 'blik' | 'boleto' | 'card' | 'card_present' diff --git a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Prices.d.ts b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Prices.d.ts index 4ee68ec50..6d065387b 100644 --- a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Prices.d.ts +++ b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Prices.d.ts @@ -409,7 +409,7 @@ declare module 'stripe' { transform_quantity?: PriceCreateParams.TransformQuantity; /** - * A positive integer in cents (or local equivalent) (or 0 for a free price) representing how much to charge. + * A positive integer in cents (or local equivalent) (or 0 for a free price) representing how much to charge. One of `unit_amount` or `custom_unit_amount` is required, unless `billing_scheme=tiered`. */ unit_amount?: number; diff --git a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Products.d.ts b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Products.d.ts index eefbd67b7..e995965e9 100644 --- a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Products.d.ts +++ b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Products.d.ts @@ -550,7 +550,7 @@ declare module 'stripe' { expand?: Array; /** - * Only return products with the given IDs. + * Only return products with the given IDs. Cannot be used with [starting_after](https://stripe.com/docs/api#list_products-starting_after) or [ending_before](https://stripe.com/docs/api#list_products-ending_before). */ ids?: Array; diff --git a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/SetupAttempts.d.ts b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/SetupAttempts.d.ts index 574d2155a..820ea35d8 100644 --- a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/SetupAttempts.d.ts +++ b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/SetupAttempts.d.ts @@ -95,6 +95,8 @@ declare module 'stripe' { bancontact?: PaymentMethodDetails.Bancontact; + blik?: PaymentMethodDetails.Blik; + boleto?: PaymentMethodDetails.Boleto; card?: PaymentMethodDetails.Card; @@ -172,6 +174,8 @@ declare module 'stripe' { type PreferredLanguage = 'de' | 'en' | 'fr' | 'nl'; } + interface Blik {} + interface Boleto {} interface Card { @@ -212,6 +216,7 @@ declare module 'stripe' { type Result = | 'attempt_acknowledged' | 'authenticated' + | 'exempted' | 'failed' | 'not_supported' | 'processing_error'; diff --git a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/SetupIntents.d.ts b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/SetupIntents.d.ts index eaa66bcaa..086febcce 100644 --- a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/SetupIntents.d.ts +++ b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/SetupIntents.d.ts @@ -298,6 +298,8 @@ declare module 'stripe' { interface PaymentMethodOptions { acss_debit?: PaymentMethodOptions.AcssDebit; + blik?: PaymentMethodOptions.Blik; + card?: PaymentMethodOptions.Card; link?: PaymentMethodOptions.Link; @@ -363,6 +365,56 @@ declare module 'stripe' { type VerificationMethod = 'automatic' | 'instant' | 'microdeposits'; } + interface Blik { + mandate_options?: Blik.MandateOptions; + } + + namespace Blik { + interface MandateOptions { + /** + * Date at which the mandate expires. + */ + expires_after: number | null; + + off_session?: MandateOptions.OffSession; + + /** + * Type of the mandate. + */ + type: MandateOptions.Type | null; + } + + namespace MandateOptions { + interface OffSession { + /** + * Amount of each recurring payment. + */ + amount: number | null; + + /** + * Currency of each recurring payment. + */ + currency: string | null; + + /** + * Frequency interval of each recurring payment. + */ + interval: OffSession.Interval | null; + + /** + * Frequency indicator of each recurring payment. + */ + interval_count: number | null; + } + + namespace OffSession { + type Interval = 'day' | 'month' | 'week' | 'year'; + } + + type Type = 'off_session' | 'on_session'; + } + } + interface Card { /** * Configuration options for setting up an eMandate for cards issued in India. @@ -694,6 +746,11 @@ declare module 'stripe' { */ billing_details?: PaymentMethodData.BillingDetails; + /** + * If this is a `blik` PaymentMethod, this hash contains details about the BLIK payment method. + */ + blik?: PaymentMethodData.Blik; + /** * If this is a `boleto` PaymentMethod, this hash contains details about the Boleto payment method. */ @@ -883,6 +940,8 @@ declare module 'stripe' { } } + interface Blik {} + interface Boleto { /** * The tax ID of the customer (CPF for individual consumers or CNPJ for businesses consumers) @@ -1104,6 +1163,7 @@ declare module 'stripe' { | 'au_becs_debit' | 'bacs_debit' | 'bancontact' + | 'blik' | 'boleto' | 'customer_balance' | 'eps' @@ -1165,6 +1225,11 @@ declare module 'stripe' { */ acss_debit?: PaymentMethodOptions.AcssDebit; + /** + * If this is a `blik` PaymentMethod, this hash contains details about the BLIK payment method. + */ + blik?: PaymentMethodOptions.Blik; + /** * Configuration for any card setup attempted on this SetupIntent. */ @@ -1247,6 +1312,13 @@ declare module 'stripe' { type VerificationMethod = 'automatic' | 'instant' | 'microdeposits'; } + interface Blik { + /** + * The 6-digit BLIK code that a customer has generated using their banking application. Can only be set on confirmation. + */ + code?: string; + } + interface Card { /** * Configuration options for setting up an eMandate for cards issued in India. @@ -1529,6 +1601,11 @@ declare module 'stripe' { */ billing_details?: PaymentMethodData.BillingDetails; + /** + * If this is a `blik` PaymentMethod, this hash contains details about the BLIK payment method. + */ + blik?: PaymentMethodData.Blik; + /** * If this is a `boleto` PaymentMethod, this hash contains details about the Boleto payment method. */ @@ -1718,6 +1795,8 @@ declare module 'stripe' { } } + interface Blik {} + interface Boleto { /** * The tax ID of the customer (CPF for individual consumers or CNPJ for businesses consumers) @@ -1939,6 +2018,7 @@ declare module 'stripe' { | 'au_becs_debit' | 'bacs_debit' | 'bancontact' + | 'blik' | 'boleto' | 'customer_balance' | 'eps' @@ -2000,6 +2080,11 @@ declare module 'stripe' { */ acss_debit?: PaymentMethodOptions.AcssDebit; + /** + * If this is a `blik` PaymentMethod, this hash contains details about the BLIK payment method. + */ + blik?: PaymentMethodOptions.Blik; + /** * Configuration for any card setup attempted on this SetupIntent. */ @@ -2082,6 +2167,13 @@ declare module 'stripe' { type VerificationMethod = 'automatic' | 'instant' | 'microdeposits'; } + interface Blik { + /** + * The 6-digit BLIK code that a customer has generated using their banking application. Can only be set on confirmation. + */ + code?: string; + } + interface Card { /** * Configuration options for setting up an eMandate for cards issued in India. @@ -2446,6 +2538,11 @@ declare module 'stripe' { */ billing_details?: PaymentMethodData.BillingDetails; + /** + * If this is a `blik` PaymentMethod, this hash contains details about the BLIK payment method. + */ + blik?: PaymentMethodData.Blik; + /** * If this is a `boleto` PaymentMethod, this hash contains details about the Boleto payment method. */ @@ -2635,6 +2732,8 @@ declare module 'stripe' { } } + interface Blik {} + interface Boleto { /** * The tax ID of the customer (CPF for individual consumers or CNPJ for businesses consumers) @@ -2856,6 +2955,7 @@ declare module 'stripe' { | 'au_becs_debit' | 'bacs_debit' | 'bancontact' + | 'blik' | 'boleto' | 'customer_balance' | 'eps' @@ -2917,6 +3017,11 @@ declare module 'stripe' { */ acss_debit?: PaymentMethodOptions.AcssDebit; + /** + * If this is a `blik` PaymentMethod, this hash contains details about the BLIK payment method. + */ + blik?: PaymentMethodOptions.Blik; + /** * Configuration for any card setup attempted on this SetupIntent. */ @@ -2999,6 +3104,13 @@ declare module 'stripe' { type VerificationMethod = 'automatic' | 'instant' | 'microdeposits'; } + interface Blik { + /** + * The 6-digit BLIK code that a customer has generated using their banking application. Can only be set on confirmation. + */ + code?: string; + } + interface Card { /** * Configuration options for setting up an eMandate for cards issued in India. diff --git a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/SubscriptionSchedules.d.ts b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/SubscriptionSchedules.d.ts index 8a965c293..3e2800e17 100644 --- a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/SubscriptionSchedules.d.ts +++ b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/SubscriptionSchedules.d.ts @@ -198,7 +198,7 @@ declare module 'stripe' { interface Phase { /** - * A list of prices and quantities that will generate invoice items appended to the first invoice for this phase. + * A list of prices and quantities that will generate invoice items appended to the next invoice for this phase. */ add_invoice_items: Array; @@ -530,7 +530,7 @@ declare module 'stripe' { interface Phase { /** - * A list of prices and quantities that will generate invoice items appended to the next invoice. You may pass up to 20 items. + * A list of prices and quantities that will generate invoice items appended to the next invoice for this phase. You may pass up to 20 items. */ add_invoice_items?: Array; @@ -955,7 +955,7 @@ declare module 'stripe' { interface Phase { /** - * A list of prices and quantities that will generate invoice items appended to the next invoice. You may pass up to 20 items. + * A list of prices and quantities that will generate invoice items appended to the next invoice for this phase. You may pass up to 20 items. */ add_invoice_items?: Array; diff --git a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Subscriptions.d.ts b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Subscriptions.d.ts index 6b9688c72..51c4854e4 100644 --- a/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Subscriptions.d.ts +++ b/food-ordering-app/server/node_modules/stripe/types/2020-08-27/Subscriptions.d.ts @@ -533,7 +533,7 @@ declare module 'stripe' { customer: string; /** - * A list of prices and quantities that will generate invoice items appended to the first invoice for this subscription. You may pass up to 20 items. + * A list of prices and quantities that will generate invoice items appended to the next invoice for this subscription. You may pass up to 20 items. */ add_invoice_items?: Array; @@ -1137,7 +1137,7 @@ declare module 'stripe' { interface SubscriptionUpdateParams { /** - * A list of prices and quantities that will generate invoice items appended to the first invoice for this subscription. You may pass up to 20 items. + * A list of prices and quantities that will generate invoice items appended to the next invoice for this subscription. You may pass up to 20 items. */ add_invoice_items?: Array; @@ -1820,6 +1820,23 @@ declare module 'stripe' { | 'unpaid'; } + interface SubscriptionCancelParams { + /** + * Specifies which fields in the response should be expanded. + */ + expand?: Array; + + /** + * Will generate a final invoice that invoices for any un-invoiced metered usage and new/pending proration invoice items. + */ + invoice_now?: boolean; + + /** + * Will generate a proration invoice item that credits remaining unused time until the subscription period end. + */ + prorate?: boolean; + } + interface SubscriptionDeleteParams { /** * Specifies which fields in the response should be expanded. @@ -1907,6 +1924,23 @@ declare module 'stripe' { ): ApiListPromise; list(options?: RequestOptions): ApiListPromise; + /** + * Cancels a customer's subscription immediately. The customer will not be charged again for the subscription. + * + * Note, however, that any pending invoice items that you've created will still be charged for at the end of the period, unless manually [deleted](https://stripe.com/docs/api#delete_invoiceitem). If you've set the subscription to cancel at the end of the period, any pending prorations will also be left in place and collected at the end of the period. But if the subscription is set to cancel immediately, pending prorations will be removed. + * + * By default, upon subscription cancellation, Stripe will stop automatic collection of all finalized invoices for the customer. This is intended to prevent unexpected payment attempts after the customer has canceled a subscription. However, you can resume automatic collection of the invoices manually after subscription cancellation to have us proceed. Or, you could check for unpaid invoices before allowing the customer to cancel the subscription at all. + */ + cancel( + id: string, + params?: SubscriptionCancelParams, + options?: RequestOptions + ): Promise>; + cancel( + id: string, + options?: RequestOptions + ): Promise>; + /** * Cancels a customer's subscription immediately. The customer will not be charged again for the subscription. * diff --git a/food-ordering-app/server/node_modules/strnum/.github/SECURITY.md b/food-ordering-app/server/node_modules/strnum/.github/SECURITY.md new file mode 100644 index 000000000..0db86ca5f --- /dev/null +++ b/food-ordering-app/server/node_modules/strnum/.github/SECURITY.md @@ -0,0 +1,5 @@ +If you believe you have found a security vulnerability in this repository which can be potentially harful for the users in anyway, please do not report security vulnerabilities through public GitHub issues. Instead, please report it to us as described below. + +## Security contact information + +To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure. diff --git a/food-ordering-app/server/node_modules/strnum/.vscode/launch.json b/food-ordering-app/server/node_modules/strnum/.vscode/launch.json new file mode 100644 index 000000000..b87b34910 --- /dev/null +++ b/food-ordering-app/server/node_modules/strnum/.vscode/launch.json @@ -0,0 +1,25 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "Jasmine Tests", + "program": "${workspaceFolder}/node_modules/jasmine/bin/jasmine.js", + "args": [ + "${workspaceFolder}/spec/attr_spec.js" + ], + "internalConsoleOptions": "openOnSessionStart" + },{ + "type": "node", + "request": "launch", + "name": "Jasmine Tests current test file", + "program": "${workspaceFolder}/node_modules/jasmine/bin/jasmine.js", + "args": [ + "${file}" + ], + "internalConsoleOptions": "openOnSessionStart" + } + ] + +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/strnum/CHANGELOG.md b/food-ordering-app/server/node_modules/strnum/CHANGELOG.md new file mode 100644 index 000000000..f24fbc0ed --- /dev/null +++ b/food-ordering-app/server/node_modules/strnum/CHANGELOG.md @@ -0,0 +1,33 @@ + +**2.1.1 / 2025-05-15** +- remove unnecessary check to remove lint error + +**2.1.0 / 2025-05-01** +- fix e-notation + - to return string when invalid enotation is found. Eg `E24` + - to return valid number when only leading zero before e char is present + +**2.0.5 / 2025-02-27** +- changes done in 1.1.2 + +**1.1.2 / 2025-02-27** +- fix skiplike for 0 + +**1.1.1 / 2025-02-21** +- All recent fixes of version 2 + +**2.0.4 / 2025-02-20** +- remove console log + +**2.0.3 / 2025-02-20** +- fix for string which are falsly identified as e-notation + +**2.0.1 / 2025-02-20** +- fix: handle only zeros +- fix: return original string when NaN + +**2.0.0 / 2025-02-20** +- Migrating to ESM modules. No functional change + +**1.1.0 / 2025-02-20** +- fix (#9): support missing floating point and e notations \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/strnum/LICENSE b/food-ordering-app/server/node_modules/strnum/LICENSE new file mode 100644 index 000000000..64505544b --- /dev/null +++ b/food-ordering-app/server/node_modules/strnum/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Natural Intelligence + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/food-ordering-app/server/node_modules/strnum/README.md b/food-ordering-app/server/node_modules/strnum/README.md new file mode 100644 index 000000000..737dd0dee --- /dev/null +++ b/food-ordering-app/server/node_modules/strnum/README.md @@ -0,0 +1,104 @@ +# strnum +Parse string into Number based on configuration + +## Users + + + + + +Many React Native projects and plugins + +## Usage + +```bash +npm install strnum +``` +```js +const toNumber = require("strnum"); + +toNumber(undefined) // undefined +toNumber(null)) //null +toNumber("")) // "" +toNumber("string"); //"string") +toNumber("12,12"); //"12,12") +toNumber("12 12"); //"12 12") +toNumber("12-12"); //"12-12") +toNumber("12.12.12"); //"12.12.12") +toNumber("0x2f"); //47) +toNumber("-0x2f"); //-47) +toNumber("0x2f", { hex : true}); //47) +toNumber("-0x2f", { hex : true}); //-47) +toNumber("0x2f", { hex : false}); //"0x2f") +toNumber("-0x2f", { hex : false}); //"-0x2f") +toNumber("06"); //6) +toNumber("06", { leadingZeros : true}); //6) +toNumber("06", { leadingZeros : false}); //"06") + +toNumber("006"); //6) +toNumber("006", { leadingZeros : true}); //6) +toNumber("006", { leadingZeros : false}); //"006") +toNumber("0.0"); //0) +toNumber("00.00"); //0) +toNumber("0.06"); //0.06) +toNumber("00.6"); //0.6) +toNumber(".006"); //0.006) +toNumber("6.0"); //6) +toNumber("06.0"); //6) + +toNumber("0.0", { leadingZeros : false}); //0) +toNumber("00.00", { leadingZeros : false}); //"00.00") +toNumber("0.06", { leadingZeros : false}); //0.06) +toNumber("00.6", { leadingZeros : false}); //"00.6") +toNumber(".006", { leadingZeros : false}); //0.006) +toNumber("6.0" , { leadingZeros : false}); //6) +toNumber("06.0" , { leadingZeros : false}); //"06.0") +toNumber("-06"); //-6) +toNumber("-06", { leadingZeros : true}); //-6) +toNumber("-06", { leadingZeros : false}); //"-06") + +toNumber("-0.0"); //-0) +toNumber("-00.00"); //-0) +toNumber("-0.06"); //-0.06) +toNumber("-00.6"); //-0.6) +toNumber("-.006"); //-0.006) +toNumber("-6.0"); //-6) +toNumber("-06.0"); //-6) + +toNumber("-0.0" , { leadingZeros : false}); //-0) +toNumber("-00.00", { leadingZeros : false}); //"-00.00") +toNumber("-0.06", { leadingZeros : false}); //-0.06) +toNumber("-00.6", { leadingZeros : false}); //"-00.6") +toNumber("-.006", {leadingZeros : false}); //-0.006) +toNumber("-6.0" , { leadingZeros : false}); //-6) +toNumber("-06.0" , { leadingZeros : false}); //"-06.0") +toNumber("420926189200190257681175017717") ; //4.209261892001902e+29) +toNumber("000000000000000000000000017717" , { leadingZeros : false}); //"000000000000000000000000017717") +toNumber("000000000000000000000000017717" , { leadingZeros : true}); //17717) +toNumber("01.0e2" , { leadingZeros : false}); //"01.0e2") +toNumber("-01.0e2" , { leadingZeros : false}); //"-01.0e2") +toNumber("01.0e2") ; //100) +toNumber("-01.0e2") ; //-100) +toNumber("1.0e2") ; //100) + +toNumber("-1.0e2") ; //-100) +toNumber("1.0e-2"); //0.01) + +toNumber("+1212121212"); // 1212121212 +toNumber("+1212121212", { skipLike: /\+[0-9]{10}/} )); //"+1212121212" +``` + +Supported Options +```js +hex: true, //when hexadecimal string should be parsed +leadingZeros: true, //when number with leading zeros like 08 should be parsed. 0.0 is not impacted +eNotation: true, //when number with eNotation or number parsed in eNotation should be considered +skipLike: /regex/ //when string should not be parsed when it matches the specified regular expression +infinity: "original", // "null", "infinity" (Infinity type), "string" ("Infinity" (the string literal)) +``` + + +# Try out our other work + +WishIn - You need it if negative thoughts take over all the time
+ diff --git a/food-ordering-app/server/node_modules/strnum/algo.stflow b/food-ordering-app/server/node_modules/strnum/algo.stflow new file mode 100644 index 000000000..fd0e64e6c --- /dev/null +++ b/food-ordering-app/server/node_modules/strnum/algo.stflow @@ -0,0 +1,84 @@ + +FLOW: toNumber +input: x, options +IF not string + END x +ELSE_IF should skip + END x +ELSE_IF 0 + END 0 +ELSE_IF hex is supported AND x is hex + END int of x of base 16 +ELSE_IF possible e notation + FOLLOW: resolve enotation (x, trimmed x, options) +ELSE + IF match numeric pattern + separate sign, leading zeros, pure number + IF x doesn't starts with "[+-]0." + END number(x) + IF leading zeros are not allowed + IF leading zeros > 1 + #00.1 + END x + ELSE_IF leading zeros == 1 AND decimal is not adjacent to leading zeros + #06.5 + #but not 0.65, .65, 6.0 + END x + ELSE_IF str has only zeros + END 0 + ELSE + parse x to number + IF parsed x == 0 or -0 + END parsed x + ELSE_IF parsed x is eNotation + IF conversion to enotation is allowed + END parsed x + ELSE + END x + ELSE_IF floating number + IF parsed x is 0 + END parsed x + ELSE_IF parsed x == number without leading 0s + #0.456. 0.79000 + END parsed x + ELSE_IF parsed x is negative AND == parsed x == number without leading 0s + END parsed x + ELSE + END x + ELSE_IF leading 0s are present + IF parsed x == x without leading 0s + END parsed x + ELSE + END x + ELSE + IF parsed x == x (consider sign) + END parsed x + ELSE + END x + + ELSE + END x + + + +FLOW: resolve enotation +input: x, trimmed x, options +IF eNotation has not to be evaluated + END x +IF match eNotation pattern + extract sign, eChar, leading zeros + find if eChar adjacent to leading zeros + + IF leading zeros > 1 AND eChar adjacent to leading zeros + # 00e, -00e + END x + ELSE_IF exp is `0e`, `0.e`, `-0.e`, `-0e` + END number(x); + ELSE_IF leading zeros are allowed but eChar is not adjacent to leading zeros + # -003e2 + remove leading zeros + END number(x) + ELSE + END x +ELSE + END x \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/strnum/package.json b/food-ordering-app/server/node_modules/strnum/package.json new file mode 100644 index 000000000..768866d41 --- /dev/null +++ b/food-ordering-app/server/node_modules/strnum/package.json @@ -0,0 +1,31 @@ +{ + "name": "strnum", + "version": "2.2.0", + "description": "Parse String to Number based on configuration", + "type": "module", + "main": "strnum.js", + "scripts": { + "test": "jasmine tests/*_test.js" + }, + "keywords": [ + "string", + "number", + "parse", + "convert" + ], + "repository": { + "type": "git", + "url": "https://github.com/NaturalIntelligence/strnum" + }, + "author": "Amit Gupta (https://amitkumargupta.work/)", + "license": "MIT", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "devDependencies": { + "jasmine": "^5.6.0" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/strnum/strnum.js b/food-ordering-app/server/node_modules/strnum/strnum.js new file mode 100644 index 000000000..0d66292f7 --- /dev/null +++ b/food-ordering-app/server/node_modules/strnum/strnum.js @@ -0,0 +1,155 @@ +const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/; +const numRegex = /^([\-\+])?(0*)([0-9]*(\.[0-9]*)?)$/; +// const octRegex = /^0x[a-z0-9]+/; +// const binRegex = /0x[a-z0-9]+/; + + +const consider = { + hex: true, + // oct: false, + leadingZeros: true, + decimalPoint: "\.", + eNotation: true, + //skipLike: /regex/, + infinity: "original", // "null", "infinity" (Infinity type), "string" ("Infinity" (the string literal)) +}; + +export default function toNumber(str, options = {}) { + options = Object.assign({}, consider, options); + if (!str || typeof str !== "string") return str; + + let trimmedStr = str.trim(); + + if (options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str; + else if (str === "0") return 0; + else if (options.hex && hexRegex.test(trimmedStr)) { + return parse_int(trimmedStr, 16); + // }else if (options.oct && octRegex.test(str)) { + // return Number.parseInt(val, 8); + } else if (!isFinite(trimmedStr)) { //Infinity + return handleInfinity(str, Number(trimmedStr), options); + } else if (trimmedStr.includes('e') || trimmedStr.includes('E')) { //eNotation + return resolveEnotation(str, trimmedStr, options); + // }else if (options.parseBin && binRegex.test(str)) { + // return Number.parseInt(val, 2); + } else { + //separate negative sign, leading zeros, and rest number + const match = numRegex.exec(trimmedStr); + // +00.123 => [ , '+', '00', '.123', .. + if (match) { + const sign = match[1] || ""; + const leadingZeros = match[2]; + let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros + const decimalAdjacentToLeadingZeros = sign ? // 0., -00., 000. + str[leadingZeros.length + 1] === "." + : str[leadingZeros.length] === "."; + + //trim ending zeros for floating number + if (!options.leadingZeros //leading zeros are not allowed + && (leadingZeros.length > 1 + || (leadingZeros.length === 1 && !decimalAdjacentToLeadingZeros))) { + // 00, 00.3, +03.24, 03, 03.24 + return str; + } + else {//no leading zeros or leading zeros are allowed + const num = Number(trimmedStr); + const parsedStr = String(num); + + if (num === 0) return num; + if (parsedStr.search(/[eE]/) !== -1) { //given number is long and parsed to eNotation + if (options.eNotation) return num; + else return str; + } else if (trimmedStr.indexOf(".") !== -1) { //floating number + if (parsedStr === "0") return num; //0.0 + else if (parsedStr === numTrimmedByZeros) return num; //0.456. 0.79000 + else if (parsedStr === `${sign}${numTrimmedByZeros}`) return num; + else return str; + } + + let n = leadingZeros ? numTrimmedByZeros : trimmedStr; + if (leadingZeros) { + // -009 => -9 + return (n === parsedStr) || (sign + n === parsedStr) ? num : str + } else { + // +9 + return (n === parsedStr) || (n === sign + parsedStr) ? num : str + } + } + } else { //non-numeric string + return str; + } + } +} + +const eNotationRegx = /^([-+])?(0*)(\d*(\.\d*)?[eE][-\+]?\d+)$/; +function resolveEnotation(str, trimmedStr, options) { + if (!options.eNotation) return str; + const notation = trimmedStr.match(eNotationRegx); + if (notation) { + let sign = notation[1] || ""; + const eChar = notation[3].indexOf("e") === -1 ? "E" : "e"; + const leadingZeros = notation[2]; + const eAdjacentToLeadingZeros = sign ? // 0E. + str[leadingZeros.length + 1] === eChar + : str[leadingZeros.length] === eChar; + + if (leadingZeros.length > 1 && eAdjacentToLeadingZeros) return str; + else if (leadingZeros.length === 1 + && (notation[3].startsWith(`.${eChar}`) || notation[3][0] === eChar)) { + return Number(trimmedStr); + } else if (options.leadingZeros && !eAdjacentToLeadingZeros) { //accept with leading zeros + //remove leading 0s + trimmedStr = (notation[1] || "") + notation[3]; + return Number(trimmedStr); + } else return str; + } else { + return str; + } +} + +/** + * + * @param {string} numStr without leading zeros + * @returns + */ +function trimZeros(numStr) { + if (numStr && numStr.indexOf(".") !== -1) {//float + numStr = numStr.replace(/0+$/, ""); //remove ending zeros + if (numStr === ".") numStr = "0"; + else if (numStr[0] === ".") numStr = "0" + numStr; + else if (numStr[numStr.length - 1] === ".") numStr = numStr.substring(0, numStr.length - 1); + return numStr; + } + return numStr; +} + +function parse_int(numStr, base) { + //polyfill + if (parseInt) return parseInt(numStr, base); + else if (Number.parseInt) return Number.parseInt(numStr, base); + else if (window && window.parseInt) return window.parseInt(numStr, base); + else throw new Error("parseInt, Number.parseInt, window.parseInt are not supported") +} + +/** + * Handle infinite values based on user option + * @param {string} str - original input string + * @param {number} num - parsed number (Infinity or -Infinity) + * @param {object} options - user options + * @returns {string|number|null} based on infinity option + */ +function handleInfinity(str, num, options) { + const isPositive = num === Infinity; + + switch (options.infinity.toLowerCase()) { + case "null": + return null; + case "infinity": + return num; // Return Infinity or -Infinity + case "string": + return isPositive ? "Infinity" : "-Infinity"; + case "original": + default: + return str; // Return original string like "1e1000" + } +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/strnum/tests/infinity_test.js b/food-ordering-app/server/node_modules/strnum/tests/infinity_test.js new file mode 100644 index 000000000..cb62da9c5 --- /dev/null +++ b/food-ordering-app/server/node_modules/strnum/tests/infinity_test.js @@ -0,0 +1,18 @@ +import toNumber from "../strnum.js"; + +describe("Should convert all the valid numeric strings to number", () => { + it("should return infinity as per user option", () => { + expect(toNumber("1e1000", { infinity: "original" })).toEqual("1e1000"); + expect(toNumber("1e1000", { infinity: "null" })).toEqual(null); + expect(toNumber("1e1000", { infinity: "infinity" })).toEqual(Infinity); + expect(toNumber("1e1000", { infinity: "string" })).toEqual("Infinity"); + expect(toNumber("-1e1000", { infinity: "original" })).toEqual("-1e1000"); + expect(toNumber("-1e1000", { infinity: "null" })).toEqual(null); + expect(toNumber("-1e1000", { infinity: "infinity" })).toEqual(-Infinity); + expect(toNumber("-1e1000", { infinity: "string" })).toEqual("-Infinity"); + + + expect(toNumber("1e309")).toEqual("1e309"); + + }); +}); \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/strnum/tests/strnum_test.js b/food-ordering-app/server/node_modules/strnum/tests/strnum_test.js new file mode 100644 index 000000000..5a854b702 --- /dev/null +++ b/food-ordering-app/server/node_modules/strnum/tests/strnum_test.js @@ -0,0 +1,172 @@ +import toNumber from "../strnum.js"; + +describe("Should convert all the valid numeric strings to number", () => { + it("should return undefined, null, empty string, or non-numeric as it is", () => { + expect(toNumber(undefined)).not.toBeDefined(); + expect(toNumber(null)).toEqual(null); + expect(toNumber("")).toEqual(""); + expect(toNumber("string")).toEqual("string"); + expect(toNumber("e89794659669cb7bb967db73a7ea6889c3891727")).toEqual("e89794659669cb7bb967db73a7ea6889c3891727"); + }); + it("should not parse number with spaces or comma", () => { + expect(toNumber("12,12")).toEqual("12,12"); + expect(toNumber("12 12")).toEqual("12 12"); + expect(toNumber("12-12")).toEqual("12-12"); + expect(toNumber("12.12.12")).toEqual("12.12.12"); + }) + it("should consider + sign", () => { + expect(toNumber("+12")).toEqual(12); + expect(toNumber("+ 12")).toEqual("+ 12"); + expect(toNumber("12+12")).toEqual("12+12"); + expect(toNumber("1212+")).toEqual("1212+"); + }) + it("should parse hexadecimal values", () => { + expect(toNumber("0x2f")).toEqual(47); + expect(toNumber("-0x2f")).toEqual(-47); + expect(toNumber("0x2f", { hex: true })).toEqual(47); + expect(toNumber("-0x2f", { hex: true })).toEqual(-47); + expect(toNumber("0x2f", { hex: false })).toEqual("0x2f"); + expect(toNumber("-0x2f", { hex: false })).toEqual("-0x2f"); + }) + it("should not parse strings with 0x embedded", () => { + expect(toNumber("0xzz")).toEqual("0xzz"); + expect(toNumber("iweraf0x123qwerqwer")).toEqual("iweraf0x123qwerqwer"); + expect(toNumber("1230x55")).toEqual("1230x55"); + expect(toNumber("JVBERi0xLjMNCiXi48")).toEqual("JVBERi0xLjMNCiXi48"); + }) + it("leading zeros", () => { + expect(toNumber("0")).toEqual(0); + expect(toNumber("00")).toEqual(0); + expect(toNumber("00.0")).toEqual(0); + + expect(toNumber("0", { leadingZeros: false })).toEqual(0); + expect(toNumber("00", { leadingZeros: false })).toEqual("00"); + expect(toNumber("00.0", { leadingZeros: false })).toEqual("00.0"); + + expect(toNumber("06")).toEqual(6); + expect(toNumber("06", { leadingZeros: true })).toEqual(6); + expect(toNumber("06", { leadingZeros: false })).toEqual("06"); + + expect(toNumber("006")).toEqual(6); + expect(toNumber("006", { leadingZeros: true })).toEqual(6); + expect(toNumber("006", { leadingZeros: false })).toEqual("006"); + + expect(toNumber("000000000000000000000000017717", { leadingZeros: false })).toEqual("000000000000000000000000017717"); + expect(toNumber("000000000000000000000000017717", { leadingZeros: true })).toEqual(17717); + expect(toNumber("020211201030005811824")).toEqual("020211201030005811824"); + expect(toNumber("0420926189200190257681175017717")).toEqual(4.209261892001902e+29); + }) + it("invalid floating number", () => { + expect(toNumber("20.21.030")).toEqual("20.21.030"); + expect(toNumber("0.21.030")).toEqual("0.21.030"); + expect(toNumber("0.21.")).toEqual("0.21."); + }); + it("floating point and leading zeros", () => { + expect(toNumber("0.")).toEqual(0); + expect(toNumber("+0.")).toEqual(0); + expect(toNumber("-0.")).toEqual(-0); + expect(toNumber("1.")).toEqual(1); + expect(toNumber("00.00")).toEqual(0); + expect(toNumber("0.06")).toEqual(0.06); + expect(toNumber("00.6")).toEqual(0.6); + expect(toNumber(".006")).toEqual(0.006); + expect(toNumber("6.0")).toEqual(6); + expect(toNumber("06.0")).toEqual(6); + + expect(toNumber("0.0", { leadingZeros: false })).toEqual(0); + expect(toNumber("00.00", { leadingZeros: false })).toEqual("00.00"); + expect(toNumber("0.06", { leadingZeros: false })).toEqual(0.06); + expect(toNumber("00.6", { leadingZeros: false })).toEqual("00.6"); + expect(toNumber(".006", { leadingZeros: false })).toEqual(0.006); + expect(toNumber("6.0", { leadingZeros: false })).toEqual(6); + expect(toNumber("06.0", { leadingZeros: false })).toEqual("06.0"); + }) + it("negative number leading zeros", () => { + expect(toNumber("+06")).toEqual(6); + expect(toNumber("-06")).toEqual(-6); + expect(toNumber("-06", { leadingZeros: true })).toEqual(-6); + expect(toNumber("-06", { leadingZeros: false })).toEqual("-06"); + + expect(toNumber("-0.0")).toEqual(-0); + expect(toNumber("-00.00")).toEqual(-0); + expect(toNumber("-0.06")).toEqual(-0.06); + expect(toNumber("-00.6")).toEqual(-0.6); + expect(toNumber("-.006")).toEqual(-0.006); + expect(toNumber("-6.0")).toEqual(-6); + expect(toNumber("-06.0")).toEqual(-6); + expect(toNumber("+06.0")).toEqual(6); + + expect(toNumber("-0.0", { leadingZeros: false })).toEqual(-0); + expect(toNumber("-00.00", { leadingZeros: false })).toEqual("-00.00"); + expect(toNumber("-0.06", { leadingZeros: false })).toEqual(-0.06); + expect(toNumber("-00.6", { leadingZeros: false })).toEqual("-00.6"); + expect(toNumber("-.006", { leadingZeros: false })).toEqual(-0.006); + expect(toNumber("-6.0", { leadingZeros: false })).toEqual(-6); + expect(toNumber("-06.0", { leadingZeros: false })).toEqual("-06.0"); + }) + it("long number", () => { + expect(toNumber("020211201030005811824")).toEqual("020211201030005811824"); + expect(toNumber("20211201030005811824")).toEqual("20211201030005811824"); + expect(toNumber("20.211201030005811824")).toEqual("20.211201030005811824"); + expect(toNumber("0.211201030005811824")).toEqual("0.211201030005811824"); + }); + it("scientific notation", () => { + expect(toNumber("01.0e2", { leadingZeros: false })).toEqual("01.0e2"); + expect(toNumber("-01.0e2", { leadingZeros: false })).toEqual("-01.0e2"); + expect(toNumber("01.0e2")).toEqual(100); + expect(toNumber("-01.0e2")).toEqual(-100); + expect(toNumber("1.0e2")).toEqual(100); + + expect(toNumber("-1.0e2")).toEqual(-100); + expect(toNumber("1.0e-2")).toEqual(0.01); + + expect(toNumber("420926189200190257681175017717")).toEqual(4.209261892001902e+29); + expect(toNumber("420926189200190257681175017717", { eNotation: false })).toEqual("420926189200190257681175017717"); + + expect(toNumber("1e-2")).toEqual(0.01); + expect(toNumber("1e+2")).toEqual(100); + expect(toNumber("1.e+2")).toEqual(100); + }); + + it("scientific notation with upper E", () => { + expect(toNumber("01.0E2", { leadingZeros: false })).toEqual("01.0E2"); + expect(toNumber("-01.0E2", { leadingZeros: false })).toEqual("-01.0E2"); + expect(toNumber("01.0E2")).toEqual(100); + expect(toNumber("-01.0E2")).toEqual(-100); + expect(toNumber("1.0E2")).toEqual(100); + + expect(toNumber("-1.0E2")).toEqual(-100); + expect(toNumber("1.0E-2")).toEqual(0.01); + + expect(toNumber("E-2")).toEqual("E-2"); + expect(toNumber("E2")).toEqual("E2"); + expect(toNumber("0E2")).toEqual(0); + expect(toNumber("-0E2")).toEqual(-0); + expect(toNumber("00E2")).toEqual("00E2"); + expect(toNumber("00E2", { leadingZeros: false })).toEqual("00E2"); + }); + + it("should skip matching pattern", () => { + expect(toNumber("0", { skipLike: /.*/ })).toEqual("0"); + expect(toNumber("+12", { skipLike: /\+[0-9]{10}/ })).toEqual(12); + expect(toNumber("12+12", { skipLike: /\+[0-9]{10}/ })).toEqual("12+12"); + expect(toNumber("12+1212121212", { skipLike: /\+[0-9]{10}/ })).toEqual("12+1212121212"); + expect(toNumber("+1212121212")).toEqual(1212121212); + expect(toNumber("+1212121212", { skipLike: /\+[0-9]{10}/ })).toEqual("+1212121212"); + }) + it("should not change string if not number", () => { + expect(toNumber("+12 12")).toEqual("+12 12"); + expect(toNumber(" +12 12 ")).toEqual(" +12 12 "); + }) + it("should ignore sorrounded spaces ", () => { + expect(toNumber(" +1212 ")).toEqual(1212); + }) + + it("negative numbers", () => { + expect(toNumber("+1212")).toEqual(1212); + expect(toNumber("+12.12")).toEqual(12.12); + expect(toNumber("-12.12")).toEqual(-12.12); + expect(toNumber("-012.12")).toEqual(-12.12); + expect(toNumber("-012.12")).toEqual(-12.12); + }) +}); diff --git a/food-ordering-app/server/node_modules/tslib/CopyrightNotice.txt b/food-ordering-app/server/node_modules/tslib/CopyrightNotice.txt new file mode 100644 index 000000000..5d7d2d9ce --- /dev/null +++ b/food-ordering-app/server/node_modules/tslib/CopyrightNotice.txt @@ -0,0 +1,15 @@ +/****************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ + diff --git a/food-ordering-app/server/node_modules/tslib/LICENSE.txt b/food-ordering-app/server/node_modules/tslib/LICENSE.txt new file mode 100644 index 000000000..fa7d1bdf9 --- /dev/null +++ b/food-ordering-app/server/node_modules/tslib/LICENSE.txt @@ -0,0 +1,12 @@ +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/tslib/README.md b/food-ordering-app/server/node_modules/tslib/README.md new file mode 100644 index 000000000..14b9a83dc --- /dev/null +++ b/food-ordering-app/server/node_modules/tslib/README.md @@ -0,0 +1,164 @@ +# tslib + +This is a runtime library for [TypeScript](https://www.typescriptlang.org/) that contains all of the TypeScript helper functions. + +This library is primarily used by the `--importHelpers` flag in TypeScript. +When using `--importHelpers`, a module that uses helper functions like `__extends` and `__assign` in the following emitted file: + +```ts +var __assign = (this && this.__assign) || Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; +}; +exports.x = {}; +exports.y = __assign({}, exports.x); + +``` + +will instead be emitted as something like the following: + +```ts +var tslib_1 = require("tslib"); +exports.x = {}; +exports.y = tslib_1.__assign({}, exports.x); +``` + +Because this can avoid duplicate declarations of things like `__extends`, `__assign`, etc., this means delivering users smaller files on average, as well as less runtime overhead. +For optimized bundles with TypeScript, you should absolutely consider using `tslib` and `--importHelpers`. + +# Installing + +For the latest stable version, run: + +## npm + +```sh +# TypeScript 3.9.2 or later +npm install tslib + +# TypeScript 3.8.4 or earlier +npm install tslib@^1 + +# TypeScript 2.3.2 or earlier +npm install tslib@1.6.1 +``` + +## yarn + +```sh +# TypeScript 3.9.2 or later +yarn add tslib + +# TypeScript 3.8.4 or earlier +yarn add tslib@^1 + +# TypeScript 2.3.2 or earlier +yarn add tslib@1.6.1 +``` + +## bower + +```sh +# TypeScript 3.9.2 or later +bower install tslib + +# TypeScript 3.8.4 or earlier +bower install tslib@^1 + +# TypeScript 2.3.2 or earlier +bower install tslib@1.6.1 +``` + +## JSPM + +```sh +# TypeScript 3.9.2 or later +jspm install tslib + +# TypeScript 3.8.4 or earlier +jspm install tslib@^1 + +# TypeScript 2.3.2 or earlier +jspm install tslib@1.6.1 +``` + +# Usage + +Set the `importHelpers` compiler option on the command line: + +``` +tsc --importHelpers file.ts +``` + +or in your tsconfig.json: + +```json +{ + "compilerOptions": { + "importHelpers": true + } +} +``` + +#### For bower and JSPM users + +You will need to add a `paths` mapping for `tslib`, e.g. For Bower users: + +```json +{ + "compilerOptions": { + "module": "amd", + "importHelpers": true, + "baseUrl": "./", + "paths": { + "tslib" : ["bower_components/tslib/tslib.d.ts"] + } + } +} +``` + +For JSPM users: + +```json +{ + "compilerOptions": { + "module": "system", + "importHelpers": true, + "baseUrl": "./", + "paths": { + "tslib" : ["jspm_packages/npm/tslib@2.x.y/tslib.d.ts"] + } + } +} +``` + +## Deployment + +- Choose your new version number +- Set it in `package.json` and `bower.json` +- Create a tag: `git tag [version]` +- Push the tag: `git push --tags` +- Create a [release in GitHub](https://github.com/microsoft/tslib/releases) +- Run the [publish to npm](https://github.com/microsoft/tslib/actions?query=workflow%3A%22Publish+to+NPM%22) workflow + +Done. + +# Contribute + +There are many ways to [contribute](https://github.com/Microsoft/TypeScript/blob/master/CONTRIBUTING.md) to TypeScript. + +* [Submit bugs](https://github.com/Microsoft/TypeScript/issues) and help us verify fixes as they are checked in. +* Review the [source code changes](https://github.com/Microsoft/TypeScript/pulls). +* Engage with other TypeScript users and developers on [StackOverflow](http://stackoverflow.com/questions/tagged/typescript). +* Join the [#typescript](http://twitter.com/#!/search/realtime/%23typescript) discussion on Twitter. +* [Contribute bug fixes](https://github.com/Microsoft/TypeScript/blob/master/CONTRIBUTING.md). + +# Documentation + +* [Quick tutorial](http://www.typescriptlang.org/Tutorial) +* [Programming handbook](http://www.typescriptlang.org/Handbook) +* [Homepage](http://www.typescriptlang.org/) diff --git a/food-ordering-app/server/node_modules/tslib/SECURITY.md b/food-ordering-app/server/node_modules/tslib/SECURITY.md new file mode 100644 index 000000000..869fdfe2b --- /dev/null +++ b/food-ordering-app/server/node_modules/tslib/SECURITY.md @@ -0,0 +1,41 @@ + + +## Security + +Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/). + +If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/opensource/security/definition), please report it to us as described below. + +## Reporting Security Issues + +**Please do not report security vulnerabilities through public GitHub issues.** + +Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). + +If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey). + +You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). + +Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue: + + * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) + * Full paths of source file(s) related to the manifestation of the issue + * The location of the affected source code (tag/branch/commit or direct URL) + * Any special configuration required to reproduce the issue + * Step-by-step instructions to reproduce the issue + * Proof-of-concept or exploit code (if possible) + * Impact of the issue, including how an attacker might exploit the issue + +This information will help us triage your report more quickly. + +If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) page for more details about our active programs. + +## Preferred Languages + +We prefer all communications to be in English. + +## Policy + +Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/opensource/security/cvd). + + diff --git a/food-ordering-app/server/node_modules/tslib/modules/index.d.ts b/food-ordering-app/server/node_modules/tslib/modules/index.d.ts new file mode 100644 index 000000000..3244fabee --- /dev/null +++ b/food-ordering-app/server/node_modules/tslib/modules/index.d.ts @@ -0,0 +1,38 @@ +// Note: named reexports are used instead of `export *` because +// TypeScript itself doesn't resolve the `export *` when checking +// if a particular helper exists. +export { + __extends, + __assign, + __rest, + __decorate, + __param, + __esDecorate, + __runInitializers, + __propKey, + __setFunctionName, + __metadata, + __awaiter, + __generator, + __exportStar, + __values, + __read, + __spread, + __spreadArrays, + __spreadArray, + __await, + __asyncGenerator, + __asyncDelegator, + __asyncValues, + __makeTemplateObject, + __importStar, + __importDefault, + __classPrivateFieldGet, + __classPrivateFieldSet, + __classPrivateFieldIn, + __createBinding, + __addDisposableResource, + __disposeResources, + __rewriteRelativeImportExtension, +} from '../tslib.js'; +export * as default from '../tslib.js'; diff --git a/food-ordering-app/server/node_modules/tslib/modules/index.js b/food-ordering-app/server/node_modules/tslib/modules/index.js new file mode 100644 index 000000000..f4f9a06d2 --- /dev/null +++ b/food-ordering-app/server/node_modules/tslib/modules/index.js @@ -0,0 +1,70 @@ +import tslib from '../tslib.js'; +const { + __extends, + __assign, + __rest, + __decorate, + __param, + __esDecorate, + __runInitializers, + __propKey, + __setFunctionName, + __metadata, + __awaiter, + __generator, + __exportStar, + __createBinding, + __values, + __read, + __spread, + __spreadArrays, + __spreadArray, + __await, + __asyncGenerator, + __asyncDelegator, + __asyncValues, + __makeTemplateObject, + __importStar, + __importDefault, + __classPrivateFieldGet, + __classPrivateFieldSet, + __classPrivateFieldIn, + __addDisposableResource, + __disposeResources, + __rewriteRelativeImportExtension, +} = tslib; +export { + __extends, + __assign, + __rest, + __decorate, + __param, + __esDecorate, + __runInitializers, + __propKey, + __setFunctionName, + __metadata, + __awaiter, + __generator, + __exportStar, + __createBinding, + __values, + __read, + __spread, + __spreadArrays, + __spreadArray, + __await, + __asyncGenerator, + __asyncDelegator, + __asyncValues, + __makeTemplateObject, + __importStar, + __importDefault, + __classPrivateFieldGet, + __classPrivateFieldSet, + __classPrivateFieldIn, + __addDisposableResource, + __disposeResources, + __rewriteRelativeImportExtension, +}; +export default tslib; diff --git a/food-ordering-app/server/node_modules/tslib/modules/package.json b/food-ordering-app/server/node_modules/tslib/modules/package.json new file mode 100644 index 000000000..96ae6e57e --- /dev/null +++ b/food-ordering-app/server/node_modules/tslib/modules/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/tslib/package.json b/food-ordering-app/server/node_modules/tslib/package.json new file mode 100644 index 000000000..57d057876 --- /dev/null +++ b/food-ordering-app/server/node_modules/tslib/package.json @@ -0,0 +1,47 @@ +{ + "name": "tslib", + "author": "Microsoft Corp.", + "homepage": "https://www.typescriptlang.org/", + "version": "2.8.1", + "license": "0BSD", + "description": "Runtime library for TypeScript helper functions", + "keywords": [ + "TypeScript", + "Microsoft", + "compiler", + "language", + "javascript", + "tslib", + "runtime" + ], + "bugs": { + "url": "https://github.com/Microsoft/TypeScript/issues" + }, + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/tslib.git" + }, + "main": "tslib.js", + "module": "tslib.es6.js", + "jsnext:main": "tslib.es6.js", + "typings": "tslib.d.ts", + "sideEffects": false, + "exports": { + ".": { + "module": { + "types": "./modules/index.d.ts", + "default": "./tslib.es6.mjs" + }, + "import": { + "node": "./modules/index.js", + "default": { + "types": "./modules/index.d.ts", + "default": "./tslib.es6.mjs" + } + }, + "default": "./tslib.js" + }, + "./*": "./*", + "./": "./" + } +} diff --git a/food-ordering-app/server/node_modules/tslib/tslib.d.ts b/food-ordering-app/server/node_modules/tslib/tslib.d.ts new file mode 100644 index 000000000..9c27e0586 --- /dev/null +++ b/food-ordering-app/server/node_modules/tslib/tslib.d.ts @@ -0,0 +1,460 @@ +/****************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ + +/** + * Used to shim class extends. + * + * @param d The derived class. + * @param b The base class. + */ +export declare function __extends(d: Function, b: Function): void; + +/** + * Copy the values of all of the enumerable own properties from one or more source objects to a + * target object. Returns the target object. + * + * @param t The target object to copy to. + * @param sources One or more source objects from which to copy properties + */ +export declare function __assign(t: any, ...sources: any[]): any; + +/** + * Performs a rest spread on an object. + * + * @param t The source value. + * @param propertyNames The property names excluded from the rest spread. + */ +export declare function __rest(t: any, propertyNames: (string | symbol)[]): any; + +/** + * Applies decorators to a target object + * + * @param decorators The set of decorators to apply. + * @param target The target object. + * @param key If specified, the own property to apply the decorators to. + * @param desc The property descriptor, defaults to fetching the descriptor from the target object. + * @experimental + */ +export declare function __decorate(decorators: Function[], target: any, key?: string | symbol, desc?: any): any; + +/** + * Creates an observing function decorator from a parameter decorator. + * + * @param paramIndex The parameter index to apply the decorator to. + * @param decorator The parameter decorator to apply. Note that the return value is ignored. + * @experimental + */ +export declare function __param(paramIndex: number, decorator: Function): Function; + +/** + * Applies decorators to a class or class member, following the native ECMAScript decorator specification. + * @param ctor For non-field class members, the class constructor. Otherwise, `null`. + * @param descriptorIn The `PropertyDescriptor` to use when unable to look up the property from `ctor`. + * @param decorators The decorators to apply + * @param contextIn The `DecoratorContext` to clone for each decorator application. + * @param initializers An array of field initializer mutation functions into which new initializers are written. + * @param extraInitializers An array of extra initializer functions into which new initializers are written. + */ +export declare function __esDecorate(ctor: Function | null, descriptorIn: object | null, decorators: Function[], contextIn: object, initializers: Function[] | null, extraInitializers: Function[]): void; + +/** + * Runs field initializers or extra initializers generated by `__esDecorate`. + * @param thisArg The `this` argument to use. + * @param initializers The array of initializers to evaluate. + * @param value The initial value to pass to the initializers. + */ +export declare function __runInitializers(thisArg: unknown, initializers: Function[], value?: any): any; + +/** + * Converts a computed property name into a `string` or `symbol` value. + */ +export declare function __propKey(x: any): string | symbol; + +/** + * Assigns the name of a function derived from the left-hand side of an assignment. + * @param f The function to rename. + * @param name The new name for the function. + * @param prefix A prefix (such as `"get"` or `"set"`) to insert before the name. + */ +export declare function __setFunctionName(f: Function, name: string | symbol, prefix?: string): Function; + +/** + * Creates a decorator that sets metadata. + * + * @param metadataKey The metadata key + * @param metadataValue The metadata value + * @experimental + */ +export declare function __metadata(metadataKey: any, metadataValue: any): Function; + +/** + * Converts a generator function into a pseudo-async function, by treating each `yield` as an `await`. + * + * @param thisArg The reference to use as the `this` value in the generator function + * @param _arguments The optional arguments array + * @param P The optional promise constructor argument, defaults to the `Promise` property of the global object. + * @param generator The generator function + */ +export declare function __awaiter(thisArg: any, _arguments: any, P: Function, generator: Function): any; + +/** + * Creates an Iterator object using the body as the implementation. + * + * @param thisArg The reference to use as the `this` value in the function + * @param body The generator state-machine based implementation. + * + * @see [./docs/generator.md] + */ +export declare function __generator(thisArg: any, body: Function): any; + +/** + * Creates bindings for all enumerable properties of `m` on `exports` + * + * @param m The source object + * @param o The `exports` object. + */ +export declare function __exportStar(m: any, o: any): void; + +/** + * Creates a value iterator from an `Iterable` or `ArrayLike` object. + * + * @param o The object. + * @throws {TypeError} If `o` is neither `Iterable`, nor an `ArrayLike`. + */ +export declare function __values(o: any): any; + +/** + * Reads values from an `Iterable` or `ArrayLike` object and returns the resulting array. + * + * @param o The object to read from. + * @param n The maximum number of arguments to read, defaults to `Infinity`. + */ +export declare function __read(o: any, n?: number): any[]; + +/** + * Creates an array from iterable spread. + * + * @param args The Iterable objects to spread. + * @deprecated since TypeScript 4.2 - Use `__spreadArray` + */ +export declare function __spread(...args: any[][]): any[]; + +/** + * Creates an array from array spread. + * + * @param args The ArrayLikes to spread into the resulting array. + * @deprecated since TypeScript 4.2 - Use `__spreadArray` + */ +export declare function __spreadArrays(...args: any[][]): any[]; + +/** + * Spreads the `from` array into the `to` array. + * + * @param pack Replace empty elements with `undefined`. + */ +export declare function __spreadArray(to: any[], from: any[], pack?: boolean): any[]; + +/** + * Creates an object that signals to `__asyncGenerator` that it shouldn't be yielded, + * and instead should be awaited and the resulting value passed back to the generator. + * + * @param v The value to await. + */ +export declare function __await(v: any): any; + +/** + * Converts a generator function into an async generator function, by using `yield __await` + * in place of normal `await`. + * + * @param thisArg The reference to use as the `this` value in the generator function + * @param _arguments The optional arguments array + * @param generator The generator function + */ +export declare function __asyncGenerator(thisArg: any, _arguments: any, generator: Function): any; + +/** + * Used to wrap a potentially async iterator in such a way so that it wraps the result + * of calling iterator methods of `o` in `__await` instances, and then yields the awaited values. + * + * @param o The potentially async iterator. + * @returns A synchronous iterator yielding `__await` instances on every odd invocation + * and returning the awaited `IteratorResult` passed to `next` every even invocation. + */ +export declare function __asyncDelegator(o: any): any; + +/** + * Creates a value async iterator from an `AsyncIterable`, `Iterable` or `ArrayLike` object. + * + * @param o The object. + * @throws {TypeError} If `o` is neither `AsyncIterable`, `Iterable`, nor an `ArrayLike`. + */ +export declare function __asyncValues(o: any): any; + +/** + * Creates a `TemplateStringsArray` frozen object from the `cooked` and `raw` arrays. + * + * @param cooked The cooked possibly-sparse array. + * @param raw The raw string content. + */ +export declare function __makeTemplateObject(cooked: string[], raw: string[]): TemplateStringsArray; + +/** + * Used to shim default and named imports in ECMAScript Modules transpiled to CommonJS. + * + * ```js + * import Default, { Named, Other } from "mod"; + * // or + * import { default as Default, Named, Other } from "mod"; + * ``` + * + * @param mod The CommonJS module exports object. + */ +export declare function __importStar(mod: T): T; + +/** + * Used to shim default imports in ECMAScript Modules transpiled to CommonJS. + * + * ```js + * import Default from "mod"; + * ``` + * + * @param mod The CommonJS module exports object. + */ +export declare function __importDefault(mod: T): T | { default: T }; + +/** + * Emulates reading a private instance field. + * + * @param receiver The instance from which to read the private field. + * @param state A WeakMap containing the private field value for an instance. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * + * @throws {TypeError} If `state` doesn't have an entry for `receiver`. + */ +export declare function __classPrivateFieldGet( + receiver: T, + state: { has(o: T): boolean, get(o: T): V | undefined }, + kind?: "f" +): V; + +/** + * Emulates reading a private static field. + * + * @param receiver The object from which to read the private static field. + * @param state The class constructor containing the definition of the static field. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * @param f The descriptor that holds the static field value. + * + * @throws {TypeError} If `receiver` is not `state`. + */ +export declare function __classPrivateFieldGet unknown, V>( + receiver: T, + state: T, + kind: "f", + f: { value: V } +): V; + +/** + * Emulates evaluating a private instance "get" accessor. + * + * @param receiver The instance on which to evaluate the private "get" accessor. + * @param state A WeakSet used to verify an instance supports the private "get" accessor. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * @param f The "get" accessor function to evaluate. + * + * @throws {TypeError} If `state` doesn't have an entry for `receiver`. + */ +export declare function __classPrivateFieldGet( + receiver: T, + state: { has(o: T): boolean }, + kind: "a", + f: () => V +): V; + +/** + * Emulates evaluating a private static "get" accessor. + * + * @param receiver The object on which to evaluate the private static "get" accessor. + * @param state The class constructor containing the definition of the static "get" accessor. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * @param f The "get" accessor function to evaluate. + * + * @throws {TypeError} If `receiver` is not `state`. + */ +export declare function __classPrivateFieldGet unknown, V>( + receiver: T, + state: T, + kind: "a", + f: () => V +): V; + +/** + * Emulates reading a private instance method. + * + * @param receiver The instance from which to read a private method. + * @param state A WeakSet used to verify an instance supports the private method. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * @param f The function to return as the private instance method. + * + * @throws {TypeError} If `state` doesn't have an entry for `receiver`. + */ +export declare function __classPrivateFieldGet unknown>( + receiver: T, + state: { has(o: T): boolean }, + kind: "m", + f: V +): V; + +/** + * Emulates reading a private static method. + * + * @param receiver The object from which to read the private static method. + * @param state The class constructor containing the definition of the static method. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * @param f The function to return as the private static method. + * + * @throws {TypeError} If `receiver` is not `state`. + */ +export declare function __classPrivateFieldGet unknown, V extends (...args: any[]) => unknown>( + receiver: T, + state: T, + kind: "m", + f: V +): V; + +/** + * Emulates writing to a private instance field. + * + * @param receiver The instance on which to set a private field value. + * @param state A WeakMap used to store the private field value for an instance. + * @param value The value to store in the private field. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * + * @throws {TypeError} If `state` doesn't have an entry for `receiver`. + */ +export declare function __classPrivateFieldSet( + receiver: T, + state: { has(o: T): boolean, set(o: T, value: V): unknown }, + value: V, + kind?: "f" +): V; + +/** + * Emulates writing to a private static field. + * + * @param receiver The object on which to set the private static field. + * @param state The class constructor containing the definition of the private static field. + * @param value The value to store in the private field. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * @param f The descriptor that holds the static field value. + * + * @throws {TypeError} If `receiver` is not `state`. + */ +export declare function __classPrivateFieldSet unknown, V>( + receiver: T, + state: T, + value: V, + kind: "f", + f: { value: V } +): V; + +/** + * Emulates writing to a private instance "set" accessor. + * + * @param receiver The instance on which to evaluate the private instance "set" accessor. + * @param state A WeakSet used to verify an instance supports the private "set" accessor. + * @param value The value to store in the private accessor. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * @param f The "set" accessor function to evaluate. + * + * @throws {TypeError} If `state` doesn't have an entry for `receiver`. + */ +export declare function __classPrivateFieldSet( + receiver: T, + state: { has(o: T): boolean }, + value: V, + kind: "a", + f: (v: V) => void +): V; + +/** + * Emulates writing to a private static "set" accessor. + * + * @param receiver The object on which to evaluate the private static "set" accessor. + * @param state The class constructor containing the definition of the static "set" accessor. + * @param value The value to store in the private field. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * @param f The "set" accessor function to evaluate. + * + * @throws {TypeError} If `receiver` is not `state`. + */ +export declare function __classPrivateFieldSet unknown, V>( + receiver: T, + state: T, + value: V, + kind: "a", + f: (v: V) => void +): V; + +/** + * Checks for the existence of a private field/method/accessor. + * + * @param state The class constructor containing the static member, or the WeakMap or WeakSet associated with a private instance member. + * @param receiver The object for which to test the presence of the private member. + */ +export declare function __classPrivateFieldIn( + state: (new (...args: any[]) => unknown) | { has(o: any): boolean }, + receiver: unknown, +): boolean; + +/** + * Creates a re-export binding on `object` with key `objectKey` that references `target[key]`. + * + * @param object The local `exports` object. + * @param target The object to re-export from. + * @param key The property key of `target` to re-export. + * @param objectKey The property key to re-export as. Defaults to `key`. + */ +export declare function __createBinding(object: object, target: object, key: PropertyKey, objectKey?: PropertyKey): void; + +/** + * Adds a disposable resource to a resource-tracking environment object. + * @param env A resource-tracking environment object. + * @param value Either a Disposable or AsyncDisposable object, `null`, or `undefined`. + * @param async When `true`, `AsyncDisposable` resources can be added. When `false`, `AsyncDisposable` resources cannot be added. + * @returns The {@link value} argument. + * + * @throws {TypeError} If {@link value} is not an object, or if either `Symbol.dispose` or `Symbol.asyncDispose` are not + * defined, or if {@link value} does not have an appropriate `Symbol.dispose` or `Symbol.asyncDispose` method. + */ +export declare function __addDisposableResource(env: { stack: { value?: unknown, dispose?: Function, async: boolean }[]; error: unknown; hasError: boolean; }, value: T, async: boolean): T; + +/** + * Disposes all resources in a resource-tracking environment object. + * @param env A resource-tracking environment object. + * @returns A {@link Promise} if any resources in the environment were marked as `async` when added; otherwise, `void`. + * + * @throws {SuppressedError} if an error thrown during disposal would have suppressed a prior error from disposal or the + * error recorded in the resource-tracking environment object. + * @seealso {@link __addDisposableResource} + */ +export declare function __disposeResources(env: { stack: { value?: unknown, dispose?: Function, async: boolean }[]; error: unknown; hasError: boolean; }): any; + +/** + * Transforms a relative import specifier ending in a non-declaration TypeScript file extension to its JavaScript file extension counterpart. + * @param path The import specifier. + * @param preserveJsx Causes '*.tsx' to transform to '*.jsx' instead of '*.js'. Should be true when `--jsx` is set to `preserve`. + */ +export declare function __rewriteRelativeImportExtension(path: string, preserveJsx?: boolean): string; \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/tslib/tslib.es6.html b/food-ordering-app/server/node_modules/tslib/tslib.es6.html new file mode 100644 index 000000000..b122e41b0 --- /dev/null +++ b/food-ordering-app/server/node_modules/tslib/tslib.es6.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/tslib/tslib.es6.js b/food-ordering-app/server/node_modules/tslib/tslib.es6.js new file mode 100644 index 000000000..67ba5c5ae --- /dev/null +++ b/food-ordering-app/server/node_modules/tslib/tslib.es6.js @@ -0,0 +1,402 @@ +/****************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +/* global Reflect, Promise, SuppressedError, Symbol, Iterator */ + +var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); +}; + +export function __extends(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +} + +export var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + } + return __assign.apply(this, arguments); +} + +export function __rest(s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; +} + +export function __decorate(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +} + +export function __param(paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } +} + +export function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { + function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; } + var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; + var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; + var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); + var _, done = false; + for (var i = decorators.length - 1; i >= 0; i--) { + var context = {}; + for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p]; + for (var p in contextIn.access) context.access[p] = contextIn.access[p]; + context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); }; + var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context); + if (kind === "accessor") { + if (result === void 0) continue; + if (result === null || typeof result !== "object") throw new TypeError("Object expected"); + if (_ = accept(result.get)) descriptor.get = _; + if (_ = accept(result.set)) descriptor.set = _; + if (_ = accept(result.init)) initializers.unshift(_); + } + else if (_ = accept(result)) { + if (kind === "field") initializers.unshift(_); + else descriptor[key] = _; + } + } + if (target) Object.defineProperty(target, contextIn.name, descriptor); + done = true; +}; + +export function __runInitializers(thisArg, initializers, value) { + var useValue = arguments.length > 2; + for (var i = 0; i < initializers.length; i++) { + value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); + } + return useValue ? value : void 0; +}; + +export function __propKey(x) { + return typeof x === "symbol" ? x : "".concat(x); +}; + +export function __setFunctionName(f, name, prefix) { + if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; + return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); +}; + +export function __metadata(metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); +} + +export function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} + +export function __generator(thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype); + return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (g && (g = 0, op[0] && (_ = 0)), _) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +} + +export var __createBinding = Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +}); + +export function __exportStar(m, o) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p); +} + +export function __values(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +} + +export function __read(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; +} + +/** @deprecated */ +export function __spread() { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read(arguments[i])); + return ar; +} + +/** @deprecated */ +export function __spreadArrays() { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) + r[k] = a[j]; + return r; +} + +export function __spreadArray(to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +} + +export function __await(v) { + return this instanceof __await ? (this.v = v, this) : new __await(v); +} + +export function __asyncGenerator(thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i, q = []; + return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i; + function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; } + function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } } + function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function fulfill(value) { resume("next", value); } + function reject(value) { resume("throw", value); } + function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } +} + +export function __asyncDelegator(o) { + var i, p; + return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; + function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; } +} + +export function __asyncValues(o) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); + function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } + function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } +} + +export function __makeTemplateObject(cooked, raw) { + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } + return cooked; +}; + +var __setModuleDefault = Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}; + +var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); +}; + +export function __importStar(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; +} + +export function __importDefault(mod) { + return (mod && mod.__esModule) ? mod : { default: mod }; +} + +export function __classPrivateFieldGet(receiver, state, kind, f) { + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); +} + +export function __classPrivateFieldSet(receiver, state, value, kind, f) { + if (kind === "m") throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; +} + +export function __classPrivateFieldIn(state, receiver) { + if (receiver === null || (typeof receiver !== "object" && typeof receiver !== "function")) throw new TypeError("Cannot use 'in' operator on non-object"); + return typeof state === "function" ? receiver === state : state.has(receiver); +} + +export function __addDisposableResource(env, value, async) { + if (value !== null && value !== void 0) { + if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected."); + var dispose, inner; + if (async) { + if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined."); + dispose = value[Symbol.asyncDispose]; + } + if (dispose === void 0) { + if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined."); + dispose = value[Symbol.dispose]; + if (async) inner = dispose; + } + if (typeof dispose !== "function") throw new TypeError("Object not disposable."); + if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } }; + env.stack.push({ value: value, dispose: dispose, async: async }); + } + else if (async) { + env.stack.push({ async: true }); + } + return value; + +} + +var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { + var e = new Error(message); + return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; +}; + +export function __disposeResources(env) { + function fail(e) { + env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e; + env.hasError = true; + } + var r, s = 0; + function next() { + while (r = env.stack.pop()) { + try { + if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next); + if (r.dispose) { + var result = r.dispose.call(r.value); + if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); }); + } + else s |= 1; + } + catch (e) { + fail(e); + } + } + if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve(); + if (env.hasError) throw env.error; + } + return next(); +} + +export function __rewriteRelativeImportExtension(path, preserveJsx) { + if (typeof path === "string" && /^\.\.?\//.test(path)) { + return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) { + return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js"); + }); + } + return path; +} + +export default { + __extends: __extends, + __assign: __assign, + __rest: __rest, + __decorate: __decorate, + __param: __param, + __esDecorate: __esDecorate, + __runInitializers: __runInitializers, + __propKey: __propKey, + __setFunctionName: __setFunctionName, + __metadata: __metadata, + __awaiter: __awaiter, + __generator: __generator, + __createBinding: __createBinding, + __exportStar: __exportStar, + __values: __values, + __read: __read, + __spread: __spread, + __spreadArrays: __spreadArrays, + __spreadArray: __spreadArray, + __await: __await, + __asyncGenerator: __asyncGenerator, + __asyncDelegator: __asyncDelegator, + __asyncValues: __asyncValues, + __makeTemplateObject: __makeTemplateObject, + __importStar: __importStar, + __importDefault: __importDefault, + __classPrivateFieldGet: __classPrivateFieldGet, + __classPrivateFieldSet: __classPrivateFieldSet, + __classPrivateFieldIn: __classPrivateFieldIn, + __addDisposableResource: __addDisposableResource, + __disposeResources: __disposeResources, + __rewriteRelativeImportExtension: __rewriteRelativeImportExtension, +}; diff --git a/food-ordering-app/server/node_modules/tslib/tslib.es6.mjs b/food-ordering-app/server/node_modules/tslib/tslib.es6.mjs new file mode 100644 index 000000000..c17990a13 --- /dev/null +++ b/food-ordering-app/server/node_modules/tslib/tslib.es6.mjs @@ -0,0 +1,401 @@ +/****************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +/* global Reflect, Promise, SuppressedError, Symbol, Iterator */ + +var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); +}; + +export function __extends(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +} + +export var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + } + return __assign.apply(this, arguments); +} + +export function __rest(s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; +} + +export function __decorate(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +} + +export function __param(paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } +} + +export function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { + function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; } + var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; + var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; + var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); + var _, done = false; + for (var i = decorators.length - 1; i >= 0; i--) { + var context = {}; + for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p]; + for (var p in contextIn.access) context.access[p] = contextIn.access[p]; + context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); }; + var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context); + if (kind === "accessor") { + if (result === void 0) continue; + if (result === null || typeof result !== "object") throw new TypeError("Object expected"); + if (_ = accept(result.get)) descriptor.get = _; + if (_ = accept(result.set)) descriptor.set = _; + if (_ = accept(result.init)) initializers.unshift(_); + } + else if (_ = accept(result)) { + if (kind === "field") initializers.unshift(_); + else descriptor[key] = _; + } + } + if (target) Object.defineProperty(target, contextIn.name, descriptor); + done = true; +}; + +export function __runInitializers(thisArg, initializers, value) { + var useValue = arguments.length > 2; + for (var i = 0; i < initializers.length; i++) { + value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); + } + return useValue ? value : void 0; +}; + +export function __propKey(x) { + return typeof x === "symbol" ? x : "".concat(x); +}; + +export function __setFunctionName(f, name, prefix) { + if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; + return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); +}; + +export function __metadata(metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); +} + +export function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} + +export function __generator(thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype); + return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (g && (g = 0, op[0] && (_ = 0)), _) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +} + +export var __createBinding = Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +}); + +export function __exportStar(m, o) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p); +} + +export function __values(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +} + +export function __read(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; +} + +/** @deprecated */ +export function __spread() { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read(arguments[i])); + return ar; +} + +/** @deprecated */ +export function __spreadArrays() { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) + r[k] = a[j]; + return r; +} + +export function __spreadArray(to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +} + +export function __await(v) { + return this instanceof __await ? (this.v = v, this) : new __await(v); +} + +export function __asyncGenerator(thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i, q = []; + return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i; + function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; } + function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } } + function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function fulfill(value) { resume("next", value); } + function reject(value) { resume("throw", value); } + function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } +} + +export function __asyncDelegator(o) { + var i, p; + return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; + function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; } +} + +export function __asyncValues(o) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); + function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } + function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } +} + +export function __makeTemplateObject(cooked, raw) { + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } + return cooked; +}; + +var __setModuleDefault = Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}; + +var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); +}; + +export function __importStar(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; +} + +export function __importDefault(mod) { + return (mod && mod.__esModule) ? mod : { default: mod }; +} + +export function __classPrivateFieldGet(receiver, state, kind, f) { + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); +} + +export function __classPrivateFieldSet(receiver, state, value, kind, f) { + if (kind === "m") throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; +} + +export function __classPrivateFieldIn(state, receiver) { + if (receiver === null || (typeof receiver !== "object" && typeof receiver !== "function")) throw new TypeError("Cannot use 'in' operator on non-object"); + return typeof state === "function" ? receiver === state : state.has(receiver); +} + +export function __addDisposableResource(env, value, async) { + if (value !== null && value !== void 0) { + if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected."); + var dispose, inner; + if (async) { + if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined."); + dispose = value[Symbol.asyncDispose]; + } + if (dispose === void 0) { + if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined."); + dispose = value[Symbol.dispose]; + if (async) inner = dispose; + } + if (typeof dispose !== "function") throw new TypeError("Object not disposable."); + if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } }; + env.stack.push({ value: value, dispose: dispose, async: async }); + } + else if (async) { + env.stack.push({ async: true }); + } + return value; +} + +var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { + var e = new Error(message); + return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; +}; + +export function __disposeResources(env) { + function fail(e) { + env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e; + env.hasError = true; + } + var r, s = 0; + function next() { + while (r = env.stack.pop()) { + try { + if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next); + if (r.dispose) { + var result = r.dispose.call(r.value); + if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); }); + } + else s |= 1; + } + catch (e) { + fail(e); + } + } + if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve(); + if (env.hasError) throw env.error; + } + return next(); +} + +export function __rewriteRelativeImportExtension(path, preserveJsx) { + if (typeof path === "string" && /^\.\.?\//.test(path)) { + return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) { + return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js"); + }); + } + return path; +} + +export default { + __extends, + __assign, + __rest, + __decorate, + __param, + __esDecorate, + __runInitializers, + __propKey, + __setFunctionName, + __metadata, + __awaiter, + __generator, + __createBinding, + __exportStar, + __values, + __read, + __spread, + __spreadArrays, + __spreadArray, + __await, + __asyncGenerator, + __asyncDelegator, + __asyncValues, + __makeTemplateObject, + __importStar, + __importDefault, + __classPrivateFieldGet, + __classPrivateFieldSet, + __classPrivateFieldIn, + __addDisposableResource, + __disposeResources, + __rewriteRelativeImportExtension, +}; diff --git a/food-ordering-app/server/node_modules/tslib/tslib.html b/food-ordering-app/server/node_modules/tslib/tslib.html new file mode 100644 index 000000000..44c9ba51e --- /dev/null +++ b/food-ordering-app/server/node_modules/tslib/tslib.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/food-ordering-app/server/node_modules/tslib/tslib.js b/food-ordering-app/server/node_modules/tslib/tslib.js new file mode 100644 index 000000000..b6509f775 --- /dev/null +++ b/food-ordering-app/server/node_modules/tslib/tslib.js @@ -0,0 +1,484 @@ +/****************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +/* global global, define, Symbol, Reflect, Promise, SuppressedError, Iterator */ +var __extends; +var __assign; +var __rest; +var __decorate; +var __param; +var __esDecorate; +var __runInitializers; +var __propKey; +var __setFunctionName; +var __metadata; +var __awaiter; +var __generator; +var __exportStar; +var __values; +var __read; +var __spread; +var __spreadArrays; +var __spreadArray; +var __await; +var __asyncGenerator; +var __asyncDelegator; +var __asyncValues; +var __makeTemplateObject; +var __importStar; +var __importDefault; +var __classPrivateFieldGet; +var __classPrivateFieldSet; +var __classPrivateFieldIn; +var __createBinding; +var __addDisposableResource; +var __disposeResources; +var __rewriteRelativeImportExtension; +(function (factory) { + var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {}; + if (typeof define === "function" && define.amd) { + define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); }); + } + else if (typeof module === "object" && typeof module.exports === "object") { + factory(createExporter(root, createExporter(module.exports))); + } + else { + factory(createExporter(root)); + } + function createExporter(exports, previous) { + if (exports !== root) { + if (typeof Object.create === "function") { + Object.defineProperty(exports, "__esModule", { value: true }); + } + else { + exports.__esModule = true; + } + } + return function (id, v) { return exports[id] = previous ? previous(id, v) : v; }; + } +}) +(function (exporter) { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + + __extends = function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + + __assign = Object.assign || function (t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + + __rest = function (s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; + }; + + __decorate = function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + + __param = function (paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } + }; + + __esDecorate = function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { + function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; } + var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; + var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; + var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); + var _, done = false; + for (var i = decorators.length - 1; i >= 0; i--) { + var context = {}; + for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p]; + for (var p in contextIn.access) context.access[p] = contextIn.access[p]; + context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); }; + var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context); + if (kind === "accessor") { + if (result === void 0) continue; + if (result === null || typeof result !== "object") throw new TypeError("Object expected"); + if (_ = accept(result.get)) descriptor.get = _; + if (_ = accept(result.set)) descriptor.set = _; + if (_ = accept(result.init)) initializers.unshift(_); + } + else if (_ = accept(result)) { + if (kind === "field") initializers.unshift(_); + else descriptor[key] = _; + } + } + if (target) Object.defineProperty(target, contextIn.name, descriptor); + done = true; + }; + + __runInitializers = function (thisArg, initializers, value) { + var useValue = arguments.length > 2; + for (var i = 0; i < initializers.length; i++) { + value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); + } + return useValue ? value : void 0; + }; + + __propKey = function (x) { + return typeof x === "symbol" ? x : "".concat(x); + }; + + __setFunctionName = function (f, name, prefix) { + if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; + return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); + }; + + __metadata = function (metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); + }; + + __awaiter = function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + + __generator = function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype); + return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (g && (g = 0, op[0] && (_ = 0)), _) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } + }; + + __exportStar = function(m, o) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p); + }; + + __createBinding = Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); + }) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; + }); + + __values = function (o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); + }; + + __read = function (o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; + }; + + /** @deprecated */ + __spread = function () { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read(arguments[i])); + return ar; + }; + + /** @deprecated */ + __spreadArrays = function () { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) + r[k] = a[j]; + return r; + }; + + __spreadArray = function (to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); + }; + + __await = function (v) { + return this instanceof __await ? (this.v = v, this) : new __await(v); + }; + + __asyncGenerator = function (thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i, q = []; + return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i; + function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; } + function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } } + function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function fulfill(value) { resume("next", value); } + function reject(value) { resume("throw", value); } + function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } + }; + + __asyncDelegator = function (o) { + var i, p; + return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; + function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; } + }; + + __asyncValues = function (o) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); + function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } + function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } + }; + + __makeTemplateObject = function (cooked, raw) { + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } + return cooked; + }; + + var __setModuleDefault = Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + }) : function(o, v) { + o["default"] = v; + }; + + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + + __importStar = function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; + }; + + __importDefault = function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; + }; + + __classPrivateFieldGet = function (receiver, state, kind, f) { + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); + }; + + __classPrivateFieldSet = function (receiver, state, value, kind, f) { + if (kind === "m") throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; + }; + + __classPrivateFieldIn = function (state, receiver) { + if (receiver === null || (typeof receiver !== "object" && typeof receiver !== "function")) throw new TypeError("Cannot use 'in' operator on non-object"); + return typeof state === "function" ? receiver === state : state.has(receiver); + }; + + __addDisposableResource = function (env, value, async) { + if (value !== null && value !== void 0) { + if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected."); + var dispose, inner; + if (async) { + if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined."); + dispose = value[Symbol.asyncDispose]; + } + if (dispose === void 0) { + if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined."); + dispose = value[Symbol.dispose]; + if (async) inner = dispose; + } + if (typeof dispose !== "function") throw new TypeError("Object not disposable."); + if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } }; + env.stack.push({ value: value, dispose: dispose, async: async }); + } + else if (async) { + env.stack.push({ async: true }); + } + return value; + }; + + var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { + var e = new Error(message); + return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; + }; + + __disposeResources = function (env) { + function fail(e) { + env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e; + env.hasError = true; + } + var r, s = 0; + function next() { + while (r = env.stack.pop()) { + try { + if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next); + if (r.dispose) { + var result = r.dispose.call(r.value); + if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); }); + } + else s |= 1; + } + catch (e) { + fail(e); + } + } + if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve(); + if (env.hasError) throw env.error; + } + return next(); + }; + + __rewriteRelativeImportExtension = function (path, preserveJsx) { + if (typeof path === "string" && /^\.\.?\//.test(path)) { + return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) { + return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js"); + }); + } + return path; + }; + + exporter("__extends", __extends); + exporter("__assign", __assign); + exporter("__rest", __rest); + exporter("__decorate", __decorate); + exporter("__param", __param); + exporter("__esDecorate", __esDecorate); + exporter("__runInitializers", __runInitializers); + exporter("__propKey", __propKey); + exporter("__setFunctionName", __setFunctionName); + exporter("__metadata", __metadata); + exporter("__awaiter", __awaiter); + exporter("__generator", __generator); + exporter("__exportStar", __exportStar); + exporter("__createBinding", __createBinding); + exporter("__values", __values); + exporter("__read", __read); + exporter("__spread", __spread); + exporter("__spreadArrays", __spreadArrays); + exporter("__spreadArray", __spreadArray); + exporter("__await", __await); + exporter("__asyncGenerator", __asyncGenerator); + exporter("__asyncDelegator", __asyncDelegator); + exporter("__asyncValues", __asyncValues); + exporter("__makeTemplateObject", __makeTemplateObject); + exporter("__importStar", __importStar); + exporter("__importDefault", __importDefault); + exporter("__classPrivateFieldGet", __classPrivateFieldGet); + exporter("__classPrivateFieldSet", __classPrivateFieldSet); + exporter("__classPrivateFieldIn", __classPrivateFieldIn); + exporter("__addDisposableResource", __addDisposableResource); + exporter("__disposeResources", __disposeResources); + exporter("__rewriteRelativeImportExtension", __rewriteRelativeImportExtension); +}); + +0 && (module.exports = { + __extends: __extends, + __assign: __assign, + __rest: __rest, + __decorate: __decorate, + __param: __param, + __esDecorate: __esDecorate, + __runInitializers: __runInitializers, + __propKey: __propKey, + __setFunctionName: __setFunctionName, + __metadata: __metadata, + __awaiter: __awaiter, + __generator: __generator, + __exportStar: __exportStar, + __createBinding: __createBinding, + __values: __values, + __read: __read, + __spread: __spread, + __spreadArrays: __spreadArrays, + __spreadArray: __spreadArray, + __await: __await, + __asyncGenerator: __asyncGenerator, + __asyncDelegator: __asyncDelegator, + __asyncValues: __asyncValues, + __makeTemplateObject: __makeTemplateObject, + __importStar: __importStar, + __importDefault: __importDefault, + __classPrivateFieldGet: __classPrivateFieldGet, + __classPrivateFieldSet: __classPrivateFieldSet, + __classPrivateFieldIn: __classPrivateFieldIn, + __addDisposableResource: __addDisposableResource, + __disposeResources: __disposeResources, + __rewriteRelativeImportExtension: __rewriteRelativeImportExtension, +}); diff --git a/food-ordering-app/server/package-lock.json b/food-ordering-app/server/package-lock.json index 368d6d019..5bd7d1123 100644 --- a/food-ordering-app/server/package-lock.json +++ b/food-ordering-app/server/package-lock.json @@ -9,1275 +9,3933 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "body-parser": "^1.20.0", - "cors": "^2.8.5", - "express": "^4.18.1", + "body-parser": "^1.20.4", + "cors": "^2.8.6", + "dotenv": "^17.3.1", + "express": "^4.22.1", "lodash": "^4.17.21", - "mongoose": "^6.4.4", + "mongoose": "^6.13.9", "nodemon": "^2.0.19", - "stripe": "^9.13.0" + "stripe": "^9.16.0" }, "devDependencies": { "@faker-js/faker": "^7.3.0" } }, - "node_modules/@faker-js/faker": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-7.3.0.tgz", - "integrity": "sha512-1W0PZezq2rxlAssoWemi9gFRD8IQxvf0FPL5Km3TOmGHFG7ib0TbFBJ0yC7D/1NsxunjNTK6WjUXV8ao/mKZ5w==", - "dev": true, - "engines": { - "node": ">=14.0.0", - "npm": ">=6.0.0" + "node_modules/@aws-crypto/sha256-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", + "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-crypto/sha256-js": "^5.2.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" } }, - "node_modules/@types/node": { - "version": "18.0.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.3.tgz", - "integrity": "sha512-HzNRZtp4eepNitP+BD6k2L6DROIDG4Q0fm4x+dwfsr6LGmROENnok75VGw40628xf+iR24WeMFcHuuBDUAzzsQ==" - }, - "node_modules/@types/webidl-conversions": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-6.1.1.tgz", - "integrity": "sha512-XAahCdThVuCFDQLT7R7Pk/vqeObFNL3YqRyFZg+AqAP/W1/w3xHaIxuW7WszQqTbIBOPRcItYJIou3i/mppu3Q==" - }, - "node_modules/@types/whatwg-url": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", - "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "@types/node": "*", - "@types/webidl-conversions": "*" + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 0.6" + "node": ">=14.0.0" } }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 8" + "node": ">=14.0.0" } }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + "node_modules/@aws-crypto/sha256-js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", + "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "node_modules/@aws-crypto/supports-web-crypto": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", + "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.6.2" + } }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "node_modules/@aws-crypto/util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", + "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } }, - "node_modules/binary-extensions": { + "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": ">=8" + "node": ">=14.0.0" } }, - "node_modules/body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.10.3", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">=14.0.0" } }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/@aws-sdk/client-cognito-identity": { + "version": "3.1009.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.1009.0.tgz", + "integrity": "sha512-4+lBLB2sIdrnGruxqsfPM2AOSME3DVDRX7R5OXcgd2jfrUSyYdHJN1kT9hO/vwK4uajRZsQNP5hLJMttkjkoAQ==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "fill-range": "^7.0.1" + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/credential-provider-node": "^3.972.21", + "@aws-sdk/middleware-host-header": "^3.972.8", + "@aws-sdk/middleware-logger": "^3.972.8", + "@aws-sdk/middleware-recursion-detection": "^3.972.8", + "@aws-sdk/middleware-user-agent": "^3.972.21", + "@aws-sdk/region-config-resolver": "^3.972.8", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-endpoints": "^3.996.5", + "@aws-sdk/util-user-agent-browser": "^3.972.8", + "@aws-sdk/util-user-agent-node": "^3.973.7", + "@smithy/config-resolver": "^4.4.11", + "@smithy/core": "^3.23.11", + "@smithy/fetch-http-handler": "^5.3.15", + "@smithy/hash-node": "^4.2.12", + "@smithy/invalid-dependency": "^4.2.12", + "@smithy/middleware-content-length": "^4.2.12", + "@smithy/middleware-endpoint": "^4.4.25", + "@smithy/middleware-retry": "^4.4.42", + "@smithy/middleware-serde": "^4.2.14", + "@smithy/middleware-stack": "^4.2.12", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/node-http-handler": "^4.4.16", + "@smithy/protocol-http": "^5.3.12", + "@smithy/smithy-client": "^4.12.5", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.41", + "@smithy/util-defaults-mode-node": "^4.2.44", + "@smithy/util-endpoints": "^3.3.3", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-retry": "^4.2.12", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=20.0.0" } }, - "node_modules/bson": { - "version": "4.6.5", - "resolved": "https://registry.npmjs.org/bson/-/bson-4.6.5.tgz", - "integrity": "sha512-uqrgcjyOaZsHfz7ea8zLRCLe1u+QGUSzMZmvXqO24CDW7DWoW1qiN9folSwa7hSneTSgM2ykDIzF5kcQQ8cwNw==", + "node_modules/@aws-sdk/core": { + "version": "3.973.20", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.973.20.tgz", + "integrity": "sha512-i3GuX+lowD892F3IuJf8o6AbyDupMTdyTxQrCJGcn71ni5hTZ82L4nQhcdumxZ7XPJRJJVHS/CR3uYOIIs0PVA==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "buffer": "^5.6.0" + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/xml-builder": "^3.972.11", + "@smithy/core": "^3.23.11", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/signature-v4": "^5.3.12", + "@smithy/smithy-client": "^4.12.5", + "@smithy/types": "^4.13.1", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.0.0" } }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "node_modules/@aws-sdk/credential-provider-cognito-identity": { + "version": "3.972.13", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.972.13.tgz", + "integrity": "sha512-WZnIK8NPX+4OXkpVoNmUS+Ya1osqjszUsDqFEz97+a/LD5K012np9iR/eWEC43btx8zQjyRIK8kyiwbh8SiHzg==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "@aws-sdk/nested-clients": "^3.996.10", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" } }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.972.18", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.18.tgz", + "integrity": "sha512-X0B8AlQY507i5DwjLByeU2Af4ARsl9Vr84koDcXCbAkplmU+1xBFWxEPrWRAoh56waBne/yJqEloSwvRf4x6XA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 0.8" + "node": ">=20.0.0" } }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "node_modules/@aws-sdk/credential-provider-http": { + "version": "3.972.20", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.20.tgz", + "integrity": "sha512-ey9Lelj001+oOfrbKmS6R2CJAiXX7QKY4Vj9VJv6L2eE6/VjD8DocHIoYqztTm70xDLR4E1jYPTKfIui+eRNDA==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/types": "^3.973.6", + "@smithy/fetch-http-handler": "^5.3.15", + "@smithy/node-http-handler": "^4.4.16", + "@smithy/property-provider": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/smithy-client": "^4.12.5", + "@smithy/types": "^4.13.1", + "@smithy/util-stream": "^4.5.19", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=20.0.0" } }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.972.20", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.20.tgz", + "integrity": "sha512-5flXSnKHMloObNF+9N0cupKegnH1Z37cdVlpETVgx8/rAhCe+VNlkcZH3HDg2SDn9bI765S+rhNPXGDJJPfbtA==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/credential-provider-env": "^3.972.18", + "@aws-sdk/credential-provider-http": "^3.972.20", + "@aws-sdk/credential-provider-login": "^3.972.20", + "@aws-sdk/credential-provider-process": "^3.972.18", + "@aws-sdk/credential-provider-sso": "^3.972.20", + "@aws-sdk/credential-provider-web-identity": "^3.972.20", + "@aws-sdk/nested-clients": "^3.996.10", + "@aws-sdk/types": "^3.973.6", + "@smithy/credential-provider-imds": "^4.2.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "node": ">=20.0.0" } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "node_modules/@aws-sdk/credential-provider-login": { + "version": "3.972.20", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.20.tgz", + "integrity": "sha512-gEWo54nfqp2jABMu6HNsjVC4hDLpg9HC8IKSJnp0kqWtxIJYHTmiLSsIfI4ScQjxEwpB+jOOH8dOLax1+hy/Hw==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "safe-buffer": "5.2.1" + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/nested-clients": "^3.996.10", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 0.6" + "node": ">=20.0.0" } }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.972.21", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.21.tgz", + "integrity": "sha512-hah8if3/B/Q+LBYN5FukyQ1Mym6PLPDsBOBsIgNEYD6wLyZg0UmUF/OKIVC3nX9XH8TfTPuITK+7N/jenVACWA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/credential-provider-env": "^3.972.18", + "@aws-sdk/credential-provider-http": "^3.972.20", + "@aws-sdk/credential-provider-ini": "^3.972.20", + "@aws-sdk/credential-provider-process": "^3.972.18", + "@aws-sdk/credential-provider-sso": "^3.972.20", + "@aws-sdk/credential-provider-web-identity": "^3.972.20", + "@aws-sdk/types": "^3.973.6", + "@smithy/credential-provider-imds": "^4.2.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 0.6" + "node": ">=20.0.0" } }, - "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.972.18", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.18.tgz", + "integrity": "sha512-Tpl7SRaPoOLT32jbTWchPsn52hYYgJ0kpiFgnwk8pxTANQdUymVSZkzFvv1+oOgZm1CrbQUP9MBeoMZ9IzLZjA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 0.6" + "node": ">=20.0.0" } }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.972.20", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.20.tgz", + "integrity": "sha512-p+R+PYR5Z7Gjqf/6pvbCnzEHcqPCpLzR7Yf127HjJ6EAb4hUcD+qsNRnuww1sB/RmSeCLxyay8FMyqREw4p1RA==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "object-assign": "^4", - "vary": "^1" + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/nested-clients": "^3.996.10", + "@aws-sdk/token-providers": "3.1009.0", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 0.10" + "node": ">=20.0.0" } }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.972.20", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.20.tgz", + "integrity": "sha512-rWCmh8o7QY4CsUj63qopzMzkDq/yPpkrpb+CnjBEFSOg/02T/we7sSTVg4QsDiVS9uwZ8VyONhq98qt+pIh3KA==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "ms": "2.0.0" + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/nested-clients": "^3.996.10", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" } }, - "node_modules/denque": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz", - "integrity": "sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ==", + "node_modules/@aws-sdk/credential-providers": { + "version": "3.1009.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.1009.0.tgz", + "integrity": "sha512-URs590x3cCOHvjgDz8J0iqxDQ87NjF550pnWmd1jQm+w5ZHTxuUEYjivBQQkAB603IlEdeadqO1+LSjtMznhwA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/client-cognito-identity": "3.1009.0", + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/credential-provider-cognito-identity": "^3.972.13", + "@aws-sdk/credential-provider-env": "^3.972.18", + "@aws-sdk/credential-provider-http": "^3.972.20", + "@aws-sdk/credential-provider-ini": "^3.972.20", + "@aws-sdk/credential-provider-login": "^3.972.20", + "@aws-sdk/credential-provider-node": "^3.972.21", + "@aws-sdk/credential-provider-process": "^3.972.18", + "@aws-sdk/credential-provider-sso": "^3.972.20", + "@aws-sdk/credential-provider-web-identity": "^3.972.20", + "@aws-sdk/nested-clients": "^3.996.10", + "@aws-sdk/types": "^3.973.6", + "@smithy/config-resolver": "^4.4.11", + "@smithy/core": "^3.23.11", + "@smithy/credential-provider-imds": "^4.2.12", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=0.10" + "node": ">=20.0.0" } }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.8.tgz", + "integrity": "sha512-wAr2REfKsqoKQ+OkNqvOShnBoh+nkPurDKW7uAeVSu6kUECnWlSJiPvnoqxGlfousEY/v9LfS9sNc46hjSYDIQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 0.8" + "node": ">=20.0.0" } }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.8.tgz", + "integrity": "sha512-CWl5UCM57WUFaFi5kB7IBY1UmOeLvNZAZ2/OZ5l20ldiJ3TiIz1pC65gYj8X0BCPWkeR1E32mpsCk1L1I4n+lA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">=20.0.0" } }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.8.tgz", + "integrity": "sha512-BnnvYs2ZEpdlmZ2PNlV2ZyQ8j8AEkMTjN79y/YA475ER1ByFYrkVR85qmhni8oeTaJcDqbx364wDpitDAA/wCA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@aws/lambda-invoke-store": "^0.2.2", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 0.8" + "node": ">=20.0.0" } }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.972.21", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.21.tgz", + "integrity": "sha512-62XRl1GDYPpkt7cx1AX1SPy9wgNE9Iw/NPuurJu4lmhCWS7sGKO+kS53TQ8eRmIxy3skmvNInnk0ZbWrU5Dpyg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-endpoints": "^3.996.5", + "@smithy/core": "^3.23.11", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-retry": "^4.2.12", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 0.6" + "node": ">=20.0.0" } }, - "node_modules/express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "node_modules/@aws-sdk/nested-clients": { + "version": "3.996.10", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.996.10.tgz", + "integrity": "sha512-SlDol5Z+C7Ivnc2rKGqiqfSUmUZzY1qHfVs9myt/nxVwswgfpjdKahyTzLTx802Zfq0NFRs7AejwKzzzl5Co2w==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.0", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.10.3", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/middleware-host-header": "^3.972.8", + "@aws-sdk/middleware-logger": "^3.972.8", + "@aws-sdk/middleware-recursion-detection": "^3.972.8", + "@aws-sdk/middleware-user-agent": "^3.972.21", + "@aws-sdk/region-config-resolver": "^3.972.8", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-endpoints": "^3.996.5", + "@aws-sdk/util-user-agent-browser": "^3.972.8", + "@aws-sdk/util-user-agent-node": "^3.973.7", + "@smithy/config-resolver": "^4.4.11", + "@smithy/core": "^3.23.11", + "@smithy/fetch-http-handler": "^5.3.15", + "@smithy/hash-node": "^4.2.12", + "@smithy/invalid-dependency": "^4.2.12", + "@smithy/middleware-content-length": "^4.2.12", + "@smithy/middleware-endpoint": "^4.4.25", + "@smithy/middleware-retry": "^4.4.42", + "@smithy/middleware-serde": "^4.2.14", + "@smithy/middleware-stack": "^4.2.12", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/node-http-handler": "^4.4.16", + "@smithy/protocol-http": "^5.3.12", + "@smithy/smithy-client": "^4.12.5", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.41", + "@smithy/util-defaults-mode-node": "^4.2.44", + "@smithy/util-endpoints": "^3.3.3", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-retry": "^4.2.12", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 0.10.0" + "node": ">=20.0.0" } }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/@aws-sdk/region-config-resolver": { + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.8.tgz", + "integrity": "sha512-1eD4uhTDeambO/PNIDVG19A6+v4NdD7xzwLHDutHsUqz0B+i661MwQB2eYO4/crcCvCiQG4SRm1k81k54FEIvw==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "to-regex-range": "^5.0.1" + "@aws-sdk/types": "^3.973.6", + "@smithy/config-resolver": "^4.4.11", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=20.0.0" } }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "node_modules/@aws-sdk/token-providers": { + "version": "3.1009.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1009.0.tgz", + "integrity": "sha512-KCPLuTqN9u0Rr38Arln78fRG9KXpzsPWmof+PZzfAHMMQq2QED6YjQrkrfiH7PDefLWEposY1o4/eGwrmKA4JA==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/nested-clients": "^3.996.10", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 0.8" + "node": ">=20.0.0" } }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "node_modules/@aws-sdk/types": { + "version": "3.973.6", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.6.tgz", + "integrity": "sha512-Atfcy4E++beKtwJHiDln2Nby8W/mam64opFPTiHEqgsthqeydFS1pY+OUlN1ouNOmf8ArPU/6cDS65anOP3KQw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 0.6" + "node": ">=20.0.0" } }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.996.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.5.tgz", + "integrity": "sha512-Uh93L5sXFNbyR5sEPMzUU8tJ++Ku97EY4udmC01nB8Zu+xfBPwpIwJ6F7snqQeq8h2pf+8SGN5/NoytfKgYPIw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-endpoints": "^3.3.3", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 0.6" + "node": ">=20.0.0" } }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.965.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.965.5.tgz", + "integrity": "sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==", + "license": "Apache-2.0", "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=20.0.0" } }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.8.tgz", + "integrity": "sha512-B3KGXJviV2u6Cdw2SDY2aDhoJkVfY/Q/Trwk2CMSkikE1Oi6gRzxhvhIfiRpHfmIsAhV4EA54TVEX8K6CbHbkA==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@aws-sdk/types": "^3.973.6", + "@smithy/types": "^4.13.1", + "bowser": "^2.11.0", + "tslib": "^2.6.2" } }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.973.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.7.tgz", + "integrity": "sha512-Hz6EZMUAEzqUd7e+vZ9LE7mn+5gMbxltXy18v+YSFY+9LBJz15wkNZvw5JqfX3z0FS9n3bgUtz3L5rAsfh4YlA==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "is-glob": "^4.0.1" + "@aws-sdk/middleware-user-agent": "^3.972.21", + "@aws-sdk/types": "^3.973.6", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-config-provider": "^4.2.2", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 6" + "node": ">=20.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/@aws-sdk/xml-builder": { + "version": "3.972.11", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.11.tgz", + "integrity": "sha512-iitV/gZKQMvY9d7ovmyFnFuTHbBAtrmLnvaSb/3X8vOKyevwtpmEtyc8AdhVWZe0pI/1GsHxlEvQeOePFzy7KQ==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "function-bind": "^1.1.1" + "@smithy/types": "^4.13.1", + "fast-xml-parser": "5.4.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 0.4.0" + "node": ">=20.0.0" } }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "node_modules/@aws/lambda-invoke-store": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.4.tgz", + "integrity": "sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==", + "license": "Apache-2.0", + "optional": true, "engines": { - "node": ">=4" + "node": ">=18.0.0" } }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "node_modules/@faker-js/faker": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-7.3.0.tgz", + "integrity": "sha512-1W0PZezq2rxlAssoWemi9gFRD8IQxvf0FPL5Km3TOmGHFG7ib0TbFBJ0yC7D/1NsxunjNTK6WjUXV8ao/mKZ5w==", + "dev": true, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=14.0.0", + "npm": ">=6.0.0" } }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "node_modules/@mongodb-js/saslprep": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.4.6.tgz", + "integrity": "sha512-y+x3H1xBZd38n10NZF/rEBlvDOOMQ6LKUTHqr8R9VkJ+mmQOYtJFxIlkkK8fZrtOiL6VixbOBWMbZGBdal3Z1g==", + "license": "MIT", + "optional": true, "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" + "sparse-bitfield": "^3.0.3" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/@smithy/abort-controller": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.12.tgz", + "integrity": "sha512-xolrFw6b+2iYGl6EcOL7IJY71vvyZ0DJ3mcKtpykqPe2uscwtzDZJa1uVQXyP7w9Dd+kGwYnPbMsJrGISKiY/Q==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=18.0.0" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==" - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "node_modules/@smithy/config-resolver": { + "version": "4.4.11", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.11.tgz", + "integrity": "sha512-YxFiiG4YDAtX7WMN7RuhHZLeTmRRAOyCbr+zB8e3AQzHPnUhS8zXjB1+cniPVQI3xbWsQPM0X2aaIkO/ME0ymw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/node-config-provider": "^4.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-config-provider": "^4.2.2", + "@smithy/util-endpoints": "^3.3.3", + "@smithy/util-middleware": "^4.2.12", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 0.10" + "node": ">=18.0.0" } }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "node_modules/@smithy/core": { + "version": "3.23.11", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.23.11.tgz", + "integrity": "sha512-952rGf7hBRnhUIaeLp6q4MptKW8sPFe5VvkoZ5qIzFAtx6c/QZ/54FS3yootsyUSf9gJX/NBqEBNdNR7jMIlpQ==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "binary-extensions": "^2.0.0" + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-stream": "^4.5.19", + "@smithy/util-utf8": "^4.2.2", + "@smithy/uuid": "^1.1.2", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=18.0.0" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/@smithy/credential-provider-imds": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.12.tgz", + "integrity": "sha512-cr2lR792vNZcYMriSIj+Um3x9KWrjcu98kn234xA6reOAFMmbRpQMOv8KPgEmLLtx3eldU6c5wALKFqNOhugmg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/node-config-provider": "^4.3.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">=18.0.0" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/@smithy/fetch-http-handler": { + "version": "5.3.15", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.15.tgz", + "integrity": "sha512-T4jFU5N/yiIfrtrsb9uOQn7RdELdM/7HbyLNr6uO/mpkj1ctiVs7CihVr51w4LyQlXWDpXFn4BElf1WmQvZu/A==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "is-extglob": "^2.1.1" + "@smithy/protocol-http": "^5.3.12", + "@smithy/querystring-builder": "^4.2.12", + "@smithy/types": "^4.13.1", + "@smithy/util-base64": "^4.3.2", + "tslib": "^2.6.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=18.0.0" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/@smithy/hash-node": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.12.tgz", + "integrity": "sha512-QhBYbGrbxTkZ43QoTPrK72DoYviDeg6YKDrHTMJbbC+A0sml3kSjzFtXP7BtbyJnXojLfTQldGdUR0RGD8dA3w==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/types": "^4.13.1", + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=0.12.0" + "node": ">=18.0.0" } }, - "node_modules/kareem": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.4.1.tgz", - "integrity": "sha512-aJ9opVoXroQUPfovYP5kaj2lM7Jn02Gw13bL0lg9v0V7SaUc0qavPs0Eue7d2DcC3NjqI6QAUElXNsuZSeM+EA==" - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "node_modules/@smithy/invalid-dependency": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.12.tgz", + "integrity": "sha512-/4F1zb7Z8LOu1PalTdESFHR0RbPwHd3FcaG1sI3UEIriQTWakysgJr65lc1jj6QY5ye7aFsisajotH6UhWfm/g==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 0.6" + "node": ">=18.0.0" } }, - "node_modules/memory-pager": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", - "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", - "optional": true - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "node_modules/@smithy/is-array-buffer": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz", + "integrity": "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 0.6" + "node": ">=18.0.0" } }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" + "node_modules/@smithy/middleware-content-length": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.12.tgz", + "integrity": "sha512-YE58Yz+cvFInWI/wOTrB+DbvUVz/pLn5mC5MvOV4fdRUc6qGwygyngcucRQjAhiCEbmfLOXX0gntSIcgMvAjmA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">=4" + "node": ">=18.0.0" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "node_modules/@smithy/middleware-endpoint": { + "version": "4.4.25", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.25.tgz", + "integrity": "sha512-dqjLwZs2eBxIUG6Qtw8/YZ4DvzHGIf0DA18wrgtfP6a50UIO7e2nY0FPdcbv5tVJKqWCCU5BmGMOUwT7Puan+A==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/core": "^3.23.11", + "@smithy/middleware-serde": "^4.2.14", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-middleware": "^4.2.12", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 0.6" + "node": ">=18.0.0" } }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "node_modules/@smithy/middleware-retry": { + "version": "4.4.42", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.42.tgz", + "integrity": "sha512-vbwyqHRIpIZutNXZpLAozakzamcINaRCpEy1MYmK6xBeW3xN+TyPRA123GjXnuxZIjc9848MRRCugVMTXxC4Eg==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "mime-db": "1.52.0" + "@smithy/node-config-provider": "^4.3.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/service-error-classification": "^4.2.12", + "@smithy/smithy-client": "^4.12.5", + "@smithy/types": "^4.13.1", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-retry": "^4.2.12", + "@smithy/uuid": "^1.1.2", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 0.6" + "node": ">=18.0.0" } }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/@smithy/middleware-serde": { + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.14.tgz", + "integrity": "sha512-+CcaLoLa5apzSRtloOyG7lQvkUw2ZDml3hRh4QiG9WyEPfW5Ke/3tPOPiPjUneuT59Tpn8+c3RVaUvvkkwqZwg==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "brace-expansion": "^1.1.7" + "@smithy/core": "^3.23.11", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" }, "engines": { - "node": "*" + "node": ">=18.0.0" } }, - "node_modules/mongodb": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.7.0.tgz", - "integrity": "sha512-HhVar6hsUeMAVlIbwQwWtV36iyjKd9qdhY+s4wcU8K6TOj4Q331iiMy+FoPuxEntDIijTYWivwFJkLv8q/ZgvA==", + "node_modules/@smithy/middleware-stack": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.12.tgz", + "integrity": "sha512-kruC5gRHwsCOuyCd4ouQxYjgRAym2uDlCvQ5acuMtRrcdfg7mFBg6blaxcJ09STpt3ziEkis6bhg1uwrWU7txw==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "bson": "^4.6.3", - "denque": "^2.0.1", - "mongodb-connection-string-url": "^2.5.2", - "socks": "^2.6.2" + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">=12.9.0" - }, - "optionalDependencies": { - "saslprep": "^1.0.3" + "node": ">=18.0.0" } }, - "node_modules/mongodb-connection-string-url": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.2.tgz", - "integrity": "sha512-tWDyIG8cQlI5k3skB6ywaEA5F9f5OntrKKsT/Lteub2zgwSUlhqEN2inGgBTm8bpYJf8QYBdA/5naz65XDpczA==", + "node_modules/@smithy/node-config-provider": { + "version": "4.3.12", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.12.tgz", + "integrity": "sha512-tr2oKX2xMcO+rBOjobSwVAkV05SIfUKz8iI53rzxEmgW3GOOPOv0UioSDk+J8OpRQnpnhsO3Af6IEBabQBVmiw==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "@types/whatwg-url": "^8.2.1", - "whatwg-url": "^11.0.0" + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/mongoose": { - "version": "6.4.4", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.4.4.tgz", - "integrity": "sha512-r6sp96veRNhNIWFtHHe4Lqak+ilgiExYnnMLhYTGdzjIMR90G1ayx0JKFVdHuC6dKNHGFX0ETJGbf36N8Romjg==", + "node_modules/@smithy/node-http-handler": { + "version": "4.4.16", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.16.tgz", + "integrity": "sha512-ULC8UCS/HivdCB3jhi+kLFYe4B5gxH2gi9vHBfEIiRrT2jfKiZNiETJSlzRtE6B26XbBHjPtc8iZKSNqMol9bw==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "bson": "^4.6.2", - "kareem": "2.4.1", - "mongodb": "4.7.0", - "mpath": "0.9.0", - "mquery": "4.0.3", - "ms": "2.1.3", - "sift": "16.0.0" + "@smithy/abort-controller": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/querystring-builder": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mongoose" + "node": ">=18.0.0" } }, - "node_modules/mongoose/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/mpath": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", - "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", + "node_modules/@smithy/property-provider": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.12.tgz", + "integrity": "sha512-jqve46eYU1v7pZ5BM+fmkbq3DerkSluPr5EhvOcHxygxzD05ByDRppRwRPPpFrsFo5yDtCYLKu+kreHKVrvc7A==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=4.0.0" + "node": ">=18.0.0" } }, - "node_modules/mquery": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-4.0.3.tgz", - "integrity": "sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==", + "node_modules/@smithy/protocol-http": { + "version": "5.3.12", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", + "integrity": "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "debug": "4.x" + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">=12.0.0" + "node": ">=18.0.0" } }, - "node_modules/mquery/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/@smithy/querystring-builder": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.12.tgz", + "integrity": "sha512-6wTZjGABQufekycfDGMEB84BgtdOE/rCVTov+EDXQ8NHKTUNIp/j27IliwP7tjIU9LR+sSzyGBOXjeEtVgzCHg==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "ms": "2.1.2" + "@smithy/types": "^4.13.1", + "@smithy/util-uri-escape": "^4.2.2", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=18.0.0" } }, - "node_modules/mquery/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "node_modules/@smithy/querystring-parser": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.12.tgz", + "integrity": "sha512-P2OdvrgiAKpkPNKlKUtWbNZKB1XjPxM086NeVhK+W+wI46pIKdWBe5QyXvhUm3MEcyS/rkLvY8rZzyUdmyDZBw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 0.6" + "node": ">=18.0.0" } }, - "node_modules/nodemon": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.19.tgz", - "integrity": "sha512-4pv1f2bMDj0Eeg/MhGqxrtveeQ5/G/UVe9iO6uTZzjnRluSA4PVWf8CW99LUPwGB3eNIA7zUFoP77YuI7hOc0A==", - "hasInstallScript": true, + "node_modules/@smithy/service-error-classification": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.12.tgz", + "integrity": "sha512-LlP29oSQN0Tw0b6D0Xo6BIikBswuIiGYbRACy5ujw/JgWSzTdYj46U83ssf6Ux0GyNJVivs2uReU8pt7Eu9okQ==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "chokidar": "^3.5.2", - "debug": "^3.2.7", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.0.4", - "pstree.remy": "^1.1.8", - "semver": "^5.7.1", - "simple-update-notifier": "^1.0.7", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.5" - }, - "bin": { - "nodemon": "bin/nodemon.js" + "@smithy/types": "^4.13.1" }, "engines": { - "node": ">=8.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nodemon" + "node": ">=18.0.0" } }, - "node_modules/nodemon/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/@smithy/shared-ini-file-loader": { + "version": "4.4.7", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.7.tgz", + "integrity": "sha512-HrOKWsUb+otTeo1HxVWeEb99t5ER1XrBi/xka2Wv6NVmTbuCUC1dvlrksdvxFtODLBjsC+PHK+fuy2x/7Ynyiw==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "ms": "^2.1.1" + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/nodemon/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "node_modules/@smithy/signature-v4": { + "version": "5.3.12", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.12.tgz", + "integrity": "sha512-B/FBwO3MVOL00DaRSXfXfa/TRXRheagt/q5A2NM13u7q+sHS59EOVGQNfG7DkmVtdQm5m3vOosoKAXSqn/OEgw==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" + "@smithy/is-array-buffer": "^4.2.2", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-hex-encoding": "^4.2.2", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-uri-escape": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" }, "engines": { - "node": "*" + "node": ">=18.0.0" } }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "node_modules/@smithy/smithy-client": { + "version": "4.12.5", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.12.5.tgz", + "integrity": "sha512-UqwYawyqSr/aog8mnLnfbPurS0gi4G7IYDcD28cUIBhsvWs1+rQcL2IwkUQ+QZ7dibaoRzhNF99fAQ9AUcO00w==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/core": "^3.23.11", + "@smithy/middleware-endpoint": "^4.4.25", + "@smithy/middleware-stack": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-stream": "^4.5.19", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">=18.0.0" } }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "node_modules/@smithy/types": { + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.13.1.tgz", + "integrity": "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">=18.0.0" } }, - "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node_modules/@smithy/url-parser": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.12.tgz", + "integrity": "sha512-wOPKPEpso+doCZGIlr+e1lVI6+9VAKfL4kZWFgzVgGWY2hZxshNKod4l2LXS3PRC9otH/JRSjtEHqQ/7eLciRA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/querystring-parser": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "node_modules/@smithy/util-base64": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.2.tgz", + "integrity": "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "ee-first": "1.1.1" + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 0.8" + "node": ">=18.0.0" } }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "node_modules/@smithy/util-body-length-browser": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.2.tgz", + "integrity": "sha512-JKCrLNOup3OOgmzeaKQwi4ZCTWlYR5H4Gm1r2uTMVBXoemo1UEghk5vtMi1xSu2ymgKVGW631e2fp9/R610ZjQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 0.8" + "node": ">=18.0.0" } }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" + "node_modules/@smithy/util-body-length-node": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.3.tgz", + "integrity": "sha512-ZkJGvqBzMHVHE7r/hcuCxlTY8pQr1kMtdsVPs7ex4mMU+EAbcXppfo5NmyxMYi2XU49eqaz56j2gsk4dHHPG/g==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.6.2" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "node_modules/@smithy/util-buffer-from": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz", + "integrity": "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" + "@smithy/is-array-buffer": "^4.2.2", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 0.10" + "node": ">=18.0.0" } }, - "node_modules/pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "node_modules/@smithy/util-config-provider": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.2.tgz", + "integrity": "sha512-dWU03V3XUprJwaUIFVv4iOnS1FC9HnMHDfUrlNDSh4315v0cWyaIErP8KiqGVbf5z+JupoVpNM7ZB3jFiTejvQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6" + "node": ">=18.0.0" } }, - "node_modules/qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "node_modules/@smithy/util-defaults-mode-browser": { + "version": "4.3.41", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.41.tgz", + "integrity": "sha512-M1w1Ux0rSVvBOxIIiqbxvZvhnjQ+VUjJrugtORE90BbadSTH+jsQL279KRL3Hv0w69rE7EuYkV/4Lepz/NBW9g==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "side-channel": "^1.0.4" + "@smithy/property-provider": "^4.2.12", + "@smithy/smithy-client": "^4.12.5", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=18.0.0" } }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "node_modules/@smithy/util-defaults-mode-node": { + "version": "4.2.44", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.44.tgz", + "integrity": "sha512-YPze3/lD1KmWuZsl9JlfhcgGLX7AXhSoaCDtiPntUjNW5/YY0lOHjkcgxyE9x/h5vvS1fzDifMGjzqnNlNiqOQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/config-resolver": "^4.4.11", + "@smithy/credential-provider-imds": "^4.2.12", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/smithy-client": "^4.12.5", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 0.6" + "node": ">=18.0.0" } }, - "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "node_modules/@smithy/util-endpoints": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.3.3.tgz", + "integrity": "sha512-VACQVe50j0HZPjpwWcjyT51KUQ4AnsvEaQ2lKHOSL4mNLD0G9BjEniQ+yCt1qqfKfiAHRAts26ud7hBjamrwig==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "@smithy/node-config-provider": "^4.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 0.8" + "node": ">=18.0.0" } }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/@smithy/util-hex-encoding": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.2.tgz", + "integrity": "sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "picomatch": "^2.2.1" + "tslib": "^2.6.2" }, "engines": { - "node": ">=8.10.0" + "node": ">=18.0.0" } }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "node_modules/@smithy/util-middleware": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.12.tgz", + "integrity": "sha512-Er805uFUOvgc0l8nv0e0su0VFISoxhJ/AwOn3gL2NWNY2LUEldP5WtVcRYSQBcjg0y9NfG8JYrCJaYDpupBHJQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "node_modules/@smithy/util-retry": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.12.tgz", + "integrity": "sha512-1zopLDUEOwumjcHdJ1mwBHddubYF8GMQvstVCLC54Y46rqoHwlIU+8ZzUeaBcD+WCJHyDGSeZ2ml9YSe9aqcoQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/service-error-classification": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/saslprep": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", - "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "node_modules/@smithy/util-stream": { + "version": "4.5.19", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.19.tgz", + "integrity": "sha512-v4sa+3xTweL1CLO2UP0p7tvIMH/Rq1X4KKOxd568mpe6LSLMQCnDHs4uv7m3ukpl3HvcN2JH6jiCS0SNRXKP/w==", + "license": "Apache-2.0", "optional": true, "dependencies": { - "sparse-bitfield": "^3.0.3" + "@smithy/fetch-http-handler": "^5.3.15", + "@smithy/node-http-handler": "^4.4.16", + "@smithy/types": "^4.13.1", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-hex-encoding": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6" + "node": ">=18.0.0" } }, - "node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" + "node_modules/@smithy/util-uri-escape": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.2.tgz", + "integrity": "sha512-2kAStBlvq+lTXHyAZYfJRb/DfS3rsinLiwb+69SstC9Vb0s9vNWkRwpnj918Pfi85mzi42sOqdV72OLxWAISnw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "node_modules/@smithy/util-utf8": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.2.tgz", + "integrity": "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/util-buffer-from": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/uuid": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.2.tgz", + "integrity": "sha512-O/IEdcCUKkubz60tFbGA7ceITTAJsty+lBjNoorP4Z6XRqaFb/OjQjZODophEcuq68nKm6/0r+6/lLQ+XVpk8g==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@types/node": { + "version": "18.0.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.3.tgz", + "integrity": "sha512-HzNRZtp4eepNitP+BD6k2L6DROIDG4Q0fm4x+dwfsr6LGmROENnok75VGw40628xf+iR24WeMFcHuuBDUAzzsQ==" + }, + "node_modules/@types/webidl-conversions": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", + "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==", + "license": "MIT" + }, + "node_modules/@types/whatwg-url": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", + "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/webidl-conversions": "*" + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/body-parser": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "license": "MIT", "dependencies": { + "bytes": "~3.1.2", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", + "type-is": "~1.6.18", + "unpipe": "~1.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "node_modules/bowser": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.14.1.tgz", + "integrity": "sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==", + "license": "MIT", + "optional": true }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" }, "engines": { - "node": ">= 0.8.0" + "node": ">=8" } }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + "node_modules/bson": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", + "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==", + "license": "Apache-2.0", + "dependencies": { + "buffer": "^5.6.0" + }, + "engines": { + "node": ">=6.9.0" + } }, - "node_modules/side-channel": { + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/sift": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.0.tgz", - "integrity": "sha512-ILTjdP2Mv9V1kIxWMXeMTIRbOBrqKc4JAXmFMnFq3fKeyQ2Qwa3Dw1ubcye3vR+Y6ofA0b9gNDr/y2t6eUeIzQ==" + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } }, - "node_modules/simple-update-notifier": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz", - "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==", + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dependencies": { - "semver": "~7.0.0" + "safe-buffer": "5.2.1" }, "engines": { - "node": ">=8.10.0" + "node": ">= 0.6" } }, - "node_modules/simple-update-notifier/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "bin": { - "semver": "bin/semver.js" + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" } }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/cors": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/dotenv": { + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz", + "integrity": "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", + "content-type": "~1.0.4", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "~0.1.12", + "proxy-addr": "~2.0.7", + "qs": "~6.14.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "~0.19.0", + "serve-static": "~1.16.2", + "setprototypeof": "1.2.0", + "statuses": "~2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/fast-xml-builder": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.1.3.tgz", + "integrity": "sha512-1o60KoFw2+LWKQu3IdcfcFlGTW4dpqEWmjhYec6H82AYZU2TVBXep6tMl8Z1Y+wM+ZrzCwe3BZ9Vyd9N2rIvmg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "optional": true, + "dependencies": { + "path-expression-matcher": "^1.1.3" + } + }, + "node_modules/fast-xml-parser": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.4.1.tgz", + "integrity": "sha512-BQ30U1mKkvXQXXkAGcuyUA/GA26oEB7NzOtsxCDtyu62sjGw5QraKFhx2Em3WQNjPw9PG6MQ9yuIIgkSDfGu5A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "optional": true, + "dependencies": { + "fast-xml-builder": "^1.0.0", + "strnum": "^2.1.2" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "statuses": "~2.0.2", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ip-address": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/kareem": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", + "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==", + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "license": "MIT", + "optional": true + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mongodb": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.17.2.tgz", + "integrity": "sha512-mLV7SEiov2LHleRJPMPrK2PMyhXFZt2UQLC4VD4pnth3jMjYKHhtqfwwkkvS/NXuo/Fp3vbhaNcXrIDaLRb9Tg==", + "license": "Apache-2.0", + "dependencies": { + "bson": "^4.7.2", + "mongodb-connection-string-url": "^2.6.0", + "socks": "^2.7.1" + }, + "engines": { + "node": ">=12.9.0" + }, + "optionalDependencies": { + "@aws-sdk/credential-providers": "^3.186.0", + "@mongodb-js/saslprep": "^1.1.0" + } + }, + "node_modules/mongodb-connection-string-url": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", + "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", + "license": "Apache-2.0", + "dependencies": { + "@types/whatwg-url": "^8.2.1", + "whatwg-url": "^11.0.0" + } + }, + "node_modules/mongoose": { + "version": "6.13.9", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.13.9.tgz", + "integrity": "sha512-x8XpK0SEDJtAtMoOF2U9aGrGXN6kbu01TqhznGLnA4B1oPXNb4Lye0MgmfxF9J2Dva7wf49VOgClk2fuKQYGHw==", + "license": "MIT", + "dependencies": { + "bson": "^4.7.2", + "kareem": "2.5.1", + "mongodb": "4.17.2", + "mpath": "0.9.0", + "mquery": "4.0.3", + "ms": "2.1.3", + "sift": "16.0.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mongoose" + } + }, + "node_modules/mongoose/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/mpath": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mquery": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-4.0.3.tgz", + "integrity": "sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==", + "dependencies": { + "debug": "4.x" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/mquery/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/mquery/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nodemon": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.19.tgz", + "integrity": "sha512-4pv1f2bMDj0Eeg/MhGqxrtveeQ5/G/UVe9iO6uTZzjnRluSA4PVWf8CW99LUPwGB3eNIA7zUFoP77YuI7hOc0A==", + "hasInstallScript": true, + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.0.4", + "pstree.remy": "^1.1.8", + "semver": "^5.7.1", + "simple-update-notifier": "^1.0.7", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/nodemon/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-expression-matcher": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.1.3.tgz", + "integrity": "sha512-qdVgY8KXmVdJZRSS1JdEPOKPdTiEK/pi0RkcT2sw1RhXxohdujUlJFPuS1TSkevZ9vzd3ZlL7ULl1MHGTApKzQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "license": "MIT" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.4.1", + "range-parser": "~1.2.1", + "statuses": "~2.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sift": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", + "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==", + "license": "MIT" + }, + "node_modules/simple-update-notifier": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz", + "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==", + "dependencies": { + "semver": "~7.0.0" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", + "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", + "license": "MIT", + "dependencies": { + "ip-address": "^10.0.1", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "memory-pager": "^1.0.2" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stripe": { + "version": "9.16.0", + "resolved": "https://registry.npmjs.org/stripe/-/stripe-9.16.0.tgz", + "integrity": "sha512-Dn8K+jSoQcXjxCobRI4HXUdHjOXsiF/KszK49fJnkbeCFjZ3EZxLG2JiM/CX+Hcq27NBDtv/Sxhvy+HhTmvyaQ==", + "license": "MIT", + "dependencies": { + "@types/node": ">=8.1.0", + "qs": "^6.10.3" + }, + "engines": { + "node": "^8.1 || >=10.*" + } + }, + "node_modules/strnum": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.0.tgz", + "integrity": "sha512-Y7Bj8XyJxnPAORMZj/xltsfo55uOiyHcU2tnAVzHUnSJR/KsEX+9RoDeXEnsXtl/CX4fAcrt64gZ13aGaWPeBg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "optional": true + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dependencies": { + "nopt": "~1.0.10" + }, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "license": "MIT", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD", + "optional": true + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "license": "MIT", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + } + }, + "dependencies": { + "@aws-crypto/sha256-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", + "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", + "optional": true, + "requires": { + "@aws-crypto/sha256-js": "^5.2.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + }, + "dependencies": { + "@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "optional": true, + "requires": { + "tslib": "^2.6.2" + } + }, + "@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "optional": true, + "requires": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + } + }, + "@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "optional": true, + "requires": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + } + } + } + }, + "@aws-crypto/sha256-js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", + "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", + "optional": true, + "requires": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + } + }, + "@aws-crypto/supports-web-crypto": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", + "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", + "optional": true, + "requires": { + "tslib": "^2.6.2" + } + }, + "@aws-crypto/util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", + "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", + "optional": true, + "requires": { + "@aws-sdk/types": "^3.222.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + }, + "dependencies": { + "@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "optional": true, + "requires": { + "tslib": "^2.6.2" + } + }, + "@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "optional": true, + "requires": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + } + }, + "@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "optional": true, + "requires": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + } + } + } + }, + "@aws-sdk/client-cognito-identity": { + "version": "3.1009.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.1009.0.tgz", + "integrity": "sha512-4+lBLB2sIdrnGruxqsfPM2AOSME3DVDRX7R5OXcgd2jfrUSyYdHJN1kT9hO/vwK4uajRZsQNP5hLJMttkjkoAQ==", + "optional": true, + "requires": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/credential-provider-node": "^3.972.21", + "@aws-sdk/middleware-host-header": "^3.972.8", + "@aws-sdk/middleware-logger": "^3.972.8", + "@aws-sdk/middleware-recursion-detection": "^3.972.8", + "@aws-sdk/middleware-user-agent": "^3.972.21", + "@aws-sdk/region-config-resolver": "^3.972.8", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-endpoints": "^3.996.5", + "@aws-sdk/util-user-agent-browser": "^3.972.8", + "@aws-sdk/util-user-agent-node": "^3.973.7", + "@smithy/config-resolver": "^4.4.11", + "@smithy/core": "^3.23.11", + "@smithy/fetch-http-handler": "^5.3.15", + "@smithy/hash-node": "^4.2.12", + "@smithy/invalid-dependency": "^4.2.12", + "@smithy/middleware-content-length": "^4.2.12", + "@smithy/middleware-endpoint": "^4.4.25", + "@smithy/middleware-retry": "^4.4.42", + "@smithy/middleware-serde": "^4.2.14", + "@smithy/middleware-stack": "^4.2.12", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/node-http-handler": "^4.4.16", + "@smithy/protocol-http": "^5.3.12", + "@smithy/smithy-client": "^4.12.5", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.41", + "@smithy/util-defaults-mode-node": "^4.2.44", + "@smithy/util-endpoints": "^3.3.3", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-retry": "^4.2.12", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/core": { + "version": "3.973.20", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.973.20.tgz", + "integrity": "sha512-i3GuX+lowD892F3IuJf8o6AbyDupMTdyTxQrCJGcn71ni5hTZ82L4nQhcdumxZ7XPJRJJVHS/CR3uYOIIs0PVA==", + "optional": true, + "requires": { + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/xml-builder": "^3.972.11", + "@smithy/core": "^3.23.11", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/signature-v4": "^5.3.12", + "@smithy/smithy-client": "^4.12.5", + "@smithy/types": "^4.13.1", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/credential-provider-cognito-identity": { + "version": "3.972.13", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.972.13.tgz", + "integrity": "sha512-WZnIK8NPX+4OXkpVoNmUS+Ya1osqjszUsDqFEz97+a/LD5K012np9iR/eWEC43btx8zQjyRIK8kyiwbh8SiHzg==", + "optional": true, + "requires": { + "@aws-sdk/nested-clients": "^3.996.10", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/credential-provider-env": { + "version": "3.972.18", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.18.tgz", + "integrity": "sha512-X0B8AlQY507i5DwjLByeU2Af4ARsl9Vr84koDcXCbAkplmU+1xBFWxEPrWRAoh56waBne/yJqEloSwvRf4x6XA==", + "optional": true, + "requires": { + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/credential-provider-http": { + "version": "3.972.20", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.20.tgz", + "integrity": "sha512-ey9Lelj001+oOfrbKmS6R2CJAiXX7QKY4Vj9VJv6L2eE6/VjD8DocHIoYqztTm70xDLR4E1jYPTKfIui+eRNDA==", + "optional": true, + "requires": { + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/types": "^3.973.6", + "@smithy/fetch-http-handler": "^5.3.15", + "@smithy/node-http-handler": "^4.4.16", + "@smithy/property-provider": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/smithy-client": "^4.12.5", + "@smithy/types": "^4.13.1", + "@smithy/util-stream": "^4.5.19", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/credential-provider-ini": { + "version": "3.972.20", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.20.tgz", + "integrity": "sha512-5flXSnKHMloObNF+9N0cupKegnH1Z37cdVlpETVgx8/rAhCe+VNlkcZH3HDg2SDn9bI765S+rhNPXGDJJPfbtA==", + "optional": true, + "requires": { + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/credential-provider-env": "^3.972.18", + "@aws-sdk/credential-provider-http": "^3.972.20", + "@aws-sdk/credential-provider-login": "^3.972.20", + "@aws-sdk/credential-provider-process": "^3.972.18", + "@aws-sdk/credential-provider-sso": "^3.972.20", + "@aws-sdk/credential-provider-web-identity": "^3.972.20", + "@aws-sdk/nested-clients": "^3.996.10", + "@aws-sdk/types": "^3.973.6", + "@smithy/credential-provider-imds": "^4.2.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/credential-provider-login": { + "version": "3.972.20", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.20.tgz", + "integrity": "sha512-gEWo54nfqp2jABMu6HNsjVC4hDLpg9HC8IKSJnp0kqWtxIJYHTmiLSsIfI4ScQjxEwpB+jOOH8dOLax1+hy/Hw==", + "optional": true, + "requires": { + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/nested-clients": "^3.996.10", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/credential-provider-node": { + "version": "3.972.21", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.21.tgz", + "integrity": "sha512-hah8if3/B/Q+LBYN5FukyQ1Mym6PLPDsBOBsIgNEYD6wLyZg0UmUF/OKIVC3nX9XH8TfTPuITK+7N/jenVACWA==", + "optional": true, + "requires": { + "@aws-sdk/credential-provider-env": "^3.972.18", + "@aws-sdk/credential-provider-http": "^3.972.20", + "@aws-sdk/credential-provider-ini": "^3.972.20", + "@aws-sdk/credential-provider-process": "^3.972.18", + "@aws-sdk/credential-provider-sso": "^3.972.20", + "@aws-sdk/credential-provider-web-identity": "^3.972.20", + "@aws-sdk/types": "^3.973.6", + "@smithy/credential-provider-imds": "^4.2.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/credential-provider-process": { + "version": "3.972.18", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.18.tgz", + "integrity": "sha512-Tpl7SRaPoOLT32jbTWchPsn52hYYgJ0kpiFgnwk8pxTANQdUymVSZkzFvv1+oOgZm1CrbQUP9MBeoMZ9IzLZjA==", + "optional": true, + "requires": { + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/credential-provider-sso": { + "version": "3.972.20", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.20.tgz", + "integrity": "sha512-p+R+PYR5Z7Gjqf/6pvbCnzEHcqPCpLzR7Yf127HjJ6EAb4hUcD+qsNRnuww1sB/RmSeCLxyay8FMyqREw4p1RA==", + "optional": true, + "requires": { + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/nested-clients": "^3.996.10", + "@aws-sdk/token-providers": "3.1009.0", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/credential-provider-web-identity": { + "version": "3.972.20", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.20.tgz", + "integrity": "sha512-rWCmh8o7QY4CsUj63qopzMzkDq/yPpkrpb+CnjBEFSOg/02T/we7sSTVg4QsDiVS9uwZ8VyONhq98qt+pIh3KA==", + "optional": true, + "requires": { + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/nested-clients": "^3.996.10", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/credential-providers": { + "version": "3.1009.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.1009.0.tgz", + "integrity": "sha512-URs590x3cCOHvjgDz8J0iqxDQ87NjF550pnWmd1jQm+w5ZHTxuUEYjivBQQkAB603IlEdeadqO1+LSjtMznhwA==", + "optional": true, + "requires": { + "@aws-sdk/client-cognito-identity": "3.1009.0", + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/credential-provider-cognito-identity": "^3.972.13", + "@aws-sdk/credential-provider-env": "^3.972.18", + "@aws-sdk/credential-provider-http": "^3.972.20", + "@aws-sdk/credential-provider-ini": "^3.972.20", + "@aws-sdk/credential-provider-login": "^3.972.20", + "@aws-sdk/credential-provider-node": "^3.972.21", + "@aws-sdk/credential-provider-process": "^3.972.18", + "@aws-sdk/credential-provider-sso": "^3.972.20", + "@aws-sdk/credential-provider-web-identity": "^3.972.20", + "@aws-sdk/nested-clients": "^3.996.10", + "@aws-sdk/types": "^3.973.6", + "@smithy/config-resolver": "^4.4.11", + "@smithy/core": "^3.23.11", + "@smithy/credential-provider-imds": "^4.2.12", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/middleware-host-header": { + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.8.tgz", + "integrity": "sha512-wAr2REfKsqoKQ+OkNqvOShnBoh+nkPurDKW7uAeVSu6kUECnWlSJiPvnoqxGlfousEY/v9LfS9sNc46hjSYDIQ==", + "optional": true, + "requires": { + "@aws-sdk/types": "^3.973.6", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/middleware-logger": { + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.8.tgz", + "integrity": "sha512-CWl5UCM57WUFaFi5kB7IBY1UmOeLvNZAZ2/OZ5l20ldiJ3TiIz1pC65gYj8X0BCPWkeR1E32mpsCk1L1I4n+lA==", + "optional": true, + "requires": { + "@aws-sdk/types": "^3.973.6", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/middleware-recursion-detection": { + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.8.tgz", + "integrity": "sha512-BnnvYs2ZEpdlmZ2PNlV2ZyQ8j8AEkMTjN79y/YA475ER1ByFYrkVR85qmhni8oeTaJcDqbx364wDpitDAA/wCA==", + "optional": true, + "requires": { + "@aws-sdk/types": "^3.973.6", + "@aws/lambda-invoke-store": "^0.2.2", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/middleware-user-agent": { + "version": "3.972.21", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.21.tgz", + "integrity": "sha512-62XRl1GDYPpkt7cx1AX1SPy9wgNE9Iw/NPuurJu4lmhCWS7sGKO+kS53TQ8eRmIxy3skmvNInnk0ZbWrU5Dpyg==", + "optional": true, + "requires": { + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-endpoints": "^3.996.5", + "@smithy/core": "^3.23.11", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-retry": "^4.2.12", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/nested-clients": { + "version": "3.996.10", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.996.10.tgz", + "integrity": "sha512-SlDol5Z+C7Ivnc2rKGqiqfSUmUZzY1qHfVs9myt/nxVwswgfpjdKahyTzLTx802Zfq0NFRs7AejwKzzzl5Co2w==", + "optional": true, + "requires": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/middleware-host-header": "^3.972.8", + "@aws-sdk/middleware-logger": "^3.972.8", + "@aws-sdk/middleware-recursion-detection": "^3.972.8", + "@aws-sdk/middleware-user-agent": "^3.972.21", + "@aws-sdk/region-config-resolver": "^3.972.8", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-endpoints": "^3.996.5", + "@aws-sdk/util-user-agent-browser": "^3.972.8", + "@aws-sdk/util-user-agent-node": "^3.973.7", + "@smithy/config-resolver": "^4.4.11", + "@smithy/core": "^3.23.11", + "@smithy/fetch-http-handler": "^5.3.15", + "@smithy/hash-node": "^4.2.12", + "@smithy/invalid-dependency": "^4.2.12", + "@smithy/middleware-content-length": "^4.2.12", + "@smithy/middleware-endpoint": "^4.4.25", + "@smithy/middleware-retry": "^4.4.42", + "@smithy/middleware-serde": "^4.2.14", + "@smithy/middleware-stack": "^4.2.12", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/node-http-handler": "^4.4.16", + "@smithy/protocol-http": "^5.3.12", + "@smithy/smithy-client": "^4.12.5", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.41", + "@smithy/util-defaults-mode-node": "^4.2.44", + "@smithy/util-endpoints": "^3.3.3", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-retry": "^4.2.12", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/region-config-resolver": { + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.8.tgz", + "integrity": "sha512-1eD4uhTDeambO/PNIDVG19A6+v4NdD7xzwLHDutHsUqz0B+i661MwQB2eYO4/crcCvCiQG4SRm1k81k54FEIvw==", + "optional": true, + "requires": { + "@aws-sdk/types": "^3.973.6", + "@smithy/config-resolver": "^4.4.11", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/token-providers": { + "version": "3.1009.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1009.0.tgz", + "integrity": "sha512-KCPLuTqN9u0Rr38Arln78fRG9KXpzsPWmof+PZzfAHMMQq2QED6YjQrkrfiH7PDefLWEposY1o4/eGwrmKA4JA==", + "optional": true, + "requires": { + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/nested-clients": "^3.996.10", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/types": { + "version": "3.973.6", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.6.tgz", + "integrity": "sha512-Atfcy4E++beKtwJHiDln2Nby8W/mam64opFPTiHEqgsthqeydFS1pY+OUlN1ouNOmf8ArPU/6cDS65anOP3KQw==", + "optional": true, + "requires": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/util-endpoints": { + "version": "3.996.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.5.tgz", + "integrity": "sha512-Uh93L5sXFNbyR5sEPMzUU8tJ++Ku97EY4udmC01nB8Zu+xfBPwpIwJ6F7snqQeq8h2pf+8SGN5/NoytfKgYPIw==", + "optional": true, + "requires": { + "@aws-sdk/types": "^3.973.6", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-endpoints": "^3.3.3", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/util-locate-window": { + "version": "3.965.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.965.5.tgz", + "integrity": "sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==", + "optional": true, + "requires": { + "tslib": "^2.6.2" + } + }, + "@aws-sdk/util-user-agent-browser": { + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.8.tgz", + "integrity": "sha512-B3KGXJviV2u6Cdw2SDY2aDhoJkVfY/Q/Trwk2CMSkikE1Oi6gRzxhvhIfiRpHfmIsAhV4EA54TVEX8K6CbHbkA==", + "optional": true, + "requires": { + "@aws-sdk/types": "^3.973.6", + "@smithy/types": "^4.13.1", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/util-user-agent-node": { + "version": "3.973.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.7.tgz", + "integrity": "sha512-Hz6EZMUAEzqUd7e+vZ9LE7mn+5gMbxltXy18v+YSFY+9LBJz15wkNZvw5JqfX3z0FS9n3bgUtz3L5rAsfh4YlA==", + "optional": true, + "requires": { + "@aws-sdk/middleware-user-agent": "^3.972.21", + "@aws-sdk/types": "^3.973.6", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-config-provider": "^4.2.2", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/xml-builder": { + "version": "3.972.11", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.11.tgz", + "integrity": "sha512-iitV/gZKQMvY9d7ovmyFnFuTHbBAtrmLnvaSb/3X8vOKyevwtpmEtyc8AdhVWZe0pI/1GsHxlEvQeOePFzy7KQ==", + "optional": true, + "requires": { + "@smithy/types": "^4.13.1", + "fast-xml-parser": "5.4.1", + "tslib": "^2.6.2" + } + }, + "@aws/lambda-invoke-store": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.4.tgz", + "integrity": "sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==", + "optional": true + }, + "@faker-js/faker": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-7.3.0.tgz", + "integrity": "sha512-1W0PZezq2rxlAssoWemi9gFRD8IQxvf0FPL5Km3TOmGHFG7ib0TbFBJ0yC7D/1NsxunjNTK6WjUXV8ao/mKZ5w==", + "dev": true + }, + "@mongodb-js/saslprep": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.4.6.tgz", + "integrity": "sha512-y+x3H1xBZd38n10NZF/rEBlvDOOMQ6LKUTHqr8R9VkJ+mmQOYtJFxIlkkK8fZrtOiL6VixbOBWMbZGBdal3Z1g==", + "optional": true, + "requires": { + "sparse-bitfield": "^3.0.3" + } + }, + "@smithy/abort-controller": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.12.tgz", + "integrity": "sha512-xolrFw6b+2iYGl6EcOL7IJY71vvyZ0DJ3mcKtpykqPe2uscwtzDZJa1uVQXyP7w9Dd+kGwYnPbMsJrGISKiY/Q==", + "optional": true, + "requires": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + } + }, + "@smithy/config-resolver": { + "version": "4.4.11", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.11.tgz", + "integrity": "sha512-YxFiiG4YDAtX7WMN7RuhHZLeTmRRAOyCbr+zB8e3AQzHPnUhS8zXjB1+cniPVQI3xbWsQPM0X2aaIkO/ME0ymw==", + "optional": true, + "requires": { + "@smithy/node-config-provider": "^4.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-config-provider": "^4.2.2", + "@smithy/util-endpoints": "^3.3.3", + "@smithy/util-middleware": "^4.2.12", + "tslib": "^2.6.2" + } + }, + "@smithy/core": { + "version": "3.23.11", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.23.11.tgz", + "integrity": "sha512-952rGf7hBRnhUIaeLp6q4MptKW8sPFe5VvkoZ5qIzFAtx6c/QZ/54FS3yootsyUSf9gJX/NBqEBNdNR7jMIlpQ==", + "optional": true, + "requires": { + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-stream": "^4.5.19", + "@smithy/util-utf8": "^4.2.2", + "@smithy/uuid": "^1.1.2", + "tslib": "^2.6.2" + } + }, + "@smithy/credential-provider-imds": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.12.tgz", + "integrity": "sha512-cr2lR792vNZcYMriSIj+Um3x9KWrjcu98kn234xA6reOAFMmbRpQMOv8KPgEmLLtx3eldU6c5wALKFqNOhugmg==", + "optional": true, + "requires": { + "@smithy/node-config-provider": "^4.3.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "tslib": "^2.6.2" + } + }, + "@smithy/fetch-http-handler": { + "version": "5.3.15", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.15.tgz", + "integrity": "sha512-T4jFU5N/yiIfrtrsb9uOQn7RdELdM/7HbyLNr6uO/mpkj1ctiVs7CihVr51w4LyQlXWDpXFn4BElf1WmQvZu/A==", + "optional": true, + "requires": { + "@smithy/protocol-http": "^5.3.12", + "@smithy/querystring-builder": "^4.2.12", + "@smithy/types": "^4.13.1", + "@smithy/util-base64": "^4.3.2", + "tslib": "^2.6.2" + } + }, + "@smithy/hash-node": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.12.tgz", + "integrity": "sha512-QhBYbGrbxTkZ43QoTPrK72DoYviDeg6YKDrHTMJbbC+A0sml3kSjzFtXP7BtbyJnXojLfTQldGdUR0RGD8dA3w==", + "optional": true, + "requires": { + "@smithy/types": "^4.13.1", + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + } + }, + "@smithy/invalid-dependency": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.12.tgz", + "integrity": "sha512-/4F1zb7Z8LOu1PalTdESFHR0RbPwHd3FcaG1sI3UEIriQTWakysgJr65lc1jj6QY5ye7aFsisajotH6UhWfm/g==", + "optional": true, + "requires": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + } + }, + "@smithy/is-array-buffer": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz", + "integrity": "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow==", + "optional": true, + "requires": { + "tslib": "^2.6.2" + } + }, + "@smithy/middleware-content-length": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.12.tgz", + "integrity": "sha512-YE58Yz+cvFInWI/wOTrB+DbvUVz/pLn5mC5MvOV4fdRUc6qGwygyngcucRQjAhiCEbmfLOXX0gntSIcgMvAjmA==", + "optional": true, + "requires": { + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + } + }, + "@smithy/middleware-endpoint": { + "version": "4.4.25", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.25.tgz", + "integrity": "sha512-dqjLwZs2eBxIUG6Qtw8/YZ4DvzHGIf0DA18wrgtfP6a50UIO7e2nY0FPdcbv5tVJKqWCCU5BmGMOUwT7Puan+A==", + "optional": true, + "requires": { + "@smithy/core": "^3.23.11", + "@smithy/middleware-serde": "^4.2.14", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-middleware": "^4.2.12", + "tslib": "^2.6.2" + } + }, + "@smithy/middleware-retry": { + "version": "4.4.42", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.42.tgz", + "integrity": "sha512-vbwyqHRIpIZutNXZpLAozakzamcINaRCpEy1MYmK6xBeW3xN+TyPRA123GjXnuxZIjc9848MRRCugVMTXxC4Eg==", + "optional": true, + "requires": { + "@smithy/node-config-provider": "^4.3.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/service-error-classification": "^4.2.12", + "@smithy/smithy-client": "^4.12.5", + "@smithy/types": "^4.13.1", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-retry": "^4.2.12", + "@smithy/uuid": "^1.1.2", + "tslib": "^2.6.2" + } + }, + "@smithy/middleware-serde": { + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.14.tgz", + "integrity": "sha512-+CcaLoLa5apzSRtloOyG7lQvkUw2ZDml3hRh4QiG9WyEPfW5Ke/3tPOPiPjUneuT59Tpn8+c3RVaUvvkkwqZwg==", + "optional": true, + "requires": { + "@smithy/core": "^3.23.11", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + } + }, + "@smithy/middleware-stack": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.12.tgz", + "integrity": "sha512-kruC5gRHwsCOuyCd4ouQxYjgRAym2uDlCvQ5acuMtRrcdfg7mFBg6blaxcJ09STpt3ziEkis6bhg1uwrWU7txw==", + "optional": true, + "requires": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + } + }, + "@smithy/node-config-provider": { + "version": "4.3.12", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.12.tgz", + "integrity": "sha512-tr2oKX2xMcO+rBOjobSwVAkV05SIfUKz8iI53rzxEmgW3GOOPOv0UioSDk+J8OpRQnpnhsO3Af6IEBabQBVmiw==", + "optional": true, + "requires": { + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + } + }, + "@smithy/node-http-handler": { + "version": "4.4.16", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.16.tgz", + "integrity": "sha512-ULC8UCS/HivdCB3jhi+kLFYe4B5gxH2gi9vHBfEIiRrT2jfKiZNiETJSlzRtE6B26XbBHjPtc8iZKSNqMol9bw==", + "optional": true, + "requires": { + "@smithy/abort-controller": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/querystring-builder": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + } + }, + "@smithy/property-provider": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.12.tgz", + "integrity": "sha512-jqve46eYU1v7pZ5BM+fmkbq3DerkSluPr5EhvOcHxygxzD05ByDRppRwRPPpFrsFo5yDtCYLKu+kreHKVrvc7A==", + "optional": true, + "requires": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + } + }, + "@smithy/protocol-http": { + "version": "5.3.12", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", + "integrity": "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw==", + "optional": true, + "requires": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + } + }, + "@smithy/querystring-builder": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.12.tgz", + "integrity": "sha512-6wTZjGABQufekycfDGMEB84BgtdOE/rCVTov+EDXQ8NHKTUNIp/j27IliwP7tjIU9LR+sSzyGBOXjeEtVgzCHg==", + "optional": true, + "requires": { + "@smithy/types": "^4.13.1", + "@smithy/util-uri-escape": "^4.2.2", + "tslib": "^2.6.2" + } + }, + "@smithy/querystring-parser": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.12.tgz", + "integrity": "sha512-P2OdvrgiAKpkPNKlKUtWbNZKB1XjPxM086NeVhK+W+wI46pIKdWBe5QyXvhUm3MEcyS/rkLvY8rZzyUdmyDZBw==", + "optional": true, + "requires": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" } }, - "node_modules/socks": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", - "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", - "dependencies": { - "ip": "^1.1.5", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" + "@smithy/service-error-classification": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.12.tgz", + "integrity": "sha512-LlP29oSQN0Tw0b6D0Xo6BIikBswuIiGYbRACy5ujw/JgWSzTdYj46U83ssf6Ux0GyNJVivs2uReU8pt7Eu9okQ==", + "optional": true, + "requires": { + "@smithy/types": "^4.13.1" } }, - "node_modules/sparse-bitfield": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", - "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "@smithy/shared-ini-file-loader": { + "version": "4.4.7", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.7.tgz", + "integrity": "sha512-HrOKWsUb+otTeo1HxVWeEb99t5ER1XrBi/xka2Wv6NVmTbuCUC1dvlrksdvxFtODLBjsC+PHK+fuy2x/7Ynyiw==", "optional": true, - "dependencies": { - "memory-pager": "^1.0.2" + "requires": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" } }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" + "@smithy/signature-v4": { + "version": "5.3.12", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.12.tgz", + "integrity": "sha512-B/FBwO3MVOL00DaRSXfXfa/TRXRheagt/q5A2NM13u7q+sHS59EOVGQNfG7DkmVtdQm5m3vOosoKAXSqn/OEgw==", + "optional": true, + "requires": { + "@smithy/is-array-buffer": "^4.2.2", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-hex-encoding": "^4.2.2", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-uri-escape": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + } + }, + "@smithy/smithy-client": { + "version": "4.12.5", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.12.5.tgz", + "integrity": "sha512-UqwYawyqSr/aog8mnLnfbPurS0gi4G7IYDcD28cUIBhsvWs1+rQcL2IwkUQ+QZ7dibaoRzhNF99fAQ9AUcO00w==", + "optional": true, + "requires": { + "@smithy/core": "^3.23.11", + "@smithy/middleware-endpoint": "^4.4.25", + "@smithy/middleware-stack": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-stream": "^4.5.19", + "tslib": "^2.6.2" + } + }, + "@smithy/types": { + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.13.1.tgz", + "integrity": "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g==", + "optional": true, + "requires": { + "tslib": "^2.6.2" } }, - "node_modules/stripe": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/stripe/-/stripe-9.13.0.tgz", - "integrity": "sha512-PSxYaoaIoFwziNR4dmR6uw20UUmOM9ixtd8fML/gRWlPHsqi3FSGEszR//AttRjihRj+1SfjI5V/x6hhQZBTUA==", - "dependencies": { - "@types/node": ">=8.1.0", - "qs": "^6.10.3" - }, - "engines": { - "node": "^8.1 || >=10.*" + "@smithy/url-parser": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.12.tgz", + "integrity": "sha512-wOPKPEpso+doCZGIlr+e1lVI6+9VAKfL4kZWFgzVgGWY2hZxshNKod4l2LXS3PRC9otH/JRSjtEHqQ/7eLciRA==", + "optional": true, + "requires": { + "@smithy/querystring-parser": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" } }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" + "@smithy/util-base64": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.2.tgz", + "integrity": "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ==", + "optional": true, + "requires": { + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" } }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" + "@smithy/util-body-length-browser": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.2.tgz", + "integrity": "sha512-JKCrLNOup3OOgmzeaKQwi4ZCTWlYR5H4Gm1r2uTMVBXoemo1UEghk5vtMi1xSu2ymgKVGW631e2fp9/R610ZjQ==", + "optional": true, + "requires": { + "tslib": "^2.6.2" } }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "engines": { - "node": ">=0.6" + "@smithy/util-body-length-node": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.3.tgz", + "integrity": "sha512-ZkJGvqBzMHVHE7r/hcuCxlTY8pQr1kMtdsVPs7ex4mMU+EAbcXppfo5NmyxMYi2XU49eqaz56j2gsk4dHHPG/g==", + "optional": true, + "requires": { + "tslib": "^2.6.2" } }, - "node_modules/touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", - "dependencies": { - "nopt": "~1.0.10" - }, - "bin": { - "nodetouch": "bin/nodetouch.js" + "@smithy/util-buffer-from": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz", + "integrity": "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q==", + "optional": true, + "requires": { + "@smithy/is-array-buffer": "^4.2.2", + "tslib": "^2.6.2" } }, - "node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=12" + "@smithy/util-config-provider": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.2.tgz", + "integrity": "sha512-dWU03V3XUprJwaUIFVv4iOnS1FC9HnMHDfUrlNDSh4315v0cWyaIErP8KiqGVbf5z+JupoVpNM7ZB3jFiTejvQ==", + "optional": true, + "requires": { + "tslib": "^2.6.2" } }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" + "@smithy/util-defaults-mode-browser": { + "version": "4.3.41", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.41.tgz", + "integrity": "sha512-M1w1Ux0rSVvBOxIIiqbxvZvhnjQ+VUjJrugtORE90BbadSTH+jsQL279KRL3Hv0w69rE7EuYkV/4Lepz/NBW9g==", + "optional": true, + "requires": { + "@smithy/property-provider": "^4.2.12", + "@smithy/smithy-client": "^4.12.5", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" } }, - "node_modules/undefsafe": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" + "@smithy/util-defaults-mode-node": { + "version": "4.2.44", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.44.tgz", + "integrity": "sha512-YPze3/lD1KmWuZsl9JlfhcgGLX7AXhSoaCDtiPntUjNW5/YY0lOHjkcgxyE9x/h5vvS1fzDifMGjzqnNlNiqOQ==", + "optional": true, + "requires": { + "@smithy/config-resolver": "^4.4.11", + "@smithy/credential-provider-imds": "^4.2.12", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/smithy-client": "^4.12.5", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + } + }, + "@smithy/util-endpoints": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.3.3.tgz", + "integrity": "sha512-VACQVe50j0HZPjpwWcjyT51KUQ4AnsvEaQ2lKHOSL4mNLD0G9BjEniQ+yCt1qqfKfiAHRAts26ud7hBjamrwig==", + "optional": true, + "requires": { + "@smithy/node-config-provider": "^4.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + } }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "engines": { - "node": ">= 0.8" + "@smithy/util-hex-encoding": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.2.tgz", + "integrity": "sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg==", + "optional": true, + "requires": { + "tslib": "^2.6.2" } }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "engines": { - "node": ">= 0.4.0" + "@smithy/util-middleware": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.12.tgz", + "integrity": "sha512-Er805uFUOvgc0l8nv0e0su0VFISoxhJ/AwOn3gL2NWNY2LUEldP5WtVcRYSQBcjg0y9NfG8JYrCJaYDpupBHJQ==", + "optional": true, + "requires": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" } }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "engines": { - "node": ">= 0.8" + "@smithy/util-retry": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.12.tgz", + "integrity": "sha512-1zopLDUEOwumjcHdJ1mwBHddubYF8GMQvstVCLC54Y46rqoHwlIU+8ZzUeaBcD+WCJHyDGSeZ2ml9YSe9aqcoQ==", + "optional": true, + "requires": { + "@smithy/service-error-classification": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" } }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "engines": { - "node": ">=12" + "@smithy/util-stream": { + "version": "4.5.19", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.19.tgz", + "integrity": "sha512-v4sa+3xTweL1CLO2UP0p7tvIMH/Rq1X4KKOxd568mpe6LSLMQCnDHs4uv7m3ukpl3HvcN2JH6jiCS0SNRXKP/w==", + "optional": true, + "requires": { + "@smithy/fetch-http-handler": "^5.3.15", + "@smithy/node-http-handler": "^4.4.16", + "@smithy/types": "^4.13.1", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-hex-encoding": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + } + }, + "@smithy/util-uri-escape": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.2.tgz", + "integrity": "sha512-2kAStBlvq+lTXHyAZYfJRb/DfS3rsinLiwb+69SstC9Vb0s9vNWkRwpnj918Pfi85mzi42sOqdV72OLxWAISnw==", + "optional": true, + "requires": { + "tslib": "^2.6.2" } }, - "node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" + "@smithy/util-utf8": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.2.tgz", + "integrity": "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==", + "optional": true, + "requires": { + "@smithy/util-buffer-from": "^4.2.2", + "tslib": "^2.6.2" + } + }, + "@smithy/uuid": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.2.tgz", + "integrity": "sha512-O/IEdcCUKkubz60tFbGA7ceITTAJsty+lBjNoorP4Z6XRqaFb/OjQjZODophEcuq68nKm6/0r+6/lLQ+XVpk8g==", + "optional": true, + "requires": { + "tslib": "^2.6.2" } - } - }, - "dependencies": { - "@faker-js/faker": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-7.3.0.tgz", - "integrity": "sha512-1W0PZezq2rxlAssoWemi9gFRD8IQxvf0FPL5Km3TOmGHFG7ib0TbFBJ0yC7D/1NsxunjNTK6WjUXV8ao/mKZ5w==", - "dev": true }, "@types/node": { "version": "18.0.3", @@ -1285,9 +3943,9 @@ "integrity": "sha512-HzNRZtp4eepNitP+BD6k2L6DROIDG4Q0fm4x+dwfsr6LGmROENnok75VGw40628xf+iR24WeMFcHuuBDUAzzsQ==" }, "@types/webidl-conversions": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-6.1.1.tgz", - "integrity": "sha512-XAahCdThVuCFDQLT7R7Pk/vqeObFNL3YqRyFZg+AqAP/W1/w3xHaIxuW7WszQqTbIBOPRcItYJIou3i/mppu3Q==" + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", + "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==" }, "@types/whatwg-url": { "version": "8.2.2", @@ -1342,24 +4000,30 @@ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" }, "body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.4", + "bytes": "~3.1.2", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.10.3", - "raw-body": "2.5.1", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", "type-is": "~1.6.18", - "unpipe": "1.0.0" + "unpipe": "~1.0.0" } }, + "bowser": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.14.1.tgz", + "integrity": "sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==", + "optional": true + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1378,9 +4042,9 @@ } }, "bson": { - "version": "4.6.5", - "resolved": "https://registry.npmjs.org/bson/-/bson-4.6.5.tgz", - "integrity": "sha512-uqrgcjyOaZsHfz7ea8zLRCLe1u+QGUSzMZmvXqO24CDW7DWoW1qiN9folSwa7hSneTSgM2ykDIzF5kcQQ8cwNw==", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", + "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==", "requires": { "buffer": "^5.6.0" } @@ -1399,13 +4063,22 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" }, - "call-bind": { + "call-bind-apply-helpers": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + } + }, + "call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" } }, "chokidar": { @@ -1437,14 +4110,14 @@ } }, "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" }, "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==" }, "cookie-signature": { "version": "1.0.6", @@ -1452,9 +4125,9 @@ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", "requires": { "object-assign": "^4", "vary": "^1" @@ -1468,11 +4141,6 @@ "ms": "2.0.0" } }, - "denque": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz", - "integrity": "sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ==" - }, "depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -1483,15 +4151,48 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" }, + "dotenv": { + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz", + "integrity": "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==" + }, + "dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "requires": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + } + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==" + }, + "es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==" + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, + "es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "requires": { + "es-errors": "^1.3.0" + } }, "escape-html": { "version": "1.0.3", @@ -1504,43 +4205,62 @@ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" }, "express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", "requires": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.0", - "content-disposition": "0.5.4", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "~0.1.12", "proxy-addr": "~2.0.7", - "qs": "6.10.3", + "qs": "~6.14.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "~0.19.0", + "serve-static": "~1.16.2", "setprototypeof": "1.2.0", - "statuses": "2.0.1", + "statuses": "~2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" } }, + "fast-xml-builder": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.1.3.tgz", + "integrity": "sha512-1o60KoFw2+LWKQu3IdcfcFlGTW4dpqEWmjhYec6H82AYZU2TVBXep6tMl8Z1Y+wM+ZrzCwe3BZ9Vyd9N2rIvmg==", + "optional": true, + "requires": { + "path-expression-matcher": "^1.1.3" + } + }, + "fast-xml-parser": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.4.1.tgz", + "integrity": "sha512-BQ30U1mKkvXQXXkAGcuyUA/GA26oEB7NzOtsxCDtyu62sjGw5QraKFhx2Em3WQNjPw9PG6MQ9yuIIgkSDfGu5A==", + "optional": true, + "requires": { + "fast-xml-builder": "^1.0.0", + "strnum": "^2.1.2" + } + }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -1550,16 +4270,16 @@ } }, "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", "requires": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "parseurl": "~1.3.3", - "statuses": "2.0.1", + "statuses": "~2.0.2", "unpipe": "~1.0.0" } }, @@ -1580,18 +4300,34 @@ "optional": true }, "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, "get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "requires": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + } + }, + "get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" } }, "glob-parent": { @@ -1602,13 +4338,10 @@ "is-glob": "^4.0.1" } }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } + "gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==" }, "has-flag": { "version": "3.0.0", @@ -1616,20 +4349,28 @@ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" }, "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==" + }, + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "requires": { + "function-bind": "^1.1.2" + } }, "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" } }, "iconv-lite": { @@ -1655,10 +4396,10 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" + "ip-address": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==" }, "ipaddr.js": { "version": "1.9.1", @@ -1692,15 +4433,20 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, "kareem": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.4.1.tgz", - "integrity": "sha512-aJ9opVoXroQUPfovYP5kaj2lM7Jn02Gw13bL0lg9v0V7SaUc0qavPs0Eue7d2DcC3NjqI6QAUElXNsuZSeM+EA==" + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", + "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==" }, "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==" + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -1713,9 +4459,9 @@ "optional": true }, "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==" }, "methods": { "version": "1.1.2", @@ -1749,38 +4495,38 @@ } }, "mongodb": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.7.0.tgz", - "integrity": "sha512-HhVar6hsUeMAVlIbwQwWtV36iyjKd9qdhY+s4wcU8K6TOj4Q331iiMy+FoPuxEntDIijTYWivwFJkLv8q/ZgvA==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.17.2.tgz", + "integrity": "sha512-mLV7SEiov2LHleRJPMPrK2PMyhXFZt2UQLC4VD4pnth3jMjYKHhtqfwwkkvS/NXuo/Fp3vbhaNcXrIDaLRb9Tg==", "requires": { - "bson": "^4.6.3", - "denque": "^2.0.1", - "mongodb-connection-string-url": "^2.5.2", - "saslprep": "^1.0.3", - "socks": "^2.6.2" + "@aws-sdk/credential-providers": "^3.186.0", + "@mongodb-js/saslprep": "^1.1.0", + "bson": "^4.7.2", + "mongodb-connection-string-url": "^2.6.0", + "socks": "^2.7.1" } }, "mongodb-connection-string-url": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.2.tgz", - "integrity": "sha512-tWDyIG8cQlI5k3skB6ywaEA5F9f5OntrKKsT/Lteub2zgwSUlhqEN2inGgBTm8bpYJf8QYBdA/5naz65XDpczA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", + "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", "requires": { "@types/whatwg-url": "^8.2.1", "whatwg-url": "^11.0.0" } }, "mongoose": { - "version": "6.4.4", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.4.4.tgz", - "integrity": "sha512-r6sp96veRNhNIWFtHHe4Lqak+ilgiExYnnMLhYTGdzjIMR90G1ayx0JKFVdHuC6dKNHGFX0ETJGbf36N8Romjg==", + "version": "6.13.9", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.13.9.tgz", + "integrity": "sha512-x8XpK0SEDJtAtMoOF2U9aGrGXN6kbu01TqhznGLnA4B1oPXNb4Lye0MgmfxF9J2Dva7wf49VOgClk2fuKQYGHw==", "requires": { - "bson": "^4.6.2", - "kareem": "2.4.1", - "mongodb": "4.7.0", + "bson": "^4.7.2", + "kareem": "2.5.1", + "mongodb": "4.17.2", "mpath": "0.9.0", "mquery": "4.0.3", "ms": "2.1.3", - "sift": "16.0.0" + "sift": "16.0.1" }, "dependencies": { "ms": { @@ -1879,9 +4625,9 @@ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" }, "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==" }, "on-finished": { "version": "2.4.1", @@ -1896,10 +4642,16 @@ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, + "path-expression-matcher": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.1.3.tgz", + "integrity": "sha512-qdVgY8KXmVdJZRSS1JdEPOKPdTiEK/pi0RkcT2sw1RhXxohdujUlJFPuS1TSkevZ9vzd3ZlL7ULl1MHGTApKzQ==", + "optional": true + }, "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==" }, "picomatch": { "version": "2.3.1", @@ -1921,16 +4673,16 @@ "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" }, "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" }, "qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", "requires": { - "side-channel": "^1.0.4" + "side-channel": "^1.1.0" } }, "range-parser": { @@ -1939,14 +4691,14 @@ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" } }, "readdirp": { @@ -1967,38 +4719,29 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "saslprep": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", - "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "optional": true, - "requires": { - "sparse-bitfield": "^3.0.3" - } - }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" }, "send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", "requires": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", "mime": "1.6.0", "ms": "2.1.3", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "range-parser": "~1.2.1", - "statuses": "2.0.1" + "statuses": "~2.0.2" }, "dependencies": { "ms": { @@ -2009,14 +4752,14 @@ } }, "serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", "requires": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "~0.19.1" } }, "setprototypeof": { @@ -2025,19 +4768,53 @@ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "requires": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + } + }, + "side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "requires": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + } + }, + "side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "requires": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + } + }, + "side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" } }, "sift": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.0.tgz", - "integrity": "sha512-ILTjdP2Mv9V1kIxWMXeMTIRbOBrqKc4JAXmFMnFq3fKeyQ2Qwa3Dw1ubcye3vR+Y6ofA0b9gNDr/y2t6eUeIzQ==" + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", + "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" }, "simple-update-notifier": { "version": "1.0.7", @@ -2060,11 +4837,11 @@ "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" }, "socks": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", - "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", + "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", "requires": { - "ip": "^1.1.5", + "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" } }, @@ -2078,19 +4855,25 @@ } }, "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==" }, "stripe": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/stripe/-/stripe-9.13.0.tgz", - "integrity": "sha512-PSxYaoaIoFwziNR4dmR6uw20UUmOM9ixtd8fML/gRWlPHsqi3FSGEszR//AttRjihRj+1SfjI5V/x6hhQZBTUA==", + "version": "9.16.0", + "resolved": "https://registry.npmjs.org/stripe/-/stripe-9.16.0.tgz", + "integrity": "sha512-Dn8K+jSoQcXjxCobRI4HXUdHjOXsiF/KszK49fJnkbeCFjZ3EZxLG2JiM/CX+Hcq27NBDtv/Sxhvy+HhTmvyaQ==", "requires": { "@types/node": ">=8.1.0", "qs": "^6.10.3" } }, + "strnum": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.0.tgz", + "integrity": "sha512-Y7Bj8XyJxnPAORMZj/xltsfo55uOiyHcU2tnAVzHUnSJR/KsEX+9RoDeXEnsXtl/CX4fAcrt64gZ13aGaWPeBg==", + "optional": true + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -2128,6 +4911,12 @@ "punycode": "^2.1.1" } }, + "tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "optional": true + }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", diff --git a/food-ordering-app/server/package.json b/food-ordering-app/server/package.json index 5916c5bcf..2d0f70530 100644 --- a/food-ordering-app/server/package.json +++ b/food-ordering-app/server/package.json @@ -10,13 +10,14 @@ "author": "", "license": "ISC", "dependencies": { - "body-parser": "^1.20.0", - "cors": "^2.8.5", - "express": "^4.18.1", + "body-parser": "^1.20.4", + "cors": "^2.8.6", + "dotenv": "^17.3.1", + "express": "^4.22.1", "lodash": "^4.17.21", - "mongoose": "^6.4.4", + "mongoose": "^6.13.9", "nodemon": "^2.0.19", - "stripe": "^9.13.0" + "stripe": "^9.16.0" }, "devDependencies": { "@faker-js/faker": "^7.3.0" diff --git a/food-ordering-app/src/App.css b/food-ordering-app/src/App.css index 5173913c1..673427da8 100644 --- a/food-ordering-app/src/App.css +++ b/food-ordering-app/src/App.css @@ -6,13 +6,24 @@ body { overflow-x: hidden; + background-color: #0b0f19; + background-image: + radial-gradient(at 0% 0%, hsla(253,16%,7%,1) 0, transparent 50%), + radial-gradient(at 50% 0%, hsla(225,39%,30%,0.2) 0, transparent 50%), + radial-gradient(at 100% 0%, hsla(339,49%,30%,0.2) 0, transparent 50%); + background-attachment: fixed; + color: #f8fafc; } #root { - height: 100%; + min-height: 100vh; + display: flex; + flex-direction: column; } .App { - height: 100vh; - background-color: black; + min-height: 100vh; + display: flex; + flex-direction: column; + flex-grow: 1; } \ No newline at end of file diff --git a/food-ordering-app/src/components/About.jsx b/food-ordering-app/src/components/About.jsx index 97b2903da..70b8717e0 100644 --- a/food-ordering-app/src/components/About.jsx +++ b/food-ordering-app/src/components/About.jsx @@ -3,22 +3,25 @@ import aboutImage from "../assets/images/about-image.png"; export const About = () => { return ( -
-
-
-

About Us

-

- Lorem ipsum dolor sit amet consectetur adipisicing elit. Incidunt, - beatae! Doloribus fuga aperiam magni ipsum repellat voluptates - itaque error, atque, exercitationem fugit ab, modi ut voluptatum - sequi ad eum! Rerum! Lorem ipsum dolor sit amet consectetur - adipisicing elit. Minus quia suscipit deserunt, neque nemo veniam - adipisci deleniti culpa dolor dolores omnis, rem veritatis assumenda - eaque dignissimos ut, nam debitis numquam! -

+
+
+ +
+
+
+ about
-
- +
+

+ About Us +

+
+

+ We are dedicated to revolutionizing your dining experience with the fastest, most reliable food delivery service. Our mission is to bridge the gap between hungry customers and the best local restaurants. We guarantee hot, fresh, and perfectly packaged meals every single time. +

+

+ Whether you are craving a late-night snack or hosting a feast, we deliver directly to your doorstep with incredible speed and unmatched quality. Taste the difference today! +

diff --git a/food-ordering-app/src/components/Banner.jsx b/food-ordering-app/src/components/Banner.jsx index aba558d02..71fdf96d0 100644 --- a/food-ordering-app/src/components/Banner.jsx +++ b/food-ordering-app/src/components/Banner.jsx @@ -2,23 +2,29 @@ import Button from "./elements/Button"; export const Banner = () => { return ( -
-
-

- Food Ordering Made Easy +
+
+
+ +
+

+ Food Ordering
+ Made Easy

-

- Get Started Today! +

+ Experience the fastest delivery with premium quality food directly to your doorstep. Satisfy your cravings today!

- -
- banner +
+
+ banner
) diff --git a/food-ordering-app/src/components/Footer.jsx b/food-ordering-app/src/components/Footer.jsx index b38401f08..68e9c49c3 100644 --- a/food-ordering-app/src/components/Footer.jsx +++ b/food-ordering-app/src/components/Footer.jsx @@ -1,36 +1,40 @@ export const Footer = () => { return ( -
-
+ ) diff --git a/food-ordering-app/src/components/Header.jsx b/food-ordering-app/src/components/Header.jsx index 4cd9ba209..feae18ca7 100644 --- a/food-ordering-app/src/components/Header.jsx +++ b/food-ordering-app/src/components/Header.jsx @@ -34,30 +34,31 @@ export const Header = ({ cartCount }) => { }, []) return ( -

- NPM downloads - NPM version - Tests status - Coverage - License - Follow on Twitter -